Index: /trunk/filemanager/setup/phpgw_zt.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_zt.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_zt.lang	(revision 2000)
@@ -0,0 +1,127 @@
+%1 already exists as a file	filemanager	zt	%1 æªæ¡å·²ç¶å­åš
+application	filemanager	zt	æçšçšåŒ
+back to file manager	filemanager	zt	åå°æªæ¡ç®¡çå¡
+cancel editing %1 without saving	filemanager	zt	åæ¶ç·šèŒ¯%1ïŒäžå²å­
+cannot create directory because it begins or ends in a space	filemanager	zt	è³æå€Ÿåçš±å
+å«ç©ºçœå­å
+ïŒç¡æ³å»ºç«è³æå€Ÿ
+cannot replace %1 because it is a directory	filemanager	zt	ç¡æ³çœ®æ%1ïŒå çºå®æ¯äžåè³æå€Ÿ
+command sucessfully run	filemanager	zt	æä»€å·è¡å®æ
+comment	filemanager	zt	åèš»
+comments cannot contain "%1"	filemanager	zt	åèš»äžèœå
+å« "%1"
+copied %1 to %2	filemanager	zt	è€è£œ %1 å° %2
+copy to	filemanager	zt	è€è£œå°
+copy to:	filemanager	zt	è€è£œå°ïŒ
+could not copy %1 to %2	filemanager	zt	ç¡æ³è€è£œ %1 å° %2
+could not copy file because no destination directory is given	filemanager	zt	ç¡æ³è€è£œæªæ¡ïŒå çºæ²æç®æšè³æå€Ÿ
+could not create %1	filemanager	zt	ç¡æ³å»ºç«%1
+could not create directory %1	filemanager	zt	ç¡æ³å»ºç«è³æå€Ÿ%1
+could not delete %1	filemanager	zt	ç¡æ³åªé€%1
+could not move %1 to %2	filemanager	zt	ç¡æ³æ¬ç§»%1å°%2
+could not move file because no destination directory is given	filemanager	zt	ç¡æ³ç§»åæªæ¡ïŒå çºæ²æç®æšè³æå€Ÿ
+could not rename %1 to %2	filemanager	zt	ç¡æ³å°%1æ¹åçº%2
+could not save %1	filemanager	zt	ç¡æ³å²å­%1
+create file	filemanager	zt	å»ºç«æªæ¡
+create folder	filemanager	zt	å»ºç«è³æå€Ÿ
+created	filemanager	zt	å»ºç«æ¥æ
+created %1	filemanager	zt	å»ºç«%1
+created %1,%2	filemanager	zt	å»ºç« %1,%2
+created by	filemanager	zt	å»ºç«è
+
+created directory %1	filemanager	zt	å»ºç«è³æå€Ÿ%1
+date	filemanager	zt	æ¥æ
+default number of upload fields to show	filemanager	zt	é èš­äžå³æªæ¡æ¬äœæžé
+delete	filemanager	zt	åªé€
+deleted %1	filemanager	zt	åªé€%1
+directory	filemanager	zt	è³æå€Ÿ
+directory %1 already exists	filemanager	zt	è³æå€Ÿ %1 å·²ç¶å­åš
+directory %1 does not exist	filemanager	zt	è³æå€Ÿ %1 äžå­åš
+directory names cannot contain "%1"	filemanager	zt	è³æå€Ÿåçš±äžæè©²å
+å« "%1"
+display attributes	filemanager	zt	é¡¯ç€ºå±¬æ§
+download	filemanager	zt	äžèŒ
+edit	filemanager	zt	ç·šèŒ¯
+edit comments	filemanager	zt	ç·šèŒ¯åèš»
+error running command	filemanager	zt	æä»€å·è¡é¯èª€
+execute	filemanager	zt	å·è¡
+failed to create directory	filemanager	zt	å»ºç«è³æå€Ÿå€±æ
+file	filemanager	zt	æªæ¡
+file %1 already exists. please edit it or delete it first.	filemanager	zt	æªæ¡ %1å·²ç¶å­åšïŒè«å
+ç·šèŒ¯æåªé€å®ã
+file %1 could not be created.	filemanager	zt	æªæ¡ %1 ç¡æ³å»ºç«ã
+file name	filemanager	zt	æªå
+file names cannot contain "%1"	filemanager	zt	æªæ¡åäžèœå
+å« "%1"
+file names cannot contain \ or /	filemanager	zt	æªæ¡åäžèœå
+å« \ æ /
+filemanager	common	zt	æªæ¡ç®¡çå¡
+filemanager preferences	filemanager	zt	æªæ¡ç®¡çå¡èš­å®
+files	filemanager	zt	æªæ¡
+files in this directory	filemanager	zt	è³æå€Ÿäž­çæªæ¡
+folder	filemanager	zt	è³æå€Ÿ
+folder up	filemanager	zt	è³æå€Ÿäžç§»
+go home	filemanager	zt	åéŠé 
+go to	filemanager	zt	ååŸ
+go to %1	filemanager	zt	å° %1
+go to your home directory	filemanager	zt	å°äž»èŠç®é
+go to:	filemanager	zt	å°ïŒ
+go up	filemanager	zt	äžäžå±€
+home	filemanager	zt	éŠé 
+location	filemanager	zt	äœçœ®
+locked	filemanager	zt	è¢«éå®
+mime type	filemanager	zt	MIME é¡å
+modified	filemanager	zt	ä¿®æ¹æ¥æ
+modified by	filemanager	zt	ä¿®æ¹è
+
+move to	filemanager	zt	æ¬å°
+move to:	filemanager	zt	æ¬å°ïŒ
+moved %1 to %2	filemanager	zt	æ %1æ¬å°%2
+no files in this directory.	filemanager	zt	è³æå€Ÿäž­æ²æä»»äœæªæ¡
+no version history for this file/directory	filemanager	zt	éåæªæ¡/è³æå€Ÿæ²æçæ¬æ­·å²
+operation	filemanager	zt	æäœ
+other settings	filemanager	zt	å
+¶ä»èš­å®
+owner	filemanager	zt	ææè
+
+please select a file to delete.	filemanager	zt	è«éžæèŠåªé€çæªæ¡
+preview %1	filemanager	zt	é èŠœ %1
+preview of %1	filemanager	zt	%1 çé èŠœ
+quick jump to	filemanager	zt	å¿«éåæ
+reload	filemanager	zt	éæ°è®å
+rename	filemanager	zt	æ¹å
+renamed %1 to %2	filemanager	zt	æ%1 æªåæ¹æ %2
+replaced %1	filemanager	zt	%1 å®æä¿®æ¹
+save %1	filemanager	zt	å²å­ %1
+save %1, and go back to file listing	filemanager	zt	å²å­ %1ïŒæ¥èåå°æªæ¡åè¡š
+save all	filemanager	zt	å²å­å
+šéš
+save changes	filemanager	zt	å²å­ç°å
+saved %1	filemanager	zt	%1 å²å­å®æ
+show	filemanager	zt	é¡¯ç€º
+show ..	filemanager	zt	é¡¯ç€º ..
+show .files	filemanager	zt	é¡¯ç€º .æªæ¡
+show command line (experimental. dangerous.)	filemanager	zt	é¡¯ç€ºåœä»€å(å±éªå¯Šé©)
+show help	filemanager	zt	é¡¯ç€ºèªªæ
+size	filemanager	zt	å€§å°
+sort by:	filemanager	zt	æåºïŒ
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	zt	æªäŸçæªæ¡ç®¡çïŒçŸåšè«åªçšäŸæž¬è©ŠïŒä»»äœçåé¡æ­¡è¿åå ±
+total files	filemanager	zt	æªæ¡æž
+unknown mime-type defaults to text/plain when viewing	filemanager	zt	äžæçMIMEæ ŒåŒïŒé èš­çèŠœæ ŒåŒçºçŽæå­
+unused space	filemanager	zt	å©é€ç©ºé
+up	filemanager	zt	äžäžå±€
+update	filemanager	zt	æŽæ°
+updated comment for %1	filemanager	zt	æŽæ°%1çåèš»
+upload	filemanager	zt	äžå³
+upload fields	filemanager	zt	äžå³åå
+upload files	filemanager	zt	äžå³æªæ¡
+use new experimental filemanager?	filemanager	zt	äœ¿çšæ°çå°æ¥­æªæ¡ç®¡çïŒ
+used space	filemanager	zt	äœ¿çšç©ºé
+users	filemanager	zt	äœ¿çšè
+
+version	filemanager	zt	çæ¬
+view documents in new window	filemanager	zt	éåæ°èŠçªçèŠœæä»¶
+view documents on server (if available)	filemanager	zt	åšäŒºæåšäžçèŠœæä»¶(åŠæèœå€ )
+who	filemanager	zt	èª°
+you do not have access to %1	filemanager	zt	%1æ²æä»»äœç°å
+your home dir did not exist, egroupware created a new one.	filemanager	zt	æšçå®¶ç®éäžå­åšïŒeGroupWareå»ºç«äžåæ°ç
Index: /trunk/filemanager/setup/phpgw_fi.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_fi.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_fi.lang	(revision 2000)
@@ -0,0 +1,116 @@
+%1 already exists as a file	filemanager	fi	Tiedosto nimeltä %1 on jo olemassa
+application	filemanager	fi	Sovellus
+back to file manager	filemanager	fi	Takaisin Tiedostonhallintaan
+cancel editing %1 without saving	filemanager	fi	Peru %1:n muokkaus tallentamatta muutoksia
+cannot create directory because it begins or ends in a space	filemanager	fi	Hakemistoa ei voi luoda, koska nimi alkaa tai päättyy välilyöntiin
+cannot replace %1 because it is a directory	filemanager	fi	Ei voi korvata %1, koska se on hakemisto
+command sucessfully run	filemanager	fi	Komento suoritettu
+comment	filemanager	fi	Kommentti
+comments cannot contain "%1"	filemanager	fi	Kommentti ei saa sisältää "%1"
+copied %1 to %2	filemanager	fi	%1 kopioitu %2
+copy to	filemanager	fi	Kopio kohteeseen
+copy to:	filemanager	fi	Kopio kohteeseen:
+could not copy %1 to %2	filemanager	fi	%1 ei voitu kopioida %2
+could not copy file because no destination directory is given	filemanager	fi	Ei voitu kopioida, koska kohdehakemistoa ei annettu
+could not create %1	filemanager	fi	Ei voitu luoda %1
+could not create directory %1	filemanager	fi	Ei voitu luoda kansiota %1
+could not delete %1	filemanager	fi	Ei voitu poistaa %1
+could not move %1 to %2	filemanager	fi	%1 ei voitu siirtää %2
+could not move file because no destination directory is given	filemanager	fi	Ei voitu siirtää, koska kohdehakemistoa ei annettu
+could not rename %1 to %2	filemanager	fi	%1 ei voitu nimetä %2
+could not save %1	filemanager	fi	%1 ei voitu tallentaa
+create file	filemanager	fi	Luo tiedosto
+create folder	filemanager	fi	Luo kansio
+created	filemanager	fi	Luotu
+created %1	filemanager	fi	Luotu %1
+created %1,%2	filemanager	fi	Luotu %1,%2
+created by	filemanager	fi	Luonut
+created directory %1	filemanager	fi	Luotiin kansio %1
+date	filemanager	fi	Aika
+default number of upload fields to show	filemanager	fi	Kerralla ladattavien tiedostojen oletusmäärä
+delete	filemanager	fi	Poista
+deleted %1	filemanager	fi	Poistettiin %1
+directory	filemanager	fi	Kansio
+directory %1 already exists	filemanager	fi	Kansio %1 on jo olemassa
+directory %1 does not exist	filemanager	fi	Kansiota %1 ei ole
+directory names cannot contain "%1"	filemanager	fi	Kansion nimessä ei saa olla "%1"
+display attributes	filemanager	fi	Näyttömääreet
+download	filemanager	fi	Lataa
+edit	filemanager	fi	Muokkaa
+edit comments	filemanager	fi	Muokkaa kommentteja
+error running command	filemanager	fi	Virhe komennon suorituksessa
+execute	filemanager	fi	Suorita
+failed to create directory	filemanager	fi	kansion luominen ei onnistunut
+fake base dir did not exist, egroupware created a new one.	filemanager	fi	Juurihakemistoa ei löytynyt, eGroupWare loi sen.
+file	filemanager	fi	Tiedosto
+file %1 already exists. please edit it or delete it first.	filemanager	fi	Tiedosto %1 on jo olemassa. Muokkaa sitä tai poista se.
+file %1 could not be created.	filemanager	fi	Tiedostoa %1 ei voitu luoda.
+file name	filemanager	fi	Tiedoston nimi
+file names cannot contain "%1"	filemanager	fi	Tiedoston nimessä ei saa olla "%1"
+file names cannot contain \ or /	filemanager	fi	Tiedoston nimessä ei saa olla \ tai /
+filemanager	common	fi	Tiedostonhallinta
+filemanager preferences	filemanager	fi	Tiedostonhallinnan asetukset
+files	filemanager	fi	Tiedostot
+files in this directory	filemanager	fi	Tiedostot tässä kansiossa
+folder	filemanager	fi	Kansio
+folder up	filemanager	fi	Ylempi kansio
+go home	filemanager	fi	kotiin
+go to	filemanager	fi	Mene
+go to %1	filemanager	fi	Mene %1
+go to your home directory	filemanager	fi	Kotihakemistoon
+go to:	filemanager	fi	Mene:
+go up	filemanager	fi	ylös
+home	filemanager	fi	Kotihakemisto
+location	filemanager	fi	Sijainti
+locked	filemanager	fi	Lukittu
+mime type	filemanager	fi	MIME-tyyppi
+modified	filemanager	fi	Muutettu
+modified by	filemanager	fi	Muuttanut
+move to	filemanager	fi	Siirrä
+move to:	filemanager	fi	Siirrä:
+moved %1 to %2	filemanager	fi	%1 siirrettiin %2
+no files in this directory.	filemanager	fi	Kansiossa ei ole tiedostoja
+no version history for this file/directory	filemanager	fi	Tiedostolla/kansiolla ei ole versioita
+operation	filemanager	fi	Operaatio
+other settings	filemanager	fi	Muut asetukset
+owner	filemanager	fi	Omistaja
+please select a file to delete.	filemanager	fi	Valitse poistettava tiedosto.
+preview %1	filemanager	fi	Esikatsele %1
+preview of %1	filemanager	fi	%1 esikatselu
+quick jump to	filemanager	fi	Mene
+reload	filemanager	fi	lataa uudelleen
+rename	filemanager	fi	Nimeä uudelleen
+renamed %1 to %2	filemanager	fi	%1 nimettiin uudelleen %2
+replaced %1	filemanager	fi	Korvattiin %1
+save %1	filemanager	fi	Tallenna %1
+save %1, and go back to file listing	filemanager	fi	Tallenna %1 ja palaa kansioon
+save all	filemanager	fi	Tallenna kaikki
+save changes	filemanager	fi	Tallenna muutokset
+saved %1	filemanager	fi	Tallennettiin %1
+show	filemanager	fi	Näytä
+show ..	filemanager	fi	Näytä ..
+show .files	filemanager	fi	Näytä .tiedostot
+show command line (experimental. dangerous.)	filemanager	fi	Näytä komentorivi (KOKEELLINEN, VAARALLINEN)
+show help	filemanager	fi	Näytä ohje
+size	filemanager	fi	Koko
+sort by:	filemanager	fi	Lajittelu:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	fi	Uusi Tiedostonhallinta, vain TESTAUSKÄYTTÖÖN, ilmoita virheistä kehittäjille
+total files	filemanager	fi	Tiedostoja
+unknown mime-type defaults to text/plain when viewing	filemanager	fi	Tuntemattomat MIME-tyypit oletetaan tyypiksi text/plain näytettäessä ruudulla
+unused space	filemanager	fi	Tilaa vapaana
+up	filemanager	fi	Ylös
+update	filemanager	fi	Päivitä
+updated comment for %1	filemanager	fi	Päivitettiin %1 kommentit
+upload	filemanager	fi	Siirrä palvelimelle
+upload fields	filemanager	fi	latauskenttiä
+upload files	filemanager	fi	Lataa tiedostoja palvelimelle
+use new experimental filemanager?	filemanager	fi	Käytä uutta, kokeellista Tiedostonhallintaa?
+used space	filemanager	fi	Käytetty tila
+users	filemanager	fi	Käyttäjiä
+version	filemanager	fi	Versio
+view documents in new window	filemanager	fi	Näytä tiedostot uudessa ikkunassa
+view documents on server (if available)	filemanager	fi	Näytä tiedostot palvelimella (jos mahdollista)
+who	filemanager	fi	Kuka
+you do not have access to %1	filemanager	fi	Sinulla ei ole käyttöoikeutta kohteeseen %1
+your home dir did not exist, egroupware created a new one.	filemanager	fi	Kotihakemistoa ei löytynyt, eGroupWare loi sen.
+
Index: /trunk/filemanager/setup/phpgw_en.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_en.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_en.lang	(revision 2000)
@@ -0,0 +1,115 @@
+%1 already exists as a file	filemanager	en	%1 already exists as a file
+application	filemanager	en	Application
+back to file manager	filemanager	en	Back to file manager
+cancel editing %1 without saving	filemanager	en	Cancel editing %1 without saving
+cannot create directory because it begins or ends in a space	filemanager	en	Cannot create directory because it begins or ends in a space
+cannot replace %1 because it is a directory	filemanager	en	Cannot replace %1 because it is a directory
+command sucessfully run	filemanager	en	Command sucessfully run
+comment	filemanager	en	Comment
+comments cannot contain "%1"	filemanager	en	Comments cannot contain "%1"
+copied %1 to %2	filemanager	en	Copied %1 to %2
+copy to	filemanager	en	Copy To
+copy to:	filemanager	en	Copy to:
+could not copy %1 to %2	filemanager	en	Could not copy %1 to %2
+could not copy file because no destination directory is given	filemanager	en	Could not copy file because no destination directory is given
+could not create %1	filemanager	en	Could not create %1
+could not create directory %1	filemanager	en	Could not create directory %1
+could not delete %1	filemanager	en	Could not delete %1
+could not move %1 to %2	filemanager	en	Could not move %1 to %2
+could not move file because no destination directory is given	filemanager	en	Could not move file because no destination directory is given
+could not rename %1 to %2	filemanager	en	Could not rename %1 to %2
+could not save %1	filemanager	en	Could not save %1
+create file	filemanager	en	Create File
+create folder	filemanager	en	Create Folder
+created	filemanager	en	Created
+created %1	filemanager	en	Created %1
+created %1,%2	filemanager	en	Created %1,%2
+created by	filemanager	en	Created by
+created directory %1	filemanager	en	Created directory %1
+date	filemanager	en	Date
+default number of upload fields to show	filemanager	en	Default number of upload fields to show
+delete	filemanager	en	Delete
+deleted %1	filemanager	en	Deleted %1
+directory	filemanager	en	Directory
+directory %1 already exists	filemanager	en	Directory %1 already exists
+directory %1 does not exist	filemanager	en	Directory %1 does not exist
+directory names cannot contain "%1"	filemanager	en	Directory names cannot contain "%1"
+display attributes	filemanager	en	Display attributes
+download	filemanager	en	Download
+edit	filemanager	en	Edit
+edit comments	filemanager	en	Edit comments
+error running command	filemanager	en	Error running command
+execute	filemanager	en	Execute
+failed to create directory	filemanager	en	failed to create directory
+fake base dir did not exist, egroupware created a new one.	filemanager	en	Fake Base Dir did not exist, eGroupWare created a new one.
+file	filemanager	en	File
+file %1 already exists. please edit it or delete it first.	filemanager	en	File %1 already exists. Please edit it or delete it first.
+file %1 could not be created.	filemanager	en	File %1 could not be created.
+file name	filemanager	en	File Name
+file names cannot contain "%1"	filemanager	en	File names cannot contain "%1"
+file names cannot contain \ or /	filemanager	en	File names cannot contain \ or /
+filemanager	common	en	Filemanager
+filemanager preferences	filemanager	en	FileManager preferences
+files	filemanager	en	Files
+files in this directory	filemanager	en	Files in this directory
+folder	filemanager	en	Folder
+folder up	filemanager	en	Folder Up
+go home	filemanager	en	go home
+go to	filemanager	en	Go To
+go to %1	filemanager	en	Go to %1
+go to your home directory	filemanager	en	Go to your home directory
+go to:	filemanager	en	Go to:
+go up	filemanager	en	go up
+home	filemanager	en	Home
+location	filemanager	en	Location
+locked	filemanager	en	Locked
+mime type	filemanager	en	MIME Type
+modified	filemanager	en	Modified
+modified by	filemanager	en	Modified by
+move to	filemanager	en	Move To
+move to:	filemanager	en	Move to:
+moved %1 to %2	filemanager	en	Moved %1 to %2
+no files in this directory.	filemanager	en	No files in this directory.
+no version history for this file/directory	filemanager	en	No version history for this file/directory
+operation	filemanager	en	Operation
+other settings	filemanager	en	Other settings
+owner	filemanager	en	Owner
+please select a file to delete.	filemanager	en	Please select a file to delete.
+preview %1	filemanager	en	Preview %1
+preview of %1	filemanager	en	Preview of %1
+quick jump to	filemanager	en	Quick jump to
+reload	filemanager	en	reload
+rename	filemanager	en	Rename
+renamed %1 to %2	filemanager	en	Renamed %1 to %2
+replaced %1	filemanager	en	Replaced %1
+save %1	filemanager	en	Save %1
+save %1, and go back to file listing	filemanager	en	Save %1, and go back to file listing
+save all	filemanager	en	Save all
+save changes	filemanager	en	Save changes
+saved %1	filemanager	en	Saved %1
+show	filemanager	en	Show
+show ..	filemanager	en	Show ..
+show .files	filemanager	en	Show .files
+show command line (experimental. dangerous.)	filemanager	en	Show command line (EXPERIMENTAL. DANGEROUS.)
+show help	filemanager	en	Show help
+size	filemanager	en	Size
+sort by:	filemanager	en	Sort by:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	en	The future filemanager, now for TESTING PURPOSES ONLY, please send bugreports
+total files	filemanager	en	Total Files
+unknown mime-type defaults to text/plain when viewing	filemanager	en	Unknown MIME-type defaults to text/plain when viewing
+unused space	filemanager	en	Unused space
+up	filemanager	en	Up
+update	filemanager	en	Update
+updated comment for %1	filemanager	en	Updated comment for %1
+upload	filemanager	en	Upload
+upload fields	filemanager	en	upload fields
+upload files	filemanager	en	Upload files
+use new experimental filemanager?	filemanager	en	Use new experimental Filemanager?
+used space	filemanager	en	Used Space
+users	filemanager	en	Users
+version	filemanager	en	Version
+view documents in new window	filemanager	en	View documents in new window
+view documents on server (if available)	filemanager	en	View documents on server (if available)
+who	filemanager	en	Who
+you do not have access to %1	filemanager	en	You do not have access to %1
+your home dir did not exist, egroupware created a new one.	filemanager	en	Your Home Dir did not exist, eGroupWare created a new one.
Index: /trunk/filemanager/setup/phpgw_cs.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_cs.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_cs.lang	(revision 2000)
@@ -0,0 +1,115 @@
+%1 already exists as a file	filemanager	cs	%1 jiŸ existuje jako soubor
+application	filemanager	cs	Aplikace
+back to file manager	filemanager	cs	Zpìt do správce souborù
+cancel editing %1 without saving	filemanager	cs	Zru¹ zmìny %1 bez uloŸení
+cannot create directory because it begins or ends in a space	filemanager	cs	Nelze vytvoøit sloŸku s názvem s mezerou na zaèátku èi konci
+cannot replace %1 because it is a directory	filemanager	cs	Nelze nahradit %1 protoŸe jde o sloŸku
+command sucessfully run	filemanager	cs	Pøíkaz úspì¹nì vykonán
+comment	filemanager	cs	Komentáø
+comments cannot contain "%1"	filemanager	cs	Komentáøe nesmí obsahovat "%1"
+copied %1 to %2	filemanager	cs	%1 zkopírován do %2
+copy to	filemanager	cs	Zkopírovat
+copy to:	filemanager	cs	Zkopírovat:
+could not copy %1 to %2	filemanager	cs	Nelze zkopírovat %1 do %2
+could not copy file because no destination directory is given	filemanager	cs	Nelze zkopírovat soubor, není urèena cílová sloŸka
+could not create %1	filemanager	cs	Nelze vytvoøit %1
+could not create directory %1	filemanager	cs	Nelze vytvoøit sloŸku %1
+could not delete %1	filemanager	cs	Nelze smazat %1
+could not move %1 to %2	filemanager	cs	Nelze pøesunout %1 na %2
+could not move file because no destination directory is given	filemanager	cs	Nelze pøesunout soubor, protoŸe není urèena cílová sloŸka
+could not rename %1 to %2	filemanager	cs	Nelze pøejmenovat %1 na %2
+could not save %1	filemanager	cs	Nelze uloŸit %1
+create file	filemanager	cs	Vytvoø soubor
+create folder	filemanager	cs	Vytvoø sloŸku
+created	filemanager	cs	Vytvoøen
+created %1	filemanager	cs	%1 vytvoøen
+created %1,%2	filemanager	cs	%1, %2 vytvoøeny
+created by	filemanager	cs	Vytvoøil
+created directory %1	filemanager	cs	Vytvoøena sloŸka %1
+date	filemanager	cs	Datum
+default number of upload fields to show	filemanager	cs	Výchozí poèet zobrazených poloŸek k nahrání
+delete	filemanager	cs	Smazat
+deleted %1	filemanager	cs	%1 smazáno
+directory	filemanager	cs	SloŸka
+directory %1 already exists	filemanager	cs	SloŸka %1 jiŸ existuje
+directory %1 does not exist	filemanager	cs	SloŸka %1 neexistuje
+directory names cannot contain "%1"	filemanager	cs	Název sloŸky nesmí obsahovat "%1"
+display attributes	filemanager	cs	Zobrazení vlastností
+download	filemanager	cs	Download
+edit	filemanager	cs	Upravit
+edit comments	filemanager	cs	Uprav komentáøe
+error running command	filemanager	cs	Chyba pøi zpracování pøíkazu
+execute	filemanager	cs	Spus»
+failed to create directory	filemanager	cs	Nelze vytvoøit sloŸku
+fake base dir did not exist, egroupware created a new one.	filemanager	cs	Fale¹ná bázová sloŸka neexistovala, systém vytvoøil novou
+file	filemanager	cs	Soubor
+file %1 already exists. please edit it or delete it first.	filemanager	cs	Soubor %1 jiŸ existuje. Nejprve jej zmìnte èi smaŸte.
+file %1 could not be created.	filemanager	cs	Soubor %1 nelze vytvoøit
+file name	filemanager	cs	Jméno souboru
+file names cannot contain "%1"	filemanager	cs	Jméno souboru nesmí obsahovat "%1"
+file names cannot contain \ or /	filemanager	cs	Jméno souboru nesmí obsahovat \ ani /
+filemanager	common	cs	Správce souborù
+filemanager preferences	filemanager	cs	Nastavení správce souborù
+files	filemanager	cs	Soubory
+files in this directory	filemanager	cs	Soubory v této sloŸce
+folder	filemanager	cs	SloŸka
+folder up	filemanager	cs	Nahoru
+go home	filemanager	cs	Domù
+go to	filemanager	cs	Pøejít
+go to %1	filemanager	cs	Pøejít do %1
+go to your home directory	filemanager	cs	Pøejít do domácí sloŸky
+go to:	filemanager	cs	Pøejít:
+go up	filemanager	cs	nahoru
+home	filemanager	cs	Domù
+location	filemanager	cs	Umístìní
+locked	filemanager	cs	Uzamèen
+mime type	filemanager	cs	Typ souboru (MIME)
+modified	filemanager	cs	Zmìnìn
+modified by	filemanager	cs	Zmìnìn kým
+move to	filemanager	cs	Pøesunout
+move to:	filemanager	cs	Pøesunout:
+moved %1 to %2	filemanager	cs	%1 pøesunut do %2
+no files in this directory.	filemanager	cs	Tato sloŸka je prázdná
+no version history for this file/directory	filemanager	cs	Tento soubor/sloŸka nemá historii verzí
+operation	filemanager	cs	Operace
+other settings	filemanager	cs	Dal¹í nastavení
+owner	filemanager	cs	Vlastník
+please select a file to delete.	filemanager	cs	Prosím vyberte soubor ke smazání
+preview %1	filemanager	cs	Zobraz %1
+preview of %1	filemanager	cs	Náhled %1
+quick jump to	filemanager	cs	Rychle pøejít
+reload	filemanager	cs	obèerstvit
+rename	filemanager	cs	Pøejmenovat
+renamed %1 to %2	filemanager	cs	%1 pøejmenován na %2
+replaced %1	filemanager	cs	%1 nahrazen
+save %1	filemanager	cs	UloŸit %1
+save %1, and go back to file listing	filemanager	cs	UloŸit %1 a zpìt na seznam souborù
+save all	filemanager	cs	UloŸit v¹e
+save changes	filemanager	cs	UloŸit zmìny
+saved %1	filemanager	cs	%1 uloŸen
+show	filemanager	cs	Zobraz
+show ..	filemanager	cs	Zobrazit ..
+show .files	filemanager	cs	Zobrazit skryté soubory
+show command line (experimental. dangerous.)	filemanager	cs	Zobraz pøíkazovou øádku (EXPERIMENTÁLNÍ A NEBEZPEÈNÉ)
+show help	filemanager	cs	Zobraz nápovìdu
+size	filemanager	cs	Velikost
+sort by:	filemanager	cs	Øadit podle:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	cs	Správce souborù budoucnosti, nyní JEN PRO TESTOVÁNÍ, prosím posílejte informace o chybách
+total files	filemanager	cs	Celkem souborù
+unknown mime-type defaults to text/plain when viewing	filemanager	cs	Neznámé typy souborù zobrazit jako text
+unused space	filemanager	cs	NevyuŸité místo
+up	filemanager	cs	Nahoru
+update	filemanager	cs	Aktualizovat
+updated comment for %1	filemanager	cs	Komentáø k %1 upraven
+upload	filemanager	cs	Nahrát
+upload fields	filemanager	cs	poloŸek k nahrání
+upload files	filemanager	cs	Nahrát soubory
+use new experimental filemanager?	filemanager	cs	PouŸít nový experimentální Správce souborù?
+used space	filemanager	cs	PouŸité místo
+users	filemanager	cs	UŸivatelé
+version	filemanager	cs	Verze
+view documents in new window	filemanager	cs	Zobrazit dokumenty v novém oknì
+view documents on server (if available)	filemanager	cs	Zobraz dokumenty na serveru (pokud to jde)
+who	filemanager	cs	Kdo
+you do not have access to %1	filemanager	cs	Nemáte pøístup k %1
+your home dir did not exist, egroupware created a new one.	filemanager	cs	Va¹e domovská sloŸka neexistovala, systém vytvoøil novou.
Index: /trunk/filemanager/setup/phpgw_fr.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_fr.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_fr.lang	(revision 2000)
@@ -0,0 +1,116 @@
+%1 already exists as a file	filemanager	fr	%1 existe déjà en tant que fichier
+application	filemanager	fr	Application
+back to file manager	filemanager	fr	Retourner au gestionnaire de fichiers
+cancel editing %1 without saving	filemanager	fr	Annuler les modifications de "%1"
+cannot create directory because it begins or ends in a space	filemanager	fr	Ne peut créér le répertoire car il commence ou finit sur un espace
+cannot replace %1 because it is a directory	filemanager	fr	Ne peut remplacer %1 car c'est un répertoire
+command sucessfully run	filemanager	fr	Commande exécutée avec succès
+comment	filemanager	fr	Commentaire
+comments cannot contain "%1"	filemanager	fr	Les commentaires ne peuvent pas contenir "%1"
+copied %1 to %2	filemanager	fr	Copié %1 vers %2
+copy to	filemanager	fr	Copier Vers
+copy to:	filemanager	fr	Copier vers:
+could not copy %1 to %2	filemanager	fr	N'a pas pu copier %1 vers %2
+could not copy file because no destination directory is given	filemanager	fr	Impossible de copier le fichier car aucun répertoire de destination n'a été donné
+could not create %1	filemanager	fr	N'a pas pu créér %1
+could not create directory %1	filemanager	fr	N'a pas pu créér le répertoire %1
+could not delete %1	filemanager	fr	N'a pas pu effacer %1
+could not move %1 to %2	filemanager	fr	N'a pas pu déplacer %1 to %2
+could not move file because no destination directory is given	filemanager	fr	Impossible de déplacer le fichier car aucun répertoire de destination n'a été donné
+could not rename %1 to %2	filemanager	fr	N'a pas pu renommer %1 to %2
+could not save %1	filemanager	fr	N'a pas pu enregistrer %1
+create file	filemanager	fr	Créer fichier
+create folder	filemanager	fr	Créer dossier
+created	filemanager	fr	Créé
+created %1	filemanager	fr	%1 créé
+created %1,%2	filemanager	fr	Création de %1,%2
+created by	filemanager	fr	Créé par
+created directory %1	filemanager	fr	Répertoire %1 créé
+date	filemanager	fr	Date
+default number of upload fields to show	filemanager	fr	Nombre de champs d'upload par défaut à montrer
+delete	filemanager	fr	Effacer
+deleted %1	filemanager	fr	%1 effacé
+directory	filemanager	fr	Répertoire
+directory %1 already exists	filemanager	fr	Le répertoire %1 existe déjà
+directory %1 does not exist	filemanager	fr	Le répertoire %1 n'existe pas
+directory names cannot contain "%1"	filemanager	fr	Les noms de répertoire ne peuvent pas contenir "%1"
+display attributes	filemanager	fr	Afficher les attributs
+download	filemanager	fr	Downloader
+edit	filemanager	fr	Modifier
+edit comments	filemanager	fr	Modifier les commentaires
+error running command	filemanager	fr	Erreur à l'exécution de la commande
+execute	filemanager	fr	Exécuter
+failed to create directory	filemanager	fr	Echec de création du répertoire
+fake base dir did not exist, egroupware created a new one.	filemanager	fr	Le répertoire de base n'existait pas, eGroupWare l'a créé.
+file	filemanager	fr	Fichier
+file %1 already exists. please edit it or delete it first.	filemanager	fr	Le fichier %1 existe déjà. SVP modifiez-le ou effacez-le d'abord.
+file %1 could not be created.	filemanager	fr	Le fichier %1 n'a pas pu être créé.
+file name	filemanager	fr	Nom du fichier
+file names cannot contain  or /	filemanager	fr	Les noms de fichier ne peuvent contenir \ ou /
+file names cannot contain "%1"	filemanager	fr	Les noms de fichier ne peuvent contenir "%1"
+file names cannot contain \ or /	filemanager	fr	Les noms de fichier ne peuvent contenir \ ou /
+filemanager	common	fr	Gestionnaire de fichiers
+filemanager preferences	filemanager	fr	Préférences gestionnaire de fichiers
+files	filemanager	fr	Fichiers
+files in this directory	filemanager	fr	Fichiers dans ce répertoire
+folder	filemanager	fr	Dossier
+folder up	filemanager	fr	Répertoire parent
+go home	filemanager	fr	Répertoire personnel
+go to	filemanager	fr	Aller dans
+go to %1	filemanager	fr	Aller dans %1
+go to your home directory	filemanager	fr	Aller dans votre répertoire "home" (maison)
+go to:	filemanager	fr	Aller à:
+go up	filemanager	fr	Remonter
+home	filemanager	fr	Maison
+location	filemanager	fr	Location
+locked	filemanager	fr	Verouillé
+mime type	filemanager	fr	Type MIME
+modified	filemanager	fr	Modifié
+modified by	filemanager	fr	Modifié par
+move to	filemanager	fr	Déplacer Dans
+move to:	filemanager	fr	Déplacer dans:
+moved %1 to %2	filemanager	fr	Déplacé %1 dans %2
+no files in this directory.	filemanager	fr	Pas de fichiers dans ce répertoire.
+no version history for this file/directory	filemanager	fr	Pas d'historique de versions pour ce fichier/répertoire
+operation	filemanager	fr	Opération
+other settings	filemanager	fr	Autres paramètres
+owner	filemanager	fr	Propriétaire
+please select a file to delete.	filemanager	fr	Sélectionnez un fichier à effacer.
+preview %1	filemanager	fr	Prévisualisation %1
+preview of %1	filemanager	fr	Prévisualisation de %1
+quick jump to	filemanager	fr	Aller à
+reload	filemanager	fr	Recharger
+rename	filemanager	fr	Renommer
+renamed %1 to %2	filemanager	fr	Renommé %1 en %2
+replaced %1	filemanager	fr	Remplacé %1
+save %1	filemanager	fr	Enregistrer %1
+save %1, and go back to file listing	filemanager	fr	Enregistrer %1, et retour au listing
+save all	filemanager	fr	Enregistrer tout
+save changes	filemanager	fr	Enregistrer les changements
+saved %1	filemanager	fr	%1 enregistré
+show	filemanager	fr	Montrer
+show ..	filemanager	fr	Montrer ..
+show .files	filemanager	fr	Montrer .fichiers
+show command line (experimental. dangerous.)	filemanager	fr	Montrer la ligne de commande (EXPERIMENTAL. DANGEREUX.)
+show help	filemanager	fr	Montrer l'aide
+size	filemanager	fr	Taille
+sort by:	filemanager	fr	Trier par:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	fr	Le futur gestionnaire de fichiers, SEULEMENT POUR DES TESTS, envoyez des rapports de bogues svp
+total files	filemanager	fr	Nombre de Fichiers
+unknown mime-type defaults to text/plain when viewing	filemanager	fr	text/plain utilisé par défaut si type MIME inconnu
+unused space	filemanager	fr	Espace inutilisé
+up	filemanager	fr	Haut
+update	filemanager	fr	Mettre à jour
+updated comment for %1	filemanager	fr	Commentaire pour %1 mis à jour
+upload	filemanager	fr	Envoyer
+upload fields	filemanager	fr	Champs d'envoi
+upload files	filemanager	fr	Fichiers à envoyer
+use new experimental filemanager?	filemanager	fr	Utiliser le Gestionnaire de fichier expérimental?
+used space	filemanager	fr	Espace utilisé
+users	filemanager	fr	Utilisateurs
+version	filemanager	fr	Version
+view documents in new window	filemanager	fr	Voir les documents dans une nouvelle fenêtre
+view documents on server (if available)	filemanager	fr	Voir les documents sur le serveur (si disponible)
+who	filemanager	fr	Qui
+you do not have access to %1	filemanager	fr	Vous n'avez pas accès à %1
+your home dir did not exist, egroupware created a new one.	filemanager	fr	Votre répertoire personnel n'existe pas, eGroupWare l'a créé.
Index: /trunk/filemanager/setup/setup.inc.php
===================================================================
--- /trunk/filemanager/setup/setup.inc.php	(revision 2000)
+++ /trunk/filemanager/setup/setup.inc.php	(revision 2000)
@@ -0,0 +1,39 @@
+<?php
+	/**************************************************************************\
+	* eGroupWare - Filemanager                                                 *
+	* http://www.egroupware.org                                                *
+	* --------------------------------------------                             *
+	*  This program is free software; you can redistribute it and/or modify it *
+	*  under the terms of the GNU General Public License as published by the   *
+	*  Free Software Foundation; either version 2 of the License, or (at your  *
+	*  option) any later version.                                              *
+	\**************************************************************************/
+
+	/* $Id: setup.inc.php 15591 2004-07-02 22:32:53Z ralfbecker $ */
+
+	$setup_info['filemanager']['name']    = 'filemanager';
+	$setup_info['filemanager']['title']   = 'Filemanager';
+	$setup_info['filemanager']['version'] = '2.0.000';
+	$setup_info['filemanager']['app_order'] = 6;
+	$setup_info['filemanager']['enable']  = 1;
+
+
+	/* The hooks this app includes, needed for hooks registration */
+	$setup_info['filemanager']['hooks'] = array
+	(
+		'add_def_pref',
+		'admin',
+		'deleteaccount',
+		'settings',
+		'sidebox_menu',
+		'personalizer',
+		'preferences',
+	);
+
+	/* Dependencies for this app to work */
+	$setup_info['filemanager']['depends'][] = array
+	(
+		 'appname' => 'phpgwapi',
+		 'versions' => array('2.1.000')
+	);
+?>
Index: /trunk/filemanager/setup/phpgw_hr.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_hr.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_hr.lang	(revision 2000)
@@ -0,0 +1,115 @@
+%1 already exists as a file	filemanager	hr	%1 veÄ postoji kao datoteka
+application	filemanager	hr	Aplikacija
+back to file manager	filemanager	hr	Povratak na file manager
+cancel editing %1 without saving	filemanager	hr	OtkaÅŸi ureÄivanje %1 bez spremana
+cannot create directory because it begins or ends in a space	filemanager	hr	Nisam u moguÄnosti napraviti mapu jer poÄinje i zavrÅ¡ava sa razmakom
+cannot replace %1 because it is a directory	filemanager	hr	Nemogu zamijeniti %1 jer je mapa.
+command sucessfully run	filemanager	hr	naredba uspjeÅ¡no provedena
+comment	filemanager	hr	Komentari
+comments cannot contain "%1"	filemanager	hr	Komentari ne mogu sadrÅŸavati  "%1"
+copied %1 to %2	filemanager	hr	Kopirano %1 u %2
+copy to	filemanager	hr	Kopiraj u
+copy to:	filemanager	hr	Kopiraj u:
+could not copy %1 to %2	filemanager	hr	Nisam mogao kopirati %1u %2
+could not copy file because no destination directory is given	filemanager	hr	Nisam moigao kopirati datoteku jer odrediÅ¡na mapa nije specificirana
+could not create %1	filemanager	hr	Nisam mogao napraviti %1
+could not create directory %1	filemanager	hr	Nisam mogao napraviti mapu %1
+could not delete %1	filemanager	hr	Nisam mogao obrisati %1
+could not move %1 to %2	filemanager	hr	Nisam mogao premjestiti %1 u %2
+could not move file because no destination directory is given	filemanager	hr	Nisam moigao premjestiti datoteku jer odrediÅ¡na mapa nije specificirana
+could not rename %1 to %2	filemanager	hr	Nisam mogao preimenovati %1 u %2
+could not save %1	filemanager	hr	Nisam mogao spremiti %1
+create file	filemanager	hr	Napravi datoteku
+create folder	filemanager	hr	Napravi mapu
+created	filemanager	hr	Napravljeno
+created %1	filemanager	hr	Napravljeno %1
+created %1,%2	filemanager	hr	Napravljeno %1,%2
+created by	filemanager	hr	Napravio
+created directory %1	filemanager	hr	Napravio mapu %1
+date	filemanager	hr	Datum
+default number of upload fields to show	filemanager	hr	PoÄetno postavljen broj datoteka za prikazati
+delete	filemanager	hr	ObriÅ¡i
+deleted %1	filemanager	hr	Obrisano %1
+directory	filemanager	hr	Mapa
+directory %1 already exists	filemanager	hr	Mapa %1 veÄ postoji
+directory %1 does not exist	filemanager	hr	Mapa %1 ne postoji
+directory names cannot contain "%1"	filemanager	hr	Imena mapa ne mogu sadrÅŸavati "%1"
+display attributes	filemanager	hr	PrikaÅŸi atribute
+download	filemanager	hr	Preuzmi sa posluÅŸitelja
+edit	filemanager	hr	Uredi
+edit comments	filemanager	hr	Uredi komentar
+error running command	filemanager	hr	GreÅ¡ka prilikom provoÄenja naredbe
+execute	filemanager	hr	IzvrÅ¡i
+failed to create directory	filemanager	hr	Neuspijelo stvaranje mape
+fake base dir did not exist, egroupware created a new one.	filemanager	hr	Fake Base Dir did not exist, eGroupWare created a new one.
+file	filemanager	hr	Datoteka
+file %1 already exists. please edit it or delete it first.	filemanager	hr	Datoteka %1 veÄ postoji. Molimo vas uredite ili obriÅ¡ite prvo veÄ postojeÄu datoteku.
+file %1 could not be created.	filemanager	hr	Nisam mogao  napraviti %1 datoteku.
+file name	filemanager	hr	Ime datoteke
+file names cannot contain "%1"	filemanager	hr	Imena datoteka nemogu sadrÅŸavati "%1"
+file names cannot contain \ or /	filemanager	hr	Imena datoteka nemogu sadrÅŸavati \ ili /
+filemanager	common	hr	Filemanager
+filemanager preferences	filemanager	hr	FileManager postavke
+files	filemanager	hr	Datoteke
+files in this directory	filemanager	hr	Datoteke u ovoj mapi
+folder	filemanager	hr	Mapa
+folder up	filemanager	hr	Gornja mapa
+go home	filemanager	hr	go home
+go to	filemanager	hr	Idi u
+go to %1	filemanager	hr	Idi u %1
+go to your home directory	filemanager	hr	Idi u mapu Home
+go to:	filemanager	hr	Idi u:
+go up	filemanager	hr	Idi gore
+home	filemanager	hr	Home
+location	filemanager	hr	Lokacija
+locked	filemanager	hr	ZakljuÄano
+mime type	filemanager	hr	MIME Tip
+modified	filemanager	hr	Promijenjeno
+modified by	filemanager	hr	Promijenio
+move to	filemanager	hr	Premjesti
+move to:	filemanager	hr	Premjesti u:
+moved %1 to %2	filemanager	hr	PremjeÅ¡teno %1 u %2
+no files in this directory.	filemanager	hr	Nema datoteka u ovoj mapi.
+no version history for this file/directory	filemanager	hr	Nema povijesti za ovu datoteku/mapu.
+operation	filemanager	hr	Operavija
+other settings	filemanager	hr	Druge postavke
+owner	filemanager	hr	Vlasnik
+please select a file to delete.	filemanager	hr	Molimo vas izaberite datoteku za obrisati
+preview %1	filemanager	hr	Pregled %1
+preview of %1	filemanager	hr	Pregled od %1
+quick jump to	filemanager	hr	Brzi prijelaz u
+reload	filemanager	hr	Ponovo otvori
+rename	filemanager	hr	Preimenuj
+renamed %1 to %2	filemanager	hr	Preimenovano %1 u %2
+replaced %1	filemanager	hr	Zamijenjeno %1
+save %1	filemanager	hr	Spremi %1
+save %1, and go back to file listing	filemanager	hr	Spremi %1, i vrati se na listu datoteka
+save all	filemanager	hr	Spremi sve
+save changes	filemanager	hr	Spremi promjene
+saved %1	filemanager	hr	Spremljeno %1
+show	filemanager	hr	PrikaÅŸi
+show ..	filemanager	hr	PrikaÅŸi...
+show .files	filemanager	hr	PrikaÅŸi .datoteke
+show command line (experimental. dangerous.)	filemanager	hr	PrikaÅŸi  liniju naredbi (EKSPERIMENTALNO. OPASNO.)
+show help	filemanager	hr	PrikaÅŸi pomoÄ
+size	filemanager	hr	VeliÄina
+sort by:	filemanager	hr	Poredaj po:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	hr	The future filemanager, now for TESTING PURPOSES ONLY, please send bugreports
+total files	filemanager	hr	Ukupno datoteka
+unknown mime-type defaults to text/plain when viewing	filemanager	hr	Nepoznati MIME-tip, prikazuat Äu u obiÄnom tekstu.
+unused space	filemanager	hr	Neupotrebljeni prostor
+up	filemanager	hr	Gore
+update	filemanager	hr	Obnovi
+updated comment for %1	filemanager	hr	Obnovi komentar za %1
+upload	filemanager	hr	Prenesi na posluÅŸitelj
+upload fields	filemanager	hr	Prenesi polja na posluÅŸitelj
+upload files	filemanager	hr	Prenesi datoteke na posluÅŸitelj
+use new experimental filemanager?	filemanager	hr	Upotrijebi novi eksperimentalni filemanager?
+used space	filemanager	hr	Upotrijebljen prostor
+users	filemanager	hr	korisnici
+version	filemanager	hr	Verzija
+view documents in new window	filemanager	hr	PrikaÅŸi dokumente u novom prozoru
+view documents on server (if available)	filemanager	hr	PrikaÅŸi dokumente na posluÅŸitelju (ukoliko ih ima)
+who	filemanager	hr	Tko
+you do not have access to %1	filemanager	hr	Nemate pristupa za %1
+your home dir did not exist, egroupware created a new one.	filemanager	hr	VaÅ¡a mapa Home nije postojalj, stvorena vam je nova.
Index: /trunk/filemanager/setup/phpgw_nl.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_nl.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_nl.lang	(revision 2000)
@@ -0,0 +1,102 @@
+%1 already exists as a file	filemanager	nl	%1 bestaat reeds als een bestand.
+application	filemanager	nl	Toepassing
+back to file manager	filemanager	nl	Terug naar de Filemanager
+cannot create directory because it begins or ends in a space	filemanager	nl	Can de directory niet aanmaken omdat deze begint of eindigt met een spatie
+cannot replace %1 because it is a directory	filemanager	nl	Kan %1 niet vevangen omdat het een directory is.
+command sucessfully run	filemanager	nl	Commando met succes uitgevoerd.
+comment	filemanager	nl	Opmerking
+comments cannot contain "%1"	filemanager	nl	Opmerkingen kunnen geen "%1" bevatten.
+copied %1 to %2	filemanager	nl	%1 gekopieerd naar %2.
+copy to	filemanager	nl	Kopiëren naar
+copy to:	filemanager	nl	Kopiëren naar:
+could not copy %1 to %2	filemanager	nl	Kon %1 niet naar %2 kopiëren.
+could not create %1	filemanager	nl	Kon %1 niet aanmaken.
+could not create directory %1	filemanager	nl	Kon directory %1 niet aanmaken.
+could not delete %1	filemanager	nl	Kon %1 niet verwijderen.
+could not move %1 to %2	filemanager	nl	Kon %1 niet verplaatsen naar %2.
+could not rename %1 to %2	filemanager	nl	Kon %1 niet hernoemen naar %2.
+could not save %1	filemanager	nl	Kon %1 niet opslaan.
+create file	filemanager	nl	Bestand aanmaken
+create folder	filemanager	nl	Directory aanmaken
+created	filemanager	nl	Aangemaakt
+created %1	filemanager	nl	%1 aangemaakt.
+created by	filemanager	nl	Aangemaakt door
+created directory %1	filemanager	nl	Directory %1 aangemaakt.
+date	filemanager	nl	Datum
+default number of upload fields to show	filemanager	nl	Standaard aantal uploadvelden in beeld
+delete	filemanager	nl	Verwijderen
+deleted %1	filemanager	nl	%1 verwijderd
+directory	filemanager	nl	Directory
+directory %1 already exists	filemanager	nl	Directory %1 bestaat reeds.
+directory %1 does not exist	filemanager	nl	Directory %1 bestaat niet.
+directory names cannot contain "%1"	filemanager	nl	Directorynamen kunnen geen "%1" bevatten.
+display attributes	filemanager	nl	Attributen weergeven
+download	filemanager	nl	Downloaden
+edit	filemanager	nl	Bewerken
+edit comments	filemanager	nl	Opmerkingen bewerken
+error running command	filemanager	nl	Fout bij het uitvoeren van commando
+execute	filemanager	nl	Uitvoeren
+failed to create directory	filemanager	nl	Het aanmaken van de directory is niet gelukt.
+file	filemanager	nl	Bestand
+file %1 already exists. please edit it or delete it first.	filemanager	nl	Bestand %1 bestaat reeds.
+file %1 could not be created.	filemanager	nl	Bestand %1 kon niet worden aangemaakt.
+file name	filemanager	nl	Bestandsnaam
+file names cannot contain  or /	filemanager	nl	Bestanden kunnen geen "\" of "/" bevatten.
+file names cannot contain "%1"	filemanager	nl	Bestanden kunnen geen "%1" bevatten.
+file names cannot contain \ or /	filemanager	nl	Bestanden kunnen geen "\" of "/" bevatten.
+filemanager	common	nl	Filemanager
+filemanager preferences	filemanager	nl	Filemanager voorkeuren
+files	filemanager	nl	Bestanden
+files in this directory	filemanager	nl	Bestanden in deze folder
+folder	filemanager	nl	Directory
+go to	filemanager	nl	Ga naar
+go to %1	filemanager	nl	Ga naar %1
+go to your home directory	filemanager	nl	Ga naar uw homedirectory
+go to:	filemanager	nl	Ga naar:
+go up	filemanager	nl	omhoog
+home	filemanager	nl	Home
+locked	filemanager	nl	Gesloten
+mime type	filemanager	nl	MIME-type
+modified	filemanager	nl	Gewijzigd
+modified by	filemanager	nl	Gewijzigd door
+move to	filemanager	nl	Verplaatsen naar
+move to:	filemanager	nl	Verplaatsen naar:
+moved %1 to %2	filemanager	nl	%1 verplaatst naar %2
+no files in this directory.	filemanager	nl	Geen bestanden in deze folder.
+no version history for this file/directory	filemanager	nl	Geen versiegeschiedenis voor dit bestand of deze directory
+operation	filemanager	nl	Actie
+other settings	filemanager	nl	Overige instellingen
+owner	filemanager	nl	Eigenaar
+preview %1	filemanager	nl	Preview %1
+preview of %1	filemanager	nl	Preview van %1
+quick jump to	filemanager	nl	Snel naar
+reload	filemanager	nl	opnieuw opvragen
+rename	filemanager	nl	Hernoemen
+renamed %1 to %2	filemanager	nl	%1 hernoemd naar %2
+replaced %1	filemanager	nl	%1 vervangen
+save %1	filemanager	nl	%1 opslaan
+save all	filemanager	nl	Alles opslaan
+saved %1	filemanager	nl	%1 opgeslagen
+show	filemanager	nl	Weergeven
+show ..	filemanager	nl	.. weergeven
+show .files	filemanager	nl	Verborgen bestanden weergeven
+show command line (experimental. dangerous.)	filemanager	nl	Commandoinvoer weergeven (EXPERIMENTEEL EN GEVAARLIJK)
+show help	filemanager	nl	Help weergeven
+size	filemanager	nl	Grootte
+sort by:	filemanager	nl	Sorteren op:
+total files	filemanager	nl	Totaal aantal bestanden
+unknown mime-type defaults to text/plain when viewing	filemanager	nl	Onbekend MIME-type standaard als text/plain weergeven
+unused space	filemanager	nl	Ongebruikte schijfruimte
+up	filemanager	nl	Naar boven
+update	filemanager	nl	Bijgewerkt
+updated comment for %1	filemanager	nl	Opmerking voor %1 bijgewerkt
+upload	filemanager	nl	Upload
+upload fields	filemanager	nl	uploadvelden
+upload files	filemanager	nl	Bestanden uploaden
+used space	filemanager	nl	Gebruikte schijfruimte
+users	filemanager	nl	Gebruikers
+version	filemanager	nl	Versie
+view documents in new window	filemanager	nl	Documenten in een nieuw venster weergeven
+view documents on server (if available)	filemanager	nl	Documenten op server weergeven (als dit mogelijk is)
+who	filemanager	nl	Wie
+you do not have access to %1	filemanager	nl	U heeft geen toedang tot %1
Index: /trunk/filemanager/setup/phpgw_pl.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_pl.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_pl.lang	(revision 2000)
@@ -0,0 +1,117 @@
+%1 already exists as a file	filemanager	pl	%1 ju¿ istnieje jako plik
+application	filemanager	pl	Aplikacja
+back to file manager	filemanager	pl	Powrót do managera plików
+cancel editing %1 without saving	filemanager	pl	Przerwij edycjê %1 bez zapisywania
+cannot create directory because it begins or ends in a space	filemanager	pl	Nie moge utworzyæ katalogu, poniewa¿ nazwa zaczyna lub konczy siê spacj±
+cannot replace %1 because it is a directory	filemanager	pl	Nie mo¿na zast±piæ %1, poniewa¿ jest katalogiem
+command sucessfully run	filemanager	pl	Polecenie wykonano pomy¶lnie
+comment	filemanager	pl	Komentarz
+comments cannot contain "%1"	filemanager	pl	Komentarz nie zawiera "%1"
+copied %1 to %2	filemanager	pl	Skopiowano %1 do %2
+copy to	filemanager	pl	Kopiuj do
+copy to:	filemanager	pl	Kopiuj do
+could not copy %1 to %2	filemanager	pl	Nie mo¿na skopiowaæ %1 do %2
+could not copy file because no destination directory is given	filemanager	pl	Nie mo¿na skopiowaæ pliku, poniewa¿ nie okre¶lono katalogu docelowego
+could not create %1	filemanager	pl	Nie mo¿na utworzyæ %1
+could not create directory %1	filemanager	pl	Nie mo¿na utworzyæ katalogu %1
+could not delete %1	filemanager	pl	Nie mo¿na usun±æ %1
+could not move %1 to %2	filemanager	pl	Nie mo¿na przenie¶æ %1
+could not move file because no destination directory is given	filemanager	pl	Nie mo¿na przenie¶æ pliku, poniewa¿ nie okre¶lono katalogu docelowego
+could not rename %1 to %2	filemanager	pl	Nie mona zmieniæ nazwy %1 na %2
+could not save %1	filemanager	pl	Nie mona zapisaæ %1
+create file	filemanager	pl	Utwórz plik
+create folder	filemanager	pl	Utwórz katalog
+created	filemanager	pl	Utworzony
+created %1	filemanager	pl	Utworzono %1
+created %1,%2	filemanager	pl	Utworzono %1, %2
+created by	filemanager	pl	Utworzony przez
+created directory %1	filemanager	pl	Utworzono katalog %1
+date	filemanager	pl	Data
+default number of upload fields to show	filemanager	pl	Ustaw domy¶ln± ilo¶æ wy¶wietlanych pól do wysy³ania plików
+delete	filemanager	pl	Usuñ
+deleted %1	filemanager	pl	Skasowano %1
+deleted x	filemanager	pl	Usunito 51
+directory	filemanager	pl	Katalog
+directory %1 already exists	filemanager	pl	Katalog %1 ju¿ istnieje
+directory %1 does not exist	filemanager	pl	Katalog %1 nie istnieje
+directory names cannot contain "%1"	filemanager	pl	Nazwa katalogu zawiera "%1"
+display attributes	filemanager	pl	Wy¶wietlane atrybuty
+download	filemanager	pl	Pobierz
+edit	filemanager	pl	Edycja
+edit comments	filemanager	pl	Edycja komentarza
+error running command	filemanager	pl	B³±d wykonania polecenia
+execute	filemanager	pl	Wykonaj
+failed to create directory	filemanager	pl	nie uda³o siê utworzyæ katalogu
+fake base dir did not exist, egroupware created a new one.	filemanager	pl	Twój "fa³szywy" katalog podstawowy nie istnia³, wiêc eGroupWare utworzy³ go.
+file	filemanager	pl	Plik
+file %1 already exists. please edit it or delete it first.	filemanager	pl	Plik %1 ju¿ istnieje. Proszê najpierw wyedytowaæ go lub usun±æ.
+file %1 could not be created.	filemanager	pl	Plik %1 nie mo¿e byæ utworzony
+file name	filemanager	pl	Nazwa pliku
+file names cannot contain "%1"	filemanager	pl	Plik nie zawiera "%1"
+file names cannot contain \ or /	filemanager	pl	Nazwa pliku nie mo¿e zawieraæ \ lub /
+filemanager	common	pl	Pliki
+filemanager preferences	filemanager	pl	Preferencje Managera plików
+filename	filemanager	pl	Nazwa pliku
+files	filemanager	pl	Plików
+files in this directory	filemanager	pl	Pliki w tym katalogu
+folder	filemanager	pl	Katalog
+folder up	filemanager	pl	Folder w górê
+go home	filemanager	pl	IdŒ do strony g³ównej
+go to	filemanager	pl	IdŒ do
+go to %1	filemanager	pl	IdŒ do %1
+go to your home directory	filemanager	pl	IdŒ do katalogu domowego
+go to:	filemanager	pl	IdŒ do
+go up	filemanager	pl	w górê
+home	filemanager	pl	Strona g³ówna
+location	filemanager	pl	Po³o¿enie
+locked	filemanager	pl	Zablokowano
+mime type	filemanager	pl	Typ MIME
+modified	filemanager	pl	Zmodyfikowany
+modified by	filemanager	pl	Zmodyfikowany przez
+move to	filemanager	pl	Przenie¶ do
+move to:	filemanager	pl	Przenie¶ do:
+moved %1 to %2	filemanager	pl	Przeniesiono %1 do %2
+no files in this directory.	filemanager	pl	Nie ma plików w tym katalogu
+no version history for this file/directory	filemanager	pl	Nie istnieje historia wersji tego pliku/katalogu
+operation	filemanager	pl	Operacja
+other settings	filemanager	pl	Inne ustawienia
+owner	filemanager	pl	W³a¶ciciel
+please select a file to delete.	filemanager	pl	Proszê wybraæ plik do skasowania.
+preview %1	filemanager	pl	Podgl±d %1
+preview of %1	filemanager	pl	Podgl±d %1
+quick jump to	filemanager	pl	Szybki skok do
+reload	filemanager	pl	od¶wie¿
+rename	filemanager	pl	Zmiana nazwy
+renamed %1 to %2	filemanager	pl	Zmieniono nazwê %1 na %2
+replaced %1	filemanager	pl	Zast±piono %1
+save %1	filemanager	pl	Zapisz %1
+save %1, and go back to file listing	filemanager	pl	Zapisz %1 i przejdŒ do listy plików
+save all	filemanager	pl	Zapisz wszystko
+save changes	filemanager	pl	Zapisz zmiany
+saved %1	filemanager	pl	Zapisano %1
+show	filemanager	pl	Wy¶wietl
+show ..	filemanager	pl	Wy¶wietlaj ..
+show .files	filemanager	pl	Wy¶wietlaj .pliki
+show command line (experimental. dangerous.)	filemanager	pl	Wy¶wietl linie poleceñ (UWAGA: FUNKCJA EKSPERYMENTALNA, U¯YCIE MO¯E BYÆ NIEBEZPIECZNE)
+show help	filemanager	pl	Wy¶wietlaj pomoc
+size	filemanager	pl	Wielko¶æ
+sort by:	filemanager	pl	Sortuj wg:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	pl	Nastepna wersja managera plików, WY£¡CZNIE DO CELÓW TESTOWYCH, proszê przesy³aæ raporty b³êdów.
+total files	filemanager	pl	Wszystkich plików
+unknown mime-type defaults to text/plain when viewing	filemanager	pl	Nieznany typ MIME domy¶lnie traktowany jest w przegl±daniu jako text/plain.
+unused space	filemanager	pl	Wolne miejsce
+up	filemanager	pl	W górê
+update	filemanager	pl	Aktualizuj
+updated comment for %1	filemanager	pl	Zaktualizowano komentarz do %1
+upload	filemanager	pl	Za³aduj plik
+upload fields	filemanager	pl	wczytywanych plików
+upload files	filemanager	pl	Wczytaj pliki
+use new experimental filemanager?	filemanager	pl	U¿ywaæ nowego, eksperymentalnego Menad¿era plików?
+used space	filemanager	pl	Wykorzystane miejsce
+users	filemanager	pl	U¿ytkownicy
+version	filemanager	pl	Wersja
+view documents in new window	filemanager	pl	Wy¶wietlaj dokumenty w nowym oknie
+view documents on server (if available)	filemanager	pl	Poka¿ dokumenty na serwerze (je¶li s± dostêpne)
+who	filemanager	pl	Kto
+you do not have access to %1	filemanager	pl	Nie masz uprawnieñ do %1
+your home dir did not exist, egroupware created a new one.	filemanager	pl	Twój Katalog domowy nie istnia³, wiêc eGroupWare utworzy³ go.
Index: /trunk/filemanager/setup/phpgw_es-es.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_es-es.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_es-es.lang	(revision 2000)
@@ -0,0 +1,118 @@
+%1 already exists as a file	filemanager	es-es	%1 ya existe como un fichero
+application	filemanager	es-es	Aplicación
+back to file manager	filemanager	es-es	Volver al Administrador de ficheros
+cancel editing %1 without saving	filemanager	es-es	Cancelar la edición de %1 sin guardar
+cannot create directory because it begins or ends in a space	filemanager	es-es	No se puede crear el directorio porque empieza o acaba con un espacio
+cannot replace %1 because it is a directory	filemanager	es-es	No puedo reemplazar %1 porque está en un directorio
+command sucessfully run	filemanager	es-es	Comando ejecutado correctamente
+comment	filemanager	es-es	Comentario
+comments cannot contain "%1"	filemanager	es-es	Los comentarios no pueden tener "%1"
+copied %1 to %2	filemanager	es-es	Copiado %1 a %2
+copy to	filemanager	es-es	Copiar A
+copy to:	filemanager	es-es	Copiar a:
+could not copy %1 to %2	filemanager	es-es	No se pudo copiar %1 a %2
+could not copy file because no destination directory is given	filemanager	es-es	No se pudo copiar el fichero porque no se indicó el directorio de destino
+could not create %1	filemanager	es-es	No se pudo crear %1
+could not create directory %1	filemanager	es-es	No se pudo crear el directorio %1
+could not delete %1	filemanager	es-es	No se pudo borrar %1
+could not move %1 to %2	filemanager	es-es	No se pudo mover %1 a %2
+could not move file because no destination directory is given	filemanager	es-es	No se puedo mover el fichero porque no se indicó el directorio de destino
+could not rename %1 to %2	filemanager	es-es	No se pudo renombre %1 a %2
+could not save %1	filemanager	es-es	No se pudo guardar %1
+create file	filemanager	es-es	Crear fichero
+create folder	filemanager	es-es	Crear carpeta
+created	filemanager	es-es	Creado
+created %1	filemanager	es-es	Se ha creado %1
+created %1,%2	filemanager	es-es	Se ha creado %1,%2
+created by	filemanager	es-es	Creado por
+created directory %1	filemanager	es-es	Directorio %1 creado
+date	filemanager	es-es	Fecha
+default number of upload fields to show	filemanager	es-es	Número predeterminado de campos a mostrar
+delete	filemanager	es-es	Borrar
+deleted %1	filemanager	es-es	%1 ha sido borrado
+directory	filemanager	es-es	Directorio
+directory %1 already exists	filemanager	es-es	El directorio %1 ya existe
+directory %1 does not exist	filemanager	es-es	El directorio %1 no existe
+directory names cannot contain "%1"	filemanager	es-es	Los nombres de directorio no pueden tener "%1"
+display attributes	filemanager	es-es	Mostrar atributos
+download	filemanager	es-es	Descargar
+edit	filemanager	es-es	Editar
+edit comments	filemanager	es-es	Editar comentarios
+error running command	filemanager	es-es	Error al ejecutar el comando
+execute	filemanager	es-es	Ejecutar
+failed to create directory	filemanager	es-es	fallo al crear el directorio
+fake base dir did not exist, egroupware created a new one.	filemanager	es-es	El directorio base ficticio no existía, y eGroupWare ha creado una nueva
+file	filemanager	es-es	Fichero
+file %1 already exists. please edit it or delete it first.	filemanager	es-es	El fichero %1 ya existe. Por favor, edítelo o bórrelo antes.
+file %1 could not be created.	filemanager	es-es	No se pudo crear el fichero %1.
+file name	filemanager	es-es	Nombre del fichero
+file names cannot contain  or /	filemanager	es-es	
+file names cannot contain "%1"	filemanager	es-es	Los nombres de fichero no pueden contener "%1"
+file names cannot contain \ or /	filemanager	es-es	Los nombres de fichero no pueden contener  o /
+filemanager	common	es-es	Administrador de archivos
+filemanager preferences	filemanager	es-es	Preferencias del Administrador de archivos
+files	filemanager	es-es	Ficheros
+files in this directory	filemanager	es-es	Ficheros en este directorio
+files is this directory	filemanager	es-es	Ficheros en este directorio
+folder	filemanager	es-es	Carpeta
+folder up	filemanager	es-es	Subir una carpeta
+go home	filemanager	es-es	ir al inicio
+go to	filemanager	es-es	Ir A
+go to %1	filemanager	es-es	Ir a %1
+go to your home directory	filemanager	es-es	Ir al directorio personal
+go to:	filemanager	es-es	Ir a:
+go up	filemanager	es-es	subir
+home	filemanager	es-es	Inicio
+location	filemanager	es-es	Ubicación
+locked	filemanager	es-es	Bloqueado
+mime type	filemanager	es-es	Tipo MIME
+modified	filemanager	es-es	Modificado
+modified by	filemanager	es-es	Modificado por
+move to	filemanager	es-es	Mover A
+move to:	filemanager	es-es	Mover a:
+moved %1 to %2	filemanager	es-es	Se ha movido %1 a %2
+no files in this directory.	filemanager	es-es	No hay ficheros en este directorio
+no version history for this file/directory	filemanager	es-es	No hay historial de versión para este fichero o directorio
+operation	filemanager	es-es	Operación
+other settings	filemanager	es-es	Otras opciones
+owner	filemanager	es-es	Propietario
+please select a file to delete.	filemanager	es-es	Por favor, seleccione un fichero para borrar
+preferences old	preferences	es-es	Preferencias antiguas
+preview %1	filemanager	es-es	Vista previa de %1
+preview of %1	filemanager	es-es	Vista previa de %1
+quick jump to	filemanager	es-es	Salto rápido a
+reload	filemanager	es-es	recargar
+rename	filemanager	es-es	Renombrar
+renamed %1 to %2	filemanager	es-es	Se ha renombrado %1 a %2
+replaced %1	filemanager	es-es	Reemplazado %1
+save %1	filemanager	es-es	Guardar %1
+save %1, and go back to file listing	filemanager	es-es	Guardar %1, y volver al listado de ficheros
+save all	filemanager	es-es	Guardar todo
+save changes	filemanager	es-es	Guardar cambios
+saved %1	filemanager	es-es	Guardado %1
+show	filemanager	es-es	Mostrar
+show ..	filemanager	es-es	Mostrar ..
+show .files	filemanager	es-es	Mostrar ficheros ocultos
+show command line (experimental. dangerous.)	filemanager	es-es	Mostrar línea de comandos (EXPERIMENTAL. PELIGROSO)
+show help	filemanager	es-es	Mostrar la ayuda
+size	filemanager	es-es	Tamaño
+sort by:	filemanager	es-es	Ordenar por:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	es-es	El Administrador de archivos futuro, SOLO PARA PRUEBAS. Por favor, informe de los fallos.
+total files	filemanager	es-es	Total ficheros
+unknown mime-type defaults to text/plain when viewing	filemanager	es-es	El tipo MIME desconocido se muestra como text/plain
+unused space	filemanager	es-es	Espacio libre
+up	filemanager	es-es	Arriba
+update	filemanager	es-es	Actualizar
+updated comment for %1	filemanager	es-es	Comentario actualizado para %1
+upload	filemanager	es-es	Copiar a servidor
+upload fields	filemanager	es-es	Subir campos
+upload files	filemanager	es-es	Subir ficheros
+use new experimental filemanager?	filemanager	es-es	¿Usar el nuevo Administrador de archivos (experimental)?
+used space	filemanager	es-es	Espacio utilizado
+users	filemanager	es-es	Usuarios
+version	filemanager	es-es	Versión
+view documents in new window	filemanager	es-es	Ver documentos en una ventana nueva
+view documents on server (if available)	filemanager	es-es	Ver documentos en el servidor (si está disponible)
+who	filemanager	es-es	Quién
+you do not have access to %1	filemanager	es-es	No tiene acceso a %1
+your home dir did not exist, egroupware created a new one.	filemanager	es-es	Su directorio inicial no existía, y eGroupWare ha creado uno nuevo.
Index: /trunk/filemanager/setup/phpgw_it.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_it.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_it.lang	(revision 2000)
@@ -0,0 +1,116 @@
+%1 already exists as a file	filemanager	it	%1 esiste già come file
+application	filemanager	it	Applicazione
+back to file manager	filemanager	it	Indietro a File manager
+cancel editing %1 without saving	filemanager	it	Annulla modifiche di %1 senza salvare
+cannot create directory because it begins or ends in a space	filemanager	it	Non posso creare la directory perché inizia o finisce con uno spazio
+cannot replace %1 because it is a directory	filemanager	it	Non posso sotituire %1 perché è una directory
+command sucessfully run	filemanager	it	Comando eseguito con successo
+comment	filemanager	it	Commento
+comments cannot contain "%1"	filemanager	it	I commenti non possono contenere "%1"
+copied %1 to %2	filemanager	it	Ho copiato %1 in %2
+copy to	filemanager	it	Copia In
+copy to:	filemanager	it	Copia in:
+could not copy %1 to %2	filemanager	it	Non posso copiare %1 in %2
+could not copy file because no destination directory is given	filemanager	it	Non posso copiare il file perché non è indicata la directory di destinazione
+could not create %1	filemanager	it	Non posso creare %1
+could not create directory %1	filemanager	it	Non posso creare la directory %1
+could not delete %1	filemanager	it	Non posso eliminare %1
+could not move %1 to %2	filemanager	it	Non posso spostare %1 in %2
+could not move file because no destination directory is given	filemanager	it	Non posso spostare il file perché non è indicata la directory di destinazione
+could not rename %1 to %2	filemanager	it	Non posso rinominare %1 in %2
+could not save %1	filemanager	it	Non posso salvare %1
+create file	filemanager	it	Crea File
+create folder	filemanager	it	Crea Cartella
+created	filemanager	it	Creato
+created %1	filemanager	it	Creato %1
+created %1,%2	filemanager	it	Creato %1, %2
+created by	filemanager	it	Creato da
+created directory %1	filemanager	it	Creata la directory %1
+date	filemanager	it	Data
+default number of upload fields to show	filemanager	it	Numero predefinito di campi di caricamento da mostrare
+delete	filemanager	it	Elimina
+deleted %1	filemanager	it	Eliminato %1
+directory	filemanager	it	Directory
+directory %1 already exists	filemanager	it	La directory %1 esiste già
+directory %1 does not exist	filemanager	it	La directory %1 non esiste
+directory names cannot contain "%1"	filemanager	it	I nomi di directory non possono contenere "%1"
+display attributes	filemanager	it	Visualizza attributi
+download	filemanager	it	Download
+edit	filemanager	it	Modifica
+edit comments	filemanager	it	Modifica commenti
+error running command	filemanager	it	Errore nell'esecuzione del comando
+execute	filemanager	it	Esegui
+failed to create directory	filemanager	it	Creazione directory fallita
+fake base dir did not exist, egroupware created a new one.	filemanager	it	La finta Directory base non esisteva, eGroupWare ne ha creata una nuova.
+file	filemanager	it	File
+file %1 already exists. please edit it or delete it first.	filemanager	it	Il file %1 esiste già. Per favore, prima modificalo o cancellalo.
+file %1 could not be created.	filemanager	it	Il file %1 non può essere creato.
+file name	filemanager	it	Nome del File
+file names cannot contain "%1"	filemanager	it	I nomi dei File non possono contenere "%1"
+file names cannot contain \ or /	filemanager	it	I nomi dei File non possono contenere \ o /
+file names cannot contain \\ or /	filemanager	it	I nomi dei File non possono contenere \ o /
+filemanager	common	it	Filemanager
+filemanager preferences	filemanager	it	Preferenze Filemanager
+files	filemanager	it	File
+files in this directory	filemanager	it	File in questa directory
+folder	filemanager	it	Cartella
+folder up	filemanager	it	Cartella superiore
+go home	filemanager	it	Vai alla Home
+go to	filemanager	it	Vai A
+go to %1	filemanager	it	Vai a %1
+go to your home directory	filemanager	it	Vai alla tua directory Home
+go to:	filemanager	it	Vai a:
+go up	filemanager	it	Vai su
+home	filemanager	it	Home
+location	filemanager	it	Locazione
+locked	filemanager	it	Bloccato
+mime type	filemanager	it	Tipo MIME
+modified	filemanager	it	Modificato
+modified by	filemanager	it	Modificato da
+move to	filemanager	it	Sposta in
+move to:	filemanager	it	Sposta in:
+moved %1 to %2	filemanager	it	Ho spostato %1 in %2
+no files in this directory.	filemanager	it	Nessun File in questa directory.
+no version history for this file/directory	filemanager	it	Nessuna cronologia versioni per questo file/directory
+operation	filemanager	it	Operazione
+other settings	filemanager	it	Altre impostazioni
+owner	filemanager	it	Proprietario
+please select a file to delete.	filemanager	it	Selezion un File da eliminare.
+preview %1	filemanager	it	Anteprima %1
+preview of %1	filemanager	it	Anteprima di %1
+quick jump to	filemanager	it	Salta a
+reload	filemanager	it	ricarica
+rename	filemanager	it	Rinomina
+renamed %1 to %2	filemanager	it	Ho rinominato %1 in %2
+replaced %1	filemanager	it	Sostituito %1
+save %1	filemanager	it	Salva %1
+save %1, and go back to file listing	filemanager	it	Salva %1 e torna alla lista dei file
+save all	filemanager	it	Salva tutto
+save changes	filemanager	it	Salva le modifiche
+saved %1	filemanager	it	Ho salvato %1
+show	filemanager	it	Mostra
+show ..	filemanager	it	Mostra ..
+show .files	filemanager	it	Mostra .files
+show command line (experimental. dangerous.)	filemanager	it	Mostra linea di comando (SPERIMENTALE. PERICOLOSO.)
+show help	filemanager	it	Mostra Aiuto
+size	filemanager	it	Dimensione
+sort by:	filemanager	it	Ordina per:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	it	Il futuro Filemanager, ora ESCLUSIVAMENTE A SCOPO DI TEST, per favore invia rapporti di bug.
+total files	filemanager	it	File totali
+unknown mime-type defaults to text/plain when viewing	filemanager	it	I tipi MIME sconosciuti vengono visualizzati come testo semplice
+unused space	filemanager	it	Spazio inutilizzato
+up	filemanager	it	Su
+update	filemanager	it	Aggiorna
+updated comment for %1	filemanager	it	Ho aggiornato i commenti per %1
+upload	filemanager	it	Carica
+upload fields	filemanager	it	campi caricamento
+upload files	filemanager	it	Carica File
+use new experimental filemanager?	filemanager	it	Utilizza il nuovo Filemanager sperimentale?
+used space	filemanager	it	Spazio utilizzato
+users	filemanager	it	Utenti
+version	filemanager	it	Versione
+view documents in new window	filemanager	it	Visualizza i documenti in una nuova finestra
+view documents on server (if available)	filemanager	it	Visualizza i documenti sul server (se disponibile)
+who	filemanager	it	Chi
+you do not have access to %1	filemanager	it	Non hai accesso a %1
+your home dir did not exist, egroupware created a new one.	filemanager	it	La tua Directory Home non esisteva, eGroupWare ne ha creata una nuova.
Index: /trunk/filemanager/setup/phpgw_no.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_no.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_no.lang	(revision 2000)
@@ -0,0 +1,113 @@
+%1 already exists as a file	filemanager	no	%1 finnes allerede som en fil
+application	filemanager	no	Applikasjon
+back to file manager	filemanager	no	Tilbake til filbehandler
+cancel editing %1 without saving	filemanager	no	Avbryt redigering %1 uten å lagre
+cannot create directory because it begins or ends in a space	filemanager	no	Kan ikke opprette mappe fordi den begynner eller slutter med mellomrom
+cannot replace %1 because it is a directory	filemanager	no	Kan ikke erstatte %1 fordi det er en mappe
+command sucessfully run	filemanager	no	Kommando vellykket
+comment	filemanager	no	Kommentar
+comments cannot contain "%1"	filemanager	no	Kommentar kan ikke inneholde %1
+copied %1 to %2	filemanager	no	Kopiert %1 til %2
+copy to	filemanager	no	Kopier til
+copy to:	filemanager	no	Kopier til:
+could not copy %1 to %2	filemanager	no	Kunne ikke kopiere %1 til %2
+could not copy file because no destination directory is given	filemanager	no	Kunne ikke kopiere fil fordi destinasjon ikke er oppgitt
+could not create %1	filemanager	no	Kunne ikke opprette %1
+could not create directory %1	filemanager	no	Kunne ikke opprette mappe %1
+could not delete %1	filemanager	no	Kunne ikke slette %1
+could not move %1 to %2	filemanager	no	Kunne ikke flytte %1 til %2
+could not move file because no destination directory is given	filemanager	no	Kunne ikke flytte fil fordi mål ikke er oppgitt
+could not rename %1 to %2	filemanager	no	Kunne ikke gi %1 nytt navn til %2
+could not save %1	filemanager	no	Kunne ikke lagre %1
+create file	filemanager	no	Opprett fil
+create folder	filemanager	no	Opprett mappe
+created	filemanager	no	Opprettet
+created %1	filemanager	no	Opprettet %1
+created %1,%2	filemanager	no	Opprettet %1, %2
+created by	filemanager	no	Opprettet av
+created directory %1	filemanager	no	Opprettet mappe %1
+date	filemanager	no	Dato
+default number of upload fields to show	filemanager	no	Standard antall av opplastingsfiler å vise
+delete	filemanager	no	Slett
+deleted %1	filemanager	no	Slettet %1
+directory	filemanager	no	Mappe
+directory %1 already exists	filemanager	no	Mappe %1 finnes allerede
+directory %1 does not exist	filemanager	no	Mappe %1 finnes ikke
+directory names cannot contain "%1"	filemanager	no	Mappens navn kan ikke inneholde %1
+display attributes	filemanager	no	Vis attributter
+download	filemanager	no	Last ned
+edit	filemanager	no	Rediger
+edit comments	filemanager	no	Rediger kommentarer
+error running command	filemanager	no	Feil ved utføring av kommando
+execute	filemanager	no	Utfør
+failed to create directory	filemanager	no	feilet ved opprettelse av mappe
+file	filemanager	no	Fil
+file %1 already exists. please edit it or delete it first.	filemanager	no	Filen %1 finnes allerede. Vennligst rediger eller slett den først
+file %1 could not be created.	filemanager	no	Filen %1 kunne ikke opprettes
+file name	filemanager	no	Filnavn
+file names cannot contain "%1"	filemanager	no	Filnavn kan ikke inneholde "%1"
+file names cannot contain \ or /	filemanager	no	Filnavn kan ikke inneholde \ eller /
+filemanager	common	no	Filhåndterer
+filemanager preferences	filemanager	no	Filhåndterer preferanser
+files	filemanager	no	Filer
+files in this directory	filemanager	no	Filer i denne mappen
+folder	filemanager	no	Mappe
+folder up	filemanager	no	Mappe opp
+go home	filemanager	no	gå hjem
+go to	filemanager	no	Gå til
+go to %1	filemanager	no	Gå til %1
+go to your home directory	filemanager	no	Gå til hjemmemappe
+go to:	filemanager	no	Gå til:
+go up	filemanager	no	gå opp
+home	filemanager	no	Hjem
+location	filemanager	no	Lokasjon
+locked	filemanager	no	Låst
+mime type	filemanager	no	MIME type
+modified	filemanager	no	Endret
+modified by	filemanager	no	Endret av
+move to	filemanager	no	Flytt til
+move to:	filemanager	no	Flytt til:
+moved %1 to %2	filemanager	no	Flyttet %1 til %2
+no files in this directory.	filemanager	no	Ingen filer i mappen
+no version history for this file/directory	filemanager	no	Ingen versjon for denne filen/mappen
+operation	filemanager	no	Operasjon
+other settings	filemanager	no	Andre innstillinger
+owner	filemanager	no	Eier
+please select a file to delete.	filemanager	no	Vennligst velg en fil å slette
+preview %1	filemanager	no	Forhåndsvis %1
+preview of %1	filemanager	no	Forhåndsvining av %1
+quick jump to	filemanager	no	Hurtighopp til
+reload	filemanager	no	Last på nytt
+rename	filemanager	no	Gi nytt navn
+renamed %1 to %2	filemanager	no	Ga %1 nytt navn til %2
+replaced %1	filemanager	no	Erstattet %1
+save %1	filemanager	no	Lagret %1
+save %1, and go back to file listing	filemanager	no	Lagre %1, og gå tilbake til filliste
+save all	filemanager	no	Lagre alle
+save changes	filemanager	no	Lagre endringer
+saved %1	filemanager	no	Lagret %1
+show	filemanager	no	Vis
+show ..	filemanager	no	Vis...
+show .files	filemanager	no	Vis .filer
+show command line (experimental. dangerous.)	filemanager	no	Vis kommandolinje (Eksperimentell. Farlig)
+show help	filemanager	no	Vis hjelp
+size	filemanager	no	Størrelse
+sort by:	filemanager	no	Sorter etter:
+total files	filemanager	no	Totalt antall filer
+unknown mime-type defaults to text/plain when viewing	filemanager	no	Ukjent MIME-type blir text/plain ved visning
+unused space	filemanager	no	Ubrukt område
+up	filemanager	no	Opp
+update	filemanager	no	Oppdater
+updated comment for %1	filemanager	no	Oppdatert kommentar for %1
+upload	filemanager	no	Last opp
+upload fields	filemanager	no	last opp felter
+upload files	filemanager	no	Last opp filer
+use new experimental filemanager?	filemanager	no	Bruk den eksperimentelle Filhåndtereren
+used space	filemanager	no	Brukt område
+users	filemanager	no	Brukere
+version	filemanager	no	Versjon
+view documents in new window	filemanager	no	Vis dokumenter i vindu
+view documents on server (if available)	filemanager	no	Vis dokumenter på tjener (hvis tilgjengelig)
+who	filemanager	no	Hvem
+you do not have access to %1	filemanager	no	Du har ikke adgang til %1
+your home dir did not exist, egroupware created a new one.	filemanager	no	Din hjemmemappe fantes ikke, eGroupWare opprettet en ny.
Index: /trunk/filemanager/setup/phpgw_sl.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_sl.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_sl.lang	(revision 2000)
@@ -0,0 +1,116 @@
+%1 already exists as a file	filemanager	sl	%1 ï¿œe obstaja kot datoteka.
+application	filemanager	sl	Aplikacija
+back to file manager	filemanager	sl	Nazaj v upravljalca datotek
+cancel editing %1 without saving	filemanager	sl	PRekini urejanje %1 brez shranjevanja
+cannot create directory because it begins or ends in a space	filemanager	sl	Ne morem ustvariti mape, ker se njeno ime zaÄne ali konÄa s presledkom.
+cannot replace %1 because it is a directory	filemanager	sl	Ne morem nadomestiti %1, ker je mapa.
+command sucessfully run	filemanager	sl	Ukaz je bil uspeï¿œno izveden.
+comment	filemanager	sl	Komentar
+comments cannot contain "%1"	filemanager	sl	Komentarji ne smejo vsebovati "%1".
+copied %1 to %2	filemanager	sl	%1 prekopirano v %2.
+copy to	filemanager	sl	Kopiraj v
+copy to:	filemanager	sl	Kopiraj v:
+could not copy %1 to %2	filemanager	sl	Ne morem kopirati %1 v %2.
+could not copy file because no destination directory is given	filemanager	sl	Ne morem kopirati datoteke, ker ciljna mapa ni podana.
+could not create %1	filemanager	sl	Ne morem ustvariti %1
+could not create directory %1	filemanager	sl	Ne morem ustvariti mape %1
+could not delete %1	filemanager	sl	Ne morem izbrisati %1
+could not move %1 to %2	filemanager	sl	Ne morem prenesti %1 v %2
+could not move file because no destination directory is given	filemanager	sl	Ne morem prenesti datoteke, ker ciljna mapa ni podana.
+could not rename %1 to %2	filemanager	sl	Ne morem preimenovati %1 v %2
+could not save %1	filemanager	sl	Ne morem shraniti %1
+create file	filemanager	sl	Ustvari datoteko
+create folder	filemanager	sl	Ustvari mapo
+created	filemanager	sl	Ustvarjeno
+created %1	filemanager	sl	Ustvarjen %1
+created %1,%2	filemanager	sl	Ustvarjen %1,%2
+created by	filemanager	sl	Ustvaril
+created directory %1	filemanager	sl	Ustvarjena mapa %1
+date	filemanager	sl	Datum
+default number of upload fields to show	filemanager	sl	Privzeto ï¿œtevilo datotek za prikaz na seznamu
+delete	filemanager	sl	Briï¿œi
+deleted %1	filemanager	sl	Izbrisano %1
+directory	filemanager	sl	Mapa
+directory %1 already exists	filemanager	sl	Mapa %1 ï¿œe obstaja
+directory %1 does not exist	filemanager	sl	Mapa %1 ne obstaja
+directory names cannot contain "%1"	filemanager	sl	Imena map ne smejo vsebovati "%1"
+display attributes	filemanager	sl	Prikaï¿œi atribute
+download	filemanager	sl	Prenesi
+edit	filemanager	sl	Uredi
+edit comments	filemanager	sl	Uredi komentarje
+error running command	filemanager	sl	Napaka pri izvajanju ukaza
+execute	filemanager	sl	Izvedi
+failed to create directory	filemanager	sl	Nisem uspel ustvariti mape
+fake base dir did not exist, egroupware created a new one.	filemanager	sl	Mapa Fake Base Dir ni obstajala, zato je bila ustvarjena nova.
+file	filemanager	sl	Datoteka
+file %1 already exists. please edit it or delete it first.	filemanager	sl	Datoteka %1 ï¿œe obstaja. Prosim, Äe uredite obstojeÄo razliÄico, ali pa jo izbriï¿œete.
+file %1 could not be created.	filemanager	sl	Ne morem ustvariti datoteke %1.
+file name	filemanager	sl	Ime datoteke
+file names cannot contain  or /	filemanager	sl	Imena datotek ne smejo vsebovati \ ali /
+file names cannot contain "%1"	filemanager	sl	Imena datotek ne smejo vsebovati "%1"
+file names cannot contain \ or /	filemanager	sl	Imena datotek ne smejo vsebovati \ ali /
+filemanager	common	sl	Upravljalec datotek
+filemanager preferences	filemanager	sl	Nastavitve Upravljalca datotek
+files	filemanager	sl	Datoteke
+files in this directory	filemanager	sl	Datoteke v mapi
+folder	filemanager	sl	Mapa
+folder up	filemanager	sl	Nadrejena mapa
+go home	filemanager	sl	Pojdi domov
+go to	filemanager	sl	Pojdi na
+go to %1	filemanager	sl	Pojdi na %1
+go to your home directory	filemanager	sl	Pojdi na domaÄo mapo
+go to:	filemanager	sl	Pojdi na:
+go up	filemanager	sl	Pojdi navzgor
+home	filemanager	sl	Domov
+location	filemanager	sl	PoloÅŸaj
+locked	filemanager	sl	Zaklenjen
+mime type	filemanager	sl	MIME tip
+modified	filemanager	sl	Spremenjeno
+modified by	filemanager	sl	Spremenil
+move to	filemanager	sl	Premakni v
+move to:	filemanager	sl	Premakni v:
+moved %1 to %2	filemanager	sl	%1 je bilo premaknjeno v %2
+no files in this directory.	filemanager	sl	V tej mapi ni datotek
+no version history for this file/directory	filemanager	sl	Ni zgodovine razliÄic za to datoteko/mapo.
+operation	filemanager	sl	Operacija
+other settings	filemanager	sl	Druge nastavitve
+owner	filemanager	sl	Lastnik
+please select a file to delete.	filemanager	sl	Prosim, izberite datoteko za brisanje.
+preview %1	filemanager	sl	Predogled %1
+preview of %1	filemanager	sl	Predogled %1
+quick jump to	filemanager	sl	Hiter skok v
+reload	filemanager	sl	Obnovi
+rename	filemanager	sl	Preimenuj
+renamed %1 to %2	filemanager	sl	%1 je bilo preimenovano v %2
+replaced %1	filemanager	sl	Zamenjana %1
+save %1	filemanager	sl	Shrani %1
+save %1, and go back to file listing	filemanager	sl	Shrani %1 in se vrni na seznam datotek
+save all	filemanager	sl	Shrani vse
+save changes	filemanager	sl	Shrani spremembe
+saved %1	filemanager	sl	Shranjen %1
+show	filemanager	sl	Prikaï¿œi
+show ..	filemanager	sl	Prikaï¿œi ..
+show .files	filemanager	sl	Prikaï¿œi .datoteke
+show command line (experimental. dangerous.)	filemanager	sl	Prikaï¿œi ukazno vrstico (POIZKUSNO. NEVARNO.)
+show help	filemanager	sl	Prikaï¿œi pomoÄ
+size	filemanager	sl	Velikost
+sort by:	filemanager	sl	Uredi po:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	sl	LE ZA TESTIRANJE! Prosimo, sporoÄite hroÅ¡Äe in pripombe.
+total files	filemanager	sl	Vseh datotek
+unknown mime-type defaults to text/plain when viewing	filemanager	sl	Neznani MIME tip se pri pregledovanju obravnava kot text/plain
+unused space	filemanager	sl	Neuporabljen prostor
+up	filemanager	sl	Navzgor
+update	filemanager	sl	Osveï¿œi
+updated comment for %1	filemanager	sl	Komentar za %1 je bil osveï¿œen
+upload	filemanager	sl	NaloÅŸi
+upload fields	filemanager	sl	polja za nalaganje
+upload files	filemanager	sl	Naloï¿œi datoteke
+use new experimental filemanager?	filemanager	sl	Uporabljam nov,eksperimentalen FileManager?
+used space	filemanager	sl	Neuporabljen prostor
+users	filemanager	sl	Uporabniki
+version	filemanager	sl	RazliÄica
+view documents in new window	filemanager	sl	Preglej doumente v novem oknu
+view documents on server (if available)	filemanager	sl	Preglej dokument na streï¿œniku (Äe je mogoÄe)
+who	filemanager	sl	Kdo
+you do not have access to %1	filemanager	sl	Nimate dostopa do %1
+your home dir did not exist, egroupware created a new one.	filemanager	sl	VaÅ¡a domaÄa mapa ni obstajala, zato je bila ustvarjena nova.
Index: /trunk/filemanager/setup/default_records.inc.php
===================================================================
--- /trunk/filemanager/setup/default_records.inc.php	(revision 2000)
+++ /trunk/filemanager/setup/default_records.inc.php	(revision 2000)
@@ -0,0 +1,17 @@
+<?php
+  /**************************************************************************\
+  * eGroupWare - Setup                                                       *
+  * http://www.egroupware.org                                                *
+  * --------------------------------------------                             *
+  *  This program is free software; you can redistribute it and/or modify it *
+  *  under the terms of the GNU General Public License as published by the   *
+  *  Free Software Foundation; either version 2 of the License, or (at your  *
+  *  option) any later version.                                              *
+  \**************************************************************************/
+
+  /* $Id: default_records.inc.php 15588 2004-07-02 22:19:56Z ralfbecker $ */
+
+	$oProc->query("INSERT INTO phpgw_vfs (owner_id, createdby_id, modifiedby_id, created, modified, size, mime_type, deleteable, comment, app, directory, name, link_directory, link_name) VALUES (1,0,0,'1970-01-01',NULL,NULL,'Directory','Y',NULL,NULL,'/','', NULL, NULL)");
+	$oProc->query("INSERT INTO phpgw_vfs (owner_id, createdby_id, modifiedby_id, created, modified, size, mime_type, deleteable, comment, app, directory, name, link_directory, link_name) VALUES (2,0,0,'1970-01-01',NULL,NULL,'Directory','Y',NULL,NULL,'/','home', NULL, NULL)");
+
+?>
Index: /trunk/filemanager/setup/phpgw_iw.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_iw.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_iw.lang	(revision 2000)
@@ -0,0 +1,115 @@
+%1 already exists as a file	filemanager	iw	%1 ×××š ×§××× ××§×××¥
+application	filemanager	iw	×××©××
+back to file manager	filemanager	iw	××××š ×× ×× ×× ××§××Š××
+cancel editing %1 without saving	filemanager	iw	××× ×¢×š×××ª %1 ××× ××©×××š
+cannot create directory because it begins or ends in a space	filemanager	iw	×× ×××× ×××Š××š ××ª ×××××Š× ×× ×©×× ××ª××× ×× × ×××š ××š×××
+cannot replace %1 because it is a directory	filemanager	iw	×× ×××× ××××××£ ××ª %1 ×× ××× ××××Š×
+command sucessfully run	filemanager	iw	××š×Š×ª× ××ª ××€×§××× ×××Š×××
+comment	filemanager	iw	××¢×š×
+comments cannot contain "%1"	filemanager	iw	××¢×š× ×× ××××× ××××× "%1"
+copied %1 to %2	filemanager	iw	××¢×ª×§×ª× %1 ×× %2
+copy to	filemanager	iw	××¢×ª×§ ××
+copy to:	filemanager	iw	××¢×ª×§ ××:
+could not copy %1 to %2	filemanager	iw	×× ××Š×××ª× ×××¢×ª××§ ××ª %1 ×× %2
+could not copy file because no destination directory is given	filemanager	iw	×× ×××××ª× ×××¢×ª××§ ××ª ××§×××¥ ×× ×× ×Š×××× ××××Š×ª ××¢×
+could not create %1	filemanager	iw	×× ×××××ª× ×××Š××š %1
+could not create directory %1	filemanager	iw	×× ××Š×××ª× ×××Š××š ××××Š× %1
+could not delete %1	filemanager	iw	×× ××Š×××ª× ×××××§ ××ª %1
+could not move %1 to %2	filemanager	iw	×× ××Š×××ª× ×××¢×××š ××ª %1 ×× %2
+could not move file because no destination directory is given	filemanager	iw	×× ×××××ª× ×××¢×××š ××ª ××§×××¥ ×× ×× ×Š×××× ××××Š×ª ××¢×
+could not rename %1 to %2	filemanager	iw	×× ××Š×××ª× ××©× ××ª ××ª ××©× ×©× %1 ×- %2
+could not save %1	filemanager	iw	×× ××Š×××ª× ××©×××š ××ª %1
+create file	filemanager	iw	×Š××š ×§×××¥
+create folder	filemanager	iw	×Š××š ××××ª×
+created	filemanager	iw	× ××Š×š
+created %1	filemanager	iw	× ××Š×š %1
+created %1,%2	filemanager	iw	× ××Š×š %1, %2
+created by	filemanager	iw	× ××Š×š ×¢× ×××
+created directory %1	filemanager	iw	××Š×š×ª× ××××Š× %1
+date	filemanager	iw	×ª××š××
+default number of upload fields to show	filemanager	iw	××××ª ××××××ª ×©× ×©×××ª ××¢×× ×××Š××
+delete	filemanager	iw	×××§
+deleted %1	filemanager	iw	×××§×ª× %1
+directory	filemanager	iw	××××Š×
+directory %1 already exists	filemanager	iw	××××Š× %1 ×§××××ª ×××š
+directory %1 does not exist	filemanager	iw	××××Š× %1 ×× ×§××××ª
+directory names cannot contain "%1"	filemanager	iw	×©× ×©× ××××Š× ×× ××××× ×××××"%1"
+display attributes	filemanager	iw	×ª××× ××ª ×ª×Š×××
+download	filemanager	iw	×××š×
+edit	filemanager	iw	×¢×š××
+edit comments	filemanager	iw	×¢×š×× ××¢×š××ª
+error running command	filemanager	iw	×©×××× ×××š×Š×ª ××€×§×××
+execute	filemanager	iw	××Š×¢
+failed to create directory	filemanager	iw	× ××©××ª× ×××Š××š×ª ×××××Š×
+fake base dir did not exist, egroupware created a new one.	filemanager	iw	××××Š×ª ××¡××¡ ××××× ×× ×××ª× ×§××××ª, eGroupWare ××Š×š ×××©×.
+file	filemanager	iw	×§×××¥
+file %1 already exists. please edit it or delete it first.	filemanager	iw	××§×××¥ %1 ×§××× ×××š. × × ××¢×š×× ×××ª× ×× ×××§ ×××ª× ×§×××.
+file %1 could not be created.	filemanager	iw	×× ××ª×××ª× ×××Š××š ××ª ××§×××¥ %1.
+file name	filemanager	iw	×©× ××§×××¥
+file names cannot contain "%1"	filemanager	iw	×©×××ª ×§××Š×× ×× ×××××× ××××× "%1"
+file names cannot contain \ or /	filemanager	iw	×©×××ª ×§××Š×× ×× ×××××× ××××× \ ×× /
+filemanager	common	iw	×× ×× ××§××Š××
+filemanager preferences	filemanager	iw	×¢×××€××××ª ×©× ×× ×× ××§××Š××
+files	filemanager	iw	×§××Š××
+files in this directory	filemanager	iw	×§××Š×× ×××××Š× ××
+folder	filemanager	iw	××××Š×
+folder up	filemanager	iw	××××Š× ×××¢××
+go home	filemanager	iw	×× ××××ª×
+go to	filemanager	iw	×× ××
+go to %1	filemanager	iw	×× ×-%1
+go to your home directory	filemanager	iw	×× ×× ×¡×€×š××ª ××××ª ×©××
+go to:	filemanager	iw	×× ××:
+go up	filemanager	iw	×× ×××¢××
+home	filemanager	iw	×××ª
+location	filemanager	iw	×××§××
+locked	filemanager	iw	× ×¢××
+mime type	filemanager	iw	×¡×× MIME
+modified	filemanager	iw	×©×× ×
+modified by	filemanager	iw	×©×× × ×¢"×
+move to	filemanager	iw	××¢××š  ××
+move to:	filemanager	iw	××¢××š ××:
+moved %1 to %2	filemanager	iw	××¢××š×ª× %1 ×× %2;
+no files in this directory.	filemanager	iw	××× ×§××Š×× ×××××Š× ××
+no version history for this file/directory	filemanager	iw	××× ×××¡×××š×× ×©× ×××š×¡×××ª ×¢×××š ×§×××¥/××××Š× ××
+operation	filemanager	iw	×€×¢×××
+other settings	filemanager	iw	××××š××ª × ××¡×€××ª
+owner	filemanager	iw	××¢×××
+please select a file to delete.	filemanager	iw	× × ×××××š ×§×××¥ ×××××§
+preview %1	filemanager	iw	×ª×Š××× ××§×××× ×©× %1
+preview of %1	filemanager	iw	×ª×Š××× ××§×××× ×©× %1
+quick jump to	filemanager	iw	×§×××Š× ××××š× ××
+reload	filemanager	iw	××¢× ××××©
+rename	filemanager	iw	×©× × ×©×
+renamed %1 to %2	filemanager	iw	×©×× ×ª× ××ª ×©× %1 ×- %2
+replaced %1	filemanager	iw	××××€×ª× ××ª %1
+save %1	filemanager	iw	×©×××š %1
+save %1, and go back to file listing	filemanager	iw	×©×××š %1, ×××××š ×× ×š×©×××ª ××§××Š××
+save all	filemanager	iw	×©×××š ×××
+save changes	filemanager	iw	×©×××š ×©×× ×××
+saved %1	filemanager	iw	×©××š×ª× %1
+show	filemanager	iw	××Š×
+show ..	filemanager	iw	××Š× ..
+show .files	filemanager	iw	××Š× .×§××Š××
+show command line (experimental. dangerous.)	filemanager	iw	××Š× ×©××š×ª ××€×§××××ª (× ×¡××× ×. ××¡×××)
+show help	filemanager	iw	××Š× ×¢××š×
+size	filemanager	iw	××××
+sort by:	filemanager	iw	×××× ××€×:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	iw	×× ×× ××§××Š×× ××¢×ª×××, ××š××¢ ××Š××š×× ×××× × ××××. × × ××©××× ×××××× ××××.
+total files	filemanager	iw	×¡× ×× ××§××Š××
+unknown mime-type defaults to text/plain when viewing	filemanager	iw	×¡×× MIME ×× ××××š ××Š× ×-text/plain
+unused space	filemanager	iw	××§×× ×€× ××
+up	filemanager	iw	×××¢××
+update	filemanager	iw	×¢×××
+updated comment for %1	filemanager	iw	××¢×š× ××¢×××× ×ª ×¢×××š %1
+upload	filemanager	iw	××¢××
+upload fields	filemanager	iw	×©×××ª ××¢××
+upload files	filemanager	iw	××¢×× ×§××Š××
+use new experimental filemanager?	filemanager	iw	×××©×ª××© ××× ×× ××§××Š×× ×× ×¡××× × ××××©?
+used space	filemanager	iw	××§×× ××©××××©
+users	filemanager	iw	××©×ª×©×××
+version	filemanager	iw	×××š×¡×
+view documents in new window	filemanager	iw	××Š× ××¡×××× ××××× ×××©
+view documents on server (if available)	filemanager	iw	××Š× ××¡×××× ××©×š×ª (×× ××××)
+who	filemanager	iw	××
+you do not have access to %1	filemanager	iw	××× ×× ×××©× ×× %1
+your home dir did not exist, egroupware created a new one.	filemanager	iw	××××Š×ª ××××ª ×©×× ×× ×××ª× ×§××××ª, eGroupWare ××Š×š ×× ×××©×.
Index: /trunk/filemanager/setup/phpgw_zh.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_zh.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_zh.lang	(revision 2000)
@@ -0,0 +1,130 @@
+%1 already exists as a file	filemanager	zh	æä»¶%1å·²å­åš
+application	filemanager	zh	åºçšçšåº
+back to file manager	filemanager	zh	è¿åçœäžæä»¶æ
+cancel editing %1 without saving	filemanager	zh	åæ¶çŒèŸ%1, äžä¿å­
+cannot create directory because it begins or ends in a space	filemanager	zh	æ æ³åå»ºç®åœ, ç®åœååŒå€Žææ«å°ŸäžèœåžŠæç©ºæ Œ
+cannot replace %1 because it is a directory	filemanager	zh	%1æ¯ç®åœ, æ æ³è¢«æ¿æ¢
+command sucessfully run	filemanager	zh	åœä»€æ§è¡æå
+comment	filemanager	zh	æ³šé
+comments cannot contain "%1"	filemanager	zh	æ³šéäžèœå
+å«"%1"
+copied %1 to %2	filemanager	zh	%1å·²å€å¶å°%2
+copy to	filemanager	zh	å€å¶å°
+copy to:	filemanager	zh	å€å¶å°
+could not copy %1 to %2	filemanager	zh	æ æ³å°%1å€å¶å°%2
+could not create %1	filemanager	zh	æ æ³åå»º%1
+could not create directory %1	filemanager	zh	æ æ³åå»ºç®åœ%1
+could not delete %1	filemanager	zh	æ æ³å é€%1
+could not move %1 to %2	filemanager	zh	æ æ³å°%1ç§»åšå°%2
+could not rename %1 to %2	filemanager	zh	æ æ³å°%1éåœåäžº%2
+could not save %1	filemanager	zh	æ æ³ä¿å­%1
+could not copy file because no destination directory is given	filemanager	zh	æ æ³å€å¶æä»¶ïŒå äžºæ²¡æç®æ æä»¶å€¹
+could not move file because no destination directory is given	filemanager	zh	æ æ³ç§»åšæä»¶ïŒå äžºæ²¡æç®æ æä»¶å€¹
+create file	filemanager	zh	åå»ºæä»¶
+create folder	filemanager	zh	åå»ºæä»¶å€¹
+created	filemanager	zh	å·²åå»º
+created %1	filemanager	zh	%1å·²åå»º
+created %1,%2	filemanager	zh	%1,%2å·²åå»º
+created by	filemanager	zh	åå»ºè
+
+created directory %1	filemanager	zh	ç®åœ%1å·²åå»º
+date	filemanager	zh	æ¥æ
+default number of upload fields to show	filemanager	zh	é»è®€äžäŒ åºåæ°
+delete	filemanager	zh	å é€
+deleted %1	filemanager	zh	%1å é€
+directory	filemanager	zh	ç®åœ
+directory %1 already exists	filemanager	zh	ç®åœ%1å·²å­åš
+directory %1 does not exist	filemanager	zh	ç®åœ%1äžå­åš
+directory names cannot contain "%1"	filemanager	zh	ç®åœåäžèœå
+å«"%1"
+display attributes	filemanager	zh	æŸç€ºåªäºæä»¶å±æ§
+download	filemanager	zh	äžèœœ
+edit	filemanager	zh	çŒèŸ
+edit comments	filemanager	zh	çŒèŸæ³šé
+error running command	filemanager	zh	åœä»€æ§è¡åºé
+execute	filemanager	zh	æ§è¡
+failed to create directory	filemanager	zh	åå»ºç®åœå€±èŽ¥
+fake base dir did not exist, egroupware created a new one.	filemanager	zh	åå§æ ¹ç®åœäžå­åšïŒeGroupWareåå»ºäºäžäžªæ°çã
+file	filemanager	zh	æä»¶
+file %1 already exists. please edit it or delete it first.	filemanager	zh	æä»¶%1å·²å­åš, è¯·å
+çŒèŸæå é€å®.
+file %1 could not be created.	filemanager	zh	æä»¶ %1 äžèœåå»º.
+file name	filemanager	zh	æä»¶å
+file names cannot contain "%1"	filemanager	zh	æä»¶åäžèœå
+å«"%1"
+file names cannot contain \ or /	filemanager	zh	æä»¶åäžèœå
+å«\æ/
+files in this directory	filemanager	zh	ç®åœäž­çæä»¶
+filemanager	common	zh	çœäžæä»¶æ
+filemanager preferences	filemanager	zh	éŠéé¡¹
+files	filemanager	zh	æä»¶
+files is this directory	filemanager	zh	æä»¶æ»æ°
+folder	filemanager	zh	æä»¶å€¹
+folder up	filemanager	zh	åäž
+go home	filemanager	zh	è¿åéŠé¡µ
+go to	filemanager	zh	è·³èœ¬å°
+go to %1	filemanager	zh	è·³èœ¬å°%1
+go to your home directory	filemanager	zh	è·³èœ¬å°äž»ç®åœ
+go to:	filemanager	zh	è·³èœ¬å°:
+go up	filemanager	zh	åäž
+home	filemanager	zh	äž»é¡µé¢
+location	filemanager	zh	äœçœ®
+locked	filemanager	zh	å·²éå®
+mime type	filemanager	zh	MIMEç±»å
+modified	filemanager	zh	å·²ä¿®æ¹
+modified by	filemanager	zh	ä¿®æ¹è
+
+move to	filemanager	zh	ç§»åšå°
+move to:	filemanager	zh	ç§»åšå°:
+moved %1 to %2	filemanager	zh	%1å·²ç§»åšå°%2
+no files in this directory.	filemanager	zh	è¯¥ç®åœäžºç©º.
+no version history for this file/directory	filemanager	zh	è¯¥æä»¶/æä»¶å€¹æ çæ¬åå²
+operation	filemanager	zh	æäœ
+other settings	filemanager	zh	å
+¶ä»è®Ÿçœ®
+owner	filemanager	zh	ææè
+
+please select a file to delete.	filemanager	zh	è¯·éæ©åŸ
+å é€æä»¶.
+preferences old	preferences	zh	éŠéé¡¹
+preview %1	filemanager	zh	é¢è§%1
+preview of %1	filemanager	zh	%1çé¢è§
+quick jump to	filemanager	zh	å¿«éåæ¢
+reload	filemanager	zh	éæ°èœœå
+¥
+rename	filemanager	zh	éåœå
+renamed %1 to %2	filemanager	zh	 %1å·²éåœåäžº%2
+replaced %1	filemanager	zh	%1å·²æ¿æ¢
+save %1	filemanager	zh	ä¿å­%1
+save %1, and go back to file listing	filemanager	zh	ä¿å­%1å¹¶è¿åæä»¶åè¡š
+save all	filemanager	zh	å
+šéšä¿å­
+save changes	filemanager	zh	ä¿å­æŽæ¹
+saved %1	filemanager	zh	%1å·²ä¿å­
+show	filemanager	zh	æŸç€º
+show ..	filemanager	zh	æŸç€ºäžçº§ç®åœ
+show .files	filemanager	zh	æŸç€º.æä»¶
+show command line (experimental. dangerous.)	filemanager	zh	æŸç€ºåœä»€è¡(æ¬åèœå°åšæµè¯é¶æ®µ)
+show help	filemanager	zh	æŸç€ºæç€ºä¿¡æ¯
+size	filemanager	zh	å€§å°
+sort by:	filemanager	zh	æåºæ¹åŒ
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	zh	çœäžæä»¶æåç»ç, ä»
+çšäºæµè¯, æ¬¢è¿æ¥åBug.
+total files	filemanager	zh	æææä»¶
+unknown mime-type defaults to text/plain when viewing	filemanager	zh	ä»¥ææ¬æ¹åŒæ¥çæªç¥mimeç±»åçæä»¶
+unused space	filemanager	zh	å¯çšç©ºéŽ
+up	filemanager	zh	äžçº§ç®åœ
+update	filemanager	zh	æŽæ°
+updated comment for %1	filemanager	zh	%1çæ³šéå·²æŽæ°
+upload	filemanager	zh	äžäŒ 
+upload fields	filemanager	zh	äžäŒ åºå
+upload files	filemanager	zh	äžäŒ æä»¶
+use new experimental filemanager?	filemanager	zh	æ¯åŠäœ¿çšçœäžæä»¶æåç»ç?
+used space	filemanager	zh	å·²çšç©ºéŽ
+users	filemanager	zh	çšæ·
+version	filemanager	zh	çæ¬
+view documents in new window	filemanager	zh	æåŒæ°çªå£ä»¥æ¥çææ¡£
+view documents on server (if available)	filemanager	zh	å¯èœçè¯, åšæå¡åšäžæ¥çææ¡£
+who	filemanager	zh	è°
+you do not have access to %1	filemanager	zh	æ æè®¿é®%1
+your home dir did not exist, egroupware created a new one.	filemanager	zh	æšçäžªäººç®åœäžå­åšïŒeGroupWareåå»ºäºäžäžªæ°çã
Index: /trunk/filemanager/setup/phpgw_pt.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_pt.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_pt.lang	(revision 2000)
@@ -0,0 +1,94 @@
+%1 already exists as a file	filemanager	pt	%1 já existe como um arquivo
+application	filemanager	pt	Aplicação
+back to file manager	filemanager	pt	Voltar ao Gerenciador de Arquivos
+cannot create directory because it begins or ends in a space	filemanager	pt	Não é possível criar a pasta porque seu nome inicia ou termina em espaço em branco
+cannot replace %1 because it is a directory	filemanager	pt	Não é possível subtituir %1 porque é uma pasta
+command sucessfully run	filemanager	pt	Comando executado com sucesso
+comment	filemanager	pt	Comentário
+comments cannot contain "%1"	filemanager	pt	Comentários não podem conter "%1"
+copied %1 to %2	filemanager	pt	Copiado %1 para %2
+copy to	filemanager	pt	Copiar Para
+copy to:	filemanager	pt	Copiar para:
+could not copy %1 to %2	filemanager	pt	Não foi possível copiar %1 para %2
+could not create directory %1	filemanager	pt	Não foi possível criar a pasta %1
+could not create %1	filemanager	pt	Não foi possível criar %1
+could not delete %1	filemanager	pt	Não foi possível remover %1
+could not move %1 to %2	filemanager	pt	Não foi possível mover %1 para %2
+could not rename %1 to %2	filemanager	pt	Não foi possível renomear %1 para %2
+could not save %1	filemanager	pt	Não foi possível salvar %1
+create file	filemanager	pt	Criar Arquivo
+create folder	filemanager	pt	Criar Pasta
+created	filemanager	pt	Criado
+created by	filemanager	pt	Criado por
+created directory %1	filemanager	pt	Criada pasta %1
+created %1	filemanager	pt	Criado %1
+date	filemanager	pt	Data
+default number of upload fields to show	filemanager	pt	Padrão para o número de campos de envio de arquivos a exibir
+delete	filemanager	pt	Remover
+deleted %1	filemanager	pt	Removido %1
+directory	filemanager	pt	Pasta
+directory names cannot contain "%1"	filemanager	pt	Nomes de pastas não podem conter "%1"
+directory %1 already exists	filemanager	pt	Pasta %1 já existe
+directory %1 does not exist	filemanager	pt	Pasta %1 não existe
+display attributes	filemanager	pt	Exibir atributos
+download	filemanager	pt	Download
+edit	filemanager	pt	Editar
+edit comments	filemanager	pt	Editar Comentários
+error running command	filemanager	pt	Erro executando comando
+execute	filemanager	pt	Executar
+failed to create directory	filemanager	pt	falhou ao criar pasta
+file	filemanager	pt	Arquivo
+file name	filemanager	pt	Nome do Arquivo
+file names cannot contain "%1"	filemanager	pt	Nomes de arquivos não podem conter "%1"
+file names cannot contain \ or /	filemanager	pt	Nomes de arquivos não podem conter \ ou /
+file %1 already exists. please edit it or delete it first.	filemanager	pt	Arquivo %1 já existe. Por favor edite-o ou remova-o antes.
+file %1 could not be created.	filemanager	pt	Arquivo %1 não pôde ser criado.
+files	filemanager	pt	Arquivos
+folder	filemanager	pt	Pasta
+go to	filemanager	pt	Ir Para
+go to %1	filemanager	pt	Ir para %1
+go to your home directory	filemanager	pt	Ir para sua pasta Home
+go to:	filemanager	pt	Ir para:
+home	filemanager	pt	Home
+locked	filemanager	pt	Travado
+mime type	filemanager	pt	Tipo MIME
+modified	filemanager	pt	Modificado
+modified by	filemanager	pt	Modificado por
+move to	filemanager	pt	Mover Para
+move to:	filemanager	pt	Mover para:
+moved %1 to %2	filemanager	pt	Movido %1 para %2
+no version history for this file/directory	filemanager	pt	Sem histórico de versão para este arquivo/pasta
+operation	filemanager	pt	Operação
+owner	filemanager	pt	Dono
+filemanager preferences	filemanager	pt	Preferências para Gerenciador de Arquivos
+preview of %1	filemanager	pt	Visualizar %1
+preview %1	filemanager	pt	Visualizar %1
+rename	filemanager	pt	Renomear
+renamed %1 to %2	filemanager	pt	Renomeado %1 para %2
+replaced %1	filemanager	pt	Substituído %1
+save all	filemanager	pt	Salvar tudo
+save %1	filemanager	pt	Salvar %1
+saved %1	filemanager	pt	Salvo %1
+show	filemanager	pt	Exibir
+show ..	filemanager	pt	Exibir ..
+show .files	filemanager	pt	Exibir arquivos cujos nomes iniciam por um ponto
+show command line (experimental. dangerous.)	filemanager	pt	Exibir linha de comando (EXPERIMENTAL. PERIGOSO.)
+show help	filemanager	pt	Exibir ajuda
+size	filemanager	pt	Tamanho
+sort by:	filemanager	pt	Ordenar por:
+total files	filemanager	pt	Total de Arquivos
+unknown mime-type defaults to text/plain when viewing	filemanager	pt	Tipos MIME desconhecidos são visualizados como text/plain por padrão
+unused space	filemanager	pt	Espaço Não Usado
+unused space:	filemanager	pt	Espaço Não Usado:
+up	filemanager	pt	Acima
+update	filemanager	pt	Atualizar
+updated comment for %1	filemanager	pt	Comentário atualizado para %1
+upload fields	filemanager	pt	campos de envio de arquivos
+upload files	filemanager	pt	Enviar Arquivos
+used space	filemanager	pt	Espaço Usado
+users	filemanager	pt	Usuários
+version	filemanager	pt	Versão
+view documents in new window	filemanager	pt	Visualizar documentos em uma nova janela
+view documents on server (if available)	filemanager	pt	Visualizar documentos no servidor (se disponível)
+who	filemanager	pt	Quem
+you do not have access to %1	filemanager	pt	Você não tem acesso a %1
Index: /trunk/filemanager/setup/phpgw_pt-br.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_pt-br.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_pt-br.lang	(revision 2000)
@@ -0,0 +1,180 @@
+%1 already exists as a file	filemanager	pt-br	%1 já existe como um arquivo
+application	filemanager	pt-br	Aplicação
+back to file manager	filemanager	pt-br	Voltar ao Gerenciador de Arquivos
+cancel editing %1 without saving	filemanager	pt-br	Cancelar edição %1 sem salvar
+cannot create directory because it begins or ends in a space	filemanager	pt-br	Não é possível criar a pasta porque seu nome inicia ou termina em espaço em branco
+cannot replace %1 because it is a directory	filemanager	pt-br	Não é possível subtituir %1 porque é uma pasta
+command sucessfully run	filemanager	pt-br	Comando executado com sucesso
+comment	filemanager	pt-br	Comentário
+comments cannot contain "%1"	filemanager	pt-br	Comentários não podem conter "%1"
+%1 files copied successfuly	filemanager	pt-br	%1 arquivos foram copiados com sucesso
+File copied successfuly	filemanager	pt-br	O arquivo foi copiado com sucesso
+copy to	filemanager	pt-br	Copiar Para
+copy to:	filemanager	pt-br	Copiar para:
+could not copy %1 files	filemanager	pt-br	Não foi possível copiar %1 arquivos
+could not copy file because no destination directory is given	filemanager	pt-br	Não foi possível copiar o arquivo porque não se definiu um diretório de destino
+could not create %1	filemanager	pt-br	Não foi possível criar %1
+could not create directory %1	filemanager	pt-br	Não foi possível criar a pasta %1
+could not delete %1	filemanager	pt-br	Não foi possível remover %1
+could not move %1 file(s)	filemanager	pt-br	Não foi possível mover %1 arquivo(s)
+Select a folder	filemanager	pt-br	Selecione uma pasta
+could not move file because no destination directory is given	filemanager	pt-br	Não foi possível mover o arquivo porque não se definiu um diretório de destino
+could not rename %1 to %2	filemanager	pt-br	Não foi possível renomear %1 para %2
+loading	filemanager	pt-br	Carregando
+could not save %1	filemanager	pt-br	Não foi possível salvar %1
+create file	filemanager	pt-br	Criar Arquivo
+create folder	filemanager	pt-br	Criar Pasta
+new	filemanager	pt-br	novo
+close	filemanager	pt-br	Fechar
+created	filemanager	pt-br	Criado
+created %1	filemanager	pt-br	Criado %1
+You have no permission to access this file	filemanager	pt-br	Você não tem permissão para acessar este arquivo
+One of the files sent was considered infected	filemanager	pt-bt	Um dos arquivos enviados foi considerado infectado por vírus
+Note: Uploaded is limited to %1MB	filemanager	pt-br	Nota: O tamanho máximo de envio é limitado a %1MB
+This property will change the visibility of all users that have access to this file, continue?	filemanager	pt-br	Esta propriedade altera visibilidade dos usuários que estão compartilhados, deseja continuar?
+Click to change comments	filemanager	pt-br	Clique para alterar comentários
+All files created sucessfuly	filemanager	pt-br	Arquivos foram criados com sucesso
+created by	filemanager	pt-br	Criado por
+Error:	filemanager	pt-br	Erro:
+Are you sure you want to delete	filemanager	pt-br	Você tem certeza que deseja apagar
+Please type the text "%1" to delete	filemanager	pt-br	Por favor, tenha certeza e digite "%1" para apagar
+created directory %1	filemanager	pt-br	Criada pasta %1
+date	filemanager	pt-br	Data
+export	filemanager	pt-br	exportar
+This file is being edited right now by:	filemanager	pt-br	Este arquivo está sendo editado por: 
+portrait	filemanager	pt-br	retrato
+Could not mark as restricted	filemanager	pt-br	Não foi possível marcar como restrito
+%1 marked as restricted	filemanager	pt-br	%1 foi marcado como restrito
+%1 unmarked as restricted	filemanager	pt-br	%1 foi desmarcado como restrito
+Mark as restricted	filemanager	pt-br	Marcar como restrito
+Unmark as restricted	filemanager	pt-br	Desmarcar como restrito
+landscape	filemanager	pt-br	paisagem
+letter	filemanager	pt-br	carta
+Disposition of pdf output	filemanager	pt-br	Disposição do texto no pdf
+Type of pdf paper	filemanager	pt-br	Tipo de papel ao exportar
+default number of upload fields to show	filemanager	pt-br	Padrão para o número de campos de envio de arquivos a exibir
+delete	filemanager	pt-br	Remover
+deleted %1	filemanager	pt-br	Removido %1
+directory	filemanager	pt-br	Pasta
+directory %1 already exists	filemanager	pt-br	Pasta %1 já existe
+directory %1 does not exist	filemanager	pt-br	Pasta %1 não existe
+directory names cannot contain "%1"	filemanager	pt-br	Nomes de pastas não podem conter "%1"
+display attributes	filemanager	pt-br	Exibir atributos
+download	filemanager	pt-br	Download
+edit	filemanager	pt-br	Editar
+edit comments	filemanager	pt-br	Editar Comentários
+error running command	filemanager	pt-br	Erro executando comando
+execute	filemanager	pt-br	Executar
+failed to create directory	filemanager	pt-br	falhou ao criar pasta
+fake base dir did not exist, egroupware created a new one.	filemanager	pt-br	Diretório Base não existia, eGroupWare criou um novo.
+file	filemanager	pt-br	Arquivo
+file %1 already exists. please edit it or delete it first.	filemanager	pt-br	Arquivo %1 já existe. Por favor edite-o ou remova-o antes.
+file %1 could not be created.	filemanager	pt-br	Arquivo %1 não pôde ser criado.
+file name	filemanager	pt-br	Nome do Arquivo
+file names cannot contain "%1"	filemanager	pt-br	Nomes de arquivos não podem conter "%1"
+file names cannot contain \ or /	filemanager	pt-br	Nomes de arquivos não podem conter \ ou /
+filemanager	common	pt-br	Gerenciador de Arquivos
+filemanager preferences	filemanager	pt-br	Preferências para Gerenciador de Arquivos
+files	filemanager	pt-br	Arquivos
+files in this directory	filemanager	pt-br	Arquivos nesse diretório
+folder	filemanager	pt-br	Pasta
+folder up	filemanager	pt-br	Diretório Acima
+go home	filemanager	pt-br	ir para página principal
+go to	filemanager	pt-br	Ir Para
+go to %1	filemanager	pt-br	Ir para %1
+go to your home directory	filemanager	pt-br	Ir para sua pasta Home
+go to:	filemanager	pt-br	Ir para:
+go up	filemanager	pt-br	Subir
+home	filemanager	pt-br	Início
+location	filemanager	pt-br	Local
+locked	filemanager	pt-br	Travado
+mime type	filemanager	pt-br	Tipo MIME
+modified	filemanager	pt-br	Modificado
+modified by	filemanager	pt-br	Modificado por
+move to	filemanager	pt-br	Mover Para
+move to:	filemanager	pt-br	Mover para:
+%1 files moved successfuly	filemanager	pt-br	%1 arquivos movidos com sucesso
+File moved successfuly	filemanager	pt-br	Arquivo movido com sucesso
+Archive	filemanager	pt-br	Arquivar
+Unarchive	filemanager	pt-br	Desarquivar
+New Folder	filemanager	pt-br	Nova pasta
+Remove Folder	filemanager	pt-br	Apagar pasta
+Do you really want to remove folder: %1?	filemanager	pt-br	Você realmente deseja apagar a pasta: %1?
+Your operation was successfully executed	filemanager	pt-br	Sua operação foi executada com sucesso
+Wrong password	filemanager	pt-br	Senha errada
+It was not possible to execute it	filemanager	pt-br	Pelo menos um erro houve na operação
+Please, type archive password or leave it empty if it is not encrypted	filemanager	pt-br	Por favor digite a senha, ou deixe em branco caso o arquivo não seja protegido por senha
+no files in this directory.	filemanager	pt-br	Nenhum arquivo nesse diretório
+no version history for this file/directory	filemanager	pt-br	Sem histórico de versão para este arquivo/pasta
+operation	filemanager	pt-br	Operação
+other settings	filemanager	pt-br	Outras configurações
+owner	filemanager	pt-br	Dono
+please select a file to delete.	filemanager	pt-br	Por favor selecione um arquivo para excluir/
+Please select a file	filemanager	pt-br	Por favor selecione um arquivo
+preview %1	filemanager	pt-br	Visualizar %1
+preview of %1	filemanager	pt-br	Visualizar %1
+quick jump to	filemanager	pt-br	Atalho para:
+reload	filemanager	pt-br	Recarregar
+rename	filemanager	pt-br	Renomear
+Reconstruct	filemanager	pt-br	Reconstruir
+renamed %1 to %2	filemanager	pt-br	Renomeado %1 para %2
+created new %1	filemanager	pt-br	Criado novo arquivo %1
+save %1	filemanager	pt-br	Salvar %1
+save %1, and go back to file listing	filemanager	pt-br	Salvar %1, e voltar para listagem dos arquivos
+save all	filemanager	pt-br	Salvar tudo
+save changes	filemanager	pt-br	Salvar modificações
+saved %1	filemanager	pt-br	Salvo %1
+show	filemanager	pt-br	Exibir
+show ..	filemanager	pt-br	Exibir ..
+show .files	filemanager	pt-br	Exibir arquivos cujos nomes iniciam por um ponto
+show command line (experimental. dangerous.)	filemanager	pt-br	Exibir linha de comando (EXPERIMENTAL. PERIGOSO.)
+show help	filemanager	pt-br	Exibir ajuda
+size	filemanager	pt-br	Tamanho
+sort by:	filemanager	pt-br	Ordenar por:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	pt-br	Futuro gerenciador de arquivos, agora para PROPÓSITOS DE TESTES APENAS, por favor envie relatórios de erro.
+total files	filemanager	pt-br	Total de Arquivos
+unknown mime-type defaults to text/plain when viewing	filemanager	pt-br	Tipos MIME desconhecidos são visualizados como text/plain por padrão
+unused space	filemanager	pt-br	Espaço Não Usado
+up	filemanager	pt-br	Acima
+update	filemanager	pt-br	Atualizar
+updated comment for %1	filemanager	pt-br	Comentário atualizado para %1
+upload	filemanager	pt-br	Envio
+upload fields	filemanager	pt-br	campos de envio de arquivos
+upload files	filemanager	pt-br	Enviar Arquivos
+use new experimental filemanager?	filemanager	pt-br	Usar o novo Gerenciador de Arquivos experimental?
+used space	filemanager	pt-br	Espaço Usado
+users	filemanager	pt-br	Usuários
+version	filemanager	pt-br	Versão
+New...	filemanager	pt-br	Novo...
+Tools	filemanager	pt-br	Ferramentas
+Preferences	filemanager	pt-br	Preferências
+Search	filemanager	pt-br	Pesquisar
+View	filemanger	pt-br	Visualização
+View as list	filemanager	pt-br	Ver como lista
+View as icons	filemanager	pt-br	Ver como ícones
+Drag and drop to move	filemanager	pt-br	Arraste e solte para mover
+Type	filemanager	pt-br	Tipo
+Cancel	filemanager	pt-br	Cancelar
+Save	filemanager	pt-br	Salvar
+My folder	filemanager	pt-br	Minha pasta
+Edit folders	filemanager	pt-br	Editar pastas
+Share folders	filemanager	pt-br	Compartilhar pastas
+Empty file	filemanager	pt-br	Arquivo vazio
+File from model	filemanager	pt-br	Arquivo de modelo
+Article	filemanager	pt-br	Artigo
+Todo	filemanager	pt-br	Tarefas
+Slide	filemanager	pt-br	Apresentação
+Cards	filemanager	pt-br	Cartões
+Resume	filemanager	pt-br	Currículo
+Impossible to edit this file	filemanager	pt-br	Impossível editar o arquivo selecionado
+it was not possible to send your file	filemanager	pt-br	Não foi possível enviar seu arquivo
+Please, type a strong password (suggestion: at least 8 characters, letters and numbers) or leave it empty to archive only	filemanager	pt-br	Por favor, digite uma senha segura (sugestão: pelo menos 8 caracteres com letras e números) ou deixe o campo vazio para somente arquivar
+Please, retype your password	filemanager	pt-br	Por favor, redigite sua senha
+passwords are differents	filemanager	pt-br	as senhas diferem
+Enter with the name of new file/directory	filemanager	pt-br	Insira o nome do novo arquivo/diretório
+File extension forbidden or invalid file	filemanager	pt-br	Formato de arquivo inválido
+view documents in new window	filemanager	pt-br	Visualizar documentos em uma nova janela
+view documents on server (if available)	filemanager	pt-br	Visualizar documentos no servidor (se disponível)
+who	filemanager	pt-br	Quem
+you do not have access to %1	filemanager	pt-br	Você não tem acesso a %1
+your home dir did not exist, created a new one.	filemanager	pt-br	Seu Diretório Home não existia, foi criado um novo.
Index: /trunk/filemanager/setup/phpgw_da.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_da.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_da.lang	(revision 2000)
@@ -0,0 +1,116 @@
+%1 already exists as a file	filemanager	da	%1 eksistere allerede som fil
+application	filemanager	da	Applikation
+back to file manager	filemanager	da	Tilbage til fil håndteringen
+cancel editing %1 without saving	filemanager	da	annullere redigéring af %1 uden at gemme
+cannot create directory because it begins or ends in a space	filemanager	da	Kan ikke oprette biblioteket fordi den begynder eller slutter med et mellemrum
+cannot replace %1 because it is a directory	filemanager	da	Kan ikke erstatte %1 da det er et biblioteket
+command sucessfully run	filemanager	da	Kommandoen afsluttede med succes
+comment	filemanager	da	Kommentar
+comments cannot contain "%1"	filemanager	da	Kommentaren kan ikke indeholde "%1"
+copied %1 to %2	filemanager	da	Kopieret %1 til %2
+copy to	filemanager	da	Kopier til
+copy to:	filemanager	da	Kopier til:
+could not copy %1 to %2	filemanager	da	Kunne ikke kopiere %1 til %2
+could not copy file because no destination directory is given	filemanager	da	Kunne ikke kopiere fil fordi ingen destniations bibliotek er angivet
+could not create %1	filemanager	da	Kunne ikke oprette %1
+could not create directory %1	filemanager	da	Kunne ikke oprette biblioteket %1
+could not delete %1	filemanager	da	Kunne ikke slette %1
+could not move %1 to %2	filemanager	da	Kunne ikke flytte %1 til %2
+could not move file because no destination directory is given	filemanager	da	Kunne ikke flytte fil fordi ingen destniations bibliotek er angivet
+could not rename %1 to %2	filemanager	da	Kunne ikke omdøbe %1 til %2
+could not save %1	filemanager	da	Kunne ikke gemme %1
+create file	filemanager	da	Opret fil
+create folder	filemanager	da	Opret bibliotek
+created	filemanager	da	Oprettet
+created %1	filemanager	da	Oprettede %1
+created %1,%2	filemanager	da	Oprettede %1, %2
+created by	filemanager	da	Oprettet af
+created directory %1	filemanager	da	Oprettede biblioteket %1
+date	filemanager	da	Dato
+default number of upload fields to show	filemanager	da	Antal af upload felter at vise som standart
+delete	filemanager	da	Slet
+deleted %1	filemanager	da	Slettede %1
+directory	filemanager	da	Bibliotek
+directory %1 already exists	filemanager	da	Biblioteket %1 findes eksistere allerede
+directory %1 does not exist	filemanager	da	Biblioteket %1 eksistere ikke
+directory names cannot contain "%1"	filemanager	da	Biblioteknavne må ikke indeholde "%1"
+display attributes	filemanager	da	Vis attributter
+download	filemanager	da	Hent
+edit	filemanager	da	Redigér
+edit comments	filemanager	da	Redigér kommentar
+error running command	filemanager	da	Kommandoen afsluttede med fejl
+execute	filemanager	da	Eksekvere
+failed to create directory	filemanager	da	Kunne ikke oprette biblioteket
+fake base dir did not exist, egroupware created a new one.	filemanager	da	Fake Base Dir fandtes ikke, eGroupWare oprettede en ny.
+file	filemanager	da	Fil
+file %1 already exists. please edit it or delete it first.	filemanager	da	Filen %1 eksistere allerede. Ændre eller slet filen først
+file %1 could not be created.	filemanager	da	Filen %1 kunne ikke oprettes.
+file name	filemanager	da	Filnavn
+file names cannot contain  or /	filemanager	da	Filnavne kan ikke indeholde \ eller /
+file names cannot contain "%1"	filemanager	da	Filnavne kan ikke indeholde "%1"
+file names cannot contain \ or /	filemanager	da	Filnavne kan ikke indeholde / eller \
+filemanager	common	da	Filhåndtering
+filemanager preferences	filemanager	da	Filhåndtering
+files	filemanager	da	Filer
+files in this directory	filemanager	da	Filer i dette bibliotek
+folder	filemanager	da	Bibliotek
+folder up	filemanager	da	Bibliotek op
+go home	filemanager	da	gå hjem
+go to	filemanager	da	Gå til
+go to %1	filemanager	da	Gå til %1
+go to your home directory	filemanager	da	Gå til hjemmebibliotek
+go to:	filemanager	da	Gå til:
+go up	filemanager	da	gå op
+home	filemanager	da	Hjem
+location	filemanager	da	Sti
+locked	filemanager	da	Låst
+mime type	filemanager	da	MIME type
+modified	filemanager	da	Ændret
+modified by	filemanager	da	Ændret af
+move to	filemanager	da	Flyt til
+move to:	filemanager	da	Flyt til:
+moved %1 to %2	filemanager	da	Flyttede %1 til %2
+no files in this directory.	filemanager	da	Ingen filer i dette bibliotek.
+no version history for this file/directory	filemanager	da	Ingen versions historie for denne fil/bibliotek
+operation	filemanager	da	Operation
+other settings	filemanager	da	Andre indstillinger
+owner	filemanager	da	Ejer
+please select a file to delete.	filemanager	da	Vælg venligst filen som skal slettes.
+preview %1	filemanager	da	Snig kik %1
+preview of %1	filemanager	da	Snig kik af %1
+quick jump to	filemanager	da	Hop til
+reload	filemanager	da	opdater
+rename	filemanager	da	Omdøb
+renamed %1 to %2	filemanager	da	Omdøbte %1 til %2
+replaced %1	filemanager	da	%1 erstattet
+save %1	filemanager	da	Gem %1
+save %1, and go back to file listing	filemanager	da	Gem %1, og gå tilbage til fil visning
+save all	filemanager	da	Gem alle
+save changes	filemanager	da	Gem ændringer
+saved %1	filemanager	da	%1 gemt
+show	filemanager	da	Vis
+show ..	filemanager	da	Vis ..
+show .files	filemanager	da	Vis .filer
+show command line (experimental. dangerous.)	filemanager	da	Vis kommando prompt (EKSPERIMENTAL & FARLIG)
+show help	filemanager	da	Vis hjælp
+size	filemanager	da	Størrelse
+sort by:	filemanager	da	Sorter efter:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	da	Fremtidens Filhåndtering, kun til eksperimenterende brug, send venligst bugreports.
+total files	filemanager	da	Antal filer
+unknown mime-type defaults to text/plain when viewing	filemanager	da	Hvis ukendt MIME type, vis standart som alm/tekst
+unused space	filemanager	da	Ubrugt plads
+up	filemanager	da	Op
+update	filemanager	da	Opdater
+updated comment for %1	filemanager	da	Opdaterede %1 kommentaren
+upload	filemanager	da	Upload
+upload fields	filemanager	da	upload felter
+upload files	filemanager	da	Upload filer
+use new experimental filemanager?	filemanager	da	Brug ny eksperimenterende Filehåndtering?
+used space	filemanager	da	Brugt plads
+users	filemanager	da	Brugere
+version	filemanager	da	Version
+view documents in new window	filemanager	da	Se dokumenter i nyt vindue
+view documents on server (if available)	filemanager	da	Vi dokumenter på server (hvis tilgængelig)
+who	filemanager	da	Hvem
+you do not have access to %1	filemanager	da	Du har ikke adgang til %1
+your home dir did not exist, egroupware created a new one.	filemanager	da	Dit hjemme bibliotek fandtes ikke, eGroupWare har oprette en ny til dig.
Index: /trunk/filemanager/setup/phpgw_ru.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_ru.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_ru.lang	(revision 2000)
@@ -0,0 +1,49 @@
+application	filemanager	ru	ðÒÉÌÏÖÅÎÉÅ
+comment	filemanager	ru	ëÏÍÍÅÎÔÁÒÉÊ
+copy to	filemanager	ru	ëÏÐÉÒÏ×ÁÔØ ÷
+copy to:	filemanager	ru	ëÏÐÉÒÏ×ÁÔØ ×:
+create file	filemanager	ru	óÏÚÄÁÔØ ÆÁÊÌ
+create folder	filemanager	ru	óÏÚÄÁÔØ ÐÁÐËÕ
+date	filemanager	ru	äÁÔÁ
+delete	filemanager	ru	õÄÁÌÉÔØ
+display attributes	filemanager	ru	ïÔÏÂÒÁÖÁÅÍÙÅ ÁÔÒÉÂÕÔÙ
+download	filemanager	ru	óËÁÞÁÔØ
+edit	filemanager	ru	òÅÄÁËÔÉÒÏ×ÁÔØ
+edit comments	filemanager	ru	òÅÄÁËÔÉÒÏ×ÁÔØ ËÏÍÍÅÎÔÁÒÉÉ
+file	filemanager	ru	æÁÊÌ
+file name	filemanager	ru	éÍÑ æÁÊÌÁ
+filemanager	common	ru	íÅÎÅÄÖÅÒ æÁÊÌÏ×
+filemanager preferences	filemanager	ru	îÁÓÔÒÏÊËÉ íÅÎÅÄÖÅÒÁ æÁÊÌÏ×
+files	filemanager	ru	æÁÊÌÙ
+files in this directory	filemanager	ru	æÁÊÌÙ × ÄÁÎÎÏÊ ÄÉÒÅËÔÏÒÉÉ
+folder	filemanager	ru	ðÁÐËÁ
+folder up	filemanager	ru	îÁ ÕÒÏ×ÅÎØ ××ÅÒÈ
+go home	filemanager	ru	× ÄÏÍÁÛÎÉÊ ËÁÔÁÌÏÇ
+go up	filemanager	ru	××ÅÒÈ
+home	filemanager	ru	äÏÍÁÛÎÉÊ ËÁÔÁÌÏÇ
+location	filemanager	ru	òÁÓÐÏÌÏÖÅÎÉÅ
+mime type	filemanager	ru	MIME ôÉÐ
+move to	filemanager	ru	ðÅÒÅÍÅÓÔÉÔØ ÷
+move to:	filemanager	ru	ðÅÒÅÍÅÓÔÉÔØ ×:
+no files in this directory.	filemanager	ru	÷ ÜÔÏÊ ÄÉÒÅËÔÏÒÉÉ ÎÅÔ ÆÁÊÌÏ×.
+other settings	filemanager	ru	äÒÕÇÉÅ îÁÓÔÒÏÊËÉ
+owner	filemanager	ru	÷ÌÁÄÅÌÅÃ
+quick jump to	filemanager	ru	âÙÓÔÒÙÊ ÐÅÒÅÈÏÄ
+reload	filemanager	ru	ÏÂÎÏ×ÉÔØ
+rename	filemanager	ru	ðÅÒÅÉÍÅÎÏ×ÁÔØ
+save changes	filemanager	ru	óÏÈÒÁÎÉÔØ ÉÚÍÅÎÅÎÉÑ
+show ..	filemanager	ru	ðÏËÁÚÙ×ÁÔØ ..
+size	filemanager	ru	òÁÚÍÅÒ
+sort by:	filemanager	ru	óÏÒÔÉÒÏ×ÁÔØ ÐÏ:
+total files	filemanager	ru	÷ÓÅÇÏ ÆÁÊÌÏ×
+update	filemanager	ru	ïÂÎÏ×ÉÔØ
+upload	filemanager	ru	úÁÇÒÕÚÉÔØ
+upload fields	filemanager	ru	ÐÏÌÑ  ÚÁÇÒÕÚËÉ
+upload files	filemanager	ru	úÁÇÒÕÚÉÔØ ÆÁÊÌÙ
+used space	filemanager	ru	íÅÓÔÏ ÎÁ ÄÉÓËÅ
+users	filemanager	ru	ðÏÌØÚÏ×ÁÔÅÌÉ
+version	filemanager	ru	÷ÅÒÓÉÑ
+view documents in new window	filemanager	ru	ïÔÏÂÒÁÖÁÔØ ÄÏËÕÍÅÎÔ × ÎÏ×ÏÍ ÏËÎÅ
+view documents on server (if available)	filemanager	ru	ðÒÏÓÍÁÔÒÉ×ÁÔØ ÄÏËÕÍÅÎÔ ÎÁ ÓÅÒ×ÅÒÅ (ÅÓÌÉ ×ÏÚÍÏÖÎÏ)
+you do not have access to %1	filemanager	ru	õ ×ÁÓ ÎÅÔ ÐÒÁ× ÄÏÓÔÕÐÁ Ë %1
+your home dir did not exist, egroupware created a new one.	filemanager	ru	÷ÁÛÁ ÄÏÍÁÛÎÑÑ ÄÉÒÅËÔÏÒÉÑ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ, eGroupWare ÓÏÚÄÁÓÔ ÎÏ×ÕÀ.
Index: /trunk/filemanager/setup/phpgw_es-ca.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_es-ca.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_es-ca.lang	(revision 2000)
@@ -0,0 +1,111 @@
+%1 already exists as a file	filemanager	es-ca	%1 ja existeix com a arxiu
+application	filemanager	es-ca	Aplicació
+back to file manager	filemanager	es-ca	Tornar a l'Administrador d'Arxius
+cancel editing %1 without saving	filemanager	es-ca	Cancelar la edición de %1 sin guardar
+cannot create directory because it begins or ends in a space	filemanager	es-ca	No es pot crear el directori perqué comença o acaba amb un espai
+cannot replace %1 because it is a directory	filemanager	es-ca	No es pot reemplaçar %1 perqué és un directori
+command sucessfully run	filemanager	es-ca	Ordre executada correctament
+comment	filemanager	es-ca	Comentari
+comments cannot contain "%1"	filemanager	es-ca	Els comentaris no poden tenir "%1"
+copied %1 to %2	filemanager	es-ca	Copiat %1 a %2
+copy to	filemanager	es-ca	Copiar A
+copy to:	filemanager	es-ca	Copiar a:
+could not copy %1 to %2	filemanager	es-ca	No es pot copiar %1 a %2
+could not create %1	filemanager	es-ca	No es pot crear %1
+could not create directory %1	filemanager	es-ca	No es pot crear el directori %1
+could not delete %1	filemanager	es-ca	No es pot esborrar %1
+could not move %1 to %2	filemanager	es-ca	No es pot moure %1 a %2
+could not rename %1 to %2	filemanager	es-ca	No es pot reanomenar %1 a %2
+could not save %1	filemanager	es-ca	No es pot desar %1
+create file	filemanager	es-ca	Crear arxiu
+create folder	filemanager	es-ca	Crear carpeta
+created	filemanager	es-ca	Creat
+created %1	filemanager	es-ca	Creat %1
+created %1,%2	filemanager	es-ca	Se ha creado %1,%2
+created by	filemanager	es-ca	Creat per
+created directory %1	filemanager	es-ca	Directori %1 creat
+date	filemanager	es-ca	Data
+default number of upload fields to show	filemanager	es-ca	Nombre de camps a mostrar per defecte
+delete	filemanager	es-ca	Esborrar
+deleted %1	filemanager	es-ca	%1 esborrat
+directory	filemanager	es-ca	Directori
+directory %1 already exists	filemanager	es-ca	El directori %1 ja existeix
+directory %1 does not exist	filemanager	es-ca	El directori %1 no existeix
+directory names cannot contain "%1"	filemanager	es-ca	Els noms de directori no poden tenir "%1"
+display attributes	filemanager	es-ca	Mostrar atributs
+download	filemanager	es-ca	Descarregar
+edit	filemanager	es-ca	Editar
+edit comments	filemanager	es-ca	Editar comentaris
+error running command	filemanager	es-ca	Error al executar l'ordre
+execute	filemanager	es-ca	Executar
+failed to create directory	filemanager	es-ca	error al crear el directori
+file	filemanager	es-ca	Arxiu
+file %1 already exists. please edit it or delete it first.	filemanager	es-ca	L'arxiu %1 ja existeix. Si us plau, editeu-lo o esborreu-lo abans.
+file %1 could not be created.	filemanager	es-ca	No es pot crear l'arxiu %1.
+file name	filemanager	es-ca	Nom de l'arxiu
+file names cannot contain  or /	filemanager	es-ca	Los nombres de fichero no pueden contener  o /
+file names cannot contain "%1"	filemanager	es-ca	Els noms d'arxiu no poden tenir "%1"
+file names cannot contain \ or /	filemanager	es-ca	Los nombres de fichero no pueden contener  o /
+filemanager	common	es-ca	Administrador d'Arxius
+filemanager preferences	filemanager	es-ca	Preferències de l'Administrador d'Arxius
+files	filemanager	es-ca	Arxius
+files is this directory	filemanager	es-ca	Ficheros en este directorio
+folder	filemanager	es-ca	Carpeta
+folder up	filemanager	es-ca	Subir una carpeta
+go home	filemanager	es-ca	ir al inicio
+go to	filemanager	es-ca	Anar A
+go to %1	filemanager	es-ca	Anar a %1
+go to your home directory	filemanager	es-ca	Anar al directori personal
+go to:	filemanager	es-ca	Anar a:
+go up	filemanager	es-ca	subir
+home	filemanager	es-ca	Inici
+location	filemanager	es-ca	Ubicación
+locked	filemanager	es-ca	Bloquejat
+mime type	filemanager	es-ca	Tipus MIME
+modified	filemanager	es-ca	Modificat
+modified by	filemanager	es-ca	Modificat per
+move to	filemanager	es-ca	Moure A
+move to:	filemanager	es-ca	Moure a:
+moved %1 to %2	filemanager	es-ca	S'ha mogut %1 a %2
+no files in this directory.	filemanager	es-ca	No hay ficheros en este directorio
+no version history for this file/directory	filemanager	es-ca	No hi ha historial de versió per aquest arxiu o directori
+operation	filemanager	es-ca	Operació
+owner	filemanager	es-ca	Propietari
+please select a file to delete.	filemanager	es-ca	Por favor, seleccione un fichero para borrar
+preferences old	preferences	es-ca	Preferencias antiguas
+preview %1	filemanager	es-ca	Vista prévia de %1
+preview of %1	filemanager	es-ca	Vista prévia de %1
+reload	filemanager	es-ca	recargar
+rename	filemanager	es-ca	Reanomenar
+renamed %1 to %2	filemanager	es-ca	S'ha reanomenat %1 a %2
+replaced %1	filemanager	es-ca	Reemplaçat %1
+save %1	filemanager	es-ca	Desar %1
+save %1, and go back to file listing	filemanager	es-ca	Guardar %1, y volver al listado de ficheros
+save all	filemanager	es-ca	Desar tot
+save changes	filemanager	es-ca	Guardar cambios
+saved %1	filemanager	es-ca	Desat %1
+show	filemanager	es-ca	Mostrar
+show ..	filemanager	es-ca	Mostrar ..
+show .files	filemanager	es-ca	Mostrar arxius ocults
+show command line (experimental. dangerous.)	filemanager	es-ca	Mostrar línia d'ordres (EXPERIMENTAL. PERILLÓS.)
+show help	filemanager	es-ca	Mostrar l'ajuda
+size	filemanager	es-ca	Tamany
+sort by:	filemanager	es-ca	Ordenar per:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	es-ca	El Administrador de archivos futuro, SOLO PARA PRUEBAS. Por favor, informe de los fallos.
+total files	filemanager	es-ca	Total arxius
+unknown mime-type defaults to text/plain when viewing	filemanager	es-ca	Els tipus MIME desconeguts es mostren per defecte com a text/plain
+unused space	filemanager	es-ca	Espai lliure
+up	filemanager	es-ca	Adalt
+update	filemanager	es-ca	Actualitzar
+updated comment for %1	filemanager	es-ca	Comentari actualitzat per %1
+upload	filemanager	es-ca	Copiar a servidor
+upload fields	filemanager	es-ca	Pujar camps
+upload files	filemanager	es-ca	Pujar arxius
+use new experimental filemanager?	filemanager	es-ca	¿Usar el nuevo Administrador de archivos (experimental)?
+used space	filemanager	es-ca	Espai usat
+users	filemanager	es-ca	Usuaris
+version	filemanager	es-ca	Versió
+view documents in new window	filemanager	es-ca	Veure documents en una nova finestra
+view documents on server (if available)	filemanager	es-ca	Veure documents al servidor (si està disponible)
+who	filemanager	es-ca	Qui
+you do not have access to %1	filemanager	es-ca	No teniu accés a %1
Index: /trunk/filemanager/setup/phpgw_de.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_de.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_de.lang	(revision 2000)
@@ -0,0 +1,113 @@
+%1 already exists as a file	filemanager	de	Es gibt bereits eine Datei %1
+application	filemanager	de	Anwendung
+back to file manager	filemanager	de	Zurück zur Dateiverwaltung
+cancel editing %1 without saving	filemanager	de	Bearbeiten abbrechen %1 ohne zu speichern
+cannot create directory because it begins or ends in a space	filemanager	de	Kann Verzeichnis nicht anlegen, da der Name mit einem Leerzeichen endet
+cannot replace %1 because it is a directory	filemanager	de	Kann %1 nicht ersetzen, da es ein Verzeichnis ist
+command sucessfully run	filemanager	de	Kommando erfolgreich ausgeführt
+comment	filemanager	de	Kommentar
+comments cannot contain "%1"	filemanager	de	Kommentare dürfen kein "%1" enthalten
+copied %1 to %2	filemanager	de	%1 nach %2 kopiert
+copy to	filemanager	de	Kopieren nach
+copy to:	filemanager	de	Kopieren nach:
+could not copy %1 to %2	filemanager	de	Konnte %1 nicht nach %2 kopieren
+could not create %1	filemanager	de	Konnte %1 nicht anlegen
+could not create directory %1	filemanager	de	Konnte Verzeichnis %1 nicht anlegen
+could not delete %1	filemanager	de	Konnte %1 nicht löschen
+could not move %1 to %2	filemanager	de	Konnte %1 nicht nach %2 verschieben
+could not rename %1 to %2	filemanager	de	Konnte %1 nicht nach %2 umbenennen
+could not save %1	filemanager	de	Konnte %1 nicht speichern
+create file	filemanager	de	Neue Datei
+create folder	filemanager	de	Neues Verzeichnis
+created	filemanager	de	Erstellt
+created %1	filemanager	de	%1 erstellt
+created %1,%2	filemanager	de	%1,%2 erstellt
+created by	filemanager	de	Erstellt von
+created directory %1	filemanager	de	Verzeichnis %1 erstellt
+date	filemanager	de	Datum
+default number of upload fields to show	filemanager	de	Vorgabe für Anzahl Felder zum Hochladen
+delete	filemanager	de	Löschen
+deleted %1	filemanager	de	%1 gelöscht
+directory	filemanager	de	Verzeichnis
+directory %1 already exists	filemanager	de	Verzeichnis %1 existiert bereits
+directory %1 does not exist	filemanager	de	Verzeichnis %1 existiert nicht
+directory names cannot contain "%1"	filemanager	de	Verzeichnisnamen dürfen kein "%1" enthalten
+display attributes	filemanager	de	Anzeigeattribute
+download	filemanager	de	Herunterladen
+edit	filemanager	de	Bearbeiten
+edit comments	filemanager	de	Kommentare bearbeiten
+error running command	filemanager	de	Fehler beim Ausführen des Kommandos
+execute	filemanager	de	Ausführen
+failed to create directory	filemanager	de	Verzeichnis konnte nicht erstellt werden
+file	filemanager	de	Datei
+file %1 already exists. please edit it or delete it first.	filemanager	de	Datei %1 existiert bereits. Bitte zuerst bearbeiten oder löschen.
+file %1 could not be created.	filemanager	de	Datei %1 konnte nicht erstellt werden.
+file name	filemanager	de	Dateiname
+file names cannot contain "%1"	filemanager	de	Dateinamen dürfen kein "%1" enthalten
+file names cannot contain \ or /	filemanager	de	Dateinamen dürfen kein \ oder / enthalten
+filemanager	common	de	Dateiverwaltung
+filemanager preferences	filemanager	de	Dateiverwaltungs-Einstellungen
+files	filemanager	de	Dateien
+files in this directory	filemanager	de	Dateien in diesem Verzeichnis
+files is this directory	filemanager	de	Dateien in diesem Verzeichnis
+folder	filemanager	de	Verzeichnisse
+folder up	filemanager	de	Ein Verzeichnis nach oben
+go home	filemanager	de	Zum Heimverzeichnis wechseln
+go to	filemanager	de	Gehe zu
+go to %1	filemanager	de	Gehe zu %1
+go to your home directory	filemanager	de	Zu Ihrem Heimverzeichnis wechseln
+go to:	filemanager	de	Gehe zu:
+go up	filemanager	de	einen Ordner nach oben
+home	filemanager	de	Home
+location	filemanager	de	Pfad
+locked	filemanager	de	Gesperrt
+mime type	filemanager	de	MIME-Typ
+modified	filemanager	de	Verändert
+modified by	filemanager	de	Verändert von
+move to	filemanager	de	Verschieben nach
+move to:	filemanager	de	Verschieben nach:
+moved %1 to %2	filemanager	de	%1 nach %2 verschoben
+no files in this directory.	filemanager	de	Keine Dateien in diesem Verzeichnis vorhanden
+no version history for this file/directory	filemanager	de	Keine Versionshistorie für dies Datei / Verzeichnis
+operation	filemanager	de	Operation
+other settings	filemanager	de	Weitere Einstellungen
+owner	filemanager	de	Eigentümer
+please select a file to delete.	filemanager	de	Bitte wählen Sie die Datei aus welche Sie löschen möchten
+preferences old	preferences	de	Alte Einstellungen
+preview %1	filemanager	de	Vorschau %1
+preview of %1	filemanager	de	Vorschau von %1
+quick jump to	filemanager	de	Sprung zu
+reload	filemanager	de	aktualisieren
+rename	filemanager	de	Umbenennen
+renamed %1 to %2	filemanager	de	%1 nach %2 umbenannt
+replaced %1	filemanager	de	%1 ersetzt
+save %1	filemanager	de	%1 speichern
+save %1, and go back to file listing	filemanager	de	%1 speichern und zurück zur Übersicht wechseln
+save all	filemanager	de	Alles speichern
+save changes	filemanager	de	Änderungen speichern
+saved %1	filemanager	de	%1 gespeichert
+show	filemanager	de	Anzeigen
+show ..	filemanager	de	Anzeigen ...
+show .files	filemanager	de	.Dateien anzeigen
+show command line (experimental. dangerous.)	filemanager	de	Kommando anzeigen (EXPERIMENTELL / GEFÄHRLICH)
+show help	filemanager	de	Hilfe anzeigen
+size	filemanager	de	Größe
+sort by:	filemanager	de	Sortieren nach:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	de	
+total files	filemanager	de	Anzahl Dateien
+unknown mime-type defaults to text/plain when viewing	filemanager	de	Zum Anzeigen von unbekannte MIME-Typen text/plain verwenden
+unused space	filemanager	de	Unbenutzer Speicherplatz
+up	filemanager	de	Nach oben
+update	filemanager	de	Aktualisieren
+updated comment for %1	filemanager	de	Kommentar für %1 aktualisiert
+upload	filemanager	de	Hochladen
+upload fields	filemanager	de	Felder zum Hochladen
+upload files	filemanager	de	Dateien hochladen
+use new experimental filemanager?	filemanager	de	
+used space	filemanager	de	Benutzter Speicherplatz
+users	filemanager	de	Benutzer
+version	filemanager	de	Version
+view documents in new window	filemanager	de	Dokumente in neuem Fenster anzeigen
+view documents on server (if available)	filemanager	de	Dokument auf Server anzeigen (falls verfügbar)
+who	filemanager	de	Wer
+you do not have access to %1	filemanager	de	Sie haben keinen Zugang zu %1
Index: /trunk/filemanager/setup/phpgw_sv.lang
===================================================================
--- /trunk/filemanager/setup/phpgw_sv.lang	(revision 2000)
+++ /trunk/filemanager/setup/phpgw_sv.lang	(revision 2000)
@@ -0,0 +1,115 @@
+%1 already exists as a file	filemanager	sv	%1 finns redan som fil
+application	filemanager	sv	Applikation
+back to file manager	filemanager	sv	Tillbaka till Filhanteraren
+cancel editing %1 without saving	filemanager	sv	Avbryt redigering av %1 utan att spara
+cannot create directory because it begins or ends in a space	filemanager	sv	Kan inte skapa katalog efteromsom namnet påbörjas eller avslutas med ett mellanslag
+cannot replace %1 because it is a directory	filemanager	sv	Kan inte ersätta %1 eftersom det är en katalog
+command sucessfully run	filemanager	sv	Kommandot lyckades
+comment	filemanager	sv	Kommentera
+comments cannot contain "%1"	filemanager	sv	Kommentarer kan inte inna hålla "%1"
+copied %1 to %2	filemanager	sv	Kopierade %1 till %2
+copy to	filemanager	sv	Kopiera
+copy to:	filemanager	sv	Kopiera till:
+could not copy %1 to %2	filemanager	sv	Kan inte kopiera %1 till %2
+could not copy file because no destination directory is given	filemanager	sv	Kan inte kopiera filen eftersom ingen destinationskatalog finns angiven
+could not create %1	filemanager	sv	Kunde inte skapa %1
+could not create directory %1	filemanager	sv	Kunde inte skapa katalogen %1
+could not delete %1	filemanager	sv	Kunde inte radera %1
+could not move %1 to %2	filemanager	sv	Kunde inte flytta %1 till %2
+could not move file because no destination directory is given	filemanager	sv	Kan inte flytta filen eftersom ingen destinationskatalog finns angiven
+could not rename %1 to %2	filemanager	sv	Kunde inte byta namn på %1 till %2
+could not save %1	filemanager	sv	Kunde inte spara %1
+create file	filemanager	sv	Skapa Fil
+create folder	filemanager	sv	Skapa Katalog
+created	filemanager	sv	Skapad
+created %1	filemanager	sv	Skapade %1
+created %1,%2	filemanager	sv	Skapade %1, %2
+created by	filemanager	sv	Skapad av
+created directory %1	filemanager	sv	Skapade katalogen %1
+date	filemanager	sv	Datum
+default number of upload fields to show	filemanager	sv	Default antal uppladdninsgfält att visa
+delete	filemanager	sv	Radera
+deleted %1	filemanager	sv	Raderade %1
+directory	filemanager	sv	Katalog
+directory %1 already exists	filemanager	sv	Katalogen %1 finns redan
+directory %1 does not exist	filemanager	sv	Katalogen %1 finns inte
+directory names cannot contain "%1"	filemanager	sv	Katalognamn kan inte innehålla %1
+display attributes	filemanager	sv	Visa attribut
+download	filemanager	sv	Ladda ned
+edit	filemanager	sv	Redigera
+edit comments	filemanager	sv	Redigera kommentarer
+error running command	filemanager	sv	Fel vid exekvering av kommando
+execute	filemanager	sv	Exekvera
+failed to create directory	filemanager	sv	Misslyckades att skapa katalog
+fake base dir did not exist, egroupware created a new one.	filemanager	sv	Fejkad baskatalog existerade inte, eGroupware skapade en ny
+file	filemanager	sv	Fil
+file %1 already exists. please edit it or delete it first.	filemanager	sv	Fil %1 existerar redan. Var vänlig redigera den eller ta bort den först
+file %1 could not be created.	filemanager	sv	Filen % kunde inte skapas
+file name	filemanager	sv	Filnamn
+file names cannot contain "%1"	filemanager	sv	Filnamn kan inte innehålla "%1"
+file names cannot contain \ or /	filemanager	sv	Filnamn kan inte innehålla \ eller /
+filemanager	common	sv	Filhanterare
+filemanager preferences	filemanager	sv	Filhanterarpreferenser
+files	filemanager	sv	Filer
+files in this directory	filemanager	sv	Filer i denna katalog
+folder	filemanager	sv	Katalog
+folder up	filemanager	sv	Upp ett steg
+go home	filemanager	sv	Gå hem
+go to	filemanager	sv	Gå till
+go to %1	filemanager	sv	Gå till %1
+go to your home directory	filemanager	sv	Gå till din hemkatalog
+go to:	filemanager	sv	Gå till:
+go up	filemanager	sv	Gå upp
+home	filemanager	sv	Hem
+location	filemanager	sv	Plats
+locked	filemanager	sv	Låst
+mime type	filemanager	sv	MIME-typ
+modified	filemanager	sv	Ändrad
+modified by	filemanager	sv	Ändrad av
+move to	filemanager	sv	Flytta Till
+move to:	filemanager	sv	Flytta till:
+moved %1 to %2	filemanager	sv	Flyttade %1 till %2
+no files in this directory.	filemanager	sv	Inga filer i denna katalog
+no version history for this file/directory	filemanager	sv	Ingen versionhistorik för denna fil/katalog
+operation	filemanager	sv	Operation
+other settings	filemanager	sv	Överiga inställningar
+owner	filemanager	sv	Ägare
+please select a file to delete.	filemanager	sv	Vänligen välj fil för radering
+preview %1	filemanager	sv	Förhandsgranska %1
+preview of %1	filemanager	sv	Förhandsgransking av %1
+quick jump to	filemanager	sv	Hoppa till
+reload	filemanager	sv	Ladda om
+rename	filemanager	sv	Byt namn
+renamed %1 to %2	filemanager	sv	Bytte namn från %1 till %2
+replaced %1	filemanager	sv	Ersatte %2
+save %1	filemanager	sv	Spara %1
+save %1, and go back to file listing	filemanager	sv	Spara %1 och gå tillbaka till fillistan
+save all	filemanager	sv	Spara alla
+save changes	filemanager	sv	Spara förändringar
+saved %1	filemanager	sv	Sparade %1
+show	filemanager	sv	Visa
+show ..	filemanager	sv	Visa...
+show .files	filemanager	sv	Visa .filer
+show command line (experimental. dangerous.)	filemanager	sv	Visa kommandorad (EXPERIMENTELLT, FARLIGT!!!9
+show help	filemanager	sv	Visa hjälp
+size	filemanager	sv	Storlek
+sort by:	filemanager	sv	Sortera efter:
+the future filemanager, now for testing purposes only, please send bugreports	filemanager	sv	Den framtidas filhanteraren, Enbart för tester. Skicka gärna buggrapporter
+total files	filemanager	sv	Totalt antal filer
+unknown mime-type defaults to text/plain when viewing	filemanager	sv	Okända MIME-typer visas som text/plain
+unused space	filemanager	sv	Ledigt utrymme
+up	filemanager	sv	Upp
+update	filemanager	sv	Uppdatera
+updated comment for %1	filemanager	sv	Uppdaterad kommentar för %1
+upload	filemanager	sv	Ladda upp
+upload fields	filemanager	sv	Ladda upp fält
+upload files	filemanager	sv	Ladda upp filer
+use new experimental filemanager?	filemanager	sv	Använda nya experimentella filhanteraren?
+used space	filemanager	sv	Använt diskutrymme
+users	filemanager	sv	Användare
+version	filemanager	sv	Version
+view documents in new window	filemanager	sv	Visa dokument i nytt fönster
+view documents on server (if available)	filemanager	sv	Visa dokumenten på server (om tillgängligt)
+who	filemanager	sv	Vem
+you do not have access to %1	filemanager	sv	Du har inte behörighet till %1
+your home dir did not exist, egroupware created a new one.	filemanager	sv	Det fanns ingen hemkatalog för dig, eGroupWare skapade en ny åt dig.
Index: /trunk/filemanager/tests/test_dav.php
===================================================================
--- /trunk/filemanager/tests/test_dav.php	(revision 2000)
+++ /trunk/filemanager/tests/test_dav.php	(revision 2000)
@@ -0,0 +1,531 @@
+<?php
+function ok($string){
+/*	html_table_row_begin();
+	html_table_col_begin();*/
+	echo "<h3>$string ";
+/*	html_table_col_end();
+	html_table_col_begin();*/
+	echo  " OK</h3>";
+/*	html_table_col_end();
+	html_table_row_end();*/
+}
+function fail($string){
+/*	html_table_row_begin();
+	html_table_col_begin();*/
+	echo "<h3>$string ";
+/*	html_table_col_end();
+	html_table_col_begin();*/
+	echo " <b>FAILED!</b></h3>";
+/*	html_table_col_end();
+	html_table_row_end(); */
+}
+
+$phpgw_info["flags"] = array("currentapp" => "filemanager",
+                                "noheader" => False,
+                                "noappheader" => False,
+                                "enable_vfs_class" => True);
+
+include("../../header.inc.php");
+
+html_text('VFS_DAV tests:');
+html_break (1);
+html_text_italic (PHP_OS . " - " . $phpgw_info["server"]["db_type"] . " - " . PHP_VERSION . " - " . $phpgw->vfs->basedir);
+html_break (1);
+//html_table_begin();
+
+
+$sep = SEP;
+$user = $phpgw->vfs->working_lid;
+$homedir = $phpgw->vfs->fakebase . "/" . $user;
+$realhomedir = preg_replace ("|/|", $sep, $homedir);
+$filesdir = $phpgw->vfs->basedir;
+$currentapp = $phpgw_info["flags"]["currentapp"];
+$time1 = time();
+
+echo ' override locks : ';print_r($phpgw->vfs->override_locks);
+	###
+	# write test
+
+	$phpgw->vfs->cd ();
+	$testfile = 'sdhdsjjkldggfsbhgbnirooaqojsdkljajklvagbytoi-test';
+	$teststring = 'delete me' ;
+	if (!$result = $phpgw->vfs->write (array ('string' => $testfile,
+		'content' => $teststring
+		))) 
+	{
+		fail( __LINE__." failed writing file!");
+	}
+	else
+	{
+	ok("write");
+	}
+
+#read
+	$phpgw->vfs->cd ();
+	$result = $phpgw->vfs->read (array ('string' => $testfile, 'noview' => true	));
+	if (!$result==$teststring) 
+	{
+		fail( __LINE__." failed reading file!");
+	}
+	else
+	{
+	ok(" read");
+	}
+	
+	###
+	# ls test
+
+	$result1 = $phpgw->vfs->ls (array ('string' => $testfile	));
+
+	if (!count($result1)) 
+	{
+		fail(__LINE__." failed listing file!");
+	}
+	else
+	{
+	ok(" ls : known file");
+	}
+//list the parent dir
+
+	$result = $phpgw->vfs->ls (array ('string' => ''));
+	foreach ($result as $file)
+	{
+		if ($testfile == $file['name'])
+		{
+			$found = true;
+			break;
+		}
+	}
+	if (!$found) 
+	{
+		fail(__LINE__." failed listing file!");
+	}
+	else
+	{
+		ok(" ls : parent");
+	}
+	$found = false;
+	foreach ($result as $file)
+	{
+		if ($result1[0]['directory'] == $file['full_name'])
+		{
+			$found = true;
+			break;
+		}
+	}
+	if ($found) 
+	{
+		fail(__LINE__." parent is present in its own listing!");
+	}
+	else
+	{
+		ok(" ls : parent self reference");
+	}
+# getsize 
+	$phpgw->vfs->cd ();
+	$result = $phpgw->vfs->get_size (array ('string' => $testfile	));
+	$len = strlen($teststring);
+	if (!($result== $len)) 
+	{
+		fail(__LINE__." failed getting size of file result $result strlen $len");
+	}
+	else
+	{
+	ok("get_size");
+	}
+	
+#filetype
+	$phpgw->vfs->cd ();
+	$result = $phpgw->vfs->file_type(array ('string' => $testfile	));
+	$len = strlen($teststring);
+	if (!($result== 'application/octet-stream')) 
+	{
+		fail(__LINE__." failed getting file type $result");
+	}
+	else
+	{
+	ok("file_type");
+	}
+
+
+#file_exists
+	$phpgw->vfs->cd ();
+	$result = $phpgw->vfs->file_exists(array ('string' => $testfile	));
+	if (!$result) 
+	{
+		fail(__LINE__." file_exist failed: $result");
+	}
+	else
+	{
+	ok("file_exists");
+	}
+
+#lock
+	$phpgw->vfs->cd ();
+	$result = $phpgw->vfs->lock (array ('string' => $testfile	));
+	if (!$result) 
+	{
+		fail(__LINE__."failed locking file!");
+	}
+	else
+	{
+	ok(" lock");
+	}
+	
+	
+		$ls_array = $GLOBALS['phpgw']->vfs->ls (array (
+				'string'	=> $testfile,
+				'relatives'	=> array (RELATIVE_ALL),
+				'checksubdirs'	=> False
+			)
+		);
+	if (!count($ls_array[0]['locks'])) 
+	{
+		fail(__LINE__."after locking file no locks exist!");
+	}
+	else
+	{
+	ok(" lock: after locking lock exists.");
+	}
+		$lock = end($ls_array[0]['locks']);
+		$tokens = end($lock['lock_tokens']);
+		$token = $tokens['name'];
+	//write should now fail
+	$result = $phpgw->vfs->write (array ('string' => $testfile,
+		'content' => 'delete me' 
+		));
+	if ($result) 
+	{
+		fail(__LINE__."I can write a supposidly locked file!");
+	}
+	else
+	{
+	ok("lock: after locking write fails");
+	}
+	
+	$phpgw->vfs->add_lock_override(array ('string' => $testfile));
+	$result = $phpgw->vfs->write (array ('string' => $testfile,
+		'content' => 'delete me' 
+		));
+	if (!$result) 
+	{
+		fail(__LINE__."I cant write a locked file after overriding the lock!");
+	}
+	else
+	{
+	ok("lock: after lock override write succeeds");
+	}
+###
+# unlock test
+	
+	$phpgw->vfs->cd ();
+	$result = $phpgw->vfs->unlock (array ('string' => $testfile	), $token);
+	if (!$result) 
+	{
+		fail( __LINE__."failed unlocking file!");
+	}
+	else
+	{
+		OK("unlock");
+	}
+
+#server side copy
+	
+	$phpgw->vfs->cd ();
+	$result = $phpgw->vfs->cp(array ('from' => $testfile,
+				'to' => $testfile.'2',
+				'relatives'	=> array (RELATIVE_ALL, RELATIVE_ALL)
+				));
+	if (!$result) 
+	{
+		fail(__LINE__." failed copying! returned: $result");
+	}
+	else
+	{
+		ok("server-side copy");
+	}
+	$result = $phpgw->vfs->file_exists(array ('string' => $testfile.'2'
+				));
+	if (!$result) 
+	{
+		fail(__LINE__." after copy, target doesnt exist!");
+	}
+	else
+	{
+		ok("server-side copy : test for target");
+	}
+	$result = $phpgw->vfs->read (array ('string' => "$testfile".'2', 
+		'noview' => true,
+		'relatives'	=> array (RELATIVE_ALL)
+			));
+	if (!$result==$teststring) 
+	{
+		fail( __LINE__."after copy, read returned '$result' not '$teststring' ");
+	}
+	else
+	{
+	ok(" server-side copy: read target");
+	}
+	$result = $phpgw->vfs->delete(array ('string' => $testfile.'2'
+				));
+
+	if (!$result) 
+	{
+		fail(__LINE__." failed copying! delete copied file returned: $result");
+	}
+	else
+	{
+		ok("server-side copy : delete target");
+	}
+
+#remote -> local copy	
+	$phpgw->vfs->cd ();
+	echo "<pre>";
+	$result = $phpgw->vfs->cp(array ('from' => $testfile,
+				'to' => "/tmp/$testfile".'2',
+				'relatives'	=> array (RELATIVE_ALL, RELATIVE_NONE | VFS_REAL)
+				));
+	echo "</pre>";
+	if (!$result) 
+	{
+		fail(__LINE__." failed remote->local copying! returned: $result");
+	}
+	else
+	{
+		ok("remote->local copy");
+	}
+	echo "<pre>";
+	$result = $phpgw->vfs->file_exists(array ('string' => "/tmp/$testfile".'2',
+	'relatives'	=> array (RELATIVE_NONE | VFS_REAL)
+				));
+	echo "</pre>";
+	if (!$result) 
+	{
+		fail(__LINE__." after remote->local copy, target doesnt exist!");
+	}
+	else
+	{
+		ok("remote->local copy : test for target");
+	}
+	$phpgw->vfs->cd ();
+	echo "<pre>";
+	$result = $phpgw->vfs->read (array ('string' => "/tmp/$testfile".'2', 
+		'noview' => true,
+		'relatives'	=> array (RELATIVE_NONE | VFS_REAL)
+			));
+	echo "</pre>";
+	if (!$result==$teststring) 
+	{
+		fail( __LINE__."after remote->local copy, returned $result");
+	}
+	else
+	{
+	ok(" remote->local copy: read target");
+	}
+	echo "<pre>";	
+	$result = $phpgw->vfs->delete(array ('string' => "/tmp/$testfile".'2',
+	'relatives'	=> array (RELATIVE_NONE | VFS_REAL)
+				));
+	echo "</pre>";
+	if (!$result) 
+	{
+		fail(__LINE__." failed copying! delete copied file returned: $result");
+	}
+	else
+	{
+		ok("remote->local copy : delete target");
+	}
+	
+#move
+	$phpgw->vfs->cd ();
+	echo "<pre>";
+	$result = $phpgw->vfs->mv(array ('from' => $testfile,
+				'to' => $testfile.'2',
+				'relatives'	=> array (RELATIVE_ALL, RELATIVE_ALL)
+				));
+	echo "</pre>";
+	if (!$result) 
+	{
+		fail(__LINE__." failed moving! returned: $result");
+	}
+	else
+	{
+		ok("server-side move");
+	}
+	$result = $phpgw->vfs->file_exists(array ('string' => $testfile,
+				));
+	if ($result) 
+	{
+		fail(__LINE__." failed moving! returned: $result");
+	}
+	else
+	{
+		ok("server-side move : test for source");
+	}
+	$result = $phpgw->vfs->file_exists(array ('string' => $testfile.'2',
+				));
+	if (!$result) 
+	{
+		fail(__LINE__." failed moving! returned: $result");
+	}
+	else
+	{
+		ok("server-side move : test for target");
+	}
+	echo "<pre>";
+	$result = $phpgw->vfs->read (array ('string' => $testfile.'2', 
+		'noview' => true,
+		'relatives'	=> array (RELATIVE_ALL)
+			));
+	echo "</pre>";
+	if (!$result==$teststring) 
+	{
+		fail( __LINE__."after move, read returned '$result' not '$teststring' ");
+	}
+	else
+	{
+	ok(" server-side move: read target");
+	}	
+	
+	echo "<pre>";	
+	$result = $phpgw->vfs->mv(array ('from' => $testfile.'2',
+				'to' => $testfile,
+				'relatives'	=> array (RELATIVE_ALL, RELATIVE_ALL)
+				));
+	echo "</pre>";
+	if (!$result) 
+	{
+		fail(__LINE__." failed moving! returned: $result");
+	}
+	else
+	{
+		ok("server-side move : move back");
+	}
+
+#remote->local move
+	echo "<pre>";
+	$phpgw->vfs->cd ();
+	$result = $phpgw->vfs->mv(array ('from' => $testfile,
+				'to' => '/tmp/'.$testfile.'2',
+				'relatives'	=> array (RELATIVE_ALL, RELATIVE_NONE | VFS_REAL)
+				));
+	echo "</pre>";
+	if (!$result) 
+	{
+		fail(__LINE__." failed moving! returned: $result");
+	}
+	else
+	{
+		ok("remote->local move");
+	}
+	$result = $phpgw->vfs->file_exists(array ('string' => $testfile,
+				));
+	if ($result) 
+	{
+		fail(__LINE__." failed moving! returned: $result");
+	}
+	else
+	{
+		ok("remote->local move : test for source");
+	}
+	$result = $phpgw->vfs->file_exists(array ('string' => '/tmp/'.$testfile.'2',
+				 'relatives' => array(RELATIVE_NONE | VFS_REAL)
+				 ));
+	if (!$result) 
+	{
+		fail(__LINE__." failed moving! returned: $result");
+	}
+	else
+	{
+		ok("remote->local move : test for target");
+	}
+	
+	$result = $phpgw->vfs->read (array ('string' => '/tmp/'.$testfile.'2', 
+		'noview' => true,
+		'relatives' => array(RELATIVE_NONE | VFS_REAL)
+			));
+	if (!$result==$teststring) 
+	{
+		fail( __LINE__."after move, read returned '$result' not '$teststring' ");
+	}
+	else
+	{
+	ok("remote->local move: read target");
+	}	
+	
+	echo "<pre>";
+	$result = $phpgw->vfs->mv(array ('from' => '/tmp/'.$testfile.'2',
+				'to' => $testfile,
+				'relatives'	=> array (RELATIVE_NONE | VFS_REAL, RELATIVE_ALL)
+				));
+	echo "</pre>";
+	if (!$result) 
+	{
+		fail(__LINE__." failed moving! returned: $result");
+	}
+	else
+	{
+		ok("server-side move : move back");
+	}
+
+
+###
+# delete test
+	
+	$phpgw->vfs->cd ();
+	$result = $phpgw->vfs->delete(array ('string' => $testfile	));
+	if (!$result) 
+	{
+		fail(__LINE__."failed deleting file! returned: $result");
+	}
+	else
+	{
+		ok("delete");
+	}
+
+###
+# mkdir test
+	
+	$phpgw->vfs->cd ();
+	$result = $phpgw->vfs->mkdir(array ('string' => $testfile	));
+	if (!$result) 
+	{
+		fail(__LINE__."failed creating collection! returned: $result");
+	}
+	else
+	{
+		ok("mkdir");
+	}
+
+	$result = $phpgw->vfs->write (array ('string' => $testfile.'/'.$testfile.'2',
+		'content' => $teststring
+		));
+		
+	if (!$result) 
+	{
+		fail( __LINE__." failed writing file into new dir!");
+	}
+	else
+	{
+	ok("mkdir : write into dir");
+	}
+###
+# rm dir test
+	
+	$phpgw->vfs->cd ();
+	$result = $phpgw->vfs->rm(array ('string' => $testfile	));
+	if (!$result) 
+	{
+		fail(__LINE__." failed deleting collection! returned: $result");
+	}
+	else
+	{
+		ok("delete dir");
+	}
+	
+	//html_table_end();
+	$time = time() - $time1;
+	html_text("Done in $time s");
+	html_page_close ();
+
+?>
Index: /trunk/filemanager/tests/test.php
===================================================================
--- /trunk/filemanager/tests/test.php	(revision 2000)
+++ /trunk/filemanager/tests/test.php	(revision 2000)
@@ -0,0 +1,279 @@
+<?php
+
+$phpgw_info["flags"] = array("currentapp" => "filemanager",
+                                "noheader" => False,
+                                "noappheader" => False,
+                                "enable_vfs_class" => True);
+
+include("../header.inc.php");
+
+/*
+	General format for output is:
+	sequence number - function - current directory - input[...] - what output should be - what output was
+*/
+
+html_break (1);
+html_text_italic (PHP_OS . " - " . $phpgw_info["server"]["db_type"] . " - " . PHP_VERSION . " - " . $phpgw->vfs->basedir);
+html_break (1);
+
+$sep = SEP;
+$user = $phpgw->vfs->working_lid;
+$homedir = $phpgw->vfs->fakebase . "/" . $user;
+$realhomedir = preg_replace ("|/|", $sep, $homedir);
+$filesdir = $phpgw->vfs->basedir;
+$currentapp = $phpgw_info["flags"]["currentapp"];
+
+###
+# start of getabsolutepath tests
+
+$sequence_num = 1;
+$phpgw->vfs->cd ();
+$io = array ("" => "$homedir", "dir" => "$homedir/dir", "dir/file" => "$homedir/dir/file", "dir/dir2" => "$homedir/dir/dir2", "dir/dir2/file" => "$homedir/dir/dir2/file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$homedir/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
+
+while (list ($i, $o) = each ($io))
+{
+	if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i))) != $o)
+	{
+		echo "<br>$sequence_num - getabsolutepath - $cd - $i - $o - $ao";
+	}
+}
+
+$sequence_num = 2;
+$cd = "test";
+$phpgw->vfs->cd (array(
+		'string'	=> $cd,
+		'relative'	=> False,
+		'relatives'	=> array (RELATIVE_NONE)
+	)
+);
+$io = array ("" => "/test", "dir" => "/test/dir", "dir/file" => "/test/dir/file", "dir/dir2" => "/test/dir/dir2", "dir/dir2/file" => "/test/dir/dir2/file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "/test/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
+
+while (list ($i, $o) = each ($io))
+{
+	if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i))) != $o)
+	{
+		echo "<br>$sequence_num - getabsolutepath - $cd - $i - $o - $ao";
+	}
+}
+
+$sequence_num = 3;
+$cd = "test/test2/test3";
+$phpgw->vfs->cd (array(
+		'string'	=> $cd,
+		'relative'	=> False,
+		'relatives'	=> array (RELATIVE_NONE)
+	)
+);
+$io = array ("" => "/test/test2/test3", "dir" => "/test/test2/test3/dir", "dir/file" => "/test/test2/test3/dir/file", "dir/dir2" => "/test/test2/test3/dir/dir2", "dir/dir2/file" => "/test/test2/test3/dir/dir2/file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "/test/test2/test3/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
+
+while (list ($i, $o) = each ($io))
+{
+	if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i))) != $o)
+	{
+		echo "<br>$sequence_num - getabsolutepath - $cd - $i - $o - $ao";
+	}
+}
+
+/* Actually means cd to home directory */
+$sequence_num = 4;
+$cd = "";
+$phpgw->vfs->cd (array(
+		'string'	=> $cd
+	)
+);
+$relatives = array (RELATIVE_USER);
+$io = array ("" => "$homedir", "dir" => "$homedir/dir", "dir/file" => "$homedir/dir/file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$homedir/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
+
+while (list ($i, $o) = each ($io))
+{
+	if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives))) != $o)
+	{
+		echo '<br><b>HERE</b>';
+		echo "<br>$sequence_num - getabsolutepath - $cd - $i - $relatives[0] - $o - $ao";
+	}
+}
+
+/* $cd shouldn't affect this test, but we'll set it anyways */
+$sequence_num = 5;
+$cd = "test2/test4";
+$phpgw->vfs->cd (array(
+		'string'	=> $cd,
+		'relative'	=> False,
+		'relatives'	=> array (RELATIVE_NONE)
+	)
+);
+$relatives = array (RELATIVE_NONE);
+$io = array ("" => "", "dir" => "dir", "dir/file" => "dir/file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
+
+while (list ($i, $o) = each ($io))
+{
+	if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives))) != $o)
+	{
+		echo "<br>$sequence_num - getabsolutepath - $cd (shouldn't matter) - $i - $relatives[0] - $o - $ao";
+	}
+}
+
+/* $cd shouldn't affect this test, but we'll set it anyways */
+$sequence_num = 6;
+$cd = "test3/test5";
+$phpgw->vfs->cd (array(
+		'string'	=> $cd,
+		'relative'	=> False,
+		'relatives'	=> array (RELATIVE_NONE)
+	)
+);
+$relatives = array (RELATIVE_USER_APP);
+$io = array ("" => "$homedir/.$currentapp", "dir" => "$homedir/.$currentapp/dir", "dir/dir2" => "$homedir/.$currentapp/dir/dir2", "dir/file" => "$homedir/.$currentapp/dir/file", "dir/dir2/dir3/file" => "$homedir/.$currentapp/dir/dir2/dir3/file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$homedir/.$currentapp/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
+
+while (list ($i, $o) = each ($io))
+{
+	if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives))) != $o)
+	{
+		echo "<br>$sequence_num - getabsolutepath - $cd (shouldn't matter) - $i - $relatives[0] - $o - $ao";
+	}
+}
+
+/* $cd shouldn't affect this test, but we'll set it anyways */
+$sequence_num = 7;
+$cd = "test4/test6";
+$phpgw->vfs->cd (array(
+		'string'	=> $cd,
+		'relative'	=> False,
+		'relatives'	=> array (RELATIVE_NONE)
+	)
+);
+$relatives = array (RELATIVE_ROOT);
+$io = array ("" => "", "dir" => "/dir", "/dir/dir2/dir3" => "/dir/dir2/dir3", "dir/file" => "/dir/file", "dir/dir2/dir3" => "/dir/dir2/dir3", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
+
+while (list ($i, $o) = each ($io))
+{
+	if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives))) != $o)
+	{
+		echo "<br>$sequence_num - getabsolutepath - $cd (shouldn't matter) - $i - $relatives[0] - $o - $ao";
+	}
+}
+
+/* Now a few to test the VFS_REAL capabilities */
+$sequence_num = 8;
+$cd = "";
+$phpgw->vfs->cd (array(
+		'string'	=> $cd,
+		'relative'	=> False,
+		'relatives'	=> array (RELATIVE_NONE)
+	)
+);
+$relatives = array (RELATIVE_ROOT|VFS_REAL);
+$io = array ("" => "$filesdir", "dir" => "$filesdir$sep" . "dir", "dir/dir2/dir3" => "$filesdir$sep" . "dir$sep" . "dir2$sep" . "dir3", "dir/file" => "$filesdir$sep" . "dir$sep" . "file", "dir/dir2/dir3/file" => "$filesdir$sep" . "dir$sep" . "dir2$sep" . "dir3$sep" . "file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$filesdir$sep" . "`~!@#$%^&*()-_=+$sep" . "|[{]};:'\",<.>?");
+
+while (list ($i, $o) = each ($io))
+{
+	if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives, 'fake' =>False))) != $o)
+	{
+		echo "<br>$sequence_num - getabsolutepath - $cd (shouldn't matter) - $i - $relatives[0] - $o - $ao";
+	}
+}
+
+$sequence_num = 9;
+$cd = "test5/test7";
+$phpgw->vfs->cd (array(
+		'string'	=> $cd,
+		'relative'	=> False,
+		'relatives'	=> array (RELATIVE_NONE)
+	)
+);
+$relatives = array (RELATIVE_USER|VFS_REAL);
+$io = array ("" => "$filesdir$realhomedir", "dir" => "$filesdir$realhomedir$sep" . "dir", "dir/dir2/dir3" => "$filesdir$realhomedir$sep" . "dir$sep" . "dir2$sep" . "dir3", "dir/file" => "$filesdir$realhomedir$sep" . "dir$sep" . "file", "dir/dir2/dir3/file" => "$filesdir$realhomedir$sep" . "dir$sep" . "dir2$sep" . "dir3$sep" . "file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$filesdir$realhomedir$sep" . "`~!@#$%^&*()-_=+$sep" . "|[{]};:'\",<.>?");
+
+while (list ($i, $o) = each ($io))
+{
+	if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives, 'fake' => False))) != $o)
+	{
+		echo "<br>$sequence_num - getabsolutepath - $cd (shouldn't matter) - $i - $relatives[0] - $o - $ao";
+	}
+}
+
+$sequence_num = 10;
+$cd = "test6/test8";
+$phpgw->vfs->cd (array(
+		'string'	=> $cd,
+		'relative'	=> False,
+		'relatives'	=> array (RELATIVE_USER)
+	)
+);
+/* RELATIVE_CURRENT should be implied */
+$relatives = array (VFS_REAL);
+$io = array ("" => "$filesdir$realhomedir$sep$cd", "dir" => "$filesdir$realhomedir$sep$cd$sep" . "dir", "dir/dir2/dir3" => "$filesdir$realhomedir$sep$cd$sep" . "dir$sep" . "dir2$sep" . "dir3", "dir/file" => "$filesdir$realhomedir$sep$cd$sep" . "dir$sep" . "file", "dir/dir2/dir3/file" => "$filesdir$realhomedir$sep$cd$sep" . "dir$sep" . "dir2$sep" . "dir3$sep" . "file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$filesdir$realhomedir$sep$cd$sep" . "`~!@#$%^&*()-_=+$sep" . "|[{]};:'\",<.>?");
+
+while (list ($i, $o) = each ($io))
+{
+	if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives, 'fake' => False))) != $o)
+	{
+		echo "<br>$sequence_num - getabsolutepath - $cd - $i - $relatives[0] - $o - $ao";
+	}
+}
+
+$sequence_num = 11;
+$cd = "test7/test9";
+$phpgw->vfs->cd (array(
+		'string'	=> $cd,
+		'relative'	=> False,
+		'relatives'	=> array (RELATIVE_USER)
+	)
+);
+$relatives = array (RELATIVE_USER_APP|VFS_REAL);
+$io = array ("" => "$filesdir$realhomedir$sep.$currentapp", "dir" => "$filesdir$realhomedir$sep.$currentapp$sep" . "dir", "dir/dir2/dir3" => "$filesdir$realhomedir$sep.$currentapp$sep" . "dir$sep" . "dir2$sep" . "dir3", "dir/file" => "$filesdir$realhomedir$sep.$currentapp$sep" . "dir$sep" . "file", "dir/dir2/dir3/file" => "$filesdir$realhomedir$sep.$currentapp$sep" . "dir$sep" . "dir2$sep" . "dir3$sep" . "file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$filesdir$realhomedir$sep.$currentapp$sep`~!@#$%^&*()-_=+$sep" . "|[{]};:'\",<.>?");
+
+while (list ($i, $o) = each ($io))
+{
+	if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives, 'fake' => False))) != $o)
+	{
+		echo "<br>$sequence_num - getabsolutepath - $cd (shouldn't matter) - $i - $relatives[0] - $o - $ao";
+	}
+}
+
+# end of getabsolutepath tests
+###
+
+###
+# start of path_parts tests
+
+/* Just for convienience
+$io = array ("" => array ("fake_full_path" => "", "fake_leading_dirs" => "", "fake_extra_path" => "", "fake_name" => "", "real_full_path" => "", "real_leading_dirs" => "", "real_extra_path" => "", "real_name" => ""));
+`~!@#$%^&*()-_=+/|[{]};:'\",<.>?
+*/
+
+$sequence_num = 12;
+$cd = "test8/test10";
+$relatives[0] = RELATIVE_USER;
+$phpgw->vfs->cd (array(
+		'string'	=> $cd,
+		'relative'	=> False,
+		'relatives'	=> array ($relatives[0])
+	)
+);
+$subhome = substr ($homedir, 1);
+$io = array ("" => array ("fake_full_path" => "$homedir/$cd", "fake_leading_dirs" => "$homedir/test8", "fake_extra_path" => "$subhome/test8", "fake_name" => "test10", "real_full_path" => "$filesdir$homedir/$cd", "real_leading_dirs" => "$filesdir$homedir/test8", "real_extra_path" => "$subhome/test8", "real_name" => "test10"), "dir2/file" => array ("fake_full_path" => "$homedir/$cd/dir2/file", "fake_leading_dirs" => "$homedir/$cd/dir2", "fake_extra_path" => "$subhome/$cd/dir2", "fake_name" => "file", "real_full_path" => "$filesdir$homedir/$cd/dir2/file", "real_leading_dirs" => "$filesdir$homedir/$cd/dir2", "real_extra_path" => "$subhome/$cd/dir2", "real_name" => "file"), "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => array ("fake_full_path" => "$homedir/$cd/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?", "fake_leading_dirs" => "$homedir/$cd/`~!@#$%^&*()-_=+", "fake_extra_path" => "$subhome/$cd/`~!@#$%^&*()-_=+", "fake_name" => "|[{]};:'\",<.>?", "real_full_path" => "$filesdir$homedir/$cd/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?", "real_leading_dirs" => "$filesdir$homedir/$cd/`~!@#$%^&*()-_=+", "real_extra_path" => "$subhome/$cd/`~!@#$%^&*()-_=+", "real_name" => "|[{]};:'\",<.>?"));
+
+while (list ($i, $o) = each ($io))
+{
+	$ao = $phpgw->vfs->path_parts (array ('string' => $i));
+	while (list ($key, $value) = each ($o))
+	{
+		if ($ao->$key != $o[$key])
+		{
+			echo "<br>$sequence_num - path_parts - $cd - $i - $relatives[0] - $key - $o[$key] - $ao[$key]";
+		}
+	}
+}
+
+# end of path_parts tests
+###
+
+$phpgw->vfs->cd ();
+
+html_break (2);
+html_text_bold ("The less output, the better.  Please file errors as a " . html_link ("https://sourceforge.net/tracker/?group_id=7305&atid=107305", "bug report", True, False) .  ". Be sure to include the system information line at the top, and anything special about your setup.  Thanks!");
+
+html_page_close ();
+
+?>
Index: /trunk/filemanager/tests/benchmark_dav.php
===================================================================
--- /trunk/filemanager/tests/benchmark_dav.php	(revision 2000)
+++ /trunk/filemanager/tests/benchmark_dav.php	(revision 2000)
@@ -0,0 +1,61 @@
+<?php
+
+
+$phpgw_info["flags"] = array("currentapp" => "filemanager",
+                                "noheader" => False,
+                                "noappheader" => False,
+                                "enable_vfs_class" => True);
+
+include("../../header.inc.php");
+
+  function getmicrotime()
+  { 
+    list($usec, $sec) = explode(" ",microtime()); 
+    return ((float)$usec + (float)$sec); 
+   } 
+   
+	function stats($array)
+	{
+   		$mean = array_sum($array)/count($array);
+   		$a = 0;
+   		foreach ($array as $value)
+   		{
+   			$a += ($value - $mean)*($value - $mean);
+   		}
+   		$std = sqrt($a/count($array));
+   		$error = $std/sqrt(count($array));
+   		echo "mean time: $mean error: +-$error";
+	}
+    echo '<b>Benchmarking vfs::ls</b><br>';
+    $times = array(); 
+	$phpgw->vfs->cd();
+	for ($i=0;$i<20; $i++)
+	{
+		$phpgw->vfs->dav_client->cached_props = array();
+		$time1 = getmicrotime();
+		$result = $phpgw->vfs->ls (array ('string' => ''));
+		$time = getmicrotime() - $time1;
+		$times[] = $time;
+		echo "run $i: $time<br>";
+		//sleep(1);
+		flush();
+	}
+	stats($times);
+	
+	echo '<br><b>Benchmarking dav_client::get_properties</b><br>';
+    $times = array(); 
+	$phpgw->vfs->cd();
+	for ($i=0;$i<20; $i++)
+	{
+		$phpgw->vfs->dav_client->cached_props = array();
+		$time1 = getmicrotime();
+		$result = $phpgw->vfs->dav_client->get_properties('/home/sim');
+		$time = getmicrotime() - $time1;
+		$times[] = $time;
+		echo "run $i: $time<br>";
+		flush();
+	}
+	stats($times);
+
+
+?>
Index: /trunk/filemanager/tp/ckeditor/ckeditor.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/ckeditor.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/ckeditor.js	(revision 2000)
@@ -0,0 +1,109 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'99GE',version:'3.0.1',revision:'4391',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();var a=CKEDITOR;if(!a.event){a.event=function(){};a.event.implementOn=function(b,c){var d=a.event.prototype;for(var e in d)if(b[e]==undefined)b[e]=d[e];};a.event.prototype=(function(){var b=function(d){var e=d.getPrivate&&d.getPrivate()||d._||(d._={});return e.events||(e.events={});},c=function(d){this.name=d;this.listeners=[];};c.prototype={getListenerIndex:function(d){for(var e=0,f=this.listeners;e<f.length;e++)if(f[e].fn==d)return e;return-1;}};return{on:function(d,e,f,g,h){var i=b(this),j=i[d]||(i[d]=new c(d));if(j.getListenerIndex(e)<0){var k=j.listeners;if(!f)f=this;if(isNaN(h))h=10;var l=this,m=function(o,p,q,r){var s={name:d,sender:this,editor:o,data:p,listenerData:g,stop:q,cancel:r,removeListener:function(){l.removeListener(d,e);}};e.call(f,s);return s.data;};m.fn=e;m.priority=h;for(var n=k.length-1;n>=0;n--)if(k[n].priority<=h){k.splice(n+1,0,m);return;}k.unshift(m);}},fire:(function(){var d=false,e=function(){d=true;},f=false,g=function(){f=true;};return function(h,i,j){var k=b(this)[h],l=d,m=f;d=f=false;if(k){var n=k.listeners;if(n.length){n=n.slice(0);for(var o=0;o<n.length;o++){var p=n[o].call(this,j,i,e,g);if(typeof p!='undefined')i=p;if(d||f)break;}}}var q=f||(typeof i=='undefined'?false:i);d=l;f=m;return q;};})(),fireOnce:function(d,e,f){var g=this.fire(d,e,f);delete b(this)[d];return g;},removeListener:function(d,e){var f=b(this)[d];if(f){var g=f.getListenerIndex(e);if(g>=0)f.listeners.splice(g,1);}},hasListeners:function(d){var e=b(this)[d];return e&&e.listeners.length>0;}};})();}if(!a.editor){a.ELEMENT_MODE_NONE=0;a.ELEMENT_MODE_REPLACE=1;a.ELEMENT_MODE_APPENDTO=2;a.editor=function(b,c,d){var e=this;e._={instanceConfig:b,element:c};
+e.elementMode=d||0;a.event.call(e);e._init();};a.editor.replace=function(b,c){var d=b;if(typeof d!='object'){d=document.getElementById(b);if(!d){var e=0,f=document.getElementsByName(b);while((d=f[e++])&&(d.tagName.toLowerCase()!='textarea')){}}if(!d)throw '[CKEDITOR.editor.replace] The element with id or name "'+b+'" was not found.';}d.style.visibility='hidden';return new a.editor(c,d,1);};a.editor.appendTo=function(b,c){if(typeof b!='object'){b=document.getElementById(b);if(!b)throw '[CKEDITOR.editor.appendTo] The element with id "'+b+'" was not found.';}return new a.editor(c,b,2);};a.editor.prototype={_init:function(){var b=a.editor._pending||(a.editor._pending=[]);b.push(this);},fire:function(b,c){return a.event.prototype.fire.call(this,b,c,this);},fireOnce:function(b,c){return a.event.prototype.fireOnce.call(this,b,c,this);}};a.event.implementOn(a.editor.prototype,true);}if(!a.env)a.env=(function(){var b=navigator.userAgent.toLowerCase(),c=window.opera,d={ie:/*@cc_on!@*/false,opera:!!c&&c.version,webkit:b.indexOf(' applewebkit/')>-1,air:b.indexOf(' adobeair/')>-1,mac:b.indexOf('macintosh')>-1,quirks:document.compatMode=='BackCompat',isCustomDomain:function(){return this.ie&&document.domain!=window.location.hostname;}};d.gecko=navigator.product=='Gecko'&&!d.webkit&&!d.opera;var e=0;if(d.ie){e=parseFloat(b.match(/msie (\d+)/)[1]);d.ie8=!!document.documentMode;d.ie8Compat=document.documentMode==8;d.ie7Compat=e==7&&!document.documentMode||document.documentMode==7;d.ie6Compat=e<7||d.quirks;}if(d.gecko){var f=b.match(/rv:([\d\.]+)/);if(f){f=f[1].split('.');e=f[0]*10000+(f[1]||0)*(100)+ +(f[2]||0);}}if(d.opera)e=parseFloat(c.version());if(d.air)e=parseFloat(b.match(/ adobeair\/(\d+)/)[1]);if(d.webkit)e=parseFloat(b.match(/ applewebkit\/(\d+)/)[1]);d.version=e;d.isCompatible=d.ie&&e>=6||d.gecko&&e>=10801||d.opera&&e>=9.5||d.air&&e>=1||d.webkit&&e>=522||false;d.cssClass='cke_browser_'+(d.ie?'ie':d.gecko?'gecko':d.opera?'opera':d.air?'air':d.webkit?'webkit':'unknown');if(d.quirks)d.cssClass+=' cke_browser_quirks';if(d.ie){d.cssClass+=' cke_browser_ie'+(d.version<7?'6':d.version>=8?'8':'7');if(d.quirks)d.cssClass+=' cke_browser_iequirks';}if(d.gecko&&e<10900)d.cssClass+=' cke_browser_gecko18';return d;})();var b=a.env;var c=b.ie;if(a.status=='unloaded')(function(){a.event.implementOn(a);a.loadFullCore=function(){if(a.status!='basic_ready'){a.loadFullCore._load=true;return;}delete a.loadFullCore;var e=document.createElement('script');e.type='text/javascript';
+e.src=a.basePath+'ckeditor.js';document.getElementsByTagName('head')[0].appendChild(e);};a.loadFullCoreTimeout=0;a.replaceClass='ckeditor';a.replaceByClassEnabled=true;var d=function(e,f,g){if(b.isCompatible){if(a.loadFullCore)a.loadFullCore();var h=g(e,f);a.add(h);return h;}return null;};a.replace=function(e,f){return d(e,f,a.editor.replace);};a.appendTo=function(e,f){return d(e,f,a.editor.appendTo);};a.add=function(e){var f=this._.pending||(this._.pending=[]);f.push(e);};a.replaceAll=function(){var e=document.getElementsByTagName('textarea');for(var f=0;f<e.length;f++){var g=null,h=e[f],i=h.name;if(!h.name&&!h.id)continue;if(typeof arguments[0]=='string'){var j=new RegExp('(?:^| )'+arguments[0]+'(?:$| )');if(!j.test(h.className))continue;}else if(typeof arguments[0]=='function'){g={};if(arguments[0](h,g)===false)continue;}this.replace(h,g);}};(function(){var e=function(){var f=a.loadFullCore,g=a.loadFullCoreTimeout;if(a.replaceByClassEnabled)a.replaceAll(a.replaceClass);a.status='basic_ready';if(f&&f._load)f();else if(g)setTimeout(function(){if(a.loadFullCore)a.loadFullCore();},g*1000);};if(window.addEventListener)window.addEventListener('load',e,false);else if(window.attachEvent)window.attachEvent('onload',e);})();a.status='basic_loaded';})();a.dom={};var d=a.dom;(function(){var e=[];a.tools={arrayCompare:function(f,g){if(!f&&!g)return true;if(!f||!g||f.length!=g.length)return false;for(var h=0;h<f.length;h++)if(f[h]!=g[h])return false;return true;},clone:function(f){var g;if(f&&f instanceof Array){g=[];for(var h=0;h<f.length;h++)g[h]=this.clone(f[h]);return g;}if(f===null||typeof f!='object'||f instanceof String||f instanceof Number||f instanceof Boolean||f instanceof Date)return f;g=new f.constructor();for(var i in f){var j=f[i];g[i]=this.clone(j);}return g;},extend:function(f){var g=arguments.length,h,i;if(typeof (h=arguments[g-1])=='boolean')g--;else if(typeof (h=arguments[g-2])=='boolean'){i=arguments[g-1];g-=2;}for(var j=1;j<g;j++){var k=arguments[j];for(var l in k)if(h===true||f[l]==undefined)if(!i||l in i)f[l]=k[l];}return f;},prototypedCopy:function(f){var g=function(){};g.prototype=f;return new g();},isArray:function(f){return!!f&&f instanceof Array;},cssStyleToDomStyle:(function(){var f=document.createElement('div').style,g=typeof f.cssFloat!='undefined'?'cssFloat':typeof f.styleFloat!='undefined'?'styleFloat':'float';return function(h){if(h=='float')return g;else return h.replace(/-./g,function(i){return i.substr(1).toUpperCase();});};})(),htmlEncode:function(f){var g=function(k){var l=new d.element('span');
+l.setText(k);return l.getHtml();},h=g('\n').toLowerCase()=='<br>'?function(k){return g(k).replace(/<br>/gi,'\n');}:g,i=g('>')=='>'?function(k){return h(k).replace(/>/g,'&gt;');}:h,j=g('  ')=='&nbsp; '?function(k){return i(k).replace(/&nbsp;/g,' ');}:i;this.htmlEncode=j;return this.htmlEncode(f);},getNextNumber:(function(){var f=0;return function(){return++f;};})(),override:function(f,g){return g(f);},setTimeout:function(f,g,h,i,j){if(!j)j=window;if(!h)h=j;return j.setTimeout(function(){if(i)f.apply(h,[].concat(i));else f.apply(h);},g||0);},trim:(function(){var f=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(g){return g.replace(f,'');};})(),ltrim:(function(){var f=/^[ \t\n\r]+/g;return function(g){return g.replace(f,'');};})(),rtrim:(function(){var f=/[ \t\n\r]+$/g;return function(g){return g.replace(f,'');};})(),indexOf:Array.prototype.indexOf?function(f,g){return f.indexOf(g);}:function(f,g){for(var h=0,i=f.length;h<i;h++)if(f[h]===g)return h;return-1;},bind:function(f,g){return function(){return f.apply(g,arguments);};},createClass:function(f){var g=f.$,h=f.base,i=f.privates||f._,j=f.proto,k=f.statics;if(i){var l=g;g=function(){var p=this;var m=p._||(p._={});for(var n in i){var o=i[n];m[n]=typeof o=='function'?a.tools.bind(o,p):o;}l.apply(p,arguments);};}if(h){g.prototype=this.prototypedCopy(h.prototype);g.prototype['constructor']=g;g.prototype.base=function(){this.base=h.prototype.base;h.apply(this,arguments);this.base=arguments.callee;};}if(j)this.extend(g.prototype,j,true);if(k)this.extend(g,k,true);return g;},addFunction:function(f,g){return e.push(function(){f.apply(g||this,arguments);})-1;},callFunction:function(f){var g=e[f];return g.apply(window,Array.prototype.slice.call(arguments,1));},cssLength:(function(){var f=/^\d+(?:\.\d+)?$/;return function(g){return g+(f.test(g)?'px':'');};})(),repeat:function(f,g){return new Array(g+1).join(f);}};})();var e=a.tools;a.dtd=(function(){var f=e.extend,g={isindex:1,fieldset:1},h={input:1,button:1,select:1,textarea:1,label:1},i=f({a:1},h),j=f({iframe:1},i),k={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1},l={ins:1,del:1,script:1},m=f({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},l),n=f({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},m),o=f({p:1},n),p=f({iframe:1},n,h),q={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1},r=f({a:1},p),s={tr:1},t={'#':1},u=f({param:1},q),v=f({form:1},g,j,k,o),w={li:1},x={address:1,blockquote:1,center:1,dir:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,isindex:1,menu:1,noframes:1,ol:1,p:1,pre:1,table:1,ul:1};
+return{$block:x,$body:f({script:1},x),$cdata:{script:1,style:1},$empty:{area:1,base:1,br:1,col:1,hr:1,img:1,input:1,link:1,meta:1,param:1},$listItem:{dd:1,dt:1,li:1},$list:{ul:1,ol:1,dl:1},$nonEditable:{applet:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,script:1,textarea:1},$removeEmpty:{abbr:1,acronym:1,address:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1},$tabIndex:{a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},$tableContent:{caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:v,td:v,br:{},th:v,center:v,kbd:r,button:f(o,k),basefont:{},h5:r,h4:r,samp:r,h6:r,ol:w,h1:r,h3:r,option:t,h2:r,form:f(g,j,k,o),select:{optgroup:1,option:1},font:r,ins:v,menu:w,abbr:r,label:r,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:r,script:t,tfoot:s,cite:r,li:v,input:{},iframe:v,strong:r,textarea:t,noframes:v,big:r,small:r,span:r,hr:{},dt:r,sub:r,optgroup:{option:1},param:{},bdo:r,'var':r,div:v,object:u,sup:r,dd:v,strike:r,area:{},dir:w,map:f({area:1,form:1,p:1},g,l,k),applet:u,dl:{dt:1,dd:1},del:v,isindex:{},fieldset:f({legend:1},q),thead:s,ul:w,acronym:r,b:r,a:p,blockquote:v,caption:r,i:r,u:r,tbody:s,s:r,address:f(j,o),tt:r,legend:r,q:r,pre:f(m,i),p:r,em:r,dfn:r};})();var f=a.dtd;d.event=function(g){this.$=g;};d.event.prototype={getKey:function(){return this.$.keyCode||this.$.which;},getKeystroke:function(){var h=this;var g=h.getKey();if(h.$.ctrlKey||h.$.metaKey)g+=1000;if(h.$.shiftKey)g+=2000;if(h.$.altKey)g+=4000;return g;},preventDefault:function(g){var h=this.$;if(h.preventDefault)h.preventDefault();else h.returnValue=false;if(g)this.stopPropagation();},stopPropagation:function(){var g=this.$;if(g.stopPropagation)g.stopPropagation();else g.cancelBubble=true;},getTarget:function(){var g=this.$.target||this.$.srcElement;return g?new d.node(g):null;}};a.CTRL=1000;a.SHIFT=2000;a.ALT=4000;d.domObject=function(g){if(g)this.$=g;};d.domObject.prototype=(function(){var g=function(h,i){return function(j){if(typeof a!='undefined')h.fire(i,new d.event(j));};};return{getPrivate:function(){var h;if(!(h=this.getCustomData('_')))this.setCustomData('_',h={});return h;},on:function(h){var k=this;var i=k.getCustomData('_cke_nativeListeners');if(!i){i={};k.setCustomData('_cke_nativeListeners',i);}if(!i[h]){var j=i[h]=g(k,h);if(k.$.addEventListener)k.$.addEventListener(h,j,!!a.event.useCapture);
+else if(k.$.attachEvent)k.$.attachEvent('on'+h,j);}return a.event.prototype.on.apply(k,arguments);},removeListener:function(h){var k=this;a.event.prototype.removeListener.apply(k,arguments);if(!k.hasListeners(h)){var i=k.getCustomData('_cke_nativeListeners'),j=i&&i[h];if(j){if(k.$.removeEventListener)k.$.removeEventListener(h,j,false);else if(k.$.detachEvent)k.$.detachEvent('on'+h,j);delete i[h];}}}};})();(function(g){var h={};g.equals=function(i){return i&&i.$===this.$;};g.setCustomData=function(i,j){var k=this.getUniqueId(),l=h[k]||(h[k]={});l[i]=j;return this;};g.getCustomData=function(i){var j=this.$._cke_expando,k=j&&h[j];return k&&k[i];};g.removeCustomData=function(i){var j=this.$._cke_expando,k=j&&h[j],l=k&&k[i];if(typeof l!='undefined')delete k[i];return l||null;};g.getUniqueId=function(){return this.$._cke_expando||(this.$._cke_expando=e.getNextNumber());};a.event.implementOn(g);})(d.domObject.prototype);d.window=function(g){d.domObject.call(this,g);};d.window.prototype=new d.domObject();e.extend(d.window.prototype,{focus:function(){if(b.webkit&&this.$.parent)this.$.parent.focus();this.$.focus();},getViewPaneSize:function(){var g=this.$.document,h=g.compatMode=='CSS1Compat';return{width:(h?g.documentElement.clientWidth:g.body.clientWidth)||(0),height:(h?g.documentElement.clientHeight:g.body.clientHeight)||(0)};},getScrollPosition:function(){var g=this.$;if('pageXOffset' in g)return{x:g.pageXOffset||0,y:g.pageYOffset||0};else{var h=g.document;return{x:h.documentElement.scrollLeft||h.body.scrollLeft||0,y:h.documentElement.scrollTop||h.body.scrollTop||0};}}});d.document=function(g){d.domObject.call(this,g);};var g=d.document;g.prototype=new d.domObject();e.extend(g.prototype,{appendStyleSheet:function(h){if(this.$.createStyleSheet)this.$.createStyleSheet(h);else{var i=new d.element('link');i.setAttributes({rel:'stylesheet',type:'text/css',href:h});this.getHead().append(i);}},createElement:function(h,i){var j=new d.element(h,this);if(i){if(i.attributes)j.setAttributes(i.attributes);if(i.styles)j.setStyles(i.styles);}return j;},createText:function(h){return new d.text(h,this);},focus:function(){this.getWindow().focus();},getById:function(h){var i=this.$.getElementById(h);return i?new d.element(i):null;},getByAddress:function(h,i){var j=this.$.documentElement;for(var k=0;j&&k<h.length;k++){var l=h[k];if(!i){j=j.childNodes[l];continue;}var m=-1;for(var n=0;n<j.childNodes.length;n++){var o=j.childNodes[n];if(i===true&&o.nodeType==3&&o.previousSibling&&o.previousSibling.nodeType==3)continue;
+m++;if(m==l){j=o;break;}}}return j?new d.node(j):null;},getElementsByTag:function(h,i){if(!c&&i)h=i+':'+h;return new d.nodeList(this.$.getElementsByTagName(h));},getHead:function(){var h=this.$.getElementsByTagName('head')[0];h=new d.element(h);return(this.getHead=function(){return h;})();},getBody:function(){var h=new d.element(this.$.body);return(this.getBody=function(){return h;})();},getDocumentElement:function(){var h=new d.element(this.$.documentElement);return(this.getDocumentElement=function(){return h;})();},getWindow:function(){var h=new d.window(this.$.parentWindow||this.$.defaultView);return(this.getWindow=function(){return h;})();}});d.node=function(h){if(h){switch(h.nodeType){case 1:return new d.element(h);case 3:return new d.text(h);}d.domObject.call(this,h);}return this;};d.node.prototype=new d.domObject();a.NODE_ELEMENT=1;a.NODE_TEXT=3;a.NODE_COMMENT=8;a.NODE_DOCUMENT_FRAGMENT=11;a.POSITION_IDENTICAL=0;a.POSITION_DISCONNECTED=1;a.POSITION_FOLLOWING=2;a.POSITION_PRECEDING=4;a.POSITION_IS_CONTAINED=8;a.POSITION_CONTAINS=16;e.extend(d.node.prototype,{appendTo:function(h,i){h.append(this,i);return h;},clone:function(h,i){var j=this.$.cloneNode(h);if(!i){var k=function(l){if(l.nodeType!=1)return;l.removeAttribute('id',false);l.removeAttribute('_cke_expando',false);var m=l.childNodes;for(var n=0;n<m.length;n++)k(m[n]);};k(j);}return new d.node(j);},hasPrevious:function(){return!!this.$.previousSibling;},hasNext:function(){return!!this.$.nextSibling;},insertAfter:function(h){h.$.parentNode.insertBefore(this.$,h.$.nextSibling);return h;},insertBefore:function(h){h.$.parentNode.insertBefore(this.$,h.$);return h;},insertBeforeMe:function(h){this.$.parentNode.insertBefore(h.$,this.$);return h;},getAddress:function(h){var i=[],j=this.getDocument().$.documentElement,k=this.$;while(k&&k!=j){var l=k.parentNode,m=-1;for(var n=0;n<l.childNodes.length;n++){var o=l.childNodes[n];if(h&&o.nodeType==3&&o.previousSibling&&o.previousSibling.nodeType==3)continue;m++;if(o==k)break;}i.unshift(m);k=k.parentNode;}return i;},getDocument:function(){var h=new g(this.$.ownerDocument||this.$.parentNode.ownerDocument);return(this.getDocument=function(){return h;})();},getIndex:function(){var h=this.$,i=h.parentNode&&h.parentNode.firstChild,j=-1;while(i){j++;if(i==h)return j;i=i.nextSibling;}return-1;},getNextSourceNode:function(h,i,j){if(j&&!j.call){var k=j;j=function(n){return!n.equals(k);};}var l=!h&&this.getFirst&&this.getFirst(),m;if(!l){if(this.type==1&&j&&j(this,true)===false)return null;
+l=this.getNext();}while(!l&&(m=(m||this).getParent())){if(j&&j(m,true)===false)return null;l=m.getNext();}if(!l)return null;if(j&&j(l)===false)return null;if(i&&i!=l.type)return l.getNextSourceNode(false,i,j);return l;},getPreviousSourceNode:function(h,i,j){if(j&&!j.call){var k=j;j=function(n){return!n.equals(k);};}var l=!h&&this.getLast&&this.getLast(),m;if(!l){if(this.type==1&&j&&j(this,true)===false)return null;l=this.getPrevious();}while(!l&&(m=(m||this).getParent())){if(j&&j(m,true)===false)return null;l=m.getPrevious();}if(!l)return null;if(j&&j(l)===false)return null;if(i&&l.type!=i)return l.getPreviousSourceNode(false,i,j);return l;},getPrevious:function(h){var i=this.$,j;do{i=i.previousSibling;j=i&&new d.node(i);}while(j&&h&&!h(j))return j;},getNext:function(h){var i=this.$,j;do{i=i.nextSibling;j=i&&new d.node(i);}while(j&&h&&!h(j))return j;},getParent:function(){var h=this.$.parentNode;return h&&h.nodeType==1?new d.node(h):null;},getParents:function(h){var i=this,j=[];do j[h?'push':'unshift'](i);while(i=i.getParent())return j;},getCommonAncestor:function(h){var j=this;if(h.equals(j))return j;if(h.contains&&h.contains(j))return h;var i=j.contains?j:j.getParent();do if(i.contains(h))return i;while(i=i.getParent())return null;},getPosition:function(h){var i=this.$,j=h.$;if(i.compareDocumentPosition)return i.compareDocumentPosition(j);if(i==j)return 0;if(this.type==1&&h.type==1){if(i.contains){if(i.contains(j))return 16+4;if(j.contains(i))return 8+2;}if('sourceIndex' in i)return i.sourceIndex<0||j.sourceIndex<0?1:i.sourceIndex<j.sourceIndex?4:2;}var k=this.getAddress(),l=h.getAddress(),m=Math.min(k.length,l.length);for(var n=0;n<=m-1;n++)if(k[n]!=l[n]){if(n<m)return k[n]<l[n]?4:2;break;}return k.length<l.length?16+4:8+2;},getAscendant:function(h,i){var j=this.$;if(!i)j=j.parentNode;while(j){if(j.nodeName&&j.nodeName.toLowerCase()==h)return new d.node(j);j=j.parentNode;}return null;},hasAscendant:function(h,i){var j=this.$;if(!i)j=j.parentNode;while(j){if(j.nodeName&&j.nodeName.toLowerCase()==h)return true;j=j.parentNode;}return false;},move:function(h,i){h.append(this.remove(),i);},remove:function(h){var i=this.$,j=i.parentNode;if(j){if(h)for(var k;k=i.firstChild;)j.insertBefore(i.removeChild(k),i);j.removeChild(i);}return this;},replace:function(h){this.insertBefore(h);h.remove();},trim:function(){this.ltrim();this.rtrim();},ltrim:function(){var k=this;var h;while(k.getFirst&&(h=k.getFirst())){if(h.type==3){var i=e.ltrim(h.getText()),j=h.getLength();
+if(!i){h.remove();continue;}else if(i.length<j){h.split(j-i.length);k.$.removeChild(k.$.firstChild);}}break;}},rtrim:function(){var k=this;var h;while(k.getLast&&(h=k.getLast())){if(h.type==3){var i=e.rtrim(h.getText()),j=h.getLength();if(!i){h.remove();continue;}else if(i.length<j){h.split(i.length);k.$.lastChild.parentNode.removeChild(k.$.lastChild);}}break;}if(!c&&!b.opera){h=k.$.lastChild;if(h&&h.type==1&&h.nodeName.toLowerCase()=='br')h.parentNode.removeChild(h);}}});d.nodeList=function(h){this.$=h;};d.nodeList.prototype={count:function(){return this.$.length;},getItem:function(h){var i=this.$[h];return i?new d.node(i):null;}};d.element=function(h,i){if(typeof h=='string')h=(i?i.$:document).createElement(h);d.domObject.call(this,h);};var h=d.element;h.get=function(i){return i&&(i.$?i:new h(i));};h.prototype=new d.node();h.createFromHtml=function(i,j){var k=new h('div',j);k.setHtml(i);return k.getFirst().remove();};h.setMarker=function(i,j,k,l){var m=j.getCustomData('list_marker_id')||j.setCustomData('list_marker_id',e.getNextNumber()).getCustomData('list_marker_id'),n=j.getCustomData('list_marker_names')||j.setCustomData('list_marker_names',{}).getCustomData('list_marker_names');i[m]=j;n[k]=1;return j.setCustomData(k,l);};h.clearAllMarkers=function(i){for(var j in i)h.clearMarkers(i,i[j],true);};h.clearMarkers=function(i,j,k){var l=j.getCustomData('list_marker_names'),m=j.getCustomData('list_marker_id');for(var n in l)j.removeCustomData(n);j.removeCustomData('list_marker_names');if(k){j.removeCustomData('list_marker_id');delete i[m];}};e.extend(h.prototype,{type:1,addClass:function(i){var j=this.$.className;if(j){var k=new RegExp('(?:^|\\s)'+i+'(?:\\s|$)','');if(!k.test(j))j+=' '+i;}this.$.className=j||i;},removeClass:function(i){var j=this.getAttribute('class');if(j){var k=new RegExp('(?:^|\\s+)'+i+'(?=\\s|$)','i');if(k.test(j)){j=j.replace(k,'').replace(/^\s+/,'');if(j)this.setAttribute('class',j);else this.removeAttribute('class');}}},hasClass:function(i){var j=new RegExp('(?:^|\\s+)'+i+'(?=\\s|$)','');return j.test(this.getAttribute('class'));},append:function(i,j){var k=this;if(typeof i=='string')i=k.getDocument().createElement(i);if(j)k.$.insertBefore(i.$,k.$.firstChild);else k.$.appendChild(i.$);return i;},appendHtml:function(i){var k=this;if(!k.$.childNodes.length)k.setHtml(i);else{var j=new h('div',k.getDocument());j.setHtml(i);j.moveChildren(k);}},appendText:function(i){if(this.$.text!=undefined)this.$.text+=i;else this.append(new d.text(i));
+},appendBogus:function(){var j=this;var i=j.getLast();while(i&&i.type==3&&!e.rtrim(i.getText()))i=i.getPrevious();if(!i||!i.is||!i.is('br'))j.append(b.opera?j.getDocument().createText(''):j.getDocument().createElement('br'));},breakParent:function(i){var l=this;var j=new d.range(l.getDocument());j.setStartAfter(l);j.setEndAfter(i);var k=j.extractContents();j.insertNode(l.remove());k.insertAfterNode(l);},contains:c||b.webkit?function(i){var j=this.$;return i.type!=1?j.contains(i.getParent().$):j!=i.$&&j.contains(i.$);}:function(i){return!!(this.$.compareDocumentPosition(i.$)&16);},focus:function(){try{this.$.focus();}catch(i){}},getHtml:function(){return this.$.innerHTML;},getOuterHtml:function(){var j=this;if(j.$.outerHTML)return j.$.outerHTML.replace(/<\?[^>]*>/,'');var i=j.$.ownerDocument.createElement('div');i.appendChild(j.$.cloneNode(true));return i.innerHTML;},setHtml:function(i){return this.$.innerHTML=i;},setText:function(i){h.prototype.setText=this.$.innerText!=undefined?function(j){return this.$.innerText=j;}:function(j){return this.$.textContent=j;};return this.setText(i);},getAttribute:(function(){var i=function(j){return this.$.getAttribute(j,2);};if(c&&(b.ie7Compat||b.ie6Compat))return function(j){var l=this;switch(j){case 'class':j='className';break;case 'tabindex':var k=i.call(l,j);if(k!==0&&l.$.tabIndex===0)k=null;return k;break;case 'checked':return l.$.checked;break;case 'style':return l.$.style.cssText;}return i.call(l,j);};else return i;})(),getChildren:function(){return new d.nodeList(this.$.childNodes);},getComputedStyle:c?function(i){return this.$.currentStyle[e.cssStyleToDomStyle(i)];}:function(i){return this.getWindow().$.getComputedStyle(this.$,'').getPropertyValue(i);},getDtd:function(){var i=f[this.getName()];this.getDtd=function(){return i;};return i;},getElementsByTag:g.prototype.getElementsByTag,getTabIndex:c?function(){var i=this.$.tabIndex;if(i===0&&!f.$tabIndex[this.getName()]&&parseInt(this.getAttribute('tabindex'),10)!==0)i=-1;return i;}:b.webkit?function(){var i=this.$.tabIndex;if(i==undefined){i=parseInt(this.getAttribute('tabindex'),10);if(isNaN(i))i=-1;}return i;}:function(){return this.$.tabIndex;},getText:function(){return this.$.textContent||this.$.innerText||'';},getWindow:function(){return this.getDocument().getWindow();},getId:function(){return this.$.id||null;},getNameAtt:function(){return this.$.name||null;},getName:function(){var i=this.$.nodeName.toLowerCase();if(c){var j=this.$.scopeName;if(j!='HTML')i=j.toLowerCase()+':'+i;
+}return(this.getName=function(){return i;})();},getValue:function(){return this.$.value;},getFirst:function(){var i=this.$.firstChild;return i?new d.node(i):null;},getLast:function(i){var j=this.$.lastChild,k=j&&new d.node(j);if(k&&i&&!i(k))k=k.getPrevious(i);return k;},getStyle:function(i){return this.$.style[e.cssStyleToDomStyle(i)];},is:function(){var i=this.getName();for(var j=0;j<arguments.length;j++)if(arguments[j]==i)return true;return false;},isEditable:function(){var i=this.getName(),j=!f.$nonEditable[i]&&(f[i]||f.span);return j&&j['#'];},isIdentical:function(i){if(this.getName()!=i.getName())return false;var j=this.$.attributes,k=i.$.attributes,l=j.length,m=k.length;if(!c&&l!=m)return false;for(var n=0;n<l;n++){var o=j[n];if((!c||o.specified&&o.nodeName!='_cke_expando')&&(o.nodeValue!=i.getAttribute(o.nodeName)))return false;}if(c)for(n=0;n<m;n++){o=k[n];if((!c||o.specified&&o.nodeName!='_cke_expando')&&(o.nodeValue!=j.getAttribute(o.nodeName)))return false;}return true;},isVisible:function(){return this.$.offsetWidth&&this.$.style.visibility!='hidden';},hasAttributes:c&&(b.ie7Compat||b.ie6Compat)?function(){var i=this.$.attributes;for(var j=0;j<i.length;j++){var k=i[j];switch(k.nodeName){case 'class':if(this.getAttribute('class'))return true;case '_cke_expando':continue;default:if(k.specified)return true;}}return false;}:function(){var i=this.$.attributes;return i.length>1||i.length==1&&i[0].nodeName!='_cke_expando';},hasAttribute:function(i){var j=this.$.attributes.getNamedItem(i);return!!(j&&j.specified);},hide:function(){this.setStyle('display','none');},moveChildren:function(i,j){var k=this.$;i=i.$;if(k==i)return;var l;if(j)while(l=k.lastChild)i.insertBefore(k.removeChild(l),i.firstChild);else while(l=k.firstChild)i.appendChild(k.removeChild(l));},show:function(){this.setStyles({display:'',visibility:''});},setAttribute:(function(){var i=function(j,k){this.$.setAttribute(j,k);return this;};if(c&&(b.ie7Compat||b.ie6Compat))return function(j,k){var l=this;if(j=='class')l.$.className=k;else if(j=='style')l.$.style.cssText=k;else if(j=='tabindex')l.$.tabIndex=k;else if(j=='checked')l.$.checked=k;else i.apply(l,arguments);return l;};else return i;})(),setAttributes:function(i){for(var j in i)this.setAttribute(j,i[j]);return this;},setValue:function(i){this.$.value=i;return this;},removeAttribute:(function(){var i=function(j){this.$.removeAttribute(j);};if(c&&(b.ie7Compat||b.ie6Compat))return function(j){if(j=='class')j='className';else if(j=='tabindex')j='tabIndex';
+i.call(this,j);};else return i;})(),removeAttributes:function(i){for(var j=0;j<i.length;j++)this.removeAttribute(i[j]);},removeStyle:function(i){var j=this;if(j.$.style.removeAttribute)j.$.style.removeAttribute(e.cssStyleToDomStyle(i));else j.setStyle(i,'');if(!j.$.style.cssText)j.removeAttribute('style');},setStyle:function(i,j){this.$.style[e.cssStyleToDomStyle(i)]=j;return this;},setStyles:function(i){for(var j in i)this.setStyle(j,i[j]);return this;},setOpacity:function(i){if(c){i=Math.round(i*100);this.setStyle('filter',i>=100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+i+')');}else this.setStyle('opacity',i);},unselectable:b.gecko?function(){this.$.style.MozUserSelect='none';}:b.webkit?function(){this.$.style.KhtmlUserSelect='none';}:function(){if(c||b.opera){var i=this.$,j,k=0;i.unselectable='on';while(j=i.all[k++])switch(j.tagName.toLowerCase()){case 'iframe':case 'textarea':case 'input':case 'select':break;default:j.unselectable='on';}}},getPositionedAncestor:function(){var i=this;while(i.getName()!='html'){if(i.getComputedStyle('position')!='static')return i;i=i.getParent();}return null;},getDocumentPosition:function(i){var D=this;var j=0,k=0,l=D.getDocument().getBody(),m=D.getDocument().$.compatMode=='BackCompat',n=D.getDocument();if(document.documentElement.getBoundingClientRect){var o=D.$.getBoundingClientRect(),p=n.$,q=p.documentElement,r=q.clientTop||l.$.clientTop||0,s=q.clientLeft||l.$.clientLeft||0,t=true;if(c){var u=n.getDocumentElement().contains(D),v=n.getBody().contains(D);t=m&&v||!m&&u;}if(t){j=o.left+(!m&&q.scrollLeft||l.$.scrollLeft);j-=s;k=o.top+(!m&&q.scrollTop||l.$.scrollTop);k-=r;}}else{var w=D,x=null,y;while(w&&!(w.getName()=='body'||w.getName()=='html')){j+=w.$.offsetLeft-w.$.scrollLeft;k+=w.$.offsetTop-w.$.scrollTop;if(!w.equals(D)){j+=w.$.clientLeft||0;k+=w.$.clientTop||0;}var z=x;while(z&&!z.equals(w)){j-=z.$.scrollLeft;k-=z.$.scrollTop;z=z.getParent();}x=w;w=(y=w.$.offsetParent)?new h(y):null;}}if(i){var A=D.getWindow(),B=i.getWindow();if(!A.equals(B)&&A.$.frameElement){var C=new h(A.$.frameElement).getDocumentPosition(i);j+=C.x;k+=C.y;}}if(!document.documentElement.getBoundingClientRect)if(b.gecko&&!m){j+=D.$.clientLeft?1:0;k+=D.$.clientTop?1:0;}return{x:j,y:k};},scrollIntoView:function(i){var o=this;var j=o.getWindow(),k=j.getViewPaneSize().height,l=k*-1;if(i)l+=k;else{l+=o.$.offsetHeight||0;l+=parseInt(o.getComputedStyle('marginBottom')||0,10)||0;}var m=o.getDocumentPosition();l+=m.y;l=l<0?0:l;var n=j.getScrollPosition().y;
+if(l>n||l<n-k)j.$.scrollTo(0,l);},setState:function(i){var j=this;switch(i){case 1:j.addClass('cke_on');j.removeClass('cke_off');j.removeClass('cke_disabled');break;case 0:j.addClass('cke_disabled');j.removeClass('cke_off');j.removeClass('cke_on');break;default:j.addClass('cke_off');j.removeClass('cke_on');j.removeClass('cke_disabled');break;}},getFrameDocument:function(){var i=this.$;try{i.contentWindow.document;}catch(j){i.src=i.src;if(c&&b.version<7)window.showModalDialog('javascript:document.write("<script>window.setTimeout(function(){window.close();},50);</script>")');}return i&&new g(i.contentWindow.document);},copyAttributes:function(i,j){var p=this;var k=p.$.attributes;j=j||{};for(var l=0;l<k.length;l++){var m=k[l];if(m.specified||c&&m.nodeValue&&m.nodeName.toLowerCase()=='value'){var n=m.nodeName;if(n in j)continue;var o=p.getAttribute(n);if(o===null)o=m.nodeValue;i.setAttribute(n,o);}}if(p.$.style.cssText!=='')i.$.style.cssText=p.$.style.cssText;},renameNode:function(i){var l=this;if(l.getName()==i)return;var j=l.getDocument(),k=new h(i,j);l.copyAttributes(k);l.moveChildren(k);l.$.parentNode.replaceChild(k.$,l.$);k.$._cke_expando=l.$._cke_expando;l.$=k.$;},getChild:function(i){var j=this.$;if(!i.slice)j=j.childNodes[i];else while(i.length>0&&j)j=j.childNodes[i.shift()];return j?new d.node(j):null;},getChildCount:function(){return this.$.childNodes.length;},disableContextMenu:function(){this.on('contextmenu',function(i){if(!i.data.getTarget().hasClass('cke_enable_context_menu'))i.data.preventDefault();});}});a.command=function(i,j){this.uiItems=[];this.exec=function(k){if(this.state==0)return false;if(this.editorFocus)i.focus();return j.exec.call(this,i,k)!==false;};e.extend(this,j,{modes:{wysiwyg:1},editorFocus:true,state:2});a.event.call(this);};a.command.prototype={enable:function(){var i=this;if(i.state==0)i.setState(!i.preserveState||typeof i.previousState=='undefined'?2:i.previousState);},disable:function(){this.setState(0);},setState:function(i){var j=this;if(j.state==i)return false;j.previousState=j.state;j.state=i;j.fire('state');return true;},toggleState:function(){var i=this;if(i.state==2)i.setState(1);else if(i.state==1)i.setState(2);}};a.event.implementOn(a.command.prototype,true);a.ENTER_P=1;a.ENTER_BR=2;a.ENTER_DIV=3;a.config={customConfig:a.getUrl('config.js'),autoUpdateElement:true,baseHref:'',contentsCss:a.basePath+'contents.css',contentsLangDirection:'ltr',language:'',defaultLanguage:'en',enterMode:1,shiftEnterMode:2,corePlugins:'',docType:'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',fullPage:false,height:200,plugins:'about,basicstyles,blockquote,button,clipboard,colorbutton,colordialog,contextmenu,elementspath,enterkey,entities,filebrowser,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,maximize,newpage,pagebreak,pastefromword,pastetext,popup,preview,print,removeformat,resize,save,scayt,smiley,showblocks,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc',extraPlugins:'',removePlugins:'',protectedSource:[],tabIndex:0,theme:'default',skin:'kama',width:'',baseFloatZIndex:10000};
+var i=a.config;a.focusManager=function(j){if(j.focusManager)return j.focusManager;this.hasFocus=false;this._={editor:j};return this;};a.focusManager.prototype={focus:function(){var k=this;if(k._.timer)clearTimeout(k._.timer);if(!k.hasFocus){if(a.currentInstance)a.currentInstance.focusManager.forceBlur();var j=k._.editor;j.container.getFirst().addClass('cke_focus');k.hasFocus=true;j.fire('focus');}},blur:function(){var j=this;if(j._.timer)clearTimeout(j._.timer);j._.timer=setTimeout(function(){delete j._.timer;j.forceBlur();},100);},forceBlur:function(){if(this.hasFocus){var j=this._.editor;j.container.getFirst().removeClass('cke_focus');this.hasFocus=false;j.fire('blur');}}};(function(){var j={};a.lang={languages:{af:1,ar:1,bg:1,bn:1,bs:1,ca:1,cs:1,da:1,de:1,el:1,'en-au':1,'en-ca':1,'en-uk':1,en:1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,'fr-ca':1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,is:1,it:1,ja:1,km:1,ko:1,lt:1,lv:1,mn:1,ms:1,nb:1,nl:1,no:1,pl:1,'pt-br':1,pt:1,ro:1,ru:1,sk:1,sl:1,'sr-latn':1,sr:1,sv:1,th:1,tr:1,uk:1,vi:1,'zh-cn':1,zh:1},load:function(k,l,m){if(!k||!a.lang.languages[k])k=this.detect(l,k);if(!this[k])a.scriptLoader.load(a.getUrl('lang/'+k+'.js'),function(){m(k,this[k]);},this);else m(k,this[k]);},detect:function(k,l){var m=this.languages;l=l||navigator.userLanguage||navigator.language;var n=l.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),o=n[1],p=n[2];if(m[o+'-'+p])o=o+'-'+p;else if(!m[o])o=null;a.lang.detect=o?function(){return o;}:function(q){return q;};return o||k;}};})();a.scriptLoader=(function(){var j={},k={};return{load:function(l,m,n,o){var p=typeof l=='string';if(p)l=[l];if(!n)n=a;var q=l.length,r=[],s=[],t=function(y){if(m)if(p)m.call(n,y);else m.call(n,r,s);};if(q===0){t(true);return;}var u=function(y,z){(z?r:s).push(y);if(--q<=0)t(z);},v=function(y,z){j[y]=1;var A=k[y];delete k[y];for(var B=0;B<A.length;B++)A[B](y,z);},w=function(y){if(o!==true&&j[y]){u(y,true);return;}var z=k[y]||(k[y]=[]);z.push(u);if(z.length>1)return;var A=new h('script');A.setAttributes({type:'text/javascript',src:y});if(m)if(c)A.$.onreadystatechange=function(){if(A.$.readyState=='loaded'||A.$.readyState=='complete'){A.$.onreadystatechange=null;v(y,true);}};else{A.$.onload=function(){setTimeout(function(){v(y,true);},0);};A.$.onerror=function(){v(y,false);};}A.appendTo(a.document.getHead());};for(var x=0;x<q;x++)w(l[x]);},loadCode:function(l){var m=new h('script');m.setAttribute('type','text/javascript');m.appendText(l);m.appendTo(a.document.getHead());}};})();a.resourceManager=function(j,k){var l=this;
+l.basePath=j;l.fileName=k;l.registered={};l.loaded={};l.externals={};l._={waitingList:{}};};a.resourceManager.prototype={add:function(j,k){if(this.registered[j])throw '[CKEDITOR.resourceManager.add] The resource name "'+j+'" is already registered.';this.registered[j]=k||{};},get:function(j){return this.registered[j]||null;},getPath:function(j){var k=this.externals[j];return a.getUrl(k&&k.dir||this.basePath+j+'/');},getFilePath:function(j){var k=this.externals[j];return a.getUrl(this.getPath(j)+(k&&k.file||this.fileName+'.js'));},addExternal:function(j,k,l){j=j.split(',');for(var m=0;m<j.length;m++){var n=j[m];this.externals[n]={dir:k,file:l};}},load:function(j,k,l){if(!e.isArray(j))j=j?[j]:[];var m=this.loaded,n=this.registered,o=[],p={},q={};for(var r=0;r<j.length;r++){var s=j[r];if(!s)continue;if(!m[s]&&!n[s]){var t=this.getFilePath(s);o.push(t);if(!(t in p))p[t]=[];p[t].push(s);}else q[s]=this.get(s);}a.scriptLoader.load(o,function(u,v){if(v.length)throw '[CKEDITOR.resourceManager.load] Resource name "'+p[v[0]].join(',')+'" was not found at "'+v[0]+'".';for(var w=0;w<u.length;w++){var x=p[u[w]];for(var y=0;y<x.length;y++){var z=x[y];q[z]=this.get(z);m[z]=1;}}k.call(l,q);},this);}};a.plugins=new a.resourceManager('plugins/','plugin');var j=a.plugins;j.load=e.override(j.load,function(k){return function(l,m,n){var o={},p=function(q){k.call(this,q,function(r){e.extend(o,r);var s=[];for(var t in r){var u=r[t],v=u&&u.requires;if(v)for(var w=0;w<v.length;w++)if(!o[v[w]])s.push(v[w]);}if(s.length)p.call(this,s);else{for(t in o){u=o[t];if(u.onLoad&&!u.onLoad._called){u.onLoad();u.onLoad._called=1;}}if(m)m.call(n||window,o);}},this);};p.call(this,l);};});j.setLang=function(k,l,m){var n=this.get(k);n.lang[l]=m;};(function(){var k={},l=function(m,n){var o=function(){k[m]=1;n();},p=new h('img');p.on('load',o);p.on('error',o);p.setAttribute('src',m);};a.imageCacher={load:function(m,n){var o=m.length,p=function(){if(--o===0)n();};for(var q=0;q<m.length;q++){var r=m[q];if(k[r])p();else l(r,p);}}};})();a.skins=(function(){var k={},l={},m={},n=function(o,p,q){var r=k[o],s=function(A){for(var B=0;B<A.length;B++)A[B]=a.getUrl(m[o]+A[B]);};if(!l[o]){var t=r.preload;if(t&&t.length>0){s(t);a.imageCacher.load(t,function(){l[o]=1;n(o,p,q);});return;}l[o]=1;}p=r[p];var u=!p||!!p._isLoaded;if(u)q&&q();else{var v=p._pending||(p._pending=[]);v.push(q);if(v.length>1)return;var w=!p.css||!p.css.length,x=!p.js||!p.js.length,y=function(){if(w&&x){p._isLoaded=1;for(var A=0;A<v.length;A++)if(v[A])v[A]();
+}};if(!w){s(p.css);for(var z=0;z<p.css.length;z++)a.document.appendStyleSheet(p.css[z]);w=1;}if(!x){s(p.js);a.scriptLoader.load(p.js,function(){x=1;y();});}y();}};return{add:function(o,p){k[o]=p;p.skinPath=m[o]||(m[o]=a.getUrl('skins/'+o+'/'));},load:function(o,p,q){var r=o.skinName,s=o.skinPath;if(k[r]){n(r,p,q);var t=k[r];if(t.init)t.init(o);}else{m[r]=s;a.scriptLoader.load(s+'skin.js',function(){n(r,p,q);var u=k[r];if(u.init)u.init(o);});}}};})();a.themes=new a.resourceManager('themes/','theme');a.ui=function(k){if(k.ui)return k.ui;this._={handlers:{},items:{},editor:k};return this;};var k=a.ui;k.prototype={add:function(l,m,n){this._.items[l]={type:m,command:n.command||null,args:Array.prototype.slice.call(arguments,2)};},create:function(l){var q=this;var m=q._.items[l],n=m&&q._.handlers[m.type],o=m&&m.command&&q._.editor.getCommand(m.command),p=n&&n.create.apply(q,m.args);if(o)o.uiItems.push(p);return p;},addHandler:function(l,m){this._.handlers[l]=m;}};(function(){var l=0,m=function(){var x='editor'+ ++l;return a.instances&&a.instances[x]?m():x;},n={},o=function(x){var y=x.config.customConfig;if(!y)return false;var z=n[y]||(n[y]={});if(z.fn){z.fn.call(x,x.config);if(x.config.customConfig==y||!o(x))x.fireOnce('customConfigLoaded');}else a.scriptLoader.load(y,function(){if(a.editorConfig)z.fn=a.editorConfig;else z.fn=function(){};o(x);});return true;},p=function(x,y){x.on('customConfigLoaded',function(){if(y){if(y.on)for(var z in y.on)x.on(z,y.on[z]);e.extend(x.config,y,true);delete x.config.on;}q(x);});if(y&&y.customConfig!=undefined)x.config.customConfig=y.customConfig;if(!o(x))x.fireOnce('customConfigLoaded');},q=function(x){var y=x.config.skin.split(','),z=y[0],A=a.getUrl(y[1]||'skins/'+z+'/');x.skinName=z;x.skinPath=A;x.skinClass='cke_skin_'+z;x.fireOnce('configLoaded');r(x);},r=function(x){a.lang.load(x.config.language,x.config.defaultLanguage,function(y,z){x.langCode=y;x.lang=e.prototypedCopy(z);if(b.gecko&&b.version<10900&&x.lang.dir=='rtl')x.lang.dir='ltr';s(x);});},s=function(x){var y=x.config,z=y.plugins,A=y.extraPlugins,B=y.removePlugins;if(A){var C=new RegExp('(?:^|,)(?:'+A.replace(/\s*,\s*/g,'|')+')(?=,|$)','g');z=z.replace(C,'');z+=','+A;}if(B){C=new RegExp('(?:^|,)(?:'+B.replace(/\s*,\s*/g,'|')+')(?=,|$)','g');z=z.replace(C,'');}j.load(z.split(','),function(D){var E=[],F=[],G=[];x.plugins=D;for(var H in D){var I=D[H],J=I.lang,K=j.getPath(H),L=null;I.path=K;if(J){L=e.indexOf(J,x.langCode)>=0?x.langCode:J[0];if(!I.lang[L])G.push(a.getUrl(K+'lang/'+L+'.js'));
+else{e.extend(x.lang,I.lang[L]);L=null;}}F.push(L);E.push(I);}a.scriptLoader.load(G,function(){var M=['beforeInit','init','afterInit'];for(var N=0;N<M.length;N++)for(var O=0;O<E.length;O++){var P=E[O];if(N===0&&F[O]&&P.lang)e.extend(x.lang,P.lang[F[O]]);if(P[M[N]])P[M[N]](x);}x.fire('pluginsLoaded');t(x);});});},t=function(x){a.skins.load(x,'editor',function(){u(x);});},u=function(x){var y=x.config.theme;a.themes.load(y,function(){var z=x.theme=a.themes.get(y);z.path=a.themes.getPath(y);z.build(x);if(x.config.autoUpdateElement)v(x);});},v=function(x){var y=x.element;if(x.elementMode==1&&y.is('textarea')){var z=y.$.form&&new h(y.$.form);if(z){function A(){x.updateElement();};z.on('submit',A);if(!z.$.submit.nodeName)z.$.submit=e.override(z.$.submit,function(B){return function(){x.updateElement();if(B.apply)B.apply(this,arguments);else B();};});x.on('destroy',function(){z.removeListener('submit',A);});}}};function w(){var x,y=this._.commands,z=this.mode;for(var A in y){x=y[A];x[x.modes[z]?'enable':'disable']();}};a.editor.prototype._init=function(){var z=this;var x=h.get(z._.element),y=z._.instanceConfig;delete z._.element;delete z._.instanceConfig;z._.commands={};z._.styles=[];z.element=x;z.name=x&&z.elementMode==1&&(x.getId()||x.getNameAtt())||m();if(z.name in a.instances)throw '[CKEDITOR.editor] The instance "'+z.name+'" already exists.';z.config=e.prototypedCopy(i);z.ui=new k(z);z.focusManager=new a.focusManager(z);a.fire('instanceCreated',null,z);z.on('mode',w,null,null,1);p(z,y);};})();e.extend(a.editor.prototype,{addCommand:function(l,m){return this._.commands[l]=new a.command(this,m);},addCss:function(l){this._.styles.push(l);},destroy:function(l){var m=this;if(!l)m.updateElement();m.theme.destroy(m);m.fire('destroy');a.remove(m);},execCommand:function(l,m){var n=this.getCommand(l),o={name:l,commandData:m,command:n};if(n&&n.state!=0)if(this.fire('beforeCommandExec',o)!==true){o.returnValue=n.exec(o.commandData);if(!n.async&&this.fire('afterCommandExec',o)!==true)return o.returnValue;}return false;},getCommand:function(l){return this._.commands[l];},getData:function(){var n=this;n.fire('beforeGetData');var l=n._.data;if(typeof l!='string'){var m=n.element;if(m&&n.elementMode==1)l=m.is('textarea')?m.getValue():m.getHtml();else l='';}l={dataValue:l};n.fire('getData',l);return l.dataValue;},getSnapshot:function(){var l=this.fire('getSnapshot');if(typeof l!='string'){var m=this.element;if(m&&this.elementMode==1)l=m.is('textarea')?m.getValue():m.getHtml();}return l;
+},loadSnapshot:function(l){this.fire('loadSnapshot',l);},setData:function(l,m){if(m)this.on('dataReady',function(o){o.removeListener();m.call(o.editor);});var n={dataValue:l};this.fire('setData',n);this._.data=n.dataValue;this.fire('afterSetData',n);},insertHtml:function(l){this.fire('insertHtml',l);},insertElement:function(l){this.fire('insertElement',l);},checkDirty:function(){return this.mayBeDirty&&this._.previousValue!==this.getSnapshot();},resetDirty:function(){if(this.mayBeDirty)this._.previousValue=this.getSnapshot();},updateElement:function(){var m=this;var l=m.element;if(l&&m.elementMode==1)if(l.is('textarea'))l.setValue(m.getData());else l.setHtml(m.getData());}});a.on('loaded',function(){var l=a.editor._pending;if(l){delete a.editor._pending;for(var m=0;m<l.length;m++)l[m]._init();}});a.htmlParser=function(){this._={htmlPartsRegex:new RegExp("<(?:(?:\\/([^>]+)>)|(?:!--([\\S|\\s]*?)-->)|(?:([^\\s>]+)\\s*((?:(?:[^\"'>]+)|(?:\"[^\"]*\")|(?:'[^']*'))*)\\/?>))",'g')};};(function(){var l=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,m={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};a.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(n){var A=this;var o,p,q=0,r;while(o=A._.htmlPartsRegex.exec(n)){var s=o.index;if(s>q){var t=n.substring(q,s);if(r)r.push(t);else A.onText(t);}q=A._.htmlPartsRegex.lastIndex;if(p=o[1]){p=p.toLowerCase();if(r&&f.$cdata[p]){A.onCDATA(r.join(''));r=null;}if(!r){A.onTagClose(p);continue;}}if(r){r.push(o[0]);continue;}if(p=o[3]){p=p.toLowerCase();var u={},v,w=o[4],x=!!(w&&w.charAt(w.length-1)=='/');if(w)while(v=l.exec(w)){var y=v[1].toLowerCase(),z=v[2]||v[3]||v[4]||'';if(!z&&m[y])u[y]=y;else u[y]=z;}A.onTagOpen(p,u,x);if(!r&&f.$cdata[p])r=[];continue;}if(p=o[2])A.onComment(p);}if(n.length>q)A.onText(n.substring(q,n.length));}};})();a.htmlParser.comment=function(l){this.value=l;this._={isBlockLike:false};};a.htmlParser.comment.prototype={type:8,writeHtml:function(l,m){var n=this.value;if(m){if(!(n=m.onComment(n)))return;if(typeof n!='string'){n.writeHtml(l,m);return;}}l.comment(n);}};(function(){var l=/[\t\r\n ]{2,}|[\t\r\n]/g;a.htmlParser.text=function(m){this.value=m;this._={isBlockLike:false};};a.htmlParser.text.prototype={type:3,writeHtml:function(m,n){var o=this.value;if(n&&!(o=n.onText(o,this)))return;m.text(o);
+}};})();(function(){a.htmlParser.cdata=function(l){this.value=l;};a.htmlParser.cdata.prototype={type:3,writeHtml:function(l){l.write(this.value);}};})();a.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:true,hasInlineStarted:false};};(function(){var l={colgroup:1,dd:1,dt:1,li:1,option:1,p:1,td:1,tfoot:1,th:1,thead:1,tr:1},m=e.extend({table:1,ul:1,ol:1,dl:1},f.table,f.ul,f.ol,f.dl),n=f.$list,o=f.$listItem;a.htmlParser.fragment.fromHtml=function(p,q){var r=new a.htmlParser(),s=[],t=new a.htmlParser.fragment(),u=[],v=t,w=false,x;function y(C){if(u.length>0)for(var D=0;D<u.length;D++){var E=u[D],F=E.name,G=f[F],H=v.name&&f[v.name];if((!H||H[F])&&(!C||!G||G[C]||!f[C])){E=E.clone();E.parent=v;v=E;u.splice(D,1);D--;}}};function z(C,D,E){D=D||v||t;if(q&&!D.type){var F,G;if(C.attributes&&(G=C.attributes._cke_real_element_type))F=G;else F=C.name;if(!(F in f.$body)){var H=v;v=D;r.onTagOpen(q,{});D=v;if(E)v=H;}}if(C._.isBlockLike&&C.name!='pre'){var I=C.children.length,J=C.children[I-1],K;if(J&&J.type==3)if(!(K=e.rtrim(J.value)))C.children.length=I-1;else J.value=K;}D.add(C);if(C.returnPoint){v=C.returnPoint;delete C.returnPoint;}};r.onTagOpen=function(C,D,E){var F=new a.htmlParser.element(C,D);if(F.isUnknown&&E)F.isEmpty=true;if(f.$removeEmpty[C]){u.push(F);return;}else if(C=='pre')w=true;else if(C=='br'&&w){v.add(new a.htmlParser.text('\n'));return;}var G=v.name,H=G&&f[G]||(v._.isBlockLike?f.div:f.span);if(!F.isUnknown&&!v.isUnknown&&!H[C]){if(!G)return;var I=false,J;if(C in n&&G in n){var K=v.children,L=K[K.length-1];if(L&&L.name in o)x=v,J=L;else z(v,v.parent);}else if(C==G)z(v,v.parent);else{if(m[G]){if(!x)x=v;}else{z(v,v.parent,true);if(!l[G])u.unshift(v);}I=true;}if(J)v=J;else v=v.returnPoint||v.parent;if(I){r.onTagOpen.apply(this,arguments);return;}}y(C);F.parent=v;F.returnPoint=x;x=0;if(F.isEmpty)z(F);else v=F;};r.onTagClose=function(C){var D=0,E=[],F=v;while(F.type&&F.name!=C){if(!F._.isBlockLike){u.unshift(F);D++;}E.push(F);F=F.parent;}if(F.type){for(var G=0;G<E.length;G++){var H=E[G];z(H,H.parent);}v=F;if(v.name=='pre')w=false;z(F,F.parent);if(F==v)v=v.parent;}else{u.splice(0,D);D=0;}for(;D<u.length;D++)if(C==u[D].name){u.splice(D,1);D--;}};r.onText=function(C){if(!v._.hasInlineStarted&&!w){C=e.ltrim(C);if(C.length===0)return;}y();if(q&&!v.type)this.onTagOpen(q,{});if(!w)C=C.replace(/[\t\r\n ]{2,}|[\t\r\n]/g,' ');v.add(new a.htmlParser.text(C));};r.onCDATA=function(C){v.add(new a.htmlParser.cdata(C));};r.onComment=function(C){v.add(new a.htmlParser.comment(C));
+};r.parse(p);while(v.type){var A=v.parent,B=v;if(q&&!A.type&&!f.$body[B.name]){v=A;r.onTagOpen(q,{});A=v;}A.add(B);v=A;}return t;};a.htmlParser.fragment.prototype={add:function(p){var s=this;var q=s.children.length,r=q>0&&s.children[q-1]||null;if(r){if(p._.isBlockLike&&r.type==3){r.value=e.rtrim(r.value);if(r.value.length===0){s.children.pop();s.add(p);return;}}r.next=p;}p.previous=r;p.parent=s;s.children.push(p);s._.hasInlineStarted=p.type==3||p.type==1&&!p._.isBlockLike;},writeHtml:function(p,q){for(var r=0,s=this.children.length;r<s;r++)this.children[r].writeHtml(p,q);}};})();a.htmlParser.element=function(l,m){var q=this;q.name=l;q.attributes=m;q.children=[];var n=f,o=!!(n.$block[l]||n.$listItem[l]||n.$tableContent[l]),p=!!n.$empty[l];q.isEmpty=p;q.isUnknown=!n[l];q._={isBlockLike:o,hasInlineStarted:p||!o};};(function(){var l=function(m,n){m=m[0];n=n[0];return m<n?-1:m>n?1:0;};a.htmlParser.element.prototype={type:1,add:a.htmlParser.fragment.prototype.add,clone:function(){return new a.htmlParser.element(this.name,this.attributes);},writeHtml:function(m,n){var o=this.attributes;if(o._cke_replacedata){m.write(o._cke_replacedata);return;}var p=this,q=p.name,r,s;if(n){for(;;){if(!(q=n.onElementName(q)))return;p.name=q;if(!(p=n.onElement(p)))return;if(p.name==q)break;q=p.name;if(!q){a.htmlParser.fragment.prototype.writeHtml.apply(p,arguments);return;}}o=p.attributes;}m.openTag(q,o);if(m.sortAttributes){var t=[];for(r in o){s=o[r];if(n&&(!(r=n.onAttributeName(r))||(s=n.onAttribute(p,r,s))===(false)))continue;t.push([r,s]);}t.sort(l);for(var u=0,v=t.length;u<v;u++){var w=t[u];m.attribute(w[0],w[1]);}}else for(r in o){s=o[r];if(n&&(!(r=n.onAttributeName(r))||(s=n.onAttribute(p,r,s))===(false)))continue;m.attribute(r,s);}m.openTagClose(q,p.isEmpty);if(!p.isEmpty){a.htmlParser.fragment.prototype.writeHtml.apply(p,arguments);m.closeTag(q);}}};})();(function(){a.htmlParser.filter=e.createClass({$:function(q){this._={elementNames:[],attributeNames:[],elements:{$length:0},attributes:{$length:0}};if(q)this.addRules(q,10);},proto:{addRules:function(q,r){var s=this;if(typeof r!='number')r=10;m(s._.elementNames,q.elementNames,r);m(s._.attributeNames,q.attributeNames,r);n(s._.elements,q.elements,r);n(s._.attributes,q.attributes,r);s._.text=o(s._.text,q.text,r)||s._.text;s._.comment=o(s._.comment,q.comment,r)||s._.comment;},onElementName:function(q){return l(q,this._.elementNames);},onAttributeName:function(q){return l(q,this._.attributeNames);},onText:function(q){var r=this._.text;
+return r?r.filter(q):q;},onComment:function(q){var r=this._.comment;return r?r.filter(q):q;},onElement:function(q){var v=this;var r=[v._.elements[q.name],v._.elements.$],s,t;for(var u=0;u<2;u++){s=r[u];if(s){t=s.filter(q,v);if(t===false)return null;if(t&&t!=q)return v.onElement(t);}}return q;},onAttribute:function(q,r,s){var t=this._.attributes[r];if(t){var u=t.filter(s,q,this);if(u===false)return false;if(typeof u!='undefined')return u;}return s;}}});function l(q,r){for(var s=0;q&&s<r.length;s++){var t=r[s];q=q.replace(t[0],t[1]);}return q;};function m(q,r,s){var t,u,v=q.length,w=r&&r.length;if(w){for(t=0;t<v&&q[t].pri<s;t++){}for(u=w-1;u>=0;u--){var x=r[u];x.pri=s;q.splice(t,0,x);}}};function n(q,r,s){if(r)for(var t in r){var u=q[t];q[t]=o(u,r[t],s);if(!u)q.$length++;}};function o(q,r,s){if(r){r.pri=s;if(q){if(!q.splice){if(q.pri>s)q=[r,q];else q=[q,r];q.filter=p;}else m(q,r,s);return q;}else{r.filter=r;return r;}}};function p(q){var r=typeof q=='object';for(var s=0;s<this.length;s++){var t=this[s],u=t.apply(window,arguments);if(typeof u!='undefined'){if(u===false)return false;if(r&&u!=q)return u;}}return null;};})();a.htmlParser.basicWriter=e.createClass({$:function(){this._={output:[]};},proto:{openTag:function(l,m){this._.output.push('<',l);},openTagClose:function(l,m){if(m)this._.output.push(' />');else this._.output.push('>');},attribute:function(l,m){this._.output.push(' ',l,'="',m,'"');},closeTag:function(l){this._.output.push('</',l,'>');},text:function(l){this._.output.push(l);},comment:function(l){this._.output.push('<!--',l,'-->');},write:function(l){this._.output.push(l);},reset:function(){this._.output=[];},getHtml:function(l){var m=this._.output.join('');if(l)this.reset();return m;}}});delete a.loadFullCore;a.instances={};a.document=new g(document);a.add=function(l){a.instances[l.name]=l;l.on('focus',function(){if(a.currentInstance!=l){a.currentInstance=l;a.fire('currentInstance');}});l.on('blur',function(){if(a.currentInstance==l){a.currentInstance=null;a.fire('currentInstance');}});};a.remove=function(l){delete a.instances[l.name];};a.TRISTATE_ON=1;a.TRISTATE_OFF=2;a.TRISTATE_DISABLED=0;(function(){var l={address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1},m={body:1,div:1,table:1,tbody:1,tr:1,td:1,th:1,caption:1,form:1},n=function(o){var p=o.getChildren();for(var q=0,r=p.count();q<r;q++){var s=p.getItem(q);if(s.type==1&&f.$block[s.getName()])return true;}return false;};d.elementPath=function(o){var u=this;var p=null,q=null,r=[],s=o;
+while(s){if(s.type==1){if(!u.lastElement)u.lastElement=s;var t=s.getName();if(c&&s.$.scopeName!='HTML')t=s.$.scopeName.toLowerCase()+':'+t;if(!q){if(!p&&l[t])p=s;if(m[t])if(!p&&t=='div'&&!n(s))p=s;else q=s;}r.push(s);if(t=='body')break;}s=s.getParent();}u.block=p;u.blockLimit=q;u.elements=r;};})();d.elementPath.prototype={compare:function(l){var m=this.elements,n=l&&l.elements;if(!n||m.length!=n.length)return false;for(var o=0;o<m.length;o++)if(!m[o].equals(n[o]))return false;return true;}};d.text=function(l,m){if(typeof l=='string')l=(m?m.$:document).createTextNode(l);this.$=l;};d.text.prototype=new d.node();e.extend(d.text.prototype,{type:3,getLength:function(){return this.$.nodeValue.length;},getText:function(){return this.$.nodeValue;},split:function(l){var q=this;if(c&&l==q.getLength()){var m=q.getDocument().createText('');m.insertAfter(q);return m;}var n=q.getDocument(),o=new d.text(q.$.splitText(l),n);if(b.ie8){var p=new d.text('',n);p.insertAfter(o);p.remove();}return o;},substring:function(l,m){if(typeof m!='number')return this.$.nodeValue.substr(l);else return this.$.nodeValue.substring(l,m);}});d.documentFragment=function(l){l=l||a.document;this.$=l.$.createDocumentFragment();};e.extend(d.documentFragment.prototype,h.prototype,{type:11,insertAfterNode:function(l){l=l.$;l.parentNode.insertBefore(this.$,l.nextSibling);}},true,{append:1,appendBogus:1,getFirst:1,getLast:1,appendTo:1,moveChildren:1,insertBefore:1,insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1});(function(){function l(p,q){if(this._.end)return null;var r,s=this.range,t,u=this.guard,v=this.type,w=p?'getPreviousSourceNode':'getNextSourceNode';if(!this._.start){this._.start=1;s.trim();if(s.collapsed){this.end();return null;}}if(!p&&!this._.guardLTR){var x=s.endContainer,y=x.getChild(s.endOffset);this._.guardLTR=function(C,D){return(!D||!x.equals(C))&&((!y||!C.equals(y))&&(C.type!=1||C.getName()!='body'));};}if(p&&!this._.guardRTL){var z=s.startContainer,A=s.startOffset>0&&z.getChild(s.startOffset-1);this._.guardRTL=function(C,D){return(!D||!z.equals(C))&&((!A||!C.equals(A))&&(C.type!=1||C.getName()!='body'));};}var B=p?this._.guardRTL:this._.guardLTR;if(u)t=function(C,D){if(B(C,D)===false)return false;return u(C);};else t=B;if(this.current)r=this.current[w](false,v,t);else if(p){r=s.endContainer;if(s.endOffset>0){r=r.getChild(s.endOffset-1);if(t(r)===false)r=null;}else r=t(r)===false?null:r.getPreviousSourceNode(true,v,t);}else{r=s.startContainer;
+r=r.getChild(s.startOffset);if(r){if(t(r)===false)r=null;}else r=t(s.startContainer)===false?null:s.startContainer.getNextSourceNode(true,v,t);}while(r&&!this._.end){this.current=r;if(!this.evaluator||this.evaluator(r)!==false){if(!q)return r;}else if(q&&this.evaluator)return false;r=r[w](false,v,t);}this.end();return this.current=null;};function m(p){var q,r=null;while(q=l.call(this,p))r=q;return r;};d.walker=e.createClass({$:function(p){this.range=p;this._={};},proto:{end:function(){this._.end=1;},next:function(){return l.call(this);},previous:function(){return l.call(this,true);},checkForward:function(){return l.call(this,false,true)!==false;},checkBackward:function(){return l.call(this,true,true)!==false;},lastForward:function(){return m.call(this);},lastBackward:function(){return m.call(this,true);},reset:function(){delete this.current;this._={};}}});var n={block:1,'list-item':1,table:1,'table-row-group':1,'table-header-group':1,'table-footer-group':1,'table-row':1,'table-column-group':1,'table-column':1,'table-cell':1,'table-caption':1},o={hr:1};h.prototype.isBlockBoundary=function(p){var q=e.extend({},o,p||{});return n[this.getComputedStyle('display')]||q[this.getName()];};d.walker.blockBoundary=function(p){return function(q,r){return!(q.type==1&&q.isBlockBoundary(p));};};d.walker.listItemBoundary=function(){return this.blockBoundary({br:1});};d.walker.bookmarkContents=function(p){},d.walker.bookmark=function(p,q){function r(s){return s&&s.getName&&s.getName()=='span'&&s.hasAttribute('_fck_bookmark');};return function(s){var t,u;t=s&&!s.getName&&(u=s.getParent())&&(r(u));t=p?t:t||r(s);return q^t;};};d.walker.whitespaces=function(p){return function(q){var r=q&&q.type==3&&!e.trim(q.getText());return p^r;};};})();d.range=function(l){var m=this;m.startContainer=null;m.startOffset=null;m.endContainer=null;m.endOffset=null;m.collapsed=true;m.document=l;};(function(){var l=function(q){q.collapsed=q.startContainer&&q.endContainer&&q.startContainer.equals(q.endContainer)&&q.startOffset==q.endOffset;},m=function(q,r,s){q.optimizeBookmark();var t=q.startContainer,u=q.endContainer,v=q.startOffset,w=q.endOffset,x,y;if(u.type==3)u=u.split(w);else if(u.getChildCount()>0)if(w>=u.getChildCount()){u=u.append(q.document.createText(''));y=true;}else u=u.getChild(w);if(t.type==3){t.split(v);if(t.equals(u))u=t.getNext();}else if(!v){t=t.getFirst().insertBeforeMe(q.document.createText(''));x=true;}else if(v>=t.getChildCount()){t=t.append(q.document.createText(''));x=true;}else t=t.getChild(v).getPrevious();
+var z=t.getParents(),A=u.getParents(),B,C,D;for(B=0;B<z.length;B++){C=z[B];D=A[B];if(!C.equals(D))break;}var E=s,F,G,H,I;for(var J=B;J<z.length;J++){F=z[J];if(E&&!F.equals(t))G=E.append(F.clone());H=F.getNext();while(H){if(H.equals(A[J])||H.equals(u))break;I=H.getNext();if(r==2)E.append(H.clone(true));else{H.remove();if(r==1)E.append(H);}H=I;}if(E)E=G;}E=s;for(var K=B;K<A.length;K++){F=A[K];if(r>0&&!F.equals(u))G=E.append(F.clone());if(!z[K]||F.$.parentNode!=z[K].$.parentNode){H=F.getPrevious();while(H){if(H.equals(z[K])||H.equals(t))break;I=H.getPrevious();if(r==2)E.$.insertBefore(H.$.cloneNode(true),E.$.firstChild);else{H.remove();if(r==1)E.$.insertBefore(H.$,E.$.firstChild);}H=I;}}if(E)E=G;}if(r==2){var L=q.startContainer;if(L.type==3){L.$.data+=L.$.nextSibling.data;L.$.parentNode.removeChild(L.$.nextSibling);}var M=q.endContainer;if(M.type==3&&M.$.nextSibling){M.$.data+=M.$.nextSibling.data;M.$.parentNode.removeChild(M.$.nextSibling);}}else{if(C&&D&&(t.$.parentNode!=C.$.parentNode||u.$.parentNode!=D.$.parentNode)){var N=D.getIndex();if(x&&D.$.parentNode==t.$.parentNode)N--;q.setStart(D.getParent(),N);}q.collapse(true);}if(x)t.remove();if(y&&u.$.parentNode)u.remove();},n={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1};function o(q){var r=false,s=d.walker.bookmark(true);return function(t){if(s(t))return true;if(t.type==3){if(e.trim(t.getText()).length)return false;}else if(!n[t.getName()])if(!q&&!c&&t.getName()=='br'&&!r)r=true;else return false;return true;};};function p(q){return q.type!=3&&q.getName() in f.$removeEmpty||!e.trim(q.getText())||q.getParent().hasAttribute('_fck_bookmark');};d.range.prototype={clone:function(){var r=this;var q=new d.range(r.document);q.startContainer=r.startContainer;q.startOffset=r.startOffset;q.endContainer=r.endContainer;q.endOffset=r.endOffset;q.collapsed=r.collapsed;return q;},collapse:function(q){var r=this;if(q){r.endContainer=r.startContainer;r.endOffset=r.startOffset;}else{r.startContainer=r.endContainer;r.startOffset=r.endOffset;}r.collapsed=true;},cloneContents:function(){var q=new d.documentFragment(this.document);if(!this.collapsed)m(this,2,q);return q;},deleteContents:function(){if(this.collapsed)return;m(this,0);},extractContents:function(){var q=new d.documentFragment(this.document);if(!this.collapsed)m(this,1,q);return q;},createBookmark:function(q){var v=this;var r,s,t,u;r=v.document.createElement('span');
+r.setAttribute('_fck_bookmark',1);r.setStyle('display','none');r.setHtml('&nbsp;');if(q){t='cke_bm_'+e.getNextNumber();r.setAttribute('id',t+'S');}if(!v.collapsed){s=r.clone();s.setHtml('&nbsp;');if(q)s.setAttribute('id',t+'E');u=v.clone();u.collapse();u.insertNode(s);}u=v.clone();u.collapse(true);u.insertNode(r);if(s){v.setStartAfter(r);v.setEndBefore(s);}else v.moveToPosition(r,4);return{startNode:q?t+'S':r,endNode:q?t+'E':s,serializable:q};},createBookmark2:function(q){var x=this;var r=x.startContainer,s=x.endContainer,t=x.startOffset,u=x.endOffset,v,w;if(!r||!s)return{start:0,end:0};if(q){if(r.type==1){v=r.getChild(t);if(v&&v.type==3&&t>0&&v.getPrevious().type==3){r=v;t=0;}}while(r.type==3&&(w=r.getPrevious())&&(w.type==3)){r=w;t+=w.getLength();}if(!x.isCollapsed){if(s.type==1){v=s.getChild(u);if(v&&v.type==3&&u>0&&v.getPrevious().type==3){s=v;u=0;}}while(s.type==3&&(w=s.getPrevious())&&(w.type==3)){s=w;u+=w.getLength();}}}return{start:r.getAddress(q),end:x.isCollapsed?null:s.getAddress(q),startOffset:t,endOffset:u,normalized:q,is2:true};},moveToBookmark:function(q){var y=this;if(q.is2){var r=y.document.getByAddress(q.start,q.normalized),s=q.startOffset,t=q.end&&y.document.getByAddress(q.end,q.normalized),u=q.endOffset;y.setStart(r,s);if(t)y.setEnd(t,u);else y.collapse(true);}else{var v=q.serializable,w=v?y.document.getById(q.startNode):q.startNode,x=v?y.document.getById(q.endNode):q.endNode;y.setStartBefore(w);w.remove();if(x){y.setEndBefore(x);x.remove();}else y.collapse(true);}},getBoundaryNodes:function(){var v=this;var q=v.startContainer,r=v.endContainer,s=v.startOffset,t=v.endOffset,u;if(q.type==1){u=q.getChildCount();if(u>s)q=q.getChild(s);else if(u<1)q=q.getPreviousSourceNode();else{q=q.$;while(q.lastChild)q=q.lastChild;q=new d.node(q);q=q.getNextSourceNode()||q;}}if(r.type==1){u=r.getChildCount();if(u>t)r=r.getChild(t).getPreviousSourceNode(true);else if(u<1)r=r.getPreviousSourceNode();else{r=r.$;while(r.lastChild)r=r.lastChild;r=new d.node(r);}}if(q.getPosition(r)&2)q=r;return{startNode:q,endNode:r};},getCommonAncestor:function(q,r){var v=this;var s=v.startContainer,t=v.endContainer,u;if(s.equals(t)){if(q&&s.type==1&&v.startOffset==v.endOffset-1)u=s.getChild(v.startOffset);else u=s;}else u=s.getCommonAncestor(t);return r&&!u.is?u.getParent():u;},optimize:function(){var s=this;var q=s.startContainer,r=s.startOffset;if(q.type!=1)if(!r)s.setStartBefore(q);else if(r>=q.getLength())s.setStartAfter(q);q=s.endContainer;r=s.endOffset;if(q.type!=1)if(!r)s.setEndBefore(q);
+else if(r>=q.getLength())s.setEndAfter(q);},optimizeBookmark:function(){var s=this;var q=s.startContainer,r=s.endContainer;if(q.is&&q.is('span')&&q.hasAttribute('_fck_bookmark'))s.setStartAt(q,3);if(r&&r.is&&r.is('span')&&r.hasAttribute('_fck_bookmark'))s.setEndAt(r,4);},trim:function(q,r){var y=this;var s=y.startContainer,t=y.startOffset,u=y.collapsed;if((!q||u)&&(s&&s.type==3)){if(!t){t=s.getIndex();s=s.getParent();}else if(t>=s.getLength()){t=s.getIndex()+1;s=s.getParent();}else{var v=s.split(t);t=s.getIndex()+1;s=s.getParent();if(!u&&y.startContainer.equals(y.endContainer))y.setEnd(v,y.endOffset-y.startOffset);}y.setStart(s,t);if(u)y.collapse(true);}var w=y.endContainer,x=y.endOffset;if(!(r||u)&&w&&w.type==3){if(!x){x=w.getIndex();w=w.getParent();}else if(x>=w.getLength()){x=w.getIndex()+1;w=w.getParent();}else{w.split(x);x=w.getIndex()+1;w=w.getParent();}y.setEnd(w,x);}},enlarge:function(q){switch(q){case 1:if(this.collapsed)return;var r=this.getCommonAncestor(),s=this.document.getBody(),t,u,v,w,x,y=false,z,A,B=this.startContainer,C=this.startOffset;if(B.type==3){if(C){B=!e.trim(B.substring(0,C)).length&&B;y=!!B;}if(B)if(!(w=B.getPrevious()))v=B.getParent();}else{if(C)w=B.getChild(C-1)||B.getLast();if(!w)v=B;}while(v||w){if(v&&!w){if(!x&&v.equals(r))x=true;if(!s.contains(v))break;if(!y||v.getComputedStyle('display')!='inline'){y=false;if(x)t=v;else this.setStartBefore(v);}w=v.getPrevious();}while(w){z=false;if(w.type==3){A=w.getText();if(/[^\s\ufeff]/.test(A))w=null;z=/[\s\ufeff]$/.test(A);}else if(w.$.offsetWidth>0&&!w.getAttribute('_fck_bookmark'))if(y&&f.$removeEmpty[w.getName()]){A=w.getText();if(!/[^\s\ufeff]/.test(A))w=null;else{var D=w.$.all||w.$.getElementsByTagName('*');for(var E=0,F;F=D[E++];)if(!f.$removeEmpty[F.nodeName.toLowerCase()]){w=null;break;}}if(w)z=!!A.length;}else w=null;if(z)if(y){if(x)t=v;else if(v)this.setStartBefore(v);}else y=true;if(w){var G=w.getPrevious();if(!v&&!G){v=w;w=null;break;}w=G;}else v=null;}if(v)v=v.getParent();}B=this.endContainer;C=this.endOffset;v=w=null;x=y=false;if(B.type==3){B=!e.trim(B.substring(C)).length&&B;y=!(B&&B.getLength());if(B)if(!(w=B.getNext()))v=B.getParent();}else{w=B.getChild(C);if(!w)v=B;}while(v||w){if(v&&!w){if(!x&&v.equals(r))x=true;if(!s.contains(v))break;if(!y||v.getComputedStyle('display')!='inline'){y=false;if(x)u=v;else if(v)this.setEndAfter(v);}w=v.getNext();}while(w){z=false;if(w.type==3){A=w.getText();if(/[^\s\ufeff]/.test(A))w=null;z=/^[\s\ufeff]/.test(A);}else if(w.$.offsetWidth>0&&!w.getAttribute('_fck_bookmark'))if(y&&f.$removeEmpty[w.getName()]){A=w.getText();
+if(!/[^\s\ufeff]/.test(A))w=null;else{D=w.$.all||w.$.getElementsByTagName('*');for(E=0;F=D[E++];)if(!f.$removeEmpty[F.nodeName.toLowerCase()]){w=null;break;}}if(w)z=!!A.length;}else w=null;if(z)if(y)if(x)u=v;else this.setEndAfter(v);if(w){G=w.getNext();if(!v&&!G){v=w;w=null;break;}w=G;}else v=null;}if(v)v=v.getParent();}if(t&&u){r=t.contains(u)?u:t;this.setStartBefore(r);this.setEndAfter(r);}break;case 2:case 3:var H=new d.range(this.document);s=this.document.getBody();H.setStartAt(s,1);H.setEnd(this.startContainer,this.startOffset);var I=new d.walker(H),J,K,L=d.walker.blockBoundary(q==3?{br:1}:null),M=function(O){var P=L(O);if(!P)J=O;return P;},N=function(O){var P=M(O);if(!P&&O.is&&O.is('br'))K=O;return P;};I.guard=M;v=I.lastBackward();J=J||s;this.setStartAt(J,!J.is('br')&&(!v||J.contains(v))?1:4);H=this.clone();H.collapse();H.setEndAt(s,2);I=new d.walker(H);I.guard=q==3?N:M;J=null;v=I.lastForward();J=J||s;this.setEndAt(J,!J.is('br')&&(!v||J.contains(v))?2:3);if(K)this.setEndAfter(K);}},insertNode:function(q){var u=this;u.optimizeBookmark();u.trim(false,true);var r=u.startContainer,s=u.startOffset,t=r.getChild(s);if(t)q.insertBefore(t);else r.append(q);if(q.getParent().equals(u.endContainer))u.endOffset++;u.setStartBefore(q);},moveToPosition:function(q,r){this.setStartAt(q,r);this.collapse(true);},selectNodeContents:function(q){this.setStart(q,0);this.setEnd(q,q.type==3?q.getLength():q.getChildCount());},setStart:function(q,r){var s=this;s.startContainer=q;s.startOffset=r;if(!s.endContainer){s.endContainer=q;s.endOffset=r;}l(s);},setEnd:function(q,r){var s=this;s.endContainer=q;s.endOffset=r;if(!s.startContainer){s.startContainer=q;s.startOffset=r;}l(s);},setStartAfter:function(q){this.setStart(q.getParent(),q.getIndex()+1);},setStartBefore:function(q){this.setStart(q.getParent(),q.getIndex());},setEndAfter:function(q){this.setEnd(q.getParent(),q.getIndex()+1);},setEndBefore:function(q){this.setEnd(q.getParent(),q.getIndex());},setStartAt:function(q,r){var s=this;switch(r){case 1:s.setStart(q,0);break;case 2:if(q.type==3)s.setStart(q,q.getLength());else s.setStart(q,q.getChildCount());break;case 3:s.setStartBefore(q);break;case 4:s.setStartAfter(q);}l(s);},setEndAt:function(q,r){var s=this;switch(r){case 1:s.setEnd(q,0);break;case 2:if(q.type==3)s.setEnd(q,q.getLength());else s.setEnd(q,q.getChildCount());break;case 3:s.setEndBefore(q);break;case 4:s.setEndAfter(q);}l(s);},fixBlock:function(q,r){var u=this;var s=u.createBookmark(),t=u.document.createElement(r);
+u.collapse(q);u.enlarge(2);u.extractContents().appendTo(t);t.trim();if(!c)t.appendBogus();u.insertNode(t);u.moveToBookmark(s);return t;},splitBlock:function(q){var B=this;var r=new d.elementPath(B.startContainer),s=new d.elementPath(B.endContainer),t=r.blockLimit,u=s.blockLimit,v=r.block,w=s.block,x=null;if(!t.equals(u))return null;if(q!='br'){if(!v){v=B.fixBlock(true,q);w=new d.elementPath(B.endContainer).block;}if(!w)w=B.fixBlock(false,q);}var y=v&&B.checkStartOfBlock(),z=w&&B.checkEndOfBlock();B.deleteContents();if(v&&v.equals(w))if(z){x=new d.elementPath(B.startContainer);B.moveToPosition(w,4);w=null;}else if(y){x=new d.elementPath(B.startContainer);B.moveToPosition(v,3);v=null;}else{B.setEndAt(v,2);var A=B.extractContents();w=v.clone(false);A.appendTo(w);w.insertAfter(v);B.moveToPosition(v,4);if(!c&&!v.is('ul','ol'))v.appendBogus();}return{previousBlock:v,nextBlock:w,wasStartOfBlock:y,wasEndOfBlock:z,elementPath:x};},checkBoundaryOfElement:function(q,r){var s=this.clone();s[r==1?'setStartAt':'setEndAt'](q,r==1?1:2);var t=new d.walker(s),u=false;t.evaluator=p;return t[r==1?'checkBackward':'checkForward']();},checkStartOfBlock:function(){var w=this;var q=w.startContainer,r=w.startOffset;if(r&&q.type==3){var s=e.ltrim(q.substring(0,r));if(s.length)return false;}w.trim();var t=new d.elementPath(w.startContainer),u=w.clone();u.collapse(true);u.setStartAt(t.block||t.blockLimit,1);var v=new d.walker(u);v.evaluator=o(true);return v.checkBackward();},checkEndOfBlock:function(){var w=this;var q=w.endContainer,r=w.endOffset;if(q.type==3){var s=e.rtrim(q.substring(r));if(s.length)return false;}w.trim();var t=new d.elementPath(w.endContainer),u=w.clone();u.collapse(false);u.setEndAt(t.block||t.blockLimit,2);var v=new d.walker(u);v.evaluator=o(false);return v.checkForward();},moveToElementEditStart:function(q){var r;while(q&&q.type==1){if(q.isEditable())r=q;else if(r)break;q=q.getFirst();}if(r){this.moveToPosition(r,1);return true;}else return false;},getEnclosedNode:function(){var q=this.clone(),r=new d.walker(q),s=d.walker.bookmark(true),t=d.walker.whitespaces(true),u=function(w){return t(w)&&s(w);};q.evaluator=u;var v=r.next();r.reset();return v&&v.equals(r.previous())?v:null;},getTouchedStartNode:function(){var q=this.startContainer;if(this.collapsed||q.type!=1)return q;return q.getChild(this.startOffset)||q;},getTouchedEndNode:function(){var q=this.endContainer;if(this.collapsed||q.type!=1)return q;return q.getChild(this.endOffset-1)||q;}};})();a.POSITION_AFTER_START=1;
+a.POSITION_BEFORE_END=2;a.POSITION_BEFORE_START=3;a.POSITION_AFTER_END=4;a.ENLARGE_ELEMENT=1;a.ENLARGE_BLOCK_CONTENTS=2;a.ENLARGE_LIST_ITEM_CONTENTS=3;a.START=1;a.END=2;a.STARTEND=3;(function(){var l=c&&b.version<7?a.basePath+'images/spacer.gif':'about:blank',m=h.createFromHtml('<div style="width:0px;height:0px;position:absolute;left:-10000px;background-image:url('+l+')"></div>',a.document);m.appendTo(a.document.getHead());try{b.hc=m.getComputedStyle('background-image')=='none';}catch(n){b.hc=false;}if(b.hc)b.cssClass+=' cke_hc';m.remove();})();j.load(i.corePlugins.split(','),function(){a.status='loaded';a.fire('loaded');var l=a._.pending;if(l){delete a._.pending;for(var m=0;m<l.length;m++)a.add(l[m]);}});j.add('about',{init:function(l){var m=l.addCommand('about',new a.dialogCommand('about'));m.modes={wysiwyg:1,source:1};m.canUndo=false;l.ui.addButton('About',{label:l.lang.about.title,command:'about'});a.dialog.add('about',this.path+'dialogs/about.js');}});j.add('basicstyles',{requires:['styles','button'],init:function(l){var m=function(p,q,r,s){var t=new a.style(s);l.attachStyleStateChange(t,function(u){l.getCommand(r).setState(u);});l.addCommand(r,new a.styleCommand(t));l.ui.addButton(p,{label:q,command:r});},n=l.config,o=l.lang;m('Bold',o.bold,'bold',n.coreStyles_bold);m('Italic',o.italic,'italic',n.coreStyles_italic);m('Underline',o.underline,'underline',n.coreStyles_underline);m('Strike',o.strike,'strike',n.coreStyles_strike);m('Subscript',o.subscript,'subscript',n.coreStyles_subscript);m('Superscript',o.superscript,'superscript',n.coreStyles_superscript);}});i.coreStyles_bold={element:'strong',overrides:'b'};i.coreStyles_italic={element:'em',overrides:'i'};i.coreStyles_underline={element:'u'};i.coreStyles_strike={element:'strike'};i.coreStyles_subscript={element:'sub'};i.coreStyles_superscript={element:'sup'};(function(){function l(p,q){var r=q.block||q.blockLimit;if(!r||r.getName()=='body')return 2;if(r.getAscendant('blockquote',true))return 1;return 2;};function m(p){var q=p.editor,r=q.getCommand('blockquote');r.state=l(q,p.data.path);r.fire('state');};function n(p){for(var q=0,r=p.getChildCount(),s;q<r&&(s=p.getChild(q));q++)if(s.type==1&&s.isBlockBoundary())return false;return true;};var o={exec:function(p){var q=p.getCommand('blockquote').state,r=p.getSelection(),s=r&&r.getRanges()[0];if(!s)return;var t=r.createBookmarks();if(c){var u=t[0].startNode,v=t[0].endNode,w;if(u&&u.getParent().getName()=='blockquote'){w=u;while(w=w.getNext())if(w.type==1&&w.isBlockBoundary()){u.move(w,true);
+break;}}if(v&&v.getParent().getName()=='blockquote'){w=v;while(w=w.getPrevious())if(w.type==1&&w.isBlockBoundary()){v.move(w);break;}}}var x=s.createIterator(),y;if(q==2){var z=[];while(y=x.getNextParagraph())z.push(y);if(z.length<1){var A=p.document.createElement(p.config.enterMode==1?'p':'div'),B=t.shift();s.insertNode(A);A.append(new d.text('﻿',p.document));s.moveToBookmark(B);s.selectNodeContents(A);s.collapse(true);B=s.createBookmark();z.push(A);t.unshift(B);}var C=z[0].getParent(),D=[];for(var E=0;E<z.length;E++){y=z[E];C=C.getCommonAncestor(y.getParent());}var F={table:1,tbody:1,tr:1,ol:1,ul:1};while(F[C.getName()])C=C.getParent();var G=null;while(z.length>0){y=z.shift();while(!y.getParent().equals(C))y=y.getParent();if(!y.equals(G))D.push(y);G=y;}while(D.length>0){y=D.shift();if(y.getName()=='blockquote'){var H=new d.documentFragment(p.document);while(y.getFirst()){H.append(y.getFirst().remove());z.push(H.getLast());}H.replace(y);}else z.push(y);}var I=p.document.createElement('blockquote');I.insertBefore(z[0]);while(z.length>0){y=z.shift();I.append(y);}}else if(q==1){var J=[],K={};while(y=x.getNextParagraph()){var L=null,M=null;while(y.getParent()){if(y.getParent().getName()=='blockquote'){L=y.getParent();M=y;break;}y=y.getParent();}if(L&&M&&!M.getCustomData('blockquote_moveout')){J.push(M);h.setMarker(K,M,'blockquote_moveout',true);}}h.clearAllMarkers(K);var N=[],O=[];K={};while(J.length>0){var P=J.shift();I=P.getParent();if(!P.getPrevious())P.remove().insertBefore(I);else if(!P.getNext())P.remove().insertAfter(I);else{P.breakParent(P.getParent());O.push(P.getNext());}if(!I.getCustomData('blockquote_processed')){O.push(I);h.setMarker(K,I,'blockquote_processed',true);}N.push(P);}h.clearAllMarkers(K);for(E=O.length-1;E>=0;E--){I=O[E];if(n(I))I.remove();}if(p.config.enterMode==2){var Q=true;while(N.length){P=N.shift();if(P.getName()=='div'){H=new d.documentFragment(p.document);var R=Q&&P.getPrevious()&&!(P.getPrevious().type==1&&P.getPrevious().isBlockBoundary());if(R)H.append(p.document.createElement('br'));var S=P.getNext()&&!(P.getNext().type==1&&P.getNext().isBlockBoundary());while(P.getFirst())P.getFirst().remove().appendTo(H);if(S)H.append(p.document.createElement('br'));H.replace(P);Q=false;}}}}r.selectBookmarks(t);p.focus();}};j.add('blockquote',{init:function(p){p.addCommand('blockquote',o);p.ui.addButton('Blockquote',{label:p.lang.blockquote,command:'blockquote'});p.on('selectionChange',m);},requires:['domiterator']});})();j.add('button',{beforeInit:function(l){l.ui.addHandler(1,k.button.handler);
+}});a.UI_BUTTON=1;k.button=function(l){e.extend(this,l,{title:l.label,className:l.className||l.command&&'cke_button_'+l.command||'',click:l.click||(function(m){m.execCommand(l.command);})});this._={};};k.button.handler={create:function(l){return new k.button(l);}};k.button.prototype={canGroup:true,render:function(l,m){var n=b,o=this._.id='cke_'+e.getNextNumber();this._.editor=l;var p={id:o,button:this,editor:l,focus:function(){var v=a.document.getById(o);v.focus();},execute:function(){this.button.click(l);}},q=e.addFunction(p.execute,p),r=k.button._.instances.push(p)-1,s='',t=this.command;if(this.modes)l.on('mode',function(){this.setState(this.modes[l.mode]?2:0);},this);else if(t){t=l.getCommand(t);if(t){t.on('state',function(){this.setState(t.state);},this);s+='cke_'+(t.state==1?'on':t.state==0?'disabled':'off');}}if(!t)s+='cke_off';if(this.className)s+=' '+this.className;m.push('<span class="cke_button">','<a id="',o,'" class="',s,'" href="javascript:void(\'',(this.title||'').replace("'",''),'\')" title="',this.title,'" tabindex="-1" hidefocus="true"');if(n.opera||n.gecko&&n.mac)m.push(' onkeypress="return false;"');if(n.gecko)m.push(' onblur="this.style.cssText = this.style.cssText;"');m.push(' onkeydown="return CKEDITOR.ui.button._.keydown(',r,', event);" onfocus="return CKEDITOR.ui.button._.focus(',r,', event);" onclick="CKEDITOR.tools.callFunction(',q,', this); return false;"><span class="cke_icon"');if(this.icon){var u=(this.iconOffset||0)*(-16);m.push(' style="background-image:url(',a.getUrl(this.icon),');background-position:0 '+u+'px;"');}m.push('></span><span class="cke_label">',this.label,'</span>');if(this.hasArrow)m.push('<span class="cke_buttonarrow"></span>');m.push('</a>','</span>');if(this.onRender)this.onRender();return p;},setState:function(l){var q=this;if(q._.state==l)return;var m=a.document.getById(q._.id);if(m){m.setState(l);var n=q.title,o=q._.editor.lang.common.unavailable,p=m.getChild(1);if(l==0)n=o.replace('%1',q.title);p.setHtml(n);}q._.state=l;}};k.button._={instances:[],keydown:function(l,m){var n=k.button._.instances[l];if(n.onkey){m=new d.event(m);return n.onkey(n,m.getKeystroke())!==false;}},focus:function(l,m){var n=k.button._.instances[l],o;if(n.onfocus)o=n.onfocus(n,new d.event(m))!==false;if(b.gecko&&b.version<10900)m.preventBubble();return o;}};k.prototype.addButton=function(l,m){this.add(l,1,m);};(function(){var l=function(q,r){var s=q.document,t=s.getBody(),u=false,v=function(){u=true;};t.on(r,v);s.$.execCommand(r);t.removeListener(r,v);
+return u;},m=c?function(q,r){return l(q,r);}:function(q,r){try{return q.document.$.execCommand(r);}catch(s){return false;}},n=function(q){this.type=q;this.canUndo=this.type=='cut';};n.prototype={exec:function(q,r){var s=m(q,this.type);if(!s)alert(q.lang.clipboard[this.type+'Error']);return s;}};var o=c?{exec:function(q,r){q.focus();if(!q.fire('beforePaste')&&!l(q,'paste'))q.openDialog('paste');}}:{exec:function(q){try{if(!q.fire('beforePaste')&&!q.document.$.execCommand('Paste',false,null))throw 0;}catch(r){q.openDialog('paste');}}},p=function(q){switch(q.data.keyCode){case 1000+86:case 2000+45:var r=this;r.fire('saveSnapshot');if(r.fire('beforePaste'))q.cancel();setTimeout(function(){r.fire('saveSnapshot');},0);return;case 1000+88:case 2000+46:r=this;r.fire('saveSnapshot');setTimeout(function(){r.fire('saveSnapshot');},0);}};j.add('clipboard',{init:function(q){function r(t,u,v,w){var x=q.lang[u];q.addCommand(u,v);q.ui.addButton(t,{label:x,command:u});if(q.addMenuItems)q.addMenuItem(u,{label:x,command:u,group:'clipboard',order:w});};r('Cut','cut',new n('cut'),1);r('Copy','copy',new n('copy'),4);r('Paste','paste',o,8);a.dialog.add('paste',a.getUrl(this.path+'dialogs/paste.js'));q.on('key',p,q);if(q.contextMenu){function s(t){return q.document.$.queryCommandEnabled(t)?2:0;};q.contextMenu.addListener(function(){return{cut:s('Cut'),copy:s('Cut'),paste:b.webkit?2:s('Paste')};});}}});})();j.add('colorbutton',{requires:['panelbutton','floatpanel','styles'],init:function(l){var m=l.config,n=l.lang.colorButton,o;if(!b.hc){p('TextColor','fore',n.textColorTitle);p('BGColor','back',n.bgColorTitle);}function p(r,s,t){l.ui.add(r,4,{label:t,title:t,className:'cke_button_'+r.toLowerCase(),modes:{wysiwyg:1},panel:{css:[a.getUrl(l.skinPath+'editor.css')]},onBlock:function(u,v){var w=u.addBlock(v);w.autoSize=true;w.element.addClass('cke_colorblock');w.element.setHtml(q(u,s));var x=w.keys;x[39]='next';x[9]='next';x[37]='prev';x[2000+9]='prev';x[32]='click';}});};function q(r,s){var t=[],u=m.colorButton_colors.split(','),v=e.addFunction(function(z,A){if(z=='?')return;l.focus();r.hide();var B=new a.style(m['colorButton_'+A+'Style'],z&&{color:z});l.fire('saveSnapshot');if(z)B.apply(l.document);else B.remove(l.document);l.fire('saveSnapshot');});t.push('<a class="cke_colorauto" _cke_focus=1 hidefocus=true title="',n.auto,'" onclick="CKEDITOR.tools.callFunction(',v,",null,'",s,"');return false;\" href=\"javascript:void('",n.auto,'\')"><table cellspacing=0 cellpadding=0 width="100%"><tr><td><span class="cke_colorbox" style="background-color:#000"></span></td><td colspan=7 align=center>',n.auto,'</td></tr></table></a><table cellspacing=0 cellpadding=0 width="100%">');
+for(var w=0;w<u.length;w++){if(w%8===0)t.push('</tr><tr>');var x=u[w],y=l.lang.colors[x]||x;t.push('<td><a class="cke_colorbox" _cke_focus=1 hidefocus=true title="',y,'" onclick="CKEDITOR.tools.callFunction(',v,",'#",x,"','",s,"'); return false;\" href=\"javascript:void('",y,'\')"><span class="cke_colorbox" style="background-color:#',x,'"></span></a></td>');}if(m.colorButton_enableMore)t.push('</tr><tr><td colspan=8 align=center><a class="cke_colormore" _cke_focus=1 hidefocus=true title="',n.more,'" onclick="CKEDITOR.tools.callFunction(',v,",'?','",s,"');return false;\" href=\"javascript:void('",n.more,"')\">",n.more,'</a></td>');t.push('</tr></table>');return t.join('');};}});i.colorButton_enableMore=false;i.colorButton_colors='000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,A9A9A9,FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,FFF0F5,FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF';i.colorButton_foreStyle={element:'span',styles:{color:'#(color)'},overrides:[{element:'font',attributes:{color:null}}]};i.colorButton_backStyle={element:'span',styles:{'background-color':'#(color)'}};(function(){j.colordialog={init:function(l){l.addCommand('colordialog',new a.dialogCommand('colordialog'));a.dialog.add('colordialog',this.path+'dialogs/colordialog.js');}};j.add('colordialog',j.colordialog);})();j.add('contextmenu',{requires:['menu'],beforeInit:function(l){l.contextMenu=new j.contextMenu(l);l.addCommand('contextMenu',{exec:function(){l.contextMenu.show(l.document.getBody());}});}});j.contextMenu=e.createClass({$:function(l){this.id='cke_'+e.getNextNumber();this.editor=l;this._.listeners=[];this._.functionId=e.addFunction(function(m){this._.panel.hide();l.focus();l.execCommand(m);},this);},_:{onMenu:function(l,m,n,o){var p=this._.menu,q=this.editor;if(p){p.hide();p.removeAll();}else{p=this._.menu=new a.menu(q);p.onClick=e.bind(function(z){var A=true;p.hide();if(c)p.onEscape();if(z.onClick)z.onClick();else if(z.command)q.execCommand(z.command);A=false;},this);p.onEscape=function(){q.focus();if(c)q.getSelection().unlock(true);};}var r=this._.listeners,s=[],t=this.editor.getSelection(),u=t&&t.getStartElement();if(c)t.lock();p.onHide=e.bind(function(){p.onHide=null;if(c)q.getSelection().unlock();this.onHide&&this.onHide();},this);for(var v=0;v<r.length;v++){var w=r[v](u,t);if(w)for(var x in w){var y=this.editor.getMenuItem(x);if(y){y.state=w[x];p.add(y);}}}p.show(l,m||(q.lang.dir=='rtl'?2:1),n,o);
+}},proto:{addTarget:function(l){l.on('contextmenu',function(m){var n=m.data;n.preventDefault();var o=n.getTarget().getDocument().getDocumentElement(),p=n.$.clientX,q=n.$.clientY;e.setTimeout(function(){this._.onMenu(o,null,p,q);},0,this);},this);},addListener:function(l){this._.listeners.push(l);},show:function(l,m,n,o){this.editor.focus();this._.onMenu(l||a.document.getDocumentElement(),m,n||0,o||0);}}});(function(){var l={toolbarFocus:{exec:function(n){var o=n._.elementsPath.idBase,p=a.document.getById(o+'0');if(p)p.focus();}}},m='<span class="cke_empty">&nbsp;</span>';j.add('elementspath',{requires:['selection'],init:function(n){var o='cke_path_'+n.name,p,q=function(){if(!p)p=a.document.getById(o);return p;},r='cke_elementspath_'+e.getNextNumber()+'_';n._.elementsPath={idBase:r};n.on('themeSpace',function(s){if(s.data.space=='bottom')s.data.html+='<div id="'+o+'" class="cke_path">'+m+'</div>';});n.on('selectionChange',function(s){var t=b,u=s.data.selection,v=u.getStartElement(),w=[],x=this._.elementsPath.list=[];while(v){var y=x.push(v)-1,z;if(v.getAttribute('_cke_real_element_type'))z=v.getAttribute('_cke_real_element_type');else z=v.getName();var A='';if(t.opera||t.gecko&&t.mac)A+=' onkeypress="return false;"';if(t.gecko)A+=' onblur="this.style.cssText = this.style.cssText;"';w.unshift('<a id="',r,y,'" href="javascript:void(\'',z,'\')" tabindex="-1" title="',n.lang.elementsPath.eleTitle.replace(/%1/,z),'"'+(b.gecko&&b.version<10900?' onfocus="event.preventBubble();"':'')+' hidefocus="true" '+" onkeydown=\"return CKEDITOR._.elementsPath.keydown('",this.name,"',",y,', event);"'+A," onclick=\"return CKEDITOR._.elementsPath.click('",this.name,"',",y,');">',z,'</a>');if(z=='body')break;v=v.getParent();}q().setHtml(w.join('')+m);});n.on('contentDomUnload',function(){q().setHtml(m);});n.addCommand('elementsPathFocus',l.toolbarFocus);}});})();a._.elementsPath={click:function(l,m){var n=a.instances[l];n.focus();var o=n._.elementsPath.list[m];n.getSelection().selectElement(o);return false;},keydown:function(l,m,n){var o=k.button._.instances[m],p=a.instances[l],q=p._.elementsPath.idBase,r;n=new d.event(n);switch(n.getKeystroke()){case 37:case 9:r=a.document.getById(q+(m+1));if(!r)r=a.document.getById(q+'0');r.focus();return false;case 39:case 2000+9:r=a.document.getById(q+(m-1));if(!r)r=a.document.getById(q+(p._.elementsPath.list.length-1));r.focus();return false;case 27:p.focus();return false;case 13:case 32:this.click(l,m);return false;}return true;}};(function(){j.add('enterkey',{requires:['keystrokes','indent'],init:function(s){var t=s.specialKeys;
+t[13]=o;t[2000+13]=n;}});var l,m=/^h[1-6]$/;function n(s){l=1;return o(s,s.config.shiftEnterMode);};function o(s,t){if(s.mode!='wysiwyg')return false;if(!t)t=s.config.enterMode;setTimeout(function(){s.fire('saveSnapshot');if(t==2||s.getSelection().getStartElement().hasAscendant('pre',true))q(s,t);else p(s,t);l=0;},0);return true;};function p(s,t,u){u=u||r(s);var v=u.document,w=t==3?'div':'p',x=u.splitBlock(w);if(!x)return;var y=x.previousBlock,z=x.nextBlock,A=x.wasStartOfBlock,B=x.wasEndOfBlock,C;if(z){C=z.getParent();if(C.is('li')){z.breakParent(C);z.move(z.getNext(),true);}}else if(y&&(C=y.getParent())&&(C.is('li'))){y.breakParent(C);u.moveToElementEditStart(y.getNext());y.move(y.getPrevious());}if(!A&&!B){if(z.is('li')&&(C=z.getFirst())&&(C.is&&C.is('ul','ol')))z.insertBefore(v.createText('\xa0'),C);if(z)u.moveToElementEditStart(z);}else{if(A&&B&&y.is('li')){s.execCommand('outdent');return;}var D;if(y){if(!l&&!m.test(y.getName()))D=y.clone();}else if(z)D=z.clone();if(!D)D=v.createElement(w);var E=x.elementPath;if(E)for(var F=0,G=E.elements.length;F<G;F++){var H=E.elements[F];if(H.equals(E.block)||H.equals(E.blockLimit))break;if(f.$removeEmpty[H.getName()]){H=H.clone();D.moveChildren(H);D.append(H);}}if(!c)D.appendBogus();u.insertNode(D);if(c&&A&&(!B||!y.getChildCount())){u.moveToElementEditStart(B?y:D);u.select();}u.moveToElementEditStart(A&&!B?z:D);}if(!c)if(z){var I=v.createElement('span');I.setHtml('&nbsp;');u.insertNode(I);I.scrollIntoView();u.deleteContents();}else D.scrollIntoView();u.select();};function q(s,t){var u=r(s),v=u.document,w=t==3?'div':'p',x=u.checkEndOfBlock(),y=new d.elementPath(s.getSelection().getStartElement()),z=y.block,A=z&&y.block.getName(),B=false;if(!l&&A=='li'){p(s,t,u);return;}if(!l&&x&&m.test(A)){v.createElement('br').insertAfter(z);if(b.gecko)v.createText('').insertAfter(z);u.setStartAt(z.getNext(),c?3:1);}else{var C;B=A=='pre';if(B)C=v.createText(c?'\r':'\n');else C=v.createElement('br');u.deleteContents();u.insertNode(C);if(!c)v.createText('﻿').insertAfter(C);if(x&&!c)C.getParent().appendBogus();if(!c)C.getNext().$.nodeValue='';if(c)u.setStartAt(C,4);else u.setStartAt(C.getNext(),1);if(!c){var D=null;if(!b.gecko){D=v.createElement('span');D.setHtml('&nbsp;');}else D=v.createElement('br');D.insertBefore(C.getNext());D.scrollIntoView();D.remove();}}u.collapse(true);u.select(B);};function r(s){var t=s.getSelection().getRanges();for(var u=t.length-1;u>0;u--)t[u].deleteContents();return t[0];};})();(function(){var l='nbsp,gt,lt,quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro',m='Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml',n='Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv';
+function o(p){var q={},r=[],s={nbsp:'\xa0',shy:'­',gt:'>',lt:'<'};p=p.replace(/\b(nbsp|shy|gt|lt|amp)(?:,|$)/g,function(x,y){q[s[y]]='&'+y+';';r.push(s[y]);return '';});p=p.split(',');var t=document.createElement('div'),u;t.innerHTML='&'+p.join(';&')+';';u=t.innerHTML;t=null;for(var v=0;v<u.length;v++){var w=u.charAt(v);q[w]='&'+p[v]+';';r.push(w);}q.regex=r.join('');return q;};j.add('entities',{afterInit:function(p){var q=p.config;if(!q.entities)return;var r=p.dataProcessor,s=r&&r.htmlFilter;if(s){var t=l;if(q.entities_latin)t+=','+m;if(q.entities_greek)t+=','+n;if(q.entities_additional)t+=','+q.entities_additional;var u=o(t),v='['+u.regex+']';delete u.regex;if(q.entities_processNumerical)v='[^ -~]|'+v;v=new RegExp(v,'g');function w(x){return u[x]||'&#'+x.charCodeAt(0)+';';};s.addRules({text:function(x){return x.replace(v,w);}});}}});})();i.entities=true;i.entities_latin=true;i.entities_greek=true;i.entities_processNumerical=false;i.entities_additional='#39';(function(){function l(u,v){var w=[];if(!v)return u;else for(var x in v)w.push(x+'='+encodeURIComponent(v[x]));return u+(u.indexOf('?')!=-1?'&':'?')+w.join('&');};function m(u){u+='';var v=u.charAt(0).toUpperCase();return v+u.substr(1);};function n(u){var B=this;var v=B.getDialog(),w=v.getParentEditor();w._.filebrowserSe=B;var x=w.config['filebrowser'+m(v.getName())+'WindowWidth']||w.config.filebrowserWindowWidth||'80%',y=w.config['filebrowser'+m(v.getName())+'WindowHeight']||w.config.filebrowserWindowHeight||'70%',z=B.filebrowser.params||{};z.CKEditor=w.name;z.CKEditorFuncNum=w._.filebrowserFn;if(!z.langCode)z.langCode=w.langCode;var A=l(B.filebrowser.url,z);w.popup(A,x,y);};function o(u){var x=this;var v=x.getDialog(),w=v.getParentEditor();w._.filebrowserSe=x;if(!v.getContentElement(x['for'][0],x['for'][1]).getInputElement().$.value)return false;if(!v.getContentElement(x['for'][0],x['for'][1]).getAction())return false;return true;};function p(u,v,w){var x=w.params||{};x.CKEditor=u.name;x.CKEditorFuncNum=u._.filebrowserFn;if(!x.langCode)x.langCode=u.langCode;v.action=l(w.url,x);v.filebrowser=w;};function q(u,v,w,x){var y,z;for(var A in x){y=x[A];if(y.type=='hbox'||y.type=='vbox')q(u,v,w,y.children);if(!y.filebrowser)continue;if(typeof y.filebrowser=='string'){var B={action:y.type=='fileButton'?'QuickUpload':'Browse',target:y.filebrowser};y.filebrowser=B;}if(y.filebrowser.action=='Browse'){var C=y.filebrowser.url||u.config['filebrowser'+m(v)+'BrowseUrl']||u.config.filebrowserBrowseUrl;if(C){y.onClick=n;
+y.filebrowser.url=C;y.hidden=false;}}else if(y.filebrowser.action=='QuickUpload'&&y['for']){C=y.filebrowser.url||u.config['filebrowser'+m(v)+'UploadUrl']||u.config.filebrowserUploadUrl;if(C){y.onClick=o;y.filebrowser.url=C;y.hidden=false;p(u,w.getContents(y['for'][0]).get(y['for'][1]),y.filebrowser);}}}};function r(u,v){var w=v.getDialog(),x=v.filebrowser.target||null;u=u.replace(/#/g,'%23');if(x){var y=x.split(':'),z=w.getContentElement(y[0],y[1]);if(z){z.setValue(u);w.selectPage(y[0]);}}};function s(u,v,w){if(w.indexOf(';')!==-1){var x=w.split(';');for(var y=0;y<x.length;y++)if(s(u,v,x[y]))return true;return false;}return u.getContents(v).get(w).filebrowser&&u.getContents(v).get(w).filebrowser.url;};function t(u,v){var z=this;var w=z._.filebrowserSe.getDialog(),x=z._.filebrowserSe['for'],y=z._.filebrowserSe.filebrowser.onSelect;if(x)w.getContentElement(x[0],x[1]).reset();if(y&&y.call(z._.filebrowserSe,u,v)===false)return;if(typeof v=='string'&&v)alert(v);if(u)r(u,z._.filebrowserSe);};j.add('filebrowser',{init:function(u,v){u._.filebrowserFn=e.addFunction(t,u);a.on('dialogDefinition',function(w){for(var x in w.data.definition.contents){q(w.editor,w.data.name,w.data.definition,w.data.definition.contents[x].elements);if(w.data.definition.contents[x].hidden&&w.data.definition.contents[x].filebrowser)w.data.definition.contents[x].hidden=!s(w.data.definition,w.data.definition.contents[x].id,w.data.definition.contents[x].filebrowser);}});}});})();j.add('find',{init:function(l){var m=j.find;l.ui.addButton('Find',{label:l.lang.findAndReplace.find,command:'find'});var n=l.addCommand('find',new a.dialogCommand('find'));n.canUndo=false;l.ui.addButton('Replace',{label:l.lang.findAndReplace.replace,command:'replace'});var o=l.addCommand('replace',new a.dialogCommand('replace'));o.canUndo=false;a.dialog.add('find',this.path+'dialogs/find.js');a.dialog.add('replace',this.path+'dialogs/find.js');},requires:['styles']});i.find_highlight={element:'span',styles:{'background-color':'#004',color:'#fff'}};(function(){var l=/\.swf(?:$|\?)/i,m=/^\d+(?:\.\d+)?$/;function n(q){if(m.test(q))return q+'px';return q;};function o(q){var r=q.attributes;return r.type=='application/x-shockwave-flash'||l.test(r.src||'');};function p(q,r){var s=q.createFakeParserElement(r,'cke_flash','flash',true),t=s.attributes.style||'',u=r.attributes.width,v=r.attributes.height;if(typeof u!='undefined')t=s.attributes.style=t+'width:'+n(u)+';';if(typeof v!='undefined')t=s.attributes.style=t+'height:'+n(v)+';';
+return s;};j.add('flash',{init:function(q){q.addCommand('flash',new a.dialogCommand('flash'));q.ui.addButton('Flash',{label:q.lang.common.flash,command:'flash'});a.dialog.add('flash',this.path+'dialogs/flash.js');q.addCss('img.cke_flash{background-image: url('+a.getUrl(this.path+'images/placeholder.png')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 80px;'+'height: 80px;'+'}');if(q.addMenuItems)q.addMenuItems({flash:{label:q.lang.flash.properties,command:'flash',group:'flash'}});if(q.contextMenu)q.contextMenu.addListener(function(r,s){if(r&&r.is('img')&&r.getAttribute('_cke_real_element_type')=='flash')return{flash:2};});},afterInit:function(q){var r=q.dataProcessor,s=r&&r.dataFilter;if(s)s.addRules({elements:{'cke:object':function(t){var u=t.attributes,v=u.classid&&String(u.classid).toLowerCase();if(!v){for(var w=0;w<t.children.length;w++)if(t.children[w].name=='embed'){if(!o(t.children[w]))return null;return p(q,t);}return null;}return p(q,t);},'cke:embed':function(t){if(!o(t))return null;return p(q,t);}}},5);},requires:['fakeobjects']});})();e.extend(i,{flashEmbedTagOnly:false,flashAddEmbedTag:true,flashConvertOnEdit:false});(function(){function l(m,n,o,p,q,r,s){var t=m.config,u=q.split(';'),v=[],w={};for(var x=0;x<u.length;x++){var y={},z=u[x].split('/'),A=u[x]=z[0];y[o]=v[x]=z[1]||A;w[A]=new a.style(s,y);}m.ui.addRichCombo(n,{label:p.label,title:p.panelTitle,voiceLabel:p.voiceLabel,className:'cke_'+(o=='size'?'fontSize':'font'),multiSelect:false,panel:{css:[a.getUrl(m.skinPath+'editor.css')].concat(t.contentsCss),voiceLabel:p.panelVoiceLabel},init:function(){this.startGroup(p.panelTitle);for(var B=0;B<u.length;B++){var C=u[B];this.add(C,'<span style="font-'+o+':'+v[B]+'">'+C+'</span>',C);}},onClick:function(B){m.focus();m.fire('saveSnapshot');var C=w[B];if(this.getValue()==B)C.remove(m.document);else C.apply(m.document);m.fire('saveSnapshot');},onRender:function(){m.on('selectionChange',function(B){var C=this.getValue(),D=B.data.path,E=D.elements;for(var F=0,G;F<E.length;F++){G=E[F];for(var H in w)if(w[H].checkElementRemovable(G,true)){if(H!=C)this.setValue(H);return;}}this.setValue('',r);},this);}});};j.add('font',{requires:['richcombo','styles'],init:function(m){var n=m.config;l(m,'Font','family',m.lang.font,n.font_names,n.font_defaultLabel,n.font_style);l(m,'FontSize','size',m.lang.fontSize,n.fontSize_sizes,n.fontSize_defaultLabel,n.fontSize_style);}});})();i.font_names='Arial/Arial, Helvetica, sans-serif;Comic Sans MS/Comic Sans MS, cursive;Courier New/Courier New, Courier, monospace;Georgia/Georgia, serif;Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;Tahoma/Tahoma, Geneva, sans-serif;Times New Roman/Times New Roman, Times, serif;Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;Verdana/Verdana, Geneva, sans-serif';
+i.font_defaultLabel='';i.font_style={element:'span',styles:{'font-family':'#(family)'},overrides:[{element:'font',attributes:{face:null}}]};i.fontSize_sizes='8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px';i.fontSize_defaultLabel='';i.fontSize_style={element:'span',styles:{'font-size':'#(size)'},overrides:[{element:'font',attributes:{size:null}}]};j.add('format',{requires:['richcombo','styles'],init:function(l){var m=l.config,n=l.lang.format,o=m.format_tags.split(';'),p={};for(var q=0;q<o.length;q++){var r=o[q];p[r]=new a.style(m['format_'+r]);}l.ui.addRichCombo('Format',{label:n.label,title:n.panelTitle,voiceLabel:n.voiceLabel,className:'cke_format',multiSelect:false,panel:{css:[a.getUrl(l.skinPath+'editor.css')].concat(m.contentsCss),voiceLabel:n.panelVoiceLabel},init:function(){this.startGroup(n.panelTitle);for(var s in p){var t=n['tag_'+s];this.add(s,'<'+s+'>'+t+'</'+s+'>',t);}},onClick:function(s){l.focus();l.fire('saveSnapshot');p[s].apply(l.document);l.fire('saveSnapshot');},onRender:function(){l.on('selectionChange',function(s){var t=this.getValue(),u=s.data.path;for(var v in p)if(p[v].checkActive(u)){if(v!=t)this.setValue(v,l.lang.format['tag_'+v]);return;}this.setValue('');},this);}});}});i.format_tags='p;h1;h2;h3;h4;h5;h6;pre;address;div';i.format_p={element:'p'};i.format_div={element:'div'};i.format_pre={element:'pre'};i.format_address={element:'address'};i.format_h1={element:'h1'};i.format_h2={element:'h2'};i.format_h3={element:'h3'};i.format_h4={element:'h4'};i.format_h5={element:'h5'};i.format_h6={element:'h6'};j.add('forms',{init:function(l){var m=l.lang;l.addCss('form{border: 1px dotted #FF0000;padding: 2px;}');var n=function(p,q,r){l.addCommand(q,new a.dialogCommand(q));l.ui.addButton(p,{label:m.common[p.charAt(0).toLowerCase()+p.slice(1)],command:q});a.dialog.add(q,r);},o=this.path+'dialogs/';n('Form','form',o+'form.js');n('Checkbox','checkbox',o+'checkbox.js');n('Radio','radio',o+'radio.js');n('TextField','textfield',o+'textfield.js');n('Textarea','textarea',o+'textarea.js');n('Select','select',o+'select.js');n('Button','button',o+'button.js');n('ImageButton','imagebutton',j.getPath('image')+'dialogs/image.js');n('HiddenField','hiddenfield',o+'hiddenfield.js');if(l.addMenuItems)l.addMenuItems({form:{label:m.form.menu,command:'form',group:'form'},checkbox:{label:m.checkboxAndRadio.checkboxTitle,command:'checkbox',group:'checkbox'},radio:{label:m.checkboxAndRadio.radioTitle,command:'radio',group:'radio'},textfield:{label:m.textfield.title,command:'textfield',group:'textfield'},hiddenfield:{label:m.hidden.title,command:'hiddenfield',group:'hiddenfield'},imagebutton:{label:m.image.titleButton,command:'imagebutton',group:'imagebutton'},button:{label:m.button.title,command:'button',group:'button'},select:{label:m.select.title,command:'select',group:'select'},textarea:{label:m.textarea.title,command:'textarea',group:'textarea'}});
+if(l.contextMenu){l.contextMenu.addListener(function(p){if(p&&p.hasAscendant('form'))return{form:2};});l.contextMenu.addListener(function(p){if(p){var q=p.getName();if(q=='select')return{select:2};if(q=='textarea')return{textarea:2};if(q=='input'){var r=p.getAttribute('type');if(r=='text'||r=='password')return{textfield:2};if(r=='button'||r=='submit'||r=='reset')return{button:2};if(r=='checkbox')return{checkbox:2};if(r=='radio')return{radio:2};if(r=='image')return{imagebutton:2};}if(q=='img'&&p.getAttribute('_cke_real_element_type')=='hiddenfield')return{hiddenfield:2};}});}},requires:['image']});if(c)h.prototype.hasAttribute=function(l){var o=this;var m=o.$.attributes.getNamedItem(l);if(o.getName()=='input')switch(l){case 'class':return o.$.className.length>0;case 'checked':return!!o.$.checked;case 'value':var n=o.getAttribute('type');if(n=='checkbox'||n=='radio')return o.$.value!='on';break;default:}return!!(m&&m.specified);};(function(){var l={exec:function(n){n.insertElement(n.document.createElement('hr'));}},m='horizontalrule';j.add(m,{init:function(n){n.addCommand(m,l);n.ui.addButton('HorizontalRule',{label:n.lang.horizontalrule,command:m});}});})();(function(){var l=/^[\t\r\n ]*(?:&nbsp;|\xa0)$/,m='{cke_protected}';function n(M){var N=M.children.length,O=M.children[N-1];while(O&&O.type==3&&!e.trim(O.value))O=M.children[--N];return O;};function o(M,N){var O=M.children,P=n(M);if(P){if((N||!c)&&(P.type==1&&P.name=='br'))O.pop();if(P.type==3&&l.test(P.value))O.pop();}};function p(M){var N=n(M);return!N||N.type==1&&N.name=='br';};function q(M){o(M,true);if(p(M))if(c)M.add(new a.htmlParser.text('\xa0'));else M.add(new a.htmlParser.element('br',{}));};function r(M){o(M);if(p(M))M.add(new a.htmlParser.text('\xa0'));};var s=f,t=e.extend({},s.$block,s.$listItem,s.$tableContent);for(var u in t)if(!('br' in s[u]))delete t[u];delete t.pre;var v={attributeNames:[[/^on/,'_cke_pa_on']]},w={elements:{}};for(u in t)w.elements[u]=q;var x={elementNames:[[/^cke:/,''],[/^\?xml:namespace$/,'']],attributeNames:[[/^_cke_(saved|pa)_/,''],[/^_cke.*/,'']],elements:{$:function(M){var N=M.attributes;if(N){var O=['name','href','src'],P;for(var Q=0;Q<O.length;Q++){P='_cke_saved_'+O[Q];P in N&&delete N[O[Q]];}}},embed:function(M){var N=M.parent;if(N&&N.name=='object'){var O=N.attributes.width,P=N.attributes.height;O&&(M.attributes.width=O);P&&(M.attributes.height=P);}},param:function(M){M.children=[];M.isEmpty=true;return M;},a:function(M){if(!(M.children.length||M.attributes.name||M.attributes._cke_saved_name))return false;
+}},attributes:{'class':function(M,N){return e.ltrim(M.replace(/(?:^|\s+)cke_[^\s]*/g,''))||false;}},comment:function(M){if(M.substr(0,m.length)==m)return new a.htmlParser.cdata(decodeURIComponent(M.substr(m.length)));return M;}},y={elements:{}};for(u in t)y.elements[u]=r;if(c)x.attributes.style=function(M,N){return M.toLowerCase();};var z=/<(?:a|area|img|input).*?\s((?:href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))/gi;function A(M){return M.replace(z,'$& _cke_saved_$1');};var B=/<(style)(?=[ >])[^>]*>[^<]*<\/\1>/gi,C=/<cke:encoded>([^<]*)<\/cke:encoded>/gi,D=/(<\/?)((?:object|embed|param).*?>)/gi,E=/<cke:param(.*?)\/>/gi;function F(M){return '<cke:encoded>'+encodeURIComponent(M)+'</cke:encoded>';};function G(M){return M.replace(B,F);};function H(M){return M.replace(D,'$1cke:$2');};function I(M){return M.replace(E,'<cke:param$1></cke:param>');};function J(M,N){return decodeURIComponent(N);};function K(M){return M.replace(C,J);};function L(M,N){var O=[],P=/<\!--\{cke_temp\}(\d*?)-->/g,Q=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi].concat(N);for(var R=0;R<Q.length;R++)M=M.replace(Q[R],function(S){S=S.replace(P,function(T,U){return O[U];});return '<!--{cke_temp}'+(O.push(S)-1)+'-->';});M=M.replace(P,function(S,T){return '<!--'+m+encodeURIComponent(O[T]).replace(/--/g,'%2D%2D')+'-->';});return M;};j.add('htmldataprocessor',{requires:['htmlwriter'],init:function(M){var N=M.dataProcessor=new a.htmlDataProcessor(M);N.writer.forceSimpleAmpersand=M.config.forceSimpleAmpersand;N.dataFilter.addRules(v);N.dataFilter.addRules(w);N.htmlFilter.addRules(x);N.htmlFilter.addRules(y);}});a.htmlDataProcessor=function(M){var N=this;N.editor=M;N.writer=new a.htmlWriter();N.dataFilter=new a.htmlParser.filter();N.htmlFilter=new a.htmlParser.filter();};a.htmlDataProcessor.prototype={toHtml:function(M,N){M=L(M,this.editor.config.protectedSource);M=A(M);if(c)M=G(M);M=H(M);M=I(M);var O=document.createElement('div');O.innerHTML='a'+M;M=O.innerHTML.substr(1);if(c)M=K(M);var P=a.htmlParser.fragment.fromHtml(M,N),Q=new a.htmlParser.basicWriter();P.writeHtml(Q,this.dataFilter);return Q.getHtml(true);},toDataFormat:function(M,N){var O=this.writer,P=a.htmlParser.fragment.fromHtml(M,N);O.reset();P.writeHtml(O,this.htmlFilter);return O.getHtml(true);}};})();i.forceSimpleAmpersand=false;j.add('image',{init:function(l){var m='image';a.dialog.add(m,this.path+'dialogs/image.js');l.addCommand(m,new a.dialogCommand(m));l.ui.addButton('Image',{label:l.lang.common.image,command:m});
+if(l.addMenuItems)l.addMenuItems({image:{label:l.lang.image.menu,command:'image',group:'image'}});if(l.contextMenu)l.contextMenu.addListener(function(n,o){if(!n||!n.is('img')||n.getAttribute('_cke_realelement'))return null;return{image:2};});}});i.image_removeLinkByEmptyURL=true;(function(){var l={ol:1,ul:1};function m(r,s){r.getCommand(this.name).setState(s);};function n(r){var C=this;var s=r.data.path.elements,t,u,v=r.editor;for(var w=0;w<s.length;w++){if(s[w].getName()=='li'){u=s[w];continue;}if(l[s[w].getName()]){t=s[w];break;}}if(t)if(C.name=='outdent')return m.call(C,v,2);else{while(u&&(u=u.getPrevious(d.walker.whitespaces(true))))if(u.getName&&u.getName()=='li')return m.call(C,v,2);return m.call(C,v,0);}if(!C.useIndentClasses&&C.name=='indent')return m.call(C,v,2);var x=r.data.path,y=x.block||x.blockLimit;if(!y)return m.call(C,v,0);if(C.useIndentClasses){var z=y.$.className.match(C.classNameRegex),A=0;if(z){z=z[1];A=C.indentClassMap[z];}if(C.name=='outdent'&&!A||C.name=='indent'&&A==v.config.indentClasses.length)return m.call(C,v,0);return m.call(C,v,2);}else{var B=parseInt(y.getStyle(C.indentCssProperty),10);if(isNaN(B))B=0;if(B<=0)return m.call(C,v,0);return m.call(C,v,2);}};function o(r,s,t){var u=s.startContainer,v=s.endContainer;while(u&&!u.getParent().equals(t))u=u.getParent();while(v&&!v.getParent().equals(t))v=v.getParent();if(!u||!v)return;var w=u,x=[],y=false;while(!y){if(w.equals(v))y=true;x.push(w);w=w.getNext();}if(x.length<1)return;var z=t.getParents(true);for(var A=0;A<z.length;A++)if(z[A].getName&&l[z[A].getName()]){t=z[A];break;}var B=this.name=='indent'?1:-1,C=x[0],D=x[x.length-1],E={},F=j.list.listToArray(t,E),G=F[D.getCustomData('listarray_index')].indent;for(A=C.getCustomData('listarray_index');A<=D.getCustomData('listarray_index');A++)F[A].indent+=B;for(A=D.getCustomData('listarray_index')+1;A<F.length&&F[A].indent>G;A++)F[A].indent+=B;var H=j.list.arrayToList(F,E,null,r.config.enterMode,0);if(this.name=='outdent'){var I;if((I=t.getParent())&&(I.is('li'))){var J=H.listNode.getChildren(),K=[],L=J.count(),M;for(A=L-1;A>=0;A--)if((M=J.getItem(A))&&(M.is&&M.is('li')))K.push(M);}}if(H)H.listNode.replace(t);if(K&&K.length)for(A=0;A<K.length;A++){var N=K[A],O=N;while((O=O.getNext())&&(O.is&&O.getName() in l))N.append(O);N.insertAfter(I);}h.clearAllMarkers(E);};function p(r,s){var A=this;var t=s.createIterator(),u=r.config.enterMode;t.enforceRealBlocks=true;t.enlargeBr=u!=2;var v;while(v=t.getNextParagraph())if(A.useIndentClasses){var w=v.$.className.match(A.classNameRegex),x=0;
+if(w){w=w[1];x=A.indentClassMap[w];}if(A.name=='outdent')x--;else x++;x=Math.min(x,r.config.indentClasses.length);x=Math.max(x,0);var y=e.ltrim(v.$.className.replace(A.classNameRegex,''));if(x<1)v.$.className=y;else v.addClass(r.config.indentClasses[x-1]);}else{var z=parseInt(v.getStyle(A.indentCssProperty),10);if(isNaN(z))z=0;z+=(A.name=='indent'?1:-1)*(r.config.indentOffset);z=Math.max(z,0);z=Math.ceil(z/r.config.indentOffset)*r.config.indentOffset;v.setStyle(A.indentCssProperty,z?z+r.config.indentUnit:'');if(v.getAttribute('style')==='')v.removeAttribute('style');}};function q(r,s){var u=this;u.name=s;u.useIndentClasses=r.config.indentClasses&&r.config.indentClasses.length>0;if(u.useIndentClasses){u.classNameRegex=new RegExp('(?:^|\\s+)('+r.config.indentClasses.join('|')+')(?=$|\\s)');u.indentClassMap={};for(var t=0;t<r.config.indentClasses.length;t++)u.indentClassMap[r.config.indentClasses[t]]=t+1;}else u.indentCssProperty=r.config.contentsLangDirection=='ltr'?'margin-left':'margin-right';};q.prototype={exec:function(r){var s=r.getSelection(),t=s&&s.getRanges()[0];if(!s||!t)return;var u=s.createBookmarks(true),v=t.getCommonAncestor();while(v&&!(v.type==1&&l[v.getName()]))v=v.getParent();if(v)o.call(this,r,t,v);else p.call(this,r,t);r.focus();r.forceNextSelectionCheck();s.selectBookmarks(u);}};j.add('indent',{init:function(r){var s=new q(r,'indent'),t=new q(r,'outdent');r.addCommand('indent',s);r.addCommand('outdent',t);r.ui.addButton('Indent',{label:r.lang.indent,command:'indent'});r.ui.addButton('Outdent',{label:r.lang.outdent,command:'outdent'});r.on('selectionChange',e.bind(n,s));r.on('selectionChange',e.bind(n,t));},requires:['domiterator','list']});})();e.extend(i,{indentOffset:40,indentUnit:'px',indentClasses:null});(function(){var l=/(-moz-|-webkit-|start|auto)/i;function m(p,q){var r=q.block||q.blockLimit;if(!r||r.getName()=='body')return 2;var s=r.getComputedStyle('text-align').replace(l,'');if(!s&&this.isDefaultAlign||s==this.value)return 1;return 2;};function n(p){var q=p.editor.getCommand(this.name);q.state=m.call(this,p.editor,p.data.path);q.fire('state');};function o(p,q,r){var u=this;u.name=q;u.value=r;var s=p.config.contentsLangDirection;u.isDefaultAlign=r=='left'&&s=='ltr'||r=='right'&&s=='rtl';var t=p.config.justifyClasses;if(t){switch(r){case 'left':u.cssClassName=t[0];break;case 'center':u.cssClassName=t[1];break;case 'right':u.cssClassName=t[2];break;case 'justify':u.cssClassName=t[3];break;}u.cssClassRegex=new RegExp('(?:^|\\s+)(?:'+t.join('|')+')(?=$|\\s)');
+}};o.prototype={exec:function(p){var y=this;var q=p.getSelection();if(!q)return;var r=q.createBookmarks(),s=q.getRanges(),t=y.cssClassName,u,v;for(var w=s.length-1;w>=0;w--){u=s[w].createIterator();while(v=u.getNextParagraph()){v.removeAttribute('align');if(t){var x=v.$.className=e.ltrim(v.$.className.replace(y.cssClassRegex,''));if(y.state==2&&!y.isDefaultAlign)v.addClass(t);else if(!x)v.removeAttribute('class');}else if(y.state==2&&!y.isDefaultAlign)v.setStyle('text-align',y.value);else v.removeStyle('text-align');}}p.focus();p.forceNextSelectionCheck();q.selectBookmarks(r);}};j.add('justify',{init:function(p){var q=new o(p,'justifyleft','left'),r=new o(p,'justifycenter','center'),s=new o(p,'justifyright','right'),t=new o(p,'justifyblock','justify');p.addCommand('justifyleft',q);p.addCommand('justifycenter',r);p.addCommand('justifyright',s);p.addCommand('justifyblock',t);p.ui.addButton('JustifyLeft',{label:p.lang.justify.left,command:'justifyleft'});p.ui.addButton('JustifyCenter',{label:p.lang.justify.center,command:'justifycenter'});p.ui.addButton('JustifyRight',{label:p.lang.justify.right,command:'justifyright'});p.ui.addButton('JustifyBlock',{label:p.lang.justify.block,command:'justifyblock'});p.on('selectionChange',e.bind(n,q));p.on('selectionChange',e.bind(n,s));p.on('selectionChange',e.bind(n,r));p.on('selectionChange',e.bind(n,t));},requires:['domiterator']});})();e.extend(i,{justifyClasses:null});j.add('keystrokes',{beforeInit:function(l){l.keystrokeHandler=new a.keystrokeHandler(l);l.specialKeys={};},init:function(l){var m=l.config.keystrokes,n=l.config.blockedKeystrokes,o=l.keystrokeHandler.keystrokes,p=l.keystrokeHandler.blockedKeystrokes;for(var q=0;q<m.length;q++)o[m[q][0]]=m[q][1];for(q=0;q<n.length;q++)p[n[q]]=1;}});a.keystrokeHandler=function(l){var m=this;if(l.keystrokeHandler)return l.keystrokeHandler;m.keystrokes={};m.blockedKeystrokes={};m._={editor:l};return m;};(function(){var l,m=function(o){o=o.data;var p=o.getKeystroke(),q=this.keystrokes[p],r=this._.editor;l=r.fire('key',{keyCode:p})===true;if(!l){if(q){var s={from:'keystrokeHandler'};l=r.execCommand(q,s)!==false;}if(!l){var t=r.specialKeys[p];l=t&&t(r)===true;if(!l)l=!!this.blockedKeystrokes[p];}}if(l)o.preventDefault(true);return!l;},n=function(o){if(l){l=false;o.data.preventDefault(true);}};a.keystrokeHandler.prototype={attach:function(o){o.on('keydown',m,this);if(b.opera||b.gecko&&b.mac)o.on('keypress',n,this);}};})();i.blockedKeystrokes=[1000+66,1000+73,1000+85];i.keystrokes=[[4000+121,'toolbarFocus'],[4000+122,'elementsPathFocus'],[2000+121,'contextMenu'],[1000+2000+121,'contextMenu'],[1000+90,'undo'],[1000+89,'redo'],[1000+2000+90,'redo'],[1000+76,'link'],[1000+66,'bold'],[1000+73,'italic'],[1000+85,'underline'],[4000+109,'toolbarCollapse']];
+j.add('link',{init:function(l){l.addCommand('link',new a.dialogCommand('link'));l.addCommand('anchor',new a.dialogCommand('anchor'));l.addCommand('unlink',new a.unlinkCommand());l.ui.addButton('Link',{label:l.lang.link.toolbar,command:'link'});l.ui.addButton('Unlink',{label:l.lang.unlink,command:'unlink'});l.ui.addButton('Anchor',{label:l.lang.anchor.toolbar,command:'anchor'});a.dialog.add('link',this.path+'dialogs/link.js');a.dialog.add('anchor',this.path+'dialogs/anchor.js');l.addCss('img.cke_anchor{background-image: url('+a.getUrl(this.path+'images/anchor.gif')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 18px;'+'height: 18px;'+'}\n'+'a.cke_anchor'+'{'+'background-image: url('+a.getUrl(this.path+'images/anchor.gif')+');'+'background-position: 0 center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'padding-left: 18px;'+'}');l.on('selectionChange',function(m){var n=l.getCommand('unlink'),o=m.data.path.lastElement.getAscendant('a',true);if(o&&o.getName()=='a'&&o.getAttribute('href'))n.setState(2);else n.setState(0);});if(l.addMenuItems)l.addMenuItems({anchor:{label:l.lang.anchor.menu,command:'anchor',group:'anchor'},link:{label:l.lang.link.menu,command:'link',group:'link',order:1},unlink:{label:l.lang.unlink,command:'unlink',group:'link',order:5}});if(l.contextMenu)l.contextMenu.addListener(function(m,n){if(!m)return null;var o=m.is('img')&&m.getAttribute('_cke_real_element_type')=='anchor';if(!o){if(!(m=m.getAscendant('a',true)))return null;o=m.getAttribute('name')&&!m.getAttribute('href');}return o?{anchor:2}:{link:2,unlink:2};});},afterInit:function(l){var m=l.dataProcessor,n=m&&m.dataFilter;if(n)n.addRules({elements:{a:function(o){var p=o.attributes;if(p.name&&!p.href)return l.createFakeParserElement(o,'cke_anchor','anchor');}}});},requires:['fakeobjects']});a.unlinkCommand=function(){};a.unlinkCommand.prototype={exec:function(l){var m=l.getSelection(),n=m.createBookmarks(),o=m.getRanges(),p,q;for(var r=0;r<o.length;r++){p=o[r].getCommonAncestor(true);q=p.getAscendant('a',true);if(!q)continue;o[r].selectNodeContents(q);}m.selectRanges(o);l.document.$.execCommand('unlink',false,null);m.selectBookmarks(n);}};e.extend(i,{linkShowAdvancedTab:true,linkShowTargetTab:true});(function(){var l={ol:1,ul:1},m=/^[\n\r\t ]*$/;j.list={listToArray:function(t,u,v,w,x){if(!l[t.getName()])return[];if(!w)w=0;if(!v)v=[];for(var y=0,z=t.getChildCount();y<z;y++){var A=t.getChild(y);if(A.$.nodeName.toLowerCase()!='li')continue;
+var B={parent:t,indent:w,contents:[]};if(!x){B.grandparent=t.getParent();if(B.grandparent&&B.grandparent.$.nodeName.toLowerCase()=='li')B.grandparent=B.grandparent.getParent();}else B.grandparent=x;if(u)h.setMarker(u,A,'listarray_index',v.length);v.push(B);for(var C=0,D=A.getChildCount();C<D;C++){var E=A.getChild(C);if(E.type==1&&l[E.getName()])j.list.listToArray(E,u,v,w+1,B.grandparent);else B.contents.push(E);}}return v;},arrayToList:function(t,u,v,w){if(!v)v=0;if(!t||t.length<v+1)return null;var x=t[v].parent.getDocument(),y=new d.documentFragment(x),z=null,A=v,B=Math.max(t[v].indent,0),C=null,D=w==1?'p':'div';for(;;){var E=t[A];if(E.indent==B){if(!z||t[A].parent.getName()!=z.getName()){z=t[A].parent.clone(false,true);y.append(z);}C=z.append(x.createElement('li'));for(var F=0;F<E.contents.length;F++)C.append(E.contents[F].clone(true,true));A++;}else if(E.indent==Math.max(B,0)+1){var G=j.list.arrayToList(t,null,A,w);C.append(G.listNode);A=G.nextIndex;}else if(E.indent==-1&&!v&&E.grandparent){C;if(l[E.grandparent.getName()])C=x.createElement('li');else if(w!=2&&E.grandparent.getName()!='td')C=x.createElement(D);else C=new d.documentFragment(x);for(F=0;F<E.contents.length;F++)C.append(E.contents[F].clone(true,true));if(C.type==11&&A!=t.length-1){if(C.getLast()&&C.getLast().type==1&&C.getLast().getAttribute('type')=='_moz')C.getLast().remove();C.appendBogus();}if(C.type==1&&C.getName()==D&&C.$.firstChild){C.trim();var H=C.getFirst();if(H.type==1&&H.isBlockBoundary()){var I=new d.documentFragment(x);C.moveChildren(I);C=I;}}var J=C.$.nodeName.toLowerCase();if(!c&&(J=='div'||J=='p'))C.appendBogus();y.append(C);z=null;A++;}else return null;if(t.length<=A||Math.max(t[A].indent,0)<B)break;}if(u){var K=y.getFirst();while(K){if(K.type==1)h.clearMarkers(u,K);K=K.getNextSourceNode();}}return{listNode:y,nextIndex:A};}};function n(t,u){t.getCommand(this.name).setState(u);};function o(t){var u=t.data.path,v=u.blockLimit,w=u.elements,x;for(var y=0;y<w.length&&(x=w[y])&&(!x.equals(v));y++)if(l[w[y].getName()])return n.call(this,t.editor,this.type==w[y].getName()?1:2);return n.call(this,t.editor,2);};function p(t,u,v,w){var x=j.list.listToArray(u.root,v),y=[];for(var z=0;z<u.contents.length;z++){var A=u.contents[z];A=A.getAscendant('li',true);if(!A||A.getCustomData('list_item_processed'))continue;y.push(A);h.setMarker(v,A,'list_item_processed',true);}var B=u.root.getDocument().createElement(this.type);for(z=0;z<y.length;z++){var C=y[z].getCustomData('listarray_index');x[C].parent=B;
+}var D=j.list.arrayToList(x,v,null,t.config.enterMode),E,F=D.listNode.getChildCount();for(z=0;z<F&&(E=D.listNode.getChild(z));z++)if(E.getName()==this.type)w.push(E);D.listNode.replace(u.root);};function q(t,u,v){var w=u.contents,x=u.root.getDocument(),y=[];if(w.length==1&&w[0].equals(u.root)){var z=x.createElement('div');w[0].moveChildren&&w[0].moveChildren(z);w[0].append(z);w[0]=z;}var A=u.contents[0].getParent();for(var B=0;B<w.length;B++)A=A.getCommonAncestor(w[B].getParent());for(B=0;B<w.length;B++){var C=w[B],D;while(D=C.getParent()){if(D.equals(A)){y.push(C);break;}C=D;}}if(y.length<1)return;var E=y[y.length-1].getNext(),F=x.createElement(this.type);v.push(F);while(y.length){var G=y.shift(),H=x.createElement('li');G.moveChildren(H);G.remove();H.appendTo(F);if(!c)H.appendBogus();}if(E)F.insertBefore(E);else F.appendTo(A);};function r(t,u,v){var w=j.list.listToArray(u.root,v),x=[];for(var y=0;y<u.contents.length;y++){var z=u.contents[y];z=z.getAscendant('li',true);if(!z||z.getCustomData('list_item_processed'))continue;x.push(z);h.setMarker(v,z,'list_item_processed',true);}var A=null;for(y=0;y<x.length;y++){var B=x[y].getCustomData('listarray_index');w[B].indent=-1;A=B;}for(y=A+1;y<w.length;y++)if(w[y].indent>w[y-1].indent+1){var C=w[y-1].indent+1-w[y].indent,D=w[y].indent;while(w[y]&&w[y].indent>=D){w[y].indent+=C;y++;}y--;}var E=j.list.arrayToList(w,v,null,t.config.enterMode),F=E.listNode,G,H;function I(K){if((G=F[K?'getFirst':'getLast']())&&(!(G.is&&G.isBlockBoundary())&&(H=u.root[K?'getPrevious':'getNext'](d.walker.whitespaces(true)))&&(!(H.is&&H.isBlockBoundary({br:1})))))t.document.createElement('br')[K?'insertBefore':'insertAfter'](G);};I(true);I();var J=u.root.getParent();F.replace(u.root);};function s(t,u){this.name=t;this.type=u;};s.prototype={exec:function(t){t.focus();var u=t.document,v=t.getSelection(),w=v&&v.getRanges();if(!w||w.length<1)return;if(this.state==2){var x=u.getBody();x.trim();if(!x.getFirst()){var y=u.createElement(t.config.enterMode==1?'p':t.config.enterMode==3?'div':'br');y.appendTo(x);w=[new d.range(u)];if(y.is('br')){w[0].setStartBefore(y);w[0].setEndAfter(y);}else w[0].selectNodeContents(y);v.selectRanges(w);}else{var z=w.length==1&&w[0],A=z&&z.getEnclosedNode();if(A&&A.is&&this.type==A.getName())n.call(this,t,1);}}var B=v.createBookmarks(true),C=[],D={};while(w.length>0){z=w.shift();var E=z.getBoundaryNodes(),F=E.startNode,G=E.endNode;if(F.type==1&&F.getName()=='td')z.setStartAt(E.startNode,1);if(G.type==1&&G.getName()=='td')z.setEndAt(E.endNode,2);
+var H=z.createIterator(),I;H.forceBrBreak=this.state==2;while(I=H.getNextParagraph()){var J=new d.elementPath(I),K=null,L=false,M=J.blockLimit,N;for(var O=0;O<J.elements.length&&(N=J.elements[O])&&(!N.equals(M));O++)if(l[N.getName()]){M.removeCustomData('list_group_object');var P=N.getCustomData('list_group_object');if(P)P.contents.push(I);else{P={root:N,contents:[I]};C.push(P);h.setMarker(D,N,'list_group_object',P);}L=true;break;}if(L)continue;var Q=M;if(Q.getCustomData('list_group_object'))Q.getCustomData('list_group_object').contents.push(I);else{P={root:Q,contents:[I]};h.setMarker(D,Q,'list_group_object',P);C.push(P);}}}var R=[];while(C.length>0){P=C.shift();if(this.state==2){if(l[P.root.getName()])p.call(this,t,P,D,R);else q.call(this,t,P,R);}else if(this.state==1&&l[P.root.getName()])r.call(this,t,P,D);}for(O=0;O<R.length;O++){K=R[O];var S,T=this;(S=function(U){var V=K[U?'getPrevious':'getNext'](d.walker.whitespaces(true));if(V&&V.getName&&V.getName()==T.type){V.remove();V.moveChildren(K,U?true:false);}})();S(true);}h.clearAllMarkers(D);v.selectBookmarks(B);t.focus();}};j.add('list',{init:function(t){var u=new s('numberedlist','ol'),v=new s('bulletedlist','ul');t.addCommand('numberedlist',u);t.addCommand('bulletedlist',v);t.ui.addButton('NumberedList',{label:t.lang.numberedlist,command:'numberedlist'});t.ui.addButton('BulletedList',{label:t.lang.bulletedlist,command:'bulletedlist'});t.on('selectionChange',e.bind(o,u));t.on('selectionChange',e.bind(o,v));},requires:['domiterator']});})();(function(){function l(q){if(!q||q.type!=1||q.getName()!='form')return[];var r=[],s=['style','className'];for(var t=0;t<s.length;t++){var u=s[t],v=q.$.elements.namedItem(u);if(v){var w=new h(v);r.push([w,w.nextSibling]);w.remove();}}return r;};function m(q,r){if(!q||q.type!=1||q.getName()!='form')return;if(r.length>0)for(var s=r.length-1;s>=0;s--){var t=r[s][0],u=r[s][1];if(u)t.insertBefore(u);else t.appendTo(q);}};function n(q,r){var s=l(q),t={},u=q.$;if(!r){t['class']=u.className||'';u.className='';}t.inline=u.style.cssText||'';if(!r)u.style.cssText='position: static; overflow: visible';m(s);return t;};function o(q,r){var s=l(q),t=q.$;if('class' in r)t.className=r['class'];if('inline' in r)t.style.cssText=r.inline;m(s);};function p(q,r){return function(){var s=q.getViewPaneSize();r.resize(s.width,s.height,null,true);};};j.add('maximize',{init:function(q){var r=q.lang,s=a.document,t=s.getWindow(),u,v,w,x=p(t,q),y=2;q.addCommand('maximize',{modes:{wysiwyg:1,source:1},editorFocus:false,exec:function(){var M=this;
+var z=q.container.getChild([0,0]),A=q.getThemeSpace('contents');if(q.mode=='wysiwyg'){var B=q.getSelection();u=B&&B.getRanges();v=t.getScrollPosition();}else{var C=q.textarea.$;u=!c&&[C.selectionStart,C.selectionEnd];v=[C.scrollLeft,C.scrollTop];}if(M.state==2){t.on('resize',x);w=t.getScrollPosition();var D=q.container;while(D=D.getParent()){D.setCustomData('maximize_saved_styles',n(D));D.setStyle('z-index',q.config.baseFloatZIndex-1);}A.setCustomData('maximize_saved_styles',n(A,true));z.setCustomData('maximize_saved_styles',n(z,true));if(c)s.$.documentElement.style.overflow=s.getBody().$.style.overflow='hidden';else s.getBody().setStyles({overflow:'hidden',width:'0px',height:'0px'});t.$.scrollTo(0,0);var E=t.getViewPaneSize();z.setStyle('position','absolute');z.$.offsetLeft;z.setStyles({'z-index':q.config.baseFloatZIndex-1,left:'0px',top:'0px'});q.resize(E.width,E.height,null,true);var F=z.getDocumentPosition();z.setStyles({left:-1*F.x+'px',top:-1*F.y+'px'});z.addClass('cke_maximized');}else if(M.state==1){t.removeListener('resize',x);var G=[A,z];for(var H=0;H<G.length;H++){o(G[H],G[H].getCustomData('maximize_saved_styles'));G[H].removeCustomData('maximize_saved_styles');}D=q.container;while(D=D.getParent()){o(D,D.getCustomData('maximize_saved_styles'));D.removeCustomData('maximize_saved_styles');}t.$.scrollTo(w.x,w.y);z.removeClass('cke_maximized');q.fire('resize');}M.toggleState();var I=M.uiItems[0],J=M.state==2?r.maximize:r.minimize,K=q.element.getDocument().getById(I._.id);K.getChild(1).setHtml(J);K.setAttribute('title',J);K.setAttribute('href','javascript:void("'+J+'");');if(q.mode=='wysiwyg'){if(u){q.getSelection().selectRanges(u);var L=q.getSelection().getStartElement();L&&L.scrollIntoView(true);}else t.$.scrollTo(v.x,v.y);}else{if(u){C.selectionStart=u[0];C.selectionEnd=u[1];}C.scrollLeft=v[0];C.scrollTop=v[1];}u=v=null;y=M.state;},canUndo:false});q.ui.addButton('Maximize',{label:r.maximize,command:'maximize'});q.on('mode',function(){q.getCommand('maximize').setState(y);},null,null,100);}});})();j.add('newpage',{init:function(l){l.addCommand('newpage',{modes:{wysiwyg:1,source:1},exec:function(m){var n=this;m.setData(m.config.newpage_html,function(){m.fire('afterCommandExec',{name:n.name,command:n});});m.focus();},async:true});l.ui.addButton('NewPage',{label:l.lang.newPage,command:'newpage'});}});i.newpage_html='';j.add('pagebreak',{init:function(l){l.addCommand('pagebreak',j.pagebreakCmd);l.ui.addButton('PageBreak',{label:l.lang.pagebreak,command:'pagebreak'});
+l.addCss('img.cke_pagebreak{background-image: url('+a.getUrl(this.path+'images/pagebreak.gif')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'clear: both;'+'display: block;'+'float: none;'+'width: 100%;'+'border-top: #999999 1px dotted;'+'border-bottom: #999999 1px dotted;'+'height: 5px;'+'}');},afterInit:function(l){var m=l.dataProcessor,n=m&&m.dataFilter;if(n)n.addRules({elements:{div:function(o){var p=o.attributes.style,q=p&&o.children.length==1&&o.children[0],r=q&&q.name=='span'&&q.attributes.style;if(r&&/page-break-after\s*:\s*always/i.test(p)&&/display\s*:\s*none/i.test(r))return l.createFakeParserElement(o,'cke_pagebreak','div');}}});},requires:['fakeobjects']});j.pagebreakCmd={exec:function(l){var m=h.createFromHtml('<div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>');m=l.createFakeElement(m,'cke_pagebreak','div');var n=l.getSelection().getRanges();for(var o,p=0;p<n.length;p++){o=n[p];if(p>0)m=m.clone(true);o.splitBlock('p');o.insertNode(m);}}};j.add('pastefromword',{init:function(l){l.addCommand('pastefromword',new a.dialogCommand('pastefromword'));l.ui.addButton('PasteFromWord',{label:l.lang.pastefromword.toolbar,command:'pastefromword'});a.dialog.add('pastefromword',this.path+'dialogs/pastefromword.js');}});i.pasteFromWordIgnoreFontFace=true;i.pasteFromWordRemoveStyle=false;i.pasteFromWordKeepsStructure=false;(function(){var l={exec:function(n){if(a.getClipboardData()===false||!window.clipboardData){n.openDialog('pastetext');return;}n.insertText(window.clipboardData.getData('Text'));}};j.add('pastetext',{init:function(n){var o='pastetext',p=n.addCommand(o,l);n.ui.addButton('PasteText',{label:n.lang.pasteText.button,command:o});a.dialog.add(o,a.getUrl(this.path+'dialogs/pastetext.js'));if(n.config.forcePasteAsPlainText)n.on('beforePaste',function(q){if(n.mode=='wysiwyg'){setTimeout(function(){p.exec();},0);q.cancel();}},null,null,20);},requires:['clipboard']});var m;a.getClipboardData=function(){if(!c)return false;var n=a.document,o=n.getBody();if(!m){m=n.createElement('div',{attributes:{id:'cke_hiddenDiv'},styles:{position:'absolute',visibility:'hidden',overflow:'hidden',width:'1px',height:'1px'}});m.setHtml('');m.appendTo(o);}var p=false,q=function(){p=true;};o.on('paste',q);var r=o.$.createTextRange();r.moveToElementText(m.$);r.execCommand('Paste');var s=m.getHtml();m.setHtml('');o.removeListener('paste',q);return p&&s;};})();a.editor.prototype.insertText=function(l){l=e.htmlEncode(l);
+l=l.replace(/(?:\r\n)|\n|\r/g,'<br>');this.insertHtml(l);};i.forcePasteAsPlainText=false;j.add('popup');e.extend(a.editor.prototype,{popup:function(l,m,n){m=m||'80%';n=n||'70%';if(typeof m=='string'&&m.length>1&&m.substr(m.length-1,1)=='%')m=parseInt(window.screen.width*parseInt(m,10)/100,10);if(typeof n=='string'&&n.length>1&&n.substr(n.length-1,1)=='%')n=parseInt(window.screen.height*parseInt(n,10)/100,10);if(m<640)m=640;if(n<420)n=420;var o=parseInt((window.screen.height-n)/(2),10),p=parseInt((window.screen.width-m)/(2),10),q='location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,width='+m+',height='+n+',top='+o+',left='+p,r=window.open('',null,q,true);if(!r)return false;try{r.moveTo(p,o);r.resizeTo(m,n);r.focus();r.location.href=l;}catch(s){r=window.open(l,null,q,true);}return true;}});(function(){var l={modes:{wysiwyg:1,source:1},canUndo:false,exec:function(n){var o,p=b.isCustomDomain();if(n.config.fullPage)o=n.getData();else{var q='<body ',r=a.document.getBody(),s=n.config.baseHref.length>0?'<base href="'+n.config.baseHref+'" _cktemp="true"></base>':'';if(r.getAttribute('id'))q+='id="'+r.getAttribute('id')+'" ';if(r.getAttribute('class'))q+='class="'+r.getAttribute('class')+'" ';q+='>';o=n.config.docType+'<html dir="'+n.config.contentsLangDirection+'">'+'<head>'+s+'<title>'+n.lang.preview+'</title>'+'<link type="text/css" rel="stylesheet" href="'+[].concat(n.config.contentsCss).join('"><link type="text/css" rel="stylesheet" href="')+'">'+'</head>'+q+n.getData()+'</body></html>';}var t=640,u=420,v=80;try{var w=window.screen;t=Math.round(w.width*0.8);u=Math.round(w.height*0.7);v=Math.round(w.width*0.1);}catch(z){}var x='';if(p){window._cke_htmlToLoad=o;x='javascript:void( (function(){document.open();document.domain="'+document.domain+'";'+'document.write( window.opener._cke_htmlToLoad );'+'document.close();'+'window.opener._cke_htmlToLoad = null;'+'})() )';}var y=window.open(x,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+t+',height='+u+',left='+v);if(!p){y.document.write(o);y.document.close();}}},m='preview';j.add(m,{init:function(n){n.addCommand(m,l);n.ui.addButton('Preview',{label:n.lang.preview,command:m});}});})();j.add('print',{init:function(l){var m='print',n=l.addCommand(m,j.print);l.ui.addButton('Print',{label:l.lang.print,command:m});}});j.print={exec:function(l){if(b.opera)return;else if(b.gecko)l.window.$.print();else l.document.$.execCommand('Print');
+},canUndo:false,modes:{wysiwyg:!b.opera}};j.add('removeformat',{requires:['selection'],init:function(l){l.addCommand('removeFormat',j.removeformat.commands.removeformat);l.ui.addButton('RemoveFormat',{label:l.lang.removeFormat,command:'removeFormat'});}});j.removeformat={commands:{removeformat:{exec:function(l){var m=l._.removeFormatRegex||(l._.removeFormatRegex=new RegExp('^(?:'+l.config.removeFormatTags.replace(/,/g,'|')+')$','i')),n=l._.removeAttributes||(l._.removeAttributes=l.config.removeFormatAttributes.split(',')),o=l.getSelection().getRanges();for(var p=0,q;q=o[p];p++){if(q.collapsed)continue;q.enlarge(1);var r=q.createBookmark(),s=r.startNode,t=r.endNode,u=function(x){var y=new d.elementPath(x),z=y.elements;for(var A=1,B;B=z[A];A++){if(B.equals(y.block)||B.equals(y.blockLimit))break;if(m.test(B.getName()))x.breakParent(B);}};u(s);u(t);var v=s.getNextSourceNode(true,1);while(v){if(v.equals(t))break;var w=v.getNextSourceNode(false,1);if(v.getName()!='img'||!v.getAttribute('_cke_protected_html'))if(m.test(v.getName()))v.remove(true);else v.removeAttributes(n);v=w;}q.moveToBookmark(r);}l.getSelection().selectRanges(o);}}}};i.removeFormatTags='b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var';i.removeFormatAttributes='class,style,lang,width,height,align,hspace,valign';j.add('resize',{init:function(l){var m=l.config;if(m.resize_enabled){var n=null,o,p;function q(t){var u=t.data.$.screenX-o.x,v=t.data.$.screenY-o.y,w=p.width+u*(l.lang.dir=='rtl'?-1:1),x=p.height+v;l.resize(Math.max(m.resize_minWidth,Math.min(w,m.resize_maxWidth)),Math.max(m.resize_minHeight,Math.min(x,m.resize_maxHeight)));};function r(t){a.document.removeListener('mousemove',q);a.document.removeListener('mouseup',r);if(l.document){l.document.removeListener('mousemove',q);l.document.removeListener('mouseup',r);}};var s=e.addFunction(function(t){if(!n)n=l.getResizable();p={width:n.$.offsetWidth||0,height:n.$.offsetHeight||0};o={x:t.screenX,y:t.screenY};a.document.on('mousemove',q);a.document.on('mouseup',r);if(l.document){l.document.on('mousemove',q);l.document.on('mouseup',r);}});l.on('themeSpace',function(t){if(t.data.space=='bottom')t.data.html+='<div class="cke_resizer" title="'+e.htmlEncode(l.lang.resize)+'"'+' onmousedown="CKEDITOR.tools.callFunction('+s+', event)"'+'></div>';},l,null,100);}}});i.resize_minWidth=750;i.resize_minHeight=250;i.resize_maxWidth=3000;i.resize_maxHeight=3000;i.resize_enabled=true;(function(){var l={modes:{wysiwyg:1,source:1},exec:function(n){var o=n.element.$.form;
+if(o)try{o.submit();}catch(p){if(o.submit.click)o.submit.click();}}},m='save';j.add(m,{init:function(n){var o=n.addCommand(m,l);o.modes={wysiwyg:!!n.element.$.form};n.ui.addButton('Save',{label:n.lang.save,command:m});}});})();(function(){var l='scaytcheck',m='',n=function(){var r=this,s=function(){var v={};v.srcNodeRef=r.document.getWindow().$.frameElement;v.assocApp='CKEDITOR.'+a.version+'@'+a.revision;v.customerid=r.config.scayt_customerid||'1:11111111111111111111111111111111111111';v.customDictionaryName=r.config.scayt_customDictionaryName;v.userDictionaryName=r.config.scayt_userDictionaryName;v.defLang=r.scayt_defLang;if(a._scaytParams)for(var w in a._scaytParams)v[w]=a._scaytParams[w];var x=new window.scayt(v),y=o.instances[r.name];if(y){x.sLang=y.sLang;x.option(y.option());x.paused=y.paused;}o.instances[r.name]=x;try{x.setDisabled(x.paused===false);}catch(z){}r.fire('showScaytState');};r.on('contentDom',s);r.on('contentDomUnload',function(){var v=a.document.getElementsByTag('script'),w=/^dojoIoScript(\d+)$/i,x=/^https?:\/\/svc\.spellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i;for(var y=0;y<v.count();y++){var z=v.getItem(y),A=z.getId(),B=z.getAttribute('src');if(A&&B&&A.match(w)&&B.match(x))z.remove();}});r.on('beforeCommandExec',function(v){if((v.data.name=='source'||v.data.name=='newpage')&&(r.mode=='wysiwyg')){var w=o.getScayt(r);if(w){w.paused=!w.disabled;w.destroy();delete o.instances[r.name];}}});r.on('afterSetData',function(){if(o.isScaytEnabled(r))o.getScayt(r).refresh();});r.on('insertElement',function(){var v=o.getScayt(r);if(o.isScaytEnabled(r)){if(c)r.getSelection().unlock(true);try{v.refresh();}catch(w){}}},this,null,50);r.on('scaytDialog',function(v){v.data.djConfig=window.djConfig;v.data.scayt_control=o.getScayt(r);v.data.tab=m;v.data.scayt=window.scayt;});var t=r.dataProcessor,u=t&&t.htmlFilter;if(u)u.addRules({elements:{span:function(v){if(v.attributes.scayt_word&&v.attributes.scaytid){delete v.name;return v;}}}});if(r.document)s();};j.scayt={engineLoaded:false,instances:{},getScayt:function(r){return this.instances[r.name];},isScaytReady:function(r){return this.engineLoaded===true&&'undefined'!==typeof window.scayt&&this.getScayt(r);},isScaytEnabled:function(r){var s=this.getScayt(r);return s?s.disabled===false:false;},loadEngine:function(r){if(this.engineLoaded===true)return n.apply(r);else if(this.engineLoaded==-1)return a.on('scaytReady',function(){n.apply(r);});a.on('scaytReady',n,r);a.on('scaytReady',function(){this.engineLoaded=true;
+},this,null,0);this.engineLoaded=-1;var s=document.location.protocol;s=s.search(/https?:/)!=-1?s:'http:';var t='svc.spellchecker.net/spellcheck/lf/scayt/scayt1.js',u=r.config.scayt_srcUrl||s+'//'+t,v=o.parseUrl(u).path+'/';a._djScaytConfig={baseUrl:v,addOnLoad:[function(){a.fireOnce('scaytReady');}],isDebug:false};a.document.getHead().append(a.document.createElement('script',{attributes:{type:'text/javascript',src:u}}));return null;},parseUrl:function(r){var s;if(r.match&&(s=r.match(/(.*)[\/\\](.*?\.\w+)$/)))return{path:s[1],file:s[2]};else return r;}};var o=j.scayt,p=function(r,s,t,u,v,w,x){r.addCommand(u,v);r.addMenuItem(u,{label:t,command:u,group:w,order:x});},q={preserveState:true,editorFocus:false,exec:function(r){if(o.isScaytReady(r)){var s=o.isScaytEnabled(r);this.setState(s?2:1);var t=o.getScayt(r);t.setDisabled(s);}else if(!r.config.scayt_autoStartup&&o.engineLoaded>=0){this.setState(0);r.on('showScaytState',function(){this.removeListener();this.setState(o.isScaytEnabled(r)?1:2);},this);o.loadEngine(r);}}};j.add('scayt',{requires:['menubutton'],beforeInit:function(r){r.config.menu_groups='scayt_suggest,scayt_moresuggest,scayt_control,'+r.config.menu_groups;},init:function(r){var s={},t={},u=r.addCommand(l,q);a.dialog.add(l,a.getUrl(this.path+'dialogs/options.js'));var v='scaytButton';r.addMenuGroup(v);r.addMenuItems({scaytToggle:{label:r.lang.scayt.enable,command:l,group:v},scaytOptions:{label:r.lang.scayt.options,group:v,onClick:function(){m='options';r.openDialog(l);}},scaytLangs:{label:r.lang.scayt.langs,group:v,onClick:function(){m='langs';r.openDialog(l);}},scaytAbout:{label:r.lang.scayt.about,group:v,onClick:function(){m='about';r.openDialog(l);}}});r.ui.add('Scayt',5,{label:r.lang.scayt.title,title:r.lang.scayt.title,className:'cke_button_scayt',onRender:function(){u.on('state',function(){this.setState(u.state);},this);},onMenu:function(){var x=o.isScaytEnabled(r);r.getMenuItem('scaytToggle').label=r.lang.scayt[x?'disable':'enable'];return{scaytToggle:2,scaytOptions:x?2:0,scaytLangs:x?2:0,scaytAbout:x?2:0};}});if(r.contextMenu&&r.addMenuItems)r.contextMenu.addListener(function(x){if(!(o.isScaytEnabled(r)&&x))return null;var y=o.getScayt(r),z=y.getWord(x.$);if(!z)return null;var A=y.getLang(),B={},C=window.scayt.getSuggestion(z,A);if(!C||!C.length)return null;for(i in s){delete r._.menuItems[i];delete r._.commands[i];}for(i in t){delete r._.menuItems[i];delete r._.commands[i];}s={};t={};var D=false;for(var E=0,F=C.length;E<F;E+=1){var G='scayt_suggestion_'+C[E].replace(' ','_'),H=(function(L,M){return{exec:function(){y.replace(L,M);
+}};})(x.$,C[E]);if(E<r.config.scayt_maxSuggestions){p(r,'button_'+G,C[E],G,H,'scayt_suggest',E+1);B[G]=2;t[G]=2;}else{p(r,'button_'+G,C[E],G,H,'scayt_moresuggest',E+1);s[G]=2;D=true;}}if(D)r.addMenuItem('scayt_moresuggest',{label:r.lang.scayt.moreSuggestions,group:'scayt_moresuggest',order:10,getItems:function(){return s;}});var I={exec:function(){y.ignore(x.$);}},J={exec:function(){y.ignoreAll(x.$);}},K={exec:function(){window.scayt.addWordToUserDictionary(x.$);}};p(r,'ignore',r.lang.scayt.ignore,'scayt_ignore',I,'scayt_control',1);p(r,'ignore_all',r.lang.scayt.ignoreAll,'scayt_ignore_all',J,'scayt_control',2);p(r,'add_word',r.lang.scayt.addWord,'scayt_add_word',K,'scayt_control',3);t.scayt_moresuggest=2;t.scayt_ignore=2;t.scayt_ignore_all=2;t.scayt_add_word=2;if(y.fireOnContextMenu)y.fireOnContextMenu(r);return t;});if(r.config.scayt_autoStartup){var w=function(){r.removeListener('showScaytState',w);u.setState(o.isScaytEnabled(r)?1:2);};r.on('showScaytState',w);o.loadEngine(r);}}});})();i.scayt_maxSuggestions=5;i.scayt_autoStartup=false;j.add('smiley',{requires:['dialog'],init:function(l){l.addCommand('smiley',new a.dialogCommand('smiley'));l.ui.addButton('Smiley',{label:l.lang.smiley.toolbar,command:'smiley'});a.dialog.add('smiley',this.path+'dialogs/smiley.js');}});i.smiley_path=a.basePath+'plugins/smiley/images/';i.smiley_images=['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'];i.smiley_descriptions=[':)',':(',';)',':D',':/',':P','','','','','','','',';(','','','','','',':kiss',''];(function(){var l='.%2 p,.%2 div,.%2 pre,.%2 address,.%2 blockquote,.%2 h1,.%2 h2,.%2 h3,.%2 h4,.%2 h5,.%2 h6{background-repeat: no-repeat;border: 1px dotted gray;padding-top: 8px;padding-left: 8px;}.%2 p{%1p.png);}.%2 div{%1div.png);}.%2 pre{%1pre.png);}.%2 address{%1address.png);}.%2 blockquote{%1blockquote.png);}.%2 h1{%1h1.png);}.%2 h2{%1h2.png);}.%2 h3{%1h3.png);}.%2 h4{%1h4.png);}.%2 h5{%1h5.png);}.%2 h6{%1h6.png);}',m=/%1/g,n=/%2/g,o={preserveState:true,editorFocus:false,exec:function(p){this.toggleState();this.refresh(p);},refresh:function(p){var q=this.state==1?'addClass':'removeClass';p.document.getBody()[q]('cke_show_blocks');}};j.add('showblocks',{requires:['wysiwygarea'],init:function(p){var q=p.addCommand('showblocks',o);
+q.canUndo=false;if(p.config.startupOutlineBlocks)q.setState(1);p.addCss(l.replace(m,'background-image: url('+a.getUrl(this.path)+'images/block_').replace(n,'cke_show_blocks '));p.ui.addButton('ShowBlocks',{label:p.lang.showBlocks,command:'showblocks'});p.on('mode',function(){if(q.state!=0)q.refresh(p);});p.on('contentDom',function(){if(q.state!=0)q.refresh(p);});}});})();i.startupOutlineBlocks=false;j.add('sourcearea',{requires:['editingblock'],init:function(l){var m=j.sourcearea;l.on('editingBlockReady',function(){var n,o;l.addMode('source',{load:function(p,q){if(c&&b.version<8)p.setStyle('position','relative');l.textarea=n=new h('textarea');n.setAttributes({dir:'ltr',tabIndex:-1});n.addClass('cke_source');n.addClass('cke_enable_context_menu');var r={width:b.ie7Compat?'99%':'100%',height:'100%',resize:'none',outline:'none','text-align':'left'};if(c){if(!b.ie8Compat){o=function(){n.hide();n.setStyle('height',p.$.clientHeight+'px');n.show();};l.on('resize',o);l.on('afterCommandExec',function(t){if(t.data.name=='toolbarCollapse')o();});r.height=p.$.clientHeight+'px';}}else n.on('mousedown',function(t){t.data.stopPropagation();});p.setHtml('');p.append(n);n.setStyles(r);n.on('blur',function(){l.focusManager.blur();});n.on('focus',function(){l.focusManager.focus();});l.mayBeDirty=true;this.loadData(q);var s=l.keystrokeHandler;if(s)s.attach(n);setTimeout(function(){l.mode='source';l.fire('mode');},b.gecko||b.webkit?100:0);},loadData:function(p){n.setValue(p);l.fire('dataReady');},getData:function(){return n.getValue();},getSnapshotData:function(){return n.getValue();},unload:function(p){l.textarea=n=null;if(o)l.removeListener('resize',o);if(c&&b.version<8)p.removeStyle('position');},focus:function(){n.focus();}});});l.addCommand('source',m.commands.source);if(l.ui.addButton)l.ui.addButton('Source',{label:l.lang.source,command:'source'});l.on('mode',function(){l.getCommand('source').setState(l.mode=='source'?1:2);});}});j.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},exec:function(l){if(l.mode=='wysiwyg')l.fire('saveSnapshot');l.getCommand('source').setState(0);l.setMode(l.mode=='source'?'wysiwyg':'source');},canUndo:false}}};(function(){j.add('stylescombo',{requires:['richcombo','styles'],init:function(o){var p=o.config,q=o.lang.stylesCombo,r=this.path,s;o.ui.addRichCombo('Styles',{label:q.label,title:q.panelTitle,voiceLabel:q.voiceLabel,className:'cke_styles',multiSelect:true,panel:{css:[a.getUrl(o.skinPath+'editor.css')].concat(p.contentsCss),voiceLabel:q.panelVoiceLabel},init:function(){var t=this,u=p.stylesCombo_stylesSet.split(':'),v=u[1]?u.slice(1).join(':'):a.getUrl(r+'styles/'+u[0]+'.js');
+u=u[0];a.loadStylesSet(u,v,function(w){var x,y,z=[];s={};for(var A=0;A<w.length;A++){var B=w[A];y=B.name;x=s[y]=new a.style(B);x._name=y;z.push(x);}z.sort(n);var C;for(A=0;A<z.length;A++){x=z[A];y=x._name;var D=x.type;if(D!=C){t.startGroup(q['panelTitle'+String(D)]);C=D;}t.add(y,x.type==3?y:m(x._.definition),y);}t.commit();t.onOpen();});},onClick:function(t){o.focus();o.fire('saveSnapshot');var u=s[t],v=o.getSelection();if(u.type==3){var w=v.getSelectedElement();if(w)u.applyToObject(w);return;}var x=new d.elementPath(v.getStartElement());if(u.type==2&&u.checkActive(x))u.remove(o.document);else u.apply(o.document);o.fire('saveSnapshot');},onRender:function(){o.on('selectionChange',function(t){var u=this.getValue(),v=t.data.path,w=v.elements;for(var x=0,y;x<w.length;x++){y=w[x];for(var z in s)if(s[z].checkElementRemovable(y,true)){if(z!=u)this.setValue(z);return;}}this.setValue('');},this);},onOpen:function(){var B=this;if(c)o.focus();var t=o.getSelection(),u=t.getSelectedElement(),v=u&&u.getName(),w=new d.elementPath(u||t.getStartElement()),x=[0,0,0,0];B.showAll();B.unmarkAll();for(var y in s){var z=s[y],A=z.type;if(A==3){if(u&&z.element==v){if(z.checkElementRemovable(u,true))B.mark(y);x[A]++;}else B.hideItem(y);}else{if(z.checkActive(w))B.mark(y);x[A]++;}}if(!x[1])B.hideGroup(q['panelTitle'+String(1)]);if(!x[2])B.hideGroup(q['panelTitle'+String(2)]);if(!x[3])B.hideGroup(q['panelTitle'+String(3)]);}});}});var l={};a.addStylesSet=function(o,p){l[o]=p;};a.loadStylesSet=function(o,p,q){var r=l[o];if(r){q(r);return;}a.scriptLoader.load(p,function(){q(l[o]);});};function m(o){var p=[],q=o.element;if(q=='bdo')q='span';p=['<',q];var r=o.attributes;if(r)for(var s in r)p.push(' ',s,'="',r[s],'"');var t=a.style.getStyleText(o);if(t)p.push(' style="',t,'"');p.push('>',o.name,'</',q,'>');return p.join('');};function n(o,p){var q=o.type,r=p.type;return q==r?0:q==3?-1:r==3?1:r==1?1:-1;};})();i.stylesCombo_stylesSet='default';j.add('table',{init:function(l){var m=j.table,n=l.lang.table;l.addCommand('table',new a.dialogCommand('table'));l.addCommand('tableProperties',new a.dialogCommand('tableProperties'));l.ui.addButton('Table',{label:n.toolbar,command:'table'});a.dialog.add('table',this.path+'dialogs/table.js');a.dialog.add('tableProperties',this.path+'dialogs/table.js');if(l.addMenuItems)l.addMenuItems({table:{label:n.menu,command:'tableProperties',group:'table',order:5},tabledelete:{label:n.deleteTable,command:'tableDelete',group:'table',order:1}});if(l.contextMenu)l.contextMenu.addListener(function(o,p){if(!o)return null;
+var q=o.is('table')||o.hasAscendant('table');if(q)return{tabledelete:2,table:2};return null;});}});(function(){function l(y,z){if(c)y.removeAttribute(z);else delete y[z];};var m=/^(?:td|th)$/;function n(y){var z=y.createBookmarks(),A=y.getRanges(),B=[],C={};function D(L){if(B.length>0)return;if(L.type==1&&m.test(L.getName())&&!L.getCustomData('selected_cell')){h.setMarker(C,L,'selected_cell',true);B.push(L);}};for(var E=0;E<A.length;E++){var F=A[E];if(F.collapsed){var G=F.getCommonAncestor(),H=G.getAscendant('td',true)||G.getAscendant('th',true);if(H)B.push(H);}else{var I=new d.walker(F),J;I.guard=D;while(J=I.next()){var K=J.getParent();if(K&&m.test(K.getName())&&!K.getCustomData('selected_cell')){h.setMarker(C,K,'selected_cell',true);B.push(K);}}}}h.clearAllMarkers(C);y.selectBookmarks(z);return B;};function o(y){var z=new h(y),A=(z.getName()=='table'?y:z.getAscendant('table')).$,B=A.rows,C=-1,D=[];for(var E=0;E<B.length;E++){C++;if(!D[C])D[C]=[];var F=-1;for(var G=0;G<B[E].cells.length;G++){var H=B[E].cells[G];F++;while(D[C][F])F++;var I=isNaN(H.colSpan)?1:H.colSpan,J=isNaN(H.rowSpan)?1:H.rowSpan;for(var K=0;K<J;K++){if(!D[C+K])D[C+K]=[];for(var L=0;L<I;L++)D[C+K][F+L]=B[E].cells[G];}F+=I-1;}}return D;};function p(y,z){var A=c?'_cke_rowspan':'rowSpan';for(var B=0;B<y.length;B++)for(var C=0;C<y[B].length;C++){var D=y[B][C];if(D.parentNode)D.parentNode.removeChild(D);D.colSpan=D[A]=1;}var E=0;for(B=0;B<y.length;B++)for(C=0;C<y[B].length;C++){D=y[B][C];if(!D)continue;if(C>E)E=C;if(D._cke_colScanned)continue;if(y[B][C-1]==D)D.colSpan++;if(y[B][C+1]!=D)D._cke_colScanned=1;}for(B=0;B<=E;B++)for(C=0;C<y.length;C++){if(!y[C])continue;D=y[C][B];if(!D||D._cke_rowScanned)continue;if(y[C-1]&&y[C-1][B]==D)D[A]++;if(!y[C+1]||y[C+1][B]!=D)D._cke_rowScanned=1;}for(B=0;B<y.length;B++)for(C=0;C<y[B].length;C++){D=y[B][C];l(D,'_cke_colScanned');l(D,'_cke_rowScanned');}for(B=0;B<y.length;B++){var F=z.ownerDocument.createElement('tr');for(C=0;C<y[B].length;){D=y[B][C];if(y[B-1]&&y[B-1][C]==D){C+=D.colSpan;continue;}F.appendChild(D);if(A!='rowSpan'){D.rowSpan=D[A];D.removeAttribute(A);}C+=D.colSpan;if(D.colSpan==1)D.removeAttribute('colSpan');if(D.rowSpan==1)D.removeAttribute('rowSpan');}if(c)z.rows[B].replaceNode(F);else{var G=new h(z.rows[B]),H=new h(F);G.setHtml('');H.moveChildren(G);}}};function q(y){var z=y.cells;for(var A=0;A<z.length;A++){z[A].innerHTML='';if(!c)new h(z[A]).appendBogus();}};function r(y,z){var A=y.getStartElement().getAscendant('tr');if(!A)return;var B=A.clone(true);
+B.insertBefore(A);q(z?B.$:A.$);};function s(y){if(y instanceof d.selection){var z=n(y),A=[];for(var B=0;B<z.length;B++){var C=z[B].getParent();A[C.$.rowIndex]=C;}for(B=A.length;B>=0;B--)if(A[B])s(A[B]);}else if(y instanceof h){var D=y.getAscendant('table');if(D.$.rows.length==1)D.remove();else y.remove();}};function t(y,z){var A=y.getStartElement(),B=A.getAscendant('td',true)||A.getAscendant('th',true);if(!B)return;var C=B.getAscendant('table'),D=B.$.cellIndex;for(var E=0;E<C.$.rows.length;E++){var F=C.$.rows[E];if(F.cells.length<D+1)continue;B=new h(F.cells[D].cloneNode(false));if(!c)B.appendBogus();var G=new h(F.cells[D]);if(z)B.insertBefore(G);else B.insertAfter(G);}};function u(y){if(y instanceof d.selection){var z=n(y);for(var A=z.length;A>=0;A--)if(z[A])u(z[A]);}else if(y instanceof h){var B=y.getAscendant('table'),C=y.$.cellIndex;for(A=B.$.rows.length-1;A>=0;A--){var D=new h(B.$.rows[A]);if(!C&&D.$.cells.length==1){s(D);continue;}if(D.$.cells[C])D.$.removeChild(D.$.cells[C]);}}};function v(y,z){var A=y.getStartElement(),B=A.getAscendant('td',true)||A.getAscendant('th',true);if(!B)return;var C=B.clone();if(!c)C.appendBogus();if(z)C.insertBefore(B);else C.insertAfter(B);};function w(y){if(y instanceof d.selection){var z=n(y);for(var A=z.length-1;A>=0;A--)w(z[A]);}else if(y instanceof h)if(y.getParent().getChildCount()==1)y.getParent().remove();else y.remove();};var x={thead:1,tbody:1,tfoot:1,td:1,tr:1,th:1};j.tabletools={init:function(y){var z=y.lang.table;y.addCommand('cellProperties',new a.dialogCommand('cellProperties'));a.dialog.add('cellProperties',this.path+'dialogs/tableCell.js');y.addCommand('tableDelete',{exec:function(A){var B=A.getSelection(),C=B&&B.getStartElement(),D=C&&C.getAscendant('table',true);if(!D)return;B.selectElement(D);var E=B.getRanges()[0];E.collapse();B.selectRanges([E]);if(D.getParent().getChildCount()==1)D.getParent().remove();else D.remove();}});y.addCommand('rowDelete',{exec:function(A){var B=A.getSelection();s(B);}});y.addCommand('rowInsertBefore',{exec:function(A){var B=A.getSelection();r(B,true);}});y.addCommand('rowInsertAfter',{exec:function(A){var B=A.getSelection();r(B);}});y.addCommand('columnDelete',{exec:function(A){var B=A.getSelection();u(B);}});y.addCommand('columnInsertBefore',{exec:function(A){var B=A.getSelection();t(B,true);}});y.addCommand('columnInsertAfter',{exec:function(A){var B=A.getSelection();t(B);}});y.addCommand('cellDelete',{exec:function(A){var B=A.getSelection();w(B);}});y.addCommand('cellInsertBefore',{exec:function(A){var B=A.getSelection();
+v(B,true);}});y.addCommand('cellInsertAfter',{exec:function(A){var B=A.getSelection();v(B);}});if(y.addMenuItems)y.addMenuItems({tablecell:{label:z.cell.menu,group:'tablecell',order:1,getItems:function(){var A=n(y.getSelection());return{tablecell_insertBefore:2,tablecell_insertAfter:2,tablecell_delete:2,tablecell_properties:A.length>0?2:0};}},tablecell_insertBefore:{label:z.cell.insertBefore,group:'tablecell',command:'cellInsertBefore',order:5},tablecell_insertAfter:{label:z.cell.insertAfter,group:'tablecell',command:'cellInsertAfter',order:10},tablecell_delete:{label:z.cell.deleteCell,group:'tablecell',command:'cellDelete',order:15},tablecell_properties:{label:z.cell.title,group:'tablecellproperties',command:'cellProperties',order:20},tablerow:{label:z.row.menu,group:'tablerow',order:1,getItems:function(){return{tablerow_insertBefore:2,tablerow_insertAfter:2,tablerow_delete:2};}},tablerow_insertBefore:{label:z.row.insertBefore,group:'tablerow',command:'rowInsertBefore',order:5},tablerow_insertAfter:{label:z.row.insertAfter,group:'tablerow',command:'rowInsertAfter',order:10},tablerow_delete:{label:z.row.deleteRow,group:'tablerow',command:'rowDelete',order:15},tablecolumn:{label:z.column.menu,group:'tablecolumn',order:1,getItems:function(){return{tablecolumn_insertBefore:2,tablecolumn_insertAfter:2,tablecolumn_delete:2};}},tablecolumn_insertBefore:{label:z.column.insertBefore,group:'tablecolumn',command:'columnInsertBefore',order:5},tablecolumn_insertAfter:{label:z.column.insertAfter,group:'tablecolumn',command:'columnInsertAfter',order:10},tablecolumn_delete:{label:z.column.deleteColumn,group:'tablecolumn',command:'columnDelete',order:15}});if(y.contextMenu)y.contextMenu.addListener(function(A,B){if(!A)return null;while(A){if(A.getName() in x)return{tablecell:2,tablerow:2,tablecolumn:2};A=A.getParent();}return null;});},getSelectedCells:n};j.add('tabletools',j.tabletools);})();j.add('specialchar',{init:function(l){var m='specialchar';a.dialog.add(m,this.path+'dialogs/specialchar.js');l.addCommand(m,new a.dialogCommand(m));l.ui.addButton('SpecialChar',{label:l.lang.specialChar.toolbar,command:m});}});(function(){var l={exec:function(n){n.container.focusNext(true);}},m={exec:function(n){n.container.focusPrevious(true);}};j.add('tab',{requires:['keystrokes'],init:function(n){var o=n.keystrokeHandler.keystrokes;o[9]='tab';o[2000+9]='shiftTab';var p=n.config.tabSpaces,q='';while(p--)q+='\xa0';n.addCommand('tab',{exec:function(r){if(!r.fire('tab'))if(q.length>0)r.insertHtml(q);
+else return r.execCommand('blur');return true;}});n.addCommand('shiftTab',{exec:function(r){if(!r.fire('shiftTab'))return r.execCommand('blurBack');return true;}});n.addCommand('blur',l);n.addCommand('blurBack',m);}});})();h.prototype.focusNext=function(l){var u=this;var m=u.$,n=u.getTabIndex(),o,p,q,r,s,t;if(n<=0){s=u.getNextSourceNode(l,1);while(s){if(s.isVisible()&&s.getTabIndex()===0){q=s;break;}s=s.getNextSourceNode(false,1);}}else{s=u.getDocument().getBody().getFirst();while(s=s.getNextSourceNode(false,1)){if(!o)if(!p&&s.equals(u)){p=true;if(l){if(!(s=s.getNextSourceNode(true,1)))break;o=1;}}else if(p&&!u.contains(s))o=1;if(!s.isVisible()||(t=s.getTabIndex())<(0))continue;if(o&&t==n){q=s;break;}if(t>n&&(!q||!r||t<r)){q=s;r=t;}else if(!q&&t===0){q=s;r=t;}}}if(q)q.focus();};h.prototype.focusPrevious=function(l){var u=this;var m=u.$,n=u.getTabIndex(),o,p,q,r=0,s,t=u.getDocument().getBody().getLast();while(t=t.getPreviousSourceNode(false,1)){if(!o)if(!p&&t.equals(u)){p=true;if(l){if(!(t=t.getPreviousSourceNode(true,1)))break;o=1;}}else if(p&&!u.contains(t))o=1;if(!t.isVisible()||(s=t.getTabIndex())<(0))continue;if(n<=0){if(o&&s===0){q=t;break;}if(s>r){q=t;r=s;}}else{if(o&&s==n){q=t;break;}if(s<n&&(!q||s>r)){q=t;r=s;}}}if(q)q.focus();};i.tabSpaces=0;(function(){j.add('templates',{requires:['dialog'],init:function(n){a.dialog.add('templates',a.getUrl(this.path+'dialogs/templates.js'));n.addCommand('templates',new a.dialogCommand('templates'));n.ui.addButton('Templates',{label:n.lang.templates.button,command:'templates'});}});var l={},m={};a.addTemplates=function(n,o){l[n]=o;};a.getTemplates=function(n){return l[n];};a.loadTemplates=function(n,o){var p=[];for(var q=0;q<n.length;q++)if(!m[n[q]]){p.push(n[q]);m[n[q]]=1;}if(p.length>0)a.scriptLoader.load(p,o);else setTimeout(o,0);};})();i.templates='default';i.templates_files=[a.getUrl('plugins/templates/templates/default.js')];i.templates_replaceContent=true;(function(){var l=function(){this.toolbars=[];this.focusCommandExecuted=false;};l.prototype.focus=function(){for(var n=0,o;o=this.toolbars[n++];)for(var p=0,q;q=o.items[p++];)if(q.focus){q.focus();return;}};var m={toolbarFocus:{modes:{wysiwyg:1,source:1},exec:function(n){if(n.toolbox){n.toolbox.focusCommandExecuted=true;if(c)setTimeout(function(){n.toolbox.focus();},100);else n.toolbox.focus();}}}};j.add('toolbar',{init:function(n){var o=function(p,q){switch(q){case 39:case 9:while((p=p.next||p.toolbar.next&&p.toolbar.next.items[0])&&(!p.focus)){}if(p)p.focus();
+else n.toolbox.focus();return false;case 37:case 2000+9:while((p=p.previous||p.toolbar.previous&&p.toolbar.previous.items[p.toolbar.previous.items.length-1])&&(!p.focus)){}if(p)p.focus();else{var r=n.toolbox.toolbars[n.toolbox.toolbars.length-1].items;r[r.length-1].focus();}return false;case 27:n.focus();return false;case 13:case 32:p.execute();return false;}return true;};n.on('themeSpace',function(p){if(p.data.space==n.config.toolbarLocation){n.toolbox=new l();var q=['<div class="cke_toolbox"'],r=n.config.toolbarStartupExpanded,s;q.push(r?'>':' style="display:none">');var t=n.toolbox.toolbars,u=n.config.toolbar instanceof Array?n.config.toolbar:n.config['toolbar_'+n.config.toolbar];for(var v=0;v<u.length;v++){var w=u[v];if(!w)continue;var x='cke_'+e.getNextNumber(),y={id:x,items:[]};if(s){q.push('</div>');s=0;}if(w==='/'){q.push('<div class="cke_break"></div>');continue;}q.push('<span id="',x,'" class="cke_toolbar"><span class="cke_toolbar_start"></span>');var z=t.push(y)-1;if(z>0){y.previous=t[z-1];y.previous.next=y;}for(var A=0;A<w.length;A++){var B,C=w[A];if(C=='-')B=k.separator;else B=n.ui.create(C);if(B){if(B.canGroup){if(!s){q.push('<span class="cke_toolgroup">');s=1;}}else if(s){q.push('</span>');s=0;}var D=B.render(n,q);z=y.items.push(D)-1;if(z>0){D.previous=y.items[z-1];D.previous.next=D;}D.toolbar=y;D.onkey=o;D.onfocus=function(){if(!n.toolbox.focusCommandExecuted)n.focus();};}}if(s){q.push('</span>');s=0;}q.push('<span class="cke_toolbar_end"></span></span>');}q.push('</div>');if(n.config.toolbarCanCollapse){var E=e.addFunction(function(){n.execCommand('toolbarCollapse');}),F='cke_'+e.getNextNumber();n.addCommand('toolbarCollapse',{exec:function(G){var H=a.document.getById(F),I=H.getPrevious(),J=G.getThemeSpace('contents'),K=I.getParent(),L=parseInt(J.$.style.height,10),M=K.$.offsetHeight;if(I.isVisible()){I.hide();H.addClass('cke_toolbox_collapser_min');}else{I.show();H.removeClass('cke_toolbox_collapser_min');}var N=K.$.offsetHeight-M;J.setStyle('height',L-N+'px');},modes:{wysiwyg:1,source:1}});q.push('<a id="'+F+'" class="cke_toolbox_collapser');if(!r)q.push(' cke_toolbox_collapser_min');q.push('" onclick="CKEDITOR.tools.callFunction('+E+')"></a>');}p.data.html+=q.join('');}});n.addCommand('toolbarFocus',m.toolbarFocus);}});})();k.separator={render:function(l,m){m.push('<span class="cke_separator"></span>');return{};}};i.toolbarLocation='top';i.toolbar_Basic=[['Bold','Italic','-','NumberedList','BulletedList','-','Link','Unlink','-','About']];
+i.toolbar_Full=[['Source','-','Save','NewPage','Preview','-','Templates'],['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print','SpellChecker','Scayt'],['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],'/',['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],['Link','Unlink','Anchor'],['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],'/',['Styles','Format','Font','FontSize'],['TextColor','BGColor'],['Maximize','ShowBlocks','-','About']];i.toolbar='Full';i.toolbarCanCollapse=true;i.toolbarStartupExpanded=true;(function(){j.add('undo',{requires:['selection','wysiwygarea'],init:function(n){var o=new m(n),p=n.addCommand('undo',{exec:function(){if(o.undo()){n.selectionChange();this.fire('afterUndo');}},state:0,canUndo:false}),q=n.addCommand('redo',{exec:function(){if(o.redo()){n.selectionChange();this.fire('afterRedo');}},state:0,canUndo:false});o.onChange=function(){p.setState(o.undoable()?2:0);q.setState(o.redoable()?2:0);};function r(s){if(o.enabled&&s.data.command.canUndo!==false)o.save();};n.on('beforeCommandExec',r);n.on('afterCommandExec',r);n.on('saveSnapshot',function(){o.save();});n.on('contentDom',function(){n.document.on('keydown',function(s){if(!s.data.$.ctrlKey&&!s.data.$.metaKey)o.type(s);});});n.on('beforeModeUnload',function(){n.mode=='wysiwyg'&&o.save(true);});n.on('mode',function(){o.enabled=n.mode=='wysiwyg';o.onChange();});n.ui.addButton('Undo',{label:n.lang.undo,command:'undo'});n.ui.addButton('Redo',{label:n.lang.redo,command:'redo'});n.resetUndo=function(){o.reset();n.fire('saveSnapshot');};}});function l(n){var p=this;var o=n.getSelection();p.contents=n.getSnapshot();p.bookmarks=o&&o.createBookmarks2(true);if(c)p.contents=p.contents.replace(/\s+_cke_expando=".*?"/g,'');};l.prototype={equals:function(n,o){if(this.contents!=n.contents)return false;if(o)return true;var p=this.bookmarks,q=n.bookmarks;if(p||q){if(!p||!q||p.length!=q.length)return false;for(var r=0;r<p.length;r++){var s=p[r],t=q[r];if(s.startOffset!=t.startOffset||s.endOffset!=t.endOffset||!e.arrayCompare(s.start,t.start)||!e.arrayCompare(s.end,t.end))return false;}}return true;}};function m(n){this.editor=n;this.reset();};m.prototype={type:function(n){var o=n&&n.data.getKeystroke(),p={8:1,46:1},q=o in p,r=this.lastKeystroke in p,s=q&&o==this.lastKeystroke,t={37:1,38:1,39:1,40:1},u=o in t,v=this.lastKeystroke in t,w=!q&&!u,x=q&&!s,y=!this.typing||w&&(r||v);
+if(y||x){var z=new l(this.editor);e.setTimeout(function(){var B=this;var A=B.editor.getSnapshot();if(c)A=A.replace(/\s+_cke_expando=".*?"/g,'');if(z.contents!=A){if(!B.save(false,z,false))B.snapshots.splice(B.index+1,B.snapshots.length-B.index-1);B.hasUndo=true;B.hasRedo=false;B.typesCount=1;B.modifiersCount=1;B.onChange();}},0,this);}this.lastKeystroke=o;if(q){this.typesCount=0;this.modifiersCount++;if(this.modifiersCount>25){this.save();this.modifiersCount=1;}}else if(!u){this.modifiersCount=0;this.typesCount++;if(this.typesCount>25){this.save();this.typesCount=1;}}this.typing=true;},reset:function(){var n=this;n.lastKeystroke=0;n.snapshots=[];n.index=-1;n.limit=n.editor.config.undoStackSize;n.currentImage=null;n.hasUndo=false;n.hasRedo=false;n.resetType();},resetType:function(){var n=this;n.typing=false;delete n.lastKeystroke;n.typesCount=0;n.modifiersCount=0;},fireChange:function(){var n=this;n.hasUndo=!!n.getNextImage(true);n.hasRedo=!!n.getNextImage(false);n.resetType();n.onChange();},save:function(n,o,p){var r=this;var q=r.snapshots;if(!o)o=new l(r.editor);if(r.currentImage&&o.equals(r.currentImage,n))return false;q.splice(r.index+1,q.length-r.index-1);if(q.length==r.limit)q.shift();r.index=q.push(o)-1;r.currentImage=o;if(p!==false)r.fireChange();return true;},restoreImage:function(n){var p=this;p.editor.loadSnapshot(n.contents);if(n.bookmarks)p.editor.getSelection().selectBookmarks(n.bookmarks);else if(c){var o=p.editor.document.getBody().$.createTextRange();o.collapse(true);o.select();}p.index=n.index;p.currentImage=n;p.fireChange();},getNextImage:function(n){var s=this;var o=s.snapshots,p=s.currentImage,q,r;if(p)if(n)for(r=s.index-1;r>=0;r--){q=o[r];if(!p.equals(q,true)){q.index=r;return q;}}else for(r=s.index+1;r<o.length;r++){q=o[r];if(!p.equals(q,true)){q.index=r;return q;}}return null;},redoable:function(){return this.enabled&&this.hasRedo;},undoable:function(){return this.enabled&&this.hasUndo;},undo:function(){var o=this;if(o.undoable()){o.save(true);var n=o.getNextImage(true);if(n)return o.restoreImage(n),true;}return false;},redo:function(){var o=this;if(o.redoable()){o.save(true);if(o.redoable()){var n=o.getNextImage(false);if(n)return o.restoreImage(n),true;}}return false;}};})();i.undoStackSize=20;(function(){var l={table:1,pre:1},m=/\s*<(p|div|address|h\d|center)[^>]*>\s*(?:<br[^>]*>|&nbsp;|&#160;)\s*(:?<\/\1>)?\s*$/gi;function n(r){var w=this;if(w.mode=='wysiwyg'){w.focus();var s=w.getSelection(),t=r.data;if(w.dataProcessor)t=w.dataProcessor.toHtml(t);
+if(c){var u=s.isLocked;if(u)s.unlock();var v=s.getNative();if(v.type=='Control')v.clear();v.createRange().pasteHTML(t);if(u)w.getSelection().lock();}else w.document.$.execCommand('inserthtml',false,t);}};function o(r){if(this.mode=='wysiwyg'){this.focus();this.fire('saveSnapshot');var s=r.data,t=s.getName(),u=f.$block[t],v=this.getSelection(),w=v.getRanges(),x=v.isLocked;if(x)v.unlock();var y,z,A,B;for(var C=w.length-1;C>=0;C--){y=w[C];y.deleteContents();z=!C&&s||s.clone(true);var D,E;if(u)while((D=y.getCommonAncestor(false,true))&&((E=f[D.getName()])&&(!(E&&E[t]))))if(y.checkStartOfBlock()&&y.checkEndOfBlock()){y.setStartBefore(D);y.collapse(true);D.remove();}else y.splitBlock();y.insertNode(z);if(!A)A=z;}y.moveToPosition(A,4);var F=A.getNextSourceNode(true);if(F&&F.type==1)y.moveToElementEditStart(F);v.selectRanges([y]);if(x)this.getSelection().lock();e.setTimeout(function(){this.fire('saveSnapshot');},0,this);}};function p(r){if(!r.checkDirty())setTimeout(function(){r.resetDirty();});};function q(r){var s=r.editor,t=r.data.path,u=t.blockLimit,v=r.data.selection,w=v.getRanges()[0],x=s.document.getBody(),y=s.config.enterMode;if(y!=2&&w.collapsed&&u.getName()=='body'&&!t.block){p(s);var z=v.createBookmarks(),A=w.fixBlock(true,s.config.enterMode==3?'div':'p');if(c){var B=A.getElementsByTag('br'),C;for(var D=0;D<B.count();D++)if((C=B.getItem(D))&&(C.hasAttribute('_cke_bogus')))C.remove();}v.selectBookmarks(z);var E=A.getChildren(),F=E.count(),G,H=d.walker.whitespaces(true),I=A.getPrevious(H),J=A.getNext(H),K;if(I&&I.getName&&!(I.getName() in l))K=I;else if(J&&J.getName&&!(J.getName() in l))K=J;if((!F||(G=E.getItem(0))&&(G.is&&G.is('br')))&&(K&&w.moveToElementEditStart(K))){A.remove();w.select();}}var L=x.getLast(d.walker.whitespaces(true));if(L&&L.getName&&L.getName() in l){p(s);var M=s.document.createElement(c&&y!=2?'<br _cke_bogus="true" />':'br');x.append(M);}};j.add('wysiwygarea',{requires:['editingblock'],init:function(r){var s=r.config.enterMode!=2?r.config.enterMode==3?'div':'p':false;r.on('editingBlockReady',function(){var t,u,v,w,x,y,z,A=b.isCustomDomain(),B=function(){if(v)v.remove();if(u)u.remove();y=0;var E='void( '+(b.gecko?'setTimeout':'')+'( function(){'+'document.open();'+(c&&A?'document.domain="'+document.domain+'";':'')+'document.write( window.parent[ "_cke_htmlToLoad_'+r.name+'" ] );'+'document.close();'+'window.parent[ "_cke_htmlToLoad_'+r.name+'" ] = null;'+'}'+(b.gecko?', 0 )':')()')+' )';if(b.opera)E='void(0);';v=h.createFromHtml('<iframe style="width:100%;height:100%" frameBorder="0" tabIndex="-1" allowTransparency="true" src="javascript:'+encodeURIComponent(E)+'"'+'></iframe>');
+var F=r.lang.editorTitle.replace('%1',r.name);if(b.gecko){v.on('load',function(G){G.removeListener();D(v.$.contentWindow);});t.setAttributes({role:'region',title:F});v.setAttributes({role:'region',title:' '});}else if(b.webkit){v.setAttribute('title',F);v.setAttribute('name',F);}else if(c){u=h.createFromHtml('<fieldset style="height:100%'+(c&&b.quirks?';position:relative':'')+'">'+'<legend style="display:block;width:0;height:0;overflow:hidden;'+(c&&b.quirks?'position:absolute':'')+'">'+e.htmlEncode(F)+'</legend>'+'</fieldset>',a.document);v.appendTo(u);u.appendTo(t);}if(!c)t.append(v);},C='<script id="cke_actscrpt" type="text/javascript">window.onload = function(){window.parent.CKEDITOR._["contentDomReady'+r.name+'"]( window );'+'}'+'</script>',D=function(E){if(y)return;y=1;var F=E.document,G=F.body,H=F.getElementById('cke_actscrpt');H.parentNode.removeChild(H);delete a._['contentDomReady'+r.name];G.spellcheck=!r.config.disableNativeSpellChecker;if(c){G.hideFocus=true;G.disabled=true;G.contentEditable=true;G.removeAttribute('disabled');}else F.designMode='on';try{F.execCommand('enableObjectResizing',false,!r.config.disableObjectResizing);}catch(K){}try{F.execCommand('enableInlineTableEditing',false,!r.config.disableNativeTableHandles);}catch(L){}E=r.window=new d.window(E);F=r.document=new g(F);if(!(c||b.opera))F.on('mousedown',function(M){var N=M.data.getTarget();if(N.is('img','hr','input','textarea','select'))r.getSelection().selectElement(N);});if(b.webkit){F.on('click',function(M){if(M.data.getTarget().is('input','select'))M.data.preventDefault();});F.on('mouseup',function(M){if(M.data.getTarget().is('input','textarea'))M.data.preventDefault();});}var I=c||b.webkit?E:F;I.on('blur',function(){r.focusManager.blur();});I.on('focus',function(){if(b.gecko){var M=G;while(M.firstChild)M=M.firstChild;if(!M.nextSibling&&'BR'==M.tagName&&M.hasAttribute('_moz_editor_bogus_node')){var N=F.$.createEvent('KeyEvents');N.initKeyEvent('keypress',true,true,E.$,false,false,false,false,0,32);F.$.dispatchEvent(N);var O=F.getBody().getFirst();if(r.config.enterMode==2)F.createElement('br',{attributes:{_moz_dirty:''}}).replace(O);else O.remove();}}r.focusManager.focus();});var J=r.keystrokeHandler;if(J)J.attach(F);if(c)r.on('key',function(M){var N=M.data.keyCode==8&&r.getSelection().getSelectedElement();if(N){r.fire('saveSnapshot');N.remove();r.fire('saveSnapshot');M.cancel();}});if(r.contextMenu)r.contextMenu.addTarget(F);setTimeout(function(){r.fire('contentDom');if(z){r.mode='wysiwyg';
+r.fire('mode');z=false;}w=false;if(x){r.focus();x=false;}setTimeout(function(){r.fire('dataReady');},0);if(c)setTimeout(function(){if(r.document){var M=r.document.$.body;M.runtimeStyle.marginBottom='0px';M.runtimeStyle.marginBottom='';}},1000);},0);};r.addMode('wysiwyg',{load:function(E,F,G){t=E;if(c&&b.quirks)E.setStyle('position','relative');r.mayBeDirty=true;z=true;if(G)this.loadSnapshotData(F);else this.loadData(F);},loadData:function(E){w=true;if(r.dataProcessor)E=r.dataProcessor.toHtml(E,s);E=r.config.docType+'<html dir="'+r.config.contentsLangDirection+'">'+'<head>'+'<link type="text/css" rel="stylesheet" href="'+[].concat(r.config.contentsCss).join('"><link type="text/css" rel="stylesheet" href="')+'">'+'<style type="text/css" _fcktemp="true">'+r._.styles.join('\n')+'</style>'+'</head>'+'<body>'+E+'</body>'+'</html>'+C;window['_cke_htmlToLoad_'+r.name]=E;a._['contentDomReady'+r.name]=D;B();if(b.opera){var F=v.$.contentWindow.document;F.open();F.write(E);F.close();}},getData:function(){var E=v.getFrameDocument().getBody().getHtml();if(r.dataProcessor)E=r.dataProcessor.toDataFormat(E,s);if(r.config.ignoreEmptyParagraph)E=E.replace(m,'');return E;},getSnapshotData:function(){return v.getFrameDocument().getBody().getHtml();},loadSnapshotData:function(E){v.getFrameDocument().getBody().setHtml(E);},unload:function(E){r.window=r.document=v=t=x=null;r.fire('contentDomUnload');},focus:function(){if(w)x=true;else if(r.window){r.window.focus();r.selectionChange();}}});r.on('insertHtml',n,null,null,20);r.on('insertElement',o,null,null,20);r.on('selectionChange',q,null,null,1);});}});})();i.disableObjectResizing=false;i.disableNativeTableHandles=true;i.disableNativeSpellChecker=true;i.ignoreEmptyParagraph=true;j.add('wsc',{init:function(l){var m='checkspell',n=l.addCommand(m,new a.dialogCommand(m));n.modes={wysiwyg:!b.opera&&document.domain==window.location.hostname};l.ui.addButton('SpellChecker',{label:l.lang.spellCheck.toolbar,command:m});a.dialog.add(m,this.path+'dialogs/wsc.js');}});i.wsc_customerId=i.wsc_customerId||'1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk';i.wsc_customLoaderScript=i.wsc_customLoaderScript||null;j.add('styles',{requires:['selection']});a.editor.prototype.attachStyleStateChange=function(l,m){var n=this._.styleStateChangeCallbacks;if(!n){n=this._.styleStateChangeCallbacks=[];this.on('selectionChange',function(o){for(var p=0;p<n.length;p++){var q=n[p],r=q.style.checkActive(o.data.path)?1:2;if(q.state!==r){q.fn.call(this,r);
+q.state!==r;}}});}n.push({style:l,fn:m});};a.STYLE_BLOCK=1;a.STYLE_INLINE=2;a.STYLE_OBJECT=3;(function(){var l={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1},m={a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,ul:1},n=/\s*(?:;\s*|$)/;a.style=function(L,M){if(M){L=e.clone(L);G(L.attributes,M);G(L.styles,M);}var N=this.element=(L.element||'*').toLowerCase();this.type=N=='#'||l[N]?1:m[N]?3:2;this._={definition:L};};a.style.prototype={apply:function(L){K.call(this,L,false);},remove:function(L){K.call(this,L,true);},applyToRange:function(L){var M=this;return(M.applyToRange=M.type==2?o:M.type==1?q:null).call(M,L);},removeFromRange:function(L){return(this.removeFromRange=this.type==2?p:null).call(this,L);},applyToObject:function(L){E(L,this);},checkActive:function(L){switch(this.type){case 1:return this.checkElementRemovable(L.block||L.blockLimit,true);case 2:var M=L.elements;for(var N=0,O;N<M.length;N++){O=M[N];if(O==L.block||O==L.blockLimit)continue;if(this.checkElementRemovable(O,true))return true;}}return false;},checkElementRemovable:function(L,M){if(!L)return false;var N=this._.definition,O;if(L.getName()==this.element){if(!M&&!L.hasAttributes())return true;O=H(N);if(O._length){for(var P in O){if(P=='_length')continue;var Q=L.getAttribute(P);if(O[P]==(P=='style'?J(Q,false):Q)){if(!M)return true;}else if(M)return false;}if(M)return true;}else return true;}var R=I(this)[L.getName()];if(R){if(!(O=R.attributes))return true;for(var S=0;S<O.length;S++){P=O[S][0];var T=L.getAttribute(P);if(T){var U=O[S][1];if(U===null||typeof U=='string'&&T==U||U.test(T))return true;}}}return false;}};a.style.getStyleText=function(L){var M=L._ST;if(M)return M;M=L.styles;var N=L.attributes&&L.attributes.style||'';if(N.length)N=N.replace(n,';');for(var O in M)N+=(O+':'+M[O]).replace(n,';');if(N.length)N=J(N);return L._ST=N;};function o(L){var al=this;var M=L.document;if(L.collapsed){var N=D(al,M);L.insertNode(N);L.moveToPosition(N,2);return;}var O=al.element,P=al._.definition,Q,R=f[O]||(Q=true,f.span),S=L.createBookmark();L.enlarge(1);L.trim();var T=L.getBoundaryNodes(),U=T.startNode,V=T.endNode.getNextSourceNode(true);if(!V){var W;V=W=M.createText('');V.insertAfter(L.endContainer);}var X=V.getParent();if(X&&X.getAttribute('_fck_bookmark'))V=X;if(V.equals(U)){V=V.getNextSourceNode(true);if(!V){V=W=M.createText('');V.insertAfter(U);}}var Y=U,Z,aa;while(Y){var ab=false;if(Y.equals(V)){Y=null;ab=true;}else{var ac=Y.type,ad=ac==1?Y.getName():null;if(ad&&Y.getAttribute('_fck_bookmark')){Y=Y.getNextSourceNode(true);
+continue;}if(!ad||R[ad]&&(Y.getPosition(V)|4|0|8)==(4+0+8)){var ae=Y.getParent();if(ae&&((ae.getDtd()||f.span)[O]||Q)){if(!Z&&(!ad||!f.$removeEmpty[ad]||(Y.getPosition(V)|4|0|8)==(4+0+8))){Z=new d.range(M);Z.setStartBefore(Y);}if(ac==3||ac==1&&!Y.getChildCount()){var af=Y,ag;while(!af.$.nextSibling&&(ag=af.getParent(),R[ag.getName()])&&((ag.getPosition(U)|2|0|8)==(2+0+8)))af=ag;Z.setEndAfter(af);if(!af.$.nextSibling)ab=true;if(!aa)aa=ac!=3||/[^\s\ufeff]/.test(Y.getText());}}else ab=true;}else ab=true;Y=Y.getNextSourceNode();}if(ab&&aa&&Z&&!Z.collapsed){var ah=D(al,M),ai=Z.getCommonAncestor();while(ah&&ai){if(ai.getName()==O){for(var aj in P.attributes)if(ah.getAttribute(aj)==ai.getAttribute(aj))ah.removeAttribute(aj);for(var ak in P.styles)if(ah.getStyle(ak)==ai.getStyle(ak))ah.removeStyle(ak);if(!ah.hasAttributes()){ah=null;break;}}ai=ai.getParent();}if(ah){Z.extractContents().appendTo(ah);y(al,ah);Z.insertNode(ah);B(ah);if(!c)ah.$.normalize();}Z=null;}}W&&W.remove();L.moveToBookmark(S);};function p(L){L.enlarge(1);var M=L.createBookmark(),N=M.startNode;if(L.collapsed){var O=new d.elementPath(N.getParent()),P;for(var Q=0,R;Q<O.elements.length&&(R=O.elements[Q]);Q++){if(R==O.block||R==O.blockLimit)break;if(this.checkElementRemovable(R)){var S=L.checkBoundaryOfElement(R,2),T=!S&&L.checkBoundaryOfElement(R,1);if(T||S){P=R;P.match=T?'start':'end';}else{B(R);x(this,R);}}}if(P){var U=N;for(Q=0;true;Q++){var V=O.elements[Q];if(V.equals(P))break;else if(V.match)continue;else V=V.clone();V.append(U);U=V;}U[P.match=='start'?'insertBefore':'insertAfter'](P);}}else{var W=M.endNode,X=this;function Y(){var ab=new d.elementPath(N.getParent()),ac=new d.elementPath(W.getParent()),ad=null,ae=null;for(var af=0;af<ab.elements.length;af++){var ag=ab.elements[af];if(ag==ab.block||ag==ab.blockLimit)break;if(X.checkElementRemovable(ag))ad=ag;}for(af=0;af<ac.elements.length;af++){ag=ac.elements[af];if(ag==ac.block||ag==ac.blockLimit)break;if(X.checkElementRemovable(ag))ae=ag;}if(ae)W.breakParent(ae);if(ad)N.breakParent(ad);};Y();var Z=N.getNext();while(!Z.equals(W)){var aa=Z.getNextSourceNode();if(Z.type==1&&this.checkElementRemovable(Z)){if(Z.getName()==this.element)x(this,Z);else z(Z,I(this)[Z.getName()]);if(aa.type==1&&aa.contains(N)){Y();aa=N.getNext();}}Z=aa;}}L.moveToBookmark(M);};function q(L){var M=L.createBookmark(true),N=L.createIterator();N.enforceRealBlocks=true;var O,P=L.document,Q;while(O=N.getNextParagraph()){var R=D(this,P);r(O,R);}L.moveToBookmark(M);};function r(L,M){var N=M.is('pre'),O=L.is('pre'),P=N&&!O,Q=!N&&O;
+if(P)M=w(L,M);else if(Q)M=v(t(L),M);else L.moveChildren(M);M.replace(L);if(N)s(M);};function s(L){var M;if(!((M=L.getPreviousSourceNode(true,1))&&(M.is&&M.is('pre'))))return;var N=u(M.getHtml(),/\n$/,'')+'\n\n'+u(L.getHtml(),/^\n/,'');if(c)L.$.outerHTML='<pre>'+N+'</pre>';else L.setHtml(N);M.remove();};function t(L){var M=/(\S\s*)\n(?:\s|(<span[^>]+_fck_bookmark.*?\/span>))*\n(?!$)/gi,N=L.getName(),O=u(L.getOuterHtml(),M,function(Q,R,S){return R+'</pre>'+S+'<pre>';}),P=[];O.replace(/<pre>([\s\S]*?)<\/pre>/gi,function(Q,R){P.push(R);});return P;};function u(L,M,N){var O='',P='';L=L.replace(/(^<span[^>]+_fck_bookmark.*?\/span>)|(<span[^>]+_fck_bookmark.*?\/span>$)/gi,function(Q,R,S){R&&(O=R);S&&(P=S);return '';});return O+L.replace(M,N)+P;};function v(L,M){var N=new d.documentFragment(M.getDocument());for(var O=0;O<L.length;O++){var P=L[O];P=P.replace(/(\r\n|\r)/g,'\n');P=u(P,/^[ \t]*\n/,'');P=u(P,/\n$/,'');P=u(P,/^[ \t]+|[ \t]+$/g,function(R,S,T){if(R.length==1)return '&nbsp;';else if(!S)return e.repeat('&nbsp;',R.length-1)+' ';else return ' '+e.repeat('&nbsp;',R.length-1);});P=P.replace(/\n/g,'<br>');P=P.replace(/[ \t]{2,}/g,function(R){return e.repeat('&nbsp;',R.length-1)+' ';});var Q=M.clone();Q.setHtml(P);N.append(Q);}return N;};function w(L,M){var N=L.getHtml();N=u(N,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,'');N=N.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'$1');N=N.replace(/([ \t\n\r]+|&nbsp;)/g,' ');N=N.replace(/<br\b[^>]*>/gi,'\n');if(c){var O=L.getDocument().createElement('div');O.append(M);M.$.outerHTML='<pre>'+N+'</pre>';M=O.getFirst().remove();}else M.setHtml(N);return M;};function x(L,M){var N=L._.definition,O=N.attributes,P=N.styles,Q=I(L);function R(){for(var T in O){if(T=='class'&&M.getAttribute(T)!=O[T])continue;M.removeAttribute(T);}};R();for(var S in P)M.removeStyle(S);O=Q[M.getName()];if(O)R();A(M);};function y(L,M){var N=L._.definition,O=N.attributes,P=N.styles,Q=I(L),R=M.getElementsByTag(L.element);for(var S=R.count();--S>=0;)x(L,R.getItem(S));for(var T in Q)if(T!=L.element){R=M.getElementsByTag(T);for(S=R.count()-1;S>=0;S--){var U=R.getItem(S);z(U,Q[T]);}}};function z(L,M){var N=M&&M.attributes;if(N)for(var O=0;O<N.length;O++){var P=N[O][0],Q;if(Q=L.getAttribute(P)){var R=N[O][1];if(R===null||R.test&&R.test(Q)||typeof R=='string'&&Q==R)L.removeAttribute(P);}}A(L);};function A(L){if(!L.hasAttributes()){var M=L.getFirst(),N=L.getLast();L.remove(true);if(M){B(M);if(N&&!M.equals(N))B(N);}}};function B(L){if(!L||L.type!=1||!f.$removeEmpty[L.getName()])return;
+C(L,L.getNext(),true);C(L,L.getPrevious());};function C(L,M,N){if(M&&M.type==1){var O=M.getAttribute('_fck_bookmark');if(O)M=N?M.getNext():M.getPrevious();if(M&&M.type==1&&L.isIdentical(M)){var P=N?L.getLast():L.getFirst();if(O)(N?M.getPrevious():M.getNext()).move(L,!N);M.moveChildren(L,!N);M.remove();if(P)B(P);}}};function D(L,M){var N,O=L._.definition,P=L.element;if(P=='*')P='span';N=new h(P,M);return E(N,L);};function E(L,M){var N=M._.definition,O=N.attributes,P=a.style.getStyleText(N);if(O)for(var Q in O)L.setAttribute(Q,O[Q]);if(P)L.setAttribute('style',P);return L;};var F=/#\((.+?)\)/g;function G(L,M){for(var N in L)L[N]=L[N].replace(F,function(O,P){return M[P];});};function H(L){var M=L._AC;if(M)return M;M={};var N=0,O=L.attributes;if(O)for(var P in O){N++;M[P]=O[P];}var Q=a.style.getStyleText(L);if(Q){if(!M.style)N++;M.style=Q;}M._length=N;return L._AC=M;};function I(L){if(L._.overrides)return L._.overrides;var M=L._.overrides={},N=L._.definition.overrides;if(N){if(!e.isArray(N))N=[N];for(var O=0;O<N.length;O++){var P=N[O],Q,R,S;if(typeof P=='string')Q=P.toLowerCase();else{Q=P.element?P.element.toLowerCase():L.element;S=P.attributes;}R=M[Q]||(M[Q]={});if(S){var T=R.attributes=R.attributes||[];for(var U in S)T.push([U.toLowerCase(),S[U]]);}}}return M;};function J(L,M){var N;if(M!==false){var O=new h('span');O.setAttribute('style',L);N=O.getAttribute('style');}else N=L;return N.replace(/\s*([;:])\s*/,'$1').replace(/([^\s;])$/,'$1;').replace(/,\s+/g,',').toLowerCase();};function K(L,M){var N=L.getSelection(),O=N.getRanges(),P=M?this.removeFromRange:this.applyToRange;for(var Q=0;Q<O.length;Q++)P.call(this,O[Q]);N.selectRanges(O);};})();a.styleCommand=function(l){this.style=l;};a.styleCommand.prototype.exec=function(l){var n=this;l.focus();var m=l.document;if(m)if(n.state==2)n.style.apply(m);else if(n.state==1)n.style.remove(m);return!!m;};j.add('domiterator');(function(){var l=function(n){var o=this;if(arguments.length<1)return;o.range=n;o.forceBrBreak=false;o.enlargeBr=true;o.enforceRealBlocks=false;o._||(o._={});},m=/^[\r\n\t ]+$/;l.prototype={getNextParagraph:function(n){var O=this;var o,p,q,r,s;if(!O._.lastNode){p=O.range.clone();p.enlarge(O.forceBrBreak||!O.enlargeBr?3:2);var t=new d.walker(p),u=d.walker.bookmark(true,true);t.evaluator=u;O._.nextNode=t.next();t=new d.walker(p);t.evaluator=u;var v=t.previous();O._.lastNode=v.getNextSourceNode(true);if(O._.lastNode&&O._.lastNode.type==3&&!e.trim(O._.lastNode.getText())&&O._.lastNode.getParent().isBlockBoundary()){var w=new d.range(p.document);
+w.moveToPosition(O._.lastNode,4);if(w.checkEndOfBlock()){var x=new d.elementPath(w.endContainer),y=x.block||x.blockLimit;O._.lastNode=y.getNextSourceNode(true);}}if(!O._.lastNode){O._.lastNode=O._.docEndMarker=p.document.createText('');O._.lastNode.insertAfter(v);}p=null;}var z=O._.nextNode;v=O._.lastNode;O._.nextNode=null;while(z){var A=false,B=z.type!=1,C=false;if(!B){var D=z.getName();if(z.isBlockBoundary(O.forceBrBreak&&{br:1})){if(D=='br')B=true;else if(!p&&!z.getChildCount()&&D!='hr'){o=z;q=z.equals(v);break;}if(p){p.setEndAt(z,3);if(D!='br')O._.nextNode=z;}A=true;}else{if(z.getFirst()){if(!p){p=new d.range(O.range.document);p.setStartAt(z,3);}z=z.getFirst();continue;}B=true;}}else if(z.type==3)if(m.test(z.getText()))B=false;if(B&&!p){p=new d.range(O.range.document);p.setStartAt(z,3);}q=(!A||B)&&(z.equals(v));if(p&&!A)while(!z.getNext()&&!q){var E=z.getParent();if(E.isBlockBoundary(O.forceBrBreak&&{br:1})){A=true;q=q||E.equals(v);break;}z=E;B=true;q=z.equals(v);C=true;}if(B)p.setEndAt(z,4);z=z.getNextSourceNode(C,null,v);q=!z;if((A||q)&&(p)){var F=p.getBoundaryNodes(),G=new d.elementPath(p.startContainer),H=new d.elementPath(p.endContainer);if(F.startNode.equals(F.endNode)&&F.startNode.getParent().equals(G.blockLimit)&&F.startNode.type==1&&F.startNode.getAttribute('_fck_bookmark')){p=null;O._.nextNode=null;}else break;}if(q)break;}if(!o){if(!p){O._.docEndMarker&&O._.docEndMarker.remove();O._.nextNode=null;return null;}G=new d.elementPath(p.startContainer);var I=G.blockLimit,J={div:1,th:1,td:1};o=G.block;if(!o&&!O.enforceRealBlocks&&J[I.getName()]&&p.checkStartOfBlock()&&p.checkEndOfBlock())o=I;else if(!o||O.enforceRealBlocks&&o.getName()=='li'){o=O.range.document.createElement(n||'p');p.extractContents().appendTo(o);o.trim();p.insertNode(o);r=s=true;}else if(o.getName()!='li'){if(!p.checkStartOfBlock()||!p.checkEndOfBlock()){o=o.clone(false);p.extractContents().appendTo(o);o.trim();var K=p.splitBlock();r=!K.wasStartOfBlock;s=!K.wasEndOfBlock;p.insertNode(o);}}else if(!q)O._.nextNode=o.equals(v)?null:p.getBoundaryNodes().endNode.getNextSourceNode(true,null,v);}if(r){var L=o.getPrevious();if(L&&L.type==1)if(L.getName()=='br')L.remove();else if(L.getLast()&&L.getLast().$.nodeName.toLowerCase()=='br')L.getLast().remove();}if(s){var M=d.walker.bookmark(false,true),N=o.getLast();if(N&&N.type==1&&N.getName()=='br')if(c||N.getPrevious(M)||N.getNext(M))N.remove();}if(!O._.nextNode)O._.nextNode=q||o.equals(v)?null:o.getNextSourceNode(true,null,v);return o;}};d.range.prototype.createIterator=function(){return new l(this);
+};})();j.add('panelbutton',{requires:['button'],beforeInit:function(l){l.ui.addHandler(4,k.panelButton.handler);}});a.UI_PANELBUTTON=4;(function(){var l=function(m){var o=this;var n=o._;if(n.state==0)return;o.createPanel(m);if(n.on){n.panel.hide();return;}n.panel.showBlock(o._.id,o.document.getById(o._.id),4);};k.panelButton=e.createClass({base:k.button,$:function(m){var o=this;var n=m.panel;delete m.panel;o.base(m);o.document=n&&n.parent&&n.parent.getDocument()||a.document;o.hasArrow=true;o.click=l;o._={panelDefinition:n};},statics:{handler:{create:function(m){return new k.panelButton(m);}}},proto:{createPanel:function(m){var n=this._;if(n.panel)return;var o=this._.panelDefinition||{},p=o.parent||a.document.getBody(),q=this._.panel=new k.floatPanel(m,p,o),r=this;q.onShow=function(){if(r.className)this.element.getFirst().addClass(r.className+'_panel');n.oldState=r._.state;r.setState(1);n.on=1;if(r.onOpen)r.onOpen();};q.onHide=function(){if(r.className)this.element.getFirst().removeClass(r.className+'_panel');r.setState(n.oldState);n.on=0;if(r.onClose)r.onClose();};q.onEscape=function(){q.hide();r.document.getById(n.id).focus();};if(this.onBlock)this.onBlock(q,n.id);q.getBlock(n.id).onHide=function(){n.on=0;r.setState(2);};}}});})();j.add('floatpanel',{requires:['panel']});(function(){var l={},m=false;function n(o,p,q,r,s){var t=p.getUniqueId()+'-'+q.getUniqueId()+'-'+o.skinName+'-'+o.lang.dir+(o.uiColor&&'-'+o.uiColor||'')+(r.css&&'-'+r.css||'')+(s&&'-'+s||''),u=l[t];if(!u){u=l[t]=new k.panel(p,r);u.element=q.append(h.createFromHtml(u.renderHtml(o),p));u.element.setStyles({display:'none',position:'absolute'});}return u;};k.floatPanel=e.createClass({$:function(o,p,q,r){q.forceIFrame=true;var s=p.getDocument(),t=n(o,s,p,q,r||0),u=t.element,v=u.getFirst().getFirst();this.element=u;o.panels?o.panels.push(u):o.panels=[u];this._={panel:t,parentElement:p,definition:q,document:s,iframe:v,children:[],dir:o.lang.dir};},proto:{addBlock:function(o,p){return this._.panel.addBlock(o,p);},addListBlock:function(o,p){return this._.panel.addListBlock(o,p);},getBlock:function(o){return this._.panel.getBlock(o);},showBlock:function(o,p,q,r,s){var t=this._.panel,u=t.showBlock(o);this.allowBlur(false);m=true;var v=this.element,w=this._.iframe,x=this._.definition,y=p.getDocumentPosition(v.getDocument()),z=this._.dir=='rtl',A=y.x+(r||0),B=y.y+(s||0);if(z&&(q==1||q==4))A+=p.$.offsetWidth;else if(!z&&(q==2||q==3))A+=p.$.offsetWidth-1;if(q==3||q==4)B+=p.$.offsetHeight-1;this._.panel._.offsetParentId=p.getId();
+v.setStyles({top:B+'px',left:'-3000px',visibility:'hidden',opacity:'0',display:''});if(!this._.blurSet){var C=c?w:new d.window(w.$.contentWindow);a.event.useCapture=true;C.on('blur',function(D){var G=this;if(c&&!G.allowBlur())return;var E=D.data.getTarget(),F=E.getWindow&&E.getWindow();if(F&&F.equals(C))return;if(G.visible&&!G._.activeChild&&!m)G.hide();},this);C.on('focus',function(){this._.focused=true;this.hideChild();this.allowBlur(true);},this);a.event.useCapture=false;this._.blurSet=1;}t.onEscape=e.bind(function(){this.onEscape&&this.onEscape();},this);e.setTimeout(function(){if(z)A-=v.$.offsetWidth;v.setStyles({left:A+'px',visibility:'',opacity:'1'});if(u.autoSize){function D(){var E=v.getFirst(),F=u.element.$.scrollHeight;if(c&&b.quirks&&F>0)F+=(E.$.offsetHeight||0)-(E.$.clientHeight||0);E.setStyle('height',F+'px');t._.currentBlock.element.setStyle('display','none').removeStyle('display');};if(t.isLoaded)D();else t.onLoad=D;}else v.getFirst().removeStyle('height');e.setTimeout(function(){if(x.voiceLabel)if(b.gecko){var E=w.getParent();E.setAttribute('role','region');E.setAttribute('title',x.voiceLabel);w.setAttribute('role','region');w.setAttribute('title',' ');}if(c&&b.quirks)w.focus();else w.$.contentWindow.focus();if(c&&!b.quirks)this.allowBlur(true);},0,this);},0,this);this.visible=1;if(this.onShow)this.onShow.call(this);m=false;},hide:function(){var o=this;if(o.visible&&(!o.onHide||o.onHide.call(o)!==true)){o.hideChild();o.element.setStyle('display','none');o.visible=0;}},allowBlur:function(o){var p=this._.panel;if(o!=undefined)p.allowBlur=o;return p.allowBlur;},showAsChild:function(o,p,q,r,s,t){if(this._.activeChild==o&&o._.panel._.offsetParentId==q.getId())return;this.hideChild();o.onHide=e.bind(function(){e.setTimeout(function(){if(!this._.focused)this.hide();},0,this);},this);this._.activeChild=o;this._.focused=false;o.showBlock(p,q,r,s,t);if(b.ie7Compat||b.ie8&&b.ie6Compat)setTimeout(function(){o.element.getChild(0).$.style.cssText+='';},100);},hideChild:function(){var o=this._.activeChild;if(o){delete o.onHide;delete this._.activeChild;o.hide();}}}});})();j.add('menu',{beforeInit:function(l){var m=l.config.menu_groups.split(','),n={};for(var o=0;o<m.length;o++)n[m[o]]=o+1;l._.menuGroups=n;l._.menuItems={};},requires:['floatpanel']});e.extend(a.editor.prototype,{addMenuGroup:function(l,m){this._.menuGroups[l]=m||100;},addMenuItem:function(l,m){if(this._.menuGroups[m.group])this._.menuItems[l]=new a.menuItem(this,l,m);},addMenuItems:function(l){for(var m in l)this.addMenuItem(m,l[m]);
+},getMenuItem:function(l){return this._.menuItems[l];}});(function(){a.menu=e.createClass({$:function(m,n){var o=this;o.id='cke_'+e.getNextNumber();o.editor=m;o.items=[];o._.level=n||1;},_:{showSubMenu:function(m){var s=this;var n=s._.subMenu,o=s.items[m],p=o.getItems&&o.getItems();if(!p){s._.panel.hideChild();return;}if(n)n.removeAll();else{n=s._.subMenu=new a.menu(s.editor,s._.level+1);n.parent=s;n.onClick=e.bind(s.onClick,s);}for(var q in p)n.add(s.editor.getMenuItem(q));var r=s._.panel.getBlock(s.id).element.getDocument().getById(s.id+String(m));n.show(r,2);}},proto:{add:function(m){if(!m.order)m.order=this.items.length;this.items.push(m);},removeAll:function(){this.items=[];},show:function(m,n,o,p){var q=this.items,r=this.editor,s=this._.panel,t=this._.element;if(!s){s=this._.panel=new k.floatPanel(this.editor,a.document.getBody(),{css:[a.getUrl(r.skinPath+'editor.css')],level:this._.level-1,className:r.skinClass+' cke_contextmenu'},this._.level);s.onEscape=e.bind(function(){this.onEscape&&this.onEscape();this.hide();},this);s.onHide=e.bind(function(){this.onHide&&this.onHide();},this);var u=s.addBlock(this.id);u.autoSize=true;var v=u.keys;v[40]='next';v[9]='next';v[38]='prev';v[2000+9]='prev';v[32]='click';v[39]='click';t=this._.element=u.element;t.addClass(r.skinClass);var w=t.getDocument();w.getBody().setStyle('overflow','hidden');w.getElementsByTag('html').getItem(0).setStyle('overflow','hidden');this._.itemOverFn=e.addFunction(function(C){var D=this;clearTimeout(D._.showSubTimeout);D._.showSubTimeout=e.setTimeout(D._.showSubMenu,r.config.menu_subMenuDelay,D,[C]);},this);this._.itemOutFn=e.addFunction(function(C){clearTimeout(this._.showSubTimeout);},this);this._.itemClickFn=e.addFunction(function(C){var E=this;var D=E.items[C];if(D.state==0){E.hide();return;}if(D.getItems)E._.showSubMenu(C);else E.onClick&&E.onClick(D);},this);}l(q);var x=['<div class="cke_menu">'],y=q.length,z=y&&q[0].group;for(var A=0;A<y;A++){var B=q[A];if(z!=B.group){x.push('<div class="cke_menuseparator"></div>');z=B.group;}B.render(this,A,x);}x.push('</div>');t.setHtml(x.join(''));if(this.parent)this.parent._.panel.showAsChild(s,this.id,m,n,o,p);else s.showBlock(this.id,m,n,o,p);r.fire('menuShow',[s]);},hide:function(){this._.panel&&this._.panel.hide();}}});function l(m){m.sort(function(n,o){if(n.group<o.group)return-1;else if(n.group>o.group)return 1;return n.order<o.order?-1:n.order>o.order?1:0;});};})();a.menuItem=e.createClass({$:function(l,m,n){var o=this;e.extend(o,n,{order:0,className:'cke_button_'+m});
+o.group=l._.menuGroups[o.group];o.editor=l;o.name=m;},proto:{render:function(l,m,n){var t=this;var o=l.id+String(m),p=typeof t.state=='undefined'?2:t.state,q=' cke_'+(p==1?'on':p==0?'disabled':'off'),r=t.label;if(p==0)r=t.editor.lang.common.unavailable.replace('%1',r);if(t.className)q+=' '+t.className;n.push('<span class="cke_menuitem"><a id="',o,'" class="',q,'" href="javascript:void(\'',(t.label||'').replace("'",''),'\')" title="',t.label,'" tabindex="-1"_cke_focus=1 hidefocus="true"');if(b.opera||b.gecko&&b.mac)n.push(' onkeypress="return false;"');if(b.gecko)n.push(' onblur="this.style.cssText = this.style.cssText;"');var s=(t.iconOffset||0)*(-16);n.push(' onmouseover="CKEDITOR.tools.callFunction(',l._.itemOverFn,',',m,');" onmouseout="CKEDITOR.tools.callFunction(',l._.itemOutFn,',',m,');" onclick="CKEDITOR.tools.callFunction(',l._.itemClickFn,',',m,'); return false;"><span class="cke_icon_wrapper"><span class="cke_icon"'+(t.icon?' style="background-image:url('+a.getUrl(t.icon)+');background-position:0 '+s+'px;"':'')+'></span></span>'+'<span class="cke_label">');if(t.getItems)n.push('<span class="cke_menuarrow"></span>');n.push(r,'</span></a></span>');}}});i.menu_subMenuDelay=400;i.menu_groups='clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea';(function(){function l(){var v=this;try{var s=v.getSelection();if(!s)return;var t=s.getStartElement(),u=new d.elementPath(t);if(!u.compare(v._.selectionPreviousPath)){v._.selectionPreviousPath=u;v.fire('selectionChange',{selection:s,path:u,element:t});}}catch(w){}};var m,n;function o(){n=true;if(m)return;p.call(this);m=e.setTimeout(p,200,this);};function p(){m=null;if(n){e.setTimeout(l,0,this);n=false;}};var q={exec:function(s){switch(s.mode){case 'wysiwyg':s.document.$.execCommand('SelectAll',false,null);break;case 'source':}},canUndo:false};j.add('selection',{init:function(s){s.on('contentDom',function(){var t=s.document;if(c){var u,v;t.on('focusin',function(){if(u){try{u.select();}catch(y){}u=null;}});s.window.on('focus',function(){v=true;x();});s.document.on('beforedeactivate',function(){v=false;s.document.$.execCommand('Unselect');});t.on('mousedown',w);t.on('mouseup',function(){v=true;setTimeout(function(){x(true);},0);});t.on('keydown',w);t.on('keyup',function(){v=true;x();});t.on('selectionchange',x);function w(){v=false;};function x(y){if(v){var z=s.document,A=z&&z.$.selection;if(y&&A&&A.type=='None')if(!z.$.queryCommandEnabled('InsertImage')){e.setTimeout(x,50,this,true);
+return;}u=A&&A.createRange();o.call(s);}};}else{t.on('mouseup',o,s);t.on('keyup',o,s);}});s.addCommand('selectAll',q);s.ui.addButton('SelectAll',{label:s.lang.selectAll,command:'selectAll'});s.selectionChange=o;}});a.editor.prototype.getSelection=function(){return this.document&&this.document.getSelection();};a.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath;};g.prototype.getSelection=function(){var s=new d.selection(this);return!s||s.isInvalid?null:s;};a.SELECTION_NONE=1;a.SELECTION_TEXT=2;a.SELECTION_ELEMENT=3;d.selection=function(s){var v=this;var t=s.getCustomData('cke_locked_selection');if(t)return t;v.document=s;v.isLocked=false;v._={cache:{}};if(c){var u=v.getNative().createRange();if(!u||u.item&&u.item(0).ownerDocument!=v.document.$||u.parentElement&&u.parentElement().ownerDocument!=v.document.$)v.isInvalid=true;}return v;};var r={img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,th:1,thead:1,tfoot:1};d.selection.prototype={getNative:c?function(){return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.$.selection);}:function(){return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.getWindow().$.getSelection());},getType:c?function(){var s=this._.cache;if(s.type)return s.type;var t=1;try{var u=this.getNative(),v=u.type;if(v=='Text')t=2;if(v=='Control')t=3;if(u.createRange().parentElement)t=2;}catch(w){}return s.type=t;}:function(){var s=this._.cache;if(s.type)return s.type;var t=2,u=this.getNative();if(!u)t=1;else if(u.rangeCount==1){var v=u.getRangeAt(0),w=v.startContainer;if(w==v.endContainer&&w.nodeType==1&&v.endOffset-v.startOffset==1&&r[w.childNodes[v.startOffset].nodeName.toLowerCase()])t=3;}return s.type=t;},getRanges:c?(function(){var s=function(t,u){t=t.duplicate();t.collapse(u);var v=t.parentElement(),w=v.childNodes,x;for(var y=0;y<w.length;y++){var z=w[y];if(z.nodeType==1){x=t.duplicate();x.moveToElementText(z);x.collapse();var A=x.compareEndPoints('StartToStart',t);if(A>0)break;else if(A===0)return{container:v,offset:y};x=null;}}if(!x){x=t.duplicate();x.moveToElementText(v);x.collapse(false);}x.setEndPoint('StartToStart',t);var B=x.text.replace(/(\r\n|\r)/g,'\n').length;while(B>0)B-=w[--y].nodeValue.length;if(B===0)return{container:v,offset:y};else return{container:w[y],offset:-B};};return function(){var E=this;var t=E._.cache;if(t.ranges)return t.ranges;var u=E.getNative(),v=u&&u.createRange(),w=E.getType(),x;
+if(!u)return[];if(w==2){x=new d.range(E.document);var y=s(v,true);x.setStart(new d.node(y.container),y.offset);y=s(v);x.setEnd(new d.node(y.container),y.offset);return t.ranges=[x];}else if(w==3){var z=E._.cache.ranges=[];for(var A=0;A<v.length;A++){var B=v.item(A),C=B.parentNode,D=0;x=new d.range(E.document);for(;D<C.childNodes.length&&C.childNodes[D]!=B;D++){}x.setStart(new d.node(C),D);x.setEnd(new d.node(C),D+1);z.push(x);}return z;}return t.ranges=[];};})():function(){var s=this._.cache;if(s.ranges)return s.ranges;var t=[],u=this.getNative();if(!u)return[];for(var v=0;v<u.rangeCount;v++){var w=u.getRangeAt(v),x=new d.range(this.document);x.setStart(new d.node(w.startContainer),w.startOffset);x.setEnd(new d.node(w.endContainer),w.endOffset);t.push(x);}return s.ranges=t;},getStartElement:function(){var z=this;var s=z._.cache;if(s.startElement!==undefined)return s.startElement;var t,u=z.getNative();switch(z.getType()){case 3:return z.getSelectedElement();case 2:var v=z.getRanges()[0];if(v)if(!v.collapsed){v.optimize();for(;;){var w=v.startContainer,x=v.startOffset;if(x==(w.getChildCount?w.getChildCount():w.getLength()))v.setStartAfter(w);else break;}t=v.startContainer;if(t.type!=1)return t.getParent();t=t.getChild(v.startOffset);if(!t||t.type!=1)return v.startContainer;var y=t.getFirst();while(y&&y.type==1){t=y;y=y.getFirst();}return t;}if(c){v=u.createRange();v.collapse(true);t=v.parentElement();}else{t=u.anchorNode;if(t&&t.nodeType!=1)t=t.parentNode;}}return s.startElement=t?new h(t):null;},getSelectedElement:function(){var s=this._.cache;if(s.selectedElement!==undefined)return s.selectedElement;var t;if(this.getType()==3){var u=this.getNative();if(c)try{t=u.createRange().item(0);}catch(w){}else{var v=u.getRangeAt(0);t=v.startContainer.childNodes[v.startOffset];}}return s.selectedElement=t?new h(t):null;},lock:function(){var s=this;s.getRanges();s.getStartElement();s.getSelectedElement();s._.cache.nativeSel={};s.isLocked=true;s.document.setCustomData('cke_locked_selection',s);},unlock:function(s){var x=this;var t=x.document,u=t.getCustomData('cke_locked_selection');if(u){t.setCustomData('cke_locked_selection',null);if(s){var v=u.getSelectedElement(),w=!v&&u.getRanges();x.isLocked=false;x.reset();t.getBody().focus();if(v)x.selectElement(v);else x.selectRanges(w);}}if(!u||!s){x.isLocked=false;x.reset();}},reset:function(){this._.cache={};},selectElement:function(s){var v=this;if(v.isLocked){var t=new d.range(v.document);t.setStartBefore(s);t.setEndAfter(s);
+v._.cache.selectedElement=s;v._.cache.startElement=s;v._.cache.ranges=[t];v._.cache.type=3;return;}if(c){v.getNative().empty();try{t=v.document.$.body.createControlRange();t.addElement(s.$);t.select();}catch(w){t=v.document.$.body.createTextRange();t.moveToElementText(s.$);t.select();}v.reset();}else{t=v.document.$.createRange();t.selectNode(s.$);var u=v.getNative();u.removeAllRanges();u.addRange(t);v.reset();}},selectRanges:function(s){var y=this;if(y.isLocked){y._.cache.selectedElement=null;y._.cache.startElement=s[0].getTouchedStartNode();y._.cache.ranges=s;y._.cache.type=2;return;}if(c){if(s[0])s[0].select();y.reset();}else{var t=y.getNative();t.removeAllRanges();for(var u=0;u<s.length;u++){var v=s[u],w=y.document.$.createRange(),x=v.startContainer;if(v.collapsed&&b.gecko&&b.version<10900&&x.type==1&&!x.getChildCount())x.appendText('');w.setStart(x.$,v.startOffset);w.setEnd(v.endContainer.$,v.endOffset);t.addRange(w);}y.reset();}},createBookmarks:function(s){var t=[],u=this.getRanges(),v=u.length,w;for(var x=0;x<v;x++){t.push(w=u[x].createBookmark(s,true));s=w.serializable;var y=s?this.document.getById(w.startNode):w.startNode,z=s?this.document.getById(w.endNode):w.endNode;for(var A=x+1;A<v;A++){var B=u[A],C=B.startContainer,D=B.endContainer;C.equals(y.getParent())&&B.startOffset++;C.equals(z.getParent())&&B.startOffset++;D.equals(y.getParent())&&B.endOffset++;D.equals(z.getParent())&&B.endOffset++;}}return t;},createBookmarks2:function(s){var t=[],u=this.getRanges();for(var v=0;v<u.length;v++)t.push(u[v].createBookmark2(s));return t;},selectBookmarks:function(s){var t=[];for(var u=0;u<s.length;u++){var v=new d.range(this.document);v.moveToBookmark(s[u]);t.push(v);}this.selectRanges(t);return this;}};})();d.range.prototype.select=c?function(l){var u=this;var m=u.collapsed,n,o,p=u.createBookmark(),q=p.startNode,r;if(!m)r=p.endNode;var s=u.document.$.body.createTextRange();s.moveToElementText(q.$);s.moveStart('character',1);if(r){var t=u.document.$.body.createTextRange();t.moveToElementText(r.$);s.setEndPoint('EndToEnd',t);s.moveEnd('character',-1);}else{n=l||!q.hasPrevious()||q.getPrevious().is&&q.getPrevious().is('br');o=u.document.createElement('span');o.setHtml('&#65279;');o.insertBefore(q);if(n)u.document.createText('﻿').insertBefore(q);}u.setStartBefore(q);q.remove();if(m){if(n){s.moveStart('character',-1);s.select();u.document.$.selection.clear();}else s.select();o.remove();}else{u.setEndBefore(r);r.remove();s.select();}}:function(){var o=this;var l=o.startContainer;
+if(o.collapsed&&l.type==1&&!l.getChildCount())l.append(new d.text(''));var m=o.document.$.createRange();m.setStart(l.$,o.startOffset);try{m.setEnd(o.endContainer.$,o.endOffset);}catch(p){if(p.toString().indexOf('NS_ERROR_ILLEGAL_VALUE')>=0){o.collapse(true);m.setEnd(o.endContainer.$,o.endOffset);}else throw p;}var n=o.document.getSelection().getNative();n.removeAllRanges();n.addRange(m);};(function(){var l={elements:{$:function(m){var n=m.attributes._cke_realelement,o=n&&new a.htmlParser.fragment.fromHtml(decodeURIComponent(n)),p=o&&o.children[0];if(p){var q=m.attributes.style;if(q){var r=/(?:^|\s)width\s*:\s*(\d+)/.exec(q),s=r&&r[1];r=/(?:^|\s)height\s*:\s*(\d+)/.exec(q);var t=r&&r[1];if(s)p.attributes.width=s;if(t)p.attributes.height=t;}}return p;}}};j.add('fakeobjects',{requires:['htmlwriter'],afterInit:function(m){var n=m.dataProcessor,o=n&&n.htmlFilter;if(o)o.addRules(l);}});})();a.editor.prototype.createFakeElement=function(l,m,n,o){var p=this.lang.fakeobjects,q={'class':m,src:a.getUrl('images/spacer.gif'),_cke_realelement:encodeURIComponent(l.getOuterHtml()),alt:p[n]||p.unknown};if(n)q._cke_real_element_type=n;if(o)q._cke_resizable=o;return this.document.createElement('img',{attributes:q});};a.editor.prototype.createFakeParserElement=function(l,m,n,o){var p=new a.htmlParser.basicWriter();l.writeHtml(p);var q=p.getHtml(),r=this.lang.fakeobjects,s={'class':m,src:a.getUrl('images/spacer.gif'),_cke_realelement:encodeURIComponent(q),alt:r[n]||r.unknown};if(n)s._cke_real_element_type=n;if(o)s._cke_resizable=o;return new a.htmlParser.element('img',s);};a.editor.prototype.restoreRealElement=function(l){var m=decodeURIComponent(l.getAttribute('_cke_realelement'));return h.createFromHtml(m,this.document);};j.add('richcombo',{requires:['floatpanel','listblock','button'],beforeInit:function(l){l.ui.addHandler(3,k.richCombo.handler);}});a.UI_RICHCOMBO=3;k.richCombo=e.createClass({$:function(l){var n=this;e.extend(n,l,{title:l.label,modes:{wysiwyg:1}});var m=n.panel||{};delete n.panel;n.id=e.getNextNumber();n.document=m&&m.parent&&m.parent.getDocument()||a.document;m.className=(m.className||'')+(' cke_rcombopanel');n._={panelDefinition:m,items:{},state:2};},statics:{handler:{create:function(l){return new k.richCombo(l);}}},proto:{renderHtml:function(l){var m=[];this.render(l,m);return m.join('');},render:function(l,m){var n='cke_'+this.id,o=e.addFunction(function(r){var u=this;var s=u._;if(s.state==0)return;u.createPanel(l);if(s.on){s.panel.hide();return;}if(!s.committed){s.list.commit();
+s.committed=1;}var t=u.getValue();if(t)s.list.mark(t);else s.list.unmarkAll();s.panel.showBlock(u.id,new h(r),4);},this),p={id:n,combo:this,focus:function(){var r=a.document.getById(n).getChild(1);r.focus();},execute:o};l.on('mode',function(){this.setState(this.modes[l.mode]?2:0);},this);var q=e.addFunction(function(r,s){r=new d.event(r);var t=r.getKeystroke();switch(t){case 13:case 32:case 40:e.callFunction(o,s);break;default:p.onkey(p,t);}r.preventDefault();});m.push('<span class="cke_rcombo">','<span id=',n);if(this.className)m.push(' class="',this.className,' cke_off"');m.push('><span class=cke_label>',this.label,'</span><a hidefocus=true title="',this.title,'" tabindex="-1" href="javascript:void(\'',this.label,"')\"");if(b.opera||b.gecko&&b.mac)m.push(' onkeypress="return false;"');if(b.gecko)m.push(' onblur="this.style.cssText = this.style.cssText;"');m.push(' onkeydown="CKEDITOR.tools.callFunction( ',q,', event, this );" onclick="CKEDITOR.tools.callFunction(',o,', this); return false;"><span><span class="cke_accessibility">'+(this.voiceLabel?this.voiceLabel+' ':'')+'</span>'+'<span id="'+n+'_text" class="cke_text cke_inline_label">'+this.label+'</span>'+'</span>'+'<span class=cke_openbutton></span>'+'</a>'+'</span>'+'</span>');if(this.onRender)this.onRender();return p;},createPanel:function(l){if(this._.panel)return;var m=this._.panelDefinition,n=m.parent||a.document.getBody(),o=new k.floatPanel(l,n,m),p=o.addListBlock(this.id,this.multiSelect),q=this;o.onShow=function(){if(q.className)this.element.getFirst().addClass(q.className+'_panel');q.setState(1);p.focus(!q.multiSelect&&q.getValue());q._.on=1;if(q.onOpen)q.onOpen();};o.onHide=function(){if(q.className)this.element.getFirst().removeClass(q.className+'_panel');q.setState(2);q._.on=0;if(q.onClose)q.onClose();};o.onEscape=function(){o.hide();q.document.getById('cke_'+q.id).getFirst().getNext().focus();};p.onClick=function(r,s){q.document.getWindow().focus();if(q.onClick)q.onClick.call(q,r,s);if(s)q.setValue(r,q._.items[r]);else q.setValue('');o.hide();};this._.panel=o;this._.list=p;o.getBlock(this.id).onHide=function(){q._.on=0;q.setState(2);};if(this.init)this.init();},setValue:function(l,m){var o=this;o._.value=l;var n=o.document.getById('cke_'+o.id+'_text');if(!l){m=o.label;n.addClass('cke_inline_label');}else n.removeClass('cke_inline_label');n.setHtml(typeof m!='undefined'?m:l);},getValue:function(){return this._.value||'';},unmarkAll:function(){this._.list.unmarkAll();},mark:function(l){this._.list.mark(l);
+},hideItem:function(l){this._.list.hideItem(l);},hideGroup:function(l){this._.list.hideGroup(l);},showAll:function(){this._.list.showAll();},add:function(l,m,n){this._.items[l]=n||l;this._.list.add(l,m,n);},startGroup:function(l){this._.list.startGroup(l);},commit:function(){this._.list.commit();},setState:function(l){var m=this;if(m._.state==l)return;m.document.getById('cke_'+m.id).setState(l);m._.state=l;}}});k.prototype.addRichCombo=function(l,m){this.add(l,3,m);};j.add('htmlwriter');a.htmlWriter=e.createClass({base:a.htmlParser.basicWriter,$:function(){var n=this;n.base();n.indentationChars='\t';n.selfClosingEnd=' />';n.lineBreakChars='\n';n.forceSimpleAmpersand=false;n.sortAttributes=true;n._.indent=false;n._.indentation='';n._.rules={};var l=f;for(var m in e.extend({},l.$block,l.$listItem,l.$tableContent))n.setRules(m,{indent:true,breakBeforeOpen:true,breakAfterOpen:true,breakBeforeClose:!l[m]['#'],breakAfterClose:true});n.setRules('br',{breakAfterOpen:true});n.setRules('pre',{indent:false});},proto:{openTag:function(l,m){var o=this;var n=o._.rules[l];if(o._.indent)o.indentation();else if(n&&n.breakBeforeOpen){o.lineBreak();o.indentation();}o._.output.push('<',l);},openTagClose:function(l,m){var o=this;var n=o._.rules[l];if(m)o._.output.push(o.selfClosingEnd);else{o._.output.push('>');if(n&&n.indent)o._.indentation+=o.indentationChars;}if(n&&n.breakAfterOpen)o.lineBreak();},attribute:function(l,m){if(this.forceSimpleAmpersand)m=m.replace(/&amp;/,'&');this._.output.push(' ',l,'="',m,'"');},closeTag:function(l){var n=this;var m=n._.rules[l];if(m&&m.indent)n._.indentation=n._.indentation.substr(n.indentationChars.length);if(n._.indent)n.indentation();else if(m&&m.breakBeforeClose){n.lineBreak();n.indentation();}n._.output.push('</',l,'>');if(m&&m.breakAfterClose)n.lineBreak();},text:function(l){if(this._.indent){this.indentation();l=e.ltrim(l);}this._.output.push(l);},comment:function(l){if(this._.indent)this.indentation();this._.output.push('<!--',l,'-->');},lineBreak:function(){var l=this;if(l._.output.length>0)l._.output.push(l.lineBreakChars);l._.indent=true;},indentation:function(){this._.output.push(this._.indentation);this._.indent=false;},setRules:function(l,m){this._.rules[l]=m;}}});j.add('menubutton',{requires:['button','contextmenu'],beforeInit:function(l){l.ui.addHandler(5,k.menuButton.handler);}});a.UI_MENUBUTTON=5;(function(){var l=function(m){var n=this._;if(n.state===0)return;n.previousState=n.state;var o=n.menu;if(!o){o=n.menu=new j.contextMenu(m);
+o.onHide=e.bind(function(){this.setState(n.previousState);},this);if(this.onMenu)o.addListener(this.onMenu);}if(n.on){o.hide();return;}this.setState(1);o.show(a.document.getById(this._.id),4);};k.menuButton=e.createClass({base:k.button,$:function(m){var n=m.panel;delete m.panel;this.base(m);this.hasArrow=true;this.click=l;},statics:{handler:{create:function(m){return new k.menuButton(m);}}}});})();j.add('dialog',{requires:['dialogui']});a.DIALOG_RESIZE_NONE=0;a.DIALOG_RESIZE_WIDTH=1;a.DIALOG_RESIZE_HEIGHT=2;a.DIALOG_RESIZE_BOTH=3;(function(){function l(L){return!!this._.tabs[L][0].$.offsetHeight;};function m(){var P=this;var L=P._.currentTabId,M=P._.tabIdList.length,N=e.indexOf(P._.tabIdList,L)+M;for(var O=N-1;O>N-M;O--)if(l.call(P,P._.tabIdList[O%M]))return P._.tabIdList[O%M];return null;};function n(){var P=this;var L=P._.currentTabId,M=P._.tabIdList.length,N=e.indexOf(P._.tabIdList,L);for(var O=N+1;O<N+M;O++)if(l.call(P,P._.tabIdList[O%M]))return P._.tabIdList[O%M];return null;};var o={};a.dialog=function(L,M){var N=a.dialog._.dialogDefinitions[M];if(!N){console.log('Error: The dialog "'+M+'" is not defined.');return;}N=e.extend(N(L),q);N=e.clone(N);N=new u(this,N);this.definition=N=a.fire('dialogDefinition',{name:M,definition:N},L).definition;var O=a.document,P=L.theme.buildDialog(L);this._={editor:L,element:P.element,name:M,contentSize:{width:0,height:0},size:{width:0,height:0},updateSize:false,contents:{},buttons:{},accessKeyMap:{},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:false,focusList:[],currentFocusIndex:0,hasFocus:false};this.parts=P.parts;this.parts.dialog.setStyles({position:b.ie6Compat?'absolute':'fixed',top:0,left:0,visibility:'hidden'});a.event.call(this);if(N.onLoad)this.on('load',N.onLoad);if(N.onShow)this.on('show',N.onShow);if(N.onHide)this.on('hide',N.onHide);if(N.onOk)this.on('ok',function(Z){if(N.onOk.call(this,Z)===false)Z.data.hide=false;});if(N.onCancel)this.on('cancel',function(Z){if(N.onCancel.call(this,Z)===false)Z.data.hide=false;});var Q=this,R=function(Z){var aa=Q._.contents,ab=false;for(var ac in aa)for(var ad in aa[ac]){ab=Z.call(this,aa[ac][ad]);if(ab)return;}};this.on('ok',function(Z){R(function(aa){if(aa.validate){var ab=aa.validate(this);if(typeof ab=='string'){alert(ab);ab=false;}if(ab===false){if(aa.select)aa.select();else aa.focus();Z.data.hide=false;Z.stop();return true;}}});},this,null,0);this.on('cancel',function(Z){R(function(aa){if(aa.isChanged()){if(!confirm(L.lang.common.confirmCancel))Z.data.hide=false;
+return true;}});},this,null,0);this.parts.close.on('click',function(Z){if(this.fire('cancel',{hide:true}).hide!==false)this.hide();},this);function S(Z){var aa=Q._.focusList,ab=Z?1:-1;if(aa.length<1)return;var ac=(Q._.currentFocusIndex+ab+aa.length)%(aa.length);while(!aa[ac].isFocusable()){ac=(ac+ab+aa.length)%(aa.length);if(ac==Q._.currentFocusIndex)break;}aa[ac].focus();if(aa[ac].type=='text')aa[ac].select();};function T(Z){if(Q!=a.dialog._.currentTop)return;var aa=Z.data.getKeystroke(),ab=false;if(aa==9||aa==2000+9){var ac=aa==2000+9;if(Q._.tabBarMode){var ad=ac?m.call(Q):n.call(Q);Q.selectPage(ad);Q._.tabs[ad][0].focus();}else S(!ac);ab=true;}else if(aa==4000+121&&!Q._.tabBarMode){Q._.tabBarMode=true;Q._.tabs[Q._.currentTabId][0].focus();ab=true;}else if((aa==37||aa==39)&&(Q._.tabBarMode)){ad=aa==37?m.call(Q):n.call(Q);Q.selectPage(ad);Q._.tabs[ad][0].focus();ab=true;}if(ab){Z.stop();Z.data.preventDefault();}};this.on('show',function(){a.document.on('keydown',T,this,null,0);if(b.ie6Compat){var Z=z.getChild(0).getFrameDocument();Z.on('keydown',T,this,null,0);}});this.on('hide',function(){a.document.removeListener('keydown',T);});this.on('iframeAdded',function(Z){var aa=new g(Z.data.iframe.$.contentWindow.document);aa.on('keydown',T,this,null,0);});this.on('show',function(){var ac=this;if(!ac._.hasFocus){ac._.currentFocusIndex=-1;S(true);if(ac._.editor.mode=='wysiwyg'&&c){var Z=L.document.$.selection,aa=Z.createRange();if(aa)if(aa.parentElement&&aa.parentElement().ownerDocument==L.document.$||aa.item&&aa.item(0).ownerDocument==L.document.$){var ab=document.body.createTextRange();ab.moveToElementText(ac.getElement().getFirst().$);ab.collapse(true);ab.select();}}}},this,null,4294967295);if(b.ie6Compat)this.on('load',function(Z){var aa=this.getElement(),ab=aa.getFirst();ab.remove();ab.appendTo(aa);},this);w(this);x(this);new d.text(N.title,a.document).appendTo(this.parts.title);for(var U=0;U<N.contents.length;U++)this.addPage(N.contents[U]);var V=/cke_dialog_tab(\s|$|_)/,W=/cke_dialog_tab(\s|$)/;this.parts.tabs.on('click',function(Z){var ae=this;var aa=Z.data.getTarget(),ab=aa,ac,ad;if(!(V.test(aa.$.className)||aa.getName()=='a'))return;ac=aa.$.id.substr(0,aa.$.id.lastIndexOf('_'));ae.selectPage(ac);if(ae._.tabBarMode){ae._.tabBarMode=false;ae._.currentFocusIndex=-1;S(true);}Z.data.preventDefault();},this);var X=[],Y=a.dialog._.uiElementBuilders.hbox.build(this,{type:'hbox',className:'cke_dialog_footer_buttons',widths:[],children:N.buttons},X).getChild();this.parts.footer.setHtml(X.join(''));
+for(U=0;U<Y.length;U++)this._.buttons[Y[U].id]=Y[U];a.skins.load(L,'dialog');};function p(L,M,N){this.element=M;this.focusIndex=N;this.isFocusable=function(){return true;};this.focus=function(){L._.currentFocusIndex=this.focusIndex;this.element.focus();};M.on('keydown',function(O){if(O.data.getKeystroke() in {32:1,13:1})this.fire('click');});M.on('focus',function(){this.fire('mouseover');});M.on('blur',function(){this.fire('mouseout');});};a.dialog.prototype={resize:(function(){return function(L,M){var N=this;if(N._.contentSize&&N._.contentSize.width==L&&N._.contentSize.height==M)return;a.dialog.fire('resize',{dialog:N,skin:N._.editor.skinName,width:L,height:M},N._.editor);N._.contentSize={width:L,height:M};N._.updateSize=true;};})(),getSize:function(){var N=this;if(!N._.updateSize)return N._.size;var L=N._.element.getFirst(),M=N._.size={width:L.$.offsetWidth||0,height:L.$.offsetHeight||0};N._.updateSize=!M.width||!M.height;return M;},move:(function(){var L;return function(M,N){var Q=this;var O=Q._.element.getFirst();if(L===undefined)L=O.getComputedStyle('position')=='fixed';if(L&&Q._.position&&Q._.position.x==M&&Q._.position.y==N)return;Q._.position={x:M,y:N};if(!L){var P=a.document.getWindow().getScrollPosition();M+=P.x;N+=P.y;}O.setStyles({left:(M>0?M:0)+('px'),top:(N>0?N:0)+('px')});};})(),getPosition:function(){return e.extend({},this._.position);},show:function(){if(this._.editor.mode=='wysiwyg'&&c)this._.editor.getSelection().lock();var L=this._.element,M=this.definition;if(!(L.getParent()&&L.getParent().equals(a.document.getBody())))L.appendTo(a.document.getBody());else return;if(b.gecko&&b.version<10900){var N=this.parts.dialog;N.setStyle('position','absolute');setTimeout(function(){N.setStyle('position','fixed');},0);}this.resize(M.minWidth,M.minHeight);this.selectPage(this.definition.contents[0].id);this.reset();if(a.dialog._.currentZIndex===null)a.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex;this._.element.getFirst().setStyle('z-index',a.dialog._.currentZIndex+=10);if(a.dialog._.currentTop===null){a.dialog._.currentTop=this;this._.parentDialog=null;A(this._.editor);a.document.on('keydown',D);a.document.on('keyup',E);for(var O in {keyup:1,keydown:1,keypress:1})a.document.on(O,K);}else{this._.parentDialog=a.dialog._.currentTop;var P=this._.parentDialog.getElement().getFirst();P.$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2);a.dialog._.currentTop=this;}F(this,this,'\x1b',null,function(){this.getButton('cancel')&&this.getButton('cancel').click();
+});this._.hasFocus=false;e.setTimeout(function(){var Q=a.document.getWindow().getViewPaneSize(),R=this.getSize();this.move((Q.width-M.minWidth)/(2),(Q.height-R.height)/(2));this.parts.dialog.setStyle('visibility','');this.fireOnce('load',{});this.fire('show',{});this.foreach(function(S){S.setInitValue&&S.setInitValue();});},100,this);},foreach:function(L){var O=this;for(var M in O._.contents)for(var N in O._.contents[M])L(O._.contents[M][N]);return O;},reset:(function(){var L=function(M){if(M.reset)M.reset();};return function(){this.foreach(L);return this;};})(),setupContent:function(){var L=arguments;this.foreach(function(M){if(M.setup)M.setup.apply(M,L);});},commitContent:function(){var L=arguments;this.foreach(function(M){if(M.commit)M.commit.apply(M,L);});},hide:function(){this.fire('hide',{});var L=this._.element;if(!L.getParent())return;L.remove();this.parts.dialog.setStyle('visibility','hidden');G(this);if(!this._.parentDialog)B();else{var M=this._.parentDialog.getElement().getFirst();M.setStyle('z-index',parseInt(M.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2));}a.dialog._.currentTop=this._.parentDialog;if(!this._.parentDialog){a.dialog._.currentZIndex=null;a.document.removeListener('keydown',D);a.document.removeListener('keyup',E);a.document.removeListener('keypress',E);for(var N in {keyup:1,keydown:1,keypress:1})a.document.removeListener(N,K);var O=this._.editor;O.focus();if(O.mode=='wysiwyg'&&c)O.getSelection().unlock(true);}else a.dialog._.currentZIndex-=10;this.foreach(function(P){P.resetInitValue&&P.resetInitValue();});},addPage:function(L){var V=this;var M=[],N=L.label?' title="'+e.htmlEncode(L.label)+'"':'',O=L.elements,P=a.dialog._.uiElementBuilders.vbox.build(V,{type:'vbox',className:'cke_dialog_page_contents',children:L.elements,expand:!!L.expand,padding:L.padding,style:L.style||'width: 100%; height: 100%;'},M),Q=h.createFromHtml(M.join('')),R=h.createFromHtml(['<a class="cke_dialog_tab"',V._.pageCount>0?' cke_last':'cke_first',N,!!L.hidden?' style="display:none"':'',' id="',L.id+'_',e.getNextNumber(),'" href="javascript:void(0)"',' hidefocus="true">',L.label,'</a>'].join(''));if(V._.pageCount===0)V.parts.dialog.addClass('cke_single_page');else V.parts.dialog.removeClass('cke_single_page');V._.tabs[L.id]=[R,Q];V._.tabIdList.push(L.id);V._.pageCount++;V._.lastTab=R;var S=V._.contents[L.id]={},T,U=P.getChild();while(T=U.shift()){S[T.id]=T;if(typeof T.getChild=='function')U.push.apply(U,T.getChild());}Q.setAttribute('name',L.id);
+Q.appendTo(V.parts.contents);R.unselectable();V.parts.tabs.append(R);if(L.accessKey){F(V,V,'CTRL+'+L.accessKey,I,H);V._.accessKeyMap['CTRL+'+L.accessKey]=L.id;}},selectPage:function(L){var Q=this;for(var M in Q._.tabs){var N=Q._.tabs[M][0],O=Q._.tabs[M][1];if(M!=L){N.removeClass('cke_dialog_tab_selected');O.hide();}}var P=Q._.tabs[L];P[0].addClass('cke_dialog_tab_selected');P[1].show();Q._.currentTabId=L;Q._.currentTabIndex=e.indexOf(Q._.tabIdList,L);},hidePage:function(L){var M=this._.tabs[L]&&this._.tabs[L][0];if(!M)return;M.hide();},showPage:function(L){var M=this._.tabs[L]&&this._.tabs[L][0];if(!M)return;M.show();},getElement:function(){return this._.element;},getName:function(){return this._.name;},getContentElement:function(L,M){return this._.contents[L][M];},getValueOf:function(L,M){return this.getContentElement(L,M).getValue();},setValueOf:function(L,M,N){return this.getContentElement(L,M).setValue(N);},getButton:function(L){return this._.buttons[L];},click:function(L){return this._.buttons[L].click();},disableButton:function(L){return this._.buttons[L].disable();},enableButton:function(L){return this._.buttons[L].enable();},getPageCount:function(){return this._.pageCount;},getParentEditor:function(){return this._.editor;},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement();},addFocusable:function(L,M){var O=this;if(typeof M=='undefined'){M=O._.focusList.length;O._.focusList.push(new p(O,L,M));}else{O._.focusList.splice(M,0,new p(O,L,M));for(var N=M+1;N<O._.focusList.length;N++)O._.focusList[N].focusIndex++;}}};e.extend(a.dialog,{add:function(L,M){if(!this._.dialogDefinitions[L]||typeof M=='function')this._.dialogDefinitions[L]=M;},exists:function(L){return!!this._.dialogDefinitions[L];},getCurrent:function(){return a.dialog._.currentTop;},okButton:(function(){var L=function(M,N){N=N||{};return e.extend({id:'ok',type:'button',label:M.lang.common.ok,'class':'cke_dialog_ui_button_ok',onClick:function(O){var P=O.data.dialog;if(P.fire('ok',{hide:true}).hide!==false)P.hide();}},N,true);};L.type='button';L.override=function(M){return e.extend(function(N){return L(N,M);},{type:'button'},true);};return L;})(),cancelButton:(function(){var L=function(M,N){N=N||{};return e.extend({id:'cancel',type:'button',label:M.lang.common.cancel,'class':'cke_dialog_ui_button_cancel',onClick:function(O){var P=O.data.dialog;if(P.fire('cancel',{hide:true}).hide!==false)P.hide();}},N,true);};L.type='button';L.override=function(M){return e.extend(function(N){return L(N,M);
+},{type:'button'},true);};return L;})(),addUIElement:function(L,M){this._.uiElementBuilders[L]=M;}});a.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};a.event.implementOn(a.dialog);a.event.implementOn(a.dialog.prototype,true);var q={resizable:0,minWidth:600,minHeight:400,buttons:[a.dialog.okButton,a.dialog.cancelButton]},r=function(L,M,N){for(var O=0,P;P=L[O];O++){if(P.id==M)return P;if(N&&P[N]){var Q=r(P[N],M,N);if(Q)return Q;}}return null;},s=function(L,M,N,O,P){if(N){for(var Q=0,R;R=L[Q];Q++){if(R.id==N){L.splice(Q,0,M);return M;}if(O&&R[O]){var S=s(R[O],M,N,O,true);if(S)return S;}}if(P)return null;}L.push(M);return M;},t=function(L,M,N){for(var O=0,P;P=L[O];O++){if(P.id==M)return L.splice(O,1);if(N&&P[N]){var Q=t(P[N],M,N);if(Q)return Q;}}return null;},u=function(L,M){this.dialog=L;var N=M.contents;for(var O=0,P;P=N[O];O++)N[O]=new v(L,P);e.extend(this,M);};u.prototype={getContents:function(L){return r(this.contents,L);},getButton:function(L){return r(this.buttons,L);},addContents:function(L,M){return s(this.contents,L,M);},addButton:function(L,M){return s(this.buttons,L,M);},removeContents:function(L){t(this.contents,L);},removeButton:function(L){t(this.buttons,L);}};function v(L,M){this._={dialog:L};e.extend(this,M);};v.prototype={get:function(L){return r(this.elements,L,'children');},add:function(L,M){return s(this.elements,L,M,'children');},remove:function(L){t(this.elements,L,'children');}};function w(L){var M=null,N=null,O=L.getElement().getFirst(),P=L.getParentEditor(),Q=P.config.dialog_magnetDistance,R=o[P.skinName].margins||[0,0,0,0];if(typeof Q=='undefined')Q=20;function S(U){var V=L.getSize(),W=a.document.getWindow().getViewPaneSize(),X=U.data.$.screenX,Y=U.data.$.screenY,Z=X-M.x,aa=Y-M.y,ab,ac;M={x:X,y:Y};N.x+=Z;N.y+=aa;if(N.x+R[3]<Q)ab=-R[3];else if(N.x-R[1]>W.width-V.width-Q)ab=W.width-V.width+R[1];else ab=N.x;if(N.y+R[0]<Q)ac=-R[0];else if(N.y-R[2]>W.height-V.height-Q)ac=W.height-V.height+R[2];else ac=N.y;L.move(ab,ac);U.data.preventDefault();};function T(U){a.document.removeListener('mousemove',S);a.document.removeListener('mouseup',T);if(b.ie6Compat){var V=z.getChild(0).getFrameDocument();V.removeListener('mousemove',S);V.removeListener('mouseup',T);}};L.parts.title.on('mousedown',function(U){L._.updateSize=true;M={x:U.data.$.screenX,y:U.data.$.screenY};a.document.on('mousemove',S);a.document.on('mouseup',T);N=L.getPosition();if(b.ie6Compat){var V=z.getChild(0).getFrameDocument();V.on('mousemove',S);
+V.on('mouseup',T);}U.data.preventDefault();},L);};function x(L){var M=L.definition,N=M.minWidth||0,O=M.minHeight||0,P=M.resizable,Q=o[L.getParentEditor().skinName].margins||[0,0,0,0];function R(ac,ad){ac.y+=ad;};function S(ac,ad){ac.x2+=ad;};function T(ac,ad){ac.y2+=ad;};function U(ac,ad){ac.x+=ad;};var V=null,W=null,X=L._.editor.config.magnetDistance,Y=['tl','t','tr','l','r','bl','b','br'];function Z(ac){var ad=ac.listenerData.part,ae=L.getSize();W=L.getPosition();e.extend(W,{x2:W.x+ae.width,y2:W.y+ae.height});V={x:ac.data.$.screenX,y:ac.data.$.screenY};a.document.on('mousemove',aa,L,{part:ad});a.document.on('mouseup',ab,L,{part:ad});if(b.ie6Compat){var af=z.getChild(0).getFrameDocument();af.on('mousemove',aa,L,{part:ad});af.on('mouseup',ab,L,{part:ad});}ac.data.preventDefault();};function aa(ac){var ad=ac.data.$.screenX,ae=ac.data.$.screenY,af=ad-V.x,ag=ae-V.y,ah=a.document.getWindow().getViewPaneSize(),ai=ac.listenerData.part;if(ai.search('t')!=-1)R(W,ag);if(ai.search('l')!=-1)U(W,af);if(ai.search('b')!=-1)T(W,ag);if(ai.search('r')!=-1)S(W,af);V={x:ad,y:ae};var aj,ak,al,am;if(W.x+Q[3]<X)aj=-Q[3];else if(ai.search('l')!=-1&&W.x2-W.x<N+X)aj=W.x2-N;else aj=W.x;if(W.y+Q[0]<X)ak=-Q[0];else if(ai.search('t')!=-1&&W.y2-W.y<O+X)ak=W.y2-O;else ak=W.y;if(W.x2-Q[1]>ah.width-X)al=ah.width+Q[1];else if(ai.search('r')!=-1&&W.x2-W.x<N+X)al=W.x+N;else al=W.x2;if(W.y2-Q[2]>ah.height-X)am=ah.height+Q[2];else if(ai.search('b')!=-1&&W.y2-W.y<O+X)am=W.y+O;else am=W.y2;L.move(aj,ak);L.resize(al-aj,am-ak);ac.data.preventDefault();};function ab(ac){a.document.removeListener('mouseup',ab);a.document.removeListener('mousemove',aa);if(b.ie6Compat){var ad=z.getChild(0).getFrameDocument();ad.removeListener('mouseup',ab);ad.removeListener('mousemove',aa);}};};var y,z,A=function(L){var M=a.document.getWindow();if(!z){var N=['<div style="position: ',b.ie6Compat?'absolute':'fixed','; z-index: ',L.config.baseFloatZIndex,'; top: 0px; left: 0px; ','background-color: ',L.config.dialog_backgroundCoverColor||'white','" id="cke_dialog_background_cover">'];if(b.ie6Compat){var O=b.isCustomDomain();N.push('<iframe hidefocus="true" frameborder="0" id="cke_dialog_background_iframe" src="javascript:');N.push(O?"void((function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})())':"''");N.push('" style="position:absolute;left:0;top:0;width:100%;height: 100%;progid:DXImageTransform.Microsoft.Alpha(opacity=0)"></iframe>');}N.push('</div>');z=h.createFromHtml(N.join(''));}var P=z,Q=function(){var U=M.getViewPaneSize();
+P.setStyles({width:U.width+'px',height:U.height+'px'});},R=function(){var U=M.getScrollPosition(),V=a.dialog._.currentTop;P.setStyles({left:U.x+'px',top:U.y+'px'});do{var W=V.getPosition();V.move(W.x,W.y);}while(V=V._.parentDialog)};y=Q;M.on('resize',Q);Q();if(b.ie6Compat){var S=function(){R();arguments.callee.prevScrollHandler.apply(this,arguments);};M.$.setTimeout(function(){S.prevScrollHandler=window.onscroll||(function(){});window.onscroll=S;},0);R();}var T=L.config.dialog_backgroundCoverOpacity;P.setOpacity(typeof T!='undefined'?T:0.5);P.appendTo(a.document.getBody());},B=function(){if(!z)return;var L=a.document.getWindow();z.remove();L.removeListener('resize',y);if(b.ie6Compat)L.$.setTimeout(function(){var M=window.onscroll&&window.onscroll.prevScrollHandler;window.onscroll=M||null;},0);y=null;},C={},D=function(L){var M=L.data.$.ctrlKey||L.data.$.metaKey,N=L.data.$.altKey,O=L.data.$.shiftKey,P=String.fromCharCode(L.data.$.keyCode),Q=C[(M?'CTRL+':'')+(N?'ALT+':'')+(O?'SHIFT+':'')+P];if(!Q||!Q.length)return;Q=Q[Q.length-1];Q.keydown&&Q.keydown.call(Q.uiElement,Q.dialog,Q.key);L.data.preventDefault();},E=function(L){var M=L.data.$.ctrlKey||L.data.$.metaKey,N=L.data.$.altKey,O=L.data.$.shiftKey,P=String.fromCharCode(L.data.$.keyCode),Q=C[(M?'CTRL+':'')+(N?'ALT+':'')+(O?'SHIFT+':'')+P];if(!Q||!Q.length)return;Q=Q[Q.length-1];Q.keyup&&Q.keyup.call(Q.uiElement,Q.dialog,Q.key);L.data.preventDefault();},F=function(L,M,N,O,P){var Q=C[N]||(C[N]=[]);Q.push({uiElement:L,dialog:M,key:N,keyup:P||L.accessKeyUp,keydown:O||L.accessKeyDown});},G=function(L){for(var M in C){var N=C[M];for(var O=N.length-1;O>=0;O--)if(N[O].dialog==L||N[O].uiElement==L)N.splice(O,1);if(N.length===0)delete C[M];}},H=function(L,M){if(L._.accessKeyMap[M])L.selectPage(L._.accessKeyMap[M]);},I=function(L,M){},J={27:1,13:1},K=function(L){if(L.data.getKeystroke() in J)L.data.stopPropagation();};(function(){k.dialog={uiElement:function(L,M,N,O,P,Q,R){if(arguments.length<4)return;var S=(O.call?O(M):O)||('div'),T=['<',S,' '],U=(P&&P.call?P(M):P)||({}),V=(Q&&Q.call?Q(M):Q)||({}),W=(R&&R.call?R(L,M):R)||(''),X=this.domId=V.id||e.getNextNumber()+'_uiElement',Y=this.id=M.id,Z;V.id=X;var aa={};if(M.type)aa['cke_dialog_ui_'+M.type]=1;if(M.className)aa[M.className]=1;var ab=V['class']&&V['class'].split?V['class'].split(' '):[];for(Z=0;Z<ab.length;Z++)if(ab[Z])aa[ab[Z]]=1;var ac=[];for(Z in aa)ac.push(Z);V['class']=ac.join(' ');if(M.title)V.title=M.title;var ad=(M.style||'').split(';');for(Z in U)ad.push(Z+':'+U[Z]);
+if(M.hidden)ad.push('display:none');for(Z=ad.length-1;Z>=0;Z--)if(ad[Z]==='')ad.splice(Z,1);if(ad.length>0)V.style=(V.style?V.style+'; ':'')+(ad.join('; '));for(Z in V)T.push(Z+'="'+e.htmlEncode(V[Z])+'" ');T.push('>',W,'</',S,'>');N.push(T.join(''));(this._||(this._={})).dialog=L;if(typeof M.isChanged=='boolean')this.isChanged=function(){return M.isChanged;};if(typeof M.isChanged=='function')this.isChanged=M.isChanged;a.event.implementOn(this);this.registerEvents(M);if(this.accessKeyUp&&this.accessKeyDown&&M.accessKey)F(this,L,'CTRL+'+M.accessKey);var ae=this;L.on('load',function(){if(ae.getInputElement())ae.getInputElement().on('focus',function(){L._.tabBarMode=false;L._.hasFocus=true;ae.fire('focus');},ae);});if(this.keyboardFocusable){this.focusIndex=L._.focusList.push(this)-1;this.on('focus',function(){L._.currentFocusIndex=ae.focusIndex;});}e.extend(this,M);},hbox:function(L,M,N,O,P){if(arguments.length<4)return;this._||(this._={});var Q=this._.children=M,R=P&&P.widths||null,S=P&&P.height||null,T={},U,V=function(){var W=['<tbody><tr class="cke_dialog_ui_hbox">'];for(U=0;U<N.length;U++){var X='cke_dialog_ui_hbox_child',Y=[];if(U===0)X='cke_dialog_ui_hbox_first';if(U==N.length-1)X='cke_dialog_ui_hbox_last';W.push('<td class="',X,'" ');if(R){if(R[U])Y.push('width:'+e.cssLength(R[U]));}else Y.push('width:'+Math.floor(100/N.length)+'%');if(S)Y.push('height:'+e.cssLength(S));if(P&&P.padding!=undefined)Y.push('padding:'+e.cssLength(P.padding));if(Y.length>0)W.push('style="'+Y.join('; ')+'" ');W.push('>',N[U],'</td>');}W.push('</tr></tbody>');return W.join('');};k.dialog.uiElement.call(this,L,P||{type:'hbox'},O,'table',T,P&&P.align&&{align:P.align}||null,V);},vbox:function(L,M,N,O,P){if(arguments.length<3)return;this._||(this._={});var Q=this._.children=M,R=P&&P.width||null,S=P&&P.heights||null,T=function(){var U=['<table cellspacing="0" border="0" '];U.push('style="');if(P&&P.expand)U.push('height:100%;');U.push('width:'+e.cssLength(R||'100%'),';');U.push('"');U.push('align="',e.htmlEncode(P&&P.align||(L.getParentEditor().lang.dir=='ltr'?'left':'right')),'" ');U.push('><tbody>');for(var V=0;V<N.length;V++){var W=[];U.push('<tr><td ');if(R)W.push('width:'+e.cssLength(R||'100%'));if(S)W.push('height:'+e.cssLength(S[V]));else if(P&&P.expand)W.push('height:'+Math.floor(100/N.length)+'%');if(P&&P.padding!=undefined)W.push('padding:'+e.cssLength(P.padding));if(W.length>0)U.push('style="',W.join('; '),'" ');U.push(' class="cke_dialog_ui_vbox_child">',N[V],'</td></tr>');
+}U.push('</tbody></table>');return U.join('');};k.dialog.uiElement.call(this,L,P||{type:'vbox'},O,'div',null,null,T);}};})();k.dialog.uiElement.prototype={getElement:function(){return a.document.getById(this.domId);},getInputElement:function(){return this.getElement();},getDialog:function(){return this._.dialog;},setValue:function(L){this.getInputElement().setValue(L);this.fire('change',{value:L});return this;},getValue:function(){return this.getInputElement().getValue();},isChanged:function(){return false;},selectParentTab:function(){var O=this;var L=O.getInputElement(),M=L,N;while((M=M.getParent())&&(M.$.className.search('cke_dialog_page_contents')==-1)){}if(!M)return O;N=M.getAttribute('name');if(O._.dialog._.currentTabId!=N)O._.dialog.selectPage(N);return O;},focus:function(){this.selectParentTab().getInputElement().focus();return this;},registerEvents:function(L){var M=/^on([A-Z]\w+)/,N,O=function(Q,R,S,T){R.on('load',function(){Q.getInputElement().on(S,T,Q);});};for(var P in L){if(!(N=P.match(M)))continue;if(this.eventProcessors[P])this.eventProcessors[P].call(this,this._.dialog,L[P]);else O(this,this._.dialog,N[1].toLowerCase(),L[P]);}return this;},eventProcessors:{onLoad:function(L,M){L.on('load',M,this);},onShow:function(L,M){L.on('show',M,this);},onHide:function(L,M){L.on('hide',M,this);}},accessKeyDown:function(L,M){this.focus();},accessKeyUp:function(L,M){},disable:function(){var L=this.getInputElement();L.setAttribute('disabled','true');L.addClass('cke_disabled');},enable:function(){var L=this.getInputElement();L.removeAttribute('disabled');L.removeClass('cke_disabled');},isEnabled:function(){return!this.getInputElement().getAttribute('disabled');},isVisible:function(){return!!this.getInputElement().$.offsetHeight;},isFocusable:function(){if(!this.isEnabled()||!this.isVisible())return false;return true;}};k.dialog.hbox.prototype=e.extend(new k.dialog.uiElement(),{getChild:function(L){var M=this;if(arguments.length<1)return M._.children.concat();if(!L.splice)L=[L];if(L.length<2)return M._.children[L[0]];else return M._.children[L[0]]&&M._.children[L[0]].getChild?M._.children[L[0]].getChild(L.slice(1,L.length)):null;}},true);k.dialog.vbox.prototype=new k.dialog.hbox();(function(){var L={build:function(M,N,O){var P=N.children,Q,R=[],S=[];for(var T=0;T<P.length&&(Q=P[T]);T++){var U=[];R.push(U);S.push(a.dialog._.uiElementBuilders[Q.type].build(M,Q,U));}return new k.dialog[N.type](M,S,R,O,N);}};a.dialog.addUIElement('hbox',L);a.dialog.addUIElement('vbox',L);
+})();a.dialogCommand=function(L){this.dialogName=L;};a.dialogCommand.prototype={exec:function(L){L.openDialog(this.dialogName);},canUndo:false};(function(){var L=/^([a]|[^a])+$/,M=/^\d*$/,N=/^\d*(?:\.\d+)?$/;a.VALIDATE_OR=1;a.VALIDATE_AND=2;a.dialog.validate={functions:function(){return function(){var U=this;var O=U&&U.getValue?U.getValue():arguments[0],P=undefined,Q=2,R=[],S;for(S=0;S<arguments.length;S++)if(typeof arguments[S]=='function')R.push(arguments[S]);else break;if(S<arguments.length&&typeof arguments[S]=='string'){P=arguments[S];S++;}if(S<arguments.length&&typeof arguments[S]=='number')Q=arguments[S];var T=Q==2?true:false;for(S=0;S<R.length;S++)if(Q==2)T=T&&R[S](O);else T=T||R[S](O);if(!T){if(P!==undefined)alert(P);if(U&&(U.select||U.focus))U.select||U.focus();return false;}return true;};},regex:function(O,P){return function(){var R=this;var Q=R&&R.getValue?R.getValue():arguments[0];if(!O.test(Q)){if(P!==undefined)alert(P);if(R&&(R.select||R.focus))if(R.select)R.select();else R.focus();return false;}return true;};},notEmpty:function(O){return this.regex(L,O);},integer:function(O){return this.regex(M,O);},number:function(O){return this.regex(N,O);},equals:function(O,P){return this.functions(function(Q){return Q==O;},P);},notEqual:function(O,P){return this.functions(function(Q){return Q!=O;},P);}};})();a.skins.add=(function(){var L=a.skins.add;return function(M,N){o[M]={margins:N.margins};return L.apply(this,arguments);};})();})();e.extend(a.editor.prototype,{openDialog:function(l){var m=a.dialog._.dialogDefinitions[l];if(typeof m=='function'){var n=this._.storedDialogs||(this._.storedDialogs={}),o=n[l]||(n[l]=new a.dialog(this,l));o.show();return o;}else if(m=='failed')throw new Error('[CKEDITOR.dialog.openDialog] Dialog "'+l+'" failed when loading definition.');var p=a.document.getBody(),q=p.$.style.cursor,r=this;p.setStyle('cursor','wait');a.scriptLoader.load(a.getUrl(m),function(){if(typeof a.dialog._.dialogDefinitions[l]!='function')a.dialog._.dialogDefinitions[l]='failed';r.openDialog(l);p.setStyle('cursor',q);});return null;}});(function(){var l=function(n,o){return n._.modes&&n._.modes[o||n.mode];},m;j.add('editingblock',{init:function(n){if(!n.config.editingBlock)return;n.on('themeSpace',function(o){if(o.data.space=='contents')o.data.html+='<br>';});n.on('themeLoaded',function(){n.fireOnce('editingBlockReady');});n.on('uiReady',function(){n.setMode(n.config.startupMode);});n.on('afterSetData',function(){if(!m){function o(){m=true;l(n).loadData(n.getData());
+m=false;};if(n.mode)o();else n.on('mode',function(){o();n.removeListener('mode',arguments.callee);});}});n.on('beforeGetData',function(){if(!m&&n.mode){m=true;n.setData(l(n).getData());m=false;}});n.on('getSnapshot',function(o){if(n.mode)o.data=l(n).getSnapshotData();});n.on('loadSnapshot',function(o){if(n.mode)l(n).loadSnapshotData(o.data);});n.on('mode',function(o){o.removeListener();var p=n.container;if(b.webkit&&b.version<528){var q=n.config.tabIndex||n.element.getAttribute('tabindex')||0;p=p.append(h.createFromHtml('<input tabindex="'+q+'"'+' style="position:absolute; left:-10000">'));}p.on('focus',function(){n.focus();});if(n.config.startupFocus)n.focus();setTimeout(function(){n.fireOnce('instanceReady');a.fire('instanceReady',null,n);});});}});a.editor.prototype.mode='';a.editor.prototype.addMode=function(n,o){o.name=n;(this._.modes||(this._.modes={}))[n]=o;};a.editor.prototype.setMode=function(n){var o,p=this.getThemeSpace('contents'),q=this.checkDirty();if(this.mode){if(n==this.mode)return;this.fire('beforeModeUnload');var r=l(this);o=r.getData();r.unload(p);this.mode='';}p.setHtml('');var s=l(this,n);if(!s)throw '[CKEDITOR.editor.setMode] Unknown mode "'+n+'".';if(!q)this.on('mode',function(){this.resetDirty();this.removeListener('mode',arguments.callee);});s.load(p,typeof o!='string'?this.getData():o);};a.editor.prototype.focus=function(){var n=l(this);if(n)n.focus();};})();i.startupMode='wysiwyg';i.startupFocus=false;i.editingBlock=true;j.add('panel',{beforeInit:function(l){l.ui.addHandler(2,k.panel.handler);}});a.UI_PANEL=2;k.panel=function(l,m){var n=this;if(m)e.extend(n,m);e.extend(n,{className:'',css:[]});n.id=e.getNextNumber();n.document=l;n._={blocks:{}};};k.panel.handler={create:function(l){return new k.panel(l);}};k.panel.prototype={renderHtml:function(l){var m=[];this.render(l,m);return m.join('');},render:function(l,m){var o=this;var n='cke_'+o.id;m.push('<div class="',l.skinClass,'" lang="',l.langCode,'" style="display:none;z-index:'+(l.config.baseFloatZIndex+1)+'">'+'<div'+' id=',n,' dir=',l.lang.dir,' class="cke_panel cke_',l.lang.dir);if(o.className)m.push(' ',o.className);m.push('">');if(o.forceIFrame||o.css.length){m.push('<iframe id="',n,'_frame" frameborder="0" src="javascript:void(');m.push(b.isCustomDomain()?"(function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})()':'0');m.push(')"></iframe>');}m.push('</div></div>');return n;},getHolderElement:function(){var l=this._.holder;if(!l){if(this.forceIFrame||this.css.length){var m=this.document.getById('cke_'+this.id+'_frame'),n=m.getParent(),o=n.getAttribute('dir'),p=n.getParent().getAttribute('class'),q=n.getParent().getAttribute('lang'),r=m.getFrameDocument();
+r.$.open();if(b.isCustomDomain())r.$.domain=document.domain;var s=e.addFunction(e.bind(function(u){this.isLoaded=true;if(this.onLoad)this.onLoad();},this));r.$.write('<!DOCTYPE html><html dir="'+o+'" class="'+p+'_container" lang="'+q+'">'+'<head>'+'<style>.'+p+'_container{visibility:hidden}</style>'+'</head>'+'<body class="cke_'+o+' cke_panel_frame '+b.cssClass+'" style="margin:0;padding:0"'+' onload="( window.CKEDITOR || window.parent.CKEDITOR ).tools.callFunction('+s+');">'+'</body>'+'<link type="text/css" rel=stylesheet href="'+this.css.join('"><link type="text/css" rel="stylesheet" href="')+'">'+'</html>');r.$.close();var t=r.getWindow();t.$.CKEDITOR=a;r.on('keydown',function(u){var w=this;var v=u.data.getKeystroke();if(w._.onKeyDown&&w._.onKeyDown(v)===false){u.data.preventDefault();return;}if(v==27)w.onEscape&&w.onEscape();},this);l=r.getBody();}else l=this.document.getById('cke_'+this.id);this._.holder=l;}return l;},addBlock:function(l,m){var n=this;m=n._.blocks[l]=m||new k.panel.block(n.getHolderElement());if(!n._.currentBlock)n.showBlock(l);return m;},getBlock:function(l){return this._.blocks[l];},showBlock:function(l){var p=this;var m=p._.blocks,n=m[l],o=p._.currentBlock;if(o)o.hide();p._.currentBlock=n;n._.focusIndex=-1;p._.onKeyDown=n.onKeyDown&&e.bind(n.onKeyDown,n);n.show();return n;}};k.panel.block=e.createClass({$:function(l){var m=this;m.element=l.append(l.getDocument().createElement('div',{attributes:{'class':'cke_panel_block'},styles:{display:'none'}}));m.keys={};m._.focusIndex=-1;m.element.disableContextMenu();},_:{},proto:{show:function(){this.element.setStyle('display','');},hide:function(){var l=this;if(!l.onHide||l.onHide.call(l)!==true)l.element.setStyle('display','none');},onKeyDown:function(l){var q=this;var m=q.keys[l];switch(m){case 'next':var n=q._.focusIndex,o=q.element.getElementsByTag('a'),p;while(p=o.getItem(++n))if(p.getAttribute('_cke_focus')&&p.$.offsetWidth){q._.focusIndex=n;p.focus();break;}return false;case 'prev':n=q._.focusIndex;o=q.element.getElementsByTag('a');while(n>0&&(p=o.getItem(--n)))if(p.getAttribute('_cke_focus')&&p.$.offsetWidth){q._.focusIndex=n;p.focus();break;}return false;case 'click':n=q._.focusIndex;p=n>=0&&q.element.getElementsByTag('a').getItem(n);if(p)p.$.click?p.$.click():p.$.onclick();return false;}return true;}}});j.add('listblock',{requires:['panel'],onLoad:function(){k.panel.prototype.addListBlock=function(l,m){return this.addBlock(l,new k.listBlock(this.getHolderElement(),m));};k.listBlock=e.createClass({base:k.panel.block,$:function(l,m){var o=this;
+o.base(l);o.multiSelect=!!m;var n=o.keys;n[40]='next';n[9]='next';n[38]='prev';n[2000+9]='prev';n[32]='click';o._.pendingHtml=[];o._.items={};o._.groups={};},_:{close:function(){if(this._.started){this._.pendingHtml.push('</ul>');delete this._.started;}},getClick:function(){if(!this._.click)this._.click=e.addFunction(function(l){var n=this;var m=true;if(n.multiSelect)m=n.toggle(l);else n.mark(l);if(n.onClick)n.onClick(l,m);},this);return this._.click;}},proto:{add:function(l,m,n){var q=this;var o=q._.pendingHtml,p='cke_'+e.getNextNumber();if(!q._.started){o.push('<ul class=cke_panel_list>');q._.started=1;}q._.items[l]=p;o.push('<li id=',p,' class=cke_panel_listItem><a _cke_focus=1 hidefocus=true title="',n||l,'" href="javascript:void(\'',l,'\')" onclick="CKEDITOR.tools.callFunction(',q._.getClick(),",'",l,"'); return false;\">",m||l,'</a></li>');},startGroup:function(l){this._.close();var m='cke_'+e.getNextNumber();this._.groups[l]=m;this._.pendingHtml.push('<h1 id=',m,' class=cke_panel_grouptitle>',l,'</h1>');},commit:function(){var l=this;l._.close();l.element.appendHtml(l._.pendingHtml.join(''));l._.pendingHtml=[];},toggle:function(l){var m=this.isMarked(l);if(m)this.unmark(l);else this.mark(l);return!m;},hideGroup:function(l){var m=this.element.getDocument().getById(this._.groups[l]),n=m&&m.getNext();if(m){m.setStyle('display','none');if(n&&n.getName()=='ul')n.setStyle('display','none');}},hideItem:function(l){this.element.getDocument().getById(this._.items[l]).setStyle('display','none');},showAll:function(){var l=this._.items,m=this._.groups,n=this.element.getDocument();for(var o in l)n.getById(l[o]).setStyle('display','');for(var p in m){var q=n.getById(m[p]),r=q.getNext();q.setStyle('display','');if(r&&r.getName()=='ul')r.setStyle('display','');}},mark:function(l){var m=this;if(!m.multiSelect)m.unmarkAll();m.element.getDocument().getById(m._.items[l]).addClass('cke_selected');},unmark:function(l){this.element.getDocument().getById(this._.items[l]).removeClass('cke_selected');},unmarkAll:function(){var l=this._.items,m=this.element.getDocument();for(var n in l)m.getById(l[n]).removeClass('cke_selected');},isMarked:function(l){return this.element.getDocument().getById(this._.items[l]).hasClass('cke_selected');},focus:function(l){this._.focusIndex=-1;if(l){var m=this.element.getDocument().getById(this._.items[l]).getFirst(),n=this.element.getElementsByTag('a'),o,p=-1;while(o=n.getItem(++p))if(o.equals(m)){this._.focusIndex=p;break;}setTimeout(function(){m.focus();
+},0);}}}});}});j.add('dialogui');(function(){var l=function(s){var v=this;v._||(v._={});v._['default']=v._.initValue=s['default']||'';var t=[v._];for(var u=1;u<arguments.length;u++)t.push(arguments[u]);t.push(true);e.extend.apply(e,t);return v._;},m={build:function(s,t,u){return new k.dialog.textInput(s,t,u);}},n={build:function(s,t,u){return new k.dialog[t.type](s,t,u);}},o={isChanged:function(){return this.getValue()!=this.getInitValue();},reset:function(){this.setValue(this.getInitValue());},setInitValue:function(){this._.initValue=this.getValue();},resetInitValue:function(){this._.initValue=this._['default'];},getInitValue:function(){return this._.initValue;}},p=e.extend({},k.dialog.uiElement.prototype.eventProcessors,{onChange:function(s,t){if(!this._.domOnChangeRegistered){s.on('load',function(){this.getInputElement().on('change',function(){this.fire('change',{value:this.getValue()});},this);},this);this._.domOnChangeRegistered=true;}this.on('change',t);}},true),q=/^on([A-Z]\w+)/,r=function(s){for(var t in s)if(q.test(t)||t=='title'||t=='type')delete s[t];return s;};e.extend(k.dialog,{labeledElement:function(s,t,u,v){if(arguments.length<4)return;var w=l.call(this,t);w.labelId=e.getNextNumber()+'_label';var x=this._.children=[],y=function(){var z=[];if(t.labelLayout!='horizontal')z.push('<div class="cke_dialog_ui_labeled_label" id="',w.labelId,'" >',t.label,'</div>','<div class="cke_dialog_ui_labeled_content">',v(s,t),'</div>');else{var A={type:'hbox',widths:t.widths,padding:0,children:[{type:'html',html:'<span class="cke_dialog_ui_labeled_label" id="'+w.labelId+'">'+e.htmlEncode(t.label)+'</span>'},{type:'html',html:'<span class="cke_dialog_ui_labeled_content">'+v(s,t)+'</span>'}]};a.dialog._.uiElementBuilders.hbox.build(s,A,z);}return z.join('');};k.dialog.uiElement.call(this,s,t,u,'div',null,null,y);},textInput:function(s,t,u){if(arguments.length<3)return;l.call(this,t);var v=this._.inputId=e.getNextNumber()+'_textInput',w={'class':'cke_dialog_ui_input_'+t.type,id:v,type:'text'},x;if(t.validate)this.validate=t.validate;if(t.maxLength)w.maxlength=t.maxLength;if(t.size)w.size=t.size;var y=this,z=false;s.on('load',function(){y.getInputElement().on('keydown',function(B){if(B.data.getKeystroke()==13)z=true;});y.getInputElement().on('keyup',function(B){if(B.data.getKeystroke()==13&&z){s.getButton('ok')&&s.getButton('ok').click();z=false;}},null,null,1000);});var A=function(){var B=['<div class="cke_dialog_ui_input_',t.type,'"'];if(t.width)B.push('style="width:'+t.width+'" ');
+B.push('><input ');for(var C in w)B.push(C+'="'+w[C]+'" ');B.push(' /></div>');return B.join('');};k.dialog.labeledElement.call(this,s,t,u,A);},textarea:function(s,t,u){if(arguments.length<3)return;l.call(this,t);var v=this,w=this._.inputId=e.getNextNumber()+'_textarea',x={};if(t.validate)this.validate=t.validate;x.rows=t.rows||5;x.cols=t.cols||20;var y=function(){var z=['<div class="cke_dialog_ui_input_textarea"><textarea class="cke_dialog_ui_input_textarea" id="',w,'" '];for(var A in x)z.push(A+'="'+e.htmlEncode(x[A])+'" ');z.push('>',e.htmlEncode(v._['default']),'</textarea></div>');return z.join('');};k.dialog.labeledElement.call(this,s,t,u,y);},checkbox:function(s,t,u){if(arguments.length<3)return;var v=l.call(this,t,{'default':!!t['default']});if(t.validate)this.validate=t.validate;var w=function(){var x=e.extend({},t,{id:t.id?t.id+'_checkbox':e.getNextNumber()+'_checkbox'},true),y=[],z={'class':'cke_dialog_ui_checkbox_input',type:'checkbox'};r(x);if(t['default'])z.checked='checked';v.checkbox=new k.dialog.uiElement(s,x,y,'input',null,z);y.push(' <label for="',z.id,'">',e.htmlEncode(t.label),'</label>');return y.join('');};k.dialog.uiElement.call(this,s,t,u,'span',null,null,w);},radio:function(s,t,u){if(arguments.length<3)return;l.call(this,t);if(!this._['default'])this._['default']=this._.initValue=t.items[0][1];if(t.validate)this.validate=t.valdiate;var v=[],w=this,x=function(){var y=[],z=[],A={'class':'cke_dialog_ui_radio_item'},B=t.id?t.id+'_radio':e.getNextNumber()+'_radio';for(var C=0;C<t.items.length;C++){var D=t.items[C],E=D[2]!==undefined?D[2]:D[0],F=D[1]!==undefined?D[1]:D[0],G=e.extend({},t,{id:e.getNextNumber()+'_radio_input',title:null,type:null},true),H=e.extend({},G,{id:null,title:E},true),I={type:'radio','class':'cke_dialog_ui_radio_input',name:B,value:F},J=[];if(w._['default']==F)I.checked='checked';r(G);r(H);v.push(new k.dialog.uiElement(s,G,J,'input',null,I));J.push(' ');new k.dialog.uiElement(s,H,J,'label',null,{'for':I.id},D[0]);y.push(J.join(''));}new k.dialog.hbox(s,[],y,z);return z.join('');};k.dialog.labeledElement.call(this,s,t,u,x);this._.children=v;},button:function(s,t,u){if(!arguments.length)return;if(typeof t=='function')t=t(s.getParentEditor());l.call(this,t,{disabled:t.disabled||false});a.event.implementOn(this);var v=this;s.on('load',function(x){var y=this.getElement();(function(){y.on('click',function(z){v.fire('click',{dialog:v.getDialog()});z.data.preventDefault();});})();y.unselectable();},this);var w=e.extend({},t);
+delete w.style;k.dialog.uiElement.call(this,s,w,u,'a',null,{style:t.style,href:'javascript:void(0)',title:t.label,hidefocus:'true','class':t['class']},'<span class="cke_dialog_ui_button">'+e.htmlEncode(t.label)+'</span>');},select:function(s,t,u){if(arguments.length<3)return;var v=l.call(this,t);if(t.validate)this.validate=t.validate;var w=function(){var x=e.extend({},t,{id:t.id?t.id+'_select':e.getNextNumber()+'_select'},true),y=[],z=[],A={'class':'cke_dialog_ui_input_select'};if(t.size!=undefined)A.size=t.size;if(t.multiple!=undefined)A.multiple=t.multiple;r(x);for(var B=0,C;B<t.items.length&&(C=t.items[B]);B++)z.push('<option value="',e.htmlEncode(C[1]!==undefined?C[1]:C[0]),'" /> ',e.htmlEncode(C[0]));v.select=new k.dialog.uiElement(s,x,y,'select',null,A,z.join(''));return y.join('');};k.dialog.labeledElement.call(this,s,t,u,w);},file:function(s,t,u){if(arguments.length<3)return;if(t['default']===undefined)t['default']='';var v=e.extend(l.call(this,t),{definition:t,buttons:[]});if(t.validate)this.validate=t.validate;var w=function(){v.frameId=e.getNextNumber()+'_fileInput';var x=b.isCustomDomain(),y=['<iframe frameborder="0" allowtransparency="0" class="cke_dialog_ui_input_file" id="',v.frameId,'" title="',t.label,'" src="javascript:void('];y.push(x?"(function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})()':'0');y.push(')"></iframe>');return y.join('');};s.on('load',function(){var x=a.document.getById(v.frameId),y=x.getParent();y.addClass('cke_dialog_ui_input_file');});k.dialog.labeledElement.call(this,s,t,u,w);},fileButton:function(s,t,u){if(arguments.length<3)return;var v=l.call(this,t),w=this;if(t.validate)this.validate=t.validate;var x=e.extend({},t),y=x.onClick;x.className=(x.className?x.className+' ':'')+('cke_dialog_ui_button');x.onClick=function(z){var A=t['for'];if(!y||y.call(this,z)!==false){s.getContentElement(A[0],A[1]).submit();this.disable();}};s.on('load',function(){s.getContentElement(t['for'][0],t['for'][1])._.buttons.push(w);});k.dialog.button.call(this,s,x,u);},html:(function(){var s=/^\s*<[\w:]+\s+([^>]*)?>/,t=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,u=/\/$/;return function(v,w,x){if(arguments.length<3)return;var y=[],z,A=w.html,B,C;if(A.charAt(0)!='<')A='<span>'+A+'</span>';if(w.focus){var D=this.focus;this.focus=function(){D.call(this);w.focus.call(this);this.fire('focus');};if(w.isFocusable){var E=this.isFocusable;this.isFocusable=E;}this.keyboardFocusable=true;}k.dialog.uiElement.call(this,v,w,y,'span',null,null,'');
+z=y.join('');B=z.match(s);C=A.match(t)||['','',''];if(u.test(C[1])){C[1]=C[1].slice(0,-1);C[2]='/'+C[2];}x.push([C[1],' ',B[1]||'',C[2]].join(''));};})()},true);k.dialog.html.prototype=new k.dialog.uiElement();k.dialog.labeledElement.prototype=e.extend(new k.dialog.uiElement(),{setLabel:function(s){var t=a.document.getById(this._.labelId);if(t.getChildCount()<1)new d.text(s,a.document).appendTo(t);else t.getChild(0).$.nodeValue=s;return this;},getLabel:function(){var s=a.document.getById(this._.labelId);if(!s||s.getChildCount()<1)return '';else return s.getChild(0).getText();},eventProcessors:p},true);k.dialog.button.prototype=e.extend(new k.dialog.uiElement(),{click:function(){var s=this;if(!s._.disabled)return s.fire('click',{dialog:s._.dialog});s.getElement().$.blur();return false;},enable:function(){this._.disabled=false;var s=this.getElement();s&&s.removeClass('disabled');},disable:function(){this._.disabled=true;this.getElement().addClass('disabled');},isVisible:function(){return!!this.getElement().$.firstChild.offsetHeight;},isEnabled:function(){return!this._.disabled;},eventProcessors:e.extend({},k.dialog.uiElement.prototype.eventProcessors,{onClick:function(s,t){this.on('click',t);}},true),accessKeyUp:function(){this.click();},accessKeyDown:function(){this.focus();},keyboardFocusable:true},true);k.dialog.textInput.prototype=e.extend(new k.dialog.labeledElement(),{getInputElement:function(){return a.document.getById(this._.inputId);},focus:function(){var s=this.selectParentTab();setTimeout(function(){var t=s.getInputElement();t&&t.$.focus();},0);},select:function(){var s=this.selectParentTab();setTimeout(function(){var t=s.getInputElement();if(t){t.$.focus();t.$.select();}},0);},accessKeyUp:function(){this.select();},setValue:function(s){s=s||'';return k.dialog.uiElement.prototype.setValue.call(this,s);},keyboardFocusable:true},o,true);k.dialog.textarea.prototype=new k.dialog.textInput();k.dialog.select.prototype=e.extend(new k.dialog.labeledElement(),{getInputElement:function(){return this._.select.getElement();},add:function(s,t,u){var v=new h('option',this.getDialog().getParentEditor().document),w=this.getInputElement().$;v.$.text=s;v.$.value=t===undefined||t===null?s:t;if(u===undefined||u===null){if(c)w.add(v.$);else w.add(v.$,null);}else w.add(v.$,u);return this;},remove:function(s){var t=this.getInputElement().$;t.remove(s);return this;},clear:function(){var s=this.getInputElement().$;while(s.length>0)s.remove(0);return this;},keyboardFocusable:true},o,true);
+k.dialog.checkbox.prototype=e.extend(new k.dialog.uiElement(),{getInputElement:function(){return this._.checkbox.getElement();},setValue:function(s){this.getInputElement().$.checked=s;this.fire('change',{value:s});},getValue:function(){return this.getInputElement().$.checked;},accessKeyUp:function(){this.setValue(!this.getValue());},eventProcessors:{onChange:function(s,t){if(!c)return p.onChange.apply(this,arguments);else{s.on('load',function(){var u=this._.checkbox.getElement();u.on('propertychange',function(v){v=v.data.$;if(v.propertyName=='checked')this.fire('change',{value:u.$.checked});},this);},this);this.on('change',t);}return null;}},keyboardFocusable:true},o,true);k.dialog.radio.prototype=e.extend(new k.dialog.uiElement(),{setValue:function(s){var t=this._.children,u;for(var v=0;v<t.length&&(u=t[v]);v++)u.getElement().$.checked=u.getValue()==s;this.fire('change',{value:s});},getValue:function(){var s=this._.children;for(var t=0;t<s.length;t++)if(s[t].getElement().$.checked)return s[t].getValue();return null;},accessKeyUp:function(){var s=this._.children,t;for(t=0;t<s.length;t++)if(s[t].getElement().$.checked){s[t].getElement().focus();return;}s[0].getElement().focus();},eventProcessors:{onChange:function(s,t){if(!c)return p.onChange.apply(this,arguments);else{s.on('load',function(){var u=this._.children,v=this;for(var w=0;w<u.length;w++){var x=u[w].getElement();x.on('propertychange',function(y){y=y.data.$;if(y.propertyName=='checked'&&this.$.checked)v.fire('change',{value:this.getAttribute('value')});});}},this);this.on('change',t);}return null;}},keyboardFocusable:true},o,true);k.dialog.file.prototype=e.extend(new k.dialog.labeledElement(),o,{getInputElement:function(){var s=a.document.getById(this._.frameId).getFrameDocument();return s.$.forms.length>0?new h(s.$.forms[0].elements[0]):this.getElement();},submit:function(){this.getInputElement().getParent().$.submit();return this;},getAction:function(s){return this.getInputElement().getParent().$.action;},reset:function(){var s=a.document.getById(this._.frameId),t=s.getFrameDocument(),u=this._.definition,v=this._.buttons;function w(){t.$.open();if(b.isCustomDomain())t.$.domain=document.domain;var x='';if(u.size)x=u.size-(c?7:0);t.$.write(['<html><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">','<form enctype="multipart/form-data" method="POST" action="',e.htmlEncode(u.action),'">','<input type="file" name="',e.htmlEncode(u.id||'cke_upload'),'" size="',e.htmlEncode(x>0?x:''),'" />','</form>','</body></html>'].join(''));
+t.$.close();for(var y=0;y<v.length;y++)v[y].enable();};if(b.gecko)setTimeout(w,500);else w();},getValue:function(){return '';},eventProcessors:p,keyboardFocusable:true},true);k.dialog.fileButton.prototype=new k.dialog.button();a.dialog.addUIElement('text',m);a.dialog.addUIElement('password',m);a.dialog.addUIElement('textarea',n);a.dialog.addUIElement('checkbox',n);a.dialog.addUIElement('radio',n);a.dialog.addUIElement('button',n);a.dialog.addUIElement('select',n);a.dialog.addUIElement('file',n);a.dialog.addUIElement('fileButton',n);a.dialog.addUIElement('html',n);})();a.skins.add('kama',(function(){var l=[];if(c&&b.version<7)l.push('icons.png','images/sprites_ie6.png','images/dialog_sides.gif');return{preload:l,editor:{css:['editor.css']},dialog:{css:['dialog.css']},templates:{css:['templates.css']},margins:[0,0,0,0],init:function(m){if(m.config.width&&!isNaN(m.config.width))m.config.width-=12;var n=[],o=/\$color/g,p='/* UI Color Support */.cke_skin_kama .cke_menuitem .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_label,.cke_skin_kama .cke_menuitem a:focus .cke_label,.cke_skin_kama .cke_menuitem a:active .cke_label{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label{\tbackground-color: transparent !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuseparator{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover,.cke_skin_kama .cke_menuitem a:focus,.cke_skin_kama .cke_menuitem a:active{\tbackground-color: $color !important;}';if(b.webkit){p=p.split('}').slice(0,-1);for(var q=0;q<p.length;q++)p[q]=p[q].split('{');}function r(u){var v=u.getHead().append('style');
+v.setAttribute('id','cke_ui_color');v.setAttribute('type','text/css');return v;};function s(u,v,w){var x,y,z;for(var A=0;A<u.length;A++)if(b.webkit){for(y=0;y<u[A].$.sheet.rules.length;y++)u[A].$.sheet.removeRule(y);for(y=0;y<v.length;y++){z=v[y][1];for(x=0;x<w.length;x++)z=z.replace(w[x][0],w[x][1]);u[A].$.sheet.addRule(v[y][0],z);}}else{z=v;for(x=0;x<w.length;x++)z=z.replace(w[x][0],w[x][1]);if(c)u[A].$.styleSheet.cssText=z;else u[A].setHtml(z);}};var t=/\$color/g;e.extend(m,{uiColor:null,getUiColor:function(){return this.uiColor;},setUiColor:function(u){var v,w=r(a.document),x='#cke_'+m.name.replace('.','\\.'),y=[x+' .cke_wrapper',x+'_dialog .cke_dialog_contents',x+'_dialog a.cke_dialog_tab',x+'_dialog .cke_dialog_footer'].join(','),z='background-color: $color !important;';if(b.webkit)v=[[y,z]];else v=y+'{'+z+'}';return(this.setUiColor=function(A){var B=[[t,A]];m.uiColor=A;s([w],v,B);s(n,p,B);})(u);}});m.on('menuShow',function(u){var v=u.data[0],w=v.element.getElementsByTag('iframe').getItem(0).getFrameDocument();if(!w.getById('cke_ui_color')){var x=r(w);n.push(x);var y=m.getUiColor();if(y)s([x],p,[[t,y]]);}});if(m.config.uiColor)m.setUiColor(m.config.uiColor);}};})());if(a.dialog)a.dialog.on('resize',function(l){var m=l.data,n=m.width,o=m.height,p=m.dialog,q=p.parts.contents,r=!b.quirks;if(m.skin!='kama')return;q.setStyles(c||b.gecko&&b.version<10900?{width:n+'px',height:o+'px'}:{'min-width':n+'px','min-height':o+'px'});if(!c)return;setTimeout(function(){var s=q.getParent(),t=s.getParent(),u=t.getChild(2);u.setStyle('width',s.$.offsetWidth+'px');u=t.getChild(7);u.setStyle('width',s.$.offsetWidth-28+'px');u=t.getChild(4);u.setStyle('height',s.$.offsetHeight-31-14+'px');u=t.getChild(5);u.setStyle('height',s.$.offsetHeight-31-14+'px');},100);});a.themes.add('default',(function(){return{build:function(l,m){var n=l.name,o=l.element,p=l.elementMode;if(!o||p==0)return;if(p==1)o.hide();var q=l.fire('themeSpace',{space:'top',html:''}).html,r=l.fire('themeSpace',{space:'contents',html:''}).html,s=l.fireOnce('themeSpace',{space:'bottom',html:''}).html,t=r&&l.config.height,u=l.config.tabIndex||l.element.getAttribute('tabindex')||0;if(!r)t='auto';else if(!isNaN(t))t+='px';var v='',w=l.config.width;if(w){if(!isNaN(w))w+='px';v+='width: '+w+';';}var x=h.createFromHtml(['<span id="cke_',n,'" onmousedown="return false;" class="',l.skinClass,'" dir="',l.lang.dir,'" title="',b.gecko?' ':'','" lang="',l.langCode,'" tabindex="'+u+'"'+(v?' style="'+v+'"':'')+'>'+'<span class="',b.cssClass,'"><span class="cke_wrapper cke_',l.lang.dir,'"><table class="cke_editor" border="0" cellspacing="0" cellpadding="0"><tbody><tr',q?'':' style="display:none"','><td id="cke_top_',n,'" class="cke_top">',q,'</td></tr><tr',r?'':' style="display:none"','><td id="cke_contents_',n,'" class="cke_contents" style="height:',t,'">',r,'</td></tr><tr',s?'':' style="display:none"','><td id="cke_bottom_',n,'" class="cke_bottom">',s,'</td></tr></tbody></table><style>.',l.skinClass,'{visibility:hidden;}</style></span></span></span>'].join(''));
+x.getChild([0,0,0,0,0]).unselectable();x.getChild([0,0,0,0,2]).unselectable();if(p==1)x.insertAfter(o);else o.append(x);l.container=x;x.disableContextMenu();l.fireOnce('themeLoaded');l.fireOnce('uiReady');},buildDialog:function(l){var m=e.getNextNumber(),n=h.createFromHtml(['<div id="cke_'+l.name.replace('.','\\.')+'_dialog" class="cke_skin_',l.skinName,'" dir="',l.lang.dir,'" lang="',l.langCode,'"><div class="cke_dialog',' '+b.cssClass,' cke_',l.lang.dir,'" style="position:absolute"><div class="%body"><div id="%title#" class="%title"></div><div id="%close_button#" class="%close_button"><span>X</span></div><div id="%tabs#" class="%tabs"></div><div id="%contents#" class="%contents"></div><div id="%footer#" class="%footer"></div></div><div id="%tl#" class="%tl"></div><div id="%tc#" class="%tc"></div><div id="%tr#" class="%tr"></div><div id="%ml#" class="%ml"></div><div id="%mr#" class="%mr"></div><div id="%bl#" class="%bl"></div><div id="%bc#" class="%bc"></div><div id="%br#" class="%br"></div></div>',c?'':'<style>.cke_dialog{visibility:hidden;}</style>','</div>'].join('').replace(/#/g,'_'+m).replace(/%/g,'cke_dialog_')),o=n.getChild([0,0]);o.getChild(0).unselectable();o.getChild(1).unselectable();return{element:n,parts:{dialog:n.getChild(0),title:o.getChild(0),close:o.getChild(1),tabs:o.getChild(2),contents:o.getChild(3),footer:o.getChild(4)}};},destroy:function(l){var m=l.container,n=l.panels;if(c){m.setStyle('display','none');var o=document.body.createTextRange();o.moveToElementText(m.$);try{o.select();}catch(q){}}if(m)m.remove();for(var p=0;n&&p<n.length;p++)n[p].remove();if(l.elementMode==1){l.element.show();delete l.element;}}};})());a.editor.prototype.getThemeSpace=function(l){var m='cke_'+l,n=this._[m]||(this._[m]=a.document.getById(m+'_'+this.name));return n;};a.editor.prototype.resize=function(l,m,n,o){var p=/^\d+$/;if(p.test(l))l+='px';var q=a.document.getById('cke_contents_'+this.name),r=o?q.getAscendant('table').getParent():q.getAscendant('table').getParent().getParent().getParent();b.webkit&&r.setStyle('display','none');r.setStyle('width',l);if(b.webkit){r.$.offsetWidth;r.setStyle('display','');}var s=n?0:(r.$.offsetHeight||0)-(q.$.clientHeight||0);q.setStyle('height',Math.max(m-s,0)+'px');this.fire('resize');};a.editor.prototype.getResizable=function(){return this.container.getChild([0,0]);};})();
Index: /trunk/filemanager/tp/ckeditor/ckeditor_basic.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/ckeditor_basic.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/ckeditor_basic.js	(revision 2000)
@@ -0,0 +1,8 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'99GE',version:'3.0.1',revision:'4391',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();var a=CKEDITOR;if(!a.event){a.event=function(){};a.event.implementOn=function(b,c){var d=a.event.prototype;for(var e in d)if(b[e]==undefined)b[e]=d[e];};a.event.prototype=(function(){var b=function(d){var e=d.getPrivate&&d.getPrivate()||d._||(d._={});return e.events||(e.events={});},c=function(d){this.name=d;this.listeners=[];};c.prototype={getListenerIndex:function(d){for(var e=0,f=this.listeners;e<f.length;e++)if(f[e].fn==d)return e;return-1;}};return{on:function(d,e,f,g,h){var i=b(this),j=i[d]||(i[d]=new c(d));if(j.getListenerIndex(e)<0){var k=j.listeners;if(!f)f=this;if(isNaN(h))h=10;var l=this,m=function(o,p,q,r){var s={name:d,sender:this,editor:o,data:p,listenerData:g,stop:q,cancel:r,removeListener:function(){l.removeListener(d,e);}};e.call(f,s);return s.data;};m.fn=e;m.priority=h;for(var n=k.length-1;n>=0;n--)if(k[n].priority<=h){k.splice(n+1,0,m);return;}k.unshift(m);}},fire:(function(){var d=false,e=function(){d=true;},f=false,g=function(){f=true;};return function(h,i,j){var k=b(this)[h],l=d,m=f;d=f=false;if(k){var n=k.listeners;if(n.length){n=n.slice(0);for(var o=0;o<n.length;o++){var p=n[o].call(this,j,i,e,g);if(typeof p!='undefined')i=p;if(d||f)break;}}}var q=f||(typeof i=='undefined'?false:i);d=l;f=m;return q;};})(),fireOnce:function(d,e,f){var g=this.fire(d,e,f);delete b(this)[d];return g;},removeListener:function(d,e){var f=b(this)[d];if(f){var g=f.getListenerIndex(e);if(g>=0)f.listeners.splice(g,1);}},hasListeners:function(d){var e=b(this)[d];return e&&e.listeners.length>0;}};})();}if(!a.editor){a.ELEMENT_MODE_NONE=0;a.ELEMENT_MODE_REPLACE=1;a.ELEMENT_MODE_APPENDTO=2;a.editor=function(b,c,d){var e=this;e._={instanceConfig:b,element:c};
+e.elementMode=d||0;a.event.call(e);e._init();};a.editor.replace=function(b,c){var d=b;if(typeof d!='object'){d=document.getElementById(b);if(!d){var e=0,f=document.getElementsByName(b);while((d=f[e++])&&(d.tagName.toLowerCase()!='textarea')){}}if(!d)throw '[CKEDITOR.editor.replace] The element with id or name "'+b+'" was not found.';}d.style.visibility='hidden';return new a.editor(c,d,1);};a.editor.appendTo=function(b,c){if(typeof b!='object'){b=document.getElementById(b);if(!b)throw '[CKEDITOR.editor.appendTo] The element with id "'+b+'" was not found.';}return new a.editor(c,b,2);};a.editor.prototype={_init:function(){var b=a.editor._pending||(a.editor._pending=[]);b.push(this);},fire:function(b,c){return a.event.prototype.fire.call(this,b,c,this);},fireOnce:function(b,c){return a.event.prototype.fireOnce.call(this,b,c,this);}};a.event.implementOn(a.editor.prototype,true);}if(!a.env)a.env=(function(){var b=navigator.userAgent.toLowerCase(),c=window.opera,d={ie:/*@cc_on!@*/false,opera:!!c&&c.version,webkit:b.indexOf(' applewebkit/')>-1,air:b.indexOf(' adobeair/')>-1,mac:b.indexOf('macintosh')>-1,quirks:document.compatMode=='BackCompat',isCustomDomain:function(){return this.ie&&document.domain!=window.location.hostname;}};d.gecko=navigator.product=='Gecko'&&!d.webkit&&!d.opera;var e=0;if(d.ie){e=parseFloat(b.match(/msie (\d+)/)[1]);d.ie8=!!document.documentMode;d.ie8Compat=document.documentMode==8;d.ie7Compat=e==7&&!document.documentMode||document.documentMode==7;d.ie6Compat=e<7||d.quirks;}if(d.gecko){var f=b.match(/rv:([\d\.]+)/);if(f){f=f[1].split('.');e=f[0]*10000+(f[1]||0)*(100)+ +(f[2]||0);}}if(d.opera)e=parseFloat(c.version());if(d.air)e=parseFloat(b.match(/ adobeair\/(\d+)/)[1]);if(d.webkit)e=parseFloat(b.match(/ applewebkit\/(\d+)/)[1]);d.version=e;d.isCompatible=d.ie&&e>=6||d.gecko&&e>=10801||d.opera&&e>=9.5||d.air&&e>=1||d.webkit&&e>=522||false;d.cssClass='cke_browser_'+(d.ie?'ie':d.gecko?'gecko':d.opera?'opera':d.air?'air':d.webkit?'webkit':'unknown');if(d.quirks)d.cssClass+=' cke_browser_quirks';if(d.ie){d.cssClass+=' cke_browser_ie'+(d.version<7?'6':d.version>=8?'8':'7');if(d.quirks)d.cssClass+=' cke_browser_iequirks';}if(d.gecko&&e<10900)d.cssClass+=' cke_browser_gecko18';return d;})();var b=a.env;var c=b.ie;if(a.status=='unloaded')(function(){a.event.implementOn(a);a.loadFullCore=function(){if(a.status!='basic_ready'){a.loadFullCore._load=true;return;}delete a.loadFullCore;var e=document.createElement('script');e.type='text/javascript';
+e.src=a.basePath+'ckeditor.js';document.getElementsByTagName('head')[0].appendChild(e);};a.loadFullCoreTimeout=0;a.replaceClass='ckeditor';a.replaceByClassEnabled=true;var d=function(e,f,g){if(b.isCompatible){if(a.loadFullCore)a.loadFullCore();var h=g(e,f);a.add(h);return h;}return null;};a.replace=function(e,f){return d(e,f,a.editor.replace);};a.appendTo=function(e,f){return d(e,f,a.editor.appendTo);};a.add=function(e){var f=this._.pending||(this._.pending=[]);f.push(e);};a.replaceAll=function(){var e=document.getElementsByTagName('textarea');for(var f=0;f<e.length;f++){var g=null,h=e[f],i=h.name;if(!h.name&&!h.id)continue;if(typeof arguments[0]=='string'){var j=new RegExp('(?:^| )'+arguments[0]+'(?:$| )');if(!j.test(h.className))continue;}else if(typeof arguments[0]=='function'){g={};if(arguments[0](h,g)===false)continue;}this.replace(h,g);}};(function(){var e=function(){var f=a.loadFullCore,g=a.loadFullCoreTimeout;if(a.replaceByClassEnabled)a.replaceAll(a.replaceClass);a.status='basic_ready';if(f&&f._load)f();else if(g)setTimeout(function(){if(a.loadFullCore)a.loadFullCore();},g*1000);};if(window.addEventListener)window.addEventListener('load',e,false);else if(window.attachEvent)window.attachEvent('onload',e);})();a.status='basic_loaded';})();})();
Index: /trunk/filemanager/tp/ckeditor/config.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/config.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/config.js	(revision 2000)
@@ -0,0 +1,11 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.editorConfig = function( config )
+{
+	// Define changes to default configuration here. For example:
+	// config.language = 'fr';
+	// config.uiColor = '#AADC6E';
+};
Index: /trunk/filemanager/tp/ckeditor/ckeditor.pack
===================================================================
--- /trunk/filemanager/tp/ckeditor/ckeditor.pack	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/ckeditor.pack	(revision 2000)
@@ -0,0 +1,200 @@
+/*
+ * CKPackager - Sample Package file
+ */
+
+header :
+	'/*'																			+ '\n' +
+	'Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.'	+ '\n' +
+	'For licensing, see LICENSE.html or http://ckeditor.com/license'				+ '\n' +
+	'*/'																			+ '\n' +
+	'\n',
+
+noCheck : false,
+
+constants :
+	{
+		'CKEDITOR.ELEMENT_MODE_NONE' : 0,
+		'CKEDITOR.ELEMENT_MODE_REPLACE' : 1,
+		'CKEDITOR.ELEMENT_MODE_APPENDTO' : 2,
+		'CKEDITOR.CTRL' : 1000,
+		'CKEDITOR.SHIFT' : 2000,
+		'CKEDITOR.ALT' : 4000,
+		'CKEDITOR.NODE_ELEMENT' : 1,
+		'CKEDITOR.NODE_TEXT' : 3,
+		'CKEDITOR.NODE_COMMENT' : 8,
+		'CKEDITOR.NODE_DOCUMENT_FRAGMENT' : 11,
+		'CKEDITOR.POSITION_IDENTICAL' : 0,
+		'CKEDITOR.POSITION_DISCONNECTED' : 1,
+		'CKEDITOR.POSITION_FOLLOWING' : 2,
+		'CKEDITOR.POSITION_PRECEDING' : 4,
+		'CKEDITOR.POSITION_IS_CONTAINED' : 8,
+		'CKEDITOR.POSITION_CONTAINS' : 16,
+		'CKEDITOR.ENTER_P' : 1,
+		'CKEDITOR.ENTER_BR' : 2,
+		'CKEDITOR.ENTER_DIV' : 3,
+		'CKEDITOR.TRISTATE_ON' : 1,
+		'CKEDITOR.TRISTATE_OFF' : 2,
+		'CKEDITOR.TRISTATE_DISABLED' : 0,
+		'CKEDITOR.POSITION_AFTER_START' : 1,
+		'CKEDITOR.POSITION_BEFORE_END' : 2,
+		'CKEDITOR.POSITION_BEFORE_START' : 3,
+		'CKEDITOR.POSITION_AFTER_END' : 4,
+		'CKEDITOR.ENLARGE_ELEMENT' : 1,
+		'CKEDITOR.ENLARGE_BLOCK_CONTENTS' : 2,
+		'CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS' : 3,
+		'CKEDITOR.START' : 1,
+		'CKEDITOR.END' : 2,
+		'CKEDITOR.STARTEND' : 3,
+		'CKEDITOR.UI_BUTTON' : 1,
+		'CKEDITOR.STYLE_BLOCK' : 1,
+		'CKEDITOR.STYLE_INLINE' : 2,
+		'CKEDITOR.STYLE_OBJECT' : 3,
+		'CKEDITOR.UI_PANELBUTTON' : 4,
+		'CKEDITOR.SELECTION_NONE' : 1,
+		'CKEDITOR.SELECTION_TEXT' : 2,
+		'CKEDITOR.SELECTION_ELEMENT' : 3,
+		'CKEDITOR.UI_RICHCOMBO' : 3,
+		'CKEDITOR.UI_MENUBUTTON' : 5,
+		'CKEDITOR.DIALOG_RESIZE_NONE' : 0,
+		'CKEDITOR.DIALOG_RESIZE_WIDTH' : 1,
+		'CKEDITOR.DIALOG_RESIZE_HEIGHT' : 2,
+		'CKEDITOR.DIALOG_RESIZE_BOTH' : 3,
+		'CKEDITOR.VALIDATE_OR' : 1,
+		'CKEDITOR.VALIDATE_AND' : 2,
+		'CKEDITOR.UI_PANEL' : 2
+	},
+
+packages :
+	[
+		{
+			output : 'ckeditor_basic.js',
+			wrap : true,
+			files :
+				[
+					'_source/core/ckeditor_base.js',
+					'_source/core/event.js',
+					'_source/core/editor_basic.js',
+					'_source/core/env.js',
+					'_source/core/ckeditor_basic.js'
+				]
+		},
+
+		{
+			output : 'ckeditor.js',
+			wrap : true,
+			files :
+				[
+					'_source/core/ckeditor_base.js',
+					'_source/core/event.js',
+					'_source/core/editor_basic.js',
+					'_source/core/env.js',
+					'_source/core/ckeditor_basic.js',
+					'_source/core/dom.js',
+					'_source/core/tools.js',
+					'_source/core/dtd.js',
+					'_source/core/dom/event.js',
+					'_source/core/dom/domobject.js',
+					'_source/core/dom/window.js',
+					'_source/core/dom/document.js',
+					'_source/core/dom/node.js',
+					'_source/core/dom/nodelist.js',
+					'_source/core/dom/element.js',
+					'_source/core/command.js',
+					'_source/core/config.js',
+					'_source/core/focusmanager.js',
+					'_source/core/lang.js',
+					'_source/core/scriptloader.js',
+					'_source/core/resourcemanager.js',
+					'_source/core/plugins.js',
+					'_source/core/imagecacher.js',
+					'_source/core/skins.js',
+					'_source/core/themes.js',
+					'_source/core/ui.js',
+					'_source/core/editor.js',
+					'_source/core/htmlparser.js',
+					'_source/core/htmlparser/comment.js',
+					'_source/core/htmlparser/text.js',
+					'_source/core/htmlparser/cdata.js',
+					'_source/core/htmlparser/fragment.js',
+					'_source/core/htmlparser/element.js',
+					'_source/core/htmlparser/filter.js',
+					'_source/core/htmlparser/basicwriter.js',
+					'_source/core/ckeditor.js',
+					'_source/core/dom/elementpath.js',
+					'_source/core/dom/text.js',
+					'_source/core/dom/documentfragment.js',
+					'_source/core/dom/walker.js',
+					'_source/core/dom/range.js',
+					'_source/core/_bootstrap.js',
+//					'_source/lang/en.js',
+					'_source/plugins/about/plugin.js',
+					'_source/plugins/basicstyles/plugin.js',
+					'_source/plugins/blockquote/plugin.js',
+					'_source/plugins/button/plugin.js',
+					'_source/plugins/clipboard/plugin.js',
+					'_source/plugins/colorbutton/plugin.js',
+					'_source/plugins/colordialog/plugin.js',
+					'_source/plugins/contextmenu/plugin.js',
+					'_source/plugins/elementspath/plugin.js',
+					'_source/plugins/enterkey/plugin.js',
+					'_source/plugins/entities/plugin.js',
+					'_source/plugins/filebrowser/plugin.js',
+					'_source/plugins/find/plugin.js',
+					'_source/plugins/flash/plugin.js',
+					'_source/plugins/font/plugin.js',
+					'_source/plugins/format/plugin.js',
+					'_source/plugins/forms/plugin.js',
+					'_source/plugins/horizontalrule/plugin.js',
+					'_source/plugins/htmldataprocessor/plugin.js',
+					'_source/plugins/image/plugin.js',
+					'_source/plugins/indent/plugin.js',
+					'_source/plugins/justify/plugin.js',
+					'_source/plugins/keystrokes/plugin.js',
+					'_source/plugins/link/plugin.js',
+					'_source/plugins/list/plugin.js',
+					'_source/plugins/maximize/plugin.js',
+					'_source/plugins/newpage/plugin.js',
+					'_source/plugins/pagebreak/plugin.js',
+					'_source/plugins/pastefromword/plugin.js',
+					'_source/plugins/pastetext/plugin.js',
+					'_source/plugins/popup/plugin.js',
+					'_source/plugins/preview/plugin.js',
+					'_source/plugins/print/plugin.js',
+					'_source/plugins/removeformat/plugin.js',
+					'_source/plugins/resize/plugin.js',
+					'_source/plugins/save/plugin.js',
+					'_source/plugins/scayt/plugin.js',
+					'_source/plugins/smiley/plugin.js',
+					'_source/plugins/showblocks/plugin.js',
+					'_source/plugins/sourcearea/plugin.js',
+					'_source/plugins/stylescombo/plugin.js',
+					'_source/plugins/table/plugin.js',
+					'_source/plugins/tabletools/plugin.js',
+					'_source/plugins/specialchar/plugin.js',
+					'_source/plugins/tab/plugin.js',
+					'_source/plugins/templates/plugin.js',
+					'_source/plugins/toolbar/plugin.js',
+					'_source/plugins/undo/plugin.js',
+					'_source/plugins/wysiwygarea/plugin.js',
+					'_source/plugins/wsc/plugin.js',
+					'_source/plugins/styles/plugin.js',
+					'_source/plugins/domiterator/plugin.js',
+					'_source/plugins/panelbutton/plugin.js',
+					'_source/plugins/floatpanel/plugin.js',
+					'_source/plugins/menu/plugin.js',
+					'_source/plugins/selection/plugin.js',
+					'_source/plugins/fakeobjects/plugin.js',
+					'_source/plugins/richcombo/plugin.js',
+					'_source/plugins/htmlwriter/plugin.js',
+					'_source/plugins/menubutton/plugin.js',
+					'_source/plugins/dialog/plugin.js',
+					'_source/plugins/editingblock/plugin.js',
+					'_source/plugins/panel/plugin.js',
+					'_source/plugins/listblock/plugin.js',
+					'_source/plugins/dialogui/plugin.js',
+					'_source/skins/kama/skin.js',
+					'_source/themes/default/theme.js'
+				]
+		}
+
+	]
Index: /trunk/filemanager/tp/ckeditor/lang/fo.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/fo.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/fo.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.fo={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Kelda',newPage:'Nýggj síða',save:'Goym',preview:'Frumsýning',cut:'Kvett',copy:'Avrita',paste:'Innrita',print:'Prenta',underline:'Undirstrikað',bold:'Feit skrift',italic:'Skráskrift',selectAll:'Markera alt',removeFormat:'Strika sniðgeving',strike:'Yvirstrikað',subscript:'Lækkað skrift',superscript:'Hækkað skrift',horizontalrule:'Ger vatnrætta linju',pagebreak:'Ger síðuskift',unlink:'Strika tilknýti',undo:'Angra',redo:'Vend aftur',common:{browseServer:'Ambætarakagi',url:'URL',protocol:'Protokoll',upload:'Send til ambætaran',uploadSubmit:'Send til ambætaran',image:'Myndir',flash:'Flash',form:'Formur',checkbox:'Flugubein',radio:'Radioknøttur',textField:'Tekstteigur',textarea:'Tekstumráði',hiddenField:'Fjaldur teigur',button:'Knøttur',select:'Valskrá',imageButton:'Myndaknøttur',notSet:'<ikki sett>',id:'Id',name:'Navn',langDir:'Tekstkós',langDirLtr:'Frá vinstru til høgru (LTR)',langDirRtl:'Frá høgru til vinstru (RTL)',langCode:'Málkoda',longDescr:'Víðkað URL frágreiðing',cssClass:'Typografi klassar',advisoryTitle:'Vegleiðandi heiti',cssStyle:'Typografi',ok:'Góðkent',cancel:'Avlýst',generalTab:'Generelt',advancedTab:'Fjølbroytt',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Set inn sertekn',title:'Vel sertekn'},link:{toolbar:'Ger/broyt tilknýti',menu:'Broyt tilknýti',title:'Tilknýti',info:'Tilknýtis upplýsingar',target:'Mál',upload:'Send til ambætaran',advanced:'Fjølbroytt',type:'Tilknýtisslag',toAnchor:'Tilknýti til marknastein í tekstinum',toEmail:'Teldupostur',target:'Mál',targetNotSet:'<ikki sett>',targetFrame:'<ramma>',targetPopup:'<popup vindeyga>',targetNew:'Nýtt vindeyga (_blank)',targetTop:'Alt vindeygað (_top)',targetSelf:'Sama vindeygað (_self)',targetParent:'Upphavliga vindeygað (_parent)',targetFrameName:'Vís navn vindeygans',targetPopupName:'Popup vindeygans navn',popupFeatures:'Popup vindeygans víðkaðu eginleikar',popupResizable:'Resizable',popupStatusBar:'Støðufrágreiðingarbjálki',popupLocationBar:'Adressulinja',popupToolbar:'Amboðsbjálki',popupMenuBar:'Skrábjálki',popupFullScreen:'Fullur skermur (IE)',popupScrollBars:'Rullibjálki',popupDependent:'Bundið (Netscape)',popupWidth:'Breidd',popupLeft:'Frástøða frá vinstru',popupHeight:'Hædd',popupTop:'Frástøða frá íerva',id:'Id',langDir:'Tekstkós',langDirNotSet:'<ikki sett>',langDirLTR:'Frá vinstru til høgru (LTR)',langDirRTL:'Frá høgru til vinstru (RTL)',acccessKey:'Snarvegisknappur',name:'Navn',langCode:'Tekstkós',tabIndex:'Inntriv indeks',advisoryTitle:'Vegleiðandi heiti',advisoryContentType:'Vegleiðandi innihaldsslag',cssClasses:'Typografi klassar',charset:'Atknýtt teknsett',styles:'Typografi',selectAnchor:'Vel ein marknastein',anchorName:'Eftir navni á marknasteini',anchorId:'Eftir element Id',emailAddress:'Teldupost-adressa',emailSubject:'Evni',emailBody:'Breyðtekstur',noAnchors:'(Eingir marknasteinar eru í hesum dokumentið)',noUrl:'Vinarliga skriva tilknýti (URL)',noEmail:'Vinarliga skriva teldupost-adressu'},anchor:{toolbar:'Ger/broyt marknastein',menu:'Eginleikar fyri marknastein',title:'Eginleikar fyri marknastein',name:'Heiti marknasteinsins',errorName:'Vinarliga rita marknasteinsins heiti'},findAndReplace:{title:'Finn og broyt',find:'Leita',replace:'Yvirskriva',findWhat:'Finn:',replaceWith:'Yvirskriva við:',notFoundMsg:'Leititeksturin varð ikki funnin',matchCase:'Munur á stórum og smáðum bókstavum',matchWord:'Bert heil orð',matchCyclic:'Match cyclic',replaceAll:'Yvirskriva alt',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabell',title:'Eginleikar fyri tabell',menu:'Eginleikar fyri tabell',deleteTable:'Strika tabell',rows:'Røðir',columns:'Kolonnur',border:'Bordabreidd',align:'Justering',alignNotSet:'<Einki valt>',alignLeft:'Vinstrasett',alignCenter:'Miðsett',alignRight:'Høgrasett',width:'Breidd',widthPx:'pixels',widthPc:'prosent',height:'Hædd',cellSpace:'Fjarstøða millum meskar',cellPad:'Meskubreddi',caption:'Tabellfrágreiðing',summary:'Samandráttur',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Meski',insertBefore:'Set meska inn áðrenn',insertAfter:'Set meska inn aftaná',deleteCell:'Strika meskar',merge:'Flætta meskar',mergeRight:'Flætta meskar til høgru',mergeDown:'Flætta saman',splitHorizontal:'Kloyv meska vatnrætt',splitVertical:'Kloyv meska loddrætt',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Rað',insertBefore:'Set rað inn áðrenn',insertAfter:'Set rað inn aftaná',deleteRow:'Strika røðir'},column:{menu:'Kolonna',insertBefore:'Set kolonnu inn áðrenn',insertAfter:'Set kolonnu inn aftaná',deleteColumn:'Strika kolonnur'}},button:{title:'Eginleikar fyri knøtt',text:'Tekstur',type:'Slag',typeBtn:'Knøttur',typeSbm:'Send',typeRst:'Nullstilla'},checkboxAndRadio:{checkboxTitle:'Eginleikar fyri flugubein',radioTitle:'Eginleikar fyri radioknøtt',value:'Virði',selected:'Valt'},form:{title:'Eginleikar fyri Form',menu:'Eginleikar fyri Form',action:'Hending',method:'Háttur',encoding:'Encoding',target:'Mál',targetNotSet:'<ikki sett>',targetNew:'Nýtt vindeyga (_blank)',targetTop:'Alt vindeygað (_top)',targetSelf:'Sama vindeygað (_self)',targetParent:'Upphavliga vindeygað (_parent)'},select:{title:'Eginleikar fyri valskrá',selectInfo:'Upplýsingar',opAvail:'Tøkir møguleikar',value:'Virði',size:'Stødd',lines:'Linjur',chkMulti:'Loyv fleiri valmøguleikum samstundis',opText:'Tekstur',opValue:'Virði',btnAdd:'Legg afturat',btnModify:'Broyt',btnUp:'Upp',btnDown:'Niður',btnSetValue:'Set sum valt virði',btnDelete:'Strika'},textarea:{title:'Eginleikar fyri tekstumráði',cols:'kolonnur',rows:'røðir'},textfield:{title:'Eginleikar fyri tekstteig',name:'Navn',value:'Virði',charWidth:'Breidd (sjónlig tekn)',maxChars:'Mest loyvdu tekn',type:'Slag',typeText:'Tekstur',typePass:'Loyniorð'},hidden:{title:'Eginleikar fyri fjaldan teig',name:'Navn',value:'Virði'},image:{title:'Myndaeginleikar',titleButton:'Eginleikar fyri myndaknøtt',menu:'Myndaeginleikar',infoTab:'Myndaupplýsingar',btnUpload:'Send til ambætaran',url:'URL',upload:'Send',alt:'Alternativur tekstur',width:'Breidd',height:'Hædd',lockRatio:'Læs lutfallið',resetSize:'Upprunastødd',border:'Bordi',hSpace:'Høgri breddi',vSpace:'Vinstri breddi',align:'Justering',alignLeft:'Vinstra',alignAbsBottom:'Abs botnur',alignAbsMiddle:'Abs miðja',alignBaseline:'Basislinja',alignBottom:'Botnur',alignMiddle:'Miðja',alignRight:'Høgra',alignTextTop:'Tekst toppur',alignTop:'Ovast',preview:'Frumsýning',alertUrl:'Rita slóðina til myndina',linkTab:'Tilknýti',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash eginleikar',propertiesTab:'Properties',title:'Flash eginleikar',chkPlay:'Avspælingin byrjar sjálv',chkLoop:'Endurspæl',chkMenu:'Ger Flash skrá virkna',chkFull:'Allow Fullscreen',scale:'Skalering',scaleAll:'Vís alt',scaleNoBorder:'Eingin bordi',scaleFit:'Neyv skalering',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Justering',alignLeft:'Vinstra',alignAbsBottom:'Abs botnur',alignAbsMiddle:'Abs miðja',alignBaseline:'Basislinja',alignBottom:'Botnur',alignMiddle:'Miðja',alignRight:'Høgra',alignTextTop:'Tekst toppur',alignTop:'Ovast',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Bakgrundslitur',width:'Breidd',height:'Hædd',hSpace:'Høgri breddi',vSpace:'Vinstri breddi',validateSrc:'Vinarliga skriva tilknýti (URL)',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Kanna stavseting',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Finst ikki í orðabókini',changeTo:'Broyt til',btnIgnore:'Forfjóna',btnIgnoreAll:'Forfjóna alt',btnReplace:'Yvirskriva',btnReplaceAll:'Yvirskriva alt',btnUndo:'Angra',noSuggestions:'- Einki uppskot -',progress:'Rættstavarin arbeiðir...',noMispell:'Rættstavarain liðugur: Eingin feilur funnin',noChanges:'Rættstavarain liðugur: Einki orð varð broytt',oneChange:'Rættstavarain liðugur: Eitt orð er broytt',manyChanges:'Rættstavarain liðugur: %1 orð broytt',ieSpellDownload:'Rættstavarin er ikki tøkur í tekstviðgeranum. Vilt tú heinta hann nú?'},smiley:{toolbar:'Smiley',title:'Vel Smiley'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Talmerktur listi',bulletedlist:'Punktmerktur listi',indent:'Økja reglubrotarinntriv',outdent:'Minka reglubrotarinntriv',justify:{left:'Vinstrasett',center:'Miðsett',right:'Høgrasett',block:'Javnir tekstkantar'},blockquote:'Blockquote',clipboard:{title:'Innrita',cutError:'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (CTRL+X).',copyError:'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (CTRL+C).',pasteMsg:'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (<strong>CTRL+V</strong>) og klikk á <strong>Góðtak</strong>.',securityMsg:'Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.'},pastefromword:{toolbar:'Innrita frá Word',title:'Innrita frá Word',advice:'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (<strong>CTRL+V</strong>) og klikk á <strong>Góðtak</strong>.',ignoreFontFace:'Forfjóna Font definitiónirnar',removeStyle:'Strika typografi definitiónir'},pasteText:{button:'Innrita som reinan tekst',title:'Innrita som reinan tekst'},templates:{button:'Skabelónir',title:'Innihaldsskabelónir',insertOption:'Yvirskriva núverandi innihald',selectPromptMsg:'Vinarliga vel ta skabelón, ið skal opnast í tekstviðgeranum<br>(Hetta yvirskrivar núverandi innihald):',emptyListMsg:'(Ongar skabelónir tøkar)'},showBlocks:'Vís blokkar',stylesCombo:{label:'Typografi',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Skriftsnið',voiceLabel:'Format',panelTitle:'Skriftsnið',panelVoiceLabel:'Select a paragraph format',tag_p:'Vanligt',tag_pre:'Sniðgivið',tag_address:'Adressa',tag_h1:'Yvirskrift 1',tag_h2:'Yvirskrift 2',tag_h3:'Yvirskrift 3',tag_h4:'Yvirskrift 4',tag_h5:'Yvirskrift 5',tag_h6:'Yvirskrift 6',tag_div:'Normal (DIV)'},font:{label:'Skrift',voiceLabel:'Font',panelTitle:'Skrift',panelVoiceLabel:'Select a font'},fontSize:{label:'Skriftstødd',voiceLabel:'Font Size',panelTitle:'Skriftstødd',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Tekstlitur',bgColorTitle:'Bakgrundslitur',auto:'Automatiskt',more:'Fleiri litir...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/bs.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/bs.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/bs.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.bs={dir:'ltr',editorTitle:'Rich text editor, %1',source:'HTML kôd',newPage:'Novi dokument',save:'Snimi',preview:'Prikaži',cut:'Izreži',copy:'Kopiraj',paste:'Zalijepi',print:'Štampaj',underline:'Podvuci',bold:'Boldiraj',italic:'Ukosi',selectAll:'Selektuj sve',removeFormat:'Poništi format',strike:'Precrtaj',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Ubaci horizontalnu liniju',pagebreak:'Insert Page Break for Printing',unlink:'Izbriši link',undo:'Vrati',redo:'Ponovi',common:{browseServer:'Browse Server',url:'URL',protocol:'Protokol',upload:'Šalji',uploadSubmit:'Šalji na server',image:'Slika',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<nije podešeno>',id:'Id',name:'Naziv',langDir:'Smjer pisanja',langDirLtr:'S lijeva na desno (LTR)',langDirRtl:'S desna na lijevo (RTL)',langCode:'Jezièni kôd',longDescr:'Dugaèki opis URL-a',cssClass:'Klase CSS stilova',advisoryTitle:'Advisory title',cssStyle:'Stil',ok:'OK',cancel:'Odustani',generalTab:'General',advancedTab:'Naprednije',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Ubaci specijalni karater',title:'Izaberi specijalni karakter'},link:{toolbar:'Ubaci/Izmjeni link',menu:'Izmjeni link',title:'Link',info:'Link info',target:'Prozor',upload:'Šalji',advanced:'Naprednije',type:'Tip linka',toAnchor:'Sidro na ovoj stranici',toEmail:'E-Mail',target:'Prozor',targetNotSet:'<nije podešeno>',targetFrame:'<frejm>',targetPopup:'<popup prozor>',targetNew:'Novi prozor (_blank)',targetTop:'Najgornji prozor (_top)',targetSelf:'Isti prozor (_self)',targetParent:'Glavni prozor (_parent)',targetFrameName:'Target Frame Name',targetPopupName:'Naziv popup prozora',popupFeatures:'Moguænosti popup prozora',popupResizable:'Resizable',popupStatusBar:'Statusna traka',popupLocationBar:'Traka za lokaciju',popupToolbar:'Traka sa alatima',popupMenuBar:'Izborna traka',popupFullScreen:'Cijeli ekran (IE)',popupScrollBars:'Scroll traka',popupDependent:'Ovisno (Netscape)',popupWidth:'Širina',popupLeft:'Lijeva pozicija',popupHeight:'Visina',popupTop:'Gornja pozicija',id:'Id',langDir:'Smjer pisanja',langDirNotSet:'<nije podešeno>',langDirLTR:'S lijeva na desno (LTR)',langDirRTL:'S desna na lijevo (RTL)',acccessKey:'Pristupna tipka',name:'Naziv',langCode:'Smjer pisanja',tabIndex:'Tab indeks',advisoryTitle:'Advisory title',advisoryContentType:'Advisory vrsta sadržaja',cssClasses:'Klase CSS stilova',charset:'Linked Resource Charset',styles:'Stil',selectAnchor:'Izaberi sidro',anchorName:'Po nazivu sidra',anchorId:'Po Id-u elementa',emailAddress:'E-Mail Adresa',emailSubject:'Subjekt poruke',emailBody:'Poruka',noAnchors:'(Nema dostupnih sidra na stranici)',noUrl:'Molimo ukucajte URL link',noEmail:'Molimo ukucajte e-mail adresu'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name'},findAndReplace:{title:'Find and Replace',find:'Naði',replace:'Zamjeni',findWhat:'Naði šta:',replaceWith:'Zamjeni sa:',notFoundMsg:'Traženi tekst nije pronaðen.',matchCase:'Uporeðuj velika/mala slova',matchWord:'Uporeðuj samo cijelu rijeè',matchCyclic:'Match cyclic',replaceAll:'Zamjeni sve',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabela',title:'Svojstva tabele',menu:'Svojstva tabele',deleteTable:'Delete Table',rows:'Redova',columns:'Kolona',border:'Okvir',align:'Poravnanje',alignNotSet:'<Nije podešeno>',alignLeft:'Lijevo',alignCenter:'Centar',alignRight:'Desno',width:'Širina',widthPx:'piksela',widthPc:'posto',height:'Visina',cellSpace:'Razmak æelija',cellPad:'Uvod æelija',caption:'Naslov',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Briši æelije',merge:'Spoji æelije',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Briši redove'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Briši kolone'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding',target:'Prozor',targetNotSet:'<nije podešeno>',targetNew:'Novi prozor (_blank)',targetTop:'Najgornji prozor (_top)',targetSelf:'Isti prozor (_self)',targetParent:'Glavni prozor (_parent)'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Svojstva slike',titleButton:'Image Button Properties',menu:'Svojstva slike',infoTab:'Info slike',btnUpload:'Šalji na server',url:'URL',upload:'Šalji',alt:'Tekst na slici',width:'Širina',height:'Visina',lockRatio:'Zakljuèaj odnos',resetSize:'Resetuj dimenzije',border:'Okvir',hSpace:'HSpace',vSpace:'VSpace',align:'Poravnanje',alignLeft:'Lijevo',alignAbsBottom:'Abs dole',alignAbsMiddle:'Abs sredina',alignBaseline:'Bazno',alignBottom:'Dno',alignMiddle:'Sredina',alignRight:'Desno',alignTextTop:'Vrh teksta',alignTop:'Vrh',preview:'Prikaz',alertUrl:'Molimo ukucajte URL od slike.',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Poravnanje',alignLeft:'Lijevo',alignAbsBottom:'Abs dole',alignAbsMiddle:'Abs sredina',alignBaseline:'Bazno',alignBottom:'Dno',alignMiddle:'Sredina',alignRight:'Desno',alignTextTop:'Vrh teksta',alignTop:'Vrh',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Boja pozadine',width:'Širina',height:'Visina',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Molimo ukucajte URL link',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smješko',title:'Ubaci smješka'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Numerisana lista',bulletedlist:'Lista',indent:'Poveæaj uvod',outdent:'Smanji uvod',justify:{left:'Lijevo poravnanje',center:'Centralno poravnanje',right:'Desno poravnanje',block:'Puno poravnanje'},blockquote:'Blockquote',clipboard:{title:'Zalijepi',cutError:'Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl+X).',copyError:'Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl+C).',pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Zalijepi iz Word-a',title:'Zalijepi iz Word-a',advice:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',ignoreFontFace:'Ignore Font Face definitions',removeStyle:'Remove Styles definitions'},pasteText:{button:'Zalijepi kao obièan tekst',title:'Zalijepi kao obièan tekst'},templates:{button:'Templates',title:'Content Templates',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stil',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',voiceLabel:'Format',panelTitle:'Format',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font',panelVoiceLabel:'Select a font'},fontSize:{label:'Velièina',voiceLabel:'Font Size',panelTitle:'Velièina',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Boja teksta',bgColorTitle:'Boja pozadine',auto:'Automatska',more:'Više boja...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/_languages.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/_languages.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/_languages.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+var CKEDITOR_LANGS=(function(){var b={af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',gu:'Gujarati',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',is:'Icelandic',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},c=[];for(var d in b)c.push({code:d,name:b[d]});c.sort(function(e,f){return e.name<f.name?-1:1;});return c;})();
Index: /trunk/filemanager/tp/ckeditor/lang/cs.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/cs.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/cs.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.cs={dir:'ltr',editorTitle:'Editor formátovaného textu, %1',source:'Zdroj',newPage:'Nová stránka',save:'Uložit',preview:'Náhled',cut:'Vyjmout',copy:'Kopírovat',paste:'Vložit',print:'Tisk',underline:'Podtržené',bold:'Tučné',italic:'Kurzíva',selectAll:'Vybrat vše',removeFormat:'Odstranit formátování',strike:'Přeškrtnuté',subscript:'Dolní index',superscript:'Horní index',horizontalrule:'Vložit vodorovnou linku',pagebreak:'Vložit konec stránky',unlink:'Odstranit odkaz',undo:'Zpět',redo:'Znovu',common:{browseServer:'Vybrat na serveru',url:'URL',protocol:'Protokol',upload:'Odeslat',uploadSubmit:'Odeslat na server',image:'Obrázek',flash:'Flash',form:'Formulář',checkbox:'Zaškrtávací políčko',radio:'Přepínač',textField:'Textové pole',textarea:'Textová oblast',hiddenField:'Skryté pole',button:'Tlačítko',select:'Seznam',imageButton:'Obrázkové tlačítko',notSet:'<nenastaveno>',id:'Id',name:'Jméno',langDir:'Orientace jazyka',langDirLtr:'Zleva do prava (LTR)',langDirRtl:'Zprava do leva (RTL)',langCode:'Kód jazyka',longDescr:'Dlouhý popis URL',cssClass:'Třída stylu',advisoryTitle:'Pomocný titulek',cssStyle:'Styl',ok:'OK',cancel:'Storno',generalTab:'Obecné',advancedTab:'Rozšířené',validateNumberFailed:'Zadaná hodnota není číselná.',confirmNewPage:'Jakékoliv neuložené změny obsahu budou ztraceny. Skutečně chete otevrít novou stránku?',confirmCancel:'Některá z nastavení byla změněna. Skutečně chete zavřít dialogové okno?',unavailable:'%1<span class="cke_accessibility">, nedostupné</span>'},specialChar:{toolbar:'Vložit speciální znaky',title:'Výběr speciálního znaku'},link:{toolbar:'Vložit/změnit odkaz',menu:'Změnit odkaz',title:'Odkaz',info:'Informace o odkazu',target:'Cíl',upload:'Odeslat',advanced:'Rozšířené',type:'Typ odkazu',toAnchor:'Kotva v této stránce',toEmail:'E-Mail',target:'Cíl',targetNotSet:'<nenastaveno>',targetFrame:'<rámec>',targetPopup:'<vyskakovací okno>',targetNew:'Nové okno (_blank)',targetTop:'Hlavní okno (_top)',targetSelf:'Stejné okno (_self)',targetParent:'Rodičovské okno (_parent)',targetFrameName:'Název cílového rámu',targetPopupName:'Název vyskakovacího okna',popupFeatures:'Vlastnosti vyskakovacího okna',popupResizable:'Umožňující měnit velikost',popupStatusBar:'Stavový řádek',popupLocationBar:'Panel umístění',popupToolbar:'Panel nástrojů',popupMenuBar:'Panel nabídky',popupFullScreen:'Celá obrazovka (IE)',popupScrollBars:'Posuvníky',popupDependent:'Závislost (Netscape)',popupWidth:'Šířka',popupLeft:'Levý okraj',popupHeight:'Výška',popupTop:'Horní okraj',id:'Id',langDir:'Orientace jazyka',langDirNotSet:'<nenastaveno>',langDirLTR:'Zleva do prava (LTR)',langDirRTL:'Zprava do leva (RTL)',acccessKey:'Přístupový klíč',name:'Jméno',langCode:'Orientace jazyka',tabIndex:'Pořadí prvku',advisoryTitle:'Pomocný titulek',advisoryContentType:'Pomocný typ obsahu',cssClasses:'Třída stylu',charset:'Přiřazená znaková sada',styles:'Styl',selectAnchor:'Vybrat kotvu',anchorName:'Podle jména kotvy',anchorId:'Podle Id objektu',emailAddress:'E-Mailová adresa',emailSubject:'Předmět zprávy',emailBody:'Tělo zprávy',noAnchors:'(Ve stránce není definována žádná kotva!)',noUrl:'Zadejte prosím URL odkazu',noEmail:'Zadejte prosím e-mailovou adresu'},anchor:{toolbar:'Vložít/změnit záložku',menu:'Vlastnosti záložky',title:'Vlastnosti záložky',name:'Název záložky',errorName:'Zadejte prosím název záložky'},findAndReplace:{title:'Najít a nahradit',find:'Hledat',replace:'Nahradit',findWhat:'Co hledat:',replaceWith:'Čím nahradit:',notFoundMsg:'Hledaný text nebyl nalezen.',matchCase:'Rozlišovat velikost písma',matchWord:'Pouze celá slova',matchCyclic:'Procházet opakovaně',replaceAll:'Nahradit vše',replaceSuccessMsg:'%1 nahrazení.'},table:{toolbar:'Tabulka',title:'Vlastnosti tabulky',menu:'Vlastnosti tabulky',deleteTable:'Smazat tabulku',rows:'Řádky',columns:'Sloupce',border:'Ohraničení',align:'Zarovnání',alignNotSet:'<nenastaveno>',alignLeft:'Vlevo',alignCenter:'Na střed',alignRight:'Vpravo',width:'Šířka',widthPx:'bodů',widthPc:'procent',height:'Výška',cellSpace:'Vzdálenost buněk',cellPad:'Odsazení obsahu v buňce',caption:'Popis',summary:'Souhrn',headers:'Záhlaví',headersNone:'Žádné',headersColumn:'První sloupec',headersRow:'První řádek',headersBoth:'Obojí',invalidRows:'Počet řádků musí být číslo větší než 0.',invalidCols:'Počet sloupců musí být číslo větší než 0.',invalidBorder:'Zdaná velikost okraje musí být číselná.',invalidWidth:'Zadaná šířka tabulky musí být číselná.',invalidHeight:'zadaná výška tabulky musí být číselná.',invalidCellSpacing:'Zadaná vzdálenost buněk musí být číselná.',invalidCellPadding:'Zadané odsazení obsahu v buňce musí být číselné.',cell:{menu:'Buňka',insertBefore:'Vložit buňku před',insertAfter:'Vložit buňku za',deleteCell:'Smazat buňky',merge:'Sloučit buňky',mergeRight:'Sloučit doprava',mergeDown:'Sloučit dolů',splitHorizontal:'Rozdělit buňky vodorovně',splitVertical:'Rozdělit buňky svisle',title:'Vlastnosti buňky',cellType:'Typ buňky',rowSpan:'Spojit řádky',colSpan:'Spojit sloupce',wordWrap:'Zalamování',hAlign:'Vodorovné zarovnání',vAlign:'Svislé zarovnání',alignTop:'Nahoru',alignMiddle:'Doprostřed',alignBottom:'Dolů',alignBaseline:'Na účaří',bgColor:'Barva pozadí',borderColor:'Barva okraje',data:'Data',header:'Hlavička',yes:'Ano',no:'Ne',invalidWidth:'Zadaná šířka buňky musí být číslená.',invalidHeight:'Zadaná výška buňky musí být číslená.',invalidRowSpan:'Zadaný počet sloučených řádků musí být celé číslo.',invalidColSpan:'Zadaný počet sloučených sloupců musí být celé číslo.',chooseColor:'Výběr'},row:{menu:'Řádek',insertBefore:'Vložit řádek před',insertAfter:'Vložit řádek za',deleteRow:'Smazat řádky'},column:{menu:'Sloupec',insertBefore:'Vložit sloupec před',insertAfter:'Vložit sloupec za',deleteColumn:'Smazat sloupec'}},button:{title:'Vlastnosti tlačítka',text:'Popisek',type:'Typ',typeBtn:'Tlačítko',typeSbm:'Odeslat',typeRst:'Obnovit'},checkboxAndRadio:{checkboxTitle:'Vlastnosti zaškrtávacího políčka',radioTitle:'Vlastnosti přepínače',value:'Hodnota',selected:'Zaškrtnuto'},form:{title:'Vlastnosti formuláře',menu:'Vlastnosti formuláře',action:'Akce',method:'Metoda',encoding:'Kódování',target:'Cíl',targetNotSet:'<nenastaveno>',targetNew:'Nové okno (_blank)',targetTop:'Hlavní okno (_top)',targetSelf:'Stejné okno (_self)',targetParent:'Rodičovské okno (_parent)'},select:{title:'Vlastnosti seznamu',selectInfo:'Info',opAvail:'Dostupná nastavení',value:'Hodnota',size:'Velikost',lines:'Řádků',chkMulti:'Povolit mnohonásobné výběry',opText:'Text',opValue:'Hodnota',btnAdd:'Přidat',btnModify:'Změnit',btnUp:'Nahoru',btnDown:'Dolů',btnSetValue:'Nastavit jako vybranou hodnotu',btnDelete:'Smazat'},textarea:{title:'Vlastnosti textové oblasti',cols:'Sloupců',rows:'Řádků'},textfield:{title:'Vlastnosti textového pole',name:'Název',value:'Hodnota',charWidth:'Šířka ve znacích',maxChars:'Maximální počet znaků',type:'Typ',typeText:'Text',typePass:'Heslo'},hidden:{title:'Vlastnosti skrytého pole',name:'Název',value:'Hodnota'},image:{title:'Vlastnosti obrázku',titleButton:'Vlastností obrázkového tlačítka',menu:'Vlastnosti obrázku',infoTab:'Informace o obrázku',btnUpload:'Odeslat na server',url:'URL',upload:'Odeslat',alt:'Alternativní text',width:'Šířka',height:'Výška',lockRatio:'Zámek',resetSize:'Původní velikost',border:'Okraje',hSpace:'H-mezera',vSpace:'V-mezera',align:'Zarovnání',alignLeft:'Vlevo',alignAbsBottom:'Zcela dolů',alignAbsMiddle:'Doprostřed',alignBaseline:'Na účaří',alignBottom:'Dolů',alignMiddle:'Na střed',alignRight:'Vpravo',alignTextTop:'Na horní okraj textu',alignTop:'Nahoru',preview:'Náhled',alertUrl:'Zadejte prosím URL obrázku',linkTab:'Odkaz',button2Img:'Skutečně chcete převést zvolené obrázkové tlačítko na obyčejný obrázek?',img2Button:'Skutečně chcete převést zvolený obrázek na obrázkové tlačítko?',urlMissing:'Zadané URL zdroje obrázku nebylo nalezeno.'},flash:{properties:'Vlastnosti Flashe',propertiesTab:'Vlastnosti',title:'Vlastnosti Flashe',chkPlay:'Automatické spuštění',chkLoop:'Opakování',chkMenu:'Nabídka Flash',chkFull:'Povolit celoobrazovkový režim',scale:'Zobrazit',scaleAll:'Zobrazit vše',scaleNoBorder:'Bez okraje',scaleFit:'Přizpůsobit',access:'Přístup ke skriptu',accessAlways:'Vždy',accessSameDomain:'Ve stejné doméně',accessNever:'Nikdy',align:'Zarovnání',alignLeft:'Vlevo',alignAbsBottom:'Zcela dolů',alignAbsMiddle:'Doprostřed',alignBaseline:'Na účaří',alignBottom:'Dolů',alignMiddle:'Na střed',alignRight:'Vpravo',alignTextTop:'Na horní okraj textu',alignTop:'Nahoru',quality:'Kvalita',qualityBest:'Nejlepší',qualityHigh:'Vysoká',qualityAutoHigh:'Vysoká - auto',qualityMedium:'Střední',qualityAutoLow:'Nízká - auto',qualityLow:'Nejnižší',windowModeWindow:'Okno',windowModeOpaque:'Neprůhledné',windowModeTransparent:'Průhledné',windowMode:'Režim okna',flashvars:'Proměnné pro Flash',bgcolor:'Barva pozadí',width:'Šířka',height:'Výška',hSpace:'H-mezera',vSpace:'V-mezera',validateSrc:'Zadejte prosím URL odkazu',validateWidth:'Zadaná šířka musí být číslo.',validateHeight:'Zadaná výška musí být číslo.',validateHSpace:'Zadaná H-mezera musí být číslo.',validateVSpace:'Zadaná V-mezera musí být číslo.'},spellCheck:{toolbar:'Zkontrolovat pravopis',title:'Kontrola pravopisu',notAvailable:'Omlouváme se, ale služba nyní není dostupná.',errorLoading:'Chyba nahrávání služby aplikace z: %s.',notInDic:'Není ve slovníku',changeTo:'Změnit na',btnIgnore:'Přeskočit',btnIgnoreAll:'Přeskakovat vše',btnReplace:'Zaměnit',btnReplaceAll:'Zaměňovat vše',btnUndo:'Zpět',noSuggestions:'- žádné návrhy -',progress:'Probíhá kontrola pravopisu...',noMispell:'Kontrola pravopisu dokončena: Žádné pravopisné chyby nenalezeny',noChanges:'Kontrola pravopisu dokončena: Beze změn',oneChange:'Kontrola pravopisu dokončena: Jedno slovo změněno',manyChanges:'Kontrola pravopisu dokončena: %1 slov změněno',ieSpellDownload:'Kontrola pravopisu není nainstalována. Chcete ji nyní stáhnout?'},smiley:{toolbar:'Smajlíky',title:'Vkládání smajlíků'},elementsPath:{eleTitle:'%1 objekt'},numberedlist:'Číslování',bulletedlist:'Odrážky',indent:'Zvětšit odsazení',outdent:'Zmenšit odsazení',justify:{left:'Zarovnat vlevo',center:'Zarovnat na střed',right:'Zarovnat vpravo',block:'Zarovnat do bloku'},blockquote:'Citace',clipboard:{title:'Vložit',cutError:'Bezpečnostní nastavení Vašeho prohlížeče nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjměte zvolený text do schránky pomocí klávesnice (Ctrl+X).',copyError:'Bezpečnostní nastavení Vašeho prohlížeče nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl+C).',pasteMsg:'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl+V</STRONG>) a stiskněte <STRONG>OK</STRONG>.',securityMsg:'Z důvodů nastavení bezpečnosti Vašeho prohlížeče nemůže editor přistupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.'},pastefromword:{toolbar:'Vložit z Wordu',title:'Vložit z Wordu',advice:'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl+V</STRONG>) a stiskněte <STRONG>OK</STRONG>.',ignoreFontFace:'Ignorovat písmo',removeStyle:'Odstranit styly'},pasteText:{button:'Vložit jako čistý text',title:'Vložit jako čistý text'},templates:{button:'Šablony',title:'Šablony obsahu',insertOption:'Nahradit aktuální obsah',selectPromptMsg:'Prosím zvolte šablonu pro otevření v editoru<br>(aktuální obsah editoru bude ztracen):',emptyListMsg:'(Není definována žádná šablona)'},showBlocks:'Ukázat bloky',stylesCombo:{label:'Styl',voiceLabel:'Styly',panelVoiceLabel:'Výběr stylu',panelTitle1:'Blokové styly',panelTitle2:'Řádkové styly',panelTitle3:'Objektové styly'},format:{label:'Formát',voiceLabel:'Formátování',panelTitle:'Formát',panelVoiceLabel:'Volba formátu odstavce',tag_p:'Normální',tag_pre:'Naformátováno',tag_address:'Adresa',tag_h1:'Nadpis 1',tag_h2:'Nadpis 2',tag_h3:'Nadpis 3',tag_h4:'Nadpis 4',tag_h5:'Nadpis 5',tag_h6:'Nadpis 6',tag_div:'Normální (DIV)'},font:{label:'Písmo',voiceLabel:'Písmo',panelTitle:'Písmo',panelVoiceLabel:'Volba písma'},fontSize:{label:'Velikost',voiceLabel:'Velikost písma',panelTitle:'Velikost',panelVoiceLabel:'Volba velikosti písma'},colorButton:{textColorTitle:'Barva textu',bgColorTitle:'Barva pozadí',auto:'Automaticky',more:'Více barev...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Kontrola pravopisu během psaní (SCAYT)',enable:'Zapnout SCAYT',disable:'Vypnout SCAYT',about:'O aplikaci SCAYT',toggle:'Vypínač SCAYT',options:'Nastavení',langs:'Jazyky',moreSuggestions:'Více návrhů',ignore:'Přeskočit',ignoreAll:'Přeskočit vše',addWord:'Přidat slovo',emptyDic:'Název slovníku nesmí být prázdný.',optionsTab:'Nastavení',languagesTab:'Jazyky',dictionariesTab:'Slovníky',aboutTab:'O aplikaci'},about:{title:'O aplikaci CKEditor',dlgTitle:'O aplikaci CKEditor',moreInfo:'Pro informace o lincenci navštivte naši webovou stránku:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximalizovat',minimize:'Minimalizovat',fakeobjects:{anchor:'Záložka',flash:'Flash animace',div:'Zalomení stránky',unknown:'Neznámý objekt'},resize:'Uchopit pro změnu velikosti',colordialog:{title:'Výběr barvy',highlight:'Zvýraznit',selected:'Vybráno',clear:'Vyčistit'}};
Index: /trunk/filemanager/tp/ckeditor/lang/en-au.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/en-au.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/en-au.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['en-au']={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character'},link:{toolbar:'Link',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toAnchor:'Link to anchor in the text',toEmail:'E-mail',target:'Target',targetNotSet:'<not set>',targetFrame:'<frame>',targetPopup:'<popup window>',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupWidth:'Width',popupLeft:'Left Position',popupHeight:'Height',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirNotSet:'<not set>',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',align:'Alignment',alignNotSet:'<Not set>',alignLeft:'Left',alignCenter:'Centre',alignRight:'Right',width:'Width',widthPx:'pixels',widthPc:'percent',height:'Height',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding',target:'Target',targetNotSet:'<not set>',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',url:'URL',upload:'Upload',alt:'Alternative Text',width:'Width',height:'Height',lockRatio:'Lock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',align:'Align',alignLeft:'Left',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Right',alignTextTop:'Text Top',alignTop:'Top',preview:'Preview',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Align',alignLeft:'Left',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Right',alignTextTop:'Text Top',alignTop:'Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background colour',width:'Width',height:'Height',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Left Justify',center:'Centre Justify',right:'Right Justify',block:'Block Justify'},blockquote:'Blockquote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Paste from Word',title:'Paste from Word',advice:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',ignoreFontFace:'Ignore Font Face definitions',removeStyle:'Remove Styles definitions'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',voiceLabel:'Format',panelTitle:'Paragraph Format',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name',panelVoiceLabel:'Select a font'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Text Colour',bgColorTitle:'Background Colour',auto:'Automatic',more:'More Colours...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/es.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/es.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/es.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.es={dir:'ltr',editorTitle:'Editor de texto enriquecido, %1',source:'Fuente HTML',newPage:'Nueva Página',save:'Guardar',preview:'Vista Previa',cut:'Cortar',copy:'Copiar',paste:'Pegar',print:'Imprimir',underline:'Subrayado',bold:'Negrita',italic:'Cursiva',selectAll:'Seleccionar Todo',removeFormat:'Eliminar Formato',strike:'Tachado',subscript:'Subíndice',superscript:'Superíndice',horizontalrule:'Insertar Línea Horizontal',pagebreak:'Insertar Salto de Página',unlink:'Eliminar Vínculo',undo:'Deshacer',redo:'Rehacer',common:{browseServer:'Ver Servidor',url:'URL',protocol:'Protocolo',upload:'Cargar',uploadSubmit:'Enviar al Servidor',image:'Imagen',flash:'Flash',form:'Formulario',checkbox:'Casilla de Verificación',radio:'Botones de Radio',textField:'Campo de Texto',textarea:'Area de Texto',hiddenField:'Campo Oculto',button:'Botón',select:'Campo de Selección',imageButton:'Botón Imagen',notSet:'<No definido>',id:'Id',name:'Nombre',langDir:'Orientación',langDirLtr:'Izquierda a Derecha (LTR)',langDirRtl:'Derecha a Izquierda (RTL)',langCode:'Cód. de idioma',longDescr:'Descripción larga URL',cssClass:'Clases de hojas de estilo',advisoryTitle:'Título',cssStyle:'Estilo',ok:'OK',cancel:'Cancelar',generalTab:'General',advancedTab:'Avanzado',validateNumberFailed:'El valor no es un número.',confirmNewPage:'Cualquier cambio que no se haya guardado se perderá. ¿Está seguro de querer crear una nueva página?',confirmCancel:'Algunas de las opciones se han cambiado. ¿Está seguro de querer cerrar el diálogo?',unavailable:'%1<span class="cke_accessibility">, no disponible</span>'},specialChar:{toolbar:'Insertar Caracter Especial',title:'Seleccione un caracter especial'},link:{toolbar:'Insertar/Editar Vínculo',menu:'Editar Vínculo',title:'Vínculo',info:'Información de Vínculo',target:'Destino',upload:'Cargar',advanced:'Avanzado',type:'Tipo de vínculo',toAnchor:'Referencia en esta página',toEmail:'E-Mail',target:'Destino',targetNotSet:'<No definido>',targetFrame:'<marco>',targetPopup:'<ventana emergente>',targetNew:'Nueva Ventana(_blank)',targetTop:'Ventana primaria (_top)',targetSelf:'Misma Ventana (_self)',targetParent:'Ventana Padre (_parent)',targetFrameName:'Nombre del Marco Destino',targetPopupName:'Nombre de Ventana Emergente',popupFeatures:'Características de Ventana Emergente',popupResizable:'Redimensionable',popupStatusBar:'Barra de Estado',popupLocationBar:'Barra de ubicación',popupToolbar:'Barra de Herramientas',popupMenuBar:'Barra de Menú',popupFullScreen:'Pantalla Completa (IE)',popupScrollBars:'Barras de desplazamiento',popupDependent:'Dependiente (Netscape)',popupWidth:'Anchura',popupLeft:'Posición Izquierda',popupHeight:'Altura',popupTop:'Posición Derecha',id:'Id',langDir:'Orientación',langDirNotSet:'<No definido>',langDirLTR:'Izquierda a Derecha (LTR)',langDirRTL:'Derecha a Izquierda (RTL)',acccessKey:'Clave de Acceso',name:'Nombre',langCode:'Orientación',tabIndex:'Indice de tabulación',advisoryTitle:'Título',advisoryContentType:'Tipo de Contenido',cssClasses:'Clases de hojas de estilo',charset:'Fuente de caracteres vinculado',styles:'Estilo',selectAnchor:'Seleccionar una referencia',anchorName:'Por Nombre de Referencia',anchorId:'Por ID de elemento',emailAddress:'Dirección de E-Mail',emailSubject:'Título del Mensaje',emailBody:'Cuerpo del Mensaje',noAnchors:'(No hay referencias disponibles en el documento)',noUrl:'Por favor tipee el vínculo URL',noEmail:'Por favor tipee la dirección de e-mail'},anchor:{toolbar:'Referencia',menu:'Propiedades de Referencia',title:'Propiedades de Referencia',name:'Nombre de la Referencia',errorName:'Por favor, complete el nombre de la Referencia'},findAndReplace:{title:'Buscar y Reemplazar',find:'Buscar',replace:'Reemplazar',findWhat:'Texto a buscar:',replaceWith:'Reemplazar con:',notFoundMsg:'El texto especificado no ha sido encontrado.',matchCase:'Coincidir may/min',matchWord:'Coincidir toda la palabra',matchCyclic:'Buscar en todo el contenido',replaceAll:'Reemplazar Todo',replaceSuccessMsg:'La expresión buscada ha sido reemplazada %1 veces.'},table:{toolbar:'Tabla',title:'Propiedades de Tabla',menu:'Propiedades de Tabla',deleteTable:'Eliminar Tabla',rows:'Filas',columns:'Columnas',border:'Tamaño de Borde',align:'Alineación',alignNotSet:'<No establecido>',alignLeft:'Izquierda',alignCenter:'Centrado',alignRight:'Derecha',width:'Anchura',widthPx:'pixeles',widthPc:'porcentaje',height:'Altura',cellSpace:'Esp. e/celdas',cellPad:'Esp. interior',caption:'Título',summary:'Síntesis',headers:'Encabezados',headersNone:'Ninguno',headersColumn:'Primera columna',headersRow:'Primera fila',headersBoth:'Ambas',invalidRows:'El número de filas debe ser un número mayor que 0.',invalidCols:'El número de columnas debe ser un número mayor que 0.',invalidBorder:'El tamaño del borde debe ser un número.',invalidWidth:'La anchura de tabla debe ser un número.',invalidHeight:'La altura de tabla debe ser un número.',invalidCellSpacing:'El espaciado entre celdas debe ser un número.',invalidCellPadding:'El espaciado interior debe ser un número.',cell:{menu:'Celda',insertBefore:'Insertar celda a la izquierda',insertAfter:'Insertar celda a la derecha',deleteCell:'Eliminar Celdas',merge:'Combinar Celdas',mergeRight:'Combinar a la derecha',mergeDown:'Combinar hacia abajo',splitHorizontal:'Dividir la celda horizontalmente',splitVertical:'Dividir la celda verticalmente',title:'Propiedades de celda',cellType:'Tipo de Celda',rowSpan:'Expandir filas',colSpan:'Expandir columnas',wordWrap:'Ajustar al contenido',hAlign:'Alineación Horizontal',vAlign:'Alineación Vertical',alignTop:'Arriba',alignMiddle:'Medio',alignBottom:'Abajo',alignBaseline:'Linea de base',bgColor:'Color de fondo',borderColor:'Color de borde',data:'Datos',header:'Encabezado',yes:'Sí',no:'No',invalidWidth:'La anchura de celda debe ser un número.',invalidHeight:'La altura de celda debe ser un número.',invalidRowSpan:'La expansión de filas debe ser un número entero.',invalidColSpan:'La expansión de columnas debe ser un número entero.',chooseColor:'Choose'},row:{menu:'Fila',insertBefore:'Insertar fila en la parte superior',insertAfter:'Insertar fila en la parte inferior',deleteRow:'Eliminar Filas'},column:{menu:'Columna',insertBefore:'Insertar columna a la izquierda',insertAfter:'Insertar columna a la derecha',deleteColumn:'Eliminar Columnas'}},button:{title:'Propiedades de Botón',text:'Texto (Valor)',type:'Tipo',typeBtn:'Boton',typeSbm:'Enviar',typeRst:'Reestablecer'},checkboxAndRadio:{checkboxTitle:'Propiedades de Casilla',radioTitle:'Propiedades de Botón de Radio',value:'Valor',selected:'Seleccionado'},form:{title:'Propiedades de Formulario',menu:'Propiedades de Formulario',action:'Acción',method:'Método',encoding:'Codificación',target:'Destino',targetNotSet:'<No definido>',targetNew:'Nueva Ventana(_blank)',targetTop:'Ventana primaria (_top)',targetSelf:'Misma Ventana (_self)',targetParent:'Ventana Padre (_parent)'},select:{title:'Propiedades de Campo de Selección',selectInfo:'Información',opAvail:'Opciones disponibles',value:'Valor',size:'Tamaño',lines:'Lineas',chkMulti:'Permitir múltiple selección',opText:'Texto',opValue:'Valor',btnAdd:'Agregar',btnModify:'Modificar',btnUp:'Subir',btnDown:'Bajar',btnSetValue:'Establecer como predeterminado',btnDelete:'Eliminar'},textarea:{title:'Propiedades de Area de Texto',cols:'Columnas',rows:'Filas'},textfield:{title:'Propiedades de Campo de Texto',name:'Nombre',value:'Valor',charWidth:'Caracteres de ancho',maxChars:'Máximo caracteres',type:'Tipo',typeText:'Texto',typePass:'Contraseña'},hidden:{title:'Propiedades de Campo Oculto',name:'Nombre',value:'Valor'},image:{title:'Propiedades de Imagen',titleButton:'Propiedades de Botón de Imagen',menu:'Propiedades de Imagen',infoTab:'Información de Imagen',btnUpload:'Enviar al Servidor',url:'URL',upload:'Cargar',alt:'Texto Alternativo',width:'Anchura',height:'Altura',lockRatio:'Proporcional',resetSize:'Tamaño Original',border:'Borde',hSpace:'Esp.Horiz',vSpace:'Esp.Vert',align:'Alineación',alignLeft:'Izquierda',alignAbsBottom:'Abs inferior',alignAbsMiddle:'Abs centro',alignBaseline:'Línea de base',alignBottom:'Pie',alignMiddle:'Centro',alignRight:'Derecha',alignTextTop:'Tope del texto',alignTop:'Tope',preview:'Vista Previa',alertUrl:'Por favor escriba la URL de la imagen',linkTab:'Vínculo',button2Img:'¿Desea convertir el botón de imagen en una simple imagen?',img2Button:'¿Desea convertir la imagen en un botón de imagen?',urlMissing:'Image source URL is missing.'},flash:{properties:'Propiedades de Flash',propertiesTab:'Propiedades',title:'Propiedades de Flash',chkPlay:'Autoejecución',chkLoop:'Repetir',chkMenu:'Activar Menú Flash',chkFull:'Permitir pantalla completa',scale:'Escala',scaleAll:'Mostrar todo',scaleNoBorder:'Sin Borde',scaleFit:'Ajustado',access:'Acceso de scripts',accessAlways:'Siempre',accessSameDomain:'Mismo dominio',accessNever:'Nunca',align:'Alineación',alignLeft:'Izquierda',alignAbsBottom:'Abs inferior',alignAbsMiddle:'Abs centro',alignBaseline:'Línea de base',alignBottom:'Pie',alignMiddle:'Centro',alignRight:'Derecha',alignTextTop:'Tope del texto',alignTop:'Tope',quality:'Calidad',qualityBest:'La mejor',qualityHigh:'Alta',qualityAutoHigh:'Auto Alta',qualityMedium:'Media',qualityAutoLow:'Auto Baja',qualityLow:'Baja',windowModeWindow:'Ventana',windowModeOpaque:'Opaco',windowModeTransparent:'Transparente',windowMode:'WindowMode',flashvars:'FlashVars',bgcolor:'Color de Fondo',width:'Anchura',height:'Altura',hSpace:'Esp.Horiz',vSpace:'Esp.Vert',validateSrc:'Por favor escriba el vínculo URL',validateWidth:'Anchura debe ser un número.',validateHeight:'Altura debe ser un número.',validateHSpace:'Esp.Horiz debe ser un número.',validateVSpace:'Esp.Vert debe ser un número.'},spellCheck:{toolbar:'Ortografía',title:'Comprobar ortografía',notAvailable:'Lo sentimos pero el servicio no está disponible.',errorLoading:'Error cargando la aplicación del servidor: %s.',notInDic:'No se encuentra en el Diccionario',changeTo:'Cambiar a',btnIgnore:'Ignorar',btnIgnoreAll:'Ignorar Todo',btnReplace:'Reemplazar',btnReplaceAll:'Reemplazar Todo',btnUndo:'Deshacer',noSuggestions:'- No hay sugerencias -',progress:'Control de Ortografía en progreso...',noMispell:'Control finalizado: no se encontraron errores',noChanges:'Control finalizado: no se ha cambiado ninguna palabra',oneChange:'Control finalizado: se ha cambiado una palabra',manyChanges:'Control finalizado: se ha cambiado %1 palabras',ieSpellDownload:'Módulo de Control de Ortografía no instalado. ¿Desea descargarlo ahora?'},smiley:{toolbar:'Emoticons',title:'Insertar un Emoticon'},elementsPath:{eleTitle:'%1 elemento'},numberedlist:'Numeración',bulletedlist:'Viñetas',indent:'Aumentar Sangría',outdent:'Disminuir Sangría',justify:{left:'Alinear a Izquierda',center:'Centrar',right:'Alinear a Derecha',block:'Justificado'},blockquote:'Cita',clipboard:{title:'Pegar',cutError:'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado. Por favor use el teclado (Ctrl+X).',copyError:'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado. Por favor use el teclado (Ctrl+C).',pasteMsg:'Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl+V</STRONG>); luego presione <STRONG>OK</STRONG>.',securityMsg:'Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles. Es necesario que lo pegue de nuevo en esta ventana.'},pastefromword:{toolbar:'Pegar desde Word',title:'Pegar desde Word',advice:'Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl+V</STRONG>); luego presione <STRONG>OK</STRONG>.',ignoreFontFace:'Ignorar definiciones de fuentes',removeStyle:'Remover definiciones de estilo'},pasteText:{button:'Pegar como Texto Plano',title:'Pegar como Texto Plano'},templates:{button:'Plantillas',title:'Contenido de Plantillas',insertOption:'Reemplazar el contenido actual',selectPromptMsg:'Por favor selecciona la plantilla a abrir en el editor<br>(el contenido actual se perderá):',emptyListMsg:'(No hay plantillas definidas)'},showBlocks:'Mostrar bloques',stylesCombo:{label:'Estilo',voiceLabel:'Estilos',panelVoiceLabel:'Elija un estilo',panelTitle1:'Estilos de párrafo',panelTitle2:'Estilos de carácter',panelTitle3:'Estilos de objeto'},format:{label:'Formato',voiceLabel:'Formato',panelTitle:'Formato',panelVoiceLabel:'Elija un formato de párrafo',tag_p:'Normal',tag_pre:'Con formato',tag_address:'Dirección',tag_h1:'Encabezado 1',tag_h2:'Encabezado 2',tag_h3:'Encabezado 3',tag_h4:'Encabezado 4',tag_h5:'Encabezado 5',tag_h6:'Encabezado 6',tag_div:'Normal (DIV)'},font:{label:'Fuente',voiceLabel:'Fuente',panelTitle:'Fuente',panelVoiceLabel:'Elija una fuente'},fontSize:{label:'Tamaño',voiceLabel:'Tamaño de fuente',panelTitle:'Tamaño',panelVoiceLabel:'Elija un tamaño de fuente'},colorButton:{textColorTitle:'Color de Texto',bgColorTitle:'Color de Fondo',auto:'Automático',more:'Más Colores...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Comprobar Ortografía Mientras Escribe',enable:'Activar COME',disable:'Desactivar COME',about:'Acerca de COME',toggle:'Cambiar COME',options:'Opciones',langs:'Idiomas',moreSuggestions:'Más sugerencias',ignore:'Ignorar',ignoreAll:'Ignorar Todas',addWord:'Añadir palabra',emptyDic:'El nombre del diccionario no puede estar en blanco.',optionsTab:'Opciones',languagesTab:'Idiomas',dictionariesTab:'Diccionarios',aboutTab:'Acerca de'},about:{title:'Acerca de CKEditor',dlgTitle:'Acerca de CKEditor',moreInfo:'Para información de licencia, por favor visite nuestro sitio web:',copy:'Copyright &copy; $1. Todos los derechos reservados.'},maximize:'Maximizar',minimize:'Minimize',fakeobjects:{anchor:'Ancla',flash:'Animación flash',div:'Salto de página',unknown:'Objeto desconocido'},resize:'Arrastre para redimensionar',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/km.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/km.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/km.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.km={dir:'ltr',editorTitle:'Rich text editor, %1',source:'កូត',newPage:'ទំព័រថ្មី',save:'រក្សាទុក',preview:'មើលសាកល្បង',cut:'កាត់យក',copy:'ចំលងយក',paste:'ចំលងដាក់',print:'បោះពុម្ភ',underline:'ដិតបន្ទាត់ពីក្រោមអក្សរ',bold:'អក្សរដិតធំ',italic:'អក្សរផ្តេក',selectAll:'ជ្រើសរើសទាំងអស់',removeFormat:'លប់ចោល ការរចនា',strike:'ដិតបន្ទាត់ពាក់កណ្តាលអក្សរ',subscript:'អក្សរតូចក្រោម',superscript:'អក្សរតូចលើ',horizontalrule:'បន្ថែមបន្ទាត់ផ្តេក',pagebreak:'បន្ថែម ការផ្តាច់ទំព័រ',unlink:'លប់ឈ្នាប់',undo:'សារឡើងវិញ',redo:'ធ្វើឡើងវិញ',common:{browseServer:'មើល',url:'URL',protocol:'ប្រូតូកូល',upload:'ទាញយក',uploadSubmit:'បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្តល់សេវា',image:'រូបភាព',flash:'Flash',form:'បែបបទ',checkbox:'ប្រអប់ជ្រើសរើស',radio:'ប៉ូតុនរង្វង់មូល',textField:'ជួរសរសេរអត្ថបទ',textarea:'តំបន់សរសេរអត្ថបទ',hiddenField:'ជួរលាក់',button:'ប៉ូតុន',select:'ជួរជ្រើសរើស',imageButton:'ប៉ូតុនរូបភាព',notSet:'<មិនមែន>',id:'Id',name:'ឈ្មោះ',langDir:'ទិសដៅភាសា',langDirLtr:'ពីឆ្វេងទៅស្តាំ(LTR)',langDirRtl:'ពីស្តាំទៅឆ្វេង(RTL)',langCode:'លេខកូតភាសា',longDescr:'អធិប្បាយ URL វែង',cssClass:'Stylesheet Classes',advisoryTitle:'ចំណងជើង ប្រឹក្សា',cssStyle:'ម៉ូត',ok:'យល់ព្រម',cancel:'មិនយល់ព្រម',generalTab:'General',advancedTab:'កំរិតខ្ពស់',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'បន្ថែមអក្សរពិសេស',title:'តូអក្សរពិសេស'},link:{toolbar:'បន្ថែម/កែប្រែ ឈ្នាប់',menu:'កែប្រែឈ្នាប់',title:'ឈ្នាប់',info:'ពត៌មានអំពីឈ្នាប់',target:'គោលដៅ',upload:'ទាញយក',advanced:'កំរិតខ្ពស់',type:'ប្រភេទឈ្នាប់',toAnchor:'យុថ្កានៅក្នុងទំព័រនេះ',toEmail:'អ៊ីមែល',target:'គោលដៅ',targetNotSet:'<មិនមែន>',targetFrame:'<ហ្វ្រេម>',targetPopup:'<វីនដូវ លោត>',targetNew:'វីនដូវថ្មី (_blank)',targetTop:'វីនដូវនៅលើគេ(_top)',targetSelf:'វីនដូវដដែល (_self)',targetParent:'វីនដូវមេ (_parent)',targetFrameName:'ឈ្មោះហ្រ្វេមដែលជាគោលដៅ',targetPopupName:'ឈ្មោះវីនដូវលោត',popupFeatures:'លក្ខណះរបស់វីនដូលលោត',popupResizable:'Resizable',popupStatusBar:'របា ពត៌មាន',popupLocationBar:'របា ទីតាំង',popupToolbar:'របា ឩបករណ៍',popupMenuBar:'របា មឺនុយ',popupFullScreen:'អេក្រុងពេញ(IE)',popupScrollBars:'របា ទាញ',popupDependent:'អាស្រ័យលើ (Netscape)',popupWidth:'ទទឹង',popupLeft:'ទីតាំងខាងឆ្វេង',popupHeight:'កំពស់',popupTop:'ទីតាំងខាងលើ',id:'Id',langDir:'ទិសដៅភាសា',langDirNotSet:'<មិនមែន>',langDirLTR:'ពីឆ្វេងទៅស្តាំ(LTR)',langDirRTL:'ពីស្តាំទៅឆ្វេង(RTL)',acccessKey:'ឃី សំរាប់ចូល',name:'ឈ្មោះ',langCode:'ទិសដៅភាសា',tabIndex:'លេខ Tab',advisoryTitle:'ចំណងជើង ប្រឹក្សា',advisoryContentType:'ប្រភេទអត្ថបទ ប្រឹក្សា',cssClasses:'Stylesheet Classes',charset:'លេខកូតអក្សររបស់ឈ្នាប់',styles:'ម៉ូត',selectAnchor:'ជ្រើសរើសយុថ្កា',anchorName:'តាមឈ្មោះរបស់យុថ្កា',anchorId:'តាម Id',emailAddress:'អ៊ីមែល',emailSubject:'ចំណងជើងអត្ថបទ',emailBody:'អត្ថបទ',noAnchors:'(No anchors available in the document)',noUrl:'សូមសរសេរ អាស័យដ្ឋាន URL',noEmail:'សូមសរសេរ អាស័យដ្ឋាន អ៊ីមែល'},anchor:{toolbar:'បន្ថែម/កែប្រែ យុថ្កា',menu:'ការកំណត់យុថ្កា',title:'ការកំណត់យុថ្កា',name:'ឈ្មោះយុទ្ធថ្កា',errorName:'សូមសរសេរ ឈ្មោះយុទ្ធថ្កា'},findAndReplace:{title:'Find and Replace',find:'ស្វែងរក',replace:'ជំនួស',findWhat:'ស្វែងរកអ្វី:',replaceWith:'ជំនួសជាមួយ:',notFoundMsg:'ពាក្យនេះ រកមិនឃើញទេ ។',matchCase:'ករណ៉ត្រូវរក',matchWord:'ត្រូវពាក្យទាំងអស់',matchCyclic:'Match cyclic',replaceAll:'ជំនួសទាំងអស់',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'តារាង',title:'ការកំណត់ តារាង',menu:'ការកំណត់ តារាង',deleteTable:'លប់តារាង',rows:'ជួរផ្តេក',columns:'ជួរឈរ',border:'ទំហំស៊ុម',align:'ការកំណត់ទីតាំង',alignNotSet:'<មិនកំណត់>',alignLeft:'ខាងឆ្វេង',alignCenter:'កណ្តាល',alignRight:'ខាងស្តាំ',width:'ទទឹង',widthPx:'ភីកសែល',widthPc:'ភាគរយ',height:'កំពស់',cellSpace:'គំលាតសែល',cellPad:'គែមសែល',caption:'ចំណងជើង',summary:'សេចក្តីសង្ខេប',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'លប់សែល',merge:'បញ្ជូលសែល',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'លប់ជួរផ្តេក'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'លប់ជួរឈរ'}},button:{title:'ការកំណត់ ប៉ូតុន',text:'អត្ថបទ(តំលៃ)',type:'ប្រភេទ',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'ការកំណត់ប្រអប់ជ្រើសរើស',radioTitle:'ការកំណត់ប៉ូតុនរង្វង់',value:'តំលៃ',selected:'បានជ្រើសរើស'},form:{title:'ការកំណត់បែបបទ',menu:'ការកំណត់បែបបទ',action:'សកម្មភាព',method:'វិធី',encoding:'Encoding',target:'គោលដៅ',targetNotSet:'<មិនមែន>',targetNew:'វីនដូវថ្មី (_blank)',targetTop:'វីនដូវនៅលើគេ(_top)',targetSelf:'វីនដូវដដែល (_self)',targetParent:'វីនដូវមេ (_parent)'},select:{title:'ការកំណត់ជួរជ្រើសរើស',selectInfo:'ពត៌មាន',opAvail:'ការកំណត់ជ្រើសរើស ដែលអាចកំណត់បាន',value:'តំលៃ',size:'ទំហំ',lines:'បន្ទាត់',chkMulti:'អនុញ្ញាតអោយជ្រើសរើសច្រើន',opText:'ពាក្យ',opValue:'តំលៃ',btnAdd:'បន្ថែម',btnModify:'ផ្លាស់ប្តូរ',btnUp:'លើ',btnDown:'ក្រោម',btnSetValue:'Set as selected value',btnDelete:'លប់'},textarea:{title:'ការកំណត់កន្លែងសរសេរអត្ថបទ',cols:'ជូរឈរ',rows:'ជូរផ្តេក'},textfield:{title:'ការកំណត់ជួរអត្ថបទ',name:'ឈ្មោះ',value:'តំលៃ',charWidth:'ទទឹង អក្សរ',maxChars:'អក្សរអតិបរិមា',type:'ប្រភេទ',typeText:'ពាក្យ',typePass:'ពាក្យសំងាត់'},hidden:{title:'ការកំណត់ជួរលាក់',name:'ឈ្មោះ',value:'តំលៃ'},image:{title:'ការកំណត់រូបភាព',titleButton:'ការកំណត់ប៉ូតុនរូបភាព',menu:'ការកំណត់រូបភាព',infoTab:'ពត៌មានអំពីរូបភាព',btnUpload:'បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្តល់សេវា',url:'URL',upload:'ទាញយក',alt:'អត្ថបទជំនួស',width:'ទទឹង',height:'កំពស់',lockRatio:'អត្រាឡុក',resetSize:'កំណត់ទំហំឡើងវិញ',border:'ស៊ុម',hSpace:'គំលាតទទឹង',vSpace:'គំលាតបណ្តោយ',align:'កំណត់ទីតាំង',alignLeft:'ខាងឆ្វង',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'បន្ទាត់ជាមូលដ្ឋាន',alignBottom:'ខាងក្រោម',alignMiddle:'កណ្តាល',alignRight:'ខាងស្តាំ',alignTextTop:'លើអត្ថបទ',alignTop:'ខាងលើ',preview:'មើលសាកល្បង',alertUrl:'សូមសរសេរងាស័យដ្ឋានរបស់រូបភាព',linkTab:'ឈ្នាប់',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'ការកំណត់ Flash',propertiesTab:'Properties',title:'ការកំណត់ Flash',chkPlay:'លេងដោយស្វ័យប្រវត្ត',chkLoop:'ចំនួនដង',chkMenu:'បង្ហាញ មឺនុយរបស់ Flash',chkFull:'Allow Fullscreen',scale:'ទំហំ',scaleAll:'បង្ហាញទាំងអស់',scaleNoBorder:'មិនបង្ហាញស៊ុម',scaleFit:'ត្រូវល្មម',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'កំណត់ទីតាំង',alignLeft:'ខាងឆ្វង',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'បន្ទាត់ជាមូលដ្ឋាន',alignBottom:'ខាងក្រោម',alignMiddle:'កណ្តាល',alignRight:'ខាងស្តាំ',alignTextTop:'លើអត្ថបទ',alignTop:'ខាងលើ',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'ពណ៌ផ្ទៃខាងក្រោយ',width:'ទទឹង',height:'កំពស់',hSpace:'គំលាតទទឹង',vSpace:'គំលាតបណ្តោយ',validateSrc:'សូមសរសេរ អាស័យដ្ឋាន URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'ពិនិត្យអក្ខរាវិរុទ្ធ',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'គ្មានក្នុងវចនានុក្រម',changeTo:'ផ្លាស់ប្តូរទៅ',btnIgnore:'មិនផ្លាស់ប្តូរ',btnIgnoreAll:'មិនផ្លាស់ប្តូរ ទាំងអស់',btnReplace:'ជំនួស',btnReplaceAll:'ជំនួសទាំងអស់',btnUndo:'សារឡើងវិញ',noSuggestions:'- គ្មានសំណើរ -',progress:'កំពុងពិនិត្យអក្ខរាវិរុទ្ធ...',noMispell:'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: គ្មានកំហុស',noChanges:'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពុំមានផ្លាស់ប្តូរ',oneChange:'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពាក្យមួយត្រូចបានផ្លាស់ប្តូរ',manyChanges:'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: %1 ពាក្យបានផ្លាស់ប្តូរ',ieSpellDownload:'ពុំមានកម្មវិធីពិនិត្យអក្ខរាវិរុទ្ធ ។ តើចង់ទាញយកពីណា?'},smiley:{toolbar:'រូបភាព',title:'បញ្ជូលរូបភាព'},elementsPath:{eleTitle:'%1 element'},numberedlist:'បញ្ជីជាអក្សរ',bulletedlist:'បញ្ជីជារង្វង់មូល',indent:'បន្ថែមការចូលបន្ទាត់',outdent:'បន្ថយការចូលបន្ទាត់',justify:{left:'តំរឹមឆ្វេង',center:'តំរឹមកណ្តាល',right:'តំរឹមស្តាំ',block:'តំរឹមសងខាង'},blockquote:'Blockquote',clipboard:{title:'ចំលងដាក់',cutError:'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ  (Ctrl+X) ។',copyError:'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl+C)។',pasteMsg:'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី ​(<STRONG>Ctrl+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'ចំលងដាក់ពី Word',title:'ចំលងដាក់ពី Word',advice:'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី ​(<STRONG>Ctrl+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។',ignoreFontFace:'មិនគិតអំពីប្រភេទពុម្ភអក្សរ',removeStyle:'លប់ម៉ូត'},pasteText:{button:'ចំលងដាក់អត្ថបទធម្មតា',title:'ចំលងដាក់អត្ថបទធម្មតា'},templates:{button:'ឯកសារគំរូ',title:'ឯកសារគំរូ របស់អត្ថន័យ',insertOption:'Replace actual contents',selectPromptMsg:'សូមជ្រើសរើសឯកសារគំរូ ដើម្បីបើកនៅក្នុងកម្មវិធីតាក់តែងអត្ថបទ<br>(អត្ថបទនឹងបាត់បង់):',emptyListMsg:'(ពុំមានឯកសារគំរូត្រូវបានកំណត់)'},showBlocks:'Show Blocks',stylesCombo:{label:'ម៉ូត',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'រចនា',voiceLabel:'Format',panelTitle:'រចនា',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},font:{label:'ហ្វុង',voiceLabel:'Font',panelTitle:'ហ្វុង',panelVoiceLabel:'Select a font'},fontSize:{label:'ទំហំ',voiceLabel:'Font Size',panelTitle:'ទំហំ',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'ពណ៌អក្សរ',bgColorTitle:'ពណ៌ផ្ទៃខាងក្រោយ',auto:'ស្វ័យប្រវត្ត',more:'ពណ៌ផ្សេងទៀត..'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/eu.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/eu.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/eu.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.eu={dir:'ltr',editorTitle:'Testu aberastuentzako editorea, %1',source:'HTML Iturburua',newPage:'Orrialde Berria',save:'Gorde',preview:'Aurrebista',cut:'Ebaki',copy:'Kopiatu',paste:'Itsatsi',print:'Inprimatu',underline:'Azpimarratu',bold:'Lodia',italic:'Etzana',selectAll:'Hautatu dena',removeFormat:'Kendu Formatua',strike:'Marratua',subscript:'Azpi-indize',superscript:'Goi-indize',horizontalrule:'Txertatu Marra Horizontala',pagebreak:'Txertatu Orrialde-jauzia',unlink:'Kendu Esteka',undo:'Desegin',redo:'Berregin',common:{browseServer:'Zerbitzaria arakatu',url:'URL',protocol:'Protokoloa',upload:'Gora kargatu',uploadSubmit:'Zerbitzarira bidalia',image:'Irudia',flash:'Flasha',form:'Formularioa',checkbox:'Kontrol-laukia',radio:'Aukera-botoia',textField:'Testu Eremua',textarea:'Testu-area',hiddenField:'Ezkutuko Eremua',button:'Botoia',select:'Hautespen Eremua',imageButton:'Irudi Botoia',notSet:'<Ezarri gabe>',id:'Id',name:'Izena',langDir:'Hizkuntzaren Norabidea',langDirLtr:'Ezkerretik Eskumara(LTR)',langDirRtl:'Eskumatik Ezkerrera (RTL)',langCode:'Hizkuntza Kodea',longDescr:'URL Deskribapen Luzea',cssClass:'Estilo-orriko Klaseak',advisoryTitle:'Izenburua',cssStyle:'Estiloa',ok:'Ados',cancel:'Utzi',generalTab:'Orokorra',advancedTab:'Aurreratua',validateNumberFailed:'Balio hau ez da zenbaki bat.',confirmNewPage:'Eduki honetan gorde gabe dauden aldaketak galduko dira. Ziur zaude orri berri bat kargatu nahi duzula?',confirmCancel:'Aukera batzuk aldatu egin dira. Ziur zaude elkarrizketa-koadroa itxi nahi duzula?',unavailable:'%1<span class="cke_accessibility">, erabilezina</span>'},specialChar:{toolbar:'Txertatu Karaktere Berezia',title:'Karaktere Berezia Aukeratu'},link:{toolbar:'Txertatu/Editatu Esteka',menu:'Aldatu Esteka',title:'Esteka',info:'Estekaren Informazioa',target:'Target (Helburua)',upload:'Gora kargatu',advanced:'Aurreratua',type:'Esteka Mota',toAnchor:'Aingura orrialde honetan',toEmail:'ePosta',target:'Target (Helburua)',targetNotSet:'<Ezarri gabe>',targetFrame:'<marko>',targetPopup:'<popup leihoa>',targetNew:'Leiho Berria (_blank)',targetTop:'Goiko Leihoa (_top)',targetSelf:'Leiho Berdina (_self)',targetParent:'Leiho Gurasoa (_parent)',targetFrameName:'Marko Helburuaren Izena',targetPopupName:'Popup Leihoaren Izena',popupFeatures:'Popup Leihoaren Ezaugarriak',popupResizable:'Tamaina Aldakorra',popupStatusBar:'Egoera Barra',popupLocationBar:'Kokaleku Barra',popupToolbar:'Tresna Barra',popupMenuBar:'Menu Barra',popupFullScreen:'Pantaila Osoa (IE)',popupScrollBars:'Korritze Barrak',popupDependent:'Menpekoa (Netscape)',popupWidth:'Zabalera',popupLeft:'Ezkerreko  Posizioa',popupHeight:'Altuera',popupTop:'Goiko Posizioa',id:'Id',langDir:'Hizkuntzaren Norabidea',langDirNotSet:'<Ezarri gabe>',langDirLTR:'Ezkerretik Eskumara(LTR)',langDirRTL:'Eskumatik Ezkerrera (RTL)',acccessKey:'Sarbide-gakoa',name:'Izena',langCode:'Hizkuntzaren Norabidea',tabIndex:'Tabulazio Indizea',advisoryTitle:'Izenburua',advisoryContentType:'Eduki Mota (Content Type)',cssClasses:'Estilo-orriko Klaseak',charset:'Estekatutako Karaktere Multzoa',styles:'Estiloa',selectAnchor:'Aingura bat hautatu',anchorName:'Aingura izenagatik',anchorId:'Elementuaren ID-gatik',emailAddress:'ePosta Helbidea',emailSubject:'Mezuaren Gaia',emailBody:'Mezuaren Gorputza',noAnchors:'(Ez daude aingurak eskuragarri dokumentuan)',noUrl:'Mesedez URL esteka idatzi',noEmail:'Mesedez ePosta helbidea idatzi'},anchor:{toolbar:'Aingura',menu:'Ainguraren Ezaugarriak',title:'Ainguraren Ezaugarriak',name:'Ainguraren Izena',errorName:'Idatzi ainguraren izena'},findAndReplace:{title:'Bilatu eta Ordeztu',find:'Bilatu',replace:'Ordezkatu',findWhat:'Zer bilatu:',replaceWith:'Zerekin ordeztu:',notFoundMsg:'Idatzitako testua ez da topatu.',matchCase:'Maiuskula/minuskula',matchWord:'Esaldi osoa bilatu',matchCyclic:'Bilaketa ziklikoa',replaceAll:'Ordeztu Guztiak',replaceSuccessMsg:'Zenbat aldiz ordeztua: %1'},table:{toolbar:'Taula',title:'Taularen Ezaugarriak',menu:'Taularen Ezaugarriak',deleteTable:'Ezabatu Taula',rows:'Lerroak',columns:'Zutabeak',border:'Ertzaren Zabalera',align:'Lerrokatu',alignNotSet:'<Ezarri gabe>',alignLeft:'Ezkerrean',alignCenter:'Erdian',alignRight:'Eskuman',width:'Zabalera',widthPx:'pixel',widthPc:'ehuneko',height:'Altuera',cellSpace:'Gelaxka arteko tartea',cellPad:'Gelaxken betegarria',caption:'Epigrafea',summary:'Laburpena',headers:'Goiburuak',headersNone:'Bat ere ez',headersColumn:'Lehen zutabea',headersRow:'Lehen lerroa',headersBoth:'Biak',invalidRows:'Lerro kopurua 0 baino handiagoa den zenbakia izan behar da.',invalidCols:'Zutabe kopurua 0 baino handiagoa den zenbakia izan behar da.',invalidBorder:'Ertzaren tamaina zenbaki bat izan behar da.',invalidWidth:'Taularen zabalera zenbaki bat izan behar da.',invalidHeight:'Taularen altuera zenbaki bat izan behar da.',invalidCellSpacing:'Gelaxka arteko tartea zenbaki bat izan behar da.',invalidCellPadding:'Gelaxken betegarria zenbaki bat izan behar da.',cell:{menu:'Gelaxka',insertBefore:'Txertatu Gelaxka Aurretik',insertAfter:'Txertatu Gelaxka Ostean',deleteCell:'Kendu Gelaxkak',merge:'Batu Gelaxkak',mergeRight:'Elkartu Eskumara',mergeDown:'Elkartu Behera',splitHorizontal:'Banatu Gelaxkak Horizontalki',splitVertical:'Banatu Gelaxkak Bertikalki',title:'Gelaxken Ezaugarriak',cellType:'Gelaxka Mota',rowSpan:'Hedatutako Lerroak',colSpan:'Hedatutako Zutabeak',wordWrap:'Itzulbira',hAlign:'Lerrokatze Horizontala',vAlign:'Lerrokatze Bertikala',alignTop:'Goian',alignMiddle:'Erdian',alignBottom:'Behean',alignBaseline:'Oinarri-lerroan',bgColor:'Fondoaren Kolorea',borderColor:'Ertzaren Kolorea',data:'Data',header:'Goiburua',yes:'Bai',no:'Ez',invalidWidth:'Gelaxkaren zabalera zenbaki bat izan behar da.',invalidHeight:'Gelaxkaren altuera zenbaki bat izan behar da.',invalidRowSpan:'Lerroen hedapena zenbaki osoa izan behar da.',invalidColSpan:'Zutabeen hedapena zenbaki osoa izan behar da.',chooseColor:'Choose'},row:{menu:'Lerroa',insertBefore:'Txertatu Lerroa Aurretik',insertAfter:'Txertatu Lerroa Ostean',deleteRow:'Ezabatu Lerroak'},column:{menu:'Zutabea',insertBefore:'Txertatu Zutabea Aurretik',insertAfter:'Txertatu Zutabea Ostean',deleteColumn:'Ezabatu Zutabeak'}},button:{title:'Botoiaren Ezaugarriak',text:'Testua (Balorea)',type:'Mota',typeBtn:'Botoia',typeSbm:'Bidali',typeRst:'Garbitu'},checkboxAndRadio:{checkboxTitle:'Kontrol-laukiko Ezaugarriak',radioTitle:'Aukera-botoiaren Ezaugarriak',value:'Balorea',selected:'Hautatuta'},form:{title:'Formularioaren Ezaugarriak',menu:'Formularioaren Ezaugarriak',action:'Ekintza',method:'Metodoa',encoding:'Kodeketa',target:'Target (Helburua)',targetNotSet:'<Ezarri gabe>',targetNew:'Leiho Berria (_blank)',targetTop:'Goiko Leihoa (_top)',targetSelf:'Leiho Berdina (_self)',targetParent:'Leiho Gurasoa (_parent)'},select:{title:'Hautespen Eremuaren Ezaugarriak',selectInfo:'Informazioa',opAvail:'Aukera Eskuragarriak',value:'Balorea',size:'Tamaina',lines:'lerro kopurura',chkMulti:'Hautaketa anitzak baimendu',opText:'Testua',opValue:'Balorea',btnAdd:'Gehitu',btnModify:'Aldatu',btnUp:'Gora',btnDown:'Behera',btnSetValue:'Aukeratutako balorea ezarri',btnDelete:'Ezabatu'},textarea:{title:'Testu-arearen Ezaugarriak',cols:'Zutabeak',rows:'Lerroak'},textfield:{title:'Testu Eremuaren Ezaugarriak',name:'Izena',value:'Balorea',charWidth:'Zabalera',maxChars:'Zenbat karaktere gehienez',type:'Mota',typeText:'Testua',typePass:'Pasahitza'},hidden:{title:'Ezkutuko Eremuaren Ezaugarriak',name:'Izena',value:'Balorea'},image:{title:'Irudi Ezaugarriak',titleButton:'Irudi Botoiaren Ezaugarriak',menu:'Irudi Ezaugarriak',infoTab:'Irudi informazioa',btnUpload:'Zerbitzarira bidalia',url:'URL',upload:'Gora Kargatu',alt:'Ordezko Testua',width:'Zabalera',height:'Altuera',lockRatio:'Erlazioa Blokeatu',resetSize:'Tamaina Berrezarri',border:'Ertza',hSpace:'HSpace',vSpace:'VSpace',align:'Lerrokatu',alignLeft:'Ezkerrera',alignAbsBottom:'Abs Behean',alignAbsMiddle:'Abs Erdian',alignBaseline:'Oinan',alignBottom:'Behean',alignMiddle:'Erdian',alignRight:'Eskuman',alignTextTop:'Testua Goian',alignTop:'Goian',preview:'Aurrebista',alertUrl:'Mesedez Irudiaren URLa idatzi',linkTab:'Esteka',button2Img:'Aukeratutako irudi botoia, irudi normal batean eraldatu nahi duzu?',img2Button:'Aukeratutako irudia, irudi botoi batean eraldatu nahi duzu?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flasharen Ezaugarriak',propertiesTab:'Ezaugarriak',title:'Flasharen Ezaugarriak',chkPlay:'Automatikoki Erreproduzitu',chkLoop:'Begizta',chkMenu:'Flasharen Menua Gaitu',chkFull:'Onartu Pantaila osoa',scale:'Eskalatu',scaleAll:'Dena erakutsi',scaleNoBorder:'Ertzik gabe',scaleFit:'Doitu',access:'Scriptak baimendu',accessAlways:'Beti',accessSameDomain:'Domeinu berdinekoak',accessNever:'Inoiz ere ez',align:'Lerrokatu',alignLeft:'Ezkerrera',alignAbsBottom:'Abs Behean',alignAbsMiddle:'Abs Erdian',alignBaseline:'Oinan',alignBottom:'Behean',alignMiddle:'Erdian',alignRight:'Eskuman',alignTextTop:'Testua Goian',alignTop:'Goian',quality:'Kalitatea',qualityBest:'Hoberena',qualityHigh:'Altua',qualityAutoHigh:'Auto Altua',qualityMedium:'Ertaina',qualityAutoLow:'Auto Baxua',qualityLow:'Baxua',windowModeWindow:'Leihoa',windowModeOpaque:'Opakoa',windowModeTransparent:'Gardena',windowMode:'Leihoaren modua',flashvars:'Flash Aldagaiak',bgcolor:'Atzeko kolorea',width:'Zabalera',height:'Altuera',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Mesedez URL esteka idatzi',validateWidth:'Zabalera zenbaki bat izan behar da.',validateHeight:'Altuera zenbaki bat izan behar da.',validateHSpace:'HSpace zenbaki bat izan behar da.',validateVSpace:'VSpace zenbaki bat izan behar da.'},spellCheck:{toolbar:'Ortografia',title:'Ortografia zuzenketa',notAvailable:'Barkatu baina momentu honetan zerbitzua ez dago erabilgarri.',errorLoading:'Errorea gertatu da aplikazioa zerbitzaritik kargatzean: %s.',notInDic:'Ez dago hiztegian',changeTo:'Honekin ordezkatu',btnIgnore:'Ezikusi',btnIgnoreAll:'Denak Ezikusi',btnReplace:'Ordezkatu',btnReplaceAll:'Denak Ordezkatu',btnUndo:'Desegin',noSuggestions:'- Iradokizunik ez -',progress:'Zuzenketa ortografikoa martxan...',noMispell:'Zuzenketa ortografikoa bukatuta: Akatsik ez',noChanges:'Zuzenketa ortografikoa bukatuta: Ez da ezer aldatu',oneChange:'Zuzenketa ortografikoa bukatuta: Hitz bat aldatu da',manyChanges:'Zuzenketa ortografikoa bukatuta: %1 hitz aldatu dira',ieSpellDownload:'Zuzentzaile ortografikoa ez dago instalatuta. Deskargatu nahi duzu?'},smiley:{toolbar:'Aurpegierak',title:'Aurpegiera Sartu'},elementsPath:{eleTitle:'%1 elementua'},numberedlist:'Zenbakidun Zerrenda',bulletedlist:'Buletdun Zerrenda',indent:'Handitu Koska',outdent:'Txikitu Koska',justify:{left:'Lerrokatu Ezkerrean',center:'Lerrokatu Erdian',right:'Lerrokatu Eskuman',block:'Justifikatu'},blockquote:'Aipamen blokea',clipboard:{title:'Itsatsi',cutError:'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+X).',copyError:'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+C).',pasteMsg:'Mesedez teklatua erabilita (<STRONG>Ctrl+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.',securityMsg:'Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.'},pastefromword:{toolbar:'Itsatsi Word-etik',title:'Itsatsi Word-etik',advice:'Mesedez teklatua erabilita (<STRONG>Ctrl+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.',ignoreFontFace:'Letra Motaren definizioa ezikusi',removeStyle:'Estilo definizioak kendu'},pasteText:{button:'Testu Arrunta bezala Itsatsi',title:'Testu Arrunta bezala Itsatsi'},templates:{button:'Txantiloiak',title:'Eduki Txantiloiak',insertOption:'Ordeztu oraingo edukiak',selectPromptMsg:'Mesedez txantiloia aukeratu editorean kargatzeko<br>(orain dauden edukiak galduko dira):',emptyListMsg:'(Ez dago definitutako txantiloirik)'},showBlocks:'Blokeak erakutsi',stylesCombo:{label:'Estiloa',voiceLabel:'Estiloak',panelVoiceLabel:'Estilo bat aukeratu',panelTitle1:'Bloke Estiloak',panelTitle2:'Inline Estiloak',panelTitle3:'Objektu Estiloak'},format:{label:'Formatua',voiceLabel:'Formatua',panelTitle:'Formatua',panelVoiceLabel:'Aukeratu paragrafo formatu bat',tag_p:'Arrunta',tag_pre:'Formateatua',tag_address:'Helbidea',tag_h1:'Izenburua 1',tag_h2:'Izenburua 2',tag_h3:'Izenburua 3',tag_h4:'Izenburua 4',tag_h5:'Izenburua 5',tag_h6:'Izenburua 6',tag_div:'Paragrafoa (DIV)'},font:{label:'Letra-tipoa',voiceLabel:'Letra-tipoa',panelTitle:'Letra-tipoa',panelVoiceLabel:'Aukeratu letra-tipoa'},fontSize:{label:'Tamaina',voiceLabel:'Tamaina',panelTitle:'Tamaina',panelVoiceLabel:'Aukeratu letraren tamaina'},colorButton:{textColorTitle:'Testu Kolorea',bgColorTitle:'Atzeko kolorea',auto:'Automatikoa',more:'Kolore gehiago...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Ortografia Zuzenketa Idatzi Ahala (SCAYT)',enable:'Gaitu SCAYT',disable:'Desgaitu SCAYT',about:'SCAYTi buruz',toggle:'SCAYT aldatu',options:'Aukerak',langs:'Hizkuntzak',moreSuggestions:'Iradokizun gehiago',ignore:'Baztertu',ignoreAll:'Denak baztertu',addWord:'Hitza Gehitu',emptyDic:'Hiztegiaren izena ezin da hutsik egon.',optionsTab:'Aukerak',languagesTab:'Hizkuntzak',dictionariesTab:'Hiztegiak',aboutTab:'Honi buruz'},about:{title:'CKEditor(r)i buruz',dlgTitle:'CKEditor(r)i buruz',moreInfo:'Lizentziari buruzko informazioa gure webgunean:',copy:'Copyright &copy; $1. Eskubide guztiak erreserbaturik.'},maximize:'Maximizatu',minimize:'Minimize',fakeobjects:{anchor:'Aingura',flash:'Flash Animazioa',div:'Orrialde Saltoa',unknown:'Objektu ezezaguna'},resize:'Arrastatu tamaina aldatzeko',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/ko.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/ko.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/ko.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ko={dir:'ltr',editorTitle:'Rich text editor, %1',source:'소스',newPage:'새 문서',save:'저장하기',preview:'미리보기',cut:'잘라내기',copy:'복사하기',paste:'붙여넣기',print:'인쇄하기',underline:'밑줄',bold:'진하게',italic:'이텔릭',selectAll:'전체선택',removeFormat:'포맷 지우기',strike:'취소선',subscript:'아래 첨자',superscript:'위 첨자',horizontalrule:'수평선 삽입',pagebreak:'Insert Page Break for Printing',unlink:'링크 삭제',undo:'취소',redo:'재실행',common:{browseServer:'서버 보기',url:'URL',protocol:'프로토콜',upload:'업로드',uploadSubmit:'서버로 전송',image:'이미지',flash:'플래쉬',form:'폼',checkbox:'체크박스',radio:'라디오버튼',textField:'입력필드',textarea:'입력영역',hiddenField:'숨김필드',button:'버튼',select:'펼침목록',imageButton:'이미지버튼',notSet:'<설정되지 않음>',id:'ID',name:'Name',langDir:'쓰기 방향',langDirLtr:'왼쪽에서 오른쪽 (LTR)',langDirRtl:'오른쪽에서 왼쪽 (RTL)',langCode:'언어 코드',longDescr:'URL 설명',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'예',cancel:'아니오',generalTab:'General',advancedTab:'자세히',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'특수문자 삽입',title:'특수문자 선택'},link:{toolbar:'링크 삽입/변경',menu:'링크 수정',title:'링크',info:'링크 정보',target:'타겟',upload:'업로드',advanced:'자세히',type:'링크 종류',toAnchor:'책갈피',toEmail:'이메일',target:'타겟',targetNotSet:'<설정되지 않음>',targetFrame:'<프레임>',targetPopup:'<팝업창>',targetNew:'새 창 (_blank)',targetTop:'최 상위 창 (_top)',targetSelf:'현재 창 (_self)',targetParent:'부모 창 (_parent)',targetFrameName:'타겟 프레임 이름',targetPopupName:'팝업창 이름',popupFeatures:'팝업창 설정',popupResizable:'Resizable',popupStatusBar:'상태바',popupLocationBar:'주소표시줄',popupToolbar:'툴바',popupMenuBar:'메뉴바',popupFullScreen:'전체화면 (IE)',popupScrollBars:'스크롤바',popupDependent:'Dependent (Netscape)',popupWidth:'너비',popupLeft:'왼쪽 위치',popupHeight:'높이',popupTop:'윗쪽 위치',id:'Id',langDir:'쓰기 방향',langDirNotSet:'<설정되지 않음>',langDirLTR:'왼쪽에서 오른쪽 (LTR)',langDirRTL:'오른쪽에서 왼쪽 (RTL)',acccessKey:'엑세스 키',name:'Name',langCode:'쓰기 방향',tabIndex:'탭 순서',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',selectAnchor:'책갈피 선택',anchorName:'책갈피 이름',anchorId:'책갈피 ID',emailAddress:'이메일 주소',emailSubject:'제목',emailBody:'내용',noAnchors:'(문서에 책갈피가 없습니다.)',noUrl:'링크 URL을 입력하십시요.',noEmail:'이메일주소를 입력하십시요.'},anchor:{toolbar:'책갈피 삽입/변경',menu:'책갈피 속성',title:'책갈피 속성',name:'책갈피 이름',errorName:'책갈피 이름을 입력하십시요.'},findAndReplace:{title:'찾기 & 바꾸기',find:'찾기',replace:'바꾸기',findWhat:'찾을 문자열:',replaceWith:'바꿀 문자열:',notFoundMsg:'문자열을 찾을 수 없습니다.',matchCase:'대소문자 구분',matchWord:'온전한 단어',matchCyclic:'Match cyclic',replaceAll:'모두 바꾸기',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'표',title:'표 설정',menu:'표 설정',deleteTable:'표 삭제',rows:'가로줄',columns:'세로줄',border:'테두리 크기',align:'정렬',alignNotSet:'<설정되지 않음>',alignLeft:'왼쪽',alignCenter:'가운데',alignRight:'오른쪽',width:'너비',widthPx:'픽셀',widthPc:'퍼센트',height:'높이',cellSpace:'셀 간격',cellPad:'셀 여백',caption:'캡션',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'셀/칸(Cell)',insertBefore:'앞에 셀/칸 삽입',insertAfter:'뒤에 셀/칸 삽입',deleteCell:'셀 삭제',merge:'셀 합치기',mergeRight:'오른쪽 뭉치기',mergeDown:'왼쪽 뭉치기',splitHorizontal:'수평 나누기',splitVertical:'수직 나누기',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'행(Row)',insertBefore:'앞에 행 삽입',insertAfter:'뒤에 행 삽입',deleteRow:'가로줄 삭제'},column:{menu:'열(Column)',insertBefore:'앞에 열 삽입',insertAfter:'뒤에 열 삽입',deleteColumn:'세로줄 삭제'}},button:{title:'버튼 속성',text:'버튼글자(값)',type:'버튼종류',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'체크박스 속성',radioTitle:'라디오버튼 속성',value:'값',selected:'선택됨'},form:{title:'폼 속성',menu:'폼 속성',action:'실행경로(Action)',method:'방법(Method)',encoding:'Encoding',target:'타겟',targetNotSet:'<설정되지 않음>',targetNew:'새 창 (_blank)',targetTop:'최 상위 창 (_top)',targetSelf:'현재 창 (_self)',targetParent:'부모 창 (_parent)'},select:{title:'펼침목록 속성',selectInfo:'정보',opAvail:'선택옵션',value:'값',size:'세로크기',lines:'줄',chkMulti:'여러항목 선택 허용',opText:'이름',opValue:'값',btnAdd:'추가',btnModify:'변경',btnUp:'위로',btnDown:'아래로',btnSetValue:'선택된것으로 설정',btnDelete:'삭제'},textarea:{title:'입력영역 속성',cols:'칸수',rows:'줄수'},textfield:{title:'입력필드 속성',name:'이름',value:'값',charWidth:'글자 너비',maxChars:'최대 글자수',type:'종류',typeText:'문자열',typePass:'비밀번호'},hidden:{title:'숨김필드 속성',name:'이름',value:'값'},image:{title:'이미지 설정',titleButton:'이미지버튼 속성',menu:'이미지 설정',infoTab:'이미지 정보',btnUpload:'서버로 전송',url:'URL',upload:'업로드',alt:'이미지 설명',width:'너비',height:'높이',lockRatio:'비율 유지',resetSize:'원래 크기로',border:'테두리',hSpace:'수평여백',vSpace:'수직여백',align:'정렬',alignLeft:'왼쪽',alignAbsBottom:'줄아래(Abs Bottom)',alignAbsMiddle:'줄중간(Abs Middle)',alignBaseline:'기준선',alignBottom:'아래',alignMiddle:'중간',alignRight:'오른쪽',alignTextTop:'글자상단',alignTop:'위',preview:'미리보기',alertUrl:'이미지 URL을 입력하십시요',linkTab:'링크',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'플래쉬 속성',propertiesTab:'Properties',title:'플래쉬 등록정보',chkPlay:'자동재생',chkLoop:'반복',chkMenu:'플래쉬메뉴 가능',chkFull:'Allow Fullscreen',scale:'영역',scaleAll:'모두보기',scaleNoBorder:'경계선없음',scaleFit:'영역자동조절',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'정렬',alignLeft:'왼쪽',alignAbsBottom:'줄아래(Abs Bottom)',alignAbsMiddle:'줄중간(Abs Middle)',alignBaseline:'기준선',alignBottom:'아래',alignMiddle:'중간',alignRight:'오른쪽',alignTextTop:'글자상단',alignTop:'위',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'배경 색상',width:'너비',height:'높이',hSpace:'수평여백',vSpace:'수직여백',validateSrc:'링크 URL을 입력하십시요.',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'철자검사',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'사전에 없는 단어',changeTo:'변경할 단어',btnIgnore:'건너뜀',btnIgnoreAll:'모두 건너뜀',btnReplace:'변경',btnReplaceAll:'모두 변경',btnUndo:'취소',noSuggestions:'- 추천단어 없음 -',progress:'철자검사를 진행중입니다...',noMispell:'철자검사 완료: 잘못된 철자가 없습니다.',noChanges:'철자검사 완료: 변경된 단어가 없습니다.',oneChange:'철자검사 완료: 단어가 변경되었습니다.',manyChanges:'철자검사 완료: %1 단어가 변경되었습니다.',ieSpellDownload:'철자 검사기가 철치되지 않았습니다. 지금 다운로드하시겠습니까?'},smiley:{toolbar:'아이콘',title:'아이콘 삽입'},elementsPath:{eleTitle:'%1 element'},numberedlist:'순서있는 목록',bulletedlist:'순서없는 목록',indent:'들여쓰기',outdent:'내어쓰기',justify:{left:'왼쪽 정렬',center:'가운데 정렬',right:'오른쪽 정렬',block:'양쪽 맞춤'},blockquote:'Blockquote',clipboard:{title:'붙여넣기',cutError:'브라우저의 보안설정때문에 잘라내기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl+X).',copyError:'브라우저의 보안설정때문에 복사하기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요.  (Ctrl+C).',pasteMsg:'키보드의 (<STRONG>Ctrl+V</STRONG>) 를 이용해서 상자안에 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.',securityMsg:'브러우저 보안 설정으로 인해, 클립보드의 자료를 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.'},pastefromword:{toolbar:'MS Word 형식에서 붙여넣기',title:'MS Word 형식에서 붙여넣기',advice:'키보드의 (<STRONG>Ctrl+V</STRONG>) 를 이용해서 상자안에 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.',ignoreFontFace:'폰트 설정 무시',removeStyle:'스타일 정의 제거'},pasteText:{button:'텍스트로 붙여넣기',title:'텍스트로 붙여넣기'},templates:{button:'템플릿',title:'내용 템플릿',insertOption:'현재 내용 바꾸기',selectPromptMsg:'에디터에서 사용할 템플릿을 선택하십시요.<br>(지금까지 작성된 내용은 사라집니다.):',emptyListMsg:'(템플릿이 없습니다.)'},showBlocks:'Show Blocks',stylesCombo:{label:'스타일',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'포맷',voiceLabel:'Format',panelTitle:'포맷',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},font:{label:'폰트',voiceLabel:'Font',panelTitle:'폰트',panelVoiceLabel:'Select a font'},fontSize:{label:'글자 크기',voiceLabel:'Font Size',panelTitle:'글자 크기',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'글자 색상',bgColorTitle:'배경 색상',auto:'기본색상',more:'색상선택...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/is.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/is.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/is.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.is={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Kóði',newPage:'Ný síða',save:'Vista',preview:'Forskoða',cut:'Klippa',copy:'Afrita',paste:'Líma',print:'Prenta',underline:'Undirstrikað',bold:'Feitletrað',italic:'Skáletrað',selectAll:'Velja allt',removeFormat:'Fjarlægja snið',strike:'Yfirstrikað',subscript:'Niðurskrifað',superscript:'Uppskrifað',horizontalrule:'Lóðrétt lína',pagebreak:'Setja inn síðuskil',unlink:'Fjarlægja stiklu',undo:'Afturkalla',redo:'Hætta við afturköllun',common:{browseServer:'Fletta í skjalasafni',url:'Vefslóð',protocol:'Samskiptastaðall',upload:'Senda upp',uploadSubmit:'Hlaða upp',image:'Setja inn mynd',flash:'Flash',form:'Setja inn innsláttarform',checkbox:'Setja inn hökunarreit',radio:'Setja inn valhnapp',textField:'Setja inn textareit',textarea:'Setja inn textasvæði',hiddenField:'Setja inn falið svæði',button:'Setja inn hnapp',select:'Setja inn lista',imageButton:'Setja inn myndahnapp',notSet:'<ekkert valið>',id:'Auðkenni',name:'Nafn',langDir:'Lesstefna',langDirLtr:'Frá vinstri til hægri (LTR)',langDirRtl:'Frá hægri til vinstri (RTL)',langCode:'Tungumálakóði',longDescr:'Nánari lýsing',cssClass:'Stílsniðsflokkur',advisoryTitle:'Titill',cssStyle:'Stíll',ok:'Í lagi',cancel:'Hætta við',generalTab:'Almennt',advancedTab:'Tæknilegt',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Setja inn merki',title:'Velja tákn'},link:{toolbar:'Stofna/breyta stiklu',menu:'Breyta stiklu',title:'Stikla',info:'Almennt',target:'Mark',upload:'Senda upp',advanced:'Tæknilegt',type:'Stikluflokkur',toAnchor:'Bókamerki á þessari síðu',toEmail:'Netfang',target:'Mark',targetNotSet:'<ekkert valið>',targetFrame:'<rammi>',targetPopup:'<sprettigluggi>',targetNew:'Nýr gluggi (_blank)',targetTop:'Allur glugginn (_top)',targetSelf:'Sami gluggi (_self)',targetParent:'Yfirsettur rammi (_parent)',targetFrameName:'Nafn markglugga',targetPopupName:'Nafn sprettiglugga',popupFeatures:'Eigindi sprettiglugga',popupResizable:'Resizable',popupStatusBar:'Stöðustika',popupLocationBar:'Fanglína',popupToolbar:'Verkfærastika',popupMenuBar:'Vallína',popupFullScreen:'Heilskjár (IE)',popupScrollBars:'Skrunstikur',popupDependent:'Háð venslum (Netscape)',popupWidth:'Breidd',popupLeft:'Fjarlægð frá vinstri',popupHeight:'Hæð',popupTop:'Fjarlægð frá efri brún',id:'Id',langDir:'Lesstefna',langDirNotSet:'<ekkert valið>',langDirLTR:'Frá vinstri til hægri (LTR)',langDirRTL:'Frá hægri til vinstri (RTL)',acccessKey:'Skammvalshnappur',name:'Nafn',langCode:'Lesstefna',tabIndex:'Raðnúmer innsláttarreits',advisoryTitle:'Titill',advisoryContentType:'Tegund innihalds',cssClasses:'Stílsniðsflokkur',charset:'Táknróf',styles:'Stíll',selectAnchor:'Veldu akkeri',anchorName:'Eftir akkerisnafni',anchorId:'Eftir auðkenni einingar',emailAddress:'Netfang',emailSubject:'Efni',emailBody:'Meginmál',noAnchors:'<Engin bókamerki á skrá>',noUrl:'Sláðu inn veffang stiklunnar!',noEmail:'Sláðu inn netfang!'},anchor:{toolbar:'Stofna/breyta kaflamerki',menu:'Eigindi kaflamerkis',title:'Eigindi kaflamerkis',name:'Nafn bókamerkis',errorName:'Sláðu inn nafn bókamerkis!'},findAndReplace:{title:'Finna og skipta',find:'Leita',replace:'Skipta út',findWhat:'Leita að:',replaceWith:'Skipta út fyrir:',notFoundMsg:'Leitartexti fannst ekki!',matchCase:'Gera greinarmun á¡ há¡- og lágstöfum',matchWord:'Aðeins heil orð',matchCyclic:'Match cyclic',replaceAll:'Skipta út allsstaðar',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tafla',title:'Eigindi töflu',menu:'Eigindi töflu',deleteTable:'Fella töflu',rows:'Raðir',columns:'Dálkar',border:'Breidd ramma',align:'Jöfnun',alignNotSet:'<ekkert valið>',alignLeft:'Vinstrijafnað',alignCenter:'Miðjað',alignRight:'Hægrijafnað',width:'Breidd',widthPx:'myndeindir',widthPc:'prósent',height:'Hæð',cellSpace:'Bil milli reita',cellPad:'Reitaspássía',caption:'Titill',summary:'Áfram',headers:'Fyrirsagnir',headersNone:'Engar',headersColumn:'Fyrsti dálkur',headersRow:'Fyrsta röð',headersBoth:'Hvort tveggja',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Reitur',insertBefore:'Skjóta inn reiti fyrir aftan',insertAfter:'Skjóta inn reiti fyrir framan',deleteCell:'Fella reit',merge:'Sameina reiti',mergeRight:'Sameina til hægri',mergeDown:'Sameina niður á við',splitHorizontal:'Kljúfa reit lárétt',splitVertical:'Kljúfa reit lóðrétt',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Röð',insertBefore:'Skjóta inn röð fyrir ofan',insertAfter:'Skjóta inn röð fyrir neðan',deleteRow:'Eyða röð'},column:{menu:'Dálkur',insertBefore:'Skjóta inn dálki vinstra megin',insertAfter:'Skjóta inn dálki hægra megin',deleteColumn:'Fella dálk'}},button:{title:'Eigindi hnapps',text:'Texti',type:'Gerð',typeBtn:'Hnappur',typeSbm:'Staðfesta',typeRst:'Hreinsa'},checkboxAndRadio:{checkboxTitle:'Eigindi markreits',radioTitle:'Eigindi valhnapps',value:'Gildi',selected:'Valið'},form:{title:'Eigindi innsláttarforms',menu:'Eigindi innsláttarforms',action:'Aðgerð',method:'Aðferð',encoding:'Encoding',target:'Mark',targetNotSet:'<ekkert valið>',targetNew:'Nýr gluggi (_blank)',targetTop:'Allur glugginn (_top)',targetSelf:'Sami gluggi (_self)',targetParent:'Yfirsettur rammi (_parent)'},select:{title:'Eigindi lista',selectInfo:'Upplýsingar',opAvail:'Kostir',value:'Gildi',size:'Stærð',lines:'línur',chkMulti:'Leyfa fleiri kosti',opText:'Texti',opValue:'Gildi',btnAdd:'Bæta við',btnModify:'Breyta',btnUp:'Upp',btnDown:'Niður',btnSetValue:'Merkja sem valið',btnDelete:'Eyða'},textarea:{title:'Eigindi textasvæðis',cols:'Dálkar',rows:'Línur'},textfield:{title:'Eigindi textareits',name:'Nafn',value:'Gildi',charWidth:'Breidd (leturtákn)',maxChars:'Hámarksfjöldi leturtákna',type:'Gerð',typeText:'Texti',typePass:'Lykilorð'},hidden:{title:'Eigindi falins svæðis',name:'Nafn',value:'Gildi'},image:{title:'Eigindi myndar',titleButton:'Eigindi myndahnapps',menu:'Eigindi myndar',infoTab:'Almennt',btnUpload:'Hlaða upp',url:'Vefslóð',upload:'Hlaða upp',alt:'Baklægur texti',width:'Breidd',height:'Hæð',lockRatio:'Festa stærðarhlutfall',resetSize:'Reikna stærð',border:'Rammi',hSpace:'Vinstri bil',vSpace:'Hægri bil',align:'Jöfnun',alignLeft:'Vinstri',alignAbsBottom:'Abs neðst',alignAbsMiddle:'Abs miðjuð',alignBaseline:'Grunnlína',alignBottom:'Neðst',alignMiddle:'Miðjuð',alignRight:'Hægri',alignTextTop:'Efri brún texta',alignTop:'Efst',preview:'Sýna dæmi',alertUrl:'Sláðu inn slóðina að myndinni',linkTab:'Stikla',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Eigindi Flash',propertiesTab:'Properties',title:'Eigindi Flash',chkPlay:'Sjálfvirk spilun',chkLoop:'Endurtekning',chkMenu:'Sýna Flash-valmynd',chkFull:'Allow Fullscreen',scale:'Skali',scaleAll:'Sýna allt',scaleNoBorder:'Án ramma',scaleFit:'Fella skala að stærð',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Jöfnun',alignLeft:'Vinstri',alignAbsBottom:'Abs neðst',alignAbsMiddle:'Abs miðjuð',alignBaseline:'Grunnlína',alignBottom:'Neðst',alignMiddle:'Miðjuð',alignRight:'Hægri',alignTextTop:'Efri brún texta',alignTop:'Efst',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Bakgrunnslitur',width:'Breidd',height:'Hæð',hSpace:'Vinstri bil',vSpace:'Hægri bil',validateSrc:'Sláðu inn veffang stiklunnar!',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Villuleit',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Ekki í orðabókinni',changeTo:'Tillaga',btnIgnore:'Hunsa',btnIgnoreAll:'Hunsa allt',btnReplace:'Skipta',btnReplaceAll:'Skipta öllu',btnUndo:'Til baka',noSuggestions:'- engar tillögur -',progress:'Villuleit í gangi...',noMispell:'Villuleit lokið: Engin villa fannst',noChanges:'Villuleit lokið: Engu orði breytt',oneChange:'Villuleit lokið: Einu orði breytt',manyChanges:'Villuleit lokið: %1 orðum breytt',ieSpellDownload:'Villuleit ekki sett upp.<br>Viltu setja hana upp?'},smiley:{toolbar:'Svipur',title:'Velja svip'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Númeraður listi',bulletedlist:'Punktalisti',indent:'Minnka inndrátt',outdent:'Auka inndrátt',justify:{left:'Vinstrijöfnun',center:'Miðja texta',right:'Hægrijöfnun',block:'Jafna báðum megin'},blockquote:'Inndráttur',clipboard:{title:'Líma',cutError:'Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl+X).',copyError:'Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl+C).',pasteMsg:'Límdu í svæðið hér að neðan og (<STRONG>Ctrl+V</STRONG>) og smelltu á <STRONG>OK</STRONG>.',securityMsg:'Vegna öryggisstillinga í vafranum þínum fær ritillinn ekki beinan aðgang að klippuborðinu. Þú verður að líma innihaldið aftur inn í þennan glugga.'},pastefromword:{toolbar:'Líma úr Word',title:'Líma úr Word',advice:'Límdu í svæðið hér að neðan og (<STRONG>Ctrl+V</STRONG>) og smelltu á <STRONG>OK</STRONG>.',ignoreFontFace:'Hunsa leturskilgreiningar',removeStyle:'Hunsa letureigindi'},pasteText:{button:'Líma sem ósniðinn texta',title:'Líma sem ósniðinn texta'},templates:{button:'Sniðmát',title:'Innihaldssniðmát',insertOption:'Skipta út raunverulegu innihaldi',selectPromptMsg:'Veldu sniðmát til að opna í ritlinum.<br>(Núverandi innihald víkur fyrir því!):',emptyListMsg:'(Ekkert sniðmát er skilgreint!)'},showBlocks:'Sýna blokkir',stylesCombo:{label:'Stílflokkur',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Stílsnið',voiceLabel:'Format',panelTitle:'Stílsnið',panelVoiceLabel:'Select a paragraph format',tag_p:'Venjulegt letur',tag_pre:'Forsniðið',tag_address:'Vistfang',tag_h1:'Fyrirsögn 1',tag_h2:'Fyrirsögn 2',tag_h3:'Fyrirsögn 3',tag_h4:'Fyrirsögn 4',tag_h5:'Fyrirsögn 5',tag_h6:'Fyrirsögn 6',tag_div:'Venjulegt (DIV)'},font:{label:'Leturgerð ',voiceLabel:'Font',panelTitle:'Leturgerð ',panelVoiceLabel:'Select a font'},fontSize:{label:'Leturstærð ',voiceLabel:'Font Size',panelTitle:'Leturstærð ',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Litur texta',bgColorTitle:'Bakgrunnslitur',auto:'Sjálfval',more:'Fleiri liti...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/gu.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/gu.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/gu.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.gu={dir:'ltr',editorTitle:'Rich text editor, %1',source:'મૂળ કે પ્રાથમિક દસ્તાવેજ',newPage:'નવુ પાનું',save:'સેવ',preview:'પૂર્વદર્શન',cut:'કાપવું',copy:'નકલ',paste:'પેસ્ટ',print:'પ્રિન્ટ',underline:'અન્ડર્લાઇન, નીચે લીટી',bold:'બોલ્ડ/સ્પષ્ટ',italic:'ઇટેલિક, ત્રાંસા',selectAll:'બઘું પસંદ કરવું',removeFormat:'ફૉર્મટ કાઢવું',strike:'છેકી નાખવું',subscript:'એક ચિહ્નની નીચે કરેલું બીજું ચિહ્ન',superscript:'એક ચિહ્ન ઉપર કરેલું બીજું ચિહ્ન.',horizontalrule:'સમસ્તરીય રેખા ઇન્સર્ટ/દાખલ કરવી',pagebreak:'ઇન્સર્ટ પેજબ્રેક/પાનાને અલગ કરવું/દાખલ કરવું',unlink:'લિંક કાઢવી',undo:'રદ કરવું; પહેલાં હતી એવી સ્થિતિ પાછી લાવવી',redo:'રિડૂ; પછી હતી એવી સ્થિતિ પાછી લાવવી',common:{browseServer:'સર્વર બ્રાઉઝ કરો',url:'URL',protocol:'પ્રોટોકૉલ',upload:'અપલોડ',uploadSubmit:'આ સર્વરને મોકલવું',image:'ચિત્ર',flash:'ફ્લૅશ',form:'ફૉર્મ/પત્રક',checkbox:'ચેક બોક્સ',radio:'રેડિઓ બટન',textField:'ટેક્સ્ટ ફીલ્ડ, શબ્દ ક્ષેત્ર',textarea:'ટેક્સ્ટ એરિઆ, શબ્દ વિસ્તાર',hiddenField:'ગુપ્ત ક્ષેત્ર',button:'બટન',select:'પસંદગી ક્ષેત્ર',imageButton:'ચિત્ર બટન',notSet:'<સેટ નથી>',id:'Id',name:'નામ',langDir:'ભાષા લેખવાની પદ્ધતિ',langDirLtr:'ડાબે થી જમણે (LTR)',langDirRtl:'જમણે થી ડાબે (RTL)',langCode:'ભાષા કોડ',longDescr:'વધારે માહિતી માટે URL',cssClass:'સ્ટાઇલ-શીટ ક્લાસ',advisoryTitle:'મુખ્ય મથાળું',cssStyle:'સ્ટાઇલ',ok:'ઠીક છે',cancel:'રદ કરવું',generalTab:'General',advancedTab:'અડ્વાન્સડ',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'વિશિષ્ટ અક્ષર ઇન્સર્ટ/દાખલ કરવું',title:'સ્પેશિઅલ વિશિષ્ટ અક્ષર પસંદ કરો'},link:{toolbar:'લિંક ઇન્સર્ટ/દાખલ કરવી',menu:' લિંક એડિટ/માં ફેરફાર કરવો',title:'લિંક',info:'લિંક ઇન્ફૉ ટૅબ',target:'ટાર્ગેટ/લક્ષ્ય',upload:'અપલોડ',advanced:'અડ્વાન્સડ',type:'લિંક પ્રકાર',toAnchor:'આ પેજનો ઍંકર',toEmail:'ઈ-મેલ',target:'ટાર્ગેટ/લક્ષ્ય',targetNotSet:'<સેટ નથી>',targetFrame:'<ફ્રેમ>',targetPopup:'<પૉપ-અપ વિન્ડો>',targetNew:'નવી  વિન્ડો (_blank)',targetTop:'ઉપરની વિન્ડો (_top)',targetSelf:'આજ વિન્ડો (_self)',targetParent:'મૂળ વિન્ડો (_parent)',targetFrameName:'ટાર્ગેટ ફ્રેમ નું નામ',targetPopupName:'પૉપ-અપ વિન્ડો નું નામ',popupFeatures:'પૉપ-અપ વિન્ડો ફીચરસૅ',popupResizable:'Resizable',popupStatusBar:'સ્ટૅટસ બાર',popupLocationBar:'લોકેશન બાર',popupToolbar:'ટૂલ બાર',popupMenuBar:'મેન્યૂ બાર',popupFullScreen:'ફુલ સ્ક્રીન (IE)',popupScrollBars:'સ્ક્રોલ બાર',popupDependent:'ડિપેન્ડન્ટ (Netscape)',popupWidth:'પહોળાઈ',popupLeft:'ડાબી બાજુ',popupHeight:'ઊંચાઈ',popupTop:'જમણી બાજુ',id:'Id',langDir:'ભાષા લેખવાની પદ્ધતિ',langDirNotSet:'<સેટ નથી>',langDirLTR:'ડાબે થી જમણે (LTR)',langDirRTL:'જમણે થી ડાબે (RTL)',acccessKey:'ઍક્સેસ કી',name:'નામ',langCode:'ભાષા લેખવાની પદ્ધતિ',tabIndex:'ટૅબ ઇન્ડેક્સ',advisoryTitle:'મુખ્ય મથાળું',advisoryContentType:'મુખ્ય કન્ટેન્ટ પ્રકાર',cssClasses:'સ્ટાઇલ-શીટ ક્લાસ',charset:'લિંક રિસૉર્સ કૅરિક્ટર સેટ',styles:'સ્ટાઇલ',selectAnchor:'ઍંકર પસંદ કરો',anchorName:'ઍંકર નામથી પસંદ કરો',anchorId:'ઍંકર એલિમન્ટ Id થી પસંદ કરો',emailAddress:'ઈ-મેલ સરનામું',emailSubject:'ઈ-મેલ વિષય',emailBody:'સંદેશ',noAnchors:'(ડૉક્યુમન્ટમાં ઍંકરની સંખ્યા)',noUrl:'લિંક  URL ટાઇપ કરો',noEmail:'ઈ-મેલ સરનામું ટાઇપ કરો'},anchor:{toolbar:'ઍંકર ઇન્સર્ટ/દાખલ કરવી',menu:'ઍંકરના ગુણ',title:'ઍંકરના ગુણ',name:'ઍંકરનું નામ',errorName:'ઍંકરનું નામ ટાઈપ કરો'},findAndReplace:{title:'શોધવું અને બદલવું',find:'શોધવું',replace:'રિપ્લેસ/બદલવું',findWhat:'આ શોધો',replaceWith:'આનાથી બદલો',notFoundMsg:'તમે શોધેલી ટેક્સ્ટ નથી મળી',matchCase:'કેસ સરખા રાખો',matchWord:'બઘા શબ્દ સરખા રાખો',matchCyclic:'Match cyclic',replaceAll:'બઘા બદલી ',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'ટેબલ, કોઠો',title:'ટેબલ, કોઠાનું મથાળું',menu:'ટેબલ, કોઠાનું મથાળું',deleteTable:'કોઠો ડિલીટ/કાઢી નાખવું',rows:'પંક્તિના ખાના',columns:'કૉલમ/ઊભી કટાર',border:'કોઠાની બાજુ(બોર્ડર) સાઇઝ',align:'અલાઇનમન્ટ/ગોઠવાયેલું ',alignNotSet:'<સેટ નથી>',alignLeft:'ડાબી બાજુ',alignCenter:'મધ્ય સેન્ટર',alignRight:'જમણી બાજુ',width:'પહોળાઈ',widthPx:'પિકસલ',widthPc:'પ્રતિશત',height:'ઊંચાઈ',cellSpace:'સેલ અંતર',cellPad:'સેલ પૅડિંગ',caption:'મથાળું/કૅપ્શન ',summary:'ટૂંકો એહેવાલ',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'કોષના ખાના',insertBefore:'પહેલાં કોષ ઉમેરવો',insertAfter:'પછી કોષ ઉમેરવો',deleteCell:'કોષ ડિલીટ/કાઢી નાખવો',merge:'કોષ ભેગા કરવા',mergeRight:'જમણી બાજુ ભેગા કરવા',mergeDown:'નીચે ભેગા કરવા',splitHorizontal:'કોષને સમસ્તરીય વિભાજન કરવું',splitVertical:'કોષને સીધું ને ઊભું વિભાજન કરવું',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'પંક્તિના ખાના',insertBefore:'પહેલાં પંક્તિ ઉમેરવી',insertAfter:'પછી પંક્તિ ઉમેરવી',deleteRow:'પંક્તિઓ ડિલીટ/કાઢી નાખવી'},column:{menu:'કૉલમ/ઊભી કટાર',insertBefore:'પહેલાં કૉલમ/ઊભી કટાર ઉમેરવી',insertAfter:'પછી કૉલમ/ઊભી કટાર ઉમેરવી',deleteColumn:'કૉલમ/ઊભી કટાર ડિલીટ/કાઢી નાખવી'}},button:{title:'બટનના ગુણ',text:'ટેક્સ્ટ (વૅલ્યૂ)',type:'પ્રકાર',typeBtn:'બટન',typeSbm:'સબ્મિટ',typeRst:'રિસેટ'},checkboxAndRadio:{checkboxTitle:'ચેક બોક્સ ગુણ',radioTitle:'રેડિઓ બટનના ગુણ',value:'વૅલ્યૂ',selected:'સિલેક્ટેડ'},form:{title:'ફૉર્મ/પત્રકના ગુણ',menu:'ફૉર્મ/પત્રકના ગુણ',action:'ક્રિયા',method:'પદ્ધતિ',encoding:'Encoding',target:'ટાર્ગેટ/લક્ષ્ય',targetNotSet:'<સેટ નથી>',targetNew:'નવી  વિન્ડો (_blank)',targetTop:'ઉપરની વિન્ડો (_top)',targetSelf:'આજ વિન્ડો (_self)',targetParent:'મૂળ વિન્ડો (_parent)'},select:{title:'પસંદગી ક્ષેત્રના ગુણ',selectInfo:'સૂચના',opAvail:'ઉપલબ્ધ વિકલ્પ',value:'વૅલ્યૂ',size:'સાઇઝ',lines:'લીટીઓ',chkMulti:'એકથી વધારે પસંદ કરી શકો',opText:'ટેક્સ્ટ',opValue:'વૅલ્યૂ',btnAdd:'ઉમેરવું',btnModify:'બદલવું',btnUp:'ઉપર',btnDown:'નીચે',btnSetValue:'પસંદ કરલી વૅલ્યૂ સેટ કરો',btnDelete:'રદ કરવું'},textarea:{title:'ટેક્સ્ટ એઅરિઆ, શબ્દ વિસ્તારના ગુણ',cols:'કૉલમ/ઊભી કટાર',rows:'પંક્તિઓ'},textfield:{title:'ટેક્સ્ટ ફીલ્ડ, શબ્દ ક્ષેત્રના ગુણ',name:'નામ',value:'વૅલ્યૂ',charWidth:'કેરેક્ટરની પહોળાઈ',maxChars:'અધિકતમ કેરેક્ટર',type:'ટાઇપ',typeText:'ટેક્સ્ટ',typePass:'પાસવર્ડ'},hidden:{title:'ગુપ્ત ક્ષેત્રના ગુણ',name:'નામ',value:'વૅલ્યૂ'},image:{title:'ચિત્રના ગુણ',titleButton:'ચિત્ર બટનના ગુણ',menu:'ચિત્રના ગુણ',infoTab:'ચિત્ર ની જાણકારી',btnUpload:'આ સર્વરને મોકલવું',url:'URL',upload:'અપલોડ',alt:'ઑલ્ટર્નટ ટેક્સ્ટ',width:'પહોળાઈ',height:'ઊંચાઈ',lockRatio:'લૉક ગુણોત્તર',resetSize:'રીસેટ સાઇઝ',border:'બોર્ડર',hSpace:'સમસ્તરીય જગ્યા',vSpace:'લંબરૂપ જગ્યા',align:'લાઇનદોરીમાં ગોઠવવું',alignLeft:'ડાબી બાજુ ગોઠવવું',alignAbsBottom:'Abs નીચે',alignAbsMiddle:'Abs ઉપર',alignBaseline:'આધાર લીટી',alignBottom:'નીચે',alignMiddle:'વચ્ચે',alignRight:'જમણી',alignTextTop:'ટેક્સ્ટ ઉપર',alignTop:'ઉપર',preview:'પૂર્વદર્શન',alertUrl:'ચિત્રની URL ટાઇપ કરો',linkTab:'લિંક',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'ફ્લૅશના ગુણ',propertiesTab:'Properties',title:'ફ્લૅશ ગુણ',chkPlay:'ઑટો/સ્વયં પ્લે',chkLoop:'લૂપ',chkMenu:'ફ્લૅશ મેન્યૂ નો પ્રયોગ કરો',chkFull:'Allow Fullscreen',scale:'સ્કેલ',scaleAll:'સ્કેલ ઓલ/બધુ બતાવો',scaleNoBorder:'સ્કેલ બોર્ડર વગર',scaleFit:'સ્કેલ એકદમ ફીટ',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'લાઇનદોરીમાં ગોઠવવું',alignLeft:'ડાબી બાજુ ગોઠવવું',alignAbsBottom:'Abs નીચે',alignAbsMiddle:'Abs ઉપર',alignBaseline:'આધાર લીટી',alignBottom:'નીચે',alignMiddle:'વચ્ચે',alignRight:'જમણી',alignTextTop:'ટેક્સ્ટ ઉપર',alignTop:'ઉપર',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'બૅકગ્રાઉન્ડ રંગ,',width:'પહોળાઈ',height:'ઊંચાઈ',hSpace:'સમસ્તરીય જગ્યા',vSpace:'લંબરૂપ જગ્યા',validateSrc:'લિંક  URL ટાઇપ કરો',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'જોડણી (સ્પેલિંગ) તપાસવી',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'શબ્દકોશમાં નથી',changeTo:'આનાથી બદલવું',btnIgnore:'ઇગ્નોર/અવગણના કરવી',btnIgnoreAll:'બધાની ઇગ્નોર/અવગણના કરવી',btnReplace:'બદલવું',btnReplaceAll:'બધા બદલી કરો',btnUndo:'અન્ડૂ',noSuggestions:'- કઇ સજેશન નથી -',progress:'શબ્દની જોડણી/સ્પેલ ચેક ચાલુ છે...',noMispell:'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: ખોટી જોડણી મળી નથી',noChanges:'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એકપણ શબ્દ બદલયો નથી',oneChange:'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એક શબ્દ બદલયો છે',manyChanges:'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: %1 શબ્દ બદલયા છે',ieSpellDownload:'સ્પેલ-ચેકર ઇન્સ્ટોલ નથી. શું તમે ડાઉનલોડ કરવા માંગો છો?'},smiley:{toolbar:'સ્માઇલી',title:'સ્માઇલી  પસંદ કરો'},elementsPath:{eleTitle:'%1 element'},numberedlist:'સંખ્યાંકન સૂચિ',bulletedlist:'બુલેટ સૂચિ',indent:'ઇન્ડેન્ટ, લીટીના આરંભમાં જગ્યા વધારવી',outdent:'ઇન્ડેન્ટ લીટીના આરંભમાં જગ્યા ઘટાડવી',justify:{left:'ડાબી બાજુએ/બાજુ તરફ',center:'સંકેંદ્રણ/સેંટરિંગ',right:'જમણી બાજુએ/બાજુ તરફ',block:'બ્લૉક, અંતરાય જસ્ટિફાઇ'},blockquote:'બ્લૉક-કોટ, અવતરણચિહ્નો',clipboard:{title:'પેસ્ટ',cutError:'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl+X) નો ઉપયોગ કરો.',copyError:'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી.  (Ctrl+C) का प्रयोग करें।',pasteMsg:'Ctrl+V નો પ્રયોગ કરી પેસ્ટ કરો',securityMsg:'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.'},pastefromword:{toolbar:'પેસ્ટ (વડૅ ટેક્સ્ટ)',title:'પેસ્ટ (વડૅ ટેક્સ્ટ)',advice:'Ctrl+V નો પ્રયોગ કરી પેસ્ટ કરો',ignoreFontFace:'ફૉન્ટફેસ વ્યાખ્યાની અવગણના',removeStyle:'સ્ટાઇલ વ્યાખ્યા કાઢી નાખવી'},pasteText:{button:'પેસ્ટ (ટેક્સ્ટ)',title:'પેસ્ટ (ટેક્સ્ટ)'},templates:{button:'ટેમ્પ્લેટ',title:'કન્ટેન્ટ ટેમ્પ્લેટ',insertOption:'મૂળ શબ્દને બદલો',selectPromptMsg:'એડિટરમાં ઓપન કરવા ટેમ્પ્લેટ પસંદ કરો (વર્તમાન કન્ટેન્ટ સેવ નહીં થાય):',emptyListMsg:'(કોઈ ટેમ્પ્લેટ ડિફાઇન નથી)'},showBlocks:'બ્લૉક બતાવવું',stylesCombo:{label:'શૈલી/રીત',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'ફૉન્ટ ફૉર્મટ, રચનાની શૈલી',voiceLabel:'Format',panelTitle:'ફૉન્ટ ફૉર્મટ, રચનાની શૈલી',panelVoiceLabel:'Select a paragraph format',tag_p:'સામાન્ય',tag_pre:'ફૉર્મટેડ',tag_address:'સરનામું',tag_h1:'શીર્ષક 1',tag_h2:'શીર્ષક 2',tag_h3:'શીર્ષક 3',tag_h4:'શીર્ષક 4',tag_h5:'શીર્ષક 5',tag_h6:'શીર્ષક 6',tag_div:'શીર્ષક (DIV)'},font:{label:'ફૉન્ટ',voiceLabel:'Font',panelTitle:'ફૉન્ટ',panelVoiceLabel:'Select a font'},fontSize:{label:'ફૉન્ટ સાઇઝ/કદ',voiceLabel:'Font Size',panelTitle:'ફૉન્ટ સાઇઝ/કદ',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'શબ્દનો રંગ',bgColorTitle:'બૅકગ્રાઉન્ડ રંગ,',auto:'સ્વચાલિત',more:'ઔર રંગ...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/hu.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/hu.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/hu.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.hu={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Forráskód',newPage:'Új oldal',save:'Mentés',preview:'Előnézet',cut:'Kivágás',copy:'Másolás',paste:'Beillesztés',print:'Nyomtatás',underline:'Aláhúzott',bold:'Félkövér',italic:'Dőlt',selectAll:'Mindent kijelöl',removeFormat:'Formázás eltávolítása',strike:'Áthúzott',subscript:'Alsó index',superscript:'Felső index',horizontalrule:'Elválasztóvonal beillesztése',pagebreak:'Oldaltörés beillesztése',unlink:'Hivatkozás törlése',undo:'Visszavonás',redo:'Ismétlés',common:{browseServer:'Böngészés a szerveren',url:'Hivatkozás',protocol:'Protokoll',upload:'Feltöltés',uploadSubmit:'Küldés a szerverre',image:'Kép',flash:'Flash',form:'Űrlap',checkbox:'Jelölőnégyzet',radio:'Választógomb',textField:'Szövegmező',textarea:'Szövegterület',hiddenField:'Rejtettmező',button:'Gomb',select:'Legördülő lista',imageButton:'Képgomb',notSet:'<nincs beállítva>',id:'Azonosító',name:'Név',langDir:'Írás iránya',langDirLtr:'Balról jobbra',langDirRtl:'Jobbról balra',langCode:'Nyelv kódja',longDescr:'Részletes leírás webcíme',cssClass:'Stíluskészlet',advisoryTitle:'Súgócimke',cssStyle:'Stílus',ok:'Rendben',cancel:'Mégsem',generalTab:'General',advancedTab:'További opciók',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Speciális karakter beillesztése',title:'Speciális karakter választása'},link:{toolbar:'Hivatkozás beillesztése/módosítása',menu:'Hivatkozás módosítása',title:'Hivatkozás tulajdonságai',info:'Alaptulajdonságok',target:'Tartalom megjelenítése',upload:'Feltöltés',advanced:'További opciók',type:'Hivatkozás típusa',toAnchor:'Horgony az oldalon',toEmail:'E-Mail',target:'Tartalom megjelenítése',targetNotSet:'<nincs beállítva>',targetFrame:'<keretben>',targetPopup:'<felugró ablakban>',targetNew:'Új ablakban (_blank)',targetTop:'Legfelső ablakban (_top)',targetSelf:'Azonos ablakban (_self)',targetParent:'Szülő ablakban (_parent)',targetFrameName:'Keret neve',targetPopupName:'Felugró ablak neve',popupFeatures:'Felugró ablak jellemzői',popupResizable:'Resizable',popupStatusBar:'Állapotsor',popupLocationBar:'Címsor',popupToolbar:'Eszköztár',popupMenuBar:'Menü sor',popupFullScreen:'Teljes képernyő (csak IE)',popupScrollBars:'Gördítősáv',popupDependent:'Szülőhöz kapcsolt (csak Netscape)',popupWidth:'Szélesség',popupLeft:'Bal pozíció',popupHeight:'Magasság',popupTop:'Felső pozíció',id:'Id',langDir:'Írás iránya',langDirNotSet:'<nincs beállítva>',langDirLTR:'Balról jobbra',langDirRTL:'Jobbról balra',acccessKey:'Billentyűkombináció',name:'Név',langCode:'Írás iránya',tabIndex:'Tabulátor index',advisoryTitle:'Súgócimke',advisoryContentType:'Súgó tartalomtípusa',cssClasses:'Stíluskészlet',charset:'Hivatkozott tartalom kódlapja',styles:'Stílus',selectAnchor:'Horgony választása',anchorName:'Horgony név szerint',anchorId:'Azonosító szerint',emailAddress:'E-Mail cím',emailSubject:'Üzenet tárgya',emailBody:'Üzenet',noAnchors:'(Nincs horgony a dokumentumban)',noUrl:'Adja meg a hivatkozás webcímét',noEmail:'Adja meg az E-Mail címet'},anchor:{toolbar:'Horgony beillesztése/szerkesztése',menu:'Horgony tulajdonságai',title:'Horgony tulajdonságai',name:'Horgony neve',errorName:'Kérem adja meg a horgony nevét'},findAndReplace:{title:'Keresés és csere',find:'Keresés',replace:'Csere',findWhat:'Keresett szöveg:',replaceWith:'Csere erre:',notFoundMsg:'A keresett szöveg nem található.',matchCase:'kis- és nagybetű megkülönböztetése',matchWord:'csak ha ez a teljes szó',matchCyclic:'Match cyclic',replaceAll:'Az összes cseréje',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Táblázat',title:'Táblázat tulajdonságai',menu:'Táblázat tulajdonságai',deleteTable:'Táblázat törlése',rows:'Sorok',columns:'Oszlopok',border:'Szegélyméret',align:'Igazítás',alignNotSet:'<Nincs beállítva>',alignLeft:'Balra',alignCenter:'Középre',alignRight:'Jobbra',width:'Szélesség',widthPx:'képpont',widthPc:'százalék',height:'Magasság',cellSpace:'Cella térköz',cellPad:'Cella belső margó',caption:'Felirat',summary:'Leírás',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cella',insertBefore:'Cella beillesztése az aktuális cella elé',insertAfter:'Cella beillesztése az aktuális cella mögé',deleteCell:'Cellák törlése',merge:'Cellák egyesítése',mergeRight:'Cellák egyesítése jobbra',mergeDown:'Cellák egyesítése lefelé',splitHorizontal:'Cellák szétválasztása vízszintesen',splitVertical:'Cellák szétválasztása függőlegesen',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Sor',insertBefore:'Sor beillesztése az aktuális sor elé',insertAfter:'Sor beillesztése az aktuális sor mögé',deleteRow:'Sorok törlése'},column:{menu:'Oszlop',insertBefore:'Oszlop beillesztése az aktuális oszlop elé',insertAfter:'Oszlop beillesztése az aktuális oszlop mögé',deleteColumn:'Oszlopok törlése'}},button:{title:'Gomb tulajdonságai',text:'Szöveg (Érték)',type:'Típus',typeBtn:'Gomb',typeSbm:'Küldés',typeRst:'Alaphelyzet'},checkboxAndRadio:{checkboxTitle:'Jelölőnégyzet tulajdonságai',radioTitle:'Választógomb tulajdonságai',value:'Érték',selected:'Kiválasztott'},form:{title:'Űrlap tulajdonságai',menu:'Űrlap tulajdonságai',action:'Adatfeldolgozást végző hivatkozás',method:'Adatküldés módja',encoding:'Encoding',target:'Tartalom megjelenítése',targetNotSet:'<nincs beállítva>',targetNew:'Új ablakban (_blank)',targetTop:'Legfelső ablakban (_top)',targetSelf:'Azonos ablakban (_self)',targetParent:'Szülő ablakban (_parent)'},select:{title:'Legördülő lista tulajdonságai',selectInfo:'Alaptulajdonságok',opAvail:'Elérhető opciók',value:'Érték',size:'Méret',lines:'sor',chkMulti:'több sor is kiválasztható',opText:'Szöveg',opValue:'Érték',btnAdd:'Hozzáad',btnModify:'Módosít',btnUp:'Fel',btnDown:'Le',btnSetValue:'Legyen az alapértelmezett érték',btnDelete:'Töröl'},textarea:{title:'Szövegterület tulajdonságai',cols:'Karakterek száma egy sorban',rows:'Sorok száma'},textfield:{title:'Szövegmező tulajdonságai',name:'Név',value:'Érték',charWidth:'Megjelenített karakterek száma',maxChars:'Maximális karakterszám',type:'Típus',typeText:'Szöveg',typePass:'Jelszó'},hidden:{title:'Rejtett mező tulajdonságai',name:'Név',value:'Érték'},image:{title:'Kép tulajdonságai',titleButton:'Képgomb tulajdonságai',menu:'Kép tulajdonságai',infoTab:'Alaptulajdonságok',btnUpload:'Küldés a szerverre',url:'Hivatkozás',upload:'Feltöltés',alt:'Buborék szöveg',width:'Szélesség',height:'Magasság',lockRatio:'Arány megtartása',resetSize:'Eredeti méret',border:'Keret',hSpace:'Vízsz. táv',vSpace:'Függ. táv',align:'Igazítás',alignLeft:'Bal',alignAbsBottom:'Legaljára',alignAbsMiddle:'Közepére',alignBaseline:'Alapvonalhoz',alignBottom:'Aljára',alignMiddle:'Középre',alignRight:'Jobbra',alignTextTop:'Szöveg tetejére',alignTop:'Tetejére',preview:'Előnézet',alertUrl:'Töltse ki a kép webcímét',linkTab:'Hivatkozás',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash tulajdonságai',propertiesTab:'Properties',title:'Flash tulajdonságai',chkPlay:'Automata lejátszás',chkLoop:'Folyamatosan',chkMenu:'Flash menü engedélyezése',chkFull:'Allow Fullscreen',scale:'Méretezés',scaleAll:'Mindent mutat',scaleNoBorder:'Keret nélkül',scaleFit:'Teljes kitöltés',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Igazítás',alignLeft:'Bal',alignAbsBottom:'Legaljára',alignAbsMiddle:'Közepére',alignBaseline:'Alapvonalhoz',alignBottom:'Aljára',alignMiddle:'Középre',alignRight:'Jobbra',alignTextTop:'Szöveg tetejére',alignTop:'Tetejére',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Háttérszín',width:'Szélesség',height:'Magasság',hSpace:'Vízsz. táv',vSpace:'Függ. táv',validateSrc:'Adja meg a hivatkozás webcímét',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Helyesírás-ellenőrzés',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Nincs a szótárban',changeTo:'Módosítás',btnIgnore:'Kihagyja',btnIgnoreAll:'Mindet kihagyja',btnReplace:'Csere',btnReplaceAll:'Összes cseréje',btnUndo:'Visszavonás',noSuggestions:'Nincs javaslat',progress:'Helyesírás-ellenőrzés folyamatban...',noMispell:'Helyesírás-ellenőrzés kész: Nem találtam hibát',noChanges:'Helyesírás-ellenőrzés kész: Nincs változtatott szó',oneChange:'Helyesírás-ellenőrzés kész: Egy szó cserélve',manyChanges:'Helyesírás-ellenőrzés kész: %1 szó cserélve',ieSpellDownload:'A helyesírás-ellenőrző nincs telepítve. Szeretné letölteni most?'},smiley:{toolbar:'Hangulatjelek',title:'Hangulatjel beszúrása'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Számozás',bulletedlist:'Felsorolás',indent:'Behúzás növelése',outdent:'Behúzás csökkentése',justify:{left:'Balra',center:'Középre',right:'Jobbra',block:'Sorkizárt'},blockquote:'Idézet blokk',clipboard:{title:'Beillesztés',cutError:'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).',copyError:'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).',pasteMsg:'Másolja be az alábbi mezőbe a <STRONG>Ctrl+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.',securityMsg:'A böngésző biztonsági beállításai miatt a szerkesztő nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.'},pastefromword:{toolbar:'Beillesztés Word-ből',title:'Beillesztés Word-ből',advice:'Másolja be az alábbi mezőbe a <STRONG>Ctrl+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.',ignoreFontFace:'Betű formázások megszüntetése',removeStyle:'Stílusok eltávolítása'},pasteText:{button:'Beillesztés formázatlan szövegként',title:'Beillesztés formázatlan szövegként'},templates:{button:'Sablonok',title:'Elérhető sablonok',insertOption:'Kicseréli a jelenlegi tartalmat',selectPromptMsg:'Válassza ki melyik sablon nyíljon meg a szerkesztőben<br>(a jelenlegi tartalom elveszik):',emptyListMsg:'(Nincs sablon megadva)'},showBlocks:'Blokkok megjelenítése',stylesCombo:{label:'Stílus',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formátum',voiceLabel:'Format',panelTitle:'Formátum',panelVoiceLabel:'Select a paragraph format',tag_p:'Normál',tag_pre:'Formázott',tag_address:'Címsor',tag_h1:'Fejléc 1',tag_h2:'Fejléc 2',tag_h3:'Fejléc 3',tag_h4:'Fejléc 4',tag_h5:'Fejléc 5',tag_h6:'Fejléc 6',tag_div:'Bekezdés (DIV)'},font:{label:'Betűtípus',voiceLabel:'Font',panelTitle:'Betűtípus',panelVoiceLabel:'Select a font'},fontSize:{label:'Méret',voiceLabel:'Font Size',panelTitle:'Méret',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Betűszín',bgColorTitle:'Háttérszín',auto:'Automatikus',more:'További színek...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/no.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/no.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/no.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.no={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Kilde',newPage:'Ny Side',save:'Lagre',preview:'Forhåndsvis',cut:'Klipp ut',copy:'Kopier',paste:'Lim inn',print:'Skriv ut',underline:'Understrek',bold:'Fet',italic:'Kursiv',selectAll:'Merk alt',removeFormat:'Fjern format',strike:'Gjennomstrek',subscript:'Senket skrift',superscript:'Hevet skrift',horizontalrule:'Sett inn horisontal linje',pagebreak:'Sett inn sideskift',unlink:'Fjern lenke',undo:'Angre',redo:'Gjør om',common:{browseServer:'Bla igjennom server',url:'URL',protocol:'Protokoll',upload:'Last opp',uploadSubmit:'Send det til serveren',image:'Bilde',flash:'Flash',form:'Skjema',checkbox:'Avmerkingsboks',radio:'Alternativknapp',textField:'Tekstboks',textarea:'Tekstområde',hiddenField:'Skjult felt',button:'Knapp',select:'Rullegardinliste',imageButton:'Bildeknapp',notSet:'<ikke satt>',id:'Id',name:'Navn',langDir:'Språkretning',langDirLtr:'Venstre til høyre (VTH)',langDirRtl:'Høyre til venstre (HTV)',langCode:'Språkkode',longDescr:'Utvidet beskrivelse',cssClass:'Stilarkklasser',advisoryTitle:'Tittel',cssStyle:'Stil',ok:'OK',cancel:'Avbryt',generalTab:'Generelt',advancedTab:'Avansert',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Sett inn spesielt tegn',title:'Velg spesielt tegn'},link:{toolbar:'Sett inn/Rediger lenke',menu:'Rediger lenke',title:'Lenke',info:'Lenkeinfo',target:'Mål',upload:'Last opp',advanced:'Avansert',type:'Lenketype',toAnchor:'Lenke til anker i teksten',toEmail:'E-post',target:'Mål',targetNotSet:'<ikke satt>',targetFrame:'<ramme>',targetPopup:'<popup vindu>',targetNew:'Nytt vindu (_blank)',targetTop:'Hele vindu (_top)',targetSelf:'Samme vindu (_self)',targetParent:'Foreldrevindu (_parent)',targetFrameName:'Målramme',targetPopupName:'Navn på popup-vindus',popupFeatures:'Egenskaper for popup-vindu',popupResizable:'Resizable',popupStatusBar:'Statuslinje',popupLocationBar:'Adresselinje',popupToolbar:'Verktøylinje',popupMenuBar:'Menylinje',popupFullScreen:'Full skjerm (IE)',popupScrollBars:'Scrollbar',popupDependent:'Avhenging (Netscape)',popupWidth:'Bredde',popupLeft:'Venstre posisjon',popupHeight:'Høyde',popupTop:'Topp-posisjon',id:'Id',langDir:'Språkretning',langDirNotSet:'<ikke satt>',langDirLTR:'Venstre til høyre (VTH)',langDirRTL:'Høyre til venstre (HTV)',acccessKey:'Aksessknapp',name:'Navn',langCode:'Språkretning',tabIndex:'Tab Indeks',advisoryTitle:'Tittel',advisoryContentType:'Type',cssClasses:'Stilarkklasser',charset:'Lenket språkkart',styles:'Stil',selectAnchor:'Velg et anker',anchorName:'Anker etter navn',anchorId:'Element etter ID',emailAddress:'E-postadresse',emailSubject:'Meldingsemne',emailBody:'Melding',noAnchors:'(Ingen anker i dokumentet)',noUrl:'Vennligst skriv inn lenkens url',noEmail:'Vennligst skriv inn e-postadressen'},anchor:{toolbar:'Sett inn/Rediger anker',menu:'Egenskaper for anker',title:'Egenskaper for anker',name:'Ankernavn',errorName:'Vennligst skriv inn ankernavnet'},findAndReplace:{title:'Søk og erstatt',find:'Søk',replace:'Erstatt',findWhat:'Søk etter:',replaceWith:'Erstatt med:',notFoundMsg:'Fant ikke søketeksten.',matchCase:'Skill mellom store og små bokstaver',matchWord:'Bare hele ord',matchCyclic:'Match cyclic',replaceAll:'Erstatt alle',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabell',title:'Egenskaper for tabell',menu:'Egenskaper for tabell',deleteTable:'Slett tabell',rows:'Rader',columns:'Kolonner',border:'Rammestørrelse',align:'Justering',alignNotSet:'<Ikke satt>',alignLeft:'Venstre',alignCenter:'Midtjuster',alignRight:'Høyre',width:'Bredde',widthPx:'piksler',widthPc:'prosent',height:'Høyde',cellSpace:'Cellemarg',cellPad:'Cellepolstring',caption:'Tittel',summary:'Sammendrag',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Celle',insertBefore:'Sett inn celle før',insertAfter:'Sett inn celle etter',deleteCell:'Slett celler',merge:'Slå sammen celler',mergeRight:'Slå sammen høyre',mergeDown:'Slå sammen ned',splitHorizontal:'Del celle horisontalt',splitVertical:'Del celle vertikalt',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Rader',insertBefore:'Sett inn rad før',insertAfter:'Sett inn rad etter',deleteRow:'Slett rader'},column:{menu:'Kolonne',insertBefore:'Sett inn kolonne før',insertAfter:'Sett inn kolonne etter',deleteColumn:'Slett kolonner'}},button:{title:'Egenskaper for knapp',text:'Tekst (verdi)',type:'Type',typeBtn:'Knapp',typeSbm:'Send',typeRst:'Nullstill'},checkboxAndRadio:{checkboxTitle:'Egenskaper for avmerkingsboks',radioTitle:'Egenskaper for alternativknapp',value:'Verdi',selected:'Valgt'},form:{title:'Egenskaper for skjema',menu:'Egenskaper for skjema',action:'Handling',method:'Metode',encoding:'Encoding',target:'Mål',targetNotSet:'<ikke satt>',targetNew:'Nytt vindu (_blank)',targetTop:'Hele vindu (_top)',targetSelf:'Samme vindu (_self)',targetParent:'Foreldrevindu (_parent)'},select:{title:'Egenskaper for rullegardinliste',selectInfo:'Info',opAvail:'Tilgjenglige alternativer',value:'Verdi',size:'Størrelse',lines:'Linjer',chkMulti:'Tillat flervalg',opText:'Tekst',opValue:'Verdi',btnAdd:'Legg til',btnModify:'Endre',btnUp:'Opp',btnDown:'Ned',btnSetValue:'Sett som valgt',btnDelete:'Slett'},textarea:{title:'Egenskaper for tekstområde',cols:'Kolonner',rows:'Rader'},textfield:{title:'Egenskaper for tekstfelt',name:'Navn',value:'Verdi',charWidth:'Tegnbredde',maxChars:'Maks antall tegn',type:'Type',typeText:'Tekst',typePass:'Passord'},hidden:{title:'Egenskaper for skjult felt',name:'Navn',value:'Verdi'},image:{title:'Bildeegenskaper',titleButton:'Egenskaper for bildeknapp',menu:'Bildeegenskaper',infoTab:'Bildeinformasjon',btnUpload:'Send det til serveren',url:'URL',upload:'Last opp',alt:'Alternativ tekst',width:'Bredde',height:'Høyde',lockRatio:'Lås forhold',resetSize:'Tilbakestill størrelse',border:'Ramme',hSpace:'HMarg',vSpace:'VMarg',align:'Juster',alignLeft:'Venstre',alignAbsBottom:'Abs bunn',alignAbsMiddle:'Abs midten',alignBaseline:'Bunnlinje',alignBottom:'Bunn',alignMiddle:'Midten',alignRight:'Høyre',alignTextTop:'Tekst topp',alignTop:'Topp',preview:'Forhåndsvis',alertUrl:'Vennligst skriv bilde-urlen',linkTab:'Lenke',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Egenskaper for Flash-objekt',propertiesTab:'Properties',title:'Flash-egenskaper',chkPlay:'Autospill',chkLoop:'Loop',chkMenu:'Slå på Flash-meny',chkFull:'Allow Fullscreen',scale:'Skaler',scaleAll:'Vis alt',scaleNoBorder:'Ingen ramme',scaleFit:'Skaler til å passe',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Juster',alignLeft:'Venstre',alignAbsBottom:'Abs bunn',alignAbsMiddle:'Abs midten',alignBaseline:'Bunnlinje',alignBottom:'Bunn',alignMiddle:'Midten',alignRight:'Høyre',alignTextTop:'Tekst topp',alignTop:'Topp',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Bakgrunnsfarge',width:'Bredde',height:'Høyde',hSpace:'HMarg',vSpace:'VMarg',validateSrc:'Vennligst skriv inn lenkens url',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Stavekontroll',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Ikke i ordboken',changeTo:'Endre til',btnIgnore:'Ignorer',btnIgnoreAll:'Ignorer alle',btnReplace:'Erstatt',btnReplaceAll:'Erstatt alle',btnUndo:'Angre',noSuggestions:'- Ingen forslag -',progress:'Stavekontroll pågår...',noMispell:'Stavekontroll fullført: ingen feilstavinger funnet',noChanges:'Stavekontroll fullført: ingen ord endret',oneChange:'Stavekontroll fullført: Ett ord endret',manyChanges:'Stavekontroll fullført: %1 ord endret',ieSpellDownload:'Stavekontroll er ikke installert. Vil du laste den ned nå?'},smiley:{toolbar:'Smil',title:'Sett inn smil'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Nummerert liste',bulletedlist:'Uordnet liste',indent:'Øk nivå',outdent:'Senk nivå',justify:{left:'Venstrejuster',center:'Midtjuster',right:'Høyrejuster',block:'Blokkjuster'},blockquote:'Blockquote',clipboard:{title:'Lim inn',cutError:'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).',copyError:'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).',pasteMsg:'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',securityMsg:'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.'},pastefromword:{toolbar:'Lim inn fra Word',title:'Lim inn fra Word',advice:'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',ignoreFontFace:'Fjern skrifttyper',removeStyle:'Fjern stildefinisjoner'},pasteText:{button:'Lim inn som ren tekst',title:'Lim inn som ren tekst'},templates:{button:'Maler',title:'Innholdsmaler',insertOption:'Erstatt faktisk innold',selectPromptMsg:'Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):',emptyListMsg:'(Ingen maler definert)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stil',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',voiceLabel:'Format',panelTitle:'Format',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatert',tag_address:'Adresse',tag_h1:'Tittel 1',tag_h2:'Tittel 2',tag_h3:'Tittel 3',tag_h4:'Tittel 4',tag_h5:'Tittel 5',tag_h6:'Tittel 6',tag_div:'Normal (DIV)'},font:{label:'Skrift',voiceLabel:'Font',panelTitle:'Skrift',panelVoiceLabel:'Select a font'},fontSize:{label:'Størrelse',voiceLabel:'Font Size',panelTitle:'Størrelse',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Tekstfarge',bgColorTitle:'Bakgrunnsfarge',auto:'Automatisk',more:'Flere farger...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/sk.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/sk.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/sk.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.sk={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Zdroj',newPage:'Nová stránka',save:'Uložiť',preview:'Náhľad',cut:'Vystrihnúť',copy:'Kopírovať',paste:'Vložiť',print:'Tlač',underline:'Podčiarknuté',bold:'Tučné',italic:'Kurzíva',selectAll:'Vybrať všetko',removeFormat:'Odstrániť formátovanie',strike:'Prečiarknuté',subscript:'Dolný index',superscript:'Horný index',horizontalrule:'Vložiť vodorovnú čiaru',pagebreak:'Vložiť oddeľovač stránky',unlink:'Odstrániť odkaz',undo:'Späť',redo:'Znovu',common:{browseServer:'Prechádzať server',url:'URL',protocol:'Protokol',upload:'Odoslať',uploadSubmit:'Odoslať na server',image:'Obrázok',flash:'Flash',form:'Formulár',checkbox:'Zaškrtávacie políčko',radio:'Prepínač',textField:'Textové pole',textarea:'Textová oblasť',hiddenField:'Skryté pole',button:'Tlačidlo',select:'Rozbaľovací zoznam',imageButton:'Obrázkové tlačidlo',notSet:'<nenastavené>',id:'Id',name:'Meno',langDir:'Orientácia jazyka',langDirLtr:'Zľava doprava (LTR)',langDirRtl:'Sprava doľava (RTL)',langCode:'Kód jazyka',longDescr:'Dlhý popis URL',cssClass:'Trieda štýlu',advisoryTitle:'Pomocný titulok',cssStyle:'Štýl',ok:'OK',cancel:'Zrušiť',generalTab:'Hlavné',advancedTab:'Rozšírené',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Vložiť špeciálne znaky',title:'Výber špeciálneho znaku'},link:{toolbar:'Vložiť/zmeniť odkaz',menu:'Zmeniť odkaz',title:'Odkaz',info:'Informácie o odkaze',target:'Cieľ',upload:'Odoslať',advanced:'Rozšírené',type:'Typ odkazu',toAnchor:'Kotva v tejto stránke',toEmail:'E-Mail',target:'Cieľ',targetNotSet:'<nenastavené>',targetFrame:'<rámec>',targetPopup:'<vyskakovacie okno>',targetNew:'Nové okno (_blank)',targetTop:'Hlavné okno (_top)',targetSelf:'Rovnaké okno (_self)',targetParent:'Rodičovské okno (_parent)',targetFrameName:'Meno rámu cieľa',targetPopupName:'Názov vyskakovacieho okna',popupFeatures:'Vlastnosti vyskakovacieho okna',popupResizable:'Resizable',popupStatusBar:'Stavový riadok',popupLocationBar:'Panel umiestnenia',popupToolbar:'Panel nástrojov',popupMenuBar:'Panel ponuky',popupFullScreen:'Celá obrazovka (IE)',popupScrollBars:'Posuvníky',popupDependent:'Závislosť (Netscape)',popupWidth:'Šírka',popupLeft:'Ľavý okraj',popupHeight:'Výška',popupTop:'Horný okraj',id:'Id',langDir:'Orientácia jazyka',langDirNotSet:'<nenastavené>',langDirLTR:'Zľava doprava (LTR)',langDirRTL:'Sprava doľava (RTL)',acccessKey:'Prístupový kľúč',name:'Meno',langCode:'Orientácia jazyka',tabIndex:'Poradie prvku',advisoryTitle:'Pomocný titulok',advisoryContentType:'Pomocný typ obsahu',cssClasses:'Trieda štýlu',charset:'Priradená znaková sada',styles:'Štýl',selectAnchor:'Vybrať kotvu',anchorName:'Podľa mena kotvy',anchorId:'Podľa Id objektu',emailAddress:'E-Mailová adresa',emailSubject:'Predmet správy',emailBody:'Telo správy',noAnchors:'(V stránke nie je definovaná žiadna kotva)',noUrl:'Zadajte prosím URL odkazu',noEmail:'Zadajte prosím e-mailovú adresu'},anchor:{toolbar:'Vložiť/zmeniť kotvu',menu:'Vlastnosti kotvy',title:'Vlastnosti kotvy',name:'Meno kotvy',errorName:'Zadajte prosím meno kotvy'},findAndReplace:{title:'Nájsť a nahradiť',find:'Hľadať',replace:'Nahradiť',findWhat:'Čo hľadať:',replaceWith:'Čím nahradiť:',notFoundMsg:'Hľadaný text nebol nájdený.',matchCase:'Rozlišovať malé/veľké písmená',matchWord:'Len celé slová',matchCyclic:'Match cyclic',replaceAll:'Nahradiť všetko',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabuľka',title:'Vlastnosti tabuľky',menu:'Vlastnosti tabuľky',deleteTable:'Vymazať tabuľku',rows:'Riadky',columns:'Stĺpce',border:'Ohraničenie',align:'Zarovnanie',alignNotSet:'<nenastavené>',alignLeft:'Vľavo',alignCenter:'Na stred',alignRight:'Vpravo',width:'Šírka',widthPx:'pixelov',widthPc:'percent',height:'Výška',cellSpace:'Vzdialenosť buniek',cellPad:'Odsadenie obsahu',caption:'Popis',summary:'Prehľad',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Bunka',insertBefore:'Vložiť bunku pred',insertAfter:'Vložiť bunku za',deleteCell:'Vymazať bunky',merge:'Zlúčiť bunky',mergeRight:'Zlúčiť doprava',mergeDown:'Zlúčiť dole',splitHorizontal:'Rozdeliť bunky horizontálne',splitVertical:'Rozdeliť bunky vertikálne',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Riadok',insertBefore:'Vložiť riadok za',insertAfter:'Vložiť riadok pred',deleteRow:'Vymazať riadok'},column:{menu:'Stĺpec',insertBefore:'Vložiť stĺpec za',insertAfter:'Vložiť stĺpec pred',deleteColumn:'Zmazať stĺpec'}},button:{title:'Vlastnosti tlačidla',text:'Text',type:'Typ',typeBtn:'Tlačidlo',typeSbm:'Odoslať',typeRst:'Vymazať'},checkboxAndRadio:{checkboxTitle:'Vlastnosti zaškrtávacieho políčka',radioTitle:'Vlastnosti prepínača',value:'Hodnota',selected:'Vybrané'},form:{title:'Vlastnosti formulára',menu:'Vlastnosti formulára',action:'Akcie',method:'Metóda',encoding:'Encoding',target:'Cieľ',targetNotSet:'<nenastavené>',targetNew:'Nové okno (_blank)',targetTop:'Hlavné okno (_top)',targetSelf:'Rovnaké okno (_self)',targetParent:'Rodičovské okno (_parent)'},select:{title:'Vlastnosti rozbaľovacieho zoznamu',selectInfo:'Info',opAvail:'Dostupné možnosti',value:'Hodnota',size:'Veľkosť',lines:'riadkov',chkMulti:'Povoliť viacnásobný výber',opText:'Text',opValue:'Hodnota',btnAdd:'Pridať',btnModify:'Zmeniť',btnUp:'Hore',btnDown:'Dole',btnSetValue:'Nastaviť ako vybranú hodnotu',btnDelete:'Zmazať'},textarea:{title:'Vlastnosti textovej oblasti',cols:'Stĺpce',rows:'Riadky'},textfield:{title:'Vlastnosti textového poľa',name:'Názov',value:'Hodnota',charWidth:'Šírka pola (znakov)',maxChars:'Maximálny počet znakov',type:'Typ',typeText:'Text',typePass:'Heslo'},hidden:{title:'Vlastnosti skrytého poľa',name:'Názov',value:'Hodnota'},image:{title:'Vlastnosti obrázku',titleButton:'Vlastnosti obrázkového tlačidla',menu:'Vlastnosti obrázku',infoTab:'Informácie o obrázku',btnUpload:'Odoslať na server',url:'URL',upload:'Odoslať',alt:'Alternatívny text',width:'Šírka',height:'Výška',lockRatio:'Zámok',resetSize:'Pôvodná veľkosť',border:'Okraje',hSpace:'H-medzera',vSpace:'V-medzera',align:'Zarovnanie',alignLeft:'Vľavo',alignAbsBottom:'Úplne dole',alignAbsMiddle:'Do stredu',alignBaseline:'Na základňu',alignBottom:'Dole',alignMiddle:'Na stred',alignRight:'Vpravo',alignTextTop:'Na horný okraj textu',alignTop:'Nahor',preview:'Náhľad',alertUrl:'Zadajte prosím URL obrázku',linkTab:'Odkaz',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Vlastnosti Flashu',propertiesTab:'Properties',title:'Vlastnosti Flashu',chkPlay:'Automatické prehrávanie',chkLoop:'Opakovanie',chkMenu:'Povoliť Flash Menu',chkFull:'Allow Fullscreen',scale:'Mierka',scaleAll:'Zobraziť mierku',scaleNoBorder:'Bez okrajov',scaleFit:'Roztiahnuť na celé',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Zarovnanie',alignLeft:'Vľavo',alignAbsBottom:'Úplne dole',alignAbsMiddle:'Do stredu',alignBaseline:'Na základňu',alignBottom:'Dole',alignMiddle:'Na stred',alignRight:'Vpravo',alignTextTop:'Na horný okraj textu',alignTop:'Nahor',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Farba pozadia',width:'Šírka',height:'Výška',hSpace:'H-medzera',vSpace:'V-medzera',validateSrc:'Zadajte prosím URL odkazu',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Kontrola pravopisu',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Nie je v slovníku',changeTo:'Zmeniť na',btnIgnore:'Ignorovať',btnIgnoreAll:'Ignorovať všetko',btnReplace:'Prepísat',btnReplaceAll:'Prepísat všetko',btnUndo:'Späť',noSuggestions:'- Žiadny návrh -',progress:'Prebieha kontrola pravopisu...',noMispell:'Kontrola pravopisu dokončená: bez chýb',noChanges:'Kontrola pravopisu dokončená: žiadne slová nezmenené',oneChange:'Kontrola pravopisu dokončená: zmenené jedno slovo',manyChanges:'Kontrola pravopisu dokončená: zmenených %1 slov',ieSpellDownload:'Kontrola pravopisu nie je naištalovaná. Chcete ju hneď stiahnuť?'},smiley:{toolbar:'Smajlíky',title:'Vkladanie smajlíkov'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Číslovanie',bulletedlist:'Odrážky',indent:'Zväčšiť odsadenie',outdent:'Zmenšiť odsadenie',justify:{left:'Zarovnať vľavo',center:'Zarovnať na stred',right:'Zarovnať vpravo',block:'Zarovnať do bloku'},blockquote:'Citácia',clipboard:{title:'Vložiť',cutError:'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre vystrihnutie zvoleného textu do schránky. Prosím vystrihnite zvolený text do schránky pomocou klávesnice (Ctrl+X).',copyError:'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre kopírovanie zvoleného textu do schránky. Prosím skopírujte zvolený text do schránky pomocou klávesnice (Ctrl+C).',pasteMsg:'Prosím vložte nasledovný rámček použitím klávesnice (<STRONG>Ctrl+V</STRONG>) a stlačte <STRONG>OK</STRONG>.',securityMsg:'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru pristupovať priamo k datám v schránke. Musíte ich vložiť znovu do tohto okna.'},pastefromword:{toolbar:'Vložiť z Wordu',title:'Vložiť z Wordu',advice:'Prosím vložte nasledovný rámček použitím klávesnice (<STRONG>Ctrl+V</STRONG>) a stlačte <STRONG>OK</STRONG>.',ignoreFontFace:'Ignorovať nastavenia typu písma',removeStyle:'Odstrániť formátovanie'},pasteText:{button:'Vložiť ako čistý text',title:'Vložiť ako čistý text'},templates:{button:'Šablóny',title:'Šablóny obsahu',insertOption:'Nahradiť aktuálny obsah',selectPromptMsg:'Prosím vyberte šablóny na otvorenie v editore<br>(súšasný obsah bude stratený):',emptyListMsg:'(žiadne šablóny nenájdené)'},showBlocks:'Ukázať bloky',stylesCombo:{label:'Štýl',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formát',voiceLabel:'Format',panelTitle:'Formát',panelVoiceLabel:'Select a paragraph format',tag_p:'Normálny',tag_pre:'Formátovaný',tag_address:'Adresa',tag_h1:'Nadpis 1',tag_h2:'Nadpis 2',tag_h3:'Nadpis 3',tag_h4:'Nadpis 4',tag_h5:'Nadpis 5',tag_h6:'Nadpis 6',tag_div:'Odsek (DIV)'},font:{label:'Písmo',voiceLabel:'Font',panelTitle:'Písmo',panelVoiceLabel:'Select a font'},fontSize:{label:'Veľkosť',voiceLabel:'Font Size',panelTitle:'Veľkosť',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Farba textu',bgColorTitle:'Farba pozadia',auto:'Automaticky',more:'Viac farieb...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/vi.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/vi.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/vi.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.vi={dir:'ltr',editorTitle:'Trình biên tập trực quan, %1',source:'Mã HTML',newPage:'Trang mới',save:'Lưu',preview:'Xem trước',cut:'Cắt',copy:'Sao chép',paste:'Dán',print:'In',underline:'Gạch chân',bold:'Đậm',italic:'Nghiêng',selectAll:'Chọn Tất cả',removeFormat:'Xoá Định dạng',strike:'Gạch xuyên ngang',subscript:'Chỉ số dưới',superscript:'Chỉ số trên',horizontalrule:'Chèn Đường phân cách ngang',pagebreak:'Chèn Ngắt trang',unlink:'Xoá Liên kết',undo:'Khôi phục thao tác',redo:'Làm lại thao tác',common:{browseServer:'Duyệt trên máy chủ',url:'URL',protocol:'Giao thức',upload:'Tải lên',uploadSubmit:'Tải lên Máy chủ',image:'Hình ảnh',flash:'Flash',form:'Biểu mẫu',checkbox:'Nút kiểm',radio:'Nút chọn',textField:'Trường văn bản',textarea:'Vùng văn bản',hiddenField:'Trường ẩn',button:'Nút',select:'Ô chọn',imageButton:'Nút hình ảnh',notSet:'<không thiết lập>',id:'Định danh',name:'Tên',langDir:'Đường dẫn Ngôn ngữ',langDirLtr:'Trái sang Phải (LTR)',langDirRtl:'Phải sang Trái (RTL)',langCode:'Mã Ngôn ngữ',longDescr:'Mô tả URL',cssClass:'Lớp Stylesheet',advisoryTitle:'Advisory Title',cssStyle:'Mẫu',ok:'Đồng ý',cancel:'Bỏ qua',generalTab:'Chung',advancedTab:'Mở rộng',validateNumberFailed:'Giá trị này không phải là số.',confirmNewPage:'Mọi thay đổi không được không được lưu lại của nội dung này sẽ bị mất. Bạn có chắc chắn muốn tải một trang mới?',confirmCancel:'Một vài tùy chọn đã bị thay đổi. Bạn có chắc chắn muốn đóng hộp thoại?',unavailable:'%1<span class="cke_accessibility">, không có</span>'},specialChar:{toolbar:'Chèn Ký tự đặc biệt',title:'Hãy chọn Ký tự đặc biệt'},link:{toolbar:'Chèn/Sửa Liên kết',menu:'Sửa Liên kết',title:'Liên kết',info:'Thông tin Liên kết',target:'Đích',upload:'Tải lên',advanced:'Mở rộng',type:'Kiểu Liên kết',toAnchor:'Neo trong trang này',toEmail:'Thư điện tử',target:'Đích',targetNotSet:'<không thiết lập>',targetFrame:'<khung>',targetPopup:'<cửa sổ popup>',targetNew:'Cửa sổ mới (_blank)',targetTop:'Cửa sổ trên cùng(_top)',targetSelf:'Cùng cửa sổ (_self)',targetParent:'Cửa sổ cha (_parent)',targetFrameName:'Tên Khung đích',targetPopupName:'Tên Cửa sổ Popup',popupFeatures:'Đặc điểm của Cửa sổ Popup',popupResizable:'Có thể thay đổi kích cỡ',popupStatusBar:'Thanh trạng thái',popupLocationBar:'Thanh vị trí',popupToolbar:'Thanh công cụ',popupMenuBar:'Thanh Menu',popupFullScreen:'Toàn màn hình (IE)',popupScrollBars:'Thanh cuộn',popupDependent:'Phụ thuộc (Netscape)',popupWidth:'Rộng',popupLeft:'Vị trí Trái',popupHeight:'Cao',popupTop:'Vị trí Trên',id:'Định danh',langDir:'Đường dẫn Ngôn ngữ',langDirNotSet:'<không thiết lập>',langDirLTR:'Trái sang Phải (LTR)',langDirRTL:'Phải sang Trái (RTL)',acccessKey:'Phím Hỗ trợ truy cập',name:'Tên',langCode:'Đường dẫn Ngôn ngữ',tabIndex:'Chỉ số của Tab',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Lớp Stylesheet',charset:'Bảng mã của tài nguyên được liên kết đến',styles:'Mẫu',selectAnchor:'Chọn một Neo',anchorName:'Theo Tên Neo',anchorId:'Theo Định danh Thành phần',emailAddress:'Thư điện tử',emailSubject:'Tiêu đề Thông điệp',emailBody:'Nội dung Thông điệp',noAnchors:'(Không có Neo nào trong tài liệu)',noUrl:'Hãy đưa vào Liên kết URL',noEmail:'Hãy đưa vào địa chỉ thư điện tử'},anchor:{toolbar:'Chèn/Sửa Neo',menu:'Thuộc tính Neo',title:'Thuộc tính Neo',name:'Tên của Neo',errorName:'Hãy nhập vào tên của Neo'},findAndReplace:{title:'Tìm kiếm và Thay Thế',find:'Tìm kiếm',replace:'Thay thế',findWhat:'Tìm chuỗi:',replaceWith:'Thay bằng:',notFoundMsg:'Không tìm thấy chuỗi cần tìm.',matchCase:'Phân biệt chữ hoa/thường',matchWord:'Giống toàn bộ từ',matchCyclic:'Giống một phần',replaceAll:'Thay thế Tất cả',replaceSuccessMsg:'%1 vị trí đã được thay thế.'},table:{toolbar:'Bảng',title:'Thuộc tính bảng',menu:'Thuộc tính bảng',deleteTable:'Xóa Bảng',rows:'Hàng',columns:'Cột',border:'Cỡ Đường viền',align:'Canh lề',alignNotSet:'<Chưa thiết lập>',alignLeft:'Trái',alignCenter:'Giữa',alignRight:'Phải',width:'Rộng',widthPx:'điểm (px)',widthPc:'%',height:'Cao',cellSpace:'Khoảng cách Ô',cellPad:'Đệm Ô',caption:'Đầu đề',summary:'Tóm lược',headers:'Đầu đề',headersNone:'Không có',headersColumn:'Cột Đầu tiên',headersRow:'Hàng Đầu tiên',headersBoth:'Cả hai',invalidRows:'Số lượng hàng phải là một số lớn hơn 0.',invalidCols:'Số lượng cột phải là một số lớn hơn 0.',invalidBorder:'Kích cỡ của đường biên phải là một số nguyên.',invalidWidth:'Chiều rộng của Bảng phải là một số nguyên.',invalidHeight:'Chiều cao của Bảng phải là một số nguyên.',invalidCellSpacing:'Khoảng cách giữa các ô phải là một số nguyên.',invalidCellPadding:'Đệm giữa các ô phải là một số nguyên.',cell:{menu:'Ô',insertBefore:'Chèn Ô Phía trước',insertAfter:'Chèn Ô Phía sau',deleteCell:'Xoá Ô',merge:'Kết hợp Ô',mergeRight:'Kết hợp Sang phải',mergeDown:'Kết hợp Xuống dưới',splitHorizontal:'Tách ngang Ô',splitVertical:'Tách dọc Ô',title:'Thuộc tính của Ô',cellType:'Kiểu của Ô',rowSpan:'Kết hợp hàng',colSpan:'Kết hợp cột',wordWrap:'Word Wrap',hAlign:'Canh lề ngang',vAlign:'Canh lề dọc',alignTop:'Trên cùng',alignMiddle:'Chính giữa',alignBottom:'Dưới cùng',alignBaseline:'Đường cơ sở',bgColor:'Màu nền',borderColor:'Màu viền',data:'Dữ liệu',header:'Đầu đề',yes:'Có',no:'Không',invalidWidth:'Chiều rộng của Ô phải là một số nguyên.',invalidHeight:'Chiều cao của Ô phải là một số nguyên.',invalidRowSpan:'Số hàng kết hợp phải là một số nguyên.',invalidColSpan:'Số cột kết hợp phải là một số nguyên.',chooseColor:'Choose'},row:{menu:'Hàng',insertBefore:'Chèn Hàng Phía trước',insertAfter:'Chèn Hàng Phía sau',deleteRow:'Xoá Hàng'},column:{menu:'Cột',insertBefore:'Chèn Cột Phía trước',insertAfter:'Chèn Cột Phía sau',deleteColumn:'Xoá Cột'}},button:{title:'Thuộc tính Nút',text:'Chuỗi hiển thị (Giá trị)',type:'Kiểu',typeBtn:'Nút Bấm',typeSbm:'Nút Gửi',typeRst:'Nút Nhập lại'},checkboxAndRadio:{checkboxTitle:'Thuộc tính Nút kiểm',radioTitle:'Thuộc tính Nút chọn',value:'Giá trị',selected:'Được chọn'},form:{title:'Thuộc tính Biểu mẫu',menu:'Thuộc tính Biểu mẫu',action:'Hành động',method:'Phương thức',encoding:'Bảng mã',target:'Đích',targetNotSet:'<không thiết lập>',targetNew:'Cửa sổ mới (_blank)',targetTop:'Cửa sổ trên cùng(_top)',targetSelf:'Cùng cửa sổ (_self)',targetParent:'Cửa sổ cha (_parent)'},select:{title:'Thuộc tính Ô chọn',selectInfo:'Thông tin',opAvail:'Các tùy chọn có thể sử dụng',value:'Giá trị',size:'Kích cỡ',lines:'dòng',chkMulti:'Cho phép chọn nhiều',opText:'Văn bản',opValue:'Giá trị',btnAdd:'Thêm',btnModify:'Thay đổi',btnUp:'Lên',btnDown:'Xuống',btnSetValue:'Giá trị được chọn',btnDelete:'Xoá'},textarea:{title:'Thuộc tính Vùng văn bản',cols:'Cột',rows:'Hàng'},textfield:{title:'Thuộc tính Trường văn bản',name:'Tên',value:'Giá trị',charWidth:'Rộng',maxChars:'Số Ký tự tối đa',type:'Kiểu',typeText:'Ký tự',typePass:'Mật khẩu'},hidden:{title:'Thuộc tính Trường ẩn',name:'Tên',value:'Giá trị'},image:{title:'Thuộc tính Hình ảnh',titleButton:'Thuộc tính Nút hình ảnh',menu:'Thuộc tính Hình ảnh',infoTab:'Thông tin Hình ảnh',btnUpload:'Tải lên Máy chủ',url:'URL',upload:'Tải lên',alt:'Chú thích Hình ảnh',width:'Rộng',height:'Cao',lockRatio:'Giữ nguyên tỷ lệ',resetSize:'Kích thước gốc',border:'Đường viền',hSpace:'HSpace',vSpace:'VSpace',align:'Vị trí',alignLeft:'Trái',alignAbsBottom:'Dưới tuyệt đối',alignAbsMiddle:'Giữa tuyệt đối',alignBaseline:'Đường cơ sở',alignBottom:'Dưới',alignMiddle:'Giữa',alignRight:'Phải',alignTextTop:'Phía trên chữ',alignTop:'Trên',preview:'Xem trước',alertUrl:'Hãy đưa vào URL của hình ảnh',linkTab:'Liên kết',button2Img:'Bạn có muốn chuyển nút bấm bằng hình ảnh được chọn thành hình ảnh?',img2Button:'Bạn có muốn chuyển đổi hình ảnh được chọn thành nút bấm bằng hình ảnh?',urlMissing:'Image source URL is missing.'},flash:{properties:'Thuộc tính Flash',propertiesTab:'Thuộc tính',title:'Thuộc tính Flash',chkPlay:'Tự động chạy',chkLoop:'Lặp',chkMenu:'Cho phép bật Menu của Flash',chkFull:'Cho phép Toàn màn hình',scale:'Tỷ lệ',scaleAll:'Hiển thị tất cả',scaleNoBorder:'Không đường viền',scaleFit:'Vừa vặn',access:'Truy cập Mã',accessAlways:'Luôn luôn',accessSameDomain:'Cùng tên miền',accessNever:'Không bao giờ',align:'Vị trí',alignLeft:'Trái',alignAbsBottom:'Dưới tuyệt đối',alignAbsMiddle:'Giữa tuyệt đối',alignBaseline:'Đường cơ sở',alignBottom:'Dưới',alignMiddle:'Giữa',alignRight:'Phải',alignTextTop:'Phía trên chữ',alignTop:'Trên',quality:'Chất lượng',qualityBest:'TỐt nhất',qualityHigh:'Cao',qualityAutoHigh:'Cao Tự động',qualityMedium:'Trung bình',qualityAutoLow:'Thấp Tự động',qualityLow:'Thấp',windowModeWindow:'Cửa sổ',windowModeOpaque:'Mờ đục',windowModeTransparent:'Trong suốt',windowMode:'Chế độ Cửa sổ',flashvars:'Các biến số dành cho Flash',bgcolor:'Màu nền',width:'Rộng',height:'Cao',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Hãy đưa vào Liên kết URL',validateWidth:'Chiều rộng phải là số nguyên.',validateHeight:'Chiều cao phải là số nguyên.',validateHSpace:'HSpace phải là số nguyên.',validateVSpace:'VSpace phải là số nguyên.'},spellCheck:{toolbar:'Kiểm tra Chính tả',title:'Kiểm tra Chính tả',notAvailable:'Xin lỗi, dịch vụ này hiện tại không có.',errorLoading:'Lỗi khi đang nạp dịch vụ ứng dụng: %s.',notInDic:'Không có trong từ điển',changeTo:'Chuyển thành',btnIgnore:'Bỏ qua',btnIgnoreAll:'Bỏ qua Tất cả',btnReplace:'Thay thế',btnReplaceAll:'Thay thế Tất cả',btnUndo:'Phục hồi lại',noSuggestions:'- Không đưa ra gợi ý về từ -',progress:'Đang tiến hành kiểm tra chính tả...',noMispell:'Hoàn tất kiểm tra chính tả: Không có lỗi chính tả',noChanges:'Hoàn tất kiểm tra chính tả: Không có từ nào được thay đổi',oneChange:'Hoàn tất kiểm tra chính tả: Một từ đã được thay đổi',manyChanges:'Hoàn tất kiểm tra chính tả: %1 từ đã được thay đổi',ieSpellDownload:'Chức năng kiểm tra chính tả chưa được cài đặt. Bạn có muốn tải về ngay bây giờ?'},smiley:{toolbar:'Hình biểu lộ cảm xúc (mặt cười)',title:'Chèn Hình biểu lộ cảm xúc (mặt cười)'},elementsPath:{eleTitle:'%1 thành phần'},numberedlist:'Danh sách có thứ tự',bulletedlist:'Danh sách không thứ tự',indent:'Dịch vào trong',outdent:'Dịch ra ngoài',justify:{left:'Canh trái',center:'Canh giữa',right:'Canh phải',block:'Canh đều'},blockquote:'Khối Trích dẫn',clipboard:{title:'Dán',cutError:'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl+X).',copyError:'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl+C).',pasteMsg:'Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (<STRONG>Ctrl+V</STRONG>) và nhấn vào nút <STRONG>Đồng ý</STRONG>.',securityMsg:'Do thiết lập bảo mật của trình duyệt nên trình biên tập không thể truy cập trực tiếp vào nội dung đã sao chép. Bạn cần phải dán lại nội dung vào cửa sổ này.'},pastefromword:{toolbar:'Dán với định dạng Word',title:'Dán với định dạng Word',advice:'Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (<STRONG>Ctrl+V</STRONG>) và nhấn vào nút <STRONG>Đồng ý</STRONG>.',ignoreFontFace:'Chấp nhận các định dạng phông',removeStyle:'Gỡ bỏ các định dạng Styles'},pasteText:{button:'Dán theo định dạng văn bản thuần',title:'Dán theo định dạng văn bản thuần'},templates:{button:'Mẫu dựng sẵn',title:'Nội dung Mẫu dựng sẵn',insertOption:'Thay thế nội dung hiện tại',selectPromptMsg:'Hãy chọn Mẫu dựng sẵn để mở trong trình biên tập<br>(nội dung hiện tại sẽ bị mất):',emptyListMsg:'(Không có Mẫu dựng sẵn nào được định nghĩa)'},showBlocks:'Hiển thị các Khối',stylesCombo:{label:'Kiểu',voiceLabel:'Kiểu',panelVoiceLabel:'Chọn một kiểu',panelTitle1:'Kiểu Khối',panelTitle2:'Kiểu Trực tiếp',panelTitle3:'Kiểu Đối tượng'},format:{label:'Định dạng',voiceLabel:'Định dạng',panelTitle:'Định dạng',panelVoiceLabel:'Chọn định dạng đoạn văn bản',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},font:{label:'Phông',voiceLabel:'Phông',panelTitle:'Phông',panelVoiceLabel:'Chọn phông'},fontSize:{label:'Cỡ chữ',voiceLabel:'Kích cỡ phông',panelTitle:'Cỡ chữ',panelVoiceLabel:'Chọn kích cỡ phông'},colorButton:{textColorTitle:'Màu chữ',bgColorTitle:'Màu nền',auto:'Tự động',more:'Màu khác...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Kiểm tra chính tả ngay khi gõ chữ (SCAYT)',enable:'Bật SCAYT',disable:'Tắt SCAYT',about:'Thông tin về SCAYT',toggle:'Bật tắt SCAYT',options:'Tùy chọn',langs:'Ngôn ngữ',moreSuggestions:'Đề xuất thêm',ignore:'Bỏ qua',ignoreAll:'Bỏ qua Tất cả',addWord:'Thêm Từ',emptyDic:'Tên của từ điển không được để trống.',optionsTab:'Tùy chọn',languagesTab:'Ngôn ngữ',dictionariesTab:'Từ điển',aboutTab:'Thông tin'},about:{title:'Thông tin về CKEditor',dlgTitle:'Thông tin về CKEditor',moreInfo:'Vui lòng ghé thăm trang web của chúng tôi để có thông tin về giấy phép:',copy:'Bản quyền &copy; $1. Giữ toàn quyền.'},maximize:'Phóng to tối đa',minimize:'Minimize',fakeobjects:{anchor:'Neo',flash:'Hoạt họa Flash',div:'Ngắt Trang',unknown:'Đối tượng không rõ ràng'},resize:'Kéo rê để thay đổi kích cỡ',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/zh-cn.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/zh-cn.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/zh-cn.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['zh-cn']={dir:'ltr',editorTitle:'富文本编辑器, %1',source:'源码',newPage:'新建',save:'保存',preview:'预览',cut:'剪切',copy:'复制',paste:'粘贴',print:'打印',underline:'下划线',bold:'加粗',italic:'倾斜',selectAll:'全选',removeFormat:'清除格式',strike:'删除线',subscript:'下标',superscript:'上标',horizontalrule:'插入水平线',pagebreak:'插入分页符',unlink:'取消超链接',undo:'撤消',redo:'重做',common:{browseServer:'浏览服务器',url:'源文件',protocol:'协议',upload:'上传',uploadSubmit:'发送到服务器上',image:'图象',flash:'Flash',form:'表单',checkbox:'复选框',radio:'单选按钮',textField:'单行文本',textarea:'多行文本',hiddenField:'隐藏域',button:'按钮',select:'列表/菜单',imageButton:'图像域',notSet:'<没有设置>',id:'ID',name:'名称',langDir:'语言方向',langDirLtr:'从左到右 (LTR)',langDirRtl:'从右到左 (RTL)',langCode:'语言代码',longDescr:'详细说明地址',cssClass:'样式类名称',advisoryTitle:'标题',cssStyle:'行内样式',ok:'确定',cancel:'取消',generalTab:'常规',advancedTab:'高级',validateNumberFailed:'需要输入数字格式',confirmNewPage:'当前文档内容未保存,是否确认新建文档？',confirmCancel:'部分选项尚未保存，是否确认关闭对话框？',unavailable:'%1<span class="cke_accessibility">, 不可用</span>'},specialChar:{toolbar:'插入特殊符号',title:'选择特殊符号'},link:{toolbar:'插入/编辑超链接',menu:'编辑超链接',title:'超链接',info:'超链接信息',target:'目标',upload:'上传',advanced:'高级',type:'超链接类型',toAnchor:'页内锚点链接',toEmail:'电子邮件',target:'目标',targetNotSet:'<没有设置>',targetFrame:'<框架>',targetPopup:'<弹出窗口>',targetNew:'新窗口 (_blank)',targetTop:'整页 (_top)',targetSelf:'本窗口 (_self)',targetParent:'父窗口 (_parent)',targetFrameName:'目标框架名称',targetPopupName:'弹出窗口名称',popupFeatures:'弹出窗口属性',popupResizable:'可缩放',popupStatusBar:'状态栏',popupLocationBar:'地址栏',popupToolbar:'工具栏',popupMenuBar:'菜单栏',popupFullScreen:'全屏 (IE)',popupScrollBars:'滚动条',popupDependent:'依附 (NS)',popupWidth:'宽',popupLeft:'左',popupHeight:'高',popupTop:'右',id:'ID',langDir:'语言方向',langDirNotSet:'<没有设置>',langDirLTR:'从左到右 (LTR)',langDirRTL:'从右到左 (RTL)',acccessKey:'访问键',name:'名称',langCode:'语言方向',tabIndex:'Tab 键次序',advisoryTitle:'标题',advisoryContentType:'内容类型',cssClasses:'样式类名称',charset:'字符编码',styles:'行内样式',selectAnchor:'选择一个锚点',anchorName:'按锚点名称',anchorId:'按锚点 ID',emailAddress:'地址',emailSubject:'主题',emailBody:'内容',noAnchors:'(此文档没有可用的锚点)',noUrl:'请输入超链接地址',noEmail:'请输入电子邮件地址'},anchor:{toolbar:'插入/编辑锚点链接',menu:'锚点链接属性',title:'锚点链接属性',name:'锚点名称',errorName:'请输入锚点名称'},findAndReplace:{title:'查找和替换',find:'查找',replace:'替换',findWhat:'查找:',replaceWith:'替换:',notFoundMsg:'指定文本没有找到',matchCase:'区分大小写',matchWord:'全字匹配',matchCyclic:'循环匹配',replaceAll:'全部替换',replaceSuccessMsg:'共完成 %1 处替换.'},table:{toolbar:'表格',title:'表格属性',menu:'表格属性',deleteTable:'删除表格',rows:'行数',columns:'列数',border:'边框',align:'对齐',alignNotSet:'<没有设置>',alignLeft:'左对齐',alignCenter:'居中',alignRight:'右对齐',width:'宽度',widthPx:'像素',widthPc:'百分比',height:'高度',cellSpace:'间距',cellPad:'边距',caption:'标题',summary:'摘要',headers:'标题单元格',headersNone:'无',headersColumn:'第一列',headersRow:'第一行',headersBoth:'第一列和第一行',invalidRows:'指定的列数必须大于零',invalidCols:'指定的行数必须大于零',invalidBorder:'边框粗细必须为数字格式',invalidWidth:'表格宽度必须为数字格式',invalidHeight:'表格高度必须为数字格式',invalidCellSpacing:'单元格间距必须为数字格式',invalidCellPadding:'单元格填充必须为数字格式',cell:{menu:'单元格',insertBefore:'在左侧插入单元格',insertAfter:'在右侧插入单元格',deleteCell:'删除单元格',merge:'合并单元格',mergeRight:'向右合并单元格',mergeDown:'向下合并单元格',splitHorizontal:'水平拆分单元格',splitVertical:'垂直拆分单元格',title:'单元格属性',cellType:'单元格类型',rowSpan:'行跨度',colSpan:'列跨度',wordWrap:'自动换行',hAlign:'水平对齐',vAlign:'垂直对齐',alignTop:'顶对齐',alignMiddle:'中对齐',alignBottom:'底对齐',alignBaseline:'基线对齐',bgColor:'背景颜色',borderColor:'边框颜色',data:'数据',header:'表头',yes:'是',no:'否',invalidWidth:'单元格宽度必须为数字格式',invalidHeight:'单元格高度必须为数字格式',invalidRowSpan:'行跨度必须为整数格式',invalidColSpan:'列跨度必须为整数格式',chooseColor:'Choose'},row:{menu:'行',insertBefore:'在上方插入行',insertAfter:'在下方插入行',deleteRow:'删除行'},column:{menu:'列',insertBefore:'在左侧插入列',insertAfter:'在右侧插入列',deleteColumn:'删除列'}},button:{title:'按钮属性',text:'标签(值)',type:'类型',typeBtn:'按钮',typeSbm:'提交',typeRst:'重设'},checkboxAndRadio:{checkboxTitle:'复选框属性',radioTitle:'单选按钮属性',value:'选定值',selected:'已勾选'},form:{title:'表单属性',menu:'表单属性',action:'动作',method:'方法',encoding:'表单编码',target:'目标',targetNotSet:'<没有设置>',targetNew:'新窗口 (_blank)',targetTop:'整页 (_top)',targetSelf:'本窗口 (_self)',targetParent:'父窗口 (_parent)'},select:{title:'菜单/列表属性',selectInfo:'信息',opAvail:'列表值',value:'值',size:'高度',lines:'行',chkMulti:'允许多选',opText:'标签',opValue:'选定',btnAdd:'新增',btnModify:'修改',btnUp:'上移',btnDown:'下移',btnSetValue:'设为初始化时选定',btnDelete:'删除'},textarea:{title:'多行文本属性',cols:'字符宽度',rows:'行数'},textfield:{title:'单行文本属性',name:'名称',value:'初始值',charWidth:'字符宽度',maxChars:'最多字符数',type:'类型',typeText:'文本',typePass:'密码'},hidden:{title:'隐藏域属性',name:'名称',value:'初始值'},image:{title:'图象属性',titleButton:'图像域属性',menu:'图象属性',infoTab:'图象',btnUpload:'发送到服务器上',url:'源文件',upload:'上传',alt:'替换文本',width:'宽度',height:'高度',lockRatio:'锁定比例',resetSize:'恢复尺寸',border:'边框大小',hSpace:'水平间距',vSpace:'垂直间距',align:'对齐方式',alignLeft:'左对齐',alignAbsBottom:'绝对底边',alignAbsMiddle:'绝对居中',alignBaseline:'基线',alignBottom:'底边',alignMiddle:'居中',alignRight:'右对齐',alignTextTop:'文本上方',alignTop:'顶端',preview:'预览',alertUrl:'请输入图象地址',linkTab:'链接',button2Img:'确定要把当前按钮改变为图像吗?',img2Button:'确定要把当前图像改变为按钮吗?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash 属性',propertiesTab:'属性',title:'标题',chkPlay:'自动播放',chkLoop:'循环',chkMenu:'启用 Flash 菜单',chkFull:'启用全屏',scale:'缩放',scaleAll:'全部显示',scaleNoBorder:'无边框',scaleFit:'严格匹配',access:'允许脚本访问',accessAlways:'总是',accessSameDomain:'同域',accessNever:'从不',align:'对齐方式',alignLeft:'左对齐',alignAbsBottom:'绝对底边',alignAbsMiddle:'绝对居中',alignBaseline:'基线',alignBottom:'底边',alignMiddle:'居中',alignRight:'右对齐',alignTextTop:'文本上方',alignTop:'顶端',quality:'质量',qualityBest:'最好',qualityHigh:'高',qualityAutoHigh:'高（自动）',qualityMedium:'中（自动）',qualityAutoLow:'低（自动）',qualityLow:'低',windowModeWindow:'窗体',windowModeOpaque:'不透明',windowModeTransparent:'透明',windowMode:'窗体模式',flashvars:'Flash变量',bgcolor:'背景颜色',width:'宽度',height:'高度',hSpace:'水平间距',vSpace:'垂直间距',validateSrc:'请输入超链接地址',validateWidth:'宽度必须为数字格式',validateHeight:'高度必须为数字格式',validateHSpace:'水平间距必须为数字格式',validateVSpace:'垂直间距必须为数字格式'},spellCheck:{toolbar:'拼写检查',title:'拼写检查',notAvailable:'抱歉，服务目前暂不可用',errorLoading:'无法联系该应用的主机: %s.',notInDic:'没有在字典里',changeTo:'更改为',btnIgnore:'忽略',btnIgnoreAll:'全部忽略',btnReplace:'替换',btnReplaceAll:'全部替换',btnUndo:'撤消',noSuggestions:'- 没有建议 -',progress:'正在进行拼写检查...',noMispell:'拼写检查完成：没有发现拼写错误',noChanges:'拼写检查完成：没有更改任何单词',oneChange:'拼写检查完成：更改了一个单词',manyChanges:'拼写检查完成：更改了 %1 个单词',ieSpellDownload:'拼写检查插件还没安装，你是否想现在就下载？'},smiley:{toolbar:'表情符',title:'插入表情图标'},elementsPath:{eleTitle:'%1 元素'},numberedlist:'编号列表',bulletedlist:'项目列表',indent:'增加缩进量',outdent:'减少缩进量',justify:{left:'左对齐',center:'居中对齐',right:'右对齐',block:'两端对齐'},blockquote:'块引用',clipboard:{title:'粘贴',cutError:'您的浏览器安全设置不允许编辑器自动执行剪切操作，请使用键盘快捷键(Ctrl+X)来完成',copyError:'您的浏览器安全设置不允许编辑器自动执行复制操作，请使用键盘快捷键(Ctrl+C)来完成',pasteMsg:'请使用键盘快捷键(<STRONG>Ctrl+V</STRONG>)把内容粘贴到下面的方框里，再按 <STRONG>确定</STRONG>',securityMsg:'因为你的浏览器的安全设置原因，本编辑器不能直接访问你的剪贴板内容，你需要在本窗口重新粘贴一次'},pastefromword:{toolbar:'从 MS Word 粘贴',title:'从 MS Word 粘贴',advice:'请使用键盘快捷键(<STRONG>Ctrl+V</STRONG>)把内容粘贴到下面的方框里，再按 <STRONG>确定</STRONG>',ignoreFontFace:'忽略 Font 标签',removeStyle:'清理 CSS 样式'},pasteText:{button:'粘贴为无格式文本',title:'粘贴为无格式文本'},templates:{button:'模板',title:'内容模板',insertOption:'替换当前内容',selectPromptMsg:'请选择编辑器内容模板:',emptyListMsg:'(没有模板)'},showBlocks:'显示区块',stylesCombo:{label:'样式',voiceLabel:'样式',panelVoiceLabel:'选择样式',panelTitle1:'块级元素样式',panelTitle2:'内联元素样式',panelTitle3:'对象元素样式'},format:{label:'格式',voiceLabel:'格式',panelTitle:'格式',panelVoiceLabel:'选择格式',tag_p:'普通',tag_pre:'已编排格式',tag_address:'地址',tag_h1:'标题 1',tag_h2:'标题 2',tag_h3:'标题 3',tag_h4:'标题 4',tag_h5:'标题 5',tag_h6:'标题 6',tag_div:'段落(DIV)'},font:{label:'字体',voiceLabel:'字体',panelTitle:'字体',panelVoiceLabel:'选择字体'},fontSize:{label:'大小',voiceLabel:'文字大小',panelTitle:'大小',panelVoiceLabel:'选择文字大小'},colorButton:{textColorTitle:'文本颜色',bgColorTitle:'背景颜色',auto:'自动',more:'其它颜色...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'即时拼写检查',enable:'启用即时拼写检查',disable:'禁用即时拼写检查',about:'关于即时拼写检查',toggle:'暂停/启用即时拼写检查',options:'选项',langs:'语言',moreSuggestions:'更多拼写建议',ignore:'忽略',ignoreAll:'全部忽略',addWord:'添加单词',emptyDic:'字典名不应为空.',optionsTab:'选项',languagesTab:'语言',dictionariesTab:'字典',aboutTab:'关于'},about:{title:'关于CKEditor',dlgTitle:'关于CKEditor',moreInfo:'访问我们的网站以获取更多关于协议的信息',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'全屏',minimize:'Minimize',fakeobjects:{anchor:'锚点',flash:'Flash',div:'分页',unknown:'位置对象'},resize:'拖拽以改变尺寸',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/uk.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/uk.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/uk.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.uk={dir:'ltr',editorTitle:'Візуальний текстовий редактор, %1',source:'Джерело',newPage:'Нова сторінка',save:'Зберегти',preview:'Попередній перегляд',cut:'Вирізати',copy:'Копіювати',paste:'Вставити',print:'Друк',underline:'Підкреслений',bold:'Жирний',italic:'Курсив',selectAll:'Виділити все',removeFormat:'Прибрати форматування',strike:'Закреслений',subscript:'Підрядковий індекс',superscript:'Надрядковий индекс',horizontalrule:'Вставити горизонтальну лінію',pagebreak:'Вставити розривши сторінки',unlink:'Знищити посилання',undo:'Повернути',redo:'Повторити',common:{browseServer:'Передивитися на сервері',url:'URL',protocol:'Протокол',upload:'Закачати',uploadSubmit:'Надіслати на сервер',image:'Зображення',flash:'Flash',form:'Форма',checkbox:'Флагова кнопка',radio:'Кнопка вибору',textField:'Текстове поле',textarea:'Текстова область',hiddenField:'Приховане поле',button:'Кнопка',select:'Список',imageButton:'Кнопка із зображенням',notSet:'<не визначено>',id:'Ідентифікатор',name:"Им'я",langDir:'Напрямок мови',langDirLtr:'Зліва на право (LTR)',langDirRtl:'Зправа на ліво (RTL)',langCode:'Мова',longDescr:'Довгий опис URL',cssClass:'Клас CSS',advisoryTitle:'Заголовок',cssStyle:'Стиль CSS',ok:'ОК',cancel:'Скасувати',generalTab:'Загальна',advancedTab:'Розширений',validateNumberFailed:'Значення не є числом.',confirmNewPage:'Всі не збережені зміни будуть втрачені. Ви впевнені, що хочете завантажити нову сторінку?',confirmCancel:'Деякі опції були змінені. Закрити вікно?',unavailable:'%1<span class="cke_accessibility">, не доступне</span>'},specialChar:{toolbar:'Вставити спеціальний символ',title:'Оберіть спеціальний символ'},link:{toolbar:'Вставити/Редагувати посилання',menu:'Вставити посилання',title:'Посилання',info:'Інформація посилання',target:'Ціль',upload:'Закачати',advanced:'Розширений',type:'Тип посилання',toAnchor:'Якір на цю сторінку',toEmail:'Эл. пошта',target:'Ціль',targetNotSet:'<не визначено>',targetFrame:'<фрейм>',targetPopup:'<спливаюче вікно>',targetNew:'Нове вікно (_blank)',targetTop:'Найвище вікно (_top)',targetSelf:'Теж вікно (_self)',targetParent:'Батьківське вікно (_parent)',targetFrameName:"Ім'я целевого фрейма",targetPopupName:"Ім'я спливаючого вікна",popupFeatures:'Властивості спливаючого вікна',popupResizable:'Масштабоване',popupStatusBar:'Строка статусу',popupLocationBar:'Панель локації',popupToolbar:'Панель інструментів',popupMenuBar:'Панель меню',popupFullScreen:'Повний екран (IE)',popupScrollBars:'Полоси прокрутки',popupDependent:'Залежний (Netscape)',popupWidth:'Ширина',popupLeft:'Позиція зліва',popupHeight:'Висота',popupTop:'Позиція зверху',id:'Ідентифікатор (Id)',langDir:'Напрямок мови',langDirNotSet:'<не визначено>',langDirLTR:'Зліва на право (LTR)',langDirRTL:'Зправа на ліво (RTL)',acccessKey:'Гаряча клавіша',name:"Им'я",langCode:'Напрямок мови',tabIndex:'Послідовність переходу',advisoryTitle:'Заголовок',advisoryContentType:'Тип вмісту',cssClasses:'Клас CSS',charset:'Кодировка',styles:'Стиль CSS',selectAnchor:'Оберіть якір',anchorName:"За ім'ям якоря",anchorId:'За ідентифікатором елемента',emailAddress:'Адреса ел. пошти',emailSubject:'Тема листа',emailBody:'Тіло повідомлення',noAnchors:'(Немає якорів доступних в цьому документі)',noUrl:'Будь ласка, занесіть URL посилання',noEmail:'Будь ласка, занесіть адрес эл. почты'},anchor:{toolbar:'Вставити/Редагувати якір',menu:'Властивості якоря',title:'Властивості якоря',name:"Ім'я якоря",errorName:"Будь ласка, занесіть ім'я якоря"},findAndReplace:{title:'Знайти і замінити',find:'Пошук',replace:'Заміна',findWhat:'Шукати:',replaceWith:'Замінити на:',notFoundMsg:'Вказаний текст не знайдений.',matchCase:'Враховувати регістр',matchWord:'Збіг цілих слів',matchCyclic:'Циклічна заміна',replaceAll:'Замінити все',replaceSuccessMsg:'%1 співпадінь(я) замінено.'},table:{toolbar:'Таблиця',title:'Властивості таблиці',menu:'Властивості таблиці',deleteTable:'Видалити таблицю',rows:'Строки',columns:'Колонки',border:'Розмір бордюра',align:'Вирівнювання',alignNotSet:'<Не вст.>',alignLeft:'Зліва',alignCenter:'По центру',alignRight:'Зправа',width:'Ширина',widthPx:'пікселів',widthPc:'відсотків',height:'Висота',cellSpace:'Проміжок (spacing)',cellPad:'Відступ (padding)',caption:'Заголовок',summary:'Резюме',headers:'Заголовки',headersNone:'Жодного',headersColumn:'Перша колонка',headersRow:'Перший рядок',headersBoth:'Обидва',invalidRows:'Кількість рядків повинна бути числом більше за 0.',invalidCols:'Кількість колонок повинна бути числом більше за  0.',invalidBorder:'Розмір бордюра повинен бути числом.',invalidWidth:'Ширина таблиці повинна бути числом.',invalidHeight:'Висота таблиці повинна бути числом.',invalidCellSpacing:'Проміжок (spacing) комірки повинен бути числом.',invalidCellPadding:'Відступ (padding) комірки повинен бути числом.',cell:{menu:'Осередок',insertBefore:'Вставити комірку до',insertAfter:'Вставити комірку після',deleteCell:'Видалити комірки',merge:"Об'єднати комірки",mergeRight:"Об'єднати зправа",mergeDown:"Об'єднати до низу",splitHorizontal:'Розділити комірку по горизонталі',splitVertical:'Розділити комірку по вертикалі',title:'Властивості комірки',cellType:'Тип комірки',rowSpan:'Обєднання рядків (Rows Span)',colSpan:'Обєднання стовпчиків (Columns Span)',wordWrap:'Авто згортання тексту (Word Wrap)',hAlign:'Горизонтальне вирівнювання',vAlign:'Вертикальне вирівнювання',alignTop:'До верху',alignMiddle:'Посередині',alignBottom:'До низу',alignBaseline:'По базовій лінії',bgColor:'Колір фону',borderColor:'Колір бордюру',data:'Дані',header:'Заголовок',yes:'Так',no:'Ні',invalidWidth:'Ширина комірки повинна бути числом.',invalidHeight:'Висота комірки повинна бути числом.',invalidRowSpan:'Кількість обєднуваних рядків повинна бути цілим числом.',invalidColSpan:'Кількість обєднуваних стовпчиків повинна бути цілим числом.',chooseColor:'Choose'},row:{menu:'Рядок',insertBefore:'Вставити рядок до',insertAfter:'Вставити рядок після',deleteRow:'Видалити строки'},column:{menu:'Колонка',insertBefore:'Вставити колонку до',insertAfter:'Вставити колонку після',deleteColumn:'Видалити колонки'}},button:{title:'Властивості кнопки',text:'Текст (Значення)',type:'Тип',typeBtn:'Кнопка',typeSbm:'Відправити',typeRst:'Скинути'},checkboxAndRadio:{checkboxTitle:'Властивості флагової кнопки',radioTitle:'Властивості кнопки вибору',value:'Значення',selected:'Обрана'},form:{title:'Властивості форми',menu:'Властивості форми',action:'Дія',method:'Метод',encoding:'Кодування',target:'Ціль',targetNotSet:'<не визначено>',targetNew:'Нове вікно (_blank)',targetTop:'Найвище вікно (_top)',targetSelf:'Теж вікно (_self)',targetParent:'Батьківське вікно (_parent)'},select:{title:'Властивості списку',selectInfo:'Інфо',opAvail:'Доступні варіанти',value:'Значення',size:'Розмір',lines:'лінії',chkMulti:'Дозволити обрання декількох позицій',opText:'Текст',opValue:'Значення',btnAdd:'Добавити',btnModify:'Змінити',btnUp:'Вгору',btnDown:'Вниз',btnSetValue:'Встановити як вибране значення',btnDelete:'Видалити'},textarea:{title:'Властивості текстової області',cols:'Колонки',rows:'Строки'},textfield:{title:'Властивості текстового поля',name:"Ім'я",value:'Значення',charWidth:'Ширина',maxChars:'Макс. кіл-ть символів',type:'Тип',typeText:'Текст',typePass:'Пароль'},hidden:{title:'Властивості прихованого поля',name:"Ім'я",value:'Значення'},image:{title:'Властивості зображення',titleButton:'Властивості кнопки із зображенням',menu:'Властивості зображення',infoTab:'Інформація про изображении',btnUpload:'Надіслати на сервер',url:'URL',upload:'Закачати',alt:'Альтернативний текст',width:'Ширина',height:'Висота',lockRatio:'Зберегти пропорції',resetSize:'Скинути розмір',border:'Бордюр',hSpace:'Горизонтальний відступ',vSpace:'Вертикальний відступ',align:'Вирівнювання',alignLeft:'По лівому краю',alignAbsBottom:'Абс по низу',alignAbsMiddle:'Абс по середині',alignBaseline:'По базовій лінії',alignBottom:'По низу',alignMiddle:'По середині',alignRight:'По правому краю',alignTextTop:'Текст на верху',alignTop:'По верху',preview:'Попередній перегляд',alertUrl:'Будь ласка, введіть URL зображення',linkTab:'Посилання',button2Img:'Ви хочете перетворити обрану кнопку-зображення на просте зображення?',img2Button:'Ви хочете перетворити обране зображення на кнопку-зображення?',urlMissing:'Image source URL is missing.'},flash:{properties:'Властивості Flash',propertiesTab:'Властивості',title:'Властивості Flash',chkPlay:'Авто програвання',chkLoop:'Зациклити',chkMenu:'Дозволити меню Flash',chkFull:'Дозволити повноекранний перегляд',scale:'Масштаб',scaleAll:'Показати всі',scaleNoBorder:'Без рамки',scaleFit:'Дійсний розмір',access:'Доступ до скрипта',accessAlways:'Завжди',accessSameDomain:'З того ж домена',accessNever:'Ніколи',align:'Вирівнювання',alignLeft:'По лівому краю',alignAbsBottom:'Абс по низу',alignAbsMiddle:'Абс по середині',alignBaseline:'По базовій лінії',alignBottom:'По низу',alignMiddle:'По середині',alignRight:'По правому краю',alignTextTop:'Текст на верху',alignTop:'По верху',quality:'Якість',qualityBest:'Відмінна',qualityHigh:'Висока',qualityAutoHigh:'Авто відмінна',qualityMedium:'Середня',qualityAutoLow:'Авто низька',qualityLow:'Низька',windowModeWindow:'Вікно',windowModeOpaque:'Непрозорість (Opaque)',windowModeTransparent:'Прозорість (Transparent)',windowMode:'Режим вікна',flashvars:'Змінні Flash',bgcolor:'Колір фону',width:'Ширина',height:'Висота',hSpace:'Горизонтальний відступ',vSpace:'Вертикальний відступ',validateSrc:'Будь ласка, занесіть URL посилання',validateWidth:'Ширина повинна бути числом.',validateHeight:'Висота повинна бути числом.',validateHSpace:'HSpace повинна бути числом.',validateVSpace:'VSpace повинна бути числом.'},spellCheck:{toolbar:'Перевірити орфографію',title:'Перевірка орфографії',notAvailable:'Вибачте, але сервіс наразі недоступний.',errorLoading:'Помилка завантаження : %s.',notInDic:'Не має в словнику',changeTo:'Замінити на',btnIgnore:'Ігнорувати',btnIgnoreAll:'Ігнорувати все',btnReplace:'Замінити',btnReplaceAll:'Замінити все',btnUndo:'Назад',noSuggestions:'- Немає припущень -',progress:'Виконується перевірка орфографії...',noMispell:'Перевірку орфографії завершено: помилок не знайдено',noChanges:'Перевірку орфографії завершено: жодне слово не змінено',oneChange:'Перевірку орфографії завершено: змінено одно слово',manyChanges:'Перевірку орфографії завершено: 1% слів змінено',ieSpellDownload:'Модуль перевірки орфографії не встановлено. Бажаєтн завантажити його зараз?'},smiley:{toolbar:'Смайлик',title:'Вставити смайлик'},elementsPath:{eleTitle:'%1 елемент'},numberedlist:'Нумерований список',bulletedlist:'Маркований список',indent:'Збільшити відступ',outdent:'Зменшити відступ',justify:{left:'По лівому краю',center:'По центру',right:'По правому краю',block:'По ширині'},blockquote:'Цитата',clipboard:{title:'Вставити',cutError:'Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl+X).',copyError:'Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl+C).',pasteMsg:'Будь ласка, вставте з буфера обміну в цю область, користуючись комбінацією клавіш (<STRONG>Ctrl+V</STRONG>) та натисніть <STRONG>OK</STRONG>.',securityMsg:"Редактор не може отримати прямий доступ до буферу обміну у зв'язку з налаштуваннями вашого браузера. Вам потрібно вставити інформацію повторно в це вікно."},pastefromword:{toolbar:'Вставити з Word',title:'Вставити з Word',advice:'Будь-ласка, вставте з буфера обміну в цю область, користуючись комбінацією клавіш (<STRONG>Ctrl+V</STRONG>) та натисніть <STRONG>OK</STRONG>.',ignoreFontFace:'Ігнорувати налаштування шрифтів',removeStyle:'Видалити налаштування стилів'},pasteText:{button:'Вставити тільки текст',title:'Вставити тільки текст'},templates:{button:'Шаблони',title:'Шаблони змісту',insertOption:'Замінити поточний вміст',selectPromptMsg:'Оберіть, будь ласка, шаблон для відкриття в редакторі<br>(поточний зміст буде втрачено):',emptyListMsg:'(Не визначено жодного шаблону)'},showBlocks:'Показувати блоки',stylesCombo:{label:'Стиль',voiceLabel:'Стилі',panelVoiceLabel:'Оберіть стиль',panelTitle1:'Block стилі',panelTitle2:'Inline стилі',panelTitle3:'Object стилі'},format:{label:'Форматування',voiceLabel:'Формат',panelTitle:'Форматування',panelVoiceLabel:'Оберіть формат абзацу',tag_p:'Нормальний',tag_pre:'Форматований',tag_address:'Адреса',tag_h1:'Заголовок 1',tag_h2:'Заголовок 2',tag_h3:'Заголовок 3',tag_h4:'Заголовок 4',tag_h5:'Заголовок 5',tag_h6:'Заголовок 6',tag_div:'Нормальний (DIV)'},font:{label:'Шрифт',voiceLabel:'Шрифт',panelTitle:'Шрифт',panelVoiceLabel:'Оберіть шрифт'},fontSize:{label:'Розмір',voiceLabel:'Розмір шрифта',panelTitle:'Розмір',panelVoiceLabel:'Оберіть розмір шрифта'},colorButton:{textColorTitle:'Колір тексту',bgColorTitle:'Колір фону',auto:'Автоматичний',more:'Кольори...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Перефірка орфографії по мірі набору',enable:'Включити SCAYT',disable:'Відключити SCAYT',about:'Про SCAYT',toggle:'Перемкнути SCAYT',options:'Опції',langs:'Мови',moreSuggestions:'Більше пропозицій',ignore:'Ігнорувати',ignoreAll:'Ігнорувати всі',addWord:'Додати слово',emptyDic:'Назва словника повинна бути заповнена.',optionsTab:'Опції',languagesTab:'Мови',dictionariesTab:'Словники',aboutTab:'Про'},about:{title:'Про CKEditor',dlgTitle:'Про CKEditor',moreInfo:'Щодо інформації з ліцензування завітайте до нашого сайту:',copy:'Copyright &copy; $1. Всі права застережено.'},maximize:'Максимізувати',minimize:'Minimize',fakeobjects:{anchor:'Якір',flash:'Flash анімація',div:'Розрив сторінки',unknown:'Невідомий об`єкт'},resize:'Пересувайте для зміни розміру',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/ms.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/ms.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/ms.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ms={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Sumber',newPage:'Helaian Baru',save:'Simpan',preview:'Prebiu',cut:'Potong',copy:'Salin',paste:'Tampal',print:'Cetak',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Pilih Semua',removeFormat:'Buang Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Masukkan Garisan Membujur',pagebreak:'Insert Page Break for Printing',unlink:'Buang Sambungan',undo:'Batalkan',redo:'Ulangkan',common:{browseServer:'Browse Server',url:'URL',protocol:'Protokol',upload:'Muat Naik',uploadSubmit:'Hantar ke Server',image:'Gambar',flash:'Flash',form:'Borang',checkbox:'Checkbox',radio:'Butang Radio',textField:'Text Field',textarea:'Textarea',hiddenField:'Field Tersembunyi',button:'Butang',select:'Field Pilihan',imageButton:'Butang Bergambar',notSet:'<tidak di set>',id:'Id',name:'Nama',langDir:'Arah Tulisan',langDirLtr:'Kiri ke Kanan (LTR)',langDirRtl:'Kanan ke Kiri (RTL)',langCode:'Kod Bahasa',longDescr:'Butiran Panjang URL',cssClass:'Kelas-kelas Stylesheet',advisoryTitle:'Tajuk Makluman',cssStyle:'Stail',ok:'OK',cancel:'Batal',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Masukkan Huruf Istimewa',title:'Sila pilih huruf istimewa'},link:{toolbar:'Masukkan/Sunting Sambungan',menu:'Sunting Sambungan',title:'Sambungan',info:'Butiran Sambungan',target:'Sasaran',upload:'Muat Naik',advanced:'Advanced',type:'Jenis Sambungan',toAnchor:'Pautan dalam muka surat ini',toEmail:'E-Mail',target:'Sasaran',targetNotSet:'<tidak di set>',targetFrame:'<bingkai>',targetPopup:'<tetingkap popup>',targetNew:'Tetingkap Baru (_blank)',targetTop:'Tetingkap yang paling atas (_top)',targetSelf:'Tetingkap yang Sama (_self)',targetParent:'Tetingkap Parent (_parent)',targetFrameName:'Nama Bingkai Sasaran',targetPopupName:'Nama Tetingkap Popup',popupFeatures:'Ciri Tetingkap Popup',popupResizable:'Resizable',popupStatusBar:'Bar Status',popupLocationBar:'Bar Lokasi',popupToolbar:'Toolbar',popupMenuBar:'Bar Menu',popupFullScreen:'Skrin Penuh (IE)',popupScrollBars:'Bar-bar skrol',popupDependent:'Bergantungan (Netscape)',popupWidth:'Lebar',popupLeft:'Posisi Kiri',popupHeight:'Tinggi',popupTop:'Posisi Atas',id:'Id',langDir:'Arah Tulisan',langDirNotSet:'<tidak di set>',langDirLTR:'Kiri ke Kanan (LTR)',langDirRTL:'Kanan ke Kiri (RTL)',acccessKey:'Kunci Akses',name:'Nama',langCode:'Arah Tulisan',tabIndex:'Indeks Tab ',advisoryTitle:'Tajuk Makluman',advisoryContentType:'Jenis Kandungan Makluman',cssClasses:'Kelas-kelas Stylesheet',charset:'Linked Resource Charset',styles:'Stail',selectAnchor:'Sila pilih pautan',anchorName:'dengan menggunakan nama pautan',anchorId:'dengan menggunakan ID elemen',emailAddress:'Alamat E-Mail',emailSubject:'Subjek Mesej',emailBody:'Isi Kandungan Mesej',noAnchors:'(Tiada pautan terdapat dalam dokumen ini)',noUrl:'Sila taip sambungan URL',noEmail:'Sila taip alamat e-mail'},anchor:{toolbar:'Masukkan/Sunting Pautan',menu:'Ciri-ciri Pautan',title:'Ciri-ciri Pautan',name:'Nama Pautan',errorName:'Sila taip nama pautan'},findAndReplace:{title:'Find and Replace',find:'Cari',replace:'Ganti',findWhat:'Perkataan yang dicari:',replaceWith:'Diganti dengan:',notFoundMsg:'Text yang dicari tidak dijumpai.',matchCase:'Padanan case huruf',matchWord:'Padana Keseluruhan perkataan',matchCyclic:'Match cyclic',replaceAll:'Ganti semua',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Jadual',title:'Ciri-ciri Jadual',menu:'Ciri-ciri Jadual',deleteTable:'Delete Table',rows:'Barisan',columns:'Jaluran',border:'Saiz Border',align:'Penjajaran',alignNotSet:'<Tidak diset>',alignLeft:'Kiri',alignCenter:'Tengah',alignRight:'Kanan',width:'Lebar',widthPx:'piksel-piksel',widthPc:'peratus',height:'Tinggi',cellSpace:'Ruangan Antara Sel',cellPad:'Tambahan Ruang Sel',caption:'Keterangan',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Buangkan Sel-sel',merge:'Cantumkan Sel-sel',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Buangkan Baris'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Buangkan Lajur'}},button:{title:'Ciri-ciri Butang',text:'Teks (Nilai)',type:'Jenis',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Ciri-ciri Checkbox',radioTitle:'Ciri-ciri Butang Radio',value:'Nilai',selected:'Dipilih'},form:{title:'Ciri-ciri Borang',menu:'Ciri-ciri Borang',action:'Tindakan borang',method:'Cara borang dihantar',encoding:'Encoding',target:'Sasaran',targetNotSet:'<tidak di set>',targetNew:'Tetingkap Baru (_blank)',targetTop:'Tetingkap yang paling atas (_top)',targetSelf:'Tetingkap yang Sama (_self)',targetParent:'Tetingkap Parent (_parent)'},select:{title:'Ciri-ciri Selection Field',selectInfo:'Select Info',opAvail:'Pilihan sediada',value:'Nilai',size:'Saiz',lines:'garisan',chkMulti:'Benarkan pilihan pelbagai',opText:'Teks',opValue:'Nilai',btnAdd:'Tambah Pilihan',btnModify:'Ubah Pilihan',btnUp:'Naik ke atas',btnDown:'Turun ke bawah',btnSetValue:'Set sebagai nilai terpilih',btnDelete:'Padam'},textarea:{title:'Ciri-ciri Textarea',cols:'Lajur',rows:'Baris'},textfield:{title:'Ciri-ciri Text Field',name:'Nama',value:'Nilai',charWidth:'Lebar isian',maxChars:'Isian Maksimum',type:'Jenis',typeText:'Teks',typePass:'Kata Laluan'},hidden:{title:'Ciri-ciri Field Tersembunyi',name:'Nama',value:'Nilai'},image:{title:'Ciri-ciri Imej',titleButton:'Ciri-ciri Butang Bergambar',menu:'Ciri-ciri Imej',infoTab:'Info Imej',btnUpload:'Hantar ke Server',url:'URL',upload:'Muat Naik',alt:'Text Alternatif',width:'Lebar',height:'Tinggi',lockRatio:'Tetapkan Nisbah',resetSize:'Saiz Set Semula',border:'Border',hSpace:'Ruang Melintang',vSpace:'Ruang Menegak',align:'Jajaran',alignLeft:'Kiri',alignAbsBottom:'Bawah Mutlak',alignAbsMiddle:'Pertengahan Mutlak',alignBaseline:'Garis Dasar',alignBottom:'Bawah',alignMiddle:'Pertengahan',alignRight:'Kanan',alignTextTop:'Atas Text',alignTop:'Atas',preview:'Prebiu',alertUrl:'Sila taip URL untuk fail gambar',linkTab:'Sambungan',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Jajaran',alignLeft:'Kiri',alignAbsBottom:'Bawah Mutlak',alignAbsMiddle:'Pertengahan Mutlak',alignBaseline:'Garis Dasar',alignBottom:'Bawah',alignMiddle:'Pertengahan',alignRight:'Kanan',alignTextTop:'Atas Text',alignTop:'Atas',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Warna Latarbelakang',width:'Lebar',height:'Tinggi',hSpace:'Ruang Melintang',vSpace:'Ruang Menegak',validateSrc:'Sila taip sambungan URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Semak Ejaan',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Tidak terdapat didalam kamus',changeTo:'Tukarkan kepada',btnIgnore:'Biar',btnIgnoreAll:'Biarkan semua',btnReplace:'Ganti',btnReplaceAll:'Gantikan Semua',btnUndo:'Batalkan',noSuggestions:'- Tiada cadangan -',progress:'Pemeriksaan ejaan sedang diproses...',noMispell:'Pemeriksaan ejaan siap: Tiada salah ejaan',noChanges:'Pemeriksaan ejaan siap: Tiada perkataan diubah',oneChange:'Pemeriksaan ejaan siap: Satu perkataan telah diubah',manyChanges:'Pemeriksaan ejaan siap: %1 perkataan diubah',ieSpellDownload:'Pemeriksa ejaan tidak dipasang. Adakah anda mahu muat turun sekarang?'},smiley:{toolbar:'Smiley',title:'Masukkan Smiley'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Senarai bernombor',bulletedlist:'Senarai tidak bernombor',indent:'Tambahkan Inden',outdent:'Kurangkan Inden',justify:{left:'Jajaran Kiri',center:'Jajaran Tengah',right:'Jajaran Kanan',block:'Jajaran Blok'},blockquote:'Blockquote',clipboard:{title:'Tampal',cutError:'Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl+X).',copyError:'Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl+C).',pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Tampal dari Word',title:'Tampal dari Word',advice:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',ignoreFontFace:'Ignore Font Face definitions',removeStyle:'Remove Styles definitions'},pasteText:{button:'Tampal sebagai text biasa',title:'Tampal sebagai text biasa'},templates:{button:'Templat',title:'Templat Kandungan',insertOption:'Replace actual contents',selectPromptMsg:'Sila pilih templat untuk dibuka oleh editor<br>(kandungan sebenar akan hilang):',emptyListMsg:'(Tiada Templat Disimpan)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stail',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',voiceLabel:'Format',panelTitle:'Format',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Telah Diformat',tag_address:'Alamat',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Perenggan (DIV)'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font',panelVoiceLabel:'Select a font'},fontSize:{label:'Saiz',voiceLabel:'Font Size',panelTitle:'Saiz',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Warna Text',bgColorTitle:'Warna Latarbelakang',auto:'Otomatik',more:'Warna lain-lain...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/en-uk.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/en-uk.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/en-uk.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['en-uk']={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character'},link:{toolbar:'Link',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toAnchor:'Link to anchor in the text',toEmail:'E-mail',target:'Target',targetNotSet:'<not set>',targetFrame:'<frame>',targetPopup:'<popup window>',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupWidth:'Width',popupLeft:'Left Position',popupHeight:'Height',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirNotSet:'<not set>',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',align:'Alignment',alignNotSet:'<Not set>',alignLeft:'Left',alignCenter:'Centre',alignRight:'Right',width:'Width',widthPx:'pixels',widthPc:'percent',height:'Height',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding',target:'Target',targetNotSet:'<not set>',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',url:'URL',upload:'Upload',alt:'Alternative Text',width:'Width',height:'Height',lockRatio:'Lock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',align:'Align',alignLeft:'Left',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Right',alignTextTop:'Text Top',alignTop:'Top',preview:'Preview',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Align',alignLeft:'Left',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Right',alignTextTop:'Text Top',alignTop:'Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background colour',width:'Width',height:'Height',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Left Justify',center:'Centre Justify',right:'Right Justify',block:'Block Justify'},blockquote:'Blockquote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Paste from Word',title:'Paste from Word',advice:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',ignoreFontFace:'Ignore Font Face definitions',removeStyle:'Remove Styles definitions'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',voiceLabel:'Format',panelTitle:'Paragraph Format',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name',panelVoiceLabel:'Select a font'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Text Colour',bgColorTitle:'Background Colour',auto:'Automatic',more:'More Colours...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/ro.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/ro.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/ro.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ro={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Sursa',newPage:'Pagină nouă',save:'Salvează',preview:'Previzualizare',cut:'Taie',copy:'Copiază',paste:'Adaugă',print:'Printează',underline:'Subliniat (underline)',bold:'Îngroşat (bold)',italic:'Înclinat (italic)',selectAll:'Selectează tot',removeFormat:'Înlătură formatarea',strike:'Tăiat (strike through)',subscript:'Indice (subscript)',superscript:'Putere (superscript)',horizontalrule:'Inserează linie orizontă',pagebreak:'Inserează separator de pagină (Page Break)',unlink:'Înlătură link (legătură web)',undo:'Starea anterioară (undo)',redo:'Starea ulterioară (redo)',common:{browseServer:'Răsfoieşte server',url:'URL',protocol:'Protocol',upload:'Încarcă',uploadSubmit:'Trimite la server',image:'Imagine',flash:'Flash',form:'Formular (Form)',checkbox:'Bifă (Checkbox)',radio:'Buton radio (RadioButton)',textField:'Câmp text (TextField)',textarea:'Suprafaţă text (Textarea)',hiddenField:'Câmp ascuns (HiddenField)',button:'Buton',select:'Câmp selecţie (SelectionField)',imageButton:'Buton imagine (ImageButton)',notSet:'<nesetat>',id:'Id',name:'Nume',langDir:'Direcţia cuvintelor',langDirLtr:'stânga-dreapta (LTR)',langDirRtl:'dreapta-stânga (RTL)',langCode:'Codul limbii',longDescr:'Descrierea lungă URL',cssClass:'Clasele cu stilul paginii (CSS)',advisoryTitle:'Titlul consultativ',cssStyle:'Stil',ok:'Bine',cancel:'Anulare',generalTab:'General',advancedTab:'Avansat',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Inserează caracter special',title:'Selectează caracter special'},link:{toolbar:'Inserează/Editează link (legătură web)',menu:'Editează Link',title:'Link (Legătură web)',info:'Informaţii despre link (Legătură web)',target:'Ţintă (Target)',upload:'Încarcă',advanced:'Avansat',type:'Tipul link-ului (al legăturii web)',toAnchor:'Ancoră în această pagină',toEmail:'E-Mail',target:'Ţintă (Target)',targetNotSet:'<nesetat>',targetFrame:'<frame>',targetPopup:'<fereastra popup>',targetNew:'Fereastră nouă (_blank)',targetTop:'Fereastra din topul ierarhiei (_top)',targetSelf:'Aceeaşi fereastră (_self)',targetParent:'Fereastra părinte (_parent)',targetFrameName:'Numele frame-ului ţintă',targetPopupName:'Numele ferestrei popup',popupFeatures:'Proprietăţile ferestrei popup',popupResizable:'Resizable',popupStatusBar:'Bara de status',popupLocationBar:'Bara de locaţie',popupToolbar:'Bara de opţiuni',popupMenuBar:'Bara de meniu',popupFullScreen:'Tot ecranul (Full Screen)(IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupWidth:'Lăţime',popupLeft:'Poziţia la stânga',popupHeight:'Înălţime',popupTop:'Poziţia la dreapta',id:'Id',langDir:'Direcţia cuvintelor',langDirNotSet:'<nesetat>',langDirLTR:'stânga-dreapta (LTR)',langDirRTL:'dreapta-stânga (RTL)',acccessKey:'Tasta de acces',name:'Nume',langCode:'Direcţia cuvintelor',tabIndex:'Indexul tabului',advisoryTitle:'Titlul consultativ',advisoryContentType:'Tipul consultativ al titlului',cssClasses:'Clasele cu stilul paginii (CSS)',charset:'Setul de caractere al resursei legate',styles:'Stil',selectAnchor:'Selectaţi o ancoră',anchorName:'după numele ancorei',anchorId:'după Id-ul elementului',emailAddress:'Adresă de e-mail',emailSubject:'Subiectul mesajului',emailBody:'Conţinutul mesajului',noAnchors:'(Nicio ancoră disponibilă în document)',noUrl:'Vă rugăm să scrieţi URL-ul',noEmail:'Vă rugăm să scrieţi adresa de e-mail'},anchor:{toolbar:'Inserează/Editează ancoră',menu:'Proprietăţi ancoră',title:'Proprietăţi ancoră',name:'Numele ancorei',errorName:'Vă rugăm scrieţi numele ancorei'},findAndReplace:{title:'Găseşte şi înlocuieşte',find:'Găseşte',replace:'Înlocuieşte',findWhat:'Găseşte:',replaceWith:'Înlocuieşte cu:',notFoundMsg:'Textul specificat nu a fost găsit.',matchCase:'Deosebeşte majuscule de minuscule (Match case)',matchWord:'Doar cuvintele întregi',matchCyclic:'Match cyclic',replaceAll:'Înlocuieşte tot',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabel',title:'Proprietăţile tabelului',menu:'Proprietăţile tabelului',deleteTable:'Şterge tabel',rows:'Linii',columns:'Coloane',border:'Mărimea marginii',align:'Aliniament',alignNotSet:'<Nesetat>',alignLeft:'Stânga',alignCenter:'Centru',alignRight:'Dreapta',width:'Lăţime',widthPx:'pixeli',widthPc:'procente',height:'Înălţime',cellSpace:'Spaţiu între celule',cellPad:'Spaţiu în cadrul celulei',caption:'Titlu (Caption)',summary:'Rezumat',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Celulă',insertBefore:'Inserează celulă înainte',insertAfter:'Inserează celulă după',deleteCell:'Şterge celule',merge:'Uneşte celule',mergeRight:'Uneşte la dreapta',mergeDown:'Uneşte jos',splitHorizontal:'Împarte celula pe orizontală',splitVertical:'Împarte celula pe verticală',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Linie',insertBefore:'Inserează linie înainte',insertAfter:'Inserează linie după',deleteRow:'Şterge linii'},column:{menu:'Coloană',insertBefore:'Inserează coloană înainte',insertAfter:'Inserează coloană după',deleteColumn:'Şterge celule'}},button:{title:'Proprietăţi buton',text:'Text (Valoare)',type:'Tip',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Proprietăţi bifă (Checkbox)',radioTitle:'Proprietăţi buton radio (Radio Button)',value:'Valoare',selected:'Selectat'},form:{title:'Proprietăţi formular (Form)',menu:'Proprietăţi formular (Form)',action:'Acţiune',method:'Metodă',encoding:'Encoding',target:'Ţintă (Target)',targetNotSet:'<nesetat>',targetNew:'Fereastră nouă (_blank)',targetTop:'Fereastra din topul ierarhiei (_top)',targetSelf:'Aceeaşi fereastră (_self)',targetParent:'Fereastra părinte (_parent)'},select:{title:'Proprietăţi câmp selecţie (Selection Field)',selectInfo:'Informaţii',opAvail:'Opţiuni disponibile',value:'Valoare',size:'Mărime',lines:'linii',chkMulti:'Permite selecţii multiple',opText:'Text',opValue:'Valoare',btnAdd:'Adaugă',btnModify:'Modifică',btnUp:'Sus',btnDown:'Jos',btnSetValue:'Setează ca valoare selectată',btnDelete:'Şterge'},textarea:{title:'Proprietăţi suprafaţă text (Textarea)',cols:'Coloane',rows:'Linii'},textfield:{title:'Proprietăţi câmp text (Text Field)',name:'Nume',value:'Valoare',charWidth:'Lărgimea caracterului',maxChars:'Caractere maxime',type:'Tip',typeText:'Text',typePass:'Parolă'},hidden:{title:'Proprietăţi câmp ascuns (Hidden Field)',name:'Nume',value:'Valoare'},image:{title:'Proprietăţile imaginii',titleButton:'Proprietăţi buton imagine (Image Button)',menu:'Proprietăţile imaginii',infoTab:'Informaţii despre imagine',btnUpload:'Trimite la server',url:'URL',upload:'Încarcă',alt:'Text alternativ',width:'Lăţime',height:'Înălţime',lockRatio:'Păstrează proporţiile',resetSize:'Resetează mărimea',border:'Margine',hSpace:'HSpace',vSpace:'VSpace',align:'Aliniere',alignLeft:'Stânga',alignAbsBottom:'Jos absolut (Abs Bottom)',alignAbsMiddle:'Mijloc absolut (Abs Middle)',alignBaseline:'Linia de jos (Baseline)',alignBottom:'Jos',alignMiddle:'Mijloc',alignRight:'Dreapta',alignTextTop:'Text sus',alignTop:'Sus',preview:'Previzualizare',alertUrl:'Vă rugăm să scrieţi URL-ul imaginii',linkTab:'Link (Legătură web)',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Proprietăţile flash-ului',propertiesTab:'Properties',title:'Proprietăţile flash-ului',chkPlay:'Rulează automat',chkLoop:'Repetă (Loop)',chkMenu:'Activează meniul flash',chkFull:'Allow Fullscreen',scale:'Scală',scaleAll:'Arată tot',scaleNoBorder:'Fără margini (No border)',scaleFit:'Potriveşte',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Aliniere',alignLeft:'Stânga',alignAbsBottom:'Jos absolut (Abs Bottom)',alignAbsMiddle:'Mijloc absolut (Abs Middle)',alignBaseline:'Linia de jos (Baseline)',alignBottom:'Jos',alignMiddle:'Mijloc',alignRight:'Dreapta',alignTextTop:'Text sus',alignTop:'Sus',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Coloarea fundalului',width:'Lăţime',height:'Înălţime',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Vă rugăm să scrieţi URL-ul',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Verifică text',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Nu e în dicţionar',changeTo:'Schimbă în',btnIgnore:'Ignoră',btnIgnoreAll:'Ignoră toate',btnReplace:'Înlocuieşte',btnReplaceAll:'Înlocuieşte tot',btnUndo:'Starea anterioară (undo)',noSuggestions:'- Fără sugestii -',progress:'Verificarea textului în desfăşurare...',noMispell:'Verificarea textului terminată: Nicio greşeală găsită',noChanges:'Verificarea textului terminată: Niciun cuvânt modificat',oneChange:'Verificarea textului terminată: Un cuvânt modificat',manyChanges:'Verificarea textului terminată: 1% cuvinte modificate',ieSpellDownload:'Unealta pentru verificat textul (Spell checker) neinstalată. Doriţi să o descărcaţi acum?'},smiley:{toolbar:'Figură expresivă (Emoticon)',title:'Inserează o figură expresivă (Emoticon)'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Listă numerotată',bulletedlist:'Listă cu puncte',indent:'Creşte indentarea',outdent:'Scade indentarea',justify:{left:'Aliniere la stânga',center:'Aliniere centrală',right:'Aliniere la dreapta',block:'Aliniere în bloc (Block Justify)'},blockquote:'Citat',clipboard:{title:'Adaugă',cutError:'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl+X).',copyError:'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl+C).',pasteMsg:'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (<STRONG>Ctrl+V</STRONG>) şi apăsaţi <STRONG>OK</STRONG>.',securityMsg:'Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.'},pastefromword:{toolbar:'Adaugă din Word',title:'Adaugă din Word',advice:'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (<STRONG>Ctrl+V</STRONG>) şi apăsaţi <STRONG>OK</STRONG>.',ignoreFontFace:'Ignoră definiţiile Font Face',removeStyle:'Şterge definiţiile stilurilor'},pasteText:{button:'Adaugă ca text simplu (Plain Text)',title:'Adaugă ca text simplu (Plain Text)'},templates:{button:'Template-uri (şabloane)',title:'Template-uri (şabloane) de conţinut',insertOption:'Înlocuieşte cuprinsul actual',selectPromptMsg:'Vă rugăm selectaţi template-ul (şablonul) ce se va deschide în editor<br>(conţinutul actual va fi pierdut):',emptyListMsg:'(Niciun template (şablon) definit)'},showBlocks:'Arată blocurile',stylesCombo:{label:'Stil',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formatare',voiceLabel:'Format',panelTitle:'Formatare',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font',panelVoiceLabel:'Select a font'},fontSize:{label:'Mărime',voiceLabel:'Font Size',panelTitle:'Mărime',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Culoarea textului',bgColorTitle:'Coloarea fundalului',auto:'Automatic',more:'Mai multe culori...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/pt-br.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/pt-br.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/pt-br.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['pt-br']={dir:'ltr',editorTitle:'Editor de texto formatado, %1',source:'Código-Fonte',newPage:'Novo',save:'Salvar',preview:'Visualizar',cut:'Recortar',copy:'Copiar',paste:'Colar',print:'Imprimir',underline:'Sublinhado',bold:'Negrito',italic:'Itálico',selectAll:'Selecionar Tudo',removeFormat:'Remover Formatação',strike:'Tachado',subscript:'Subscrito',superscript:'Sobrescrito',horizontalrule:'Inserir Linha Horizontal',pagebreak:'Inserir Quebra de Página',unlink:'Remover Hiperlink',undo:'Desfazer',redo:'Refazer',common:{browseServer:'Localizar no Servidor',url:'URL',protocol:'Protocolo',upload:'Enviar ao Servidor',uploadSubmit:'Enviar para o Servidor',image:'Figura',flash:'Flash',form:'Formulário',checkbox:'Caixa de Seleção',radio:'Botão de Opção',textField:'Caixa de Texto',textarea:'Área de Texto',hiddenField:'Campo Oculto',button:'Botão',select:'Caixa de Listagem',imageButton:'Botão de Imagem',notSet:'<não ajustado>',id:'Id',name:'Nome',langDir:'Direção do idioma',langDirLtr:'Esquerda para Direita (LTR)',langDirRtl:'Direita para Esquerda (RTL)',langCode:'Idioma',longDescr:'Descrição da URL',cssClass:'Classe de Folhas de Estilo',advisoryTitle:'Título',cssStyle:'Estilos',ok:'OK',cancel:'Cancelar',generalTab:'Geral',advancedTab:'Avançado',validateNumberFailed:'Este valor não é um número.',confirmNewPage:'Todas as mudanças não salvas serão perdidas. Tem certeza de que quer carregar outra página?',confirmCancel:'Algumas opções foram alteradas. Tem certeza de que quer fechar a caixa de diálogo?',unavailable:'%1<span class="cke_accessibility">, indisponível</span>'},specialChar:{toolbar:'Inserir Caractere Especial',title:'Selecione um Caractere Especial'},link:{toolbar:'Inserir/Editar Hiperlink',menu:'Editar Hiperlink',title:'Hiperlink',info:'Informações',target:'Destino',upload:'Enviar ao Servidor',advanced:'Avançado',type:'Tipo de hiperlink',toAnchor:'Âncora nesta página',toEmail:'E-Mail',target:'Destino',targetNotSet:'<não ajustado>',targetFrame:'<frame>',targetPopup:'<janela popup>',targetNew:'Nova Janela (_blank)',targetTop:'Janela Superior (_top)',targetSelf:'Mesma Janela (_self)',targetParent:'Janela Pai (_parent)',targetFrameName:'Nome do Frame de Destino',targetPopupName:'Nome da Janela Pop-up',popupFeatures:'Atributos da Janela Pop-up',popupResizable:'Redimensionável',popupStatusBar:'Barra de Status',popupLocationBar:'Barra de Endereços',popupToolbar:'Barra de Ferramentas',popupMenuBar:'Barra de Menus',popupFullScreen:'Modo Tela Cheia (IE)',popupScrollBars:'Barras de Rolagem',popupDependent:'Dependente (Netscape)',popupWidth:'Largura',popupLeft:'Esquerda',popupHeight:'Altura',popupTop:'Superior',id:'Id',langDir:'Direção do idioma',langDirNotSet:'<não ajustado>',langDirLTR:'Esquerda para Direita (LTR)',langDirRTL:'Direita para Esquerda (RTL)',acccessKey:'Chave de Acesso',name:'Nome',langCode:'Direção do idioma',tabIndex:'Índice de Tabulação',advisoryTitle:'Título',advisoryContentType:'Tipo de Conteúdo',cssClasses:'Classe de Folhas de Estilo',charset:'Conjunto de Caracteres do Hiperlink',styles:'Estilos',selectAnchor:'Selecione uma âncora',anchorName:'Pelo Nome da âncora',anchorId:'Pelo Id do Elemento',emailAddress:'Endereço E-Mail',emailSubject:'Assunto da Mensagem',emailBody:'Corpo da Mensagem',noAnchors:'(Não há âncoras disponíveis neste documento)',noUrl:'Por favor, digite o endereço do Hiperlink',noEmail:'Por favor, digite o endereço de e-mail'},anchor:{toolbar:'Inserir/Editar Âncora',menu:'Formatar Âncora',title:'Formatar Âncora',name:'Nome da Âncora',errorName:'Por favor, digite o nome da âncora'},findAndReplace:{title:'Localizar e Substituir',find:'Localizar',replace:'Substituir',findWhat:'Procurar por:',replaceWith:'Substituir por:',notFoundMsg:'O texto especificado não foi encontrado.',matchCase:'Coincidir Maiúsculas/Minúsculas',matchWord:'Coincidir a palavra inteira',matchCyclic:'Coincidir cíclico',replaceAll:'Substituir Tudo',replaceSuccessMsg:'%1 ocorrência(s) substituída(s).'},table:{toolbar:'Tabela',title:'Formatar Tabela',menu:'Formatar Tabela',deleteTable:'Apagar Tabela',rows:'Linhas',columns:'Colunas',border:'Borda',align:'Alinhamento',alignNotSet:'<Não ajustado>',alignLeft:'Esquerda',alignCenter:'Centralizado',alignRight:'Direita',width:'Largura',widthPx:'pixels',widthPc:'%',height:'Altura',cellSpace:'Espaçamento',cellPad:'Enchimento',caption:'Legenda',summary:'Resumo',headers:'Cabeçalho',headersNone:'Nenhum',headersColumn:'Primeira coluna',headersRow:'Primeira linha',headersBoth:'Ambos',invalidRows:'"Número de linhas" tem que ser um número maior que 0.',invalidCols:'"Número de colunas" tem que ser um número maior que 0.',invalidBorder:'"Tamanho da borda" tem que ser um número.',invalidWidth:'"Largura da tabela" tem que ser um número.',invalidHeight:'"Altura da tabela" tem que ser um número.',invalidCellSpacing:'"Espaçamento das células" tem que ser um número.',invalidCellPadding:'"Margem interna das células" tem que ser um número.',cell:{menu:'Célula',insertBefore:'Inserir célula à esquerda',insertAfter:'Inserir célula à direita',deleteCell:'Remover Células',merge:'Mesclar Células',mergeRight:'Mesclar com célula à direita',mergeDown:'Mesclar com célula abaixo',splitHorizontal:'Dividir célula horizontalmente',splitVertical:'Dividir célula verticalmente',title:'Propriedades da célula',cellType:'Tipo de célula',rowSpan:'Linhas cobertas',colSpan:'Colunas cobertas',wordWrap:'Quebra de palavra',hAlign:'Alinhamento horizontal',vAlign:'Alinhamento vertical',alignTop:'Alinhar no topo',alignMiddle:'Centralizado verticalmente',alignBottom:'Alinhar na base',alignBaseline:'Patamar de alinhamento',bgColor:'Cor de fundo',borderColor:'Cor das bordas',data:'Dados',header:'Cabeçalho',yes:'Sim',no:'Não',invalidWidth:'A largura da célula tem que ser um número.',invalidHeight:'A altura da célula tem que ser um número.',invalidRowSpan:'"Linhas cobertas" tem que ser um número inteiro.',invalidColSpan:'"Colunas cobertas" tem que ser um número inteiro.',chooseColor:'Choose'},row:{menu:'Linha',insertBefore:'Inserir linha acima',insertAfter:'Inserir linha abaixo',deleteRow:'Remover Linhas'},column:{menu:'Coluna',insertBefore:'Inserir coluna à esquerda',insertAfter:'Inserir coluna à direita',deleteColumn:'Remover Colunas'}},button:{title:'Formatar Botão',text:'Texto (Valor)',type:'Tipo',typeBtn:'Botão',typeSbm:'Enviar',typeRst:'Limpar'},checkboxAndRadio:{checkboxTitle:'Formatar Caixa de Seleção',radioTitle:'Formatar Botão de Opção',value:'Valor',selected:'Selecionado'},form:{title:'Formatar Formulário',menu:'Formatar Formulário',action:'Action',method:'Método',encoding:'Codificação',target:'Destino',targetNotSet:'<não ajustado>',targetNew:'Nova Janela (_blank)',targetTop:'Janela Superior (_top)',targetSelf:'Mesma Janela (_self)',targetParent:'Janela Pai (_parent)'},select:{title:'Formatar Caixa de Listagem',selectInfo:'Info',opAvail:'Opções disponíveis',value:'Valor',size:'Tamanho',lines:'linhas',chkMulti:'Permitir múltiplas seleções',opText:'Texto',opValue:'Valor',btnAdd:'Adicionar',btnModify:'Modificar',btnUp:'Para cima',btnDown:'Para baixo',btnSetValue:'Definir como selecionado',btnDelete:'Remover'},textarea:{title:'Formatar Área de Texto',cols:'Colunas',rows:'Linhas'},textfield:{title:'Formatar Caixa de Texto',name:'Nome',value:'Valor',charWidth:'Comprimento (em caracteres)',maxChars:'Número Máximo de Caracteres',type:'Tipo',typeText:'Texto',typePass:'Senha'},hidden:{title:'Formatar Campo Oculto',name:'Nome',value:'Valor'},image:{title:'Formatar Figura',titleButton:'Formatar Botão de Imagem',menu:'Formatar Figura',infoTab:'Informações da Figura',btnUpload:'Enviar para o Servidor',url:'URL',upload:'Submeter',alt:'Texto Alternativo',width:'Largura',height:'Altura',lockRatio:'Manter proporções',resetSize:'Redefinir para o Tamanho Original',border:'Borda',hSpace:'Horizontal',vSpace:'Vertical',align:'Alinhamento',alignLeft:'Esquerda',alignAbsBottom:'Inferior Absoluto',alignAbsMiddle:'Centralizado Absoluto',alignBaseline:'Baseline',alignBottom:'Inferior',alignMiddle:'Centralizado',alignRight:'Direita',alignTextTop:'Superior Absoluto',alignTop:'Superior',preview:'Visualização',alertUrl:'Por favor, digite o URL da figura.',linkTab:'Hiperlink',button2Img:'Você deseja transformar o botão de imagem selecionado em uma imagem comum?',img2Button:'Você deseja transformar a imagem selecionada em um botão de imagem?',urlMissing:'Image source URL is missing.'},flash:{properties:'Propriedades do Flash',propertiesTab:'Propriedades',title:'Propriedades do Flash',chkPlay:'Tocar Automaticamente',chkLoop:'Loop',chkMenu:'Habilita Menu Flash',chkFull:'Permitir tela cheia',scale:'Escala',scaleAll:'Mostrar tudo',scaleNoBorder:'Sem Borda',scaleFit:'Escala Exata',access:'Acesso ao script',accessAlways:'Sempre',accessSameDomain:'Mesmo domínio',accessNever:'Nunca',align:'Alinhamento',alignLeft:'Esquerda',alignAbsBottom:'Inferior Absoluto',alignAbsMiddle:'Centralizado Absoluto',alignBaseline:'Baseline',alignBottom:'Inferior',alignMiddle:'Centralizado',alignRight:'Direita',alignTextTop:'Superior Absoluto',alignTop:'Superior',quality:'Qualidade',qualityBest:'Melhor',qualityHigh:'Alta',qualityAutoHigh:'Alta automático',qualityMedium:'Média',qualityAutoLow:'Média automático',qualityLow:'Baixa',windowModeWindow:'Janela',windowModeOpaque:'Opaca',windowModeTransparent:'Transparente',windowMode:'Modo da janela',flashvars:'Variáveis do Flash',bgcolor:'Cor do Plano de Fundo',width:'Largura',height:'Altura',hSpace:'Horizontal',vSpace:'Vertical',validateSrc:'Por favor, digite o endereço do Hiperlink',validateWidth:'"Largura" tem que ser um número.',validateHeight:'"Altura" tem que ser um número',validateHSpace:'"HSpace" tem que ser um número',validateVSpace:'"VSpace" tem que ser um número.'},spellCheck:{toolbar:'Verificar Ortografia',title:'Corretor gramatical',notAvailable:'Desculpe, o serviço não está disponível no momento.',errorLoading:'Erro carregando servidor de aplicação: %s.',notInDic:'Não encontrada',changeTo:'Alterar para',btnIgnore:'Ignorar uma vez',btnIgnoreAll:'Ignorar Todas',btnReplace:'Alterar',btnReplaceAll:'Alterar Todas',btnUndo:'Desfazer',noSuggestions:'-sem sugestões de ortografia-',progress:'Verificação ortográfica em andamento...',noMispell:'Verificação encerrada: Não foram encontrados erros de ortografia',noChanges:'Verificação ortográfica encerrada: Não houve alterações',oneChange:'Verificação ortográfica encerrada: Uma palavra foi alterada',manyChanges:'Verificação ortográfica encerrada: %1 foram alteradas',ieSpellDownload:'A verificação ortográfica não foi instalada. Você gostaria de realizar o download agora?'},smiley:{toolbar:'Emoticon',title:'Inserir Emoticon'},elementsPath:{eleTitle:'Elemento %1'},numberedlist:'Numeração',bulletedlist:'Marcadores',indent:'Aumentar Recuo',outdent:'Diminuir Recuo',justify:{left:'Alinhar Esquerda',center:'Centralizar',right:'Alinhar Direita',block:'Justificado'},blockquote:'Recuo',clipboard:{title:'Colar',cutError:'As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl+X).',copyError:'As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl+C).',pasteMsg:'Transfira o link usado no box usando o teclado com (<STRONG>Ctrl+V</STRONG>) e <STRONG>OK</STRONG>.',securityMsg:'As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo novamente nesta janela.'},pastefromword:{toolbar:'Colar do Word',title:'Colar do Word',advice:'Transfira o link usado no box usando o teclado com (<STRONG>Ctrl+V</STRONG>) e <STRONG>OK</STRONG>.',ignoreFontFace:'Ignorar definições de fonte',removeStyle:'Remove definições de estilo'},pasteText:{button:'Colar como Texto sem Formatação',title:'Colar como Texto sem Formatação'},templates:{button:'Modelos de layout',title:'Modelo de layout do conteúdo',insertOption:'Substituir o conteúdo atual',selectPromptMsg:'Selecione um modelo de layout para ser aberto no editor<br>(o conteúdo atual será perdido):',emptyListMsg:'(Não foram definidos modelos de layout)'},showBlocks:'Mostrar blocos',stylesCombo:{label:'Estilo',voiceLabel:'Estilo',panelVoiceLabel:'Selecione um estilo',panelTitle1:'Estilos de bloco',panelTitle2:'Estilos em texto corrido',panelTitle3:'Estilos de objeto'},format:{label:'Formatação',voiceLabel:'Formatação',panelTitle:'Formatação',panelVoiceLabel:'Selecione uma formatação de parágrafo',tag_p:'Normal',tag_pre:'Formatado',tag_address:'Endereço',tag_h1:'Título 1',tag_h2:'Título 2',tag_h3:'Título 3',tag_h4:'Título 4',tag_h5:'Título 5',tag_h6:'Título 6',tag_div:'Normal (DIV)'},font:{label:'Fonte',voiceLabel:'Fonte',panelTitle:'Fonte',panelVoiceLabel:'Selecione uma fonte'},fontSize:{label:'Tamanho',voiceLabel:'Tamanho da fonte',panelTitle:'Tamanho',panelVoiceLabel:'Selecione um tamanho de fonte'},colorButton:{textColorTitle:'Cor do Texto',bgColorTitle:'Cor do Plano de Fundo',auto:'Automático',more:'Mais Cores...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Correção gramatical durante a digitação',enable:'Habilitar SCAYT',disable:'Desabilitar SCAYT',about:'Sobre o SCAYT',toggle:'Ativar/desativar SCAYT',options:'Opções',langs:'Línguas',moreSuggestions:'Mais sugestões',ignore:'Ignorar',ignoreAll:'Ignorar todas',addWord:'Adicionar palavra',emptyDic:'O nome do dicionário não deveria estar vazio.',optionsTab:'Opções',languagesTab:'Línguas',dictionariesTab:'Dicionários',aboutTab:'Sobre'},about:{title:'Sobre o CKEditor',dlgTitle:'About CKEditor',moreInfo:'Para informações sobre a licença, por favor, visite o nosso site na Internet:',copy:'Direito de reprodução &copy; $1. Todos os direitos reservados.'},maximize:'Maximizar',minimize:'Minimize',fakeobjects:{anchor:'Âncora',flash:'Animação em Flash',div:'Quebra de página',unknown:'Objeto desconhecido'},resize:'Arraste para redimensionar',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/ru.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/ru.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/ru.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ru={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Источник',newPage:'Новая страница',save:'Сохранить',preview:'Предварительный просмотр',cut:'Вырезать',copy:'Копировать',paste:'Вставить',print:'Печать',underline:'Подчеркнутый',bold:'Жирный',italic:'Курсив',selectAll:'Выделить все',removeFormat:'Убрать форматирование',strike:'Зачеркнутый',subscript:'Подстрочный индекс',superscript:'Надстрочный индекс',horizontalrule:'Вставить горизонтальную линию',pagebreak:'Вставить разрыв страницы',unlink:'Убрать ссылку',undo:'Отменить',redo:'Повторить',common:{browseServer:'Просмотреть на сервере',url:'URL',protocol:'Протокол',upload:'Закачать',uploadSubmit:'Послать на сервер',image:'Изображение',flash:'Flash',form:'Форма',checkbox:'Флаговая кнопка',radio:'Кнопка выбора',textField:'Текстовое поле',textarea:'Текстовая область',hiddenField:'Скрытое поле',button:'Кнопка',select:'Список',imageButton:'Кнопка с изображением',notSet:'<не определено>',id:'Идентификатор',name:'Имя',langDir:'Направление языка',langDirLtr:'Слева на право (LTR)',langDirRtl:'Справа на лево (RTL)',langCode:'Язык',longDescr:'Длинное описание URL',cssClass:'Класс CSS',advisoryTitle:'Заголовок',cssStyle:'Стиль CSS',ok:'ОК',cancel:'Отмена',generalTab:'Информация',advancedTab:'Расширенный',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Вставить специальный символ',title:'Выберите специальный символ'},link:{toolbar:'Вставить/Редактировать ссылку',menu:'Вставить ссылку',title:'Ссылка',info:'Информация ссылки',target:'Цель',upload:'Закачать',advanced:'Расширенный',type:'Тип ссылки',toAnchor:'Якорь на эту страницу',toEmail:'Эл. почта',target:'Цель',targetNotSet:'<не определено>',targetFrame:'<фрейм>',targetPopup:'<всплывающее окно>',targetNew:'Новое окно (_blank)',targetTop:'Самое верхнее окно (_top)',targetSelf:'Тоже окно (_self)',targetParent:'Родительское окно (_parent)',targetFrameName:'Имя целевого фрейма',targetPopupName:'Имя всплывающего окна',popupFeatures:'Свойства всплывающего окна',popupResizable:'Resizable',popupStatusBar:'Строка состояния',popupLocationBar:'Панель локации',popupToolbar:'Панель инструментов',popupMenuBar:'Панель меню',popupFullScreen:'Полный экран (IE)',popupScrollBars:'Полосы прокрутки',popupDependent:'Зависимый (Netscape)',popupWidth:'Ширина',popupLeft:'Позиция слева',popupHeight:'Высота',popupTop:'Позиция сверху',id:'Id',langDir:'Направление языка',langDirNotSet:'<не определено>',langDirLTR:'Слева на право (LTR)',langDirRTL:'Справа на лево (RTL)',acccessKey:'Горячая клавиша',name:'Имя',langCode:'Направление языка',tabIndex:'Последовательность перехода',advisoryTitle:'Заголовок',advisoryContentType:'Тип содержимого',cssClasses:'Класс CSS',charset:'Кодировка',styles:'Стиль CSS',selectAnchor:'Выберите якорь',anchorName:'По имени якоря',anchorId:'По идентификатору элемента',emailAddress:'Адрес эл. почты',emailSubject:'Заголовок сообщения',emailBody:'Тело сообщения',noAnchors:'(Нет якорей доступных в этом документе)',noUrl:'Пожалуйста, введите URL ссылки',noEmail:'Пожалуйста, введите адрес эл. почты'},anchor:{toolbar:'Вставить/Редактировать якорь',menu:'Свойства якоря',title:'Свойства якоря',name:'Имя якоря',errorName:'Пожалуйста, введите имя якоря'},findAndReplace:{title:'Найти и заменить',find:'Найти',replace:'Заменить',findWhat:'Найти:',replaceWith:'Заменить на:',notFoundMsg:'Указанный текст не найден.',matchCase:'Учитывать регистр',matchWord:'Совпадение целых слов',matchCyclic:'Match cyclic',replaceAll:'Заменить все',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Таблица',title:'Свойства таблицы',menu:'Свойства таблицы',deleteTable:'Удалить таблицу',rows:'Строки',columns:'Колонки',border:'Размер бордюра',align:'Выравнивание',alignNotSet:'<Не уст.>',alignLeft:'Слева',alignCenter:'По центру',alignRight:'Справа',width:'Ширина',widthPx:'пикселей',widthPc:'процентов',height:'Высота',cellSpace:'Промежуток (spacing)',cellPad:'Отступ (padding)',caption:'Заголовок',summary:'Резюме',headers:'Заголовки',headersNone:'Нет',headersColumn:'Первый столбец',headersRow:'Первая строка',headersBoth:'Оба варианта',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Ячейка',insertBefore:'Вставить ячейку до',insertAfter:'Вставить ячейку после',deleteCell:'Удалить ячейки',merge:'Соединить ячейки',mergeRight:'Соединить вправо',mergeDown:'Соединить вниз',splitHorizontal:'Разбить ячейку горизонтально',splitVertical:'Разбить ячейку вертикально',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Строка',insertBefore:'Вставить строку до',insertAfter:'Вставить строку после',deleteRow:'Удалить строки'},column:{menu:'Колонка',insertBefore:'Вставить колонку до',insertAfter:'Вставить колонку после',deleteColumn:'Удалить колонки'}},button:{title:'Свойства кнопки',text:'Текст (Значение)',type:'Тип',typeBtn:'Кнопка',typeSbm:'Отправить',typeRst:'Сбросить'},checkboxAndRadio:{checkboxTitle:'Свойства флаговой кнопки',radioTitle:'Свойства кнопки выбора',value:'Значение',selected:'Выбранная'},form:{title:'Свойства формы',menu:'Свойства формы',action:'Действие',method:'Метод',encoding:'Encoding',target:'Цель',targetNotSet:'<не определено>',targetNew:'Новое окно (_blank)',targetTop:'Самое верхнее окно (_top)',targetSelf:'Тоже окно (_self)',targetParent:'Родительское окно (_parent)'},select:{title:'Свойства списка',selectInfo:'Информация',opAvail:'Доступные варианты',value:'Значение',size:'Размер',lines:'линии',chkMulti:'Разрешить множественный выбор',opText:'Текст',opValue:'Значение',btnAdd:'Добавить',btnModify:'Модифицировать',btnUp:'Вверх',btnDown:'Вниз',btnSetValue:'Установить как выбранное значение',btnDelete:'Удалить'},textarea:{title:'Свойства текстовой области',cols:'Колонки',rows:'Строки'},textfield:{title:'Свойства текстового поля',name:'Имя',value:'Значение',charWidth:'Ширина',maxChars:'Макс. кол-во символов',type:'Тип',typeText:'Текст',typePass:'Пароль'},hidden:{title:'Свойства скрытого поля',name:'Имя',value:'Значение'},image:{title:'Свойства изображения',titleButton:'Свойства кнопки с изображением',menu:'Свойства изображения',infoTab:'Информация о изображении',btnUpload:'Послать на сервер',url:'URL',upload:'Закачать',alt:'Альтернативный текст',width:'Ширина',height:'Высота',lockRatio:'Сохранять пропорции',resetSize:'Сбросить размер',border:'Бордюр',hSpace:'Горизонтальный отступ',vSpace:'Вертикальный отступ',align:'Выравнивание',alignLeft:'По левому краю',alignAbsBottom:'Абс понизу',alignAbsMiddle:'Абс посередине',alignBaseline:'По базовой линии',alignBottom:'Понизу',alignMiddle:'Посередине',alignRight:'По правому краю',alignTextTop:'Текст наверху',alignTop:'По верху',preview:'Предварительный просмотр',alertUrl:'Пожалуйста, введите URL изображения',linkTab:'Ссылка',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Свойства Flash',propertiesTab:'Properties',title:'Свойства Flash',chkPlay:'Авто проигрывание',chkLoop:'Повтор',chkMenu:'Включить меню Flash',chkFull:'Allow Fullscreen',scale:'Масштабировать',scaleAll:'Показывать все',scaleNoBorder:'Без бордюра',scaleFit:'Точное совпадение',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Выравнивание',alignLeft:'По левому краю',alignAbsBottom:'Абс понизу',alignAbsMiddle:'Абс посередине',alignBaseline:'По базовой линии',alignBottom:'Понизу',alignMiddle:'Посередине',alignRight:'По правому краю',alignTextTop:'Текст наверху',alignTop:'По верху',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Цвет фона',width:'Ширина',height:'Высота',hSpace:'Горизонтальный отступ',vSpace:'Вертикальный отступ',validateSrc:'Пожалуйста, введите URL ссылки',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Проверить орфографию',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Нет в словаре',changeTo:'Заменить на',btnIgnore:'Игнорировать',btnIgnoreAll:'Игнорировать все',btnReplace:'Заменить',btnReplaceAll:'Заменить все',btnUndo:'Отменить',noSuggestions:'- Нет предположений -',progress:'Идет проверка орфографии...',noMispell:'Проверка орфографии закончена: ошибок не найдено',noChanges:'Проверка орфографии закончена: ни одного слова не изменено',oneChange:'Проверка орфографии закончена: одно слово изменено',manyChanges:'Проверка орфографии закончена: 1% слов изменен',ieSpellDownload:'Модуль проверки орфографии не установлен. Хотите скачать его сейчас?'},smiley:{toolbar:'Смайлик',title:'Вставить смайлик'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Нумерованный список',bulletedlist:'Маркированный список',indent:'Увеличить отступ',outdent:'Уменьшить отступ',justify:{left:'По левому краю',center:'По центру',right:'По правому краю',block:'По ширине'},blockquote:'Цитата',clipboard:{title:'Вставить',cutError:'Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции вырезания. Пожалуйста, используйте клавиатуру для этого (Ctrl+X).',copyError:'Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции копирования. Пожалуйста, используйте клавиатуру для этого (Ctrl+C).',pasteMsg:'Пожалуйста, вставьте текст в прямоугольник, используя сочетание клавиш (<STRONG>Ctrl+V</STRONG>), и нажмите <STRONG>OK</STRONG>.',securityMsg:'По причине настроек безопасности браузера, редактор не имеет доступа к данным буфера обмена напрямую. Вам необходимо вставить текст снова в это окно.'},pastefromword:{toolbar:'Вставить из Word',title:'Вставить из Word',advice:'Пожалуйста, вставьте текст в прямоугольник, используя сочетание клавиш (<STRONG>Ctrl+V</STRONG>), и нажмите <STRONG>OK</STRONG>.',ignoreFontFace:'Игнорировать определения гарнитуры',removeStyle:'Убрать определения стилей'},pasteText:{button:'Вставить только текст',title:'Вставить только текст'},templates:{button:'Шаблоны',title:'Шаблоны содержимого',insertOption:'Заменить текущее содержание',selectPromptMsg:'Пожалуйста, выберете шаблон для открытия в редакторе<br>(текущее содержимое будет потеряно):',emptyListMsg:'(Ни одного шаблона не определено)'},showBlocks:'Показать блоки',stylesCombo:{label:'Стиль',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Форматирование',voiceLabel:'Format',panelTitle:'Форматирование',panelVoiceLabel:'Select a paragraph format',tag_p:'Нормальный',tag_pre:'Форматированный',tag_address:'Адрес',tag_h1:'Заголовок 1',tag_h2:'Заголовок 2',tag_h3:'Заголовок 3',tag_h4:'Заголовок 4',tag_h5:'Заголовок 5',tag_h6:'Заголовок 6',tag_div:'Нормальный (DIV)'},font:{label:'Шрифт',voiceLabel:'Font',panelTitle:'Шрифт',panelVoiceLabel:'Select a font'},fontSize:{label:'Размер',voiceLabel:'Font Size',panelTitle:'Размер',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Цвет текста',bgColorTitle:'Цвет фона',auto:'Автоматический',more:'Цвета...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/af.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/af.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/af.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.af={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Source',newPage:'Nuwe Bladsy',save:'Bewaar',preview:'Voorskou',cut:'Uitsny ',copy:'Kopieer',paste:'Byvoeg',print:'Druk',underline:'Onderstreep',bold:'Vet',italic:'Skuins',selectAll:'Selekteer alles',removeFormat:'Formaat verweider',strike:'Gestreik',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Horisontale lyn byvoeg',pagebreak:'Bladsy breek byvoeg',unlink:'Skakel verweider',undo:'Ont-skep',redo:'Her-skep',common:{browseServer:'Server deurblaai',url:'URL',protocol:'Protokol',upload:'Oplaai',uploadSubmit:'Stuur dit na die Server',image:'Beeld',flash:'Flash',form:'Form',checkbox:'HakBox',radio:'PuntBox',textField:'Byvoegbare karakter strook',textarea:'Byvoegbare karakter area',hiddenField:'Blinde strook',button:'Knop',select:'Opklapbare keuse strook',imageButton:'Beeld knop',notSet:'<geen instelling>',id:'Id',name:'Naam',langDir:'Taal rigting',langDirLtr:'Links na regs (LTR)',langDirRtl:'Regs na links (RTL)',langCode:'Taal kode',longDescr:'Lang beskreiwing URL',cssClass:'Skakel Tiepe',advisoryTitle:'Voorbeveelings Titel',cssStyle:'Styl',ok:'OK',cancel:'Kanseleer',generalTab:'General',advancedTab:'Ingewikkeld',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Spesiaale Karakter byvoeg',title:'Kies spesiale karakter'},link:{toolbar:'Skakel byvoeg/verander',menu:'Verander skakel',title:'Skakel',info:'Skakel informasie',target:'Mikpunt',upload:'Oplaai',advanced:'Ingewikkeld',type:'Skakel soort',toAnchor:'Skakel na plekhouers in text',toEmail:'E-Mail',target:'Mikpunt',targetNotSet:'<geen instelling>',targetFrame:'<raam>',targetPopup:'<popup venster>',targetNew:'Nuwe Venster (_blank)',targetTop:'Boonste Venster (_top)',targetSelf:'Selfde Venster (_self)',targetParent:'Vorige Venster (_parent)',targetFrameName:'Mikpunt Venster Naam',targetPopupName:'Popup Venster Naam',popupFeatures:'Popup Venster Geaartheid',popupResizable:'Resizable',popupStatusBar:'Status Balk',popupLocationBar:'Adres Balk',popupToolbar:'Gereedskap Balk',popupMenuBar:'Menu Balk',popupFullScreen:'Voll Skerm (IE)',popupScrollBars:'Gleibalkstuk',popupDependent:'Afhanklik (Netscape)',popupWidth:'Weite',popupLeft:'Links Posisie',popupHeight:'Hoogde',popupTop:'Bo Posisie',id:'Id',langDir:'Taal rigting',langDirNotSet:'<geen instelling>',langDirLTR:'Links na regs (LTR)',langDirRTL:'Regs na links (RTL)',acccessKey:'Toegang sleutel',name:'Naam',langCode:'Taal rigting',tabIndex:'Tab Index',advisoryTitle:'Voorbeveelings Titel',advisoryContentType:'Voorbeveelings inhoud soort',cssClasses:'Skakel Tiepe',charset:'Geskakelde voorbeeld karakterstel',styles:'Styl',selectAnchor:"Kies 'n plekhouer",anchorName:'Volgens plekhouer naam',anchorId:'Volgens element Id',emailAddress:'E-Mail Adres',emailSubject:'Boodskap Opskrif',emailBody:'Boodskap Inhoud',noAnchors:'(Geen plekhouers beskikbaar in dokument}',noUrl:'Voeg asseblief die URL in',noEmail:'Voeg asseblief die e-mail adres in'},anchor:{toolbar:'Plekhouer byvoeg/verander',menu:'Plekhouer eienskappe',title:'Plekhouer eienskappe',name:'Plekhouer Naam',errorName:'Voltooi die plekhouer naam asseblief'},findAndReplace:{title:'Find and Replace',find:'Vind',replace:'Vervang',findWhat:'Soek wat:',replaceWith:'Vervang met:',notFoundMsg:'Die gespesifiseerde karakters word nie gevind nie.',matchCase:'Vergelyk karakter skryfweise',matchWord:'Vergelyk komplete woord',matchCyclic:'Match cyclic',replaceAll:'Vervang alles',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabel',title:'Tabel eienskappe',menu:'Tabel eienskappe',deleteTable:'Tabel verweider',rows:'Reie',columns:'Kolome',border:'Kant groote',align:'Parideering',alignNotSet:'<geen instelling>',alignLeft:'Links',alignCenter:'Middel',alignRight:'Regs',width:'Weite',widthPx:'pixels',widthPc:'percent',height:'Hoogde',cellSpace:'Cell spasieering',cellPad:'Cell buffer',caption:'Beskreiwing',summary:'Opsomming',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Cell verweider',merge:'Cell verenig',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Ry',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Ry verweider'},column:{menu:'Kolom',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Kolom verweider'}},button:{title:'Knop eienskappe',text:'Karakters (Waarde)',type:'Soort',typeBtn:'Knop',typeSbm:'Indien',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'HakBox eienskappe',radioTitle:'PuntBox eienskappe',value:'Waarde',selected:'Uitgekies'},form:{title:'Form eienskappe',menu:'Form eienskappe',action:'Aksie',method:'Metode',encoding:'Encoding',target:'Mikpunt',targetNotSet:'<geen instelling>',targetNew:'Nuwe Venster (_blank)',targetTop:'Boonste Venster (_top)',targetSelf:'Selfde Venster (_self)',targetParent:'Vorige Venster (_parent)'},select:{title:'Opklapbare keuse strook eienskappe',selectInfo:'Info',opAvail:'Beskikbare Opsies',value:'Waarde',size:'Grote',lines:'lyne',chkMulti:'Laat meerere keuses toe',opText:'Karakters',opValue:'Waarde',btnAdd:'Byvoeg',btnModify:'Verander',btnUp:'Op',btnDown:'Af',btnSetValue:'Stel as uitgekiesde waarde',btnDelete:'Verweider'},textarea:{title:'Karakter area eienskappe',cols:'Kolom',rows:'Reie'},textfield:{title:'Karakter strook eienskappe',name:'Naam',value:'Waarde',charWidth:'Karakter weite',maxChars:'Maximale karakters',type:'Soort',typeText:'Karakters',typePass:'Wagwoord'},hidden:{title:'Blinde strook eienskappe',name:'Naam',value:'Waarde'},image:{title:'Beeld eienskappe',titleButton:'Beeld knop eienskappe',menu:'Beeld eienskappe',infoTab:'Beeld informasie',btnUpload:'Stuur dit na die Server',url:'URL',upload:'Uplaai',alt:'Alternatiewe beskrywing',width:'Weidte',height:'Hoogde',lockRatio:'Behou preporsie',resetSize:'Herstel groote',border:'Kant',hSpace:'HSpasie',vSpace:'VSpasie',align:'Paradeer',alignLeft:'Links',alignAbsBottom:'Abs Onder',alignAbsMiddle:'Abs Middel',alignBaseline:'Baseline',alignBottom:'Onder',alignMiddle:'Middel',alignRight:'Regs',alignTextTop:'Text Bo',alignTop:'Bo',preview:'Voorskou',alertUrl:'Voeg asseblief Beeld URL in.',linkTab:'Skakel',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash eienskappe',propertiesTab:'Properties',title:'Flash eienskappe',chkPlay:'Automaties Speel',chkLoop:'Herhaling',chkMenu:'Laat Flash Menu toe',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Wys alles',scaleNoBorder:'Geen kante',scaleFit:'Presiese pas',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Paradeer',alignLeft:'Links',alignAbsBottom:'Abs Onder',alignAbsMiddle:'Abs Middel',alignBaseline:'Baseline',alignBottom:'Onder',alignMiddle:'Middel',alignRight:'Regs',alignTextTop:'Text Bo',alignTop:'Bo',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Agtergrond kleur',width:'Weidte',height:'Hoogde',hSpace:'HSpasie',vSpace:'VSpasie',validateSrc:'Voeg asseblief die URL in',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Spelling nagaan',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Nie in woordeboek nie',changeTo:'Verander na',btnIgnore:'Ignoreer',btnIgnoreAll:'Ignoreer na-volgende',btnReplace:'Vervang',btnReplaceAll:'vervang na-volgende',btnUndo:'Ont-skep',noSuggestions:'- Geen voorstel -',progress:'Spelling word beproef...',noMispell:'Spellproef kompleet: Geen foute',noChanges:'Spellproef kompleet: Geen woord veranderings',oneChange:'Spellproef kompleet: Een woord verander',manyChanges:'Spellproef kompleet: %1 woorde verander',ieSpellDownload:'Geen Spellproefer geinstaleer nie. Wil U dit aflaai?'},smiley:{toolbar:'Smiley',title:'Voeg Smiley by'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Genommerde lys',bulletedlist:'Gepunkte lys',indent:'Paradeering verleng',outdent:'Paradeering verkort',justify:{left:'Links rig',center:'Rig Middel',right:'Regs rig',block:'Blok paradeer'},blockquote:'Blockquote',clipboard:{title:'Byvoeg',cutError:'U browser se sekuriteit instelling behinder die uitsny aksie. Gebruik asseblief die sleutel kombenasie(Ctrl+X).',copyError:'U browser se sekuriteit instelling behinder die kopieerings aksie. Gebruik asseblief die sleutel kombenasie(Ctrl+C).',pasteMsg:'Voeg asseblief die inhoud in die gegewe box by met sleutel kombenasie(<STRONG>Ctrl+V</STRONG>) en druk <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Van Word af byvoeg',title:'Van Word af byvoeg',advice:'Voeg asseblief die inhoud in die gegewe box by met sleutel kombenasie(<STRONG>Ctrl+V</STRONG>) en druk <STRONG>OK</STRONG>.',ignoreFontFace:'Ignoreer karakter soort defenisies',removeStyle:'Verweider Styl defenisies'},pasteText:{button:'Voeg slegs karakters by',title:'Voeg slegs karakters by'},templates:{button:'Templates',title:'Inhoud Templates',insertOption:'Vervang bestaande inhoud',selectPromptMsg:'Kies die template om te gebruik in die editor<br>(Inhoud word vervang!):',emptyListMsg:'(Geen templates gedefinieerd)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styl',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Karakter formaat',voiceLabel:'Format',panelTitle:'Karakter formaat',panelVoiceLabel:'Select a paragraph format',tag_p:'Normaal',tag_pre:'Geformateerd',tag_address:'Adres',tag_h1:'Opskrif 1',tag_h2:'Opskrif 2',tag_h3:'Opskrif 3',tag_h4:'Opskrif 4',tag_h5:'Opskrif 5',tag_h6:'Opskrif 6',tag_div:'Normaal (DIV)'},font:{label:'Karakters',voiceLabel:'Font',panelTitle:'Karakters',panelVoiceLabel:'Select a font'},fontSize:{label:'Karakter grote',voiceLabel:'Font Size',panelTitle:'Karakter grote',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Karakter kleur',bgColorTitle:'Agtergrond kleur',auto:'Automaties',more:'Meer Kleure...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/fr-ca.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/fr-ca.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/fr-ca.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['fr-ca']={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Source',newPage:'Nouvelle page',save:'Sauvegarder',preview:'Previsualiser',cut:'Couper',copy:'Copier',paste:'Coller',print:'Imprimer',underline:'Souligné',bold:'Gras',italic:'Italique',selectAll:'Tout sélectionner',removeFormat:'Supprimer le formatage',strike:'Barrer',subscript:'Indice',superscript:'Exposant',horizontalrule:'Insérer un séparateur',pagebreak:'Insérer un saut de page',unlink:'Supprimer le lien',undo:'Annuler',redo:'Refaire',common:{browseServer:'Parcourir le serveur',url:'URL',protocol:'Protocole',upload:'Télécharger',uploadSubmit:'Envoyer sur le serveur',image:'Image',flash:'Animation Flash',form:'Formulaire',checkbox:'Case à cocher',radio:'Bouton radio',textField:'Champ texte',textarea:'Zone de texte',hiddenField:'Champ caché',button:'Bouton',select:'Champ de sélection',imageButton:'Bouton image',notSet:'<Par défaut>',id:'Id',name:'Nom',langDir:"Sens d'écriture",langDirLtr:'De gauche à droite (LTR)',langDirRtl:'De droite à gauche (RTL)',langCode:'Code langue',longDescr:'URL de description longue',cssClass:'Classes de feuilles de style',advisoryTitle:'Titre',cssStyle:'Style',ok:'OK',cancel:'Annuler',generalTab:'Général',advancedTab:'Avancée',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Insérer un caractère spécial',title:'Insérer un caractère spécial'},link:{toolbar:'Insérer/modifier le lien',menu:'Modifier le lien',title:'Propriétés du lien',info:'Informations sur le lien',target:'Destination',upload:'Télécharger',advanced:'Avancée',type:'Type de lien',toAnchor:'Ancre dans cette page',toEmail:'E-Mail',target:'Destination',targetNotSet:'<Par défaut>',targetFrame:'<Cadre>',targetPopup:'<fenêtre popup>',targetNew:'Nouvelle fenêtre (_blank)',targetTop:'Fenêtre supérieure (_top)',targetSelf:'Même fenêtre (_self)',targetParent:'Fenêtre mère (_parent)',targetFrameName:'Nom du cadre de destination',targetPopupName:'Nom de la fenêtre popup',popupFeatures:'Caractéristiques de la fenêtre popup',popupResizable:'Resizable',popupStatusBar:"Barre d'état",popupLocationBar:"Barre d'adresses",popupToolbar:"Barre d'outils",popupMenuBar:'Barre de menu',popupFullScreen:'Plein écran (IE)',popupScrollBars:'Barres de défilement',popupDependent:'Dépendante (Netscape)',popupWidth:'Largeur',popupLeft:'Position à partir de la gauche',popupHeight:'Hauteur',popupTop:'Position à partir du haut',id:'Id',langDir:"Sens d'écriture",langDirNotSet:'<Par défaut>',langDirLTR:'De gauche à droite (LTR)',langDirRTL:'De droite à gauche (RTL)',acccessKey:'Équivalent clavier',name:'Nom',langCode:"Sens d'écriture",tabIndex:'Ordre de tabulation',advisoryTitle:'Titre',advisoryContentType:'Type de contenu',cssClasses:'Classes de feuilles de style',charset:'Encodage de caractère',styles:'Style',selectAnchor:'Sélectionner une ancre',anchorName:'Par nom',anchorId:'Par id',emailAddress:'Adresse E-Mail',emailSubject:'Sujet du message',emailBody:'Corps du message',noAnchors:"(Pas d'ancre disponible dans le document)",noUrl:"Veuillez saisir l'URL",noEmail:"Veuillez saisir l'adresse e-mail"},anchor:{toolbar:"Insérer/modifier l'ancre",menu:"Propriétés de l'ancre",title:"Propriétés de l'ancre",name:"Nom de l'ancre",errorName:"Veuillez saisir le nom de l'ancre"},findAndReplace:{title:'Chercher et Remplacer',find:'Chercher',replace:'Remplacer',findWhat:'Rechercher:',replaceWith:'Remplacer par:',notFoundMsg:'Le texte indiqué est introuvable.',matchCase:'Respecter la casse',matchWord:'Mot entier',matchCyclic:'Match cyclic',replaceAll:'Tout remplacer',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tableau',title:'Propriétés du tableau',menu:'Propriétés du tableau',deleteTable:'Supprimer le tableau',rows:'Lignes',columns:'Colonnes',border:'Taille de la bordure',align:'Alignement',alignNotSet:'<Par défaut>',alignLeft:'Gauche',alignCenter:'Centré',alignRight:'Droite',width:'Largeur',widthPx:'pixels',widthPc:'pourcentage',height:'Hauteur',cellSpace:'Espacement',cellPad:'Contour',caption:'Titre',summary:'Résumé',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cellule',insertBefore:'Insérer une cellule avant',insertAfter:'Insérer une cellule après',deleteCell:'Supprimer des cellules',merge:'Fusionner les cellules',mergeRight:'Fusionner à droite',mergeDown:'Fusionner en bas',splitHorizontal:'Scinder la cellule horizontalement',splitVertical:'Scinder la cellule verticalement',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Ligne',insertBefore:'Insérer une ligne avant',insertAfter:'Insérer une ligne après',deleteRow:'Supprimer des lignes'},column:{menu:'Colonne',insertBefore:'Insérer une colonne avant',insertAfter:'Insérer une colonne après',deleteColumn:'Supprimer des colonnes'}},button:{title:'Propriétés du bouton',text:'Texte (Valeur)',type:'Type',typeBtn:'Bouton',typeSbm:'Soumettre',typeRst:'Réinitialiser'},checkboxAndRadio:{checkboxTitle:'Propriétés de la case à cocher',radioTitle:'Propriétés du bouton radio',value:'Valeur',selected:'Sélectionné'},form:{title:'Propriétés du formulaire',menu:'Propriétés du formulaire',action:'Action',method:'Méthode',encoding:'Encoding',target:'Destination',targetNotSet:'<Par défaut>',targetNew:'Nouvelle fenêtre (_blank)',targetTop:'Fenêtre supérieure (_top)',targetSelf:'Même fenêtre (_self)',targetParent:'Fenêtre mère (_parent)'},select:{title:'Propriétés de la liste/du menu',selectInfo:'Info',opAvail:'Options disponibles',value:'Valeur',size:'Taille',lines:'lignes',chkMulti:'Sélection multiple',opText:'Texte',opValue:'Valeur',btnAdd:'Ajouter',btnModify:'Modifier',btnUp:'Monter',btnDown:'Descendre',btnSetValue:'Valeur sélectionnée',btnDelete:'Supprimer'},textarea:{title:'Propriétés de la zone de texte',cols:'Colonnes',rows:'Lignes'},textfield:{title:'Propriétés du champ texte',name:'Nom',value:'Valeur',charWidth:'Largeur en caractères',maxChars:'Nombre maximum de caractères',type:'Type',typeText:'Texte',typePass:'Mot de passe'},hidden:{title:'Propriétés du champ caché',name:'Nom',value:'Valeur'},image:{title:"Propriétés de l'image",titleButton:'Propriétés du bouton image',menu:"Propriétés de l'image",infoTab:"Informations sur l'image",btnUpload:'Envoyer sur le serveur',url:'URL',upload:'Télécharger',alt:'Texte de remplacement',width:'Largeur',height:'Hauteur',lockRatio:'Garder les proportions',resetSize:'Taille originale',border:'Bordure',hSpace:'Espacement horizontal',vSpace:'Espacement vertical',align:'Alignement',alignLeft:'Gauche',alignAbsBottom:'Abs Bas',alignAbsMiddle:'Abs Milieu',alignBaseline:'Bas du texte',alignBottom:'Bas',alignMiddle:'Milieu',alignRight:'Droite',alignTextTop:'Haut du texte',alignTop:'Haut',preview:'Prévisualisation',alertUrl:"Veuillez saisir l'URL de l'image",linkTab:'Lien',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:"Propriétés de l'animation Flash",propertiesTab:'Properties',title:"Propriétés de l'animation Flash",chkPlay:'Lecture automatique',chkLoop:'Boucle',chkMenu:'Activer le menu Flash',chkFull:'Allow Fullscreen',scale:'Affichage',scaleAll:'Par défaut (tout montrer)',scaleNoBorder:'Sans bordure',scaleFit:'Ajuster aux dimensions',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Alignement',alignLeft:'Gauche',alignAbsBottom:'Abs Bas',alignAbsMiddle:'Abs Milieu',alignBaseline:'Bas du texte',alignBottom:'Bas',alignMiddle:'Milieu',alignRight:'Droite',alignTextTop:'Haut du texte',alignTop:'Haut',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Couleur de fond',width:'Largeur',height:'Hauteur',hSpace:'Espacement horizontal',vSpace:'Espacement vertical',validateSrc:"Veuillez saisir l'URL",validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Orthographe',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Pas dans le dictionnaire',changeTo:'Changer en',btnIgnore:'Ignorer',btnIgnoreAll:'Ignorer tout',btnReplace:'Remplacer',btnReplaceAll:'Remplacer tout',btnUndo:'Annuler',noSuggestions:'- Pas de suggestion -',progress:"Vérification d'orthographe en cours...",noMispell:"Vérification d'orthographe terminée: pas d'erreur trouvée",noChanges:"Vérification d'orthographe terminée: Pas de modifications",oneChange:"Vérification d'orthographe terminée: Un mot modifié",manyChanges:"Vérification d'orthographe terminée: %1 mots modifiés",ieSpellDownload:"Le Correcteur d'orthographe n'est pas installé. Souhaitez-vous le télécharger maintenant?"},smiley:{toolbar:'Emoticon',title:'Insérer un Emoticon'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Liste numérotée',bulletedlist:'Liste à puces',indent:'Augmenter le retrait',outdent:'Diminuer le retrait',justify:{left:'Aligner à gauche',center:'Centrer',right:'Aligner à Droite',block:'Texte justifié'},blockquote:'Citation',clipboard:{title:'Coller',cutError:"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+X).",copyError:"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+C).",pasteMsg:'Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl+V</STRONG>) et appuyer sur <STRONG>OK</STRONG>.',securityMsg:"A cause des paramètres de sécurité de votre navigateur, l'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre."},pastefromword:{toolbar:'Coller en tant que Word (formaté)',title:'Coller en tant que Word (formaté)',advice:'Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl+V</STRONG>) et appuyer sur <STRONG>OK</STRONG>.',ignoreFontFace:'Ignorer les polices de caractères',removeStyle:'Supprimer les styles'},pasteText:{button:'Coller comme texte',title:'Coller comme texte'},templates:{button:'Modèles',title:'Modèles de contenu',insertOption:'Remplacer tout le contenu actuel',selectPromptMsg:"Sélectionner le modèle à ouvrir dans l'éditeur<br>(le contenu actuel sera remplacé):",emptyListMsg:'(Aucun modèle disponible)'},showBlocks:'Afficher les blocs',stylesCombo:{label:'Style',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',voiceLabel:'Format',panelTitle:'Format',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formaté',tag_address:'Adresse',tag_h1:'En-tête 1',tag_h2:'En-tête 2',tag_h3:'En-tête 3',tag_h4:'En-tête 4',tag_h5:'En-tête 5',tag_h6:'En-tête 6',tag_div:'Normal (DIV)'},font:{label:'Police',voiceLabel:'Font',panelTitle:'Police',panelVoiceLabel:'Select a font'},fontSize:{label:'Taille',voiceLabel:'Font Size',panelTitle:'Taille',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Couleur de caractère',bgColorTitle:'Couleur de fond',auto:'Automatique',more:'Plus de couleurs...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/nb.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/nb.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/nb.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.nb={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Kilde',newPage:'Ny Side',save:'Lagre',preview:'Forhåndsvis',cut:'Klipp ut',copy:'Kopier',paste:'Lim inn',print:'Skriv ut',underline:'Understrek',bold:'Fet',italic:'Kursiv',selectAll:'Merk alt',removeFormat:'Fjern format',strike:'Gjennomstrek',subscript:'Senket skrift',superscript:'Hevet skrift',horizontalrule:'Sett inn horisontal linje',pagebreak:'Sett inn sideskift',unlink:'Fjern lenke',undo:'Angre',redo:'Gjør om',common:{browseServer:'Bla igjennom server',url:'URL',protocol:'Protokoll',upload:'Last opp',uploadSubmit:'Send det til serveren',image:'Bilde',flash:'Flash',form:'Skjema',checkbox:'Avmerkingsboks',radio:'Alternativknapp',textField:'Tekstboks',textarea:'Tekstområde',hiddenField:'Skjult felt',button:'Knapp',select:'Rullegardinliste',imageButton:'Bildeknapp',notSet:'<ikke satt>',id:'Id',name:'Navn',langDir:'Språkretning',langDirLtr:'Venstre til høyre (VTH)',langDirRtl:'Høyre til venstre (HTV)',langCode:'Språkkode',longDescr:'Utvidet beskrivelse',cssClass:'Stilarkklasser',advisoryTitle:'Tittel',cssStyle:'Stil',ok:'OK',cancel:'Avbryt',generalTab:'Generelt',advancedTab:'Avansert',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Sett inn spesielt tegn',title:'Velg spesielt tegn'},link:{toolbar:'Sett inn/Rediger lenke',menu:'Rediger lenke',title:'Lenke',info:'Lenkeinfo',target:'Mål',upload:'Last opp',advanced:'Avansert',type:'Lenketype',toAnchor:'Lenke til anker i teksten',toEmail:'E-post',target:'Mål',targetNotSet:'<ikke satt>',targetFrame:'<ramme>',targetPopup:'<popup vindu>',targetNew:'Nytt vindu (_blank)',targetTop:'Hele vindu (_top)',targetSelf:'Samme vindu (_self)',targetParent:'Foreldrevindu (_parent)',targetFrameName:'Målramme',targetPopupName:'Navn på popup-vindus',popupFeatures:'Egenskaper for popup-vindu',popupResizable:'Resizable',popupStatusBar:'Statuslinje',popupLocationBar:'Adresselinje',popupToolbar:'Verktøylinje',popupMenuBar:'Menylinje',popupFullScreen:'Full skjerm (IE)',popupScrollBars:'Scrollbar',popupDependent:'Avhenging (Netscape)',popupWidth:'Bredde',popupLeft:'Venstre posisjon',popupHeight:'Høyde',popupTop:'Topp-posisjon',id:'Id',langDir:'Språkretning',langDirNotSet:'<ikke satt>',langDirLTR:'Venstre til høyre (VTH)',langDirRTL:'Høyre til venstre (HTV)',acccessKey:'Aksessknapp',name:'Navn',langCode:'Språkretning',tabIndex:'Tab Indeks',advisoryTitle:'Tittel',advisoryContentType:'Type',cssClasses:'Stilarkklasser',charset:'Lenket språkkart',styles:'Stil',selectAnchor:'Velg et anker',anchorName:'Anker etter navn',anchorId:'Element etter ID',emailAddress:'E-postadresse',emailSubject:'Meldingsemne',emailBody:'Melding',noAnchors:'(Ingen anker i dokumentet)',noUrl:'Vennligst skriv inn lenkens url',noEmail:'Vennligst skriv inn e-postadressen'},anchor:{toolbar:'Sett inn/Rediger anker',menu:'Egenskaper for anker',title:'Egenskaper for anker',name:'Ankernavn',errorName:'Vennligst skriv inn ankernavnet'},findAndReplace:{title:'Søk og erstatt',find:'Søk',replace:'Erstatt',findWhat:'Søk etter:',replaceWith:'Erstatt med:',notFoundMsg:'Fant ikke søketeksten.',matchCase:'Skill mellom store og små bokstaver',matchWord:'Bare hele ord',matchCyclic:'Match cyclic',replaceAll:'Erstatt alle',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabell',title:'Egenskaper for tabell',menu:'Egenskaper for tabell',deleteTable:'Slett tabell',rows:'Rader',columns:'Kolonner',border:'Rammestørrelse',align:'Justering',alignNotSet:'<Ikke satt>',alignLeft:'Venstre',alignCenter:'Midtjuster',alignRight:'Høyre',width:'Bredde',widthPx:'piksler',widthPc:'prosent',height:'Høyde',cellSpace:'Cellemarg',cellPad:'Cellepolstring',caption:'Tittel',summary:'Sammendrag',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Celle',insertBefore:'Sett inn celle før',insertAfter:'Sett inn celle etter',deleteCell:'Slett celler',merge:'Slå sammen celler',mergeRight:'Slå sammen høyre',mergeDown:'Slå sammen ned',splitHorizontal:'Del celle horisontalt',splitVertical:'Del celle vertikalt',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Rader',insertBefore:'Sett inn rad før',insertAfter:'Sett inn rad etter',deleteRow:'Slett rader'},column:{menu:'Kolonne',insertBefore:'Sett inn kolonne før',insertAfter:'Sett inn kolonne etter',deleteColumn:'Slett kolonner'}},button:{title:'Egenskaper for knapp',text:'Tekst (verdi)',type:'Type',typeBtn:'Knapp',typeSbm:'Send',typeRst:'Nullstill'},checkboxAndRadio:{checkboxTitle:'Egenskaper for avmerkingsboks',radioTitle:'Egenskaper for alternativknapp',value:'Verdi',selected:'Valgt'},form:{title:'Egenskaper for skjema',menu:'Egenskaper for skjema',action:'Handling',method:'Metode',encoding:'Encoding',target:'Mål',targetNotSet:'<ikke satt>',targetNew:'Nytt vindu (_blank)',targetTop:'Hele vindu (_top)',targetSelf:'Samme vindu (_self)',targetParent:'Foreldrevindu (_parent)'},select:{title:'Egenskaper for rullegardinliste',selectInfo:'Info',opAvail:'Tilgjenglige alternativer',value:'Verdi',size:'Størrelse',lines:'Linjer',chkMulti:'Tillat flervalg',opText:'Tekst',opValue:'Verdi',btnAdd:'Legg til',btnModify:'Endre',btnUp:'Opp',btnDown:'Ned',btnSetValue:'Sett som valgt',btnDelete:'Slett'},textarea:{title:'Egenskaper for tekstområde',cols:'Kolonner',rows:'Rader'},textfield:{title:'Egenskaper for tekstfelt',name:'Navn',value:'Verdi',charWidth:'Tegnbredde',maxChars:'Maks antall tegn',type:'Type',typeText:'Tekst',typePass:'Passord'},hidden:{title:'Egenskaper for skjult felt',name:'Navn',value:'Verdi'},image:{title:'Bildeegenskaper',titleButton:'Egenskaper for bildeknapp',menu:'Bildeegenskaper',infoTab:'Bildeinformasjon',btnUpload:'Send det til serveren',url:'URL',upload:'Last opp',alt:'Alternativ tekst',width:'Bredde',height:'Høyde',lockRatio:'Lås forhold',resetSize:'Tilbakestill størrelse',border:'Ramme',hSpace:'HMarg',vSpace:'VMarg',align:'Juster',alignLeft:'Venstre',alignAbsBottom:'Abs bunn',alignAbsMiddle:'Abs midten',alignBaseline:'Bunnlinje',alignBottom:'Bunn',alignMiddle:'Midten',alignRight:'Høyre',alignTextTop:'Tekst topp',alignTop:'Topp',preview:'Forhåndsvis',alertUrl:'Vennligst skriv bilde-urlen',linkTab:'Lenke',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Egenskaper for Flash-objekt',propertiesTab:'Properties',title:'Flash-egenskaper',chkPlay:'Autospill',chkLoop:'Loop',chkMenu:'Slå på Flash-meny',chkFull:'Allow Fullscreen',scale:'Skaler',scaleAll:'Vis alt',scaleNoBorder:'Ingen ramme',scaleFit:'Skaler til å passe',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Juster',alignLeft:'Venstre',alignAbsBottom:'Abs bunn',alignAbsMiddle:'Abs midten',alignBaseline:'Bunnlinje',alignBottom:'Bunn',alignMiddle:'Midten',alignRight:'Høyre',alignTextTop:'Tekst topp',alignTop:'Topp',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Bakgrunnsfarge',width:'Bredde',height:'Høyde',hSpace:'HMarg',vSpace:'VMarg',validateSrc:'Vennligst skriv inn lenkens url',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Stavekontroll',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Ikke i ordboken',changeTo:'Endre til',btnIgnore:'Ignorer',btnIgnoreAll:'Ignorer alle',btnReplace:'Erstatt',btnReplaceAll:'Erstatt alle',btnUndo:'Angre',noSuggestions:'- Ingen forslag -',progress:'Stavekontroll pågår...',noMispell:'Stavekontroll fullført: ingen feilstavinger funnet',noChanges:'Stavekontroll fullført: ingen ord endret',oneChange:'Stavekontroll fullført: Ett ord endret',manyChanges:'Stavekontroll fullført: %1 ord endret',ieSpellDownload:'Stavekontroll er ikke installert. Vil du laste den ned nå?'},smiley:{toolbar:'Smil',title:'Sett inn smil'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Nummerert liste',bulletedlist:'Uordnet liste',indent:'Øk nivå',outdent:'Senk nivå',justify:{left:'Venstrejuster',center:'Midtjuster',right:'Høyrejuster',block:'Blokkjuster'},blockquote:'Blockquote',clipboard:{title:'Lim inn',cutError:'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).',copyError:'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).',pasteMsg:'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',securityMsg:'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.'},pastefromword:{toolbar:'Lim inn fra Word',title:'Lim inn fra Word',advice:'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',ignoreFontFace:'Fjern skrifttyper',removeStyle:'Fjern stildefinisjoner'},pasteText:{button:'Lim inn som ren tekst',title:'Lim inn som ren tekst'},templates:{button:'Maler',title:'Innholdsmaler',insertOption:'Erstatt faktisk innold',selectPromptMsg:'Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):',emptyListMsg:'(Ingen maler definert)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stil',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',voiceLabel:'Format',panelTitle:'Format',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatert',tag_address:'Adresse',tag_h1:'Tittel 1',tag_h2:'Tittel 2',tag_h3:'Tittel 3',tag_h4:'Tittel 4',tag_h5:'Tittel 5',tag_h6:'Tittel 6',tag_div:'Normal (DIV)'},font:{label:'Skrift',voiceLabel:'Font',panelTitle:'Skrift',panelVoiceLabel:'Select a font'},fontSize:{label:'Størrelse',voiceLabel:'Font Size',panelTitle:'Størrelse',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Tekstfarge',bgColorTitle:'Bakgrunnsfarge',auto:'Automatisk',more:'Flere farger...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/bn.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/bn.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/bn.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.bn={dir:'ltr',editorTitle:'Rich text editor, %1',source:'সোর্স',newPage:'নতুন পেজ',save:'সংরক্ষন কর',preview:'প্রিভিউ',cut:'কাট',copy:'কপি',paste:'পেস্ট',print:'প্রিন্ট',underline:'আন্ডারলাইন',bold:'বোল্ড',italic:'ইটালিক',selectAll:'সব সিলেক্ট কর',removeFormat:'ফরমেট সরাও',strike:'স্ট্রাইক থ্রু',subscript:'অধোলেখ',superscript:'অভিলেখ',horizontalrule:'রেখা যুক্ত কর',pagebreak:'পেজ ব্রেক',unlink:'লিংক সরাও',undo:'আনডু',redo:'রি-ডু',common:{browseServer:'ব্রাউজ সার্ভার',url:'URL',protocol:'প্রোটোকল',upload:'আপলোড',uploadSubmit:'ইহাকে সার্ভারে প্রেরন কর',image:'ছবির লেবেল যুক্ত কর',flash:'ফ্লাশ লেবেল যুক্ত কর',form:'ফর্ম',checkbox:'চেক বাক্স',radio:'রেডিও বাটন',textField:'টেক্সট ফীল্ড',textarea:'টেক্সট এরিয়া',hiddenField:'গুপ্ত ফীল্ড',button:'বাটন',select:'বাছাই ফীল্ড',imageButton:'ছবির বাটন',notSet:'<সেট নেই>',id:'আইডি',name:'নাম',langDir:'ভাষা লেখার দিক',langDirLtr:'বাম থেকে ডান (LTR)',langDirRtl:'ডান থেকে বাম (RTL)',langCode:'ভাষা কোড',longDescr:'URL এর লম্বা বর্ণনা',cssClass:'স্টাইল-শীট ক্লাস',advisoryTitle:'পরামর্শ শীর্ষক',cssStyle:'স্টাইল',ok:'ওকে',cancel:'বাতিল',generalTab:'General',advancedTab:'এডভান্সড',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'বিশেষ অক্ষর যুক্ত কর',title:'বিশেষ ক্যারেক্টার বাছাই কর'},link:{toolbar:'লিংক যুক্ত কর',menu:'লিংক সম্পাদন',title:'লিংক',info:'লিংক তথ্য',target:'টার্গেট',upload:'আপলোড',advanced:'এডভান্সড',type:'লিংক প্রকার',toAnchor:'এই পেজে নোঙর কর',toEmail:'ইমেইল',target:'টার্গেট',targetNotSet:'<সেট নেই>',targetFrame:'<ফ্রেম>',targetPopup:'<পপআপ উইন্ডো>',targetNew:'নতুন উইন্ডো (_blank)',targetTop:'শীর্ষ উইন্ডো (_top)',targetSelf:'এই উইন্ডো (_self)',targetParent:'মূল উইন্ডো (_parent)',targetFrameName:'টার্গেট ফ্রেমের নাম',targetPopupName:'পপআপ উইন্ডোর নাম',popupFeatures:'পপআপ উইন্ডো ফীচার সমূহ',popupResizable:'Resizable',popupStatusBar:'স্ট্যাটাস বার',popupLocationBar:'লোকেশন বার',popupToolbar:'টুল বার',popupMenuBar:'মেন্যু বার',popupFullScreen:'পূর্ণ পর্দা জুড়ে (IE)',popupScrollBars:'স্ক্রল বার',popupDependent:'ডিপেন্ডেন্ট (Netscape)',popupWidth:'প্রস্থ',popupLeft:'বামের পজিশন',popupHeight:'দৈর্ঘ্য',popupTop:'ডানের পজিশন',id:'Id',langDir:'ভাষা লেখার দিক',langDirNotSet:'<সেট নেই>',langDirLTR:'বাম থেকে ডান (LTR)',langDirRTL:'ডান থেকে বাম (RTL)',acccessKey:'এক্সেস কী',name:'নাম',langCode:'ভাষা লেখার দিক',tabIndex:'ট্যাব ইন্ডেক্স',advisoryTitle:'পরামর্শ শীর্ষক',advisoryContentType:'পরামর্শ কন্টেন্টের প্রকার',cssClasses:'স্টাইল-শীট ক্লাস',charset:'লিংক রিসোর্স ক্যারেক্টর সেট',styles:'স্টাইল',selectAnchor:'নোঙর বাছাই',anchorName:'নোঙরের নাম দিয়ে',anchorId:'নোঙরের আইডি দিয়ে',emailAddress:'ইমেইল ঠিকানা',emailSubject:'মেসেজের বিষয়',emailBody:'মেসেজের দেহ',noAnchors:'(No anchors available in the document)',noUrl:'অনুগ্রহ করে URL লিংক টাইপ করুন',noEmail:'অনুগ্রহ করে ইমেইল এড্রেস টাইপ করুন'},anchor:{toolbar:'নোঙ্গর',menu:'নোঙর প্রোপার্টি',title:'নোঙর প্রোপার্টি',name:'নোঙরের নাম',errorName:'নোঙরের নাম টাইপ করুন'},findAndReplace:{title:'Find and Replace',find:'খোজো',replace:'রিপ্লেস',findWhat:'যা খুঁজতে হবে:',replaceWith:'যার সাথে বদলাতে হবে:',notFoundMsg:'আপনার উল্লেখিত টেকস্ট পাওয়া যায়নি',matchCase:'কেস মিলাও',matchWord:'পুরা শব্দ মেলাও',matchCyclic:'Match cyclic',replaceAll:'সব বদলে দাও',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'টেবিলের লেবেল যুক্ত কর',title:'টেবিল প্রোপার্টি',menu:'টেবিল প্রোপার্টি',deleteTable:'টেবিল ডিলীট কর',rows:'রো',columns:'কলাম',border:'বর্ডার সাইজ',align:'এলাইনমেন্ট',alignNotSet:'<সেট নেই>',alignLeft:'বামে',alignCenter:'মাঝখানে',alignRight:'ডানে',width:'প্রস্থ',widthPx:'পিক্সেল',widthPc:'শতকরা',height:'দৈর্ঘ্য',cellSpace:'সেল স্পেস',cellPad:'সেল প্যাডিং',caption:'শীর্ষক',summary:'সারাংশ',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'সেল',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'সেল মুছে দাও',merge:'সেল জোড়া দাও',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'রো',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'রো মুছে দাও'},column:{menu:'কলাম',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'কলাম মুছে দাও'}},button:{title:'বাটন প্রোপার্টি',text:'টেক্সট (ভ্যালু)',type:'প্রকার',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'চেক বক্স প্রোপার্টি',radioTitle:'রেডিও বাটন প্রোপার্টি',value:'ভ্যালু',selected:'সিলেক্টেড'},form:{title:'ফর্ম প্রোপার্টি',menu:'ফর্ম প্রোপার্টি',action:'একশ্যন',method:'পদ্ধতি',encoding:'Encoding',target:'টার্গেট',targetNotSet:'<সেট নেই>',targetNew:'নতুন উইন্ডো (_blank)',targetTop:'শীর্ষ উইন্ডো (_top)',targetSelf:'এই উইন্ডো (_self)',targetParent:'মূল উইন্ডো (_parent)'},select:{title:'বাছাই ফীল্ড প্রোপার্টি',selectInfo:'তথ্য',opAvail:'অন্যান্য বিকল্প',value:'ভ্যালু',size:'সাইজ',lines:'লাইন সমূহ',chkMulti:'একাধিক সিলেকশন এলাউ কর',opText:'টেক্সট',opValue:'ভ্যালু',btnAdd:'যুক্ত',btnModify:'বদলে দাও',btnUp:'উপর',btnDown:'নীচে',btnSetValue:'বাছাই করা ভ্যালু হিসেবে সেট কর',btnDelete:'ডিলীট'},textarea:{title:'টেক্সট এরিয়া প্রোপার্টি',cols:'কলাম',rows:'রো'},textfield:{title:'টেক্সট ফীল্ড প্রোপার্টি',name:'নাম',value:'ভ্যালু',charWidth:'ক্যারেক্টার প্রশস্ততা',maxChars:'সর্বাধিক ক্যারেক্টার',type:'টাইপ',typeText:'টেক্সট',typePass:'পাসওয়ার্ড'},hidden:{title:'গুপ্ত ফীল্ড প্রোপার্টি',name:'নাম',value:'ভ্যালু'},image:{title:'ছবির প্রোপার্টি',titleButton:'ছবি বাটন প্রোপার্টি',menu:'ছবির প্রোপার্টি',infoTab:'ছবির তথ্য',btnUpload:'ইহাকে সার্ভারে প্রেরন কর',url:'URL',upload:'আপলোড',alt:'বিকল্প টেক্সট',width:'প্রস্থ',height:'দৈর্ঘ্য',lockRatio:'অনুপাত লক কর',resetSize:'সাইজ পূর্বাবস্থায় ফিরিয়ে দাও',border:'বর্ডার',hSpace:'হরাইজন্টাল স্পেস',vSpace:'ভার্টিকেল স্পেস',align:'এলাইন',alignLeft:'বামে',alignAbsBottom:'Abs নীচে',alignAbsMiddle:'Abs উপর',alignBaseline:'মূল রেখা',alignBottom:'নীচে',alignMiddle:'মধ্য',alignRight:'ডানে',alignTextTop:'টেক্সট উপর',alignTop:'উপর',preview:'প্রীভিউ',alertUrl:'অনুগ্রহক করে ছবির URL টাইপ করুন',linkTab:'লিংক',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'ফ্লাশ প্রোপার্টি',propertiesTab:'Properties',title:'ফ্ল্যাশ প্রোপার্টি',chkPlay:'অটো প্লে',chkLoop:'লূপ',chkMenu:'ফ্ল্যাশ মেনু এনাবল কর',chkFull:'Allow Fullscreen',scale:'স্কেল',scaleAll:'সব দেখাও',scaleNoBorder:'কোনো বর্ডার নেই',scaleFit:'নিখুঁত ফিট',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'এলাইন',alignLeft:'বামে',alignAbsBottom:'Abs নীচে',alignAbsMiddle:'Abs উপর',alignBaseline:'মূল রেখা',alignBottom:'নীচে',alignMiddle:'মধ্য',alignRight:'ডানে',alignTextTop:'টেক্সট উপর',alignTop:'উপর',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'বেকগ্রাউন্ড রং',width:'প্রস্থ',height:'দৈর্ঘ্য',hSpace:'হরাইজন্টাল স্পেস',vSpace:'ভার্টিকেল স্পেস',validateSrc:'অনুগ্রহ করে URL লিংক টাইপ করুন',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'বানান চেক',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'শব্দকোষে নেই',changeTo:'এতে বদলাও',btnIgnore:'ইগনোর কর',btnIgnoreAll:'সব ইগনোর কর',btnReplace:'বদলে দাও',btnReplaceAll:'সব বদলে দাও',btnUndo:'আন্ডু',noSuggestions:'- কোন সাজেশন নেই -',progress:'বানান পরীক্ষা চলছে...',noMispell:'বানান পরীক্ষা শেষ: কোন ভুল বানান পাওয়া যায়নি',noChanges:'বানান পরীক্ষা শেষ: কোন শব্দ পরিবর্তন করা হয়নি',oneChange:'বানান পরীক্ষা শেষ: একটি মাত্র শব্দ পরিবর্তন করা হয়েছে',manyChanges:'বানান পরীক্ষা শেষ: %1 গুলো শব্দ বদলে গ্যাছে',ieSpellDownload:'বানান পরীক্ষক ইনস্টল করা নেই। আপনি কি এখনই এটা ডাউনলোড করতে চান?'},smiley:{toolbar:'স্মাইলী',title:'স্মাইলী যুক্ত কর'},elementsPath:{eleTitle:'%1 element'},numberedlist:'সাংখ্যিক লিস্টের লেবেল',bulletedlist:'বুলেট লিস্ট লেবেল',indent:'ইনডেন্ট বাড়াও',outdent:'ইনডেন্ট কমাও',justify:{left:'বা দিকে ঘেঁষা',center:'মাঝ বরাবর ঘেষা',right:'ডান দিকে ঘেঁষা',block:'ব্লক জাস্টিফাই'},blockquote:'Blockquote',clipboard:{title:'পেস্ট',cutError:'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl+X)।',copyError:'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl+C)।',pasteMsg:'অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (<STRONG>Ctrl+V</STRONG>) পেস্ট করুন এবং <STRONG>OK</STRONG> চাপ দিন',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'পেস্ট (শব্দ)',title:'পেস্ট (শব্দ)',advice:'অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (<STRONG>Ctrl+V</STRONG>) পেস্ট করুন এবং <STRONG>OK</STRONG> চাপ দিন',ignoreFontFace:'ফন্ট ফেস ডেফিনেশন ইগনোর করুন',removeStyle:'স্টাইল ডেফিনেশন সরিয়ে দিন'},pasteText:{button:'সাদা টেক্সট হিসেবে পেস্ট কর',title:'সাদা টেক্সট হিসেবে পেস্ট কর'},templates:{button:'টেমপ্লেট',title:'কনটেন্ট টেমপ্লেট',insertOption:'Replace actual contents',selectPromptMsg:'অনুগ্রহ করে এডিটরে ওপেন করার জন্য টেমপ্লেট বাছাই করুন<br>(আসল কনটেন্ট হারিয়ে যাবে):',emptyListMsg:'(কোন টেমপ্লেট ডিফাইন করা নেই)'},showBlocks:'Show Blocks',stylesCombo:{label:'স্টাইল',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'ফন্ট ফরমেট',voiceLabel:'Format',panelTitle:'ফন্ট ফরমেট',panelVoiceLabel:'Select a paragraph format',tag_p:'সাধারণ',tag_pre:'ফর্মেটেড',tag_address:'ঠিকানা',tag_h1:'শীর্ষক ১',tag_h2:'শীর্ষক ২',tag_h3:'শীর্ষক ৩',tag_h4:'শীর্ষক ৪',tag_h5:'শীর্ষক ৫',tag_h6:'শীর্ষক ৬',tag_div:'শীর্ষক (DIV)'},font:{label:'ফন্ট',voiceLabel:'Font',panelTitle:'ফন্ট',panelVoiceLabel:'Select a font'},fontSize:{label:'সাইজ',voiceLabel:'Font Size',panelTitle:'সাইজ',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'টেক্স্ট রং',bgColorTitle:'বেকগ্রাউন্ড রং',auto:'অটোমেটিক',more:'আরও রং...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/el.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/el.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/el.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.el={dir:'ltr',editorTitle:'Rich text editor, %1',source:'HTML κώδικας',newPage:'Νέα Σελίδα',save:'Αποθήκευση',preview:'Προεπισκόπιση',cut:'Αποκοπή',copy:'Αντιγραφή',paste:'Επικόλληση',print:'Εκτύπωση',underline:'Υπογράμμιση',bold:'Έντονα',italic:'Πλάγια',selectAll:'Επιλογή όλων',removeFormat:'Αφαίρεση Μορφοποίησης',strike:'Διαγράμμιση',subscript:'Δείκτης',superscript:'Εκθέτης',horizontalrule:'Εισαγωγή Οριζόντιας Γραμμής',pagebreak:'Εισαγωγή τέλους σελίδας',unlink:'Αφαίρεση Συνδέσμου (Link)',undo:'Αναίρεση',redo:'Επαναφορά',common:{browseServer:'Εξερεύνηση διακομιστή',url:'URL',protocol:'Προτόκολο',upload:'Αποστολή',uploadSubmit:'Αποστολή στον Διακομιστή',image:'Εικόνα',flash:'Εισαγωγή Flash',form:'Φόρμα',checkbox:'Κουτί επιλογής',radio:'Κουμπί Radio',textField:'Πεδίο κειμένου',textarea:'Περιοχή κειμένου',hiddenField:'Κρυφό πεδίο',button:'Κουμπί',select:'Πεδίο επιλογής',imageButton:'Κουμπί εικόνας',notSet:'<χωρίς>',id:'Id',name:'Όνομα',langDir:'Κατεύθυνση κειμένου',langDirLtr:'Αριστερά προς Δεξιά (LTR)',langDirRtl:'Δεξιά προς Αριστερά (RTL)',langCode:'Κωδικός Γλώσσας',longDescr:'Αναλυτική περιγραφή URL',cssClass:'Stylesheet Classes',advisoryTitle:'Συμβουλευτικός τίτλος',cssStyle:'Στύλ',ok:'OK',cancel:'Ακύρωση',generalTab:'General',advancedTab:'Για προχωρημένους',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Εισαγωγή Ειδικού Συμβόλου',title:'Επιλέξτε ένα Ειδικό Σύμβολο'},link:{toolbar:'Εισαγωγή/Μεταβολή Συνδέσμου (Link)',menu:'Μεταβολή Συνδέσμου (Link)',title:'Σύνδεσμος (Link)',info:'Link',target:'Παράθυρο Στόχος (Target)',upload:'Αποστολή',advanced:'Για προχωρημένους',type:'Τύπος συνδέσμου (Link)',toAnchor:'Άγκυρα σε αυτή τη σελίδα',toEmail:'E-Mail',target:'Παράθυρο Στόχος (Target)',targetNotSet:'<χωρίς>',targetFrame:'<πλαίσιο>',targetPopup:'<παράθυρο popup>',targetNew:'Νέο Παράθυρο (_blank)',targetTop:'Ανώτατο Παράθυρο (_top)',targetSelf:'Ίδιο Παράθυρο (_self)',targetParent:'Γονικό Παράθυρο (_parent)',targetFrameName:'Όνομα πλαισίου στόχου',targetPopupName:'Όνομα Popup Window',popupFeatures:'Επιλογές Popup Window',popupResizable:'Resizable',popupStatusBar:'Μπάρα Status',popupLocationBar:'Μπάρα Τοποθεσίας',popupToolbar:'Μπάρα Εργαλείων',popupMenuBar:'Μπάρα Menu',popupFullScreen:'Ολόκληρη η Οθόνη (IE)',popupScrollBars:'Μπάρες Κύλισης',popupDependent:'Dependent (Netscape)',popupWidth:'Πλάτος',popupLeft:'Τοποθεσία Αριστερής Άκρης',popupHeight:'Ύψος',popupTop:'Τοποθεσία Πάνω Άκρης',id:'Id',langDir:'Κατεύθυνση κειμένου',langDirNotSet:'<χωρίς>',langDirLTR:'Αριστερά προς Δεξιά (LTR)',langDirRTL:'Δεξιά προς Αριστερά (RTL)',acccessKey:'Συντόμευση (Access Key)',name:'Όνομα',langCode:'Κατεύθυνση κειμένου',tabIndex:'Tab Index',advisoryTitle:'Συμβουλευτικός τίτλος',advisoryContentType:'Συμβουλευτικός τίτλος περιεχομένου',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Στύλ',selectAnchor:'Επιλέξτε μια άγκυρα',anchorName:'Βάσει του Ονόματος (Name) της άγκυρας',anchorId:'Βάσει του Element Id',emailAddress:'Διεύθυνση Ηλεκτρονικού Ταχυδρομείου',emailSubject:'Θέμα Μηνύματος',emailBody:'Κείμενο Μηνύματος',noAnchors:'(Δεν υπάρχουν άγκυρες στο κείμενο)',noUrl:'Εισάγετε την τοποθεσία (URL) του υπερσυνδέσμου (Link)',noEmail:'Εισάγετε την διεύθυνση ηλεκτρονικού ταχυδρομείου'},anchor:{toolbar:'Εισαγωγή/επεξεργασία Anchor',menu:'Ιδιότητες άγκυρας',title:'Ιδιότητες άγκυρας',name:'Όνομα άγκυρας',errorName:'Παρακαλούμε εισάγετε όνομα άγκυρας'},findAndReplace:{title:'Find and Replace',find:'Αναζήτηση',replace:'Αντικατάσταση',findWhat:'Αναζήτηση:',replaceWith:'Αντικατάσταση με:',notFoundMsg:'Το κείμενο δεν βρέθηκε.',matchCase:'Έλεγχος πεζών/κεφαλαίων',matchWord:'Εύρεση πλήρους λέξης',matchCyclic:'Match cyclic',replaceAll:'Αντικατάσταση Όλων',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Πίνακας',title:'Ιδιότητες Πίνακα',menu:'Ιδιότητες Πίνακα',deleteTable:'Διαγραφή πίνακα',rows:'Γραμμές',columns:'Κολώνες',border:'Μέγεθος Περιθωρίου',align:'Στοίχιση',alignNotSet:'<χωρίς>',alignLeft:'Αριστερά',alignCenter:'Κέντρο',alignRight:'Δεξιά',width:'Πλάτος',widthPx:'pixels',widthPc:'%',height:'Ύψος',cellSpace:'Απόσταση κελιών',cellPad:'Γέμισμα κελιών',caption:'Υπέρτιτλος',summary:'Περίληψη',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Κελί',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Διαγραφή Κελιών',merge:'Ενοποίηση Κελιών',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Σειρά',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Διαγραφή Γραμμών'},column:{menu:'Στήλη',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Διαγραφή Κολωνών'}},button:{title:'Ιδιότητες κουμπιού',text:'Κείμενο (Τιμή)',type:'Τύπος',typeBtn:'Κουμπί',typeSbm:'Καταχώρηση',typeRst:'Επαναφορά'},checkboxAndRadio:{checkboxTitle:'Ιδιότητες κουμπιού επιλογής',radioTitle:'Ιδιότητες κουμπιού radio',value:'Τιμή',selected:'Επιλεγμένο'},form:{title:'Ιδιότητες φόρμας',menu:'Ιδιότητες φόρμας',action:'Δράση',method:'Μάθοδος',encoding:'Encoding',target:'Παράθυρο Στόχος (Target)',targetNotSet:'<χωρίς>',targetNew:'Νέο Παράθυρο (_blank)',targetTop:'Ανώτατο Παράθυρο (_top)',targetSelf:'Ίδιο Παράθυρο (_self)',targetParent:'Γονικό Παράθυρο (_parent)'},select:{title:'Ιδιότητες πεδίου επιλογής',selectInfo:'Πληροφορίες',opAvail:'Διαθέσιμες επιλογές',value:'Τιμή',size:'Μέγεθος',lines:'γραμμές',chkMulti:'Πολλαπλές επιλογές',opText:'Κείμενο',opValue:'Τιμή',btnAdd:'Προσθήκη',btnModify:'Αλλαγή',btnUp:'Πάνω',btnDown:'Κάτω',btnSetValue:'Προεπιλεγμένη επιλογή',btnDelete:'Διαγραφή'},textarea:{title:'Ιδιότητες περιοχής κειμένου',cols:'Στήλες',rows:'Σειρές'},textfield:{title:'Ιδιότητες πεδίου κειμένου',name:'Όνομα',value:'Τιμή',charWidth:'Μήκος χαρακτήρων',maxChars:'Μέγιστοι χαρακτήρες',type:'Τύπος',typeText:'Κείμενο',typePass:'Κωδικός'},hidden:{title:'Ιδιότητες κρυφού πεδίου',name:'Όνομα',value:'Τιμή'},image:{title:'Ιδιότητες Εικόνας',titleButton:'Ιδιότητες κουμπιού εικόνας',menu:'Ιδιότητες Εικόνας',infoTab:'Πληροφορίες Εικόνας',btnUpload:'Αποστολή στον Διακομιστή',url:'URL',upload:'Αποστολή',alt:'Εναλλακτικό Κείμενο (ALT)',width:'Πλάτος',height:'Ύψος',lockRatio:'Κλείδωμα Αναλογίας',resetSize:'Επαναφορά Αρχικού Μεγέθους',border:'Περιθώριο',hSpace:'Οριζόντιος Χώρος (HSpace)',vSpace:'Κάθετος Χώρος (VSpace)',align:'Ευθυγράμμιση (Align)',alignLeft:'Αριστερά',alignAbsBottom:'Απόλυτα Κάτω (Abs Bottom)',alignAbsMiddle:'Απόλυτα στη Μέση (Abs Middle)',alignBaseline:'Γραμμή Βάσης (Baseline)',alignBottom:'Κάτω (Bottom)',alignMiddle:'Μέση (Middle)',alignRight:'Δεξιά (Right)',alignTextTop:'Κορυφή Κειμένου (Text Top)',alignTop:'Πάνω (Top)',preview:'Προεπισκόπιση',alertUrl:'Εισάγετε την τοποθεσία (URL) της εικόνας',linkTab:'Σύνδεσμος',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Ιδιότητες Flash',propertiesTab:'Properties',title:'Ιδιότητες flash',chkPlay:'Αυτόματη έναρξη',chkLoop:'Επανάληψη',chkMenu:'Ενεργοποίηση Flash Menu',chkFull:'Allow Fullscreen',scale:'Κλίμακα',scaleAll:'Εμφάνιση όλων',scaleNoBorder:'Χωρίς όρια',scaleFit:'Ακριβής εφαρμογή',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Ευθυγράμμιση (Align)',alignLeft:'Αριστερά',alignAbsBottom:'Απόλυτα Κάτω (Abs Bottom)',alignAbsMiddle:'Απόλυτα στη Μέση (Abs Middle)',alignBaseline:'Γραμμή Βάσης (Baseline)',alignBottom:'Κάτω (Bottom)',alignMiddle:'Μέση (Middle)',alignRight:'Δεξιά (Right)',alignTextTop:'Κορυφή Κειμένου (Text Top)',alignTop:'Πάνω (Top)',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Χρώμα Υποβάθρου',width:'Πλάτος',height:'Ύψος',hSpace:'Οριζόντιος Χώρος (HSpace)',vSpace:'Κάθετος Χώρος (VSpace)',validateSrc:'Εισάγετε την τοποθεσία (URL) του υπερσυνδέσμου (Link)',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Ορθογραφικός έλεγχος',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Δεν υπάρχει στο λεξικό',changeTo:'Αλλαγή σε',btnIgnore:'Αγνόηση',btnIgnoreAll:'Αγνόηση όλων',btnReplace:'Αντικατάσταση',btnReplaceAll:'Αντικατάσταση όλων',btnUndo:'Αναίρεση',noSuggestions:'- Δεν υπάρχουν προτάσεις -',progress:'Ορθογραφικός έλεγχος σε εξέλιξη...',noMispell:'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν βρέθηκαν λάθη',noChanges:'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν άλλαξαν λέξεις',oneChange:'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Μια λέξη άλλαξε',manyChanges:'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: %1 λέξεις άλλαξαν',ieSpellDownload:'Δεν υπάρχει εγκατεστημένος ορθογράφος. Θέλετε να τον κατεβάσετε τώρα;'},smiley:{toolbar:'Smiley',title:'Επιλέξτε ένα Smiley'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Λίστα με Αριθμούς',bulletedlist:'Λίστα με Bullets',indent:'Αύξηση Εσοχής',outdent:'Μείωση Εσοχής',justify:{left:'Στοίχιση Αριστερά',center:'Στοίχιση στο Κέντρο',right:'Στοίχιση Δεξιά',block:'Πλήρης Στοίχιση (Block)'},blockquote:'Blockquote',clipboard:{title:'Επικόλληση',cutError:'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl+X).',copyError:'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl+C).',pasteMsg:'Παρακαλώ επικολήστε στο ακόλουθο κουτί χρησιμοποιόντας το πληκτρολόγιο (<STRONG>Ctrl+V</STRONG>) και πατήστε <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Επικόλληση από το Word',title:'Επικόλληση από το Word',advice:'Παρακαλώ επικολήστε στο ακόλουθο κουτί χρησιμοποιόντας το πληκτρολόγιο (<STRONG>Ctrl+V</STRONG>) και πατήστε <STRONG>OK</STRONG>.',ignoreFontFace:'Αγνόηση προδιαγραφών γραμματοσειράς',removeStyle:'Αφαίρεση προδιαγραφών στύλ'},pasteText:{button:'Επικόλληση ως Απλό Κείμενο',title:'Επικόλληση ως Απλό Κείμενο'},templates:{button:'Πρότυπα',title:'Πρότυπα περιεχομένου',insertOption:'Αντικατάσταση υπάρχοντων περιεχομένων',selectPromptMsg:'Παρακαλώ επιλέξτε πρότυπο για εισαγωγή στο πρόγραμμα<br>(τα υπάρχοντα περιεχόμενα θα χαθούν):',emptyListMsg:'(Δεν έχουν καθοριστεί πρότυπα)'},showBlocks:'Show Blocks',stylesCombo:{label:'Στυλ',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Μορφή Γραμματοσειράς',voiceLabel:'Format',panelTitle:'Μορφή Γραμματοσειράς',panelVoiceLabel:'Select a paragraph format',tag_p:'Κανονικό',tag_pre:'Μορφοποιημένο',tag_address:'Διεύθυνση',tag_h1:'Επικεφαλίδα 1',tag_h2:'Επικεφαλίδα 2',tag_h3:'Επικεφαλίδα 3',tag_h4:'Επικεφαλίδα 4',tag_h5:'Επικεφαλίδα 5',tag_h6:'Επικεφαλίδα 6',tag_div:'Normal (DIV)'},font:{label:'Γραμματοσειρά',voiceLabel:'Font',panelTitle:'Γραμματοσειρά',panelVoiceLabel:'Select a font'},fontSize:{label:'Μέγεθος',voiceLabel:'Font Size',panelTitle:'Μέγεθος',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Χρώμα Γραμμάτων',bgColorTitle:'Χρώμα Υποβάθρου',auto:'Αυτόματο',more:'Περισσότερα χρώματα...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/en.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/en.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/en.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.en={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character'},link:{toolbar:'Link',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toAnchor:'Link to anchor in the text',toEmail:'E-mail',target:'Target',targetNotSet:'<not set>',targetFrame:'<frame>',targetPopup:'<popup window>',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupWidth:'Width',popupLeft:'Left Position',popupHeight:'Height',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirNotSet:'<not set>',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',align:'Alignment',alignNotSet:'<Not set>',alignLeft:'Left',alignCenter:'Center',alignRight:'Right',width:'Width',widthPx:'pixels',widthPc:'percent',height:'Height',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding',target:'Target',targetNotSet:'<not set>',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',url:'URL',upload:'Upload',alt:'Alternative Text',width:'Width',height:'Height',lockRatio:'Lock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',align:'Align',alignLeft:'Left',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Right',alignTextTop:'Text Top',alignTop:'Top',preview:'Preview',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Align',alignLeft:'Left',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Right',alignTextTop:'Text Top',alignTop:'Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background color',width:'Width',height:'Height',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Left Justify',center:'Center Justify',right:'Right Justify',block:'Block Justify'},blockquote:'Blockquote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Paste from Word',title:'Paste from Word',advice:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',ignoreFontFace:'Ignore Font Face definitions',removeStyle:'Remove Styles definitions'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',voiceLabel:'Format',panelTitle:'Paragraph Format',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name',panelVoiceLabel:'Select a font'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Text Color',bgColorTitle:'Background Color',auto:'Automatic',more:'More Colors...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/ar.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/ar.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/ar.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ar={dir:'rtl',editorTitle:'محرر النص المنسق, %1',source:'المصدر',newPage:'صفحة جديدة',save:'حفظ',preview:'معاينة الصفحة',cut:'قص',copy:'نسخ',paste:'لصق',print:'طباعة',underline:'تسطير',bold:'غامق',italic:'مائل',selectAll:'تحديد الكل',removeFormat:'إزالة التنسيقات',strike:'يتوسطه خط',subscript:'منخفض',superscript:'مرتفع',horizontalrule:'خط فاصل',pagebreak:'إدخال صفحة جديدة',unlink:'إزالة رابط',undo:'تراجع',redo:'إعادة',common:{browseServer:'تصفح',url:'الرابط',protocol:'البروتوكول',upload:'رفع',uploadSubmit:'أرسل',image:'صورة',flash:'فلاش',form:'نموذج',checkbox:'خانة إختيار',radio:'زر اختيار',textField:'مربع نص',textarea:'مساحة نصية',hiddenField:'إدراج حقل خفي',button:'زر ضغط',select:'اختار',imageButton:'زر صورة',notSet:'<بدون تحديد>',id:'الرقم',name:'الاسم',langDir:'إتجاه النص',langDirLtr:'اليسار لليمين (LTR)',langDirRtl:'اليمين لليسار (RTL)',langCode:'رمز اللغة',longDescr:'الوصف التفصيلى',cssClass:'فئات التنسيق',advisoryTitle:'عنوان التقرير',cssStyle:'نمط',ok:'موافق',cancel:'إلغاء الأمر',generalTab:'عام',advancedTab:'متقدم',validateNumberFailed:'لايوجد نتيجة',confirmNewPage:'ستفقد أي متغييرات اذا لم تقم بحفظها اولا. هل أنت متأكد أنك تريد صفحة جديدة؟',confirmCancel:'بعض الخيارات قد تغيرت. هل أنت متأكد من إغلاق مربع النص؟',unavailable:'%1<span class="cke_accessibility">, غير متاح</span>'},specialChar:{toolbar:'إدراج  خاص.ِ',title:'اختر الخواص'},link:{toolbar:'رابط',menu:'تحرير رابط',title:'إرتباط تشعبي',info:'معلومات الرابط',target:'هدف الرابط',upload:'رفع',advanced:'متقدم',type:'نوع الربط',toAnchor:'مكان في هذا المستند',toEmail:'بريد إلكتروني',target:'هدف الرابط',targetNotSet:'<بدون تحديد>',targetFrame:'<إطار>',targetPopup:'<نافذة منبثقة>',targetNew:'إطار جديد (_blank)',targetTop:'صفحة كاملة (_top)',targetSelf:'الاطار الحالى (_self)',targetParent:'الإطار الأصلي (_parent)',targetFrameName:'اسم الإطار المستهدف',targetPopupName:'اسم النافذة المنبثقة',popupFeatures:'خصائص النافذة المنبثقة',popupResizable:'قابلة التشكيل',popupStatusBar:'شريط الحالة',popupLocationBar:'شريط العنوان',popupToolbar:'شريط الأدوات',popupMenuBar:'القوائم الرئيسية',popupFullScreen:'ملئ الشاشة (IE)',popupScrollBars:'أشرطة التمرير',popupDependent:'تابع (Netscape)',popupWidth:'العرض',popupLeft:'التمركز لليسار',popupHeight:'الإرتفاع',popupTop:'التمركز للأعلى',id:'هوية',langDir:'إتجاه النص',langDirNotSet:'<بدون تحديد>',langDirLTR:'اليسار لليمين (LTR)',langDirRTL:'اليمين لليسار (RTL)',acccessKey:'مفاتيح الإختصار',name:'الاسم',langCode:'كود النص',tabIndex:'الترتيب',advisoryTitle:'عنوان التقرير',advisoryContentType:'نوع التقرير',cssClasses:'فئات التنسيق',charset:'ترميز المادة المطلوبة',styles:'نمط',selectAnchor:'اختر علامة مرجعية',anchorName:'حسب الاسم',anchorId:'حسب رقم العنصر',emailAddress:'عنوان البريد إلكتروني',emailSubject:'موضوع الرسالة',emailBody:'محتوى الرسالة',noAnchors:'(لا توجد علامات مرجعية في هذا المستند)',noUrl:'من فضلك أدخل عنوان الموقع الذي يشير إليه الرابط',noEmail:'من فضلك أدخل عنوان البريد الإلكتروني'},anchor:{toolbar:'إشارة مرجعية',menu:'تحرير الإشارة المرجعية',title:'خصائص الإشارة المرجعية',name:'اسم الإشارة المرجعية',errorName:'الرجاء كتابة اسم الإشارة المرجعية'},findAndReplace:{title:'بحث واستبدال',find:'بحث',replace:'إستبدال',findWhat:'البحث بـ:',replaceWith:'إستبدال بـ:',notFoundMsg:'لم يتم العثور على النص المحدد.',matchCase:'مطابقة حالة الأحرف',matchWord:'مطابقة بالكامل',matchCyclic:'مطابقة دورية',replaceAll:'إستبدال الكل',replaceSuccessMsg:'تم استبدال 1% من الحالات '},table:{toolbar:'جدول',title:'خصائص الجدول',menu:'خصائص الجدول',deleteTable:'حذف الجدول',rows:'صفوف',columns:'أعمدة',border:'الحدود',align:'المحاذاة',alignNotSet:'<بدون محاذاة>',alignLeft:'يسار',alignCenter:'وسط',alignRight:'يمين',width:'العرض',widthPx:'بكسل',widthPc:'بالمئة',height:'الإرتفاع',cellSpace:'تباعد الخلايا',cellPad:'المسافة البادئة',caption:'الوصف',summary:'الخلاصة',headers:'العناوين',headersNone:'بدون',headersColumn:'العمود الأول',headersRow:'الصف الأول',headersBoth:'كلاهما',invalidRows:'عدد الصفوف يجب أن يكون عدداً أكبر من صفر.',invalidCols:'عدد الأعمدة يجب أن يكون عدداً أكبر من صفر.',invalidBorder:'حجم الحد يجب أن يكون عدداً.',invalidWidth:'عرض الجدول يجب أن يكون عدداً.',invalidHeight:'ارتفاع الجدول يجب أن يكون عدداً.',invalidCellSpacing:'المسافة بين الخلايا يجب أن تكون عدداً.',invalidCellPadding:'المسافة البادئة يجب أن تكون عدداً',cell:{menu:'خلية',insertBefore:'إدراج خلية قبل',insertAfter:'إدراج خلية بعد',deleteCell:'حذف خلية',merge:'دمج خلايا',mergeRight:'دمج لليمين',mergeDown:'دمج للأسفل',splitHorizontal:'تقسيم الخلية أفقياً',splitVertical:'تقسيم الخلية عمودياً',title:'خصائص الخلية',cellType:'نوع الخلية',rowSpan:'امتداد الصفوف',colSpan:'امتداد الأعمدة',wordWrap:'التفاف النص',hAlign:'محاذاة أفقية',vAlign:'محاذاة رأسية',alignTop:'أعلى',alignMiddle:'وسط',alignBottom:'أسفل',alignBaseline:'خط القاعدة',bgColor:'لون الخلفية',borderColor:'لون الحدود',data:'بيانات',header:'عنوان',yes:'نعم',no:'لا',invalidWidth:'عرض الخلية يجب أن يكون عدداً.',invalidHeight:'ارتفاع الخلية يجب أن يكون عدداً.',invalidRowSpan:'امتداد الصفوف يجب أن يكون عدداً صحيحاً.',invalidColSpan:'امتداد الأعمدة يجب أن يكون عدداً صحيحاً.',chooseColor:'اختر'},row:{menu:'صف',insertBefore:'إدراج صف قبل',insertAfter:'إدراج صف بعد',deleteRow:'حذف صفوف'},column:{menu:'عمود',insertBefore:'إدراج عمود قبل',insertAfter:'إدراج عمود بعد',deleteColumn:'حذف أعمدة'}},button:{title:'خصائص زر الضغط',text:'القيمة/التسمية',type:'نوع الزر',typeBtn:'زر',typeSbm:'إرسال',typeRst:'إعادة تعيين'},checkboxAndRadio:{checkboxTitle:'خصائص خانة الإختيار',radioTitle:'خصائص زر الخيار',value:'القيمة',selected:'محدد'},form:{title:'خصائص النموذج',menu:'خصائص النموذج',action:'اسم الملف',method:'الأسلوب',encoding:'تشفير',target:'الهدف',targetNotSet:'<بدون تحديد>',targetNew:'نافذة جديدة (_blank)',targetTop:'نافذة بالاعلى (_top)',targetSelf:'نفس النافذة (_self)',targetParent:'النافذة الأصل (_parent)'},select:{title:'خصائص اختيار الحقل',selectInfo:'اختار معلومات',opAvail:'الخيارات المتاحة',value:'القيمة',size:'الحجم',lines:'الأسطر',chkMulti:'السماح بتحديدات متعددة',opText:'النص',opValue:'القيمة',btnAdd:'إضافة',btnModify:'تعديل',btnUp:'أعلى',btnDown:'أسفل',btnSetValue:'إجعلها محددة',btnDelete:'إزالة'},textarea:{title:'خصائص مساحة النص',cols:'الأعمدة',rows:'الصفوف'},textfield:{title:'خصائص مربع النص',name:'الاسم',value:'القيمة',charWidth:'عرض السمات',maxChars:'اقصى عدد للسمات',type:'نوع المحتوى',typeText:'نص',typePass:'كلمة مرور'},hidden:{title:'خصائص الحقل المخفي',name:'الاسم',value:'القيمة'},image:{title:'خصائص الصورة',titleButton:'خصائص زر الصورة',menu:'خصائص الصورة',infoTab:'معلومات الصورة',btnUpload:'أرسلها للخادم',url:'موقع الصورة',upload:'رفع',alt:'عنوان الصورة',width:'العرض',height:'الإرتفاع',lockRatio:'تناسق الحجم',resetSize:'إستعادة الحجم الأصلي',border:'سمك الحدود',hSpace:'تباعد أفقي',vSpace:'تباعد عمودي',align:'محاذاة',alignLeft:'يسار',alignAbsBottom:'أسفل النص',alignAbsMiddle:'وسط السطر',alignBaseline:'على السطر',alignBottom:'أسفل',alignMiddle:'وسط',alignRight:'يمين',alignTextTop:'أعلى النص',alignTop:'أعلى',preview:'معاينة',alertUrl:'فضلاً أكتب الموقع الذي توجد عليه هذه الصورة.',linkTab:'الرابط',button2Img:'هل تريد تحويل زر الصورة المختار إلى صورة بسيطة؟',img2Button:'هل تريد تحويل الصورة المختارة إلى زر صورة؟',urlMissing:'عنوان مصدر الصورة مفقود'},flash:{properties:'خصائص الفلاش',propertiesTab:'الخصائص',title:'خصائص فيلم الفلاش',chkPlay:'تشغيل تلقائي',chkLoop:'تكرار',chkMenu:'تمكين قائمة فيلم الفلاش',chkFull:'ملء الشاشة',scale:'الحجم',scaleAll:'إظهار الكل',scaleNoBorder:'بلا حدود',scaleFit:'ضبط تام',access:'دخول النص البرمجي',accessAlways:'دائماً',accessSameDomain:'نفس النطاق',accessNever:'مطلقاً',align:'محاذاة',alignLeft:'يسار',alignAbsBottom:'أسفل النص',alignAbsMiddle:'وسط السطر',alignBaseline:'على السطر',alignBottom:'أسفل',alignMiddle:'وسط',alignRight:'يمين',alignTextTop:'أعلى النص',alignTop:'أعلى',quality:'جودة',qualityBest:'أفضل',qualityHigh:'عالية',qualityAutoHigh:'عالية تلقائياً',qualityMedium:'متوسطة',qualityAutoLow:'منخفضة تلقائياً',qualityLow:'منخفضة',windowModeWindow:'نافذة',windowModeOpaque:'غير شفاف',windowModeTransparent:'شفاف',windowMode:'وضع النافذة',flashvars:'متغيرات الفلاش',bgcolor:'لون الخلفية',width:'العرض',height:'الإرتفاع',hSpace:'تباعد أفقي',vSpace:'تباعد عمودي',validateSrc:'فضلاً أدخل عنوان الموقع الذي يشير إليه الرابط',validateWidth:'العرض يجب أن يكون عدداً.',validateHeight:'الارتفاع يجب أن يكون عدداً.',validateHSpace:'HSpace يجب أن يكون عدداً.',validateVSpace:'VSpace يجب أن يكون عدداً.'},spellCheck:{toolbar:'تدقيق إملائي',title:'التدقيق الإملائي',notAvailable:'عفواً، ولكن هذه الخدمة غير متاحة الان',errorLoading:'خطأ في تحميل تطبيق خدمة الاستضافة: %s.',notInDic:'ليست في القاموس',changeTo:'التغيير إلى',btnIgnore:'تجاهل',btnIgnoreAll:'تجاهل الكل',btnReplace:'تغيير',btnReplaceAll:'تغيير الكل',btnUndo:'تراجع',noSuggestions:'- لا توجد إقتراحات -',progress:'جاري التدقيق الاملائى',noMispell:'تم التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية',noChanges:'تم التدقيق الإملائي: لم يتم تغيير أي كلمة',oneChange:'تم التدقيق الإملائي: تم تغيير كلمة واحدة فقط',manyChanges:'تم إكمال التدقيق الإملائي: تم تغيير %1 من كلمات',ieSpellDownload:'المدقق الإملائي (الإنجليزي) غير مثبّت. هل تود تحميله الآن؟'},smiley:{toolbar:'ابتسامات',title:'إدراج ابتسامات'},elementsPath:{eleTitle:'عنصر 1%'},numberedlist:'ادخال/حذف تعداد رقمي',bulletedlist:'ادخال/حذف تعداد نقطي',indent:'زيادة المسافة البادئة',outdent:'إنقاص المسافة البادئة',justify:{left:'محاذاة إلى اليسار',center:'توسيط',right:'محاذاة إلى اليمين',block:'ضبط'},blockquote:'اقتباس',clipboard:{title:'لصق',cutError:'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+X).',copyError:'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+C).',pasteMsg:'الصق داخل الصندوق بإستخدام زرائر (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر  <STRONG>موافق</STRONG>.',securityMsg:'نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذلك يجب عليك لصق المحتوى مرة أخرى في هذه النافذة.'},pastefromword:{toolbar:'لصق من وورد',title:'لصق من وورد',advice:'الصق داخل الصندوق بإستخدام مفاتيح (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط مفتاح <STRONG>موافق</STRONG>.',ignoreFontFace:'تجاهل تعريفات أسماء الخطوط',removeStyle:'إزالة تعريفات الأنماط'},pasteText:{button:'لصق كنص بسيط',title:'لصق كنص بسيط'},templates:{button:'القوالب',title:'قوالب المحتوى',insertOption:'استبدال المحتوى',selectPromptMsg:'اختر القالب الذي تود وضعه في المحرر',emptyListMsg:'(لم يتم تعريف أي قالب)'},showBlocks:'مخطط تفصيلي',stylesCombo:{label:'أنماط',voiceLabel:'أنماط',panelVoiceLabel:'اختر نمط',panelTitle1:'أنماط الفقرة',panelTitle2:'أنماط مضمنة',panelTitle3:'أنماط الكائن'},format:{label:'تنسيق',voiceLabel:'تنسيق',panelTitle:'تنسيق الفقرة',panelVoiceLabel:'اختر تنسيق الفقرة',tag_p:'عادي',tag_pre:'منسّق',tag_address:'عنوان',tag_h1:'العنوان 1',tag_h2:'العنوان  2',tag_h3:'العنوان  3',tag_h4:'العنوان  4',tag_h5:'العنوان  5',tag_h6:'العنوان  6',tag_div:'عادي (DIV)'},font:{label:'خط',voiceLabel:'حجم الخط',panelTitle:'حجم الخط',panelVoiceLabel:'اختر حجم الخط'},fontSize:{label:'حجم الخط',voiceLabel:'حجم الخط',panelTitle:'حجم الخط',panelVoiceLabel:'اختر حجم الخط'},colorButton:{textColorTitle:'لون النص',bgColorTitle:'لون الخلفية',auto:'تلقائي',more:'ألوان إضافية...'},colors:{'000':'أسود',800000:'كستنائي','8B4513':'بني فاتح','2F4F4F':'رمادي أردوازي غامق','008080':'أزرق مخضر','000080':'أزرق داكن','4B0082':'كحلي',696969:'رمادي داكن',B22222:'طوبي',A52A2A:'بني',DAA520:'ذهبي داكن','006400':'أخضر داكن','40E0D0':'فيروزي','0000CD':'أزرق متوسط',800080:'بنفسجي غامق',808080:'رمادي',F00:'أحمر',FF8C00:'برتقالي داكن',FFD700:'ذهبي','008000':'أخضر','0FF':'تركواز','00F':'أزرق',EE82EE:'بنفسجي',A9A9A9:'رمادي شاحب',FFA07A:'برتقالي وردي',FFA500:'برتقالي',FFFF00:'أصفر','00FF00':'ليموني',AFEEEE:'فيروزي شاحب',ADD8E6:'أزرق فاتح',DDA0DD:'بنفسجي فاتح',D3D3D3:'رمادي فاتح',FFF0F5:'وردي فاتح',FAEBD7:'أبيض عتيق',FFFFE0:'أصفر فاتح',F0FFF0:'أبيض مائل للأخضر',F0FFFF:'سماوي',F0F8FF:'لبني',E6E6FA:'أرجواني',FFF:'أبيض'},scayt:{title:'تدقيق إملائي أثناء الكتابة',enable:'تفعيل SCAYT',disable:'تعطيل SCAYT',about:'عن SCAYT',toggle:'تثبيت SCAYT',options:'خيارات',langs:'لغات',moreSuggestions:'المزيد من المقترحات',ignore:'تجاهل',ignoreAll:'تجاهل الكل',addWord:'إضافة كلمة',emptyDic:'اسم القاموس يجب ألا يكون فارغاً.',optionsTab:'خيارات',languagesTab:'لغات',dictionariesTab:'قواميس',aboutTab:'عن'},about:{title:'عن CKEditor',dlgTitle:'عن rotidEKC',moreInfo:'للحصول على معلومات الترخيص ، يرجى زيارة موقعنا على شبكة الانترنت:',copy:'حقوق النشر &copy; $1. جميع الحقوق محفوظة.'},maximize:'تكبير',minimize:'تصغير',fakeobjects:{anchor:'إرساء',flash:'رسم متحرك بالفلاش',div:'فاصل صفحة',unknown:'كائن غير معروف'},resize:'اسحب لتغيير الحجم',colordialog:{title:'اختر لون',highlight:'إلقاء الضوء',selected:'مُختار',clear:'مسح'}};
Index: /trunk/filemanager/tp/ckeditor/lang/gl.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/gl.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/gl.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.gl={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Código Fonte',newPage:'Nova Páxina',save:'Gardar',preview:'Vista Previa',cut:'Cortar',copy:'Copiar',paste:'Pegar',print:'Imprimir',underline:'Sub-raiado',bold:'Negrita',italic:'Cursiva',selectAll:'Seleccionar todo',removeFormat:'Eliminar Formato',strike:'Tachado',subscript:'Subíndice',superscript:'Superíndice',horizontalrule:'Inserir Liña Horizontal',pagebreak:'Inserir Salto de Páxina',unlink:'Eliminar Ligazón',undo:'Desfacer',redo:'Refacer',common:{browseServer:'Navegar no Servidor',url:'URL',protocol:'Protocolo',upload:'Carregar',uploadSubmit:'Enviar ó Servidor',image:'Imaxe',flash:'Flash',form:'Formulario',checkbox:'Cadro de Verificación',radio:'Botón de Radio',textField:'Campo de Texto',textarea:'Área de Texto',hiddenField:'Campo Oculto',button:'Botón',select:'Campo de Selección',imageButton:'Botón de Imaxe',notSet:'<non definido>',id:'Id',name:'Nome',langDir:'Orientación do Idioma',langDirLtr:'Esquerda a Dereita (LTR)',langDirRtl:'Dereita a Esquerda (RTL)',langCode:'Código do Idioma',longDescr:'Descrición Completa da URL',cssClass:'Clases da Folla de Estilos',advisoryTitle:'Título',cssStyle:'Estilo',ok:'OK',cancel:'Cancelar',generalTab:'General',advancedTab:'Advanzado',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Inserir Carácter Especial',title:'Seleccione Caracter Especial'},link:{toolbar:'Inserir/Editar Ligazón',menu:'Editar Ligazón',title:'Ligazón',info:'Información da Ligazón',target:'Destino',upload:'Carregar',advanced:'Advanzado',type:'Tipo de Ligazón',toAnchor:'Referencia nesta páxina',toEmail:'E-Mail',target:'Destino',targetNotSet:'<non definido>',targetFrame:'<frame>',targetPopup:'<Xanela Emerxente>',targetNew:'Nova Xanela (_blank)',targetTop:'Xanela Primaria (_top)',targetSelf:'Mesma Xanela (_self)',targetParent:'Xanela Pai (_parent)',targetFrameName:'Nome do Marco Destino',targetPopupName:'Nome da Xanela Emerxente',popupFeatures:'Características da Xanela Emerxente',popupResizable:'Resizable',popupStatusBar:'Barra de Estado',popupLocationBar:'Barra de Localización',popupToolbar:'Barra de Ferramentas',popupMenuBar:'Barra de Menú',popupFullScreen:'A Toda Pantalla (IE)',popupScrollBars:'Barras de Desplazamento',popupDependent:'Dependente (Netscape)',popupWidth:'Largura',popupLeft:'Posición Esquerda',popupHeight:'Altura',popupTop:'Posición dende Arriba',id:'Id',langDir:'Orientación do Idioma',langDirNotSet:'<non definido>',langDirLTR:'Esquerda a Dereita (LTR)',langDirRTL:'Dereita a Esquerda (RTL)',acccessKey:'Chave de Acceso',name:'Nome',langCode:'Orientación do Idioma',tabIndex:'Índice de Tabulación',advisoryTitle:'Título',advisoryContentType:'Tipo de Contido',cssClasses:'Clases da Folla de Estilos',charset:'Fonte de Caracteres Vinculado',styles:'Estilo',selectAnchor:'Seleccionar unha Referencia',anchorName:'Por Nome de Referencia',anchorId:'Por Element Id',emailAddress:'Enderezo de E-Mail',emailSubject:'Asunto do Mensaxe',emailBody:'Corpo do Mensaxe',noAnchors:'(Non hai referencias disponibles no documento)',noUrl:'Por favor, escriba a ligazón URL',noEmail:'Por favor, escriba o enderezo de e-mail'},anchor:{toolbar:'Inserir/Editar Referencia',menu:'Propriedades da Referencia',title:'Propriedades da Referencia',name:'Nome da Referencia',errorName:'Por favor, escriba o nome da referencia'},findAndReplace:{title:'Find and Replace',find:'Procurar',replace:'Substituir',findWhat:'Texto a procurar:',replaceWith:'Substituir con:',notFoundMsg:'Non te atopou o texto indicado.',matchCase:'Coincidir Mai./min.',matchWord:'Coincidir con toda a palabra',matchCyclic:'Match cyclic',replaceAll:'Substitiur Todo',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabla',title:'Propiedades da Táboa',menu:'Propiedades da Táboa',deleteTable:'Borrar Táboa',rows:'Filas',columns:'Columnas',border:'Tamaño do Borde',align:'Aliñamento',alignNotSet:'<Non Definido>',alignLeft:'Esquerda',alignCenter:'Centro',alignRight:'Ereita',width:'Largura',widthPx:'pixels',widthPc:'percent',height:'Altura',cellSpace:'Marxe entre Celas',cellPad:'Marxe interior',caption:'Título',summary:'Sumario',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cela',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Borrar Cela',merge:'Unir Celas',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Fila',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Borrar Filas'},column:{menu:'Columna',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Borrar Columnas'}},button:{title:'Propriedades do Botón',text:'Texto (Valor)',type:'Tipo',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Propriedades do Cadro de Verificación',radioTitle:'Propriedades do Botón de Radio',value:'Valor',selected:'Seleccionado'},form:{title:'Propriedades do Formulario',menu:'Propriedades do Formulario',action:'Acción',method:'Método',encoding:'Encoding',target:'Destino',targetNotSet:'<non definido>',targetNew:'Nova Xanela (_blank)',targetTop:'Xanela Primaria (_top)',targetSelf:'Mesma Xanela (_self)',targetParent:'Xanela Pai (_parent)'},select:{title:'Propriedades do Campo de Selección',selectInfo:'Info',opAvail:'Opcións Disponibles',value:'Valor',size:'Tamaño',lines:'liñas',chkMulti:'Permitir múltiples seleccións',opText:'Texto',opValue:'Valor',btnAdd:'Engadir',btnModify:'Modificar',btnUp:'Subir',btnDown:'Baixar',btnSetValue:'Definir como valor por defecto',btnDelete:'Borrar'},textarea:{title:'Propriedades da Área de Texto',cols:'Columnas',rows:'Filas'},textfield:{title:'Propriedades do Campo de Texto',name:'Nome',value:'Valor',charWidth:'Tamaño do Caracter',maxChars:'Máximo de Caracteres',type:'Tipo',typeText:'Texto',typePass:'Chave'},hidden:{title:'Propriedades do Campo Oculto',name:'Nome',value:'Valor'},image:{title:'Propriedades da Imaxe',titleButton:'Propriedades do Botón de Imaxe',menu:'Propriedades da Imaxe',infoTab:'Información da Imaxe',btnUpload:'Enviar ó Servidor',url:'URL',upload:'Carregar',alt:'Texto Alternativo',width:'Largura',height:'Altura',lockRatio:'Proporcional',resetSize:'Tamaño Orixinal',border:'Límite',hSpace:'Esp. Horiz.',vSpace:'Esp. Vert.',align:'Aliñamento',alignLeft:'Esquerda',alignAbsBottom:'Abs Inferior',alignAbsMiddle:'Abs Centro',alignBaseline:'Liña Base',alignBottom:'Pé',alignMiddle:'Centro',alignRight:'Dereita',alignTextTop:'Tope do Texto',alignTop:'Tope',preview:'Vista Previa',alertUrl:'Por favor, escriba a URL da imaxe',linkTab:'Ligazón',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Propriedades Flash',propertiesTab:'Properties',title:'Propriedades Flash',chkPlay:'Auto Execución',chkLoop:'Bucle',chkMenu:'Activar Menú Flash',chkFull:'Allow Fullscreen',scale:'Escalar',scaleAll:'Amosar Todo',scaleNoBorder:'Sen Borde',scaleFit:'Encaixar axustando',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Aliñamento',alignLeft:'Esquerda',alignAbsBottom:'Abs Inferior',alignAbsMiddle:'Abs Centro',alignBaseline:'Liña Base',alignBottom:'Pé',alignMiddle:'Centro',alignRight:'Dereita',alignTextTop:'Tope do Texto',alignTop:'Tope',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Cor do Fondo',width:'Largura',height:'Altura',hSpace:'Esp. Horiz.',vSpace:'Esp. Vert.',validateSrc:'Por favor, escriba a ligazón URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Corrección Ortográfica',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Non está no diccionario',changeTo:'Cambiar a',btnIgnore:'Ignorar',btnIgnoreAll:'Ignorar Todas',btnReplace:'Substituir',btnReplaceAll:'Substituir Todas',btnUndo:'Desfacer',noSuggestions:'- Sen candidatos -',progress:'Corrección ortográfica en progreso...',noMispell:'Corrección ortográfica rematada: Non se atoparon erros',noChanges:'Corrección ortográfica rematada: Non se substituiu nengunha verba',oneChange:'Corrección ortográfica rematada: Unha verba substituida',manyChanges:'Corrección ortográfica rematada: %1 verbas substituidas',ieSpellDownload:'O corrector ortográfico non está instalado. ¿Quere descargalo agora?'},smiley:{toolbar:'Smiley',title:'Inserte un Smiley'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Lista Numerada',bulletedlist:'Marcas',indent:'Aumentar Sangría',outdent:'Disminuir Sangría',justify:{left:'Aliñar á Esquerda',center:'Centrado',right:'Aliñar á Dereita',block:'Xustificado'},blockquote:'Blockquote',clipboard:{title:'Pegar',cutError:'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de corte. Por favor, use o teclado para iso (Ctrl+X).',copyError:'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de copia. Por favor, use o teclado para iso (Ctrl+C).',pasteMsg:'Por favor, pegue dentro do seguinte cadro usando o teclado (<STRONG>Ctrl+V</STRONG>) e pulse <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Pegar dende Word',title:'Pegar dende Word',advice:'Por favor, pegue dentro do seguinte cadro usando o teclado (<STRONG>Ctrl+V</STRONG>) e pulse <STRONG>OK</STRONG>.',ignoreFontFace:'Ignorar as definicións de Tipografía',removeStyle:'Eliminar as definicións de Estilos'},pasteText:{button:'Pegar como texto plano',title:'Pegar como texto plano'},templates:{button:'Plantillas',title:'Plantillas de Contido',insertOption:'Replace actual contents',selectPromptMsg:'Por favor, seleccione a plantilla a abrir no editor<br>(o contido actual perderase):',emptyListMsg:'(Non hai plantillas definidas)'},showBlocks:'Show Blocks',stylesCombo:{label:'Estilo',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formato',voiceLabel:'Format',panelTitle:'Formato',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formateado',tag_address:'Enderezo',tag_h1:'Enacabezado 1',tag_h2:'Encabezado 2',tag_h3:'Encabezado 3',tag_h4:'Encabezado 4',tag_h5:'Encabezado 5',tag_h6:'Encabezado 6',tag_div:'Paragraph (DIV)'},font:{label:'Tipo',voiceLabel:'Font',panelTitle:'Tipo',panelVoiceLabel:'Select a font'},fontSize:{label:'Tamaño',voiceLabel:'Font Size',panelTitle:'Tamaño',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Cor do Texto',bgColorTitle:'Cor do Fondo',auto:'Automático',more:'Máis Cores...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/_translationstatus.txt
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/_translationstatus.txt	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/_translationstatus.txt	(revision 2000)
@@ -0,0 +1,59 @@
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+
+af.js      Found: 312 Missing: 130
+ar.js      Found: 442 Missing: 0
+bg.js      Found: 305 Missing: 137
+bn.js      Found: 307 Missing: 135
+bs.js      Found: 210 Missing: 232
+ca.js      Found: 435 Missing: 7
+cs.js      Found: 442 Missing: 0
+da.js      Found: 435 Missing: 7
+de.js      Found: 435 Missing: 7
+el.js      Found: 311 Missing: 131
+en-au.js   Found: 395 Missing: 47
+en-ca.js   Found: 395 Missing: 47
+en-uk.js   Found: 395 Missing: 47
+eo.js      Found: 282 Missing: 160
+es.js      Found: 435 Missing: 7
+et.js      Found: 326 Missing: 116
+eu.js      Found: 435 Missing: 7
+fa.js      Found: 327 Missing: 115
+fi.js      Found: 325 Missing: 117
+fo.js      Found: 326 Missing: 116
+fr-ca.js   Found: 327 Missing: 115
+fr.js      Found: 434 Missing: 8
+gl.js      Found: 308 Missing: 134
+gu.js      Found: 326 Missing: 116
+he.js      Found: 442 Missing: 0
+hi.js      Found: 327 Missing: 115
+hr.js      Found: 435 Missing: 7
+hu.js      Found: 326 Missing: 116
+is.js      Found: 332 Missing: 110
+it.js      Found: 434 Missing: 8
+ja.js      Found: 434 Missing: 8
+km.js      Found: 299 Missing: 143
+ko.js      Found: 318 Missing: 124
+lt.js      Found: 331 Missing: 111
+lv.js      Found: 308 Missing: 134
+mn.js      Found: 326 Missing: 116
+ms.js      Found: 287 Missing: 155
+nb.js      Found: 325 Missing: 117
+nl.js      Found: 435 Missing: 7
+no.js      Found: 325 Missing: 117
+pl.js      Found: 442 Missing: 0
+pt-br.js   Found: 434 Missing: 8
+pt.js      Found: 307 Missing: 135
+ro.js      Found: 326 Missing: 116
+ru.js      Found: 332 Missing: 110
+sk.js      Found: 327 Missing: 115
+sl.js      Found: 325 Missing: 117
+sr-latn.js Found: 301 Missing: 141
+sr.js      Found: 301 Missing: 141
+sv.js      Found: 324 Missing: 118
+th.js      Found: 312 Missing: 130
+tr.js      Found: 332 Missing: 110
+uk.js      Found: 435 Missing: 7
+vi.js      Found: 435 Missing: 7
+zh-cn.js   Found: 435 Missing: 7
+zh.js      Found: 435 Missing: 7
Index: /trunk/filemanager/tp/ckeditor/lang/fr.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/fr.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/fr.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.fr={dir:'ltr',editorTitle:'Editeur de Texte Enrichi, %1',source:'Source',newPage:'Nouvelle page',save:'Enregistrer',preview:'Aperçu',cut:'Couper',copy:'Copier',paste:'Coller',print:'Imprimer',underline:'Souligné',bold:'Gras',italic:'Italique',selectAll:'Tout sélectionner',removeFormat:'Supprimer la mise en forme',strike:'Barré',subscript:'Indice',superscript:'Exposant',horizontalrule:'Ligne horizontale',pagebreak:'Saut de page',unlink:'Supprimer le lien',undo:'Annuler',redo:'Rétablir',common:{browseServer:'Explorer le serveur',url:'URL',protocol:'Protocole',upload:'Envoyer',uploadSubmit:'Envoyer sur le serveur',image:'Image',flash:'Flash',form:'Formulaire',checkbox:'Case à cocher',radio:'Bouton Radio',textField:'Champ texte',textarea:'Zone de texte',hiddenField:'Champ caché',button:'Bouton',select:'Liste déroulante',imageButton:'Bouton image',notSet:'<non défini>',id:'Id',name:'Nom',langDir:"Sens d'écriture",langDirLtr:'Gauche à droite (LTR)',langDirRtl:'Droite à gauche (RTL)',langCode:'Code de langue',longDescr:'URL de description longue (longdesc => malvoyant)',cssClass:'Classe CSS',advisoryTitle:'Description (title)',cssStyle:'Style',ok:'OK',cancel:'Annuler',generalTab:'Général',advancedTab:'Avancé',validateNumberFailed:"Cette valeur n'est pas un nombre.",confirmNewPage:'Les changements non sauvegardés seront perdus. Etes-vous sûr de vouloir charger une nouvelle page?',confirmCancel:'Certaines options ont été modifiées. Etes-vous sûr de vouloir fermer?',unavailable:'%1<span class="cke_accessibility">, Indisponible</span>'},specialChar:{toolbar:'Insérer un caractère spécial',title:'Sélectionnez un caractère'},link:{toolbar:'Lien',menu:'Editer le lien',title:'Lien',info:'Infos sur le lien',target:'Cible',upload:'Envoyer',advanced:'Avancé',type:'Type de lien',toAnchor:'Transformer le lien en ancre dans le texte',toEmail:'E-mail',target:'Cible',targetNotSet:'<non définie>',targetFrame:'<cadre>',targetPopup:'<fenêtre popup>',targetNew:'Nouvelle fenêtre (_blank)',targetTop:'Même fenêtre (_top)',targetSelf:'Même Cadre (_self)',targetParent:'Fenêtre parente (_parent)',targetFrameName:'Nom du Cadre destination',targetPopupName:'Nom de la fenêtre popup',popupFeatures:'Options de la fenêtre popup',popupResizable:'Redimensionnable',popupStatusBar:'Barre de status',popupLocationBar:"Barre d'adresse",popupToolbar:"Barre d'outils",popupMenuBar:'Barre de menu',popupFullScreen:'Plein écran (IE)',popupScrollBars:'Barres de défilement',popupDependent:'Dépendante (Netscape)',popupWidth:'Largeur',popupLeft:'Position gauche',popupHeight:'Hauteur',popupTop:'Position haute',id:'Id',langDir:"Sens d'écriture",langDirNotSet:'<non défini>',langDirLTR:'Gauche à droite',langDirRTL:'Droite à gauche',acccessKey:"Touche d'accessibilité",name:'Nom',langCode:'Code de langue',tabIndex:'Index de tabulation',advisoryTitle:'Description (title)',advisoryContentType:'Type de contenu (ex: text/html)',cssClasses:'Classe du CSS',charset:'Charset de la cible',styles:'Style',selectAnchor:"Sélectionner l'ancre",anchorName:"Par nom d'ancre",anchorId:"Par ID d'élément",emailAddress:'Adresse E-Mail',emailSubject:'Sujet du message',emailBody:'Corps du message',noAnchors:'(Aucune ancre disponible dans ce document)',noUrl:"Veuillez entrer l'adresse du lien",noEmail:"Veuillez entrer l'adresse e-mail"},anchor:{toolbar:'Ancre',menu:"Editer l'ancre",title:"Propriétés de l'ancre",name:"Nom de l'ancre",errorName:"Veuillez entrer le nom de l'ancre"},findAndReplace:{title:'Trouver et remplacer',find:'Trouver',replace:'Remplacer',findWhat:'Expression à trouver: ',replaceWith:'Remplacer par: ',notFoundMsg:'Le texte spécifié ne peut être trouvé.',matchCase:'Respecter la casse',matchWord:'Mot entier uniquement',matchCyclic:'Boucler',replaceAll:'Remplacer tout',replaceSuccessMsg:'%1 occurrence(s) replacée(s).'},table:{toolbar:'Tableau',title:'Propriétés du tableau',menu:'Propriétés du tableau',deleteTable:'Supprimer le tableau',rows:'Lignes',columns:'Colonnes',border:'Taille de la bordure',align:'Alignement du contenu',alignNotSet:'<non définie>',alignLeft:'Gauche',alignCenter:'Centré',alignRight:'Droite',width:'Largeur',widthPx:'pixels',widthPc:'% pourcents',height:'Hauteur',cellSpace:'Espacement des cellules',cellPad:'Marge interne des cellules',caption:'Titre du tableau',summary:'Résumé (description)',headers:'En-Têtes',headersNone:'Aucunes',headersColumn:'Première colonne',headersRow:'Première ligne',headersBoth:'Les deux',invalidRows:'Le nombre de lignes doit être supérieur à 0.',invalidCols:'Le nombre de colonnes doit être supérieur à 0.',invalidBorder:'La taille de la bordure doit être un nombre.',invalidWidth:'La largeur du tableau doit être un nombre.',invalidHeight:'La hauteur du tableau doit être un nombre.',invalidCellSpacing:"L'espacement des cellules doit être un nombre.",invalidCellPadding:'La marge intérieure des cellules doit être un nombre.',cell:{menu:'Cellule',insertBefore:'Insérer une cellule avant',insertAfter:'Insérer une cellule après',deleteCell:'Supprimer les cellules',merge:'Fusionner les cellules',mergeRight:'Fusionner à droite',mergeDown:'Fusionner en bas',splitHorizontal:'Fractionner horizontalement',splitVertical:'Fractionner verticalement',title:'Propriétés de Cellule',cellType:'Type de Cellule',rowSpan:'Fusion de Lignes',colSpan:'Fusion de Colonnes',wordWrap:'Word Wrap',hAlign:'Alignement Horizontal',vAlign:'Alignement Vertical',alignTop:'Haut',alignMiddle:'Milieu',alignBottom:'Bas',alignBaseline:'Bas du texte',bgColor:"Couleur d'arrière-plan",borderColor:'Couleur de Bordure',data:'Données',header:'Entête',yes:'Oui',no:'Non',invalidWidth:'La Largeur de Cellule doit être un nombre.',invalidHeight:'La Hauteur de Cellule doit être un nombre.',invalidRowSpan:'La fusion de lignes doit être un nombre entier.',invalidColSpan:'La fusion de colonnes doit être un nombre entier.',chooseColor:'Choose'},row:{menu:'Ligne',insertBefore:'Insérer une ligne avant',insertAfter:'Insérer une ligne après',deleteRow:'Supprimer les lignes'},column:{menu:'Colonnes',insertBefore:'Insérer une colonne avant',insertAfter:'Insérer une colonne après',deleteColumn:'Supprimer les colonnes'}},button:{title:'Propriétés du bouton',text:'Texte (Value)',type:'Type',typeBtn:'Bouton',typeSbm:'Validation (submit)',typeRst:'Remise à zéro'},checkboxAndRadio:{checkboxTitle:'Propriétés de la case à cocher',radioTitle:'Propriétés du bouton Radio',value:'Valeur',selected:'Sélectionné'},form:{title:'Propriétés du formulaire',menu:'Propriétés du formulaire',action:'Action',method:'Méthode',encoding:'Encodage',target:'Cible',targetNotSet:'<non définie>',targetNew:'Nouvelle fenêtre (_blank)',targetTop:'Même fenêtre (_top)',targetSelf:'Même Cadre (_self)',targetParent:'Fenêtre parente (_parent)'},select:{title:'Propriétés du menu déroulant',selectInfo:'Informations sur le menu déroulant',opAvail:'Options disponibles',value:'Valeur',size:'Taille',lines:'Lignes',chkMulti:'Permettre les sélections multiples',opText:'Texte',opValue:'Valeur',btnAdd:'Ajouter',btnModify:'Modifier',btnUp:'Haut',btnDown:'Bas',btnSetValue:'Définir comme valeur sélectionnée',btnDelete:'Supprimer'},textarea:{title:'Propriétés de la zone de texte',cols:'Colonnes',rows:'Lignes'},textfield:{title:'Propriétés du champ texte',name:'Nom',value:'Valeur',charWidth:'Taille des caractères',maxChars:'Nombre maximum de caractères',type:'Type',typeText:'Texte',typePass:'Mot de passe'},hidden:{title:'Propriétés du champ caché',name:'Nom',value:'Valeur'},image:{title:"Propriétés de l'image",titleButton:'Propriétés du bouton image',menu:"Propriétés de l'image",infoTab:"Informations sur l'image",btnUpload:'Envoyer sur le serveur',url:'URL',upload:'Envoyer',alt:'Texte de remplacement',width:'Largeur',height:'Hauteur',lockRatio:'Garder les proportions',resetSize:"Taille d'origine",border:'Bordure',hSpace:'Espacement horizontal',vSpace:'Espacement vertical',align:'Alignement',alignLeft:'Gauche',alignAbsBottom:'Bas absolu',alignAbsMiddle:'Milieu absolu',alignBaseline:'Bas du texte',alignBottom:'Bas',alignMiddle:'Milieu',alignRight:'Droite',alignTextTop:'Haut du texte',alignTop:'Haut',preview:'Aperçu',alertUrl:"Veuillez entrer l'adresse de l'image",linkTab:'Lien',button2Img:'Voulez-vous transformer le bouton image sélectionné en simple image?',img2Button:"Voulez-vous transformer l'image en bouton image?",urlMissing:'Image source URL is missing.'},flash:{properties:'Propriétés du Flash',propertiesTab:'Propriétés',title:'Propriétés du Flash',chkPlay:'Jouer automatiquement',chkLoop:'Boucle',chkMenu:'Activer le menu Flash',chkFull:'Permettre le plein écran',scale:'Echelle',scaleAll:'Afficher tout',scaleNoBorder:'Pas de bordure',scaleFit:"Taille d'origine",access:'Accès aux scripts',accessAlways:'Toujours',accessSameDomain:'Même domaine',accessNever:'Jamais',align:'Alignement',alignLeft:'Gauche',alignAbsBottom:'Bas absolu',alignAbsMiddle:'Milieu absolu',alignBaseline:'Bas du texte',alignBottom:'Bas',alignMiddle:'Milieu',alignRight:'Droite',alignTextTop:'Haut du texte',alignTop:'Haut',quality:'Qualité',qualityBest:'Meilleure',qualityHigh:'Haute',qualityAutoHigh:'Haute Auto',qualityMedium:'Moyenne',qualityAutoLow:'Basse Auto',qualityLow:'Basse',windowModeWindow:'Fenêtre',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Mode fenêtre',flashvars:'Variables du Flash',bgcolor:"Couleur d'arrière-plan",width:'Largeur',height:'Hauteur',hSpace:'Espacement horizontal',vSpace:'Espacement vertical',validateSrc:"L'adresse ne doit pas être vide.",validateWidth:'La largeur doit être un nombre.',validateHeight:'La hauteur doit être un nombre.',validateHSpace:"L'espacement horizontal doit être un nombre.",validateVSpace:"L'espacement vertical doit être un nombre."},spellCheck:{toolbar:"Vérifier l'orthographe",title:"Vérifier l'orthographe",notAvailable:'Désolé, le service est indisponible actuellement.',errorLoading:"Erreur du chargement du service depuis l'hôte : %s.",notInDic:"N'existe pas dans le dictionnaire",changeTo:'Modifier pour',btnIgnore:'Ignorer',btnIgnoreAll:'Ignorer tout',btnReplace:'Remplacer',btnReplaceAll:'Remplacer tout',btnUndo:'Annuler',noSuggestions:'- Aucune suggestion -',progress:"Vérification de l'orthographe en cours...",noMispell:"Vérification de l'orthographe terminée : aucune erreur trouvée",noChanges:"Vérification de l'orthographe terminée : Aucun mot corrigé",oneChange:"Vérification de l'orthographe terminée : Un seul mot corrigé",manyChanges:"Vérification de l'orthographe terminée : %1 mots corrigés",ieSpellDownload:"La vérification d'orthographe n'est pas installée. Voulez-vous la télécharger maintenant?"},smiley:{toolbar:'Emoticon',title:'Insérer un émoticon'},elementsPath:{eleTitle:'%1 éléments'},numberedlist:'Insérer/Supprimer la liste numérotée',bulletedlist:'Insérer/Supprimer la liste à puces',indent:'Augmenter le retrait (tabulation)',outdent:'Diminuer le retrait (tabulation)',justify:{left:'Aligner à gauche',center:'Centrer',right:'Aligner à droite',block:'Justifier'},blockquote:'Citation',clipboard:{title:'Coller',cutError:"Les paramètres de sécurité de votre navigateur ne permettent pas à l'éditeur d'exécuter automatiquement l'opération \"couper\". Veuillez utiliser le raccourci clavier (Ctrl+X).",copyError:"Les paramètres de sécurité de votre navigateur ne permettent pas à l'éditeur d'exécuter automatiquement des opérations de copie. Veuillez utiliser le raccourci clavier (Ctrl+C).",pasteMsg:'Veuillez coller le texte dans la zone suivante en utilisant le raccourci clavier (<strong>Ctrl+V</strong>) et cliquez sur OK',securityMsg:"A cause des paramètres de sécurité de votre navigateur, l'éditeur n'est pas en mesure d'accéder directement à vos données contenues dans le presse-papier. Vous devriez réessayer de coller les données dans la fenêtre."},pastefromword:{toolbar:'Coller depuis Word',title:'Coller depuis Word',advice:'Veuillez coller le texte dans la zone suivante, en utilisant le raccourci clavier (<strong>Ctrl+V</strong>) et cliquez sur OK.',ignoreFontFace:'Supprimer la définition des polices',removeStyle:'Supprimer la définition des styles'},pasteText:{button:'Coller comme texte sans mise en forme',title:'Coller comme texte sans mise en forme'},templates:{button:'Modèles',title:'Contenu des modèles',insertOption:'Remplacer le contenu actuel',selectPromptMsg:"Veuillez sélectionner le modèle pour l'ouvrir dans l'éditeur",emptyListMsg:'(Aucun modèle disponible)'},showBlocks:'Afficher les blocs',stylesCombo:{label:'Styles',voiceLabel:'Styles',panelVoiceLabel:'Choisissez un style',panelTitle1:'Styles de blocs',panelTitle2:'Styles en ligne',panelTitle3:"Styles d'objet"},format:{label:'Format',voiceLabel:'Format',panelTitle:'Format de paragraphe',panelVoiceLabel:'Choisissez un format de paragraphe',tag_p:'Normal',tag_pre:'Formaté',tag_address:'Adresse',tag_h1:'Titre 1',tag_h2:'Titre 2',tag_h3:'Titre 3',tag_h4:'Titre 4',tag_h5:'Titre 5',tag_h6:'Titre 6',tag_div:'Normal (DIV)'},font:{label:'Police',voiceLabel:'Police',panelTitle:'Style de police',panelVoiceLabel:'Choisissez une police'},fontSize:{label:'Taille',voiceLabel:'Taille de police',panelTitle:'Taille de police',panelVoiceLabel:'Choisissez une taille de police'},colorButton:{textColorTitle:'Couleur de texte',bgColorTitle:"Couleur d'arrière plan",auto:'Automatique',more:'Plus de couleurs...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:"Vérification d'Orthographe en Cours de Frappe (SCAYT: Spell Check As You Type)",enable:'Activer SCAYT',disable:'Désactiver SCAYT',about:'A propos de SCAYT',toggle:'Activer/Désactiver SCAYT',options:'Options',langs:'Langues',moreSuggestions:'Plus de suggestions',ignore:'Ignorer',ignoreAll:'Ignorer Tout',addWord:'Ajouter le mot',emptyDic:'Le nom du dictionnaire ne devrait pas être vide.',optionsTab:'Options',languagesTab:'Langues',dictionariesTab:'Dictionnaires',aboutTab:'A propos de'},about:{title:'A propos de CKEditor',dlgTitle:'A propos de CKEditor',moreInfo:'Pour les informations de licence, veuillez visiter notre site web:',copy:'Copyright &copy; $1. Tous droits réservés.'},maximize:'Agrandir',minimize:'Minimize',fakeobjects:{anchor:'Ancre',flash:'Animation Flash',div:'Saut de Page',unknown:'Objet Inconnu'},resize:'Glisser pour modifier la taille',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/et.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/et.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/et.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.et={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Lähtekood',newPage:'Uus leht',save:'Salvesta',preview:'Eelvaade',cut:'Lõika',copy:'Kopeeri',paste:'Kleebi',print:'Prindi',underline:'Allajoonitud',bold:'Paks',italic:'Kursiiv',selectAll:'Vali kõik',removeFormat:'Eemalda vorming',strike:'Läbijoonitud',subscript:'Allindeks',superscript:'Ülaindeks',horizontalrule:'Sisesta horisontaaljoon',pagebreak:'Sisesta lehevahetuskoht',unlink:'Eemalda link',undo:'Võta tagasi',redo:'Korda toimingut',common:{browseServer:'Sirvi serverit',url:'URL',protocol:'Protokoll',upload:'Lae üles',uploadSubmit:'Saada serverissee',image:'Pilt',flash:'Flash',form:'Vorm',checkbox:'Märkeruut',radio:'Raadionupp',textField:'Tekstilahter',textarea:'Tekstiala',hiddenField:'Varjatud lahter',button:'Nupp',select:'Valiklahter',imageButton:'Piltnupp',notSet:'<määramata>',id:'Id',name:'Nimi',langDir:'Keele suund',langDirLtr:'Vasakult paremale (LTR)',langDirRtl:'Paremalt vasakule (RTL)',langCode:'Keele kood',longDescr:'Pikk kirjeldus URL',cssClass:'Stiilistiku klassid',advisoryTitle:'Juhendav tiitel',cssStyle:'Laad',ok:'OK',cancel:'Loobu',generalTab:'General',advancedTab:'Täpsemalt',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Sisesta erimärk',title:'Vali erimärk'},link:{toolbar:'Sisesta link / Muuda linki',menu:'Muuda linki',title:'Link',info:'Lingi info',target:'Sihtkoht',upload:'Lae üles',advanced:'Täpsemalt',type:'Lingi tüüp',toAnchor:'Ankur sellel lehel',toEmail:'E-post',target:'Sihtkoht',targetNotSet:'<määramata>',targetFrame:'<raam>',targetPopup:'<hüpikaken>',targetNew:'Uus aken (_blank)',targetTop:'Pealmine aken (_top)',targetSelf:'Sama aken (_self)',targetParent:'Esivanem aken (_parent)',targetFrameName:'Sihtmärk raami nimi',targetPopupName:'Hüpikakna nimi',popupFeatures:'Hüpikakna omadused',popupResizable:'Resizable',popupStatusBar:'Olekuriba',popupLocationBar:'Aadressiriba',popupToolbar:'Tööriistariba',popupMenuBar:'Menüüriba',popupFullScreen:'Täisekraan (IE)',popupScrollBars:'Kerimisribad',popupDependent:'Sõltuv (Netscape)',popupWidth:'Laius',popupLeft:'Vasak asukoht',popupHeight:'Kõrgus',popupTop:'Ülemine asukoht',id:'Id',langDir:'Keele suund',langDirNotSet:'<määramata>',langDirLTR:'Vasakult paremale (LTR)',langDirRTL:'Paremalt vasakule (RTL)',acccessKey:'Juurdepääsu võti',name:'Nimi',langCode:'Keele suund',tabIndex:'Tab indeks',advisoryTitle:'Juhendav tiitel',advisoryContentType:'Juhendava sisu tüüp',cssClasses:'Stiilistiku klassid',charset:'Lingitud ressurssi märgistik',styles:'Laad',selectAnchor:'Vali ankur',anchorName:'Ankru nime järgi',anchorId:'Elemendi id järgi',emailAddress:'E-posti aadress',emailSubject:'Sõnumi teema',emailBody:'Sõnumi tekst',noAnchors:'(Selles dokumendis ei ole ankruid)',noUrl:'Palun kirjuta lingi URL',noEmail:'Palun kirjuta E-Posti aadress'},anchor:{toolbar:'Sisesta ankur / Muuda ankrut',menu:'Ankru omadused',title:'Ankru omadused',name:'Ankru nimi',errorName:'Palun sisest ankru nimi'},findAndReplace:{title:'Otsi ja asenda',find:'Otsi',replace:'Asenda',findWhat:'Leia mida:',replaceWith:'Asenda millega:',notFoundMsg:'Valitud teksti ei leitud.',matchCase:'Erista suur- ja väiketähti',matchWord:'Otsi terviklike sõnu',matchCyclic:'Match cyclic',replaceAll:'Asenda kõik',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabel',title:'Tabeli atribuudid',menu:'Tabeli atribuudid',deleteTable:'Kustuta tabel',rows:'Read',columns:'Veerud',border:'Joone suurus',align:'Joondus',alignNotSet:'<Määramata>',alignLeft:'Vasak',alignCenter:'Kesk',alignRight:'Parem',width:'Laius',widthPx:'pikslit',widthPc:'protsenti',height:'Kõrgus',cellSpace:'Lahtri vahe',cellPad:'Lahtri täidis',caption:'Tabeli tiitel',summary:'Kokkuvõte',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Lahter',insertBefore:'Sisesta lahter enne',insertAfter:'Sisesta lahter peale',deleteCell:'Eemalda lahtrid',merge:'Ühenda lahtrid',mergeRight:'Ühenda paremale',mergeDown:'Ühenda alla',splitHorizontal:'Poolita lahter horisontaalselt',splitVertical:'Poolita lahter vertikaalselt',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Rida',insertBefore:'Sisesta rida enne',insertAfter:'Sisesta rida peale',deleteRow:'Eemalda read'},column:{menu:'Veerg',insertBefore:'Sisesta veerg enne',insertAfter:'Sisesta veerg peale',deleteColumn:'Eemalda veerud'}},button:{title:'Nupu omadused',text:'Tekst (väärtus)',type:'Tüüp',typeBtn:'Nupp',typeSbm:'Saada',typeRst:'Lähtesta'},checkboxAndRadio:{checkboxTitle:'Märkeruudu omadused',radioTitle:'Raadionupu omadused',value:'Väärtus',selected:'Valitud'},form:{title:'Vormi omadused',menu:'Vormi omadused',action:'Toiming',method:'Meetod',encoding:'Encoding',target:'Sihtkoht',targetNotSet:'<määramata>',targetNew:'Uus aken (_blank)',targetTop:'Pealmine aken (_top)',targetSelf:'Sama aken (_self)',targetParent:'Esivanem aken (_parent)'},select:{title:'Valiklahtri omadused',selectInfo:'Info',opAvail:'Võimalikud valikud',value:'Väärtus',size:'Suurus',lines:'ridu',chkMulti:'Võimalda mitu valikut',opText:'Tekst',opValue:'Väärtus',btnAdd:'Lisa',btnModify:'Muuda',btnUp:'Üles',btnDown:'Alla',btnSetValue:'Sea valitud olekuna',btnDelete:'Kustuta'},textarea:{title:'Tekstiala omadused',cols:'Veerge',rows:'Ridu'},textfield:{title:'Tekstilahtri omadused',name:'Nimi',value:'Väärtus',charWidth:'Laius (tähemärkides)',maxChars:'Maksimaalselt tähemärke',type:'Tüüp',typeText:'Tekst',typePass:'Parool'},hidden:{title:'Varjatud lahtri omadused',name:'Nimi',value:'Väärtus'},image:{title:'Pildi atribuudid',titleButton:'Piltnupu omadused',menu:'Pildi atribuudid',infoTab:'Pildi info',btnUpload:'Saada serverissee',url:'URL',upload:'Lae üles',alt:'Alternatiivne tekst',width:'Laius',height:'Kõrgus',lockRatio:'Lukusta kuvasuhe',resetSize:'Lähtesta suurus',border:'Joon',hSpace:'H. vaheruum',vSpace:'V. vaheruum',align:'Joondus',alignLeft:'Vasak',alignAbsBottom:'Abs alla',alignAbsMiddle:'Abs keskele',alignBaseline:'Baasjoonele',alignBottom:'Alla',alignMiddle:'Keskele',alignRight:'Paremale',alignTextTop:'Tekstit üles',alignTop:'Üles',preview:'Eelvaade',alertUrl:'Palun kirjuta pildi URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash omadused',propertiesTab:'Properties',title:'Flash omadused',chkPlay:'Automaatne start ',chkLoop:'Korduv',chkMenu:'Võimalda flash menüü',chkFull:'Allow Fullscreen',scale:'Mastaap',scaleAll:'Näita kõike',scaleNoBorder:'Äärist ei ole',scaleFit:'Täpne sobivus',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Joondus',alignLeft:'Vasak',alignAbsBottom:'Abs alla',alignAbsMiddle:'Abs keskele',alignBaseline:'Baasjoonele',alignBottom:'Alla',alignMiddle:'Keskele',alignRight:'Paremale',alignTextTop:'Tekstit üles',alignTop:'Üles',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Tausta värv',width:'Laius',height:'Kõrgus',hSpace:'H. vaheruum',vSpace:'V. vaheruum',validateSrc:'Palun kirjuta lingi URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Kontrolli õigekirja',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Puudub sõnastikust',changeTo:'Muuda',btnIgnore:'Ignoreeri',btnIgnoreAll:'Ignoreeri kõiki',btnReplace:'Asenda',btnReplaceAll:'Asenda kõik',btnUndo:'Võta tagasi',noSuggestions:'- Soovitused puuduvad -',progress:'Toimub õigekirja kontroll...',noMispell:'Õigekirja kontroll sooritatud: õigekirjuvigu ei leitud',noChanges:'Õigekirja kontroll sooritatud: ühtegi sõna ei muudetud',oneChange:'Õigekirja kontroll sooritatud: üks sõna muudeti',manyChanges:'Õigekirja kontroll sooritatud: %1 sõna muudetud',ieSpellDownload:'Õigekirja kontrollija ei ole installeeritud. Soovid sa selle alla laadida?'},smiley:{toolbar:'Emotikon',title:'Sisesta emotikon'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Nummerdatud loetelu',bulletedlist:'Punktiseeritud loetelu',indent:'Suurenda taanet',outdent:'Vähenda taanet',justify:{left:'Vasakjoondus',center:'Keskjoondus',right:'Paremjoondus',block:'Rööpjoondus'},blockquote:'Blokktsitaat',clipboard:{title:'Kleebi',cutError:'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+X).',copyError:'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+C).',pasteMsg:'Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.',securityMsg:'Sinu veebisirvija turvaseadete tõttu, ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead kleepima need uuesti siia aknasse.'},pastefromword:{toolbar:'Kleebi Wordist',title:'Kleebi Wordist',advice:'Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.',ignoreFontFace:'Ignoreeri kirja definitsioone',removeStyle:'Eemalda stiilide definitsioonid'},pasteText:{button:'Kleebi tavalise tekstina',title:'Kleebi tavalise tekstina'},templates:{button:'Šabloon',title:'Sisu šabloonid',insertOption:'Asenda tegelik sisu',selectPromptMsg:'Palun vali šabloon, et avada see redaktoris<br />(praegune sisu läheb kaotsi):',emptyListMsg:'(Ühtegi šablooni ei ole defineeritud)'},showBlocks:'Näita blokke',stylesCombo:{label:'Laad',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Vorming',voiceLabel:'Format',panelTitle:'Vorming',panelVoiceLabel:'Select a paragraph format',tag_p:'Tavaline',tag_pre:'Vormindatud',tag_address:'Aadress',tag_h1:'Pealkiri 1',tag_h2:'Pealkiri 2',tag_h3:'Pealkiri 3',tag_h4:'Pealkiri 4',tag_h5:'Pealkiri 5',tag_h6:'Pealkiri 6',tag_div:'Tavaline (DIV)'},font:{label:'Kiri',voiceLabel:'Font',panelTitle:'Kiri',panelVoiceLabel:'Select a font'},fontSize:{label:'Suurus',voiceLabel:'Font Size',panelTitle:'Suurus',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Teksti värv',bgColorTitle:'Tausta värv',auto:'Automaatne',more:'Rohkem värve...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/hr.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/hr.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/hr.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.hr={dir:'ltr',editorTitle:'Text editor, %1',source:'Kôd',newPage:'Nova stranica',save:'Snimi',preview:'Pregledaj',cut:'Izreži',copy:'Kopiraj',paste:'Zalijepi',print:'Ispiši',underline:'Potcrtano',bold:'Podebljaj',italic:'Ukosi',selectAll:'Odaberi sve',removeFormat:'Ukloni formatiranje',strike:'Precrtano',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Ubaci vodoravnu liniju',pagebreak:'Ubaci prijelom stranice',unlink:'Ukloni link',undo:'Poništi',redo:'Ponovi',common:{browseServer:'Pretraži server',url:'URL',protocol:'Protokol',upload:'Pošalji',uploadSubmit:'Pošalji na server',image:'Slika',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<nije postavljeno>',id:'Id',name:'Naziv',langDir:'Smjer jezika',langDirLtr:'S lijeva na desno (LTR)',langDirRtl:'S desna na lijevo (RTL)',langCode:'Kôd jezika',longDescr:'Dugački opis URL',cssClass:'Stylesheet klase',advisoryTitle:'Advisory naslov',cssStyle:'Stil',ok:'OK',cancel:'Poništi',generalTab:'Općenito',advancedTab:'Napredno',validateNumberFailed:'Ova vrijednost nije broj.',confirmNewPage:'Sve napravljene promjene će biti izgubljene ukoliko ih niste snimili. Sigurno želite učitati novu stranicu?',confirmCancel:'Neke od opcija su promjenjene. Sigurno želite zatvoriti ovaj prozor?',unavailable:'%1<span class="cke_accessibility">, nedostupno</span>'},specialChar:{toolbar:'Ubaci posebne znakove',title:'Odaberite posebni karakter'},link:{toolbar:'Ubaci/promijeni link',menu:'Promijeni link',title:'Link',info:'Link Info',target:'Meta',upload:'Pošalji',advanced:'Napredno',type:'Link vrsta',toAnchor:'Sidro na ovoj stranici',toEmail:'E-Mail',target:'Meta',targetNotSet:'<nije postavljeno>',targetFrame:'<okvir>',targetPopup:'<popup prozor>',targetNew:'Novi prozor (_blank)',targetTop:'Vršni prozor (_top)',targetSelf:'Isti prozor (_self)',targetParent:'Roditeljski prozor (_parent)',targetFrameName:'Ime ciljnog okvira',targetPopupName:'Naziv popup prozora',popupFeatures:'Mogućnosti popup prozora',popupResizable:'Promjenjiva veličina',popupStatusBar:'Statusna traka',popupLocationBar:'Traka za lokaciju',popupToolbar:'Traka s alatima',popupMenuBar:'Izborna traka',popupFullScreen:'Cijeli ekran (IE)',popupScrollBars:'Scroll traka',popupDependent:'Ovisno (Netscape)',popupWidth:'Širina',popupLeft:'Lijeva pozicija',popupHeight:'Visina',popupTop:'Gornja pozicija',id:'Id',langDir:'Smjer jezika',langDirNotSet:'<nije postavljeno>',langDirLTR:'S lijeva na desno (LTR)',langDirRTL:'S desna na lijevo (RTL)',acccessKey:'Pristupna tipka',name:'Naziv',langCode:'Smjer jezika',tabIndex:'Tab Indeks',advisoryTitle:'Advisory naslov',advisoryContentType:'Advisory vrsta sadržaja',cssClasses:'Stylesheet klase',charset:'Kodna stranica povezanih resursa',styles:'Stil',selectAnchor:'Odaberi sidro',anchorName:'Po nazivu sidra',anchorId:'Po Id elementa',emailAddress:'E-Mail adresa',emailSubject:'Naslov',emailBody:'Sadržaj poruke',noAnchors:'(Nema dostupnih sidra)',noUrl:'Molimo upišite URL link',noEmail:'Molimo upišite e-mail adresu'},anchor:{toolbar:'Ubaci/promijeni sidro',menu:'Svojstva sidra',title:'Svojstva sidra',name:'Ime sidra',errorName:'Molimo unesite ime sidra'},findAndReplace:{title:'Pronađi i zamijeni',find:'Pronađi',replace:'Zamijeni',findWhat:'Pronađi:',replaceWith:'Zamijeni s:',notFoundMsg:'Traženi tekst nije pronađen.',matchCase:'Usporedi mala/velika slova',matchWord:'Usporedi cijele riječi',matchCyclic:'Usporedi kružno',replaceAll:'Zamijeni sve',replaceSuccessMsg:'Zamijenjeno %1 pojmova.'},table:{toolbar:'Tablica',title:'Svojstva tablice',menu:'Svojstva tablice',deleteTable:'Izbriši tablicu',rows:'Redova',columns:'Kolona',border:'Veličina okvira',align:'Poravnanje',alignNotSet:'<nije postavljeno>',alignLeft:'Lijevo',alignCenter:'Središnje',alignRight:'Desno',width:'Širina',widthPx:'piksela',widthPc:'postotaka',height:'Visina',cellSpace:'Prostornost ćelija',cellPad:'Razmak ćelija',caption:'Naslov',summary:'Sažetak',headers:'Zaglavlje',headersNone:'Ništa',headersColumn:'Prva kolona',headersRow:'Prvi red',headersBoth:'Oba',invalidRows:'Broj redova mora biti broj veći od 0.',invalidCols:'Broj kolona mora biti broj veći od 0.',invalidBorder:'Debljina ruba mora biti broj.',invalidWidth:'Širina tablice mora biti broj.',invalidHeight:'Visina tablice mora biti broj.',invalidCellSpacing:'Prostornost ćelija mora biti broj.',invalidCellPadding:'Razmak ćelija mora biti broj.',cell:{menu:'Ćelija',insertBefore:'Ubaci ćeliju prije',insertAfter:'Ubaci ćeliju poslije',deleteCell:'Izbriši ćelije',merge:'Spoji ćelije',mergeRight:'Spoji desno',mergeDown:'Spoji dolje',splitHorizontal:'Podijeli ćeliju vodoravno',splitVertical:'Podijeli ćeliju okomito',title:'Svojstva ćelije',cellType:'Vrsta ćelije',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Prelazak u novi red',hAlign:'Vodoravno poravnanje',vAlign:'Okomito poravnanje',alignTop:'Vrh',alignMiddle:'Sredina',alignBottom:'Dolje',alignBaseline:'Osnovna linija',bgColor:'Boja pozadine',borderColor:'Boja ruba',data:'Podatak',header:'Zaglavlje',yes:'Da',no:'ne',invalidWidth:'Širina ćelije mora biti broj.',invalidHeight:'Visina ćelije mora biti broj.',invalidRowSpan:'Rows span mora biti cijeli broj.',invalidColSpan:'Columns span mora biti cijeli broj.',chooseColor:'Choose'},row:{menu:'Red',insertBefore:'Ubaci red prije',insertAfter:'Ubaci red poslije',deleteRow:'Izbriši redove'},column:{menu:'Kolona',insertBefore:'Ubaci kolonu prije',insertAfter:'Ubaci kolonu poslije',deleteColumn:'Izbriši kolone'}},button:{title:'Image Button svojstva',text:'Tekst (vrijednost)',type:'Vrsta',typeBtn:'Gumb',typeSbm:'Pošalji',typeRst:'Poništi'},checkboxAndRadio:{checkboxTitle:'Checkbox svojstva',radioTitle:'Radio Button svojstva',value:'Vrijednost',selected:'Odabrano'},form:{title:'Form svojstva',menu:'Form svojstva',action:'Akcija',method:'Metoda',encoding:'Encoding',target:'Meta',targetNotSet:'<nije postavljeno>',targetNew:'Novi prozor (_blank)',targetTop:'Vršni prozor (_top)',targetSelf:'Isti prozor (_self)',targetParent:'Roditeljski prozor (_parent)'},select:{title:'Selection svojstva',selectInfo:'Info',opAvail:'Dostupne opcije',value:'Vrijednost',size:'Veličina',lines:'linija',chkMulti:'Dozvoli višestruki odabir',opText:'Tekst',opValue:'Vrijednost',btnAdd:'Dodaj',btnModify:'Promijeni',btnUp:'Gore',btnDown:'Dolje',btnSetValue:'Postavi kao odabranu vrijednost',btnDelete:'Obriši'},textarea:{title:'Textarea svojstva',cols:'Kolona',rows:'Redova'},textfield:{title:'Text Field svojstva',name:'Ime',value:'Vrijednost',charWidth:'Širina',maxChars:'Najviše karaktera',type:'Vrsta',typeText:'Tekst',typePass:'Šifra'},hidden:{title:'Hidden Field svojstva',name:'Ime',value:'Vrijednost'},image:{title:'Svojstva slika',titleButton:'Image Button svojstva',menu:'Svojstva slika',infoTab:'Info slike',btnUpload:'Pošalji na server',url:'URL',upload:'Pošalji',alt:'Alternativni tekst',width:'Širina',height:'Visina',lockRatio:'Zaključaj odnos',resetSize:'Obriši veličinu',border:'Okvir',hSpace:'HSpace',vSpace:'VSpace',align:'Poravnaj',alignLeft:'Lijevo',alignAbsBottom:'Abs dolje',alignAbsMiddle:'Abs sredina',alignBaseline:'Bazno',alignBottom:'Dolje',alignMiddle:'Sredina',alignRight:'Desno',alignTextTop:'Vrh teksta',alignTop:'Vrh',preview:'Pregledaj',alertUrl:'Unesite URL slike',linkTab:'Link',button2Img:'Želite li promijeniti odabrani gumb u jednostavnu sliku?',img2Button:'Želite li promijeniti odabranu sliku u gumb?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash svojstva',propertiesTab:'Svojstva',title:'Flash svojstva',chkPlay:'Auto Play',chkLoop:'Ponavljaj',chkMenu:'Omogući Flash izbornik',chkFull:'Omogući Fullscreen',scale:'Omjer',scaleAll:'Prikaži sve',scaleNoBorder:'Bez okvira',scaleFit:'Točna veličina',access:'Script Access',accessAlways:'Uvijek',accessSameDomain:'Ista domena',accessNever:'Nikad',align:'Poravnaj',alignLeft:'Lijevo',alignAbsBottom:'Abs dolje',alignAbsMiddle:'Abs sredina',alignBaseline:'Bazno',alignBottom:'Dolje',alignMiddle:'Sredina',alignRight:'Desno',alignTextTop:'Vrh teksta',alignTop:'Vrh',quality:'Kvaliteta',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Vrsta prozora',flashvars:'Varijable za Flash',bgcolor:'Boja pozadine',width:'Širina',height:'Visina',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Molimo upišite URL link',validateWidth:'Širina mora biti broj.',validateHeight:'Visina mora biti broj.',validateHSpace:'HSpace mora biti broj.',validateVSpace:'VSpace mora biti broj.'},spellCheck:{toolbar:'Provjeri pravopis',title:'Provjera pravopisa',notAvailable:'Žao nam je, ali usluga trenutno nije dostupna.',errorLoading:'Greška učitavanja aplikacije: %s.',notInDic:'Nije u rječniku',changeTo:'Promijeni u',btnIgnore:'Zanemari',btnIgnoreAll:'Zanemari sve',btnReplace:'Zamijeni',btnReplaceAll:'Zamijeni sve',btnUndo:'Vrati',noSuggestions:'-Nema preporuke-',progress:'Provjera u tijeku...',noMispell:'Provjera završena: Nema grešaka',noChanges:'Provjera završena: Nije napravljena promjena',oneChange:'Provjera završena: Jedna riječ promjenjena',manyChanges:'Provjera završena: Promijenjeno %1 riječi',ieSpellDownload:'Provjera pravopisa nije instalirana. Želite li skinuti provjeru pravopisa?'},smiley:{toolbar:'Smješko',title:'Ubaci smješka'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Brojčana lista',bulletedlist:'Obična lista',indent:'Pomakni udesno',outdent:'Pomakni ulijevo',justify:{left:'Lijevo poravnanje',center:'Središnje poravnanje',right:'Desno poravnanje',block:'Blok poravnanje'},blockquote:'Blockquote',clipboard:{title:'Zalijepi',cutError:'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl+X).',copyError:'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl+C).',pasteMsg:'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (<STRONG>Ctrl+V</STRONG>) i kliknite <STRONG>OK</STRONG>.',securityMsg:'Zbog sigurnosnih postavki Vašeg pretraživača, editor nema direktan pristup Vašem međuspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.'},pastefromword:{toolbar:'Zalijepi iz Worda',title:'Zalijepi iz Worda',advice:'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (<STRONG>Ctrl+V</STRONG>) i kliknite <STRONG>OK</STRONG>.',ignoreFontFace:'Zanemari definiciju vrste fonta',removeStyle:'Ukloni definicije stilova'},pasteText:{button:'Zalijepi kao čisti tekst',title:'Zalijepi kao čisti tekst'},templates:{button:'Predlošci',title:'Predlošci sadržaja',insertOption:'Zamijeni trenutne sadržaje',selectPromptMsg:'Molimo odaberite predložak koji želite otvoriti<br>(stvarni sadržaj će biti izgubljen):',emptyListMsg:'(Nema definiranih predložaka)'},showBlocks:'Prikaži blokove',stylesCombo:{label:'Stil',voiceLabel:'Stilovi',panelVoiceLabel:'Odaberite stil',panelTitle1:'Block stilovi',panelTitle2:'Inline stilovi',panelTitle3:'Object stilovi'},format:{label:'Format',voiceLabel:'Format',panelTitle:'Format',panelVoiceLabel:'Odaberite format paragrafa',tag_p:'Normal',tag_pre:'Formatirano',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font',panelVoiceLabel:'Odaberite font'},fontSize:{label:'Veličina',voiceLabel:'Veličina slova',panelTitle:'Veličina',panelVoiceLabel:'Odaberite veličinu slova'},colorButton:{textColorTitle:'Boja teksta',bgColorTitle:'Boja pozadine',auto:'Automatski',more:'Više boja...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Provjeri pravopis tijekom tipkanja (SCAYT)',enable:'Omogući SCAYT',disable:'Onemogući SCAYT',about:'O SCAYT',toggle:'Omoguću/Onemogući SCAYT',options:'Opcije',langs:'Jezici',moreSuggestions:'Više prijedloga',ignore:'Zanemari',ignoreAll:'Zanemari sve',addWord:'Dodaj riječ',emptyDic:'Naziv rječnika ne smije biti prazno.',optionsTab:'Opcije',languagesTab:'Jezici',dictionariesTab:'Rječnici',aboutTab:'O SCAYT'},about:{title:'O CKEditoru',dlgTitle:'O CKEditoru',moreInfo:'Za informacije o licencama posjetite našu web stranicu:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Povećaj',minimize:'Minimize',fakeobjects:{anchor:'Sidro',flash:'Flash animacija',div:'Prijelom stranice',unknown:'Nepoznati objekt'},resize:'Povuci za promjenu veličine',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/nl.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/nl.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/nl.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.nl={dir:'ltr',editorTitle:'Tekstverwerker, %1',source:'Code',newPage:'Nieuwe pagina',save:'Opslaan',preview:'Voorbeeld',cut:'Knippen',copy:'Kopiëren',paste:'Plakken',print:'Printen',underline:'Onderstreept',bold:'Vet',italic:'Schuingedrukt',selectAll:'Alles selecteren',removeFormat:'Opmaak verwijderen',strike:'Doorhalen',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Horizontale lijn invoegen',pagebreak:'Pagina-einde invoegen',unlink:'Link verwijderen',undo:'Ongedaan maken',redo:'Opnieuw uitvoeren',common:{browseServer:'Bladeren op server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Naar server verzenden',image:'Afbeelding',flash:'Flash',form:'Formulier',checkbox:'Aanvinkvakje',radio:'Selectievakje',textField:'Tekstveld',textarea:'Tekstvak',hiddenField:'Verborgen veld',button:'Knop',select:'Selectieveld',imageButton:'Afbeeldingsknop',notSet:'<niet ingevuld>',id:'Kenmerk',name:'Naam',langDir:'Schrijfrichting',langDirLtr:'Links naar rechts (LTR)',langDirRtl:'Rechts naar links (RTL)',langCode:'Taalcode',longDescr:'Lange URL-omschrijving',cssClass:'Stylesheet-klassen',advisoryTitle:'Aanbevolen titel',cssStyle:'Stijl',ok:'OK',cancel:'Annuleren',generalTab:'Algemeen',advancedTab:'Geavanceerd',validateNumberFailed:'Deze waarde is geen geldig getal.',confirmNewPage:'Alle aangebrachte wijzigingen gaan verloren. Weet u zeker dat u een nieuwe pagina wilt openen?',confirmCancel:'Enkele opties zijn gewijzigd. Weet u zeker dat u dit dialoogvenster wilt sluiten?',unavailable:'%1<span class="cke_accessibility">, niet beschikbaar</span>'},specialChar:{toolbar:'Speciaal teken invoegen',title:'Selecteer speciaal teken'},link:{toolbar:'Link invoegen/wijzigen',menu:'Link wijzigen',title:'Link',info:'Linkomschrijving',target:'Doel',upload:'Upload',advanced:'Geavanceerd',type:'Linktype',toAnchor:'Interne link in pagina',toEmail:'E-mail',target:'Doel',targetNotSet:'<niet ingevuld>',targetFrame:'<frame>',targetPopup:'<popup window>',targetNew:'Nieuw venster (_blank)',targetTop:'Hele venster (_top)',targetSelf:'Zelfde venster (_self)',targetParent:'Origineel venster (_parent)',targetFrameName:'Naam doelframe',targetPopupName:'Naam popupvenster',popupFeatures:'Instellingen popupvenster',popupResizable:'Herschaalbaar',popupStatusBar:'Statusbalk',popupLocationBar:'Locatiemenu',popupToolbar:'Menubalk',popupMenuBar:'Menubalk',popupFullScreen:'Volledig scherm (IE)',popupScrollBars:'Schuifbalken',popupDependent:'Afhankelijk (Netscape)',popupWidth:'Breedte',popupLeft:'Positie links',popupHeight:'Hoogte',popupTop:'Positie boven',id:'Id',langDir:'Schrijfrichting',langDirNotSet:'<niet ingevuld>',langDirLTR:'Links naar rechts (LTR)',langDirRTL:'Rechts naar links (RTL)',acccessKey:'Toegangstoets',name:'Naam',langCode:'Schrijfrichting',tabIndex:'Tabvolgorde',advisoryTitle:'Aanbevolen titel',advisoryContentType:'Aanbevolen content-type',cssClasses:'Stylesheet-klassen',charset:'Karakterset van gelinkte bron',styles:'Stijl',selectAnchor:'Kies een interne link',anchorName:'Op naam interne link',anchorId:'Op kenmerk interne link',emailAddress:'E-mailadres',emailSubject:'Onderwerp bericht',emailBody:'Inhoud bericht',noAnchors:'(Geen interne links in document gevonden)',noUrl:'Geef de link van de URL',noEmail:'Geef een e-mailadres'},anchor:{toolbar:'Interne link',menu:'Eigenschappen interne link',title:'Eigenschappen interne link',name:'Naam interne link',errorName:'Geef de naam van de interne link op'},findAndReplace:{title:'Zoeken en vervangen',find:'Zoeken',replace:'Vervangen',findWhat:'Zoeken naar:',replaceWith:'Vervangen met:',notFoundMsg:'De opgegeven tekst is niet gevonden.',matchCase:'Hoofdlettergevoelig',matchWord:'Hele woord moet voorkomen',matchCyclic:'Doorlopend zoeken',replaceAll:'Alles vervangen',replaceSuccessMsg:'%1 resulaten vervangen.'},table:{toolbar:'Tabel',title:'Eigenschappen tabel',menu:'Eigenschappen tabel',deleteTable:'Tabel verwijderen',rows:'Rijen',columns:'Kolommen',border:'Breedte rand',align:'Uitlijning',alignNotSet:'<Niet ingevoerd>',alignLeft:'Links',alignCenter:'Centreren',alignRight:'Rechts',width:'Breedte',widthPx:'pixels',widthPc:'procent',height:'Hoogte',cellSpace:'Afstand tussen cellen',cellPad:'Ruimte in de cel',caption:'Naam',summary:'Samenvatting',headers:'Koppen',headersNone:'Geen',headersColumn:'Eerste kolom',headersRow:'Eerste rij',headersBoth:'Beide',invalidRows:'Het aantal rijen moet een getal zijn groter dan 0.',invalidCols:'Het aantal kolommen moet een getal zijn groter dan 0.',invalidBorder:'De rand breedte moet een getal zijn.',invalidWidth:'De tabel breedte moet een getal zijn.',invalidHeight:'De tabel hoogte moet een getal zijn.',invalidCellSpacing:'Afstand tussen cellen moet een getal zijn.',invalidCellPadding:'Ruimte in de cel moet een getal zijn.',cell:{menu:'Cel',insertBefore:'Voeg cel in voor',insertAfter:'Voeg cel in achter',deleteCell:'Cellen verwijderen',merge:'Cellen samenvoegen',mergeRight:'Voeg samen naar rechts',mergeDown:'Voeg samen naar beneden',splitHorizontal:'Splits cellen horizontaal',splitVertical:'Splits cellen verticaal',title:'Cel eigenschappen',cellType:'Cel type',rowSpan:'Rijen samenvoegen',colSpan:'Kolommen samenvoegen',wordWrap:'Automatische terugloop',hAlign:'Horizontale uitlijning',vAlign:'Verticale uitlijning',alignTop:'Boven',alignMiddle:'Midden',alignBottom:'Onder',alignBaseline:'Basislijn',bgColor:'Achtergrondkleur',borderColor:'Kleur rand',data:'Inhoud',header:'Kop',yes:'Ja',no:'Nee',invalidWidth:'De celbreedte moet een getal zijn.',invalidHeight:'De celhoogte moet een getal zijn.',invalidRowSpan:'Rijen samenvoegen moet een heel getal zijn.',invalidColSpan:'Kolommen samenvoegen moet een heel getal zijn.',chooseColor:'Choose'},row:{menu:'Rij',insertBefore:'Voeg rij in voor',insertAfter:'Voeg rij in achter',deleteRow:'Rijen verwijderen'},column:{menu:'Kolom',insertBefore:'Voeg kolom in voor',insertAfter:'Voeg kolom in achter',deleteColumn:'Kolommen verwijderen'}},button:{title:'Eigenschappen knop',text:'Tekst (waarde)',type:'Soort',typeBtn:'Knop',typeSbm:'Versturen',typeRst:'Leegmaken'},checkboxAndRadio:{checkboxTitle:'Eigenschappen aanvinkvakje',radioTitle:'Eigenschappen selectievakje',value:'Waarde',selected:'Geselecteerd'},form:{title:'Eigenschappen formulier',menu:'Eigenschappen formulier',action:'Actie',method:'Methode',encoding:'Codering',target:'Doel',targetNotSet:'<niet ingevuld>',targetNew:'Nieuw venster (_blank)',targetTop:'Hele venster (_top)',targetSelf:'Zelfde venster (_self)',targetParent:'Origineel venster (_parent)'},select:{title:'Eigenschappen selectieveld',selectInfo:'Informatie',opAvail:'Beschikbare opties',value:'Waarde',size:'Grootte',lines:'Regels',chkMulti:'Gecombineerde selecties toestaan',opText:'Tekst',opValue:'Waarde',btnAdd:'Toevoegen',btnModify:'Wijzigen',btnUp:'Omhoog',btnDown:'Omlaag',btnSetValue:'Als geselecteerde waarde instellen',btnDelete:'Verwijderen'},textarea:{title:'Eigenschappen tekstvak',cols:'Kolommen',rows:'Rijen'},textfield:{title:'Eigenschappen tekstveld',name:'Naam',value:'Waarde',charWidth:'Breedte (tekens)',maxChars:'Maximum aantal tekens',type:'Soort',typeText:'Tekst',typePass:'Wachtwoord'},hidden:{title:'Eigenschappen verborgen veld',name:'Naam',value:'Waarde'},image:{title:'Eigenschappen afbeelding',titleButton:'Eigenschappen afbeeldingsknop',menu:'Eigenschappen afbeelding',infoTab:'Informatie afbeelding',btnUpload:'Naar server verzenden',url:'URL',upload:'Upload',alt:'Alternatieve tekst',width:'Breedte',height:'Hoogte',lockRatio:'Afmetingen vergrendelen',resetSize:'Afmetingen resetten',border:'Rand',hSpace:'HSpace',vSpace:'VSpace',align:'Uitlijning',alignLeft:'Links',alignAbsBottom:'Absoluut-onder',alignAbsMiddle:'Absoluut-midden',alignBaseline:'Basislijn',alignBottom:'Beneden',alignMiddle:'Midden',alignRight:'Rechts',alignTextTop:'Boven tekst',alignTop:'Boven',preview:'Voorbeeld',alertUrl:'Geef de URL van de afbeelding',linkTab:'Link',button2Img:'Wilt u de geselecteerde afbeeldingsknop vervangen door een eenvoudige afbeelding?',img2Button:'Wilt u de geselecteerde afbeelding vervangen door een afbeeldingsknop?',urlMissing:'Image source URL is missing.'},flash:{properties:'Eigenschappen Flash',propertiesTab:'Eigenschappen',title:'Eigenschappen Flash',chkPlay:'Automatisch afspelen',chkLoop:'Herhalen',chkMenu:"Flashmenu's inschakelen",chkFull:'Schermvullend toestaan',scale:'Schaal',scaleAll:'Alles tonen',scaleNoBorder:'Geen rand',scaleFit:'Precies passend',access:'Script toegang',accessAlways:'Altijd',accessSameDomain:'Zelfde domeinnaam',accessNever:'Nooit',align:'Uitlijning',alignLeft:'Links',alignAbsBottom:'Absoluut-onder',alignAbsMiddle:'Absoluut-midden',alignBaseline:'Basislijn',alignBottom:'Beneden',alignMiddle:'Midden',alignRight:'Rechts',alignTextTop:'Boven tekst',alignTop:'Boven',quality:'Kwaliteit',qualityBest:'Beste',qualityHigh:'Hoog',qualityAutoHigh:'Automatisch hoog',qualityMedium:'Gemiddeld',qualityAutoLow:'Automatisch laag',qualityLow:'Laag',windowModeWindow:'Venster',windowModeOpaque:'Ondoorzichtig',windowModeTransparent:'Doorzichtig',windowMode:'Venster modus',flashvars:'Variabelen voor Flash',bgcolor:'Achtergrondkleur',width:'Breedte',height:'Hoogte',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Geef de link van de URL',validateWidth:'De breedte moet een getal zijn.',validateHeight:'De hoogte moet een getal zijn.',validateHSpace:'De HSpace moet een getal zijn.',validateVSpace:'De VSpace moet een getal zijn.'},spellCheck:{toolbar:'Spellingscontrole',title:'Spellingscontrole',notAvailable:'Excuses, deze dienst is momenteel niet beschikbaar.',errorLoading:'Er is een fout opgetreden bij het laden van de diesnt: %s.',notInDic:'Niet in het woordenboek',changeTo:'Wijzig in',btnIgnore:'Negeren',btnIgnoreAll:'Alles negeren',btnReplace:'Vervangen',btnReplaceAll:'Alles vervangen',btnUndo:'Ongedaan maken',noSuggestions:'-Geen suggesties-',progress:'Bezig met spellingscontrole...',noMispell:'Klaar met spellingscontrole: geen fouten gevonden',noChanges:'Klaar met spellingscontrole: geen woorden aangepast',oneChange:'Klaar met spellingscontrole: één woord aangepast',manyChanges:'Klaar met spellingscontrole: %1 woorden aangepast',ieSpellDownload:'De spellingscontrole niet geïnstalleerd. Wilt u deze nu downloaden?'},smiley:{toolbar:'Smiley',title:'Smiley invoegen'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Genummerde lijst',bulletedlist:'Opsomming',indent:'Inspringen vergroten',outdent:'Inspringen verkleinen',justify:{left:'Links uitlijnen',center:'Centreren',right:'Rechts uitlijnen',block:'Uitvullen'},blockquote:'Citaatblok',clipboard:{title:'Plakken',cutError:'De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl+X van het toetsenbord.',copyError:'De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl+C van het toetsenbord.',pasteMsg:'Plak de tekst in het volgende vak gebruik makend van uw toetsenbord (<strong>Ctrl+V</strong>) en klik op <strong>OK</strong>.',securityMsg:'Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.'},pastefromword:{toolbar:'Plakken als Word-gegevens',title:'Plakken als Word-gegevens',advice:'Plak de tekst in het volgende vak gebruik makend van uw toetsenbord (<strong>Ctrl+V</strong>) en klik op <strong>OK</strong>.',ignoreFontFace:'Negeer "Font Face"-definities',removeStyle:'Verwijder "Style"-definities'},pasteText:{button:'Plakken als platte tekst',title:'Plakken als platte tekst'},templates:{button:'Sjablonen',title:'Inhoud sjabonen',insertOption:'Vervang de huidige inhoud',selectPromptMsg:'Selecteer het sjabloon dat in de editor geopend moet worden (de actuele inhoud gaat verloren):',emptyListMsg:'(Geen sjablonen gedefinieerd)'},showBlocks:'Toon blokken',stylesCombo:{label:'Stijl',voiceLabel:'Stijl',panelVoiceLabel:'Selecteer een stijl',panelTitle1:'Blok stijlen',panelTitle2:'In-line stijlen',panelTitle3:'Object stijlen'},format:{label:'Opmaak',voiceLabel:'Opmaak',panelTitle:'Opmaak',panelVoiceLabel:'Selecteer een alinea-opmaak',tag_p:'Normaal',tag_pre:'Met opmaak',tag_address:'Adres',tag_h1:'Kop 1',tag_h2:'Kop 2',tag_h3:'Kop 3',tag_h4:'Kop 4',tag_h5:'Kop 5',tag_h6:'Kop 6',tag_div:'Normaal (DIV)'},font:{label:'Lettertype',voiceLabel:'Lettertype',panelTitle:'Lettertype',panelVoiceLabel:'Selecteer een lettertype'},fontSize:{label:'Lettergrootte',voiceLabel:'Lettergrootte',panelTitle:'Lettergrootte',panelVoiceLabel:'Selecteer een lettergrootte'},colorButton:{textColorTitle:'Tekstkleur',bgColorTitle:'Achtergrondkleur',auto:'Automatisch',more:'Meer kleuren...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Controleer de spelling tijdens het typen',enable:'SCAYT inschakelen',disable:'SCAYT uitschakelen',about:'Over SCAYT',toggle:'SCAYT in/uitschakelen',options:'Opties',langs:'Talen',moreSuggestions:'Meer suggesties',ignore:'Negeren',ignoreAll:'Alles negeren',addWord:'Woord toevoegen',emptyDic:'De naam van het woordenboek mag niet leeg zijn.',optionsTab:'Opties',languagesTab:'Talen',dictionariesTab:'Woordenboeken',aboutTab:'Over'},about:{title:'Over CKEditor',dlgTitle:'Over CKEditor',moreInfo:'Voor licentie informatie, bezoek onze website:',copy:'Copyright &copy; $1. Alle rechten voorbehouden.'},maximize:'Maximaliseren',minimize:'Minimize',fakeobjects:{anchor:'Anker',flash:'Flash animatie',div:'Pagina einde',unknown:'Onbekend object'},resize:'Sleep om te herschalen',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/mn.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/mn.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/mn.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.mn={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Код',newPage:'Шинэ хуудас',save:'Хадгалах',preview:'Уридчлан харах',cut:'Хайчлах',copy:'Хуулах',paste:'Буулгах',print:'Хэвлэх',underline:'Доогуур нь зураастай болгох',bold:'Тод бүдүүн',italic:'Налуу',selectAll:'Бүгдийг нь сонгох',removeFormat:'Формат авч хаях',strike:'Дундуур нь зураастай болгох',subscript:'Суурь болгох',superscript:'Зэрэг болгох',horizontalrule:'Хөндлөн зураас оруулах',pagebreak:'Хуудас тусгаарлагч оруулах',unlink:'Линк авч хаях',undo:'Хүчингүй болгох',redo:'Өмнөх үйлдлээ сэргээх',common:{browseServer:'Сервер харуулах',url:'URL',protocol:'Протокол',upload:'Хуулах',uploadSubmit:'Үүнийг сервэррүү илгээ',image:'Зураг',flash:'Флаш',form:'Форм',checkbox:'Чекбокс',radio:'Радио товч',textField:'Техт талбар',textarea:'Техт орчин',hiddenField:'Нууц талбар',button:'Товч',select:'Сонгогч талбар',imageButton:'Зурагтай товч',notSet:'<Оноохгүй>',id:'Id',name:'Нэр',langDir:'Хэлний чиглэл',langDirLtr:'Зүүнээс баруун (LTR)',langDirRtl:'Баруунаас зүүн (RTL)',langCode:'Хэлний код',longDescr:'URL-ын тайлбар',cssClass:'Stylesheet классууд',advisoryTitle:'Зөвлөлдөх гарчиг',cssStyle:'Загвар',ok:'OK',cancel:'Болих',generalTab:'General',advancedTab:'Нэмэлт',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Онцгой тэмдэгт оруулах',title:'Онцгой тэмдэгт сонгох'},link:{toolbar:'Линк Оруулах/Засварлах',menu:'Холбоос засварлах',title:'Линк',info:'Линкийн мэдээлэл',target:'Байрлал',upload:'Хуулах',advanced:'Нэмэлт',type:'Линкийн төрөл',toAnchor:'Энэ хуудасандах холбоос',toEmail:'E-Mail',target:'Байрлал',targetNotSet:'<Оноохгүй>',targetFrame:'<Агуулах хүрээ>',targetPopup:'<popup цонх>',targetNew:'Шинэ цонх (_blank)',targetTop:'Хамгийн түрүүн байх цонх (_top)',targetSelf:'Төстэй цонх (_self)',targetParent:'Эцэг цонх (_parent)',targetFrameName:'Очих фремын нэр',targetPopupName:'Popup цонхны нэр',popupFeatures:'Popup цонхны онцлог',popupResizable:'Resizable',popupStatusBar:'Статус хэсэг',popupLocationBar:'Location хэсэг',popupToolbar:'Багажны хэсэг',popupMenuBar:'Meню хэсэг',popupFullScreen:'Цонх дүүргэх (IE)',popupScrollBars:'Скрол хэсэгүүд',popupDependent:'Хамаатай (Netscape)',popupWidth:'Өргөн',popupLeft:'Зүүн байрлал',popupHeight:'Өндөр',popupTop:'Дээд байрлал',id:'Id',langDir:'Хэлний чиглэл',langDirNotSet:'<Оноохгүй>',langDirLTR:'Зүүнээс баруун (LTR)',langDirRTL:'Баруунаас зүүн (RTL)',acccessKey:'Холбох түлхүүр',name:'Нэр',langCode:'Хэлний чиглэл',tabIndex:'Tab индекс',advisoryTitle:'Зөвлөлдөх гарчиг',advisoryContentType:'Зөвлөлдөх төрлийн агуулга',cssClasses:'Stylesheet классууд',charset:'Тэмдэгт оноох нөөцөд холбогдсон',styles:'Загвар',selectAnchor:'Холбоос сонгох',anchorName:'Холбоосын нэрээр',anchorId:'Элемэнт Id-гаар',emailAddress:'E-Mail Хаяг',emailSubject:'Message гарчиг',emailBody:'Message-ийн агуулга',noAnchors:'(Баримт бичиг холбоосгүй байна)',noUrl:'Линк URL-ээ төрөлжүүлнэ үү',noEmail:'Е-mail хаягаа төрөлжүүлнэ үү'},anchor:{toolbar:'Холбоос Оруулах/Засварлах',menu:'Холбоос шинж чанар',title:'Холбоос шинж чанар',name:'Холбоос нэр',errorName:'Холбоос төрөл оруулна уу'},findAndReplace:{title:'Хай мөн Дарж бич',find:'Хайх',replace:'Солих',findWhat:'Хайх үг/үсэг:',replaceWith:'Солих үг:',notFoundMsg:'Хайсан текст олсонгүй.',matchCase:'Тэнцэх төлөв',matchWord:'Тэнцэх бүтэн үг',matchCyclic:'Match cyclic',replaceAll:'Бүгдийг нь Солих',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Хүснэгт',title:'Хүснэгт',menu:'Хүснэгт',deleteTable:'Хүснэгт устгах',rows:'Мөр',columns:'Багана',border:'Хүрээний хэмжээ',align:'Эгнээ',alignNotSet:'<Оноохгүй>',alignLeft:'Зүүн талд',alignCenter:'Төвд',alignRight:'Баруун талд',width:'Өргөн',widthPx:'цэг',widthPc:'хувь',height:'Өндөр',cellSpace:'Нүх хоорондын зай (spacing)',cellPad:'Нүх доторлох(padding)',caption:'Тайлбар',summary:'Тайлбар',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Нүх/зай',insertBefore:'Нүх/зай өмнө нь оруулах',insertAfter:'Нүх/зай дараа нь оруулах',deleteCell:'Нүх устгах',merge:'Нүх нэгтэх',mergeRight:'Баруун тийш нэгтгэх',mergeDown:'Доош нэгтгэх',splitHorizontal:'Нүх/зайг босоогоор нь тусгаарлах',splitVertical:'Нүх/зайг хөндлөнгөөр нь тусгаарлах',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Мөр',insertBefore:'Мөр өмнө нь оруулах',insertAfter:'Мөр дараа нь оруулах',deleteRow:'Мөр устгах'},column:{menu:'Багана',insertBefore:'Багана өмнө нь оруулах',insertAfter:'Багана дараа нь оруулах',deleteColumn:'Багана устгах'}},button:{title:'Товчны шинж чанар',text:'Тэкст (Утга)',type:'Төрөл',typeBtn:'Товч',typeSbm:'Submit',typeRst:'Болих'},checkboxAndRadio:{checkboxTitle:'Чекбоксны шинж чанар',radioTitle:'Радио товчны шинж чанар',value:'Утга',selected:'Сонгогдсон'},form:{title:'Форм шинж чанар',menu:'Форм шинж чанар',action:'Үйлдэл',method:'Арга',encoding:'Encoding',target:'Байрлал',targetNotSet:'<Оноохгүй>',targetNew:'Шинэ цонх (_blank)',targetTop:'Хамгийн түрүүн байх цонх (_top)',targetSelf:'Төстэй цонх (_self)',targetParent:'Эцэг цонх (_parent)'},select:{title:'Согогч талбарын шинж чанар',selectInfo:'Мэдээлэл',opAvail:'Идвэхтэй сонголт',value:'Утга',size:'Хэмжээ',lines:'Мөр',chkMulti:'Олон сонголт зөвшөөрөх',opText:'Тэкст',opValue:'Утга',btnAdd:'Нэмэх',btnModify:'Өөрчлөх',btnUp:'Дээш',btnDown:'Доош',btnSetValue:'Сонгогдсан утга оноох',btnDelete:'Устгах'},textarea:{title:'Текст орчны шинж чанар',cols:'Багана',rows:'Мөр'},textfield:{title:'Текст талбарын шинж чанар',name:'Нэр',value:'Утга',charWidth:'Тэмдэгтын өргөн',maxChars:'Хамгийн их тэмдэгт',type:'Төрөл',typeText:'Текст',typePass:'Нууц үг'},hidden:{title:'Нууц талбарын шинж чанар',name:'Нэр',value:'Утга'},image:{title:'Зураг',titleButton:'Зурган товчны шинж чанар',menu:'Зураг',infoTab:'Зурагны мэдээлэл',btnUpload:'Үүнийг сервэррүү илгээ',url:'URL',upload:'Хуулах',alt:'Тайлбар текст',width:'Өргөн',height:'Өндөр',lockRatio:'Радио түгжих',resetSize:'хэмжээ дахин оноох',border:'Хүрээ',hSpace:'Хөндлөн зай',vSpace:'Босоо зай',align:'Эгнээ',alignLeft:'Зүүн',alignAbsBottom:'Abs доод талд',alignAbsMiddle:'Abs Дунд талд',alignBaseline:'Baseline',alignBottom:'Доод талд',alignMiddle:'Дунд талд',alignRight:'Баруун',alignTextTop:'Текст дээр',alignTop:'Дээд талд',preview:'Уридчлан харах',alertUrl:'Зурагны URL-ын төрлийн сонгоно уу',linkTab:'Линк',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Флаш шинж чанар',propertiesTab:'Properties',title:'Флаш  шинж чанар',chkPlay:'Автоматаар тоглох',chkLoop:'Давтах',chkMenu:'Флаш цэс идвэхжүүлэх',chkFull:'Allow Fullscreen',scale:'Өргөгтгөх',scaleAll:'Бүгдийг харуулах',scaleNoBorder:'Хүрээгүй',scaleFit:'Яг тааруулах',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Эгнээ',alignLeft:'Зүүн',alignAbsBottom:'Abs доод талд',alignAbsMiddle:'Abs Дунд талд',alignBaseline:'Baseline',alignBottom:'Доод талд',alignMiddle:'Дунд талд',alignRight:'Баруун',alignTextTop:'Текст дээр',alignTop:'Дээд талд',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Фонны өнгө',width:'Өргөн',height:'Өндөр',hSpace:'Хөндлөн зай',vSpace:'Босоо зай',validateSrc:'Линк URL-ээ төрөлжүүлнэ үү',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Үгийн дүрэх шалгах',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Толь бичиггүй',changeTo:'Өөрчлөх',btnIgnore:'Зөвшөөрөх',btnIgnoreAll:'Бүгдийг зөвшөөрөх',btnReplace:'Дарж бичих',btnReplaceAll:'Бүгдийг Дарж бичих',btnUndo:'Буцаах',noSuggestions:'- Тайлбаргүй -',progress:'Дүрэм шалгаж байгаа үйл явц...',noMispell:'Дүрэм шалгаад дууссан: Алдаа олдсонгүй',noChanges:'Дүрэм шалгаад дууссан: үг өөрчлөгдөөгүй',oneChange:'Дүрэм шалгаад дууссан: 1 үг өөрчлөгдсөн',manyChanges:'Дүрэм шалгаад дууссан: %1 үг өөрчлөгдсөн',ieSpellDownload:'Дүрэм шалгагч суугаагүй байна. Татаж авахыг хүсч байна уу?'},smiley:{toolbar:'Тодорхойлолт',title:'Тодорхойлолт оруулах'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Дугаарлагдсан жагсаалт',bulletedlist:'Цэгтэй жагсаалт',indent:'Догол мөр хасах',outdent:'Догол мөр нэмэх',justify:{left:'Зүүн талд байрлуулах',center:'Төвд байрлуулах',right:'Баруун талд байрлуулах',block:'Блок хэлбэрээр байрлуулах'},blockquote:'Хайрцаглах',clipboard:{title:'Буулгах',cutError:'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl+X) товчны хослолыг ашиглана уу.',copyError:'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl+C) товчны хослолыг ашиглана уу.',pasteMsg:'(<strong>Ctrl+V</strong>) товчийг ашиглан paste хийнэ үү. Мөн <strong>OK</strong> дар.',securityMsg:'Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.'},pastefromword:{toolbar:'Word-оос буулгах',title:'Word-оос буулгах',advice:'(<strong>Ctrl+V</strong>) товчийг ашиглан paste хийнэ үү. Мөн <strong>OK</strong> дар.',ignoreFontFace:'Тодорхойлогдсон Font Face зөвшөөрнө',removeStyle:'Тодорхойлогдсон загварыг авах'},pasteText:{button:'Plain Text-ээс буулгах',title:'Plain Text-ээс буулгах'},templates:{button:'Загварууд',title:'Загварын агуулга',insertOption:'Одоогийн агууллагыг дарж бичих',selectPromptMsg:'Загварыг нээж editor-рүү сонгож оруулна уу<br />(Одоогийн агууллагыг устаж магадгүй):',emptyListMsg:'(Загвар тодорхойлогдоогүй байна)'},showBlocks:'Block-уудыг үзүүлэх',stylesCombo:{label:'Загвар',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Формат',voiceLabel:'Format',panelTitle:'Формат',panelVoiceLabel:'Select a paragraph format',tag_p:'Хэвийн',tag_pre:'Formatted',tag_address:'Хаяг',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Paragraph (DIV)'},font:{label:'Фонт',voiceLabel:'Font',panelTitle:'Фонт',panelVoiceLabel:'Select a font'},fontSize:{label:'Хэмжээ',voiceLabel:'Font Size',panelTitle:'Хэмжээ',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Фонтны өнгө',bgColorTitle:'Фонны өнгө',auto:'Автоматаар',more:'Нэмэлт өнгөнүүд...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/pl.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/pl.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/pl.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.pl={dir:'ltr',editorTitle:'Wzbogacony edytor treści, %1',source:'Źródło dokumentu',newPage:'Nowa strona',save:'Zapisz',preview:'Podgląd',cut:'Wytnij',copy:'Kopiuj',paste:'Wklej',print:'Drukuj',underline:'Podkreślenie',bold:'Pogrubienie',italic:'Kursywa',selectAll:'Zaznacz wszystko',removeFormat:'Usuń formatowanie',strike:'Przekreślenie',subscript:'Indeks dolny',superscript:'Indeks górny',horizontalrule:'Wstaw poziomą linię',pagebreak:'Wstaw odstęp',unlink:'Usuń hiperłącze',undo:'Cofnij',redo:'Ponów',common:{browseServer:'Przeglądaj',url:'Adres URL',protocol:'Protokół',upload:'Wyślij',uploadSubmit:'Wyślij',image:'Obrazek',flash:'Flash',form:'Formularz',checkbox:'Pole wyboru (checkbox)',radio:'Pole wyboru (radio)',textField:'Pole tekstowe',textarea:'Obszar tekstowy',hiddenField:'Pole ukryte',button:'Przycisk',select:'Lista wyboru',imageButton:'Przycisk-obrazek',notSet:'<nie ustawione>',id:'Id',name:'Nazwa',langDir:'Kierunek tekstu',langDirLtr:'Od lewej do prawej (LTR)',langDirRtl:'Od prawej do lewej (RTL)',langCode:'Kod języka',longDescr:'Długi opis hiperłącza',cssClass:'Nazwa klasy CSS',advisoryTitle:'Opis obiektu docelowego',cssStyle:'Styl',ok:'OK',cancel:'Anuluj',generalTab:'Ogólne',advancedTab:'Zaawansowane',validateNumberFailed:'Ta wartość nie jest liczbą.',confirmNewPage:'Wszystkie niezapisane zmiany zostaną utracone. Czy na pewno wczytać nową stronę?',confirmCancel:'Pewne opcje zostały zmienione. Czy na pewno zamknąć okno dialogowe?',unavailable:'%1<span class="cke_accessibility">, niedostępne</span>'},specialChar:{toolbar:'Wstaw znak specjalny',title:'Wybierz znak specjalny'},link:{toolbar:'Wstaw/edytuj hiperłącze',menu:'Edytuj hiperłącze',title:'Hiperłącze',info:'Informacje ',target:'Cel',upload:'Wyślij',advanced:'Zaawansowane',type:'Typ hiperłącza',toAnchor:'Odnośnik wewnątrz strony',toEmail:'Adres e-mail',target:'Cel',targetNotSet:'<nie ustawione>',targetFrame:'<ramka>',targetPopup:'<wyskakujące okno>',targetNew:'Nowe okno (_blank)',targetTop:'Okno najwyższe w hierarchii (_top)',targetSelf:'To samo okno (_self)',targetParent:'Okno nadrzędne (_parent)',targetFrameName:'Nazwa Ramki Docelowej',targetPopupName:'Nazwa wyskakującego okna',popupFeatures:'Właściwości wyskakującego okna',popupResizable:'Skalowalny',popupStatusBar:'Pasek statusu',popupLocationBar:'Pasek adresu',popupToolbar:'Pasek narzędzi',popupMenuBar:'Pasek menu',popupFullScreen:'Pełny ekran (IE)',popupScrollBars:'Paski przewijania',popupDependent:'Okno zależne (Netscape)',popupWidth:'Szerokość',popupLeft:'Pozycja w poziomie',popupHeight:'Wysokość',popupTop:'Pozycja w pionie',id:'Id',langDir:'Kierunek tekstu',langDirNotSet:'<nie ustawione>',langDirLTR:'Od lewej do prawej (LTR)',langDirRTL:'Od prawej do lewej (RTL)',acccessKey:'Klawisz dostępu',name:'Nazwa',langCode:'Kierunek tekstu',tabIndex:'Indeks tabeli',advisoryTitle:'Opis obiektu docelowego',advisoryContentType:'Typ MIME obiektu docelowego',cssClasses:'Nazwa klasy CSS',charset:'Kodowanie znaków obiektu docelowego',styles:'Styl',selectAnchor:'Wybierz etykietę',anchorName:'Wg etykiety',anchorId:'Wg identyfikatora elementu',emailAddress:'Adres e-mail',emailSubject:'Temat',emailBody:'Treść',noAnchors:'(W dokumencie nie zdefiniowano żadnych etykiet)',noUrl:'Podaj adres URL',noEmail:'Podaj adres e-mail'},anchor:{toolbar:'Wstaw/edytuj kotwicę',menu:'Właściwości kotwicy',title:'Właściwości kotwicy',name:'Nazwa kotwicy',errorName:'Wpisz nazwę kotwicy'},findAndReplace:{title:'Znajdź i zamień',find:'Znajdź',replace:'Zamień',findWhat:'Znajdź:',replaceWith:'Zastąp przez:',notFoundMsg:'Nie znaleziono szukanego hasła.',matchCase:'Uwzględnij wielkość liter',matchWord:'Całe słowa',matchCyclic:'Cykliczne dopasowanie',replaceAll:'Zastąp wszystko',replaceSuccessMsg:'%1 wystąpień zastąpionych.'},table:{toolbar:'Tabela',title:'Właściwości tabeli',menu:'Właściwości tabeli',deleteTable:'Usuń tabelę',rows:'Liczba wierszy',columns:'Liczba kolumn',border:'Grubość ramki',align:'Wyrównanie',alignNotSet:'<brak ustawień>',alignLeft:'Do lewej',alignCenter:'Do środka',alignRight:'Do prawej',width:'Szerokość',widthPx:'piksele',widthPc:'%',height:'Wysokość',cellSpace:'Odstęp pomiędzy komórkami',cellPad:'Margines wewnętrzny komórek',caption:'Tytuł',summary:'Podsumowanie',headers:'Nagłowki',headersNone:'Brak',headersColumn:'Pierwsza kolumna',headersRow:'Pierwszy wiersz',headersBoth:'Oba',invalidRows:'Liczba wierszy musi być liczbą większą niż 0.',invalidCols:'Liczba kolumn musi być liczbą większą niż 0.',invalidBorder:'Liczba obramowań musi być liczbą.',invalidWidth:'Szerokość tabeli musi być liczbą.',invalidHeight:'Wysokość tabeli musi być liczbą.',invalidCellSpacing:'Odstęp komórek musi być liczbą.',invalidCellPadding:'Dopełnienie komórek musi być liczbą.',cell:{menu:'Komórka',insertBefore:'Wstaw komórkę z lewej',insertAfter:'Wstaw komórkę z prawej',deleteCell:'Usuń komórki',merge:'Połącz komórki',mergeRight:'Połącz z komórką z prawej',mergeDown:'Połącz z komórką poniżej',splitHorizontal:'Podziel komórkę poziomo',splitVertical:'Podziel komórkę pionowo',title:'Właściwości komórki',cellType:'Typ komórki',rowSpan:'Scalenie wierszy',colSpan:'Scalenie komórek',wordWrap:'Zawijanie słów',hAlign:'Wyrównanie poziome',vAlign:'Wyrównanie pionowe',alignTop:'Góra',alignMiddle:'Środek',alignBottom:'Dół',alignBaseline:'Linia bazowa',bgColor:'Kolor tła',borderColor:'Kolor obramowania',data:'Dane',header:'Nagłowek',yes:'Tak',no:'Nie',invalidWidth:'Szerokość komórki musi być liczbą.',invalidHeight:'Wysokość komórki musi być liczbą.',invalidRowSpan:'Scalenie wierszy musi być liczbą całkowitą.',invalidColSpan:'Scalenie komórek musi być liczbą całkowitą.',chooseColor:'Wybierz'},row:{menu:'Wiersz',insertBefore:'Wstaw wiersz powyżej',insertAfter:'Wstaw wiersz poniżej',deleteRow:'Usuń wiersze'},column:{menu:'Kolumna',insertBefore:'Wstaw kolumnę z lewej',insertAfter:'Wstaw kolumnę z prawej',deleteColumn:'Usuń kolumny'}},button:{title:'Właściwości przycisku',text:'Tekst (Wartość)',type:'Typ',typeBtn:'Przycisk',typeSbm:'Wyślij',typeRst:'Wyzeruj'},checkboxAndRadio:{checkboxTitle:'Właściwości pola wyboru (checkbox)',radioTitle:'Właściwości pola wyboru (radio)',value:'Wartość',selected:'Zaznaczone'},form:{title:'Właściwości formularza',menu:'Właściwości formularza',action:'Akcja',method:'Metoda',encoding:'Kodowanie',target:'Cel',targetNotSet:'<nie ustawione>',targetNew:'Nowe okno (_blank)',targetTop:'Okno najwyższe w hierarchii (_top)',targetSelf:'To samo okno (_self)',targetParent:'Okno nadrzędne (_parent)'},select:{title:'Właściwości listy wyboru',selectInfo:'Informacje',opAvail:'Dostępne opcje',value:'Wartość',size:'Rozmiar',lines:'linii',chkMulti:'Wielokrotny wybór',opText:'Tekst',opValue:'Wartość',btnAdd:'Dodaj',btnModify:'Zmień',btnUp:'Do góry',btnDown:'Do dołu',btnSetValue:'Ustaw wartość zaznaczoną',btnDelete:'Usuń'},textarea:{title:'Właściwości obszaru tekstowego',cols:'Kolumnu',rows:'Wiersze'},textfield:{title:'Właściwości pola tekstowego',name:'Nazwa',value:'Wartość',charWidth:'Szerokość w znakach',maxChars:'Max. szerokość',type:'Typ',typeText:'Tekst',typePass:'Hasło'},hidden:{title:'Właściwości pola ukrytego',name:'Nazwa',value:'Wartość'},image:{title:'Właściwości obrazka',titleButton:'Właściwości przycisku obrazka',menu:'Właściwości obrazka',infoTab:'Informacje o obrazku',btnUpload:'Wyślij',url:'Adres URL',upload:'Wyślij',alt:'Tekst zastępczy',width:'Szerokość',height:'Wysokość',lockRatio:'Zablokuj proporcje',resetSize:'Przywróć rozmiar',border:'Ramka',hSpace:'Odstęp poziomy',vSpace:'Odstęp pionowy',align:'Wyrównaj',alignLeft:'Do lewej',alignAbsBottom:'Do dołu',alignAbsMiddle:'Do środka w pionie',alignBaseline:'Do linii bazowej',alignBottom:'Do dołu',alignMiddle:'Do środka',alignRight:'Do prawej',alignTextTop:'Do góry tekstu',alignTop:'Do góry',preview:'Podgląd',alertUrl:'Podaj adres obrazka.',linkTab:'Hiperłącze',button2Img:'Czy chcesz przekonwertować zaznaczony przycisk graficzny do zwykłego obrazka?',img2Button:'Czy chcesz przekonwertować zaznaczony obrazek do przycisku graficznego?',urlMissing:'Podaj adres URL obrazka.'},flash:{properties:'Właściwości elementu Flash',propertiesTab:'Właściwości',title:'Właściwości elementu Flash',chkPlay:'Autoodtwarzanie',chkLoop:'Pętla',chkMenu:'Włącz menu',chkFull:'Dopuść pełny ekran',scale:'Skaluj',scaleAll:'Pokaż wszystko',scaleNoBorder:'Bez Ramki',scaleFit:'Dokładne dopasowanie',access:'Dostęp skryptów',accessAlways:'Zawsze',accessSameDomain:'Ta sama domena',accessNever:'Nigdy',align:'Wyrównaj',alignLeft:'Do lewej',alignAbsBottom:'Do dołu',alignAbsMiddle:'Do środka w pionie',alignBaseline:'Do linii bazowej',alignBottom:'Do dołu',alignMiddle:'Do środka',alignRight:'Do prawej',alignTextTop:'Do góry tekstu',alignTop:'Do góry',quality:'Jakość',qualityBest:'Najlepsza',qualityHigh:'Wysoka',qualityAutoHigh:'Auto wysoka',qualityMedium:'Średnia',qualityAutoLow:'Auto niska',qualityLow:'Niska',windowModeWindow:'Okno',windowModeOpaque:'Nieprzeźroczyste',windowModeTransparent:'Przeźroczyste',windowMode:'Tryb okna',flashvars:'Zmienne dla Flasha',bgcolor:'Kolor tła',width:'Szerokość',height:'Wysokość',hSpace:'Odstęp poziomy',vSpace:'Odstęp pionowy',validateSrc:'Podaj adres URL',validateWidth:'Szerokość musi być liczbą.',validateHeight:'Wysokość musi być liczbą.',validateHSpace:'Odstęp poziomy musi być liczbą.',validateVSpace:'Odstęp pionowy musi być liczbą.'},spellCheck:{toolbar:'Sprawdź pisownię',title:'Sprawdź pisownię',notAvailable:'Przepraszamy, ale usługa jest obecnie niedostępna.',errorLoading:'Błąd wczytywania hosta aplikacji usługi: %s.',notInDic:'Słowa nie ma w słowniku',changeTo:'Zmień na',btnIgnore:'Ignoruj',btnIgnoreAll:'Ignoruj wszystkie',btnReplace:'Zmień',btnReplaceAll:'Zmień wszystkie',btnUndo:'Cofnij',noSuggestions:'- Brak sugestii -',progress:'Trwa sprawdzanie...',noMispell:'Sprawdzanie zakończone: nie znaleziono błędów',noChanges:'Sprawdzanie zakończone: nie zmieniono żadnego słowa',oneChange:'Sprawdzanie zakończone: zmieniono jedno słowo',manyChanges:'Sprawdzanie zakończone: zmieniono %l słów',ieSpellDownload:'Słownik nie jest zainstalowany. Chcesz go ściągnąć?'},smiley:{toolbar:'Emotikona',title:'Wstaw emotikonę'},elementsPath:{eleTitle:'element %1'},numberedlist:'Lista numerowana',bulletedlist:'Lista wypunktowana',indent:'Zwiększ wcięcie',outdent:'Zmniejsz wcięcie',justify:{left:'Wyrównaj do lewej',center:'Wyrównaj do środka',right:'Wyrównaj do prawej',block:'Wyrównaj do lewej i prawej'},blockquote:'Cytat',clipboard:{title:'Wklej',cutError:'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl+X.',copyError:'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl+C.',pasteMsg:'Proszę wkleić w poniższym polu używając klawiaturowego skrótu (<STRONG>Ctrl+V</STRONG>) i kliknąć <STRONG>OK</STRONG>.',securityMsg:'Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę dane wkleić ponownie w tym okienku.'},pastefromword:{toolbar:'Wklej z Worda',title:'Wklej z Worda',advice:'Proszę wkleić w poniższym polu używając klawiaturowego skrótu (<STRONG>Ctrl+V</STRONG>) i kliknąć <STRONG>OK</STRONG>.',ignoreFontFace:"Ignoruj definicje 'Font Face'",removeStyle:'Usuń definicje Stylów'},pasteText:{button:'Wklej jako czysty tekst',title:'Wklej jako czysty tekst'},templates:{button:'Szablony',title:'Szablony zawartości',insertOption:'Zastąp aktualną zawartość',selectPromptMsg:'Wybierz szablon do otwarcia w edytorze<br>(obecna zawartość okna edytora zostanie utracona):',emptyListMsg:'(Brak zdefiniowanych szablonów)'},showBlocks:'Pokaż bloki',stylesCombo:{label:'Styl',voiceLabel:'Styl',panelVoiceLabel:'Wybierz styl',panelTitle1:'Style blokowe',panelTitle2:'Style liniowe',panelTitle3:'Style obiektowe'},format:{label:'Format',voiceLabel:'Format',panelTitle:'Format',panelVoiceLabel:'Wybierz paragraf do sformatowania',tag_p:'Normalny',tag_pre:'Tekst sformatowany',tag_address:'Adres',tag_h1:'Nagłówek 1',tag_h2:'Nagłówek 2',tag_h3:'Nagłówek 3',tag_h4:'Nagłówek 4',tag_h5:'Nagłówek 5',tag_h6:'Nagłówek 6',tag_div:'Normalny (DIV)'},font:{label:'Czcionka',voiceLabel:'Czcionka',panelTitle:'Czcionka',panelVoiceLabel:'Wybierz czcionkę'},fontSize:{label:'Rozmiar',voiceLabel:'Rozmiar czcionki',panelTitle:'Rozmiar',panelVoiceLabel:'Wybierz rozmiar czcionki'},colorButton:{textColorTitle:'Kolor tekstu',bgColorTitle:'Kolor tła',auto:'Automatycznie',more:'Więcej kolorów...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Sprawdź pisownię podczas pisania (SCAYT)',enable:'Włącz SCAYT',disable:'Wyłącz SCAYT',about:'Na temat SCAYT',toggle:'Przełącz SCAYT',options:'Opcje',langs:'Języki',moreSuggestions:'Więcej sugestii',ignore:'Ignoruj',ignoreAll:'Ignoruj wszystkie',addWord:'Dodaj słowo',emptyDic:'Nazwa słownika nie może być pusta.',optionsTab:'Opcje',languagesTab:'Języki',dictionariesTab:'Słowniki',aboutTab:'Na temat SCAYT'},about:{title:'Na temat CKEditor',dlgTitle:'Na temat CKEditor',moreInfo:'Informacje na temat licencji można znaleźć na naszej stronie:',copy:'Copyright &copy; $1. Wszelkie prawa zastrzeżone.'},maximize:'Maksymalizuj',minimize:'Minimalizuj',fakeobjects:{anchor:'Kotwica',flash:'Animacja Flash',div:'Separator stron',unknown:'Nieznany obiekt'},resize:'Przeciągnij, aby zmienić rozmiar',colordialog:{title:'Wybierz kolor',highlight:'Zaznacz',selected:'Wybrany',clear:'Wyczyść'}};
Index: /trunk/filemanager/tp/ckeditor/lang/th.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/th.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/th.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.th={dir:'ltr',editorTitle:'Rich text editor, %1',source:'ดูรหัส HTML',newPage:'สร้างหน้าเอกสารใหม่',save:'บันทึก',preview:'ดูหน้าเอกสารตัวอย่าง',cut:'ตัด',copy:'สำเนา',paste:'วาง',print:'สั่งพิมพ์',underline:'ตัวขีดเส้นใต้',bold:'ตัวหนา',italic:'ตัวเอียง',selectAll:'เลือกทั้งหมด',removeFormat:'ล้างรูปแบบ',strike:'ตัวขีดเส้นทับ',subscript:'ตัวห้อย',superscript:'ตัวยก',horizontalrule:'แทรกเส้นคั่นบรรทัด',pagebreak:'แทรกตัวแบ่งหน้า Page Break',unlink:'ลบ ลิงค์',undo:'ยกเลิกคำสั่ง',redo:'ทำซ้ำคำสั่ง',common:{browseServer:'เปิดหน้าต่างจัดการไฟล์อัพโหลด',url:'ที่อยู่อ้างอิง URL',protocol:'โปรโตคอล',upload:'อัพโหลดไฟล์',uploadSubmit:'อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)',image:'รูปภาพ',flash:'ไฟล์ Flash',form:'แบบฟอร์ม',checkbox:'เช็คบ๊อก',radio:'เรดิโอบัตตอน',textField:'เท็กซ์ฟิลด์',textarea:'เท็กซ์แอเรีย',hiddenField:'ฮิดเดนฟิลด์',button:'ปุ่ม',select:'แถบตัวเลือก',imageButton:'ปุ่มแบบรูปภาพ',notSet:'<ไม่ระบุ>',id:'ไอดี',name:'ชื่อ',langDir:'การเขียน-อ่านภาษา',langDirLtr:'จากซ้ายไปขวา (LTR)',langDirRtl:'จากขวามาซ้าย (RTL)',langCode:'รหัสภาษา',longDescr:'คำอธิบายประกอบ URL',cssClass:'คลาสของไฟล์กำหนดลักษณะการแสดงผล',advisoryTitle:'คำเกริ่นนำ',cssStyle:'ลักษณะการแสดงผล',ok:'ตกลง',cancel:'ยกเลิก',generalTab:'General',advancedTab:'ขั้นสูง',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'แทรกตัวอักษรพิเศษ',title:'แทรกตัวอักษรพิเศษ'},link:{toolbar:'แทรก/แก้ไข ลิงค์',menu:'แก้ไข ลิงค์',title:'ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ',info:'รายละเอียด',target:'การเปิดหน้าลิงค์',upload:'อัพโหลดไฟล์',advanced:'ขั้นสูง',type:'ประเภทของลิงค์',toAnchor:'จุดเชื่อมโยง (Anchor)',toEmail:'ส่งอีเมล์ (E-Mail)',target:'การเปิดหน้าลิงค์',targetNotSet:'<ไม่ระบุ>',targetFrame:'<เปิดในเฟรม>',targetPopup:'<เปิดหน้าจอเล็ก (Pop-up)>',targetNew:'เปิดหน้าจอใหม่ (_blank)',targetTop:'เปิดในหน้าบนสุด (_top)',targetSelf:'เปิดในหน้าปัจจุบัน (_self)',targetParent:'เปิดในหน้าหลัก (_parent)',targetFrameName:'ชื่อทาร์เก็ตเฟรม',targetPopupName:'ระบุชื่อหน้าจอเล็ก (Pop-up)',popupFeatures:'คุณสมบัติของหน้าจอเล็ก (Pop-up)',popupResizable:'Resizable',popupStatusBar:'แสดงแถบสถานะ',popupLocationBar:'แสดงที่อยู่ของไฟล์',popupToolbar:'แสดงแถบเครื่องมือ',popupMenuBar:'แสดงแถบเมนู',popupFullScreen:'แสดงเต็มหน้าจอ (IE5.5++ เท่านั้น)',popupScrollBars:'แสดงแถบเลื่อน',popupDependent:'แสดงเต็มหน้าจอ (Netscape)',popupWidth:'กว้าง',popupLeft:'พิกัดซ้าย (Left Position)',popupHeight:'สูง',popupTop:'พิกัดบน (Top Position)',id:'Id',langDir:'การเขียน-อ่านภาษา',langDirNotSet:'<ไม่ระบุ>',langDirLTR:'จากซ้ายไปขวา (LTR)',langDirRTL:'จากขวามาซ้าย (RTL)',acccessKey:'แอคเซส คีย์',name:'ชื่อ',langCode:'การเขียน-อ่านภาษา',tabIndex:'ลำดับของ แท็บ',advisoryTitle:'คำเกริ่นนำ',advisoryContentType:'ชนิดของคำเกริ่นนำ',cssClasses:'คลาสของไฟล์กำหนดลักษณะการแสดงผล',charset:'ลิงค์เชื่อมโยงไปยังชุดตัวอักษร',styles:'ลักษณะการแสดงผล',selectAnchor:'ระบุข้อมูลของจุดเชื่อมโยง (Anchor)',anchorName:'ชื่อ',anchorId:'ไอดี',emailAddress:'อีเมล์ (E-Mail)',emailSubject:'หัวเรื่อง',emailBody:'ข้อความ',noAnchors:'(ยังไม่มีจุดเชื่อมโยงภายในหน้าเอกสารนี้)',noUrl:'กรุณาระบุที่อยู่อ้างอิงออนไลน์ (URL)',noEmail:'กรุณาระบุอีเมล์ (E-mail)'},anchor:{toolbar:'แทรก/แก้ไข Anchor',menu:'รายละเอียด Anchor',title:'รายละเอียด Anchor',name:'ชื่อ Anchor',errorName:'กรุณาระบุชื่อของ Anchor'},findAndReplace:{title:'Find and Replace',find:'ค้นหา',replace:'ค้นหาและแทนที่',findWhat:'ค้นหาคำว่า:',replaceWith:'แทนที่ด้วย:',notFoundMsg:'ไม่พบคำที่ค้นหา.',matchCase:'ตัวโหญ่-เล็ก ต้องตรงกัน',matchWord:'ต้องตรงกันทุกคำ',matchCyclic:'Match cyclic',replaceAll:'แทนที่ทั้งหมดที่พบ',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'ตาราง',title:'คุณสมบัติของ ตาราง',menu:'คุณสมบัติของ ตาราง',deleteTable:'ลบตาราง',rows:'แถว',columns:'สดมน์',border:'ขนาดเส้นขอบ',align:'การจัดตำแหน่ง',alignNotSet:'<ไม่ระบุ>',alignLeft:'ชิดซ้าย',alignCenter:'กึ่งกลาง',alignRight:'ชิดขวา',width:'กว้าง',widthPx:'จุดสี',widthPc:'เปอร์เซ็น',height:'สูง',cellSpace:'ระยะแนวนอนน',cellPad:'ระยะแนวตั้ง',caption:'หัวเรื่องของตาราง',summary:'สรุปความ',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'ช่องตาราง',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'ลบช่อง',merge:'ผสานช่อง',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'แถว',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'ลบแถว'},column:{menu:'คอลัมน์',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'ลบสดมน์'}},button:{title:'รายละเอียดของ ปุ่ม',text:'ข้อความ (ค่าตัวแปร)',type:'ข้อความ',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'คุณสมบัติของ เช็คบ๊อก',radioTitle:'คุณสมบัติของ เรดิโอบัตตอน',value:'ค่าตัวแปร',selected:'เลือกเป็นค่าเริ่มต้น'},form:{title:'คุณสมบัติของ แบบฟอร์ม',menu:'คุณสมบัติของ แบบฟอร์ม',action:'แอคชั่น',method:'เมธอด',encoding:'Encoding',target:'การเปิดหน้าลิงค์',targetNotSet:'<ไม่ระบุ>',targetNew:'เปิดหน้าจอใหม่ (_blank)',targetTop:'เปิดในหน้าบนสุด (_top)',targetSelf:'เปิดในหน้าปัจจุบัน (_self)',targetParent:'เปิดในหน้าหลัก (_parent)'},select:{title:'คุณสมบัติของ แถบตัวเลือก',selectInfo:'อินโฟ',opAvail:'รายการตัวเลือก',value:'ค่าตัวแปร',size:'ขนาด',lines:'บรรทัด',chkMulti:'เลือกหลายค่าได้',opText:'ข้อความ',opValue:'ค่าตัวแปร',btnAdd:'เพิ่ม',btnModify:'แก้ไข',btnUp:'บน',btnDown:'ล่าง',btnSetValue:'เลือกเป็นค่าเริ่มต้น',btnDelete:'ลบ'},textarea:{title:'คุณสมบัติของ เท็กแอเรีย',cols:'สดมภ์',rows:'แถว'},textfield:{title:'คุณสมบัติของ เท็กซ์ฟิลด์',name:'ชื่อ',value:'ค่าตัวแปร',charWidth:'ความกว้าง',maxChars:'จำนวนตัวอักษรสูงสุด',type:'ชนิด',typeText:'ข้อความ',typePass:'รหัสผ่าน'},hidden:{title:'คุณสมบัติของ ฮิดเดนฟิลด์',name:'ชื่อ',value:'ค่าตัวแปร'},image:{title:'คุณสมบัติของ รูปภาพ',titleButton:'คุณสมบัติของ ปุ่มแบบรูปภาพ',menu:'คุณสมบัติของ รูปภาพ',infoTab:'ข้อมูลของรูปภาพ',btnUpload:'อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)',url:'ที่อยู่อ้างอิง URL',upload:'อัพโหลดไฟล์',alt:'คำประกอบรูปภาพ',width:'ความกว้าง',height:'ความสูง',lockRatio:'กำหนดอัตราส่วน กว้าง-สูง แบบคงที่',resetSize:'กำหนดรูปเท่าขนาดจริง',border:'ขนาดขอบรูป',hSpace:'ระยะแนวนอน',vSpace:'ระยะแนวตั้ง',align:'การจัดวาง',alignLeft:'ชิดซ้าย',alignAbsBottom:'ชิดด้านล่างสุด',alignAbsMiddle:'กึ่งกลาง',alignBaseline:'ชิดบรรทัด',alignBottom:'ชิดด้านล่าง',alignMiddle:'กึ่งกลางแนวตั้ง',alignRight:'ชิดขวา',alignTextTop:'ใต้ตัวอักษร',alignTop:'บนสุด',preview:'หน้าเอกสารตัวอย่าง',alertUrl:'กรุณาระบุที่อยู่อ้างอิงออนไลน์ของไฟล์รูปภาพ (URL)',linkTab:'ลิ้งค์',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'คุณสมบัติของไฟล์ Flash',propertiesTab:'Properties',title:'คุณสมบัติของไฟล์ Flash',chkPlay:'เล่นอัตโนมัติ Auto Play',chkLoop:'เล่นวนรอบ Loop',chkMenu:'ให้ใช้งานเมนูของ Flash',chkFull:'Allow Fullscreen',scale:'อัตราส่วน Scale',scaleAll:'แสดงให้เห็นทั้งหมด Show all',scaleNoBorder:'ไม่แสดงเส้นขอบ No Border',scaleFit:'แสดงให้พอดีกับพื้นที่ Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'การจัดวาง',alignLeft:'ชิดซ้าย',alignAbsBottom:'ชิดด้านล่างสุด',alignAbsMiddle:'กึ่งกลาง',alignBaseline:'ชิดบรรทัด',alignBottom:'ชิดด้านล่าง',alignMiddle:'กึ่งกลางแนวตั้ง',alignRight:'ชิดขวา',alignTextTop:'ใต้ตัวอักษร',alignTop:'บนสุด',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'สีพื้นหลัง',width:'ความกว้าง',height:'ความสูง',hSpace:'ระยะแนวนอน',vSpace:'ระยะแนวตั้ง',validateSrc:'กรุณาระบุที่อยู่อ้างอิงออนไลน์ (URL)',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'ตรวจการสะกดคำ',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'ไม่พบในดิกชันนารี',changeTo:'แก้ไขเป็น',btnIgnore:'ยกเว้น',btnIgnoreAll:'ยกเว้นทั้งหมด',btnReplace:'แทนที่',btnReplaceAll:'แทนที่ทั้งหมด',btnUndo:'ยกเลิก',noSuggestions:'- ไม่มีคำแนะนำใดๆ -',progress:'กำลังตรวจสอบคำสะกด...',noMispell:'ตรวจสอบคำสะกดเสร็จสิ้น: ไม่พบคำสะกดผิด',noChanges:'ตรวจสอบคำสะกดเสร็จสิ้น: ไม่มีการแก้คำใดๆ',oneChange:'ตรวจสอบคำสะกดเสร็จสิ้น: แก้ไข1คำ',manyChanges:'ตรวจสอบคำสะกดเสร็จสิ้น:: แก้ไข %1 คำ',ieSpellDownload:'ไม่ได้ติดตั้งระบบตรวจสอบคำสะกด. ต้องการติดตั้งไหมครับ?'},smiley:{toolbar:'รูปสื่ออารมณ์',title:'แทรกสัญลักษณ์สื่ออารมณ์'},elementsPath:{eleTitle:'%1 element'},numberedlist:'ลำดับรายการแบบตัวเลข',bulletedlist:'ลำดับรายการแบบสัญลักษณ์',indent:'เพิ่มระยะย่อหน้า',outdent:'ลดระยะย่อหน้า',justify:{left:'จัดชิดซ้าย',center:'จัดกึ่งกลาง',right:'จัดชิดขวา',block:'จัดพอดีหน้ากระดาษ'},blockquote:'Blockquote',clipboard:{title:'วาง',cutError:'ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl และตัว X พร้อมกัน).',copyError:'ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl และตัว C พร้อมกัน).',pasteMsg:'กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (<strong>Ctrl และ V</strong>)พร้อมๆกัน และกด <strong>OK</strong>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'วางสำเนาจากตัวอักษรเวิร์ด',title:'วางสำเนาจากตัวอักษรเวิร์ด',advice:'กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (<strong>Ctrl และ V</strong>)พร้อมๆกัน และกด <strong>OK</strong>.',ignoreFontFace:'ไม่สนใจ Font Face definitions',removeStyle:'ลบ Styles definitions'},pasteText:{button:'วางแบบตัวอักษรธรรมดา',title:'วางแบบตัวอักษรธรรมดา'},templates:{button:'เทมเพลต',title:'เทมเพลตของส่วนเนื้อหาเว็บไซต์',insertOption:'แทนที่เนื้อหาเว็บไซต์ที่เลือก',selectPromptMsg:'กรุณาเลือก เทมเพลต เพื่อนำไปแก้ไขในอีดิตเตอร์<br />(เนื้อหาส่วนนี้จะหายไป):',emptyListMsg:'(ยังไม่มีการกำหนดเทมเพลต)'},showBlocks:'Show Blocks',stylesCombo:{label:'ลักษณะ',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'รูปแบบ',voiceLabel:'Format',panelTitle:'รูปแบบ',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Paragraph (DIV)'},font:{label:'แบบอักษร',voiceLabel:'Font',panelTitle:'แบบอักษร',panelVoiceLabel:'Select a font'},fontSize:{label:'ขนาด',voiceLabel:'Font Size',panelTitle:'ขนาด',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'สีตัวอักษร',bgColorTitle:'สีพื้นหลัง',auto:'สีอัตโนมัติ',more:'เลือกสีอื่นๆ...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/it.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/it.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/it.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.it={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Codice Sorgente',newPage:'Nuova pagina vuota',save:'Salva',preview:'Anteprima',cut:'Taglia',copy:'Copia',paste:'Incolla',print:'Stampa',underline:'Sottolineato',bold:'Grassetto',italic:'Corsivo',selectAll:'Seleziona tutto',removeFormat:'Elimina formattazione',strike:'Barrato',subscript:'Pedice',superscript:'Apice',horizontalrule:'Inserisci riga orizzontale',pagebreak:'Inserisci interruzione di pagina',unlink:'Elimina collegamento',undo:'Annulla',redo:'Ripristina',common:{browseServer:'Cerca sul server',url:'URL',protocol:'Protocollo',upload:'Carica',uploadSubmit:'Invia al server',image:'Immagine',flash:'Oggetto Flash',form:'Modulo',checkbox:'Checkbox',radio:'Radio Button',textField:'Campo di testo',textarea:'Area di testo',hiddenField:'Campo nascosto',button:'Bottone',select:'Menu di selezione',imageButton:'Bottone immagine',notSet:'<non impostato>',id:'Id',name:'Nome',langDir:'Direzione scrittura',langDirLtr:'Da Sinistra a Destra (LTR)',langDirRtl:'Da Destra a Sinistra (RTL)',langCode:'Codice Lingua',longDescr:'URL descrizione estesa',cssClass:'Nome classe CSS',advisoryTitle:'Titolo',cssStyle:'Stile',ok:'OK',cancel:'Annulla',generalTab:'Generale',advancedTab:'Avanzate',validateNumberFailed:'Il valore inserito non è un numero.',confirmNewPage:'Ogni modifica non salvata sarà persa. Sei sicuro di voler caricare una nuova pagina?',confirmCancel:'Alcune delle opzioni sono state cambiate. Sei sicuro di voler chiudere la finestra di dialogo?',unavailable:'%1<span class="cke_accessibility">, non disponibile</span>'},specialChar:{toolbar:'Inserisci carattere speciale',title:'Seleziona carattere speciale'},link:{toolbar:'Inserisci/Modifica collegamento',menu:'Modifica collegamento',title:'Collegamento',info:'Informazioni collegamento',target:'Destinazione',upload:'Carica',advanced:'Avanzate',type:'Tipo di Collegamento',toAnchor:'Ancora nella pagina',toEmail:'E-Mail',target:'Destinazione',targetNotSet:'<non impostato>',targetFrame:'<riquadro>',targetPopup:'<finestra popup>',targetNew:'Nuova finestra (_blank)',targetTop:'Finestra superiore (_top)',targetSelf:'Stessa finestra (_self)',targetParent:'Finestra padre (_parent)',targetFrameName:'Nome del riquadro di destinazione',targetPopupName:'Nome finestra popup',popupFeatures:'Caratteristiche finestra popup',popupResizable:'Ridimensionabile',popupStatusBar:'Barra di stato',popupLocationBar:'Barra degli indirizzi',popupToolbar:'Barra degli strumenti',popupMenuBar:'Barra del menu',popupFullScreen:'A tutto schermo (IE)',popupScrollBars:'Barre di scorrimento',popupDependent:'Dipendente (Netscape)',popupWidth:'Larghezza',popupLeft:'Posizione da sinistra',popupHeight:'Altezza',popupTop:"Posizione dall'alto",id:'Id',langDir:'Direzione scrittura',langDirNotSet:'<non impostato>',langDirLTR:'Da Sinistra a Destra (LTR)',langDirRTL:'Da Destra a Sinistra (RTL)',acccessKey:'Scorciatoia<br />da tastiera',name:'Nome',langCode:'Direzione scrittura',tabIndex:'Ordine di tabulazione',advisoryTitle:'Titolo',advisoryContentType:'Tipo della risorsa collegata',cssClasses:'Nome classe CSS',charset:'Set di caretteri della risorsa collegata',styles:'Stile',selectAnchor:'Scegli Ancora',anchorName:'Per Nome',anchorId:'Per id elemento',emailAddress:'Indirizzo E-Mail',emailSubject:'Oggetto del messaggio',emailBody:'Corpo del messaggio',noAnchors:'(Nessuna ancora disponibile nel documento)',noUrl:"Devi inserire l'URL del collegamento",noEmail:"Devi inserire un'indirizzo e-mail"},anchor:{toolbar:'Inserisci/Modifica Ancora',menu:'Proprietà ancora',title:'Proprietà ancora',name:'Nome ancora',errorName:"Inserici il nome dell'ancora"},findAndReplace:{title:'Cerca e Sostituisci',find:'Trova',replace:'Sostituisci',findWhat:'Trova:',replaceWith:'Sostituisci con:',notFoundMsg:"L'elemento cercato non è stato trovato.",matchCase:'Maiuscole/minuscole',matchWord:'Solo parole intere',matchCyclic:'Ricerca ciclica',replaceAll:'Sostituisci tutto',replaceSuccessMsg:'%1 occorrenza(e) sostituite.'},table:{toolbar:'Tabella',title:'Proprietà tabella',menu:'Proprietà tabella',deleteTable:'Cancella Tabella',rows:'Righe',columns:'Colonne',border:'Dimensione bordo',align:'Allineamento',alignNotSet:'<non impostato>',alignLeft:'Sinistra',alignCenter:'Centrato',alignRight:'Destra',width:'Larghezza',widthPx:'pixel',widthPc:'percento',height:'Altezza',cellSpace:'Spaziatura celle',cellPad:'Padding celle',caption:'Intestazione',summary:'Indice',headers:'Intestazione',headersNone:'Nessuna',headersColumn:'Prima Colonna',headersRow:'Prima Riga',headersBoth:'Entrambe',invalidRows:"Il numero di righe dev'essere un numero maggiore di 0.",invalidCols:"Il numero di colonne dev'essere un numero maggiore di 0.",invalidBorder:"La dimensione del bordo dev'essere un numero.",invalidWidth:"La larghezza della tabella dev'essere un numero.",invalidHeight:"L'altezza della tabella dev'essere un numero.",invalidCellSpacing:"La spaziatura tra le celle dev'essere un numero.",invalidCellPadding:"Il pagging delle celle dev'essere un numero",cell:{menu:'Cella',insertBefore:'Inserisci Cella Prima',insertAfter:'Inserisci Cella Dopo',deleteCell:'Elimina celle',merge:'Unisce celle',mergeRight:'Unisci a Destra',mergeDown:'Unisci in Basso',splitHorizontal:'Dividi Cella Orizzontalmente',splitVertical:'Dividi Cella Verticalmente',title:'Proprietà della cella',cellType:'Tipo di cella',rowSpan:'Su più righe',colSpan:'Su più colonne',wordWrap:'Ritorno a capo',hAlign:'Allineamento orizzontale',vAlign:'Allineamento verticale',alignTop:'In Alto',alignMiddle:'Al Centro',alignBottom:'In Basso',alignBaseline:'Linea Base',bgColor:'Colore di Sfondo',borderColor:'Colore del Bordo',data:'Dati',header:'Intestazione',yes:'Si',no:'No',invalidWidth:"La larghezza della cella dev'essere un numero.",invalidHeight:"L'altezza della cella dev'essere un numero.",invalidRowSpan:"Il numero di righe dev'essere un numero intero.",invalidColSpan:"Il numero di colonne dev'essere un numero intero.",chooseColor:'Choose'},row:{menu:'Riga',insertBefore:'Inserisci Riga Prima',insertAfter:'Inserisci Riga Dopo',deleteRow:'Elimina righe'},column:{menu:'Colonna',insertBefore:'Inserisci Colonna Prima',insertAfter:'Inserisci Colonna Dopo',deleteColumn:'Elimina colonne'}},button:{title:'Proprietà bottone',text:'Testo (Value)',type:'Tipo',typeBtn:'Bottone',typeSbm:'Invio',typeRst:'Annulla'},checkboxAndRadio:{checkboxTitle:'Proprietà checkbox',radioTitle:'Proprietà radio button',value:'Valore',selected:'Selezionato'},form:{title:'Proprietà modulo',menu:'Proprietà modulo',action:'Azione',method:'Metodo',encoding:'Codifica',target:'Destinazione',targetNotSet:'<non impostato>',targetNew:'Nuova finestra (_blank)',targetTop:'Finestra superiore (_top)',targetSelf:'Stessa finestra (_self)',targetParent:'Finestra padre (_parent)'},select:{title:'Proprietà menu di selezione',selectInfo:'Info',opAvail:'Opzioni disponibili',value:'Valore',size:'Dimensione',lines:'righe',chkMulti:'Permetti selezione multipla',opText:'Testo',opValue:'Valore',btnAdd:'Aggiungi',btnModify:'Modifica',btnUp:'Su',btnDown:'Gi',btnSetValue:'Imposta come predefinito',btnDelete:'Rimuovi'},textarea:{title:'Proprietà area di testo',cols:'Colonne',rows:'Righe'},textfield:{title:'Proprietà campo di testo',name:'Nome',value:'Valore',charWidth:'Larghezza',maxChars:'Numero massimo di caratteri',type:'Tipo',typeText:'Testo',typePass:'Password'},hidden:{title:'Proprietà campo nascosto',name:'Nome',value:'Valore'},image:{title:'Proprietà immagine',titleButton:'Proprietà bottone immagine',menu:'Proprietà immagine',infoTab:'Informazioni immagine',btnUpload:'Invia al server',url:'URL',upload:'Carica',alt:'Testo alternativo',width:'Larghezza',height:'Altezza',lockRatio:'Blocca rapporto',resetSize:'Reimposta dimensione',border:'Bordo',hSpace:'HSpace',vSpace:'VSpace',align:'Allineamento',alignLeft:'Sinistra',alignAbsBottom:'In basso assoluto',alignAbsMiddle:'Centrato assoluto',alignBaseline:'Linea base',alignBottom:'In Basso',alignMiddle:'Centrato',alignRight:'Destra',alignTextTop:'In alto al testo',alignTop:'In Alto',preview:'Anteprima',alertUrl:"Devi inserire l'URL per l'immagine",linkTab:'Collegamento',button2Img:"Vuoi trasformare il bottone immagine selezionato in un'immagine semplice?",img2Button:"Vuoi trasferomare l'immagine selezionata in un bottone immagine?",urlMissing:'Image source URL is missing.'},flash:{properties:'Proprietà Oggetto Flash',propertiesTab:'Proprietà',title:'Proprietà Oggetto Flash',chkPlay:'Avvio Automatico',chkLoop:'Riavvio automatico',chkMenu:'Abilita Menu di Flash',chkFull:'Permetti la modalità tutto schermo',scale:'Ridimensiona',scaleAll:'Mostra Tutto',scaleNoBorder:'Senza Bordo',scaleFit:'Dimensione Esatta',access:'Accesso Script',accessAlways:'Sempre',accessSameDomain:'Solo stesso dominio',accessNever:'Mai',align:'Allineamento',alignLeft:'Sinistra',alignAbsBottom:'In basso assoluto',alignAbsMiddle:'Centrato assoluto',alignBaseline:'Linea base',alignBottom:'In Basso',alignMiddle:'Centrato',alignRight:'Destra',alignTextTop:'In alto al testo',alignTop:'In Alto',quality:'Qualità',qualityBest:'Massima',qualityHigh:'Alta',qualityAutoHigh:'Alta Automatica',qualityMedium:'Intermedia',qualityAutoLow:'Bassa Automatica',qualityLow:'Bassa',windowModeWindow:'Finestra',windowModeOpaque:'Opaca',windowModeTransparent:'Trasparente',windowMode:'Modalità finestra',flashvars:'Variabili per Flash',bgcolor:'Colore sfondo',width:'Larghezza',height:'Altezza',hSpace:'HSpace',vSpace:'VSpace',validateSrc:"Devi inserire l'URL del collegamento",validateWidth:"La Larghezza dev'essere un numero",validateHeight:"L'altezza dev'essere un numero",validateHSpace:"L'HSpace dev'essere un numero.",validateVSpace:"Il VSpace dev'essere un numero."},spellCheck:{toolbar:'Correttore ortografico',title:'Controllo ortografico',notAvailable:'Il servizio non è momentaneamente disponibile.',errorLoading:"Errore nel caricamento dell'host col servizio applicativo: %s.",notInDic:'Non nel dizionario',changeTo:'Cambia in',btnIgnore:'Ignora',btnIgnoreAll:'Ignora tutto',btnReplace:'Cambia',btnReplaceAll:'Cambia tutto',btnUndo:'Annulla',noSuggestions:'- Nessun suggerimento -',progress:'Controllo ortografico in corso',noMispell:'Controllo ortografico completato: nessun errore trovato',noChanges:'Controllo ortografico completato: nessuna parola cambiata',oneChange:'Controllo ortografico completato: 1 parola cambiata',manyChanges:'Controllo ortografico completato: %1 parole cambiate',ieSpellDownload:'Contollo ortografico non installato. Lo vuoi scaricare ora?'},smiley:{toolbar:'Emoticon',title:'Inserisci emoticon'},elementsPath:{eleTitle:'%1 elemento'},numberedlist:'Elenco numerato',bulletedlist:'Elenco puntato',indent:'Aumenta rientro',outdent:'Riduci rientro',justify:{left:'Allinea a sinistra',center:'Centra',right:'Allinea a destra',block:'Giustifica'},blockquote:'Citazione',clipboard:{title:'Incolla',cutError:'Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl+X).',copyError:'Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl+C).',pasteMsg:"Incolla il testo all'interno dell'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl+V</STRONG>) e premi <STRONG>OK</STRONG>.",securityMsg:"A causa delle impostazioni di sicurezza del browser,l'editor non è in grado di accedere direttamente agli appunti. E' pertanto necessario incollarli di nuovo in questa finestra."},pastefromword:{toolbar:'Incolla da Word',title:'Incolla da Word',advice:"Incolla il testo all'interno dell'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl+V</STRONG>) e premi <STRONG>OK</STRONG>.",ignoreFontFace:'Ignora le definizioni di Font',removeStyle:'Rimuovi le definizioni di Stile'},pasteText:{button:'Incolla come testo semplice',title:'Incolla come testo semplice'},templates:{button:'Modelli',title:'Contenuto dei modelli',insertOption:'Cancella il contenuto corrente',selectPromptMsg:"Seleziona il modello da aprire nell'editor<br />(il contenuto attuale verrà eliminato):",emptyListMsg:'(Nessun modello definito)'},showBlocks:'Visualizza Blocchi',stylesCombo:{label:'Stile',voiceLabel:'Stili',panelVoiceLabel:'Seleziona uno stile',panelTitle1:'Stili per blocchi',panelTitle2:'Stili in linea',panelTitle3:'Stili per oggetti'},format:{label:'Formato',voiceLabel:'Formato',panelTitle:'Formato',panelVoiceLabel:'Seleziona il formato per paragrafo',tag_p:'Normale',tag_pre:'Formattato',tag_address:'Indirizzo',tag_h1:'Titolo 1',tag_h2:'Titolo 2',tag_h3:'Titolo 3',tag_h4:'Titolo 4',tag_h5:'Titolo 5',tag_h6:'Titolo 6',tag_div:'Paragrafo (DIV)'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font',panelVoiceLabel:'Seleziona un font'},fontSize:{label:'Dimensione',voiceLabel:'Dimensione Font',panelTitle:'Dimensione',panelVoiceLabel:'Seleziona una dimensione font'},colorButton:{textColorTitle:'Colore testo',bgColorTitle:'Colore sfondo',auto:'Automatico',more:'Altri colori...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Controllo Ortografico Mentre Scrivi',enable:'Abilita COMS',disable:'Disabilita COMS',about:'About COMS',toggle:'Inverti abilitazione SCOMS',options:'Opzioni',langs:'Lingue',moreSuggestions:'Altri suggerimenti',ignore:'Ignora',ignoreAll:'Ignora tutti',addWord:'Aggiungi Parola',emptyDic:'Il nome del dizionario non può essere vuoto.',optionsTab:'Opzioni',languagesTab:'Lingue',dictionariesTab:'Dizionari',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'Per le informazioni sulla licenza si prega di visitare il nostro sito:',copy:'Copyright &copy; $1. Tutti i diritti riservati.'},maximize:'Massimizza',minimize:'Minimize',fakeobjects:{anchor:'Ancora',flash:'Animazione Flash',div:'Interruzione di Pagina',unknown:'Oggetto sconosciuto'},resize:'Trascina per ridimensionare',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/sl.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/sl.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/sl.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.sl={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Izvorna koda',newPage:'Nova stran',save:'Shrani',preview:'Predogled',cut:'Izreži',copy:'Kopiraj',paste:'Prilepi',print:'Natisni',underline:'Podčrtano',bold:'Krepko',italic:'Ležeče',selectAll:'Izberi vse',removeFormat:'Odstrani oblikovanje',strike:'Prečrtano',subscript:'Podpisano',superscript:'Nadpisano',horizontalrule:'Vstavi vodoravno črto',pagebreak:'Vstavi prelom strani',unlink:'Odstrani povezavo',undo:'Razveljavi',redo:'Ponovi',common:{browseServer:'Prebrskaj na strežniku',url:'URL',protocol:'Protokol',upload:'Prenesi',uploadSubmit:'Pošlji na strežnik',image:'Slika',flash:'Flash',form:'Obrazec',checkbox:'Potrditveno polje',radio:'Izbirno polje',textField:'Vnosno polje',textarea:'Vnosno območje',hiddenField:'Skrito polje',button:'Gumb',select:'Spustni seznam',imageButton:'Gumb s sliko',notSet:'<ni postavljen>',id:'Id',name:'Ime',langDir:'Smer jezika',langDirLtr:'Od leve proti desni (LTR)',langDirRtl:'Od desne proti levi (RTL)',langCode:'Oznaka jezika',longDescr:'Dolg opis URL-ja',cssClass:'Razred stilne predloge',advisoryTitle:'Predlagani naslov',cssStyle:'Slog',ok:'V redu',cancel:'Prekliči',generalTab:'General',advancedTab:'Napredno',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Vstavi posebni znak',title:'Izberi posebni znak'},link:{toolbar:'Vstavi/uredi povezavo',menu:'Uredi povezavo',title:'Povezava',info:'Podatki o povezavi',target:'Cilj',upload:'Prenesi',advanced:'Napredno',type:'Vrsta povezave',toAnchor:'Zaznamek na tej strani',toEmail:'Elektronski naslov',target:'Cilj',targetNotSet:'<ni postavljen>',targetFrame:'<okvir>',targetPopup:'<pojavno okno>',targetNew:'Novo okno (_blank)',targetTop:'Najvišje okno (_top)',targetSelf:'Isto okno (_self)',targetParent:'Starševsko okno (_parent)',targetFrameName:'Ime ciljnega okvirja',targetPopupName:'Ime pojavnega okna',popupFeatures:'Značilnosti pojavnega okna',popupResizable:'Resizable',popupStatusBar:'Vrstica stanja',popupLocationBar:'Naslovna vrstica',popupToolbar:'Orodna vrstica',popupMenuBar:'Menijska vrstica',popupFullScreen:'Celozaslonska slika (IE)',popupScrollBars:'Drsniki',popupDependent:'Podokno (Netscape)',popupWidth:'Širina',popupLeft:'Lega levo',popupHeight:'Višina',popupTop:'Lega na vrhu',id:'Id',langDir:'Smer jezika',langDirNotSet:'<ni postavljen>',langDirLTR:'Od leve proti desni (LTR)',langDirRTL:'Od desne proti levi (RTL)',acccessKey:'Vstopno geslo',name:'Ime',langCode:'Smer jezika',tabIndex:'Številka tabulatorja',advisoryTitle:'Predlagani naslov',advisoryContentType:'Predlagani tip vsebine (content-type)',cssClasses:'Razred stilne predloge',charset:'Kodna tabela povezanega vira',styles:'Slog',selectAnchor:'Izberi zaznamek',anchorName:'Po imenu zaznamka',anchorId:'Po ID-ju elementa',emailAddress:'Elektronski naslov',emailSubject:'Predmet sporočila',emailBody:'Vsebina sporočila',noAnchors:'(V tem dokumentu ni zaznamkov)',noUrl:'Vnesite URL povezave',noEmail:'Vnesite elektronski naslov'},anchor:{toolbar:'Vstavi/uredi zaznamek',menu:'Lastnosti zaznamka',title:'Lastnosti zaznamka',name:'Ime zaznamka',errorName:'Prosim vnesite ime zaznamka'},findAndReplace:{title:'Najdi in zamenjaj',find:'Najdi',replace:'Zamenjaj',findWhat:'Najdi:',replaceWith:'Zamenjaj z:',notFoundMsg:'Navedeno besedilo ni bilo najdeno.',matchCase:'Razlikuj velike in male črke',matchWord:'Samo cele besede',matchCyclic:'Match cyclic',replaceAll:'Zamenjaj vse',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabela',title:'Lastnosti tabele',menu:'Lastnosti tabele',deleteTable:'Izbriši tabelo',rows:'Vrstice',columns:'Stolpci',border:'Velikost obrobe',align:'Poravnava',alignNotSet:'<Ni nastavljeno>',alignLeft:'Levo',alignCenter:'Sredinsko',alignRight:'Desno',width:'Širina',widthPx:'pik',widthPc:'procentov',height:'Višina',cellSpace:'Razmik med celicami',cellPad:'Polnilo med celicami',caption:'Naslov',summary:'Povzetek',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Celica',insertBefore:'Vstavi celico pred',insertAfter:'Vstavi celico za',deleteCell:'Izbriši celice',merge:'Združi celice',mergeRight:'Združi desno',mergeDown:'Druži navzdol',splitHorizontal:'Razdeli celico vodoravno',splitVertical:'Razdeli celico navpično',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Vrstica',insertBefore:'Vstavi vrstico pred',insertAfter:'Vstavi vrstico za',deleteRow:'Izbriši vrstice'},column:{menu:'Stolpec',insertBefore:'Vstavi stolpec pred',insertAfter:'Vstavi stolpec za',deleteColumn:'Izbriši stolpce'}},button:{title:'Lastnosti gumba',text:'Besedilo (Vrednost)',type:'Tip',typeBtn:'Gumb',typeSbm:'Potrdi',typeRst:'Ponastavi'},checkboxAndRadio:{checkboxTitle:'Lastnosti potrditvenega polja',radioTitle:'Lastnosti izbirnega polja',value:'Vrednost',selected:'Izbrano'},form:{title:'Lastnosti obrazca',menu:'Lastnosti obrazca',action:'Akcija',method:'Metoda',encoding:'Encoding',target:'Cilj',targetNotSet:'<ni postavljen>',targetNew:'Novo okno (_blank)',targetTop:'Najvišje okno (_top)',targetSelf:'Isto okno (_self)',targetParent:'Starševsko okno (_parent)'},select:{title:'Lastnosti spustnega seznama',selectInfo:'Podatki',opAvail:'Razpoložljive izbire',value:'Vrednost',size:'Velikost',lines:'vrstic',chkMulti:'Dovoli izbor večih vrstic',opText:'Besedilo',opValue:'Vrednost',btnAdd:'Dodaj',btnModify:'Spremeni',btnUp:'Gor',btnDown:'Dol',btnSetValue:'Postavi kot privzeto izbiro',btnDelete:'Izbriši'},textarea:{title:'Lastnosti vnosnega območja',cols:'Stolpcev',rows:'Vrstic'},textfield:{title:'Lastnosti vnosnega polja',name:'Ime',value:'Vrednost',charWidth:'Dolžina',maxChars:'Največje število znakov',type:'Tip',typeText:'Besedilo',typePass:'Geslo'},hidden:{title:'Lastnosti skritega polja',name:'Ime',value:'Vrednost'},image:{title:'Lastnosti slike',titleButton:'Lastnosti gumba s sliko',menu:'Lastnosti slike',infoTab:'Podatki o sliki',btnUpload:'Pošlji na strežnik',url:'URL',upload:'Pošlji',alt:'Nadomestno besedilo',width:'Širina',height:'Višina',lockRatio:'Zakleni razmerje',resetSize:'Ponastavi velikost',border:'Obroba',hSpace:'Vodoravni razmik',vSpace:'Navpični razmik',align:'Poravnava',alignLeft:'Levo',alignAbsBottom:'Popolnoma na dno',alignAbsMiddle:'Popolnoma v sredino',alignBaseline:'Na osnovno črto',alignBottom:'Na dno',alignMiddle:'V sredino',alignRight:'Desno',alignTextTop:'Besedilo na vrh',alignTop:'Na vrh',preview:'Predogled',alertUrl:'Vnesite URL slike',linkTab:'Povezava',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Lastnosti Flash',propertiesTab:'Properties',title:'Lastnosti Flash',chkPlay:'Samodejno predvajaj',chkLoop:'Ponavljanje',chkMenu:'Omogoči Flash Meni',chkFull:'Allow Fullscreen',scale:'Povečava',scaleAll:'Pokaži vse',scaleNoBorder:'Brez obrobe',scaleFit:'Natančno prileganje',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Poravnava',alignLeft:'Levo',alignAbsBottom:'Popolnoma na dno',alignAbsMiddle:'Popolnoma v sredino',alignBaseline:'Na osnovno črto',alignBottom:'Na dno',alignMiddle:'V sredino',alignRight:'Desno',alignTextTop:'Besedilo na vrh',alignTop:'Na vrh',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Barva ozadja',width:'Širina',height:'Višina',hSpace:'Vodoravni razmik',vSpace:'Navpični razmik',validateSrc:'Vnesite URL povezave',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Preveri črkovanje',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Ni v slovarju',changeTo:'Spremeni v',btnIgnore:'Prezri',btnIgnoreAll:'Prezri vse',btnReplace:'Zamenjaj',btnReplaceAll:'Zamenjaj vse',btnUndo:'Razveljavi',noSuggestions:'- Ni predlogov -',progress:'Preverjanje črkovanja se izvaja...',noMispell:'Črkovanje je končano: Brez napak',noChanges:'Črkovanje je končano: Nobena beseda ni bila spremenjena',oneChange:'Črkovanje je končano: Spremenjena je bila ena beseda',manyChanges:'Črkovanje je končano: Spremenjenih je bilo %1 besed',ieSpellDownload:'Črkovalnik ni nameščen. Ali ga želite prenesti sedaj?'},smiley:{toolbar:'Smeško',title:'Vstavi smeška'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Oštevilčen seznam',bulletedlist:'Označen seznam',indent:'Povečaj zamik',outdent:'Zmanjšaj zamik',justify:{left:'Leva poravnava',center:'Sredinska poravnava',right:'Desna poravnava',block:'Obojestranska poravnava'},blockquote:'Citat',clipboard:{title:'Prilepi',cutError:'Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+X).',copyError:'Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+C).',pasteMsg:'Prosim prilepite v sleči okvir s pomočjo tipkovnice (<STRONG>Ctrl+V</STRONG>) in pritisnite <STRONG>V redu</STRONG>.',securityMsg:'Zaradi varnostnih nastavitev vašega brskalnika urejevalnik ne more neposredno dostopati do odložišča. Vsebino odložišča ponovno prilepite v to okno.'},pastefromword:{toolbar:'Prilepi iz Worda',title:'Prilepi iz Worda',advice:'Prosim prilepite v sleči okvir s pomočjo tipkovnice (<STRONG>Ctrl+V</STRONG>) in pritisnite <STRONG>V redu</STRONG>.',ignoreFontFace:'Prezri obliko pisave',removeStyle:'Odstrani nastavitve stila'},pasteText:{button:'Prilepi kot golo besedilo',title:'Prilepi kot golo besedilo'},templates:{button:'Predloge',title:'Vsebinske predloge',insertOption:'Zamenjaj trenutno vsebino',selectPromptMsg:'Izberite predlogo, ki jo želite odpreti v urejevalniku<br>(trenutna vsebina bo izgubljena):',emptyListMsg:'(Ni pripravljenih predlog)'},showBlocks:'Prikaži ograde',stylesCombo:{label:'Slog',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Oblika',voiceLabel:'Format',panelTitle:'Oblika',panelVoiceLabel:'Select a paragraph format',tag_p:'Navaden',tag_pre:'Oblikovan',tag_address:'Napis',tag_h1:'Naslov 1',tag_h2:'Naslov 2',tag_h3:'Naslov 3',tag_h4:'Naslov 4',tag_h5:'Naslov 5',tag_h6:'Naslov 6',tag_div:'Normal (DIV)'},font:{label:'Pisava',voiceLabel:'Font',panelTitle:'Pisava',panelVoiceLabel:'Select a font'},fontSize:{label:'Velikost',voiceLabel:'Font Size',panelTitle:'Velikost',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Barva besedila',bgColorTitle:'Barva ozadja',auto:'Samodejno',more:'Več barv...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/lt.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/lt.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/lt.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.lt={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Šaltinis',newPage:'Naujas puslapis',save:'Išsaugoti',preview:'Peržiūra',cut:'Iškirpti',copy:'Kopijuoti',paste:'Įdėti',print:'Spausdinti',underline:'Pabrauktas',bold:'Pusjuodis',italic:'Kursyvas',selectAll:'Pažymėti viską',removeFormat:'Panaikinti formatą',strike:'Perbrauktas',subscript:'Apatinis indeksas',superscript:'Viršutinis indeksas',horizontalrule:'Įterpti horizontalią liniją',pagebreak:'Įterpti puslapių skirtuką',unlink:'Panaikinti nuorodą',undo:'Atšaukti',redo:'Atstatyti',common:{browseServer:'Naršyti po serverį',url:'URL',protocol:'Protokolas',upload:'Siųsti',uploadSubmit:'Siųsti į serverį',image:'Vaizdas',flash:'Flash',form:'Forma',checkbox:'Žymimasis langelis',radio:'Žymimoji akutė',textField:'Teksto laukas',textarea:'Teksto sritis',hiddenField:'Nerodomas laukas',button:'Mygtukas',select:'Atrankos laukas',imageButton:'Vaizdinis mygtukas',notSet:'<nėra nustatyta>',id:'Id',name:'Vardas',langDir:'Teksto kryptis',langDirLtr:'Iš kairės į dešinę (LTR)',langDirRtl:'Iš dešinės į kairę (RTL)',langCode:'Kalbos kodas',longDescr:'Ilgas aprašymas URL',cssClass:'Stilių lentelės klasės',advisoryTitle:'Konsultacinė antraštė',cssStyle:'Stilius',ok:'OK',cancel:'Nutraukti',generalTab:'Bendros savybės',advancedTab:'Papildomas',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Įterpti specialų simbolį',title:'Pasirinkite specialų simbolį'},link:{toolbar:'Įterpti/taisyti nuorodą',menu:'Taisyti nuorodą',title:'Nuoroda',info:'Nuorodos informacija',target:'Paskirties vieta',upload:'Siųsti',advanced:'Papildomas',type:'Nuorodos tipas',toAnchor:'Žymė šiame puslapyje',toEmail:'El.paštas',target:'Paskirties vieta',targetNotSet:'<nėra nustatyta>',targetFrame:'<kadras>',targetPopup:'<išskleidžiamas langas>',targetNew:'Naujas langas (_blank)',targetTop:'Svarbiausias langas (_top)',targetSelf:'Tas pats langas (_self)',targetParent:'Pirminis langas (_parent)',targetFrameName:'Paskirties kadro vardas',targetPopupName:'Paskirties lango vardas',popupFeatures:'Išskleidžiamo lango savybės',popupResizable:'Resizable',popupStatusBar:'Būsenos juosta',popupLocationBar:'Adreso juosta',popupToolbar:'Mygtukų juosta',popupMenuBar:'Meniu juosta',popupFullScreen:'Visas ekranas (IE)',popupScrollBars:'Slinkties juostos',popupDependent:'Priklausomas (Netscape)',popupWidth:'Plotis',popupLeft:'Kairė pozicija',popupHeight:'Aukštis',popupTop:'Viršutinė pozicija',id:'Id',langDir:'Teksto kryptis',langDirNotSet:'<nėra nustatyta>',langDirLTR:'Iš kairės į dešinę (LTR)',langDirRTL:'Iš dešinės į kairę (RTL)',acccessKey:'Prieigos raktas',name:'Vardas',langCode:'Teksto kryptis',tabIndex:'Tabuliavimo indeksas',advisoryTitle:'Konsultacinė antraštė',advisoryContentType:'Konsultacinio turinio tipas',cssClasses:'Stilių lentelės klasės',charset:'Susietų išteklių simbolių lentelė',styles:'Stilius',selectAnchor:'Pasirinkite žymę',anchorName:'Pagal žymės vardą',anchorId:'Pagal žymės Id',emailAddress:'El.pašto adresas',emailSubject:'Žinutės tema',emailBody:'Žinutės turinys',noAnchors:'(Šiame dokumente žymių nėra)',noUrl:'Prašome įvesti nuorodos URL',noEmail:'Prašome įvesti el.pašto adresą'},anchor:{toolbar:'Įterpti/modifikuoti žymę',menu:'Žymės savybės',title:'Žymės savybės',name:'Žymės vardas',errorName:'Prašome įvesti žymės vardą'},findAndReplace:{title:'Surasti ir pakeisti',find:'Rasti',replace:'Pakeisti',findWhat:'Surasti tekstą:',replaceWith:'Pakeisti tekstu:',notFoundMsg:'Nurodytas tekstas nerastas.',matchCase:'Skirti didžiąsias ir mažąsias raides',matchWord:'Atitikti pilną žodį',matchCyclic:'Match cyclic',replaceAll:'Pakeisti viską',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Lentelė',title:'Lentelės savybės',menu:'Lentelės savybės',deleteTable:'Šalinti lentelę',rows:'Eilutės',columns:'Stulpeliai',border:'Rėmelio dydis',align:'Lygiuoti',alignNotSet:'<Nenustatyta>',alignLeft:'Kairę',alignCenter:'Centrą',alignRight:'Dešinę',width:'Plotis',widthPx:'taškais',widthPc:'procentais',height:'Aukštis',cellSpace:'Tarpas tarp langelių',cellPad:'Trapas nuo langelio rėmo iki teksto',caption:'Antraštė',summary:'Santrauka',headers:'Antraštės',headersNone:'Nėra',headersColumn:'Pirmas stulpelis',headersRow:'Pirma eilutė',headersBoth:'Abu',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Langelis',insertBefore:'Įterpti langelį prieš',insertAfter:'Įterpti langelį po',deleteCell:'Šalinti langelius',merge:'Sujungti langelius',mergeRight:'Sujungti su dešine',mergeDown:'Sujungti su apačia',splitHorizontal:'Skaidyti langelį horizontaliai',splitVertical:'Skaidyti langelį vertikaliai',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Eilutė',insertBefore:'Įterpti eilutę prieš',insertAfter:'Įterpti eilutę po',deleteRow:'Šalinti eilutes'},column:{menu:'Stulpelis',insertBefore:'Įterpti stulpelį prieš',insertAfter:'Įterpti stulpelį po',deleteColumn:'Šalinti stulpelius'}},button:{title:'Mygtuko savybės',text:'Tekstas (Reikšmė)',type:'Tipas',typeBtn:'Mygtukas',typeSbm:'Siųsti',typeRst:'Išvalyti'},checkboxAndRadio:{checkboxTitle:'Žymimojo langelio savybės',radioTitle:'Žymimosios akutės savybės',value:'Reikšmė',selected:'Pažymėtas'},form:{title:'Formos savybės',menu:'Formos savybės',action:'Veiksmas',method:'Metodas',encoding:'Encoding',target:'Paskirties vieta',targetNotSet:'<nėra nustatyta>',targetNew:'Naujas langas (_blank)',targetTop:'Svarbiausias langas (_top)',targetSelf:'Tas pats langas (_self)',targetParent:'Pirminis langas (_parent)'},select:{title:'Atrankos lauko savybės',selectInfo:'Informacija',opAvail:'Galimos parinktys',value:'Reikšmė',size:'Dydis',lines:'eilučių',chkMulti:'Leisti daugeriopą atranką',opText:'Tekstas',opValue:'Reikšmė',btnAdd:'Įtraukti',btnModify:'Modifikuoti',btnUp:'Aukštyn',btnDown:'Žemyn',btnSetValue:'Laikyti pažymėta reikšme',btnDelete:'Trinti'},textarea:{title:'Teksto srities savybės',cols:'Ilgis',rows:'Plotis'},textfield:{title:'Teksto lauko savybės',name:'Vardas',value:'Reikšmė',charWidth:'Ilgis simboliais',maxChars:'Maksimalus simbolių skaičius',type:'Tipas',typeText:'Tekstas',typePass:'Slaptažodis'},hidden:{title:'Nerodomo lauko savybės',name:'Vardas',value:'Reikšmė'},image:{title:'Vaizdo savybės',titleButton:'Vaizdinio mygtuko savybės',menu:'Vaizdo savybės',infoTab:'Vaizdo informacija',btnUpload:'Siųsti į serverį',url:'URL',upload:'Nusiųsti',alt:'Alternatyvus Tekstas',width:'Plotis',height:'Aukštis',lockRatio:'Išlaikyti proporciją',resetSize:'Atstatyti dydį',border:'Rėmelis',hSpace:'Hor.Erdvė',vSpace:'Vert.Erdvė',align:'Lygiuoti',alignLeft:'Kairę',alignAbsBottom:'Absoliučią apačią',alignAbsMiddle:'Absoliutų vidurį',alignBaseline:'Apatinę liniją',alignBottom:'Apačią',alignMiddle:'Vidurį',alignRight:'Dešinę',alignTextTop:'Teksto viršūnę',alignTop:'Viršūnę',preview:'Peržiūra',alertUrl:'Prašome įvesti vaizdo URL',linkTab:'Nuoroda',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash savybės',propertiesTab:'Properties',title:'Flash savybės',chkPlay:'Automatinis paleidimas',chkLoop:'Ciklas',chkMenu:'Leisti Flash meniu',chkFull:'Allow Fullscreen',scale:'Mastelis',scaleAll:'Rodyti visą',scaleNoBorder:'Be rėmelio',scaleFit:'Tikslus atitikimas',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Lygiuoti',alignLeft:'Kairę',alignAbsBottom:'Absoliučią apačią',alignAbsMiddle:'Absoliutų vidurį',alignBaseline:'Apatinę liniją',alignBottom:'Apačią',alignMiddle:'Vidurį',alignRight:'Dešinę',alignTextTop:'Teksto viršūnę',alignTop:'Viršūnę',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Fono spalva',width:'Plotis',height:'Aukštis',hSpace:'Hor.Erdvė',vSpace:'Vert.Erdvė',validateSrc:'Prašome įvesti nuorodos URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Rašybos tikrinimas',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Žodyne nerastas',changeTo:'Pakeisti į',btnIgnore:'Ignoruoti',btnIgnoreAll:'Ignoruoti visus',btnReplace:'Pakeisti',btnReplaceAll:'Pakeisti visus',btnUndo:'Atšaukti',noSuggestions:'- Nėra pasiūlymų -',progress:'Vyksta rašybos tikrinimas...',noMispell:'Rašybos tikrinimas baigtas: Nerasta rašybos klaidų',noChanges:'Rašybos tikrinimas baigtas: Nėra pakeistų žodžių',oneChange:'Rašybos tikrinimas baigtas: Vienas žodis pakeistas',manyChanges:'Rašybos tikrinimas baigtas: Pakeista %1 žodžių',ieSpellDownload:'Rašybos tikrinimas neinstaliuotas. Ar Jūs norite jį dabar atsisiųsti?'},smiley:{toolbar:'Veideliai',title:'Įterpti veidelį'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Numeruotas sąrašas',bulletedlist:'Suženklintas sąrašas',indent:'Padidinti įtrauką',outdent:'Sumažinti įtrauką',justify:{left:'Lygiuoti kairę',center:'Centruoti',right:'Lygiuoti dešinę',block:'Lygiuoti abi puses'},blockquote:'Citata',clipboard:{title:'Įdėti',cutError:'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+X).',copyError:'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+C).',pasteMsg:'Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (<STRONG>Ctrl+V</STRONG>) ir paspauskite mygtuką <STRONG>OK</STRONG>.',securityMsg:'Dėl jūsų naršyklės saugumo nustatymų, redaktorius negali tiesiogiai pasiekti laikinosios atminties. Jums reikia nukopijuoti dar kartą į šį langą.'},pastefromword:{toolbar:'Įdėti iš Word',title:'Įdėti iš Word',advice:'Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (<STRONG>Ctrl+V</STRONG>) ir paspauskite mygtuką <STRONG>OK</STRONG>.',ignoreFontFace:'Ignoruoti šriftų nustatymus',removeStyle:'Pašalinti stilių nustatymus'},pasteText:{button:'Įdėti kaip gryną tekstą',title:'Įdėti kaip gryną tekstą'},templates:{button:'Šablonai',title:'Turinio šablonai',insertOption:'Pakeisti dabartinį turinį pasirinktu šablonu',selectPromptMsg:'Pasirinkite norimą šabloną<br>(<b>Dėmesio!</b> esamas turinys bus prarastas):',emptyListMsg:'(Šablonų sąrašas tuščias)'},showBlocks:'Rodyti blokus',stylesCombo:{label:'Stilius',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Šrifto formatas',voiceLabel:'Format',panelTitle:'Šrifto formatas',panelVoiceLabel:'Select a paragraph format',tag_p:'Normalus',tag_pre:'Formuotas',tag_address:'Kreipinio',tag_h1:'Antraštinis 1',tag_h2:'Antraštinis 2',tag_h3:'Antraštinis 3',tag_h4:'Antraštinis 4',tag_h5:'Antraštinis 5',tag_h6:'Antraštinis 6',tag_div:'Normal (DIV)'},font:{label:'Šriftas',voiceLabel:'Font',panelTitle:'Šriftas',panelVoiceLabel:'Select a font'},fontSize:{label:'Šrifto dydis',voiceLabel:'Font Size',panelTitle:'Šrifto dydis',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Teksto spalva',bgColorTitle:'Fono spalva',auto:'Automatinis',more:'Daugiau spalvų...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/sr-latn.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/sr-latn.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/sr-latn.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['sr-latn']={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Kôd',newPage:'Nova stranica',save:'Sačuvaj',preview:'Izgled stranice',cut:'Iseci',copy:'Kopiraj',paste:'Zalepi',print:'Štampa',underline:'Podvučeno',bold:'Podebljano',italic:'Kurziv',selectAll:'Označi sve',removeFormat:'Ukloni formatiranje',strike:'Precrtano',subscript:'Indeks',superscript:'Stepen',horizontalrule:'Unesi horizontalnu liniju',pagebreak:'Insert Page Break for Printing',unlink:'Ukloni link',undo:'Poni�ti akciju',redo:'Ponovi akciju',common:{browseServer:'Pretraži server',url:'URL',protocol:'Protokol',upload:'Pošalji',uploadSubmit:'Pošalji na server',image:'Slika',flash:'Fleš',form:'Forma',checkbox:'Polje za potvrdu',radio:'Radio-dugme',textField:'Tekstualno polje',textarea:'Zona teksta',hiddenField:'Skriveno polje',button:'Dugme',select:'Izborno polje',imageButton:'Dugme sa slikom',notSet:'<nije postavljeno>',id:'Id',name:'Naziv',langDir:'Smer jezika',langDirLtr:'S leva na desno (LTR)',langDirRtl:'S desna na levo (RTL)',langCode:'Kôd jezika',longDescr:'Pun opis URL',cssClass:'Stylesheet klase',advisoryTitle:'Advisory naslov',cssStyle:'Stil',ok:'OK',cancel:'Otkaži',generalTab:'General',advancedTab:'Napredni tagovi',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Unesi specijalni karakter',title:'Odaberite specijalni karakter'},link:{toolbar:'Unesi/izmeni link',menu:'Izmeni link',title:'Link',info:'Link Info',target:'Meta',upload:'Pošalji',advanced:'Napredni tagovi',type:'Vrsta linka',toAnchor:'Sidro na ovoj stranici',toEmail:'E-Mail',target:'Meta',targetNotSet:'<nije postavljeno>',targetFrame:'<okvir>',targetPopup:'<popup prozor>',targetNew:'Novi prozor (_blank)',targetTop:'Prozor na vrhu (_top)',targetSelf:'Isti prozor (_self)',targetParent:'Roditeljski prozor (_parent)',targetFrameName:'Naziv odredišnog frejma',targetPopupName:'Naziv popup prozora',popupFeatures:'Mogućnosti popup prozora',popupResizable:'Resizable',popupStatusBar:'Statusna linija',popupLocationBar:'Lokacija',popupToolbar:'Toolbar',popupMenuBar:'Kontekstni meni',popupFullScreen:'Prikaz preko celog ekrana (IE)',popupScrollBars:'Scroll bar',popupDependent:'Zavisno (Netscape)',popupWidth:'Širina',popupLeft:'Od leve ivice ekrana (px)',popupHeight:'Visina',popupTop:'Od vrha ekrana (px)',id:'Id',langDir:'Smer jezika',langDirNotSet:'<nije postavljeno>',langDirLTR:'S leva na desno (LTR)',langDirRTL:'S desna na levo (RTL)',acccessKey:'Pristupni taster',name:'Naziv',langCode:'Smer jezika',tabIndex:'Tab indeks',advisoryTitle:'Advisory naslov',advisoryContentType:'Advisory vrsta sadržaja',cssClasses:'Stylesheet klase',charset:'Linked Resource Charset',styles:'Stil',selectAnchor:'Odaberi sidro',anchorName:'Po nazivu sidra',anchorId:'Po Id-ju elementa',emailAddress:'E-Mail adresa',emailSubject:'Naslov',emailBody:'Sadržaj poruke',noAnchors:'(Nema dostupnih sidra)',noUrl:'Unesite URL linka',noEmail:'Otkucajte adresu elektronske pote'},anchor:{toolbar:'Unesi/izmeni sidro',menu:'Osobine sidra',title:'Osobine sidra',name:'Ime sidra',errorName:'Unesite ime sidra'},findAndReplace:{title:'Find and Replace',find:'Pretraga',replace:'Zamena',findWhat:'Pronadi:',replaceWith:'Zameni sa:',notFoundMsg:'Traženi tekst nije pronađen.',matchCase:'Razlikuj mala i velika slova',matchWord:'Uporedi cele reci',matchCyclic:'Match cyclic',replaceAll:'Zameni sve',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabela',title:'Osobine tabele',menu:'Osobine tabele',deleteTable:'Delete Table',rows:'Redova',columns:'Kolona',border:'Veličina okvira',align:'Ravnanje',alignNotSet:'<nije postavljeno>',alignLeft:'Levo',alignCenter:'Sredina',alignRight:'Desno',width:'Širina',widthPx:'piksela',widthPc:'procenata',height:'Visina',cellSpace:'Ćelijski prostor',cellPad:'Razmak ćelija',caption:'Naslov tabele',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Obriši ćelije',merge:'Spoj celije',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Obriši redove'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Obriši kolone'}},button:{title:'Osobine dugmeta',text:'Tekst (vrednost)',type:'Tip',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Osobine polja za potvrdu',radioTitle:'Osobine radio-dugmeta',value:'Vrednost',selected:'Označeno'},form:{title:'Osobine forme',menu:'Osobine forme',action:'Akcija',method:'Metoda',encoding:'Encoding',target:'Meta',targetNotSet:'<nije postavljeno>',targetNew:'Novi prozor (_blank)',targetTop:'Prozor na vrhu (_top)',targetSelf:'Isti prozor (_self)',targetParent:'Roditeljski prozor (_parent)'},select:{title:'Osobine izbornog polja',selectInfo:'Info',opAvail:'Dostupne opcije',value:'Vrednost',size:'Veličina',lines:'linija',chkMulti:'Dozvoli višestruku selekciju',opText:'Tekst',opValue:'Vrednost',btnAdd:'Dodaj',btnModify:'Izmeni',btnUp:'Gore',btnDown:'Dole',btnSetValue:'Podesi kao označenu vrednost',btnDelete:'Obriši'},textarea:{title:'Osobine zone teksta',cols:'Broj kolona',rows:'Broj redova'},textfield:{title:'Osobine tekstualnog polja',name:'Naziv',value:'Vrednost',charWidth:'Širina (karaktera)',maxChars:'Maksimalno karaktera',type:'Tip',typeText:'Tekst',typePass:'Lozinka'},hidden:{title:'Osobine skrivenog polja',name:'Naziv',value:'Vrednost'},image:{title:'Osobine slika',titleButton:'Osobine dugmeta sa slikom',menu:'Osobine slika',infoTab:'Info slike',btnUpload:'Pošalji na server',url:'URL',upload:'Pošalji',alt:'Alternativni tekst',width:'Širina',height:'Visina',lockRatio:'Zaključaj odnos',resetSize:'Resetuj veličinu',border:'Okvir',hSpace:'HSpace',vSpace:'VSpace',align:'Ravnanje',alignLeft:'Levo',alignAbsBottom:'Abs dole',alignAbsMiddle:'Abs sredina',alignBaseline:'Bazno',alignBottom:'Dole',alignMiddle:'Sredina',alignRight:'Desno',alignTextTop:'Vrh teksta',alignTop:'Vrh',preview:'Izgled',alertUrl:'Unesite URL slike',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Osobine fleša',propertiesTab:'Properties',title:'Osobine fleša',chkPlay:'Automatski start',chkLoop:'Ponavljaj',chkMenu:'Uključi fleš meni',chkFull:'Allow Fullscreen',scale:'Skaliraj',scaleAll:'Prikaži sve',scaleNoBorder:'Bez ivice',scaleFit:'Popuni površinu',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Ravnanje',alignLeft:'Levo',alignAbsBottom:'Abs dole',alignAbsMiddle:'Abs sredina',alignBaseline:'Bazno',alignBottom:'Dole',alignMiddle:'Sredina',alignRight:'Desno',alignTextTop:'Vrh teksta',alignTop:'Vrh',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Boja pozadine',width:'Širina',height:'Visina',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Unesite URL linka',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Proveri spelovanje',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Nije u rečniku',changeTo:'Izmeni',btnIgnore:'Ignoriši',btnIgnoreAll:'Ignoriši sve',btnReplace:'Zameni',btnReplaceAll:'Zameni sve',btnUndo:'Vrati akciju',noSuggestions:'- Bez sugestija -',progress:'Provera spelovanja u toku...',noMispell:'Provera spelovanja završena: greške nisu pronadene',noChanges:'Provera spelovanja završena: Nije izmenjena nijedna rec',oneChange:'Provera spelovanja završena: Izmenjena je jedna reč',manyChanges:'Provera spelovanja završena: %1 reč(i) je izmenjeno',ieSpellDownload:'Provera spelovanja nije instalirana. Da li želite da je skinete sa Interneta?'},smiley:{toolbar:'Smajli',title:'Unesi smajlija'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Nabrojiva lista',bulletedlist:'Nenabrojiva lista',indent:'Uvećaj levu marginu',outdent:'Smanji levu marginu',justify:{left:'Levo ravnanje',center:'Centriran tekst',right:'Desno ravnanje',block:'Obostrano ravnanje'},blockquote:'Blockquote',clipboard:{title:'Zalepi',cutError:'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl+X).',copyError:'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl+C).',pasteMsg:'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (<STRONG>Ctrl+V</STRONG>) i da pritisnete <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Zalepi iz Worda',title:'Zalepi iz Worda',advice:'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (<STRONG>Ctrl+V</STRONG>) i da pritisnete <STRONG>OK</STRONG>.',ignoreFontFace:'Ignoriši definicije fontova',removeStyle:'Ukloni definicije stilova'},pasteText:{button:'Zalepi kao čist tekst',title:'Zalepi kao čist tekst'},templates:{button:'Obrasci',title:'Obrasci za sadržaj',insertOption:'Replace actual contents',selectPromptMsg:'Molimo Vas da odaberete obrazac koji ce biti primenjen na stranicu (trenutni sadržaj ce biti obrisan):',emptyListMsg:'(Nema definisanih obrazaca)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stil',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',voiceLabel:'Format',panelTitle:'Format',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatirano',tag_address:'Adresa',tag_h1:'Naslov 1',tag_h2:'Naslov 2',tag_h3:'Naslov 3',tag_h4:'Naslov 4',tag_h5:'Naslov 5',tag_h6:'Naslov 6',tag_div:'Normal (DIV)'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font',panelVoiceLabel:'Select a font'},fontSize:{label:'Veličina fonta',voiceLabel:'Font Size',panelTitle:'Veličina fonta',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Boja teksta',bgColorTitle:'Boja pozadine',auto:'Automatski',more:'Više boja...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/lv.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/lv.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/lv.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.lv={dir:'ltr',editorTitle:'Rich text editor, %1',source:'HTML kods',newPage:'Jauna lapa',save:'Saglabāt',preview:'Pārskatīt',cut:'Izgriezt',copy:'Kopēt',paste:'Ievietot',print:'Drukāt',underline:'Apakšsvītra',bold:'Treknu šriftu',italic:'Slīprakstā',selectAll:'Iezīmēt visu',removeFormat:'Noņemt stilus',strike:'Pārsvītrots',subscript:'Zemrakstā',superscript:'Augšrakstā',horizontalrule:'Ievietot horizontālu Atdalītājsvītru',pagebreak:'Ievietot lapas pārtraukumu',unlink:'Noņemt hipersaiti',undo:'Atcelt',redo:'Atkārtot',common:{browseServer:'Skatīt servera saturu',url:'URL',protocol:'Protokols',upload:'Augšupielādēt',uploadSubmit:'Nosūtīt serverim',image:'Attēls',flash:'Flash',form:'Forma',checkbox:'Atzīmēšanas kastīte',radio:'Izvēles poga',textField:'Teksta rinda',textarea:'Teksta laukums',hiddenField:'Paslēpta teksta rinda',button:'Poga',select:'Iezīmēšanas lauks',imageButton:'Attēlpoga',notSet:'<nav iestatīts>',id:'Id',name:'Nosaukums',langDir:'Valodas lasīšanas virziens',langDirLtr:'No kreisās uz labo (LTR)',langDirRtl:'No labās uz kreiso (RTL)',langCode:'Valodas kods',longDescr:'Gara apraksta Hipersaite',cssClass:'Stilu saraksta klases',advisoryTitle:'Konsultatīvs virsraksts',cssStyle:'Stils',ok:'Darīts!',cancel:'Atcelt',generalTab:'General',advancedTab:'Izvērstais',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Ievietot speciālo simbolu',title:'Ievietot īpašu simbolu'},link:{toolbar:'Ievietot/Labot hipersaiti',menu:'Labot hipersaiti',title:'Hipersaite',info:'Hipersaites informācija',target:'Mērķis',upload:'Augšupielādēt',advanced:'Izvērstais',type:'Hipersaites tips',toAnchor:'Iezīme šajā lapā',toEmail:'E-pasts',target:'Mērķis',targetNotSet:'<nav iestatīts>',targetFrame:'<ietvars>',targetPopup:'<uznirstošā logā>',targetNew:'Jaunā logā (_blank)',targetTop:'Visredzamākajā logā (_top)',targetSelf:'Tajā pašā logā (_self)',targetParent:'Esošajā logā (_parent)',targetFrameName:'Mērķa ietvara nosaukums',targetPopupName:'Uznirstošā loga nosaukums',popupFeatures:'Uznirstošā loga nosaukums īpašības',popupResizable:'Resizable',popupStatusBar:'Statusa josla',popupLocationBar:'Atrašanās vietas josla',popupToolbar:'Rīku josla',popupMenuBar:'Izvēlnes josla',popupFullScreen:'Pilnā ekrānā (IE)',popupScrollBars:'Ritjoslas',popupDependent:'Atkarīgs (Netscape)',popupWidth:'Platums',popupLeft:'Kreisā koordināte',popupHeight:'Augstums',popupTop:'Augšējā koordināte',id:'Id',langDir:'Valodas lasīšanas virziens',langDirNotSet:'<nav iestatīts>',langDirLTR:'No kreisās uz labo (LTR)',langDirRTL:'No labās uz kreiso (RTL)',acccessKey:'Pieejas kods',name:'Nosaukums',langCode:'Valodas lasīšanas virziens',tabIndex:'Ciļņu indekss',advisoryTitle:'Konsultatīvs virsraksts',advisoryContentType:'Konsultatīvs satura tips',cssClasses:'Stilu saraksta klases',charset:'Pievienotā resursa kodu tabula',styles:'Stils',selectAnchor:'Izvēlēties iezīmi',anchorName:'Pēc iezīmes nosaukuma',anchorId:'Pēc elementa ID',emailAddress:'E-pasta adrese',emailSubject:'Ziņas tēma',emailBody:'Ziņas saturs',noAnchors:'(Šajā dokumentā nav iezīmju)',noUrl:'Lūdzu norādi hipersaiti',noEmail:'Lūdzu norādi e-pasta adresi'},anchor:{toolbar:'Ievietot/Labot iezīmi',menu:'Iezīmes īpašības',title:'Iezīmes īpašības',name:'Iezīmes nosaukums',errorName:'Lūdzu norādiet iezīmes nosaukumu'},findAndReplace:{title:'Find and Replace',find:'Meklēt',replace:'Nomainīt',findWhat:'Meklēt:',replaceWith:'Nomainīt uz:',notFoundMsg:'Norādītā frāze netika atrasta.',matchCase:'Reģistrjūtīgs',matchWord:'Jāsakrīt pilnībā',matchCyclic:'Match cyclic',replaceAll:'Aizvietot visu',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabula',title:'Tabulas īpašības',menu:'Tabulas īpašības',deleteTable:'Dzēst tabulu',rows:'Rindas',columns:'Kolonnas',border:'Rāmja izmērs',align:'Novietojums',alignNotSet:'<nav norādīts>',alignLeft:'Pa kreisi',alignCenter:'Centrēti',alignRight:'Pa labi',width:'Platums',widthPx:'pikseļos',widthPc:'procentuāli',height:'Augstums',cellSpace:'Rūtiņu atstatums',cellPad:'Rūtiņu nobīde',caption:'Leģenda',summary:'Anotācija',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Šūna',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Dzēst rūtiņas',merge:'Apvienot rūtiņas',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Rinda',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Dzēst rindas'},column:{menu:'Kolonna',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Dzēst kolonnas'}},button:{title:'Pogas īpašības',text:'Teksts (vērtība)',type:'Tips',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Atzīmēšanas kastītes īpašības',radioTitle:'Izvēles poga īpašības',value:'Vērtība',selected:'Iezīmēts'},form:{title:'Formas īpašības',menu:'Formas īpašības',action:'Darbība',method:'Metode',encoding:'Encoding',target:'Mērķis',targetNotSet:'<nav iestatīts>',targetNew:'Jaunā logā (_blank)',targetTop:'Visredzamākajā logā (_top)',targetSelf:'Tajā pašā logā (_self)',targetParent:'Esošajā logā (_parent)'},select:{title:'Iezīmēšanas lauka īpašības',selectInfo:'Informācija',opAvail:'Pieejamās iespējas',value:'Vērtība',size:'Izmērs',lines:'rindas',chkMulti:'Atļaut vairākus iezīmējumus',opText:'Teksts',opValue:'Vērtība',btnAdd:'Pievienot',btnModify:'Veikt izmaiņas',btnUp:'Augšup',btnDown:'Lejup',btnSetValue:'Noteikt kā iezīmēto vērtību',btnDelete:'Dzēst'},textarea:{title:'Teksta laukuma īpašības',cols:'Kolonnas',rows:'Rindas'},textfield:{title:'Teksta rindas  īpašības',name:'Nosaukums',value:'Vērtība',charWidth:'Simbolu platums',maxChars:'Simbolu maksimālais daudzums',type:'Tips',typeText:'Teksts',typePass:'Parole'},hidden:{title:'Paslēptās teksta rindas īpašības',name:'Nosaukums',value:'Vērtība'},image:{title:'Attēla īpašības',titleButton:'Attēlpogas īpašības',menu:'Attēla īpašības',infoTab:'Informācija par attēlu',btnUpload:'Nosūtīt serverim',url:'URL',upload:'Augšupielādēt',alt:'Alternatīvais teksts',width:'Platums',height:'Augstums',lockRatio:'Nemainīga Augstuma/Platuma attiecība',resetSize:'Atjaunot sākotnējo izmēru',border:'Rāmis',hSpace:'Horizontālā telpa',vSpace:'Vertikālā telpa',align:'Nolīdzināt',alignLeft:'Pa kreisi',alignAbsBottom:'Absolūti apakšā',alignAbsMiddle:'Absolūti vertikāli centrēts',alignBaseline:'Pamatrindā',alignBottom:'Apakšā',alignMiddle:'Vertikāli centrēts',alignRight:'Pa labi',alignTextTop:'Teksta augšā',alignTop:'Augšā',preview:'Pārskats',alertUrl:'Lūdzu norādīt attēla hipersaiti',linkTab:'Hipersaite',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash īpašības',propertiesTab:'Properties',title:'Flash īpašības',chkPlay:'Automātiska atskaņošana',chkLoop:'Nepārtraukti',chkMenu:'Atļaut Flash izvēlni',chkFull:'Allow Fullscreen',scale:'Mainīt izmēru',scaleAll:'Rādīt visu',scaleNoBorder:'Bez rāmja',scaleFit:'Precīzs izmērs',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Nolīdzināt',alignLeft:'Pa kreisi',alignAbsBottom:'Absolūti apakšā',alignAbsMiddle:'Absolūti vertikāli centrēts',alignBaseline:'Pamatrindā',alignBottom:'Apakšā',alignMiddle:'Vertikāli centrēts',alignRight:'Pa labi',alignTextTop:'Teksta augšā',alignTop:'Augšā',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Fona krāsa',width:'Platums',height:'Augstums',hSpace:'Horizontālā telpa',vSpace:'Vertikālā telpa',validateSrc:'Lūdzu norādi hipersaiti',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Pareizrakstības pārbaude',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Netika atrasts vārdnīcā',changeTo:'Nomainīt uz',btnIgnore:'Ignorēt',btnIgnoreAll:'Ignorēt visu',btnReplace:'Aizvietot',btnReplaceAll:'Aizvietot visu',btnUndo:'Atcelt',noSuggestions:'- Nav ieteikumu -',progress:'Notiek pareizrakstības pārbaude...',noMispell:'Pareizrakstības pārbaude pabeigta: kļūdas netika atrastas',noChanges:'Pareizrakstības pārbaude pabeigta: nekas netika labots',oneChange:'Pareizrakstības pārbaude pabeigta: 1 vārds izmainīts',manyChanges:'Pareizrakstības pārbaude pabeigta: %1 vārdi tika mainīti',ieSpellDownload:'Pareizrakstības pārbaudītājs nav pievienots. Vai vēlaties to lejupielādēt tagad?'},smiley:{toolbar:'Smaidiņi',title:'Ievietot smaidiņu'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Numurēts saraksts',bulletedlist:'Izcelts saraksts',indent:'Palielināt atkāpi',outdent:'Samazināt atkāpi',justify:{left:'Izlīdzināt pa kreisi',center:'Izlīdzināt pret centru',right:'Izlīdzināt pa labi',block:'Izlīdzināt malas'},blockquote:'Blockquote',clipboard:{title:'Ievietot',cutError:'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt izgriešanas darbību.  Lūdzu, izmantojiet (Ctrl+X, lai veiktu šo darbību.',copyError:'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt kopēšanas darbību.  Lūdzu, izmantojiet (Ctrl+C), lai veiktu šo darbību.',pasteMsg:'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (<STRONG>Ctrl+V</STRONG>) un apstipriniet ar <STRONG>Darīts!</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Ievietot no Worda',title:'Ievietot no Worda',advice:'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (<STRONG>Ctrl+V</STRONG>) un apstipriniet ar <STRONG>Darīts!</STRONG>.',ignoreFontFace:'Ignorēt iepriekš norādītos fontus',removeStyle:'Noņemt norādītos stilus'},pasteText:{button:'Ievietot kā vienkāršu tekstu',title:'Ievietot kā vienkāršu tekstu'},templates:{button:'Sagataves',title:'Satura sagataves',insertOption:'Replace actual contents',selectPromptMsg:'Lūdzu, norādiet sagatavi, ko atvērt editorā<br>(patreizējie dati tiks zaudēti):',emptyListMsg:'(Nav norādītas sagataves)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stils',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formāts',voiceLabel:'Format',panelTitle:'Formāts',panelVoiceLabel:'Select a paragraph format',tag_p:'Normāls teksts',tag_pre:'Formatēts teksts',tag_address:'Adrese',tag_h1:'Virsraksts 1',tag_h2:'Virsraksts 2',tag_h3:'Virsraksts 3',tag_h4:'Virsraksts 4',tag_h5:'Virsraksts 5',tag_h6:'Virsraksts 6',tag_div:'Rindkopa (DIV)'},font:{label:'Šrifts',voiceLabel:'Font',panelTitle:'Šrifts',panelVoiceLabel:'Select a font'},fontSize:{label:'Izmērs',voiceLabel:'Font Size',panelTitle:'Izmērs',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Teksta krāsa',bgColorTitle:'Fona krāsa',auto:'Automātiska',more:'Plašāka palete...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/zh.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/zh.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/zh.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.zh={dir:'ltr',editorTitle:'文書處理器, %1',source:'原始碼',newPage:'開新檔案',save:'儲存',preview:'預覽',cut:'剪下',copy:'複製',paste:'貼上',print:'列印',underline:'底線',bold:'粗體',italic:'斜體',selectAll:'全選',removeFormat:'清除格式',strike:'刪除線',subscript:'下標',superscript:'上標',horizontalrule:'插入水平線',pagebreak:'插入分頁符號',unlink:'移除超連結',undo:'復原',redo:'重複',common:{browseServer:'瀏覽伺服器端',url:'URL',protocol:'通訊協定',upload:'上傳',uploadSubmit:'上傳至伺服器',image:'影像',flash:'Flash',form:'表單',checkbox:'核取方塊',radio:'選項按鈕',textField:'文字方塊',textarea:'文字區域',hiddenField:'隱藏欄位',button:'按鈕',select:'清單/選單',imageButton:'影像按鈕',notSet:'<尚未設定>',id:'ID',name:'名稱',langDir:'語言方向',langDirLtr:'由左而右 (LTR)',langDirRtl:'由右而左 (RTL)',langCode:'語言代碼',longDescr:'詳細 URL',cssClass:'樣式表類別',advisoryTitle:'標題',cssStyle:'樣式',ok:'確定',cancel:'取消',generalTab:'一般',advancedTab:'進階',validateNumberFailed:'需要輸入數字格式',confirmNewPage:'現存的修改尚未儲存，要開新檔案？',confirmCancel:'部份選項尚未儲存，要關閉對話盒？',unavailable:'%1<span class="cke_accessibility">, 已關閉</span>'},specialChar:{toolbar:'插入特殊符號',title:'請選擇特殊符號'},link:{toolbar:'插入/編輯超連結',menu:'編輯超連結',title:'超連結',info:'超連結資訊',target:'目標',upload:'上傳',advanced:'進階',type:'超連接類型',toAnchor:'本頁錨點',toEmail:'電子郵件',target:'目標',targetNotSet:'<尚未設定>',targetFrame:'<框架>',targetPopup:'<快顯視窗>',targetNew:'新視窗 (_blank)',targetTop:'最上層視窗 (_top)',targetSelf:'本視窗 (_self)',targetParent:'父視窗 (_parent)',targetFrameName:'目標框架名稱',targetPopupName:'快顯視窗名稱',popupFeatures:'快顯視窗屬性',popupResizable:'可縮放',popupStatusBar:'狀態列',popupLocationBar:'網址列',popupToolbar:'工具列',popupMenuBar:'選單列',popupFullScreen:'全螢幕 (IE)',popupScrollBars:'捲軸',popupDependent:'從屬 (NS)',popupWidth:'寬',popupLeft:'左',popupHeight:'高',popupTop:'右',id:'ID',langDir:'語言方向',langDirNotSet:'<尚未設定>',langDirLTR:'由左而右 (LTR)',langDirRTL:'由右而左 (RTL)',acccessKey:'存取鍵',name:'名稱',langCode:'語言方向',tabIndex:'定位順序',advisoryTitle:'標題',advisoryContentType:'內容類型',cssClasses:'樣式表類別',charset:'連結資源之編碼',styles:'樣式',selectAnchor:'請選擇錨點',anchorName:'依錨點名稱',anchorId:'依元件 ID',emailAddress:'電子郵件',emailSubject:'郵件主旨',emailBody:'郵件內容',noAnchors:'(本文件尚無可用之錨點)',noUrl:'請輸入欲連結的 URL',noEmail:'請輸入電子郵件位址'},anchor:{toolbar:'插入/編輯錨點',menu:'錨點屬性',title:'錨點屬性',name:'錨點名稱',errorName:'請輸入錨點名稱'},findAndReplace:{title:'尋找與取代',find:'尋找',replace:'取代',findWhat:'尋找:',replaceWith:'取代:',notFoundMsg:'未找到指定的文字。',matchCase:'大小寫須相符',matchWord:'全字相符',matchCyclic:'循環搜索',replaceAll:'全部取代',replaceSuccessMsg:'共完成 %1 次取代'},table:{toolbar:'表格',title:'表格屬性',menu:'表格屬性',deleteTable:'刪除表格',rows:'列數',columns:'欄數',border:'邊框',align:'對齊',alignNotSet:'<未設定>',alignLeft:'靠左對齊',alignCenter:'置中',alignRight:'靠右對齊',width:'寬度',widthPx:'像素',widthPc:'百分比',height:'高度',cellSpace:'間距',cellPad:'內距',caption:'標題',summary:'摘要',headers:'標題',headersNone:'無標題',headersColumn:'第一欄',headersRow:'第一列',headersBoth:'第一欄和第一列',invalidRows:'必須有一或更多的列',invalidCols:'必須有一或更多的欄',invalidBorder:'邊框大小必須為數字格式',invalidWidth:'表格寬度必須為數字格式',invalidHeight:'表格高度必須為數字格式',invalidCellSpacing:'儲存格間距必須為數字格式',invalidCellPadding:'儲存格內距必須為數字格式',cell:{menu:'儲存格',insertBefore:'向左插入儲存格',insertAfter:'向右插入儲存格',deleteCell:'刪除儲存格',merge:'合併儲存格',mergeRight:'向右合併儲存格',mergeDown:'向下合併儲存格',splitHorizontal:'橫向分割儲存格',splitVertical:'縱向分割儲存格',title:'儲存格屬性',cellType:'儲存格類別',rowSpan:'儲存格列數',colSpan:'儲存格欄數',wordWrap:'自動換行',hAlign:'水平對齊',vAlign:'垂直對齊',alignTop:'向上對齊',alignMiddle:'置中對齊',alignBottom:'向下對齊',alignBaseline:'基線對齊',bgColor:'背景顏色',borderColor:'邊框顏色',data:'數據',header:'標題',yes:'是',no:'否',invalidWidth:'儲存格寬度必須為數字格式',invalidHeight:'儲存格高度必須為數字格式',invalidRowSpan:'儲存格列數必須為整數格式',invalidColSpan:'儲存格欄數度必須為整數格式',chooseColor:'Choose'},row:{menu:'列',insertBefore:'向上插入列',insertAfter:'向下插入列',deleteRow:'刪除列'},column:{menu:'欄',insertBefore:'向左插入欄',insertAfter:'向右插入欄',deleteColumn:'刪除欄'}},button:{title:'按鈕屬性',text:'顯示文字 (值)',type:'類型',typeBtn:'按鈕 (Button)',typeSbm:'送出 (Submit)',typeRst:'重設 (Reset)'},checkboxAndRadio:{checkboxTitle:'核取方塊屬性',radioTitle:'選項按鈕屬性',value:'選取值',selected:'已選取'},form:{title:'表單屬性',menu:'表單屬性',action:'動作',method:'方法',encoding:'表單編碼',target:'目標',targetNotSet:'<尚未設定>',targetNew:'新視窗 (_blank)',targetTop:'最上層視窗 (_top)',targetSelf:'本視窗 (_self)',targetParent:'父視窗 (_parent)'},select:{title:'清單/選單屬性',selectInfo:'資訊',opAvail:'可用選項',value:'值',size:'大小',lines:'行',chkMulti:'可多選',opText:'顯示文字',opValue:'選取值',btnAdd:'新增',btnModify:'修改',btnUp:'上移',btnDown:'下移',btnSetValue:'設為預設值',btnDelete:'刪除'},textarea:{title:'文字區域屬性',cols:'字元寬度',rows:'列數'},textfield:{title:'文字方塊屬性',name:'名稱',value:'值',charWidth:'字元寬度',maxChars:'最多字元數',type:'類型',typeText:'文字',typePass:'密碼'},hidden:{title:'隱藏欄位屬性',name:'名稱',value:'值'},image:{title:'影像屬性',titleButton:'影像按鈕屬性',menu:'影像屬性',infoTab:'影像資訊',btnUpload:'上傳至伺服器',url:'URL',upload:'上傳',alt:'替代文字',width:'寬度',height:'高度',lockRatio:'等比例',resetSize:'重設為原大小',border:'邊框',hSpace:'水平距離',vSpace:'垂直距離',align:'對齊',alignLeft:'靠左對齊',alignAbsBottom:'絕對下方',alignAbsMiddle:'絕對中間',alignBaseline:'基準線',alignBottom:'靠下對齊',alignMiddle:'置中對齊',alignRight:'靠右對齊',alignTextTop:'文字上方',alignTop:'靠上對齊',preview:'預覽',alertUrl:'請輸入影像 URL',linkTab:'超連結',button2Img:'要把影像按鈕改成影像嗎？',img2Button:'要把影像改成影像按鈕嗎？',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash 屬性',propertiesTab:'屬性',title:'Flash 屬性',chkPlay:'自動播放',chkLoop:'重複',chkMenu:'開啟選單',chkFull:'啟動全螢幕顯示',scale:'縮放',scaleAll:'全部顯示',scaleNoBorder:'無邊框',scaleFit:'精確符合',access:'允許腳本訪問',accessAlways:'永遠',accessSameDomain:'相同域名',accessNever:'永不',align:'對齊',alignLeft:'靠左對齊',alignAbsBottom:'絕對下方',alignAbsMiddle:'絕對中間',alignBaseline:'基準線',alignBottom:'靠下對齊',alignMiddle:'置中對齊',alignRight:'靠右對齊',alignTextTop:'文字上方',alignTop:'靠上對齊',quality:'質素',qualityBest:'最好',qualityHigh:'高',qualityAutoHigh:'高（自動）',qualityMedium:'中（自動）',qualityAutoLow:'低（自動）',qualityLow:'低',windowModeWindow:'視窗',windowModeOpaque:'不透明',windowModeTransparent:'透明',windowMode:'視窗模式',flashvars:'Flash 變數',bgcolor:'背景顏色',width:'寬度',height:'高度',hSpace:'水平距離',vSpace:'垂直距離',validateSrc:'請輸入欲連結的 URL',validateWidth:'寬度必須為數字格式',validateHeight:'高度必須為數字格式',validateHSpace:'水平間距必須為數字格式',validateVSpace:'垂直間距必須為數字格式'},spellCheck:{toolbar:'拼字檢查',title:'拼字檢查',notAvailable:'抱歉，服務目前暫不可用',errorLoading:'無法聯系侍服器: %s.',notInDic:'不在字典中',changeTo:'更改為',btnIgnore:'忽略',btnIgnoreAll:'全部忽略',btnReplace:'取代',btnReplaceAll:'全部取代',btnUndo:'復原',noSuggestions:'- 無建議值 -',progress:'進行拼字檢查中…',noMispell:'拼字檢查完成：未發現拼字錯誤',noChanges:'拼字檢查完成：未更改任何單字',oneChange:'拼字檢查完成：更改了 1 個單字',manyChanges:'拼字檢查完成：更改了 %1 個單字',ieSpellDownload:'尚未安裝拼字檢查元件。您是否想要現在下載？'},smiley:{toolbar:'表情符號',title:'插入表情符號'},elementsPath:{eleTitle:'%1 元素'},numberedlist:'編號清單',bulletedlist:'項目清單',indent:'增加縮排',outdent:'減少縮排',justify:{left:'靠左對齊',center:'置中',right:'靠右對齊',block:'左右對齊'},blockquote:'引用文字',clipboard:{title:'貼上',cutError:'瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用快捷鍵 (Ctrl+X) 剪下。',copyError:'瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用快捷鍵 (Ctrl+C) 複製。',pasteMsg:'請使用快捷鍵 (<strong>Ctrl+V</strong>) 貼到下方區域中並按下 <strong>確定</strong>',securityMsg:'因為瀏覽器的安全性設定，本編輯器無法直接存取您的剪貼簿資料，請您自行在本視窗進行貼上動作。'},pastefromword:{toolbar:'自 Word 貼上',title:'自 Word 貼上',advice:'請使用快捷鍵 (<strong>Ctrl+V</strong>) 貼到下方區域中並按下 <strong>確定</strong>',ignoreFontFace:'移除字型設定',removeStyle:'移除樣式設定'},pasteText:{button:'貼為純文字格式',title:'貼為純文字格式'},templates:{button:'樣版',title:'內容樣版',insertOption:'取代原有內容',selectPromptMsg:'請選擇欲開啟的樣版<br> (原有的內容將會被清除):',emptyListMsg:'(無樣版)'},showBlocks:'顯示區塊',stylesCombo:{label:'樣式',voiceLabel:'樣式',panelVoiceLabel:'選擇樣式',panelTitle1:'塊級元素樣式',panelTitle2:'內聯元素樣式',panelTitle3:'物件元素樣式'},format:{label:'格式',voiceLabel:'格式',panelTitle:'格式',panelVoiceLabel:'選擇段落格式',tag_p:'一般',tag_pre:'已格式化',tag_address:'位址',tag_h1:'標題 1',tag_h2:'標題 2',tag_h3:'標題 3',tag_h4:'標題 4',tag_h5:'標題 5',tag_h6:'標題 6',tag_div:'一般 (DIV)'},font:{label:'字體',voiceLabel:'字體',panelTitle:'字體',panelVoiceLabel:'選擇字體'},fontSize:{label:'大小',voiceLabel:'文字大小',panelTitle:'大小',panelVoiceLabel:'選擇文字大小'},colorButton:{textColorTitle:'文字顏色',bgColorTitle:'背景顏色',auto:'自動',more:'更多顏色…'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'即時拼寫檢查',enable:'啟用即時拼寫檢查',disable:'關閉即時拼寫檢查',about:'關於即時拼寫檢查',toggle:'啟用／關閉即時拼寫檢查',options:'選項',langs:'語言',moreSuggestions:'更多拼寫建議',ignore:'忽略',ignoreAll:'全部忽略',addWord:'添加單詞',emptyDic:'字典名不應為空.',optionsTab:'選項',languagesTab:'語言',dictionariesTab:'字典',aboutTab:'關於'},about:{title:'關於 CKEditor',dlgTitle:'關於 CKEditor',moreInfo:'訪問我們的網站以獲取更多關於協議的信息',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'最大化',minimize:'Minimize',fakeobjects:{anchor:'錨點',flash:'Flash 動畫',div:'分頁',unknown:'不明物件'},resize:'拖拽改變大小',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/ca.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/ca.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/ca.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ca={dir:'ltr',editorTitle:'Editor de text enriquit, %1',source:'Codi font',newPage:'Nova Pàgina',save:'Desa',preview:'Visualització prèvia',cut:'Retalla',copy:'Copia',paste:'Enganxa',print:'Imprimeix',underline:'Subratllat',bold:'Negreta',italic:'Cursiva',selectAll:'Selecciona-ho tot',removeFormat:'Elimina Format',strike:'Barrat',subscript:'Subíndex',superscript:'Superíndex',horizontalrule:'Insereix línia horitzontal',pagebreak:'Insereix salt de pàgina',unlink:"Elimina l'enllaç",undo:'Desfés',redo:'Refés',common:{browseServer:'Veure servidor',url:'URL',protocol:'Protocol',upload:'Puja',uploadSubmit:'Envia-la al servidor',image:'Imatge',flash:'Flash',form:'Formulari',checkbox:'Casella de verificació',radio:"Botó d'opció",textField:'Camp de text',textarea:'Àrea de text',hiddenField:'Camp ocult',button:'Botó',select:'Camp de selecció',imageButton:"Botó d'imatge",notSet:'<no definit>',id:'Id',name:'Nom',langDir:"Direcció de l'idioma",langDirLtr:"D'esquerra a dreta (LTR)",langDirRtl:'De dreta a esquerra (RTL)',langCode:"Codi d'idioma",longDescr:'Descripció llarga de la URL',cssClass:"Classes del full d'estil",advisoryTitle:'Títol consultiu',cssStyle:'Estil',ok:"D'acord",cancel:'Cancel·la',generalTab:'General',advancedTab:'Avançat',validateNumberFailed:'Aquest valor no és un número.',confirmNewPage:'Els canvis en aquest contingut que no es desin es perdran. Esteu segur que voleu carregar una pàgina nova?',confirmCancel:"Algunes opcions s'han canviat. Esteu segur que voleu tancar la finestra de diàleg?",unavailable:'%1<span class="cke_accessibility">, no disponible</span>'},specialChar:{toolbar:'Insereix caràcter especial',title:'Selecciona el caràcter especial'},link:{toolbar:'Insereix/Edita enllaç',menu:"Edita l'enllaç",title:'Enllaç',info:"Informació de l'enllaç",target:'Destí',upload:'Puja',advanced:'Avançat',type:"Tipus d'enllaç",toAnchor:'Àncora en aquesta pàgina',toEmail:'Correu electrònic',target:'Destí',targetNotSet:'<no definit>',targetFrame:'<marc>',targetPopup:'<finestra emergent>',targetNew:'Nova finestra (_blank)',targetTop:'Finestra Major (_top)',targetSelf:'Mateixa finestra (_self)',targetParent:'Finestra pare (_parent)',targetFrameName:'Nom del marc de destí',targetPopupName:'Nom finestra popup',popupFeatures:'Característiques finestra popup',popupResizable:'Redimensionable',popupStatusBar:"Barra d'estat",popupLocationBar:"Barra d'adreça",popupToolbar:"Barra d'eines",popupMenuBar:'Barra de menú',popupFullScreen:'Pantalla completa (IE)',popupScrollBars:"Barres d'scroll",popupDependent:'Depenent (Netscape)',popupWidth:'Amplada',popupLeft:'Posició esquerra',popupHeight:'Alçada',popupTop:'Posició dalt',id:'Id',langDir:"Direcció de l'idioma",langDirNotSet:'<no definit>',langDirLTR:"D'esquerra a dreta (LTR)",langDirRTL:'De dreta a esquerra (RTL)',acccessKey:"Clau d'accés",name:'Nom',langCode:"Direcció de l'idioma",tabIndex:'Index de Tab',advisoryTitle:'Títol consultiu',advisoryContentType:'Tipus de contingut consultiu',cssClasses:"Classes del full d'estil",charset:'Conjunt de caràcters font enllaçat',styles:'Estil',selectAnchor:'Selecciona una àncora',anchorName:"Per nom d'àncora",anchorId:"Per Id d'element",emailAddress:'Adreça de correu electrònic',emailSubject:'Assumpte del missatge',emailBody:'Cos del missatge',noAnchors:'(No hi ha àncores disponibles en aquest document)',noUrl:"Si us plau, escrigui l'enllaç URL",noEmail:"Si us plau, escrigui l'adreça correu electrònic"},anchor:{toolbar:'Insereix/Edita àncora',menu:"Propietats de l'àncora",title:"Propietats de l'àncora",name:"Nom de l'àncora",errorName:"Si us plau, escriviu el nom de l'ancora"},findAndReplace:{title:'Cerca i reemplaça',find:'Cerca',replace:'Reemplaça',findWhat:'Cerca:',replaceWith:'Remplaça amb:',notFoundMsg:"El text especificat no s'ha trobat.",matchCase:'Distingeix majúscules/minúscules',matchWord:'Només paraules completes',matchCyclic:'Match cyclic',replaceAll:'Reemplaça-ho tot',replaceSuccessMsg:'%1 ocurrència/es reemplaçada/es.'},table:{toolbar:'Taula',title:'Propietats de la taula',menu:'Propietats de la taula',deleteTable:'Suprimeix la taula',rows:'Files',columns:'Columnes',border:'Mida vora',align:'Alineació',alignNotSet:'<No Definit>',alignLeft:'Esquerra',alignCenter:'Centre',alignRight:'Dreta',width:'Amplada',widthPx:'píxels',widthPc:'percentatge',height:'Alçada',cellSpace:'Espaiat de cel·les',cellPad:'Encoixinament de cel·les',caption:'Títol',summary:'Resum',headers:'Capçaleres',headersNone:'Cap',headersColumn:'Primera columna',headersRow:'Primera fila',headersBoth:'Ambdues',invalidRows:'El nombre de files ha de ser un nombre major que 0.',invalidCols:'El nombre de columnes ha de ser un nombre major que 0.',invalidBorder:'El gruix de la vora ha de ser un nombre.',invalidWidth:"L'amplada de la taula  ha de ser un nombre.",invalidHeight:"L'alçada de la taula  ha de ser un nombre.",invalidCellSpacing:"L'espaiat de cel·la  ha de ser un nombre.",invalidCellPadding:"L'encoixinament de cel·la  ha de ser un nombre.",cell:{menu:'Cel·la',insertBefore:'Insereix cel·la abans de',insertAfter:'Insereix cel·la darrera',deleteCell:'Suprimeix les cel·les',merge:'Fusiona les cel·les',mergeRight:'Fusiona cap a la dreta',mergeDown:'Fusiona cap avall',splitHorizontal:'Divideix la cel·la horitzontalment',splitVertical:'Divideix la cel·la verticalment',title:'Propertiat de la cel·la',cellType:'Tipus de cel·la',rowSpan:'Expansió de files',colSpan:'Expansió de columnes',wordWrap:'Ajustar al contingut',hAlign:'Aliniació Horizontal',vAlign:'Aliniació Vertical',alignTop:'A dalt',alignMiddle:'Al mig',alignBottom:'A baix',alignBaseline:'A la línia base',bgColor:'Color de fons',borderColor:'Color de la vora',data:'Data',header:'Capçalera',yes:'Sí',no:'No',invalidWidth:"L'amplada de cel·la ha de ser un nombre.",invalidHeight:"L'alçada de cel·la ha de ser un nombre.",invalidRowSpan:"L'expansió de files ha de ser un nombre enter.",invalidColSpan:"L'expansió de columnes ha de ser un nombre enter.",chooseColor:'Choose'},row:{menu:'Fila',insertBefore:'Insereix fila abans de',insertAfter:'Insereix fila darrera',deleteRow:'Suprimeix una fila'},column:{menu:'Columna',insertBefore:'Insereix columna abans de',insertAfter:'Insereix columna darrera',deleteColumn:'Suprimeix una columna'}},button:{title:'Propietats del botó',text:'Text (Valor)',type:'Tipus',typeBtn:'Botó',typeSbm:'Transmet formulari',typeRst:'Reinicia formulari'},checkboxAndRadio:{checkboxTitle:'Propietats de la casella de verificació',radioTitle:"Propietats del botó d'opció",value:'Valor',selected:'Seleccionat'},form:{title:'Propietats del formulari',menu:'Propietats del formulari',action:'Acció',method:'Mètode',encoding:'Codificació',target:'Destí',targetNotSet:'<no definit>',targetNew:'Nova finestra (_blank)',targetTop:'Finestra Major (_top)',targetSelf:'Mateixa finestra (_self)',targetParent:'Finestra pare (_parent)'},select:{title:'Propietats del camp de selecció',selectInfo:'Info',opAvail:'Opcions disponibles',value:'Valor',size:'Mida',lines:'Línies',chkMulti:'Permet múltiples seleccions',opText:'Text',opValue:'Valor',btnAdd:'Afegeix',btnModify:'Modifica',btnUp:'Amunt',btnDown:'Avall',btnSetValue:'Selecciona per defecte',btnDelete:'Elimina'},textarea:{title:"Propietats de l'àrea de text",cols:'Columnes',rows:'Files'},textfield:{title:'Propietats del camp de text',name:'Nom',value:'Valor',charWidth:'Amplada',maxChars:'Nombre màxim de caràcters',type:'Tipus',typeText:'Text',typePass:'Contrasenya'},hidden:{title:'Propietats del camp ocult',name:'Nom',value:'Valor'},image:{title:'Propietats de la imatge',titleButton:"Propietats del botó d'imatge",menu:'Propietats de la imatge',infoTab:'Informació de la imatge',btnUpload:'Envia-la al servidor',url:'URL',upload:'Puja',alt:'Text alternatiu',width:'Amplada',height:'Alçada',lockRatio:'Bloqueja les proporcions',resetSize:'Restaura la mida',border:'Vora',hSpace:'Espaiat horit.',vSpace:'Espaiat vert.',align:'Alineació',alignLeft:"Ajusta a l'esquerra",alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Ajusta a la dreta',alignTextTop:'Text Top',alignTop:'Top',preview:'Vista prèvia',alertUrl:'Si us plau, escriviu la URL de la imatge',linkTab:'Enllaç',button2Img:"Voleu transformar el botó d'imatge seleccionat en una simple imatge?",img2Button:"Voleu transformar la imatge seleccionada en un botó d'imatge?",urlMissing:'Image source URL is missing.'},flash:{properties:'Propietats del Flash',propertiesTab:'Propietats',title:'Propietats del Flash',chkPlay:'Reprodució automàtica',chkLoop:'Bucle',chkMenu:'Habilita menú Flash',chkFull:'Permetre la pantalla completa',scale:'Escala',scaleAll:'Mostra-ho tot',scaleNoBorder:'Sense vores',scaleFit:'Mida exacta',access:'Accés a scripts',accessAlways:'Sempre',accessSameDomain:'El mateix domini',accessNever:'Mai',align:'Alineació',alignLeft:"Ajusta a l'esquerra",alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Ajusta a la dreta',alignTextTop:'Text Top',alignTop:'Top',quality:'Qualitat',qualityBest:'La millor',qualityHigh:'Alta',qualityAutoHigh:'Alta automàtica',qualityMedium:'Mitjana',qualityAutoLow:'Baixa automàtica',qualityLow:'Baixa',windowModeWindow:'Finestra',windowModeOpaque:'Opaca',windowModeTransparent:'Transparent',windowMode:'Mode de la finestra',flashvars:'Variables de Flash',bgcolor:'Color de Fons',width:'Amplada',height:'Alçada',hSpace:'Espaiat horit.',vSpace:'Espaiat vert.',validateSrc:"Si us plau, escrigui l'enllaç URL",validateWidth:"L'amplada ha de ser un nombre.",validateHeight:"L'alçada ha de ser un nombre.",validateHSpace:"L'espaiat horitzonatal ha de ser un nombre.",validateVSpace:"L'espaiat vertical ha de ser un nombre."},spellCheck:{toolbar:"Revisa l'ortografia",title:"Comprova l'ortografia",notAvailable:'El servei no es troba disponible ara.',errorLoading:'Error carregant el servidor: %s.',notInDic:'No és al diccionari',changeTo:'Reemplaça amb',btnIgnore:'Ignora',btnIgnoreAll:'Ignora-les totes',btnReplace:'Canvia',btnReplaceAll:'Canvia-les totes',btnUndo:'Desfés',noSuggestions:'Cap suggeriment',progress:'Verificació ortogràfica en curs...',noMispell:'Verificació ortogràfica acabada: no hi ha cap paraula mal escrita',noChanges:"Verificació ortogràfica: no s'ha canviat cap paraula",oneChange:"Verificació ortogràfica: s'ha canviat una paraula",manyChanges:"Verificació ortogràfica: s'han canviat %1 paraules",ieSpellDownload:'Verificació ortogràfica no instal·lada. Voleu descarregar-ho ara?'},smiley:{toolbar:'Icona',title:'Insereix una icona'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Llista numerada',bulletedlist:'Llista de pics',indent:'Augmenta el sagnat',outdent:'Redueix el sagnat',justify:{left:"Alinia a l'esquerra",center:'Centrat',right:'Alinia a la dreta',block:'Justificat'},blockquote:'Bloc de cita',clipboard:{title:'Enganxa',cutError:'La seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl+X).',copyError:'La seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl+C).',pasteMsg:'Si us plau, enganxeu dins del següent camp utilitzant el teclat (<STRONG>Ctrl+V</STRONG>) i premeu <STRONG>OK</STRONG>.',securityMsg:"A causa de la configuració de seguretat del vostre navegador, l'editor no pot accedir al porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra."},pastefromword:{toolbar:'Enganxa des del Word',title:'Enganxa des del Word',advice:'Si us plau, enganxeu dins del següent camp utilitzant el teclat (<STRONG>Ctrl+V</STRONG>) i premeu <STRONG>OK</STRONG>.',ignoreFontFace:'Ignora definicions de font',removeStyle:"Elimina definicions d'estil"},pasteText:{button:'Enganxa com a text no formatat',title:'Enganxa com a text no formatat'},templates:{button:'Plantilles',title:'Contingut plantilles',insertOption:'Reemplaça el contingut actual',selectPromptMsg:"Si us plau, seleccioneu la plantilla per obrir a l'editor<br>(el contingut actual no serà enregistrat):",emptyListMsg:'(No hi ha plantilles definides)'},showBlocks:'Mostra els blocs',stylesCombo:{label:'Estil',voiceLabel:'Estils',panelVoiceLabel:'Seleccioneu un estil',panelTitle1:'Estils de bloc',panelTitle2:'Estils incrustats',panelTitle3:"Estils d'objecte"},format:{label:'Format',voiceLabel:'Format',panelTitle:'Format',panelVoiceLabel:'Seleccioneu un format de paràgraf',tag_p:'Normal',tag_pre:'Formatejat',tag_address:'Adreça',tag_h1:'Encapçalament 1',tag_h2:'Encapçalament 2',tag_h3:'Encapçalament 3',tag_h4:'Encapçalament 4',tag_h5:'Encapçalament 5',tag_h6:'Encapçalament 6',tag_div:'Normal (DIV)'},font:{label:'Tipus de lletra',voiceLabel:'Tipus de lletra',panelTitle:'Tipus de lletra',panelVoiceLabel:'Seleccioneu un tipus de lletra'},fontSize:{label:'Mida',voiceLabel:'Mida de la lletra',panelTitle:'Mida',panelVoiceLabel:'Seleccioneu una mida de lletra'},colorButton:{textColorTitle:'Color de Text',bgColorTitle:'Color de Fons',auto:'Automàtic',more:'Més colors...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:"Habilitat l'SCAYT",disable:'Deshabilita SCAYT',about:"Quant a l'SCAYT",toggle:"Commuta l'SCAYT",options:'Opcions',langs:'Idiomes',moreSuggestions:'Més suggerències',ignore:'Ignora',ignoreAll:"Ignora'ls tots",addWord:'Afegeix una paraula',emptyDic:"El nom del diccionari no hauria d'estar buit.",optionsTab:'Opcions',languagesTab:'Idiomes',dictionariesTab:'Diccionaris',aboutTab:'Quant a'},about:{title:'Quan al CKEditor',dlgTitle:'Quan al CKEditor',moreInfo:'Per informació sobre llicències visiteu el web:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximiza',minimize:'Minimize',fakeobjects:{anchor:'Àncora',flash:'Animació Flash',div:'Salt de pàgina',unknown:'Objecte desconegut'},resize:'Arrossegueu per redimensionar',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/en-ca.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/en-ca.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/en-ca.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['en-ca']={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character'},link:{toolbar:'Link',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toAnchor:'Link to anchor in the text',toEmail:'E-mail',target:'Target',targetNotSet:'<not set>',targetFrame:'<frame>',targetPopup:'<popup window>',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupWidth:'Width',popupLeft:'Left Position',popupHeight:'Height',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirNotSet:'<not set>',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',align:'Alignment',alignNotSet:'<Not set>',alignLeft:'Left',alignCenter:'Centre',alignRight:'Right',width:'Width',widthPx:'pixels',widthPc:'percent',height:'Height',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding',target:'Target',targetNotSet:'<not set>',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',url:'URL',upload:'Upload',alt:'Alternative Text',width:'Width',height:'Height',lockRatio:'Lock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',align:'Align',alignLeft:'Left',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Right',alignTextTop:'Text Top',alignTop:'Top',preview:'Preview',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Align',alignLeft:'Left',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Right',alignTextTop:'Text Top',alignTop:'Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background colour',width:'Width',height:'Height',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Left Justify',center:'Centre Justify',right:'Right Justify',block:'Block Justify'},blockquote:'Blockquote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Paste from Word',title:'Paste from Word',advice:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',ignoreFontFace:'Ignore Font Face definitions',removeStyle:'Remove Styles definitions'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',voiceLabel:'Format',panelTitle:'Paragraph Format',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name',panelVoiceLabel:'Select a font'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Text Colour',bgColorTitle:'Background Colour',auto:'Automatic',more:'More Colours...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/pt.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/pt.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/pt.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.pt={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Fonte',newPage:'Nova Página',save:'Guardar',preview:'Pré-visualizar',cut:'Cortar',copy:'Copiar',paste:'Colar',print:'Imprimir',underline:'Sublinhado',bold:'Negrito',italic:'Itálico',selectAll:'Seleccionar Tudo',removeFormat:'Eliminar Formato',strike:'Rasurado',subscript:'Superior à Linha',superscript:'Inferior à Linha',horizontalrule:'Inserir Linha Horizontal',pagebreak:'Inserir Quebra de Página',unlink:'Eliminar Hiperligação',undo:'Anular',redo:'Repetir',common:{browseServer:'Navegar no Servidor',url:'URL',protocol:'Protocolo',upload:'Carregar',uploadSubmit:'Enviar para o Servidor',image:'Imagem',flash:'Flash',form:'Formulário',checkbox:'Caixa de Verificação',radio:'Botão de Opção',textField:'Campo de Texto',textarea:'Área de Texto',hiddenField:'Campo Escondido',button:'Botão',select:'Caixa de Combinação',imageButton:'Botão de Imagem',notSet:'<Não definido>',id:'Id',name:'Nome',langDir:'Orientação de idioma',langDirLtr:'Esquerda à Direita (LTR)',langDirRtl:'Direita a Esquerda (RTL)',langCode:'Código de Idioma',longDescr:'Descrição Completa do URL',cssClass:'Classes de Estilo de Folhas Classes',advisoryTitle:'Título',cssStyle:'Estilo',ok:'OK',cancel:'Cancelar',generalTab:'General',advancedTab:'Avançado',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Inserir Caracter Especial',title:'Seleccione um caracter especial'},link:{toolbar:'Inserir/Editar Hiperligação',menu:'Editar Hiperligação',title:'Hiperligação',info:'Informação de Hiperligação',target:'Destino',upload:'Carregar',advanced:'Avançado',type:'Tipo de Hiperligação',toAnchor:'Referência a esta página',toEmail:'E-Mail',target:'Destino',targetNotSet:'<Não definido>',targetFrame:'<Frame>',targetPopup:'<Janela de popup>',targetNew:'Nova Janela(_blank)',targetTop:'Janela primaria (_top)',targetSelf:'Mesma janela (_self)',targetParent:'Janela Pai (_parent)',targetFrameName:'Nome do Frame Destino',targetPopupName:'Nome da Janela de Popup',popupFeatures:'Características de Janela de Popup',popupResizable:'Resizable',popupStatusBar:'Barra de Estado',popupLocationBar:'Barra de localização',popupToolbar:'Barra de Ferramentas',popupMenuBar:'Barra de Menu',popupFullScreen:'Janela Completa (IE)',popupScrollBars:'Barras de deslocamento',popupDependent:'Dependente (Netscape)',popupWidth:'Largura',popupLeft:'Posição Esquerda',popupHeight:'Altura',popupTop:'Posição Direita',id:'Id',langDir:'Orientação de idioma',langDirNotSet:'<Não definido>',langDirLTR:'Esquerda à Direita (LTR)',langDirRTL:'Direita a Esquerda (RTL)',acccessKey:'Chave de Acesso',name:'Nome',langCode:'Orientação de idioma',tabIndex:'Índice de Tubulação',advisoryTitle:'Título',advisoryContentType:'Tipo de Conteúdo',cssClasses:'Classes de Estilo de Folhas Classes',charset:'Fonte de caracteres vinculado',styles:'Estilo',selectAnchor:'Seleccionar una referência',anchorName:'Por Nome de Referência',anchorId:'Por ID de elemento',emailAddress:'Endereço de E-Mail',emailSubject:'Título de Mensagem',emailBody:'Corpo da Mensagem',noAnchors:'(Não há referências disponíveis no documento)',noUrl:'Por favor introduza a hiperligação URL',noEmail:'Por favor introduza o endereço de e-mail'},anchor:{toolbar:' Inserir/Editar Âncora',menu:'Propriedades da Âncora',title:'Propriedades da Âncora',name:'Nome da Âncora',errorName:'Por favor, introduza o nome da âncora'},findAndReplace:{title:'Find and Replace',find:'Procurar',replace:'Substituir',findWhat:'Texto a Procurar:',replaceWith:'Substituir por:',notFoundMsg:'O texto especificado não foi encontrado.',matchCase:'Maiúsculas/Minúsculas',matchWord:'Coincidir com toda a palavra',matchCyclic:'Match cyclic',replaceAll:'Substituir Tudo',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabela',title:'Propriedades da Tabela',menu:'Propriedades da Tabela',deleteTable:'Eliminar Tabela',rows:'Linhas',columns:'Colunas',border:'Tamanho do Limite',align:'Alinhamento',alignNotSet:'<Não definido>',alignLeft:'Esquerda',alignCenter:'Centrado',alignRight:'Direita',width:'Largura',widthPx:'pixeis',widthPc:'percentagem',height:'Altura',cellSpace:'Esp. e/células',cellPad:'Esp. interior',caption:'Título',summary:'Sumário',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Célula',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Eliminar Célula',merge:'Unir Células',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Linha',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Eliminar Linhas'},column:{menu:'Coluna',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Eliminar Coluna'}},button:{title:'Propriedades do Botão',text:'Texto (Valor)',type:'Tipo',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Propriedades da Caixa de Verificação',radioTitle:'Propriedades do Botão de Opção',value:'Valor',selected:'Seleccionado'},form:{title:'Propriedades do Formulário',menu:'Propriedades do Formulário',action:'Acção',method:'Método',encoding:'Encoding',target:'Destino',targetNotSet:'<Não definido>',targetNew:'Nova Janela(_blank)',targetTop:'Janela primaria (_top)',targetSelf:'Mesma janela (_self)',targetParent:'Janela Pai (_parent)'},select:{title:'Propriedades da Caixa de Combinação',selectInfo:'Informação',opAvail:'Opções Possíveis',value:'Valor',size:'Tamanho',lines:'linhas',chkMulti:'Permitir selecções múltiplas',opText:'Texto',opValue:'Valor',btnAdd:'Adicionar',btnModify:'Modificar',btnUp:'Para cima',btnDown:'Para baixo',btnSetValue:'Definir um valor por defeito',btnDelete:'Apagar'},textarea:{title:'Propriedades da Área de Texto',cols:'Colunas',rows:'Linhas'},textfield:{title:'Propriedades do Campo de Texto',name:'Nome',value:'Valor',charWidth:'Tamanho do caracter',maxChars:'Nr. Máximo de Caracteres',type:'Tipo',typeText:'Texto',typePass:'Palavra-chave'},hidden:{title:'Propriedades do Campo Escondido',name:'Nome',value:'Valor'},image:{title:'Propriedades da Imagem',titleButton:'Propriedades do Botão de imagens',menu:'Propriedades da Imagem',infoTab:'Informação da Imagem',btnUpload:'Enviar para o Servidor',url:'URL',upload:'Carregar',alt:'Texto Alternativo',width:'Largura',height:'Altura',lockRatio:'Proporcional',resetSize:'Tamanho Original',border:'Limite',hSpace:'Esp.Horiz',vSpace:'Esp.Vert',align:'Alinhamento',alignLeft:'Esquerda',alignAbsBottom:'Abs inferior',alignAbsMiddle:'Abs centro',alignBaseline:'Linha de base',alignBottom:'Fundo',alignMiddle:'Centro',alignRight:'Direita',alignTextTop:'Topo do texto',alignTop:'Topo',preview:'Pré-visualizar',alertUrl:'Por favor introduza o URL da imagem',linkTab:'Hiperligação',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Propriedades do Flash',propertiesTab:'Properties',title:'Propriedades do Flash',chkPlay:'Reproduzir automaticamente',chkLoop:'Loop',chkMenu:'Permitir Menu do Flash',chkFull:'Allow Fullscreen',scale:'Escala',scaleAll:'Mostrar tudo',scaleNoBorder:'Sem Limites',scaleFit:'Tamanho Exacto',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Alinhamento',alignLeft:'Esquerda',alignAbsBottom:'Abs inferior',alignAbsMiddle:'Abs centro',alignBaseline:'Linha de base',alignBottom:'Fundo',alignMiddle:'Centro',alignRight:'Direita',alignTextTop:'Topo do texto',alignTop:'Topo',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Cor de Fundo',width:'Largura',height:'Altura',hSpace:'Esp.Horiz',vSpace:'Esp.Vert',validateSrc:'Por favor introduza a hiperligação URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Verificação Ortográfica',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Não está num directório',changeTo:'Mudar para',btnIgnore:'Ignorar',btnIgnoreAll:'Ignorar Tudo',btnReplace:'Substituir',btnReplaceAll:'Substituir Tudo',btnUndo:'Anular',noSuggestions:'- Sem sugestões -',progress:'Verificação ortográfica em progresso…',noMispell:'Verificação ortográfica completa: não foram encontrados erros',noChanges:'Verificação ortográfica completa: não houve alteração de palavras',oneChange:'Verificação ortográfica completa: uma palavra alterada',manyChanges:'Verificação ortográfica completa: %1 palavras alteradas',ieSpellDownload:' Verificação ortográfica não instalada. Quer descarregar agora?'},smiley:{toolbar:'Emoticons',title:'Inserir um Emoticon'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Numeração',bulletedlist:'Marcas',indent:'Aumentar Avanço',outdent:'Diminuir Avanço',justify:{left:'Alinhar à Esquerda',center:'Alinhar ao Centro',right:'Alinhar à Direita',block:'Justificado'},blockquote:'Blockquote',clipboard:{title:'Colar',cutError:'A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl+X).',copyError:'A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl+C).',pasteMsg:'Por favor, cole dentro da seguinte caixa usando o teclado (<STRONG>Ctrl+V</STRONG>) e prima <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Colar do Word',title:'Colar do Word',advice:'Por favor, cole dentro da seguinte caixa usando o teclado (<STRONG>Ctrl+V</STRONG>) e prima <STRONG>OK</STRONG>.',ignoreFontFace:'Ignorar da definições do Tipo de Letra ',removeStyle:'Remover as definições de Estilos'},pasteText:{button:'Colar como Texto Simples',title:'Colar como Texto Simples'},templates:{button:'Modelos',title:'Modelo de Conteúdo',insertOption:'Replace actual contents',selectPromptMsg:'Por favor, seleccione o modelo a abrir no editor<br>(o conteúdo actual será perdido):',emptyListMsg:'(Sem modelos definidos)'},showBlocks:'Show Blocks',stylesCombo:{label:'Estilo',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formato',voiceLabel:'Format',panelTitle:'Formato',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatado',tag_address:'Endereço',tag_h1:'Título 1',tag_h2:'Título 2',tag_h3:'Título 3',tag_h4:'Título 4',tag_h5:'Título 5',tag_h6:'Título 6',tag_div:'Normal (DIV)'},font:{label:'Tipo de Letra',voiceLabel:'Font',panelTitle:'Tipo de Letra',panelVoiceLabel:'Select a font'},fontSize:{label:'Tamanho',voiceLabel:'Font Size',panelTitle:'Tamanho',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Cor do Texto',bgColorTitle:'Cor de Fundo',auto:'Automático',more:'Mais Cores...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/da.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/da.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/da.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.da={dir:'ltr',editorTitle:'Editor, %1',source:'Kilde',newPage:'Ny side',save:'Gem',preview:'Vis eksempel',cut:'Klip',copy:'Kopiér',paste:'Indsæt',print:'Udskriv',underline:'Understreget',bold:'Fed',italic:'Kursiv',selectAll:'Vælg alt',removeFormat:'Fjern formatering',strike:'Gennemstreget',subscript:'Sænket skrift',superscript:'Hævet skrift',horizontalrule:'Indsæt vandret streg',pagebreak:'Indsæt sideskift',unlink:'Fjern hyperlink',undo:'Fortryd',redo:'Annullér fortryd',common:{browseServer:'Gennemse...',url:'URL',protocol:'Protokol',upload:'Upload',uploadSubmit:'Upload',image:'Indsæt billede',flash:'Indsæt Flash',form:'Indsæt formular',checkbox:'Indsæt afkrydsningsfelt',radio:'Indsæt alternativknap',textField:'Indsæt tekstfelt',textarea:'Indsæt tekstboks',hiddenField:'Indsæt skjult felt',button:'Indsæt knap',select:'Indsæt liste',imageButton:'Indsæt billedknap',notSet:'<intet valgt>',id:'Id',name:'Navn',langDir:'Tekstretning',langDirLtr:'Fra venstre mod højre (LTR)',langDirRtl:'Fra højre mod venstre (RTL)',langCode:'Sprogkode',longDescr:'Udvidet beskrivelse',cssClass:'Typografiark (CSS)',advisoryTitle:'Titel',cssStyle:'Typografi (CSS)',ok:'OK',cancel:'Annullér',generalTab:'Generelt',advancedTab:'Avanceret',validateNumberFailed:'Værdien er ikke et tal.',confirmNewPage:'Alt indhold, der ikke er blevet gemt, vil gå tabt. Er du sikker på, at du vil indlæse en ny side?',confirmCancel:'Nogle af indstillingerne er blevet ændret. Er du sikker på, at du vil lukke vinduet?',unavailable:'%1<span class="cke_accessibility">, ikke tilgængelig</span>'},specialChar:{toolbar:'Indsæt symbol',title:'Vælg symbol'},link:{toolbar:'Indsæt/redigér hyperlink',menu:'Redigér hyperlink',title:'Egenskaber for hyperlink',info:'Generelt',target:'Mål',upload:'Upload',advanced:'Avanceret',type:'Type',toAnchor:'Bogmærke på denne side',toEmail:'E-mail',target:'Mål',targetNotSet:'<intet valgt>',targetFrame:'<ramme>',targetPopup:'<popup vindue>',targetNew:'Nyt vindue (_blank)',targetTop:'Hele vinduet (_top)',targetSelf:'Samme vindue/ramme (_self)',targetParent:'Overordnet vindue/ramme (_parent)',targetFrameName:'Destinationsvinduets navn',targetPopupName:'Popup vinduets navn',popupFeatures:'Egenskaber for popup',popupResizable:'Justérbar',popupStatusBar:'Statuslinje',popupLocationBar:'Adresselinje',popupToolbar:'Værktøjslinje',popupMenuBar:'Menulinje',popupFullScreen:'Fuld skærm (IE)',popupScrollBars:'Scrollbar',popupDependent:'Koblet/dependent (Netscape)',popupWidth:'Bredde',popupLeft:'Position fra venstre',popupHeight:'Højde',popupTop:'Position fra toppen',id:'Id',langDir:'Tekstretning',langDirNotSet:'<intet valgt>',langDirLTR:'Fra venstre mod højre (LTR)',langDirRTL:'Fra højre mod venstre (RTL)',acccessKey:'Genvejstast',name:'Navn',langCode:'Tekstretning',tabIndex:'Tabulator indeks',advisoryTitle:'Titel',advisoryContentType:'Indholdstype',cssClasses:'Typografiark',charset:'Tegnsæt',styles:'Typografi',selectAnchor:'Vælg et anker',anchorName:'Efter anker navn',anchorId:'Efter element Id',emailAddress:'E-mail adresse',emailSubject:'Emne',emailBody:'Besked',noAnchors:'(Ingen bogmærker i dokumentet)',noUrl:'Indtast hyperlink URL!',noEmail:'Indtast e-mail adresse!'},anchor:{toolbar:'Indsæt/redigér bogmærke',menu:'Egenskaber for bogmærke',title:'Egenskaber for bogmærke',name:'Bogmærke navn',errorName:'Indtast bogmærke navn'},findAndReplace:{title:'Søg og erstat',find:'Søg',replace:'Erstat',findWhat:'Søg efter:',replaceWith:'Erstat med:',notFoundMsg:'Søgeteksten blev ikke fundet',matchCase:'Forskel på store og små bogstaver',matchWord:'Kun hele ord',matchCyclic:'Match cyklisk',replaceAll:'Erstat alle',replaceSuccessMsg:'%1 forekomst(er) erstattet.'},table:{toolbar:'Tabel',title:'Egenskaber for tabel',menu:'Egenskaber for tabel',deleteTable:'Slet tabel',rows:'Rækker',columns:'Kolonner',border:'Rammebredde',align:'Justering',alignNotSet:'<intet valgt>',alignLeft:'Venstrestillet',alignCenter:'Centreret',alignRight:'Højrestillet',width:'Bredde',widthPx:'pixels',widthPc:'procent',height:'Højde',cellSpace:'Celleafstand',cellPad:'Cellemargen',caption:'Titel',summary:'Resumé',headers:'Header',headersNone:'Ingen',headersColumn:'Første kolonne',headersRow:'Første række',headersBoth:'Begge',invalidRows:'Antallet af rækker skal være større end 0.',invalidCols:'Antallet af kolonner skal være større end 0.',invalidBorder:'Rammetykkelse skal være et tal.',invalidWidth:'Tabelbredde skal være et tal.',invalidHeight:'Tabelhøjde skal være et tal.',invalidCellSpacing:'Celleafstand skal være et tal.',invalidCellPadding:'Cellemargen skal være et tal.',cell:{menu:'Celle',insertBefore:'Indsæt celle før',insertAfter:'Indsæt celle efter',deleteCell:'Slet celle',merge:'Flet celler',mergeRight:'Flet til højre',mergeDown:'Flet nedad',splitHorizontal:'Del celle vandret',splitVertical:'Del celle lodret',title:'Celleegenskaber',cellType:'Celletype',rowSpan:'Række span (rows span)',colSpan:'Kolonne span (columns span)',wordWrap:'Tekstombrydning',hAlign:'Vandret justering',vAlign:'Lodret justering',alignTop:'Top',alignMiddle:'Midt',alignBottom:'Bund',alignBaseline:'Grundlinje',bgColor:'Baggrundsfarve',borderColor:'Rammefarve',data:'Data',header:'Header',yes:'Ja',no:'Nej',invalidWidth:'Cellebredde skal være et tal.',invalidHeight:'Cellehøjde skal være et tal.',invalidRowSpan:'Række span skal være et heltal.',invalidColSpan:'Kolonne span skal være et heltal.',chooseColor:'Choose'},row:{menu:'Række',insertBefore:'Indsæt række før',insertAfter:'Indsæt række efter',deleteRow:'Slet række'},column:{menu:'Kolonne',insertBefore:'Indsæt kolonne før',insertAfter:'Indsæt kolonne efter',deleteColumn:'Slet kolonne'}},button:{title:'Egenskaber for knap',text:'Tekst',type:'Type',typeBtn:'Knap',typeSbm:'Send',typeRst:'Nulstil'},checkboxAndRadio:{checkboxTitle:'Egenskaber for afkrydsningsfelt',radioTitle:'Egenskaber for alternativknap',value:'Værdi',selected:'Valgt'},form:{title:'Egenskaber for formular',menu:'Egenskaber for formular',action:'Handling',method:'Metode',encoding:'Kodning (encoding)',target:'Mål',targetNotSet:'<intet valgt>',targetNew:'Nyt vindue (_blank)',targetTop:'Hele vinduet (_top)',targetSelf:'Samme vindue/ramme (_self)',targetParent:'Overordnet vindue/ramme (_parent)'},select:{title:'Egenskaber for liste',selectInfo:'Generelt',opAvail:'Valgmuligheder',value:'Værdi',size:'Størrelse',lines:'Linjer',chkMulti:'Tillad flere valg',opText:'Tekst',opValue:'Værdi',btnAdd:'Tilføj',btnModify:'Redigér',btnUp:'Op',btnDown:'Ned',btnSetValue:'Sæt som valgt',btnDelete:'Slet'},textarea:{title:'Egenskaber for tekstboks',cols:'Kolonner',rows:'Rækker'},textfield:{title:'Egenskaber for tekstfelt',name:'Navn',value:'Værdi',charWidth:'Bredde (tegn)',maxChars:'Max. antal tegn',type:'Type',typeText:'Tekst',typePass:'Adgangskode'},hidden:{title:'Egenskaber for skjult felt',name:'Navn',value:'Værdi'},image:{title:'Egenskaber for billede',titleButton:'Egenskaber for billedknap',menu:'Egenskaber for billede',infoTab:'Generelt',btnUpload:'Upload',url:'URL',upload:'Upload',alt:'Alternativ tekst',width:'Bredde',height:'Højde',lockRatio:'Lås størrelsesforhold',resetSize:'Nulstil størrelse',border:'Ramme',hSpace:'Vandret margen',vSpace:'Lodret margen',align:'Justering',alignLeft:'Venstre',alignAbsBottom:'Absolut nederst',alignAbsMiddle:'Absolut centreret',alignBaseline:'Grundlinje',alignBottom:'Nederst',alignMiddle:'Centreret',alignRight:'Højre',alignTextTop:'Toppen af teksten',alignTop:'Øverst',preview:'Vis eksempel',alertUrl:'Indtast stien til billedet',linkTab:'Hyperlink',button2Img:'Vil du lave billedknappen om til et almindeligt billede?',img2Button:'Vil du lave billedet om til en billedknap?',urlMissing:'Image source URL is missing.'},flash:{properties:'Egenskaber for Flash',propertiesTab:'Egenskaber',title:'Egenskaber for Flash',chkPlay:'Automatisk afspilning',chkLoop:'Gentagelse',chkMenu:'Vis Flash menu',chkFull:'Tillad fuldskærm',scale:'Skalér',scaleAll:'Vis alt',scaleNoBorder:'Ingen ramme',scaleFit:'Tilpas størrelse',access:'Script adgang',accessAlways:'Altid',accessSameDomain:'Samme domæne',accessNever:'Aldrig',align:'Justering',alignLeft:'Venstre',alignAbsBottom:'Absolut nederst',alignAbsMiddle:'Absolut centreret',alignBaseline:'Grundlinje',alignBottom:'Nederst',alignMiddle:'Centreret',alignRight:'Højre',alignTextTop:'Toppen af teksten',alignTop:'Øverst',quality:'Kvalitet',qualityBest:'Bedste',qualityHigh:'Høj',qualityAutoHigh:'Auto høj',qualityMedium:'Medium',qualityAutoLow:'Auto lav',qualityLow:'Lav',windowModeWindow:'Vindue',windowModeOpaque:'Gennemsigtig (opaque)',windowModeTransparent:'Transparent',windowMode:'Vinduestilstand',flashvars:'Variabler for Flash',bgcolor:'Baggrundsfarve',width:'Bredde',height:'Højde',hSpace:'Vandret margen',vSpace:'Lodret margen',validateSrc:'Indtast hyperlink URL!',validateWidth:'Bredde skal være et tal.',validateHeight:'Højde skal være et tal.',validateHSpace:'Vandret margen skal være et tal.',validateVSpace:'Lodret margen skal være et tal.'},spellCheck:{toolbar:'Stavekontrol',title:'Stavekontrol',notAvailable:'Stavekontrol er desværre ikke tilgængelig.',errorLoading:'Fejl ved indlæsning af host: %s.',notInDic:'Ikke i ordbogen',changeTo:'Forslag',btnIgnore:'Ignorér',btnIgnoreAll:'Ignorér alle',btnReplace:'Erstat',btnReplaceAll:'Erstat alle',btnUndo:'Tilbage',noSuggestions:'(ingen forslag)',progress:'Stavekontrollen arbejder...',noMispell:'Stavekontrol færdig: Ingen fejl fundet',noChanges:'Stavekontrol færdig: Ingen ord ændret',oneChange:'Stavekontrol færdig: Et ord ændret',manyChanges:'Stavekontrol færdig: %1 ord ændret',ieSpellDownload:'Stavekontrol ikke installeret. Vil du installere den nu?'},smiley:{toolbar:'Smiley',title:'Vælg smiley'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Talopstilling',bulletedlist:'Punktopstilling',indent:'Forøg indrykning',outdent:'Formindsk indrykning',justify:{left:'Venstrestillet',center:'Centreret',right:'Højrestillet',block:'Lige margener'},blockquote:'Blokcitat',clipboard:{title:'Indsæt',cutError:'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at klippe teksten (Ctrl+X).',copyError:'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at kopiere teksten (Ctrl+C).',pasteMsg:'Indsæt i feltet herunder (<STRONG>Ctrl+V</STRONG>) og klik på <STRONG>OK</STRONG>.',securityMsg:'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Du skal indsætte udklipsholderens indhold i dette vindue igen.'},pastefromword:{toolbar:'Indsæt fra Word',title:'Indsæt fra Word',advice:'Indsæt i feltet herunder (<STRONG>Ctrl+V</STRONG>) og klik på <STRONG>OK</STRONG>.',ignoreFontFace:'Ignorér skrifttypedefinitioner',removeStyle:'Ignorér typografi'},pasteText:{button:'Indsæt som ikke-formateret tekst',title:'Indsæt som ikke-formateret tekst'},templates:{button:'Skabeloner',title:'Indholdsskabeloner',insertOption:'Erstat det faktiske indhold',selectPromptMsg:'Vælg den skabelon, som skal åbnes i editoren (nuværende indhold vil blive overskrevet):',emptyListMsg:'(Der er ikke defineret nogen skabelon)'},showBlocks:'Vis afsnitsmærker',stylesCombo:{label:'Typografi',voiceLabel:'Typografi',panelVoiceLabel:'Vælg typografi',panelTitle1:'Block typografi',panelTitle2:'Inline typografi',panelTitle3:'Object typografi'},format:{label:'Formatering',voiceLabel:'Formatering',panelTitle:'Formatering',panelVoiceLabel:'Vælg afsnitsformatering',tag_p:'Normal',tag_pre:'Formateret',tag_address:'Adresse',tag_h1:'Overskrift 1',tag_h2:'Overskrift 2',tag_h3:'Overskrift 3',tag_h4:'Overskrift 4',tag_h5:'Overskrift 5',tag_h6:'Overskrift 6',tag_div:'Normal (DIV)'},font:{label:'Skrifttype',voiceLabel:'Skrifttype',panelTitle:'Skrifttype',panelVoiceLabel:'Vælg skrifttype'},fontSize:{label:'Skriftstørrelse',voiceLabel:'Skriftstørrelse',panelTitle:'Skriftstørrelse',panelVoiceLabel:'Vælg skriftstørrelse'},colorButton:{textColorTitle:'Tekstfarve',bgColorTitle:'Baggrundsfarve',auto:'Automatisk',more:'Flere farver...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Stavekontrol mens du skriver',enable:'Aktivér SCAYT',disable:'Deaktivér SCAYT',about:'Om SCAYT',toggle:'Skift/toggle SCAYT',options:'Indstillinger',langs:'Sprog',moreSuggestions:'Flere forslag',ignore:'Ignorér',ignoreAll:'Ignorér alle',addWord:'Tilføj ord',emptyDic:'Ordbogsnavn må ikke være tom.',optionsTab:'Indstillinger',languagesTab:'Sprog',dictionariesTab:'Ordbøger',aboutTab:'Om'},about:{title:'Om CKEditor',dlgTitle:'Om CKEditor',moreInfo:'For informationer omkring licens, se venligst vores hjemmeside (på engelsk):',copy:'Copyright &copy; $1. Alle rettigheder forbeholdes.'},maximize:'Maximér',minimize:'Minimize',fakeobjects:{anchor:'Anker',flash:'Flashanimation',div:'Sideskift',unknown:'Ukendt objekt'},resize:'Træk for at skalere',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/sr.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/sr.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/sr.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.sr={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Kôд',newPage:'Нова страница',save:'Сачувај',preview:'Изглед странице',cut:'Исеци',copy:'Копирај',paste:'Залепи',print:'Штампа',underline:'Подвучено',bold:'Подебљано',italic:'Курзив',selectAll:'Означи све',removeFormat:'Уклони форматирање',strike:'Прецртано',subscript:'Индекс',superscript:'Степен',horizontalrule:'Унеси хоризонталну линију',pagebreak:'Insert Page Break for Printing',unlink:'Уклони линк',undo:'Поништи акцију',redo:'Понови акцију',common:{browseServer:'Претражи сервер',url:'УРЛ',protocol:'Протокол',upload:'Пошаљи',uploadSubmit:'Пошаљи на сервер',image:'Слика',flash:'Флеш елемент',form:'Форма',checkbox:'Поље за потврду',radio:'Радио-дугме',textField:'Текстуално поље',textarea:'Зона текста',hiddenField:'Скривено поље',button:'Дугме',select:'Изборно поље',imageButton:'Дугме са сликом',notSet:'<није постављено>',id:'Ид',name:'Назив',langDir:'Смер језика',langDirLtr:'С лева на десно (LTR)',langDirRtl:'С десна на лево (RTL)',langCode:'Kôд језика',longDescr:'Пун опис УРЛ',cssClass:'Stylesheet класе',advisoryTitle:'Advisory наслов',cssStyle:'Стил',ok:'OK',cancel:'Oткажи',generalTab:'General',advancedTab:'Напредни тагови',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Унеси специјални карактер',title:'Одаберите специјални карактер'},link:{toolbar:'Унеси/измени линк',menu:'Промени линк',title:'Линк',info:'Линк инфо',target:'Meтa',upload:'Пошаљи',advanced:'Напредни тагови',type:'Врста линка',toAnchor:'Сидро на овој страници',toEmail:'Eлектронска пошта',target:'Meтa',targetNotSet:'<није постављено>',targetFrame:'<оквир>',targetPopup:'<искачући прозор>',targetNew:'Нови прозор (_blank)',targetTop:'Прозор на врху (_top)',targetSelf:'Исти прозор (_self)',targetParent:'Родитељски прозор (_parent)',targetFrameName:'Назив одредишног фрејма',targetPopupName:'Назив искачућег прозора',popupFeatures:'Могућности искачућег прозора',popupResizable:'Resizable',popupStatusBar:'Статусна линија',popupLocationBar:'Локација',popupToolbar:'Toolbar',popupMenuBar:'Контекстни мени',popupFullScreen:'Приказ преко целог екрана (ИE)',popupScrollBars:'Скрол бар',popupDependent:'Зависно (Netscape)',popupWidth:'Ширина',popupLeft:'Од леве ивице екрана (пиксела)',popupHeight:'Висина',popupTop:'Од врха екрана (пиксела)',id:'Id',langDir:'Смер језика',langDirNotSet:'<није постављено>',langDirLTR:'С лева на десно (LTR)',langDirRTL:'С десна на лево (RTL)',acccessKey:'Приступни тастер',name:'Назив',langCode:'Смер језика',tabIndex:'Таб индекс',advisoryTitle:'Advisory наслов',advisoryContentType:'Advisory врста садржаја',cssClasses:'Stylesheet класе',charset:'Linked Resource Charset',styles:'Стил',selectAnchor:'Одабери сидро',anchorName:'По називу сидра',anchorId:'Пo Ид-jу елемента',emailAddress:'Адреса електронске поште',emailSubject:'Наслов',emailBody:'Садржај поруке',noAnchors:'(Нема доступних сидра)',noUrl:'Унесите УРЛ линка',noEmail:'Откуцајте адресу електронске поште'},anchor:{toolbar:'Унеси/измени сидро',menu:'Особине сидра',title:'Особине сидра',name:'Име сидра',errorName:'Молимо Вас да унесете име сидра'},findAndReplace:{title:'Find and Replace',find:'Претрага',replace:'Замена',findWhat:'Пронађи:',replaceWith:'Замени са:',notFoundMsg:'Тражени текст није пронађен.',matchCase:'Разликуј велика и мала слова',matchWord:'Упореди целе речи',matchCyclic:'Match cyclic',replaceAll:'Замени све',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Табела',title:'Особине табеле',menu:'Особине табеле',deleteTable:'Delete Table',rows:'Редова',columns:'Kолона',border:'Величина оквира',align:'Равнање',alignNotSet:'<није постављено>',alignLeft:'Лево',alignCenter:'Средина',alignRight:'Десно',width:'Ширина',widthPx:'пиксела',widthPc:'процената',height:'Висина',cellSpace:'Ћелијски простор',cellPad:'Размак ћелија',caption:'Наслов табеле',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Обриши ћелије',merge:'Спој ћелије',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Обриши редове'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Обриши колоне'}},button:{title:'Особине дугмета',text:'Текст (вредност)',type:'Tип',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Особине поља за потврду',radioTitle:'Особине радио-дугмета',value:'Вредност',selected:'Означено'},form:{title:'Особине форме',menu:'Особине форме',action:'Aкција',method:'Mетода',encoding:'Encoding',target:'Meтa',targetNotSet:'<није постављено>',targetNew:'Нови прозор (_blank)',targetTop:'Прозор на врху (_top)',targetSelf:'Исти прозор (_self)',targetParent:'Родитељски прозор (_parent)'},select:{title:'Особине изборног поља',selectInfo:'Инфо',opAvail:'Доступне опције',value:'Вредност',size:'Величина',lines:'линија',chkMulti:'Дозволи вишеструку селекцију',opText:'Текст',opValue:'Вредност',btnAdd:'Додај',btnModify:'Измени',btnUp:'Горе',btnDown:'Доле',btnSetValue:'Подеси као означену вредност',btnDelete:'Обриши'},textarea:{title:'Особине зоне текста',cols:'Број колона',rows:'Број редова'},textfield:{title:'Особине текстуалног поља',name:'Назив',value:'Вредност',charWidth:'Ширина (карактера)',maxChars:'Максимално карактера',type:'Тип',typeText:'Текст',typePass:'Лозинка'},hidden:{title:'Особине скривеног поља',name:'Назив',value:'Вредност'},image:{title:'Особине слика',titleButton:'Особине дугмета са сликом',menu:'Особине слика',infoTab:'Инфо слике',btnUpload:'Пошаљи на сервер',url:'УРЛ',upload:'Пошаљи',alt:'Алтернативни текст',width:'Ширина',height:'Висина',lockRatio:'Закључај однос',resetSize:'Ресетуј величину',border:'Оквир',hSpace:'HSpace',vSpace:'VSpace',align:'Равнање',alignLeft:'Лево',alignAbsBottom:'Abs доле',alignAbsMiddle:'Abs средина',alignBaseline:'Базно',alignBottom:'Доле',alignMiddle:'Средина',alignRight:'Десно',alignTextTop:'Врх текста',alignTop:'Врх',preview:'Изглед',alertUrl:'Унесите УРЛ слике',linkTab:'Линк',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Особине Флеша',propertiesTab:'Properties',title:'Особине флеша',chkPlay:'Аутоматски старт',chkLoop:'Понављај',chkMenu:'Укључи флеш мени',chkFull:'Allow Fullscreen',scale:'Скалирај',scaleAll:'Прикажи све',scaleNoBorder:'Без ивице',scaleFit:'Попуни површину',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Равнање',alignLeft:'Лево',alignAbsBottom:'Abs доле',alignAbsMiddle:'Abs средина',alignBaseline:'Базно',alignBottom:'Доле',alignMiddle:'Средина',alignRight:'Десно',alignTextTop:'Врх текста',alignTop:'Врх',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Боја позадине',width:'Ширина',height:'Висина',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Унесите УРЛ линка',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Провери спеловање',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Није у речнику',changeTo:'Измени',btnIgnore:'Игнориши',btnIgnoreAll:'Игнориши све',btnReplace:'Замени',btnReplaceAll:'Замени све',btnUndo:'Врати акцију',noSuggestions:'- Без сугестија -',progress:'Провера спеловања у току...',noMispell:'Провера спеловања завршена: грешке нису пронађене',noChanges:'Провера спеловања завршена: Није измењена ниједна реч',oneChange:'Провера спеловања завршена: Измењена је једна реч',manyChanges:'Провера спеловања завршена:  %1 реч(и) је измењено',ieSpellDownload:'Провера спеловања није инсталирана. Да ли желите да је скинете са Интернета?'},smiley:{toolbar:'Смајли',title:'Унеси смајлија'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Набројиву листу',bulletedlist:'Ненабројива листа',indent:'Увећај леву маргину',outdent:'Смањи леву маргину',justify:{left:'Лево равнање',center:'Центриран текст',right:'Десно равнање',block:'Обострано равнање'},blockquote:'Blockquote',clipboard:{title:'Залепи',cutError:'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl+X).',copyError:'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl+C).',pasteMsg:'Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (<STRONG>Ctrl+V</STRONG>) и да притиснете <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Залепи из Worda',title:'Залепи из Worda',advice:'Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (<STRONG>Ctrl+V</STRONG>) и да притиснете <STRONG>OK</STRONG>.',ignoreFontFace:'Игнориши Font Face дефиниције',removeStyle:'Уклони дефиниције стилова'},pasteText:{button:'Залепи као чист текст',title:'Залепи као чист текст'},templates:{button:'Обрасци',title:'Обрасци за садржај',insertOption:'Replace actual contents',selectPromptMsg:'Молимо Вас да одаберете образац који ће бити примењен на страницу (тренутни садржај ће бити обрисан):',emptyListMsg:'(Нема дефинисаних образаца)'},showBlocks:'Show Blocks',stylesCombo:{label:'Стил',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Формат',voiceLabel:'Format',panelTitle:'Формат',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formatirano',tag_address:'Adresa',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},font:{label:'Фонт',voiceLabel:'Font',panelTitle:'Фонт',panelVoiceLabel:'Select a font'},fontSize:{label:'Величина фонта',voiceLabel:'Font Size',panelTitle:'Величина фонта',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Боја текста',bgColorTitle:'Боја позадине',auto:'Аутоматски',more:'Више боја...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/tr.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/tr.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/tr.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.tr={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Kaynak',newPage:'Yeni Sayfa',save:'Kaydet',preview:'Ön İzleme',cut:'Kes',copy:'Kopyala',paste:'Yapıştır',print:'Yazdır',underline:'Altı Çizgili',bold:'Kalın',italic:'İtalik',selectAll:'Tümünü Seç',removeFormat:'Biçimi Kaldır',strike:'Üstü Çizgili',subscript:'Alt Simge',superscript:'Üst Simge',horizontalrule:'Yatay Satır Ekle',pagebreak:'Sayfa Sonu Ekle',unlink:'Köprü Kaldır',undo:'Geri Al',redo:'Tekrarla',common:{browseServer:'Sunucuyu Gez',url:'URL',protocol:'Protokol',upload:'Karşıya Yükle',uploadSubmit:'Sunucuya Yolla',image:'Resim',flash:'Flash',form:'Form',checkbox:'Onay Kutusu',radio:'Seçenek Düğmesi',textField:'Metin Girişi',textarea:'Çok Satırlı Metin',hiddenField:'Gizli Veri',button:'Düğme',select:'Seçim Menüsü',imageButton:'Resimli Düğme',notSet:'<tanımlanmamış>',id:'Kimlik',name:'Ad',langDir:'Dil Yönü',langDirLtr:'Soldan Sağa (LTR)',langDirRtl:'Sağdan Sola (RTL)',langCode:'Dil Kodlaması',longDescr:'Uzun Tanımlı URL',cssClass:'Biçem Sayfası Sınıfları',advisoryTitle:'Danışma Başlığı',cssStyle:'Biçem',ok:'Tamam',cancel:'İptal',generalTab:'Genel',advancedTab:'Gelişmiş',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Özel Karakter Ekle',title:'Özel Karakter Seç'},link:{toolbar:'Köprü Ekle/Düzenle',menu:'Köprü Düzenle',title:'Köprü',info:'Köprü Bilgisi',target:'Hedef',upload:'Karşıya Yükle',advanced:'Gelişmiş',type:'Köprü Türü',toAnchor:'Bu sayfada çapa',toEmail:'E-Posta',target:'Hedef',targetNotSet:'<tanımlanmamış>',targetFrame:'<çerçeve>',targetPopup:'<yeni açılan pencere>',targetNew:'Yeni Pencere(_blank)',targetTop:'En Üst Pencere (_top)',targetSelf:'Kendi Penceresi (_self)',targetParent:'Anne Pencere (_parent)',targetFrameName:'Hedef Çerçeve Adı',targetPopupName:'Yeni Açılan Pencere Adı',popupFeatures:'Yeni Açılan Pencere Özellikleri',popupResizable:'Resizable',popupStatusBar:'Durum Çubuğu',popupLocationBar:'Yer Çubuğu',popupToolbar:'Araç Çubuğu',popupMenuBar:'Menü Çubuğu',popupFullScreen:'Tam Ekran (IE)',popupScrollBars:'Kaydırma Çubukları',popupDependent:'Bağımlı (Netscape)',popupWidth:'Genişlik',popupLeft:'Sola Göre Konum',popupHeight:'Yükseklik',popupTop:'Yukarıya Göre Konum',id:'Id',langDir:'Dil Yönü',langDirNotSet:'<tanımlanmamış>',langDirLTR:'Soldan Sağa (LTR)',langDirRTL:'Sağdan Sola (RTL)',acccessKey:'Erişim Tuşu',name:'Ad',langCode:'Dil Yönü',tabIndex:'Sekme İndeksi',advisoryTitle:'Danışma Başlığı',advisoryContentType:'Danışma İçerik Türü',cssClasses:'Biçem Sayfası Sınıfları',charset:'Bağlı Kaynak Karakter Gurubu',styles:'Biçem',selectAnchor:'Çapa Seç',anchorName:'Çapa Adı ile',anchorId:'Eleman Kimlik Numarası ile',emailAddress:'E-Posta Adresi',emailSubject:'İleti Konusu',emailBody:'İleti Gövdesi',noAnchors:'(Bu belgede hiç çapa yok)',noUrl:"Lütfen köprü URL'sini yazın",noEmail:'Lütfen E-posta adresini yazın'},anchor:{toolbar:'Çapa Ekle/Düzenle',menu:'Çapa Özellikleri',title:'Çapa Özellikleri',name:'Çapa Adı',errorName:'Lütfen çapa için ad giriniz'},findAndReplace:{title:'Bul ve Değiştir',find:'Bul',replace:'Değiştir',findWhat:'Aranan:',replaceWith:'Bununla değiştir:',notFoundMsg:'Belirtilen yazı bulunamadı.',matchCase:'Büyük/küçük harf duyarlı',matchWord:'Kelimenin tamamı uysun',matchCyclic:'Match cyclic',replaceAll:'Tümünü Değiştir',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tablo',title:'Tablo Özellikleri',menu:'Tablo Özellikleri',deleteTable:'Tabloyu Sil',rows:'Satırlar',columns:'Sütunlar',border:'Kenar Kalınlığı',align:'Hizalama',alignNotSet:'<Tanımlanmamış>',alignLeft:'Sol',alignCenter:'Merkez',alignRight:'Sağ',width:'Genişlik',widthPx:'piksel',widthPc:'yüzde',height:'Yükseklik',cellSpace:'Izgara kalınlığı',cellPad:'Izgara yazı arası',caption:'Başlık',summary:'Özet',headers:'Başlıklar',headersNone:'Yok',headersColumn:'İlk Sütun',headersRow:'İlk Satır',headersBoth:'Her İkisi',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Hücre',insertBefore:'Hücre Ekle - Önce',insertAfter:'Hücre Ekle - Sonra',deleteCell:'Hücre Sil',merge:'Hücreleri Birleştir',mergeRight:'Birleştir - Sağdaki İle ',mergeDown:'Birleştir - Aşağıdaki İle ',splitHorizontal:'Hücreyi Yatay Böl',splitVertical:'Hücreyi Dikey Böl',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Satır',insertBefore:'Satır Ekle - Önce',insertAfter:'Satır Ekle - Sonra',deleteRow:'Satır Sil'},column:{menu:'Sütun',insertBefore:'Kolon Ekle - Önce',insertAfter:'Kolon Ekle - Sonra',deleteColumn:'Sütun Sil'}},button:{title:'Düğme Özellikleri',text:'Metin (Değer)',type:'Tip',typeBtn:'Düğme',typeSbm:'Gönder',typeRst:'Sıfırla'},checkboxAndRadio:{checkboxTitle:'Onay Kutusu Özellikleri',radioTitle:'Seçenek Düğmesi Özellikleri',value:'Değer',selected:'Seçili'},form:{title:'Form Özellikleri',menu:'Form Özellikleri',action:'İşlem',method:'Yöntem',encoding:'Encoding',target:'Hedef',targetNotSet:'<tanımlanmamış>',targetNew:'Yeni Pencere(_blank)',targetTop:'En Üst Pencere (_top)',targetSelf:'Kendi Penceresi (_self)',targetParent:'Anne Pencere (_parent)'},select:{title:'Seçim Menüsü Özellikleri',selectInfo:'Bilgi',opAvail:'Mevcut Seçenekler',value:'Değer',size:'Boyut',lines:'satır',chkMulti:'Çoklu seçime izin ver',opText:'Metin',opValue:'Değer',btnAdd:'Ekle',btnModify:'Düzenle',btnUp:'Yukarı',btnDown:'Aşağı',btnSetValue:'Seçili değer olarak ata',btnDelete:'Sil'},textarea:{title:'Çok Satırlı Metin Özellikleri',cols:'Sütunlar',rows:'Satırlar'},textfield:{title:'Metin Girişi Özellikleri',name:'Ad',value:'Değer',charWidth:'Karakter Genişliği',maxChars:'En Fazla Karakter',type:'Tür',typeText:'Metin',typePass:'Parola'},hidden:{title:'Gizli Veri Özellikleri',name:'Ad',value:'Değer'},image:{title:'Resim Özellikleri',titleButton:'Resimli Düğme Özellikleri',menu:'Resim Özellikleri',infoTab:'Resim Bilgisi',btnUpload:'Sunucuya Yolla',url:'URL',upload:'Karşıya Yükle',alt:'Alternatif Yazı',width:'Genişlik',height:'Yükseklik',lockRatio:'Oranı Kilitle',resetSize:'Boyutu Başa Döndür',border:'Kenar',hSpace:'Yatay Boşluk',vSpace:'Dikey Boşluk',align:'Hizalama',alignLeft:'Sol',alignAbsBottom:'Tam Altı',alignAbsMiddle:'Tam Ortası',alignBaseline:'Taban Çizgisi',alignBottom:'Alt',alignMiddle:'Orta',alignRight:'Sağ',alignTextTop:'Yazı Tepeye',alignTop:'Tepe',preview:'Ön İzleme',alertUrl:"Lütfen resmin URL'sini yazınız",linkTab:'Köprü',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash Özellikleri',propertiesTab:'Properties',title:'Flash Özellikleri',chkPlay:'Otomatik Oynat',chkLoop:'Döngü',chkMenu:'Flash Menüsünü Kullan',chkFull:'Allow Fullscreen',scale:'Boyutlandır',scaleAll:'Hepsini Göster',scaleNoBorder:'Kenar Yok',scaleFit:'Tam Sığdır',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Hizalama',alignLeft:'Sol',alignAbsBottom:'Tam Altı',alignAbsMiddle:'Tam Ortası',alignBaseline:'Taban Çizgisi',alignBottom:'Alt',alignMiddle:'Orta',alignRight:'Sağ',alignTextTop:'Yazı Tepeye',alignTop:'Tepe',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Arka Renk',width:'Genişlik',height:'Yükseklik',hSpace:'Yatay Boşluk',vSpace:'Dikey Boşluk',validateSrc:"Lütfen köprü URL'sini yazın",validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Yazım Denetimi',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Sözlükte Yok',changeTo:'Şuna değiştir:',btnIgnore:'Yoksay',btnIgnoreAll:'Tümünü Yoksay',btnReplace:'Değiştir',btnReplaceAll:'Tümünü Değiştir',btnUndo:'Geri Al',noSuggestions:'- Öneri Yok -',progress:'Yazım denetimi işlemde...',noMispell:'Yazım denetimi tamamlandı: Yanlış yazıma rastlanmadı',noChanges:'Yazım denetimi tamamlandı: Hiçbir kelime değiştirilmedi',oneChange:'Yazım denetimi tamamlandı: Bir kelime değiştirildi',manyChanges:'Yazım denetimi tamamlandı: %1 kelime değiştirildi',ieSpellDownload:'Yazım denetimi yüklenmemiş. Şimdi yüklemek ister misiniz?'},smiley:{toolbar:'İfade',title:'İfade Ekle'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Numaralı Liste',bulletedlist:'Simgeli Liste',indent:'Sekme Arttır',outdent:'Sekme Azalt',justify:{left:'Sola Dayalı',center:'Ortalanmış',right:'Sağa Dayalı',block:'İki Kenara Yaslanmış'},blockquote:'Blok Oluştur',clipboard:{title:'Yapıştır',cutError:'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl+X) tuşlarını kullanın.',copyError:'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl+C) tuşlarını kullanın.',pasteMsg:'Lütfen aşağıdaki kutunun içine yapıştırın. (<STRONG>Ctrl+V</STRONG>) ve <STRONG>Tamam</STRONG> butonunu tıklayın.',securityMsg:'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin direkt olarak panoya erişimine izin vermiyor. Bu pencere içine tekrar yapıştırmalısınız..'},pastefromword:{toolbar:"Word'den Yapıştır",title:"Word'den Yapıştır",advice:'Lütfen aşağıdaki kutunun içine yapıştırın. (<STRONG>Ctrl+V</STRONG>) ve <STRONG>Tamam</STRONG> butonunu tıklayın.',ignoreFontFace:'Yazı Tipi tanımlarını yoksay',removeStyle:'Biçem Tanımlarını çıkar'},pasteText:{button:'Düz Metin Olarak Yapıştır',title:'Düz Metin Olarak Yapıştır'},templates:{button:'Şablonlar',title:'İçerik Şablonları',insertOption:'Mevcut içerik ile değiştir',selectPromptMsg:'Düzenleyicide açmak için lütfen bir şablon seçin.<br>(hali hazırdaki içerik kaybolacaktır.):',emptyListMsg:'(Belirli bir şablon seçilmedi)'},showBlocks:'Blokları Göster',stylesCombo:{label:'Biçem',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Biçim',voiceLabel:'Format',panelTitle:'Biçim',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Biçimli',tag_address:'Adres',tag_h1:'Başlık 1',tag_h2:'Başlık 2',tag_h3:'Başlık 3',tag_h4:'Başlık 4',tag_h5:'Başlık 5',tag_h6:'Başlık 6',tag_div:'Paragraf (DIV)'},font:{label:'Yazı Türü',voiceLabel:'Font',panelTitle:'Yazı Türü',panelVoiceLabel:'Select a font'},fontSize:{label:'Boyut',voiceLabel:'Font Size',panelTitle:'Boyut',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Yazı Rengi',bgColorTitle:'Arka Renk',auto:'Otomatik',more:'Diğer renkler...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/fa.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/fa.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/fa.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.fa={dir:'rtl',editorTitle:'Rich text editor, %1',source:'منبع',newPage:'برگهٴ تازه',save:'ذخیره',preview:'پیشنمایش',cut:'برش',copy:'کپی',paste:'چسباندن',print:'چاپ',underline:'خطزیردار',bold:'درشت',italic:'خمیده',selectAll:'گزینش همه',removeFormat:'برداشتن فرمت',strike:'میانخط',subscript:'زیرنویس',superscript:'بالانویس',horizontalrule:'گنجاندن خط ِافقی',pagebreak:'گنجاندن شکستگی ِپایان ِبرگه',unlink:'برداشتن پیوند',undo:'واچیدن',redo:'بازچیدن',common:{browseServer:'فهرستنمایی سرور',url:'URL',protocol:'پروتکل',upload:'انتقال به سرور',uploadSubmit:'به سرور بفرست',image:'تصویر',flash:'Flash',form:'فرم',checkbox:'خانهٴ گزینهای',radio:'دکمهٴ رادیویی',textField:'فیلد متنی',textarea:'ناحیهٴ متنی',hiddenField:'فیلد پنهان',button:'دکمه',select:'فیلد چندگزینهای',imageButton:'دکمهٴ تصویری',notSet:'<تعیننشده>',id:'شناسه',name:'نام',langDir:'جهتنمای زبان',langDirLtr:'چپ به راست (LTR)',langDirRtl:'راست به چپ (RTL)',langCode:'کد زبان',longDescr:'URL توصیف طولانی',cssClass:'کلاسهای شیوهنامه(Stylesheet)',advisoryTitle:'عنوان کمکی',cssStyle:'شیوه(style)',ok:'پذیرش',cancel:'انصراف',generalTab:'General',advancedTab:'پیشرفته',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'گنجاندن نویسهٴ ویژه',title:'گزینش نویسهٴویژه'},link:{toolbar:'گنجاندن/ویرایش ِپیوند',menu:'ویرایش پیوند',title:'پیوند',info:'اطلاعات پیوند',target:'مقصد',upload:'انتقال به سرور',advanced:'پیشرفته',type:'نوع پیوند',toAnchor:'لنگر در همین صفحه',toEmail:'پست الکترونیکی',target:'مقصد',targetNotSet:'<تعیننشده>',targetFrame:'<فریم>',targetPopup:'<پنجرهٴ پاپاپ>',targetNew:'پنجرهٴ دیگر (_blank)',targetTop:'بالاترین پنجره (_top)',targetSelf:'همان پنجره (_self)',targetParent:'پنجرهٴ والد (_parent)',targetFrameName:'نام فریم مقصد',targetPopupName:'نام پنجرهٴ پاپاپ',popupFeatures:'ویژگیهای پنجرهٴ پاپاپ',popupResizable:'Resizable',popupStatusBar:'نوار وضعیت',popupLocationBar:'نوار موقعیت',popupToolbar:'نوارابزار',popupMenuBar:'نوار منو',popupFullScreen:'تمامصفحه (IE)',popupScrollBars:'میلههای پیمایش',popupDependent:'وابسته (Netscape)',popupWidth:'پهنا',popupLeft:'موقعیت ِچپ',popupHeight:'درازا',popupTop:'موقعیت ِبالا',id:'Id',langDir:'جهتنمای زبان',langDirNotSet:'<تعیننشده>',langDirLTR:'چپ به راست (LTR)',langDirRTL:'راست به چپ (RTL)',acccessKey:'کلید دستیابی',name:'نام',langCode:'جهتنمای زبان',tabIndex:'نمایهٴ دسترسی با Tab',advisoryTitle:'عنوان کمکی',advisoryContentType:'نوع محتوای کمکی',cssClasses:'کلاسهای شیوهنامه(Stylesheet)',charset:'نویسهگان منبع ِپیوندشده',styles:'شیوه(style)',selectAnchor:'یک لنگر برگزینید',anchorName:'با نام لنگر',anchorId:'با شناسهٴ المان',emailAddress:'نشانی پست الکترونیکی',emailSubject:'موضوع پیام',emailBody:'متن پیام',noAnchors:'(در این سند لنگری دردسترس نیست)',noUrl:'لطفا URL پیوند را بنویسید',noEmail:'لطفا نشانی پست الکترونیکی را بنویسید'},anchor:{toolbar:'گنجاندن/ویرایش ِلنگر',menu:'ویژگیهای لنگر',title:'ویژگیهای لنگر',name:'نام لنگر',errorName:'لطفا نام لنگر را بنویسید'},findAndReplace:{title:'جستجو و جایگزینی',find:'جستجو',replace:'جایگزینی',findWhat:'چهچیز را مییابید:',replaceWith:'جایگزینی با:',notFoundMsg:'متن موردنظر یافت نشد.',matchCase:'همسانی در بزرگی و کوچکی نویسهها',matchWord:'همسانی با واژهٴ کامل',matchCyclic:'Match cyclic',replaceAll:'جایگزینی همهٴ یافتهها',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'جدول',title:'ویژگیهای جدول',menu:'ویژگیهای جدول',deleteTable:'پاککردن جدول',rows:'سطرها',columns:'ستونها',border:'اندازهٴ لبه',align:'چینش',alignNotSet:'<تعیننشده>',alignLeft:'چپ',alignCenter:'وسط',alignRight:'راست',width:'پهنا',widthPx:'پیکسل',widthPc:'درصد',height:'درازا',cellSpace:'فاصلهٴ میان سلولها',cellPad:'فاصلهٴ پرشده در سلول',caption:'عنوان',summary:'خلاصه',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'سلول',insertBefore:'افزودن سلول قبل از',insertAfter:'افزودن سلول بعد از',deleteCell:'حذف سلولها',merge:'ادغام سلولها',mergeRight:'ادغام به راست',mergeDown:'ادغام به پایین',splitHorizontal:'جدا کردن افقی سلول',splitVertical:'جدا کردن عمودی سلول',title:'ویژگیهای سلول',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'سطر',insertBefore:'افزودن سطر قبل از',insertAfter:'افزودن سطر بعد از',deleteRow:'حذف سطرها'},column:{menu:'ستون',insertBefore:'افزودن ستون قبل از',insertAfter:'افزودن ستون بعد از',deleteColumn:'حذف ستونها'}},button:{title:'ویژگیهای دکمه',text:'متن (مقدار)',type:'نوع',typeBtn:'دکمه',typeSbm:'Submit',typeRst:'بازنشانی (Reset)'},checkboxAndRadio:{checkboxTitle:'ویژگیهای خانهٴ گزینهای',radioTitle:'ویژگیهای دکمهٴ رادیویی',value:'مقدار',selected:'برگزیده'},form:{title:'ویژگیهای فرم',menu:'ویژگیهای فرم',action:'رویداد',method:'متد',encoding:'Encoding',target:'مقصد',targetNotSet:'<تعیننشده>',targetNew:'پنجرهٴ دیگر (_blank)',targetTop:'بالاترین پنجره (_top)',targetSelf:'همان پنجره (_self)',targetParent:'پنجرهٴ والد (_parent)'},select:{title:'ویژگیهای فیلد چندگزینهای',selectInfo:'اطلاعات',opAvail:'گزینههای دردسترس',value:'مقدار',size:'اندازه',lines:'خطوط',chkMulti:'گزینش چندگانه فراهم باشد',opText:'متن',opValue:'مقدار',btnAdd:'افزودن',btnModify:'ویرایش',btnUp:'بالا',btnDown:'پائین',btnSetValue:'تنظیم به عنوان مقدار ِبرگزیده',btnDelete:'پاککردن'},textarea:{title:'ویژگیهای ناحیهٴ متنی',cols:'ستونها',rows:'سطرها'},textfield:{title:'ویژگیهای فیلد متنی',name:'نام',value:'مقدار',charWidth:'پهنای نویسه',maxChars:'بیشینهٴ نویسهها',type:'نوع',typeText:'متن',typePass:'گذرواژه'},hidden:{title:'ویژگیهای فیلد پنهان',name:'نام',value:'مقدار'},image:{title:'ویژگیهای تصویر',titleButton:'ویژگیهای دکمهٴ تصویری',menu:'ویژگیهای تصویر',infoTab:'اطلاعات تصویر',btnUpload:'به سرور بفرست',url:'URL',upload:'انتقال به سرور',alt:'متن جایگزین',width:'پهنا',height:'درازا',lockRatio:'قفلکردن ِنسبت',resetSize:'بازنشانی اندازه',border:'لبه',hSpace:'فاصلهٴ افقی',vSpace:'فاصلهٴ عمودی',align:'چینش',alignLeft:'چپ',alignAbsBottom:'پائین مطلق',alignAbsMiddle:'وسط مطلق',alignBaseline:'خطپایه',alignBottom:'پائین',alignMiddle:'وسط',alignRight:'راست',alignTextTop:'متن بالا',alignTop:'بالا',preview:'پیشنمایش',alertUrl:'لطفا URL تصویر را بنویسید',linkTab:'پیوند',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'ویژگیهای Flash',propertiesTab:'Properties',title:'ویژگیهای Flash',chkPlay:'آغاز ِخودکار',chkLoop:'اجرای پیاپی',chkMenu:'دردسترسبودن منوی Flash',chkFull:'Allow Fullscreen',scale:'مقیاس',scaleAll:'نمایش همه',scaleNoBorder:'بدون کران',scaleFit:'جایگیری کامل',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'چینش',alignLeft:'چپ',alignAbsBottom:'پائین مطلق',alignAbsMiddle:'وسط مطلق',alignBaseline:'خطپایه',alignBottom:'پائین',alignMiddle:'وسط',alignRight:'راست',alignTextTop:'متن بالا',alignTop:'بالا',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'رنگ پسزمینه',width:'پهنا',height:'درازا',hSpace:'فاصلهٴ افقی',vSpace:'فاصلهٴ عمودی',validateSrc:'لطفا URL پیوند را بنویسید',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'بررسی املا',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'در واژهنامه یافت نشد',changeTo:'تغییر به',btnIgnore:'چشمپوشی',btnIgnoreAll:'چشمپوشی همه',btnReplace:'جایگزینی',btnReplaceAll:'جایگزینی همه',btnUndo:'واچینش',noSuggestions:'- پیشنهادی نیست -',progress:'بررسی املا در حال انجام...',noMispell:'بررسی املا انجام شد. هیچ غلطاملائی یافت نشد',noChanges:'بررسی املا انجام شد. هیچ واژهای تغییر نیافت',oneChange:'بررسی املا انجام شد. یک واژه تغییر یافت',manyChanges:'بررسی املا انجام شد. %1 واژه تغییر یافت',ieSpellDownload:'بررسیکنندهٴ املا نصب نشده است. آیا میخواهید آن را هماکنون دریافت کنید؟'},smiley:{toolbar:'خندانک',title:'گنجاندن خندانک'},elementsPath:{eleTitle:'%1 element'},numberedlist:'فهرست شمارهدار',bulletedlist:'فهرست نقطهای',indent:'افزایش تورفتگی',outdent:'کاهش تورفتگی',justify:{left:'چپچین',center:'میانچین',right:'راستچین',block:'بلوکچین'},blockquote:'بلوک نقل قول',clipboard:{title:'چسباندن',cutError:'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحهکلید این کار را انجام دهید (Ctrl+X).',copyError:'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای کپیکردن را انجام دهد. لطفا با دکمههای صفحهکلید این کار را انجام دهید (Ctrl+C).',pasteMsg:'لطفا متن را با کلیدهای (<STRONG>Ctrl+V</STRONG>) در این جعبهٴ متنی بچسبانید و <STRONG>پذیرش</STRONG> را بزنید.',securityMsg:'به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمیتواند دسترسی مستقیم به دادههای clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.'},pastefromword:{toolbar:'چسباندن از Word',title:'چسباندن از Word',advice:'لطفا متن را با کلیدهای (<STRONG>Ctrl+V</STRONG>) در این جعبهٴ متنی بچسبانید و <STRONG>پذیرش</STRONG> را بزنید.',ignoreFontFace:'چشمپوشی از تعاریف نوع قلم',removeStyle:'چشمپوشی از تعاریف سبک (style)'},pasteText:{button:'چسباندن به عنوان متن ِساده',title:'چسباندن به عنوان متن ِساده'},templates:{button:'الگوها',title:'الگوهای محتویات',insertOption:'محتویات کنونی جایگزین شوند',selectPromptMsg:'لطفا الگوی موردنظر را برای بازکردن در ویرایشگر برگزینید<br>(محتویات کنونی از دست خواهند رفت):',emptyListMsg:'(الگوئی تعریف نشده است)'},showBlocks:'نمایش بلوکها',stylesCombo:{label:'سبک',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'فرمت',voiceLabel:'Format',panelTitle:'فرمت',panelVoiceLabel:'Select a paragraph format',tag_p:'نرمال',tag_pre:'فرمتشده',tag_address:'آدرس',tag_h1:'سرنویس 1',tag_h2:'سرنویس 2',tag_h3:'سرنویس 3',tag_h4:'سرنویس 4',tag_h5:'سرنویس 5',tag_h6:'سرنویس 6',tag_div:'بند'},font:{label:'قلم',voiceLabel:'Font',panelTitle:'قلم',panelVoiceLabel:'Select a font'},fontSize:{label:'اندازه',voiceLabel:'Font Size',panelTitle:'اندازه',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'رنگ متن',bgColorTitle:'رنگ پسزمینه',auto:'خودکار',more:'رنگهای بیشتر...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/bg.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/bg.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/bg.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.bg={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Код',newPage:'Нова страница',save:'Запази',preview:'Предварителен изглед',cut:'Изрежи',copy:'Запамети',paste:'Вмъкни',print:'Печат',underline:'Подчертан',bold:'Удебелен',italic:'Курсив',selectAll:'Селектирай всичко',removeFormat:'Изтрий форматирането',strike:'Зачертан',subscript:'Индекс за база',superscript:'Индекс за степен',horizontalrule:'Вмъкни хоризонтална линия',pagebreak:'Вмъкни нов ред',unlink:'Изтрий връзка',undo:'Отмени',redo:'Повтори',common:{browseServer:'Разгледай сървъра',url:'Пълен път (URL)',protocol:'Протокол',upload:'Качи',uploadSubmit:'Прати към сървъра',image:'Изображение',flash:'Flash',form:'Формуляр',checkbox:'Поле за отметка',radio:'Поле за опция',textField:'Текстово поле',textarea:'Текстова област',hiddenField:'Скрито поле',button:'Бутон',select:'Падащо меню с опции',imageButton:'Бутон-изображение',notSet:'<не е настроен>',id:'Идентификатор',name:'Име',langDir:'посока на речта',langDirLtr:'От ляво на дясно',langDirRtl:'От дясно на ляво',langCode:'Код на езика',longDescr:'Описание на връзката',cssClass:'Клас от стиловите таблици',advisoryTitle:'Препоръчително заглавие',cssStyle:'Стил',ok:'ОК',cancel:'Отказ',generalTab:'General',advancedTab:'Подробности...',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Вмъкни специален символ',title:'Изберете специален символ'},link:{toolbar:'Добави/Редактирай връзка',menu:'Редактирай връзка',title:'Връзка',info:'Информация за връзката',target:'Цел',upload:'Качи',advanced:'Подробности...',type:'Вид на връзката',toAnchor:'Котва в текущата страница',toEmail:'Е-поща',target:'Цел',targetNotSet:'<не е настроен>',targetFrame:'<рамка>',targetPopup:'<дъщерен прозорец>',targetNew:'Нов прозорец (_blank)',targetTop:'Целия прозорец (_top)',targetSelf:'Активния прозорец (_self)',targetParent:'Родителски прозорец (_parent)',targetFrameName:'Име на целевия прозорец',targetPopupName:'Име на дъщерния прозорец',popupFeatures:'Параметри на дъщерния прозорец',popupResizable:'Resizable',popupStatusBar:'Поле за статус',popupLocationBar:'Поле за адрес',popupToolbar:'Панел с бутони',popupMenuBar:'Меню',popupFullScreen:'Голям екран (MS IE)',popupScrollBars:'Плъзгач',popupDependent:'Зависим (Netscape)',popupWidth:'Ширина',popupLeft:'Координати - X',popupHeight:'Височина',popupTop:'Координати - Y',id:'Id',langDir:'посока на речта',langDirNotSet:'<не е настроен>',langDirLTR:'От ляво на дясно',langDirRTL:'От дясно на ляво',acccessKey:'Бърз клавиш',name:'Име',langCode:'посока на речта',tabIndex:'Ред на достъп',advisoryTitle:'Препоръчително заглавие',advisoryContentType:'Препоръчителен тип на съдържанието',cssClasses:'Клас от стиловите таблици',charset:'Тип на свързания ресурс',styles:'Стил',selectAnchor:'Изберете котва',anchorName:'По име на котвата',anchorId:'По идентификатор на елемент',emailAddress:'Адрес за е-поща',emailSubject:'Тема на писмото',emailBody:'Текст на писмото',noAnchors:'(Няма котви в текущия документ)',noUrl:'Моля, напишете пълния път (URL)',noEmail:'Моля, напишете адреса за е-поща'},anchor:{toolbar:'Добави/Редактирай котва',menu:'Параметри на котвата',title:'Параметри на котвата',name:'Име на котвата',errorName:'Моля, въведете име на котвата'},findAndReplace:{title:'Find and Replace',find:'Търси',replace:'Замести',findWhat:'Търси:',replaceWith:'Замести с:',notFoundMsg:'Указания текст не беше намерен.',matchCase:'Със същия регистър',matchWord:'Търси същата дума',matchCyclic:'Match cyclic',replaceAll:'Замести всички',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Таблица',title:'Параметри на таблицата',menu:'Параметри на таблицата',deleteTable:'Изтрий таблицата',rows:'Редове',columns:'Колони',border:'Размер на рамката',align:'Подравняване',alignNotSet:'<Не е избрано>',alignLeft:'Ляво',alignCenter:'Център',alignRight:'Дясно',width:'Ширина',widthPx:'пиксели',widthPc:'проценти',height:'Височина',cellSpace:'Разстояние между клетките',cellPad:'Отстъп на съдържанието в клетките',caption:'Заглавие',summary:'Резюме',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Изтрий клетките',merge:'Обедини клетките',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Изтрий редовете'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Изтрий колоните'}},button:{title:'Параметри на бутона',text:'Текст (Стойност)',type:'Тип',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Параметри на полето за отметка',radioTitle:'Параметри на полето за опция',value:'Стойност',selected:'Отметнато'},form:{title:'Параметри на формуляра',menu:'Параметри на формуляра',action:'Действие',method:'Метод',encoding:'Encoding',target:'Цел',targetNotSet:'<не е настроен>',targetNew:'Нов прозорец (_blank)',targetTop:'Целия прозорец (_top)',targetSelf:'Активния прозорец (_self)',targetParent:'Родителски прозорец (_parent)'},select:{title:'Параметри на падащото меню с опции',selectInfo:'Информация',opAvail:'Възможни опции',value:'Стойност',size:'Размер',lines:'линии',chkMulti:'Разрешено множествено селектиране',opText:'Текст',opValue:'Стойност',btnAdd:'Добави',btnModify:'Промени',btnUp:'Нагоре',btnDown:'Надолу',btnSetValue:'Настрой като избрана стойност',btnDelete:'Изтрий'},textarea:{title:'Параметри на текстовата област',cols:'Колони',rows:'Редове'},textfield:{title:'Параметри на текстовото-поле',name:'Име',value:'Стойност',charWidth:'Ширина на символите',maxChars:'Максимум символи',type:'Тип',typeText:'Текст',typePass:'Парола'},hidden:{title:'Параметри на скритото поле',name:'Име',value:'Стойност'},image:{title:'Параметри на изображението',titleButton:'Параметри на бутона-изображение',menu:'Параметри на изображението',infoTab:'Информация за изображението',btnUpload:'Прати към сървъра',url:'Пълен път (URL)',upload:'Качи',alt:'Алтернативен текст',width:'Ширина',height:'Височина',lockRatio:'Запази пропорцията',resetSize:'Възстанови размера',border:'Рамка',hSpace:'Хоризонтален отстъп',vSpace:'Вертикален отстъп',align:'Подравняване',alignLeft:'Ляво',alignAbsBottom:'Най-долу',alignAbsMiddle:'Точно по средата',alignBaseline:'По базовата линия',alignBottom:'Долу',alignMiddle:'По средата',alignRight:'Дясно',alignTextTop:'Върху текста',alignTop:'Отгоре',preview:'Изглед',alertUrl:'Моля, въведете пълния път до изображението',linkTab:'Връзка',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Параметри на Flash обекта',propertiesTab:'Properties',title:'Параметри на Flash обекта',chkPlay:'Автоматично стартиране',chkLoop:'Ново стартиране след завършването',chkMenu:'Разрешено Flash меню',chkFull:'Allow Fullscreen',scale:'Оразмеряване',scaleAll:'Покажи целия обект',scaleNoBorder:'Без рамка',scaleFit:'Според мястото',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Подравняване',alignLeft:'Ляво',alignAbsBottom:'Най-долу',alignAbsMiddle:'Точно по средата',alignBaseline:'По базовата линия',alignBottom:'Долу',alignMiddle:'По средата',alignRight:'Дясно',alignTextTop:'Върху текста',alignTop:'Отгоре',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Цвят на фона',width:'Ширина',height:'Височина',hSpace:'Хоризонтален отстъп',vSpace:'Вертикален отстъп',validateSrc:'Моля, напишете пълния път (URL)',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Провери правописа',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Липсва в речника',changeTo:'Промени на',btnIgnore:'Игнорирай',btnIgnoreAll:'Игнорирай всички',btnReplace:'Замести',btnReplaceAll:'Замести всички',btnUndo:'Отмени',noSuggestions:'- Няма предложения -',progress:'Извършване на проверката за правопис...',noMispell:'Проверката за правопис завършена: не са открити правописни грешки',noChanges:'Проверката за правопис завършена: няма променени думи',oneChange:'Проверката за правопис завършена: една дума е променена',manyChanges:'Проверката за правопис завършена: %1 думи са променени',ieSpellDownload:'Инструментът за проверка на правопис не е инсталиран. Желаете ли да го инсталирате ?'},smiley:{toolbar:'Усмивка',title:'Добави усмивка'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Нумериран списък',bulletedlist:'Ненумериран списък',indent:'Увеличи отстъпа',outdent:'Намали отстъпа',justify:{left:'Подравняване в ляво',center:'Подравнявне в средата',right:'Подравняване в дясно',block:'Двустранно подравняване'},blockquote:'Blockquote',clipboard:{title:'Вмъкни',cutError:'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни изрязването. За целта използвайте клавиатурата (Ctrl+X).',copyError:'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl+C).',pasteMsg:'Вмъкнете тук съдъжанието с клавиатуарата (<STRONG>Ctrl+V</STRONG>) и натиснете <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Вмъкни от MS Word',title:'Вмъкни от MS Word',advice:'Вмъкнете тук съдъжанието с клавиатуарата (<STRONG>Ctrl+V</STRONG>) и натиснете <STRONG>OK</STRONG>.',ignoreFontFace:'Игнорирай шрифтовите дефиниции',removeStyle:'Изтрий стиловите дефиниции'},pasteText:{button:'Вмъкни като чист текст',title:'Вмъкни като чист текст'},templates:{button:'Шаблони',title:'Шаблони',insertOption:'Replace actual contents',selectPromptMsg:'Изберете шаблон <br>(текущото съдържание на редактора ще бъде загубено):',emptyListMsg:'(Няма дефинирани шаблони)'},showBlocks:'Show Blocks',stylesCombo:{label:'Стил',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Формат',voiceLabel:'Format',panelTitle:'Формат',panelVoiceLabel:'Select a paragraph format',tag_p:'Нормален',tag_pre:'Форматиран',tag_address:'Адрес',tag_h1:'Заглавие 1',tag_h2:'Заглавие 2',tag_h3:'Заглавие 3',tag_h4:'Заглавие 4',tag_h5:'Заглавие 5',tag_h6:'Заглавие 6',tag_div:'Параграф (DIV)'},font:{label:'Шрифт',voiceLabel:'Font',panelTitle:'Шрифт',panelVoiceLabel:'Select a font'},fontSize:{label:'Размер',voiceLabel:'Font Size',panelTitle:'Размер',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Цвят на текста',bgColorTitle:'Цвят на фона',auto:'По подразбиране',more:'Други цветове...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/de.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/de.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/de.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.de={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Quellcode',newPage:'Neue Seite',save:'Speichern',preview:'Vorschau',cut:'Ausschneiden',copy:'Kopieren',paste:'Einfügen',print:'Drucken',underline:'Unterstrichen',bold:'Fett',italic:'Kursiv',selectAll:'Alles auswählen',removeFormat:'Formatierungen entfernen',strike:'Durchgestrichen',subscript:'Tiefgestellt',superscript:'Hochgestellt',horizontalrule:'Horizontale Linie einfügen',pagebreak:'Seitenumbruch einfügen',unlink:'Link entfernen',undo:'Rückgängig',redo:'Wiederherstellen',common:{browseServer:'Server durchsuchen',url:'URL',protocol:'Protokoll',upload:'Upload',uploadSubmit:'Zum Server senden',image:'Bild',flash:'Flash',form:'Formular',checkbox:'Checkbox',radio:'Radiobutton',textField:'Textfeld einzeilig',textarea:'Textfeld mehrzeilig',hiddenField:'verstecktes Feld',button:'Klickbutton',select:'Auswahlfeld',imageButton:'Bildbutton',notSet:'<nichts>',id:'ID',name:'Name',langDir:'Schreibrichtung',langDirLtr:'Links nach Rechts (LTR)',langDirRtl:'Rechts nach Links (RTL)',langCode:'Sprachenkürzel',longDescr:'Langform URL',cssClass:'Stylesheet Klasse',advisoryTitle:'Titel Beschreibung',cssStyle:'Style',ok:'OK',cancel:'Abbrechen',generalTab:'Allgemein',advancedTab:'Erweitert',validateNumberFailed:'Dieser Wert ist keine Nummer.',confirmNewPage:'Alle nicht gespeicherten Änderungen gehen verlohren. Sind sie sicher die neue Seite zu laden?',confirmCancel:'Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schließen?',unavailable:'%1<span class="cke_accessibility">, nicht verfügbar</span>'},specialChar:{toolbar:'Sonderzeichen einfügen/editieren',title:'Sonderzeichen auswählen'},link:{toolbar:'Link einfügen/editieren',menu:'Link editieren',title:'Link',info:'Link-Info',target:'Zielseite',upload:'Upload',advanced:'Erweitert',type:'Link-Typ',toAnchor:'Anker in dieser Seite',toEmail:'E-Mail',target:'Zielseite',targetNotSet:'<nichts>',targetFrame:'<Frame>',targetPopup:'<Pop-up Fenster>',targetNew:'Neues Fenster (_blank)',targetTop:'Oberstes Fenster (_top)',targetSelf:'Gleiches Fenster (_self)',targetParent:'Oberes Fenster (_parent)',targetFrameName:'Ziel-Fenster-Name',targetPopupName:'Pop-up Fenster-Name',popupFeatures:'Pop-up Fenster-Eigenschaften',popupResizable:'Größe änderbar',popupStatusBar:'Statusleiste',popupLocationBar:'Adress-Leiste',popupToolbar:'Werkzeugleiste',popupMenuBar:'Menü-Leiste',popupFullScreen:'Vollbild (IE)',popupScrollBars:'Rollbalken',popupDependent:'Abhängig (Netscape)',popupWidth:'Breite',popupLeft:'Linke Position',popupHeight:'Höhe',popupTop:'Obere Position',id:'Id',langDir:'Schreibrichtung',langDirNotSet:'<nichts>',langDirLTR:'Links nach Rechts (LTR)',langDirRTL:'Rechts nach Links (RTL)',acccessKey:'Zugriffstaste',name:'Name',langCode:'Schreibrichtung',tabIndex:'Tab-Index',advisoryTitle:'Titel Beschreibung',advisoryContentType:'Inhaltstyp',cssClasses:'Stylesheet Klasse',charset:'Ziel-Zeichensatz',styles:'Style',selectAnchor:'Anker auswählen',anchorName:'nach Anker Name',anchorId:'nach Element Id',emailAddress:'E-Mail Addresse',emailSubject:'Betreffzeile',emailBody:'Nachrichtentext',noAnchors:'(keine Anker im Dokument vorhanden)',noUrl:'Bitte geben Sie die Link-URL an',noEmail:'Bitte geben Sie e-Mail Adresse an'},anchor:{toolbar:'Anker einfügen/editieren',menu:'Anker-Eigenschaften',title:'Anker-Eigenschaften',name:'Anker Name',errorName:'Bitte geben Sie den Namen des Ankers ein'},findAndReplace:{title:'Suchen und Ersetzen',find:'Suchen',replace:'Ersetzen',findWhat:'Suche nach:',replaceWith:'Ersetze mit:',notFoundMsg:'Der gesuchte Text wurde nicht gefunden.',matchCase:'Groß-Kleinschreibung beachten',matchWord:'Nur ganze Worte suchen',matchCyclic:'zyklische suche',replaceAll:'Alle Ersetzen',replaceSuccessMsg:'%1 vorkommen ersetzt.'},table:{toolbar:'Tabelle',title:'Tabellen-Eigenschaften',menu:'Tabellen-Eigenschaften',deleteTable:'Tabelle löschen',rows:'Zeile',columns:'Spalte',border:'Rahmen',align:'Ausrichtung',alignNotSet:'<keine>',alignLeft:'Links',alignCenter:'Zentriert',alignRight:'Rechts',width:'Breite',widthPx:'Pixel',widthPc:'%',height:'Höhe',cellSpace:'Zellenabstand außen',cellPad:'Zellenabstand innen',caption:'Überschrift',summary:'Inhaltsübersicht',headers:'Überschriften',headersNone:'keine',headersColumn:'Erste Spalte',headersRow:'Erste Zeile',headersBoth:'keine',invalidRows:'Die Anzahl der Zeilen muß größer als 0 sein.',invalidCols:'Die Anzahl der Spalten muß größer als 0 sein..',invalidBorder:'Die Rahmenbreite muß eine Zahl sein.',invalidWidth:'Die Tabellenbreite muss eine Zahl sein.',invalidHeight:'Die Tabellenbreite muß eine Zahl sein.',invalidCellSpacing:'Der Zellenabstand außen muß eine Zahl sein.',invalidCellPadding:'Der Zellenabstand innen muß eine Zahl sein.',cell:{menu:'Zelle',insertBefore:'Zelle davor einfügen',insertAfter:'Zelle danach einfügen',deleteCell:'Zelle löschen',merge:'Zellen verbinden',mergeRight:'nach rechts verbinden',mergeDown:'nach unten verbinden',splitHorizontal:'Zelle horizontal teilen',splitVertical:'Zelle vertikal teilen',title:'Zellen Eigenschaften',cellType:'Zellart',rowSpan:'Anzahl Zeilen verbinden',colSpan:'Anzahl Spalten verbinden',wordWrap:'Zeilenumbruch',hAlign:'Horizontale Ausrichtung',vAlign:'Vertikale Ausrichtung',alignTop:'Oben',alignMiddle:'Mitte',alignBottom:'Unten',alignBaseline:'Grundlinie',bgColor:'Hintergrundfarbe',borderColor:'Rahmenfarbe',data:'Daten',header:'Überschrift',yes:'Ja',no:'Nein',invalidWidth:'Zellenbreite muß eine Zahl sein.',invalidHeight:'Zellenhöhe muß eine Zahl sein.',invalidRowSpan:'"Anzahl Zeilen verbinden" muss eine Ganzzahl sein.',invalidColSpan:'"Anzahl Spalten verbinden" muss eine Ganzzahl sein.',chooseColor:'Choose'},row:{menu:'Zeile',insertBefore:'Zeile oberhalb einfügen',insertAfter:'Zeile unterhalb einfügen',deleteRow:'Zeile entfernen'},column:{menu:'Spalte',insertBefore:'Spalte links davor einfügen',insertAfter:'Spalte rechts danach einfügen',deleteColumn:'Spalte löschen'}},button:{title:'Button-Eigenschaften',text:'Text (Wert)',type:'Typ',typeBtn:'Button',typeSbm:'Absenden',typeRst:'Zurücksetzen'},checkboxAndRadio:{checkboxTitle:'Checkbox-Eigenschaften',radioTitle:'Optionsfeld-Eigenschaften',value:'Wert',selected:'ausgewählt'},form:{title:'Formular-Eigenschaften',menu:'Formular-Eigenschaften',action:'Action',method:'Method',encoding:'Zeichenkodierung',target:'Zielseite',targetNotSet:'<keins>',targetNew:'Neues Fenster (_blank)',targetTop:'Oberstes Fenster (_top)',targetSelf:'Gleiches Fenster (_self)',targetParent:'Oberes Fenster (_parent)'},select:{title:'Auswahlfeld-Eigenschaften',selectInfo:'Info',opAvail:'Mögliche Optionen',value:'Wert',size:'Größe',lines:'Linien',chkMulti:'Erlaube Mehrfachauswahl',opText:'Text',opValue:'Wert',btnAdd:'Hinzufügen',btnModify:'Ändern',btnUp:'Hoch',btnDown:'Runter',btnSetValue:'Setze als Standardwert',btnDelete:'Entfernen'},textarea:{title:'Textfeld (mehrzeilig) Eigenschaften',cols:'Spalten',rows:'Reihen'},textfield:{title:'Textfeld (einzeilig) Eigenschaften',name:'Name',value:'Wert',charWidth:'Zeichenbreite',maxChars:'Max. Zeichen',type:'Typ',typeText:'Text',typePass:'Passwort'},hidden:{title:'Verstecktes Feld-Eigenschaften',name:'Name',value:'Wert'},image:{title:'Bild-Eigenschaften',titleButton:'Bildbutton-Eigenschaften',menu:'Bild-Eigenschaften',infoTab:'Bild-Info',btnUpload:'Zum Server senden',url:'URL',upload:'Hochladen',alt:'Alternativer Text',width:'Breite',height:'Höhe',lockRatio:'Größenverhältnis beibehalten',resetSize:'Größe zurücksetzen',border:'Rahmen',hSpace:'Horizontal-Abstand',vSpace:'Vertikal-Abstand',align:'Ausrichtung',alignLeft:'Links',alignAbsBottom:'Abs Unten',alignAbsMiddle:'Abs Mitte',alignBaseline:'Baseline',alignBottom:'Unten',alignMiddle:'Mitte',alignRight:'Rechts',alignTextTop:'Text Oben',alignTop:'Oben',preview:'Vorschau',alertUrl:'Bitte geben Sie die Bild-URL an',linkTab:'Link',button2Img:'Möchten Sie den gewählten Bild-Button in ein einfaches Bild umwandeln?',img2Button:'Möchten Sie das gewählten Bild in einen Bild-Button umwandeln?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash-Eigenschaften',propertiesTab:'Eigenschaften',title:'Flash-Eigenschaften',chkPlay:'autom. Abspielen',chkLoop:'Endlosschleife',chkMenu:'Flash-Menü aktivieren',chkFull:'Vollbildmodus erlauben',scale:'Skalierung',scaleAll:'Alles anzeigen',scaleNoBorder:'ohne Rand',scaleFit:'Passgenau',access:'Skript Zugang',accessAlways:'Immer',accessSameDomain:'Gleiche Domain',accessNever:'Nie',align:'Ausrichtung',alignLeft:'Links',alignAbsBottom:'Abs Unten',alignAbsMiddle:'Abs Mitte',alignBaseline:'Baseline',alignBottom:'Unten',alignMiddle:'Mitte',alignRight:'Rechts',alignTextTop:'Text Oben',alignTop:'Oben',quality:'Qualität',qualityBest:'Beste',qualityHigh:'Hoch',qualityAutoHigh:'Auto Hoch',qualityMedium:'Medium',qualityAutoLow:'Auto Niedrig',qualityLow:'Niedrig',windowModeWindow:'Fenster',windowModeOpaque:'Deckend',windowModeTransparent:'Transparent',windowMode:'Fenster Modus',flashvars:'Variablen für Flash',bgcolor:'Hintergrundfarbe',width:'Breite',height:'Höhe',hSpace:'Horizontal-Abstand',vSpace:'Vertikal-Abstand',validateSrc:'Bitte geben Sie die Link-URL an',validateWidth:'Breite muss eine Zahl sein.',validateHeight:'Höhe muss eine Zahl sein.',validateHSpace:'HSpace muss eine Zahl sein.',validateVSpace:'VSpace muss eine Zahl sein.'},spellCheck:{toolbar:'Rechtschreibprüfung',title:'Rechtschreibprüfung',notAvailable:'Entschuldigung, aber dieser Dienst steht im Moment nicht zur verfügung.',errorLoading:'Fehler beim laden des Dienstanbieters: %s.',notInDic:'Nicht im Wörterbuch',changeTo:'Ändern in',btnIgnore:'Ignorieren',btnIgnoreAll:'Alle Ignorieren',btnReplace:'Ersetzen',btnReplaceAll:'Alle Ersetzen',btnUndo:'Rückgängig',noSuggestions:' - keine Vorschläge - ',progress:'Rechtschreibprüfung läuft...',noMispell:'Rechtschreibprüfung abgeschlossen - keine Fehler gefunden',noChanges:'Rechtschreibprüfung abgeschlossen - keine Worte geändert',oneChange:'Rechtschreibprüfung abgeschlossen - ein Wort geändert',manyChanges:'Rechtschreibprüfung abgeschlossen - %1 Wörter geändert',ieSpellDownload:'Rechtschreibprüfung nicht installiert. Möchten Sie sie jetzt herunterladen?'},smiley:{toolbar:'Smiley',title:'Smiley auswählen'},elementsPath:{eleTitle:'%1 Element'},numberedlist:'Nummerierte Liste',bulletedlist:'Liste',indent:'Einzug erhöhen',outdent:'Einzug verringern',justify:{left:'Linksbündig',center:'Zentriert',right:'Rechtsbündig',block:'Blocksatz'},blockquote:'Zitatblock',clipboard:{title:'Einfügen',cutError:'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).',copyError:'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).',pasteMsg:'Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit <STRONG>Strg+V</STRONG>) ein und bestätigen Sie mit <STRONG>OK</STRONG>.',securityMsg:'Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.'},pastefromword:{toolbar:'aus MS-Word einfügen',title:'aus MS-Word einfügen',advice:'Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit <STRONG>Strg+V</STRONG>) ein und bestätigen Sie mit <STRONG>OK</STRONG>.',ignoreFontFace:'Ignoriere Schriftart-Definitionen',removeStyle:'Entferne Style-Definitionen'},pasteText:{button:'Als Text einfügen',title:'Als Text einfügen'},templates:{button:'Vorlagen',title:'Vorlagen',insertOption:'Aktuellen Inhalt ersetzen',selectPromptMsg:'Klicken Sie auf eine Vorlage, um sie im Editor zu öffnen (der aktuelle Inhalt wird dabei gelöscht!):',emptyListMsg:'(keine Vorlagen definiert)'},showBlocks:'Blöcke anzeigen',stylesCombo:{label:'Stil',voiceLabel:'Stilarten',panelVoiceLabel:'Stilart auswahl',panelTitle1:'Block Stilart',panelTitle2:'Inline Stilart',panelTitle3:'Objekt Stilart'},format:{label:'Format',voiceLabel:'Format',panelTitle:'Format',panelVoiceLabel:'Wählen Sie einen Absatzformat',tag_p:'Normal',tag_pre:'Formatiert',tag_address:'Addresse',tag_h1:'Überschrift 1',tag_h2:'Überschrift 2',tag_h3:'Überschrift 3',tag_h4:'Überschrift 4',tag_h5:'Überschrift 5',tag_h6:'Überschrift 6',tag_div:'Normal (DIV)'},font:{label:'Schriftart',voiceLabel:'Schriftart',panelTitle:'Schriftart',panelVoiceLabel:'Wählen Sie eine Schriftart'},fontSize:{label:'Größe',voiceLabel:'Schrifgröße',panelTitle:'Größe',panelVoiceLabel:'Wählen Sie eine Schriftgröße'},colorButton:{textColorTitle:'Textfarbe',bgColorTitle:'Hintergrundfarbe',auto:'Automatisch',more:'Weitere Farben...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Rechtschreibprüfung während der Texteingabe',enable:'SCAYT einschalten',disable:'SCAYT ausschalten',about:'Über SCAYT',toggle:'SCAYT umschalten',options:'Optionen',langs:'Sprachen',moreSuggestions:'Mehr Vorschläge',ignore:'Ignorieren',ignoreAll:'Alle ignorieren',addWord:'Wort hinzufügen',emptyDic:'Wörterbuchname sollte leer sein.',optionsTab:'Optionen',languagesTab:'Sprachen',dictionariesTab:'Wörterbücher',aboutTab:'Über'},about:{title:'Über CKEditor',dlgTitle:'Über CKEditor',moreInfo:'Für Informationen Liztenzbestimmungen besuchen sie bitte unsere Webseite:',copy:'Copyright &copy; $1. Alle Rechte vorbehalten.'},maximize:'Maximieren',minimize:'Minimize',fakeobjects:{anchor:'Anker',flash:'Flash Animation',div:'Seitenumbruch',unknown:'Unbekanntes Objekt'},resize:'Zum Vergrößern ziehen',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/sv.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/sv.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/sv.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.sv={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Källa',newPage:'Ny sida',save:'Spara',preview:'Förhandsgranska',cut:'Klipp ut',copy:'Kopiera',paste:'Klistra in',print:'Skriv ut',underline:'Understruken',bold:'Fet',italic:'Kursiv',selectAll:'Markera allt',removeFormat:'Radera formatering',strike:'Genomstruken',subscript:'Nedsänkta tecken',superscript:'Upphöjda tecken',horizontalrule:'Infoga horisontal linje',pagebreak:'Infoga sidbrytning',unlink:'Radera länk',undo:'Ångra',redo:'Gör om',common:{browseServer:'Bläddra på server',url:'URL',protocol:'Protokoll',upload:'Ladda upp',uploadSubmit:'Skicka till server',image:'Bild',flash:'Flash',form:'Formulär',checkbox:'Kryssruta',radio:'Alternativknapp',textField:'Textfält',textarea:'Textruta',hiddenField:'Dolt fält',button:'Knapp',select:'Flervalslista',imageButton:'Bildknapp',notSet:'<ej angivet>',id:'Id',name:'Namn',langDir:'Språkriktning',langDirLtr:'Vänster till Höger (VTH)',langDirRtl:'Höger till Vänster (HTV)',langCode:'Språkkod',longDescr:'URL-beskrivning',cssClass:'Stylesheet class',advisoryTitle:'Titel',cssStyle:'Style',ok:'OK',cancel:'Avbryt',generalTab:'General',advancedTab:'Avancerad',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Klistra in utökat tecken',title:'Välj utökat tecken'},link:{toolbar:'Infoga/Redigera länk',menu:'Redigera länk',title:'Länk',info:'Länkinformation',target:'Mål',upload:'Ladda upp',advanced:'Avancerad',type:'Länktyp',toAnchor:'Ankare i sidan',toEmail:'E-post',target:'Mål',targetNotSet:'<ej angivet>',targetFrame:'<ram>',targetPopup:'<popup-fönster>',targetNew:'Nytt fönster (_blank)',targetTop:'Översta fönstret (_top)',targetSelf:'Detta fönstret (_self)',targetParent:'Föregående Window (_parent)',targetFrameName:'Målets ramnamn',targetPopupName:'Popup-fönstrets namn',popupFeatures:'Popup-fönstrets egenskaper',popupResizable:'Resizable',popupStatusBar:'Statusfält',popupLocationBar:'Adressfält',popupToolbar:'Verktygsfält',popupMenuBar:'Menyfält',popupFullScreen:'Helskärm (endast IE)',popupScrollBars:'Scrolllista',popupDependent:'Beroende (endest Netscape)',popupWidth:'Bredd',popupLeft:'Position från vänster',popupHeight:'Höjd',popupTop:'Position från sidans topp',id:'Id',langDir:'Språkriktning',langDirNotSet:'<ej angivet>',langDirLTR:'Vänster till Höger (VTH)',langDirRTL:'Höger till Vänster (HTV)',acccessKey:'Behörighetsnyckel',name:'Namn',langCode:'Språkriktning',tabIndex:'Tabindex',advisoryTitle:'Titel',advisoryContentType:'Innehållstyp',cssClasses:'Stylesheet class',charset:'Teckenuppställning',styles:'Style',selectAnchor:'Välj ett ankare',anchorName:'efter ankarnamn',anchorId:'efter objektid',emailAddress:'E-postadress',emailSubject:'Ämne',emailBody:'Innehåll',noAnchors:'(Inga ankare kunde hittas)',noUrl:'Var god ange länkens URL',noEmail:'Var god ange E-postadress'},anchor:{toolbar:'Infoga/Redigera ankarlänk',menu:'Egenskaper för ankarlänk',title:'Egenskaper för ankarlänk',name:'Ankarnamn',errorName:'Var god ange ett ankarnamn'},findAndReplace:{title:'Sök och ersätt',find:'Sök',replace:'Ersätt',findWhat:'Sök efter:',replaceWith:'Ersätt med:',notFoundMsg:'Angiven text kunde ej hittas.',matchCase:'Skiftläge',matchWord:'Inkludera hela ord',matchCyclic:'Match cyclic',replaceAll:'Ersätt alla',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabell',title:'Tabellegenskaper',menu:'Tabellegenskaper',deleteTable:'Radera tabell',rows:'Rader',columns:'Kolumner',border:'Kantstorlek',align:'Justering',alignNotSet:'<ej angivet>',alignLeft:'Vänster',alignCenter:'Centrerad',alignRight:'Höger',width:'Bredd',widthPx:'pixlar',widthPc:'procent',height:'Höjd',cellSpace:'Cellavstånd',cellPad:'Cellutfyllnad',caption:'Rubrik',summary:'Sammanfattning',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Lägg till Cell Före',insertAfter:'Lägg till Cell Efter',deleteCell:'Radera celler',merge:'Sammanfoga celler',mergeRight:'Sammanfoga Höger',mergeDown:'Sammanfoga Ner',splitHorizontal:'Dela Cell Horisontellt',splitVertical:'Dela Cell Vertikalt',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Rad',insertBefore:'Lägg till Rad Före',insertAfter:'Lägg till Rad Efter',deleteRow:'Radera rad'},column:{menu:'Kolumn',insertBefore:'Lägg till Kolumn Före',insertAfter:'Lägg till Kolumn Efter',deleteColumn:'Radera kolumn'}},button:{title:'Egenskaper för knapp',text:'Text (Värde)',type:'Typ',typeBtn:'Knapp',typeSbm:'Skicka',typeRst:'Återställ'},checkboxAndRadio:{checkboxTitle:'Egenskaper för kryssruta',radioTitle:'Egenskaper för alternativknapp',value:'Värde',selected:'Vald'},form:{title:'Egenskaper för formulär',menu:'Egenskaper för formulär',action:'Funktion',method:'Metod',encoding:'Encoding',target:'Mål',targetNotSet:'<ej angivet>',targetNew:'Nytt fönster (_blank)',targetTop:'Översta fönstret (_top)',targetSelf:'Detta fönstret (_self)',targetParent:'Föregående Window (_parent)'},select:{title:'Egenskaper för flervalslista',selectInfo:'Information',opAvail:'Befintliga val',value:'Värde',size:'Storlek',lines:'Linjer',chkMulti:'Tillåt flerval',opText:'Text',opValue:'Värde',btnAdd:'Lägg till',btnModify:'Redigera',btnUp:'Upp',btnDown:'Ner',btnSetValue:'Markera som valt värde',btnDelete:'Radera'},textarea:{title:'Egenskaper för textruta',cols:'Kolumner',rows:'Rader'},textfield:{title:'Egenskaper för textfält',name:'Namn',value:'Värde',charWidth:'Teckenbredd',maxChars:'Max antal tecken',type:'Typ',typeText:'Text',typePass:'Lösenord'},hidden:{title:'Egenskaper för dolt fält',name:'Namn',value:'Värde'},image:{title:'Bildegenskaper',titleButton:'Egenskaper för bildknapp',menu:'Bildegenskaper',infoTab:'Bildinformation',btnUpload:'Skicka till server',url:'URL',upload:'Ladda upp',alt:'Alternativ text',width:'Bredd',height:'Höjd',lockRatio:'Lås höjd/bredd förhållanden',resetSize:'Återställ storlek',border:'Kant',hSpace:'Horis. marginal',vSpace:'Vert. marginal',align:'Justering',alignLeft:'Vänster',alignAbsBottom:'Absolut nederkant',alignAbsMiddle:'Absolut centrering',alignBaseline:'Baslinje',alignBottom:'Nederkant',alignMiddle:'Mitten',alignRight:'Höger',alignTextTop:'Text överkant',alignTop:'Överkant',preview:'Förhandsgranska',alertUrl:'Var god och ange bildens URL',linkTab:'Länk',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flashegenskaper',propertiesTab:'Properties',title:'Flashegenskaper',chkPlay:'Automatisk uppspelning',chkLoop:'Upprepa/Loopa',chkMenu:'Aktivera Flashmeny',chkFull:'Allow Fullscreen',scale:'Skala',scaleAll:'Visa allt',scaleNoBorder:'Ingen ram',scaleFit:'Exakt passning',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Justering',alignLeft:'Vänster',alignAbsBottom:'Absolut nederkant',alignAbsMiddle:'Absolut centrering',alignBaseline:'Baslinje',alignBottom:'Nederkant',alignMiddle:'Mitten',alignRight:'Höger',alignTextTop:'Text överkant',alignTop:'Överkant',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Bakgrundsfärg',width:'Bredd',height:'Höjd',hSpace:'Horis. marginal',vSpace:'Vert. marginal',validateSrc:'Var god ange länkens URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Stavningskontroll',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Saknas i ordlistan',changeTo:'Ändra till',btnIgnore:'Ignorera',btnIgnoreAll:'Ignorera alla',btnReplace:'Ersätt',btnReplaceAll:'Ersätt alla',btnUndo:'Ångra',noSuggestions:'- Förslag saknas -',progress:'Stavningskontroll pågår...',noMispell:'Stavningskontroll slutförd: Inga stavfel påträffades.',noChanges:'Stavningskontroll slutförd: Inga ord rättades.',oneChange:'Stavningskontroll slutförd: Ett ord rättades.',manyChanges:'Stavningskontroll slutförd: %1 ord rättades.',ieSpellDownload:'Stavningskontrollen är ej installerad. Vill du göra det nu?'},smiley:{toolbar:'Smiley',title:'Infoga smiley'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Numrerad lista',bulletedlist:'Punktlista',indent:'Öka indrag',outdent:'Minska indrag',justify:{left:'Vänsterjustera',center:'Centrera',right:'Högerjustera',block:'Justera till marginaler'},blockquote:'Blockquote',clipboard:{title:'Klistra in',cutError:'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Klipp ut. Använd (Ctrl+X) istället.',copyError:'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Kopiera. Använd (Ctrl+C) istället',pasteMsg:'Var god och klistra in Er text i rutan nedan genom att använda (<STRONG>Ctrl+V</STRONG>) klicka sen på <STRONG>OK</STRONG>.',securityMsg:'På grund av din webläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.'},pastefromword:{toolbar:'Klistra in från Word',title:'Klistra in från Word',advice:'Var god och klistra in Er text i rutan nedan genom att använda (<STRONG>Ctrl+V</STRONG>) klicka sen på <STRONG>OK</STRONG>.',ignoreFontFace:'Ignorera typsnittsdefinitioner',removeStyle:'Radera Stildefinitioner'},pasteText:{button:'Klistra in som vanlig text',title:'Klistra in som vanlig text'},templates:{button:'Sidmallar',title:'Sidmallar',insertOption:'Ersätt aktuellt innehåll',selectPromptMsg:'Var god välj en mall att använda med editorn<br>(allt nuvarande innehåll raderas):',emptyListMsg:'(Ingen mall är vald)'},showBlocks:'Show Blocks',stylesCombo:{label:'Anpassad stil',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Teckenformat',voiceLabel:'Format',panelTitle:'Teckenformat',panelVoiceLabel:'Select a paragraph format',tag_p:'Normal',tag_pre:'Formaterad',tag_address:'Adress',tag_h1:'Rubrik 1',tag_h2:'Rubrik 2',tag_h3:'Rubrik 3',tag_h4:'Rubrik 4',tag_h5:'Rubrik 5',tag_h6:'Rubrik 6',tag_div:'Normal (DIV)'},font:{label:'Typsnitt',voiceLabel:'Font',panelTitle:'Typsnitt',panelVoiceLabel:'Select a font'},fontSize:{label:'Storlek',voiceLabel:'Font Size',panelTitle:'Storlek',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Textfärg',bgColorTitle:'Bakgrundsfärg',auto:'Automatisk',more:'Fler färger...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/ja.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/ja.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/ja.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ja={dir:'ltr',editorTitle:'リッチテキストエディタ, %1',source:'ソース',newPage:'新しいページ',save:'保存',preview:'プレビュー',cut:'切り取り',copy:'コピー',paste:'貼り付け',print:'印刷',underline:'下線',bold:'太字',italic:'斜体',selectAll:'すべて選択',removeFormat:'フォーマット削除',strike:'打ち消し線',subscript:'添え字',superscript:'上付き文字',horizontalrule:'横罫線',pagebreak:'改ページ挿入',unlink:'リンク削除',undo:'元に戻す',redo:'やり直し',common:{browseServer:'サーバーブラウザー',url:'URL',protocol:'プロトコル',upload:'アップロード',uploadSubmit:'サーバーに送信',image:'イメージ',flash:'Flash',form:'フォーム',checkbox:'チェックボックス',radio:'ラジオボタン',textField:'１行テキスト',textarea:'テキストエリア',hiddenField:'不可視フィールド',button:'ボタン',select:'選択フィールド',imageButton:'画像ボタン',notSet:'<なし>',id:'Id',name:'Name属性',langDir:'文字表記の方向',langDirLtr:'左から右 (LTR)',langDirRtl:'右から左 (RTL)',langCode:'言語コード',longDescr:'longdesc属性(長文説明)',cssClass:'スタイルシートクラス',advisoryTitle:'Title属性',cssStyle:'スタイルシート',ok:'OK',cancel:'キャンセル',generalTab:'全般',advancedTab:'高度な設定',validateNumberFailed:'値が数ではありません',confirmNewPage:'変更内容を保存せず、 新しいページを開いてもよろしいでしょうか？',confirmCancel:'オプション設定を変更しました。ダイアログを閉じてもよろしいでしょうか？',unavailable:'%1<span class="cke_accessibility">, 利用不可能</span>'},specialChar:{toolbar:'特殊文字挿入',title:'特殊文字選択'},link:{toolbar:'リンク挿入/編集',menu:'リンク編集',title:'ハイパーリンク',info:'ハイパーリンク 情報',target:'ターゲット',upload:'アップロード',advanced:'高度な設定',type:'リンクタイプ',toAnchor:'このページのアンカー',toEmail:'E-Mail',target:'ターゲット',targetNotSet:'<なし>',targetFrame:'<フレーム>',targetPopup:'<ポップアップウィンドウ>',targetNew:'新しいウィンドウ (_blank)',targetTop:'最上位ウィンドウ (_top)',targetSelf:'同じウィンドウ (_self)',targetParent:'親ウィンドウ (_parent)',targetFrameName:'目的のフレーム名',targetPopupName:'ポップアップウィンドウ名',popupFeatures:'ポップアップウィンドウ特徴',popupResizable:'サイズ可変',popupStatusBar:'ステータスバー',popupLocationBar:'ロケーションバー',popupToolbar:'ツールバー',popupMenuBar:'メニューバー',popupFullScreen:'全画面モード(IE)',popupScrollBars:'スクロールバー',popupDependent:'開いたウィンドウに連動して閉じる (Netscape)',popupWidth:'幅',popupLeft:'左端からの座標で指定',popupHeight:'高さ',popupTop:'上端からの座標で指定',id:'Id',langDir:'文字表記の方向',langDirNotSet:'<なし>',langDirLTR:'左から右 (LTR)',langDirRTL:'右から左 (RTL)',acccessKey:'アクセスキー',name:'Name属性',langCode:'文字表記の方向',tabIndex:'タブインデックス',advisoryTitle:'Title属性',advisoryContentType:'Content Type属性',cssClasses:'スタイルシートクラス',charset:'リンクcharset属性',styles:'スタイルシート',selectAnchor:'アンカーを選択',anchorName:'アンカー名',anchorId:'エレメントID',emailAddress:'E-Mail アドレス',emailSubject:'件名',emailBody:'本文',noAnchors:'(ドキュメントにおいて利用可能なアンカーはありません。)',noUrl:'リンクURLを入力してください。',noEmail:'メールアドレスを入力してください。'},anchor:{toolbar:'アンカー挿入/編集',menu:'アンカー プロパティ',title:'アンカー プロパティ',name:'アンカー名',errorName:'アンカー名を必ず入力してください。'},findAndReplace:{title:'検索して置換',find:'検索',replace:'置き換え',findWhat:'検索する文字列:',replaceWith:'置換えする文字列:',notFoundMsg:'指定された文字列は見つかりませんでした。',matchCase:'部分一致',matchWord:'単語単位で一致',matchCyclic:'大文字/小文字区別一致',replaceAll:'すべて置換え',replaceSuccessMsg:'%1 に置換しました。'},table:{toolbar:'テーブル',title:'テーブル プロパティ',menu:'テーブル プロパティ',deleteTable:'テーブル削除',rows:'行',columns:'列',border:'ボーダーサイズ',align:'キャプションの整列',alignNotSet:'<なし>',alignLeft:'左',alignCenter:'中央',alignRight:'右',width:'テーブル幅',widthPx:'ピクセル',widthPc:'パーセント',height:'テーブル高さ',cellSpace:'セル内余白',cellPad:'セル内間隔',caption:'ｷｬﾌﾟｼｮﾝ',summary:'テーブル目的/構造',headers:'テーブルヘッダ(th)',headersNone:'なし',headersColumn:'初めの列のみ',headersRow:'初めの行のみ',headersBoth:'両方',invalidRows:'行は0より大きな数値で入力してください。',invalidCols:'列は0より大きな数値で入力してください。',invalidBorder:'ボーダーサイズは数値で入力してください。',invalidWidth:'テーブル幅は数値で入力してください。',invalidHeight:'テーブル高さは数値で入力してください。',invalidCellSpacing:'セル内余白は数値で入力してください。',invalidCellPadding:'セル内間隔は数値で入力してください。',cell:{menu:'セル',insertBefore:'セルの前に挿入',insertAfter:'セルの後に挿入',deleteCell:'セル削除',merge:'セル結合',mergeRight:'右に結合',mergeDown:'下に結合',splitHorizontal:'セルを水平方向分割',splitVertical:'セルを垂直方向に分割',title:'セルプロパティ',cellType:'セルタイプ',rowSpan:'縦幅(行数)',colSpan:'横幅(列数)',wordWrap:'折り返し',hAlign:'セル横の整列',vAlign:'セル縦の整列',alignTop:'上',alignMiddle:'中央',alignBottom:'下',alignBaseline:'ベースライン',bgColor:'背景色',borderColor:'ボーダーカラー',data:'テーブルデータ(td)',header:'テーブルヘッダ(th)',yes:'Yes',no:'No',invalidWidth:'セル幅は数値で入力してください。',invalidHeight:'セル高さは数値で入力してください。',invalidRowSpan:'縦幅(行数)は数値で入力してください。',invalidColSpan:'横幅(列数)は数値で入力してください。',chooseColor:'Choose'},row:{menu:'行',insertBefore:'列の前に挿入',insertAfter:'列の後に挿入',deleteRow:'行削除'},column:{menu:'カラム',insertBefore:'カラムの前に挿入',insertAfter:'カラムの後に挿入',deleteColumn:'列削除'}},button:{title:'ボタン プロパティ',text:'テキスト (値)',type:'タイプ',typeBtn:'ボタン',typeSbm:'送信',typeRst:'リセット'},checkboxAndRadio:{checkboxTitle:'チェックボックス プロパティ',radioTitle:'ラジオボタン プロパティ',value:'値',selected:'選択済み'},form:{title:'フォーム プロパティ',menu:'フォーム プロパティ',action:'アクション',method:'メソッド',encoding:'エンコーディング',target:'ターゲット',targetNotSet:'<なし>',targetNew:'新しいウィンドウ (_blank)',targetTop:'最上位ウィンドウ (_top)',targetSelf:'同じウィンドウ (_self)',targetParent:'親ウィンドウ (_parent)'},select:{title:'選択フィールド プロパティ',selectInfo:'情報',opAvail:'利用可能なオプション',value:'選択項目値',size:'サイズ',lines:'行',chkMulti:'複数項目選択を許可',opText:'選択項目名',opValue:'値',btnAdd:'追加',btnModify:'編集',btnUp:'上へ',btnDown:'下へ',btnSetValue:'選択した値を設定',btnDelete:'削除'},textarea:{title:'テキストエリア プロパティ',cols:'列',rows:'行'},textfield:{title:'１行テキスト プロパティ',name:'名前',value:'値',charWidth:'サイズ',maxChars:'最大長',type:'タイプ',typeText:'テキスト',typePass:'パスワード入力'},hidden:{title:'不可視フィールド プロパティ',name:'名前',value:'値'},image:{title:'イメージ プロパティ',titleButton:'画像ボタン プロパティ',menu:'イメージ プロパティ',infoTab:'イメージ 情報',btnUpload:'サーバーに送信',url:'URL',upload:'アップロード',alt:'代替テキスト',width:'幅',height:'高さ',lockRatio:'ロック比率',resetSize:'サイズリセット',border:'ボーダー',hSpace:'横間隔',vSpace:'縦間隔',align:'行揃え',alignLeft:'左',alignAbsBottom:'下部(絶対的)',alignAbsMiddle:'中央(絶対的)',alignBaseline:'ベースライン',alignBottom:'下',alignMiddle:'中央',alignRight:'右',alignTextTop:'テキスト上部',alignTop:'上',preview:'プレビュー',alertUrl:'イメージのURLを入力してください。',linkTab:'リンク',button2Img:'選択したボタンを画像に置き換えますか？',img2Button:'選択した画像をボタンに置き換えますか？',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash プロパティ',propertiesTab:'プロパティ',title:'Flash プロパティ',chkPlay:'再生',chkLoop:'ループ再生',chkMenu:'Flashメニュー可能',chkFull:'フルスクリーン許可',scale:'拡大縮小設定',scaleAll:'すべて表示',scaleNoBorder:'外が見えない様に拡大',scaleFit:'上下左右にフィット',access:'スプリクトアクセス(AllowScriptAccess)',accessAlways:'すべての場合に通信可能(Always)',accessSameDomain:'同一ドメインのみに通信可能(Same domain)',accessNever:'すべての場合に通信不可能(Never)',align:'行揃え',alignLeft:'左',alignAbsBottom:'下部(絶対的)',alignAbsMiddle:'中央(絶対的)',alignBaseline:'ベースライン',alignBottom:'下',alignMiddle:'中央',alignRight:'右',alignTextTop:'テキスト上部',alignTop:'上',quality:'画質',qualityBest:'品質優先',qualityHigh:'高',qualityAutoHigh:'自動/高',qualityMedium:'中',qualityAutoLow:'自動/低',qualityLow:'低',windowModeWindow:'標準',windowModeOpaque:'背景を不透明設定',windowModeTransparent:'背景を透過設定',windowMode:'ウィンドウモード',flashvars:'フラッシュに渡す変数(FlashVars)',bgcolor:'背景色',width:'幅',height:'高さ',hSpace:'横間隔',vSpace:'縦間隔',validateSrc:'リンクURLを入力してください。',validateWidth:'幅は数値で入力してください。',validateHeight:'高さは数値で入力してください。',validateHSpace:'横間隔は数値で入力してください。',validateVSpace:'縦間隔は数値で入力してください。'},spellCheck:{toolbar:'スペルチェック',title:'スペルチェック',notAvailable:'申し訳ありません、現在サービスを利用することができません',errorLoading:'アプリケーションサービスホスト読込みエラー: %s.',notInDic:'辞書にありません',changeTo:'変更',btnIgnore:'無視',btnIgnoreAll:'すべて無視',btnReplace:'置換',btnReplaceAll:'すべて置換',btnUndo:'やり直し',noSuggestions:'- 該当なし -',progress:'スペルチェック処理中...',noMispell:'スペルチェック完了: スペルの誤りはありませんでした',noChanges:'スペルチェック完了: 語句は変更されませんでした',oneChange:'スペルチェック完了: １語句変更されました',manyChanges:'スペルチェック完了: %1 語句変更されました',ieSpellDownload:'スペルチェッカーがインストールされていません。今すぐダウンロードしますか?'},smiley:{toolbar:'絵文字',title:'顔文字挿入'},elementsPath:{eleTitle:'%1 エレメント'},numberedlist:'段落番号',bulletedlist:'箇条書き',indent:'インデント',outdent:'インデント解除',justify:{left:'左揃え',center:'中央揃え',right:'右揃え',block:'両端揃え'},blockquote:'ブロック引用',clipboard:{title:'貼り付け',cutError:'ブラウザーのセキュリティ設定によりエディタの切り取り操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl+X)を使用してください。',copyError:'ブラウザーのセキュリティ設定によりエディタのコピー操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl+C)を使用してください。',pasteMsg:'キーボード(<STRONG>Ctrl+V</STRONG>)を使用して、次の入力エリア内で貼って、<STRONG>OK</STRONG>を押してください。',securityMsg:'ブラウザのセキュリティ設定により、エディタはクリップボード・データに直接アクセスすることができません。このウィンドウは貼り付け操作を行う度に表示されます。'},pastefromword:{toolbar:'ワード文章から貼り付け',title:'ワード文章から貼り付け',advice:'キーボード(<STRONG>Ctrl+V</STRONG>)を使用して、次の入力エリア内で貼って、<STRONG>OK</STRONG>を押してください。',ignoreFontFace:'FontタグのFace属性を無視します。',removeStyle:'スタイル定義を削除します。'},pasteText:{button:'プレーンテキスト貼り付け',title:'プレーンテキスト貼り付け'},templates:{button:'テンプレート(雛形)',title:'テンプレート内容',insertOption:'現在のエディタの内容と置換えをします',selectPromptMsg:'エディターで使用するテンプレートを選択してください。<br>(現在のエディタの内容は失われます):',emptyListMsg:'(テンプレートが定義されていません)'},showBlocks:'ブロック表示',stylesCombo:{label:'スタイル',voiceLabel:'スタイル',panelVoiceLabel:'スタイルを選択してください',panelTitle1:'ブロックスタイル',panelTitle2:'インラインスタイル',panelTitle3:'オブジェクトスタイル'},format:{label:'フォーマット',voiceLabel:'フォーマット',panelTitle:'フォーマット',panelVoiceLabel:'パラグラフ形式を選択してください。',tag_p:'標準',tag_pre:'書式付き',tag_address:'アドレス',tag_h1:'見出し 1',tag_h2:'見出し 2',tag_h3:'見出し 3',tag_h4:'見出し 4',tag_h5:'見出し 5',tag_h6:'見出し 6',tag_div:'標準 (DIV)'},font:{label:'フォント',voiceLabel:'フォント',panelTitle:'フォント',panelVoiceLabel:'フォントを選択してください'},fontSize:{label:'サイズ',voiceLabel:'フォントサイズ',panelTitle:'サイズ',panelVoiceLabel:'フォントサイズを選択してください'},colorButton:{textColorTitle:'テキスト色',bgColorTitle:'背景色',auto:'自動',more:'その他の色...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'スペルチェック設定(SCAYT)',enable:'SCAYT有効',disable:'SCAYT無効',about:'SCAYTﾊﾞｰｼﾞｮﾝ',toggle:'SCAYT切替',options:'オプション',langs:'言語',moreSuggestions:'More suggestions',ignore:'無視',ignoreAll:'すべて無視',addWord:'語句追加',emptyDic:'辞書名は必ず入力してください',optionsTab:'オプション',languagesTab:'言語',dictionariesTab:'辞書',aboutTab:'バージョン情報'},about:{title:'CKEditorバージョン情報',dlgTitle:'CKEditorバージョン情報',moreInfo:'ライセンス情報の詳細はウェブサイトにて確認してください:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'最大化',minimize:'Minimize',fakeobjects:{anchor:'アンカー',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'ドラックしてリサイズ',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/he.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/he.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/he.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.he={dir:'rtl',editorTitle:'עורך טקסט עשיר, %1',source:'מקור',newPage:'דף חדש',save:'שמירה',preview:'תצוגה מקדימה',cut:'גזירה',copy:'העתקה',paste:'הדבקה',print:'הדפסה',underline:'קו תחתון',bold:'מודגש',italic:'נטוי',selectAll:'בחירת הכל',removeFormat:'הסרת העיצוב',strike:'כתיב מחוק',subscript:'כתיב תחתון',superscript:'כתיב עליון',horizontalrule:'הוספת קו אופקי',pagebreak:'הוסף שבירת דף',unlink:'הסרת הקישור',undo:'ביטול צעד אחרון',redo:'חזרה על צעד אחרון',common:{browseServer:'סייר השרת',url:'כתובת (URL)',protocol:'פרוטוקול',upload:'העלאה',uploadSubmit:'שליחה לשרת',image:'תמונה',flash:'פלאש',form:'טופס',checkbox:'תיבת סימון',radio:'לחצן אפשרויות',textField:'שדה טקסט',textarea:'איזור טקסט',hiddenField:'שדה חבוי',button:'כפתור',select:'שדה בחירה',imageButton:'כפתור תמונה',notSet:'<לא נקבע>',id:'זיהוי (Id)',name:'שם',langDir:'כיוון שפה',langDirLtr:'שמאל לימין (LTR)',langDirRtl:'ימין לשמאל (RTL)',langCode:'קוד שפה',longDescr:'קישור לתיאור מפורט',cssClass:'גיליונות עיצוב קבוצות',advisoryTitle:'כותרת מוצעת',cssStyle:'סגנון',ok:'אישור',cancel:'ביטול',generalTab:'כללי',advancedTab:'אפשרויות מתקדמות',validateNumberFailed:'הערך חייב להיות מספר.',confirmNewPage:'כל השינויים שלא נשמרו יאבדו. האם להעלות דף חדש?',confirmCancel:'חלק מהאפשרויות שונו, האם לסגור את הדיאלוג. ?',unavailable:'%1<span class="cke_accessibility">, לא זמין</span>'},specialChar:{toolbar:'הוספת תו מיוחד',title:'בחירת תו מיוחד'},link:{toolbar:'הוספת/עריכת קישור',menu:'עריכת קישור',title:'קישור',info:'מידע על הקישור',target:'מטרה',upload:'העלאה',advanced:'אפשרויות מתקדמות',type:'סוג קישור',toAnchor:'עוגן בעמוד זה',toEmail:"דוא''ל",target:'מטרה',targetNotSet:'<לא נקבע>',targetFrame:'<מסגרת>',targetPopup:'<חלון קופץ>',targetNew:'חלון חדש (_blank)',targetTop:'חלון ראשי (_top)',targetSelf:'באותו החלון (_self)',targetParent:'חלון האב (_parent)',targetFrameName:'שם מסגרת היעד',targetPopupName:'שם החלון הקופץ',popupFeatures:'תכונות החלון הקופץ',popupResizable:'שינוי גודל',popupStatusBar:'סרגל חיווי',popupLocationBar:'סרגל כתובת',popupToolbar:'סרגל הכלים',popupMenuBar:'סרגל תפריט',popupFullScreen:'מסך מלא (IE)',popupScrollBars:'ניתן לגלילה',popupDependent:'תלוי (Netscape)',popupWidth:'רוחב',popupLeft:'מיקום צד שמאל',popupHeight:'גובה',popupTop:'מיקום צד עליון',id:'זיהוי (Id)',langDir:'כיוון שפה',langDirNotSet:'<לא נקבע>',langDirLTR:'שמאל לימין (LTR)',langDirRTL:'ימין לשמאל (RTL)',acccessKey:'מקש גישה',name:'שם',langCode:'כיוון שפה',tabIndex:'מספר טאב',advisoryTitle:'כותרת מוצעת',advisoryContentType:'Content Type מוצע',cssClasses:'גיליונות עיצוב קבוצות',charset:'קידוד המשאב המקושר',styles:'סגנון',selectAnchor:'בחירת עוגן',anchorName:"עפ''י שם העוגן",anchorId:"עפ''י זיהוי (Id) הרכיב",emailAddress:"כתובת הדוא''ל",emailSubject:'נושא ההודעה',emailBody:'גוף ההודעה',noAnchors:'(אין עוגנים זמינים בדף)',noUrl:'נא להקליד את כתובת הקישור (URL)',noEmail:"נא להקליד את כתובת הדוא''ל"},anchor:{toolbar:'הוספת/עריכת נקודת עיגון',menu:'מאפייני נקודת עיגון',title:'מאפייני נקודת עיגון',name:'שם לנקודת עיגון',errorName:'אנא הזן שם לנקודת עיגון'},findAndReplace:{title:'חפש והחלף',find:'חיפוש',replace:'החלפה',findWhat:'חיפוש מחרוזת:',replaceWith:'החלפה במחרוזת:',notFoundMsg:'הטקסט המבוקש לא נמצא.',matchCase:'התאמת סוג אותיות (Case)',matchWord:'התאמה למילה המלאה',matchCyclic:'התאמה מחזורית',replaceAll:'החלפה בכל העמוד',replaceSuccessMsg:'%1 טקסטים הוחלפו.'},table:{toolbar:'טבלה',title:'תכונות טבלה',menu:'תכונות טבלה',deleteTable:'מחק טבלה',rows:'שורות',columns:'עמודות',border:'גודל מסגרת',align:'יישור',alignNotSet:'<לא נקבע>',alignLeft:'שמאל',alignCenter:'מרכז',alignRight:'ימין',width:'רוחב',widthPx:'פיקסלים',widthPc:'אחוז',height:'גובה',cellSpace:'מרווח תא',cellPad:'ריפוד תא',caption:'כיתוב',summary:'סיכום',headers:'כותרות',headersNone:'אין',headersColumn:'עמודה ראשונה',headersRow:'שורה ראשונה',headersBoth:'שניהם',invalidRows:'מספר השורות חייב להיות מספר גדול מ 0.',invalidCols:'מספר העמודות חייב להיות מספר גדול מ 0.',invalidBorder:'גודל מסגרת חייב להיות מספר.',invalidWidth:'רוחה טבלה חייב להיות רוחב.',invalidHeight:'גובה טבלה חייב להיות מספר.',invalidCellSpacing:'ריווח תאים חייב להיות מספר.',invalidCellPadding:'ריפוד תאים חייב להיות מספר.',cell:{menu:'תא',insertBefore:'הוסף תא אחרי',insertAfter:'הוסף תא אחרי',deleteCell:'מחיקת תאים',merge:'מיזוג תאים',mergeRight:'מזג ימינה',mergeDown:'מזג למטה',splitHorizontal:'פצל תא אופקית',splitVertical:'פצל תא אנכית',title:'תכונות התא',cellType:'סוג תא',rowSpan:'מתיחת שורות',colSpan:'מתיחת תאים',wordWrap:'מניעת גלישת שורות',hAlign:'יישור אופקי',vAlign:'יישור אנכי',alignTop:'למעלה',alignMiddle:'מרכז',alignBottom:'למטה',alignBaseline:'שורת בסיס',bgColor:'צבע רקע',borderColor:'צבע מסגרת',data:'מידע',header:'כותרת',yes:'כן',no:'לא',invalidWidth:'רוחב תא חייב להיות מספר.',invalidHeight:'גובה תא חייב להיות מספר.',invalidRowSpan:'מתיחת שורות חייב להיות מספר שלם.',invalidColSpan:'מתיחת עמודות חייב להיות מספר שלם.',chooseColor:'בחר'},row:{menu:'שורה',insertBefore:'הוסף שורה לפני',insertAfter:'הוסף שורה אחרי',deleteRow:'מחיקת שורות'},column:{menu:'עמודה',insertBefore:'הוסף עמודה לפני',insertAfter:'הוסף עמודה אחרי',deleteColumn:'מחיקת עמודות'}},button:{title:'מאפייני כפתור',text:'טקסט (ערך)',type:'סוג',typeBtn:'כפתור',typeSbm:'שלח',typeRst:'אפס'},checkboxAndRadio:{checkboxTitle:'מאפייני תיבת סימון',radioTitle:'מאפייני לחצן אפשרויות',value:'ערך',selected:'בחור'},form:{title:'מאפיני טופס',menu:'מאפיני טופס',action:'שלח אל',method:'סוג שליחה',encoding:'קידוד',target:'מטרה',targetNotSet:'<לא נקבע>',targetNew:'חלון חדש (_blank)',targetTop:'חלון ראשי (_top)',targetSelf:'באותו החלון (_self)',targetParent:'חלון האב (_parent)'},select:{title:'מאפייני שדה בחירה',selectInfo:'מידע',opAvail:'אפשרויות זמינות',value:'ערך',size:'גודל',lines:'שורות',chkMulti:'אפשר בחירות מרובות',opText:'טקסט',opValue:'ערך',btnAdd:'הוסף',btnModify:'שנה',btnUp:'למעלה',btnDown:'למטה',btnSetValue:'קבע כברירת מחדל',btnDelete:'מחק'},textarea:{title:'מאפיני איזור טקסט',cols:'עמודות',rows:'שורות'},textfield:{title:'מאפייני שדה טקסט',name:'שם',value:'ערך',charWidth:'רוחב באותיות',maxChars:'מקסימות אותיות',type:'סוג',typeText:'טקסט',typePass:'סיסמה'},hidden:{title:'מאפיני שדה חבוי',name:'שם',value:'ערך'},image:{title:'תכונות התמונה',titleButton:'מאפיני כפתור תמונה',menu:'תכונות התמונה',infoTab:'מידע על התמונה',btnUpload:'שליחה לשרת',url:'כתובת (URL)',upload:'העלאה',alt:'טקסט חלופי',width:'רוחב',height:'גובה',lockRatio:'נעילת היחס',resetSize:'איפוס הגודל',border:'מסגרת',hSpace:'מרווח אופקי',vSpace:'מרווח אנכי',align:'יישור',alignLeft:'לשמאל',alignAbsBottom:'לתחתית האבסולוטית',alignAbsMiddle:'מרכוז אבסולוטי',alignBaseline:'לקו התחתית',alignBottom:'לתחתית',alignMiddle:'לאמצע',alignRight:'לימין',alignTextTop:'לראש הטקסט',alignTop:'למעלה',preview:'תצוגה מקדימה',alertUrl:'נא להקליד את כתובת התמונה',linkTab:'קישור',button2Img:'האם להפוך את תמונת כפתור לתמונה פשוטה?',img2Button:'האם להפוך את התמונה לכפתור תמונה?',urlMissing:'כתובת התמונה חסרה.'},flash:{properties:'מאפייני פלאש',propertiesTab:'מאפיינים',title:'מאפיני פלאש',chkPlay:'נגן אוטומטי',chkLoop:'לולאה',chkMenu:'אפשר תפריט פלאש',chkFull:'אפשר חלון מלא',scale:'גודל',scaleAll:'הצג הכל',scaleNoBorder:'ללא גבולות',scaleFit:'התאמה מושלמת',access:'גישת סקריפט',accessAlways:'תמיד',accessSameDomain:'דומיין זהה',accessNever:'אף פעם',align:'יישור',alignLeft:'לשמאל',alignAbsBottom:'לתחתית האבסולוטית',alignAbsMiddle:'מרכוז אבסולוטי',alignBaseline:'לקו התחתית',alignBottom:'לתחתית',alignMiddle:'לאמצע',alignRight:'לימין',alignTextTop:'לראש הטקסט',alignTop:'למעלה',quality:'איכות',qualityBest:'מעולה',qualityHigh:'גבוהה',qualityAutoHigh:'אוטומטית גבוהה',qualityMedium:'ממוצעת',qualityAutoLow:'אוטומטית נמוך',qualityLow:'נמוך',windowModeWindow:'חלון',windowModeOpaque:'אטום',windowModeTransparent:'שקוף',windowMode:'מצב חלון',flashvars:'משתנים לפלאש',bgcolor:'צבע רקע',width:'רוחב',height:'גובה',hSpace:'מרווח אופקי',vSpace:'מרווח אנכי',validateSrc:'נא להקליד את כתובת הקישור (URL)',validateWidth:'רוחב חייב להיות מספר.',validateHeight:'גובהה חייב להיות מספר.',validateHSpace:'ריווח אופקי חייב להיות מספר.',validateVSpace:'ריווח אנחי חייב להיות מספר.'},spellCheck:{toolbar:'בדיקת איות',title:'בדיקת איות',notAvailable:'מצטערים לא נמצא שירות זמין.',errorLoading:'שגיעה בהעלאת שירת אפליקציה: %s.',notInDic:'לא נמצא במילון',changeTo:'שנה ל',btnIgnore:'התעלם',btnIgnoreAll:'התעלם מהכל',btnReplace:'החלף',btnReplaceAll:'החלף הכל',btnUndo:'החזר',noSuggestions:'- אין הצעות -',progress:'בדיקות איות בתהליך ....',noMispell:'בדיקות איות הסתיימה: לא נמצאו שגיעות כתיב',noChanges:'בדיקות איות הסתיימה: לא שונתה אף מילה',oneChange:'בדיקות איות הסתיימה: שונתה מילה אחת',manyChanges:'בדיקות איות הסתיימה: %1 מילים שונו',ieSpellDownload:'בודק האיות לא מותקן, האם אתה מעוניין להוריד?'},smiley:{toolbar:'סמיילי',title:'הוספת סמיילי'},elementsPath:{eleTitle:'%1 אלמנט'},numberedlist:'רשימה ממוספרת',bulletedlist:'רשימת נקודות',indent:'הגדלת אינדנטציה',outdent:'הקטנת אינדנטציה',justify:{left:'יישור לשמאל',center:'מרכוז',right:'יישור לימין',block:'יישור לשוליים'},blockquote:'בלוק ציטוט',clipboard:{title:'הדבקה',cutError:'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה  אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+X).',copyError:'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+C).',pasteMsg:'אנא הדבק בתוך הקופסה באמצעות  (<STRONG>Ctrl+V</STRONG>) ולחץ על  <STRONG>אישור</STRONG>.',securityMsg:'עקב הגדרות אבטחה בדפדפן, לא ניתן לגשת אל לוח הגזירים (clipboard) בצורה ישירה.אנא בצע הדבק שוב בחלון זה.'},pastefromword:{toolbar:'הדבקה מ-וורד',title:'הדבקה מ-וורד',advice:'אנא הדבק בתוך הקופסה באמצעות  (<STRONG>Ctrl+V</STRONG>) ולחץ על  <STRONG>אישור</STRONG>.',ignoreFontFace:'התעלם מהגדרות סוג פונט',removeStyle:'הסר הגדרות סגנון'},pasteText:{button:'הדבקה כטקסט פשוט',title:'הדבקה כטקסט פשוט'},templates:{button:'תבניות',title:'תביות תוכן',insertOption:'החלפת תוכן ממשי',selectPromptMsg:'אנא בחר תבנית לפתיחה בעורך <BR>התוכן המקורי ימחק:',emptyListMsg:'(לא הוגדרו תבניות)'},showBlocks:'הצג בלוקים',stylesCombo:{label:'סגנון',voiceLabel:'סגנונות',panelVoiceLabel:'בחר סגנון',panelTitle1:'סיגנונות בלוק',panelTitle2:'סגנונות רצף',panelTitle3:'סגנונות אובייקט'},format:{label:'עיצוב',voiceLabel:'עיצוב',panelTitle:'עיצוב',panelVoiceLabel:'בחר פיסקת עיצוב',tag_p:'נורמלי',tag_pre:'קוד',tag_address:'כתובת',tag_h1:'כותרת',tag_h2:'כותרת 2',tag_h3:'כותרת 3',tag_h4:'כותרת 4',tag_h5:'כותרת 5',tag_h6:'כותרת 6',tag_div:'נורמלי (DIV)'},font:{label:'גופן',voiceLabel:'גופן',panelTitle:'גופן',panelVoiceLabel:'בחר גופן'},fontSize:{label:'גודל',voiceLabel:'גודל גופן',panelTitle:'גודל',panelVoiceLabel:'בחר גודל גופן'},colorButton:{textColorTitle:'צבע טקסט',bgColorTitle:'צבע רקע',auto:'אוטומטי',more:'צבעים נוספים...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'בדיקת איות בזמן כתיבה',enable:'אפשר SCAYT',disable:'בטל SCAYT',about:'אודות SCAYT',toggle:'שינוי SCAYT',options:'אפשרויות',langs:'שפות',moreSuggestions:'עוד הצעות',ignore:'התעלם',ignoreAll:'התעלם מהכל',addWord:'הודף מילה',emptyDic:'אסור לשם המילון להיות ריק.',optionsTab:'אפשרויות',languagesTab:'שפות',dictionariesTab:'מילון',aboutTab:'אודות'},about:{title:'אודות CKEditor',dlgTitle:'אודות CKEditor',moreInfo:'לרישוי אנה בקרו באתר שלנו:',copy:'Copyright &copy; $1. כל הזכויות שמורות.'},maximize:'להגדיל למקסימום',minimize:'הקטן למינימום',fakeobjects:{anchor:'עוגן',flash:'אנימצית פלאש',div:'שבירת דף',unknown:'אובייקט לא ידוע'},resize:'גרור בכדי לשנות גודל',colordialog:{title:'בחר צבע',highlight:'סמן',selected:'נבחר',clear:'נקה'}};
Index: /trunk/filemanager/tp/ckeditor/lang/fi.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/fi.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/fi.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.fi={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Koodi',newPage:'Tyhjennä',save:'Tallenna',preview:'Esikatsele',cut:'Leikkaa',copy:'Kopioi',paste:'Liitä',print:'Tulosta',underline:'Alleviivattu',bold:'Lihavoitu',italic:'Kursivoitu',selectAll:'Valitse kaikki',removeFormat:'Poista muotoilu',strike:'Yliviivattu',subscript:'Alaindeksi',superscript:'Yläindeksi',horizontalrule:'Lisää murtoviiva',pagebreak:'Lisää sivun vaihto',unlink:'Poista linkki',undo:'Kumoa',redo:'Toista',common:{browseServer:'Selaa palvelinta',url:'Osoite',protocol:'Protokolla',upload:'Lisää tiedosto',uploadSubmit:'Lähetä palvelimelle',image:'Kuva',flash:'Flash',form:'Lomake',checkbox:'Valintaruutu',radio:'Radiopainike',textField:'Tekstikenttä',textarea:'Tekstilaatikko',hiddenField:'Piilokenttä',button:'Painike',select:'Valintakenttä',imageButton:'Kuvapainike',notSet:'<ei asetettu>',id:'Tunniste',name:'Nimi',langDir:'Kielen suunta',langDirLtr:'Vasemmalta oikealle (LTR)',langDirRtl:'Oikealta vasemmalle (RTL)',langCode:'Kielikoodi',longDescr:'Pitkän kuvauksen URL',cssClass:'Tyyliluokat',advisoryTitle:'Avustava otsikko',cssStyle:'Tyyli',ok:'OK',cancel:'Peruuta',generalTab:'General',advancedTab:'Lisäominaisuudet',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Lisää erikoismerkki',title:'Valitse erikoismerkki'},link:{toolbar:'Lisää linkki/muokkaa linkkiä',menu:'Muokkaa linkkiä',title:'Linkki',info:'Linkin tiedot',target:'Kohde',upload:'Lisää tiedosto',advanced:'Lisäominaisuudet',type:'Linkkityyppi',toAnchor:'Ankkuri tässä sivussa',toEmail:'Sähköposti',target:'Kohde',targetNotSet:'<ei asetettu>',targetFrame:'<kehys>',targetPopup:'<popup ikkuna>',targetNew:'Uusi ikkuna (_blank)',targetTop:'Päällimmäisin ikkuna (_top)',targetSelf:'Sama ikkuna (_self)',targetParent:'Emoikkuna (_parent)',targetFrameName:'Kohdekehyksen nimi',targetPopupName:'Popup ikkunan nimi',popupFeatures:'Popup ikkunan ominaisuudet',popupResizable:'Resizable',popupStatusBar:'Tilarivi',popupLocationBar:'Osoiterivi',popupToolbar:'Vakiopainikkeet',popupMenuBar:'Valikkorivi',popupFullScreen:'Täysi ikkuna (IE)',popupScrollBars:'Vierityspalkit',popupDependent:'Riippuva (Netscape)',popupWidth:'Leveys',popupLeft:'Vasemmalta (px)',popupHeight:'Korkeus',popupTop:'Ylhäältä (px)',id:'Id',langDir:'Kielen suunta',langDirNotSet:'<ei asetettu>',langDirLTR:'Vasemmalta oikealle (LTR)',langDirRTL:'Oikealta vasemmalle (RTL)',acccessKey:'Pikanäppäin',name:'Nimi',langCode:'Kielen suunta',tabIndex:'Tabulaattori indeksi',advisoryTitle:'Avustava otsikko',advisoryContentType:'Avustava sisällön tyyppi',cssClasses:'Tyyliluokat',charset:'Linkitetty kirjaimisto',styles:'Tyyli',selectAnchor:'Valitse ankkuri',anchorName:'Ankkurin nimen mukaan',anchorId:'Ankkurin ID:n mukaan',emailAddress:'Sähköpostiosoite',emailSubject:'Aihe',emailBody:'Viesti',noAnchors:'(Ei ankkureita tässä dokumentissa)',noUrl:'Linkille on kirjoitettava URL',noEmail:'Kirjoita sähköpostiosoite'},anchor:{toolbar:'Lisää ankkuri/muokkaa ankkuria',menu:'Ankkurin ominaisuudet',title:'Ankkurin ominaisuudet',name:'Nimi',errorName:'Ankkurille on kirjoitettava nimi'},findAndReplace:{title:'Etsi ja korvaa',find:'Etsi',replace:'Korvaa',findWhat:'Etsi mitä:',replaceWith:'Korvaa tällä:',notFoundMsg:'Etsittyä tekstiä ei löytynyt.',matchCase:'Sama kirjainkoko',matchWord:'Koko sana',matchCyclic:'Match cyclic',replaceAll:'Korvaa kaikki',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Taulu',title:'Taulun ominaisuudet',menu:'Taulun ominaisuudet',deleteTable:'Poista taulu',rows:'Rivit',columns:'Sarakkeet',border:'Rajan paksuus',align:'Kohdistus',alignNotSet:'<ei asetettu>',alignLeft:'Vasemmalle',alignCenter:'Keskelle',alignRight:'Oikealle',width:'Leveys',widthPx:'pikseliä',widthPc:'prosenttia',height:'Korkeus',cellSpace:'Solujen väli',cellPad:'Solujen sisennys',caption:'Otsikko',summary:'Yhteenveto',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Solu',insertBefore:'Lisää solu eteen',insertAfter:'Lisää solu perään',deleteCell:'Poista solut',merge:'Yhdistä solut',mergeRight:'Yhdistä oikealla olevan kanssa',mergeDown:'Yhdistä alla olevan kanssa',splitHorizontal:'Jaa solu vaakasuunnassa',splitVertical:'Jaa solu pystysuunnassa',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Rivi',insertBefore:'Lisää rivi yläpuolelle',insertAfter:'Lisää rivi alapuolelle',deleteRow:'Poista rivit'},column:{menu:'Sarake',insertBefore:'Lisää sarake vasemmalle',insertAfter:'Lisää sarake oikealle',deleteColumn:'Poista sarakkeet'}},button:{title:'Painikkeen ominaisuudet',text:'Teksti (arvo)',type:'Tyyppi',typeBtn:'Painike',typeSbm:'Lähetä',typeRst:'Tyhjennä'},checkboxAndRadio:{checkboxTitle:'Valintaruudun ominaisuudet',radioTitle:'Radiopainikkeen ominaisuudet',value:'Arvo',selected:'Valittu'},form:{title:'Lomakkeen ominaisuudet',menu:'Lomakkeen ominaisuudet',action:'Toiminto',method:'Tapa',encoding:'Encoding',target:'Kohde',targetNotSet:'<ei asetettu>',targetNew:'Uusi ikkuna (_blank)',targetTop:'Päällimmäisin ikkuna (_top)',targetSelf:'Sama ikkuna (_self)',targetParent:'Emoikkuna (_parent)'},select:{title:'Valintakentän ominaisuudet',selectInfo:'Info',opAvail:'Ominaisuudet',value:'Arvo',size:'Koko',lines:'Rivit',chkMulti:'Salli usea valinta',opText:'Teksti',opValue:'Arvo',btnAdd:'Lisää',btnModify:'Muuta',btnUp:'Ylös',btnDown:'Alas',btnSetValue:'Aseta valituksi',btnDelete:'Poista'},textarea:{title:'Tekstilaatikon ominaisuudet',cols:'Sarakkeita',rows:'Rivejä'},textfield:{title:'Tekstikentän ominaisuudet',name:'Nimi',value:'Arvo',charWidth:'Leveys',maxChars:'Maksimi merkkimäärä',type:'Tyyppi',typeText:'Teksti',typePass:'Salasana'},hidden:{title:'Piilokentän ominaisuudet',name:'Nimi',value:'Arvo'},image:{title:'Kuvan ominaisuudet',titleButton:'Kuvapainikkeen ominaisuudet',menu:'Kuvan ominaisuudet',infoTab:'Kuvan tiedot',btnUpload:'Lähetä palvelimelle',url:'Osoite',upload:'Lisää kuva',alt:'Vaihtoehtoinen teksti',width:'Leveys',height:'Korkeus',lockRatio:'Lukitse suhteet',resetSize:'Alkuperäinen koko',border:'Raja',hSpace:'Vaakatila',vSpace:'Pystytila',align:'Kohdistus',alignLeft:'Vasemmalle',alignAbsBottom:'Aivan alas',alignAbsMiddle:'Aivan keskelle',alignBaseline:'Alas (teksti)',alignBottom:'Alas',alignMiddle:'Keskelle',alignRight:'Oikealle',alignTextTop:'Ylös (teksti)',alignTop:'Ylös',preview:'Esikatselu',alertUrl:'Kirjoita kuvan osoite (URL)',linkTab:'Linkki',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash ominaisuudet',propertiesTab:'Properties',title:'Flash ominaisuudet',chkPlay:'Automaattinen käynnistys',chkLoop:'Toisto',chkMenu:'Näytä Flash-valikko',chkFull:'Allow Fullscreen',scale:'Levitä',scaleAll:'Näytä kaikki',scaleNoBorder:'Ei rajaa',scaleFit:'Tarkka koko',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Kohdistus',alignLeft:'Vasemmalle',alignAbsBottom:'Aivan alas',alignAbsMiddle:'Aivan keskelle',alignBaseline:'Alas (teksti)',alignBottom:'Alas',alignMiddle:'Keskelle',alignRight:'Oikealle',alignTextTop:'Ylös (teksti)',alignTop:'Ylös',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Taustaväri',width:'Leveys',height:'Korkeus',hSpace:'Vaakatila',vSpace:'Pystytila',validateSrc:'Linkille on kirjoitettava URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Tarkista oikeinkirjoitus',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Ei sanakirjassa',changeTo:'Vaihda',btnIgnore:'Jätä huomioimatta',btnIgnoreAll:'Jätä kaikki huomioimatta',btnReplace:'Korvaa',btnReplaceAll:'Korvaa kaikki',btnUndo:'Kumoa',noSuggestions:'Ei ehdotuksia',progress:'Tarkistus käynnissä...',noMispell:'Tarkistus valmis: Ei virheitä',noChanges:'Tarkistus valmis: Yhtään sanaa ei muutettu',oneChange:'Tarkistus valmis: Yksi sana muutettiin',manyChanges:'Tarkistus valmis: %1 sanaa muutettiin',ieSpellDownload:'Oikeinkirjoituksen tarkistusta ei ole asennettu. Haluatko ladata sen nyt?'},smiley:{toolbar:'Hymiö',title:'Lisää hymiö'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Numerointi',bulletedlist:'Luottelomerkit',indent:'Suurenna sisennystä',outdent:'Pienennä sisennystä',justify:{left:'Tasaa vasemmat reunat',center:'Keskitä',right:'Tasaa oikeat reunat',block:'Tasaa molemmat reunat'},blockquote:'Lainaus',clipboard:{title:'Liitä',cutError:'Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).',copyError:'Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).',pasteMsg:'Liitä painamalla (<STRONG>Ctrl+V</STRONG>) ja painamalla <STRONG>OK</STRONG>.',securityMsg:'Selaimesi turva-asetukset eivät salli editorin käyttää leikepöytää suoraan. Sinun pitää suorittaa liittäminen tässä ikkunassa.'},pastefromword:{toolbar:'Liitä Wordista',title:'Liitä Wordista',advice:'Liitä painamalla (<STRONG>Ctrl+V</STRONG>) ja painamalla <STRONG>OK</STRONG>.',ignoreFontFace:'Jätä huomioimatta fonttimääritykset',removeStyle:'Poista tyylimääritykset'},pasteText:{button:'Liitä tekstinä',title:'Liitä tekstinä'},templates:{button:'Pohjat',title:'Sisältöpohjat',insertOption:'Korvaa editorin koko sisältö',selectPromptMsg:'Valitse pohja editoriin<br>(aiempi sisältö menetetään):',emptyListMsg:'(Ei määriteltyjä pohjia)'},showBlocks:'Näytä elementit',stylesCombo:{label:'Tyyli',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Muotoilu',voiceLabel:'Format',panelTitle:'Muotoilu',panelVoiceLabel:'Select a paragraph format',tag_p:'Normaali',tag_pre:'Muotoiltu',tag_address:'Osoite',tag_h1:'Otsikko 1',tag_h2:'Otsikko 2',tag_h3:'Otsikko 3',tag_h4:'Otsikko 4',tag_h5:'Otsikko 5',tag_h6:'Otsikko 6',tag_div:'Normal (DIV)'},font:{label:'Fontti',voiceLabel:'Font',panelTitle:'Fontti',panelVoiceLabel:'Select a font'},fontSize:{label:'Koko',voiceLabel:'Font Size',panelTitle:'Koko',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Tekstiväri',bgColorTitle:'Taustaväri',auto:'Automaattinen',more:'Lisää värejä...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/hi.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/hi.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/hi.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.hi={dir:'ltr',editorTitle:'Rich text editor, %1',source:'सोर्स',newPage:'नया पेज',save:'सेव',preview:'प्रीव्यू',cut:'कट',copy:'कॉपी',paste:'पेस्ट',print:'प्रिन्ट',underline:'रेखांकण',bold:'बोल्ड',italic:'इटैलिक',selectAll:'सब सॅलॅक्ट करें',removeFormat:'फ़ॉर्मैट हटायें',strike:'स्ट्राइक थ्रू',subscript:'अधोलेख',superscript:'अभिलेख',horizontalrule:'हॉरिज़ॉन्टल रेखा इन्सर्ट करें',pagebreak:'पेज ब्रेक इन्सर्ट् करें',unlink:'लिंक हटायें',undo:'अन्डू',redo:'रीडू',common:{browseServer:'सर्वर ब्राउज़ करें',url:'URL',protocol:'प्रोटोकॉल',upload:'अपलोड',uploadSubmit:'इसे सर्वर को भेजें',image:'तस्वीर',flash:'फ़्लैश',form:'फ़ॉर्म',checkbox:'चॅक बॉक्स',radio:'रेडिओ बटन',textField:'टेक्स्ट फ़ील्ड',textarea:'टेक्स्ट एरिया',hiddenField:'गुप्त फ़ील्ड',button:'बटन',select:'चुनाव फ़ील्ड',imageButton:'तस्वीर बटन',notSet:'<सॅट नहीं>',id:'Id',name:'नाम',langDir:'भाषा लिखने की दिशा',langDirLtr:'बायें से दायें (LTR)',langDirRtl:'दायें से बायें (RTL)',langCode:'भाषा कोड',longDescr:'अधिक विवरण के लिए URL',cssClass:'स्टाइल-शीट क्लास',advisoryTitle:'परामर्श शीर्शक',cssStyle:'स्टाइल',ok:'ठीक है',cancel:'रद्द करें',generalTab:'सामान्य',advancedTab:'ऍड्वान्स्ड',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'विशेष करॅक्टर इन्सर्ट करें',title:'विशेष करॅक्टर चुनें'},link:{toolbar:'लिंक इन्सर्ट/संपादन',menu:'लिंक संपादन',title:'लिंक',info:'लिंक  ',target:'टार्गेट',upload:'अपलोड',advanced:'ऍड्वान्स्ड',type:'लिंक प्रकार',toAnchor:'इस पेज का ऐंकर',toEmail:'ई-मेल',target:'टार्गेट',targetNotSet:'<सॅट नहीं>',targetFrame:'<फ़्रेम>',targetPopup:'<पॉप-अप विन्डो>',targetNew:'नया विन्डो (_blank)',targetTop:'शीर्ष विन्डो (_top)',targetSelf:'इसी विन्डो (_self)',targetParent:'मूल विन्डो (_parent)',targetFrameName:'टार्गेट फ़्रेम का नाम',targetPopupName:'पॉप-अप विन्डो का नाम',popupFeatures:'पॉप-अप विन्डो फ़ीचर्स',popupResizable:'Resizable',popupStatusBar:'स्टेटस बार',popupLocationBar:'लोकेशन बार',popupToolbar:'टूल बार',popupMenuBar:'मॅन्यू बार',popupFullScreen:'फ़ुल स्क्रीन (IE)',popupScrollBars:'स्क्रॉल बार',popupDependent:'डिपेन्डॅन्ट (Netscape)',popupWidth:'चौड़ाई',popupLeft:'बायीं तरफ',popupHeight:'ऊँचाई',popupTop:'दायीं तरफ',id:'Id',langDir:'भाषा लिखने की दिशा',langDirNotSet:'<सॅट नहीं>',langDirLTR:'बायें से दायें (LTR)',langDirRTL:'दायें से बायें (RTL)',acccessKey:'ऍक्सॅस की',name:'नाम',langCode:'भाषा लिखने की दिशा',tabIndex:'टैब इन्डॅक्स',advisoryTitle:'परामर्श शीर्शक',advisoryContentType:'परामर्श कन्टॅन्ट प्रकार',cssClasses:'स्टाइल-शीट क्लास',charset:'लिंक रिसोर्स करॅक्टर सॅट',styles:'स्टाइल',selectAnchor:'ऐंकर चुनें',anchorName:'ऐंकर नाम से',anchorId:'ऍलीमॅन्ट Id से',emailAddress:'ई-मेल पता',emailSubject:'संदेश विषय',emailBody:'संदेश',noAnchors:'(डॉक्यूमॅन्ट में ऐंकर्स की संख्या)',noUrl:'लिंक URL टाइप करें',noEmail:'ई-मेल पता टाइप करें'},anchor:{toolbar:'ऐंकर इन्सर्ट/संपादन',menu:'ऐंकर प्रॉपर्टीज़',title:'ऐंकर प्रॉपर्टीज़',name:'ऐंकर का नाम',errorName:'ऐंकर का नाम टाइप करें'},findAndReplace:{title:'खोजें और बदलें',find:'खोजें',replace:'रीप्लेस',findWhat:'यह खोजें:',replaceWith:'इससे रिप्लेस करें:',notFoundMsg:'आपके द्वारा दिया गया टेक्स्ट नहीं मिला',matchCase:'केस मिलायें',matchWord:'पूरा शब्द मिलायें',matchCyclic:'Match cyclic',replaceAll:'सभी रिप्लेस करें',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'टेबल',title:'टेबल प्रॉपर्टीज़',menu:'टेबल प्रॉपर्टीज़',deleteTable:'टेबल डिलीट करें',rows:'पंक्तियाँ',columns:'कालम',border:'बॉर्डर साइज़',align:'ऍलाइन्मॅन्ट',alignNotSet:'<सॅट नहीं>',alignLeft:'दायें',alignCenter:'बीच में',alignRight:'बायें',width:'चौड़ाई',widthPx:'पिक्सैल',widthPc:'प्रतिशत',height:'ऊँचाई',cellSpace:'सैल अंतर',cellPad:'सैल पैडिंग',caption:'शीर्षक',summary:'सारांश',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'खाना',insertBefore:'पहले सैल डालें',insertAfter:'बाद में सैल डालें',deleteCell:'सैल डिलीट करें',merge:'सैल मिलायें',mergeRight:'बाँया विलय',mergeDown:'नीचे विलय करें',splitHorizontal:'सैल को क्षैतिज स्थिति में विभाजित करें',splitVertical:'सैल को लम्बाकार में विभाजित करें',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'पंक्ति',insertBefore:'पहले पंक्ति डालें',insertAfter:'बाद में पंक्ति डालें',deleteRow:'पंक्तियाँ डिलीट करें'},column:{menu:'कालम',insertBefore:'पहले कालम डालें',insertAfter:'बाद में कालम डालें',deleteColumn:'कालम डिलीट करें'}},button:{title:'बटन प्रॉपर्टीज़',text:'टेक्स्ट (वैल्यू)',type:'प्रकार',typeBtn:'बटन',typeSbm:'सब्मिट',typeRst:'रिसेट'},checkboxAndRadio:{checkboxTitle:'चॅक बॉक्स प्रॉपर्टीज़',radioTitle:'रेडिओ बटन प्रॉपर्टीज़',value:'वैल्यू',selected:'सॅलॅक्टॅड'},form:{title:'फ़ॉर्म प्रॉपर्टीज़',menu:'फ़ॉर्म प्रॉपर्टीज़',action:'क्रिया',method:'तरीका',encoding:'Encoding',target:'टार्गेट',targetNotSet:'<सॅट नहीं>',targetNew:'नया विन्डो (_blank)',targetTop:'शीर्ष विन्डो (_top)',targetSelf:'इसी विन्डो (_self)',targetParent:'मूल विन्डो (_parent)'},select:{title:'चुनाव फ़ील्ड प्रॉपर्टीज़',selectInfo:'सूचना',opAvail:'उपलब्ध विकल्प',value:'वैल्यू',size:'साइज़',lines:'पंक्तियाँ',chkMulti:'एक से ज्यादा विकल्प चुनने दें',opText:'टेक्स्ट',opValue:'वैल्यू',btnAdd:'जोड़ें',btnModify:'बदलें',btnUp:'ऊपर',btnDown:'नीचे',btnSetValue:'चुनी गई वैल्यू सॅट करें',btnDelete:'डिलीट'},textarea:{title:'टेक्स्त एरिया प्रॉपर्टीज़',cols:'कालम',rows:'पंक्तियां'},textfield:{title:'टेक्स्ट फ़ील्ड प्रॉपर्टीज़',name:'नाम',value:'वैल्यू',charWidth:'करॅक्टर की चौढ़ाई',maxChars:'अधिकतम करॅक्टर',type:'टाइप',typeText:'टेक्स्ट',typePass:'पास्वर्ड'},hidden:{title:'गुप्त फ़ील्ड प्रॉपर्टीज़',name:'नाम',value:'वैल्यू'},image:{title:'तस्वीर प्रॉपर्टीज़',titleButton:'तस्वीर बटन प्रॉपर्टीज़',menu:'तस्वीर प्रॉपर्टीज़',infoTab:'तस्वीर की जानकारी',btnUpload:'इसे सर्वर को भेजें',url:'URL',upload:'अपलोड',alt:'वैकल्पिक टेक्स्ट',width:'चौड़ाई',height:'ऊँचाई',lockRatio:'लॉक अनुपात',resetSize:'रीसॅट साइज़',border:'बॉर्डर',hSpace:'हॉरिज़ॉन्टल स्पेस',vSpace:'वर्टिकल स्पेस',align:'ऍलाइन',alignLeft:'दायें',alignAbsBottom:'Abs नीचे',alignAbsMiddle:'Abs ऊपर',alignBaseline:'मूल रेखा',alignBottom:'नीचे',alignMiddle:'मध्य',alignRight:'दायें',alignTextTop:'टेक्स्ट ऊपर',alignTop:'ऊपर',preview:'प्रीव्यू',alertUrl:'तस्वीर का URL टाइप करें ',linkTab:'लिंक',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'फ़्लैश प्रॉपर्टीज़',propertiesTab:'Properties',title:'फ़्लैश प्रॉपर्टीज़',chkPlay:'ऑटो प्ले',chkLoop:'लूप',chkMenu:'फ़्लैश मॅन्यू का प्रयोग करें',chkFull:'Allow Fullscreen',scale:'स्केल',scaleAll:'सभी दिखायें',scaleNoBorder:'कोई बॉर्डर नहीं',scaleFit:'बिल्कुल फ़िट',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'ऍलाइन',alignLeft:'दायें',alignAbsBottom:'Abs नीचे',alignAbsMiddle:'Abs ऊपर',alignBaseline:'मूल रेखा',alignBottom:'नीचे',alignMiddle:'मध्य',alignRight:'दायें',alignTextTop:'टेक्स्ट ऊपर',alignTop:'ऊपर',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'बैक्ग्राउन्ड रंग',width:'चौड़ाई',height:'ऊँचाई',hSpace:'हॉरिज़ॉन्टल स्पेस',vSpace:'वर्टिकल स्पेस',validateSrc:'लिंक URL टाइप करें',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'वर्तनी (स्पेलिंग) जाँच',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'शब्दकोश में नहीं',changeTo:'इसमें बदलें',btnIgnore:'इग्नोर',btnIgnoreAll:'सभी इग्नोर करें',btnReplace:'रिप्लेस',btnReplaceAll:'सभी रिप्लेस करें',btnUndo:'अन्डू',noSuggestions:'- कोई सुझाव नहीं -',progress:'वर्तनी की जाँच (स्पॅल-चॅक) जारी है...',noMispell:'वर्तनी की जाँच : कोई गलत वर्तनी (स्पॅलिंग) नहीं पाई गई',noChanges:'वर्तनी की जाँच :कोई शब्द नहीं बदला गया',oneChange:'वर्तनी की जाँच : एक शब्द बदला गया',manyChanges:'वर्तनी की जाँच : %1 शब्द बदले गये',ieSpellDownload:'स्पॅल-चॅकर इन्स्टाल नहीं किया गया है। क्या आप इसे डाउनलोड करना चाहेंगे?'},smiley:{toolbar:'स्माइली',title:'स्माइली इन्सर्ट करें'},elementsPath:{eleTitle:'%1 element'},numberedlist:'अंकीय सूची',bulletedlist:'बुलॅट सूची',indent:'इन्डॅन्ट बढ़ायें',outdent:'इन्डॅन्ट कम करें',justify:{left:'बायीं तरफ',center:'बीच में',right:'दायीं तरफ',block:'ब्लॉक जस्टीफ़ाई'},blockquote:'ब्लॉक-कोट',clipboard:{title:'पेस्ट',cutError:'आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl+X) का प्रयोग करें।',copyError:'आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl+C) का प्रयोग करें।',pasteMsg:'Ctrl+V का प्रयोग करके पेस्ट करें और ठीक है करें.',securityMsg:'आपके ब्राउज़र की सुरक्षा आपके ब्राउज़र की सुरKश सैटिंग के कारण, एडिटर आपके क्लिपबोर्ड डेटा को नहीं पा सकता है. आपको उसे इस विन्डो में दोबारा पेस्ट करना होगा.'},pastefromword:{toolbar:'पेस्ट (वर्ड से)',title:'पेस्ट (वर्ड से)',advice:'Ctrl+V का प्रयोग करके पेस्ट करें और ठीक है करें.',ignoreFontFace:'फ़ॉन्ट परिभाषा निकालें',removeStyle:'स्टाइल परिभाषा निकालें'},pasteText:{button:'पेस्ट (सादा टॅक्स्ट)',title:'पेस्ट (सादा टॅक्स्ट)'},templates:{button:'टॅम्प्लेट',title:'कन्टेन्ट टॅम्प्लेट',insertOption:'मूल शब्दों को बदलें',selectPromptMsg:'ऍडिटर में ओपन करने हेतु टॅम्प्लेट चुनें(वर्तमान कन्टॅन्ट सेव नहीं होंगे):',emptyListMsg:'(कोई टॅम्प्लेट डिफ़ाइन नहीं किया गया है)'},showBlocks:'ब्लॉक दिखायें',stylesCombo:{label:'स्टाइल',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'फ़ॉर्मैट',voiceLabel:'Format',panelTitle:'फ़ॉर्मैट',panelVoiceLabel:'Select a paragraph format',tag_p:'साधारण',tag_pre:'फ़ॉर्मैटॅड',tag_address:'पता',tag_h1:'शीर्षक 1',tag_h2:'शीर्षक 2',tag_h3:'शीर्षक 3',tag_h4:'शीर्षक 4',tag_h5:'शीर्षक 5',tag_h6:'शीर्षक 6',tag_div:'शीर्षक (DIV)'},font:{label:'फ़ॉन्ट',voiceLabel:'Font',panelTitle:'फ़ॉन्ट',panelVoiceLabel:'Select a font'},fontSize:{label:'साइज़',voiceLabel:'Font Size',panelTitle:'साइज़',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'टेक्स्ट रंग',bgColorTitle:'बैक्ग्राउन्ड रंग',auto:'स्वचालित',more:'और रंग...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/lang/eo.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/lang/eo.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/lang/eo.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.eo={dir:'ltr',editorTitle:'Rich text editor, %1',source:'Fonto',newPage:'Nova Paĝo',save:'Sekurigi',preview:'Vidigi Aspekton',cut:'Eltondi',copy:'Kopii',paste:'Interglui',print:'Presi',underline:'Substreko',bold:'Grasa',italic:'Kursiva',selectAll:'Elekti ĉion',removeFormat:'Forigi Formaton',strike:'Trastreko',subscript:'Subskribo',superscript:'Superskribo',horizontalrule:'Enmeti Horizonta Linio',pagebreak:'Insert Page Break for Printing',unlink:'Forigi Ligilon',undo:'Malfari',redo:'Refari',common:{browseServer:'Foliumi en la Servilo',url:'URL',protocol:'Protokolo',upload:'Alŝuti',uploadSubmit:'Sendu al Servilo',image:'Bildo',flash:'Flash',form:'Formularo',checkbox:'Markobutono',radio:'Radiobutono',textField:'Teksta kampo',textarea:'Teksta Areo',hiddenField:'Kaŝita Kampo',button:'Butono',select:'Elekta Kampo',imageButton:'Bildbutono',notSet:'<Defaŭlta>',id:'Id',name:'Nomo',langDir:'Skribdirekto',langDirLtr:'De maldekstro dekstren (LTR)',langDirRtl:'De dekstro maldekstren (RTL)',langCode:'Lingva Kodo',longDescr:'URL de Longa Priskribo',cssClass:'Klasoj de Stilfolioj',advisoryTitle:'Indika Titolo',cssStyle:'Stilo',ok:'Akcepti',cancel:'Rezigni',generalTab:'General',advancedTab:'Speciala',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},specialChar:{toolbar:'Enmeti Specialan Signon',title:'Enmeti Specialan Signon'},link:{toolbar:'Enmeti/Ŝanĝi Ligilon',menu:'Modifier Ligilon',title:'Ligilo',info:'Informoj pri la Ligilo',target:'Celo',upload:'Alŝuti',advanced:'Speciala',type:'Tipo de Ligilo',toAnchor:'Ankri en tiu ĉi paĝo',toEmail:'Retpoŝto',target:'Celo',targetNotSet:'<Defaŭlta>',targetFrame:'<kadro>',targetPopup:'<ŝprucfenestro>',targetNew:'Nova Fenestro (_blank)',targetTop:'Plej Supra Fenestro (_top)',targetSelf:'Sama Fenestro (_self)',targetParent:'Gepatra Fenestro (_parent)',targetFrameName:'Nomo de Kadro',targetPopupName:'Nomo de Ŝprucfenestro',popupFeatures:'Atributoj de la Ŝprucfenestro',popupResizable:'Resizable',popupStatusBar:'Statobreto',popupLocationBar:'Adresobreto',popupToolbar:'Ilobreto',popupMenuBar:'Menubreto',popupFullScreen:'Tutekrane (IE)',popupScrollBars:'Rulumlisteloj',popupDependent:'Dependa (Netscape)',popupWidth:'Larĝo',popupLeft:'Pozicio de Maldekstro',popupHeight:'Alto',popupTop:'Pozicio de Supro',id:'Id',langDir:'Skribdirekto',langDirNotSet:'<Defaŭlta>',langDirLTR:'De maldekstro dekstren (LTR)',langDirRTL:'De dekstro maldekstren (RTL)',acccessKey:'Fulmoklavo',name:'Nomo',langCode:'Skribdirekto',tabIndex:'Taba Ordo',advisoryTitle:'Indika Titolo',advisoryContentType:'Indika Enhavotipo',cssClasses:'Klasoj de Stilfolioj',charset:'Signaro de la Ligita Rimedo',styles:'Stilo',selectAnchor:'Elekti Ankron',anchorName:'Per Ankronomo',anchorId:'Per Elementidentigilo',emailAddress:'Retadreso',emailSubject:'Temlinio',emailBody:'Mesaĝa korpo',noAnchors:'<Ne disponeblas ankroj en la dokumento>',noUrl:'Bonvolu entajpi la URL-on',noEmail:'Bonvolu entajpi la retadreson'},anchor:{toolbar:'Enmeti/Ŝanĝi Ankron',menu:'Ankraj Atributoj',title:'Ankraj Atributoj',name:'Ankra Nomo',errorName:'Bv tajpi la ankran nomon'},findAndReplace:{title:'Find and Replace',find:'Serĉi',replace:'Anstataŭigi',findWhat:'Serĉi:',replaceWith:'Anstataŭigi per:',notFoundMsg:'La celteksto ne estas trovita.',matchCase:'Kongruigi Usklecon',matchWord:'Tuta Vorto',matchCyclic:'Match cyclic',replaceAll:'Anstataŭigi Ĉiun',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabelo',title:'Atributoj de Tabelo',menu:'Atributoj de Tabelo',deleteTable:'Delete Table',rows:'Linioj',columns:'Kolumnoj',border:'Bordero',align:'Ĝisrandigo',alignNotSet:'<Defaŭlte>',alignLeft:'Maldekstre',alignCenter:'Centre',alignRight:'Dekstre',width:'Larĝo',widthPx:'Bitbilderoj',widthPc:'elcentoj',height:'Alto',cellSpace:'Interspacigo de Ĉeloj',cellPad:'Ĉirkaŭenhava Plenigado',caption:'Titolo',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Forigi Ĉelojn',merge:'Kunfandi Ĉelojn',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Forigi Liniojn'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Forigi Kolumnojn'}},button:{title:'Butonaj Atributoj',text:'Teksto (Valoro)',type:'Tipo',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Markobutonaj Atributoj',radioTitle:'Radiobutonaj Atributoj',value:'Valoro',selected:'Elektita'},form:{title:'Formularaj Atributoj',menu:'Formularaj Atributoj',action:'Ago',method:'Metodo',encoding:'Encoding',target:'Celo',targetNotSet:'<Defaŭlta>',targetNew:'Nova Fenestro (_blank)',targetTop:'Plej Supra Fenestro (_top)',targetSelf:'Sama Fenestro (_self)',targetParent:'Gepatra Fenestro (_parent)'},select:{title:'Atributoj de Elekta Kampo',selectInfo:'Select Info',opAvail:'Elektoj Disponeblaj',value:'Valoro',size:'Grando',lines:'Linioj',chkMulti:'Permesi Plurajn Elektojn',opText:'Teksto',opValue:'Valoro',btnAdd:'Aldoni',btnModify:'Modifi',btnUp:'Supren',btnDown:'Malsupren',btnSetValue:'Agordi kiel Elektitan Valoron',btnDelete:'Forigi'},textarea:{title:'Atributoj de Teksta Areo',cols:'Kolumnoj',rows:'Vicoj'},textfield:{title:'Atributoj de Teksta Kampo',name:'Nomo',value:'Valoro',charWidth:'Signolarĝo',maxChars:'Maksimuma Nombro da Signoj',type:'Tipo',typeText:'Teksto',typePass:'Pasvorto'},hidden:{title:'Atributoj de Kaŝita Kampo',name:'Nomo',value:'Valoro'},image:{title:'Atributoj de Bildo',titleButton:'Bildbutonaj Atributoj',menu:'Atributoj de Bildo',infoTab:'Informoj pri Bildo',btnUpload:'Sendu al Servilo',url:'URL',upload:'Alŝuti',alt:'Anstataŭiga Teksto',width:'Larĝo',height:'Alto',lockRatio:'Konservi Proporcion',resetSize:'Origina Grando',border:'Bordero',hSpace:'HSpaco',vSpace:'VSpaco',align:'Ĝisrandigo',alignLeft:'Maldekstre',alignAbsBottom:'Abs Malsupre',alignAbsMiddle:'Abs Centre',alignBaseline:'Je Malsupro de Teksto',alignBottom:'Malsupre',alignMiddle:'Centre',alignRight:'Dekstre',alignTextTop:'Je Supro de Teksto',alignTop:'Supre',preview:'Vidigi Aspekton',alertUrl:'Bonvolu tajpi la URL de la bildo',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Ĝisrandigo',alignLeft:'Maldekstre',alignAbsBottom:'Abs Malsupre',alignAbsMiddle:'Abs Centre',alignBaseline:'Je Malsupro de Teksto',alignBottom:'Malsupre',alignMiddle:'Centre',alignRight:'Dekstre',alignTextTop:'Je Supro de Teksto',alignTop:'Supre',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Fona Koloro',width:'Larĝo',height:'Alto',hSpace:'HSpaco',vSpace:'VSpaco',validateSrc:'Bonvolu entajpi la URL-on',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Literumada Kontrolilo',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Ne trovita en la vortaro',changeTo:'Ŝanĝi al',btnIgnore:'Malatenti',btnIgnoreAll:'Malatenti Ĉiun',btnReplace:'Anstataŭigi',btnReplaceAll:'Anstataŭigi Ĉiun',btnUndo:'Malfari',noSuggestions:'- Neniu propono -',progress:'Literumkontrolado daŭras...',noMispell:'Literumkontrolado finita: neniu fuŝo trovita',noChanges:'Literumkontrolado finita: neniu vorto ŝanĝita',oneChange:'Literumkontrolado finita: unu vorto ŝanĝita',manyChanges:'Literumkontrolado finita: %1 vortoj ŝanĝitaj',ieSpellDownload:'Literumada Kontrolilo ne instalita. Ĉu vi volas elŝuti ĝin nun?'},smiley:{toolbar:'Mienvinjeto',title:'Enmeti Mienvinjeton'},elementsPath:{eleTitle:'%1 element'},numberedlist:'Numera Listo',bulletedlist:'Bula Listo',indent:'Pligrandigi Krommarĝenon',outdent:'Malpligrandigi Krommarĝenon',justify:{left:'Maldekstrigi',center:'Centrigi',right:'Dekstrigi',block:'Ĝisrandigi Ambaŭflanke'},blockquote:'Blockquote',clipboard:{title:'Interglui',cutError:'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-X).',copyError:'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-C).',pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'},pastefromword:{toolbar:'Interglui el Word',title:'Interglui el Word',advice:'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',ignoreFontFace:'Ignore Font Face definitions',removeStyle:'Remove Styles definitions'},pasteText:{button:'Interglui kiel Tekston',title:'Interglui kiel Tekston'},templates:{button:'Templates',title:'Content Templates',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stilo',voiceLabel:'Styles',panelVoiceLabel:'Select a style',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formato',voiceLabel:'Format',panelTitle:'Formato',panelVoiceLabel:'Select a paragraph format',tag_p:'Normala',tag_pre:'Formatita',tag_address:'Adreso',tag_h1:'Titolo 1',tag_h2:'Titolo 2',tag_h3:'Titolo 3',tag_h4:'Titolo 4',tag_h5:'Titolo 5',tag_h6:'Titolo 6',tag_div:'Paragrafo (DIV)'},font:{label:'Tiparo',voiceLabel:'Font',panelTitle:'Tiparo',panelVoiceLabel:'Select a font'},fontSize:{label:'Grando',voiceLabel:'Font Size',panelTitle:'Grando',panelVoiceLabel:'Select a font size'},colorButton:{textColorTitle:'Teksta Koloro',bgColorTitle:'Fona Koloro',auto:'Aŭtomata',more:'Pli da Koloroj...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dim Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dark Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',languagesTab:'Languages',dictionariesTab:'Dictionaries',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',highlight:'Highlight',selected:'Selected',clear:'Clear'}};
Index: /trunk/filemanager/tp/ckeditor/plugins/pagebreak/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/pagebreak/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/pagebreak/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('pagebreak',{init:function(a){a.addCommand('pagebreak',CKEDITOR.plugins.pagebreakCmd);a.ui.addButton('PageBreak',{label:a.lang.pagebreak,command:'pagebreak'});a.addCss('img.cke_pagebreak{background-image: url('+CKEDITOR.getUrl(this.path+'images/pagebreak.gif')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'clear: both;'+'display: block;'+'float: none;'+'width: 100%;'+'border-top: #999999 1px dotted;'+'border-bottom: #999999 1px dotted;'+'height: 5px;'+'}');},afterInit:function(a){var b=a.dataProcessor,c=b&&b.dataFilter;if(c)c.addRules({elements:{div:function(d){var e=d.attributes.style,f=e&&d.children.length==1&&d.children[0],g=f&&f.name=='span'&&f.attributes.style;if(g&&/page-break-after\s*:\s*always/i.test(e)&&/display\s*:\s*none/i.test(g))return a.createFakeParserElement(d,'cke_pagebreak','div');}}});},requires:['fakeobjects']});CKEDITOR.plugins.pagebreakCmd={exec:function(a){var b=CKEDITOR.dom.element.createFromHtml('<div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>');b=a.createFakeElement(b,'cke_pagebreak','div');var c=a.getSelection().getRanges();for(var d,e=0;e<c.length;e++){d=c[e];if(e>0)b=b.clone(true);d.splitBlock('p');d.insertNode(b);}}};
Index: /trunk/filemanager/tp/ckeditor/plugins/image/dialogs/image.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/image/dialogs/image.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/image/dialogs/image.js	(revision 2000)
@@ -0,0 +1,13 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=1,b=2,c=4,d=8,e=/^\s*(\d+)((px)|\%)?\s*$/i,f=/(^\s*(\d+)((px)|\%)?\s*$)|^$/i,g=function(){var m=this.getValue(),n=this.getDialog(),o=m.match(e);if(o){if(o[2]=='%')i(n,false);m=o[1];}if(n.lockRatio){var p=n.originalElement;if(p.getCustomData('isReady')=='true')if(this.id=='txtHeight'){if(m&&m!='0')m=Math.round(p.$.width*(m/p.$.height));if(!isNaN(m))n.setValueOf('info','txtWidth',m);}else{if(m&&m!='0')m=Math.round(p.$.height*(m/p.$.width));if(!isNaN(m))n.setValueOf('info','txtHeight',m);}}h(n);},h=function(m){if(!m.originalElement||!m.preview)return 1;m.commitContent(c,m.preview);return 0;},i=function(m,n){var o=m.originalElement,p=CKEDITOR.document.getById('btnLockSizes');if(o.getCustomData('isReady')=='true'){if(n=='check'){var q=m.getValueOf('info','txtWidth'),r=m.getValueOf('info','txtHeight'),s=o.$.width*1000/o.$.height,t=q*1000/r;m.lockRatio=false;if(!q&&!r)m.lockRatio=true;else if(!isNaN(s)&&!isNaN(t))if(Math.round(s)==Math.round(t))m.lockRatio=true;}else if(n!=undefined)m.lockRatio=n;else m.lockRatio=!m.lockRatio;}else if(n!='check')m.lockRatio=false;if(m.lockRatio)p.removeClass('cke_btn_unlocked');else p.addClass('cke_btn_unlocked');return m.lockRatio;},j=function(m){var n=m.originalElement;if(n.getCustomData('isReady')=='true'){m.setValueOf('info','txtWidth',n.$.width);m.setValueOf('info','txtHeight',n.$.height);}h(m);},k=function(m,n){if(m!=a)return;function o(t,u){var v=t.match(e);if(v){if(v[2]=='%'){v[1]+='%';i(p,false);}return v[1];}return u;};var p=this.getDialog(),q='',r=this.id=='txtWidth'?'width':'height',s=n.getAttribute(r);if(s)q=o(s,q);q=o(n.$.style[r],q);this.setValue(q);},l=function(m,n){var o=function(){var r=this;var q=r.originalElement;q.setCustomData('isReady','true');q.removeListener('load',o);q.removeListener('error',p);q.removeListener('abort',p);CKEDITOR.document.getById('ImagePreviewLoader').setStyle('display','none');if(!r.dontResetSize)j(r);if(r.firstLoad)i(r,'check');r.firstLoad=false;r.dontResetSize=false;},p=function(){var s=this;var q=s.originalElement;q.removeListener('load',o);q.removeListener('error',p);q.removeListener('abort',p);var r=CKEDITOR.getUrl(m.skinPath+'images/noimage.png');if(s.preview)s.preview.setAttribute('src',r);CKEDITOR.document.getById('ImagePreviewLoader').setStyle('display','none');i(s,false);};return{title:n=='image'?m.lang.image.title:m.lang.image.titleButton,minWidth:420,minHeight:310,onShow:function(){var w=this;w.imageElement=false;w.linkElement=false;w.imageEditMode=false;w.linkEditMode=false;
+w.lockRatio=true;w.dontResetSize=false;w.firstLoad=true;w.addLink=false;CKEDITOR.document.getById('ImagePreviewLoader').setStyle('display','none');w.preview=CKEDITOR.document.getById('previewImage');var q=w.getParentEditor(),r=w.getParentEditor().getSelection(),s=r.getSelectedElement(),t=s&&s.getAscendant('a');w.originalElement=q.document.createElement('img');w.originalElement.setAttribute('alt','');w.originalElement.setCustomData('isReady','false');if(t){w.linkElement=t;w.linkEditMode=true;var u=t.getChildren();if(u.count()==1){var v=u.getItem(0).getName();if(v=='img'||v=='input'){w.imageElement=u.getItem(0);if(w.imageElement.getName()=='img')w.imageEditMode='img';else if(w.imageElement.getName()=='input')w.imageEditMode='input';}}if(n=='image')w.setupContent(b,t);}if(s&&s.getName()=='img'&&!s.getAttribute('_cke_protected_html'))w.imageEditMode='img';else if(s&&s.getName()=='input'&&s.getAttribute('type')&&s.getAttribute('type')=='image')w.imageEditMode='input';if(w.imageEditMode||w.imageElement){if(!w.imageElement)w.imageElement=s;w.setupContent(a,w.imageElement);i(w,true);}if(!CKEDITOR.tools.trim(w.getValueOf('info','txtUrl'))){w.preview.removeAttribute('src');w.preview.setStyle('display','none');}},onOk:function(){var r=this;if(r.imageEditMode){var q=r.imageEditMode;if(n=='image'&&q=='input'&&confirm(m.lang.image.button2Img)){q='img';r.imageElement=m.document.createElement('img');r.imageElement.setAttribute('alt','');m.insertElement(r.imageElement);}else if(n!='image'&&q=='img'&&confirm(m.lang.image.img2Button)){q='input';r.imageElement=m.document.createElement('input');r.imageElement.setAttributes({type:'image',alt:''});m.insertElement(r.imageElement);}}else{if(n=='image')r.imageElement=m.document.createElement('img');else{r.imageElement=m.document.createElement('input');r.imageElement.setAttribute('type','image');}r.imageElement.setAttribute('alt','');}if(!r.linkEditMode)r.linkElement=m.document.createElement('a');r.commitContent(a,r.imageElement);r.commitContent(b,r.linkElement);if(!r.imageEditMode){if(r.addLink){if(!r.linkEditMode){m.insertElement(r.linkElement);r.linkElement.append(r.imageElement,false);}else m.insertElement(r.imageElement);}else m.insertElement(r.imageElement);}else if(!r.linkEditMode&&r.addLink){m.insertElement(r.linkElement);r.imageElement.appendTo(r.linkElement);}else if(r.linkEditMode&&!r.addLink){m.getSelection().selectElement(r.linkElement);m.insertElement(r.imageElement);}},onLoad:function(){var r=this;if(n!='image')r.hidePage('Link');
+var q=r._.element.getDocument();r.addFocusable(q.getById('btnResetSize'),5);r.addFocusable(q.getById('btnLockSizes'),5);},onHide:function(){var q=this;if(q.preview)q.commitContent(d,q.preview);if(q.originalElement){q.originalElement.removeListener('load',o);q.originalElement.removeListener('error',p);q.originalElement.removeListener('abort',p);q.originalElement.remove();q.originalElement=false;}},contents:[{id:'info',label:m.lang.image.infoTab,accessKey:'I',elements:[{type:'vbox',padding:0,children:[{type:'html',html:'<span>'+CKEDITOR.tools.htmlEncode(m.lang.image.url)+'</span>'},{type:'hbox',widths:['280px','110px'],align:'right',children:[{id:'txtUrl',type:'text',label:'',onChange:function(){var q=this.getDialog(),r=this.getValue();if(r.length>0){q=this.getDialog();var s=q.originalElement;q.preview.removeStyle('display');s.setCustomData('isReady','false');var t=CKEDITOR.document.getById('ImagePreviewLoader');if(t)t.setStyle('display','');s.on('load',o,q);s.on('error',p,q);s.on('abort',p,q);s.setAttribute('src',r);q.preview.setAttribute('src',r);h(q);}else if(q.preview){q.preview.removeAttribute('src');q.preview.setStyle('display','none');}},setup:function(q,r){if(q==a){var s=r.getAttribute('_cke_saved_src')||r.getAttribute('src'),t=this;this.getDialog().dontResetSize=true;setTimeout(function(){t.setValue(s);t.setInitValue();t.focus();},0);}},commit:function(q,r){var s=this;if(q==a&&(s.getValue()||s.isChanged())){r.setAttribute('_cke_saved_src',decodeURI(s.getValue()));r.setAttribute('src',decodeURI(s.getValue()));}else if(q==d){r.setAttribute('src','');r.removeAttribute('src');}},validate:CKEDITOR.dialog.validate.notEmpty(m.lang.image.urlMissing)},{type:'button',id:'browse',align:'center',label:m.lang.common.browseServer,hidden:true,filebrowser:'info:txtUrl'}]}]},{id:'txtAlt',type:'text',label:m.lang.image.alt,accessKey:'A','default':'',onChange:function(){h(this.getDialog());},setup:function(q,r){if(q==a)this.setValue(r.getAttribute('alt'));},commit:function(q,r){var s=this;if(q==a){if(s.getValue()||s.isChanged())r.setAttribute('alt',s.getValue());}else if(q==c)r.setAttribute('alt',s.getValue());else if(q==d)r.removeAttribute('alt');}},{type:'hbox',widths:['140px','240px'],children:[{type:'vbox',padding:10,children:[{type:'hbox',widths:['70%','30%'],children:[{type:'vbox',padding:1,children:[{type:'text',width:'40px',id:'txtWidth',labelLayout:'horizontal',label:m.lang.image.width,onKeyUp:g,validate:function(){var q=this.getValue().match(f);if(!q)alert(m.lang.common.validateNumberFailed);
+return!!q;},setup:k,commit:function(q,r){var v=this;if(q==a){var s=v.getValue();if(s)r.setAttribute('width',s);else if(!s&&v.isChanged())r.removeAttribute('width');}else if(q==c){s=v.getValue();var t=s.match(e);if(!t){var u=v.getDialog().originalElement;if(u.getCustomData('isReady')=='true')r.setStyle('width',u.$.width+'px');}else r.setStyle('width',s+'px');}else if(q==d){r.setStyle('width','0px');r.removeAttribute('width');r.removeStyle('width');}}},{type:'text',id:'txtHeight',width:'40px',labelLayout:'horizontal',label:m.lang.image.height,onKeyUp:g,validate:function(){var q=this.getValue().match(f);if(!q)alert(m.lang.common.validateNumberFailed);return!!q;},setup:k,commit:function(q,r){var v=this;if(q==a){var s=v.getValue();if(s)r.setAttribute('height',s);else if(!s&&v.isChanged())r.removeAttribute('height');}else if(q==c){s=v.getValue();var t=s.match(e);if(!t){var u=v.getDialog().originalElement;if(u.getCustomData('isReady')=='true')r.setStyle('height',u.$.height+'px');}else r.setStyle('height',s+'px');}else if(q==d){r.setStyle('height','0px');r.removeAttribute('height');r.removeStyle('height');}}}]},{type:'html',style:'margin-top:10px;width:40px;height:40px;',onLoad:function(){var q=CKEDITOR.document.getById('btnResetSize'),r=CKEDITOR.document.getById('btnLockSizes');if(q){q.on('click',function(){j(this);},this.getDialog());q.on('mouseover',function(){this.addClass('cke_btn_over');},q);q.on('mouseout',function(){this.removeClass('cke_btn_over');},q);}if(r){r.on('click',function(){var w=this;var s=i(w),t=w.originalElement,u=w.getValueOf('info','txtWidth');if(t.getCustomData('isReady')=='true'&&u){var v=t.$.height/t.$.width*u;if(!isNaN(v)){w.setValueOf('info','txtHeight',Math.round(v));h(w);}}},this.getDialog());r.on('mouseover',function(){this.addClass('cke_btn_over');},r);r.on('mouseout',function(){this.removeClass('cke_btn_over');},r);}},html:'<div><a href="javascript:void(0)" tabindex="-1" title="'+m.lang.image.lockRatio+'" class="cke_btn_locked" id="btnLockSizes"></a>'+'<a href="javascript:void(0)" tabindex="-1" title="'+m.lang.image.resetSize+'" class="cke_btn_reset" id="btnResetSize"></a>'+'</div>'}]},{type:'vbox',padding:1,children:[{type:'text',id:'txtBorder',width:'60px',labelLayout:'horizontal',label:m.lang.image.border,'default':'',onKeyUp:function(){h(this.getDialog());},validate:function(){var q=CKEDITOR.dialog.validate.integer(m.lang.common.validateNumberFailed);return q.apply(this);},setup:function(q,r){if(q==a)this.setValue(r.getAttribute('border'));
+},commit:function(q,r){var t=this;if(q==a){if(t.getValue()||t.isChanged())r.setAttribute('border',t.getValue());}else if(q==c){var s=parseInt(t.getValue(),10);s=isNaN(s)?0:s;r.setAttribute('border',s);r.setStyle('border',s+'px solid black');}else if(q==d){r.removeAttribute('border');r.removeStyle('border');}}},{type:'text',id:'txtHSpace',width:'60px',labelLayout:'horizontal',label:m.lang.image.hSpace,'default':'',onKeyUp:function(){h(this.getDialog());},validate:function(){var q=CKEDITOR.dialog.validate.integer(m.lang.common.validateNumberFailed);return q.apply(this);},setup:function(q,r){if(q==a){var s=r.getAttribute('hspace');if(s!=-1)this.setValue(s);}},commit:function(q,r){var t=this;if(q==a){if(t.getValue()||t.isChanged())r.setAttribute('hspace',t.getValue());}else if(q==c){var s=parseInt(t.getValue(),10);s=isNaN(s)?0:s;r.setAttribute('hspace',s);r.setStyle('margin-left',s+'px');r.setStyle('margin-right',s+'px');}else if(q==d){r.removeAttribute('hspace');r.removeStyle('margin-left');r.removeStyle('margin-right');}}},{type:'text',id:'txtVSpace',width:'60px',labelLayout:'horizontal',label:m.lang.image.vSpace,'default':'',onKeyUp:function(){h(this.getDialog());},validate:function(){var q=CKEDITOR.dialog.validate.integer(m.lang.common.validateNumberFailed);return q.apply(this);},setup:function(q,r){if(q==a)this.setValue(r.getAttribute('vspace'));},commit:function(q,r){var t=this;if(q==a){if(t.getValue()||t.isChanged())r.setAttribute('vspace',t.getValue());}else if(q==c){var s=parseInt(t.getValue(),10);s=isNaN(s)?0:s;r.setAttribute('vspace',t.getValue());r.setStyle('margin-top',s+'px');r.setStyle('margin-bottom',s+'px');}else if(q==d){r.removeAttribute('vspace');r.removeStyle('margin-top');r.removeStyle('margin-bottom');}}},{id:'cmbAlign',type:'select',labelLayout:'horizontal',widths:['35%','65%'],style:'width:90px',label:m.lang.image.align,'default':'',items:[[m.lang.common.notSet,''],[m.lang.image.alignLeft,'left'],[m.lang.image.alignAbsBottom,'absBottom'],[m.lang.image.alignAbsMiddle,'absMiddle'],[m.lang.image.alignBaseline,'baseline'],[m.lang.image.alignBottom,'bottom'],[m.lang.image.alignMiddle,'middle'],[m.lang.image.alignRight,'right'],[m.lang.image.alignTextTop,'textTop'],[m.lang.image.alignTop,'top']],onChange:function(){h(this.getDialog());},setup:function(q,r){if(q==a)this.setValue(r.getAttribute('align'));},commit:function(q,r){var s=this.getValue();if(q==a){if(s||this.isChanged())r.setAttribute('align',s);}else if(q==c){r.setAttribute('align',this.getValue());
+if(s=='absMiddle'||s=='middle')r.setStyle('vertical-align','middle');else if(s=='top'||s=='textTop')r.setStyle('vertical-align','top');else r.removeStyle('vertical-align');if(s=='right'||s=='left')r.setStyle('styleFloat',s);else r.removeStyle('styleFloat');}else if(q==d)r.removeAttribute('align');}}]}]},{type:'vbox',height:'250px',children:[{type:'html',style:'width:95%;',html:'<div>'+CKEDITOR.tools.htmlEncode(m.lang.image.preview)+'<br>'+'<div id="ImagePreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div>'+'<div id="ImagePreviewBox">'+'<a href="javascript:void(0)" target="_blank" onclick="return false;" id="previewLink">'+'<img id="previewImage" src="" alt="" /></a>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. '+'Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, '+'nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.'+'</div>'+'</div>'}]}]}]},{id:'Link',label:m.lang.link.title,padding:0,elements:[{id:'txtUrl',type:'text',label:m.lang.image.url,style:'width: 100%','default':'',setup:function(q,r){if(q==b){var s=r.getAttribute('_cke_saved_href');if(!s)s=r.getAttribute('href');this.setValue(s);}},commit:function(q,r){var s=this;if(q==b)if(s.getValue()||s.isChanged()){r.setAttribute('_cke_saved_href',decodeURI(s.getValue()));r.setAttribute('href','javascript:void(0)/*'+CKEDITOR.tools.getNextNumber()+'*/');if(s.getValue()||!m.config.image_removeLinkByEmptyURL)s.getDialog().addLink=true;}}},{type:'button',id:'browse',filebrowser:'Link:txtUrl',style:'float:right',hidden:true,label:m.lang.common.browseServer},{id:'cmbTarget',type:'select',label:m.lang.link.target,'default':'',items:[[m.lang.link.targetNotSet,''],[m.lang.link.targetNew,'_blank'],[m.lang.link.targetTop,'_top'],[m.lang.link.targetSelf,'_self'],[m.lang.link.targetParent,'_parent']],setup:function(q,r){if(q==b)this.setValue(r.getAttribute('target'));
+},commit:function(q,r){if(q==b)if(this.getValue()||this.isChanged())r.setAttribute('target',this.getValue());}}]},{id:'Upload',hidden:true,filebrowser:'uploadButton',label:m.lang.image.upload,elements:[{type:'file',id:'upload',label:m.lang.image.btnUpload,style:'height:40px',size:38},{type:'fileButton',id:'uploadButton',filebrowser:'info:txtUrl',label:m.lang.image.btnUpload,'for':['Upload','upload']}]},{id:'advanced',label:m.lang.common.advancedTab,elements:[{type:'hbox',widths:['50%','25%','25%'],children:[{type:'text',id:'linkId',label:m.lang.common.id,setup:function(q,r){if(q==a)this.setValue(r.getAttribute('id'));},commit:function(q,r){if(q==a)if(this.getValue()||this.isChanged())r.setAttribute('id',this.getValue());}},{id:'cmbLangDir',type:'select',style:'width : 100px;',label:m.lang.common.langDir,'default':'',items:[[m.lang.common.notSet,''],[m.lang.common.langDirLtr,'ltr'],[m.lang.common.langDirRtl,'rtl']],setup:function(q,r){if(q==a)this.setValue(r.getAttribute('dir'));},commit:function(q,r){if(q==a)if(this.getValue()||this.isChanged())r.setAttribute('dir',this.getValue());}},{type:'text',id:'txtLangCode',label:m.lang.common.langCode,'default':'',setup:function(q,r){if(q==a)this.setValue(r.getAttribute('lang'));},commit:function(q,r){if(q==a)if(this.getValue()||this.isChanged())r.setAttribute('lang',this.getValue());}}]},{type:'text',id:'txtGenLongDescr',label:m.lang.common.longDescr,setup:function(q,r){if(q==a)this.setValue(r.getAttribute('longDesc'));},commit:function(q,r){if(q==a)if(this.getValue()||this.isChanged())r.setAttribute('longDesc',this.getValue());}},{type:'hbox',widths:['50%','50%'],children:[{type:'text',id:'txtGenClass',label:m.lang.common.cssClass,'default':'',setup:function(q,r){if(q==a)this.setValue(r.getAttribute('class'));},commit:function(q,r){if(q==a)if(this.getValue()||this.isChanged())r.setAttribute('class',this.getValue());}},{type:'text',id:'txtGenTitle',label:m.lang.common.advisoryTitle,'default':'',onChange:function(){h(this.getDialog());},setup:function(q,r){if(q==a)this.setValue(r.getAttribute('title'));},commit:function(q,r){var s=this;if(q==a){if(s.getValue()||s.isChanged())r.setAttribute('title',s.getValue());}else if(q==c)r.setAttribute('title',s.getValue());else if(q==d)r.removeAttribute('title');}}]},{type:'text',id:'txtdlgGenStyle',label:m.lang.common.cssStyle,'default':'',setup:function(q,r){if(q==a){var s=r.getAttribute('style');if(!s&&r.$.style.cssText)s=r.$.style.cssText;this.setValue(s);var t=r.$.style.height,u=r.$.style.width,v=(t?t:'').match(e),w=(u?u:'').match(e);
+this.attributesInStyle={height:!!v,width:!!w};}},commit:function(q,r){var u=this;if(q==a&&(u.getValue()||u.isChanged())){r.setAttribute('style',u.getValue());var s=r.getAttribute('height'),t=r.getAttribute('width');if(u.attributesInStyle&&u.attributesInStyle.height)if(s){if(s.match(e)[2]=='%')r.setStyle('height',s+'%');else r.setStyle('height',s+'px');}else r.removeStyle('height');if(u.attributesInStyle&&u.attributesInStyle.width)if(t){if(t.match(e)[2]=='%')r.setStyle('width',t+'%');else r.setStyle('width',t+'px');}else r.removeStyle('width');}}}]}]};};CKEDITOR.dialog.add('image',function(m){return l(m,'image');});CKEDITOR.dialog.add('imagebutton',function(m){return l(m,'imagebutton');});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/image/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/image/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/image/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('image',{init:function(a){var b='image';CKEDITOR.dialog.add(b,this.path+'dialogs/image.js');a.addCommand(b,new CKEDITOR.dialogCommand(b));a.ui.addButton('Image',{label:a.lang.common.image,command:b});if(a.addMenuItems)a.addMenuItems({image:{label:a.lang.image.menu,command:'image',group:'image'}});if(a.contextMenu)a.contextMenu.addListener(function(c,d){if(!c||!c.is('img')||c.getAttribute('_cke_realelement'))return null;return{image:CKEDITOR.TRISTATE_OFF};});}});CKEDITOR.config.image_removeLinkByEmptyURL=true;
Index: /trunk/filemanager/tp/ckeditor/plugins/styles/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/styles/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/styles/plugin.js	(revision 2000)
@@ -0,0 +1,10 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('styles',{requires:['selection']});CKEDITOR.editor.prototype.attachStyleStateChange=function(a,b){var c=this._.styleStateChangeCallbacks;if(!c){c=this._.styleStateChangeCallbacks=[];this.on('selectionChange',function(d){for(var e=0;e<c.length;e++){var f=c[e],g=f.style.checkActive(d.data.path)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF;if(f.state!==g){f.fn.call(this,g);f.state!==g;}}});}c.push({style:a,fn:b});};CKEDITOR.STYLE_BLOCK=1;CKEDITOR.STYLE_INLINE=2;CKEDITOR.STYLE_OBJECT=3;(function(){var a={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1},b={a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,ul:1},c=/\s*(?:;\s*|$)/;CKEDITOR.style=function(A,B){if(B){A=CKEDITOR.tools.clone(A);v(A.attributes,B);v(A.styles,B);}var C=this.element=(A.element||'*').toLowerCase();this.type=C=='#'||a[C]?CKEDITOR.STYLE_BLOCK:b[C]?CKEDITOR.STYLE_OBJECT:CKEDITOR.STYLE_INLINE;this._={definition:A};};CKEDITOR.style.prototype={apply:function(A){z.call(this,A,false);},remove:function(A){z.call(this,A,true);},applyToRange:function(A){var B=this;return(B.applyToRange=B.type==CKEDITOR.STYLE_INLINE?d:B.type==CKEDITOR.STYLE_BLOCK?f:null).call(B,A);},removeFromRange:function(A){return(this.removeFromRange=this.type==CKEDITOR.STYLE_INLINE?e:null).call(this,A);},applyToObject:function(A){t(A,this);},checkActive:function(A){switch(this.type){case CKEDITOR.STYLE_BLOCK:return this.checkElementRemovable(A.block||A.blockLimit,true);case CKEDITOR.STYLE_INLINE:var B=A.elements;for(var C=0,D;C<B.length;C++){D=B[C];if(D==A.block||D==A.blockLimit)continue;if(this.checkElementRemovable(D,true))return true;}}return false;},checkElementRemovable:function(A,B){if(!A)return false;var C=this._.definition,D;if(A.getName()==this.element){if(!B&&!A.hasAttributes())return true;D=w(C);if(D._length){for(var E in D){if(E=='_length')continue;var F=A.getAttribute(E);if(D[E]==(E=='style'?y(F,false):F)){if(!B)return true;}else if(B)return false;}if(B)return true;}else return true;}var G=x(this)[A.getName()];if(G){if(!(D=G.attributes))return true;for(var H=0;H<D.length;H++){E=D[H][0];var I=A.getAttribute(E);if(I){var J=D[H][1];if(J===null||typeof J=='string'&&I==J||J.test(I))return true;}}}return false;}};CKEDITOR.style.getStyleText=function(A){var B=A._ST;if(B)return B;B=A.styles;var C=A.attributes&&A.attributes.style||'';if(C.length)C=C.replace(c,';');for(var D in B)C+=(D+':'+B[D]).replace(c,';');if(C.length)C=y(C);return A._ST=C;};function d(A){var aa=this;var B=A.document;if(A.collapsed){var C=s(aa,B);
+A.insertNode(C);A.moveToPosition(C,CKEDITOR.POSITION_BEFORE_END);return;}var D=aa.element,E=aa._.definition,F,G=CKEDITOR.dtd[D]||(F=true,CKEDITOR.dtd.span),H=A.createBookmark();A.enlarge(CKEDITOR.ENLARGE_ELEMENT);A.trim();var I=A.getBoundaryNodes(),J=I.startNode,K=I.endNode.getNextSourceNode(true);if(!K){var L;K=L=B.createText('');K.insertAfter(A.endContainer);}var M=K.getParent();if(M&&M.getAttribute('_fck_bookmark'))K=M;if(K.equals(J)){K=K.getNextSourceNode(true);if(!K){K=L=B.createText('');K.insertAfter(J);}}var N=J,O,P;while(N){var Q=false;if(N.equals(K)){N=null;Q=true;}else{var R=N.type,S=R==CKEDITOR.NODE_ELEMENT?N.getName():null;if(S&&N.getAttribute('_fck_bookmark')){N=N.getNextSourceNode(true);continue;}if(!S||G[S]&&(N.getPosition(K)|CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED)==(CKEDITOR.POSITION_PRECEDING+CKEDITOR.POSITION_IDENTICAL+CKEDITOR.POSITION_IS_CONTAINED)){var T=N.getParent();if(T&&((T.getDtd()||CKEDITOR.dtd.span)[D]||F)){if(!O&&(!S||!CKEDITOR.dtd.$removeEmpty[S]||(N.getPosition(K)|CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED)==(CKEDITOR.POSITION_PRECEDING+CKEDITOR.POSITION_IDENTICAL+CKEDITOR.POSITION_IS_CONTAINED))){O=new CKEDITOR.dom.range(B);O.setStartBefore(N);}if(R==CKEDITOR.NODE_TEXT||R==CKEDITOR.NODE_ELEMENT&&!N.getChildCount()){var U=N,V;while(!U.$.nextSibling&&(V=U.getParent(),G[V.getName()])&&((V.getPosition(J)|CKEDITOR.POSITION_FOLLOWING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED)==(CKEDITOR.POSITION_FOLLOWING+CKEDITOR.POSITION_IDENTICAL+CKEDITOR.POSITION_IS_CONTAINED)))U=V;O.setEndAfter(U);if(!U.$.nextSibling)Q=true;if(!P)P=R!=CKEDITOR.NODE_TEXT||/[^\s\ufeff]/.test(N.getText());}}else Q=true;}else Q=true;N=N.getNextSourceNode();}if(Q&&P&&O&&!O.collapsed){var W=s(aa,B),X=O.getCommonAncestor();while(W&&X){if(X.getName()==D){for(var Y in E.attributes)if(W.getAttribute(Y)==X.getAttribute(Y))W.removeAttribute(Y);for(var Z in E.styles)if(W.getStyle(Z)==X.getStyle(Z))W.removeStyle(Z);if(!W.hasAttributes()){W=null;break;}}X=X.getParent();}if(W){O.extractContents().appendTo(W);n(aa,W);O.insertNode(W);q(W);if(!CKEDITOR.env.ie)W.$.normalize();}O=null;}}L&&L.remove();A.moveToBookmark(H);};function e(A){A.enlarge(CKEDITOR.ENLARGE_ELEMENT);var B=A.createBookmark(),C=B.startNode;if(A.collapsed){var D=new CKEDITOR.dom.elementPath(C.getParent()),E;for(var F=0,G;F<D.elements.length&&(G=D.elements[F]);F++){if(G==D.block||G==D.blockLimit)break;if(this.checkElementRemovable(G)){var H=A.checkBoundaryOfElement(G,CKEDITOR.END),I=!H&&A.checkBoundaryOfElement(G,CKEDITOR.START);
+if(I||H){E=G;E.match=I?'start':'end';}else{q(G);m(this,G);}}}if(E){var J=C;for(F=0;true;F++){var K=D.elements[F];if(K.equals(E))break;else if(K.match)continue;else K=K.clone();K.append(J);J=K;}J[E.match=='start'?'insertBefore':'insertAfter'](E);}}else{var L=B.endNode,M=this;function N(){var Q=new CKEDITOR.dom.elementPath(C.getParent()),R=new CKEDITOR.dom.elementPath(L.getParent()),S=null,T=null;for(var U=0;U<Q.elements.length;U++){var V=Q.elements[U];if(V==Q.block||V==Q.blockLimit)break;if(M.checkElementRemovable(V))S=V;}for(U=0;U<R.elements.length;U++){V=R.elements[U];if(V==R.block||V==R.blockLimit)break;if(M.checkElementRemovable(V))T=V;}if(T)L.breakParent(T);if(S)C.breakParent(S);};N();var O=C.getNext();while(!O.equals(L)){var P=O.getNextSourceNode();if(O.type==CKEDITOR.NODE_ELEMENT&&this.checkElementRemovable(O)){if(O.getName()==this.element)m(this,O);else o(O,x(this)[O.getName()]);if(P.type==CKEDITOR.NODE_ELEMENT&&P.contains(C)){N();P=C.getNext();}}O=P;}}A.moveToBookmark(B);};function f(A){var B=A.createBookmark(true),C=A.createIterator();C.enforceRealBlocks=true;var D,E=A.document,F;while(D=C.getNextParagraph()){var G=s(this,E);g(D,G);}A.moveToBookmark(B);};function g(A,B){var C=B.is('pre'),D=A.is('pre'),E=C&&!D,F=!C&&D;if(E)B=l(A,B);else if(F)B=k(i(A),B);else A.moveChildren(B);B.replace(A);if(C)h(B);};function h(A){var B;if(!((B=A.getPreviousSourceNode(true,CKEDITOR.NODE_ELEMENT))&&(B.is&&B.is('pre'))))return;var C=j(B.getHtml(),/\n$/,'')+'\n\n'+j(A.getHtml(),/^\n/,'');if(CKEDITOR.env.ie)A.$.outerHTML='<pre>'+C+'</pre>';else A.setHtml(C);B.remove();};function i(A){var B=/(\S\s*)\n(?:\s|(<span[^>]+_fck_bookmark.*?\/span>))*\n(?!$)/gi,C=A.getName(),D=j(A.getOuterHtml(),B,function(F,G,H){return G+'</pre>'+H+'<pre>';}),E=[];D.replace(/<pre>([\s\S]*?)<\/pre>/gi,function(F,G){E.push(G);});return E;};function j(A,B,C){var D='',E='';A=A.replace(/(^<span[^>]+_fck_bookmark.*?\/span>)|(<span[^>]+_fck_bookmark.*?\/span>$)/gi,function(F,G,H){G&&(D=G);H&&(E=H);return '';});return D+A.replace(B,C)+E;};function k(A,B){var C=new CKEDITOR.dom.documentFragment(B.getDocument());for(var D=0;D<A.length;D++){var E=A[D];E=E.replace(/(\r\n|\r)/g,'\n');E=j(E,/^[ \t]*\n/,'');E=j(E,/\n$/,'');E=j(E,/^[ \t]+|[ \t]+$/g,function(G,H,I){if(G.length==1)return '&nbsp;';else if(!H)return CKEDITOR.tools.repeat('&nbsp;',G.length-1)+' ';else return ' '+CKEDITOR.tools.repeat('&nbsp;',G.length-1);});E=E.replace(/\n/g,'<br>');E=E.replace(/[ \t]{2,}/g,function(G){return CKEDITOR.tools.repeat('&nbsp;',G.length-1)+' ';
+});var F=B.clone();F.setHtml(E);C.append(F);}return C;};function l(A,B){var C=A.getHtml();C=j(C,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,'');C=C.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'$1');C=C.replace(/([ \t\n\r]+|&nbsp;)/g,' ');C=C.replace(/<br\b[^>]*>/gi,'\n');if(CKEDITOR.env.ie){var D=A.getDocument().createElement('div');D.append(B);B.$.outerHTML='<pre>'+C+'</pre>';B=D.getFirst().remove();}else B.setHtml(C);return B;};function m(A,B){var C=A._.definition,D=C.attributes,E=C.styles,F=x(A);function G(){for(var I in D){if(I=='class'&&B.getAttribute(I)!=D[I])continue;B.removeAttribute(I);}};G();for(var H in E)B.removeStyle(H);D=F[B.getName()];if(D)G();p(B);};function n(A,B){var C=A._.definition,D=C.attributes,E=C.styles,F=x(A),G=B.getElementsByTag(A.element);for(var H=G.count();--H>=0;)m(A,G.getItem(H));for(var I in F)if(I!=A.element){G=B.getElementsByTag(I);for(H=G.count()-1;H>=0;H--){var J=G.getItem(H);o(J,F[I]);}}};function o(A,B){var C=B&&B.attributes;if(C)for(var D=0;D<C.length;D++){var E=C[D][0],F;if(F=A.getAttribute(E)){var G=C[D][1];if(G===null||G.test&&G.test(F)||typeof G=='string'&&F==G)A.removeAttribute(E);}}p(A);};function p(A){if(!A.hasAttributes()){var B=A.getFirst(),C=A.getLast();A.remove(true);if(B){q(B);if(C&&!B.equals(C))q(C);}}};function q(A){if(!A||A.type!=CKEDITOR.NODE_ELEMENT||!CKEDITOR.dtd.$removeEmpty[A.getName()])return;r(A,A.getNext(),true);r(A,A.getPrevious());};function r(A,B,C){if(B&&B.type==CKEDITOR.NODE_ELEMENT){var D=B.getAttribute('_fck_bookmark');if(D)B=C?B.getNext():B.getPrevious();if(B&&B.type==CKEDITOR.NODE_ELEMENT&&A.isIdentical(B)){var E=C?A.getLast():A.getFirst();if(D)(C?B.getPrevious():B.getNext()).move(A,!C);B.moveChildren(A,!C);B.remove();if(E)q(E);}}};function s(A,B){var C,D=A._.definition,E=A.element;if(E=='*')E='span';C=new CKEDITOR.dom.element(E,B);return t(C,A);};function t(A,B){var C=B._.definition,D=C.attributes,E=CKEDITOR.style.getStyleText(C);if(D)for(var F in D)A.setAttribute(F,D[F]);if(E)A.setAttribute('style',E);return A;};var u=/#\((.+?)\)/g;function v(A,B){for(var C in A)A[C]=A[C].replace(u,function(D,E){return B[E];});};function w(A){var B=A._AC;if(B)return B;B={};var C=0,D=A.attributes;if(D)for(var E in D){C++;B[E]=D[E];}var F=CKEDITOR.style.getStyleText(A);if(F){if(!B.style)C++;B.style=F;}B._length=C;return A._AC=B;};function x(A){if(A._.overrides)return A._.overrides;var B=A._.overrides={},C=A._.definition.overrides;if(C){if(!CKEDITOR.tools.isArray(C))C=[C];for(var D=0;D<C.length;D++){var E=C[D],F,G,H;
+if(typeof E=='string')F=E.toLowerCase();else{F=E.element?E.element.toLowerCase():A.element;H=E.attributes;}G=B[F]||(B[F]={});if(H){var I=G.attributes=G.attributes||[];for(var J in H)I.push([J.toLowerCase(),H[J]]);}}}return B;};function y(A,B){var C;if(B!==false){var D=new CKEDITOR.dom.element('span');D.setAttribute('style',A);C=D.getAttribute('style');}else C=A;return C.replace(/\s*([;:])\s*/,'$1').replace(/([^\s;])$/,'$1;').replace(/,\s+/g,',').toLowerCase();};function z(A,B){var C=A.getSelection(),D=C.getRanges(),E=B?this.removeFromRange:this.applyToRange;for(var F=0;F<D.length;F++)E.call(this,D[F]);C.selectRanges(D);};})();CKEDITOR.styleCommand=function(a){this.style=a;};CKEDITOR.styleCommand.prototype.exec=function(a){var c=this;a.focus();var b=a.document;if(b)if(c.state==CKEDITOR.TRISTATE_OFF)c.style.apply(b);else if(c.state==CKEDITOR.TRISTATE_ON)c.style.remove(b);return!!b;};
Index: /trunk/filemanager/tp/ckeditor/plugins/listblock/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/listblock/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/listblock/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('listblock',{requires:['panel'],onLoad:function(){CKEDITOR.ui.panel.prototype.addListBlock=function(a,b){return this.addBlock(a,new CKEDITOR.ui.listBlock(this.getHolderElement(),b));};CKEDITOR.ui.listBlock=CKEDITOR.tools.createClass({base:CKEDITOR.ui.panel.block,$:function(a,b){var d=this;d.base(a);d.multiSelect=!!b;var c=d.keys;c[40]='next';c[9]='next';c[38]='prev';c[CKEDITOR.SHIFT+9]='prev';c[32]='click';d._.pendingHtml=[];d._.items={};d._.groups={};},_:{close:function(){if(this._.started){this._.pendingHtml.push('</ul>');delete this._.started;}},getClick:function(){if(!this._.click)this._.click=CKEDITOR.tools.addFunction(function(a){var c=this;var b=true;if(c.multiSelect)b=c.toggle(a);else c.mark(a);if(c.onClick)c.onClick(a,b);},this);return this._.click;}},proto:{add:function(a,b,c){var f=this;var d=f._.pendingHtml,e='cke_'+CKEDITOR.tools.getNextNumber();if(!f._.started){d.push('<ul class=cke_panel_list>');f._.started=1;}f._.items[a]=e;d.push('<li id=',e,' class=cke_panel_listItem><a _cke_focus=1 hidefocus=true title="',c||a,'" href="javascript:void(\'',a,'\')" onclick="CKEDITOR.tools.callFunction(',f._.getClick(),",'",a,"'); return false;\">",b||a,'</a></li>');},startGroup:function(a){this._.close();var b='cke_'+CKEDITOR.tools.getNextNumber();this._.groups[a]=b;this._.pendingHtml.push('<h1 id=',b,' class=cke_panel_grouptitle>',a,'</h1>');},commit:function(){var a=this;a._.close();a.element.appendHtml(a._.pendingHtml.join(''));a._.pendingHtml=[];},toggle:function(a){var b=this.isMarked(a);if(b)this.unmark(a);else this.mark(a);return!b;},hideGroup:function(a){var b=this.element.getDocument().getById(this._.groups[a]),c=b&&b.getNext();if(b){b.setStyle('display','none');if(c&&c.getName()=='ul')c.setStyle('display','none');}},hideItem:function(a){this.element.getDocument().getById(this._.items[a]).setStyle('display','none');},showAll:function(){var a=this._.items,b=this._.groups,c=this.element.getDocument();for(var d in a)c.getById(a[d]).setStyle('display','');for(var e in b){var f=c.getById(b[e]),g=f.getNext();f.setStyle('display','');if(g&&g.getName()=='ul')g.setStyle('display','');}},mark:function(a){var b=this;if(!b.multiSelect)b.unmarkAll();b.element.getDocument().getById(b._.items[a]).addClass('cke_selected');},unmark:function(a){this.element.getDocument().getById(this._.items[a]).removeClass('cke_selected');},unmarkAll:function(){var a=this._.items,b=this.element.getDocument();for(var c in a)b.getById(a[c]).removeClass('cke_selected');
+},isMarked:function(a){return this.element.getDocument().getById(this._.items[a]).hasClass('cke_selected');},focus:function(a){this._.focusIndex=-1;if(a){var b=this.element.getDocument().getById(this._.items[a]).getFirst(),c=this.element.getElementsByTag('a'),d,e=-1;while(d=c.getItem(++e))if(d.equals(b)){this._.focusIndex=e;break;}setTimeout(function(){b.focus();},0);}}}});}});
Index: /trunk/filemanager/tp/ckeditor/plugins/htmldataprocessor/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/htmldataprocessor/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/htmldataprocessor/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=/^[\t\r\n ]*(?:&nbsp;|\xa0)$/,b='{cke_protected}';function c(B){var C=B.children.length,D=B.children[C-1];while(D&&D.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(D.value))D=B.children[--C];return D;};function d(B,C){var D=B.children,E=c(B);if(E){if((C||!CKEDITOR.env.ie)&&(E.type==CKEDITOR.NODE_ELEMENT&&E.name=='br'))D.pop();if(E.type==CKEDITOR.NODE_TEXT&&a.test(E.value))D.pop();}};function e(B){var C=c(B);return!C||C.type==CKEDITOR.NODE_ELEMENT&&C.name=='br';};function f(B){d(B,true);if(e(B))if(CKEDITOR.env.ie)B.add(new CKEDITOR.htmlParser.text('\xa0'));else B.add(new CKEDITOR.htmlParser.element('br',{}));};function g(B){d(B);if(e(B))B.add(new CKEDITOR.htmlParser.text('\xa0'));};var h=CKEDITOR.dtd,i=CKEDITOR.tools.extend({},h.$block,h.$listItem,h.$tableContent);for(var j in i)if(!('br' in h[j]))delete i[j];delete i.pre;var k={attributeNames:[[/^on/,'_cke_pa_on']]},l={elements:{}};for(j in i)l.elements[j]=f;var m={elementNames:[[/^cke:/,''],[/^\?xml:namespace$/,'']],attributeNames:[[/^_cke_(saved|pa)_/,''],[/^_cke.*/,'']],elements:{$:function(B){var C=B.attributes;if(C){var D=['name','href','src'],E;for(var F=0;F<D.length;F++){E='_cke_saved_'+D[F];E in C&&delete C[D[F]];}}},embed:function(B){var C=B.parent;if(C&&C.name=='object'){var D=C.attributes.width,E=C.attributes.height;D&&(B.attributes.width=D);E&&(B.attributes.height=E);}},param:function(B){B.children=[];B.isEmpty=true;return B;},a:function(B){if(!(B.children.length||B.attributes.name||B.attributes._cke_saved_name))return false;}},attributes:{'class':function(B,C){return CKEDITOR.tools.ltrim(B.replace(/(?:^|\s+)cke_[^\s]*/g,''))||false;}},comment:function(B){if(B.substr(0,b.length)==b)return new CKEDITOR.htmlParser.cdata(decodeURIComponent(B.substr(b.length)));return B;}},n={elements:{}};for(j in i)n.elements[j]=g;if(CKEDITOR.env.ie)m.attributes.style=function(B,C){return B.toLowerCase();};var o=/<(?:a|area|img|input).*?\s((?:href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))/gi;function p(B){return B.replace(o,'$& _cke_saved_$1');};var q=/<(style)(?=[ >])[^>]*>[^<]*<\/\1>/gi,r=/<cke:encoded>([^<]*)<\/cke:encoded>/gi,s=/(<\/?)((?:object|embed|param).*?>)/gi,t=/<cke:param(.*?)\/>/gi;function u(B){return '<cke:encoded>'+encodeURIComponent(B)+'</cke:encoded>';};function v(B){return B.replace(q,u);};function w(B){return B.replace(s,'$1cke:$2');};function x(B){return B.replace(t,'<cke:param$1></cke:param>');};function y(B,C){return decodeURIComponent(C);};function z(B){return B.replace(r,y);
+};function A(B,C){var D=[],E=/<\!--\{cke_temp\}(\d*?)-->/g,F=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi].concat(C);for(var G=0;G<F.length;G++)B=B.replace(F[G],function(H){H=H.replace(E,function(I,J){return D[J];});return '<!--{cke_temp}'+(D.push(H)-1)+'-->';});B=B.replace(E,function(H,I){return '<!--'+b+encodeURIComponent(D[I]).replace(/--/g,'%2D%2D')+'-->';});return B;};CKEDITOR.plugins.add('htmldataprocessor',{requires:['htmlwriter'],init:function(B){var C=B.dataProcessor=new CKEDITOR.htmlDataProcessor(B);C.writer.forceSimpleAmpersand=B.config.forceSimpleAmpersand;C.dataFilter.addRules(k);C.dataFilter.addRules(l);C.htmlFilter.addRules(m);C.htmlFilter.addRules(n);}});CKEDITOR.htmlDataProcessor=function(B){var C=this;C.editor=B;C.writer=new CKEDITOR.htmlWriter();C.dataFilter=new CKEDITOR.htmlParser.filter();C.htmlFilter=new CKEDITOR.htmlParser.filter();};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(B,C){B=A(B,this.editor.config.protectedSource);B=p(B);if(CKEDITOR.env.ie)B=v(B);B=w(B);B=x(B);var D=document.createElement('div');D.innerHTML='a'+B;B=D.innerHTML.substr(1);if(CKEDITOR.env.ie)B=z(B);var E=CKEDITOR.htmlParser.fragment.fromHtml(B,C),F=new CKEDITOR.htmlParser.basicWriter();E.writeHtml(F,this.dataFilter);return F.getHtml(true);},toDataFormat:function(B,C){var D=this.writer,E=CKEDITOR.htmlParser.fragment.fromHtml(B,C);D.reset();E.writeHtml(D,this.htmlFilter);return D.getHtml(true);}};})();CKEDITOR.config.forceSimpleAmpersand=false;
Index: /trunk/filemanager/tp/ckeditor/plugins/colordialog/dialogs/colordialog.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/colordialog/dialogs/colordialog.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/colordialog/dialogs/colordialog.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('colordialog',function(a){var b=CKEDITOR.dom.element,c=CKEDITOR.document,d=CKEDITOR.tools,e=a.lang.colordialog,f;function g(){return{type:'html',html:'&nbsp;'};};var h=new b('table');k();var i=function(n){var o=new b(n.data.getTarget()).getAttribute('title');c.getById('hicolor').setStyle('background-color',o);c.getById('hicolortext').setHtml(o);},j=function(n){var o=new b(n.data.getTarget()).getAttribute('title');f.getContentElement('picker','selectedColor').setValue(o);};function k(){var n=['00','33','66','99','cc','ff'];function o(t,u){for(var v=t;v<t+3;v++){var w=h.$.insertRow(-1);for(var x=u;x<u+3;x++)for(var y=0;y<6;y++)p(w,'#'+n[x]+n[y]+n[v]);}};function p(t,u){var v=new b(t.insertCell(-1));v.setAttribute('class','ColorCell');v.setStyle('background-color',u);v.setStyle('width','15px');v.setStyle('height','15px');v.setAttribute('title',u);};o(0,0);o(3,0);o(0,3);o(3,3);var q=h.$.insertRow(-1);for(var r=0;r<6;r++)p(q,'#'+n[r]+n[r]+n[r]);for(var s=0;s<12;s++)p(q,'#000000');};function l(){c.getById('selhicolor').removeStyle('background-color');f.getContentElement('picker','selectedColor').setValue('');};var m=d.addFunction(function(){c.getById('hicolor').removeStyle('background-color');c.getById('hicolortext').setHtml('&nbsp;');});return{title:e.title,minWidth:360,minHeight:220,onLoad:function(){f=this;},contents:[{id:'picker',label:e.title,accessKey:'I',elements:[{type:'hbox',padding:0,widths:['70%','10%','30%'],children:[{type:'html',html:'<table onmouseout="CKEDITOR.tools.callFunction( '+m+' );">'+h.getHtml()+'</table>',onLoad:function(){var n=CKEDITOR.document.getById(this.domId);n.on('mouseover',i);n.on('click',j);}},g(),{type:'vbox',padding:0,widths:['70%','5%','25%'],children:[{type:'html',html:'<span>'+e.highlight+'</span>\t\t\t\t\t\t\t\t\t\t\t\t<div id="hicolor" style="border: 1px solid; height: 74px; width: 74px;"></div>\t\t\t\t\t\t\t\t\t\t\t\t<div id="hicolortext">&nbsp;</div>\t\t\t\t\t\t\t\t\t\t\t\t<span>'+e.selected+'</span>\t\t\t\t\t\t\t\t\t\t\t\t<div id="selhicolor" style="border: 1px solid; height: 20px; width: 74px;"></div>'},{type:'text',id:'selectedColor',style:'width: 74px',onChange:function(){try{c.getById('selhicolor').setStyle('background-color',this.getValue());}catch(n){l();}}},g(),{type:'button',id:'clear',style:'margin-top: 5px',label:e.clear,onClick:l}]}]}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/colordialog/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/colordialog/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/colordialog/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){CKEDITOR.plugins.colordialog={init:function(a){a.addCommand('colordialog',new CKEDITOR.dialogCommand('colordialog'));CKEDITOR.dialog.add('colordialog',this.path+'dialogs/colordialog.js');}};CKEDITOR.plugins.add('colordialog',CKEDITOR.plugins.colordialog);})();
Index: /trunk/filemanager/tp/ckeditor/plugins/clipboard/dialogs/paste.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/clipboard/dialogs/paste.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/clipboard/dialogs/paste.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('paste',function(a){var b=CKEDITOR.env.isCustomDomain();return{title:a.lang.clipboard.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?370:350,minHeight:CKEDITOR.env.quirks?250:245,htmlToLoad:'<!doctype html><script type="text/javascript">window.onload = function(){if ( '+CKEDITOR.env.ie+' ) '+'document.body.contentEditable = "true";'+'else '+'document.designMode = "on";'+'var iframe = new window.parent.CKEDITOR.dom.element( frameElement );'+'var dialog = iframe.getCustomData( "dialog" );'+''+'iframe.getFrameDocument().on( "keydown", function( e )\t\t\t\t\t\t{\t\t\t\t\t\t\tif ( e.data.getKeystroke() == 27 )\t\t\t\t\t\t\t\tdialog.hide();\t\t\t\t\t\t});'+'};'+'</script><style>body { margin: 3px; height: 95%; } </style><body></body>',onShow:function(){var h=this;if(CKEDITOR.env.ie)h.getParentEditor().document.getBody().$.contentEditable='false';h.parts.dialog.$.offsetHeight;var c=h.getContentElement('general','editing_area').getElement(),d=CKEDITOR.dom.element.createFromHtml('<iframe src="javascript:void(0)" frameborder="0" allowtransparency="1"></iframe>'),e=h.getParentEditor().lang;d.setStyles({width:'346px',height:'130px','background-color':'white',border:'1px solid black'});d.setCustomData('dialog',h);var f=e.editorTitle.replace('%1',e.clipboard.title);if(CKEDITOR.env.ie)c.setHtml('<legend style="position:absolute;top:-1000000px;left:-1000000px;">'+CKEDITOR.tools.htmlEncode(f)+'</legend>');else{c.setHtml('');c.setAttributes({role:'region',title:f});d.setAttributes({role:'region',title:' '});}c.append(d);if(CKEDITOR.env.ie)c.setStyle('height',d.$.offsetHeight+2+'px');if(b){CKEDITOR._cke_htmlToLoad=h.definition.htmlToLoad;d.setAttribute('src','javascript:void( (function(){document.open();document.domain="'+document.domain+'";'+'document.write( window.parent.CKEDITOR._cke_htmlToLoad );'+'delete window.parent.CKEDITOR._cke_htmlToLoad;'+'document.close();'+'})() )');}else{var g=d.$.contentWindow.document;g.open();g.write(h.definition.htmlToLoad);g.close();}},onHide:function(){if(CKEDITOR.env.ie)this.getParentEditor().document.getBody().$.contentEditable='true';},onLoad:function(){if((CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&(a.lang.dir=='rtl'))this.parts.contents.setStyle('overflow','hidden');},onOk:function(){var c=this.getContentElement('general','editing_area').getElement(),d=c.getElementsByTag('iframe').getItem(0),e=this.getParentEditor(),f=d.$.contentWindow.document.body.innerHTML;setTimeout(function(){e.insertHtml(f);},0);},contents:[{id:'general',label:a.lang.common.generalTab,elements:[{type:'html',id:'securityMsg',html:'<div style="white-space:normal;width:340px;">'+a.lang.clipboard.securityMsg+'</div>'},{type:'html',id:'pasteMsg',html:'<div style="white-space:normal;width:340px;">'+a.lang.clipboard.pasteMsg+'</div>'},{type:'html',id:'editing_area',style:'width: 100%; height: 100%;',html:'<fieldset></fieldset>',focus:function(){var c=this.getElement(),d=c.getElementsByTag('iframe');
+if(d.count()<1)return;d=d.getItem(0);setTimeout(function(){d.$.contentWindow.focus();},500);}}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/clipboard/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/clipboard/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/clipboard/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=function(f,g){var h=f.document,i=h.getBody(),j=false,k=function(){j=true;};i.on(g,k);h.$.execCommand(g);i.removeListener(g,k);return j;},b=CKEDITOR.env.ie?function(f,g){return a(f,g);}:function(f,g){try{return f.document.$.execCommand(g);}catch(h){return false;}},c=function(f){this.type=f;this.canUndo=this.type=='cut';};c.prototype={exec:function(f,g){var h=b(f,this.type);if(!h)alert(f.lang.clipboard[this.type+'Error']);return h;}};var d=CKEDITOR.env.ie?{exec:function(f,g){f.focus();if(!f.fire('beforePaste')&&!a(f,'paste'))f.openDialog('paste');}}:{exec:function(f){try{if(!f.fire('beforePaste')&&!f.document.$.execCommand('Paste',false,null))throw 0;}catch(g){f.openDialog('paste');}}},e=function(f){switch(f.data.keyCode){case CKEDITOR.CTRL+86:case CKEDITOR.SHIFT+45:var g=this;g.fire('saveSnapshot');if(g.fire('beforePaste'))f.cancel();setTimeout(function(){g.fire('saveSnapshot');},0);return;case CKEDITOR.CTRL+88:case CKEDITOR.SHIFT+46:g=this;g.fire('saveSnapshot');setTimeout(function(){g.fire('saveSnapshot');},0);}};CKEDITOR.plugins.add('clipboard',{init:function(f){function g(i,j,k,l){var m=f.lang[j];f.addCommand(j,k);f.ui.addButton(i,{label:m,command:j});if(f.addMenuItems)f.addMenuItem(j,{label:m,command:j,group:'clipboard',order:l});};g('Cut','cut',new c('cut'),1);g('Copy','copy',new c('copy'),4);g('Paste','paste',d,8);CKEDITOR.dialog.add('paste',CKEDITOR.getUrl(this.path+'dialogs/paste.js'));f.on('key',e,f);if(f.contextMenu){function h(i){return f.document.$.queryCommandEnabled(i)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED;};f.contextMenu.addListener(function(){return{cut:h('Cut'),copy:h('Cut'),paste:CKEDITOR.env.webkit?CKEDITOR.TRISTATE_OFF:h('Paste')};});}}});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/panel/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/panel/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/panel/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('panel',{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_PANEL,CKEDITOR.ui.panel.handler);}});CKEDITOR.UI_PANEL=2;CKEDITOR.ui.panel=function(a,b){var c=this;if(b)CKEDITOR.tools.extend(c,b);CKEDITOR.tools.extend(c,{className:'',css:[]});c.id=CKEDITOR.tools.getNextNumber();c.document=a;c._={blocks:{}};};CKEDITOR.ui.panel.handler={create:function(a){return new CKEDITOR.ui.panel(a);}};CKEDITOR.ui.panel.prototype={renderHtml:function(a){var b=[];this.render(a,b);return b.join('');},render:function(a,b){var d=this;var c='cke_'+d.id;b.push('<div class="',a.skinClass,'" lang="',a.langCode,'" style="display:none;z-index:'+(a.config.baseFloatZIndex+1)+'">'+'<div'+' id=',c,' dir=',a.lang.dir,' class="cke_panel cke_',a.lang.dir);if(d.className)b.push(' ',d.className);b.push('">');if(d.forceIFrame||d.css.length){b.push('<iframe id="',c,'_frame" frameborder="0" src="javascript:void(');b.push(CKEDITOR.env.isCustomDomain()?"(function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})()':'0');b.push(')"></iframe>');}b.push('</div></div>');return c;},getHolderElement:function(){var a=this._.holder;if(!a){if(this.forceIFrame||this.css.length){var b=this.document.getById('cke_'+this.id+'_frame'),c=b.getParent(),d=c.getAttribute('dir'),e=c.getParent().getAttribute('class'),f=c.getParent().getAttribute('lang'),g=b.getFrameDocument();g.$.open();if(CKEDITOR.env.isCustomDomain())g.$.domain=document.domain;var h=CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function(j){this.isLoaded=true;if(this.onLoad)this.onLoad();},this));g.$.write('<!DOCTYPE html><html dir="'+d+'" class="'+e+'_container" lang="'+f+'">'+'<head>'+'<style>.'+e+'_container{visibility:hidden}</style>'+'</head>'+'<body class="cke_'+d+' cke_panel_frame '+CKEDITOR.env.cssClass+'" style="margin:0;padding:0"'+' onload="( window.CKEDITOR || window.parent.CKEDITOR ).tools.callFunction('+h+');">'+'</body>'+'<link type="text/css" rel=stylesheet href="'+this.css.join('"><link type="text/css" rel="stylesheet" href="')+'">'+'</html>');g.$.close();var i=g.getWindow();i.$.CKEDITOR=CKEDITOR;g.on('keydown',function(j){var l=this;var k=j.data.getKeystroke();if(l._.onKeyDown&&l._.onKeyDown(k)===false){j.data.preventDefault();return;}if(k==27)l.onEscape&&l.onEscape();},this);a=g.getBody();}else a=this.document.getById('cke_'+this.id);this._.holder=a;}return a;},addBlock:function(a,b){var c=this;b=c._.blocks[a]=b||new CKEDITOR.ui.panel.block(c.getHolderElement());if(!c._.currentBlock)c.showBlock(a);
+return b;},getBlock:function(a){return this._.blocks[a];},showBlock:function(a){var e=this;var b=e._.blocks,c=b[a],d=e._.currentBlock;if(d)d.hide();e._.currentBlock=c;c._.focusIndex=-1;e._.onKeyDown=c.onKeyDown&&CKEDITOR.tools.bind(c.onKeyDown,c);c.show();return c;}};CKEDITOR.ui.panel.block=CKEDITOR.tools.createClass({$:function(a){var b=this;b.element=a.append(a.getDocument().createElement('div',{attributes:{'class':'cke_panel_block'},styles:{display:'none'}}));b.keys={};b._.focusIndex=-1;b.element.disableContextMenu();},_:{},proto:{show:function(){this.element.setStyle('display','');},hide:function(){var a=this;if(!a.onHide||a.onHide.call(a)!==true)a.element.setStyle('display','none');},onKeyDown:function(a){var f=this;var b=f.keys[a];switch(b){case 'next':var c=f._.focusIndex,d=f.element.getElementsByTag('a'),e;while(e=d.getItem(++c))if(e.getAttribute('_cke_focus')&&e.$.offsetWidth){f._.focusIndex=c;e.focus();break;}return false;case 'prev':c=f._.focusIndex;d=f.element.getElementsByTag('a');while(c>0&&(e=d.getItem(--c)))if(e.getAttribute('_cke_focus')&&e.$.offsetWidth){f._.focusIndex=c;e.focus();break;}return false;case 'click':c=f._.focusIndex;e=c>=0&&f.element.getElementsByTag('a').getItem(c);if(e)e.$.click?e.$.click():e.$.onclick();return false;}return true;}}});
Index: /trunk/filemanager/tp/ckeditor/plugins/menubutton/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/menubutton/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/menubutton/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('menubutton',{requires:['button','contextmenu'],beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_MENUBUTTON,CKEDITOR.ui.menuButton.handler);}});CKEDITOR.UI_MENUBUTTON=5;(function(){var a=function(b){var c=this._;if(c.state===CKEDITOR.TRISTATE_DISABLED)return;c.previousState=c.state;var d=c.menu;if(!d){d=c.menu=new CKEDITOR.plugins.contextMenu(b);d.onHide=CKEDITOR.tools.bind(function(){this.setState(c.previousState);},this);if(this.onMenu)d.addListener(this.onMenu);}if(c.on){d.hide();return;}this.setState(CKEDITOR.TRISTATE_ON);d.show(CKEDITOR.document.getById(this._.id),4);};CKEDITOR.ui.menuButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(b){var c=b.panel;delete b.panel;this.base(b);this.hasArrow=true;this.click=a;},statics:{handler:{create:function(b){return new CKEDITOR.ui.menuButton(b);}}}});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/htmlwriter/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/htmlwriter/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/htmlwriter/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('htmlwriter');CKEDITOR.htmlWriter=CKEDITOR.tools.createClass({base:CKEDITOR.htmlParser.basicWriter,$:function(){var c=this;c.base();c.indentationChars='\t';c.selfClosingEnd=' />';c.lineBreakChars='\n';c.forceSimpleAmpersand=false;c.sortAttributes=true;c._.indent=false;c._.indentation='';c._.rules={};var a=CKEDITOR.dtd;for(var b in CKEDITOR.tools.extend({},a.$block,a.$listItem,a.$tableContent))c.setRules(b,{indent:true,breakBeforeOpen:true,breakAfterOpen:true,breakBeforeClose:!a[b]['#'],breakAfterClose:true});c.setRules('br',{breakAfterOpen:true});c.setRules('pre',{indent:false});},proto:{openTag:function(a,b){var d=this;var c=d._.rules[a];if(d._.indent)d.indentation();else if(c&&c.breakBeforeOpen){d.lineBreak();d.indentation();}d._.output.push('<',a);},openTagClose:function(a,b){var d=this;var c=d._.rules[a];if(b)d._.output.push(d.selfClosingEnd);else{d._.output.push('>');if(c&&c.indent)d._.indentation+=d.indentationChars;}if(c&&c.breakAfterOpen)d.lineBreak();},attribute:function(a,b){if(this.forceSimpleAmpersand)b=b.replace(/&amp;/,'&');this._.output.push(' ',a,'="',b,'"');},closeTag:function(a){var c=this;var b=c._.rules[a];if(b&&b.indent)c._.indentation=c._.indentation.substr(c.indentationChars.length);if(c._.indent)c.indentation();else if(b&&b.breakBeforeClose){c.lineBreak();c.indentation();}c._.output.push('</',a,'>');if(b&&b.breakAfterClose)c.lineBreak();},text:function(a){if(this._.indent){this.indentation();a=CKEDITOR.tools.ltrim(a);}this._.output.push(a);},comment:function(a){if(this._.indent)this.indentation();this._.output.push('<!--',a,'-->');},lineBreak:function(){var a=this;if(a._.output.length>0)a._.output.push(a.lineBreakChars);a._.indent=true;},indentation:function(){this._.output.push(this._.indentation);this._.indent=false;},setRules:function(a,b){this._.rules[a]=b;}}});
Index: /trunk/filemanager/tp/ckeditor/plugins/menu/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/menu/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/menu/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('menu',{beforeInit:function(a){var b=a.config.menu_groups.split(','),c={};for(var d=0;d<b.length;d++)c[b[d]]=d+1;a._.menuGroups=c;a._.menuItems={};},requires:['floatpanel']});CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{addMenuGroup:function(a,b){this._.menuGroups[a]=b||100;},addMenuItem:function(a,b){if(this._.menuGroups[b.group])this._.menuItems[a]=new CKEDITOR.menuItem(this,a,b);},addMenuItems:function(a){for(var b in a)this.addMenuItem(b,a[b]);},getMenuItem:function(a){return this._.menuItems[a];}});(function(){CKEDITOR.menu=CKEDITOR.tools.createClass({$:function(b,c){var d=this;d.id='cke_'+CKEDITOR.tools.getNextNumber();d.editor=b;d.items=[];d._.level=c||1;},_:{showSubMenu:function(b){var h=this;var c=h._.subMenu,d=h.items[b],e=d.getItems&&d.getItems();if(!e){h._.panel.hideChild();return;}if(c)c.removeAll();else{c=h._.subMenu=new CKEDITOR.menu(h.editor,h._.level+1);c.parent=h;c.onClick=CKEDITOR.tools.bind(h.onClick,h);}for(var f in e)c.add(h.editor.getMenuItem(f));var g=h._.panel.getBlock(h.id).element.getDocument().getById(h.id+String(b));c.show(g,2);}},proto:{add:function(b){if(!b.order)b.order=this.items.length;this.items.push(b);},removeAll:function(){this.items=[];},show:function(b,c,d,e){var f=this.items,g=this.editor,h=this._.panel,i=this._.element;if(!h){h=this._.panel=new CKEDITOR.ui.floatPanel(this.editor,CKEDITOR.document.getBody(),{css:[CKEDITOR.getUrl(g.skinPath+'editor.css')],level:this._.level-1,className:g.skinClass+' cke_contextmenu'},this._.level);h.onEscape=CKEDITOR.tools.bind(function(){this.onEscape&&this.onEscape();this.hide();},this);h.onHide=CKEDITOR.tools.bind(function(){this.onHide&&this.onHide();},this);var j=h.addBlock(this.id);j.autoSize=true;var k=j.keys;k[40]='next';k[9]='next';k[38]='prev';k[CKEDITOR.SHIFT+9]='prev';k[32]='click';k[39]='click';i=this._.element=j.element;i.addClass(g.skinClass);var l=i.getDocument();l.getBody().setStyle('overflow','hidden');l.getElementsByTag('html').getItem(0).setStyle('overflow','hidden');this._.itemOverFn=CKEDITOR.tools.addFunction(function(r){var s=this;clearTimeout(s._.showSubTimeout);s._.showSubTimeout=CKEDITOR.tools.setTimeout(s._.showSubMenu,g.config.menu_subMenuDelay,s,[r]);},this);this._.itemOutFn=CKEDITOR.tools.addFunction(function(r){clearTimeout(this._.showSubTimeout);},this);this._.itemClickFn=CKEDITOR.tools.addFunction(function(r){var t=this;var s=t.items[r];if(s.state==CKEDITOR.TRISTATE_DISABLED){t.hide();return;}if(s.getItems)t._.showSubMenu(r);else t.onClick&&t.onClick(s);
+},this);}a(f);var m=['<div class="cke_menu">'],n=f.length,o=n&&f[0].group;for(var p=0;p<n;p++){var q=f[p];if(o!=q.group){m.push('<div class="cke_menuseparator"></div>');o=q.group;}q.render(this,p,m);}m.push('</div>');i.setHtml(m.join(''));if(this.parent)this.parent._.panel.showAsChild(h,this.id,b,c,d,e);else h.showBlock(this.id,b,c,d,e);g.fire('menuShow',[h]);},hide:function(){this._.panel&&this._.panel.hide();}}});function a(b){b.sort(function(c,d){if(c.group<d.group)return-1;else if(c.group>d.group)return 1;return c.order<d.order?-1:c.order>d.order?1:0;});};})();CKEDITOR.menuItem=CKEDITOR.tools.createClass({$:function(a,b,c){var d=this;CKEDITOR.tools.extend(d,c,{order:0,className:'cke_button_'+b});d.group=a._.menuGroups[d.group];d.editor=a;d.name=b;},proto:{render:function(a,b,c){var i=this;var d=a.id+String(b),e=typeof i.state=='undefined'?CKEDITOR.TRISTATE_OFF:i.state,f=' cke_'+(e==CKEDITOR.TRISTATE_ON?'on':e==CKEDITOR.TRISTATE_DISABLED?'disabled':'off'),g=i.label;if(e==CKEDITOR.TRISTATE_DISABLED)g=i.editor.lang.common.unavailable.replace('%1',g);if(i.className)f+=' '+i.className;c.push('<span class="cke_menuitem"><a id="',d,'" class="',f,'" href="javascript:void(\'',(i.label||'').replace("'",''),'\')" title="',i.label,'" tabindex="-1"_cke_focus=1 hidefocus="true"');if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)c.push(' onkeypress="return false;"');if(CKEDITOR.env.gecko)c.push(' onblur="this.style.cssText = this.style.cssText;"');var h=(i.iconOffset||0)*(-16);c.push(' onmouseover="CKEDITOR.tools.callFunction(',a._.itemOverFn,',',b,');" onmouseout="CKEDITOR.tools.callFunction(',a._.itemOutFn,',',b,');" onclick="CKEDITOR.tools.callFunction(',a._.itemClickFn,',',b,'); return false;"><span class="cke_icon_wrapper"><span class="cke_icon"'+(i.icon?' style="background-image:url('+CKEDITOR.getUrl(i.icon)+');background-position:0 '+h+'px;"':'')+'></span></span>'+'<span class="cke_label">');if(i.getItems)c.push('<span class="cke_menuarrow"></span>');c.push(g,'</span></a></span>');}}});CKEDITOR.config.menu_subMenuDelay=400;CKEDITOR.config.menu_groups='clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea';
Index: /trunk/filemanager/tp/ckeditor/plugins/undo/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/undo/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/undo/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){CKEDITOR.plugins.add('undo',{requires:['selection','wysiwygarea'],init:function(c){var d=new b(c),e=c.addCommand('undo',{exec:function(){if(d.undo()){c.selectionChange();this.fire('afterUndo');}},state:CKEDITOR.TRISTATE_DISABLED,canUndo:false}),f=c.addCommand('redo',{exec:function(){if(d.redo()){c.selectionChange();this.fire('afterRedo');}},state:CKEDITOR.TRISTATE_DISABLED,canUndo:false});d.onChange=function(){e.setState(d.undoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);f.setState(d.redoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);};function g(h){if(d.enabled&&h.data.command.canUndo!==false)d.save();};c.on('beforeCommandExec',g);c.on('afterCommandExec',g);c.on('saveSnapshot',function(){d.save();});c.on('contentDom',function(){c.document.on('keydown',function(h){if(!h.data.$.ctrlKey&&!h.data.$.metaKey)d.type(h);});});c.on('beforeModeUnload',function(){c.mode=='wysiwyg'&&d.save(true);});c.on('mode',function(){d.enabled=c.mode=='wysiwyg';d.onChange();});c.ui.addButton('Undo',{label:c.lang.undo,command:'undo'});c.ui.addButton('Redo',{label:c.lang.redo,command:'redo'});c.resetUndo=function(){d.reset();c.fire('saveSnapshot');};}});function a(c){var e=this;var d=c.getSelection();e.contents=c.getSnapshot();e.bookmarks=d&&d.createBookmarks2(true);if(CKEDITOR.env.ie)e.contents=e.contents.replace(/\s+_cke_expando=".*?"/g,'');};a.prototype={equals:function(c,d){if(this.contents!=c.contents)return false;if(d)return true;var e=this.bookmarks,f=c.bookmarks;if(e||f){if(!e||!f||e.length!=f.length)return false;for(var g=0;g<e.length;g++){var h=e[g],i=f[g];if(h.startOffset!=i.startOffset||h.endOffset!=i.endOffset||!CKEDITOR.tools.arrayCompare(h.start,i.start)||!CKEDITOR.tools.arrayCompare(h.end,i.end))return false;}}return true;}};function b(c){this.editor=c;this.reset();};b.prototype={type:function(c){var d=c&&c.data.getKeystroke(),e={8:1,46:1},f=d in e,g=this.lastKeystroke in e,h=f&&d==this.lastKeystroke,i={37:1,38:1,39:1,40:1},j=d in i,k=this.lastKeystroke in i,l=!f&&!j,m=f&&!h,n=!this.typing||l&&(g||k);if(n||m){var o=new a(this.editor);CKEDITOR.tools.setTimeout(function(){var q=this;var p=q.editor.getSnapshot();if(CKEDITOR.env.ie)p=p.replace(/\s+_cke_expando=".*?"/g,'');if(o.contents!=p){if(!q.save(false,o,false))q.snapshots.splice(q.index+1,q.snapshots.length-q.index-1);q.hasUndo=true;q.hasRedo=false;q.typesCount=1;q.modifiersCount=1;q.onChange();}},0,this);}this.lastKeystroke=d;if(f){this.typesCount=0;this.modifiersCount++;if(this.modifiersCount>25){this.save();
+this.modifiersCount=1;}}else if(!j){this.modifiersCount=0;this.typesCount++;if(this.typesCount>25){this.save();this.typesCount=1;}}this.typing=true;},reset:function(){var c=this;c.lastKeystroke=0;c.snapshots=[];c.index=-1;c.limit=c.editor.config.undoStackSize;c.currentImage=null;c.hasUndo=false;c.hasRedo=false;c.resetType();},resetType:function(){var c=this;c.typing=false;delete c.lastKeystroke;c.typesCount=0;c.modifiersCount=0;},fireChange:function(){var c=this;c.hasUndo=!!c.getNextImage(true);c.hasRedo=!!c.getNextImage(false);c.resetType();c.onChange();},save:function(c,d,e){var g=this;var f=g.snapshots;if(!d)d=new a(g.editor);if(g.currentImage&&d.equals(g.currentImage,c))return false;f.splice(g.index+1,f.length-g.index-1);if(f.length==g.limit)f.shift();g.index=f.push(d)-1;g.currentImage=d;if(e!==false)g.fireChange();return true;},restoreImage:function(c){var e=this;e.editor.loadSnapshot(c.contents);if(c.bookmarks)e.editor.getSelection().selectBookmarks(c.bookmarks);else if(CKEDITOR.env.ie){var d=e.editor.document.getBody().$.createTextRange();d.collapse(true);d.select();}e.index=c.index;e.currentImage=c;e.fireChange();},getNextImage:function(c){var h=this;var d=h.snapshots,e=h.currentImage,f,g;if(e)if(c)for(g=h.index-1;g>=0;g--){f=d[g];if(!e.equals(f,true)){f.index=g;return f;}}else for(g=h.index+1;g<d.length;g++){f=d[g];if(!e.equals(f,true)){f.index=g;return f;}}return null;},redoable:function(){return this.enabled&&this.hasRedo;},undoable:function(){return this.enabled&&this.hasUndo;},undo:function(){var d=this;if(d.undoable()){d.save(true);var c=d.getNextImage(true);if(c)return d.restoreImage(c),true;}return false;},redo:function(){var d=this;if(d.redoable()){d.save(true);if(d.redoable()){var c=d.getNextImage(false);if(c)return d.restoreImage(c),true;}}return false;}};})();CKEDITOR.config.undoStackSize=20;
Index: /trunk/filemanager/tp/ckeditor/plugins/removeformat/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/removeformat/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/removeformat/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('removeformat',{requires:['selection'],init:function(a){a.addCommand('removeFormat',CKEDITOR.plugins.removeformat.commands.removeformat);a.ui.addButton('RemoveFormat',{label:a.lang.removeFormat,command:'removeFormat'});}});CKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(a){var b=a._.removeFormatRegex||(a._.removeFormatRegex=new RegExp('^(?:'+a.config.removeFormatTags.replace(/,/g,'|')+')$','i')),c=a._.removeAttributes||(a._.removeAttributes=a.config.removeFormatAttributes.split(',')),d=a.getSelection().getRanges();for(var e=0,f;f=d[e];e++){if(f.collapsed)continue;f.enlarge(CKEDITOR.ENLARGE_ELEMENT);var g=f.createBookmark(),h=g.startNode,i=g.endNode,j=function(m){var n=new CKEDITOR.dom.elementPath(m),o=n.elements;for(var p=1,q;q=o[p];p++){if(q.equals(n.block)||q.equals(n.blockLimit))break;if(b.test(q.getName()))m.breakParent(q);}};j(h);j(i);var k=h.getNextSourceNode(true,CKEDITOR.NODE_ELEMENT);while(k){if(k.equals(i))break;var l=k.getNextSourceNode(false,CKEDITOR.NODE_ELEMENT);if(k.getName()!='img'||!k.getAttribute('_cke_protected_html'))if(b.test(k.getName()))k.remove(true);else k.removeAttributes(c);k=l;}f.moveToBookmark(g);}a.getSelection().selectRanges(d);}}}};CKEDITOR.config.removeFormatTags='b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var';CKEDITOR.config.removeFormatAttributes='class,style,lang,width,height,align,hspace,valign';
Index: /trunk/filemanager/tp/ckeditor/plugins/colorbutton/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/colorbutton/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/colorbutton/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('colorbutton',{requires:['panelbutton','floatpanel','styles'],init:function(a){var b=a.config,c=a.lang.colorButton,d;if(!CKEDITOR.env.hc){e('TextColor','fore',c.textColorTitle);e('BGColor','back',c.bgColorTitle);}function e(g,h,i){a.ui.add(g,CKEDITOR.UI_PANELBUTTON,{label:i,title:i,className:'cke_button_'+g.toLowerCase(),modes:{wysiwyg:1},panel:{css:[CKEDITOR.getUrl(a.skinPath+'editor.css')]},onBlock:function(j,k){var l=j.addBlock(k);l.autoSize=true;l.element.addClass('cke_colorblock');l.element.setHtml(f(j,h));var m=l.keys;m[39]='next';m[9]='next';m[37]='prev';m[CKEDITOR.SHIFT+9]='prev';m[32]='click';}});};function f(g,h){var i=[],j=b.colorButton_colors.split(','),k=CKEDITOR.tools.addFunction(function(o,p){if(o=='?')return;a.focus();g.hide();var q=new CKEDITOR.style(b['colorButton_'+p+'Style'],o&&{color:o});a.fire('saveSnapshot');if(o)q.apply(a.document);else q.remove(a.document);a.fire('saveSnapshot');});i.push('<a class="cke_colorauto" _cke_focus=1 hidefocus=true title="',c.auto,'" onclick="CKEDITOR.tools.callFunction(',k,",null,'",h,"');return false;\" href=\"javascript:void('",c.auto,'\')"><table cellspacing=0 cellpadding=0 width="100%"><tr><td><span class="cke_colorbox" style="background-color:#000"></span></td><td colspan=7 align=center>',c.auto,'</td></tr></table></a><table cellspacing=0 cellpadding=0 width="100%">');for(var l=0;l<j.length;l++){if(l%8===0)i.push('</tr><tr>');var m=j[l],n=a.lang.colors[m]||m;i.push('<td><a class="cke_colorbox" _cke_focus=1 hidefocus=true title="',n,'" onclick="CKEDITOR.tools.callFunction(',k,",'#",m,"','",h,"'); return false;\" href=\"javascript:void('",n,'\')"><span class="cke_colorbox" style="background-color:#',m,'"></span></a></td>');}if(b.colorButton_enableMore)i.push('</tr><tr><td colspan=8 align=center><a class="cke_colormore" _cke_focus=1 hidefocus=true title="',c.more,'" onclick="CKEDITOR.tools.callFunction(',k,",'?','",h,"');return false;\" href=\"javascript:void('",c.more,"')\">",c.more,'</a></td>');i.push('</tr></table>');return i.join('');};}});CKEDITOR.config.colorButton_enableMore=false;CKEDITOR.config.colorButton_colors='000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,A9A9A9,FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,FFF0F5,FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF';CKEDITOR.config.colorButton_foreStyle={element:'span',styles:{color:'#(color)'},overrides:[{element:'font',attributes:{color:null}}]};
+CKEDITOR.config.colorButton_backStyle={element:'span',styles:{'background-color':'#(color)'}};
Index: /trunk/filemanager/tp/ckeditor/plugins/fakeobjects/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/fakeobjects/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/fakeobjects/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a={elements:{$:function(b){var c=b.attributes._cke_realelement,d=c&&new CKEDITOR.htmlParser.fragment.fromHtml(decodeURIComponent(c)),e=d&&d.children[0];if(e){var f=b.attributes.style;if(f){var g=/(?:^|\s)width\s*:\s*(\d+)/.exec(f),h=g&&g[1];g=/(?:^|\s)height\s*:\s*(\d+)/.exec(f);var i=g&&g[1];if(h)e.attributes.width=h;if(i)e.attributes.height=i;}}return e;}}};CKEDITOR.plugins.add('fakeobjects',{requires:['htmlwriter'],afterInit:function(b){var c=b.dataProcessor,d=c&&c.htmlFilter;if(d)d.addRules(a);}});})();CKEDITOR.editor.prototype.createFakeElement=function(a,b,c,d){var e=this.lang.fakeobjects,f={'class':b,src:CKEDITOR.getUrl('images/spacer.gif'),_cke_realelement:encodeURIComponent(a.getOuterHtml()),alt:e[c]||e.unknown};if(c)f._cke_real_element_type=c;if(d)f._cke_resizable=d;return this.document.createElement('img',{attributes:f});};CKEDITOR.editor.prototype.createFakeParserElement=function(a,b,c,d){var e=new CKEDITOR.htmlParser.basicWriter();a.writeHtml(e);var f=e.getHtml(),g=this.lang.fakeobjects,h={'class':b,src:CKEDITOR.getUrl('images/spacer.gif'),_cke_realelement:encodeURIComponent(f),alt:g[c]||g.unknown};if(c)h._cke_real_element_type=c;if(d)h._cke_resizable=d;return new CKEDITOR.htmlParser.element('img',h);};CKEDITOR.editor.prototype.restoreRealElement=function(a){var b=decodeURIComponent(a.getAttribute('_cke_realelement'));return CKEDITOR.dom.element.createFromHtml(b,this.document);};
Index: /trunk/filemanager/tp/ckeditor/plugins/horizontalrule/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/horizontalrule/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/horizontalrule/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a={exec:function(c){c.insertElement(c.document.createElement('hr'));}},b='horizontalrule';CKEDITOR.plugins.add(b,{init:function(c){c.addCommand(b,a);c.ui.addButton('HorizontalRule',{label:c.lang.horizontalrule,command:b});}});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/indent/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/indent/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/indent/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a={ol:1,ul:1};function b(g,h){g.getCommand(this.name).setState(h);};function c(g){var r=this;var h=g.data.path.elements,i,j,k=g.editor;for(var l=0;l<h.length;l++){if(h[l].getName()=='li'){j=h[l];continue;}if(a[h[l].getName()]){i=h[l];break;}}if(i)if(r.name=='outdent')return b.call(r,k,CKEDITOR.TRISTATE_OFF);else{while(j&&(j=j.getPrevious(CKEDITOR.dom.walker.whitespaces(true))))if(j.getName&&j.getName()=='li')return b.call(r,k,CKEDITOR.TRISTATE_OFF);return b.call(r,k,CKEDITOR.TRISTATE_DISABLED);}if(!r.useIndentClasses&&r.name=='indent')return b.call(r,k,CKEDITOR.TRISTATE_OFF);var m=g.data.path,n=m.block||m.blockLimit;if(!n)return b.call(r,k,CKEDITOR.TRISTATE_DISABLED);if(r.useIndentClasses){var o=n.$.className.match(r.classNameRegex),p=0;if(o){o=o[1];p=r.indentClassMap[o];}if(r.name=='outdent'&&!p||r.name=='indent'&&p==k.config.indentClasses.length)return b.call(r,k,CKEDITOR.TRISTATE_DISABLED);return b.call(r,k,CKEDITOR.TRISTATE_OFF);}else{var q=parseInt(n.getStyle(r.indentCssProperty),10);if(isNaN(q))q=0;if(q<=0)return b.call(r,k,CKEDITOR.TRISTATE_DISABLED);return b.call(r,k,CKEDITOR.TRISTATE_OFF);}};function d(g,h,i){var j=h.startContainer,k=h.endContainer;while(j&&!j.getParent().equals(i))j=j.getParent();while(k&&!k.getParent().equals(i))k=k.getParent();if(!j||!k)return;var l=j,m=[],n=false;while(!n){if(l.equals(k))n=true;m.push(l);l=l.getNext();}if(m.length<1)return;var o=i.getParents(true);for(var p=0;p<o.length;p++)if(o[p].getName&&a[o[p].getName()]){i=o[p];break;}var q=this.name=='indent'?1:-1,r=m[0],s=m[m.length-1],t={},u=CKEDITOR.plugins.list.listToArray(i,t),v=u[s.getCustomData('listarray_index')].indent;for(p=r.getCustomData('listarray_index');p<=s.getCustomData('listarray_index');p++)u[p].indent+=q;for(p=s.getCustomData('listarray_index')+1;p<u.length&&u[p].indent>v;p++)u[p].indent+=q;var w=CKEDITOR.plugins.list.arrayToList(u,t,null,g.config.enterMode,0);if(this.name=='outdent'){var x;if((x=i.getParent())&&(x.is('li'))){var y=w.listNode.getChildren(),z=[],A=y.count(),B;for(p=A-1;p>=0;p--)if((B=y.getItem(p))&&(B.is&&B.is('li')))z.push(B);}}if(w)w.listNode.replace(i);if(z&&z.length)for(p=0;p<z.length;p++){var C=z[p],D=C;while((D=D.getNext())&&(D.is&&D.getName() in a))C.append(D);C.insertAfter(x);}CKEDITOR.dom.element.clearAllMarkers(t);};function e(g,h){var p=this;var i=h.createIterator(),j=g.config.enterMode;i.enforceRealBlocks=true;i.enlargeBr=j!=CKEDITOR.ENTER_BR;var k;while(k=i.getNextParagraph())if(p.useIndentClasses){var l=k.$.className.match(p.classNameRegex),m=0;
+if(l){l=l[1];m=p.indentClassMap[l];}if(p.name=='outdent')m--;else m++;m=Math.min(m,g.config.indentClasses.length);m=Math.max(m,0);var n=CKEDITOR.tools.ltrim(k.$.className.replace(p.classNameRegex,''));if(m<1)k.$.className=n;else k.addClass(g.config.indentClasses[m-1]);}else{var o=parseInt(k.getStyle(p.indentCssProperty),10);if(isNaN(o))o=0;o+=(p.name=='indent'?1:-1)*(g.config.indentOffset);o=Math.max(o,0);o=Math.ceil(o/g.config.indentOffset)*g.config.indentOffset;k.setStyle(p.indentCssProperty,o?o+g.config.indentUnit:'');if(k.getAttribute('style')==='')k.removeAttribute('style');}};function f(g,h){var j=this;j.name=h;j.useIndentClasses=g.config.indentClasses&&g.config.indentClasses.length>0;if(j.useIndentClasses){j.classNameRegex=new RegExp('(?:^|\\s+)('+g.config.indentClasses.join('|')+')(?=$|\\s)');j.indentClassMap={};for(var i=0;i<g.config.indentClasses.length;i++)j.indentClassMap[g.config.indentClasses[i]]=i+1;}else j.indentCssProperty=g.config.contentsLangDirection=='ltr'?'margin-left':'margin-right';};f.prototype={exec:function(g){var h=g.getSelection(),i=h&&h.getRanges()[0];if(!h||!i)return;var j=h.createBookmarks(true),k=i.getCommonAncestor();while(k&&!(k.type==CKEDITOR.NODE_ELEMENT&&a[k.getName()]))k=k.getParent();if(k)d.call(this,g,i,k);else e.call(this,g,i);g.focus();g.forceNextSelectionCheck();h.selectBookmarks(j);}};CKEDITOR.plugins.add('indent',{init:function(g){var h=new f(g,'indent'),i=new f(g,'outdent');g.addCommand('indent',h);g.addCommand('outdent',i);g.ui.addButton('Indent',{label:g.lang.indent,command:'indent'});g.ui.addButton('Outdent',{label:g.lang.outdent,command:'outdent'});g.on('selectionChange',CKEDITOR.tools.bind(c,h));g.on('selectionChange',CKEDITOR.tools.bind(c,i));},requires:['domiterator','list']});})();CKEDITOR.tools.extend(CKEDITOR.config,{indentOffset:40,indentUnit:'px',indentClasses:null});
Index: /trunk/filemanager/tp/ckeditor/plugins/scayt/dialogs/options.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/scayt/dialogs/options.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/scayt/dialogs/options.js	(revision 2000)
@@ -0,0 +1,8 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('scaytcheck',function(a){var b=true,c,d=CKEDITOR.document,e=[],f,g=[],h=false,i=['dic_create,dic_restore','dic_rename,dic_delete'],j=[{id:'options',label:a.lang.scayt.optionsTab,elements:[{type:'html',id:'options',html:'<div class="inner_options">\t<div class="messagebox"></div>\t<div style="display:none;">\t\t<input type="checkbox" value="0" id="allCaps" />\t\t<label for="allCaps" id="label_allCaps"></label>\t</div>\t<div style="display:none;">\t\t<input type="checkbox" value="0" id="ignoreDomainNames" />\t\t<label for="ignoreDomainNames" id="label_ignoreDomainNames"></label>\t</div>\t<div style="display:none;">\t<input type="checkbox" value="0" id="mixedCase" />\t\t<label for="mixedCase" id="label_mixedCase"></label>\t</div>\t<div style="display:none;">\t\t<input type="checkbox" value="0" id="mixedWithDigits" />\t\t<label for="mixedWithDigits" id="label_mixedWithDigits"></label>\t</div></div>'}]},{id:'langs',label:a.lang.scayt.languagesTab,elements:[{type:'html',id:'langs',html:'<div class="inner_langs">\t<div class="messagebox"></div>\t   <div style="float:left;width:47%;margin-left:5px;" id="scayt_lcol" ></div>   <div style="float:left;width:47%;margin-left:15px;" id="scayt_rcol"></div></div>'}]},{id:'dictionaries',label:a.lang.scayt.dictionariesTab,elements:[{type:'html',style:'',id:'dic',html:'<div class="inner_dictionary" style="text-align:left; white-space:normal;">\t<div style="margin:5px auto; width:80%;white-space:normal; overflow:hidden;" id="dic_message"> </div>\t<div style="margin:5px auto; width:80%;white-space:normal;">        <span class="cke_dialog_ui_labeled_label" >Dictionary name</span><br>\t\t<span class="cke_dialog_ui_labeled_content" >\t\t\t<div class="cke_dialog_ui_input_text">\t\t\t\t<input id="dic_name" type="text" class="cke_dialog_ui_input_text"/>\t\t</div></span></div>\t\t<div style="margin:5px auto; width:80%;white-space:normal;">\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_create">\t\t\t\t</a>\t\t\t<a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_delete">\t\t\t\t</a>\t\t\t<a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_rename">\t\t\t\t</a>\t\t\t<a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_restore">\t\t\t\t</a>\t\t</div>\t<div style="margin:5px auto; width:95%;white-space:normal;" id="dic_info"></div></div>'}]},{id:'about',label:a.lang.scayt.aboutTab,elements:[{type:'html',id:'about',style:'margin: 10px 40px;',html:'<div id="scayt_about"></div>'}]}],k={title:a.lang.scayt.title,minWidth:340,minHeight:200,onShow:function(){var u=this;
+u.data=a.fire('scaytDialog',{});u.options=u.data.scayt_control.option();u.sLang=u.data.scayt_control.sLang;if(!u.data||!u.data.scayt||!u.data.scayt_control){alert('Error loading application service');u.hide();return;}var v=0;if(b)u.data.scayt.getCaption('en',function(w){if(v++>0)return;c=w;n.apply(u);o.apply(u);b=false;});else o.apply(u);u.selectPage(u.data.tab);},onOk:function(){var z=this;var u=z.data.scayt_control,v=u.option(),w=0;for(var x in z.options)if(v[x]!=z.options[x]&&w===0){u.option(z.options);w++;}var y=z.chosed_lang;if(y&&z.data.sLang!=y){u.setLang(y);w++;}if(w>0)u.refresh();},contents:g},l=CKEDITOR.plugins.scayt.getScayt(a);if(l)e=l.uiTags;for(f in e)if(e[f]==1)g[g.length]=j[f];if(e[2]==1)h=true;function m(){var u=d.getById('dic_name').getValue();if(!u){p(' Dictionary name should not be empty. ');return false;}window.dic[this.getId()].apply(null,[this,u,i]);return true;};var n=function(){var u=this,v=u.data.scayt.getLangList(),w=['dic_create','dic_delete','dic_rename','dic_restore'],x=['mixedCase','mixedWithDigits','allCaps','ignoreDomainNames'],y;if(h){for(y in w){var z=w[y];d.getById(z).setHtml('<span class="cke_dialog_ui_button">'+c['button_'+z]+'</span>');}d.getById('dic_info').setHtml(c.dic_info);}for(y in x){var A='label_'+x[y],B=d.getById(A);if('undefined'!=typeof B&&'undefined'!=typeof c[A]&&'undefined'!=typeof u.options[x[y]]){B.setHtml(c[A]);var C=B.getParent();C.$.style.display='block';}}var D='<p>'+c.about_throwt_image+'</p>'+'<p>'+c.version+u.data.scayt.version.toString()+'</p>'+'<p>'+c.about_throwt_copy+'</p>';d.getById('scayt_about').setHtml(D);var E=function(N,O){var P=d.createElement('label');P.setAttribute('for','cke_option'+N);P.setHtml(O[N]);if(u.sLang==N)u.chosed_lang=N;var Q=d.createElement('div'),R=CKEDITOR.dom.element.createFromHtml('<input id="cke_option'+N+'" type="radio" '+(u.sLang==N?'checked="checked"':'')+' value="'+N+'" name="scayt_lang" />');R.on('click',function(){this.$.checked=true;u.chosed_lang=N;});Q.append(R);Q.append(P);return{lang:O[N],code:N,radio:Q};},F=[];for(y in v.rtl)F[F.length]=E(y,v.ltr);for(y in v.ltr)F[F.length]=E(y,v.ltr);F.sort(function(N,O){return O.lang>N.lang?-1:1;});var G=d.getById('scayt_lcol'),H=d.getById('scayt_rcol');for(y=0;y<F.length;y++){var I=y<F.length/2?G:H;I.append(F[y].radio);}var J={};J.dic_create=function(N,O,P){var Q=P[0]+','+P[1],R=c.err_dic_create,S=c.succ_dic_create;window.scayt.createUserDictionary(O,function(T){s(Q);r(P[1]);S=S.replace('%s',T.dname);q(S);},function(T){R=R.replace('%s',T.dname);
+p(R+'( '+(T.message||'')+')');});};J.dic_rename=function(N,O){var P=c.err_dic_rename||'',Q=c.succ_dic_rename||'';window.scayt.renameUserDictionary(O,function(R){Q=Q.replace('%s',R.dname);t(O);q(Q);},function(R){P=P.replace('%s',R.dname);t(O);p(P+'( '+(R.message||'')+' )');});};J.dic_delete=function(N,O,P){var Q=P[0]+','+P[1],R=c.err_dic_delete,S=c.succ_dic_delete;window.scayt.deleteUserDictionary(function(T){S=S.replace('%s',T.dname);s(Q);r(P[0]);t('');q(S);},function(T){R=R.replace('%s',T.dname);p(R);});};J.dic_restore=u.dic_restore||(function(N,O,P){var Q=P[0]+','+P[1],R=c.err_dic_restore,S=c.succ_dic_restore;window.scayt.restoreUserDictionary(O,function(T){S=S.replace('%s',T.dname);s(Q);r(P[1]);q(S);},function(T){R=R.replace('%s',T.dname);p(R);});});var K=(i[0]+','+i[1]).split(','),L;for(y=0,L=K.length;y<L;y+=1){var M=d.getById(K[y]);if(M)M.on('click',m,this);}},o=function(){var u=this;for(var v in u.options){var w=d.getById(v);if(w){w.removeAttribute('checked');if(u.options[v]==1)w.setAttribute('checked','checked');if(b)w.on('click',function(){u.options[this.getId()]=this.$.checked?1:0;});}}if(h){window.scayt.getNameUserDictionary(function(x){var y=x.dname;if(y){d.getById('dic_name').setValue(y);r(i[1]);}else r(i[0]);},function(){d.getById('dic_name').setValue('');});q('');}};function p(u){d.getById('dic_message').setHtml('<span style="color:red;">'+u+'</span>');};function q(u){d.getById('dic_message').setHtml('<span style="color:blue;">'+u+'</span>');};function r(u){u=String(u);var v=u.split(',');for(var w=0,x=v.length;w<x;w+=1)d.getById(v[w]).$.style.display='inline';};function s(u){u=String(u);var v=u.split(',');for(var w=0,x=v.length;w<x;w+=1)d.getById(v[w]).$.style.display='none';};function t(u){d.getById('dic_name').$.value=u;};return k;});
Index: /trunk/filemanager/tp/ckeditor/plugins/scayt/dialogs/toolbar.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/scayt/dialogs/toolbar.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/scayt/dialogs/toolbar.css	(revision 2000)
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+a{text-decoration:none;padding:2px 4px 4px 6px;display:block;border-width:1px;border-style:solid;margin:0;}a.cke_scayt_toogle:hover,a.cke_scayt_toogle:focus,a.cke_scayt_toogle:active{border-color:#316ac5;background-color:#dff1ff;color:#000;cursor:pointer;margin:0;}a.cke_scayt_toogle{color:#316ac5;border-color:#fff;}.scayt_enabled a.cke_scayt_item{color:#316ac5;border-color:#fff;margin:0;}.scayt_disabled a.cke_scayt_item{color:gray;border-color:#fff;}.scayt_enabled a.cke_scayt_item:hover,.scayt_enabled a.cke_scayt_item:focus,.scayt_enabled a.cke_scayt_item:active{border-color:#316ac5;background-color:#dff1ff;color:#000;cursor:pointer;}.scayt_disabled a.cke_scayt_item:hover,.scayt_disabled a.cke_scayt_item:focus,.scayt_disabled a.cke_scayt_item:active{border-color:gray;background-color:#dff1ff;color:gray;cursor:no-drop;}.cke_scayt_set_on,.cke_scayt_set_off{display:none;}.scayt_enabled .cke_scayt_set_on{display:none;}.scayt_disabled .cke_scayt_set_on{display:inline;}.scayt_disabled .cke_scayt_set_off{display:none;}.scayt_enabled .cke_scayt_set_off{display:inline;}
Index: /trunk/filemanager/tp/ckeditor/plugins/scayt/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/scayt/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/scayt/plugin.js	(revision 2000)
@@ -0,0 +1,8 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a='scaytcheck',b='',c=function(){var g=this,h=function(){var k={};k.srcNodeRef=g.document.getWindow().$.frameElement;k.assocApp='CKEDITOR.'+CKEDITOR.version+'@'+CKEDITOR.revision;k.customerid=g.config.scayt_customerid||'1:11111111111111111111111111111111111111';k.customDictionaryName=g.config.scayt_customDictionaryName;k.userDictionaryName=g.config.scayt_userDictionaryName;k.defLang=g.scayt_defLang;if(CKEDITOR._scaytParams)for(var l in CKEDITOR._scaytParams)k[l]=CKEDITOR._scaytParams[l];var m=new window.scayt(k),n=d.instances[g.name];if(n){m.sLang=n.sLang;m.option(n.option());m.paused=n.paused;}d.instances[g.name]=m;try{m.setDisabled(m.paused===false);}catch(o){}g.fire('showScaytState');};g.on('contentDom',h);g.on('contentDomUnload',function(){var k=CKEDITOR.document.getElementsByTag('script'),l=/^dojoIoScript(\d+)$/i,m=/^https?:\/\/svc\.spellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i;for(var n=0;n<k.count();n++){var o=k.getItem(n),p=o.getId(),q=o.getAttribute('src');if(p&&q&&p.match(l)&&q.match(m))o.remove();}});g.on('beforeCommandExec',function(k){if((k.data.name=='source'||k.data.name=='newpage')&&(g.mode=='wysiwyg')){var l=d.getScayt(g);if(l){l.paused=!l.disabled;l.destroy();delete d.instances[g.name];}}});g.on('afterSetData',function(){if(d.isScaytEnabled(g))d.getScayt(g).refresh();});g.on('insertElement',function(){var k=d.getScayt(g);if(d.isScaytEnabled(g)){if(CKEDITOR.env.ie)g.getSelection().unlock(true);try{k.refresh();}catch(l){}}},this,null,50);g.on('scaytDialog',function(k){k.data.djConfig=window.djConfig;k.data.scayt_control=d.getScayt(g);k.data.tab=b;k.data.scayt=window.scayt;});var i=g.dataProcessor,j=i&&i.htmlFilter;if(j)j.addRules({elements:{span:function(k){if(k.attributes.scayt_word&&k.attributes.scaytid){delete k.name;return k;}}}});if(g.document)h();};CKEDITOR.plugins.scayt={engineLoaded:false,instances:{},getScayt:function(g){return this.instances[g.name];},isScaytReady:function(g){return this.engineLoaded===true&&'undefined'!==typeof window.scayt&&this.getScayt(g);},isScaytEnabled:function(g){var h=this.getScayt(g);return h?h.disabled===false:false;},loadEngine:function(g){if(this.engineLoaded===true)return c.apply(g);else if(this.engineLoaded==-1)return CKEDITOR.on('scaytReady',function(){c.apply(g);});CKEDITOR.on('scaytReady',c,g);CKEDITOR.on('scaytReady',function(){this.engineLoaded=true;},this,null,0);this.engineLoaded=-1;var h=document.location.protocol;h=h.search(/https?:/)!=-1?h:'http:';var i='svc.spellchecker.net/spellcheck/lf/scayt/scayt1.js',j=g.config.scayt_srcUrl||h+'//'+i,k=d.parseUrl(j).path+'/';
+CKEDITOR._djScaytConfig={baseUrl:k,addOnLoad:[function(){CKEDITOR.fireOnce('scaytReady');}],isDebug:false};CKEDITOR.document.getHead().append(CKEDITOR.document.createElement('script',{attributes:{type:'text/javascript',src:j}}));return null;},parseUrl:function(g){var h;if(g.match&&(h=g.match(/(.*)[\/\\](.*?\.\w+)$/)))return{path:h[1],file:h[2]};else return g;}};var d=CKEDITOR.plugins.scayt,e=function(g,h,i,j,k,l,m){g.addCommand(j,k);g.addMenuItem(j,{label:i,command:j,group:l,order:m});},f={preserveState:true,editorFocus:false,exec:function(g){if(d.isScaytReady(g)){var h=d.isScaytEnabled(g);this.setState(h?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_ON);var i=d.getScayt(g);i.setDisabled(h);}else if(!g.config.scayt_autoStartup&&d.engineLoaded>=0){this.setState(CKEDITOR.TRISTATE_DISABLED);g.on('showScaytState',function(){this.removeListener();this.setState(d.isScaytEnabled(g)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF);},this);d.loadEngine(g);}}};CKEDITOR.plugins.add('scayt',{requires:['menubutton'],beforeInit:function(g){g.config.menu_groups='scayt_suggest,scayt_moresuggest,scayt_control,'+g.config.menu_groups;},init:function(g){var h={},i={},j=g.addCommand(a,f);CKEDITOR.dialog.add(a,CKEDITOR.getUrl(this.path+'dialogs/options.js'));var k='scaytButton';g.addMenuGroup(k);g.addMenuItems({scaytToggle:{label:g.lang.scayt.enable,command:a,group:k},scaytOptions:{label:g.lang.scayt.options,group:k,onClick:function(){b='options';g.openDialog(a);}},scaytLangs:{label:g.lang.scayt.langs,group:k,onClick:function(){b='langs';g.openDialog(a);}},scaytAbout:{label:g.lang.scayt.about,group:k,onClick:function(){b='about';g.openDialog(a);}}});g.ui.add('Scayt',CKEDITOR.UI_MENUBUTTON,{label:g.lang.scayt.title,title:g.lang.scayt.title,className:'cke_button_scayt',onRender:function(){j.on('state',function(){this.setState(j.state);},this);},onMenu:function(){var m=d.isScaytEnabled(g);g.getMenuItem('scaytToggle').label=g.lang.scayt[m?'disable':'enable'];return{scaytToggle:CKEDITOR.TRISTATE_OFF,scaytOptions:m?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytLangs:m?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytAbout:m?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED};}});if(g.contextMenu&&g.addMenuItems)g.contextMenu.addListener(function(m){if(!(d.isScaytEnabled(g)&&m))return null;var n=d.getScayt(g),o=n.getWord(m.$);if(!o)return null;var p=n.getLang(),q={},r=window.scayt.getSuggestion(o,p);if(!r||!r.length)return null;for(i in h){delete g._.menuItems[i];delete g._.commands[i];
+}for(i in i){delete g._.menuItems[i];delete g._.commands[i];}h={};i={};var s=false;for(var t=0,u=r.length;t<u;t+=1){var v='scayt_suggestion_'+r[t].replace(' ','_'),w=(function(A,B){return{exec:function(){n.replace(A,B);}};})(m.$,r[t]);if(t<g.config.scayt_maxSuggestions){e(g,'button_'+v,r[t],v,w,'scayt_suggest',t+1);q[v]=CKEDITOR.TRISTATE_OFF;i[v]=CKEDITOR.TRISTATE_OFF;}else{e(g,'button_'+v,r[t],v,w,'scayt_moresuggest',t+1);h[v]=CKEDITOR.TRISTATE_OFF;s=true;}}if(s)g.addMenuItem('scayt_moresuggest',{label:g.lang.scayt.moreSuggestions,group:'scayt_moresuggest',order:10,getItems:function(){return h;}});var x={exec:function(){n.ignore(m.$);}},y={exec:function(){n.ignoreAll(m.$);}},z={exec:function(){window.scayt.addWordToUserDictionary(m.$);}};e(g,'ignore',g.lang.scayt.ignore,'scayt_ignore',x,'scayt_control',1);e(g,'ignore_all',g.lang.scayt.ignoreAll,'scayt_ignore_all',y,'scayt_control',2);e(g,'add_word',g.lang.scayt.addWord,'scayt_add_word',z,'scayt_control',3);i.scayt_moresuggest=CKEDITOR.TRISTATE_OFF;i.scayt_ignore=CKEDITOR.TRISTATE_OFF;i.scayt_ignore_all=CKEDITOR.TRISTATE_OFF;i.scayt_add_word=CKEDITOR.TRISTATE_OFF;if(n.fireOnContextMenu)n.fireOnContextMenu(g);return i;});if(g.config.scayt_autoStartup){var l=function(){g.removeListener('showScaytState',l);j.setState(d.isScaytEnabled(g)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF);};g.on('showScaytState',l);d.loadEngine(g);}}});})();CKEDITOR.config.scayt_maxSuggestions=5;CKEDITOR.config.scayt_autoStartup=false;
Index: /trunk/filemanager/tp/ckeditor/plugins/entities/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/entities/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/entities/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a='nbsp,gt,lt,quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro',b='Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml',c='Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv';function d(e){var f={},g=[],h={nbsp:'\xa0',shy:'­',gt:'>',lt:'<'};e=e.replace(/\b(nbsp|shy|gt|lt|amp)(?:,|$)/g,function(m,n){f[h[n]]='&'+n+';';g.push(h[n]);return '';});e=e.split(',');var i=document.createElement('div'),j;i.innerHTML='&'+e.join(';&')+';';j=i.innerHTML;i=null;for(var k=0;k<j.length;k++){var l=j.charAt(k);f[l]='&'+e[k]+';';g.push(l);}f.regex=g.join('');return f;};CKEDITOR.plugins.add('entities',{afterInit:function(e){var f=e.config;if(!f.entities)return;var g=e.dataProcessor,h=g&&g.htmlFilter;if(h){var i=a;if(f.entities_latin)i+=','+b;if(f.entities_greek)i+=','+c;if(f.entities_additional)i+=','+f.entities_additional;var j=d(i),k='['+j.regex+']';delete j.regex;if(f.entities_processNumerical)k='[^ -~]|'+k;k=new RegExp(k,'g');function l(m){return j[m]||'&#'+m.charCodeAt(0)+';';};h.addRules({text:function(m){return m.replace(k,l);}});}}});})();CKEDITOR.config.entities=true;CKEDITOR.config.entities_latin=true;CKEDITOR.config.entities_greek=true;CKEDITOR.config.entities_processNumerical=false;CKEDITOR.config.entities_additional='#39';
Index: /trunk/filemanager/tp/ckeditor/plugins/newpage/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/newpage/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/newpage/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('newpage',{init:function(a){a.addCommand('newpage',{modes:{wysiwyg:1,source:1},exec:function(b){var c=this;b.setData(b.config.newpage_html,function(){b.fire('afterCommandExec',{name:c.name,command:c});});b.focus();},async:true});a.ui.addButton('NewPage',{label:a.lang.newPage,command:'newpage'});}});CKEDITOR.config.newpage_html='';
Index: /trunk/filemanager/tp/ckeditor/plugins/elementspath/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/elementspath/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/elementspath/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a={toolbarFocus:{exec:function(c){var d=c._.elementsPath.idBase,e=CKEDITOR.document.getById(d+'0');if(e)e.focus();}}},b='<span class="cke_empty">&nbsp;</span>';CKEDITOR.plugins.add('elementspath',{requires:['selection'],init:function(c){var d='cke_path_'+c.name,e,f=function(){if(!e)e=CKEDITOR.document.getById(d);return e;},g='cke_elementspath_'+CKEDITOR.tools.getNextNumber()+'_';c._.elementsPath={idBase:g};c.on('themeSpace',function(h){if(h.data.space=='bottom')h.data.html+='<div id="'+d+'" class="cke_path">'+b+'</div>';});c.on('selectionChange',function(h){var i=CKEDITOR.env,j=h.data.selection,k=j.getStartElement(),l=[],m=this._.elementsPath.list=[];while(k){var n=m.push(k)-1,o;if(k.getAttribute('_cke_real_element_type'))o=k.getAttribute('_cke_real_element_type');else o=k.getName();var p='';if(i.opera||i.gecko&&i.mac)p+=' onkeypress="return false;"';if(i.gecko)p+=' onblur="this.style.cssText = this.style.cssText;"';l.unshift('<a id="',g,n,'" href="javascript:void(\'',o,'\')" tabindex="-1" title="',c.lang.elementsPath.eleTitle.replace(/%1/,o),'"'+(CKEDITOR.env.gecko&&CKEDITOR.env.version<10900?' onfocus="event.preventBubble();"':'')+' hidefocus="true" '+" onkeydown=\"return CKEDITOR._.elementsPath.keydown('",this.name,"',",n,', event);"'+p," onclick=\"return CKEDITOR._.elementsPath.click('",this.name,"',",n,');">',o,'</a>');if(o=='body')break;k=k.getParent();}f().setHtml(l.join('')+b);});c.on('contentDomUnload',function(){f().setHtml(b);});c.addCommand('elementsPathFocus',a.toolbarFocus);}});})();CKEDITOR._.elementsPath={click:function(a,b){var c=CKEDITOR.instances[a];c.focus();var d=c._.elementsPath.list[b];c.getSelection().selectElement(d);return false;},keydown:function(a,b,c){var d=CKEDITOR.ui.button._.instances[b],e=CKEDITOR.instances[a],f=e._.elementsPath.idBase,g;c=new CKEDITOR.dom.event(c);switch(c.getKeystroke()){case 37:case 9:g=CKEDITOR.document.getById(f+(b+1));if(!g)g=CKEDITOR.document.getById(f+'0');g.focus();return false;case 39:case CKEDITOR.SHIFT+9:g=CKEDITOR.document.getById(f+(b-1));if(!g)g=CKEDITOR.document.getById(f+(e._.elementsPath.list.length-1));g.focus();return false;case 27:e.focus();return false;case 13:case 32:this.click(a,b);return false;}return true;}};
Index: /trunk/filemanager/tp/ckeditor/plugins/dialogui/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/dialogui/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/dialogui/plugin.js	(revision 2000)
@@ -0,0 +1,11 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('dialogui');(function(){var a=function(h){var k=this;k._||(k._={});k._['default']=k._.initValue=h['default']||'';var i=[k._];for(var j=1;j<arguments.length;j++)i.push(arguments[j]);i.push(true);CKEDITOR.tools.extend.apply(CKEDITOR.tools,i);return k._;},b={build:function(h,i,j){return new CKEDITOR.ui.dialog.textInput(h,i,j);}},c={build:function(h,i,j){return new CKEDITOR.ui.dialog[i.type](h,i,j);}},d={isChanged:function(){return this.getValue()!=this.getInitValue();},reset:function(){this.setValue(this.getInitValue());},setInitValue:function(){this._.initValue=this.getValue();},resetInitValue:function(){this._.initValue=this._['default'];},getInitValue:function(){return this._.initValue;}},e=CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onChange:function(h,i){if(!this._.domOnChangeRegistered){h.on('load',function(){this.getInputElement().on('change',function(){this.fire('change',{value:this.getValue()});},this);},this);this._.domOnChangeRegistered=true;}this.on('change',i);}},true),f=/^on([A-Z]\w+)/,g=function(h){for(var i in h)if(f.test(i)||i=='title'||i=='type')delete h[i];return h;};CKEDITOR.tools.extend(CKEDITOR.ui.dialog,{labeledElement:function(h,i,j,k){if(arguments.length<4)return;var l=a.call(this,i);l.labelId=CKEDITOR.tools.getNextNumber()+'_label';var m=this._.children=[],n=function(){var o=[];if(i.labelLayout!='horizontal')o.push('<div class="cke_dialog_ui_labeled_label" id="',l.labelId,'" >',i.label,'</div>','<div class="cke_dialog_ui_labeled_content">',k(h,i),'</div>');else{var p={type:'hbox',widths:i.widths,padding:0,children:[{type:'html',html:'<span class="cke_dialog_ui_labeled_label" id="'+l.labelId+'">'+CKEDITOR.tools.htmlEncode(i.label)+'</span>'},{type:'html',html:'<span class="cke_dialog_ui_labeled_content">'+k(h,i)+'</span>'}]};CKEDITOR.dialog._.uiElementBuilders.hbox.build(h,p,o);}return o.join('');};CKEDITOR.ui.dialog.uiElement.call(this,h,i,j,'div',null,null,n);},textInput:function(h,i,j){if(arguments.length<3)return;a.call(this,i);var k=this._.inputId=CKEDITOR.tools.getNextNumber()+'_textInput',l={'class':'cke_dialog_ui_input_'+i.type,id:k,type:'text'},m;if(i.validate)this.validate=i.validate;if(i.maxLength)l.maxlength=i.maxLength;if(i.size)l.size=i.size;var n=this,o=false;h.on('load',function(){n.getInputElement().on('keydown',function(q){if(q.data.getKeystroke()==13)o=true;});n.getInputElement().on('keyup',function(q){if(q.data.getKeystroke()==13&&o){h.getButton('ok')&&h.getButton('ok').click();
+o=false;}},null,null,1000);});var p=function(){var q=['<div class="cke_dialog_ui_input_',i.type,'"'];if(i.width)q.push('style="width:'+i.width+'" ');q.push('><input ');for(var r in l)q.push(r+'="'+l[r]+'" ');q.push(' /></div>');return q.join('');};CKEDITOR.ui.dialog.labeledElement.call(this,h,i,j,p);},textarea:function(h,i,j){if(arguments.length<3)return;a.call(this,i);var k=this,l=this._.inputId=CKEDITOR.tools.getNextNumber()+'_textarea',m={};if(i.validate)this.validate=i.validate;m.rows=i.rows||5;m.cols=i.cols||20;var n=function(){var o=['<div class="cke_dialog_ui_input_textarea"><textarea class="cke_dialog_ui_input_textarea" id="',l,'" '];for(var p in m)o.push(p+'="'+CKEDITOR.tools.htmlEncode(m[p])+'" ');o.push('>',CKEDITOR.tools.htmlEncode(k._['default']),'</textarea></div>');return o.join('');};CKEDITOR.ui.dialog.labeledElement.call(this,h,i,j,n);},checkbox:function(h,i,j){if(arguments.length<3)return;var k=a.call(this,i,{'default':!!i['default']});if(i.validate)this.validate=i.validate;var l=function(){var m=CKEDITOR.tools.extend({},i,{id:i.id?i.id+'_checkbox':CKEDITOR.tools.getNextNumber()+'_checkbox'},true),n=[],o={'class':'cke_dialog_ui_checkbox_input',type:'checkbox'};g(m);if(i['default'])o.checked='checked';k.checkbox=new CKEDITOR.ui.dialog.uiElement(h,m,n,'input',null,o);n.push(' <label for="',o.id,'">',CKEDITOR.tools.htmlEncode(i.label),'</label>');return n.join('');};CKEDITOR.ui.dialog.uiElement.call(this,h,i,j,'span',null,null,l);},radio:function(h,i,j){if(arguments.length<3)return;a.call(this,i);if(!this._['default'])this._['default']=this._.initValue=i.items[0][1];if(i.validate)this.validate=i.valdiate;var k=[],l=this,m=function(){var n=[],o=[],p={'class':'cke_dialog_ui_radio_item'},q=i.id?i.id+'_radio':CKEDITOR.tools.getNextNumber()+'_radio';for(var r=0;r<i.items.length;r++){var s=i.items[r],t=s[2]!==undefined?s[2]:s[0],u=s[1]!==undefined?s[1]:s[0],v=CKEDITOR.tools.extend({},i,{id:CKEDITOR.tools.getNextNumber()+'_radio_input',title:null,type:null},true),w=CKEDITOR.tools.extend({},v,{id:null,title:t},true),x={type:'radio','class':'cke_dialog_ui_radio_input',name:q,value:u},y=[];if(l._['default']==u)x.checked='checked';g(v);g(w);k.push(new CKEDITOR.ui.dialog.uiElement(h,v,y,'input',null,x));y.push(' ');new CKEDITOR.ui.dialog.uiElement(h,w,y,'label',null,{'for':x.id},s[0]);n.push(y.join(''));}new CKEDITOR.ui.dialog.hbox(h,[],n,o);return o.join('');};CKEDITOR.ui.dialog.labeledElement.call(this,h,i,j,m);this._.children=k;},button:function(h,i,j){if(!arguments.length)return;
+if(typeof i=='function')i=i(h.getParentEditor());a.call(this,i,{disabled:i.disabled||false});CKEDITOR.event.implementOn(this);var k=this;h.on('load',function(m){var n=this.getElement();(function(){n.on('click',function(o){k.fire('click',{dialog:k.getDialog()});o.data.preventDefault();});})();n.unselectable();},this);var l=CKEDITOR.tools.extend({},i);delete l.style;CKEDITOR.ui.dialog.uiElement.call(this,h,l,j,'a',null,{style:i.style,href:'javascript:void(0)',title:i.label,hidefocus:'true','class':i['class']},'<span class="cke_dialog_ui_button">'+CKEDITOR.tools.htmlEncode(i.label)+'</span>');},select:function(h,i,j){if(arguments.length<3)return;var k=a.call(this,i);if(i.validate)this.validate=i.validate;var l=function(){var m=CKEDITOR.tools.extend({},i,{id:i.id?i.id+'_select':CKEDITOR.tools.getNextNumber()+'_select'},true),n=[],o=[],p={'class':'cke_dialog_ui_input_select'};if(i.size!=undefined)p.size=i.size;if(i.multiple!=undefined)p.multiple=i.multiple;g(m);for(var q=0,r;q<i.items.length&&(r=i.items[q]);q++)o.push('<option value="',CKEDITOR.tools.htmlEncode(r[1]!==undefined?r[1]:r[0]),'" /> ',CKEDITOR.tools.htmlEncode(r[0]));k.select=new CKEDITOR.ui.dialog.uiElement(h,m,n,'select',null,p,o.join(''));return n.join('');};CKEDITOR.ui.dialog.labeledElement.call(this,h,i,j,l);},file:function(h,i,j){if(arguments.length<3)return;if(i['default']===undefined)i['default']='';var k=CKEDITOR.tools.extend(a.call(this,i),{definition:i,buttons:[]});if(i.validate)this.validate=i.validate;var l=function(){k.frameId=CKEDITOR.tools.getNextNumber()+'_fileInput';var m=CKEDITOR.env.isCustomDomain(),n=['<iframe frameborder="0" allowtransparency="0" class="cke_dialog_ui_input_file" id="',k.frameId,'" title="',i.label,'" src="javascript:void('];n.push(m?"(function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})()':'0');n.push(')"></iframe>');return n.join('');};h.on('load',function(){var m=CKEDITOR.document.getById(k.frameId),n=m.getParent();n.addClass('cke_dialog_ui_input_file');});CKEDITOR.ui.dialog.labeledElement.call(this,h,i,j,l);},fileButton:function(h,i,j){if(arguments.length<3)return;var k=a.call(this,i),l=this;if(i.validate)this.validate=i.validate;var m=CKEDITOR.tools.extend({},i),n=m.onClick;m.className=(m.className?m.className+' ':'')+('cke_dialog_ui_button');m.onClick=function(o){var p=i['for'];if(!n||n.call(this,o)!==false){h.getContentElement(p[0],p[1]).submit();this.disable();}};h.on('load',function(){h.getContentElement(i['for'][0],i['for'][1])._.buttons.push(l);
+});CKEDITOR.ui.dialog.button.call(this,h,m,j);},html:(function(){var h=/^\s*<[\w:]+\s+([^>]*)?>/,i=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,j=/\/$/;return function(k,l,m){if(arguments.length<3)return;var n=[],o,p=l.html,q,r;if(p.charAt(0)!='<')p='<span>'+p+'</span>';if(l.focus){var s=this.focus;this.focus=function(){s.call(this);l.focus.call(this);this.fire('focus');};if(l.isFocusable){var t=this.isFocusable;this.isFocusable=t;}this.keyboardFocusable=true;}CKEDITOR.ui.dialog.uiElement.call(this,k,l,n,'span',null,null,'');o=n.join('');q=o.match(h);r=p.match(i)||['','',''];if(j.test(r[1])){r[1]=r[1].slice(0,-1);r[2]='/'+r[2];}m.push([r[1],' ',q[1]||'',r[2]].join(''));};})()},true);CKEDITOR.ui.dialog.html.prototype=new CKEDITOR.ui.dialog.uiElement();CKEDITOR.ui.dialog.labeledElement.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(),{setLabel:function(h){var i=CKEDITOR.document.getById(this._.labelId);if(i.getChildCount()<1)new CKEDITOR.dom.text(h,CKEDITOR.document).appendTo(i);else i.getChild(0).$.nodeValue=h;return this;},getLabel:function(){var h=CKEDITOR.document.getById(this._.labelId);if(!h||h.getChildCount()<1)return '';else return h.getChild(0).getText();},eventProcessors:e},true);CKEDITOR.ui.dialog.button.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(),{click:function(){var h=this;if(!h._.disabled)return h.fire('click',{dialog:h._.dialog});h.getElement().$.blur();return false;},enable:function(){this._.disabled=false;var h=this.getElement();h&&h.removeClass('disabled');},disable:function(){this._.disabled=true;this.getElement().addClass('disabled');},isVisible:function(){return!!this.getElement().$.firstChild.offsetHeight;},isEnabled:function(){return!this._.disabled;},eventProcessors:CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onClick:function(h,i){this.on('click',i);}},true),accessKeyUp:function(){this.click();},accessKeyDown:function(){this.focus();},keyboardFocusable:true},true);CKEDITOR.ui.dialog.textInput.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement(),{getInputElement:function(){return CKEDITOR.document.getById(this._.inputId);},focus:function(){var h=this.selectParentTab();setTimeout(function(){var i=h.getInputElement();i&&i.$.focus();},0);},select:function(){var h=this.selectParentTab();setTimeout(function(){var i=h.getInputElement();if(i){i.$.focus();i.$.select();}},0);},accessKeyUp:function(){this.select();},setValue:function(h){h=h||'';return CKEDITOR.ui.dialog.uiElement.prototype.setValue.call(this,h);
+},keyboardFocusable:true},d,true);CKEDITOR.ui.dialog.textarea.prototype=new CKEDITOR.ui.dialog.textInput();CKEDITOR.ui.dialog.select.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement(),{getInputElement:function(){return this._.select.getElement();},add:function(h,i,j){var k=new CKEDITOR.dom.element('option',this.getDialog().getParentEditor().document),l=this.getInputElement().$;k.$.text=h;k.$.value=i===undefined||i===null?h:i;if(j===undefined||j===null){if(CKEDITOR.env.ie)l.add(k.$);else l.add(k.$,null);}else l.add(k.$,j);return this;},remove:function(h){var i=this.getInputElement().$;i.remove(h);return this;},clear:function(){var h=this.getInputElement().$;while(h.length>0)h.remove(0);return this;},keyboardFocusable:true},d,true);CKEDITOR.ui.dialog.checkbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(),{getInputElement:function(){return this._.checkbox.getElement();},setValue:function(h){this.getInputElement().$.checked=h;this.fire('change',{value:h});},getValue:function(){return this.getInputElement().$.checked;},accessKeyUp:function(){this.setValue(!this.getValue());},eventProcessors:{onChange:function(h,i){if(!CKEDITOR.env.ie)return e.onChange.apply(this,arguments);else{h.on('load',function(){var j=this._.checkbox.getElement();j.on('propertychange',function(k){k=k.data.$;if(k.propertyName=='checked')this.fire('change',{value:j.$.checked});},this);},this);this.on('change',i);}return null;}},keyboardFocusable:true},d,true);CKEDITOR.ui.dialog.radio.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(),{setValue:function(h){var i=this._.children,j;for(var k=0;k<i.length&&(j=i[k]);k++)j.getElement().$.checked=j.getValue()==h;this.fire('change',{value:h});},getValue:function(){var h=this._.children;for(var i=0;i<h.length;i++)if(h[i].getElement().$.checked)return h[i].getValue();return null;},accessKeyUp:function(){var h=this._.children,i;for(i=0;i<h.length;i++)if(h[i].getElement().$.checked){h[i].getElement().focus();return;}h[0].getElement().focus();},eventProcessors:{onChange:function(h,i){if(!CKEDITOR.env.ie)return e.onChange.apply(this,arguments);else{h.on('load',function(){var j=this._.children,k=this;for(var l=0;l<j.length;l++){var m=j[l].getElement();m.on('propertychange',function(n){n=n.data.$;if(n.propertyName=='checked'&&this.$.checked)k.fire('change',{value:this.getAttribute('value')});});}},this);this.on('change',i);}return null;}},keyboardFocusable:true},d,true);CKEDITOR.ui.dialog.file.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement(),d,{getInputElement:function(){var h=CKEDITOR.document.getById(this._.frameId).getFrameDocument();
+return h.$.forms.length>0?new CKEDITOR.dom.element(h.$.forms[0].elements[0]):this.getElement();},submit:function(){this.getInputElement().getParent().$.submit();return this;},getAction:function(h){return this.getInputElement().getParent().$.action;},reset:function(){var h=CKEDITOR.document.getById(this._.frameId),i=h.getFrameDocument(),j=this._.definition,k=this._.buttons;function l(){i.$.open();if(CKEDITOR.env.isCustomDomain())i.$.domain=document.domain;var m='';if(j.size)m=j.size-(CKEDITOR.env.ie?7:0);i.$.write(['<html><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">','<form enctype="multipart/form-data" method="POST" action="',CKEDITOR.tools.htmlEncode(j.action),'">','<input type="file" name="',CKEDITOR.tools.htmlEncode(j.id||'cke_upload'),'" size="',CKEDITOR.tools.htmlEncode(m>0?m:''),'" />','</form>','</body></html>'].join(''));i.$.close();for(var n=0;n<k.length;n++)k[n].enable();};if(CKEDITOR.env.gecko)setTimeout(l,500);else l();},getValue:function(){return '';},eventProcessors:e,keyboardFocusable:true},true);CKEDITOR.ui.dialog.fileButton.prototype=new CKEDITOR.ui.dialog.button();CKEDITOR.dialog.addUIElement('text',b);CKEDITOR.dialog.addUIElement('password',b);CKEDITOR.dialog.addUIElement('textarea',c);CKEDITOR.dialog.addUIElement('checkbox',c);CKEDITOR.dialog.addUIElement('radio',c);CKEDITOR.dialog.addUIElement('button',c);CKEDITOR.dialog.addUIElement('select',c);CKEDITOR.dialog.addUIElement('file',c);CKEDITOR.dialog.addUIElement('fileButton',c);CKEDITOR.dialog.addUIElement('html',c);})();
Index: /trunk/filemanager/tp/ckeditor/plugins/flash/dialogs/flash.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/flash/dialogs/flash.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/flash/dialogs/flash.js	(revision 2000)
@@ -0,0 +1,9 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=1,b=2,c=4,d={id:[{type:a,name:'id'}],classid:[{type:a,name:'classid'}],codebase:[{type:a,name:'codebase'}],pluginspage:[{type:c,name:'pluginspage'}],src:[{type:b,name:'movie'},{type:c,name:'src'}],name:[{type:c,name:'name'}],align:[{type:a,name:'align'}],title:[{type:a,name:'title'},{type:c,name:'title'}],'class':[{type:a,name:'class'},{type:c,name:'class'}],width:[{type:a,name:'width'},{type:c,name:'width'}],height:[{type:a,name:'height'},{type:c,name:'height'}],hSpace:[{type:a,name:'hSpace'},{type:c,name:'hSpace'}],vSpace:[{type:a,name:'vSpace'},{type:c,name:'vSpace'}],style:[{type:a,name:'style'},{type:c,name:'style'}],type:[{type:c,name:'type'}]},e=['play','loop','menu','quality','scale','salign','wmode','bgcolor','base','flashvars','allowScriptAccess','allowFullScreen'];for(var f=0;f<e.length;f++)d[e[f]]=[{type:c,name:e[f]},{type:b,name:e[f]}];e=['allowFullScreen','play','loop','menu'];for(f=0;f<e.length;f++)d[e[f]][0]['default']=d[e[f]][1]['default']=true;function g(i,j,k){var q=this;var l=d[q.id];if(!l)return;var m=q instanceof CKEDITOR.ui.dialog.checkbox;for(var n=0;n<l.length;n++){var o=l[n];switch(o.type){case a:if(!i)continue;if(i.getAttribute(o.name)!==null){var p=i.getAttribute(o.name);if(m)q.setValue(p.toLowerCase()=='true');else q.setValue(p);return;}else if(m)q.setValue(!!o['default']);break;case b:if(!i)continue;if(o.name in k){p=k[o.name];if(m)q.setValue(p.toLowerCase()=='true');else q.setValue(p);return;}else if(m)q.setValue(!!o['default']);break;case c:if(!j)continue;if(j.getAttribute(o.name)){p=j.getAttribute(o.name);if(m)q.setValue(p.toLowerCase()=='true');else q.setValue(p);return;}else if(m)q.setValue(!!o['default']);}}};function h(i,j,k){var s=this;var l=d[s.id];if(!l)return;var m=s.getValue()==='',n=s instanceof CKEDITOR.ui.dialog.checkbox;for(var o=0;o<l.length;o++){var p=l[o];switch(p.type){case a:if(!i)continue;var q=s.getValue();if(m||n&&q===p['default'])i.removeAttribute(p.name);else i.setAttribute(p.name,q);break;case b:if(!i)continue;q=s.getValue();if(m||n&&q===p['default']){if(p.name in k)k[p.name].remove();}else if(p.name in k)k[p.name].setAttribute('value',q);else{var r=CKEDITOR.dom.element.createFromHtml('<cke:param></cke:param>',i.getDocument());r.setAttributes({name:p.name,value:q});if(i.getChildCount()<1)r.appendTo(i);else r.insertBefore(i.getFirst());}break;case c:if(!j)continue;q=s.getValue();if(m||n&&q===p['default'])j.removeAttribute(p.name);else j.setAttribute(p.name,q);}}};CKEDITOR.dialog.add('flash',function(i){var j=!i.config.flashEmbedTagOnly,k=i.config.flashAddEmbedTag||i.config.flashEmbedTagOnly,l='<div>'+CKEDITOR.tools.htmlEncode(i.lang.image.preview)+'<br>'+'<div id="FlashPreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div>'+'<div id="FlashPreviewBox"></div></div>';
+return{title:i.lang.flash.title,minWidth:420,minHeight:310,onShow:function(){var y=this;y.fakeImage=y.objectNode=y.embedNode=null;var m=y.getSelectedElement();if(m&&m.getAttribute('_cke_real_element_type')&&m.getAttribute('_cke_real_element_type')=='flash'){y.fakeImage=m;var n=i.restoreRealElement(m),o=null,p=null,q={};if(n.getName()=='cke:object'){o=n;var r=o.getElementsByTag('embed','cke');if(r.count()>0)p=r.getItem(0);var s=o.getElementsByTag('param','cke');for(var t=0,u=s.count();t<u;t++){var v=s.getItem(t),w=v.getAttribute('name'),x=v.getAttribute('value');q[w]=x;}}else if(n.getName()=='cke:embed')p=n;y.objectNode=o;y.embedNode=p;y.setupContent(o,p,q,m);}},onOk:function(){var v=this;var m=null,n=null,o=null;if(!v.fakeImage){if(j){m=CKEDITOR.dom.element.createFromHtml('<cke:object></cke:object>',i.document);var p={classid:'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',codebase:'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'};m.setAttributes(p);}if(k){n=CKEDITOR.dom.element.createFromHtml('<cke:embed></cke:embed>',i.document);n.setAttributes({type:'application/x-shockwave-flash',pluginspage:'http://www.macromedia.com/go/getflashplayer'});if(m)n.appendTo(m);}}else{m=v.objectNode;n=v.embedNode;}if(m){o={};var q=m.getElementsByTag('param','cke');for(var r=0,s=q.count();r<s;r++)o[q.getItem(r).getAttribute('name')]=q.getItem(r);}var t={};v.commitContent(m,n,o,t);var u=i.createFakeElement(m||n,'cke_flash','flash',true);u.setStyles(t);if(v.fakeImage)u.replace(v.fakeImage);else i.insertElement(u);},onHide:function(){if(this.preview)this.preview.setHtml('');},contents:[{id:'info',label:i.lang.common.generalTab,accessKey:'I',elements:[{type:'vbox',padding:0,children:[{type:'html',html:'<span>'+CKEDITOR.tools.htmlEncode(i.lang.image.url)+'</span>'},{type:'hbox',widths:['280px','110px'],align:'right',children:[{id:'src',type:'text',label:'',validate:CKEDITOR.dialog.validate.notEmpty(i.lang.flash.validateSrc),setup:g,commit:h,onLoad:function(){var m=this.getDialog(),n=function(o){m.preview.setHtml('<embed height="100%" width="100%" src="'+CKEDITOR.tools.htmlEncode(o)+'" type="application/x-shockwave-flash"></embed>');};m.preview=m.getContentElement('info','preview').getElement().getChild(3);this.on('change',function(o){if(o.data&&o.data.value)n(o.data.value);});this.getInputElement().on('change',function(o){n(this.getValue());},this);}},{type:'button',id:'browse',filebrowser:'info:src',hidden:true,align:'center',label:i.lang.common.browseServer}]}]},{type:'hbox',widths:['25%','25%','25%','25%','25%'],children:[{type:'text',id:'width',style:'width:95px',label:i.lang.flash.width,validate:CKEDITOR.dialog.validate.integer(i.lang.flash.validateWidth),setup:function(m,n,o,p){g.apply(this,arguments);
+if(p){var q=parseInt(p.$.style.width,10);if(!isNaN(q))this.setValue(q);}},commit:function(m,n,o,p){h.apply(this,arguments);if(this.getValue())p.width=this.getValue()+'px';}},{type:'text',id:'height',style:'width:95px',label:i.lang.flash.height,validate:CKEDITOR.dialog.validate.integer(i.lang.flash.validateHeight),setup:function(m,n,o,p){g.apply(this,arguments);if(p){var q=parseInt(p.$.style.height,10);if(!isNaN(q))this.setValue(q);}},commit:function(m,n,o,p){h.apply(this,arguments);if(this.getValue())p.height=this.getValue()+'px';}},{type:'text',id:'hSpace',style:'width:95px',label:i.lang.flash.hSpace,validate:CKEDITOR.dialog.validate.integer(i.lang.flash.validateHSpace),setup:g,commit:h},{type:'text',id:'vSpace',style:'width:95px',label:i.lang.flash.vSpace,validate:CKEDITOR.dialog.validate.integer(i.lang.flash.validateVSpace),setup:g,commit:h}]},{type:'vbox',children:[{type:'html',id:'preview',style:'width:95%;',html:l}]}]},{id:'Upload',hidden:true,filebrowser:'uploadButton',label:i.lang.common.upload,elements:[{type:'file',id:'upload',label:i.lang.common.upload,size:38},{type:'fileButton',id:'uploadButton',label:i.lang.common.uploadSubmit,filebrowser:'info:src','for':['Upload','upload']}]},{id:'properties',label:i.lang.flash.propertiesTab,elements:[{type:'hbox',widths:['50%','50%'],children:[{id:'scale',type:'select',label:i.lang.flash.scale,'default':'',style:'width : 100%;',items:[[i.lang.common.notSet,''],[i.lang.flash.scaleAll,'showall'],[i.lang.flash.scaleNoBorder,'noborder'],[i.lang.flash.scaleFit,'exactfit']],setup:g,commit:h},{id:'allowScriptAccess',type:'select',label:i.lang.flash.access,'default':'',style:'width : 100%;',items:[[i.lang.common.notSet,''],[i.lang.flash.accessAlways,'always'],[i.lang.flash.accessSameDomain,'samedomain'],[i.lang.flash.accessNever,'never']],setup:g,commit:h}]},{type:'hbox',widths:['50%','50%'],children:[{id:'wmode',type:'select',label:i.lang.flash.windowMode,'default':'',style:'width : 100%;',items:[[i.lang.common.notSet,''],[i.lang.flash.windowModeWindow,'window'],[i.lang.flash.windowModeOpaque,'opaque'],[i.lang.flash.windowModeTransparent,'transparent']],setup:g,commit:h},{id:'quality',type:'select',label:i.lang.flash.quality,'default':'high',style:'width : 100%;',items:[[i.lang.common.notSet,''],[i.lang.flash.qualityBest,'best'],[i.lang.flash.qualityHigh,'high'],[i.lang.flash.qualityAutoHigh,'autohigh'],[i.lang.flash.qualityMedium,'medium'],[i.lang.flash.qualityAutoLow,'autolow'],[i.lang.flash.qualityLow,'low']],setup:g,commit:h}]},{type:'hbox',widths:['50%','50%'],children:[{id:'align',type:'select',label:i.lang.flash.align,'default':'',style:'width : 100%;',items:[[i.lang.common.notSet,''],[i.lang.image.alignLeft,'left'],[i.lang.image.alignAbsBottom,'absBottom'],[i.lang.image.alignAbsMiddle,'absMiddle'],[i.lang.image.alignBaseline,'baseline'],[i.lang.image.alignBottom,'bottom'],[i.lang.image.alignMiddle,'middle'],[i.lang.image.alignRight,'right'],[i.lang.image.alignTextTop,'textTop'],[i.lang.image.alignTop,'top']],setup:g,commit:h},{type:'html',html:'<div></div>'}]},{type:'vbox',padding:0,children:[{type:'html',html:CKEDITOR.tools.htmlEncode(i.lang.flash.flashvars)},{type:'checkbox',id:'menu',label:i.lang.flash.chkMenu,'default':true,setup:g,commit:h},{type:'checkbox',id:'play',label:i.lang.flash.chkPlay,'default':true,setup:g,commit:h},{type:'checkbox',id:'loop',label:i.lang.flash.chkLoop,'default':true,setup:g,commit:h},{type:'checkbox',id:'allowFullScreen',label:i.lang.flash.chkFull,'default':true,setup:g,commit:h}]}]},{id:'advanced',label:i.lang.common.advancedTab,elements:[{type:'hbox',widths:['45%','55%'],children:[{type:'text',id:'id',label:i.lang.common.id,setup:g,commit:h},{type:'text',id:'title',label:i.lang.common.advisoryTitle,setup:g,commit:h}]},{type:'hbox',widths:['45%','55%'],children:[{type:'text',id:'bgcolor',label:i.lang.flash.bgcolor,setup:g,commit:h},{type:'text',id:'class',label:i.lang.common.cssClass,setup:g,commit:h}]},{type:'text',id:'style',label:i.lang.common.cssStyle,setup:g,commit:h}]}]};
+});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/flash/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/flash/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/flash/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=/\.swf(?:$|\?)/i,b=/^\d+(?:\.\d+)?$/;function c(f){if(b.test(f))return f+'px';return f;};function d(f){var g=f.attributes;return g.type=='application/x-shockwave-flash'||a.test(g.src||'');};function e(f,g){var h=f.createFakeParserElement(g,'cke_flash','flash',true),i=h.attributes.style||'',j=g.attributes.width,k=g.attributes.height;if(typeof j!='undefined')i=h.attributes.style=i+'width:'+c(j)+';';if(typeof k!='undefined')i=h.attributes.style=i+'height:'+c(k)+';';return h;};CKEDITOR.plugins.add('flash',{init:function(f){f.addCommand('flash',new CKEDITOR.dialogCommand('flash'));f.ui.addButton('Flash',{label:f.lang.common.flash,command:'flash'});CKEDITOR.dialog.add('flash',this.path+'dialogs/flash.js');f.addCss('img.cke_flash{background-image: url('+CKEDITOR.getUrl(this.path+'images/placeholder.png')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 80px;'+'height: 80px;'+'}');if(f.addMenuItems)f.addMenuItems({flash:{label:f.lang.flash.properties,command:'flash',group:'flash'}});if(f.contextMenu)f.contextMenu.addListener(function(g,h){if(g&&g.is('img')&&g.getAttribute('_cke_real_element_type')=='flash')return{flash:CKEDITOR.TRISTATE_OFF};});},afterInit:function(f){var g=f.dataProcessor,h=g&&g.dataFilter;if(h)h.addRules({elements:{'cke:object':function(i){var j=i.attributes,k=j.classid&&String(j.classid).toLowerCase();if(!k){for(var l=0;l<i.children.length;l++)if(i.children[l].name=='embed'){if(!d(i.children[l]))return null;return e(f,i);}return null;}return e(f,i);},'cke:embed':function(i){if(!d(i))return null;return e(f,i);}}},5);},requires:['fakeobjects']});})();CKEDITOR.tools.extend(CKEDITOR.config,{flashEmbedTagOnly:false,flashAddEmbedTag:true,flashConvertOnEdit:false});
Index: /trunk/filemanager/tp/ckeditor/plugins/justify/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/justify/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/justify/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=/(-moz-|-webkit-|start|auto)/i;function b(e,f){var g=f.block||f.blockLimit;if(!g||g.getName()=='body')return CKEDITOR.TRISTATE_OFF;var h=g.getComputedStyle('text-align').replace(a,'');if(!h&&this.isDefaultAlign||h==this.value)return CKEDITOR.TRISTATE_ON;return CKEDITOR.TRISTATE_OFF;};function c(e){var f=e.editor.getCommand(this.name);f.state=b.call(this,e.editor,e.data.path);f.fire('state');};function d(e,f,g){var j=this;j.name=f;j.value=g;var h=e.config.contentsLangDirection;j.isDefaultAlign=g=='left'&&h=='ltr'||g=='right'&&h=='rtl';var i=e.config.justifyClasses;if(i){switch(g){case 'left':j.cssClassName=i[0];break;case 'center':j.cssClassName=i[1];break;case 'right':j.cssClassName=i[2];break;case 'justify':j.cssClassName=i[3];break;}j.cssClassRegex=new RegExp('(?:^|\\s+)(?:'+i.join('|')+')(?=$|\\s)');}};d.prototype={exec:function(e){var n=this;var f=e.getSelection();if(!f)return;var g=f.createBookmarks(),h=f.getRanges(),i=n.cssClassName,j,k;for(var l=h.length-1;l>=0;l--){j=h[l].createIterator();while(k=j.getNextParagraph()){k.removeAttribute('align');if(i){var m=k.$.className=CKEDITOR.tools.ltrim(k.$.className.replace(n.cssClassRegex,''));if(n.state==CKEDITOR.TRISTATE_OFF&&!n.isDefaultAlign)k.addClass(i);else if(!m)k.removeAttribute('class');}else if(n.state==CKEDITOR.TRISTATE_OFF&&!n.isDefaultAlign)k.setStyle('text-align',n.value);else k.removeStyle('text-align');}}e.focus();e.forceNextSelectionCheck();f.selectBookmarks(g);}};CKEDITOR.plugins.add('justify',{init:function(e){var f=new d(e,'justifyleft','left'),g=new d(e,'justifycenter','center'),h=new d(e,'justifyright','right'),i=new d(e,'justifyblock','justify');e.addCommand('justifyleft',f);e.addCommand('justifycenter',g);e.addCommand('justifyright',h);e.addCommand('justifyblock',i);e.ui.addButton('JustifyLeft',{label:e.lang.justify.left,command:'justifyleft'});e.ui.addButton('JustifyCenter',{label:e.lang.justify.center,command:'justifycenter'});e.ui.addButton('JustifyRight',{label:e.lang.justify.right,command:'justifyright'});e.ui.addButton('JustifyBlock',{label:e.lang.justify.block,command:'justifyblock'});e.on('selectionChange',CKEDITOR.tools.bind(c,f));e.on('selectionChange',CKEDITOR.tools.bind(c,h));e.on('selectionChange',CKEDITOR.tools.bind(c,g));e.on('selectionChange',CKEDITOR.tools.bind(c,i));},requires:['domiterator']});})();CKEDITOR.tools.extend(CKEDITOR.config,{justifyClasses:null});
Index: /trunk/filemanager/tp/ckeditor/plugins/link/dialogs/anchor.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/link/dialogs/anchor.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/link/dialogs/anchor.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('anchor',function(a){var b=function(c,d,e){var g=this;g.editMode=true;g.editObj=e;var f=g.editObj.getAttribute('name');if(f)g.setValueOf('info','txtName',f);else g.setValueOf('info','txtName','');};return{title:a.lang.anchor.title,minWidth:300,minHeight:60,onOk:function(){var f=this;var c=f.getValueOf('info','txtName'),d=CKEDITOR.env.ie?a.document.createElement('<a name="'+CKEDITOR.tools.htmlEncode(c)+'">'):a.document.createElement('a');if(f.editMode){f.editObj.copyAttributes(d,{name:1});f.editObj.moveChildren(d);}d.removeAttribute('_cke_saved_name');d.setAttribute('name',c);var e=a.createFakeElement(d,'cke_anchor','anchor');if(!f.editMode)a.insertElement(e);else{e.replace(f.fakeObj);a.getSelection().selectElement(e);}return true;},onShow:function(){var e=this;e.editObj=false;e.fakeObj=false;e.editMode=false;var c=a.getSelection(),d=c.getSelectedElement();if(d&&d.getAttribute('_cke_real_element_type')&&d.getAttribute('_cke_real_element_type')=='anchor'){e.fakeObj=d;d=a.restoreRealElement(e.fakeObj);b.apply(e,[a,c,d]);c.selectElement(e.fakeObj);}e.getContentElement('info','txtName').focus();},contents:[{id:'info',label:a.lang.anchor.title,accessKey:'I',elements:[{type:'text',id:'txtName',label:a.lang.anchor.name,validate:function(){if(!this.getValue()){alert(a.lang.anchor.errorName);return false;}return true;}}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/link/dialogs/link.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/link/dialogs/link.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/link/dialogs/link.js	(revision 2000)
@@ -0,0 +1,11 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('link',function(a){var b=function(){var s=this.getDialog(),t=s.getContentElement('target','popupFeatures'),u=s.getContentElement('target','linkTargetName'),v=this.getValue();if(!t||!u)return;t=t.getElement();if(v=='popup'){t.show();u.setLabel(a.lang.link.targetPopupName);}else{t.hide();u.setLabel(a.lang.link.targetFrameName);this.getDialog().setValueOf('target','linkTargetName',v.charAt(0)=='_'?v:'');}},c=function(){var s=this.getDialog(),t=['urlOptions','anchorOptions','emailOptions'],u=this.getValue(),v=s.definition.getContents('upload').hidden;if(u=='url'){if(a.config.linkShowTargetTab)s.showPage('target');if(!v)s.showPage('upload');}else{s.hidePage('target');if(!v)s.hidePage('upload');}for(var w=0;w<t.length;w++){var x=s.getContentElement('info',t[w]);if(!x)continue;x=x.getElement().getParent().getParent();if(t[w]==u+'Options')x.show();else x.hide();}},d=/^mailto:([^?]+)(?:\?(.+))?$/,e=/subject=([^;?:@&=$,\/]*)/,f=/body=([^;?:@&=$,\/]*)/,g=/^#(.*)$/,h=/^((?:http|https|ftp|news):\/\/)?(.*)$/,i=/^(_(?:self|top|parent|blank))$/,j=/\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*/,k=/(?:^|,)([^=]+)=(\d+|yes|no)/gi,l=function(s,t){var u=t?t.getAttribute('_cke_saved_href')||t.getAttribute('href'):'',v='',w='',x=false,y={};if(u){v=u.match(d);w=u.match(g);x=u.match(h);}if(v){var z=u.match(e),A=u.match(f);y.type='email';y.email={};y.email.address=v[1];z&&(y.email.subject=decodeURIComponent(z[1]));A&&(y.email.body=decodeURIComponent(A[1]));}else if(w){y.type='anchor';y.anchor={};y.anchor.name=y.anchor.id=w[1];}else if(u&&x){y.type='url';y.url={};y.url.protocol=x[1];y.url.url=x[2];}else y.type='url';if(t){var B=t.getAttribute('target');y.target={};y.adv={};if(!B){var C=t.getAttribute('_cke_pa_onclick')||t.getAttribute('onclick'),D=C&&C.match(j);if(D){y.target.type='popup';y.target.name=D[1];var E;while(E=k.exec(D[2]))if(E[2]=='yes'||E[2]=='1')y.target[E[1]]=true;else if(isFinite(E[2]))y.target[E[1]]=E[2];}}else{var F=B.match(i);if(F)y.target.type=y.target.name=B;else{y.target.type='frame';y.target.name=B;}}var G=this,H=function(N,O){var P=t.getAttribute(O);if(P!==null)y.adv[N]=P||'';};H('advId','id');H('advLangDir','dir');H('advAccessKey','accessKey');H('advName','name');H('advLangCode','lang');H('advTabIndex','tabindex');H('advTitle','title');H('advContentType','type');H('advCSSClasses','class');H('advCharset','charset');H('advStyles','style');}var I=s.document.getElementsByTag('img'),J=new CKEDITOR.dom.nodeList(s.document.$.anchors),K=y.anchors=[];
+for(var L=0;L<I.count();L++){var M=I.getItem(L);if(M.getAttribute('_cke_realelement')&&M.getAttribute('_cke_real_element_type')=='anchor')K.push(s.restoreRealElement(M));}for(L=0;L<J.count();L++)K.push(J.getItem(L));for(L=0;L<K.length;L++){M=K[L];K[L]={name:M.getAttribute('name'),id:M.getAttribute('id')};}this._.selectedElement=t;return y;},m=function(s,t){if(t[s])this.setValue(t[s][this.id]||'');},n=function(s){return m.call(this,'target',s);},o=function(s){return m.call(this,'adv',s);},p=function(s,t){if(!t[s])t[s]={};t[s][this.id]=this.getValue()||'';},q=function(s){return p.call(this,'target',s);},r=function(s){return p.call(this,'adv',s);};return{title:a.lang.link.title,minWidth:350,minHeight:230,contents:[{id:'info',label:a.lang.link.info,title:a.lang.link.info,elements:[{id:'linkType',type:'select',label:a.lang.link.type,'default':'url',items:[[a.lang.common.url,'url'],[a.lang.link.toAnchor,'anchor'],[a.lang.link.toEmail,'email']],onChange:c,setup:function(s){if(s.type)this.setValue(s.type);},commit:function(s){s.type=this.getValue();}},{type:'vbox',id:'urlOptions',children:[{type:'hbox',widths:['25%','75%'],children:[{id:'protocol',type:'select',label:a.lang.common.protocol,'default':'http://',style:'width : 100%;',items:[['http://'],['https://'],['ftp://'],['news://'],['<other>','']],setup:function(s){if(s.url)this.setValue(s.url.protocol);},commit:function(s){if(!s.url)s.url={};s.url.protocol=this.getValue();}},{type:'text',id:'url',label:a.lang.common.url,onLoad:function(){this.allowOnChange=true;},onKeyUp:function(){var x=this;x.allowOnChange=false;var s=x.getDialog().getContentElement('info','protocol'),t=x.getValue(),u=/^(http|https|ftp|news):\/\/(?=.)/gi,v=/^((javascript:)|[#\/\.])/gi,w=u.exec(t);if(w){x.setValue(t.substr(w[0].length));s.setValue(w[0].toLowerCase());}else if(v.test(t))s.setValue('');x.allowOnChange=true;},onChange:function(){if(this.allowOnChange)this.onKeyUp();},validate:function(){var s=this.getDialog();if(s.getContentElement('info','linkType')&&s.getValueOf('info','linkType')!='url')return true;if(this.getDialog().fakeObj)return true;var t=CKEDITOR.dialog.validate.notEmpty(a.lang.link.noUrl);return t.apply(this);},setup:function(s){var u=this;u.allowOnChange=false;if(s.url)u.setValue(s.url.url);u.allowOnChange=true;var t=u.getDialog().getContentElement('info','linkType');if(t&&t.getValue()=='url')u.select();},commit:function(s){if(!s.url)s.url={};s.url.url=this.getValue();this.allowOnChange=false;}}],setup:function(s){if(!this.getDialog().getContentElement('info','linkType'))this.getElement().show();
+}},{type:'button',id:'browse',hidden:'true',filebrowser:'info:url',label:a.lang.common.browseServer}]},{type:'vbox',id:'anchorOptions',width:260,align:'center',padding:0,children:[{type:'html',id:'selectAnchorText',html:CKEDITOR.tools.htmlEncode(a.lang.link.selectAnchor),setup:function(s){if(s.anchors.length>0)this.getElement().show();else this.getElement().hide();}},{type:'html',id:'noAnchors',style:'text-align: center;',html:'<div>'+CKEDITOR.tools.htmlEncode(a.lang.link.noAnchors)+'</div>',setup:function(s){if(s.anchors.length<1)this.getElement().show();else this.getElement().hide();}},{type:'hbox',id:'selectAnchor',children:[{type:'select',id:'anchorName','default':'',label:a.lang.link.anchorName,style:'width: 100%;',items:[['']],setup:function(s){var v=this;v.clear();v.add('');for(var t=0;t<s.anchors.length;t++)if(s.anchors[t].name)v.add(s.anchors[t].name);if(s.anchor)v.setValue(s.anchor.name);var u=v.getDialog().getContentElement('info','linkType');if(u&&u.getValue()=='email')v.focus();},commit:function(s){if(!s.anchor)s.anchor={};s.anchor.name=this.getValue();}},{type:'select',id:'anchorId','default':'',label:a.lang.link.anchorId,style:'width: 100%;',items:[['']],setup:function(s){var u=this;u.clear();u.add('');for(var t=0;t<s.anchors.length;t++)if(s.anchors[t].id)u.add(s.anchors[t].id);if(s.anchor)u.setValue(s.anchor.id);},commit:function(s){if(!s.anchor)s.anchor={};s.anchor.id=this.getValue();}}],setup:function(s){if(s.anchors.length>0)this.getElement().show();else this.getElement().hide();}}],setup:function(s){if(!this.getDialog().getContentElement('info','linkType'))this.getElement().hide();}},{type:'vbox',id:'emailOptions',padding:1,children:[{type:'text',id:'emailAddress',label:a.lang.link.emailAddress,validate:function(){var s=this.getDialog();if(!s.getContentElement('info','linkType')||s.getValueOf('info','linkType')!='email')return true;var t=CKEDITOR.dialog.validate.notEmpty(a.lang.link.noEmail);return t.apply(this);},setup:function(s){if(s.email)this.setValue(s.email.address);var t=this.getDialog().getContentElement('info','linkType');if(t&&t.getValue()=='email')this.select();},commit:function(s){if(!s.email)s.email={};s.email.address=this.getValue();}},{type:'text',id:'emailSubject',label:a.lang.link.emailSubject,setup:function(s){if(s.email)this.setValue(s.email.subject);},commit:function(s){if(!s.email)s.email={};s.email.subject=this.getValue();}},{type:'textarea',id:'emailBody',label:a.lang.link.emailBody,rows:3,'default':'',setup:function(s){if(s.email)this.setValue(s.email.body);
+},commit:function(s){if(!s.email)s.email={};s.email.body=this.getValue();}}],setup:function(s){if(!this.getDialog().getContentElement('info','linkType'))this.getElement().hide();}}]},{id:'target',label:a.lang.link.target,title:a.lang.link.target,elements:[{type:'hbox',widths:['50%','50%'],children:[{type:'select',id:'linkTargetType',label:a.lang.link.target,'default':'notSet',style:'width : 100%;',items:[[a.lang.link.targetNotSet,'notSet'],[a.lang.link.targetFrame,'frame'],[a.lang.link.targetPopup,'popup'],[a.lang.link.targetNew,'_blank'],[a.lang.link.targetTop,'_top'],[a.lang.link.targetSelf,'_self'],[a.lang.link.targetParent,'_parent']],onChange:b,setup:function(s){if(s.target)this.setValue(s.target.type);},commit:function(s){if(!s.target)s.target={};s.target.type=this.getValue();}},{type:'text',id:'linkTargetName',label:a.lang.link.targetFrameName,'default':'',setup:function(s){if(s.target)this.setValue(s.target.name);},commit:function(s){if(!s.target)s.target={};s.target.name=this.getValue();}}]},{type:'vbox',width:260,align:'center',padding:2,id:'popupFeatures',children:[{type:'html',html:CKEDITOR.tools.htmlEncode(a.lang.link.popupFeatures)},{type:'hbox',children:[{type:'checkbox',id:'resizable',label:a.lang.link.popupResizable,setup:n,commit:q},{type:'checkbox',id:'status',label:a.lang.link.popupStatusBar,setup:n,commit:q}]},{type:'hbox',children:[{type:'checkbox',id:'location',label:a.lang.link.popupLocationBar,setup:n,commit:q},{type:'checkbox',id:'toolbar',label:a.lang.link.popupToolbar,setup:n,commit:q}]},{type:'hbox',children:[{type:'checkbox',id:'menubar',label:a.lang.link.popupMenuBar,setup:n,commit:q},{type:'checkbox',id:'fullscreen',label:a.lang.link.popupFullScreen,setup:n,commit:q}]},{type:'hbox',children:[{type:'checkbox',id:'scrollbars',label:a.lang.link.popupScrollBars,setup:n,commit:q},{type:'checkbox',id:'dependent',label:a.lang.link.popupDependent,setup:n,commit:q}]},{type:'hbox',children:[{type:'text',widths:['30%','70%'],labelLayout:'horizontal',label:a.lang.link.popupWidth,id:'width',setup:n,commit:q},{type:'text',labelLayout:'horizontal',widths:['55%','45%'],label:a.lang.link.popupLeft,id:'left',setup:n,commit:q}]},{type:'hbox',children:[{type:'text',labelLayout:'horizontal',widths:['30%','70%'],label:a.lang.link.popupHeight,id:'height',setup:n,commit:q},{type:'text',labelLayout:'horizontal',label:a.lang.link.popupTop,widths:['55%','45%'],id:'top',setup:n,commit:q}]}]}]},{id:'upload',label:a.lang.link.upload,title:a.lang.link.upload,hidden:true,filebrowser:'uploadButton',elements:[{type:'file',id:'upload',label:a.lang.common.upload,style:'height:40px',size:29},{type:'fileButton',id:'uploadButton',label:a.lang.common.uploadSubmit,filebrowser:'info:url','for':['upload','upload']}]},{id:'advanced',label:a.lang.link.advanced,title:a.lang.link.advanced,elements:[{type:'vbox',padding:1,children:[{type:'hbox',widths:['45%','35%','20%'],children:[{type:'text',id:'advId',label:a.lang.link.id,setup:o,commit:r},{type:'select',id:'advLangDir',label:a.lang.link.langDir,'default':'',style:'width:110px',items:[[a.lang.link.langDirNotSet,''],[a.lang.link.langDirLTR,'ltr'],[a.lang.link.langDirRTL,'rtl']],setup:o,commit:r},{type:'text',id:'advAccessKey',width:'80px',label:a.lang.link.acccessKey,maxLength:1,setup:o,commit:r}]},{type:'hbox',widths:['45%','35%','20%'],children:[{type:'text',label:a.lang.link.name,id:'advName',setup:o,commit:r},{type:'text',label:a.lang.link.langCode,id:'advLangCode',width:'110px','default':'',setup:o,commit:r},{type:'text',label:a.lang.link.tabIndex,id:'advTabIndex',width:'80px',maxLength:5,setup:o,commit:r}]}]},{type:'vbox',padding:1,children:[{type:'hbox',widths:['45%','55%'],children:[{type:'text',label:a.lang.link.advisoryTitle,'default':'',id:'advTitle',setup:o,commit:r},{type:'text',label:a.lang.link.advisoryContentType,'default':'',id:'advContentType',setup:o,commit:r}]},{type:'hbox',widths:['45%','55%'],children:[{type:'text',label:a.lang.link.cssClasses,'default':'',id:'advCSSClasses',setup:o,commit:r},{type:'text',label:a.lang.link.charset,'default':'',id:'advCharset',setup:o,commit:r}]},{type:'hbox',children:[{type:'text',label:a.lang.link.styles,'default':'',id:'advStyles',setup:o,commit:r}]}]}]}],onShow:function(){var y=this;
+y.fakeObj=false;var s=y.getParentEditor(),t=s.getSelection(),u=t.getRanges(),v=null,w=y;if(u.length==1){var x=u[0].getCommonAncestor(true);v=x.getAscendant('a',true);if(v&&v.getAttribute('href'))t.selectElement(v);else if((v=x.getAscendant('img',true))&&(v.getAttribute('_cke_real_element_type')&&v.getAttribute('_cke_real_element_type')=='anchor')){y.fakeObj=v;v=s.restoreRealElement(y.fakeObj);t.selectElement(y.fakeObj);}else v=null;}y.setupContent(l.apply(y,[s,v]));},onOk:function(){var s={href:'javascript:void(0)/*'+CKEDITOR.tools.getNextNumber()+'*/'},t=[],u={href:s.href},v=this,w=this.getParentEditor();this.commitContent(u);switch(u.type||'url'){case 'url':var x=u.url&&u.url.protocol!=undefined?u.url.protocol:'http://',y=u.url&&u.url.url||'';s._cke_saved_href=y.indexOf('/')===0?y:x+y;break;case 'anchor':var z=u.anchor&&u.anchor.name,A=u.anchor&&u.anchor.id;s._cke_saved_href='#'+(z||A||'');break;case 'email':var B=u.email&&u.email.address,C=u.email&&encodeURIComponent(u.email.subject||''),D=u.email&&encodeURIComponent(u.email.body||''),E=['mailto:',B];if(C||D){var F=[];E.push('?');C&&F.push('subject='+C);D&&F.push('body='+D);E.push(F.join('&'));}s._cke_saved_href=E.join('');break;default:}if(u.target)if(u.target.type=='popup'){var G=["window.open(this.href, '",u.target.name||'',"', '"],H=['resizable','status','location','toolbar','menubar','fullscreen','scrollbars','dependent'],I=H.length,J=function(T){if(u.target[T])H.push(T+'='+u.target[T]);};for(var K=0;K<I;K++)H[K]=H[K]+(u.target[H[K]]?'=yes':'=no');J('width');J('left');J('height');J('top');G.push(H.join(','),"'); return false;");s[CKEDITOR.env.ie||CKEDITOR.env.webkit?'_cke_pa_onclick':'onclick']=G.join('');}else{if(u.target.type!='notSet'&&u.target.name)s.target=u.target.name;t.push('_cke_pa_onclick','onclick');}if(u.adv){var L=function(T,U){var V=u.adv[T];if(V)s[U]=V;else t.push(U);};if(this._.selectedElement)L('advId','id');L('advLangDir','dir');L('advAccessKey','accessKey');L('advName','name');L('advLangCode','lang');L('advTabIndex','tabindex');L('advTitle','title');L('advContentType','type');L('advCSSClasses','class');L('advCharset','charset');L('advStyles','style');}if(!this._.selectedElement){var M=w.getSelection(),N=M.getRanges();if(N.length==1&&N[0].collapsed){var O=new CKEDITOR.dom.text(s._cke_saved_href,w.document);N[0].insertNode(O);N[0].selectNodeContents(O);M.selectRanges(N);}var P=new CKEDITOR.style({element:'a',attributes:s});P.type=CKEDITOR.STYLE_INLINE;P.apply(w.document);if(u.adv&&u.adv.advId){var Q=this.getParentEditor().document.$.getElementsByTagName('a');
+for(K=0;K<Q.length;K++)if(Q[K].href==s.href){Q[K].id=u.adv.advId;break;}}}else{var R=this._.selectedElement;if(CKEDITOR.env.ie&&s.name!=R.getAttribute('name')){var S=new CKEDITOR.dom.element('<a name="'+CKEDITOR.tools.htmlEncode(s.name)+'">',w.document);M=w.getSelection();R.moveChildren(S);R.copyAttributes(S,{name:1});S.replace(R);R=S;M.selectElement(R);}R.setAttributes(s);R.removeAttributes(t);if(R.getAttribute('name'))R.addClass('cke_anchor');else R.removeClass('cke_anchor');if(this.fakeObj)w.createFakeElement(R,'cke_anchor','anchor').replace(this.fakeObj);delete this._.selectedElement;}},onLoad:function(){if(!a.config.linkShowAdvancedTab)this.hidePage('advanced');if(!a.config.linkShowTargetTab)this.hidePage('target');}};});
Index: /trunk/filemanager/tp/ckeditor/plugins/link/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/link/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/link/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('link',{init:function(a){a.addCommand('link',new CKEDITOR.dialogCommand('link'));a.addCommand('anchor',new CKEDITOR.dialogCommand('anchor'));a.addCommand('unlink',new CKEDITOR.unlinkCommand());a.ui.addButton('Link',{label:a.lang.link.toolbar,command:'link'});a.ui.addButton('Unlink',{label:a.lang.unlink,command:'unlink'});a.ui.addButton('Anchor',{label:a.lang.anchor.toolbar,command:'anchor'});CKEDITOR.dialog.add('link',this.path+'dialogs/link.js');CKEDITOR.dialog.add('anchor',this.path+'dialogs/anchor.js');a.addCss('img.cke_anchor{background-image: url('+CKEDITOR.getUrl(this.path+'images/anchor.gif')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 18px;'+'height: 18px;'+'}\n'+'a.cke_anchor'+'{'+'background-image: url('+CKEDITOR.getUrl(this.path+'images/anchor.gif')+');'+'background-position: 0 center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'padding-left: 18px;'+'}');a.on('selectionChange',function(b){var c=a.getCommand('unlink'),d=b.data.path.lastElement.getAscendant('a',true);if(d&&d.getName()=='a'&&d.getAttribute('href'))c.setState(CKEDITOR.TRISTATE_OFF);else c.setState(CKEDITOR.TRISTATE_DISABLED);});if(a.addMenuItems)a.addMenuItems({anchor:{label:a.lang.anchor.menu,command:'anchor',group:'anchor'},link:{label:a.lang.link.menu,command:'link',group:'link',order:1},unlink:{label:a.lang.unlink,command:'unlink',group:'link',order:5}});if(a.contextMenu)a.contextMenu.addListener(function(b,c){if(!b)return null;var d=b.is('img')&&b.getAttribute('_cke_real_element_type')=='anchor';if(!d){if(!(b=b.getAscendant('a',true)))return null;d=b.getAttribute('name')&&!b.getAttribute('href');}return d?{anchor:CKEDITOR.TRISTATE_OFF}:{link:CKEDITOR.TRISTATE_OFF,unlink:CKEDITOR.TRISTATE_OFF};});},afterInit:function(a){var b=a.dataProcessor,c=b&&b.dataFilter;if(c)c.addRules({elements:{a:function(d){var e=d.attributes;if(e.name&&!e.href)return a.createFakeParserElement(d,'cke_anchor','anchor');}}});},requires:['fakeobjects']});CKEDITOR.unlinkCommand=function(){};CKEDITOR.unlinkCommand.prototype={exec:function(a){var b=a.getSelection(),c=b.createBookmarks(),d=b.getRanges(),e,f;for(var g=0;g<d.length;g++){e=d[g].getCommonAncestor(true);f=e.getAscendant('a',true);if(!f)continue;d[g].selectNodeContents(f);}b.selectRanges(d);a.document.$.execCommand('unlink',false,null);b.selectBookmarks(c);}};CKEDITOR.tools.extend(CKEDITOR.config,{linkShowAdvancedTab:true,linkShowTargetTab:true});
Index: /trunk/filemanager/tp/ckeditor/plugins/dialog/dialogDefinition.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/dialog/dialogDefinition.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/dialog/dialogDefinition.js	(revision 2000)
@@ -0,0 +1,4 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
Index: /trunk/filemanager/tp/ckeditor/plugins/dialog/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/dialog/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/dialog/plugin.js	(revision 2000)
@@ -0,0 +1,17 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('dialog',{requires:['dialogui']});CKEDITOR.DIALOG_RESIZE_NONE=0;CKEDITOR.DIALOG_RESIZE_WIDTH=1;CKEDITOR.DIALOG_RESIZE_HEIGHT=2;CKEDITOR.DIALOG_RESIZE_BOTH=3;(function(){function a(A){return!!this._.tabs[A][0].$.offsetHeight;};function b(){var E=this;var A=E._.currentTabId,B=E._.tabIdList.length,C=CKEDITOR.tools.indexOf(E._.tabIdList,A)+B;for(var D=C-1;D>C-B;D--)if(a.call(E,E._.tabIdList[D%B]))return E._.tabIdList[D%B];return null;};function c(){var E=this;var A=E._.currentTabId,B=E._.tabIdList.length,C=CKEDITOR.tools.indexOf(E._.tabIdList,A);for(var D=C+1;D<C+B;D++)if(a.call(E,E._.tabIdList[D%B]))return E._.tabIdList[D%B];return null;};var d={};CKEDITOR.dialog=function(A,B){var C=CKEDITOR.dialog._.dialogDefinitions[B];if(!C){console.log('Error: The dialog "'+B+'" is not defined.');return;}C=CKEDITOR.tools.extend(C(A),f);C=CKEDITOR.tools.clone(C);C=new j(this,C);this.definition=C=CKEDITOR.fire('dialogDefinition',{name:B,definition:C},A).definition;var D=CKEDITOR.document,E=A.theme.buildDialog(A);this._={editor:A,element:E.element,name:B,contentSize:{width:0,height:0},size:{width:0,height:0},updateSize:false,contents:{},buttons:{},accessKeyMap:{},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:false,focusList:[],currentFocusIndex:0,hasFocus:false};this.parts=E.parts;this.parts.dialog.setStyles({position:CKEDITOR.env.ie6Compat?'absolute':'fixed',top:0,left:0,visibility:'hidden'});CKEDITOR.event.call(this);if(C.onLoad)this.on('load',C.onLoad);if(C.onShow)this.on('show',C.onShow);if(C.onHide)this.on('hide',C.onHide);if(C.onOk)this.on('ok',function(O){if(C.onOk.call(this,O)===false)O.data.hide=false;});if(C.onCancel)this.on('cancel',function(O){if(C.onCancel.call(this,O)===false)O.data.hide=false;});var F=this,G=function(O){var P=F._.contents,Q=false;for(var R in P)for(var S in P[R]){Q=O.call(this,P[R][S]);if(Q)return;}};this.on('ok',function(O){G(function(P){if(P.validate){var Q=P.validate(this);if(typeof Q=='string'){alert(Q);Q=false;}if(Q===false){if(P.select)P.select();else P.focus();O.data.hide=false;O.stop();return true;}}});},this,null,0);this.on('cancel',function(O){G(function(P){if(P.isChanged()){if(!confirm(A.lang.common.confirmCancel))O.data.hide=false;return true;}});},this,null,0);this.parts.close.on('click',function(O){if(this.fire('cancel',{hide:true}).hide!==false)this.hide();},this);function H(O){var P=F._.focusList,Q=O?1:-1;if(P.length<1)return;var R=(F._.currentFocusIndex+Q+P.length)%(P.length);
+while(!P[R].isFocusable()){R=(R+Q+P.length)%(P.length);if(R==F._.currentFocusIndex)break;}P[R].focus();if(P[R].type=='text')P[R].select();};function I(O){if(F!=CKEDITOR.dialog._.currentTop)return;var P=O.data.getKeystroke(),Q=false;if(P==9||P==CKEDITOR.SHIFT+9){var R=P==CKEDITOR.SHIFT+9;if(F._.tabBarMode){var S=R?b.call(F):c.call(F);F.selectPage(S);F._.tabs[S][0].focus();}else H(!R);Q=true;}else if(P==CKEDITOR.ALT+121&&!F._.tabBarMode){F._.tabBarMode=true;F._.tabs[F._.currentTabId][0].focus();Q=true;}else if((P==37||P==39)&&(F._.tabBarMode)){S=P==37?b.call(F):c.call(F);F.selectPage(S);F._.tabs[S][0].focus();Q=true;}if(Q){O.stop();O.data.preventDefault();}};this.on('show',function(){CKEDITOR.document.on('keydown',I,this,null,0);if(CKEDITOR.env.ie6Compat){var O=o.getChild(0).getFrameDocument();O.on('keydown',I,this,null,0);}});this.on('hide',function(){CKEDITOR.document.removeListener('keydown',I);});this.on('iframeAdded',function(O){var P=new CKEDITOR.dom.document(O.data.iframe.$.contentWindow.document);P.on('keydown',I,this,null,0);});this.on('show',function(){var R=this;if(!R._.hasFocus){R._.currentFocusIndex=-1;H(true);if(R._.editor.mode=='wysiwyg'&&CKEDITOR.env.ie){var O=A.document.$.selection,P=O.createRange();if(P)if(P.parentElement&&P.parentElement().ownerDocument==A.document.$||P.item&&P.item(0).ownerDocument==A.document.$){var Q=document.body.createTextRange();Q.moveToElementText(R.getElement().getFirst().$);Q.collapse(true);Q.select();}}}},this,null,4294967295);if(CKEDITOR.env.ie6Compat)this.on('load',function(O){var P=this.getElement(),Q=P.getFirst();Q.remove();Q.appendTo(P);},this);l(this);m(this);new CKEDITOR.dom.text(C.title,CKEDITOR.document).appendTo(this.parts.title);for(var J=0;J<C.contents.length;J++)this.addPage(C.contents[J]);var K=/cke_dialog_tab(\s|$|_)/,L=/cke_dialog_tab(\s|$)/;this.parts.tabs.on('click',function(O){var T=this;var P=O.data.getTarget(),Q=P,R,S;if(!(K.test(P.$.className)||P.getName()=='a'))return;R=P.$.id.substr(0,P.$.id.lastIndexOf('_'));T.selectPage(R);if(T._.tabBarMode){T._.tabBarMode=false;T._.currentFocusIndex=-1;H(true);}O.data.preventDefault();},this);var M=[],N=CKEDITOR.dialog._.uiElementBuilders.hbox.build(this,{type:'hbox',className:'cke_dialog_footer_buttons',widths:[],children:C.buttons},M).getChild();this.parts.footer.setHtml(M.join(''));for(J=0;J<N.length;J++)this._.buttons[N[J].id]=N[J];CKEDITOR.skins.load(A,'dialog');};function e(A,B,C){this.element=B;this.focusIndex=C;this.isFocusable=function(){return true;
+};this.focus=function(){A._.currentFocusIndex=this.focusIndex;this.element.focus();};B.on('keydown',function(D){if(D.data.getKeystroke() in {32:1,13:1})this.fire('click');});B.on('focus',function(){this.fire('mouseover');});B.on('blur',function(){this.fire('mouseout');});};CKEDITOR.dialog.prototype={resize:(function(){return function(A,B){var C=this;if(C._.contentSize&&C._.contentSize.width==A&&C._.contentSize.height==B)return;CKEDITOR.dialog.fire('resize',{dialog:C,skin:C._.editor.skinName,width:A,height:B},C._.editor);C._.contentSize={width:A,height:B};C._.updateSize=true;};})(),getSize:function(){var C=this;if(!C._.updateSize)return C._.size;var A=C._.element.getFirst(),B=C._.size={width:A.$.offsetWidth||0,height:A.$.offsetHeight||0};C._.updateSize=!B.width||!B.height;return B;},move:(function(){var A;return function(B,C){var F=this;var D=F._.element.getFirst();if(A===undefined)A=D.getComputedStyle('position')=='fixed';if(A&&F._.position&&F._.position.x==B&&F._.position.y==C)return;F._.position={x:B,y:C};if(!A){var E=CKEDITOR.document.getWindow().getScrollPosition();B+=E.x;C+=E.y;}D.setStyles({left:(B>0?B:0)+('px'),top:(C>0?C:0)+('px')});};})(),getPosition:function(){return CKEDITOR.tools.extend({},this._.position);},show:function(){if(this._.editor.mode=='wysiwyg'&&CKEDITOR.env.ie)this._.editor.getSelection().lock();var A=this._.element,B=this.definition;if(!(A.getParent()&&A.getParent().equals(CKEDITOR.document.getBody())))A.appendTo(CKEDITOR.document.getBody());else return;if(CKEDITOR.env.gecko&&CKEDITOR.env.version<10900){var C=this.parts.dialog;C.setStyle('position','absolute');setTimeout(function(){C.setStyle('position','fixed');},0);}this.resize(B.minWidth,B.minHeight);this.selectPage(this.definition.contents[0].id);this.reset();if(CKEDITOR.dialog._.currentZIndex===null)CKEDITOR.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex;this._.element.getFirst().setStyle('z-index',CKEDITOR.dialog._.currentZIndex+=10);if(CKEDITOR.dialog._.currentTop===null){CKEDITOR.dialog._.currentTop=this;this._.parentDialog=null;p(this._.editor);CKEDITOR.document.on('keydown',s);CKEDITOR.document.on('keyup',t);for(var D in {keyup:1,keydown:1,keypress:1})CKEDITOR.document.on(D,z);}else{this._.parentDialog=CKEDITOR.dialog._.currentTop;var E=this._.parentDialog.getElement().getFirst();E.$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2);CKEDITOR.dialog._.currentTop=this;}u(this,this,'\x1b',null,function(){this.getButton('cancel')&&this.getButton('cancel').click();
+});this._.hasFocus=false;CKEDITOR.tools.setTimeout(function(){var F=CKEDITOR.document.getWindow().getViewPaneSize(),G=this.getSize();this.move((F.width-B.minWidth)/(2),(F.height-G.height)/(2));this.parts.dialog.setStyle('visibility','');this.fireOnce('load',{});this.fire('show',{});this.foreach(function(H){H.setInitValue&&H.setInitValue();});},100,this);},foreach:function(A){var D=this;for(var B in D._.contents)for(var C in D._.contents[B])A(D._.contents[B][C]);return D;},reset:(function(){var A=function(B){if(B.reset)B.reset();};return function(){this.foreach(A);return this;};})(),setupContent:function(){var A=arguments;this.foreach(function(B){if(B.setup)B.setup.apply(B,A);});},commitContent:function(){var A=arguments;this.foreach(function(B){if(B.commit)B.commit.apply(B,A);});},hide:function(){this.fire('hide',{});var A=this._.element;if(!A.getParent())return;A.remove();this.parts.dialog.setStyle('visibility','hidden');v(this);if(!this._.parentDialog)q();else{var B=this._.parentDialog.getElement().getFirst();B.setStyle('z-index',parseInt(B.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2));}CKEDITOR.dialog._.currentTop=this._.parentDialog;if(!this._.parentDialog){CKEDITOR.dialog._.currentZIndex=null;CKEDITOR.document.removeListener('keydown',s);CKEDITOR.document.removeListener('keyup',t);CKEDITOR.document.removeListener('keypress',t);for(var C in {keyup:1,keydown:1,keypress:1})CKEDITOR.document.removeListener(C,z);var D=this._.editor;D.focus();if(D.mode=='wysiwyg'&&CKEDITOR.env.ie)D.getSelection().unlock(true);}else CKEDITOR.dialog._.currentZIndex-=10;this.foreach(function(E){E.resetInitValue&&E.resetInitValue();});},addPage:function(A){var K=this;var B=[],C=A.label?' title="'+CKEDITOR.tools.htmlEncode(A.label)+'"':'',D=A.elements,E=CKEDITOR.dialog._.uiElementBuilders.vbox.build(K,{type:'vbox',className:'cke_dialog_page_contents',children:A.elements,expand:!!A.expand,padding:A.padding,style:A.style||'width: 100%; height: 100%;'},B),F=CKEDITOR.dom.element.createFromHtml(B.join('')),G=CKEDITOR.dom.element.createFromHtml(['<a class="cke_dialog_tab"',K._.pageCount>0?' cke_last':'cke_first',C,!!A.hidden?' style="display:none"':'',' id="',A.id+'_',CKEDITOR.tools.getNextNumber(),'" href="javascript:void(0)"',' hidefocus="true">',A.label,'</a>'].join(''));if(K._.pageCount===0)K.parts.dialog.addClass('cke_single_page');else K.parts.dialog.removeClass('cke_single_page');K._.tabs[A.id]=[G,F];K._.tabIdList.push(A.id);K._.pageCount++;K._.lastTab=G;
+var H=K._.contents[A.id]={},I,J=E.getChild();while(I=J.shift()){H[I.id]=I;if(typeof I.getChild=='function')J.push.apply(J,I.getChild());}F.setAttribute('name',A.id);F.appendTo(K.parts.contents);G.unselectable();K.parts.tabs.append(G);if(A.accessKey){u(K,K,'CTRL+'+A.accessKey,x,w);K._.accessKeyMap['CTRL+'+A.accessKey]=A.id;}},selectPage:function(A){var F=this;for(var B in F._.tabs){var C=F._.tabs[B][0],D=F._.tabs[B][1];if(B!=A){C.removeClass('cke_dialog_tab_selected');D.hide();}}var E=F._.tabs[A];E[0].addClass('cke_dialog_tab_selected');E[1].show();F._.currentTabId=A;F._.currentTabIndex=CKEDITOR.tools.indexOf(F._.tabIdList,A);},hidePage:function(A){var B=this._.tabs[A]&&this._.tabs[A][0];if(!B)return;B.hide();},showPage:function(A){var B=this._.tabs[A]&&this._.tabs[A][0];if(!B)return;B.show();},getElement:function(){return this._.element;},getName:function(){return this._.name;},getContentElement:function(A,B){return this._.contents[A][B];},getValueOf:function(A,B){return this.getContentElement(A,B).getValue();},setValueOf:function(A,B,C){return this.getContentElement(A,B).setValue(C);},getButton:function(A){return this._.buttons[A];},click:function(A){return this._.buttons[A].click();},disableButton:function(A){return this._.buttons[A].disable();},enableButton:function(A){return this._.buttons[A].enable();},getPageCount:function(){return this._.pageCount;},getParentEditor:function(){return this._.editor;},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement();},addFocusable:function(A,B){var D=this;if(typeof B=='undefined'){B=D._.focusList.length;D._.focusList.push(new e(D,A,B));}else{D._.focusList.splice(B,0,new e(D,A,B));for(var C=B+1;C<D._.focusList.length;C++)D._.focusList[C].focusIndex++;}}};CKEDITOR.tools.extend(CKEDITOR.dialog,{add:function(A,B){if(!this._.dialogDefinitions[A]||typeof B=='function')this._.dialogDefinitions[A]=B;},exists:function(A){return!!this._.dialogDefinitions[A];},getCurrent:function(){return CKEDITOR.dialog._.currentTop;},okButton:(function(){var A=function(B,C){C=C||{};return CKEDITOR.tools.extend({id:'ok',type:'button',label:B.lang.common.ok,'class':'cke_dialog_ui_button_ok',onClick:function(D){var E=D.data.dialog;if(E.fire('ok',{hide:true}).hide!==false)E.hide();}},C,true);};A.type='button';A.override=function(B){return CKEDITOR.tools.extend(function(C){return A(C,B);},{type:'button'},true);};return A;})(),cancelButton:(function(){var A=function(B,C){C=C||{};return CKEDITOR.tools.extend({id:'cancel',type:'button',label:B.lang.common.cancel,'class':'cke_dialog_ui_button_cancel',onClick:function(D){var E=D.data.dialog;
+if(E.fire('cancel',{hide:true}).hide!==false)E.hide();}},C,true);};A.type='button';A.override=function(B){return CKEDITOR.tools.extend(function(C){return A(C,B);},{type:'button'},true);};return A;})(),addUIElement:function(A,B){this._.uiElementBuilders[A]=B;}});CKEDITOR.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};CKEDITOR.event.implementOn(CKEDITOR.dialog);CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype,true);var f={resizable:CKEDITOR.DIALOG_RESIZE_NONE,minWidth:600,minHeight:400,buttons:[CKEDITOR.dialog.okButton,CKEDITOR.dialog.cancelButton]},g=function(A,B,C){for(var D=0,E;E=A[D];D++){if(E.id==B)return E;if(C&&E[C]){var F=g(E[C],B,C);if(F)return F;}}return null;},h=function(A,B,C,D,E){if(C){for(var F=0,G;G=A[F];F++){if(G.id==C){A.splice(F,0,B);return B;}if(D&&G[D]){var H=h(G[D],B,C,D,true);if(H)return H;}}if(E)return null;}A.push(B);return B;},i=function(A,B,C){for(var D=0,E;E=A[D];D++){if(E.id==B)return A.splice(D,1);if(C&&E[C]){var F=i(E[C],B,C);if(F)return F;}}return null;},j=function(A,B){this.dialog=A;var C=B.contents;for(var D=0,E;E=C[D];D++)C[D]=new k(A,E);CKEDITOR.tools.extend(this,B);};j.prototype={getContents:function(A){return g(this.contents,A);},getButton:function(A){return g(this.buttons,A);},addContents:function(A,B){return h(this.contents,A,B);},addButton:function(A,B){return h(this.buttons,A,B);},removeContents:function(A){i(this.contents,A);},removeButton:function(A){i(this.buttons,A);}};function k(A,B){this._={dialog:A};CKEDITOR.tools.extend(this,B);};k.prototype={get:function(A){return g(this.elements,A,'children');},add:function(A,B){return h(this.elements,A,B,'children');},remove:function(A){i(this.elements,A,'children');}};function l(A){var B=null,C=null,D=A.getElement().getFirst(),E=A.getParentEditor(),F=E.config.dialog_magnetDistance,G=d[E.skinName].margins||[0,0,0,0];if(typeof F=='undefined')F=20;function H(J){var K=A.getSize(),L=CKEDITOR.document.getWindow().getViewPaneSize(),M=J.data.$.screenX,N=J.data.$.screenY,O=M-B.x,P=N-B.y,Q,R;B={x:M,y:N};C.x+=O;C.y+=P;if(C.x+G[3]<F)Q=-G[3];else if(C.x-G[1]>L.width-K.width-F)Q=L.width-K.width+G[1];else Q=C.x;if(C.y+G[0]<F)R=-G[0];else if(C.y-G[2]>L.height-K.height-F)R=L.height-K.height+G[2];else R=C.y;A.move(Q,R);J.data.preventDefault();};function I(J){CKEDITOR.document.removeListener('mousemove',H);CKEDITOR.document.removeListener('mouseup',I);if(CKEDITOR.env.ie6Compat){var K=o.getChild(0).getFrameDocument();K.removeListener('mousemove',H);
+K.removeListener('mouseup',I);}};A.parts.title.on('mousedown',function(J){A._.updateSize=true;B={x:J.data.$.screenX,y:J.data.$.screenY};CKEDITOR.document.on('mousemove',H);CKEDITOR.document.on('mouseup',I);C=A.getPosition();if(CKEDITOR.env.ie6Compat){var K=o.getChild(0).getFrameDocument();K.on('mousemove',H);K.on('mouseup',I);}J.data.preventDefault();},A);};function m(A){var B=A.definition,C=B.minWidth||0,D=B.minHeight||0,E=B.resizable,F=d[A.getParentEditor().skinName].margins||[0,0,0,0];function G(R,S){R.y+=S;};function H(R,S){R.x2+=S;};function I(R,S){R.y2+=S;};function J(R,S){R.x+=S;};var K=null,L=null,M=A._.editor.config.magnetDistance,N=['tl','t','tr','l','r','bl','b','br'];function O(R){var S=R.listenerData.part,T=A.getSize();L=A.getPosition();CKEDITOR.tools.extend(L,{x2:L.x+T.width,y2:L.y+T.height});K={x:R.data.$.screenX,y:R.data.$.screenY};CKEDITOR.document.on('mousemove',P,A,{part:S});CKEDITOR.document.on('mouseup',Q,A,{part:S});if(CKEDITOR.env.ie6Compat){var U=o.getChild(0).getFrameDocument();U.on('mousemove',P,A,{part:S});U.on('mouseup',Q,A,{part:S});}R.data.preventDefault();};function P(R){var S=R.data.$.screenX,T=R.data.$.screenY,U=S-K.x,V=T-K.y,W=CKEDITOR.document.getWindow().getViewPaneSize(),X=R.listenerData.part;if(X.search('t')!=-1)G(L,V);if(X.search('l')!=-1)J(L,U);if(X.search('b')!=-1)I(L,V);if(X.search('r')!=-1)H(L,U);K={x:S,y:T};var Y,Z,aa,ab;if(L.x+F[3]<M)Y=-F[3];else if(X.search('l')!=-1&&L.x2-L.x<C+M)Y=L.x2-C;else Y=L.x;if(L.y+F[0]<M)Z=-F[0];else if(X.search('t')!=-1&&L.y2-L.y<D+M)Z=L.y2-D;else Z=L.y;if(L.x2-F[1]>W.width-M)aa=W.width+F[1];else if(X.search('r')!=-1&&L.x2-L.x<C+M)aa=L.x+C;else aa=L.x2;if(L.y2-F[2]>W.height-M)ab=W.height+F[2];else if(X.search('b')!=-1&&L.y2-L.y<D+M)ab=L.y+D;else ab=L.y2;A.move(Y,Z);A.resize(aa-Y,ab-Z);R.data.preventDefault();};function Q(R){CKEDITOR.document.removeListener('mouseup',Q);CKEDITOR.document.removeListener('mousemove',P);if(CKEDITOR.env.ie6Compat){var S=o.getChild(0).getFrameDocument();S.removeListener('mouseup',Q);S.removeListener('mousemove',P);}};};var n,o,p=function(A){var B=CKEDITOR.document.getWindow();if(!o){var C=['<div style="position: ',CKEDITOR.env.ie6Compat?'absolute':'fixed','; z-index: ',A.config.baseFloatZIndex,'; top: 0px; left: 0px; ','background-color: ',A.config.dialog_backgroundCoverColor||'white','" id="cke_dialog_background_cover">'];if(CKEDITOR.env.ie6Compat){var D=CKEDITOR.env.isCustomDomain();C.push('<iframe hidefocus="true" frameborder="0" id="cke_dialog_background_iframe" src="javascript:');
+C.push(D?"void((function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})())':"''");C.push('" style="position:absolute;left:0;top:0;width:100%;height: 100%;progid:DXImageTransform.Microsoft.Alpha(opacity=0)"></iframe>');}C.push('</div>');o=CKEDITOR.dom.element.createFromHtml(C.join(''));}var E=o,F=function(){var J=B.getViewPaneSize();E.setStyles({width:J.width+'px',height:J.height+'px'});},G=function(){var J=B.getScrollPosition(),K=CKEDITOR.dialog._.currentTop;E.setStyles({left:J.x+'px',top:J.y+'px'});do{var L=K.getPosition();K.move(L.x,L.y);}while(K=K._.parentDialog)};n=F;B.on('resize',F);F();if(CKEDITOR.env.ie6Compat){var H=function(){G();arguments.callee.prevScrollHandler.apply(this,arguments);};B.$.setTimeout(function(){H.prevScrollHandler=window.onscroll||(function(){});window.onscroll=H;},0);G();}var I=A.config.dialog_backgroundCoverOpacity;E.setOpacity(typeof I!='undefined'?I:0.5);E.appendTo(CKEDITOR.document.getBody());},q=function(){if(!o)return;var A=CKEDITOR.document.getWindow();o.remove();A.removeListener('resize',n);if(CKEDITOR.env.ie6Compat)A.$.setTimeout(function(){var B=window.onscroll&&window.onscroll.prevScrollHandler;window.onscroll=B||null;},0);n=null;},r={},s=function(A){var B=A.data.$.ctrlKey||A.data.$.metaKey,C=A.data.$.altKey,D=A.data.$.shiftKey,E=String.fromCharCode(A.data.$.keyCode),F=r[(B?'CTRL+':'')+(C?'ALT+':'')+(D?'SHIFT+':'')+E];if(!F||!F.length)return;F=F[F.length-1];F.keydown&&F.keydown.call(F.uiElement,F.dialog,F.key);A.data.preventDefault();},t=function(A){var B=A.data.$.ctrlKey||A.data.$.metaKey,C=A.data.$.altKey,D=A.data.$.shiftKey,E=String.fromCharCode(A.data.$.keyCode),F=r[(B?'CTRL+':'')+(C?'ALT+':'')+(D?'SHIFT+':'')+E];if(!F||!F.length)return;F=F[F.length-1];F.keyup&&F.keyup.call(F.uiElement,F.dialog,F.key);A.data.preventDefault();},u=function(A,B,C,D,E){var F=r[C]||(r[C]=[]);F.push({uiElement:A,dialog:B,key:C,keyup:E||A.accessKeyUp,keydown:D||A.accessKeyDown});},v=function(A){for(var B in r){var C=r[B];for(var D=C.length-1;D>=0;D--)if(C[D].dialog==A||C[D].uiElement==A)C.splice(D,1);if(C.length===0)delete r[B];}},w=function(A,B){if(A._.accessKeyMap[B])A.selectPage(A._.accessKeyMap[B]);},x=function(A,B){},y={27:1,13:1},z=function(A){if(A.data.getKeystroke() in y)A.data.stopPropagation();};(function(){CKEDITOR.ui.dialog={uiElement:function(A,B,C,D,E,F,G){if(arguments.length<4)return;var H=(D.call?D(B):D)||('div'),I=['<',H,' '],J=(E&&E.call?E(B):E)||({}),K=(F&&F.call?F(B):F)||({}),L=(G&&G.call?G(A,B):G)||(''),M=this.domId=K.id||CKEDITOR.tools.getNextNumber()+'_uiElement',N=this.id=B.id,O;
+K.id=M;var P={};if(B.type)P['cke_dialog_ui_'+B.type]=1;if(B.className)P[B.className]=1;var Q=K['class']&&K['class'].split?K['class'].split(' '):[];for(O=0;O<Q.length;O++)if(Q[O])P[Q[O]]=1;var R=[];for(O in P)R.push(O);K['class']=R.join(' ');if(B.title)K.title=B.title;var S=(B.style||'').split(';');for(O in J)S.push(O+':'+J[O]);if(B.hidden)S.push('display:none');for(O=S.length-1;O>=0;O--)if(S[O]==='')S.splice(O,1);if(S.length>0)K.style=(K.style?K.style+'; ':'')+(S.join('; '));for(O in K)I.push(O+'="'+CKEDITOR.tools.htmlEncode(K[O])+'" ');I.push('>',L,'</',H,'>');C.push(I.join(''));(this._||(this._={})).dialog=A;if(typeof B.isChanged=='boolean')this.isChanged=function(){return B.isChanged;};if(typeof B.isChanged=='function')this.isChanged=B.isChanged;CKEDITOR.event.implementOn(this);this.registerEvents(B);if(this.accessKeyUp&&this.accessKeyDown&&B.accessKey)u(this,A,'CTRL+'+B.accessKey);var T=this;A.on('load',function(){if(T.getInputElement())T.getInputElement().on('focus',function(){A._.tabBarMode=false;A._.hasFocus=true;T.fire('focus');},T);});if(this.keyboardFocusable){this.focusIndex=A._.focusList.push(this)-1;this.on('focus',function(){A._.currentFocusIndex=T.focusIndex;});}CKEDITOR.tools.extend(this,B);},hbox:function(A,B,C,D,E){if(arguments.length<4)return;this._||(this._={});var F=this._.children=B,G=E&&E.widths||null,H=E&&E.height||null,I={},J,K=function(){var L=['<tbody><tr class="cke_dialog_ui_hbox">'];for(J=0;J<C.length;J++){var M='cke_dialog_ui_hbox_child',N=[];if(J===0)M='cke_dialog_ui_hbox_first';if(J==C.length-1)M='cke_dialog_ui_hbox_last';L.push('<td class="',M,'" ');if(G){if(G[J])N.push('width:'+CKEDITOR.tools.cssLength(G[J]));}else N.push('width:'+Math.floor(100/C.length)+'%');if(H)N.push('height:'+CKEDITOR.tools.cssLength(H));if(E&&E.padding!=undefined)N.push('padding:'+CKEDITOR.tools.cssLength(E.padding));if(N.length>0)L.push('style="'+N.join('; ')+'" ');L.push('>',C[J],'</td>');}L.push('</tr></tbody>');return L.join('');};CKEDITOR.ui.dialog.uiElement.call(this,A,E||{type:'hbox'},D,'table',I,E&&E.align&&{align:E.align}||null,K);},vbox:function(A,B,C,D,E){if(arguments.length<3)return;this._||(this._={});var F=this._.children=B,G=E&&E.width||null,H=E&&E.heights||null,I=function(){var J=['<table cellspacing="0" border="0" '];J.push('style="');if(E&&E.expand)J.push('height:100%;');J.push('width:'+CKEDITOR.tools.cssLength(G||'100%'),';');J.push('"');J.push('align="',CKEDITOR.tools.htmlEncode(E&&E.align||(A.getParentEditor().lang.dir=='ltr'?'left':'right')),'" ');
+J.push('><tbody>');for(var K=0;K<C.length;K++){var L=[];J.push('<tr><td ');if(G)L.push('width:'+CKEDITOR.tools.cssLength(G||'100%'));if(H)L.push('height:'+CKEDITOR.tools.cssLength(H[K]));else if(E&&E.expand)L.push('height:'+Math.floor(100/C.length)+'%');if(E&&E.padding!=undefined)L.push('padding:'+CKEDITOR.tools.cssLength(E.padding));if(L.length>0)J.push('style="',L.join('; '),'" ');J.push(' class="cke_dialog_ui_vbox_child">',C[K],'</td></tr>');}J.push('</tbody></table>');return J.join('');};CKEDITOR.ui.dialog.uiElement.call(this,A,E||{type:'vbox'},D,'div',null,null,I);}};})();CKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId);},getInputElement:function(){return this.getElement();},getDialog:function(){return this._.dialog;},setValue:function(A){this.getInputElement().setValue(A);this.fire('change',{value:A});return this;},getValue:function(){return this.getInputElement().getValue();},isChanged:function(){return false;},selectParentTab:function(){var D=this;var A=D.getInputElement(),B=A,C;while((B=B.getParent())&&(B.$.className.search('cke_dialog_page_contents')==-1)){}if(!B)return D;C=B.getAttribute('name');if(D._.dialog._.currentTabId!=C)D._.dialog.selectPage(C);return D;},focus:function(){this.selectParentTab().getInputElement().focus();return this;},registerEvents:function(A){var B=/^on([A-Z]\w+)/,C,D=function(F,G,H,I){G.on('load',function(){F.getInputElement().on(H,I,F);});};for(var E in A){if(!(C=E.match(B)))continue;if(this.eventProcessors[E])this.eventProcessors[E].call(this,this._.dialog,A[E]);else D(this,this._.dialog,C[1].toLowerCase(),A[E]);}return this;},eventProcessors:{onLoad:function(A,B){A.on('load',B,this);},onShow:function(A,B){A.on('show',B,this);},onHide:function(A,B){A.on('hide',B,this);}},accessKeyDown:function(A,B){this.focus();},accessKeyUp:function(A,B){},disable:function(){var A=this.getInputElement();A.setAttribute('disabled','true');A.addClass('cke_disabled');},enable:function(){var A=this.getInputElement();A.removeAttribute('disabled');A.removeClass('cke_disabled');},isEnabled:function(){return!this.getInputElement().getAttribute('disabled');},isVisible:function(){return!!this.getInputElement().$.offsetHeight;},isFocusable:function(){if(!this.isEnabled()||!this.isVisible())return false;return true;}};CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(),{getChild:function(A){var B=this;if(arguments.length<1)return B._.children.concat();
+if(!A.splice)A=[A];if(A.length<2)return B._.children[A[0]];else return B._.children[A[0]]&&B._.children[A[0]].getChild?B._.children[A[0]].getChild(A.slice(1,A.length)):null;}},true);CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox();(function(){var A={build:function(B,C,D){var E=C.children,F,G=[],H=[];for(var I=0;I<E.length&&(F=E[I]);I++){var J=[];G.push(J);H.push(CKEDITOR.dialog._.uiElementBuilders[F.type].build(B,F,J));}return new CKEDITOR.ui.dialog[C.type](B,H,G,D,C);}};CKEDITOR.dialog.addUIElement('hbox',A);CKEDITOR.dialog.addUIElement('vbox',A);})();CKEDITOR.dialogCommand=function(A){this.dialogName=A;};CKEDITOR.dialogCommand.prototype={exec:function(A){A.openDialog(this.dialogName);},canUndo:false};(function(){var A=/^([a]|[^a])+$/,B=/^\d*$/,C=/^\d*(?:\.\d+)?$/;CKEDITOR.VALIDATE_OR=1;CKEDITOR.VALIDATE_AND=2;CKEDITOR.dialog.validate={functions:function(){return function(){var J=this;var D=J&&J.getValue?J.getValue():arguments[0],E=undefined,F=CKEDITOR.VALIDATE_AND,G=[],H;for(H=0;H<arguments.length;H++)if(typeof arguments[H]=='function')G.push(arguments[H]);else break;if(H<arguments.length&&typeof arguments[H]=='string'){E=arguments[H];H++;}if(H<arguments.length&&typeof arguments[H]=='number')F=arguments[H];var I=F==CKEDITOR.VALIDATE_AND?true:false;for(H=0;H<G.length;H++)if(F==CKEDITOR.VALIDATE_AND)I=I&&G[H](D);else I=I||G[H](D);if(!I){if(E!==undefined)alert(E);if(J&&(J.select||J.focus))J.select||J.focus();return false;}return true;};},regex:function(D,E){return function(){var G=this;var F=G&&G.getValue?G.getValue():arguments[0];if(!D.test(F)){if(E!==undefined)alert(E);if(G&&(G.select||G.focus))if(G.select)G.select();else G.focus();return false;}return true;};},notEmpty:function(D){return this.regex(A,D);},integer:function(D){return this.regex(B,D);},number:function(D){return this.regex(C,D);},equals:function(D,E){return this.functions(function(F){return F==D;},E);},notEqual:function(D,E){return this.functions(function(F){return F!=D;},E);}};})();CKEDITOR.skins.add=(function(){var A=CKEDITOR.skins.add;return function(B,C){d[B]={margins:C.margins};return A.apply(this,arguments);};})();})();CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{openDialog:function(a){var b=CKEDITOR.dialog._.dialogDefinitions[a];if(typeof b=='function'){var c=this._.storedDialogs||(this._.storedDialogs={}),d=c[a]||(c[a]=new CKEDITOR.dialog(this,a));d.show();return d;}else if(b=='failed')throw new Error('[CKEDITOR.dialog.openDialog] Dialog "'+a+'" failed when loading definition.');
+var e=CKEDITOR.document.getBody(),f=e.$.style.cursor,g=this;e.setStyle('cursor','wait');CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(b),function(){if(typeof CKEDITOR.dialog._.dialogDefinitions[a]!='function')CKEDITOR.dialog._.dialogDefinitions[a]='failed';g.openDialog(a);e.setStyle('cursor',f);});return null;}});
Index: /trunk/filemanager/tp/ckeditor/plugins/stylescombo/styles/default.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/stylescombo/styles/default.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/stylescombo/styles/default.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.addStylesSet('default',[{name:'Blue Title',element:'h3',styles:{color:'Blue'}},{name:'Red Title',element:'h3',styles:{color:'Red'}},{name:'Marker: Yellow',element:'span',styles:{'background-color':'Yellow'}},{name:'Marker: Green',element:'span',styles:{'background-color':'Lime'}},{name:'Big',element:'big'},{name:'Small',element:'small'},{name:'Typewriter',element:'tt'},{name:'Computer Code',element:'code'},{name:'Keyboard Phrase',element:'kbd'},{name:'Sample Text',element:'samp'},{name:'Variable',element:'var'},{name:'Deleted Text',element:'del'},{name:'Inserted Text',element:'ins'},{name:'Cited Work',element:'cite'},{name:'Inline Quotation',element:'q'},{name:'Language: RTL',element:'span',attributes:{dir:'rtl'}},{name:'Language: LTR',element:'span',attributes:{dir:'ltr'}},{name:'Image on Left',element:'img',attributes:{style:'padding: 5px; margin-right: 5px',border:'2',align:'left'}},{name:'Image on Right',element:'img',attributes:{style:'padding: 5px; margin-left: 5px',border:'2',align:'right'}}]);
Index: /trunk/filemanager/tp/ckeditor/plugins/stylescombo/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/stylescombo/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/stylescombo/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){CKEDITOR.plugins.add('stylescombo',{requires:['richcombo','styles'],init:function(d){var e=d.config,f=d.lang.stylesCombo,g=this.path,h;d.ui.addRichCombo('Styles',{label:f.label,title:f.panelTitle,voiceLabel:f.voiceLabel,className:'cke_styles',multiSelect:true,panel:{css:[CKEDITOR.getUrl(d.skinPath+'editor.css')].concat(e.contentsCss),voiceLabel:f.panelVoiceLabel},init:function(){var i=this,j=e.stylesCombo_stylesSet.split(':'),k=j[1]?j.slice(1).join(':'):CKEDITOR.getUrl(g+'styles/'+j[0]+'.js');j=j[0];CKEDITOR.loadStylesSet(j,k,function(l){var m,n,o=[];h={};for(var p=0;p<l.length;p++){var q=l[p];n=q.name;m=h[n]=new CKEDITOR.style(q);m._name=n;o.push(m);}o.sort(c);var r;for(p=0;p<o.length;p++){m=o[p];n=m._name;var s=m.type;if(s!=r){i.startGroup(f['panelTitle'+String(s)]);r=s;}i.add(n,m.type==CKEDITOR.STYLE_OBJECT?n:b(m._.definition),n);}i.commit();i.onOpen();});},onClick:function(i){d.focus();d.fire('saveSnapshot');var j=h[i],k=d.getSelection();if(j.type==CKEDITOR.STYLE_OBJECT){var l=k.getSelectedElement();if(l)j.applyToObject(l);return;}var m=new CKEDITOR.dom.elementPath(k.getStartElement());if(j.type==CKEDITOR.STYLE_INLINE&&j.checkActive(m))j.remove(d.document);else j.apply(d.document);d.fire('saveSnapshot');},onRender:function(){d.on('selectionChange',function(i){var j=this.getValue(),k=i.data.path,l=k.elements;for(var m=0,n;m<l.length;m++){n=l[m];for(var o in h)if(h[o].checkElementRemovable(n,true)){if(o!=j)this.setValue(o);return;}}this.setValue('');},this);},onOpen:function(){var q=this;if(CKEDITOR.env.ie)d.focus();var i=d.getSelection(),j=i.getSelectedElement(),k=j&&j.getName(),l=new CKEDITOR.dom.elementPath(j||i.getStartElement()),m=[0,0,0,0];q.showAll();q.unmarkAll();for(var n in h){var o=h[n],p=o.type;if(p==CKEDITOR.STYLE_OBJECT){if(j&&o.element==k){if(o.checkElementRemovable(j,true))q.mark(n);m[p]++;}else q.hideItem(n);}else{if(o.checkActive(l))q.mark(n);m[p]++;}}if(!m[CKEDITOR.STYLE_BLOCK])q.hideGroup(f['panelTitle'+String(CKEDITOR.STYLE_BLOCK)]);if(!m[CKEDITOR.STYLE_INLINE])q.hideGroup(f['panelTitle'+String(CKEDITOR.STYLE_INLINE)]);if(!m[CKEDITOR.STYLE_OBJECT])q.hideGroup(f['panelTitle'+String(CKEDITOR.STYLE_OBJECT)]);}});}});var a={};CKEDITOR.addStylesSet=function(d,e){a[d]=e;};CKEDITOR.loadStylesSet=function(d,e,f){var g=a[d];if(g){f(g);return;}CKEDITOR.scriptLoader.load(e,function(){f(a[d]);});};function b(d){var e=[],f=d.element;if(f=='bdo')f='span';e=['<',f];var g=d.attributes;if(g)for(var h in g)e.push(' ',h,'="',g[h],'"');var i=CKEDITOR.style.getStyleText(d);
+if(i)e.push(' style="',i,'"');e.push('>',d.name,'</',f,'>');return e.join('');};function c(d,e){var f=d.type,g=e.type;return f==g?0:f==CKEDITOR.STYLE_OBJECT?-1:g==CKEDITOR.STYLE_OBJECT?1:g==CKEDITOR.STYLE_BLOCK?1:-1;};})();CKEDITOR.config.stylesCombo_stylesSet='default';
Index: /trunk/filemanager/tp/ckeditor/plugins/about/dialogs/about.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/about/dialogs/about.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/about/dialogs/about.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('about',function(a){var b=a.lang.about;return{title:CKEDITOR.env.ie?b.dlgTitle:b.title,minWidth:390,minHeight:230,contents:[{id:'tab1',label:'',title:'',expand:true,padding:0,elements:[{type:'html',html:'<style type="text/css">.cke_about_container{color:#000 !important;padding:10px 10px 0;margin-top:5px}.cke_about_container p{margin: 0 0 10px;}.cke_about_container .cke_about_logo{height:81px;background-color:#fff;background-image:url('+CKEDITOR.plugins.get('about').path+'dialogs/logo_ckeditor.png);'+'background-position:center; '+'background-repeat:no-repeat;'+'margin-bottom:10px;'+'}'+'.cke_about_container a'+'{'+'cursor:pointer !important;'+'color:blue !important;'+'text-decoration:underline !important;'+'}'+'</style>'+'<div class="cke_about_container">'+'<div class="cke_about_logo"></div>'+'<p>'+'CKEditor '+CKEDITOR.version+' (revision '+CKEDITOR.revision+')<br>'+'<a href="http://ckeditor.com/">http://ckeditor.com</a>'+'</p>'+'<p>'+b.moreInfo+'<br>'+'<a href="http://ckeditor.com/license">http://ckeditor.com/license</a>'+'</p>'+'<p>'+b.copy.replace('$1','<a href="http://cksource.com/">CKSource</a> - Frederico Knabben')+'</p>'+'</div>'}]}],buttons:[CKEDITOR.dialog.cancelButton]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/about/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/about/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/about/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('about',{init:function(a){var b=a.addCommand('about',new CKEDITOR.dialogCommand('about'));b.modes={wysiwyg:1,source:1};b.canUndo=false;a.ui.addButton('About',{label:a.lang.about.title,command:'about'});CKEDITOR.dialog.add('about',this.path+'dialogs/about.js');}});
Index: /trunk/filemanager/tp/ckeditor/plugins/button/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/button/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/button/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('button',{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_BUTTON,CKEDITOR.ui.button.handler);}});CKEDITOR.UI_BUTTON=1;CKEDITOR.ui.button=function(a){CKEDITOR.tools.extend(this,a,{title:a.label,className:a.className||a.command&&'cke_button_'+a.command||'',click:a.click||(function(b){b.execCommand(a.command);})});this._={};};CKEDITOR.ui.button.handler={create:function(a){return new CKEDITOR.ui.button(a);}};CKEDITOR.ui.button.prototype={canGroup:true,render:function(a,b){var c=CKEDITOR.env,d=this._.id='cke_'+CKEDITOR.tools.getNextNumber();this._.editor=a;var e={id:d,button:this,editor:a,focus:function(){var k=CKEDITOR.document.getById(d);k.focus();},execute:function(){this.button.click(a);}},f=CKEDITOR.tools.addFunction(e.execute,e),g=CKEDITOR.ui.button._.instances.push(e)-1,h='',i=this.command;if(this.modes)a.on('mode',function(){this.setState(this.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);},this);else if(i){i=a.getCommand(i);if(i){i.on('state',function(){this.setState(i.state);},this);h+='cke_'+(i.state==CKEDITOR.TRISTATE_ON?'on':i.state==CKEDITOR.TRISTATE_DISABLED?'disabled':'off');}}if(!i)h+='cke_off';if(this.className)h+=' '+this.className;b.push('<span class="cke_button">','<a id="',d,'" class="',h,'" href="javascript:void(\'',(this.title||'').replace("'",''),'\')" title="',this.title,'" tabindex="-1" hidefocus="true"');if(c.opera||c.gecko&&c.mac)b.push(' onkeypress="return false;"');if(c.gecko)b.push(' onblur="this.style.cssText = this.style.cssText;"');b.push(' onkeydown="return CKEDITOR.ui.button._.keydown(',g,', event);" onfocus="return CKEDITOR.ui.button._.focus(',g,', event);" onclick="CKEDITOR.tools.callFunction(',f,', this); return false;"><span class="cke_icon"');if(this.icon){var j=(this.iconOffset||0)*(-16);b.push(' style="background-image:url(',CKEDITOR.getUrl(this.icon),');background-position:0 '+j+'px;"');}b.push('></span><span class="cke_label">',this.label,'</span>');if(this.hasArrow)b.push('<span class="cke_buttonarrow"></span>');b.push('</a>','</span>');if(this.onRender)this.onRender();return e;},setState:function(a){var f=this;if(f._.state==a)return;var b=CKEDITOR.document.getById(f._.id);if(b){b.setState(a);var c=f.title,d=f._.editor.lang.common.unavailable,e=b.getChild(1);if(a==CKEDITOR.TRISTATE_DISABLED)c=d.replace('%1',f.title);e.setHtml(c);}f._.state=a;}};CKEDITOR.ui.button._={instances:[],keydown:function(a,b){var c=CKEDITOR.ui.button._.instances[a];if(c.onkey){b=new CKEDITOR.dom.event(b);
+return c.onkey(c,b.getKeystroke())!==false;}},focus:function(a,b){var c=CKEDITOR.ui.button._.instances[a],d;if(c.onfocus)d=c.onfocus(c,new CKEDITOR.dom.event(b))!==false;if(CKEDITOR.env.gecko&&CKEDITOR.env.version<10900)b.preventBubble();return d;}};CKEDITOR.ui.prototype.addButton=function(a,b){this.add(a,CKEDITOR.UI_BUTTON,b);};
Index: /trunk/filemanager/tp/ckeditor/plugins/pastetext/dialogs/pastetext.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/pastetext/dialogs/pastetext.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/pastetext/dialogs/pastetext.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){CKEDITOR.dialog.add('pastetext',function(a){return{title:a.lang.pasteText.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?368:350,minHeight:240,onShow:function(){this.getContentElement('general','content').getInputElement().setValue('');},onOk:function(){var b=this.getContentElement('general','content').getInputElement().getValue();this.getParentEditor().insertText(b);},contents:[{label:a.lang.common.generalTab,id:'general',elements:[{type:'html',id:'pasteMsg',html:'<div style="white-space:normal;width:340px;">'+a.lang.clipboard.pasteMsg+'</div>'},{type:'html',id:'content',style:'width:340px;height:170px',html:'<textarea style="width:346px;height:170px;resize: none;border:1px solid black;background-color:white"></textarea>',focus:function(){this.getElement().focus();}}]}]};});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/pastetext/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/pastetext/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/pastetext/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a={exec:function(c){if(CKEDITOR.getClipboardData()===false||!window.clipboardData){c.openDialog('pastetext');return;}c.insertText(window.clipboardData.getData('Text'));}};CKEDITOR.plugins.add('pastetext',{init:function(c){var d='pastetext',e=c.addCommand(d,a);c.ui.addButton('PasteText',{label:c.lang.pasteText.button,command:d});CKEDITOR.dialog.add(d,CKEDITOR.getUrl(this.path+'dialogs/pastetext.js'));if(c.config.forcePasteAsPlainText)c.on('beforePaste',function(f){if(c.mode=='wysiwyg'){setTimeout(function(){e.exec();},0);f.cancel();}},null,null,20);},requires:['clipboard']});var b;CKEDITOR.getClipboardData=function(){if(!CKEDITOR.env.ie)return false;var c=CKEDITOR.document,d=c.getBody();if(!b){b=c.createElement('div',{attributes:{id:'cke_hiddenDiv'},styles:{position:'absolute',visibility:'hidden',overflow:'hidden',width:'1px',height:'1px'}});b.setHtml('');b.appendTo(d);}var e=false,f=function(){e=true;};d.on('paste',f);var g=d.$.createTextRange();g.moveToElementText(b.$);g.execCommand('Paste');var h=b.getHtml();b.setHtml('');d.removeListener('paste',f);return e&&h;};})();CKEDITOR.editor.prototype.insertText=function(a){a=CKEDITOR.tools.htmlEncode(a);a=a.replace(/(?:\r\n)|\n|\r/g,'<br>');this.insertHtml(a);};CKEDITOR.config.forcePasteAsPlainText=false;
Index: /trunk/filemanager/tp/ckeditor/plugins/basicstyles/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/basicstyles/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/basicstyles/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('basicstyles',{requires:['styles','button'],init:function(a){var b=function(e,f,g,h){var i=new CKEDITOR.style(h);a.attachStyleStateChange(i,function(j){a.getCommand(g).setState(j);});a.addCommand(g,new CKEDITOR.styleCommand(i));a.ui.addButton(e,{label:f,command:g});},c=a.config,d=a.lang;b('Bold',d.bold,'bold',c.coreStyles_bold);b('Italic',d.italic,'italic',c.coreStyles_italic);b('Underline',d.underline,'underline',c.coreStyles_underline);b('Strike',d.strike,'strike',c.coreStyles_strike);b('Subscript',d.subscript,'subscript',c.coreStyles_subscript);b('Superscript',d.superscript,'superscript',c.coreStyles_superscript);}});CKEDITOR.config.coreStyles_bold={element:'strong',overrides:'b'};CKEDITOR.config.coreStyles_italic={element:'em',overrides:'i'};CKEDITOR.config.coreStyles_underline={element:'u'};CKEDITOR.config.coreStyles_strike={element:'strike'};CKEDITOR.config.coreStyles_subscript={element:'sub'};CKEDITOR.config.coreStyles_superscript={element:'sup'};
Index: /trunk/filemanager/tp/ckeditor/plugins/floatpanel/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/floatpanel/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/floatpanel/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('floatpanel',{requires:['panel']});(function(){var a={},b=false;function c(d,e,f,g,h){var i=e.getUniqueId()+'-'+f.getUniqueId()+'-'+d.skinName+'-'+d.lang.dir+(d.uiColor&&'-'+d.uiColor||'')+(g.css&&'-'+g.css||'')+(h&&'-'+h||''),j=a[i];if(!j){j=a[i]=new CKEDITOR.ui.panel(e,g);j.element=f.append(CKEDITOR.dom.element.createFromHtml(j.renderHtml(d),e));j.element.setStyles({display:'none',position:'absolute'});}return j;};CKEDITOR.ui.floatPanel=CKEDITOR.tools.createClass({$:function(d,e,f,g){f.forceIFrame=true;var h=e.getDocument(),i=c(d,h,e,f,g||0),j=i.element,k=j.getFirst().getFirst();this.element=j;d.panels?d.panels.push(j):d.panels=[j];this._={panel:i,parentElement:e,definition:f,document:h,iframe:k,children:[],dir:d.lang.dir};},proto:{addBlock:function(d,e){return this._.panel.addBlock(d,e);},addListBlock:function(d,e){return this._.panel.addListBlock(d,e);},getBlock:function(d){return this._.panel.getBlock(d);},showBlock:function(d,e,f,g,h){var i=this._.panel,j=i.showBlock(d);this.allowBlur(false);b=true;var k=this.element,l=this._.iframe,m=this._.definition,n=e.getDocumentPosition(k.getDocument()),o=this._.dir=='rtl',p=n.x+(g||0),q=n.y+(h||0);if(o&&(f==1||f==4))p+=e.$.offsetWidth;else if(!o&&(f==2||f==3))p+=e.$.offsetWidth-1;if(f==3||f==4)q+=e.$.offsetHeight-1;this._.panel._.offsetParentId=e.getId();k.setStyles({top:q+'px',left:'-3000px',visibility:'hidden',opacity:'0',display:''});if(!this._.blurSet){var r=CKEDITOR.env.ie?l:new CKEDITOR.dom.window(l.$.contentWindow);CKEDITOR.event.useCapture=true;r.on('blur',function(s){var v=this;if(CKEDITOR.env.ie&&!v.allowBlur())return;var t=s.data.getTarget(),u=t.getWindow&&t.getWindow();if(u&&u.equals(r))return;if(v.visible&&!v._.activeChild&&!b)v.hide();},this);r.on('focus',function(){this._.focused=true;this.hideChild();this.allowBlur(true);},this);CKEDITOR.event.useCapture=false;this._.blurSet=1;}i.onEscape=CKEDITOR.tools.bind(function(){this.onEscape&&this.onEscape();},this);CKEDITOR.tools.setTimeout(function(){if(o)p-=k.$.offsetWidth;k.setStyles({left:p+'px',visibility:'',opacity:'1'});if(j.autoSize){function s(){var t=k.getFirst(),u=j.element.$.scrollHeight;if(CKEDITOR.env.ie&&CKEDITOR.env.quirks&&u>0)u+=(t.$.offsetHeight||0)-(t.$.clientHeight||0);t.setStyle('height',u+'px');i._.currentBlock.element.setStyle('display','none').removeStyle('display');};if(i.isLoaded)s();else i.onLoad=s;}else k.getFirst().removeStyle('height');CKEDITOR.tools.setTimeout(function(){if(m.voiceLabel)if(CKEDITOR.env.gecko){var t=l.getParent();
+t.setAttribute('role','region');t.setAttribute('title',m.voiceLabel);l.setAttribute('role','region');l.setAttribute('title',' ');}if(CKEDITOR.env.ie&&CKEDITOR.env.quirks)l.focus();else l.$.contentWindow.focus();if(CKEDITOR.env.ie&&!CKEDITOR.env.quirks)this.allowBlur(true);},0,this);},0,this);this.visible=1;if(this.onShow)this.onShow.call(this);b=false;},hide:function(){var d=this;if(d.visible&&(!d.onHide||d.onHide.call(d)!==true)){d.hideChild();d.element.setStyle('display','none');d.visible=0;}},allowBlur:function(d){var e=this._.panel;if(d!=undefined)e.allowBlur=d;return e.allowBlur;},showAsChild:function(d,e,f,g,h,i){if(this._.activeChild==d&&d._.panel._.offsetParentId==f.getId())return;this.hideChild();d.onHide=CKEDITOR.tools.bind(function(){CKEDITOR.tools.setTimeout(function(){if(!this._.focused)this.hide();},0,this);},this);this._.activeChild=d;this._.focused=false;d.showBlock(e,f,g,h,i);if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie8&&CKEDITOR.env.ie6Compat)setTimeout(function(){d.element.getChild(0).$.style.cssText+='';},100);},hideChild:function(){var d=this._.activeChild;if(d){delete d.onHide;delete this._.activeChild;d.hide();}}}});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/domiterator/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/domiterator/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/domiterator/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('domiterator');(function(){var a=function(c){var d=this;if(arguments.length<1)return;d.range=c;d.forceBrBreak=false;d.enlargeBr=true;d.enforceRealBlocks=false;d._||(d._={});},b=/^[\r\n\t ]+$/;a.prototype={getNextParagraph:function(c){var D=this;var d,e,f,g,h;if(!D._.lastNode){e=D.range.clone();e.enlarge(D.forceBrBreak||!D.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);var i=new CKEDITOR.dom.walker(e),j=CKEDITOR.dom.walker.bookmark(true,true);i.evaluator=j;D._.nextNode=i.next();i=new CKEDITOR.dom.walker(e);i.evaluator=j;var k=i.previous();D._.lastNode=k.getNextSourceNode(true);if(D._.lastNode&&D._.lastNode.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(D._.lastNode.getText())&&D._.lastNode.getParent().isBlockBoundary()){var l=new CKEDITOR.dom.range(e.document);l.moveToPosition(D._.lastNode,CKEDITOR.POSITION_AFTER_END);if(l.checkEndOfBlock()){var m=new CKEDITOR.dom.elementPath(l.endContainer),n=m.block||m.blockLimit;D._.lastNode=n.getNextSourceNode(true);}}if(!D._.lastNode){D._.lastNode=D._.docEndMarker=e.document.createText('');D._.lastNode.insertAfter(k);}e=null;}var o=D._.nextNode;k=D._.lastNode;D._.nextNode=null;while(o){var p=false,q=o.type!=CKEDITOR.NODE_ELEMENT,r=false;if(!q){var s=o.getName();if(o.isBlockBoundary(D.forceBrBreak&&{br:1})){if(s=='br')q=true;else if(!e&&!o.getChildCount()&&s!='hr'){d=o;f=o.equals(k);break;}if(e){e.setEndAt(o,CKEDITOR.POSITION_BEFORE_START);if(s!='br')D._.nextNode=o;}p=true;}else{if(o.getFirst()){if(!e){e=new CKEDITOR.dom.range(D.range.document);e.setStartAt(o,CKEDITOR.POSITION_BEFORE_START);}o=o.getFirst();continue;}q=true;}}else if(o.type==CKEDITOR.NODE_TEXT)if(b.test(o.getText()))q=false;if(q&&!e){e=new CKEDITOR.dom.range(D.range.document);e.setStartAt(o,CKEDITOR.POSITION_BEFORE_START);}f=(!p||q)&&(o.equals(k));if(e&&!p)while(!o.getNext()&&!f){var t=o.getParent();if(t.isBlockBoundary(D.forceBrBreak&&{br:1})){p=true;f=f||t.equals(k);break;}o=t;q=true;f=o.equals(k);r=true;}if(q)e.setEndAt(o,CKEDITOR.POSITION_AFTER_END);o=o.getNextSourceNode(r,null,k);f=!o;if((p||f)&&(e)){var u=e.getBoundaryNodes(),v=new CKEDITOR.dom.elementPath(e.startContainer),w=new CKEDITOR.dom.elementPath(e.endContainer);if(u.startNode.equals(u.endNode)&&u.startNode.getParent().equals(v.blockLimit)&&u.startNode.type==CKEDITOR.NODE_ELEMENT&&u.startNode.getAttribute('_fck_bookmark')){e=null;D._.nextNode=null;}else break;}if(f)break;}if(!d){if(!e){D._.docEndMarker&&D._.docEndMarker.remove();D._.nextNode=null;
+return null;}v=new CKEDITOR.dom.elementPath(e.startContainer);var x=v.blockLimit,y={div:1,th:1,td:1};d=v.block;if(!d&&!D.enforceRealBlocks&&y[x.getName()]&&e.checkStartOfBlock()&&e.checkEndOfBlock())d=x;else if(!d||D.enforceRealBlocks&&d.getName()=='li'){d=D.range.document.createElement(c||'p');e.extractContents().appendTo(d);d.trim();e.insertNode(d);g=h=true;}else if(d.getName()!='li'){if(!e.checkStartOfBlock()||!e.checkEndOfBlock()){d=d.clone(false);e.extractContents().appendTo(d);d.trim();var z=e.splitBlock();g=!z.wasStartOfBlock;h=!z.wasEndOfBlock;e.insertNode(d);}}else if(!f)D._.nextNode=d.equals(k)?null:e.getBoundaryNodes().endNode.getNextSourceNode(true,null,k);}if(g){var A=d.getPrevious();if(A&&A.type==CKEDITOR.NODE_ELEMENT)if(A.getName()=='br')A.remove();else if(A.getLast()&&A.getLast().$.nodeName.toLowerCase()=='br')A.getLast().remove();}if(h){var B=CKEDITOR.dom.walker.bookmark(false,true),C=d.getLast();if(C&&C.type==CKEDITOR.NODE_ELEMENT&&C.getName()=='br')if(CKEDITOR.env.ie||C.getPrevious(B)||C.getNext(B))C.remove();}if(!D._.nextNode)D._.nextNode=f||d.equals(k)?null:d.getNextSourceNode(true,null,k);return d;}};CKEDITOR.dom.range.prototype.createIterator=function(){return new a(this);};})();
Index: /trunk/filemanager/tp/ckeditor/plugins/sourcearea/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/sourcearea/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/sourcearea/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('sourcearea',{requires:['editingblock'],init:function(a){var b=CKEDITOR.plugins.sourcearea;a.on('editingBlockReady',function(){var c,d;a.addMode('source',{load:function(e,f){if(CKEDITOR.env.ie&&CKEDITOR.env.version<8)e.setStyle('position','relative');a.textarea=c=new CKEDITOR.dom.element('textarea');c.setAttributes({dir:'ltr',tabIndex:-1});c.addClass('cke_source');c.addClass('cke_enable_context_menu');var g={width:CKEDITOR.env.ie7Compat?'99%':'100%',height:'100%',resize:'none',outline:'none','text-align':'left'};if(CKEDITOR.env.ie){if(!CKEDITOR.env.ie8Compat){d=function(){c.hide();c.setStyle('height',e.$.clientHeight+'px');c.show();};a.on('resize',d);a.on('afterCommandExec',function(i){if(i.data.name=='toolbarCollapse')d();});g.height=e.$.clientHeight+'px';}}else c.on('mousedown',function(i){i.data.stopPropagation();});e.setHtml('');e.append(c);c.setStyles(g);c.on('blur',function(){a.focusManager.blur();});c.on('focus',function(){a.focusManager.focus();});a.mayBeDirty=true;this.loadData(f);var h=a.keystrokeHandler;if(h)h.attach(c);setTimeout(function(){a.mode='source';a.fire('mode');},CKEDITOR.env.gecko||CKEDITOR.env.webkit?100:0);},loadData:function(e){c.setValue(e);a.fire('dataReady');},getData:function(){return c.getValue();},getSnapshotData:function(){return c.getValue();},unload:function(e){a.textarea=c=null;if(d)a.removeListener('resize',d);if(CKEDITOR.env.ie&&CKEDITOR.env.version<8)e.removeStyle('position');},focus:function(){c.focus();}});});a.addCommand('source',b.commands.source);if(a.ui.addButton)a.ui.addButton('Source',{label:a.lang.source,command:'source'});a.on('mode',function(){a.getCommand('source').setState(a.mode=='source'?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF);});}});CKEDITOR.plugins.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},exec:function(a){if(a.mode=='wysiwyg')a.fire('saveSnapshot');a.getCommand('source').setState(CKEDITOR.TRISTATE_DISABLED);a.setMode(a.mode=='source'?'wysiwyg':'source');},canUndo:false}}};
Index: /trunk/filemanager/tp/ckeditor/plugins/panelbutton/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/panelbutton/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/panelbutton/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('panelbutton',{requires:['button'],beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_PANELBUTTON,CKEDITOR.ui.panelButton.handler);}});CKEDITOR.UI_PANELBUTTON=4;(function(){var a=function(b){var d=this;var c=d._;if(c.state==CKEDITOR.TRISTATE_DISABLED)return;d.createPanel(b);if(c.on){c.panel.hide();return;}c.panel.showBlock(d._.id,d.document.getById(d._.id),4);};CKEDITOR.ui.panelButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(b){var d=this;var c=b.panel;delete b.panel;d.base(b);d.document=c&&c.parent&&c.parent.getDocument()||CKEDITOR.document;d.hasArrow=true;d.click=a;d._={panelDefinition:c};},statics:{handler:{create:function(b){return new CKEDITOR.ui.panelButton(b);}}},proto:{createPanel:function(b){var c=this._;if(c.panel)return;var d=this._.panelDefinition||{},e=d.parent||CKEDITOR.document.getBody(),f=this._.panel=new CKEDITOR.ui.floatPanel(b,e,d),g=this;f.onShow=function(){if(g.className)this.element.getFirst().addClass(g.className+'_panel');c.oldState=g._.state;g.setState(CKEDITOR.TRISTATE_ON);c.on=1;if(g.onOpen)g.onOpen();};f.onHide=function(){if(g.className)this.element.getFirst().removeClass(g.className+'_panel');g.setState(c.oldState);c.on=0;if(g.onClose)g.onClose();};f.onEscape=function(){f.hide();g.document.getById(c.id).focus();};if(this.onBlock)this.onBlock(f,c.id);f.getBlock(c.id).onHide=function(){c.on=0;g.setState(CKEDITOR.TRISTATE_OFF);};}}});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/editingblock/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/editingblock/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/editingblock/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=function(c,d){return c._.modes&&c._.modes[d||c.mode];},b;CKEDITOR.plugins.add('editingblock',{init:function(c){if(!c.config.editingBlock)return;c.on('themeSpace',function(d){if(d.data.space=='contents')d.data.html+='<br>';});c.on('themeLoaded',function(){c.fireOnce('editingBlockReady');});c.on('uiReady',function(){c.setMode(c.config.startupMode);});c.on('afterSetData',function(){if(!b){function d(){b=true;a(c).loadData(c.getData());b=false;};if(c.mode)d();else c.on('mode',function(){d();c.removeListener('mode',arguments.callee);});}});c.on('beforeGetData',function(){if(!b&&c.mode){b=true;c.setData(a(c).getData());b=false;}});c.on('getSnapshot',function(d){if(c.mode)d.data=a(c).getSnapshotData();});c.on('loadSnapshot',function(d){if(c.mode)a(c).loadSnapshotData(d.data);});c.on('mode',function(d){d.removeListener();var e=c.container;if(CKEDITOR.env.webkit&&CKEDITOR.env.version<528){var f=c.config.tabIndex||c.element.getAttribute('tabindex')||0;e=e.append(CKEDITOR.dom.element.createFromHtml('<input tabindex="'+f+'"'+' style="position:absolute; left:-10000">'));}e.on('focus',function(){c.focus();});if(c.config.startupFocus)c.focus();setTimeout(function(){c.fireOnce('instanceReady');CKEDITOR.fire('instanceReady',null,c);});});}});CKEDITOR.editor.prototype.mode='';CKEDITOR.editor.prototype.addMode=function(c,d){d.name=c;(this._.modes||(this._.modes={}))[c]=d;};CKEDITOR.editor.prototype.setMode=function(c){var d,e=this.getThemeSpace('contents'),f=this.checkDirty();if(this.mode){if(c==this.mode)return;this.fire('beforeModeUnload');var g=a(this);d=g.getData();g.unload(e);this.mode='';}e.setHtml('');var h=a(this,c);if(!h)throw '[CKEDITOR.editor.setMode] Unknown mode "'+c+'".';if(!f)this.on('mode',function(){this.resetDirty();this.removeListener('mode',arguments.callee);});h.load(e,typeof d!='string'?this.getData():d);};CKEDITOR.editor.prototype.focus=function(){var c=a(this);if(c)c.focus();};})();CKEDITOR.config.startupMode='wysiwyg';CKEDITOR.config.startupFocus=false;CKEDITOR.config.editingBlock=true;
Index: /trunk/filemanager/tp/ckeditor/plugins/save/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/save/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/save/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a={modes:{wysiwyg:1,source:1},exec:function(c){var d=c.element.$.form;if(d)try{d.submit();}catch(e){if(d.submit.click)d.submit.click();}}},b='save';CKEDITOR.plugins.add(b,{init:function(c){var d=c.addCommand(b,a);d.modes={wysiwyg:!!c.element.$.form};c.ui.addButton('Save',{label:c.lang.save,command:b});}});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/keystrokes/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/keystrokes/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/keystrokes/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('keystrokes',{beforeInit:function(a){a.keystrokeHandler=new CKEDITOR.keystrokeHandler(a);a.specialKeys={};},init:function(a){var b=a.config.keystrokes,c=a.config.blockedKeystrokes,d=a.keystrokeHandler.keystrokes,e=a.keystrokeHandler.blockedKeystrokes;for(var f=0;f<b.length;f++)d[b[f][0]]=b[f][1];for(f=0;f<c.length;f++)e[c[f]]=1;}});CKEDITOR.keystrokeHandler=function(a){var b=this;if(a.keystrokeHandler)return a.keystrokeHandler;b.keystrokes={};b.blockedKeystrokes={};b._={editor:a};return b;};(function(){var a,b=function(d){d=d.data;var e=d.getKeystroke(),f=this.keystrokes[e],g=this._.editor;a=g.fire('key',{keyCode:e})===true;if(!a){if(f){var h={from:'keystrokeHandler'};a=g.execCommand(f,h)!==false;}if(!a){var i=g.specialKeys[e];a=i&&i(g)===true;if(!a)a=!!this.blockedKeystrokes[e];}}if(a)d.preventDefault(true);return!a;},c=function(d){if(a){a=false;d.data.preventDefault(true);}};CKEDITOR.keystrokeHandler.prototype={attach:function(d){d.on('keydown',b,this);if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)d.on('keypress',c,this);}};})();CKEDITOR.config.blockedKeystrokes=[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85];CKEDITOR.config.keystrokes=[[CKEDITOR.ALT+121,'toolbarFocus'],[CKEDITOR.ALT+122,'elementsPathFocus'],[CKEDITOR.SHIFT+121,'contextMenu'],[CKEDITOR.CTRL+CKEDITOR.SHIFT+121,'contextMenu'],[CKEDITOR.CTRL+90,'undo'],[CKEDITOR.CTRL+89,'redo'],[CKEDITOR.CTRL+CKEDITOR.SHIFT+90,'redo'],[CKEDITOR.CTRL+76,'link'],[CKEDITOR.CTRL+66,'bold'],[CKEDITOR.CTRL+73,'italic'],[CKEDITOR.CTRL+85,'underline'],[CKEDITOR.ALT+109,'toolbarCollapse']];
Index: /trunk/filemanager/tp/ckeditor/plugins/tab/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/tab/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/tab/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a={exec:function(c){c.container.focusNext(true);}},b={exec:function(c){c.container.focusPrevious(true);}};CKEDITOR.plugins.add('tab',{requires:['keystrokes'],init:function(c){var d=c.keystrokeHandler.keystrokes;d[9]='tab';d[CKEDITOR.SHIFT+9]='shiftTab';var e=c.config.tabSpaces,f='';while(e--)f+='\xa0';c.addCommand('tab',{exec:function(g){if(!g.fire('tab'))if(f.length>0)g.insertHtml(f);else return g.execCommand('blur');return true;}});c.addCommand('shiftTab',{exec:function(g){if(!g.fire('shiftTab'))return g.execCommand('blurBack');return true;}});c.addCommand('blur',a);c.addCommand('blurBack',b);}});})();CKEDITOR.dom.element.prototype.focusNext=function(a){var j=this;var b=j.$,c=j.getTabIndex(),d,e,f,g,h,i;if(c<=0){h=j.getNextSourceNode(a,CKEDITOR.NODE_ELEMENT);while(h){if(h.isVisible()&&h.getTabIndex()===0){f=h;break;}h=h.getNextSourceNode(false,CKEDITOR.NODE_ELEMENT);}}else{h=j.getDocument().getBody().getFirst();while(h=h.getNextSourceNode(false,CKEDITOR.NODE_ELEMENT)){if(!d)if(!e&&h.equals(j)){e=true;if(a){if(!(h=h.getNextSourceNode(true,CKEDITOR.NODE_ELEMENT)))break;d=1;}}else if(e&&!j.contains(h))d=1;if(!h.isVisible()||(i=h.getTabIndex())<(0))continue;if(d&&i==c){f=h;break;}if(i>c&&(!f||!g||i<g)){f=h;g=i;}else if(!f&&i===0){f=h;g=i;}}}if(f)f.focus();};CKEDITOR.dom.element.prototype.focusPrevious=function(a){var j=this;var b=j.$,c=j.getTabIndex(),d,e,f,g=0,h,i=j.getDocument().getBody().getLast();while(i=i.getPreviousSourceNode(false,CKEDITOR.NODE_ELEMENT)){if(!d)if(!e&&i.equals(j)){e=true;if(a){if(!(i=i.getPreviousSourceNode(true,CKEDITOR.NODE_ELEMENT)))break;d=1;}}else if(e&&!j.contains(i))d=1;if(!i.isVisible()||(h=i.getTabIndex())<(0))continue;if(c<=0){if(d&&h===0){f=i;break;}if(h>g){f=i;g=h;}}else{if(d&&h==c){f=i;break;}if(h<c&&(!f||h>g)){f=i;g=h;}}}if(f)f.focus();};CKEDITOR.config.tabSpaces=0;
Index: /trunk/filemanager/tp/ckeditor/plugins/blockquote/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/blockquote/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/blockquote/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(e,f){var g=f.block||f.blockLimit;if(!g||g.getName()=='body')return CKEDITOR.TRISTATE_OFF;if(g.getAscendant('blockquote',true))return CKEDITOR.TRISTATE_ON;return CKEDITOR.TRISTATE_OFF;};function b(e){var f=e.editor,g=f.getCommand('blockquote');g.state=a(f,e.data.path);g.fire('state');};function c(e){for(var f=0,g=e.getChildCount(),h;f<g&&(h=e.getChild(f));f++)if(h.type==CKEDITOR.NODE_ELEMENT&&h.isBlockBoundary())return false;return true;};var d={exec:function(e){var f=e.getCommand('blockquote').state,g=e.getSelection(),h=g&&g.getRanges()[0];if(!h)return;var i=g.createBookmarks();if(CKEDITOR.env.ie){var j=i[0].startNode,k=i[0].endNode,l;if(j&&j.getParent().getName()=='blockquote'){l=j;while(l=l.getNext())if(l.type==CKEDITOR.NODE_ELEMENT&&l.isBlockBoundary()){j.move(l,true);break;}}if(k&&k.getParent().getName()=='blockquote'){l=k;while(l=l.getPrevious())if(l.type==CKEDITOR.NODE_ELEMENT&&l.isBlockBoundary()){k.move(l);break;}}}var m=h.createIterator(),n;if(f==CKEDITOR.TRISTATE_OFF){var o=[];while(n=m.getNextParagraph())o.push(n);if(o.length<1){var p=e.document.createElement(e.config.enterMode==CKEDITOR.ENTER_P?'p':'div'),q=i.shift();h.insertNode(p);p.append(new CKEDITOR.dom.text('﻿',e.document));h.moveToBookmark(q);h.selectNodeContents(p);h.collapse(true);q=h.createBookmark();o.push(p);i.unshift(q);}var r=o[0].getParent(),s=[];for(var t=0;t<o.length;t++){n=o[t];r=r.getCommonAncestor(n.getParent());}var u={table:1,tbody:1,tr:1,ol:1,ul:1};while(u[r.getName()])r=r.getParent();var v=null;while(o.length>0){n=o.shift();while(!n.getParent().equals(r))n=n.getParent();if(!n.equals(v))s.push(n);v=n;}while(s.length>0){n=s.shift();if(n.getName()=='blockquote'){var w=new CKEDITOR.dom.documentFragment(e.document);while(n.getFirst()){w.append(n.getFirst().remove());o.push(w.getLast());}w.replace(n);}else o.push(n);}var x=e.document.createElement('blockquote');x.insertBefore(o[0]);while(o.length>0){n=o.shift();x.append(n);}}else if(f==CKEDITOR.TRISTATE_ON){var y=[],z={};while(n=m.getNextParagraph()){var A=null,B=null;while(n.getParent()){if(n.getParent().getName()=='blockquote'){A=n.getParent();B=n;break;}n=n.getParent();}if(A&&B&&!B.getCustomData('blockquote_moveout')){y.push(B);CKEDITOR.dom.element.setMarker(z,B,'blockquote_moveout',true);}}CKEDITOR.dom.element.clearAllMarkers(z);var C=[],D=[];z={};while(y.length>0){var E=y.shift();x=E.getParent();if(!E.getPrevious())E.remove().insertBefore(x);else if(!E.getNext())E.remove().insertAfter(x);else{E.breakParent(E.getParent());
+D.push(E.getNext());}if(!x.getCustomData('blockquote_processed')){D.push(x);CKEDITOR.dom.element.setMarker(z,x,'blockquote_processed',true);}C.push(E);}CKEDITOR.dom.element.clearAllMarkers(z);for(t=D.length-1;t>=0;t--){x=D[t];if(c(x))x.remove();}if(e.config.enterMode==CKEDITOR.ENTER_BR){var F=true;while(C.length){E=C.shift();if(E.getName()=='div'){w=new CKEDITOR.dom.documentFragment(e.document);var G=F&&E.getPrevious()&&!(E.getPrevious().type==CKEDITOR.NODE_ELEMENT&&E.getPrevious().isBlockBoundary());if(G)w.append(e.document.createElement('br'));var H=E.getNext()&&!(E.getNext().type==CKEDITOR.NODE_ELEMENT&&E.getNext().isBlockBoundary());while(E.getFirst())E.getFirst().remove().appendTo(w);if(H)w.append(e.document.createElement('br'));w.replace(E);F=false;}}}}g.selectBookmarks(i);e.focus();}};CKEDITOR.plugins.add('blockquote',{init:function(e){e.addCommand('blockquote',d);e.ui.addButton('Blockquote',{label:e.lang.blockquote,command:'blockquote'});e.on('selectionChange',b);},requires:['domiterator']});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/wysiwygarea/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/wysiwygarea/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/wysiwygarea/plugin.js	(revision 2000)
@@ -0,0 +1,9 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a={table:1,pre:1},b=/\s*<(p|div|address|h\d|center)[^>]*>\s*(?:<br[^>]*>|&nbsp;|&#160;)\s*(:?<\/\1>)?\s*$/gi;function c(g){var l=this;if(l.mode=='wysiwyg'){l.focus();var h=l.getSelection(),i=g.data;if(l.dataProcessor)i=l.dataProcessor.toHtml(i);if(CKEDITOR.env.ie){var j=h.isLocked;if(j)h.unlock();var k=h.getNative();if(k.type=='Control')k.clear();k.createRange().pasteHTML(i);if(j)l.getSelection().lock();}else l.document.$.execCommand('inserthtml',false,i);}};function d(g){if(this.mode=='wysiwyg'){this.focus();this.fire('saveSnapshot');var h=g.data,i=h.getName(),j=CKEDITOR.dtd.$block[i],k=this.getSelection(),l=k.getRanges(),m=k.isLocked;if(m)k.unlock();var n,o,p,q;for(var r=l.length-1;r>=0;r--){n=l[r];n.deleteContents();o=!r&&h||h.clone(true);var s,t;if(j)while((s=n.getCommonAncestor(false,true))&&((t=CKEDITOR.dtd[s.getName()])&&(!(t&&t[i]))))if(n.checkStartOfBlock()&&n.checkEndOfBlock()){n.setStartBefore(s);n.collapse(true);s.remove();}else n.splitBlock();n.insertNode(o);if(!p)p=o;}n.moveToPosition(p,CKEDITOR.POSITION_AFTER_END);var u=p.getNextSourceNode(true);if(u&&u.type==CKEDITOR.NODE_ELEMENT)n.moveToElementEditStart(u);k.selectRanges([n]);if(m)this.getSelection().lock();CKEDITOR.tools.setTimeout(function(){this.fire('saveSnapshot');},0,this);}};function e(g){if(!g.checkDirty())setTimeout(function(){g.resetDirty();});};function f(g){var h=g.editor,i=g.data.path,j=i.blockLimit,k=g.data.selection,l=k.getRanges()[0],m=h.document.getBody(),n=h.config.enterMode;if(n!=CKEDITOR.ENTER_BR&&l.collapsed&&j.getName()=='body'&&!i.block){e(h);var o=k.createBookmarks(),p=l.fixBlock(true,h.config.enterMode==CKEDITOR.ENTER_DIV?'div':'p');if(CKEDITOR.env.ie){var q=p.getElementsByTag('br'),r;for(var s=0;s<q.count();s++)if((r=q.getItem(s))&&(r.hasAttribute('_cke_bogus')))r.remove();}k.selectBookmarks(o);var t=p.getChildren(),u=t.count(),v,w=CKEDITOR.dom.walker.whitespaces(true),x=p.getPrevious(w),y=p.getNext(w),z;if(x&&x.getName&&!(x.getName() in a))z=x;else if(y&&y.getName&&!(y.getName() in a))z=y;if((!u||(v=t.getItem(0))&&(v.is&&v.is('br')))&&(z&&l.moveToElementEditStart(z))){p.remove();l.select();}}var A=m.getLast(CKEDITOR.dom.walker.whitespaces(true));if(A&&A.getName&&A.getName() in a){e(h);var B=h.document.createElement(CKEDITOR.env.ie&&n!=CKEDITOR.ENTER_BR?'<br _cke_bogus="true" />':'br');m.append(B);}};CKEDITOR.plugins.add('wysiwygarea',{requires:['editingblock'],init:function(g){var h=g.config.enterMode!=CKEDITOR.ENTER_BR?g.config.enterMode==CKEDITOR.ENTER_DIV?'div':'p':false;
+g.on('editingBlockReady',function(){var i,j,k,l,m,n,o,p=CKEDITOR.env.isCustomDomain(),q=function(){if(k)k.remove();if(j)j.remove();n=0;var t='void( '+(CKEDITOR.env.gecko?'setTimeout':'')+'( function(){'+'document.open();'+(CKEDITOR.env.ie&&p?'document.domain="'+document.domain+'";':'')+'document.write( window.parent[ "_cke_htmlToLoad_'+g.name+'" ] );'+'document.close();'+'window.parent[ "_cke_htmlToLoad_'+g.name+'" ] = null;'+'}'+(CKEDITOR.env.gecko?', 0 )':')()')+' )';if(CKEDITOR.env.opera)t='void(0);';k=CKEDITOR.dom.element.createFromHtml('<iframe style="width:100%;height:100%" frameBorder="0" tabIndex="-1" allowTransparency="true" src="javascript:'+encodeURIComponent(t)+'"'+'></iframe>');var u=g.lang.editorTitle.replace('%1',g.name);if(CKEDITOR.env.gecko){k.on('load',function(v){v.removeListener();s(k.$.contentWindow);});i.setAttributes({role:'region',title:u});k.setAttributes({role:'region',title:' '});}else if(CKEDITOR.env.webkit){k.setAttribute('title',u);k.setAttribute('name',u);}else if(CKEDITOR.env.ie){j=CKEDITOR.dom.element.createFromHtml('<fieldset style="height:100%'+(CKEDITOR.env.ie&&CKEDITOR.env.quirks?';position:relative':'')+'">'+'<legend style="display:block;width:0;height:0;overflow:hidden;'+(CKEDITOR.env.ie&&CKEDITOR.env.quirks?'position:absolute':'')+'">'+CKEDITOR.tools.htmlEncode(u)+'</legend>'+'</fieldset>',CKEDITOR.document);k.appendTo(j);j.appendTo(i);}if(!CKEDITOR.env.ie)i.append(k);},r='<script id="cke_actscrpt" type="text/javascript">window.onload = function(){window.parent.CKEDITOR._["contentDomReady'+g.name+'"]( window );'+'}'+'</script>',s=function(t){if(n)return;n=1;var u=t.document,v=u.body,w=u.getElementById('cke_actscrpt');w.parentNode.removeChild(w);delete CKEDITOR._['contentDomReady'+g.name];v.spellcheck=!g.config.disableNativeSpellChecker;if(CKEDITOR.env.ie){v.hideFocus=true;v.disabled=true;v.contentEditable=true;v.removeAttribute('disabled');}else u.designMode='on';try{u.execCommand('enableObjectResizing',false,!g.config.disableObjectResizing);}catch(z){}try{u.execCommand('enableInlineTableEditing',false,!g.config.disableNativeTableHandles);}catch(A){}t=g.window=new CKEDITOR.dom.window(t);u=g.document=new CKEDITOR.dom.document(u);if(!(CKEDITOR.env.ie||CKEDITOR.env.opera))u.on('mousedown',function(B){var C=B.data.getTarget();if(C.is('img','hr','input','textarea','select'))g.getSelection().selectElement(C);});if(CKEDITOR.env.webkit){u.on('click',function(B){if(B.data.getTarget().is('input','select'))B.data.preventDefault();
+});u.on('mouseup',function(B){if(B.data.getTarget().is('input','textarea'))B.data.preventDefault();});}var x=CKEDITOR.env.ie||CKEDITOR.env.webkit?t:u;x.on('blur',function(){g.focusManager.blur();});x.on('focus',function(){if(CKEDITOR.env.gecko){var B=v;while(B.firstChild)B=B.firstChild;if(!B.nextSibling&&'BR'==B.tagName&&B.hasAttribute('_moz_editor_bogus_node')){var C=u.$.createEvent('KeyEvents');C.initKeyEvent('keypress',true,true,t.$,false,false,false,false,0,32);u.$.dispatchEvent(C);var D=u.getBody().getFirst();if(g.config.enterMode==CKEDITOR.ENTER_BR)u.createElement('br',{attributes:{_moz_dirty:''}}).replace(D);else D.remove();}}g.focusManager.focus();});var y=g.keystrokeHandler;if(y)y.attach(u);if(CKEDITOR.env.ie)g.on('key',function(B){var C=B.data.keyCode==8&&g.getSelection().getSelectedElement();if(C){g.fire('saveSnapshot');C.remove();g.fire('saveSnapshot');B.cancel();}});if(g.contextMenu)g.contextMenu.addTarget(u);setTimeout(function(){g.fire('contentDom');if(o){g.mode='wysiwyg';g.fire('mode');o=false;}l=false;if(m){g.focus();m=false;}setTimeout(function(){g.fire('dataReady');},0);if(CKEDITOR.env.ie)setTimeout(function(){if(g.document){var B=g.document.$.body;B.runtimeStyle.marginBottom='0px';B.runtimeStyle.marginBottom='';}},1000);},0);};g.addMode('wysiwyg',{load:function(t,u,v){i=t;if(CKEDITOR.env.ie&&CKEDITOR.env.quirks)t.setStyle('position','relative');g.mayBeDirty=true;o=true;if(v)this.loadSnapshotData(u);else this.loadData(u);},loadData:function(t){l=true;if(g.dataProcessor)t=g.dataProcessor.toHtml(t,h);t=g.config.docType+'<html dir="'+g.config.contentsLangDirection+'">'+'<head>'+'<link type="text/css" rel="stylesheet" href="'+[].concat(g.config.contentsCss).join('"><link type="text/css" rel="stylesheet" href="')+'">'+'<style type="text/css" _fcktemp="true">'+g._.styles.join('\n')+'</style>'+'</head>'+'<body>'+t+'</body>'+'</html>'+r;window['_cke_htmlToLoad_'+g.name]=t;CKEDITOR._['contentDomReady'+g.name]=s;q();if(CKEDITOR.env.opera){var u=k.$.contentWindow.document;u.open();u.write(t);u.close();}},getData:function(){var t=k.getFrameDocument().getBody().getHtml();if(g.dataProcessor)t=g.dataProcessor.toDataFormat(t,h);if(g.config.ignoreEmptyParagraph)t=t.replace(b,'');return t;},getSnapshotData:function(){return k.getFrameDocument().getBody().getHtml();},loadSnapshotData:function(t){k.getFrameDocument().getBody().setHtml(t);},unload:function(t){g.window=g.document=k=i=m=null;g.fire('contentDomUnload');},focus:function(){if(l)m=true;else if(g.window){g.window.focus();
+g.selectionChange();}}});g.on('insertHtml',c,null,null,20);g.on('insertElement',d,null,null,20);g.on('selectionChange',f,null,null,1);});}});})();CKEDITOR.config.disableObjectResizing=false;CKEDITOR.config.disableNativeTableHandles=true;CKEDITOR.config.disableNativeSpellChecker=true;CKEDITOR.config.ignoreEmptyParagraph=true;
Index: /trunk/filemanager/tp/ckeditor/plugins/list/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/list/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/list/plugin.js	(revision 2000)
@@ -0,0 +1,9 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a={ol:1,ul:1},b=/^[\n\r\t ]*$/;CKEDITOR.plugins.list={listToArray:function(i,j,k,l,m){if(!a[i.getName()])return[];if(!l)l=0;if(!k)k=[];for(var n=0,o=i.getChildCount();n<o;n++){var p=i.getChild(n);if(p.$.nodeName.toLowerCase()!='li')continue;var q={parent:i,indent:l,contents:[]};if(!m){q.grandparent=i.getParent();if(q.grandparent&&q.grandparent.$.nodeName.toLowerCase()=='li')q.grandparent=q.grandparent.getParent();}else q.grandparent=m;if(j)CKEDITOR.dom.element.setMarker(j,p,'listarray_index',k.length);k.push(q);for(var r=0,s=p.getChildCount();r<s;r++){var t=p.getChild(r);if(t.type==CKEDITOR.NODE_ELEMENT&&a[t.getName()])CKEDITOR.plugins.list.listToArray(t,j,k,l+1,q.grandparent);else q.contents.push(t);}}return k;},arrayToList:function(i,j,k,l){if(!k)k=0;if(!i||i.length<k+1)return null;var m=i[k].parent.getDocument(),n=new CKEDITOR.dom.documentFragment(m),o=null,p=k,q=Math.max(i[k].indent,0),r=null,s=l==CKEDITOR.ENTER_P?'p':'div';for(;;){var t=i[p];if(t.indent==q){if(!o||i[p].parent.getName()!=o.getName()){o=i[p].parent.clone(false,true);n.append(o);}r=o.append(m.createElement('li'));for(var u=0;u<t.contents.length;u++)r.append(t.contents[u].clone(true,true));p++;}else if(t.indent==Math.max(q,0)+1){var v=CKEDITOR.plugins.list.arrayToList(i,null,p,l);r.append(v.listNode);p=v.nextIndex;}else if(t.indent==-1&&!k&&t.grandparent){r;if(a[t.grandparent.getName()])r=m.createElement('li');else if(l!=CKEDITOR.ENTER_BR&&t.grandparent.getName()!='td')r=m.createElement(s);else r=new CKEDITOR.dom.documentFragment(m);for(u=0;u<t.contents.length;u++)r.append(t.contents[u].clone(true,true));if(r.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&p!=i.length-1){if(r.getLast()&&r.getLast().type==CKEDITOR.NODE_ELEMENT&&r.getLast().getAttribute('type')=='_moz')r.getLast().remove();r.appendBogus();}if(r.type==CKEDITOR.NODE_ELEMENT&&r.getName()==s&&r.$.firstChild){r.trim();var w=r.getFirst();if(w.type==CKEDITOR.NODE_ELEMENT&&w.isBlockBoundary()){var x=new CKEDITOR.dom.documentFragment(m);r.moveChildren(x);r=x;}}var y=r.$.nodeName.toLowerCase();if(!CKEDITOR.env.ie&&(y=='div'||y=='p'))r.appendBogus();n.append(r);o=null;p++;}else return null;if(i.length<=p||Math.max(i[p].indent,0)<q)break;}if(j){var z=n.getFirst();while(z){if(z.type==CKEDITOR.NODE_ELEMENT)CKEDITOR.dom.element.clearMarkers(j,z);z=z.getNextSourceNode();}}return{listNode:n,nextIndex:p};}};function c(i,j){i.getCommand(this.name).setState(j);};function d(i){var j=i.data.path,k=j.blockLimit,l=j.elements,m;for(var n=0;n<l.length&&(m=l[n])&&(!m.equals(k));
+n++)if(a[l[n].getName()])return c.call(this,i.editor,this.type==l[n].getName()?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF);return c.call(this,i.editor,CKEDITOR.TRISTATE_OFF);};function e(i,j,k,l){var m=CKEDITOR.plugins.list.listToArray(j.root,k),n=[];for(var o=0;o<j.contents.length;o++){var p=j.contents[o];p=p.getAscendant('li',true);if(!p||p.getCustomData('list_item_processed'))continue;n.push(p);CKEDITOR.dom.element.setMarker(k,p,'list_item_processed',true);}var q=j.root.getDocument().createElement(this.type);for(o=0;o<n.length;o++){var r=n[o].getCustomData('listarray_index');m[r].parent=q;}var s=CKEDITOR.plugins.list.arrayToList(m,k,null,i.config.enterMode),t,u=s.listNode.getChildCount();for(o=0;o<u&&(t=s.listNode.getChild(o));o++)if(t.getName()==this.type)l.push(t);s.listNode.replace(j.root);};function f(i,j,k){var l=j.contents,m=j.root.getDocument(),n=[];if(l.length==1&&l[0].equals(j.root)){var o=m.createElement('div');l[0].moveChildren&&l[0].moveChildren(o);l[0].append(o);l[0]=o;}var p=j.contents[0].getParent();for(var q=0;q<l.length;q++)p=p.getCommonAncestor(l[q].getParent());for(q=0;q<l.length;q++){var r=l[q],s;while(s=r.getParent()){if(s.equals(p)){n.push(r);break;}r=s;}}if(n.length<1)return;var t=n[n.length-1].getNext(),u=m.createElement(this.type);k.push(u);while(n.length){var v=n.shift(),w=m.createElement('li');v.moveChildren(w);v.remove();w.appendTo(u);if(!CKEDITOR.env.ie)w.appendBogus();}if(t)u.insertBefore(t);else u.appendTo(p);};function g(i,j,k){var l=CKEDITOR.plugins.list.listToArray(j.root,k),m=[];for(var n=0;n<j.contents.length;n++){var o=j.contents[n];o=o.getAscendant('li',true);if(!o||o.getCustomData('list_item_processed'))continue;m.push(o);CKEDITOR.dom.element.setMarker(k,o,'list_item_processed',true);}var p=null;for(n=0;n<m.length;n++){var q=m[n].getCustomData('listarray_index');l[q].indent=-1;p=q;}for(n=p+1;n<l.length;n++)if(l[n].indent>l[n-1].indent+1){var r=l[n-1].indent+1-l[n].indent,s=l[n].indent;while(l[n]&&l[n].indent>=s){l[n].indent+=r;n++;}n--;}var t=CKEDITOR.plugins.list.arrayToList(l,k,null,i.config.enterMode),u=t.listNode,v,w;function x(z){if((v=u[z?'getFirst':'getLast']())&&(!(v.is&&v.isBlockBoundary())&&(w=j.root[z?'getPrevious':'getNext'](CKEDITOR.dom.walker.whitespaces(true)))&&(!(w.is&&w.isBlockBoundary({br:1})))))i.document.createElement('br')[z?'insertBefore':'insertAfter'](v);};x(true);x();var y=j.root.getParent();u.replace(j.root);};function h(i,j){this.name=i;this.type=j;};h.prototype={exec:function(i){i.focus();
+var j=i.document,k=i.getSelection(),l=k&&k.getRanges();if(!l||l.length<1)return;if(this.state==CKEDITOR.TRISTATE_OFF){var m=j.getBody();m.trim();if(!m.getFirst()){var n=j.createElement(i.config.enterMode==CKEDITOR.ENTER_P?'p':i.config.enterMode==CKEDITOR.ENTER_DIV?'div':'br');n.appendTo(m);l=[new CKEDITOR.dom.range(j)];if(n.is('br')){l[0].setStartBefore(n);l[0].setEndAfter(n);}else l[0].selectNodeContents(n);k.selectRanges(l);}else{var o=l.length==1&&l[0],p=o&&o.getEnclosedNode();if(p&&p.is&&this.type==p.getName())c.call(this,i,CKEDITOR.TRISTATE_ON);}}var q=k.createBookmarks(true),r=[],s={};while(l.length>0){o=l.shift();var t=o.getBoundaryNodes(),u=t.startNode,v=t.endNode;if(u.type==CKEDITOR.NODE_ELEMENT&&u.getName()=='td')o.setStartAt(t.startNode,CKEDITOR.POSITION_AFTER_START);if(v.type==CKEDITOR.NODE_ELEMENT&&v.getName()=='td')o.setEndAt(t.endNode,CKEDITOR.POSITION_BEFORE_END);var w=o.createIterator(),x;w.forceBrBreak=this.state==CKEDITOR.TRISTATE_OFF;while(x=w.getNextParagraph()){var y=new CKEDITOR.dom.elementPath(x),z=null,A=false,B=y.blockLimit,C;for(var D=0;D<y.elements.length&&(C=y.elements[D])&&(!C.equals(B));D++)if(a[C.getName()]){B.removeCustomData('list_group_object');var E=C.getCustomData('list_group_object');if(E)E.contents.push(x);else{E={root:C,contents:[x]};r.push(E);CKEDITOR.dom.element.setMarker(s,C,'list_group_object',E);}A=true;break;}if(A)continue;var F=B;if(F.getCustomData('list_group_object'))F.getCustomData('list_group_object').contents.push(x);else{E={root:F,contents:[x]};CKEDITOR.dom.element.setMarker(s,F,'list_group_object',E);r.push(E);}}}var G=[];while(r.length>0){E=r.shift();if(this.state==CKEDITOR.TRISTATE_OFF){if(a[E.root.getName()])e.call(this,i,E,s,G);else f.call(this,i,E,G);}else if(this.state==CKEDITOR.TRISTATE_ON&&a[E.root.getName()])g.call(this,i,E,s);}for(D=0;D<G.length;D++){z=G[D];var H,I=this;(H=function(J){var K=z[J?'getPrevious':'getNext'](CKEDITOR.dom.walker.whitespaces(true));if(K&&K.getName&&K.getName()==I.type){K.remove();K.moveChildren(z,J?true:false);}})();H(true);}CKEDITOR.dom.element.clearAllMarkers(s);k.selectBookmarks(q);i.focus();}};CKEDITOR.plugins.add('list',{init:function(i){var j=new h('numberedlist','ol'),k=new h('bulletedlist','ul');i.addCommand('numberedlist',j);i.addCommand('bulletedlist',k);i.ui.addButton('NumberedList',{label:i.lang.numberedlist,command:'numberedlist'});i.ui.addButton('BulletedList',{label:i.lang.bulletedlist,command:'bulletedlist'});i.on('selectionChange',CKEDITOR.tools.bind(d,j));
+i.on('selectionChange',CKEDITOR.tools.bind(d,k));},requires:['domiterator']});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/uicolor/lang/en.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/uicolor/lang/en.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/uicolor/lang/en.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','en',{uicolor:{title:'UI Color Picker',preview:'Live preview',config:'Paste this string into your config.js file',predefined:'Predefined color sets'}});
Index: /trunk/filemanager/tp/ckeditor/plugins/uicolor/dialogs/uicolor.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/uicolor/dialogs/uicolor.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/uicolor/dialogs/uicolor.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('uicolor',function(a){var b,c,d,e=a.getUiColor();function f(i){if(/^#/.test(i))i=window.YAHOO.util.Color.hex2rgb(i.substr(1));c.setValue(i,true);c.refresh('cke_uicolor_picker');};function g(i,j){if(j||b._.contents.tab1.livePeview.getValue())a.setUiColor(i);b._.contents.tab1.configBox.setValue('config.uiColor = "#'+c.get('hex')+'"');};d={id:'yuiColorPicker',type:'html',html:"<div id='cke_uicolor_picker' style='width: 360px; height: 200px; position: relative;'></div>",onLoad:function(i){var j=CKEDITOR.getUrl('plugins/uicolor/yui/');c=new window.YAHOO.widget.ColorPicker('cke_uicolor_picker',{showhsvcontrols:true,showhexcontrols:true,images:{PICKER_THUMB:j+'assets/picker_thumb.png',HUE_THUMB:j+'assets/hue_thumb.png'}});if(e)f(e);c.on('rgbChange',function(){b._.contents.tab1.predefined.setValue('');g('#'+c.get('hex'));});var k=new CKEDITOR.dom.nodeList(c.getElementsByTagName('input'));for(var l=0;l<k.count();l++)k.getItem(l).addClass('cke_dialog_ui_input_text');}};var h=true;return{title:a.lang.uicolor.title,minWidth:360,minHeight:320,onLoad:function(){b=this;this.setupContent();if(CKEDITOR.env.ie7Compat)b.parts.contents.setStyle('overflow','hidden');},contents:[{id:'tab1',label:'',title:'',expand:true,padding:0,elements:[d,{id:'tab1',type:'vbox',children:[{id:'livePeview',type:'checkbox',label:a.lang.uicolor.preview,'default':1,onLoad:function(){h=true;},onChange:function(){if(h)return;var i=this.getValue(),j=i?'#'+c.get('hex'):e;g(j,true);}},{type:'hbox',children:[{id:'predefined',type:'select','default':'',label:a.lang.uicolor.predefined,items:[[''],['Light blue','#9AB8F3'],['Sand','#D2B48C'],['Metallic','#949AAA'],['Purple','#C2A3C7'],['Olive','#A2C980'],['Happy green','#9BD446'],['Jezebel Blue','#14B8C4'],['Burn','#FF893A'],['Easy red','#FF6969'],['Pisces 3','#48B4F2'],['Aquarius 5','#487ED4'],['Absinthe','#A8CF76'],['Scrambled Egg','#C7A622'],['Hello monday','#8E8D80'],['Lovely sunshine','#F1E8B1'],['Recycled air','#B3C593'],['Down','#BCBCA4'],['Mark Twain','#CFE91D'],['Specks of dust','#D1B596'],['Lollipop','#F6CE23']],onChange:function(){var i=this.getValue();if(i){f(i);g(i);CKEDITOR.document.getById('predefinedPreview').setStyle('background',i);}else CKEDITOR.document.getById('predefinedPreview').setStyle('background','');},onShow:function(){var i=a.getUiColor();if(i)this.setValue(i);}},{id:'predefinedPreview',type:'html',html:'<div id="cke_uicolor_preview" style="border: 1px solid black; padding: 3px; width: 30px;"><div id="predefinedPreview" style="width: 30px; height: 30px;">&nbsp;</div></div>'}]},{id:'configBox',type:'text',label:a.lang.uicolor.config,onShow:function(){var i=a.getUiColor();
+if(i)this.setValue('config.uiColor = "'+i+'"');}}]}]}],buttons:[CKEDITOR.dialog.okButton]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/uicolor/yui/yui.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/uicolor/yui/yui.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/uicolor/yui/yui.js	(revision 2000)
@@ -0,0 +1,76 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/*jsl:ignoreall*/
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=(""+A[C]).split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C){var B=YAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return false;}};YAHOO.register=function(A,E,D){var I=YAHOO.env.modules,B,H,G,F,C;if(!I[A]){I[A]={versions:[],builds:[]};}B=I[A];H=D.version;G=D.build;F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(C=0;C<F.length;C=C+1){F[C](B);}if(E){E.VERSION=H;E.BUILD=G;}else{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(A){return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function(){var C={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0,caja:0},B=navigator.userAgent,A;if((/KHTML/).test(B)){C.webkit=1;}A=B.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){C.webkit=parseFloat(A[1]);if(/ Mobile\//.test(B)){C.mobile="Apple";}else{A=B.match(/NokiaN[^\/]*/);if(A){C.mobile=A[0];}}A=B.match(/AdobeAIR\/([^\s]*)/);if(A){C.air=A[0];}}if(!C.webkit){A=B.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){C.opera=parseFloat(A[1]);A=B.match(/Opera Mini[^;]*/);if(A){C.mobile=A[0];}}else{A=B.match(/MSIE\s([^;]*)/);if(A&&A[1]){C.ie=parseFloat(A[1]);}else{A=B.match(/Gecko\/([^\s]*)/);if(A){C.gecko=1;A=B.match(/rv:([^\s\)]*)/);if(A&&A[1]){C.gecko=parseFloat(A[1]);}}}}}A=B.match(/Caja\/([^\s]*)/);if(A&&A[1]){C.caja=parseFloat(A[1]);}return C;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.env.listeners,D=true,C;if(B){for(C=0;C<A.length;C=C+1){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var B=YAHOO.lang,F="[object Array]",C="[object Function]",A=Object.prototype,E=["toString","valueOf"],D={isArray:function(G){return A.toString.apply(G)===F;},isBoolean:function(G){return typeof G==="boolean";},isFunction:function(G){return A.toString.apply(G)===C;},isNull:function(G){return G===null;},isNumber:function(G){return typeof G==="number"&&isFinite(G);},isObject:function(G){return(G&&(typeof G==="object"||B.isFunction(G)))||false;},isString:function(G){return typeof G==="string";},isUndefined:function(G){return typeof G==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(I,H){var G,K,J;for(G=0;G<E.length;G=G+1){K=E[G];J=H[K];if(B.isFunction(J)&&J!=A[K]){I[K]=J;}}}:function(){},extend:function(J,K,I){if(!K||!J){throw new Error("extend failed, please check that "+"all dependencies are included.");}var H=function(){},G;H.prototype=K.prototype;J.prototype=new H();J.prototype.constructor=J;J.superclass=K.prototype;if(K.prototype.constructor==A.constructor){K.prototype.constructor=K;}if(I){for(G in I){if(B.hasOwnProperty(I,G)){J.prototype[G]=I[G];}}B._IEEnumFix(J.prototype,I);}},augmentObject:function(K,J){if(!J||!K){throw new Error("Absorb failed, verify dependencies.");}var G=arguments,I,L,H=G[2];if(H&&H!==true){for(I=2;I<G.length;I=I+1){K[G[I]]=J[G[I]];}}else{for(L in J){if(H||!(L in K)){K[L]=J[L];}}B._IEEnumFix(K,J);}},augmentProto:function(J,I){if(!I||!J){throw new Error("Augment failed, verify dependencies.");}var G=[J.prototype,I.prototype],H;for(H=2;H<arguments.length;H=H+1){G.push(arguments[H]);}B.augmentObject.apply(this,G);},dump:function(G,L){var I,K,N=[],O="{...}",H="f(){...}",M=", ",J=" => ";if(!B.isObject(G)){return G+"";}else{if(G instanceof Date||("nodeType" in G&&"tagName" in G)){return G;}else{if(B.isFunction(G)){return H;}}}L=(B.isNumber(L))?L:3;if(B.isArray(G)){N.push("[");for(I=0,K=G.length;I<K;I=I+1){if(B.isObject(G[I])){N.push((L>0)?B.dump(G[I],L-1):O);}else{N.push(G[I]);}N.push(M);}if(N.length>1){N.pop();}N.push("]");}else{N.push("{");for(I in G){if(B.hasOwnProperty(G,I)){N.push(I+J);if(B.isObject(G[I])){N.push((L>0)?B.dump(G[I],L-1):O);}else{N.push(G[I]);}N.push(M);}}if(N.length>1){N.pop();}N.push("}");}return N.join("");},substitute:function(V,H,O){var L,K,J,R,S,U,Q=[],I,M="dump",P=" ",G="{",T="}",N;for(;;){L=V.lastIndexOf(G);if(L<0){break;}K=V.indexOf(T,L);if(L+1>=K){break;}I=V.substring(L+1,K);R=I;U=null;J=R.indexOf(P);if(J>-1){U=R.substring(J+1);R=R.substring(0,J);}S=H[R];if(O){S=O(R,S,U);}if(B.isObject(S)){if(B.isArray(S)){S=B.dump(S,parseInt(U,10));}else{U=U||"";N=U.indexOf(M);if(N>-1){U=U.substring(4);}if(S.toString===A.toString||N>-1){S=B.dump(S,parseInt(U,10));}else{S=S.toString();}}}else{if(!B.isString(S)&&!B.isNumber(S)){S="~-"+Q.length+"-~";Q[Q.length]=I;}}V=V.substring(0,L)+S+V.substring(K+1);}for(L=Q.length-1;L>=0;L=L-1){V=V.replace(new RegExp("~-"+L+"-~"),"{"+Q[L]+"}","g");}return V;},trim:function(G){try{return G.replace(/^\s+|\s+$/g,"");}catch(H){return G;}},merge:function(){var J={},H=arguments,G=H.length,I;for(I=0;I<G;I=I+1){B.augmentObject(J,H[I],true);}return J;},later:function(N,H,O,J,K){N=N||0;H=H||{};var I=O,M=J,L,G;if(B.isString(O)){I=H[O];}if(!I){throw new TypeError("method undefined");}if(!B.isArray(M)){M=[J];}L=function(){I.apply(H,M);};G=(K)?setInterval(L,N):setTimeout(L,N);return{interval:K,cancel:function(){if(this.interval){clearInterval(G);}else{clearTimeout(G);}}};},isValue:function(G){return(B.isObject(G)||B.isString(G)||B.isNumber(G)||B.isBoolean(G));}};B.hasOwnProperty=(A.hasOwnProperty)?function(G,H){return G&&G.hasOwnProperty(H);}:function(G,H){return !B.isUndefined(G[H])&&G.constructor.prototype[H]!==G[H];};D.augmentObject(B,D,true);YAHOO.util.Lang=B;B.augment=B.augmentProto;YAHOO.augment=B.augmentProto;YAHOO.extend=B.extend;})();YAHOO.register("yahoo",YAHOO,{version:"2.7.0",build:"1796"});(function(){YAHOO.env._id_counter=YAHOO.env._id_counter||0;var E=YAHOO.util,L=YAHOO.lang,m=YAHOO.env.ua,A=YAHOO.lang.trim,d={},h={},N=/^t(?:able|d|h)$/i,X=/color$/i,K=window.document,W=K.documentElement,e="ownerDocument",n="defaultView",v="documentElement",t="compatMode",b="offsetLeft",P="offsetTop",u="offsetParent",Z="parentNode",l="nodeType",C="tagName",O="scrollLeft",i="scrollTop",Q="getBoundingClientRect",w="getComputedStyle",a="currentStyle",M="CSS1Compat",c="BackCompat",g="class",F="className",J="",B=" ",s="(?:^|\\s)",k="(?= |$)",U="g",p="position",f="fixed",V="relative",j="left",o="top",r="medium",q="borderLeftWidth",R="borderTopWidth",D=m.opera,I=m.webkit,H=m.gecko,T=m.ie;E.Dom={CUSTOM_ATTRIBUTES:(!W.hasAttribute)?{"for":"htmlFor","class":F}:{"htmlFor":"for","className":g},get:function(y){var AA,Y,z,x,G;if(y){if(y[l]||y.item){return y;}if(typeof y==="string"){AA=y;y=K.getElementById(y);if(y&&y.id===AA){return y;}else{if(y&&K.all){y=null;Y=K.all[AA];for(x=0,G=Y.length;x<G;++x){if(Y[x].id===AA){return Y[x];}}}}return y;}if(y.DOM_EVENTS){y=y.get("element");}if("length" in y){z=[];for(x=0,G=y.length;x<G;++x){z[z.length]=E.Dom.get(y[x]);}return z;}return y;}return null;},getComputedStyle:function(G,Y){if(window[w]){return G[e][n][w](G,null)[Y];}else{if(G[a]){return E.Dom.IE_ComputedStyle.get(G,Y);}}},getStyle:function(G,Y){return E.Dom.batch(G,E.Dom._getStyle,Y);},_getStyle:function(){if(window[w]){return function(G,y){y=(y==="float")?y="cssFloat":E.Dom._toCamel(y);var x=G.style[y],Y;if(!x){Y=G[e][n][w](G,null);if(Y){x=Y[y];}}return x;};}else{if(W[a]){return function(G,y){var x;switch(y){case"opacity":x=100;try{x=G.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(z){try{x=G.filters("alpha").opacity;}catch(Y){}}return x/100;case"float":y="styleFloat";default:y=E.Dom._toCamel(y);x=G[a]?G[a][y]:null;return(G.style[y]||x);}};}}}(),setStyle:function(G,Y,x){E.Dom.batch(G,E.Dom._setStyle,{prop:Y,val:x});},_setStyle:function(){if(T){return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){switch(x){case"opacity":if(L.isString(Y.style.filter)){Y.style.filter="alpha(opacity="+y*100+")";if(!Y[a]||!Y[a].hasLayout){Y.style.zoom=1;}}break;case"float":x="styleFloat";default:Y.style[x]=y;}}else{}};}else{return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){if(x=="float"){x="cssFloat";}Y.style[x]=y;}else{}};}}(),getXY:function(G){return E.Dom.batch(G,E.Dom._getXY);},_canPosition:function(G){return(E.Dom._getStyle(G,"display")!=="none"&&E.Dom._inDoc(G));},_getXY:function(){if(K[v][Q]){return function(y){var z,Y,AA,AF,AE,AD,AC,G,x,AB=Math.floor,AG=false;if(E.Dom._canPosition(y)){AA=y[Q]();AF=y[e];z=E.Dom.getDocumentScrollLeft(AF);Y=E.Dom.getDocumentScrollTop(AF);AG=[AB(AA[j]),AB(AA[o])];if(T&&m.ie<8){AE=2;AD=2;AC=AF[t];G=S(AF[v],q);x=S(AF[v],R);if(m.ie===6){if(AC!==c){AE=0;AD=0;}}if((AC==c)){if(G!==r){AE=parseInt(G,10);}if(x!==r){AD=parseInt(x,10);}}AG[0]-=AE;AG[1]-=AD;}if((Y||z)){AG[0]+=z;AG[1]+=Y;}AG[0]=AB(AG[0]);AG[1]=AB(AG[1]);}else{}return AG;};}else{return function(y){var x,Y,AA,AB,AC,z=false,G=y;if(E.Dom._canPosition(y)){z=[y[b],y[P]];x=E.Dom.getDocumentScrollLeft(y[e]);Y=E.Dom.getDocumentScrollTop(y[e]);AC=((H||m.webkit>519)?true:false);while((G=G[u])){z[0]+=G[b];z[1]+=G[P];if(AC){z=E.Dom._calcBorders(G,z);}}if(E.Dom._getStyle(y,p)!==f){G=y;while((G=G[Z])&&G[C]){AA=G[i];AB=G[O];if(H&&(E.Dom._getStyle(G,"overflow")!=="visible")){z=E.Dom._calcBorders(G,z);}if(AA||AB){z[0]-=AB;z[1]-=AA;}}z[0]+=x;z[1]+=Y;}else{if(D){z[0]-=x;z[1]-=Y;}else{if(I||H){z[0]+=x;z[1]+=Y;}}}z[0]=Math.floor(z[0]);z[1]=Math.floor(z[1]);}else{}return z;};}}(),getX:function(G){var Y=function(x){return E.Dom.getXY(x)[0];};return E.Dom.batch(G,Y,E.Dom,true);},getY:function(G){var Y=function(x){return E.Dom.getXY(x)[1];};return E.Dom.batch(G,Y,E.Dom,true);},setXY:function(G,x,Y){E.Dom.batch(G,E.Dom._setXY,{pos:x,noRetry:Y});},_setXY:function(G,z){var AA=E.Dom._getStyle(G,p),y=E.Dom.setStyle,AD=z.pos,Y=z.noRetry,AB=[parseInt(E.Dom.getComputedStyle(G,j),10),parseInt(E.Dom.getComputedStyle(G,o),10)],AC,x;if(AA=="static"){AA=V;y(G,p,AA);}AC=E.Dom._getXY(G);if(!AD||AC===false){return false;}if(isNaN(AB[0])){AB[0]=(AA==V)?0:G[b];}if(isNaN(AB[1])){AB[1]=(AA==V)?0:G[P];}if(AD[0]!==null){y(G,j,AD[0]-AC[0]+AB[0]+"px");}if(AD[1]!==null){y(G,o,AD[1]-AC[1]+AB[1]+"px");}if(!Y){x=E.Dom._getXY(G);if((AD[0]!==null&&x[0]!=AD[0])||(AD[1]!==null&&x[1]!=AD[1])){E.Dom._setXY(G,{pos:AD,noRetry:true});}}},setX:function(Y,G){E.Dom.setXY(Y,[G,null]);},setY:function(G,Y){E.Dom.setXY(G,[null,Y]);},getRegion:function(G){var Y=function(x){var y=false;if(E.Dom._canPosition(x)){y=E.Region.getRegion(x);}else{}return y;};return E.Dom.batch(G,Y,E.Dom,true);},getClientWidth:function(){return E.Dom.getViewportWidth();},getClientHeight:function(){return E.Dom.getViewportHeight();},getElementsByClassName:function(AB,AF,AC,AE,x,AD){AB=L.trim(AB);AF=AF||"*";AC=(AC)?E.Dom.get(AC):null||K;if(!AC){return[];}var Y=[],G=AC.getElementsByTagName(AF),z=E.Dom.hasClass;for(var y=0,AA=G.length;y<AA;++y){if(z(G[y],AB)){Y[Y.length]=G[y];}}if(AE){E.Dom.batch(Y,AE,x,AD);}return Y;},hasClass:function(Y,G){return E.Dom.batch(Y,E.Dom._hasClass,G);},_hasClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom.getAttribute(x,F)||J;if(Y.exec){G=Y.test(y);}else{G=Y&&(B+y+B).indexOf(B+Y+B)>-1;}}else{}return G;},addClass:function(Y,G){return E.Dom.batch(Y,E.Dom._addClass,G);},_addClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom.getAttribute(x,F)||J;if(!E.Dom._hasClass(x,Y)){E.Dom.setAttribute(x,F,A(y+B+Y));G=true;}}else{}return G;},removeClass:function(Y,G){return E.Dom.batch(Y,E.Dom._removeClass,G);},_removeClass:function(y,x){var Y=false,AA,z,G;if(y&&x){AA=E.Dom.getAttribute(y,F)||J;E.Dom.setAttribute(y,F,AA.replace(E.Dom._getClassRegex(x),J));z=E.Dom.getAttribute(y,F);if(AA!==z){E.Dom.setAttribute(y,F,A(z));Y=true;if(E.Dom.getAttribute(y,F)===""){G=(y.hasAttribute&&y.hasAttribute(g))?g:F;y.removeAttribute(G);}}}else{}return Y;},replaceClass:function(x,Y,G){return E.Dom.batch(x,E.Dom._replaceClass,{from:Y,to:G});
+},_replaceClass:function(y,x){var Y,AB,AA,G=false,z;if(y&&x){AB=x.from;AA=x.to;if(!AA){G=false;}else{if(!AB){G=E.Dom._addClass(y,x.to);}else{if(AB!==AA){z=E.Dom.getAttribute(y,F)||J;Y=(B+z.replace(E.Dom._getClassRegex(AB),B+AA)).split(E.Dom._getClassRegex(AA));Y.splice(1,0,B+AA);E.Dom.setAttribute(y,F,A(Y.join(J)));G=true;}}}}else{}return G;},generateId:function(G,x){x=x||"yui-gen";var Y=function(y){if(y&&y.id){return y.id;}var z=x+YAHOO.env._id_counter++;if(y){if(y[e].getElementById(z)){return E.Dom.generateId(y,z+x);}y.id=z;}return z;};return E.Dom.batch(G,Y,E.Dom,true)||Y.apply(E.Dom,arguments);},isAncestor:function(Y,x){Y=E.Dom.get(Y);x=E.Dom.get(x);var G=false;if((Y&&x)&&(Y[l]&&x[l])){if(Y.contains&&Y!==x){G=Y.contains(x);}else{if(Y.compareDocumentPosition){G=!!(Y.compareDocumentPosition(x)&16);}}}else{}return G;},inDocument:function(G,Y){return E.Dom._inDoc(E.Dom.get(G),Y);},_inDoc:function(Y,x){var G=false;if(Y&&Y[C]){x=x||Y[e];G=E.Dom.isAncestor(x[v],Y);}else{}return G;},getElementsBy:function(Y,AF,AB,AD,y,AC,AE){AF=AF||"*";AB=(AB)?E.Dom.get(AB):null||K;if(!AB){return[];}var x=[],G=AB.getElementsByTagName(AF);for(var z=0,AA=G.length;z<AA;++z){if(Y(G[z])){if(AE){x=G[z];break;}else{x[x.length]=G[z];}}}if(AD){E.Dom.batch(x,AD,y,AC);}return x;},getElementBy:function(x,G,Y){return E.Dom.getElementsBy(x,G,Y,null,null,null,true);},batch:function(x,AB,AA,z){var y=[],Y=(z)?AA:window;x=(x&&(x[C]||x.item))?x:E.Dom.get(x);if(x&&AB){if(x[C]||x.length===undefined){return AB.call(Y,x,AA);}for(var G=0;G<x.length;++G){y[y.length]=AB.call(Y,x[G],AA);}}else{return false;}return y;},getDocumentHeight:function(){var Y=(K[t]!=M||I)?K.body.scrollHeight:W.scrollHeight,G=Math.max(Y,E.Dom.getViewportHeight());return G;},getDocumentWidth:function(){var Y=(K[t]!=M||I)?K.body.scrollWidth:W.scrollWidth,G=Math.max(Y,E.Dom.getViewportWidth());return G;},getViewportHeight:function(){var G=self.innerHeight,Y=K[t];if((Y||T)&&!D){G=(Y==M)?W.clientHeight:K.body.clientHeight;}return G;},getViewportWidth:function(){var G=self.innerWidth,Y=K[t];if(Y||T){G=(Y==M)?W.clientWidth:K.body.clientWidth;}return G;},getAncestorBy:function(G,Y){while((G=G[Z])){if(E.Dom._testElement(G,Y)){return G;}}return null;},getAncestorByClassName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return E.Dom.hasClass(y,G);};return E.Dom.getAncestorBy(Y,x);},getAncestorByTagName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return y[C]&&y[C].toUpperCase()==G.toUpperCase();};return E.Dom.getAncestorBy(Y,x);},getPreviousSiblingBy:function(G,Y){while(G){G=G.previousSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getPreviousSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getPreviousSiblingBy(G);},getNextSiblingBy:function(G,Y){while(G){G=G.nextSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getNextSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getNextSiblingBy(G);},getFirstChildBy:function(G,x){var Y=(E.Dom._testElement(G.firstChild,x))?G.firstChild:null;return Y||E.Dom.getNextSiblingBy(G.firstChild,x);},getFirstChild:function(G,Y){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getFirstChildBy(G);},getLastChildBy:function(G,x){if(!G){return null;}var Y=(E.Dom._testElement(G.lastChild,x))?G.lastChild:null;return Y||E.Dom.getPreviousSiblingBy(G.lastChild,x);},getLastChild:function(G){G=E.Dom.get(G);return E.Dom.getLastChildBy(G);},getChildrenBy:function(Y,y){var x=E.Dom.getFirstChildBy(Y,y),G=x?[x]:[];E.Dom.getNextSiblingBy(x,function(z){if(!y||y(z)){G[G.length]=z;}return false;});return G;},getChildren:function(G){G=E.Dom.get(G);if(!G){}return E.Dom.getChildrenBy(G);},getDocumentScrollLeft:function(G){G=G||K;return Math.max(G[v].scrollLeft,G.body.scrollLeft);},getDocumentScrollTop:function(G){G=G||K;return Math.max(G[v].scrollTop,G.body.scrollTop);},insertBefore:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}return G[Z].insertBefore(Y,G);},insertAfter:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}if(G.nextSibling){return G[Z].insertBefore(Y,G.nextSibling);}else{return G[Z].appendChild(Y);}},getClientRegion:function(){var x=E.Dom.getDocumentScrollTop(),Y=E.Dom.getDocumentScrollLeft(),y=E.Dom.getViewportWidth()+Y,G=E.Dom.getViewportHeight()+x;return new E.Region(x,y,G,Y);},setAttribute:function(Y,G,x){G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;Y.setAttribute(G,x);},getAttribute:function(Y,G){G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;return Y.getAttribute(G);},_toCamel:function(Y){var x=d;function G(y,z){return z.toUpperCase();}return x[Y]||(x[Y]=Y.indexOf("-")===-1?Y:Y.replace(/-([a-z])/gi,G));},_getClassRegex:function(Y){var G;if(Y!==undefined){if(Y.exec){G=Y;}else{G=h[Y];if(!G){Y=Y.replace(E.Dom._patterns.CLASS_RE_TOKENS,"\\$1");G=h[Y]=new RegExp(s+Y+k,U);}}}return G;},_patterns:{ROOT_TAG:/^body|html$/i,CLASS_RE_TOKENS:/([\.\(\)\^\$\*\+\?\|\[\]\{\}])/g},_testElement:function(G,Y){return G&&G[l]==1&&(!Y||Y(G));},_calcBorders:function(x,y){var Y=parseInt(E.Dom[w](x,R),10)||0,G=parseInt(E.Dom[w](x,q),10)||0;if(H){if(N.test(x[C])){Y=0;G=0;}}y[0]+=G;y[1]+=Y;return y;}};var S=E.Dom[w];if(m.opera){E.Dom[w]=function(Y,G){var x=S(Y,G);if(X.test(G)){x=E.Dom.Color.toRGB(x);}return x;};}if(m.webkit){E.Dom[w]=function(Y,G){var x=S(Y,G);if(x==="rgba(0, 0, 0, 0)"){x="transparent";}return x;};}})();YAHOO.util.Region=function(C,D,A,B){this.top=C;this.y=C;this[1]=C;this.right=D;this.bottom=A;this.left=B;this.x=B;this[0]=B;this.width=this.right-this.left;this.height=this.bottom-this.top;};YAHOO.util.Region.prototype.contains=function(A){return(A.left>=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E){var C=Math.max(this.top,E.top),D=Math.min(this.right,E.right),A=Math.min(this.bottom,E.bottom),B=Math.max(this.left,E.left);if(A>=C&&D>=B){return new YAHOO.util.Region(C,D,A,B);
+}else{return null;}};YAHOO.util.Region.prototype.union=function(E){var C=Math.min(this.top,E.top),D=Math.max(this.right,E.right),A=Math.max(this.bottom,E.bottom),B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+", height: "+this.height+", width: "+this.width+"}");};YAHOO.util.Region.getRegion=function(D){var F=YAHOO.util.Dom.getXY(D),C=F[1],E=F[0]+D.offsetWidth,A=F[1]+D.offsetHeight,B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B){if(YAHOO.lang.isArray(A)){B=A[1];A=A[0];}YAHOO.util.Point.superclass.constructor.call(this,B,A,B,A);};YAHOO.extend(YAHOO.util.Point,YAHOO.util.Region);(function(){var B=YAHOO.util,A="clientTop",F="clientLeft",J="parentNode",K="right",W="hasLayout",I="px",U="opacity",L="auto",D="borderLeftWidth",G="borderTopWidth",P="borderRightWidth",V="borderBottomWidth",S="visible",Q="transparent",N="height",E="width",H="style",T="currentStyle",R=/^width|height$/,O=/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,M={get:function(X,Z){var Y="",a=X[T][Z];if(Z===U){Y=B.Dom.getStyle(X,U);}else{if(!a||(a.indexOf&&a.indexOf(I)>-1)){Y=a;}else{if(B.Dom.IE_COMPUTED[Z]){Y=B.Dom.IE_COMPUTED[Z](X,Z);}else{if(O.test(a)){Y=B.Dom.IE.ComputedStyle.getPixel(X,Z);}else{Y=a;}}}}return Y;},getOffset:function(Z,e){var b=Z[T][e],X=e.charAt(0).toUpperCase()+e.substr(1),c="offset"+X,Y="pixel"+X,a="",d;if(b==L){d=Z[c];if(d===undefined){a=0;}a=d;if(R.test(e)){Z[H][e]=d;if(Z[c]>d){a=d-(Z[c]-d);}Z[H][e]=L;}}else{if(!Z[H][Y]&&!Z[H][e]){Z[H][e]=b;}a=Z[H][Y];}return a+I;},getBorderWidth:function(X,Z){var Y=null;if(!X[T][W]){X[H].zoom=1;}switch(Z){case G:Y=X[A];break;case V:Y=X.offsetHeight-X.clientHeight-X[A];break;case D:Y=X[F];break;case P:Y=X.offsetWidth-X.clientWidth-X[F];break;}return Y+I;},getPixel:function(Y,X){var a=null,b=Y[T][K],Z=Y[T][X];Y[H][K]=Z;a=Y[H].pixelRight;Y[H][K]=b;return a+I;},getMargin:function(Y,X){var Z;if(Y[T][X]==L){Z=0+I;}else{Z=B.Dom.IE.ComputedStyle.getPixel(Y,X);}return Z;},getVisibility:function(Y,X){var Z;while((Z=Y[T])&&Z[X]=="inherit"){Y=Y[J];}return(Z)?Z[X]:S;},getColor:function(Y,X){return B.Dom.Color.toRGB(Y[T][X])||Q;},getBorderColor:function(Y,X){var Z=Y[T],a=Z[X]||Z.color;return B.Dom.Color.toRGB(B.Dom.Color.toHex(a));}},C={};C.top=C.right=C.bottom=C.left=C[E]=C[N]=M.getOffset;C.color=M.getColor;C[G]=C[P]=C[V]=C[D]=M.getBorderWidth;C.marginTop=C.marginRight=C.marginBottom=C.marginLeft=M.getMargin;C.visibility=M.getVisibility;C.borderColor=C.borderTopColor=C.borderRightColor=C.borderBottomColor=C.borderLeftColor=M.getBorderColor;B.Dom.IE_COMPUTED=C;B.Dom.IE_ComputedStyle=M;})();(function(){var C="toString",A=parseInt,B=RegExp,D=YAHOO.util;D.Dom.Color={KEYWORDS:{black:"000",silver:"c0c0c0",gray:"808080",white:"fff",maroon:"800000",red:"f00",purple:"800080",fuchsia:"f0f",green:"008000",lime:"0f0",olive:"808000",yellow:"ff0",navy:"000080",blue:"00f",teal:"008080",aqua:"0ff"},re_RGB:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,re_hex:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,re_hex3:/([0-9A-F])/gi,toRGB:function(E){if(!D.Dom.Color.re_RGB.test(E)){E=D.Dom.Color.toHex(E);}if(D.Dom.Color.re_hex.exec(E)){E="rgb("+[A(B.$1,16),A(B.$2,16),A(B.$3,16)].join(", ")+")";}return E;},toHex:function(H){H=D.Dom.Color.KEYWORDS[H]||H;if(D.Dom.Color.re_RGB.exec(H)){var G=(B.$1.length===1)?"0"+B.$1:Number(B.$1),F=(B.$2.length===1)?"0"+B.$2:Number(B.$2),E=(B.$3.length===1)?"0"+B.$3:Number(B.$3);H=[G[C](16),F[C](16),E[C](16)].join("");}if(H.length<6){H=H.replace(D.Dom.Color.re_hex3,"$1$1");}if(H!=="transparent"&&H.indexOf("#")<0){H="#"+H;}return H.toLowerCase();}};}());YAHOO.register("dom",YAHOO.util.Dom,{version:"2.7.0",build:"1796"});YAHOO.util.CustomEvent=function(D,C,B,A){this.type=D;this.scope=C||window;this.silent=B;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var E="_YUICEOnSubscribe";if(D!==E){this.subscribeEvent=new YAHOO.util.CustomEvent(E,this,true);}this.lastError=null;};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(A,B,C){if(!A){throw new Error("Invalid callback for subscriber to '"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(A,B,C);}this.subscribers.push(new YAHOO.util.Subscriber(A,B,C));},unsubscribe:function(D,F){if(!D){return this.unsubscribeAll();}var E=false;for(var B=0,A=this.subscribers.length;B<A;++B){var C=this.subscribers[B];if(C&&C.contains(D,F)){this._delete(B);E=true;}}return E;},fire:function(){this.lastError=null;var K=[],E=this.subscribers.length;if(!E&&this.silent){return true;}var I=[].slice.call(arguments,0),G=true,D,J=false;if(!this.silent){}var C=this.subscribers.slice(),A=YAHOO.util.Event.throwErrors;for(D=0;D<E;++D){var M=C[D];if(!M){J=true;}else{if(!this.silent){}var L=M.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var B=null;if(I.length>0){B=I[0];}try{G=M.fn.call(L,B,M.obj);}catch(F){this.lastError=F;if(A){throw F;}}}else{try{G=M.fn.call(L,this.type,I,M.obj);}catch(H){this.lastError=H;if(A){throw H;}}}if(false===G){if(!this.silent){}break;}}}return(G!==false);},unsubscribeAll:function(){var A=this.subscribers.length,B;for(B=A-1;B>-1;B--){this._delete(B);}this.subscribers=[];return A;},_delete:function(A){var B=this.subscribers[A];if(B){delete B.fn;delete B.obj;}this.subscribers.splice(A,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"context: "+this.scope;}};YAHOO.util.Subscriber=function(A,B,C){this.fn=A;this.obj=YAHOO.lang.isUndefined(B)?null:B;this.overrideContext=C;};YAHOO.util.Subscriber.prototype.getScope=function(A){if(this.overrideContext){if(this.overrideContext===true){return this.obj;}else{return this.overrideContext;}}return A;};YAHOO.util.Subscriber.prototype.contains=function(A,B){if(B){return(this.fn==A&&this.obj==B);}else{return(this.fn==A);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", overrideContext: "+(this.overrideContext||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var H=false;var I=[];var J=[];var G=[];var E=[];var C=0;var F=[];var B=[];var A=0;var D={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9};var K=YAHOO.env.ua.ie?"focusin":"focus";var L=YAHOO.env.ua.ie?"focusout":"blur";return{POLL_RETRYS:2000,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:YAHOO.env.ua.ie,_interval:null,_dri:null,DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){var M=this;var N=function(){M._tryPreloadAttach();};this._interval=setInterval(N,this.POLL_INTERVAL);}},onAvailable:function(S,O,Q,R,P){var M=(YAHOO.lang.isString(S))?[S]:S;for(var N=0;N<M.length;N=N+1){F.push({id:M[N],fn:O,obj:Q,overrideContext:R,checkReady:P});}C=this.POLL_RETRYS;this.startInterval();},onContentReady:function(P,M,N,O){this.onAvailable(P,M,N,O,true);},onDOMReady:function(M,N,O){if(this.DOMReady){setTimeout(function(){var P=window;if(O){if(O===true){P=N;}else{P=O;}}M.call(P,"DOMReady",[],N);},0);}else{this.DOMReadyEvent.subscribe(M,N,O);}},_addListener:function(O,M,Y,S,W,b){if(!Y||!Y.call){return false;}if(this._isValidCollection(O)){var Z=true;for(var T=0,V=O.length;T<V;++T){Z=this.on(O[T],M,Y,S,W)&&Z;}return Z;}else{if(YAHOO.lang.isString(O)){var R=this.getEl(O);if(R){O=R;}else{this.onAvailable(O,function(){YAHOO.util.Event.on(O,M,Y,S,W);});return true;}}}if(!O){return false;}if("unload"==M&&S!==this){J[J.length]=[O,M,Y,S,W];return true;}var N=O;if(W){if(W===true){N=S;}else{N=W;}}var P=function(c){return Y.call(N,YAHOO.util.Event.getEvent(c,O),S);};var a=[O,M,Y,P,N,S,W];var U=I.length;I[U]=a;if(this.useLegacyEvent(O,M)){var Q=this.getLegacyIndex(O,M);if(Q==-1||O!=G[Q][0]){Q=G.length;B[O.id+M]=Q;G[Q]=[O,M,O["on"+M]];E[Q]=[];O["on"+M]=function(c){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(c),Q);};}E[Q].push(a);}else{try{this._simpleAdd(O,M,P,b);}catch(X){this.lastError=X;this.removeListener(O,M,Y);return false;}}return true;},addListener:function(N,Q,M,O,P){return this._addListener(N,Q,M,O,P,false);},addFocusListener:function(N,M,O,P){return this._addListener(N,K,M,O,P,true);},removeFocusListener:function(N,M){return this.removeListener(N,K,M);},addBlurListener:function(N,M,O,P){return this._addListener(N,L,M,O,P,true);},removeBlurListener:function(N,M){return this.removeListener(N,L,M);},fireLegacyEvent:function(R,P){var T=true,M,V,U,N,S;V=E[P].slice();for(var O=0,Q=V.length;O<Q;++O){U=V[O];if(U&&U[this.WFN]){N=U[this.ADJ_SCOPE];S=U[this.WFN].call(N,R);T=(T&&S);}}M=G[P];if(M&&M[2]){M[2](R);}return T;},getLegacyIndex:function(N,O){var M=this.generateId(N)+O;if(typeof B[M]=="undefined"){return -1;}else{return B[M];}},useLegacyEvent:function(M,N){return(this.webkit&&this.webkit<419&&("click"==N||"dblclick"==N));},removeListener:function(N,M,V){var Q,T,X;if(typeof N=="string"){N=this.getEl(N);}else{if(this._isValidCollection(N)){var W=true;for(Q=N.length-1;Q>-1;Q--){W=(this.removeListener(N[Q],M,V)&&W);}return W;}}if(!V||!V.call){return this.purgeElement(N,false,M);}if("unload"==M){for(Q=J.length-1;Q>-1;Q--){X=J[Q];if(X&&X[0]==N&&X[1]==M&&X[2]==V){J.splice(Q,1);return true;}}return false;}var R=null;var S=arguments[3];if("undefined"===typeof S){S=this._getCacheIndex(N,M,V);}if(S>=0){R=I[S];}if(!N||!R){return false;}if(this.useLegacyEvent(N,M)){var P=this.getLegacyIndex(N,M);var O=E[P];if(O){for(Q=0,T=O.length;Q<T;++Q){X=O[Q];if(X&&X[this.EL]==N&&X[this.TYPE]==M&&X[this.FN]==V){O.splice(Q,1);break;}}}}else{try{this._simpleRemove(N,M,R[this.WFN],false);}catch(U){this.lastError=U;return false;}}delete I[S][this.WFN];delete I[S][this.FN];
+I.splice(S,1);return true;},getTarget:function(O,N){var M=O.target||O.srcElement;return this.resolveTextNode(M);},resolveTextNode:function(N){try{if(N&&3==N.nodeType){return N.parentNode;}}catch(M){}return N;},getPageX:function(N){var M=N.pageX;if(!M&&0!==M){M=N.clientX||0;if(this.isIE){M+=this._getScrollLeft();}}return M;},getPageY:function(M){var N=M.pageY;if(!N&&0!==N){N=M.clientY||0;if(this.isIE){N+=this._getScrollTop();}}return N;},getXY:function(M){return[this.getPageX(M),this.getPageY(M)];},getRelatedTarget:function(N){var M=N.relatedTarget;if(!M){if(N.type=="mouseout"){M=N.toElement;}else{if(N.type=="mouseover"){M=N.fromElement;}}}return this.resolveTextNode(M);},getTime:function(O){if(!O.time){var N=new Date().getTime();try{O.time=N;}catch(M){this.lastError=M;return N;}}return O.time;},stopEvent:function(M){this.stopPropagation(M);this.preventDefault(M);},stopPropagation:function(M){if(M.stopPropagation){M.stopPropagation();}else{M.cancelBubble=true;}},preventDefault:function(M){if(M.preventDefault){M.preventDefault();}else{M.returnValue=false;}},getEvent:function(O,M){var N=O||window.event;if(!N){var P=this.getEvent.caller;while(P){N=P.arguments[0];if(N&&Event==N.constructor){break;}P=P.caller;}}return N;},getCharCode:function(N){var M=N.keyCode||N.charCode||0;if(YAHOO.env.ua.webkit&&(M in D)){M=D[M];}return M;},_getCacheIndex:function(Q,R,P){for(var O=0,N=I.length;O<N;O=O+1){var M=I[O];if(M&&M[this.FN]==P&&M[this.EL]==Q&&M[this.TYPE]==R){return O;}}return -1;},generateId:function(M){var N=M.id;if(!N){N="yuievtautoid-"+A;++A;M.id=N;}return N;},_isValidCollection:function(N){try{return(N&&typeof N!=="string"&&N.length&&!N.tagName&&!N.alert&&typeof N[0]!=="undefined");}catch(M){return false;}},elCache:{},getEl:function(M){return(typeof M==="string")?document.getElementById(M):M;},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",this),_load:function(N){if(!H){H=true;var M=YAHOO.util.Event;M._ready();M._tryPreloadAttach();}},_ready:function(N){var M=YAHOO.util.Event;if(!M.DOMReady){M.DOMReady=true;M.DOMReadyEvent.fire();M._simpleRemove(document,"DOMContentLoaded",M._ready);}},_tryPreloadAttach:function(){if(F.length===0){C=0;if(this._interval){clearInterval(this._interval);this._interval=null;}return;}if(this.locked){return;}if(this.isIE){if(!this.DOMReady){this.startInterval();return;}}this.locked=true;var S=!H;if(!S){S=(C>0&&F.length>0);}var R=[];var T=function(V,W){var U=V;if(W.overrideContext){if(W.overrideContext===true){U=W.obj;}else{U=W.overrideContext;}}W.fn.call(U,W.obj);};var N,M,Q,P,O=[];for(N=0,M=F.length;N<M;N=N+1){Q=F[N];if(Q){P=this.getEl(Q.id);if(P){if(Q.checkReady){if(H||P.nextSibling||!S){O.push(Q);F[N]=null;}}else{T(P,Q);F[N]=null;}}else{R.push(Q);}}}for(N=0,M=O.length;N<M;N=N+1){Q=O[N];T(this.getEl(Q.id),Q);}C--;if(S){for(N=F.length-1;N>-1;N--){Q=F[N];if(!Q||!Q.id){F.splice(N,1);}}this.startInterval();}else{if(this._interval){clearInterval(this._interval);this._interval=null;}}this.locked=false;},purgeElement:function(Q,R,T){var O=(YAHOO.lang.isString(Q))?this.getEl(Q):Q;var S=this.getListeners(O,T),P,M;if(S){for(P=S.length-1;P>-1;P--){var N=S[P];this.removeListener(O,N.type,N.fn);}}if(R&&O&&O.childNodes){for(P=0,M=O.childNodes.length;P<M;++P){this.purgeElement(O.childNodes[P],R,T);}}},getListeners:function(O,M){var R=[],N;if(!M){N=[I,J];}else{if(M==="unload"){N=[J];}else{N=[I];}}var T=(YAHOO.lang.isString(O))?this.getEl(O):O;for(var Q=0;Q<N.length;Q=Q+1){var V=N[Q];if(V){for(var S=0,U=V.length;S<U;++S){var P=V[S];if(P&&P[this.EL]===T&&(!M||M===P[this.TYPE])){R.push({type:P[this.TYPE],fn:P[this.FN],obj:P[this.OBJ],adjust:P[this.OVERRIDE],scope:P[this.ADJ_SCOPE],index:S});}}}}return(R.length)?R:null;},_unload:function(T){var N=YAHOO.util.Event,Q,P,O,S,R,U=J.slice(),M;for(Q=0,S=J.length;Q<S;++Q){O=U[Q];if(O){M=window;if(O[N.ADJ_SCOPE]){if(O[N.ADJ_SCOPE]===true){M=O[N.UNLOAD_OBJ];}else{M=O[N.ADJ_SCOPE];}}O[N.FN].call(M,N.getEvent(T,O[N.EL]),O[N.UNLOAD_OBJ]);U[Q]=null;}}O=null;M=null;J=null;if(I){for(P=I.length-1;P>-1;P--){O=I[P];if(O){N.removeListener(O[N.EL],O[N.TYPE],O[N.FN],P);}}O=null;}G=null;N._simpleRemove(window,"unload",N._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var M=document.documentElement,N=document.body;if(M&&(M.scrollTop||M.scrollLeft)){return[M.scrollTop,M.scrollLeft];}else{if(N){return[N.scrollTop,N.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(O,P,N,M){O.addEventListener(P,N,(M));};}else{if(window.attachEvent){return function(O,P,N,M){O.attachEvent("on"+P,N);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(O,P,N,M){O.removeEventListener(P,N,(M));};}else{if(window.detachEvent){return function(N,O,M){N.detachEvent("on"+O,M);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;EU.onFocus=EU.addFocusListener;EU.onBlur=EU.addBlurListener;
+/* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller */
+if(EU.isIE){YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var n=document.createElement("p");EU._dri=setInterval(function(){try{n.doScroll("left");clearInterval(EU._dri);EU._dri=null;EU._ready();n=null;}catch(ex){}},EU.POLL_INTERVAL);}else{if(EU.webkit&&EU.webkit<525){EU._dri=setInterval(function(){var rs=document.readyState;if("loaded"==rs||"complete"==rs){clearInterval(EU._dri);EU._dri=null;EU._ready();}},EU.POLL_INTERVAL);}else{EU._simpleAdd(document,"DOMContentLoaded",EU._ready);}}EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[A];if(D){D.subscribe(C,F,E);
+}else{this.__yui_subscribers=this.__yui_subscribers||{};var B=this.__yui_subscribers;if(!B[A]){B[A]=[];}B[A].push({fn:C,obj:F,overrideContext:E});}},unsubscribe:function(C,E,G){this.__yui_events=this.__yui_events||{};var A=this.__yui_events;if(C){var F=A[C];if(F){return F.unsubscribe(E,G);}}else{var B=true;for(var D in A){if(YAHOO.lang.hasOwnProperty(A,D)){B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A){return this.unsubscribe(A);},createEvent:function(G,D){this.__yui_events=this.__yui_events||{};var A=D||{};var I=this.__yui_events;if(I[G]){}else{var H=A.scope||this;var E=(A.silent);var B=new YAHOO.util.CustomEvent(G,H,E,YAHOO.util.CustomEvent.FLAT);I[G]=B;if(A.onSubscribeCallback){B.subscribeEvent.subscribe(A.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var F=this.__yui_subscribers[G];if(F){for(var C=0;C<F.length;++C){B.subscribe(F[C].fn,F[C].obj,F[C].overrideContext);}}}return I[G];},fireEvent:function(E,D,A,C){this.__yui_events=this.__yui_events||{};var G=this.__yui_events[E];if(!G){return null;}var B=[];for(var F=1;F<arguments.length;++F){B.push(arguments[F]);}return G.fire.apply(G,B);},hasEvent:function(A){if(this.__yui_events){if(this.__yui_events[A]){return true;}}return false;}};(function(){var A=YAHOO.util.Event,C=YAHOO.lang;YAHOO.util.KeyListener=function(D,I,E,F){if(!D){}else{if(!I){}else{if(!E){}}}if(!F){F=YAHOO.util.KeyListener.KEYDOWN;}var G=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(C.isString(D)){D=document.getElementById(D);}if(C.isFunction(E)){G.subscribe(E);}else{G.subscribe(E.fn,E.scope,E.correctScope);}function H(O,N){if(!I.shift){I.shift=false;}if(!I.alt){I.alt=false;}if(!I.ctrl){I.ctrl=false;}if(O.shiftKey==I.shift&&O.altKey==I.alt&&O.ctrlKey==I.ctrl){var J,M=I.keys,L;if(YAHOO.lang.isArray(M)){for(var K=0;K<M.length;K++){J=M[K];L=A.getCharCode(O);if(J==L){G.fire(L,O);break;}}}else{L=A.getCharCode(O);if(M==L){G.fire(L,O);}}}}this.enable=function(){if(!this.enabled){A.on(D,F,H);this.enabledEvent.fire(I);}this.enabled=true;};this.disable=function(){if(this.enabled){A.removeListener(D,F,H);this.disabledEvent.fire(I);}this.enabled=false;};this.toString=function(){return"KeyListener ["+I.keys+"] "+D.tagName+(D.id?"["+D.id+"]":"");};};var B=YAHOO.util.KeyListener;B.KEYDOWN="keydown";B.KEYUP="keyup";B.KEY={ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,TAB:9,UP:38};})();YAHOO.register("event",YAHOO.util.Event,{version:"2.7.0",build:"1796"});YAHOO.register("yahoo-dom-event", YAHOO, {version: "2.7.0", build: "1796"});
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+if(!YAHOO.util.DragDropMgr){YAHOO.util.DragDropMgr=function(){var A=YAHOO.util.Event,B=YAHOO.util.Dom;return{useShim:false,_shimActive:false,_shimState:false,_debugShim:false,_createShim:function(){var C=document.createElement("div");C.id="yui-ddm-shim";if(document.body.firstChild){document.body.insertBefore(C,document.body.firstChild);}else{document.body.appendChild(C);}C.style.display="none";C.style.backgroundColor="red";C.style.position="absolute";C.style.zIndex="99999";B.setStyle(C,"opacity","0");this._shim=C;A.on(C,"mouseup",this.handleMouseUp,this,true);A.on(C,"mousemove",this.handleMouseMove,this,true);A.on(window,"scroll",this._sizeShim,this,true);},_sizeShim:function(){if(this._shimActive){var C=this._shim;C.style.height=B.getDocumentHeight()+"px";C.style.width=B.getDocumentWidth()+"px";C.style.top="0";C.style.left="0";}},_activateShim:function(){if(this.useShim){if(!this._shim){this._createShim();}this._shimActive=true;var C=this._shim,D="0";if(this._debugShim){D=".5";}B.setStyle(C,"opacity",D);this._sizeShim();C.style.display="block";}},_deactivateShim:function(){this._shim.style.display="none";this._shimActive=false;},_shim:null,ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,interactionInfo:null,init:function(){this.initialized=true;},POINT:0,INTERSECT:1,STRICT_INTERSECT:2,mode:0,_execOnAll:function(E,D){for(var F in this.ids){for(var C in this.ids[F]){var G=this.ids[F][C];if(!this.isTypeOfDD(G)){continue;}G[E].apply(G,D);}}},_onLoad:function(){this.init();A.on(document,"mouseup",this.handleMouseUp,this,true);A.on(document,"mousemove",this.handleMouseMove,this,true);A.on(window,"unload",this._onUnload,this,true);A.on(window,"resize",this._onResize,this,true);},_onResize:function(C){this._execOnAll("resetConstraints",[]);},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:1000,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,fromTimeout:false,regDragDrop:function(D,C){if(!this.initialized){this.init();}if(!this.ids[C]){this.ids[C]={};}this.ids[C][D.id]=D;},removeDDFromGroup:function(E,C){if(!this.ids[C]){this.ids[C]={};}var D=this.ids[C];if(D&&D[E.id]){delete D[E.id];}},_remove:function(E){for(var D in E.groups){if(D){var C=this.ids[D];if(C&&C[E.id]){delete C[E.id];}}}delete this.handleIds[E.id];},regHandle:function(D,C){if(!this.handleIds[D]){this.handleIds[D]={};}this.handleIds[D][C]=C;},isDragDrop:function(C){return(this.getDDById(C))?true:false;},getRelated:function(H,D){var G=[];for(var F in H.groups){for(var E in this.ids[F]){var C=this.ids[F][E];if(!this.isTypeOfDD(C)){continue;}if(!D||C.isTarget){G[G.length]=C;}}}return G;},isLegalTarget:function(G,F){var D=this.getRelated(G,true);for(var E=0,C=D.length;E<C;++E){if(D[E].id==F.id){return true;}}return false;},isTypeOfDD:function(C){return(C&&C.__ygDragDrop);},isHandle:function(D,C){return(this.handleIds[D]&&this.handleIds[D][C]);},getDDById:function(D){for(var C in this.ids){if(this.ids[C][D]){return this.ids[C][D];}}return null;},handleMouseDown:function(E,D){this.currentTarget=YAHOO.util.Event.getTarget(E);this.dragCurrent=D;var C=D.getEl();this.startX=YAHOO.util.Event.getPageX(E);this.startY=YAHOO.util.Event.getPageY(E);this.deltaX=this.startX-C.offsetLeft;this.deltaY=this.startY-C.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var F=YAHOO.util.DDM;F.startDrag(F.startX,F.startY);F.fromTimeout=true;},this.clickTimeThresh);},startDrag:function(C,E){if(this.dragCurrent&&this.dragCurrent.useShim){this._shimState=this.useShim;this.useShim=true;}this._activateShim();clearTimeout(this.clickTimeout);var D=this.dragCurrent;if(D&&D.events.b4StartDrag){D.b4StartDrag(C,E);D.fireEvent("b4StartDragEvent",{x:C,y:E});}if(D&&D.events.startDrag){D.startDrag(C,E);D.fireEvent("startDragEvent",{x:C,y:E});}this.dragThreshMet=true;},handleMouseUp:function(C){if(this.dragCurrent){clearTimeout(this.clickTimeout);if(this.dragThreshMet){if(this.fromTimeout){this.fromTimeout=false;this.handleMouseMove(C);}this.fromTimeout=false;this.fireEvents(C,true);}else{}this.stopDrag(C);this.stopEvent(C);}},stopEvent:function(C){if(this.stopPropagation){YAHOO.util.Event.stopPropagation(C);}if(this.preventDefault){YAHOO.util.Event.preventDefault(C);}},stopDrag:function(E,D){var C=this.dragCurrent;if(C&&!D){if(this.dragThreshMet){if(C.events.b4EndDrag){C.b4EndDrag(E);C.fireEvent("b4EndDragEvent",{e:E});}if(C.events.endDrag){C.endDrag(E);C.fireEvent("endDragEvent",{e:E});}}if(C.events.mouseUp){C.onMouseUp(E);C.fireEvent("mouseUpEvent",{e:E});}}if(this._shimActive){this._deactivateShim();if(this.dragCurrent&&this.dragCurrent.useShim){this.useShim=this._shimState;this._shimState=false;}}this.dragCurrent=null;this.dragOvers={};},handleMouseMove:function(F){var C=this.dragCurrent;if(C){if(YAHOO.util.Event.isIE&&!F.button){this.stopEvent(F);return this.handleMouseUp(F);}else{if(F.clientX<0||F.clientY<0){}}if(!this.dragThreshMet){var E=Math.abs(this.startX-YAHOO.util.Event.getPageX(F));var D=Math.abs(this.startY-YAHOO.util.Event.getPageY(F));if(E>this.clickPixelThresh||D>this.clickPixelThresh){this.startDrag(this.startX,this.startY);}}if(this.dragThreshMet){if(C&&C.events.b4Drag){C.b4Drag(F);C.fireEvent("b4DragEvent",{e:F});}if(C&&C.events.drag){C.onDrag(F);C.fireEvent("dragEvent",{e:F});}if(C){this.fireEvents(F,false);}}this.stopEvent(F);}},fireEvents:function(V,L){var a=this.dragCurrent;if(!a||a.isLocked()||a.dragOnly){return;}var N=YAHOO.util.Event.getPageX(V),M=YAHOO.util.Event.getPageY(V),P=new YAHOO.util.Point(N,M),K=a.getTargetCoord(P.x,P.y),F=a.getDragEl(),E=["out","over","drop","enter"],U=new YAHOO.util.Region(K.y,K.x+F.offsetWidth,K.y+F.offsetHeight,K.x),I=[],D={},Q=[],c={outEvts:[],overEvts:[],dropEvts:[],enterEvts:[]};for(var S in this.dragOvers){var d=this.dragOvers[S];if(!this.isTypeOfDD(d)){continue;
+}if(!this.isOverTarget(P,d,this.mode,U)){c.outEvts.push(d);}I[S]=true;delete this.dragOvers[S];}for(var R in a.groups){if("string"!=typeof R){continue;}for(S in this.ids[R]){var G=this.ids[R][S];if(!this.isTypeOfDD(G)){continue;}if(G.isTarget&&!G.isLocked()&&G!=a){if(this.isOverTarget(P,G,this.mode,U)){D[R]=true;if(L){c.dropEvts.push(G);}else{if(!I[G.id]){c.enterEvts.push(G);}else{c.overEvts.push(G);}this.dragOvers[G.id]=G;}}}}}this.interactionInfo={out:c.outEvts,enter:c.enterEvts,over:c.overEvts,drop:c.dropEvts,point:P,draggedRegion:U,sourceRegion:this.locationCache[a.id],validDrop:L};for(var C in D){Q.push(C);}if(L&&!c.dropEvts.length){this.interactionInfo.validDrop=false;if(a.events.invalidDrop){a.onInvalidDrop(V);a.fireEvent("invalidDropEvent",{e:V});}}for(S=0;S<E.length;S++){var Y=null;if(c[E[S]+"Evts"]){Y=c[E[S]+"Evts"];}if(Y&&Y.length){var H=E[S].charAt(0).toUpperCase()+E[S].substr(1),X="onDrag"+H,J="b4Drag"+H,O="drag"+H+"Event",W="drag"+H;if(this.mode){if(a.events[J]){a[J](V,Y,Q);a.fireEvent(J+"Event",{event:V,info:Y,group:Q});}if(a.events[W]){a[X](V,Y,Q);a.fireEvent(O,{event:V,info:Y,group:Q});}}else{for(var Z=0,T=Y.length;Z<T;++Z){if(a.events[J]){a[J](V,Y[Z].id,Q[0]);a.fireEvent(J+"Event",{event:V,info:Y[Z].id,group:Q[0]});}if(a.events[W]){a[X](V,Y[Z].id,Q[0]);a.fireEvent(O,{event:V,info:Y[Z].id,group:Q[0]});}}}}}},getBestMatch:function(E){var G=null;var D=E.length;if(D==1){G=E[0];}else{for(var F=0;F<D;++F){var C=E[F];if(this.mode==this.INTERSECT&&C.cursorIsOver){G=C;break;}else{if(!G||!G.overlap||(C.overlap&&G.overlap.getArea()<C.overlap.getArea())){G=C;}}}}return G;},refreshCache:function(D){var F=D||this.ids;for(var C in F){if("string"!=typeof C){continue;}for(var E in this.ids[C]){var G=this.ids[C][E];if(this.isTypeOfDD(G)){var H=this.getLocation(G);if(H){this.locationCache[G.id]=H;}else{delete this.locationCache[G.id];}}}}},verifyEl:function(D){try{if(D){var C=D.offsetParent;if(C){return true;}}}catch(E){}return false;},getLocation:function(H){if(!this.isTypeOfDD(H)){return null;}var F=H.getEl(),K,E,D,M,L,N,C,J,G;try{K=YAHOO.util.Dom.getXY(F);}catch(I){}if(!K){return null;}E=K[0];D=E+F.offsetWidth;M=K[1];L=M+F.offsetHeight;N=M-H.padding[0];C=D+H.padding[1];J=L+H.padding[2];G=E-H.padding[3];return new YAHOO.util.Region(N,C,J,G);},isOverTarget:function(K,C,E,F){var G=this.locationCache[C.id];if(!G||!this.useCache){G=this.getLocation(C);this.locationCache[C.id]=G;}if(!G){return false;}C.cursorIsOver=G.contains(K);var J=this.dragCurrent;if(!J||(!E&&!J.constrainX&&!J.constrainY)){return C.cursorIsOver;}C.overlap=null;if(!F){var H=J.getTargetCoord(K.x,K.y);var D=J.getDragEl();F=new YAHOO.util.Region(H.y,H.x+D.offsetWidth,H.y+D.offsetHeight,H.x);}var I=F.intersect(G);if(I){C.overlap=I;return(E)?true:C.cursorIsOver;}else{return false;}},_onUnload:function(D,C){this.unregAll();},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null;}this._execOnAll("unreg",[]);this.ids={};},elementCache:{},getElWrapper:function(D){var C=this.elementCache[D];if(!C||!C.el){C=this.elementCache[D]=new this.ElementWrapper(YAHOO.util.Dom.get(D));}return C;},getElement:function(C){return YAHOO.util.Dom.get(C);},getCss:function(D){var C=YAHOO.util.Dom.get(D);return(C)?C.style:null;},ElementWrapper:function(C){this.el=C||null;this.id=this.el&&C.id;this.css=this.el&&C.style;},getPosX:function(C){return YAHOO.util.Dom.getX(C);},getPosY:function(C){return YAHOO.util.Dom.getY(C);},swapNode:function(E,C){if(E.swapNode){E.swapNode(C);}else{var F=C.parentNode;var D=C.nextSibling;if(D==E){F.insertBefore(E,C);}else{if(C==E.nextSibling){F.insertBefore(C,E);}else{E.parentNode.replaceChild(C,E);F.insertBefore(E,D);}}}},getScroll:function(){var E,C,F=document.documentElement,D=document.body;if(F&&(F.scrollTop||F.scrollLeft)){E=F.scrollTop;C=F.scrollLeft;}else{if(D){E=D.scrollTop;C=D.scrollLeft;}else{}}return{top:E,left:C};},getStyle:function(D,C){return YAHOO.util.Dom.getStyle(D,C);},getScrollTop:function(){return this.getScroll().top;},getScrollLeft:function(){return this.getScroll().left;},moveToEl:function(C,E){var D=YAHOO.util.Dom.getXY(E);YAHOO.util.Dom.setXY(C,D);},getClientHeight:function(){return YAHOO.util.Dom.getViewportHeight();},getClientWidth:function(){return YAHOO.util.Dom.getViewportWidth();},numericSort:function(D,C){return(D-C);},_timeoutCount:0,_addListeners:function(){var C=YAHOO.util.DDM;if(YAHOO.util.Event&&document){C._onLoad();}else{if(C._timeoutCount>2000){}else{setTimeout(C._addListeners,10);if(document&&document.body){C._timeoutCount+=1;}}}},handleWasClicked:function(C,E){if(this.isHandle(E,C.id)){return true;}else{var D=C.parentNode;while(D){if(this.isHandle(E,D.id)){return true;}else{D=D.parentNode;}}}return false;}};}();YAHOO.util.DDM=YAHOO.util.DragDropMgr;YAHOO.util.DDM._addListeners();}(function(){var A=YAHOO.util.Event;var B=YAHOO.util.Dom;YAHOO.util.DragDrop=function(E,C,D){if(E){this.init(E,C,D);}};YAHOO.util.DragDrop.prototype={events:null,on:function(){this.subscribe.apply(this,arguments);},id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isTarget:true,padding:null,dragOnly:false,useShim:false,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,deltaX:0,deltaY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,cursorIsOver:false,overlap:null,b4StartDrag:function(C,D){},startDrag:function(C,D){},b4Drag:function(C){},onDrag:function(C){},onDragEnter:function(C,D){},b4DragOver:function(C){},onDragOver:function(C,D){},b4DragOut:function(C){},onDragOut:function(C,D){},b4DragDrop:function(C){},onDragDrop:function(C,D){},onInvalidDrop:function(C){},b4EndDrag:function(C){},endDrag:function(C){},b4MouseDown:function(C){},onMouseDown:function(C){},onMouseUp:function(C){},onAvailable:function(){},getEl:function(){if(!this._domRef){this._domRef=B.get(this.id);
+}return this._domRef;},getDragEl:function(){return B.get(this.dragElId);},init:function(F,C,D){this.initTarget(F,C,D);A.on(this._domRef||this.id,"mousedown",this.handleMouseDown,this,true);for(var E in this.events){this.createEvent(E+"Event");}},initTarget:function(E,C,D){this.config=D||{};this.events={};this.DDM=YAHOO.util.DDM;this.groups={};if(typeof E!=="string"){this._domRef=E;E=B.generateId(E);}this.id=E;this.addToGroup((C)?C:"default");this.handleElId=E;A.onAvailable(E,this.handleOnAvailable,this,true);this.setDragElId(E);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();},applyConfig:function(){this.events={mouseDown:true,b4MouseDown:true,mouseUp:true,b4StartDrag:true,startDrag:true,b4EndDrag:true,endDrag:true,drag:true,b4Drag:true,invalidDrop:true,b4DragOut:true,dragOut:true,dragEnter:true,b4DragOver:true,dragOver:true,b4DragDrop:true,dragDrop:true};if(this.config.events){for(var C in this.config.events){if(this.config.events[C]===false){this.events[C]=false;}}}this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false);this.dragOnly=((this.config.dragOnly===true)?true:false);this.useShim=((this.config.useShim===true)?true:false);},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable();},setPadding:function(E,C,F,D){if(!C&&0!==C){this.padding=[E,E,E,E];}else{if(!F&&0!==F){this.padding=[E,C,E,C];}else{this.padding=[E,C,F,D];}}},setInitPosition:function(F,E){var G=this.getEl();if(!this.DDM.verifyEl(G)){if(G&&G.style&&(G.style.display=="none")){}else{}return;}var D=F||0;var C=E||0;var H=B.getXY(G);this.initPageX=H[0]-D;this.initPageY=H[1]-C;this.lastPageX=H[0];this.lastPageY=H[1];this.setStartPosition(H);},setStartPosition:function(D){var C=D||B.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=C[0];this.startPageY=C[1];},addToGroup:function(C){this.groups[C]=true;this.DDM.regDragDrop(this,C);},removeFromGroup:function(C){if(this.groups[C]){delete this.groups[C];}this.DDM.removeDDFromGroup(this,C);},setDragElId:function(C){this.dragElId=C;},setHandleElId:function(C){if(typeof C!=="string"){C=B.generateId(C);}this.handleElId=C;this.DDM.regHandle(this.id,C);},setOuterHandleElId:function(C){if(typeof C!=="string"){C=B.generateId(C);}A.on(C,"mousedown",this.handleMouseDown,this,true);this.setHandleElId(C);this.hasOuterHandles=true;},unreg:function(){A.removeListener(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this);},isLocked:function(){return(this.DDM.isLocked()||this.locked);},handleMouseDown:function(J,I){var D=J.which||J.button;if(this.primaryButtonOnly&&D>1){return;}if(this.isLocked()){return;}var C=this.b4MouseDown(J),F=true;if(this.events.b4MouseDown){F=this.fireEvent("b4MouseDownEvent",J);}var E=this.onMouseDown(J),H=true;if(this.events.mouseDown){H=this.fireEvent("mouseDownEvent",J);}if((C===false)||(E===false)||(F===false)||(H===false)){return;}this.DDM.refreshCache(this.groups);var G=new YAHOO.util.Point(A.getPageX(J),A.getPageY(J));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(G,this)){}else{if(this.clickValidator(J)){this.setStartPosition();this.DDM.handleMouseDown(J,this);this.DDM.stopEvent(J);}else{}}},clickValidator:function(D){var C=YAHOO.util.Event.getTarget(D);return(this.isValidHandleChild(C)&&(this.id==this.handleElId||this.DDM.handleWasClicked(C,this.id)));},getTargetCoord:function(E,D){var C=E-this.deltaX;var F=D-this.deltaY;if(this.constrainX){if(C<this.minX){C=this.minX;}if(C>this.maxX){C=this.maxX;}}if(this.constrainY){if(F<this.minY){F=this.minY;}if(F>this.maxY){F=this.maxY;}}C=this.getTick(C,this.xTicks);F=this.getTick(F,this.yTicks);return{x:C,y:F};},addInvalidHandleType:function(C){var D=C.toUpperCase();this.invalidHandleTypes[D]=D;},addInvalidHandleId:function(C){if(typeof C!=="string"){C=B.generateId(C);}this.invalidHandleIds[C]=C;},addInvalidHandleClass:function(C){this.invalidHandleClasses.push(C);},removeInvalidHandleType:function(C){var D=C.toUpperCase();delete this.invalidHandleTypes[D];},removeInvalidHandleId:function(C){if(typeof C!=="string"){C=B.generateId(C);}delete this.invalidHandleIds[C];},removeInvalidHandleClass:function(D){for(var E=0,C=this.invalidHandleClasses.length;E<C;++E){if(this.invalidHandleClasses[E]==D){delete this.invalidHandleClasses[E];}}},isValidHandleChild:function(F){var E=true;var H;try{H=F.nodeName.toUpperCase();}catch(G){H=F.nodeName;}E=E&&!this.invalidHandleTypes[H];E=E&&!this.invalidHandleIds[F.id];for(var D=0,C=this.invalidHandleClasses.length;E&&D<C;++D){E=!B.hasClass(F,this.invalidHandleClasses[D]);}return E;},setXTicks:function(F,C){this.xTicks=[];this.xTickSize=C;var E={};for(var D=this.initPageX;D>=this.minX;D=D-C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true;}}for(D=this.initPageX;D<=this.maxX;D=D+C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true;}}this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(F,C){this.yTicks=[];this.yTickSize=C;var E={};for(var D=this.initPageY;D>=this.minY;D=D-C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true;}}for(D=this.initPageY;D<=this.maxY;D=D+C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true;}}this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(E,D,C){this.leftConstraint=parseInt(E,10);this.rightConstraint=parseInt(D,10);this.minX=this.initPageX-this.leftConstraint;this.maxX=this.initPageX+this.rightConstraint;if(C){this.setXTicks(this.initPageX,C);}this.constrainX=true;},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks();},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0;},setYConstraint:function(C,E,D){this.topConstraint=parseInt(C,10);this.bottomConstraint=parseInt(E,10);this.minY=this.initPageY-this.topConstraint;this.maxY=this.initPageY+this.bottomConstraint;if(D){this.setYTicks(this.initPageY,D);
+}this.constrainY=true;},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var D=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var C=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(D,C);}else{this.setInitPosition();}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize);}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize);}},getTick:function(I,F){if(!F){return I;}else{if(F[0]>=I){return F[0];}else{for(var D=0,C=F.length;D<C;++D){var E=D+1;if(F[E]&&F[E]>=I){var H=I-F[D];var G=F[E]-I;return(G>H)?F[D]:F[E];}}return F[F.length-1];}}},toString:function(){return("DragDrop "+this.id);}};YAHOO.augment(YAHOO.util.DragDrop,YAHOO.util.EventProvider);})();YAHOO.util.DD=function(C,A,B){if(C){this.init(C,A,B);}};YAHOO.extend(YAHOO.util.DD,YAHOO.util.DragDrop,{scroll:true,autoOffset:function(C,B){var A=C-this.startPageX;var D=B-this.startPageY;this.setDelta(A,D);},setDelta:function(B,A){this.deltaX=B;this.deltaY=A;},setDragElPos:function(C,B){var A=this.getDragEl();this.alignElWithMouse(A,C,B);},alignElWithMouse:function(C,G,F){var E=this.getTargetCoord(G,F);if(!this.deltaSetXY){var H=[E.x,E.y];YAHOO.util.Dom.setXY(C,H);var D=parseInt(YAHOO.util.Dom.getStyle(C,"left"),10);var B=parseInt(YAHOO.util.Dom.getStyle(C,"top"),10);this.deltaSetXY=[D-E.x,B-E.y];}else{YAHOO.util.Dom.setStyle(C,"left",(E.x+this.deltaSetXY[0])+"px");YAHOO.util.Dom.setStyle(C,"top",(E.y+this.deltaSetXY[1])+"px");}this.cachePosition(E.x,E.y);var A=this;setTimeout(function(){A.autoScroll.call(A,E.x,E.y,C.offsetHeight,C.offsetWidth);},0);},cachePosition:function(B,A){if(B){this.lastPageX=B;this.lastPageY=A;}else{var C=YAHOO.util.Dom.getXY(this.getEl());this.lastPageX=C[0];this.lastPageY=C[1];}},autoScroll:function(J,I,E,K){if(this.scroll){var L=this.DDM.getClientHeight();var B=this.DDM.getClientWidth();var N=this.DDM.getScrollTop();var D=this.DDM.getScrollLeft();var H=E+I;var M=K+J;var G=(L+N-I-this.deltaY);var F=(B+D-J-this.deltaX);var C=40;var A=(document.all)?80:30;if(H>L&&G<C){window.scrollTo(D,N+A);}if(I<N&&N>0&&I-N<C){window.scrollTo(D,N-A);}if(M>B&&F<C){window.scrollTo(D+A,N);}if(J<D&&D>0&&J-D<C){window.scrollTo(D-A,N);}}},applyConfig:function(){YAHOO.util.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false);},b4MouseDown:function(A){this.setStartPosition();this.autoOffset(YAHOO.util.Event.getPageX(A),YAHOO.util.Event.getPageY(A));},b4Drag:function(A){this.setDragElPos(YAHOO.util.Event.getPageX(A),YAHOO.util.Event.getPageY(A));},toString:function(){return("DD "+this.id);}});YAHOO.util.DDProxy=function(C,A,B){if(C){this.init(C,A,B);this.initFrame();}};YAHOO.util.DDProxy.dragElId="ygddfdiv";YAHOO.extend(YAHOO.util.DDProxy,YAHOO.util.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var B=this,A=document.body;if(!A||!A.firstChild){setTimeout(function(){B.createFrame();},50);return;}var F=this.getDragEl(),E=YAHOO.util.Dom;if(!F){F=document.createElement("div");F.id=this.dragElId;var D=F.style;D.position="absolute";D.visibility="hidden";D.cursor="move";D.border="2px solid #aaa";D.zIndex=999;D.height="25px";D.width="25px";var C=document.createElement("div");E.setStyle(C,"height","100%");E.setStyle(C,"width","100%");E.setStyle(C,"background-color","#ccc");E.setStyle(C,"opacity","0");F.appendChild(C);A.insertBefore(F,A.firstChild);}},initFrame:function(){this.createFrame();},applyConfig:function(){YAHOO.util.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||YAHOO.util.DDProxy.dragElId);},showFrame:function(E,D){var C=this.getEl();var A=this.getDragEl();var B=A.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(B.width,10)/2),Math.round(parseInt(B.height,10)/2));}this.setDragElPos(E,D);YAHOO.util.Dom.setStyle(A,"visibility","visible");},_resizeProxy:function(){if(this.resizeFrame){var H=YAHOO.util.Dom;var B=this.getEl();var C=this.getDragEl();var G=parseInt(H.getStyle(C,"borderTopWidth"),10);var I=parseInt(H.getStyle(C,"borderRightWidth"),10);var F=parseInt(H.getStyle(C,"borderBottomWidth"),10);var D=parseInt(H.getStyle(C,"borderLeftWidth"),10);if(isNaN(G)){G=0;}if(isNaN(I)){I=0;}if(isNaN(F)){F=0;}if(isNaN(D)){D=0;}var E=Math.max(0,B.offsetWidth-I-D);var A=Math.max(0,B.offsetHeight-G-F);H.setStyle(C,"width",E+"px");H.setStyle(C,"height",A+"px");}},b4MouseDown:function(B){this.setStartPosition();var A=YAHOO.util.Event.getPageX(B);var C=YAHOO.util.Event.getPageY(B);this.autoOffset(A,C);},b4StartDrag:function(A,B){this.showFrame(A,B);},b4EndDrag:function(A){YAHOO.util.Dom.setStyle(this.getDragEl(),"visibility","hidden");},endDrag:function(D){var C=YAHOO.util.Dom;var B=this.getEl();var A=this.getDragEl();C.setStyle(A,"visibility","");C.setStyle(B,"visibility","hidden");YAHOO.util.DDM.moveToEl(B,A);C.setStyle(A,"visibility","hidden");C.setStyle(B,"visibility","");},toString:function(){return("DDProxy "+this.id);}});YAHOO.util.DDTarget=function(C,A,B){if(C){this.initTarget(C,A,B);}};YAHOO.extend(YAHOO.util.DDTarget,YAHOO.util.DragDrop,{toString:function(){return("DDTarget "+this.id);}});YAHOO.register("dragdrop",YAHOO.util.DragDropMgr,{version:"2.7.0",build:"1796"});/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+(function(){var B=YAHOO.util.Dom.getXY,A=YAHOO.util.Event,D=Array.prototype.slice;function C(G,E,F,H){C.ANIM_AVAIL=(!YAHOO.lang.isUndefined(YAHOO.util.Anim));if(G){this.init(G,E,true);this.initSlider(H);this.initThumb(F);}}YAHOO.lang.augmentObject(C,{getHorizSlider:function(F,G,I,H,E){return new C(F,F,new YAHOO.widget.SliderThumb(G,F,I,H,0,0,E),"horiz");},getVertSlider:function(G,H,E,I,F){return new C(G,G,new YAHOO.widget.SliderThumb(H,G,0,0,E,I,F),"vert");},getSliderRegion:function(G,H,J,I,E,K,F){return new C(G,G,new YAHOO.widget.SliderThumb(H,G,J,I,E,K,F),"region");},SOURCE_UI_EVENT:1,SOURCE_SET_VALUE:2,SOURCE_KEY_EVENT:3,ANIM_AVAIL:false},true);YAHOO.extend(C,YAHOO.util.DragDrop,{_mouseDown:false,dragOnly:true,initSlider:function(E){this.type=E;this.createEvent("change",this);this.createEvent("slideStart",this);this.createEvent("slideEnd",this);this.isTarget=false;this.animate=C.ANIM_AVAIL;this.backgroundEnabled=true;this.tickPause=40;this.enableKeys=true;this.keyIncrement=20;this.moveComplete=true;this.animationDuration=0.2;this.SOURCE_UI_EVENT=1;this.SOURCE_SET_VALUE=2;this.valueChangeSource=0;this._silent=false;this.lastOffset=[0,0];},initThumb:function(F){var E=this;this.thumb=F;F.cacheBetweenDrags=true;if(F._isHoriz&&F.xTicks&&F.xTicks.length){this.tickPause=Math.round(360/F.xTicks.length);}else{if(F.yTicks&&F.yTicks.length){this.tickPause=Math.round(360/F.yTicks.length);}}F.onAvailable=function(){return E.setStartSliderState();};F.onMouseDown=function(){E._mouseDown=true;return E.focus();};F.startDrag=function(){E._slideStart();};F.onDrag=function(){E.fireEvents(true);};F.onMouseUp=function(){E.thumbMouseUp();};},onAvailable:function(){this._bindKeyEvents();},_bindKeyEvents:function(){A.on(this.id,"keydown",this.handleKeyDown,this,true);A.on(this.id,"keypress",this.handleKeyPress,this,true);},handleKeyPress:function(F){if(this.enableKeys){var E=A.getCharCode(F);switch(E){case 37:case 38:case 39:case 40:case 36:case 35:A.preventDefault(F);break;default:}}},handleKeyDown:function(J){if(this.enableKeys){var G=A.getCharCode(J),F=this.thumb,H=this.getXValue(),E=this.getYValue(),I=true;switch(G){case 37:H-=this.keyIncrement;break;case 38:E-=this.keyIncrement;break;case 39:H+=this.keyIncrement;break;case 40:E+=this.keyIncrement;break;case 36:H=F.leftConstraint;E=F.topConstraint;break;case 35:H=F.rightConstraint;E=F.bottomConstraint;break;default:I=false;}if(I){if(F._isRegion){this._setRegionValue(C.SOURCE_KEY_EVENT,H,E,true);}else{this._setValue(C.SOURCE_KEY_EVENT,(F._isHoriz?H:E),true);}A.stopEvent(J);}}},setStartSliderState:function(){this.setThumbCenterPoint();this.baselinePos=B(this.getEl());this.thumb.startOffset=this.thumb.getOffsetFromParent(this.baselinePos);if(this.thumb._isRegion){if(this.deferredSetRegionValue){this._setRegionValue.apply(this,this.deferredSetRegionValue);this.deferredSetRegionValue=null;}else{this.setRegionValue(0,0,true,true,true);}}else{if(this.deferredSetValue){this._setValue.apply(this,this.deferredSetValue);this.deferredSetValue=null;}else{this.setValue(0,true,true,true);}}},setThumbCenterPoint:function(){var E=this.thumb.getEl();if(E){this.thumbCenterPoint={x:parseInt(E.offsetWidth/2,10),y:parseInt(E.offsetHeight/2,10)};}},lock:function(){this.thumb.lock();this.locked=true;},unlock:function(){this.thumb.unlock();this.locked=false;},thumbMouseUp:function(){this._mouseDown=false;if(!this.isLocked()&&!this.moveComplete){this.endMove();}},onMouseUp:function(){this._mouseDown=false;if(this.backgroundEnabled&&!this.isLocked()&&!this.moveComplete){this.endMove();}},getThumb:function(){return this.thumb;},focus:function(){this.valueChangeSource=C.SOURCE_UI_EVENT;var E=this.getEl();if(E.focus){try{E.focus();}catch(F){}}this.verifyOffset();return !this.isLocked();},onChange:function(E,F){},onSlideStart:function(){},onSlideEnd:function(){},getValue:function(){return this.thumb.getValue();},getXValue:function(){return this.thumb.getXValue();},getYValue:function(){return this.thumb.getYValue();},setValue:function(){var E=D.call(arguments);E.unshift(C.SOURCE_SET_VALUE);return this._setValue.apply(this,E);},_setValue:function(I,L,G,H,E){var F=this.thumb,K,J;if(!F.available){this.deferredSetValue=arguments;return false;}if(this.isLocked()&&!H){return false;}if(isNaN(L)){return false;}if(F._isRegion){return false;}this._silent=E;this.valueChangeSource=I||C.SOURCE_SET_VALUE;F.lastOffset=[L,L];this.verifyOffset(true);this._slideStart();if(F._isHoriz){K=F.initPageX+L+this.thumbCenterPoint.x;this.moveThumb(K,F.initPageY,G);}else{J=F.initPageY+L+this.thumbCenterPoint.y;this.moveThumb(F.initPageX,J,G);}return true;},setRegionValue:function(){var E=D.call(arguments);E.unshift(C.SOURCE_SET_VALUE);return this._setRegionValue.apply(this,E);},_setRegionValue:function(F,J,H,I,G,K){var L=this.thumb,E,M;if(!L.available){this.deferredSetRegionValue=arguments;return false;}if(this.isLocked()&&!G){return false;}if(isNaN(J)){return false;}if(!L._isRegion){return false;}this._silent=K;this.valueChangeSource=F||C.SOURCE_SET_VALUE;L.lastOffset=[J,H];this.verifyOffset(true);this._slideStart();E=L.initPageX+J+this.thumbCenterPoint.x;M=L.initPageY+H+this.thumbCenterPoint.y;this.moveThumb(E,M,I);return true;},verifyOffset:function(F){var G=B(this.getEl()),E=this.thumb;if(!this.thumbCenterPoint||!this.thumbCenterPoint.x){this.setThumbCenterPoint();}if(G){if(G[0]!=this.baselinePos[0]||G[1]!=this.baselinePos[1]){this.setInitPosition();this.baselinePos=G;E.initPageX=this.initPageX+E.startOffset[0];E.initPageY=this.initPageY+E.startOffset[1];E.deltaSetXY=null;this.resetThumbConstraints();return false;}}return true;},moveThumb:function(K,J,I,G){var L=this.thumb,M=this,F,E,H;if(!L.available){return;}L.setDelta(this.thumbCenterPoint.x,this.thumbCenterPoint.y);E=L.getTargetCoord(K,J);F=[Math.round(E.x),Math.round(E.y)];if(this.animate&&L._graduated&&!I){this.lock();this.curCoord=B(this.thumb.getEl());this.curCoord=[Math.round(this.curCoord[0]),Math.round(this.curCoord[1])];setTimeout(function(){M.moveOneTick(F);
+},this.tickPause);}else{if(this.animate&&C.ANIM_AVAIL&&!I){this.lock();H=new YAHOO.util.Motion(L.id,{points:{to:F}},this.animationDuration,YAHOO.util.Easing.easeOut);H.onComplete.subscribe(function(){M.unlock();if(!M._mouseDown){M.endMove();}});H.animate();}else{L.setDragElPos(K,J);if(!G&&!this._mouseDown){this.endMove();}}}},_slideStart:function(){if(!this._sliding){if(!this._silent){this.onSlideStart();this.fireEvent("slideStart");}this._sliding=true;}},_slideEnd:function(){if(this._sliding&&this.moveComplete){var E=this._silent;this._sliding=false;this._silent=false;this.moveComplete=false;if(!E){this.onSlideEnd();this.fireEvent("slideEnd");}}},moveOneTick:function(F){var H=this.thumb,G=this,I=null,E,J;if(H._isRegion){I=this._getNextX(this.curCoord,F);E=(I!==null)?I[0]:this.curCoord[0];I=this._getNextY(this.curCoord,F);J=(I!==null)?I[1]:this.curCoord[1];I=E!==this.curCoord[0]||J!==this.curCoord[1]?[E,J]:null;}else{if(H._isHoriz){I=this._getNextX(this.curCoord,F);}else{I=this._getNextY(this.curCoord,F);}}if(I){this.curCoord=I;this.thumb.alignElWithMouse(H.getEl(),I[0]+this.thumbCenterPoint.x,I[1]+this.thumbCenterPoint.y);if(!(I[0]==F[0]&&I[1]==F[1])){setTimeout(function(){G.moveOneTick(F);},this.tickPause);}else{this.unlock();if(!this._mouseDown){this.endMove();}}}else{this.unlock();if(!this._mouseDown){this.endMove();}}},_getNextX:function(E,F){var H=this.thumb,J,G=[],I=null;if(E[0]>F[0]){J=H.tickSize-this.thumbCenterPoint.x;G=H.getTargetCoord(E[0]-J,E[1]);I=[G.x,G.y];}else{if(E[0]<F[0]){J=H.tickSize+this.thumbCenterPoint.x;G=H.getTargetCoord(E[0]+J,E[1]);I=[G.x,G.y];}else{}}return I;},_getNextY:function(E,F){var H=this.thumb,J,G=[],I=null;if(E[1]>F[1]){J=H.tickSize-this.thumbCenterPoint.y;G=H.getTargetCoord(E[0],E[1]-J);I=[G.x,G.y];}else{if(E[1]<F[1]){J=H.tickSize+this.thumbCenterPoint.y;G=H.getTargetCoord(E[0],E[1]+J);I=[G.x,G.y];}else{}}return I;},b4MouseDown:function(E){if(!this.backgroundEnabled){return false;}this.thumb.autoOffset();this.resetThumbConstraints();},onMouseDown:function(F){if(!this.backgroundEnabled||this.isLocked()){return false;}this._mouseDown=true;var E=A.getPageX(F),G=A.getPageY(F);this.focus();this._slideStart();this.moveThumb(E,G);},onDrag:function(F){if(this.backgroundEnabled&&!this.isLocked()){var E=A.getPageX(F),G=A.getPageY(F);this.moveThumb(E,G,true,true);this.fireEvents();}},endMove:function(){this.unlock();this.fireEvents();this.moveComplete=true;this._slideEnd();},resetThumbConstraints:function(){var E=this.thumb;E.setXConstraint(E.leftConstraint,E.rightConstraint,E.xTickSize);E.setYConstraint(E.topConstraint,E.bottomConstraint,E.xTickSize);},fireEvents:function(G){var F=this.thumb,I,H,E;if(!G){F.cachePosition();}if(!this.isLocked()){if(F._isRegion){I=F.getXValue();H=F.getYValue();if(I!=this.previousX||H!=this.previousY){if(!this._silent){this.onChange(I,H);this.fireEvent("change",{x:I,y:H});}}this.previousX=I;this.previousY=H;}else{E=F.getValue();if(E!=this.previousVal){if(!this._silent){this.onChange(E);this.fireEvent("change",E);}}this.previousVal=E;}}},toString:function(){return("Slider ("+this.type+") "+this.id);}});YAHOO.lang.augmentProto(C,YAHOO.util.EventProvider);YAHOO.widget.Slider=C;})();YAHOO.widget.SliderThumb=function(G,B,E,D,A,F,C){if(G){YAHOO.widget.SliderThumb.superclass.constructor.call(this,G,B);this.parentElId=B;}this.isTarget=false;this.tickSize=C;this.maintainOffset=true;this.initSlider(E,D,A,F,C);this.scroll=false;};YAHOO.extend(YAHOO.widget.SliderThumb,YAHOO.util.DD,{startOffset:null,dragOnly:true,_isHoriz:false,_prevVal:0,_graduated:false,getOffsetFromParent0:function(C){var A=YAHOO.util.Dom.getXY(this.getEl()),B=C||YAHOO.util.Dom.getXY(this.parentElId);return[(A[0]-B[0]),(A[1]-B[1])];},getOffsetFromParent:function(H){var A=this.getEl(),E,I,F,B,K,D,C,J,G;if(!this.deltaOffset){I=YAHOO.util.Dom.getXY(A);F=H||YAHOO.util.Dom.getXY(this.parentElId);E=[(I[0]-F[0]),(I[1]-F[1])];B=parseInt(YAHOO.util.Dom.getStyle(A,"left"),10);K=parseInt(YAHOO.util.Dom.getStyle(A,"top"),10);D=B-E[0];C=K-E[1];if(isNaN(D)||isNaN(C)){}else{this.deltaOffset=[D,C];}}else{J=parseInt(YAHOO.util.Dom.getStyle(A,"left"),10);G=parseInt(YAHOO.util.Dom.getStyle(A,"top"),10);E=[J+this.deltaOffset[0],G+this.deltaOffset[1]];}return E;},initSlider:function(D,C,A,E,B){this.initLeft=D;this.initRight=C;this.initUp=A;this.initDown=E;this.setXConstraint(D,C,B);this.setYConstraint(A,E,B);if(B&&B>1){this._graduated=true;}this._isHoriz=(D||C);this._isVert=(A||E);this._isRegion=(this._isHoriz&&this._isVert);},clearTicks:function(){YAHOO.widget.SliderThumb.superclass.clearTicks.call(this);this.tickSize=0;this._graduated=false;},getValue:function(){return(this._isHoriz)?this.getXValue():this.getYValue();},getXValue:function(){if(!this.available){return 0;}var A=this.getOffsetFromParent();if(YAHOO.lang.isNumber(A[0])){this.lastOffset=A;return(A[0]-this.startOffset[0]);}else{return(this.lastOffset[0]-this.startOffset[0]);}},getYValue:function(){if(!this.available){return 0;}var A=this.getOffsetFromParent();if(YAHOO.lang.isNumber(A[1])){this.lastOffset=A;return(A[1]-this.startOffset[1]);}else{return(this.lastOffset[1]-this.startOffset[1]);}},toString:function(){return"SliderThumb "+this.id;},onChange:function(A,B){}});(function(){var A=YAHOO.util.Event,B=YAHOO.widget;function C(I,F,H,D){var G=this,J={min:false,max:false},E,K;this.minSlider=I;this.maxSlider=F;this.activeSlider=I;this.isHoriz=I.thumb._isHoriz;E=this.minSlider.thumb.onMouseDown;K=this.maxSlider.thumb.onMouseDown;this.minSlider.thumb.onMouseDown=function(){G.activeSlider=G.minSlider;E.apply(this,arguments);};this.maxSlider.thumb.onMouseDown=function(){G.activeSlider=G.maxSlider;K.apply(this,arguments);};this.minSlider.thumb.onAvailable=function(){I.setStartSliderState();J.min=true;if(J.max){G.fireEvent("ready",G);}};this.maxSlider.thumb.onAvailable=function(){F.setStartSliderState();J.max=true;if(J.min){G.fireEvent("ready",G);}};I.onMouseDown=F.onMouseDown=function(L){return this.backgroundEnabled&&G._handleMouseDown(L);
+};I.onDrag=F.onDrag=function(L){G._handleDrag(L);};I.onMouseUp=F.onMouseUp=function(L){G._handleMouseUp(L);};I._bindKeyEvents=function(){G._bindKeyEvents(this);};F._bindKeyEvents=function(){};I.subscribe("change",this._handleMinChange,I,this);I.subscribe("slideStart",this._handleSlideStart,I,this);I.subscribe("slideEnd",this._handleSlideEnd,I,this);F.subscribe("change",this._handleMaxChange,F,this);F.subscribe("slideStart",this._handleSlideStart,F,this);F.subscribe("slideEnd",this._handleSlideEnd,F,this);this.createEvent("ready",this);this.createEvent("change",this);this.createEvent("slideStart",this);this.createEvent("slideEnd",this);D=YAHOO.lang.isArray(D)?D:[0,H];D[0]=Math.min(Math.max(parseInt(D[0],10)|0,0),H);D[1]=Math.max(Math.min(parseInt(D[1],10)|0,H),0);if(D[0]>D[1]){D.splice(0,2,D[1],D[0]);}this.minVal=D[0];this.maxVal=D[1];this.minSlider.setValue(this.minVal,true,true,true);this.maxSlider.setValue(this.maxVal,true,true,true);}C.prototype={minVal:-1,maxVal:-1,minRange:0,_handleSlideStart:function(E,D){this.fireEvent("slideStart",D);},_handleSlideEnd:function(E,D){this.fireEvent("slideEnd",D);},_handleDrag:function(D){B.Slider.prototype.onDrag.call(this.activeSlider,D);},_handleMinChange:function(){this.activeSlider=this.minSlider;this.updateValue();},_handleMaxChange:function(){this.activeSlider=this.maxSlider;this.updateValue();},_bindKeyEvents:function(D){A.on(D.id,"keydown",this._handleKeyDown,this,true);A.on(D.id,"keypress",this._handleKeyPress,this,true);},_handleKeyDown:function(D){this.activeSlider.handleKeyDown.apply(this.activeSlider,arguments);},_handleKeyPress:function(D){this.activeSlider.handleKeyPress.apply(this.activeSlider,arguments);},setValues:function(H,K,I,E,J){var F=this.minSlider,M=this.maxSlider,D=F.thumb,L=M.thumb,N=this,G={min:false,max:false};if(D._isHoriz){D.setXConstraint(D.leftConstraint,L.rightConstraint,D.tickSize);L.setXConstraint(D.leftConstraint,L.rightConstraint,L.tickSize);}else{D.setYConstraint(D.topConstraint,L.bottomConstraint,D.tickSize);L.setYConstraint(D.topConstraint,L.bottomConstraint,L.tickSize);}this._oneTimeCallback(F,"slideEnd",function(){G.min=true;if(G.max){N.updateValue(J);setTimeout(function(){N._cleanEvent(F,"slideEnd");N._cleanEvent(M,"slideEnd");},0);}});this._oneTimeCallback(M,"slideEnd",function(){G.max=true;if(G.min){N.updateValue(J);setTimeout(function(){N._cleanEvent(F,"slideEnd");N._cleanEvent(M,"slideEnd");},0);}});F.setValue(H,I,E,false);M.setValue(K,I,E,false);},setMinValue:function(F,H,I,E){var G=this.minSlider,D=this;this.activeSlider=G;D=this;this._oneTimeCallback(G,"slideEnd",function(){D.updateValue(E);setTimeout(function(){D._cleanEvent(G,"slideEnd");},0);});G.setValue(F,H,I);},setMaxValue:function(D,H,I,F){var G=this.maxSlider,E=this;this.activeSlider=G;this._oneTimeCallback(G,"slideEnd",function(){E.updateValue(F);setTimeout(function(){E._cleanEvent(G,"slideEnd");},0);});G.setValue(D,H,I);},updateValue:function(J){var E=this.minSlider.getValue(),K=this.maxSlider.getValue(),F=false,D,M,H,I,L,G;if(E!=this.minVal||K!=this.maxVal){F=true;D=this.minSlider.thumb;M=this.maxSlider.thumb;H=this.isHoriz?"x":"y";G=this.minSlider.thumbCenterPoint[H]+this.maxSlider.thumbCenterPoint[H];I=Math.max(K-G-this.minRange,0);L=Math.min(-E-G-this.minRange,0);if(this.isHoriz){I=Math.min(I,M.rightConstraint);D.setXConstraint(D.leftConstraint,I,D.tickSize);M.setXConstraint(L,M.rightConstraint,M.tickSize);}else{I=Math.min(I,M.bottomConstraint);D.setYConstraint(D.leftConstraint,I,D.tickSize);M.setYConstraint(L,M.bottomConstraint,M.tickSize);}}this.minVal=E;this.maxVal=K;if(F&&!J){this.fireEvent("change",this);}},selectActiveSlider:function(H){var E=this.minSlider,D=this.maxSlider,J=E.isLocked()||!E.backgroundEnabled,G=D.isLocked()||!E.backgroundEnabled,F=YAHOO.util.Event,I;if(J||G){this.activeSlider=J?D:E;}else{if(this.isHoriz){I=F.getPageX(H)-E.thumb.initPageX-E.thumbCenterPoint.x;}else{I=F.getPageY(H)-E.thumb.initPageY-E.thumbCenterPoint.y;}this.activeSlider=I*2>D.getValue()+E.getValue()?D:E;}},_handleMouseDown:function(D){if(!D._handled){D._handled=true;this.selectActiveSlider(D);return B.Slider.prototype.onMouseDown.call(this.activeSlider,D);}else{return false;}},_handleMouseUp:function(D){B.Slider.prototype.onMouseUp.apply(this.activeSlider,arguments);},_oneTimeCallback:function(F,D,E){F.subscribe(D,function(){F.unsubscribe(D,arguments.callee);E.apply({},[].slice.apply(arguments));});},_cleanEvent:function(K,E){var J,I,D,G,H,F;if(K.__yui_events&&K.events[E]){for(I=K.__yui_events.length;I>=0;--I){if(K.__yui_events[I].type===E){J=K.__yui_events[I];break;}}if(J){H=J.subscribers;F=[];G=0;for(I=0,D=H.length;I<D;++I){if(H[I]){F[G++]=H[I];}}J.subscribers=F;}}}};YAHOO.lang.augmentProto(C,YAHOO.util.EventProvider);B.Slider.getHorizDualSlider=function(H,J,K,G,F,D){var I=new B.SliderThumb(J,H,0,G,0,0,F),E=new B.SliderThumb(K,H,0,G,0,0,F);return new C(new B.Slider(H,H,I,"horiz"),new B.Slider(H,H,E,"horiz"),G,D);};B.Slider.getVertDualSlider=function(H,J,K,G,F,D){var I=new B.SliderThumb(J,H,0,0,0,G,F),E=new B.SliderThumb(K,H,0,0,0,G,F);return new B.DualSlider(new B.Slider(H,H,I,"vert"),new B.Slider(H,H,E,"vert"),G,D);};YAHOO.widget.DualSlider=C;})();YAHOO.register("slider",YAHOO.widget.Slider,{version:"2.7.0",build:"1796"});/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+YAHOO.util.Attribute=function(B,A){if(A){this.owner=A;this.configure(B,true);}};YAHOO.util.Attribute.prototype={name:undefined,value:null,owner:null,readOnly:false,writeOnce:false,_initialConfig:null,_written:false,method:null,setter:null,getter:null,validator:null,getValue:function(){var A=this.value;if(this.getter){A=this.getter.call(this.owner,this.name);}return A;},setValue:function(F,B){var E,A=this.owner,C=this.name;var D={type:C,prevValue:this.getValue(),newValue:F};if(this.readOnly||(this.writeOnce&&this._written)){return false;}if(this.validator&&!this.validator.call(A,F)){return false;}if(!B){E=A.fireBeforeChangeEvent(D);if(E===false){return false;}}if(this.setter){F=this.setter.call(A,F,this.name);if(F===undefined){}}if(this.method){this.method.call(A,F,this.name);}this.value=F;this._written=true;D.type=C;if(!B){this.owner.fireChangeEvent(D);}return true;},configure:function(B,C){B=B||{};if(C){this._written=false;}this._initialConfig=this._initialConfig||{};for(var A in B){if(B.hasOwnProperty(A)){this[A]=B[A];if(C){this._initialConfig[A]=B[A];}}}},resetValue:function(){return this.setValue(this._initialConfig.value);},resetConfig:function(){this.configure(this._initialConfig,true);},refresh:function(A){this.setValue(this.value,A);}};(function(){var A=YAHOO.util.Lang;YAHOO.util.AttributeProvider=function(){};YAHOO.util.AttributeProvider.prototype={_configs:null,get:function(C){this._configs=this._configs||{};var B=this._configs[C];if(!B||!this._configs.hasOwnProperty(C)){return null;}return B.getValue();},set:function(D,E,B){this._configs=this._configs||{};var C=this._configs[D];if(!C){return false;}return C.setValue(E,B);},getAttributeKeys:function(){this._configs=this._configs;var C=[],B;for(B in this._configs){if(A.hasOwnProperty(this._configs,B)&&!A.isUndefined(this._configs[B])){C[C.length]=B;}}return C;},setAttributes:function(D,B){for(var C in D){if(A.hasOwnProperty(D,C)){this.set(C,D[C],B);}}},resetValue:function(C,B){this._configs=this._configs||{};if(this._configs[C]){this.set(C,this._configs[C]._initialConfig.value,B);return true;}return false;},refresh:function(E,C){this._configs=this._configs||{};var F=this._configs;E=((A.isString(E))?[E]:E)||this.getAttributeKeys();for(var D=0,B=E.length;D<B;++D){if(F.hasOwnProperty(E[D])){this._configs[E[D]].refresh(C);}}},register:function(B,C){this.setAttributeConfig(B,C);},getAttributeConfig:function(C){this._configs=this._configs||{};var B=this._configs[C]||{};var D={};for(C in B){if(A.hasOwnProperty(B,C)){D[C]=B[C];}}return D;},setAttributeConfig:function(B,C,D){this._configs=this._configs||{};C=C||{};if(!this._configs[B]){C.name=B;this._configs[B]=this.createAttribute(C);}else{this._configs[B].configure(C,D);}},configureAttribute:function(B,C,D){this.setAttributeConfig(B,C,D);},resetAttributeConfig:function(B){this._configs=this._configs||{};this._configs[B].resetConfig();},subscribe:function(B,C){this._events=this._events||{};if(!(B in this._events)){this._events[B]=this.createEvent(B);}YAHOO.util.EventProvider.prototype.subscribe.apply(this,arguments);},on:function(){this.subscribe.apply(this,arguments);},addListener:function(){this.subscribe.apply(this,arguments);},fireBeforeChangeEvent:function(C){var B="before";B+=C.type.charAt(0).toUpperCase()+C.type.substr(1)+"Change";C.type=B;return this.fireEvent(C.type,C);},fireChangeEvent:function(B){B.type+="Change";return this.fireEvent(B.type,B);},createAttribute:function(B){return new YAHOO.util.Attribute(B,this);}};YAHOO.augment(YAHOO.util.AttributeProvider,YAHOO.util.EventProvider);})();(function(){var B=YAHOO.util.Dom,C=YAHOO.util.AttributeProvider;var A=function(D,E){this.init.apply(this,arguments);};A.DOM_EVENTS={"click":true,"dblclick":true,"keydown":true,"keypress":true,"keyup":true,"mousedown":true,"mousemove":true,"mouseout":true,"mouseover":true,"mouseup":true,"focus":true,"blur":true,"submit":true,"change":true};A.prototype={DOM_EVENTS:null,DEFAULT_HTML_SETTER:function(F,D){var E=this.get("element");if(E){E[D]=F;}},DEFAULT_HTML_GETTER:function(D){var E=this.get("element"),F;if(E){F=E[D];}return F;},appendChild:function(D){D=D.get?D.get("element"):D;return this.get("element").appendChild(D);},getElementsByTagName:function(D){return this.get("element").getElementsByTagName(D);},hasChildNodes:function(){return this.get("element").hasChildNodes();},insertBefore:function(D,E){D=D.get?D.get("element"):D;E=(E&&E.get)?E.get("element"):E;return this.get("element").insertBefore(D,E);},removeChild:function(D){D=D.get?D.get("element"):D;return this.get("element").removeChild(D);},replaceChild:function(D,E){D=D.get?D.get("element"):D;E=E.get?E.get("element"):E;return this.get("element").replaceChild(D,E);},initAttributes:function(D){},addListener:function(H,G,I,F){var E=this.get("element")||this.get("id");F=F||this;var D=this;if(!this._events[H]){if(E&&this.DOM_EVENTS[H]){YAHOO.util.Event.addListener(E,H,function(J){if(J.srcElement&&!J.target){J.target=J.srcElement;}D.fireEvent(H,J);},I,F);}this.createEvent(H,this);}return YAHOO.util.EventProvider.prototype.subscribe.apply(this,arguments);},on:function(){return this.addListener.apply(this,arguments);},subscribe:function(){return this.addListener.apply(this,arguments);},removeListener:function(E,D){return this.unsubscribe.apply(this,arguments);},addClass:function(D){B.addClass(this.get("element"),D);},getElementsByClassName:function(E,D){return B.getElementsByClassName(E,D,this.get("element"));},hasClass:function(D){return B.hasClass(this.get("element"),D);},removeClass:function(D){return B.removeClass(this.get("element"),D);},replaceClass:function(E,D){return B.replaceClass(this.get("element"),E,D);},setStyle:function(E,D){return B.setStyle(this.get("element"),E,D);},getStyle:function(D){return B.getStyle(this.get("element"),D);},fireQueue:function(){var E=this._queue;for(var F=0,D=E.length;F<D;++F){this[E[F][0]].apply(this,E[F][1]);}},appendTo:function(E,F){E=(E.get)?E.get("element"):B.get(E);this.fireEvent("beforeAppendTo",{type:"beforeAppendTo",target:E});
+F=(F&&F.get)?F.get("element"):B.get(F);var D=this.get("element");if(!D){return false;}if(!E){return false;}if(D.parent!=E){if(F){E.insertBefore(D,F);}else{E.appendChild(D);}}this.fireEvent("appendTo",{type:"appendTo",target:E});return D;},get:function(D){var F=this._configs||{},E=F.element;if(E&&!F[D]&&!YAHOO.lang.isUndefined(E.value[D])){this._setHTMLAttrConfig(D);}return C.prototype.get.call(this,D);},setAttributes:function(J,G){var E={},H=this._configOrder;for(var I=0,D=H.length;I<D;++I){if(J[H[I]]!==undefined){E[H[I]]=true;this.set(H[I],J[H[I]],G);}}for(var F in J){if(J.hasOwnProperty(F)&&!E[F]){this.set(F,J[F],G);}}},set:function(E,G,D){var F=this.get("element");if(!F){this._queue[this._queue.length]=["set",arguments];if(this._configs[E]){this._configs[E].value=G;}return;}if(!this._configs[E]&&!YAHOO.lang.isUndefined(F[E])){this._setHTMLAttrConfig(E);}return C.prototype.set.apply(this,arguments);},setAttributeConfig:function(D,E,F){this._configOrder.push(D);C.prototype.setAttributeConfig.apply(this,arguments);},createEvent:function(E,D){this._events[E]=true;return C.prototype.createEvent.apply(this,arguments);},init:function(E,D){this._initElement(E,D);},destroy:function(){var D=this.get("element");YAHOO.util.Event.purgeElement(D,true);this.unsubscribeAll();if(D&&D.parentNode){D.parentNode.removeChild(D);}this._queue=[];this._events={};this._configs={};this._configOrder=[];},_initElement:function(F,E){this._queue=this._queue||[];this._events=this._events||{};this._configs=this._configs||{};this._configOrder=[];E=E||{};E.element=E.element||F||null;var H=false;var D=A.DOM_EVENTS;this.DOM_EVENTS=this.DOM_EVENTS||{};for(var G in D){if(D.hasOwnProperty(G)){this.DOM_EVENTS[G]=D[G];}}if(typeof E.element==="string"){this._setHTMLAttrConfig("id",{value:E.element});}if(B.get(E.element)){H=true;this._initHTMLElement(E);this._initContent(E);}YAHOO.util.Event.onAvailable(E.element,function(){if(!H){this._initHTMLElement(E);}this.fireEvent("available",{type:"available",target:B.get(E.element)});},this,true);YAHOO.util.Event.onContentReady(E.element,function(){if(!H){this._initContent(E);}this.fireEvent("contentReady",{type:"contentReady",target:B.get(E.element)});},this,true);},_initHTMLElement:function(D){this.setAttributeConfig("element",{value:B.get(D.element),readOnly:true});},_initContent:function(D){this.initAttributes(D);this.setAttributes(D,true);this.fireQueue();},_setHTMLAttrConfig:function(D,F){var E=this.get("element");F=F||{};F.name=D;F.setter=F.setter||this.DEFAULT_HTML_SETTER;F.getter=F.getter||this.DEFAULT_HTML_GETTER;F.value=F.value||E[D];this._configs[D]=new YAHOO.util.Attribute(F,this);}};YAHOO.augment(A,C);YAHOO.util.Element=A;})();YAHOO.register("element",YAHOO.util.Element,{version:"2.7.0",build:"1796"});/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+YAHOO.util.Color=function(){var A="0",B=YAHOO.lang.isArray,C=YAHOO.lang.isNumber;return{real2dec:function(D){return Math.min(255,Math.round(D*256));},hsv2rgb:function(H,O,M){if(B(H)){return this.hsv2rgb.call(this,H[0],H[1],H[2]);}var D,I,L,G=Math.floor((H/60)%6),J=(H/60)-G,F=M*(1-O),E=M*(1-J*O),N=M*(1-(1-J)*O),K;switch(G){case 0:D=M;I=N;L=F;break;case 1:D=E;I=M;L=F;break;case 2:D=F;I=M;L=N;break;case 3:D=F;I=E;L=M;break;case 4:D=N;I=F;L=M;break;case 5:D=M;I=F;L=E;break;}K=this.real2dec;return[K(D),K(I),K(L)];},rgb2hsv:function(D,H,I){if(B(D)){return this.rgb2hsv.apply(this,D);}D/=255;H/=255;I/=255;var G,L,E=Math.min(Math.min(D,H),I),J=Math.max(Math.max(D,H),I),K=J-E,F;switch(J){case E:G=0;break;case D:G=60*(H-I)/K;if(H<I){G+=360;}break;case H:G=(60*(I-D)/K)+120;break;case I:G=(60*(D-H)/K)+240;break;}L=(J===0)?0:1-(E/J);F=[Math.round(G),L,J];return F;},rgb2hex:function(F,E,D){if(B(F)){return this.rgb2hex.apply(this,F);}var G=this.dec2hex;return G(F)+G(E)+G(D);},dec2hex:function(D){D=parseInt(D,10)|0;D=(D>255||D<0)?0:D;return(A+D.toString(16)).slice(-2).toUpperCase();},hex2dec:function(D){return parseInt(D,16);},hex2rgb:function(D){var E=this.hex2dec;return[E(D.slice(0,2)),E(D.slice(2,4)),E(D.slice(4,6))];},websafe:function(F,E,D){if(B(F)){return this.websafe.apply(this,F);}var G=function(H){if(C(H)){H=Math.min(Math.max(0,H),255);var I,J;for(I=0;I<256;I=I+51){J=I+51;if(H>=I&&H<=J){return(H-I>25)?J:I;}}}return H;};return[G(F),G(E),G(D)];}};}();(function(){var J=0,F=YAHOO.util,C=YAHOO.lang,D=YAHOO.widget.Slider,B=F.Color,E=F.Dom,I=F.Event,A=C.substitute,H="yui-picker";function G(L,K){J=J+1;K=K||{};if(arguments.length===1&&!YAHOO.lang.isString(L)&&!L.nodeName){K=L;L=K.element||null;}if(!L&&!K.element){L=this._createHostElement(K);}G.superclass.constructor.call(this,L,K);this.initPicker();}YAHOO.extend(G,YAHOO.util.Element,{ID:{R:H+"-r",R_HEX:H+"-rhex",G:H+"-g",G_HEX:H+"-ghex",B:H+"-b",B_HEX:H+"-bhex",H:H+"-h",S:H+"-s",V:H+"-v",PICKER_BG:H+"-bg",PICKER_THUMB:H+"-thumb",HUE_BG:H+"-hue-bg",HUE_THUMB:H+"-hue-thumb",HEX:H+"-hex",SWATCH:H+"-swatch",WEBSAFE_SWATCH:H+"-websafe-swatch",CONTROLS:H+"-controls",RGB_CONTROLS:H+"-rgb-controls",HSV_CONTROLS:H+"-hsv-controls",HEX_CONTROLS:H+"-hex-controls",HEX_SUMMARY:H+"-hex-summary",CONTROLS_LABEL:H+"-controls-label"},TXT:{ILLEGAL_HEX:"Illegal hex value entered",SHOW_CONTROLS:"Show color details",HIDE_CONTROLS:"Hide color details",CURRENT_COLOR:"Currently selected color: {rgb}",CLOSEST_WEBSAFE:"Closest websafe color: {rgb}. Click to select.",R:"R",G:"G",B:"B",H:"H",S:"S",V:"V",HEX:"#",DEG:"\u00B0",PERCENT:"%"},IMAGE:{PICKER_THUMB:"../../build/colorpicker/assets/picker_thumb.png",HUE_THUMB:"../../build/colorpicker/assets/hue_thumb.png"},DEFAULT:{PICKER_SIZE:180},OPT:{HUE:"hue",SATURATION:"saturation",VALUE:"value",RED:"red",GREEN:"green",BLUE:"blue",HSV:"hsv",RGB:"rgb",WEBSAFE:"websafe",HEX:"hex",PICKER_SIZE:"pickersize",SHOW_CONTROLS:"showcontrols",SHOW_RGB_CONTROLS:"showrgbcontrols",SHOW_HSV_CONTROLS:"showhsvcontrols",SHOW_HEX_CONTROLS:"showhexcontrols",SHOW_HEX_SUMMARY:"showhexsummary",SHOW_WEBSAFE:"showwebsafe",CONTAINER:"container",IDS:"ids",ELEMENTS:"elements",TXT:"txt",IMAGES:"images",ANIMATE:"animate"},skipAnim:true,_createHostElement:function(){var K=document.createElement("div");if(this.CSS.BASE){K.className=this.CSS.BASE;}return K;},_updateHueSlider:function(){var K=this.get(this.OPT.PICKER_SIZE),L=this.get(this.OPT.HUE);L=K-Math.round(L/360*K);if(L===K){L=0;}this.hueSlider.setValue(L,this.skipAnim);},_updatePickerSlider:function(){var L=this.get(this.OPT.PICKER_SIZE),M=this.get(this.OPT.SATURATION),K=this.get(this.OPT.VALUE);M=Math.round(M*L/100);K=Math.round(L-(K*L/100));this.pickerSlider.setRegionValue(M,K,this.skipAnim);},_updateSliders:function(){this._updateHueSlider();this._updatePickerSlider();},setValue:function(L,K){K=(K)||false;this.set(this.OPT.RGB,L,K);this._updateSliders();},hueSlider:null,pickerSlider:null,_getH:function(){var K=this.get(this.OPT.PICKER_SIZE),L=(K-this.hueSlider.getValue())/K;L=Math.round(L*360);return(L===360)?0:L;},_getS:function(){return this.pickerSlider.getXValue()/this.get(this.OPT.PICKER_SIZE);},_getV:function(){var K=this.get(this.OPT.PICKER_SIZE);return(K-this.pickerSlider.getYValue())/K;},_updateSwatch:function(){var M=this.get(this.OPT.RGB),O=this.get(this.OPT.WEBSAFE),N=this.getElement(this.ID.SWATCH),L=M.join(","),K=this.get(this.OPT.TXT);E.setStyle(N,"background-color","rgb("+L+")");N.title=A(K.CURRENT_COLOR,{"rgb":"#"+this.get(this.OPT.HEX)});N=this.getElement(this.ID.WEBSAFE_SWATCH);L=O.join(",");E.setStyle(N,"background-color","rgb("+L+")");N.title=A(K.CLOSEST_WEBSAFE,{"rgb":"#"+B.rgb2hex(O)});},_getValuesFromSliders:function(){this.set(this.OPT.RGB,B.hsv2rgb(this._getH(),this._getS(),this._getV()));},_updateFormFields:function(){this.getElement(this.ID.H).value=this.get(this.OPT.HUE);this.getElement(this.ID.S).value=this.get(this.OPT.SATURATION);this.getElement(this.ID.V).value=this.get(this.OPT.VALUE);this.getElement(this.ID.R).value=this.get(this.OPT.RED);this.getElement(this.ID.R_HEX).innerHTML=B.dec2hex(this.get(this.OPT.RED));this.getElement(this.ID.G).value=this.get(this.OPT.GREEN);this.getElement(this.ID.G_HEX).innerHTML=B.dec2hex(this.get(this.OPT.GREEN));this.getElement(this.ID.B).value=this.get(this.OPT.BLUE);this.getElement(this.ID.B_HEX).innerHTML=B.dec2hex(this.get(this.OPT.BLUE));this.getElement(this.ID.HEX).value=this.get(this.OPT.HEX);},_onHueSliderChange:function(N){var L=this._getH(),K=B.hsv2rgb(L,1,1),M="rgb("+K.join(",")+")";this.set(this.OPT.HUE,L,true);E.setStyle(this.getElement(this.ID.PICKER_BG),"background-color",M);if(this.hueSlider.valueChangeSource!==D.SOURCE_SET_VALUE){this._getValuesFromSliders();}this._updateFormFields();this._updateSwatch();},_onPickerSliderChange:function(M){var L=this._getS(),K=this._getV();this.set(this.OPT.SATURATION,Math.round(L*100),true);this.set(this.OPT.VALUE,Math.round(K*100),true);if(this.pickerSlider.valueChangeSource!==D.SOURCE_SET_VALUE){this._getValuesFromSliders();
+}this._updateFormFields();this._updateSwatch();},_getCommand:function(K){var L=I.getCharCode(K);if(L===38){return 3;}else{if(L===13){return 6;}else{if(L===40){return 4;}else{if(L>=48&&L<=57){return 1;}else{if(L>=97&&L<=102){return 2;}else{if(L>=65&&L<=70){return 2;}else{if("8, 9, 13, 27, 37, 39".indexOf(L)>-1||K.ctrlKey||K.metaKey){return 5;}else{return 0;}}}}}}}},_useFieldValue:function(L,K,N){var M=K.value;if(N!==this.OPT.HEX){M=parseInt(M,10);}if(M!==this.get(N)){this.set(N,M);}},_rgbFieldKeypress:function(M,K,O){var N=this._getCommand(M),L=(M.shiftKey)?10:1;switch(N){case 6:this._useFieldValue.apply(this,arguments);break;case 3:this.set(O,Math.min(this.get(O)+L,255));this._updateFormFields();break;case 4:this.set(O,Math.max(this.get(O)-L,0));this._updateFormFields();break;default:}},_hexFieldKeypress:function(L,K,N){var M=this._getCommand(L);if(M===6){this._useFieldValue.apply(this,arguments);}},_hexOnly:function(L,K){var M=this._getCommand(L);switch(M){case 6:case 5:case 1:break;case 2:if(K!==true){break;}default:I.stopEvent(L);return false;}},_numbersOnly:function(K){return this._hexOnly(K,true);},getElement:function(K){return this.get(this.OPT.ELEMENTS)[this.get(this.OPT.IDS)[K]];},_createElements:function(){var N,M,P,O,L,K=this.get(this.OPT.IDS),Q=this.get(this.OPT.TXT),S=this.get(this.OPT.IMAGES),R=function(U,V){var W=document.createElement(U);if(V){C.augmentObject(W,V,true);}return W;},T=function(U,V){var W=C.merge({autocomplete:"off",value:"0",size:3,maxlength:3},V);W.name=W.id;return new R(U,W);};L=this.get("element");N=new R("div",{id:K[this.ID.PICKER_BG],className:"yui-picker-bg",tabIndex:-1,hideFocus:true});M=new R("div",{id:K[this.ID.PICKER_THUMB],className:"yui-picker-thumb"});P=new R("img",{src:S.PICKER_THUMB});M.appendChild(P);N.appendChild(M);L.appendChild(N);N=new R("div",{id:K[this.ID.HUE_BG],className:"yui-picker-hue-bg",tabIndex:-1,hideFocus:true});M=new R("div",{id:K[this.ID.HUE_THUMB],className:"yui-picker-hue-thumb"});P=new R("img",{src:S.HUE_THUMB});M.appendChild(P);N.appendChild(M);L.appendChild(N);N=new R("div",{id:K[this.ID.CONTROLS],className:"yui-picker-controls"});L.appendChild(N);L=N;N=new R("div",{className:"hd"});M=new R("a",{id:K[this.ID.CONTROLS_LABEL],href:"#"});N.appendChild(M);L.appendChild(N);N=new R("div",{className:"bd"});L.appendChild(N);L=N;N=new R("ul",{id:K[this.ID.RGB_CONTROLS],className:"yui-picker-rgb-controls"});M=new R("li");M.appendChild(document.createTextNode(Q.R+" "));O=new T("input",{id:K[this.ID.R],className:"yui-picker-r"});M.appendChild(O);N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.G+" "));O=new T("input",{id:K[this.ID.G],className:"yui-picker-g"});M.appendChild(O);N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.B+" "));O=new T("input",{id:K[this.ID.B],className:"yui-picker-b"});M.appendChild(O);N.appendChild(M);L.appendChild(N);N=new R("ul",{id:K[this.ID.HSV_CONTROLS],className:"yui-picker-hsv-controls"});M=new R("li");M.appendChild(document.createTextNode(Q.H+" "));O=new T("input",{id:K[this.ID.H],className:"yui-picker-h"});M.appendChild(O);M.appendChild(document.createTextNode(" "+Q.DEG));N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.S+" "));O=new T("input",{id:K[this.ID.S],className:"yui-picker-s"});M.appendChild(O);M.appendChild(document.createTextNode(" "+Q.PERCENT));N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.V+" "));O=new T("input",{id:K[this.ID.V],className:"yui-picker-v"});M.appendChild(O);M.appendChild(document.createTextNode(" "+Q.PERCENT));N.appendChild(M);L.appendChild(N);N=new R("ul",{id:K[this.ID.HEX_SUMMARY],className:"yui-picker-hex_summary"});M=new R("li",{id:K[this.ID.R_HEX]});N.appendChild(M);M=new R("li",{id:K[this.ID.G_HEX]});N.appendChild(M);M=new R("li",{id:K[this.ID.B_HEX]});N.appendChild(M);L.appendChild(N);N=new R("div",{id:K[this.ID.HEX_CONTROLS],className:"yui-picker-hex-controls"});N.appendChild(document.createTextNode(Q.HEX+" "));M=new T("input",{id:K[this.ID.HEX],className:"yui-picker-hex",size:6,maxlength:6});N.appendChild(M);L.appendChild(N);L=this.get("element");N=new R("div",{id:K[this.ID.SWATCH],className:"yui-picker-swatch"});L.appendChild(N);N=new R("div",{id:K[this.ID.WEBSAFE_SWATCH],className:"yui-picker-websafe-swatch"});L.appendChild(N);},_attachRGBHSV:function(L,K){I.on(this.getElement(L),"keydown",function(N,M){M._rgbFieldKeypress(N,this,K);},this);I.on(this.getElement(L),"keypress",this._numbersOnly,this,true);I.on(this.getElement(L),"blur",function(N,M){M._useFieldValue(N,this,K);},this);},_updateRGB:function(){var K=[this.get(this.OPT.RED),this.get(this.OPT.GREEN),this.get(this.OPT.BLUE)];this.set(this.OPT.RGB,K);this._updateSliders();},_initElements:function(){var O=this.OPT,N=this.get(O.IDS),L=this.get(O.ELEMENTS),K,M,P;for(K in this.ID){if(C.hasOwnProperty(this.ID,K)){N[this.ID[K]]=N[K];}}M=E.get(N[this.ID.PICKER_BG]);if(!M){this._createElements();}else{}for(K in N){if(C.hasOwnProperty(N,K)){M=E.get(N[K]);P=E.generateId(M);N[K]=P;N[N[K]]=P;L[P]=M;}}},initPicker:function(){this._initSliders();this._bindUI();this.syncUI(true);},_initSliders:function(){var K=this.ID,L=this.get(this.OPT.PICKER_SIZE);this.hueSlider=D.getVertSlider(this.getElement(K.HUE_BG),this.getElement(K.HUE_THUMB),0,L);this.pickerSlider=D.getSliderRegion(this.getElement(K.PICKER_BG),this.getElement(K.PICKER_THUMB),0,L,0,L);this.set(this.OPT.ANIMATE,this.get(this.OPT.ANIMATE));},_bindUI:function(){var K=this.ID,L=this.OPT;this.hueSlider.subscribe("change",this._onHueSliderChange,this,true);this.pickerSlider.subscribe("change",this._onPickerSliderChange,this,true);I.on(this.getElement(K.WEBSAFE_SWATCH),"click",function(M){this.setValue(this.get(L.WEBSAFE));},this,true);I.on(this.getElement(K.CONTROLS_LABEL),"click",function(M){this.set(L.SHOW_CONTROLS,!this.get(L.SHOW_CONTROLS));I.preventDefault(M);},this,true);this._attachRGBHSV(K.R,L.RED);this._attachRGBHSV(K.G,L.GREEN);this._attachRGBHSV(K.B,L.BLUE);this._attachRGBHSV(K.H,L.HUE);
+this._attachRGBHSV(K.S,L.SATURATION);this._attachRGBHSV(K.V,L.VALUE);I.on(this.getElement(K.HEX),"keydown",function(N,M){M._hexFieldKeypress(N,this,L.HEX);},this);I.on(this.getElement(this.ID.HEX),"keypress",this._hexOnly,this,true);I.on(this.getElement(this.ID.HEX),"blur",function(N,M){M._useFieldValue(N,this,L.HEX);},this);},syncUI:function(K){this.skipAnim=K;this._updateRGB();this.skipAnim=false;},_updateRGBFromHSV:function(){var L=[this.get(this.OPT.HUE),this.get(this.OPT.SATURATION)/100,this.get(this.OPT.VALUE)/100],K=B.hsv2rgb(L);this.set(this.OPT.RGB,K);this._updateSliders();},_updateHex:function(){var N=this.get(this.OPT.HEX),K=N.length,O,M,L;if(K===3){O=N.split("");for(M=0;M<K;M=M+1){O[M]=O[M]+O[M];}N=O.join("");}if(N.length!==6){return false;}L=B.hex2rgb(N);this.setValue(L);},_hideShowEl:function(M,K){var L=(C.isString(M)?this.getElement(M):M);E.setStyle(L,"display",(K)?"":"none");},initAttributes:function(K){K=K||{};G.superclass.initAttributes.call(this,K);this.setAttributeConfig(this.OPT.PICKER_SIZE,{value:K.size||this.DEFAULT.PICKER_SIZE});this.setAttributeConfig(this.OPT.HUE,{value:K.hue||0,validator:C.isNumber});this.setAttributeConfig(this.OPT.SATURATION,{value:K.saturation||0,validator:C.isNumber});this.setAttributeConfig(this.OPT.VALUE,{value:C.isNumber(K.value)?K.value:100,validator:C.isNumber});this.setAttributeConfig(this.OPT.RED,{value:C.isNumber(K.red)?K.red:255,validator:C.isNumber});this.setAttributeConfig(this.OPT.GREEN,{value:C.isNumber(K.green)?K.green:255,validator:C.isNumber});this.setAttributeConfig(this.OPT.BLUE,{value:C.isNumber(K.blue)?K.blue:255,validator:C.isNumber});this.setAttributeConfig(this.OPT.HEX,{value:K.hex||"FFFFFF",validator:C.isString});this.setAttributeConfig(this.OPT.RGB,{value:K.rgb||[255,255,255],method:function(O){this.set(this.OPT.RED,O[0],true);this.set(this.OPT.GREEN,O[1],true);this.set(this.OPT.BLUE,O[2],true);var Q=B.websafe(O),P=B.rgb2hex(O),N=B.rgb2hsv(O);this.set(this.OPT.WEBSAFE,Q,true);this.set(this.OPT.HEX,P,true);if(N[1]){this.set(this.OPT.HUE,N[0],true);}this.set(this.OPT.SATURATION,Math.round(N[1]*100),true);this.set(this.OPT.VALUE,Math.round(N[2]*100),true);},readonly:true});this.setAttributeConfig(this.OPT.CONTAINER,{value:null,method:function(N){if(N){N.showEvent.subscribe(function(){this.pickerSlider.focus();},this,true);}}});this.setAttributeConfig(this.OPT.WEBSAFE,{value:K.websafe||[255,255,255]});var M=K.ids||C.merge({},this.ID),L;if(!K.ids&&J>1){for(L in M){if(C.hasOwnProperty(M,L)){M[L]=M[L]+J;}}}this.setAttributeConfig(this.OPT.IDS,{value:M,writeonce:true});this.setAttributeConfig(this.OPT.TXT,{value:K.txt||this.TXT,writeonce:true});this.setAttributeConfig(this.OPT.IMAGES,{value:K.images||this.IMAGE,writeonce:true});this.setAttributeConfig(this.OPT.ELEMENTS,{value:{},readonly:true});this.setAttributeConfig(this.OPT.SHOW_CONTROLS,{value:C.isBoolean(K.showcontrols)?K.showcontrols:true,method:function(N){var O=E.getElementsByClassName("bd","div",this.getElement(this.ID.CONTROLS))[0];this._hideShowEl(O,N);this.getElement(this.ID.CONTROLS_LABEL).innerHTML=(N)?this.get(this.OPT.TXT).HIDE_CONTROLS:this.get(this.OPT.TXT).SHOW_CONTROLS;}});this.setAttributeConfig(this.OPT.SHOW_RGB_CONTROLS,{value:C.isBoolean(K.showrgbcontrols)?K.showrgbcontrols:true,method:function(N){this._hideShowEl(this.ID.RGB_CONTROLS,N);}});this.setAttributeConfig(this.OPT.SHOW_HSV_CONTROLS,{value:C.isBoolean(K.showhsvcontrols)?K.showhsvcontrols:false,method:function(N){this._hideShowEl(this.ID.HSV_CONTROLS,N);if(N&&this.get(this.OPT.SHOW_HEX_SUMMARY)){this.set(this.OPT.SHOW_HEX_SUMMARY,false);}}});this.setAttributeConfig(this.OPT.SHOW_HEX_CONTROLS,{value:C.isBoolean(K.showhexcontrols)?K.showhexcontrols:false,method:function(N){this._hideShowEl(this.ID.HEX_CONTROLS,N);}});this.setAttributeConfig(this.OPT.SHOW_WEBSAFE,{value:C.isBoolean(K.showwebsafe)?K.showwebsafe:true,method:function(N){this._hideShowEl(this.ID.WEBSAFE_SWATCH,N);}});this.setAttributeConfig(this.OPT.SHOW_HEX_SUMMARY,{value:C.isBoolean(K.showhexsummary)?K.showhexsummary:true,method:function(N){this._hideShowEl(this.ID.HEX_SUMMARY,N);if(N&&this.get(this.OPT.SHOW_HSV_CONTROLS)){this.set(this.OPT.SHOW_HSV_CONTROLS,false);}}});this.setAttributeConfig(this.OPT.ANIMATE,{value:C.isBoolean(K.animate)?K.animate:true,method:function(N){if(this.pickerSlider){this.pickerSlider.animate=N;this.hueSlider.animate=N;}}});this.on(this.OPT.HUE+"Change",this._updateRGBFromHSV,this,true);this.on(this.OPT.SATURATION+"Change",this._updateRGBFromHSV,this,true);this.on(this.OPT.VALUE+"Change",this._updateRGBFromHSV,this,true);this.on(this.OPT.RED+"Change",this._updateRGB,this,true);this.on(this.OPT.GREEN+"Change",this._updateRGB,this,true);this.on(this.OPT.BLUE+"Change",this._updateRGB,this,true);this.on(this.OPT.HEX+"Change",this._updateHex,this,true);this._initElements();}});YAHOO.widget.ColorPicker=G;})();YAHOO.register("colorpicker",YAHOO.widget.ColorPicker,{version:"2.7.0",build:"1796"});
+
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+(function(){var B=YAHOO.util;var A=function(D,C,E,F){if(!D){}this.init(D,C,E,F);};A.NAME="Anim";A.prototype={toString:function(){var C=this.getEl()||{};var D=C.id||C.tagName;return(this.constructor.NAME+": "+D);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(C,E,D){return this.method(this.currentFrame,E,D-E,this.totalFrames);},setAttribute:function(C,F,E){var D=this.getEl();if(this.patterns.noNegatives.test(C)){F=(F>0)?F:0;}if("style" in D){B.Dom.setStyle(D,C,F+E);}else{if(C in D){D[C]=F;}}},getAttribute:function(C){var E=this.getEl();var G=B.Dom.getStyle(E,C);if(G!=="auto"&&!this.patterns.offsetUnit.test(G)){return parseFloat(G);}var D=this.patterns.offsetAttribute.exec(C)||[];var H=!!(D[3]);var F=!!(D[2]);if("style" in E){if(F||(B.Dom.getStyle(E,"position")=="absolute"&&H)){G=E["offset"+D[0].charAt(0).toUpperCase()+D[0].substr(1)];}else{G=0;}}else{if(C in E){G=E[C];}}return G;},getDefaultUnit:function(C){if(this.patterns.defaultUnit.test(C)){return"px";}return"";},setRuntimeAttribute:function(D){var I;var E;var F=this.attributes;this.runtimeAttributes[D]={};var H=function(J){return(typeof J!=="undefined");};if(!H(F[D]["to"])&&!H(F[D]["by"])){return false;}I=(H(F[D]["from"]))?F[D]["from"]:this.getAttribute(D);if(H(F[D]["to"])){E=F[D]["to"];}else{if(H(F[D]["by"])){if(I.constructor==Array){E=[];for(var G=0,C=I.length;G<C;++G){E[G]=I[G]+F[D]["by"][G]*1;}}else{E=I+F[D]["by"]*1;}}}this.runtimeAttributes[D].start=I;this.runtimeAttributes[D].end=E;this.runtimeAttributes[D].unit=(H(F[D].unit))?F[D]["unit"]:this.getDefaultUnit(D);return true;},init:function(E,J,I,C){var D=false;var F=null;var H=0;E=B.Dom.get(E);this.attributes=J||{};this.duration=!YAHOO.lang.isUndefined(I)?I:1;this.method=C||B.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=B.AnimMgr.fps;this.setEl=function(M){E=B.Dom.get(M);};this.getEl=function(){return E;};this.isAnimated=function(){return D;};this.getStartTime=function(){return F;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(B.AnimMgr.fps*this.duration):this.duration;if(this.duration===0&&this.useSeconds){this.totalFrames=1;}B.AnimMgr.registerElement(this);return true;};this.stop=function(M){if(!this.isAnimated()){return false;}if(M){this.currentFrame=this.totalFrames;this._onTween.fire();}B.AnimMgr.stop(this);};var L=function(){this.onStart.fire();this.runtimeAttributes={};for(var M in this.attributes){this.setRuntimeAttribute(M);}D=true;H=0;F=new Date();};var K=function(){var O={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};O.toString=function(){return("duration: "+O.duration+", currentFrame: "+O.currentFrame);};this.onTween.fire(O);var N=this.runtimeAttributes;for(var M in N){this.setAttribute(M,this.doMethod(M,N[M].start,N[M].end),N[M].unit);}H+=1;};var G=function(){var M=(new Date()-F)/1000;var N={duration:M,frames:H,fps:H/M};N.toString=function(){return("duration: "+N.duration+", frames: "+N.frames+", fps: "+N.fps);};D=false;H=0;this.onComplete.fire(N);};this._onStart=new B.CustomEvent("_start",this,true);this.onStart=new B.CustomEvent("start",this);this.onTween=new B.CustomEvent("tween",this);this._onTween=new B.CustomEvent("_tween",this,true);this.onComplete=new B.CustomEvent("complete",this);this._onComplete=new B.CustomEvent("_complete",this,true);this._onStart.subscribe(L);this._onTween.subscribe(K);this._onComplete.subscribe(G);}};B.Anim=A;})();YAHOO.util.AnimMgr=new function(){var C=null;var B=[];var A=0;this.fps=1000;this.delay=1;this.registerElement=function(F){B[B.length]=F;A+=1;F._onStart.fire();this.start();};this.unRegister=function(G,F){F=F||E(G);if(!G.isAnimated()||F==-1){return false;}G._onComplete.fire();B.splice(F,1);A-=1;if(A<=0){this.stop();}return true;};this.start=function(){if(C===null){C=setInterval(this.run,this.delay);}};this.stop=function(H){if(!H){clearInterval(C);for(var G=0,F=B.length;G<F;++G){this.unRegister(B[0],0);}B=[];C=null;A=0;}else{this.unRegister(H);}};this.run=function(){for(var H=0,F=B.length;H<F;++H){var G=B[H];if(!G||!G.isAnimated()){continue;}if(G.currentFrame<G.totalFrames||G.totalFrames===null){G.currentFrame+=1;if(G.useSeconds){D(G);}G._onTween.fire();}else{YAHOO.util.AnimMgr.stop(G,H);}}};var E=function(H){for(var G=0,F=B.length;G<F;++G){if(B[G]==H){return G;}}return -1;};var D=function(G){var J=G.totalFrames;var I=G.currentFrame;var H=(G.currentFrame*G.duration*1000/G.totalFrames);var F=(new Date()-G.getStartTime());var K=0;if(F<G.duration*1000){K=Math.round((F/H-1)*G.currentFrame);}else{K=J-(I+1);}if(K>0&&isFinite(K)){if(G.currentFrame+K>=J){K=J-(I+1);}G.currentFrame+=K;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(E,D){var F=E.length;var C=[];for(var B=0;B<F;++B){C[B]=[E[B][0],E[B][1]];}for(var A=1;A<F;++A){for(B=0;B<F-A;++B){C[B][0]=(1-D)*C[B][0]+D*C[parseInt(B+1,10)][0];C[B][1]=(1-D)*C[B][1]+D*C[parseInt(B+1,10)][1];}}return[C[0][0],C[0][1]];};};(function(){var A=function(F,E,G,H){A.superclass.constructor.call(this,F,E,G,H);};A.NAME="ColorAnim";A.DEFAULT_BGCOLOR="#fff";var C=YAHOO.util;YAHOO.extend(A,C.Anim);var D=A.superclass;var B=A.prototype;B.patterns.color=/color$/i;B.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;B.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;B.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;B.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;B.parseColor=function(E){if(E.length==3){return E;}var F=this.patterns.hex.exec(E);if(F&&F.length==4){return[parseInt(F[1],16),parseInt(F[2],16),parseInt(F[3],16)];}F=this.patterns.rgb.exec(E);if(F&&F.length==4){return[parseInt(F[1],10),parseInt(F[2],10),parseInt(F[3],10)];}F=this.patterns.hex3.exec(E);if(F&&F.length==4){return[parseInt(F[1]+F[1],16),parseInt(F[2]+F[2],16),parseInt(F[3]+F[3],16)];
+}return null;};B.getAttribute=function(E){var G=this.getEl();if(this.patterns.color.test(E)){var I=YAHOO.util.Dom.getStyle(G,E);var H=this;if(this.patterns.transparent.test(I)){var F=YAHOO.util.Dom.getAncestorBy(G,function(J){return !H.patterns.transparent.test(I);});if(F){I=C.Dom.getStyle(F,E);}else{I=A.DEFAULT_BGCOLOR;}}}else{I=D.getAttribute.call(this,E);}return I;};B.doMethod=function(F,J,G){var I;if(this.patterns.color.test(F)){I=[];for(var H=0,E=J.length;H<E;++H){I[H]=D.doMethod.call(this,F,J[H],G[H]);}I="rgb("+Math.floor(I[0])+","+Math.floor(I[1])+","+Math.floor(I[2])+")";}else{I=D.doMethod.call(this,F,J,G);}return I;};B.setRuntimeAttribute=function(F){D.setRuntimeAttribute.call(this,F);if(this.patterns.color.test(F)){var H=this.attributes;var J=this.parseColor(this.runtimeAttributes[F].start);var G=this.parseColor(this.runtimeAttributes[F].end);if(typeof H[F]["to"]==="undefined"&&typeof H[F]["by"]!=="undefined"){G=this.parseColor(H[F].by);for(var I=0,E=J.length;I<E;++I){G[I]=J[I]+G[I];}}this.runtimeAttributes[F].start=J;this.runtimeAttributes[F].end=G;}};C.ColorAnim=A;})();
+/*
+TERMS OF USE - EASING EQUATIONS
+Open source under the BSD License.
+Copyright 2001 Robert Penner All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+YAHOO.util.Easing={easeNone:function(B,A,D,C){return D*B/C+A;},easeIn:function(B,A,D,C){return D*(B/=C)*B+A;},easeOut:function(B,A,D,C){return -D*(B/=C)*(B-2)+A;},easeBoth:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B+A;}return -D/2*((--B)*(B-2)-1)+A;},easeInStrong:function(B,A,D,C){return D*(B/=C)*B*B*B+A;},easeOutStrong:function(B,A,D,C){return -D*((B=B/C-1)*B*B*B-1)+A;},easeBothStrong:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B*B*B+A;}return -D/2*((B-=2)*B*B*B-2)+A;},elasticIn:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}return -(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;},elasticOut:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}return B*Math.pow(2,-10*C)*Math.sin((C*F-D)*(2*Math.PI)/E)+G+A;},elasticBoth:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F/2)==2){return A+G;}if(!E){E=F*(0.3*1.5);}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}if(C<1){return -0.5*(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;}return B*Math.pow(2,-10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E)*0.5+G+A;},backIn:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}return E*(B/=D)*B*((C+1)*B-C)+A;},backOut:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}return E*((B=B/D-1)*B*((C+1)*B+C)+1)+A;},backBoth:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}if((B/=D/2)<1){return E/2*(B*B*(((C*=(1.525))+1)*B-C))+A;}return E/2*((B-=2)*B*(((C*=(1.525))+1)*B+C)+2)+A;},bounceIn:function(B,A,D,C){return D-YAHOO.util.Easing.bounceOut(C-B,0,D,C)+A;},bounceOut:function(B,A,D,C){if((B/=C)<(1/2.75)){return D*(7.5625*B*B)+A;}else{if(B<(2/2.75)){return D*(7.5625*(B-=(1.5/2.75))*B+0.75)+A;}else{if(B<(2.5/2.75)){return D*(7.5625*(B-=(2.25/2.75))*B+0.9375)+A;}}}return D*(7.5625*(B-=(2.625/2.75))*B+0.984375)+A;},bounceBoth:function(B,A,D,C){if(B<C/2){return YAHOO.util.Easing.bounceIn(B*2,0,D,C)*0.5+A;}return YAHOO.util.Easing.bounceOut(B*2-C,0,D,C)*0.5+D*0.5+A;}};(function(){var A=function(H,G,I,J){if(H){A.superclass.constructor.call(this,H,G,I,J);}};A.NAME="Motion";var E=YAHOO.util;YAHOO.extend(A,E.ColorAnim);var F=A.superclass;var C=A.prototype;C.patterns.points=/^points$/i;C.setAttribute=function(G,I,H){if(this.patterns.points.test(G)){H=H||"px";F.setAttribute.call(this,"left",I[0],H);F.setAttribute.call(this,"top",I[1],H);}else{F.setAttribute.call(this,G,I,H);}};C.getAttribute=function(G){if(this.patterns.points.test(G)){var H=[F.getAttribute.call(this,"left"),F.getAttribute.call(this,"top")];}else{H=F.getAttribute.call(this,G);}return H;};C.doMethod=function(G,K,H){var J=null;if(this.patterns.points.test(G)){var I=this.method(this.currentFrame,0,100,this.totalFrames)/100;J=E.Bezier.getPosition(this.runtimeAttributes[G],I);}else{J=F.doMethod.call(this,G,K,H);}return J;};C.setRuntimeAttribute=function(P){if(this.patterns.points.test(P)){var H=this.getEl();var J=this.attributes;var G;var L=J["points"]["control"]||[];var I;var M,O;if(L.length>0&&!(L[0] instanceof Array)){L=[L];}else{var K=[];for(M=0,O=L.length;M<O;++M){K[M]=L[M];}L=K;}if(E.Dom.getStyle(H,"position")=="static"){E.Dom.setStyle(H,"position","relative");}if(D(J["points"]["from"])){E.Dom.setXY(H,J["points"]["from"]);
+}else{E.Dom.setXY(H,E.Dom.getXY(H));}G=this.getAttribute("points");if(D(J["points"]["to"])){I=B.call(this,J["points"]["to"],G);var N=E.Dom.getXY(this.getEl());for(M=0,O=L.length;M<O;++M){L[M]=B.call(this,L[M],G);}}else{if(D(J["points"]["by"])){I=[G[0]+J["points"]["by"][0],G[1]+J["points"]["by"][1]];for(M=0,O=L.length;M<O;++M){L[M]=[G[0]+L[M][0],G[1]+L[M][1]];}}}this.runtimeAttributes[P]=[G];if(L.length>0){this.runtimeAttributes[P]=this.runtimeAttributes[P].concat(L);}this.runtimeAttributes[P][this.runtimeAttributes[P].length]=I;}else{F.setRuntimeAttribute.call(this,P);}};var B=function(G,I){var H=E.Dom.getXY(this.getEl());G=[G[0]-H[0]+I[0],G[1]-H[1]+I[1]];return G;};var D=function(G){return(typeof G!=="undefined");};E.Motion=A;})();(function(){var D=function(F,E,G,H){if(F){D.superclass.constructor.call(this,F,E,G,H);}};D.NAME="Scroll";var B=YAHOO.util;YAHOO.extend(D,B.ColorAnim);var C=D.superclass;var A=D.prototype;A.doMethod=function(E,H,F){var G=null;if(E=="scroll"){G=[this.method(this.currentFrame,H[0],F[0]-H[0],this.totalFrames),this.method(this.currentFrame,H[1],F[1]-H[1],this.totalFrames)];}else{G=C.doMethod.call(this,E,H,F);}return G;};A.getAttribute=function(E){var G=null;var F=this.getEl();if(E=="scroll"){G=[F.scrollLeft,F.scrollTop];}else{G=C.getAttribute.call(this,E);}return G;};A.setAttribute=function(E,H,G){var F=this.getEl();if(E=="scroll"){F.scrollLeft=H[0];F.scrollTop=H[1];}else{C.setAttribute.call(this,E,H,G);}};B.Scroll=D;})();YAHOO.register("animation",YAHOO.util.Anim,{version:"2.7.0",build:"1799"});
Index: /trunk/filemanager/tp/ckeditor/plugins/uicolor/yui/assets/yui.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/uicolor/yui/assets/yui.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/uicolor/yui/assets/yui.css	(revision 2000)
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.yui-h-slider,.yui-v-slider{position:relative;}.yui-h-slider .yui-slider-thumb,.yui-v-slider .yui-slider-thumb{position:absolute;cursor:default;}.yui-skin-sam .yui-h-slider{background:url(bg-h.gif) no-repeat 5px 0;height:28px;width:228px;}.yui-skin-sam .yui-h-slider .yui-slider-thumb{top:4px;}.yui-skin-sam .yui-v-slider{background:url(bg-v.gif) no-repeat 12px 0;height:228px;width:48px;}#cke_uicolor_picker .yui-picker-panel{background:#e3e3e3;border-color:#888;}#cke_uicolor_picker .yui-picker-panel .hd{background-color:#ccc;font-size:100%;line-height:100%;border:1px solid #e3e3e3;font-weight:bold;overflow:hidden;padding:6px;color:#000;}#cke_uicolor_picker .yui-picker-panel .bd{background:#e8e8e8;margin:1px;height:200px;}#cke_uicolor_picker .yui-picker-panel .ft{background:#e8e8e8;margin:1px;padding:1px;}#cke_uicolor_picker .yui-picker{position:relative;}#cke_uicolor_picker .yui-picker-hue-thumb{cursor:default;width:18px;height:18px;top:-8px;left:-2px;z-index:9;position:absolute;}#cke_uicolor_picker .yui-picker-hue-bg{-moz-outline:none;outline:0 none;position:absolute;left:200px;height:183px;width:14px;background:url(hue_bg.png) no-repeat;top:4px;}#cke_uicolor_picker .yui-picker-bg{-moz-outline:none;outline:0 none;position:absolute;top:4px;left:4px;height:182px;width:182px;background-color:#F00;background-image:url(picker_mask.png);}*html #cke_uicolor_picker .yui-picker-bg{background-image:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='picker_mask.png',sizingMethod='scale');}#cke_uicolor_picker .yui-picker-mask{position:absolute;z-index:1;top:0;left:0;}#cke_uicolor_picker .yui-picker-thumb{cursor:default;width:11px;height:11px;z-index:9;position:absolute;top:-4px;left:-4px;}#cke_uicolor_picker .yui-picker-swatch{position:absolute;left:240px;top:4px;height:60px;width:55px;border:1px solid #888;}#cke_uicolor_picker .yui-picker-websafe-swatch{position:absolute;left:304px;top:4px;height:24px;width:24px;border:1px solid #888;}#cke_uicolor_picker .yui-picker-controls{position:absolute;top:72px;left:226px;font:1em monospace;}#cke_uicolor_picker .yui-picker-controls .hd{background:transparent;border-width:0!important;}#cke_uicolor_picker .yui-picker-controls .bd{height:100px;border-width:0!important;}#cke_uicolor_picker .yui-picker-controls ul{float:left;padding:0 2px 0 0;margin:0;}#cke_uicolor_picker .yui-picker-controls li{padding:2px;list-style:none;margin:0;}#cke_uicolor_picker .yui-picker-controls input{font-size:.85em;width:2.4em;}#cke_uicolor_picker .yui-picker-hex-controls{clear:both;padding:2px;}#cke_uicolor_picker .yui-picker-hex-controls input{width:4.6em;}#cke_uicolor_picker .yui-picker-controls a{font:1em arial,helvetica,clean,sans-serif;display:block;*display:inline-block;padding:0;color:#000;}
Index: /trunk/filemanager/tp/ckeditor/plugins/uicolor/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/uicolor/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/uicolor/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('uicolor',{requires:['dialog'],lang:['en'],init:function(a){if(CKEDITOR.env.ie6Compat)return;a.addCommand('uicolor',new CKEDITOR.dialogCommand('uicolor'));a.ui.addButton('UIColor',{label:a.lang.uicolor.title,command:'uicolor',icon:this.path+'uicolor.gif'});CKEDITOR.dialog.add('uicolor',this.path+'dialogs/uicolor.js');CKEDITOR.scriptLoader.load(CKEDITOR.getUrl('plugins/uicolor/yui/yui.js'));a.element.getDocument().appendStyleSheet(CKEDITOR.getUrl('plugins/uicolor/yui/assets/yui.css'));}});
Index: /trunk/filemanager/tp/ckeditor/plugins/find/dialogs/find.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/find/dialogs/find.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/find/dialogs/find.js	(revision 2000)
@@ -0,0 +1,9 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(h){return h.type==CKEDITOR.NODE_TEXT&&h.getLength()>0;};function b(h){var i=CKEDITOR.dtd;return h.isBlockBoundary(CKEDITOR.tools.extend({},i.$empty,i.$nonEditable));};var c=function(){var h=this;return{textNode:h.textNode,offset:h.offset,character:h.textNode?h.textNode.getText().charAt(h.offset):null,hitMatchBoundary:h._.matchBoundary};},d=['find','replace'],e=[['txtFindFind','txtFindReplace'],['txtFindCaseChk','txtReplaceCaseChk'],['txtFindWordChk','txtReplaceWordChk'],['txtFindCyclic','txtReplaceCyclic']];function f(h){var i,j,k,l;i=h==='find'?1:0;j=1-i;var m,n=e.length;for(m=0;m<n;m++){k=this.getContentElement(d[i],e[m][i]);l=this.getContentElement(d[j],e[m][j]);l.setValue(k.getValue());}};var g=function(h,i){var j=new CKEDITOR.style(h.config.find_highlight),k=function(w,x){var y=new CKEDITOR.dom.walker(w);y[x?'guard':'evaluator']=a;y.breakOnFalse=true;this._={matchWord:x,walker:y,matchBoundary:false};};k.prototype={next:function(){return this.move();},back:function(){return this.move(true);},move:function(w){var y=this;var x=y.textNode;if(x===null)return c.call(y);y._.matchBoundary=false;if(x&&w&&y.offset>0){y.offset--;return c.call(y);}else if(x&&y.offset<x.getLength()-1){y.offset++;return c.call(y);}else{x=null;while(!x){x=y._.walker[w?'previous':'next'].call(y._.walker);if(y._.matchWord&&!x||y._.walker._.end)break;if(!x&&b(y._.walker.current))y._.matchBoundary=true;}y.textNode=x;if(x)y.offset=w?x.getLength()-1:0;else y.offset=0;}return c.call(y);}};var l=function(w,x){this._={walker:w,cursors:[],rangeLength:x,highlightRange:null,isMatched:false};};l.prototype={toDomRange:function(){var w=this._.cursors;if(w.length<1)return null;var x=w[0],y=w[w.length-1],z=new CKEDITOR.dom.range(h.document);z.setStart(x.textNode,x.offset);z.setEnd(y.textNode,y.offset+1);return z;},updateFromDomRange:function(w){var z=this;var x,y=new k(w);z._.cursors=[];do{x=y.next();if(x.character)z._.cursors.push(x);}while(x.character)z._.rangeLength=z._.cursors.length;},setMatched:function(){this._.isMatched=true;},clearMatched:function(){this._.isMatched=false;},isMatched:function(){return this._.isMatched;},highlight:function(){var y=this;if(y._.cursors.length<1)return;if(y._.highlightRange)y.removeHighlight();var w=y.toDomRange();j.applyToRange(w);y._.highlightRange=w;var x=w.startContainer;if(x.type!=CKEDITOR.NODE_ELEMENT)x=x.getParent();x.scrollIntoView();y.updateFromDomRange(w);},removeHighlight:function(){var w=this;if(!w._.highlightRange)return;j.removeFromRange(w._.highlightRange);
+w.updateFromDomRange(w._.highlightRange);w._.highlightRange=null;},moveBack:function(){var y=this;var w=y._.walker.back(),x=y._.cursors;if(w.hitMatchBoundary)y._.cursors=x=[];x.unshift(w);if(x.length>y._.rangeLength)x.pop();return w;},moveNext:function(){var y=this;var w=y._.walker.next(),x=y._.cursors;if(w.hitMatchBoundary)y._.cursors=x=[];x.push(w);if(x.length>y._.rangeLength)x.shift();return w;},getEndCharacter:function(){var w=this._.cursors;if(w.length<1)return null;return w[w.length-1].character;},getNextCharacterRange:function(w){var x,y=this._.cursors;if(!(x=y[y.length-1]))return null;return new l(new k(m(x)),w);},getCursors:function(){return this._.cursors;}};function m(w,x){var y=new CKEDITOR.dom.range();y.setStart(w.textNode,x?w.offset:w.offset+1);y.setEndAt(h.document.getBody(),CKEDITOR.POSITION_BEFORE_END);return y;};function n(w){var x=new CKEDITOR.dom.range();x.setStartAt(h.document.getBody(),CKEDITOR.POSITION_AFTER_START);x.setEnd(w.textNode,w.offset);return x;};var o=0,p=1,q=2,r=function(w,x){var y=[-1];if(x)w=w.toLowerCase();for(var z=0;z<w.length;z++){y.push(y[z]+1);while(y[z+1]>0&&w.charAt(z)!=w.charAt(y[z+1]-1))y[z+1]=y[y[z+1]-1]+1;}this._={overlap:y,state:0,ignoreCase:!!x,pattern:w};};r.prototype={feedCharacter:function(w){var x=this;if(x._.ignoreCase)w=w.toLowerCase();for(;;)if(w==x._.pattern.charAt(x._.state)){x._.state++;if(x._.state==x._.pattern.length){x._.state=0;return q;}return p;}else if(!x._.state)return o;else x._.state=x._.overlap[x._.state];return null;},reset:function(){this._.state=0;}};var s=/[.,"'?!;: \u0085\u00a0\u1680\u280e\u2028\u2029\u202f\u205f\u3000]/,t=function(w){if(!w)return true;var x=w.charCodeAt(0);return x>=9&&x<=13||x>=8192&&x<=8202||s.test(w);},u={searchRange:null,matchRange:null,find:function(w,x,y,z,A,B){var K=this;if(!K.matchRange)K.matchRange=new l(new k(K.searchRange),w.length);else{K.matchRange.removeHighlight();K.matchRange=K.matchRange.getNextCharacterRange(w.length);}var C=new r(w,!x),D=o,E='%';while(E!==null){K.matchRange.moveNext();while(E=K.matchRange.getEndCharacter()){D=C.feedCharacter(E);if(D==q)break;if(K.matchRange.moveNext().hitMatchBoundary)C.reset();}if(D==q){if(y){var F=K.matchRange.getCursors(),G=F[F.length-1],H=F[0],I=new k(n(H),true),J=new k(m(G),true);if(!(t(I.back().character)&&t(J.next().character)))continue;}K.matchRange.setMatched();if(A!==false)K.matchRange.highlight();return true;}}K.matchRange.clearMatched();K.matchRange.removeHighlight();if(z&&!B){K.searchRange=v(true);K.matchRange=null;
+return arguments.callee.apply(K,Array.prototype.slice.call(arguments).concat([true]));}return false;},replaceCounter:0,replace:function(w,x,y,z,A,B,C){var H=this;var D=false;if(H.matchRange&&H.matchRange.isMatched()&&!H.matchRange._.isReplaced){H.matchRange.removeHighlight();var E=H.matchRange.toDomRange(),F=h.document.createText(y);if(!C){var G=h.getSelection();G.selectRanges([E]);h.fire('saveSnapshot');}E.deleteContents();E.insertNode(F);if(!C){G.selectRanges([E]);h.fire('saveSnapshot');}H.matchRange.updateFromDomRange(E);if(!C)H.matchRange.highlight();H.matchRange._.isReplaced=true;H.replaceCounter++;D=true;}else D=H.find(x,z,A,B,!C);return D;}};function v(w){var x,y=h.getSelection(),z=h.document.getBody();if(y&&!w){x=y.getRanges()[0].clone();x.collapse(true);}else{x=new CKEDITOR.dom.range();x.setStartAt(z,CKEDITOR.POSITION_AFTER_START);}x.setEndAt(z,CKEDITOR.POSITION_BEFORE_END);return x;};return{title:h.lang.findAndReplace.title,resizable:CKEDITOR.DIALOG_RESIZE_NONE,minWidth:350,minHeight:165,buttons:[CKEDITOR.dialog.cancelButton],contents:[{id:'find',label:h.lang.findAndReplace.find,title:h.lang.findAndReplace.find,accessKey:'',elements:[{type:'hbox',widths:['230px','90px'],children:[{type:'text',id:'txtFindFind',label:h.lang.findAndReplace.findWhat,isChanged:false,labelLayout:'horizontal',accessKey:'F'},{type:'button',align:'left',style:'width:100%',label:h.lang.findAndReplace.find,onClick:function(){var w=this.getDialog();if(!u.find(w.getValueOf('find','txtFindFind'),w.getValueOf('find','txtFindCaseChk'),w.getValueOf('find','txtFindWordChk'),w.getValueOf('find','txtFindCyclic')))alert(h.lang.findAndReplace.notFoundMsg);}}]},{type:'vbox',padding:0,children:[{type:'checkbox',id:'txtFindCaseChk',isChanged:false,style:'margin-top:28px',label:h.lang.findAndReplace.matchCase},{type:'checkbox',id:'txtFindWordChk',isChanged:false,label:h.lang.findAndReplace.matchWord},{type:'checkbox',id:'txtFindCyclic',isChanged:false,'default':true,label:h.lang.findAndReplace.matchCyclic}]}]},{id:'replace',label:h.lang.findAndReplace.replace,accessKey:'M',elements:[{type:'hbox',widths:['230px','90px'],children:[{type:'text',id:'txtFindReplace',label:h.lang.findAndReplace.findWhat,isChanged:false,labelLayout:'horizontal',accessKey:'F'},{type:'button',align:'left',style:'width:100%',label:h.lang.findAndReplace.replace,onClick:function(){var w=this.getDialog();if(!u.replace(w,w.getValueOf('replace','txtFindReplace'),w.getValueOf('replace','txtReplace'),w.getValueOf('replace','txtReplaceCaseChk'),w.getValueOf('replace','txtReplaceWordChk'),w.getValueOf('replace','txtReplaceCyclic')))alert(h.lang.findAndReplace.notFoundMsg);
+}}]},{type:'hbox',widths:['230px','90px'],children:[{type:'text',id:'txtReplace',label:h.lang.findAndReplace.replaceWith,isChanged:false,labelLayout:'horizontal',accessKey:'R'},{type:'button',align:'left',style:'width:100%',label:h.lang.findAndReplace.replaceAll,isChanged:false,onClick:function(){var w=this.getDialog(),x;u.replaceCounter=0;u.searchRange=v(true);if(u.matchRange){u.matchRange.removeHighlight();u.matchRange=null;}h.fire('saveSnapshot');while(u.replace(w,w.getValueOf('replace','txtFindReplace'),w.getValueOf('replace','txtReplace'),w.getValueOf('replace','txtReplaceCaseChk'),w.getValueOf('replace','txtReplaceWordChk'),false,true)){}if(u.replaceCounter){alert(h.lang.findAndReplace.replaceSuccessMsg.replace(/%1/,u.replaceCounter));h.fire('saveSnapshot');}else alert(h.lang.findAndReplace.notFoundMsg);}}]},{type:'vbox',padding:0,children:[{type:'checkbox',id:'txtReplaceCaseChk',isChanged:false,label:h.lang.findAndReplace.matchCase},{type:'checkbox',id:'txtReplaceWordChk',isChanged:false,label:h.lang.findAndReplace.matchWord},{type:'checkbox',id:'txtReplaceCyclic',isChanged:false,'default':true,label:h.lang.findAndReplace.matchCyclic}]}]}],onLoad:function(){var w=this,x,y,z=false;this.on('hide',function(){z=false;});this.on('show',function(){z=true;});this.selectPage=CKEDITOR.tools.override(this.selectPage,function(A){return function(B){A.call(w,B);var C=w._.tabs[B],D,E,F;E=B==='find'?'txtFindFind':'txtFindReplace';F=B==='find'?'txtFindWordChk':'txtReplaceWordChk';x=w.getContentElement(B,E);y=w.getContentElement(B,F);if(!C.initialized){D=CKEDITOR.document.getById(x._.inputId);C.initialized=true;}if(z)f.call(this,B);};});},onShow:function(){u.searchRange=v();if(i=='replace')this.getContentElement('replace','txtFindReplace').focus();else this.getContentElement('find','txtFindFind').focus();},onHide:function(){if(u.matchRange&&u.matchRange.isMatched()){u.matchRange.removeHighlight();h.focus();h.getSelection().selectRanges([u.matchRange.toDomRange()]);}delete u.matchRange;}};};CKEDITOR.dialog.add('find',function(h){return g(h,'find');});CKEDITOR.dialog.add('replace',function(h){return g(h,'replace');});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/find/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/find/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/find/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('find',{init:function(a){var b=CKEDITOR.plugins.find;a.ui.addButton('Find',{label:a.lang.findAndReplace.find,command:'find'});var c=a.addCommand('find',new CKEDITOR.dialogCommand('find'));c.canUndo=false;a.ui.addButton('Replace',{label:a.lang.findAndReplace.replace,command:'replace'});var d=a.addCommand('replace',new CKEDITOR.dialogCommand('replace'));d.canUndo=false;CKEDITOR.dialog.add('find',this.path+'dialogs/find.js');CKEDITOR.dialog.add('replace',this.path+'dialogs/find.js');},requires:['styles']});CKEDITOR.config.find_highlight={element:'span',styles:{'background-color':'#004',color:'#fff'}};
Index: /trunk/filemanager/tp/ckeditor/plugins/preview/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/preview/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/preview/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a={modes:{wysiwyg:1,source:1},canUndo:false,exec:function(c){var d,e=CKEDITOR.env.isCustomDomain();if(c.config.fullPage)d=c.getData();else{var f='<body ',g=CKEDITOR.document.getBody(),h=c.config.baseHref.length>0?'<base href="'+c.config.baseHref+'" _cktemp="true"></base>':'';if(g.getAttribute('id'))f+='id="'+g.getAttribute('id')+'" ';if(g.getAttribute('class'))f+='class="'+g.getAttribute('class')+'" ';f+='>';d=c.config.docType+'<html dir="'+c.config.contentsLangDirection+'">'+'<head>'+h+'<title>'+c.lang.preview+'</title>'+'<link type="text/css" rel="stylesheet" href="'+[].concat(c.config.contentsCss).join('"><link type="text/css" rel="stylesheet" href="')+'">'+'</head>'+f+c.getData()+'</body></html>';}var i=640,j=420,k=80;try{var l=window.screen;i=Math.round(l.width*0.8);j=Math.round(l.height*0.7);k=Math.round(l.width*0.1);}catch(o){}var m='';if(e){window._cke_htmlToLoad=d;m='javascript:void( (function(){document.open();document.domain="'+document.domain+'";'+'document.write( window.opener._cke_htmlToLoad );'+'document.close();'+'window.opener._cke_htmlToLoad = null;'+'})() )';}var n=window.open(m,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+i+',height='+j+',left='+k);if(!e){n.document.write(d);n.document.close();}}},b='preview';CKEDITOR.plugins.add(b,{init:function(c){c.addCommand(b,a);c.ui.addButton('Preview',{label:c.lang.preview,command:b});}});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/iframedialog/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/iframedialog/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/iframedialog/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('iframedialog',{requires:['dialog'],onLoad:function(){CKEDITOR.dialog.addIframe=function(a,b,c,d,e,f){var g={type:'iframe',src:c,width:'100%',height:'100%'};if(typeof f=='function')g.onContentLoad=f;var h={title:b,minWidth:d,minHeight:e,contents:[{id:'iframe',label:b,expand:true,elements:[g]}]};return this.add(a,function(){return h;});};(function(){var a=function(b,c,d){if(arguments.length<3)return;var e=this._||(this._={}),f=c.onContentLoad&&CKEDITOR.tools.bind(c.onContentLoad,this),g=CKEDITOR.tools.cssLength(c.width),h=CKEDITOR.tools.cssLength(c.height);e.frameId=CKEDITOR.tools.getNextNumber()+'_iframe';b.on('load',function(){var k=CKEDITOR.document.getById(e.frameId),l=k.getParent();l.setStyles({width:g,height:h});});var i={src:'%2',id:e.frameId,frameborder:0,allowtransparency:true},j=[];if(typeof c.onContentLoad=='function')i.onload='CKEDITOR.tools.callFunction(%1);';CKEDITOR.ui.dialog.uiElement.call(this,b,c,j,'iframe',{width:g,height:h},i,'');d.push('<div style="width:'+g+';height:'+h+';" id="'+this.domId+'"></div>');j=j.join('');b.on('show',function(){var k=CKEDITOR.document.getById(e.frameId),l=k.getParent(),m=CKEDITOR.tools.addFunction(f),n=j.replace('%1',m).replace('%2',CKEDITOR.tools.htmlEncode(c.src));l.setHtml(n);});};a.prototype=new CKEDITOR.ui.dialog.uiElement();CKEDITOR.dialog.addUIElement('iframe',{build:function(b,c,d){return new a(b,c,d);}});})();}});
Index: /trunk/filemanager/tp/ckeditor/plugins/filebrowser/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/filebrowser/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/filebrowser/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(j,k){var l=[];if(!k)return j;else for(var m in k)l.push(m+'='+encodeURIComponent(k[m]));return j+(j.indexOf('?')!=-1?'&':'?')+l.join('&');};function b(j){j+='';var k=j.charAt(0).toUpperCase();return k+j.substr(1);};function c(j){var q=this;var k=q.getDialog(),l=k.getParentEditor();l._.filebrowserSe=q;var m=l.config['filebrowser'+b(k.getName())+'WindowWidth']||l.config.filebrowserWindowWidth||'80%',n=l.config['filebrowser'+b(k.getName())+'WindowHeight']||l.config.filebrowserWindowHeight||'70%',o=q.filebrowser.params||{};o.CKEditor=l.name;o.CKEditorFuncNum=l._.filebrowserFn;if(!o.langCode)o.langCode=l.langCode;var p=a(q.filebrowser.url,o);l.popup(p,m,n);};function d(j){var m=this;var k=m.getDialog(),l=k.getParentEditor();l._.filebrowserSe=m;if(!k.getContentElement(m['for'][0],m['for'][1]).getInputElement().$.value)return false;if(!k.getContentElement(m['for'][0],m['for'][1]).getAction())return false;return true;};function e(j,k,l){var m=l.params||{};m.CKEditor=j.name;m.CKEditorFuncNum=j._.filebrowserFn;if(!m.langCode)m.langCode=j.langCode;k.action=a(l.url,m);k.filebrowser=l;};function f(j,k,l,m){var n,o;for(var p in m){n=m[p];if(n.type=='hbox'||n.type=='vbox')f(j,k,l,n.children);if(!n.filebrowser)continue;if(typeof n.filebrowser=='string'){var q={action:n.type=='fileButton'?'QuickUpload':'Browse',target:n.filebrowser};n.filebrowser=q;}if(n.filebrowser.action=='Browse'){var r=n.filebrowser.url||j.config['filebrowser'+b(k)+'BrowseUrl']||j.config.filebrowserBrowseUrl;if(r){n.onClick=c;n.filebrowser.url=r;n.hidden=false;}}else if(n.filebrowser.action=='QuickUpload'&&n['for']){r=n.filebrowser.url||j.config['filebrowser'+b(k)+'UploadUrl']||j.config.filebrowserUploadUrl;if(r){n.onClick=d;n.filebrowser.url=r;n.hidden=false;e(j,l.getContents(n['for'][0]).get(n['for'][1]),n.filebrowser);}}}};function g(j,k){var l=k.getDialog(),m=k.filebrowser.target||null;j=j.replace(/#/g,'%23');if(m){var n=m.split(':'),o=l.getContentElement(n[0],n[1]);if(o){o.setValue(j);l.selectPage(n[0]);}}};function h(j,k,l){if(l.indexOf(';')!==-1){var m=l.split(';');for(var n=0;n<m.length;n++)if(h(j,k,m[n]))return true;return false;}return j.getContents(k).get(l).filebrowser&&j.getContents(k).get(l).filebrowser.url;};function i(j,k){var o=this;var l=o._.filebrowserSe.getDialog(),m=o._.filebrowserSe['for'],n=o._.filebrowserSe.filebrowser.onSelect;if(m)l.getContentElement(m[0],m[1]).reset();if(n&&n.call(o._.filebrowserSe,j,k)===false)return;if(typeof k=='string'&&k)alert(k);if(j)g(j,o._.filebrowserSe);
+};CKEDITOR.plugins.add('filebrowser',{init:function(j,k){j._.filebrowserFn=CKEDITOR.tools.addFunction(i,j);CKEDITOR.on('dialogDefinition',function(l){for(var m in l.data.definition.contents){f(l.editor,l.data.name,l.data.definition,l.data.definition.contents[m].elements);if(l.data.definition.contents[m].hidden&&l.data.definition.contents[m].filebrowser)l.data.definition.contents[m].hidden=!h(l.data.definition,l.data.definition.contents[m].id,l.data.definition.contents[m].filebrowser);}});}});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/maximize/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/maximize/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/maximize/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(f){if(!f||f.type!=CKEDITOR.NODE_ELEMENT||f.getName()!='form')return[];var g=[],h=['style','className'];for(var i=0;i<h.length;i++){var j=h[i],k=f.$.elements.namedItem(j);if(k){var l=new CKEDITOR.dom.element(k);g.push([l,l.nextSibling]);l.remove();}}return g;};function b(f,g){if(!f||f.type!=CKEDITOR.NODE_ELEMENT||f.getName()!='form')return;if(g.length>0)for(var h=g.length-1;h>=0;h--){var i=g[h][0],j=g[h][1];if(j)i.insertBefore(j);else i.appendTo(f);}};function c(f,g){var h=a(f),i={},j=f.$;if(!g){i['class']=j.className||'';j.className='';}i.inline=j.style.cssText||'';if(!g)j.style.cssText='position: static; overflow: visible';b(h);return i;};function d(f,g){var h=a(f),i=f.$;if('class' in g)i.className=g['class'];if('inline' in g)i.style.cssText=g.inline;b(h);};function e(f,g){return function(){var h=f.getViewPaneSize();g.resize(h.width,h.height,null,true);};};CKEDITOR.plugins.add('maximize',{init:function(f){var g=f.lang,h=CKEDITOR.document,i=h.getWindow(),j,k,l,m=e(i,f),n=CKEDITOR.TRISTATE_OFF;f.addCommand('maximize',{modes:{wysiwyg:1,source:1},editorFocus:false,exec:function(){var B=this;var o=f.container.getChild([0,0]),p=f.getThemeSpace('contents');if(f.mode=='wysiwyg'){var q=f.getSelection();j=q&&q.getRanges();k=i.getScrollPosition();}else{var r=f.textarea.$;j=!CKEDITOR.env.ie&&[r.selectionStart,r.selectionEnd];k=[r.scrollLeft,r.scrollTop];}if(B.state==CKEDITOR.TRISTATE_OFF){i.on('resize',m);l=i.getScrollPosition();var s=f.container;while(s=s.getParent()){s.setCustomData('maximize_saved_styles',c(s));s.setStyle('z-index',f.config.baseFloatZIndex-1);}p.setCustomData('maximize_saved_styles',c(p,true));o.setCustomData('maximize_saved_styles',c(o,true));if(CKEDITOR.env.ie)h.$.documentElement.style.overflow=h.getBody().$.style.overflow='hidden';else h.getBody().setStyles({overflow:'hidden',width:'0px',height:'0px'});i.$.scrollTo(0,0);var t=i.getViewPaneSize();o.setStyle('position','absolute');o.$.offsetLeft;o.setStyles({'z-index':f.config.baseFloatZIndex-1,left:'0px',top:'0px'});f.resize(t.width,t.height,null,true);var u=o.getDocumentPosition();o.setStyles({left:-1*u.x+'px',top:-1*u.y+'px'});o.addClass('cke_maximized');}else if(B.state==CKEDITOR.TRISTATE_ON){i.removeListener('resize',m);var v=[p,o];for(var w=0;w<v.length;w++){d(v[w],v[w].getCustomData('maximize_saved_styles'));v[w].removeCustomData('maximize_saved_styles');}s=f.container;while(s=s.getParent()){d(s,s.getCustomData('maximize_saved_styles'));s.removeCustomData('maximize_saved_styles');
+}i.$.scrollTo(l.x,l.y);o.removeClass('cke_maximized');f.fire('resize');}B.toggleState();var x=B.uiItems[0],y=B.state==CKEDITOR.TRISTATE_OFF?g.maximize:g.minimize,z=f.element.getDocument().getById(x._.id);z.getChild(1).setHtml(y);z.setAttribute('title',y);z.setAttribute('href','javascript:void("'+y+'");');if(f.mode=='wysiwyg'){if(j){f.getSelection().selectRanges(j);var A=f.getSelection().getStartElement();A&&A.scrollIntoView(true);}else i.$.scrollTo(k.x,k.y);}else{if(j){r.selectionStart=j[0];r.selectionEnd=j[1];}r.scrollLeft=k[0];r.scrollTop=k[1];}j=k=null;n=B.state;},canUndo:false});f.ui.addButton('Maximize',{label:g.maximize,command:'maximize'});f.on('mode',function(){f.getCommand('maximize').setState(n);},null,null,100);}});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/selection/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/selection/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/selection/plugin.js	(revision 2000)
@@ -0,0 +1,9 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(){var k=this;try{var h=k.getSelection();if(!h)return;var i=h.getStartElement(),j=new CKEDITOR.dom.elementPath(i);if(!j.compare(k._.selectionPreviousPath)){k._.selectionPreviousPath=j;k.fire('selectionChange',{selection:h,path:j,element:i});}}catch(l){}};var b,c;function d(){c=true;if(b)return;e.call(this);b=CKEDITOR.tools.setTimeout(e,200,this);};function e(){b=null;if(c){CKEDITOR.tools.setTimeout(a,0,this);c=false;}};var f={exec:function(h){switch(h.mode){case 'wysiwyg':h.document.$.execCommand('SelectAll',false,null);break;case 'source':}},canUndo:false};CKEDITOR.plugins.add('selection',{init:function(h){h.on('contentDom',function(){var i=h.document;if(CKEDITOR.env.ie){var j,k;i.on('focusin',function(){if(j){try{j.select();}catch(n){}j=null;}});h.window.on('focus',function(){k=true;m();});h.document.on('beforedeactivate',function(){k=false;h.document.$.execCommand('Unselect');});i.on('mousedown',l);i.on('mouseup',function(){k=true;setTimeout(function(){m(true);},0);});i.on('keydown',l);i.on('keyup',function(){k=true;m();});i.on('selectionchange',m);function l(){k=false;};function m(n){if(k){var o=h.document,p=o&&o.$.selection;if(n&&p&&p.type=='None')if(!o.$.queryCommandEnabled('InsertImage')){CKEDITOR.tools.setTimeout(m,50,this,true);return;}j=p&&p.createRange();d.call(h);}};}else{i.on('mouseup',d,h);i.on('keyup',d,h);}});h.addCommand('selectAll',f);h.ui.addButton('SelectAll',{label:h.lang.selectAll,command:'selectAll'});h.selectionChange=d;}});CKEDITOR.editor.prototype.getSelection=function(){return this.document&&this.document.getSelection();};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath;};CKEDITOR.dom.document.prototype.getSelection=function(){var h=new CKEDITOR.dom.selection(this);return!h||h.isInvalid?null:h;};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;CKEDITOR.dom.selection=function(h){var k=this;var i=h.getCustomData('cke_locked_selection');if(i)return i;k.document=h;k.isLocked=false;k._={cache:{}};if(CKEDITOR.env.ie){var j=k.getNative().createRange();if(!j||j.item&&j.item(0).ownerDocument!=k.document.$||j.parentElement&&j.parentElement().ownerDocument!=k.document.$)k.isInvalid=true;}return k;};var g={img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,th:1,thead:1,tfoot:1};CKEDITOR.dom.selection.prototype={getNative:CKEDITOR.env.ie?function(){return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.$.selection);
+}:function(){return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.getWindow().$.getSelection());},getType:CKEDITOR.env.ie?function(){var h=this._.cache;if(h.type)return h.type;var i=CKEDITOR.SELECTION_NONE;try{var j=this.getNative(),k=j.type;if(k=='Text')i=CKEDITOR.SELECTION_TEXT;if(k=='Control')i=CKEDITOR.SELECTION_ELEMENT;if(j.createRange().parentElement)i=CKEDITOR.SELECTION_TEXT;}catch(l){}return h.type=i;}:function(){var h=this._.cache;if(h.type)return h.type;var i=CKEDITOR.SELECTION_TEXT,j=this.getNative();if(!j)i=CKEDITOR.SELECTION_NONE;else if(j.rangeCount==1){var k=j.getRangeAt(0),l=k.startContainer;if(l==k.endContainer&&l.nodeType==1&&k.endOffset-k.startOffset==1&&g[l.childNodes[k.startOffset].nodeName.toLowerCase()])i=CKEDITOR.SELECTION_ELEMENT;}return h.type=i;},getRanges:CKEDITOR.env.ie?(function(){var h=function(i,j){i=i.duplicate();i.collapse(j);var k=i.parentElement(),l=k.childNodes,m;for(var n=0;n<l.length;n++){var o=l[n];if(o.nodeType==1){m=i.duplicate();m.moveToElementText(o);m.collapse();var p=m.compareEndPoints('StartToStart',i);if(p>0)break;else if(p===0)return{container:k,offset:n};m=null;}}if(!m){m=i.duplicate();m.moveToElementText(k);m.collapse(false);}m.setEndPoint('StartToStart',i);var q=m.text.replace(/(\r\n|\r)/g,'\n').length;while(q>0)q-=l[--n].nodeValue.length;if(q===0)return{container:k,offset:n};else return{container:l[n],offset:-q};};return function(){var t=this;var i=t._.cache;if(i.ranges)return i.ranges;var j=t.getNative(),k=j&&j.createRange(),l=t.getType(),m;if(!j)return[];if(l==CKEDITOR.SELECTION_TEXT){m=new CKEDITOR.dom.range(t.document);var n=h(k,true);m.setStart(new CKEDITOR.dom.node(n.container),n.offset);n=h(k);m.setEnd(new CKEDITOR.dom.node(n.container),n.offset);return i.ranges=[m];}else if(l==CKEDITOR.SELECTION_ELEMENT){var o=t._.cache.ranges=[];for(var p=0;p<k.length;p++){var q=k.item(p),r=q.parentNode,s=0;m=new CKEDITOR.dom.range(t.document);for(;s<r.childNodes.length&&r.childNodes[s]!=q;s++){}m.setStart(new CKEDITOR.dom.node(r),s);m.setEnd(new CKEDITOR.dom.node(r),s+1);o.push(m);}return o;}return i.ranges=[];};})():function(){var h=this._.cache;if(h.ranges)return h.ranges;var i=[],j=this.getNative();if(!j)return[];for(var k=0;k<j.rangeCount;k++){var l=j.getRangeAt(k),m=new CKEDITOR.dom.range(this.document);m.setStart(new CKEDITOR.dom.node(l.startContainer),l.startOffset);m.setEnd(new CKEDITOR.dom.node(l.endContainer),l.endOffset);i.push(m);}return h.ranges=i;},getStartElement:function(){var o=this;
+var h=o._.cache;if(h.startElement!==undefined)return h.startElement;var i,j=o.getNative();switch(o.getType()){case CKEDITOR.SELECTION_ELEMENT:return o.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var k=o.getRanges()[0];if(k)if(!k.collapsed){k.optimize();for(;;){var l=k.startContainer,m=k.startOffset;if(m==(l.getChildCount?l.getChildCount():l.getLength()))k.setStartAfter(l);else break;}i=k.startContainer;if(i.type!=CKEDITOR.NODE_ELEMENT)return i.getParent();i=i.getChild(k.startOffset);if(!i||i.type!=CKEDITOR.NODE_ELEMENT)return k.startContainer;var n=i.getFirst();while(n&&n.type==CKEDITOR.NODE_ELEMENT){i=n;n=n.getFirst();}return i;}if(CKEDITOR.env.ie){k=j.createRange();k.collapse(true);i=k.parentElement();}else{i=j.anchorNode;if(i&&i.nodeType!=1)i=i.parentNode;}}return h.startElement=i?new CKEDITOR.dom.element(i):null;},getSelectedElement:function(){var h=this._.cache;if(h.selectedElement!==undefined)return h.selectedElement;var i;if(this.getType()==CKEDITOR.SELECTION_ELEMENT){var j=this.getNative();if(CKEDITOR.env.ie)try{i=j.createRange().item(0);}catch(l){}else{var k=j.getRangeAt(0);i=k.startContainer.childNodes[k.startOffset];}}return h.selectedElement=i?new CKEDITOR.dom.element(i):null;},lock:function(){var h=this;h.getRanges();h.getStartElement();h.getSelectedElement();h._.cache.nativeSel={};h.isLocked=true;h.document.setCustomData('cke_locked_selection',h);},unlock:function(h){var m=this;var i=m.document,j=i.getCustomData('cke_locked_selection');if(j){i.setCustomData('cke_locked_selection',null);if(h){var k=j.getSelectedElement(),l=!k&&j.getRanges();m.isLocked=false;m.reset();i.getBody().focus();if(k)m.selectElement(k);else m.selectRanges(l);}}if(!j||!h){m.isLocked=false;m.reset();}},reset:function(){this._.cache={};},selectElement:function(h){var k=this;if(k.isLocked){var i=new CKEDITOR.dom.range(k.document);i.setStartBefore(h);i.setEndAfter(h);k._.cache.selectedElement=h;k._.cache.startElement=h;k._.cache.ranges=[i];k._.cache.type=CKEDITOR.SELECTION_ELEMENT;return;}if(CKEDITOR.env.ie){k.getNative().empty();try{i=k.document.$.body.createControlRange();i.addElement(h.$);i.select();}catch(l){i=k.document.$.body.createTextRange();i.moveToElementText(h.$);i.select();}k.reset();}else{i=k.document.$.createRange();i.selectNode(h.$);var j=k.getNative();j.removeAllRanges();j.addRange(i);k.reset();}},selectRanges:function(h){var n=this;if(n.isLocked){n._.cache.selectedElement=null;n._.cache.startElement=h[0].getTouchedStartNode();n._.cache.ranges=h;n._.cache.type=CKEDITOR.SELECTION_TEXT;
+return;}if(CKEDITOR.env.ie){if(h[0])h[0].select();n.reset();}else{var i=n.getNative();i.removeAllRanges();for(var j=0;j<h.length;j++){var k=h[j],l=n.document.$.createRange(),m=k.startContainer;if(k.collapsed&&CKEDITOR.env.gecko&&CKEDITOR.env.version<10900&&m.type==CKEDITOR.NODE_ELEMENT&&!m.getChildCount())m.appendText('');l.setStart(m.$,k.startOffset);l.setEnd(k.endContainer.$,k.endOffset);i.addRange(l);}n.reset();}},createBookmarks:function(h){var i=[],j=this.getRanges(),k=j.length,l;for(var m=0;m<k;m++){i.push(l=j[m].createBookmark(h,true));h=l.serializable;var n=h?this.document.getById(l.startNode):l.startNode,o=h?this.document.getById(l.endNode):l.endNode;for(var p=m+1;p<k;p++){var q=j[p],r=q.startContainer,s=q.endContainer;r.equals(n.getParent())&&q.startOffset++;r.equals(o.getParent())&&q.startOffset++;s.equals(n.getParent())&&q.endOffset++;s.equals(o.getParent())&&q.endOffset++;}}return i;},createBookmarks2:function(h){var i=[],j=this.getRanges();for(var k=0;k<j.length;k++)i.push(j[k].createBookmark2(h));return i;},selectBookmarks:function(h){var i=[];for(var j=0;j<h.length;j++){var k=new CKEDITOR.dom.range(this.document);k.moveToBookmark(h[j]);i.push(k);}this.selectRanges(i);return this;}};})();CKEDITOR.dom.range.prototype.select=CKEDITOR.env.ie?function(a){var j=this;var b=j.collapsed,c,d,e=j.createBookmark(),f=e.startNode,g;if(!b)g=e.endNode;var h=j.document.$.body.createTextRange();h.moveToElementText(f.$);h.moveStart('character',1);if(g){var i=j.document.$.body.createTextRange();i.moveToElementText(g.$);h.setEndPoint('EndToEnd',i);h.moveEnd('character',-1);}else{c=a||!f.hasPrevious()||f.getPrevious().is&&f.getPrevious().is('br');d=j.document.createElement('span');d.setHtml('&#65279;');d.insertBefore(f);if(c)j.document.createText('﻿').insertBefore(f);}j.setStartBefore(f);f.remove();if(b){if(c){h.moveStart('character',-1);h.select();j.document.$.selection.clear();}else h.select();d.remove();}else{j.setEndBefore(g);g.remove();h.select();}}:function(){var d=this;var a=d.startContainer;if(d.collapsed&&a.type==CKEDITOR.NODE_ELEMENT&&!a.getChildCount())a.append(new CKEDITOR.dom.text(''));var b=d.document.$.createRange();b.setStart(a.$,d.startOffset);try{b.setEnd(d.endContainer.$,d.endOffset);}catch(e){if(e.toString().indexOf('NS_ERROR_ILLEGAL_VALUE')>=0){d.collapse(true);b.setEnd(d.endContainer.$,d.endOffset);}else throw e;}var c=d.document.getSelection().getNative();c.removeAllRanges();c.addRange(b);};
Index: /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/checkbox.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/checkbox.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/checkbox.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('checkbox',function(a){return{title:a.lang.checkboxAndRadio.checkboxTitle,minWidth:350,minHeight:140,onShow:function(){var c=this;delete c.checkbox;var b=c.getParentEditor().getSelection().getSelectedElement();if(b&&b.getAttribute('type')=='checkbox'){c.checkbox=b;c.setupContent(b);}},onOk:function(){var b,c=this.checkbox,d=!c;if(d){b=this.getParentEditor();c=b.document.createElement('input');c.setAttribute('type','checkbox');}if(d)b.insertElement(c);this.commitContent({element:c});},contents:[{id:'info',label:a.lang.checkboxAndRadio.checkboxTitle,title:a.lang.checkboxAndRadio.checkboxTitle,startupFocus:'txtName',elements:[{id:'txtName',type:'text',label:a.lang.common.name,'default':'',accessKey:'N',setup:function(b){this.setValue(b.getAttribute('_cke_saved_name')||b.getAttribute('name')||'');},commit:function(b){var c=b.element;if(this.getValue())c.setAttribute('_cke_saved_name',this.getValue());else{c.removeAttribute('_cke_saved_name');c.removeAttribute('name');}}},{id:'txtValue',type:'text',label:a.lang.checkboxAndRadio.value,'default':'',accessKey:'V',setup:function(b){this.setValue(b.getAttribute('value')||'');},commit:function(b){var c=b.element;if(this.getValue())c.setAttribute('value',this.getValue());else c.removeAttribute('value');}},{id:'cmbSelected',type:'checkbox',label:a.lang.checkboxAndRadio.selected,'default':'',accessKey:'S',value:'checked',setup:function(b){this.setValue(b.getAttribute('checked'));},commit:function(b){var c=b.element;if(CKEDITOR.env.ie){var d=!!c.getAttribute('checked'),e=!!this.getValue();if(d!=e){var f=CKEDITOR.dom.element.createFromHtml('<input type="checkbox"'+(e?' checked="checked"':'')+'></input>',a.document);c.copyAttributes(f,{type:1,checked:1});f.replace(c);a.getSelection().selectElement(f);b.element=f;}}else if(this.getValue())c.setAttribute('checked',this.getValue());else c.removeAttribute('checked');}}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/textfield.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/textfield.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/textfield.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('textfield',function(a){var b={value:1,size:1,maxLength:1},c={text:1,password:1};return{title:a.lang.textfield.title,minWidth:350,minHeight:150,onShow:function(){var e=this;delete e.textField;var d=e.getParentEditor().getSelection().getSelectedElement();if(d&&d.getName()=='input'&&(c[d.getAttribute('type')]||!d.getAttribute('type'))){e.textField=d;e.setupContent(d);}},onOk:function(){var d,e=this.textField,f=!e;if(f){d=this.getParentEditor();e=d.document.createElement('input');e.setAttribute('type','text');}if(f)d.insertElement(e);this.commitContent({element:e});},onLoad:function(){var d=function(f){var g=f.hasAttribute(this.id)&&f.getAttribute(this.id);this.setValue(g||'');},e=function(f){var g=f.element,h=this.getValue();if(h)g.setAttribute(this.id,h);else g.removeAttribute(this.id);};this.foreach(function(f){if(b[f.id]){f.setup=d;f.commit=e;}});},contents:[{id:'info',label:a.lang.textfield.title,title:a.lang.textfield.title,elements:[{type:'hbox',widths:['50%','50%'],children:[{id:'_cke_saved_name',type:'text',label:a.lang.textfield.name,'default':'',accessKey:'N',setup:function(d){this.setValue(d.getAttribute('_cke_saved_name')||d.getAttribute('name')||'');},commit:function(d){var e=d.element;if(this.getValue())e.setAttribute('_cke_saved_name',this.getValue());else{e.removeAttribute('_cke_saved_name');e.removeAttribute('name');}}},{id:'value',type:'text',label:a.lang.textfield.value,'default':'',accessKey:'V'}]},{type:'hbox',widths:['50%','50%'],children:[{id:'size',type:'text',label:a.lang.textfield.charWidth,'default':'',accessKey:'C',style:'width:50px',validate:CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed)},{id:'maxLength',type:'text',label:a.lang.textfield.maxChars,'default':'',accessKey:'M',style:'width:50px',validate:CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed)}]},{id:'type',type:'select',label:a.lang.textfield.type,'default':'text',accessKey:'M',items:[[a.lang.textfield.typeText,'text'],[a.lang.textfield.typePass,'password']],setup:function(d){this.setValue(d.getAttribute('type'));},commit:function(d){var e=d.element;if(CKEDITOR.env.ie){var f=e.getAttribute('type'),g=this.getValue();if(f!=g){var h=CKEDITOR.dom.element.createFromHtml('<input type="'+g+'"></input>',a.document);e.copyAttributes(h,{type:1});h.replace(e);a.getSelection().selectElement(h);d.element=e;}}else e.setAttribute('type',this.getValue());}}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/button.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/button.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/button.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('button',function(a){return{title:a.lang.button.title,minWidth:350,minHeight:150,onShow:function(){var d=this;delete d.button;var b=d.getParentEditor().getSelection().getSelectedElement();if(b&&b.getName()=='input'){var c=b.getAttribute('type');if(c=='button'||c=='reset'||c=='submit'){d.button=b;d.setupContent(b);}}},onOk:function(){var b,c=this.button,d=!c;if(d){b=this.getParentEditor();c=b.document.createElement('input');}if(d)b.insertElement(c);this.commitContent({element:c});},contents:[{id:'info',label:a.lang.button.title,title:a.lang.button.title,elements:[{id:'_cke_saved_name',type:'text',label:a.lang.common.name,'default':'',setup:function(b){this.setValue(b.getAttribute('_cke_saved_name')||b.getAttribute('name')||'');},commit:function(b){var c=b.element;if(this.getValue())c.setAttribute('_cke_saved_name',this.getValue());else{c.removeAttribute('_cke_saved_name');c.removeAttribute('name');}}},{id:'value',type:'text',label:a.lang.button.text,accessKey:'V','default':'',setup:function(b){this.setValue(b.getAttribute('value')||'');},commit:function(b){var c=b.element;if(this.getValue())c.setAttribute('value',this.getValue());else c.removeAttribute('value');}},{id:'type',type:'select',label:a.lang.button.type,'default':'button',accessKey:'T',items:[[a.lang.button.typeBtn,'button'],[a.lang.button.typeSbm,'submit'],[a.lang.button.typeRst,'reset']],setup:function(b){this.setValue(b.getAttribute('type')||'');},commit:function(b){var c=b.element;if(CKEDITOR.env.ie){var d=c.getAttribute('type'),e=this.getValue();if(e!=d){var f=CKEDITOR.dom.element.createFromHtml('<input type="'+e+'"></input>',a.document);c.copyAttributes(f,{type:1});f.replace(c);a.getSelection().selectElement(f);b.element=f;}}else c.setAttribute('type',this.getValue());}}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/textarea.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/textarea.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/textarea.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('textarea',function(a){return{title:a.lang.textarea.title,minWidth:350,minHeight:150,onShow:function(){var c=this;delete c.textarea;var b=c.getParentEditor().getSelection().getSelectedElement();if(b&&b.getName()=='textarea'){c.textarea=b;c.setupContent(b);}},onOk:function(){var b,c=this.textarea,d=!c;if(d){b=this.getParentEditor();c=b.document.createElement('textarea');}this.commitContent(c);if(d)b.insertElement(c);},contents:[{id:'info',label:a.lang.textarea.title,title:a.lang.textarea.title,elements:[{id:'_cke_saved_name',type:'text',label:a.lang.common.name,'default':'',accessKey:'N',setup:function(b){this.setValue(b.getAttribute('_cke_saved_name')||b.getAttribute('name')||'');},commit:function(b){if(this.getValue())b.setAttribute('_cke_saved_name',this.getValue());else{b.removeAttribute('_cke_saved_name');b.removeAttribute('name');}}},{id:'cols',type:'text',label:a.lang.textarea.cols,'default':'',accessKey:'C',style:'width:50px',validate:CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed),setup:function(b){var c=b.hasAttribute('cols')&&b.getAttribute('cols');this.setValue(c||'');},commit:function(b){if(this.getValue())b.setAttribute('cols',this.getValue());else b.removeAttribute('cols');}},{id:'rows',type:'text',label:a.lang.textarea.rows,'default':'',accessKey:'R',style:'width:50px',validate:CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed),setup:function(b){var c=b.hasAttribute('rows')&&b.getAttribute('rows');this.setValue(c||'');},commit:function(b){if(this.getValue())b.setAttribute('rows',this.getValue());else b.removeAttribute('rows');}}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/radio.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/radio.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/radio.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('radio',function(a){return{title:a.lang.checkboxAndRadio.radioTitle,minWidth:350,minHeight:140,onShow:function(){var c=this;delete c.radioButton;var b=c.getParentEditor().getSelection().getSelectedElement();if(b&&b.getName()=='input'&&b.getAttribute('type')=='radio'){c.radioButton=b;c.setupContent(b);}},onOk:function(){var b,c=this.radioButton,d=!c;if(d){b=this.getParentEditor();c=b.document.createElement('input');c.setAttribute('type','radio');}if(d)b.insertElement(c);this.commitContent({element:c});},contents:[{id:'info',label:a.lang.checkboxAndRadio.radioTitle,title:a.lang.checkboxAndRadio.radioTitle,elements:[{id:'name',type:'text',label:a.lang.common.name,'default':'',accessKey:'N',setup:function(b){this.setValue(b.getAttribute('_cke_saved_name')||b.getAttribute('name')||'');},commit:function(b){var c=b.element;if(this.getValue())c.setAttribute('_cke_saved_name',this.getValue());else{c.removeAttribute('_cke_saved_name');c.removeAttribute('name');}}},{id:'value',type:'text',label:a.lang.checkboxAndRadio.value,'default':'',accessKey:'V',setup:function(b){this.setValue(b.getAttribute('value')||'');},commit:function(b){var c=b.element;if(this.getValue())c.setAttribute('value',this.getValue());else c.removeAttribute('value');}},{id:'checked',type:'checkbox',label:a.lang.checkboxAndRadio.selected,'default':'',accessKey:'S',value:'checked',setup:function(b){this.setValue(b.getAttribute('checked'));},commit:function(b){var c=b.element;if(!CKEDITOR.env.ie){if(this.getValue())c.setAttribute('checked','checked');else c.removeAttribute('checked');}else{var d=c.getAttribute('checked'),e=!!this.getValue();if(d!=e){var f=CKEDITOR.dom.element.createFromHtml('<input type="radio"'+(e?' checked="checked"':'')+'></input>',a.document);c.copyAttributes(f,{type:1,checked:1});f.replace(c);a.getSelection().selectElement(f);b.element=f;}}}}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/hiddenfield.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/hiddenfield.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/hiddenfield.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('hiddenfield',function(a){return{title:a.lang.hidden.title,minWidth:350,minHeight:110,onShow:function(){var c=this;delete c.hiddenField;var b=c.getParentEditor().getSelection().getSelectedElement();if(b&&b.getName()=='input'&&b.getAttribute('type')=='checkbox'){c.hiddenField=b;c.setupContent(b);}},onOk:function(){var b,c=this.hiddenField,d=!c;if(d){b=this.getParentEditor();c=b.document.createElement('input');c.setAttribute('type','hidden');}if(d)b.insertElement(c);this.commitContent(c);},contents:[{id:'info',label:a.lang.hidden.title,title:a.lang.hidden.title,elements:[{id:'_cke_saved_name',type:'text',label:a.lang.hidden.name,'default':'',accessKey:'N',setup:function(b){this.setValue(b.getAttribute('_cke_saved_name')||b.getAttribute('name')||'');},commit:function(b){if(this.getValue())b.setAttribute('_cke_saved_name',this.getValue());else{b.removeAttribute('_cke_saved_name');b.removeAttribute('name');}}},{id:'value',type:'text',label:a.lang.hidden.value,'default':'',accessKey:'V',setup:function(b){this.setValue(b.getAttribute('value')||'');},commit:function(b){if(this.getValue())b.setAttribute('value',this.getValue());else b.removeAttribute('value');}}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/select.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/select.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/select.js	(revision 2000)
@@ -0,0 +1,9 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('select',function(a){function b(k,l,m,n,o){k=j(k);var p;if(n)p=n.createElement('OPTION');else p=document.createElement('OPTION');if(k&&p&&p.getName()=='option'){if(CKEDITOR.env.ie){if(!isNaN(parseInt(o,10)))k.$.options.add(p.$,o);else k.$.options.add(p.$);p.$.innerHTML=l.length>0?l:'';p.$.value=m;}else{if(o!==null&&o<k.getChildCount())k.getChild(o<0?0:o).insertBeforeMe(p);else k.append(p);p.setText(l.length>0?l:'');p.setValue(m);}}else return false;return p;};function c(k){k=j(k);var l=g(k);for(var m=k.getChildren().count()-1;m>=0;m--)if(k.getChild(m).$.selected)k.getChild(m).remove();h(k,l);};function d(k,l,m,n){k=j(k);if(l<0)return false;var o=k.getChild(l);o.setText(m);o.setValue(n);return o;};function e(k){k=j(k);while(k.getChild(0)&&k.getChild(0).remove()){}};function f(k,l,m){k=j(k);var n=g(k);if(n<0)return false;var o=n+l;o=o<0?0:o;o=o>=k.getChildCount()?k.getChildCount()-1:o;if(n==o)return false;var p=k.getChild(n),q=p.getText(),r=p.getValue();p.remove();p=b(k,q,r,!m?null:m,o);h(k,o);return p;};function g(k){k=j(k);return k?k.$.selectedIndex:-1;};function h(k,l){k=j(k);if(l<0)return null;var m=k.getChildren().count();k.$.selectedIndex=l>=m?m-1:l;return k;};function i(k){k=j(k);return k?k.getChildren():false;};function j(k){if(k&&k.domId&&k.getInputElement().$)return k.getInputElement();else if(k&&k.$)return k;return false;};return{title:a.lang.select.title,minWidth:CKEDITOR.env.ie?460:395,minHeight:CKEDITOR.env.ie?320:300,onShow:function(){var n=this;delete n.selectBox;n.setupContent('clear');var k=n.getParentEditor().getSelection().getSelectedElement();if(k&&k.getName()=='select'){n.selectBox=k;n.setupContent(k.getName(),k);var l=i(k);for(var m=0;m<l.count();m++)n.setupContent('option',l.getItem(m));}},onOk:function(){var k=this.getParentEditor(),l=this.selectBox,m=!l;if(m)l=k.document.createElement('select');this.commitContent(l);if(m)k.insertElement(l);},contents:[{id:'info',label:a.lang.select.selectInfo,title:a.lang.select.selectInfo,accessKey:'',elements:[{id:'txtName',type:'text',widths:['25%','75%'],labelLayout:'horizontal',label:a.lang.common.name,'default':'',accessKey:'N',align:'center',style:'width:350px',setup:function(k,l){if(k=='clear')this.setValue('');else if(k=='select')this.setValue(l.getAttribute('_cke_saved_name')||l.getAttribute('name')||'');},commit:function(k){if(this.getValue())k.setAttribute('_cke_saved_name',this.getValue());else{k.removeAttribute('_cke_saved_name');k.removeAttribute('name');}}},{id:'txtValue',type:'text',widths:['25%','75%'],labelLayout:'horizontal',label:a.lang.select.value,style:'width:350px','default':'',className:'cke_disabled',onLoad:function(){this.getInputElement().setAttribute('readOnly',true);
+},setup:function(k,l){if(k=='clear')this.setValue('');else if(k=='option'&&l.getAttribute('selected'))this.setValue(l.$.value);}},{type:'hbox',widths:['175px','170px'],align:'center',children:[{id:'txtSize',type:'text',align:'center',labelLayout:'horizontal',label:a.lang.select.size,'default':'',accessKey:'S',style:'width:175px',validate:function(){var k=CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed);return this.getValue()===''||k.apply(this);},setup:function(k,l){if(k=='select')this.setValue(l.getAttribute('size')||'');if(CKEDITOR.env.webkit)this.getInputElement().setStyle('width','86px');},commit:function(k){if(this.getValue())k.setAttribute('size',this.getValue());else k.removeAttribute('size');}},{type:'html',html:'<span>'+CKEDITOR.tools.htmlEncode(a.lang.select.lines)+'</span>'}]},{type:'html',html:'<span>'+CKEDITOR.tools.htmlEncode(a.lang.select.opAvail)+'</span>'},{type:'hbox',widths:['115px','115px','100px'],align:'top',children:[{type:'vbox',children:[{id:'txtOptName',type:'text',label:a.lang.select.opText,style:'width:115px',setup:function(k,l){if(k=='clear')this.setValue('');}},{type:'select',id:'cmbName',label:'',title:'',size:5,style:'width:115px;height:75px',items:[],onChange:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbValue'),m=k.getContentElement('info','txtOptName'),n=k.getContentElement('info','txtOptValue'),o=g(this);h(l,o);m.setValue(this.getValue());n.setValue(l.getValue());},setup:function(k,l){if(k=='clear')e(this);else if(k=='option')b(this,l.getText(),l.getText(),this.getDialog().getParentEditor().document);},commit:function(k){var l=this.getDialog(),m=i(this),n=i(l.getContentElement('info','cmbValue')),o=l.getContentElement('info','txtValue').getValue();e(k);for(var p=0;p<m.count();p++){var q=b(k,m.getItem(p).getValue(),n.getItem(p).getValue(),l.getParentEditor().document);if(n.getItem(p).getValue()==o){q.setAttribute('selected','selected');q.selected=true;}}}}]},{type:'vbox',children:[{id:'txtOptValue',type:'text',label:a.lang.select.opValue,style:'width:115px',setup:function(k,l){if(k=='clear')this.setValue('');}},{type:'select',id:'cmbValue',label:'',size:5,style:'width:115px;height:75px',items:[],onChange:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbName'),m=k.getContentElement('info','txtOptName'),n=k.getContentElement('info','txtOptValue'),o=g(this);h(l,o);m.setValue(l.getValue());n.setValue(this.getValue());},setup:function(k,l){var n=this;if(k=='clear')e(n);
+else if(k=='option'){var m=l.getValue();b(n,m,m,n.getDialog().getParentEditor().document);if(l.getAttribute('selected')=='selected')n.getDialog().getContentElement('info','txtValue').setValue(m);}}}]},{type:'vbox',padding:5,children:[{type:'button',style:'',label:a.lang.select.btnAdd,title:a.lang.select.btnAdd,style:'width:100%;',onClick:function(){var k=this.getDialog(),l=k.getParentEditor(),m=k.getContentElement('info','txtOptName'),n=k.getContentElement('info','txtOptValue'),o=k.getContentElement('info','cmbName'),p=k.getContentElement('info','cmbValue');b(o,m.getValue(),m.getValue(),k.getParentEditor().document);b(p,n.getValue(),n.getValue(),k.getParentEditor().document);m.setValue('');n.setValue('');}},{type:'button',label:a.lang.select.btnModify,title:a.lang.select.btnModify,style:'width:100%;',onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','txtOptName'),m=k.getContentElement('info','txtOptValue'),n=k.getContentElement('info','cmbName'),o=k.getContentElement('info','cmbValue'),p=g(n);if(p>=0){d(n,p,l.getValue(),l.getValue());d(o,p,m.getValue(),m.getValue());}}},{type:'button',style:'width:100%;',label:a.lang.select.btnUp,title:a.lang.select.btnUp,onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbName'),m=k.getContentElement('info','cmbValue');f(l,-1,k.getParentEditor().document);f(m,-1,k.getParentEditor().document);}},{type:'button',style:'width:100%;',label:a.lang.select.btnDown,title:a.lang.select.btnDown,onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbName'),m=k.getContentElement('info','cmbValue');f(l,1,k.getParentEditor().document);f(m,1,k.getParentEditor().document);}}]}]},{type:'hbox',widths:['40%','20%','40%'],children:[{type:'button',label:a.lang.select.btnSetValue,title:a.lang.select.btnSetValue,onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbValue'),m=k.getContentElement('info','txtValue');m.setValue(l.getValue());}},{type:'button',label:a.lang.select.btnDelete,title:a.lang.select.btnDelete,onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbName'),m=k.getContentElement('info','cmbValue'),n=k.getContentElement('info','txtOptName'),o=k.getContentElement('info','txtOptValue');c(l);c(m);n.setValue('');o.setValue('');}},{id:'chkMulti',type:'checkbox',label:a.lang.select.chkMulti,'default':'',accessKey:'M',value:'checked',setup:function(k,l){if(k=='select')this.setValue(l.getAttribute('multiple'));if(CKEDITOR.env.webkit)this.getElement().getParent().setStyle('vertical-align','middle');
+},commit:function(k){if(this.getValue())k.setAttribute('multiple',this.getValue());else k.removeAttribute('multiple');}}]}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/form.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/form.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/forms/dialogs/form.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('form',function(a){var b={action:1,id:1,method:1,enctype:1,target:1};return{title:a.lang.form.title,minWidth:350,minHeight:200,onShow:function(){var e=this;delete e.form;var c=e.getParentEditor().getSelection().getStartElement(),d=c&&c.getAscendant('form',true);if(d){e.form=d;e.setupContent(d);}},onOk:function(){var c,d=this.form,e=!d;if(e){c=this.getParentEditor();d=c.document.createElement('form');d.append(c.document.createElement('br'));}if(e)c.insertElement(d);this.commitContent(d);},onLoad:function(){function c(e){this.setValue(e.getAttribute(this.id)||'');};function d(e){var f=this;if(f.getValue())e.setAttribute(f.id,f.getValue());else e.removeAttribute(f.id);};this.foreach(function(e){if(b[e.id]){e.setup=c;e.commit=d;}});},contents:[{id:'info',label:a.lang.form.title,title:a.lang.form.title,elements:[{id:'txtName',type:'text',label:a.lang.common.name,'default':'',accessKey:'N',setup:function(c){this.setValue(c.getAttribute('_cke_saved_name')||c.getAttribute('name')||'');},commit:function(c){if(this.getValue())c.setAttribute('_cke_saved_name',this.getValue());else{c.removeAttribute('_cke_saved_name');c.removeAttribute('name');}}},{id:'action',type:'text',label:a.lang.form.action,'default':'',accessKey:'A'},{type:'hbox',widths:['45%','55%'],children:[{id:'id',type:'text',label:a.lang.common.id,'default':'',accessKey:'I'},{id:'enctype',type:'select',label:a.lang.form.encoding,style:'width:100%',accessKey:'E','default':'',items:[[''],['text/plain'],['multipart/form-data'],['application/x-www-form-urlencoded']]}]},{type:'hbox',widths:['45%','55%'],children:[{id:'target',type:'select',label:a.lang.form.target,style:'width:100%',accessKey:'M','default':'',items:[[a.lang.form.targetNotSet,''],[a.lang.form.targetNew,'_blank'],[a.lang.form.targetTop,'_top'],[a.lang.form.targetSelf,'_self'],[a.lang.form.targetParent,'_parent']]},{id:'method',type:'select',label:a.lang.form.method,accessKey:'M','default':'GET',items:[['GET','get'],['POST','post']]}]}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/forms/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/forms/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/forms/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('forms',{init:function(a){var b=a.lang;a.addCss('form{border: 1px dotted #FF0000;padding: 2px;}');var c=function(e,f,g){a.addCommand(f,new CKEDITOR.dialogCommand(f));a.ui.addButton(e,{label:b.common[e.charAt(0).toLowerCase()+e.slice(1)],command:f});CKEDITOR.dialog.add(f,g);},d=this.path+'dialogs/';c('Form','form',d+'form.js');c('Checkbox','checkbox',d+'checkbox.js');c('Radio','radio',d+'radio.js');c('TextField','textfield',d+'textfield.js');c('Textarea','textarea',d+'textarea.js');c('Select','select',d+'select.js');c('Button','button',d+'button.js');c('ImageButton','imagebutton',CKEDITOR.plugins.getPath('image')+'dialogs/image.js');c('HiddenField','hiddenfield',d+'hiddenfield.js');if(a.addMenuItems)a.addMenuItems({form:{label:b.form.menu,command:'form',group:'form'},checkbox:{label:b.checkboxAndRadio.checkboxTitle,command:'checkbox',group:'checkbox'},radio:{label:b.checkboxAndRadio.radioTitle,command:'radio',group:'radio'},textfield:{label:b.textfield.title,command:'textfield',group:'textfield'},hiddenfield:{label:b.hidden.title,command:'hiddenfield',group:'hiddenfield'},imagebutton:{label:b.image.titleButton,command:'imagebutton',group:'imagebutton'},button:{label:b.button.title,command:'button',group:'button'},select:{label:b.select.title,command:'select',group:'select'},textarea:{label:b.textarea.title,command:'textarea',group:'textarea'}});if(a.contextMenu){a.contextMenu.addListener(function(e){if(e&&e.hasAscendant('form'))return{form:CKEDITOR.TRISTATE_OFF};});a.contextMenu.addListener(function(e){if(e){var f=e.getName();if(f=='select')return{select:CKEDITOR.TRISTATE_OFF};if(f=='textarea')return{textarea:CKEDITOR.TRISTATE_OFF};if(f=='input'){var g=e.getAttribute('type');if(g=='text'||g=='password')return{textfield:CKEDITOR.TRISTATE_OFF};if(g=='button'||g=='submit'||g=='reset')return{button:CKEDITOR.TRISTATE_OFF};if(g=='checkbox')return{checkbox:CKEDITOR.TRISTATE_OFF};if(g=='radio')return{radio:CKEDITOR.TRISTATE_OFF};if(g=='image')return{imagebutton:CKEDITOR.TRISTATE_OFF};}if(f=='img'&&e.getAttribute('_cke_real_element_type')=='hiddenfield')return{hiddenfield:CKEDITOR.TRISTATE_OFF};}});}},requires:['image']});if(CKEDITOR.env.ie)CKEDITOR.dom.element.prototype.hasAttribute=function(a){var d=this;var b=d.$.attributes.getNamedItem(a);if(d.getName()=='input')switch(a){case 'class':return d.$.className.length>0;case 'checked':return!!d.$.checked;case 'value':var c=d.getAttribute('type');if(c=='checkbox'||c=='radio')return d.$.value!='on';break;
+default:}return!!(b&&b.specified);};
Index: /trunk/filemanager/tp/ckeditor/plugins/enterkey/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/enterkey/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/enterkey/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){CKEDITOR.plugins.add('enterkey',{requires:['keystrokes','indent'],init:function(h){var i=h.specialKeys;i[13]=d;i[CKEDITOR.SHIFT+13]=c;}});var a,b=/^h[1-6]$/;function c(h){a=1;return d(h,h.config.shiftEnterMode);};function d(h,i){if(h.mode!='wysiwyg')return false;if(!i)i=h.config.enterMode;setTimeout(function(){h.fire('saveSnapshot');if(i==CKEDITOR.ENTER_BR||h.getSelection().getStartElement().hasAscendant('pre',true))f(h,i);else e(h,i);a=0;},0);return true;};function e(h,i,j){j=j||g(h);var k=j.document,l=i==CKEDITOR.ENTER_DIV?'div':'p',m=j.splitBlock(l);if(!m)return;var n=m.previousBlock,o=m.nextBlock,p=m.wasStartOfBlock,q=m.wasEndOfBlock,r;if(o){r=o.getParent();if(r.is('li')){o.breakParent(r);o.move(o.getNext(),true);}}else if(n&&(r=n.getParent())&&(r.is('li'))){n.breakParent(r);j.moveToElementEditStart(n.getNext());n.move(n.getPrevious());}if(!p&&!q){if(o.is('li')&&(r=o.getFirst())&&(r.is&&r.is('ul','ol')))o.insertBefore(k.createText('\xa0'),r);if(o)j.moveToElementEditStart(o);}else{if(p&&q&&n.is('li')){h.execCommand('outdent');return;}var s;if(n){if(!a&&!b.test(n.getName()))s=n.clone();}else if(o)s=o.clone();if(!s)s=k.createElement(l);var t=m.elementPath;if(t)for(var u=0,v=t.elements.length;u<v;u++){var w=t.elements[u];if(w.equals(t.block)||w.equals(t.blockLimit))break;if(CKEDITOR.dtd.$removeEmpty[w.getName()]){w=w.clone();s.moveChildren(w);s.append(w);}}if(!CKEDITOR.env.ie)s.appendBogus();j.insertNode(s);if(CKEDITOR.env.ie&&p&&(!q||!n.getChildCount())){j.moveToElementEditStart(q?n:s);j.select();}j.moveToElementEditStart(p&&!q?o:s);}if(!CKEDITOR.env.ie)if(o){var x=k.createElement('span');x.setHtml('&nbsp;');j.insertNode(x);x.scrollIntoView();j.deleteContents();}else s.scrollIntoView();j.select();};function f(h,i){var j=g(h),k=j.document,l=i==CKEDITOR.ENTER_DIV?'div':'p',m=j.checkEndOfBlock(),n=new CKEDITOR.dom.elementPath(h.getSelection().getStartElement()),o=n.block,p=o&&n.block.getName(),q=false;if(!a&&p=='li'){e(h,i,j);return;}if(!a&&m&&b.test(p)){k.createElement('br').insertAfter(o);if(CKEDITOR.env.gecko)k.createText('').insertAfter(o);j.setStartAt(o.getNext(),CKEDITOR.env.ie?CKEDITOR.POSITION_BEFORE_START:CKEDITOR.POSITION_AFTER_START);}else{var r;q=p=='pre';if(q)r=k.createText(CKEDITOR.env.ie?'\r':'\n');else r=k.createElement('br');j.deleteContents();j.insertNode(r);if(!CKEDITOR.env.ie)k.createText('﻿').insertAfter(r);if(m&&!CKEDITOR.env.ie)r.getParent().appendBogus();if(!CKEDITOR.env.ie)r.getNext().$.nodeValue='';if(CKEDITOR.env.ie)j.setStartAt(r,CKEDITOR.POSITION_AFTER_END);
+else j.setStartAt(r.getNext(),CKEDITOR.POSITION_AFTER_START);if(!CKEDITOR.env.ie){var s=null;if(!CKEDITOR.env.gecko){s=k.createElement('span');s.setHtml('&nbsp;');}else s=k.createElement('br');s.insertBefore(r.getNext());s.scrollIntoView();s.remove();}}j.collapse(true);j.select(q);};function g(h){var i=h.getSelection().getRanges();for(var j=i.length-1;j>0;j--)i[j].deleteContents();return i[0];};})();
Index: /trunk/filemanager/tp/ckeditor/plugins/table/dialogs/table.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/table/dialogs/table.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/table/dialogs/table.js	(revision 2000)
@@ -0,0 +1,8 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=/^(\d+(?:\.\d+)?)(px|%)$/,b=/^(\d+(?:\.\d+)?)px$/,c=function(e){var f=this.id;if(!e.info)e.info={};e.info[f]=this.getValue();};function d(e,f){var g=function(h){return new CKEDITOR.dom.element(h,e.document);};return{title:e.lang.table.title,minWidth:310,minHeight:CKEDITOR.env.ie?310:280,onShow:function(){var o=this;var h=e.getSelection(),i=h.getRanges(),j=null,k=o.getContentElement('info','txtRows'),l=o.getContentElement('info','txtCols'),m=o.getContentElement('info','txtWidth');if(f=='tableProperties'){if(j=e.getSelection().getSelectedElement()){if(j.getName()!='table')j=null;}else if(i.length>0){var n=i[0].getCommonAncestor(true);j=n.getAscendant('table',true);}o._.selectedElement=j;}if(j){o.setupContent(j);k&&k.disable();l&&l.disable();m&&m.select();}else{k&&k.enable();l&&l.enable();k&&k.select();}},onOk:function(){var A=this;var h=A._.selectedElement||g('table'),i=A,j={};A.commitContent(j,h);if(j.info){var k=j.info;if(!A._.selectedElement){var l=h.append(g('tbody')),m=parseInt(k.txtRows,10)||0,n=parseInt(k.txtCols,10)||0;for(var o=0;o<m;o++){var p=l.append(g('tr'));for(var q=0;q<n;q++){var r=p.append(g('td'));if(!CKEDITOR.env.ie)r.append(g('br'));}}}var s=k.selHeaders;if(!h.$.tHead&&(s=='row'||s=='both')){var t=new CKEDITOR.dom.element(h.$.createTHead());l=h.getElementsByTag('tbody').getItem(0);var u=l.getElementsByTag('tr').getItem(0);for(o=0;o<u.getChildCount();o++){var v=u.getChild(o);if(v.type==CKEDITOR.NODE_ELEMENT){v.renameNode('th');v.setAttribute('scope','col');}}t.append(u.remove());}if(h.$.tHead!==null&&!(s=='row'||s=='both')){t=new CKEDITOR.dom.element(h.$.tHead);l=h.getElementsByTag('tbody').getItem(0);var w=l.getFirst();while(t.getChildCount()>0){u=t.getFirst();for(o=0;o<u.getChildCount();o++){var x=u.getChild(o);if(x.type==CKEDITOR.NODE_ELEMENT){x.renameNode('td');x.removeAttribute('scope');}}u.insertBefore(w);}t.remove();}if(!A.hasColumnHeaders&&(s=='col'||s=='both'))for(p=0;p<h.$.rows.length;p++){x=new CKEDITOR.dom.element(h.$.rows[p].cells[0]);x.renameNode('th');x.setAttribute('scope','row');}if(A.hasColumnHeaders&&!(s=='col'||s=='both'))for(o=0;o<h.$.rows.length;o++){p=new CKEDITOR.dom.element(h.$.rows[o]);if(p.getParent().getName()=='tbody'){x=new CKEDITOR.dom.element(p.$.cells[0]);x.renameNode('td');x.removeAttribute('scope');}}var y=[];if(k.txtHeight)y.push('height:'+k.txtHeight+'px');if(k.txtWidth){var z=k.cmbWidthType||'pixels';y.push('width:'+k.txtWidth+(z=='pixels'?'px':'%'));}y=y.join(';');if(y)h.$.style.cssText=y;
+else h.removeAttribute('style');}if(!A._.selectedElement)e.insertElement(h);return true;},contents:[{id:'info',label:e.lang.table.title,elements:[{type:'hbox',widths:[null,null],styles:['vertical-align:top'],children:[{type:'vbox',padding:0,children:[{type:'text',id:'txtRows','default':3,label:e.lang.table.rows,style:'width:5em',validate:function(){var h=true,i=this.getValue();h=h&&CKEDITOR.dialog.validate.integer()(i)&&i>0;if(!h){alert(e.lang.table.invalidRows);this.select();}return h;},setup:function(h){this.setValue(h.$.rows.length);},commit:c},{type:'text',id:'txtCols','default':2,label:e.lang.table.columns,style:'width:5em',validate:function(){var h=true,i=this.getValue();h=h&&CKEDITOR.dialog.validate.integer()(i)&&i>0;if(!h){alert(e.lang.table.invalidCols);this.select();}return h;},setup:function(h){this.setValue(h.$.rows[0].cells.length);},commit:c},{type:'html',html:'&nbsp;'},{type:'select',id:'selHeaders','default':'',label:e.lang.table.headers,items:[[e.lang.table.headersNone,''],[e.lang.table.headersRow,'row'],[e.lang.table.headersColumn,'col'],[e.lang.table.headersBoth,'both']],setup:function(h){var i=this.getDialog();i.hasColumnHeaders=true;for(var j=0;j<h.$.rows.length;j++)if(h.$.rows[j].cells[0].nodeName.toLowerCase()!='th'){i.hasColumnHeaders=false;break;}if(h.$.tHead!==null)this.setValue(i.hasColumnHeaders?'both':'row');else this.setValue(i.hasColumnHeaders?'col':'');},commit:c},{type:'text',id:'txtBorder','default':1,label:e.lang.table.border,style:'width:3em',validate:CKEDITOR.dialog.validate.number(e.lang.table.invalidBorder),setup:function(h){this.setValue(h.getAttribute('border')||'');},commit:function(h,i){if(this.getValue())i.setAttribute('border',this.getValue());else i.removeAttribute('border');}},{id:'cmbAlign',type:'select','default':'',label:e.lang.table.align,items:[[e.lang.table.alignNotSet,''],[e.lang.table.alignLeft,'left'],[e.lang.table.alignCenter,'center'],[e.lang.table.alignRight,'right']],setup:function(h){this.setValue(h.getAttribute('align')||'');},commit:function(h,i){if(this.getValue())i.setAttribute('align',this.getValue());else i.removeAttribute('align');}}]},{type:'vbox',padding:0,children:[{type:'hbox',widths:['5em'],children:[{type:'text',id:'txtWidth',style:'width:5em',label:e.lang.table.width,'default':200,validate:CKEDITOR.dialog.validate.number(e.lang.table.invalidWidth),setup:function(h){var i=a.exec(h.$.style.width);if(i)this.setValue(i[1]);},commit:c},{id:'cmbWidthType',type:'select',label:'&nbsp;','default':'pixels',items:[[e.lang.table.widthPx,'pixels'],[e.lang.table.widthPc,'percents']],setup:function(h){var i=a.exec(h.$.style.width);
+if(i)this.setValue(i[2]=='px'?'pixels':'percents');},commit:c}]},{type:'hbox',widths:['5em'],children:[{type:'text',id:'txtHeight',style:'width:5em',label:e.lang.table.height,'default':'',validate:CKEDITOR.dialog.validate.number(e.lang.table.invalidHeight),setup:function(h){var i=b.exec(h.$.style.height);if(i)this.setValue(i[1]);},commit:c},{type:'html',html:'<br />'+e.lang.table.widthPx}]},{type:'html',html:'&nbsp;'},{type:'text',id:'txtCellSpace',style:'width:3em',label:e.lang.table.cellSpace,'default':1,validate:CKEDITOR.dialog.validate.number(e.lang.table.invalidCellSpacing),setup:function(h){this.setValue(h.getAttribute('cellSpacing')||'');},commit:function(h,i){if(this.getValue())i.setAttribute('cellSpacing',this.getValue());else i.removeAttribute('cellSpacing');}},{type:'text',id:'txtCellPad',style:'width:3em',label:e.lang.table.cellPad,'default':1,validate:CKEDITOR.dialog.validate.number(e.lang.table.invalidCellPadding),setup:function(h){this.setValue(h.getAttribute('cellPadding')||'');},commit:function(h,i){if(this.getValue())i.setAttribute('cellPadding',this.getValue());else i.removeAttribute('cellPadding');}}]}]},{type:'html',align:'right',html:''},{type:'vbox',padding:0,children:[{type:'text',id:'txtCaption',label:e.lang.table.caption,setup:function(h){var i=h.getElementsByTag('caption');if(i.count()>0){var j=i.getItem(0);j=j.getChild(0)&&j.getChild(0).getText()||'';j=CKEDITOR.tools.trim(j);this.setValue(j);}},commit:function(h,i){var j=this.getValue(),k=i.getElementsByTag('caption');if(j){if(k.count()>0){k=k.getItem(0);k.setHtml('');}else{k=new CKEDITOR.dom.element('caption',e.document);if(i.getChildCount())k.insertBefore(i.getFirst());else k.appendTo(i);}k.append(new CKEDITOR.dom.text(j,e.document));}else if(k.count()>0)for(var l=k.count()-1;l>=0;l--)k.getItem(l).remove();}},{type:'text',id:'txtSummary',label:e.lang.table.summary,setup:function(h){this.setValue(h.getAttribute('summary')||'');},commit:function(h,i){if(this.getValue())i.setAttribute('summary',this.getValue());}}]}]}]};};CKEDITOR.dialog.add('table',function(e){return d(e,'table');});CKEDITOR.dialog.add('tableProperties',function(e){return d(e,'tableProperties');});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/table/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/table/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/table/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('table',{init:function(a){var b=CKEDITOR.plugins.table,c=a.lang.table;a.addCommand('table',new CKEDITOR.dialogCommand('table'));a.addCommand('tableProperties',new CKEDITOR.dialogCommand('tableProperties'));a.ui.addButton('Table',{label:c.toolbar,command:'table'});CKEDITOR.dialog.add('table',this.path+'dialogs/table.js');CKEDITOR.dialog.add('tableProperties',this.path+'dialogs/table.js');if(a.addMenuItems)a.addMenuItems({table:{label:c.menu,command:'tableProperties',group:'table',order:5},tabledelete:{label:c.deleteTable,command:'tableDelete',group:'table',order:1}});if(a.contextMenu)a.contextMenu.addListener(function(d,e){if(!d)return null;var f=d.is('table')||d.hasAscendant('table');if(f)return{tabledelete:CKEDITOR.TRISTATE_OFF,table:CKEDITOR.TRISTATE_OFF};return null;});}});
Index: /trunk/filemanager/tp/ckeditor/plugins/format/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/format/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/format/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('format',{requires:['richcombo','styles'],init:function(a){var b=a.config,c=a.lang.format,d=b.format_tags.split(';'),e={};for(var f=0;f<d.length;f++){var g=d[f];e[g]=new CKEDITOR.style(b['format_'+g]);}a.ui.addRichCombo('Format',{label:c.label,title:c.panelTitle,voiceLabel:c.voiceLabel,className:'cke_format',multiSelect:false,panel:{css:[CKEDITOR.getUrl(a.skinPath+'editor.css')].concat(b.contentsCss),voiceLabel:c.panelVoiceLabel},init:function(){this.startGroup(c.panelTitle);for(var h in e){var i=c['tag_'+h];this.add(h,'<'+h+'>'+i+'</'+h+'>',i);}},onClick:function(h){a.focus();a.fire('saveSnapshot');e[h].apply(a.document);a.fire('saveSnapshot');},onRender:function(){a.on('selectionChange',function(h){var i=this.getValue(),j=h.data.path;for(var k in e)if(e[k].checkActive(j)){if(k!=i)this.setValue(k,a.lang.format['tag_'+k]);return;}this.setValue('');},this);}});}});CKEDITOR.config.format_tags='p;h1;h2;h3;h4;h5;h6;pre;address;div';CKEDITOR.config.format_p={element:'p'};CKEDITOR.config.format_div={element:'div'};CKEDITOR.config.format_pre={element:'pre'};CKEDITOR.config.format_address={element:'address'};CKEDITOR.config.format_h1={element:'h1'};CKEDITOR.config.format_h2={element:'h2'};CKEDITOR.config.format_h3={element:'h3'};CKEDITOR.config.format_h4={element:'h4'};CKEDITOR.config.format_h5={element:'h5'};CKEDITOR.config.format_h6={element:'h6'};
Index: /trunk/filemanager/tp/ckeditor/plugins/wsc/dialogs/wsc.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/wsc/dialogs/wsc.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/wsc/dialogs/wsc.css	(revision 2000)
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+html,body{background-color:transparent;margin:0;padding:0;}body{padding:10px;}body,td,input,select,textarea{font-size:11px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;}.midtext{padding:0;margin:10px;}.midtext p{padding:0;margin:10px;}.Button{border:#737357 1px solid;color:#3b3b1f;background-color:#c7c78f;}.PopupTabArea{color:#737357;background-color:#e3e3c7;}.PopupTitleBorder{border-bottom:#d5d59d 1px solid;}.PopupTabEmptyArea{padding-left:10px;border-bottom:#d5d59d 1px solid;}.PopupTab,.PopupTabSelected{border-right:#d5d59d 1px solid;border-top:#d5d59d 1px solid;border-left:#d5d59d 1px solid;padding:3px 5px 3px 5px;color:#737357;}.PopupTab{margin-top:1px;border-bottom:#d5d59d 1px solid;cursor:pointer;cursor:hand;}.PopupTabSelected{font-weight:bold;cursor:default;padding-top:4px;border-bottom:#f1f1e3 1px solid;background-color:#f1f1e3;}
Index: /trunk/filemanager/tp/ckeditor/plugins/wsc/dialogs/wsc.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/wsc/dialogs/wsc.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/wsc/dialogs/wsc.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('checkspell',function(a){var b=CKEDITOR.tools.getNextNumber(),c='cke_frame_'+b,d='cke_data_'+b,e='cke_error_'+b,f,g=document.location.protocol||'http:',h=a.lang.spellCheck.notAvailable,i='<textarea style="display: none" id="'+d+'"'+' rows="10"'+' cols="40">'+' </textarea><div'+' id="'+e+'"'+' style="display:none;color:red;font-size:16px;font-weight:bold;padding-top:160px;text-align:center;z-index:11;">'+'</div><iframe'+' src=""'+' style="width:485px;background-color:#f1f1e3;height:380px"'+' frameborder="0"'+' name="'+c+'"'+' id="'+c+'"'+' allowtransparency="1">'+'</iframe>',j=a.config.wsc_customLoaderScript||g+'//loader.spellchecker.net/sproxy_fck/sproxy.php'+'?plugin=fck2'+'&customerid='+a.config.wsc_customerId+'&cmd=script&doc=wsc&schema=22';if(a.config.wsc_customLoaderScript)h+='<p style="color:#000;font-size:11px;font-weight: normal;text-align:center;padding-top:10px">'+a.lang.spellCheck.errorLoading.replace(/%s/g,a.config.wsc_customLoaderScript)+'</p>';function k(m,n){var o=0;return function(){if(typeof window.doSpell=='function'){if(typeof f!='undefined')window.clearInterval(f);l(m);}else if(o++==180)window._cancelOnError(n);};};window._cancelOnError=function(m){if(typeof window.WSC_Error=='undefined'){CKEDITOR.document.getById(c).setStyle('display','none');var n=CKEDITOR.document.getById(e);n.setStyle('display','block');n.setHtml(m||a.lang.spellCheck.notAvailable);}};function l(m){var n=new window._SP_FCK_LangCompare(),o=CKEDITOR.getUrl(a.plugins.wsc.path+'dialogs/'),p=o+'tmpFrameset.html';window.gFCKPluginName='wsc';n.setDefaulLangCode(a.config.defaultLanguage);window.doSpell({ctrl:d,lang:n.getSPLangCode(a.langCode),winType:c,onCancel:function(){m.hide();},onFinish:function(q){a.focus();m.getParentEditor().setData(q.value);m.hide();},staticFrame:p,framesetPath:p,iframePath:o+'ciframe.html',schemaURI:o+'wsc.css'});CKEDITOR.document.getById(e).setStyle('display','none');CKEDITOR.document.getById(c).setStyle('display','block');};return{title:a.lang.spellCheck.title,minWidth:485,minHeight:380,buttons:[CKEDITOR.dialog.cancelButton],onShow:function(){var m=this.getContentElement('general','content').getElement();m.setHtml(i);if(typeof window.doSpell!='function')CKEDITOR.document.getHead().append(CKEDITOR.document.createElement('script',{attributes:{type:'text/javascript',src:j}}));var n=a.getData();CKEDITOR.document.getById(d).setValue(n);f=window.setInterval(k(this,h),250);},onHide:function(){window.ooo=undefined;window.int_framsetLoaded=undefined;
+window.framesetLoaded=undefined;window.is_window_opened=false;},contents:[{id:'general',label:a.lang.spellCheck.title,padding:0,elements:[{type:'html',id:'content',style:'width:485;height:380px',html:'<div></div>'}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/wsc/dialogs/ciframe.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/wsc/dialogs/ciframe.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/wsc/dialogs/ciframe.html	(revision 2000)
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html>
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<script type="text/javascript">
+
+function gup( name )
+{
+	name = name.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' ) ;
+	var regexS = '[\\?&]' + name + '=([^&#]*)' ;
+	var regex = new RegExp( regexS ) ;
+	var results = regex.exec( window.location.href ) ;
+
+	if( results )
+		return results[ 1 ] ;
+	else
+		return '' ;
+}
+
+var interval;
+
+function sendData2Master()
+{
+	var destination = window.parent.parent ;
+	try
+	{
+		if ( destination.XDTMaster )
+		{
+			var t = destination.XDTMaster.read( [ gup( 'cmd' ), gup( 'data' ) ] ) ;
+			window.clearInterval( interval ) ;
+		}
+	}
+	catch (e) {}
+}
+
+function onLoad()
+{
+	interval = window.setInterval( sendData2Master, 100 );
+}
+
+</script>
+</head>
+<body onload="onLoad()"><p></p></body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/plugins/wsc/dialogs/tmpFrameset.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/wsc/dialogs/tmpFrameset.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/wsc/dialogs/tmpFrameset.html	(revision 2000)
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html>
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<script type="text/javascript">
+
+function doLoadScript( url )
+{
+	if ( !url )
+		return false ;
+
+	var s = document.createElement( "script" ) ;
+	s.type = "text/javascript" ;
+	s.src = url ;
+	document.getElementsByTagName( "head" )[ 0 ].appendChild( s ) ;
+
+	return true ;
+}
+
+var opener;
+function tryLoad()
+{
+	opener = window.parent;
+
+	// get access to global parameters
+	var oParams = window.opener.oldFramesetPageParams;
+
+	// make frameset rows string prepare
+	var sFramesetRows = ( parseInt( oParams.firstframeh, 10 ) || '30') + ",*," + ( parseInt( oParams.thirdframeh, 10 ) || '150' ) + ',0' ;
+	document.getElementById( 'itFrameset' ).rows = sFramesetRows ;
+
+	// dynamic including init frames and crossdomain transport code
+	// from config sproxy_js_frameset url
+	var addScriptUrl = oParams.sproxy_js_frameset ;
+	doLoadScript( addScriptUrl ) ;
+}
+
+	</script>
+</head>
+
+<frameset id="itFrameset" onload="tryLoad();" border="0" rows="30,*,*,0">
+    <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="2" src="" name="navbar"></frame>
+    <frame scrolling="auto" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="0" src="" name="mid"></frame>
+    <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="bot"></frame>
+    <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="spellsuggestall"></frame>
+</frameset>
+</html>
Index: /trunk/filemanager/tp/ckeditor/plugins/wsc/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/wsc/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/wsc/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('wsc',{init:function(a){var b='checkspell',c=a.addCommand(b,new CKEDITOR.dialogCommand(b));c.modes={wysiwyg:!CKEDITOR.env.opera&&document.domain==window.location.hostname};a.ui.addButton('SpellChecker',{label:a.lang.spellCheck.toolbar,command:b});CKEDITOR.dialog.add(b,this.path+'dialogs/wsc.js');}});CKEDITOR.config.wsc_customerId=CKEDITOR.config.wsc_customerId||'1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk';CKEDITOR.config.wsc_customLoaderScript=CKEDITOR.config.wsc_customLoaderScript||null;
Index: /trunk/filemanager/tp/ckeditor/plugins/pastefromword/dialogs/pastefromword.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/pastefromword/dialogs/pastefromword.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/pastefromword/dialogs/pastefromword.js	(revision 2000)
@@ -0,0 +1,8 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('pastefromword',function(a){return{title:a.lang.pastefromword.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?370:350,minHeight:CKEDITOR.env.ie&&CKEDITOR.env.quirks?270:260,htmlToLoad:'<!doctype html><script type="text/javascript">window.onload = function(){if ( '+CKEDITOR.env.ie+' ) '+'document.body.contentEditable = "true";'+'else '+'document.designMode = "on";'+'var iframe = new window.parent.CKEDITOR.dom.element( frameElement );'+'var dialog = iframe.getCustomData( "dialog" );'+''+'iframe.getFrameDocument().on( "keydown", function( e )\t\t\t\t\t\t{\t\t\t\t\t\t\tif ( e.data.getKeystroke() == 27 )\t\t\t\t\t\t\t\tdialog.hide();\t\t\t\t\t\t});'+'dialog.fire( "iframeAdded", { iframe : iframe } );'+'};'+'</script><style>body { margin: 3px; height: 95%; } </style><body></body>',cleanWord:function(b,c,d,e){c=c.replace(/<\!--[\s\S]*?-->/g,'');c=c.replace(/<o:p>\s*<\/o:p>/g,'');c=c.replace(/<o:p>[\s\S]*?<\/o:p>/g,'&nbsp;');c=c.replace(/\s*mso-[^:]+:[^;"]+;?/gi,'');c=c.replace(/\s*MARGIN: 0(?:cm|in) 0(?:cm|in) 0pt\s*;/gi,'');c=c.replace(/\s*MARGIN: 0(?:cm|in) 0(?:cm|in) 0pt\s*"/gi,'"');c=c.replace(/\s*TEXT-INDENT: 0cm\s*;/gi,'');c=c.replace(/\s*TEXT-INDENT: 0cm\s*"/gi,'"');c=c.replace(/\s*TEXT-ALIGN: [^\s;]+;?"/gi,'"');c=c.replace(/\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi,'"');c=c.replace(/\s*FONT-VARIANT: [^\s;]+;?"/gi,'"');c=c.replace(/\s*tab-stops:[^;"]*;?/gi,'');c=c.replace(/\s*tab-stops:[^"]*/gi,'');if(d){c=c.replace(/\s*face="[^"]*"/gi,'');c=c.replace(/\s*face=[^ >]*/gi,'');c=c.replace(/\s*FONT-FAMILY:[^;"]*;?/gi,'');}c=c.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi,'<$1$3');if(e)c=c.replace(/<(\w[^>]*) style="([^\"]*)"([^>]*)/gi,'<$1$3');c=c.replace(/<STYLE[^>]*>[\s\S]*?<\/STYLE[^>]*>/gi,'');c=c.replace(/<(?:META|LINK)[^>]*>\s*/gi,'');c=c.replace(/\s*style="\s*"/gi,'');c=c.replace(/<SPAN\s*[^>]*>\s*&nbsp;\s*<\/SPAN>/gi,'&nbsp;');c=c.replace(/<SPAN\s*[^>]*><\/SPAN>/gi,'');c=c.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi,'<$1$3');c=c.replace(/<SPAN\s*>([\s\S]*?)<\/SPAN>/gi,'$1');c=c.replace(/<FONT\s*>([\s\S]*?)<\/FONT>/gi,'$1');c=c.replace(/<\\?\?xml[^>]*>/gi,'');c=c.replace(/<w:[^>]*>[\s\S]*?<\/w:[^>]*>/gi,'');c=c.replace(/<\/?\w+:[^>]*>/gi,'');c=c.replace(/<(U|I|STRIKE)>&nbsp;<\/\1>/g,'&nbsp;');c=c.replace(/<H\d>\s*<\/H\d>/gi,'');c=c.replace(/<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none[\s\S]*?<\/\1>/ig,'');c=c.replace(/<(\w[^>]*) language=([^ |>]*)([^>]*)/gi,'<$1$3');c=c.replace(/<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi,'<$1$3');c=c.replace(/<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi,'<$1$3');
+if(b.config.pasteFromWordKeepsStructure){c=c.replace(/<H(\d)([^>]*)>/gi,'<h$1>');c=c.replace(/<(H\d)><FONT[^>]*>([\s\S]*?)<\/FONT><\/\1>/gi,'<$1>$2</$1>');c=c.replace(/<(H\d)><EM>([\s\S]*?)<\/EM><\/\1>/gi,'<$1>$2</$1>');}else{c=c.replace(/<H1([^>]*)>/gi,'<div$1><b><font size="6">');c=c.replace(/<H2([^>]*)>/gi,'<div$1><b><font size="5">');c=c.replace(/<H3([^>]*)>/gi,'<div$1><b><font size="4">');c=c.replace(/<H4([^>]*)>/gi,'<div$1><b><font size="3">');c=c.replace(/<H5([^>]*)>/gi,'<div$1><b><font size="2">');c=c.replace(/<H6([^>]*)>/gi,'<div$1><b><font size="1">');c=c.replace(/<\/H\d>/gi,'</font></b></div>');var f=new RegExp('(<P)([^>]*>[\\s\\S]*?)(</P>)','gi');c=c.replace(f,'<div$2</div>');c=c.replace(/<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g,'');c=c.replace(/<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g,'');c=c.replace(/<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g,'');}return c;},onShow:function(){var g=this;if(CKEDITOR.env.ie)g.getParentEditor().document.getBody().$.contentEditable='false';g.parts.dialog.$.offsetHeight;var b=g.getContentElement('general','editing_area').getElement(),c=CKEDITOR.dom.element.createFromHtml('<iframe src="javascript:void(0)" frameborder="0" allowtransparency="1"></iframe>'),d=g.getParentEditor().lang;c.setStyles({width:'346px',height:'152px','background-color':'white',border:'1px solid black'});c.setCustomData('dialog',g);var e=d.editorTitle.replace('%1',d.pastefromword.title);if(CKEDITOR.env.ie)b.setHtml('<legend style="position:absolute;top:-1000000px;left:-1000000px;">'+CKEDITOR.tools.htmlEncode(e)+'</legend>');else{b.setHtml('');b.setAttributes({role:'region',title:e});c.setAttributes({role:'region',title:' '});}b.append(c);if(CKEDITOR.env.ie)b.setStyle('height',c.$.offsetHeight+2+'px');if(CKEDITOR.env.isCustomDomain()){CKEDITOR._cke_htmlToLoad=g.definition.htmlToLoad;c.setAttribute('src','javascript:void( (function(){document.open();document.domain="'+document.domain+'";'+'document.write( window.parent.CKEDITOR._cke_htmlToLoad );'+'delete window.parent.CKEDITOR._cke_htmlToLoad;'+'document.close();'+'})() )');}else{var f=c.$.contentWindow.document;f.open();f.write(g.definition.htmlToLoad);f.close();}},onOk:function(){var b=this.getContentElement('general','editing_area').getElement(),c=b.getElementsByTag('iframe').getItem(0),d=this.getParentEditor(),e=this.definition.cleanWord(d,c.$.contentWindow.document.body.innerHTML,this.getValueOf('general','ignoreFontFace'),this.getValueOf('general','removeStyle'));setTimeout(function(){d.insertHtml(e);},0);},onHide:function(){if(CKEDITOR.env.ie)this.getParentEditor().document.getBody().$.contentEditable='true';
+},onLoad:function(){if((CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&(a.lang.dir=='rtl'))this.parts.contents.setStyle('overflow','hidden');},contents:[{id:'general',label:a.lang.pastefromword.title,elements:[{type:'html',style:'white-space:normal;width:346px;display:block',onShow:function(){if(CKEDITOR.env.webkit)this.getElement().getAscendant('table').setStyle('table-layout','fixed');},html:a.lang.pastefromword.advice},{type:'html',id:'editing_area',style:'width: 100%; height: 100%;',html:'<fieldset></fieldset>',focus:function(){var b=this.getElement(),c=b.getElementsByTag('iframe');if(c.count()<1)return;c=c.getItem(0);setTimeout(function(){c.$.contentWindow.focus();},500);}},{type:'vbox',padding:0,children:[{type:'checkbox',id:'ignoreFontFace',label:a.lang.pastefromword.ignoreFontFace,'default':a.config.pasteFromWordIgnoreFontFace},{type:'checkbox',id:'removeStyle',label:a.lang.pastefromword.removeStyle,'default':a.config.pasteFromWordRemoveStyle}]}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/pastefromword/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/pastefromword/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/pastefromword/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('pastefromword',{init:function(a){a.addCommand('pastefromword',new CKEDITOR.dialogCommand('pastefromword'));a.ui.addButton('PasteFromWord',{label:a.lang.pastefromword.toolbar,command:'pastefromword'});CKEDITOR.dialog.add('pastefromword',this.path+'dialogs/pastefromword.js');}});CKEDITOR.config.pasteFromWordIgnoreFontFace=true;CKEDITOR.config.pasteFromWordRemoveStyle=false;CKEDITOR.config.pasteFromWordKeepsStructure=false;
Index: /trunk/filemanager/tp/ckeditor/plugins/print/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/print/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/print/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('print',{init:function(a){var b='print',c=a.addCommand(b,CKEDITOR.plugins.print);a.ui.addButton('Print',{label:a.lang.print,command:b});}});CKEDITOR.plugins.print={exec:function(a){if(CKEDITOR.env.opera)return;else if(CKEDITOR.env.gecko)a.window.$.print();else a.document.$.execCommand('Print');},canUndo:false,modes:{wysiwyg:!CKEDITOR.env.opera}};
Index: /trunk/filemanager/tp/ckeditor/plugins/templates/dialogs/templates.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/templates/dialogs/templates.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/templates/dialogs/templates.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=CKEDITOR.document,b='cke'+CKEDITOR.tools.getNextNumber();function c(f,g){var h=a.getById(b);h.setHtml('');for(var i=0;i<g.length;i++){var j=CKEDITOR.getTemplates(g[i]),k=j.imagesPath,l=j.templates;for(var m=0;m<l.length;m++){var n=l[m];h.append(d(f,n,k));}}};function d(f,g,h){var i=a.createElement('div');i.setAttribute('class','cke_tpl_item');var j='<table style="width:350px;" class="cke_tpl_preview"><tr>';if(g.image&&h)j+='<td class="cke_tpl_preview_img"><img src="'+CKEDITOR.getUrl(h+g.image)+'"></td>';j+='<td style="white-space:normal;"><span class="cke_tpl_title">'+g.title+'</span><br/>';if(g.description)j+='<span>'+g.description+'</span>';j+='</td></tr></table>';i.setHtml(j);i.on('mouseover',function(){i.addClass('cke_tpl_hover');});i.on('mouseout',function(){i.removeClass('cke_tpl_hover');});i.on('click',function(){e(f,g.html);});return i;};function e(f,g){var h=CKEDITOR.dialog.getCurrent(),i=h.getValueOf('selectTpl','chkInsertOpt');if(i)f.setData(g);else f.insertHtml(g);h.hide();};CKEDITOR.dialog.add('templates',function(f){CKEDITOR.skins.load(f,'templates');var g=false;return{title:f.lang.templates.title,minWidth:CKEDITOR.env.ie?440:400,minHeight:340,contents:[{id:'selectTpl',label:f.lang.templates.title,elements:[{type:'vbox',padding:5,children:[{type:'html',html:'<span>'+f.lang.templates.selectPromptMsg+'</span>'},{type:'html',html:'<div id="'+b+'" class="cke_tpl_list">'+'<div class="cke_tpl_loading"><span></span></div>'+'</div>'},{id:'chkInsertOpt',type:'checkbox',label:f.lang.templates.insertOption,'default':f.config.templates_replaceContent}]}]}],buttons:[CKEDITOR.dialog.cancelButton],onShow:function(){CKEDITOR.loadTemplates(f.config.templates_files,function(){var h=f.config.templates.split(',');if(h.length)c(f,h);else{var i=a.getById(b);i.setHtml('<div class="cke_tpl_empty"><span>'+f.lang.templates.emptyListMsg+'</span>'+'</div>');}});}};});})();
Index: /trunk/filemanager/tp/ckeditor/plugins/templates/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/templates/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/templates/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){CKEDITOR.plugins.add('templates',{requires:['dialog'],init:function(c){CKEDITOR.dialog.add('templates',CKEDITOR.getUrl(this.path+'dialogs/templates.js'));c.addCommand('templates',new CKEDITOR.dialogCommand('templates'));c.ui.addButton('Templates',{label:c.lang.templates.button,command:'templates'});}});var a={},b={};CKEDITOR.addTemplates=function(c,d){a[c]=d;};CKEDITOR.getTemplates=function(c){return a[c];};CKEDITOR.loadTemplates=function(c,d){var e=[];for(var f=0;f<c.length;f++)if(!b[c[f]]){e.push(c[f]);b[c[f]]=1;}if(e.length>0)CKEDITOR.scriptLoader.load(e,d);else setTimeout(d,0);};})();CKEDITOR.config.templates='default';CKEDITOR.config.templates_files=[CKEDITOR.getUrl('plugins/templates/templates/default.js')];CKEDITOR.config.templates_replaceContent=true;
Index: /trunk/filemanager/tp/ckeditor/plugins/templates/templates/default.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/templates/templates/default.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/templates/templates/default.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.addTemplates('default',{imagesPath:CKEDITOR.getUrl(CKEDITOR.plugins.getPath('templates')+'templates/images/'),templates:[{title:'Image and Title',image:'template1.gif',description:'One main image with a title and text that surround the image.',html:'<h3><img style="margin-right: 10px" height="100" width="100" align="left"/>Type the title here</h3><p>Type the text here</p>'},{title:'Strange Template',image:'template2.gif',description:'A template that defines two colums, each one with a title, and some text.',html:'<table cellspacing="0" cellpadding="0" style="width:100%" border="0"><tr><td style="width:50%"><h3>Title 1</h3></td><td></td><td style="width:50%"><h3>Title 2</h3></td></tr><tr><td>Text 1</td><td></td><td>Text 2</td></tr></table><p>More text goes here.</p>'},{title:'Text and Table',image:'template3.gif',description:'A title with some text and a table.',html:'<div style="width: 80%"><h3>Title goes here</h3><table style="float: right" cellspacing="0" cellpadding="0" style="width:150px" border="1"><caption style="border:solid 1px black"><strong>Table title</strong></caption></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr></table><p>Type the text here</p></div>'}]});
Index: /trunk/filemanager/tp/ckeditor/plugins/resize/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/resize/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/resize/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('resize',{init:function(a){var b=a.config;if(b.resize_enabled){var c=null,d,e;function f(i){var j=i.data.$.screenX-d.x,k=i.data.$.screenY-d.y,l=e.width+j*(a.lang.dir=='rtl'?-1:1),m=e.height+k;a.resize(Math.max(b.resize_minWidth,Math.min(l,b.resize_maxWidth)),Math.max(b.resize_minHeight,Math.min(m,b.resize_maxHeight)));};function g(i){CKEDITOR.document.removeListener('mousemove',f);CKEDITOR.document.removeListener('mouseup',g);if(a.document){a.document.removeListener('mousemove',f);a.document.removeListener('mouseup',g);}};var h=CKEDITOR.tools.addFunction(function(i){if(!c)c=a.getResizable();e={width:c.$.offsetWidth||0,height:c.$.offsetHeight||0};d={x:i.screenX,y:i.screenY};CKEDITOR.document.on('mousemove',f);CKEDITOR.document.on('mouseup',g);if(a.document){a.document.on('mousemove',f);a.document.on('mouseup',g);}});a.on('themeSpace',function(i){if(i.data.space=='bottom')i.data.html+='<div class="cke_resizer" title="'+CKEDITOR.tools.htmlEncode(a.lang.resize)+'"'+' onmousedown="CKEDITOR.tools.callFunction('+h+', event)"'+'></div>';},a,null,100);}}});CKEDITOR.config.resize_minWidth=750;CKEDITOR.config.resize_minHeight=250;CKEDITOR.config.resize_maxWidth=3000;CKEDITOR.config.resize_maxHeight=3000;CKEDITOR.config.resize_enabled=true;
Index: /trunk/filemanager/tp/ckeditor/plugins/smiley/dialogs/smiley.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/smiley/dialogs/smiley.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/smiley/dialogs/smiley.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('smiley',function(a){var b=a.config,c=b.smiley_images,d=8,e,f,g=function(k){var l=k.data.getTarget(),m=l.getName();if(m=='td')l=l.getChild([0,0]);else if(m=='a')l=l.getChild(0);else if(m!='img')return;var n=l.getAttribute('cke_src'),o=l.getAttribute('title'),p=a.document.createElement('img',{attributes:{src:n,_cke_saved_src:n,title:o,alt:o}});a.insertElement(p);f.hide();},h=CKEDITOR.tools.addFunction(function(k,l){k=new CKEDITOR.dom.event(k);l=new CKEDITOR.dom.element(l);var m,n,o=k.getKeystroke();switch(o){case 39:if(m=l.getParent().getNext()){n=m.getChild(0);n.focus();}k.preventDefault();break;case 37:if(m=l.getParent().getPrevious()){n=m.getChild(0);n.focus();}k.preventDefault();break;case 38:if(m=l.getParent().getParent().getPrevious()){n=m.getChild([l.getParent().getIndex(),0]);n.focus();}k.preventDefault();break;case 40:if(m=l.getParent().getParent().getNext()){n=m.getChild([l.getParent().getIndex(),0]);if(n)n.focus();}k.preventDefault();break;case 32:g({data:k});k.preventDefault();break;case 9:if(m=l.getParent().getNext()){n=m.getChild(0);n.focus();k.preventDefault(true);}else if(m=l.getParent().getParent().getNext()){n=m.getChild([0,0]);if(n)n.focus();k.preventDefault(true);}break;case CKEDITOR.SHIFT+9:if(m=l.getParent().getPrevious()){n=m.getChild(0);n.focus();k.preventDefault(true);}else if(m=l.getParent().getParent().getPrevious()){n=m.getLast().getChild(0);n.focus();k.preventDefault(true);}break;default:return;}}),i=['<table cellspacing="2" cellpadding="2"',CKEDITOR.env.ie&&CKEDITOR.env.quirks?' style="position:absolute;"':'','><tbody>'];for(e=0;e<c.length;e++){if(e%d===0)i.push('<tr>');i.push('<td class="cke_dark_background cke_hand cke_centered" style="vertical-align: middle;"><a href="javascript:void(0)" class="cke_smile" tabindex="-1" onkeydown="CKEDITOR.tools.callFunction( ',h,', event, this );">','<img class="hand" title="',b.smiley_descriptions[e],'" cke_src="',CKEDITOR.tools.htmlEncode(b.smiley_path+c[e]),'" alt="',b.smiley_descriptions[e],'"',' src="',CKEDITOR.tools.htmlEncode(b.smiley_path+c[e]),'"',CKEDITOR.env.ie?" onload=\"this.setAttribute('width', 2); this.removeAttribute('width');\" ":'','></a>','</td>');if(e%d==d-1)i.push('</tr>');}if(e<d-1){for(;e<d-1;e++)i.push('<td></td>');i.push('</tr>');}i.push('</tbody></table>');var j={type:'html',html:i.join(''),onLoad:function(k){f=k.sender;},focus:function(){var k=this.getElement().getChild([0,0,0,0]);k.focus();},onClick:g,style:'width: 100%; height: 100%; border-collapse: separate;'};
+return{title:a.lang.smiley.title,minWidth:270,minHeight:120,contents:[{id:'tab1',label:'',title:'',expand:true,padding:0,elements:[j]}],buttons:[CKEDITOR.dialog.cancelButton]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/smiley/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/smiley/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/smiley/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('smiley',{requires:['dialog'],init:function(a){a.addCommand('smiley',new CKEDITOR.dialogCommand('smiley'));a.ui.addButton('Smiley',{label:a.lang.smiley.toolbar,command:'smiley'});CKEDITOR.dialog.add('smiley',this.path+'dialogs/smiley.js');}});CKEDITOR.config.smiley_path=CKEDITOR.basePath+'plugins/smiley/images/';CKEDITOR.config.smiley_images=['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'];CKEDITOR.config.smiley_descriptions=[':)',':(',';)',':D',':/',':P','','','','','','','',';(','','','','','',':kiss',''];
Index: /trunk/filemanager/tp/ckeditor/plugins/toolbar/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/toolbar/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/toolbar/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=function(){this.toolbars=[];this.focusCommandExecuted=false;};a.prototype.focus=function(){for(var c=0,d;d=this.toolbars[c++];)for(var e=0,f;f=d.items[e++];)if(f.focus){f.focus();return;}};var b={toolbarFocus:{modes:{wysiwyg:1,source:1},exec:function(c){if(c.toolbox){c.toolbox.focusCommandExecuted=true;if(CKEDITOR.env.ie)setTimeout(function(){c.toolbox.focus();},100);else c.toolbox.focus();}}}};CKEDITOR.plugins.add('toolbar',{init:function(c){var d=function(e,f){switch(f){case 39:case 9:while((e=e.next||e.toolbar.next&&e.toolbar.next.items[0])&&(!e.focus)){}if(e)e.focus();else c.toolbox.focus();return false;case 37:case CKEDITOR.SHIFT+9:while((e=e.previous||e.toolbar.previous&&e.toolbar.previous.items[e.toolbar.previous.items.length-1])&&(!e.focus)){}if(e)e.focus();else{var g=c.toolbox.toolbars[c.toolbox.toolbars.length-1].items;g[g.length-1].focus();}return false;case 27:c.focus();return false;case 13:case 32:e.execute();return false;}return true;};c.on('themeSpace',function(e){if(e.data.space==c.config.toolbarLocation){c.toolbox=new a();var f=['<div class="cke_toolbox"'],g=c.config.toolbarStartupExpanded,h;f.push(g?'>':' style="display:none">');var i=c.toolbox.toolbars,j=c.config.toolbar instanceof Array?c.config.toolbar:c.config['toolbar_'+c.config.toolbar];for(var k=0;k<j.length;k++){var l=j[k];if(!l)continue;var m='cke_'+CKEDITOR.tools.getNextNumber(),n={id:m,items:[]};if(h){f.push('</div>');h=0;}if(l==='/'){f.push('<div class="cke_break"></div>');continue;}f.push('<span id="',m,'" class="cke_toolbar"><span class="cke_toolbar_start"></span>');var o=i.push(n)-1;if(o>0){n.previous=i[o-1];n.previous.next=n;}for(var p=0;p<l.length;p++){var q,r=l[p];if(r=='-')q=CKEDITOR.ui.separator;else q=c.ui.create(r);if(q){if(q.canGroup){if(!h){f.push('<span class="cke_toolgroup">');h=1;}}else if(h){f.push('</span>');h=0;}var s=q.render(c,f);o=n.items.push(s)-1;if(o>0){s.previous=n.items[o-1];s.previous.next=s;}s.toolbar=n;s.onkey=d;s.onfocus=function(){if(!c.toolbox.focusCommandExecuted)c.focus();};}}if(h){f.push('</span>');h=0;}f.push('<span class="cke_toolbar_end"></span></span>');}f.push('</div>');if(c.config.toolbarCanCollapse){var t=CKEDITOR.tools.addFunction(function(){c.execCommand('toolbarCollapse');}),u='cke_'+CKEDITOR.tools.getNextNumber();c.addCommand('toolbarCollapse',{exec:function(v){var w=CKEDITOR.document.getById(u),x=w.getPrevious(),y=v.getThemeSpace('contents'),z=x.getParent(),A=parseInt(y.$.style.height,10),B=z.$.offsetHeight;if(x.isVisible()){x.hide();
+w.addClass('cke_toolbox_collapser_min');}else{x.show();w.removeClass('cke_toolbox_collapser_min');}var C=z.$.offsetHeight-B;y.setStyle('height',A-C+'px');},modes:{wysiwyg:1,source:1}});f.push('<a id="'+u+'" class="cke_toolbox_collapser');if(!g)f.push(' cke_toolbox_collapser_min');f.push('" onclick="CKEDITOR.tools.callFunction('+t+')"></a>');}e.data.html+=f.join('');}});c.addCommand('toolbarFocus',b.toolbarFocus);}});})();CKEDITOR.ui.separator={render:function(a,b){b.push('<span class="cke_separator"></span>');return{};}};CKEDITOR.config.toolbarLocation='top';CKEDITOR.config.toolbar_Basic=[['Bold','Italic','-','NumberedList','BulletedList','-','Link','Unlink','-','About']];CKEDITOR.config.toolbar_Full=[['Source','-','Save','NewPage','Preview','-','Templates'],['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print','SpellChecker','Scayt'],['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],'/',['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],['Link','Unlink','Anchor'],['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],'/',['Styles','Format','Font','FontSize'],['TextColor','BGColor'],['Maximize','ShowBlocks','-','About']];CKEDITOR.config.toolbar='Full';CKEDITOR.config.toolbarCanCollapse=true;CKEDITOR.config.toolbarStartupExpanded=true;
Index: /trunk/filemanager/tp/ckeditor/plugins/popup/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/popup/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/popup/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('popup');CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{popup:function(a,b,c){b=b||'80%';c=c||'70%';if(typeof b=='string'&&b.length>1&&b.substr(b.length-1,1)=='%')b=parseInt(window.screen.width*parseInt(b,10)/100,10);if(typeof c=='string'&&c.length>1&&c.substr(c.length-1,1)=='%')c=parseInt(window.screen.height*parseInt(c,10)/100,10);if(b<640)b=640;if(c<420)c=420;var d=parseInt((window.screen.height-c)/(2),10),e=parseInt((window.screen.width-b)/(2),10),f='location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,width='+b+',height='+c+',top='+d+',left='+e,g=window.open('',null,f,true);if(!g)return false;try{g.moveTo(e,d);g.resizeTo(b,c);g.focus();g.location.href=a;}catch(h){g=window.open(a,null,f,true);}return true;}});
Index: /trunk/filemanager/tp/ckeditor/plugins/richcombo/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/richcombo/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/richcombo/plugin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('richcombo',{requires:['floatpanel','listblock','button'],beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_RICHCOMBO,CKEDITOR.ui.richCombo.handler);}});CKEDITOR.UI_RICHCOMBO=3;CKEDITOR.ui.richCombo=CKEDITOR.tools.createClass({$:function(a){var c=this;CKEDITOR.tools.extend(c,a,{title:a.label,modes:{wysiwyg:1}});var b=c.panel||{};delete c.panel;c.id=CKEDITOR.tools.getNextNumber();c.document=b&&b.parent&&b.parent.getDocument()||CKEDITOR.document;b.className=(b.className||'')+(' cke_rcombopanel');c._={panelDefinition:b,items:{},state:CKEDITOR.TRISTATE_OFF};},statics:{handler:{create:function(a){return new CKEDITOR.ui.richCombo(a);}}},proto:{renderHtml:function(a){var b=[];this.render(a,b);return b.join('');},render:function(a,b){var c='cke_'+this.id,d=CKEDITOR.tools.addFunction(function(g){var j=this;var h=j._;if(h.state==CKEDITOR.TRISTATE_DISABLED)return;j.createPanel(a);if(h.on){h.panel.hide();return;}if(!h.committed){h.list.commit();h.committed=1;}var i=j.getValue();if(i)h.list.mark(i);else h.list.unmarkAll();h.panel.showBlock(j.id,new CKEDITOR.dom.element(g),4);},this),e={id:c,combo:this,focus:function(){var g=CKEDITOR.document.getById(c).getChild(1);g.focus();},execute:d};a.on('mode',function(){this.setState(this.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);},this);var f=CKEDITOR.tools.addFunction(function(g,h){g=new CKEDITOR.dom.event(g);var i=g.getKeystroke();switch(i){case 13:case 32:case 40:CKEDITOR.tools.callFunction(d,h);break;default:e.onkey(e,i);}g.preventDefault();});b.push('<span class="cke_rcombo">','<span id=',c);if(this.className)b.push(' class="',this.className,' cke_off"');b.push('><span class=cke_label>',this.label,'</span><a hidefocus=true title="',this.title,'" tabindex="-1" href="javascript:void(\'',this.label,"')\"");if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)b.push(' onkeypress="return false;"');if(CKEDITOR.env.gecko)b.push(' onblur="this.style.cssText = this.style.cssText;"');b.push(' onkeydown="CKEDITOR.tools.callFunction( ',f,', event, this );" onclick="CKEDITOR.tools.callFunction(',d,', this); return false;"><span><span class="cke_accessibility">'+(this.voiceLabel?this.voiceLabel+' ':'')+'</span>'+'<span id="'+c+'_text" class="cke_text cke_inline_label">'+this.label+'</span>'+'</span>'+'<span class=cke_openbutton></span>'+'</a>'+'</span>'+'</span>');if(this.onRender)this.onRender();return e;},createPanel:function(a){if(this._.panel)return;var b=this._.panelDefinition,c=b.parent||CKEDITOR.document.getBody(),d=new CKEDITOR.ui.floatPanel(a,c,b),e=d.addListBlock(this.id,this.multiSelect),f=this;
+d.onShow=function(){if(f.className)this.element.getFirst().addClass(f.className+'_panel');f.setState(CKEDITOR.TRISTATE_ON);e.focus(!f.multiSelect&&f.getValue());f._.on=1;if(f.onOpen)f.onOpen();};d.onHide=function(){if(f.className)this.element.getFirst().removeClass(f.className+'_panel');f.setState(CKEDITOR.TRISTATE_OFF);f._.on=0;if(f.onClose)f.onClose();};d.onEscape=function(){d.hide();f.document.getById('cke_'+f.id).getFirst().getNext().focus();};e.onClick=function(g,h){f.document.getWindow().focus();if(f.onClick)f.onClick.call(f,g,h);if(h)f.setValue(g,f._.items[g]);else f.setValue('');d.hide();};this._.panel=d;this._.list=e;d.getBlock(this.id).onHide=function(){f._.on=0;f.setState(CKEDITOR.TRISTATE_OFF);};if(this.init)this.init();},setValue:function(a,b){var d=this;d._.value=a;var c=d.document.getById('cke_'+d.id+'_text');if(!a){b=d.label;c.addClass('cke_inline_label');}else c.removeClass('cke_inline_label');c.setHtml(typeof b!='undefined'?b:a);},getValue:function(){return this._.value||'';},unmarkAll:function(){this._.list.unmarkAll();},mark:function(a){this._.list.mark(a);},hideItem:function(a){this._.list.hideItem(a);},hideGroup:function(a){this._.list.hideGroup(a);},showAll:function(){this._.list.showAll();},add:function(a,b,c){this._.items[a]=c||a;this._.list.add(a,b,c);},startGroup:function(a){this._.list.startGroup(a);},commit:function(){this._.list.commit();},setState:function(a){var b=this;if(b._.state==a)return;b.document.getById('cke_'+b.id).setState(a);b._.state=a;}}});CKEDITOR.ui.prototype.addRichCombo=function(a,b){this.add(a,CKEDITOR.UI_RICHCOMBO,b);};
Index: /trunk/filemanager/tp/ckeditor/plugins/font/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/font/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/font/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(b,c,d,e,f,g,h){var i=b.config,j=f.split(';'),k=[],l={};for(var m=0;m<j.length;m++){var n={},o=j[m].split('/'),p=j[m]=o[0];n[d]=k[m]=o[1]||p;l[p]=new CKEDITOR.style(h,n);}b.ui.addRichCombo(c,{label:e.label,title:e.panelTitle,voiceLabel:e.voiceLabel,className:'cke_'+(d=='size'?'fontSize':'font'),multiSelect:false,panel:{css:[CKEDITOR.getUrl(b.skinPath+'editor.css')].concat(i.contentsCss),voiceLabel:e.panelVoiceLabel},init:function(){this.startGroup(e.panelTitle);for(var q=0;q<j.length;q++){var r=j[q];this.add(r,'<span style="font-'+d+':'+k[q]+'">'+r+'</span>',r);}},onClick:function(q){b.focus();b.fire('saveSnapshot');var r=l[q];if(this.getValue()==q)r.remove(b.document);else r.apply(b.document);b.fire('saveSnapshot');},onRender:function(){b.on('selectionChange',function(q){var r=this.getValue(),s=q.data.path,t=s.elements;for(var u=0,v;u<t.length;u++){v=t[u];for(var w in l)if(l[w].checkElementRemovable(v,true)){if(w!=r)this.setValue(w);return;}}this.setValue('',g);},this);}});};CKEDITOR.plugins.add('font',{requires:['richcombo','styles'],init:function(b){var c=b.config;a(b,'Font','family',b.lang.font,c.font_names,c.font_defaultLabel,c.font_style);a(b,'FontSize','size',b.lang.fontSize,c.fontSize_sizes,c.fontSize_defaultLabel,c.fontSize_style);}});})();CKEDITOR.config.font_names='Arial/Arial, Helvetica, sans-serif;Comic Sans MS/Comic Sans MS, cursive;Courier New/Courier New, Courier, monospace;Georgia/Georgia, serif;Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;Tahoma/Tahoma, Geneva, sans-serif;Times New Roman/Times New Roman, Times, serif;Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;Verdana/Verdana, Geneva, sans-serif';CKEDITOR.config.font_defaultLabel='';CKEDITOR.config.font_style={element:'span',styles:{'font-family':'#(family)'},overrides:[{element:'font',attributes:{face:null}}]};CKEDITOR.config.fontSize_sizes='8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px';CKEDITOR.config.fontSize_defaultLabel='';CKEDITOR.config.fontSize_style={element:'span',styles:{'font-size':'#(size)'},overrides:[{element:'font',attributes:{size:null}}]};
Index: /trunk/filemanager/tp/ckeditor/plugins/tabletools/dialogs/tableCell.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/tabletools/dialogs/tableCell.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/tabletools/dialogs/tableCell.js	(revision 2000)
@@ -0,0 +1,8 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('cellProperties',function(a){var b=a.lang.table,c=b.cell,d=a.lang.common,e=CKEDITOR.dialog.validate,f=/^(\d+(?:\.\d+)?)(px|%)$/,g=/^(\d+(?:\.\d+)?)px$/,h=CKEDITOR.tools.bind;function i(){return{type:'html',html:'&nbsp;'};};function j(k,l){var m=function(){p(this);l(this);},n=function(){p(this);},o=function(q){q.on('ok',m);q.on('cancel',n);},p=function(q){q.removeListener('ok',m);q.removeListener('cancel',n);};a.execCommand(k);if(a._.storedDialogs.colordialog)o(a._.storedDialogs.colordialog);else CKEDITOR.on('dialogDefinition',function(q){if(q.data.name!=k)return;var r=q.data.definition;q.removeListener();r.onLoad=CKEDITOR.tools.override(r.onLoad,function(s){return function(){o(this);r.onLoad=s;if(typeof s=='function')s.call(this);};});});};return{title:c.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?550:480,minHeight:CKEDITOR.env.ie?CKEDITOR.env.quirks?180:150:140,contents:[{id:'info',label:c.title,accessKey:'I',elements:[{type:'hbox',widths:['40%','5%','40%'],children:[{type:'vbox',padding:0,children:[{type:'hbox',widths:['70%','30%'],children:[{type:'text',id:'width',label:b.width,widths:['71%','29%'],labelLayout:'horizontal',validate:e.number(c.invalidWidth),setup:function(k){var l=f.exec(k.$.style.width);if(l)this.setValue(l[1]);},commit:function(k){var l=this.getDialog().getValueOf('info','widthType');if(this.getValue()!=='')k.$.style.width=this.getValue()+l;else k.$.style.width='';},'default':''},{type:'select',id:'widthType',labelLayout:'horizontal',widths:['0%','100%'],label:'','default':'px',items:[[b.widthPx,'px'],[b.widthPc,'%']],setup:function(k){var l=f.exec(k.$.style.width);if(l)this.setValue(l[2]);}}]},{type:'hbox',widths:['70%','30%'],children:[{type:'text',id:'height',label:b.height,'default':'',widths:['71%','29%'],labelLayout:'horizontal',validate:e.number(c.invalidHeight),setup:function(k){var l=g.exec(k.$.style.height);if(l)this.setValue(l[1]);},commit:function(k){if(this.getValue()!=='')k.$.style.height=this.getValue()+'px';else k.$.style.height='';}},{type:'html',html:b.widthPx}]},i(),{type:'select',id:'wordWrap',labelLayout:'horizontal',label:c.wordWrap,widths:['50%','50%'],'default':'yes',items:[[c.yes,'yes'],[c.no,'no']],commit:function(k){if(this.getValue()=='no')k.setAttribute('noWrap','nowrap');else k.removeAttribute('noWrap');}},i(),{type:'select',id:'hAlign',labelLayout:'horizontal',label:c.hAlign,widths:['50%','50%'],'default':'',items:[[d.notSet,''],[b.alignLeft,'left'],[b.alignCenter,'center'],[b.alignRight,'right']],setup:function(k){this.setValue(k.getAttribute('align')||'');
+},commit:function(k){if(this.getValue())k.setAttribute('align',this.getValue());else k.removeAttribute('align');}},{type:'select',id:'vAlign',labelLayout:'horizontal',label:c.vAlign,widths:['50%','50%'],'default':'',items:[[d.notSet,''],[c.alignTop,'top'],[c.alignMiddle,'middle'],[c.alignBottom,'bottom'],[c.alignBaseline,'baseline']],setup:function(k){this.setValue(k.getAttribute('vAlign')||'');},commit:function(k){if(this.getValue())k.setAttribute('vAlign',this.getValue());else k.removeAttribute('vAlign');}}]},i(),{type:'vbox',padding:0,children:[{type:'select',id:'cellType',label:c.cellType,labelLayout:'horizontal',widths:['50%','50%'],'default':'td',items:[[c.data,'td'],[c.header,'th']],setup:function(k){this.setValue(k.getName());},commit:function(k){k.renameNode(this.getValue());}},i(),{type:'text',id:'rowSpan',label:c.rowSpan,labelLayout:'horizontal',widths:['50%','50%'],'default':'',validate:e.integer(c.invalidRowSpan),setup:function(k){this.setValue(k.getAttribute('rowSpan')||'');},commit:function(k){if(this.getValue())k.setAttribute('rowSpan',this.getValue());else k.removeAttribute('rowSpan');}},{type:'text',id:'colSpan',label:c.colSpan,labelLayout:'horizontal',widths:['50%','50%'],'default':'',validate:e.integer(c.invalidColSpan),setup:function(k){this.setValue(k.getAttribute('colSpan')||'');},commit:function(k){if(this.getValue())k.setAttribute('colSpan',this.getValue());else k.removeAttribute('colSpan');}},i(),{type:'hbox',padding:0,widths:['80%','20%'],children:[{type:'text',id:'bgColor',label:c.bgColor,labelLayout:'horizontal',widths:['70%','30%'],'default':'',setup:function(k){this.setValue(k.getAttribute('bgColor')||'');},commit:function(k){if(this.getValue())k.setAttribute('bgColor',this.getValue());else k.removeAttribute('bgColor');}},{type:'button',id:'bgColorChoose',label:c.chooseColor,style:'margin-left: 10px',onClick:function(){var k=this;j('colordialog',function(l){k.getDialog().getContentElement('info','bgColor').setValue(l.getContentElement('picker','selectedColor').getValue());});}}]},i(),{type:'hbox',padding:0,widths:['80%','20%'],children:[{type:'text',id:'borderColor',label:c.borderColor,labelLayout:'horizontal',widths:['70%','30%'],'default':'',setup:function(k){this.setValue(k.getStyle('border-color')||'');},commit:function(k){if(this.getValue())k.setStyle('border-color',this.getValue());else k.removeStyle('border-color');}},{type:'button',id:'borderColorChoose',label:c.chooseColor,style:'margin-left: 10px',onClick:function(){var k=this;
+j('colordialog',function(l){k.getDialog().getContentElement('info','borderColor').setValue(l.getContentElement('picker','selectedColor').getValue());});}}]}]}]}]}],onShow:function(){var k=this;k.cells=CKEDITOR.plugins.tabletools.getSelectedCells(k._.editor.getSelection());k.setupContent(k.cells[0]);},onOk:function(){var k=this.cells;for(var l=0;l<k.length;l++)this.commitContent(k[l]);}};});
Index: /trunk/filemanager/tp/ckeditor/plugins/tabletools/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/tabletools/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/tabletools/plugin.js	(revision 2000)
@@ -0,0 +1,9 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(n,o){if(CKEDITOR.env.ie)n.removeAttribute(o);else delete n[o];};var b=/^(?:td|th)$/;function c(n){var o=n.createBookmarks(),p=n.getRanges(),q=[],r={};function s(A){if(q.length>0)return;if(A.type==CKEDITOR.NODE_ELEMENT&&b.test(A.getName())&&!A.getCustomData('selected_cell')){CKEDITOR.dom.element.setMarker(r,A,'selected_cell',true);q.push(A);}};for(var t=0;t<p.length;t++){var u=p[t];if(u.collapsed){var v=u.getCommonAncestor(),w=v.getAscendant('td',true)||v.getAscendant('th',true);if(w)q.push(w);}else{var x=new CKEDITOR.dom.walker(u),y;x.guard=s;while(y=x.next()){var z=y.getParent();if(z&&b.test(z.getName())&&!z.getCustomData('selected_cell')){CKEDITOR.dom.element.setMarker(r,z,'selected_cell',true);q.push(z);}}}}CKEDITOR.dom.element.clearAllMarkers(r);n.selectBookmarks(o);return q;};function d(n){var o=new CKEDITOR.dom.element(n),p=(o.getName()=='table'?n:o.getAscendant('table')).$,q=p.rows,r=-1,s=[];for(var t=0;t<q.length;t++){r++;if(!s[r])s[r]=[];var u=-1;for(var v=0;v<q[t].cells.length;v++){var w=q[t].cells[v];u++;while(s[r][u])u++;var x=isNaN(w.colSpan)?1:w.colSpan,y=isNaN(w.rowSpan)?1:w.rowSpan;for(var z=0;z<y;z++){if(!s[r+z])s[r+z]=[];for(var A=0;A<x;A++)s[r+z][u+A]=q[t].cells[v];}u+=x-1;}}return s;};function e(n,o){var p=CKEDITOR.env.ie?'_cke_rowspan':'rowSpan';for(var q=0;q<n.length;q++)for(var r=0;r<n[q].length;r++){var s=n[q][r];if(s.parentNode)s.parentNode.removeChild(s);s.colSpan=s[p]=1;}var t=0;for(q=0;q<n.length;q++)for(r=0;r<n[q].length;r++){s=n[q][r];if(!s)continue;if(r>t)t=r;if(s._cke_colScanned)continue;if(n[q][r-1]==s)s.colSpan++;if(n[q][r+1]!=s)s._cke_colScanned=1;}for(q=0;q<=t;q++)for(r=0;r<n.length;r++){if(!n[r])continue;s=n[r][q];if(!s||s._cke_rowScanned)continue;if(n[r-1]&&n[r-1][q]==s)s[p]++;if(!n[r+1]||n[r+1][q]!=s)s._cke_rowScanned=1;}for(q=0;q<n.length;q++)for(r=0;r<n[q].length;r++){s=n[q][r];a(s,'_cke_colScanned');a(s,'_cke_rowScanned');}for(q=0;q<n.length;q++){var u=o.ownerDocument.createElement('tr');for(r=0;r<n[q].length;){s=n[q][r];if(n[q-1]&&n[q-1][r]==s){r+=s.colSpan;continue;}u.appendChild(s);if(p!='rowSpan'){s.rowSpan=s[p];s.removeAttribute(p);}r+=s.colSpan;if(s.colSpan==1)s.removeAttribute('colSpan');if(s.rowSpan==1)s.removeAttribute('rowSpan');}if(CKEDITOR.env.ie)o.rows[q].replaceNode(u);else{var v=new CKEDITOR.dom.element(o.rows[q]),w=new CKEDITOR.dom.element(u);v.setHtml('');w.moveChildren(v);}}};function f(n){var o=n.cells;for(var p=0;p<o.length;p++){o[p].innerHTML='';if(!CKEDITOR.env.ie)new CKEDITOR.dom.element(o[p]).appendBogus();
+}};function g(n,o){var p=n.getStartElement().getAscendant('tr');if(!p)return;var q=p.clone(true);q.insertBefore(p);f(o?q.$:p.$);};function h(n){if(n instanceof CKEDITOR.dom.selection){var o=c(n),p=[];for(var q=0;q<o.length;q++){var r=o[q].getParent();p[r.$.rowIndex]=r;}for(q=p.length;q>=0;q--)if(p[q])h(p[q]);}else if(n instanceof CKEDITOR.dom.element){var s=n.getAscendant('table');if(s.$.rows.length==1)s.remove();else n.remove();}};function i(n,o){var p=n.getStartElement(),q=p.getAscendant('td',true)||p.getAscendant('th',true);if(!q)return;var r=q.getAscendant('table'),s=q.$.cellIndex;for(var t=0;t<r.$.rows.length;t++){var u=r.$.rows[t];if(u.cells.length<s+1)continue;q=new CKEDITOR.dom.element(u.cells[s].cloneNode(false));if(!CKEDITOR.env.ie)q.appendBogus();var v=new CKEDITOR.dom.element(u.cells[s]);if(o)q.insertBefore(v);else q.insertAfter(v);}};function j(n){if(n instanceof CKEDITOR.dom.selection){var o=c(n);for(var p=o.length;p>=0;p--)if(o[p])j(o[p]);}else if(n instanceof CKEDITOR.dom.element){var q=n.getAscendant('table'),r=n.$.cellIndex;for(p=q.$.rows.length-1;p>=0;p--){var s=new CKEDITOR.dom.element(q.$.rows[p]);if(!r&&s.$.cells.length==1){h(s);continue;}if(s.$.cells[r])s.$.removeChild(s.$.cells[r]);}}};function k(n,o){var p=n.getStartElement(),q=p.getAscendant('td',true)||p.getAscendant('th',true);if(!q)return;var r=q.clone();if(!CKEDITOR.env.ie)r.appendBogus();if(o)r.insertBefore(q);else r.insertAfter(q);};function l(n){if(n instanceof CKEDITOR.dom.selection){var o=c(n);for(var p=o.length-1;p>=0;p--)l(o[p]);}else if(n instanceof CKEDITOR.dom.element)if(n.getParent().getChildCount()==1)n.getParent().remove();else n.remove();};var m={thead:1,tbody:1,tfoot:1,td:1,tr:1,th:1};CKEDITOR.plugins.tabletools={init:function(n){var o=n.lang.table;n.addCommand('cellProperties',new CKEDITOR.dialogCommand('cellProperties'));CKEDITOR.dialog.add('cellProperties',this.path+'dialogs/tableCell.js');n.addCommand('tableDelete',{exec:function(p){var q=p.getSelection(),r=q&&q.getStartElement(),s=r&&r.getAscendant('table',true);if(!s)return;q.selectElement(s);var t=q.getRanges()[0];t.collapse();q.selectRanges([t]);if(s.getParent().getChildCount()==1)s.getParent().remove();else s.remove();}});n.addCommand('rowDelete',{exec:function(p){var q=p.getSelection();h(q);}});n.addCommand('rowInsertBefore',{exec:function(p){var q=p.getSelection();g(q,true);}});n.addCommand('rowInsertAfter',{exec:function(p){var q=p.getSelection();g(q);}});n.addCommand('columnDelete',{exec:function(p){var q=p.getSelection();
+j(q);}});n.addCommand('columnInsertBefore',{exec:function(p){var q=p.getSelection();i(q,true);}});n.addCommand('columnInsertAfter',{exec:function(p){var q=p.getSelection();i(q);}});n.addCommand('cellDelete',{exec:function(p){var q=p.getSelection();l(q);}});n.addCommand('cellInsertBefore',{exec:function(p){var q=p.getSelection();k(q,true);}});n.addCommand('cellInsertAfter',{exec:function(p){var q=p.getSelection();k(q);}});if(n.addMenuItems)n.addMenuItems({tablecell:{label:o.cell.menu,group:'tablecell',order:1,getItems:function(){var p=c(n.getSelection());return{tablecell_insertBefore:CKEDITOR.TRISTATE_OFF,tablecell_insertAfter:CKEDITOR.TRISTATE_OFF,tablecell_delete:CKEDITOR.TRISTATE_OFF,tablecell_properties:p.length>0?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED};}},tablecell_insertBefore:{label:o.cell.insertBefore,group:'tablecell',command:'cellInsertBefore',order:5},tablecell_insertAfter:{label:o.cell.insertAfter,group:'tablecell',command:'cellInsertAfter',order:10},tablecell_delete:{label:o.cell.deleteCell,group:'tablecell',command:'cellDelete',order:15},tablecell_properties:{label:o.cell.title,group:'tablecellproperties',command:'cellProperties',order:20},tablerow:{label:o.row.menu,group:'tablerow',order:1,getItems:function(){return{tablerow_insertBefore:CKEDITOR.TRISTATE_OFF,tablerow_insertAfter:CKEDITOR.TRISTATE_OFF,tablerow_delete:CKEDITOR.TRISTATE_OFF};}},tablerow_insertBefore:{label:o.row.insertBefore,group:'tablerow',command:'rowInsertBefore',order:5},tablerow_insertAfter:{label:o.row.insertAfter,group:'tablerow',command:'rowInsertAfter',order:10},tablerow_delete:{label:o.row.deleteRow,group:'tablerow',command:'rowDelete',order:15},tablecolumn:{label:o.column.menu,group:'tablecolumn',order:1,getItems:function(){return{tablecolumn_insertBefore:CKEDITOR.TRISTATE_OFF,tablecolumn_insertAfter:CKEDITOR.TRISTATE_OFF,tablecolumn_delete:CKEDITOR.TRISTATE_OFF};}},tablecolumn_insertBefore:{label:o.column.insertBefore,group:'tablecolumn',command:'columnInsertBefore',order:5},tablecolumn_insertAfter:{label:o.column.insertAfter,group:'tablecolumn',command:'columnInsertAfter',order:10},tablecolumn_delete:{label:o.column.deleteColumn,group:'tablecolumn',command:'columnDelete',order:15}});if(n.contextMenu)n.contextMenu.addListener(function(p,q){if(!p)return null;while(p){if(p.getName() in m)return{tablecell:CKEDITOR.TRISTATE_OFF,tablerow:CKEDITOR.TRISTATE_OFF,tablecolumn:CKEDITOR.TRISTATE_OFF};p=p.getParent();}return null;});},getSelectedCells:c};CKEDITOR.plugins.add('tabletools',CKEDITOR.plugins.tabletools);
+})();
Index: /trunk/filemanager/tp/ckeditor/plugins/contextmenu/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/contextmenu/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/contextmenu/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('contextmenu',{requires:['menu'],beforeInit:function(a){a.contextMenu=new CKEDITOR.plugins.contextMenu(a);a.addCommand('contextMenu',{exec:function(){a.contextMenu.show(a.document.getBody());}});}});CKEDITOR.plugins.contextMenu=CKEDITOR.tools.createClass({$:function(a){this.id='cke_'+CKEDITOR.tools.getNextNumber();this.editor=a;this._.listeners=[];this._.functionId=CKEDITOR.tools.addFunction(function(b){this._.panel.hide();a.focus();a.execCommand(b);},this);},_:{onMenu:function(a,b,c,d){var e=this._.menu,f=this.editor;if(e){e.hide();e.removeAll();}else{e=this._.menu=new CKEDITOR.menu(f);e.onClick=CKEDITOR.tools.bind(function(o){var p=true;e.hide();if(CKEDITOR.env.ie)e.onEscape();if(o.onClick)o.onClick();else if(o.command)f.execCommand(o.command);p=false;},this);e.onEscape=function(){f.focus();if(CKEDITOR.env.ie)f.getSelection().unlock(true);};}var g=this._.listeners,h=[],i=this.editor.getSelection(),j=i&&i.getStartElement();if(CKEDITOR.env.ie)i.lock();e.onHide=CKEDITOR.tools.bind(function(){e.onHide=null;if(CKEDITOR.env.ie)f.getSelection().unlock();this.onHide&&this.onHide();},this);for(var k=0;k<g.length;k++){var l=g[k](j,i);if(l)for(var m in l){var n=this.editor.getMenuItem(m);if(n){n.state=l[m];e.add(n);}}}e.show(a,b||(f.lang.dir=='rtl'?2:1),c,d);}},proto:{addTarget:function(a){a.on('contextmenu',function(b){var c=b.data;c.preventDefault();var d=c.getTarget().getDocument().getDocumentElement(),e=c.$.clientX,f=c.$.clientY;CKEDITOR.tools.setTimeout(function(){this._.onMenu(d,null,e,f);},0,this);},this);},addListener:function(a){this._.listeners.push(a);},show:function(a,b,c,d){this.editor.focus();this._.onMenu(a||CKEDITOR.document.getDocumentElement(),b,c||0,d||0);}}});
Index: /trunk/filemanager/tp/ckeditor/plugins/specialchar/dialogs/specialchar.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/specialchar/dialogs/specialchar.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/specialchar/dialogs/specialchar.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('specialchar',function(a){var b,c=function(i){var j,k;if(i.data)j=i.data.getTarget();else j=new CKEDITOR.dom.element(i);if(j.getName()=='a'&&(k=j.getChild(0).getHtml())){j.removeClass('cke_light_background');b.hide();a.insertHtml(k);}},d=CKEDITOR.tools.addFunction(c),e,f=function(i,j){var k;j=j||i.data.getTarget();if(j.getName()=='span')j=j.getParent();if(j.getName()=='a'&&(k=j.getChild(0).getHtml())){if(e)g(null,e);var l=b.getContentElement('info','htmlPreview').getElement();b.getContentElement('info','charPreview').getElement().setHtml(k);l.setHtml(CKEDITOR.tools.htmlEncode(k));j.getParent().addClass('cke_light_background');e=j;}},g=function(i,j){j=j||i.data.getTarget();if(j.getName()=='span')j=j.getParent();if(j.getName()=='a'){b.getContentElement('info','charPreview').getElement().setHtml('&nbsp;');b.getContentElement('info','htmlPreview').getElement().setHtml('&nbsp;');j.getParent().removeClass('cke_light_background');e=undefined;}},h=CKEDITOR.tools.addFunction(function(i){i=new CKEDITOR.dom.event(i);var j=i.getTarget(),k,l,m=i.getKeystroke();switch(m){case 39:if(k=j.getParent().getNext()){l=k.getChild(0);if(l.type==1){l.focus();g(null,j);f(null,l);}}i.preventDefault();break;case 37:if(k=j.getParent().getPrevious()){l=k.getChild(0);l.focus();g(null,j);f(null,l);}i.preventDefault();break;case 38:if(k=j.getParent().getParent().getPrevious()){l=k.getChild([j.getParent().getIndex(),0]);l.focus();g(null,j);f(null,l);}i.preventDefault();break;case 40:if(k=j.getParent().getParent().getNext()){l=k.getChild([j.getParent().getIndex(),0]);if(l&&l.type==1){l.focus();g(null,j);f(null,l);}}i.preventDefault();break;case 32:c({data:i});i.preventDefault();break;case 9:if(k=j.getParent().getNext()){l=k.getChild(0);if(l.type==1){l.focus();g(null,j);f(null,l);i.preventDefault(true);}else g(null,j);}else if(k=j.getParent().getParent().getNext()){l=k.getChild([0,0]);if(l&&l.type==1){l.focus();g(null,j);f(null,l);i.preventDefault(true);}else g(null,j);}break;case CKEDITOR.SHIFT+9:if(k=j.getParent().getPrevious()){l=k.getChild(0);l.focus();g(null,j);f(null,l);i.preventDefault(true);}else if(k=j.getParent().getParent().getPrevious()){l=k.getLast().getChild(0);l.focus();g(null,j);f(null,l);i.preventDefault(true);}else g(null,j);break;default:return;}});return{title:a.lang.specialChar.title,minWidth:430,minHeight:280,buttons:[CKEDITOR.dialog.cancelButton],charColumns:17,chars:['!','&quot;','#','$','%','&amp;',"'",'(',')','*','+','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','&lt;','=','&gt;','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}','~','&euro;','&lsquo;','&rsquo;','&rsquo;','&ldquo;','&rdquo;','&ndash;','&mdash;','&iexcl;','&cent;','&pound;','&curren;','&yen;','&brvbar;','&sect;','&uml;','&copy;','&ordf;','&laquo;','&not;','&reg;','&macr;','&deg;','&plusmn;','&sup2;','&sup3;','&acute;','&micro;','&para;','&middot;','&cedil;','&sup1;','&ordm;','&raquo;','&frac14;','&frac12;','&frac34;','&iquest;','&Agrave;','&Aacute;','&Acirc;','&Atilde;','&Auml;','&Aring;','&AElig;','&Ccedil;','&Egrave;','&Eacute;','&Ecirc;','&Euml;','&Igrave;','&Iacute;','&Icirc;','&Iuml;','&ETH;','&Ntilde;','&Ograve;','&Oacute;','&Ocirc;','&Otilde;','&Ouml;','&times;','&Oslash;','&Ugrave;','&Uacute;','&Ucirc;','&Uuml;','&Yacute;','&THORN;','&szlig;','&agrave;','&aacute;','&acirc;','&atilde;','&auml;','&aring;','&aelig;','&ccedil;','&egrave;','&eacute;','&ecirc;','&euml;','&igrave;','&iacute;','&icirc;','&iuml;','&eth;','&ntilde;','&ograve;','&oacute;','&ocirc;','&otilde;','&ouml;','&divide;','&oslash;','&ugrave;','&uacute;','&ucirc;','&uuml;','&uuml;','&yacute;','&thorn;','&yuml;','&OElig;','&oelig;','&#372;','&#374','&#373','&#375;','&sbquo;','&#8219;','&bdquo;','&hellip;','&trade;','&#9658;','&bull;','&rarr;','&rArr;','&hArr;','&diams;','&asymp;'],onLoad:function(){var i=this.definition.charColumns,j=this.definition.chars,k=['<table style="width: 320px; height: 100%; border-collapse: separate;" align="center" cellspacing="2" cellpadding="2" border="0">'],l=0;
+while(l<j.length){k.push('<tr>');for(var m=0;m<i;m++,l++){if(j[l])k.push('<td class="cke_dark_background" style="cursor: default"><a href="javascript: void(0);" style="cursor: inherit; display: block; height: 1.25em; margin-top: 0.25em; text-align: center;" title="',j[l].replace(/&/g,'&amp;'),'" onkeydown="CKEDITOR.tools.callFunction( '+h+', event, this )"'+' onclick="CKEDITOR.tools.callFunction('+d+', this); return false;"'+' tabindex="-1">'+'<span style="margin: 0 auto;cursor: inherit">'+j[l]+'</span></a>');else k.push('<td class="cke_dark_background">&nbsp;');k.push('</td>');}k.push('</tr>');}k.push('</tbody></table>');this.getContentElement('info','charContainer').getElement().setHtml(k.join(''));},contents:[{id:'info',label:a.lang.common.generalTab,title:a.lang.common.generalTab,padding:0,align:'top',elements:[{type:'hbox',align:'top',widths:['320px','90px'],children:[{type:'html',id:'charContainer',html:'',onMouseover:f,onMouseout:g,focus:function(){var i=this.getElement().getChild([0,0,0,0,0]);setTimeout(function(){i.focus();f(null,i);});},onShow:function(){var i=this.getElement().getChild([0,0,0,0,0]);setTimeout(function(){i.focus();f(null,i);});},onLoad:function(i){b=i.sender;}},{type:'hbox',align:'top',widths:['100%'],children:[{type:'vbox',align:'top',children:[{type:'html',html:'<div></div>'},{type:'html',id:'charPreview',style:"border:1px solid #eeeeee;background-color:#EAEAD1;font-size:28px;height:40px;width:70px;padding-top:9px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;",html:'<div>&nbsp;</div>'},{type:'html',id:'htmlPreview',style:"border:1px solid #eeeeee;background-color:#EAEAD1;font-size:14px;height:20px;width:70px;padding-top:2px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;",html:'<div>&nbsp;</div>'}]}]}]}]}]};});
Index: /trunk/filemanager/tp/ckeditor/plugins/specialchar/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/specialchar/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/specialchar/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('specialchar',{init:function(a){var b='specialchar';CKEDITOR.dialog.add(b,this.path+'dialogs/specialchar.js');a.addCommand(b,new CKEDITOR.dialogCommand(b));a.ui.addButton('SpecialChar',{label:a.lang.specialChar.toolbar,command:b});}});
Index: /trunk/filemanager/tp/ckeditor/plugins/showblocks/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/plugins/showblocks/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/plugins/showblocks/plugin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a='.%2 p,.%2 div,.%2 pre,.%2 address,.%2 blockquote,.%2 h1,.%2 h2,.%2 h3,.%2 h4,.%2 h5,.%2 h6{background-repeat: no-repeat;border: 1px dotted gray;padding-top: 8px;padding-left: 8px;}.%2 p{%1p.png);}.%2 div{%1div.png);}.%2 pre{%1pre.png);}.%2 address{%1address.png);}.%2 blockquote{%1blockquote.png);}.%2 h1{%1h1.png);}.%2 h2{%1h2.png);}.%2 h3{%1h3.png);}.%2 h4{%1h4.png);}.%2 h5{%1h5.png);}.%2 h6{%1h6.png);}',b=/%1/g,c=/%2/g,d={preserveState:true,editorFocus:false,exec:function(e){this.toggleState();this.refresh(e);},refresh:function(e){var f=this.state==CKEDITOR.TRISTATE_ON?'addClass':'removeClass';e.document.getBody()[f]('cke_show_blocks');}};CKEDITOR.plugins.add('showblocks',{requires:['wysiwygarea'],init:function(e){var f=e.addCommand('showblocks',d);f.canUndo=false;if(e.config.startupOutlineBlocks)f.setState(CKEDITOR.TRISTATE_ON);e.addCss(a.replace(b,'background-image: url('+CKEDITOR.getUrl(this.path)+'images/block_').replace(c,'cke_show_blocks '));e.ui.addButton('ShowBlocks',{label:e.lang.showBlocks,command:'showblocks'});e.on('mode',function(){if(f.state!=CKEDITOR.TRISTATE_DISABLED)f.refresh(e);});e.on('contentDom',function(){if(f.state!=CKEDITOR.TRISTATE_DISABLED)f.refresh(e);});}});})();CKEDITOR.config.startupOutlineBlocks=false;
Index: /trunk/filemanager/tp/ckeditor/contents.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/contents.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/contents.css	(revision 2000)
@@ -0,0 +1,35 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+body
+{
+	/* Font */
+	font-family: Arial, Verdana, sans-serif;
+	font-size: 12px;
+
+	/* Text color */
+	color: #222;
+
+	/* Remove the background color to make it transparent */
+	background-color: #fff;
+}
+
+html
+{
+	/* #3658: [IE6] Editor document has horizontal scrollbar on long lines
+	To prevent this misbehavior, we show the scrollbar always */
+	_overflow-y: scroll
+}
+
+img:-moz-broken
+{
+	-moz-force-broken-image-icon : 1;
+	width : 24px;
+	height : 24px;
+}
+img, input, textarea
+{
+	cursor: default;
+}
Index: /trunk/filemanager/tp/ckeditor/themes/default/theme.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/themes/default/theme.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/themes/default/theme.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.themes.add('default',(function(){return{build:function(a,b){var c=a.name,d=a.element,e=a.elementMode;if(!d||e==CKEDITOR.ELEMENT_MODE_NONE)return;if(e==CKEDITOR.ELEMENT_MODE_REPLACE)d.hide();var f=a.fire('themeSpace',{space:'top',html:''}).html,g=a.fire('themeSpace',{space:'contents',html:''}).html,h=a.fireOnce('themeSpace',{space:'bottom',html:''}).html,i=g&&a.config.height,j=a.config.tabIndex||a.element.getAttribute('tabindex')||0;if(!g)i='auto';else if(!isNaN(i))i+='px';var k='',l=a.config.width;if(l){if(!isNaN(l))l+='px';k+='width: '+l+';';}var m=CKEDITOR.dom.element.createFromHtml(['<span id="cke_',c,'" onmousedown="return false;" class="',a.skinClass,'" dir="',a.lang.dir,'" title="',CKEDITOR.env.gecko?' ':'','" lang="',a.langCode,'" tabindex="'+j+'"'+(k?' style="'+k+'"':'')+'>'+'<span class="',CKEDITOR.env.cssClass,'"><span class="cke_wrapper cke_',a.lang.dir,'"><table class="cke_editor" border="0" cellspacing="0" cellpadding="0"><tbody><tr',f?'':' style="display:none"','><td id="cke_top_',c,'" class="cke_top">',f,'</td></tr><tr',g?'':' style="display:none"','><td id="cke_contents_',c,'" class="cke_contents" style="height:',i,'">',g,'</td></tr><tr',h?'':' style="display:none"','><td id="cke_bottom_',c,'" class="cke_bottom">',h,'</td></tr></tbody></table><style>.',a.skinClass,'{visibility:hidden;}</style></span></span></span>'].join(''));m.getChild([0,0,0,0,0]).unselectable();m.getChild([0,0,0,0,2]).unselectable();if(e==CKEDITOR.ELEMENT_MODE_REPLACE)m.insertAfter(d);else d.append(m);a.container=m;m.disableContextMenu();a.fireOnce('themeLoaded');a.fireOnce('uiReady');},buildDialog:function(a){var b=CKEDITOR.tools.getNextNumber(),c=CKEDITOR.dom.element.createFromHtml(['<div id="cke_'+a.name.replace('.','\\.')+'_dialog" class="cke_skin_',a.skinName,'" dir="',a.lang.dir,'" lang="',a.langCode,'"><div class="cke_dialog',' '+CKEDITOR.env.cssClass,' cke_',a.lang.dir,'" style="position:absolute"><div class="%body"><div id="%title#" class="%title"></div><div id="%close_button#" class="%close_button"><span>X</span></div><div id="%tabs#" class="%tabs"></div><div id="%contents#" class="%contents"></div><div id="%footer#" class="%footer"></div></div><div id="%tl#" class="%tl"></div><div id="%tc#" class="%tc"></div><div id="%tr#" class="%tr"></div><div id="%ml#" class="%ml"></div><div id="%mr#" class="%mr"></div><div id="%bl#" class="%bl"></div><div id="%bc#" class="%bc"></div><div id="%br#" class="%br"></div></div>',CKEDITOR.env.ie?'':'<style>.cke_dialog{visibility:hidden;}</style>','</div>'].join('').replace(/#/g,'_'+b).replace(/%/g,'cke_dialog_')),d=c.getChild([0,0]);
+d.getChild(0).unselectable();d.getChild(1).unselectable();return{element:c,parts:{dialog:c.getChild(0),title:d.getChild(0),close:d.getChild(1),tabs:d.getChild(2),contents:d.getChild(3),footer:d.getChild(4)}};},destroy:function(a){var b=a.container,c=a.panels;if(CKEDITOR.env.ie){b.setStyle('display','none');var d=document.body.createTextRange();d.moveToElementText(b.$);try{d.select();}catch(f){}}if(b)b.remove();for(var e=0;c&&e<c.length;e++)c[e].remove();if(a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE){a.element.show();delete a.element;}}};})());CKEDITOR.editor.prototype.getThemeSpace=function(a){var b='cke_'+a,c=this._[b]||(this._[b]=CKEDITOR.document.getById(b+'_'+this.name));return c;};CKEDITOR.editor.prototype.resize=function(a,b,c,d){var e=/^\d+$/;if(e.test(a))a+='px';var f=CKEDITOR.document.getById('cke_contents_'+this.name),g=d?f.getAscendant('table').getParent():f.getAscendant('table').getParent().getParent().getParent();CKEDITOR.env.webkit&&g.setStyle('display','none');g.setStyle('width',a);if(CKEDITOR.env.webkit){g.$.offsetWidth;g.setStyle('display','');}var h=c?0:(g.$.offsetHeight||0)-(f.$.clientHeight||0);f.setStyle('height',Math.max(b-h,0)+'px');this.fire('resize');};CKEDITOR.editor.prototype.getResizable=function(){return this.container.getChild([0,0]);};
Index: /trunk/filemanager/tp/ckeditor/LICENSE.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/LICENSE.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/LICENSE.html	(revision 2000)
@@ -0,0 +1,1334 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+== BEGIN TEXT ONLY VERSION ==
+
+Software License Agreement
+==========================
+
+CKEditor - The text editor for Internet - http://ckeditor.com
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+
+Licensed under the terms of any of the following licenses at your
+choice:
+
+ - GNU General Public License Version 2 or later (the "GPL")
+   http://www.gnu.org/licenses/gpl.html
+   (See Appendix A)
+
+ - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+   http://www.gnu.org/licenses/lgpl.html
+   (See Appendix B)
+
+ - Mozilla Public License Version 1.1 or later (the "MPL")
+   http://www.mozilla.org/MPL/MPL-1.1.html
+   (See Appendix C)
+
+You are not required to, but if you want to explicitly declare the
+license you have chosen to be bound to when using, reproducing,
+modifying and distributing this software, just include a text file
+titled "legal.txt" in your version of this software, indicating your
+license choice. In any case, your choice will not restrict any
+recipient of your version of this software to use, reproduce, modify
+and distribute this software under any of the above licenses.
+
+Sources of Intellectual Property Included in CKEditor
+=====================================================
+
+Where not otherwise indicated, all CKEditor content is authored by
+CKSource engineers and consists of CKSource-owned intellectual
+property. In some specific instances, CKEditor will incorporate work
+done by developers outside of CKSource with their express permission.
+
+YUI Test: At _source/tests/yuitest.js can be found part of the source
+code of YUI, which is licensed under the terms of the BSD License
+(http://developer.yahoo.com/yui/license.txt). YUI is Copyright (C)
+2008, Yahoo! Inc.
+
+Trademarks
+==========
+
+CKEditor is a trademark of CKSource - Frederico Knabben. All other brand
+and product names are trademarks, registered trademarks or service
+marks of their respective holders.
+
+Appendix A: The GPL License
+===========================
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software-to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+Appendix B: The LGPL License
+============================
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software-to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages-typically libraries-of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+Appendix C: The MPL License
+===========================
+
+                          MOZILLA PUBLIC LICENSE
+                                Version 1.1
+
+                              ===============
+
+1. Definitions.
+
+     1.0.1. "Commercial Use" means distribution or otherwise making the
+     Covered Code available to a third party.
+
+     1.1. "Contributor" means each entity that creates or contributes to
+     the creation of Modifications.
+
+     1.2. "Contributor Version" means the combination of the Original
+     Code, prior Modifications used by a Contributor, and the Modifications
+     made by that particular Contributor.
+
+     1.3. "Covered Code" means the Original Code or Modifications or the
+     combination of the Original Code and Modifications, in each case
+     including portions thereof.
+
+     1.4. "Electronic Distribution Mechanism" means a mechanism generally
+     accepted in the software development community for the electronic
+     transfer of data.
+
+     1.5. "Executable" means Covered Code in any form other than Source
+     Code.
+
+     1.6. "Initial Developer" means the individual or entity identified
+     as the Initial Developer in the Source Code notice required by Exhibit
+     A.
+
+     1.7. "Larger Work" means a work which combines Covered Code or
+     portions thereof with code not governed by the terms of this License.
+
+     1.8. "License" means this document.
+
+     1.8.1. "Licensable" means having the right to grant, to the maximum
+     extent possible, whether at the time of the initial grant or
+     subsequently acquired, any and all of the rights conveyed herein.
+
+     1.9. "Modifications" means any addition to or deletion from the
+     substance or structure of either the Original Code or any previous
+     Modifications. When Covered Code is released as a series of files, a
+     Modification is:
+          A. Any addition to or deletion from the contents of a file
+          containing Original Code or previous Modifications.
+
+          B. Any new file that contains any part of the Original Code or
+          previous Modifications.
+
+     1.10. "Original Code" means Source Code of computer software code
+     which is described in the Source Code notice required by Exhibit A as
+     Original Code, and which, at the time of its release under this
+     License is not already Covered Code governed by this License.
+
+     1.10.1. "Patent Claims" means any patent claim(s), now owned or
+     hereafter acquired, including without limitation,  method, process,
+     and apparatus claims, in any patent Licensable by grantor.
+
+     1.11. "Source Code" means the preferred form of the Covered Code for
+     making modifications to it, including all modules it contains, plus
+     any associated interface definition files, scripts used to control
+     compilation and installation of an Executable, or source code
+     differential comparisons against either the Original Code or another
+     well known, available Covered Code of the Contributor's choice. The
+     Source Code can be in a compressed or archival form, provided the
+     appropriate decompression or de-archiving software is widely available
+     for no charge.
+
+     1.12. "You" (or "Your")  means an individual or a legal entity
+     exercising rights under, and complying with all of the terms of, this
+     License or a future version of this License issued under Section 6.1.
+     For legal entities, "You" includes any entity which controls, is
+     controlled by, or is under common control with You. For purposes of
+     this definition, "control" means (a) the power, direct or indirect,
+     to cause the direction or management of such entity, whether by
+     contract or otherwise, or (b) ownership of more than fifty percent
+     (50%) of the outstanding shares or beneficial ownership of such
+     entity.
+
+2. Source Code License.
+
+     2.1. The Initial Developer Grant.
+     The Initial Developer hereby grants You a world-wide, royalty-free,
+     non-exclusive license, subject to third party intellectual property
+     claims:
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Initial Developer to use, reproduce,
+          modify, display, perform, sublicense and distribute the Original
+          Code (or portions thereof) with or without Modifications, and/or
+          as part of a Larger Work; and
+
+          (b) under Patents Claims infringed by the making, using or
+          selling of Original Code, to make, have made, use, practice,
+          sell, and offer for sale, and/or otherwise dispose of the
+          Original Code (or portions thereof).
+
+          (c) the licenses granted in this Section 2.1(a) and (b) are
+          effective on the date Initial Developer first distributes
+          Original Code under the terms of this License.
+
+          (d) Notwithstanding Section 2.1(b) above, no patent license is
+          granted: 1) for code that You delete from the Original Code; 2)
+          separate from the Original Code;  or 3) for infringements caused
+          by: i) the modification of the Original Code or ii) the
+          combination of the Original Code with other software or devices.
+
+     2.2. Contributor Grant.
+     Subject to third party intellectual property claims, each Contributor
+     hereby grants You a world-wide, royalty-free, non-exclusive license
+
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Contributor, to use, reproduce, modify,
+          display, perform, sublicense and distribute the Modifications
+          created by such Contributor (or portions thereof) either on an
+          unmodified basis, with other Modifications, as Covered Code
+          and/or as part of a Larger Work; and
+
+          (b) under Patent Claims infringed by the making, using, or
+          selling of  Modifications made by that Contributor either alone
+          and/or in combination with its Contributor Version (or portions
+          of such combination), to make, use, sell, offer for sale, have
+          made, and/or otherwise dispose of: 1) Modifications made by that
+          Contributor (or portions thereof); and 2) the combination of
+          Modifications made by that Contributor with its Contributor
+          Version (or portions of such combination).
+
+          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+          effective on the date Contributor first makes Commercial Use of
+          the Covered Code.
+
+          (d)    Notwithstanding Section 2.2(b) above, no patent license is
+          granted: 1) for any code that Contributor has deleted from the
+          Contributor Version; 2)  separate from the Contributor Version;
+          3)  for infringements caused by: i) third party modifications of
+          Contributor Version or ii)  the combination of Modifications made
+          by that Contributor with other software  (except as part of the
+          Contributor Version) or other devices; or 4) under Patent Claims
+          infringed by Covered Code in the absence of Modifications made by
+          that Contributor.
+
+3. Distribution Obligations.
+
+     3.1. Application of License.
+     The Modifications which You create or to which You contribute are
+     governed by the terms of this License, including without limitation
+     Section 2.2. The Source Code version of Covered Code may be
+     distributed only under the terms of this License or a future version
+     of this License released under Section 6.1, and You must include a
+     copy of this License with every copy of the Source Code You
+     distribute. You may not offer or impose any terms on any Source Code
+     version that alters or restricts the applicable version of this
+     License or the recipients' rights hereunder. However, You may include
+     an additional document offering the additional rights described in
+     Section 3.5.
+
+     3.2. Availability of Source Code.
+     Any Modification which You create or to which You contribute must be
+     made available in Source Code form under the terms of this License
+     either on the same media as an Executable version or via an accepted
+     Electronic Distribution Mechanism to anyone to whom you made an
+     Executable version available; and if made available via Electronic
+     Distribution Mechanism, must remain available for at least twelve (12)
+     months after the date it initially became available, or at least six
+     (6) months after a subsequent version of that particular Modification
+     has been made available to such recipients. You are responsible for
+     ensuring that the Source Code version remains available even if the
+     Electronic Distribution Mechanism is maintained by a third party.
+
+     3.3. Description of Modifications.
+     You must cause all Covered Code to which You contribute to contain a
+     file documenting the changes You made to create that Covered Code and
+     the date of any change. You must include a prominent statement that
+     the Modification is derived, directly or indirectly, from Original
+     Code provided by the Initial Developer and including the name of the
+     Initial Developer in (a) the Source Code, and (b) in any notice in an
+     Executable version or related documentation in which You describe the
+     origin or ownership of the Covered Code.
+
+     3.4. Intellectual Property Matters
+          (a) Third Party Claims.
+          If Contributor has knowledge that a license under a third party's
+          intellectual property rights is required to exercise the rights
+          granted by such Contributor under Sections 2.1 or 2.2,
+          Contributor must include a text file with the Source Code
+          distribution titled "LEGAL" which describes the claim and the
+          party making the claim in sufficient detail that a recipient will
+          know whom to contact. If Contributor obtains such knowledge after
+          the Modification is made available as described in Section 3.2,
+          Contributor shall promptly modify the LEGAL file in all copies
+          Contributor makes available thereafter and shall take other steps
+          (such as notifying appropriate mailing lists or newsgroups)
+          reasonably calculated to inform those who received the Covered
+          Code that new knowledge has been obtained.
+
+          (b) Contributor APIs.
+          If Contributor's Modifications include an application programming
+          interface and Contributor has knowledge of patent licenses which
+          are reasonably necessary to implement that API, Contributor must
+          also include this information in the LEGAL file.
+
+               (c)    Representations.
+          Contributor represents that, except as disclosed pursuant to
+          Section 3.4(a) above, Contributor believes that Contributor's
+          Modifications are Contributor's original creation(s) and/or
+          Contributor has sufficient rights to grant the rights conveyed by
+          this License.
+
+     3.5. Required Notices.
+     You must duplicate the notice in Exhibit A in each file of the Source
+     Code.  If it is not possible to put such notice in a particular Source
+     Code file due to its structure, then You must include such notice in a
+     location (such as a relevant directory) where a user would be likely
+     to look for such a notice.  If You created one or more Modification(s)
+     You may add your name as a Contributor to the notice described in
+     Exhibit A.  You must also duplicate this License in any documentation
+     for the Source Code where You describe recipients' rights or ownership
+     rights relating to Covered Code.  You may choose to offer, and to
+     charge a fee for, warranty, support, indemnity or liability
+     obligations to one or more recipients of Covered Code. However, You
+     may do so only on Your own behalf, and not on behalf of the Initial
+     Developer or any Contributor. You must make it absolutely clear than
+     any such warranty, support, indemnity or liability obligation is
+     offered by You alone, and You hereby agree to indemnify the Initial
+     Developer and every Contributor for any liability incurred by the
+     Initial Developer or such Contributor as a result of warranty,
+     support, indemnity or liability terms You offer.
+
+     3.6. Distribution of Executable Versions.
+     You may distribute Covered Code in Executable form only if the
+     requirements of Section 3.1-3.5 have been met for that Covered Code,
+     and if You include a notice stating that the Source Code version of
+     the Covered Code is available under the terms of this License,
+     including a description of how and where You have fulfilled the
+     obligations of Section 3.2. The notice must be conspicuously included
+     in any notice in an Executable version, related documentation or
+     collateral in which You describe recipients' rights relating to the
+     Covered Code. You may distribute the Executable version of Covered
+     Code or ownership rights under a license of Your choice, which may
+     contain terms different from this License, provided that You are in
+     compliance with the terms of this License and that the license for the
+     Executable version does not attempt to limit or alter the recipient's
+     rights in the Source Code version from the rights set forth in this
+     License. If You distribute the Executable version under a different
+     license You must make it absolutely clear that any terms which differ
+     from this License are offered by You alone, not by the Initial
+     Developer or any Contributor. You hereby agree to indemnify the
+     Initial Developer and every Contributor for any liability incurred by
+     the Initial Developer or such Contributor as a result of any such
+     terms You offer.
+
+     3.7. Larger Works.
+     You may create a Larger Work by combining Covered Code with other code
+     not governed by the terms of this License and distribute the Larger
+     Work as a single product. In such a case, You must make sure the
+     requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+     If it is impossible for You to comply with any of the terms of this
+     License with respect to some or all of the Covered Code due to
+     statute, judicial order, or regulation then You must: (a) comply with
+     the terms of this License to the maximum extent possible; and (b)
+     describe the limitations and the code they affect. Such description
+     must be included in the LEGAL file described in Section 3.4 and must
+     be included with all distributions of the Source Code. Except to the
+     extent prohibited by statute or regulation, such description must be
+     sufficiently detailed for a recipient of ordinary skill to be able to
+     understand it.
+
+5. Application of this License.
+
+     This License applies to code to which the Initial Developer has
+     attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+     6.1. New Versions.
+     Netscape Communications Corporation ("Netscape") may publish revised
+     and/or new versions of the License from time to time. Each version
+     will be given a distinguishing version number.
+
+     6.2. Effect of New Versions.
+     Once Covered Code has been published under a particular version of the
+     License, You may always continue to use it under the terms of that
+     version. You may also choose to use such Covered Code under the terms
+     of any subsequent version of the License published by Netscape. No one
+     other than Netscape has the right to modify the terms applicable to
+     Covered Code created under this License.
+
+     6.3. Derivative Works.
+     If You create or use a modified version of this License (which you may
+     only do in order to apply it to code which is not already Covered Code
+     governed by this License), You must (a) rename Your license so that
+     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
+     "MPL", "NPL" or any confusingly similar phrase do not appear in your
+     license (except to note that your license differs from this License)
+     and (b) otherwise make it clear that Your version of the license
+     contains terms which differ from the Mozilla Public License and
+     Netscape Public License. (Filling in the name of the Initial
+     Developer, Original Code or Contributor in the notice described in
+     Exhibit A shall not of themselves be deemed to be modifications of
+     this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
+     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
+     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
+     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
+     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
+     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+     8.1.  This License and the rights granted hereunder will terminate
+     automatically if You fail to comply with terms herein and fail to cure
+     such breach within 30 days of becoming aware of the breach. All
+     sublicenses to the Covered Code which are properly granted shall
+     survive any termination of this License. Provisions which, by their
+     nature, must remain in effect beyond the termination of this License
+     shall survive.
+
+     8.2.  If You initiate litigation by asserting a patent infringement
+     claim (excluding declatory judgment actions) against Initial Developer
+     or a Contributor (the Initial Developer or Contributor against whom
+     You file such action is referred to as "Participant")  alleging that:
+
+     (a)  such Participant's Contributor Version directly or indirectly
+     infringes any patent, then any and all rights granted by such
+     Participant to You under Sections 2.1 and/or 2.2 of this License
+     shall, upon 60 days notice from Participant terminate prospectively,
+     unless if within 60 days after receipt of notice You either: (i)
+     agree in writing to pay Participant a mutually agreeable reasonable
+     royalty for Your past and future use of Modifications made by such
+     Participant, or (ii) withdraw Your litigation claim with respect to
+     the Contributor Version against such Participant.  If within 60 days
+     of notice, a reasonable royalty and payment arrangement are not
+     mutually agreed upon in writing by the parties or the litigation claim
+     is not withdrawn, the rights granted by Participant to You under
+     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
+     the 60 day notice period specified above.
+
+     (b)  any software, hardware, or device, other than such Participant's
+     Contributor Version, directly or indirectly infringes any patent, then
+     any rights granted to You by such Participant under Sections 2.1(b)
+     and 2.2(b) are revoked effective as of the date You first made, used,
+     sold, distributed, or had made, Modifications made by that
+     Participant.
+
+     8.3.  If You assert a patent infringement claim against Participant
+     alleging that such Participant's Contributor Version directly or
+     indirectly infringes any patent where such claim is resolved (such as
+     by license or settlement) prior to the initiation of patent
+     infringement litigation, then the reasonable value of the licenses
+     granted by such Participant under Sections 2.1 or 2.2 shall be taken
+     into account in determining the amount or value of any payment or
+     license.
+
+     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
+     all end user license agreements (excluding distributors and resellers)
+     which have been validly granted by You or any distributor hereunder
+     prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
+     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
+     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
+     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
+     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+     The Covered Code is a "commercial item," as that term is defined in
+     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+     software" and "commercial computer software documentation," as such
+     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
+     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
+     all U.S. Government End Users acquire Covered Code with only those
+     rights set forth herein.
+
+11. MISCELLANEOUS.
+
+     This License represents the complete agreement concerning subject
+     matter hereof. If any provision of this License is held to be
+     unenforceable, such provision shall be reformed only to the extent
+     necessary to make it enforceable. This License shall be governed by
+     California law provisions (except to the extent applicable law, if
+     any, provides otherwise), excluding its conflict-of-law provisions.
+     With respect to disputes in which at least one party is a citizen of,
+     or an entity chartered or registered to do business in the United
+     States of America, any litigation relating to this License shall be
+     subject to the jurisdiction of the Federal Courts of the Northern
+     District of California, with venue lying in Santa Clara County,
+     California, with the losing party responsible for costs, including
+     without limitation, court costs and reasonable attorneys' fees and
+     expenses. The application of the United Nations Convention on
+     Contracts for the International Sale of Goods is expressly excluded.
+     Any law or regulation which provides that the language of a contract
+     shall be construed against the drafter shall not apply to this
+     License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+     As between Initial Developer and the Contributors, each party is
+     responsible for claims and damages arising, directly or indirectly,
+     out of its utilization of rights under this License and You agree to
+     work with Initial Developer and Contributors to distribute such
+     responsibility on an equitable basis. Nothing herein is intended or
+     shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+     Initial Developer may designate portions of the Covered Code as
+     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
+     Developer permits you to utilize portions of the Covered Code under
+     Your choice of the NPL or the alternative licenses, if any, specified
+     by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+
+     ``The contents of this file are subject to the Mozilla Public License
+     Version 1.1 (the "License"); you may not use this file except in
+     compliance with the License. You may obtain a copy of the License at
+     http://www.mozilla.org/MPL/
+
+     Software distributed under the License is distributed on an "AS IS"
+     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+     License for the specific language governing rights and limitations
+     under the License.
+
+     The Original Code is ______________________________________.
+
+     The Initial Developer of the Original Code is ________________________.
+     Portions created by ______________________ are Copyright (C) ______
+     _______________________. All Rights Reserved.
+
+     Contributor(s): ______________________________________.
+
+     Alternatively, the contents of this file may be used under the terms
+     of the _____ license (the  "[___] License"), in which case the
+     provisions of [______] License are applicable instead of those
+     above.  If you wish to allow use of your version of this file only
+     under the terms of the [____] License and not to allow others to use
+     your version of this file under the MPL, indicate your decision by
+     deleting  the provisions above and replace  them with the notice and
+     other provisions required by the [___] License.  If you do not delete
+     the provisions above, a recipient may use your version of this file
+     under either the MPL or the [___] License."
+
+     [NOTE: The text of this Exhibit A may differ slightly from the text of
+     the notices in the Source Code files of the Original Code. You should
+     use the text of this Exhibit A rather than the text found in the
+     Original Code Source Code for Your Modifications.]
+
+== END TEXT ONLY VERSION ==
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>License - CKEditor</title>
+</head>
+<body>
+	<h1>
+		Software License Agreement
+	</h1>
+	<p>
+		<strong>CKEditor&trade;</strong> - The text editor for Internet&trade; - <a href="http://ckeditor.com">
+			http://ckeditor.com</a><br />
+		Copyright &copy; 2003-2009, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
+	</p>
+	<p>
+		Licensed under the terms of any of the following licenses at your choice:
+	</p>
+	<ul>
+		<li><a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a> Version
+			2 or later (the "GPL");</li>
+		<li><a href="http://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public License</a>
+			Version 2.1 or later (the "LGPL");</li>
+		<li><a href="http://www.mozilla.org/MPL/MPL-1.1.html">Mozilla Public License</a> Version
+			1.1 or later (the "MPL").</li>
+	</ul>
+	<p>
+		You are not required to, but if you want to explicitly declare the license you have
+		chosen to be bound to when using, reproducing, modifying and distributing this software,
+		just include a text file titled "LEGAL" in your version of this software, indicating
+		your license choice. In any case, your choice will not restrict any recipient of
+		your version of this software to use, reproduce, modify and distribute this software
+		under any of the above licenses.
+	</p>
+	<h2>
+		Sources of Intellectual Property Included in CKEditor
+	</h2>
+	<p>
+		Where not otherwise indicated, all CKEditor content is authored by CKSource engineers
+		and consists of CKSource-owned intellectual property. In some specific instances,
+		CKEditor will incorporate work done by developers outside of CKSource with their
+		express permission.
+	</p>
+	<p>
+		<a href="http://developer.yahoo.com/yui/yuitest/">YUI Test</a>: At _source/tests/yuitest.js
+		can be found part of the source code of YUI, which is licensed under the terms of
+		the <a href="http://developer.yahoo.com/yui/license.txt">BSD License</a>. YUI is
+		Copyright &copy; 2008, Yahoo! Inc.
+	</p>
+	<h2>
+		Trademarks
+	</h2>
+	<p>
+		CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product
+		names are trademarks, registered trademarks or service marks of their respective
+		holders.
+	</p>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/skins/office2003/skin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/skins/office2003/skin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/skins/office2003/skin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.skins.add('office2003',(function(){var a=[];if(CKEDITOR.env.ie&&CKEDITOR.env.version<7)a.push('icons.png','images/sprites_ie6.png','images/dialog_sides.gif');return{preload:a,editor:{css:['editor.css']},dialog:{css:['dialog.css']},templates:{css:['templates.css']},margins:[0,14,18,14]};})());if(CKEDITOR.dialog)CKEDITOR.dialog.on('resize',function(a){var b=a.data,c=b.width,d=b.height,e=b.dialog,f=!CKEDITOR.env.quirk;if(b.skin!='office2003')return;e.parts.contents.setStyles({width:c+'px',height:d+'px'});if(!CKEDITOR.env.ie)return;var g=function(){var h=e.parts.contents,i=h.getParent(),j=i.getParent(),k=j.getChild(2);k.setStyle('width',i.$.offsetWidth+'px');k=j.getChild(7);k.setStyle('width',i.$.offsetWidth-28+'px');k=j.getChild(4);k.setStyle('height',i.$.offsetHeight-31-14+'px');k=j.getChild(5);k.setStyle('height',i.$.offsetHeight-31-14+'px');};setTimeout(g,100);if(a.editor.lang.dir=='rtl')setTimeout(g,1000);});
Index: /trunk/filemanager/tp/ckeditor/skins/office2003/templates.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/skins/office2003/templates.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/skins/office2003/templates.css	(revision 2000)
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_office2003 .cke_tpl_list{border:#dcdcdc 2px solid;background-color:#fff;overflow:auto;width:100%;height:220px;}.cke_skin_office2003 .cke_tpl_item{margin:5px;padding:7px;border:#eee 1px solid;*width:88%;}.cke_skin_office2003 .cke_tpl_preview{border-collapse:separate;text-indent:0;width:100%;}.cke_skin_office2003 .cke_tpl_preview td{padding:2px;vertical-align:middle;}.cke_skin_office2003 .cke_tpl_preview .cke_tpl_preview_img{width:100px;}.cke_skin_office2003 .cke_tpl_preview span{white-space:normal;}.cke_skin_office2003 .cke_tpl_title{font-weight:bold;}.cke_skin_office2003 .cke_tpl_hover{border:#f93 1px solid!important;background-color:#fffacd!important;cursor:pointer;cursor:hand;}.cke_skin_office2003 .cke_tpl_hover *{cursor:inherit;}.cke_skin_office2003 .cke_tpl_empty,.cke_tpl_loading{text-align:center;padding:5px;}
Index: /trunk/filemanager/tp/ckeditor/skins/office2003/dialog.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/skins/office2003/dialog.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/skins/office2003/dialog.css	(revision 2000)
@@ -0,0 +1,8 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+body .cke_dialog{visibility:visible;}.cke_skin_office2003 .cke_dialog_body{margin-left:16px;margin-right:16px;margin-top:2px;margin-bottom:20px;position:relative;z-index:1;}.cke_skin_office2003 .cke_dialog_tl,.cke_skin_office2003 .cke_dialog_tr,.cke_skin_office2003 .cke_dialog_tc,.cke_skin_office2003 .cke_dialog_bl,.cke_skin_office2003 .cke_dialog_br,.cke_skin_office2003 .cke_dialog_bc{background-image:url(images/sprites.png);background-repeat:no-repeat;position:absolute;_background-image:url(images/sprites_ie6.png);}.cke_skin_office2003 .cke_dialog_tl{background-position:-16px -16px;height:16px;width:16px;top:0;left:0;}.cke_skin_office2003 .cke_rtl .cke_dialog_tl{background-position:-16px -397px;}.cke_skin_office2003 .cke_dialog_tr{background-position:-16px -76px;height:16px;width:16px;top:0;right:0;}.cke_skin_office2003 .cke_rtl .cke_dialog_tr{background-position:-16px -457px;}.cke_skin_office2003 .cke_dialog_tc{background-position:0 -136px;background-repeat:repeat-x;height:16px;top:0;left:16px;right:16px;}.cke_skin_office2003 .cke_dialog_bl{background-position:-16px -196px;height:51px;width:30px;bottom:0;left:0;}.cke_skin_office2003 .cke_rtl .cke_dialog_bl{background-position:-16px -517px;}.cke_skin_office2003 .cke_dialog_br{background-position:-16px -263px;height:51px;width:30px;bottom:0;right:0;}.cke_skin_office2003 .cke_rtl .cke_dialog_br{background-position:-16px -584px;}.cke_skin_office2003 .cke_dialog_bc{background-position:0 -330px;background-repeat:repeat-x;height:51px;bottom:0;left:30px;right:30px;}.cke_skin_office2003 .cke_dialog_ml,.cke_skin_office2003 .cke_dialog_mr{background-image:url(images/dialog_sides.png);background-repeat:repeat-y;position:absolute;width:16px;top:16px;bottom:51px;_background-image:url(images/dialog_sides.gif);_top:auto;}.cke_skin_office2003 .cke_rtl .cke_dialog_ml,.cke_skin_office2003 .cke_rtl .cke_dialog_mr{background-image:url(images/dialog_sides_rtl.png);_background-image:url(images/dialog_sides.gif);}.cke_skin_office2003 .cke_dialog_ml{background-position:0 0;left:0;}.cke_skin_office2003 .cke_dialog_mr{background-position:-16px 0;right:0;}.cke_skin_office2003 .cke_browser_iequirks .cke_dialog_ml,.cke_skin_office2003 .cke_browser_iequirks .cke_dialog_mr{margin-top:3px;}.cke_skin_office2003 .cke_dialog_title{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -678px;background-repeat:repeat-x;font-weight:bold;font-size:14pt;color:#0E3460;background-color:#8db1ff;padding:3px 10px 26px 10px;cursor:move;position:relative;}.cke_skin_office2003 .cke_browser_ie.cke_rtl .cke_dialog_title{position:static!important;unicode-bidi:bidi-override;}.cke_skin_office2003 .cke_dialog_contents{background-color:#f7f8fd;border:#2b66c9 1px solid;overflow:auto;padding:5px 10px;}.cke_skin_office2003 .cke_dialog_footer{background-color:#8db1ff;text-align:right;}.cke_skin_office2003 .cke_rtl .cke_dialog_footer{text-align:left;}.cke_skin_office2003 .cke_dialog_tabs{height:23px;background-color:#8db1ff;display:inline-block;margin-left:10px;margin-right:10px;margin-top:-23px;position:absolute;z-index:2;}.cke_skin_office2003 .cke_rtl .cke_dialog_tabs{right:10px;}.cke_skin_office2003 a.cke_dialog_tab,.cke_skin_office2003 a:link.cke_dialog_tab,.cke_skin_office2003 a:active.cke_dialog_tab,.cke_skin_office2003 a:hover.cke_dialog_tab,.cke_skin_office2003 a:visited.cke_dialog_tab{color:#0E3460;border-left:1px solid #2b66c9;border-right:1px solid #2b66c9;border-top:1px solid #2b66c9;height:14px;padding:4px 5px;display:inline-block;cursor:pointer;}.cke_skin_office2003 .cke_browser_gecko18 a.cke_dialog_tab,.cke_skin_office2003 .cke_browser_gecko18 a:link.cke_dialog_tab,.cke_skin_office2003 .cke_browser_gecko18 a:active.cke_dialog_tab,.cke_skin_office2003 .cke_browser_gecko18 a:hover.cke_dialog_tab,.cke_skin_office2003 .cke_browser_gecko18 a:visited.cke_dialog_tab{display:inline;position:relative;top:6px;}.cke_skin_office2003 a:hover.cke_dialog_tab{background-color:#f7f8fd;}.cke_skin_office2003 a.cke_dialog_tab_selected,.cke_skin_office2003 a:link.cke_dialog_tab_selected,.cke_skin_office2003 a:active.cke_dialog_tab_selected,.cke_skin_office2003 a:hover.cke_dialog_tab_selected,.cke_skin_office2003 a:visited.cke_dialog_tab_selected{border-bottom:1px solid #f7f8fd;background-color:#f7f8fd;font-weight:bold;cursor:default;}
+.cke_skin_office2003 .cke_single_page .cke_dialog_tabs{display:none;}.cke_skin_office2003 .cke_single_page .cke_dialog_title{padding-bottom:3px;}.cke_skin_office2003 .cke_dialog_ui_vbox table,.cke_skin_office2003 .cke_dialog_ui_hbox table{margin:auto;}.cke_skin_office2003 .cke_dialog_ui_vbox_child{padding:5px 0;}.cke_skin_office2003 input.cke_dialog_ui_input_text,.cke_skin_office2003 input.cke_dialog_ui_input_password{background-color:white;border:none;padding:0;width:100%;height:14px;}.cke_skin_office2003 div.cke_dialog_ui_input_text,.cke_skin_office2003 div.cke_dialog_ui_input_password{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_office2003 textarea.cke_dialog_ui_input_textarea{background-color:white;border:none;padding:0;width:100%;_width:99%;overflow:auto;resize:none;}.cke_skin_office2003 div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_office2003 div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default;}.cke_skin_office2003 .cke_dialog_ui_hbox{width:100%;}.cke_skin_office2003 .cke_dialog_ui_hbox_first,.cke_skin_office2003 .cke_dialog_ui_hbox_child,.cke_skin_office2003 .cke_dialog_ui_hbox_last{vertical-align:top;}.cke_skin_office2003 .cke_ltr .cke_dialog_ui_hbox_first,.cke_skin_office2003 .cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px;}.cke_skin_office2003 .cke_rtl .cke_dialog_ui_hbox_first,.cke_skin_office2003 .cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px;}.cke_skin_office2003 a.cke_dialog_ui_button{border-collapse:separate;cursor:default;}.cke_skin_office2003 span.cke_dialog_ui_button{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -678px;background-repeat:repeat-x;border:#0E3460 1px solid;padding:2px 10px;text-align:center;color:#0E3460;background-color:#8db1ff;display:inline-block;cursor:default;}.cke_skin_office2003 .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button{display:block;}.cke_skin_office2003 a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3;}.cke_skin_office2003 a:focus span.cke_dialog_ui_button,.cke_skin_office2003 a:active span.cke_dialog_ui_button{background-color:#8db1ff;}.cke_skin_office2003 .cke_dialog_footer_buttons{display:inline-table;margin-right:12px;margin-left:12px;width:auto;position:relative;}.cke_skin_office2003 .cke_browser_gecko18 .cke_dialog_footer_buttons{display:inline;}.cke_skin_office2003 .cke_dialog_footer_buttons span.cke_dialog_ui_button{width:60px;margin:7px 0;}.cke_skin_office2003 strong{font-weight:bold;}.cke_skin_office2003 .cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:-20px -655px;position:absolute;cursor:pointer;text-align:center;height:21px;width:21px;top:4px;_background-image:url(images/sprites_ie6.png);}.cke_skin_office2003 .cke_dialog_close_button span{display:none;}.cke_skin_office2003 .cke_ltr .cke_dialog_close_button{right:10px;_right:22px;}.cke_skin_office2003 .cke_rtl .cke_dialog_close_button{left:10px;_left:16px;_top:6px;}.cke_skin_office2003 .cke_browser_ie6.cke_rtl .cke_dialog_close_button{position:relative;float:left;margin-top:-55px;margin-left:-7px;}.cke_skin_office2003 .cke_browser_iequirks.cke_rtl.cke_single_page .cke_dialog_close_button{margin-top:-32px;}.cke_skin_office2003 .cke_browser_iequirks.cke_ltr .cke_dialog_close_button{margin-top:0;}.cke_skin_office2003 .cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white;}.cke_skin_office2003 iframe.cke_dialog_ui_input_file{width:100%;height:25px;}.cke_skin_office2003 .cke_dialog .cke_dark_background{background-color:#eaead1;}.cke_skin_office2003 .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_office2003 .cke_dialog .cke_centered{text-align:center;}.cke_skin_office2003 .cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px;}
+.cke_skin_office2003 .cke_rtl .cke_dialog a.cke_btn_reset{float:left;}.cke_skin_office2003 .cke_dialog a.cke_btn_locked,.cke_skin_office2003 .cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px;}.cke_skin_office2003 .cke_rtl .cke_dialog a.cke_btn_locked,.cke_skin_office2003 .cke_rtl .cke_dialog a.cke_btn_unlocked{float:right;}.cke_skin_office2003 .cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif);}.cke_skin_office2003 .cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer;cursor:hand;}.cke_skin_office2003 .cke_dialog #ImagePreviewBox{white-space:normal;border:2px ridge black;overflow:scroll;height:160px;width:230px;padding:2px;background-color:white;}.cke_skin_office2003 .cke_dialog #ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4;}.cke_skin_office2003 .cke_dialog #FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white;}.cke_skin_office2003 .cke_dialog .cke_dark_background{text-align:center;background-color:#eaead1;font-size:14px;}.cke_skin_office2003 .cke_dialog .cke_light_background{text-align:center;background-color:#ffffbe;}.cke_skin_office2003 .cke_dialog .cke_hand{cursor:pointer;cursor:hand;}.cke_skin_office2003 .cke_disabled{color:#a0a0a0;}.cke_skin_office2003 .cke_hc .cke_dialog_title,.cke_skin_office2003 .cke_hc .cke_dialog_tabs,.cke_skin_office2003 .cke_hc .cke_dialog_contents,.cke_skin_office2003 .cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid;}.cke_skin_office2003 .cke_hc .cke_dialog_title{border-top:1px solid;}.cke_skin_office2003 .cke_hc .cke_dialog_footer{border-bottom:1px solid;}.cke_skin_office2003 .cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;cursor:hand;font-weight:bold;position:relative;top:3px;}
Index: /trunk/filemanager/tp/ckeditor/skins/office2003/editor.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/skins/office2003/editor.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/skins/office2003/editor.css	(revision 2000)
@@ -0,0 +1,13 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_office2003 *,.cke_skin_office2003 a:hover,.cke_skin_office2003 a:link,.cke_skin_office2003 a:visited,.cke_skin_office2003 a:active{margin:0;padding:0;border:0;background:transparent;text-decoration:none;font:normal normal normal 100% Sans-Serif;width:auto;height:auto;border-collapse:collapse;text-align:left;vertical-align:baseline;white-space:nowrap;cursor:auto;color:#000;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_skin_office2003 .cke_rtl *,.cke_skin_office2003 .cke_rtl a:hover,.cke_skin_office2003 .cke_rtl a:link,.cke_skin_office2003 .cke_rtl a:visited,.cke_skin_office2003 .cke_rtl a:active,.cke_rtl .cke_skin_office2003 *,.cke_rtl .cke_skin_office2003 a:hover,.cke_rtl .cke_skin_office2003 a:link,.cke_rtl .cke_skin_office2003 a:visited,.cke_rtl .cke_skin_office2003 a:active{text-align:right;}.cke_skin_office2003 iframe{vertical-align:inherit;}.cke_skin_office2003 textarea{white-space:pre;}.cke_skin_office2003 .cke_browser_gecko textarea{cursor:text;}.cke_skin_office2003 .cke_browser_gecko textarea[disabled]{cursor:default;}.cke_skin_office2003 input[type="text"],.cke_skin_office2003 input[type="password"]{cursor:text;}.cke_skin_office2003 input[type="text"][disabled],.cke_skin_office2003 input[type="password"][disabled]{cursor:default;}.cke_skin_office2003 .cke_editor{display:inline-table;width:100%;}.cke_skin_office2003,.cke_skin_office2003 .cke_wrapper{display:block;}.cke_skin_office2003 .cke_top,.cke_skin_office2003 .cke_bottom{background-color:#f7f8fd;}.cke_skin_office2003 .cke_top{border-top:solid 1px #fafaf5;border-left:solid 1px #fafaf5;border-right:solid 1px #696969;border-bottom:solid 2px #696969;}.cke_skin_office2003 .cke_rtl .cke_top{border-left:solid 1px #696969;border-right:solid 1px #fafaf5;}.cke_skin_office2003 .cke_bottom{border-left:solid 1px #696969;border-right:solid 1px #696969;border-bottom:solid 1px #696969;}.cke_skin_office2003 .cke_contents{border:solid 1px #696969;}.cke_skin_office2003 .cke_focus{outline:auto 5px -webkit-focus-ring-color;}.cke_skin_office2003 textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;white-space:pre;background-color:#fff;}.cke_skin_office2003 .cke_resizer{width:12px;height:12px;margin-top:16px;display:block;float:right;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1088px;background-repeat:no-repeat;cursor:se-resize;}.cke_skin_office2003 .cke_maximized .cke_resizer{display:none;}.cke_skin_office2003 .cke_rtl .cke_resizer{cursor:sw-resize;background-position:0 -1115px;float:left;}.cke_skin_office2003 .cke_browser_ie6 .cke_contents textarea,.cke_skin_office2003 .cke_browser_ie7 .cke_contents textarea{position:absolute;}.cke_skin_office2003 .cke_panel{border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.cke_skin_office2003 .cke_panel iframe{width:100%;height:100%;}html.cke_skin_office2003_container{overflow:auto;overflow-x:hidden;}body.cke_panel_frame{overflow:auto;overflow-x:hidden;}ul.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap;}li.cke_panel_listItem{margin:0;}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit;text-decoration:none;overflow:hidden;text-overflow:ellipsis;}* html .cke_panel_listItem a{width:100%;color:#000;}*:first-child+html .cke_panel_listItem a{color:#000;}.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff;}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff;}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px;}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px;}
+.cke_skin_office2003 .cke_button_textcolor_panel,.cke_skin_office2003 .cke_button_bgcolor_panel{width:150px;height:135px;}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000;}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left;}.cke_rtl span.cke_colorbox{float:right;}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;}.cke_rtl a.cke_colorbox{float:right;}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff;}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff;}@media print{.cke_skin_office2003 .cke_toolbox{display:none;}}.cke_skin_office2003 .cke_browser_webkit .cke_toolbox,.cke_skin_office2003 .cke_browser_webkit .cke_toolbox>span{white-space:normal;}.cke_skin_office2003 a.cke_toolbox_collapser,.cke_skin_office2003 a:hover.cke_toolbox_collapser{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:3px -1026px;background-repeat:no-repeat;width:11px;height:11px;float:right;border:outset 1px;margin:11px 2px 2px;cursor:pointer;}.cke_skin_office2003 .cke_rtl a.cke_toolbox_collapser,.cke_skin_office2003 .cke_rtl a:hover.cke_toolbox_collapser{float:left;}.cke_skin_office2003 a.cke_toolbox_collapser_min,.cke_skin_office2003 a:hover.cke_toolbox_collapser_min{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:4px -1047px;background-repeat:no-repeat;margin:2px;}.cke_skin_office2003 .cke_rtl a.cke_toolbox_collapser_min,.cke_skin_office2003 .cke_rtl a:hover.cke_toolbox_collapser_min{background-position:4px -1068px;}.cke_skin_office2003 .cke_toolbar{background-color:#d6dff7;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -962px;background-repeat:repeat-x;display:inline-block;float:left;}.cke_skin_office2003 .cke_rtl .cke_toolbar{float:right;}.cke_skin_office2003 .cke_toolgroup{display:inline-block;float:left;height:28px;}.cke_skin_office2003 .cke_browser_ie .cke_toolgroup{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_toolgroup{float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolgroup{#float:none;}.cke_skin_office2003 .cke_separator{display:inline-block;float:left;border-left:solid 1px #B2CBFF;margin:6px 2px;height:16px;}.cke_skin_office2003 .cke_browser_ie .cke_separator{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_separator{float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_separator{#float:none;}.cke_skin_office2003 .cke_break{clear:left;}.cke_skin_office2003 .cke_rtl .cke_break{clear:right;}.cke_skin_office2003 .cke_toolbar_start{display:inline-block;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;background-position:-27px -765px;width:10px;height:28px;float:left;}.cke_skin_office2003 .cke_browser_ie .cke_toolbar_start{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_toolbar_start{background-position:-27px -816px;float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_start{#float:none;}.cke_skin_office2003 .cke_toolbar_end{display:inline-block;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;background-position:-29px -861px;width:4px;height:28px;float:left;}.cke_skin_office2003 .cke_browser_ie .cke_toolbar_end{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_toolbar_end{background-position:-29px -907px;float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_end{#float:none;}.cke_skin_office2003 .cke_button a,.cke_skin_office2003 .cke_button a:hover,.cke_skin_office2003 .cke_button a:focus,.cke_skin_office2003 .cke_button a:active,.cke_skin_office2003 .cke_button a.cke_off{border:solid 1px transparent;border-radius:3px;outline:none;padding-top:2px;padding-left:4px;padding-right:4px;padding-bottom:2px;margin-top:2px;height:18px;vertical-align:top;_border:none;_margin:3px 1px 1px 1px;cursor:default;display:inline-block;}
+.cke_skin_office2003 .cke_button a,.cke_skin_office2003 .cke_button a.cke_off{filter:alpha(opacity=70);opacity:.70;-moz-border-radius:3px;-webkit-border-radius:3px;}.cke_skin_office2003 .cke_hc .cke_button a,.cke_skin_office2003 .cke_hc .cke_button a.cke_off{opacity:1.0;filter:alpha(opacity=100);}.cke_skin_office2003 .cke_button a.cke_on{border:solid 1px #316ac5;background-color:#c1d2ee;filter:alpha(opacity=100);opacity:1;_margin:2px 0 0 0;}.cke_skin_office2003 .cke_hc .cke_button a.cke_on{padding:0 2px!important;border-width:3px;}.cke_skin_office2003 .cke_button a.cke_disabled,.cke_skin_office2003 .cke_button a:hover.cke_disabled,.cke_skin_office2003 .cke_button a:focus.cke_disabled,.cke_skin_office2003 .cke_button a:active.cke_disabled{border:solid 1px transparent;filter:alpha(opacity=30);opacity:.3;vertical-align:top;_border:none;_margin:3px 1px 1px 1px;}.cke_skin_office2003 .cke_hc .cke_button a.cke_disabled,.cke_skin_office2003 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled{filter:alpha(opacity=60);opacity:.6;}.cke_skin_office2003 .cke_button a:hover.cke_on,.cke_skin_office2003 .cke_button a:focus.cke_on,.cke_skin_office2003 .cke_button a:active.cke_on,.cke_skin_office2003 .cke_button a:hover.cke_off,.cke_skin_office2003 .cke_button a:focus.cke_off,.cke_skin_office2003 .cke_button a:active.cke_off{border:solid 1px #316ac5;background-color:#dff1ff;filter:alpha(opacity=100);opacity:1;vertical-align:top;_margin:2px 0 0 0;padding:2px 4px;}.cke_skin_office2003 .cke_hc .cke_button a:hover.cke_on,.cke_skin_office2003 .cke_hc .cke_button a:focus.cke_on,.cke_skin_office2003 .cke_hc .cke_button a:active.cke_on,.cke_skin_office2003 .cke_hc .cke_button a:hover.cke_off,.cke_skin_office2003 .cke_hc .cke_button a:focus.cke_off,.cke_skin_office2003 .cke_hc .cke_button a:active.cke_off{padding:0 2px!important;border-width:3px;}.cke_skin_office2003 .cke_button .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;display:inline-block;}.cke_skin_office2003 .cke_button .cke_label{display:none;padding-left:3px;vertical-align:3px;cursor:default;_background-image:url(images/sprites_ie6.png);_background-position:0 -970px;_background-repeat:repeat-x;}.cke_skin_office2003 .cke_button a:hover .cke_label{_background-color:#dff1ff;_background-image:none;}.cke_skin_office2003 .cke_button a.cke_on .cke_label{_background-color:#c1d2ee;_background-image:none;}.cke_skin_office2003 .cke_hc .cke_button .cke_label{padding:0;display:inline-block;}.cke_skin_office2003 .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_office2003 .cke_accessibility{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_office2003 .cke_button .cke_buttonarrow{display:inline-block;height:18px;width:8px;background-position:2px -1004px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;}.cke_skin_office2003 .cke_rtl .cke_button .cke_buttonarrow{background-position:0 -1004px;}.cke_skin_office2003 .cke_browser_gecko18 .cke_toolbar,.cke_skin_office2003 .cke_browser_gecko18 .cke_button a,.cke_skin_office2003 .cke_browser_gecko18 .cke_button a.cke_off,.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_icon,.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_buttonarrow,.cke_skin_office2003 .cke_browser_gecko18 .cke_separator,.cke_skin_office2003 .cke_browser_gecko18 .cke_toolbar_start,.cke_skin_office2003 .cke_browser_gecko18 .cke_toolbar_end{display:block;float:left;}.cke_skin_office2003 .cke_browser_gecko18 .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_toolbar,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button a,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button a.cke_off,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button .cke_icon,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button .cke_buttonarrow,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_separator,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_toolbar_start,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_toolbar_end{float:right;}
+.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_label,.cke_skin_office2003 .cke_browser_gecko18 .cke_break{float:left;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl span.cke_inline_label{float:right;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button .cke_label,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_break{float:right;}.cke_skin_office2003 .cke_browser_gecko18 .cke_separator{margin-top:4px;}.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_label{padding-top:3px;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolgroup,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_separator,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_start,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_end{float:none;}.cke_skin_office2003 .cke_browser_ie8 .cke_toolbar,.cke_skin_office2003 .cke_browser_ie8 .cke_toolgroup{vertical-align:top;}.cke_skin_office2003 .cke_browser_iequirks.cke_browser_ie8 .cke_toolbar,.cke_skin_office2003 .cke_browser_iequirks.cke_browser_ie8 .cke_toolgroup{vertical-align:baseline;}.cke_skin_office2003 .cke_contextmenu{padding:2px;}.cke_skin_office2003 .cke_menuitem a{display:block;}.cke_skin_office2003 .cke_menuitem span{cursor:default;}.cke_skin_office2003 .cke_menuitem a:hover,.cke_skin_office2003 .cke_menuitem a:focus,.cke_skin_office2003 .cke_menuitem a:active{background-color:#8db1ff;display:block;}.cke_skin_office2003 .cke_menuitem a.cke_disabled:hover,.cke_skin_office2003 .cke_menuitem a.cke_disabled:focus,.cke_skin_office2003 .cke_menuitem a.cke_disabled:active{background-color:transparent!important;}.cke_skin_office2003 .cke_menuitem .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;background-color:transparent;width:16px;height:16px;float:left;}.cke_skin_office2003 .cke_menuitem .cke_disabled .cke_icon{filter:alpha(opacity=70);opacity:.70;}.cke_skin_office2003 .cke_menuitem .cke_icon_wrapper{background-color:#f7f8fd;border:solid 4px #f7f8fd;width:16px;height:16px;float:left;filter:alpha(opacity=70);opacity:.70;}.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_icon_wrapper{float:right;}.cke_skin_office2003 .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_office2003 .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_office2003 .cke_menuitem a:active .cke_icon_wrapper{background-color:#9d9d9d;border:solid 4px #9d9d9d;filter:alpha(opacity=70);opacity:.70;}.cke_skin_office2003 .cke_menuitem a:hover.cke_disabled .cke_icon_wrapper,.cke_skin_office2003 .cke_menuitem a:focus.cke_disabled .cke_icon_wrapper,.cke_skin_office2003 .cke_menuitem a:active.cke_disabled .cke_icon_wrapper{background-color:#f7f8fd;border:solid 4px #f7f8fd;}.cke_skin_office2003 .cke_menuitem .cke_label{display:block;padding-right:3px;padding-top:5px;padding-left:4px;height:19px;margin-left:24px;background-color:#fff;_overflow:hidden;_width:80px;filter:alpha(opacity=70);opacity:.70;}.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_label{padding-right:0;margin-left:0;padding-left:3px;margin-right:28px;}.cke_skin_office2003 .cke_menuitem a.cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.30;}.cke_skin_office2003 .cke_menuitem a:hover .cke_label,.cke_skin_office2003 .cke_menuitem a:focus .cke_label,.cke_skin_office2003 .cke_menuitem a:active .cke_label{background-color:#8db1ff;}.cke_skin_office2003 .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_office2003 .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_office2003 .cke_menuitem a.cke_disabled:active .cke_label{background-color:transparent;}.cke_skin_office2003 .cke_menuseparator{background-color:#f7f8fd;height:2px;filter:alpha(opacity=70);opacity:.70;_font-size:0;}.cke_skin_office2003 .cke_menuarrow{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1071px;background-repeat:no-repeat;height:5px;width:3px;float:right;margin-right:2px;margin-top:3px;}.cke_rtl .cke_skin_office2003 .cke_menuarrow{float:left;margin-right:0;margin-left:2px;background-position:0 -1050px;}.cke_browser_ie.cke_ltr .cke_skin_office2003 .cke_menuarrow{position:absolute;right:2px;}
+.cke_browser_ie.cke_rtl .cke_skin_office2003 .cke_menuarrow{position:absolute;left:2px;}.cke_skin_office2003 .cke_rcombo{display:inline-block;margin-left:2px;margin-right:2px;margin-top:2px;vertical-align:top;float:left;}.cke_skin_office2003 .cke_browser_ie .cke_rcombo{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_rcombo{float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rcombo{#float:none;}.cke_skin_office2003 .cke_rcombopanel{border:1px solid #316ac5;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;}.cke_skin_office2003 .cke_rcombo a{display:inline-block;float:left;filter:alpha(opacity=70);opacity:.70;}.cke_skin_office2003 .cke_rtl .cke_rcombo a{float:right;}.cke_skin_office2003 .cke_hc .cke_rcombo a{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_office2003 .cke_rcombo .cke_label{display:inline-block;float:left;line-height:24px;height:24px;vertical-align:top;padding-left:4px;padding-right:5px;filter:alpha(opacity=70);opacity:.70;_background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);_background-position:0 -962px;_background-repeat:repeat-x;}.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_label{float:right;padding-right:4px;padding-left:5px;}.cke_skin_office2003 .cke_hc .cke_rcombo .cke_label{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_office2003 .cke_rcombo .cke_inline_label{color:#fff;}.cke_skin_office2003 .cke_rcombo .cke_text{border:1px solid #8f8f73;background-color:#fff;height:14px;width:60px;padding-top:4px;padding-bottom:4px;padding-left:5px;padding-right:5px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:top;}.cke_skin_office2003 .cke_ltr .cke_rcombo .cke_text{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_text{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.cke_skin_office2003 .cke_browser_iequirks .cke_rcombo .cke_text{height:22px;}.cke_skin_office2003 .cke_rcombo .cke_openbutton{display:inline-block;background-position:5px -1002px;background-image:url(images/sprites.png);background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;border-top:1px solid #8f8f73;border-bottom:1px solid #8f8f73;width:14px;height:22px;}.cke_skin_office2003 .cke_ltr .cke_rcombo .cke_openbutton{border-right:1px solid #8f8f73;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_openbutton{border-left:1px solid #8f8f73;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.cke_skin_office2003 .cke_rcombo .cke_off a:hover,.cke_skin_office2003 .cke_rcombo .cke_off a:focus,.cke_skin_office2003 .cke_rcombo .cke_off a:active,.cke_skin_office2003 .cke_rcombo .cke_on a{filter:alpha(opacity=100);opacity:1;}.cke_skin_office2003 .cke_rcombo .cke_off a:hover .cke_text,.cke_skin_office2003 .cke_rcombo .cke_off a:focus .cke_text,.cke_skin_office2003 .cke_rcombo .cke_off a:active .cke_text,.cke_skin_office2003 .cke_rcombo .cke_on .cke_text{border-color:#316ac5;}.cke_skin_office2003 .cke_rcombo .cke_off a:hover .cke_openbutton,.cke_skin_office2003 .cke_rcombo .cke_off a:focus .cke_openbutton,.cke_skin_office2003 .cke_rcombo .cke_off a:active .cke_openbutton,.cke_skin_office2003 .cke_rcombo .cke_on .cke_openbutton{border-color:#316ac5;background-color:#dff1ff;}.cke_skin_office2003 .cke_rcombo .cke_on .cke_text{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;}.cke_skin_office2003 .cke_rcombo .cke_on .cke_openbutton{-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;}
+.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.3;}.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=70);opacity:.7;}.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_text,.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=50);opacity:.5;}.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_text,.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=80);opacity:.8;}.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_text{color:#fff;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo,.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo .cke_label,.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo .cke_text,.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo .cke_openbutton,.cke_skin_office2003 .cke_browser_webkit .cke_rcombo .cke_label,.cke_skin_office2003 .cke_browser_webkit .cke_rcombo .cke_text,.cke_skin_office2003 .cke_browser_webkit .cke_rcombo .cke_openbutton{display:block;float:left;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_label,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_text,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_openbutton,.cke_skin_office2003 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_label,.cke_skin_office2003 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_text,.cke_skin_office2003 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_openbutton{float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_rcombo,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_rcombo a,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_rcombo .cke_label{float:none;}@media print{.cke_path{display:none;}}.cke_skin_office2003 .cke_path{padding:3px 3px 0 3px;display:inline-block;float:left;}.cke_skin_office2003 .cke_rtl .cke_path{float:right;}.cke_skin_office2003 .cke_path a,.cke_skin_office2003 .cke_path .cke_empty{display:inline-block;float:left;border:solid 1px #f7f8fd;background-color:#f7f8fd;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;margin-bottom:3px;}.cke_skin_office2003 .cke_path .cke_empty{visibility:hidden;}.cke_skin_office2003 .cke_rtl .cke_path a,.cke_skin_office2003 .cke_rtl .cke_path cke_empty{float:right;}.cke_skin_office2003 .cke_path a:hover,.cke_skin_office2003 .cke_path a:focus,.cke_skin_office2003 .cke_path a:active{border:solid 1px #316ac5;background-color:#dff1ff;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;outline:none;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_path a,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_path .cke_empty{float:none;}.cke_skin_office2003 .cke_button_source .cke_icon{background-position:0 0;}.cke_skin_office2003 .cke_button_newpage .cke_icon{background-position:0 -48px;}.cke_skin_office2003 .cke_button_preview .cke_icon{background-position:0 -64px;}.cke_skin_office2003 .cke_button_cut .cke_icon{background-position:0 -96px;}.cke_skin_office2003 .cke_button_copy .cke_icon{background-position:0 -112px;}.cke_skin_office2003 .cke_button_paste .cke_icon{background-position:0 -128px;}.cke_skin_office2003 .cke_button_pastetext .cke_icon{background-position:0 -144px;}.cke_skin_office2003 .cke_button_find .cke_icon{background-position:0 -240px;}.cke_skin_office2003 .cke_button_replace .cke_icon{background-position:0 -256px;}.cke_skin_office2003 .cke_button_selectAll .cke_icon{background-position:0 -272px;}.cke_skin_office2003 .cke_button_removeFormat .cke_icon{background-position:0 -288px;}.cke_skin_office2003 .cke_button_bold .cke_icon{background-position:0 -304px;}.cke_skin_office2003 .cke_button_italic .cke_icon{background-position:0 -320px;}.cke_skin_office2003 .cke_button_underline .cke_icon{background-position:0 -336px;}.cke_skin_office2003 .cke_button_strike .cke_icon{background-position:0 -352px;}.cke_skin_office2003 .cke_button_subscript .cke_icon{background-position:0 -368px;}.cke_skin_office2003 .cke_button_superscript .cke_icon{background-position:0 -384px;}
+.cke_skin_office2003 .cke_button_table .cke_icon{background-position:0 -608px;}.cke_skin_office2003 .cke_button_horizontalrule .cke_icon{background-position:0 -624px;}.cke_skin_office2003 .cke_button_smiley .cke_icon{background-position:0 -640px;}.cke_skin_office2003 .cke_button_link .cke_icon{background-position:0 -528px;}.cke_skin_office2003 .cke_button_unlink .cke_icon{background-position:0 -544px;}.cke_skin_office2003 .cke_button_anchor .cke_icon{background-position:0 -560px;}.cke_skin_office2003 .cke_button_image .cke_icon{background-position:0 -576px;}.cke_skin_office2003 .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_office2003 .cke_button_specialchar .cke_icon{background-position:0 -656px;}.cke_skin_office2003 .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_office2003 .cke_button_print .cke_icon{background-position:0 -176px;}.cke_skin_office2003 .cke_button_checkspell .cke_icon,.cke_skin_office2003 .cke_button_scayt .cke_icon{background-position:0 -192px;}.cke_skin_office2003 .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_office2003 .cke_button_textcolor .cke_icon{background-position:0 -704px;}.cke_skin_office2003 .cke_button_bgcolor .cke_icon{background-position:0 -720px;}.cke_skin_office2003 .cke_button_form .cke_icon{background-position:0 -752px;}.cke_skin_office2003 .cke_button_checkbox .cke_icon{background-position:0 -768px;}.cke_skin_office2003 .cke_button_radio .cke_icon{background-position:0 -784px;}.cke_skin_office2003 .cke_button_textfield .cke_icon{background-position:0 -800px;}.cke_skin_office2003 .cke_button_textarea .cke_icon{background-position:0 -816px;}.cke_skin_office2003 .cke_button_showblocks .cke_icon{background-position:0 -1136px;}.cke_skin_office2003 .cke_button_select .cke_icon{background-position:0 -832px;}.cke_skin_office2003 .cke_button_button .cke_icon{background-position:0 -848px;}.cke_skin_office2003 .cke_button_imagebutton .cke_icon{background-position:0 -864px;}.cke_skin_office2003 .cke_button_hiddenfield .cke_icon{background-position:0 -880px;}.cke_skin_office2003 .cke_button_undo .cke_icon{background-position:0 -208px;}.cke_skin_office2003 .cke_rtl .cke_button_undo .cke_icon{background-position:0 -224px;}.cke_skin_office2003 .cke_button_redo .cke_icon{background-position:0 -224px;}.cke_skin_office2003 .cke_rtl .cke_button_redo .cke_icon{background-position:0 -208px;}.cke_skin_office2003 .cke_button_templates .cke_icon{background-position:0 -80px;}.cke_skin_office2003 .cke_button_numberedlist .cke_icon{background-position:0 -400px;}.cke_skin_office2003 .cke_button_bulletedlist .cke_icon{background-position:0 -416px;}.cke_skin_office2003 .cke_button_outdent .cke_icon{background-position:0 -432px;}.cke_skin_office2003 .cke_button_indent .cke_icon{background-position:0 -448px;}.cke_skin_office2003 .cke_button_justifyleft .cke_icon{background-position:0 -464px;}.cke_skin_office2003 .cke_button_justifycenter .cke_icon{background-position:0 -480px;}.cke_skin_office2003 .cke_button_justifyright .cke_icon{background-position:0 -496px;}.cke_skin_office2003 .cke_button_justifyblock .cke_icon{background-position:0 -512px;}.cke_skin_office2003 .cke_button_blockquote .cke_icon{background-position:0 -1152px;}.cke_skin_office2003 .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_office2003 .cke_button_pastefromword .cke_icon{background-position:0 -160px;}.cke_skin_office2003 .cke_button_save .cke_icon{background-position:0 -32px;}.cke_skin_office2003 .cke_button_about .cke_icon{background-position:0 -736px;}.cke_skin_office2003 .cke_button_maximize .cke_icon{background-position:0 -1040px;}.cke_skin_office2003 .cke_button_source .cke_label{display:inline;}.cke_skin_office2003 .cke_styles_panel{width:150px;height:170px;}.cke_skin_office2003 .cke_format_panel{width:150px;height:170px;}.cke_skin_office2003 .cke_font_panel{width:150px;height:170px;}.cke_skin_office2003 .cke_fontSize_panel{height:170px;}.cke_skin_office2003 .cke_fontSize .cke_text{width:20px;}.cke_skin_office2003 .cke_browser_iequirks .cke_fontSize .cke_text{width:32px;}
+html .cke_skin_office2003,html.cke_skin_office2003_container{visibility:visible;}
Index: /trunk/filemanager/tp/ckeditor/skins/v2/skin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/skins/v2/skin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/skins/v2/skin.js	(revision 2000)
@@ -0,0 +1,6 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.skins.add('v2',(function(){var a=[];if(CKEDITOR.env.ie&&CKEDITOR.env.version<7)a.push('icons.png','images/sprites_ie6.png','images/dialog_sides.gif');return{preload:a,editor:{css:['editor.css']},dialog:{css:['dialog.css']},templates:{css:['templates.css']},margins:[0,14,18,14]};})());if(CKEDITOR.dialog)CKEDITOR.dialog.on('resize',function(a){var b=a.data,c=b.width,d=b.height,e=b.dialog,f=!CKEDITOR.env.quirk;if(b.skin!='v2')return;e.parts.contents.setStyles({width:c+'px',height:d+'px'});if(!CKEDITOR.env.ie)return;setTimeout(function(){var g=e.parts.contents,h=g.getParent(),i=h.getParent(),j=i.getChild(2);j.setStyle('width',h.$.offsetWidth+'px');j=i.getChild(7);j.setStyle('width',h.$.offsetWidth-28+'px');j=i.getChild(4);j.setStyle('height',h.$.offsetHeight-31-14+'px');j=i.getChild(5);j.setStyle('height',h.$.offsetHeight-31-14+'px');},100);});
Index: /trunk/filemanager/tp/ckeditor/skins/v2/templates.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/skins/v2/templates.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/skins/v2/templates.css	(revision 2000)
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_v2 .cke_tpl_list{border:#dcdcdc 2px solid;background-color:#fff;overflow:auto;width:100%;height:220px;}.cke_skin_v2 .cke_tpl_item{margin:5px;padding:7px;border:#eee 1px solid;*width:88%;}.cke_skin_v2 .cke_tpl_preview{border-collapse:separate;text-indent:0;width:100%;}.cke_skin_v2 .cke_tpl_preview td{padding:2px;vertical-align:middle;}.cke_skin_v2 .cke_tpl_preview .cke_tpl_preview_img{width:100px;}.cke_skin_v2 .cke_tpl_preview span{white-space:normal;}.cke_skin_v2 .cke_tpl_title{font-weight:bold;}.cke_skin_v2 .cke_tpl_hover{border:#f93 1px solid!important;background-color:#fffacd!important;cursor:pointer;cursor:hand;}.cke_skin_v2 .cke_tpl_hover *{cursor:inherit;}.cke_skin_v2 .cke_tpl_empty,.cke_tpl_loading{text-align:center;padding:5px;}
Index: /trunk/filemanager/tp/ckeditor/skins/v2/dialog.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/skins/v2/dialog.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/skins/v2/dialog.css	(revision 2000)
@@ -0,0 +1,8 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+body .cke_dialog{visibility:visible;}.cke_skin_v2 .cke_dialog_body{margin-left:16px;margin-right:16px;margin-top:2px;margin-bottom:20px;position:relative;z-index:1;}.cke_skin_v2 .cke_dialog_tl,.cke_skin_v2 .cke_dialog_tr,.cke_skin_v2 .cke_dialog_tc,.cke_skin_v2 .cke_dialog_bl,.cke_skin_v2 .cke_dialog_br,.cke_skin_v2 .cke_dialog_bc{background-image:url(images/sprites.png);background-repeat:no-repeat;position:absolute;_background-image:url(images/sprites_ie6.png);}.cke_skin_v2 .cke_dialog_tl{background-position:-16px -16px;height:16px;width:16px;top:0;left:0;}.cke_skin_v2 .cke_rtl .cke_dialog_tl{background-position:-16px -397px;}.cke_skin_v2 .cke_dialog_tr{background-position:-16px -76px;height:16px;width:16px;top:0;right:0;}.cke_skin_v2 .cke_rtl .cke_dialog_tr{background-position:-16px -457px;}.cke_skin_v2 .cke_dialog_tc{background-position:0 -136px;background-repeat:repeat-x;height:16px;top:0;left:16px;right:16px;}.cke_skin_v2 .cke_dialog_bl{background-position:-16px -196px;height:51px;width:30px;bottom:0;left:0;}.cke_skin_v2 .cke_rtl .cke_dialog_bl{background-position:-16px -517px;}.cke_skin_v2 .cke_dialog_br{background-position:-16px -263px;height:51px;width:30px;bottom:0;right:0;}.cke_skin_v2 .cke_rtl .cke_dialog_br{background-position:-16px -584px;}.cke_skin_v2 .cke_dialog_bc{background-position:0 -330px;background-repeat:repeat-x;height:51px;bottom:0;left:30px;right:30px;}.cke_skin_v2 .cke_dialog_ml,.cke_skin_v2 .cke_dialog_mr{background-image:url(images/dialog_sides.png);background-repeat:repeat-y;position:absolute;width:16px;top:16px;bottom:51px;_background-image:url(images/dialog_sides.gif);_top:auto;}.cke_skin_v2 .cke_rtl .cke_dialog_ml,.cke_skin_v2 .cke_rtl .cke_dialog_mr{background-image:url(images/dialog_sides_rtl.png);_background-image:url(images/dialog_sides.gif);}.cke_skin_v2 .cke_dialog_ml{background-position:0 0;left:0;}.cke_skin_v2 .cke_dialog_mr{background-position:-16px 0;right:0;}.cke_skin_v2 .cke_browser_iequirks .cke_dialog_ml,.cke_skin_v2 .cke_browser_iequirks .cke_dialog_mr{margin-top:3px;}.cke_skin_v2 .cke_dialog_title{font-weight:bold;font-size:14pt;color:#737357;background-color:#e3e3c7;padding:3px 10px 26px 10px;cursor:move;position:relative;}.cke_skin_v2 .cke_browser_ie.cke_rtl .cke_dialog_title{position:static!important;unicode-bidi:bidi-override;}.cke_skin_v2 .cke_dialog_contents{background-color:#f1f1e3;border:#d5d59d 1px solid;overflow:auto;padding:5px 10px;}.cke_skin_v2 .cke_dialog_footer{background-color:#e3e3c7;text-align:right;}.cke_skin_v2 .cke_rtl .cke_dialog_footer{text-align:left;}.cke_skin_v2 .cke_dialog_tabs{height:23px;background-color:#e3e3c7;display:inline-block;margin-left:10px;margin-right:10px;margin-top:-23px;position:absolute;z-index:2;}.cke_skin_v2 .cke_rtl .cke_dialog_tabs{right:10px;}.cke_skin_v2 a.cke_dialog_tab,.cke_skin_v2 a:link.cke_dialog_tab,.cke_skin_v2 a:active.cke_dialog_tab,.cke_skin_v2 a:hover.cke_dialog_tab,.cke_skin_v2 a:visited.cke_dialog_tab{color:#737357;border-left:1px solid #d5d59d;border-right:1px solid #d5d59d;border-top:1px solid #d5d59d;height:14px;padding:4px 5px;display:inline-block;cursor:pointer;}.cke_skin_v2 .cke_browser_gecko18 a.cke_dialog_tab,.cke_skin_v2 .cke_browser_gecko18 a:link.cke_dialog_tab,.cke_skin_v2 .cke_browser_gecko18 a:active.cke_dialog_tab,.cke_skin_v2 .cke_browser_gecko18 a:hover.cke_dialog_tab,.cke_skin_v2 .cke_browser_gecko18 a:visited.cke_dialog_tab{display:inline;position:relative;top:6px;}.cke_skin_v2 a:hover.cke_dialog_tab{background-color:#f1f1e3;}.cke_skin_v2 a.cke_dialog_tab_selected,.cke_skin_v2 a:link.cke_dialog_tab_selected,.cke_skin_v2 a:active.cke_dialog_tab_selected,.cke_skin_v2 a:hover.cke_dialog_tab_selected,.cke_skin_v2 a:visited.cke_dialog_tab_selected{border-bottom:1px solid #f1f1e3;background-color:#f1f1e3;font-weight:bold;cursor:default;}.cke_skin_v2 .cke_single_page .cke_dialog_tabs{display:none;}.cke_skin_v2 .cke_single_page .cke_dialog_title{padding-bottom:3px;}.cke_skin_v2 .cke_dialog_ui_vbox table,.cke_skin_v2 .cke_dialog_ui_hbox table{margin:auto;}.cke_skin_v2 .cke_dialog_ui_vbox_child{padding:5px 0;}
+.cke_skin_v2 input.cke_dialog_ui_input_text,.cke_skin_v2 input.cke_dialog_ui_input_password{background-color:white;border:none;padding:0;width:100%;height:14px;}.cke_skin_v2 div.cke_dialog_ui_input_text,.cke_skin_v2 div.cke_dialog_ui_input_password{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_v2 textarea.cke_dialog_ui_input_textarea{background-color:white;border:none;padding:0;width:100%;_width:99%;overflow:auto;resize:none;}.cke_skin_v2 div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_v2 div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default;}.cke_skin_v2 .cke_dialog_ui_hbox{width:100%;}.cke_skin_v2 .cke_dialog_ui_hbox_first,.cke_skin_v2 .cke_dialog_ui_hbox_child,.cke_skin_v2 .cke_dialog_ui_hbox_last{vertical-align:top;}.cke_skin_v2 .cke_ltr .cke_dialog_ui_hbox_first,.cke_skin_v2 .cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px;}.cke_skin_v2 .cke_rtl .cke_dialog_ui_hbox_first,.cke_skin_v2 .cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px;}.cke_skin_v2 a.cke_dialog_ui_button{border-collapse:separate;cursor:default;}.cke_skin_v2 span.cke_dialog_ui_button{border:#737357 1px solid;padding:2px 10px;text-align:center;color:#3b3b1f;background-color:#c7c78f;display:inline-block;cursor:default;}.cke_skin_v2 .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button{display:block;}.cke_skin_v2 a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3;}.cke_skin_v2 a:focus span.cke_dialog_ui_button,.cke_skin_v2 a:active span.cke_dialog_ui_button{background-color:#e3e3c7;}.cke_skin_v2 .cke_dialog_footer_buttons{display:inline-table;margin-right:12px;margin-left:12px;width:auto;position:relative;}.cke_skin_v2 .cke_browser_gecko18 .cke_dialog_footer_buttons{display:inline;}.cke_skin_v2 .cke_dialog_footer_buttons span.cke_dialog_ui_button{width:60px;margin:7px 0;}.cke_skin_v2 strong{font-weight:bold;}.cke_skin_v2 .cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:-16px -651px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;_background-image:url(images/sprites_ie6.png);}.cke_skin_v2 .cke_dialog_close_button span{display:none;}.cke_skin_v2 .cke_dialog_close_button:hover{background-position:-16px -687px;}.cke_skin_v2 .cke_ltr .cke_dialog_close_button{right:10px;_right:22px;}.cke_skin_v2 .cke_rtl .cke_dialog_close_button{left:10px;_left:16px;_top:7px;}.cke_skin_v2 .cke_browser_ie6.cke_rtl .cke_dialog_close_button{position:relative;float:left;margin-top:-55px;margin-left:-7px;}.cke_skin_v2 .cke_browser_iequirks.cke_rtl.cke_single_page .cke_dialog_close_button{margin-top:-32px;}.cke_skin_v2 .cke_browser_iequirks.cke_ltr .cke_dialog_close_button{margin-top:0;}.cke_skin_v2 .cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white;}.cke_skin_v2 iframe.cke_dialog_ui_input_file{width:100%;height:25px;}.cke_skin_v2 .cke_dialog .cke_dark_background{background-color:#eaead1;}.cke_skin_v2 .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_v2 .cke_dialog .cke_centered{text-align:center;}.cke_skin_v2 .cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px;}.cke_skin_v2 .cke_rtl .cke_dialog a.cke_btn_reset{float:left;}.cke_skin_v2 .cke_dialog a.cke_btn_locked,.cke_skin_v2 .cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px;}.cke_skin_v2 .cke_rtl .cke_dialog a.cke_btn_locked,.cke_skin_v2 .cke_rtl .cke_dialog a.cke_btn_unlocked{float:right;}.cke_skin_v2 .cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif);}.cke_skin_v2 .cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer;cursor:hand;}.cke_skin_v2 .cke_dialog #ImagePreviewBox{white-space:normal;border:2px ridge black;overflow:scroll;height:160px;width:230px;padding:2px;background-color:white;}
+.cke_skin_v2 .cke_dialog #ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4;}.cke_skin_v2 .cke_dialog #FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white;}.cke_skin_v2 .cke_dialog .cke_dark_background{text-align:center;background-color:#eaead1;font-size:14px;}.cke_skin_v2 .cke_dialog .cke_light_background{text-align:center;background-color:#ffffbe;}.cke_skin_v2 .cke_dialog .cke_hand{cursor:pointer;cursor:hand;}.cke_skin_v2 .cke_disabled{color:#a0a0a0;}.cke_skin_v2 .cke_hc .cke_dialog_title,.cke_skin_v2 .cke_hc .cke_dialog_tabs,.cke_skin_v2 .cke_hc .cke_dialog_contents,.cke_skin_v2 .cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid;}.cke_skin_v2 .cke_hc .cke_dialog_title{border-top:1px solid;}.cke_skin_v2 .cke_hc .cke_dialog_footer{border-bottom:1px solid;}.cke_skin_v2 .cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;cursor:hand;font-weight:bold;position:relative;top:3px;}.cke_skin_v2 a.cke_smile img{border:2px solid #eaead1;}.cke_skin_v2 a.cke_smile:focus img,.cke_skin_v2 a.cke_smile:active img,.cke_skin_v2 a.cke_smile:hover img{border-color:#C7C78F;}
Index: /trunk/filemanager/tp/ckeditor/skins/v2/editor.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/skins/v2/editor.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/skins/v2/editor.css	(revision 2000)
@@ -0,0 +1,12 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_v2 *,.cke_skin_v2 a:hover,.cke_skin_v2 a:link,.cke_skin_v2 a:visited,.cke_skin_v2 a:active{margin:0;padding:0;border:0;background:transparent;text-decoration:none;font:normal normal normal 100% Sans-Serif;width:auto;height:auto;border-collapse:collapse;text-align:left;vertical-align:baseline;white-space:nowrap;cursor:auto;color:#000;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_skin_v2 .cke_rtl *,.cke_skin_v2 .cke_rtl a:hover,.cke_skin_v2 .cke_rtl a:link,.cke_skin_v2 .cke_rtl a:visited,.cke_skin_v2 .cke_rtl a:active,.cke_rtl .cke_skin_v2 *,.cke_rtl .cke_skin_v2 a:hover,.cke_rtl .cke_skin_v2 a:link,.cke_rtl .cke_skin_v2 a:visited,.cke_rtl .cke_skin_v2 a:active{text-align:right;}.cke_skin_v2 iframe{vertical-align:inherit;}.cke_skin_v2 textarea{white-space:pre;}.cke_skin_v2 .cke_browser_gecko textarea{cursor:text;}.cke_skin_v2 .cke_browser_gecko textarea[disabled]{cursor:default;}.cke_skin_v2 input[type="text"],.cke_skin_v2 input[type="password"]{cursor:text;}.cke_skin_v2 input[type="text"][disabled],.cke_skin_v2 input[type="password"][disabled]{cursor:default;}.cke_skin_v2 .cke_editor{display:inline-table;width:100%;}.cke_skin_v2{display:block;}.cke_skin_v2 .cke_wrapper{display:block;}.cke_skin_v2 .cke_browser_opera .cke_editor{display:table;}.cke_skin_v2 .cke_top,.cke_skin_v2 .cke_bottom{background-color:#efefde;}.cke_skin_v2 .cke_top{border-top:solid 1px #fafaf5;border-left:solid 1px #fafaf5;border-right:solid 1px #696969;border-bottom:solid 2px #696969;}.cke_skin_v2 .cke_rtl .cke_top{border-left:solid 1px #696969;border-right:solid 1px #fafaf5;}.cke_skin_v2 .cke_bottom{border-left:solid 1px #696969;border-right:solid 1px #696969;border-bottom:solid 1px #696969;}.cke_skin_v2 .cke_contents{border:solid 1px #696969;}.cke_skin_v2 .cke_focus{outline:auto 5px -webkit-focus-ring-color;}.cke_skin_v2 textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre;}.cke_skin_v2 .cke_browser_iequirks textarea.cke_source{_white-space:normal;}.cke_skin_v2 .cke_resizer{width:12px;height:12px;margin-top:16px;display:block;float:right;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -801px;background-repeat:no-repeat;cursor:se-resize;}.cke_skin_v2 .cke_rtl .cke_resizer{cursor:sw-resize;background-position:0 -828px;float:left;}.cke_skin_v2 .cke_maximized .cke_resizer{display:none;}.cke_skin_v2 .cke_browser_ie6 .cke_contents textarea,.cke_skin_v2 .cke_browser_ie7 .cke_contents textarea{position:absolute;}.cke_skin_v2 .cke_panel{border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.cke_skin_v2 .cke_panel iframe{width:100%;height:100%;}html.cke_skin_v2_container{overflow:auto;overflow-x:hidden;}body.cke_panel_frame{overflow:auto;overflow-x:hidden;}ul.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap;}li.cke_panel_listItem{margin:0;}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit;text-decoration:none;overflow:hidden;text-overflow:ellipsis;}* html .cke_panel_listItem a{width:100%;color:#000;}*:first-child+html .cke_panel_listItem a{color:#000;}.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff;}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff;}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px;}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px;}.cke_skin_v2 .cke_button_textcolor_panel,.cke_skin_v2 .cke_button_bgcolor_panel{width:150px;height:135px;}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}
+.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000;}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left;}.cke_rtl span.cke_colorbox{float:right;}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;}.cke_rtl a.cke_colorbox{float:right;}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff;}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff;}@media print{.cke_skin_v2 .cke_toolbox{display:none;}}.cke_skin_v2 .cke_browser_webkit .cke_toolbox,.cke_skin_v2 .cke_browser_webkit .cke_toolbox>span{white-space:normal;}.cke_skin_v2 a.cke_toolbox_collapser,.cke_skin_v2 a:hover.cke_toolbox_collapser{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:3px -739px;background-repeat:no-repeat;width:11px;height:11px;float:right;border:outset 1px;margin:11px 2px 2px;cursor:pointer;}.cke_skin_v2 .cke_rtl a.cke_toolbox_collapser,.cke_skin_v2 .cke_rtl a:hover.cke_toolbox_collapser{float:left;}.cke_skin_v2 a.cke_toolbox_collapser_min,.cke_skin_v2 a:hover.cke_toolbox_collapser_min{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:4px -760px;background-repeat:no-repeat;margin:2px;}.cke_skin_v2 .cke_rtl a.cke_toolbox_collapser_min,.cke_skin_v2 .cke_rtl a:hover.cke_toolbox_collapser_min{background-position:4px -781px;}.cke_skin_v2 .cke_toolbar{padding-top:1px;padding-bottom:1px;display:inline-block;float:left;}.cke_skin_v2 .cke_rtl .cke_toolbar{float:right;}.cke_skin_v2 .cke_toolgroup{display:inline-block;float:left;}.cke_skin_v2 .cke_browser_ie .cke_toolgroup{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_toolgroup{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolgroup{#float:none;}.cke_skin_v2 .cke_separator{display:inline-block;float:left;border-left:solid 1px #999;margin:0 2px;height:16px;}.cke_skin_v2 .cke_browser_ie .cke_separator{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_separator{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_separator{#float:none;}.cke_skin_v2 .cke_break{clear:left;}.cke_skin_v2 .cke_rtl .cke_break{clear:right;}.cke_skin_v2 .cke_toolbar_start{display:inline-block;background-image:url(images/toolbar_start.gif);background-repeat:no-repeat;margin:4px 2px 0 2px;width:3px;height:16px;float:left;}.cke_skin_v2 .cke_browser_ie .cke_toolbar_start{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_toolbar_start{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_start{#float:none;}.cke_skin_v2 .cke_toolbar_end{display:inline-block;float:left;}.cke_skin_v2 .cke_browser_ie .cke_toolbar_end{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_toolbar_end{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_end{#float:none;}.cke_skin_v2 .cke_button a,.cke_skin_v2 .cke_button a:hover,.cke_skin_v2 .cke_button a:focus,.cke_skin_v2 .cke_button a:active,.cke_skin_v2 .cke_button a.cke_off{border:solid 1px #efefde;display:inline-block;border-radius:3px;outline:none;padding-top:2px;padding-left:4px;padding-right:4px;padding-bottom:2px;height:18px;cursor:default;}.cke_skin_v2 .cke_button a,.cke_skin_v2 .cke_button a.cke_off{background-color:#efefde;filter:alpha(opacity=70);opacity:.70;-moz-border-radius:3px;-webkit-border-radius:3px;}.cke_skin_v2 .cke_hc .cke_button a,.cke_skin_v2 .cke_hc .cke_button a.cke_off{opacity:1.0;filter:alpha(opacity=100);}.cke_skin_v2 .cke_button a.cke_on{border:solid 1px #316ac5;background-color:#a3d7ff;filter:alpha(opacity=100);opacity:1;}.cke_skin_v2 .cke_hc .cke_button a.cke_on{padding:0 2px!important;border-width:3px;}.cke_skin_v2 .cke_button a.cke_disabled,.cke_skin_v2 .cke_browser_ie a:hover.cke_button .cke_disabled{border:solid 1px #efefde;background-color:#efefde;filter:alpha(opacity=30);opacity:.3;}.cke_skin_v2 .cke_hc .cke_button a.cke_disabled,.cke_skin_v2 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled{filter:alpha(opacity=60);opacity:.6;}
+.cke_skin_v2 .cke_button a:hover.cke_on,.cke_skin_v2 .cke_button a:focus.cke_on,.cke_skin_v2 .cke_button a:active.cke_on,.cke_skin_v2 .cke_button a:hover.cke_off,.cke_skin_v2 .cke_button a:focus.cke_off,.cke_skin_v2 .cke_button a:active.cke_off{border:solid 1px #316ac5;background-color:#dff1ff;filter:alpha(opacity=100);opacity:1;padding:2px 4px;}.cke_skin_v2 .cke_hc .cke_button a:hover.cke_on,.cke_skin_v2 .cke_hc .cke_button a:focus.cke_on,.cke_skin_v2 .cke_hc .cke_button a:active.cke_on,.cke_skin_v2 .cke_hc .cke_button a:hover.cke_off,.cke_skin_v2 .cke_hc .cke_button a:focus.cke_off,.cke_skin_v2 .cke_hc .cke_button a:active.cke_off{padding:0 2px!important;border-width:3px;}.cke_skin_v2 .cke_button .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;display:inline-block;}.cke_skin_v2 .cke_button .cke_label{cursor:default;display:none;padding-left:3px;vertical-align:3px;}.cke_skin_v2 .cke_hc .cke_button .cke_label{padding:0;display:inline-block;}.cke_skin_v2 .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_v2 .cke_accessibility{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_v2 .cke_button .cke_buttonarrow{display:inline-block;height:17px;width:8px;background-position:2px -717px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;}.cke_skin_v2 .cke_rtl .cke_button .cke_buttonarrow{background-position:0 -717px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);}.cke_skin_v2 .cke_browser_gecko18 .cke_toolbar,.cke_skin_v2 .cke_browser_gecko18 .cke_button a,.cke_skin_v2 .cke_browser_gecko18 .cke_button a.cke_off,.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_icon,.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_buttonarrow,.cke_skin_v2 .cke_browser_gecko18 .cke_separator,.cke_skin_v2 .cke_browser_gecko18 .cke_toolbar_start{display:block;float:left;}.cke_skin_v2 .cke_browser_gecko18 .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_toolbar,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button a,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button a.cke_off,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button .cke_icon,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button .cke_buttonarrow,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_separator,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_toolbar_start{float:right;}.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_label,.cke_skin_v2 .cke_browser_gecko18 .cke_break{float:left;}.cke_skin_v2 .cke_browser_gecko18 .cke_rtl span.cke_inline_label{float:right;}.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button .cke_label,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_break{float:right;}.cke_skin_v2 .cke_browser_gecko18 .cke_separator{margin-top:4px;}.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_label{padding-top:3px;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolgroup,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_separator,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_start,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_end{float:none;}.cke_skin_v2 .cke_browser_ie8 .cke_toolbar,.cke_skin_v2 .cke_browser_ie8 .cke_toolgroup{vertical-align:top;}.cke_skin_v2 .cke_browser_iequirks.cke_browser_ie8 .cke_toolbar,.cke_skin_v2 .cke_browser_iequirks.cke_browser_ie8 .cke_toolgroup{vertical-align:baseline;}.cke_skin_v2 .cke_contextmenu{padding:2px;}.cke_skin_v2 .cke_menuitem a{display:block;}.cke_skin_v2 .cke_menuitem span{cursor:default;}.cke_skin_v2 .cke_menuitem a:hover,.cke_skin_v2 .cke_menuitem a:focus,.cke_skin_v2 .cke_menuitem a:active{background-color:#8f8f73;display:block;}.cke_skin_v2 .cke_menuitem a.cke_disabled:hover,.cke_skin_v2 .cke_menuitem a.cke_disabled:focus,.cke_skin_v2 .cke_menuitem a.cke_disabled:active{background-color:transparent!important;}.cke_skin_v2 .cke_menuitem .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;background-color:transparent;width:16px;height:16px;float:left;}
+.cke_skin_v2 .cke_menuitem .cke_disabled .cke_icon{filter:alpha(opacity=70);opacity:.70;}.cke_skin_v2 .cke_menuitem .cke_icon_wrapper{background-color:#e3e3c7;border:solid 4px #e3e3c7;width:16px;height:16px;float:left;filter:alpha(opacity=70);opacity:.70;}.cke_rtl .cke_skin_v2 .cke_menuitem .cke_icon_wrapper{float:right;}.cke_skin_v2 .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_v2 .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_v2 .cke_menuitem a:active .cke_icon_wrapper{background-color:#9d9d9d;border:solid 4px #9d9d9d;filter:alpha(opacity=70);opacity:.70;}.cke_skin_v2 .cke_menuitem a:hover.cke_disabled .cke_icon_wrapper,.cke_skin_v2 .cke_menuitem a:focus.cke_disabled .cke_icon_wrapper,.cke_skin_v2 .cke_menuitem a:active.cke_disabled .cke_icon_wrapper{background-color:#e3e3c7;border:solid 4px #e3e3c7;}.cke_skin_v2 .cke_menuitem .cke_label{display:block;padding-right:3px;padding-top:5px;padding-left:4px;height:19px;margin-left:24px;background-color:#fff;_overflow:hidden;_width:80px;filter:alpha(opacity=70);opacity:.70;}.cke_rtl .cke_skin_v2 .cke_menuitem .cke_label{padding-right:0;margin-left:0;padding-left:3px;margin-right:28px;}.cke_skin_v2 .cke_menuitem a.cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.30;}.cke_skin_v2 .cke_menuitem a:hover .cke_label,.cke_skin_v2 .cke_menuitem a:focus .cke_label,.cke_skin_v2 .cke_menuitem a:active .cke_label{background-color:#8f8f73;color:white;}.cke_skin_v2 .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_v2 .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_v2 .cke_menuitem a.cke_disabled:active .cke_label{background-color:transparent;color:black;}.cke_skin_v2 .cke_menuseparator{background-color:#e3e3c7;height:2px;filter:alpha(opacity=70);opacity:.70;_font-size:0;}.cke_skin_v2 .cke_menuarrow{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -784px;background-repeat:no-repeat;height:5px;width:3px;float:right;margin-right:2px;margin-top:3px;}.cke_rtl .cke_skin_v2 .cke_menuarrow{float:left;margin-right:0;margin-left:2px;background-position:0 -763px;}.cke_browser_ie.cke_ltr .cke_skin_v2 .cke_menuarrow{position:absolute;right:2px;}.cke_browser_ie.cke_rtl .cke_skin_v2 .cke_menuarrow{position:absolute;left:2px;}.cke_skin_v2 .cke_rcombo{display:inline-block;margin-left:2px;margin-right:2px;margin-top:2px;vertical-align:top;float:left;}.cke_skin_v2 .cke_browser_ie .cke_rcombo{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_rcombo{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rcombo{#float:none;}.cke_skin_v2 .cke_rcombopanel{border:1px solid #316ac5;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;}.cke_skin_v2 .cke_rcombo a{display:inline-block;float:left;filter:alpha(opacity=70);opacity:.70;}.cke_skin_v2 .cke_rtl .cke_rcombo a{float:right;}.cke_skin_v2 .cke_hc .cke_rcombo a{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_v2 .cke_rcombo .cke_label{display:inline-block;float:left;line-height:24px;height:24px;vertical-align:top;padding-left:4px;padding-right:5px;filter:alpha(opacity=70);opacity:.70;background-color:#f1f1e3;}.cke_skin_v2 .cke_rtl .cke_rcombo .cke_label{float:right;padding-right:4px;padding-left:5px;}.cke_skin_v2 .cke_hc .cke_rcombo .cke_label{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_v2 .cke_rcombo .cke_inline_label{color:#fff;}.cke_skin_v2 .cke_rcombo .cke_text{border:1px solid #8f8f73;background-color:#fff;height:14px;width:60px;padding-top:4px;padding-bottom:4px;padding-left:5px;padding-right:5px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:top;}.cke_skin_v2 .cke_ltr .cke_rcombo .cke_text{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.cke_skin_v2 .cke_rtl .cke_rcombo .cke_text{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}
+.cke_skin_v2 .cke_browser_iequirks .cke_rcombo .cke_text{height:22px;}.cke_skin_v2 .cke_rcombo .cke_openbutton{display:inline-block;background-position:5px -715px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;border-top:1px solid #8f8f73;border-bottom:1px solid #8f8f73;width:14px;height:22px;}.cke_skin_v2 .cke_ltr .cke_rcombo .cke_openbutton{border-right:1px solid #8f8f73;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.cke_skin_v2 .cke_rtl .cke_rcombo .cke_openbutton{border-left:1px solid #8f8f73;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.cke_skin_v2 .cke_rcombo .cke_off a:hover,.cke_skin_v2 .cke_rcombo .cke_off a:focus,.cke_skin_v2 .cke_rcombo .cke_off a:active,.cke_skin_v2 .cke_rcombo .cke_on a{filter:alpha(opacity=100);opacity:1;}.cke_skin_v2 .cke_rcombo .cke_off a:hover .cke_text,.cke_skin_v2 .cke_rcombo .cke_off a:focus .cke_text,.cke_skin_v2 .cke_rcombo .cke_off a:active .cke_text,.cke_skin_v2 .cke_rcombo .cke_on .cke_text{border-color:#316ac5;}.cke_skin_v2 .cke_rcombo .cke_off a:hover .cke_openbutton,.cke_skin_v2 .cke_rcombo .cke_off a:focus .cke_openbutton,.cke_skin_v2 .cke_rcombo .cke_off a:active .cke_openbutton,.cke_skin_v2 .cke_rcombo .cke_on .cke_openbutton{border-color:#316ac5;background-color:#dff1ff;}.cke_skin_v2 .cke_rcombo .cke_on .cke_text{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;}.cke_skin_v2 .cke_rcombo .cke_on .cke_openbutton{-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;}.cke_skin_v2 .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.3;}.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=70);opacity:.7;}.cke_skin_v2 .cke_rcombo .cke_disabled .cke_text,.cke_skin_v2 .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=50);opacity:.5;}.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_text,.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=80);opacity:.8;}.cke_skin_v2 .cke_rcombo .cke_disabled .cke_text{color:#fff;}.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo,.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo .cke_label,.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo .cke_text,.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo .cke_openbutton,.cke_skin_v2 .cke_browser_webkit .cke_rcombo .cke_label,.cke_skin_v2 .cke_browser_webkit .cke_rcombo .cke_text,.cke_skin_v2 .cke_browser_webkit .cke_rcombo .cke_openbutton{display:block;float:left;}.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_label,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_text,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_openbutton,.cke_skin_v2 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_label,.cke_skin_v2 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_text,.cke_skin_v2 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_openbutton{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_rcombo,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_rcombo a,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_rcombo .cke_label{float:none;}@media print{.cke_path{display:none;}}.cke_skin_v2 .cke_path{padding:3px 3px 0 3px;display:inline-block;float:left;}.cke_skin_v2 .cke_rtl .cke_path{float:right;}.cke_skin_v2 .cke_path a,.cke_skin_v2 .cke_path .cke_empty{display:inline-block;float:left;border:solid 1px #efefde;background-color:#efefde;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;margin-bottom:3px;}.cke_skin_v2 .cke_path .cke_empty{visibility:hidden;}.cke_skin_v2 .cke_rtl .cke_path a,.cke_skin_v2 .cke_rtl .cke_path cke_empty{float:right;}.cke_skin_v2 .cke_path a:hover,.cke_skin_v2 .cke_path a:focus,.cke_skin_v2 .cke_path a:active{border:solid 1px #316ac5;background-color:#dff1ff;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;outline:none;}
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_path a,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_path .cke_empty{float:none;}.cke_skin_v2 .cke_button_source .cke_icon{background-position:0 0;}.cke_skin_v2 .cke_button_newpage .cke_icon{background-position:0 -48px;}.cke_skin_v2 .cke_button_preview .cke_icon{background-position:0 -64px;}.cke_skin_v2 .cke_button_cut .cke_icon{background-position:0 -96px;}.cke_skin_v2 .cke_button_copy .cke_icon{background-position:0 -112px;}.cke_skin_v2 .cke_button_paste .cke_icon{background-position:0 -128px;}.cke_skin_v2 .cke_button_pastetext .cke_icon{background-position:0 -144px;}.cke_skin_v2 .cke_button_find .cke_icon{background-position:0 -240px;}.cke_skin_v2 .cke_button_replace .cke_icon{background-position:0 -256px;}.cke_skin_v2 .cke_button_selectAll .cke_icon{background-position:0 -272px;}.cke_skin_v2 .cke_button_removeFormat .cke_icon{background-position:0 -288px;}.cke_skin_v2 .cke_button_bold .cke_icon{background-position:0 -304px;}.cke_skin_v2 .cke_button_italic .cke_icon{background-position:0 -320px;}.cke_skin_v2 .cke_button_underline .cke_icon{background-position:0 -336px;}.cke_skin_v2 .cke_button_strike .cke_icon{background-position:0 -352px;}.cke_skin_v2 .cke_button_subscript .cke_icon{background-position:0 -368px;}.cke_skin_v2 .cke_button_superscript .cke_icon{background-position:0 -384px;}.cke_skin_v2 .cke_button_table .cke_icon{background-position:0 -608px;}.cke_skin_v2 .cke_button_horizontalrule .cke_icon{background-position:0 -624px;}.cke_skin_v2 .cke_button_smiley .cke_icon{background-position:0 -640px;}.cke_skin_v2 .cke_button_link .cke_icon{background-position:0 -528px;}.cke_skin_v2 .cke_button_unlink .cke_icon{background-position:0 -544px;}.cke_skin_v2 .cke_button_anchor .cke_icon{background-position:0 -560px;}.cke_skin_v2 .cke_button_image .cke_icon{background-position:0 -576px;}.cke_skin_v2 .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_v2 .cke_button_specialchar .cke_icon{background-position:0 -656px;}.cke_skin_v2 .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_v2 .cke_button_print .cke_icon{background-position:0 -176px;}.cke_skin_v2 .cke_button_checkspell .cke_icon,.cke_skin_v2 .cke_button_scayt .cke_icon{background-position:0 -192px;}.cke_skin_v2 .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_v2 .cke_button_textcolor .cke_icon{background-position:0 -704px;}.cke_skin_v2 .cke_button_bgcolor .cke_icon{background-position:0 -720px;}.cke_skin_v2 .cke_button_form .cke_icon{background-position:0 -752px;}.cke_skin_v2 .cke_button_checkbox .cke_icon{background-position:0 -768px;}.cke_skin_v2 .cke_button_radio .cke_icon{background-position:0 -784px;}.cke_skin_v2 .cke_button_textfield .cke_icon{background-position:0 -800px;}.cke_skin_v2 .cke_button_textarea .cke_icon{background-position:0 -816px;}.cke_skin_v2 .cke_button_showblocks .cke_icon{background-position:0 -1136px;}.cke_skin_v2 .cke_button_select .cke_icon{background-position:0 -832px;}.cke_skin_v2 .cke_button_button .cke_icon{background-position:0 -848px;}.cke_skin_v2 .cke_button_imagebutton .cke_icon{background-position:0 -864px;}.cke_skin_v2 .cke_button_hiddenfield .cke_icon{background-position:0 -880px;}.cke_skin_v2 .cke_button_undo .cke_icon{background-position:0 -208px;}.cke_skin_v2 .cke_rtl .cke_button_undo .cke_icon{background-position:0 -224px;}.cke_skin_v2 .cke_button_redo .cke_icon{background-position:0 -224px;}.cke_skin_v2 .cke_rtl .cke_button_redo .cke_icon{background-position:0 -208px;}.cke_skin_v2 .cke_button_templates .cke_icon{background-position:0 -80px;}.cke_skin_v2 .cke_button_numberedlist .cke_icon{background-position:0 -400px;}.cke_skin_v2 .cke_button_bulletedlist .cke_icon{background-position:0 -416px;}.cke_skin_v2 .cke_button_outdent .cke_icon{background-position:0 -432px;}.cke_skin_v2 .cke_button_indent .cke_icon{background-position:0 -448px;}.cke_skin_v2 .cke_button_justifyleft .cke_icon{background-position:0 -464px;}.cke_skin_v2 .cke_button_justifycenter .cke_icon{background-position:0 -480px;}.cke_skin_v2 .cke_button_justifyright .cke_icon{background-position:0 -496px;}
+.cke_skin_v2 .cke_button_justifyblock .cke_icon{background-position:0 -512px;}.cke_skin_v2 .cke_button_blockquote .cke_icon{background-position:0 -1152px;}.cke_skin_v2 .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_v2 .cke_button_pastefromword .cke_icon{background-position:0 -160px;}.cke_skin_v2 .cke_button_save .cke_icon{background-position:0 -32px;}.cke_skin_v2 .cke_button_about .cke_icon{background-position:0 -736px;}.cke_skin_v2 .cke_button_maximize .cke_icon{background-position:0 -1040px;}.cke_skin_v2 .cke_button_source .cke_label{display:inline;display:inline-block;}.cke_skin_v2 .cke_styles_panel{width:150px;height:170px;}.cke_skin_v2 .cke_format_panel{width:150px;height:170px;}.cke_skin_v2 .cke_font_panel{width:150px;height:170px;}.cke_skin_v2 .cke_fontSize_panel{height:170px;}.cke_skin_v2 .cke_fontSize .cke_text{width:20px;}.cke_skin_v2 .cke_browser_iequirks .cke_fontSize .cke_text{width:32px;}html .cke_skin_v2,html.cke_skin_v2_container{visibility:visible;}
Index: /trunk/filemanager/tp/ckeditor/skins/kama/skin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/skins/kama/skin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/skins/kama/skin.js	(revision 2000)
@@ -0,0 +1,7 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.skins.add('kama',(function(){var a=[];if(CKEDITOR.env.ie&&CKEDITOR.env.version<7)a.push('icons.png','images/sprites_ie6.png','images/dialog_sides.gif');return{preload:a,editor:{css:['editor.css']},dialog:{css:['dialog.css']},templates:{css:['templates.css']},margins:[0,0,0,0],init:function(b){if(b.config.width&&!isNaN(b.config.width))b.config.width-=12;var c=[],d=/\$color/g,e='/* UI Color Support */.cke_skin_kama .cke_menuitem .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_label,.cke_skin_kama .cke_menuitem a:focus .cke_label,.cke_skin_kama .cke_menuitem a:active .cke_label{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label{\tbackground-color: transparent !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuseparator{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover,.cke_skin_kama .cke_menuitem a:focus,.cke_skin_kama .cke_menuitem a:active{\tbackground-color: $color !important;}';if(CKEDITOR.env.webkit){e=e.split('}').slice(0,-1);for(var f=0;f<e.length;f++)e[f]=e[f].split('{');}function g(j){var k=j.getHead().append('style');k.setAttribute('id','cke_ui_color');k.setAttribute('type','text/css');return k;};function h(j,k,l){var m,n,o;for(var p=0;p<j.length;p++)if(CKEDITOR.env.webkit){for(n=0;n<j[p].$.sheet.rules.length;n++)j[p].$.sheet.removeRule(n);for(n=0;n<k.length;n++){o=k[n][1];for(m=0;m<l.length;m++)o=o.replace(l[m][0],l[m][1]);j[p].$.sheet.addRule(k[n][0],o);}}else{o=k;for(m=0;m<l.length;m++)o=o.replace(l[m][0],l[m][1]);if(CKEDITOR.env.ie)j[p].$.styleSheet.cssText=o;else j[p].setHtml(o);}};var i=/\$color/g;CKEDITOR.tools.extend(b,{uiColor:null,getUiColor:function(){return this.uiColor;
+},setUiColor:function(j){var k,l=g(CKEDITOR.document),m='#cke_'+b.name.replace('.','\\.'),n=[m+' .cke_wrapper',m+'_dialog .cke_dialog_contents',m+'_dialog a.cke_dialog_tab',m+'_dialog .cke_dialog_footer'].join(','),o='background-color: $color !important;';if(CKEDITOR.env.webkit)k=[[n,o]];else k=n+'{'+o+'}';return(this.setUiColor=function(p){var q=[[i,p]];b.uiColor=p;h([l],k,q);h(c,e,q);})(j);}});b.on('menuShow',function(j){var k=j.data[0],l=k.element.getElementsByTag('iframe').getItem(0).getFrameDocument();if(!l.getById('cke_ui_color')){var m=g(l);c.push(m);var n=b.getUiColor();if(n)h([m],e,[[i,n]]);}});if(b.config.uiColor)b.setUiColor(b.config.uiColor);}};})());if(CKEDITOR.dialog)CKEDITOR.dialog.on('resize',function(a){var b=a.data,c=b.width,d=b.height,e=b.dialog,f=e.parts.contents,g=!CKEDITOR.env.quirks;if(b.skin!='kama')return;f.setStyles(CKEDITOR.env.ie||CKEDITOR.env.gecko&&CKEDITOR.env.version<10900?{width:c+'px',height:d+'px'}:{'min-width':c+'px','min-height':d+'px'});if(!CKEDITOR.env.ie)return;setTimeout(function(){var h=f.getParent(),i=h.getParent(),j=i.getChild(2);j.setStyle('width',h.$.offsetWidth+'px');j=i.getChild(7);j.setStyle('width',h.$.offsetWidth-28+'px');j=i.getChild(4);j.setStyle('height',h.$.offsetHeight-31-14+'px');j=i.getChild(5);j.setStyle('height',h.$.offsetHeight-31-14+'px');},100);});
Index: /trunk/filemanager/tp/ckeditor/skins/kama/templates.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/skins/kama/templates.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/skins/kama/templates.css	(revision 2000)
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_kama .cke_tpl_list{border:#dcdcdc 2px solid;background-color:#fff;overflow:auto;width:100%;height:220px;}.cke_skin_kama .cke_tpl_item{margin:5px;padding:7px;border:#eee 1px solid;*width:88%;}.cke_skin_kama .cke_tpl_preview{border-collapse:separate;text-indent:0;width:100%;}.cke_skin_kama .cke_tpl_preview td{padding:2px;vertical-align:middle;}.cke_skin_kama .cke_tpl_preview .cke_tpl_preview_img{width:100px;}.cke_skin_kama .cke_tpl_preview span{white-space:normal;}.cke_skin_kama .cke_tpl_title{font-weight:bold;}.cke_skin_kama .cke_tpl_hover{border:#f93 1px solid!important;background-color:#fffacd!important;cursor:pointer;cursor:hand;}.cke_skin_kama .cke_tpl_hover *{cursor:inherit;}.cke_skin_kama .cke_tpl_empty,.cke_tpl_loading{text-align:center;padding:5px;}
Index: /trunk/filemanager/tp/ckeditor/skins/kama/dialog.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/skins/kama/dialog.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/skins/kama/dialog.css	(revision 2000)
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+body .cke_dialog{visibility:visible;}.cke_skin_kama .cke_dialog_body{z-index:1;border:solid 1px #ddd;padding:5px;background-color:#fff;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;}.cke_skin_kama .cke_dialog_tl,.cke_skin_kama .cke_dialog_tr,.cke_skin_kama .cke_dialog_tc,.cke_skin_kama .cke_dialog_bl,.cke_skin_kama .cke_dialog_br,.cke_skin_kama .cke_dialog_bc,.cke_skin_kama .cke_dialog_ml,.cke_skin_kama .cke_dialog_mr{display:none;}.cke_skin_kama .cke_dialog_title{font-weight:bold;font-size:14px;padding:3px 3px 8px;cursor:move;position:relative;border-bottom:1px solid #eee;}.cke_skin_kama .cke_browser_iequirks .cke_dialog_title,.cke_skin_kama .cke_browser_ie6 .cke_dialog_title,.cke_skin_kama .cke_browser_ie7 .cke_dialog_title{margin-bottom:22px;}.cke_skin_kama .cke_browser_iequirks.cke_single_page .cke_dialog_title,.cke_skin_kama .cke_browser_ie6.cke_single_page .cke_dialog_title,.cke_skin_kama .cke_browser_ie7.cke_single_page .cke_dialog_title{margin-bottom:10px;}.cke_skin_kama .cke_browser_ie.cke_rtl .cke_dialog_title{position:static!important;unicode-bidi:bidi-override;}.cke_skin_kama .cke_dialog_contents{background-color:#ebebeb;border:solid 1px #fff;border-bottom:none;overflow:auto;padding:17px 10px 5px 10px;-moz-border-radius-topleft:5px;-moz-border-radius-topright:5px;-webkit-border-top-left-radius:5px;-webkit-border-top-right-radius:5px;border-top-left-radius:5px;border-top-right-radius:5px;margin-top:22px;}.cke_skin_kama .cke_dialog_footer{text-align:right;background-color:#ebebeb;border:solid 1px #fff;border-bottom:none;-moz-border-radius-bottomleft:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-left-radius:5px;-webkit-border-bottom-right-radius:5px;border-bottom-left-radius:5px;border-bottom-right-radius:5px;}.cke_skin_kama .cke_rtl .cke_dialog_footer{text-align:left;}.cke_skin_kama .cke_dialog_tabs{height:23px;display:inline-block;_display:block;margin-left:10px;margin-right:10px;margin-top:11px;position:absolute;z-index:2;}.cke_skin_kama .cke_browser_iequirks .cke_dialog_tabs,.cke_skin_kama .cke_browser_ie6 .cke_dialog_tabs,.cke_skin_kama .cke_browser_ie7 .cke_dialog_tabs{top:33px;}.cke_skin_kama .cke_rtl .cke_dialog_tabs{right:10px;}.cke_skin_kama a.cke_dialog_tab,.cke_skin_kama a:link.cke_dialog_tab,.cke_skin_kama a:active.cke_dialog_tab,.cke_skin_kama a:hover.cke_dialog_tab,.cke_skin_kama a:visited.cke_dialog_tab{background-image:url(images/sprites.png);background-repeat:repeat-x;background-position:0 -1323px;background-color:#ebebeb;height:14px;padding:4px 8px;display:inline-block;cursor:pointer;}.cke_skin_kama .cke_browser_gecko18 a.cke_dialog_tab,.cke_skin_kama .cke_browser_gecko18 a:link.cke_dialog_tab,.cke_skin_kama .cke_browser_gecko18 a:active.cke_dialog_tab,.cke_skin_kama .cke_browser_gecko18 a:hover.cke_dialog_tab,.cke_skin_kama .cke_browser_gecko18 a:visited.cke_dialog_tab{display:inline;position:relative;top:6px;}.cke_skin_kama a:hover.cke_dialog_tab{background-color:#f1f1e3;}.cke_skin_kama a.cke_dialog_tab_selected,.cke_skin_kama a:link.cke_dialog_tab_selected,.cke_skin_kama a:active.cke_dialog_tab_selected,.cke_skin_kama a:hover.cke_dialog_tab_selected,.cke_skin_kama a:visited.cke_dialog_tab_selected{background-position:0 -1279px;cursor:default;}.cke_skin_kama .cke_single_page .cke_dialog_tabs{display:none;}.cke_skin_kama .cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:10px;}.cke_skin_kama .cke_browser_ie7.cke_single_page .cke_dialog_contents{margin-top:-10px;position:relative;margin-bottom:-22px;}.cke_skin_kama .cke_dialog_ui_vbox table,.cke_skin_kama .cke_dialog_ui_hbox table{margin:auto;}.cke_skin_kama .cke_dialog_ui_vbox_child{padding:5px 0;}.cke_skin_kama input.cke_dialog_ui_input_text,.cke_skin_kama input.cke_dialog_ui_input_password{background-color:white;border:none;padding:0;width:100%;height:14px;}.cke_skin_kama div.cke_dialog_ui_input_text,.cke_skin_kama div.cke_dialog_ui_input_password{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_kama textarea.cke_dialog_ui_input_textarea{background-color:white;border:none;padding:0;width:100%;_width:99%;overflow:auto;resize:none;}
+.cke_skin_kama div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_kama div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default;}.cke_skin_kama .cke_dialog_ui_hbox{width:100%;}.cke_skin_kama .cke_dialog_ui_hbox_first,.cke_skin_kama .cke_dialog_ui_hbox_child,.cke_skin_kama .cke_dialog_ui_hbox_last{vertical-align:top;}.cke_skin_kama .cke_ltr .cke_dialog_ui_hbox_first,.cke_skin_kama .cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px;}.cke_skin_kama .cke_rtl .cke_dialog_ui_hbox_first,.cke_skin_kama .cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px;}.cke_skin_kama a.cke_dialog_ui_button{border-collapse:separate;cursor:default;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;background:transparent url(images/sprites.png) repeat-x scroll 0 -1069px;_background:none;padding:5px 0;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button{padding:0;}.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button span{width:70px;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span{width:100px;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button span{padding:5px 15px;text-align:center;color:#3b3b1f;background:#53D9F0 none;display:inline-block;cursor:default;}.cke_skin_kama .cke_browser_webkit a.cke_dialog_ui_button span.cke_dialog_ui_button{margin:0;}.cke_skin_kama .cke_browser_webkit a.cke_dialog_ui_button{float:right;padding-top:3px;padding-bottom:2px;margin:2px 0;}.cke_skin_kama a.cke_dialog_ui_button_ok span,.cke_skin_kama a.cke_dialog_ui_button_cancel span{padding-right:20px;padding-left:20px;}.cke_skin_kama a.cke_dialog_ui_button_ok{background-position:0 -1143px;}.cke_skin_kama a.cke_dialog_ui_button_ok span{background:transparent url(images/sprites.png) no-repeat scroll right -1219px;}.cke_skin_kama .cke_rtl a.cke_dialog_ui_button_ok span{background-position:left -1219px;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_ok span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_ok span{background-color:#B8E834;margin-right:0;}.cke_skin_kama a.cke_dialog_ui_button_cancel{background-position:0 -1104px;}.cke_skin_kama a.cke_dialog_ui_button_cancel span{background:transparent url(images/sprites.png) no-repeat scroll right -1245px;}.cke_skin_kama .cke_rtl a.cke_dialog_ui_button_cancel span{background-position:left -1245px;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_cancel span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_cancel span{background-color:#F65D20;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_cancel span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_cancel span,.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_ok span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_ok span{background-image:none;}.cke_skin_kama span.cke_dialog_ui_button{padding:2px 10px;text-align:center;color:#222;display:inline-block;cursor:default;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button{display:block;}.cke_skin_kama a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3;}.cke_skin_kama a:hover.cke_dialog_ui_button,.cke_skin_kama a:focus.cke_dialog_ui_button,.cke_skin_kama a:active.cke_dialog_ui_button{background-position:0 -1179px;}.cke_skin_kama .cke_browser_iequirks a:hover.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_iequirks a:focus.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_iequirks a:active.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_ie6 a:hover.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_ie6 a:focus.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_ie6 a:active.cke_dialog_ui_button span{background-image:none;background:#F7A922;}.cke_skin_kama .cke_dialog_footer_buttons{display:inline-table;margin-right:12px;margin-left:12px;width:auto;position:relative;}
+.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons{display:inline;}.cke_skin_kama .cke_dialog_footer_buttons span.cke_dialog_ui_button{margin:7px 0;width:60px;text-align:center;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons a.cke_dialog_ui_button{display:block;padding:0;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button{padding-bottom:5px;padding-top:6px;margin-bottom:0;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons .cke_dialog_ui_button_ok .cke_dialog_ui_button{background-position:right -1214px;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons .cke_dialog_ui_button_cancel .cke_dialog_ui_button{background-position:right -1242px;}.cke_skin_kama strong{font-weight:bold;}.cke_skin_kama .cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:0 -1022px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;_background-image:url(images/sprites_ie6.png);}.cke_skin_kama .cke_dialog_close_button span{display:none;}.cke_skin_kama .cke_dialog_close_button:hover{background-position:0 -1045px;}.cke_skin_kama .cke_ltr .cke_dialog_close_button{right:10px;}.cke_skin_kama .cke_browser_ie8.cke_rtl .cke_dialog_close_button{left:8px;}.cke_skin_kama .cke_rtl .cke_dialog_close_button{left:10px;}.cke_skin_kama .cke_browser_ie7.cke_rtl .cke_dialog_close_button{left:16px;top:0;}.cke_skin_kama .cke_browser_ie7.cke_rtl .cke_dialog_close_button{position:absolute;left:10px;top:5px;}.cke_skin_kama .cke_browser_ie7.cke_single_page .cke_dialog_footer{margin-top:22px;}.cke_skin_kama .cke_browser_ie6 .cke_dialog_close_button,.cke_skin_kama .cke_browser_iequirks .cke_dialog_close_button{top:7px;}.cke_skin_kama .cke_browser_ie7.cke_ltr .cke_dialog_close_button{margin-top:0;}.cke_skin_kama .cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white;}.cke_skin_kama iframe.cke_dialog_ui_input_file{width:100%;height:25px;}.cke_skin_kama .cke_dialog .cke_dark_background{background-color:#eaead1;}.cke_skin_kama .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_kama .cke_dialog .cke_centered{text-align:center;}.cke_skin_kama .cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px;}.cke_skin_kama .cke_rtl .cke_dialog a.cke_btn_reset{float:left;}.cke_skin_kama .cke_dialog a.cke_btn_locked,.cke_skin_kama .cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px;}.cke_skin_kama .cke_rtl .cke_dialog a.cke_btn_locked,.cke_skin_kama .cke_rtl .cke_dialog a.cke_btn_unlocked{float:right;}.cke_skin_kama .cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif);}.cke_skin_kama .cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer;cursor:hand;}.cke_skin_kama .cke_dialog #ImagePreviewBox{white-space:normal;border:2px ridge black;overflow:scroll;height:160px;width:230px;padding:2px;background-color:white;}.cke_skin_kama .cke_dialog #ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4;}.cke_skin_kama .cke_dialog #FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white;}.cke_skin_kama .cke_dialog .cke_dark_background{text-align:center;background-color:#eaead1;font-size:14px;}.cke_skin_kama .cke_dialog .cke_light_background{text-align:center;background-color:#ffffbe;}.cke_skin_kama .cke_dialog .cke_hand{cursor:pointer;cursor:hand;}.cke_skin_kama .cke_disabled{color:#a0a0a0;}.cke_skin_kama .cke_hc .cke_dialog_title,.cke_skin_kama .cke_hc .cke_dialog_tabs,.cke_skin_kama .cke_hc .cke_dialog_contents,.cke_skin_kama .cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid;}.cke_skin_kama .cke_hc .cke_dialog_title{border-top:1px solid;}
+.cke_skin_kama .cke_hc .cke_dialog_footer{border-bottom:1px solid;}.cke_skin_kama .cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;cursor:hand;font-weight:bold;position:relative;top:3px;}.cke_skin_kama a.cke_smile img{border:2px solid #eaead1;}.cke_skin_kama a.cke_smile:focus img,.cke_skin_kama a.cke_smile:active img,.cke_skin_kama a.cke_smile:hover img{border-color:#C7C78F;}
Index: /trunk/filemanager/tp/ckeditor/skins/kama/editor.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/skins/kama/editor.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/skins/kama/editor.css	(revision 2000)
@@ -0,0 +1,12 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_kama *,.cke_skin_kama a:hover,.cke_skin_kama a:link,.cke_skin_kama a:visited,.cke_skin_kama a:active{margin:0;padding:0;border:0;background:transparent;text-decoration:none;font:normal normal normal 100% Sans-Serif;width:auto;height:auto;border-collapse:collapse;text-align:left;vertical-align:baseline;white-space:nowrap;cursor:auto;color:#000;font-size:12px;font-family:Arial,Helvetica,Tahoma,Verdana,Sans-Serif;}.cke_skin_kama .cke_rtl *,.cke_skin_kama .cke_rtl a:hover,.cke_skin_kama .cke_rtl a:link,.cke_skin_kama .cke_rtl a:visited,.cke_skin_kama .cke_rtl a:active,.cke_rtl .cke_skin_kama *,.cke_rtl .cke_skin_kama a:hover,.cke_rtl .cke_skin_kama a:link,.cke_rtl .cke_skin_kama a:visited,.cke_rtl .cke_skin_kama a:active{text-align:right;}.cke_skin_kama iframe{vertical-align:inherit;}.cke_skin_kama textarea{white-space:pre;}.cke_skin_kama .cke_browser_gecko textarea{cursor:text;}.cke_skin_kama .cke_browser_gecko textarea[disabled]{cursor:default;}.cke_skin_kama input[type="text"],.cke_skin_kama input[type="password"]{cursor:text;}.cke_skin_kama input[type="text"][disabled],.cke_skin_kama input[type="password"][disabled]{cursor:default;}.cke_skin_kama{display:block;_display:inline-block;}span.cke_skin_kama{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:1px solid #D3D3D3;padding:5px;}.cke_skin_kama .cke_wrapper{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;background-color:#d3d3d3;background-image:url(images/sprites.png);background-repeat:repeat-x;background-position:0 -1950px;display:block;}.cke_skin_kama .cke_browser_ie6 .cke_wrapper,.cke_skin_kama .cke_browser_iequirks .cke_wrapper{background-image:none;}.cke_skin_kama .cke_editor{display:inline-table;width:100%;}.cke_skin_kama .ltr .cke_browser_ie iframe{margin-right:-10px;}.cke_skin_kama .rtl .cke_browser_ie iframe{margin-left:-10px;}.cke_skin_kama .cke_browser_opera .cke_editor.cke_skin_kama .cke_resizer{display:table;}.cke_skin_kama .cke_contents{margin:5px;padding:0 5px 5px;}.cke_skin_kama .cke_hc .cke_contents{border:1px solid black;}.cke_skin_kama .cke_contents iframe{background-color:#fff;}.cke_skin_kama .cke_focus{outline:auto 5px -webkit-focus-ring-color;}.cke_skin_kama textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre;}.cke_skin_kama .cke_browser_iequirks textarea.cke_source{_white-space:normal;}.cke_skin_kama .cke_resizer{width:12px;height:12px;margin-top:9px;display:block;float:right;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1428px;background-repeat:no-repeat;cursor:se-resize;}.cke_skin_kama .cke_rtl .cke_resizer{cursor:sw-resize;background-position:0 -1455px;float:left;}.cke_skin_kama .cke_maximized .cke_resizer{display:none;}.cke_skin_kama .cke_browser_ie6 .cke_contents textarea,.cke_skin_kama .cke_browser_ie7 .cke_contents textarea{position:absolute;}.cke_skin_kama .cke_browser_ie.cke_browser_quirks .cke_contents iframe{position:absolute;top:0;}.cke_skin_kama .cke_panel{border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.cke_skin_kama .cke_contextmenu{margin:0;}.cke_skin_kama .cke_panel iframe{width:100%;height:100%;}html.cke_skin_kama_container{overflow:auto;overflow-x:hidden;}body.cke_panel_frame{overflow:auto;overflow-x:hidden;}ul.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap;}li.cke_panel_listItem{margin:0;}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit;text-decoration:none;overflow:hidden;text-overflow:ellipsis;}* html .cke_panel_listItem a{width:100%;color:#000;}*:first-child+html .cke_panel_listItem a{color:#000;}.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff;}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff;}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px;}
+.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px;}.cke_skin_kama .cke_button_textcolor_panel,.cke_skin_kama .cke_button_bgcolor_panel{width:150px;height:135px;}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000;}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left;}.cke_rtl span.cke_colorbox{float:right;}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;}.cke_rtl a.cke_colorbox{float:right;}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff;}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff;}@media print{.cke_skin_kama .cke_toolbox{display:none;}}.cke_skin_kama .cke_browser_webkit .cke_toolbox,.cke_skin_kama .cke_browser_webkit .cke_toolbox>span{white-space:normal;}.cke_skin_kama .cke_toolbox{clear:both;padding:5px 3px 5px 6px;}.cke_skin_kama .cke_rtl .cke_toolbox{padding:5px 6px 5px 3px;}.cke_skin_kama a.cke_toolbox_collapser,.cke_skin_kama a:hover.cke_toolbox_collapser{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:3px -1366px;background-repeat:no-repeat;width:11px;height:11px;float:right;border:1px outset #D3D3D3;margin:11px 4px 2px;cursor:pointer;}.cke_skin_kama .cke_rtl a.cke_toolbox_collapser,.cke_skin_kama .cke_rtl a:hover.cke_toolbox_collapser{float:left;}.cke_skin_kama a.cke_toolbox_collapser_min,.cke_skin_kama a:hover.cke_toolbox_collapser_min{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:4px -1387px;background-repeat:no-repeat;margin:2px 4px;}.cke_skin_kama .cke_rtl a.cke_toolbox_collapser_min,.cke_skin_kama .cke_rtl a:hover.cke_toolbox_collapser_min{background-position:4px -1408px;}.cke_skin_kama .cke_toolbar{display:inline;}.cke_skin_kama .cke_separator{display:none;}.cke_skin_kama .cke_break{font-size:0;clear:left;}.cke_skin_kama .cke_rtl .cke_break{clear:right;}.cke_skin_kama .cke_toolbar_start{display:none;}.cke_skin_kama .cke_toolgroup{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:repeat-x;background-position:0 -500px;float:left;margin-right:6px;margin-bottom:5px;padding:2px;display:inline;}.cke_skin_kama .cke_rtl .cke_toolgroup{float:right;margin-right:0;margin-left:6px;}.cke_skin_kama .cke_button a,.cke_skin_kama .cke_button a:hover,.cke_skin_kama .cke_button a:focus,.cke_skin_kama .cke_button a:active,.cke_skin_kama .cke_button a.cke_off{border-radius:3px;outline:none;padding:2px 4px;height:18px;display:inline-block;cursor:default;}.cke_skin_kama .cke_button a,.cke_skin_kama .cke_button a.cke_off{filter:alpha(opacity=70);opacity:.70;-moz-border-radius:3px;-webkit-border-radius:3px;}.cke_skin_kama .cke_hc .cke_button a,.cke_skin_kama .cke_hc .cke_button a.cke_off{opacity:1.0;filter:alpha(opacity=100);border:1px solid white;}.cke_skin_kama .cke_button a.cke_on{background-color:#a3d7ff;filter:alpha(opacity=100);opacity:1;padding:2px 4px;}.cke_skin_kama .cke_hc .cke_button a.cke_on{padding:0 2px!important;border-width:3px;}.cke_skin_kama .cke_button a.cke_disabled,.cke_skin_kama .cke_browser_ie a:hover.cke_button .cke_disabled{filter:alpha(opacity=30);opacity:.3;}.cke_skin_kama .cke_hc .cke_button a.cke_disabled,.cke_skin_kama .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled{filter:alpha(opacity=60);opacity:.6;}.cke_skin_kama .cke_button a:hover.cke_on,.cke_skin_kama .cke_button a:focus.cke_on,.cke_skin_kama .cke_button a:active.cke_on,.cke_skin_kama .cke_button a:hover.cke_off,.cke_skin_kama .cke_button a:focus.cke_off,.cke_skin_kama .cke_button a:active.cke_off{filter:alpha(opacity=100);opacity:1;padding:2px 4px;}
+.cke_skin_kama .cke_button a:hover.cke_on,.cke_skin_kama .cke_button a:focus.cke_on,.cke_skin_kama .cke_button a:active.cke_on{background-color:#86caff;}.cke_skin_kama .cke_button a:hover.cke_off,.cke_skin_kama .cke_button a:focus.cke_off,.cke_skin_kama .cke_button a:active.cke_off{background-color:#dff1ff;}.cke_skin_kama .cke_hc .cke_button a:hover.cke_on,.cke_skin_kama .cke_hc .cke_button a:focus.cke_on,.cke_skin_kama .cke_hc .cke_button a:active.cke_on,.cke_skin_kama .cke_hc .cke_button a:hover.cke_off,.cke_skin_kama .cke_hc .cke_button a:focus.cke_off,.cke_skin_kama .cke_hc .cke_button a:active.cke_off{padding:0 2px!important;border-width:3px;}.cke_skin_kama .cke_button .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;display:inline-block;float:left;}.cke_skin_kama .cke_rtl .cke_button .cke_icon{float:right;}.cke_skin_kama .cke_button .cke_label{cursor:default;display:none;padding-left:3px;line-height:18px;vertical-align:middle;float:left;}.cke_skin_kama .cke_rtl .cke_button .cke_label{padding-left:0;padding-right:3px;float:right;}.cke_skin_kama .cke_hc .cke_button .cke_label{padding:0;display:inline-block;}.cke_skin_kama .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_kama .cke_accessibility{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_kama .cke_button .cke_buttonarrow{display:inline-block;height:17px;width:8px;background-position:2px -1469px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;float:left;}.cke_skin_kama .cke_rtl .cke_button .cke_buttonarrow{background-position:0 -1469px;float:right;}.cke_skin_kama .cke_hc .cke_button .cke_buttonarrow{display:none;}.cke_skin_kama .cke_browser_gecko .cke_toolbar,.cke_skin_kama .cke_browser_gecko .cke_button a,.cke_skin_kama .cke_browser_gecko .cke_button a.cke_off,.cke_skin_kama .cke_browser_gecko .cke_button .cke_icon,.cke_skin_kama .cke_browser_gecko .cke_button .cke_buttonarrow,.cke_skin_kama .cke_browser_gecko .cke_separator,.cke_skin_kama .cke_browser_gecko .cke_toolbar_start{display:block;float:left;}.cke_skin_kama .cke_browser_gecko.cke_hc .cke_button .cke_icon{display:none;}.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_toolbar,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button a,.cke_skin_kama .cke_browser_gecko .cke_rtl.cke_button a.cke_off,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_icon,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_buttonarrow,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_toolbar_start{float:right;}.cke_skin_kama .cke_browser_gecko .cke_button .cke_label,.cke_skin_kama .cke_browser_gecko .cke_break{float:left;}.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_label,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_break{float:right;}.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_icon,.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_label,.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_buttonarrow{float:none;}.cke_skin_kama .cke_browser_webkit .cke_toolbar{float:left;}.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_toolbar{float:right;}.cke_skin_kama .cke_browser_ie8 .cke_button .cke_label,.cke_skin_kama .cke_browser_opera .cke_button .cke_label,.cke_skin_kama .cke_browser_webkit .cke_button .cke_label{line-height:20px;}.cke_skin_kama .cke_browser_opera.cke_browser_quirks .cke_button .cke_label,.cke_skin_kama .cke_browser_iequirks .cke_button .cke_label{line-height:17px;}.cke_skin_kama .cke_browser_ie8 .cke_button .cke_label{vertical-align:top;}.cke_skin_kama .cke_browser_iequirks.cke_browser_ie8 .cke_button .cke_label{vertical-align:middle;}.cke_skin_kama .cke_contextmenu{padding:2px;}.cke_skin_kama .cke_menuitem a{display:block;}.cke_skin_kama .cke_menuitem span{cursor:default;}.cke_skin_kama .cke_menuitem a:hover,.cke_skin_kama .cke_menuitem a:focus,.cke_skin_kama .cke_menuitem a:active{background-color:#D3D3D3;display:block;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover,.cke_skin_kama .cke_menuitem a.cke_disabled:focus,.cke_skin_kama .cke_menuitem a.cke_disabled:active{background-color:transparent!important;}
+.cke_skin_kama .cke_menuitem .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;background-color:transparent;width:16px;height:16px;float:left;}.cke_skin_kama .cke_menuitem .cke_disabled .cke_icon{filter:alpha(opacity=70);opacity:.70;}.cke_skin_kama .cke_menuitem .cke_icon_wrapper{background-color:#D3D3D3;border:solid 4px #D3D3D3;width:16px;height:16px;float:left;filter:alpha(opacity=70);opacity:.70;clear:both;}.cke_rtl .cke_skin_kama .cke_menuitem .cke_icon_wrapper{float:right;}.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper{background-color:#9d9d9d;border:solid 4px #9d9d9d;filter:alpha(opacity=70);opacity:.70;}.cke_skin_kama .cke_menuitem a:hover.cke_disabled .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus.cke_disabled .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active.cke_disabled .cke_icon_wrapper{background-color:#D3D3D3;border:solid 4px #D3D3D3;}.cke_skin_kama .cke_menuitem .cke_label{display:block;padding-right:3px;padding-top:5px;padding-left:4px;height:19px;margin-left:24px;background-color:#fff;_overflow:hidden;_width:80px;filter:alpha(opacity=70);opacity:.70;}.cke_rtl .cke_skin_kama .cke_menuitem .cke_label{padding-right:0;margin-left:0;padding-left:3px;margin-right:28px;}.cke_skin_kama .cke_menuitem a.cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.30;}.cke_skin_kama .cke_menuitem a:hover .cke_label,.cke_skin_kama .cke_menuitem a:focus .cke_label,.cke_skin_kama .cke_menuitem a:active .cke_label{background-color:#D3D3D3;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label{background-color:transparent;}.cke_skin_kama .cke_menuseparator{background-color:#D3D3D3;height:2px;filter:alpha(opacity=70);opacity:.70;_font-size:0;}.cke_skin_kama .cke_menuarrow{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1411px;background-repeat:no-repeat;height:5px;width:3px;float:right;margin-right:2px;margin-top:3px;}.cke_rtl .cke_skin_kama .cke_menuarrow{float:left;margin-right:0;margin-left:2px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1390px;background-repeat:no-repeat;}.cke_browser_ie.cke_ltr .cke_skin_kama .cke_menuarrow{position:absolute;right:2px;}.cke_browser_ie.cke_rtl .cke_skin_kama .cke_menuarrow{position:absolute;left:2px;}.cke_skin_kama .cke_rcombo{display:inline;}.cke_skin_kama .cke_rcombopanel{border:1px solid #8F8F73;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;height:auto;_height:100px;}.cke_skin_kama .cke_rcombo a,.cke_skin_kama .cke_rcombo a:active,.cke_skin_kama .cke_rcombo a:hover{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:repeat-x;background-position:0 -100px;border-bottom:1px solid #DAD9D9;border-right:1px solid #DAD9D9;float:left;padding:2px;height:21px;margin-right:6px;}.cke_skin_kama .cke_rtl .cke_rcombo a,.cke_skin_kama .cke_rtl .cke_rcombo a:active,.cke_skin_kama .cke_rtl .cke_rcombo a:hover{float:right;margin-right:0;margin-left:6px;}.cke_skin_kama .cke_hc .cke_rcombo a{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_kama .cke_rcombo .cke_label{display:none;line-height:26px;vertical-align:top;margin-right:5px;filter:alpha(opacity=70);opacity:.70;}.cke_skin_kama .cke_rtl .cke_rcombo .cke_label{margin-right:0;margin-left:5px;}.cke_skin_kama .cke_rcombo .cke_inline_label{line-height:21px;font-style:italic;color:#666;}.cke_skin_kama .cke_hc .cke_rcombo .cke_label{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_kama .cke_rcombo .cke_text{filter:alpha(opacity=70);opacity:.70;height:21px;line-height:21px;width:60px;text-overflow:ellipsis;overflow:hidden;display:inline-block;margin:0 2px 0 4px;}.cke_skin_kama .cke_rtl .cke_rcombo .cke_text{margin:0 4px 0 2px;}
+.cke_skin_kama .cke_rcombo .cke_openbutton{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -68px;background-repeat:no-repeat;display:inline-block;width:17px;height:19px;margin:1px 2px;background-repeat:no-repeat;}.cke_skin_kama .cke_browser_iequirks .cke_rcombo .cke_openbutton{margin-bottom:0;}.cke_skin_kama .cke_rcombo .cke_off a:hover .cke_text,.cke_skin_kama .cke_rcombo .cke_off a:focus .cke_text,.cke_skin_kama .cke_rcombo .cke_off a:active .cke_text,.cke_skin_kama .cke_rcombo .cke_on .cke_text{border-color:#316ac5;filter:alpha(opacity=100);opacity:1;}.cke_skin_kama .cke_rcombo .cke_off a:hover .cke_openbutton,.cke_skin_kama .cke_rcombo .cke_off a:focus .cke_openbutton,.cke_skin_kama .cke_rcombo .cke_off a:active .cke_openbutton,.cke_skin_kama .cke_rcombo .cke_on .cke_openbutton{border-color:#316ac5;background-color:#dff1ff;}.cke_skin_kama .cke_rcombo .cke_on .cke_text{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;}.cke_skin_kama .cke_rcombo .cke_on .cke_openbutton{-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;}.cke_skin_kama .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.3;}.cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=70);opacity:.7;}.cke_skin_kama .cke_rcombo .cke_disabled .cke_text,.cke_skin_kama .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=50);opacity:.5;}.cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_text,.cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=80);opacity:.8;}.cke_skin_kama .cke_rcombo .cke_disabled .cke_text{color:#fff;}.cke_skin_kama .cke_browser_gecko .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_gecko .cke_rcombo .cke_openbutton,.cke_skin_kama .cke_browser_webkit .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_webkit .cke_rcombo .cke_openbutton{display:block;float:left;}.cke_skin_kama .cke_browser_gecko .cke_rcombo .cke_label,.cke_skin_kama .cke_browser_webkit .cke_rcombo .cke_label{float:left;}.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_rcombo .cke_label,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_rcombo .cke_openbutton,.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_rcombo .cke_label,.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_rcombo .cke_openbutton{float:right;}.cke_skin_kama .cke_browser_ie7 .cke_rcombo .cke_text{line-height:18px;}.cke_skin_kama .cke_browser_ie6 .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_iequirks .cke_rcombo .cke_text{height:auto;line-height:17px;}@media print{.cke_path{display:none;}}.cke_skin_kama .cke_path{padding:0 5px;display:inline-block;float:left;}.cke_skin_kama .cke_rtl .cke_path{float:right;}.cke_skin_kama .cke_path a,.cke_skin_kama .cke_path .cke_empty{display:inline-block;float:left;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;margin-bottom:3px;color:#60676a;}.cke_skin_kama .cke_path .cke_empty{visibility:hidden;}.cke_skin_kama .cke_rtl .cke_path a,.cke_skin_kama .cke_rtl .cke_path cke_empty{float:right;}.cke_skin_kama .cke_path a:hover,.cke_skin_kama .cke_path a:focus,.cke_skin_kama .cke_path a:active{background-color:#dff1ff;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;outline:none;color:#000;}.cke_skin_kama .cke_browser_ie .cke_rtl .cke_path a,.cke_skin_kama .cke_browser_ie .cke_rtl .cke_path .cke_empty{float:none;}.cke_skin_kama .cke_button_source .cke_icon{background-position:0 0;}.cke_skin_kama .cke_button_newpage .cke_icon{background-position:0 -48px;}.cke_skin_kama .cke_button_preview .cke_icon{background-position:0 -64px;}.cke_skin_kama .cke_button_cut .cke_icon{background-position:0 -96px;}.cke_skin_kama .cke_button_copy .cke_icon{background-position:0 -112px;}.cke_skin_kama .cke_button_paste .cke_icon{background-position:0 -128px;}.cke_skin_kama .cke_button_pastetext .cke_icon{background-position:0 -144px;}
+.cke_skin_kama .cke_button_find .cke_icon{background-position:0 -240px;}.cke_skin_kama .cke_button_replace .cke_icon{background-position:0 -256px;}.cke_skin_kama .cke_button_selectAll .cke_icon{background-position:0 -272px;}.cke_skin_kama .cke_button_removeFormat .cke_icon{background-position:0 -288px;}.cke_skin_kama .cke_button_bold .cke_icon{background-position:0 -304px;}.cke_skin_kama .cke_button_italic .cke_icon{background-position:0 -320px;}.cke_skin_kama .cke_button_underline .cke_icon{background-position:0 -336px;}.cke_skin_kama .cke_button_strike .cke_icon{background-position:0 -352px;}.cke_skin_kama .cke_button_subscript .cke_icon{background-position:0 -368px;}.cke_skin_kama .cke_button_superscript .cke_icon{background-position:0 -384px;}.cke_skin_kama .cke_button_table .cke_icon{background-position:0 -608px;}.cke_skin_kama .cke_button_horizontalrule .cke_icon{background-position:0 -624px;}.cke_skin_kama .cke_button_smiley .cke_icon{background-position:0 -640px;}.cke_skin_kama .cke_button_link .cke_icon{background-position:0 -528px;}.cke_skin_kama .cke_button_unlink .cke_icon{background-position:0 -544px;}.cke_skin_kama .cke_button_anchor .cke_icon{background-position:0 -560px;}.cke_skin_kama .cke_button_image .cke_icon{background-position:0 -576px;}.cke_skin_kama .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_kama .cke_button_specialchar .cke_icon{background-position:0 -656px;}.cke_skin_kama .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_kama .cke_button_print .cke_icon{background-position:0 -176px;}.cke_skin_kama .cke_button_checkspell .cke_icon,.cke_skin_kama .cke_button_scayt .cke_icon{background-position:0 -192px;}.cke_skin_kama .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_kama .cke_button_textcolor .cke_icon{background-position:0 -704px;}.cke_skin_kama .cke_button_bgcolor .cke_icon{background-position:0 -720px;}.cke_skin_kama .cke_button_form .cke_icon{background-position:0 -752px;}.cke_skin_kama .cke_button_checkbox .cke_icon{background-position:0 -768px;}.cke_skin_kama .cke_button_radio .cke_icon{background-position:0 -784px;}.cke_skin_kama .cke_button_textfield .cke_icon{background-position:0 -800px;}.cke_skin_kama .cke_button_textarea .cke_icon{background-position:0 -816px;}.cke_skin_kama .cke_button_showblocks .cke_icon{background-position:0 -1136px;}.cke_skin_kama .cke_button_select .cke_icon{background-position:0 -832px;}.cke_skin_kama .cke_button_button .cke_icon{background-position:0 -848px;}.cke_skin_kama .cke_button_imagebutton .cke_icon{background-position:0 -864px;}.cke_skin_kama .cke_button_hiddenfield .cke_icon{background-position:0 -880px;}.cke_skin_kama .cke_button_undo .cke_icon{background-position:0 -208px;}.cke_skin_kama .cke_rtl .cke_button_undo .cke_icon{background-position:0 -224px;}.cke_skin_kama .cke_button_redo .cke_icon{background-position:0 -224px;}.cke_skin_kama .cke_rtl .cke_button_redo .cke_icon{background-position:0 -208px;}.cke_skin_kama .cke_button_templates .cke_icon{background-position:0 -80px;}.cke_skin_kama .cke_button_numberedlist .cke_icon{background-position:0 -400px;}.cke_skin_kama .cke_button_bulletedlist .cke_icon{background-position:0 -416px;}.cke_skin_kama .cke_button_outdent .cke_icon{background-position:0 -432px;}.cke_skin_kama .cke_button_indent .cke_icon{background-position:0 -448px;}.cke_skin_kama .cke_button_justifyleft .cke_icon{background-position:0 -464px;}.cke_skin_kama .cke_button_justifycenter .cke_icon{background-position:0 -480px;}.cke_skin_kama .cke_button_justifyright .cke_icon{background-position:0 -496px;}.cke_skin_kama .cke_button_justifyblock .cke_icon{background-position:0 -512px;}.cke_skin_kama .cke_button_blockquote .cke_icon{background-position:0 -1152px;}.cke_skin_kama .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_kama .cke_button_pastefromword .cke_icon{background-position:0 -160px;}.cke_skin_kama .cke_button_save .cke_icon{background-position:0 -32px;}.cke_skin_kama .cke_button_about .cke_icon{background-position:0 -736px;}.cke_skin_kama .cke_button_maximize .cke_icon{background-position:0 -1040px;}
+.cke_skin_kama .cke_button_source .cke_label{display:inline;}.cke_skin_kama .cke_styles_panel{width:150px;height:170px;}.cke_skin_kama .cke_format_panel{width:150px;height:170px;}.cke_skin_kama .cke_font_panel{width:150px;height:170px;}.cke_skin_kama .cke_fontSize_panel{height:170px;}.cke_skin_kama .cke_fontSize .cke_text{width:25px;}.cke_skin_kama .cke_browser_iequirks .cke_fontSize .cke_text{width:32px;}html .cke_skin_kama,html.cke_skin_kama_container{visibility:visible;}
Index: /trunk/filemanager/tp/ckeditor/_source/lang/fo.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/fo.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/fo.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Faroese language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['fo'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Kelda',
+	newPage			: 'Nýggj síða',
+	save			: 'Goym',
+	preview			: 'Frumsýning',
+	cut				: 'Kvett',
+	copy			: 'Avrita',
+	paste			: 'Innrita',
+	print			: 'Prenta',
+	underline		: 'Undirstrikað',
+	bold			: 'Feit skrift',
+	italic			: 'Skráskrift',
+	selectAll		: 'Markera alt',
+	removeFormat	: 'Strika sniðgeving',
+	strike			: 'Yvirstrikað',
+	subscript		: 'Lækkað skrift',
+	superscript		: 'Hækkað skrift',
+	horizontalrule	: 'Ger vatnrætta linju',
+	pagebreak		: 'Ger síðuskift',
+	unlink			: 'Strika tilknýti',
+	undo			: 'Angra',
+	redo			: 'Vend aftur',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Ambætarakagi',
+		url				: 'URL',
+		protocol		: 'Protokoll',
+		upload			: 'Send til ambætaran',
+		uploadSubmit	: 'Send til ambætaran',
+		image			: 'Myndir',
+		flash			: 'Flash',
+		form			: 'Formur',
+		checkbox		: 'Flugubein',
+		radio		: 'Radioknøttur',
+		textField		: 'Tekstteigur',
+		textarea		: 'Tekstumráði',
+		hiddenField		: 'Fjaldur teigur',
+		button			: 'Knøttur',
+		select	: 'Valskrá',
+		imageButton		: 'Myndaknøttur',
+		notSet			: '<ikki sett>',
+		id				: 'Id',
+		name			: 'Navn',
+		langDir			: 'Tekstkós',
+		langDirLtr		: 'Frá vinstru til høgru (LTR)',
+		langDirRtl		: 'Frá høgru til vinstru (RTL)',
+		langCode		: 'Málkoda',
+		longDescr		: 'Víðkað URL frágreiðing',
+		cssClass		: 'Typografi klassar',
+		advisoryTitle	: 'Vegleiðandi heiti',
+		cssStyle		: 'Typografi',
+		ok				: 'Góðkent',
+		cancel			: 'Avlýst',
+		generalTab		: 'Generelt',
+		advancedTab		: 'Fjølbroytt',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Set inn sertekn',
+		title		: 'Vel sertekn'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Ger/broyt tilknýti',
+		menu		: 'Broyt tilknýti',
+		title		: 'Tilknýti',
+		info		: 'Tilknýtis upplýsingar',
+		target		: 'Mál',
+		upload		: 'Send til ambætaran',
+		advanced	: 'Fjølbroytt',
+		type		: 'Tilknýtisslag',
+		toAnchor	: 'Tilknýti til marknastein í tekstinum',
+		toEmail		: 'Teldupostur',
+		target		: 'Mál',
+		targetNotSet	: '<ikki sett>',
+		targetFrame	: '<ramma>',
+		targetPopup	: '<popup vindeyga>',
+		targetNew	: 'Nýtt vindeyga (_blank)',
+		targetTop	: 'Alt vindeygað (_top)',
+		targetSelf	: 'Sama vindeygað (_self)',
+		targetParent	: 'Upphavliga vindeygað (_parent)',
+		targetFrameName	: 'Vís navn vindeygans',
+		targetPopupName	: 'Popup vindeygans navn',
+		popupFeatures	: 'Popup vindeygans víðkaðu eginleikar',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Støðufrágreiðingarbjálki',
+		popupLocationBar	: 'Adressulinja',
+		popupToolbar	: 'Amboðsbjálki',
+		popupMenuBar	: 'Skrábjálki',
+		popupFullScreen	: 'Fullur skermur (IE)',
+		popupScrollBars	: 'Rullibjálki',
+		popupDependent	: 'Bundið (Netscape)',
+		popupWidth		: 'Breidd',
+		popupLeft		: 'Frástøða frá vinstru',
+		popupHeight		: 'Hædd',
+		popupTop		: 'Frástøða frá íerva',
+		id				: 'Id', // MISSING
+		langDir			: 'Tekstkós',
+		langDirNotSet	: '<ikki sett>',
+		langDirLTR		: 'Frá vinstru til høgru (LTR)',
+		langDirRTL		: 'Frá høgru til vinstru (RTL)',
+		acccessKey		: 'Snarvegisknappur',
+		name			: 'Navn',
+		langCode		: 'Tekstkós',
+		tabIndex		: 'Inntriv indeks',
+		advisoryTitle	: 'Vegleiðandi heiti',
+		advisoryContentType	: 'Vegleiðandi innihaldsslag',
+		cssClasses		: 'Typografi klassar',
+		charset			: 'Atknýtt teknsett',
+		styles			: 'Typografi',
+		selectAnchor	: 'Vel ein marknastein',
+		anchorName		: 'Eftir navni á marknasteini',
+		anchorId		: 'Eftir element Id',
+		emailAddress	: 'Teldupost-adressa',
+		emailSubject	: 'Evni',
+		emailBody		: 'Breyðtekstur',
+		noAnchors		: '(Eingir marknasteinar eru í hesum dokumentið)',
+		noUrl			: 'Vinarliga skriva tilknýti (URL)',
+		noEmail			: 'Vinarliga skriva teldupost-adressu'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Ger/broyt marknastein',
+		menu		: 'Eginleikar fyri marknastein',
+		title		: 'Eginleikar fyri marknastein',
+		name		: 'Heiti marknasteinsins',
+		errorName	: 'Vinarliga rita marknasteinsins heiti'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Finn og broyt',
+		find				: 'Leita',
+		replace				: 'Yvirskriva',
+		findWhat			: 'Finn:',
+		replaceWith			: 'Yvirskriva við:',
+		notFoundMsg			: 'Leititeksturin varð ikki funnin',
+		matchCase			: 'Munur á stórum og smáðum bókstavum',
+		matchWord			: 'Bert heil orð',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Yvirskriva alt',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabell',
+		title		: 'Eginleikar fyri tabell',
+		menu		: 'Eginleikar fyri tabell',
+		deleteTable	: 'Strika tabell',
+		rows		: 'Røðir',
+		columns		: 'Kolonnur',
+		border		: 'Bordabreidd',
+		align		: 'Justering',
+		alignNotSet	: '<Einki valt>',
+		alignLeft	: 'Vinstrasett',
+		alignCenter	: 'Miðsett',
+		alignRight	: 'Høgrasett',
+		width		: 'Breidd',
+		widthPx		: 'pixels',
+		widthPc		: 'prosent',
+		height		: 'Hædd',
+		cellSpace	: 'Fjarstøða millum meskar',
+		cellPad		: 'Meskubreddi',
+		caption		: 'Tabellfrágreiðing',
+		summary		: 'Samandráttur',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Meski',
+			insertBefore	: 'Set meska inn áðrenn',
+			insertAfter		: 'Set meska inn aftaná',
+			deleteCell		: 'Strika meskar',
+			merge			: 'Flætta meskar',
+			mergeRight		: 'Flætta meskar til høgru',
+			mergeDown		: 'Flætta saman',
+			splitHorizontal	: 'Kloyv meska vatnrætt',
+			splitVertical	: 'Kloyv meska loddrætt',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Rað',
+			insertBefore	: 'Set rað inn áðrenn',
+			insertAfter		: 'Set rað inn aftaná',
+			deleteRow		: 'Strika røðir'
+		},
+
+		column :
+		{
+			menu			: 'Kolonna',
+			insertBefore	: 'Set kolonnu inn áðrenn',
+			insertAfter		: 'Set kolonnu inn aftaná',
+			deleteColumn	: 'Strika kolonnur'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Eginleikar fyri knøtt',
+		text		: 'Tekstur',
+		type		: 'Slag',
+		typeBtn		: 'Knøttur',
+		typeSbm		: 'Send',
+		typeRst		: 'Nullstilla'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Eginleikar fyri flugubein',
+		radioTitle	: 'Eginleikar fyri radioknøtt',
+		value		: 'Virði',
+		selected	: 'Valt'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Eginleikar fyri Form',
+		menu		: 'Eginleikar fyri Form',
+		action		: 'Hending',
+		method		: 'Háttur',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Mál',
+		targetNotSet	: '<ikki sett>',
+		targetNew	: 'Nýtt vindeyga (_blank)',
+		targetTop	: 'Alt vindeygað (_top)',
+		targetSelf	: 'Sama vindeygað (_self)',
+		targetParent	: 'Upphavliga vindeygað (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Eginleikar fyri valskrá',
+		selectInfo	: 'Upplýsingar',
+		opAvail		: 'Tøkir møguleikar',
+		value		: 'Virði',
+		size		: 'Stødd',
+		lines		: 'Linjur',
+		chkMulti	: 'Loyv fleiri valmøguleikum samstundis',
+		opText		: 'Tekstur',
+		opValue		: 'Virði',
+		btnAdd		: 'Legg afturat',
+		btnModify	: 'Broyt',
+		btnUp		: 'Upp',
+		btnDown		: 'Niður',
+		btnSetValue : 'Set sum valt virði',
+		btnDelete	: 'Strika'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Eginleikar fyri tekstumráði',
+		cols		: 'kolonnur',
+		rows		: 'røðir'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Eginleikar fyri tekstteig',
+		name		: 'Navn',
+		value		: 'Virði',
+		charWidth	: 'Breidd (sjónlig tekn)',
+		maxChars	: 'Mest loyvdu tekn',
+		type		: 'Slag',
+		typeText	: 'Tekstur',
+		typePass	: 'Loyniorð'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Eginleikar fyri fjaldan teig',
+		name	: 'Navn',
+		value	: 'Virði'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Myndaeginleikar',
+		titleButton	: 'Eginleikar fyri myndaknøtt',
+		menu		: 'Myndaeginleikar',
+		infoTab	: 'Myndaupplýsingar',
+		btnUpload	: 'Send til ambætaran',
+		url		: 'URL',
+		upload	: 'Send',
+		alt		: 'Alternativur tekstur',
+		width		: 'Breidd',
+		height	: 'Hædd',
+		lockRatio	: 'Læs lutfallið',
+		resetSize	: 'Upprunastødd',
+		border	: 'Bordi',
+		hSpace	: 'Høgri breddi',
+		vSpace	: 'Vinstri breddi',
+		align		: 'Justering',
+		alignLeft	: 'Vinstra',
+		alignAbsBottom: 'Abs botnur',
+		alignAbsMiddle: 'Abs miðja',
+		alignBaseline	: 'Basislinja',
+		alignBottom	: 'Botnur',
+		alignMiddle	: 'Miðja',
+		alignRight	: 'Høgra',
+		alignTextTop	: 'Tekst toppur',
+		alignTop	: 'Ovast',
+		preview	: 'Frumsýning',
+		alertUrl	: 'Rita slóðina til myndina',
+		linkTab	: 'Tilknýti',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash eginleikar',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flash eginleikar',
+		chkPlay		: 'Avspælingin byrjar sjálv',
+		chkLoop		: 'Endurspæl',
+		chkMenu		: 'Ger Flash skrá virkna',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Skalering',
+		scaleAll		: 'Vís alt',
+		scaleNoBorder	: 'Eingin bordi',
+		scaleFit		: 'Neyv skalering',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Justering',
+		alignLeft	: 'Vinstra',
+		alignAbsBottom: 'Abs botnur',
+		alignAbsMiddle: 'Abs miðja',
+		alignBaseline	: 'Basislinja',
+		alignBottom	: 'Botnur',
+		alignMiddle	: 'Miðja',
+		alignRight	: 'Høgra',
+		alignTextTop	: 'Tekst toppur',
+		alignTop	: 'Ovast',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Bakgrundslitur',
+		width	: 'Breidd',
+		height	: 'Hædd',
+		hSpace	: 'Høgri breddi',
+		vSpace	: 'Vinstri breddi',
+		validateSrc : 'Vinarliga skriva tilknýti (URL)',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Kanna stavseting',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Finst ikki í orðabókini',
+		changeTo		: 'Broyt til',
+		btnIgnore		: 'Forfjóna',
+		btnIgnoreAll	: 'Forfjóna alt',
+		btnReplace		: 'Yvirskriva',
+		btnReplaceAll	: 'Yvirskriva alt',
+		btnUndo			: 'Angra',
+		noSuggestions	: '- Einki uppskot -',
+		progress		: 'Rættstavarin arbeiðir...',
+		noMispell		: 'Rættstavarain liðugur: Eingin feilur funnin',
+		noChanges		: 'Rættstavarain liðugur: Einki orð varð broytt',
+		oneChange		: 'Rættstavarain liðugur: Eitt orð er broytt',
+		manyChanges		: 'Rættstavarain liðugur: %1 orð broytt',
+		ieSpellDownload	: 'Rættstavarin er ikki tøkur í tekstviðgeranum. Vilt tú heinta hann nú?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Vel Smiley'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Talmerktur listi',
+	bulletedlist : 'Punktmerktur listi',
+	indent : 'Økja reglubrotarinntriv',
+	outdent : 'Minka reglubrotarinntriv',
+
+	justify :
+	{
+		left : 'Vinstrasett',
+		center : 'Miðsett',
+		right : 'Høgrasett',
+		block : 'Javnir tekstkantar'
+	},
+
+	blockquote : 'Blockquote',
+
+	clipboard :
+	{
+		title		: 'Innrita',
+		cutError	: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (CTRL+X).',
+		copyError	: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (CTRL+C).',
+		pasteMsg	: 'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (<strong>CTRL+V</strong>) og klikk á <strong>Góðtak</strong>.',
+		securityMsg	: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Innrita frá Word',
+		title : 'Innrita frá Word',
+		advice : 'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (<strong>CTRL+V</strong>) og klikk á <strong>Góðtak</strong>.',
+		ignoreFontFace : 'Forfjóna Font definitiónirnar',
+		removeStyle : 'Strika typografi definitiónir'
+	},
+
+	pasteText :
+	{
+		button : 'Innrita som reinan tekst',
+		title : 'Innrita som reinan tekst'
+	},
+
+	templates :
+	{
+		button : 'Skabelónir',
+		title : 'Innihaldsskabelónir',
+		insertOption: 'Yvirskriva núverandi innihald',
+		selectPromptMsg: 'Vinarliga vel ta skabelón, ið skal opnast í tekstviðgeranum<br>(Hetta yvirskrivar núverandi innihald):',
+		emptyListMsg : '(Ongar skabelónir tøkar)'
+	},
+
+	showBlocks : 'Vís blokkar',
+
+	stylesCombo :
+	{
+		label : 'Typografi',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Skriftsnið',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Skriftsnið',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Vanligt',
+		tag_pre : 'Sniðgivið',
+		tag_address : 'Adressa',
+		tag_h1 : 'Yvirskrift 1',
+		tag_h2 : 'Yvirskrift 2',
+		tag_h3 : 'Yvirskrift 3',
+		tag_h4 : 'Yvirskrift 4',
+		tag_h5 : 'Yvirskrift 5',
+		tag_h6 : 'Yvirskrift 6',
+		tag_div : 'Normal (DIV)' // MISSING
+	},
+
+	font :
+	{
+		label : 'Skrift',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Skrift',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Skriftstødd',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Skriftstødd',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Tekstlitur',
+		bgColorTitle : 'Bakgrundslitur',
+		auto : 'Automatiskt',
+		more : 'Fleiri litir...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/bs.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/bs.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/bs.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Bosnian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['bs'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'HTML kôd',
+	newPage			: 'Novi dokument',
+	save			: 'Snimi',
+	preview			: 'Prikaži',
+	cut				: 'Izreži',
+	copy			: 'Kopiraj',
+	paste			: 'Zalijepi',
+	print			: 'Štampaj',
+	underline		: 'Podvuci',
+	bold			: 'Boldiraj',
+	italic			: 'Ukosi',
+	selectAll		: 'Selektuj sve',
+	removeFormat	: 'Poništi format',
+	strike			: 'Precrtaj',
+	subscript		: 'Subscript',
+	superscript		: 'Superscript',
+	horizontalrule	: 'Ubaci horizontalnu liniju',
+	pagebreak		: 'Insert Page Break for Printing', // MISSING
+	unlink			: 'Izbriši link',
+	undo			: 'Vrati',
+	redo			: 'Ponovi',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Browse Server', // MISSING
+		url				: 'URL',
+		protocol		: 'Protokol',
+		upload			: 'Šalji',
+		uploadSubmit	: 'Šalji na server',
+		image			: 'Slika',
+		flash			: 'Flash', // MISSING
+		form			: 'Form', // MISSING
+		checkbox		: 'Checkbox', // MISSING
+		radio		: 'Radio Button', // MISSING
+		textField		: 'Text Field', // MISSING
+		textarea		: 'Textarea', // MISSING
+		hiddenField		: 'Hidden Field', // MISSING
+		button			: 'Button', // MISSING
+		select	: 'Selection Field', // MISSING
+		imageButton		: 'Image Button', // MISSING
+		notSet			: '<nije podešeno>',
+		id				: 'Id',
+		name			: 'Naziv',
+		langDir			: 'Smjer pisanja',
+		langDirLtr		: 'S lijeva na desno (LTR)',
+		langDirRtl		: 'S desna na lijevo (RTL)',
+		langCode		: 'Jezièni kôd',
+		longDescr		: 'Dugaèki opis URL-a',
+		cssClass		: 'Klase CSS stilova',
+		advisoryTitle	: 'Advisory title',
+		cssStyle		: 'Stil',
+		ok				: 'OK',
+		cancel			: 'Odustani',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Naprednije',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Ubaci specijalni karater',
+		title		: 'Izaberi specijalni karakter'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Ubaci/Izmjeni link',
+		menu		: 'Izmjeni link',
+		title		: 'Link',
+		info		: 'Link info',
+		target		: 'Prozor',
+		upload		: 'Šalji',
+		advanced	: 'Naprednije',
+		type		: 'Tip linka',
+		toAnchor	: 'Sidro na ovoj stranici',
+		toEmail		: 'E-Mail',
+		target		: 'Prozor',
+		targetNotSet	: '<nije podešeno>',
+		targetFrame	: '<frejm>',
+		targetPopup	: '<popup prozor>',
+		targetNew	: 'Novi prozor (_blank)',
+		targetTop	: 'Najgornji prozor (_top)',
+		targetSelf	: 'Isti prozor (_self)',
+		targetParent	: 'Glavni prozor (_parent)',
+		targetFrameName	: 'Target Frame Name', // MISSING
+		targetPopupName	: 'Naziv popup prozora',
+		popupFeatures	: 'Moguænosti popup prozora',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Statusna traka',
+		popupLocationBar	: 'Traka za lokaciju',
+		popupToolbar	: 'Traka sa alatima',
+		popupMenuBar	: 'Izborna traka',
+		popupFullScreen	: 'Cijeli ekran (IE)',
+		popupScrollBars	: 'Scroll traka',
+		popupDependent	: 'Ovisno (Netscape)',
+		popupWidth		: 'Širina',
+		popupLeft		: 'Lijeva pozicija',
+		popupHeight		: 'Visina',
+		popupTop		: 'Gornja pozicija',
+		id				: 'Id', // MISSING
+		langDir			: 'Smjer pisanja',
+		langDirNotSet	: '<nije podešeno>',
+		langDirLTR		: 'S lijeva na desno (LTR)',
+		langDirRTL		: 'S desna na lijevo (RTL)',
+		acccessKey		: 'Pristupna tipka',
+		name			: 'Naziv',
+		langCode		: 'Smjer pisanja',
+		tabIndex		: 'Tab indeks',
+		advisoryTitle	: 'Advisory title',
+		advisoryContentType	: 'Advisory vrsta sadržaja',
+		cssClasses		: 'Klase CSS stilova',
+		charset			: 'Linked Resource Charset',
+		styles			: 'Stil',
+		selectAnchor	: 'Izaberi sidro',
+		anchorName		: 'Po nazivu sidra',
+		anchorId		: 'Po Id-u elementa',
+		emailAddress	: 'E-Mail Adresa',
+		emailSubject	: 'Subjekt poruke',
+		emailBody		: 'Poruka',
+		noAnchors		: '(Nema dostupnih sidra na stranici)',
+		noUrl			: 'Molimo ukucajte URL link',
+		noEmail			: 'Molimo ukucajte e-mail adresu'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Anchor', // MISSING
+		menu		: 'Edit Anchor', // MISSING
+		title		: 'Anchor Properties', // MISSING
+		name		: 'Anchor Name', // MISSING
+		errorName	: 'Please type the anchor name' // MISSING
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'Naði',
+		replace				: 'Zamjeni',
+		findWhat			: 'Naði šta:',
+		replaceWith			: 'Zamjeni sa:',
+		notFoundMsg			: 'Traženi tekst nije pronaðen.',
+		matchCase			: 'Uporeðuj velika/mala slova',
+		matchWord			: 'Uporeðuj samo cijelu rijeè',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Zamjeni sve',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabela',
+		title		: 'Svojstva tabele',
+		menu		: 'Svojstva tabele',
+		deleteTable	: 'Delete Table', // MISSING
+		rows		: 'Redova',
+		columns		: 'Kolona',
+		border		: 'Okvir',
+		align		: 'Poravnanje',
+		alignNotSet	: '<Nije podešeno>',
+		alignLeft	: 'Lijevo',
+		alignCenter	: 'Centar',
+		alignRight	: 'Desno',
+		width		: 'Širina',
+		widthPx		: 'piksela',
+		widthPc		: 'posto',
+		height		: 'Visina',
+		cellSpace	: 'Razmak æelija',
+		cellPad		: 'Uvod æelija',
+		caption		: 'Naslov',
+		summary		: 'Summary', // MISSING
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Cell', // MISSING
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'Briši æelije',
+			merge			: 'Spoji æelije',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Row', // MISSING
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'Briši redove'
+		},
+
+		column :
+		{
+			menu			: 'Column', // MISSING
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'Briši kolone'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Button Properties', // MISSING
+		text		: 'Text (Value)', // MISSING
+		type		: 'Type', // MISSING
+		typeBtn		: 'Button', // MISSING
+		typeSbm		: 'Submit', // MISSING
+		typeRst		: 'Reset' // MISSING
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Checkbox Properties', // MISSING
+		radioTitle	: 'Radio Button Properties', // MISSING
+		value		: 'Value', // MISSING
+		selected	: 'Selected' // MISSING
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Form Properties', // MISSING
+		menu		: 'Form Properties', // MISSING
+		action		: 'Action', // MISSING
+		method		: 'Method', // MISSING
+		encoding	: 'Encoding', // MISSING
+		target		: 'Prozor',
+		targetNotSet	: '<nije podešeno>',
+		targetNew	: 'Novi prozor (_blank)',
+		targetTop	: 'Najgornji prozor (_top)',
+		targetSelf	: 'Isti prozor (_self)',
+		targetParent	: 'Glavni prozor (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Selection Field Properties', // MISSING
+		selectInfo	: 'Select Info', // MISSING
+		opAvail		: 'Available Options', // MISSING
+		value		: 'Value', // MISSING
+		size		: 'Size', // MISSING
+		lines		: 'lines', // MISSING
+		chkMulti	: 'Allow multiple selections', // MISSING
+		opText		: 'Text', // MISSING
+		opValue		: 'Value', // MISSING
+		btnAdd		: 'Add', // MISSING
+		btnModify	: 'Modify', // MISSING
+		btnUp		: 'Up', // MISSING
+		btnDown		: 'Down', // MISSING
+		btnSetValue : 'Set as selected value', // MISSING
+		btnDelete	: 'Delete' // MISSING
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Textarea Properties', // MISSING
+		cols		: 'Columns', // MISSING
+		rows		: 'Rows' // MISSING
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Text Field Properties', // MISSING
+		name		: 'Name', // MISSING
+		value		: 'Value', // MISSING
+		charWidth	: 'Character Width', // MISSING
+		maxChars	: 'Maximum Characters', // MISSING
+		type		: 'Type', // MISSING
+		typeText	: 'Text', // MISSING
+		typePass	: 'Password' // MISSING
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Hidden Field Properties', // MISSING
+		name	: 'Name', // MISSING
+		value	: 'Value' // MISSING
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Svojstva slike',
+		titleButton	: 'Image Button Properties', // MISSING
+		menu		: 'Svojstva slike',
+		infoTab	: 'Info slike',
+		btnUpload	: 'Šalji na server',
+		url		: 'URL',
+		upload	: 'Šalji',
+		alt		: 'Tekst na slici',
+		width		: 'Širina',
+		height	: 'Visina',
+		lockRatio	: 'Zakljuèaj odnos',
+		resetSize	: 'Resetuj dimenzije',
+		border	: 'Okvir',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		align		: 'Poravnanje',
+		alignLeft	: 'Lijevo',
+		alignAbsBottom: 'Abs dole',
+		alignAbsMiddle: 'Abs sredina',
+		alignBaseline	: 'Bazno',
+		alignBottom	: 'Dno',
+		alignMiddle	: 'Sredina',
+		alignRight	: 'Desno',
+		alignTextTop	: 'Vrh teksta',
+		alignTop	: 'Vrh',
+		preview	: 'Prikaz',
+		alertUrl	: 'Molimo ukucajte URL od slike.',
+		linkTab	: 'Link', // MISSING
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash Properties', // MISSING
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flash Properties', // MISSING
+		chkPlay		: 'Auto Play', // MISSING
+		chkLoop		: 'Loop', // MISSING
+		chkMenu		: 'Enable Flash Menu', // MISSING
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Scale', // MISSING
+		scaleAll		: 'Show all', // MISSING
+		scaleNoBorder	: 'No Border', // MISSING
+		scaleFit		: 'Exact Fit', // MISSING
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Poravnanje',
+		alignLeft	: 'Lijevo',
+		alignAbsBottom: 'Abs dole',
+		alignAbsMiddle: 'Abs sredina',
+		alignBaseline	: 'Bazno',
+		alignBottom	: 'Dno',
+		alignMiddle	: 'Sredina',
+		alignRight	: 'Desno',
+		alignTextTop	: 'Vrh teksta',
+		alignTop	: 'Vrh',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Boja pozadine',
+		width	: 'Širina',
+		height	: 'Visina',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		validateSrc : 'Molimo ukucajte URL link',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Check Spelling', // MISSING
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Not in dictionary', // MISSING
+		changeTo		: 'Change to', // MISSING
+		btnIgnore		: 'Ignore', // MISSING
+		btnIgnoreAll	: 'Ignore All', // MISSING
+		btnReplace		: 'Replace', // MISSING
+		btnReplaceAll	: 'Replace All', // MISSING
+		btnUndo			: 'Undo', // MISSING
+		noSuggestions	: '- No suggestions -', // MISSING
+		progress		: 'Spell check in progress...', // MISSING
+		noMispell		: 'Spell check complete: No misspellings found', // MISSING
+		noChanges		: 'Spell check complete: No words changed', // MISSING
+		oneChange		: 'Spell check complete: One word changed', // MISSING
+		manyChanges		: 'Spell check complete: %1 words changed', // MISSING
+		ieSpellDownload	: 'Spell checker not installed. Do you want to download it now?' // MISSING
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smješko',
+		title	: 'Ubaci smješka'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Numerisana lista',
+	bulletedlist : 'Lista',
+	indent : 'Poveæaj uvod',
+	outdent : 'Smanji uvod',
+
+	justify :
+	{
+		left : 'Lijevo poravnanje',
+		center : 'Centralno poravnanje',
+		right : 'Desno poravnanje',
+		block : 'Puno poravnanje'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Zalijepi',
+		cutError	: 'Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl+X).',
+		copyError	: 'Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl+C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK', // MISSING
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Zalijepi iz Word-a',
+		title : 'Zalijepi iz Word-a',
+		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.', // MISSING
+		ignoreFontFace : 'Ignore Font Face definitions', // MISSING
+		removeStyle : 'Remove Styles definitions' // MISSING
+	},
+
+	pasteText :
+	{
+		button : 'Zalijepi kao obièan tekst',
+		title : 'Zalijepi kao obièan tekst'
+	},
+
+	templates :
+	{
+		button : 'Templates', // MISSING
+		title : 'Content Templates', // MISSING
+		insertOption: 'Replace actual contents', // MISSING
+		selectPromptMsg: 'Please select the template to open in the editor', // MISSING
+		emptyListMsg : '(No templates defined)' // MISSING
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Stil',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Format',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatted',
+		tag_address : 'Address',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Normal (DIV)' // MISSING
+	},
+
+	font :
+	{
+		label : 'Font',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Font',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Velièina',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Velièina',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Boja teksta',
+		bgColorTitle : 'Boja pozadine',
+		auto : 'Automatska',
+		more : 'Više boja...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/_languages.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/_languages.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/_languages.js	(revision 2000)
@@ -0,0 +1,82 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+var CKEDITOR_LANGS = (function()
+{
+	var langs =
+	{
+		af		: 'Afrikaans',
+		ar		: 'Arabic',
+		bg		: 'Bulgarian',
+		bn		: 'Bengali/Bangla',
+		bs		: 'Bosnian',
+		ca		: 'Catalan',
+		cs		: 'Czech',
+		da		: 'Danish',
+		de		: 'German',
+		el		: 'Greek',
+		en		: 'English',
+		'en-au'	: 'English (Australia)',
+		'en-ca'	: 'English (Canadian)',
+		'en-uk'	: 'English (United Kingdom)',
+		eo		: 'Esperanto',
+		es		: 'Spanish',
+		et		: 'Estonian',
+		eu		: 'Basque',
+		fa		: 'Persian',
+		fi		: 'Finnish',
+		fo		: 'Faroese',
+		fr		: 'French',
+		'fr-ca'	: 'French (Canada)',
+		gl		: 'Galician',
+		gu		: 'Gujarati',
+		he		: 'Hebrew',
+		hi		: 'Hindi',
+		hr		: 'Croatian',
+		hu		: 'Hungarian',
+		is		: 'Icelandic',
+		it		: 'Italian',
+		ja		: 'Japanese',
+		km		: 'Khmer',
+		ko		: 'Korean',
+		lt		: 'Lithuanian',
+		lv		: 'Latvian',
+		mn		: 'Mongolian',
+		ms		: 'Malay',
+		nb		: 'Norwegian Bokmal',
+		nl		: 'Dutch',
+		no		: 'Norwegian',
+		pl		: 'Polish',
+		pt		: 'Portuguese (Portugal)',
+		'pt-br'	: 'Portuguese (Brazil)',
+		ro		: 'Romanian',
+		ru		: 'Russian',
+		sk		: 'Slovak',
+		sl		: 'Slovenian',
+		sr		: 'Serbian (Cyrillic)',
+		'sr-latn'	: 'Serbian (Latin)',
+		sv		: 'Swedish',
+		th		: 'Thai',
+		tr		: 'Turkish',
+		uk		: 'Ukrainian',
+		vi		: 'Vietnamese',
+		zh		: 'Chinese Traditional',
+		'zh-cn'	: 'Chinese Simplified'
+	};
+
+	var langsArray = [];
+
+	for ( var code in langs )
+	{
+		langsArray.push( { code : code, name : langs[ code ] } );
+	}
+
+	langsArray.sort( function( a, b )
+		{
+			return ( a.name < b.name ) ? -1 : 1;
+		});
+
+	return langsArray;
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/lang/cs.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/cs.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/cs.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Czech language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['cs'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Editor formátovaného textu, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Zdroj',
+	newPage			: 'Nová stránka',
+	save			: 'Uložit',
+	preview			: 'Náhled',
+	cut				: 'Vyjmout',
+	copy			: 'Kopírovat',
+	paste			: 'Vložit',
+	print			: 'Tisk',
+	underline		: 'Podtržené',
+	bold			: 'Tučné',
+	italic			: 'Kurzíva',
+	selectAll		: 'Vybrat vše',
+	removeFormat	: 'Odstranit formátování',
+	strike			: 'Přeškrtnuté',
+	subscript		: 'Dolní index',
+	superscript		: 'Horní index',
+	horizontalrule	: 'Vložit vodorovnou linku',
+	pagebreak		: 'Vložit konec stránky',
+	unlink			: 'Odstranit odkaz',
+	undo			: 'Zpět',
+	redo			: 'Znovu',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Vybrat na serveru',
+		url				: 'URL',
+		protocol		: 'Protokol',
+		upload			: 'Odeslat',
+		uploadSubmit	: 'Odeslat na server',
+		image			: 'Obrázek',
+		flash			: 'Flash',
+		form			: 'Formulář',
+		checkbox		: 'Zaškrtávací políčko',
+		radio		: 'Přepínač',
+		textField		: 'Textové pole',
+		textarea		: 'Textová oblast',
+		hiddenField		: 'Skryté pole',
+		button			: 'Tlačítko',
+		select	: 'Seznam',
+		imageButton		: 'Obrázkové tlačítko',
+		notSet			: '<nenastaveno>',
+		id				: 'Id',
+		name			: 'Jméno',
+		langDir			: 'Orientace jazyka',
+		langDirLtr		: 'Zleva do prava (LTR)',
+		langDirRtl		: 'Zprava do leva (RTL)',
+		langCode		: 'Kód jazyka',
+		longDescr		: 'Dlouhý popis URL',
+		cssClass		: 'Třída stylu',
+		advisoryTitle	: 'Pomocný titulek',
+		cssStyle		: 'Styl',
+		ok				: 'OK',
+		cancel			: 'Storno',
+		generalTab		: 'Obecné',
+		advancedTab		: 'Rozšířené',
+		validateNumberFailed	: 'Zadaná hodnota není číselná.',
+		confirmNewPage	: 'Jakékoliv neuložené změny obsahu budou ztraceny. Skutečně chete otevrít novou stránku?',
+		confirmCancel	: 'Některá z nastavení byla změněna. Skutečně chete zavřít dialogové okno?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, nedostupné</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Vložit speciální znaky',
+		title		: 'Výběr speciálního znaku'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Vložit/změnit odkaz',
+		menu		: 'Změnit odkaz',
+		title		: 'Odkaz',
+		info		: 'Informace o odkazu',
+		target		: 'Cíl',
+		upload		: 'Odeslat',
+		advanced	: 'Rozšířené',
+		type		: 'Typ odkazu',
+		toAnchor	: 'Kotva v této stránce',
+		toEmail		: 'E-Mail',
+		target		: 'Cíl',
+		targetNotSet	: '<nenastaveno>',
+		targetFrame	: '<rámec>',
+		targetPopup	: '<vyskakovací okno>',
+		targetNew	: 'Nové okno (_blank)',
+		targetTop	: 'Hlavní okno (_top)',
+		targetSelf	: 'Stejné okno (_self)',
+		targetParent	: 'Rodičovské okno (_parent)',
+		targetFrameName	: 'Název cílového rámu',
+		targetPopupName	: 'Název vyskakovacího okna',
+		popupFeatures	: 'Vlastnosti vyskakovacího okna',
+		popupResizable	: 'Umožňující měnit velikost',
+		popupStatusBar	: 'Stavový řádek',
+		popupLocationBar	: 'Panel umístění',
+		popupToolbar	: 'Panel nástrojů',
+		popupMenuBar	: 'Panel nabídky',
+		popupFullScreen	: 'Celá obrazovka (IE)',
+		popupScrollBars	: 'Posuvníky',
+		popupDependent	: 'Závislost (Netscape)',
+		popupWidth		: 'Šířka',
+		popupLeft		: 'Levý okraj',
+		popupHeight		: 'Výška',
+		popupTop		: 'Horní okraj',
+		id				: 'Id',
+		langDir			: 'Orientace jazyka',
+		langDirNotSet	: '<nenastaveno>',
+		langDirLTR		: 'Zleva do prava (LTR)',
+		langDirRTL		: 'Zprava do leva (RTL)',
+		acccessKey		: 'Přístupový klíč',
+		name			: 'Jméno',
+		langCode		: 'Orientace jazyka',
+		tabIndex		: 'Pořadí prvku',
+		advisoryTitle	: 'Pomocný titulek',
+		advisoryContentType	: 'Pomocný typ obsahu',
+		cssClasses		: 'Třída stylu',
+		charset			: 'Přiřazená znaková sada',
+		styles			: 'Styl',
+		selectAnchor	: 'Vybrat kotvu',
+		anchorName		: 'Podle jména kotvy',
+		anchorId		: 'Podle Id objektu',
+		emailAddress	: 'E-Mailová adresa',
+		emailSubject	: 'Předmět zprávy',
+		emailBody		: 'Tělo zprávy',
+		noAnchors		: '(Ve stránce není definována žádná kotva!)',
+		noUrl			: 'Zadejte prosím URL odkazu',
+		noEmail			: 'Zadejte prosím e-mailovou adresu'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Vložít/změnit záložku',
+		menu		: 'Vlastnosti záložky',
+		title		: 'Vlastnosti záložky',
+		name		: 'Název záložky',
+		errorName	: 'Zadejte prosím název záložky'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Najít a nahradit',
+		find				: 'Hledat',
+		replace				: 'Nahradit',
+		findWhat			: 'Co hledat:',
+		replaceWith			: 'Čím nahradit:',
+		notFoundMsg			: 'Hledaný text nebyl nalezen.',
+		matchCase			: 'Rozlišovat velikost písma',
+		matchWord			: 'Pouze celá slova',
+		matchCyclic			: 'Procházet opakovaně',
+		replaceAll			: 'Nahradit vše',
+		replaceSuccessMsg	: '%1 nahrazení.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabulka',
+		title		: 'Vlastnosti tabulky',
+		menu		: 'Vlastnosti tabulky',
+		deleteTable	: 'Smazat tabulku',
+		rows		: 'Řádky',
+		columns		: 'Sloupce',
+		border		: 'Ohraničení',
+		align		: 'Zarovnání',
+		alignNotSet	: '<nenastaveno>',
+		alignLeft	: 'Vlevo',
+		alignCenter	: 'Na střed',
+		alignRight	: 'Vpravo',
+		width		: 'Šířka',
+		widthPx		: 'bodů',
+		widthPc		: 'procent',
+		height		: 'Výška',
+		cellSpace	: 'Vzdálenost buněk',
+		cellPad		: 'Odsazení obsahu v buňce',
+		caption		: 'Popis',
+		summary		: 'Souhrn',
+		headers		: 'Záhlaví',
+		headersNone		: 'Žádné',
+		headersColumn	: 'První sloupec',
+		headersRow		: 'První řádek',
+		headersBoth		: 'Obojí',
+		invalidRows		: 'Počet řádků musí být číslo větší než 0.',
+		invalidCols		: 'Počet sloupců musí být číslo větší než 0.',
+		invalidBorder	: 'Zdaná velikost okraje musí být číselná.',
+		invalidWidth	: 'Zadaná šířka tabulky musí být číselná.',
+		invalidHeight	: 'zadaná výška tabulky musí být číselná.',
+		invalidCellSpacing	: 'Zadaná vzdálenost buněk musí být číselná.',
+		invalidCellPadding	: 'Zadané odsazení obsahu v buňce musí být číselné.',
+
+		cell :
+		{
+			menu			: 'Buňka',
+			insertBefore	: 'Vložit buňku před',
+			insertAfter		: 'Vložit buňku za',
+			deleteCell		: 'Smazat buňky',
+			merge			: 'Sloučit buňky',
+			mergeRight		: 'Sloučit doprava',
+			mergeDown		: 'Sloučit dolů',
+			splitHorizontal	: 'Rozdělit buňky vodorovně',
+			splitVertical	: 'Rozdělit buňky svisle',
+			title			: 'Vlastnosti buňky',
+			cellType		: 'Typ buňky',
+			rowSpan			: 'Spojit řádky',
+			colSpan			: 'Spojit sloupce',
+			wordWrap		: 'Zalamování',
+			hAlign			: 'Vodorovné zarovnání',
+			vAlign			: 'Svislé zarovnání',
+			alignTop		: 'Nahoru',
+			alignMiddle		: 'Doprostřed',
+			alignBottom		: 'Dolů',
+			alignBaseline	: 'Na účaří',
+			bgColor			: 'Barva pozadí',
+			borderColor		: 'Barva okraje',
+			data			: 'Data',
+			header			: 'Hlavička',
+			yes				: 'Ano',
+			no				: 'Ne',
+			invalidWidth	: 'Zadaná šířka buňky musí být číslená.',
+			invalidHeight	: 'Zadaná výška buňky musí být číslená.',
+			invalidRowSpan	: 'Zadaný počet sloučených řádků musí být celé číslo.',
+			invalidColSpan	: 'Zadaný počet sloučených sloupců musí být celé číslo.',
+			chooseColor : 'Výběr'
+		},
+
+		row :
+		{
+			menu			: 'Řádek',
+			insertBefore	: 'Vložit řádek před',
+			insertAfter		: 'Vložit řádek za',
+			deleteRow		: 'Smazat řádky'
+		},
+
+		column :
+		{
+			menu			: 'Sloupec',
+			insertBefore	: 'Vložit sloupec před',
+			insertAfter		: 'Vložit sloupec za',
+			deleteColumn	: 'Smazat sloupec'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Vlastnosti tlačítka',
+		text		: 'Popisek',
+		type		: 'Typ',
+		typeBtn		: 'Tlačítko',
+		typeSbm		: 'Odeslat',
+		typeRst		: 'Obnovit'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Vlastnosti zaškrtávacího políčka',
+		radioTitle	: 'Vlastnosti přepínače',
+		value		: 'Hodnota',
+		selected	: 'Zaškrtnuto'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Vlastnosti formuláře',
+		menu		: 'Vlastnosti formuláře',
+		action		: 'Akce',
+		method		: 'Metoda',
+		encoding	: 'Kódování',
+		target		: 'Cíl',
+		targetNotSet	: '<nenastaveno>',
+		targetNew	: 'Nové okno (_blank)',
+		targetTop	: 'Hlavní okno (_top)',
+		targetSelf	: 'Stejné okno (_self)',
+		targetParent	: 'Rodičovské okno (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Vlastnosti seznamu',
+		selectInfo	: 'Info',
+		opAvail		: 'Dostupná nastavení',
+		value		: 'Hodnota',
+		size		: 'Velikost',
+		lines		: 'Řádků',
+		chkMulti	: 'Povolit mnohonásobné výběry',
+		opText		: 'Text',
+		opValue		: 'Hodnota',
+		btnAdd		: 'Přidat',
+		btnModify	: 'Změnit',
+		btnUp		: 'Nahoru',
+		btnDown		: 'Dolů',
+		btnSetValue : 'Nastavit jako vybranou hodnotu',
+		btnDelete	: 'Smazat'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Vlastnosti textové oblasti',
+		cols		: 'Sloupců',
+		rows		: 'Řádků'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Vlastnosti textového pole',
+		name		: 'Název',
+		value		: 'Hodnota',
+		charWidth	: 'Šířka ve znacích',
+		maxChars	: 'Maximální počet znaků',
+		type		: 'Typ',
+		typeText	: 'Text',
+		typePass	: 'Heslo'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Vlastnosti skrytého pole',
+		name	: 'Název',
+		value	: 'Hodnota'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Vlastnosti obrázku',
+		titleButton	: 'Vlastností obrázkového tlačítka',
+		menu		: 'Vlastnosti obrázku',
+		infoTab	: 'Informace o obrázku',
+		btnUpload	: 'Odeslat na server',
+		url		: 'URL',
+		upload	: 'Odeslat',
+		alt		: 'Alternativní text',
+		width		: 'Šířka',
+		height	: 'Výška',
+		lockRatio	: 'Zámek',
+		resetSize	: 'Původní velikost',
+		border	: 'Okraje',
+		hSpace	: 'H-mezera',
+		vSpace	: 'V-mezera',
+		align		: 'Zarovnání',
+		alignLeft	: 'Vlevo',
+		alignAbsBottom: 'Zcela dolů',
+		alignAbsMiddle: 'Doprostřed',
+		alignBaseline	: 'Na účaří',
+		alignBottom	: 'Dolů',
+		alignMiddle	: 'Na střed',
+		alignRight	: 'Vpravo',
+		alignTextTop	: 'Na horní okraj textu',
+		alignTop	: 'Nahoru',
+		preview	: 'Náhled',
+		alertUrl	: 'Zadejte prosím URL obrázku',
+		linkTab	: 'Odkaz',
+		button2Img	: 'Skutečně chcete převést zvolené obrázkové tlačítko na obyčejný obrázek?',
+		img2Button	: 'Skutečně chcete převést zvolený obrázek na obrázkové tlačítko?',
+		urlMissing : 'Zadané URL zdroje obrázku nebylo nalezeno.'
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Vlastnosti Flashe',
+		propertiesTab	: 'Vlastnosti',
+		title		: 'Vlastnosti Flashe',
+		chkPlay		: 'Automatické spuštění',
+		chkLoop		: 'Opakování',
+		chkMenu		: 'Nabídka Flash',
+		chkFull		: 'Povolit celoobrazovkový režim',
+ 		scale		: 'Zobrazit',
+		scaleAll		: 'Zobrazit vše',
+		scaleNoBorder	: 'Bez okraje',
+		scaleFit		: 'Přizpůsobit',
+		access			: 'Přístup ke skriptu',
+		accessAlways	: 'Vždy',
+		accessSameDomain	: 'Ve stejné doméně',
+		accessNever	: 'Nikdy',
+		align		: 'Zarovnání',
+		alignLeft	: 'Vlevo',
+		alignAbsBottom: 'Zcela dolů',
+		alignAbsMiddle: 'Doprostřed',
+		alignBaseline	: 'Na účaří',
+		alignBottom	: 'Dolů',
+		alignMiddle	: 'Na střed',
+		alignRight	: 'Vpravo',
+		alignTextTop	: 'Na horní okraj textu',
+		alignTop	: 'Nahoru',
+		quality		: 'Kvalita',
+		qualityBest		 : 'Nejlepší',
+		qualityHigh		 : 'Vysoká',
+		qualityAutoHigh	 : 'Vysoká - auto',
+		qualityMedium	 : 'Střední',
+		qualityAutoLow	 : 'Nízká - auto',
+		qualityLow		 : 'Nejnižší',
+		windowModeWindow	 : 'Okno',
+		windowModeOpaque	 : 'Neprůhledné',
+		windowModeTransparent	 : 'Průhledné',
+		windowMode	: 'Režim okna',
+		flashvars	: 'Proměnné pro Flash',
+		bgcolor	: 'Barva pozadí',
+		width	: 'Šířka',
+		height	: 'Výška',
+		hSpace	: 'H-mezera',
+		vSpace	: 'V-mezera',
+		validateSrc : 'Zadejte prosím URL odkazu',
+		validateWidth : 'Zadaná šířka musí být číslo.',
+		validateHeight : 'Zadaná výška musí být číslo.',
+		validateHSpace : 'Zadaná H-mezera musí být číslo.',
+		validateVSpace : 'Zadaná V-mezera musí být číslo.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Zkontrolovat pravopis',
+		title			: 'Kontrola pravopisu',
+		notAvailable	: 'Omlouváme se, ale služba nyní není dostupná.',
+		errorLoading	: 'Chyba nahrávání služby aplikace z: %s.',
+		notInDic		: 'Není ve slovníku',
+		changeTo		: 'Změnit na',
+		btnIgnore		: 'Přeskočit',
+		btnIgnoreAll	: 'Přeskakovat vše',
+		btnReplace		: 'Zaměnit',
+		btnReplaceAll	: 'Zaměňovat vše',
+		btnUndo			: 'Zpět',
+		noSuggestions	: '- žádné návrhy -',
+		progress		: 'Probíhá kontrola pravopisu...',
+		noMispell		: 'Kontrola pravopisu dokončena: Žádné pravopisné chyby nenalezeny',
+		noChanges		: 'Kontrola pravopisu dokončena: Beze změn',
+		oneChange		: 'Kontrola pravopisu dokončena: Jedno slovo změněno',
+		manyChanges		: 'Kontrola pravopisu dokončena: %1 slov změněno',
+		ieSpellDownload	: 'Kontrola pravopisu není nainstalována. Chcete ji nyní stáhnout?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smajlíky',
+		title	: 'Vkládání smajlíků'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 objekt'
+	},
+
+	numberedlist : 'Číslování',
+	bulletedlist : 'Odrážky',
+	indent : 'Zvětšit odsazení',
+	outdent : 'Zmenšit odsazení',
+
+	justify :
+	{
+		left : 'Zarovnat vlevo',
+		center : 'Zarovnat na střed',
+		right : 'Zarovnat vpravo',
+		block : 'Zarovnat do bloku'
+	},
+
+	blockquote : 'Citace',
+
+	clipboard :
+	{
+		title		: 'Vložit',
+		cutError	: 'Bezpečnostní nastavení Vašeho prohlížeče nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjměte zvolený text do schránky pomocí klávesnice (Ctrl+X).',
+		copyError	: 'Bezpečnostní nastavení Vašeho prohlížeče nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl+C).',
+		pasteMsg	: 'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl+V</STRONG>) a stiskněte <STRONG>OK</STRONG>.',
+		securityMsg	: 'Z důvodů nastavení bezpečnosti Vašeho prohlížeče nemůže editor přistupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Vložit z Wordu',
+		title : 'Vložit z Wordu',
+		advice : 'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl+V</STRONG>) a stiskněte <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignorovat písmo',
+		removeStyle : 'Odstranit styly'
+	},
+
+	pasteText :
+	{
+		button : 'Vložit jako čistý text',
+		title : 'Vložit jako čistý text'
+	},
+
+	templates :
+	{
+		button : 'Šablony',
+		title : 'Šablony obsahu',
+		insertOption: 'Nahradit aktuální obsah',
+		selectPromptMsg: 'Prosím zvolte šablonu pro otevření v editoru<br>(aktuální obsah editoru bude ztracen):',
+		emptyListMsg : '(Není definována žádná šablona)'
+	},
+
+	showBlocks : 'Ukázat bloky',
+
+	stylesCombo :
+	{
+		label : 'Styl',
+		voiceLabel : 'Styly',
+		panelVoiceLabel : 'Výběr stylu',
+		panelTitle1 : 'Blokové styly',
+		panelTitle2 : 'Řádkové styly',
+		panelTitle3 : 'Objektové styly'
+	},
+
+	format :
+	{
+		label : 'Formát',
+		voiceLabel : 'Formátování',
+		panelTitle : 'Formát',
+		panelVoiceLabel : 'Volba formátu odstavce',
+
+		tag_p : 'Normální',
+		tag_pre : 'Naformátováno',
+		tag_address : 'Adresa',
+		tag_h1 : 'Nadpis 1',
+		tag_h2 : 'Nadpis 2',
+		tag_h3 : 'Nadpis 3',
+		tag_h4 : 'Nadpis 4',
+		tag_h5 : 'Nadpis 5',
+		tag_h6 : 'Nadpis 6',
+		tag_div : 'Normální (DIV)'
+	},
+
+	font :
+	{
+		label : 'Písmo',
+		voiceLabel : 'Písmo',
+		panelTitle : 'Písmo',
+		panelVoiceLabel : 'Volba písma'
+	},
+
+	fontSize :
+	{
+		label : 'Velikost',
+		voiceLabel : 'Velikost písma',
+		panelTitle : 'Velikost',
+		panelVoiceLabel : 'Volba velikosti písma'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Barva textu',
+		bgColorTitle : 'Barva pozadí',
+		auto : 'Automaticky',
+		more : 'Více barev...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Kontrola pravopisu během psaní (SCAYT)',
+		enable : 'Zapnout SCAYT',
+		disable : 'Vypnout SCAYT',
+		about : 'O aplikaci SCAYT',
+		toggle : 'Vypínač SCAYT',
+		options : 'Nastavení',
+		langs : 'Jazyky',
+		moreSuggestions : 'Více návrhů',
+		ignore : 'Přeskočit',
+		ignoreAll : 'Přeskočit vše',
+		addWord : 'Přidat slovo',
+		emptyDic : 'Název slovníku nesmí být prázdný.',
+		optionsTab : 'Nastavení',
+		languagesTab : 'Jazyky',
+		dictionariesTab : 'Slovníky',
+		aboutTab : 'O aplikaci'
+	},
+
+	about :
+	{
+		title : 'O aplikaci CKEditor',
+		dlgTitle : 'O aplikaci CKEditor',
+		moreInfo : 'Pro informace o lincenci navštivte naši webovou stránku:',
+		copy : 'Copyright &copy; $1. All rights reserved.'
+	},
+
+	maximize : 'Maximalizovat',
+	minimize : 'Minimalizovat',
+
+	fakeobjects :
+	{
+		anchor : 'Záložka',
+		flash : 'Flash animace',
+		div : 'Zalomení stránky',
+		unknown : 'Neznámý objekt'
+	},
+
+	resize : 'Uchopit pro změnu velikosti',
+
+	colordialog :
+	{
+		title : 'Výběr barvy',
+		highlight : 'Zvýraznit',
+		selected : 'Vybráno',
+		clear : 'Vyčistit'
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/en-au.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/en-au.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/en-au.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * English (Australia) language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['en-au'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Source',
+	newPage			: 'New Page',
+	save			: 'Save',
+	preview			: 'Preview',
+	cut				: 'Cut',
+	copy			: 'Copy',
+	paste			: 'Paste',
+	print			: 'Print',
+	underline		: 'Underline',
+	bold			: 'Bold',
+	italic			: 'Italic',
+	selectAll		: 'Select All',
+	removeFormat	: 'Remove Format',
+	strike			: 'Strike Through',
+	subscript		: 'Subscript',
+	superscript		: 'Superscript',
+	horizontalrule	: 'Insert Horizontal Line',
+	pagebreak		: 'Insert Page Break for Printing',
+	unlink			: 'Unlink',
+	undo			: 'Undo',
+	redo			: 'Redo',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Browse Server',
+		url				: 'URL',
+		protocol		: 'Protocol',
+		upload			: 'Upload',
+		uploadSubmit	: 'Send it to the Server',
+		image			: 'Image',
+		flash			: 'Flash',
+		form			: 'Form',
+		checkbox		: 'Checkbox',
+		radio		: 'Radio Button',
+		textField		: 'Text Field',
+		textarea		: 'Textarea',
+		hiddenField		: 'Hidden Field',
+		button			: 'Button',
+		select	: 'Selection Field',
+		imageButton		: 'Image Button',
+		notSet			: '<not set>',
+		id				: 'Id',
+		name			: 'Name',
+		langDir			: 'Language Direction',
+		langDirLtr		: 'Left to Right (LTR)',
+		langDirRtl		: 'Right to Left (RTL)',
+		langCode		: 'Language Code',
+		longDescr		: 'Long Description URL',
+		cssClass		: 'Stylesheet Classes',
+		advisoryTitle	: 'Advisory Title',
+		cssStyle		: 'Style',
+		ok				: 'OK',
+		cancel			: 'Cancel',
+		generalTab		: 'General',
+		advancedTab		: 'Advanced',
+		validateNumberFailed	: 'This value is not a number.',
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Insert Special Character',
+		title		: 'Select Special Character'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Link',
+		menu		: 'Edit Link',
+		title		: 'Link',
+		info		: 'Link Info',
+		target		: 'Target',
+		upload		: 'Upload',
+		advanced	: 'Advanced',
+		type		: 'Link Type',
+		toAnchor	: 'Link to anchor in the text',
+		toEmail		: 'E-mail',
+		target		: 'Target',
+		targetNotSet	: '<not set>',
+		targetFrame	: '<frame>',
+		targetPopup	: '<popup window>',
+		targetNew	: 'New Window (_blank)',
+		targetTop	: 'Topmost Window (_top)',
+		targetSelf	: 'Same Window (_self)',
+		targetParent	: 'Parent Window (_parent)',
+		targetFrameName	: 'Target Frame Name',
+		targetPopupName	: 'Popup Window Name',
+		popupFeatures	: 'Popup Window Features',
+		popupResizable	: 'Resizable',
+		popupStatusBar	: 'Status Bar',
+		popupLocationBar	: 'Location Bar',
+		popupToolbar	: 'Toolbar',
+		popupMenuBar	: 'Menu Bar',
+		popupFullScreen	: 'Full Screen (IE)',
+		popupScrollBars	: 'Scroll Bars',
+		popupDependent	: 'Dependent (Netscape)',
+		popupWidth		: 'Width',
+		popupLeft		: 'Left Position',
+		popupHeight		: 'Height',
+		popupTop		: 'Top Position',
+		id				: 'Id',
+		langDir			: 'Language Direction',
+		langDirNotSet	: '<not set>',
+		langDirLTR		: 'Left to Right (LTR)',
+		langDirRTL		: 'Right to Left (RTL)',
+		acccessKey		: 'Access Key',
+		name			: 'Name',
+		langCode		: 'Language Code',
+		tabIndex		: 'Tab Index',
+		advisoryTitle	: 'Advisory Title',
+		advisoryContentType	: 'Advisory Content Type',
+		cssClasses		: 'Stylesheet Classes',
+		charset			: 'Linked Resource Charset',
+		styles			: 'Style',
+		selectAnchor	: 'Select an Anchor',
+		anchorName		: 'By Anchor Name',
+		anchorId		: 'By Element Id',
+		emailAddress	: 'E-Mail Address',
+		emailSubject	: 'Message Subject',
+		emailBody		: 'Message Body',
+		noAnchors		: '(No anchors available in the document)',
+		noUrl			: 'Please type the link URL',
+		noEmail			: 'Please type the e-mail address'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Anchor',
+		menu		: 'Edit Anchor',
+		title		: 'Anchor Properties',
+		name		: 'Anchor Name',
+		errorName	: 'Please type the anchor name'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace',
+		find				: 'Find',
+		replace				: 'Replace',
+		findWhat			: 'Find what:',
+		replaceWith			: 'Replace with:',
+		notFoundMsg			: 'The specified text was not found.',
+		matchCase			: 'Match case',
+		matchWord			: 'Match whole word',
+		matchCyclic			: 'Match cyclic',
+		replaceAll			: 'Replace All',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Table',
+		title		: 'Table Properties',
+		menu		: 'Table Properties',
+		deleteTable	: 'Delete Table',
+		rows		: 'Rows',
+		columns		: 'Columns',
+		border		: 'Border size',
+		align		: 'Alignment',
+		alignNotSet	: '<Not set>',
+		alignLeft	: 'Left',
+		alignCenter	: 'Centre',
+		alignRight	: 'Right',
+		width		: 'Width',
+		widthPx		: 'pixels',
+		widthPc		: 'percent',
+		height		: 'Height',
+		cellSpace	: 'Cell spacing',
+		cellPad		: 'Cell padding',
+		caption		: 'Caption',
+		summary		: 'Summary',
+		headers		: 'Headers',
+		headersNone		: 'None',
+		headersColumn	: 'First column',
+		headersRow		: 'First Row',
+		headersBoth		: 'Both',
+		invalidRows		: 'Number of rows must be a number greater than 0.',
+		invalidCols		: 'Number of columns must be a number greater than 0.',
+		invalidBorder	: 'Border size must be a number.',
+		invalidWidth	: 'Table width must be a number.',
+		invalidHeight	: 'Table height must be a number.',
+		invalidCellSpacing	: 'Cell spacing must be a number.',
+		invalidCellPadding	: 'Cell padding must be a number.',
+
+		cell :
+		{
+			menu			: 'Cell',
+			insertBefore	: 'Insert Cell Before',
+			insertAfter		: 'Insert Cell After',
+			deleteCell		: 'Delete Cells',
+			merge			: 'Merge Cells',
+			mergeRight		: 'Merge Right',
+			mergeDown		: 'Merge Down',
+			splitHorizontal	: 'Split Cell Horizontally',
+			splitVertical	: 'Split Cell Vertically',
+			title			: 'Cell Properties',
+			cellType		: 'Cell Type',
+			rowSpan			: 'Rows Span',
+			colSpan			: 'Columns Span',
+			wordWrap		: 'Word Wrap',
+			hAlign			: 'Horizontal Alignment',
+			vAlign			: 'Vertical Alignment',
+			alignTop		: 'Top',
+			alignMiddle		: 'Middle',
+			alignBottom		: 'Bottom',
+			alignBaseline	: 'Baseline',
+			bgColor			: 'Background Color',
+			borderColor		: 'Border Color',
+			data			: 'Data',
+			header			: 'Header',
+			yes				: 'Yes',
+			no				: 'No',
+			invalidWidth	: 'Cell width must be a number.',
+			invalidHeight	: 'Cell height must be a number.',
+			invalidRowSpan	: 'Rows span must be a whole number.',
+			invalidColSpan	: 'Columns span must be a whole number.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Row',
+			insertBefore	: 'Insert Row Before',
+			insertAfter		: 'Insert Row After',
+			deleteRow		: 'Delete Rows'
+		},
+
+		column :
+		{
+			menu			: 'Column',
+			insertBefore	: 'Insert Column Before',
+			insertAfter		: 'Insert Column After',
+			deleteColumn	: 'Delete Columns'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Button Properties',
+		text		: 'Text (Value)',
+		type		: 'Type',
+		typeBtn		: 'Button',
+		typeSbm		: 'Submit',
+		typeRst		: 'Reset'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Checkbox Properties',
+		radioTitle	: 'Radio Button Properties',
+		value		: 'Value',
+		selected	: 'Selected'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Form Properties',
+		menu		: 'Form Properties',
+		action		: 'Action',
+		method		: 'Method',
+		encoding	: 'Encoding',
+		target		: 'Target',
+		targetNotSet	: '<not set>',
+		targetNew	: 'New Window (_blank)',
+		targetTop	: 'Topmost Window (_top)',
+		targetSelf	: 'Same Window (_self)',
+		targetParent	: 'Parent Window (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Selection Field Properties',
+		selectInfo	: 'Select Info',
+		opAvail		: 'Available Options',
+		value		: 'Value',
+		size		: 'Size',
+		lines		: 'lines',
+		chkMulti	: 'Allow multiple selections',
+		opText		: 'Text',
+		opValue		: 'Value',
+		btnAdd		: 'Add',
+		btnModify	: 'Modify',
+		btnUp		: 'Up',
+		btnDown		: 'Down',
+		btnSetValue : 'Set as selected value',
+		btnDelete	: 'Delete'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Textarea Properties',
+		cols		: 'Columns',
+		rows		: 'Rows'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Text Field Properties',
+		name		: 'Name',
+		value		: 'Value',
+		charWidth	: 'Character Width',
+		maxChars	: 'Maximum Characters',
+		type		: 'Type',
+		typeText	: 'Text',
+		typePass	: 'Password'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Hidden Field Properties',
+		name	: 'Name',
+		value	: 'Value'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Image Properties',
+		titleButton	: 'Image Button Properties',
+		menu		: 'Image Properties',
+		infoTab	: 'Image Info',
+		btnUpload	: 'Send it to the Server',
+		url		: 'URL',
+		upload	: 'Upload',
+		alt		: 'Alternative Text',
+		width		: 'Width',
+		height	: 'Height',
+		lockRatio	: 'Lock Ratio',
+		resetSize	: 'Reset Size',
+		border	: 'Border',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		align		: 'Align',
+		alignLeft	: 'Left',
+		alignAbsBottom: 'Abs Bottom',
+		alignAbsMiddle: 'Abs Middle',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Bottom',
+		alignMiddle	: 'Middle',
+		alignRight	: 'Right',
+		alignTextTop	: 'Text Top',
+		alignTop	: 'Top',
+		preview	: 'Preview',
+		alertUrl	: 'Please type the image URL',
+		linkTab	: 'Link',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?',
+		img2Button	: 'Do you want to transform the selected image on a image button?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash Properties',
+		propertiesTab	: 'Properties',
+		title		: 'Flash Properties',
+		chkPlay		: 'Auto Play',
+		chkLoop		: 'Loop',
+		chkMenu		: 'Enable Flash Menu',
+		chkFull		: 'Allow Fullscreen',
+ 		scale		: 'Scale',
+		scaleAll		: 'Show all',
+		scaleNoBorder	: 'No Border',
+		scaleFit		: 'Exact Fit',
+		access			: 'Script Access',
+		accessAlways	: 'Always',
+		accessSameDomain	: 'Same domain',
+		accessNever	: 'Never',
+		align		: 'Align',
+		alignLeft	: 'Left',
+		alignAbsBottom: 'Abs Bottom',
+		alignAbsMiddle: 'Abs Middle',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Bottom',
+		alignMiddle	: 'Middle',
+		alignRight	: 'Right',
+		alignTextTop	: 'Text Top',
+		alignTop	: 'Top',
+		quality		: 'Quality',
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode',
+		flashvars	: 'Variables for Flash',
+		bgcolor	: 'Background colour',
+		width	: 'Width',
+		height	: 'Height',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		validateSrc : 'URL must not be empty.',
+		validateWidth : 'Width must be a number.',
+		validateHeight : 'Height must be a number.',
+		validateHSpace : 'HSpace must be a number.',
+		validateVSpace : 'VSpace must be a number.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Check Spelling',
+		title			: 'Spell Check',
+		notAvailable	: 'Sorry, but service is unavailable now.',
+		errorLoading	: 'Error loading application service host: %s.',
+		notInDic		: 'Not in dictionary',
+		changeTo		: 'Change to',
+		btnIgnore		: 'Ignore',
+		btnIgnoreAll	: 'Ignore All',
+		btnReplace		: 'Replace',
+		btnReplaceAll	: 'Replace All',
+		btnUndo			: 'Undo',
+		noSuggestions	: '- No suggestions -',
+		progress		: 'Spell check in progress...',
+		noMispell		: 'Spell check complete: No misspellings found',
+		noChanges		: 'Spell check complete: No words changed',
+		oneChange		: 'Spell check complete: One word changed',
+		manyChanges		: 'Spell check complete: %1 words changed',
+		ieSpellDownload	: 'Spell checker not installed. Do you want to download it now?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Insert a Smiley'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element'
+	},
+
+	numberedlist : 'Insert/Remove Numbered List',
+	bulletedlist : 'Insert/Remove Bulleted List',
+	indent : 'Increase Indent',
+	outdent : 'Decrease Indent',
+
+	justify :
+	{
+		left : 'Left Justify',
+		center : 'Centre Justify',
+		right : 'Right Justify',
+		block : 'Block Justify'
+	},
+
+	blockquote : 'Blockquote',
+
+	clipboard :
+	{
+		title		: 'Paste',
+		cutError	: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).',
+		copyError	: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Paste from Word',
+		title : 'Paste from Word',
+		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',
+		ignoreFontFace : 'Ignore Font Face definitions',
+		removeStyle : 'Remove Styles definitions'
+	},
+
+	pasteText :
+	{
+		button : 'Paste as plain text',
+		title : 'Paste as Plain Text'
+	},
+
+	templates :
+	{
+		button : 'Templates',
+		title : 'Content Templates',
+		insertOption: 'Replace actual contents',
+		selectPromptMsg: 'Please select the template to open in the editor',
+		emptyListMsg : '(No templates defined)'
+	},
+
+	showBlocks : 'Show Blocks',
+
+	stylesCombo :
+	{
+		label : 'Styles',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles',
+		panelTitle2 : 'Inline Styles',
+		panelTitle3 : 'Object Styles'
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Paragraph Format',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatted',
+		tag_address : 'Address',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Font',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Font Name',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Size',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Font Size',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Text Colour',
+		bgColorTitle : 'Background Colour',
+		auto : 'Automatic',
+		more : 'More Colours...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor',
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:',
+		copy : 'Copyright &copy; $1. All rights reserved.'
+	},
+
+	maximize : 'Maximize',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/es.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/es.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/es.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Spanish language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['es'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Editor de texto enriquecido, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Fuente HTML',
+	newPage			: 'Nueva Página',
+	save			: 'Guardar',
+	preview			: 'Vista Previa',
+	cut				: 'Cortar',
+	copy			: 'Copiar',
+	paste			: 'Pegar',
+	print			: 'Imprimir',
+	underline		: 'Subrayado',
+	bold			: 'Negrita',
+	italic			: 'Cursiva',
+	selectAll		: 'Seleccionar Todo',
+	removeFormat	: 'Eliminar Formato',
+	strike			: 'Tachado',
+	subscript		: 'Subíndice',
+	superscript		: 'Superíndice',
+	horizontalrule	: 'Insertar Línea Horizontal',
+	pagebreak		: 'Insertar Salto de Página',
+	unlink			: 'Eliminar Vínculo',
+	undo			: 'Deshacer',
+	redo			: 'Rehacer',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Ver Servidor',
+		url				: 'URL',
+		protocol		: 'Protocolo',
+		upload			: 'Cargar',
+		uploadSubmit	: 'Enviar al Servidor',
+		image			: 'Imagen',
+		flash			: 'Flash',
+		form			: 'Formulario',
+		checkbox		: 'Casilla de Verificación',
+		radio		: 'Botones de Radio',
+		textField		: 'Campo de Texto',
+		textarea		: 'Area de Texto',
+		hiddenField		: 'Campo Oculto',
+		button			: 'Botón',
+		select	: 'Campo de Selección',
+		imageButton		: 'Botón Imagen',
+		notSet			: '<No definido>',
+		id				: 'Id',
+		name			: 'Nombre',
+		langDir			: 'Orientación',
+		langDirLtr		: 'Izquierda a Derecha (LTR)',
+		langDirRtl		: 'Derecha a Izquierda (RTL)',
+		langCode		: 'Cód. de idioma',
+		longDescr		: 'Descripción larga URL',
+		cssClass		: 'Clases de hojas de estilo',
+		advisoryTitle	: 'Título',
+		cssStyle		: 'Estilo',
+		ok				: 'OK',
+		cancel			: 'Cancelar',
+		generalTab		: 'General',
+		advancedTab		: 'Avanzado',
+		validateNumberFailed	: 'El valor no es un número.',
+		confirmNewPage	: 'Cualquier cambio que no se haya guardado se perderá. ¿Está seguro de querer crear una nueva página?',
+		confirmCancel	: 'Algunas de las opciones se han cambiado. ¿Está seguro de querer cerrar el diálogo?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, no disponible</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Insertar Caracter Especial',
+		title		: 'Seleccione un caracter especial'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Insertar/Editar Vínculo',
+		menu		: 'Editar Vínculo',
+		title		: 'Vínculo',
+		info		: 'Información de Vínculo',
+		target		: 'Destino',
+		upload		: 'Cargar',
+		advanced	: 'Avanzado',
+		type		: 'Tipo de vínculo',
+		toAnchor	: 'Referencia en esta página',
+		toEmail		: 'E-Mail',
+		target		: 'Destino',
+		targetNotSet	: '<No definido>',
+		targetFrame	: '<marco>',
+		targetPopup	: '<ventana emergente>',
+		targetNew	: 'Nueva Ventana(_blank)',
+		targetTop	: 'Ventana primaria (_top)',
+		targetSelf	: 'Misma Ventana (_self)',
+		targetParent	: 'Ventana Padre (_parent)',
+		targetFrameName	: 'Nombre del Marco Destino',
+		targetPopupName	: 'Nombre de Ventana Emergente',
+		popupFeatures	: 'Características de Ventana Emergente',
+		popupResizable	: 'Redimensionable',
+		popupStatusBar	: 'Barra de Estado',
+		popupLocationBar	: 'Barra de ubicación',
+		popupToolbar	: 'Barra de Herramientas',
+		popupMenuBar	: 'Barra de Menú',
+		popupFullScreen	: 'Pantalla Completa (IE)',
+		popupScrollBars	: 'Barras de desplazamiento',
+		popupDependent	: 'Dependiente (Netscape)',
+		popupWidth		: 'Anchura',
+		popupLeft		: 'Posición Izquierda',
+		popupHeight		: 'Altura',
+		popupTop		: 'Posición Derecha',
+		id				: 'Id',
+		langDir			: 'Orientación',
+		langDirNotSet	: '<No definido>',
+		langDirLTR		: 'Izquierda a Derecha (LTR)',
+		langDirRTL		: 'Derecha a Izquierda (RTL)',
+		acccessKey		: 'Clave de Acceso',
+		name			: 'Nombre',
+		langCode		: 'Orientación',
+		tabIndex		: 'Indice de tabulación',
+		advisoryTitle	: 'Título',
+		advisoryContentType	: 'Tipo de Contenido',
+		cssClasses		: 'Clases de hojas de estilo',
+		charset			: 'Fuente de caracteres vinculado',
+		styles			: 'Estilo',
+		selectAnchor	: 'Seleccionar una referencia',
+		anchorName		: 'Por Nombre de Referencia',
+		anchorId		: 'Por ID de elemento',
+		emailAddress	: 'Dirección de E-Mail',
+		emailSubject	: 'Título del Mensaje',
+		emailBody		: 'Cuerpo del Mensaje',
+		noAnchors		: '(No hay referencias disponibles en el documento)',
+		noUrl			: 'Por favor tipee el vínculo URL',
+		noEmail			: 'Por favor tipee la dirección de e-mail'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Referencia',
+		menu		: 'Propiedades de Referencia',
+		title		: 'Propiedades de Referencia',
+		name		: 'Nombre de la Referencia',
+		errorName	: 'Por favor, complete el nombre de la Referencia'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Buscar y Reemplazar',
+		find				: 'Buscar',
+		replace				: 'Reemplazar',
+		findWhat			: 'Texto a buscar:',
+		replaceWith			: 'Reemplazar con:',
+		notFoundMsg			: 'El texto especificado no ha sido encontrado.',
+		matchCase			: 'Coincidir may/min',
+		matchWord			: 'Coincidir toda la palabra',
+		matchCyclic			: 'Buscar en todo el contenido',
+		replaceAll			: 'Reemplazar Todo',
+		replaceSuccessMsg	: 'La expresión buscada ha sido reemplazada %1 veces.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabla',
+		title		: 'Propiedades de Tabla',
+		menu		: 'Propiedades de Tabla',
+		deleteTable	: 'Eliminar Tabla',
+		rows		: 'Filas',
+		columns		: 'Columnas',
+		border		: 'Tamaño de Borde',
+		align		: 'Alineación',
+		alignNotSet	: '<No establecido>',
+		alignLeft	: 'Izquierda',
+		alignCenter	: 'Centrado',
+		alignRight	: 'Derecha',
+		width		: 'Anchura',
+		widthPx		: 'pixeles',
+		widthPc		: 'porcentaje',
+		height		: 'Altura',
+		cellSpace	: 'Esp. e/celdas',
+		cellPad		: 'Esp. interior',
+		caption		: 'Título',
+		summary		: 'Síntesis',
+		headers		: 'Encabezados',
+		headersNone		: 'Ninguno',
+		headersColumn	: 'Primera columna',
+		headersRow		: 'Primera fila',
+		headersBoth		: 'Ambas',
+		invalidRows		: 'El número de filas debe ser un número mayor que 0.',
+		invalidCols		: 'El número de columnas debe ser un número mayor que 0.',
+		invalidBorder	: 'El tamaño del borde debe ser un número.',
+		invalidWidth	: 'La anchura de tabla debe ser un número.',
+		invalidHeight	: 'La altura de tabla debe ser un número.',
+		invalidCellSpacing	: 'El espaciado entre celdas debe ser un número.',
+		invalidCellPadding	: 'El espaciado interior debe ser un número.',
+
+		cell :
+		{
+			menu			: 'Celda',
+			insertBefore	: 'Insertar celda a la izquierda',
+			insertAfter		: 'Insertar celda a la derecha',
+			deleteCell		: 'Eliminar Celdas',
+			merge			: 'Combinar Celdas',
+			mergeRight		: 'Combinar a la derecha',
+			mergeDown		: 'Combinar hacia abajo',
+			splitHorizontal	: 'Dividir la celda horizontalmente',
+			splitVertical	: 'Dividir la celda verticalmente',
+			title			: 'Propiedades de celda',
+			cellType		: 'Tipo de Celda',
+			rowSpan			: 'Expandir filas',
+			colSpan			: 'Expandir columnas',
+			wordWrap		: 'Ajustar al contenido',
+			hAlign			: 'Alineación Horizontal',
+			vAlign			: 'Alineación Vertical',
+			alignTop		: 'Arriba',
+			alignMiddle		: 'Medio',
+			alignBottom		: 'Abajo',
+			alignBaseline	: 'Linea de base',
+			bgColor			: 'Color de fondo',
+			borderColor		: 'Color de borde',
+			data			: 'Datos',
+			header			: 'Encabezado',
+			yes				: 'Sí',
+			no				: 'No',
+			invalidWidth	: 'La anchura de celda debe ser un número.',
+			invalidHeight	: 'La altura de celda debe ser un número.',
+			invalidRowSpan	: 'La expansión de filas debe ser un número entero.',
+			invalidColSpan	: 'La expansión de columnas debe ser un número entero.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Fila',
+			insertBefore	: 'Insertar fila en la parte superior',
+			insertAfter		: 'Insertar fila en la parte inferior',
+			deleteRow		: 'Eliminar Filas'
+		},
+
+		column :
+		{
+			menu			: 'Columna',
+			insertBefore	: 'Insertar columna a la izquierda',
+			insertAfter		: 'Insertar columna a la derecha',
+			deleteColumn	: 'Eliminar Columnas'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Propiedades de Botón',
+		text		: 'Texto (Valor)',
+		type		: 'Tipo',
+		typeBtn		: 'Boton',
+		typeSbm		: 'Enviar',
+		typeRst		: 'Reestablecer'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Propiedades de Casilla',
+		radioTitle	: 'Propiedades de Botón de Radio',
+		value		: 'Valor',
+		selected	: 'Seleccionado'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Propiedades de Formulario',
+		menu		: 'Propiedades de Formulario',
+		action		: 'Acción',
+		method		: 'Método',
+		encoding	: 'Codificación',
+		target		: 'Destino',
+		targetNotSet	: '<No definido>',
+		targetNew	: 'Nueva Ventana(_blank)',
+		targetTop	: 'Ventana primaria (_top)',
+		targetSelf	: 'Misma Ventana (_self)',
+		targetParent	: 'Ventana Padre (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Propiedades de Campo de Selección',
+		selectInfo	: 'Información',
+		opAvail		: 'Opciones disponibles',
+		value		: 'Valor',
+		size		: 'Tamaño',
+		lines		: 'Lineas',
+		chkMulti	: 'Permitir múltiple selección',
+		opText		: 'Texto',
+		opValue		: 'Valor',
+		btnAdd		: 'Agregar',
+		btnModify	: 'Modificar',
+		btnUp		: 'Subir',
+		btnDown		: 'Bajar',
+		btnSetValue : 'Establecer como predeterminado',
+		btnDelete	: 'Eliminar'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Propiedades de Area de Texto',
+		cols		: 'Columnas',
+		rows		: 'Filas'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Propiedades de Campo de Texto',
+		name		: 'Nombre',
+		value		: 'Valor',
+		charWidth	: 'Caracteres de ancho',
+		maxChars	: 'Máximo caracteres',
+		type		: 'Tipo',
+		typeText	: 'Texto',
+		typePass	: 'Contraseña'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Propiedades de Campo Oculto',
+		name	: 'Nombre',
+		value	: 'Valor'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Propiedades de Imagen',
+		titleButton	: 'Propiedades de Botón de Imagen',
+		menu		: 'Propiedades de Imagen',
+		infoTab	: 'Información de Imagen',
+		btnUpload	: 'Enviar al Servidor',
+		url		: 'URL',
+		upload	: 'Cargar',
+		alt		: 'Texto Alternativo',
+		width		: 'Anchura',
+		height	: 'Altura',
+		lockRatio	: 'Proporcional',
+		resetSize	: 'Tamaño Original',
+		border	: 'Borde',
+		hSpace	: 'Esp.Horiz',
+		vSpace	: 'Esp.Vert',
+		align		: 'Alineación',
+		alignLeft	: 'Izquierda',
+		alignAbsBottom: 'Abs inferior',
+		alignAbsMiddle: 'Abs centro',
+		alignBaseline	: 'Línea de base',
+		alignBottom	: 'Pie',
+		alignMiddle	: 'Centro',
+		alignRight	: 'Derecha',
+		alignTextTop	: 'Tope del texto',
+		alignTop	: 'Tope',
+		preview	: 'Vista Previa',
+		alertUrl	: 'Por favor escriba la URL de la imagen',
+		linkTab	: 'Vínculo',
+		button2Img	: '¿Desea convertir el botón de imagen en una simple imagen?',
+		img2Button	: '¿Desea convertir la imagen en un botón de imagen?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Propiedades de Flash',
+		propertiesTab	: 'Propiedades',
+		title		: 'Propiedades de Flash',
+		chkPlay		: 'Autoejecución',
+		chkLoop		: 'Repetir',
+		chkMenu		: 'Activar Menú Flash',
+		chkFull		: 'Permitir pantalla completa',
+ 		scale		: 'Escala',
+		scaleAll		: 'Mostrar todo',
+		scaleNoBorder	: 'Sin Borde',
+		scaleFit		: 'Ajustado',
+		access			: 'Acceso de scripts',
+		accessAlways	: 'Siempre',
+		accessSameDomain	: 'Mismo dominio',
+		accessNever	: 'Nunca',
+		align		: 'Alineación',
+		alignLeft	: 'Izquierda',
+		alignAbsBottom: 'Abs inferior',
+		alignAbsMiddle: 'Abs centro',
+		alignBaseline	: 'Línea de base',
+		alignBottom	: 'Pie',
+		alignMiddle	: 'Centro',
+		alignRight	: 'Derecha',
+		alignTextTop	: 'Tope del texto',
+		alignTop	: 'Tope',
+		quality		: 'Calidad',
+		qualityBest		 : 'La mejor',
+		qualityHigh		 : 'Alta',
+		qualityAutoHigh	 : 'Auto Alta',
+		qualityMedium	 : 'Media',
+		qualityAutoLow	 : 'Auto Baja',
+		qualityLow		 : 'Baja',
+		windowModeWindow	 : 'Ventana',
+		windowModeOpaque	 : 'Opaco',
+		windowModeTransparent	 : 'Transparente',
+		windowMode	: 'WindowMode',
+		flashvars	: 'FlashVars',
+		bgcolor	: 'Color de Fondo',
+		width	: 'Anchura',
+		height	: 'Altura',
+		hSpace	: 'Esp.Horiz',
+		vSpace	: 'Esp.Vert',
+		validateSrc : 'Por favor escriba el vínculo URL',
+		validateWidth : 'Anchura debe ser un número.',
+		validateHeight : 'Altura debe ser un número.',
+		validateHSpace : 'Esp.Horiz debe ser un número.',
+		validateVSpace : 'Esp.Vert debe ser un número.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Ortografía',
+		title			: 'Comprobar ortografía',
+		notAvailable	: 'Lo sentimos pero el servicio no está disponible.',
+		errorLoading	: 'Error cargando la aplicación del servidor: %s.',
+		notInDic		: 'No se encuentra en el Diccionario',
+		changeTo		: 'Cambiar a',
+		btnIgnore		: 'Ignorar',
+		btnIgnoreAll	: 'Ignorar Todo',
+		btnReplace		: 'Reemplazar',
+		btnReplaceAll	: 'Reemplazar Todo',
+		btnUndo			: 'Deshacer',
+		noSuggestions	: '- No hay sugerencias -',
+		progress		: 'Control de Ortografía en progreso...',
+		noMispell		: 'Control finalizado: no se encontraron errores',
+		noChanges		: 'Control finalizado: no se ha cambiado ninguna palabra',
+		oneChange		: 'Control finalizado: se ha cambiado una palabra',
+		manyChanges		: 'Control finalizado: se ha cambiado %1 palabras',
+		ieSpellDownload	: 'Módulo de Control de Ortografía no instalado. ¿Desea descargarlo ahora?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Emoticons',
+		title	: 'Insertar un Emoticon'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 elemento'
+	},
+
+	numberedlist : 'Numeración',
+	bulletedlist : 'Viñetas',
+	indent : 'Aumentar Sangría',
+	outdent : 'Disminuir Sangría',
+
+	justify :
+	{
+		left : 'Alinear a Izquierda',
+		center : 'Centrar',
+		right : 'Alinear a Derecha',
+		block : 'Justificado'
+	},
+
+	blockquote : 'Cita',
+
+	clipboard :
+	{
+		title		: 'Pegar',
+		cutError	: 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado. Por favor use el teclado (Ctrl+X).',
+		copyError	: 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado. Por favor use el teclado (Ctrl+C).',
+		pasteMsg	: 'Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl+V</STRONG>); luego presione <STRONG>OK</STRONG>.',
+		securityMsg	: 'Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles. Es necesario que lo pegue de nuevo en esta ventana.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Pegar desde Word',
+		title : 'Pegar desde Word',
+		advice : 'Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl+V</STRONG>); luego presione <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignorar definiciones de fuentes',
+		removeStyle : 'Remover definiciones de estilo'
+	},
+
+	pasteText :
+	{
+		button : 'Pegar como Texto Plano',
+		title : 'Pegar como Texto Plano'
+	},
+
+	templates :
+	{
+		button : 'Plantillas',
+		title : 'Contenido de Plantillas',
+		insertOption: 'Reemplazar el contenido actual',
+		selectPromptMsg: 'Por favor selecciona la plantilla a abrir en el editor<br>(el contenido actual se perderá):',
+		emptyListMsg : '(No hay plantillas definidas)'
+	},
+
+	showBlocks : 'Mostrar bloques',
+
+	stylesCombo :
+	{
+		label : 'Estilo',
+		voiceLabel : 'Estilos',
+		panelVoiceLabel : 'Elija un estilo',
+		panelTitle1 : 'Estilos de párrafo',
+		panelTitle2 : 'Estilos de carácter',
+		panelTitle3 : 'Estilos de objeto'
+	},
+
+	format :
+	{
+		label : 'Formato',
+		voiceLabel : 'Formato',
+		panelTitle : 'Formato',
+		panelVoiceLabel : 'Elija un formato de párrafo',
+
+		tag_p : 'Normal',
+		tag_pre : 'Con formato',
+		tag_address : 'Dirección',
+		tag_h1 : 'Encabezado 1',
+		tag_h2 : 'Encabezado 2',
+		tag_h3 : 'Encabezado 3',
+		tag_h4 : 'Encabezado 4',
+		tag_h5 : 'Encabezado 5',
+		tag_h6 : 'Encabezado 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Fuente',
+		voiceLabel : 'Fuente',
+		panelTitle : 'Fuente',
+		panelVoiceLabel : 'Elija una fuente'
+	},
+
+	fontSize :
+	{
+		label : 'Tamaño',
+		voiceLabel : 'Tamaño de fuente',
+		panelTitle : 'Tamaño',
+		panelVoiceLabel : 'Elija un tamaño de fuente'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Color de Texto',
+		bgColorTitle : 'Color de Fondo',
+		auto : 'Automático',
+		more : 'Más Colores...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Comprobar Ortografía Mientras Escribe',
+		enable : 'Activar COME',
+		disable : 'Desactivar COME',
+		about : 'Acerca de COME',
+		toggle : 'Cambiar COME',
+		options : 'Opciones',
+		langs : 'Idiomas',
+		moreSuggestions : 'Más sugerencias',
+		ignore : 'Ignorar',
+		ignoreAll : 'Ignorar Todas',
+		addWord : 'Añadir palabra',
+		emptyDic : 'El nombre del diccionario no puede estar en blanco.',
+		optionsTab : 'Opciones',
+		languagesTab : 'Idiomas',
+		dictionariesTab : 'Diccionarios',
+		aboutTab : 'Acerca de'
+	},
+
+	about :
+	{
+		title : 'Acerca de CKEditor',
+		dlgTitle : 'Acerca de CKEditor',
+		moreInfo : 'Para información de licencia, por favor visite nuestro sitio web:',
+		copy : 'Copyright &copy; $1. Todos los derechos reservados.'
+	},
+
+	maximize : 'Maximizar',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Ancla',
+		flash : 'Animación flash',
+		div : 'Salto de página',
+		unknown : 'Objeto desconocido'
+	},
+
+	resize : 'Arrastre para redimensionar',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/km.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/km.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/km.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Khmer language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['km'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'កូត',
+	newPage			: 'ទំព័រថ្មី',
+	save			: 'រក្សាទុក',
+	preview			: 'មើលសាកល្បង',
+	cut				: 'កាត់យក',
+	copy			: 'ចំលងយក',
+	paste			: 'ចំលងដាក់',
+	print			: 'បោះពុម្ភ',
+	underline		: 'ដិតបន្ទាត់ពីក្រោមអក្សរ',
+	bold			: 'អក្សរដិតធំ',
+	italic			: 'អក្សរផ្តេក',
+	selectAll		: 'ជ្រើសរើសទាំងអស់',
+	removeFormat	: 'លប់ចោល ការរចនា',
+	strike			: 'ដិតបន្ទាត់ពាក់កណ្តាលអក្សរ',
+	subscript		: 'អក្សរតូចក្រោម',
+	superscript		: 'អក្សរតូចលើ',
+	horizontalrule	: 'បន្ថែមបន្ទាត់ផ្តេក',
+	pagebreak		: 'បន្ថែម ការផ្តាច់ទំព័រ',
+	unlink			: 'លប់ឈ្នាប់',
+	undo			: 'សារឡើងវិញ',
+	redo			: 'ធ្វើឡើងវិញ',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'មើល',
+		url				: 'URL',
+		protocol		: 'ប្រូតូកូល',
+		upload			: 'ទាញយក',
+		uploadSubmit	: 'បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្តល់សេវា',
+		image			: 'រូបភាព',
+		flash			: 'Flash',
+		form			: 'បែបបទ',
+		checkbox		: 'ប្រអប់ជ្រើសរើស',
+		radio		: 'ប៉ូតុនរង្វង់មូល',
+		textField		: 'ជួរសរសេរអត្ថបទ',
+		textarea		: 'តំបន់សរសេរអត្ថបទ',
+		hiddenField		: 'ជួរលាក់',
+		button			: 'ប៉ូតុន',
+		select	: 'ជួរជ្រើសរើស',
+		imageButton		: 'ប៉ូតុនរូបភាព',
+		notSet			: '<មិនមែន>',
+		id				: 'Id',
+		name			: 'ឈ្មោះ',
+		langDir			: 'ទិសដៅភាសា',
+		langDirLtr		: 'ពីឆ្វេងទៅស្តាំ(LTR)',
+		langDirRtl		: 'ពីស្តាំទៅឆ្វេង(RTL)',
+		langCode		: 'លេខកូតភាសា',
+		longDescr		: 'អធិប្បាយ URL វែង',
+		cssClass		: 'Stylesheet Classes',
+		advisoryTitle	: 'ចំណងជើង ប្រឹក្សា',
+		cssStyle		: 'ម៉ូត',
+		ok				: 'យល់ព្រម',
+		cancel			: 'មិនយល់ព្រម',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'កំរិតខ្ពស់',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'បន្ថែមអក្សរពិសេស',
+		title		: 'តូអក្សរពិសេស'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'បន្ថែម/កែប្រែ ឈ្នាប់',
+		menu		: 'កែប្រែឈ្នាប់',
+		title		: 'ឈ្នាប់',
+		info		: 'ពត៌មានអំពីឈ្នាប់',
+		target		: 'គោលដៅ',
+		upload		: 'ទាញយក',
+		advanced	: 'កំរិតខ្ពស់',
+		type		: 'ប្រភេទឈ្នាប់',
+		toAnchor	: 'យុថ្កានៅក្នុងទំព័រនេះ',
+		toEmail		: 'អ៊ីមែល',
+		target		: 'គោលដៅ',
+		targetNotSet	: '<មិនមែន>',
+		targetFrame	: '<ហ្វ្រេម>',
+		targetPopup	: '<វីនដូវ លោត>',
+		targetNew	: 'វីនដូវថ្មី (_blank)',
+		targetTop	: 'វីនដូវនៅលើគេ(_top)',
+		targetSelf	: 'វីនដូវដដែល (_self)',
+		targetParent	: 'វីនដូវមេ (_parent)',
+		targetFrameName	: 'ឈ្មោះហ្រ្វេមដែលជាគោលដៅ',
+		targetPopupName	: 'ឈ្មោះវីនដូវលោត',
+		popupFeatures	: 'លក្ខណះរបស់វីនដូលលោត',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'របា ពត៌មាន',
+		popupLocationBar	: 'របា ទីតាំង',
+		popupToolbar	: 'របា ឩបករណ៍',
+		popupMenuBar	: 'របា មឺនុយ',
+		popupFullScreen	: 'អេក្រុងពេញ(IE)',
+		popupScrollBars	: 'របា ទាញ',
+		popupDependent	: 'អាស្រ័យលើ (Netscape)',
+		popupWidth		: 'ទទឹង',
+		popupLeft		: 'ទីតាំងខាងឆ្វេង',
+		popupHeight		: 'កំពស់',
+		popupTop		: 'ទីតាំងខាងលើ',
+		id				: 'Id', // MISSING
+		langDir			: 'ទិសដៅភាសា',
+		langDirNotSet	: '<មិនមែន>',
+		langDirLTR		: 'ពីឆ្វេងទៅស្តាំ(LTR)',
+		langDirRTL		: 'ពីស្តាំទៅឆ្វេង(RTL)',
+		acccessKey		: 'ឃី សំរាប់ចូល',
+		name			: 'ឈ្មោះ',
+		langCode		: 'ទិសដៅភាសា',
+		tabIndex		: 'លេខ Tab',
+		advisoryTitle	: 'ចំណងជើង ប្រឹក្សា',
+		advisoryContentType	: 'ប្រភេទអត្ថបទ ប្រឹក្សា',
+		cssClasses		: 'Stylesheet Classes',
+		charset			: 'លេខកូតអក្សររបស់ឈ្នាប់',
+		styles			: 'ម៉ូត',
+		selectAnchor	: 'ជ្រើសរើសយុថ្កា',
+		anchorName		: 'តាមឈ្មោះរបស់យុថ្កា',
+		anchorId		: 'តាម Id',
+		emailAddress	: 'អ៊ីមែល',
+		emailSubject	: 'ចំណងជើងអត្ថបទ',
+		emailBody		: 'អត្ថបទ',
+		noAnchors		: '(No anchors available in the document)', // MISSING
+		noUrl			: 'សូមសរសេរ អាស័យដ្ឋាន URL',
+		noEmail			: 'សូមសរសេរ អាស័យដ្ឋាន អ៊ីមែល'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'បន្ថែម/កែប្រែ យុថ្កា',
+		menu		: 'ការកំណត់យុថ្កា',
+		title		: 'ការកំណត់យុថ្កា',
+		name		: 'ឈ្មោះយុទ្ធថ្កា',
+		errorName	: 'សូមសរសេរ ឈ្មោះយុទ្ធថ្កា'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'ស្វែងរក',
+		replace				: 'ជំនួស',
+		findWhat			: 'ស្វែងរកអ្វី:',
+		replaceWith			: 'ជំនួសជាមួយ:',
+		notFoundMsg			: 'ពាក្យនេះ រកមិនឃើញទេ ។',
+		matchCase			: 'ករណ៉ត្រូវរក',
+		matchWord			: 'ត្រូវពាក្យទាំងអស់',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'ជំនួសទាំងអស់',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'តារាង',
+		title		: 'ការកំណត់ តារាង',
+		menu		: 'ការកំណត់ តារាង',
+		deleteTable	: 'លប់តារាង',
+		rows		: 'ជួរផ្តេក',
+		columns		: 'ជួរឈរ',
+		border		: 'ទំហំស៊ុម',
+		align		: 'ការកំណត់ទីតាំង',
+		alignNotSet	: '<មិនកំណត់>',
+		alignLeft	: 'ខាងឆ្វេង',
+		alignCenter	: 'កណ្តាល',
+		alignRight	: 'ខាងស្តាំ',
+		width		: 'ទទឹង',
+		widthPx		: 'ភីកសែល',
+		widthPc		: 'ភាគរយ',
+		height		: 'កំពស់',
+		cellSpace	: 'គំលាតសែល',
+		cellPad		: 'គែមសែល',
+		caption		: 'ចំណងជើង',
+		summary		: 'សេចក្តីសង្ខេប',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Cell', // MISSING
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'លប់សែល',
+			merge			: 'បញ្ជូលសែល',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Row', // MISSING
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'លប់ជួរផ្តេក'
+		},
+
+		column :
+		{
+			menu			: 'Column', // MISSING
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'លប់ជួរឈរ'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'ការកំណត់ ប៉ូតុន',
+		text		: 'អត្ថបទ(តំលៃ)',
+		type		: 'ប្រភេទ',
+		typeBtn		: 'Button', // MISSING
+		typeSbm		: 'Submit', // MISSING
+		typeRst		: 'Reset' // MISSING
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'ការកំណត់ប្រអប់ជ្រើសរើស',
+		radioTitle	: 'ការកំណត់ប៉ូតុនរង្វង់',
+		value		: 'តំលៃ',
+		selected	: 'បានជ្រើសរើស'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'ការកំណត់បែបបទ',
+		menu		: 'ការកំណត់បែបបទ',
+		action		: 'សកម្មភាព',
+		method		: 'វិធី',
+		encoding	: 'Encoding', // MISSING
+		target		: 'គោលដៅ',
+		targetNotSet	: '<មិនមែន>',
+		targetNew	: 'វីនដូវថ្មី (_blank)',
+		targetTop	: 'វីនដូវនៅលើគេ(_top)',
+		targetSelf	: 'វីនដូវដដែល (_self)',
+		targetParent	: 'វីនដូវមេ (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'ការកំណត់ជួរជ្រើសរើស',
+		selectInfo	: 'ពត៌មាន',
+		opAvail		: 'ការកំណត់ជ្រើសរើស ដែលអាចកំណត់បាន',
+		value		: 'តំលៃ',
+		size		: 'ទំហំ',
+		lines		: 'បន្ទាត់',
+		chkMulti	: 'អនុញ្ញាតអោយជ្រើសរើសច្រើន',
+		opText		: 'ពាក្យ',
+		opValue		: 'តំលៃ',
+		btnAdd		: 'បន្ថែម',
+		btnModify	: 'ផ្លាស់ប្តូរ',
+		btnUp		: 'លើ',
+		btnDown		: 'ក្រោម',
+		btnSetValue : 'Set as selected value', // MISSING
+		btnDelete	: 'លប់'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'ការកំណត់កន្លែងសរសេរអត្ថបទ',
+		cols		: 'ជូរឈរ',
+		rows		: 'ជូរផ្តេក'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'ការកំណត់ជួរអត្ថបទ',
+		name		: 'ឈ្មោះ',
+		value		: 'តំលៃ',
+		charWidth	: 'ទទឹង អក្សរ',
+		maxChars	: 'អក្សរអតិបរិមា',
+		type		: 'ប្រភេទ',
+		typeText	: 'ពាក្យ',
+		typePass	: 'ពាក្យសំងាត់'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'ការកំណត់ជួរលាក់',
+		name	: 'ឈ្មោះ',
+		value	: 'តំលៃ'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'ការកំណត់រូបភាព',
+		titleButton	: 'ការកំណត់ប៉ូតុនរូបភាព',
+		menu		: 'ការកំណត់រូបភាព',
+		infoTab	: 'ពត៌មានអំពីរូបភាព',
+		btnUpload	: 'បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្តល់សេវា',
+		url		: 'URL',
+		upload	: 'ទាញយក',
+		alt		: 'អត្ថបទជំនួស',
+		width		: 'ទទឹង',
+		height	: 'កំពស់',
+		lockRatio	: 'អត្រាឡុក',
+		resetSize	: 'កំណត់ទំហំឡើងវិញ',
+		border	: 'ស៊ុម',
+		hSpace	: 'គំលាតទទឹង',
+		vSpace	: 'គំលាតបណ្តោយ',
+		align		: 'កំណត់ទីតាំង',
+		alignLeft	: 'ខាងឆ្វង',
+		alignAbsBottom: 'Abs Bottom', // MISSING
+		alignAbsMiddle: 'Abs Middle', // MISSING
+		alignBaseline	: 'បន្ទាត់ជាមូលដ្ឋាន',
+		alignBottom	: 'ខាងក្រោម',
+		alignMiddle	: 'កណ្តាល',
+		alignRight	: 'ខាងស្តាំ',
+		alignTextTop	: 'លើអត្ថបទ',
+		alignTop	: 'ខាងលើ',
+		preview	: 'មើលសាកល្បង',
+		alertUrl	: 'សូមសរសេរងាស័យដ្ឋានរបស់រូបភាព',
+		linkTab	: 'ឈ្នាប់',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'ការកំណត់ Flash',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'ការកំណត់ Flash',
+		chkPlay		: 'លេងដោយស្វ័យប្រវត្ត',
+		chkLoop		: 'ចំនួនដង',
+		chkMenu		: 'បង្ហាញ មឺនុយរបស់ Flash',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'ទំហំ',
+		scaleAll		: 'បង្ហាញទាំងអស់',
+		scaleNoBorder	: 'មិនបង្ហាញស៊ុម',
+		scaleFit		: 'ត្រូវល្មម',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'កំណត់ទីតាំង',
+		alignLeft	: 'ខាងឆ្វង',
+		alignAbsBottom: 'Abs Bottom', // MISSING
+		alignAbsMiddle: 'Abs Middle', // MISSING
+		alignBaseline	: 'បន្ទាត់ជាមូលដ្ឋាន',
+		alignBottom	: 'ខាងក្រោម',
+		alignMiddle	: 'កណ្តាល',
+		alignRight	: 'ខាងស្តាំ',
+		alignTextTop	: 'លើអត្ថបទ',
+		alignTop	: 'ខាងលើ',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'ពណ៌ផ្ទៃខាងក្រោយ',
+		width	: 'ទទឹង',
+		height	: 'កំពស់',
+		hSpace	: 'គំលាតទទឹង',
+		vSpace	: 'គំលាតបណ្តោយ',
+		validateSrc : 'សូមសរសេរ អាស័យដ្ឋាន URL',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'ពិនិត្យអក្ខរាវិរុទ្ធ',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'គ្មានក្នុងវចនានុក្រម',
+		changeTo		: 'ផ្លាស់ប្តូរទៅ',
+		btnIgnore		: 'មិនផ្លាស់ប្តូរ',
+		btnIgnoreAll	: 'មិនផ្លាស់ប្តូរ ទាំងអស់',
+		btnReplace		: 'ជំនួស',
+		btnReplaceAll	: 'ជំនួសទាំងអស់',
+		btnUndo			: 'សារឡើងវិញ',
+		noSuggestions	: '- គ្មានសំណើរ -',
+		progress		: 'កំពុងពិនិត្យអក្ខរាវិរុទ្ធ...',
+		noMispell		: 'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: គ្មានកំហុស',
+		noChanges		: 'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពុំមានផ្លាស់ប្តូរ',
+		oneChange		: 'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពាក្យមួយត្រូចបានផ្លាស់ប្តូរ',
+		manyChanges		: 'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: %1 ពាក្យបានផ្លាស់ប្តូរ',
+		ieSpellDownload	: 'ពុំមានកម្មវិធីពិនិត្យអក្ខរាវិរុទ្ធ ។ តើចង់ទាញយកពីណា?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'រូបភាព',
+		title	: 'បញ្ជូលរូបភាព'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'បញ្ជីជាអក្សរ',
+	bulletedlist : 'បញ្ជីជារង្វង់មូល',
+	indent : 'បន្ថែមការចូលបន្ទាត់',
+	outdent : 'បន្ថយការចូលបន្ទាត់',
+
+	justify :
+	{
+		left : 'តំរឹមឆ្វេង',
+		center : 'តំរឹមកណ្តាល',
+		right : 'តំរឹមស្តាំ',
+		block : 'តំរឹមសងខាង'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'ចំលងដាក់',
+		cutError	: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ\u200bមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ  (Ctrl+X) ។',
+		copyError	: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ\u200bមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl+C)។',
+		pasteMsg	: 'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី \u200b(<STRONG>Ctrl+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'ចំលងដាក់ពី Word',
+		title : 'ចំលងដាក់ពី Word',
+		advice : 'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី \u200b(<STRONG>Ctrl+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។',
+		ignoreFontFace : 'មិនគិតអំពីប្រភេទពុម្ភអក្សរ',
+		removeStyle : 'លប់ម៉ូត'
+	},
+
+	pasteText :
+	{
+		button : 'ចំលងដាក់អត្ថបទធម្មតា',
+		title : 'ចំលងដាក់អត្ថបទធម្មតា'
+	},
+
+	templates :
+	{
+		button : 'ឯកសារគំរូ',
+		title : 'ឯកសារគំរូ របស់អត្ថន័យ',
+		insertOption: 'Replace actual contents', // MISSING
+		selectPromptMsg: 'សូមជ្រើសរើសឯកសារគំរូ ដើម្បីបើកនៅក្នុងកម្មវិធីតាក់តែងអត្ថបទ<br>(អត្ថបទនឹងបាត់បង់):',
+		emptyListMsg : '(ពុំមានឯកសារគំរូត្រូវបានកំណត់)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'ម៉ូត',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'រចនា',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'រចនា',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatted',
+		tag_address : 'Address',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'ហ្វុង',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'ហ្វុង',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'ទំហំ',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'ទំហំ',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'ពណ៌អក្សរ',
+		bgColorTitle : 'ពណ៌ផ្ទៃខាងក្រោយ',
+		auto : 'ស្វ័យប្រវត្ត',
+		more : 'ពណ៌ផ្សេងទៀត..'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/eu.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/eu.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/eu.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Basque language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['eu'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Testu aberastuentzako editorea, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'HTML Iturburua',
+	newPage			: 'Orrialde Berria',
+	save			: 'Gorde',
+	preview			: 'Aurrebista',
+	cut				: 'Ebaki',
+	copy			: 'Kopiatu',
+	paste			: 'Itsatsi',
+	print			: 'Inprimatu',
+	underline		: 'Azpimarratu',
+	bold			: 'Lodia',
+	italic			: 'Etzana',
+	selectAll		: 'Hautatu dena',
+	removeFormat	: 'Kendu Formatua',
+	strike			: 'Marratua',
+	subscript		: 'Azpi-indize',
+	superscript		: 'Goi-indize',
+	horizontalrule	: 'Txertatu Marra Horizontala',
+	pagebreak		: 'Txertatu Orrialde-jauzia',
+	unlink			: 'Kendu Esteka',
+	undo			: 'Desegin',
+	redo			: 'Berregin',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Zerbitzaria arakatu',
+		url				: 'URL',
+		protocol		: 'Protokoloa',
+		upload			: 'Gora kargatu',
+		uploadSubmit	: 'Zerbitzarira bidalia',
+		image			: 'Irudia',
+		flash			: 'Flasha',
+		form			: 'Formularioa',
+		checkbox		: 'Kontrol-laukia',
+		radio		: 'Aukera-botoia',
+		textField		: 'Testu Eremua',
+		textarea		: 'Testu-area',
+		hiddenField		: 'Ezkutuko Eremua',
+		button			: 'Botoia',
+		select	: 'Hautespen Eremua',
+		imageButton		: 'Irudi Botoia',
+		notSet			: '<Ezarri gabe>',
+		id				: 'Id',
+		name			: 'Izena',
+		langDir			: 'Hizkuntzaren Norabidea',
+		langDirLtr		: 'Ezkerretik Eskumara(LTR)',
+		langDirRtl		: 'Eskumatik Ezkerrera (RTL)',
+		langCode		: 'Hizkuntza Kodea',
+		longDescr		: 'URL Deskribapen Luzea',
+		cssClass		: 'Estilo-orriko Klaseak',
+		advisoryTitle	: 'Izenburua',
+		cssStyle		: 'Estiloa',
+		ok				: 'Ados',
+		cancel			: 'Utzi',
+		generalTab		: 'Orokorra',
+		advancedTab		: 'Aurreratua',
+		validateNumberFailed	: 'Balio hau ez da zenbaki bat.',
+		confirmNewPage	: 'Eduki honetan gorde gabe dauden aldaketak galduko dira. Ziur zaude orri berri bat kargatu nahi duzula?',
+		confirmCancel	: 'Aukera batzuk aldatu egin dira. Ziur zaude elkarrizketa-koadroa itxi nahi duzula?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, erabilezina</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Txertatu Karaktere Berezia',
+		title		: 'Karaktere Berezia Aukeratu'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Txertatu/Editatu Esteka',
+		menu		: 'Aldatu Esteka',
+		title		: 'Esteka',
+		info		: 'Estekaren Informazioa',
+		target		: 'Target (Helburua)',
+		upload		: 'Gora kargatu',
+		advanced	: 'Aurreratua',
+		type		: 'Esteka Mota',
+		toAnchor	: 'Aingura orrialde honetan',
+		toEmail		: 'ePosta',
+		target		: 'Target (Helburua)',
+		targetNotSet	: '<Ezarri gabe>',
+		targetFrame	: '<marko>',
+		targetPopup	: '<popup leihoa>',
+		targetNew	: 'Leiho Berria (_blank)',
+		targetTop	: 'Goiko Leihoa (_top)',
+		targetSelf	: 'Leiho Berdina (_self)',
+		targetParent	: 'Leiho Gurasoa (_parent)',
+		targetFrameName	: 'Marko Helburuaren Izena',
+		targetPopupName	: 'Popup Leihoaren Izena',
+		popupFeatures	: 'Popup Leihoaren Ezaugarriak',
+		popupResizable	: 'Tamaina Aldakorra',
+		popupStatusBar	: 'Egoera Barra',
+		popupLocationBar	: 'Kokaleku Barra',
+		popupToolbar	: 'Tresna Barra',
+		popupMenuBar	: 'Menu Barra',
+		popupFullScreen	: 'Pantaila Osoa (IE)',
+		popupScrollBars	: 'Korritze Barrak',
+		popupDependent	: 'Menpekoa (Netscape)',
+		popupWidth		: 'Zabalera',
+		popupLeft		: 'Ezkerreko  Posizioa',
+		popupHeight		: 'Altuera',
+		popupTop		: 'Goiko Posizioa',
+		id				: 'Id',
+		langDir			: 'Hizkuntzaren Norabidea',
+		langDirNotSet	: '<Ezarri gabe>',
+		langDirLTR		: 'Ezkerretik Eskumara(LTR)',
+		langDirRTL		: 'Eskumatik Ezkerrera (RTL)',
+		acccessKey		: 'Sarbide-gakoa',
+		name			: 'Izena',
+		langCode		: 'Hizkuntzaren Norabidea',
+		tabIndex		: 'Tabulazio Indizea',
+		advisoryTitle	: 'Izenburua',
+		advisoryContentType	: 'Eduki Mota (Content Type)',
+		cssClasses		: 'Estilo-orriko Klaseak',
+		charset			: 'Estekatutako Karaktere Multzoa',
+		styles			: 'Estiloa',
+		selectAnchor	: 'Aingura bat hautatu',
+		anchorName		: 'Aingura izenagatik',
+		anchorId		: 'Elementuaren ID-gatik',
+		emailAddress	: 'ePosta Helbidea',
+		emailSubject	: 'Mezuaren Gaia',
+		emailBody		: 'Mezuaren Gorputza',
+		noAnchors		: '(Ez daude aingurak eskuragarri dokumentuan)',
+		noUrl			: 'Mesedez URL esteka idatzi',
+		noEmail			: 'Mesedez ePosta helbidea idatzi'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Aingura',
+		menu		: 'Ainguraren Ezaugarriak',
+		title		: 'Ainguraren Ezaugarriak',
+		name		: 'Ainguraren Izena',
+		errorName	: 'Idatzi ainguraren izena'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Bilatu eta Ordeztu',
+		find				: 'Bilatu',
+		replace				: 'Ordezkatu',
+		findWhat			: 'Zer bilatu:',
+		replaceWith			: 'Zerekin ordeztu:',
+		notFoundMsg			: 'Idatzitako testua ez da topatu.',
+		matchCase			: 'Maiuskula/minuskula',
+		matchWord			: 'Esaldi osoa bilatu',
+		matchCyclic			: 'Bilaketa ziklikoa',
+		replaceAll			: 'Ordeztu Guztiak',
+		replaceSuccessMsg	: 'Zenbat aldiz ordeztua: %1'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Taula',
+		title		: 'Taularen Ezaugarriak',
+		menu		: 'Taularen Ezaugarriak',
+		deleteTable	: 'Ezabatu Taula',
+		rows		: 'Lerroak',
+		columns		: 'Zutabeak',
+		border		: 'Ertzaren Zabalera',
+		align		: 'Lerrokatu',
+		alignNotSet	: '<Ezarri gabe>',
+		alignLeft	: 'Ezkerrean',
+		alignCenter	: 'Erdian',
+		alignRight	: 'Eskuman',
+		width		: 'Zabalera',
+		widthPx		: 'pixel',
+		widthPc		: 'ehuneko',
+		height		: 'Altuera',
+		cellSpace	: 'Gelaxka arteko tartea',
+		cellPad		: 'Gelaxken betegarria',
+		caption		: 'Epigrafea',
+		summary		: 'Laburpena',
+		headers		: 'Goiburuak',
+		headersNone		: 'Bat ere ez',
+		headersColumn	: 'Lehen zutabea',
+		headersRow		: 'Lehen lerroa',
+		headersBoth		: 'Biak',
+		invalidRows		: 'Lerro kopurua 0 baino handiagoa den zenbakia izan behar da.',
+		invalidCols		: 'Zutabe kopurua 0 baino handiagoa den zenbakia izan behar da.',
+		invalidBorder	: 'Ertzaren tamaina zenbaki bat izan behar da.',
+		invalidWidth	: 'Taularen zabalera zenbaki bat izan behar da.',
+		invalidHeight	: 'Taularen altuera zenbaki bat izan behar da.',
+		invalidCellSpacing	: 'Gelaxka arteko tartea zenbaki bat izan behar da.',
+		invalidCellPadding	: 'Gelaxken betegarria zenbaki bat izan behar da.',
+
+		cell :
+		{
+			menu			: 'Gelaxka',
+			insertBefore	: 'Txertatu Gelaxka Aurretik',
+			insertAfter		: 'Txertatu Gelaxka Ostean',
+			deleteCell		: 'Kendu Gelaxkak',
+			merge			: 'Batu Gelaxkak',
+			mergeRight		: 'Elkartu Eskumara',
+			mergeDown		: 'Elkartu Behera',
+			splitHorizontal	: 'Banatu Gelaxkak Horizontalki',
+			splitVertical	: 'Banatu Gelaxkak Bertikalki',
+			title			: 'Gelaxken Ezaugarriak',
+			cellType		: 'Gelaxka Mota',
+			rowSpan			: 'Hedatutako Lerroak',
+			colSpan			: 'Hedatutako Zutabeak',
+			wordWrap		: 'Itzulbira',
+			hAlign			: 'Lerrokatze Horizontala',
+			vAlign			: 'Lerrokatze Bertikala',
+			alignTop		: 'Goian',
+			alignMiddle		: 'Erdian',
+			alignBottom		: 'Behean',
+			alignBaseline	: 'Oinarri-lerroan',
+			bgColor			: 'Fondoaren Kolorea',
+			borderColor		: 'Ertzaren Kolorea',
+			data			: 'Data',
+			header			: 'Goiburua',
+			yes				: 'Bai',
+			no				: 'Ez',
+			invalidWidth	: 'Gelaxkaren zabalera zenbaki bat izan behar da.',
+			invalidHeight	: 'Gelaxkaren altuera zenbaki bat izan behar da.',
+			invalidRowSpan	: 'Lerroen hedapena zenbaki osoa izan behar da.',
+			invalidColSpan	: 'Zutabeen hedapena zenbaki osoa izan behar da.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Lerroa',
+			insertBefore	: 'Txertatu Lerroa Aurretik',
+			insertAfter		: 'Txertatu Lerroa Ostean',
+			deleteRow		: 'Ezabatu Lerroak'
+		},
+
+		column :
+		{
+			menu			: 'Zutabea',
+			insertBefore	: 'Txertatu Zutabea Aurretik',
+			insertAfter		: 'Txertatu Zutabea Ostean',
+			deleteColumn	: 'Ezabatu Zutabeak'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Botoiaren Ezaugarriak',
+		text		: 'Testua (Balorea)',
+		type		: 'Mota',
+		typeBtn		: 'Botoia',
+		typeSbm		: 'Bidali',
+		typeRst		: 'Garbitu'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Kontrol-laukiko Ezaugarriak',
+		radioTitle	: 'Aukera-botoiaren Ezaugarriak',
+		value		: 'Balorea',
+		selected	: 'Hautatuta'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Formularioaren Ezaugarriak',
+		menu		: 'Formularioaren Ezaugarriak',
+		action		: 'Ekintza',
+		method		: 'Metodoa',
+		encoding	: 'Kodeketa',
+		target		: 'Target (Helburua)',
+		targetNotSet	: '<Ezarri gabe>',
+		targetNew	: 'Leiho Berria (_blank)',
+		targetTop	: 'Goiko Leihoa (_top)',
+		targetSelf	: 'Leiho Berdina (_self)',
+		targetParent	: 'Leiho Gurasoa (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Hautespen Eremuaren Ezaugarriak',
+		selectInfo	: 'Informazioa',
+		opAvail		: 'Aukera Eskuragarriak',
+		value		: 'Balorea',
+		size		: 'Tamaina',
+		lines		: 'lerro kopurura',
+		chkMulti	: 'Hautaketa anitzak baimendu',
+		opText		: 'Testua',
+		opValue		: 'Balorea',
+		btnAdd		: 'Gehitu',
+		btnModify	: 'Aldatu',
+		btnUp		: 'Gora',
+		btnDown		: 'Behera',
+		btnSetValue : 'Aukeratutako balorea ezarri',
+		btnDelete	: 'Ezabatu'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Testu-arearen Ezaugarriak',
+		cols		: 'Zutabeak',
+		rows		: 'Lerroak'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Testu Eremuaren Ezaugarriak',
+		name		: 'Izena',
+		value		: 'Balorea',
+		charWidth	: 'Zabalera',
+		maxChars	: 'Zenbat karaktere gehienez',
+		type		: 'Mota',
+		typeText	: 'Testua',
+		typePass	: 'Pasahitza'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Ezkutuko Eremuaren Ezaugarriak',
+		name	: 'Izena',
+		value	: 'Balorea'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Irudi Ezaugarriak',
+		titleButton	: 'Irudi Botoiaren Ezaugarriak',
+		menu		: 'Irudi Ezaugarriak',
+		infoTab	: 'Irudi informazioa',
+		btnUpload	: 'Zerbitzarira bidalia',
+		url		: 'URL',
+		upload	: 'Gora Kargatu',
+		alt		: 'Ordezko Testua',
+		width		: 'Zabalera',
+		height	: 'Altuera',
+		lockRatio	: 'Erlazioa Blokeatu',
+		resetSize	: 'Tamaina Berrezarri',
+		border	: 'Ertza',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		align		: 'Lerrokatu',
+		alignLeft	: 'Ezkerrera',
+		alignAbsBottom: 'Abs Behean',
+		alignAbsMiddle: 'Abs Erdian',
+		alignBaseline	: 'Oinan',
+		alignBottom	: 'Behean',
+		alignMiddle	: 'Erdian',
+		alignRight	: 'Eskuman',
+		alignTextTop	: 'Testua Goian',
+		alignTop	: 'Goian',
+		preview	: 'Aurrebista',
+		alertUrl	: 'Mesedez Irudiaren URLa idatzi',
+		linkTab	: 'Esteka',
+		button2Img	: 'Aukeratutako irudi botoia, irudi normal batean eraldatu nahi duzu?',
+		img2Button	: 'Aukeratutako irudia, irudi botoi batean eraldatu nahi duzu?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flasharen Ezaugarriak',
+		propertiesTab	: 'Ezaugarriak',
+		title		: 'Flasharen Ezaugarriak',
+		chkPlay		: 'Automatikoki Erreproduzitu',
+		chkLoop		: 'Begizta',
+		chkMenu		: 'Flasharen Menua Gaitu',
+		chkFull		: 'Onartu Pantaila osoa',
+ 		scale		: 'Eskalatu',
+		scaleAll		: 'Dena erakutsi',
+		scaleNoBorder	: 'Ertzik gabe',
+		scaleFit		: 'Doitu',
+		access			: 'Scriptak baimendu',
+		accessAlways	: 'Beti',
+		accessSameDomain	: 'Domeinu berdinekoak',
+		accessNever	: 'Inoiz ere ez',
+		align		: 'Lerrokatu',
+		alignLeft	: 'Ezkerrera',
+		alignAbsBottom: 'Abs Behean',
+		alignAbsMiddle: 'Abs Erdian',
+		alignBaseline	: 'Oinan',
+		alignBottom	: 'Behean',
+		alignMiddle	: 'Erdian',
+		alignRight	: 'Eskuman',
+		alignTextTop	: 'Testua Goian',
+		alignTop	: 'Goian',
+		quality		: 'Kalitatea',
+		qualityBest		 : 'Hoberena',
+		qualityHigh		 : 'Altua',
+		qualityAutoHigh	 : 'Auto Altua',
+		qualityMedium	 : 'Ertaina',
+		qualityAutoLow	 : 'Auto Baxua',
+		qualityLow		 : 'Baxua',
+		windowModeWindow	 : 'Leihoa',
+		windowModeOpaque	 : 'Opakoa',
+		windowModeTransparent	 : 'Gardena',
+		windowMode	: 'Leihoaren modua',
+		flashvars	: 'Flash Aldagaiak',
+		bgcolor	: 'Atzeko kolorea',
+		width	: 'Zabalera',
+		height	: 'Altuera',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		validateSrc : 'Mesedez URL esteka idatzi',
+		validateWidth : 'Zabalera zenbaki bat izan behar da.',
+		validateHeight : 'Altuera zenbaki bat izan behar da.',
+		validateHSpace : 'HSpace zenbaki bat izan behar da.',
+		validateVSpace : 'VSpace zenbaki bat izan behar da.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Ortografia',
+		title			: 'Ortografia zuzenketa',
+		notAvailable	: 'Barkatu baina momentu honetan zerbitzua ez dago erabilgarri.',
+		errorLoading	: 'Errorea gertatu da aplikazioa zerbitzaritik kargatzean: %s.',
+		notInDic		: 'Ez dago hiztegian',
+		changeTo		: 'Honekin ordezkatu',
+		btnIgnore		: 'Ezikusi',
+		btnIgnoreAll	: 'Denak Ezikusi',
+		btnReplace		: 'Ordezkatu',
+		btnReplaceAll	: 'Denak Ordezkatu',
+		btnUndo			: 'Desegin',
+		noSuggestions	: '- Iradokizunik ez -',
+		progress		: 'Zuzenketa ortografikoa martxan...',
+		noMispell		: 'Zuzenketa ortografikoa bukatuta: Akatsik ez',
+		noChanges		: 'Zuzenketa ortografikoa bukatuta: Ez da ezer aldatu',
+		oneChange		: 'Zuzenketa ortografikoa bukatuta: Hitz bat aldatu da',
+		manyChanges		: 'Zuzenketa ortografikoa bukatuta: %1 hitz aldatu dira',
+		ieSpellDownload	: 'Zuzentzaile ortografikoa ez dago instalatuta. Deskargatu nahi duzu?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Aurpegierak',
+		title	: 'Aurpegiera Sartu'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 elementua'
+	},
+
+	numberedlist : 'Zenbakidun Zerrenda',
+	bulletedlist : 'Buletdun Zerrenda',
+	indent : 'Handitu Koska',
+	outdent : 'Txikitu Koska',
+
+	justify :
+	{
+		left : 'Lerrokatu Ezkerrean',
+		center : 'Lerrokatu Erdian',
+		right : 'Lerrokatu Eskuman',
+		block : 'Justifikatu'
+	},
+
+	blockquote : 'Aipamen blokea',
+
+	clipboard :
+	{
+		title		: 'Itsatsi',
+		cutError	: 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+X).',
+		copyError	: 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+C).',
+		pasteMsg	: 'Mesedez teklatua erabilita (<STRONG>Ctrl+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.',
+		securityMsg	: 'Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Itsatsi Word-etik',
+		title : 'Itsatsi Word-etik',
+		advice : 'Mesedez teklatua erabilita (<STRONG>Ctrl+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.',
+		ignoreFontFace : 'Letra Motaren definizioa ezikusi',
+		removeStyle : 'Estilo definizioak kendu'
+	},
+
+	pasteText :
+	{
+		button : 'Testu Arrunta bezala Itsatsi',
+		title : 'Testu Arrunta bezala Itsatsi'
+	},
+
+	templates :
+	{
+		button : 'Txantiloiak',
+		title : 'Eduki Txantiloiak',
+		insertOption: 'Ordeztu oraingo edukiak',
+		selectPromptMsg: 'Mesedez txantiloia aukeratu editorean kargatzeko<br>(orain dauden edukiak galduko dira):',
+		emptyListMsg : '(Ez dago definitutako txantiloirik)'
+	},
+
+	showBlocks : 'Blokeak erakutsi',
+
+	stylesCombo :
+	{
+		label : 'Estiloa',
+		voiceLabel : 'Estiloak',
+		panelVoiceLabel : 'Estilo bat aukeratu',
+		panelTitle1 : 'Bloke Estiloak',
+		panelTitle2 : 'Inline Estiloak',
+		panelTitle3 : 'Objektu Estiloak'
+	},
+
+	format :
+	{
+		label : 'Formatua',
+		voiceLabel : 'Formatua',
+		panelTitle : 'Formatua',
+		panelVoiceLabel : 'Aukeratu paragrafo formatu bat',
+
+		tag_p : 'Arrunta',
+		tag_pre : 'Formateatua',
+		tag_address : 'Helbidea',
+		tag_h1 : 'Izenburua 1',
+		tag_h2 : 'Izenburua 2',
+		tag_h3 : 'Izenburua 3',
+		tag_h4 : 'Izenburua 4',
+		tag_h5 : 'Izenburua 5',
+		tag_h6 : 'Izenburua 6',
+		tag_div : 'Paragrafoa (DIV)'
+	},
+
+	font :
+	{
+		label : 'Letra-tipoa',
+		voiceLabel : 'Letra-tipoa',
+		panelTitle : 'Letra-tipoa',
+		panelVoiceLabel : 'Aukeratu letra-tipoa'
+	},
+
+	fontSize :
+	{
+		label : 'Tamaina',
+		voiceLabel : 'Tamaina',
+		panelTitle : 'Tamaina',
+		panelVoiceLabel : 'Aukeratu letraren tamaina'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Testu Kolorea',
+		bgColorTitle : 'Atzeko kolorea',
+		auto : 'Automatikoa',
+		more : 'Kolore gehiago...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Ortografia Zuzenketa Idatzi Ahala (SCAYT)',
+		enable : 'Gaitu SCAYT',
+		disable : 'Desgaitu SCAYT',
+		about : 'SCAYTi buruz',
+		toggle : 'SCAYT aldatu',
+		options : 'Aukerak',
+		langs : 'Hizkuntzak',
+		moreSuggestions : 'Iradokizun gehiago',
+		ignore : 'Baztertu',
+		ignoreAll : 'Denak baztertu',
+		addWord : 'Hitza Gehitu',
+		emptyDic : 'Hiztegiaren izena ezin da hutsik egon.',
+		optionsTab : 'Aukerak',
+		languagesTab : 'Hizkuntzak',
+		dictionariesTab : 'Hiztegiak',
+		aboutTab : 'Honi buruz'
+	},
+
+	about :
+	{
+		title : 'CKEditor(r)i buruz',
+		dlgTitle : 'CKEditor(r)i buruz',
+		moreInfo : 'Lizentziari buruzko informazioa gure webgunean:',
+		copy : 'Copyright &copy; $1. Eskubide guztiak erreserbaturik.'
+	},
+
+	maximize : 'Maximizatu',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Aingura',
+		flash : 'Flash Animazioa',
+		div : 'Orrialde Saltoa',
+		unknown : 'Objektu ezezaguna'
+	},
+
+	resize : 'Arrastatu tamaina aldatzeko',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/ko.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/ko.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/ko.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Korean language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['ko'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: '소스',
+	newPage			: '새 문서',
+	save			: '저장하기',
+	preview			: '미리보기',
+	cut				: '잘라내기',
+	copy			: '복사하기',
+	paste			: '붙여넣기',
+	print			: '인쇄하기',
+	underline		: '밑줄',
+	bold			: '진하게',
+	italic			: '이텔릭',
+	selectAll		: '전체선택',
+	removeFormat	: '포맷 지우기',
+	strike			: '취소선',
+	subscript		: '아래 첨자',
+	superscript		: '위 첨자',
+	horizontalrule	: '수평선 삽입',
+	pagebreak		: 'Insert Page Break for Printing', // MISSING
+	unlink			: '링크 삭제',
+	undo			: '취소',
+	redo			: '재실행',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: '서버 보기',
+		url				: 'URL',
+		protocol		: '프로토콜',
+		upload			: '업로드',
+		uploadSubmit	: '서버로 전송',
+		image			: '이미지',
+		flash			: '플래쉬',
+		form			: '폼',
+		checkbox		: '체크박스',
+		radio		: '라디오버튼',
+		textField		: '입력필드',
+		textarea		: '입력영역',
+		hiddenField		: '숨김필드',
+		button			: '버튼',
+		select	: '펼침목록',
+		imageButton		: '이미지버튼',
+		notSet			: '<설정되지 않음>',
+		id				: 'ID',
+		name			: 'Name',
+		langDir			: '쓰기 방향',
+		langDirLtr		: '왼쪽에서 오른쪽 (LTR)',
+		langDirRtl		: '오른쪽에서 왼쪽 (RTL)',
+		langCode		: '언어 코드',
+		longDescr		: 'URL 설명',
+		cssClass		: 'Stylesheet Classes',
+		advisoryTitle	: 'Advisory Title',
+		cssStyle		: 'Style',
+		ok				: '예',
+		cancel			: '아니오',
+		generalTab		: 'General', // MISSING
+		advancedTab		: '자세히',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: '특수문자 삽입',
+		title		: '특수문자 선택'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: '링크 삽입/변경',
+		menu		: '링크 수정',
+		title		: '링크',
+		info		: '링크 정보',
+		target		: '타겟',
+		upload		: '업로드',
+		advanced	: '자세히',
+		type		: '링크 종류',
+		toAnchor	: '책갈피',
+		toEmail		: '이메일',
+		target		: '타겟',
+		targetNotSet	: '<설정되지 않음>',
+		targetFrame	: '<프레임>',
+		targetPopup	: '<팝업창>',
+		targetNew	: '새 창 (_blank)',
+		targetTop	: '최 상위 창 (_top)',
+		targetSelf	: '현재 창 (_self)',
+		targetParent	: '부모 창 (_parent)',
+		targetFrameName	: '타겟 프레임 이름',
+		targetPopupName	: '팝업창 이름',
+		popupFeatures	: '팝업창 설정',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: '상태바',
+		popupLocationBar	: '주소표시줄',
+		popupToolbar	: '툴바',
+		popupMenuBar	: '메뉴바',
+		popupFullScreen	: '전체화면 (IE)',
+		popupScrollBars	: '스크롤바',
+		popupDependent	: 'Dependent (Netscape)',
+		popupWidth		: '너비',
+		popupLeft		: '왼쪽 위치',
+		popupHeight		: '높이',
+		popupTop		: '윗쪽 위치',
+		id				: 'Id', // MISSING
+		langDir			: '쓰기 방향',
+		langDirNotSet	: '<설정되지 않음>',
+		langDirLTR		: '왼쪽에서 오른쪽 (LTR)',
+		langDirRTL		: '오른쪽에서 왼쪽 (RTL)',
+		acccessKey		: '엑세스 키',
+		name			: 'Name',
+		langCode		: '쓰기 방향',
+		tabIndex		: '탭 순서',
+		advisoryTitle	: 'Advisory Title',
+		advisoryContentType	: 'Advisory Content Type',
+		cssClasses		: 'Stylesheet Classes',
+		charset			: 'Linked Resource Charset',
+		styles			: 'Style',
+		selectAnchor	: '책갈피 선택',
+		anchorName		: '책갈피 이름',
+		anchorId		: '책갈피 ID',
+		emailAddress	: '이메일 주소',
+		emailSubject	: '제목',
+		emailBody		: '내용',
+		noAnchors		: '(문서에 책갈피가 없습니다.)',
+		noUrl			: '링크 URL을 입력하십시요.',
+		noEmail			: '이메일주소를 입력하십시요.'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: '책갈피 삽입/변경',
+		menu		: '책갈피 속성',
+		title		: '책갈피 속성',
+		name		: '책갈피 이름',
+		errorName	: '책갈피 이름을 입력하십시요.'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: '찾기 & 바꾸기',
+		find				: '찾기',
+		replace				: '바꾸기',
+		findWhat			: '찾을 문자열:',
+		replaceWith			: '바꿀 문자열:',
+		notFoundMsg			: '문자열을 찾을 수 없습니다.',
+		matchCase			: '대소문자 구분',
+		matchWord			: '온전한 단어',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: '모두 바꾸기',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: '표',
+		title		: '표 설정',
+		menu		: '표 설정',
+		deleteTable	: '표 삭제',
+		rows		: '가로줄',
+		columns		: '세로줄',
+		border		: '테두리 크기',
+		align		: '정렬',
+		alignNotSet	: '<설정되지 않음>',
+		alignLeft	: '왼쪽',
+		alignCenter	: '가운데',
+		alignRight	: '오른쪽',
+		width		: '너비',
+		widthPx		: '픽셀',
+		widthPc		: '퍼센트',
+		height		: '높이',
+		cellSpace	: '셀 간격',
+		cellPad		: '셀 여백',
+		caption		: '캡션',
+		summary		: 'Summary', // MISSING
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: '셀/칸(Cell)',
+			insertBefore	: '앞에 셀/칸 삽입',
+			insertAfter		: '뒤에 셀/칸 삽입',
+			deleteCell		: '셀 삭제',
+			merge			: '셀 합치기',
+			mergeRight		: '오른쪽 뭉치기',
+			mergeDown		: '왼쪽 뭉치기',
+			splitHorizontal	: '수평 나누기',
+			splitVertical	: '수직 나누기',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: '행(Row)',
+			insertBefore	: '앞에 행 삽입',
+			insertAfter		: '뒤에 행 삽입',
+			deleteRow		: '가로줄 삭제'
+		},
+
+		column :
+		{
+			menu			: '열(Column)',
+			insertBefore	: '앞에 열 삽입',
+			insertAfter		: '뒤에 열 삽입',
+			deleteColumn	: '세로줄 삭제'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: '버튼 속성',
+		text		: '버튼글자(값)',
+		type		: '버튼종류',
+		typeBtn		: 'Button', // MISSING
+		typeSbm		: 'Submit', // MISSING
+		typeRst		: 'Reset' // MISSING
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : '체크박스 속성',
+		radioTitle	: '라디오버튼 속성',
+		value		: '값',
+		selected	: '선택됨'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: '폼 속성',
+		menu		: '폼 속성',
+		action		: '실행경로(Action)',
+		method		: '방법(Method)',
+		encoding	: 'Encoding', // MISSING
+		target		: '타겟',
+		targetNotSet	: '<설정되지 않음>',
+		targetNew	: '새 창 (_blank)',
+		targetTop	: '최 상위 창 (_top)',
+		targetSelf	: '현재 창 (_self)',
+		targetParent	: '부모 창 (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: '펼침목록 속성',
+		selectInfo	: '정보',
+		opAvail		: '선택옵션',
+		value		: '값',
+		size		: '세로크기',
+		lines		: '줄',
+		chkMulti	: '여러항목 선택 허용',
+		opText		: '이름',
+		opValue		: '값',
+		btnAdd		: '추가',
+		btnModify	: '변경',
+		btnUp		: '위로',
+		btnDown		: '아래로',
+		btnSetValue : '선택된것으로 설정',
+		btnDelete	: '삭제'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: '입력영역 속성',
+		cols		: '칸수',
+		rows		: '줄수'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: '입력필드 속성',
+		name		: '이름',
+		value		: '값',
+		charWidth	: '글자 너비',
+		maxChars	: '최대 글자수',
+		type		: '종류',
+		typeText	: '문자열',
+		typePass	: '비밀번호'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: '숨김필드 속성',
+		name	: '이름',
+		value	: '값'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: '이미지 설정',
+		titleButton	: '이미지버튼 속성',
+		menu		: '이미지 설정',
+		infoTab	: '이미지 정보',
+		btnUpload	: '서버로 전송',
+		url		: 'URL',
+		upload	: '업로드',
+		alt		: '이미지 설명',
+		width		: '너비',
+		height	: '높이',
+		lockRatio	: '비율 유지',
+		resetSize	: '원래 크기로',
+		border	: '테두리',
+		hSpace	: '수평여백',
+		vSpace	: '수직여백',
+		align		: '정렬',
+		alignLeft	: '왼쪽',
+		alignAbsBottom: '줄아래(Abs Bottom)',
+		alignAbsMiddle: '줄중간(Abs Middle)',
+		alignBaseline	: '기준선',
+		alignBottom	: '아래',
+		alignMiddle	: '중간',
+		alignRight	: '오른쪽',
+		alignTextTop	: '글자상단',
+		alignTop	: '위',
+		preview	: '미리보기',
+		alertUrl	: '이미지 URL을 입력하십시요',
+		linkTab	: '링크',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: '플래쉬 속성',
+		propertiesTab	: 'Properties', // MISSING
+		title		: '플래쉬 등록정보',
+		chkPlay		: '자동재생',
+		chkLoop		: '반복',
+		chkMenu		: '플래쉬메뉴 가능',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: '영역',
+		scaleAll		: '모두보기',
+		scaleNoBorder	: '경계선없음',
+		scaleFit		: '영역자동조절',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: '정렬',
+		alignLeft	: '왼쪽',
+		alignAbsBottom: '줄아래(Abs Bottom)',
+		alignAbsMiddle: '줄중간(Abs Middle)',
+		alignBaseline	: '기준선',
+		alignBottom	: '아래',
+		alignMiddle	: '중간',
+		alignRight	: '오른쪽',
+		alignTextTop	: '글자상단',
+		alignTop	: '위',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: '배경 색상',
+		width	: '너비',
+		height	: '높이',
+		hSpace	: '수평여백',
+		vSpace	: '수직여백',
+		validateSrc : '링크 URL을 입력하십시요.',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: '철자검사',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: '사전에 없는 단어',
+		changeTo		: '변경할 단어',
+		btnIgnore		: '건너뜀',
+		btnIgnoreAll	: '모두 건너뜀',
+		btnReplace		: '변경',
+		btnReplaceAll	: '모두 변경',
+		btnUndo			: '취소',
+		noSuggestions	: '- 추천단어 없음 -',
+		progress		: '철자검사를 진행중입니다...',
+		noMispell		: '철자검사 완료: 잘못된 철자가 없습니다.',
+		noChanges		: '철자검사 완료: 변경된 단어가 없습니다.',
+		oneChange		: '철자검사 완료: 단어가 변경되었습니다.',
+		manyChanges		: '철자검사 완료: %1 단어가 변경되었습니다.',
+		ieSpellDownload	: '철자 검사기가 철치되지 않았습니다. 지금 다운로드하시겠습니까?'
+	},
+
+	smiley :
+	{
+		toolbar	: '아이콘',
+		title	: '아이콘 삽입'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : '순서있는 목록',
+	bulletedlist : '순서없는 목록',
+	indent : '들여쓰기',
+	outdent : '내어쓰기',
+
+	justify :
+	{
+		left : '왼쪽 정렬',
+		center : '가운데 정렬',
+		right : '오른쪽 정렬',
+		block : '양쪽 맞춤'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: '붙여넣기',
+		cutError	: '브라우저의 보안설정때문에 잘라내기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl+X).',
+		copyError	: '브라우저의 보안설정때문에 복사하기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요.  (Ctrl+C).',
+		pasteMsg	: '키보드의 (<STRONG>Ctrl+V</STRONG>) 를 이용해서 상자안에 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.',
+		securityMsg	: '브러우저 보안 설정으로 인해, 클립보드의 자료를 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'MS Word 형식에서 붙여넣기',
+		title : 'MS Word 형식에서 붙여넣기',
+		advice : '키보드의 (<STRONG>Ctrl+V</STRONG>) 를 이용해서 상자안에 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.',
+		ignoreFontFace : '폰트 설정 무시',
+		removeStyle : '스타일 정의 제거'
+	},
+
+	pasteText :
+	{
+		button : '텍스트로 붙여넣기',
+		title : '텍스트로 붙여넣기'
+	},
+
+	templates :
+	{
+		button : '템플릿',
+		title : '내용 템플릿',
+		insertOption: '현재 내용 바꾸기',
+		selectPromptMsg: '에디터에서 사용할 템플릿을 선택하십시요.<br>(지금까지 작성된 내용은 사라집니다.):',
+		emptyListMsg : '(템플릿이 없습니다.)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : '스타일',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : '포맷',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : '포맷',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatted',
+		tag_address : 'Address',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Normal (DIV)' // MISSING
+	},
+
+	font :
+	{
+		label : '폰트',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : '폰트',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : '글자 크기',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : '글자 크기',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : '글자 색상',
+		bgColorTitle : '배경 색상',
+		auto : '기본색상',
+		more : '색상선택...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/is.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/is.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/is.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Icelandic language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['is'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Kóði',
+	newPage			: 'Ný síða',
+	save			: 'Vista',
+	preview			: 'Forskoða',
+	cut				: 'Klippa',
+	copy			: 'Afrita',
+	paste			: 'Líma',
+	print			: 'Prenta',
+	underline		: 'Undirstrikað',
+	bold			: 'Feitletrað',
+	italic			: 'Skáletrað',
+	selectAll		: 'Velja allt',
+	removeFormat	: 'Fjarlægja snið',
+	strike			: 'Yfirstrikað',
+	subscript		: 'Niðurskrifað',
+	superscript		: 'Uppskrifað',
+	horizontalrule	: 'Lóðrétt lína',
+	pagebreak		: 'Setja inn síðuskil',
+	unlink			: 'Fjarlægja stiklu',
+	undo			: 'Afturkalla',
+	redo			: 'Hætta við afturköllun',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Fletta í skjalasafni',
+		url				: 'Vefslóð',
+		protocol		: 'Samskiptastaðall',
+		upload			: 'Senda upp',
+		uploadSubmit	: 'Hlaða upp',
+		image			: 'Setja inn mynd',
+		flash			: 'Flash',
+		form			: 'Setja inn innsláttarform',
+		checkbox		: 'Setja inn hökunarreit',
+		radio		: 'Setja inn valhnapp',
+		textField		: 'Setja inn textareit',
+		textarea		: 'Setja inn textasvæði',
+		hiddenField		: 'Setja inn falið svæði',
+		button			: 'Setja inn hnapp',
+		select	: 'Setja inn lista',
+		imageButton		: 'Setja inn myndahnapp',
+		notSet			: '<ekkert valið>',
+		id				: 'Auðkenni',
+		name			: 'Nafn',
+		langDir			: 'Lesstefna',
+		langDirLtr		: 'Frá vinstri til hægri (LTR)',
+		langDirRtl		: 'Frá hægri til vinstri (RTL)',
+		langCode		: 'Tungumálakóði',
+		longDescr		: 'Nánari lýsing',
+		cssClass		: 'Stílsniðsflokkur',
+		advisoryTitle	: 'Titill',
+		cssStyle		: 'Stíll',
+		ok				: 'Í lagi',
+		cancel			: 'Hætta við',
+		generalTab		: 'Almennt',
+		advancedTab		: 'Tæknilegt',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Setja inn merki',
+		title		: 'Velja tákn'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Stofna/breyta stiklu',
+		menu		: 'Breyta stiklu',
+		title		: 'Stikla',
+		info		: 'Almennt',
+		target		: 'Mark',
+		upload		: 'Senda upp',
+		advanced	: 'Tæknilegt',
+		type		: 'Stikluflokkur',
+		toAnchor	: 'Bókamerki á þessari síðu',
+		toEmail		: 'Netfang',
+		target		: 'Mark',
+		targetNotSet	: '<ekkert valið>',
+		targetFrame	: '<rammi>',
+		targetPopup	: '<sprettigluggi>',
+		targetNew	: 'Nýr gluggi (_blank)',
+		targetTop	: 'Allur glugginn (_top)',
+		targetSelf	: 'Sami gluggi (_self)',
+		targetParent	: 'Yfirsettur rammi (_parent)',
+		targetFrameName	: 'Nafn markglugga',
+		targetPopupName	: 'Nafn sprettiglugga',
+		popupFeatures	: 'Eigindi sprettiglugga',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Stöðustika',
+		popupLocationBar	: 'Fanglína',
+		popupToolbar	: 'Verkfærastika',
+		popupMenuBar	: 'Vallína',
+		popupFullScreen	: 'Heilskjár (IE)',
+		popupScrollBars	: 'Skrunstikur',
+		popupDependent	: 'Háð venslum (Netscape)',
+		popupWidth		: 'Breidd',
+		popupLeft		: 'Fjarlægð frá vinstri',
+		popupHeight		: 'Hæð',
+		popupTop		: 'Fjarlægð frá efri brún',
+		id				: 'Id', // MISSING
+		langDir			: 'Lesstefna',
+		langDirNotSet	: '<ekkert valið>',
+		langDirLTR		: 'Frá vinstri til hægri (LTR)',
+		langDirRTL		: 'Frá hægri til vinstri (RTL)',
+		acccessKey		: 'Skammvalshnappur',
+		name			: 'Nafn',
+		langCode		: 'Lesstefna',
+		tabIndex		: 'Raðnúmer innsláttarreits',
+		advisoryTitle	: 'Titill',
+		advisoryContentType	: 'Tegund innihalds',
+		cssClasses		: 'Stílsniðsflokkur',
+		charset			: 'Táknróf',
+		styles			: 'Stíll',
+		selectAnchor	: 'Veldu akkeri',
+		anchorName		: 'Eftir akkerisnafni',
+		anchorId		: 'Eftir auðkenni einingar',
+		emailAddress	: 'Netfang',
+		emailSubject	: 'Efni',
+		emailBody		: 'Meginmál',
+		noAnchors		: '<Engin bókamerki á skrá>',
+		noUrl			: 'Sláðu inn veffang stiklunnar!',
+		noEmail			: 'Sláðu inn netfang!'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Stofna/breyta kaflamerki',
+		menu		: 'Eigindi kaflamerkis',
+		title		: 'Eigindi kaflamerkis',
+		name		: 'Nafn bókamerkis',
+		errorName	: 'Sláðu inn nafn bókamerkis!'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Finna og skipta',
+		find				: 'Leita',
+		replace				: 'Skipta út',
+		findWhat			: 'Leita að:',
+		replaceWith			: 'Skipta út fyrir:',
+		notFoundMsg			: 'Leitartexti fannst ekki!',
+		matchCase			: 'Gera greinarmun á¡ há¡- og lágstöfum',
+		matchWord			: 'Aðeins heil orð',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Skipta út allsstaðar',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tafla',
+		title		: 'Eigindi töflu',
+		menu		: 'Eigindi töflu',
+		deleteTable	: 'Fella töflu',
+		rows		: 'Raðir',
+		columns		: 'Dálkar',
+		border		: 'Breidd ramma',
+		align		: 'Jöfnun',
+		alignNotSet	: '<ekkert valið>',
+		alignLeft	: 'Vinstrijafnað',
+		alignCenter	: 'Miðjað',
+		alignRight	: 'Hægrijafnað',
+		width		: 'Breidd',
+		widthPx		: 'myndeindir',
+		widthPc		: 'prósent',
+		height		: 'Hæð',
+		cellSpace	: 'Bil milli reita',
+		cellPad		: 'Reitaspássía',
+		caption		: 'Titill',
+		summary		: 'Áfram',
+		headers		: 'Fyrirsagnir',
+		headersNone		: 'Engar',
+		headersColumn	: 'Fyrsti dálkur',
+		headersRow		: 'Fyrsta röð',
+		headersBoth		: 'Hvort tveggja',
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Reitur',
+			insertBefore	: 'Skjóta inn reiti fyrir aftan',
+			insertAfter		: 'Skjóta inn reiti fyrir framan',
+			deleteCell		: 'Fella reit',
+			merge			: 'Sameina reiti',
+			mergeRight		: 'Sameina til hægri',
+			mergeDown		: 'Sameina niður á við',
+			splitHorizontal	: 'Kljúfa reit lárétt',
+			splitVertical	: 'Kljúfa reit lóðrétt',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Röð',
+			insertBefore	: 'Skjóta inn röð fyrir ofan',
+			insertAfter		: 'Skjóta inn röð fyrir neðan',
+			deleteRow		: 'Eyða röð'
+		},
+
+		column :
+		{
+			menu			: 'Dálkur',
+			insertBefore	: 'Skjóta inn dálki vinstra megin',
+			insertAfter		: 'Skjóta inn dálki hægra megin',
+			deleteColumn	: 'Fella dálk'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Eigindi hnapps',
+		text		: 'Texti',
+		type		: 'Gerð',
+		typeBtn		: 'Hnappur',
+		typeSbm		: 'Staðfesta',
+		typeRst		: 'Hreinsa'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Eigindi markreits',
+		radioTitle	: 'Eigindi valhnapps',
+		value		: 'Gildi',
+		selected	: 'Valið'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Eigindi innsláttarforms',
+		menu		: 'Eigindi innsláttarforms',
+		action		: 'Aðgerð',
+		method		: 'Aðferð',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Mark',
+		targetNotSet	: '<ekkert valið>',
+		targetNew	: 'Nýr gluggi (_blank)',
+		targetTop	: 'Allur glugginn (_top)',
+		targetSelf	: 'Sami gluggi (_self)',
+		targetParent	: 'Yfirsettur rammi (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Eigindi lista',
+		selectInfo	: 'Upplýsingar',
+		opAvail		: 'Kostir',
+		value		: 'Gildi',
+		size		: 'Stærð',
+		lines		: 'línur',
+		chkMulti	: 'Leyfa fleiri kosti',
+		opText		: 'Texti',
+		opValue		: 'Gildi',
+		btnAdd		: 'Bæta við',
+		btnModify	: 'Breyta',
+		btnUp		: 'Upp',
+		btnDown		: 'Niður',
+		btnSetValue : 'Merkja sem valið',
+		btnDelete	: 'Eyða'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Eigindi textasvæðis',
+		cols		: 'Dálkar',
+		rows		: 'Línur'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Eigindi textareits',
+		name		: 'Nafn',
+		value		: 'Gildi',
+		charWidth	: 'Breidd (leturtákn)',
+		maxChars	: 'Hámarksfjöldi leturtákna',
+		type		: 'Gerð',
+		typeText	: 'Texti',
+		typePass	: 'Lykilorð'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Eigindi falins svæðis',
+		name	: 'Nafn',
+		value	: 'Gildi'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Eigindi myndar',
+		titleButton	: 'Eigindi myndahnapps',
+		menu		: 'Eigindi myndar',
+		infoTab	: 'Almennt',
+		btnUpload	: 'Hlaða upp',
+		url		: 'Vefslóð',
+		upload	: 'Hlaða upp',
+		alt		: 'Baklægur texti',
+		width		: 'Breidd',
+		height	: 'Hæð',
+		lockRatio	: 'Festa stærðarhlutfall',
+		resetSize	: 'Reikna stærð',
+		border	: 'Rammi',
+		hSpace	: 'Vinstri bil',
+		vSpace	: 'Hægri bil',
+		align		: 'Jöfnun',
+		alignLeft	: 'Vinstri',
+		alignAbsBottom: 'Abs neðst',
+		alignAbsMiddle: 'Abs miðjuð',
+		alignBaseline	: 'Grunnlína',
+		alignBottom	: 'Neðst',
+		alignMiddle	: 'Miðjuð',
+		alignRight	: 'Hægri',
+		alignTextTop	: 'Efri brún texta',
+		alignTop	: 'Efst',
+		preview	: 'Sýna dæmi',
+		alertUrl	: 'Sláðu inn slóðina að myndinni',
+		linkTab	: 'Stikla',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Eigindi Flash',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Eigindi Flash',
+		chkPlay		: 'Sjálfvirk spilun',
+		chkLoop		: 'Endurtekning',
+		chkMenu		: 'Sýna Flash-valmynd',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Skali',
+		scaleAll		: 'Sýna allt',
+		scaleNoBorder	: 'Án ramma',
+		scaleFit		: 'Fella skala að stærð',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Jöfnun',
+		alignLeft	: 'Vinstri',
+		alignAbsBottom: 'Abs neðst',
+		alignAbsMiddle: 'Abs miðjuð',
+		alignBaseline	: 'Grunnlína',
+		alignBottom	: 'Neðst',
+		alignMiddle	: 'Miðjuð',
+		alignRight	: 'Hægri',
+		alignTextTop	: 'Efri brún texta',
+		alignTop	: 'Efst',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Bakgrunnslitur',
+		width	: 'Breidd',
+		height	: 'Hæð',
+		hSpace	: 'Vinstri bil',
+		vSpace	: 'Hægri bil',
+		validateSrc : 'Sláðu inn veffang stiklunnar!',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Villuleit',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Ekki í orðabókinni',
+		changeTo		: 'Tillaga',
+		btnIgnore		: 'Hunsa',
+		btnIgnoreAll	: 'Hunsa allt',
+		btnReplace		: 'Skipta',
+		btnReplaceAll	: 'Skipta öllu',
+		btnUndo			: 'Til baka',
+		noSuggestions	: '- engar tillögur -',
+		progress		: 'Villuleit í gangi...',
+		noMispell		: 'Villuleit lokið: Engin villa fannst',
+		noChanges		: 'Villuleit lokið: Engu orði breytt',
+		oneChange		: 'Villuleit lokið: Einu orði breytt',
+		manyChanges		: 'Villuleit lokið: %1 orðum breytt',
+		ieSpellDownload	: 'Villuleit ekki sett upp.<br>Viltu setja hana upp?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Svipur',
+		title	: 'Velja svip'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Númeraður listi',
+	bulletedlist : 'Punktalisti',
+	indent : 'Minnka inndrátt',
+	outdent : 'Auka inndrátt',
+
+	justify :
+	{
+		left : 'Vinstrijöfnun',
+		center : 'Miðja texta',
+		right : 'Hægrijöfnun',
+		block : 'Jafna báðum megin'
+	},
+
+	blockquote : 'Inndráttur',
+
+	clipboard :
+	{
+		title		: 'Líma',
+		cutError	: 'Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl+X).',
+		copyError	: 'Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl+C).',
+		pasteMsg	: 'Límdu í svæðið hér að neðan og (<STRONG>Ctrl+V</STRONG>) og smelltu á <STRONG>OK</STRONG>.',
+		securityMsg	: 'Vegna öryggisstillinga í vafranum þínum fær ritillinn ekki beinan aðgang að klippuborðinu. Þú verður að líma innihaldið aftur inn í þennan glugga.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Líma úr Word',
+		title : 'Líma úr Word',
+		advice : 'Límdu í svæðið hér að neðan og (<STRONG>Ctrl+V</STRONG>) og smelltu á <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Hunsa leturskilgreiningar',
+		removeStyle : 'Hunsa letureigindi'
+	},
+
+	pasteText :
+	{
+		button : 'Líma sem ósniðinn texta',
+		title : 'Líma sem ósniðinn texta'
+	},
+
+	templates :
+	{
+		button : 'Sniðmát',
+		title : 'Innihaldssniðmát',
+		insertOption: 'Skipta út raunverulegu innihaldi',
+		selectPromptMsg: 'Veldu sniðmát til að opna í ritlinum.<br>(Núverandi innihald víkur fyrir því!):',
+		emptyListMsg : '(Ekkert sniðmát er skilgreint!)'
+	},
+
+	showBlocks : 'Sýna blokkir',
+
+	stylesCombo :
+	{
+		label : 'Stílflokkur',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Stílsnið',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Stílsnið',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Venjulegt letur',
+		tag_pre : 'Forsniðið',
+		tag_address : 'Vistfang',
+		tag_h1 : 'Fyrirsögn 1',
+		tag_h2 : 'Fyrirsögn 2',
+		tag_h3 : 'Fyrirsögn 3',
+		tag_h4 : 'Fyrirsögn 4',
+		tag_h5 : 'Fyrirsögn 5',
+		tag_h6 : 'Fyrirsögn 6',
+		tag_div : 'Venjulegt (DIV)'
+	},
+
+	font :
+	{
+		label : 'Leturgerð ',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Leturgerð ',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Leturstærð ',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Leturstærð ',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Litur texta',
+		bgColorTitle : 'Bakgrunnslitur',
+		auto : 'Sjálfval',
+		more : 'Fleiri liti...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/gu.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/gu.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/gu.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Gujarati language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['gu'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'મૂળ કે પ્રાથમિક દસ્તાવેજ',
+	newPage			: 'નવુ પાનું',
+	save			: 'સેવ',
+	preview			: 'પૂર્વદર્શન',
+	cut				: 'કાપવું',
+	copy			: 'નકલ',
+	paste			: 'પેસ્ટ',
+	print			: 'પ્રિન્ટ',
+	underline		: 'અન્ડર્લાઇન, નીચે લીટી',
+	bold			: 'બોલ્ડ/સ્પષ્ટ',
+	italic			: 'ઇટેલિક, ત્રાંસા',
+	selectAll		: 'બઘું પસંદ કરવું',
+	removeFormat	: 'ફૉર્મટ કાઢવું',
+	strike			: 'છેકી નાખવું',
+	subscript		: 'એક ચિહ્નની નીચે કરેલું બીજું ચિહ્ન',
+	superscript		: 'એક ચિહ્ન ઉપર કરેલું બીજું ચિહ્ન.',
+	horizontalrule	: 'સમસ્તરીય રેખા ઇન્સર્ટ/દાખલ કરવી',
+	pagebreak		: 'ઇન્સર્ટ પેજબ્રેક/પાનાને અલગ કરવું/દાખલ કરવું',
+	unlink			: 'લિંક કાઢવી',
+	undo			: 'રદ કરવું; પહેલાં હતી એવી સ્થિતિ પાછી લાવવી',
+	redo			: 'રિડૂ; પછી હતી એવી સ્થિતિ પાછી લાવવી',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'સર્વર બ્રાઉઝ કરો',
+		url				: 'URL',
+		protocol		: 'પ્રોટોકૉલ',
+		upload			: 'અપલોડ',
+		uploadSubmit	: 'આ સર્વરને મોકલવું',
+		image			: 'ચિત્ર',
+		flash			: 'ફ્લૅશ',
+		form			: 'ફૉર્મ/પત્રક',
+		checkbox		: 'ચેક બોક્સ',
+		radio		: 'રેડિઓ બટન',
+		textField		: 'ટેક્સ્ટ ફીલ્ડ, શબ્દ ક્ષેત્ર',
+		textarea		: 'ટેક્સ્ટ એરિઆ, શબ્દ વિસ્તાર',
+		hiddenField		: 'ગુપ્ત ક્ષેત્ર',
+		button			: 'બટન',
+		select	: 'પસંદગી ક્ષેત્ર',
+		imageButton		: 'ચિત્ર બટન',
+		notSet			: '<સેટ નથી>',
+		id				: 'Id',
+		name			: 'નામ',
+		langDir			: 'ભાષા લેખવાની પદ્ધતિ',
+		langDirLtr		: 'ડાબે થી જમણે (LTR)',
+		langDirRtl		: 'જમણે થી ડાબે (RTL)',
+		langCode		: 'ભાષા કોડ',
+		longDescr		: 'વધારે માહિતી માટે URL',
+		cssClass		: 'સ્ટાઇલ-શીટ ક્લાસ',
+		advisoryTitle	: 'મુખ્ય મથાળું',
+		cssStyle		: 'સ્ટાઇલ',
+		ok				: 'ઠીક છે',
+		cancel			: 'રદ કરવું',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'અડ્વાન્સડ',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'વિશિષ્ટ અક્ષર ઇન્સર્ટ/દાખલ કરવું',
+		title		: 'સ્પેશિઅલ વિશિષ્ટ અક્ષર પસંદ કરો'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'લિંક ઇન્સર્ટ/દાખલ કરવી',
+		menu		: ' લિંક એડિટ/માં ફેરફાર કરવો',
+		title		: 'લિંક',
+		info		: 'લિંક ઇન્ફૉ ટૅબ',
+		target		: 'ટાર્ગેટ/લક્ષ્ય',
+		upload		: 'અપલોડ',
+		advanced	: 'અડ્વાન્સડ',
+		type		: 'લિંક પ્રકાર',
+		toAnchor	: 'આ પેજનો ઍંકર',
+		toEmail		: 'ઈ-મેલ',
+		target		: 'ટાર્ગેટ/લક્ષ્ય',
+		targetNotSet	: '<સેટ નથી>',
+		targetFrame	: '<ફ્રેમ>',
+		targetPopup	: '<પૉપ-અપ વિન્ડો>',
+		targetNew	: 'નવી  વિન્ડો (_blank)',
+		targetTop	: 'ઉપરની વિન્ડો (_top)',
+		targetSelf	: 'આજ વિન્ડો (_self)',
+		targetParent	: 'મૂળ વિન્ડો (_parent)',
+		targetFrameName	: 'ટાર્ગેટ ફ્રેમ નું નામ',
+		targetPopupName	: 'પૉપ-અપ વિન્ડો નું નામ',
+		popupFeatures	: 'પૉપ-અપ વિન્ડો ફીચરસૅ',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'સ્ટૅટસ બાર',
+		popupLocationBar	: 'લોકેશન બાર',
+		popupToolbar	: 'ટૂલ બાર',
+		popupMenuBar	: 'મેન્યૂ બાર',
+		popupFullScreen	: 'ફુલ સ્ક્રીન (IE)',
+		popupScrollBars	: 'સ્ક્રોલ બાર',
+		popupDependent	: 'ડિપેન્ડન્ટ (Netscape)',
+		popupWidth		: 'પહોળાઈ',
+		popupLeft		: 'ડાબી બાજુ',
+		popupHeight		: 'ઊંચાઈ',
+		popupTop		: 'જમણી બાજુ',
+		id				: 'Id', // MISSING
+		langDir			: 'ભાષા લેખવાની પદ્ધતિ',
+		langDirNotSet	: '<સેટ નથી>',
+		langDirLTR		: 'ડાબે થી જમણે (LTR)',
+		langDirRTL		: 'જમણે થી ડાબે (RTL)',
+		acccessKey		: 'ઍક્સેસ કી',
+		name			: 'નામ',
+		langCode		: 'ભાષા લેખવાની પદ્ધતિ',
+		tabIndex		: 'ટૅબ ઇન્ડેક્સ',
+		advisoryTitle	: 'મુખ્ય મથાળું',
+		advisoryContentType	: 'મુખ્ય કન્ટેન્ટ પ્રકાર',
+		cssClasses		: 'સ્ટાઇલ-શીટ ક્લાસ',
+		charset			: 'લિંક રિસૉર્સ કૅરિક્ટર સેટ',
+		styles			: 'સ્ટાઇલ',
+		selectAnchor	: 'ઍંકર પસંદ કરો',
+		anchorName		: 'ઍંકર નામથી પસંદ કરો',
+		anchorId		: 'ઍંકર એલિમન્ટ Id થી પસંદ કરો',
+		emailAddress	: 'ઈ-મેલ સરનામું',
+		emailSubject	: 'ઈ-મેલ વિષય',
+		emailBody		: 'સંદેશ',
+		noAnchors		: '(ડૉક્યુમન્ટમાં ઍંકરની સંખ્યા)',
+		noUrl			: 'લિંક  URL ટાઇપ કરો',
+		noEmail			: 'ઈ-મેલ સરનામું ટાઇપ કરો'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'ઍંકર ઇન્સર્ટ/દાખલ કરવી',
+		menu		: 'ઍંકરના ગુણ',
+		title		: 'ઍંકરના ગુણ',
+		name		: 'ઍંકરનું નામ',
+		errorName	: 'ઍંકરનું નામ ટાઈપ કરો'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'શોધવું અને બદલવું',
+		find				: 'શોધવું',
+		replace				: 'રિપ્લેસ/બદલવું',
+		findWhat			: 'આ શોધો',
+		replaceWith			: 'આનાથી બદલો',
+		notFoundMsg			: 'તમે શોધેલી ટેક્સ્ટ નથી મળી',
+		matchCase			: 'કેસ સરખા રાખો',
+		matchWord			: 'બઘા શબ્દ સરખા રાખો',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'બઘા બદલી ',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'ટેબલ, કોઠો',
+		title		: 'ટેબલ, કોઠાનું મથાળું',
+		menu		: 'ટેબલ, કોઠાનું મથાળું',
+		deleteTable	: 'કોઠો ડિલીટ/કાઢી નાખવું',
+		rows		: 'પંક્તિના ખાના',
+		columns		: 'કૉલમ/ઊભી કટાર',
+		border		: 'કોઠાની બાજુ(બોર્ડર) સાઇઝ',
+		align		: 'અલાઇનમન્ટ/ગોઠવાયેલું ',
+		alignNotSet	: '<સેટ નથી>',
+		alignLeft	: 'ડાબી બાજુ',
+		alignCenter	: 'મધ્ય સેન્ટર',
+		alignRight	: 'જમણી બાજુ',
+		width		: 'પહોળાઈ',
+		widthPx		: 'પિકસલ',
+		widthPc		: 'પ્રતિશત',
+		height		: 'ઊંચાઈ',
+		cellSpace	: 'સેલ અંતર',
+		cellPad		: 'સેલ પૅડિંગ',
+		caption		: 'મથાળું/કૅપ્શન ',
+		summary		: 'ટૂંકો એહેવાલ',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'કોષના ખાના',
+			insertBefore	: 'પહેલાં કોષ ઉમેરવો',
+			insertAfter		: 'પછી કોષ ઉમેરવો',
+			deleteCell		: 'કોષ ડિલીટ/કાઢી નાખવો',
+			merge			: 'કોષ ભેગા કરવા',
+			mergeRight		: 'જમણી બાજુ ભેગા કરવા',
+			mergeDown		: 'નીચે ભેગા કરવા',
+			splitHorizontal	: 'કોષને સમસ્તરીય વિભાજન કરવું',
+			splitVertical	: 'કોષને સીધું ને ઊભું વિભાજન કરવું',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'પંક્તિના ખાના',
+			insertBefore	: 'પહેલાં પંક્તિ ઉમેરવી',
+			insertAfter		: 'પછી પંક્તિ ઉમેરવી',
+			deleteRow		: 'પંક્તિઓ ડિલીટ/કાઢી નાખવી'
+		},
+
+		column :
+		{
+			menu			: 'કૉલમ/ઊભી કટાર',
+			insertBefore	: 'પહેલાં કૉલમ/ઊભી કટાર ઉમેરવી',
+			insertAfter		: 'પછી કૉલમ/ઊભી કટાર ઉમેરવી',
+			deleteColumn	: 'કૉલમ/ઊભી કટાર ડિલીટ/કાઢી નાખવી'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'બટનના ગુણ',
+		text		: 'ટેક્સ્ટ (વૅલ્યૂ)',
+		type		: 'પ્રકાર',
+		typeBtn		: 'બટન',
+		typeSbm		: 'સબ્મિટ',
+		typeRst		: 'રિસેટ'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'ચેક બોક્સ ગુણ',
+		radioTitle	: 'રેડિઓ બટનના ગુણ',
+		value		: 'વૅલ્યૂ',
+		selected	: 'સિલેક્ટેડ'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'ફૉર્મ/પત્રકના ગુણ',
+		menu		: 'ફૉર્મ/પત્રકના ગુણ',
+		action		: 'ક્રિયા',
+		method		: 'પદ્ધતિ',
+		encoding	: 'Encoding', // MISSING
+		target		: 'ટાર્ગેટ/લક્ષ્ય',
+		targetNotSet	: '<સેટ નથી>',
+		targetNew	: 'નવી  વિન્ડો (_blank)',
+		targetTop	: 'ઉપરની વિન્ડો (_top)',
+		targetSelf	: 'આજ વિન્ડો (_self)',
+		targetParent	: 'મૂળ વિન્ડો (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'પસંદગી ક્ષેત્રના ગુણ',
+		selectInfo	: 'સૂચના',
+		opAvail		: 'ઉપલબ્ધ વિકલ્પ',
+		value		: 'વૅલ્યૂ',
+		size		: 'સાઇઝ',
+		lines		: 'લીટીઓ',
+		chkMulti	: 'એકથી વધારે પસંદ કરી શકો',
+		opText		: 'ટેક્સ્ટ',
+		opValue		: 'વૅલ્યૂ',
+		btnAdd		: 'ઉમેરવું',
+		btnModify	: 'બદલવું',
+		btnUp		: 'ઉપર',
+		btnDown		: 'નીચે',
+		btnSetValue : 'પસંદ કરલી વૅલ્યૂ સેટ કરો',
+		btnDelete	: 'રદ કરવું'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'ટેક્સ્ટ એઅરિઆ, શબ્દ વિસ્તારના ગુણ',
+		cols		: 'કૉલમ/ઊભી કટાર',
+		rows		: 'પંક્તિઓ'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'ટેક્સ્ટ ફીલ્ડ, શબ્દ ક્ષેત્રના ગુણ',
+		name		: 'નામ',
+		value		: 'વૅલ્યૂ',
+		charWidth	: 'કેરેક્ટરની પહોળાઈ',
+		maxChars	: 'અધિકતમ કેરેક્ટર',
+		type		: 'ટાઇપ',
+		typeText	: 'ટેક્સ્ટ',
+		typePass	: 'પાસવર્ડ'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'ગુપ્ત ક્ષેત્રના ગુણ',
+		name	: 'નામ',
+		value	: 'વૅલ્યૂ'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'ચિત્રના ગુણ',
+		titleButton	: 'ચિત્ર બટનના ગુણ',
+		menu		: 'ચિત્રના ગુણ',
+		infoTab	: 'ચિત્ર ની જાણકારી',
+		btnUpload	: 'આ સર્વરને મોકલવું',
+		url		: 'URL',
+		upload	: 'અપલોડ',
+		alt		: 'ઑલ્ટર્નટ ટેક્સ્ટ',
+		width		: 'પહોળાઈ',
+		height	: 'ઊંચાઈ',
+		lockRatio	: 'લૉક ગુણોત્તર',
+		resetSize	: 'રીસેટ સાઇઝ',
+		border	: 'બોર્ડર',
+		hSpace	: 'સમસ્તરીય જગ્યા',
+		vSpace	: 'લંબરૂપ જગ્યા',
+		align		: 'લાઇનદોરીમાં ગોઠવવું',
+		alignLeft	: 'ડાબી બાજુ ગોઠવવું',
+		alignAbsBottom: 'Abs નીચે',
+		alignAbsMiddle: 'Abs ઉપર',
+		alignBaseline	: 'આધાર લીટી',
+		alignBottom	: 'નીચે',
+		alignMiddle	: 'વચ્ચે',
+		alignRight	: 'જમણી',
+		alignTextTop	: 'ટેક્સ્ટ ઉપર',
+		alignTop	: 'ઉપર',
+		preview	: 'પૂર્વદર્શન',
+		alertUrl	: 'ચિત્રની URL ટાઇપ કરો',
+		linkTab	: 'લિંક',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'ફ્લૅશના ગુણ',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'ફ્લૅશ ગુણ',
+		chkPlay		: 'ઑટો/સ્વયં પ્લે',
+		chkLoop		: 'લૂપ',
+		chkMenu		: 'ફ્લૅશ મેન્યૂ નો પ્રયોગ કરો',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'સ્કેલ',
+		scaleAll		: 'સ્કેલ ઓલ/બધુ બતાવો',
+		scaleNoBorder	: 'સ્કેલ બોર્ડર વગર',
+		scaleFit		: 'સ્કેલ એકદમ ફીટ',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'લાઇનદોરીમાં ગોઠવવું',
+		alignLeft	: 'ડાબી બાજુ ગોઠવવું',
+		alignAbsBottom: 'Abs નીચે',
+		alignAbsMiddle: 'Abs ઉપર',
+		alignBaseline	: 'આધાર લીટી',
+		alignBottom	: 'નીચે',
+		alignMiddle	: 'વચ્ચે',
+		alignRight	: 'જમણી',
+		alignTextTop	: 'ટેક્સ્ટ ઉપર',
+		alignTop	: 'ઉપર',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'બૅકગ્રાઉન્ડ રંગ,',
+		width	: 'પહોળાઈ',
+		height	: 'ઊંચાઈ',
+		hSpace	: 'સમસ્તરીય જગ્યા',
+		vSpace	: 'લંબરૂપ જગ્યા',
+		validateSrc : 'લિંક  URL ટાઇપ કરો',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'જોડણી (સ્પેલિંગ) તપાસવી',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'શબ્દકોશમાં નથી',
+		changeTo		: 'આનાથી બદલવું',
+		btnIgnore		: 'ઇગ્નોર/અવગણના કરવી',
+		btnIgnoreAll	: 'બધાની ઇગ્નોર/અવગણના કરવી',
+		btnReplace		: 'બદલવું',
+		btnReplaceAll	: 'બધા બદલી કરો',
+		btnUndo			: 'અન્ડૂ',
+		noSuggestions	: '- કઇ સજેશન નથી -',
+		progress		: 'શબ્દની જોડણી/સ્પેલ ચેક ચાલુ છે...',
+		noMispell		: 'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: ખોટી જોડણી મળી નથી',
+		noChanges		: 'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એકપણ શબ્દ બદલયો નથી',
+		oneChange		: 'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એક શબ્દ બદલયો છે',
+		manyChanges		: 'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: %1 શબ્દ બદલયા છે',
+		ieSpellDownload	: 'સ્પેલ-ચેકર ઇન્સ્ટોલ નથી. શું તમે ડાઉનલોડ કરવા માંગો છો?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'સ્માઇલી',
+		title	: 'સ્માઇલી  પસંદ કરો'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'સંખ્યાંકન સૂચિ',
+	bulletedlist : 'બુલેટ સૂચિ',
+	indent : 'ઇન્ડેન્ટ, લીટીના આરંભમાં જગ્યા વધારવી',
+	outdent : 'ઇન્ડેન્ટ લીટીના આરંભમાં જગ્યા ઘટાડવી',
+
+	justify :
+	{
+		left : 'ડાબી બાજુએ/બાજુ તરફ',
+		center : 'સંકેંદ્રણ/સેંટરિંગ',
+		right : 'જમણી બાજુએ/બાજુ તરફ',
+		block : 'બ્લૉક, અંતરાય જસ્ટિફાઇ'
+	},
+
+	blockquote : 'બ્લૉક-કોટ, અવતરણચિહ્નો',
+
+	clipboard :
+	{
+		title		: 'પેસ્ટ',
+		cutError	: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl+X) નો ઉપયોગ કરો.',
+		copyError	: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી.  (Ctrl+C) का प्रयोग करें।',
+		pasteMsg	: 'Ctrl+V નો પ્રયોગ કરી પેસ્ટ કરો',
+		securityMsg	: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'પેસ્ટ (વડૅ ટેક્સ્ટ)',
+		title : 'પેસ્ટ (વડૅ ટેક્સ્ટ)',
+		advice : 'Ctrl+V નો પ્રયોગ કરી પેસ્ટ કરો',
+		ignoreFontFace : 'ફૉન્ટફેસ વ્યાખ્યાની અવગણના',
+		removeStyle : 'સ્ટાઇલ વ્યાખ્યા કાઢી નાખવી'
+	},
+
+	pasteText :
+	{
+		button : 'પેસ્ટ (ટેક્સ્ટ)',
+		title : 'પેસ્ટ (ટેક્સ્ટ)'
+	},
+
+	templates :
+	{
+		button : 'ટેમ્પ્લેટ',
+		title : 'કન્ટેન્ટ ટેમ્પ્લેટ',
+		insertOption: 'મૂળ શબ્દને બદલો',
+		selectPromptMsg: 'એડિટરમાં ઓપન કરવા ટેમ્પ્લેટ પસંદ કરો (વર્તમાન કન્ટેન્ટ સેવ નહીં થાય):',
+		emptyListMsg : '(કોઈ ટેમ્પ્લેટ ડિફાઇન નથી)'
+	},
+
+	showBlocks : 'બ્લૉક બતાવવું',
+
+	stylesCombo :
+	{
+		label : 'શૈલી/રીત',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'ફૉન્ટ ફૉર્મટ, રચનાની શૈલી',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'ફૉન્ટ ફૉર્મટ, રચનાની શૈલી',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'સામાન્ય',
+		tag_pre : 'ફૉર્મટેડ',
+		tag_address : 'સરનામું',
+		tag_h1 : 'શીર્ષક 1',
+		tag_h2 : 'શીર્ષક 2',
+		tag_h3 : 'શીર્ષક 3',
+		tag_h4 : 'શીર્ષક 4',
+		tag_h5 : 'શીર્ષક 5',
+		tag_h6 : 'શીર્ષક 6',
+		tag_div : 'શીર્ષક (DIV)'
+	},
+
+	font :
+	{
+		label : 'ફૉન્ટ',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'ફૉન્ટ',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'ફૉન્ટ સાઇઝ/કદ',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'ફૉન્ટ સાઇઝ/કદ',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'શબ્દનો રંગ',
+		bgColorTitle : 'બૅકગ્રાઉન્ડ રંગ,',
+		auto : 'સ્વચાલિત',
+		more : 'ઔર રંગ...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/hu.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/hu.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/hu.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Hungarian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['hu'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Forráskód',
+	newPage			: 'Új oldal',
+	save			: 'Mentés',
+	preview			: 'Előnézet',
+	cut				: 'Kivágás',
+	copy			: 'Másolás',
+	paste			: 'Beillesztés',
+	print			: 'Nyomtatás',
+	underline		: 'Aláhúzott',
+	bold			: 'Félkövér',
+	italic			: 'Dőlt',
+	selectAll		: 'Mindent kijelöl',
+	removeFormat	: 'Formázás eltávolítása',
+	strike			: 'Áthúzott',
+	subscript		: 'Alsó index',
+	superscript		: 'Felső index',
+	horizontalrule	: 'Elválasztóvonal beillesztése',
+	pagebreak		: 'Oldaltörés beillesztése',
+	unlink			: 'Hivatkozás törlése',
+	undo			: 'Visszavonás',
+	redo			: 'Ismétlés',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Böngészés a szerveren',
+		url				: 'Hivatkozás',
+		protocol		: 'Protokoll',
+		upload			: 'Feltöltés',
+		uploadSubmit	: 'Küldés a szerverre',
+		image			: 'Kép',
+		flash			: 'Flash',
+		form			: 'Űrlap',
+		checkbox		: 'Jelölőnégyzet',
+		radio		: 'Választógomb',
+		textField		: 'Szövegmező',
+		textarea		: 'Szövegterület',
+		hiddenField		: 'Rejtettmező',
+		button			: 'Gomb',
+		select	: 'Legördülő lista',
+		imageButton		: 'Képgomb',
+		notSet			: '<nincs beállítva>',
+		id				: 'Azonosító',
+		name			: 'Név',
+		langDir			: 'Írás iránya',
+		langDirLtr		: 'Balról jobbra',
+		langDirRtl		: 'Jobbról balra',
+		langCode		: 'Nyelv kódja',
+		longDescr		: 'Részletes leírás webcíme',
+		cssClass		: 'Stíluskészlet',
+		advisoryTitle	: 'Súgócimke',
+		cssStyle		: 'Stílus',
+		ok				: 'Rendben',
+		cancel			: 'Mégsem',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'További opciók',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Speciális karakter beillesztése',
+		title		: 'Speciális karakter választása'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Hivatkozás beillesztése/módosítása',
+		menu		: 'Hivatkozás módosítása',
+		title		: 'Hivatkozás tulajdonságai',
+		info		: 'Alaptulajdonságok',
+		target		: 'Tartalom megjelenítése',
+		upload		: 'Feltöltés',
+		advanced	: 'További opciók',
+		type		: 'Hivatkozás típusa',
+		toAnchor	: 'Horgony az oldalon',
+		toEmail		: 'E-Mail',
+		target		: 'Tartalom megjelenítése',
+		targetNotSet	: '<nincs beállítva>',
+		targetFrame	: '<keretben>',
+		targetPopup	: '<felugró ablakban>',
+		targetNew	: 'Új ablakban (_blank)',
+		targetTop	: 'Legfelső ablakban (_top)',
+		targetSelf	: 'Azonos ablakban (_self)',
+		targetParent	: 'Szülő ablakban (_parent)',
+		targetFrameName	: 'Keret neve',
+		targetPopupName	: 'Felugró ablak neve',
+		popupFeatures	: 'Felugró ablak jellemzői',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Állapotsor',
+		popupLocationBar	: 'Címsor',
+		popupToolbar	: 'Eszköztár',
+		popupMenuBar	: 'Menü sor',
+		popupFullScreen	: 'Teljes képernyő (csak IE)',
+		popupScrollBars	: 'Gördítősáv',
+		popupDependent	: 'Szülőhöz kapcsolt (csak Netscape)',
+		popupWidth		: 'Szélesség',
+		popupLeft		: 'Bal pozíció',
+		popupHeight		: 'Magasság',
+		popupTop		: 'Felső pozíció',
+		id				: 'Id', // MISSING
+		langDir			: 'Írás iránya',
+		langDirNotSet	: '<nincs beállítva>',
+		langDirLTR		: 'Balról jobbra',
+		langDirRTL		: 'Jobbról balra',
+		acccessKey		: 'Billentyűkombináció',
+		name			: 'Név',
+		langCode		: 'Írás iránya',
+		tabIndex		: 'Tabulátor index',
+		advisoryTitle	: 'Súgócimke',
+		advisoryContentType	: 'Súgó tartalomtípusa',
+		cssClasses		: 'Stíluskészlet',
+		charset			: 'Hivatkozott tartalom kódlapja',
+		styles			: 'Stílus',
+		selectAnchor	: 'Horgony választása',
+		anchorName		: 'Horgony név szerint',
+		anchorId		: 'Azonosító szerint',
+		emailAddress	: 'E-Mail cím',
+		emailSubject	: 'Üzenet tárgya',
+		emailBody		: 'Üzenet',
+		noAnchors		: '(Nincs horgony a dokumentumban)',
+		noUrl			: 'Adja meg a hivatkozás webcímét',
+		noEmail			: 'Adja meg az E-Mail címet'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Horgony beillesztése/szerkesztése',
+		menu		: 'Horgony tulajdonságai',
+		title		: 'Horgony tulajdonságai',
+		name		: 'Horgony neve',
+		errorName	: 'Kérem adja meg a horgony nevét'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Keresés és csere',
+		find				: 'Keresés',
+		replace				: 'Csere',
+		findWhat			: 'Keresett szöveg:',
+		replaceWith			: 'Csere erre:',
+		notFoundMsg			: 'A keresett szöveg nem található.',
+		matchCase			: 'kis- és nagybetű megkülönböztetése',
+		matchWord			: 'csak ha ez a teljes szó',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Az összes cseréje',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Táblázat',
+		title		: 'Táblázat tulajdonságai',
+		menu		: 'Táblázat tulajdonságai',
+		deleteTable	: 'Táblázat törlése',
+		rows		: 'Sorok',
+		columns		: 'Oszlopok',
+		border		: 'Szegélyméret',
+		align		: 'Igazítás',
+		alignNotSet	: '<Nincs beállítva>',
+		alignLeft	: 'Balra',
+		alignCenter	: 'Középre',
+		alignRight	: 'Jobbra',
+		width		: 'Szélesség',
+		widthPx		: 'képpont',
+		widthPc		: 'százalék',
+		height		: 'Magasság',
+		cellSpace	: 'Cella térköz',
+		cellPad		: 'Cella belső margó',
+		caption		: 'Felirat',
+		summary		: 'Leírás',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Cella',
+			insertBefore	: 'Cella beillesztése az aktuális cella elé',
+			insertAfter		: 'Cella beillesztése az aktuális cella mögé',
+			deleteCell		: 'Cellák törlése',
+			merge			: 'Cellák egyesítése',
+			mergeRight		: 'Cellák egyesítése jobbra',
+			mergeDown		: 'Cellák egyesítése lefelé',
+			splitHorizontal	: 'Cellák szétválasztása vízszintesen',
+			splitVertical	: 'Cellák szétválasztása függőlegesen',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Sor',
+			insertBefore	: 'Sor beillesztése az aktuális sor elé',
+			insertAfter		: 'Sor beillesztése az aktuális sor mögé',
+			deleteRow		: 'Sorok törlése'
+		},
+
+		column :
+		{
+			menu			: 'Oszlop',
+			insertBefore	: 'Oszlop beillesztése az aktuális oszlop elé',
+			insertAfter		: 'Oszlop beillesztése az aktuális oszlop mögé',
+			deleteColumn	: 'Oszlopok törlése'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Gomb tulajdonságai',
+		text		: 'Szöveg (Érték)',
+		type		: 'Típus',
+		typeBtn		: 'Gomb',
+		typeSbm		: 'Küldés',
+		typeRst		: 'Alaphelyzet'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Jelölőnégyzet tulajdonságai',
+		radioTitle	: 'Választógomb tulajdonságai',
+		value		: 'Érték',
+		selected	: 'Kiválasztott'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Űrlap tulajdonságai',
+		menu		: 'Űrlap tulajdonságai',
+		action		: 'Adatfeldolgozást végző hivatkozás',
+		method		: 'Adatküldés módja',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Tartalom megjelenítése',
+		targetNotSet	: '<nincs beállítva>',
+		targetNew	: 'Új ablakban (_blank)',
+		targetTop	: 'Legfelső ablakban (_top)',
+		targetSelf	: 'Azonos ablakban (_self)',
+		targetParent	: 'Szülő ablakban (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Legördülő lista tulajdonságai',
+		selectInfo	: 'Alaptulajdonságok',
+		opAvail		: 'Elérhető opciók',
+		value		: 'Érték',
+		size		: 'Méret',
+		lines		: 'sor',
+		chkMulti	: 'több sor is kiválasztható',
+		opText		: 'Szöveg',
+		opValue		: 'Érték',
+		btnAdd		: 'Hozzáad',
+		btnModify	: 'Módosít',
+		btnUp		: 'Fel',
+		btnDown		: 'Le',
+		btnSetValue : 'Legyen az alapértelmezett érték',
+		btnDelete	: 'Töröl'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Szövegterület tulajdonságai',
+		cols		: 'Karakterek száma egy sorban',
+		rows		: 'Sorok száma'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Szövegmező tulajdonságai',
+		name		: 'Név',
+		value		: 'Érték',
+		charWidth	: 'Megjelenített karakterek száma',
+		maxChars	: 'Maximális karakterszám',
+		type		: 'Típus',
+		typeText	: 'Szöveg',
+		typePass	: 'Jelszó'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Rejtett mező tulajdonságai',
+		name	: 'Név',
+		value	: 'Érték'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Kép tulajdonságai',
+		titleButton	: 'Képgomb tulajdonságai',
+		menu		: 'Kép tulajdonságai',
+		infoTab	: 'Alaptulajdonságok',
+		btnUpload	: 'Küldés a szerverre',
+		url		: 'Hivatkozás',
+		upload	: 'Feltöltés',
+		alt		: 'Buborék szöveg',
+		width		: 'Szélesség',
+		height	: 'Magasság',
+		lockRatio	: 'Arány megtartása',
+		resetSize	: 'Eredeti méret',
+		border	: 'Keret',
+		hSpace	: 'Vízsz. táv',
+		vSpace	: 'Függ. táv',
+		align		: 'Igazítás',
+		alignLeft	: 'Bal',
+		alignAbsBottom: 'Legaljára',
+		alignAbsMiddle: 'Közepére',
+		alignBaseline	: 'Alapvonalhoz',
+		alignBottom	: 'Aljára',
+		alignMiddle	: 'Középre',
+		alignRight	: 'Jobbra',
+		alignTextTop	: 'Szöveg tetejére',
+		alignTop	: 'Tetejére',
+		preview	: 'Előnézet',
+		alertUrl	: 'Töltse ki a kép webcímét',
+		linkTab	: 'Hivatkozás',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash tulajdonságai',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flash tulajdonságai',
+		chkPlay		: 'Automata lejátszás',
+		chkLoop		: 'Folyamatosan',
+		chkMenu		: 'Flash menü engedélyezése',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Méretezés',
+		scaleAll		: 'Mindent mutat',
+		scaleNoBorder	: 'Keret nélkül',
+		scaleFit		: 'Teljes kitöltés',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Igazítás',
+		alignLeft	: 'Bal',
+		alignAbsBottom: 'Legaljára',
+		alignAbsMiddle: 'Közepére',
+		alignBaseline	: 'Alapvonalhoz',
+		alignBottom	: 'Aljára',
+		alignMiddle	: 'Középre',
+		alignRight	: 'Jobbra',
+		alignTextTop	: 'Szöveg tetejére',
+		alignTop	: 'Tetejére',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Háttérszín',
+		width	: 'Szélesség',
+		height	: 'Magasság',
+		hSpace	: 'Vízsz. táv',
+		vSpace	: 'Függ. táv',
+		validateSrc : 'Adja meg a hivatkozás webcímét',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Helyesírás-ellenőrzés',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Nincs a szótárban',
+		changeTo		: 'Módosítás',
+		btnIgnore		: 'Kihagyja',
+		btnIgnoreAll	: 'Mindet kihagyja',
+		btnReplace		: 'Csere',
+		btnReplaceAll	: 'Összes cseréje',
+		btnUndo			: 'Visszavonás',
+		noSuggestions	: 'Nincs javaslat',
+		progress		: 'Helyesírás-ellenőrzés folyamatban...',
+		noMispell		: 'Helyesírás-ellenőrzés kész: Nem találtam hibát',
+		noChanges		: 'Helyesírás-ellenőrzés kész: Nincs változtatott szó',
+		oneChange		: 'Helyesírás-ellenőrzés kész: Egy szó cserélve',
+		manyChanges		: 'Helyesírás-ellenőrzés kész: %1 szó cserélve',
+		ieSpellDownload	: 'A helyesírás-ellenőrző nincs telepítve. Szeretné letölteni most?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Hangulatjelek',
+		title	: 'Hangulatjel beszúrása'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Számozás',
+	bulletedlist : 'Felsorolás',
+	indent : 'Behúzás növelése',
+	outdent : 'Behúzás csökkentése',
+
+	justify :
+	{
+		left : 'Balra',
+		center : 'Középre',
+		right : 'Jobbra',
+		block : 'Sorkizárt'
+	},
+
+	blockquote : 'Idézet blokk',
+
+	clipboard :
+	{
+		title		: 'Beillesztés',
+		cutError	: 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).',
+		copyError	: 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).',
+		pasteMsg	: 'Másolja be az alábbi mezőbe a <STRONG>Ctrl+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.',
+		securityMsg	: 'A böngésző biztonsági beállításai miatt a szerkesztő nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Beillesztés Word-ből',
+		title : 'Beillesztés Word-ből',
+		advice : 'Másolja be az alábbi mezőbe a <STRONG>Ctrl+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.',
+		ignoreFontFace : 'Betű formázások megszüntetése',
+		removeStyle : 'Stílusok eltávolítása'
+	},
+
+	pasteText :
+	{
+		button : 'Beillesztés formázatlan szövegként',
+		title : 'Beillesztés formázatlan szövegként'
+	},
+
+	templates :
+	{
+		button : 'Sablonok',
+		title : 'Elérhető sablonok',
+		insertOption: 'Kicseréli a jelenlegi tartalmat',
+		selectPromptMsg: 'Válassza ki melyik sablon nyíljon meg a szerkesztőben<br>(a jelenlegi tartalom elveszik):',
+		emptyListMsg : '(Nincs sablon megadva)'
+	},
+
+	showBlocks : 'Blokkok megjelenítése',
+
+	stylesCombo :
+	{
+		label : 'Stílus',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Formátum',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Formátum',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normál',
+		tag_pre : 'Formázott',
+		tag_address : 'Címsor',
+		tag_h1 : 'Fejléc 1',
+		tag_h2 : 'Fejléc 2',
+		tag_h3 : 'Fejléc 3',
+		tag_h4 : 'Fejléc 4',
+		tag_h5 : 'Fejléc 5',
+		tag_h6 : 'Fejléc 6',
+		tag_div : 'Bekezdés (DIV)'
+	},
+
+	font :
+	{
+		label : 'Betűtípus',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Betűtípus',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Méret',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Méret',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Betűszín',
+		bgColorTitle : 'Háttérszín',
+		auto : 'Automatikus',
+		more : 'További színek...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/no.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/no.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/no.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Norwegian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['no'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Kilde',
+	newPage			: 'Ny Side',
+	save			: 'Lagre',
+	preview			: 'Forhåndsvis',
+	cut				: 'Klipp ut',
+	copy			: 'Kopier',
+	paste			: 'Lim inn',
+	print			: 'Skriv ut',
+	underline		: 'Understrek',
+	bold			: 'Fet',
+	italic			: 'Kursiv',
+	selectAll		: 'Merk alt',
+	removeFormat	: 'Fjern format',
+	strike			: 'Gjennomstrek',
+	subscript		: 'Senket skrift',
+	superscript		: 'Hevet skrift',
+	horizontalrule	: 'Sett inn horisontal linje',
+	pagebreak		: 'Sett inn sideskift',
+	unlink			: 'Fjern lenke',
+	undo			: 'Angre',
+	redo			: 'Gjør om',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Bla igjennom server',
+		url				: 'URL',
+		protocol		: 'Protokoll',
+		upload			: 'Last opp',
+		uploadSubmit	: 'Send det til serveren',
+		image			: 'Bilde',
+		flash			: 'Flash',
+		form			: 'Skjema',
+		checkbox		: 'Avmerkingsboks',
+		radio		: 'Alternativknapp',
+		textField		: 'Tekstboks',
+		textarea		: 'Tekstområde',
+		hiddenField		: 'Skjult felt',
+		button			: 'Knapp',
+		select	: 'Rullegardinliste',
+		imageButton		: 'Bildeknapp',
+		notSet			: '<ikke satt>',
+		id				: 'Id',
+		name			: 'Navn',
+		langDir			: 'Språkretning',
+		langDirLtr		: 'Venstre til høyre (VTH)',
+		langDirRtl		: 'Høyre til venstre (HTV)',
+		langCode		: 'Språkkode',
+		longDescr		: 'Utvidet beskrivelse',
+		cssClass		: 'Stilarkklasser',
+		advisoryTitle	: 'Tittel',
+		cssStyle		: 'Stil',
+		ok				: 'OK',
+		cancel			: 'Avbryt',
+		generalTab		: 'Generelt',
+		advancedTab		: 'Avansert',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Sett inn spesielt tegn',
+		title		: 'Velg spesielt tegn'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Sett inn/Rediger lenke',
+		menu		: 'Rediger lenke',
+		title		: 'Lenke',
+		info		: 'Lenkeinfo',
+		target		: 'Mål',
+		upload		: 'Last opp',
+		advanced	: 'Avansert',
+		type		: 'Lenketype',
+		toAnchor	: 'Lenke til anker i teksten',
+		toEmail		: 'E-post',
+		target		: 'Mål',
+		targetNotSet	: '<ikke satt>',
+		targetFrame	: '<ramme>',
+		targetPopup	: '<popup vindu>',
+		targetNew	: 'Nytt vindu (_blank)',
+		targetTop	: 'Hele vindu (_top)',
+		targetSelf	: 'Samme vindu (_self)',
+		targetParent	: 'Foreldrevindu (_parent)',
+		targetFrameName	: 'Målramme',
+		targetPopupName	: 'Navn på popup-vindus',
+		popupFeatures	: 'Egenskaper for popup-vindu',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Statuslinje',
+		popupLocationBar	: 'Adresselinje',
+		popupToolbar	: 'Verktøylinje',
+		popupMenuBar	: 'Menylinje',
+		popupFullScreen	: 'Full skjerm (IE)',
+		popupScrollBars	: 'Scrollbar',
+		popupDependent	: 'Avhenging (Netscape)',
+		popupWidth		: 'Bredde',
+		popupLeft		: 'Venstre posisjon',
+		popupHeight		: 'Høyde',
+		popupTop		: 'Topp-posisjon',
+		id				: 'Id', // MISSING
+		langDir			: 'Språkretning',
+		langDirNotSet	: '<ikke satt>',
+		langDirLTR		: 'Venstre til høyre (VTH)',
+		langDirRTL		: 'Høyre til venstre (HTV)',
+		acccessKey		: 'Aksessknapp',
+		name			: 'Navn',
+		langCode		: 'Språkretning',
+		tabIndex		: 'Tab Indeks',
+		advisoryTitle	: 'Tittel',
+		advisoryContentType	: 'Type',
+		cssClasses		: 'Stilarkklasser',
+		charset			: 'Lenket språkkart',
+		styles			: 'Stil',
+		selectAnchor	: 'Velg et anker',
+		anchorName		: 'Anker etter navn',
+		anchorId		: 'Element etter ID',
+		emailAddress	: 'E-postadresse',
+		emailSubject	: 'Meldingsemne',
+		emailBody		: 'Melding',
+		noAnchors		: '(Ingen anker i dokumentet)',
+		noUrl			: 'Vennligst skriv inn lenkens url',
+		noEmail			: 'Vennligst skriv inn e-postadressen'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Sett inn/Rediger anker',
+		menu		: 'Egenskaper for anker',
+		title		: 'Egenskaper for anker',
+		name		: 'Ankernavn',
+		errorName	: 'Vennligst skriv inn ankernavnet'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Søk og erstatt',
+		find				: 'Søk',
+		replace				: 'Erstatt',
+		findWhat			: 'Søk etter:',
+		replaceWith			: 'Erstatt med:',
+		notFoundMsg			: 'Fant ikke søketeksten.',
+		matchCase			: 'Skill mellom store og små bokstaver',
+		matchWord			: 'Bare hele ord',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Erstatt alle',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabell',
+		title		: 'Egenskaper for tabell',
+		menu		: 'Egenskaper for tabell',
+		deleteTable	: 'Slett tabell',
+		rows		: 'Rader',
+		columns		: 'Kolonner',
+		border		: 'Rammestørrelse',
+		align		: 'Justering',
+		alignNotSet	: '<Ikke satt>',
+		alignLeft	: 'Venstre',
+		alignCenter	: 'Midtjuster',
+		alignRight	: 'Høyre',
+		width		: 'Bredde',
+		widthPx		: 'piksler',
+		widthPc		: 'prosent',
+		height		: 'Høyde',
+		cellSpace	: 'Cellemarg',
+		cellPad		: 'Cellepolstring',
+		caption		: 'Tittel',
+		summary		: 'Sammendrag',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Celle',
+			insertBefore	: 'Sett inn celle før',
+			insertAfter		: 'Sett inn celle etter',
+			deleteCell		: 'Slett celler',
+			merge			: 'Slå sammen celler',
+			mergeRight		: 'Slå sammen høyre',
+			mergeDown		: 'Slå sammen ned',
+			splitHorizontal	: 'Del celle horisontalt',
+			splitVertical	: 'Del celle vertikalt',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Rader',
+			insertBefore	: 'Sett inn rad før',
+			insertAfter		: 'Sett inn rad etter',
+			deleteRow		: 'Slett rader'
+		},
+
+		column :
+		{
+			menu			: 'Kolonne',
+			insertBefore	: 'Sett inn kolonne før',
+			insertAfter		: 'Sett inn kolonne etter',
+			deleteColumn	: 'Slett kolonner'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Egenskaper for knapp',
+		text		: 'Tekst (verdi)',
+		type		: 'Type',
+		typeBtn		: 'Knapp',
+		typeSbm		: 'Send',
+		typeRst		: 'Nullstill'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Egenskaper for avmerkingsboks',
+		radioTitle	: 'Egenskaper for alternativknapp',
+		value		: 'Verdi',
+		selected	: 'Valgt'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Egenskaper for skjema',
+		menu		: 'Egenskaper for skjema',
+		action		: 'Handling',
+		method		: 'Metode',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Mål',
+		targetNotSet	: '<ikke satt>',
+		targetNew	: 'Nytt vindu (_blank)',
+		targetTop	: 'Hele vindu (_top)',
+		targetSelf	: 'Samme vindu (_self)',
+		targetParent	: 'Foreldrevindu (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Egenskaper for rullegardinliste',
+		selectInfo	: 'Info',
+		opAvail		: 'Tilgjenglige alternativer',
+		value		: 'Verdi',
+		size		: 'Størrelse',
+		lines		: 'Linjer',
+		chkMulti	: 'Tillat flervalg',
+		opText		: 'Tekst',
+		opValue		: 'Verdi',
+		btnAdd		: 'Legg til',
+		btnModify	: 'Endre',
+		btnUp		: 'Opp',
+		btnDown		: 'Ned',
+		btnSetValue : 'Sett som valgt',
+		btnDelete	: 'Slett'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Egenskaper for tekstområde',
+		cols		: 'Kolonner',
+		rows		: 'Rader'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Egenskaper for tekstfelt',
+		name		: 'Navn',
+		value		: 'Verdi',
+		charWidth	: 'Tegnbredde',
+		maxChars	: 'Maks antall tegn',
+		type		: 'Type',
+		typeText	: 'Tekst',
+		typePass	: 'Passord'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Egenskaper for skjult felt',
+		name	: 'Navn',
+		value	: 'Verdi'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Bildeegenskaper',
+		titleButton	: 'Egenskaper for bildeknapp',
+		menu		: 'Bildeegenskaper',
+		infoTab	: 'Bildeinformasjon',
+		btnUpload	: 'Send det til serveren',
+		url		: 'URL',
+		upload	: 'Last opp',
+		alt		: 'Alternativ tekst',
+		width		: 'Bredde',
+		height	: 'Høyde',
+		lockRatio	: 'Lås forhold',
+		resetSize	: 'Tilbakestill størrelse',
+		border	: 'Ramme',
+		hSpace	: 'HMarg',
+		vSpace	: 'VMarg',
+		align		: 'Juster',
+		alignLeft	: 'Venstre',
+		alignAbsBottom: 'Abs bunn',
+		alignAbsMiddle: 'Abs midten',
+		alignBaseline	: 'Bunnlinje',
+		alignBottom	: 'Bunn',
+		alignMiddle	: 'Midten',
+		alignRight	: 'Høyre',
+		alignTextTop	: 'Tekst topp',
+		alignTop	: 'Topp',
+		preview	: 'Forhåndsvis',
+		alertUrl	: 'Vennligst skriv bilde-urlen',
+		linkTab	: 'Lenke',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Egenskaper for Flash-objekt',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flash-egenskaper',
+		chkPlay		: 'Autospill',
+		chkLoop		: 'Loop',
+		chkMenu		: 'Slå på Flash-meny',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Skaler',
+		scaleAll		: 'Vis alt',
+		scaleNoBorder	: 'Ingen ramme',
+		scaleFit		: 'Skaler til å passe',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Juster',
+		alignLeft	: 'Venstre',
+		alignAbsBottom: 'Abs bunn',
+		alignAbsMiddle: 'Abs midten',
+		alignBaseline	: 'Bunnlinje',
+		alignBottom	: 'Bunn',
+		alignMiddle	: 'Midten',
+		alignRight	: 'Høyre',
+		alignTextTop	: 'Tekst topp',
+		alignTop	: 'Topp',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Bakgrunnsfarge',
+		width	: 'Bredde',
+		height	: 'Høyde',
+		hSpace	: 'HMarg',
+		vSpace	: 'VMarg',
+		validateSrc : 'Vennligst skriv inn lenkens url',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Stavekontroll',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Ikke i ordboken',
+		changeTo		: 'Endre til',
+		btnIgnore		: 'Ignorer',
+		btnIgnoreAll	: 'Ignorer alle',
+		btnReplace		: 'Erstatt',
+		btnReplaceAll	: 'Erstatt alle',
+		btnUndo			: 'Angre',
+		noSuggestions	: '- Ingen forslag -',
+		progress		: 'Stavekontroll pågår...',
+		noMispell		: 'Stavekontroll fullført: ingen feilstavinger funnet',
+		noChanges		: 'Stavekontroll fullført: ingen ord endret',
+		oneChange		: 'Stavekontroll fullført: Ett ord endret',
+		manyChanges		: 'Stavekontroll fullført: %1 ord endret',
+		ieSpellDownload	: 'Stavekontroll er ikke installert. Vil du laste den ned nå?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smil',
+		title	: 'Sett inn smil'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Nummerert liste',
+	bulletedlist : 'Uordnet liste',
+	indent : 'Øk nivå',
+	outdent : 'Senk nivå',
+
+	justify :
+	{
+		left : 'Venstrejuster',
+		center : 'Midtjuster',
+		right : 'Høyrejuster',
+		block : 'Blokkjuster'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Lim inn',
+		cutError	: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).',
+		copyError	: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).',
+		pasteMsg	: 'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',
+		securityMsg	: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Lim inn fra Word',
+		title : 'Lim inn fra Word',
+		advice : 'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Fjern skrifttyper',
+		removeStyle : 'Fjern stildefinisjoner'
+	},
+
+	pasteText :
+	{
+		button : 'Lim inn som ren tekst',
+		title : 'Lim inn som ren tekst'
+	},
+
+	templates :
+	{
+		button : 'Maler',
+		title : 'Innholdsmaler',
+		insertOption: 'Erstatt faktisk innold',
+		selectPromptMsg: 'Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):',
+		emptyListMsg : '(Ingen maler definert)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Stil',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Format',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatert',
+		tag_address : 'Adresse',
+		tag_h1 : 'Tittel 1',
+		tag_h2 : 'Tittel 2',
+		tag_h3 : 'Tittel 3',
+		tag_h4 : 'Tittel 4',
+		tag_h5 : 'Tittel 5',
+		tag_h6 : 'Tittel 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Skrift',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Skrift',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Størrelse',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Størrelse',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Tekstfarge',
+		bgColorTitle : 'Bakgrunnsfarge',
+		auto : 'Automatisk',
+		more : 'Flere farger...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/sk.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/sk.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/sk.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Slovak language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['sk'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Zdroj',
+	newPage			: 'Nová stránka',
+	save			: 'Uložiť',
+	preview			: 'Náhľad',
+	cut				: 'Vystrihnúť',
+	copy			: 'Kopírovať',
+	paste			: 'Vložiť',
+	print			: 'Tlač',
+	underline		: 'Podčiarknuté',
+	bold			: 'Tučné',
+	italic			: 'Kurzíva',
+	selectAll		: 'Vybrať všetko',
+	removeFormat	: 'Odstrániť formátovanie',
+	strike			: 'Prečiarknuté',
+	subscript		: 'Dolný index',
+	superscript		: 'Horný index',
+	horizontalrule	: 'Vložiť vodorovnú čiaru',
+	pagebreak		: 'Vložiť oddeľovač stránky',
+	unlink			: 'Odstrániť odkaz',
+	undo			: 'Späť',
+	redo			: 'Znovu',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Prechádzať server',
+		url				: 'URL',
+		protocol		: 'Protokol',
+		upload			: 'Odoslať',
+		uploadSubmit	: 'Odoslať na server',
+		image			: 'Obrázok',
+		flash			: 'Flash',
+		form			: 'Formulár',
+		checkbox		: 'Zaškrtávacie políčko',
+		radio		: 'Prepínač',
+		textField		: 'Textové pole',
+		textarea		: 'Textová oblasť',
+		hiddenField		: 'Skryté pole',
+		button			: 'Tlačidlo',
+		select	: 'Rozbaľovací zoznam',
+		imageButton		: 'Obrázkové tlačidlo',
+		notSet			: '<nenastavené>',
+		id				: 'Id',
+		name			: 'Meno',
+		langDir			: 'Orientácia jazyka',
+		langDirLtr		: 'Zľava doprava (LTR)',
+		langDirRtl		: 'Sprava doľava (RTL)',
+		langCode		: 'Kód jazyka',
+		longDescr		: 'Dlhý popis URL',
+		cssClass		: 'Trieda štýlu',
+		advisoryTitle	: 'Pomocný titulok',
+		cssStyle		: 'Štýl',
+		ok				: 'OK',
+		cancel			: 'Zrušiť',
+		generalTab		: 'Hlavné',
+		advancedTab		: 'Rozšírené',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Vložiť špeciálne znaky',
+		title		: 'Výber špeciálneho znaku'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Vložiť/zmeniť odkaz',
+		menu		: 'Zmeniť odkaz',
+		title		: 'Odkaz',
+		info		: 'Informácie o odkaze',
+		target		: 'Cieľ',
+		upload		: 'Odoslať',
+		advanced	: 'Rozšírené',
+		type		: 'Typ odkazu',
+		toAnchor	: 'Kotva v tejto stránke',
+		toEmail		: 'E-Mail',
+		target		: 'Cieľ',
+		targetNotSet	: '<nenastavené>',
+		targetFrame	: '<rámec>',
+		targetPopup	: '<vyskakovacie okno>',
+		targetNew	: 'Nové okno (_blank)',
+		targetTop	: 'Hlavné okno (_top)',
+		targetSelf	: 'Rovnaké okno (_self)',
+		targetParent	: 'Rodičovské okno (_parent)',
+		targetFrameName	: 'Meno rámu cieľa',
+		targetPopupName	: 'Názov vyskakovacieho okna',
+		popupFeatures	: 'Vlastnosti vyskakovacieho okna',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Stavový riadok',
+		popupLocationBar	: 'Panel umiestnenia',
+		popupToolbar	: 'Panel nástrojov',
+		popupMenuBar	: 'Panel ponuky',
+		popupFullScreen	: 'Celá obrazovka (IE)',
+		popupScrollBars	: 'Posuvníky',
+		popupDependent	: 'Závislosť (Netscape)',
+		popupWidth		: 'Šírka',
+		popupLeft		: 'Ľavý okraj',
+		popupHeight		: 'Výška',
+		popupTop		: 'Horný okraj',
+		id				: 'Id', // MISSING
+		langDir			: 'Orientácia jazyka',
+		langDirNotSet	: '<nenastavené>',
+		langDirLTR		: 'Zľava doprava (LTR)',
+		langDirRTL		: 'Sprava doľava (RTL)',
+		acccessKey		: 'Prístupový kľúč',
+		name			: 'Meno',
+		langCode		: 'Orientácia jazyka',
+		tabIndex		: 'Poradie prvku',
+		advisoryTitle	: 'Pomocný titulok',
+		advisoryContentType	: 'Pomocný typ obsahu',
+		cssClasses		: 'Trieda štýlu',
+		charset			: 'Priradená znaková sada',
+		styles			: 'Štýl',
+		selectAnchor	: 'Vybrať kotvu',
+		anchorName		: 'Podľa mena kotvy',
+		anchorId		: 'Podľa Id objektu',
+		emailAddress	: 'E-Mailová adresa',
+		emailSubject	: 'Predmet správy',
+		emailBody		: 'Telo správy',
+		noAnchors		: '(V stránke nie je definovaná žiadna kotva)',
+		noUrl			: 'Zadajte prosím URL odkazu',
+		noEmail			: 'Zadajte prosím e-mailovú adresu'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Vložiť/zmeniť kotvu',
+		menu		: 'Vlastnosti kotvy',
+		title		: 'Vlastnosti kotvy',
+		name		: 'Meno kotvy',
+		errorName	: 'Zadajte prosím meno kotvy'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Nájsť a nahradiť',
+		find				: 'Hľadať',
+		replace				: 'Nahradiť',
+		findWhat			: 'Čo hľadať:',
+		replaceWith			: 'Čím nahradiť:',
+		notFoundMsg			: 'Hľadaný text nebol nájdený.',
+		matchCase			: 'Rozlišovať malé/veľké písmená',
+		matchWord			: 'Len celé slová',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Nahradiť všetko',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabuľka',
+		title		: 'Vlastnosti tabuľky',
+		menu		: 'Vlastnosti tabuľky',
+		deleteTable	: 'Vymazať tabuľku',
+		rows		: 'Riadky',
+		columns		: 'Stĺpce',
+		border		: 'Ohraničenie',
+		align		: 'Zarovnanie',
+		alignNotSet	: '<nenastavené>',
+		alignLeft	: 'Vľavo',
+		alignCenter	: 'Na stred',
+		alignRight	: 'Vpravo',
+		width		: 'Šírka',
+		widthPx		: 'pixelov',
+		widthPc		: 'percent',
+		height		: 'Výška',
+		cellSpace	: 'Vzdialenosť buniek',
+		cellPad		: 'Odsadenie obsahu',
+		caption		: 'Popis',
+		summary		: 'Prehľad',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Bunka',
+			insertBefore	: 'Vložiť bunku pred',
+			insertAfter		: 'Vložiť bunku za',
+			deleteCell		: 'Vymazať bunky',
+			merge			: 'Zlúčiť bunky',
+			mergeRight		: 'Zlúčiť doprava',
+			mergeDown		: 'Zlúčiť dole',
+			splitHorizontal	: 'Rozdeliť bunky horizontálne',
+			splitVertical	: 'Rozdeliť bunky vertikálne',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Riadok',
+			insertBefore	: 'Vložiť riadok za',
+			insertAfter		: 'Vložiť riadok pred',
+			deleteRow		: 'Vymazať riadok'
+		},
+
+		column :
+		{
+			menu			: 'Stĺpec',
+			insertBefore	: 'Vložiť stĺpec za',
+			insertAfter		: 'Vložiť stĺpec pred',
+			deleteColumn	: 'Zmazať stĺpec'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Vlastnosti tlačidla',
+		text		: 'Text',
+		type		: 'Typ',
+		typeBtn		: 'Tlačidlo',
+		typeSbm		: 'Odoslať',
+		typeRst		: 'Vymazať'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Vlastnosti zaškrtávacieho políčka',
+		radioTitle	: 'Vlastnosti prepínača',
+		value		: 'Hodnota',
+		selected	: 'Vybrané'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Vlastnosti formulára',
+		menu		: 'Vlastnosti formulára',
+		action		: 'Akcie',
+		method		: 'Metóda',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Cieľ',
+		targetNotSet	: '<nenastavené>',
+		targetNew	: 'Nové okno (_blank)',
+		targetTop	: 'Hlavné okno (_top)',
+		targetSelf	: 'Rovnaké okno (_self)',
+		targetParent	: 'Rodičovské okno (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Vlastnosti rozbaľovacieho zoznamu',
+		selectInfo	: 'Info',
+		opAvail		: 'Dostupné možnosti',
+		value		: 'Hodnota',
+		size		: 'Veľkosť',
+		lines		: 'riadkov',
+		chkMulti	: 'Povoliť viacnásobný výber',
+		opText		: 'Text',
+		opValue		: 'Hodnota',
+		btnAdd		: 'Pridať',
+		btnModify	: 'Zmeniť',
+		btnUp		: 'Hore',
+		btnDown		: 'Dole',
+		btnSetValue : 'Nastaviť ako vybranú hodnotu',
+		btnDelete	: 'Zmazať'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Vlastnosti textovej oblasti',
+		cols		: 'Stĺpce',
+		rows		: 'Riadky'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Vlastnosti textového poľa',
+		name		: 'Názov',
+		value		: 'Hodnota',
+		charWidth	: 'Šírka pola (znakov)',
+		maxChars	: 'Maximálny počet znakov',
+		type		: 'Typ',
+		typeText	: 'Text',
+		typePass	: 'Heslo'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Vlastnosti skrytého poľa',
+		name	: 'Názov',
+		value	: 'Hodnota'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Vlastnosti obrázku',
+		titleButton	: 'Vlastnosti obrázkového tlačidla',
+		menu		: 'Vlastnosti obrázku',
+		infoTab	: 'Informácie o obrázku',
+		btnUpload	: 'Odoslať na server',
+		url		: 'URL',
+		upload	: 'Odoslať',
+		alt		: 'Alternatívny text',
+		width		: 'Šírka',
+		height	: 'Výška',
+		lockRatio	: 'Zámok',
+		resetSize	: 'Pôvodná veľkosť',
+		border	: 'Okraje',
+		hSpace	: 'H-medzera',
+		vSpace	: 'V-medzera',
+		align		: 'Zarovnanie',
+		alignLeft	: 'Vľavo',
+		alignAbsBottom: 'Úplne dole',
+		alignAbsMiddle: 'Do stredu',
+		alignBaseline	: 'Na základňu',
+		alignBottom	: 'Dole',
+		alignMiddle	: 'Na stred',
+		alignRight	: 'Vpravo',
+		alignTextTop	: 'Na horný okraj textu',
+		alignTop	: 'Nahor',
+		preview	: 'Náhľad',
+		alertUrl	: 'Zadajte prosím URL obrázku',
+		linkTab	: 'Odkaz',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Vlastnosti Flashu',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Vlastnosti Flashu',
+		chkPlay		: 'Automatické prehrávanie',
+		chkLoop		: 'Opakovanie',
+		chkMenu		: 'Povoliť Flash Menu',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Mierka',
+		scaleAll		: 'Zobraziť mierku',
+		scaleNoBorder	: 'Bez okrajov',
+		scaleFit		: 'Roztiahnuť na celé',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Zarovnanie',
+		alignLeft	: 'Vľavo',
+		alignAbsBottom: 'Úplne dole',
+		alignAbsMiddle: 'Do stredu',
+		alignBaseline	: 'Na základňu',
+		alignBottom	: 'Dole',
+		alignMiddle	: 'Na stred',
+		alignRight	: 'Vpravo',
+		alignTextTop	: 'Na horný okraj textu',
+		alignTop	: 'Nahor',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Farba pozadia',
+		width	: 'Šírka',
+		height	: 'Výška',
+		hSpace	: 'H-medzera',
+		vSpace	: 'V-medzera',
+		validateSrc : 'Zadajte prosím URL odkazu',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Kontrola pravopisu',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Nie je v slovníku',
+		changeTo		: 'Zmeniť na',
+		btnIgnore		: 'Ignorovať',
+		btnIgnoreAll	: 'Ignorovať všetko',
+		btnReplace		: 'Prepísat',
+		btnReplaceAll	: 'Prepísat všetko',
+		btnUndo			: 'Späť',
+		noSuggestions	: '- Žiadny návrh -',
+		progress		: 'Prebieha kontrola pravopisu...',
+		noMispell		: 'Kontrola pravopisu dokončená: bez chýb',
+		noChanges		: 'Kontrola pravopisu dokončená: žiadne slová nezmenené',
+		oneChange		: 'Kontrola pravopisu dokončená: zmenené jedno slovo',
+		manyChanges		: 'Kontrola pravopisu dokončená: zmenených %1 slov',
+		ieSpellDownload	: 'Kontrola pravopisu nie je naištalovaná. Chcete ju hneď stiahnuť?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smajlíky',
+		title	: 'Vkladanie smajlíkov'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Číslovanie',
+	bulletedlist : 'Odrážky',
+	indent : 'Zväčšiť odsadenie',
+	outdent : 'Zmenšiť odsadenie',
+
+	justify :
+	{
+		left : 'Zarovnať vľavo',
+		center : 'Zarovnať na stred',
+		right : 'Zarovnať vpravo',
+		block : 'Zarovnať do bloku'
+	},
+
+	blockquote : 'Citácia',
+
+	clipboard :
+	{
+		title		: 'Vložiť',
+		cutError	: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre vystrihnutie zvoleného textu do schránky. Prosím vystrihnite zvolený text do schránky pomocou klávesnice (Ctrl+X).',
+		copyError	: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre kopírovanie zvoleného textu do schránky. Prosím skopírujte zvolený text do schránky pomocou klávesnice (Ctrl+C).',
+		pasteMsg	: 'Prosím vložte nasledovný rámček použitím klávesnice (<STRONG>Ctrl+V</STRONG>) a stlačte <STRONG>OK</STRONG>.',
+		securityMsg	: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru pristupovať priamo k datám v schránke. Musíte ich vložiť znovu do tohto okna.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Vložiť z Wordu',
+		title : 'Vložiť z Wordu',
+		advice : 'Prosím vložte nasledovný rámček použitím klávesnice (<STRONG>Ctrl+V</STRONG>) a stlačte <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignorovať nastavenia typu písma',
+		removeStyle : 'Odstrániť formátovanie'
+	},
+
+	pasteText :
+	{
+		button : 'Vložiť ako čistý text',
+		title : 'Vložiť ako čistý text'
+	},
+
+	templates :
+	{
+		button : 'Šablóny',
+		title : 'Šablóny obsahu',
+		insertOption: 'Nahradiť aktuálny obsah',
+		selectPromptMsg: 'Prosím vyberte šablóny na otvorenie v editore<br>(súšasný obsah bude stratený):',
+		emptyListMsg : '(žiadne šablóny nenájdené)'
+	},
+
+	showBlocks : 'Ukázať bloky',
+
+	stylesCombo :
+	{
+		label : 'Štýl',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Formát',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Formát',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normálny',
+		tag_pre : 'Formátovaný',
+		tag_address : 'Adresa',
+		tag_h1 : 'Nadpis 1',
+		tag_h2 : 'Nadpis 2',
+		tag_h3 : 'Nadpis 3',
+		tag_h4 : 'Nadpis 4',
+		tag_h5 : 'Nadpis 5',
+		tag_h6 : 'Nadpis 6',
+		tag_div : 'Odsek (DIV)'
+	},
+
+	font :
+	{
+		label : 'Písmo',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Písmo',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Veľkosť',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Veľkosť',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Farba textu',
+		bgColorTitle : 'Farba pozadia',
+		auto : 'Automaticky',
+		more : 'Viac farieb...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/vi.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/vi.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/vi.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Vietnamese language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['vi'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Trình biên tập trực quan, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Mã HTML',
+	newPage			: 'Trang mới',
+	save			: 'Lưu',
+	preview			: 'Xem trước',
+	cut				: 'Cắt',
+	copy			: 'Sao chép',
+	paste			: 'Dán',
+	print			: 'In',
+	underline		: 'Gạch chân',
+	bold			: 'Đậm',
+	italic			: 'Nghiêng',
+	selectAll		: 'Chọn Tất cả',
+	removeFormat	: 'Xoá Định dạng',
+	strike			: 'Gạch xuyên ngang',
+	subscript		: 'Chỉ số dưới',
+	superscript		: 'Chỉ số trên',
+	horizontalrule	: 'Chèn Đường phân cách ngang',
+	pagebreak		: 'Chèn Ngắt trang',
+	unlink			: 'Xoá Liên kết',
+	undo			: 'Khôi phục thao tác',
+	redo			: 'Làm lại thao tác',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Duyệt trên máy chủ',
+		url				: 'URL',
+		protocol		: 'Giao thức',
+		upload			: 'Tải lên',
+		uploadSubmit	: 'Tải lên Máy chủ',
+		image			: 'Hình ảnh',
+		flash			: 'Flash',
+		form			: 'Biểu mẫu',
+		checkbox		: 'Nút kiểm',
+		radio		: 'Nút chọn',
+		textField		: 'Trường văn bản',
+		textarea		: 'Vùng văn bản',
+		hiddenField		: 'Trường ẩn',
+		button			: 'Nút',
+		select	: 'Ô chọn',
+		imageButton		: 'Nút hình ảnh',
+		notSet			: '<không thiết lập>',
+		id				: 'Định danh',
+		name			: 'Tên',
+		langDir			: 'Đường dẫn Ngôn ngữ',
+		langDirLtr		: 'Trái sang Phải (LTR)',
+		langDirRtl		: 'Phải sang Trái (RTL)',
+		langCode		: 'Mã Ngôn ngữ',
+		longDescr		: 'Mô tả URL',
+		cssClass		: 'Lớp Stylesheet',
+		advisoryTitle	: 'Advisory Title',
+		cssStyle		: 'Mẫu',
+		ok				: 'Đồng ý',
+		cancel			: 'Bỏ qua',
+		generalTab		: 'Chung',
+		advancedTab		: 'Mở rộng',
+		validateNumberFailed	: 'Giá trị này không phải là số.',
+		confirmNewPage	: 'Mọi thay đổi không được không được lưu lại của nội dung này sẽ bị mất. Bạn có chắc chắn muốn tải một trang mới?',
+		confirmCancel	: 'Một vài tùy chọn đã bị thay đổi. Bạn có chắc chắn muốn đóng hộp thoại?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, không có</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Chèn Ký tự đặc biệt',
+		title		: 'Hãy chọn Ký tự đặc biệt'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Chèn/Sửa Liên kết',
+		menu		: 'Sửa Liên kết',
+		title		: 'Liên kết',
+		info		: 'Thông tin Liên kết',
+		target		: 'Đích',
+		upload		: 'Tải lên',
+		advanced	: 'Mở rộng',
+		type		: 'Kiểu Liên kết',
+		toAnchor	: 'Neo trong trang này',
+		toEmail		: 'Thư điện tử',
+		target		: 'Đích',
+		targetNotSet	: '<không thiết lập>',
+		targetFrame	: '<khung>',
+		targetPopup	: '<cửa sổ popup>',
+		targetNew	: 'Cửa sổ mới (_blank)',
+		targetTop	: 'Cửa sổ trên cùng(_top)',
+		targetSelf	: 'Cùng cửa sổ (_self)',
+		targetParent	: 'Cửa sổ cha (_parent)',
+		targetFrameName	: 'Tên Khung đích',
+		targetPopupName	: 'Tên Cửa sổ Popup',
+		popupFeatures	: 'Đặc điểm của Cửa sổ Popup',
+		popupResizable	: 'Có thể thay đổi kích cỡ',
+		popupStatusBar	: 'Thanh trạng thái',
+		popupLocationBar	: 'Thanh vị trí',
+		popupToolbar	: 'Thanh công cụ',
+		popupMenuBar	: 'Thanh Menu',
+		popupFullScreen	: 'Toàn màn hình (IE)',
+		popupScrollBars	: 'Thanh cuộn',
+		popupDependent	: 'Phụ thuộc (Netscape)',
+		popupWidth		: 'Rộng',
+		popupLeft		: 'Vị trí Trái',
+		popupHeight		: 'Cao',
+		popupTop		: 'Vị trí Trên',
+		id				: 'Định danh',
+		langDir			: 'Đường dẫn Ngôn ngữ',
+		langDirNotSet	: '<không thiết lập>',
+		langDirLTR		: 'Trái sang Phải (LTR)',
+		langDirRTL		: 'Phải sang Trái (RTL)',
+		acccessKey		: 'Phím Hỗ trợ truy cập',
+		name			: 'Tên',
+		langCode		: 'Đường dẫn Ngôn ngữ',
+		tabIndex		: 'Chỉ số của Tab',
+		advisoryTitle	: 'Advisory Title',
+		advisoryContentType	: 'Advisory Content Type',
+		cssClasses		: 'Lớp Stylesheet',
+		charset			: 'Bảng mã của tài nguyên được liên kết đến',
+		styles			: 'Mẫu',
+		selectAnchor	: 'Chọn một Neo',
+		anchorName		: 'Theo Tên Neo',
+		anchorId		: 'Theo Định danh Thành phần',
+		emailAddress	: 'Thư điện tử',
+		emailSubject	: 'Tiêu đề Thông điệp',
+		emailBody		: 'Nội dung Thông điệp',
+		noAnchors		: '(Không có Neo nào trong tài liệu)',
+		noUrl			: 'Hãy đưa vào Liên kết URL',
+		noEmail			: 'Hãy đưa vào địa chỉ thư điện tử'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Chèn/Sửa Neo',
+		menu		: 'Thuộc tính Neo',
+		title		: 'Thuộc tính Neo',
+		name		: 'Tên của Neo',
+		errorName	: 'Hãy nhập vào tên của Neo'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Tìm kiếm và Thay Thế',
+		find				: 'Tìm kiếm',
+		replace				: 'Thay thế',
+		findWhat			: 'Tìm chuỗi:',
+		replaceWith			: 'Thay bằng:',
+		notFoundMsg			: 'Không tìm thấy chuỗi cần tìm.',
+		matchCase			: 'Phân biệt chữ hoa/thường',
+		matchWord			: 'Giống toàn bộ từ',
+		matchCyclic			: 'Giống một phần',
+		replaceAll			: 'Thay thế Tất cả',
+		replaceSuccessMsg	: '%1 vị trí đã được thay thế.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Bảng',
+		title		: 'Thuộc tính bảng',
+		menu		: 'Thuộc tính bảng',
+		deleteTable	: 'Xóa Bảng',
+		rows		: 'Hàng',
+		columns		: 'Cột',
+		border		: 'Cỡ Đường viền',
+		align		: 'Canh lề',
+		alignNotSet	: '<Chưa thiết lập>',
+		alignLeft	: 'Trái',
+		alignCenter	: 'Giữa',
+		alignRight	: 'Phải',
+		width		: 'Rộng',
+		widthPx		: 'điểm (px)',
+		widthPc		: '%',
+		height		: 'Cao',
+		cellSpace	: 'Khoảng cách Ô',
+		cellPad		: 'Đệm Ô',
+		caption		: 'Đầu đề',
+		summary		: 'Tóm lược',
+		headers		: 'Đầu đề',
+		headersNone		: 'Không có',
+		headersColumn	: 'Cột Đầu tiên',
+		headersRow		: 'Hàng Đầu tiên',
+		headersBoth		: 'Cả hai',
+		invalidRows		: 'Số lượng hàng phải là một số lớn hơn 0.',
+		invalidCols		: 'Số lượng cột phải là một số lớn hơn 0.',
+		invalidBorder	: 'Kích cỡ của đường biên phải là một số nguyên.',
+		invalidWidth	: 'Chiều rộng của Bảng phải là một số nguyên.',
+		invalidHeight	: 'Chiều cao của Bảng phải là một số nguyên.',
+		invalidCellSpacing	: 'Khoảng cách giữa các ô phải là một số nguyên.',
+		invalidCellPadding	: 'Đệm giữa các ô phải là một số nguyên.',
+
+		cell :
+		{
+			menu			: 'Ô',
+			insertBefore	: 'Chèn Ô Phía trước',
+			insertAfter		: 'Chèn Ô Phía sau',
+			deleteCell		: 'Xoá Ô',
+			merge			: 'Kết hợp Ô',
+			mergeRight		: 'Kết hợp Sang phải',
+			mergeDown		: 'Kết hợp Xuống dưới',
+			splitHorizontal	: 'Tách ngang Ô',
+			splitVertical	: 'Tách dọc Ô',
+			title			: 'Thuộc tính của Ô',
+			cellType		: 'Kiểu của Ô',
+			rowSpan			: 'Kết hợp hàng',
+			colSpan			: 'Kết hợp cột',
+			wordWrap		: 'Word Wrap',
+			hAlign			: 'Canh lề ngang',
+			vAlign			: 'Canh lề dọc',
+			alignTop		: 'Trên cùng',
+			alignMiddle		: 'Chính giữa',
+			alignBottom		: 'Dưới cùng',
+			alignBaseline	: 'Đường cơ sở',
+			bgColor			: 'Màu nền',
+			borderColor		: 'Màu viền',
+			data			: 'Dữ liệu',
+			header			: 'Đầu đề',
+			yes				: 'Có',
+			no				: 'Không',
+			invalidWidth	: 'Chiều rộng của Ô phải là một số nguyên.',
+			invalidHeight	: 'Chiều cao của Ô phải là một số nguyên.',
+			invalidRowSpan	: 'Số hàng kết hợp phải là một số nguyên.',
+			invalidColSpan	: 'Số cột kết hợp phải là một số nguyên.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Hàng',
+			insertBefore	: 'Chèn Hàng Phía trước',
+			insertAfter		: 'Chèn Hàng Phía sau',
+			deleteRow		: 'Xoá Hàng'
+		},
+
+		column :
+		{
+			menu			: 'Cột',
+			insertBefore	: 'Chèn Cột Phía trước',
+			insertAfter		: 'Chèn Cột Phía sau',
+			deleteColumn	: 'Xoá Cột'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Thuộc tính Nút',
+		text		: 'Chuỗi hiển thị (Giá trị)',
+		type		: 'Kiểu',
+		typeBtn		: 'Nút Bấm',
+		typeSbm		: 'Nút Gửi',
+		typeRst		: 'Nút Nhập lại'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Thuộc tính Nút kiểm',
+		radioTitle	: 'Thuộc tính Nút chọn',
+		value		: 'Giá trị',
+		selected	: 'Được chọn'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Thuộc tính Biểu mẫu',
+		menu		: 'Thuộc tính Biểu mẫu',
+		action		: 'Hành động',
+		method		: 'Phương thức',
+		encoding	: 'Bảng mã',
+		target		: 'Đích',
+		targetNotSet	: '<không thiết lập>',
+		targetNew	: 'Cửa sổ mới (_blank)',
+		targetTop	: 'Cửa sổ trên cùng(_top)',
+		targetSelf	: 'Cùng cửa sổ (_self)',
+		targetParent	: 'Cửa sổ cha (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Thuộc tính Ô chọn',
+		selectInfo	: 'Thông tin',
+		opAvail		: 'Các tùy chọn có thể sử dụng',
+		value		: 'Giá trị',
+		size		: 'Kích cỡ',
+		lines		: 'dòng',
+		chkMulti	: 'Cho phép chọn nhiều',
+		opText		: 'Văn bản',
+		opValue		: 'Giá trị',
+		btnAdd		: 'Thêm',
+		btnModify	: 'Thay đổi',
+		btnUp		: 'Lên',
+		btnDown		: 'Xuống',
+		btnSetValue : 'Giá trị được chọn',
+		btnDelete	: 'Xoá'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Thuộc tính Vùng văn bản',
+		cols		: 'Cột',
+		rows		: 'Hàng'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Thuộc tính Trường văn bản',
+		name		: 'Tên',
+		value		: 'Giá trị',
+		charWidth	: 'Rộng',
+		maxChars	: 'Số Ký tự tối đa',
+		type		: 'Kiểu',
+		typeText	: 'Ký tự',
+		typePass	: 'Mật khẩu'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Thuộc tính Trường ẩn',
+		name	: 'Tên',
+		value	: 'Giá trị'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Thuộc tính Hình ảnh',
+		titleButton	: 'Thuộc tính Nút hình ảnh',
+		menu		: 'Thuộc tính Hình ảnh',
+		infoTab	: 'Thông tin Hình ảnh',
+		btnUpload	: 'Tải lên Máy chủ',
+		url		: 'URL',
+		upload	: 'Tải lên',
+		alt		: 'Chú thích Hình ảnh',
+		width		: 'Rộng',
+		height	: 'Cao',
+		lockRatio	: 'Giữ nguyên tỷ lệ',
+		resetSize	: 'Kích thước gốc',
+		border	: 'Đường viền',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		align		: 'Vị trí',
+		alignLeft	: 'Trái',
+		alignAbsBottom: 'Dưới tuyệt đối',
+		alignAbsMiddle: 'Giữa tuyệt đối',
+		alignBaseline	: 'Đường cơ sở',
+		alignBottom	: 'Dưới',
+		alignMiddle	: 'Giữa',
+		alignRight	: 'Phải',
+		alignTextTop	: 'Phía trên chữ',
+		alignTop	: 'Trên',
+		preview	: 'Xem trước',
+		alertUrl	: 'Hãy đưa vào URL của hình ảnh',
+		linkTab	: 'Liên kết',
+		button2Img	: 'Bạn có muốn chuyển nút bấm bằng hình ảnh được chọn thành hình ảnh?',
+		img2Button	: 'Bạn có muốn chuyển đổi hình ảnh được chọn thành nút bấm bằng hình ảnh?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Thuộc tính Flash',
+		propertiesTab	: 'Thuộc tính',
+		title		: 'Thuộc tính Flash',
+		chkPlay		: 'Tự động chạy',
+		chkLoop		: 'Lặp',
+		chkMenu		: 'Cho phép bật Menu của Flash',
+		chkFull		: 'Cho phép Toàn màn hình',
+ 		scale		: 'Tỷ lệ',
+		scaleAll		: 'Hiển thị tất cả',
+		scaleNoBorder	: 'Không đường viền',
+		scaleFit		: 'Vừa vặn',
+		access			: 'Truy cập Mã',
+		accessAlways	: 'Luôn luôn',
+		accessSameDomain	: 'Cùng tên miền',
+		accessNever	: 'Không bao giờ',
+		align		: 'Vị trí',
+		alignLeft	: 'Trái',
+		alignAbsBottom: 'Dưới tuyệt đối',
+		alignAbsMiddle: 'Giữa tuyệt đối',
+		alignBaseline	: 'Đường cơ sở',
+		alignBottom	: 'Dưới',
+		alignMiddle	: 'Giữa',
+		alignRight	: 'Phải',
+		alignTextTop	: 'Phía trên chữ',
+		alignTop	: 'Trên',
+		quality		: 'Chất lượng',
+		qualityBest		 : 'TỐt nhất',
+		qualityHigh		 : 'Cao',
+		qualityAutoHigh	 : 'Cao Tự động',
+		qualityMedium	 : 'Trung bình',
+		qualityAutoLow	 : 'Thấp Tự động',
+		qualityLow		 : 'Thấp',
+		windowModeWindow	 : 'Cửa sổ',
+		windowModeOpaque	 : 'Mờ đục',
+		windowModeTransparent	 : 'Trong suốt',
+		windowMode	: 'Chế độ Cửa sổ',
+		flashvars	: 'Các biến số dành cho Flash',
+		bgcolor	: 'Màu nền',
+		width	: 'Rộng',
+		height	: 'Cao',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		validateSrc : 'Hãy đưa vào Liên kết URL',
+		validateWidth : 'Chiều rộng phải là số nguyên.',
+		validateHeight : 'Chiều cao phải là số nguyên.',
+		validateHSpace : 'HSpace phải là số nguyên.',
+		validateVSpace : 'VSpace phải là số nguyên.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Kiểm tra Chính tả',
+		title			: 'Kiểm tra Chính tả',
+		notAvailable	: 'Xin lỗi, dịch vụ này hiện tại không có.',
+		errorLoading	: 'Lỗi khi đang nạp dịch vụ ứng dụng: %s.',
+		notInDic		: 'Không có trong từ điển',
+		changeTo		: 'Chuyển thành',
+		btnIgnore		: 'Bỏ qua',
+		btnIgnoreAll	: 'Bỏ qua Tất cả',
+		btnReplace		: 'Thay thế',
+		btnReplaceAll	: 'Thay thế Tất cả',
+		btnUndo			: 'Phục hồi lại',
+		noSuggestions	: '- Không đưa ra gợi ý về từ -',
+		progress		: 'Đang tiến hành kiểm tra chính tả...',
+		noMispell		: 'Hoàn tất kiểm tra chính tả: Không có lỗi chính tả',
+		noChanges		: 'Hoàn tất kiểm tra chính tả: Không có từ nào được thay đổi',
+		oneChange		: 'Hoàn tất kiểm tra chính tả: Một từ đã được thay đổi',
+		manyChanges		: 'Hoàn tất kiểm tra chính tả: %1 từ đã được thay đổi',
+		ieSpellDownload	: 'Chức năng kiểm tra chính tả chưa được cài đặt. Bạn có muốn tải về ngay bây giờ?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Hình biểu lộ cảm xúc (mặt cười)',
+		title	: 'Chèn Hình biểu lộ cảm xúc (mặt cười)'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 thành phần'
+	},
+
+	numberedlist : 'Danh sách có thứ tự',
+	bulletedlist : 'Danh sách không thứ tự',
+	indent : 'Dịch vào trong',
+	outdent : 'Dịch ra ngoài',
+
+	justify :
+	{
+		left : 'Canh trái',
+		center : 'Canh giữa',
+		right : 'Canh phải',
+		block : 'Canh đều'
+	},
+
+	blockquote : 'Khối Trích dẫn',
+
+	clipboard :
+	{
+		title		: 'Dán',
+		cutError	: 'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl+X).',
+		copyError	: 'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl+C).',
+		pasteMsg	: 'Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (<STRONG>Ctrl+V</STRONG>) và nhấn vào nút <STRONG>Đồng ý</STRONG>.',
+		securityMsg	: 'Do thiết lập bảo mật của trình duyệt nên trình biên tập không thể truy cập trực tiếp vào nội dung đã sao chép. Bạn cần phải dán lại nội dung vào cửa sổ này.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Dán với định dạng Word',
+		title : 'Dán với định dạng Word',
+		advice : 'Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (<STRONG>Ctrl+V</STRONG>) và nhấn vào nút <STRONG>Đồng ý</STRONG>.',
+		ignoreFontFace : 'Chấp nhận các định dạng phông',
+		removeStyle : 'Gỡ bỏ các định dạng Styles'
+	},
+
+	pasteText :
+	{
+		button : 'Dán theo định dạng văn bản thuần',
+		title : 'Dán theo định dạng văn bản thuần'
+	},
+
+	templates :
+	{
+		button : 'Mẫu dựng sẵn',
+		title : 'Nội dung Mẫu dựng sẵn',
+		insertOption: 'Thay thế nội dung hiện tại',
+		selectPromptMsg: 'Hãy chọn Mẫu dựng sẵn để mở trong trình biên tập<br>(nội dung hiện tại sẽ bị mất):',
+		emptyListMsg : '(Không có Mẫu dựng sẵn nào được định nghĩa)'
+	},
+
+	showBlocks : 'Hiển thị các Khối',
+
+	stylesCombo :
+	{
+		label : 'Kiểu',
+		voiceLabel : 'Kiểu',
+		panelVoiceLabel : 'Chọn một kiểu',
+		panelTitle1 : 'Kiểu Khối',
+		panelTitle2 : 'Kiểu Trực tiếp',
+		panelTitle3 : 'Kiểu Đối tượng'
+	},
+
+	format :
+	{
+		label : 'Định dạng',
+		voiceLabel : 'Định dạng',
+		panelTitle : 'Định dạng',
+		panelVoiceLabel : 'Chọn định dạng đoạn văn bản',
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatted',
+		tag_address : 'Address',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Phông',
+		voiceLabel : 'Phông',
+		panelTitle : 'Phông',
+		panelVoiceLabel : 'Chọn phông'
+	},
+
+	fontSize :
+	{
+		label : 'Cỡ chữ',
+		voiceLabel : 'Kích cỡ phông',
+		panelTitle : 'Cỡ chữ',
+		panelVoiceLabel : 'Chọn kích cỡ phông'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Màu chữ',
+		bgColorTitle : 'Màu nền',
+		auto : 'Tự động',
+		more : 'Màu khác...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Kiểm tra chính tả ngay khi gõ chữ (SCAYT)',
+		enable : 'Bật SCAYT',
+		disable : 'Tắt SCAYT',
+		about : 'Thông tin về SCAYT',
+		toggle : 'Bật tắt SCAYT',
+		options : 'Tùy chọn',
+		langs : 'Ngôn ngữ',
+		moreSuggestions : 'Đề xuất thêm',
+		ignore : 'Bỏ qua',
+		ignoreAll : 'Bỏ qua Tất cả',
+		addWord : 'Thêm Từ',
+		emptyDic : 'Tên của từ điển không được để trống.',
+		optionsTab : 'Tùy chọn',
+		languagesTab : 'Ngôn ngữ',
+		dictionariesTab : 'Từ điển',
+		aboutTab : 'Thông tin'
+	},
+
+	about :
+	{
+		title : 'Thông tin về CKEditor',
+		dlgTitle : 'Thông tin về CKEditor',
+		moreInfo : 'Vui lòng ghé thăm trang web của chúng tôi để có thông tin về giấy phép:',
+		copy : 'Bản quyền &copy; $1. Giữ toàn quyền.'
+	},
+
+	maximize : 'Phóng to tối đa',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Neo',
+		flash : 'Hoạt họa Flash',
+		div : 'Ngắt Trang',
+		unknown : 'Đối tượng không rõ ràng'
+	},
+
+	resize : 'Kéo rê để thay đổi kích cỡ',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/zh-cn.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/zh-cn.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/zh-cn.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Chinese Simplified language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['zh-cn'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: '富文本编辑器, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: '源码',
+	newPage			: '新建',
+	save			: '保存',
+	preview			: '预览',
+	cut				: '剪切',
+	copy			: '复制',
+	paste			: '粘贴',
+	print			: '打印',
+	underline		: '下划线',
+	bold			: '加粗',
+	italic			: '倾斜',
+	selectAll		: '全选',
+	removeFormat	: '清除格式',
+	strike			: '删除线',
+	subscript		: '下标',
+	superscript		: '上标',
+	horizontalrule	: '插入水平线',
+	pagebreak		: '插入分页符',
+	unlink			: '取消超链接',
+	undo			: '撤消',
+	redo			: '重做',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: '浏览服务器',
+		url				: '源文件',
+		protocol		: '协议',
+		upload			: '上传',
+		uploadSubmit	: '发送到服务器上',
+		image			: '图象',
+		flash			: 'Flash',
+		form			: '表单',
+		checkbox		: '复选框',
+		radio		: '单选按钮',
+		textField		: '单行文本',
+		textarea		: '多行文本',
+		hiddenField		: '隐藏域',
+		button			: '按钮',
+		select	: '列表/菜单',
+		imageButton		: '图像域',
+		notSet			: '<没有设置>',
+		id				: 'ID',
+		name			: '名称',
+		langDir			: '语言方向',
+		langDirLtr		: '从左到右 (LTR)',
+		langDirRtl		: '从右到左 (RTL)',
+		langCode		: '语言代码',
+		longDescr		: '详细说明地址',
+		cssClass		: '样式类名称',
+		advisoryTitle	: '标题',
+		cssStyle		: '行内样式',
+		ok				: '确定',
+		cancel			: '取消',
+		generalTab		: '常规',
+		advancedTab		: '高级',
+		validateNumberFailed	: '需要输入数字格式',
+		confirmNewPage	: '当前文档内容未保存,是否确认新建文档？',
+		confirmCancel	: '部分选项尚未保存，是否确认关闭对话框？',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, 不可用</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: '插入特殊符号',
+		title		: '选择特殊符号'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: '插入/编辑超链接',
+		menu		: '编辑超链接',
+		title		: '超链接',
+		info		: '超链接信息',
+		target		: '目标',
+		upload		: '上传',
+		advanced	: '高级',
+		type		: '超链接类型',
+		toAnchor	: '页内锚点链接',
+		toEmail		: '电子邮件',
+		target		: '目标',
+		targetNotSet	: '<没有设置>',
+		targetFrame	: '<框架>',
+		targetPopup	: '<弹出窗口>',
+		targetNew	: '新窗口 (_blank)',
+		targetTop	: '整页 (_top)',
+		targetSelf	: '本窗口 (_self)',
+		targetParent	: '父窗口 (_parent)',
+		targetFrameName	: '目标框架名称',
+		targetPopupName	: '弹出窗口名称',
+		popupFeatures	: '弹出窗口属性',
+		popupResizable	: '可缩放',
+		popupStatusBar	: '状态栏',
+		popupLocationBar	: '地址栏',
+		popupToolbar	: '工具栏',
+		popupMenuBar	: '菜单栏',
+		popupFullScreen	: '全屏 (IE)',
+		popupScrollBars	: '滚动条',
+		popupDependent	: '依附 (NS)',
+		popupWidth		: '宽',
+		popupLeft		: '左',
+		popupHeight		: '高',
+		popupTop		: '右',
+		id				: 'ID',
+		langDir			: '语言方向',
+		langDirNotSet	: '<没有设置>',
+		langDirLTR		: '从左到右 (LTR)',
+		langDirRTL		: '从右到左 (RTL)',
+		acccessKey		: '访问键',
+		name			: '名称',
+		langCode		: '语言方向',
+		tabIndex		: 'Tab 键次序',
+		advisoryTitle	: '标题',
+		advisoryContentType	: '内容类型',
+		cssClasses		: '样式类名称',
+		charset			: '字符编码',
+		styles			: '行内样式',
+		selectAnchor	: '选择一个锚点',
+		anchorName		: '按锚点名称',
+		anchorId		: '按锚点 ID',
+		emailAddress	: '地址',
+		emailSubject	: '主题',
+		emailBody		: '内容',
+		noAnchors		: '(此文档没有可用的锚点)',
+		noUrl			: '请输入超链接地址',
+		noEmail			: '请输入电子邮件地址'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: '插入/编辑锚点链接',
+		menu		: '锚点链接属性',
+		title		: '锚点链接属性',
+		name		: '锚点名称',
+		errorName	: '请输入锚点名称'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: '查找和替换',
+		find				: '查找',
+		replace				: '替换',
+		findWhat			: '查找:',
+		replaceWith			: '替换:',
+		notFoundMsg			: '指定文本没有找到',
+		matchCase			: '区分大小写',
+		matchWord			: '全字匹配',
+		matchCyclic			: '循环匹配',
+		replaceAll			: '全部替换',
+		replaceSuccessMsg	: '共完成 %1 处替换.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: '表格',
+		title		: '表格属性',
+		menu		: '表格属性',
+		deleteTable	: '删除表格',
+		rows		: '行数',
+		columns		: '列数',
+		border		: '边框',
+		align		: '对齐',
+		alignNotSet	: '<没有设置>',
+		alignLeft	: '左对齐',
+		alignCenter	: '居中',
+		alignRight	: '右对齐',
+		width		: '宽度',
+		widthPx		: '像素',
+		widthPc		: '百分比',
+		height		: '高度',
+		cellSpace	: '间距',
+		cellPad		: '边距',
+		caption		: '标题',
+		summary		: '摘要',
+		headers		: '标题单元格',
+		headersNone		: '无',
+		headersColumn	: '第一列',
+		headersRow		: '第一行',
+		headersBoth		: '第一列和第一行',
+		invalidRows		: '指定的列数必须大于零',
+		invalidCols		: '指定的行数必须大于零',
+		invalidBorder	: '边框粗细必须为数字格式',
+		invalidWidth	: '表格宽度必须为数字格式',
+		invalidHeight	: '表格高度必须为数字格式',
+		invalidCellSpacing	: '单元格间距必须为数字格式',
+		invalidCellPadding	: '单元格填充必须为数字格式',
+
+		cell :
+		{
+			menu			: '单元格',
+			insertBefore	: '在左侧插入单元格',
+			insertAfter		: '在右侧插入单元格',
+			deleteCell		: '删除单元格',
+			merge			: '合并单元格',
+			mergeRight		: '向右合并单元格',
+			mergeDown		: '向下合并单元格',
+			splitHorizontal	: '水平拆分单元格',
+			splitVertical	: '垂直拆分单元格',
+			title			: '单元格属性',
+			cellType		: '单元格类型',
+			rowSpan			: '行跨度',
+			colSpan			: '列跨度',
+			wordWrap		: '自动换行',
+			hAlign			: '水平对齐',
+			vAlign			: '垂直对齐',
+			alignTop		: '顶对齐',
+			alignMiddle		: '中对齐',
+			alignBottom		: '底对齐',
+			alignBaseline	: '基线对齐',
+			bgColor			: '背景颜色',
+			borderColor		: '边框颜色',
+			data			: '数据',
+			header			: '表头',
+			yes				: '是',
+			no				: '否',
+			invalidWidth	: '单元格宽度必须为数字格式',
+			invalidHeight	: '单元格高度必须为数字格式',
+			invalidRowSpan	: '行跨度必须为整数格式',
+			invalidColSpan	: '列跨度必须为整数格式',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: '行',
+			insertBefore	: '在上方插入行',
+			insertAfter		: '在下方插入行',
+			deleteRow		: '删除行'
+		},
+
+		column :
+		{
+			menu			: '列',
+			insertBefore	: '在左侧插入列',
+			insertAfter		: '在右侧插入列',
+			deleteColumn	: '删除列'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: '按钮属性',
+		text		: '标签(值)',
+		type		: '类型',
+		typeBtn		: '按钮',
+		typeSbm		: '提交',
+		typeRst		: '重设'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : '复选框属性',
+		radioTitle	: '单选按钮属性',
+		value		: '选定值',
+		selected	: '已勾选'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: '表单属性',
+		menu		: '表单属性',
+		action		: '动作',
+		method		: '方法',
+		encoding	: '表单编码',
+		target		: '目标',
+		targetNotSet	: '<没有设置>',
+		targetNew	: '新窗口 (_blank)',
+		targetTop	: '整页 (_top)',
+		targetSelf	: '本窗口 (_self)',
+		targetParent	: '父窗口 (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: '菜单/列表属性',
+		selectInfo	: '信息',
+		opAvail		: '列表值',
+		value		: '值',
+		size		: '高度',
+		lines		: '行',
+		chkMulti	: '允许多选',
+		opText		: '标签',
+		opValue		: '选定',
+		btnAdd		: '新增',
+		btnModify	: '修改',
+		btnUp		: '上移',
+		btnDown		: '下移',
+		btnSetValue : '设为初始化时选定',
+		btnDelete	: '删除'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: '多行文本属性',
+		cols		: '字符宽度',
+		rows		: '行数'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: '单行文本属性',
+		name		: '名称',
+		value		: '初始值',
+		charWidth	: '字符宽度',
+		maxChars	: '最多字符数',
+		type		: '类型',
+		typeText	: '文本',
+		typePass	: '密码'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: '隐藏域属性',
+		name	: '名称',
+		value	: '初始值'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: '图象属性',
+		titleButton	: '图像域属性',
+		menu		: '图象属性',
+		infoTab	: '图象',
+		btnUpload	: '发送到服务器上',
+		url		: '源文件',
+		upload	: '上传',
+		alt		: '替换文本',
+		width		: '宽度',
+		height	: '高度',
+		lockRatio	: '锁定比例',
+		resetSize	: '恢复尺寸',
+		border	: '边框大小',
+		hSpace	: '水平间距',
+		vSpace	: '垂直间距',
+		align		: '对齐方式',
+		alignLeft	: '左对齐',
+		alignAbsBottom: '绝对底边',
+		alignAbsMiddle: '绝对居中',
+		alignBaseline	: '基线',
+		alignBottom	: '底边',
+		alignMiddle	: '居中',
+		alignRight	: '右对齐',
+		alignTextTop	: '文本上方',
+		alignTop	: '顶端',
+		preview	: '预览',
+		alertUrl	: '请输入图象地址',
+		linkTab	: '链接',
+		button2Img	: '确定要把当前按钮改变为图像吗?',
+		img2Button	: '确定要把当前图像改变为按钮吗?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash 属性',
+		propertiesTab	: '属性',
+		title		: '标题',
+		chkPlay		: '自动播放',
+		chkLoop		: '循环',
+		chkMenu		: '启用 Flash 菜单',
+		chkFull		: '启用全屏',
+ 		scale		: '缩放',
+		scaleAll		: '全部显示',
+		scaleNoBorder	: '无边框',
+		scaleFit		: '严格匹配',
+		access			: '允许脚本访问',
+		accessAlways	: '总是',
+		accessSameDomain	: '同域',
+		accessNever	: '从不',
+		align		: '对齐方式',
+		alignLeft	: '左对齐',
+		alignAbsBottom: '绝对底边',
+		alignAbsMiddle: '绝对居中',
+		alignBaseline	: '基线',
+		alignBottom	: '底边',
+		alignMiddle	: '居中',
+		alignRight	: '右对齐',
+		alignTextTop	: '文本上方',
+		alignTop	: '顶端',
+		quality		: '质量',
+		qualityBest		 : '最好',
+		qualityHigh		 : '高',
+		qualityAutoHigh	 : '高（自动）',
+		qualityMedium	 : '中（自动）',
+		qualityAutoLow	 : '低（自动）',
+		qualityLow		 : '低',
+		windowModeWindow	 : '窗体',
+		windowModeOpaque	 : '不透明',
+		windowModeTransparent	 : '透明',
+		windowMode	: '窗体模式',
+		flashvars	: 'Flash变量',
+		bgcolor	: '背景颜色',
+		width	: '宽度',
+		height	: '高度',
+		hSpace	: '水平间距',
+		vSpace	: '垂直间距',
+		validateSrc : '请输入超链接地址',
+		validateWidth : '宽度必须为数字格式',
+		validateHeight : '高度必须为数字格式',
+		validateHSpace : '水平间距必须为数字格式',
+		validateVSpace : '垂直间距必须为数字格式'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: '拼写检查',
+		title			: '拼写检查',
+		notAvailable	: '抱歉，服务目前暂不可用',
+		errorLoading	: '无法联系该应用的主机: %s.',
+		notInDic		: '没有在字典里',
+		changeTo		: '更改为',
+		btnIgnore		: '忽略',
+		btnIgnoreAll	: '全部忽略',
+		btnReplace		: '替换',
+		btnReplaceAll	: '全部替换',
+		btnUndo			: '撤消',
+		noSuggestions	: '- 没有建议 -',
+		progress		: '正在进行拼写检查...',
+		noMispell		: '拼写检查完成：没有发现拼写错误',
+		noChanges		: '拼写检查完成：没有更改任何单词',
+		oneChange		: '拼写检查完成：更改了一个单词',
+		manyChanges		: '拼写检查完成：更改了 %1 个单词',
+		ieSpellDownload	: '拼写检查插件还没安装，你是否想现在就下载？'
+	},
+
+	smiley :
+	{
+		toolbar	: '表情符',
+		title	: '插入表情图标'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 元素'
+	},
+
+	numberedlist : '编号列表',
+	bulletedlist : '项目列表',
+	indent : '增加缩进量',
+	outdent : '减少缩进量',
+
+	justify :
+	{
+		left : '左对齐',
+		center : '居中对齐',
+		right : '右对齐',
+		block : '两端对齐'
+	},
+
+	blockquote : '块引用',
+
+	clipboard :
+	{
+		title		: '粘贴',
+		cutError	: '您的浏览器安全设置不允许编辑器自动执行剪切操作，请使用键盘快捷键(Ctrl+X)来完成',
+		copyError	: '您的浏览器安全设置不允许编辑器自动执行复制操作，请使用键盘快捷键(Ctrl+C)来完成',
+		pasteMsg	: '请使用键盘快捷键(<STRONG>Ctrl+V</STRONG>)把内容粘贴到下面的方框里，再按 <STRONG>确定</STRONG>',
+		securityMsg	: '因为你的浏览器的安全设置原因，本编辑器不能直接访问你的剪贴板内容，你需要在本窗口重新粘贴一次'
+	},
+
+	pastefromword :
+	{
+		toolbar : '从 MS Word 粘贴',
+		title : '从 MS Word 粘贴',
+		advice : '请使用键盘快捷键(<STRONG>Ctrl+V</STRONG>)把内容粘贴到下面的方框里，再按 <STRONG>确定</STRONG>',
+		ignoreFontFace : '忽略 Font 标签',
+		removeStyle : '清理 CSS 样式'
+	},
+
+	pasteText :
+	{
+		button : '粘贴为无格式文本',
+		title : '粘贴为无格式文本'
+	},
+
+	templates :
+	{
+		button : '模板',
+		title : '内容模板',
+		insertOption: '替换当前内容',
+		selectPromptMsg: '请选择编辑器内容模板:',
+		emptyListMsg : '(没有模板)'
+	},
+
+	showBlocks : '显示区块',
+
+	stylesCombo :
+	{
+		label : '样式',
+		voiceLabel : '样式',
+		panelVoiceLabel : '选择样式',
+		panelTitle1 : '块级元素样式',
+		panelTitle2 : '内联元素样式',
+		panelTitle3 : '对象元素样式'
+	},
+
+	format :
+	{
+		label : '格式',
+		voiceLabel : '格式',
+		panelTitle : '格式',
+		panelVoiceLabel : '选择格式',
+
+		tag_p : '普通',
+		tag_pre : '已编排格式',
+		tag_address : '地址',
+		tag_h1 : '标题 1',
+		tag_h2 : '标题 2',
+		tag_h3 : '标题 3',
+		tag_h4 : '标题 4',
+		tag_h5 : '标题 5',
+		tag_h6 : '标题 6',
+		tag_div : '段落(DIV)'
+	},
+
+	font :
+	{
+		label : '字体',
+		voiceLabel : '字体',
+		panelTitle : '字体',
+		panelVoiceLabel : '选择字体'
+	},
+
+	fontSize :
+	{
+		label : '大小',
+		voiceLabel : '文字大小',
+		panelTitle : '大小',
+		panelVoiceLabel : '选择文字大小'
+	},
+
+	colorButton :
+	{
+		textColorTitle : '文本颜色',
+		bgColorTitle : '背景颜色',
+		auto : '自动',
+		more : '其它颜色...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : '即时拼写检查',
+		enable : '启用即时拼写检查',
+		disable : '禁用即时拼写检查',
+		about : '关于即时拼写检查',
+		toggle : '暂停/启用即时拼写检查',
+		options : '选项',
+		langs : '语言',
+		moreSuggestions : '更多拼写建议',
+		ignore : '忽略',
+		ignoreAll : '全部忽略',
+		addWord : '添加单词',
+		emptyDic : '字典名不应为空.',
+		optionsTab : '选项',
+		languagesTab : '语言',
+		dictionariesTab : '字典',
+		aboutTab : '关于'
+	},
+
+	about :
+	{
+		title : '关于CKEditor',
+		dlgTitle : '关于CKEditor',
+		moreInfo : '访问我们的网站以获取更多关于协议的信息',
+		copy : 'Copyright &copy; $1. All rights reserved.'
+	},
+
+	maximize : '全屏',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : '锚点',
+		flash : 'Flash',
+		div : '分页',
+		unknown : '位置对象'
+	},
+
+	resize : '拖拽以改变尺寸',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/uk.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/uk.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/uk.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Ukrainian language. Translated by Alexander Pervak.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['uk'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Візуальний текстовий редактор, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Джерело',
+	newPage			: 'Нова сторінка',
+	save			: 'Зберегти',
+	preview			: 'Попередній перегляд',
+	cut				: 'Вирізати',
+	copy			: 'Копіювати',
+	paste			: 'Вставити',
+	print			: 'Друк',
+	underline		: 'Підкреслений',
+	bold			: 'Жирний',
+	italic			: 'Курсив',
+	selectAll		: 'Виділити все',
+	removeFormat	: 'Прибрати форматування',
+	strike			: 'Закреслений',
+	subscript		: 'Підрядковий індекс',
+	superscript		: 'Надрядковий индекс',
+	horizontalrule	: 'Вставити горизонтальну лінію',
+	pagebreak		: 'Вставити розривши сторінки',
+	unlink			: 'Знищити посилання',
+	undo			: 'Повернути',
+	redo			: 'Повторити',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Передивитися на сервері',
+		url				: 'URL',
+		protocol		: 'Протокол',
+		upload			: 'Закачати',
+		uploadSubmit	: 'Надіслати на сервер',
+		image			: 'Зображення',
+		flash			: 'Flash',
+		form			: 'Форма',
+		checkbox		: 'Флагова кнопка',
+		radio		: 'Кнопка вибору',
+		textField		: 'Текстове поле',
+		textarea		: 'Текстова область',
+		hiddenField		: 'Приховане поле',
+		button			: 'Кнопка',
+		select	: 'Список',
+		imageButton		: 'Кнопка із зображенням',
+		notSet			: '<не визначено>',
+		id				: 'Ідентифікатор',
+		name			: 'Им\'я',
+		langDir			: 'Напрямок мови',
+		langDirLtr		: 'Зліва на право (LTR)',
+		langDirRtl		: 'Зправа на ліво (RTL)',
+		langCode		: 'Мова',
+		longDescr		: 'Довгий опис URL',
+		cssClass		: 'Клас CSS',
+		advisoryTitle	: 'Заголовок',
+		cssStyle		: 'Стиль CSS',
+		ok				: 'ОК',
+		cancel			: 'Скасувати',
+		generalTab		: 'Загальна',
+		advancedTab		: 'Розширений',
+		validateNumberFailed	: 'Значення не є числом.',
+		confirmNewPage	: 'Всі не збережені зміни будуть втрачені. Ви впевнені, що хочете завантажити нову сторінку?',
+		confirmCancel	: 'Деякі опції були змінені. Закрити вікно?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, не доступне</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Вставити спеціальний символ',
+		title		: 'Оберіть спеціальний символ'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Вставити/Редагувати посилання',
+		menu		: 'Вставити посилання',
+		title		: 'Посилання',
+		info		: 'Інформація посилання',
+		target		: 'Ціль',
+		upload		: 'Закачати',
+		advanced	: 'Розширений',
+		type		: 'Тип посилання',
+		toAnchor	: 'Якір на цю сторінку',
+		toEmail		: 'Эл. пошта',
+		target		: 'Ціль',
+		targetNotSet	: '<не визначено>',
+		targetFrame	: '<фрейм>',
+		targetPopup	: '<спливаюче вікно>',
+		targetNew	: 'Нове вікно (_blank)',
+		targetTop	: 'Найвище вікно (_top)',
+		targetSelf	: 'Теж вікно (_self)',
+		targetParent	: 'Батьківське вікно (_parent)',
+		targetFrameName	: 'Ім\'я целевого фрейма',
+		targetPopupName	: 'Ім\'я спливаючого вікна',
+		popupFeatures	: 'Властивості спливаючого вікна',
+		popupResizable	: 'Масштабоване',
+		popupStatusBar	: 'Строка статусу',
+		popupLocationBar	: 'Панель локації',
+		popupToolbar	: 'Панель інструментів',
+		popupMenuBar	: 'Панель меню',
+		popupFullScreen	: 'Повний екран (IE)',
+		popupScrollBars	: 'Полоси прокрутки',
+		popupDependent	: 'Залежний (Netscape)',
+		popupWidth		: 'Ширина',
+		popupLeft		: 'Позиція зліва',
+		popupHeight		: 'Висота',
+		popupTop		: 'Позиція зверху',
+		id				: 'Ідентифікатор (Id)',
+		langDir			: 'Напрямок мови',
+		langDirNotSet	: '<не визначено>',
+		langDirLTR		: 'Зліва на право (LTR)',
+		langDirRTL		: 'Зправа на ліво (RTL)',
+		acccessKey		: 'Гаряча клавіша',
+		name			: 'Им\'я',
+		langCode		: 'Напрямок мови',
+		tabIndex		: 'Послідовність переходу',
+		advisoryTitle	: 'Заголовок',
+		advisoryContentType	: 'Тип вмісту',
+		cssClasses		: 'Клас CSS',
+		charset			: 'Кодировка',
+		styles			: 'Стиль CSS',
+		selectAnchor	: 'Оберіть якір',
+		anchorName		: 'За ім\'ям якоря',
+		anchorId		: 'За ідентифікатором елемента',
+		emailAddress	: 'Адреса ел. пошти',
+		emailSubject	: 'Тема листа',
+		emailBody		: 'Тіло повідомлення',
+		noAnchors		: '(Немає якорів доступних в цьому документі)',
+		noUrl			: 'Будь ласка, занесіть URL посилання',
+		noEmail			: 'Будь ласка, занесіть адрес эл. почты'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Вставити/Редагувати якір',
+		menu		: 'Властивості якоря',
+		title		: 'Властивості якоря',
+		name		: 'Ім\'я якоря',
+		errorName	: 'Будь ласка, занесіть ім\'я якоря'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Знайти і замінити',
+		find				: 'Пошук',
+		replace				: 'Заміна',
+		findWhat			: 'Шукати:',
+		replaceWith			: 'Замінити на:',
+		notFoundMsg			: 'Вказаний текст не знайдений.',
+		matchCase			: 'Враховувати регістр',
+		matchWord			: 'Збіг цілих слів',
+		matchCyclic			: 'Циклічна заміна',
+		replaceAll			: 'Замінити все',
+		replaceSuccessMsg	: '%1 співпадінь(я) замінено.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Таблиця',
+		title		: 'Властивості таблиці',
+		menu		: 'Властивості таблиці',
+		deleteTable	: 'Видалити таблицю',
+		rows		: 'Строки',
+		columns		: 'Колонки',
+		border		: 'Розмір бордюра',
+		align		: 'Вирівнювання',
+		alignNotSet	: '<Не вст.>',
+		alignLeft	: 'Зліва',
+		alignCenter	: 'По центру',
+		alignRight	: 'Зправа',
+		width		: 'Ширина',
+		widthPx		: 'пікселів',
+		widthPc		: 'відсотків',
+		height		: 'Висота',
+		cellSpace	: 'Проміжок (spacing)',
+		cellPad		: 'Відступ (padding)',
+		caption		: 'Заголовок',
+		summary		: 'Резюме',
+		headers		: 'Заголовки',
+		headersNone		: 'Жодного',
+		headersColumn	: 'Перша колонка',
+		headersRow		: 'Перший рядок',
+		headersBoth		: 'Обидва',
+		invalidRows		: 'Кількість рядків повинна бути числом більше за 0.',
+		invalidCols		: 'Кількість колонок повинна бути числом більше за  0.',
+		invalidBorder	: 'Розмір бордюра повинен бути числом.',
+		invalidWidth	: 'Ширина таблиці повинна бути числом.',
+		invalidHeight	: 'Висота таблиці повинна бути числом.',
+		invalidCellSpacing	: 'Проміжок (spacing) комірки повинен бути числом.',
+		invalidCellPadding	: 'Відступ (padding) комірки повинен бути числом.',
+
+		cell :
+		{
+			menu			: 'Осередок',
+			insertBefore	: 'Вставити комірку до',
+			insertAfter		: 'Вставити комірку після',
+			deleteCell		: 'Видалити комірки',
+			merge			: 'Об\'єднати комірки',
+			mergeRight		: 'Об\'єднати зправа',
+			mergeDown		: 'Об\'єднати до низу',
+			splitHorizontal	: 'Розділити комірку по горизонталі',
+			splitVertical	: 'Розділити комірку по вертикалі',
+			title			: 'Властивості комірки',
+			cellType		: 'Тип комірки',
+			rowSpan			: 'Обєднання рядків (Rows Span)',
+			colSpan			: 'Обєднання стовпчиків (Columns Span)',
+			wordWrap		: 'Авто згортання тексту (Word Wrap)',
+			hAlign			: 'Горизонтальне вирівнювання',
+			vAlign			: 'Вертикальне вирівнювання',
+			alignTop		: 'До верху',
+			alignMiddle		: 'Посередині',
+			alignBottom		: 'До низу',
+			alignBaseline	: 'По базовій лінії',
+			bgColor			: 'Колір фону',
+			borderColor		: 'Колір бордюру',
+			data			: 'Дані',
+			header			: 'Заголовок',
+			yes				: 'Так',
+			no				: 'Ні',
+			invalidWidth	: 'Ширина комірки повинна бути числом.',
+			invalidHeight	: 'Висота комірки повинна бути числом.',
+			invalidRowSpan	: 'Кількість обєднуваних рядків повинна бути цілим числом.',
+			invalidColSpan	: 'Кількість обєднуваних стовпчиків повинна бути цілим числом.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Рядок',
+			insertBefore	: 'Вставити рядок до',
+			insertAfter		: 'Вставити рядок після',
+			deleteRow		: 'Видалити строки'
+		},
+
+		column :
+		{
+			menu			: 'Колонка',
+			insertBefore	: 'Вставити колонку до',
+			insertAfter		: 'Вставити колонку після',
+			deleteColumn	: 'Видалити колонки'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Властивості кнопки',
+		text		: 'Текст (Значення)',
+		type		: 'Тип',
+		typeBtn		: 'Кнопка',
+		typeSbm		: 'Відправити',
+		typeRst		: 'Скинути'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Властивості флагової кнопки',
+		radioTitle	: 'Властивості кнопки вибору',
+		value		: 'Значення',
+		selected	: 'Обрана'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Властивості форми',
+		menu		: 'Властивості форми',
+		action		: 'Дія',
+		method		: 'Метод',
+		encoding	: 'Кодування',
+		target		: 'Ціль',
+		targetNotSet	: '<не визначено>',
+		targetNew	: 'Нове вікно (_blank)',
+		targetTop	: 'Найвище вікно (_top)',
+		targetSelf	: 'Теж вікно (_self)',
+		targetParent	: 'Батьківське вікно (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Властивості списку',
+		selectInfo	: 'Інфо',
+		opAvail		: 'Доступні варіанти',
+		value		: 'Значення',
+		size		: 'Розмір',
+		lines		: 'лінії',
+		chkMulti	: 'Дозволити обрання декількох позицій',
+		opText		: 'Текст',
+		opValue		: 'Значення',
+		btnAdd		: 'Добавити',
+		btnModify	: 'Змінити',
+		btnUp		: 'Вгору',
+		btnDown		: 'Вниз',
+		btnSetValue : 'Встановити як вибране значення',
+		btnDelete	: 'Видалити'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Властивості текстової області',
+		cols		: 'Колонки',
+		rows		: 'Строки'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Властивості текстового поля',
+		name		: 'Ім\'я',
+		value		: 'Значення',
+		charWidth	: 'Ширина',
+		maxChars	: 'Макс. кіл-ть символів',
+		type		: 'Тип',
+		typeText	: 'Текст',
+		typePass	: 'Пароль'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Властивості прихованого поля',
+		name	: 'Ім\'я',
+		value	: 'Значення'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Властивості зображення',
+		titleButton	: 'Властивості кнопки із зображенням',
+		menu		: 'Властивості зображення',
+		infoTab	: 'Інформація про изображении',
+		btnUpload	: 'Надіслати на сервер',
+		url		: 'URL',
+		upload	: 'Закачати',
+		alt		: 'Альтернативний текст',
+		width		: 'Ширина',
+		height	: 'Висота',
+		lockRatio	: 'Зберегти пропорції',
+		resetSize	: 'Скинути розмір',
+		border	: 'Бордюр',
+		hSpace	: 'Горизонтальний відступ',
+		vSpace	: 'Вертикальний відступ',
+		align		: 'Вирівнювання',
+		alignLeft	: 'По лівому краю',
+		alignAbsBottom: 'Абс по низу',
+		alignAbsMiddle: 'Абс по середині',
+		alignBaseline	: 'По базовій лінії',
+		alignBottom	: 'По низу',
+		alignMiddle	: 'По середині',
+		alignRight	: 'По правому краю',
+		alignTextTop	: 'Текст на верху',
+		alignTop	: 'По верху',
+		preview	: 'Попередній перегляд',
+		alertUrl	: 'Будь ласка, введіть URL зображення',
+		linkTab	: 'Посилання',
+		button2Img	: 'Ви хочете перетворити обрану кнопку-зображення на просте зображення?',
+		img2Button	: 'Ви хочете перетворити обране зображення на кнопку-зображення?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Властивості Flash',
+		propertiesTab	: 'Властивості',
+		title		: 'Властивості Flash',
+		chkPlay		: 'Авто програвання',
+		chkLoop		: 'Зациклити',
+		chkMenu		: 'Дозволити меню Flash',
+		chkFull		: 'Дозволити повноекранний перегляд',
+ 		scale		: 'Масштаб',
+		scaleAll		: 'Показати всі',
+		scaleNoBorder	: 'Без рамки',
+		scaleFit		: 'Дійсний розмір',
+		access			: 'Доступ до скрипта',
+		accessAlways	: 'Завжди',
+		accessSameDomain	: 'З того ж домена',
+		accessNever	: 'Ніколи',
+		align		: 'Вирівнювання',
+		alignLeft	: 'По лівому краю',
+		alignAbsBottom: 'Абс по низу',
+		alignAbsMiddle: 'Абс по середині',
+		alignBaseline	: 'По базовій лінії',
+		alignBottom	: 'По низу',
+		alignMiddle	: 'По середині',
+		alignRight	: 'По правому краю',
+		alignTextTop	: 'Текст на верху',
+		alignTop	: 'По верху',
+		quality		: 'Якість',
+		qualityBest		 : 'Відмінна',
+		qualityHigh		 : 'Висока',
+		qualityAutoHigh	 : 'Авто відмінна',
+		qualityMedium	 : 'Середня',
+		qualityAutoLow	 : 'Авто низька',
+		qualityLow		 : 'Низька',
+		windowModeWindow	 : 'Вікно',
+		windowModeOpaque	 : 'Непрозорість (Opaque)',
+		windowModeTransparent	 : 'Прозорість (Transparent)',
+		windowMode	: 'Режим вікна',
+		flashvars	: 'Змінні Flash',
+		bgcolor	: 'Колір фону',
+		width	: 'Ширина',
+		height	: 'Висота',
+		hSpace	: 'Горизонтальний відступ',
+		vSpace	: 'Вертикальний відступ',
+		validateSrc : 'Будь ласка, занесіть URL посилання',
+		validateWidth : 'Ширина повинна бути числом.',
+		validateHeight : 'Висота повинна бути числом.',
+		validateHSpace : 'HSpace повинна бути числом.',
+		validateVSpace : 'VSpace повинна бути числом.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Перевірити орфографію',
+		title			: 'Перевірка орфографії',
+		notAvailable	: 'Вибачте, але сервіс наразі недоступний.',
+		errorLoading	: 'Помилка завантаження : %s.',
+		notInDic		: 'Не має в словнику',
+		changeTo		: 'Замінити на',
+		btnIgnore		: 'Ігнорувати',
+		btnIgnoreAll	: 'Ігнорувати все',
+		btnReplace		: 'Замінити',
+		btnReplaceAll	: 'Замінити все',
+		btnUndo			: 'Назад',
+		noSuggestions	: '- Немає припущень -',
+		progress		: 'Виконується перевірка орфографії...',
+		noMispell		: 'Перевірку орфографії завершено: помилок не знайдено',
+		noChanges		: 'Перевірку орфографії завершено: жодне слово не змінено',
+		oneChange		: 'Перевірку орфографії завершено: змінено одно слово',
+		manyChanges		: 'Перевірку орфографії завершено: 1% слів змінено',
+		ieSpellDownload	: 'Модуль перевірки орфографії не встановлено. Бажаєтн завантажити його зараз?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Смайлик',
+		title	: 'Вставити смайлик'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 елемент'
+	},
+
+	numberedlist : 'Нумерований список',
+	bulletedlist : 'Маркований список',
+	indent : 'Збільшити відступ',
+	outdent : 'Зменшити відступ',
+
+	justify :
+	{
+		left : 'По лівому краю',
+		center : 'По центру',
+		right : 'По правому краю',
+		block : 'По ширині'
+	},
+
+	blockquote : 'Цитата',
+
+	clipboard :
+	{
+		title		: 'Вставити',
+		cutError	: 'Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl+X).',
+		copyError	: 'Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl+C).',
+		pasteMsg	: 'Будь ласка, вставте з буфера обміну в цю область, користуючись комбінацією клавіш (<STRONG>Ctrl+V</STRONG>) та натисніть <STRONG>OK</STRONG>.',
+		securityMsg	: 'Редактор не може отримати прямий доступ до буферу обміну у зв\'язку з налаштуваннями вашого браузера. Вам потрібно вставити інформацію повторно в це вікно.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Вставити з Word',
+		title : 'Вставити з Word',
+		advice : 'Будь-ласка, вставте з буфера обміну в цю область, користуючись комбінацією клавіш (<STRONG>Ctrl+V</STRONG>) та натисніть <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ігнорувати налаштування шрифтів',
+		removeStyle : 'Видалити налаштування стилів'
+	},
+
+	pasteText :
+	{
+		button : 'Вставити тільки текст',
+		title : 'Вставити тільки текст'
+	},
+
+	templates :
+	{
+		button : 'Шаблони',
+		title : 'Шаблони змісту',
+		insertOption: 'Замінити поточний вміст',
+		selectPromptMsg: 'Оберіть, будь ласка, шаблон для відкриття в редакторі<br>(поточний зміст буде втрачено):',
+		emptyListMsg : '(Не визначено жодного шаблону)'
+	},
+
+	showBlocks : 'Показувати блоки',
+
+	stylesCombo :
+	{
+		label : 'Стиль',
+		voiceLabel : 'Стилі',
+		panelVoiceLabel : 'Оберіть стиль',
+		panelTitle1 : 'Block стилі',
+		panelTitle2 : 'Inline стилі',
+		panelTitle3 : 'Object стилі'
+	},
+
+	format :
+	{
+		label : 'Форматування',
+		voiceLabel : 'Формат',
+		panelTitle : 'Форматування',
+		panelVoiceLabel : 'Оберіть формат абзацу',
+
+		tag_p : 'Нормальний',
+		tag_pre : 'Форматований',
+		tag_address : 'Адреса',
+		tag_h1 : 'Заголовок 1',
+		tag_h2 : 'Заголовок 2',
+		tag_h3 : 'Заголовок 3',
+		tag_h4 : 'Заголовок 4',
+		tag_h5 : 'Заголовок 5',
+		tag_h6 : 'Заголовок 6',
+		tag_div : 'Нормальний (DIV)'
+	},
+
+	font :
+	{
+		label : 'Шрифт',
+		voiceLabel : 'Шрифт',
+		panelTitle : 'Шрифт',
+		panelVoiceLabel : 'Оберіть шрифт'
+	},
+
+	fontSize :
+	{
+		label : 'Розмір',
+		voiceLabel : 'Розмір шрифта',
+		panelTitle : 'Розмір',
+		panelVoiceLabel : 'Оберіть розмір шрифта'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Колір тексту',
+		bgColorTitle : 'Колір фону',
+		auto : 'Автоматичний',
+		more : 'Кольори...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Перефірка орфографії по мірі набору',
+		enable : 'Включити SCAYT',
+		disable : 'Відключити SCAYT',
+		about : 'Про SCAYT',
+		toggle : 'Перемкнути SCAYT',
+		options : 'Опції',
+		langs : 'Мови',
+		moreSuggestions : 'Більше пропозицій',
+		ignore : 'Ігнорувати',
+		ignoreAll : 'Ігнорувати всі',
+		addWord : 'Додати слово',
+		emptyDic : 'Назва словника повинна бути заповнена.',
+		optionsTab : 'Опції',
+		languagesTab : 'Мови',
+		dictionariesTab : 'Словники',
+		aboutTab : 'Про'
+	},
+
+	about :
+	{
+		title : 'Про CKEditor',
+		dlgTitle : 'Про CKEditor',
+		moreInfo : 'Щодо інформації з ліцензування завітайте до нашого сайту:',
+		copy : 'Copyright &copy; $1. Всі права застережено.'
+	},
+
+	maximize : 'Максимізувати',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Якір',
+		flash : 'Flash анімація',
+		div : 'Розрив сторінки',
+		unknown : 'Невідомий об`єкт'
+	},
+
+	resize : 'Пересувайте для зміни розміру',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/ms.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/ms.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/ms.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Malay language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['ms'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Sumber',
+	newPage			: 'Helaian Baru',
+	save			: 'Simpan',
+	preview			: 'Prebiu',
+	cut				: 'Potong',
+	copy			: 'Salin',
+	paste			: 'Tampal',
+	print			: 'Cetak',
+	underline		: 'Underline',
+	bold			: 'Bold',
+	italic			: 'Italic',
+	selectAll		: 'Pilih Semua',
+	removeFormat	: 'Buang Format',
+	strike			: 'Strike Through',
+	subscript		: 'Subscript',
+	superscript		: 'Superscript',
+	horizontalrule	: 'Masukkan Garisan Membujur',
+	pagebreak		: 'Insert Page Break for Printing', // MISSING
+	unlink			: 'Buang Sambungan',
+	undo			: 'Batalkan',
+	redo			: 'Ulangkan',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Browse Server',
+		url				: 'URL',
+		protocol		: 'Protokol',
+		upload			: 'Muat Naik',
+		uploadSubmit	: 'Hantar ke Server',
+		image			: 'Gambar',
+		flash			: 'Flash', // MISSING
+		form			: 'Borang',
+		checkbox		: 'Checkbox',
+		radio		: 'Butang Radio',
+		textField		: 'Text Field',
+		textarea		: 'Textarea',
+		hiddenField		: 'Field Tersembunyi',
+		button			: 'Butang',
+		select	: 'Field Pilihan',
+		imageButton		: 'Butang Bergambar',
+		notSet			: '<tidak di set>',
+		id				: 'Id',
+		name			: 'Nama',
+		langDir			: 'Arah Tulisan',
+		langDirLtr		: 'Kiri ke Kanan (LTR)',
+		langDirRtl		: 'Kanan ke Kiri (RTL)',
+		langCode		: 'Kod Bahasa',
+		longDescr		: 'Butiran Panjang URL',
+		cssClass		: 'Kelas-kelas Stylesheet',
+		advisoryTitle	: 'Tajuk Makluman',
+		cssStyle		: 'Stail',
+		ok				: 'OK',
+		cancel			: 'Batal',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Advanced',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Masukkan Huruf Istimewa',
+		title		: 'Sila pilih huruf istimewa'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Masukkan/Sunting Sambungan',
+		menu		: 'Sunting Sambungan',
+		title		: 'Sambungan',
+		info		: 'Butiran Sambungan',
+		target		: 'Sasaran',
+		upload		: 'Muat Naik',
+		advanced	: 'Advanced',
+		type		: 'Jenis Sambungan',
+		toAnchor	: 'Pautan dalam muka surat ini',
+		toEmail		: 'E-Mail',
+		target		: 'Sasaran',
+		targetNotSet	: '<tidak di set>',
+		targetFrame	: '<bingkai>',
+		targetPopup	: '<tetingkap popup>',
+		targetNew	: 'Tetingkap Baru (_blank)',
+		targetTop	: 'Tetingkap yang paling atas (_top)',
+		targetSelf	: 'Tetingkap yang Sama (_self)',
+		targetParent	: 'Tetingkap Parent (_parent)',
+		targetFrameName	: 'Nama Bingkai Sasaran',
+		targetPopupName	: 'Nama Tetingkap Popup',
+		popupFeatures	: 'Ciri Tetingkap Popup',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Bar Status',
+		popupLocationBar	: 'Bar Lokasi',
+		popupToolbar	: 'Toolbar',
+		popupMenuBar	: 'Bar Menu',
+		popupFullScreen	: 'Skrin Penuh (IE)',
+		popupScrollBars	: 'Bar-bar skrol',
+		popupDependent	: 'Bergantungan (Netscape)',
+		popupWidth		: 'Lebar',
+		popupLeft		: 'Posisi Kiri',
+		popupHeight		: 'Tinggi',
+		popupTop		: 'Posisi Atas',
+		id				: 'Id', // MISSING
+		langDir			: 'Arah Tulisan',
+		langDirNotSet	: '<tidak di set>',
+		langDirLTR		: 'Kiri ke Kanan (LTR)',
+		langDirRTL		: 'Kanan ke Kiri (RTL)',
+		acccessKey		: 'Kunci Akses',
+		name			: 'Nama',
+		langCode		: 'Arah Tulisan',
+		tabIndex		: 'Indeks Tab ',
+		advisoryTitle	: 'Tajuk Makluman',
+		advisoryContentType	: 'Jenis Kandungan Makluman',
+		cssClasses		: 'Kelas-kelas Stylesheet',
+		charset			: 'Linked Resource Charset',
+		styles			: 'Stail',
+		selectAnchor	: 'Sila pilih pautan',
+		anchorName		: 'dengan menggunakan nama pautan',
+		anchorId		: 'dengan menggunakan ID elemen',
+		emailAddress	: 'Alamat E-Mail',
+		emailSubject	: 'Subjek Mesej',
+		emailBody		: 'Isi Kandungan Mesej',
+		noAnchors		: '(Tiada pautan terdapat dalam dokumen ini)',
+		noUrl			: 'Sila taip sambungan URL',
+		noEmail			: 'Sila taip alamat e-mail'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Masukkan/Sunting Pautan',
+		menu		: 'Ciri-ciri Pautan',
+		title		: 'Ciri-ciri Pautan',
+		name		: 'Nama Pautan',
+		errorName	: 'Sila taip nama pautan'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'Cari',
+		replace				: 'Ganti',
+		findWhat			: 'Perkataan yang dicari:',
+		replaceWith			: 'Diganti dengan:',
+		notFoundMsg			: 'Text yang dicari tidak dijumpai.',
+		matchCase			: 'Padanan case huruf',
+		matchWord			: 'Padana Keseluruhan perkataan',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Ganti semua',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Jadual',
+		title		: 'Ciri-ciri Jadual',
+		menu		: 'Ciri-ciri Jadual',
+		deleteTable	: 'Delete Table', // MISSING
+		rows		: 'Barisan',
+		columns		: 'Jaluran',
+		border		: 'Saiz Border',
+		align		: 'Penjajaran',
+		alignNotSet	: '<Tidak diset>',
+		alignLeft	: 'Kiri',
+		alignCenter	: 'Tengah',
+		alignRight	: 'Kanan',
+		width		: 'Lebar',
+		widthPx		: 'piksel-piksel',
+		widthPc		: 'peratus',
+		height		: 'Tinggi',
+		cellSpace	: 'Ruangan Antara Sel',
+		cellPad		: 'Tambahan Ruang Sel',
+		caption		: 'Keterangan',
+		summary		: 'Summary', // MISSING
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Cell', // MISSING
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'Buangkan Sel-sel',
+			merge			: 'Cantumkan Sel-sel',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Row', // MISSING
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'Buangkan Baris'
+		},
+
+		column :
+		{
+			menu			: 'Column', // MISSING
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'Buangkan Lajur'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Ciri-ciri Butang',
+		text		: 'Teks (Nilai)',
+		type		: 'Jenis',
+		typeBtn		: 'Button', // MISSING
+		typeSbm		: 'Submit', // MISSING
+		typeRst		: 'Reset' // MISSING
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Ciri-ciri Checkbox',
+		radioTitle	: 'Ciri-ciri Butang Radio',
+		value		: 'Nilai',
+		selected	: 'Dipilih'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Ciri-ciri Borang',
+		menu		: 'Ciri-ciri Borang',
+		action		: 'Tindakan borang',
+		method		: 'Cara borang dihantar',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Sasaran',
+		targetNotSet	: '<tidak di set>',
+		targetNew	: 'Tetingkap Baru (_blank)',
+		targetTop	: 'Tetingkap yang paling atas (_top)',
+		targetSelf	: 'Tetingkap yang Sama (_self)',
+		targetParent	: 'Tetingkap Parent (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Ciri-ciri Selection Field',
+		selectInfo	: 'Select Info', // MISSING
+		opAvail		: 'Pilihan sediada',
+		value		: 'Nilai',
+		size		: 'Saiz',
+		lines		: 'garisan',
+		chkMulti	: 'Benarkan pilihan pelbagai',
+		opText		: 'Teks',
+		opValue		: 'Nilai',
+		btnAdd		: 'Tambah Pilihan',
+		btnModify	: 'Ubah Pilihan',
+		btnUp		: 'Naik ke atas',
+		btnDown		: 'Turun ke bawah',
+		btnSetValue : 'Set sebagai nilai terpilih',
+		btnDelete	: 'Padam'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Ciri-ciri Textarea',
+		cols		: 'Lajur',
+		rows		: 'Baris'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Ciri-ciri Text Field',
+		name		: 'Nama',
+		value		: 'Nilai',
+		charWidth	: 'Lebar isian',
+		maxChars	: 'Isian Maksimum',
+		type		: 'Jenis',
+		typeText	: 'Teks',
+		typePass	: 'Kata Laluan'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Ciri-ciri Field Tersembunyi',
+		name	: 'Nama',
+		value	: 'Nilai'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Ciri-ciri Imej',
+		titleButton	: 'Ciri-ciri Butang Bergambar',
+		menu		: 'Ciri-ciri Imej',
+		infoTab	: 'Info Imej',
+		btnUpload	: 'Hantar ke Server',
+		url		: 'URL',
+		upload	: 'Muat Naik',
+		alt		: 'Text Alternatif',
+		width		: 'Lebar',
+		height	: 'Tinggi',
+		lockRatio	: 'Tetapkan Nisbah',
+		resetSize	: 'Saiz Set Semula',
+		border	: 'Border',
+		hSpace	: 'Ruang Melintang',
+		vSpace	: 'Ruang Menegak',
+		align		: 'Jajaran',
+		alignLeft	: 'Kiri',
+		alignAbsBottom: 'Bawah Mutlak',
+		alignAbsMiddle: 'Pertengahan Mutlak',
+		alignBaseline	: 'Garis Dasar',
+		alignBottom	: 'Bawah',
+		alignMiddle	: 'Pertengahan',
+		alignRight	: 'Kanan',
+		alignTextTop	: 'Atas Text',
+		alignTop	: 'Atas',
+		preview	: 'Prebiu',
+		alertUrl	: 'Sila taip URL untuk fail gambar',
+		linkTab	: 'Sambungan',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash Properties', // MISSING
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flash Properties', // MISSING
+		chkPlay		: 'Auto Play', // MISSING
+		chkLoop		: 'Loop', // MISSING
+		chkMenu		: 'Enable Flash Menu', // MISSING
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Scale', // MISSING
+		scaleAll		: 'Show all', // MISSING
+		scaleNoBorder	: 'No Border', // MISSING
+		scaleFit		: 'Exact Fit', // MISSING
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Jajaran',
+		alignLeft	: 'Kiri',
+		alignAbsBottom: 'Bawah Mutlak',
+		alignAbsMiddle: 'Pertengahan Mutlak',
+		alignBaseline	: 'Garis Dasar',
+		alignBottom	: 'Bawah',
+		alignMiddle	: 'Pertengahan',
+		alignRight	: 'Kanan',
+		alignTextTop	: 'Atas Text',
+		alignTop	: 'Atas',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Warna Latarbelakang',
+		width	: 'Lebar',
+		height	: 'Tinggi',
+		hSpace	: 'Ruang Melintang',
+		vSpace	: 'Ruang Menegak',
+		validateSrc : 'Sila taip sambungan URL',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Semak Ejaan',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Tidak terdapat didalam kamus',
+		changeTo		: 'Tukarkan kepada',
+		btnIgnore		: 'Biar',
+		btnIgnoreAll	: 'Biarkan semua',
+		btnReplace		: 'Ganti',
+		btnReplaceAll	: 'Gantikan Semua',
+		btnUndo			: 'Batalkan',
+		noSuggestions	: '- Tiada cadangan -',
+		progress		: 'Pemeriksaan ejaan sedang diproses...',
+		noMispell		: 'Pemeriksaan ejaan siap: Tiada salah ejaan',
+		noChanges		: 'Pemeriksaan ejaan siap: Tiada perkataan diubah',
+		oneChange		: 'Pemeriksaan ejaan siap: Satu perkataan telah diubah',
+		manyChanges		: 'Pemeriksaan ejaan siap: %1 perkataan diubah',
+		ieSpellDownload	: 'Pemeriksa ejaan tidak dipasang. Adakah anda mahu muat turun sekarang?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Masukkan Smiley'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Senarai bernombor',
+	bulletedlist : 'Senarai tidak bernombor',
+	indent : 'Tambahkan Inden',
+	outdent : 'Kurangkan Inden',
+
+	justify :
+	{
+		left : 'Jajaran Kiri',
+		center : 'Jajaran Tengah',
+		right : 'Jajaran Kanan',
+		block : 'Jajaran Blok'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Tampal',
+		cutError	: 'Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl+X).',
+		copyError	: 'Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl+C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK', // MISSING
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Tampal dari Word',
+		title : 'Tampal dari Word',
+		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.', // MISSING
+		ignoreFontFace : 'Ignore Font Face definitions', // MISSING
+		removeStyle : 'Remove Styles definitions' // MISSING
+	},
+
+	pasteText :
+	{
+		button : 'Tampal sebagai text biasa',
+		title : 'Tampal sebagai text biasa'
+	},
+
+	templates :
+	{
+		button : 'Templat',
+		title : 'Templat Kandungan',
+		insertOption: 'Replace actual contents', // MISSING
+		selectPromptMsg: 'Sila pilih templat untuk dibuka oleh editor<br>(kandungan sebenar akan hilang):',
+		emptyListMsg : '(Tiada Templat Disimpan)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Stail',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Format',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Telah Diformat',
+		tag_address : 'Alamat',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Perenggan (DIV)'
+	},
+
+	font :
+	{
+		label : 'Font',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Font',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Saiz',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Saiz',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Warna Text',
+		bgColorTitle : 'Warna Latarbelakang',
+		auto : 'Otomatik',
+		more : 'Warna lain-lain...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/en-uk.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/en-uk.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/en-uk.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * English (Australia) language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['en-uk'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Source',
+	newPage			: 'New Page',
+	save			: 'Save',
+	preview			: 'Preview',
+	cut				: 'Cut',
+	copy			: 'Copy',
+	paste			: 'Paste',
+	print			: 'Print',
+	underline		: 'Underline',
+	bold			: 'Bold',
+	italic			: 'Italic',
+	selectAll		: 'Select All',
+	removeFormat	: 'Remove Format',
+	strike			: 'Strike Through',
+	subscript		: 'Subscript',
+	superscript		: 'Superscript',
+	horizontalrule	: 'Insert Horizontal Line',
+	pagebreak		: 'Insert Page Break for Printing',
+	unlink			: 'Unlink',
+	undo			: 'Undo',
+	redo			: 'Redo',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Browse Server',
+		url				: 'URL',
+		protocol		: 'Protocol',
+		upload			: 'Upload',
+		uploadSubmit	: 'Send it to the Server',
+		image			: 'Image',
+		flash			: 'Flash',
+		form			: 'Form',
+		checkbox		: 'Checkbox',
+		radio		: 'Radio Button',
+		textField		: 'Text Field',
+		textarea		: 'Textarea',
+		hiddenField		: 'Hidden Field',
+		button			: 'Button',
+		select	: 'Selection Field',
+		imageButton		: 'Image Button',
+		notSet			: '<not set>',
+		id				: 'Id',
+		name			: 'Name',
+		langDir			: 'Language Direction',
+		langDirLtr		: 'Left to Right (LTR)',
+		langDirRtl		: 'Right to Left (RTL)',
+		langCode		: 'Language Code',
+		longDescr		: 'Long Description URL',
+		cssClass		: 'Stylesheet Classes',
+		advisoryTitle	: 'Advisory Title',
+		cssStyle		: 'Style',
+		ok				: 'OK',
+		cancel			: 'Cancel',
+		generalTab		: 'General',
+		advancedTab		: 'Advanced',
+		validateNumberFailed	: 'This value is not a number.',
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Insert Special Character',
+		title		: 'Select Special Character'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Link',
+		menu		: 'Edit Link',
+		title		: 'Link',
+		info		: 'Link Info',
+		target		: 'Target',
+		upload		: 'Upload',
+		advanced	: 'Advanced',
+		type		: 'Link Type',
+		toAnchor	: 'Link to anchor in the text',
+		toEmail		: 'E-mail',
+		target		: 'Target',
+		targetNotSet	: '<not set>',
+		targetFrame	: '<frame>',
+		targetPopup	: '<popup window>',
+		targetNew	: 'New Window (_blank)',
+		targetTop	: 'Topmost Window (_top)',
+		targetSelf	: 'Same Window (_self)',
+		targetParent	: 'Parent Window (_parent)',
+		targetFrameName	: 'Target Frame Name',
+		targetPopupName	: 'Popup Window Name',
+		popupFeatures	: 'Popup Window Features',
+		popupResizable	: 'Resizable',
+		popupStatusBar	: 'Status Bar',
+		popupLocationBar	: 'Location Bar',
+		popupToolbar	: 'Toolbar',
+		popupMenuBar	: 'Menu Bar',
+		popupFullScreen	: 'Full Screen (IE)',
+		popupScrollBars	: 'Scroll Bars',
+		popupDependent	: 'Dependent (Netscape)',
+		popupWidth		: 'Width',
+		popupLeft		: 'Left Position',
+		popupHeight		: 'Height',
+		popupTop		: 'Top Position',
+		id				: 'Id',
+		langDir			: 'Language Direction',
+		langDirNotSet	: '<not set>',
+		langDirLTR		: 'Left to Right (LTR)',
+		langDirRTL		: 'Right to Left (RTL)',
+		acccessKey		: 'Access Key',
+		name			: 'Name',
+		langCode		: 'Language Code',
+		tabIndex		: 'Tab Index',
+		advisoryTitle	: 'Advisory Title',
+		advisoryContentType	: 'Advisory Content Type',
+		cssClasses		: 'Stylesheet Classes',
+		charset			: 'Linked Resource Charset',
+		styles			: 'Style',
+		selectAnchor	: 'Select an Anchor',
+		anchorName		: 'By Anchor Name',
+		anchorId		: 'By Element Id',
+		emailAddress	: 'E-Mail Address',
+		emailSubject	: 'Message Subject',
+		emailBody		: 'Message Body',
+		noAnchors		: '(No anchors available in the document)',
+		noUrl			: 'Please type the link URL',
+		noEmail			: 'Please type the e-mail address'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Anchor',
+		menu		: 'Edit Anchor',
+		title		: 'Anchor Properties',
+		name		: 'Anchor Name',
+		errorName	: 'Please type the anchor name'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace',
+		find				: 'Find',
+		replace				: 'Replace',
+		findWhat			: 'Find what:',
+		replaceWith			: 'Replace with:',
+		notFoundMsg			: 'The specified text was not found.',
+		matchCase			: 'Match case',
+		matchWord			: 'Match whole word',
+		matchCyclic			: 'Match cyclic',
+		replaceAll			: 'Replace All',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Table',
+		title		: 'Table Properties',
+		menu		: 'Table Properties',
+		deleteTable	: 'Delete Table',
+		rows		: 'Rows',
+		columns		: 'Columns',
+		border		: 'Border size',
+		align		: 'Alignment',
+		alignNotSet	: '<Not set>',
+		alignLeft	: 'Left',
+		alignCenter	: 'Centre',
+		alignRight	: 'Right',
+		width		: 'Width',
+		widthPx		: 'pixels',
+		widthPc		: 'percent',
+		height		: 'Height',
+		cellSpace	: 'Cell spacing',
+		cellPad		: 'Cell padding',
+		caption		: 'Caption',
+		summary		: 'Summary',
+		headers		: 'Headers',
+		headersNone		: 'None',
+		headersColumn	: 'First column',
+		headersRow		: 'First Row',
+		headersBoth		: 'Both',
+		invalidRows		: 'Number of rows must be a number greater than 0.',
+		invalidCols		: 'Number of columns must be a number greater than 0.',
+		invalidBorder	: 'Border size must be a number.',
+		invalidWidth	: 'Table width must be a number.',
+		invalidHeight	: 'Table height must be a number.',
+		invalidCellSpacing	: 'Cell spacing must be a number.',
+		invalidCellPadding	: 'Cell padding must be a number.',
+
+		cell :
+		{
+			menu			: 'Cell',
+			insertBefore	: 'Insert Cell Before',
+			insertAfter		: 'Insert Cell After',
+			deleteCell		: 'Delete Cells',
+			merge			: 'Merge Cells',
+			mergeRight		: 'Merge Right',
+			mergeDown		: 'Merge Down',
+			splitHorizontal	: 'Split Cell Horizontally',
+			splitVertical	: 'Split Cell Vertically',
+			title			: 'Cell Properties',
+			cellType		: 'Cell Type',
+			rowSpan			: 'Rows Span',
+			colSpan			: 'Columns Span',
+			wordWrap		: 'Word Wrap',
+			hAlign			: 'Horizontal Alignment',
+			vAlign			: 'Vertical Alignment',
+			alignTop		: 'Top',
+			alignMiddle		: 'Middle',
+			alignBottom		: 'Bottom',
+			alignBaseline	: 'Baseline',
+			bgColor			: 'Background Color',
+			borderColor		: 'Border Color',
+			data			: 'Data',
+			header			: 'Header',
+			yes				: 'Yes',
+			no				: 'No',
+			invalidWidth	: 'Cell width must be a number.',
+			invalidHeight	: 'Cell height must be a number.',
+			invalidRowSpan	: 'Rows span must be a whole number.',
+			invalidColSpan	: 'Columns span must be a whole number.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Row',
+			insertBefore	: 'Insert Row Before',
+			insertAfter		: 'Insert Row After',
+			deleteRow		: 'Delete Rows'
+		},
+
+		column :
+		{
+			menu			: 'Column',
+			insertBefore	: 'Insert Column Before',
+			insertAfter		: 'Insert Column After',
+			deleteColumn	: 'Delete Columns'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Button Properties',
+		text		: 'Text (Value)',
+		type		: 'Type',
+		typeBtn		: 'Button',
+		typeSbm		: 'Submit',
+		typeRst		: 'Reset'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Checkbox Properties',
+		radioTitle	: 'Radio Button Properties',
+		value		: 'Value',
+		selected	: 'Selected'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Form Properties',
+		menu		: 'Form Properties',
+		action		: 'Action',
+		method		: 'Method',
+		encoding	: 'Encoding',
+		target		: 'Target',
+		targetNotSet	: '<not set>',
+		targetNew	: 'New Window (_blank)',
+		targetTop	: 'Topmost Window (_top)',
+		targetSelf	: 'Same Window (_self)',
+		targetParent	: 'Parent Window (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Selection Field Properties',
+		selectInfo	: 'Select Info',
+		opAvail		: 'Available Options',
+		value		: 'Value',
+		size		: 'Size',
+		lines		: 'lines',
+		chkMulti	: 'Allow multiple selections',
+		opText		: 'Text',
+		opValue		: 'Value',
+		btnAdd		: 'Add',
+		btnModify	: 'Modify',
+		btnUp		: 'Up',
+		btnDown		: 'Down',
+		btnSetValue : 'Set as selected value',
+		btnDelete	: 'Delete'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Textarea Properties',
+		cols		: 'Columns',
+		rows		: 'Rows'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Text Field Properties',
+		name		: 'Name',
+		value		: 'Value',
+		charWidth	: 'Character Width',
+		maxChars	: 'Maximum Characters',
+		type		: 'Type',
+		typeText	: 'Text',
+		typePass	: 'Password'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Hidden Field Properties',
+		name	: 'Name',
+		value	: 'Value'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Image Properties',
+		titleButton	: 'Image Button Properties',
+		menu		: 'Image Properties',
+		infoTab	: 'Image Info',
+		btnUpload	: 'Send it to the Server',
+		url		: 'URL',
+		upload	: 'Upload',
+		alt		: 'Alternative Text',
+		width		: 'Width',
+		height	: 'Height',
+		lockRatio	: 'Lock Ratio',
+		resetSize	: 'Reset Size',
+		border	: 'Border',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		align		: 'Align',
+		alignLeft	: 'Left',
+		alignAbsBottom: 'Abs Bottom',
+		alignAbsMiddle: 'Abs Middle',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Bottom',
+		alignMiddle	: 'Middle',
+		alignRight	: 'Right',
+		alignTextTop	: 'Text Top',
+		alignTop	: 'Top',
+		preview	: 'Preview',
+		alertUrl	: 'Please type the image URL',
+		linkTab	: 'Link',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?',
+		img2Button	: 'Do you want to transform the selected image on a image button?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash Properties',
+		propertiesTab	: 'Properties',
+		title		: 'Flash Properties',
+		chkPlay		: 'Auto Play',
+		chkLoop		: 'Loop',
+		chkMenu		: 'Enable Flash Menu',
+		chkFull		: 'Allow Fullscreen',
+ 		scale		: 'Scale',
+		scaleAll		: 'Show all',
+		scaleNoBorder	: 'No Border',
+		scaleFit		: 'Exact Fit',
+		access			: 'Script Access',
+		accessAlways	: 'Always',
+		accessSameDomain	: 'Same domain',
+		accessNever	: 'Never',
+		align		: 'Align',
+		alignLeft	: 'Left',
+		alignAbsBottom: 'Abs Bottom',
+		alignAbsMiddle: 'Abs Middle',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Bottom',
+		alignMiddle	: 'Middle',
+		alignRight	: 'Right',
+		alignTextTop	: 'Text Top',
+		alignTop	: 'Top',
+		quality		: 'Quality',
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode',
+		flashvars	: 'Variables for Flash',
+		bgcolor	: 'Background colour',
+		width	: 'Width',
+		height	: 'Height',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		validateSrc : 'URL must not be empty.',
+		validateWidth : 'Width must be a number.',
+		validateHeight : 'Height must be a number.',
+		validateHSpace : 'HSpace must be a number.',
+		validateVSpace : 'VSpace must be a number.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Check Spelling',
+		title			: 'Spell Check',
+		notAvailable	: 'Sorry, but service is unavailable now.',
+		errorLoading	: 'Error loading application service host: %s.',
+		notInDic		: 'Not in dictionary',
+		changeTo		: 'Change to',
+		btnIgnore		: 'Ignore',
+		btnIgnoreAll	: 'Ignore All',
+		btnReplace		: 'Replace',
+		btnReplaceAll	: 'Replace All',
+		btnUndo			: 'Undo',
+		noSuggestions	: '- No suggestions -',
+		progress		: 'Spell check in progress...',
+		noMispell		: 'Spell check complete: No misspellings found',
+		noChanges		: 'Spell check complete: No words changed',
+		oneChange		: 'Spell check complete: One word changed',
+		manyChanges		: 'Spell check complete: %1 words changed',
+		ieSpellDownload	: 'Spell checker not installed. Do you want to download it now?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Insert a Smiley'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element'
+	},
+
+	numberedlist : 'Insert/Remove Numbered List',
+	bulletedlist : 'Insert/Remove Bulleted List',
+	indent : 'Increase Indent',
+	outdent : 'Decrease Indent',
+
+	justify :
+	{
+		left : 'Left Justify',
+		center : 'Centre Justify',
+		right : 'Right Justify',
+		block : 'Block Justify'
+	},
+
+	blockquote : 'Blockquote',
+
+	clipboard :
+	{
+		title		: 'Paste',
+		cutError	: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).',
+		copyError	: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Paste from Word',
+		title : 'Paste from Word',
+		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',
+		ignoreFontFace : 'Ignore Font Face definitions',
+		removeStyle : 'Remove Styles definitions'
+	},
+
+	pasteText :
+	{
+		button : 'Paste as plain text',
+		title : 'Paste as Plain Text'
+	},
+
+	templates :
+	{
+		button : 'Templates',
+		title : 'Content Templates',
+		insertOption: 'Replace actual contents',
+		selectPromptMsg: 'Please select the template to open in the editor',
+		emptyListMsg : '(No templates defined)'
+	},
+
+	showBlocks : 'Show Blocks',
+
+	stylesCombo :
+	{
+		label : 'Styles',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles',
+		panelTitle2 : 'Inline Styles',
+		panelTitle3 : 'Object Styles'
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Paragraph Format',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatted',
+		tag_address : 'Address',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Font',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Font Name',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Size',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Font Size',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Text Colour',
+		bgColorTitle : 'Background Colour',
+		auto : 'Automatic',
+		more : 'More Colours...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor',
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:',
+		copy : 'Copyright &copy; $1. All rights reserved.'
+	},
+
+	maximize : 'Maximize',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/ro.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/ro.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/ro.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Romanian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['ro'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Sursa',
+	newPage			: 'Pagină nouă',
+	save			: 'Salvează',
+	preview			: 'Previzualizare',
+	cut				: 'Taie',
+	copy			: 'Copiază',
+	paste			: 'Adaugă',
+	print			: 'Printează',
+	underline		: 'Subliniat (underline)',
+	bold			: 'Îngroşat (bold)',
+	italic			: 'Înclinat (italic)',
+	selectAll		: 'Selectează tot',
+	removeFormat	: 'Înlătură formatarea',
+	strike			: 'Tăiat (strike through)',
+	subscript		: 'Indice (subscript)',
+	superscript		: 'Putere (superscript)',
+	horizontalrule	: 'Inserează linie orizontă',
+	pagebreak		: 'Inserează separator de pagină (Page Break)',
+	unlink			: 'Înlătură link (legătură web)',
+	undo			: 'Starea anterioară (undo)',
+	redo			: 'Starea ulterioară (redo)',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Răsfoieşte server',
+		url				: 'URL',
+		protocol		: 'Protocol',
+		upload			: 'Încarcă',
+		uploadSubmit	: 'Trimite la server',
+		image			: 'Imagine',
+		flash			: 'Flash',
+		form			: 'Formular (Form)',
+		checkbox		: 'Bifă (Checkbox)',
+		radio		: 'Buton radio (RadioButton)',
+		textField		: 'Câmp text (TextField)',
+		textarea		: 'Suprafaţă text (Textarea)',
+		hiddenField		: 'Câmp ascuns (HiddenField)',
+		button			: 'Buton',
+		select	: 'Câmp selecţie (SelectionField)',
+		imageButton		: 'Buton imagine (ImageButton)',
+		notSet			: '<nesetat>',
+		id				: 'Id',
+		name			: 'Nume',
+		langDir			: 'Direcţia cuvintelor',
+		langDirLtr		: 'stânga-dreapta (LTR)',
+		langDirRtl		: 'dreapta-stânga (RTL)',
+		langCode		: 'Codul limbii',
+		longDescr		: 'Descrierea lungă URL',
+		cssClass		: 'Clasele cu stilul paginii (CSS)',
+		advisoryTitle	: 'Titlul consultativ',
+		cssStyle		: 'Stil',
+		ok				: 'Bine',
+		cancel			: 'Anulare',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Avansat',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Inserează caracter special',
+		title		: 'Selectează caracter special'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Inserează/Editează link (legătură web)',
+		menu		: 'Editează Link',
+		title		: 'Link (Legătură web)',
+		info		: 'Informaţii despre link (Legătură web)',
+		target		: 'Ţintă (Target)',
+		upload		: 'Încarcă',
+		advanced	: 'Avansat',
+		type		: 'Tipul link-ului (al legăturii web)',
+		toAnchor	: 'Ancoră în această pagină',
+		toEmail		: 'E-Mail',
+		target		: 'Ţintă (Target)',
+		targetNotSet	: '<nesetat>',
+		targetFrame	: '<frame>',
+		targetPopup	: '<fereastra popup>',
+		targetNew	: 'Fereastră nouă (_blank)',
+		targetTop	: 'Fereastra din topul ierarhiei (_top)',
+		targetSelf	: 'Aceeaşi fereastră (_self)',
+		targetParent	: 'Fereastra părinte (_parent)',
+		targetFrameName	: 'Numele frame-ului ţintă',
+		targetPopupName	: 'Numele ferestrei popup',
+		popupFeatures	: 'Proprietăţile ferestrei popup',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Bara de status',
+		popupLocationBar	: 'Bara de locaţie',
+		popupToolbar	: 'Bara de opţiuni',
+		popupMenuBar	: 'Bara de meniu',
+		popupFullScreen	: 'Tot ecranul (Full Screen)(IE)',
+		popupScrollBars	: 'Scroll Bars',
+		popupDependent	: 'Dependent (Netscape)',
+		popupWidth		: 'Lăţime',
+		popupLeft		: 'Poziţia la stânga',
+		popupHeight		: 'Înălţime',
+		popupTop		: 'Poziţia la dreapta',
+		id				: 'Id', // MISSING
+		langDir			: 'Direcţia cuvintelor',
+		langDirNotSet	: '<nesetat>',
+		langDirLTR		: 'stânga-dreapta (LTR)',
+		langDirRTL		: 'dreapta-stânga (RTL)',
+		acccessKey		: 'Tasta de acces',
+		name			: 'Nume',
+		langCode		: 'Direcţia cuvintelor',
+		tabIndex		: 'Indexul tabului',
+		advisoryTitle	: 'Titlul consultativ',
+		advisoryContentType	: 'Tipul consultativ al titlului',
+		cssClasses		: 'Clasele cu stilul paginii (CSS)',
+		charset			: 'Setul de caractere al resursei legate',
+		styles			: 'Stil',
+		selectAnchor	: 'Selectaţi o ancoră',
+		anchorName		: 'după numele ancorei',
+		anchorId		: 'după Id-ul elementului',
+		emailAddress	: 'Adresă de e-mail',
+		emailSubject	: 'Subiectul mesajului',
+		emailBody		: 'Conţinutul mesajului',
+		noAnchors		: '(Nicio ancoră disponibilă în document)',
+		noUrl			: 'Vă rugăm să scrieţi URL-ul',
+		noEmail			: 'Vă rugăm să scrieţi adresa de e-mail'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Inserează/Editează ancoră',
+		menu		: 'Proprietăţi ancoră',
+		title		: 'Proprietăţi ancoră',
+		name		: 'Numele ancorei',
+		errorName	: 'Vă rugăm scrieţi numele ancorei'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Găseşte şi înlocuieşte',
+		find				: 'Găseşte',
+		replace				: 'Înlocuieşte',
+		findWhat			: 'Găseşte:',
+		replaceWith			: 'Înlocuieşte cu:',
+		notFoundMsg			: 'Textul specificat nu a fost găsit.',
+		matchCase			: 'Deosebeşte majuscule de minuscule (Match case)',
+		matchWord			: 'Doar cuvintele întregi',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Înlocuieşte tot',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabel',
+		title		: 'Proprietăţile tabelului',
+		menu		: 'Proprietăţile tabelului',
+		deleteTable	: 'Şterge tabel',
+		rows		: 'Linii',
+		columns		: 'Coloane',
+		border		: 'Mărimea marginii',
+		align		: 'Aliniament',
+		alignNotSet	: '<Nesetat>',
+		alignLeft	: 'Stânga',
+		alignCenter	: 'Centru',
+		alignRight	: 'Dreapta',
+		width		: 'Lăţime',
+		widthPx		: 'pixeli',
+		widthPc		: 'procente',
+		height		: 'Înălţime',
+		cellSpace	: 'Spaţiu între celule',
+		cellPad		: 'Spaţiu în cadrul celulei',
+		caption		: 'Titlu (Caption)',
+		summary		: 'Rezumat',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Celulă',
+			insertBefore	: 'Inserează celulă înainte',
+			insertAfter		: 'Inserează celulă după',
+			deleteCell		: 'Şterge celule',
+			merge			: 'Uneşte celule',
+			mergeRight		: 'Uneşte la dreapta',
+			mergeDown		: 'Uneşte jos',
+			splitHorizontal	: 'Împarte celula pe orizontală',
+			splitVertical	: 'Împarte celula pe verticală',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Linie',
+			insertBefore	: 'Inserează linie înainte',
+			insertAfter		: 'Inserează linie după',
+			deleteRow		: 'Şterge linii'
+		},
+
+		column :
+		{
+			menu			: 'Coloană',
+			insertBefore	: 'Inserează coloană înainte',
+			insertAfter		: 'Inserează coloană după',
+			deleteColumn	: 'Şterge celule'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Proprietăţi buton',
+		text		: 'Text (Valoare)',
+		type		: 'Tip',
+		typeBtn		: 'Button',
+		typeSbm		: 'Submit',
+		typeRst		: 'Reset'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Proprietăţi bifă (Checkbox)',
+		radioTitle	: 'Proprietăţi buton radio (Radio Button)',
+		value		: 'Valoare',
+		selected	: 'Selectat'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Proprietăţi formular (Form)',
+		menu		: 'Proprietăţi formular (Form)',
+		action		: 'Acţiune',
+		method		: 'Metodă',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Ţintă (Target)',
+		targetNotSet	: '<nesetat>',
+		targetNew	: 'Fereastră nouă (_blank)',
+		targetTop	: 'Fereastra din topul ierarhiei (_top)',
+		targetSelf	: 'Aceeaşi fereastră (_self)',
+		targetParent	: 'Fereastra părinte (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Proprietăţi câmp selecţie (Selection Field)',
+		selectInfo	: 'Informaţii',
+		opAvail		: 'Opţiuni disponibile',
+		value		: 'Valoare',
+		size		: 'Mărime',
+		lines		: 'linii',
+		chkMulti	: 'Permite selecţii multiple',
+		opText		: 'Text',
+		opValue		: 'Valoare',
+		btnAdd		: 'Adaugă',
+		btnModify	: 'Modifică',
+		btnUp		: 'Sus',
+		btnDown		: 'Jos',
+		btnSetValue : 'Setează ca valoare selectată',
+		btnDelete	: 'Şterge'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Proprietăţi suprafaţă text (Textarea)',
+		cols		: 'Coloane',
+		rows		: 'Linii'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Proprietăţi câmp text (Text Field)',
+		name		: 'Nume',
+		value		: 'Valoare',
+		charWidth	: 'Lărgimea caracterului',
+		maxChars	: 'Caractere maxime',
+		type		: 'Tip',
+		typeText	: 'Text',
+		typePass	: 'Parolă'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Proprietăţi câmp ascuns (Hidden Field)',
+		name	: 'Nume',
+		value	: 'Valoare'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Proprietăţile imaginii',
+		titleButton	: 'Proprietăţi buton imagine (Image Button)',
+		menu		: 'Proprietăţile imaginii',
+		infoTab	: 'Informaţii despre imagine',
+		btnUpload	: 'Trimite la server',
+		url		: 'URL',
+		upload	: 'Încarcă',
+		alt		: 'Text alternativ',
+		width		: 'Lăţime',
+		height	: 'Înălţime',
+		lockRatio	: 'Păstrează proporţiile',
+		resetSize	: 'Resetează mărimea',
+		border	: 'Margine',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		align		: 'Aliniere',
+		alignLeft	: 'Stânga',
+		alignAbsBottom: 'Jos absolut (Abs Bottom)',
+		alignAbsMiddle: 'Mijloc absolut (Abs Middle)',
+		alignBaseline	: 'Linia de jos (Baseline)',
+		alignBottom	: 'Jos',
+		alignMiddle	: 'Mijloc',
+		alignRight	: 'Dreapta',
+		alignTextTop	: 'Text sus',
+		alignTop	: 'Sus',
+		preview	: 'Previzualizare',
+		alertUrl	: 'Vă rugăm să scrieţi URL-ul imaginii',
+		linkTab	: 'Link (Legătură web)',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Proprietăţile flash-ului',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Proprietăţile flash-ului',
+		chkPlay		: 'Rulează automat',
+		chkLoop		: 'Repetă (Loop)',
+		chkMenu		: 'Activează meniul flash',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Scală',
+		scaleAll		: 'Arată tot',
+		scaleNoBorder	: 'Fără margini (No border)',
+		scaleFit		: 'Potriveşte',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Aliniere',
+		alignLeft	: 'Stânga',
+		alignAbsBottom: 'Jos absolut (Abs Bottom)',
+		alignAbsMiddle: 'Mijloc absolut (Abs Middle)',
+		alignBaseline	: 'Linia de jos (Baseline)',
+		alignBottom	: 'Jos',
+		alignMiddle	: 'Mijloc',
+		alignRight	: 'Dreapta',
+		alignTextTop	: 'Text sus',
+		alignTop	: 'Sus',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Coloarea fundalului',
+		width	: 'Lăţime',
+		height	: 'Înălţime',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		validateSrc : 'Vă rugăm să scrieţi URL-ul',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Verifică text',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Nu e în dicţionar',
+		changeTo		: 'Schimbă în',
+		btnIgnore		: 'Ignoră',
+		btnIgnoreAll	: 'Ignoră toate',
+		btnReplace		: 'Înlocuieşte',
+		btnReplaceAll	: 'Înlocuieşte tot',
+		btnUndo			: 'Starea anterioară (undo)',
+		noSuggestions	: '- Fără sugestii -',
+		progress		: 'Verificarea textului în desfăşurare...',
+		noMispell		: 'Verificarea textului terminată: Nicio greşeală găsită',
+		noChanges		: 'Verificarea textului terminată: Niciun cuvânt modificat',
+		oneChange		: 'Verificarea textului terminată: Un cuvânt modificat',
+		manyChanges		: 'Verificarea textului terminată: 1% cuvinte modificate',
+		ieSpellDownload	: 'Unealta pentru verificat textul (Spell checker) neinstalată. Doriţi să o descărcaţi acum?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Figură expresivă (Emoticon)',
+		title	: 'Inserează o figură expresivă (Emoticon)'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Listă numerotată',
+	bulletedlist : 'Listă cu puncte',
+	indent : 'Creşte indentarea',
+	outdent : 'Scade indentarea',
+
+	justify :
+	{
+		left : 'Aliniere la stânga',
+		center : 'Aliniere centrală',
+		right : 'Aliniere la dreapta',
+		block : 'Aliniere în bloc (Block Justify)'
+	},
+
+	blockquote : 'Citat',
+
+	clipboard :
+	{
+		title		: 'Adaugă',
+		cutError	: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl+X).',
+		copyError	: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl+C).',
+		pasteMsg	: 'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (<STRONG>Ctrl+V</STRONG>) şi apăsaţi <STRONG>OK</STRONG>.',
+		securityMsg	: 'Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Adaugă din Word',
+		title : 'Adaugă din Word',
+		advice : 'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (<STRONG>Ctrl+V</STRONG>) şi apăsaţi <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignoră definiţiile Font Face',
+		removeStyle : 'Şterge definiţiile stilurilor'
+	},
+
+	pasteText :
+	{
+		button : 'Adaugă ca text simplu (Plain Text)',
+		title : 'Adaugă ca text simplu (Plain Text)'
+	},
+
+	templates :
+	{
+		button : 'Template-uri (şabloane)',
+		title : 'Template-uri (şabloane) de conţinut',
+		insertOption: 'Înlocuieşte cuprinsul actual',
+		selectPromptMsg: 'Vă rugăm selectaţi template-ul (şablonul) ce se va deschide în editor<br>(conţinutul actual va fi pierdut):',
+		emptyListMsg : '(Niciun template (şablon) definit)'
+	},
+
+	showBlocks : 'Arată blocurile',
+
+	stylesCombo :
+	{
+		label : 'Stil',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Formatare',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Formatare',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatted',
+		tag_address : 'Address',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Font',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Font',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Mărime',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Mărime',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Culoarea textului',
+		bgColorTitle : 'Coloarea fundalului',
+		auto : 'Automatic',
+		more : 'Mai multe culori...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/pt-br.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/pt-br.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/pt-br.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Brazilian Portuguese language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['pt-br'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Editor de texto formatado, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Código-Fonte',
+	newPage			: 'Novo',
+	save			: 'Salvar',
+	preview			: 'Visualizar',
+	cut				: 'Recortar',
+	copy			: 'Copiar',
+	paste			: 'Colar',
+	print			: 'Imprimir',
+	underline		: 'Sublinhado',
+	bold			: 'Negrito',
+	italic			: 'Itálico',
+	selectAll		: 'Selecionar Tudo',
+	removeFormat	: 'Remover Formatação',
+	strike			: 'Tachado',
+	subscript		: 'Subscrito',
+	superscript		: 'Sobrescrito',
+	horizontalrule	: 'Inserir Linha Horizontal',
+	pagebreak		: 'Inserir Quebra de Página',
+	unlink			: 'Remover Hiperlink',
+	undo			: 'Desfazer',
+	redo			: 'Refazer',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Localizar no Servidor',
+		url				: 'URL',
+		protocol		: 'Protocolo',
+		upload			: 'Enviar ao Servidor',
+		uploadSubmit	: 'Enviar para o Servidor',
+		image			: 'Figura',
+		flash			: 'Flash',
+		form			: 'Formulário',
+		checkbox		: 'Caixa de Seleção',
+		radio		: 'Botão de Opção',
+		textField		: 'Caixa de Texto',
+		textarea		: 'Área de Texto',
+		hiddenField		: 'Campo Oculto',
+		button			: 'Botão',
+		select	: 'Caixa de Listagem',
+		imageButton		: 'Botão de Imagem',
+		notSet			: '<não ajustado>',
+		id				: 'Id',
+		name			: 'Nome',
+		langDir			: 'Direção do idioma',
+		langDirLtr		: 'Esquerda para Direita (LTR)',
+		langDirRtl		: 'Direita para Esquerda (RTL)',
+		langCode		: 'Idioma',
+		longDescr		: 'Descrição da URL',
+		cssClass		: 'Classe de Folhas de Estilo',
+		advisoryTitle	: 'Título',
+		cssStyle		: 'Estilos',
+		ok				: 'OK',
+		cancel			: 'Cancelar',
+		generalTab		: 'Geral',
+		advancedTab		: 'Avançado',
+		validateNumberFailed	: 'Este valor não é um número.',
+		confirmNewPage	: 'Todas as mudanças não salvas serão perdidas. Tem certeza de que quer carregar outra página?',
+		confirmCancel	: 'Algumas opções foram alteradas. Tem certeza de que quer fechar a caixa de diálogo?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, indisponível</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Inserir Caractere Especial',
+		title		: 'Selecione um Caractere Especial'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Inserir/Editar Hiperlink',
+		menu		: 'Editar Hiperlink',
+		title		: 'Hiperlink',
+		info		: 'Informações',
+		target		: 'Destino',
+		upload		: 'Enviar ao Servidor',
+		advanced	: 'Avançado',
+		type		: 'Tipo de hiperlink',
+		toAnchor	: 'Âncora nesta página',
+		toEmail		: 'E-Mail',
+		target		: 'Destino',
+		targetNotSet	: '<não ajustado>',
+		targetFrame	: '<frame>',
+		targetPopup	: '<janela popup>',
+		targetNew	: 'Nova Janela (_blank)',
+		targetTop	: 'Janela Superior (_top)',
+		targetSelf	: 'Mesma Janela (_self)',
+		targetParent	: 'Janela Pai (_parent)',
+		targetFrameName	: 'Nome do Frame de Destino',
+		targetPopupName	: 'Nome da Janela Pop-up',
+		popupFeatures	: 'Atributos da Janela Pop-up',
+		popupResizable	: 'Redimensionável',
+		popupStatusBar	: 'Barra de Status',
+		popupLocationBar	: 'Barra de Endereços',
+		popupToolbar	: 'Barra de Ferramentas',
+		popupMenuBar	: 'Barra de Menus',
+		popupFullScreen	: 'Modo Tela Cheia (IE)',
+		popupScrollBars	: 'Barras de Rolagem',
+		popupDependent	: 'Dependente (Netscape)',
+		popupWidth		: 'Largura',
+		popupLeft		: 'Esquerda',
+		popupHeight		: 'Altura',
+		popupTop		: 'Superior',
+		id				: 'Id',
+		langDir			: 'Direção do idioma',
+		langDirNotSet	: '<não ajustado>',
+		langDirLTR		: 'Esquerda para Direita (LTR)',
+		langDirRTL		: 'Direita para Esquerda (RTL)',
+		acccessKey		: 'Chave de Acesso',
+		name			: 'Nome',
+		langCode		: 'Direção do idioma',
+		tabIndex		: 'Índice de Tabulação',
+		advisoryTitle	: 'Título',
+		advisoryContentType	: 'Tipo de Conteúdo',
+		cssClasses		: 'Classe de Folhas de Estilo',
+		charset			: 'Conjunto de Caracteres do Hiperlink',
+		styles			: 'Estilos',
+		selectAnchor	: 'Selecione uma âncora',
+		anchorName		: 'Pelo Nome da âncora',
+		anchorId		: 'Pelo Id do Elemento',
+		emailAddress	: 'Endereço E-Mail',
+		emailSubject	: 'Assunto da Mensagem',
+		emailBody		: 'Corpo da Mensagem',
+		noAnchors		: '(Não há âncoras disponíveis neste documento)',
+		noUrl			: 'Por favor, digite o endereço do Hiperlink',
+		noEmail			: 'Por favor, digite o endereço de e-mail'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Inserir/Editar Âncora',
+		menu		: 'Formatar Âncora',
+		title		: 'Formatar Âncora',
+		name		: 'Nome da Âncora',
+		errorName	: 'Por favor, digite o nome da âncora'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Localizar e Substituir',
+		find				: 'Localizar',
+		replace				: 'Substituir',
+		findWhat			: 'Procurar por:',
+		replaceWith			: 'Substituir por:',
+		notFoundMsg			: 'O texto especificado não foi encontrado.',
+		matchCase			: 'Coincidir Maiúsculas/Minúsculas',
+		matchWord			: 'Coincidir a palavra inteira',
+		matchCyclic			: 'Coincidir cíclico',
+		replaceAll			: 'Substituir Tudo',
+		replaceSuccessMsg	: '%1 ocorrência(s) substituída(s).'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabela',
+		title		: 'Formatar Tabela',
+		menu		: 'Formatar Tabela',
+		deleteTable	: 'Apagar Tabela',
+		rows		: 'Linhas',
+		columns		: 'Colunas',
+		border		: 'Borda',
+		align		: 'Alinhamento',
+		alignNotSet	: '<Não ajustado>',
+		alignLeft	: 'Esquerda',
+		alignCenter	: 'Centralizado',
+		alignRight	: 'Direita',
+		width		: 'Largura',
+		widthPx		: 'pixels',
+		widthPc		: '%',
+		height		: 'Altura',
+		cellSpace	: 'Espaçamento',
+		cellPad		: 'Enchimento',
+		caption		: 'Legenda',
+		summary		: 'Resumo',
+		headers		: 'Cabeçalho',
+		headersNone		: 'Nenhum',
+		headersColumn	: 'Primeira coluna',
+		headersRow		: 'Primeira linha',
+		headersBoth		: 'Ambos',
+		invalidRows		: '"Número de linhas" tem que ser um número maior que 0.',
+		invalidCols		: '"Número de colunas" tem que ser um número maior que 0.',
+		invalidBorder	: '"Tamanho da borda" tem que ser um número.',
+		invalidWidth	: '"Largura da tabela" tem que ser um número.',
+		invalidHeight	: '"Altura da tabela" tem que ser um número.',
+		invalidCellSpacing	: '"Espaçamento das células" tem que ser um número.',
+		invalidCellPadding	: '"Margem interna das células" tem que ser um número.',
+
+		cell :
+		{
+			menu			: 'Célula',
+			insertBefore	: 'Inserir célula à esquerda',
+			insertAfter		: 'Inserir célula à direita',
+			deleteCell		: 'Remover Células',
+			merge			: 'Mesclar Células',
+			mergeRight		: 'Mesclar com célula à direita',
+			mergeDown		: 'Mesclar com célula abaixo',
+			splitHorizontal	: 'Dividir célula horizontalmente',
+			splitVertical	: 'Dividir célula verticalmente',
+			title			: 'Propriedades da célula',
+			cellType		: 'Tipo de célula',
+			rowSpan			: 'Linhas cobertas',
+			colSpan			: 'Colunas cobertas',
+			wordWrap		: 'Quebra de palavra',
+			hAlign			: 'Alinhamento horizontal',
+			vAlign			: 'Alinhamento vertical',
+			alignTop		: 'Alinhar no topo',
+			alignMiddle		: 'Centralizado verticalmente',
+			alignBottom		: 'Alinhar na base',
+			alignBaseline	: 'Patamar de alinhamento',
+			bgColor			: 'Cor de fundo',
+			borderColor		: 'Cor das bordas',
+			data			: 'Dados',
+			header			: 'Cabeçalho',
+			yes				: 'Sim',
+			no				: 'Não',
+			invalidWidth	: 'A largura da célula tem que ser um número.',
+			invalidHeight	: 'A altura da célula tem que ser um número.',
+			invalidRowSpan	: '"Linhas cobertas" tem que ser um número inteiro.',
+			invalidColSpan	: '"Colunas cobertas" tem que ser um número inteiro.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Linha',
+			insertBefore	: 'Inserir linha acima',
+			insertAfter		: 'Inserir linha abaixo',
+			deleteRow		: 'Remover Linhas'
+		},
+
+		column :
+		{
+			menu			: 'Coluna',
+			insertBefore	: 'Inserir coluna à esquerda',
+			insertAfter		: 'Inserir coluna à direita',
+			deleteColumn	: 'Remover Colunas'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Formatar Botão',
+		text		: 'Texto (Valor)',
+		type		: 'Tipo',
+		typeBtn		: 'Botão',
+		typeSbm		: 'Enviar',
+		typeRst		: 'Limpar'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Formatar Caixa de Seleção',
+		radioTitle	: 'Formatar Botão de Opção',
+		value		: 'Valor',
+		selected	: 'Selecionado'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Formatar Formulário',
+		menu		: 'Formatar Formulário',
+		action		: 'Action',
+		method		: 'Método',
+		encoding	: 'Codificação',
+		target		: 'Destino',
+		targetNotSet	: '<não ajustado>',
+		targetNew	: 'Nova Janela (_blank)',
+		targetTop	: 'Janela Superior (_top)',
+		targetSelf	: 'Mesma Janela (_self)',
+		targetParent	: 'Janela Pai (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Formatar Caixa de Listagem',
+		selectInfo	: 'Info',
+		opAvail		: 'Opções disponíveis',
+		value		: 'Valor',
+		size		: 'Tamanho',
+		lines		: 'linhas',
+		chkMulti	: 'Permitir múltiplas seleções',
+		opText		: 'Texto',
+		opValue		: 'Valor',
+		btnAdd		: 'Adicionar',
+		btnModify	: 'Modificar',
+		btnUp		: 'Para cima',
+		btnDown		: 'Para baixo',
+		btnSetValue : 'Definir como selecionado',
+		btnDelete	: 'Remover'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Formatar Área de Texto',
+		cols		: 'Colunas',
+		rows		: 'Linhas'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Formatar Caixa de Texto',
+		name		: 'Nome',
+		value		: 'Valor',
+		charWidth	: 'Comprimento (em caracteres)',
+		maxChars	: 'Número Máximo de Caracteres',
+		type		: 'Tipo',
+		typeText	: 'Texto',
+		typePass	: 'Senha'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Formatar Campo Oculto',
+		name	: 'Nome',
+		value	: 'Valor'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Formatar Figura',
+		titleButton	: 'Formatar Botão de Imagem',
+		menu		: 'Formatar Figura',
+		infoTab	: 'Informações da Figura',
+		btnUpload	: 'Enviar para o Servidor',
+		url		: 'URL',
+		upload	: 'Submeter',
+		alt		: 'Texto Alternativo',
+		width		: 'Largura',
+		height	: 'Altura',
+		lockRatio	: 'Manter proporções',
+		resetSize	: 'Redefinir para o Tamanho Original',
+		border	: 'Borda',
+		hSpace	: 'Horizontal',
+		vSpace	: 'Vertical',
+		align		: 'Alinhamento',
+		alignLeft	: 'Esquerda',
+		alignAbsBottom: 'Inferior Absoluto',
+		alignAbsMiddle: 'Centralizado Absoluto',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Inferior',
+		alignMiddle	: 'Centralizado',
+		alignRight	: 'Direita',
+		alignTextTop	: 'Superior Absoluto',
+		alignTop	: 'Superior',
+		preview	: 'Visualização',
+		alertUrl	: 'Por favor, digite o URL da figura.',
+		linkTab	: 'Hiperlink',
+		button2Img	: 'Você deseja transformar o botão de imagem selecionado em uma imagem comum?',
+		img2Button	: 'Você deseja transformar a imagem selecionada em um botão de imagem?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Propriedades do Flash',
+		propertiesTab	: 'Propriedades',
+		title		: 'Propriedades do Flash',
+		chkPlay		: 'Tocar Automaticamente',
+		chkLoop		: 'Loop',
+		chkMenu		: 'Habilita Menu Flash',
+		chkFull		: 'Permitir tela cheia',
+ 		scale		: 'Escala',
+		scaleAll		: 'Mostrar tudo',
+		scaleNoBorder	: 'Sem Borda',
+		scaleFit		: 'Escala Exata',
+		access			: 'Acesso ao script',
+		accessAlways	: 'Sempre',
+		accessSameDomain	: 'Mesmo domínio',
+		accessNever	: 'Nunca',
+		align		: 'Alinhamento',
+		alignLeft	: 'Esquerda',
+		alignAbsBottom: 'Inferior Absoluto',
+		alignAbsMiddle: 'Centralizado Absoluto',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Inferior',
+		alignMiddle	: 'Centralizado',
+		alignRight	: 'Direita',
+		alignTextTop	: 'Superior Absoluto',
+		alignTop	: 'Superior',
+		quality		: 'Qualidade',
+		qualityBest		 : 'Melhor',
+		qualityHigh		 : 'Alta',
+		qualityAutoHigh	 : 'Alta automático',
+		qualityMedium	 : 'Média',
+		qualityAutoLow	 : 'Média automático',
+		qualityLow		 : 'Baixa',
+		windowModeWindow	 : 'Janela',
+		windowModeOpaque	 : 'Opaca',
+		windowModeTransparent	 : 'Transparente',
+		windowMode	: 'Modo da janela',
+		flashvars	: 'Variáveis do Flash',
+		bgcolor	: 'Cor do Plano de Fundo',
+		width	: 'Largura',
+		height	: 'Altura',
+		hSpace	: 'Horizontal',
+		vSpace	: 'Vertical',
+		validateSrc : 'Por favor, digite o endereço do Hiperlink',
+		validateWidth : '"Largura" tem que ser um número.',
+		validateHeight : '"Altura" tem que ser um número',
+		validateHSpace : '"HSpace" tem que ser um número',
+		validateVSpace : '"VSpace" tem que ser um número.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Verificar Ortografia',
+		title			: 'Corretor gramatical',
+		notAvailable	: 'Desculpe, o serviço não está disponível no momento.',
+		errorLoading	: 'Erro carregando servidor de aplicação: %s.',
+		notInDic		: 'Não encontrada',
+		changeTo		: 'Alterar para',
+		btnIgnore		: 'Ignorar uma vez',
+		btnIgnoreAll	: 'Ignorar Todas',
+		btnReplace		: 'Alterar',
+		btnReplaceAll	: 'Alterar Todas',
+		btnUndo			: 'Desfazer',
+		noSuggestions	: '-sem sugestões de ortografia-',
+		progress		: 'Verificação ortográfica em andamento...',
+		noMispell		: 'Verificação encerrada: Não foram encontrados erros de ortografia',
+		noChanges		: 'Verificação ortográfica encerrada: Não houve alterações',
+		oneChange		: 'Verificação ortográfica encerrada: Uma palavra foi alterada',
+		manyChanges		: 'Verificação ortográfica encerrada: %1 foram alteradas',
+		ieSpellDownload	: 'A verificação ortográfica não foi instalada. Você gostaria de realizar o download agora?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Emoticon',
+		title	: 'Inserir Emoticon'
+	},
+
+	elementsPath :
+	{
+		eleTitle : 'Elemento %1'
+	},
+
+	numberedlist : 'Numeração',
+	bulletedlist : 'Marcadores',
+	indent : 'Aumentar Recuo',
+	outdent : 'Diminuir Recuo',
+
+	justify :
+	{
+		left : 'Alinhar Esquerda',
+		center : 'Centralizar',
+		right : 'Alinhar Direita',
+		block : 'Justificado'
+	},
+
+	blockquote : 'Recuo',
+
+	clipboard :
+	{
+		title		: 'Colar',
+		cutError	: 'As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl+X).',
+		copyError	: 'As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl+C).',
+		pasteMsg	: 'Transfira o link usado no box usando o teclado com (<STRONG>Ctrl+V</STRONG>) e <STRONG>OK</STRONG>.',
+		securityMsg	: 'As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo novamente nesta janela.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Colar do Word',
+		title : 'Colar do Word',
+		advice : 'Transfira o link usado no box usando o teclado com (<STRONG>Ctrl+V</STRONG>) e <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignorar definições de fonte',
+		removeStyle : 'Remove definições de estilo'
+	},
+
+	pasteText :
+	{
+		button : 'Colar como Texto sem Formatação',
+		title : 'Colar como Texto sem Formatação'
+	},
+
+	templates :
+	{
+		button : 'Modelos de layout',
+		title : 'Modelo de layout do conteúdo',
+		insertOption: 'Substituir o conteúdo atual',
+		selectPromptMsg: 'Selecione um modelo de layout para ser aberto no editor<br>(o conteúdo atual será perdido):',
+		emptyListMsg : '(Não foram definidos modelos de layout)'
+	},
+
+	showBlocks : 'Mostrar blocos',
+
+	stylesCombo :
+	{
+		label : 'Estilo',
+		voiceLabel : 'Estilo',
+		panelVoiceLabel : 'Selecione um estilo',
+		panelTitle1 : 'Estilos de bloco',
+		panelTitle2 : 'Estilos em texto corrido',
+		panelTitle3 : 'Estilos de objeto'
+	},
+
+	format :
+	{
+		label : 'Formatação',
+		voiceLabel : 'Formatação',
+		panelTitle : 'Formatação',
+		panelVoiceLabel : 'Selecione uma formatação de parágrafo',
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatado',
+		tag_address : 'Endereço',
+		tag_h1 : 'Título 1',
+		tag_h2 : 'Título 2',
+		tag_h3 : 'Título 3',
+		tag_h4 : 'Título 4',
+		tag_h5 : 'Título 5',
+		tag_h6 : 'Título 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Fonte',
+		voiceLabel : 'Fonte',
+		panelTitle : 'Fonte',
+		panelVoiceLabel : 'Selecione uma fonte'
+	},
+
+	fontSize :
+	{
+		label : 'Tamanho',
+		voiceLabel : 'Tamanho da fonte',
+		panelTitle : 'Tamanho',
+		panelVoiceLabel : 'Selecione um tamanho de fonte'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Cor do Texto',
+		bgColorTitle : 'Cor do Plano de Fundo',
+		auto : 'Automático',
+		more : 'Mais Cores...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Correção gramatical durante a digitação',
+		enable : 'Habilitar SCAYT',
+		disable : 'Desabilitar SCAYT',
+		about : 'Sobre o SCAYT',
+		toggle : 'Ativar/desativar SCAYT',
+		options : 'Opções',
+		langs : 'Línguas',
+		moreSuggestions : 'Mais sugestões',
+		ignore : 'Ignorar',
+		ignoreAll : 'Ignorar todas',
+		addWord : 'Adicionar palavra',
+		emptyDic : 'O nome do dicionário não deveria estar vazio.',
+		optionsTab : 'Opções',
+		languagesTab : 'Línguas',
+		dictionariesTab : 'Dicionários',
+		aboutTab : 'Sobre'
+	},
+
+	about :
+	{
+		title : 'Sobre o CKEditor',
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'Para informações sobre a licença, por favor, visite o nosso site na Internet:',
+		copy : 'Direito de reprodução &copy; $1. Todos os direitos reservados.'
+	},
+
+	maximize : 'Maximizar',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Âncora',
+		flash : 'Animação em Flash',
+		div : 'Quebra de página',
+		unknown : 'Objeto desconhecido'
+	},
+
+	resize : 'Arraste para redimensionar',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/ru.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/ru.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/ru.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Russian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['ru'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Источник',
+	newPage			: 'Новая страница',
+	save			: 'Сохранить',
+	preview			: 'Предварительный просмотр',
+	cut				: 'Вырезать',
+	copy			: 'Копировать',
+	paste			: 'Вставить',
+	print			: 'Печать',
+	underline		: 'Подчеркнутый',
+	bold			: 'Жирный',
+	italic			: 'Курсив',
+	selectAll		: 'Выделить все',
+	removeFormat	: 'Убрать форматирование',
+	strike			: 'Зачеркнутый',
+	subscript		: 'Подстрочный индекс',
+	superscript		: 'Надстрочный индекс',
+	horizontalrule	: 'Вставить горизонтальную линию',
+	pagebreak		: 'Вставить разрыв страницы',
+	unlink			: 'Убрать ссылку',
+	undo			: 'Отменить',
+	redo			: 'Повторить',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Просмотреть на сервере',
+		url				: 'URL',
+		protocol		: 'Протокол',
+		upload			: 'Закачать',
+		uploadSubmit	: 'Послать на сервер',
+		image			: 'Изображение',
+		flash			: 'Flash',
+		form			: 'Форма',
+		checkbox		: 'Флаговая кнопка',
+		radio		: 'Кнопка выбора',
+		textField		: 'Текстовое поле',
+		textarea		: 'Текстовая область',
+		hiddenField		: 'Скрытое поле',
+		button			: 'Кнопка',
+		select	: 'Список',
+		imageButton		: 'Кнопка с изображением',
+		notSet			: '<не определено>',
+		id				: 'Идентификатор',
+		name			: 'Имя',
+		langDir			: 'Направление языка',
+		langDirLtr		: 'Слева на право (LTR)',
+		langDirRtl		: 'Справа на лево (RTL)',
+		langCode		: 'Язык',
+		longDescr		: 'Длинное описание URL',
+		cssClass		: 'Класс CSS',
+		advisoryTitle	: 'Заголовок',
+		cssStyle		: 'Стиль CSS',
+		ok				: 'ОК',
+		cancel			: 'Отмена',
+		generalTab		: 'Информация',
+		advancedTab		: 'Расширенный',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Вставить специальный символ',
+		title		: 'Выберите специальный символ'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Вставить/Редактировать ссылку',
+		menu		: 'Вставить ссылку',
+		title		: 'Ссылка',
+		info		: 'Информация ссылки',
+		target		: 'Цель',
+		upload		: 'Закачать',
+		advanced	: 'Расширенный',
+		type		: 'Тип ссылки',
+		toAnchor	: 'Якорь на эту страницу',
+		toEmail		: 'Эл. почта',
+		target		: 'Цель',
+		targetNotSet	: '<не определено>',
+		targetFrame	: '<фрейм>',
+		targetPopup	: '<всплывающее окно>',
+		targetNew	: 'Новое окно (_blank)',
+		targetTop	: 'Самое верхнее окно (_top)',
+		targetSelf	: 'Тоже окно (_self)',
+		targetParent	: 'Родительское окно (_parent)',
+		targetFrameName	: 'Имя целевого фрейма',
+		targetPopupName	: 'Имя всплывающего окна',
+		popupFeatures	: 'Свойства всплывающего окна',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Строка состояния',
+		popupLocationBar	: 'Панель локации',
+		popupToolbar	: 'Панель инструментов',
+		popupMenuBar	: 'Панель меню',
+		popupFullScreen	: 'Полный экран (IE)',
+		popupScrollBars	: 'Полосы прокрутки',
+		popupDependent	: 'Зависимый (Netscape)',
+		popupWidth		: 'Ширина',
+		popupLeft		: 'Позиция слева',
+		popupHeight		: 'Высота',
+		popupTop		: 'Позиция сверху',
+		id				: 'Id', // MISSING
+		langDir			: 'Направление языка',
+		langDirNotSet	: '<не определено>',
+		langDirLTR		: 'Слева на право (LTR)',
+		langDirRTL		: 'Справа на лево (RTL)',
+		acccessKey		: 'Горячая клавиша',
+		name			: 'Имя',
+		langCode		: 'Направление языка',
+		tabIndex		: 'Последовательность перехода',
+		advisoryTitle	: 'Заголовок',
+		advisoryContentType	: 'Тип содержимого',
+		cssClasses		: 'Класс CSS',
+		charset			: 'Кодировка',
+		styles			: 'Стиль CSS',
+		selectAnchor	: 'Выберите якорь',
+		anchorName		: 'По имени якоря',
+		anchorId		: 'По идентификатору элемента',
+		emailAddress	: 'Адрес эл. почты',
+		emailSubject	: 'Заголовок сообщения',
+		emailBody		: 'Тело сообщения',
+		noAnchors		: '(Нет якорей доступных в этом документе)',
+		noUrl			: 'Пожалуйста, введите URL ссылки',
+		noEmail			: 'Пожалуйста, введите адрес эл. почты'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Вставить/Редактировать якорь',
+		menu		: 'Свойства якоря',
+		title		: 'Свойства якоря',
+		name		: 'Имя якоря',
+		errorName	: 'Пожалуйста, введите имя якоря'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Найти и заменить',
+		find				: 'Найти',
+		replace				: 'Заменить',
+		findWhat			: 'Найти:',
+		replaceWith			: 'Заменить на:',
+		notFoundMsg			: 'Указанный текст не найден.',
+		matchCase			: 'Учитывать регистр',
+		matchWord			: 'Совпадение целых слов',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Заменить все',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Таблица',
+		title		: 'Свойства таблицы',
+		menu		: 'Свойства таблицы',
+		deleteTable	: 'Удалить таблицу',
+		rows		: 'Строки',
+		columns		: 'Колонки',
+		border		: 'Размер бордюра',
+		align		: 'Выравнивание',
+		alignNotSet	: '<Не уст.>',
+		alignLeft	: 'Слева',
+		alignCenter	: 'По центру',
+		alignRight	: 'Справа',
+		width		: 'Ширина',
+		widthPx		: 'пикселей',
+		widthPc		: 'процентов',
+		height		: 'Высота',
+		cellSpace	: 'Промежуток (spacing)',
+		cellPad		: 'Отступ (padding)',
+		caption		: 'Заголовок',
+		summary		: 'Резюме',
+		headers		: 'Заголовки',
+		headersNone		: 'Нет',
+		headersColumn	: 'Первый столбец',
+		headersRow		: 'Первая строка',
+		headersBoth		: 'Оба варианта',
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Ячейка',
+			insertBefore	: 'Вставить ячейку до',
+			insertAfter		: 'Вставить ячейку после',
+			deleteCell		: 'Удалить ячейки',
+			merge			: 'Соединить ячейки',
+			mergeRight		: 'Соединить вправо',
+			mergeDown		: 'Соединить вниз',
+			splitHorizontal	: 'Разбить ячейку горизонтально',
+			splitVertical	: 'Разбить ячейку вертикально',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Строка',
+			insertBefore	: 'Вставить строку до',
+			insertAfter		: 'Вставить строку после',
+			deleteRow		: 'Удалить строки'
+		},
+
+		column :
+		{
+			menu			: 'Колонка',
+			insertBefore	: 'Вставить колонку до',
+			insertAfter		: 'Вставить колонку после',
+			deleteColumn	: 'Удалить колонки'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Свойства кнопки',
+		text		: 'Текст (Значение)',
+		type		: 'Тип',
+		typeBtn		: 'Кнопка',
+		typeSbm		: 'Отправить',
+		typeRst		: 'Сбросить'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Свойства флаговой кнопки',
+		radioTitle	: 'Свойства кнопки выбора',
+		value		: 'Значение',
+		selected	: 'Выбранная'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Свойства формы',
+		menu		: 'Свойства формы',
+		action		: 'Действие',
+		method		: 'Метод',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Цель',
+		targetNotSet	: '<не определено>',
+		targetNew	: 'Новое окно (_blank)',
+		targetTop	: 'Самое верхнее окно (_top)',
+		targetSelf	: 'Тоже окно (_self)',
+		targetParent	: 'Родительское окно (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Свойства списка',
+		selectInfo	: 'Информация',
+		opAvail		: 'Доступные варианты',
+		value		: 'Значение',
+		size		: 'Размер',
+		lines		: 'линии',
+		chkMulti	: 'Разрешить множественный выбор',
+		opText		: 'Текст',
+		opValue		: 'Значение',
+		btnAdd		: 'Добавить',
+		btnModify	: 'Модифицировать',
+		btnUp		: 'Вверх',
+		btnDown		: 'Вниз',
+		btnSetValue : 'Установить как выбранное значение',
+		btnDelete	: 'Удалить'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Свойства текстовой области',
+		cols		: 'Колонки',
+		rows		: 'Строки'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Свойства текстового поля',
+		name		: 'Имя',
+		value		: 'Значение',
+		charWidth	: 'Ширина',
+		maxChars	: 'Макс. кол-во символов',
+		type		: 'Тип',
+		typeText	: 'Текст',
+		typePass	: 'Пароль'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Свойства скрытого поля',
+		name	: 'Имя',
+		value	: 'Значение'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Свойства изображения',
+		titleButton	: 'Свойства кнопки с изображением',
+		menu		: 'Свойства изображения',
+		infoTab	: 'Информация о изображении',
+		btnUpload	: 'Послать на сервер',
+		url		: 'URL',
+		upload	: 'Закачать',
+		alt		: 'Альтернативный текст',
+		width		: 'Ширина',
+		height	: 'Высота',
+		lockRatio	: 'Сохранять пропорции',
+		resetSize	: 'Сбросить размер',
+		border	: 'Бордюр',
+		hSpace	: 'Горизонтальный отступ',
+		vSpace	: 'Вертикальный отступ',
+		align		: 'Выравнивание',
+		alignLeft	: 'По левому краю',
+		alignAbsBottom: 'Абс понизу',
+		alignAbsMiddle: 'Абс посередине',
+		alignBaseline	: 'По базовой линии',
+		alignBottom	: 'Понизу',
+		alignMiddle	: 'Посередине',
+		alignRight	: 'По правому краю',
+		alignTextTop	: 'Текст наверху',
+		alignTop	: 'По верху',
+		preview	: 'Предварительный просмотр',
+		alertUrl	: 'Пожалуйста, введите URL изображения',
+		linkTab	: 'Ссылка',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Свойства Flash',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Свойства Flash',
+		chkPlay		: 'Авто проигрывание',
+		chkLoop		: 'Повтор',
+		chkMenu		: 'Включить меню Flash',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Масштабировать',
+		scaleAll		: 'Показывать все',
+		scaleNoBorder	: 'Без бордюра',
+		scaleFit		: 'Точное совпадение',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Выравнивание',
+		alignLeft	: 'По левому краю',
+		alignAbsBottom: 'Абс понизу',
+		alignAbsMiddle: 'Абс посередине',
+		alignBaseline	: 'По базовой линии',
+		alignBottom	: 'Понизу',
+		alignMiddle	: 'Посередине',
+		alignRight	: 'По правому краю',
+		alignTextTop	: 'Текст наверху',
+		alignTop	: 'По верху',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Цвет фона',
+		width	: 'Ширина',
+		height	: 'Высота',
+		hSpace	: 'Горизонтальный отступ',
+		vSpace	: 'Вертикальный отступ',
+		validateSrc : 'Пожалуйста, введите URL ссылки',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Проверить орфографию',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Нет в словаре',
+		changeTo		: 'Заменить на',
+		btnIgnore		: 'Игнорировать',
+		btnIgnoreAll	: 'Игнорировать все',
+		btnReplace		: 'Заменить',
+		btnReplaceAll	: 'Заменить все',
+		btnUndo			: 'Отменить',
+		noSuggestions	: '- Нет предположений -',
+		progress		: 'Идет проверка орфографии...',
+		noMispell		: 'Проверка орфографии закончена: ошибок не найдено',
+		noChanges		: 'Проверка орфографии закончена: ни одного слова не изменено',
+		oneChange		: 'Проверка орфографии закончена: одно слово изменено',
+		manyChanges		: 'Проверка орфографии закончена: 1% слов изменен',
+		ieSpellDownload	: 'Модуль проверки орфографии не установлен. Хотите скачать его сейчас?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Смайлик',
+		title	: 'Вставить смайлик'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Нумерованный список',
+	bulletedlist : 'Маркированный список',
+	indent : 'Увеличить отступ',
+	outdent : 'Уменьшить отступ',
+
+	justify :
+	{
+		left : 'По левому краю',
+		center : 'По центру',
+		right : 'По правому краю',
+		block : 'По ширине'
+	},
+
+	blockquote : 'Цитата',
+
+	clipboard :
+	{
+		title		: 'Вставить',
+		cutError	: 'Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции вырезания. Пожалуйста, используйте клавиатуру для этого (Ctrl+X).',
+		copyError	: 'Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции копирования. Пожалуйста, используйте клавиатуру для этого (Ctrl+C).',
+		pasteMsg	: 'Пожалуйста, вставьте текст в прямоугольник, используя сочетание клавиш (<STRONG>Ctrl+V</STRONG>), и нажмите <STRONG>OK</STRONG>.',
+		securityMsg	: 'По причине настроек безопасности браузера, редактор не имеет доступа к данным буфера обмена напрямую. Вам необходимо вставить текст снова в это окно.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Вставить из Word',
+		title : 'Вставить из Word',
+		advice : 'Пожалуйста, вставьте текст в прямоугольник, используя сочетание клавиш (<STRONG>Ctrl+V</STRONG>), и нажмите <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Игнорировать определения гарнитуры',
+		removeStyle : 'Убрать определения стилей'
+	},
+
+	pasteText :
+	{
+		button : 'Вставить только текст',
+		title : 'Вставить только текст'
+	},
+
+	templates :
+	{
+		button : 'Шаблоны',
+		title : 'Шаблоны содержимого',
+		insertOption: 'Заменить текущее содержание',
+		selectPromptMsg: 'Пожалуйста, выберете шаблон для открытия в редакторе<br>(текущее содержимое будет потеряно):',
+		emptyListMsg : '(Ни одного шаблона не определено)'
+	},
+
+	showBlocks : 'Показать блоки',
+
+	stylesCombo :
+	{
+		label : 'Стиль',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Форматирование',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Форматирование',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Нормальный',
+		tag_pre : 'Форматированный',
+		tag_address : 'Адрес',
+		tag_h1 : 'Заголовок 1',
+		tag_h2 : 'Заголовок 2',
+		tag_h3 : 'Заголовок 3',
+		tag_h4 : 'Заголовок 4',
+		tag_h5 : 'Заголовок 5',
+		tag_h6 : 'Заголовок 6',
+		tag_div : 'Нормальный (DIV)'
+	},
+
+	font :
+	{
+		label : 'Шрифт',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Шрифт',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Размер',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Размер',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Цвет текста',
+		bgColorTitle : 'Цвет фона',
+		auto : 'Автоматический',
+		more : 'Цвета...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/af.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/af.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/af.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Afrikaans language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['af'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Source',
+	newPage			: 'Nuwe Bladsy',
+	save			: 'Bewaar',
+	preview			: 'Voorskou',
+	cut				: 'Uitsny ',
+	copy			: 'Kopieer',
+	paste			: 'Byvoeg',
+	print			: 'Druk',
+	underline		: 'Onderstreep',
+	bold			: 'Vet',
+	italic			: 'Skuins',
+	selectAll		: 'Selekteer alles',
+	removeFormat	: 'Formaat verweider',
+	strike			: 'Gestreik',
+	subscript		: 'Subscript',
+	superscript		: 'Superscript',
+	horizontalrule	: 'Horisontale lyn byvoeg',
+	pagebreak		: 'Bladsy breek byvoeg',
+	unlink			: 'Skakel verweider',
+	undo			: 'Ont-skep',
+	redo			: 'Her-skep',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Server deurblaai',
+		url				: 'URL',
+		protocol		: 'Protokol',
+		upload			: 'Oplaai',
+		uploadSubmit	: 'Stuur dit na die Server',
+		image			: 'Beeld',
+		flash			: 'Flash',
+		form			: 'Form',
+		checkbox		: 'HakBox',
+		radio		: 'PuntBox',
+		textField		: 'Byvoegbare karakter strook',
+		textarea		: 'Byvoegbare karakter area',
+		hiddenField		: 'Blinde strook',
+		button			: 'Knop',
+		select	: 'Opklapbare keuse strook',
+		imageButton		: 'Beeld knop',
+		notSet			: '<geen instelling>',
+		id				: 'Id',
+		name			: 'Naam',
+		langDir			: 'Taal rigting',
+		langDirLtr		: 'Links na regs (LTR)',
+		langDirRtl		: 'Regs na links (RTL)',
+		langCode		: 'Taal kode',
+		longDescr		: 'Lang beskreiwing URL',
+		cssClass		: 'Skakel Tiepe',
+		advisoryTitle	: 'Voorbeveelings Titel',
+		cssStyle		: 'Styl',
+		ok				: 'OK',
+		cancel			: 'Kanseleer',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Ingewikkeld',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Spesiaale Karakter byvoeg',
+		title		: 'Kies spesiale karakter'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Skakel byvoeg/verander',
+		menu		: 'Verander skakel',
+		title		: 'Skakel',
+		info		: 'Skakel informasie',
+		target		: 'Mikpunt',
+		upload		: 'Oplaai',
+		advanced	: 'Ingewikkeld',
+		type		: 'Skakel soort',
+		toAnchor	: 'Skakel na plekhouers in text',
+		toEmail		: 'E-Mail',
+		target		: 'Mikpunt',
+		targetNotSet	: '<geen instelling>',
+		targetFrame	: '<raam>',
+		targetPopup	: '<popup venster>',
+		targetNew	: 'Nuwe Venster (_blank)',
+		targetTop	: 'Boonste Venster (_top)',
+		targetSelf	: 'Selfde Venster (_self)',
+		targetParent	: 'Vorige Venster (_parent)',
+		targetFrameName	: 'Mikpunt Venster Naam',
+		targetPopupName	: 'Popup Venster Naam',
+		popupFeatures	: 'Popup Venster Geaartheid',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Status Balk',
+		popupLocationBar	: 'Adres Balk',
+		popupToolbar	: 'Gereedskap Balk',
+		popupMenuBar	: 'Menu Balk',
+		popupFullScreen	: 'Voll Skerm (IE)',
+		popupScrollBars	: 'Gleibalkstuk',
+		popupDependent	: 'Afhanklik (Netscape)',
+		popupWidth		: 'Weite',
+		popupLeft		: 'Links Posisie',
+		popupHeight		: 'Hoogde',
+		popupTop		: 'Bo Posisie',
+		id				: 'Id', // MISSING
+		langDir			: 'Taal rigting',
+		langDirNotSet	: '<geen instelling>',
+		langDirLTR		: 'Links na regs (LTR)',
+		langDirRTL		: 'Regs na links (RTL)',
+		acccessKey		: 'Toegang sleutel',
+		name			: 'Naam',
+		langCode		: 'Taal rigting',
+		tabIndex		: 'Tab Index',
+		advisoryTitle	: 'Voorbeveelings Titel',
+		advisoryContentType	: 'Voorbeveelings inhoud soort',
+		cssClasses		: 'Skakel Tiepe',
+		charset			: 'Geskakelde voorbeeld karakterstel',
+		styles			: 'Styl',
+		selectAnchor	: 'Kies \'n plekhouer',
+		anchorName		: 'Volgens plekhouer naam',
+		anchorId		: 'Volgens element Id',
+		emailAddress	: 'E-Mail Adres',
+		emailSubject	: 'Boodskap Opskrif',
+		emailBody		: 'Boodskap Inhoud',
+		noAnchors		: '(Geen plekhouers beskikbaar in dokument}',
+		noUrl			: 'Voeg asseblief die URL in',
+		noEmail			: 'Voeg asseblief die e-mail adres in'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Plekhouer byvoeg/verander',
+		menu		: 'Plekhouer eienskappe',
+		title		: 'Plekhouer eienskappe',
+		name		: 'Plekhouer Naam',
+		errorName	: 'Voltooi die plekhouer naam asseblief'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'Vind',
+		replace				: 'Vervang',
+		findWhat			: 'Soek wat:',
+		replaceWith			: 'Vervang met:',
+		notFoundMsg			: 'Die gespesifiseerde karakters word nie gevind nie.',
+		matchCase			: 'Vergelyk karakter skryfweise',
+		matchWord			: 'Vergelyk komplete woord',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Vervang alles',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabel',
+		title		: 'Tabel eienskappe',
+		menu		: 'Tabel eienskappe',
+		deleteTable	: 'Tabel verweider',
+		rows		: 'Reie',
+		columns		: 'Kolome',
+		border		: 'Kant groote',
+		align		: 'Parideering',
+		alignNotSet	: '<geen instelling>',
+		alignLeft	: 'Links',
+		alignCenter	: 'Middel',
+		alignRight	: 'Regs',
+		width		: 'Weite',
+		widthPx		: 'pixels',
+		widthPc		: 'percent',
+		height		: 'Hoogde',
+		cellSpace	: 'Cell spasieering',
+		cellPad		: 'Cell buffer',
+		caption		: 'Beskreiwing',
+		summary		: 'Opsomming',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Cell',
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'Cell verweider',
+			merge			: 'Cell verenig',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Ry',
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'Ry verweider'
+		},
+
+		column :
+		{
+			menu			: 'Kolom',
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'Kolom verweider'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Knop eienskappe',
+		text		: 'Karakters (Waarde)',
+		type		: 'Soort',
+		typeBtn		: 'Knop',
+		typeSbm		: 'Indien',
+		typeRst		: 'Reset'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'HakBox eienskappe',
+		radioTitle	: 'PuntBox eienskappe',
+		value		: 'Waarde',
+		selected	: 'Uitgekies'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Form eienskappe',
+		menu		: 'Form eienskappe',
+		action		: 'Aksie',
+		method		: 'Metode',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Mikpunt',
+		targetNotSet	: '<geen instelling>',
+		targetNew	: 'Nuwe Venster (_blank)',
+		targetTop	: 'Boonste Venster (_top)',
+		targetSelf	: 'Selfde Venster (_self)',
+		targetParent	: 'Vorige Venster (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Opklapbare keuse strook eienskappe',
+		selectInfo	: 'Info',
+		opAvail		: 'Beskikbare Opsies',
+		value		: 'Waarde',
+		size		: 'Grote',
+		lines		: 'lyne',
+		chkMulti	: 'Laat meerere keuses toe',
+		opText		: 'Karakters',
+		opValue		: 'Waarde',
+		btnAdd		: 'Byvoeg',
+		btnModify	: 'Verander',
+		btnUp		: 'Op',
+		btnDown		: 'Af',
+		btnSetValue : 'Stel as uitgekiesde waarde',
+		btnDelete	: 'Verweider'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Karakter area eienskappe',
+		cols		: 'Kolom',
+		rows		: 'Reie'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Karakter strook eienskappe',
+		name		: 'Naam',
+		value		: 'Waarde',
+		charWidth	: 'Karakter weite',
+		maxChars	: 'Maximale karakters',
+		type		: 'Soort',
+		typeText	: 'Karakters',
+		typePass	: 'Wagwoord'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Blinde strook eienskappe',
+		name	: 'Naam',
+		value	: 'Waarde'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Beeld eienskappe',
+		titleButton	: 'Beeld knop eienskappe',
+		menu		: 'Beeld eienskappe',
+		infoTab	: 'Beeld informasie',
+		btnUpload	: 'Stuur dit na die Server',
+		url		: 'URL',
+		upload	: 'Uplaai',
+		alt		: 'Alternatiewe beskrywing',
+		width		: 'Weidte',
+		height	: 'Hoogde',
+		lockRatio	: 'Behou preporsie',
+		resetSize	: 'Herstel groote',
+		border	: 'Kant',
+		hSpace	: 'HSpasie',
+		vSpace	: 'VSpasie',
+		align		: 'Paradeer',
+		alignLeft	: 'Links',
+		alignAbsBottom: 'Abs Onder',
+		alignAbsMiddle: 'Abs Middel',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Onder',
+		alignMiddle	: 'Middel',
+		alignRight	: 'Regs',
+		alignTextTop	: 'Text Bo',
+		alignTop	: 'Bo',
+		preview	: 'Voorskou',
+		alertUrl	: 'Voeg asseblief Beeld URL in.',
+		linkTab	: 'Skakel',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash eienskappe',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flash eienskappe',
+		chkPlay		: 'Automaties Speel',
+		chkLoop		: 'Herhaling',
+		chkMenu		: 'Laat Flash Menu toe',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Scale',
+		scaleAll		: 'Wys alles',
+		scaleNoBorder	: 'Geen kante',
+		scaleFit		: 'Presiese pas',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Paradeer',
+		alignLeft	: 'Links',
+		alignAbsBottom: 'Abs Onder',
+		alignAbsMiddle: 'Abs Middel',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Onder',
+		alignMiddle	: 'Middel',
+		alignRight	: 'Regs',
+		alignTextTop	: 'Text Bo',
+		alignTop	: 'Bo',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Agtergrond kleur',
+		width	: 'Weidte',
+		height	: 'Hoogde',
+		hSpace	: 'HSpasie',
+		vSpace	: 'VSpasie',
+		validateSrc : 'Voeg asseblief die URL in',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Spelling nagaan',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Nie in woordeboek nie',
+		changeTo		: 'Verander na',
+		btnIgnore		: 'Ignoreer',
+		btnIgnoreAll	: 'Ignoreer na-volgende',
+		btnReplace		: 'Vervang',
+		btnReplaceAll	: 'vervang na-volgende',
+		btnUndo			: 'Ont-skep',
+		noSuggestions	: '- Geen voorstel -',
+		progress		: 'Spelling word beproef...',
+		noMispell		: 'Spellproef kompleet: Geen foute',
+		noChanges		: 'Spellproef kompleet: Geen woord veranderings',
+		oneChange		: 'Spellproef kompleet: Een woord verander',
+		manyChanges		: 'Spellproef kompleet: %1 woorde verander',
+		ieSpellDownload	: 'Geen Spellproefer geinstaleer nie. Wil U dit aflaai?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Voeg Smiley by'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Genommerde lys',
+	bulletedlist : 'Gepunkte lys',
+	indent : 'Paradeering verleng',
+	outdent : 'Paradeering verkort',
+
+	justify :
+	{
+		left : 'Links rig',
+		center : 'Rig Middel',
+		right : 'Regs rig',
+		block : 'Blok paradeer'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Byvoeg',
+		cutError	: 'U browser se sekuriteit instelling behinder die uitsny aksie. Gebruik asseblief die sleutel kombenasie(Ctrl+X).',
+		copyError	: 'U browser se sekuriteit instelling behinder die kopieerings aksie. Gebruik asseblief die sleutel kombenasie(Ctrl+C).',
+		pasteMsg	: 'Voeg asseblief die inhoud in die gegewe box by met sleutel kombenasie(<STRONG>Ctrl+V</STRONG>) en druk <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Van Word af byvoeg',
+		title : 'Van Word af byvoeg',
+		advice : 'Voeg asseblief die inhoud in die gegewe box by met sleutel kombenasie(<STRONG>Ctrl+V</STRONG>) en druk <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignoreer karakter soort defenisies',
+		removeStyle : 'Verweider Styl defenisies'
+	},
+
+	pasteText :
+	{
+		button : 'Voeg slegs karakters by',
+		title : 'Voeg slegs karakters by'
+	},
+
+	templates :
+	{
+		button : 'Templates',
+		title : 'Inhoud Templates',
+		insertOption: 'Vervang bestaande inhoud',
+		selectPromptMsg: 'Kies die template om te gebruik in die editor<br>(Inhoud word vervang!):',
+		emptyListMsg : '(Geen templates gedefinieerd)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Styl',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Karakter formaat',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Karakter formaat',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normaal',
+		tag_pre : 'Geformateerd',
+		tag_address : 'Adres',
+		tag_h1 : 'Opskrif 1',
+		tag_h2 : 'Opskrif 2',
+		tag_h3 : 'Opskrif 3',
+		tag_h4 : 'Opskrif 4',
+		tag_h5 : 'Opskrif 5',
+		tag_h6 : 'Opskrif 6',
+		tag_div : 'Normaal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Karakters',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Karakters',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Karakter grote',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Karakter grote',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Karakter kleur',
+		bgColorTitle : 'Agtergrond kleur',
+		auto : 'Automaties',
+		more : 'Meer Kleure...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/fr-ca.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/fr-ca.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/fr-ca.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Canadian French language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['fr-ca'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Source',
+	newPage			: 'Nouvelle page',
+	save			: 'Sauvegarder',
+	preview			: 'Previsualiser',
+	cut				: 'Couper',
+	copy			: 'Copier',
+	paste			: 'Coller',
+	print			: 'Imprimer',
+	underline		: 'Souligné',
+	bold			: 'Gras',
+	italic			: 'Italique',
+	selectAll		: 'Tout sélectionner',
+	removeFormat	: 'Supprimer le formatage',
+	strike			: 'Barrer',
+	subscript		: 'Indice',
+	superscript		: 'Exposant',
+	horizontalrule	: 'Insérer un séparateur',
+	pagebreak		: 'Insérer un saut de page',
+	unlink			: 'Supprimer le lien',
+	undo			: 'Annuler',
+	redo			: 'Refaire',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Parcourir le serveur',
+		url				: 'URL',
+		protocol		: 'Protocole',
+		upload			: 'Télécharger',
+		uploadSubmit	: 'Envoyer sur le serveur',
+		image			: 'Image',
+		flash			: 'Animation Flash',
+		form			: 'Formulaire',
+		checkbox		: 'Case à cocher',
+		radio		: 'Bouton radio',
+		textField		: 'Champ texte',
+		textarea		: 'Zone de texte',
+		hiddenField		: 'Champ caché',
+		button			: 'Bouton',
+		select	: 'Champ de sélection',
+		imageButton		: 'Bouton image',
+		notSet			: '<Par défaut>',
+		id				: 'Id',
+		name			: 'Nom',
+		langDir			: 'Sens d\'écriture',
+		langDirLtr		: 'De gauche à droite (LTR)',
+		langDirRtl		: 'De droite à gauche (RTL)',
+		langCode		: 'Code langue',
+		longDescr		: 'URL de description longue',
+		cssClass		: 'Classes de feuilles de style',
+		advisoryTitle	: 'Titre',
+		cssStyle		: 'Style',
+		ok				: 'OK',
+		cancel			: 'Annuler',
+		generalTab		: 'Général',
+		advancedTab		: 'Avancée',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Insérer un caractère spécial',
+		title		: 'Insérer un caractère spécial'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Insérer/modifier le lien',
+		menu		: 'Modifier le lien',
+		title		: 'Propriétés du lien',
+		info		: 'Informations sur le lien',
+		target		: 'Destination',
+		upload		: 'Télécharger',
+		advanced	: 'Avancée',
+		type		: 'Type de lien',
+		toAnchor	: 'Ancre dans cette page',
+		toEmail		: 'E-Mail',
+		target		: 'Destination',
+		targetNotSet	: '<Par défaut>',
+		targetFrame	: '<Cadre>',
+		targetPopup	: '<fenêtre popup>',
+		targetNew	: 'Nouvelle fenêtre (_blank)',
+		targetTop	: 'Fenêtre supérieure (_top)',
+		targetSelf	: 'Même fenêtre (_self)',
+		targetParent	: 'Fenêtre mère (_parent)',
+		targetFrameName	: 'Nom du cadre de destination',
+		targetPopupName	: 'Nom de la fenêtre popup',
+		popupFeatures	: 'Caractéristiques de la fenêtre popup',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Barre d\'état',
+		popupLocationBar	: 'Barre d\'adresses',
+		popupToolbar	: 'Barre d\'outils',
+		popupMenuBar	: 'Barre de menu',
+		popupFullScreen	: 'Plein écran (IE)',
+		popupScrollBars	: 'Barres de défilement',
+		popupDependent	: 'Dépendante (Netscape)',
+		popupWidth		: 'Largeur',
+		popupLeft		: 'Position à partir de la gauche',
+		popupHeight		: 'Hauteur',
+		popupTop		: 'Position à partir du haut',
+		id				: 'Id', // MISSING
+		langDir			: 'Sens d\'écriture',
+		langDirNotSet	: '<Par défaut>',
+		langDirLTR		: 'De gauche à droite (LTR)',
+		langDirRTL		: 'De droite à gauche (RTL)',
+		acccessKey		: 'Équivalent clavier',
+		name			: 'Nom',
+		langCode		: 'Sens d\'écriture',
+		tabIndex		: 'Ordre de tabulation',
+		advisoryTitle	: 'Titre',
+		advisoryContentType	: 'Type de contenu',
+		cssClasses		: 'Classes de feuilles de style',
+		charset			: 'Encodage de caractère',
+		styles			: 'Style',
+		selectAnchor	: 'Sélectionner une ancre',
+		anchorName		: 'Par nom',
+		anchorId		: 'Par id',
+		emailAddress	: 'Adresse E-Mail',
+		emailSubject	: 'Sujet du message',
+		emailBody		: 'Corps du message',
+		noAnchors		: '(Pas d\'ancre disponible dans le document)',
+		noUrl			: 'Veuillez saisir l\'URL',
+		noEmail			: 'Veuillez saisir l\'adresse e-mail'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Insérer/modifier l\'ancre',
+		menu		: 'Propriétés de l\'ancre',
+		title		: 'Propriétés de l\'ancre',
+		name		: 'Nom de l\'ancre',
+		errorName	: 'Veuillez saisir le nom de l\'ancre'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Chercher et Remplacer',
+		find				: 'Chercher',
+		replace				: 'Remplacer',
+		findWhat			: 'Rechercher:',
+		replaceWith			: 'Remplacer par:',
+		notFoundMsg			: 'Le texte indiqué est introuvable.',
+		matchCase			: 'Respecter la casse',
+		matchWord			: 'Mot entier',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Tout remplacer',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tableau',
+		title		: 'Propriétés du tableau',
+		menu		: 'Propriétés du tableau',
+		deleteTable	: 'Supprimer le tableau',
+		rows		: 'Lignes',
+		columns		: 'Colonnes',
+		border		: 'Taille de la bordure',
+		align		: 'Alignement',
+		alignNotSet	: '<Par défaut>',
+		alignLeft	: 'Gauche',
+		alignCenter	: 'Centré',
+		alignRight	: 'Droite',
+		width		: 'Largeur',
+		widthPx		: 'pixels',
+		widthPc		: 'pourcentage',
+		height		: 'Hauteur',
+		cellSpace	: 'Espacement',
+		cellPad		: 'Contour',
+		caption		: 'Titre',
+		summary		: 'Résumé',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Cellule',
+			insertBefore	: 'Insérer une cellule avant',
+			insertAfter		: 'Insérer une cellule après',
+			deleteCell		: 'Supprimer des cellules',
+			merge			: 'Fusionner les cellules',
+			mergeRight		: 'Fusionner à droite',
+			mergeDown		: 'Fusionner en bas',
+			splitHorizontal	: 'Scinder la cellule horizontalement',
+			splitVertical	: 'Scinder la cellule verticalement',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Ligne',
+			insertBefore	: 'Insérer une ligne avant',
+			insertAfter		: 'Insérer une ligne après',
+			deleteRow		: 'Supprimer des lignes'
+		},
+
+		column :
+		{
+			menu			: 'Colonne',
+			insertBefore	: 'Insérer une colonne avant',
+			insertAfter		: 'Insérer une colonne après',
+			deleteColumn	: 'Supprimer des colonnes'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Propriétés du bouton',
+		text		: 'Texte (Valeur)',
+		type		: 'Type',
+		typeBtn		: 'Bouton',
+		typeSbm		: 'Soumettre',
+		typeRst		: 'Réinitialiser'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Propriétés de la case à cocher',
+		radioTitle	: 'Propriétés du bouton radio',
+		value		: 'Valeur',
+		selected	: 'Sélectionné'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Propriétés du formulaire',
+		menu		: 'Propriétés du formulaire',
+		action		: 'Action',
+		method		: 'Méthode',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Destination',
+		targetNotSet	: '<Par défaut>',
+		targetNew	: 'Nouvelle fenêtre (_blank)',
+		targetTop	: 'Fenêtre supérieure (_top)',
+		targetSelf	: 'Même fenêtre (_self)',
+		targetParent	: 'Fenêtre mère (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Propriétés de la liste/du menu',
+		selectInfo	: 'Info',
+		opAvail		: 'Options disponibles',
+		value		: 'Valeur',
+		size		: 'Taille',
+		lines		: 'lignes',
+		chkMulti	: 'Sélection multiple',
+		opText		: 'Texte',
+		opValue		: 'Valeur',
+		btnAdd		: 'Ajouter',
+		btnModify	: 'Modifier',
+		btnUp		: 'Monter',
+		btnDown		: 'Descendre',
+		btnSetValue : 'Valeur sélectionnée',
+		btnDelete	: 'Supprimer'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Propriétés de la zone de texte',
+		cols		: 'Colonnes',
+		rows		: 'Lignes'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Propriétés du champ texte',
+		name		: 'Nom',
+		value		: 'Valeur',
+		charWidth	: 'Largeur en caractères',
+		maxChars	: 'Nombre maximum de caractères',
+		type		: 'Type',
+		typeText	: 'Texte',
+		typePass	: 'Mot de passe'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Propriétés du champ caché',
+		name	: 'Nom',
+		value	: 'Valeur'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Propriétés de l\'image',
+		titleButton	: 'Propriétés du bouton image',
+		menu		: 'Propriétés de l\'image',
+		infoTab	: 'Informations sur l\'image',
+		btnUpload	: 'Envoyer sur le serveur',
+		url		: 'URL',
+		upload	: 'Télécharger',
+		alt		: 'Texte de remplacement',
+		width		: 'Largeur',
+		height	: 'Hauteur',
+		lockRatio	: 'Garder les proportions',
+		resetSize	: 'Taille originale',
+		border	: 'Bordure',
+		hSpace	: 'Espacement horizontal',
+		vSpace	: 'Espacement vertical',
+		align		: 'Alignement',
+		alignLeft	: 'Gauche',
+		alignAbsBottom: 'Abs Bas',
+		alignAbsMiddle: 'Abs Milieu',
+		alignBaseline	: 'Bas du texte',
+		alignBottom	: 'Bas',
+		alignMiddle	: 'Milieu',
+		alignRight	: 'Droite',
+		alignTextTop	: 'Haut du texte',
+		alignTop	: 'Haut',
+		preview	: 'Prévisualisation',
+		alertUrl	: 'Veuillez saisir l\'URL de l\'image',
+		linkTab	: 'Lien',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Propriétés de l\'animation Flash',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Propriétés de l\'animation Flash',
+		chkPlay		: 'Lecture automatique',
+		chkLoop		: 'Boucle',
+		chkMenu		: 'Activer le menu Flash',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Affichage',
+		scaleAll		: 'Par défaut (tout montrer)',
+		scaleNoBorder	: 'Sans bordure',
+		scaleFit		: 'Ajuster aux dimensions',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Alignement',
+		alignLeft	: 'Gauche',
+		alignAbsBottom: 'Abs Bas',
+		alignAbsMiddle: 'Abs Milieu',
+		alignBaseline	: 'Bas du texte',
+		alignBottom	: 'Bas',
+		alignMiddle	: 'Milieu',
+		alignRight	: 'Droite',
+		alignTextTop	: 'Haut du texte',
+		alignTop	: 'Haut',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Couleur de fond',
+		width	: 'Largeur',
+		height	: 'Hauteur',
+		hSpace	: 'Espacement horizontal',
+		vSpace	: 'Espacement vertical',
+		validateSrc : 'Veuillez saisir l\'URL',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Orthographe',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Pas dans le dictionnaire',
+		changeTo		: 'Changer en',
+		btnIgnore		: 'Ignorer',
+		btnIgnoreAll	: 'Ignorer tout',
+		btnReplace		: 'Remplacer',
+		btnReplaceAll	: 'Remplacer tout',
+		btnUndo			: 'Annuler',
+		noSuggestions	: '- Pas de suggestion -',
+		progress		: 'Vérification d\'orthographe en cours...',
+		noMispell		: 'Vérification d\'orthographe terminée: pas d\'erreur trouvée',
+		noChanges		: 'Vérification d\'orthographe terminée: Pas de modifications',
+		oneChange		: 'Vérification d\'orthographe terminée: Un mot modifié',
+		manyChanges		: 'Vérification d\'orthographe terminée: %1 mots modifiés',
+		ieSpellDownload	: 'Le Correcteur d\'orthographe n\'est pas installé. Souhaitez-vous le télécharger maintenant?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Emoticon',
+		title	: 'Insérer un Emoticon'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Liste numérotée',
+	bulletedlist : 'Liste à puces',
+	indent : 'Augmenter le retrait',
+	outdent : 'Diminuer le retrait',
+
+	justify :
+	{
+		left : 'Aligner à gauche',
+		center : 'Centrer',
+		right : 'Aligner à Droite',
+		block : 'Texte justifié'
+	},
+
+	blockquote : 'Citation',
+
+	clipboard :
+	{
+		title		: 'Coller',
+		cutError	: 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+X).',
+		copyError	: 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+C).',
+		pasteMsg	: 'Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl+V</STRONG>) et appuyer sur <STRONG>OK</STRONG>.',
+		securityMsg	: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Coller en tant que Word (formaté)',
+		title : 'Coller en tant que Word (formaté)',
+		advice : 'Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl+V</STRONG>) et appuyer sur <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignorer les polices de caractères',
+		removeStyle : 'Supprimer les styles'
+	},
+
+	pasteText :
+	{
+		button : 'Coller comme texte',
+		title : 'Coller comme texte'
+	},
+
+	templates :
+	{
+		button : 'Modèles',
+		title : 'Modèles de contenu',
+		insertOption: 'Remplacer tout le contenu actuel',
+		selectPromptMsg: 'Sélectionner le modèle à ouvrir dans l\'éditeur<br>(le contenu actuel sera remplacé):',
+		emptyListMsg : '(Aucun modèle disponible)'
+	},
+
+	showBlocks : 'Afficher les blocs',
+
+	stylesCombo :
+	{
+		label : 'Style',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Format',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formaté',
+		tag_address : 'Adresse',
+		tag_h1 : 'En-tête 1',
+		tag_h2 : 'En-tête 2',
+		tag_h3 : 'En-tête 3',
+		tag_h4 : 'En-tête 4',
+		tag_h5 : 'En-tête 5',
+		tag_h6 : 'En-tête 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Police',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Police',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Taille',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Taille',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Couleur de caractère',
+		bgColorTitle : 'Couleur de fond',
+		auto : 'Automatique',
+		more : 'Plus de couleurs...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/nb.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/nb.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/nb.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Norwegian Bokmål language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['nb'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Kilde',
+	newPage			: 'Ny Side',
+	save			: 'Lagre',
+	preview			: 'Forhåndsvis',
+	cut				: 'Klipp ut',
+	copy			: 'Kopier',
+	paste			: 'Lim inn',
+	print			: 'Skriv ut',
+	underline		: 'Understrek',
+	bold			: 'Fet',
+	italic			: 'Kursiv',
+	selectAll		: 'Merk alt',
+	removeFormat	: 'Fjern format',
+	strike			: 'Gjennomstrek',
+	subscript		: 'Senket skrift',
+	superscript		: 'Hevet skrift',
+	horizontalrule	: 'Sett inn horisontal linje',
+	pagebreak		: 'Sett inn sideskift',
+	unlink			: 'Fjern lenke',
+	undo			: 'Angre',
+	redo			: 'Gjør om',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Bla igjennom server',
+		url				: 'URL',
+		protocol		: 'Protokoll',
+		upload			: 'Last opp',
+		uploadSubmit	: 'Send det til serveren',
+		image			: 'Bilde',
+		flash			: 'Flash',
+		form			: 'Skjema',
+		checkbox		: 'Avmerkingsboks',
+		radio		: 'Alternativknapp',
+		textField		: 'Tekstboks',
+		textarea		: 'Tekstområde',
+		hiddenField		: 'Skjult felt',
+		button			: 'Knapp',
+		select	: 'Rullegardinliste',
+		imageButton		: 'Bildeknapp',
+		notSet			: '<ikke satt>',
+		id				: 'Id',
+		name			: 'Navn',
+		langDir			: 'Språkretning',
+		langDirLtr		: 'Venstre til høyre (VTH)',
+		langDirRtl		: 'Høyre til venstre (HTV)',
+		langCode		: 'Språkkode',
+		longDescr		: 'Utvidet beskrivelse',
+		cssClass		: 'Stilarkklasser',
+		advisoryTitle	: 'Tittel',
+		cssStyle		: 'Stil',
+		ok				: 'OK',
+		cancel			: 'Avbryt',
+		generalTab		: 'Generelt',
+		advancedTab		: 'Avansert',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Sett inn spesielt tegn',
+		title		: 'Velg spesielt tegn'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Sett inn/Rediger lenke',
+		menu		: 'Rediger lenke',
+		title		: 'Lenke',
+		info		: 'Lenkeinfo',
+		target		: 'Mål',
+		upload		: 'Last opp',
+		advanced	: 'Avansert',
+		type		: 'Lenketype',
+		toAnchor	: 'Lenke til anker i teksten',
+		toEmail		: 'E-post',
+		target		: 'Mål',
+		targetNotSet	: '<ikke satt>',
+		targetFrame	: '<ramme>',
+		targetPopup	: '<popup vindu>',
+		targetNew	: 'Nytt vindu (_blank)',
+		targetTop	: 'Hele vindu (_top)',
+		targetSelf	: 'Samme vindu (_self)',
+		targetParent	: 'Foreldrevindu (_parent)',
+		targetFrameName	: 'Målramme',
+		targetPopupName	: 'Navn på popup-vindus',
+		popupFeatures	: 'Egenskaper for popup-vindu',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Statuslinje',
+		popupLocationBar	: 'Adresselinje',
+		popupToolbar	: 'Verktøylinje',
+		popupMenuBar	: 'Menylinje',
+		popupFullScreen	: 'Full skjerm (IE)',
+		popupScrollBars	: 'Scrollbar',
+		popupDependent	: 'Avhenging (Netscape)',
+		popupWidth		: 'Bredde',
+		popupLeft		: 'Venstre posisjon',
+		popupHeight		: 'Høyde',
+		popupTop		: 'Topp-posisjon',
+		id				: 'Id', // MISSING
+		langDir			: 'Språkretning',
+		langDirNotSet	: '<ikke satt>',
+		langDirLTR		: 'Venstre til høyre (VTH)',
+		langDirRTL		: 'Høyre til venstre (HTV)',
+		acccessKey		: 'Aksessknapp',
+		name			: 'Navn',
+		langCode		: 'Språkretning',
+		tabIndex		: 'Tab Indeks',
+		advisoryTitle	: 'Tittel',
+		advisoryContentType	: 'Type',
+		cssClasses		: 'Stilarkklasser',
+		charset			: 'Lenket språkkart',
+		styles			: 'Stil',
+		selectAnchor	: 'Velg et anker',
+		anchorName		: 'Anker etter navn',
+		anchorId		: 'Element etter ID',
+		emailAddress	: 'E-postadresse',
+		emailSubject	: 'Meldingsemne',
+		emailBody		: 'Melding',
+		noAnchors		: '(Ingen anker i dokumentet)',
+		noUrl			: 'Vennligst skriv inn lenkens url',
+		noEmail			: 'Vennligst skriv inn e-postadressen'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Sett inn/Rediger anker',
+		menu		: 'Egenskaper for anker',
+		title		: 'Egenskaper for anker',
+		name		: 'Ankernavn',
+		errorName	: 'Vennligst skriv inn ankernavnet'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Søk og erstatt',
+		find				: 'Søk',
+		replace				: 'Erstatt',
+		findWhat			: 'Søk etter:',
+		replaceWith			: 'Erstatt med:',
+		notFoundMsg			: 'Fant ikke søketeksten.',
+		matchCase			: 'Skill mellom store og små bokstaver',
+		matchWord			: 'Bare hele ord',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Erstatt alle',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabell',
+		title		: 'Egenskaper for tabell',
+		menu		: 'Egenskaper for tabell',
+		deleteTable	: 'Slett tabell',
+		rows		: 'Rader',
+		columns		: 'Kolonner',
+		border		: 'Rammestørrelse',
+		align		: 'Justering',
+		alignNotSet	: '<Ikke satt>',
+		alignLeft	: 'Venstre',
+		alignCenter	: 'Midtjuster',
+		alignRight	: 'Høyre',
+		width		: 'Bredde',
+		widthPx		: 'piksler',
+		widthPc		: 'prosent',
+		height		: 'Høyde',
+		cellSpace	: 'Cellemarg',
+		cellPad		: 'Cellepolstring',
+		caption		: 'Tittel',
+		summary		: 'Sammendrag',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Celle',
+			insertBefore	: 'Sett inn celle før',
+			insertAfter		: 'Sett inn celle etter',
+			deleteCell		: 'Slett celler',
+			merge			: 'Slå sammen celler',
+			mergeRight		: 'Slå sammen høyre',
+			mergeDown		: 'Slå sammen ned',
+			splitHorizontal	: 'Del celle horisontalt',
+			splitVertical	: 'Del celle vertikalt',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Rader',
+			insertBefore	: 'Sett inn rad før',
+			insertAfter		: 'Sett inn rad etter',
+			deleteRow		: 'Slett rader'
+		},
+
+		column :
+		{
+			menu			: 'Kolonne',
+			insertBefore	: 'Sett inn kolonne før',
+			insertAfter		: 'Sett inn kolonne etter',
+			deleteColumn	: 'Slett kolonner'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Egenskaper for knapp',
+		text		: 'Tekst (verdi)',
+		type		: 'Type',
+		typeBtn		: 'Knapp',
+		typeSbm		: 'Send',
+		typeRst		: 'Nullstill'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Egenskaper for avmerkingsboks',
+		radioTitle	: 'Egenskaper for alternativknapp',
+		value		: 'Verdi',
+		selected	: 'Valgt'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Egenskaper for skjema',
+		menu		: 'Egenskaper for skjema',
+		action		: 'Handling',
+		method		: 'Metode',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Mål',
+		targetNotSet	: '<ikke satt>',
+		targetNew	: 'Nytt vindu (_blank)',
+		targetTop	: 'Hele vindu (_top)',
+		targetSelf	: 'Samme vindu (_self)',
+		targetParent	: 'Foreldrevindu (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Egenskaper for rullegardinliste',
+		selectInfo	: 'Info',
+		opAvail		: 'Tilgjenglige alternativer',
+		value		: 'Verdi',
+		size		: 'Størrelse',
+		lines		: 'Linjer',
+		chkMulti	: 'Tillat flervalg',
+		opText		: 'Tekst',
+		opValue		: 'Verdi',
+		btnAdd		: 'Legg til',
+		btnModify	: 'Endre',
+		btnUp		: 'Opp',
+		btnDown		: 'Ned',
+		btnSetValue : 'Sett som valgt',
+		btnDelete	: 'Slett'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Egenskaper for tekstområde',
+		cols		: 'Kolonner',
+		rows		: 'Rader'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Egenskaper for tekstfelt',
+		name		: 'Navn',
+		value		: 'Verdi',
+		charWidth	: 'Tegnbredde',
+		maxChars	: 'Maks antall tegn',
+		type		: 'Type',
+		typeText	: 'Tekst',
+		typePass	: 'Passord'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Egenskaper for skjult felt',
+		name	: 'Navn',
+		value	: 'Verdi'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Bildeegenskaper',
+		titleButton	: 'Egenskaper for bildeknapp',
+		menu		: 'Bildeegenskaper',
+		infoTab	: 'Bildeinformasjon',
+		btnUpload	: 'Send det til serveren',
+		url		: 'URL',
+		upload	: 'Last opp',
+		alt		: 'Alternativ tekst',
+		width		: 'Bredde',
+		height	: 'Høyde',
+		lockRatio	: 'Lås forhold',
+		resetSize	: 'Tilbakestill størrelse',
+		border	: 'Ramme',
+		hSpace	: 'HMarg',
+		vSpace	: 'VMarg',
+		align		: 'Juster',
+		alignLeft	: 'Venstre',
+		alignAbsBottom: 'Abs bunn',
+		alignAbsMiddle: 'Abs midten',
+		alignBaseline	: 'Bunnlinje',
+		alignBottom	: 'Bunn',
+		alignMiddle	: 'Midten',
+		alignRight	: 'Høyre',
+		alignTextTop	: 'Tekst topp',
+		alignTop	: 'Topp',
+		preview	: 'Forhåndsvis',
+		alertUrl	: 'Vennligst skriv bilde-urlen',
+		linkTab	: 'Lenke',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Egenskaper for Flash-objekt',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flash-egenskaper',
+		chkPlay		: 'Autospill',
+		chkLoop		: 'Loop',
+		chkMenu		: 'Slå på Flash-meny',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Skaler',
+		scaleAll		: 'Vis alt',
+		scaleNoBorder	: 'Ingen ramme',
+		scaleFit		: 'Skaler til å passe',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Juster',
+		alignLeft	: 'Venstre',
+		alignAbsBottom: 'Abs bunn',
+		alignAbsMiddle: 'Abs midten',
+		alignBaseline	: 'Bunnlinje',
+		alignBottom	: 'Bunn',
+		alignMiddle	: 'Midten',
+		alignRight	: 'Høyre',
+		alignTextTop	: 'Tekst topp',
+		alignTop	: 'Topp',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Bakgrunnsfarge',
+		width	: 'Bredde',
+		height	: 'Høyde',
+		hSpace	: 'HMarg',
+		vSpace	: 'VMarg',
+		validateSrc : 'Vennligst skriv inn lenkens url',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Stavekontroll',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Ikke i ordboken',
+		changeTo		: 'Endre til',
+		btnIgnore		: 'Ignorer',
+		btnIgnoreAll	: 'Ignorer alle',
+		btnReplace		: 'Erstatt',
+		btnReplaceAll	: 'Erstatt alle',
+		btnUndo			: 'Angre',
+		noSuggestions	: '- Ingen forslag -',
+		progress		: 'Stavekontroll pågår...',
+		noMispell		: 'Stavekontroll fullført: ingen feilstavinger funnet',
+		noChanges		: 'Stavekontroll fullført: ingen ord endret',
+		oneChange		: 'Stavekontroll fullført: Ett ord endret',
+		manyChanges		: 'Stavekontroll fullført: %1 ord endret',
+		ieSpellDownload	: 'Stavekontroll er ikke installert. Vil du laste den ned nå?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smil',
+		title	: 'Sett inn smil'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Nummerert liste',
+	bulletedlist : 'Uordnet liste',
+	indent : 'Øk nivå',
+	outdent : 'Senk nivå',
+
+	justify :
+	{
+		left : 'Venstrejuster',
+		center : 'Midtjuster',
+		right : 'Høyrejuster',
+		block : 'Blokkjuster'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Lim inn',
+		cutError	: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).',
+		copyError	: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).',
+		pasteMsg	: 'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',
+		securityMsg	: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Lim inn fra Word',
+		title : 'Lim inn fra Word',
+		advice : 'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Fjern skrifttyper',
+		removeStyle : 'Fjern stildefinisjoner'
+	},
+
+	pasteText :
+	{
+		button : 'Lim inn som ren tekst',
+		title : 'Lim inn som ren tekst'
+	},
+
+	templates :
+	{
+		button : 'Maler',
+		title : 'Innholdsmaler',
+		insertOption: 'Erstatt faktisk innold',
+		selectPromptMsg: 'Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):',
+		emptyListMsg : '(Ingen maler definert)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Stil',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Format',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatert',
+		tag_address : 'Adresse',
+		tag_h1 : 'Tittel 1',
+		tag_h2 : 'Tittel 2',
+		tag_h3 : 'Tittel 3',
+		tag_h4 : 'Tittel 4',
+		tag_h5 : 'Tittel 5',
+		tag_h6 : 'Tittel 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Skrift',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Skrift',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Størrelse',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Størrelse',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Tekstfarge',
+		bgColorTitle : 'Bakgrunnsfarge',
+		auto : 'Automatisk',
+		more : 'Flere farger...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/bn.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/bn.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/bn.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Bengali/Bangla language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['bn'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'সোর্স',
+	newPage			: 'নতুন পেজ',
+	save			: 'সংরক্ষন কর',
+	preview			: 'প্রিভিউ',
+	cut				: 'কাট',
+	copy			: 'কপি',
+	paste			: 'পেস্ট',
+	print			: 'প্রিন্ট',
+	underline		: 'আন্ডারলাইন',
+	bold			: 'বোল্ড',
+	italic			: 'ইটালিক',
+	selectAll		: 'সব সিলেক্ট কর',
+	removeFormat	: 'ফরমেট সরাও',
+	strike			: 'স্ট্রাইক থ্রু',
+	subscript		: 'অধোলেখ',
+	superscript		: 'অভিলেখ',
+	horizontalrule	: 'রেখা যুক্ত কর',
+	pagebreak		: 'পেজ ব্রেক',
+	unlink			: 'লিংক সরাও',
+	undo			: 'আনডু',
+	redo			: 'রি-ডু',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'ব্রাউজ সার্ভার',
+		url				: 'URL',
+		protocol		: 'প্রোটোকল',
+		upload			: 'আপলোড',
+		uploadSubmit	: 'ইহাকে সার্ভারে প্রেরন কর',
+		image			: 'ছবির লেবেল যুক্ত কর',
+		flash			: 'ফ্লাশ লেবেল যুক্ত কর',
+		form			: 'ফর্ম',
+		checkbox		: 'চেক বাক্স',
+		radio		: 'রেডিও বাটন',
+		textField		: 'টেক্সট ফীল্ড',
+		textarea		: 'টেক্সট এরিয়া',
+		hiddenField		: 'গুপ্ত ফীল্ড',
+		button			: 'বাটন',
+		select	: 'বাছাই ফীল্ড',
+		imageButton		: 'ছবির বাটন',
+		notSet			: '<সেট নেই>',
+		id				: 'আইডি',
+		name			: 'নাম',
+		langDir			: 'ভাষা লেখার দিক',
+		langDirLtr		: 'বাম থেকে ডান (LTR)',
+		langDirRtl		: 'ডান থেকে বাম (RTL)',
+		langCode		: 'ভাষা কোড',
+		longDescr		: 'URL এর লম্বা বর্ণনা',
+		cssClass		: 'স্টাইল-শীট ক্লাস',
+		advisoryTitle	: 'পরামর্শ শীর্ষক',
+		cssStyle		: 'স্টাইল',
+		ok				: 'ওকে',
+		cancel			: 'বাতিল',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'এডভান্সড',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'বিশেষ অক্ষর যুক্ত কর',
+		title		: 'বিশেষ ক্যারেক্টার বাছাই কর'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'লিংক যুক্ত কর',
+		menu		: 'লিংক সম্পাদন',
+		title		: 'লিংক',
+		info		: 'লিংক তথ্য',
+		target		: 'টার্গেট',
+		upload		: 'আপলোড',
+		advanced	: 'এডভান্সড',
+		type		: 'লিংক প্রকার',
+		toAnchor	: 'এই পেজে নোঙর কর',
+		toEmail		: 'ইমেইল',
+		target		: 'টার্গেট',
+		targetNotSet	: '<সেট নেই>',
+		targetFrame	: '<ফ্রেম>',
+		targetPopup	: '<পপআপ উইন্ডো>',
+		targetNew	: 'নতুন উইন্ডো (_blank)',
+		targetTop	: 'শীর্ষ উইন্ডো (_top)',
+		targetSelf	: 'এই উইন্ডো (_self)',
+		targetParent	: 'মূল উইন্ডো (_parent)',
+		targetFrameName	: 'টার্গেট ফ্রেমের নাম',
+		targetPopupName	: 'পপআপ উইন্ডোর নাম',
+		popupFeatures	: 'পপআপ উইন্ডো ফীচার সমূহ',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'স্ট্যাটাস বার',
+		popupLocationBar	: 'লোকেশন বার',
+		popupToolbar	: 'টুল বার',
+		popupMenuBar	: 'মেন্যু বার',
+		popupFullScreen	: 'পূর্ণ পর্দা জুড়ে (IE)',
+		popupScrollBars	: 'স্ক্রল বার',
+		popupDependent	: 'ডিপেন্ডেন্ট (Netscape)',
+		popupWidth		: 'প্রস্থ',
+		popupLeft		: 'বামের পজিশন',
+		popupHeight		: 'দৈর্ঘ্য',
+		popupTop		: 'ডানের পজিশন',
+		id				: 'Id', // MISSING
+		langDir			: 'ভাষা লেখার দিক',
+		langDirNotSet	: '<সেট নেই>',
+		langDirLTR		: 'বাম থেকে ডান (LTR)',
+		langDirRTL		: 'ডান থেকে বাম (RTL)',
+		acccessKey		: 'এক্সেস কী',
+		name			: 'নাম',
+		langCode		: 'ভাষা লেখার দিক',
+		tabIndex		: 'ট্যাব ইন্ডেক্স',
+		advisoryTitle	: 'পরামর্শ শীর্ষক',
+		advisoryContentType	: 'পরামর্শ কন্টেন্টের প্রকার',
+		cssClasses		: 'স্টাইল-শীট ক্লাস',
+		charset			: 'লিংক রিসোর্স ক্যারেক্টর সেট',
+		styles			: 'স্টাইল',
+		selectAnchor	: 'নোঙর বাছাই',
+		anchorName		: 'নোঙরের নাম দিয়ে',
+		anchorId		: 'নোঙরের আইডি দিয়ে',
+		emailAddress	: 'ইমেইল ঠিকানা',
+		emailSubject	: 'মেসেজের বিষয়',
+		emailBody		: 'মেসেজের দেহ',
+		noAnchors		: '(No anchors available in the document)', // MISSING
+		noUrl			: 'অনুগ্রহ করে URL লিংক টাইপ করুন',
+		noEmail			: 'অনুগ্রহ করে ইমেইল এড্রেস টাইপ করুন'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'নোঙ্গর',
+		menu		: 'নোঙর প্রোপার্টি',
+		title		: 'নোঙর প্রোপার্টি',
+		name		: 'নোঙরের নাম',
+		errorName	: 'নোঙরের নাম টাইপ করুন'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'খোজো',
+		replace				: 'রিপ্লেস',
+		findWhat			: 'যা খুঁজতে হবে:',
+		replaceWith			: 'যার সাথে বদলাতে হবে:',
+		notFoundMsg			: 'আপনার উল্লেখিত টেকস্ট পাওয়া যায়নি',
+		matchCase			: 'কেস মিলাও',
+		matchWord			: 'পুরা শব্দ মেলাও',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'সব বদলে দাও',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'টেবিলের লেবেল যুক্ত কর',
+		title		: 'টেবিল প্রোপার্টি',
+		menu		: 'টেবিল প্রোপার্টি',
+		deleteTable	: 'টেবিল ডিলীট কর',
+		rows		: 'রো',
+		columns		: 'কলাম',
+		border		: 'বর্ডার সাইজ',
+		align		: 'এলাইনমেন্ট',
+		alignNotSet	: '<সেট নেই>',
+		alignLeft	: 'বামে',
+		alignCenter	: 'মাঝখানে',
+		alignRight	: 'ডানে',
+		width		: 'প্রস্থ',
+		widthPx		: 'পিক্সেল',
+		widthPc		: 'শতকরা',
+		height		: 'দৈর্ঘ্য',
+		cellSpace	: 'সেল স্পেস',
+		cellPad		: 'সেল প্যাডিং',
+		caption		: 'শীর্ষক',
+		summary		: 'সারাংশ',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'সেল',
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'সেল মুছে দাও',
+			merge			: 'সেল জোড়া দাও',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'রো',
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'রো মুছে দাও'
+		},
+
+		column :
+		{
+			menu			: 'কলাম',
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'কলাম মুছে দাও'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'বাটন প্রোপার্টি',
+		text		: 'টেক্সট (ভ্যালু)',
+		type		: 'প্রকার',
+		typeBtn		: 'Button', // MISSING
+		typeSbm		: 'Submit', // MISSING
+		typeRst		: 'Reset' // MISSING
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'চেক বক্স প্রোপার্টি',
+		radioTitle	: 'রেডিও বাটন প্রোপার্টি',
+		value		: 'ভ্যালু',
+		selected	: 'সিলেক্টেড'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'ফর্ম প্রোপার্টি',
+		menu		: 'ফর্ম প্রোপার্টি',
+		action		: 'একশ্যন',
+		method		: 'পদ্ধতি',
+		encoding	: 'Encoding', // MISSING
+		target		: 'টার্গেট',
+		targetNotSet	: '<সেট নেই>',
+		targetNew	: 'নতুন উইন্ডো (_blank)',
+		targetTop	: 'শীর্ষ উইন্ডো (_top)',
+		targetSelf	: 'এই উইন্ডো (_self)',
+		targetParent	: 'মূল উইন্ডো (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'বাছাই ফীল্ড প্রোপার্টি',
+		selectInfo	: 'তথ্য',
+		opAvail		: 'অন্যান্য বিকল্প',
+		value		: 'ভ্যালু',
+		size		: 'সাইজ',
+		lines		: 'লাইন সমূহ',
+		chkMulti	: 'একাধিক সিলেকশন এলাউ কর',
+		opText		: 'টেক্সট',
+		opValue		: 'ভ্যালু',
+		btnAdd		: 'যুক্ত',
+		btnModify	: 'বদলে দাও',
+		btnUp		: 'উপর',
+		btnDown		: 'নীচে',
+		btnSetValue : 'বাছাই করা ভ্যালু হিসেবে সেট কর',
+		btnDelete	: 'ডিলীট'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'টেক্সট এরিয়া প্রোপার্টি',
+		cols		: 'কলাম',
+		rows		: 'রো'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'টেক্সট ফীল্ড প্রোপার্টি',
+		name		: 'নাম',
+		value		: 'ভ্যালু',
+		charWidth	: 'ক্যারেক্টার প্রশস্ততা',
+		maxChars	: 'সর্বাধিক ক্যারেক্টার',
+		type		: 'টাইপ',
+		typeText	: 'টেক্সট',
+		typePass	: 'পাসওয়ার্ড'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'গুপ্ত ফীল্ড প্রোপার্টি',
+		name	: 'নাম',
+		value	: 'ভ্যালু'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'ছবির প্রোপার্টি',
+		titleButton	: 'ছবি বাটন প্রোপার্টি',
+		menu		: 'ছবির প্রোপার্টি',
+		infoTab	: 'ছবির তথ্য',
+		btnUpload	: 'ইহাকে সার্ভারে প্রেরন কর',
+		url		: 'URL',
+		upload	: 'আপলোড',
+		alt		: 'বিকল্প টেক্সট',
+		width		: 'প্রস্থ',
+		height	: 'দৈর্ঘ্য',
+		lockRatio	: 'অনুপাত লক কর',
+		resetSize	: 'সাইজ পূর্বাবস্থায় ফিরিয়ে দাও',
+		border	: 'বর্ডার',
+		hSpace	: 'হরাইজন্টাল স্পেস',
+		vSpace	: 'ভার্টিকেল স্পেস',
+		align		: 'এলাইন',
+		alignLeft	: 'বামে',
+		alignAbsBottom: 'Abs নীচে',
+		alignAbsMiddle: 'Abs উপর',
+		alignBaseline	: 'মূল রেখা',
+		alignBottom	: 'নীচে',
+		alignMiddle	: 'মধ্য',
+		alignRight	: 'ডানে',
+		alignTextTop	: 'টেক্সট উপর',
+		alignTop	: 'উপর',
+		preview	: 'প্রীভিউ',
+		alertUrl	: 'অনুগ্রহক করে ছবির URL টাইপ করুন',
+		linkTab	: 'লিংক',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'ফ্লাশ প্রোপার্টি',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'ফ্ল্যাশ প্রোপার্টি',
+		chkPlay		: 'অটো প্লে',
+		chkLoop		: 'লূপ',
+		chkMenu		: 'ফ্ল্যাশ মেনু এনাবল কর',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'স্কেল',
+		scaleAll		: 'সব দেখাও',
+		scaleNoBorder	: 'কোনো বর্ডার নেই',
+		scaleFit		: 'নিখুঁত ফিট',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'এলাইন',
+		alignLeft	: 'বামে',
+		alignAbsBottom: 'Abs নীচে',
+		alignAbsMiddle: 'Abs উপর',
+		alignBaseline	: 'মূল রেখা',
+		alignBottom	: 'নীচে',
+		alignMiddle	: 'মধ্য',
+		alignRight	: 'ডানে',
+		alignTextTop	: 'টেক্সট উপর',
+		alignTop	: 'উপর',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'বেকগ্রাউন্ড রং',
+		width	: 'প্রস্থ',
+		height	: 'দৈর্ঘ্য',
+		hSpace	: 'হরাইজন্টাল স্পেস',
+		vSpace	: 'ভার্টিকেল স্পেস',
+		validateSrc : 'অনুগ্রহ করে URL লিংক টাইপ করুন',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'বানান চেক',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'শব্দকোষে নেই',
+		changeTo		: 'এতে বদলাও',
+		btnIgnore		: 'ইগনোর কর',
+		btnIgnoreAll	: 'সব ইগনোর কর',
+		btnReplace		: 'বদলে দাও',
+		btnReplaceAll	: 'সব বদলে দাও',
+		btnUndo			: 'আন্ডু',
+		noSuggestions	: '- কোন সাজেশন নেই -',
+		progress		: 'বানান পরীক্ষা চলছে...',
+		noMispell		: 'বানান পরীক্ষা শেষ: কোন ভুল বানান পাওয়া যায়নি',
+		noChanges		: 'বানান পরীক্ষা শেষ: কোন শব্দ পরিবর্তন করা হয়নি',
+		oneChange		: 'বানান পরীক্ষা শেষ: একটি মাত্র শব্দ পরিবর্তন করা হয়েছে',
+		manyChanges		: 'বানান পরীক্ষা শেষ: %1 গুলো শব্দ বদলে গ্যাছে',
+		ieSpellDownload	: 'বানান পরীক্ষক ইনস্টল করা নেই। আপনি কি এখনই এটা ডাউনলোড করতে চান?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'স্মাইলী',
+		title	: 'স্মাইলী যুক্ত কর'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'সাংখ্যিক লিস্টের লেবেল',
+	bulletedlist : 'বুলেট লিস্ট লেবেল',
+	indent : 'ইনডেন্ট বাড়াও',
+	outdent : 'ইনডেন্ট কমাও',
+
+	justify :
+	{
+		left : 'বা দিকে ঘেঁষা',
+		center : 'মাঝ বরাবর ঘেষা',
+		right : 'ডান দিকে ঘেঁষা',
+		block : 'ব্লক জাস্টিফাই'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'পেস্ট',
+		cutError	: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl+X)।',
+		copyError	: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl+C)।',
+		pasteMsg	: 'অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (<STRONG>Ctrl+V</STRONG>) পেস্ট করুন এবং <STRONG>OK</STRONG> চাপ দিন',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'পেস্ট (শব্দ)',
+		title : 'পেস্ট (শব্দ)',
+		advice : 'অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (<STRONG>Ctrl+V</STRONG>) পেস্ট করুন এবং <STRONG>OK</STRONG> চাপ দিন',
+		ignoreFontFace : 'ফন্ট ফেস ডেফিনেশন ইগনোর করুন',
+		removeStyle : 'স্টাইল ডেফিনেশন সরিয়ে দিন'
+	},
+
+	pasteText :
+	{
+		button : 'সাদা টেক্সট হিসেবে পেস্ট কর',
+		title : 'সাদা টেক্সট হিসেবে পেস্ট কর'
+	},
+
+	templates :
+	{
+		button : 'টেমপ্লেট',
+		title : 'কনটেন্ট টেমপ্লেট',
+		insertOption: 'Replace actual contents', // MISSING
+		selectPromptMsg: 'অনুগ্রহ করে এডিটরে ওপেন করার জন্য টেমপ্লেট বাছাই করুন<br>(আসল কনটেন্ট হারিয়ে যাবে):',
+		emptyListMsg : '(কোন টেমপ্লেট ডিফাইন করা নেই)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'স্টাইল',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'ফন্ট ফরমেট',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'ফন্ট ফরমেট',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'সাধারণ',
+		tag_pre : 'ফর্মেটেড',
+		tag_address : 'ঠিকানা',
+		tag_h1 : 'শীর্ষক ১',
+		tag_h2 : 'শীর্ষক ২',
+		tag_h3 : 'শীর্ষক ৩',
+		tag_h4 : 'শীর্ষক ৪',
+		tag_h5 : 'শীর্ষক ৫',
+		tag_h6 : 'শীর্ষক ৬',
+		tag_div : 'শীর্ষক (DIV)'
+	},
+
+	font :
+	{
+		label : 'ফন্ট',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'ফন্ট',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'সাইজ',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'সাইজ',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'টেক্স্ট রং',
+		bgColorTitle : 'বেকগ্রাউন্ড রং',
+		auto : 'অটোমেটিক',
+		more : 'আরও রং...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/el.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/el.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/el.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Greek language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['el'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'HTML κώδικας',
+	newPage			: 'Νέα Σελίδα',
+	save			: 'Αποθήκευση',
+	preview			: 'Προεπισκόπιση',
+	cut				: 'Αποκοπή',
+	copy			: 'Αντιγραφή',
+	paste			: 'Επικόλληση',
+	print			: 'Εκτύπωση',
+	underline		: 'Υπογράμμιση',
+	bold			: 'Έντονα',
+	italic			: 'Πλάγια',
+	selectAll		: 'Επιλογή όλων',
+	removeFormat	: 'Αφαίρεση Μορφοποίησης',
+	strike			: 'Διαγράμμιση',
+	subscript		: 'Δείκτης',
+	superscript		: 'Εκθέτης',
+	horizontalrule	: 'Εισαγωγή Οριζόντιας Γραμμής',
+	pagebreak		: 'Εισαγωγή τέλους σελίδας',
+	unlink			: 'Αφαίρεση Συνδέσμου (Link)',
+	undo			: 'Αναίρεση',
+	redo			: 'Επαναφορά',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Εξερεύνηση διακομιστή',
+		url				: 'URL',
+		protocol		: 'Προτόκολο',
+		upload			: 'Αποστολή',
+		uploadSubmit	: 'Αποστολή στον Διακομιστή',
+		image			: 'Εικόνα',
+		flash			: 'Εισαγωγή Flash',
+		form			: 'Φόρμα',
+		checkbox		: 'Κουτί επιλογής',
+		radio		: 'Κουμπί Radio',
+		textField		: 'Πεδίο κειμένου',
+		textarea		: 'Περιοχή κειμένου',
+		hiddenField		: 'Κρυφό πεδίο',
+		button			: 'Κουμπί',
+		select	: 'Πεδίο επιλογής',
+		imageButton		: 'Κουμπί εικόνας',
+		notSet			: '<χωρίς>',
+		id				: 'Id',
+		name			: 'Όνομα',
+		langDir			: 'Κατεύθυνση κειμένου',
+		langDirLtr		: 'Αριστερά προς Δεξιά (LTR)',
+		langDirRtl		: 'Δεξιά προς Αριστερά (RTL)',
+		langCode		: 'Κωδικός Γλώσσας',
+		longDescr		: 'Αναλυτική περιγραφή URL',
+		cssClass		: 'Stylesheet Classes',
+		advisoryTitle	: 'Συμβουλευτικός τίτλος',
+		cssStyle		: 'Στύλ',
+		ok				: 'OK',
+		cancel			: 'Ακύρωση',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Για προχωρημένους',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Εισαγωγή Ειδικού Συμβόλου',
+		title		: 'Επιλέξτε ένα Ειδικό Σύμβολο'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Εισαγωγή/Μεταβολή Συνδέσμου (Link)',
+		menu		: 'Μεταβολή Συνδέσμου (Link)',
+		title		: 'Σύνδεσμος (Link)',
+		info		: 'Link',
+		target		: 'Παράθυρο Στόχος (Target)',
+		upload		: 'Αποστολή',
+		advanced	: 'Για προχωρημένους',
+		type		: 'Τύπος συνδέσμου (Link)',
+		toAnchor	: 'Άγκυρα σε αυτή τη σελίδα',
+		toEmail		: 'E-Mail',
+		target		: 'Παράθυρο Στόχος (Target)',
+		targetNotSet	: '<χωρίς>',
+		targetFrame	: '<πλαίσιο>',
+		targetPopup	: '<παράθυρο popup>',
+		targetNew	: 'Νέο Παράθυρο (_blank)',
+		targetTop	: 'Ανώτατο Παράθυρο (_top)',
+		targetSelf	: 'Ίδιο Παράθυρο (_self)',
+		targetParent	: 'Γονικό Παράθυρο (_parent)',
+		targetFrameName	: 'Όνομα πλαισίου στόχου',
+		targetPopupName	: 'Όνομα Popup Window',
+		popupFeatures	: 'Επιλογές Popup Window',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Μπάρα Status',
+		popupLocationBar	: 'Μπάρα Τοποθεσίας',
+		popupToolbar	: 'Μπάρα Εργαλείων',
+		popupMenuBar	: 'Μπάρα Menu',
+		popupFullScreen	: 'Ολόκληρη η Οθόνη (IE)',
+		popupScrollBars	: 'Μπάρες Κύλισης',
+		popupDependent	: 'Dependent (Netscape)',
+		popupWidth		: 'Πλάτος',
+		popupLeft		: 'Τοποθεσία Αριστερής Άκρης',
+		popupHeight		: 'Ύψος',
+		popupTop		: 'Τοποθεσία Πάνω Άκρης',
+		id				: 'Id', // MISSING
+		langDir			: 'Κατεύθυνση κειμένου',
+		langDirNotSet	: '<χωρίς>',
+		langDirLTR		: 'Αριστερά προς Δεξιά (LTR)',
+		langDirRTL		: 'Δεξιά προς Αριστερά (RTL)',
+		acccessKey		: 'Συντόμευση (Access Key)',
+		name			: 'Όνομα',
+		langCode		: 'Κατεύθυνση κειμένου',
+		tabIndex		: 'Tab Index',
+		advisoryTitle	: 'Συμβουλευτικός τίτλος',
+		advisoryContentType	: 'Συμβουλευτικός τίτλος περιεχομένου',
+		cssClasses		: 'Stylesheet Classes',
+		charset			: 'Linked Resource Charset',
+		styles			: 'Στύλ',
+		selectAnchor	: 'Επιλέξτε μια άγκυρα',
+		anchorName		: 'Βάσει του Ονόματος (Name) της άγκυρας',
+		anchorId		: 'Βάσει του Element Id',
+		emailAddress	: 'Διεύθυνση Ηλεκτρονικού Ταχυδρομείου',
+		emailSubject	: 'Θέμα Μηνύματος',
+		emailBody		: 'Κείμενο Μηνύματος',
+		noAnchors		: '(Δεν υπάρχουν άγκυρες στο κείμενο)',
+		noUrl			: 'Εισάγετε την τοποθεσία (URL) του υπερσυνδέσμου (Link)',
+		noEmail			: 'Εισάγετε την διεύθυνση ηλεκτρονικού ταχυδρομείου'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Εισαγωγή/επεξεργασία Anchor',
+		menu		: 'Ιδιότητες άγκυρας',
+		title		: 'Ιδιότητες άγκυρας',
+		name		: 'Όνομα άγκυρας',
+		errorName	: 'Παρακαλούμε εισάγετε όνομα άγκυρας'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'Αναζήτηση',
+		replace				: 'Αντικατάσταση',
+		findWhat			: 'Αναζήτηση:',
+		replaceWith			: 'Αντικατάσταση με:',
+		notFoundMsg			: 'Το κείμενο δεν βρέθηκε.',
+		matchCase			: 'Έλεγχος πεζών/κεφαλαίων',
+		matchWord			: 'Εύρεση πλήρους λέξης',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Αντικατάσταση Όλων',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Πίνακας',
+		title		: 'Ιδιότητες Πίνακα',
+		menu		: 'Ιδιότητες Πίνακα',
+		deleteTable	: 'Διαγραφή πίνακα',
+		rows		: 'Γραμμές',
+		columns		: 'Κολώνες',
+		border		: 'Μέγεθος Περιθωρίου',
+		align		: 'Στοίχιση',
+		alignNotSet	: '<χωρίς>',
+		alignLeft	: 'Αριστερά',
+		alignCenter	: 'Κέντρο',
+		alignRight	: 'Δεξιά',
+		width		: 'Πλάτος',
+		widthPx		: 'pixels',
+		widthPc		: '%',
+		height		: 'Ύψος',
+		cellSpace	: 'Απόσταση κελιών',
+		cellPad		: 'Γέμισμα κελιών',
+		caption		: 'Υπέρτιτλος',
+		summary		: 'Περίληψη',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Κελί',
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'Διαγραφή Κελιών',
+			merge			: 'Ενοποίηση Κελιών',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Σειρά',
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'Διαγραφή Γραμμών'
+		},
+
+		column :
+		{
+			menu			: 'Στήλη',
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'Διαγραφή Κολωνών'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Ιδιότητες κουμπιού',
+		text		: 'Κείμενο (Τιμή)',
+		type		: 'Τύπος',
+		typeBtn		: 'Κουμπί',
+		typeSbm		: 'Καταχώρηση',
+		typeRst		: 'Επαναφορά'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Ιδιότητες κουμπιού επιλογής',
+		radioTitle	: 'Ιδιότητες κουμπιού radio',
+		value		: 'Τιμή',
+		selected	: 'Επιλεγμένο'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Ιδιότητες φόρμας',
+		menu		: 'Ιδιότητες φόρμας',
+		action		: 'Δράση',
+		method		: 'Μάθοδος',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Παράθυρο Στόχος (Target)',
+		targetNotSet	: '<χωρίς>',
+		targetNew	: 'Νέο Παράθυρο (_blank)',
+		targetTop	: 'Ανώτατο Παράθυρο (_top)',
+		targetSelf	: 'Ίδιο Παράθυρο (_self)',
+		targetParent	: 'Γονικό Παράθυρο (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Ιδιότητες πεδίου επιλογής',
+		selectInfo	: 'Πληροφορίες',
+		opAvail		: 'Διαθέσιμες επιλογές',
+		value		: 'Τιμή',
+		size		: 'Μέγεθος',
+		lines		: 'γραμμές',
+		chkMulti	: 'Πολλαπλές επιλογές',
+		opText		: 'Κείμενο',
+		opValue		: 'Τιμή',
+		btnAdd		: 'Προσθήκη',
+		btnModify	: 'Αλλαγή',
+		btnUp		: 'Πάνω',
+		btnDown		: 'Κάτω',
+		btnSetValue : 'Προεπιλεγμένη επιλογή',
+		btnDelete	: 'Διαγραφή'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Ιδιότητες περιοχής κειμένου',
+		cols		: 'Στήλες',
+		rows		: 'Σειρές'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Ιδιότητες πεδίου κειμένου',
+		name		: 'Όνομα',
+		value		: 'Τιμή',
+		charWidth	: 'Μήκος χαρακτήρων',
+		maxChars	: 'Μέγιστοι χαρακτήρες',
+		type		: 'Τύπος',
+		typeText	: 'Κείμενο',
+		typePass	: 'Κωδικός'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Ιδιότητες κρυφού πεδίου',
+		name	: 'Όνομα',
+		value	: 'Τιμή'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Ιδιότητες Εικόνας',
+		titleButton	: 'Ιδιότητες κουμπιού εικόνας',
+		menu		: 'Ιδιότητες Εικόνας',
+		infoTab	: 'Πληροφορίες Εικόνας',
+		btnUpload	: 'Αποστολή στον Διακομιστή',
+		url		: 'URL',
+		upload	: 'Αποστολή',
+		alt		: 'Εναλλακτικό Κείμενο (ALT)',
+		width		: 'Πλάτος',
+		height	: 'Ύψος',
+		lockRatio	: 'Κλείδωμα Αναλογίας',
+		resetSize	: 'Επαναφορά Αρχικού Μεγέθους',
+		border	: 'Περιθώριο',
+		hSpace	: 'Οριζόντιος Χώρος (HSpace)',
+		vSpace	: 'Κάθετος Χώρος (VSpace)',
+		align		: 'Ευθυγράμμιση (Align)',
+		alignLeft	: 'Αριστερά',
+		alignAbsBottom: 'Απόλυτα Κάτω (Abs Bottom)',
+		alignAbsMiddle: 'Απόλυτα στη Μέση (Abs Middle)',
+		alignBaseline	: 'Γραμμή Βάσης (Baseline)',
+		alignBottom	: 'Κάτω (Bottom)',
+		alignMiddle	: 'Μέση (Middle)',
+		alignRight	: 'Δεξιά (Right)',
+		alignTextTop	: 'Κορυφή Κειμένου (Text Top)',
+		alignTop	: 'Πάνω (Top)',
+		preview	: 'Προεπισκόπιση',
+		alertUrl	: 'Εισάγετε την τοποθεσία (URL) της εικόνας',
+		linkTab	: 'Σύνδεσμος',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Ιδιότητες Flash',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Ιδιότητες flash',
+		chkPlay		: 'Αυτόματη έναρξη',
+		chkLoop		: 'Επανάληψη',
+		chkMenu		: 'Ενεργοποίηση Flash Menu',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Κλίμακα',
+		scaleAll		: 'Εμφάνιση όλων',
+		scaleNoBorder	: 'Χωρίς όρια',
+		scaleFit		: 'Ακριβής εφαρμογή',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Ευθυγράμμιση (Align)',
+		alignLeft	: 'Αριστερά',
+		alignAbsBottom: 'Απόλυτα Κάτω (Abs Bottom)',
+		alignAbsMiddle: 'Απόλυτα στη Μέση (Abs Middle)',
+		alignBaseline	: 'Γραμμή Βάσης (Baseline)',
+		alignBottom	: 'Κάτω (Bottom)',
+		alignMiddle	: 'Μέση (Middle)',
+		alignRight	: 'Δεξιά (Right)',
+		alignTextTop	: 'Κορυφή Κειμένου (Text Top)',
+		alignTop	: 'Πάνω (Top)',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Χρώμα Υποβάθρου',
+		width	: 'Πλάτος',
+		height	: 'Ύψος',
+		hSpace	: 'Οριζόντιος Χώρος (HSpace)',
+		vSpace	: 'Κάθετος Χώρος (VSpace)',
+		validateSrc : 'Εισάγετε την τοποθεσία (URL) του υπερσυνδέσμου (Link)',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Ορθογραφικός έλεγχος',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Δεν υπάρχει στο λεξικό',
+		changeTo		: 'Αλλαγή σε',
+		btnIgnore		: 'Αγνόηση',
+		btnIgnoreAll	: 'Αγνόηση όλων',
+		btnReplace		: 'Αντικατάσταση',
+		btnReplaceAll	: 'Αντικατάσταση όλων',
+		btnUndo			: 'Αναίρεση',
+		noSuggestions	: '- Δεν υπάρχουν προτάσεις -',
+		progress		: 'Ορθογραφικός έλεγχος σε εξέλιξη...',
+		noMispell		: 'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν βρέθηκαν λάθη',
+		noChanges		: 'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν άλλαξαν λέξεις',
+		oneChange		: 'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Μια λέξη άλλαξε',
+		manyChanges		: 'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: %1 λέξεις άλλαξαν',
+		ieSpellDownload	: 'Δεν υπάρχει εγκατεστημένος ορθογράφος. Θέλετε να τον κατεβάσετε τώρα;'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Επιλέξτε ένα Smiley'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Λίστα με Αριθμούς',
+	bulletedlist : 'Λίστα με Bullets',
+	indent : 'Αύξηση Εσοχής',
+	outdent : 'Μείωση Εσοχής',
+
+	justify :
+	{
+		left : 'Στοίχιση Αριστερά',
+		center : 'Στοίχιση στο Κέντρο',
+		right : 'Στοίχιση Δεξιά',
+		block : 'Πλήρης Στοίχιση (Block)'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Επικόλληση',
+		cutError	: 'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl+X).',
+		copyError	: 'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl+C).',
+		pasteMsg	: 'Παρακαλώ επικολήστε στο ακόλουθο κουτί χρησιμοποιόντας το πληκτρολόγιο (<STRONG>Ctrl+V</STRONG>) και πατήστε <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Επικόλληση από το Word',
+		title : 'Επικόλληση από το Word',
+		advice : 'Παρακαλώ επικολήστε στο ακόλουθο κουτί χρησιμοποιόντας το πληκτρολόγιο (<STRONG>Ctrl+V</STRONG>) και πατήστε <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Αγνόηση προδιαγραφών γραμματοσειράς',
+		removeStyle : 'Αφαίρεση προδιαγραφών στύλ'
+	},
+
+	pasteText :
+	{
+		button : 'Επικόλληση ως Απλό Κείμενο',
+		title : 'Επικόλληση ως Απλό Κείμενο'
+	},
+
+	templates :
+	{
+		button : 'Πρότυπα',
+		title : 'Πρότυπα περιεχομένου',
+		insertOption: 'Αντικατάσταση υπάρχοντων περιεχομένων',
+		selectPromptMsg: 'Παρακαλώ επιλέξτε πρότυπο για εισαγωγή στο πρόγραμμα<br>(τα υπάρχοντα περιεχόμενα θα χαθούν):',
+		emptyListMsg : '(Δεν έχουν καθοριστεί πρότυπα)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Στυλ',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Μορφή Γραμματοσειράς',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Μορφή Γραμματοσειράς',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Κανονικό',
+		tag_pre : 'Μορφοποιημένο',
+		tag_address : 'Διεύθυνση',
+		tag_h1 : 'Επικεφαλίδα 1',
+		tag_h2 : 'Επικεφαλίδα 2',
+		tag_h3 : 'Επικεφαλίδα 3',
+		tag_h4 : 'Επικεφαλίδα 4',
+		tag_h5 : 'Επικεφαλίδα 5',
+		tag_h6 : 'Επικεφαλίδα 6',
+		tag_div : 'Normal (DIV)' // MISSING
+	},
+
+	font :
+	{
+		label : 'Γραμματοσειρά',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Γραμματοσειρά',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Μέγεθος',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Μέγεθος',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Χρώμα Γραμμάτων',
+		bgColorTitle : 'Χρώμα Υποβάθρου',
+		auto : 'Αυτόματο',
+		more : 'Περισσότερα χρώματα...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/en.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/en.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/en.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the English
+ *		language. This is the base file for all translations.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['en'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Source',
+	newPage			: 'New Page',
+	save			: 'Save',
+	preview			: 'Preview',
+	cut				: 'Cut',
+	copy			: 'Copy',
+	paste			: 'Paste',
+	print			: 'Print',
+	underline		: 'Underline',
+	bold			: 'Bold',
+	italic			: 'Italic',
+	selectAll		: 'Select All',
+	removeFormat	: 'Remove Format',
+	strike			: 'Strike Through',
+	subscript		: 'Subscript',
+	superscript		: 'Superscript',
+	horizontalrule	: 'Insert Horizontal Line',
+	pagebreak		: 'Insert Page Break for Printing',
+	unlink			: 'Unlink',
+	undo			: 'Undo',
+	redo			: 'Redo',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Browse Server',
+		url				: 'URL',
+		protocol		: 'Protocol',
+		upload			: 'Upload',
+		uploadSubmit	: 'Send it to the Server',
+		image			: 'Image',
+		flash			: 'Flash',
+		form			: 'Form',
+		checkbox		: 'Checkbox',
+		radio		: 'Radio Button',
+		textField		: 'Text Field',
+		textarea		: 'Textarea',
+		hiddenField		: 'Hidden Field',
+		button			: 'Button',
+		select	: 'Selection Field',
+		imageButton		: 'Image Button',
+		notSet			: '<not set>',
+		id				: 'Id',
+		name			: 'Name',
+		langDir			: 'Language Direction',
+		langDirLtr		: 'Left to Right (LTR)',
+		langDirRtl		: 'Right to Left (RTL)',
+		langCode		: 'Language Code',
+		longDescr		: 'Long Description URL',
+		cssClass		: 'Stylesheet Classes',
+		advisoryTitle	: 'Advisory Title',
+		cssStyle		: 'Style',
+		ok				: 'OK',
+		cancel			: 'Cancel',
+		generalTab		: 'General',
+		advancedTab		: 'Advanced',
+		validateNumberFailed	: 'This value is not a number.',
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Insert Special Character',
+		title		: 'Select Special Character'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Link',
+		menu		: 'Edit Link',
+		title		: 'Link',
+		info		: 'Link Info',
+		target		: 'Target',
+		upload		: 'Upload',
+		advanced	: 'Advanced',
+		type		: 'Link Type',
+		toAnchor	: 'Link to anchor in the text',
+		toEmail		: 'E-mail',
+		target		: 'Target',
+		targetNotSet	: '<not set>',
+		targetFrame	: '<frame>',
+		targetPopup	: '<popup window>',
+		targetNew	: 'New Window (_blank)',
+		targetTop	: 'Topmost Window (_top)',
+		targetSelf	: 'Same Window (_self)',
+		targetParent	: 'Parent Window (_parent)',
+		targetFrameName	: 'Target Frame Name',
+		targetPopupName	: 'Popup Window Name',
+		popupFeatures	: 'Popup Window Features',
+		popupResizable	: 'Resizable',
+		popupStatusBar	: 'Status Bar',
+		popupLocationBar	: 'Location Bar',
+		popupToolbar	: 'Toolbar',
+		popupMenuBar	: 'Menu Bar',
+		popupFullScreen	: 'Full Screen (IE)',
+		popupScrollBars	: 'Scroll Bars',
+		popupDependent	: 'Dependent (Netscape)',
+		popupWidth		: 'Width',
+		popupLeft		: 'Left Position',
+		popupHeight		: 'Height',
+		popupTop		: 'Top Position',
+		id				: 'Id',
+		langDir			: 'Language Direction',
+		langDirNotSet	: '<not set>',
+		langDirLTR		: 'Left to Right (LTR)',
+		langDirRTL		: 'Right to Left (RTL)',
+		acccessKey		: 'Access Key',
+		name			: 'Name',
+		langCode		: 'Language Code',
+		tabIndex		: 'Tab Index',
+		advisoryTitle	: 'Advisory Title',
+		advisoryContentType	: 'Advisory Content Type',
+		cssClasses		: 'Stylesheet Classes',
+		charset			: 'Linked Resource Charset',
+		styles			: 'Style',
+		selectAnchor	: 'Select an Anchor',
+		anchorName		: 'By Anchor Name',
+		anchorId		: 'By Element Id',
+		emailAddress	: 'E-Mail Address',
+		emailSubject	: 'Message Subject',
+		emailBody		: 'Message Body',
+		noAnchors		: '(No anchors available in the document)',
+		noUrl			: 'Please type the link URL',
+		noEmail			: 'Please type the e-mail address'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Anchor',
+		menu		: 'Edit Anchor',
+		title		: 'Anchor Properties',
+		name		: 'Anchor Name',
+		errorName	: 'Please type the anchor name'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace',
+		find				: 'Find',
+		replace				: 'Replace',
+		findWhat			: 'Find what:',
+		replaceWith			: 'Replace with:',
+		notFoundMsg			: 'The specified text was not found.',
+		matchCase			: 'Match case',
+		matchWord			: 'Match whole word',
+		matchCyclic			: 'Match cyclic',
+		replaceAll			: 'Replace All',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Table',
+		title		: 'Table Properties',
+		menu		: 'Table Properties',
+		deleteTable	: 'Delete Table',
+		rows		: 'Rows',
+		columns		: 'Columns',
+		border		: 'Border size',
+		align		: 'Alignment',
+		alignNotSet	: '<Not set>',
+		alignLeft	: 'Left',
+		alignCenter	: 'Center',
+		alignRight	: 'Right',
+		width		: 'Width',
+		widthPx		: 'pixels',
+		widthPc		: 'percent',
+		height		: 'Height',
+		cellSpace	: 'Cell spacing',
+		cellPad		: 'Cell padding',
+		caption		: 'Caption',
+		summary		: 'Summary',
+		headers		: 'Headers',
+		headersNone		: 'None',
+		headersColumn	: 'First column',
+		headersRow		: 'First Row',
+		headersBoth		: 'Both',
+		invalidRows		: 'Number of rows must be a number greater than 0.',
+		invalidCols		: 'Number of columns must be a number greater than 0.',
+		invalidBorder	: 'Border size must be a number.',
+		invalidWidth	: 'Table width must be a number.',
+		invalidHeight	: 'Table height must be a number.',
+		invalidCellSpacing	: 'Cell spacing must be a number.',
+		invalidCellPadding	: 'Cell padding must be a number.',
+
+		cell :
+		{
+			menu			: 'Cell',
+			insertBefore	: 'Insert Cell Before',
+			insertAfter		: 'Insert Cell After',
+			deleteCell		: 'Delete Cells',
+			merge			: 'Merge Cells',
+			mergeRight		: 'Merge Right',
+			mergeDown		: 'Merge Down',
+			splitHorizontal	: 'Split Cell Horizontally',
+			splitVertical	: 'Split Cell Vertically',
+			title			: 'Cell Properties',
+			cellType		: 'Cell Type',
+			rowSpan			: 'Rows Span',
+			colSpan			: 'Columns Span',
+			wordWrap		: 'Word Wrap',
+			hAlign			: 'Horizontal Alignment',
+			vAlign			: 'Vertical Alignment',
+			alignTop		: 'Top',
+			alignMiddle		: 'Middle',
+			alignBottom		: 'Bottom',
+			alignBaseline	: 'Baseline',
+			bgColor			: 'Background Color',
+			borderColor		: 'Border Color',
+			data			: 'Data',
+			header			: 'Header',
+			yes				: 'Yes',
+			no				: 'No',
+			invalidWidth	: 'Cell width must be a number.',
+			invalidHeight	: 'Cell height must be a number.',
+			invalidRowSpan	: 'Rows span must be a whole number.',
+			invalidColSpan	: 'Columns span must be a whole number.',
+			chooseColor : 'Choose'
+		},
+
+		row :
+		{
+			menu			: 'Row',
+			insertBefore	: 'Insert Row Before',
+			insertAfter		: 'Insert Row After',
+			deleteRow		: 'Delete Rows'
+		},
+
+		column :
+		{
+			menu			: 'Column',
+			insertBefore	: 'Insert Column Before',
+			insertAfter		: 'Insert Column After',
+			deleteColumn	: 'Delete Columns'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Button Properties',
+		text		: 'Text (Value)',
+		type		: 'Type',
+		typeBtn		: 'Button',
+		typeSbm		: 'Submit',
+		typeRst		: 'Reset'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Checkbox Properties',
+		radioTitle	: 'Radio Button Properties',
+		value		: 'Value',
+		selected	: 'Selected'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Form Properties',
+		menu		: 'Form Properties',
+		action		: 'Action',
+		method		: 'Method',
+		encoding	: 'Encoding',
+		target		: 'Target',
+		targetNotSet	: '<not set>',
+		targetNew	: 'New Window (_blank)',
+		targetTop	: 'Topmost Window (_top)',
+		targetSelf	: 'Same Window (_self)',
+		targetParent	: 'Parent Window (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Selection Field Properties',
+		selectInfo	: 'Select Info',
+		opAvail		: 'Available Options',
+		value		: 'Value',
+		size		: 'Size',
+		lines		: 'lines',
+		chkMulti	: 'Allow multiple selections',
+		opText		: 'Text',
+		opValue		: 'Value',
+		btnAdd		: 'Add',
+		btnModify	: 'Modify',
+		btnUp		: 'Up',
+		btnDown		: 'Down',
+		btnSetValue : 'Set as selected value',
+		btnDelete	: 'Delete'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Textarea Properties',
+		cols		: 'Columns',
+		rows		: 'Rows'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Text Field Properties',
+		name		: 'Name',
+		value		: 'Value',
+		charWidth	: 'Character Width',
+		maxChars	: 'Maximum Characters',
+		type		: 'Type',
+		typeText	: 'Text',
+		typePass	: 'Password'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Hidden Field Properties',
+		name	: 'Name',
+		value	: 'Value'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Image Properties',
+		titleButton	: 'Image Button Properties',
+		menu		: 'Image Properties',
+		infoTab	: 'Image Info',
+		btnUpload	: 'Send it to the Server',
+		url		: 'URL',
+		upload	: 'Upload',
+		alt		: 'Alternative Text',
+		width		: 'Width',
+		height	: 'Height',
+		lockRatio	: 'Lock Ratio',
+		resetSize	: 'Reset Size',
+		border	: 'Border',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		align		: 'Align',
+		alignLeft	: 'Left',
+		alignAbsBottom: 'Abs Bottom',
+		alignAbsMiddle: 'Abs Middle',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Bottom',
+		alignMiddle	: 'Middle',
+		alignRight	: 'Right',
+		alignTextTop	: 'Text Top',
+		alignTop	: 'Top',
+		preview	: 'Preview',
+		alertUrl	: 'Please type the image URL',
+		linkTab	: 'Link',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?',
+		img2Button	: 'Do you want to transform the selected image on a image button?',
+		urlMissing : 'Image source URL is missing.'
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash Properties',
+		propertiesTab	: 'Properties',
+		title		: 'Flash Properties',
+		chkPlay		: 'Auto Play',
+		chkLoop		: 'Loop',
+		chkMenu		: 'Enable Flash Menu',
+		chkFull		: 'Allow Fullscreen',
+ 		scale		: 'Scale',
+		scaleAll		: 'Show all',
+		scaleNoBorder	: 'No Border',
+		scaleFit		: 'Exact Fit',
+		access			: 'Script Access',
+		accessAlways	: 'Always',
+		accessSameDomain	: 'Same domain',
+		accessNever	: 'Never',
+		align		: 'Align',
+		alignLeft	: 'Left',
+		alignAbsBottom: 'Abs Bottom',
+		alignAbsMiddle: 'Abs Middle',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Bottom',
+		alignMiddle	: 'Middle',
+		alignRight	: 'Right',
+		alignTextTop	: 'Text Top',
+		alignTop	: 'Top',
+		quality		: 'Quality',
+		qualityBest		 : 'Best',
+		qualityHigh		 : 'High',
+		qualityAutoHigh	 : 'Auto High',
+		qualityMedium	 : 'Medium',
+		qualityAutoLow	 : 'Auto Low',
+		qualityLow		 : 'Low',
+		windowModeWindow	 : 'Window',
+		windowModeOpaque	 : 'Opaque',
+		windowModeTransparent	 : 'Transparent',
+		windowMode	: 'Window mode',
+		flashvars	: 'Variables for Flash',
+		bgcolor	: 'Background color',
+		width	: 'Width',
+		height	: 'Height',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		validateSrc : 'URL must not be empty.',
+		validateWidth : 'Width must be a number.',
+		validateHeight : 'Height must be a number.',
+		validateHSpace : 'HSpace must be a number.',
+		validateVSpace : 'VSpace must be a number.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Check Spelling',
+		title			: 'Spell Check',
+		notAvailable	: 'Sorry, but service is unavailable now.',
+		errorLoading	: 'Error loading application service host: %s.',
+		notInDic		: 'Not in dictionary',
+		changeTo		: 'Change to',
+		btnIgnore		: 'Ignore',
+		btnIgnoreAll	: 'Ignore All',
+		btnReplace		: 'Replace',
+		btnReplaceAll	: 'Replace All',
+		btnUndo			: 'Undo',
+		noSuggestions	: '- No suggestions -',
+		progress		: 'Spell check in progress...',
+		noMispell		: 'Spell check complete: No misspellings found',
+		noChanges		: 'Spell check complete: No words changed',
+		oneChange		: 'Spell check complete: One word changed',
+		manyChanges		: 'Spell check complete: %1 words changed',
+		ieSpellDownload	: 'Spell checker not installed. Do you want to download it now?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Insert a Smiley'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element'
+	},
+
+	numberedlist : 'Insert/Remove Numbered List',
+	bulletedlist : 'Insert/Remove Bulleted List',
+	indent : 'Increase Indent',
+	outdent : 'Decrease Indent',
+
+	justify :
+	{
+		left : 'Left Justify',
+		center : 'Center Justify',
+		right : 'Right Justify',
+		block : 'Block Justify'
+	},
+
+	blockquote : 'Blockquote',
+
+	clipboard :
+	{
+		title		: 'Paste',
+		cutError	: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).',
+		copyError	: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Paste from Word',
+		title : 'Paste from Word',
+		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',
+		ignoreFontFace : 'Ignore Font Face definitions',
+		removeStyle : 'Remove Styles definitions'
+	},
+
+	pasteText :
+	{
+		button : 'Paste as plain text',
+		title : 'Paste as Plain Text'
+	},
+
+	templates :
+	{
+		button : 'Templates',
+		title : 'Content Templates',
+		insertOption: 'Replace actual contents',
+		selectPromptMsg: 'Please select the template to open in the editor',
+		emptyListMsg : '(No templates defined)'
+	},
+
+	showBlocks : 'Show Blocks',
+
+	stylesCombo :
+	{
+		label : 'Styles',
+		voiceLabel : 'Styles',
+		panelVoiceLabel : 'Select a style',
+		panelTitle1 : 'Block Styles',
+		panelTitle2 : 'Inline Styles',
+		panelTitle3 : 'Object Styles'
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format',
+		panelTitle : 'Paragraph Format',
+		panelVoiceLabel : 'Select a paragraph format',
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatted',
+		tag_address : 'Address',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Font',
+		voiceLabel : 'Font',
+		panelTitle : 'Font Name',
+		panelVoiceLabel : 'Select a font'
+	},
+
+	fontSize :
+	{
+		label : 'Size',
+		voiceLabel : 'Font Size',
+		panelTitle : 'Font Size',
+		panelVoiceLabel : 'Select a font size'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Text Color',
+		bgColorTitle : 'Background Color',
+		auto : 'Automatic',
+		more : 'More Colors...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type',
+		enable : 'Enable SCAYT',
+		disable : 'Disable SCAYT',
+		about : 'About SCAYT',
+		toggle : 'Toggle SCAYT',
+		options : 'Options',
+		langs : 'Languages',
+		moreSuggestions : 'More suggestions',
+		ignore : 'Ignore',
+		ignoreAll : 'Ignore All',
+		addWord : 'Add Word',
+		emptyDic : 'Dictionary name should not be empty.',
+		optionsTab : 'Options',
+		languagesTab : 'Languages',
+		dictionariesTab : 'Dictionaries',
+		aboutTab : 'About'
+	},
+
+	about :
+	{
+		title : 'About CKEditor',
+		dlgTitle : 'About CKEditor',
+		moreInfo : 'For licensing information please visit our web site:',
+		copy : 'Copyright &copy; $1. All rights reserved.'
+	},
+
+	maximize : 'Maximize',
+	minimize : 'Minimize',
+
+	fakeobjects :
+	{
+		anchor : 'Anchor',
+		flash : 'Flash Animation',
+		div : 'Page Break',
+		unknown : 'Unknown Object'
+	},
+
+	resize : 'Drag to resize',
+
+	colordialog :
+	{
+		title : 'Select color',
+		highlight : 'Highlight',
+		selected : 'Selected',
+		clear : 'Clear'
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/ar.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/ar.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/ar.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Arabic language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['ar'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'rtl',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'محرر النص المنسق, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'المصدر',
+	newPage			: 'صفحة جديدة',
+	save			: 'حفظ',
+	preview			: 'معاينة الصفحة',
+	cut			: 'قص',
+	copy			: 'نسخ',
+	paste			: 'لصق',
+	print			: 'طباعة',
+	underline		: 'تسطير',
+	bold			: 'غامق',
+	italic			: 'مائل',
+	selectAll		: 'تحديد الكل',
+	removeFormat	        : 'إزالة التنسيقات',
+	strike			: 'يتوسطه خط',
+	subscript		: 'منخفض',
+	superscript		: 'مرتفع',
+	horizontalrule	        : 'خط فاصل',
+	pagebreak		: 'إدخال صفحة جديدة',
+	unlink			: 'إزالة رابط',
+	undo			: 'تراجع',
+	redo			: 'إعادة',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	        : 'تصفح',
+		url			: 'الرابط',
+		protocol		: 'البروتوكول',
+		upload			: 'رفع',
+		uploadSubmit	        : 'أرسل',
+		image			: 'صورة',
+		flash			: 'فلاش',
+		form			: 'نموذج',
+		checkbox		: 'خانة إختيار',
+		radio		        : 'زر اختيار',
+		textField		: 'مربع نص',
+		textarea		: 'مساحة نصية',
+		hiddenField		: 'إدراج حقل خفي',
+		button			: 'زر ضغط',
+		select	                : 'اختار',
+		imageButton		: 'زر صورة',
+		notSet			: '<بدون تحديد>',
+		id			: 'الرقم',
+		name			: 'الاسم',
+		langDir			: 'إتجاه النص',
+		langDirLtr		: 'اليسار لليمين (LTR)',
+		langDirRtl		: 'اليمين لليسار (RTL)',
+		langCode		: 'رمز اللغة',
+		longDescr		: 'الوصف التفصيلى',
+		cssClass		: 'فئات التنسيق',
+		advisoryTitle	        : 'عنوان التقرير',
+		cssStyle		: 'نمط',
+		ok			: 'موافق',
+		cancel			: 'إلغاء الأمر',
+		generalTab		: 'عام',
+		advancedTab		: 'متقدم',
+		validateNumberFailed	: 'لايوجد نتيجة',
+		confirmNewPage	: 'ستفقد أي متغييرات اذا لم تقم بحفظها اولا. هل أنت متأكد أنك تريد صفحة جديدة؟',
+		confirmCancel	: 'بعض الخيارات قد تغيرت. هل أنت متأكد من إغلاق مربع النص؟',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, غير متاح</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'إدراج  خاص.ِ',
+		title		: 'اختر الخواص'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'رابط',
+		menu		: 'تحرير رابط',
+		title		: 'إرتباط تشعبي',
+		info		: 'معلومات الرابط',
+		target		: 'هدف الرابط',
+		upload		: 'رفع',
+		advanced	: 'متقدم',
+		type		: 'نوع الربط',
+		toAnchor	: 'مكان في هذا المستند',
+		toEmail		: 'بريد إلكتروني',
+		target		: 'هدف الرابط',
+		targetNotSet	: '<بدون تحديد>',
+		targetFrame	: '<إطار>',
+		targetPopup	: '<نافذة منبثقة>',
+		targetNew	: 'إطار جديد (_blank)',
+		targetTop	: 'صفحة كاملة (_top)',
+		targetSelf	: 'الاطار الحالى (_self)',
+		targetParent	: 'الإطار الأصلي (_parent)',
+		targetFrameName	: 'اسم الإطار المستهدف',
+		targetPopupName	: 'اسم النافذة المنبثقة',
+		popupFeatures	: 'خصائص النافذة المنبثقة',
+		popupResizable	: 'قابلة التشكيل',
+		popupStatusBar	: 'شريط الحالة',
+		popupLocationBar	: 'شريط العنوان',
+		popupToolbar	: 'شريط الأدوات',
+		popupMenuBar	: 'القوائم الرئيسية',
+		popupFullScreen	: 'ملئ الشاشة (IE)',
+		popupScrollBars	: 'أشرطة التمرير',
+		popupDependent	: 'تابع (Netscape)',
+		popupWidth		: 'العرض',
+		popupLeft		: 'التمركز لليسار',
+		popupHeight		: 'الإرتفاع',
+		popupTop		: 'التمركز للأعلى',
+		id				: 'هوية',
+		langDir			: 'إتجاه النص',
+		langDirNotSet	: '<بدون تحديد>',
+		langDirLTR		: 'اليسار لليمين (LTR)',
+		langDirRTL		: 'اليمين لليسار (RTL)',
+		acccessKey		: 'مفاتيح الإختصار',
+		name			: 'الاسم',
+		langCode		: 'كود النص',
+		tabIndex		: 'الترتيب',
+		advisoryTitle	: 'عنوان التقرير',
+		advisoryContentType	: 'نوع التقرير',
+		cssClasses		: 'فئات التنسيق',
+		charset			: 'ترميز المادة المطلوبة',
+		styles			: 'نمط',
+		selectAnchor	: 'اختر علامة مرجعية',
+		anchorName		: 'حسب الاسم',
+		anchorId		: 'حسب رقم العنصر',
+		emailAddress	: 'عنوان البريد إلكتروني',
+		emailSubject	: 'موضوع الرسالة',
+		emailBody		: 'محتوى الرسالة',
+		noAnchors		: '(لا توجد علامات مرجعية في هذا المستند)',
+		noUrl			: 'من فضلك أدخل عنوان الموقع الذي يشير إليه الرابط',
+		noEmail			: 'من فضلك أدخل عنوان البريد الإلكتروني'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'إشارة مرجعية',
+		menu		: 'تحرير الإشارة المرجعية',
+		title		: 'خصائص الإشارة المرجعية',
+		name		: 'اسم الإشارة المرجعية',
+		errorName	: 'الرجاء كتابة اسم الإشارة المرجعية'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'بحث واستبدال',
+		find				: 'بحث',
+		replace				: 'إستبدال',
+		findWhat			: 'البحث بـ:',
+		replaceWith			: 'إستبدال بـ:',
+		notFoundMsg			: 'لم يتم العثور على النص المحدد.',
+		matchCase			: 'مطابقة حالة الأحرف',
+		matchWord			: 'مطابقة بالكامل',
+		matchCyclic			: 'مطابقة دورية',
+		replaceAll			: 'إستبدال الكل',
+		replaceSuccessMsg	: 'تم استبدال 1% من الحالات '
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'جدول',
+		title		: 'خصائص الجدول',
+		menu		: 'خصائص الجدول',
+		deleteTable	: 'حذف الجدول',
+		rows		: 'صفوف',
+		columns		: 'أعمدة',
+		border		: 'الحدود',
+		align		: 'المحاذاة',
+		alignNotSet	: '<بدون محاذاة>',
+		alignLeft	: 'يسار',
+		alignCenter	: 'وسط',
+		alignRight	: 'يمين',
+		width		: 'العرض',
+		widthPx		: 'بكسل',
+		widthPc		: 'بالمئة',
+		height		: 'الإرتفاع',
+		cellSpace	: 'تباعد الخلايا',
+		cellPad		: 'المسافة البادئة',
+		caption		: 'الوصف',
+		summary		: 'الخلاصة',
+		headers		: 'العناوين',
+		headersNone		: 'بدون',
+		headersColumn	: 'العمود الأول',
+		headersRow		: 'الصف الأول',
+		headersBoth		: 'كلاهما',
+		invalidRows		: 'عدد الصفوف يجب أن يكون عدداً أكبر من صفر.',
+		invalidCols		: 'عدد الأعمدة يجب أن يكون عدداً أكبر من صفر.',
+		invalidBorder	: 'حجم الحد يجب أن يكون عدداً.',
+		invalidWidth	: 'عرض الجدول يجب أن يكون عدداً.',
+		invalidHeight	: 'ارتفاع الجدول يجب أن يكون عدداً.',
+		invalidCellSpacing	: 'المسافة بين الخلايا يجب أن تكون عدداً.',
+		invalidCellPadding	: 'المسافة البادئة يجب أن تكون عدداً',
+
+		cell :
+		{
+			menu			: 'خلية',
+			insertBefore	: 'إدراج خلية قبل',
+			insertAfter		: 'إدراج خلية بعد',
+			deleteCell		: 'حذف خلية',
+			merge			: 'دمج خلايا',
+			mergeRight		: 'دمج لليمين',
+			mergeDown		: 'دمج للأسفل',
+			splitHorizontal	: 'تقسيم الخلية أفقياً',
+			splitVertical	: 'تقسيم الخلية عمودياً',
+			title			: 'خصائص الخلية',
+			cellType		: 'نوع الخلية',
+			rowSpan			: 'امتداد الصفوف',
+			colSpan			: 'امتداد الأعمدة',
+			wordWrap		: 'التفاف النص',
+			hAlign			: 'محاذاة أفقية',
+			vAlign			: 'محاذاة رأسية',
+			alignTop		: 'أعلى',
+			alignMiddle		: 'وسط',
+			alignBottom		: 'أسفل',
+			alignBaseline	: 'خط القاعدة',
+			bgColor			: 'لون الخلفية',
+			borderColor		: 'لون الحدود',
+			data			: 'بيانات',
+			header			: 'عنوان',
+			yes				: 'نعم',
+			no				: 'لا',
+			invalidWidth	: 'عرض الخلية يجب أن يكون عدداً.',
+			invalidHeight	: 'ارتفاع الخلية يجب أن يكون عدداً.',
+			invalidRowSpan	: 'امتداد الصفوف يجب أن يكون عدداً صحيحاً.',
+			invalidColSpan	: 'امتداد الأعمدة يجب أن يكون عدداً صحيحاً.',
+			chooseColor : 'اختر'
+		},
+
+		row :
+		{
+			menu			: 'صف',
+			insertBefore	: 'إدراج صف قبل',
+			insertAfter		: 'إدراج صف بعد',
+			deleteRow		: 'حذف صفوف'
+		},
+
+		column :
+		{
+			menu			: 'عمود',
+			insertBefore	: 'إدراج عمود قبل',
+			insertAfter		: 'إدراج عمود بعد',
+			deleteColumn	: 'حذف أعمدة'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'خصائص زر الضغط',
+		text		: 'القيمة/التسمية',
+		type		: 'نوع الزر',
+		typeBtn		: 'زر',
+		typeSbm		: 'إرسال',
+		typeRst		: 'إعادة تعيين'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'خصائص خانة الإختيار',
+		radioTitle	: 'خصائص زر الخيار',
+		value		: 'القيمة',
+		selected	: 'محدد'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'خصائص النموذج',
+		menu		: 'خصائص النموذج',
+		action		: 'اسم الملف',
+		method		: 'الأسلوب',
+		encoding	: 'تشفير',
+		target		: 'الهدف',
+		targetNotSet	: '<بدون تحديد>',
+		targetNew	: 'نافذة جديدة (_blank)',
+		targetTop	: 'نافذة بالاعلى (_top)',
+		targetSelf	: 'نفس النافذة (_self)',
+		targetParent	: 'النافذة الأصل (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'خصائص اختيار الحقل',
+		selectInfo	: 'اختار معلومات',
+		opAvail		: 'الخيارات المتاحة',
+		value		: 'القيمة',
+		size		: 'الحجم',
+		lines		: 'الأسطر',
+		chkMulti	: 'السماح بتحديدات متعددة',
+		opText		: 'النص',
+		opValue		: 'القيمة',
+		btnAdd		: 'إضافة',
+		btnModify	: 'تعديل',
+		btnUp		: 'أعلى',
+		btnDown		: 'أسفل',
+		btnSetValue : 'إجعلها محددة',
+		btnDelete	: 'إزالة'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'خصائص مساحة النص',
+		cols		: 'الأعمدة',
+		rows		: 'الصفوف'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'خصائص مربع النص',
+		name		: 'الاسم',
+		value		: 'القيمة',
+		charWidth	: 'عرض السمات',
+		maxChars	: 'اقصى عدد للسمات',
+		type		: 'نوع المحتوى',
+		typeText	: 'نص',
+		typePass	: 'كلمة مرور'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'خصائص الحقل المخفي',
+		name	: 'الاسم',
+		value	: 'القيمة'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'خصائص الصورة',
+		titleButton	: 'خصائص زر الصورة',
+		menu		: 'خصائص الصورة',
+		infoTab	: 'معلومات الصورة',
+		btnUpload	: 'أرسلها للخادم',
+		url		: 'موقع الصورة',
+		upload	: 'رفع',
+		alt		: 'عنوان الصورة',
+		width		: 'العرض',
+		height	: 'الإرتفاع',
+		lockRatio	: 'تناسق الحجم',
+		resetSize	: 'إستعادة الحجم الأصلي',
+		border	: 'سمك الحدود',
+		hSpace	: 'تباعد أفقي',
+		vSpace	: 'تباعد عمودي',
+		align		: 'محاذاة',
+		alignLeft	: 'يسار',
+		alignAbsBottom: 'أسفل النص',
+		alignAbsMiddle: 'وسط السطر',
+		alignBaseline	: 'على السطر',
+		alignBottom	: 'أسفل',
+		alignMiddle	: 'وسط',
+		alignRight	: 'يمين',
+		alignTextTop	: 'أعلى النص',
+		alignTop	: 'أعلى',
+		preview	: 'معاينة',
+		alertUrl	: 'فضلاً أكتب الموقع الذي توجد عليه هذه الصورة.',
+		linkTab	: 'الرابط',
+		button2Img	: 'هل تريد تحويل زر الصورة المختار إلى صورة بسيطة؟',
+		img2Button	: 'هل تريد تحويل الصورة المختارة إلى زر صورة؟',
+		urlMissing : 'عنوان مصدر الصورة مفقود'
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'خصائص الفلاش',
+		propertiesTab	: 'الخصائص',
+		title		: 'خصائص فيلم الفلاش',
+		chkPlay		: 'تشغيل تلقائي',
+		chkLoop		: 'تكرار',
+		chkMenu		: 'تمكين قائمة فيلم الفلاش',
+		chkFull		: 'ملء الشاشة',
+ 		scale		: 'الحجم',
+		scaleAll		: 'إظهار الكل',
+		scaleNoBorder	: 'بلا حدود',
+		scaleFit		: 'ضبط تام',
+		access			: 'دخول النص البرمجي',
+		accessAlways	: 'دائماً',
+		accessSameDomain	: 'نفس النطاق',
+		accessNever	: 'مطلقاً',
+		align		: 'محاذاة',
+		alignLeft	: 'يسار',
+		alignAbsBottom: 'أسفل النص',
+		alignAbsMiddle: 'وسط السطر',
+		alignBaseline	: 'على السطر',
+		alignBottom	: 'أسفل',
+		alignMiddle	: 'وسط',
+		alignRight	: 'يمين',
+		alignTextTop	: 'أعلى النص',
+		alignTop	: 'أعلى',
+		quality		: 'جودة',
+		qualityBest		 : 'أفضل',
+		qualityHigh		 : 'عالية',
+		qualityAutoHigh	 : 'عالية تلقائياً',
+		qualityMedium	 : 'متوسطة',
+		qualityAutoLow	 : 'منخفضة تلقائياً',
+		qualityLow		 : 'منخفضة',
+		windowModeWindow	 : 'نافذة',
+		windowModeOpaque	 : 'غير شفاف',
+		windowModeTransparent	 : 'شفاف',
+		windowMode	: 'وضع النافذة',
+		flashvars	: 'متغيرات الفلاش',
+		bgcolor	: 'لون الخلفية',
+		width	: 'العرض',
+		height	: 'الإرتفاع',
+		hSpace	: 'تباعد أفقي',
+		vSpace	: 'تباعد عمودي',
+		validateSrc : 'فضلاً أدخل عنوان الموقع الذي يشير إليه الرابط',
+		validateWidth : 'العرض يجب أن يكون عدداً.',
+		validateHeight : 'الارتفاع يجب أن يكون عدداً.',
+		validateHSpace : 'HSpace يجب أن يكون عدداً.',
+		validateVSpace : 'VSpace يجب أن يكون عدداً.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'تدقيق إملائي',
+		title			: 'التدقيق الإملائي',
+		notAvailable	: 'عفواً، ولكن هذه الخدمة غير متاحة الان',
+		errorLoading	: 'خطأ في تحميل تطبيق خدمة الاستضافة: %s.',
+		notInDic		: 'ليست في القاموس',
+		changeTo		: 'التغيير إلى',
+		btnIgnore		: 'تجاهل',
+		btnIgnoreAll	: 'تجاهل الكل',
+		btnReplace		: 'تغيير',
+		btnReplaceAll	: 'تغيير الكل',
+		btnUndo			: 'تراجع',
+		noSuggestions	: '- لا توجد إقتراحات -',
+		progress		: 'جاري التدقيق الاملائى',
+		noMispell		: 'تم التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية',
+		noChanges		: 'تم التدقيق الإملائي: لم يتم تغيير أي كلمة',
+		oneChange		: 'تم التدقيق الإملائي: تم تغيير كلمة واحدة فقط',
+		manyChanges		: 'تم إكمال التدقيق الإملائي: تم تغيير %1 من كلمات',
+		ieSpellDownload	: 'المدقق الإملائي (الإنجليزي) غير مثبّت. هل تود تحميله الآن؟'
+	},
+
+	smiley :
+	{
+		toolbar	: 'ابتسامات',
+		title	: 'إدراج ابتسامات'
+	},
+
+	elementsPath :
+	{
+		eleTitle : 'عنصر 1%'
+	},
+
+	numberedlist : 'ادخال/حذف تعداد رقمي',
+	bulletedlist : 'ادخال/حذف تعداد نقطي',
+	indent : 'زيادة المسافة البادئة',
+	outdent : 'إنقاص المسافة البادئة',
+
+	justify :
+	{
+		left : 'محاذاة إلى اليسار',
+		center : 'توسيط',
+		right : 'محاذاة إلى اليمين',
+		block : 'ضبط'
+	},
+
+	blockquote : 'اقتباس',
+
+	clipboard :
+	{
+		title		: 'لصق',
+		cutError	: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+X).',
+		copyError	: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+C).',
+		pasteMsg	: 'الصق داخل الصندوق بإستخدام زرائر (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر  <STRONG>موافق</STRONG>.',
+		securityMsg	: 'نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذلك يجب عليك لصق المحتوى مرة أخرى في هذه النافذة.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'لصق من وورد',
+		title : 'لصق من وورد',
+		advice : 'الصق داخل الصندوق بإستخدام مفاتيح (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط مفتاح <STRONG>موافق</STRONG>.',
+		ignoreFontFace : 'تجاهل تعريفات أسماء الخطوط',
+		removeStyle : 'إزالة تعريفات الأنماط'
+	},
+
+	pasteText :
+	{
+		button : 'لصق كنص بسيط',
+		title : 'لصق كنص بسيط'
+	},
+
+	templates :
+	{
+		button : 'القوالب',
+		title : 'قوالب المحتوى',
+		insertOption: 'استبدال المحتوى',
+		selectPromptMsg: 'اختر القالب الذي تود وضعه في المحرر',
+		emptyListMsg : '(لم يتم تعريف أي قالب)'
+	},
+
+	showBlocks : 'مخطط تفصيلي',
+
+	stylesCombo :
+	{
+		label : 'أنماط',
+		voiceLabel : 'أنماط',
+		panelVoiceLabel : 'اختر نمط',
+		panelTitle1 : 'أنماط الفقرة',
+		panelTitle2 : 'أنماط مضمنة',
+		panelTitle3 : 'أنماط الكائن'
+	},
+
+	format :
+	{
+		label : 'تنسيق',
+		voiceLabel : 'تنسيق',
+		panelTitle : 'تنسيق الفقرة',
+		panelVoiceLabel : 'اختر تنسيق الفقرة',
+
+		tag_p : 'عادي',
+		tag_pre : 'منسّق',
+		tag_address : 'عنوان',
+		tag_h1 : 'العنوان 1',
+		tag_h2 : 'العنوان  2',
+		tag_h3 : 'العنوان  3',
+		tag_h4 : 'العنوان  4',
+		tag_h5 : 'العنوان  5',
+		tag_h6 : 'العنوان  6',
+		tag_div : 'عادي (DIV)'
+	},
+
+	font :
+	{
+		label : 'خط',
+		voiceLabel : 'حجم الخط',
+		panelTitle : 'حجم الخط',
+		panelVoiceLabel : 'اختر حجم الخط'
+	},
+
+	fontSize :
+	{
+		label : 'حجم الخط',
+		voiceLabel : 'حجم الخط',
+		panelTitle : 'حجم الخط',
+		panelVoiceLabel : 'اختر حجم الخط'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'لون النص',
+		bgColorTitle : 'لون الخلفية',
+		auto : 'تلقائي',
+		more : 'ألوان إضافية...'
+	},
+
+	colors :
+	{
+		'000' : 'أسود',
+		'800000' : 'كستنائي',
+		'8B4513' : 'بني فاتح',
+		'2F4F4F' : 'رمادي أردوازي غامق',
+		'008080' : 'أزرق مخضر',
+		'000080' : 'أزرق داكن',
+		'4B0082' : 'كحلي',
+		'696969' : 'رمادي داكن',
+		'B22222' : 'طوبي',
+		'A52A2A' : 'بني',
+		'DAA520' : 'ذهبي داكن',
+		'006400' : 'أخضر داكن',
+		'40E0D0' : 'فيروزي',
+		'0000CD' : 'أزرق متوسط',
+		'800080' : 'بنفسجي غامق',
+		'808080' : 'رمادي',
+		'F00' : 'أحمر',
+		'FF8C00' : 'برتقالي داكن',
+		'FFD700' : 'ذهبي',
+		'008000' : 'أخضر',
+		'0FF' : 'تركواز',
+		'00F' : 'أزرق',
+		'EE82EE' : 'بنفسجي',
+		'A9A9A9' : 'رمادي شاحب',
+		'FFA07A' : 'برتقالي وردي',
+		'FFA500' : 'برتقالي',
+		'FFFF00' : 'أصفر',
+		'00FF00' : 'ليموني',
+		'AFEEEE' : 'فيروزي شاحب',
+		'ADD8E6' : 'أزرق فاتح',
+		'DDA0DD' : 'بنفسجي فاتح',
+		'D3D3D3' : 'رمادي فاتح',
+		'FFF0F5' : 'وردي فاتح',
+		'FAEBD7' : 'أبيض عتيق',
+		'FFFFE0' : 'أصفر فاتح',
+		'F0FFF0' : 'أبيض مائل للأخضر',
+		'F0FFFF' : 'سماوي',
+		'F0F8FF' : 'لبني',
+		'E6E6FA' : 'أرجواني',
+		'FFF' : 'أبيض'
+	},
+
+	scayt :
+	{
+		title : 'تدقيق إملائي أثناء الكتابة',
+		enable : 'تفعيل SCAYT',
+		disable : 'تعطيل SCAYT',
+		about : 'عن SCAYT',
+		toggle : 'تثبيت SCAYT',
+		options : 'خيارات',
+		langs : 'لغات',
+		moreSuggestions : 'المزيد من المقترحات',
+		ignore : 'تجاهل',
+		ignoreAll : 'تجاهل الكل',
+		addWord : 'إضافة كلمة',
+		emptyDic : 'اسم القاموس يجب ألا يكون فارغاً.',
+		optionsTab : 'خيارات',
+		languagesTab : 'لغات',
+		dictionariesTab : 'قواميس',
+		aboutTab : 'عن'
+	},
+
+	about :
+	{
+		title : 'عن CKEditor',
+		dlgTitle : 'عن rotidEKC',
+		moreInfo : 'للحصول على معلومات الترخيص ، يرجى زيارة موقعنا على شبكة الانترنت:',
+		copy : 'حقوق النشر &copy; $1. جميع الحقوق محفوظة.'
+	},
+
+	maximize : 'تكبير',
+	minimize : 'تصغير',
+
+	fakeobjects :
+	{
+		anchor : 'إرساء',
+		flash : 'رسم متحرك بالفلاش',
+		div : 'فاصل صفحة',
+		unknown : 'كائن غير معروف'
+	},
+
+	resize : 'اسحب لتغيير الحجم',
+
+	colordialog :
+	{
+		title : 'اختر لون',
+		highlight : 'إلقاء الضوء',
+		selected : 'مُختار',
+		clear : 'مسح'
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/gl.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/gl.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/gl.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Galician language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['gl'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Código Fonte',
+	newPage			: 'Nova Páxina',
+	save			: 'Gardar',
+	preview			: 'Vista Previa',
+	cut				: 'Cortar',
+	copy			: 'Copiar',
+	paste			: 'Pegar',
+	print			: 'Imprimir',
+	underline		: 'Sub-raiado',
+	bold			: 'Negrita',
+	italic			: 'Cursiva',
+	selectAll		: 'Seleccionar todo',
+	removeFormat	: 'Eliminar Formato',
+	strike			: 'Tachado',
+	subscript		: 'Subíndice',
+	superscript		: 'Superíndice',
+	horizontalrule	: 'Inserir Liña Horizontal',
+	pagebreak		: 'Inserir Salto de Páxina',
+	unlink			: 'Eliminar Ligazón',
+	undo			: 'Desfacer',
+	redo			: 'Refacer',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Navegar no Servidor',
+		url				: 'URL',
+		protocol		: 'Protocolo',
+		upload			: 'Carregar',
+		uploadSubmit	: 'Enviar ó Servidor',
+		image			: 'Imaxe',
+		flash			: 'Flash',
+		form			: 'Formulario',
+		checkbox		: 'Cadro de Verificación',
+		radio		: 'Botón de Radio',
+		textField		: 'Campo de Texto',
+		textarea		: 'Área de Texto',
+		hiddenField		: 'Campo Oculto',
+		button			: 'Botón',
+		select	: 'Campo de Selección',
+		imageButton		: 'Botón de Imaxe',
+		notSet			: '<non definido>',
+		id				: 'Id',
+		name			: 'Nome',
+		langDir			: 'Orientación do Idioma',
+		langDirLtr		: 'Esquerda a Dereita (LTR)',
+		langDirRtl		: 'Dereita a Esquerda (RTL)',
+		langCode		: 'Código do Idioma',
+		longDescr		: 'Descrición Completa da URL',
+		cssClass		: 'Clases da Folla de Estilos',
+		advisoryTitle	: 'Título',
+		cssStyle		: 'Estilo',
+		ok				: 'OK',
+		cancel			: 'Cancelar',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Advanzado',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Inserir Carácter Especial',
+		title		: 'Seleccione Caracter Especial'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Inserir/Editar Ligazón',
+		menu		: 'Editar Ligazón',
+		title		: 'Ligazón',
+		info		: 'Información da Ligazón',
+		target		: 'Destino',
+		upload		: 'Carregar',
+		advanced	: 'Advanzado',
+		type		: 'Tipo de Ligazón',
+		toAnchor	: 'Referencia nesta páxina',
+		toEmail		: 'E-Mail',
+		target		: 'Destino',
+		targetNotSet	: '<non definido>',
+		targetFrame	: '<frame>',
+		targetPopup	: '<Xanela Emerxente>',
+		targetNew	: 'Nova Xanela (_blank)',
+		targetTop	: 'Xanela Primaria (_top)',
+		targetSelf	: 'Mesma Xanela (_self)',
+		targetParent	: 'Xanela Pai (_parent)',
+		targetFrameName	: 'Nome do Marco Destino',
+		targetPopupName	: 'Nome da Xanela Emerxente',
+		popupFeatures	: 'Características da Xanela Emerxente',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Barra de Estado',
+		popupLocationBar	: 'Barra de Localización',
+		popupToolbar	: 'Barra de Ferramentas',
+		popupMenuBar	: 'Barra de Menú',
+		popupFullScreen	: 'A Toda Pantalla (IE)',
+		popupScrollBars	: 'Barras de Desplazamento',
+		popupDependent	: 'Dependente (Netscape)',
+		popupWidth		: 'Largura',
+		popupLeft		: 'Posición Esquerda',
+		popupHeight		: 'Altura',
+		popupTop		: 'Posición dende Arriba',
+		id				: 'Id', // MISSING
+		langDir			: 'Orientación do Idioma',
+		langDirNotSet	: '<non definido>',
+		langDirLTR		: 'Esquerda a Dereita (LTR)',
+		langDirRTL		: 'Dereita a Esquerda (RTL)',
+		acccessKey		: 'Chave de Acceso',
+		name			: 'Nome',
+		langCode		: 'Orientación do Idioma',
+		tabIndex		: 'Índice de Tabulación',
+		advisoryTitle	: 'Título',
+		advisoryContentType	: 'Tipo de Contido',
+		cssClasses		: 'Clases da Folla de Estilos',
+		charset			: 'Fonte de Caracteres Vinculado',
+		styles			: 'Estilo',
+		selectAnchor	: 'Seleccionar unha Referencia',
+		anchorName		: 'Por Nome de Referencia',
+		anchorId		: 'Por Element Id',
+		emailAddress	: 'Enderezo de E-Mail',
+		emailSubject	: 'Asunto do Mensaxe',
+		emailBody		: 'Corpo do Mensaxe',
+		noAnchors		: '(Non hai referencias disponibles no documento)',
+		noUrl			: 'Por favor, escriba a ligazón URL',
+		noEmail			: 'Por favor, escriba o enderezo de e-mail'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Inserir/Editar Referencia',
+		menu		: 'Propriedades da Referencia',
+		title		: 'Propriedades da Referencia',
+		name		: 'Nome da Referencia',
+		errorName	: 'Por favor, escriba o nome da referencia'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'Procurar',
+		replace				: 'Substituir',
+		findWhat			: 'Texto a procurar:',
+		replaceWith			: 'Substituir con:',
+		notFoundMsg			: 'Non te atopou o texto indicado.',
+		matchCase			: 'Coincidir Mai./min.',
+		matchWord			: 'Coincidir con toda a palabra',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Substitiur Todo',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabla',
+		title		: 'Propiedades da Táboa',
+		menu		: 'Propiedades da Táboa',
+		deleteTable	: 'Borrar Táboa',
+		rows		: 'Filas',
+		columns		: 'Columnas',
+		border		: 'Tamaño do Borde',
+		align		: 'Aliñamento',
+		alignNotSet	: '<Non Definido>',
+		alignLeft	: 'Esquerda',
+		alignCenter	: 'Centro',
+		alignRight	: 'Ereita',
+		width		: 'Largura',
+		widthPx		: 'pixels',
+		widthPc		: 'percent',
+		height		: 'Altura',
+		cellSpace	: 'Marxe entre Celas',
+		cellPad		: 'Marxe interior',
+		caption		: 'Título',
+		summary		: 'Sumario',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Cela',
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'Borrar Cela',
+			merge			: 'Unir Celas',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Fila',
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'Borrar Filas'
+		},
+
+		column :
+		{
+			menu			: 'Columna',
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'Borrar Columnas'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Propriedades do Botón',
+		text		: 'Texto (Valor)',
+		type		: 'Tipo',
+		typeBtn		: 'Button', // MISSING
+		typeSbm		: 'Submit', // MISSING
+		typeRst		: 'Reset' // MISSING
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Propriedades do Cadro de Verificación',
+		radioTitle	: 'Propriedades do Botón de Radio',
+		value		: 'Valor',
+		selected	: 'Seleccionado'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Propriedades do Formulario',
+		menu		: 'Propriedades do Formulario',
+		action		: 'Acción',
+		method		: 'Método',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Destino',
+		targetNotSet	: '<non definido>',
+		targetNew	: 'Nova Xanela (_blank)',
+		targetTop	: 'Xanela Primaria (_top)',
+		targetSelf	: 'Mesma Xanela (_self)',
+		targetParent	: 'Xanela Pai (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Propriedades do Campo de Selección',
+		selectInfo	: 'Info',
+		opAvail		: 'Opcións Disponibles',
+		value		: 'Valor',
+		size		: 'Tamaño',
+		lines		: 'liñas',
+		chkMulti	: 'Permitir múltiples seleccións',
+		opText		: 'Texto',
+		opValue		: 'Valor',
+		btnAdd		: 'Engadir',
+		btnModify	: 'Modificar',
+		btnUp		: 'Subir',
+		btnDown		: 'Baixar',
+		btnSetValue : 'Definir como valor por defecto',
+		btnDelete	: 'Borrar'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Propriedades da Área de Texto',
+		cols		: 'Columnas',
+		rows		: 'Filas'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Propriedades do Campo de Texto',
+		name		: 'Nome',
+		value		: 'Valor',
+		charWidth	: 'Tamaño do Caracter',
+		maxChars	: 'Máximo de Caracteres',
+		type		: 'Tipo',
+		typeText	: 'Texto',
+		typePass	: 'Chave'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Propriedades do Campo Oculto',
+		name	: 'Nome',
+		value	: 'Valor'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Propriedades da Imaxe',
+		titleButton	: 'Propriedades do Botón de Imaxe',
+		menu		: 'Propriedades da Imaxe',
+		infoTab	: 'Información da Imaxe',
+		btnUpload	: 'Enviar ó Servidor',
+		url		: 'URL',
+		upload	: 'Carregar',
+		alt		: 'Texto Alternativo',
+		width		: 'Largura',
+		height	: 'Altura',
+		lockRatio	: 'Proporcional',
+		resetSize	: 'Tamaño Orixinal',
+		border	: 'Límite',
+		hSpace	: 'Esp. Horiz.',
+		vSpace	: 'Esp. Vert.',
+		align		: 'Aliñamento',
+		alignLeft	: 'Esquerda',
+		alignAbsBottom: 'Abs Inferior',
+		alignAbsMiddle: 'Abs Centro',
+		alignBaseline	: 'Liña Base',
+		alignBottom	: 'Pé',
+		alignMiddle	: 'Centro',
+		alignRight	: 'Dereita',
+		alignTextTop	: 'Tope do Texto',
+		alignTop	: 'Tope',
+		preview	: 'Vista Previa',
+		alertUrl	: 'Por favor, escriba a URL da imaxe',
+		linkTab	: 'Ligazón',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Propriedades Flash',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Propriedades Flash',
+		chkPlay		: 'Auto Execución',
+		chkLoop		: 'Bucle',
+		chkMenu		: 'Activar Menú Flash',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Escalar',
+		scaleAll		: 'Amosar Todo',
+		scaleNoBorder	: 'Sen Borde',
+		scaleFit		: 'Encaixar axustando',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Aliñamento',
+		alignLeft	: 'Esquerda',
+		alignAbsBottom: 'Abs Inferior',
+		alignAbsMiddle: 'Abs Centro',
+		alignBaseline	: 'Liña Base',
+		alignBottom	: 'Pé',
+		alignMiddle	: 'Centro',
+		alignRight	: 'Dereita',
+		alignTextTop	: 'Tope do Texto',
+		alignTop	: 'Tope',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Cor do Fondo',
+		width	: 'Largura',
+		height	: 'Altura',
+		hSpace	: 'Esp. Horiz.',
+		vSpace	: 'Esp. Vert.',
+		validateSrc : 'Por favor, escriba a ligazón URL',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Corrección Ortográfica',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Non está no diccionario',
+		changeTo		: 'Cambiar a',
+		btnIgnore		: 'Ignorar',
+		btnIgnoreAll	: 'Ignorar Todas',
+		btnReplace		: 'Substituir',
+		btnReplaceAll	: 'Substituir Todas',
+		btnUndo			: 'Desfacer',
+		noSuggestions	: '- Sen candidatos -',
+		progress		: 'Corrección ortográfica en progreso...',
+		noMispell		: 'Corrección ortográfica rematada: Non se atoparon erros',
+		noChanges		: 'Corrección ortográfica rematada: Non se substituiu nengunha verba',
+		oneChange		: 'Corrección ortográfica rematada: Unha verba substituida',
+		manyChanges		: 'Corrección ortográfica rematada: %1 verbas substituidas',
+		ieSpellDownload	: 'O corrector ortográfico non está instalado. ¿Quere descargalo agora?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Inserte un Smiley'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Lista Numerada',
+	bulletedlist : 'Marcas',
+	indent : 'Aumentar Sangría',
+	outdent : 'Disminuir Sangría',
+
+	justify :
+	{
+		left : 'Aliñar á Esquerda',
+		center : 'Centrado',
+		right : 'Aliñar á Dereita',
+		block : 'Xustificado'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Pegar',
+		cutError	: 'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de corte. Por favor, use o teclado para iso (Ctrl+X).',
+		copyError	: 'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de copia. Por favor, use o teclado para iso (Ctrl+C).',
+		pasteMsg	: 'Por favor, pegue dentro do seguinte cadro usando o teclado (<STRONG>Ctrl+V</STRONG>) e pulse <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Pegar dende Word',
+		title : 'Pegar dende Word',
+		advice : 'Por favor, pegue dentro do seguinte cadro usando o teclado (<STRONG>Ctrl+V</STRONG>) e pulse <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignorar as definicións de Tipografía',
+		removeStyle : 'Eliminar as definicións de Estilos'
+	},
+
+	pasteText :
+	{
+		button : 'Pegar como texto plano',
+		title : 'Pegar como texto plano'
+	},
+
+	templates :
+	{
+		button : 'Plantillas',
+		title : 'Plantillas de Contido',
+		insertOption: 'Replace actual contents', // MISSING
+		selectPromptMsg: 'Por favor, seleccione a plantilla a abrir no editor<br>(o contido actual perderase):',
+		emptyListMsg : '(Non hai plantillas definidas)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Estilo',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Formato',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Formato',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formateado',
+		tag_address : 'Enderezo',
+		tag_h1 : 'Enacabezado 1',
+		tag_h2 : 'Encabezado 2',
+		tag_h3 : 'Encabezado 3',
+		tag_h4 : 'Encabezado 4',
+		tag_h5 : 'Encabezado 5',
+		tag_h6 : 'Encabezado 6',
+		tag_div : 'Paragraph (DIV)'
+	},
+
+	font :
+	{
+		label : 'Tipo',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Tipo',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Tamaño',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Tamaño',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Cor do Texto',
+		bgColorTitle : 'Cor do Fondo',
+		auto : 'Automático',
+		more : 'Máis Cores...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/_translationstatus.txt
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/_translationstatus.txt	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/_translationstatus.txt	(revision 2000)
@@ -0,0 +1,59 @@
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+
+af.js      Found: 312 Missing: 130
+ar.js      Found: 442 Missing: 0
+bg.js      Found: 305 Missing: 137
+bn.js      Found: 307 Missing: 135
+bs.js      Found: 210 Missing: 232
+ca.js      Found: 435 Missing: 7
+cs.js      Found: 442 Missing: 0
+da.js      Found: 435 Missing: 7
+de.js      Found: 435 Missing: 7
+el.js      Found: 311 Missing: 131
+en-au.js   Found: 395 Missing: 47
+en-ca.js   Found: 395 Missing: 47
+en-uk.js   Found: 395 Missing: 47
+eo.js      Found: 282 Missing: 160
+es.js      Found: 435 Missing: 7
+et.js      Found: 326 Missing: 116
+eu.js      Found: 435 Missing: 7
+fa.js      Found: 327 Missing: 115
+fi.js      Found: 325 Missing: 117
+fo.js      Found: 326 Missing: 116
+fr-ca.js   Found: 327 Missing: 115
+fr.js      Found: 434 Missing: 8
+gl.js      Found: 308 Missing: 134
+gu.js      Found: 326 Missing: 116
+he.js      Found: 442 Missing: 0
+hi.js      Found: 327 Missing: 115
+hr.js      Found: 435 Missing: 7
+hu.js      Found: 326 Missing: 116
+is.js      Found: 332 Missing: 110
+it.js      Found: 434 Missing: 8
+ja.js      Found: 434 Missing: 8
+km.js      Found: 299 Missing: 143
+ko.js      Found: 318 Missing: 124
+lt.js      Found: 331 Missing: 111
+lv.js      Found: 308 Missing: 134
+mn.js      Found: 326 Missing: 116
+ms.js      Found: 287 Missing: 155
+nb.js      Found: 325 Missing: 117
+nl.js      Found: 435 Missing: 7
+no.js      Found: 325 Missing: 117
+pl.js      Found: 442 Missing: 0
+pt-br.js   Found: 434 Missing: 8
+pt.js      Found: 307 Missing: 135
+ro.js      Found: 326 Missing: 116
+ru.js      Found: 332 Missing: 110
+sk.js      Found: 327 Missing: 115
+sl.js      Found: 325 Missing: 117
+sr-latn.js Found: 301 Missing: 141
+sr.js      Found: 301 Missing: 141
+sv.js      Found: 324 Missing: 118
+th.js      Found: 312 Missing: 130
+tr.js      Found: 332 Missing: 110
+uk.js      Found: 435 Missing: 7
+vi.js      Found: 435 Missing: 7
+zh-cn.js   Found: 435 Missing: 7
+zh.js      Found: 435 Missing: 7
Index: /trunk/filemanager/tp/ckeditor/_source/lang/fr.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/fr.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/fr.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * French language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['fr'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Editeur de Texte Enrichi, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Source',
+	newPage			: 'Nouvelle page',
+	save			: 'Enregistrer',
+	preview			: 'Aperçu',
+	cut				: 'Couper',
+	copy			: 'Copier',
+	paste			: 'Coller',
+	print			: 'Imprimer',
+	underline		: 'Souligné',
+	bold			: 'Gras',
+	italic			: 'Italique',
+	selectAll		: 'Tout sélectionner',
+	removeFormat	: 'Supprimer la mise en forme',
+	strike			: 'Barré',
+	subscript		: 'Indice',
+	superscript		: 'Exposant',
+	horizontalrule	: 'Ligne horizontale',
+	pagebreak		: 'Saut de page',
+	unlink			: 'Supprimer le lien',
+	undo			: 'Annuler',
+	redo			: 'Rétablir',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Explorer le serveur',
+		url				: 'URL',
+		protocol		: 'Protocole',
+		upload			: 'Envoyer',
+		uploadSubmit	: 'Envoyer sur le serveur',
+		image			: 'Image',
+		flash			: 'Flash',
+		form			: 'Formulaire',
+		checkbox		: 'Case à cocher',
+		radio		: 'Bouton Radio',
+		textField		: 'Champ texte',
+		textarea		: 'Zone de texte',
+		hiddenField		: 'Champ caché',
+		button			: 'Bouton',
+		select	: 'Liste déroulante',
+		imageButton		: 'Bouton image',
+		notSet			: '<non défini>',
+		id				: 'Id',
+		name			: 'Nom',
+		langDir			: 'Sens d\'écriture',
+		langDirLtr		: 'Gauche à droite (LTR)',
+		langDirRtl		: 'Droite à gauche (RTL)',
+		langCode		: 'Code de langue',
+		longDescr		: 'URL de description longue (longdesc => malvoyant)',
+		cssClass		: 'Classe CSS',
+		advisoryTitle	: 'Description (title)',
+		cssStyle		: 'Style',
+		ok				: 'OK',
+		cancel			: 'Annuler',
+		generalTab		: 'Général',
+		advancedTab		: 'Avancé',
+		validateNumberFailed	: 'Cette valeur n\'est pas un nombre.',
+		confirmNewPage	: 'Les changements non sauvegardés seront perdus. Etes-vous sûr de vouloir charger une nouvelle page?',
+		confirmCancel	: 'Certaines options ont été modifiées. Etes-vous sûr de vouloir fermer?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, Indisponible</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Insérer un caractère spécial',
+		title		: 'Sélectionnez un caractère'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Lien',
+		menu		: 'Editer le lien',
+		title		: 'Lien',
+		info		: 'Infos sur le lien',
+		target		: 'Cible',
+		upload		: 'Envoyer',
+		advanced	: 'Avancé',
+		type		: 'Type de lien',
+		toAnchor	: 'Transformer le lien en ancre dans le texte',
+		toEmail		: 'E-mail',
+		target		: 'Cible',
+		targetNotSet	: '<non définie>',
+		targetFrame	: '<cadre>',
+		targetPopup	: '<fenêtre popup>',
+		targetNew	: 'Nouvelle fenêtre (_blank)',
+		targetTop	: 'Même fenêtre (_top)',
+		targetSelf	: 'Même Cadre (_self)',
+		targetParent	: 'Fenêtre parente (_parent)',
+		targetFrameName	: 'Nom du Cadre destination',
+		targetPopupName	: 'Nom de la fenêtre popup',
+		popupFeatures	: 'Options de la fenêtre popup',
+		popupResizable	: 'Redimensionnable',
+		popupStatusBar	: 'Barre de status',
+		popupLocationBar	: 'Barre d\'adresse',
+		popupToolbar	: 'Barre d\'outils',
+		popupMenuBar	: 'Barre de menu',
+		popupFullScreen	: 'Plein écran (IE)',
+		popupScrollBars	: 'Barres de défilement',
+		popupDependent	: 'Dépendante (Netscape)',
+		popupWidth		: 'Largeur',
+		popupLeft		: 'Position gauche',
+		popupHeight		: 'Hauteur',
+		popupTop		: 'Position haute',
+		id				: 'Id',
+		langDir			: 'Sens d\'écriture',
+		langDirNotSet	: '<non défini>',
+		langDirLTR		: 'Gauche à droite',
+		langDirRTL		: 'Droite à gauche',
+		acccessKey		: 'Touche d\'accessibilité',
+		name			: 'Nom',
+		langCode		: 'Code de langue',
+		tabIndex		: 'Index de tabulation',
+		advisoryTitle	: 'Description (title)',
+		advisoryContentType	: 'Type de contenu (ex: text/html)',
+		cssClasses		: 'Classe du CSS',
+		charset			: 'Charset de la cible',
+		styles			: 'Style',
+		selectAnchor	: 'Sélectionner l\'ancre',
+		anchorName		: 'Par nom d\'ancre',
+		anchorId		: 'Par ID d\'élément',
+		emailAddress	: 'Adresse E-Mail',
+		emailSubject	: 'Sujet du message',
+		emailBody		: 'Corps du message',
+		noAnchors		: '(Aucune ancre disponible dans ce document)',
+		noUrl			: 'Veuillez entrer l\'adresse du lien',
+		noEmail			: 'Veuillez entrer l\'adresse e-mail'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Ancre',
+		menu		: 'Editer l\'ancre',
+		title		: 'Propriétés de l\'ancre',
+		name		: 'Nom de l\'ancre',
+		errorName	: 'Veuillez entrer le nom de l\'ancre'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Trouver et remplacer',
+		find				: 'Trouver',
+		replace				: 'Remplacer',
+		findWhat			: 'Expression à trouver: ',
+		replaceWith			: 'Remplacer par: ',
+		notFoundMsg			: 'Le texte spécifié ne peut être trouvé.',
+		matchCase			: 'Respecter la casse',
+		matchWord			: 'Mot entier uniquement',
+		matchCyclic			: 'Boucler',
+		replaceAll			: 'Remplacer tout',
+		replaceSuccessMsg	: '%1 occurrence(s) replacée(s).'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tableau',
+		title		: 'Propriétés du tableau',
+		menu		: 'Propriétés du tableau',
+		deleteTable	: 'Supprimer le tableau',
+		rows		: 'Lignes',
+		columns		: 'Colonnes',
+		border		: 'Taille de la bordure',
+		align		: 'Alignement du contenu',
+		alignNotSet	: '<non définie>',
+		alignLeft	: 'Gauche',
+		alignCenter	: 'Centré',
+		alignRight	: 'Droite',
+		width		: 'Largeur',
+		widthPx		: 'pixels',
+		widthPc		: '% pourcents',
+		height		: 'Hauteur',
+		cellSpace	: 'Espacement des cellules',
+		cellPad		: 'Marge interne des cellules',
+		caption		: 'Titre du tableau',
+		summary		: 'Résumé (description)',
+		headers		: 'En-Têtes',
+		headersNone		: 'Aucunes',
+		headersColumn	: 'Première colonne',
+		headersRow		: 'Première ligne',
+		headersBoth		: 'Les deux',
+		invalidRows		: 'Le nombre de lignes doit être supérieur à 0.',
+		invalidCols		: 'Le nombre de colonnes doit être supérieur à 0.',
+		invalidBorder	: 'La taille de la bordure doit être un nombre.',
+		invalidWidth	: 'La largeur du tableau doit être un nombre.',
+		invalidHeight	: 'La hauteur du tableau doit être un nombre.',
+		invalidCellSpacing	: 'L\'espacement des cellules doit être un nombre.',
+		invalidCellPadding	: 'La marge intérieure des cellules doit être un nombre.',
+
+		cell :
+		{
+			menu			: 'Cellule',
+			insertBefore	: 'Insérer une cellule avant',
+			insertAfter		: 'Insérer une cellule après',
+			deleteCell		: 'Supprimer les cellules',
+			merge			: 'Fusionner les cellules',
+			mergeRight		: 'Fusionner à droite',
+			mergeDown		: 'Fusionner en bas',
+			splitHorizontal	: 'Fractionner horizontalement',
+			splitVertical	: 'Fractionner verticalement',
+			title			: 'Propriétés de Cellule',
+			cellType		: 'Type de Cellule',
+			rowSpan			: 'Fusion de Lignes',
+			colSpan			: 'Fusion de Colonnes',
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Alignement Horizontal',
+			vAlign			: 'Alignement Vertical',
+			alignTop		: 'Haut',
+			alignMiddle		: 'Milieu',
+			alignBottom		: 'Bas',
+			alignBaseline	: 'Bas du texte',
+			bgColor			: 'Couleur d\'arrière-plan',
+			borderColor		: 'Couleur de Bordure',
+			data			: 'Données',
+			header			: 'Entête',
+			yes				: 'Oui',
+			no				: 'Non',
+			invalidWidth	: 'La Largeur de Cellule doit être un nombre.',
+			invalidHeight	: 'La Hauteur de Cellule doit être un nombre.',
+			invalidRowSpan	: 'La fusion de lignes doit être un nombre entier.',
+			invalidColSpan	: 'La fusion de colonnes doit être un nombre entier.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Ligne',
+			insertBefore	: 'Insérer une ligne avant',
+			insertAfter		: 'Insérer une ligne après',
+			deleteRow		: 'Supprimer les lignes'
+		},
+
+		column :
+		{
+			menu			: 'Colonnes',
+			insertBefore	: 'Insérer une colonne avant',
+			insertAfter		: 'Insérer une colonne après',
+			deleteColumn	: 'Supprimer les colonnes'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Propriétés du bouton',
+		text		: 'Texte (Value)',
+		type		: 'Type',
+		typeBtn		: 'Bouton',
+		typeSbm		: 'Validation (submit)',
+		typeRst		: 'Remise à zéro'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Propriétés de la case à cocher',
+		radioTitle	: 'Propriétés du bouton Radio',
+		value		: 'Valeur',
+		selected	: 'Sélectionné'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Propriétés du formulaire',
+		menu		: 'Propriétés du formulaire',
+		action		: 'Action',
+		method		: 'Méthode',
+		encoding	: 'Encodage',
+		target		: 'Cible',
+		targetNotSet	: '<non définie>',
+		targetNew	: 'Nouvelle fenêtre (_blank)',
+		targetTop	: 'Même fenêtre (_top)',
+		targetSelf	: 'Même Cadre (_self)',
+		targetParent	: 'Fenêtre parente (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Propriétés du menu déroulant',
+		selectInfo	: 'Informations sur le menu déroulant',
+		opAvail		: 'Options disponibles',
+		value		: 'Valeur',
+		size		: 'Taille',
+		lines		: 'Lignes',
+		chkMulti	: 'Permettre les sélections multiples',
+		opText		: 'Texte',
+		opValue		: 'Valeur',
+		btnAdd		: 'Ajouter',
+		btnModify	: 'Modifier',
+		btnUp		: 'Haut',
+		btnDown		: 'Bas',
+		btnSetValue : 'Définir comme valeur sélectionnée',
+		btnDelete	: 'Supprimer'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Propriétés de la zone de texte',
+		cols		: 'Colonnes',
+		rows		: 'Lignes'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Propriétés du champ texte',
+		name		: 'Nom',
+		value		: 'Valeur',
+		charWidth	: 'Taille des caractères',
+		maxChars	: 'Nombre maximum de caractères',
+		type		: 'Type',
+		typeText	: 'Texte',
+		typePass	: 'Mot de passe'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Propriétés du champ caché',
+		name	: 'Nom',
+		value	: 'Valeur'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Propriétés de l\'image',
+		titleButton	: 'Propriétés du bouton image',
+		menu		: 'Propriétés de l\'image',
+		infoTab	: 'Informations sur l\'image',
+		btnUpload	: 'Envoyer sur le serveur',
+		url		: 'URL',
+		upload	: 'Envoyer',
+		alt		: 'Texte de remplacement',
+		width		: 'Largeur',
+		height	: 'Hauteur',
+		lockRatio	: 'Garder les proportions',
+		resetSize	: 'Taille d\'origine',
+		border	: 'Bordure',
+		hSpace	: 'Espacement horizontal',
+		vSpace	: 'Espacement vertical',
+		align		: 'Alignement',
+		alignLeft	: 'Gauche',
+		alignAbsBottom: 'Bas absolu',
+		alignAbsMiddle: 'Milieu absolu',
+		alignBaseline	: 'Bas du texte',
+		alignBottom	: 'Bas',
+		alignMiddle	: 'Milieu',
+		alignRight	: 'Droite',
+		alignTextTop	: 'Haut du texte',
+		alignTop	: 'Haut',
+		preview	: 'Aperçu',
+		alertUrl	: 'Veuillez entrer l\'adresse de l\'image',
+		linkTab	: 'Lien',
+		button2Img	: 'Voulez-vous transformer le bouton image sélectionné en simple image?',
+		img2Button	: 'Voulez-vous transformer l\'image en bouton image?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Propriétés du Flash',
+		propertiesTab	: 'Propriétés',
+		title		: 'Propriétés du Flash',
+		chkPlay		: 'Jouer automatiquement',
+		chkLoop		: 'Boucle',
+		chkMenu		: 'Activer le menu Flash',
+		chkFull		: 'Permettre le plein écran',
+ 		scale		: 'Echelle',
+		scaleAll		: 'Afficher tout',
+		scaleNoBorder	: 'Pas de bordure',
+		scaleFit		: 'Taille d\'origine',
+		access			: 'Accès aux scripts',
+		accessAlways	: 'Toujours',
+		accessSameDomain	: 'Même domaine',
+		accessNever	: 'Jamais',
+		align		: 'Alignement',
+		alignLeft	: 'Gauche',
+		alignAbsBottom: 'Bas absolu',
+		alignAbsMiddle: 'Milieu absolu',
+		alignBaseline	: 'Bas du texte',
+		alignBottom	: 'Bas',
+		alignMiddle	: 'Milieu',
+		alignRight	: 'Droite',
+		alignTextTop	: 'Haut du texte',
+		alignTop	: 'Haut',
+		quality		: 'Qualité',
+		qualityBest		 : 'Meilleure',
+		qualityHigh		 : 'Haute',
+		qualityAutoHigh	 : 'Haute Auto',
+		qualityMedium	 : 'Moyenne',
+		qualityAutoLow	 : 'Basse Auto',
+		qualityLow		 : 'Basse',
+		windowModeWindow	 : 'Fenêtre',
+		windowModeOpaque	 : 'Opaque',
+		windowModeTransparent	 : 'Transparent',
+		windowMode	: 'Mode fenêtre',
+		flashvars	: 'Variables du Flash',
+		bgcolor	: 'Couleur d\'arrière-plan',
+		width	: 'Largeur',
+		height	: 'Hauteur',
+		hSpace	: 'Espacement horizontal',
+		vSpace	: 'Espacement vertical',
+		validateSrc : 'L\'adresse ne doit pas être vide.',
+		validateWidth : 'La largeur doit être un nombre.',
+		validateHeight : 'La hauteur doit être un nombre.',
+		validateHSpace : 'L\'espacement horizontal doit être un nombre.',
+		validateVSpace : 'L\'espacement vertical doit être un nombre.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Vérifier l\'orthographe',
+		title			: 'Vérifier l\'orthographe',
+		notAvailable	: 'Désolé, le service est indisponible actuellement.',
+		errorLoading	: 'Erreur du chargement du service depuis l\'hôte : %s.',
+		notInDic		: 'N\'existe pas dans le dictionnaire',
+		changeTo		: 'Modifier pour',
+		btnIgnore		: 'Ignorer',
+		btnIgnoreAll	: 'Ignorer tout',
+		btnReplace		: 'Remplacer',
+		btnReplaceAll	: 'Remplacer tout',
+		btnUndo			: 'Annuler',
+		noSuggestions	: '- Aucune suggestion -',
+		progress		: 'Vérification de l\'orthographe en cours...',
+		noMispell		: 'Vérification de l\'orthographe terminée : aucune erreur trouvée',
+		noChanges		: 'Vérification de l\'orthographe terminée : Aucun mot corrigé',
+		oneChange		: 'Vérification de l\'orthographe terminée : Un seul mot corrigé',
+		manyChanges		: 'Vérification de l\'orthographe terminée : %1 mots corrigés',
+		ieSpellDownload	: 'La vérification d\'orthographe n\'est pas installée. Voulez-vous la télécharger maintenant?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Emoticon',
+		title	: 'Insérer un émoticon'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 éléments'
+	},
+
+	numberedlist : 'Insérer/Supprimer la liste numérotée',
+	bulletedlist : 'Insérer/Supprimer la liste à puces',
+	indent : 'Augmenter le retrait (tabulation)',
+	outdent : 'Diminuer le retrait (tabulation)',
+
+	justify :
+	{
+		left : 'Aligner à gauche',
+		center : 'Centrer',
+		right : 'Aligner à droite',
+		block : 'Justifier'
+	},
+
+	blockquote : 'Citation',
+
+	clipboard :
+	{
+		title		: 'Coller',
+		cutError	: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement l\'opération "couper". Veuillez utiliser le raccourci clavier (Ctrl+X).',
+		copyError	: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement des opérations de copie. Veuillez utiliser le raccourci clavier (Ctrl+C).',
+		pasteMsg	: 'Veuillez coller le texte dans la zone suivante en utilisant le raccourci clavier (<strong>Ctrl+V</strong>) et cliquez sur OK',
+		securityMsg	: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur n\'est pas en mesure d\'accéder directement à vos données contenues dans le presse-papier. Vous devriez réessayer de coller les données dans la fenêtre.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Coller depuis Word',
+		title : 'Coller depuis Word',
+		advice : 'Veuillez coller le texte dans la zone suivante, en utilisant le raccourci clavier (<strong>Ctrl+V</strong>) et cliquez sur OK.',
+		ignoreFontFace : 'Supprimer la définition des polices',
+		removeStyle : 'Supprimer la définition des styles'
+	},
+
+	pasteText :
+	{
+		button : 'Coller comme texte sans mise en forme',
+		title : 'Coller comme texte sans mise en forme'
+	},
+
+	templates :
+	{
+		button : 'Modèles',
+		title : 'Contenu des modèles',
+		insertOption: 'Remplacer le contenu actuel',
+		selectPromptMsg: 'Veuillez sélectionner le modèle pour l\'ouvrir dans l\'éditeur',
+		emptyListMsg : '(Aucun modèle disponible)'
+	},
+
+	showBlocks : 'Afficher les blocs',
+
+	stylesCombo :
+	{
+		label : 'Styles',
+		voiceLabel : 'Styles',
+		panelVoiceLabel : 'Choisissez un style',
+		panelTitle1 : 'Styles de blocs',
+		panelTitle2 : 'Styles en ligne',
+		panelTitle3 : 'Styles d\'objet'
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format',
+		panelTitle : 'Format de paragraphe',
+		panelVoiceLabel : 'Choisissez un format de paragraphe',
+
+		tag_p : 'Normal',
+		tag_pre : 'Formaté',
+		tag_address : 'Adresse',
+		tag_h1 : 'Titre 1',
+		tag_h2 : 'Titre 2',
+		tag_h3 : 'Titre 3',
+		tag_h4 : 'Titre 4',
+		tag_h5 : 'Titre 5',
+		tag_h6 : 'Titre 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Police',
+		voiceLabel : 'Police',
+		panelTitle : 'Style de police',
+		panelVoiceLabel : 'Choisissez une police'
+	},
+
+	fontSize :
+	{
+		label : 'Taille',
+		voiceLabel : 'Taille de police',
+		panelTitle : 'Taille de police',
+		panelVoiceLabel : 'Choisissez une taille de police'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Couleur de texte',
+		bgColorTitle : 'Couleur d\'arrière plan',
+		auto : 'Automatique',
+		more : 'Plus de couleurs...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Vérification d\'Orthographe en Cours de Frappe (SCAYT: Spell Check As You Type)',
+		enable : 'Activer SCAYT',
+		disable : 'Désactiver SCAYT',
+		about : 'A propos de SCAYT',
+		toggle : 'Activer/Désactiver SCAYT',
+		options : 'Options',
+		langs : 'Langues',
+		moreSuggestions : 'Plus de suggestions',
+		ignore : 'Ignorer',
+		ignoreAll : 'Ignorer Tout',
+		addWord : 'Ajouter le mot',
+		emptyDic : 'Le nom du dictionnaire ne devrait pas être vide.',
+		optionsTab : 'Options',
+		languagesTab : 'Langues',
+		dictionariesTab : 'Dictionnaires',
+		aboutTab : 'A propos de'
+	},
+
+	about :
+	{
+		title : 'A propos de CKEditor',
+		dlgTitle : 'A propos de CKEditor',
+		moreInfo : 'Pour les informations de licence, veuillez visiter notre site web:',
+		copy : 'Copyright &copy; $1. Tous droits réservés.'
+	},
+
+	maximize : 'Agrandir',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Ancre',
+		flash : 'Animation Flash',
+		div : 'Saut de Page',
+		unknown : 'Objet Inconnu'
+	},
+
+	resize : 'Glisser pour modifier la taille',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/et.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/et.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/et.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Estonian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['et'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Lähtekood',
+	newPage			: 'Uus leht',
+	save			: 'Salvesta',
+	preview			: 'Eelvaade',
+	cut				: 'Lõika',
+	copy			: 'Kopeeri',
+	paste			: 'Kleebi',
+	print			: 'Prindi',
+	underline		: 'Allajoonitud',
+	bold			: 'Paks',
+	italic			: 'Kursiiv',
+	selectAll		: 'Vali kõik',
+	removeFormat	: 'Eemalda vorming',
+	strike			: 'Läbijoonitud',
+	subscript		: 'Allindeks',
+	superscript		: 'Ülaindeks',
+	horizontalrule	: 'Sisesta horisontaaljoon',
+	pagebreak		: 'Sisesta lehevahetuskoht',
+	unlink			: 'Eemalda link',
+	undo			: 'Võta tagasi',
+	redo			: 'Korda toimingut',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Sirvi serverit',
+		url				: 'URL',
+		protocol		: 'Protokoll',
+		upload			: 'Lae üles',
+		uploadSubmit	: 'Saada serverissee',
+		image			: 'Pilt',
+		flash			: 'Flash',
+		form			: 'Vorm',
+		checkbox		: 'Märkeruut',
+		radio		: 'Raadionupp',
+		textField		: 'Tekstilahter',
+		textarea		: 'Tekstiala',
+		hiddenField		: 'Varjatud lahter',
+		button			: 'Nupp',
+		select	: 'Valiklahter',
+		imageButton		: 'Piltnupp',
+		notSet			: '<määramata>',
+		id				: 'Id',
+		name			: 'Nimi',
+		langDir			: 'Keele suund',
+		langDirLtr		: 'Vasakult paremale (LTR)',
+		langDirRtl		: 'Paremalt vasakule (RTL)',
+		langCode		: 'Keele kood',
+		longDescr		: 'Pikk kirjeldus URL',
+		cssClass		: 'Stiilistiku klassid',
+		advisoryTitle	: 'Juhendav tiitel',
+		cssStyle		: 'Laad',
+		ok				: 'OK',
+		cancel			: 'Loobu',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Täpsemalt',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Sisesta erimärk',
+		title		: 'Vali erimärk'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Sisesta link / Muuda linki',
+		menu		: 'Muuda linki',
+		title		: 'Link',
+		info		: 'Lingi info',
+		target		: 'Sihtkoht',
+		upload		: 'Lae üles',
+		advanced	: 'Täpsemalt',
+		type		: 'Lingi tüüp',
+		toAnchor	: 'Ankur sellel lehel',
+		toEmail		: 'E-post',
+		target		: 'Sihtkoht',
+		targetNotSet	: '<määramata>',
+		targetFrame	: '<raam>',
+		targetPopup	: '<hüpikaken>',
+		targetNew	: 'Uus aken (_blank)',
+		targetTop	: 'Pealmine aken (_top)',
+		targetSelf	: 'Sama aken (_self)',
+		targetParent	: 'Esivanem aken (_parent)',
+		targetFrameName	: 'Sihtmärk raami nimi',
+		targetPopupName	: 'Hüpikakna nimi',
+		popupFeatures	: 'Hüpikakna omadused',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Olekuriba',
+		popupLocationBar	: 'Aadressiriba',
+		popupToolbar	: 'Tööriistariba',
+		popupMenuBar	: 'Menüüriba',
+		popupFullScreen	: 'Täisekraan (IE)',
+		popupScrollBars	: 'Kerimisribad',
+		popupDependent	: 'Sõltuv (Netscape)',
+		popupWidth		: 'Laius',
+		popupLeft		: 'Vasak asukoht',
+		popupHeight		: 'Kõrgus',
+		popupTop		: 'Ülemine asukoht',
+		id				: 'Id', // MISSING
+		langDir			: 'Keele suund',
+		langDirNotSet	: '<määramata>',
+		langDirLTR		: 'Vasakult paremale (LTR)',
+		langDirRTL		: 'Paremalt vasakule (RTL)',
+		acccessKey		: 'Juurdepääsu võti',
+		name			: 'Nimi',
+		langCode		: 'Keele suund',
+		tabIndex		: 'Tab indeks',
+		advisoryTitle	: 'Juhendav tiitel',
+		advisoryContentType	: 'Juhendava sisu tüüp',
+		cssClasses		: 'Stiilistiku klassid',
+		charset			: 'Lingitud ressurssi märgistik',
+		styles			: 'Laad',
+		selectAnchor	: 'Vali ankur',
+		anchorName		: 'Ankru nime järgi',
+		anchorId		: 'Elemendi id järgi',
+		emailAddress	: 'E-posti aadress',
+		emailSubject	: 'Sõnumi teema',
+		emailBody		: 'Sõnumi tekst',
+		noAnchors		: '(Selles dokumendis ei ole ankruid)',
+		noUrl			: 'Palun kirjuta lingi URL',
+		noEmail			: 'Palun kirjuta E-Posti aadress'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Sisesta ankur / Muuda ankrut',
+		menu		: 'Ankru omadused',
+		title		: 'Ankru omadused',
+		name		: 'Ankru nimi',
+		errorName	: 'Palun sisest ankru nimi'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Otsi ja asenda',
+		find				: 'Otsi',
+		replace				: 'Asenda',
+		findWhat			: 'Leia mida:',
+		replaceWith			: 'Asenda millega:',
+		notFoundMsg			: 'Valitud teksti ei leitud.',
+		matchCase			: 'Erista suur- ja väiketähti',
+		matchWord			: 'Otsi terviklike sõnu',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Asenda kõik',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabel',
+		title		: 'Tabeli atribuudid',
+		menu		: 'Tabeli atribuudid',
+		deleteTable	: 'Kustuta tabel',
+		rows		: 'Read',
+		columns		: 'Veerud',
+		border		: 'Joone suurus',
+		align		: 'Joondus',
+		alignNotSet	: '<Määramata>',
+		alignLeft	: 'Vasak',
+		alignCenter	: 'Kesk',
+		alignRight	: 'Parem',
+		width		: 'Laius',
+		widthPx		: 'pikslit',
+		widthPc		: 'protsenti',
+		height		: 'Kõrgus',
+		cellSpace	: 'Lahtri vahe',
+		cellPad		: 'Lahtri täidis',
+		caption		: 'Tabeli tiitel',
+		summary		: 'Kokkuvõte',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Lahter',
+			insertBefore	: 'Sisesta lahter enne',
+			insertAfter		: 'Sisesta lahter peale',
+			deleteCell		: 'Eemalda lahtrid',
+			merge			: 'Ühenda lahtrid',
+			mergeRight		: 'Ühenda paremale',
+			mergeDown		: 'Ühenda alla',
+			splitHorizontal	: 'Poolita lahter horisontaalselt',
+			splitVertical	: 'Poolita lahter vertikaalselt',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Rida',
+			insertBefore	: 'Sisesta rida enne',
+			insertAfter		: 'Sisesta rida peale',
+			deleteRow		: 'Eemalda read'
+		},
+
+		column :
+		{
+			menu			: 'Veerg',
+			insertBefore	: 'Sisesta veerg enne',
+			insertAfter		: 'Sisesta veerg peale',
+			deleteColumn	: 'Eemalda veerud'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Nupu omadused',
+		text		: 'Tekst (väärtus)',
+		type		: 'Tüüp',
+		typeBtn		: 'Nupp',
+		typeSbm		: 'Saada',
+		typeRst		: 'Lähtesta'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Märkeruudu omadused',
+		radioTitle	: 'Raadionupu omadused',
+		value		: 'Väärtus',
+		selected	: 'Valitud'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Vormi omadused',
+		menu		: 'Vormi omadused',
+		action		: 'Toiming',
+		method		: 'Meetod',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Sihtkoht',
+		targetNotSet	: '<määramata>',
+		targetNew	: 'Uus aken (_blank)',
+		targetTop	: 'Pealmine aken (_top)',
+		targetSelf	: 'Sama aken (_self)',
+		targetParent	: 'Esivanem aken (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Valiklahtri omadused',
+		selectInfo	: 'Info',
+		opAvail		: 'Võimalikud valikud',
+		value		: 'Väärtus',
+		size		: 'Suurus',
+		lines		: 'ridu',
+		chkMulti	: 'Võimalda mitu valikut',
+		opText		: 'Tekst',
+		opValue		: 'Väärtus',
+		btnAdd		: 'Lisa',
+		btnModify	: 'Muuda',
+		btnUp		: 'Üles',
+		btnDown		: 'Alla',
+		btnSetValue : 'Sea valitud olekuna',
+		btnDelete	: 'Kustuta'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Tekstiala omadused',
+		cols		: 'Veerge',
+		rows		: 'Ridu'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Tekstilahtri omadused',
+		name		: 'Nimi',
+		value		: 'Väärtus',
+		charWidth	: 'Laius (tähemärkides)',
+		maxChars	: 'Maksimaalselt tähemärke',
+		type		: 'Tüüp',
+		typeText	: 'Tekst',
+		typePass	: 'Parool'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Varjatud lahtri omadused',
+		name	: 'Nimi',
+		value	: 'Väärtus'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Pildi atribuudid',
+		titleButton	: 'Piltnupu omadused',
+		menu		: 'Pildi atribuudid',
+		infoTab	: 'Pildi info',
+		btnUpload	: 'Saada serverissee',
+		url		: 'URL',
+		upload	: 'Lae üles',
+		alt		: 'Alternatiivne tekst',
+		width		: 'Laius',
+		height	: 'Kõrgus',
+		lockRatio	: 'Lukusta kuvasuhe',
+		resetSize	: 'Lähtesta suurus',
+		border	: 'Joon',
+		hSpace	: 'H. vaheruum',
+		vSpace	: 'V. vaheruum',
+		align		: 'Joondus',
+		alignLeft	: 'Vasak',
+		alignAbsBottom: 'Abs alla',
+		alignAbsMiddle: 'Abs keskele',
+		alignBaseline	: 'Baasjoonele',
+		alignBottom	: 'Alla',
+		alignMiddle	: 'Keskele',
+		alignRight	: 'Paremale',
+		alignTextTop	: 'Tekstit üles',
+		alignTop	: 'Üles',
+		preview	: 'Eelvaade',
+		alertUrl	: 'Palun kirjuta pildi URL',
+		linkTab	: 'Link',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash omadused',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flash omadused',
+		chkPlay		: 'Automaatne start ',
+		chkLoop		: 'Korduv',
+		chkMenu		: 'Võimalda flash menüü',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Mastaap',
+		scaleAll		: 'Näita kõike',
+		scaleNoBorder	: 'Äärist ei ole',
+		scaleFit		: 'Täpne sobivus',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Joondus',
+		alignLeft	: 'Vasak',
+		alignAbsBottom: 'Abs alla',
+		alignAbsMiddle: 'Abs keskele',
+		alignBaseline	: 'Baasjoonele',
+		alignBottom	: 'Alla',
+		alignMiddle	: 'Keskele',
+		alignRight	: 'Paremale',
+		alignTextTop	: 'Tekstit üles',
+		alignTop	: 'Üles',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Tausta värv',
+		width	: 'Laius',
+		height	: 'Kõrgus',
+		hSpace	: 'H. vaheruum',
+		vSpace	: 'V. vaheruum',
+		validateSrc : 'Palun kirjuta lingi URL',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Kontrolli õigekirja',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Puudub sõnastikust',
+		changeTo		: 'Muuda',
+		btnIgnore		: 'Ignoreeri',
+		btnIgnoreAll	: 'Ignoreeri kõiki',
+		btnReplace		: 'Asenda',
+		btnReplaceAll	: 'Asenda kõik',
+		btnUndo			: 'Võta tagasi',
+		noSuggestions	: '- Soovitused puuduvad -',
+		progress		: 'Toimub õigekirja kontroll...',
+		noMispell		: 'Õigekirja kontroll sooritatud: õigekirjuvigu ei leitud',
+		noChanges		: 'Õigekirja kontroll sooritatud: ühtegi sõna ei muudetud',
+		oneChange		: 'Õigekirja kontroll sooritatud: üks sõna muudeti',
+		manyChanges		: 'Õigekirja kontroll sooritatud: %1 sõna muudetud',
+		ieSpellDownload	: 'Õigekirja kontrollija ei ole installeeritud. Soovid sa selle alla laadida?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Emotikon',
+		title	: 'Sisesta emotikon'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Nummerdatud loetelu',
+	bulletedlist : 'Punktiseeritud loetelu',
+	indent : 'Suurenda taanet',
+	outdent : 'Vähenda taanet',
+
+	justify :
+	{
+		left : 'Vasakjoondus',
+		center : 'Keskjoondus',
+		right : 'Paremjoondus',
+		block : 'Rööpjoondus'
+	},
+
+	blockquote : 'Blokktsitaat',
+
+	clipboard :
+	{
+		title		: 'Kleebi',
+		cutError	: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+X).',
+		copyError	: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+C).',
+		pasteMsg	: 'Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.',
+		securityMsg	: 'Sinu veebisirvija turvaseadete tõttu, ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead kleepima need uuesti siia aknasse.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Kleebi Wordist',
+		title : 'Kleebi Wordist',
+		advice : 'Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignoreeri kirja definitsioone',
+		removeStyle : 'Eemalda stiilide definitsioonid'
+	},
+
+	pasteText :
+	{
+		button : 'Kleebi tavalise tekstina',
+		title : 'Kleebi tavalise tekstina'
+	},
+
+	templates :
+	{
+		button : 'Šabloon',
+		title : 'Sisu šabloonid',
+		insertOption: 'Asenda tegelik sisu',
+		selectPromptMsg: 'Palun vali šabloon, et avada see redaktoris<br />(praegune sisu läheb kaotsi):',
+		emptyListMsg : '(Ühtegi šablooni ei ole defineeritud)'
+	},
+
+	showBlocks : 'Näita blokke',
+
+	stylesCombo :
+	{
+		label : 'Laad',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Vorming',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Vorming',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Tavaline',
+		tag_pre : 'Vormindatud',
+		tag_address : 'Aadress',
+		tag_h1 : 'Pealkiri 1',
+		tag_h2 : 'Pealkiri 2',
+		tag_h3 : 'Pealkiri 3',
+		tag_h4 : 'Pealkiri 4',
+		tag_h5 : 'Pealkiri 5',
+		tag_h6 : 'Pealkiri 6',
+		tag_div : 'Tavaline (DIV)'
+	},
+
+	font :
+	{
+		label : 'Kiri',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Kiri',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Suurus',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Suurus',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Teksti värv',
+		bgColorTitle : 'Tausta värv',
+		auto : 'Automaatne',
+		more : 'Rohkem värve...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/hr.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/hr.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/hr.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Croatian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['hr'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Text editor, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Kôd',
+	newPage			: 'Nova stranica',
+	save			: 'Snimi',
+	preview			: 'Pregledaj',
+	cut				: 'Izreži',
+	copy			: 'Kopiraj',
+	paste			: 'Zalijepi',
+	print			: 'Ispiši',
+	underline		: 'Potcrtano',
+	bold			: 'Podebljaj',
+	italic			: 'Ukosi',
+	selectAll		: 'Odaberi sve',
+	removeFormat	: 'Ukloni formatiranje',
+	strike			: 'Precrtano',
+	subscript		: 'Subscript',
+	superscript		: 'Superscript',
+	horizontalrule	: 'Ubaci vodoravnu liniju',
+	pagebreak		: 'Ubaci prijelom stranice',
+	unlink			: 'Ukloni link',
+	undo			: 'Poništi',
+	redo			: 'Ponovi',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Pretraži server',
+		url				: 'URL',
+		protocol		: 'Protokol',
+		upload			: 'Pošalji',
+		uploadSubmit	: 'Pošalji na server',
+		image			: 'Slika',
+		flash			: 'Flash',
+		form			: 'Form',
+		checkbox		: 'Checkbox',
+		radio		: 'Radio Button',
+		textField		: 'Text Field',
+		textarea		: 'Textarea',
+		hiddenField		: 'Hidden Field',
+		button			: 'Button',
+		select	: 'Selection Field',
+		imageButton		: 'Image Button',
+		notSet			: '<nije postavljeno>',
+		id				: 'Id',
+		name			: 'Naziv',
+		langDir			: 'Smjer jezika',
+		langDirLtr		: 'S lijeva na desno (LTR)',
+		langDirRtl		: 'S desna na lijevo (RTL)',
+		langCode		: 'Kôd jezika',
+		longDescr		: 'Dugački opis URL',
+		cssClass		: 'Stylesheet klase',
+		advisoryTitle	: 'Advisory naslov',
+		cssStyle		: 'Stil',
+		ok				: 'OK',
+		cancel			: 'Poništi',
+		generalTab		: 'Općenito',
+		advancedTab		: 'Napredno',
+		validateNumberFailed	: 'Ova vrijednost nije broj.',
+		confirmNewPage	: 'Sve napravljene promjene će biti izgubljene ukoliko ih niste snimili. Sigurno želite učitati novu stranicu?',
+		confirmCancel	: 'Neke od opcija su promjenjene. Sigurno želite zatvoriti ovaj prozor?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, nedostupno</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Ubaci posebne znakove',
+		title		: 'Odaberite posebni karakter'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Ubaci/promijeni link',
+		menu		: 'Promijeni link',
+		title		: 'Link',
+		info		: 'Link Info',
+		target		: 'Meta',
+		upload		: 'Pošalji',
+		advanced	: 'Napredno',
+		type		: 'Link vrsta',
+		toAnchor	: 'Sidro na ovoj stranici',
+		toEmail		: 'E-Mail',
+		target		: 'Meta',
+		targetNotSet	: '<nije postavljeno>',
+		targetFrame	: '<okvir>',
+		targetPopup	: '<popup prozor>',
+		targetNew	: 'Novi prozor (_blank)',
+		targetTop	: 'Vršni prozor (_top)',
+		targetSelf	: 'Isti prozor (_self)',
+		targetParent	: 'Roditeljski prozor (_parent)',
+		targetFrameName	: 'Ime ciljnog okvira',
+		targetPopupName	: 'Naziv popup prozora',
+		popupFeatures	: 'Mogućnosti popup prozora',
+		popupResizable	: 'Promjenjiva veličina',
+		popupStatusBar	: 'Statusna traka',
+		popupLocationBar	: 'Traka za lokaciju',
+		popupToolbar	: 'Traka s alatima',
+		popupMenuBar	: 'Izborna traka',
+		popupFullScreen	: 'Cijeli ekran (IE)',
+		popupScrollBars	: 'Scroll traka',
+		popupDependent	: 'Ovisno (Netscape)',
+		popupWidth		: 'Širina',
+		popupLeft		: 'Lijeva pozicija',
+		popupHeight		: 'Visina',
+		popupTop		: 'Gornja pozicija',
+		id				: 'Id',
+		langDir			: 'Smjer jezika',
+		langDirNotSet	: '<nije postavljeno>',
+		langDirLTR		: 'S lijeva na desno (LTR)',
+		langDirRTL		: 'S desna na lijevo (RTL)',
+		acccessKey		: 'Pristupna tipka',
+		name			: 'Naziv',
+		langCode		: 'Smjer jezika',
+		tabIndex		: 'Tab Indeks',
+		advisoryTitle	: 'Advisory naslov',
+		advisoryContentType	: 'Advisory vrsta sadržaja',
+		cssClasses		: 'Stylesheet klase',
+		charset			: 'Kodna stranica povezanih resursa',
+		styles			: 'Stil',
+		selectAnchor	: 'Odaberi sidro',
+		anchorName		: 'Po nazivu sidra',
+		anchorId		: 'Po Id elementa',
+		emailAddress	: 'E-Mail adresa',
+		emailSubject	: 'Naslov',
+		emailBody		: 'Sadržaj poruke',
+		noAnchors		: '(Nema dostupnih sidra)',
+		noUrl			: 'Molimo upišite URL link',
+		noEmail			: 'Molimo upišite e-mail adresu'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Ubaci/promijeni sidro',
+		menu		: 'Svojstva sidra',
+		title		: 'Svojstva sidra',
+		name		: 'Ime sidra',
+		errorName	: 'Molimo unesite ime sidra'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Pronađi i zamijeni',
+		find				: 'Pronađi',
+		replace				: 'Zamijeni',
+		findWhat			: 'Pronađi:',
+		replaceWith			: 'Zamijeni s:',
+		notFoundMsg			: 'Traženi tekst nije pronađen.',
+		matchCase			: 'Usporedi mala/velika slova',
+		matchWord			: 'Usporedi cijele riječi',
+		matchCyclic			: 'Usporedi kružno',
+		replaceAll			: 'Zamijeni sve',
+		replaceSuccessMsg	: 'Zamijenjeno %1 pojmova.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tablica',
+		title		: 'Svojstva tablice',
+		menu		: 'Svojstva tablice',
+		deleteTable	: 'Izbriši tablicu',
+		rows		: 'Redova',
+		columns		: 'Kolona',
+		border		: 'Veličina okvira',
+		align		: 'Poravnanje',
+		alignNotSet	: '<nije postavljeno>',
+		alignLeft	: 'Lijevo',
+		alignCenter	: 'Središnje',
+		alignRight	: 'Desno',
+		width		: 'Širina',
+		widthPx		: 'piksela',
+		widthPc		: 'postotaka',
+		height		: 'Visina',
+		cellSpace	: 'Prostornost ćelija',
+		cellPad		: 'Razmak ćelija',
+		caption		: 'Naslov',
+		summary		: 'Sažetak',
+		headers		: 'Zaglavlje',
+		headersNone		: 'Ništa',
+		headersColumn	: 'Prva kolona',
+		headersRow		: 'Prvi red',
+		headersBoth		: 'Oba',
+		invalidRows		: 'Broj redova mora biti broj veći od 0.',
+		invalidCols		: 'Broj kolona mora biti broj veći od 0.',
+		invalidBorder	: 'Debljina ruba mora biti broj.',
+		invalidWidth	: 'Širina tablice mora biti broj.',
+		invalidHeight	: 'Visina tablice mora biti broj.',
+		invalidCellSpacing	: 'Prostornost ćelija mora biti broj.',
+		invalidCellPadding	: 'Razmak ćelija mora biti broj.',
+
+		cell :
+		{
+			menu			: 'Ćelija',
+			insertBefore	: 'Ubaci ćeliju prije',
+			insertAfter		: 'Ubaci ćeliju poslije',
+			deleteCell		: 'Izbriši ćelije',
+			merge			: 'Spoji ćelije',
+			mergeRight		: 'Spoji desno',
+			mergeDown		: 'Spoji dolje',
+			splitHorizontal	: 'Podijeli ćeliju vodoravno',
+			splitVertical	: 'Podijeli ćeliju okomito',
+			title			: 'Svojstva ćelije',
+			cellType		: 'Vrsta ćelije',
+			rowSpan			: 'Rows Span',
+			colSpan			: 'Columns Span',
+			wordWrap		: 'Prelazak u novi red',
+			hAlign			: 'Vodoravno poravnanje',
+			vAlign			: 'Okomito poravnanje',
+			alignTop		: 'Vrh',
+			alignMiddle		: 'Sredina',
+			alignBottom		: 'Dolje',
+			alignBaseline	: 'Osnovna linija',
+			bgColor			: 'Boja pozadine',
+			borderColor		: 'Boja ruba',
+			data			: 'Podatak',
+			header			: 'Zaglavlje',
+			yes				: 'Da',
+			no				: 'ne',
+			invalidWidth	: 'Širina ćelije mora biti broj.',
+			invalidHeight	: 'Visina ćelije mora biti broj.',
+			invalidRowSpan	: 'Rows span mora biti cijeli broj.',
+			invalidColSpan	: 'Columns span mora biti cijeli broj.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Red',
+			insertBefore	: 'Ubaci red prije',
+			insertAfter		: 'Ubaci red poslije',
+			deleteRow		: 'Izbriši redove'
+		},
+
+		column :
+		{
+			menu			: 'Kolona',
+			insertBefore	: 'Ubaci kolonu prije',
+			insertAfter		: 'Ubaci kolonu poslije',
+			deleteColumn	: 'Izbriši kolone'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Image Button svojstva',
+		text		: 'Tekst (vrijednost)',
+		type		: 'Vrsta',
+		typeBtn		: 'Gumb',
+		typeSbm		: 'Pošalji',
+		typeRst		: 'Poništi'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Checkbox svojstva',
+		radioTitle	: 'Radio Button svojstva',
+		value		: 'Vrijednost',
+		selected	: 'Odabrano'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Form svojstva',
+		menu		: 'Form svojstva',
+		action		: 'Akcija',
+		method		: 'Metoda',
+		encoding	: 'Encoding',
+		target		: 'Meta',
+		targetNotSet	: '<nije postavljeno>',
+		targetNew	: 'Novi prozor (_blank)',
+		targetTop	: 'Vršni prozor (_top)',
+		targetSelf	: 'Isti prozor (_self)',
+		targetParent	: 'Roditeljski prozor (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Selection svojstva',
+		selectInfo	: 'Info',
+		opAvail		: 'Dostupne opcije',
+		value		: 'Vrijednost',
+		size		: 'Veličina',
+		lines		: 'linija',
+		chkMulti	: 'Dozvoli višestruki odabir',
+		opText		: 'Tekst',
+		opValue		: 'Vrijednost',
+		btnAdd		: 'Dodaj',
+		btnModify	: 'Promijeni',
+		btnUp		: 'Gore',
+		btnDown		: 'Dolje',
+		btnSetValue : 'Postavi kao odabranu vrijednost',
+		btnDelete	: 'Obriši'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Textarea svojstva',
+		cols		: 'Kolona',
+		rows		: 'Redova'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Text Field svojstva',
+		name		: 'Ime',
+		value		: 'Vrijednost',
+		charWidth	: 'Širina',
+		maxChars	: 'Najviše karaktera',
+		type		: 'Vrsta',
+		typeText	: 'Tekst',
+		typePass	: 'Šifra'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Hidden Field svojstva',
+		name	: 'Ime',
+		value	: 'Vrijednost'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Svojstva slika',
+		titleButton	: 'Image Button svojstva',
+		menu		: 'Svojstva slika',
+		infoTab	: 'Info slike',
+		btnUpload	: 'Pošalji na server',
+		url		: 'URL',
+		upload	: 'Pošalji',
+		alt		: 'Alternativni tekst',
+		width		: 'Širina',
+		height	: 'Visina',
+		lockRatio	: 'Zaključaj odnos',
+		resetSize	: 'Obriši veličinu',
+		border	: 'Okvir',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		align		: 'Poravnaj',
+		alignLeft	: 'Lijevo',
+		alignAbsBottom: 'Abs dolje',
+		alignAbsMiddle: 'Abs sredina',
+		alignBaseline	: 'Bazno',
+		alignBottom	: 'Dolje',
+		alignMiddle	: 'Sredina',
+		alignRight	: 'Desno',
+		alignTextTop	: 'Vrh teksta',
+		alignTop	: 'Vrh',
+		preview	: 'Pregledaj',
+		alertUrl	: 'Unesite URL slike',
+		linkTab	: 'Link',
+		button2Img	: 'Želite li promijeniti odabrani gumb u jednostavnu sliku?',
+		img2Button	: 'Želite li promijeniti odabranu sliku u gumb?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash svojstva',
+		propertiesTab	: 'Svojstva',
+		title		: 'Flash svojstva',
+		chkPlay		: 'Auto Play',
+		chkLoop		: 'Ponavljaj',
+		chkMenu		: 'Omogući Flash izbornik',
+		chkFull		: 'Omogući Fullscreen',
+ 		scale		: 'Omjer',
+		scaleAll		: 'Prikaži sve',
+		scaleNoBorder	: 'Bez okvira',
+		scaleFit		: 'Točna veličina',
+		access			: 'Script Access',
+		accessAlways	: 'Uvijek',
+		accessSameDomain	: 'Ista domena',
+		accessNever	: 'Nikad',
+		align		: 'Poravnaj',
+		alignLeft	: 'Lijevo',
+		alignAbsBottom: 'Abs dolje',
+		alignAbsMiddle: 'Abs sredina',
+		alignBaseline	: 'Bazno',
+		alignBottom	: 'Dolje',
+		alignMiddle	: 'Sredina',
+		alignRight	: 'Desno',
+		alignTextTop	: 'Vrh teksta',
+		alignTop	: 'Vrh',
+		quality		: 'Kvaliteta',
+		qualityBest		 : 'Best',
+		qualityHigh		 : 'High',
+		qualityAutoHigh	 : 'Auto High',
+		qualityMedium	 : 'Medium',
+		qualityAutoLow	 : 'Auto Low',
+		qualityLow		 : 'Low',
+		windowModeWindow	 : 'Window',
+		windowModeOpaque	 : 'Opaque',
+		windowModeTransparent	 : 'Transparent',
+		windowMode	: 'Vrsta prozora',
+		flashvars	: 'Varijable za Flash',
+		bgcolor	: 'Boja pozadine',
+		width	: 'Širina',
+		height	: 'Visina',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		validateSrc : 'Molimo upišite URL link',
+		validateWidth : 'Širina mora biti broj.',
+		validateHeight : 'Visina mora biti broj.',
+		validateHSpace : 'HSpace mora biti broj.',
+		validateVSpace : 'VSpace mora biti broj.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Provjeri pravopis',
+		title			: 'Provjera pravopisa',
+		notAvailable	: 'Žao nam je, ali usluga trenutno nije dostupna.',
+		errorLoading	: 'Greška učitavanja aplikacije: %s.',
+		notInDic		: 'Nije u rječniku',
+		changeTo		: 'Promijeni u',
+		btnIgnore		: 'Zanemari',
+		btnIgnoreAll	: 'Zanemari sve',
+		btnReplace		: 'Zamijeni',
+		btnReplaceAll	: 'Zamijeni sve',
+		btnUndo			: 'Vrati',
+		noSuggestions	: '-Nema preporuke-',
+		progress		: 'Provjera u tijeku...',
+		noMispell		: 'Provjera završena: Nema grešaka',
+		noChanges		: 'Provjera završena: Nije napravljena promjena',
+		oneChange		: 'Provjera završena: Jedna riječ promjenjena',
+		manyChanges		: 'Provjera završena: Promijenjeno %1 riječi',
+		ieSpellDownload	: 'Provjera pravopisa nije instalirana. Želite li skinuti provjeru pravopisa?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smješko',
+		title	: 'Ubaci smješka'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element'
+	},
+
+	numberedlist : 'Brojčana lista',
+	bulletedlist : 'Obična lista',
+	indent : 'Pomakni udesno',
+	outdent : 'Pomakni ulijevo',
+
+	justify :
+	{
+		left : 'Lijevo poravnanje',
+		center : 'Središnje poravnanje',
+		right : 'Desno poravnanje',
+		block : 'Blok poravnanje'
+	},
+
+	blockquote : 'Blockquote',
+
+	clipboard :
+	{
+		title		: 'Zalijepi',
+		cutError	: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl+X).',
+		copyError	: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl+C).',
+		pasteMsg	: 'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (<STRONG>Ctrl+V</STRONG>) i kliknite <STRONG>OK</STRONG>.',
+		securityMsg	: 'Zbog sigurnosnih postavki Vašeg pretraživača, editor nema direktan pristup Vašem međuspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Zalijepi iz Worda',
+		title : 'Zalijepi iz Worda',
+		advice : 'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (<STRONG>Ctrl+V</STRONG>) i kliknite <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Zanemari definiciju vrste fonta',
+		removeStyle : 'Ukloni definicije stilova'
+	},
+
+	pasteText :
+	{
+		button : 'Zalijepi kao čisti tekst',
+		title : 'Zalijepi kao čisti tekst'
+	},
+
+	templates :
+	{
+		button : 'Predlošci',
+		title : 'Predlošci sadržaja',
+		insertOption: 'Zamijeni trenutne sadržaje',
+		selectPromptMsg: 'Molimo odaberite predložak koji želite otvoriti<br>(stvarni sadržaj će biti izgubljen):',
+		emptyListMsg : '(Nema definiranih predložaka)'
+	},
+
+	showBlocks : 'Prikaži blokove',
+
+	stylesCombo :
+	{
+		label : 'Stil',
+		voiceLabel : 'Stilovi',
+		panelVoiceLabel : 'Odaberite stil',
+		panelTitle1 : 'Block stilovi',
+		panelTitle2 : 'Inline stilovi',
+		panelTitle3 : 'Object stilovi'
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format',
+		panelTitle : 'Format',
+		panelVoiceLabel : 'Odaberite format paragrafa',
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatirano',
+		tag_address : 'Address',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Font',
+		voiceLabel : 'Font',
+		panelTitle : 'Font',
+		panelVoiceLabel : 'Odaberite font'
+	},
+
+	fontSize :
+	{
+		label : 'Veličina',
+		voiceLabel : 'Veličina slova',
+		panelTitle : 'Veličina',
+		panelVoiceLabel : 'Odaberite veličinu slova'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Boja teksta',
+		bgColorTitle : 'Boja pozadine',
+		auto : 'Automatski',
+		more : 'Više boja...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Provjeri pravopis tijekom tipkanja (SCAYT)',
+		enable : 'Omogući SCAYT',
+		disable : 'Onemogući SCAYT',
+		about : 'O SCAYT',
+		toggle : 'Omoguću/Onemogući SCAYT',
+		options : 'Opcije',
+		langs : 'Jezici',
+		moreSuggestions : 'Više prijedloga',
+		ignore : 'Zanemari',
+		ignoreAll : 'Zanemari sve',
+		addWord : 'Dodaj riječ',
+		emptyDic : 'Naziv rječnika ne smije biti prazno.',
+		optionsTab : 'Opcije',
+		languagesTab : 'Jezici',
+		dictionariesTab : 'Rječnici',
+		aboutTab : 'O SCAYT'
+	},
+
+	about :
+	{
+		title : 'O CKEditoru',
+		dlgTitle : 'O CKEditoru',
+		moreInfo : 'Za informacije o licencama posjetite našu web stranicu:',
+		copy : 'Copyright &copy; $1. All rights reserved.'
+	},
+
+	maximize : 'Povećaj',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Sidro',
+		flash : 'Flash animacija',
+		div : 'Prijelom stranice',
+		unknown : 'Nepoznati objekt'
+	},
+
+	resize : 'Povuci za promjenu veličine',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/nl.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/nl.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/nl.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Dutch language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['nl'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Tekstverwerker, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Code',
+	newPage			: 'Nieuwe pagina',
+	save			: 'Opslaan',
+	preview			: 'Voorbeeld',
+	cut				: 'Knippen',
+	copy			: 'Kopiëren',
+	paste			: 'Plakken',
+	print			: 'Printen',
+	underline		: 'Onderstreept',
+	bold			: 'Vet',
+	italic			: 'Schuingedrukt',
+	selectAll		: 'Alles selecteren',
+	removeFormat	: 'Opmaak verwijderen',
+	strike			: 'Doorhalen',
+	subscript		: 'Subscript',
+	superscript		: 'Superscript',
+	horizontalrule	: 'Horizontale lijn invoegen',
+	pagebreak		: 'Pagina-einde invoegen',
+	unlink			: 'Link verwijderen',
+	undo			: 'Ongedaan maken',
+	redo			: 'Opnieuw uitvoeren',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Bladeren op server',
+		url				: 'URL',
+		protocol		: 'Protocol',
+		upload			: 'Upload',
+		uploadSubmit	: 'Naar server verzenden',
+		image			: 'Afbeelding',
+		flash			: 'Flash',
+		form			: 'Formulier',
+		checkbox		: 'Aanvinkvakje',
+		radio		: 'Selectievakje',
+		textField		: 'Tekstveld',
+		textarea		: 'Tekstvak',
+		hiddenField		: 'Verborgen veld',
+		button			: 'Knop',
+		select	: 'Selectieveld',
+		imageButton		: 'Afbeeldingsknop',
+		notSet			: '<niet ingevuld>',
+		id				: 'Kenmerk',
+		name			: 'Naam',
+		langDir			: 'Schrijfrichting',
+		langDirLtr		: 'Links naar rechts (LTR)',
+		langDirRtl		: 'Rechts naar links (RTL)',
+		langCode		: 'Taalcode',
+		longDescr		: 'Lange URL-omschrijving',
+		cssClass		: 'Stylesheet-klassen',
+		advisoryTitle	: 'Aanbevolen titel',
+		cssStyle		: 'Stijl',
+		ok				: 'OK',
+		cancel			: 'Annuleren',
+		generalTab		: 'Algemeen',
+		advancedTab		: 'Geavanceerd',
+		validateNumberFailed	: 'Deze waarde is geen geldig getal.',
+		confirmNewPage	: 'Alle aangebrachte wijzigingen gaan verloren. Weet u zeker dat u een nieuwe pagina wilt openen?',
+		confirmCancel	: 'Enkele opties zijn gewijzigd. Weet u zeker dat u dit dialoogvenster wilt sluiten?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, niet beschikbaar</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Speciaal teken invoegen',
+		title		: 'Selecteer speciaal teken'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Link invoegen/wijzigen',
+		menu		: 'Link wijzigen',
+		title		: 'Link',
+		info		: 'Linkomschrijving',
+		target		: 'Doel',
+		upload		: 'Upload',
+		advanced	: 'Geavanceerd',
+		type		: 'Linktype',
+		toAnchor	: 'Interne link in pagina',
+		toEmail		: 'E-mail',
+		target		: 'Doel',
+		targetNotSet	: '<niet ingevuld>',
+		targetFrame	: '<frame>',
+		targetPopup	: '<popup window>',
+		targetNew	: 'Nieuw venster (_blank)',
+		targetTop	: 'Hele venster (_top)',
+		targetSelf	: 'Zelfde venster (_self)',
+		targetParent	: 'Origineel venster (_parent)',
+		targetFrameName	: 'Naam doelframe',
+		targetPopupName	: 'Naam popupvenster',
+		popupFeatures	: 'Instellingen popupvenster',
+		popupResizable	: 'Herschaalbaar',
+		popupStatusBar	: 'Statusbalk',
+		popupLocationBar	: 'Locatiemenu',
+		popupToolbar	: 'Menubalk',
+		popupMenuBar	: 'Menubalk',
+		popupFullScreen	: 'Volledig scherm (IE)',
+		popupScrollBars	: 'Schuifbalken',
+		popupDependent	: 'Afhankelijk (Netscape)',
+		popupWidth		: 'Breedte',
+		popupLeft		: 'Positie links',
+		popupHeight		: 'Hoogte',
+		popupTop		: 'Positie boven',
+		id				: 'Id',
+		langDir			: 'Schrijfrichting',
+		langDirNotSet	: '<niet ingevuld>',
+		langDirLTR		: 'Links naar rechts (LTR)',
+		langDirRTL		: 'Rechts naar links (RTL)',
+		acccessKey		: 'Toegangstoets',
+		name			: 'Naam',
+		langCode		: 'Schrijfrichting',
+		tabIndex		: 'Tabvolgorde',
+		advisoryTitle	: 'Aanbevolen titel',
+		advisoryContentType	: 'Aanbevolen content-type',
+		cssClasses		: 'Stylesheet-klassen',
+		charset			: 'Karakterset van gelinkte bron',
+		styles			: 'Stijl',
+		selectAnchor	: 'Kies een interne link',
+		anchorName		: 'Op naam interne link',
+		anchorId		: 'Op kenmerk interne link',
+		emailAddress	: 'E-mailadres',
+		emailSubject	: 'Onderwerp bericht',
+		emailBody		: 'Inhoud bericht',
+		noAnchors		: '(Geen interne links in document gevonden)',
+		noUrl			: 'Geef de link van de URL',
+		noEmail			: 'Geef een e-mailadres'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Interne link',
+		menu		: 'Eigenschappen interne link',
+		title		: 'Eigenschappen interne link',
+		name		: 'Naam interne link',
+		errorName	: 'Geef de naam van de interne link op'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Zoeken en vervangen',
+		find				: 'Zoeken',
+		replace				: 'Vervangen',
+		findWhat			: 'Zoeken naar:',
+		replaceWith			: 'Vervangen met:',
+		notFoundMsg			: 'De opgegeven tekst is niet gevonden.',
+		matchCase			: 'Hoofdlettergevoelig',
+		matchWord			: 'Hele woord moet voorkomen',
+		matchCyclic			: 'Doorlopend zoeken',
+		replaceAll			: 'Alles vervangen',
+		replaceSuccessMsg	: '%1 resulaten vervangen.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabel',
+		title		: 'Eigenschappen tabel',
+		menu		: 'Eigenschappen tabel',
+		deleteTable	: 'Tabel verwijderen',
+		rows		: 'Rijen',
+		columns		: 'Kolommen',
+		border		: 'Breedte rand',
+		align		: 'Uitlijning',
+		alignNotSet	: '<Niet ingevoerd>',
+		alignLeft	: 'Links',
+		alignCenter	: 'Centreren',
+		alignRight	: 'Rechts',
+		width		: 'Breedte',
+		widthPx		: 'pixels',
+		widthPc		: 'procent',
+		height		: 'Hoogte',
+		cellSpace	: 'Afstand tussen cellen',
+		cellPad		: 'Ruimte in de cel',
+		caption		: 'Naam',
+		summary		: 'Samenvatting',
+		headers		: 'Koppen',
+		headersNone		: 'Geen',
+		headersColumn	: 'Eerste kolom',
+		headersRow		: 'Eerste rij',
+		headersBoth		: 'Beide',
+		invalidRows		: 'Het aantal rijen moet een getal zijn groter dan 0.',
+		invalidCols		: 'Het aantal kolommen moet een getal zijn groter dan 0.',
+		invalidBorder	: 'De rand breedte moet een getal zijn.',
+		invalidWidth	: 'De tabel breedte moet een getal zijn.',
+		invalidHeight	: 'De tabel hoogte moet een getal zijn.',
+		invalidCellSpacing	: 'Afstand tussen cellen moet een getal zijn.',
+		invalidCellPadding	: 'Ruimte in de cel moet een getal zijn.',
+
+		cell :
+		{
+			menu			: 'Cel',
+			insertBefore	: 'Voeg cel in voor',
+			insertAfter		: 'Voeg cel in achter',
+			deleteCell		: 'Cellen verwijderen',
+			merge			: 'Cellen samenvoegen',
+			mergeRight		: 'Voeg samen naar rechts',
+			mergeDown		: 'Voeg samen naar beneden',
+			splitHorizontal	: 'Splits cellen horizontaal',
+			splitVertical	: 'Splits cellen verticaal',
+			title			: 'Cel eigenschappen',
+			cellType		: 'Cel type',
+			rowSpan			: 'Rijen samenvoegen',
+			colSpan			: 'Kolommen samenvoegen',
+			wordWrap		: 'Automatische terugloop',
+			hAlign			: 'Horizontale uitlijning',
+			vAlign			: 'Verticale uitlijning',
+			alignTop		: 'Boven',
+			alignMiddle		: 'Midden',
+			alignBottom		: 'Onder',
+			alignBaseline	: 'Basislijn',
+			bgColor			: 'Achtergrondkleur',
+			borderColor		: 'Kleur rand',
+			data			: 'Inhoud',
+			header			: 'Kop',
+			yes				: 'Ja',
+			no				: 'Nee',
+			invalidWidth	: 'De celbreedte moet een getal zijn.',
+			invalidHeight	: 'De celhoogte moet een getal zijn.',
+			invalidRowSpan	: 'Rijen samenvoegen moet een heel getal zijn.',
+			invalidColSpan	: 'Kolommen samenvoegen moet een heel getal zijn.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Rij',
+			insertBefore	: 'Voeg rij in voor',
+			insertAfter		: 'Voeg rij in achter',
+			deleteRow		: 'Rijen verwijderen'
+		},
+
+		column :
+		{
+			menu			: 'Kolom',
+			insertBefore	: 'Voeg kolom in voor',
+			insertAfter		: 'Voeg kolom in achter',
+			deleteColumn	: 'Kolommen verwijderen'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Eigenschappen knop',
+		text		: 'Tekst (waarde)',
+		type		: 'Soort',
+		typeBtn		: 'Knop',
+		typeSbm		: 'Versturen',
+		typeRst		: 'Leegmaken'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Eigenschappen aanvinkvakje',
+		radioTitle	: 'Eigenschappen selectievakje',
+		value		: 'Waarde',
+		selected	: 'Geselecteerd'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Eigenschappen formulier',
+		menu		: 'Eigenschappen formulier',
+		action		: 'Actie',
+		method		: 'Methode',
+		encoding	: 'Codering',
+		target		: 'Doel',
+		targetNotSet	: '<niet ingevuld>',
+		targetNew	: 'Nieuw venster (_blank)',
+		targetTop	: 'Hele venster (_top)',
+		targetSelf	: 'Zelfde venster (_self)',
+		targetParent	: 'Origineel venster (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Eigenschappen selectieveld',
+		selectInfo	: 'Informatie',
+		opAvail		: 'Beschikbare opties',
+		value		: 'Waarde',
+		size		: 'Grootte',
+		lines		: 'Regels',
+		chkMulti	: 'Gecombineerde selecties toestaan',
+		opText		: 'Tekst',
+		opValue		: 'Waarde',
+		btnAdd		: 'Toevoegen',
+		btnModify	: 'Wijzigen',
+		btnUp		: 'Omhoog',
+		btnDown		: 'Omlaag',
+		btnSetValue : 'Als geselecteerde waarde instellen',
+		btnDelete	: 'Verwijderen'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Eigenschappen tekstvak',
+		cols		: 'Kolommen',
+		rows		: 'Rijen'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Eigenschappen tekstveld',
+		name		: 'Naam',
+		value		: 'Waarde',
+		charWidth	: 'Breedte (tekens)',
+		maxChars	: 'Maximum aantal tekens',
+		type		: 'Soort',
+		typeText	: 'Tekst',
+		typePass	: 'Wachtwoord'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Eigenschappen verborgen veld',
+		name	: 'Naam',
+		value	: 'Waarde'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Eigenschappen afbeelding',
+		titleButton	: 'Eigenschappen afbeeldingsknop',
+		menu		: 'Eigenschappen afbeelding',
+		infoTab	: 'Informatie afbeelding',
+		btnUpload	: 'Naar server verzenden',
+		url		: 'URL',
+		upload	: 'Upload',
+		alt		: 'Alternatieve tekst',
+		width		: 'Breedte',
+		height	: 'Hoogte',
+		lockRatio	: 'Afmetingen vergrendelen',
+		resetSize	: 'Afmetingen resetten',
+		border	: 'Rand',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		align		: 'Uitlijning',
+		alignLeft	: 'Links',
+		alignAbsBottom: 'Absoluut-onder',
+		alignAbsMiddle: 'Absoluut-midden',
+		alignBaseline	: 'Basislijn',
+		alignBottom	: 'Beneden',
+		alignMiddle	: 'Midden',
+		alignRight	: 'Rechts',
+		alignTextTop	: 'Boven tekst',
+		alignTop	: 'Boven',
+		preview	: 'Voorbeeld',
+		alertUrl	: 'Geef de URL van de afbeelding',
+		linkTab	: 'Link',
+		button2Img	: 'Wilt u de geselecteerde afbeeldingsknop vervangen door een eenvoudige afbeelding?',
+		img2Button	: 'Wilt u de geselecteerde afbeelding vervangen door een afbeeldingsknop?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Eigenschappen Flash',
+		propertiesTab	: 'Eigenschappen',
+		title		: 'Eigenschappen Flash',
+		chkPlay		: 'Automatisch afspelen',
+		chkLoop		: 'Herhalen',
+		chkMenu		: 'Flashmenu\'s inschakelen',
+		chkFull		: 'Schermvullend toestaan',
+ 		scale		: 'Schaal',
+		scaleAll		: 'Alles tonen',
+		scaleNoBorder	: 'Geen rand',
+		scaleFit		: 'Precies passend',
+		access			: 'Script toegang',
+		accessAlways	: 'Altijd',
+		accessSameDomain	: 'Zelfde domeinnaam',
+		accessNever	: 'Nooit',
+		align		: 'Uitlijning',
+		alignLeft	: 'Links',
+		alignAbsBottom: 'Absoluut-onder',
+		alignAbsMiddle: 'Absoluut-midden',
+		alignBaseline	: 'Basislijn',
+		alignBottom	: 'Beneden',
+		alignMiddle	: 'Midden',
+		alignRight	: 'Rechts',
+		alignTextTop	: 'Boven tekst',
+		alignTop	: 'Boven',
+		quality		: 'Kwaliteit',
+		qualityBest		 : 'Beste',
+		qualityHigh		 : 'Hoog',
+		qualityAutoHigh	 : 'Automatisch hoog',
+		qualityMedium	 : 'Gemiddeld',
+		qualityAutoLow	 : 'Automatisch laag',
+		qualityLow		 : 'Laag',
+		windowModeWindow	 : 'Venster',
+		windowModeOpaque	 : 'Ondoorzichtig',
+		windowModeTransparent	 : 'Doorzichtig',
+		windowMode	: 'Venster modus',
+		flashvars	: 'Variabelen voor Flash',
+		bgcolor	: 'Achtergrondkleur',
+		width	: 'Breedte',
+		height	: 'Hoogte',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		validateSrc : 'Geef de link van de URL',
+		validateWidth : 'De breedte moet een getal zijn.',
+		validateHeight : 'De hoogte moet een getal zijn.',
+		validateHSpace : 'De HSpace moet een getal zijn.',
+		validateVSpace : 'De VSpace moet een getal zijn.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Spellingscontrole',
+		title			: 'Spellingscontrole',
+		notAvailable	: 'Excuses, deze dienst is momenteel niet beschikbaar.',
+		errorLoading	: 'Er is een fout opgetreden bij het laden van de diesnt: %s.',
+		notInDic		: 'Niet in het woordenboek',
+		changeTo		: 'Wijzig in',
+		btnIgnore		: 'Negeren',
+		btnIgnoreAll	: 'Alles negeren',
+		btnReplace		: 'Vervangen',
+		btnReplaceAll	: 'Alles vervangen',
+		btnUndo			: 'Ongedaan maken',
+		noSuggestions	: '-Geen suggesties-',
+		progress		: 'Bezig met spellingscontrole...',
+		noMispell		: 'Klaar met spellingscontrole: geen fouten gevonden',
+		noChanges		: 'Klaar met spellingscontrole: geen woorden aangepast',
+		oneChange		: 'Klaar met spellingscontrole: één woord aangepast',
+		manyChanges		: 'Klaar met spellingscontrole: %1 woorden aangepast',
+		ieSpellDownload	: 'De spellingscontrole niet geïnstalleerd. Wilt u deze nu downloaden?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Smiley invoegen'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element'
+	},
+
+	numberedlist : 'Genummerde lijst',
+	bulletedlist : 'Opsomming',
+	indent : 'Inspringen vergroten',
+	outdent : 'Inspringen verkleinen',
+
+	justify :
+	{
+		left : 'Links uitlijnen',
+		center : 'Centreren',
+		right : 'Rechts uitlijnen',
+		block : 'Uitvullen'
+	},
+
+	blockquote : 'Citaatblok',
+
+	clipboard :
+	{
+		title		: 'Plakken',
+		cutError	: 'De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl+X van het toetsenbord.',
+		copyError	: 'De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl+C van het toetsenbord.',
+		pasteMsg	: 'Plak de tekst in het volgende vak gebruik makend van uw toetsenbord (<strong>Ctrl+V</strong>) en klik op <strong>OK</strong>.',
+		securityMsg	: 'Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Plakken als Word-gegevens',
+		title : 'Plakken als Word-gegevens',
+		advice : 'Plak de tekst in het volgende vak gebruik makend van uw toetsenbord (<strong>Ctrl+V</strong>) en klik op <strong>OK</strong>.',
+		ignoreFontFace : 'Negeer "Font Face"-definities',
+		removeStyle : 'Verwijder "Style"-definities'
+	},
+
+	pasteText :
+	{
+		button : 'Plakken als platte tekst',
+		title : 'Plakken als platte tekst'
+	},
+
+	templates :
+	{
+		button : 'Sjablonen',
+		title : 'Inhoud sjabonen',
+		insertOption: 'Vervang de huidige inhoud',
+		selectPromptMsg: 'Selecteer het sjabloon dat in de editor geopend moet worden (de actuele inhoud gaat verloren):',
+		emptyListMsg : '(Geen sjablonen gedefinieerd)'
+	},
+
+	showBlocks : 'Toon blokken',
+
+	stylesCombo :
+	{
+		label : 'Stijl',
+		voiceLabel : 'Stijl',
+		panelVoiceLabel : 'Selecteer een stijl',
+		panelTitle1 : 'Blok stijlen',
+		panelTitle2 : 'In-line stijlen',
+		panelTitle3 : 'Object stijlen'
+	},
+
+	format :
+	{
+		label : 'Opmaak',
+		voiceLabel : 'Opmaak',
+		panelTitle : 'Opmaak',
+		panelVoiceLabel : 'Selecteer een alinea-opmaak',
+
+		tag_p : 'Normaal',
+		tag_pre : 'Met opmaak',
+		tag_address : 'Adres',
+		tag_h1 : 'Kop 1',
+		tag_h2 : 'Kop 2',
+		tag_h3 : 'Kop 3',
+		tag_h4 : 'Kop 4',
+		tag_h5 : 'Kop 5',
+		tag_h6 : 'Kop 6',
+		tag_div : 'Normaal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Lettertype',
+		voiceLabel : 'Lettertype',
+		panelTitle : 'Lettertype',
+		panelVoiceLabel : 'Selecteer een lettertype'
+	},
+
+	fontSize :
+	{
+		label : 'Lettergrootte',
+		voiceLabel : 'Lettergrootte',
+		panelTitle : 'Lettergrootte',
+		panelVoiceLabel : 'Selecteer een lettergrootte'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Tekstkleur',
+		bgColorTitle : 'Achtergrondkleur',
+		auto : 'Automatisch',
+		more : 'Meer kleuren...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Controleer de spelling tijdens het typen',
+		enable : 'SCAYT inschakelen',
+		disable : 'SCAYT uitschakelen',
+		about : 'Over SCAYT',
+		toggle : 'SCAYT in/uitschakelen',
+		options : 'Opties',
+		langs : 'Talen',
+		moreSuggestions : 'Meer suggesties',
+		ignore : 'Negeren',
+		ignoreAll : 'Alles negeren',
+		addWord : 'Woord toevoegen',
+		emptyDic : 'De naam van het woordenboek mag niet leeg zijn.',
+		optionsTab : 'Opties',
+		languagesTab : 'Talen',
+		dictionariesTab : 'Woordenboeken',
+		aboutTab : 'Over'
+	},
+
+	about :
+	{
+		title : 'Over CKEditor',
+		dlgTitle : 'Over CKEditor',
+		moreInfo : 'Voor licentie informatie, bezoek onze website:',
+		copy : 'Copyright &copy; $1. Alle rechten voorbehouden.'
+	},
+
+	maximize : 'Maximaliseren',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anker',
+		flash : 'Flash animatie',
+		div : 'Pagina einde',
+		unknown : 'Onbekend object'
+	},
+
+	resize : 'Sleep om te herschalen',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/mn.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/mn.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/mn.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Mongolian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['mn'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Код',
+	newPage			: 'Шинэ хуудас',
+	save			: 'Хадгалах',
+	preview			: 'Уридчлан харах',
+	cut				: 'Хайчлах',
+	copy			: 'Хуулах',
+	paste			: 'Буулгах',
+	print			: 'Хэвлэх',
+	underline		: 'Доогуур нь зураастай болгох',
+	bold			: 'Тод бүдүүн',
+	italic			: 'Налуу',
+	selectAll		: 'Бүгдийг нь сонгох',
+	removeFormat	: 'Формат авч хаях',
+	strike			: 'Дундуур нь зураастай болгох',
+	subscript		: 'Суурь болгох',
+	superscript		: 'Зэрэг болгох',
+	horizontalrule	: 'Хөндлөн зураас оруулах',
+	pagebreak		: 'Хуудас тусгаарлагч оруулах',
+	unlink			: 'Линк авч хаях',
+	undo			: 'Хүчингүй болгох',
+	redo			: 'Өмнөх үйлдлээ сэргээх',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Сервер харуулах',
+		url				: 'URL',
+		protocol		: 'Протокол',
+		upload			: 'Хуулах',
+		uploadSubmit	: 'Үүнийг сервэррүү илгээ',
+		image			: 'Зураг',
+		flash			: 'Флаш',
+		form			: 'Форм',
+		checkbox		: 'Чекбокс',
+		radio		: 'Радио товч',
+		textField		: 'Техт талбар',
+		textarea		: 'Техт орчин',
+		hiddenField		: 'Нууц талбар',
+		button			: 'Товч',
+		select	: 'Сонгогч талбар',
+		imageButton		: 'Зурагтай товч',
+		notSet			: '<Оноохгүй>',
+		id				: 'Id',
+		name			: 'Нэр',
+		langDir			: 'Хэлний чиглэл',
+		langDirLtr		: 'Зүүнээс баруун (LTR)',
+		langDirRtl		: 'Баруунаас зүүн (RTL)',
+		langCode		: 'Хэлний код',
+		longDescr		: 'URL-ын тайлбар',
+		cssClass		: 'Stylesheet классууд',
+		advisoryTitle	: 'Зөвлөлдөх гарчиг',
+		cssStyle		: 'Загвар',
+		ok				: 'OK',
+		cancel			: 'Болих',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Нэмэлт',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Онцгой тэмдэгт оруулах',
+		title		: 'Онцгой тэмдэгт сонгох'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Линк Оруулах/Засварлах',
+		menu		: 'Холбоос засварлах',
+		title		: 'Линк',
+		info		: 'Линкийн мэдээлэл',
+		target		: 'Байрлал',
+		upload		: 'Хуулах',
+		advanced	: 'Нэмэлт',
+		type		: 'Линкийн төрөл',
+		toAnchor	: 'Энэ хуудасандах холбоос',
+		toEmail		: 'E-Mail',
+		target		: 'Байрлал',
+		targetNotSet	: '<Оноохгүй>',
+		targetFrame	: '<Агуулах хүрээ>',
+		targetPopup	: '<popup цонх>',
+		targetNew	: 'Шинэ цонх (_blank)',
+		targetTop	: 'Хамгийн түрүүн байх цонх (_top)',
+		targetSelf	: 'Төстэй цонх (_self)',
+		targetParent	: 'Эцэг цонх (_parent)',
+		targetFrameName	: 'Очих фремын нэр',
+		targetPopupName	: 'Popup цонхны нэр',
+		popupFeatures	: 'Popup цонхны онцлог',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Статус хэсэг',
+		popupLocationBar	: 'Location хэсэг',
+		popupToolbar	: 'Багажны хэсэг',
+		popupMenuBar	: 'Meню хэсэг',
+		popupFullScreen	: 'Цонх дүүргэх (IE)',
+		popupScrollBars	: 'Скрол хэсэгүүд',
+		popupDependent	: 'Хамаатай (Netscape)',
+		popupWidth		: 'Өргөн',
+		popupLeft		: 'Зүүн байрлал',
+		popupHeight		: 'Өндөр',
+		popupTop		: 'Дээд байрлал',
+		id				: 'Id', // MISSING
+		langDir			: 'Хэлний чиглэл',
+		langDirNotSet	: '<Оноохгүй>',
+		langDirLTR		: 'Зүүнээс баруун (LTR)',
+		langDirRTL		: 'Баруунаас зүүн (RTL)',
+		acccessKey		: 'Холбох түлхүүр',
+		name			: 'Нэр',
+		langCode		: 'Хэлний чиглэл',
+		tabIndex		: 'Tab индекс',
+		advisoryTitle	: 'Зөвлөлдөх гарчиг',
+		advisoryContentType	: 'Зөвлөлдөх төрлийн агуулга',
+		cssClasses		: 'Stylesheet классууд',
+		charset			: 'Тэмдэгт оноох нөөцөд холбогдсон',
+		styles			: 'Загвар',
+		selectAnchor	: 'Холбоос сонгох',
+		anchorName		: 'Холбоосын нэрээр',
+		anchorId		: 'Элемэнт Id-гаар',
+		emailAddress	: 'E-Mail Хаяг',
+		emailSubject	: 'Message гарчиг',
+		emailBody		: 'Message-ийн агуулга',
+		noAnchors		: '(Баримт бичиг холбоосгүй байна)',
+		noUrl			: 'Линк URL-ээ төрөлжүүлнэ үү',
+		noEmail			: 'Е-mail хаягаа төрөлжүүлнэ үү'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Холбоос Оруулах/Засварлах',
+		menu		: 'Холбоос шинж чанар',
+		title		: 'Холбоос шинж чанар',
+		name		: 'Холбоос нэр',
+		errorName	: 'Холбоос төрөл оруулна уу'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Хай мөн Дарж бич',
+		find				: 'Хайх',
+		replace				: 'Солих',
+		findWhat			: 'Хайх үг/үсэг:',
+		replaceWith			: 'Солих үг:',
+		notFoundMsg			: 'Хайсан текст олсонгүй.',
+		matchCase			: 'Тэнцэх төлөв',
+		matchWord			: 'Тэнцэх бүтэн үг',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Бүгдийг нь Солих',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Хүснэгт',
+		title		: 'Хүснэгт',
+		menu		: 'Хүснэгт',
+		deleteTable	: 'Хүснэгт устгах',
+		rows		: 'Мөр',
+		columns		: 'Багана',
+		border		: 'Хүрээний хэмжээ',
+		align		: 'Эгнээ',
+		alignNotSet	: '<Оноохгүй>',
+		alignLeft	: 'Зүүн талд',
+		alignCenter	: 'Төвд',
+		alignRight	: 'Баруун талд',
+		width		: 'Өргөн',
+		widthPx		: 'цэг',
+		widthPc		: 'хувь',
+		height		: 'Өндөр',
+		cellSpace	: 'Нүх хоорондын зай (spacing)',
+		cellPad		: 'Нүх доторлох(padding)',
+		caption		: 'Тайлбар',
+		summary		: 'Тайлбар',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Нүх/зай',
+			insertBefore	: 'Нүх/зай өмнө нь оруулах',
+			insertAfter		: 'Нүх/зай дараа нь оруулах',
+			deleteCell		: 'Нүх устгах',
+			merge			: 'Нүх нэгтэх',
+			mergeRight		: 'Баруун тийш нэгтгэх',
+			mergeDown		: 'Доош нэгтгэх',
+			splitHorizontal	: 'Нүх/зайг босоогоор нь тусгаарлах',
+			splitVertical	: 'Нүх/зайг хөндлөнгөөр нь тусгаарлах',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Мөр',
+			insertBefore	: 'Мөр өмнө нь оруулах',
+			insertAfter		: 'Мөр дараа нь оруулах',
+			deleteRow		: 'Мөр устгах'
+		},
+
+		column :
+		{
+			menu			: 'Багана',
+			insertBefore	: 'Багана өмнө нь оруулах',
+			insertAfter		: 'Багана дараа нь оруулах',
+			deleteColumn	: 'Багана устгах'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Товчны шинж чанар',
+		text		: 'Тэкст (Утга)',
+		type		: 'Төрөл',
+		typeBtn		: 'Товч',
+		typeSbm		: 'Submit',
+		typeRst		: 'Болих'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Чекбоксны шинж чанар',
+		radioTitle	: 'Радио товчны шинж чанар',
+		value		: 'Утга',
+		selected	: 'Сонгогдсон'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Форм шинж чанар',
+		menu		: 'Форм шинж чанар',
+		action		: 'Үйлдэл',
+		method		: 'Арга',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Байрлал',
+		targetNotSet	: '<Оноохгүй>',
+		targetNew	: 'Шинэ цонх (_blank)',
+		targetTop	: 'Хамгийн түрүүн байх цонх (_top)',
+		targetSelf	: 'Төстэй цонх (_self)',
+		targetParent	: 'Эцэг цонх (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Согогч талбарын шинж чанар',
+		selectInfo	: 'Мэдээлэл',
+		opAvail		: 'Идвэхтэй сонголт',
+		value		: 'Утга',
+		size		: 'Хэмжээ',
+		lines		: 'Мөр',
+		chkMulti	: 'Олон сонголт зөвшөөрөх',
+		opText		: 'Тэкст',
+		opValue		: 'Утга',
+		btnAdd		: 'Нэмэх',
+		btnModify	: 'Өөрчлөх',
+		btnUp		: 'Дээш',
+		btnDown		: 'Доош',
+		btnSetValue : 'Сонгогдсан утга оноох',
+		btnDelete	: 'Устгах'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Текст орчны шинж чанар',
+		cols		: 'Багана',
+		rows		: 'Мөр'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Текст талбарын шинж чанар',
+		name		: 'Нэр',
+		value		: 'Утга',
+		charWidth	: 'Тэмдэгтын өргөн',
+		maxChars	: 'Хамгийн их тэмдэгт',
+		type		: 'Төрөл',
+		typeText	: 'Текст',
+		typePass	: 'Нууц үг'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Нууц талбарын шинж чанар',
+		name	: 'Нэр',
+		value	: 'Утга'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Зураг',
+		titleButton	: 'Зурган товчны шинж чанар',
+		menu		: 'Зураг',
+		infoTab	: 'Зурагны мэдээлэл',
+		btnUpload	: 'Үүнийг сервэррүү илгээ',
+		url		: 'URL',
+		upload	: 'Хуулах',
+		alt		: 'Тайлбар текст',
+		width		: 'Өргөн',
+		height	: 'Өндөр',
+		lockRatio	: 'Радио түгжих',
+		resetSize	: 'хэмжээ дахин оноох',
+		border	: 'Хүрээ',
+		hSpace	: 'Хөндлөн зай',
+		vSpace	: 'Босоо зай',
+		align		: 'Эгнээ',
+		alignLeft	: 'Зүүн',
+		alignAbsBottom: 'Abs доод талд',
+		alignAbsMiddle: 'Abs Дунд талд',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Доод талд',
+		alignMiddle	: 'Дунд талд',
+		alignRight	: 'Баруун',
+		alignTextTop	: 'Текст дээр',
+		alignTop	: 'Дээд талд',
+		preview	: 'Уридчлан харах',
+		alertUrl	: 'Зурагны URL-ын төрлийн сонгоно уу',
+		linkTab	: 'Линк',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Флаш шинж чанар',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Флаш  шинж чанар',
+		chkPlay		: 'Автоматаар тоглох',
+		chkLoop		: 'Давтах',
+		chkMenu		: 'Флаш цэс идвэхжүүлэх',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Өргөгтгөх',
+		scaleAll		: 'Бүгдийг харуулах',
+		scaleNoBorder	: 'Хүрээгүй',
+		scaleFit		: 'Яг тааруулах',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Эгнээ',
+		alignLeft	: 'Зүүн',
+		alignAbsBottom: 'Abs доод талд',
+		alignAbsMiddle: 'Abs Дунд талд',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Доод талд',
+		alignMiddle	: 'Дунд талд',
+		alignRight	: 'Баруун',
+		alignTextTop	: 'Текст дээр',
+		alignTop	: 'Дээд талд',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Фонны өнгө',
+		width	: 'Өргөн',
+		height	: 'Өндөр',
+		hSpace	: 'Хөндлөн зай',
+		vSpace	: 'Босоо зай',
+		validateSrc : 'Линк URL-ээ төрөлжүүлнэ үү',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Үгийн дүрэх шалгах',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Толь бичиггүй',
+		changeTo		: 'Өөрчлөх',
+		btnIgnore		: 'Зөвшөөрөх',
+		btnIgnoreAll	: 'Бүгдийг зөвшөөрөх',
+		btnReplace		: 'Дарж бичих',
+		btnReplaceAll	: 'Бүгдийг Дарж бичих',
+		btnUndo			: 'Буцаах',
+		noSuggestions	: '- Тайлбаргүй -',
+		progress		: 'Дүрэм шалгаж байгаа үйл явц...',
+		noMispell		: 'Дүрэм шалгаад дууссан: Алдаа олдсонгүй',
+		noChanges		: 'Дүрэм шалгаад дууссан: үг өөрчлөгдөөгүй',
+		oneChange		: 'Дүрэм шалгаад дууссан: 1 үг өөрчлөгдсөн',
+		manyChanges		: 'Дүрэм шалгаад дууссан: %1 үг өөрчлөгдсөн',
+		ieSpellDownload	: 'Дүрэм шалгагч суугаагүй байна. Татаж авахыг хүсч байна уу?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Тодорхойлолт',
+		title	: 'Тодорхойлолт оруулах'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Дугаарлагдсан жагсаалт',
+	bulletedlist : 'Цэгтэй жагсаалт',
+	indent : 'Догол мөр хасах',
+	outdent : 'Догол мөр нэмэх',
+
+	justify :
+	{
+		left : 'Зүүн талд байрлуулах',
+		center : 'Төвд байрлуулах',
+		right : 'Баруун талд байрлуулах',
+		block : 'Блок хэлбэрээр байрлуулах'
+	},
+
+	blockquote : 'Хайрцаглах',
+
+	clipboard :
+	{
+		title		: 'Буулгах',
+		cutError	: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl+X) товчны хослолыг ашиглана уу.',
+		copyError	: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl+C) товчны хослолыг ашиглана уу.',
+		pasteMsg	: '(<strong>Ctrl+V</strong>) товчийг ашиглан paste хийнэ үү. Мөн <strong>OK</strong> дар.',
+		securityMsg	: 'Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Word-оос буулгах',
+		title : 'Word-оос буулгах',
+		advice : '(<strong>Ctrl+V</strong>) товчийг ашиглан paste хийнэ үү. Мөн <strong>OK</strong> дар.',
+		ignoreFontFace : 'Тодорхойлогдсон Font Face зөвшөөрнө',
+		removeStyle : 'Тодорхойлогдсон загварыг авах'
+	},
+
+	pasteText :
+	{
+		button : 'Plain Text-ээс буулгах',
+		title : 'Plain Text-ээс буулгах'
+	},
+
+	templates :
+	{
+		button : 'Загварууд',
+		title : 'Загварын агуулга',
+		insertOption: 'Одоогийн агууллагыг дарж бичих',
+		selectPromptMsg: 'Загварыг нээж editor-рүү сонгож оруулна уу<br />(Одоогийн агууллагыг устаж магадгүй):',
+		emptyListMsg : '(Загвар тодорхойлогдоогүй байна)'
+	},
+
+	showBlocks : 'Block-уудыг үзүүлэх',
+
+	stylesCombo :
+	{
+		label : 'Загвар',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Формат',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Формат',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Хэвийн',
+		tag_pre : 'Formatted',
+		tag_address : 'Хаяг',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Paragraph (DIV)'
+	},
+
+	font :
+	{
+		label : 'Фонт',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Фонт',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Хэмжээ',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Хэмжээ',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Фонтны өнгө',
+		bgColorTitle : 'Фонны өнгө',
+		auto : 'Автоматаар',
+		more : 'Нэмэлт өнгөнүүд...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/pl.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/pl.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/pl.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Polish language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['pl'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Wzbogacony edytor treści, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Źródło dokumentu',
+	newPage			: 'Nowa strona',
+	save			: 'Zapisz',
+	preview			: 'Podgląd',
+	cut				: 'Wytnij',
+	copy			: 'Kopiuj',
+	paste			: 'Wklej',
+	print			: 'Drukuj',
+	underline		: 'Podkreślenie',
+	bold			: 'Pogrubienie',
+	italic			: 'Kursywa',
+	selectAll		: 'Zaznacz wszystko',
+	removeFormat	: 'Usuń formatowanie',
+	strike			: 'Przekreślenie',
+	subscript		: 'Indeks dolny',
+	superscript		: 'Indeks górny',
+	horizontalrule	: 'Wstaw poziomą linię',
+	pagebreak		: 'Wstaw odstęp',
+	unlink			: 'Usuń hiperłącze',
+	undo			: 'Cofnij',
+	redo			: 'Ponów',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Przeglądaj',
+		url				: 'Adres URL',
+		protocol		: 'Protokół',
+		upload			: 'Wyślij',
+		uploadSubmit	: 'Wyślij',
+		image			: 'Obrazek',
+		flash			: 'Flash',
+		form			: 'Formularz',
+		checkbox		: 'Pole wyboru (checkbox)',
+		radio		: 'Pole wyboru (radio)',
+		textField		: 'Pole tekstowe',
+		textarea		: 'Obszar tekstowy',
+		hiddenField		: 'Pole ukryte',
+		button			: 'Przycisk',
+		select	: 'Lista wyboru',
+		imageButton		: 'Przycisk-obrazek',
+		notSet			: '<nie ustawione>',
+		id				: 'Id',
+		name			: 'Nazwa',
+		langDir			: 'Kierunek tekstu',
+		langDirLtr		: 'Od lewej do prawej (LTR)',
+		langDirRtl		: 'Od prawej do lewej (RTL)',
+		langCode		: 'Kod języka',
+		longDescr		: 'Długi opis hiperłącza',
+		cssClass		: 'Nazwa klasy CSS',
+		advisoryTitle	: 'Opis obiektu docelowego',
+		cssStyle		: 'Styl',
+		ok				: 'OK',
+		cancel			: 'Anuluj',
+		generalTab		: 'Ogólne',
+		advancedTab		: 'Zaawansowane',
+		validateNumberFailed	: 'Ta wartość nie jest liczbą.',
+		confirmNewPage	: 'Wszystkie niezapisane zmiany zostaną utracone. Czy na pewno wczytać nową stronę?',
+		confirmCancel	: 'Pewne opcje zostały zmienione. Czy na pewno zamknąć okno dialogowe?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, niedostępne</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Wstaw znak specjalny',
+		title		: 'Wybierz znak specjalny'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Wstaw/edytuj hiperłącze',
+		menu		: 'Edytuj hiperłącze',
+		title		: 'Hiperłącze',
+		info		: 'Informacje ',
+		target		: 'Cel',
+		upload		: 'Wyślij',
+		advanced	: 'Zaawansowane',
+		type		: 'Typ hiperłącza',
+		toAnchor	: 'Odnośnik wewnątrz strony',
+		toEmail		: 'Adres e-mail',
+		target		: 'Cel',
+		targetNotSet	: '<nie ustawione>',
+		targetFrame	: '<ramka>',
+		targetPopup	: '<wyskakujące okno>',
+		targetNew	: 'Nowe okno (_blank)',
+		targetTop	: 'Okno najwyższe w hierarchii (_top)',
+		targetSelf	: 'To samo okno (_self)',
+		targetParent	: 'Okno nadrzędne (_parent)',
+		targetFrameName	: 'Nazwa Ramki Docelowej',
+		targetPopupName	: 'Nazwa wyskakującego okna',
+		popupFeatures	: 'Właściwości wyskakującego okna',
+		popupResizable	: 'Skalowalny',
+		popupStatusBar	: 'Pasek statusu',
+		popupLocationBar	: 'Pasek adresu',
+		popupToolbar	: 'Pasek narzędzi',
+		popupMenuBar	: 'Pasek menu',
+		popupFullScreen	: 'Pełny ekran (IE)',
+		popupScrollBars	: 'Paski przewijania',
+		popupDependent	: 'Okno zależne (Netscape)',
+		popupWidth		: 'Szerokość',
+		popupLeft		: 'Pozycja w poziomie',
+		popupHeight		: 'Wysokość',
+		popupTop		: 'Pozycja w pionie',
+		id				: 'Id',
+		langDir			: 'Kierunek tekstu',
+		langDirNotSet	: '<nie ustawione>',
+		langDirLTR		: 'Od lewej do prawej (LTR)',
+		langDirRTL		: 'Od prawej do lewej (RTL)',
+		acccessKey		: 'Klawisz dostępu',
+		name			: 'Nazwa',
+		langCode		: 'Kierunek tekstu',
+		tabIndex		: 'Indeks tabeli',
+		advisoryTitle	: 'Opis obiektu docelowego',
+		advisoryContentType	: 'Typ MIME obiektu docelowego',
+		cssClasses		: 'Nazwa klasy CSS',
+		charset			: 'Kodowanie znaków obiektu docelowego',
+		styles			: 'Styl',
+		selectAnchor	: 'Wybierz etykietę',
+		anchorName		: 'Wg etykiety',
+		anchorId		: 'Wg identyfikatora elementu',
+		emailAddress	: 'Adres e-mail',
+		emailSubject	: 'Temat',
+		emailBody		: 'Treść',
+		noAnchors		: '(W dokumencie nie zdefiniowano żadnych etykiet)',
+		noUrl			: 'Podaj adres URL',
+		noEmail			: 'Podaj adres e-mail'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Wstaw/edytuj kotwicę',
+		menu		: 'Właściwości kotwicy',
+		title		: 'Właściwości kotwicy',
+		name		: 'Nazwa kotwicy',
+		errorName	: 'Wpisz nazwę kotwicy'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Znajdź i zamień',
+		find				: 'Znajdź',
+		replace				: 'Zamień',
+		findWhat			: 'Znajdź:',
+		replaceWith			: 'Zastąp przez:',
+		notFoundMsg			: 'Nie znaleziono szukanego hasła.',
+		matchCase			: 'Uwzględnij wielkość liter',
+		matchWord			: 'Całe słowa',
+		matchCyclic			: 'Cykliczne dopasowanie',
+		replaceAll			: 'Zastąp wszystko',
+		replaceSuccessMsg	: '%1 wystąpień zastąpionych.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabela',
+		title		: 'Właściwości tabeli',
+		menu		: 'Właściwości tabeli',
+		deleteTable	: 'Usuń tabelę',
+		rows		: 'Liczba wierszy',
+		columns		: 'Liczba kolumn',
+		border		: 'Grubość ramki',
+		align		: 'Wyrównanie',
+		alignNotSet	: '<brak ustawień>',
+		alignLeft	: 'Do lewej',
+		alignCenter	: 'Do środka',
+		alignRight	: 'Do prawej',
+		width		: 'Szerokość',
+		widthPx		: 'piksele',
+		widthPc		: '%',
+		height		: 'Wysokość',
+		cellSpace	: 'Odstęp pomiędzy komórkami',
+		cellPad		: 'Margines wewnętrzny komórek',
+		caption		: 'Tytuł',
+		summary		: 'Podsumowanie',
+		headers		: 'Nagłowki',
+		headersNone		: 'Brak',
+		headersColumn	: 'Pierwsza kolumna',
+		headersRow		: 'Pierwszy wiersz',
+		headersBoth		: 'Oba',
+		invalidRows		: 'Liczba wierszy musi być liczbą większą niż 0.',
+		invalidCols		: 'Liczba kolumn musi być liczbą większą niż 0.',
+		invalidBorder	: 'Liczba obramowań musi być liczbą.',
+		invalidWidth	: 'Szerokość tabeli musi być liczbą.',
+		invalidHeight	: 'Wysokość tabeli musi być liczbą.',
+		invalidCellSpacing	: 'Odstęp komórek musi być liczbą.',
+		invalidCellPadding	: 'Dopełnienie komórek musi być liczbą.',
+
+		cell :
+		{
+			menu			: 'Komórka',
+			insertBefore	: 'Wstaw komórkę z lewej',
+			insertAfter		: 'Wstaw komórkę z prawej',
+			deleteCell		: 'Usuń komórki',
+			merge			: 'Połącz komórki',
+			mergeRight		: 'Połącz z komórką z prawej',
+			mergeDown		: 'Połącz z komórką poniżej',
+			splitHorizontal	: 'Podziel komórkę poziomo',
+			splitVertical	: 'Podziel komórkę pionowo',
+			title			: 'Właściwości komórki',
+			cellType		: 'Typ komórki',
+			rowSpan			: 'Scalenie wierszy',
+			colSpan			: 'Scalenie komórek',
+			wordWrap		: 'Zawijanie słów',
+			hAlign			: 'Wyrównanie poziome',
+			vAlign			: 'Wyrównanie pionowe',
+			alignTop		: 'Góra',
+			alignMiddle		: 'Środek',
+			alignBottom		: 'Dół',
+			alignBaseline	: 'Linia bazowa',
+			bgColor			: 'Kolor tła',
+			borderColor		: 'Kolor obramowania',
+			data			: 'Dane',
+			header			: 'Nagłowek',
+			yes				: 'Tak',
+			no				: 'Nie',
+			invalidWidth	: 'Szerokość komórki musi być liczbą.',
+			invalidHeight	: 'Wysokość komórki musi być liczbą.',
+			invalidRowSpan	: 'Scalenie wierszy musi być liczbą całkowitą.',
+			invalidColSpan	: 'Scalenie komórek musi być liczbą całkowitą.',
+			chooseColor : 'Wybierz'
+		},
+
+		row :
+		{
+			menu			: 'Wiersz',
+			insertBefore	: 'Wstaw wiersz powyżej',
+			insertAfter		: 'Wstaw wiersz poniżej',
+			deleteRow		: 'Usuń wiersze'
+		},
+
+		column :
+		{
+			menu			: 'Kolumna',
+			insertBefore	: 'Wstaw kolumnę z lewej',
+			insertAfter		: 'Wstaw kolumnę z prawej',
+			deleteColumn	: 'Usuń kolumny'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Właściwości przycisku',
+		text		: 'Tekst (Wartość)',
+		type		: 'Typ',
+		typeBtn		: 'Przycisk',
+		typeSbm		: 'Wyślij',
+		typeRst		: 'Wyzeruj'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Właściwości pola wyboru (checkbox)',
+		radioTitle	: 'Właściwości pola wyboru (radio)',
+		value		: 'Wartość',
+		selected	: 'Zaznaczone'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Właściwości formularza',
+		menu		: 'Właściwości formularza',
+		action		: 'Akcja',
+		method		: 'Metoda',
+		encoding	: 'Kodowanie',
+		target		: 'Cel',
+		targetNotSet	: '<nie ustawione>',
+		targetNew	: 'Nowe okno (_blank)',
+		targetTop	: 'Okno najwyższe w hierarchii (_top)',
+		targetSelf	: 'To samo okno (_self)',
+		targetParent	: 'Okno nadrzędne (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Właściwości listy wyboru',
+		selectInfo	: 'Informacje',
+		opAvail		: 'Dostępne opcje',
+		value		: 'Wartość',
+		size		: 'Rozmiar',
+		lines		: 'linii',
+		chkMulti	: 'Wielokrotny wybór',
+		opText		: 'Tekst',
+		opValue		: 'Wartość',
+		btnAdd		: 'Dodaj',
+		btnModify	: 'Zmień',
+		btnUp		: 'Do góry',
+		btnDown		: 'Do dołu',
+		btnSetValue : 'Ustaw wartość zaznaczoną',
+		btnDelete	: 'Usuń'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Właściwości obszaru tekstowego',
+		cols		: 'Kolumnu',
+		rows		: 'Wiersze'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Właściwości pola tekstowego',
+		name		: 'Nazwa',
+		value		: 'Wartość',
+		charWidth	: 'Szerokość w znakach',
+		maxChars	: 'Max. szerokość',
+		type		: 'Typ',
+		typeText	: 'Tekst',
+		typePass	: 'Hasło'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Właściwości pola ukrytego',
+		name	: 'Nazwa',
+		value	: 'Wartość'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Właściwości obrazka',
+		titleButton	: 'Właściwości przycisku obrazka',
+		menu		: 'Właściwości obrazka',
+		infoTab	: 'Informacje o obrazku',
+		btnUpload	: 'Wyślij',
+		url		: 'Adres URL',
+		upload	: 'Wyślij',
+		alt		: 'Tekst zastępczy',
+		width		: 'Szerokość',
+		height	: 'Wysokość',
+		lockRatio	: 'Zablokuj proporcje',
+		resetSize	: 'Przywróć rozmiar',
+		border	: 'Ramka',
+		hSpace	: 'Odstęp poziomy',
+		vSpace	: 'Odstęp pionowy',
+		align		: 'Wyrównaj',
+		alignLeft	: 'Do lewej',
+		alignAbsBottom: 'Do dołu',
+		alignAbsMiddle: 'Do środka w pionie',
+		alignBaseline	: 'Do linii bazowej',
+		alignBottom	: 'Do dołu',
+		alignMiddle	: 'Do środka',
+		alignRight	: 'Do prawej',
+		alignTextTop	: 'Do góry tekstu',
+		alignTop	: 'Do góry',
+		preview	: 'Podgląd',
+		alertUrl	: 'Podaj adres obrazka.',
+		linkTab	: 'Hiperłącze',
+		button2Img	: 'Czy chcesz przekonwertować zaznaczony przycisk graficzny do zwykłego obrazka?',
+		img2Button	: 'Czy chcesz przekonwertować zaznaczony obrazek do przycisku graficznego?',
+		urlMissing : 'Podaj adres URL obrazka.'
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Właściwości elementu Flash',
+		propertiesTab	: 'Właściwości',
+		title		: 'Właściwości elementu Flash',
+		chkPlay		: 'Autoodtwarzanie',
+		chkLoop		: 'Pętla',
+		chkMenu		: 'Włącz menu',
+		chkFull		: 'Dopuść pełny ekran',
+ 		scale		: 'Skaluj',
+		scaleAll		: 'Pokaż wszystko',
+		scaleNoBorder	: 'Bez Ramki',
+		scaleFit		: 'Dokładne dopasowanie',
+		access			: 'Dostęp skryptów',
+		accessAlways	: 'Zawsze',
+		accessSameDomain	: 'Ta sama domena',
+		accessNever	: 'Nigdy',
+		align		: 'Wyrównaj',
+		alignLeft	: 'Do lewej',
+		alignAbsBottom: 'Do dołu',
+		alignAbsMiddle: 'Do środka w pionie',
+		alignBaseline	: 'Do linii bazowej',
+		alignBottom	: 'Do dołu',
+		alignMiddle	: 'Do środka',
+		alignRight	: 'Do prawej',
+		alignTextTop	: 'Do góry tekstu',
+		alignTop	: 'Do góry',
+		quality		: 'Jakość',
+		qualityBest		 : 'Najlepsza',
+		qualityHigh		 : 'Wysoka',
+		qualityAutoHigh	 : 'Auto wysoka',
+		qualityMedium	 : 'Średnia',
+		qualityAutoLow	 : 'Auto niska',
+		qualityLow		 : 'Niska',
+		windowModeWindow	 : 'Okno',
+		windowModeOpaque	 : 'Nieprzeźroczyste',
+		windowModeTransparent	 : 'Przeźroczyste',
+		windowMode	: 'Tryb okna',
+		flashvars	: 'Zmienne dla Flasha',
+		bgcolor	: 'Kolor tła',
+		width	: 'Szerokość',
+		height	: 'Wysokość',
+		hSpace	: 'Odstęp poziomy',
+		vSpace	: 'Odstęp pionowy',
+		validateSrc : 'Podaj adres URL',
+		validateWidth : 'Szerokość musi być liczbą.',
+		validateHeight : 'Wysokość musi być liczbą.',
+		validateHSpace : 'Odstęp poziomy musi być liczbą.',
+		validateVSpace : 'Odstęp pionowy musi być liczbą.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Sprawdź pisownię',
+		title			: 'Sprawdź pisownię',
+		notAvailable	: 'Przepraszamy, ale usługa jest obecnie niedostępna.',
+		errorLoading	: 'Błąd wczytywania hosta aplikacji usługi: %s.',
+		notInDic		: 'Słowa nie ma w słowniku',
+		changeTo		: 'Zmień na',
+		btnIgnore		: 'Ignoruj',
+		btnIgnoreAll	: 'Ignoruj wszystkie',
+		btnReplace		: 'Zmień',
+		btnReplaceAll	: 'Zmień wszystkie',
+		btnUndo			: 'Cofnij',
+		noSuggestions	: '- Brak sugestii -',
+		progress		: 'Trwa sprawdzanie...',
+		noMispell		: 'Sprawdzanie zakończone: nie znaleziono błędów',
+		noChanges		: 'Sprawdzanie zakończone: nie zmieniono żadnego słowa',
+		oneChange		: 'Sprawdzanie zakończone: zmieniono jedno słowo',
+		manyChanges		: 'Sprawdzanie zakończone: zmieniono %l słów',
+		ieSpellDownload	: 'Słownik nie jest zainstalowany. Chcesz go ściągnąć?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Emotikona',
+		title	: 'Wstaw emotikonę'
+	},
+
+	elementsPath :
+	{
+		eleTitle : 'element %1'
+	},
+
+	numberedlist : 'Lista numerowana',
+	bulletedlist : 'Lista wypunktowana',
+	indent : 'Zwiększ wcięcie',
+	outdent : 'Zmniejsz wcięcie',
+
+	justify :
+	{
+		left : 'Wyrównaj do lewej',
+		center : 'Wyrównaj do środka',
+		right : 'Wyrównaj do prawej',
+		block : 'Wyrównaj do lewej i prawej'
+	},
+
+	blockquote : 'Cytat',
+
+	clipboard :
+	{
+		title		: 'Wklej',
+		cutError	: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl+X.',
+		copyError	: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl+C.',
+		pasteMsg	: 'Proszę wkleić w poniższym polu używając klawiaturowego skrótu (<STRONG>Ctrl+V</STRONG>) i kliknąć <STRONG>OK</STRONG>.',
+		securityMsg	: 'Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę dane wkleić ponownie w tym okienku.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Wklej z Worda',
+		title : 'Wklej z Worda',
+		advice : 'Proszę wkleić w poniższym polu używając klawiaturowego skrótu (<STRONG>Ctrl+V</STRONG>) i kliknąć <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignoruj definicje \'Font Face\'',
+		removeStyle : 'Usuń definicje Stylów'
+	},
+
+	pasteText :
+	{
+		button : 'Wklej jako czysty tekst',
+		title : 'Wklej jako czysty tekst'
+	},
+
+	templates :
+	{
+		button : 'Szablony',
+		title : 'Szablony zawartości',
+		insertOption: 'Zastąp aktualną zawartość',
+		selectPromptMsg: 'Wybierz szablon do otwarcia w edytorze<br>(obecna zawartość okna edytora zostanie utracona):',
+		emptyListMsg : '(Brak zdefiniowanych szablonów)'
+	},
+
+	showBlocks : 'Pokaż bloki',
+
+	stylesCombo :
+	{
+		label : 'Styl',
+		voiceLabel : 'Styl',
+		panelVoiceLabel : 'Wybierz styl',
+		panelTitle1 : 'Style blokowe',
+		panelTitle2 : 'Style liniowe',
+		panelTitle3 : 'Style obiektowe'
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format',
+		panelTitle : 'Format',
+		panelVoiceLabel : 'Wybierz paragraf do sformatowania',
+
+		tag_p : 'Normalny',
+		tag_pre : 'Tekst sformatowany',
+		tag_address : 'Adres',
+		tag_h1 : 'Nagłówek 1',
+		tag_h2 : 'Nagłówek 2',
+		tag_h3 : 'Nagłówek 3',
+		tag_h4 : 'Nagłówek 4',
+		tag_h5 : 'Nagłówek 5',
+		tag_h6 : 'Nagłówek 6',
+		tag_div : 'Normalny (DIV)'
+	},
+
+	font :
+	{
+		label : 'Czcionka',
+		voiceLabel : 'Czcionka',
+		panelTitle : 'Czcionka',
+		panelVoiceLabel : 'Wybierz czcionkę'
+	},
+
+	fontSize :
+	{
+		label : 'Rozmiar',
+		voiceLabel : 'Rozmiar czcionki',
+		panelTitle : 'Rozmiar',
+		panelVoiceLabel : 'Wybierz rozmiar czcionki'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Kolor tekstu',
+		bgColorTitle : 'Kolor tła',
+		auto : 'Automatycznie',
+		more : 'Więcej kolorów...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Sprawdź pisownię podczas pisania (SCAYT)',
+		enable : 'Włącz SCAYT',
+		disable : 'Wyłącz SCAYT',
+		about : 'Na temat SCAYT',
+		toggle : 'Przełącz SCAYT',
+		options : 'Opcje',
+		langs : 'Języki',
+		moreSuggestions : 'Więcej sugestii',
+		ignore : 'Ignoruj',
+		ignoreAll : 'Ignoruj wszystkie',
+		addWord : 'Dodaj słowo',
+		emptyDic : 'Nazwa słownika nie może być pusta.',
+		optionsTab : 'Opcje',
+		languagesTab : 'Języki',
+		dictionariesTab : 'Słowniki',
+		aboutTab : 'Na temat SCAYT'
+	},
+
+	about :
+	{
+		title : 'Na temat CKEditor',
+		dlgTitle : 'Na temat CKEditor',
+		moreInfo : 'Informacje na temat licencji można znaleźć na naszej stronie:',
+		copy : 'Copyright &copy; $1. Wszelkie prawa zastrzeżone.'
+	},
+
+	maximize : 'Maksymalizuj',
+	minimize : 'Minimalizuj',
+
+	fakeobjects :
+	{
+		anchor : 'Kotwica',
+		flash : 'Animacja Flash',
+		div : 'Separator stron',
+		unknown : 'Nieznany obiekt'
+	},
+
+	resize : 'Przeciągnij, aby zmienić rozmiar',
+
+	colordialog :
+	{
+		title : 'Wybierz kolor',
+		highlight : 'Zaznacz',
+		selected : 'Wybrany',
+		clear : 'Wyczyść'
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/th.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/th.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/th.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Thai language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['th'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'ดูรหัส HTML',
+	newPage			: 'สร้างหน้าเอกสารใหม่',
+	save			: 'บันทึก',
+	preview			: 'ดูหน้าเอกสารตัวอย่าง',
+	cut				: 'ตัด',
+	copy			: 'สำเนา',
+	paste			: 'วาง',
+	print			: 'สั่งพิมพ์',
+	underline		: 'ตัวขีดเส้นใต้',
+	bold			: 'ตัวหนา',
+	italic			: 'ตัวเอียง',
+	selectAll		: 'เลือกทั้งหมด',
+	removeFormat	: 'ล้างรูปแบบ',
+	strike			: 'ตัวขีดเส้นทับ',
+	subscript		: 'ตัวห้อย',
+	superscript		: 'ตัวยก',
+	horizontalrule	: 'แทรกเส้นคั่นบรรทัด',
+	pagebreak		: 'แทรกตัวแบ่งหน้า Page Break',
+	unlink			: 'ลบ ลิงค์',
+	undo			: 'ยกเลิกคำสั่ง',
+	redo			: 'ทำซ้ำคำสั่ง',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'เปิดหน้าต่างจัดการไฟล์อัพโหลด',
+		url				: 'ที่อยู่อ้างอิง URL',
+		protocol		: 'โปรโตคอล',
+		upload			: 'อัพโหลดไฟล์',
+		uploadSubmit	: 'อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)',
+		image			: 'รูปภาพ',
+		flash			: 'ไฟล์ Flash',
+		form			: 'แบบฟอร์ม',
+		checkbox		: 'เช็คบ๊อก',
+		radio		: 'เรดิโอบัตตอน',
+		textField		: 'เท็กซ์ฟิลด์',
+		textarea		: 'เท็กซ์แอเรีย',
+		hiddenField		: 'ฮิดเดนฟิลด์',
+		button			: 'ปุ่ม',
+		select	: 'แถบตัวเลือก',
+		imageButton		: 'ปุ่มแบบรูปภาพ',
+		notSet			: '<ไม่ระบุ>',
+		id				: 'ไอดี',
+		name			: 'ชื่อ',
+		langDir			: 'การเขียน-อ่านภาษา',
+		langDirLtr		: 'จากซ้ายไปขวา (LTR)',
+		langDirRtl		: 'จากขวามาซ้าย (RTL)',
+		langCode		: 'รหัสภาษา',
+		longDescr		: 'คำอธิบายประกอบ URL',
+		cssClass		: 'คลาสของไฟล์กำหนดลักษณะการแสดงผล',
+		advisoryTitle	: 'คำเกริ่นนำ',
+		cssStyle		: 'ลักษณะการแสดงผล',
+		ok				: 'ตกลง',
+		cancel			: 'ยกเลิก',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'ขั้นสูง',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'แทรกตัวอักษรพิเศษ',
+		title		: 'แทรกตัวอักษรพิเศษ'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'แทรก/แก้ไข ลิงค์',
+		menu		: 'แก้ไข ลิงค์',
+		title		: 'ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ',
+		info		: 'รายละเอียด',
+		target		: 'การเปิดหน้าลิงค์',
+		upload		: 'อัพโหลดไฟล์',
+		advanced	: 'ขั้นสูง',
+		type		: 'ประเภทของลิงค์',
+		toAnchor	: 'จุดเชื่อมโยง (Anchor)',
+		toEmail		: 'ส่งอีเมล์ (E-Mail)',
+		target		: 'การเปิดหน้าลิงค์',
+		targetNotSet	: '<ไม่ระบุ>',
+		targetFrame	: '<เปิดในเฟรม>',
+		targetPopup	: '<เปิดหน้าจอเล็ก (Pop-up)>',
+		targetNew	: 'เปิดหน้าจอใหม่ (_blank)',
+		targetTop	: 'เปิดในหน้าบนสุด (_top)',
+		targetSelf	: 'เปิดในหน้าปัจจุบัน (_self)',
+		targetParent	: 'เปิดในหน้าหลัก (_parent)',
+		targetFrameName	: 'ชื่อทาร์เก็ตเฟรม',
+		targetPopupName	: 'ระบุชื่อหน้าจอเล็ก (Pop-up)',
+		popupFeatures	: 'คุณสมบัติของหน้าจอเล็ก (Pop-up)',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'แสดงแถบสถานะ',
+		popupLocationBar	: 'แสดงที่อยู่ของไฟล์',
+		popupToolbar	: 'แสดงแถบเครื่องมือ',
+		popupMenuBar	: 'แสดงแถบเมนู',
+		popupFullScreen	: 'แสดงเต็มหน้าจอ (IE5.5++ เท่านั้น)',
+		popupScrollBars	: 'แสดงแถบเลื่อน',
+		popupDependent	: 'แสดงเต็มหน้าจอ (Netscape)',
+		popupWidth		: 'กว้าง',
+		popupLeft		: 'พิกัดซ้าย (Left Position)',
+		popupHeight		: 'สูง',
+		popupTop		: 'พิกัดบน (Top Position)',
+		id				: 'Id', // MISSING
+		langDir			: 'การเขียน-อ่านภาษา',
+		langDirNotSet	: '<ไม่ระบุ>',
+		langDirLTR		: 'จากซ้ายไปขวา (LTR)',
+		langDirRTL		: 'จากขวามาซ้าย (RTL)',
+		acccessKey		: 'แอคเซส คีย์',
+		name			: 'ชื่อ',
+		langCode		: 'การเขียน-อ่านภาษา',
+		tabIndex		: 'ลำดับของ แท็บ',
+		advisoryTitle	: 'คำเกริ่นนำ',
+		advisoryContentType	: 'ชนิดของคำเกริ่นนำ',
+		cssClasses		: 'คลาสของไฟล์กำหนดลักษณะการแสดงผล',
+		charset			: 'ลิงค์เชื่อมโยงไปยังชุดตัวอักษร',
+		styles			: 'ลักษณะการแสดงผล',
+		selectAnchor	: 'ระบุข้อมูลของจุดเชื่อมโยง (Anchor)',
+		anchorName		: 'ชื่อ',
+		anchorId		: 'ไอดี',
+		emailAddress	: 'อีเมล์ (E-Mail)',
+		emailSubject	: 'หัวเรื่อง',
+		emailBody		: 'ข้อความ',
+		noAnchors		: '(ยังไม่มีจุดเชื่อมโยงภายในหน้าเอกสารนี้)',
+		noUrl			: 'กรุณาระบุที่อยู่อ้างอิงออนไลน์ (URL)',
+		noEmail			: 'กรุณาระบุอีเมล์ (E-mail)'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'แทรก/แก้ไข Anchor',
+		menu		: 'รายละเอียด Anchor',
+		title		: 'รายละเอียด Anchor',
+		name		: 'ชื่อ Anchor',
+		errorName	: 'กรุณาระบุชื่อของ Anchor'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'ค้นหา',
+		replace				: 'ค้นหาและแทนที่',
+		findWhat			: 'ค้นหาคำว่า:',
+		replaceWith			: 'แทนที่ด้วย:',
+		notFoundMsg			: 'ไม่พบคำที่ค้นหา.',
+		matchCase			: 'ตัวโหญ่-เล็ก ต้องตรงกัน',
+		matchWord			: 'ต้องตรงกันทุกคำ',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'แทนที่ทั้งหมดที่พบ',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'ตาราง',
+		title		: 'คุณสมบัติของ ตาราง',
+		menu		: 'คุณสมบัติของ ตาราง',
+		deleteTable	: 'ลบตาราง',
+		rows		: 'แถว',
+		columns		: 'สดมน์',
+		border		: 'ขนาดเส้นขอบ',
+		align		: 'การจัดตำแหน่ง',
+		alignNotSet	: '<ไม่ระบุ>',
+		alignLeft	: 'ชิดซ้าย',
+		alignCenter	: 'กึ่งกลาง',
+		alignRight	: 'ชิดขวา',
+		width		: 'กว้าง',
+		widthPx		: 'จุดสี',
+		widthPc		: 'เปอร์เซ็น',
+		height		: 'สูง',
+		cellSpace	: 'ระยะแนวนอนน',
+		cellPad		: 'ระยะแนวตั้ง',
+		caption		: 'หัวเรื่องของตาราง',
+		summary		: 'สรุปความ',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'ช่องตาราง',
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'ลบช่อง',
+			merge			: 'ผสานช่อง',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'แถว',
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'ลบแถว'
+		},
+
+		column :
+		{
+			menu			: 'คอลัมน์',
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'ลบสดมน์'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'รายละเอียดของ ปุ่ม',
+		text		: 'ข้อความ (ค่าตัวแปร)',
+		type		: 'ข้อความ',
+		typeBtn		: 'Button',
+		typeSbm		: 'Submit',
+		typeRst		: 'Reset'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'คุณสมบัติของ เช็คบ๊อก',
+		radioTitle	: 'คุณสมบัติของ เรดิโอบัตตอน',
+		value		: 'ค่าตัวแปร',
+		selected	: 'เลือกเป็นค่าเริ่มต้น'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'คุณสมบัติของ แบบฟอร์ม',
+		menu		: 'คุณสมบัติของ แบบฟอร์ม',
+		action		: 'แอคชั่น',
+		method		: 'เมธอด',
+		encoding	: 'Encoding', // MISSING
+		target		: 'การเปิดหน้าลิงค์',
+		targetNotSet	: '<ไม่ระบุ>',
+		targetNew	: 'เปิดหน้าจอใหม่ (_blank)',
+		targetTop	: 'เปิดในหน้าบนสุด (_top)',
+		targetSelf	: 'เปิดในหน้าปัจจุบัน (_self)',
+		targetParent	: 'เปิดในหน้าหลัก (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'คุณสมบัติของ แถบตัวเลือก',
+		selectInfo	: 'อินโฟ',
+		opAvail		: 'รายการตัวเลือก',
+		value		: 'ค่าตัวแปร',
+		size		: 'ขนาด',
+		lines		: 'บรรทัด',
+		chkMulti	: 'เลือกหลายค่าได้',
+		opText		: 'ข้อความ',
+		opValue		: 'ค่าตัวแปร',
+		btnAdd		: 'เพิ่ม',
+		btnModify	: 'แก้ไข',
+		btnUp		: 'บน',
+		btnDown		: 'ล่าง',
+		btnSetValue : 'เลือกเป็นค่าเริ่มต้น',
+		btnDelete	: 'ลบ'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'คุณสมบัติของ เท็กแอเรีย',
+		cols		: 'สดมภ์',
+		rows		: 'แถว'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'คุณสมบัติของ เท็กซ์ฟิลด์',
+		name		: 'ชื่อ',
+		value		: 'ค่าตัวแปร',
+		charWidth	: 'ความกว้าง',
+		maxChars	: 'จำนวนตัวอักษรสูงสุด',
+		type		: 'ชนิด',
+		typeText	: 'ข้อความ',
+		typePass	: 'รหัสผ่าน'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'คุณสมบัติของ ฮิดเดนฟิลด์',
+		name	: 'ชื่อ',
+		value	: 'ค่าตัวแปร'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'คุณสมบัติของ รูปภาพ',
+		titleButton	: 'คุณสมบัติของ ปุ่มแบบรูปภาพ',
+		menu		: 'คุณสมบัติของ รูปภาพ',
+		infoTab	: 'ข้อมูลของรูปภาพ',
+		btnUpload	: 'อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)',
+		url		: 'ที่อยู่อ้างอิง URL',
+		upload	: 'อัพโหลดไฟล์',
+		alt		: 'คำประกอบรูปภาพ',
+		width		: 'ความกว้าง',
+		height	: 'ความสูง',
+		lockRatio	: 'กำหนดอัตราส่วน กว้าง-สูง แบบคงที่',
+		resetSize	: 'กำหนดรูปเท่าขนาดจริง',
+		border	: 'ขนาดขอบรูป',
+		hSpace	: 'ระยะแนวนอน',
+		vSpace	: 'ระยะแนวตั้ง',
+		align		: 'การจัดวาง',
+		alignLeft	: 'ชิดซ้าย',
+		alignAbsBottom: 'ชิดด้านล่างสุด',
+		alignAbsMiddle: 'กึ่งกลาง',
+		alignBaseline	: 'ชิดบรรทัด',
+		alignBottom	: 'ชิดด้านล่าง',
+		alignMiddle	: 'กึ่งกลางแนวตั้ง',
+		alignRight	: 'ชิดขวา',
+		alignTextTop	: 'ใต้ตัวอักษร',
+		alignTop	: 'บนสุด',
+		preview	: 'หน้าเอกสารตัวอย่าง',
+		alertUrl	: 'กรุณาระบุที่อยู่อ้างอิงออนไลน์ของไฟล์รูปภาพ (URL)',
+		linkTab	: 'ลิ้งค์',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'คุณสมบัติของไฟล์ Flash',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'คุณสมบัติของไฟล์ Flash',
+		chkPlay		: 'เล่นอัตโนมัติ Auto Play',
+		chkLoop		: 'เล่นวนรอบ Loop',
+		chkMenu		: 'ให้ใช้งานเมนูของ Flash',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'อัตราส่วน Scale',
+		scaleAll		: 'แสดงให้เห็นทั้งหมด Show all',
+		scaleNoBorder	: 'ไม่แสดงเส้นขอบ No Border',
+		scaleFit		: 'แสดงให้พอดีกับพื้นที่ Exact Fit',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'การจัดวาง',
+		alignLeft	: 'ชิดซ้าย',
+		alignAbsBottom: 'ชิดด้านล่างสุด',
+		alignAbsMiddle: 'กึ่งกลาง',
+		alignBaseline	: 'ชิดบรรทัด',
+		alignBottom	: 'ชิดด้านล่าง',
+		alignMiddle	: 'กึ่งกลางแนวตั้ง',
+		alignRight	: 'ชิดขวา',
+		alignTextTop	: 'ใต้ตัวอักษร',
+		alignTop	: 'บนสุด',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'สีพื้นหลัง',
+		width	: 'ความกว้าง',
+		height	: 'ความสูง',
+		hSpace	: 'ระยะแนวนอน',
+		vSpace	: 'ระยะแนวตั้ง',
+		validateSrc : 'กรุณาระบุที่อยู่อ้างอิงออนไลน์ (URL)',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'ตรวจการสะกดคำ',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'ไม่พบในดิกชันนารี',
+		changeTo		: 'แก้ไขเป็น',
+		btnIgnore		: 'ยกเว้น',
+		btnIgnoreAll	: 'ยกเว้นทั้งหมด',
+		btnReplace		: 'แทนที่',
+		btnReplaceAll	: 'แทนที่ทั้งหมด',
+		btnUndo			: 'ยกเลิก',
+		noSuggestions	: '- ไม่มีคำแนะนำใดๆ -',
+		progress		: 'กำลังตรวจสอบคำสะกด...',
+		noMispell		: 'ตรวจสอบคำสะกดเสร็จสิ้น: ไม่พบคำสะกดผิด',
+		noChanges		: 'ตรวจสอบคำสะกดเสร็จสิ้น: ไม่มีการแก้คำใดๆ',
+		oneChange		: 'ตรวจสอบคำสะกดเสร็จสิ้น: แก้ไข1คำ',
+		manyChanges		: 'ตรวจสอบคำสะกดเสร็จสิ้น:: แก้ไข %1 คำ',
+		ieSpellDownload	: 'ไม่ได้ติดตั้งระบบตรวจสอบคำสะกด. ต้องการติดตั้งไหมครับ?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'รูปสื่ออารมณ์',
+		title	: 'แทรกสัญลักษณ์สื่ออารมณ์'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'ลำดับรายการแบบตัวเลข',
+	bulletedlist : 'ลำดับรายการแบบสัญลักษณ์',
+	indent : 'เพิ่มระยะย่อหน้า',
+	outdent : 'ลดระยะย่อหน้า',
+
+	justify :
+	{
+		left : 'จัดชิดซ้าย',
+		center : 'จัดกึ่งกลาง',
+		right : 'จัดชิดขวา',
+		block : 'จัดพอดีหน้ากระดาษ'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'วาง',
+		cutError	: 'ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl และตัว X พร้อมกัน).',
+		copyError	: 'ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl และตัว C พร้อมกัน).',
+		pasteMsg	: 'กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (<strong>Ctrl และ V</strong>)พร้อมๆกัน และกด <strong>OK</strong>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'วางสำเนาจากตัวอักษรเวิร์ด',
+		title : 'วางสำเนาจากตัวอักษรเวิร์ด',
+		advice : 'กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (<strong>Ctrl และ V</strong>)พร้อมๆกัน และกด <strong>OK</strong>.',
+		ignoreFontFace : 'ไม่สนใจ Font Face definitions',
+		removeStyle : 'ลบ Styles definitions'
+	},
+
+	pasteText :
+	{
+		button : 'วางแบบตัวอักษรธรรมดา',
+		title : 'วางแบบตัวอักษรธรรมดา'
+	},
+
+	templates :
+	{
+		button : 'เทมเพลต',
+		title : 'เทมเพลตของส่วนเนื้อหาเว็บไซต์',
+		insertOption: 'แทนที่เนื้อหาเว็บไซต์ที่เลือก',
+		selectPromptMsg: 'กรุณาเลือก เทมเพลต เพื่อนำไปแก้ไขในอีดิตเตอร์<br />(เนื้อหาส่วนนี้จะหายไป):',
+		emptyListMsg : '(ยังไม่มีการกำหนดเทมเพลต)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'ลักษณะ',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'รูปแบบ',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'รูปแบบ',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatted',
+		tag_address : 'Address',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Paragraph (DIV)'
+	},
+
+	font :
+	{
+		label : 'แบบอักษร',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'แบบอักษร',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'ขนาด',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'ขนาด',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'สีตัวอักษร',
+		bgColorTitle : 'สีพื้นหลัง',
+		auto : 'สีอัตโนมัติ',
+		more : 'เลือกสีอื่นๆ...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/it.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/it.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/it.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Italian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['it'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Codice Sorgente',
+	newPage			: 'Nuova pagina vuota',
+	save			: 'Salva',
+	preview			: 'Anteprima',
+	cut				: 'Taglia',
+	copy			: 'Copia',
+	paste			: 'Incolla',
+	print			: 'Stampa',
+	underline		: 'Sottolineato',
+	bold			: 'Grassetto',
+	italic			: 'Corsivo',
+	selectAll		: 'Seleziona tutto',
+	removeFormat	: 'Elimina formattazione',
+	strike			: 'Barrato',
+	subscript		: 'Pedice',
+	superscript		: 'Apice',
+	horizontalrule	: 'Inserisci riga orizzontale',
+	pagebreak		: 'Inserisci interruzione di pagina',
+	unlink			: 'Elimina collegamento',
+	undo			: 'Annulla',
+	redo			: 'Ripristina',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Cerca sul server',
+		url				: 'URL',
+		protocol		: 'Protocollo',
+		upload			: 'Carica',
+		uploadSubmit	: 'Invia al server',
+		image			: 'Immagine',
+		flash			: 'Oggetto Flash',
+		form			: 'Modulo',
+		checkbox		: 'Checkbox',
+		radio		: 'Radio Button',
+		textField		: 'Campo di testo',
+		textarea		: 'Area di testo',
+		hiddenField		: 'Campo nascosto',
+		button			: 'Bottone',
+		select	: 'Menu di selezione',
+		imageButton		: 'Bottone immagine',
+		notSet			: '<non impostato>',
+		id				: 'Id',
+		name			: 'Nome',
+		langDir			: 'Direzione scrittura',
+		langDirLtr		: 'Da Sinistra a Destra (LTR)',
+		langDirRtl		: 'Da Destra a Sinistra (RTL)',
+		langCode		: 'Codice Lingua',
+		longDescr		: 'URL descrizione estesa',
+		cssClass		: 'Nome classe CSS',
+		advisoryTitle	: 'Titolo',
+		cssStyle		: 'Stile',
+		ok				: 'OK',
+		cancel			: 'Annulla',
+		generalTab		: 'Generale',
+		advancedTab		: 'Avanzate',
+		validateNumberFailed	: 'Il valore inserito non è un numero.',
+		confirmNewPage	: 'Ogni modifica non salvata sarà persa. Sei sicuro di voler caricare una nuova pagina?',
+		confirmCancel	: 'Alcune delle opzioni sono state cambiate. Sei sicuro di voler chiudere la finestra di dialogo?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, non disponibile</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Inserisci carattere speciale',
+		title		: 'Seleziona carattere speciale'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Inserisci/Modifica collegamento',
+		menu		: 'Modifica collegamento',
+		title		: 'Collegamento',
+		info		: 'Informazioni collegamento',
+		target		: 'Destinazione',
+		upload		: 'Carica',
+		advanced	: 'Avanzate',
+		type		: 'Tipo di Collegamento',
+		toAnchor	: 'Ancora nella pagina',
+		toEmail		: 'E-Mail',
+		target		: 'Destinazione',
+		targetNotSet	: '<non impostato>',
+		targetFrame	: '<riquadro>',
+		targetPopup	: '<finestra popup>',
+		targetNew	: 'Nuova finestra (_blank)',
+		targetTop	: 'Finestra superiore (_top)',
+		targetSelf	: 'Stessa finestra (_self)',
+		targetParent	: 'Finestra padre (_parent)',
+		targetFrameName	: 'Nome del riquadro di destinazione',
+		targetPopupName	: 'Nome finestra popup',
+		popupFeatures	: 'Caratteristiche finestra popup',
+		popupResizable	: 'Ridimensionabile',
+		popupStatusBar	: 'Barra di stato',
+		popupLocationBar	: 'Barra degli indirizzi',
+		popupToolbar	: 'Barra degli strumenti',
+		popupMenuBar	: 'Barra del menu',
+		popupFullScreen	: 'A tutto schermo (IE)',
+		popupScrollBars	: 'Barre di scorrimento',
+		popupDependent	: 'Dipendente (Netscape)',
+		popupWidth		: 'Larghezza',
+		popupLeft		: 'Posizione da sinistra',
+		popupHeight		: 'Altezza',
+		popupTop		: 'Posizione dall\'alto',
+		id				: 'Id',
+		langDir			: 'Direzione scrittura',
+		langDirNotSet	: '<non impostato>',
+		langDirLTR		: 'Da Sinistra a Destra (LTR)',
+		langDirRTL		: 'Da Destra a Sinistra (RTL)',
+		acccessKey		: 'Scorciatoia<br />da tastiera',
+		name			: 'Nome',
+		langCode		: 'Direzione scrittura',
+		tabIndex		: 'Ordine di tabulazione',
+		advisoryTitle	: 'Titolo',
+		advisoryContentType	: 'Tipo della risorsa collegata',
+		cssClasses		: 'Nome classe CSS',
+		charset			: 'Set di caretteri della risorsa collegata',
+		styles			: 'Stile',
+		selectAnchor	: 'Scegli Ancora',
+		anchorName		: 'Per Nome',
+		anchorId		: 'Per id elemento',
+		emailAddress	: 'Indirizzo E-Mail',
+		emailSubject	: 'Oggetto del messaggio',
+		emailBody		: 'Corpo del messaggio',
+		noAnchors		: '(Nessuna ancora disponibile nel documento)',
+		noUrl			: 'Devi inserire l\'URL del collegamento',
+		noEmail			: 'Devi inserire un\'indirizzo e-mail'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Inserisci/Modifica Ancora',
+		menu		: 'Proprietà ancora',
+		title		: 'Proprietà ancora',
+		name		: 'Nome ancora',
+		errorName	: 'Inserici il nome dell\'ancora'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Cerca e Sostituisci',
+		find				: 'Trova',
+		replace				: 'Sostituisci',
+		findWhat			: 'Trova:',
+		replaceWith			: 'Sostituisci con:',
+		notFoundMsg			: 'L\'elemento cercato non è stato trovato.',
+		matchCase			: 'Maiuscole/minuscole',
+		matchWord			: 'Solo parole intere',
+		matchCyclic			: 'Ricerca ciclica',
+		replaceAll			: 'Sostituisci tutto',
+		replaceSuccessMsg	: '%1 occorrenza(e) sostituite.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabella',
+		title		: 'Proprietà tabella',
+		menu		: 'Proprietà tabella',
+		deleteTable	: 'Cancella Tabella',
+		rows		: 'Righe',
+		columns		: 'Colonne',
+		border		: 'Dimensione bordo',
+		align		: 'Allineamento',
+		alignNotSet	: '<non impostato>',
+		alignLeft	: 'Sinistra',
+		alignCenter	: 'Centrato',
+		alignRight	: 'Destra',
+		width		: 'Larghezza',
+		widthPx		: 'pixel',
+		widthPc		: 'percento',
+		height		: 'Altezza',
+		cellSpace	: 'Spaziatura celle',
+		cellPad		: 'Padding celle',
+		caption		: 'Intestazione',
+		summary		: 'Indice',
+		headers		: 'Intestazione',
+		headersNone		: 'Nessuna',
+		headersColumn	: 'Prima Colonna',
+		headersRow		: 'Prima Riga',
+		headersBoth		: 'Entrambe',
+		invalidRows		: 'Il numero di righe dev\'essere un numero maggiore di 0.',
+		invalidCols		: 'Il numero di colonne dev\'essere un numero maggiore di 0.',
+		invalidBorder	: 'La dimensione del bordo dev\'essere un numero.',
+		invalidWidth	: 'La larghezza della tabella dev\'essere un numero.',
+		invalidHeight	: 'L\'altezza della tabella dev\'essere un numero.',
+		invalidCellSpacing	: 'La spaziatura tra le celle dev\'essere un numero.',
+		invalidCellPadding	: 'Il pagging delle celle dev\'essere un numero',
+
+		cell :
+		{
+			menu			: 'Cella',
+			insertBefore	: 'Inserisci Cella Prima',
+			insertAfter		: 'Inserisci Cella Dopo',
+			deleteCell		: 'Elimina celle',
+			merge			: 'Unisce celle',
+			mergeRight		: 'Unisci a Destra',
+			mergeDown		: 'Unisci in Basso',
+			splitHorizontal	: 'Dividi Cella Orizzontalmente',
+			splitVertical	: 'Dividi Cella Verticalmente',
+			title			: 'Proprietà della cella',
+			cellType		: 'Tipo di cella',
+			rowSpan			: 'Su più righe',
+			colSpan			: 'Su più colonne',
+			wordWrap		: 'Ritorno a capo',
+			hAlign			: 'Allineamento orizzontale',
+			vAlign			: 'Allineamento verticale',
+			alignTop		: 'In Alto',
+			alignMiddle		: 'Al Centro',
+			alignBottom		: 'In Basso',
+			alignBaseline	: 'Linea Base',
+			bgColor			: 'Colore di Sfondo',
+			borderColor		: 'Colore del Bordo',
+			data			: 'Dati',
+			header			: 'Intestazione',
+			yes				: 'Si',
+			no				: 'No',
+			invalidWidth	: 'La larghezza della cella dev\'essere un numero.',
+			invalidHeight	: 'L\'altezza della cella dev\'essere un numero.',
+			invalidRowSpan	: 'Il numero di righe dev\'essere un numero intero.',
+			invalidColSpan	: 'Il numero di colonne dev\'essere un numero intero.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Riga',
+			insertBefore	: 'Inserisci Riga Prima',
+			insertAfter		: 'Inserisci Riga Dopo',
+			deleteRow		: 'Elimina righe'
+		},
+
+		column :
+		{
+			menu			: 'Colonna',
+			insertBefore	: 'Inserisci Colonna Prima',
+			insertAfter		: 'Inserisci Colonna Dopo',
+			deleteColumn	: 'Elimina colonne'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Proprietà bottone',
+		text		: 'Testo (Value)',
+		type		: 'Tipo',
+		typeBtn		: 'Bottone',
+		typeSbm		: 'Invio',
+		typeRst		: 'Annulla'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Proprietà checkbox',
+		radioTitle	: 'Proprietà radio button',
+		value		: 'Valore',
+		selected	: 'Selezionato'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Proprietà modulo',
+		menu		: 'Proprietà modulo',
+		action		: 'Azione',
+		method		: 'Metodo',
+		encoding	: 'Codifica',
+		target		: 'Destinazione',
+		targetNotSet	: '<non impostato>',
+		targetNew	: 'Nuova finestra (_blank)',
+		targetTop	: 'Finestra superiore (_top)',
+		targetSelf	: 'Stessa finestra (_self)',
+		targetParent	: 'Finestra padre (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Proprietà menu di selezione',
+		selectInfo	: 'Info',
+		opAvail		: 'Opzioni disponibili',
+		value		: 'Valore',
+		size		: 'Dimensione',
+		lines		: 'righe',
+		chkMulti	: 'Permetti selezione multipla',
+		opText		: 'Testo',
+		opValue		: 'Valore',
+		btnAdd		: 'Aggiungi',
+		btnModify	: 'Modifica',
+		btnUp		: 'Su',
+		btnDown		: 'Gi',
+		btnSetValue : 'Imposta come predefinito',
+		btnDelete	: 'Rimuovi'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Proprietà area di testo',
+		cols		: 'Colonne',
+		rows		: 'Righe'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Proprietà campo di testo',
+		name		: 'Nome',
+		value		: 'Valore',
+		charWidth	: 'Larghezza',
+		maxChars	: 'Numero massimo di caratteri',
+		type		: 'Tipo',
+		typeText	: 'Testo',
+		typePass	: 'Password'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Proprietà campo nascosto',
+		name	: 'Nome',
+		value	: 'Valore'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Proprietà immagine',
+		titleButton	: 'Proprietà bottone immagine',
+		menu		: 'Proprietà immagine',
+		infoTab	: 'Informazioni immagine',
+		btnUpload	: 'Invia al server',
+		url		: 'URL',
+		upload	: 'Carica',
+		alt		: 'Testo alternativo',
+		width		: 'Larghezza',
+		height	: 'Altezza',
+		lockRatio	: 'Blocca rapporto',
+		resetSize	: 'Reimposta dimensione',
+		border	: 'Bordo',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		align		: 'Allineamento',
+		alignLeft	: 'Sinistra',
+		alignAbsBottom: 'In basso assoluto',
+		alignAbsMiddle: 'Centrato assoluto',
+		alignBaseline	: 'Linea base',
+		alignBottom	: 'In Basso',
+		alignMiddle	: 'Centrato',
+		alignRight	: 'Destra',
+		alignTextTop	: 'In alto al testo',
+		alignTop	: 'In Alto',
+		preview	: 'Anteprima',
+		alertUrl	: 'Devi inserire l\'URL per l\'immagine',
+		linkTab	: 'Collegamento',
+		button2Img	: 'Vuoi trasformare il bottone immagine selezionato in un\'immagine semplice?',
+		img2Button	: 'Vuoi trasferomare l\'immagine selezionata in un bottone immagine?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Proprietà Oggetto Flash',
+		propertiesTab	: 'Proprietà',
+		title		: 'Proprietà Oggetto Flash',
+		chkPlay		: 'Avvio Automatico',
+		chkLoop		: 'Riavvio automatico',
+		chkMenu		: 'Abilita Menu di Flash',
+		chkFull		: 'Permetti la modalità tutto schermo',
+ 		scale		: 'Ridimensiona',
+		scaleAll		: 'Mostra Tutto',
+		scaleNoBorder	: 'Senza Bordo',
+		scaleFit		: 'Dimensione Esatta',
+		access			: 'Accesso Script',
+		accessAlways	: 'Sempre',
+		accessSameDomain	: 'Solo stesso dominio',
+		accessNever	: 'Mai',
+		align		: 'Allineamento',
+		alignLeft	: 'Sinistra',
+		alignAbsBottom: 'In basso assoluto',
+		alignAbsMiddle: 'Centrato assoluto',
+		alignBaseline	: 'Linea base',
+		alignBottom	: 'In Basso',
+		alignMiddle	: 'Centrato',
+		alignRight	: 'Destra',
+		alignTextTop	: 'In alto al testo',
+		alignTop	: 'In Alto',
+		quality		: 'Qualità',
+		qualityBest		 : 'Massima',
+		qualityHigh		 : 'Alta',
+		qualityAutoHigh	 : 'Alta Automatica',
+		qualityMedium	 : 'Intermedia',
+		qualityAutoLow	 : 'Bassa Automatica',
+		qualityLow		 : 'Bassa',
+		windowModeWindow	 : 'Finestra',
+		windowModeOpaque	 : 'Opaca',
+		windowModeTransparent	 : 'Trasparente',
+		windowMode	: 'Modalità finestra',
+		flashvars	: 'Variabili per Flash',
+		bgcolor	: 'Colore sfondo',
+		width	: 'Larghezza',
+		height	: 'Altezza',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		validateSrc : 'Devi inserire l\'URL del collegamento',
+		validateWidth : 'La Larghezza dev\'essere un numero',
+		validateHeight : 'L\'altezza dev\'essere un numero',
+		validateHSpace : 'L\'HSpace dev\'essere un numero.',
+		validateVSpace : 'Il VSpace dev\'essere un numero.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Correttore ortografico',
+		title			: 'Controllo ortografico',
+		notAvailable	: 'Il servizio non è momentaneamente disponibile.',
+		errorLoading	: 'Errore nel caricamento dell\'host col servizio applicativo: %s.',
+		notInDic		: 'Non nel dizionario',
+		changeTo		: 'Cambia in',
+		btnIgnore		: 'Ignora',
+		btnIgnoreAll	: 'Ignora tutto',
+		btnReplace		: 'Cambia',
+		btnReplaceAll	: 'Cambia tutto',
+		btnUndo			: 'Annulla',
+		noSuggestions	: '- Nessun suggerimento -',
+		progress		: 'Controllo ortografico in corso',
+		noMispell		: 'Controllo ortografico completato: nessun errore trovato',
+		noChanges		: 'Controllo ortografico completato: nessuna parola cambiata',
+		oneChange		: 'Controllo ortografico completato: 1 parola cambiata',
+		manyChanges		: 'Controllo ortografico completato: %1 parole cambiate',
+		ieSpellDownload	: 'Contollo ortografico non installato. Lo vuoi scaricare ora?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Emoticon',
+		title	: 'Inserisci emoticon'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 elemento'
+	},
+
+	numberedlist : 'Elenco numerato',
+	bulletedlist : 'Elenco puntato',
+	indent : 'Aumenta rientro',
+	outdent : 'Riduci rientro',
+
+	justify :
+	{
+		left : 'Allinea a sinistra',
+		center : 'Centra',
+		right : 'Allinea a destra',
+		block : 'Giustifica'
+	},
+
+	blockquote : 'Citazione',
+
+	clipboard :
+	{
+		title		: 'Incolla',
+		cutError	: 'Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl+X).',
+		copyError	: 'Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl+C).',
+		pasteMsg	: 'Incolla il testo all\'interno dell\'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl+V</STRONG>) e premi <STRONG>OK</STRONG>.',
+		securityMsg	: 'A causa delle impostazioni di sicurezza del browser,l\'editor non è in grado di accedere direttamente agli appunti. E\' pertanto necessario incollarli di nuovo in questa finestra.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Incolla da Word',
+		title : 'Incolla da Word',
+		advice : 'Incolla il testo all\'interno dell\'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl+V</STRONG>) e premi <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignora le definizioni di Font',
+		removeStyle : 'Rimuovi le definizioni di Stile'
+	},
+
+	pasteText :
+	{
+		button : 'Incolla come testo semplice',
+		title : 'Incolla come testo semplice'
+	},
+
+	templates :
+	{
+		button : 'Modelli',
+		title : 'Contenuto dei modelli',
+		insertOption: 'Cancella il contenuto corrente',
+		selectPromptMsg: 'Seleziona il modello da aprire nell\'editor<br />(il contenuto attuale verrà eliminato):',
+		emptyListMsg : '(Nessun modello definito)'
+	},
+
+	showBlocks : 'Visualizza Blocchi',
+
+	stylesCombo :
+	{
+		label : 'Stile',
+		voiceLabel : 'Stili',
+		panelVoiceLabel : 'Seleziona uno stile',
+		panelTitle1 : 'Stili per blocchi',
+		panelTitle2 : 'Stili in linea',
+		panelTitle3 : 'Stili per oggetti'
+	},
+
+	format :
+	{
+		label : 'Formato',
+		voiceLabel : 'Formato',
+		panelTitle : 'Formato',
+		panelVoiceLabel : 'Seleziona il formato per paragrafo',
+
+		tag_p : 'Normale',
+		tag_pre : 'Formattato',
+		tag_address : 'Indirizzo',
+		tag_h1 : 'Titolo 1',
+		tag_h2 : 'Titolo 2',
+		tag_h3 : 'Titolo 3',
+		tag_h4 : 'Titolo 4',
+		tag_h5 : 'Titolo 5',
+		tag_h6 : 'Titolo 6',
+		tag_div : 'Paragrafo (DIV)'
+	},
+
+	font :
+	{
+		label : 'Font',
+		voiceLabel : 'Font',
+		panelTitle : 'Font',
+		panelVoiceLabel : 'Seleziona un font'
+	},
+
+	fontSize :
+	{
+		label : 'Dimensione',
+		voiceLabel : 'Dimensione Font',
+		panelTitle : 'Dimensione',
+		panelVoiceLabel : 'Seleziona una dimensione font'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Colore testo',
+		bgColorTitle : 'Colore sfondo',
+		auto : 'Automatico',
+		more : 'Altri colori...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Controllo Ortografico Mentre Scrivi',
+		enable : 'Abilita COMS',
+		disable : 'Disabilita COMS',
+		about : 'About COMS',
+		toggle : 'Inverti abilitazione SCOMS',
+		options : 'Opzioni',
+		langs : 'Lingue',
+		moreSuggestions : 'Altri suggerimenti',
+		ignore : 'Ignora',
+		ignoreAll : 'Ignora tutti',
+		addWord : 'Aggiungi Parola',
+		emptyDic : 'Il nome del dizionario non può essere vuoto.',
+		optionsTab : 'Opzioni',
+		languagesTab : 'Lingue',
+		dictionariesTab : 'Dizionari',
+		aboutTab : 'About'
+	},
+
+	about :
+	{
+		title : 'About CKEditor',
+		dlgTitle : 'About CKEditor',
+		moreInfo : 'Per le informazioni sulla licenza si prega di visitare il nostro sito:',
+		copy : 'Copyright &copy; $1. Tutti i diritti riservati.'
+	},
+
+	maximize : 'Massimizza',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Ancora',
+		flash : 'Animazione Flash',
+		div : 'Interruzione di Pagina',
+		unknown : 'Oggetto sconosciuto'
+	},
+
+	resize : 'Trascina per ridimensionare',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/sl.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/sl.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/sl.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Slovenian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['sl'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Izvorna koda',
+	newPage			: 'Nova stran',
+	save			: 'Shrani',
+	preview			: 'Predogled',
+	cut				: 'Izreži',
+	copy			: 'Kopiraj',
+	paste			: 'Prilepi',
+	print			: 'Natisni',
+	underline		: 'Podčrtano',
+	bold			: 'Krepko',
+	italic			: 'Ležeče',
+	selectAll		: 'Izberi vse',
+	removeFormat	: 'Odstrani oblikovanje',
+	strike			: 'Prečrtano',
+	subscript		: 'Podpisano',
+	superscript		: 'Nadpisano',
+	horizontalrule	: 'Vstavi vodoravno črto',
+	pagebreak		: 'Vstavi prelom strani',
+	unlink			: 'Odstrani povezavo',
+	undo			: 'Razveljavi',
+	redo			: 'Ponovi',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Prebrskaj na strežniku',
+		url				: 'URL',
+		protocol		: 'Protokol',
+		upload			: 'Prenesi',
+		uploadSubmit	: 'Pošlji na strežnik',
+		image			: 'Slika',
+		flash			: 'Flash',
+		form			: 'Obrazec',
+		checkbox		: 'Potrditveno polje',
+		radio		: 'Izbirno polje',
+		textField		: 'Vnosno polje',
+		textarea		: 'Vnosno območje',
+		hiddenField		: 'Skrito polje',
+		button			: 'Gumb',
+		select	: 'Spustni seznam',
+		imageButton		: 'Gumb s sliko',
+		notSet			: '<ni postavljen>',
+		id				: 'Id',
+		name			: 'Ime',
+		langDir			: 'Smer jezika',
+		langDirLtr		: 'Od leve proti desni (LTR)',
+		langDirRtl		: 'Od desne proti levi (RTL)',
+		langCode		: 'Oznaka jezika',
+		longDescr		: 'Dolg opis URL-ja',
+		cssClass		: 'Razred stilne predloge',
+		advisoryTitle	: 'Predlagani naslov',
+		cssStyle		: 'Slog',
+		ok				: 'V redu',
+		cancel			: 'Prekliči',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Napredno',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Vstavi posebni znak',
+		title		: 'Izberi posebni znak'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Vstavi/uredi povezavo',
+		menu		: 'Uredi povezavo',
+		title		: 'Povezava',
+		info		: 'Podatki o povezavi',
+		target		: 'Cilj',
+		upload		: 'Prenesi',
+		advanced	: 'Napredno',
+		type		: 'Vrsta povezave',
+		toAnchor	: 'Zaznamek na tej strani',
+		toEmail		: 'Elektronski naslov',
+		target		: 'Cilj',
+		targetNotSet	: '<ni postavljen>',
+		targetFrame	: '<okvir>',
+		targetPopup	: '<pojavno okno>',
+		targetNew	: 'Novo okno (_blank)',
+		targetTop	: 'Najvišje okno (_top)',
+		targetSelf	: 'Isto okno (_self)',
+		targetParent	: 'Starševsko okno (_parent)',
+		targetFrameName	: 'Ime ciljnega okvirja',
+		targetPopupName	: 'Ime pojavnega okna',
+		popupFeatures	: 'Značilnosti pojavnega okna',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Vrstica stanja',
+		popupLocationBar	: 'Naslovna vrstica',
+		popupToolbar	: 'Orodna vrstica',
+		popupMenuBar	: 'Menijska vrstica',
+		popupFullScreen	: 'Celozaslonska slika (IE)',
+		popupScrollBars	: 'Drsniki',
+		popupDependent	: 'Podokno (Netscape)',
+		popupWidth		: 'Širina',
+		popupLeft		: 'Lega levo',
+		popupHeight		: 'Višina',
+		popupTop		: 'Lega na vrhu',
+		id				: 'Id', // MISSING
+		langDir			: 'Smer jezika',
+		langDirNotSet	: '<ni postavljen>',
+		langDirLTR		: 'Od leve proti desni (LTR)',
+		langDirRTL		: 'Od desne proti levi (RTL)',
+		acccessKey		: 'Vstopno geslo',
+		name			: 'Ime',
+		langCode		: 'Smer jezika',
+		tabIndex		: 'Številka tabulatorja',
+		advisoryTitle	: 'Predlagani naslov',
+		advisoryContentType	: 'Predlagani tip vsebine (content-type)',
+		cssClasses		: 'Razred stilne predloge',
+		charset			: 'Kodna tabela povezanega vira',
+		styles			: 'Slog',
+		selectAnchor	: 'Izberi zaznamek',
+		anchorName		: 'Po imenu zaznamka',
+		anchorId		: 'Po ID-ju elementa',
+		emailAddress	: 'Elektronski naslov',
+		emailSubject	: 'Predmet sporočila',
+		emailBody		: 'Vsebina sporočila',
+		noAnchors		: '(V tem dokumentu ni zaznamkov)',
+		noUrl			: 'Vnesite URL povezave',
+		noEmail			: 'Vnesite elektronski naslov'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Vstavi/uredi zaznamek',
+		menu		: 'Lastnosti zaznamka',
+		title		: 'Lastnosti zaznamka',
+		name		: 'Ime zaznamka',
+		errorName	: 'Prosim vnesite ime zaznamka'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Najdi in zamenjaj',
+		find				: 'Najdi',
+		replace				: 'Zamenjaj',
+		findWhat			: 'Najdi:',
+		replaceWith			: 'Zamenjaj z:',
+		notFoundMsg			: 'Navedeno besedilo ni bilo najdeno.',
+		matchCase			: 'Razlikuj velike in male črke',
+		matchWord			: 'Samo cele besede',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Zamenjaj vse',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabela',
+		title		: 'Lastnosti tabele',
+		menu		: 'Lastnosti tabele',
+		deleteTable	: 'Izbriši tabelo',
+		rows		: 'Vrstice',
+		columns		: 'Stolpci',
+		border		: 'Velikost obrobe',
+		align		: 'Poravnava',
+		alignNotSet	: '<Ni nastavljeno>',
+		alignLeft	: 'Levo',
+		alignCenter	: 'Sredinsko',
+		alignRight	: 'Desno',
+		width		: 'Širina',
+		widthPx		: 'pik',
+		widthPc		: 'procentov',
+		height		: 'Višina',
+		cellSpace	: 'Razmik med celicami',
+		cellPad		: 'Polnilo med celicami',
+		caption		: 'Naslov',
+		summary		: 'Povzetek',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Celica',
+			insertBefore	: 'Vstavi celico pred',
+			insertAfter		: 'Vstavi celico za',
+			deleteCell		: 'Izbriši celice',
+			merge			: 'Združi celice',
+			mergeRight		: 'Združi desno',
+			mergeDown		: 'Druži navzdol',
+			splitHorizontal	: 'Razdeli celico vodoravno',
+			splitVertical	: 'Razdeli celico navpično',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Vrstica',
+			insertBefore	: 'Vstavi vrstico pred',
+			insertAfter		: 'Vstavi vrstico za',
+			deleteRow		: 'Izbriši vrstice'
+		},
+
+		column :
+		{
+			menu			: 'Stolpec',
+			insertBefore	: 'Vstavi stolpec pred',
+			insertAfter		: 'Vstavi stolpec za',
+			deleteColumn	: 'Izbriši stolpce'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Lastnosti gumba',
+		text		: 'Besedilo (Vrednost)',
+		type		: 'Tip',
+		typeBtn		: 'Gumb',
+		typeSbm		: 'Potrdi',
+		typeRst		: 'Ponastavi'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Lastnosti potrditvenega polja',
+		radioTitle	: 'Lastnosti izbirnega polja',
+		value		: 'Vrednost',
+		selected	: 'Izbrano'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Lastnosti obrazca',
+		menu		: 'Lastnosti obrazca',
+		action		: 'Akcija',
+		method		: 'Metoda',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Cilj',
+		targetNotSet	: '<ni postavljen>',
+		targetNew	: 'Novo okno (_blank)',
+		targetTop	: 'Najvišje okno (_top)',
+		targetSelf	: 'Isto okno (_self)',
+		targetParent	: 'Starševsko okno (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Lastnosti spustnega seznama',
+		selectInfo	: 'Podatki',
+		opAvail		: 'Razpoložljive izbire',
+		value		: 'Vrednost',
+		size		: 'Velikost',
+		lines		: 'vrstic',
+		chkMulti	: 'Dovoli izbor večih vrstic',
+		opText		: 'Besedilo',
+		opValue		: 'Vrednost',
+		btnAdd		: 'Dodaj',
+		btnModify	: 'Spremeni',
+		btnUp		: 'Gor',
+		btnDown		: 'Dol',
+		btnSetValue : 'Postavi kot privzeto izbiro',
+		btnDelete	: 'Izbriši'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Lastnosti vnosnega območja',
+		cols		: 'Stolpcev',
+		rows		: 'Vrstic'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Lastnosti vnosnega polja',
+		name		: 'Ime',
+		value		: 'Vrednost',
+		charWidth	: 'Dolžina',
+		maxChars	: 'Največje število znakov',
+		type		: 'Tip',
+		typeText	: 'Besedilo',
+		typePass	: 'Geslo'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Lastnosti skritega polja',
+		name	: 'Ime',
+		value	: 'Vrednost'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Lastnosti slike',
+		titleButton	: 'Lastnosti gumba s sliko',
+		menu		: 'Lastnosti slike',
+		infoTab	: 'Podatki o sliki',
+		btnUpload	: 'Pošlji na strežnik',
+		url		: 'URL',
+		upload	: 'Pošlji',
+		alt		: 'Nadomestno besedilo',
+		width		: 'Širina',
+		height	: 'Višina',
+		lockRatio	: 'Zakleni razmerje',
+		resetSize	: 'Ponastavi velikost',
+		border	: 'Obroba',
+		hSpace	: 'Vodoravni razmik',
+		vSpace	: 'Navpični razmik',
+		align		: 'Poravnava',
+		alignLeft	: 'Levo',
+		alignAbsBottom: 'Popolnoma na dno',
+		alignAbsMiddle: 'Popolnoma v sredino',
+		alignBaseline	: 'Na osnovno črto',
+		alignBottom	: 'Na dno',
+		alignMiddle	: 'V sredino',
+		alignRight	: 'Desno',
+		alignTextTop	: 'Besedilo na vrh',
+		alignTop	: 'Na vrh',
+		preview	: 'Predogled',
+		alertUrl	: 'Vnesite URL slike',
+		linkTab	: 'Povezava',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Lastnosti Flash',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Lastnosti Flash',
+		chkPlay		: 'Samodejno predvajaj',
+		chkLoop		: 'Ponavljanje',
+		chkMenu		: 'Omogoči Flash Meni',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Povečava',
+		scaleAll		: 'Pokaži vse',
+		scaleNoBorder	: 'Brez obrobe',
+		scaleFit		: 'Natančno prileganje',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Poravnava',
+		alignLeft	: 'Levo',
+		alignAbsBottom: 'Popolnoma na dno',
+		alignAbsMiddle: 'Popolnoma v sredino',
+		alignBaseline	: 'Na osnovno črto',
+		alignBottom	: 'Na dno',
+		alignMiddle	: 'V sredino',
+		alignRight	: 'Desno',
+		alignTextTop	: 'Besedilo na vrh',
+		alignTop	: 'Na vrh',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Barva ozadja',
+		width	: 'Širina',
+		height	: 'Višina',
+		hSpace	: 'Vodoravni razmik',
+		vSpace	: 'Navpični razmik',
+		validateSrc : 'Vnesite URL povezave',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Preveri črkovanje',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Ni v slovarju',
+		changeTo		: 'Spremeni v',
+		btnIgnore		: 'Prezri',
+		btnIgnoreAll	: 'Prezri vse',
+		btnReplace		: 'Zamenjaj',
+		btnReplaceAll	: 'Zamenjaj vse',
+		btnUndo			: 'Razveljavi',
+		noSuggestions	: '- Ni predlogov -',
+		progress		: 'Preverjanje črkovanja se izvaja...',
+		noMispell		: 'Črkovanje je končano: Brez napak',
+		noChanges		: 'Črkovanje je končano: Nobena beseda ni bila spremenjena',
+		oneChange		: 'Črkovanje je končano: Spremenjena je bila ena beseda',
+		manyChanges		: 'Črkovanje je končano: Spremenjenih je bilo %1 besed',
+		ieSpellDownload	: 'Črkovalnik ni nameščen. Ali ga želite prenesti sedaj?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smeško',
+		title	: 'Vstavi smeška'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Oštevilčen seznam',
+	bulletedlist : 'Označen seznam',
+	indent : 'Povečaj zamik',
+	outdent : 'Zmanjšaj zamik',
+
+	justify :
+	{
+		left : 'Leva poravnava',
+		center : 'Sredinska poravnava',
+		right : 'Desna poravnava',
+		block : 'Obojestranska poravnava'
+	},
+
+	blockquote : 'Citat',
+
+	clipboard :
+	{
+		title		: 'Prilepi',
+		cutError	: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+X).',
+		copyError	: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+C).',
+		pasteMsg	: 'Prosim prilepite v sleči okvir s pomočjo tipkovnice (<STRONG>Ctrl+V</STRONG>) in pritisnite <STRONG>V redu</STRONG>.',
+		securityMsg	: 'Zaradi varnostnih nastavitev vašega brskalnika urejevalnik ne more neposredno dostopati do odložišča. Vsebino odložišča ponovno prilepite v to okno.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Prilepi iz Worda',
+		title : 'Prilepi iz Worda',
+		advice : 'Prosim prilepite v sleči okvir s pomočjo tipkovnice (<STRONG>Ctrl+V</STRONG>) in pritisnite <STRONG>V redu</STRONG>.',
+		ignoreFontFace : 'Prezri obliko pisave',
+		removeStyle : 'Odstrani nastavitve stila'
+	},
+
+	pasteText :
+	{
+		button : 'Prilepi kot golo besedilo',
+		title : 'Prilepi kot golo besedilo'
+	},
+
+	templates :
+	{
+		button : 'Predloge',
+		title : 'Vsebinske predloge',
+		insertOption: 'Zamenjaj trenutno vsebino',
+		selectPromptMsg: 'Izberite predlogo, ki jo želite odpreti v urejevalniku<br>(trenutna vsebina bo izgubljena):',
+		emptyListMsg : '(Ni pripravljenih predlog)'
+	},
+
+	showBlocks : 'Prikaži ograde',
+
+	stylesCombo :
+	{
+		label : 'Slog',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Oblika',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Oblika',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Navaden',
+		tag_pre : 'Oblikovan',
+		tag_address : 'Napis',
+		tag_h1 : 'Naslov 1',
+		tag_h2 : 'Naslov 2',
+		tag_h3 : 'Naslov 3',
+		tag_h4 : 'Naslov 4',
+		tag_h5 : 'Naslov 5',
+		tag_h6 : 'Naslov 6',
+		tag_div : 'Normal (DIV)' // MISSING
+	},
+
+	font :
+	{
+		label : 'Pisava',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Pisava',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Velikost',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Velikost',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Barva besedila',
+		bgColorTitle : 'Barva ozadja',
+		auto : 'Samodejno',
+		more : 'Več barv...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/lt.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/lt.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/lt.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Lithuanian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['lt'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Šaltinis',
+	newPage			: 'Naujas puslapis',
+	save			: 'Išsaugoti',
+	preview			: 'Peržiūra',
+	cut				: 'Iškirpti',
+	copy			: 'Kopijuoti',
+	paste			: 'Įdėti',
+	print			: 'Spausdinti',
+	underline		: 'Pabrauktas',
+	bold			: 'Pusjuodis',
+	italic			: 'Kursyvas',
+	selectAll		: 'Pažymėti viską',
+	removeFormat	: 'Panaikinti formatą',
+	strike			: 'Perbrauktas',
+	subscript		: 'Apatinis indeksas',
+	superscript		: 'Viršutinis indeksas',
+	horizontalrule	: 'Įterpti horizontalią liniją',
+	pagebreak		: 'Įterpti puslapių skirtuką',
+	unlink			: 'Panaikinti nuorodą',
+	undo			: 'Atšaukti',
+	redo			: 'Atstatyti',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Naršyti po serverį',
+		url				: 'URL',
+		protocol		: 'Protokolas',
+		upload			: 'Siųsti',
+		uploadSubmit	: 'Siųsti į serverį',
+		image			: 'Vaizdas',
+		flash			: 'Flash',
+		form			: 'Forma',
+		checkbox		: 'Žymimasis langelis',
+		radio		: 'Žymimoji akutė',
+		textField		: 'Teksto laukas',
+		textarea		: 'Teksto sritis',
+		hiddenField		: 'Nerodomas laukas',
+		button			: 'Mygtukas',
+		select	: 'Atrankos laukas',
+		imageButton		: 'Vaizdinis mygtukas',
+		notSet			: '<nėra nustatyta>',
+		id				: 'Id',
+		name			: 'Vardas',
+		langDir			: 'Teksto kryptis',
+		langDirLtr		: 'Iš kairės į dešinę (LTR)',
+		langDirRtl		: 'Iš dešinės į kairę (RTL)',
+		langCode		: 'Kalbos kodas',
+		longDescr		: 'Ilgas aprašymas URL',
+		cssClass		: 'Stilių lentelės klasės',
+		advisoryTitle	: 'Konsultacinė antraštė',
+		cssStyle		: 'Stilius',
+		ok				: 'OK',
+		cancel			: 'Nutraukti',
+		generalTab		: 'Bendros savybės',
+		advancedTab		: 'Papildomas',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Įterpti specialų simbolį',
+		title		: 'Pasirinkite specialų simbolį'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Įterpti/taisyti nuorodą',
+		menu		: 'Taisyti nuorodą',
+		title		: 'Nuoroda',
+		info		: 'Nuorodos informacija',
+		target		: 'Paskirties vieta',
+		upload		: 'Siųsti',
+		advanced	: 'Papildomas',
+		type		: 'Nuorodos tipas',
+		toAnchor	: 'Žymė šiame puslapyje',
+		toEmail		: 'El.paštas',
+		target		: 'Paskirties vieta',
+		targetNotSet	: '<nėra nustatyta>',
+		targetFrame	: '<kadras>',
+		targetPopup	: '<išskleidžiamas langas>',
+		targetNew	: 'Naujas langas (_blank)',
+		targetTop	: 'Svarbiausias langas (_top)',
+		targetSelf	: 'Tas pats langas (_self)',
+		targetParent	: 'Pirminis langas (_parent)',
+		targetFrameName	: 'Paskirties kadro vardas',
+		targetPopupName	: 'Paskirties lango vardas',
+		popupFeatures	: 'Išskleidžiamo lango savybės',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Būsenos juosta',
+		popupLocationBar	: 'Adreso juosta',
+		popupToolbar	: 'Mygtukų juosta',
+		popupMenuBar	: 'Meniu juosta',
+		popupFullScreen	: 'Visas ekranas (IE)',
+		popupScrollBars	: 'Slinkties juostos',
+		popupDependent	: 'Priklausomas (Netscape)',
+		popupWidth		: 'Plotis',
+		popupLeft		: 'Kairė pozicija',
+		popupHeight		: 'Aukštis',
+		popupTop		: 'Viršutinė pozicija',
+		id				: 'Id', // MISSING
+		langDir			: 'Teksto kryptis',
+		langDirNotSet	: '<nėra nustatyta>',
+		langDirLTR		: 'Iš kairės į dešinę (LTR)',
+		langDirRTL		: 'Iš dešinės į kairę (RTL)',
+		acccessKey		: 'Prieigos raktas',
+		name			: 'Vardas',
+		langCode		: 'Teksto kryptis',
+		tabIndex		: 'Tabuliavimo indeksas',
+		advisoryTitle	: 'Konsultacinė antraštė',
+		advisoryContentType	: 'Konsultacinio turinio tipas',
+		cssClasses		: 'Stilių lentelės klasės',
+		charset			: 'Susietų išteklių simbolių lentelė',
+		styles			: 'Stilius',
+		selectAnchor	: 'Pasirinkite žymę',
+		anchorName		: 'Pagal žymės vardą',
+		anchorId		: 'Pagal žymės Id',
+		emailAddress	: 'El.pašto adresas',
+		emailSubject	: 'Žinutės tema',
+		emailBody		: 'Žinutės turinys',
+		noAnchors		: '(Šiame dokumente žymių nėra)',
+		noUrl			: 'Prašome įvesti nuorodos URL',
+		noEmail			: 'Prašome įvesti el.pašto adresą'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Įterpti/modifikuoti žymę',
+		menu		: 'Žymės savybės',
+		title		: 'Žymės savybės',
+		name		: 'Žymės vardas',
+		errorName	: 'Prašome įvesti žymės vardą'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Surasti ir pakeisti',
+		find				: 'Rasti',
+		replace				: 'Pakeisti',
+		findWhat			: 'Surasti tekstą:',
+		replaceWith			: 'Pakeisti tekstu:',
+		notFoundMsg			: 'Nurodytas tekstas nerastas.',
+		matchCase			: 'Skirti didžiąsias ir mažąsias raides',
+		matchWord			: 'Atitikti pilną žodį',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Pakeisti viską',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Lentelė',
+		title		: 'Lentelės savybės',
+		menu		: 'Lentelės savybės',
+		deleteTable	: 'Šalinti lentelę',
+		rows		: 'Eilutės',
+		columns		: 'Stulpeliai',
+		border		: 'Rėmelio dydis',
+		align		: 'Lygiuoti',
+		alignNotSet	: '<Nenustatyta>',
+		alignLeft	: 'Kairę',
+		alignCenter	: 'Centrą',
+		alignRight	: 'Dešinę',
+		width		: 'Plotis',
+		widthPx		: 'taškais',
+		widthPc		: 'procentais',
+		height		: 'Aukštis',
+		cellSpace	: 'Tarpas tarp langelių',
+		cellPad		: 'Trapas nuo langelio rėmo iki teksto',
+		caption		: 'Antraštė',
+		summary		: 'Santrauka',
+		headers		: 'Antraštės',
+		headersNone		: 'Nėra',
+		headersColumn	: 'Pirmas stulpelis',
+		headersRow		: 'Pirma eilutė',
+		headersBoth		: 'Abu',
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Langelis',
+			insertBefore	: 'Įterpti langelį prieš',
+			insertAfter		: 'Įterpti langelį po',
+			deleteCell		: 'Šalinti langelius',
+			merge			: 'Sujungti langelius',
+			mergeRight		: 'Sujungti su dešine',
+			mergeDown		: 'Sujungti su apačia',
+			splitHorizontal	: 'Skaidyti langelį horizontaliai',
+			splitVertical	: 'Skaidyti langelį vertikaliai',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Eilutė',
+			insertBefore	: 'Įterpti eilutę prieš',
+			insertAfter		: 'Įterpti eilutę po',
+			deleteRow		: 'Šalinti eilutes'
+		},
+
+		column :
+		{
+			menu			: 'Stulpelis',
+			insertBefore	: 'Įterpti stulpelį prieš',
+			insertAfter		: 'Įterpti stulpelį po',
+			deleteColumn	: 'Šalinti stulpelius'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Mygtuko savybės',
+		text		: 'Tekstas (Reikšmė)',
+		type		: 'Tipas',
+		typeBtn		: 'Mygtukas',
+		typeSbm		: 'Siųsti',
+		typeRst		: 'Išvalyti'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Žymimojo langelio savybės',
+		radioTitle	: 'Žymimosios akutės savybės',
+		value		: 'Reikšmė',
+		selected	: 'Pažymėtas'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Formos savybės',
+		menu		: 'Formos savybės',
+		action		: 'Veiksmas',
+		method		: 'Metodas',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Paskirties vieta',
+		targetNotSet	: '<nėra nustatyta>',
+		targetNew	: 'Naujas langas (_blank)',
+		targetTop	: 'Svarbiausias langas (_top)',
+		targetSelf	: 'Tas pats langas (_self)',
+		targetParent	: 'Pirminis langas (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Atrankos lauko savybės',
+		selectInfo	: 'Informacija',
+		opAvail		: 'Galimos parinktys',
+		value		: 'Reikšmė',
+		size		: 'Dydis',
+		lines		: 'eilučių',
+		chkMulti	: 'Leisti daugeriopą atranką',
+		opText		: 'Tekstas',
+		opValue		: 'Reikšmė',
+		btnAdd		: 'Įtraukti',
+		btnModify	: 'Modifikuoti',
+		btnUp		: 'Aukštyn',
+		btnDown		: 'Žemyn',
+		btnSetValue : 'Laikyti pažymėta reikšme',
+		btnDelete	: 'Trinti'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Teksto srities savybės',
+		cols		: 'Ilgis',
+		rows		: 'Plotis'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Teksto lauko savybės',
+		name		: 'Vardas',
+		value		: 'Reikšmė',
+		charWidth	: 'Ilgis simboliais',
+		maxChars	: 'Maksimalus simbolių skaičius',
+		type		: 'Tipas',
+		typeText	: 'Tekstas',
+		typePass	: 'Slaptažodis'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Nerodomo lauko savybės',
+		name	: 'Vardas',
+		value	: 'Reikšmė'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Vaizdo savybės',
+		titleButton	: 'Vaizdinio mygtuko savybės',
+		menu		: 'Vaizdo savybės',
+		infoTab	: 'Vaizdo informacija',
+		btnUpload	: 'Siųsti į serverį',
+		url		: 'URL',
+		upload	: 'Nusiųsti',
+		alt		: 'Alternatyvus Tekstas',
+		width		: 'Plotis',
+		height	: 'Aukštis',
+		lockRatio	: 'Išlaikyti proporciją',
+		resetSize	: 'Atstatyti dydį',
+		border	: 'Rėmelis',
+		hSpace	: 'Hor.Erdvė',
+		vSpace	: 'Vert.Erdvė',
+		align		: 'Lygiuoti',
+		alignLeft	: 'Kairę',
+		alignAbsBottom: 'Absoliučią apačią',
+		alignAbsMiddle: 'Absoliutų vidurį',
+		alignBaseline	: 'Apatinę liniją',
+		alignBottom	: 'Apačią',
+		alignMiddle	: 'Vidurį',
+		alignRight	: 'Dešinę',
+		alignTextTop	: 'Teksto viršūnę',
+		alignTop	: 'Viršūnę',
+		preview	: 'Peržiūra',
+		alertUrl	: 'Prašome įvesti vaizdo URL',
+		linkTab	: 'Nuoroda',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash savybės',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flash savybės',
+		chkPlay		: 'Automatinis paleidimas',
+		chkLoop		: 'Ciklas',
+		chkMenu		: 'Leisti Flash meniu',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Mastelis',
+		scaleAll		: 'Rodyti visą',
+		scaleNoBorder	: 'Be rėmelio',
+		scaleFit		: 'Tikslus atitikimas',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Lygiuoti',
+		alignLeft	: 'Kairę',
+		alignAbsBottom: 'Absoliučią apačią',
+		alignAbsMiddle: 'Absoliutų vidurį',
+		alignBaseline	: 'Apatinę liniją',
+		alignBottom	: 'Apačią',
+		alignMiddle	: 'Vidurį',
+		alignRight	: 'Dešinę',
+		alignTextTop	: 'Teksto viršūnę',
+		alignTop	: 'Viršūnę',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Fono spalva',
+		width	: 'Plotis',
+		height	: 'Aukštis',
+		hSpace	: 'Hor.Erdvė',
+		vSpace	: 'Vert.Erdvė',
+		validateSrc : 'Prašome įvesti nuorodos URL',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Rašybos tikrinimas',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Žodyne nerastas',
+		changeTo		: 'Pakeisti į',
+		btnIgnore		: 'Ignoruoti',
+		btnIgnoreAll	: 'Ignoruoti visus',
+		btnReplace		: 'Pakeisti',
+		btnReplaceAll	: 'Pakeisti visus',
+		btnUndo			: 'Atšaukti',
+		noSuggestions	: '- Nėra pasiūlymų -',
+		progress		: 'Vyksta rašybos tikrinimas...',
+		noMispell		: 'Rašybos tikrinimas baigtas: Nerasta rašybos klaidų',
+		noChanges		: 'Rašybos tikrinimas baigtas: Nėra pakeistų žodžių',
+		oneChange		: 'Rašybos tikrinimas baigtas: Vienas žodis pakeistas',
+		manyChanges		: 'Rašybos tikrinimas baigtas: Pakeista %1 žodžių',
+		ieSpellDownload	: 'Rašybos tikrinimas neinstaliuotas. Ar Jūs norite jį dabar atsisiųsti?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Veideliai',
+		title	: 'Įterpti veidelį'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Numeruotas sąrašas',
+	bulletedlist : 'Suženklintas sąrašas',
+	indent : 'Padidinti įtrauką',
+	outdent : 'Sumažinti įtrauką',
+
+	justify :
+	{
+		left : 'Lygiuoti kairę',
+		center : 'Centruoti',
+		right : 'Lygiuoti dešinę',
+		block : 'Lygiuoti abi puses'
+	},
+
+	blockquote : 'Citata',
+
+	clipboard :
+	{
+		title		: 'Įdėti',
+		cutError	: 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+X).',
+		copyError	: 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+C).',
+		pasteMsg	: 'Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (<STRONG>Ctrl+V</STRONG>) ir paspauskite mygtuką <STRONG>OK</STRONG>.',
+		securityMsg	: 'Dėl jūsų naršyklės saugumo nustatymų, redaktorius negali tiesiogiai pasiekti laikinosios atminties. Jums reikia nukopijuoti dar kartą į šį langą.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Įdėti iš Word',
+		title : 'Įdėti iš Word',
+		advice : 'Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (<STRONG>Ctrl+V</STRONG>) ir paspauskite mygtuką <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignoruoti šriftų nustatymus',
+		removeStyle : 'Pašalinti stilių nustatymus'
+	},
+
+	pasteText :
+	{
+		button : 'Įdėti kaip gryną tekstą',
+		title : 'Įdėti kaip gryną tekstą'
+	},
+
+	templates :
+	{
+		button : 'Šablonai',
+		title : 'Turinio šablonai',
+		insertOption: 'Pakeisti dabartinį turinį pasirinktu šablonu',
+		selectPromptMsg: 'Pasirinkite norimą šabloną<br>(<b>Dėmesio!</b> esamas turinys bus prarastas):',
+		emptyListMsg : '(Šablonų sąrašas tuščias)'
+	},
+
+	showBlocks : 'Rodyti blokus',
+
+	stylesCombo :
+	{
+		label : 'Stilius',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Šrifto formatas',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Šrifto formatas',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normalus',
+		tag_pre : 'Formuotas',
+		tag_address : 'Kreipinio',
+		tag_h1 : 'Antraštinis 1',
+		tag_h2 : 'Antraštinis 2',
+		tag_h3 : 'Antraštinis 3',
+		tag_h4 : 'Antraštinis 4',
+		tag_h5 : 'Antraštinis 5',
+		tag_h6 : 'Antraštinis 6',
+		tag_div : 'Normal (DIV)' // MISSING
+	},
+
+	font :
+	{
+		label : 'Šriftas',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Šriftas',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Šrifto dydis',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Šrifto dydis',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Teksto spalva',
+		bgColorTitle : 'Fono spalva',
+		auto : 'Automatinis',
+		more : 'Daugiau spalvų...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/sr-latn.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/sr-latn.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/sr-latn.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Serbian (Latin) language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['sr-latn'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Kôd',
+	newPage			: 'Nova stranica',
+	save			: 'Sačuvaj',
+	preview			: 'Izgled stranice',
+	cut				: 'Iseci',
+	copy			: 'Kopiraj',
+	paste			: 'Zalepi',
+	print			: 'Štampa',
+	underline		: 'Podvučeno',
+	bold			: 'Podebljano',
+	italic			: 'Kurziv',
+	selectAll		: 'Označi sve',
+	removeFormat	: 'Ukloni formatiranje',
+	strike			: 'Precrtano',
+	subscript		: 'Indeks',
+	superscript		: 'Stepen',
+	horizontalrule	: 'Unesi horizontalnu liniju',
+	pagebreak		: 'Insert Page Break for Printing', // MISSING
+	unlink			: 'Ukloni link',
+	undo			: 'Poni�ti akciju',
+	redo			: 'Ponovi akciju',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Pretraži server',
+		url				: 'URL',
+		protocol		: 'Protokol',
+		upload			: 'Pošalji',
+		uploadSubmit	: 'Pošalji na server',
+		image			: 'Slika',
+		flash			: 'Fleš',
+		form			: 'Forma',
+		checkbox		: 'Polje za potvrdu',
+		radio		: 'Radio-dugme',
+		textField		: 'Tekstualno polje',
+		textarea		: 'Zona teksta',
+		hiddenField		: 'Skriveno polje',
+		button			: 'Dugme',
+		select	: 'Izborno polje',
+		imageButton		: 'Dugme sa slikom',
+		notSet			: '<nije postavljeno>',
+		id				: 'Id',
+		name			: 'Naziv',
+		langDir			: 'Smer jezika',
+		langDirLtr		: 'S leva na desno (LTR)',
+		langDirRtl		: 'S desna na levo (RTL)',
+		langCode		: 'Kôd jezika',
+		longDescr		: 'Pun opis URL',
+		cssClass		: 'Stylesheet klase',
+		advisoryTitle	: 'Advisory naslov',
+		cssStyle		: 'Stil',
+		ok				: 'OK',
+		cancel			: 'Otkaži',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Napredni tagovi',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Unesi specijalni karakter',
+		title		: 'Odaberite specijalni karakter'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Unesi/izmeni link',
+		menu		: 'Izmeni link',
+		title		: 'Link',
+		info		: 'Link Info',
+		target		: 'Meta',
+		upload		: 'Pošalji',
+		advanced	: 'Napredni tagovi',
+		type		: 'Vrsta linka',
+		toAnchor	: 'Sidro na ovoj stranici',
+		toEmail		: 'E-Mail',
+		target		: 'Meta',
+		targetNotSet	: '<nije postavljeno>',
+		targetFrame	: '<okvir>',
+		targetPopup	: '<popup prozor>',
+		targetNew	: 'Novi prozor (_blank)',
+		targetTop	: 'Prozor na vrhu (_top)',
+		targetSelf	: 'Isti prozor (_self)',
+		targetParent	: 'Roditeljski prozor (_parent)',
+		targetFrameName	: 'Naziv odredišnog frejma',
+		targetPopupName	: 'Naziv popup prozora',
+		popupFeatures	: 'Mogućnosti popup prozora',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Statusna linija',
+		popupLocationBar	: 'Lokacija',
+		popupToolbar	: 'Toolbar',
+		popupMenuBar	: 'Kontekstni meni',
+		popupFullScreen	: 'Prikaz preko celog ekrana (IE)',
+		popupScrollBars	: 'Scroll bar',
+		popupDependent	: 'Zavisno (Netscape)',
+		popupWidth		: 'Širina',
+		popupLeft		: 'Od leve ivice ekrana (px)',
+		popupHeight		: 'Visina',
+		popupTop		: 'Od vrha ekrana (px)',
+		id				: 'Id', // MISSING
+		langDir			: 'Smer jezika',
+		langDirNotSet	: '<nije postavljeno>',
+		langDirLTR		: 'S leva na desno (LTR)',
+		langDirRTL		: 'S desna na levo (RTL)',
+		acccessKey		: 'Pristupni taster',
+		name			: 'Naziv',
+		langCode		: 'Smer jezika',
+		tabIndex		: 'Tab indeks',
+		advisoryTitle	: 'Advisory naslov',
+		advisoryContentType	: 'Advisory vrsta sadržaja',
+		cssClasses		: 'Stylesheet klase',
+		charset			: 'Linked Resource Charset',
+		styles			: 'Stil',
+		selectAnchor	: 'Odaberi sidro',
+		anchorName		: 'Po nazivu sidra',
+		anchorId		: 'Po Id-ju elementa',
+		emailAddress	: 'E-Mail adresa',
+		emailSubject	: 'Naslov',
+		emailBody		: 'Sadržaj poruke',
+		noAnchors		: '(Nema dostupnih sidra)',
+		noUrl			: 'Unesite URL linka',
+		noEmail			: 'Otkucajte adresu elektronske pote'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Unesi/izmeni sidro',
+		menu		: 'Osobine sidra',
+		title		: 'Osobine sidra',
+		name		: 'Ime sidra',
+		errorName	: 'Unesite ime sidra'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'Pretraga',
+		replace				: 'Zamena',
+		findWhat			: 'Pronadi:',
+		replaceWith			: 'Zameni sa:',
+		notFoundMsg			: 'Traženi tekst nije pronađen.',
+		matchCase			: 'Razlikuj mala i velika slova',
+		matchWord			: 'Uporedi cele reci',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Zameni sve',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabela',
+		title		: 'Osobine tabele',
+		menu		: 'Osobine tabele',
+		deleteTable	: 'Delete Table', // MISSING
+		rows		: 'Redova',
+		columns		: 'Kolona',
+		border		: 'Veličina okvira',
+		align		: 'Ravnanje',
+		alignNotSet	: '<nije postavljeno>',
+		alignLeft	: 'Levo',
+		alignCenter	: 'Sredina',
+		alignRight	: 'Desno',
+		width		: 'Širina',
+		widthPx		: 'piksela',
+		widthPc		: 'procenata',
+		height		: 'Visina',
+		cellSpace	: 'Ćelijski prostor',
+		cellPad		: 'Razmak ćelija',
+		caption		: 'Naslov tabele',
+		summary		: 'Summary', // MISSING
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Cell', // MISSING
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'Obriši ćelije',
+			merge			: 'Spoj celije',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Row', // MISSING
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'Obriši redove'
+		},
+
+		column :
+		{
+			menu			: 'Column', // MISSING
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'Obriši kolone'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Osobine dugmeta',
+		text		: 'Tekst (vrednost)',
+		type		: 'Tip',
+		typeBtn		: 'Button', // MISSING
+		typeSbm		: 'Submit', // MISSING
+		typeRst		: 'Reset' // MISSING
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Osobine polja za potvrdu',
+		radioTitle	: 'Osobine radio-dugmeta',
+		value		: 'Vrednost',
+		selected	: 'Označeno'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Osobine forme',
+		menu		: 'Osobine forme',
+		action		: 'Akcija',
+		method		: 'Metoda',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Meta',
+		targetNotSet	: '<nije postavljeno>',
+		targetNew	: 'Novi prozor (_blank)',
+		targetTop	: 'Prozor na vrhu (_top)',
+		targetSelf	: 'Isti prozor (_self)',
+		targetParent	: 'Roditeljski prozor (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Osobine izbornog polja',
+		selectInfo	: 'Info',
+		opAvail		: 'Dostupne opcije',
+		value		: 'Vrednost',
+		size		: 'Veličina',
+		lines		: 'linija',
+		chkMulti	: 'Dozvoli višestruku selekciju',
+		opText		: 'Tekst',
+		opValue		: 'Vrednost',
+		btnAdd		: 'Dodaj',
+		btnModify	: 'Izmeni',
+		btnUp		: 'Gore',
+		btnDown		: 'Dole',
+		btnSetValue : 'Podesi kao označenu vrednost',
+		btnDelete	: 'Obriši'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Osobine zone teksta',
+		cols		: 'Broj kolona',
+		rows		: 'Broj redova'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Osobine tekstualnog polja',
+		name		: 'Naziv',
+		value		: 'Vrednost',
+		charWidth	: 'Širina (karaktera)',
+		maxChars	: 'Maksimalno karaktera',
+		type		: 'Tip',
+		typeText	: 'Tekst',
+		typePass	: 'Lozinka'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Osobine skrivenog polja',
+		name	: 'Naziv',
+		value	: 'Vrednost'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Osobine slika',
+		titleButton	: 'Osobine dugmeta sa slikom',
+		menu		: 'Osobine slika',
+		infoTab	: 'Info slike',
+		btnUpload	: 'Pošalji na server',
+		url		: 'URL',
+		upload	: 'Pošalji',
+		alt		: 'Alternativni tekst',
+		width		: 'Širina',
+		height	: 'Visina',
+		lockRatio	: 'Zaključaj odnos',
+		resetSize	: 'Resetuj veličinu',
+		border	: 'Okvir',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		align		: 'Ravnanje',
+		alignLeft	: 'Levo',
+		alignAbsBottom: 'Abs dole',
+		alignAbsMiddle: 'Abs sredina',
+		alignBaseline	: 'Bazno',
+		alignBottom	: 'Dole',
+		alignMiddle	: 'Sredina',
+		alignRight	: 'Desno',
+		alignTextTop	: 'Vrh teksta',
+		alignTop	: 'Vrh',
+		preview	: 'Izgled',
+		alertUrl	: 'Unesite URL slike',
+		linkTab	: 'Link',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Osobine fleša',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Osobine fleša',
+		chkPlay		: 'Automatski start',
+		chkLoop		: 'Ponavljaj',
+		chkMenu		: 'Uključi fleš meni',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Skaliraj',
+		scaleAll		: 'Prikaži sve',
+		scaleNoBorder	: 'Bez ivice',
+		scaleFit		: 'Popuni površinu',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Ravnanje',
+		alignLeft	: 'Levo',
+		alignAbsBottom: 'Abs dole',
+		alignAbsMiddle: 'Abs sredina',
+		alignBaseline	: 'Bazno',
+		alignBottom	: 'Dole',
+		alignMiddle	: 'Sredina',
+		alignRight	: 'Desno',
+		alignTextTop	: 'Vrh teksta',
+		alignTop	: 'Vrh',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Boja pozadine',
+		width	: 'Širina',
+		height	: 'Visina',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		validateSrc : 'Unesite URL linka',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Proveri spelovanje',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Nije u rečniku',
+		changeTo		: 'Izmeni',
+		btnIgnore		: 'Ignoriši',
+		btnIgnoreAll	: 'Ignoriši sve',
+		btnReplace		: 'Zameni',
+		btnReplaceAll	: 'Zameni sve',
+		btnUndo			: 'Vrati akciju',
+		noSuggestions	: '- Bez sugestija -',
+		progress		: 'Provera spelovanja u toku...',
+		noMispell		: 'Provera spelovanja završena: greške nisu pronadene',
+		noChanges		: 'Provera spelovanja završena: Nije izmenjena nijedna rec',
+		oneChange		: 'Provera spelovanja završena: Izmenjena je jedna reč',
+		manyChanges		: 'Provera spelovanja završena: %1 reč(i) je izmenjeno',
+		ieSpellDownload	: 'Provera spelovanja nije instalirana. Da li želite da je skinete sa Interneta?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smajli',
+		title	: 'Unesi smajlija'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Nabrojiva lista',
+	bulletedlist : 'Nenabrojiva lista',
+	indent : 'Uvećaj levu marginu',
+	outdent : 'Smanji levu marginu',
+
+	justify :
+	{
+		left : 'Levo ravnanje',
+		center : 'Centriran tekst',
+		right : 'Desno ravnanje',
+		block : 'Obostrano ravnanje'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Zalepi',
+		cutError	: 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl+X).',
+		copyError	: 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl+C).',
+		pasteMsg	: 'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (<STRONG>Ctrl+V</STRONG>) i da pritisnete <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Zalepi iz Worda',
+		title : 'Zalepi iz Worda',
+		advice : 'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (<STRONG>Ctrl+V</STRONG>) i da pritisnete <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignoriši definicije fontova',
+		removeStyle : 'Ukloni definicije stilova'
+	},
+
+	pasteText :
+	{
+		button : 'Zalepi kao čist tekst',
+		title : 'Zalepi kao čist tekst'
+	},
+
+	templates :
+	{
+		button : 'Obrasci',
+		title : 'Obrasci za sadržaj',
+		insertOption: 'Replace actual contents', // MISSING
+		selectPromptMsg: 'Molimo Vas da odaberete obrazac koji ce biti primenjen na stranicu (trenutni sadržaj ce biti obrisan):',
+		emptyListMsg : '(Nema definisanih obrazaca)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Stil',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Format',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatirano',
+		tag_address : 'Adresa',
+		tag_h1 : 'Naslov 1',
+		tag_h2 : 'Naslov 2',
+		tag_h3 : 'Naslov 3',
+		tag_h4 : 'Naslov 4',
+		tag_h5 : 'Naslov 5',
+		tag_h6 : 'Naslov 6',
+		tag_div : 'Normal (DIV)' // MISSING
+	},
+
+	font :
+	{
+		label : 'Font',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Font',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Veličina fonta',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Veličina fonta',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Boja teksta',
+		bgColorTitle : 'Boja pozadine',
+		auto : 'Automatski',
+		more : 'Više boja...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/lv.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/lv.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/lv.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Latvian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['lv'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'HTML kods',
+	newPage			: 'Jauna lapa',
+	save			: 'Saglabāt',
+	preview			: 'Pārskatīt',
+	cut				: 'Izgriezt',
+	copy			: 'Kopēt',
+	paste			: 'Ievietot',
+	print			: 'Drukāt',
+	underline		: 'Apakšsvītra',
+	bold			: 'Treknu šriftu',
+	italic			: 'Slīprakstā',
+	selectAll		: 'Iezīmēt visu',
+	removeFormat	: 'Noņemt stilus',
+	strike			: 'Pārsvītrots',
+	subscript		: 'Zemrakstā',
+	superscript		: 'Augšrakstā',
+	horizontalrule	: 'Ievietot horizontālu Atdalītājsvītru',
+	pagebreak		: 'Ievietot lapas pārtraukumu',
+	unlink			: 'Noņemt hipersaiti',
+	undo			: 'Atcelt',
+	redo			: 'Atkārtot',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Skatīt servera saturu',
+		url				: 'URL',
+		protocol		: 'Protokols',
+		upload			: 'Augšupielādēt',
+		uploadSubmit	: 'Nosūtīt serverim',
+		image			: 'Attēls',
+		flash			: 'Flash',
+		form			: 'Forma',
+		checkbox		: 'Atzīmēšanas kastīte',
+		radio		: 'Izvēles poga',
+		textField		: 'Teksta rinda',
+		textarea		: 'Teksta laukums',
+		hiddenField		: 'Paslēpta teksta rinda',
+		button			: 'Poga',
+		select	: 'Iezīmēšanas lauks',
+		imageButton		: 'Attēlpoga',
+		notSet			: '<nav iestatīts>',
+		id				: 'Id',
+		name			: 'Nosaukums',
+		langDir			: 'Valodas lasīšanas virziens',
+		langDirLtr		: 'No kreisās uz labo (LTR)',
+		langDirRtl		: 'No labās uz kreiso (RTL)',
+		langCode		: 'Valodas kods',
+		longDescr		: 'Gara apraksta Hipersaite',
+		cssClass		: 'Stilu saraksta klases',
+		advisoryTitle	: 'Konsultatīvs virsraksts',
+		cssStyle		: 'Stils',
+		ok				: 'Darīts!',
+		cancel			: 'Atcelt',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Izvērstais',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Ievietot speciālo simbolu',
+		title		: 'Ievietot īpašu simbolu'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Ievietot/Labot hipersaiti',
+		menu		: 'Labot hipersaiti',
+		title		: 'Hipersaite',
+		info		: 'Hipersaites informācija',
+		target		: 'Mērķis',
+		upload		: 'Augšupielādēt',
+		advanced	: 'Izvērstais',
+		type		: 'Hipersaites tips',
+		toAnchor	: 'Iezīme šajā lapā',
+		toEmail		: 'E-pasts',
+		target		: 'Mērķis',
+		targetNotSet	: '<nav iestatīts>',
+		targetFrame	: '<ietvars>',
+		targetPopup	: '<uznirstošā logā>',
+		targetNew	: 'Jaunā logā (_blank)',
+		targetTop	: 'Visredzamākajā logā (_top)',
+		targetSelf	: 'Tajā pašā logā (_self)',
+		targetParent	: 'Esošajā logā (_parent)',
+		targetFrameName	: 'Mērķa ietvara nosaukums',
+		targetPopupName	: 'Uznirstošā loga nosaukums',
+		popupFeatures	: 'Uznirstošā loga nosaukums īpašības',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Statusa josla',
+		popupLocationBar	: 'Atrašanās vietas josla',
+		popupToolbar	: 'Rīku josla',
+		popupMenuBar	: 'Izvēlnes josla',
+		popupFullScreen	: 'Pilnā ekrānā (IE)',
+		popupScrollBars	: 'Ritjoslas',
+		popupDependent	: 'Atkarīgs (Netscape)',
+		popupWidth		: 'Platums',
+		popupLeft		: 'Kreisā koordināte',
+		popupHeight		: 'Augstums',
+		popupTop		: 'Augšējā koordināte',
+		id				: 'Id', // MISSING
+		langDir			: 'Valodas lasīšanas virziens',
+		langDirNotSet	: '<nav iestatīts>',
+		langDirLTR		: 'No kreisās uz labo (LTR)',
+		langDirRTL		: 'No labās uz kreiso (RTL)',
+		acccessKey		: 'Pieejas kods',
+		name			: 'Nosaukums',
+		langCode		: 'Valodas lasīšanas virziens',
+		tabIndex		: 'Ciļņu indekss',
+		advisoryTitle	: 'Konsultatīvs virsraksts',
+		advisoryContentType	: 'Konsultatīvs satura tips',
+		cssClasses		: 'Stilu saraksta klases',
+		charset			: 'Pievienotā resursa kodu tabula',
+		styles			: 'Stils',
+		selectAnchor	: 'Izvēlēties iezīmi',
+		anchorName		: 'Pēc iezīmes nosaukuma',
+		anchorId		: 'Pēc elementa ID',
+		emailAddress	: 'E-pasta adrese',
+		emailSubject	: 'Ziņas tēma',
+		emailBody		: 'Ziņas saturs',
+		noAnchors		: '(Šajā dokumentā nav iezīmju)',
+		noUrl			: 'Lūdzu norādi hipersaiti',
+		noEmail			: 'Lūdzu norādi e-pasta adresi'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Ievietot/Labot iezīmi',
+		menu		: 'Iezīmes īpašības',
+		title		: 'Iezīmes īpašības',
+		name		: 'Iezīmes nosaukums',
+		errorName	: 'Lūdzu norādiet iezīmes nosaukumu'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'Meklēt',
+		replace				: 'Nomainīt',
+		findWhat			: 'Meklēt:',
+		replaceWith			: 'Nomainīt uz:',
+		notFoundMsg			: 'Norādītā frāze netika atrasta.',
+		matchCase			: 'Reģistrjūtīgs',
+		matchWord			: 'Jāsakrīt pilnībā',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Aizvietot visu',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabula',
+		title		: 'Tabulas īpašības',
+		menu		: 'Tabulas īpašības',
+		deleteTable	: 'Dzēst tabulu',
+		rows		: 'Rindas',
+		columns		: 'Kolonnas',
+		border		: 'Rāmja izmērs',
+		align		: 'Novietojums',
+		alignNotSet	: '<nav norādīts>',
+		alignLeft	: 'Pa kreisi',
+		alignCenter	: 'Centrēti',
+		alignRight	: 'Pa labi',
+		width		: 'Platums',
+		widthPx		: 'pikseļos',
+		widthPc		: 'procentuāli',
+		height		: 'Augstums',
+		cellSpace	: 'Rūtiņu atstatums',
+		cellPad		: 'Rūtiņu nobīde',
+		caption		: 'Leģenda',
+		summary		: 'Anotācija',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Šūna',
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'Dzēst rūtiņas',
+			merge			: 'Apvienot rūtiņas',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Rinda',
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'Dzēst rindas'
+		},
+
+		column :
+		{
+			menu			: 'Kolonna',
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'Dzēst kolonnas'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Pogas īpašības',
+		text		: 'Teksts (vērtība)',
+		type		: 'Tips',
+		typeBtn		: 'Button', // MISSING
+		typeSbm		: 'Submit', // MISSING
+		typeRst		: 'Reset' // MISSING
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Atzīmēšanas kastītes īpašības',
+		radioTitle	: 'Izvēles poga īpašības',
+		value		: 'Vērtība',
+		selected	: 'Iezīmēts'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Formas īpašības',
+		menu		: 'Formas īpašības',
+		action		: 'Darbība',
+		method		: 'Metode',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Mērķis',
+		targetNotSet	: '<nav iestatīts>',
+		targetNew	: 'Jaunā logā (_blank)',
+		targetTop	: 'Visredzamākajā logā (_top)',
+		targetSelf	: 'Tajā pašā logā (_self)',
+		targetParent	: 'Esošajā logā (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Iezīmēšanas lauka īpašības',
+		selectInfo	: 'Informācija',
+		opAvail		: 'Pieejamās iespējas',
+		value		: 'Vērtība',
+		size		: 'Izmērs',
+		lines		: 'rindas',
+		chkMulti	: 'Atļaut vairākus iezīmējumus',
+		opText		: 'Teksts',
+		opValue		: 'Vērtība',
+		btnAdd		: 'Pievienot',
+		btnModify	: 'Veikt izmaiņas',
+		btnUp		: 'Augšup',
+		btnDown		: 'Lejup',
+		btnSetValue : 'Noteikt kā iezīmēto vērtību',
+		btnDelete	: 'Dzēst'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Teksta laukuma īpašības',
+		cols		: 'Kolonnas',
+		rows		: 'Rindas'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Teksta rindas  īpašības',
+		name		: 'Nosaukums',
+		value		: 'Vērtība',
+		charWidth	: 'Simbolu platums',
+		maxChars	: 'Simbolu maksimālais daudzums',
+		type		: 'Tips',
+		typeText	: 'Teksts',
+		typePass	: 'Parole'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Paslēptās teksta rindas īpašības',
+		name	: 'Nosaukums',
+		value	: 'Vērtība'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Attēla īpašības',
+		titleButton	: 'Attēlpogas īpašības',
+		menu		: 'Attēla īpašības',
+		infoTab	: 'Informācija par attēlu',
+		btnUpload	: 'Nosūtīt serverim',
+		url		: 'URL',
+		upload	: 'Augšupielādēt',
+		alt		: 'Alternatīvais teksts',
+		width		: 'Platums',
+		height	: 'Augstums',
+		lockRatio	: 'Nemainīga Augstuma/Platuma attiecība',
+		resetSize	: 'Atjaunot sākotnējo izmēru',
+		border	: 'Rāmis',
+		hSpace	: 'Horizontālā telpa',
+		vSpace	: 'Vertikālā telpa',
+		align		: 'Nolīdzināt',
+		alignLeft	: 'Pa kreisi',
+		alignAbsBottom: 'Absolūti apakšā',
+		alignAbsMiddle: 'Absolūti vertikāli centrēts',
+		alignBaseline	: 'Pamatrindā',
+		alignBottom	: 'Apakšā',
+		alignMiddle	: 'Vertikāli centrēts',
+		alignRight	: 'Pa labi',
+		alignTextTop	: 'Teksta augšā',
+		alignTop	: 'Augšā',
+		preview	: 'Pārskats',
+		alertUrl	: 'Lūdzu norādīt attēla hipersaiti',
+		linkTab	: 'Hipersaite',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash īpašības',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flash īpašības',
+		chkPlay		: 'Automātiska atskaņošana',
+		chkLoop		: 'Nepārtraukti',
+		chkMenu		: 'Atļaut Flash izvēlni',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Mainīt izmēru',
+		scaleAll		: 'Rādīt visu',
+		scaleNoBorder	: 'Bez rāmja',
+		scaleFit		: 'Precīzs izmērs',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Nolīdzināt',
+		alignLeft	: 'Pa kreisi',
+		alignAbsBottom: 'Absolūti apakšā',
+		alignAbsMiddle: 'Absolūti vertikāli centrēts',
+		alignBaseline	: 'Pamatrindā',
+		alignBottom	: 'Apakšā',
+		alignMiddle	: 'Vertikāli centrēts',
+		alignRight	: 'Pa labi',
+		alignTextTop	: 'Teksta augšā',
+		alignTop	: 'Augšā',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Fona krāsa',
+		width	: 'Platums',
+		height	: 'Augstums',
+		hSpace	: 'Horizontālā telpa',
+		vSpace	: 'Vertikālā telpa',
+		validateSrc : 'Lūdzu norādi hipersaiti',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Pareizrakstības pārbaude',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Netika atrasts vārdnīcā',
+		changeTo		: 'Nomainīt uz',
+		btnIgnore		: 'Ignorēt',
+		btnIgnoreAll	: 'Ignorēt visu',
+		btnReplace		: 'Aizvietot',
+		btnReplaceAll	: 'Aizvietot visu',
+		btnUndo			: 'Atcelt',
+		noSuggestions	: '- Nav ieteikumu -',
+		progress		: 'Notiek pareizrakstības pārbaude...',
+		noMispell		: 'Pareizrakstības pārbaude pabeigta: kļūdas netika atrastas',
+		noChanges		: 'Pareizrakstības pārbaude pabeigta: nekas netika labots',
+		oneChange		: 'Pareizrakstības pārbaude pabeigta: 1 vārds izmainīts',
+		manyChanges		: 'Pareizrakstības pārbaude pabeigta: %1 vārdi tika mainīti',
+		ieSpellDownload	: 'Pareizrakstības pārbaudītājs nav pievienots. Vai vēlaties to lejupielādēt tagad?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smaidiņi',
+		title	: 'Ievietot smaidiņu'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Numurēts saraksts',
+	bulletedlist : 'Izcelts saraksts',
+	indent : 'Palielināt atkāpi',
+	outdent : 'Samazināt atkāpi',
+
+	justify :
+	{
+		left : 'Izlīdzināt pa kreisi',
+		center : 'Izlīdzināt pret centru',
+		right : 'Izlīdzināt pa labi',
+		block : 'Izlīdzināt malas'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Ievietot',
+		cutError	: 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt izgriešanas darbību.  Lūdzu, izmantojiet (Ctrl+X, lai veiktu šo darbību.',
+		copyError	: 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt kopēšanas darbību.  Lūdzu, izmantojiet (Ctrl+C), lai veiktu šo darbību.',
+		pasteMsg	: 'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (<STRONG>Ctrl+V</STRONG>) un apstipriniet ar <STRONG>Darīts!</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Ievietot no Worda',
+		title : 'Ievietot no Worda',
+		advice : 'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (<STRONG>Ctrl+V</STRONG>) un apstipriniet ar <STRONG>Darīts!</STRONG>.',
+		ignoreFontFace : 'Ignorēt iepriekš norādītos fontus',
+		removeStyle : 'Noņemt norādītos stilus'
+	},
+
+	pasteText :
+	{
+		button : 'Ievietot kā vienkāršu tekstu',
+		title : 'Ievietot kā vienkāršu tekstu'
+	},
+
+	templates :
+	{
+		button : 'Sagataves',
+		title : 'Satura sagataves',
+		insertOption: 'Replace actual contents', // MISSING
+		selectPromptMsg: 'Lūdzu, norādiet sagatavi, ko atvērt editorā<br>(patreizējie dati tiks zaudēti):',
+		emptyListMsg : '(Nav norādītas sagataves)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Stils',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Formāts',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Formāts',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normāls teksts',
+		tag_pre : 'Formatēts teksts',
+		tag_address : 'Adrese',
+		tag_h1 : 'Virsraksts 1',
+		tag_h2 : 'Virsraksts 2',
+		tag_h3 : 'Virsraksts 3',
+		tag_h4 : 'Virsraksts 4',
+		tag_h5 : 'Virsraksts 5',
+		tag_h6 : 'Virsraksts 6',
+		tag_div : 'Rindkopa (DIV)'
+	},
+
+	font :
+	{
+		label : 'Šrifts',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Šrifts',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Izmērs',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Izmērs',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Teksta krāsa',
+		bgColorTitle : 'Fona krāsa',
+		auto : 'Automātiska',
+		more : 'Plašāka palete...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/zh.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/zh.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/zh.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Chinese Traditional language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['zh'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: '文書處理器, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: '原始碼',
+	newPage			: '開新檔案',
+	save			: '儲存',
+	preview			: '預覽',
+	cut				: '剪下',
+	copy			: '複製',
+	paste			: '貼上',
+	print			: '列印',
+	underline		: '底線',
+	bold			: '粗體',
+	italic			: '斜體',
+	selectAll		: '全選',
+	removeFormat	: '清除格式',
+	strike			: '刪除線',
+	subscript		: '下標',
+	superscript		: '上標',
+	horizontalrule	: '插入水平線',
+	pagebreak		: '插入分頁符號',
+	unlink			: '移除超連結',
+	undo			: '復原',
+	redo			: '重複',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: '瀏覽伺服器端',
+		url				: 'URL',
+		protocol		: '通訊協定',
+		upload			: '上傳',
+		uploadSubmit	: '上傳至伺服器',
+		image			: '影像',
+		flash			: 'Flash',
+		form			: '表單',
+		checkbox		: '核取方塊',
+		radio		: '選項按鈕',
+		textField		: '文字方塊',
+		textarea		: '文字區域',
+		hiddenField		: '隱藏欄位',
+		button			: '按鈕',
+		select	: '清單/選單',
+		imageButton		: '影像按鈕',
+		notSet			: '<尚未設定>',
+		id				: 'ID',
+		name			: '名稱',
+		langDir			: '語言方向',
+		langDirLtr		: '由左而右 (LTR)',
+		langDirRtl		: '由右而左 (RTL)',
+		langCode		: '語言代碼',
+		longDescr		: '詳細 URL',
+		cssClass		: '樣式表類別',
+		advisoryTitle	: '標題',
+		cssStyle		: '樣式',
+		ok				: '確定',
+		cancel			: '取消',
+		generalTab		: '一般',
+		advancedTab		: '進階',
+		validateNumberFailed	: '需要輸入數字格式',
+		confirmNewPage	: '現存的修改尚未儲存，要開新檔案？',
+		confirmCancel	: '部份選項尚未儲存，要關閉對話盒？',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, 已關閉</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: '插入特殊符號',
+		title		: '請選擇特殊符號'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: '插入/編輯超連結',
+		menu		: '編輯超連結',
+		title		: '超連結',
+		info		: '超連結資訊',
+		target		: '目標',
+		upload		: '上傳',
+		advanced	: '進階',
+		type		: '超連接類型',
+		toAnchor	: '本頁錨點',
+		toEmail		: '電子郵件',
+		target		: '目標',
+		targetNotSet	: '<尚未設定>',
+		targetFrame	: '<框架>',
+		targetPopup	: '<快顯視窗>',
+		targetNew	: '新視窗 (_blank)',
+		targetTop	: '最上層視窗 (_top)',
+		targetSelf	: '本視窗 (_self)',
+		targetParent	: '父視窗 (_parent)',
+		targetFrameName	: '目標框架名稱',
+		targetPopupName	: '快顯視窗名稱',
+		popupFeatures	: '快顯視窗屬性',
+		popupResizable	: '可縮放',
+		popupStatusBar	: '狀態列',
+		popupLocationBar	: '網址列',
+		popupToolbar	: '工具列',
+		popupMenuBar	: '選單列',
+		popupFullScreen	: '全螢幕 (IE)',
+		popupScrollBars	: '捲軸',
+		popupDependent	: '從屬 (NS)',
+		popupWidth		: '寬',
+		popupLeft		: '左',
+		popupHeight		: '高',
+		popupTop		: '右',
+		id				: 'ID',
+		langDir			: '語言方向',
+		langDirNotSet	: '<尚未設定>',
+		langDirLTR		: '由左而右 (LTR)',
+		langDirRTL		: '由右而左 (RTL)',
+		acccessKey		: '存取鍵',
+		name			: '名稱',
+		langCode		: '語言方向',
+		tabIndex		: '定位順序',
+		advisoryTitle	: '標題',
+		advisoryContentType	: '內容類型',
+		cssClasses		: '樣式表類別',
+		charset			: '連結資源之編碼',
+		styles			: '樣式',
+		selectAnchor	: '請選擇錨點',
+		anchorName		: '依錨點名稱',
+		anchorId		: '依元件 ID',
+		emailAddress	: '電子郵件',
+		emailSubject	: '郵件主旨',
+		emailBody		: '郵件內容',
+		noAnchors		: '(本文件尚無可用之錨點)',
+		noUrl			: '請輸入欲連結的 URL',
+		noEmail			: '請輸入電子郵件位址'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: '插入/編輯錨點',
+		menu		: '錨點屬性',
+		title		: '錨點屬性',
+		name		: '錨點名稱',
+		errorName	: '請輸入錨點名稱'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: '尋找與取代',
+		find				: '尋找',
+		replace				: '取代',
+		findWhat			: '尋找:',
+		replaceWith			: '取代:',
+		notFoundMsg			: '未找到指定的文字。',
+		matchCase			: '大小寫須相符',
+		matchWord			: '全字相符',
+		matchCyclic			: '循環搜索',
+		replaceAll			: '全部取代',
+		replaceSuccessMsg	: '共完成 %1 次取代'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: '表格',
+		title		: '表格屬性',
+		menu		: '表格屬性',
+		deleteTable	: '刪除表格',
+		rows		: '列數',
+		columns		: '欄數',
+		border		: '邊框',
+		align		: '對齊',
+		alignNotSet	: '<未設定>',
+		alignLeft	: '靠左對齊',
+		alignCenter	: '置中',
+		alignRight	: '靠右對齊',
+		width		: '寬度',
+		widthPx		: '像素',
+		widthPc		: '百分比',
+		height		: '高度',
+		cellSpace	: '間距',
+		cellPad		: '內距',
+		caption		: '標題',
+		summary		: '摘要',
+		headers		: '標題',
+		headersNone		: '無標題',
+		headersColumn	: '第一欄',
+		headersRow		: '第一列',
+		headersBoth		: '第一欄和第一列',
+		invalidRows		: '必須有一或更多的列',
+		invalidCols		: '必須有一或更多的欄',
+		invalidBorder	: '邊框大小必須為數字格式',
+		invalidWidth	: '表格寬度必須為數字格式',
+		invalidHeight	: '表格高度必須為數字格式',
+		invalidCellSpacing	: '儲存格間距必須為數字格式',
+		invalidCellPadding	: '儲存格內距必須為數字格式',
+
+		cell :
+		{
+			menu			: '儲存格',
+			insertBefore	: '向左插入儲存格',
+			insertAfter		: '向右插入儲存格',
+			deleteCell		: '刪除儲存格',
+			merge			: '合併儲存格',
+			mergeRight		: '向右合併儲存格',
+			mergeDown		: '向下合併儲存格',
+			splitHorizontal	: '橫向分割儲存格',
+			splitVertical	: '縱向分割儲存格',
+			title			: '儲存格屬性',
+			cellType		: '儲存格類別',
+			rowSpan			: '儲存格列數',
+			colSpan			: '儲存格欄數',
+			wordWrap		: '自動換行',
+			hAlign			: '水平對齊',
+			vAlign			: '垂直對齊',
+			alignTop		: '向上對齊',
+			alignMiddle		: '置中對齊',
+			alignBottom		: '向下對齊',
+			alignBaseline	: '基線對齊',
+			bgColor			: '背景顏色',
+			borderColor		: '邊框顏色',
+			data			: '數據',
+			header			: '標題',
+			yes				: '是',
+			no				: '否',
+			invalidWidth	: '儲存格寬度必須為數字格式',
+			invalidHeight	: '儲存格高度必須為數字格式',
+			invalidRowSpan	: '儲存格列數必須為整數格式',
+			invalidColSpan	: '儲存格欄數度必須為整數格式',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: '列',
+			insertBefore	: '向上插入列',
+			insertAfter		: '向下插入列',
+			deleteRow		: '刪除列'
+		},
+
+		column :
+		{
+			menu			: '欄',
+			insertBefore	: '向左插入欄',
+			insertAfter		: '向右插入欄',
+			deleteColumn	: '刪除欄'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: '按鈕屬性',
+		text		: '顯示文字 (值)',
+		type		: '類型',
+		typeBtn		: '按鈕 (Button)',
+		typeSbm		: '送出 (Submit)',
+		typeRst		: '重設 (Reset)'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : '核取方塊屬性',
+		radioTitle	: '選項按鈕屬性',
+		value		: '選取值',
+		selected	: '已選取'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: '表單屬性',
+		menu		: '表單屬性',
+		action		: '動作',
+		method		: '方法',
+		encoding	: '表單編碼',
+		target		: '目標',
+		targetNotSet	: '<尚未設定>',
+		targetNew	: '新視窗 (_blank)',
+		targetTop	: '最上層視窗 (_top)',
+		targetSelf	: '本視窗 (_self)',
+		targetParent	: '父視窗 (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: '清單/選單屬性',
+		selectInfo	: '資訊',
+		opAvail		: '可用選項',
+		value		: '值',
+		size		: '大小',
+		lines		: '行',
+		chkMulti	: '可多選',
+		opText		: '顯示文字',
+		opValue		: '選取值',
+		btnAdd		: '新增',
+		btnModify	: '修改',
+		btnUp		: '上移',
+		btnDown		: '下移',
+		btnSetValue : '設為預設值',
+		btnDelete	: '刪除'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: '文字區域屬性',
+		cols		: '字元寬度',
+		rows		: '列數'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: '文字方塊屬性',
+		name		: '名稱',
+		value		: '值',
+		charWidth	: '字元寬度',
+		maxChars	: '最多字元數',
+		type		: '類型',
+		typeText	: '文字',
+		typePass	: '密碼'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: '隱藏欄位屬性',
+		name	: '名稱',
+		value	: '值'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: '影像屬性',
+		titleButton	: '影像按鈕屬性',
+		menu		: '影像屬性',
+		infoTab	: '影像資訊',
+		btnUpload	: '上傳至伺服器',
+		url		: 'URL',
+		upload	: '上傳',
+		alt		: '替代文字',
+		width		: '寬度',
+		height	: '高度',
+		lockRatio	: '等比例',
+		resetSize	: '重設為原大小',
+		border	: '邊框',
+		hSpace	: '水平距離',
+		vSpace	: '垂直距離',
+		align		: '對齊',
+		alignLeft	: '靠左對齊',
+		alignAbsBottom: '絕對下方',
+		alignAbsMiddle: '絕對中間',
+		alignBaseline	: '基準線',
+		alignBottom	: '靠下對齊',
+		alignMiddle	: '置中對齊',
+		alignRight	: '靠右對齊',
+		alignTextTop	: '文字上方',
+		alignTop	: '靠上對齊',
+		preview	: '預覽',
+		alertUrl	: '請輸入影像 URL',
+		linkTab	: '超連結',
+		button2Img	: '要把影像按鈕改成影像嗎？',
+		img2Button	: '要把影像改成影像按鈕嗎？',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash 屬性',
+		propertiesTab	: '屬性',
+		title		: 'Flash 屬性',
+		chkPlay		: '自動播放',
+		chkLoop		: '重複',
+		chkMenu		: '開啟選單',
+		chkFull		: '啟動全螢幕顯示',
+ 		scale		: '縮放',
+		scaleAll		: '全部顯示',
+		scaleNoBorder	: '無邊框',
+		scaleFit		: '精確符合',
+		access			: '允許腳本訪問',
+		accessAlways	: '永遠',
+		accessSameDomain	: '相同域名',
+		accessNever	: '永不',
+		align		: '對齊',
+		alignLeft	: '靠左對齊',
+		alignAbsBottom: '絕對下方',
+		alignAbsMiddle: '絕對中間',
+		alignBaseline	: '基準線',
+		alignBottom	: '靠下對齊',
+		alignMiddle	: '置中對齊',
+		alignRight	: '靠右對齊',
+		alignTextTop	: '文字上方',
+		alignTop	: '靠上對齊',
+		quality		: '質素',
+		qualityBest		 : '最好',
+		qualityHigh		 : '高',
+		qualityAutoHigh	 : '高（自動）',
+		qualityMedium	 : '中（自動）',
+		qualityAutoLow	 : '低（自動）',
+		qualityLow		 : '低',
+		windowModeWindow	 : '視窗',
+		windowModeOpaque	 : '不透明',
+		windowModeTransparent	 : '透明',
+		windowMode	: '視窗模式',
+		flashvars	: 'Flash 變數',
+		bgcolor	: '背景顏色',
+		width	: '寬度',
+		height	: '高度',
+		hSpace	: '水平距離',
+		vSpace	: '垂直距離',
+		validateSrc : '請輸入欲連結的 URL',
+		validateWidth : '寬度必須為數字格式',
+		validateHeight : '高度必須為數字格式',
+		validateHSpace : '水平間距必須為數字格式',
+		validateVSpace : '垂直間距必須為數字格式'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: '拼字檢查',
+		title			: '拼字檢查',
+		notAvailable	: '抱歉，服務目前暫不可用',
+		errorLoading	: '無法聯系侍服器: %s.',
+		notInDic		: '不在字典中',
+		changeTo		: '更改為',
+		btnIgnore		: '忽略',
+		btnIgnoreAll	: '全部忽略',
+		btnReplace		: '取代',
+		btnReplaceAll	: '全部取代',
+		btnUndo			: '復原',
+		noSuggestions	: '- 無建議值 -',
+		progress		: '進行拼字檢查中…',
+		noMispell		: '拼字檢查完成：未發現拼字錯誤',
+		noChanges		: '拼字檢查完成：未更改任何單字',
+		oneChange		: '拼字檢查完成：更改了 1 個單字',
+		manyChanges		: '拼字檢查完成：更改了 %1 個單字',
+		ieSpellDownload	: '尚未安裝拼字檢查元件。您是否想要現在下載？'
+	},
+
+	smiley :
+	{
+		toolbar	: '表情符號',
+		title	: '插入表情符號'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 元素'
+	},
+
+	numberedlist : '編號清單',
+	bulletedlist : '項目清單',
+	indent : '增加縮排',
+	outdent : '減少縮排',
+
+	justify :
+	{
+		left : '靠左對齊',
+		center : '置中',
+		right : '靠右對齊',
+		block : '左右對齊'
+	},
+
+	blockquote : '引用文字',
+
+	clipboard :
+	{
+		title		: '貼上',
+		cutError	: '瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用快捷鍵 (Ctrl+X) 剪下。',
+		copyError	: '瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用快捷鍵 (Ctrl+C) 複製。',
+		pasteMsg	: '請使用快捷鍵 (<strong>Ctrl+V</strong>) 貼到下方區域中並按下 <strong>確定</strong>',
+		securityMsg	: '因為瀏覽器的安全性設定，本編輯器無法直接存取您的剪貼簿資料，請您自行在本視窗進行貼上動作。'
+	},
+
+	pastefromword :
+	{
+		toolbar : '自 Word 貼上',
+		title : '自 Word 貼上',
+		advice : '請使用快捷鍵 (<strong>Ctrl+V</strong>) 貼到下方區域中並按下 <strong>確定</strong>',
+		ignoreFontFace : '移除字型設定',
+		removeStyle : '移除樣式設定'
+	},
+
+	pasteText :
+	{
+		button : '貼為純文字格式',
+		title : '貼為純文字格式'
+	},
+
+	templates :
+	{
+		button : '樣版',
+		title : '內容樣版',
+		insertOption: '取代原有內容',
+		selectPromptMsg: '請選擇欲開啟的樣版<br> (原有的內容將會被清除):',
+		emptyListMsg : '(無樣版)'
+	},
+
+	showBlocks : '顯示區塊',
+
+	stylesCombo :
+	{
+		label : '樣式',
+		voiceLabel : '樣式',
+		panelVoiceLabel : '選擇樣式',
+		panelTitle1 : '塊級元素樣式',
+		panelTitle2 : '內聯元素樣式',
+		panelTitle3 : '物件元素樣式'
+	},
+
+	format :
+	{
+		label : '格式',
+		voiceLabel : '格式',
+		panelTitle : '格式',
+		panelVoiceLabel : '選擇段落格式',
+
+		tag_p : '一般',
+		tag_pre : '已格式化',
+		tag_address : '位址',
+		tag_h1 : '標題 1',
+		tag_h2 : '標題 2',
+		tag_h3 : '標題 3',
+		tag_h4 : '標題 4',
+		tag_h5 : '標題 5',
+		tag_h6 : '標題 6',
+		tag_div : '一般 (DIV)'
+	},
+
+	font :
+	{
+		label : '字體',
+		voiceLabel : '字體',
+		panelTitle : '字體',
+		panelVoiceLabel : '選擇字體'
+	},
+
+	fontSize :
+	{
+		label : '大小',
+		voiceLabel : '文字大小',
+		panelTitle : '大小',
+		panelVoiceLabel : '選擇文字大小'
+	},
+
+	colorButton :
+	{
+		textColorTitle : '文字顏色',
+		bgColorTitle : '背景顏色',
+		auto : '自動',
+		more : '更多顏色…'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : '即時拼寫檢查',
+		enable : '啟用即時拼寫檢查',
+		disable : '關閉即時拼寫檢查',
+		about : '關於即時拼寫檢查',
+		toggle : '啟用／關閉即時拼寫檢查',
+		options : '選項',
+		langs : '語言',
+		moreSuggestions : '更多拼寫建議',
+		ignore : '忽略',
+		ignoreAll : '全部忽略',
+		addWord : '添加單詞',
+		emptyDic : '字典名不應為空.',
+		optionsTab : '選項',
+		languagesTab : '語言',
+		dictionariesTab : '字典',
+		aboutTab : '關於'
+	},
+
+	about :
+	{
+		title : '關於 CKEditor',
+		dlgTitle : '關於 CKEditor',
+		moreInfo : '訪問我們的網站以獲取更多關於協議的信息',
+		copy : 'Copyright &copy; $1. All rights reserved.'
+	},
+
+	maximize : '最大化',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : '錨點',
+		flash : 'Flash 動畫',
+		div : '分頁',
+		unknown : '不明物件'
+	},
+
+	resize : '拖拽改變大小',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/ca.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/ca.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/ca.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Catalan language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['ca'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Editor de text enriquit, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Codi font',
+	newPage			: 'Nova Pàgina',
+	save			: 'Desa',
+	preview			: 'Visualització prèvia',
+	cut				: 'Retalla',
+	copy			: 'Copia',
+	paste			: 'Enganxa',
+	print			: 'Imprimeix',
+	underline		: 'Subratllat',
+	bold			: 'Negreta',
+	italic			: 'Cursiva',
+	selectAll		: 'Selecciona-ho tot',
+	removeFormat	: 'Elimina Format',
+	strike			: 'Barrat',
+	subscript		: 'Subíndex',
+	superscript		: 'Superíndex',
+	horizontalrule	: 'Insereix línia horitzontal',
+	pagebreak		: 'Insereix salt de pàgina',
+	unlink			: 'Elimina l\'enllaç',
+	undo			: 'Desfés',
+	redo			: 'Refés',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Veure servidor',
+		url				: 'URL',
+		protocol		: 'Protocol',
+		upload			: 'Puja',
+		uploadSubmit	: 'Envia-la al servidor',
+		image			: 'Imatge',
+		flash			: 'Flash',
+		form			: 'Formulari',
+		checkbox		: 'Casella de verificació',
+		radio		: 'Botó d\'opció',
+		textField		: 'Camp de text',
+		textarea		: 'Àrea de text',
+		hiddenField		: 'Camp ocult',
+		button			: 'Botó',
+		select	: 'Camp de selecció',
+		imageButton		: 'Botó d\'imatge',
+		notSet			: '<no definit>',
+		id				: 'Id',
+		name			: 'Nom',
+		langDir			: 'Direcció de l\'idioma',
+		langDirLtr		: 'D\'esquerra a dreta (LTR)',
+		langDirRtl		: 'De dreta a esquerra (RTL)',
+		langCode		: 'Codi d\'idioma',
+		longDescr		: 'Descripció llarga de la URL',
+		cssClass		: 'Classes del full d\'estil',
+		advisoryTitle	: 'Títol consultiu',
+		cssStyle		: 'Estil',
+		ok				: 'D\'acord',
+		cancel			: 'Cancel·la',
+		generalTab		: 'General',
+		advancedTab		: 'Avançat',
+		validateNumberFailed	: 'Aquest valor no és un número.',
+		confirmNewPage	: 'Els canvis en aquest contingut que no es desin es perdran. Esteu segur que voleu carregar una pàgina nova?',
+		confirmCancel	: 'Algunes opcions s\'han canviat. Esteu segur que voleu tancar la finestra de diàleg?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, no disponible</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Insereix caràcter especial',
+		title		: 'Selecciona el caràcter especial'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Insereix/Edita enllaç',
+		menu		: 'Edita l\'enllaç',
+		title		: 'Enllaç',
+		info		: 'Informació de l\'enllaç',
+		target		: 'Destí',
+		upload		: 'Puja',
+		advanced	: 'Avançat',
+		type		: 'Tipus d\'enllaç',
+		toAnchor	: 'Àncora en aquesta pàgina',
+		toEmail		: 'Correu electrònic',
+		target		: 'Destí',
+		targetNotSet	: '<no definit>',
+		targetFrame	: '<marc>',
+		targetPopup	: '<finestra emergent>',
+		targetNew	: 'Nova finestra (_blank)',
+		targetTop	: 'Finestra Major (_top)',
+		targetSelf	: 'Mateixa finestra (_self)',
+		targetParent	: 'Finestra pare (_parent)',
+		targetFrameName	: 'Nom del marc de destí',
+		targetPopupName	: 'Nom finestra popup',
+		popupFeatures	: 'Característiques finestra popup',
+		popupResizable	: 'Redimensionable',
+		popupStatusBar	: 'Barra d\'estat',
+		popupLocationBar	: 'Barra d\'adreça',
+		popupToolbar	: 'Barra d\'eines',
+		popupMenuBar	: 'Barra de menú',
+		popupFullScreen	: 'Pantalla completa (IE)',
+		popupScrollBars	: 'Barres d\'scroll',
+		popupDependent	: 'Depenent (Netscape)',
+		popupWidth		: 'Amplada',
+		popupLeft		: 'Posició esquerra',
+		popupHeight		: 'Alçada',
+		popupTop		: 'Posició dalt',
+		id				: 'Id',
+		langDir			: 'Direcció de l\'idioma',
+		langDirNotSet	: '<no definit>',
+		langDirLTR		: 'D\'esquerra a dreta (LTR)',
+		langDirRTL		: 'De dreta a esquerra (RTL)',
+		acccessKey		: 'Clau d\'accés',
+		name			: 'Nom',
+		langCode		: 'Direcció de l\'idioma',
+		tabIndex		: 'Index de Tab',
+		advisoryTitle	: 'Títol consultiu',
+		advisoryContentType	: 'Tipus de contingut consultiu',
+		cssClasses		: 'Classes del full d\'estil',
+		charset			: 'Conjunt de caràcters font enllaçat',
+		styles			: 'Estil',
+		selectAnchor	: 'Selecciona una àncora',
+		anchorName		: 'Per nom d\'àncora',
+		anchorId		: 'Per Id d\'element',
+		emailAddress	: 'Adreça de correu electrònic',
+		emailSubject	: 'Assumpte del missatge',
+		emailBody		: 'Cos del missatge',
+		noAnchors		: '(No hi ha àncores disponibles en aquest document)',
+		noUrl			: 'Si us plau, escrigui l\'enllaç URL',
+		noEmail			: 'Si us plau, escrigui l\'adreça correu electrònic'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Insereix/Edita àncora',
+		menu		: 'Propietats de l\'àncora',
+		title		: 'Propietats de l\'àncora',
+		name		: 'Nom de l\'àncora',
+		errorName	: 'Si us plau, escriviu el nom de l\'ancora'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Cerca i reemplaça',
+		find				: 'Cerca',
+		replace				: 'Reemplaça',
+		findWhat			: 'Cerca:',
+		replaceWith			: 'Remplaça amb:',
+		notFoundMsg			: 'El text especificat no s\'ha trobat.',
+		matchCase			: 'Distingeix majúscules/minúscules',
+		matchWord			: 'Només paraules completes',
+		matchCyclic			: 'Match cyclic',
+		replaceAll			: 'Reemplaça-ho tot',
+		replaceSuccessMsg	: '%1 ocurrència/es reemplaçada/es.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Taula',
+		title		: 'Propietats de la taula',
+		menu		: 'Propietats de la taula',
+		deleteTable	: 'Suprimeix la taula',
+		rows		: 'Files',
+		columns		: 'Columnes',
+		border		: 'Mida vora',
+		align		: 'Alineació',
+		alignNotSet	: '<No Definit>',
+		alignLeft	: 'Esquerra',
+		alignCenter	: 'Centre',
+		alignRight	: 'Dreta',
+		width		: 'Amplada',
+		widthPx		: 'píxels',
+		widthPc		: 'percentatge',
+		height		: 'Alçada',
+		cellSpace	: 'Espaiat de cel·les',
+		cellPad		: 'Encoixinament de cel·les',
+		caption		: 'Títol',
+		summary		: 'Resum',
+		headers		: 'Capçaleres',
+		headersNone		: 'Cap',
+		headersColumn	: 'Primera columna',
+		headersRow		: 'Primera fila',
+		headersBoth		: 'Ambdues',
+		invalidRows		: 'El nombre de files ha de ser un nombre major que 0.',
+		invalidCols		: 'El nombre de columnes ha de ser un nombre major que 0.',
+		invalidBorder	: 'El gruix de la vora ha de ser un nombre.',
+		invalidWidth	: 'L\'amplada de la taula  ha de ser un nombre.',
+		invalidHeight	: 'L\'alçada de la taula  ha de ser un nombre.',
+		invalidCellSpacing	: 'L\'espaiat de cel·la  ha de ser un nombre.',
+		invalidCellPadding	: 'L\'encoixinament de cel·la  ha de ser un nombre.',
+
+		cell :
+		{
+			menu			: 'Cel·la',
+			insertBefore	: 'Insereix cel·la abans de',
+			insertAfter		: 'Insereix cel·la darrera',
+			deleteCell		: 'Suprimeix les cel·les',
+			merge			: 'Fusiona les cel·les',
+			mergeRight		: 'Fusiona cap a la dreta',
+			mergeDown		: 'Fusiona cap avall',
+			splitHorizontal	: 'Divideix la cel·la horitzontalment',
+			splitVertical	: 'Divideix la cel·la verticalment',
+			title			: 'Propertiat de la cel·la',
+			cellType		: 'Tipus de cel·la',
+			rowSpan			: 'Expansió de files',
+			colSpan			: 'Expansió de columnes',
+			wordWrap		: 'Ajustar al contingut',
+			hAlign			: 'Aliniació Horizontal',
+			vAlign			: 'Aliniació Vertical',
+			alignTop		: 'A dalt',
+			alignMiddle		: 'Al mig',
+			alignBottom		: 'A baix',
+			alignBaseline	: 'A la línia base',
+			bgColor			: 'Color de fons',
+			borderColor		: 'Color de la vora',
+			data			: 'Data',
+			header			: 'Capçalera',
+			yes				: 'Sí',
+			no				: 'No',
+			invalidWidth	: 'L\'amplada de cel·la ha de ser un nombre.',
+			invalidHeight	: 'L\'alçada de cel·la ha de ser un nombre.',
+			invalidRowSpan	: 'L\'expansió de files ha de ser un nombre enter.',
+			invalidColSpan	: 'L\'expansió de columnes ha de ser un nombre enter.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Fila',
+			insertBefore	: 'Insereix fila abans de',
+			insertAfter		: 'Insereix fila darrera',
+			deleteRow		: 'Suprimeix una fila'
+		},
+
+		column :
+		{
+			menu			: 'Columna',
+			insertBefore	: 'Insereix columna abans de',
+			insertAfter		: 'Insereix columna darrera',
+			deleteColumn	: 'Suprimeix una columna'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Propietats del botó',
+		text		: 'Text (Valor)',
+		type		: 'Tipus',
+		typeBtn		: 'Botó',
+		typeSbm		: 'Transmet formulari',
+		typeRst		: 'Reinicia formulari'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Propietats de la casella de verificació',
+		radioTitle	: 'Propietats del botó d\'opció',
+		value		: 'Valor',
+		selected	: 'Seleccionat'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Propietats del formulari',
+		menu		: 'Propietats del formulari',
+		action		: 'Acció',
+		method		: 'Mètode',
+		encoding	: 'Codificació',
+		target		: 'Destí',
+		targetNotSet	: '<no definit>',
+		targetNew	: 'Nova finestra (_blank)',
+		targetTop	: 'Finestra Major (_top)',
+		targetSelf	: 'Mateixa finestra (_self)',
+		targetParent	: 'Finestra pare (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Propietats del camp de selecció',
+		selectInfo	: 'Info',
+		opAvail		: 'Opcions disponibles',
+		value		: 'Valor',
+		size		: 'Mida',
+		lines		: 'Línies',
+		chkMulti	: 'Permet múltiples seleccions',
+		opText		: 'Text',
+		opValue		: 'Valor',
+		btnAdd		: 'Afegeix',
+		btnModify	: 'Modifica',
+		btnUp		: 'Amunt',
+		btnDown		: 'Avall',
+		btnSetValue : 'Selecciona per defecte',
+		btnDelete	: 'Elimina'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Propietats de l\'àrea de text',
+		cols		: 'Columnes',
+		rows		: 'Files'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Propietats del camp de text',
+		name		: 'Nom',
+		value		: 'Valor',
+		charWidth	: 'Amplada',
+		maxChars	: 'Nombre màxim de caràcters',
+		type		: 'Tipus',
+		typeText	: 'Text',
+		typePass	: 'Contrasenya'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Propietats del camp ocult',
+		name	: 'Nom',
+		value	: 'Valor'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Propietats de la imatge',
+		titleButton	: 'Propietats del botó d\'imatge',
+		menu		: 'Propietats de la imatge',
+		infoTab	: 'Informació de la imatge',
+		btnUpload	: 'Envia-la al servidor',
+		url		: 'URL',
+		upload	: 'Puja',
+		alt		: 'Text alternatiu',
+		width		: 'Amplada',
+		height	: 'Alçada',
+		lockRatio	: 'Bloqueja les proporcions',
+		resetSize	: 'Restaura la mida',
+		border	: 'Vora',
+		hSpace	: 'Espaiat horit.',
+		vSpace	: 'Espaiat vert.',
+		align		: 'Alineació',
+		alignLeft	: 'Ajusta a l\'esquerra',
+		alignAbsBottom: 'Abs Bottom',
+		alignAbsMiddle: 'Abs Middle',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Bottom',
+		alignMiddle	: 'Middle',
+		alignRight	: 'Ajusta a la dreta',
+		alignTextTop	: 'Text Top',
+		alignTop	: 'Top',
+		preview	: 'Vista prèvia',
+		alertUrl	: 'Si us plau, escriviu la URL de la imatge',
+		linkTab	: 'Enllaç',
+		button2Img	: 'Voleu transformar el botó d\'imatge seleccionat en una simple imatge?',
+		img2Button	: 'Voleu transformar la imatge seleccionada en un botó d\'imatge?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Propietats del Flash',
+		propertiesTab	: 'Propietats',
+		title		: 'Propietats del Flash',
+		chkPlay		: 'Reprodució automàtica',
+		chkLoop		: 'Bucle',
+		chkMenu		: 'Habilita menú Flash',
+		chkFull		: 'Permetre la pantalla completa',
+ 		scale		: 'Escala',
+		scaleAll		: 'Mostra-ho tot',
+		scaleNoBorder	: 'Sense vores',
+		scaleFit		: 'Mida exacta',
+		access			: 'Accés a scripts',
+		accessAlways	: 'Sempre',
+		accessSameDomain	: 'El mateix domini',
+		accessNever	: 'Mai',
+		align		: 'Alineació',
+		alignLeft	: 'Ajusta a l\'esquerra',
+		alignAbsBottom: 'Abs Bottom',
+		alignAbsMiddle: 'Abs Middle',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Bottom',
+		alignMiddle	: 'Middle',
+		alignRight	: 'Ajusta a la dreta',
+		alignTextTop	: 'Text Top',
+		alignTop	: 'Top',
+		quality		: 'Qualitat',
+		qualityBest		 : 'La millor',
+		qualityHigh		 : 'Alta',
+		qualityAutoHigh	 : 'Alta automàtica',
+		qualityMedium	 : 'Mitjana',
+		qualityAutoLow	 : 'Baixa automàtica',
+		qualityLow		 : 'Baixa',
+		windowModeWindow	 : 'Finestra',
+		windowModeOpaque	 : 'Opaca',
+		windowModeTransparent	 : 'Transparent',
+		windowMode	: 'Mode de la finestra',
+		flashvars	: 'Variables de Flash',
+		bgcolor	: 'Color de Fons',
+		width	: 'Amplada',
+		height	: 'Alçada',
+		hSpace	: 'Espaiat horit.',
+		vSpace	: 'Espaiat vert.',
+		validateSrc : 'Si us plau, escrigui l\'enllaç URL',
+		validateWidth : 'L\'amplada ha de ser un nombre.',
+		validateHeight : 'L\'alçada ha de ser un nombre.',
+		validateHSpace : 'L\'espaiat horitzonatal ha de ser un nombre.',
+		validateVSpace : 'L\'espaiat vertical ha de ser un nombre.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Revisa l\'ortografia',
+		title			: 'Comprova l\'ortografia',
+		notAvailable	: 'El servei no es troba disponible ara.',
+		errorLoading	: 'Error carregant el servidor: %s.',
+		notInDic		: 'No és al diccionari',
+		changeTo		: 'Reemplaça amb',
+		btnIgnore		: 'Ignora',
+		btnIgnoreAll	: 'Ignora-les totes',
+		btnReplace		: 'Canvia',
+		btnReplaceAll	: 'Canvia-les totes',
+		btnUndo			: 'Desfés',
+		noSuggestions	: 'Cap suggeriment',
+		progress		: 'Verificació ortogràfica en curs...',
+		noMispell		: 'Verificació ortogràfica acabada: no hi ha cap paraula mal escrita',
+		noChanges		: 'Verificació ortogràfica: no s\'ha canviat cap paraula',
+		oneChange		: 'Verificació ortogràfica: s\'ha canviat una paraula',
+		manyChanges		: 'Verificació ortogràfica: s\'han canviat %1 paraules',
+		ieSpellDownload	: 'Verificació ortogràfica no instal·lada. Voleu descarregar-ho ara?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Icona',
+		title	: 'Insereix una icona'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element'
+	},
+
+	numberedlist : 'Llista numerada',
+	bulletedlist : 'Llista de pics',
+	indent : 'Augmenta el sagnat',
+	outdent : 'Redueix el sagnat',
+
+	justify :
+	{
+		left : 'Alinia a l\'esquerra',
+		center : 'Centrat',
+		right : 'Alinia a la dreta',
+		block : 'Justificat'
+	},
+
+	blockquote : 'Bloc de cita',
+
+	clipboard :
+	{
+		title		: 'Enganxa',
+		cutError	: 'La seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl+X).',
+		copyError	: 'La seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl+C).',
+		pasteMsg	: 'Si us plau, enganxeu dins del següent camp utilitzant el teclat (<STRONG>Ctrl+V</STRONG>) i premeu <STRONG>OK</STRONG>.',
+		securityMsg	: 'A causa de la configuració de seguretat del vostre navegador, l\'editor no pot accedir al porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Enganxa des del Word',
+		title : 'Enganxa des del Word',
+		advice : 'Si us plau, enganxeu dins del següent camp utilitzant el teclat (<STRONG>Ctrl+V</STRONG>) i premeu <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignora definicions de font',
+		removeStyle : 'Elimina definicions d\'estil'
+	},
+
+	pasteText :
+	{
+		button : 'Enganxa com a text no formatat',
+		title : 'Enganxa com a text no formatat'
+	},
+
+	templates :
+	{
+		button : 'Plantilles',
+		title : 'Contingut plantilles',
+		insertOption: 'Reemplaça el contingut actual',
+		selectPromptMsg: 'Si us plau, seleccioneu la plantilla per obrir a l\'editor<br>(el contingut actual no serà enregistrat):',
+		emptyListMsg : '(No hi ha plantilles definides)'
+	},
+
+	showBlocks : 'Mostra els blocs',
+
+	stylesCombo :
+	{
+		label : 'Estil',
+		voiceLabel : 'Estils',
+		panelVoiceLabel : 'Seleccioneu un estil',
+		panelTitle1 : 'Estils de bloc',
+		panelTitle2 : 'Estils incrustats',
+		panelTitle3 : 'Estils d\'objecte'
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format',
+		panelTitle : 'Format',
+		panelVoiceLabel : 'Seleccioneu un format de paràgraf',
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatejat',
+		tag_address : 'Adreça',
+		tag_h1 : 'Encapçalament 1',
+		tag_h2 : 'Encapçalament 2',
+		tag_h3 : 'Encapçalament 3',
+		tag_h4 : 'Encapçalament 4',
+		tag_h5 : 'Encapçalament 5',
+		tag_h6 : 'Encapçalament 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Tipus de lletra',
+		voiceLabel : 'Tipus de lletra',
+		panelTitle : 'Tipus de lletra',
+		panelVoiceLabel : 'Seleccioneu un tipus de lletra'
+	},
+
+	fontSize :
+	{
+		label : 'Mida',
+		voiceLabel : 'Mida de la lletra',
+		panelTitle : 'Mida',
+		panelVoiceLabel : 'Seleccioneu una mida de lletra'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Color de Text',
+		bgColorTitle : 'Color de Fons',
+		auto : 'Automàtic',
+		more : 'Més colors...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type',
+		enable : 'Habilitat l\'SCAYT',
+		disable : 'Deshabilita SCAYT',
+		about : 'Quant a l\'SCAYT',
+		toggle : 'Commuta l\'SCAYT',
+		options : 'Opcions',
+		langs : 'Idiomes',
+		moreSuggestions : 'Més suggerències',
+		ignore : 'Ignora',
+		ignoreAll : 'Ignora\'ls tots',
+		addWord : 'Afegeix una paraula',
+		emptyDic : 'El nom del diccionari no hauria d\'estar buit.',
+		optionsTab : 'Opcions',
+		languagesTab : 'Idiomes',
+		dictionariesTab : 'Diccionaris',
+		aboutTab : 'Quant a'
+	},
+
+	about :
+	{
+		title : 'Quan al CKEditor',
+		dlgTitle : 'Quan al CKEditor',
+		moreInfo : 'Per informació sobre llicències visiteu el web:',
+		copy : 'Copyright &copy; $1. All rights reserved.'
+	},
+
+	maximize : 'Maximiza',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Àncora',
+		flash : 'Animació Flash',
+		div : 'Salt de pàgina',
+		unknown : 'Objecte desconegut'
+	},
+
+	resize : 'Arrossegueu per redimensionar',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/en-ca.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/en-ca.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/en-ca.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * English (Australia) language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['en-ca'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Source',
+	newPage			: 'New Page',
+	save			: 'Save',
+	preview			: 'Preview',
+	cut				: 'Cut',
+	copy			: 'Copy',
+	paste			: 'Paste',
+	print			: 'Print',
+	underline		: 'Underline',
+	bold			: 'Bold',
+	italic			: 'Italic',
+	selectAll		: 'Select All',
+	removeFormat	: 'Remove Format',
+	strike			: 'Strike Through',
+	subscript		: 'Subscript',
+	superscript		: 'Superscript',
+	horizontalrule	: 'Insert Horizontal Line',
+	pagebreak		: 'Insert Page Break for Printing',
+	unlink			: 'Unlink',
+	undo			: 'Undo',
+	redo			: 'Redo',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Browse Server',
+		url				: 'URL',
+		protocol		: 'Protocol',
+		upload			: 'Upload',
+		uploadSubmit	: 'Send it to the Server',
+		image			: 'Image',
+		flash			: 'Flash',
+		form			: 'Form',
+		checkbox		: 'Checkbox',
+		radio		: 'Radio Button',
+		textField		: 'Text Field',
+		textarea		: 'Textarea',
+		hiddenField		: 'Hidden Field',
+		button			: 'Button',
+		select	: 'Selection Field',
+		imageButton		: 'Image Button',
+		notSet			: '<not set>',
+		id				: 'Id',
+		name			: 'Name',
+		langDir			: 'Language Direction',
+		langDirLtr		: 'Left to Right (LTR)',
+		langDirRtl		: 'Right to Left (RTL)',
+		langCode		: 'Language Code',
+		longDescr		: 'Long Description URL',
+		cssClass		: 'Stylesheet Classes',
+		advisoryTitle	: 'Advisory Title',
+		cssStyle		: 'Style',
+		ok				: 'OK',
+		cancel			: 'Cancel',
+		generalTab		: 'General',
+		advancedTab		: 'Advanced',
+		validateNumberFailed	: 'This value is not a number.',
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Insert Special Character',
+		title		: 'Select Special Character'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Link',
+		menu		: 'Edit Link',
+		title		: 'Link',
+		info		: 'Link Info',
+		target		: 'Target',
+		upload		: 'Upload',
+		advanced	: 'Advanced',
+		type		: 'Link Type',
+		toAnchor	: 'Link to anchor in the text',
+		toEmail		: 'E-mail',
+		target		: 'Target',
+		targetNotSet	: '<not set>',
+		targetFrame	: '<frame>',
+		targetPopup	: '<popup window>',
+		targetNew	: 'New Window (_blank)',
+		targetTop	: 'Topmost Window (_top)',
+		targetSelf	: 'Same Window (_self)',
+		targetParent	: 'Parent Window (_parent)',
+		targetFrameName	: 'Target Frame Name',
+		targetPopupName	: 'Popup Window Name',
+		popupFeatures	: 'Popup Window Features',
+		popupResizable	: 'Resizable',
+		popupStatusBar	: 'Status Bar',
+		popupLocationBar	: 'Location Bar',
+		popupToolbar	: 'Toolbar',
+		popupMenuBar	: 'Menu Bar',
+		popupFullScreen	: 'Full Screen (IE)',
+		popupScrollBars	: 'Scroll Bars',
+		popupDependent	: 'Dependent (Netscape)',
+		popupWidth		: 'Width',
+		popupLeft		: 'Left Position',
+		popupHeight		: 'Height',
+		popupTop		: 'Top Position',
+		id				: 'Id',
+		langDir			: 'Language Direction',
+		langDirNotSet	: '<not set>',
+		langDirLTR		: 'Left to Right (LTR)',
+		langDirRTL		: 'Right to Left (RTL)',
+		acccessKey		: 'Access Key',
+		name			: 'Name',
+		langCode		: 'Language Code',
+		tabIndex		: 'Tab Index',
+		advisoryTitle	: 'Advisory Title',
+		advisoryContentType	: 'Advisory Content Type',
+		cssClasses		: 'Stylesheet Classes',
+		charset			: 'Linked Resource Charset',
+		styles			: 'Style',
+		selectAnchor	: 'Select an Anchor',
+		anchorName		: 'By Anchor Name',
+		anchorId		: 'By Element Id',
+		emailAddress	: 'E-Mail Address',
+		emailSubject	: 'Message Subject',
+		emailBody		: 'Message Body',
+		noAnchors		: '(No anchors available in the document)',
+		noUrl			: 'Please type the link URL',
+		noEmail			: 'Please type the e-mail address'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Anchor',
+		menu		: 'Edit Anchor',
+		title		: 'Anchor Properties',
+		name		: 'Anchor Name',
+		errorName	: 'Please type the anchor name'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace',
+		find				: 'Find',
+		replace				: 'Replace',
+		findWhat			: 'Find what:',
+		replaceWith			: 'Replace with:',
+		notFoundMsg			: 'The specified text was not found.',
+		matchCase			: 'Match case',
+		matchWord			: 'Match whole word',
+		matchCyclic			: 'Match cyclic',
+		replaceAll			: 'Replace All',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Table',
+		title		: 'Table Properties',
+		menu		: 'Table Properties',
+		deleteTable	: 'Delete Table',
+		rows		: 'Rows',
+		columns		: 'Columns',
+		border		: 'Border size',
+		align		: 'Alignment',
+		alignNotSet	: '<Not set>',
+		alignLeft	: 'Left',
+		alignCenter	: 'Centre',
+		alignRight	: 'Right',
+		width		: 'Width',
+		widthPx		: 'pixels',
+		widthPc		: 'percent',
+		height		: 'Height',
+		cellSpace	: 'Cell spacing',
+		cellPad		: 'Cell padding',
+		caption		: 'Caption',
+		summary		: 'Summary',
+		headers		: 'Headers',
+		headersNone		: 'None',
+		headersColumn	: 'First column',
+		headersRow		: 'First Row',
+		headersBoth		: 'Both',
+		invalidRows		: 'Number of rows must be a number greater than 0.',
+		invalidCols		: 'Number of columns must be a number greater than 0.',
+		invalidBorder	: 'Border size must be a number.',
+		invalidWidth	: 'Table width must be a number.',
+		invalidHeight	: 'Table height must be a number.',
+		invalidCellSpacing	: 'Cell spacing must be a number.',
+		invalidCellPadding	: 'Cell padding must be a number.',
+
+		cell :
+		{
+			menu			: 'Cell',
+			insertBefore	: 'Insert Cell Before',
+			insertAfter		: 'Insert Cell After',
+			deleteCell		: 'Delete Cells',
+			merge			: 'Merge Cells',
+			mergeRight		: 'Merge Right',
+			mergeDown		: 'Merge Down',
+			splitHorizontal	: 'Split Cell Horizontally',
+			splitVertical	: 'Split Cell Vertically',
+			title			: 'Cell Properties',
+			cellType		: 'Cell Type',
+			rowSpan			: 'Rows Span',
+			colSpan			: 'Columns Span',
+			wordWrap		: 'Word Wrap',
+			hAlign			: 'Horizontal Alignment',
+			vAlign			: 'Vertical Alignment',
+			alignTop		: 'Top',
+			alignMiddle		: 'Middle',
+			alignBottom		: 'Bottom',
+			alignBaseline	: 'Baseline',
+			bgColor			: 'Background Color',
+			borderColor		: 'Border Color',
+			data			: 'Data',
+			header			: 'Header',
+			yes				: 'Yes',
+			no				: 'No',
+			invalidWidth	: 'Cell width must be a number.',
+			invalidHeight	: 'Cell height must be a number.',
+			invalidRowSpan	: 'Rows span must be a whole number.',
+			invalidColSpan	: 'Columns span must be a whole number.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Row',
+			insertBefore	: 'Insert Row Before',
+			insertAfter		: 'Insert Row After',
+			deleteRow		: 'Delete Rows'
+		},
+
+		column :
+		{
+			menu			: 'Column',
+			insertBefore	: 'Insert Column Before',
+			insertAfter		: 'Insert Column After',
+			deleteColumn	: 'Delete Columns'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Button Properties',
+		text		: 'Text (Value)',
+		type		: 'Type',
+		typeBtn		: 'Button',
+		typeSbm		: 'Submit',
+		typeRst		: 'Reset'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Checkbox Properties',
+		radioTitle	: 'Radio Button Properties',
+		value		: 'Value',
+		selected	: 'Selected'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Form Properties',
+		menu		: 'Form Properties',
+		action		: 'Action',
+		method		: 'Method',
+		encoding	: 'Encoding',
+		target		: 'Target',
+		targetNotSet	: '<not set>',
+		targetNew	: 'New Window (_blank)',
+		targetTop	: 'Topmost Window (_top)',
+		targetSelf	: 'Same Window (_self)',
+		targetParent	: 'Parent Window (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Selection Field Properties',
+		selectInfo	: 'Select Info',
+		opAvail		: 'Available Options',
+		value		: 'Value',
+		size		: 'Size',
+		lines		: 'lines',
+		chkMulti	: 'Allow multiple selections',
+		opText		: 'Text',
+		opValue		: 'Value',
+		btnAdd		: 'Add',
+		btnModify	: 'Modify',
+		btnUp		: 'Up',
+		btnDown		: 'Down',
+		btnSetValue : 'Set as selected value',
+		btnDelete	: 'Delete'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Textarea Properties',
+		cols		: 'Columns',
+		rows		: 'Rows'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Text Field Properties',
+		name		: 'Name',
+		value		: 'Value',
+		charWidth	: 'Character Width',
+		maxChars	: 'Maximum Characters',
+		type		: 'Type',
+		typeText	: 'Text',
+		typePass	: 'Password'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Hidden Field Properties',
+		name	: 'Name',
+		value	: 'Value'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Image Properties',
+		titleButton	: 'Image Button Properties',
+		menu		: 'Image Properties',
+		infoTab	: 'Image Info',
+		btnUpload	: 'Send it to the Server',
+		url		: 'URL',
+		upload	: 'Upload',
+		alt		: 'Alternative Text',
+		width		: 'Width',
+		height	: 'Height',
+		lockRatio	: 'Lock Ratio',
+		resetSize	: 'Reset Size',
+		border	: 'Border',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		align		: 'Align',
+		alignLeft	: 'Left',
+		alignAbsBottom: 'Abs Bottom',
+		alignAbsMiddle: 'Abs Middle',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Bottom',
+		alignMiddle	: 'Middle',
+		alignRight	: 'Right',
+		alignTextTop	: 'Text Top',
+		alignTop	: 'Top',
+		preview	: 'Preview',
+		alertUrl	: 'Please type the image URL',
+		linkTab	: 'Link',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?',
+		img2Button	: 'Do you want to transform the selected image on a image button?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash Properties',
+		propertiesTab	: 'Properties',
+		title		: 'Flash Properties',
+		chkPlay		: 'Auto Play',
+		chkLoop		: 'Loop',
+		chkMenu		: 'Enable Flash Menu',
+		chkFull		: 'Allow Fullscreen',
+ 		scale		: 'Scale',
+		scaleAll		: 'Show all',
+		scaleNoBorder	: 'No Border',
+		scaleFit		: 'Exact Fit',
+		access			: 'Script Access',
+		accessAlways	: 'Always',
+		accessSameDomain	: 'Same domain',
+		accessNever	: 'Never',
+		align		: 'Align',
+		alignLeft	: 'Left',
+		alignAbsBottom: 'Abs Bottom',
+		alignAbsMiddle: 'Abs Middle',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Bottom',
+		alignMiddle	: 'Middle',
+		alignRight	: 'Right',
+		alignTextTop	: 'Text Top',
+		alignTop	: 'Top',
+		quality		: 'Quality',
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode',
+		flashvars	: 'Variables for Flash',
+		bgcolor	: 'Background colour',
+		width	: 'Width',
+		height	: 'Height',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		validateSrc : 'URL must not be empty.',
+		validateWidth : 'Width must be a number.',
+		validateHeight : 'Height must be a number.',
+		validateHSpace : 'HSpace must be a number.',
+		validateVSpace : 'VSpace must be a number.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Check Spelling',
+		title			: 'Spell Check',
+		notAvailable	: 'Sorry, but service is unavailable now.',
+		errorLoading	: 'Error loading application service host: %s.',
+		notInDic		: 'Not in dictionary',
+		changeTo		: 'Change to',
+		btnIgnore		: 'Ignore',
+		btnIgnoreAll	: 'Ignore All',
+		btnReplace		: 'Replace',
+		btnReplaceAll	: 'Replace All',
+		btnUndo			: 'Undo',
+		noSuggestions	: '- No suggestions -',
+		progress		: 'Spell check in progress...',
+		noMispell		: 'Spell check complete: No misspellings found',
+		noChanges		: 'Spell check complete: No words changed',
+		oneChange		: 'Spell check complete: One word changed',
+		manyChanges		: 'Spell check complete: %1 words changed',
+		ieSpellDownload	: 'Spell checker not installed. Do you want to download it now?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Insert a Smiley'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element'
+	},
+
+	numberedlist : 'Insert/Remove Numbered List',
+	bulletedlist : 'Insert/Remove Bulleted List',
+	indent : 'Increase Indent',
+	outdent : 'Decrease Indent',
+
+	justify :
+	{
+		left : 'Left Justify',
+		center : 'Centre Justify',
+		right : 'Right Justify',
+		block : 'Block Justify'
+	},
+
+	blockquote : 'Blockquote',
+
+	clipboard :
+	{
+		title		: 'Paste',
+		cutError	: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).',
+		copyError	: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Paste from Word',
+		title : 'Paste from Word',
+		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',
+		ignoreFontFace : 'Ignore Font Face definitions',
+		removeStyle : 'Remove Styles definitions'
+	},
+
+	pasteText :
+	{
+		button : 'Paste as plain text',
+		title : 'Paste as Plain Text'
+	},
+
+	templates :
+	{
+		button : 'Templates',
+		title : 'Content Templates',
+		insertOption: 'Replace actual contents',
+		selectPromptMsg: 'Please select the template to open in the editor',
+		emptyListMsg : '(No templates defined)'
+	},
+
+	showBlocks : 'Show Blocks',
+
+	stylesCombo :
+	{
+		label : 'Styles',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles',
+		panelTitle2 : 'Inline Styles',
+		panelTitle3 : 'Object Styles'
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Paragraph Format',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatted',
+		tag_address : 'Address',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Font',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Font Name',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Size',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Font Size',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Text Colour',
+		bgColorTitle : 'Background Colour',
+		auto : 'Automatic',
+		more : 'More Colours...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor',
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:',
+		copy : 'Copyright &copy; $1. All rights reserved.'
+	},
+
+	maximize : 'Maximize',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/pt.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/pt.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/pt.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Portuguese language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['pt'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Fonte',
+	newPage			: 'Nova Página',
+	save			: 'Guardar',
+	preview			: 'Pré-visualizar',
+	cut				: 'Cortar',
+	copy			: 'Copiar',
+	paste			: 'Colar',
+	print			: 'Imprimir',
+	underline		: 'Sublinhado',
+	bold			: 'Negrito',
+	italic			: 'Itálico',
+	selectAll		: 'Seleccionar Tudo',
+	removeFormat	: 'Eliminar Formato',
+	strike			: 'Rasurado',
+	subscript		: 'Superior à Linha',
+	superscript		: 'Inferior à Linha',
+	horizontalrule	: 'Inserir Linha Horizontal',
+	pagebreak		: 'Inserir Quebra de Página',
+	unlink			: 'Eliminar Hiperligação',
+	undo			: 'Anular',
+	redo			: 'Repetir',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Navegar no Servidor',
+		url				: 'URL',
+		protocol		: 'Protocolo',
+		upload			: 'Carregar',
+		uploadSubmit	: 'Enviar para o Servidor',
+		image			: 'Imagem',
+		flash			: 'Flash',
+		form			: 'Formulário',
+		checkbox		: 'Caixa de Verificação',
+		radio		: 'Botão de Opção',
+		textField		: 'Campo de Texto',
+		textarea		: 'Área de Texto',
+		hiddenField		: 'Campo Escondido',
+		button			: 'Botão',
+		select	: 'Caixa de Combinação',
+		imageButton		: 'Botão de Imagem',
+		notSet			: '<Não definido>',
+		id				: 'Id',
+		name			: 'Nome',
+		langDir			: 'Orientação de idioma',
+		langDirLtr		: 'Esquerda à Direita (LTR)',
+		langDirRtl		: 'Direita a Esquerda (RTL)',
+		langCode		: 'Código de Idioma',
+		longDescr		: 'Descrição Completa do URL',
+		cssClass		: 'Classes de Estilo de Folhas Classes',
+		advisoryTitle	: 'Título',
+		cssStyle		: 'Estilo',
+		ok				: 'OK',
+		cancel			: 'Cancelar',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Avançado',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Inserir Caracter Especial',
+		title		: 'Seleccione um caracter especial'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Inserir/Editar Hiperligação',
+		menu		: 'Editar Hiperligação',
+		title		: 'Hiperligação',
+		info		: 'Informação de Hiperligação',
+		target		: 'Destino',
+		upload		: 'Carregar',
+		advanced	: 'Avançado',
+		type		: 'Tipo de Hiperligação',
+		toAnchor	: 'Referência a esta página',
+		toEmail		: 'E-Mail',
+		target		: 'Destino',
+		targetNotSet	: '<Não definido>',
+		targetFrame	: '<Frame>',
+		targetPopup	: '<Janela de popup>',
+		targetNew	: 'Nova Janela(_blank)',
+		targetTop	: 'Janela primaria (_top)',
+		targetSelf	: 'Mesma janela (_self)',
+		targetParent	: 'Janela Pai (_parent)',
+		targetFrameName	: 'Nome do Frame Destino',
+		targetPopupName	: 'Nome da Janela de Popup',
+		popupFeatures	: 'Características de Janela de Popup',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Barra de Estado',
+		popupLocationBar	: 'Barra de localização',
+		popupToolbar	: 'Barra de Ferramentas',
+		popupMenuBar	: 'Barra de Menu',
+		popupFullScreen	: 'Janela Completa (IE)',
+		popupScrollBars	: 'Barras de deslocamento',
+		popupDependent	: 'Dependente (Netscape)',
+		popupWidth		: 'Largura',
+		popupLeft		: 'Posição Esquerda',
+		popupHeight		: 'Altura',
+		popupTop		: 'Posição Direita',
+		id				: 'Id', // MISSING
+		langDir			: 'Orientação de idioma',
+		langDirNotSet	: '<Não definido>',
+		langDirLTR		: 'Esquerda à Direita (LTR)',
+		langDirRTL		: 'Direita a Esquerda (RTL)',
+		acccessKey		: 'Chave de Acesso',
+		name			: 'Nome',
+		langCode		: 'Orientação de idioma',
+		tabIndex		: 'Índice de Tubulação',
+		advisoryTitle	: 'Título',
+		advisoryContentType	: 'Tipo de Conteúdo',
+		cssClasses		: 'Classes de Estilo de Folhas Classes',
+		charset			: 'Fonte de caracteres vinculado',
+		styles			: 'Estilo',
+		selectAnchor	: 'Seleccionar una referência',
+		anchorName		: 'Por Nome de Referência',
+		anchorId		: 'Por ID de elemento',
+		emailAddress	: 'Endereço de E-Mail',
+		emailSubject	: 'Título de Mensagem',
+		emailBody		: 'Corpo da Mensagem',
+		noAnchors		: '(Não há referências disponíveis no documento)',
+		noUrl			: 'Por favor introduza a hiperligação URL',
+		noEmail			: 'Por favor introduza o endereço de e-mail'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: ' Inserir/Editar Âncora',
+		menu		: 'Propriedades da Âncora',
+		title		: 'Propriedades da Âncora',
+		name		: 'Nome da Âncora',
+		errorName	: 'Por favor, introduza o nome da âncora'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'Procurar',
+		replace				: 'Substituir',
+		findWhat			: 'Texto a Procurar:',
+		replaceWith			: 'Substituir por:',
+		notFoundMsg			: 'O texto especificado não foi encontrado.',
+		matchCase			: 'Maiúsculas/Minúsculas',
+		matchWord			: 'Coincidir com toda a palavra',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Substituir Tudo',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabela',
+		title		: 'Propriedades da Tabela',
+		menu		: 'Propriedades da Tabela',
+		deleteTable	: 'Eliminar Tabela',
+		rows		: 'Linhas',
+		columns		: 'Colunas',
+		border		: 'Tamanho do Limite',
+		align		: 'Alinhamento',
+		alignNotSet	: '<Não definido>',
+		alignLeft	: 'Esquerda',
+		alignCenter	: 'Centrado',
+		alignRight	: 'Direita',
+		width		: 'Largura',
+		widthPx		: 'pixeis',
+		widthPc		: 'percentagem',
+		height		: 'Altura',
+		cellSpace	: 'Esp. e/células',
+		cellPad		: 'Esp. interior',
+		caption		: 'Título',
+		summary		: 'Sumário',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Célula',
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'Eliminar Célula',
+			merge			: 'Unir Células',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Linha',
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'Eliminar Linhas'
+		},
+
+		column :
+		{
+			menu			: 'Coluna',
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'Eliminar Coluna'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Propriedades do Botão',
+		text		: 'Texto (Valor)',
+		type		: 'Tipo',
+		typeBtn		: 'Button', // MISSING
+		typeSbm		: 'Submit', // MISSING
+		typeRst		: 'Reset' // MISSING
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Propriedades da Caixa de Verificação',
+		radioTitle	: 'Propriedades do Botão de Opção',
+		value		: 'Valor',
+		selected	: 'Seleccionado'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Propriedades do Formulário',
+		menu		: 'Propriedades do Formulário',
+		action		: 'Acção',
+		method		: 'Método',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Destino',
+		targetNotSet	: '<Não definido>',
+		targetNew	: 'Nova Janela(_blank)',
+		targetTop	: 'Janela primaria (_top)',
+		targetSelf	: 'Mesma janela (_self)',
+		targetParent	: 'Janela Pai (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Propriedades da Caixa de Combinação',
+		selectInfo	: 'Informação',
+		opAvail		: 'Opções Possíveis',
+		value		: 'Valor',
+		size		: 'Tamanho',
+		lines		: 'linhas',
+		chkMulti	: 'Permitir selecções múltiplas',
+		opText		: 'Texto',
+		opValue		: 'Valor',
+		btnAdd		: 'Adicionar',
+		btnModify	: 'Modificar',
+		btnUp		: 'Para cima',
+		btnDown		: 'Para baixo',
+		btnSetValue : 'Definir um valor por defeito',
+		btnDelete	: 'Apagar'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Propriedades da Área de Texto',
+		cols		: 'Colunas',
+		rows		: 'Linhas'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Propriedades do Campo de Texto',
+		name		: 'Nome',
+		value		: 'Valor',
+		charWidth	: 'Tamanho do caracter',
+		maxChars	: 'Nr. Máximo de Caracteres',
+		type		: 'Tipo',
+		typeText	: 'Texto',
+		typePass	: 'Palavra-chave'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Propriedades do Campo Escondido',
+		name	: 'Nome',
+		value	: 'Valor'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Propriedades da Imagem',
+		titleButton	: 'Propriedades do Botão de imagens',
+		menu		: 'Propriedades da Imagem',
+		infoTab	: 'Informação da Imagem',
+		btnUpload	: 'Enviar para o Servidor',
+		url		: 'URL',
+		upload	: 'Carregar',
+		alt		: 'Texto Alternativo',
+		width		: 'Largura',
+		height	: 'Altura',
+		lockRatio	: 'Proporcional',
+		resetSize	: 'Tamanho Original',
+		border	: 'Limite',
+		hSpace	: 'Esp.Horiz',
+		vSpace	: 'Esp.Vert',
+		align		: 'Alinhamento',
+		alignLeft	: 'Esquerda',
+		alignAbsBottom: 'Abs inferior',
+		alignAbsMiddle: 'Abs centro',
+		alignBaseline	: 'Linha de base',
+		alignBottom	: 'Fundo',
+		alignMiddle	: 'Centro',
+		alignRight	: 'Direita',
+		alignTextTop	: 'Topo do texto',
+		alignTop	: 'Topo',
+		preview	: 'Pré-visualizar',
+		alertUrl	: 'Por favor introduza o URL da imagem',
+		linkTab	: 'Hiperligação',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Propriedades do Flash',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Propriedades do Flash',
+		chkPlay		: 'Reproduzir automaticamente',
+		chkLoop		: 'Loop',
+		chkMenu		: 'Permitir Menu do Flash',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Escala',
+		scaleAll		: 'Mostrar tudo',
+		scaleNoBorder	: 'Sem Limites',
+		scaleFit		: 'Tamanho Exacto',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Alinhamento',
+		alignLeft	: 'Esquerda',
+		alignAbsBottom: 'Abs inferior',
+		alignAbsMiddle: 'Abs centro',
+		alignBaseline	: 'Linha de base',
+		alignBottom	: 'Fundo',
+		alignMiddle	: 'Centro',
+		alignRight	: 'Direita',
+		alignTextTop	: 'Topo do texto',
+		alignTop	: 'Topo',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Cor de Fundo',
+		width	: 'Largura',
+		height	: 'Altura',
+		hSpace	: 'Esp.Horiz',
+		vSpace	: 'Esp.Vert',
+		validateSrc : 'Por favor introduza a hiperligação URL',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Verificação Ortográfica',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Não está num directório',
+		changeTo		: 'Mudar para',
+		btnIgnore		: 'Ignorar',
+		btnIgnoreAll	: 'Ignorar Tudo',
+		btnReplace		: 'Substituir',
+		btnReplaceAll	: 'Substituir Tudo',
+		btnUndo			: 'Anular',
+		noSuggestions	: '- Sem sugestões -',
+		progress		: 'Verificação ortográfica em progresso…',
+		noMispell		: 'Verificação ortográfica completa: não foram encontrados erros',
+		noChanges		: 'Verificação ortográfica completa: não houve alteração de palavras',
+		oneChange		: 'Verificação ortográfica completa: uma palavra alterada',
+		manyChanges		: 'Verificação ortográfica completa: %1 palavras alteradas',
+		ieSpellDownload	: ' Verificação ortográfica não instalada. Quer descarregar agora?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Emoticons',
+		title	: 'Inserir um Emoticon'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Numeração',
+	bulletedlist : 'Marcas',
+	indent : 'Aumentar Avanço',
+	outdent : 'Diminuir Avanço',
+
+	justify :
+	{
+		left : 'Alinhar à Esquerda',
+		center : 'Alinhar ao Centro',
+		right : 'Alinhar à Direita',
+		block : 'Justificado'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Colar',
+		cutError	: 'A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl+X).',
+		copyError	: 'A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl+C).',
+		pasteMsg	: 'Por favor, cole dentro da seguinte caixa usando o teclado (<STRONG>Ctrl+V</STRONG>) e prima <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Colar do Word',
+		title : 'Colar do Word',
+		advice : 'Por favor, cole dentro da seguinte caixa usando o teclado (<STRONG>Ctrl+V</STRONG>) e prima <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignorar da definições do Tipo de Letra ',
+		removeStyle : 'Remover as definições de Estilos'
+	},
+
+	pasteText :
+	{
+		button : 'Colar como Texto Simples',
+		title : 'Colar como Texto Simples'
+	},
+
+	templates :
+	{
+		button : 'Modelos',
+		title : 'Modelo de Conteúdo',
+		insertOption: 'Replace actual contents', // MISSING
+		selectPromptMsg: 'Por favor, seleccione o modelo a abrir no editor<br>(o conteúdo actual será perdido):',
+		emptyListMsg : '(Sem modelos definidos)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Estilo',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Formato',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Formato',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatado',
+		tag_address : 'Endereço',
+		tag_h1 : 'Título 1',
+		tag_h2 : 'Título 2',
+		tag_h3 : 'Título 3',
+		tag_h4 : 'Título 4',
+		tag_h5 : 'Título 5',
+		tag_h6 : 'Título 6',
+		tag_div : 'Normal (DIV)' // MISSING
+	},
+
+	font :
+	{
+		label : 'Tipo de Letra',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Tipo de Letra',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Tamanho',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Tamanho',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Cor do Texto',
+		bgColorTitle : 'Cor de Fundo',
+		auto : 'Automático',
+		more : 'Mais Cores...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/da.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/da.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/da.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Danish language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['da'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Editor, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Kilde',
+	newPage			: 'Ny side',
+	save			: 'Gem',
+	preview			: 'Vis eksempel',
+	cut				: 'Klip',
+	copy			: 'Kopiér',
+	paste			: 'Indsæt',
+	print			: 'Udskriv',
+	underline		: 'Understreget',
+	bold			: 'Fed',
+	italic			: 'Kursiv',
+	selectAll		: 'Vælg alt',
+	removeFormat	: 'Fjern formatering',
+	strike			: 'Gennemstreget',
+	subscript		: 'Sænket skrift',
+	superscript		: 'Hævet skrift',
+	horizontalrule	: 'Indsæt vandret streg',
+	pagebreak		: 'Indsæt sideskift',
+	unlink			: 'Fjern hyperlink',
+	undo			: 'Fortryd',
+	redo			: 'Annullér fortryd',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Gennemse...',
+		url				: 'URL',
+		protocol		: 'Protokol',
+		upload			: 'Upload',
+		uploadSubmit	: 'Upload',
+		image			: 'Indsæt billede',
+		flash			: 'Indsæt Flash',
+		form			: 'Indsæt formular',
+		checkbox		: 'Indsæt afkrydsningsfelt',
+		radio		: 'Indsæt alternativknap',
+		textField		: 'Indsæt tekstfelt',
+		textarea		: 'Indsæt tekstboks',
+		hiddenField		: 'Indsæt skjult felt',
+		button			: 'Indsæt knap',
+		select	: 'Indsæt liste',
+		imageButton		: 'Indsæt billedknap',
+		notSet			: '<intet valgt>',
+		id				: 'Id',
+		name			: 'Navn',
+		langDir			: 'Tekstretning',
+		langDirLtr		: 'Fra venstre mod højre (LTR)',
+		langDirRtl		: 'Fra højre mod venstre (RTL)',
+		langCode		: 'Sprogkode',
+		longDescr		: 'Udvidet beskrivelse',
+		cssClass		: 'Typografiark (CSS)',
+		advisoryTitle	: 'Titel',
+		cssStyle		: 'Typografi (CSS)',
+		ok				: 'OK',
+		cancel			: 'Annullér',
+		generalTab		: 'Generelt',
+		advancedTab		: 'Avanceret',
+		validateNumberFailed	: 'Værdien er ikke et tal.',
+		confirmNewPage	: 'Alt indhold, der ikke er blevet gemt, vil gå tabt. Er du sikker på, at du vil indlæse en ny side?',
+		confirmCancel	: 'Nogle af indstillingerne er blevet ændret. Er du sikker på, at du vil lukke vinduet?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, ikke tilgængelig</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Indsæt symbol',
+		title		: 'Vælg symbol'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Indsæt/redigér hyperlink',
+		menu		: 'Redigér hyperlink',
+		title		: 'Egenskaber for hyperlink',
+		info		: 'Generelt',
+		target		: 'Mål',
+		upload		: 'Upload',
+		advanced	: 'Avanceret',
+		type		: 'Type',
+		toAnchor	: 'Bogmærke på denne side',
+		toEmail		: 'E-mail',
+		target		: 'Mål',
+		targetNotSet	: '<intet valgt>',
+		targetFrame	: '<ramme>',
+		targetPopup	: '<popup vindue>',
+		targetNew	: 'Nyt vindue (_blank)',
+		targetTop	: 'Hele vinduet (_top)',
+		targetSelf	: 'Samme vindue/ramme (_self)',
+		targetParent	: 'Overordnet vindue/ramme (_parent)',
+		targetFrameName	: 'Destinationsvinduets navn',
+		targetPopupName	: 'Popup vinduets navn',
+		popupFeatures	: 'Egenskaber for popup',
+		popupResizable	: 'Justérbar',
+		popupStatusBar	: 'Statuslinje',
+		popupLocationBar	: 'Adresselinje',
+		popupToolbar	: 'Værktøjslinje',
+		popupMenuBar	: 'Menulinje',
+		popupFullScreen	: 'Fuld skærm (IE)',
+		popupScrollBars	: 'Scrollbar',
+		popupDependent	: 'Koblet/dependent (Netscape)',
+		popupWidth		: 'Bredde',
+		popupLeft		: 'Position fra venstre',
+		popupHeight		: 'Højde',
+		popupTop		: 'Position fra toppen',
+		id				: 'Id',
+		langDir			: 'Tekstretning',
+		langDirNotSet	: '<intet valgt>',
+		langDirLTR		: 'Fra venstre mod højre (LTR)',
+		langDirRTL		: 'Fra højre mod venstre (RTL)',
+		acccessKey		: 'Genvejstast',
+		name			: 'Navn',
+		langCode		: 'Tekstretning',
+		tabIndex		: 'Tabulator indeks',
+		advisoryTitle	: 'Titel',
+		advisoryContentType	: 'Indholdstype',
+		cssClasses		: 'Typografiark',
+		charset			: 'Tegnsæt',
+		styles			: 'Typografi',
+		selectAnchor	: 'Vælg et anker',
+		anchorName		: 'Efter anker navn',
+		anchorId		: 'Efter element Id',
+		emailAddress	: 'E-mail adresse',
+		emailSubject	: 'Emne',
+		emailBody		: 'Besked',
+		noAnchors		: '(Ingen bogmærker i dokumentet)',
+		noUrl			: 'Indtast hyperlink URL!',
+		noEmail			: 'Indtast e-mail adresse!'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Indsæt/redigér bogmærke',
+		menu		: 'Egenskaber for bogmærke',
+		title		: 'Egenskaber for bogmærke',
+		name		: 'Bogmærke navn',
+		errorName	: 'Indtast bogmærke navn'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Søg og erstat',
+		find				: 'Søg',
+		replace				: 'Erstat',
+		findWhat			: 'Søg efter:',
+		replaceWith			: 'Erstat med:',
+		notFoundMsg			: 'Søgeteksten blev ikke fundet',
+		matchCase			: 'Forskel på store og små bogstaver',
+		matchWord			: 'Kun hele ord',
+		matchCyclic			: 'Match cyklisk',
+		replaceAll			: 'Erstat alle',
+		replaceSuccessMsg	: '%1 forekomst(er) erstattet.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabel',
+		title		: 'Egenskaber for tabel',
+		menu		: 'Egenskaber for tabel',
+		deleteTable	: 'Slet tabel',
+		rows		: 'Rækker',
+		columns		: 'Kolonner',
+		border		: 'Rammebredde',
+		align		: 'Justering',
+		alignNotSet	: '<intet valgt>',
+		alignLeft	: 'Venstrestillet',
+		alignCenter	: 'Centreret',
+		alignRight	: 'Højrestillet',
+		width		: 'Bredde',
+		widthPx		: 'pixels',
+		widthPc		: 'procent',
+		height		: 'Højde',
+		cellSpace	: 'Celleafstand',
+		cellPad		: 'Cellemargen',
+		caption		: 'Titel',
+		summary		: 'Resumé',
+		headers		: 'Header',
+		headersNone		: 'Ingen',
+		headersColumn	: 'Første kolonne',
+		headersRow		: 'Første række',
+		headersBoth		: 'Begge',
+		invalidRows		: 'Antallet af rækker skal være større end 0.',
+		invalidCols		: 'Antallet af kolonner skal være større end 0.',
+		invalidBorder	: 'Rammetykkelse skal være et tal.',
+		invalidWidth	: 'Tabelbredde skal være et tal.',
+		invalidHeight	: 'Tabelhøjde skal være et tal.',
+		invalidCellSpacing	: 'Celleafstand skal være et tal.',
+		invalidCellPadding	: 'Cellemargen skal være et tal.',
+
+		cell :
+		{
+			menu			: 'Celle',
+			insertBefore	: 'Indsæt celle før',
+			insertAfter		: 'Indsæt celle efter',
+			deleteCell		: 'Slet celle',
+			merge			: 'Flet celler',
+			mergeRight		: 'Flet til højre',
+			mergeDown		: 'Flet nedad',
+			splitHorizontal	: 'Del celle vandret',
+			splitVertical	: 'Del celle lodret',
+			title			: 'Celleegenskaber',
+			cellType		: 'Celletype',
+			rowSpan			: 'Række span (rows span)',
+			colSpan			: 'Kolonne span (columns span)',
+			wordWrap		: 'Tekstombrydning',
+			hAlign			: 'Vandret justering',
+			vAlign			: 'Lodret justering',
+			alignTop		: 'Top',
+			alignMiddle		: 'Midt',
+			alignBottom		: 'Bund',
+			alignBaseline	: 'Grundlinje',
+			bgColor			: 'Baggrundsfarve',
+			borderColor		: 'Rammefarve',
+			data			: 'Data',
+			header			: 'Header',
+			yes				: 'Ja',
+			no				: 'Nej',
+			invalidWidth	: 'Cellebredde skal være et tal.',
+			invalidHeight	: 'Cellehøjde skal være et tal.',
+			invalidRowSpan	: 'Række span skal være et heltal.',
+			invalidColSpan	: 'Kolonne span skal være et heltal.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Række',
+			insertBefore	: 'Indsæt række før',
+			insertAfter		: 'Indsæt række efter',
+			deleteRow		: 'Slet række'
+		},
+
+		column :
+		{
+			menu			: 'Kolonne',
+			insertBefore	: 'Indsæt kolonne før',
+			insertAfter		: 'Indsæt kolonne efter',
+			deleteColumn	: 'Slet kolonne'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Egenskaber for knap',
+		text		: 'Tekst',
+		type		: 'Type',
+		typeBtn		: 'Knap',
+		typeSbm		: 'Send',
+		typeRst		: 'Nulstil'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Egenskaber for afkrydsningsfelt',
+		radioTitle	: 'Egenskaber for alternativknap',
+		value		: 'Værdi',
+		selected	: 'Valgt'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Egenskaber for formular',
+		menu		: 'Egenskaber for formular',
+		action		: 'Handling',
+		method		: 'Metode',
+		encoding	: 'Kodning (encoding)',
+		target		: 'Mål',
+		targetNotSet	: '<intet valgt>',
+		targetNew	: 'Nyt vindue (_blank)',
+		targetTop	: 'Hele vinduet (_top)',
+		targetSelf	: 'Samme vindue/ramme (_self)',
+		targetParent	: 'Overordnet vindue/ramme (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Egenskaber for liste',
+		selectInfo	: 'Generelt',
+		opAvail		: 'Valgmuligheder',
+		value		: 'Værdi',
+		size		: 'Størrelse',
+		lines		: 'Linjer',
+		chkMulti	: 'Tillad flere valg',
+		opText		: 'Tekst',
+		opValue		: 'Værdi',
+		btnAdd		: 'Tilføj',
+		btnModify	: 'Redigér',
+		btnUp		: 'Op',
+		btnDown		: 'Ned',
+		btnSetValue : 'Sæt som valgt',
+		btnDelete	: 'Slet'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Egenskaber for tekstboks',
+		cols		: 'Kolonner',
+		rows		: 'Rækker'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Egenskaber for tekstfelt',
+		name		: 'Navn',
+		value		: 'Værdi',
+		charWidth	: 'Bredde (tegn)',
+		maxChars	: 'Max. antal tegn',
+		type		: 'Type',
+		typeText	: 'Tekst',
+		typePass	: 'Adgangskode'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Egenskaber for skjult felt',
+		name	: 'Navn',
+		value	: 'Værdi'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Egenskaber for billede',
+		titleButton	: 'Egenskaber for billedknap',
+		menu		: 'Egenskaber for billede',
+		infoTab	: 'Generelt',
+		btnUpload	: 'Upload',
+		url		: 'URL',
+		upload	: 'Upload',
+		alt		: 'Alternativ tekst',
+		width		: 'Bredde',
+		height	: 'Højde',
+		lockRatio	: 'Lås størrelsesforhold',
+		resetSize	: 'Nulstil størrelse',
+		border	: 'Ramme',
+		hSpace	: 'Vandret margen',
+		vSpace	: 'Lodret margen',
+		align		: 'Justering',
+		alignLeft	: 'Venstre',
+		alignAbsBottom: 'Absolut nederst',
+		alignAbsMiddle: 'Absolut centreret',
+		alignBaseline	: 'Grundlinje',
+		alignBottom	: 'Nederst',
+		alignMiddle	: 'Centreret',
+		alignRight	: 'Højre',
+		alignTextTop	: 'Toppen af teksten',
+		alignTop	: 'Øverst',
+		preview	: 'Vis eksempel',
+		alertUrl	: 'Indtast stien til billedet',
+		linkTab	: 'Hyperlink',
+		button2Img	: 'Vil du lave billedknappen om til et almindeligt billede?',
+		img2Button	: 'Vil du lave billedet om til en billedknap?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Egenskaber for Flash',
+		propertiesTab	: 'Egenskaber',
+		title		: 'Egenskaber for Flash',
+		chkPlay		: 'Automatisk afspilning',
+		chkLoop		: 'Gentagelse',
+		chkMenu		: 'Vis Flash menu',
+		chkFull		: 'Tillad fuldskærm',
+ 		scale		: 'Skalér',
+		scaleAll		: 'Vis alt',
+		scaleNoBorder	: 'Ingen ramme',
+		scaleFit		: 'Tilpas størrelse',
+		access			: 'Script adgang',
+		accessAlways	: 'Altid',
+		accessSameDomain	: 'Samme domæne',
+		accessNever	: 'Aldrig',
+		align		: 'Justering',
+		alignLeft	: 'Venstre',
+		alignAbsBottom: 'Absolut nederst',
+		alignAbsMiddle: 'Absolut centreret',
+		alignBaseline	: 'Grundlinje',
+		alignBottom	: 'Nederst',
+		alignMiddle	: 'Centreret',
+		alignRight	: 'Højre',
+		alignTextTop	: 'Toppen af teksten',
+		alignTop	: 'Øverst',
+		quality		: 'Kvalitet',
+		qualityBest		 : 'Bedste',
+		qualityHigh		 : 'Høj',
+		qualityAutoHigh	 : 'Auto høj',
+		qualityMedium	 : 'Medium',
+		qualityAutoLow	 : 'Auto lav',
+		qualityLow		 : 'Lav',
+		windowModeWindow	 : 'Vindue',
+		windowModeOpaque	 : 'Gennemsigtig (opaque)',
+		windowModeTransparent	 : 'Transparent',
+		windowMode	: 'Vinduestilstand',
+		flashvars	: 'Variabler for Flash',
+		bgcolor	: 'Baggrundsfarve',
+		width	: 'Bredde',
+		height	: 'Højde',
+		hSpace	: 'Vandret margen',
+		vSpace	: 'Lodret margen',
+		validateSrc : 'Indtast hyperlink URL!',
+		validateWidth : 'Bredde skal være et tal.',
+		validateHeight : 'Højde skal være et tal.',
+		validateHSpace : 'Vandret margen skal være et tal.',
+		validateVSpace : 'Lodret margen skal være et tal.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Stavekontrol',
+		title			: 'Stavekontrol',
+		notAvailable	: 'Stavekontrol er desværre ikke tilgængelig.',
+		errorLoading	: 'Fejl ved indlæsning af host: %s.',
+		notInDic		: 'Ikke i ordbogen',
+		changeTo		: 'Forslag',
+		btnIgnore		: 'Ignorér',
+		btnIgnoreAll	: 'Ignorér alle',
+		btnReplace		: 'Erstat',
+		btnReplaceAll	: 'Erstat alle',
+		btnUndo			: 'Tilbage',
+		noSuggestions	: '(ingen forslag)',
+		progress		: 'Stavekontrollen arbejder...',
+		noMispell		: 'Stavekontrol færdig: Ingen fejl fundet',
+		noChanges		: 'Stavekontrol færdig: Ingen ord ændret',
+		oneChange		: 'Stavekontrol færdig: Et ord ændret',
+		manyChanges		: 'Stavekontrol færdig: %1 ord ændret',
+		ieSpellDownload	: 'Stavekontrol ikke installeret. Vil du installere den nu?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Vælg smiley'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element'
+	},
+
+	numberedlist : 'Talopstilling',
+	bulletedlist : 'Punktopstilling',
+	indent : 'Forøg indrykning',
+	outdent : 'Formindsk indrykning',
+
+	justify :
+	{
+		left : 'Venstrestillet',
+		center : 'Centreret',
+		right : 'Højrestillet',
+		block : 'Lige margener'
+	},
+
+	blockquote : 'Blokcitat',
+
+	clipboard :
+	{
+		title		: 'Indsæt',
+		cutError	: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at klippe teksten (Ctrl+X).',
+		copyError	: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at kopiere teksten (Ctrl+C).',
+		pasteMsg	: 'Indsæt i feltet herunder (<STRONG>Ctrl+V</STRONG>) og klik på <STRONG>OK</STRONG>.',
+		securityMsg	: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Du skal indsætte udklipsholderens indhold i dette vindue igen.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Indsæt fra Word',
+		title : 'Indsæt fra Word',
+		advice : 'Indsæt i feltet herunder (<STRONG>Ctrl+V</STRONG>) og klik på <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignorér skrifttypedefinitioner',
+		removeStyle : 'Ignorér typografi'
+	},
+
+	pasteText :
+	{
+		button : 'Indsæt som ikke-formateret tekst',
+		title : 'Indsæt som ikke-formateret tekst'
+	},
+
+	templates :
+	{
+		button : 'Skabeloner',
+		title : 'Indholdsskabeloner',
+		insertOption: 'Erstat det faktiske indhold',
+		selectPromptMsg: 'Vælg den skabelon, som skal åbnes i editoren (nuværende indhold vil blive overskrevet):',
+		emptyListMsg : '(Der er ikke defineret nogen skabelon)'
+	},
+
+	showBlocks : 'Vis afsnitsmærker',
+
+	stylesCombo :
+	{
+		label : 'Typografi',
+		voiceLabel : 'Typografi',
+		panelVoiceLabel : 'Vælg typografi',
+		panelTitle1 : 'Block typografi',
+		panelTitle2 : 'Inline typografi',
+		panelTitle3 : 'Object typografi'
+	},
+
+	format :
+	{
+		label : 'Formatering',
+		voiceLabel : 'Formatering',
+		panelTitle : 'Formatering',
+		panelVoiceLabel : 'Vælg afsnitsformatering',
+
+		tag_p : 'Normal',
+		tag_pre : 'Formateret',
+		tag_address : 'Adresse',
+		tag_h1 : 'Overskrift 1',
+		tag_h2 : 'Overskrift 2',
+		tag_h3 : 'Overskrift 3',
+		tag_h4 : 'Overskrift 4',
+		tag_h5 : 'Overskrift 5',
+		tag_h6 : 'Overskrift 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Skrifttype',
+		voiceLabel : 'Skrifttype',
+		panelTitle : 'Skrifttype',
+		panelVoiceLabel : 'Vælg skrifttype'
+	},
+
+	fontSize :
+	{
+		label : 'Skriftstørrelse',
+		voiceLabel : 'Skriftstørrelse',
+		panelTitle : 'Skriftstørrelse',
+		panelVoiceLabel : 'Vælg skriftstørrelse'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Tekstfarve',
+		bgColorTitle : 'Baggrundsfarve',
+		auto : 'Automatisk',
+		more : 'Flere farver...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Stavekontrol mens du skriver',
+		enable : 'Aktivér SCAYT',
+		disable : 'Deaktivér SCAYT',
+		about : 'Om SCAYT',
+		toggle : 'Skift/toggle SCAYT',
+		options : 'Indstillinger',
+		langs : 'Sprog',
+		moreSuggestions : 'Flere forslag',
+		ignore : 'Ignorér',
+		ignoreAll : 'Ignorér alle',
+		addWord : 'Tilføj ord',
+		emptyDic : 'Ordbogsnavn må ikke være tom.',
+		optionsTab : 'Indstillinger',
+		languagesTab : 'Sprog',
+		dictionariesTab : 'Ordbøger',
+		aboutTab : 'Om'
+	},
+
+	about :
+	{
+		title : 'Om CKEditor',
+		dlgTitle : 'Om CKEditor',
+		moreInfo : 'For informationer omkring licens, se venligst vores hjemmeside (på engelsk):',
+		copy : 'Copyright &copy; $1. Alle rettigheder forbeholdes.'
+	},
+
+	maximize : 'Maximér',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anker',
+		flash : 'Flashanimation',
+		div : 'Sideskift',
+		unknown : 'Ukendt objekt'
+	},
+
+	resize : 'Træk for at skalere',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/sr.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/sr.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/sr.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Serbian (Cyrillic) language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['sr'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Kôд',
+	newPage			: 'Нова страница',
+	save			: 'Сачувај',
+	preview			: 'Изглед странице',
+	cut				: 'Исеци',
+	copy			: 'Копирај',
+	paste			: 'Залепи',
+	print			: 'Штампа',
+	underline		: 'Подвучено',
+	bold			: 'Подебљано',
+	italic			: 'Курзив',
+	selectAll		: 'Означи све',
+	removeFormat	: 'Уклони форматирање',
+	strike			: 'Прецртано',
+	subscript		: 'Индекс',
+	superscript		: 'Степен',
+	horizontalrule	: 'Унеси хоризонталну линију',
+	pagebreak		: 'Insert Page Break for Printing', // MISSING
+	unlink			: 'Уклони линк',
+	undo			: 'Поништи акцију',
+	redo			: 'Понови акцију',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Претражи сервер',
+		url				: 'УРЛ',
+		protocol		: 'Протокол',
+		upload			: 'Пошаљи',
+		uploadSubmit	: 'Пошаљи на сервер',
+		image			: 'Слика',
+		flash			: 'Флеш елемент',
+		form			: 'Форма',
+		checkbox		: 'Поље за потврду',
+		radio		: 'Радио-дугме',
+		textField		: 'Текстуално поље',
+		textarea		: 'Зона текста',
+		hiddenField		: 'Скривено поље',
+		button			: 'Дугме',
+		select	: 'Изборно поље',
+		imageButton		: 'Дугме са сликом',
+		notSet			: '<није постављено>',
+		id				: 'Ид',
+		name			: 'Назив',
+		langDir			: 'Смер језика',
+		langDirLtr		: 'С лева на десно (LTR)',
+		langDirRtl		: 'С десна на лево (RTL)',
+		langCode		: 'Kôд језика',
+		longDescr		: 'Пун опис УРЛ',
+		cssClass		: 'Stylesheet класе',
+		advisoryTitle	: 'Advisory наслов',
+		cssStyle		: 'Стил',
+		ok				: 'OK',
+		cancel			: 'Oткажи',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Напредни тагови',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Унеси специјални карактер',
+		title		: 'Одаберите специјални карактер'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Унеси/измени линк',
+		menu		: 'Промени линк',
+		title		: 'Линк',
+		info		: 'Линк инфо',
+		target		: 'Meтa',
+		upload		: 'Пошаљи',
+		advanced	: 'Напредни тагови',
+		type		: 'Врста линка',
+		toAnchor	: 'Сидро на овој страници',
+		toEmail		: 'Eлектронска пошта',
+		target		: 'Meтa',
+		targetNotSet	: '<није постављено>',
+		targetFrame	: '<оквир>',
+		targetPopup	: '<искачући прозор>',
+		targetNew	: 'Нови прозор (_blank)',
+		targetTop	: 'Прозор на врху (_top)',
+		targetSelf	: 'Исти прозор (_self)',
+		targetParent	: 'Родитељски прозор (_parent)',
+		targetFrameName	: 'Назив одредишног фрејма',
+		targetPopupName	: 'Назив искачућег прозора',
+		popupFeatures	: 'Могућности искачућег прозора',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Статусна линија',
+		popupLocationBar	: 'Локација',
+		popupToolbar	: 'Toolbar',
+		popupMenuBar	: 'Контекстни мени',
+		popupFullScreen	: 'Приказ преко целог екрана (ИE)',
+		popupScrollBars	: 'Скрол бар',
+		popupDependent	: 'Зависно (Netscape)',
+		popupWidth		: 'Ширина',
+		popupLeft		: 'Од леве ивице екрана (пиксела)',
+		popupHeight		: 'Висина',
+		popupTop		: 'Од врха екрана (пиксела)',
+		id				: 'Id', // MISSING
+		langDir			: 'Смер језика',
+		langDirNotSet	: '<није постављено>',
+		langDirLTR		: 'С лева на десно (LTR)',
+		langDirRTL		: 'С десна на лево (RTL)',
+		acccessKey		: 'Приступни тастер',
+		name			: 'Назив',
+		langCode		: 'Смер језика',
+		tabIndex		: 'Таб индекс',
+		advisoryTitle	: 'Advisory наслов',
+		advisoryContentType	: 'Advisory врста садржаја',
+		cssClasses		: 'Stylesheet класе',
+		charset			: 'Linked Resource Charset',
+		styles			: 'Стил',
+		selectAnchor	: 'Одабери сидро',
+		anchorName		: 'По називу сидра',
+		anchorId		: 'Пo Ид-jу елемента',
+		emailAddress	: 'Адреса електронске поште',
+		emailSubject	: 'Наслов',
+		emailBody		: 'Садржај поруке',
+		noAnchors		: '(Нема доступних сидра)',
+		noUrl			: 'Унесите УРЛ линка',
+		noEmail			: 'Откуцајте адресу електронске поште'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Унеси/измени сидро',
+		menu		: 'Особине сидра',
+		title		: 'Особине сидра',
+		name		: 'Име сидра',
+		errorName	: 'Молимо Вас да унесете име сидра'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'Претрага',
+		replace				: 'Замена',
+		findWhat			: 'Пронађи:',
+		replaceWith			: 'Замени са:',
+		notFoundMsg			: 'Тражени текст није пронађен.',
+		matchCase			: 'Разликуј велика и мала слова',
+		matchWord			: 'Упореди целе речи',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Замени све',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Табела',
+		title		: 'Особине табеле',
+		menu		: 'Особине табеле',
+		deleteTable	: 'Delete Table', // MISSING
+		rows		: 'Редова',
+		columns		: 'Kолона',
+		border		: 'Величина оквира',
+		align		: 'Равнање',
+		alignNotSet	: '<није постављено>',
+		alignLeft	: 'Лево',
+		alignCenter	: 'Средина',
+		alignRight	: 'Десно',
+		width		: 'Ширина',
+		widthPx		: 'пиксела',
+		widthPc		: 'процената',
+		height		: 'Висина',
+		cellSpace	: 'Ћелијски простор',
+		cellPad		: 'Размак ћелија',
+		caption		: 'Наслов табеле',
+		summary		: 'Summary', // MISSING
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Cell', // MISSING
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'Обриши ћелије',
+			merge			: 'Спој ћелије',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Row', // MISSING
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'Обриши редове'
+		},
+
+		column :
+		{
+			menu			: 'Column', // MISSING
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'Обриши колоне'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Особине дугмета',
+		text		: 'Текст (вредност)',
+		type		: 'Tип',
+		typeBtn		: 'Button', // MISSING
+		typeSbm		: 'Submit', // MISSING
+		typeRst		: 'Reset' // MISSING
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Особине поља за потврду',
+		radioTitle	: 'Особине радио-дугмета',
+		value		: 'Вредност',
+		selected	: 'Означено'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Особине форме',
+		menu		: 'Особине форме',
+		action		: 'Aкција',
+		method		: 'Mетода',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Meтa',
+		targetNotSet	: '<није постављено>',
+		targetNew	: 'Нови прозор (_blank)',
+		targetTop	: 'Прозор на врху (_top)',
+		targetSelf	: 'Исти прозор (_self)',
+		targetParent	: 'Родитељски прозор (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Особине изборног поља',
+		selectInfo	: 'Инфо',
+		opAvail		: 'Доступне опције',
+		value		: 'Вредност',
+		size		: 'Величина',
+		lines		: 'линија',
+		chkMulti	: 'Дозволи вишеструку селекцију',
+		opText		: 'Текст',
+		opValue		: 'Вредност',
+		btnAdd		: 'Додај',
+		btnModify	: 'Измени',
+		btnUp		: 'Горе',
+		btnDown		: 'Доле',
+		btnSetValue : 'Подеси као означену вредност',
+		btnDelete	: 'Обриши'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Особине зоне текста',
+		cols		: 'Број колона',
+		rows		: 'Број редова'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Особине текстуалног поља',
+		name		: 'Назив',
+		value		: 'Вредност',
+		charWidth	: 'Ширина (карактера)',
+		maxChars	: 'Максимално карактера',
+		type		: 'Тип',
+		typeText	: 'Текст',
+		typePass	: 'Лозинка'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Особине скривеног поља',
+		name	: 'Назив',
+		value	: 'Вредност'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Особине слика',
+		titleButton	: 'Особине дугмета са сликом',
+		menu		: 'Особине слика',
+		infoTab	: 'Инфо слике',
+		btnUpload	: 'Пошаљи на сервер',
+		url		: 'УРЛ',
+		upload	: 'Пошаљи',
+		alt		: 'Алтернативни текст',
+		width		: 'Ширина',
+		height	: 'Висина',
+		lockRatio	: 'Закључај однос',
+		resetSize	: 'Ресетуј величину',
+		border	: 'Оквир',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		align		: 'Равнање',
+		alignLeft	: 'Лево',
+		alignAbsBottom: 'Abs доле',
+		alignAbsMiddle: 'Abs средина',
+		alignBaseline	: 'Базно',
+		alignBottom	: 'Доле',
+		alignMiddle	: 'Средина',
+		alignRight	: 'Десно',
+		alignTextTop	: 'Врх текста',
+		alignTop	: 'Врх',
+		preview	: 'Изглед',
+		alertUrl	: 'Унесите УРЛ слике',
+		linkTab	: 'Линк',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Особине Флеша',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Особине флеша',
+		chkPlay		: 'Аутоматски старт',
+		chkLoop		: 'Понављај',
+		chkMenu		: 'Укључи флеш мени',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Скалирај',
+		scaleAll		: 'Прикажи све',
+		scaleNoBorder	: 'Без ивице',
+		scaleFit		: 'Попуни површину',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Равнање',
+		alignLeft	: 'Лево',
+		alignAbsBottom: 'Abs доле',
+		alignAbsMiddle: 'Abs средина',
+		alignBaseline	: 'Базно',
+		alignBottom	: 'Доле',
+		alignMiddle	: 'Средина',
+		alignRight	: 'Десно',
+		alignTextTop	: 'Врх текста',
+		alignTop	: 'Врх',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Боја позадине',
+		width	: 'Ширина',
+		height	: 'Висина',
+		hSpace	: 'HSpace',
+		vSpace	: 'VSpace',
+		validateSrc : 'Унесите УРЛ линка',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Провери спеловање',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Није у речнику',
+		changeTo		: 'Измени',
+		btnIgnore		: 'Игнориши',
+		btnIgnoreAll	: 'Игнориши све',
+		btnReplace		: 'Замени',
+		btnReplaceAll	: 'Замени све',
+		btnUndo			: 'Врати акцију',
+		noSuggestions	: '- Без сугестија -',
+		progress		: 'Провера спеловања у току...',
+		noMispell		: 'Провера спеловања завршена: грешке нису пронађене',
+		noChanges		: 'Провера спеловања завршена: Није измењена ниједна реч',
+		oneChange		: 'Провера спеловања завршена: Измењена је једна реч',
+		manyChanges		: 'Провера спеловања завршена:  %1 реч(и) је измењено',
+		ieSpellDownload	: 'Провера спеловања није инсталирана. Да ли желите да је скинете са Интернета?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Смајли',
+		title	: 'Унеси смајлија'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Набројиву листу',
+	bulletedlist : 'Ненабројива листа',
+	indent : 'Увећај леву маргину',
+	outdent : 'Смањи леву маргину',
+
+	justify :
+	{
+		left : 'Лево равнање',
+		center : 'Центриран текст',
+		right : 'Десно равнање',
+		block : 'Обострано равнање'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Залепи',
+		cutError	: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl+X).',
+		copyError	: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl+C).',
+		pasteMsg	: 'Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (<STRONG>Ctrl+V</STRONG>) и да притиснете <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Залепи из Worda',
+		title : 'Залепи из Worda',
+		advice : 'Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (<STRONG>Ctrl+V</STRONG>) и да притиснете <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Игнориши Font Face дефиниције',
+		removeStyle : 'Уклони дефиниције стилова'
+	},
+
+	pasteText :
+	{
+		button : 'Залепи као чист текст',
+		title : 'Залепи као чист текст'
+	},
+
+	templates :
+	{
+		button : 'Обрасци',
+		title : 'Обрасци за садржај',
+		insertOption: 'Replace actual contents', // MISSING
+		selectPromptMsg: 'Молимо Вас да одаберете образац који ће бити примењен на страницу (тренутни садржај ће бити обрисан):',
+		emptyListMsg : '(Нема дефинисаних образаца)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Стил',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Формат',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Формат',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatirano',
+		tag_address : 'Adresa',
+		tag_h1 : 'Heading 1',
+		tag_h2 : 'Heading 2',
+		tag_h3 : 'Heading 3',
+		tag_h4 : 'Heading 4',
+		tag_h5 : 'Heading 5',
+		tag_h6 : 'Heading 6',
+		tag_div : 'Normal (DIV)' // MISSING
+	},
+
+	font :
+	{
+		label : 'Фонт',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Фонт',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Величина фонта',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Величина фонта',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Боја текста',
+		bgColorTitle : 'Боја позадине',
+		auto : 'Аутоматски',
+		more : 'Више боја...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/tr.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/tr.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/tr.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Turkish language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['tr'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Kaynak',
+	newPage			: 'Yeni Sayfa',
+	save			: 'Kaydet',
+	preview			: 'Ön İzleme',
+	cut				: 'Kes',
+	copy			: 'Kopyala',
+	paste			: 'Yapıştır',
+	print			: 'Yazdır',
+	underline		: 'Altı Çizgili',
+	bold			: 'Kalın',
+	italic			: 'İtalik',
+	selectAll		: 'Tümünü Seç',
+	removeFormat	: 'Biçimi Kaldır',
+	strike			: 'Üstü Çizgili',
+	subscript		: 'Alt Simge',
+	superscript		: 'Üst Simge',
+	horizontalrule	: 'Yatay Satır Ekle',
+	pagebreak		: 'Sayfa Sonu Ekle',
+	unlink			: 'Köprü Kaldır',
+	undo			: 'Geri Al',
+	redo			: 'Tekrarla',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Sunucuyu Gez',
+		url				: 'URL',
+		protocol		: 'Protokol',
+		upload			: 'Karşıya Yükle',
+		uploadSubmit	: 'Sunucuya Yolla',
+		image			: 'Resim',
+		flash			: 'Flash',
+		form			: 'Form',
+		checkbox		: 'Onay Kutusu',
+		radio		: 'Seçenek Düğmesi',
+		textField		: 'Metin Girişi',
+		textarea		: 'Çok Satırlı Metin',
+		hiddenField		: 'Gizli Veri',
+		button			: 'Düğme',
+		select	: 'Seçim Menüsü',
+		imageButton		: 'Resimli Düğme',
+		notSet			: '<tanımlanmamış>',
+		id				: 'Kimlik',
+		name			: 'Ad',
+		langDir			: 'Dil Yönü',
+		langDirLtr		: 'Soldan Sağa (LTR)',
+		langDirRtl		: 'Sağdan Sola (RTL)',
+		langCode		: 'Dil Kodlaması',
+		longDescr		: 'Uzun Tanımlı URL',
+		cssClass		: 'Biçem Sayfası Sınıfları',
+		advisoryTitle	: 'Danışma Başlığı',
+		cssStyle		: 'Biçem',
+		ok				: 'Tamam',
+		cancel			: 'İptal',
+		generalTab		: 'Genel',
+		advancedTab		: 'Gelişmiş',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Özel Karakter Ekle',
+		title		: 'Özel Karakter Seç'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Köprü Ekle/Düzenle',
+		menu		: 'Köprü Düzenle',
+		title		: 'Köprü',
+		info		: 'Köprü Bilgisi',
+		target		: 'Hedef',
+		upload		: 'Karşıya Yükle',
+		advanced	: 'Gelişmiş',
+		type		: 'Köprü Türü',
+		toAnchor	: 'Bu sayfada çapa',
+		toEmail		: 'E-Posta',
+		target		: 'Hedef',
+		targetNotSet	: '<tanımlanmamış>',
+		targetFrame	: '<çerçeve>',
+		targetPopup	: '<yeni açılan pencere>',
+		targetNew	: 'Yeni Pencere(_blank)',
+		targetTop	: 'En Üst Pencere (_top)',
+		targetSelf	: 'Kendi Penceresi (_self)',
+		targetParent	: 'Anne Pencere (_parent)',
+		targetFrameName	: 'Hedef Çerçeve Adı',
+		targetPopupName	: 'Yeni Açılan Pencere Adı',
+		popupFeatures	: 'Yeni Açılan Pencere Özellikleri',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Durum Çubuğu',
+		popupLocationBar	: 'Yer Çubuğu',
+		popupToolbar	: 'Araç Çubuğu',
+		popupMenuBar	: 'Menü Çubuğu',
+		popupFullScreen	: 'Tam Ekran (IE)',
+		popupScrollBars	: 'Kaydırma Çubukları',
+		popupDependent	: 'Bağımlı (Netscape)',
+		popupWidth		: 'Genişlik',
+		popupLeft		: 'Sola Göre Konum',
+		popupHeight		: 'Yükseklik',
+		popupTop		: 'Yukarıya Göre Konum',
+		id				: 'Id', // MISSING
+		langDir			: 'Dil Yönü',
+		langDirNotSet	: '<tanımlanmamış>',
+		langDirLTR		: 'Soldan Sağa (LTR)',
+		langDirRTL		: 'Sağdan Sola (RTL)',
+		acccessKey		: 'Erişim Tuşu',
+		name			: 'Ad',
+		langCode		: 'Dil Yönü',
+		tabIndex		: 'Sekme İndeksi',
+		advisoryTitle	: 'Danışma Başlığı',
+		advisoryContentType	: 'Danışma İçerik Türü',
+		cssClasses		: 'Biçem Sayfası Sınıfları',
+		charset			: 'Bağlı Kaynak Karakter Gurubu',
+		styles			: 'Biçem',
+		selectAnchor	: 'Çapa Seç',
+		anchorName		: 'Çapa Adı ile',
+		anchorId		: 'Eleman Kimlik Numarası ile',
+		emailAddress	: 'E-Posta Adresi',
+		emailSubject	: 'İleti Konusu',
+		emailBody		: 'İleti Gövdesi',
+		noAnchors		: '(Bu belgede hiç çapa yok)',
+		noUrl			: 'Lütfen köprü URL\'sini yazın',
+		noEmail			: 'Lütfen E-posta adresini yazın'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Çapa Ekle/Düzenle',
+		menu		: 'Çapa Özellikleri',
+		title		: 'Çapa Özellikleri',
+		name		: 'Çapa Adı',
+		errorName	: 'Lütfen çapa için ad giriniz'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Bul ve Değiştir',
+		find				: 'Bul',
+		replace				: 'Değiştir',
+		findWhat			: 'Aranan:',
+		replaceWith			: 'Bununla değiştir:',
+		notFoundMsg			: 'Belirtilen yazı bulunamadı.',
+		matchCase			: 'Büyük/küçük harf duyarlı',
+		matchWord			: 'Kelimenin tamamı uysun',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Tümünü Değiştir',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tablo',
+		title		: 'Tablo Özellikleri',
+		menu		: 'Tablo Özellikleri',
+		deleteTable	: 'Tabloyu Sil',
+		rows		: 'Satırlar',
+		columns		: 'Sütunlar',
+		border		: 'Kenar Kalınlığı',
+		align		: 'Hizalama',
+		alignNotSet	: '<Tanımlanmamış>',
+		alignLeft	: 'Sol',
+		alignCenter	: 'Merkez',
+		alignRight	: 'Sağ',
+		width		: 'Genişlik',
+		widthPx		: 'piksel',
+		widthPc		: 'yüzde',
+		height		: 'Yükseklik',
+		cellSpace	: 'Izgara kalınlığı',
+		cellPad		: 'Izgara yazı arası',
+		caption		: 'Başlık',
+		summary		: 'Özet',
+		headers		: 'Başlıklar',
+		headersNone		: 'Yok',
+		headersColumn	: 'İlk Sütun',
+		headersRow		: 'İlk Satır',
+		headersBoth		: 'Her İkisi',
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Hücre',
+			insertBefore	: 'Hücre Ekle - Önce',
+			insertAfter		: 'Hücre Ekle - Sonra',
+			deleteCell		: 'Hücre Sil',
+			merge			: 'Hücreleri Birleştir',
+			mergeRight		: 'Birleştir - Sağdaki İle ',
+			mergeDown		: 'Birleştir - Aşağıdaki İle ',
+			splitHorizontal	: 'Hücreyi Yatay Böl',
+			splitVertical	: 'Hücreyi Dikey Böl',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Satır',
+			insertBefore	: 'Satır Ekle - Önce',
+			insertAfter		: 'Satır Ekle - Sonra',
+			deleteRow		: 'Satır Sil'
+		},
+
+		column :
+		{
+			menu			: 'Sütun',
+			insertBefore	: 'Kolon Ekle - Önce',
+			insertAfter		: 'Kolon Ekle - Sonra',
+			deleteColumn	: 'Sütun Sil'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Düğme Özellikleri',
+		text		: 'Metin (Değer)',
+		type		: 'Tip',
+		typeBtn		: 'Düğme',
+		typeSbm		: 'Gönder',
+		typeRst		: 'Sıfırla'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Onay Kutusu Özellikleri',
+		radioTitle	: 'Seçenek Düğmesi Özellikleri',
+		value		: 'Değer',
+		selected	: 'Seçili'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Form Özellikleri',
+		menu		: 'Form Özellikleri',
+		action		: 'İşlem',
+		method		: 'Yöntem',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Hedef',
+		targetNotSet	: '<tanımlanmamış>',
+		targetNew	: 'Yeni Pencere(_blank)',
+		targetTop	: 'En Üst Pencere (_top)',
+		targetSelf	: 'Kendi Penceresi (_self)',
+		targetParent	: 'Anne Pencere (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Seçim Menüsü Özellikleri',
+		selectInfo	: 'Bilgi',
+		opAvail		: 'Mevcut Seçenekler',
+		value		: 'Değer',
+		size		: 'Boyut',
+		lines		: 'satır',
+		chkMulti	: 'Çoklu seçime izin ver',
+		opText		: 'Metin',
+		opValue		: 'Değer',
+		btnAdd		: 'Ekle',
+		btnModify	: 'Düzenle',
+		btnUp		: 'Yukarı',
+		btnDown		: 'Aşağı',
+		btnSetValue : 'Seçili değer olarak ata',
+		btnDelete	: 'Sil'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Çok Satırlı Metin Özellikleri',
+		cols		: 'Sütunlar',
+		rows		: 'Satırlar'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Metin Girişi Özellikleri',
+		name		: 'Ad',
+		value		: 'Değer',
+		charWidth	: 'Karakter Genişliği',
+		maxChars	: 'En Fazla Karakter',
+		type		: 'Tür',
+		typeText	: 'Metin',
+		typePass	: 'Parola'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Gizli Veri Özellikleri',
+		name	: 'Ad',
+		value	: 'Değer'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Resim Özellikleri',
+		titleButton	: 'Resimli Düğme Özellikleri',
+		menu		: 'Resim Özellikleri',
+		infoTab	: 'Resim Bilgisi',
+		btnUpload	: 'Sunucuya Yolla',
+		url		: 'URL',
+		upload	: 'Karşıya Yükle',
+		alt		: 'Alternatif Yazı',
+		width		: 'Genişlik',
+		height	: 'Yükseklik',
+		lockRatio	: 'Oranı Kilitle',
+		resetSize	: 'Boyutu Başa Döndür',
+		border	: 'Kenar',
+		hSpace	: 'Yatay Boşluk',
+		vSpace	: 'Dikey Boşluk',
+		align		: 'Hizalama',
+		alignLeft	: 'Sol',
+		alignAbsBottom: 'Tam Altı',
+		alignAbsMiddle: 'Tam Ortası',
+		alignBaseline	: 'Taban Çizgisi',
+		alignBottom	: 'Alt',
+		alignMiddle	: 'Orta',
+		alignRight	: 'Sağ',
+		alignTextTop	: 'Yazı Tepeye',
+		alignTop	: 'Tepe',
+		preview	: 'Ön İzleme',
+		alertUrl	: 'Lütfen resmin URL\'sini yazınız',
+		linkTab	: 'Köprü',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash Özellikleri',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flash Özellikleri',
+		chkPlay		: 'Otomatik Oynat',
+		chkLoop		: 'Döngü',
+		chkMenu		: 'Flash Menüsünü Kullan',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Boyutlandır',
+		scaleAll		: 'Hepsini Göster',
+		scaleNoBorder	: 'Kenar Yok',
+		scaleFit		: 'Tam Sığdır',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Hizalama',
+		alignLeft	: 'Sol',
+		alignAbsBottom: 'Tam Altı',
+		alignAbsMiddle: 'Tam Ortası',
+		alignBaseline	: 'Taban Çizgisi',
+		alignBottom	: 'Alt',
+		alignMiddle	: 'Orta',
+		alignRight	: 'Sağ',
+		alignTextTop	: 'Yazı Tepeye',
+		alignTop	: 'Tepe',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Arka Renk',
+		width	: 'Genişlik',
+		height	: 'Yükseklik',
+		hSpace	: 'Yatay Boşluk',
+		vSpace	: 'Dikey Boşluk',
+		validateSrc : 'Lütfen köprü URL\'sini yazın',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Yazım Denetimi',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Sözlükte Yok',
+		changeTo		: 'Şuna değiştir:',
+		btnIgnore		: 'Yoksay',
+		btnIgnoreAll	: 'Tümünü Yoksay',
+		btnReplace		: 'Değiştir',
+		btnReplaceAll	: 'Tümünü Değiştir',
+		btnUndo			: 'Geri Al',
+		noSuggestions	: '- Öneri Yok -',
+		progress		: 'Yazım denetimi işlemde...',
+		noMispell		: 'Yazım denetimi tamamlandı: Yanlış yazıma rastlanmadı',
+		noChanges		: 'Yazım denetimi tamamlandı: Hiçbir kelime değiştirilmedi',
+		oneChange		: 'Yazım denetimi tamamlandı: Bir kelime değiştirildi',
+		manyChanges		: 'Yazım denetimi tamamlandı: %1 kelime değiştirildi',
+		ieSpellDownload	: 'Yazım denetimi yüklenmemiş. Şimdi yüklemek ister misiniz?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'İfade',
+		title	: 'İfade Ekle'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Numaralı Liste',
+	bulletedlist : 'Simgeli Liste',
+	indent : 'Sekme Arttır',
+	outdent : 'Sekme Azalt',
+
+	justify :
+	{
+		left : 'Sola Dayalı',
+		center : 'Ortalanmış',
+		right : 'Sağa Dayalı',
+		block : 'İki Kenara Yaslanmış'
+	},
+
+	blockquote : 'Blok Oluştur',
+
+	clipboard :
+	{
+		title		: 'Yapıştır',
+		cutError	: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl+X) tuşlarını kullanın.',
+		copyError	: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl+C) tuşlarını kullanın.',
+		pasteMsg	: 'Lütfen aşağıdaki kutunun içine yapıştırın. (<STRONG>Ctrl+V</STRONG>) ve <STRONG>Tamam</STRONG> butonunu tıklayın.',
+		securityMsg	: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin direkt olarak panoya erişimine izin vermiyor. Bu pencere içine tekrar yapıştırmalısınız..'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Word\'den Yapıştır',
+		title : 'Word\'den Yapıştır',
+		advice : 'Lütfen aşağıdaki kutunun içine yapıştırın. (<STRONG>Ctrl+V</STRONG>) ve <STRONG>Tamam</STRONG> butonunu tıklayın.',
+		ignoreFontFace : 'Yazı Tipi tanımlarını yoksay',
+		removeStyle : 'Biçem Tanımlarını çıkar'
+	},
+
+	pasteText :
+	{
+		button : 'Düz Metin Olarak Yapıştır',
+		title : 'Düz Metin Olarak Yapıştır'
+	},
+
+	templates :
+	{
+		button : 'Şablonlar',
+		title : 'İçerik Şablonları',
+		insertOption: 'Mevcut içerik ile değiştir',
+		selectPromptMsg: 'Düzenleyicide açmak için lütfen bir şablon seçin.<br>(hali hazırdaki içerik kaybolacaktır.):',
+		emptyListMsg : '(Belirli bir şablon seçilmedi)'
+	},
+
+	showBlocks : 'Blokları Göster',
+
+	stylesCombo :
+	{
+		label : 'Biçem',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Biçim',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Biçim',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Biçimli',
+		tag_address : 'Adres',
+		tag_h1 : 'Başlık 1',
+		tag_h2 : 'Başlık 2',
+		tag_h3 : 'Başlık 3',
+		tag_h4 : 'Başlık 4',
+		tag_h5 : 'Başlık 5',
+		tag_h6 : 'Başlık 6',
+		tag_div : 'Paragraf (DIV)'
+	},
+
+	font :
+	{
+		label : 'Yazı Türü',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Yazı Türü',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Boyut',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Boyut',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Yazı Rengi',
+		bgColorTitle : 'Arka Renk',
+		auto : 'Otomatik',
+		more : 'Diğer renkler...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/fa.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/fa.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/fa.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Persian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['fa'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'rtl',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'منبع',
+	newPage			: 'برگهٴ تازه',
+	save			: 'ذخیره',
+	preview			: 'پیشنمایش',
+	cut				: 'برش',
+	copy			: 'کپی',
+	paste			: 'چسباندن',
+	print			: 'چاپ',
+	underline		: 'خطزیردار',
+	bold			: 'درشت',
+	italic			: 'خمیده',
+	selectAll		: 'گزینش همه',
+	removeFormat	: 'برداشتن فرمت',
+	strike			: 'میانخط',
+	subscript		: 'زیرنویس',
+	superscript		: 'بالانویس',
+	horizontalrule	: 'گنجاندن خط ِافقی',
+	pagebreak		: 'گنجاندن شکستگی ِپایان ِبرگه',
+	unlink			: 'برداشتن پیوند',
+	undo			: 'واچیدن',
+	redo			: 'بازچیدن',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'فهرستنمایی سرور',
+		url				: 'URL',
+		protocol		: 'پروتکل',
+		upload			: 'انتقال به سرور',
+		uploadSubmit	: 'به سرور بفرست',
+		image			: 'تصویر',
+		flash			: 'Flash',
+		form			: 'فرم',
+		checkbox		: 'خانهٴ گزینهای',
+		radio		: 'دکمهٴ رادیویی',
+		textField		: 'فیلد متنی',
+		textarea		: 'ناحیهٴ متنی',
+		hiddenField		: 'فیلد پنهان',
+		button			: 'دکمه',
+		select	: 'فیلد چندگزینهای',
+		imageButton		: 'دکمهٴ تصویری',
+		notSet			: '<تعیننشده>',
+		id				: 'شناسه',
+		name			: 'نام',
+		langDir			: 'جهتنمای زبان',
+		langDirLtr		: 'چپ به راست (LTR)',
+		langDirRtl		: 'راست به چپ (RTL)',
+		langCode		: 'کد زبان',
+		longDescr		: 'URL توصیف طولانی',
+		cssClass		: 'کلاسهای شیوهنامه(Stylesheet)',
+		advisoryTitle	: 'عنوان کمکی',
+		cssStyle		: 'شیوه(style)',
+		ok				: 'پذیرش',
+		cancel			: 'انصراف',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'پیشرفته',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'گنجاندن نویسهٴ ویژه',
+		title		: 'گزینش نویسهٴویژه'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'گنجاندن/ویرایش ِپیوند',
+		menu		: 'ویرایش پیوند',
+		title		: 'پیوند',
+		info		: 'اطلاعات پیوند',
+		target		: 'مقصد',
+		upload		: 'انتقال به سرور',
+		advanced	: 'پیشرفته',
+		type		: 'نوع پیوند',
+		toAnchor	: 'لنگر در همین صفحه',
+		toEmail		: 'پست الکترونیکی',
+		target		: 'مقصد',
+		targetNotSet	: '<تعیننشده>',
+		targetFrame	: '<فریم>',
+		targetPopup	: '<پنجرهٴ پاپاپ>',
+		targetNew	: 'پنجرهٴ دیگر (_blank)',
+		targetTop	: 'بالاترین پنجره (_top)',
+		targetSelf	: 'همان پنجره (_self)',
+		targetParent	: 'پنجرهٴ والد (_parent)',
+		targetFrameName	: 'نام فریم مقصد',
+		targetPopupName	: 'نام پنجرهٴ پاپاپ',
+		popupFeatures	: 'ویژگیهای پنجرهٴ پاپاپ',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'نوار وضعیت',
+		popupLocationBar	: 'نوار موقعیت',
+		popupToolbar	: 'نوارابزار',
+		popupMenuBar	: 'نوار منو',
+		popupFullScreen	: 'تمامصفحه (IE)',
+		popupScrollBars	: 'میلههای پیمایش',
+		popupDependent	: 'وابسته (Netscape)',
+		popupWidth		: 'پهنا',
+		popupLeft		: 'موقعیت ِچپ',
+		popupHeight		: 'درازا',
+		popupTop		: 'موقعیت ِبالا',
+		id				: 'Id', // MISSING
+		langDir			: 'جهتنمای زبان',
+		langDirNotSet	: '<تعیننشده>',
+		langDirLTR		: 'چپ به راست (LTR)',
+		langDirRTL		: 'راست به چپ (RTL)',
+		acccessKey		: 'کلید دستیابی',
+		name			: 'نام',
+		langCode		: 'جهتنمای زبان',
+		tabIndex		: 'نمایهٴ دسترسی با Tab',
+		advisoryTitle	: 'عنوان کمکی',
+		advisoryContentType	: 'نوع محتوای کمکی',
+		cssClasses		: 'کلاسهای شیوهنامه(Stylesheet)',
+		charset			: 'نویسهگان منبع ِپیوندشده',
+		styles			: 'شیوه(style)',
+		selectAnchor	: 'یک لنگر برگزینید',
+		anchorName		: 'با نام لنگر',
+		anchorId		: 'با شناسهٴ المان',
+		emailAddress	: 'نشانی پست الکترونیکی',
+		emailSubject	: 'موضوع پیام',
+		emailBody		: 'متن پیام',
+		noAnchors		: '(در این سند لنگری دردسترس نیست)',
+		noUrl			: 'لطفا URL پیوند را بنویسید',
+		noEmail			: 'لطفا نشانی پست الکترونیکی را بنویسید'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'گنجاندن/ویرایش ِلنگر',
+		menu		: 'ویژگیهای لنگر',
+		title		: 'ویژگیهای لنگر',
+		name		: 'نام لنگر',
+		errorName	: 'لطفا نام لنگر را بنویسید'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'جستجو و جایگزینی',
+		find				: 'جستجو',
+		replace				: 'جایگزینی',
+		findWhat			: 'چهچیز را مییابید:',
+		replaceWith			: 'جایگزینی با:',
+		notFoundMsg			: 'متن موردنظر یافت نشد.',
+		matchCase			: 'همسانی در بزرگی و کوچکی نویسهها',
+		matchWord			: 'همسانی با واژهٴ کامل',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'جایگزینی همهٴ یافتهها',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'جدول',
+		title		: 'ویژگیهای جدول',
+		menu		: 'ویژگیهای جدول',
+		deleteTable	: 'پاککردن جدول',
+		rows		: 'سطرها',
+		columns		: 'ستونها',
+		border		: 'اندازهٴ لبه',
+		align		: 'چینش',
+		alignNotSet	: '<تعیننشده>',
+		alignLeft	: 'چپ',
+		alignCenter	: 'وسط',
+		alignRight	: 'راست',
+		width		: 'پهنا',
+		widthPx		: 'پیکسل',
+		widthPc		: 'درصد',
+		height		: 'درازا',
+		cellSpace	: 'فاصلهٴ میان سلولها',
+		cellPad		: 'فاصلهٴ پرشده در سلول',
+		caption		: 'عنوان',
+		summary		: 'خلاصه',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'سلول',
+			insertBefore	: 'افزودن سلول قبل از',
+			insertAfter		: 'افزودن سلول بعد از',
+			deleteCell		: 'حذف سلولها',
+			merge			: 'ادغام سلولها',
+			mergeRight		: 'ادغام به راست',
+			mergeDown		: 'ادغام به پایین',
+			splitHorizontal	: 'جدا کردن افقی سلول',
+			splitVertical	: 'جدا کردن عمودی سلول',
+			title			: 'ویژگیهای سلول',
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'سطر',
+			insertBefore	: 'افزودن سطر قبل از',
+			insertAfter		: 'افزودن سطر بعد از',
+			deleteRow		: 'حذف سطرها'
+		},
+
+		column :
+		{
+			menu			: 'ستون',
+			insertBefore	: 'افزودن ستون قبل از',
+			insertAfter		: 'افزودن ستون بعد از',
+			deleteColumn	: 'حذف ستونها'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'ویژگیهای دکمه',
+		text		: 'متن (مقدار)',
+		type		: 'نوع',
+		typeBtn		: 'دکمه',
+		typeSbm		: 'Submit',
+		typeRst		: 'بازنشانی (Reset)'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'ویژگیهای خانهٴ گزینهای',
+		radioTitle	: 'ویژگیهای دکمهٴ رادیویی',
+		value		: 'مقدار',
+		selected	: 'برگزیده'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'ویژگیهای فرم',
+		menu		: 'ویژگیهای فرم',
+		action		: 'رویداد',
+		method		: 'متد',
+		encoding	: 'Encoding', // MISSING
+		target		: 'مقصد',
+		targetNotSet	: '<تعیننشده>',
+		targetNew	: 'پنجرهٴ دیگر (_blank)',
+		targetTop	: 'بالاترین پنجره (_top)',
+		targetSelf	: 'همان پنجره (_self)',
+		targetParent	: 'پنجرهٴ والد (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'ویژگیهای فیلد چندگزینهای',
+		selectInfo	: 'اطلاعات',
+		opAvail		: 'گزینههای دردسترس',
+		value		: 'مقدار',
+		size		: 'اندازه',
+		lines		: 'خطوط',
+		chkMulti	: 'گزینش چندگانه فراهم باشد',
+		opText		: 'متن',
+		opValue		: 'مقدار',
+		btnAdd		: 'افزودن',
+		btnModify	: 'ویرایش',
+		btnUp		: 'بالا',
+		btnDown		: 'پائین',
+		btnSetValue : 'تنظیم به عنوان مقدار ِبرگزیده',
+		btnDelete	: 'پاککردن'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'ویژگیهای ناحیهٴ متنی',
+		cols		: 'ستونها',
+		rows		: 'سطرها'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'ویژگیهای فیلد متنی',
+		name		: 'نام',
+		value		: 'مقدار',
+		charWidth	: 'پهنای نویسه',
+		maxChars	: 'بیشینهٴ نویسهها',
+		type		: 'نوع',
+		typeText	: 'متن',
+		typePass	: 'گذرواژه'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'ویژگیهای فیلد پنهان',
+		name	: 'نام',
+		value	: 'مقدار'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'ویژگیهای تصویر',
+		titleButton	: 'ویژگیهای دکمهٴ تصویری',
+		menu		: 'ویژگیهای تصویر',
+		infoTab	: 'اطلاعات تصویر',
+		btnUpload	: 'به سرور بفرست',
+		url		: 'URL',
+		upload	: 'انتقال به سرور',
+		alt		: 'متن جایگزین',
+		width		: 'پهنا',
+		height	: 'درازا',
+		lockRatio	: 'قفلکردن ِنسبت',
+		resetSize	: 'بازنشانی اندازه',
+		border	: 'لبه',
+		hSpace	: 'فاصلهٴ افقی',
+		vSpace	: 'فاصلهٴ عمودی',
+		align		: 'چینش',
+		alignLeft	: 'چپ',
+		alignAbsBottom: 'پائین مطلق',
+		alignAbsMiddle: 'وسط مطلق',
+		alignBaseline	: 'خطپایه',
+		alignBottom	: 'پائین',
+		alignMiddle	: 'وسط',
+		alignRight	: 'راست',
+		alignTextTop	: 'متن بالا',
+		alignTop	: 'بالا',
+		preview	: 'پیشنمایش',
+		alertUrl	: 'لطفا URL تصویر را بنویسید',
+		linkTab	: 'پیوند',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'ویژگیهای Flash',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'ویژگیهای Flash',
+		chkPlay		: 'آغاز ِخودکار',
+		chkLoop		: 'اجرای پیاپی',
+		chkMenu		: 'دردسترسبودن منوی Flash',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'مقیاس',
+		scaleAll		: 'نمایش همه',
+		scaleNoBorder	: 'بدون کران',
+		scaleFit		: 'جایگیری کامل',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'چینش',
+		alignLeft	: 'چپ',
+		alignAbsBottom: 'پائین مطلق',
+		alignAbsMiddle: 'وسط مطلق',
+		alignBaseline	: 'خطپایه',
+		alignBottom	: 'پائین',
+		alignMiddle	: 'وسط',
+		alignRight	: 'راست',
+		alignTextTop	: 'متن بالا',
+		alignTop	: 'بالا',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'رنگ پسزمینه',
+		width	: 'پهنا',
+		height	: 'درازا',
+		hSpace	: 'فاصلهٴ افقی',
+		vSpace	: 'فاصلهٴ عمودی',
+		validateSrc : 'لطفا URL پیوند را بنویسید',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'بررسی املا',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'در واژهنامه یافت نشد',
+		changeTo		: 'تغییر به',
+		btnIgnore		: 'چشمپوشی',
+		btnIgnoreAll	: 'چشمپوشی همه',
+		btnReplace		: 'جایگزینی',
+		btnReplaceAll	: 'جایگزینی همه',
+		btnUndo			: 'واچینش',
+		noSuggestions	: '- پیشنهادی نیست -',
+		progress		: 'بررسی املا در حال انجام...',
+		noMispell		: 'بررسی املا انجام شد. هیچ غلطاملائی یافت نشد',
+		noChanges		: 'بررسی املا انجام شد. هیچ واژهای تغییر نیافت',
+		oneChange		: 'بررسی املا انجام شد. یک واژه تغییر یافت',
+		manyChanges		: 'بررسی املا انجام شد. %1 واژه تغییر یافت',
+		ieSpellDownload	: 'بررسیکنندهٴ املا نصب نشده است. آیا میخواهید آن را هماکنون دریافت کنید؟'
+	},
+
+	smiley :
+	{
+		toolbar	: 'خندانک',
+		title	: 'گنجاندن خندانک'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'فهرست شمارهدار',
+	bulletedlist : 'فهرست نقطهای',
+	indent : 'افزایش تورفتگی',
+	outdent : 'کاهش تورفتگی',
+
+	justify :
+	{
+		left : 'چپچین',
+		center : 'میانچین',
+		right : 'راستچین',
+		block : 'بلوکچین'
+	},
+
+	blockquote : 'بلوک نقل قول',
+
+	clipboard :
+	{
+		title		: 'چسباندن',
+		cutError	: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحهکلید این کار را انجام دهید (Ctrl+X).',
+		copyError	: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای کپیکردن را انجام دهد. لطفا با دکمههای صفحهکلید این کار را انجام دهید (Ctrl+C).',
+		pasteMsg	: 'لطفا متن را با کلیدهای (<STRONG>Ctrl+V</STRONG>) در این جعبهٴ متنی بچسبانید و <STRONG>پذیرش</STRONG> را بزنید.',
+		securityMsg	: 'به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمیتواند دسترسی مستقیم به دادههای clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'چسباندن از Word',
+		title : 'چسباندن از Word',
+		advice : 'لطفا متن را با کلیدهای (<STRONG>Ctrl+V</STRONG>) در این جعبهٴ متنی بچسبانید و <STRONG>پذیرش</STRONG> را بزنید.',
+		ignoreFontFace : 'چشمپوشی از تعاریف نوع قلم',
+		removeStyle : 'چشمپوشی از تعاریف سبک (style)'
+	},
+
+	pasteText :
+	{
+		button : 'چسباندن به عنوان متن ِساده',
+		title : 'چسباندن به عنوان متن ِساده'
+	},
+
+	templates :
+	{
+		button : 'الگوها',
+		title : 'الگوهای محتویات',
+		insertOption: 'محتویات کنونی جایگزین شوند',
+		selectPromptMsg: 'لطفا الگوی موردنظر را برای بازکردن در ویرایشگر برگزینید<br>(محتویات کنونی از دست خواهند رفت):',
+		emptyListMsg : '(الگوئی تعریف نشده است)'
+	},
+
+	showBlocks : 'نمایش بلوکها',
+
+	stylesCombo :
+	{
+		label : 'سبک',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'فرمت',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'فرمت',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'نرمال',
+		tag_pre : 'فرمتشده',
+		tag_address : 'آدرس',
+		tag_h1 : 'سرنویس 1',
+		tag_h2 : 'سرنویس 2',
+		tag_h3 : 'سرنویس 3',
+		tag_h4 : 'سرنویس 4',
+		tag_h5 : 'سرنویس 5',
+		tag_h6 : 'سرنویس 6',
+		tag_div : 'بند'
+	},
+
+	font :
+	{
+		label : 'قلم',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'قلم',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'اندازه',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'اندازه',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'رنگ متن',
+		bgColorTitle : 'رنگ پسزمینه',
+		auto : 'خودکار',
+		more : 'رنگهای بیشتر...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/bg.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/bg.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/bg.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Bulgarian language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['bg'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Код',
+	newPage			: 'Нова страница',
+	save			: 'Запази',
+	preview			: 'Предварителен изглед',
+	cut				: 'Изрежи',
+	copy			: 'Запамети',
+	paste			: 'Вмъкни',
+	print			: 'Печат',
+	underline		: 'Подчертан',
+	bold			: 'Удебелен',
+	italic			: 'Курсив',
+	selectAll		: 'Селектирай всичко',
+	removeFormat	: 'Изтрий форматирането',
+	strike			: 'Зачертан',
+	subscript		: 'Индекс за база',
+	superscript		: 'Индекс за степен',
+	horizontalrule	: 'Вмъкни хоризонтална линия',
+	pagebreak		: 'Вмъкни нов ред',
+	unlink			: 'Изтрий връзка',
+	undo			: 'Отмени',
+	redo			: 'Повтори',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Разгледай сървъра',
+		url				: 'Пълен път (URL)',
+		protocol		: 'Протокол',
+		upload			: 'Качи',
+		uploadSubmit	: 'Прати към сървъра',
+		image			: 'Изображение',
+		flash			: 'Flash',
+		form			: 'Формуляр',
+		checkbox		: 'Поле за отметка',
+		radio		: 'Поле за опция',
+		textField		: 'Текстово поле',
+		textarea		: 'Текстова област',
+		hiddenField		: 'Скрито поле',
+		button			: 'Бутон',
+		select	: 'Падащо меню с опции',
+		imageButton		: 'Бутон-изображение',
+		notSet			: '<не е настроен>',
+		id				: 'Идентификатор',
+		name			: 'Име',
+		langDir			: 'посока на речта',
+		langDirLtr		: 'От ляво на дясно',
+		langDirRtl		: 'От дясно на ляво',
+		langCode		: 'Код на езика',
+		longDescr		: 'Описание на връзката',
+		cssClass		: 'Клас от стиловите таблици',
+		advisoryTitle	: 'Препоръчително заглавие',
+		cssStyle		: 'Стил',
+		ok				: 'ОК',
+		cancel			: 'Отказ',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Подробности...',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Вмъкни специален символ',
+		title		: 'Изберете специален символ'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Добави/Редактирай връзка',
+		menu		: 'Редактирай връзка',
+		title		: 'Връзка',
+		info		: 'Информация за връзката',
+		target		: 'Цел',
+		upload		: 'Качи',
+		advanced	: 'Подробности...',
+		type		: 'Вид на връзката',
+		toAnchor	: 'Котва в текущата страница',
+		toEmail		: 'Е-поща',
+		target		: 'Цел',
+		targetNotSet	: '<не е настроен>',
+		targetFrame	: '<рамка>',
+		targetPopup	: '<дъщерен прозорец>',
+		targetNew	: 'Нов прозорец (_blank)',
+		targetTop	: 'Целия прозорец (_top)',
+		targetSelf	: 'Активния прозорец (_self)',
+		targetParent	: 'Родителски прозорец (_parent)',
+		targetFrameName	: 'Име на целевия прозорец',
+		targetPopupName	: 'Име на дъщерния прозорец',
+		popupFeatures	: 'Параметри на дъщерния прозорец',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Поле за статус',
+		popupLocationBar	: 'Поле за адрес',
+		popupToolbar	: 'Панел с бутони',
+		popupMenuBar	: 'Меню',
+		popupFullScreen	: 'Голям екран (MS IE)',
+		popupScrollBars	: 'Плъзгач',
+		popupDependent	: 'Зависим (Netscape)',
+		popupWidth		: 'Ширина',
+		popupLeft		: 'Координати - X',
+		popupHeight		: 'Височина',
+		popupTop		: 'Координати - Y',
+		id				: 'Id', // MISSING
+		langDir			: 'посока на речта',
+		langDirNotSet	: '<не е настроен>',
+		langDirLTR		: 'От ляво на дясно',
+		langDirRTL		: 'От дясно на ляво',
+		acccessKey		: 'Бърз клавиш',
+		name			: 'Име',
+		langCode		: 'посока на речта',
+		tabIndex		: 'Ред на достъп',
+		advisoryTitle	: 'Препоръчително заглавие',
+		advisoryContentType	: 'Препоръчителен тип на съдържанието',
+		cssClasses		: 'Клас от стиловите таблици',
+		charset			: 'Тип на свързания ресурс',
+		styles			: 'Стил',
+		selectAnchor	: 'Изберете котва',
+		anchorName		: 'По име на котвата',
+		anchorId		: 'По идентификатор на елемент',
+		emailAddress	: 'Адрес за е-поща',
+		emailSubject	: 'Тема на писмото',
+		emailBody		: 'Текст на писмото',
+		noAnchors		: '(Няма котви в текущия документ)',
+		noUrl			: 'Моля, напишете пълния път (URL)',
+		noEmail			: 'Моля, напишете адреса за е-поща'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Добави/Редактирай котва',
+		menu		: 'Параметри на котвата',
+		title		: 'Параметри на котвата',
+		name		: 'Име на котвата',
+		errorName	: 'Моля, въведете име на котвата'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'Търси',
+		replace				: 'Замести',
+		findWhat			: 'Търси:',
+		replaceWith			: 'Замести с:',
+		notFoundMsg			: 'Указания текст не беше намерен.',
+		matchCase			: 'Със същия регистър',
+		matchWord			: 'Търси същата дума',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Замести всички',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Таблица',
+		title		: 'Параметри на таблицата',
+		menu		: 'Параметри на таблицата',
+		deleteTable	: 'Изтрий таблицата',
+		rows		: 'Редове',
+		columns		: 'Колони',
+		border		: 'Размер на рамката',
+		align		: 'Подравняване',
+		alignNotSet	: '<Не е избрано>',
+		alignLeft	: 'Ляво',
+		alignCenter	: 'Център',
+		alignRight	: 'Дясно',
+		width		: 'Ширина',
+		widthPx		: 'пиксели',
+		widthPc		: 'проценти',
+		height		: 'Височина',
+		cellSpace	: 'Разстояние между клетките',
+		cellPad		: 'Отстъп на съдържанието в клетките',
+		caption		: 'Заглавие',
+		summary		: 'Резюме',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Cell', // MISSING
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'Изтрий клетките',
+			merge			: 'Обедини клетките',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Row', // MISSING
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'Изтрий редовете'
+		},
+
+		column :
+		{
+			menu			: 'Column', // MISSING
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'Изтрий колоните'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Параметри на бутона',
+		text		: 'Текст (Стойност)',
+		type		: 'Тип',
+		typeBtn		: 'Button', // MISSING
+		typeSbm		: 'Submit', // MISSING
+		typeRst		: 'Reset' // MISSING
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Параметри на полето за отметка',
+		radioTitle	: 'Параметри на полето за опция',
+		value		: 'Стойност',
+		selected	: 'Отметнато'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Параметри на формуляра',
+		menu		: 'Параметри на формуляра',
+		action		: 'Действие',
+		method		: 'Метод',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Цел',
+		targetNotSet	: '<не е настроен>',
+		targetNew	: 'Нов прозорец (_blank)',
+		targetTop	: 'Целия прозорец (_top)',
+		targetSelf	: 'Активния прозорец (_self)',
+		targetParent	: 'Родителски прозорец (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Параметри на падащото меню с опции',
+		selectInfo	: 'Информация',
+		opAvail		: 'Възможни опции',
+		value		: 'Стойност',
+		size		: 'Размер',
+		lines		: 'линии',
+		chkMulti	: 'Разрешено множествено селектиране',
+		opText		: 'Текст',
+		opValue		: 'Стойност',
+		btnAdd		: 'Добави',
+		btnModify	: 'Промени',
+		btnUp		: 'Нагоре',
+		btnDown		: 'Надолу',
+		btnSetValue : 'Настрой като избрана стойност',
+		btnDelete	: 'Изтрий'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Параметри на текстовата област',
+		cols		: 'Колони',
+		rows		: 'Редове'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Параметри на текстовото-поле',
+		name		: 'Име',
+		value		: 'Стойност',
+		charWidth	: 'Ширина на символите',
+		maxChars	: 'Максимум символи',
+		type		: 'Тип',
+		typeText	: 'Текст',
+		typePass	: 'Парола'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Параметри на скритото поле',
+		name	: 'Име',
+		value	: 'Стойност'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Параметри на изображението',
+		titleButton	: 'Параметри на бутона-изображение',
+		menu		: 'Параметри на изображението',
+		infoTab	: 'Информация за изображението',
+		btnUpload	: 'Прати към сървъра',
+		url		: 'Пълен път (URL)',
+		upload	: 'Качи',
+		alt		: 'Алтернативен текст',
+		width		: 'Ширина',
+		height	: 'Височина',
+		lockRatio	: 'Запази пропорцията',
+		resetSize	: 'Възстанови размера',
+		border	: 'Рамка',
+		hSpace	: 'Хоризонтален отстъп',
+		vSpace	: 'Вертикален отстъп',
+		align		: 'Подравняване',
+		alignLeft	: 'Ляво',
+		alignAbsBottom: 'Най-долу',
+		alignAbsMiddle: 'Точно по средата',
+		alignBaseline	: 'По базовата линия',
+		alignBottom	: 'Долу',
+		alignMiddle	: 'По средата',
+		alignRight	: 'Дясно',
+		alignTextTop	: 'Върху текста',
+		alignTop	: 'Отгоре',
+		preview	: 'Изглед',
+		alertUrl	: 'Моля, въведете пълния път до изображението',
+		linkTab	: 'Връзка',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Параметри на Flash обекта',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Параметри на Flash обекта',
+		chkPlay		: 'Автоматично стартиране',
+		chkLoop		: 'Ново стартиране след завършването',
+		chkMenu		: 'Разрешено Flash меню',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Оразмеряване',
+		scaleAll		: 'Покажи целия обект',
+		scaleNoBorder	: 'Без рамка',
+		scaleFit		: 'Според мястото',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Подравняване',
+		alignLeft	: 'Ляво',
+		alignAbsBottom: 'Най-долу',
+		alignAbsMiddle: 'Точно по средата',
+		alignBaseline	: 'По базовата линия',
+		alignBottom	: 'Долу',
+		alignMiddle	: 'По средата',
+		alignRight	: 'Дясно',
+		alignTextTop	: 'Върху текста',
+		alignTop	: 'Отгоре',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Цвят на фона',
+		width	: 'Ширина',
+		height	: 'Височина',
+		hSpace	: 'Хоризонтален отстъп',
+		vSpace	: 'Вертикален отстъп',
+		validateSrc : 'Моля, напишете пълния път (URL)',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Провери правописа',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Липсва в речника',
+		changeTo		: 'Промени на',
+		btnIgnore		: 'Игнорирай',
+		btnIgnoreAll	: 'Игнорирай всички',
+		btnReplace		: 'Замести',
+		btnReplaceAll	: 'Замести всички',
+		btnUndo			: 'Отмени',
+		noSuggestions	: '- Няма предложения -',
+		progress		: 'Извършване на проверката за правопис...',
+		noMispell		: 'Проверката за правопис завършена: не са открити правописни грешки',
+		noChanges		: 'Проверката за правопис завършена: няма променени думи',
+		oneChange		: 'Проверката за правопис завършена: една дума е променена',
+		manyChanges		: 'Проверката за правопис завършена: %1 думи са променени',
+		ieSpellDownload	: 'Инструментът за проверка на правопис не е инсталиран. Желаете ли да го инсталирате ?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Усмивка',
+		title	: 'Добави усмивка'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Нумериран списък',
+	bulletedlist : 'Ненумериран списък',
+	indent : 'Увеличи отстъпа',
+	outdent : 'Намали отстъпа',
+
+	justify :
+	{
+		left : 'Подравняване в ляво',
+		center : 'Подравнявне в средата',
+		right : 'Подравняване в дясно',
+		block : 'Двустранно подравняване'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Вмъкни',
+		cutError	: 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни изрязването. За целта използвайте клавиатурата (Ctrl+X).',
+		copyError	: 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl+C).',
+		pasteMsg	: 'Вмъкнете тук съдъжанието с клавиатуарата (<STRONG>Ctrl+V</STRONG>) и натиснете <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Вмъкни от MS Word',
+		title : 'Вмъкни от MS Word',
+		advice : 'Вмъкнете тук съдъжанието с клавиатуарата (<STRONG>Ctrl+V</STRONG>) и натиснете <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Игнорирай шрифтовите дефиниции',
+		removeStyle : 'Изтрий стиловите дефиниции'
+	},
+
+	pasteText :
+	{
+		button : 'Вмъкни като чист текст',
+		title : 'Вмъкни като чист текст'
+	},
+
+	templates :
+	{
+		button : 'Шаблони',
+		title : 'Шаблони',
+		insertOption: 'Replace actual contents', // MISSING
+		selectPromptMsg: 'Изберете шаблон <br>(текущото съдържание на редактора ще бъде загубено):',
+		emptyListMsg : '(Няма дефинирани шаблони)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Стил',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Формат',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Формат',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Нормален',
+		tag_pre : 'Форматиран',
+		tag_address : 'Адрес',
+		tag_h1 : 'Заглавие 1',
+		tag_h2 : 'Заглавие 2',
+		tag_h3 : 'Заглавие 3',
+		tag_h4 : 'Заглавие 4',
+		tag_h5 : 'Заглавие 5',
+		tag_h6 : 'Заглавие 6',
+		tag_div : 'Параграф (DIV)'
+	},
+
+	font :
+	{
+		label : 'Шрифт',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Шрифт',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Размер',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Размер',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Цвят на текста',
+		bgColorTitle : 'Цвят на фона',
+		auto : 'По подразбиране',
+		more : 'Други цветове...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/de.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/de.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/de.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * German language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['de'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'Quellcode',
+	newPage			: 'Neue Seite',
+	save			: 'Speichern',
+	preview			: 'Vorschau',
+	cut				: 'Ausschneiden',
+	copy			: 'Kopieren',
+	paste			: 'Einfügen',
+	print			: 'Drucken',
+	underline		: 'Unterstrichen',
+	bold			: 'Fett',
+	italic			: 'Kursiv',
+	selectAll		: 'Alles auswählen',
+	removeFormat	: 'Formatierungen entfernen',
+	strike			: 'Durchgestrichen',
+	subscript		: 'Tiefgestellt',
+	superscript		: 'Hochgestellt',
+	horizontalrule	: 'Horizontale Linie einfügen',
+	pagebreak		: 'Seitenumbruch einfügen',
+	unlink			: 'Link entfernen',
+	undo			: 'Rückgängig',
+	redo			: 'Wiederherstellen',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Server durchsuchen',
+		url				: 'URL',
+		protocol		: 'Protokoll',
+		upload			: 'Upload',
+		uploadSubmit	: 'Zum Server senden',
+		image			: 'Bild',
+		flash			: 'Flash',
+		form			: 'Formular',
+		checkbox		: 'Checkbox',
+		radio		: 'Radiobutton',
+		textField		: 'Textfeld einzeilig',
+		textarea		: 'Textfeld mehrzeilig',
+		hiddenField		: 'verstecktes Feld',
+		button			: 'Klickbutton',
+		select	: 'Auswahlfeld',
+		imageButton		: 'Bildbutton',
+		notSet			: '<nichts>',
+		id				: 'ID',
+		name			: 'Name',
+		langDir			: 'Schreibrichtung',
+		langDirLtr		: 'Links nach Rechts (LTR)',
+		langDirRtl		: 'Rechts nach Links (RTL)',
+		langCode		: 'Sprachenkürzel',
+		longDescr		: 'Langform URL',
+		cssClass		: 'Stylesheet Klasse',
+		advisoryTitle	: 'Titel Beschreibung',
+		cssStyle		: 'Style',
+		ok				: 'OK',
+		cancel			: 'Abbrechen',
+		generalTab		: 'Allgemein',
+		advancedTab		: 'Erweitert',
+		validateNumberFailed	: 'Dieser Wert ist keine Nummer.',
+		confirmNewPage	: 'Alle nicht gespeicherten Änderungen gehen verlohren. Sind sie sicher die neue Seite zu laden?',
+		confirmCancel	: 'Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schließen?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, nicht verfügbar</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Sonderzeichen einfügen/editieren',
+		title		: 'Sonderzeichen auswählen'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Link einfügen/editieren',
+		menu		: 'Link editieren',
+		title		: 'Link',
+		info		: 'Link-Info',
+		target		: 'Zielseite',
+		upload		: 'Upload',
+		advanced	: 'Erweitert',
+		type		: 'Link-Typ',
+		toAnchor	: 'Anker in dieser Seite',
+		toEmail		: 'E-Mail',
+		target		: 'Zielseite',
+		targetNotSet	: '<nichts>',
+		targetFrame	: '<Frame>',
+		targetPopup	: '<Pop-up Fenster>',
+		targetNew	: 'Neues Fenster (_blank)',
+		targetTop	: 'Oberstes Fenster (_top)',
+		targetSelf	: 'Gleiches Fenster (_self)',
+		targetParent	: 'Oberes Fenster (_parent)',
+		targetFrameName	: 'Ziel-Fenster-Name',
+		targetPopupName	: 'Pop-up Fenster-Name',
+		popupFeatures	: 'Pop-up Fenster-Eigenschaften',
+		popupResizable	: 'Größe änderbar',
+		popupStatusBar	: 'Statusleiste',
+		popupLocationBar	: 'Adress-Leiste',
+		popupToolbar	: 'Werkzeugleiste',
+		popupMenuBar	: 'Menü-Leiste',
+		popupFullScreen	: 'Vollbild (IE)',
+		popupScrollBars	: 'Rollbalken',
+		popupDependent	: 'Abhängig (Netscape)',
+		popupWidth		: 'Breite',
+		popupLeft		: 'Linke Position',
+		popupHeight		: 'Höhe',
+		popupTop		: 'Obere Position',
+		id				: 'Id',
+		langDir			: 'Schreibrichtung',
+		langDirNotSet	: '<nichts>',
+		langDirLTR		: 'Links nach Rechts (LTR)',
+		langDirRTL		: 'Rechts nach Links (RTL)',
+		acccessKey		: 'Zugriffstaste',
+		name			: 'Name',
+		langCode		: 'Schreibrichtung',
+		tabIndex		: 'Tab-Index',
+		advisoryTitle	: 'Titel Beschreibung',
+		advisoryContentType	: 'Inhaltstyp',
+		cssClasses		: 'Stylesheet Klasse',
+		charset			: 'Ziel-Zeichensatz',
+		styles			: 'Style',
+		selectAnchor	: 'Anker auswählen',
+		anchorName		: 'nach Anker Name',
+		anchorId		: 'nach Element Id',
+		emailAddress	: 'E-Mail Addresse',
+		emailSubject	: 'Betreffzeile',
+		emailBody		: 'Nachrichtentext',
+		noAnchors		: '(keine Anker im Dokument vorhanden)',
+		noUrl			: 'Bitte geben Sie die Link-URL an',
+		noEmail			: 'Bitte geben Sie e-Mail Adresse an'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Anker einfügen/editieren',
+		menu		: 'Anker-Eigenschaften',
+		title		: 'Anker-Eigenschaften',
+		name		: 'Anker Name',
+		errorName	: 'Bitte geben Sie den Namen des Ankers ein'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Suchen und Ersetzen',
+		find				: 'Suchen',
+		replace				: 'Ersetzen',
+		findWhat			: 'Suche nach:',
+		replaceWith			: 'Ersetze mit:',
+		notFoundMsg			: 'Der gesuchte Text wurde nicht gefunden.',
+		matchCase			: 'Groß-Kleinschreibung beachten',
+		matchWord			: 'Nur ganze Worte suchen',
+		matchCyclic			: 'zyklische suche',
+		replaceAll			: 'Alle Ersetzen',
+		replaceSuccessMsg	: '%1 vorkommen ersetzt.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabelle',
+		title		: 'Tabellen-Eigenschaften',
+		menu		: 'Tabellen-Eigenschaften',
+		deleteTable	: 'Tabelle löschen',
+		rows		: 'Zeile',
+		columns		: 'Spalte',
+		border		: 'Rahmen',
+		align		: 'Ausrichtung',
+		alignNotSet	: '<keine>',
+		alignLeft	: 'Links',
+		alignCenter	: 'Zentriert',
+		alignRight	: 'Rechts',
+		width		: 'Breite',
+		widthPx		: 'Pixel',
+		widthPc		: '%',
+		height		: 'Höhe',
+		cellSpace	: 'Zellenabstand außen',
+		cellPad		: 'Zellenabstand innen',
+		caption		: 'Überschrift',
+		summary		: 'Inhaltsübersicht',
+		headers		: 'Überschriften',
+		headersNone		: 'keine',
+		headersColumn	: 'Erste Spalte',
+		headersRow		: 'Erste Zeile',
+		headersBoth		: 'keine',
+		invalidRows		: 'Die Anzahl der Zeilen muß größer als 0 sein.',
+		invalidCols		: 'Die Anzahl der Spalten muß größer als 0 sein..',
+		invalidBorder	: 'Die Rahmenbreite muß eine Zahl sein.',
+		invalidWidth	: 'Die Tabellenbreite muss eine Zahl sein.',
+		invalidHeight	: 'Die Tabellenbreite muß eine Zahl sein.',
+		invalidCellSpacing	: 'Der Zellenabstand außen muß eine Zahl sein.',
+		invalidCellPadding	: 'Der Zellenabstand innen muß eine Zahl sein.',
+
+		cell :
+		{
+			menu			: 'Zelle',
+			insertBefore	: 'Zelle davor einfügen',
+			insertAfter		: 'Zelle danach einfügen',
+			deleteCell		: 'Zelle löschen',
+			merge			: 'Zellen verbinden',
+			mergeRight		: 'nach rechts verbinden',
+			mergeDown		: 'nach unten verbinden',
+			splitHorizontal	: 'Zelle horizontal teilen',
+			splitVertical	: 'Zelle vertikal teilen',
+			title			: 'Zellen Eigenschaften',
+			cellType		: 'Zellart',
+			rowSpan			: 'Anzahl Zeilen verbinden',
+			colSpan			: 'Anzahl Spalten verbinden',
+			wordWrap		: 'Zeilenumbruch',
+			hAlign			: 'Horizontale Ausrichtung',
+			vAlign			: 'Vertikale Ausrichtung',
+			alignTop		: 'Oben',
+			alignMiddle		: 'Mitte',
+			alignBottom		: 'Unten',
+			alignBaseline	: 'Grundlinie',
+			bgColor			: 'Hintergrundfarbe',
+			borderColor		: 'Rahmenfarbe',
+			data			: 'Daten',
+			header			: 'Überschrift',
+			yes				: 'Ja',
+			no				: 'Nein',
+			invalidWidth	: 'Zellenbreite muß eine Zahl sein.',
+			invalidHeight	: 'Zellenhöhe muß eine Zahl sein.',
+			invalidRowSpan	: '"Anzahl Zeilen verbinden" muss eine Ganzzahl sein.',
+			invalidColSpan	: '"Anzahl Spalten verbinden" muss eine Ganzzahl sein.',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Zeile',
+			insertBefore	: 'Zeile oberhalb einfügen',
+			insertAfter		: 'Zeile unterhalb einfügen',
+			deleteRow		: 'Zeile entfernen'
+		},
+
+		column :
+		{
+			menu			: 'Spalte',
+			insertBefore	: 'Spalte links davor einfügen',
+			insertAfter		: 'Spalte rechts danach einfügen',
+			deleteColumn	: 'Spalte löschen'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Button-Eigenschaften',
+		text		: 'Text (Wert)',
+		type		: 'Typ',
+		typeBtn		: 'Button',
+		typeSbm		: 'Absenden',
+		typeRst		: 'Zurücksetzen'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Checkbox-Eigenschaften',
+		radioTitle	: 'Optionsfeld-Eigenschaften',
+		value		: 'Wert',
+		selected	: 'ausgewählt'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Formular-Eigenschaften',
+		menu		: 'Formular-Eigenschaften',
+		action		: 'Action',
+		method		: 'Method',
+		encoding	: 'Zeichenkodierung',
+		target		: 'Zielseite',
+		targetNotSet	: '<keins>',
+		targetNew	: 'Neues Fenster (_blank)',
+		targetTop	: 'Oberstes Fenster (_top)',
+		targetSelf	: 'Gleiches Fenster (_self)',
+		targetParent	: 'Oberes Fenster (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Auswahlfeld-Eigenschaften',
+		selectInfo	: 'Info',
+		opAvail		: 'Mögliche Optionen',
+		value		: 'Wert',
+		size		: 'Größe',
+		lines		: 'Linien',
+		chkMulti	: 'Erlaube Mehrfachauswahl',
+		opText		: 'Text',
+		opValue		: 'Wert',
+		btnAdd		: 'Hinzufügen',
+		btnModify	: 'Ändern',
+		btnUp		: 'Hoch',
+		btnDown		: 'Runter',
+		btnSetValue : 'Setze als Standardwert',
+		btnDelete	: 'Entfernen'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Textfeld (mehrzeilig) Eigenschaften',
+		cols		: 'Spalten',
+		rows		: 'Reihen'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Textfeld (einzeilig) Eigenschaften',
+		name		: 'Name',
+		value		: 'Wert',
+		charWidth	: 'Zeichenbreite',
+		maxChars	: 'Max. Zeichen',
+		type		: 'Typ',
+		typeText	: 'Text',
+		typePass	: 'Passwort'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Verstecktes Feld-Eigenschaften',
+		name	: 'Name',
+		value	: 'Wert'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Bild-Eigenschaften',
+		titleButton	: 'Bildbutton-Eigenschaften',
+		menu		: 'Bild-Eigenschaften',
+		infoTab	: 'Bild-Info',
+		btnUpload	: 'Zum Server senden',
+		url		: 'URL',
+		upload	: 'Hochladen',
+		alt		: 'Alternativer Text',
+		width		: 'Breite',
+		height	: 'Höhe',
+		lockRatio	: 'Größenverhältnis beibehalten',
+		resetSize	: 'Größe zurücksetzen',
+		border	: 'Rahmen',
+		hSpace	: 'Horizontal-Abstand',
+		vSpace	: 'Vertikal-Abstand',
+		align		: 'Ausrichtung',
+		alignLeft	: 'Links',
+		alignAbsBottom: 'Abs Unten',
+		alignAbsMiddle: 'Abs Mitte',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Unten',
+		alignMiddle	: 'Mitte',
+		alignRight	: 'Rechts',
+		alignTextTop	: 'Text Oben',
+		alignTop	: 'Oben',
+		preview	: 'Vorschau',
+		alertUrl	: 'Bitte geben Sie die Bild-URL an',
+		linkTab	: 'Link',
+		button2Img	: 'Möchten Sie den gewählten Bild-Button in ein einfaches Bild umwandeln?',
+		img2Button	: 'Möchten Sie das gewählten Bild in einen Bild-Button umwandeln?',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash-Eigenschaften',
+		propertiesTab	: 'Eigenschaften',
+		title		: 'Flash-Eigenschaften',
+		chkPlay		: 'autom. Abspielen',
+		chkLoop		: 'Endlosschleife',
+		chkMenu		: 'Flash-Menü aktivieren',
+		chkFull		: 'Vollbildmodus erlauben',
+ 		scale		: 'Skalierung',
+		scaleAll		: 'Alles anzeigen',
+		scaleNoBorder	: 'ohne Rand',
+		scaleFit		: 'Passgenau',
+		access			: 'Skript Zugang',
+		accessAlways	: 'Immer',
+		accessSameDomain	: 'Gleiche Domain',
+		accessNever	: 'Nie',
+		align		: 'Ausrichtung',
+		alignLeft	: 'Links',
+		alignAbsBottom: 'Abs Unten',
+		alignAbsMiddle: 'Abs Mitte',
+		alignBaseline	: 'Baseline',
+		alignBottom	: 'Unten',
+		alignMiddle	: 'Mitte',
+		alignRight	: 'Rechts',
+		alignTextTop	: 'Text Oben',
+		alignTop	: 'Oben',
+		quality		: 'Qualität',
+		qualityBest		 : 'Beste',
+		qualityHigh		 : 'Hoch',
+		qualityAutoHigh	 : 'Auto Hoch',
+		qualityMedium	 : 'Medium',
+		qualityAutoLow	 : 'Auto Niedrig',
+		qualityLow		 : 'Niedrig',
+		windowModeWindow	 : 'Fenster',
+		windowModeOpaque	 : 'Deckend',
+		windowModeTransparent	 : 'Transparent',
+		windowMode	: 'Fenster Modus',
+		flashvars	: 'Variablen für Flash',
+		bgcolor	: 'Hintergrundfarbe',
+		width	: 'Breite',
+		height	: 'Höhe',
+		hSpace	: 'Horizontal-Abstand',
+		vSpace	: 'Vertikal-Abstand',
+		validateSrc : 'Bitte geben Sie die Link-URL an',
+		validateWidth : 'Breite muss eine Zahl sein.',
+		validateHeight : 'Höhe muss eine Zahl sein.',
+		validateHSpace : 'HSpace muss eine Zahl sein.',
+		validateVSpace : 'VSpace muss eine Zahl sein.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Rechtschreibprüfung',
+		title			: 'Rechtschreibprüfung',
+		notAvailable	: 'Entschuldigung, aber dieser Dienst steht im Moment nicht zur verfügung.',
+		errorLoading	: 'Fehler beim laden des Dienstanbieters: %s.',
+		notInDic		: 'Nicht im Wörterbuch',
+		changeTo		: 'Ändern in',
+		btnIgnore		: 'Ignorieren',
+		btnIgnoreAll	: 'Alle Ignorieren',
+		btnReplace		: 'Ersetzen',
+		btnReplaceAll	: 'Alle Ersetzen',
+		btnUndo			: 'Rückgängig',
+		noSuggestions	: ' - keine Vorschläge - ',
+		progress		: 'Rechtschreibprüfung läuft...',
+		noMispell		: 'Rechtschreibprüfung abgeschlossen - keine Fehler gefunden',
+		noChanges		: 'Rechtschreibprüfung abgeschlossen - keine Worte geändert',
+		oneChange		: 'Rechtschreibprüfung abgeschlossen - ein Wort geändert',
+		manyChanges		: 'Rechtschreibprüfung abgeschlossen - %1 Wörter geändert',
+		ieSpellDownload	: 'Rechtschreibprüfung nicht installiert. Möchten Sie sie jetzt herunterladen?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Smiley auswählen'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 Element'
+	},
+
+	numberedlist : 'Nummerierte Liste',
+	bulletedlist : 'Liste',
+	indent : 'Einzug erhöhen',
+	outdent : 'Einzug verringern',
+
+	justify :
+	{
+		left : 'Linksbündig',
+		center : 'Zentriert',
+		right : 'Rechtsbündig',
+		block : 'Blocksatz'
+	},
+
+	blockquote : 'Zitatblock',
+
+	clipboard :
+	{
+		title		: 'Einfügen',
+		cutError	: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).',
+		copyError	: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).',
+		pasteMsg	: 'Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit <STRONG>Strg+V</STRONG>) ein und bestätigen Sie mit <STRONG>OK</STRONG>.',
+		securityMsg	: 'Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'aus MS-Word einfügen',
+		title : 'aus MS-Word einfügen',
+		advice : 'Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit <STRONG>Strg+V</STRONG>) ein und bestätigen Sie mit <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignoriere Schriftart-Definitionen',
+		removeStyle : 'Entferne Style-Definitionen'
+	},
+
+	pasteText :
+	{
+		button : 'Als Text einfügen',
+		title : 'Als Text einfügen'
+	},
+
+	templates :
+	{
+		button : 'Vorlagen',
+		title : 'Vorlagen',
+		insertOption: 'Aktuellen Inhalt ersetzen',
+		selectPromptMsg: 'Klicken Sie auf eine Vorlage, um sie im Editor zu öffnen (der aktuelle Inhalt wird dabei gelöscht!):',
+		emptyListMsg : '(keine Vorlagen definiert)'
+	},
+
+	showBlocks : 'Blöcke anzeigen',
+
+	stylesCombo :
+	{
+		label : 'Stil',
+		voiceLabel : 'Stilarten',
+		panelVoiceLabel : 'Stilart auswahl',
+		panelTitle1 : 'Block Stilart',
+		panelTitle2 : 'Inline Stilart',
+		panelTitle3 : 'Objekt Stilart'
+	},
+
+	format :
+	{
+		label : 'Format',
+		voiceLabel : 'Format',
+		panelTitle : 'Format',
+		panelVoiceLabel : 'Wählen Sie einen Absatzformat',
+
+		tag_p : 'Normal',
+		tag_pre : 'Formatiert',
+		tag_address : 'Addresse',
+		tag_h1 : 'Überschrift 1',
+		tag_h2 : 'Überschrift 2',
+		tag_h3 : 'Überschrift 3',
+		tag_h4 : 'Überschrift 4',
+		tag_h5 : 'Überschrift 5',
+		tag_h6 : 'Überschrift 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Schriftart',
+		voiceLabel : 'Schriftart',
+		panelTitle : 'Schriftart',
+		panelVoiceLabel : 'Wählen Sie eine Schriftart'
+	},
+
+	fontSize :
+	{
+		label : 'Größe',
+		voiceLabel : 'Schrifgröße',
+		panelTitle : 'Größe',
+		panelVoiceLabel : 'Wählen Sie eine Schriftgröße'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Textfarbe',
+		bgColorTitle : 'Hintergrundfarbe',
+		auto : 'Automatisch',
+		more : 'Weitere Farben...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Rechtschreibprüfung während der Texteingabe',
+		enable : 'SCAYT einschalten',
+		disable : 'SCAYT ausschalten',
+		about : 'Über SCAYT',
+		toggle : 'SCAYT umschalten',
+		options : 'Optionen',
+		langs : 'Sprachen',
+		moreSuggestions : 'Mehr Vorschläge',
+		ignore : 'Ignorieren',
+		ignoreAll : 'Alle ignorieren',
+		addWord : 'Wort hinzufügen',
+		emptyDic : 'Wörterbuchname sollte leer sein.',
+		optionsTab : 'Optionen',
+		languagesTab : 'Sprachen',
+		dictionariesTab : 'Wörterbücher',
+		aboutTab : 'Über'
+	},
+
+	about :
+	{
+		title : 'Über CKEditor',
+		dlgTitle : 'Über CKEditor',
+		moreInfo : 'Für Informationen Liztenzbestimmungen besuchen sie bitte unsere Webseite:',
+		copy : 'Copyright &copy; $1. Alle Rechte vorbehalten.'
+	},
+
+	maximize : 'Maximieren',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anker',
+		flash : 'Flash Animation',
+		div : 'Seitenumbruch',
+		unknown : 'Unbekanntes Objekt'
+	},
+
+	resize : 'Zum Vergrößern ziehen',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/sv.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/sv.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/sv.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Swedish language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['sv'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Källa',
+	newPage			: 'Ny sida',
+	save			: 'Spara',
+	preview			: 'Förhandsgranska',
+	cut				: 'Klipp ut',
+	copy			: 'Kopiera',
+	paste			: 'Klistra in',
+	print			: 'Skriv ut',
+	underline		: 'Understruken',
+	bold			: 'Fet',
+	italic			: 'Kursiv',
+	selectAll		: 'Markera allt',
+	removeFormat	: 'Radera formatering',
+	strike			: 'Genomstruken',
+	subscript		: 'Nedsänkta tecken',
+	superscript		: 'Upphöjda tecken',
+	horizontalrule	: 'Infoga horisontal linje',
+	pagebreak		: 'Infoga sidbrytning',
+	unlink			: 'Radera länk',
+	undo			: 'Ångra',
+	redo			: 'Gör om',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Bläddra på server',
+		url				: 'URL',
+		protocol		: 'Protokoll',
+		upload			: 'Ladda upp',
+		uploadSubmit	: 'Skicka till server',
+		image			: 'Bild',
+		flash			: 'Flash',
+		form			: 'Formulär',
+		checkbox		: 'Kryssruta',
+		radio		: 'Alternativknapp',
+		textField		: 'Textfält',
+		textarea		: 'Textruta',
+		hiddenField		: 'Dolt fält',
+		button			: 'Knapp',
+		select	: 'Flervalslista',
+		imageButton		: 'Bildknapp',
+		notSet			: '<ej angivet>',
+		id				: 'Id',
+		name			: 'Namn',
+		langDir			: 'Språkriktning',
+		langDirLtr		: 'Vänster till Höger (VTH)',
+		langDirRtl		: 'Höger till Vänster (HTV)',
+		langCode		: 'Språkkod',
+		longDescr		: 'URL-beskrivning',
+		cssClass		: 'Stylesheet class',
+		advisoryTitle	: 'Titel',
+		cssStyle		: 'Style',
+		ok				: 'OK',
+		cancel			: 'Avbryt',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Avancerad',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Klistra in utökat tecken',
+		title		: 'Välj utökat tecken'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Infoga/Redigera länk',
+		menu		: 'Redigera länk',
+		title		: 'Länk',
+		info		: 'Länkinformation',
+		target		: 'Mål',
+		upload		: 'Ladda upp',
+		advanced	: 'Avancerad',
+		type		: 'Länktyp',
+		toAnchor	: 'Ankare i sidan',
+		toEmail		: 'E-post',
+		target		: 'Mål',
+		targetNotSet	: '<ej angivet>',
+		targetFrame	: '<ram>',
+		targetPopup	: '<popup-fönster>',
+		targetNew	: 'Nytt fönster (_blank)',
+		targetTop	: 'Översta fönstret (_top)',
+		targetSelf	: 'Detta fönstret (_self)',
+		targetParent	: 'Föregående Window (_parent)',
+		targetFrameName	: 'Målets ramnamn',
+		targetPopupName	: 'Popup-fönstrets namn',
+		popupFeatures	: 'Popup-fönstrets egenskaper',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Statusfält',
+		popupLocationBar	: 'Adressfält',
+		popupToolbar	: 'Verktygsfält',
+		popupMenuBar	: 'Menyfält',
+		popupFullScreen	: 'Helskärm (endast IE)',
+		popupScrollBars	: 'Scrolllista',
+		popupDependent	: 'Beroende (endest Netscape)',
+		popupWidth		: 'Bredd',
+		popupLeft		: 'Position från vänster',
+		popupHeight		: 'Höjd',
+		popupTop		: 'Position från sidans topp',
+		id				: 'Id', // MISSING
+		langDir			: 'Språkriktning',
+		langDirNotSet	: '<ej angivet>',
+		langDirLTR		: 'Vänster till Höger (VTH)',
+		langDirRTL		: 'Höger till Vänster (HTV)',
+		acccessKey		: 'Behörighetsnyckel',
+		name			: 'Namn',
+		langCode		: 'Språkriktning',
+		tabIndex		: 'Tabindex',
+		advisoryTitle	: 'Titel',
+		advisoryContentType	: 'Innehållstyp',
+		cssClasses		: 'Stylesheet class',
+		charset			: 'Teckenuppställning',
+		styles			: 'Style',
+		selectAnchor	: 'Välj ett ankare',
+		anchorName		: 'efter ankarnamn',
+		anchorId		: 'efter objektid',
+		emailAddress	: 'E-postadress',
+		emailSubject	: 'Ämne',
+		emailBody		: 'Innehåll',
+		noAnchors		: '(Inga ankare kunde hittas)',
+		noUrl			: 'Var god ange länkens URL',
+		noEmail			: 'Var god ange E-postadress'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Infoga/Redigera ankarlänk',
+		menu		: 'Egenskaper för ankarlänk',
+		title		: 'Egenskaper för ankarlänk',
+		name		: 'Ankarnamn',
+		errorName	: 'Var god ange ett ankarnamn'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Sök och ersätt',
+		find				: 'Sök',
+		replace				: 'Ersätt',
+		findWhat			: 'Sök efter:',
+		replaceWith			: 'Ersätt med:',
+		notFoundMsg			: 'Angiven text kunde ej hittas.',
+		matchCase			: 'Skiftläge',
+		matchWord			: 'Inkludera hela ord',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Ersätt alla',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabell',
+		title		: 'Tabellegenskaper',
+		menu		: 'Tabellegenskaper',
+		deleteTable	: 'Radera tabell',
+		rows		: 'Rader',
+		columns		: 'Kolumner',
+		border		: 'Kantstorlek',
+		align		: 'Justering',
+		alignNotSet	: '<ej angivet>',
+		alignLeft	: 'Vänster',
+		alignCenter	: 'Centrerad',
+		alignRight	: 'Höger',
+		width		: 'Bredd',
+		widthPx		: 'pixlar',
+		widthPc		: 'procent',
+		height		: 'Höjd',
+		cellSpace	: 'Cellavstånd',
+		cellPad		: 'Cellutfyllnad',
+		caption		: 'Rubrik',
+		summary		: 'Sammanfattning',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Cell',
+			insertBefore	: 'Lägg till Cell Före',
+			insertAfter		: 'Lägg till Cell Efter',
+			deleteCell		: 'Radera celler',
+			merge			: 'Sammanfoga celler',
+			mergeRight		: 'Sammanfoga Höger',
+			mergeDown		: 'Sammanfoga Ner',
+			splitHorizontal	: 'Dela Cell Horisontellt',
+			splitVertical	: 'Dela Cell Vertikalt',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Rad',
+			insertBefore	: 'Lägg till Rad Före',
+			insertAfter		: 'Lägg till Rad Efter',
+			deleteRow		: 'Radera rad'
+		},
+
+		column :
+		{
+			menu			: 'Kolumn',
+			insertBefore	: 'Lägg till Kolumn Före',
+			insertAfter		: 'Lägg till Kolumn Efter',
+			deleteColumn	: 'Radera kolumn'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Egenskaper för knapp',
+		text		: 'Text (Värde)',
+		type		: 'Typ',
+		typeBtn		: 'Knapp',
+		typeSbm		: 'Skicka',
+		typeRst		: 'Återställ'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Egenskaper för kryssruta',
+		radioTitle	: 'Egenskaper för alternativknapp',
+		value		: 'Värde',
+		selected	: 'Vald'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Egenskaper för formulär',
+		menu		: 'Egenskaper för formulär',
+		action		: 'Funktion',
+		method		: 'Metod',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Mål',
+		targetNotSet	: '<ej angivet>',
+		targetNew	: 'Nytt fönster (_blank)',
+		targetTop	: 'Översta fönstret (_top)',
+		targetSelf	: 'Detta fönstret (_self)',
+		targetParent	: 'Föregående Window (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Egenskaper för flervalslista',
+		selectInfo	: 'Information',
+		opAvail		: 'Befintliga val',
+		value		: 'Värde',
+		size		: 'Storlek',
+		lines		: 'Linjer',
+		chkMulti	: 'Tillåt flerval',
+		opText		: 'Text',
+		opValue		: 'Värde',
+		btnAdd		: 'Lägg till',
+		btnModify	: 'Redigera',
+		btnUp		: 'Upp',
+		btnDown		: 'Ner',
+		btnSetValue : 'Markera som valt värde',
+		btnDelete	: 'Radera'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Egenskaper för textruta',
+		cols		: 'Kolumner',
+		rows		: 'Rader'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Egenskaper för textfält',
+		name		: 'Namn',
+		value		: 'Värde',
+		charWidth	: 'Teckenbredd',
+		maxChars	: 'Max antal tecken',
+		type		: 'Typ',
+		typeText	: 'Text',
+		typePass	: 'Lösenord'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Egenskaper för dolt fält',
+		name	: 'Namn',
+		value	: 'Värde'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Bildegenskaper',
+		titleButton	: 'Egenskaper för bildknapp',
+		menu		: 'Bildegenskaper',
+		infoTab	: 'Bildinformation',
+		btnUpload	: 'Skicka till server',
+		url		: 'URL',
+		upload	: 'Ladda upp',
+		alt		: 'Alternativ text',
+		width		: 'Bredd',
+		height	: 'Höjd',
+		lockRatio	: 'Lås höjd/bredd förhållanden',
+		resetSize	: 'Återställ storlek',
+		border	: 'Kant',
+		hSpace	: 'Horis. marginal',
+		vSpace	: 'Vert. marginal',
+		align		: 'Justering',
+		alignLeft	: 'Vänster',
+		alignAbsBottom: 'Absolut nederkant',
+		alignAbsMiddle: 'Absolut centrering',
+		alignBaseline	: 'Baslinje',
+		alignBottom	: 'Nederkant',
+		alignMiddle	: 'Mitten',
+		alignRight	: 'Höger',
+		alignTextTop	: 'Text överkant',
+		alignTop	: 'Överkant',
+		preview	: 'Förhandsgranska',
+		alertUrl	: 'Var god och ange bildens URL',
+		linkTab	: 'Länk',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flashegenskaper',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flashegenskaper',
+		chkPlay		: 'Automatisk uppspelning',
+		chkLoop		: 'Upprepa/Loopa',
+		chkMenu		: 'Aktivera Flashmeny',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Skala',
+		scaleAll		: 'Visa allt',
+		scaleNoBorder	: 'Ingen ram',
+		scaleFit		: 'Exakt passning',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Justering',
+		alignLeft	: 'Vänster',
+		alignAbsBottom: 'Absolut nederkant',
+		alignAbsMiddle: 'Absolut centrering',
+		alignBaseline	: 'Baslinje',
+		alignBottom	: 'Nederkant',
+		alignMiddle	: 'Mitten',
+		alignRight	: 'Höger',
+		alignTextTop	: 'Text överkant',
+		alignTop	: 'Överkant',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Bakgrundsfärg',
+		width	: 'Bredd',
+		height	: 'Höjd',
+		hSpace	: 'Horis. marginal',
+		vSpace	: 'Vert. marginal',
+		validateSrc : 'Var god ange länkens URL',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Stavningskontroll',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Saknas i ordlistan',
+		changeTo		: 'Ändra till',
+		btnIgnore		: 'Ignorera',
+		btnIgnoreAll	: 'Ignorera alla',
+		btnReplace		: 'Ersätt',
+		btnReplaceAll	: 'Ersätt alla',
+		btnUndo			: 'Ångra',
+		noSuggestions	: '- Förslag saknas -',
+		progress		: 'Stavningskontroll pågår...',
+		noMispell		: 'Stavningskontroll slutförd: Inga stavfel påträffades.',
+		noChanges		: 'Stavningskontroll slutförd: Inga ord rättades.',
+		oneChange		: 'Stavningskontroll slutförd: Ett ord rättades.',
+		manyChanges		: 'Stavningskontroll slutförd: %1 ord rättades.',
+		ieSpellDownload	: 'Stavningskontrollen är ej installerad. Vill du göra det nu?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Infoga smiley'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Numrerad lista',
+	bulletedlist : 'Punktlista',
+	indent : 'Öka indrag',
+	outdent : 'Minska indrag',
+
+	justify :
+	{
+		left : 'Vänsterjustera',
+		center : 'Centrera',
+		right : 'Högerjustera',
+		block : 'Justera till marginaler'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Klistra in',
+		cutError	: 'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Klipp ut. Använd (Ctrl+X) istället.',
+		copyError	: 'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Kopiera. Använd (Ctrl+C) istället',
+		pasteMsg	: 'Var god och klistra in Er text i rutan nedan genom att använda (<STRONG>Ctrl+V</STRONG>) klicka sen på <STRONG>OK</STRONG>.',
+		securityMsg	: 'På grund av din webläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Klistra in från Word',
+		title : 'Klistra in från Word',
+		advice : 'Var god och klistra in Er text i rutan nedan genom att använda (<STRONG>Ctrl+V</STRONG>) klicka sen på <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignorera typsnittsdefinitioner',
+		removeStyle : 'Radera Stildefinitioner'
+	},
+
+	pasteText :
+	{
+		button : 'Klistra in som vanlig text',
+		title : 'Klistra in som vanlig text'
+	},
+
+	templates :
+	{
+		button : 'Sidmallar',
+		title : 'Sidmallar',
+		insertOption: 'Ersätt aktuellt innehåll',
+		selectPromptMsg: 'Var god välj en mall att använda med editorn<br>(allt nuvarande innehåll raderas):',
+		emptyListMsg : '(Ingen mall är vald)'
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Anpassad stil',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Teckenformat',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Teckenformat',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normal',
+		tag_pre : 'Formaterad',
+		tag_address : 'Adress',
+		tag_h1 : 'Rubrik 1',
+		tag_h2 : 'Rubrik 2',
+		tag_h3 : 'Rubrik 3',
+		tag_h4 : 'Rubrik 4',
+		tag_h5 : 'Rubrik 5',
+		tag_h6 : 'Rubrik 6',
+		tag_div : 'Normal (DIV)'
+	},
+
+	font :
+	{
+		label : 'Typsnitt',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Typsnitt',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Storlek',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Storlek',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Textfärg',
+		bgColorTitle : 'Bakgrundsfärg',
+		auto : 'Automatisk',
+		more : 'Fler färger...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/ja.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/ja.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/ja.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Japanese language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['ja'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'リッチテキストエディタ, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'ソース',
+	newPage			: '新しいページ',
+	save			: '保存',
+	preview			: 'プレビュー',
+	cut				: '切り取り',
+	copy			: 'コピー',
+	paste			: '貼り付け',
+	print			: '印刷',
+	underline		: '下線',
+	bold			: '太字',
+	italic			: '斜体',
+	selectAll		: 'すべて選択',
+	removeFormat	: 'フォーマット削除',
+	strike			: '打ち消し線',
+	subscript		: '添え字',
+	superscript		: '上付き文字',
+	horizontalrule	: '横罫線',
+	pagebreak		: '改ページ挿入',
+	unlink			: 'リンク削除',
+	undo			: '元に戻す',
+	redo			: 'やり直し',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'サーバーブラウザー',
+		url				: 'URL',
+		protocol		: 'プロトコル',
+		upload			: 'アップロード',
+		uploadSubmit	: 'サーバーに送信',
+		image			: 'イメージ',
+		flash			: 'Flash',
+		form			: 'フォーム',
+		checkbox		: 'チェックボックス',
+		radio		: 'ラジオボタン',
+		textField		: '１行テキスト',
+		textarea		: 'テキストエリア',
+		hiddenField		: '不可視フィールド',
+		button			: 'ボタン',
+		select	: '選択フィールド',
+		imageButton		: '画像ボタン',
+		notSet			: '<なし>',
+		id				: 'Id',
+		name			: 'Name属性',
+		langDir			: '文字表記の方向',
+		langDirLtr		: '左から右 (LTR)',
+		langDirRtl		: '右から左 (RTL)',
+		langCode		: '言語コード',
+		longDescr		: 'longdesc属性(長文説明)',
+		cssClass		: 'スタイルシートクラス',
+		advisoryTitle	: 'Title属性',
+		cssStyle		: 'スタイルシート',
+		ok				: 'OK',
+		cancel			: 'キャンセル',
+		generalTab		: '全般',
+		advancedTab		: '高度な設定',
+		validateNumberFailed	: '値が数ではありません',
+		confirmNewPage	: '変更内容を保存せず、 新しいページを開いてもよろしいでしょうか？',
+		confirmCancel	: 'オプション設定を変更しました。ダイアログを閉じてもよろしいでしょうか？',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, 利用不可能</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: '特殊文字挿入',
+		title		: '特殊文字選択'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'リンク挿入/編集',
+		menu		: 'リンク編集',
+		title		: 'ハイパーリンク',
+		info		: 'ハイパーリンク 情報',
+		target		: 'ターゲット',
+		upload		: 'アップロード',
+		advanced	: '高度な設定',
+		type		: 'リンクタイプ',
+		toAnchor	: 'このページのアンカー',
+		toEmail		: 'E-Mail',
+		target		: 'ターゲット',
+		targetNotSet	: '<なし>',
+		targetFrame	: '<フレーム>',
+		targetPopup	: '<ポップアップウィンドウ>',
+		targetNew	: '新しいウィンドウ (_blank)',
+		targetTop	: '最上位ウィンドウ (_top)',
+		targetSelf	: '同じウィンドウ (_self)',
+		targetParent	: '親ウィンドウ (_parent)',
+		targetFrameName	: '目的のフレーム名',
+		targetPopupName	: 'ポップアップウィンドウ名',
+		popupFeatures	: 'ポップアップウィンドウ特徴',
+		popupResizable	: 'サイズ可変',
+		popupStatusBar	: 'ステータスバー',
+		popupLocationBar	: 'ロケーションバー',
+		popupToolbar	: 'ツールバー',
+		popupMenuBar	: 'メニューバー',
+		popupFullScreen	: '全画面モード(IE)',
+		popupScrollBars	: 'スクロールバー',
+		popupDependent	: '開いたウィンドウに連動して閉じる (Netscape)',
+		popupWidth		: '幅',
+		popupLeft		: '左端からの座標で指定',
+		popupHeight		: '高さ',
+		popupTop		: '上端からの座標で指定',
+		id				: 'Id',
+		langDir			: '文字表記の方向',
+		langDirNotSet	: '<なし>',
+		langDirLTR		: '左から右 (LTR)',
+		langDirRTL		: '右から左 (RTL)',
+		acccessKey		: 'アクセスキー',
+		name			: 'Name属性',
+		langCode		: '文字表記の方向',
+		tabIndex		: 'タブインデックス',
+		advisoryTitle	: 'Title属性',
+		advisoryContentType	: 'Content Type属性',
+		cssClasses		: 'スタイルシートクラス',
+		charset			: 'リンクcharset属性',
+		styles			: 'スタイルシート',
+		selectAnchor	: 'アンカーを選択',
+		anchorName		: 'アンカー名',
+		anchorId		: 'エレメントID',
+		emailAddress	: 'E-Mail アドレス',
+		emailSubject	: '件名',
+		emailBody		: '本文',
+		noAnchors		: '(ドキュメントにおいて利用可能なアンカーはありません。)',
+		noUrl			: 'リンクURLを入力してください。',
+		noEmail			: 'メールアドレスを入力してください。'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'アンカー挿入/編集',
+		menu		: 'アンカー プロパティ',
+		title		: 'アンカー プロパティ',
+		name		: 'アンカー名',
+		errorName	: 'アンカー名を必ず入力してください。'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: '検索して置換',
+		find				: '検索',
+		replace				: '置き換え',
+		findWhat			: '検索する文字列:',
+		replaceWith			: '置換えする文字列:',
+		notFoundMsg			: '指定された文字列は見つかりませんでした。',
+		matchCase			: '部分一致',
+		matchWord			: '単語単位で一致',
+		matchCyclic			: '大文字/小文字区別一致',
+		replaceAll			: 'すべて置換え',
+		replaceSuccessMsg	: '%1 に置換しました。'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'テーブル',
+		title		: 'テーブル プロパティ',
+		menu		: 'テーブル プロパティ',
+		deleteTable	: 'テーブル削除',
+		rows		: '行',
+		columns		: '列',
+		border		: 'ボーダーサイズ',
+		align		: 'キャプションの整列',
+		alignNotSet	: '<なし>',
+		alignLeft	: '左',
+		alignCenter	: '中央',
+		alignRight	: '右',
+		width		: 'テーブル幅',
+		widthPx		: 'ピクセル',
+		widthPc		: 'パーセント',
+		height		: 'テーブル高さ',
+		cellSpace	: 'セル内余白',
+		cellPad		: 'セル内間隔',
+		caption		: 'ｷｬﾌﾟｼｮﾝ',
+		summary		: 'テーブル目的/構造',
+		headers		: 'テーブルヘッダ(th)',
+		headersNone		: 'なし',
+		headersColumn	: '初めの列のみ',
+		headersRow		: '初めの行のみ',
+		headersBoth		: '両方',
+		invalidRows		: '行は0より大きな数値で入力してください。',
+		invalidCols		: '列は0より大きな数値で入力してください。',
+		invalidBorder	: 'ボーダーサイズは数値で入力してください。',
+		invalidWidth	: 'テーブル幅は数値で入力してください。',
+		invalidHeight	: 'テーブル高さは数値で入力してください。',
+		invalidCellSpacing	: 'セル内余白は数値で入力してください。',
+		invalidCellPadding	: 'セル内間隔は数値で入力してください。',
+
+		cell :
+		{
+			menu			: 'セル',
+			insertBefore	: 'セルの前に挿入',
+			insertAfter		: 'セルの後に挿入',
+			deleteCell		: 'セル削除',
+			merge			: 'セル結合',
+			mergeRight		: '右に結合',
+			mergeDown		: '下に結合',
+			splitHorizontal	: 'セルを水平方向分割',
+			splitVertical	: 'セルを垂直方向に分割',
+			title			: 'セルプロパティ',
+			cellType		: 'セルタイプ',
+			rowSpan			: '縦幅(行数)',
+			colSpan			: '横幅(列数)',
+			wordWrap		: '折り返し',
+			hAlign			: 'セル横の整列',
+			vAlign			: 'セル縦の整列',
+			alignTop		: '上',
+			alignMiddle		: '中央',
+			alignBottom		: '下',
+			alignBaseline	: 'ベースライン',
+			bgColor			: '背景色',
+			borderColor		: 'ボーダーカラー',
+			data			: 'テーブルデータ(td)',
+			header			: 'テーブルヘッダ(th)',
+			yes				: 'Yes',
+			no				: 'No',
+			invalidWidth	: 'セル幅は数値で入力してください。',
+			invalidHeight	: 'セル高さは数値で入力してください。',
+			invalidRowSpan	: '縦幅(行数)は数値で入力してください。',
+			invalidColSpan	: '横幅(列数)は数値で入力してください。',
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: '行',
+			insertBefore	: '列の前に挿入',
+			insertAfter		: '列の後に挿入',
+			deleteRow		: '行削除'
+		},
+
+		column :
+		{
+			menu			: 'カラム',
+			insertBefore	: 'カラムの前に挿入',
+			insertAfter		: 'カラムの後に挿入',
+			deleteColumn	: '列削除'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'ボタン プロパティ',
+		text		: 'テキスト (値)',
+		type		: 'タイプ',
+		typeBtn		: 'ボタン',
+		typeSbm		: '送信',
+		typeRst		: 'リセット'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'チェックボックス プロパティ',
+		radioTitle	: 'ラジオボタン プロパティ',
+		value		: '値',
+		selected	: '選択済み'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'フォーム プロパティ',
+		menu		: 'フォーム プロパティ',
+		action		: 'アクション',
+		method		: 'メソッド',
+		encoding	: 'エンコーディング',
+		target		: 'ターゲット',
+		targetNotSet	: '<なし>',
+		targetNew	: '新しいウィンドウ (_blank)',
+		targetTop	: '最上位ウィンドウ (_top)',
+		targetSelf	: '同じウィンドウ (_self)',
+		targetParent	: '親ウィンドウ (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: '選択フィールド プロパティ',
+		selectInfo	: '情報',
+		opAvail		: '利用可能なオプション',
+		value		: '選択項目値',
+		size		: 'サイズ',
+		lines		: '行',
+		chkMulti	: '複数項目選択を許可',
+		opText		: '選択項目名',
+		opValue		: '値',
+		btnAdd		: '追加',
+		btnModify	: '編集',
+		btnUp		: '上へ',
+		btnDown		: '下へ',
+		btnSetValue : '選択した値を設定',
+		btnDelete	: '削除'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'テキストエリア プロパティ',
+		cols		: '列',
+		rows		: '行'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: '１行テキスト プロパティ',
+		name		: '名前',
+		value		: '値',
+		charWidth	: 'サイズ',
+		maxChars	: '最大長',
+		type		: 'タイプ',
+		typeText	: 'テキスト',
+		typePass	: 'パスワード入力'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: '不可視フィールド プロパティ',
+		name	: '名前',
+		value	: '値'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'イメージ プロパティ',
+		titleButton	: '画像ボタン プロパティ',
+		menu		: 'イメージ プロパティ',
+		infoTab	: 'イメージ 情報',
+		btnUpload	: 'サーバーに送信',
+		url		: 'URL',
+		upload	: 'アップロード',
+		alt		: '代替テキスト',
+		width		: '幅',
+		height	: '高さ',
+		lockRatio	: 'ロック比率',
+		resetSize	: 'サイズリセット',
+		border	: 'ボーダー',
+		hSpace	: '横間隔',
+		vSpace	: '縦間隔',
+		align		: '行揃え',
+		alignLeft	: '左',
+		alignAbsBottom: '下部(絶対的)',
+		alignAbsMiddle: '中央(絶対的)',
+		alignBaseline	: 'ベースライン',
+		alignBottom	: '下',
+		alignMiddle	: '中央',
+		alignRight	: '右',
+		alignTextTop	: 'テキスト上部',
+		alignTop	: '上',
+		preview	: 'プレビュー',
+		alertUrl	: 'イメージのURLを入力してください。',
+		linkTab	: 'リンク',
+		button2Img	: '選択したボタンを画像に置き換えますか？',
+		img2Button	: '選択した画像をボタンに置き換えますか？',
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash プロパティ',
+		propertiesTab	: 'プロパティ',
+		title		: 'Flash プロパティ',
+		chkPlay		: '再生',
+		chkLoop		: 'ループ再生',
+		chkMenu		: 'Flashメニュー可能',
+		chkFull		: 'フルスクリーン許可',
+ 		scale		: '拡大縮小設定',
+		scaleAll		: 'すべて表示',
+		scaleNoBorder	: '外が見えない様に拡大',
+		scaleFit		: '上下左右にフィット',
+		access			: 'スプリクトアクセス(AllowScriptAccess)',
+		accessAlways	: 'すべての場合に通信可能(Always)',
+		accessSameDomain	: '同一ドメインのみに通信可能(Same domain)',
+		accessNever	: 'すべての場合に通信不可能(Never)',
+		align		: '行揃え',
+		alignLeft	: '左',
+		alignAbsBottom: '下部(絶対的)',
+		alignAbsMiddle: '中央(絶対的)',
+		alignBaseline	: 'ベースライン',
+		alignBottom	: '下',
+		alignMiddle	: '中央',
+		alignRight	: '右',
+		alignTextTop	: 'テキスト上部',
+		alignTop	: '上',
+		quality		: '画質',
+		qualityBest		 : '品質優先',
+		qualityHigh		 : '高',
+		qualityAutoHigh	 : '自動/高',
+		qualityMedium	 : '中',
+		qualityAutoLow	 : '自動/低',
+		qualityLow		 : '低',
+		windowModeWindow	 : '標準',
+		windowModeOpaque	 : '背景を不透明設定',
+		windowModeTransparent	 : '背景を透過設定',
+		windowMode	: 'ウィンドウモード',
+		flashvars	: 'フラッシュに渡す変数(FlashVars)',
+		bgcolor	: '背景色',
+		width	: '幅',
+		height	: '高さ',
+		hSpace	: '横間隔',
+		vSpace	: '縦間隔',
+		validateSrc : 'リンクURLを入力してください。',
+		validateWidth : '幅は数値で入力してください。',
+		validateHeight : '高さは数値で入力してください。',
+		validateHSpace : '横間隔は数値で入力してください。',
+		validateVSpace : '縦間隔は数値で入力してください。'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'スペルチェック',
+		title			: 'スペルチェック',
+		notAvailable	: '申し訳ありません、現在サービスを利用することができません',
+		errorLoading	: 'アプリケーションサービスホスト読込みエラー: %s.',
+		notInDic		: '辞書にありません',
+		changeTo		: '変更',
+		btnIgnore		: '無視',
+		btnIgnoreAll	: 'すべて無視',
+		btnReplace		: '置換',
+		btnReplaceAll	: 'すべて置換',
+		btnUndo			: 'やり直し',
+		noSuggestions	: '- 該当なし -',
+		progress		: 'スペルチェック処理中...',
+		noMispell		: 'スペルチェック完了: スペルの誤りはありませんでした',
+		noChanges		: 'スペルチェック完了: 語句は変更されませんでした',
+		oneChange		: 'スペルチェック完了: １語句変更されました',
+		manyChanges		: 'スペルチェック完了: %1 語句変更されました',
+		ieSpellDownload	: 'スペルチェッカーがインストールされていません。今すぐダウンロードしますか?'
+	},
+
+	smiley :
+	{
+		toolbar	: '絵文字',
+		title	: '顔文字挿入'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 エレメント'
+	},
+
+	numberedlist : '段落番号',
+	bulletedlist : '箇条書き',
+	indent : 'インデント',
+	outdent : 'インデント解除',
+
+	justify :
+	{
+		left : '左揃え',
+		center : '中央揃え',
+		right : '右揃え',
+		block : '両端揃え'
+	},
+
+	blockquote : 'ブロック引用',
+
+	clipboard :
+	{
+		title		: '貼り付け',
+		cutError	: 'ブラウザーのセキュリティ設定によりエディタの切り取り操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl+X)を使用してください。',
+		copyError	: 'ブラウザーのセキュリティ設定によりエディタのコピー操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl+C)を使用してください。',
+		pasteMsg	: 'キーボード(<STRONG>Ctrl+V</STRONG>)を使用して、次の入力エリア内で貼って、<STRONG>OK</STRONG>を押してください。',
+		securityMsg	: 'ブラウザのセキュリティ設定により、エディタはクリップボード・データに直接アクセスすることができません。このウィンドウは貼り付け操作を行う度に表示されます。'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'ワード文章から貼り付け',
+		title : 'ワード文章から貼り付け',
+		advice : 'キーボード(<STRONG>Ctrl+V</STRONG>)を使用して、次の入力エリア内で貼って、<STRONG>OK</STRONG>を押してください。',
+		ignoreFontFace : 'FontタグのFace属性を無視します。',
+		removeStyle : 'スタイル定義を削除します。'
+	},
+
+	pasteText :
+	{
+		button : 'プレーンテキスト貼り付け',
+		title : 'プレーンテキスト貼り付け'
+	},
+
+	templates :
+	{
+		button : 'テンプレート(雛形)',
+		title : 'テンプレート内容',
+		insertOption: '現在のエディタの内容と置換えをします',
+		selectPromptMsg: 'エディターで使用するテンプレートを選択してください。<br>(現在のエディタの内容は失われます):',
+		emptyListMsg : '(テンプレートが定義されていません)'
+	},
+
+	showBlocks : 'ブロック表示',
+
+	stylesCombo :
+	{
+		label : 'スタイル',
+		voiceLabel : 'スタイル',
+		panelVoiceLabel : 'スタイルを選択してください',
+		panelTitle1 : 'ブロックスタイル',
+		panelTitle2 : 'インラインスタイル',
+		panelTitle3 : 'オブジェクトスタイル'
+	},
+
+	format :
+	{
+		label : 'フォーマット',
+		voiceLabel : 'フォーマット',
+		panelTitle : 'フォーマット',
+		panelVoiceLabel : 'パラグラフ形式を選択してください。',
+
+		tag_p : '標準',
+		tag_pre : '書式付き',
+		tag_address : 'アドレス',
+		tag_h1 : '見出し 1',
+		tag_h2 : '見出し 2',
+		tag_h3 : '見出し 3',
+		tag_h4 : '見出し 4',
+		tag_h5 : '見出し 5',
+		tag_h6 : '見出し 6',
+		tag_div : '標準 (DIV)'
+	},
+
+	font :
+	{
+		label : 'フォント',
+		voiceLabel : 'フォント',
+		panelTitle : 'フォント',
+		panelVoiceLabel : 'フォントを選択してください'
+	},
+
+	fontSize :
+	{
+		label : 'サイズ',
+		voiceLabel : 'フォントサイズ',
+		panelTitle : 'サイズ',
+		panelVoiceLabel : 'フォントサイズを選択してください'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'テキスト色',
+		bgColorTitle : '背景色',
+		auto : '自動',
+		more : 'その他の色...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'スペルチェック設定(SCAYT)',
+		enable : 'SCAYT有効',
+		disable : 'SCAYT無効',
+		about : 'SCAYTﾊﾞｰｼﾞｮﾝ',
+		toggle : 'SCAYT切替',
+		options : 'オプション',
+		langs : '言語',
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : '無視',
+		ignoreAll : 'すべて無視',
+		addWord : '語句追加',
+		emptyDic : '辞書名は必ず入力してください',
+		optionsTab : 'オプション',
+		languagesTab : '言語',
+		dictionariesTab : '辞書',
+		aboutTab : 'バージョン情報'
+	},
+
+	about :
+	{
+		title : 'CKEditorバージョン情報',
+		dlgTitle : 'CKEditorバージョン情報',
+		moreInfo : 'ライセンス情報の詳細はウェブサイトにて確認してください:',
+		copy : 'Copyright &copy; $1. All rights reserved.'
+	},
+
+	maximize : '最大化',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'アンカー',
+		flash : 'Flash Animation',
+		div : 'Page Break',
+		unknown : 'Unknown Object'
+	},
+
+	resize : 'ドラックしてリサイズ',
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/he.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/he.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/he.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Hebrew language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['he'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'rtl',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'עורך טקסט עשיר, %1',
+
+	// Toolbar buttons without dialogs.
+	source			: 'מקור',
+	newPage			: 'דף חדש',
+	save			: 'שמירה',
+	preview			: 'תצוגה מקדימה',
+	cut				: 'גזירה',
+	copy			: 'העתקה',
+	paste			: 'הדבקה',
+	print			: 'הדפסה',
+	underline		: 'קו תחתון',
+	bold			: 'מודגש',
+	italic			: 'נטוי',
+	selectAll		: 'בחירת הכל',
+	removeFormat	: 'הסרת העיצוב',
+	strike			: 'כתיב מחוק',
+	subscript		: 'כתיב תחתון',
+	superscript		: 'כתיב עליון',
+	horizontalrule	: 'הוספת קו אופקי',
+	pagebreak		: 'הוסף שבירת דף',
+	unlink			: 'הסרת הקישור',
+	undo			: 'ביטול צעד אחרון',
+	redo			: 'חזרה על צעד אחרון',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'סייר השרת',
+		url				: 'כתובת (URL)',
+		protocol		: 'פרוטוקול',
+		upload			: 'העלאה',
+		uploadSubmit	: 'שליחה לשרת',
+		image			: 'תמונה',
+		flash			: 'פלאש',
+		form			: 'טופס',
+		checkbox		: 'תיבת סימון',
+		radio		: 'לחצן אפשרויות',
+		textField		: 'שדה טקסט',
+		textarea		: 'איזור טקסט',
+		hiddenField		: 'שדה חבוי',
+		button			: 'כפתור',
+		select	: 'שדה בחירה',
+		imageButton		: 'כפתור תמונה',
+		notSet			: '<לא נקבע>',
+		id				: 'זיהוי (Id)',
+		name			: 'שם',
+		langDir			: 'כיוון שפה',
+		langDirLtr		: 'שמאל לימין (LTR)',
+		langDirRtl		: 'ימין לשמאל (RTL)',
+		langCode		: 'קוד שפה',
+		longDescr		: 'קישור לתיאור מפורט',
+		cssClass		: 'גיליונות עיצוב קבוצות',
+		advisoryTitle	: 'כותרת מוצעת',
+		cssStyle		: 'סגנון',
+		ok				: 'אישור',
+		cancel			: 'ביטול',
+		generalTab		: 'כללי',
+		advancedTab		: 'אפשרויות מתקדמות',
+		validateNumberFailed	: 'הערך חייב להיות מספר.',
+		confirmNewPage	: 'כל השינויים שלא נשמרו יאבדו. האם להעלות דף חדש?',
+		confirmCancel	: 'חלק מהאפשרויות שונו, האם לסגור את הדיאלוג. ?',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, לא זמין</span>'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'הוספת תו מיוחד',
+		title		: 'בחירת תו מיוחד'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'הוספת/עריכת קישור',
+		menu		: 'עריכת קישור',
+		title		: 'קישור',
+		info		: 'מידע על הקישור',
+		target		: 'מטרה',
+		upload		: 'העלאה',
+		advanced	: 'אפשרויות מתקדמות',
+		type		: 'סוג קישור',
+		toAnchor	: 'עוגן בעמוד זה',
+		toEmail		: 'דוא\'\'ל',
+		target		: 'מטרה',
+		targetNotSet	: '<לא נקבע>',
+		targetFrame	: '<מסגרת>',
+		targetPopup	: '<חלון קופץ>',
+		targetNew	: 'חלון חדש (_blank)',
+		targetTop	: 'חלון ראשי (_top)',
+		targetSelf	: 'באותו החלון (_self)',
+		targetParent	: 'חלון האב (_parent)',
+		targetFrameName	: 'שם מסגרת היעד',
+		targetPopupName	: 'שם החלון הקופץ',
+		popupFeatures	: 'תכונות החלון הקופץ',
+		popupResizable	: 'שינוי גודל',
+		popupStatusBar	: 'סרגל חיווי',
+		popupLocationBar	: 'סרגל כתובת',
+		popupToolbar	: 'סרגל הכלים',
+		popupMenuBar	: 'סרגל תפריט',
+		popupFullScreen	: 'מסך מלא (IE)',
+		popupScrollBars	: 'ניתן לגלילה',
+		popupDependent	: 'תלוי (Netscape)',
+		popupWidth		: 'רוחב',
+		popupLeft		: 'מיקום צד שמאל',
+		popupHeight		: 'גובה',
+		popupTop		: 'מיקום צד עליון',
+		id				: 'זיהוי (Id)',
+		langDir			: 'כיוון שפה',
+		langDirNotSet	: '<לא נקבע>',
+		langDirLTR		: 'שמאל לימין (LTR)',
+		langDirRTL		: 'ימין לשמאל (RTL)',
+		acccessKey		: 'מקש גישה',
+		name			: 'שם',
+		langCode		: 'כיוון שפה',
+		tabIndex		: 'מספר טאב',
+		advisoryTitle	: 'כותרת מוצעת',
+		advisoryContentType	: 'Content Type מוצע',
+		cssClasses		: 'גיליונות עיצוב קבוצות',
+		charset			: 'קידוד המשאב המקושר',
+		styles			: 'סגנון',
+		selectAnchor	: 'בחירת עוגן',
+		anchorName		: 'עפ\'\'י שם העוגן',
+		anchorId		: 'עפ\'\'י זיהוי (Id) הרכיב',
+		emailAddress	: 'כתובת הדוא\'\'ל',
+		emailSubject	: 'נושא ההודעה',
+		emailBody		: 'גוף ההודעה',
+		noAnchors		: '(אין עוגנים זמינים בדף)',
+		noUrl			: 'נא להקליד את כתובת הקישור (URL)',
+		noEmail			: 'נא להקליד את כתובת הדוא\'\'ל'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'הוספת/עריכת נקודת עיגון',
+		menu		: 'מאפייני נקודת עיגון',
+		title		: 'מאפייני נקודת עיגון',
+		name		: 'שם לנקודת עיגון',
+		errorName	: 'אנא הזן שם לנקודת עיגון'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'חפש והחלף',
+		find				: 'חיפוש',
+		replace				: 'החלפה',
+		findWhat			: 'חיפוש מחרוזת:',
+		replaceWith			: 'החלפה במחרוזת:',
+		notFoundMsg			: 'הטקסט המבוקש לא נמצא.',
+		matchCase			: 'התאמת סוג אותיות (Case)',
+		matchWord			: 'התאמה למילה המלאה',
+		matchCyclic			: 'התאמה מחזורית',
+		replaceAll			: 'החלפה בכל העמוד',
+		replaceSuccessMsg	: '%1 טקסטים הוחלפו.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'טבלה',
+		title		: 'תכונות טבלה',
+		menu		: 'תכונות טבלה',
+		deleteTable	: 'מחק טבלה',
+		rows		: 'שורות',
+		columns		: 'עמודות',
+		border		: 'גודל מסגרת',
+		align		: 'יישור',
+		alignNotSet	: '<לא נקבע>',
+		alignLeft	: 'שמאל',
+		alignCenter	: 'מרכז',
+		alignRight	: 'ימין',
+		width		: 'רוחב',
+		widthPx		: 'פיקסלים',
+		widthPc		: 'אחוז',
+		height		: 'גובה',
+		cellSpace	: 'מרווח תא',
+		cellPad		: 'ריפוד תא',
+		caption		: 'כיתוב',
+		summary		: 'סיכום',
+		headers		: 'כותרות',
+		headersNone		: 'אין',
+		headersColumn	: 'עמודה ראשונה',
+		headersRow		: 'שורה ראשונה',
+		headersBoth		: 'שניהם',
+		invalidRows		: 'מספר השורות חייב להיות מספר גדול מ 0.',
+		invalidCols		: 'מספר העמודות חייב להיות מספר גדול מ 0.',
+		invalidBorder	: 'גודל מסגרת חייב להיות מספר.',
+		invalidWidth	: 'רוחה טבלה חייב להיות רוחב.',
+		invalidHeight	: 'גובה טבלה חייב להיות מספר.',
+		invalidCellSpacing	: 'ריווח תאים חייב להיות מספר.',
+		invalidCellPadding	: 'ריפוד תאים חייב להיות מספר.',
+
+		cell :
+		{
+			menu			: 'תא',
+			insertBefore	: 'הוסף תא אחרי',
+			insertAfter		: 'הוסף תא אחרי',
+			deleteCell		: 'מחיקת תאים',
+			merge			: 'מיזוג תאים',
+			mergeRight		: 'מזג ימינה',
+			mergeDown		: 'מזג למטה',
+			splitHorizontal	: 'פצל תא אופקית',
+			splitVertical	: 'פצל תא אנכית',
+			title			: 'תכונות התא',
+			cellType		: 'סוג תא',
+			rowSpan			: 'מתיחת שורות',
+			colSpan			: 'מתיחת תאים',
+			wordWrap		: 'מניעת גלישת שורות',
+			hAlign			: 'יישור אופקי',
+			vAlign			: 'יישור אנכי',
+			alignTop		: 'למעלה',
+			alignMiddle		: 'מרכז',
+			alignBottom		: 'למטה',
+			alignBaseline	: 'שורת בסיס',
+			bgColor			: 'צבע רקע',
+			borderColor		: 'צבע מסגרת',
+			data			: 'מידע',
+			header			: 'כותרת',
+			yes				: 'כן',
+			no				: 'לא',
+			invalidWidth	: 'רוחב תא חייב להיות מספר.',
+			invalidHeight	: 'גובה תא חייב להיות מספר.',
+			invalidRowSpan	: 'מתיחת שורות חייב להיות מספר שלם.',
+			invalidColSpan	: 'מתיחת עמודות חייב להיות מספר שלם.',
+			chooseColor : 'בחר'
+		},
+
+		row :
+		{
+			menu			: 'שורה',
+			insertBefore	: 'הוסף שורה לפני',
+			insertAfter		: 'הוסף שורה אחרי',
+			deleteRow		: 'מחיקת שורות'
+		},
+
+		column :
+		{
+			menu			: 'עמודה',
+			insertBefore	: 'הוסף עמודה לפני',
+			insertAfter		: 'הוסף עמודה אחרי',
+			deleteColumn	: 'מחיקת עמודות'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'מאפייני כפתור',
+		text		: 'טקסט (ערך)',
+		type		: 'סוג',
+		typeBtn		: 'כפתור',
+		typeSbm		: 'שלח',
+		typeRst		: 'אפס'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'מאפייני תיבת סימון',
+		radioTitle	: 'מאפייני לחצן אפשרויות',
+		value		: 'ערך',
+		selected	: 'בחור'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'מאפיני טופס',
+		menu		: 'מאפיני טופס',
+		action		: 'שלח אל',
+		method		: 'סוג שליחה',
+		encoding	: 'קידוד',
+		target		: 'מטרה',
+		targetNotSet	: '<לא נקבע>',
+		targetNew	: 'חלון חדש (_blank)',
+		targetTop	: 'חלון ראשי (_top)',
+		targetSelf	: 'באותו החלון (_self)',
+		targetParent	: 'חלון האב (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'מאפייני שדה בחירה',
+		selectInfo	: 'מידע',
+		opAvail		: 'אפשרויות זמינות',
+		value		: 'ערך',
+		size		: 'גודל',
+		lines		: 'שורות',
+		chkMulti	: 'אפשר בחירות מרובות',
+		opText		: 'טקסט',
+		opValue		: 'ערך',
+		btnAdd		: 'הוסף',
+		btnModify	: 'שנה',
+		btnUp		: 'למעלה',
+		btnDown		: 'למטה',
+		btnSetValue : 'קבע כברירת מחדל',
+		btnDelete	: 'מחק'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'מאפיני איזור טקסט',
+		cols		: 'עמודות',
+		rows		: 'שורות'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'מאפייני שדה טקסט',
+		name		: 'שם',
+		value		: 'ערך',
+		charWidth	: 'רוחב באותיות',
+		maxChars	: 'מקסימות אותיות',
+		type		: 'סוג',
+		typeText	: 'טקסט',
+		typePass	: 'סיסמה'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'מאפיני שדה חבוי',
+		name	: 'שם',
+		value	: 'ערך'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'תכונות התמונה',
+		titleButton	: 'מאפיני כפתור תמונה',
+		menu		: 'תכונות התמונה',
+		infoTab	: 'מידע על התמונה',
+		btnUpload	: 'שליחה לשרת',
+		url		: 'כתובת (URL)',
+		upload	: 'העלאה',
+		alt		: 'טקסט חלופי',
+		width		: 'רוחב',
+		height	: 'גובה',
+		lockRatio	: 'נעילת היחס',
+		resetSize	: 'איפוס הגודל',
+		border	: 'מסגרת',
+		hSpace	: 'מרווח אופקי',
+		vSpace	: 'מרווח אנכי',
+		align		: 'יישור',
+		alignLeft	: 'לשמאל',
+		alignAbsBottom: 'לתחתית האבסולוטית',
+		alignAbsMiddle: 'מרכוז אבסולוטי',
+		alignBaseline	: 'לקו התחתית',
+		alignBottom	: 'לתחתית',
+		alignMiddle	: 'לאמצע',
+		alignRight	: 'לימין',
+		alignTextTop	: 'לראש הטקסט',
+		alignTop	: 'למעלה',
+		preview	: 'תצוגה מקדימה',
+		alertUrl	: 'נא להקליד את כתובת התמונה',
+		linkTab	: 'קישור',
+		button2Img	: 'האם להפוך את תמונת כפתור לתמונה פשוטה?',
+		img2Button	: 'האם להפוך את התמונה לכפתור תמונה?',
+		urlMissing : 'כתובת התמונה חסרה.'
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'מאפייני פלאש',
+		propertiesTab	: 'מאפיינים',
+		title		: 'מאפיני פלאש',
+		chkPlay		: 'נגן אוטומטי',
+		chkLoop		: 'לולאה',
+		chkMenu		: 'אפשר תפריט פלאש',
+		chkFull		: 'אפשר חלון מלא',
+ 		scale		: 'גודל',
+		scaleAll		: 'הצג הכל',
+		scaleNoBorder	: 'ללא גבולות',
+		scaleFit		: 'התאמה מושלמת',
+		access			: 'גישת סקריפט',
+		accessAlways	: 'תמיד',
+		accessSameDomain	: 'דומיין זהה',
+		accessNever	: 'אף פעם',
+		align		: 'יישור',
+		alignLeft	: 'לשמאל',
+		alignAbsBottom: 'לתחתית האבסולוטית',
+		alignAbsMiddle: 'מרכוז אבסולוטי',
+		alignBaseline	: 'לקו התחתית',
+		alignBottom	: 'לתחתית',
+		alignMiddle	: 'לאמצע',
+		alignRight	: 'לימין',
+		alignTextTop	: 'לראש הטקסט',
+		alignTop	: 'למעלה',
+		quality		: 'איכות',
+		qualityBest		 : 'מעולה',
+		qualityHigh		 : 'גבוהה',
+		qualityAutoHigh	 : 'אוטומטית גבוהה',
+		qualityMedium	 : 'ממוצעת',
+		qualityAutoLow	 : 'אוטומטית נמוך',
+		qualityLow		 : 'נמוך',
+		windowModeWindow	 : 'חלון',
+		windowModeOpaque	 : 'אטום',
+		windowModeTransparent	 : 'שקוף',
+		windowMode	: 'מצב חלון',
+		flashvars	: 'משתנים לפלאש',
+		bgcolor	: 'צבע רקע',
+		width	: 'רוחב',
+		height	: 'גובה',
+		hSpace	: 'מרווח אופקי',
+		vSpace	: 'מרווח אנכי',
+		validateSrc : 'נא להקליד את כתובת הקישור (URL)',
+		validateWidth : 'רוחב חייב להיות מספר.',
+		validateHeight : 'גובהה חייב להיות מספר.',
+		validateHSpace : 'ריווח אופקי חייב להיות מספר.',
+		validateVSpace : 'ריווח אנחי חייב להיות מספר.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'בדיקת איות',
+		title			: 'בדיקת איות',
+		notAvailable	: 'מצטערים לא נמצא שירות זמין.',
+		errorLoading	: 'שגיעה בהעלאת שירת אפליקציה: %s.',
+		notInDic		: 'לא נמצא במילון',
+		changeTo		: 'שנה ל',
+		btnIgnore		: 'התעלם',
+		btnIgnoreAll	: 'התעלם מהכל',
+		btnReplace		: 'החלף',
+		btnReplaceAll	: 'החלף הכל',
+		btnUndo			: 'החזר',
+		noSuggestions	: '- אין הצעות -',
+		progress		: 'בדיקות איות בתהליך ....',
+		noMispell		: 'בדיקות איות הסתיימה: לא נמצאו שגיעות כתיב',
+		noChanges		: 'בדיקות איות הסתיימה: לא שונתה אף מילה',
+		oneChange		: 'בדיקות איות הסתיימה: שונתה מילה אחת',
+		manyChanges		: 'בדיקות איות הסתיימה: %1 מילים שונו',
+		ieSpellDownload	: 'בודק האיות לא מותקן, האם אתה מעוניין להוריד?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'סמיילי',
+		title	: 'הוספת סמיילי'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 אלמנט'
+	},
+
+	numberedlist : 'רשימה ממוספרת',
+	bulletedlist : 'רשימת נקודות',
+	indent : 'הגדלת אינדנטציה',
+	outdent : 'הקטנת אינדנטציה',
+
+	justify :
+	{
+		left : 'יישור לשמאל',
+		center : 'מרכוז',
+		right : 'יישור לימין',
+		block : 'יישור לשוליים'
+	},
+
+	blockquote : 'בלוק ציטוט',
+
+	clipboard :
+	{
+		title		: 'הדבקה',
+		cutError	: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה  אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+X).',
+		copyError	: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+C).',
+		pasteMsg	: 'אנא הדבק בתוך הקופסה באמצעות  (<STRONG>Ctrl+V</STRONG>) ולחץ על  <STRONG>אישור</STRONG>.',
+		securityMsg	: 'עקב הגדרות אבטחה בדפדפן, לא ניתן לגשת אל לוח הגזירים (clipboard) בצורה ישירה.אנא בצע הדבק שוב בחלון זה.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'הדבקה מ-וורד',
+		title : 'הדבקה מ-וורד',
+		advice : 'אנא הדבק בתוך הקופסה באמצעות  (<STRONG>Ctrl+V</STRONG>) ולחץ על  <STRONG>אישור</STRONG>.',
+		ignoreFontFace : 'התעלם מהגדרות סוג פונט',
+		removeStyle : 'הסר הגדרות סגנון'
+	},
+
+	pasteText :
+	{
+		button : 'הדבקה כטקסט פשוט',
+		title : 'הדבקה כטקסט פשוט'
+	},
+
+	templates :
+	{
+		button : 'תבניות',
+		title : 'תביות תוכן',
+		insertOption: 'החלפת תוכן ממשי',
+		selectPromptMsg: 'אנא בחר תבנית לפתיחה בעורך <BR>התוכן המקורי ימחק:',
+		emptyListMsg : '(לא הוגדרו תבניות)'
+	},
+
+	showBlocks : 'הצג בלוקים',
+
+	stylesCombo :
+	{
+		label : 'סגנון',
+		voiceLabel : 'סגנונות',
+		panelVoiceLabel : 'בחר סגנון',
+		panelTitle1 : 'סיגנונות בלוק',
+		panelTitle2 : 'סגנונות רצף',
+		panelTitle3 : 'סגנונות אובייקט'
+	},
+
+	format :
+	{
+		label : 'עיצוב',
+		voiceLabel : 'עיצוב',
+		panelTitle : 'עיצוב',
+		panelVoiceLabel : 'בחר פיסקת עיצוב',
+
+		tag_p : 'נורמלי',
+		tag_pre : 'קוד',
+		tag_address : 'כתובת',
+		tag_h1 : 'כותרת',
+		tag_h2 : 'כותרת 2',
+		tag_h3 : 'כותרת 3',
+		tag_h4 : 'כותרת 4',
+		tag_h5 : 'כותרת 5',
+		tag_h6 : 'כותרת 6',
+		tag_div : 'נורמלי (DIV)'
+	},
+
+	font :
+	{
+		label : 'גופן',
+		voiceLabel : 'גופן',
+		panelTitle : 'גופן',
+		panelVoiceLabel : 'בחר גופן'
+	},
+
+	fontSize :
+	{
+		label : 'גודל',
+		voiceLabel : 'גודל גופן',
+		panelTitle : 'גודל',
+		panelVoiceLabel : 'בחר גודל גופן'
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'צבע טקסט',
+		bgColorTitle : 'צבע רקע',
+		auto : 'אוטומטי',
+		more : 'צבעים נוספים...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'בדיקת איות בזמן כתיבה',
+		enable : 'אפשר SCAYT',
+		disable : 'בטל SCAYT',
+		about : 'אודות SCAYT',
+		toggle : 'שינוי SCAYT',
+		options : 'אפשרויות',
+		langs : 'שפות',
+		moreSuggestions : 'עוד הצעות',
+		ignore : 'התעלם',
+		ignoreAll : 'התעלם מהכל',
+		addWord : 'הודף מילה',
+		emptyDic : 'אסור לשם המילון להיות ריק.',
+		optionsTab : 'אפשרויות',
+		languagesTab : 'שפות',
+		dictionariesTab : 'מילון',
+		aboutTab : 'אודות'
+	},
+
+	about :
+	{
+		title : 'אודות CKEditor',
+		dlgTitle : 'אודות CKEditor',
+		moreInfo : 'לרישוי אנה בקרו באתר שלנו:',
+		copy : 'Copyright &copy; $1. כל הזכויות שמורות.'
+	},
+
+	maximize : 'להגדיל למקסימום',
+	minimize : 'הקטן למינימום',
+
+	fakeobjects :
+	{
+		anchor : 'עוגן',
+		flash : 'אנימצית פלאש',
+		div : 'שבירת דף',
+		unknown : 'אובייקט לא ידוע'
+	},
+
+	resize : 'גרור בכדי לשנות גודל',
+
+	colordialog :
+	{
+		title : 'בחר צבע',
+		highlight : 'סמן',
+		selected : 'נבחר',
+		clear : 'נקה'
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/fi.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/fi.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/fi.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Finnish language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['fi'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Koodi',
+	newPage			: 'Tyhjennä',
+	save			: 'Tallenna',
+	preview			: 'Esikatsele',
+	cut				: 'Leikkaa',
+	copy			: 'Kopioi',
+	paste			: 'Liitä',
+	print			: 'Tulosta',
+	underline		: 'Alleviivattu',
+	bold			: 'Lihavoitu',
+	italic			: 'Kursivoitu',
+	selectAll		: 'Valitse kaikki',
+	removeFormat	: 'Poista muotoilu',
+	strike			: 'Yliviivattu',
+	subscript		: 'Alaindeksi',
+	superscript		: 'Yläindeksi',
+	horizontalrule	: 'Lisää murtoviiva',
+	pagebreak		: 'Lisää sivun vaihto',
+	unlink			: 'Poista linkki',
+	undo			: 'Kumoa',
+	redo			: 'Toista',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Selaa palvelinta',
+		url				: 'Osoite',
+		protocol		: 'Protokolla',
+		upload			: 'Lisää tiedosto',
+		uploadSubmit	: 'Lähetä palvelimelle',
+		image			: 'Kuva',
+		flash			: 'Flash',
+		form			: 'Lomake',
+		checkbox		: 'Valintaruutu',
+		radio		: 'Radiopainike',
+		textField		: 'Tekstikenttä',
+		textarea		: 'Tekstilaatikko',
+		hiddenField		: 'Piilokenttä',
+		button			: 'Painike',
+		select	: 'Valintakenttä',
+		imageButton		: 'Kuvapainike',
+		notSet			: '<ei asetettu>',
+		id				: 'Tunniste',
+		name			: 'Nimi',
+		langDir			: 'Kielen suunta',
+		langDirLtr		: 'Vasemmalta oikealle (LTR)',
+		langDirRtl		: 'Oikealta vasemmalle (RTL)',
+		langCode		: 'Kielikoodi',
+		longDescr		: 'Pitkän kuvauksen URL',
+		cssClass		: 'Tyyliluokat',
+		advisoryTitle	: 'Avustava otsikko',
+		cssStyle		: 'Tyyli',
+		ok				: 'OK',
+		cancel			: 'Peruuta',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Lisäominaisuudet',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Lisää erikoismerkki',
+		title		: 'Valitse erikoismerkki'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Lisää linkki/muokkaa linkkiä',
+		menu		: 'Muokkaa linkkiä',
+		title		: 'Linkki',
+		info		: 'Linkin tiedot',
+		target		: 'Kohde',
+		upload		: 'Lisää tiedosto',
+		advanced	: 'Lisäominaisuudet',
+		type		: 'Linkkityyppi',
+		toAnchor	: 'Ankkuri tässä sivussa',
+		toEmail		: 'Sähköposti',
+		target		: 'Kohde',
+		targetNotSet	: '<ei asetettu>',
+		targetFrame	: '<kehys>',
+		targetPopup	: '<popup ikkuna>',
+		targetNew	: 'Uusi ikkuna (_blank)',
+		targetTop	: 'Päällimmäisin ikkuna (_top)',
+		targetSelf	: 'Sama ikkuna (_self)',
+		targetParent	: 'Emoikkuna (_parent)',
+		targetFrameName	: 'Kohdekehyksen nimi',
+		targetPopupName	: 'Popup ikkunan nimi',
+		popupFeatures	: 'Popup ikkunan ominaisuudet',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Tilarivi',
+		popupLocationBar	: 'Osoiterivi',
+		popupToolbar	: 'Vakiopainikkeet',
+		popupMenuBar	: 'Valikkorivi',
+		popupFullScreen	: 'Täysi ikkuna (IE)',
+		popupScrollBars	: 'Vierityspalkit',
+		popupDependent	: 'Riippuva (Netscape)',
+		popupWidth		: 'Leveys',
+		popupLeft		: 'Vasemmalta (px)',
+		popupHeight		: 'Korkeus',
+		popupTop		: 'Ylhäältä (px)',
+		id				: 'Id', // MISSING
+		langDir			: 'Kielen suunta',
+		langDirNotSet	: '<ei asetettu>',
+		langDirLTR		: 'Vasemmalta oikealle (LTR)',
+		langDirRTL		: 'Oikealta vasemmalle (RTL)',
+		acccessKey		: 'Pikanäppäin',
+		name			: 'Nimi',
+		langCode		: 'Kielen suunta',
+		tabIndex		: 'Tabulaattori indeksi',
+		advisoryTitle	: 'Avustava otsikko',
+		advisoryContentType	: 'Avustava sisällön tyyppi',
+		cssClasses		: 'Tyyliluokat',
+		charset			: 'Linkitetty kirjaimisto',
+		styles			: 'Tyyli',
+		selectAnchor	: 'Valitse ankkuri',
+		anchorName		: 'Ankkurin nimen mukaan',
+		anchorId		: 'Ankkurin ID:n mukaan',
+		emailAddress	: 'Sähköpostiosoite',
+		emailSubject	: 'Aihe',
+		emailBody		: 'Viesti',
+		noAnchors		: '(Ei ankkureita tässä dokumentissa)',
+		noUrl			: 'Linkille on kirjoitettava URL',
+		noEmail			: 'Kirjoita sähköpostiosoite'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Lisää ankkuri/muokkaa ankkuria',
+		menu		: 'Ankkurin ominaisuudet',
+		title		: 'Ankkurin ominaisuudet',
+		name		: 'Nimi',
+		errorName	: 'Ankkurille on kirjoitettava nimi'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Etsi ja korvaa',
+		find				: 'Etsi',
+		replace				: 'Korvaa',
+		findWhat			: 'Etsi mitä:',
+		replaceWith			: 'Korvaa tällä:',
+		notFoundMsg			: 'Etsittyä tekstiä ei löytynyt.',
+		matchCase			: 'Sama kirjainkoko',
+		matchWord			: 'Koko sana',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Korvaa kaikki',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Taulu',
+		title		: 'Taulun ominaisuudet',
+		menu		: 'Taulun ominaisuudet',
+		deleteTable	: 'Poista taulu',
+		rows		: 'Rivit',
+		columns		: 'Sarakkeet',
+		border		: 'Rajan paksuus',
+		align		: 'Kohdistus',
+		alignNotSet	: '<ei asetettu>',
+		alignLeft	: 'Vasemmalle',
+		alignCenter	: 'Keskelle',
+		alignRight	: 'Oikealle',
+		width		: 'Leveys',
+		widthPx		: 'pikseliä',
+		widthPc		: 'prosenttia',
+		height		: 'Korkeus',
+		cellSpace	: 'Solujen väli',
+		cellPad		: 'Solujen sisennys',
+		caption		: 'Otsikko',
+		summary		: 'Yhteenveto',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Solu',
+			insertBefore	: 'Lisää solu eteen',
+			insertAfter		: 'Lisää solu perään',
+			deleteCell		: 'Poista solut',
+			merge			: 'Yhdistä solut',
+			mergeRight		: 'Yhdistä oikealla olevan kanssa',
+			mergeDown		: 'Yhdistä alla olevan kanssa',
+			splitHorizontal	: 'Jaa solu vaakasuunnassa',
+			splitVertical	: 'Jaa solu pystysuunnassa',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Rivi',
+			insertBefore	: 'Lisää rivi yläpuolelle',
+			insertAfter		: 'Lisää rivi alapuolelle',
+			deleteRow		: 'Poista rivit'
+		},
+
+		column :
+		{
+			menu			: 'Sarake',
+			insertBefore	: 'Lisää sarake vasemmalle',
+			insertAfter		: 'Lisää sarake oikealle',
+			deleteColumn	: 'Poista sarakkeet'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Painikkeen ominaisuudet',
+		text		: 'Teksti (arvo)',
+		type		: 'Tyyppi',
+		typeBtn		: 'Painike',
+		typeSbm		: 'Lähetä',
+		typeRst		: 'Tyhjennä'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Valintaruudun ominaisuudet',
+		radioTitle	: 'Radiopainikkeen ominaisuudet',
+		value		: 'Arvo',
+		selected	: 'Valittu'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Lomakkeen ominaisuudet',
+		menu		: 'Lomakkeen ominaisuudet',
+		action		: 'Toiminto',
+		method		: 'Tapa',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Kohde',
+		targetNotSet	: '<ei asetettu>',
+		targetNew	: 'Uusi ikkuna (_blank)',
+		targetTop	: 'Päällimmäisin ikkuna (_top)',
+		targetSelf	: 'Sama ikkuna (_self)',
+		targetParent	: 'Emoikkuna (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Valintakentän ominaisuudet',
+		selectInfo	: 'Info',
+		opAvail		: 'Ominaisuudet',
+		value		: 'Arvo',
+		size		: 'Koko',
+		lines		: 'Rivit',
+		chkMulti	: 'Salli usea valinta',
+		opText		: 'Teksti',
+		opValue		: 'Arvo',
+		btnAdd		: 'Lisää',
+		btnModify	: 'Muuta',
+		btnUp		: 'Ylös',
+		btnDown		: 'Alas',
+		btnSetValue : 'Aseta valituksi',
+		btnDelete	: 'Poista'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Tekstilaatikon ominaisuudet',
+		cols		: 'Sarakkeita',
+		rows		: 'Rivejä'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Tekstikentän ominaisuudet',
+		name		: 'Nimi',
+		value		: 'Arvo',
+		charWidth	: 'Leveys',
+		maxChars	: 'Maksimi merkkimäärä',
+		type		: 'Tyyppi',
+		typeText	: 'Teksti',
+		typePass	: 'Salasana'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Piilokentän ominaisuudet',
+		name	: 'Nimi',
+		value	: 'Arvo'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Kuvan ominaisuudet',
+		titleButton	: 'Kuvapainikkeen ominaisuudet',
+		menu		: 'Kuvan ominaisuudet',
+		infoTab	: 'Kuvan tiedot',
+		btnUpload	: 'Lähetä palvelimelle',
+		url		: 'Osoite',
+		upload	: 'Lisää kuva',
+		alt		: 'Vaihtoehtoinen teksti',
+		width		: 'Leveys',
+		height	: 'Korkeus',
+		lockRatio	: 'Lukitse suhteet',
+		resetSize	: 'Alkuperäinen koko',
+		border	: 'Raja',
+		hSpace	: 'Vaakatila',
+		vSpace	: 'Pystytila',
+		align		: 'Kohdistus',
+		alignLeft	: 'Vasemmalle',
+		alignAbsBottom: 'Aivan alas',
+		alignAbsMiddle: 'Aivan keskelle',
+		alignBaseline	: 'Alas (teksti)',
+		alignBottom	: 'Alas',
+		alignMiddle	: 'Keskelle',
+		alignRight	: 'Oikealle',
+		alignTextTop	: 'Ylös (teksti)',
+		alignTop	: 'Ylös',
+		preview	: 'Esikatselu',
+		alertUrl	: 'Kirjoita kuvan osoite (URL)',
+		linkTab	: 'Linkki',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash ominaisuudet',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flash ominaisuudet',
+		chkPlay		: 'Automaattinen käynnistys',
+		chkLoop		: 'Toisto',
+		chkMenu		: 'Näytä Flash-valikko',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Levitä',
+		scaleAll		: 'Näytä kaikki',
+		scaleNoBorder	: 'Ei rajaa',
+		scaleFit		: 'Tarkka koko',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Kohdistus',
+		alignLeft	: 'Vasemmalle',
+		alignAbsBottom: 'Aivan alas',
+		alignAbsMiddle: 'Aivan keskelle',
+		alignBaseline	: 'Alas (teksti)',
+		alignBottom	: 'Alas',
+		alignMiddle	: 'Keskelle',
+		alignRight	: 'Oikealle',
+		alignTextTop	: 'Ylös (teksti)',
+		alignTop	: 'Ylös',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Taustaväri',
+		width	: 'Leveys',
+		height	: 'Korkeus',
+		hSpace	: 'Vaakatila',
+		vSpace	: 'Pystytila',
+		validateSrc : 'Linkille on kirjoitettava URL',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Tarkista oikeinkirjoitus',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Ei sanakirjassa',
+		changeTo		: 'Vaihda',
+		btnIgnore		: 'Jätä huomioimatta',
+		btnIgnoreAll	: 'Jätä kaikki huomioimatta',
+		btnReplace		: 'Korvaa',
+		btnReplaceAll	: 'Korvaa kaikki',
+		btnUndo			: 'Kumoa',
+		noSuggestions	: 'Ei ehdotuksia',
+		progress		: 'Tarkistus käynnissä...',
+		noMispell		: 'Tarkistus valmis: Ei virheitä',
+		noChanges		: 'Tarkistus valmis: Yhtään sanaa ei muutettu',
+		oneChange		: 'Tarkistus valmis: Yksi sana muutettiin',
+		manyChanges		: 'Tarkistus valmis: %1 sanaa muutettiin',
+		ieSpellDownload	: 'Oikeinkirjoituksen tarkistusta ei ole asennettu. Haluatko ladata sen nyt?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Hymiö',
+		title	: 'Lisää hymiö'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Numerointi',
+	bulletedlist : 'Luottelomerkit',
+	indent : 'Suurenna sisennystä',
+	outdent : 'Pienennä sisennystä',
+
+	justify :
+	{
+		left : 'Tasaa vasemmat reunat',
+		center : 'Keskitä',
+		right : 'Tasaa oikeat reunat',
+		block : 'Tasaa molemmat reunat'
+	},
+
+	blockquote : 'Lainaus',
+
+	clipboard :
+	{
+		title		: 'Liitä',
+		cutError	: 'Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).',
+		copyError	: 'Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).',
+		pasteMsg	: 'Liitä painamalla (<STRONG>Ctrl+V</STRONG>) ja painamalla <STRONG>OK</STRONG>.',
+		securityMsg	: 'Selaimesi turva-asetukset eivät salli editorin käyttää leikepöytää suoraan. Sinun pitää suorittaa liittäminen tässä ikkunassa.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Liitä Wordista',
+		title : 'Liitä Wordista',
+		advice : 'Liitä painamalla (<STRONG>Ctrl+V</STRONG>) ja painamalla <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Jätä huomioimatta fonttimääritykset',
+		removeStyle : 'Poista tyylimääritykset'
+	},
+
+	pasteText :
+	{
+		button : 'Liitä tekstinä',
+		title : 'Liitä tekstinä'
+	},
+
+	templates :
+	{
+		button : 'Pohjat',
+		title : 'Sisältöpohjat',
+		insertOption: 'Korvaa editorin koko sisältö',
+		selectPromptMsg: 'Valitse pohja editoriin<br>(aiempi sisältö menetetään):',
+		emptyListMsg : '(Ei määriteltyjä pohjia)'
+	},
+
+	showBlocks : 'Näytä elementit',
+
+	stylesCombo :
+	{
+		label : 'Tyyli',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Muotoilu',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Muotoilu',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normaali',
+		tag_pre : 'Muotoiltu',
+		tag_address : 'Osoite',
+		tag_h1 : 'Otsikko 1',
+		tag_h2 : 'Otsikko 2',
+		tag_h3 : 'Otsikko 3',
+		tag_h4 : 'Otsikko 4',
+		tag_h5 : 'Otsikko 5',
+		tag_h6 : 'Otsikko 6',
+		tag_div : 'Normal (DIV)' // MISSING
+	},
+
+	font :
+	{
+		label : 'Fontti',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Fontti',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Koko',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Koko',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Tekstiväri',
+		bgColorTitle : 'Taustaväri',
+		auto : 'Automaattinen',
+		more : 'Lisää värejä...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/hi.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/hi.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/hi.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Hindi language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['hi'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'सोर्स',
+	newPage			: 'नया पेज',
+	save			: 'सेव',
+	preview			: 'प्रीव्यू',
+	cut				: 'कट',
+	copy			: 'कॉपी',
+	paste			: 'पेस्ट',
+	print			: 'प्रिन्ट',
+	underline		: 'रेखांकण',
+	bold			: 'बोल्ड',
+	italic			: 'इटैलिक',
+	selectAll		: 'सब सॅलॅक्ट करें',
+	removeFormat	: 'फ़ॉर्मैट हटायें',
+	strike			: 'स्ट्राइक थ्रू',
+	subscript		: 'अधोलेख',
+	superscript		: 'अभिलेख',
+	horizontalrule	: 'हॉरिज़ॉन्टल रेखा इन्सर्ट करें',
+	pagebreak		: 'पेज ब्रेक इन्सर्ट् करें',
+	unlink			: 'लिंक हटायें',
+	undo			: 'अन्डू',
+	redo			: 'रीडू',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'सर्वर ब्राउज़ करें',
+		url				: 'URL',
+		protocol		: 'प्रोटोकॉल',
+		upload			: 'अपलोड',
+		uploadSubmit	: 'इसे सर्वर को भेजें',
+		image			: 'तस्वीर',
+		flash			: 'फ़्लैश',
+		form			: 'फ़ॉर्म',
+		checkbox		: 'चॅक बॉक्स',
+		radio		: 'रेडिओ बटन',
+		textField		: 'टेक्स्ट फ़ील्ड',
+		textarea		: 'टेक्स्ट एरिया',
+		hiddenField		: 'गुप्त फ़ील्ड',
+		button			: 'बटन',
+		select	: 'चुनाव फ़ील्ड',
+		imageButton		: 'तस्वीर बटन',
+		notSet			: '<सॅट नहीं>',
+		id				: 'Id',
+		name			: 'नाम',
+		langDir			: 'भाषा लिखने की दिशा',
+		langDirLtr		: 'बायें से दायें (LTR)',
+		langDirRtl		: 'दायें से बायें (RTL)',
+		langCode		: 'भाषा कोड',
+		longDescr		: 'अधिक विवरण के लिए URL',
+		cssClass		: 'स्टाइल-शीट क्लास',
+		advisoryTitle	: 'परामर्श शीर्शक',
+		cssStyle		: 'स्टाइल',
+		ok				: 'ठीक है',
+		cancel			: 'रद्द करें',
+		generalTab		: 'सामान्य',
+		advancedTab		: 'ऍड्वान्स्ड',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'विशेष करॅक्टर इन्सर्ट करें',
+		title		: 'विशेष करॅक्टर चुनें'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'लिंक इन्सर्ट/संपादन',
+		menu		: 'लिंक संपादन',
+		title		: 'लिंक',
+		info		: 'लिंक  ',
+		target		: 'टार्गेट',
+		upload		: 'अपलोड',
+		advanced	: 'ऍड्वान्स्ड',
+		type		: 'लिंक प्रकार',
+		toAnchor	: 'इस पेज का ऐंकर',
+		toEmail		: 'ई-मेल',
+		target		: 'टार्गेट',
+		targetNotSet	: '<सॅट नहीं>',
+		targetFrame	: '<फ़्रेम>',
+		targetPopup	: '<पॉप-अप विन्डो>',
+		targetNew	: 'नया विन्डो (_blank)',
+		targetTop	: 'शीर्ष विन्डो (_top)',
+		targetSelf	: 'इसी विन्डो (_self)',
+		targetParent	: 'मूल विन्डो (_parent)',
+		targetFrameName	: 'टार्गेट फ़्रेम का नाम',
+		targetPopupName	: 'पॉप-अप विन्डो का नाम',
+		popupFeatures	: 'पॉप-अप विन्डो फ़ीचर्स',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'स्टेटस बार',
+		popupLocationBar	: 'लोकेशन बार',
+		popupToolbar	: 'टूल बार',
+		popupMenuBar	: 'मॅन्यू बार',
+		popupFullScreen	: 'फ़ुल स्क्रीन (IE)',
+		popupScrollBars	: 'स्क्रॉल बार',
+		popupDependent	: 'डिपेन्डॅन्ट (Netscape)',
+		popupWidth		: 'चौड़ाई',
+		popupLeft		: 'बायीं तरफ',
+		popupHeight		: 'ऊँचाई',
+		popupTop		: 'दायीं तरफ',
+		id				: 'Id', // MISSING
+		langDir			: 'भाषा लिखने की दिशा',
+		langDirNotSet	: '<सॅट नहीं>',
+		langDirLTR		: 'बायें से दायें (LTR)',
+		langDirRTL		: 'दायें से बायें (RTL)',
+		acccessKey		: 'ऍक्सॅस की',
+		name			: 'नाम',
+		langCode		: 'भाषा लिखने की दिशा',
+		tabIndex		: 'टैब इन्डॅक्स',
+		advisoryTitle	: 'परामर्श शीर्शक',
+		advisoryContentType	: 'परामर्श कन्टॅन्ट प्रकार',
+		cssClasses		: 'स्टाइल-शीट क्लास',
+		charset			: 'लिंक रिसोर्स करॅक्टर सॅट',
+		styles			: 'स्टाइल',
+		selectAnchor	: 'ऐंकर चुनें',
+		anchorName		: 'ऐंकर नाम से',
+		anchorId		: 'ऍलीमॅन्ट Id से',
+		emailAddress	: 'ई-मेल पता',
+		emailSubject	: 'संदेश विषय',
+		emailBody		: 'संदेश',
+		noAnchors		: '(डॉक्यूमॅन्ट में ऐंकर्स की संख्या)',
+		noUrl			: 'लिंक URL टाइप करें',
+		noEmail			: 'ई-मेल पता टाइप करें'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'ऐंकर इन्सर्ट/संपादन',
+		menu		: 'ऐंकर प्रॉपर्टीज़',
+		title		: 'ऐंकर प्रॉपर्टीज़',
+		name		: 'ऐंकर का नाम',
+		errorName	: 'ऐंकर का नाम टाइप करें'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'खोजें और बदलें',
+		find				: 'खोजें',
+		replace				: 'रीप्लेस',
+		findWhat			: 'यह खोजें:',
+		replaceWith			: 'इससे रिप्लेस करें:',
+		notFoundMsg			: 'आपके द्वारा दिया गया टेक्स्ट नहीं मिला',
+		matchCase			: 'केस मिलायें',
+		matchWord			: 'पूरा शब्द मिलायें',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'सभी रिप्लेस करें',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'टेबल',
+		title		: 'टेबल प्रॉपर्टीज़',
+		menu		: 'टेबल प्रॉपर्टीज़',
+		deleteTable	: 'टेबल डिलीट करें',
+		rows		: 'पंक्तियाँ',
+		columns		: 'कालम',
+		border		: 'बॉर्डर साइज़',
+		align		: 'ऍलाइन्मॅन्ट',
+		alignNotSet	: '<सॅट नहीं>',
+		alignLeft	: 'दायें',
+		alignCenter	: 'बीच में',
+		alignRight	: 'बायें',
+		width		: 'चौड़ाई',
+		widthPx		: 'पिक्सैल',
+		widthPc		: 'प्रतिशत',
+		height		: 'ऊँचाई',
+		cellSpace	: 'सैल अंतर',
+		cellPad		: 'सैल पैडिंग',
+		caption		: 'शीर्षक',
+		summary		: 'सारांश',
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'खाना',
+			insertBefore	: 'पहले सैल डालें',
+			insertAfter		: 'बाद में सैल डालें',
+			deleteCell		: 'सैल डिलीट करें',
+			merge			: 'सैल मिलायें',
+			mergeRight		: 'बाँया विलय',
+			mergeDown		: 'नीचे विलय करें',
+			splitHorizontal	: 'सैल को क्षैतिज स्थिति में विभाजित करें',
+			splitVertical	: 'सैल को लम्बाकार में विभाजित करें',
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'पंक्ति',
+			insertBefore	: 'पहले पंक्ति डालें',
+			insertAfter		: 'बाद में पंक्ति डालें',
+			deleteRow		: 'पंक्तियाँ डिलीट करें'
+		},
+
+		column :
+		{
+			menu			: 'कालम',
+			insertBefore	: 'पहले कालम डालें',
+			insertAfter		: 'बाद में कालम डालें',
+			deleteColumn	: 'कालम डिलीट करें'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'बटन प्रॉपर्टीज़',
+		text		: 'टेक्स्ट (वैल्यू)',
+		type		: 'प्रकार',
+		typeBtn		: 'बटन',
+		typeSbm		: 'सब्मिट',
+		typeRst		: 'रिसेट'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'चॅक बॉक्स प्रॉपर्टीज़',
+		radioTitle	: 'रेडिओ बटन प्रॉपर्टीज़',
+		value		: 'वैल्यू',
+		selected	: 'सॅलॅक्टॅड'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'फ़ॉर्म प्रॉपर्टीज़',
+		menu		: 'फ़ॉर्म प्रॉपर्टीज़',
+		action		: 'क्रिया',
+		method		: 'तरीका',
+		encoding	: 'Encoding', // MISSING
+		target		: 'टार्गेट',
+		targetNotSet	: '<सॅट नहीं>',
+		targetNew	: 'नया विन्डो (_blank)',
+		targetTop	: 'शीर्ष विन्डो (_top)',
+		targetSelf	: 'इसी विन्डो (_self)',
+		targetParent	: 'मूल विन्डो (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'चुनाव फ़ील्ड प्रॉपर्टीज़',
+		selectInfo	: 'सूचना',
+		opAvail		: 'उपलब्ध विकल्प',
+		value		: 'वैल्यू',
+		size		: 'साइज़',
+		lines		: 'पंक्तियाँ',
+		chkMulti	: 'एक से ज्यादा विकल्प चुनने दें',
+		opText		: 'टेक्स्ट',
+		opValue		: 'वैल्यू',
+		btnAdd		: 'जोड़ें',
+		btnModify	: 'बदलें',
+		btnUp		: 'ऊपर',
+		btnDown		: 'नीचे',
+		btnSetValue : 'चुनी गई वैल्यू सॅट करें',
+		btnDelete	: 'डिलीट'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'टेक्स्त एरिया प्रॉपर्टीज़',
+		cols		: 'कालम',
+		rows		: 'पंक्तियां'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'टेक्स्ट फ़ील्ड प्रॉपर्टीज़',
+		name		: 'नाम',
+		value		: 'वैल्यू',
+		charWidth	: 'करॅक्टर की चौढ़ाई',
+		maxChars	: 'अधिकतम करॅक्टर',
+		type		: 'टाइप',
+		typeText	: 'टेक्स्ट',
+		typePass	: 'पास्वर्ड'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'गुप्त फ़ील्ड प्रॉपर्टीज़',
+		name	: 'नाम',
+		value	: 'वैल्यू'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'तस्वीर प्रॉपर्टीज़',
+		titleButton	: 'तस्वीर बटन प्रॉपर्टीज़',
+		menu		: 'तस्वीर प्रॉपर्टीज़',
+		infoTab	: 'तस्वीर की जानकारी',
+		btnUpload	: 'इसे सर्वर को भेजें',
+		url		: 'URL',
+		upload	: 'अपलोड',
+		alt		: 'वैकल्पिक टेक्स्ट',
+		width		: 'चौड़ाई',
+		height	: 'ऊँचाई',
+		lockRatio	: 'लॉक अनुपात',
+		resetSize	: 'रीसॅट साइज़',
+		border	: 'बॉर्डर',
+		hSpace	: 'हॉरिज़ॉन्टल स्पेस',
+		vSpace	: 'वर्टिकल स्पेस',
+		align		: 'ऍलाइन',
+		alignLeft	: 'दायें',
+		alignAbsBottom: 'Abs नीचे',
+		alignAbsMiddle: 'Abs ऊपर',
+		alignBaseline	: 'मूल रेखा',
+		alignBottom	: 'नीचे',
+		alignMiddle	: 'मध्य',
+		alignRight	: 'दायें',
+		alignTextTop	: 'टेक्स्ट ऊपर',
+		alignTop	: 'ऊपर',
+		preview	: 'प्रीव्यू',
+		alertUrl	: 'तस्वीर का URL टाइप करें ',
+		linkTab	: 'लिंक',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'फ़्लैश प्रॉपर्टीज़',
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'फ़्लैश प्रॉपर्टीज़',
+		chkPlay		: 'ऑटो प्ले',
+		chkLoop		: 'लूप',
+		chkMenu		: 'फ़्लैश मॅन्यू का प्रयोग करें',
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'स्केल',
+		scaleAll		: 'सभी दिखायें',
+		scaleNoBorder	: 'कोई बॉर्डर नहीं',
+		scaleFit		: 'बिल्कुल फ़िट',
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'ऍलाइन',
+		alignLeft	: 'दायें',
+		alignAbsBottom: 'Abs नीचे',
+		alignAbsMiddle: 'Abs ऊपर',
+		alignBaseline	: 'मूल रेखा',
+		alignBottom	: 'नीचे',
+		alignMiddle	: 'मध्य',
+		alignRight	: 'दायें',
+		alignTextTop	: 'टेक्स्ट ऊपर',
+		alignTop	: 'ऊपर',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'बैक्ग्राउन्ड रंग',
+		width	: 'चौड़ाई',
+		height	: 'ऊँचाई',
+		hSpace	: 'हॉरिज़ॉन्टल स्पेस',
+		vSpace	: 'वर्टिकल स्पेस',
+		validateSrc : 'लिंक URL टाइप करें',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'वर्तनी (स्पेलिंग) जाँच',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'शब्दकोश में नहीं',
+		changeTo		: 'इसमें बदलें',
+		btnIgnore		: 'इग्नोर',
+		btnIgnoreAll	: 'सभी इग्नोर करें',
+		btnReplace		: 'रिप्लेस',
+		btnReplaceAll	: 'सभी रिप्लेस करें',
+		btnUndo			: 'अन्डू',
+		noSuggestions	: '- कोई सुझाव नहीं -',
+		progress		: 'वर्तनी की जाँच (स्पॅल-चॅक) जारी है...',
+		noMispell		: 'वर्तनी की जाँच : कोई गलत वर्तनी (स्पॅलिंग) नहीं पाई गई',
+		noChanges		: 'वर्तनी की जाँच :कोई शब्द नहीं बदला गया',
+		oneChange		: 'वर्तनी की जाँच : एक शब्द बदला गया',
+		manyChanges		: 'वर्तनी की जाँच : %1 शब्द बदले गये',
+		ieSpellDownload	: 'स्पॅल-चॅकर इन्स्टाल नहीं किया गया है। क्या आप इसे डाउनलोड करना चाहेंगे?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'स्माइली',
+		title	: 'स्माइली इन्सर्ट करें'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'अंकीय सूची',
+	bulletedlist : 'बुलॅट सूची',
+	indent : 'इन्डॅन्ट बढ़ायें',
+	outdent : 'इन्डॅन्ट कम करें',
+
+	justify :
+	{
+		left : 'बायीं तरफ',
+		center : 'बीच में',
+		right : 'दायीं तरफ',
+		block : 'ब्लॉक जस्टीफ़ाई'
+	},
+
+	blockquote : 'ब्लॉक-कोट',
+
+	clipboard :
+	{
+		title		: 'पेस्ट',
+		cutError	: 'आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl+X) का प्रयोग करें।',
+		copyError	: 'आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl+C) का प्रयोग करें।',
+		pasteMsg	: 'Ctrl+V का प्रयोग करके पेस्ट करें और ठीक है करें.',
+		securityMsg	: 'आपके ब्राउज़र की सुरक्षा आपके ब्राउज़र की सुरKश सैटिंग के कारण, एडिटर आपके क्लिपबोर्ड डेटा को नहीं पा सकता है. आपको उसे इस विन्डो में दोबारा पेस्ट करना होगा.'
+	},
+
+	pastefromword :
+	{
+		toolbar : 'पेस्ट (वर्ड से)',
+		title : 'पेस्ट (वर्ड से)',
+		advice : 'Ctrl+V का प्रयोग करके पेस्ट करें और ठीक है करें.',
+		ignoreFontFace : 'फ़ॉन्ट परिभाषा निकालें',
+		removeStyle : 'स्टाइल परिभाषा निकालें'
+	},
+
+	pasteText :
+	{
+		button : 'पेस्ट (सादा टॅक्स्ट)',
+		title : 'पेस्ट (सादा टॅक्स्ट)'
+	},
+
+	templates :
+	{
+		button : 'टॅम्प्लेट',
+		title : 'कन्टेन्ट टॅम्प्लेट',
+		insertOption: 'मूल शब्दों को बदलें',
+		selectPromptMsg: 'ऍडिटर में ओपन करने हेतु टॅम्प्लेट चुनें(वर्तमान कन्टॅन्ट सेव नहीं होंगे):',
+		emptyListMsg : '(कोई टॅम्प्लेट डिफ़ाइन नहीं किया गया है)'
+	},
+
+	showBlocks : 'ब्लॉक दिखायें',
+
+	stylesCombo :
+	{
+		label : 'स्टाइल',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'फ़ॉर्मैट',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'फ़ॉर्मैट',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'साधारण',
+		tag_pre : 'फ़ॉर्मैटॅड',
+		tag_address : 'पता',
+		tag_h1 : 'शीर्षक 1',
+		tag_h2 : 'शीर्षक 2',
+		tag_h3 : 'शीर्षक 3',
+		tag_h4 : 'शीर्षक 4',
+		tag_h5 : 'शीर्षक 5',
+		tag_h6 : 'शीर्षक 6',
+		tag_div : 'शीर्षक (DIV)'
+	},
+
+	font :
+	{
+		label : 'फ़ॉन्ट',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'फ़ॉन्ट',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'साइज़',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'साइज़',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'टेक्स्ट रंग',
+		bgColorTitle : 'बैक्ग्राउन्ड रंग',
+		auto : 'स्वचालित',
+		more : 'और रंग...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/lang/eo.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/lang/eo.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/lang/eo.js	(revision 2000)
@@ -0,0 +1,685 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
+ * Esperanto language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['eo'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle		: 'Rich text editor, %1', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Fonto',
+	newPage			: 'Nova Paĝo',
+	save			: 'Sekurigi',
+	preview			: 'Vidigi Aspekton',
+	cut				: 'Eltondi',
+	copy			: 'Kopii',
+	paste			: 'Interglui',
+	print			: 'Presi',
+	underline		: 'Substreko',
+	bold			: 'Grasa',
+	italic			: 'Kursiva',
+	selectAll		: 'Elekti ĉion',
+	removeFormat	: 'Forigi Formaton',
+	strike			: 'Trastreko',
+	subscript		: 'Subskribo',
+	superscript		: 'Superskribo',
+	horizontalrule	: 'Enmeti Horizonta Linio',
+	pagebreak		: 'Insert Page Break for Printing', // MISSING
+	unlink			: 'Forigi Ligilon',
+	undo			: 'Malfari',
+	redo			: 'Refari',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Foliumi en la Servilo',
+		url				: 'URL',
+		protocol		: 'Protokolo',
+		upload			: 'Alŝuti',
+		uploadSubmit	: 'Sendu al Servilo',
+		image			: 'Bildo',
+		flash			: 'Flash', // MISSING
+		form			: 'Formularo',
+		checkbox		: 'Markobutono',
+		radio		: 'Radiobutono',
+		textField		: 'Teksta kampo',
+		textarea		: 'Teksta Areo',
+		hiddenField		: 'Kaŝita Kampo',
+		button			: 'Butono',
+		select	: 'Elekta Kampo',
+		imageButton		: 'Bildbutono',
+		notSet			: '<Defaŭlta>',
+		id				: 'Id',
+		name			: 'Nomo',
+		langDir			: 'Skribdirekto',
+		langDirLtr		: 'De maldekstro dekstren (LTR)',
+		langDirRtl		: 'De dekstro maldekstren (RTL)',
+		langCode		: 'Lingva Kodo',
+		longDescr		: 'URL de Longa Priskribo',
+		cssClass		: 'Klasoj de Stilfolioj',
+		advisoryTitle	: 'Indika Titolo',
+		cssStyle		: 'Stilo',
+		ok				: 'Akcepti',
+		cancel			: 'Rezigni',
+		generalTab		: 'General', // MISSING
+		advancedTab		: 'Speciala',
+		validateNumberFailed	: 'This value is not a number.', // MISSING
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Enmeti Specialan Signon',
+		title		: 'Enmeti Specialan Signon'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Enmeti/Ŝanĝi Ligilon',
+		menu		: 'Modifier Ligilon',
+		title		: 'Ligilo',
+		info		: 'Informoj pri la Ligilo',
+		target		: 'Celo',
+		upload		: 'Alŝuti',
+		advanced	: 'Speciala',
+		type		: 'Tipo de Ligilo',
+		toAnchor	: 'Ankri en tiu ĉi paĝo',
+		toEmail		: 'Retpoŝto',
+		target		: 'Celo',
+		targetNotSet	: '<Defaŭlta>',
+		targetFrame	: '<kadro>',
+		targetPopup	: '<ŝprucfenestro>',
+		targetNew	: 'Nova Fenestro (_blank)',
+		targetTop	: 'Plej Supra Fenestro (_top)',
+		targetSelf	: 'Sama Fenestro (_self)',
+		targetParent	: 'Gepatra Fenestro (_parent)',
+		targetFrameName	: 'Nomo de Kadro',
+		targetPopupName	: 'Nomo de Ŝprucfenestro',
+		popupFeatures	: 'Atributoj de la Ŝprucfenestro',
+		popupResizable	: 'Resizable', // MISSING
+		popupStatusBar	: 'Statobreto',
+		popupLocationBar	: 'Adresobreto',
+		popupToolbar	: 'Ilobreto',
+		popupMenuBar	: 'Menubreto',
+		popupFullScreen	: 'Tutekrane (IE)',
+		popupScrollBars	: 'Rulumlisteloj',
+		popupDependent	: 'Dependa (Netscape)',
+		popupWidth		: 'Larĝo',
+		popupLeft		: 'Pozicio de Maldekstro',
+		popupHeight		: 'Alto',
+		popupTop		: 'Pozicio de Supro',
+		id				: 'Id', // MISSING
+		langDir			: 'Skribdirekto',
+		langDirNotSet	: '<Defaŭlta>',
+		langDirLTR		: 'De maldekstro dekstren (LTR)',
+		langDirRTL		: 'De dekstro maldekstren (RTL)',
+		acccessKey		: 'Fulmoklavo',
+		name			: 'Nomo',
+		langCode		: 'Skribdirekto',
+		tabIndex		: 'Taba Ordo',
+		advisoryTitle	: 'Indika Titolo',
+		advisoryContentType	: 'Indika Enhavotipo',
+		cssClasses		: 'Klasoj de Stilfolioj',
+		charset			: 'Signaro de la Ligita Rimedo',
+		styles			: 'Stilo',
+		selectAnchor	: 'Elekti Ankron',
+		anchorName		: 'Per Ankronomo',
+		anchorId		: 'Per Elementidentigilo',
+		emailAddress	: 'Retadreso',
+		emailSubject	: 'Temlinio',
+		emailBody		: 'Mesaĝa korpo',
+		noAnchors		: '<Ne disponeblas ankroj en la dokumento>',
+		noUrl			: 'Bonvolu entajpi la URL-on',
+		noEmail			: 'Bonvolu entajpi la retadreson'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Enmeti/Ŝanĝi Ankron',
+		menu		: 'Ankraj Atributoj',
+		title		: 'Ankraj Atributoj',
+		name		: 'Ankra Nomo',
+		errorName	: 'Bv tajpi la ankran nomon'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace', // MISSING
+		find				: 'Serĉi',
+		replace				: 'Anstataŭigi',
+		findWhat			: 'Serĉi:',
+		replaceWith			: 'Anstataŭigi per:',
+		notFoundMsg			: 'La celteksto ne estas trovita.',
+		matchCase			: 'Kongruigi Usklecon',
+		matchWord			: 'Tuta Vorto',
+		matchCyclic			: 'Match cyclic', // MISSING
+		replaceAll			: 'Anstataŭigi Ĉiun',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabelo',
+		title		: 'Atributoj de Tabelo',
+		menu		: 'Atributoj de Tabelo',
+		deleteTable	: 'Delete Table', // MISSING
+		rows		: 'Linioj',
+		columns		: 'Kolumnoj',
+		border		: 'Bordero',
+		align		: 'Ĝisrandigo',
+		alignNotSet	: '<Defaŭlte>',
+		alignLeft	: 'Maldekstre',
+		alignCenter	: 'Centre',
+		alignRight	: 'Dekstre',
+		width		: 'Larĝo',
+		widthPx		: 'Bitbilderoj',
+		widthPc		: 'elcentoj',
+		height		: 'Alto',
+		cellSpace	: 'Interspacigo de Ĉeloj',
+		cellPad		: 'Ĉirkaŭenhava Plenigado',
+		caption		: 'Titolo',
+		summary		: 'Summary', // MISSING
+		headers		: 'Headers', // MISSING
+		headersNone		: 'None', // MISSING
+		headersColumn	: 'First column', // MISSING
+		headersRow		: 'First Row', // MISSING
+		headersBoth		: 'Both', // MISSING
+		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
+		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
+		invalidBorder	: 'Border size must be a number.', // MISSING
+		invalidWidth	: 'Table width must be a number.', // MISSING
+		invalidHeight	: 'Table height must be a number.', // MISSING
+		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
+		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+
+		cell :
+		{
+			menu			: 'Cell', // MISSING
+			insertBefore	: 'Insert Cell Before', // MISSING
+			insertAfter		: 'Insert Cell After', // MISSING
+			deleteCell		: 'Forigi Ĉelojn',
+			merge			: 'Kunfandi Ĉelojn',
+			mergeRight		: 'Merge Right', // MISSING
+			mergeDown		: 'Merge Down', // MISSING
+			splitHorizontal	: 'Split Cell Horizontally', // MISSING
+			splitVertical	: 'Split Cell Vertically', // MISSING
+			title			: 'Cell Properties', // MISSING
+			cellType		: 'Cell Type', // MISSING
+			rowSpan			: 'Rows Span', // MISSING
+			colSpan			: 'Columns Span', // MISSING
+			wordWrap		: 'Word Wrap', // MISSING
+			hAlign			: 'Horizontal Alignment', // MISSING
+			vAlign			: 'Vertical Alignment', // MISSING
+			alignTop		: 'Top', // MISSING
+			alignMiddle		: 'Middle', // MISSING
+			alignBottom		: 'Bottom', // MISSING
+			alignBaseline	: 'Baseline', // MISSING
+			bgColor			: 'Background Color', // MISSING
+			borderColor		: 'Border Color', // MISSING
+			data			: 'Data', // MISSING
+			header			: 'Header', // MISSING
+			yes				: 'Yes', // MISSING
+			no				: 'No', // MISSING
+			invalidWidth	: 'Cell width must be a number.', // MISSING
+			invalidHeight	: 'Cell height must be a number.', // MISSING
+			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
+			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
+			chooseColor : 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Row', // MISSING
+			insertBefore	: 'Insert Row Before', // MISSING
+			insertAfter		: 'Insert Row After', // MISSING
+			deleteRow		: 'Forigi Liniojn'
+		},
+
+		column :
+		{
+			menu			: 'Column', // MISSING
+			insertBefore	: 'Insert Column Before', // MISSING
+			insertAfter		: 'Insert Column After', // MISSING
+			deleteColumn	: 'Forigi Kolumnojn'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Butonaj Atributoj',
+		text		: 'Teksto (Valoro)',
+		type		: 'Tipo',
+		typeBtn		: 'Button', // MISSING
+		typeSbm		: 'Submit', // MISSING
+		typeRst		: 'Reset' // MISSING
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Markobutonaj Atributoj',
+		radioTitle	: 'Radiobutonaj Atributoj',
+		value		: 'Valoro',
+		selected	: 'Elektita'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Formularaj Atributoj',
+		menu		: 'Formularaj Atributoj',
+		action		: 'Ago',
+		method		: 'Metodo',
+		encoding	: 'Encoding', // MISSING
+		target		: 'Celo',
+		targetNotSet	: '<Defaŭlta>',
+		targetNew	: 'Nova Fenestro (_blank)',
+		targetTop	: 'Plej Supra Fenestro (_top)',
+		targetSelf	: 'Sama Fenestro (_self)',
+		targetParent	: 'Gepatra Fenestro (_parent)'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Atributoj de Elekta Kampo',
+		selectInfo	: 'Select Info', // MISSING
+		opAvail		: 'Elektoj Disponeblaj',
+		value		: 'Valoro',
+		size		: 'Grando',
+		lines		: 'Linioj',
+		chkMulti	: 'Permesi Plurajn Elektojn',
+		opText		: 'Teksto',
+		opValue		: 'Valoro',
+		btnAdd		: 'Aldoni',
+		btnModify	: 'Modifi',
+		btnUp		: 'Supren',
+		btnDown		: 'Malsupren',
+		btnSetValue : 'Agordi kiel Elektitan Valoron',
+		btnDelete	: 'Forigi'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Atributoj de Teksta Areo',
+		cols		: 'Kolumnoj',
+		rows		: 'Vicoj'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Atributoj de Teksta Kampo',
+		name		: 'Nomo',
+		value		: 'Valoro',
+		charWidth	: 'Signolarĝo',
+		maxChars	: 'Maksimuma Nombro da Signoj',
+		type		: 'Tipo',
+		typeText	: 'Teksto',
+		typePass	: 'Pasvorto'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Atributoj de Kaŝita Kampo',
+		name	: 'Nomo',
+		value	: 'Valoro'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Atributoj de Bildo',
+		titleButton	: 'Bildbutonaj Atributoj',
+		menu		: 'Atributoj de Bildo',
+		infoTab	: 'Informoj pri Bildo',
+		btnUpload	: 'Sendu al Servilo',
+		url		: 'URL',
+		upload	: 'Alŝuti',
+		alt		: 'Anstataŭiga Teksto',
+		width		: 'Larĝo',
+		height	: 'Alto',
+		lockRatio	: 'Konservi Proporcion',
+		resetSize	: 'Origina Grando',
+		border	: 'Bordero',
+		hSpace	: 'HSpaco',
+		vSpace	: 'VSpaco',
+		align		: 'Ĝisrandigo',
+		alignLeft	: 'Maldekstre',
+		alignAbsBottom: 'Abs Malsupre',
+		alignAbsMiddle: 'Abs Centre',
+		alignBaseline	: 'Je Malsupro de Teksto',
+		alignBottom	: 'Malsupre',
+		alignMiddle	: 'Centre',
+		alignRight	: 'Dekstre',
+		alignTextTop	: 'Je Supro de Teksto',
+		alignTop	: 'Supre',
+		preview	: 'Vidigi Aspekton',
+		alertUrl	: 'Bonvolu tajpi la URL de la bildo',
+		linkTab	: 'Link', // MISSING
+		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
+		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
+		urlMissing : 'Image source URL is missing.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash Properties', // MISSING
+		propertiesTab	: 'Properties', // MISSING
+		title		: 'Flash Properties', // MISSING
+		chkPlay		: 'Auto Play', // MISSING
+		chkLoop		: 'Loop', // MISSING
+		chkMenu		: 'Enable Flash Menu', // MISSING
+		chkFull		: 'Allow Fullscreen', // MISSING
+ 		scale		: 'Scale', // MISSING
+		scaleAll		: 'Show all', // MISSING
+		scaleNoBorder	: 'No Border', // MISSING
+		scaleFit		: 'Exact Fit', // MISSING
+		access			: 'Script Access', // MISSING
+		accessAlways	: 'Always', // MISSING
+		accessSameDomain	: 'Same domain', // MISSING
+		accessNever	: 'Never', // MISSING
+		align		: 'Ĝisrandigo',
+		alignLeft	: 'Maldekstre',
+		alignAbsBottom: 'Abs Malsupre',
+		alignAbsMiddle: 'Abs Centre',
+		alignBaseline	: 'Je Malsupro de Teksto',
+		alignBottom	: 'Malsupre',
+		alignMiddle	: 'Centre',
+		alignRight	: 'Dekstre',
+		alignTextTop	: 'Je Supro de Teksto',
+		alignTop	: 'Supre',
+		quality		: 'Quality', // MISSING
+		qualityBest		 : 'Best', // MISSING
+		qualityHigh		 : 'High', // MISSING
+		qualityAutoHigh	 : 'Auto High', // MISSING
+		qualityMedium	 : 'Medium', // MISSING
+		qualityAutoLow	 : 'Auto Low', // MISSING
+		qualityLow		 : 'Low', // MISSING
+		windowModeWindow	 : 'Window', // MISSING
+		windowModeOpaque	 : 'Opaque', // MISSING
+		windowModeTransparent	 : 'Transparent', // MISSING
+		windowMode	: 'Window mode', // MISSING
+		flashvars	: 'Variables for Flash', // MISSING
+		bgcolor	: 'Fona Koloro',
+		width	: 'Larĝo',
+		height	: 'Alto',
+		hSpace	: 'HSpaco',
+		vSpace	: 'VSpaco',
+		validateSrc : 'Bonvolu entajpi la URL-on',
+		validateWidth : 'Width must be a number.', // MISSING
+		validateHeight : 'Height must be a number.', // MISSING
+		validateHSpace : 'HSpace must be a number.', // MISSING
+		validateVSpace : 'VSpace must be a number.' // MISSING
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Literumada Kontrolilo',
+		title			: 'Spell Check', // MISSING
+		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
+		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		notInDic		: 'Ne trovita en la vortaro',
+		changeTo		: 'Ŝanĝi al',
+		btnIgnore		: 'Malatenti',
+		btnIgnoreAll	: 'Malatenti Ĉiun',
+		btnReplace		: 'Anstataŭigi',
+		btnReplaceAll	: 'Anstataŭigi Ĉiun',
+		btnUndo			: 'Malfari',
+		noSuggestions	: '- Neniu propono -',
+		progress		: 'Literumkontrolado daŭras...',
+		noMispell		: 'Literumkontrolado finita: neniu fuŝo trovita',
+		noChanges		: 'Literumkontrolado finita: neniu vorto ŝanĝita',
+		oneChange		: 'Literumkontrolado finita: unu vorto ŝanĝita',
+		manyChanges		: 'Literumkontrolado finita: %1 vortoj ŝanĝitaj',
+		ieSpellDownload	: 'Literumada Kontrolilo ne instalita. Ĉu vi volas elŝuti ĝin nun?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Mienvinjeto',
+		title	: 'Enmeti Mienvinjeton'
+	},
+
+	elementsPath :
+	{
+		eleTitle : '%1 element' // MISSING
+	},
+
+	numberedlist : 'Numera Listo',
+	bulletedlist : 'Bula Listo',
+	indent : 'Pligrandigi Krommarĝenon',
+	outdent : 'Malpligrandigi Krommarĝenon',
+
+	justify :
+	{
+		left : 'Maldekstrigi',
+		center : 'Centrigi',
+		right : 'Dekstrigi',
+		block : 'Ĝisrandigi Ambaŭflanke'
+	},
+
+	blockquote : 'Blockquote', // MISSING
+
+	clipboard :
+	{
+		title		: 'Interglui',
+		cutError	: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-X).',
+		copyError	: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK', // MISSING
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+	},
+
+	pastefromword :
+	{
+		toolbar : 'Interglui el Word',
+		title : 'Interglui el Word',
+		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.', // MISSING
+		ignoreFontFace : 'Ignore Font Face definitions', // MISSING
+		removeStyle : 'Remove Styles definitions' // MISSING
+	},
+
+	pasteText :
+	{
+		button : 'Interglui kiel Tekston',
+		title : 'Interglui kiel Tekston'
+	},
+
+	templates :
+	{
+		button : 'Templates', // MISSING
+		title : 'Content Templates', // MISSING
+		insertOption: 'Replace actual contents', // MISSING
+		selectPromptMsg: 'Please select the template to open in the editor', // MISSING
+		emptyListMsg : '(No templates defined)' // MISSING
+	},
+
+	showBlocks : 'Show Blocks', // MISSING
+
+	stylesCombo :
+	{
+		label : 'Stilo',
+		voiceLabel : 'Styles', // MISSING
+		panelVoiceLabel : 'Select a style', // MISSING
+		panelTitle1 : 'Block Styles', // MISSING
+		panelTitle2 : 'Inline Styles', // MISSING
+		panelTitle3 : 'Object Styles' // MISSING
+	},
+
+	format :
+	{
+		label : 'Formato',
+		voiceLabel : 'Format', // MISSING
+		panelTitle : 'Formato',
+		panelVoiceLabel : 'Select a paragraph format', // MISSING
+
+		tag_p : 'Normala',
+		tag_pre : 'Formatita',
+		tag_address : 'Adreso',
+		tag_h1 : 'Titolo 1',
+		tag_h2 : 'Titolo 2',
+		tag_h3 : 'Titolo 3',
+		tag_h4 : 'Titolo 4',
+		tag_h5 : 'Titolo 5',
+		tag_h6 : 'Titolo 6',
+		tag_div : 'Paragrafo (DIV)'
+	},
+
+	font :
+	{
+		label : 'Tiparo',
+		voiceLabel : 'Font', // MISSING
+		panelTitle : 'Tiparo',
+		panelVoiceLabel : 'Select a font' // MISSING
+	},
+
+	fontSize :
+	{
+		label : 'Grando',
+		voiceLabel : 'Font Size', // MISSING
+		panelTitle : 'Grando',
+		panelVoiceLabel : 'Select a font size' // MISSING
+	},
+
+	colorButton :
+	{
+		textColorTitle : 'Teksta Koloro',
+		bgColorTitle : 'Fona Koloro',
+		auto : 'Aŭtomata',
+		more : 'Pli da Koloroj...'
+	},
+
+	colors :
+	{
+		'000' : 'Black',
+		'800000' : 'Maroon',
+		'8B4513' : 'Saddle Brown',
+		'2F4F4F' : 'Dark Slate Gray',
+		'008080' : 'Teal',
+		'000080' : 'Navy',
+		'4B0082' : 'Indigo',
+		'696969' : 'Dim Gray',
+		'B22222' : 'Fire Brick',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Golden Rod',
+		'006400' : 'Dark Green',
+		'40E0D0' : 'Turquoise',
+		'0000CD' : 'Medium Blue',
+		'800080' : 'Purple',
+		'808080' : 'Gray',
+		'F00' : 'Red',
+		'FF8C00' : 'Dark Orange',
+		'FFD700' : 'Gold',
+		'008000' : 'Green',
+		'0FF' : 'Cyan',
+		'00F' : 'Blue',
+		'EE82EE' : 'Violet',
+		'A9A9A9' : 'Dark Gray',
+		'FFA07A' : 'Light Salmon',
+		'FFA500' : 'Orange',
+		'FFFF00' : 'Yellow',
+		'00FF00' : 'Lime',
+		'AFEEEE' : 'Pale Turquoise',
+		'ADD8E6' : 'Light Blue',
+		'DDA0DD' : 'Plum',
+		'D3D3D3' : 'Light Grey',
+		'FFF0F5' : 'Lavender Blush',
+		'FAEBD7' : 'Antique White',
+		'FFFFE0' : 'Light Yellow',
+		'F0FFF0' : 'Honeydew',
+		'F0FFFF' : 'Azure',
+		'F0F8FF' : 'Alice Blue',
+		'E6E6FA' : 'Lavender',
+		'FFF' : 'White'
+	},
+
+	scayt :
+	{
+		title : 'Spell Check As You Type', // MISSING
+		enable : 'Enable SCAYT', // MISSING
+		disable : 'Disable SCAYT', // MISSING
+		about : 'About SCAYT', // MISSING
+		toggle : 'Toggle SCAYT', // MISSING
+		options : 'Options', // MISSING
+		langs : 'Languages', // MISSING
+		moreSuggestions : 'More suggestions', // MISSING
+		ignore : 'Ignore', // MISSING
+		ignoreAll : 'Ignore All', // MISSING
+		addWord : 'Add Word', // MISSING
+		emptyDic : 'Dictionary name should not be empty.', // MISSING
+		optionsTab : 'Options', // MISSING
+		languagesTab : 'Languages', // MISSING
+		dictionariesTab : 'Dictionaries', // MISSING
+		aboutTab : 'About' // MISSING
+	},
+
+	about :
+	{
+		title : 'About CKEditor', // MISSING
+		dlgTitle : 'About CKEditor', // MISSING
+		moreInfo : 'For licensing information please visit our web site:', // MISSING
+		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maximize', // MISSING
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor : 'Anchor', // MISSING
+		flash : 'Flash Animation', // MISSING
+		div : 'Page Break', // MISSING
+		unknown : 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title : 'Select color', // MISSING
+		highlight : 'Highlight', // MISSING
+		selected : 'Selected', // MISSING
+		clear : 'Clear' // MISSING
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/pagebreak/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/pagebreak/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/pagebreak/plugin.js	(revision 2000)
@@ -0,0 +1,96 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Horizontal Page Break
+ */
+
+// Register a plugin named "pagebreak".
+CKEDITOR.plugins.add( 'pagebreak',
+{
+	init : function( editor )
+	{
+		// Register the command.
+		editor.addCommand( 'pagebreak', CKEDITOR.plugins.pagebreakCmd );
+
+		// Register the toolbar button.
+		editor.ui.addButton( 'PageBreak',
+			{
+				label : editor.lang.pagebreak,
+				command : 'pagebreak'
+			});
+
+		// Add the style that renders our placeholder.
+		editor.addCss(
+			'img.cke_pagebreak' +
+			'{' +
+				'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/pagebreak.gif' ) + ');' +
+				'background-position: center center;' +
+				'background-repeat: no-repeat;' +
+				'clear: both;' +
+				'display: block;' +
+				'float: none;' +
+				'width: 100%;' +
+				'border-top: #999999 1px dotted;' +
+				'border-bottom: #999999 1px dotted;' +
+				'height: 5px;' +
+
+			'}' );
+	},
+
+	afterInit : function( editor )
+	{
+		// Register a filter to displaying placeholders after mode change.
+
+		var dataProcessor = editor.dataProcessor,
+			dataFilter = dataProcessor && dataProcessor.dataFilter;
+
+		if ( dataFilter )
+		{
+			dataFilter.addRules(
+				{
+					elements :
+					{
+						div : function( element )
+						{
+							var style = element.attributes.style,
+								child = style && element.children.length == 1 && element.children[ 0 ],
+								childStyle = child && ( child.name == 'span' ) && child.attributes.style;
+
+							if ( childStyle && ( /page-break-after\s*:\s*always/i ).test( style ) && ( /display\s*:\s*none/i ).test( childStyle ) )
+								return editor.createFakeParserElement( element, 'cke_pagebreak', 'div' );
+						}
+					}
+				});
+		}
+	},
+
+	requires : [ 'fakeobjects' ]
+});
+
+CKEDITOR.plugins.pagebreakCmd =
+{
+	exec : function( editor )
+	{
+		// Create the element that represents a print break.
+		var breakObject = CKEDITOR.dom.element.createFromHtml( '<div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>' );
+
+		// Creates the fake image used for this element.
+		breakObject = editor.createFakeElement( breakObject, 'cke_pagebreak', 'div' );
+
+		var ranges = editor.getSelection().getRanges();
+
+		for ( var range, i = 0 ; i < ranges.length ; i++ )
+		{
+			range = ranges[ i ];
+
+			if ( i > 0 )
+				breakObject = breakObject.clone( true );
+
+			range.splitBlock( 'p' );
+			range.insertNode( breakObject );
+		}
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/image/dialogs/image.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/image/dialogs/image.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/image/dialogs/image.js	(revision 2000)
@@ -0,0 +1,1243 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	// Load image preview.
+	var IMAGE = 1,
+		LINK = 2,
+		PREVIEW = 4,
+		CLEANUP = 8,
+		regexGetSize = /^\s*(\d+)((px)|\%)?\s*$/i,
+		regexGetSizeOrEmpty = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i;
+
+	var onSizeChange = function()
+	{
+		var value = this.getValue(),	// This = input element.
+			dialog = this.getDialog(),
+			aMatch  =  value.match( regexGetSize );	// Check value
+		if ( aMatch )
+		{
+			if ( aMatch[2] == '%' )			// % is allowed - > unlock ratio.
+				switchLockRatio( dialog, false );	// Unlock.
+			value = aMatch[1];
+		}
+
+		// Only if ratio is locked
+		if ( dialog.lockRatio )
+		{
+			var oImageOriginal = dialog.originalElement;
+			if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
+			{
+				if ( this.id == 'txtHeight' )
+				{
+					if ( value && value != '0' )
+						value = Math.round( oImageOriginal.$.width * ( value  / oImageOriginal.$.height ) );
+					if ( !isNaN( value ) )
+						dialog.setValueOf( 'info', 'txtWidth', value );
+				}
+				else		//this.id = txtWidth.
+				{
+					if ( value && value != '0' )
+						value = Math.round( oImageOriginal.$.height * ( value  / oImageOriginal.$.width ) );
+					if ( !isNaN( value ) )
+						dialog.setValueOf( 'info', 'txtHeight', value );
+				}
+			}
+		}
+		updatePreview( dialog );
+	};
+
+	var updatePreview = function( dialog )
+	{
+		//Don't load before onShow.
+		if ( !dialog.originalElement || !dialog.preview )
+			return 1;
+
+		// Read attributes and update imagePreview;
+		dialog.commitContent( PREVIEW, dialog.preview );
+		return 0;
+	};
+
+	var switchLockRatio = function( dialog, value )
+	{
+		var oImageOriginal = dialog.originalElement,
+			ratioButton = CKEDITOR.document.getById( 'btnLockSizes' );
+
+		if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
+		{
+			if ( value == 'check' )			// Check image ratio and original image ratio.
+			{
+				var width = dialog.getValueOf( 'info', 'txtWidth' ),
+					height = dialog.getValueOf( 'info', 'txtHeight' ),
+					originalRatio = oImageOriginal.$.width * 1000 / oImageOriginal.$.height,
+					thisRatio = width * 1000 / height;
+				dialog.lockRatio  = false;		// Default: unlock ratio
+
+				if ( !width && !height )
+					dialog.lockRatio = true;
+				else if ( !isNaN( originalRatio ) && !isNaN( thisRatio ) )
+				{
+					if ( Math.round( originalRatio ) == Math.round( thisRatio ) )
+						dialog.lockRatio = true;
+				}
+			}
+			else if ( value != undefined )
+				dialog.lockRatio = value;
+			else
+				dialog.lockRatio = !dialog.lockRatio;
+		}
+		else if ( value != 'check' )		// I can't lock ratio if ratio is unknown.
+			dialog.lockRatio = false;
+
+		if ( dialog.lockRatio )
+			ratioButton.removeClass( 'cke_btn_unlocked' );
+		else
+			ratioButton.addClass( 'cke_btn_unlocked' );
+
+		return dialog.lockRatio;
+	};
+
+	var resetSize = function( dialog )
+	{
+		var oImageOriginal = dialog.originalElement;
+		if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
+		{
+			dialog.setValueOf( 'info', 'txtWidth', oImageOriginal.$.width );
+			dialog.setValueOf( 'info', 'txtHeight', oImageOriginal.$.height );
+		}
+		updatePreview( dialog );
+	};
+
+	var setupDimension = function( type, element )
+	{
+		if ( type != IMAGE )
+			return;
+
+		function checkDimension( size, defaultValue )
+		{
+			var aMatch  =  size.match( regexGetSize );
+			if ( aMatch )
+			{
+				if ( aMatch[2] == '%' )				// % is allowed.
+				{
+					aMatch[1] += '%';
+					switchLockRatio( dialog, false );	// Unlock ratio
+				}
+				return aMatch[1];
+			}
+			return defaultValue;
+		}
+
+		var dialog = this.getDialog(),
+			value = '',
+			dimension = (( this.id == 'txtWidth' )? 'width' : 'height' ),
+			size = element.getAttribute( dimension );
+
+		if ( size )
+			value = checkDimension( size, value );
+		value = checkDimension( element.$.style[ dimension ], value );
+
+		this.setValue( value );
+	};
+
+	var imageDialog = function( editor, dialogType )
+	{
+		var onImgLoadEvent = function()
+		{
+			// Image is ready.
+			var original = this.originalElement;
+			original.setCustomData( 'isReady', 'true' );
+			original.removeListener( 'load', onImgLoadEvent );
+			original.removeListener( 'error', onImgLoadErrorEvent );
+			original.removeListener( 'abort', onImgLoadErrorEvent );
+
+			// Hide loader
+			CKEDITOR.document.getById( 'ImagePreviewLoader' ).setStyle( 'display', 'none' );
+
+			// New image -> new domensions
+			if ( !this.dontResetSize )
+				resetSize( this );
+
+			if ( this.firstLoad )
+				switchLockRatio( this, 'check' );
+			this.firstLoad = false;
+			this.dontResetSize = false;
+		};
+
+		var onImgLoadErrorEvent = function()
+		{
+			// Error. Image is not loaded.
+			var original = this.originalElement;
+			original.removeListener( 'load', onImgLoadEvent );
+			original.removeListener( 'error', onImgLoadErrorEvent );
+			original.removeListener( 'abort', onImgLoadErrorEvent );
+
+			// Set Error image.
+			var noimage = CKEDITOR.getUrl( editor.skinPath + 'images/noimage.png' );
+
+			if ( this.preview )
+				this.preview.setAttribute( 'src', noimage );
+
+			// Hide loader
+			CKEDITOR.document.getById( 'ImagePreviewLoader' ).setStyle( 'display', 'none' );
+			switchLockRatio( this, false );	// Unlock.
+		};
+		return {
+			title : ( dialogType == 'image' ) ? editor.lang.image.title : editor.lang.image.titleButton,
+			minWidth : 420,
+			minHeight : 310,
+			onShow : function()
+			{
+				this.imageElement = false;
+				this.linkElement = false;
+
+				// Default: create a new element.
+				this.imageEditMode = false;
+				this.linkEditMode = false;
+
+				this.lockRatio = true;
+				this.dontResetSize = false;
+				this.firstLoad = true;
+				this.addLink = false;
+
+				//Hide loader.
+				CKEDITOR.document.getById( 'ImagePreviewLoader' ).setStyle( 'display', 'none' );
+				// Preview
+				this.preview = CKEDITOR.document.getById( 'previewImage' );
+
+				var editor = this.getParentEditor(),
+					sel = this.getParentEditor().getSelection(),
+					element = sel.getSelectedElement(),
+					link = element && element.getAscendant( 'a' );
+
+				// Copy of the image
+				this.originalElement = editor.document.createElement( 'img' );
+				this.originalElement.setAttribute( 'alt', '' );
+				this.originalElement.setCustomData( 'isReady', 'false' );
+
+				if ( link )
+				{
+					this.linkElement = link;
+					this.linkEditMode = true;
+
+					// Look for Image element.
+					var linkChildren = link.getChildren();
+					if ( linkChildren.count() == 1 )			// 1 child.
+					{
+						var childTagName = linkChildren.getItem( 0 ).getName();
+						if ( childTagName == 'img' || childTagName == 'input' )
+						{
+							this.imageElement = linkChildren.getItem( 0 );
+							if ( this.imageElement.getName() == 'img' )
+								this.imageEditMode = 'img';
+							else if ( this.imageElement.getName() == 'input' )
+								this.imageEditMode = 'input';
+						}
+					}
+					// Fill out all fields.
+					if ( dialogType == 'image' )
+						this.setupContent( LINK, link );
+				}
+
+				if ( element && element.getName() == 'img' && !element.getAttribute( '_cke_protected_html' ) )
+					this.imageEditMode = 'img';
+				else if ( element && element.getName() == 'input' && element.getAttribute( 'type' ) && element.getAttribute( 'type' ) == 'image' )
+					this.imageEditMode = 'input';
+
+				if ( this.imageEditMode || this.imageElement )
+				{
+					if ( !this.imageElement )
+						this.imageElement = element;
+
+					// Fill out all fields.
+					this.setupContent( IMAGE, this.imageElement );
+
+					// Refresh LockRatio button
+					switchLockRatio ( this, true );
+				}
+
+				// Dont show preview if no URL given.
+				if ( !CKEDITOR.tools.trim( this.getValueOf( 'info', 'txtUrl' ) ) )
+				{
+					this.preview.removeAttribute( 'src' );
+					this.preview.setStyle( 'display', 'none' );
+				}
+			},
+			onOk : function()
+			{
+				// Edit existing Image.
+				if ( this.imageEditMode )
+				{
+					var imgTagName = this.imageEditMode;
+
+					// Image dialog and Input element.
+					if ( dialogType == 'image' && imgTagName == 'input' && confirm( editor.lang.image.button2Img ) )
+					{
+						// Replace INPUT-> IMG
+						imgTagName = 'img';
+						this.imageElement = editor.document.createElement( 'img' );
+						this.imageElement.setAttribute( 'alt', '' );
+						editor.insertElement( this.imageElement );
+					}
+					// ImageButton dialog and Image element.
+					else if ( dialogType != 'image' && imgTagName == 'img' && confirm( editor.lang.image.img2Button ))
+					{
+						// Replace IMG -> INPUT
+						imgTagName = 'input';
+						this.imageElement = editor.document.createElement( 'input' );
+						this.imageElement.setAttributes(
+							{
+								type : 'image',
+								alt : ''
+							}
+						);
+						editor.insertElement( this.imageElement );
+					}
+				}
+				else	// Create a new image.
+				{
+					// Image dialog -> create IMG element.
+					if ( dialogType == 'image' )
+						this.imageElement = editor.document.createElement( 'img' );
+					else
+					{
+						this.imageElement = editor.document.createElement( 'input' );
+						this.imageElement.setAttribute ( 'type' ,'image' );
+					}
+					this.imageElement.setAttribute( 'alt', '' );
+				}
+
+				// Create a new link.
+				if ( !this.linkEditMode )
+					this.linkElement = editor.document.createElement( 'a' );
+
+				// Set attributes.
+				this.commitContent( IMAGE, this.imageElement );
+				this.commitContent( LINK, this.linkElement );
+
+				// Insert a new Image.
+				if ( !this.imageEditMode )
+				{
+					if ( this.addLink )
+					{
+						//Insert a new Link.
+						if ( !this.linkEditMode )
+						{
+							editor.insertElement(this.linkElement);
+							this.linkElement.append(this.imageElement, false);
+						}
+						else	 //Link already exists, image not.
+							editor.insertElement(this.imageElement );
+					}
+					else
+						editor.insertElement( this.imageElement );
+				}
+				else		// Image already exists.
+				{
+					//Add a new link element.
+					if ( !this.linkEditMode && this.addLink )
+					{
+						editor.insertElement( this.linkElement );
+						this.imageElement.appendTo( this.linkElement );
+					}
+					//Remove Link, Image exists.
+					else if ( this.linkEditMode && !this.addLink )
+					{
+						editor.getSelection().selectElement( this.linkElement );
+						editor.insertElement( this.imageElement );
+					}
+				}
+			},
+			onLoad : function()
+			{
+				if ( dialogType != 'image' )
+					this.hidePage( 'Link' );		//Hide Link tab.
+				var doc = this._.element.getDocument();
+				this.addFocusable( doc.getById( 'btnResetSize' ), 5 );
+				this.addFocusable( doc.getById( 'btnLockSizes' ), 5 );
+			},
+			onHide : function()
+			{
+				if ( this.preview )
+					this.commitContent( CLEANUP, this.preview );
+
+				if ( this.originalElement )
+				{
+					this.originalElement.removeListener( 'load', onImgLoadEvent );
+					this.originalElement.removeListener( 'error', onImgLoadErrorEvent );
+					this.originalElement.removeListener( 'abort', onImgLoadErrorEvent );
+					this.originalElement.remove();
+					this.originalElement = false;		// Dialog is closed.
+				}
+			},
+			contents : [
+				{
+					id : 'info',
+					label : editor.lang.image.infoTab,
+					accessKey : 'I',
+					elements :
+					[
+						{
+							type : 'vbox',
+							padding : 0,
+							children :
+							[
+								{
+									type : 'html',
+									html : '<span>' + CKEDITOR.tools.htmlEncode( editor.lang.image.url ) + '</span>'
+								},
+								{
+									type : 'hbox',
+									widths : [ '280px', '110px' ],
+									align : 'right',
+									children :
+									[
+										{
+											id : 'txtUrl',
+											type : 'text',
+											label : '',
+											onChange : function()
+											{
+												var dialog = this.getDialog(),
+													newUrl = this.getValue();
+
+												//Update original image
+												if ( newUrl.length > 0 )	//Prevent from load before onShow
+												{
+													dialog = this.getDialog();
+													var original = dialog.originalElement;
+
+													dialog.preview.removeStyle( 'display' );
+
+													original.setCustomData( 'isReady', 'false' );
+													// Show loader
+													var loader = CKEDITOR.document.getById( 'ImagePreviewLoader' );
+													if ( loader )
+														loader.setStyle( 'display', '' );
+
+													original.on( 'load', onImgLoadEvent, dialog );
+													original.on( 'error', onImgLoadErrorEvent, dialog );
+													original.on( 'abort', onImgLoadErrorEvent, dialog );
+													original.setAttribute( 'src', newUrl );
+													dialog.preview.setAttribute( 'src', newUrl );
+
+													updatePreview( dialog );
+												}
+												// Dont show preview if no URL given.
+												else if ( dialog.preview )
+												{
+													dialog.preview.removeAttribute( 'src' );
+													dialog.preview.setStyle( 'display', 'none' );
+												}
+											},
+											setup : function( type, element )
+											{
+												if ( type == IMAGE )
+												{
+													var url = element.getAttribute( '_cke_saved_src' ) || element.getAttribute( 'src' );
+													var field = this;
+
+													this.getDialog().dontResetSize = true;
+
+													// In IE7 the dialog is being rendered improperly when loading
+													// an image with a long URL. So we need to delay it a bit. (#4122)
+													setTimeout( function()
+														{
+															field.setValue( url );		// And call this.onChange()
+															// Manually set the initial value.(#4191)
+															field.setInitValue();
+															field.focus();
+														}, 0 );
+												}
+											},
+											commit : function( type, element )
+											{
+												if ( type == IMAGE && ( this.getValue() || this.isChanged() ) )
+												{
+													element.setAttribute( '_cke_saved_src', decodeURI( this.getValue() ) );
+													element.setAttribute( 'src', decodeURI( this.getValue() ) );
+												}
+												else if ( type == CLEANUP )
+												{
+													element.setAttribute( 'src', '' );	// If removeAttribute doesn't work.
+													element.removeAttribute( 'src' );
+												}
+											},
+											validate : CKEDITOR.dialog.validate.notEmpty( editor.lang.image.urlMissing )
+										},
+										{
+											type : 'button',
+											id : 'browse',
+											align : 'center',
+											label : editor.lang.common.browseServer,
+											hidden : true,
+											filebrowser : 'info:txtUrl'
+										}
+									]
+								}
+							]
+						},
+						{
+							id : 'txtAlt',
+							type : 'text',
+							label : editor.lang.image.alt,
+							accessKey : 'A',
+							'default' : '',
+							onChange : function()
+							{
+								updatePreview( this.getDialog() );
+							},
+							setup : function( type, element )
+							{
+								if ( type == IMAGE )
+									this.setValue( element.getAttribute( 'alt' ) );
+							},
+							commit : function( type, element )
+							{
+								if ( type == IMAGE )
+								{
+									if ( this.getValue() || this.isChanged() )
+										element.setAttribute( 'alt', this.getValue() );
+								}
+								else if ( type == PREVIEW )
+								{
+									element.setAttribute( 'alt', this.getValue() );
+								}
+								else if ( type == CLEANUP )
+								{
+									element.removeAttribute( 'alt' );
+								}
+							}
+						},
+						{
+							type : 'hbox',
+							widths : [ '140px', '240px' ],
+							children :
+							[
+								{
+									type : 'vbox',
+									padding : 10,
+									children :
+									[
+										{
+											type : 'hbox',
+											widths : [ '70%', '30%' ],
+											children :
+											[
+												{
+													type : 'vbox',
+													padding : 1,
+													children :
+													[
+														{
+															type : 'text',
+															width: '40px',
+															id : 'txtWidth',
+															labelLayout : 'horizontal',
+															label : editor.lang.image.width,
+															onKeyUp : onSizeChange,
+															validate: function()
+															{
+																var aMatch  =  this.getValue().match( regexGetSizeOrEmpty );
+																if ( !aMatch )
+																	alert( editor.lang.common.validateNumberFailed );
+																return !!aMatch;
+															},
+															setup : setupDimension,
+															commit : function( type, element )
+															{
+																if ( type == IMAGE )
+																{
+																	var value = this.getValue();
+																	if ( value )
+																		element.setAttribute( 'width', value );
+																	else if ( !value && this.isChanged() )
+																		element.removeAttribute( 'width' );
+																}
+																else if ( type == PREVIEW )
+																{
+																	value = this.getValue();
+																	var aMatch = value.match( regexGetSize );
+																	if ( !aMatch )
+																	{
+																		var oImageOriginal = this.getDialog().originalElement;
+																		if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
+																			element.setStyle( 'width',  oImageOriginal.$.width + 'px');
+																	}
+																	else
+																		element.setStyle( 'width', value + 'px');
+																}
+																else if ( type == CLEANUP )
+																{
+																	element.setStyle( 'width', '0px' );	// If removeAttribute doesn't work.
+																	element.removeAttribute( 'width' );
+																	element.removeStyle( 'width' );
+																}
+															}
+														},
+														{
+															type : 'text',
+															id : 'txtHeight',
+															width: '40px',
+															labelLayout : 'horizontal',
+															label : editor.lang.image.height,
+															onKeyUp : onSizeChange,
+															validate: function()
+															{
+																var aMatch = this.getValue().match( regexGetSizeOrEmpty );
+																if ( !aMatch )
+																	alert( editor.lang.common.validateNumberFailed );
+																return !!aMatch;
+															},
+															setup : setupDimension,
+															commit : function( type, element )
+															{
+																if ( type == IMAGE )
+																{
+																	var value = this.getValue();
+																	if ( value )
+																		element.setAttribute( 'height', value );
+																	else if ( !value && this.isChanged() )
+																		element.removeAttribute( 'height' );
+																}
+																else if ( type == PREVIEW )
+																{
+																	value = this.getValue();
+																	var aMatch = value.match( regexGetSize );
+																	if ( !aMatch )
+																	{
+																		var oImageOriginal = this.getDialog().originalElement;
+																		if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
+																			element.setStyle( 'height',  oImageOriginal.$.height + 'px');
+																	}
+																	else
+																		element.setStyle( 'height', value + 'px');
+																}
+																else if ( type == CLEANUP )
+																{
+																	element.setStyle( 'height', '0px' );	// If removeAttribute doesn't work.
+																	element.removeAttribute( 'height' );
+																	element.removeStyle( 'height' );
+																}
+															}
+														}
+													]
+												},
+												{
+													type : 'html',
+													style : 'margin-top:10px;width:40px;height:40px;',
+													onLoad : function()
+													{
+														// Activate Reset button
+														var	resetButton = CKEDITOR.document.getById( 'btnResetSize' ),
+															ratioButton = CKEDITOR.document.getById( 'btnLockSizes' );
+														if ( resetButton )
+														{
+															resetButton.on( 'click', function()
+																{
+																	resetSize( this );
+																}, this.getDialog() );
+															resetButton.on( 'mouseover', function()
+																{
+																	this.addClass( 'cke_btn_over' );
+																}, resetButton );
+															resetButton.on( 'mouseout', function()
+																{
+																	this.removeClass( 'cke_btn_over' );
+																}, resetButton );
+														}
+														// Activate (Un)LockRatio button
+														if ( ratioButton )
+														{
+															ratioButton.on( 'click', function()
+																{
+																	var locked = switchLockRatio( this ),
+																		oImageOriginal = this.originalElement,
+																		width = this.getValueOf( 'info', 'txtWidth' );
+
+																	if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' && width )
+																	{
+																		var height = oImageOriginal.$.height / oImageOriginal.$.width * width;
+																		if ( !isNaN( height ) )
+																		{
+																			this.setValueOf( 'info', 'txtHeight', Math.round( height ) );
+																			updatePreview( this );
+																		}
+																	}
+																}, this.getDialog() );
+															ratioButton.on( 'mouseover', function()
+																{
+																	this.addClass( 'cke_btn_over' );
+																}, ratioButton );
+															ratioButton.on( 'mouseout', function()
+																{
+																	this.removeClass( 'cke_btn_over' );
+																}, ratioButton );
+														}
+													},
+													html : '<div>'+
+														'<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.lockRatio +
+														'" class="cke_btn_locked" id="btnLockSizes"></a>' +
+														'<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.resetSize +
+														'" class="cke_btn_reset" id="btnResetSize"></a>'+
+														'</div>'
+												}
+											]
+										},
+										{
+											type : 'vbox',
+											padding : 1,
+											children :
+											[
+												{
+													type : 'text',
+													id : 'txtBorder',
+													width: '60px',
+													labelLayout : 'horizontal',
+													label : editor.lang.image.border,
+													'default' : '',
+													onKeyUp : function()
+													{
+														updatePreview( this.getDialog() );
+													},
+													validate: function()
+													{
+														var func = CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed );
+														return func.apply( this );
+													},
+													setup : function( type, element )
+													{
+														if ( type == IMAGE )
+															this.setValue( element.getAttribute( 'border' ) );
+													},
+													commit : function( type, element )
+													{
+														if ( type == IMAGE )
+														{
+															if ( this.getValue() || this.isChanged() )
+																element.setAttribute( 'border', this.getValue() );
+														}
+														else if ( type == PREVIEW )
+														{
+															var value = parseInt( this.getValue(), 10 );
+															value = isNaN( value ) ? 0 : value;
+															element.setAttribute( 'border', value );
+															element.setStyle( 'border', value + 'px solid black' );
+														}
+														else if ( type == CLEANUP )
+														{
+															element.removeAttribute( 'border' );
+															element.removeStyle( 'border' );
+														}
+													}
+												},
+												{
+													type : 'text',
+													id : 'txtHSpace',
+													width: '60px',
+													labelLayout : 'horizontal',
+													label : editor.lang.image.hSpace,
+													'default' : '',
+													onKeyUp : function()
+													{
+														updatePreview( this.getDialog() );
+													},
+													validate: function()
+													{
+														var func = CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed );
+														return func.apply( this );
+													},
+													setup : function( type, element )
+													{
+														if ( type == IMAGE )
+														{
+															var value = element.getAttribute( 'hspace' );
+															if ( value != -1 )				// In IE empty = -1.
+																this.setValue( value );
+														}
+													},
+													commit : function( type, element )
+													{
+														if ( type == IMAGE )
+														{
+															if ( this.getValue() || this.isChanged() )
+																element.setAttribute( 'hspace', this.getValue() );
+														}
+														else if ( type == PREVIEW )
+														{
+															var value = parseInt( this.getValue(), 10 );
+															value = isNaN( value ) ? 0 : value;
+															element.setAttribute( 'hspace', value );
+															element.setStyle( 'margin-left', value + 'px' );
+															element.setStyle( 'margin-right', value + 'px' );
+														}
+														else if ( type == CLEANUP )
+														{
+															element.removeAttribute( 'hspace' );
+															element.removeStyle( 'margin-left' );
+															element.removeStyle( 'margin-right' );
+														}
+													}
+												},
+												{
+													type : 'text',
+													id : 'txtVSpace',
+													width : '60px',
+													labelLayout : 'horizontal',
+													label : editor.lang.image.vSpace,
+													'default' : '',
+													onKeyUp : function()
+													{
+														updatePreview( this.getDialog() );
+													},
+													validate: function()
+													{
+														var func = CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed );
+														return func.apply( this );
+													},
+													setup : function( type, element )
+													{
+														if ( type == IMAGE )
+															this.setValue( element.getAttribute( 'vspace' ) );
+													},
+													commit : function( type, element )
+													{
+														if ( type == IMAGE )
+														{
+															if ( this.getValue() || this.isChanged() )
+																element.setAttribute( 'vspace', this.getValue() );
+														}
+														else if ( type == PREVIEW )
+														{
+															var value = parseInt( this.getValue(), 10 );
+															value = isNaN( value ) ? 0 : value;
+															element.setAttribute( 'vspace', this.getValue() );
+															element.setStyle( 'margin-top', value + 'px' );
+															element.setStyle( 'margin-bottom', value + 'px' );
+														}
+														else if ( type == CLEANUP )
+														{
+															element.removeAttribute( 'vspace' );
+															element.removeStyle( 'margin-top' );
+															element.removeStyle( 'margin-bottom' );
+														}
+													}
+												},
+												{
+													id : 'cmbAlign',
+													type : 'select',
+													labelLayout : 'horizontal',
+													widths : [ '35%','65%' ],
+													style : 'width:90px',
+													label : editor.lang.image.align,
+													'default' : '',
+													items :
+													[
+														[ editor.lang.common.notSet , ''],
+														[ editor.lang.image.alignLeft , 'left'],
+														[ editor.lang.image.alignAbsBottom , 'absBottom'],
+														[ editor.lang.image.alignAbsMiddle , 'absMiddle'],
+														[ editor.lang.image.alignBaseline , 'baseline'],
+														[ editor.lang.image.alignBottom , 'bottom'],
+														[ editor.lang.image.alignMiddle , 'middle'],
+														[ editor.lang.image.alignRight , 'right'],
+														[ editor.lang.image.alignTextTop , 'textTop'],
+														[ editor.lang.image.alignTop , 'top']
+													],
+													onChange : function()
+													{
+														updatePreview( this.getDialog() );
+													},
+													setup : function( type, element )
+													{
+														if ( type == IMAGE )
+															this.setValue( element.getAttribute( 'align' ) );
+													},
+													commit : function( type, element )
+													{
+														var value = this.getValue();
+														if ( type == IMAGE )
+														{
+															if ( value || this.isChanged() )
+																element.setAttribute( 'align', value );
+														}
+														else if ( type == PREVIEW )
+														{
+															element.setAttribute( 'align', this.getValue() );
+
+															if ( value == 'absMiddle' || value == 'middle' )
+																element.setStyle( 'vertical-align', 'middle' );
+															else if ( value == 'top' || value == 'textTop' )
+																element.setStyle( 'vertical-align', 'top' );
+															else
+																element.removeStyle( 'vertical-align' );
+
+															if ( value == 'right' || value == 'left' )
+																element.setStyle( 'styleFloat', value );
+															else
+																element.removeStyle( 'styleFloat' );
+
+														}
+														else if ( type == CLEANUP )
+														{
+															element.removeAttribute( 'align' );
+														}
+													}
+												}
+											]
+										}
+									]
+								},
+								{
+									type : 'vbox',
+									height : '250px',
+									children :
+									[
+										{
+											type : 'html',
+											style : 'width:95%;',
+											html : '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.image.preview ) +'<br>'+
+											'<div id="ImagePreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div>'+
+											'<div id="ImagePreviewBox">'+
+											'<a href="javascript:void(0)" target="_blank" onclick="return false;" id="previewLink">'+
+											'<img id="previewImage" src="" alt="" /></a>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. '+
+											'Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, '+
+											'nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.' +
+											'</div>'+'</div>'
+										}
+									]
+								}
+							]
+						}
+					]
+				},
+				{
+					id : 'Link',
+					label : editor.lang.link.title,
+					padding : 0,
+					elements :
+					[
+						{
+							id : 'txtUrl',
+							type : 'text',
+							label : editor.lang.image.url,
+							style : 'width: 100%',
+							'default' : '',
+							setup : function( type, element )
+							{
+								if ( type == LINK )
+								{
+									var href = element.getAttribute( '_cke_saved_href' );
+									if ( !href )
+										href = element.getAttribute( 'href' );
+									this.setValue( href );
+								}
+							},
+							commit : function( type, element )
+							{
+								if ( type == LINK )
+								{
+									if ( this.getValue() || this.isChanged() )
+									{
+										element.setAttribute( '_cke_saved_href', decodeURI( this.getValue() ) );
+										element.setAttribute( 'href', 'javascript:void(0)/*' +
+											CKEDITOR.tools.getNextNumber() + '*/' );
+
+										if ( this.getValue() || !editor.config.image_removeLinkByEmptyURL )
+											this.getDialog().addLink = true;
+									}
+								}
+							}
+						},
+						{
+							type : 'button',
+							id : 'browse',
+							filebrowser : 'Link:txtUrl',
+							style : 'float:right',
+							hidden : true,
+							label : editor.lang.common.browseServer
+						},
+						{
+							id : 'cmbTarget',
+							type : 'select',
+							label : editor.lang.link.target,
+							'default' : '',
+							items :
+							[
+								[ editor.lang.link.targetNotSet , ''],
+								[ editor.lang.link.targetNew , '_blank'],
+								[ editor.lang.link.targetTop , '_top'],
+								[ editor.lang.link.targetSelf , '_self'],
+								[ editor.lang.link.targetParent , '_parent']
+							],
+							setup : function( type, element )
+							{
+								if ( type == LINK )
+									this.setValue( element.getAttribute( 'target' ) );
+							},
+							commit : function( type, element )
+							{
+								if ( type == LINK )
+								{
+									if ( this.getValue() || this.isChanged() )
+										element.setAttribute( 'target', this.getValue() );
+								}
+							}
+						}
+					]
+				},
+				{
+					id : 'Upload',
+					hidden : true,
+					filebrowser : 'uploadButton',
+					label : editor.lang.image.upload,
+					elements :
+					[
+						{
+							type : 'file',
+							id : 'upload',
+							label : editor.lang.image.btnUpload,
+							style: 'height:40px',
+							size : 38
+						},
+						{
+							type : 'fileButton',
+							id : 'uploadButton',
+							filebrowser : 'info:txtUrl',
+							label : editor.lang.image.btnUpload,
+							'for' : [ 'Upload', 'upload' ]
+						}
+					]
+				},
+				{
+					id : 'advanced',
+					label : editor.lang.common.advancedTab,
+					elements :
+					[
+						{
+							type : 'hbox',
+							widths : [ '50%', '25%', '25%' ],
+							children :
+							[
+								{
+									type : 'text',
+									id : 'linkId',
+									label : editor.lang.common.id,
+									setup : function( type, element )
+									{
+										if ( type == IMAGE )
+											this.setValue( element.getAttribute( 'id' ) );
+									},
+									commit : function( type, element )
+									{
+										if ( type == IMAGE )
+										{
+											if ( this.getValue() || this.isChanged() )
+												element.setAttribute( 'id', this.getValue() );
+										}
+									}
+								},
+								{
+									id : 'cmbLangDir',
+									type : 'select',
+									style : 'width : 100px;',
+									label : editor.lang.common.langDir,
+									'default' : '',
+									items :
+									[
+										[ editor.lang.common.notSet, '' ],
+										[ editor.lang.common.langDirLtr, 'ltr' ],
+										[ editor.lang.common.langDirRtl, 'rtl' ]
+									],
+									setup : function( type, element )
+									{
+										if ( type == IMAGE )
+											this.setValue( element.getAttribute( 'dir' ) );
+									},
+									commit : function( type, element )
+									{
+										if ( type == IMAGE )
+										{
+											if ( this.getValue() || this.isChanged() )
+												element.setAttribute( 'dir', this.getValue() );
+										}
+									}
+								},
+								{
+									type : 'text',
+									id : 'txtLangCode',
+									label : editor.lang.common.langCode,
+									'default' : '',
+									setup : function( type, element )
+									{
+										if ( type == IMAGE )
+											this.setValue( element.getAttribute( 'lang' ) );
+									},
+									commit : function( type, element )
+									{
+										if ( type == IMAGE )
+										{
+											if ( this.getValue() || this.isChanged() )
+												element.setAttribute( 'lang', this.getValue() );
+										}
+									}
+								}
+							]
+						},
+						{
+							type : 'text',
+							id : 'txtGenLongDescr',
+							label : editor.lang.common.longDescr,
+							setup : function( type, element )
+							{
+								if ( type == IMAGE )
+									this.setValue( element.getAttribute( 'longDesc' ) );
+							},
+							commit : function( type, element )
+							{
+								if ( type == IMAGE )
+								{
+									if ( this.getValue() || this.isChanged() )
+										element.setAttribute( 'longDesc', this.getValue() );
+								}
+							}
+						},
+						{
+							type : 'hbox',
+							widths : [ '50%', '50%' ],
+							children :
+							[
+								{
+									type : 'text',
+									id : 'txtGenClass',
+									label : editor.lang.common.cssClass,
+									'default' : '',
+									setup : function( type, element )
+									{
+										if ( type == IMAGE )
+											this.setValue( element.getAttribute( 'class' ) );
+									},
+									commit : function( type, element )
+									{
+										if ( type == IMAGE )
+										{
+											if ( this.getValue() || this.isChanged() )
+												element.setAttribute( 'class', this.getValue() );
+										}
+									}
+								},
+								{
+									type : 'text',
+									id : 'txtGenTitle',
+									label : editor.lang.common.advisoryTitle,
+									'default' : '',
+									onChange : function()
+									{
+										updatePreview( this.getDialog() );
+									},
+									setup : function( type, element )
+									{
+										if ( type == IMAGE )
+											this.setValue( element.getAttribute( 'title' ) );
+									},
+									commit : function( type, element )
+									{
+										if ( type == IMAGE )
+										{
+											if ( this.getValue() || this.isChanged() )
+												element.setAttribute( 'title', this.getValue() );
+										}
+										else if ( type == PREVIEW )
+										{
+											element.setAttribute( 'title', this.getValue() );
+										}
+										else if ( type == CLEANUP )
+										{
+											element.removeAttribute( 'title' );
+										}
+									}
+								}
+							]
+						},
+						{
+							type : 'text',
+							id : 'txtdlgGenStyle',
+							label : editor.lang.common.cssStyle,
+							'default' : '',
+							setup : function( type, element )
+							{
+								if ( type == IMAGE )
+								{
+									var genStyle = element.getAttribute( 'style' );
+									if ( !genStyle && element.$.style.cssText )
+										genStyle = element.$.style.cssText;
+									this.setValue( genStyle );
+
+									var height = element.$.style.height,
+										width = element.$.style.width,
+										aMatchH  = ( height ? height : '' ).match( regexGetSize ),
+										aMatchW  = ( width ? width : '').match( regexGetSize );
+
+									this.attributesInStyle =
+									{
+										height : !!aMatchH,
+										width : !!aMatchW
+									};
+								}
+							},
+							commit : function( type, element )
+							{
+								if ( type == IMAGE && ( this.getValue() || this.isChanged() ) )
+								{
+									element.setAttribute( 'style', this.getValue() );
+
+									// Set STYLE dimensions.
+									var height = element.getAttribute( 'height' ),
+										width = element.getAttribute( 'width' );
+
+									if ( this.attributesInStyle && this.attributesInStyle.height )
+									{
+										if ( height )
+										{
+											if ( height.match( regexGetSize )[2] == '%' )			// % is allowed
+												element.setStyle( 'height', height + '%' );
+											else
+												element.setStyle( 'height', height + 'px' );
+										}
+										else
+											element.removeStyle( 'height' );
+									}
+									if ( this.attributesInStyle && this.attributesInStyle.width )
+									{
+										if ( width )
+										{
+											if ( width.match( regexGetSize )[2] == '%' )			// % is allowed
+												element.setStyle( 'width', width + '%' );
+											else
+												element.setStyle( 'width', width + 'px' );
+										}
+										else
+											element.removeStyle( 'width' );
+									}
+								}
+							}
+						}
+					]
+				}
+			]
+		};
+	};
+
+	CKEDITOR.dialog.add( 'image', function( editor )
+		{
+			return imageDialog( editor, 'image' );
+		});
+
+	CKEDITOR.dialog.add( 'imagebutton', function( editor )
+		{
+			return imageDialog( editor, 'imagebutton' );
+		});
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/image/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/image/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/image/plugin.js	(revision 2000)
@@ -0,0 +1,64 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Image plugin
+ */
+
+CKEDITOR.plugins.add( 'image',
+{
+	init : function( editor )
+	{
+		var pluginName = 'image';
+
+		// Register the dialog.
+		CKEDITOR.dialog.add( pluginName, this.path + 'dialogs/image.js' );
+
+		// Register the command.
+		editor.addCommand( pluginName, new CKEDITOR.dialogCommand( pluginName ) );
+
+		// Register the toolbar button.
+		editor.ui.addButton( 'Image',
+			{
+				label : editor.lang.common.image,
+				command : pluginName
+			});
+
+		// If the "menu" plugin is loaded, register the menu items.
+		if ( editor.addMenuItems )
+		{
+			editor.addMenuItems(
+				{
+					image :
+					{
+						label : editor.lang.image.menu,
+						command : 'image',
+						group : 'image'
+					}
+				});
+		}
+
+		// If the "contextmenu" plugin is loaded, register the listeners.
+		if ( editor.contextMenu )
+		{
+			editor.contextMenu.addListener( function( element, selection )
+				{
+					if ( !element || !element.is( 'img' ) || element.getAttribute( '_cke_realelement' ) )
+						return null;
+
+					return { image : CKEDITOR.TRISTATE_OFF };
+				});
+		}
+	}
+} );
+
+/**
+ * Whether to remove links when emptying the link URL field in the image dialog.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.image_removeLinkByEmptyURL = false;
+ */
+CKEDITOR.config.image_removeLinkByEmptyURL = true;
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/styles/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/styles/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/styles/plugin.js	(revision 2000)
@@ -0,0 +1,1243 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'styles',
+{
+	requires : [ 'selection' ]
+});
+
+/**
+ * Registers a function to be called whenever a style changes its state in the
+ * editing area. The current state is passed to the function. The possible
+ * states are {@link CKEDITOR.TRISTATE_ON} and {@link CKEDITOR.TRISTATE_OFF}.
+ * @param {CKEDITOR.style} The style to be watched.
+ * @param {Function} The function to be called when the style state changes.
+ * @example
+ * // Create a style object for the &lt;b&gt; element.
+ * var style = new CKEDITOR.style( { element : 'b' } );
+ * var editor = CKEDITOR.instances.editor1;
+ * editor.attachStyleStateChange( style, function( state )
+ *     {
+ *         if ( state == CKEDITOR.TRISTATE_ON )
+ *             alert( 'The current state for the B element is ON' );
+ *         else
+ *             alert( 'The current state for the B element is OFF' );
+ *     });
+ */
+CKEDITOR.editor.prototype.attachStyleStateChange = function( style, callback )
+{
+	// Try to get the list of attached callbacks.
+	var styleStateChangeCallbacks = this._.styleStateChangeCallbacks;
+
+	// If it doesn't exist, it means this is the first call. So, let's create
+	// all the structure to manage the style checks and the callback calls.
+	if ( !styleStateChangeCallbacks )
+	{
+		// Create the callbacks array.
+		styleStateChangeCallbacks = this._.styleStateChangeCallbacks = [];
+
+		// Attach to the selectionChange event, so we can check the styles at
+		// that point.
+		this.on( 'selectionChange', function( ev )
+			{
+				// Loop throw all registered callbacks.
+				for ( var i = 0 ; i < styleStateChangeCallbacks.length ; i++ )
+				{
+					var callback = styleStateChangeCallbacks[ i ];
+
+					// Check the current state for the style defined for that
+					// callback.
+					var currentState = callback.style.checkActive( ev.data.path ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF;
+
+					// If the state changed since the last check.
+					if ( callback.state !== currentState )
+					{
+						// Call the callback function, passing the current
+						// state to it.
+						callback.fn.call( this, currentState );
+
+						// Save the current state, so it can be compared next
+						// time.
+						callback.state !== currentState;
+					}
+				}
+			});
+	}
+
+	// Save the callback info, so it can be checked on the next occurence of
+	// selectionChange.
+	styleStateChangeCallbacks.push( { style : style, fn : callback } );
+};
+
+CKEDITOR.STYLE_BLOCK = 1;
+CKEDITOR.STYLE_INLINE = 2;
+CKEDITOR.STYLE_OBJECT = 3;
+
+(function()
+{
+	var blockElements	= { address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 };
+	var objectElements	= { a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,ul:1 };
+
+	var semicolonFixRegex = /\s*(?:;\s*|$)/;
+
+	CKEDITOR.style = function( styleDefinition, variablesValues )
+	{
+		if ( variablesValues )
+		{
+			styleDefinition = CKEDITOR.tools.clone( styleDefinition );
+
+			replaceVariables( styleDefinition.attributes, variablesValues );
+			replaceVariables( styleDefinition.styles, variablesValues );
+		}
+
+		var element = this.element = ( styleDefinition.element || '*' ).toLowerCase();
+
+		this.type =
+			( element == '#' || blockElements[ element ] ) ?
+				CKEDITOR.STYLE_BLOCK
+			: objectElements[ element ] ?
+				CKEDITOR.STYLE_OBJECT
+			:
+				CKEDITOR.STYLE_INLINE;
+
+		this._ =
+		{
+			definition : styleDefinition
+		};
+	};
+
+	CKEDITOR.style.prototype =
+	{
+		apply : function( document )
+		{
+			applyStyle.call( this, document, false );
+		},
+
+		remove : function( document )
+		{
+			applyStyle.call( this, document, true );
+		},
+
+		applyToRange : function( range )
+		{
+			return ( this.applyToRange =
+						this.type == CKEDITOR.STYLE_INLINE ?
+							applyInlineStyle
+						: this.type == CKEDITOR.STYLE_BLOCK ?
+							applyBlockStyle
+						: null ).call( this, range );
+		},
+
+		removeFromRange : function( range )
+		{
+			return ( this.removeFromRange =
+						this.type == CKEDITOR.STYLE_INLINE ?
+							removeInlineStyle
+						: null ).call( this, range );
+		},
+
+		applyToObject : function( element )
+		{
+			setupElement( element, this );
+		},
+
+		/**
+		 * Get the style state inside an element path. Returns "true" if the
+		 * element is active in the path.
+		 */
+		checkActive : function( elementPath )
+		{
+			switch ( this.type )
+			{
+				case CKEDITOR.STYLE_BLOCK :
+					return this.checkElementRemovable( elementPath.block || elementPath.blockLimit, true );
+
+				case CKEDITOR.STYLE_INLINE :
+
+					var elements = elementPath.elements;
+
+					for ( var i = 0, element ; i < elements.length ; i++ )
+					{
+						element = elements[i];
+
+						if ( element == elementPath.block || element == elementPath.blockLimit )
+							continue;
+
+						if ( this.checkElementRemovable( element, true ) )
+							return true;
+					}
+			}
+			return false;
+		},
+
+		// Checks if an element, or any of its attributes, is removable by the
+		// current style definition.
+		checkElementRemovable : function( element, fullMatch )
+		{
+			if ( !element )
+				return false;
+
+			var def = this._.definition,
+				attribs;
+
+			// If the element name is the same as the style name.
+			if ( element.getName() == this.element )
+			{
+				// If no attributes are defined in the element.
+				if ( !fullMatch && !element.hasAttributes() )
+					return true;
+
+				attribs = getAttributesForComparison( def );
+
+				if ( attribs._length )
+				{
+					for ( var attName in attribs )
+					{
+						if ( attName == '_length' )
+							continue;
+
+						var elementAttr = element.getAttribute( attName );
+						if ( attribs[attName] ==
+							 ( attName == 'style' ?
+							   normalizeCssText( elementAttr, false ) : elementAttr  ) )
+						{
+							if ( !fullMatch )
+								return true;
+						}
+						else if ( fullMatch )
+								return false;
+					}
+					if( fullMatch )
+						return true;
+				}
+				else
+					return true;
+			}
+
+			// Check if the element can be somehow overriden.
+			var override = getOverrides( this )[ element.getName() ] ;
+			if ( override )
+			{
+				// If no attributes have been defined, remove the element.
+				if ( !( attribs = override.attributes ) )
+					return true;
+
+				for ( var i = 0 ; i < attribs.length ; i++ )
+				{
+					attName = attribs[i][0];
+					var actualAttrValue = element.getAttribute( attName );
+					if ( actualAttrValue )
+					{
+						var attValue = attribs[i][1];
+
+						// Remove the attribute if:
+						//    - The override definition value is null;
+						//    - The override definition value is a string that
+						//      matches the attribute value exactly.
+						//    - The override definition value is a regex that
+						//      has matches in the attribute value.
+						if ( attValue === null ||
+								( typeof attValue == 'string' && actualAttrValue == attValue ) ||
+								attValue.test( actualAttrValue ) )
+							return true;
+					}
+				}
+			}
+			return false;
+		}
+	};
+
+	// Build the cssText based on the styles definition.
+	CKEDITOR.style.getStyleText = function( styleDefinition )
+	{
+		// If we have already computed it, just return it.
+		var stylesDef = styleDefinition._ST;
+		if ( stylesDef )
+			return stylesDef;
+
+		stylesDef = styleDefinition.styles;
+
+		// Builds the StyleText.
+
+		var stylesText = ( styleDefinition.attributes && styleDefinition.attributes[ 'style' ] ) || '';
+
+		if ( stylesText.length )
+			stylesText = stylesText.replace( semicolonFixRegex, ';' );
+
+		for ( var style in stylesDef )
+			stylesText += ( style + ':' + stylesDef[ style ] ).replace( semicolonFixRegex, ';' );
+
+		// Browsers make some changes to the style when applying them. So, here
+		// we normalize it to the browser format.
+		if ( stylesText.length )
+			stylesText = normalizeCssText( stylesText );
+
+		// Return it, saving it to the next request.
+		return ( styleDefinition._ST = stylesText );
+	};
+
+	function applyInlineStyle( range )
+	{
+		var document = range.document;
+
+		if ( range.collapsed )
+		{
+			// Create the element to be inserted in the DOM.
+			var collapsedElement = getElement( this, document );
+
+			// Insert the empty element into the DOM at the range position.
+			range.insertNode( collapsedElement );
+
+			// Place the selection right inside the empty element.
+			range.moveToPosition( collapsedElement, CKEDITOR.POSITION_BEFORE_END );
+
+			return;
+		}
+
+		var elementName = this.element;
+		var def = this._.definition;
+		var isUnknownElement;
+
+		// Get the DTD definition for the element. Defaults to "span".
+		var dtd = CKEDITOR.dtd[ elementName ] || ( isUnknownElement = true, CKEDITOR.dtd.span );
+
+		// Bookmark the range so we can re-select it after processing.
+		var bookmark = range.createBookmark();
+
+		// Expand the range.
+		range.enlarge( CKEDITOR.ENLARGE_ELEMENT );
+		range.trim();
+
+		// Get the first node to be processed and the last, which concludes the
+		// processing.
+		var boundaryNodes = range.getBoundaryNodes();
+		var firstNode = boundaryNodes.startNode;
+		var lastNode = boundaryNodes.endNode.getNextSourceNode( true );
+
+		// Probably the document end is reached, we need a marker node.
+		if ( !lastNode )
+		{
+				var marker;
+				lastNode = marker = document.createText( '' );
+				lastNode.insertAfter( range.endContainer );
+		}
+		// The detection algorithm below skips the contents inside bookmark nodes, so
+		// we'll need to make sure lastNode isn't the &nbsp; inside a bookmark node.
+		var lastParent = lastNode.getParent();
+		if ( lastParent && lastParent.getAttribute( '_fck_bookmark' ) )
+			lastNode = lastParent;
+
+		if ( lastNode.equals( firstNode ) )
+		{
+			// If the last node is the same as the the first one, we must move
+			// it to the next one, otherwise the first one will not be
+			// processed.
+			lastNode = lastNode.getNextSourceNode( true );
+
+			// It may happen that there are no more nodes after it (the end of
+			// the document), so we must add something there to make our code
+			// simpler.
+			if ( !lastNode )
+			{
+				lastNode = marker = document.createText( '' );
+				lastNode.insertAfter( firstNode );
+			}
+		}
+
+		var currentNode = firstNode;
+
+		var styleRange;
+
+		// Indicates that that some useful inline content has been found, so
+		// the style should be applied.
+		var hasContents;
+
+		while ( currentNode )
+		{
+			var applyStyle = false;
+
+			if ( currentNode.equals( lastNode ) )
+			{
+				currentNode = null;
+				applyStyle = true;
+			}
+			else
+			{
+				var nodeType = currentNode.type;
+				var nodeName = nodeType == CKEDITOR.NODE_ELEMENT ? currentNode.getName() : null;
+
+				if ( nodeName && currentNode.getAttribute( '_fck_bookmark' ) )
+				{
+					currentNode = currentNode.getNextSourceNode( true );
+					continue;
+				}
+
+				// Check if the current node can be a child of the style element.
+				if ( !nodeName || ( dtd[ nodeName ] && ( currentNode.getPosition( lastNode ) | CKEDITOR.POSITION_PRECEDING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED ) == ( CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_IDENTICAL + CKEDITOR.POSITION_IS_CONTAINED ) ) )
+				{
+					var currentParent = currentNode.getParent();
+
+					// Check if the style element can be a child of the current
+					// node parent or if the element is not defined in the DTD.
+					if ( currentParent && ( ( currentParent.getDtd() || CKEDITOR.dtd.span )[ elementName ] || isUnknownElement ) )
+					{
+						// This node will be part of our range, so if it has not
+						// been started, place its start right before the node.
+						// In the case of an element node, it will be included
+						// only if it is entirely inside the range.
+						if ( !styleRange && ( !nodeName || !CKEDITOR.dtd.$removeEmpty[ nodeName ] || ( currentNode.getPosition( lastNode ) | CKEDITOR.POSITION_PRECEDING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED ) == ( CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_IDENTICAL + CKEDITOR.POSITION_IS_CONTAINED ) ) )
+						{
+							styleRange = new CKEDITOR.dom.range( document );
+							styleRange.setStartBefore( currentNode );
+						}
+
+						// Non element nodes, or empty elements can be added
+						// completely to the range.
+						if ( nodeType == CKEDITOR.NODE_TEXT || ( nodeType == CKEDITOR.NODE_ELEMENT && !currentNode.getChildCount() ) )
+						{
+							var includedNode = currentNode;
+							var parentNode;
+
+							// This node is about to be included completelly, but,
+							// if this is the last node in its parent, we must also
+							// check if the parent itself can be added completelly
+							// to the range.
+							while ( !includedNode.$.nextSibling
+								&& ( parentNode = includedNode.getParent(), dtd[ parentNode.getName() ] )
+								&& ( parentNode.getPosition( firstNode ) | CKEDITOR.POSITION_FOLLOWING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED ) == ( CKEDITOR.POSITION_FOLLOWING + CKEDITOR.POSITION_IDENTICAL + CKEDITOR.POSITION_IS_CONTAINED ) )
+							{
+								includedNode = parentNode;
+							}
+
+							styleRange.setEndAfter( includedNode );
+
+							// If the included node still is the last node in its
+							// parent, it means that the parent can't be included
+							// in this style DTD, so apply the style immediately.
+							if ( !includedNode.$.nextSibling )
+								applyStyle = true;
+
+							if ( !hasContents )
+								hasContents = ( nodeType != CKEDITOR.NODE_TEXT || (/[^\s\ufeff]/).test( currentNode.getText() ) );
+						}
+					}
+					else
+						applyStyle = true;
+				}
+				else
+					applyStyle = true;
+
+				// Get the next node to be processed.
+				currentNode = currentNode.getNextSourceNode();
+			}
+
+			// Apply the style if we have something to which apply it.
+			if ( applyStyle && hasContents && styleRange && !styleRange.collapsed )
+			{
+				// Build the style element, based on the style object definition.
+				var styleNode = getElement( this, document );
+
+				// Get the element that holds the entire range.
+				var parent = styleRange.getCommonAncestor();
+
+				// Loop through the parents, removing the redundant attributes
+				// from the element to be applied.
+				while ( styleNode && parent )
+				{
+					if ( parent.getName() == elementName )
+					{
+						for ( var attName in def.attributes )
+						{
+							if ( styleNode.getAttribute( attName ) == parent.getAttribute( attName ) )
+								styleNode.removeAttribute( attName );
+						}
+
+						for ( var styleName in def.styles )
+						{
+							if ( styleNode.getStyle( styleName ) == parent.getStyle( styleName ) )
+								styleNode.removeStyle( styleName );
+						}
+
+						if ( !styleNode.hasAttributes() )
+						{
+							styleNode = null;
+							break;
+						}
+					}
+
+					parent = parent.getParent();
+				}
+
+				if ( styleNode )
+				{
+					// Move the contents of the range to the style element.
+					styleRange.extractContents().appendTo( styleNode );
+
+					// Here we do some cleanup, removing all duplicated
+					// elements from the style element.
+					removeFromInsideElement( this, styleNode );
+
+					// Insert it into the range position (it is collapsed after
+					// extractContents.
+					styleRange.insertNode( styleNode );
+
+					// Let's merge our new style with its neighbors, if possible.
+					mergeSiblings( styleNode );
+
+					// As the style system breaks text nodes constantly, let's normalize
+					// things for performance.
+					// With IE, some paragraphs get broken when calling normalize()
+					// repeatedly. Also, for IE, we must normalize body, not documentElement.
+					// IE is also known for having a "crash effect" with normalize().
+					// We should try to normalize with IE too in some way, somewhere.
+					if ( !CKEDITOR.env.ie )
+						styleNode.$.normalize();
+				}
+
+				// Style applied, let's release the range, so it gets
+				// re-initialization in the next loop.
+				styleRange = null;
+			}
+		}
+
+		// Remove the temporary marking node.(#4111)
+		marker && marker.remove();
+		range.moveToBookmark( bookmark );
+	}
+
+	function removeInlineStyle( range )
+	{
+		/*
+		 * Make sure our range has included all "collpased" parent inline nodes so
+		 * that our operation logic can be simpler.
+		 */
+		range.enlarge( CKEDITOR.ENLARGE_ELEMENT );
+
+		var bookmark = range.createBookmark(),
+			startNode = bookmark.startNode;
+
+		if ( range.collapsed )
+		{
+
+			var startPath = new CKEDITOR.dom.elementPath( startNode.getParent() ),
+				// The topmost element in elementspatch which we should jump out of.
+				boundaryElement;
+
+
+			for ( var i = 0, element ; i < startPath.elements.length
+					&& ( element = startPath.elements[i] ) ; i++ )
+			{
+				/*
+				 * 1. If it's collaped inside text nodes, try to remove the style from the whole element.
+				 *
+				 * 2. Otherwise if it's collapsed on element boundaries, moving the selection
+				 *  outside the styles instead of removing the whole tag,
+				 *  also make sure other inner styles were well preserverd.(#3309)
+				 */
+				if ( element == startPath.block || element == startPath.blockLimit )
+					break;
+
+				if ( this.checkElementRemovable( element ) )
+				{
+					var endOfElement = range.checkBoundaryOfElement( element, CKEDITOR.END ),
+							startOfElement = !endOfElement && range.checkBoundaryOfElement( element, CKEDITOR.START );
+					if ( startOfElement || endOfElement )
+					{
+						boundaryElement = element;
+						boundaryElement.match = startOfElement ? 'start' : 'end';
+					}
+					else
+					{
+						/*
+						 * Before removing the style node, there may be a sibling to the style node
+						 * that's exactly the same to the one to be removed. To the user, it makes
+						 * no difference that they're separate entities in the DOM tree. So, merge
+						 * them before removal.
+						 */
+						mergeSiblings( element );
+						removeFromElement( this, element );
+
+					}
+				}
+			}
+
+			// Re-create the style tree after/before the boundary element,
+			// the replication start from bookmark start node to define the
+			// new range.
+			if ( boundaryElement )
+			{
+				var clonedElement = startNode;
+				for ( i = 0 ;; i++ )
+				{
+					var newElement = startPath.elements[ i ];
+					if ( newElement.equals( boundaryElement ) )
+						break;
+					// Avoid copying any matched element.
+					else if( newElement.match )
+						continue;
+					else
+						newElement = newElement.clone();
+					newElement.append( clonedElement );
+					clonedElement = newElement;
+				}
+				clonedElement[ boundaryElement.match == 'start' ?
+							'insertBefore' : 'insertAfter' ]( boundaryElement );
+			}
+		}
+		else
+		{
+			/*
+			 * Now our range isn't collapsed. Lets walk from the start node to the end
+			 * node via DFS and remove the styles one-by-one.
+			 */
+			var endNode = bookmark.endNode,
+				me = this;
+
+			/*
+			 * Find out the style ancestor that needs to be broken down at startNode
+			 * and endNode.
+			 */
+			function breakNodes()
+			{
+				var startPath = new CKEDITOR.dom.elementPath( startNode.getParent() ),
+					endPath = new CKEDITOR.dom.elementPath( endNode.getParent() ),
+					breakStart = null,
+					breakEnd = null;
+				for ( var i = 0 ; i < startPath.elements.length ; i++ )
+				{
+					var element = startPath.elements[ i ];
+
+					if ( element == startPath.block || element == startPath.blockLimit )
+						break;
+
+					if ( me.checkElementRemovable( element ) )
+						breakStart = element;
+				}
+				for ( i = 0 ; i < endPath.elements.length ; i++ )
+				{
+					element = endPath.elements[ i ];
+
+					if ( element == endPath.block || element == endPath.blockLimit )
+						break;
+
+					if ( me.checkElementRemovable( element ) )
+						breakEnd = element;
+				}
+
+				if ( breakEnd )
+					endNode.breakParent( breakEnd );
+				if ( breakStart )
+					startNode.breakParent( breakStart );
+			}
+			breakNodes();
+
+			// Now, do the DFS walk.
+			var currentNode = startNode.getNext();
+			while ( !currentNode.equals( endNode ) )
+			{
+				/*
+				 * Need to get the next node first because removeFromElement() can remove
+				 * the current node from DOM tree.
+				 */
+				var nextNode = currentNode.getNextSourceNode();
+				if ( currentNode.type == CKEDITOR.NODE_ELEMENT && this.checkElementRemovable( currentNode ) )
+				{
+					// Remove style from element or overriding element.
+					if( currentNode.getName() == this.element )
+						removeFromElement( this, currentNode );
+					else
+						removeOverrides( currentNode, getOverrides( this )[ currentNode.getName() ] );
+
+					/*
+					 * removeFromElement() may have merged the next node with something before
+					 * the startNode via mergeSiblings(). In that case, the nextNode would
+					 * contain startNode and we'll have to call breakNodes() again and also
+					 * reassign the nextNode to something after startNode.
+					 */
+					if ( nextNode.type == CKEDITOR.NODE_ELEMENT && nextNode.contains( startNode ) )
+					{
+						breakNodes();
+						nextNode = startNode.getNext();
+					}
+				}
+				currentNode = nextNode;
+			}
+		}
+
+		range.moveToBookmark( bookmark );
+}
+
+	function applyBlockStyle( range )
+	{
+		// Serializible bookmarks is needed here since
+		// elements may be merged.
+		var bookmark = range.createBookmark( true );
+
+		var iterator = range.createIterator();
+		iterator.enforceRealBlocks = true;
+
+		var block;
+		var doc = range.document;
+		var previousPreBlock;
+
+		while( ( block = iterator.getNextParagraph() ) )		// Only one =
+		{
+			var newBlock = getElement( this, doc );
+			replaceBlock( block, newBlock );
+		}
+
+		range.moveToBookmark( bookmark );
+	}
+
+	// Replace the original block with new one, with special treatment
+	// for <pre> blocks to make sure content format is well preserved, and merging/splitting adjacent
+	// when necessary.(#3188)
+	function replaceBlock( block, newBlock )
+	{
+		var newBlockIsPre	= newBlock.is( 'pre' );
+		var blockIsPre		= block.is( 'pre' );
+
+		var isToPre	= newBlockIsPre && !blockIsPre;
+		var isFromPre	= !newBlockIsPre && blockIsPre;
+
+		if ( isToPre )
+			newBlock = toPre( block, newBlock );
+		else if ( isFromPre )
+			// Split big <pre> into pieces before start to convert.
+			newBlock = fromPres( splitIntoPres( block ), newBlock );
+		else
+			block.moveChildren( newBlock );
+
+		newBlock.replace( block );
+
+		if ( newBlockIsPre )
+		{
+			// Merge previous <pre> blocks.
+			mergePre( newBlock );
+		}
+	}
+
+	/**
+	 * Merge a <pre> block with a previous sibling if available.
+	 */
+	function mergePre( preBlock )
+	{
+		var previousBlock;
+		if ( !( ( previousBlock = preBlock.getPreviousSourceNode( true, CKEDITOR.NODE_ELEMENT ) )
+				 && previousBlock.is
+				 && previousBlock.is( 'pre') ) )
+			return;
+
+		// Merge the previous <pre> block contents into the current <pre>
+		// block.
+		//
+		// Another thing to be careful here is that currentBlock might contain
+		// a '\n' at the beginning, and previousBlock might contain a '\n'
+		// towards the end. These new lines are not normally displayed but they
+		// become visible after merging.
+		var mergedHtml = replace( previousBlock.getHtml(), /\n$/, '' ) + '\n\n' +
+				replace( preBlock.getHtml(), /^\n/, '' ) ;
+
+		// Krugle: IE normalizes innerHTML from <pre>, breaking whitespaces.
+		if ( CKEDITOR.env.ie )
+			preBlock.$.outerHTML = '<pre>' + mergedHtml + '</pre>';
+		else
+			preBlock.setHtml( mergedHtml );
+
+		previousBlock.remove();
+	}
+
+	/**
+	 * Split into multiple <pre> blocks separated by double line-break.
+	 * @param preBlock
+	 */
+	function splitIntoPres( preBlock )
+	{
+		// Exclude the ones at header OR at tail,
+		// and ignore bookmark content between them.
+		var duoBrRegex = /(\S\s*)\n(?:\s|(<span[^>]+_fck_bookmark.*?\/span>))*\n(?!$)/gi,
+			blockName = preBlock.getName(),
+			splitedHtml = replace( preBlock.getOuterHtml(),
+				duoBrRegex,
+				function( match, charBefore, bookmark )
+				{
+				  return charBefore + '</pre>' + bookmark + '<pre>';
+				} );
+
+		var pres = [];
+		splitedHtml.replace( /<pre>([\s\S]*?)<\/pre>/gi, function( match, preContent ){
+			pres.push( preContent );
+		} );
+		return pres;
+	}
+
+	// Wrapper function of String::replace without considering of head/tail bookmarks nodes.
+	function replace( str, regexp, replacement )
+	{
+		var headBookmark = '',
+			tailBookmark = '';
+
+		str = str.replace( /(^<span[^>]+_fck_bookmark.*?\/span>)|(<span[^>]+_fck_bookmark.*?\/span>$)/gi,
+			function( str, m1, m2 ){
+					m1 && ( headBookmark = m1 );
+					m2 && ( tailBookmark = m2 );
+				return '';
+			} );
+		return headBookmark + str.replace( regexp, replacement ) + tailBookmark;
+	}
+	/**
+	 * Converting a list of <pre> into blocks with format well preserved.
+	 */
+	function fromPres( preHtmls, newBlock )
+	{
+		var docFrag = new CKEDITOR.dom.documentFragment( newBlock.getDocument() );
+		for ( var i = 0 ; i < preHtmls.length ; i++ )
+		{
+			var blockHtml = preHtmls[ i ];
+
+			// 1. Trim the first and last line-breaks immediately after and before <pre>,
+			// they're not visible.
+			 blockHtml =  blockHtml.replace( /(\r\n|\r)/g, '\n' ) ;
+			 blockHtml = replace(  blockHtml, /^[ \t]*\n/, '' ) ;
+			 blockHtml = replace(  blockHtml, /\n$/, '' ) ;
+			// 2. Convert spaces or tabs at the beginning or at the end to &nbsp;
+			 blockHtml = replace(  blockHtml, /^[ \t]+|[ \t]+$/g, function( match, offset, s )
+					{
+						if ( match.length == 1 )	// one space, preserve it
+							return '&nbsp;' ;
+						else if ( !offset )		// beginning of block
+							return CKEDITOR.tools.repeat( '&nbsp;', match.length - 1 ) + ' ';
+						else				// end of block
+							return ' ' + CKEDITOR.tools.repeat( '&nbsp;', match.length - 1 );
+					} ) ;
+
+			// 3. Convert \n to <BR>.
+			// 4. Convert contiguous (i.e. non-singular) spaces or tabs to &nbsp;
+			 blockHtml =  blockHtml.replace( /\n/g, '<br>' ) ;
+			 blockHtml =  blockHtml.replace( /[ \t]{2,}/g,
+					function ( match )
+					{
+						return CKEDITOR.tools.repeat( '&nbsp;', match.length - 1 ) + ' ' ;
+					} ) ;
+
+			var newBlockClone = newBlock.clone();
+			newBlockClone.setHtml(  blockHtml );
+			docFrag.append( newBlockClone );
+		}
+		return docFrag;
+	}
+
+	/**
+	 * Converting from a non-PRE block to a PRE block in formatting operations.
+	 */
+	function toPre( block, newBlock )
+	{
+		// First trim the block content.
+		var preHtml = block.getHtml();
+
+		// 1. Trim head/tail spaces, they're not visible.
+		preHtml = replace( preHtml, /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g, '' );
+		// 2. Delete ANSI whitespaces immediately before and after <BR> because
+		//    they are not visible.
+		preHtml = preHtml.replace( /[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi, '$1' );
+		// 3. Compress other ANSI whitespaces since they're only visible as one
+		//    single space previously.
+		// 4. Convert &nbsp; to spaces since &nbsp; is no longer needed in <PRE>.
+		preHtml = preHtml.replace( /([ \t\n\r]+|&nbsp;)/g, ' ' );
+		// 5. Convert any <BR /> to \n. This must not be done earlier because
+		//    the \n would then get compressed.
+		preHtml = preHtml.replace( /<br\b[^>]*>/gi, '\n' );
+
+		// Krugle: IE normalizes innerHTML to <pre>, breaking whitespaces.
+		if ( CKEDITOR.env.ie )
+		{
+			var temp = block.getDocument().createElement( 'div' );
+			temp.append( newBlock );
+			newBlock.$.outerHTML =  '<pre>' + preHtml + '</pre>';
+			newBlock = temp.getFirst().remove();
+		}
+		else
+			newBlock.setHtml( preHtml );
+
+		return newBlock;
+	}
+
+	// Removes a style from an element itself, don't care about its subtree.
+	function removeFromElement( style, element )
+	{
+		var def = style._.definition,
+			attributes = def.attributes,
+			styles = def.styles,
+			overrides = getOverrides( style );
+
+		function removeAttrs()
+		{
+			for ( var attName in attributes )
+			{
+				// The 'class' element value must match (#1318).
+				if ( attName == 'class' && element.getAttribute( attName ) != attributes[ attName ] )
+					continue;
+				element.removeAttribute( attName );
+			}
+		}
+
+		// Remove definition attributes/style from the elemnt.
+		removeAttrs();
+		for ( var styleName in styles )
+			element.removeStyle( styleName );
+
+		// Now remove override styles on the element.
+		attributes = overrides[ element.getName() ];
+		if( attributes )
+			removeAttrs();
+		removeNoAttribsElement( element );
+	}
+
+	// Removes a style from inside an element.
+	function removeFromInsideElement( style, element )
+	{
+		var def = style._.definition,
+			attribs = def.attributes,
+			styles = def.styles,
+			overrides = getOverrides( style );
+
+		var innerElements = element.getElementsByTag( style.element );
+
+		for ( var i = innerElements.count(); --i >= 0 ; )
+			removeFromElement( style,  innerElements.getItem( i ) );
+
+		// Now remove any other element with different name that is
+		// defined to be overriden.
+		for ( var overrideElement in overrides )
+		{
+			if ( overrideElement != style.element )
+			{
+				innerElements = element.getElementsByTag( overrideElement ) ;
+				for ( i = innerElements.count() - 1 ; i >= 0 ; i-- )
+				{
+					var innerElement = innerElements.getItem( i );
+					removeOverrides( innerElement, overrides[ overrideElement ] ) ;
+				}
+			}
+		}
+
+	}
+
+	/**
+	 *  Remove overriding styles/attributes from the specific element.
+	 *  Note: Remove the element if no attributes remain.
+	 * @param {Object} element
+	 * @param {Object} overrides
+	 */
+	function removeOverrides( element, overrides )
+	{
+		var attributes = overrides && overrides.attributes ;
+
+		if ( attributes )
+		{
+			for ( var i = 0 ; i < attributes.length ; i++ )
+			{
+				var attName = attributes[i][0], actualAttrValue ;
+
+				if ( ( actualAttrValue = element.getAttribute( attName ) ) )
+				{
+					var attValue = attributes[i][1] ;
+
+					// Remove the attribute if:
+					//    - The override definition value is null ;
+					//    - The override definition valie is a string that
+					//      matches the attribute value exactly.
+					//    - The override definition value is a regex that
+					//      has matches in the attribute value.
+					if ( attValue === null ||
+							( attValue.test && attValue.test( actualAttrValue ) ) ||
+							( typeof attValue == 'string' && actualAttrValue == attValue ) )
+						element.removeAttribute( attName ) ;
+				}
+			}
+		}
+
+		removeNoAttribsElement( element );
+	}
+
+	// If the element has no more attributes, remove it.
+	function removeNoAttribsElement( element )
+	{
+		// If no more attributes remained in the element, remove it,
+		// leaving its children.
+		if ( !element.hasAttributes() )
+		{
+			// Removing elements may open points where merging is possible,
+			// so let's cache the first and last nodes for later checking.
+			var firstChild	= element.getFirst();
+			var lastChild	= element.getLast();
+
+			element.remove( true );
+
+			if ( firstChild )
+			{
+				// Check the cached nodes for merging.
+				mergeSiblings( firstChild );
+
+				if ( lastChild && !firstChild.equals( lastChild ) )
+					mergeSiblings( lastChild );
+			}
+		}
+	}
+
+	function mergeSiblings( element )
+	{
+		if ( !element || element.type != CKEDITOR.NODE_ELEMENT || !CKEDITOR.dtd.$removeEmpty[ element.getName() ] )
+			return;
+
+		mergeElements( element, element.getNext(), true );
+		mergeElements( element, element.getPrevious() );
+	}
+
+	function mergeElements( element, sibling, isNext )
+	{
+		if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT )
+		{
+			var hasBookmark = sibling.getAttribute( '_fck_bookmark' );
+
+			if ( hasBookmark )
+				sibling = isNext ? sibling.getNext() : sibling.getPrevious();
+
+			if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT && element.isIdentical( sibling ) )
+			{
+				// Save the last child to be checked too, to merge things like
+				// <b><i></i></b><b><i></i></b> => <b><i></i></b>
+				var innerSibling = isNext ? element.getLast() : element.getFirst();
+
+				if ( hasBookmark )
+					( isNext ? sibling.getPrevious() : sibling.getNext() ).move( element, !isNext );
+
+				sibling.moveChildren( element, !isNext );
+				sibling.remove();
+
+				// Now check the last inner child (see two comments above).
+				if ( innerSibling )
+					mergeSiblings( innerSibling );
+			}
+		}
+	}
+
+	function getElement( style, targetDocument )
+	{
+		var el;
+
+		var def = style._.definition;
+
+		var elementName = style.element;
+
+		// The "*" element name will always be a span for this function.
+		if ( elementName == '*' )
+			elementName = 'span';
+
+		// Create the element.
+		el = new CKEDITOR.dom.element( elementName, targetDocument );
+
+		return setupElement( el, style );
+	}
+
+	function setupElement( el, style )
+	{
+		var def = style._.definition;
+		var attributes = def.attributes;
+		var styles = CKEDITOR.style.getStyleText( def );
+
+		// Assign all defined attributes.
+		if ( attributes )
+		{
+			for ( var att in attributes )
+			{
+				el.setAttribute( att, attributes[ att ] );
+			}
+		}
+
+		// Assign all defined styles.
+		if ( styles )
+			el.setAttribute( 'style', styles );
+
+		return el;
+	}
+
+	var varRegex = /#\((.+?)\)/g;
+	function replaceVariables( list, variablesValues )
+	{
+		for ( var item in list )
+		{
+			list[ item ] = list[ item ].replace( varRegex, function( match, varName )
+				{
+					return variablesValues[ varName ];
+				});
+		}
+	}
+
+
+	// Returns an object that can be used for style matching comparison.
+	// Attributes names and values are all lowercased, and the styles get
+	// merged with the style attribute.
+	function getAttributesForComparison( styleDefinition )
+	{
+		// If we have already computed it, just return it.
+		var attribs = styleDefinition._AC;
+		if ( attribs )
+			return attribs;
+
+		attribs = {};
+
+		var length = 0;
+
+		// Loop through all defined attributes.
+		var styleAttribs = styleDefinition.attributes;
+		if ( styleAttribs )
+		{
+			for ( var styleAtt in styleAttribs )
+			{
+				length++;
+				attribs[ styleAtt ] = styleAttribs[ styleAtt ];
+			}
+		}
+
+		// Includes the style definitions.
+		var styleText = CKEDITOR.style.getStyleText( styleDefinition );
+		if ( styleText )
+		{
+			if ( !attribs[ 'style' ] )
+				length++;
+			attribs[ 'style' ] = styleText;
+		}
+
+		// Appends the "length" information to the object.
+		attribs._length = length;
+
+		// Return it, saving it to the next request.
+		return ( styleDefinition._AC = attribs );
+	}
+
+	/**
+	 * Get the the collection used to compare the elements and attributes,
+	 * defined in this style overrides, with other element. All information in
+	 * it is lowercased.
+	 * @param {CKEDITOR.style} style
+	 */
+	function getOverrides( style )
+	{
+		if( style._.overrides )
+			return style._.overrides;
+
+		var overrides = ( style._.overrides = {} ),
+			definition = style._.definition.overrides;
+
+		if ( definition )
+		{
+			// The override description can be a string, object or array.
+			// Internally, well handle arrays only, so transform it if needed.
+			if ( !CKEDITOR.tools.isArray( definition ) )
+				definition = [ definition ];
+
+			// Loop through all override definitions.
+			for ( var i = 0 ; i < definition.length ; i++ )
+			{
+				var override = definition[i];
+				var elementName;
+				var overrideEl;
+				var attrs;
+
+				// If can be a string with the element name.
+				if ( typeof override == 'string' )
+					elementName = override.toLowerCase();
+				// Or an object.
+				else
+				{
+					elementName = override.element ? override.element.toLowerCase() : style.element;
+					attrs = override.attributes;
+				}
+
+				// We can have more than one override definition for the same
+				// element name, so we attempt to simply append information to
+				// it if it already exists.
+				overrideEl = overrides[ elementName ] || ( overrides[ elementName ] = {} );
+
+				if ( attrs )
+				{
+					// The returning attributes list is an array, because we
+					// could have different override definitions for the same
+					// attribute name.
+					var overrideAttrs = ( overrideEl.attributes = overrideEl.attributes || new Array() );
+					for ( var attName in attrs )
+					{
+						// Each item in the attributes array is also an array,
+						// where [0] is the attribute name and [1] is the
+						// override value.
+						overrideAttrs.push( [ attName.toLowerCase(), attrs[ attName ] ] );
+					}
+				}
+			}
+		}
+
+		return overrides;
+	}
+
+	function normalizeCssText( unparsedCssText, nativeNormalize )
+	{
+		var styleText;
+		if ( nativeNormalize !== false )
+		{
+			// Injects the style in a temporary span object, so the browser parses it,
+			// retrieving its final format.
+			var temp = new CKEDITOR.dom.element( 'span' );
+			temp.setAttribute( 'style', unparsedCssText );
+			styleText = temp.getAttribute( 'style' );
+		}
+		else
+			styleText = unparsedCssText;
+
+		// Shrinking white-spaces around colon and semi-colon (#4147).
+		// Compensate tail semi-colon.
+		return styleText.replace( /\s*([;:])\s*/, '$1' )
+							 .replace( /([^\s;])$/, '$1;')
+							 .replace( /,\s+/g, ',' ) // Trimming spaces after comma (e.g. font-family name)(#4107).
+							 .toLowerCase();
+	}
+
+	function applyStyle( document, remove )
+	{
+		// Get all ranges from the selection.
+		var selection = document.getSelection();
+		var ranges = selection.getRanges();
+		var func = remove ? this.removeFromRange : this.applyToRange;
+
+		// Apply the style to the ranges.
+		for ( var i = 0 ; i < ranges.length ; i++ )
+			func.call( this, ranges[ i ] );
+
+		// Select the ranges again.
+		selection.selectRanges( ranges );
+	}
+})();
+
+CKEDITOR.styleCommand = function( style )
+{
+	this.style = style;
+};
+
+CKEDITOR.styleCommand.prototype.exec = function( editor )
+{
+	editor.focus();
+
+	var doc = editor.document;
+
+	if ( doc )
+	{
+		if ( this.state == CKEDITOR.TRISTATE_OFF )
+			this.style.apply( doc );
+		else if ( this.state == CKEDITOR.TRISTATE_ON )
+			this.style.remove( doc );
+	}
+
+	return !!doc;
+};
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/listblock/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/listblock/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/listblock/plugin.js	(revision 2000)
@@ -0,0 +1,231 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'listblock',
+{
+	requires : [ 'panel' ],
+
+	onLoad : function()
+	{
+		CKEDITOR.ui.panel.prototype.addListBlock = function( name, multiSelect )
+		{
+			return this.addBlock( name, new CKEDITOR.ui.listBlock( this.getHolderElement(), multiSelect ) );
+		};
+
+		CKEDITOR.ui.listBlock = CKEDITOR.tools.createClass(
+			{
+				base : CKEDITOR.ui.panel.block,
+
+				$ : function( blockHolder, multiSelect )
+				{
+					// Call the base contructor.
+					this.base( blockHolder );
+
+					this.multiSelect = !!multiSelect;
+
+					var keys = this.keys;
+					keys[ 40 ]	= 'next';					// ARROW-DOWN
+					keys[ 9 ]	= 'next';					// TAB
+					keys[ 38 ]	= 'prev';					// ARROW-UP
+					keys[ CKEDITOR.SHIFT + 9 ]	= 'prev';	// SHIFT + TAB
+					keys[ 32 ]	= 'click';					// SPACE
+
+					this._.pendingHtml = [];
+					this._.items = {};
+					this._.groups = {};
+				},
+
+				_ :
+				{
+					close : function()
+					{
+						if ( this._.started )
+						{
+							this._.pendingHtml.push( '</ul>' );
+							delete this._.started;
+						}
+					},
+
+					getClick : function()
+					{
+						if ( !this._.click )
+						{
+							this._.click = CKEDITOR.tools.addFunction( function( value )
+								{
+									var marked = true;
+
+									if ( this.multiSelect )
+										marked = this.toggle( value );
+									else
+										this.mark( value );
+
+									if ( this.onClick )
+										this.onClick( value, marked );
+								},
+								this );
+						}
+						return this._.click;
+					}
+				},
+
+				proto :
+				{
+					add : function( value, html, title )
+					{
+						var pendingHtml = this._.pendingHtml,
+							id = 'cke_' + CKEDITOR.tools.getNextNumber();
+
+						if ( !this._.started )
+						{
+							pendingHtml.push( '<ul class=cke_panel_list>' );
+							this._.started = 1;
+						}
+
+						this._.items[ value ] = id;
+
+						pendingHtml.push(
+							'<li id=', id, ' class=cke_panel_listItem>' +
+								'<a _cke_focus=1 hidefocus=true' +
+									' title="', title || value, '"' +
+									' href="javascript:void(\'', value, '\')"' +
+									' onclick="CKEDITOR.tools.callFunction(', this._.getClick(), ',\'', value, '\'); return false;">',
+									html || value,
+								'</a>' +
+							'</li>' );
+					},
+
+					startGroup : function( title )
+					{
+						this._.close();
+
+						var id = 'cke_' + CKEDITOR.tools.getNextNumber();
+
+						this._.groups[ title ] = id;
+
+						this._.pendingHtml.push( '<h1 id=', id, ' class=cke_panel_grouptitle>', title, '</h1>' );
+					},
+
+					commit : function()
+					{
+						this._.close();
+						this.element.appendHtml( this._.pendingHtml.join( '' ) );
+						this._.pendingHtml = [];
+					},
+
+					toggle : function( value )
+					{
+						var isMarked = this.isMarked( value );
+
+						if ( isMarked )
+							this.unmark( value );
+						else
+							this.mark( value );
+
+						return !isMarked;
+					},
+
+					hideGroup : function( groupTitle )
+					{
+						var group = this.element.getDocument().getById( this._.groups[ groupTitle ] ),
+							list = group && group.getNext();
+
+						if ( group )
+						{
+							group.setStyle( 'display', 'none' );
+
+							if ( list && list.getName() == 'ul' )
+								list.setStyle( 'display', 'none' );
+						}
+					},
+
+					hideItem : function( value )
+					{
+						this.element.getDocument().getById( this._.items[ value ] ).setStyle( 'display', 'none' );
+					},
+
+					showAll : function()
+					{
+						var items = this._.items,
+							groups = this._.groups,
+							doc = this.element.getDocument();
+
+						for ( var value in items )
+						{
+							doc.getById( items[ value ] ).setStyle( 'display', '' );
+						}
+
+						for ( var title in groups )
+						{
+							var group = doc.getById( groups[ title ] ),
+								list = group.getNext();
+
+							group.setStyle( 'display', '' );
+
+							if ( list && list.getName() == 'ul' )
+								list.setStyle( 'display', '' );
+						}
+					},
+
+					mark : function( value )
+					{
+						if ( !this.multiSelect )
+							this.unmarkAll();
+
+						this.element.getDocument().getById( this._.items[ value ] ).addClass( 'cke_selected' );
+					},
+
+					unmark : function( value )
+					{
+						this.element.getDocument().getById( this._.items[ value ] ).removeClass( 'cke_selected' );
+					},
+
+					unmarkAll : function()
+					{
+						var items = this._.items,
+							doc = this.element.getDocument();
+
+						for ( var value in items )
+						{
+							doc.getById( items[ value ] ).removeClass( 'cke_selected' );
+						}
+					},
+
+					isMarked : function( value )
+					{
+						return this.element.getDocument().getById( this._.items[ value ] ).hasClass( 'cke_selected' );
+					},
+
+					focus : function( value )
+					{
+						this._.focusIndex = -1;
+
+						if ( value )
+						{
+							var selected = this.element.getDocument().getById( this._.items[ value ] ).getFirst();
+
+							var links = this.element.getElementsByTag( 'a' ),
+								link,
+								i = -1;
+
+							while( ( link = links.getItem( ++i ) ) )
+							{
+								if ( link.equals( selected ) )
+								{
+									this._.focusIndex = i;
+									break;
+								}
+							}
+
+							setTimeout( function()
+								{
+									selected.focus();
+								},
+								0 );
+						}
+					}
+				}
+			});
+	}
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/htmldataprocessor/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/htmldataprocessor/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/htmldataprocessor/plugin.js	(revision 2000)
@@ -0,0 +1,380 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	// Regex to scan for &nbsp; at the end of blocks, which are actually placeholders.
+	// Safari transforms the &nbsp; to \xa0. (#4172)
+	var tailNbspRegex = /^[\t\r\n ]*(?:&nbsp;|\xa0)$/;
+
+	var protectedSourceMarker = '{cke_protected}';
+
+
+	// Return the last non-space child node of the block (#4344).
+	function lastNoneSpaceChild( block )
+	{
+		var lastIndex = block.children.length,
+			last = block.children[ lastIndex - 1 ];
+		while(  last && last.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.trim( last.value ) )
+			last = block.children[ --lastIndex ];
+		return last;
+	}
+
+	function trimFillers( block, fromSource )
+	{
+		// If the current node is a block, and if we're converting from source or
+		// we're not in IE then search for and remove any tailing BR node.
+		//
+		// Also, any &nbsp; at the end of blocks are fillers, remove them as well.
+		// (#2886)
+		var children = block.children, lastChild = lastNoneSpaceChild( block );
+		if ( lastChild )
+		{
+			if ( ( fromSource || !CKEDITOR.env.ie ) && lastChild.type == CKEDITOR.NODE_ELEMENT && lastChild.name == 'br' )
+				children.pop();
+			if ( lastChild.type == CKEDITOR.NODE_TEXT && tailNbspRegex.test( lastChild.value ) )
+				children.pop();
+		}
+	}
+
+	function blockNeedsExtension( block )
+	{
+		var lastChild = lastNoneSpaceChild( block );
+		return !lastChild || lastChild.type == CKEDITOR.NODE_ELEMENT && lastChild.name == 'br';
+	}
+
+	function extendBlockForDisplay( block )
+	{
+		trimFillers( block, true );
+
+		if ( blockNeedsExtension( block ) )
+		{
+			if ( CKEDITOR.env.ie )
+				block.add( new CKEDITOR.htmlParser.text( '\xa0' ) );
+			else
+				block.add( new CKEDITOR.htmlParser.element( 'br', {} ) );
+		}
+	}
+
+	function extendBlockForOutput( block )
+	{
+		trimFillers( block );
+
+		if ( blockNeedsExtension( block ) )
+			block.add( new CKEDITOR.htmlParser.text( '\xa0' ) );
+	}
+
+	var dtd = CKEDITOR.dtd;
+
+	// Find out the list of block-like tags that can contain <br>.
+	var blockLikeTags = CKEDITOR.tools.extend( {}, dtd.$block, dtd.$listItem, dtd.$tableContent );
+	for ( var i in blockLikeTags )
+	{
+		if ( ! ( 'br' in dtd[i] ) )
+			delete blockLikeTags[i];
+	}
+	// We just avoid filler in <pre> right now.
+	// TODO: Support filler for <pre>, line break is also occupy line height.
+	delete blockLikeTags.pre;
+	var defaultDataFilterRules =
+	{
+		attributeNames :
+		[
+			// Event attributes (onXYZ) must not be directly set. They can become
+			// active in the editing area (IE|WebKit).
+			[ ( /^on/ ), '_cke_pa_on' ]
+		]
+	};
+
+	var defaultDataBlockFilterRules = { elements : {} };
+
+	for ( i in blockLikeTags )
+		defaultDataBlockFilterRules.elements[ i ] = extendBlockForDisplay;
+
+	var defaultHtmlFilterRules =
+		{
+			elementNames :
+			[
+				// Remove the "cke:" namespace prefix.
+				[ ( /^cke:/ ), '' ],
+
+				// Ignore <?xml:namespace> tags.
+				[ ( /^\?xml:namespace$/ ), '' ]
+			],
+
+			attributeNames :
+			[
+				// Attributes saved for changes and protected attributes.
+				[ ( /^_cke_(saved|pa)_/ ), '' ],
+
+				// All "_cke" attributes are to be ignored.
+				[ ( /^_cke.*/ ), '' ]
+			],
+
+			elements :
+			{
+				$ : function( element )
+				{
+					// Remove duplicated attributes - #3789.
+					var attribs = element.attributes;
+
+					if ( attribs )
+					{
+						var attributeNames = [ 'name', 'href', 'src' ],
+							savedAttributeName;
+						for ( var i = 0 ; i < attributeNames.length ; i++ )
+						{
+							savedAttributeName = '_cke_saved_' + attributeNames[ i ];
+							savedAttributeName in attribs && ( delete attribs[ attributeNames[ i ] ] );
+						}
+					}
+				},
+
+				embed : function( element )
+				{
+					var parent = element.parent;
+
+					// If the <embed> is child of a <object>, copy the width
+					// and height attributes from it.
+					if ( parent && parent.name == 'object' )
+					{
+						var parentWidth = parent.attributes.width,
+							parentHeight = parent.attributes.height;
+						parentWidth && ( element.attributes.width = parentWidth );
+						parentHeight && ( element.attributes.height = parentHeight );
+					}
+				},
+				// Restore param elements into self-closing.
+				param : function( param )
+				{
+					param.children = [];
+					param.isEmpty = true;
+					return param;
+				},
+
+				// Remove empty link but not empty anchor.(#3829)
+				a : function( element )
+				{
+					if ( !( element.children.length ||
+							element.attributes.name ||
+							element.attributes._cke_saved_name ) )
+					{
+						return false;
+					}
+				}
+			},
+
+			attributes :
+			{
+				'class' : function( value, element )
+				{
+					// Remove all class names starting with "cke_".
+					return CKEDITOR.tools.ltrim( value.replace( /(?:^|\s+)cke_[^\s]*/g, '' ) ) || false;
+				}
+			},
+
+			comment : function( contents )
+			{
+				if ( contents.substr( 0, protectedSourceMarker.length ) == protectedSourceMarker )
+					return new CKEDITOR.htmlParser.cdata( decodeURIComponent( contents.substr( protectedSourceMarker.length ) ) );
+
+				return contents;
+			}
+		};
+
+	var defaultHtmlBlockFilterRules = { elements : {} };
+
+	for ( i in blockLikeTags )
+		defaultHtmlBlockFilterRules.elements[ i ] = extendBlockForOutput;
+
+	if ( CKEDITOR.env.ie )
+	{
+		// IE outputs style attribute in capital letters. We should convert
+		// them back to lower case.
+		defaultHtmlFilterRules.attributes.style = function( value, element )
+		{
+			return value.toLowerCase();
+		};
+	}
+
+	var protectAttributeRegex = /<(?:a|area|img|input).*?\s((?:href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))/gi;
+
+	function protectAttributes( html )
+	{
+		return html.replace( protectAttributeRegex, '$& _cke_saved_$1' );
+	}
+
+	var protectStyleTagsRegex = /<(style)(?=[ >])[^>]*>[^<]*<\/\1>/gi;
+	var encodedTagsRegex = /<cke:encoded>([^<]*)<\/cke:encoded>/gi;
+	var protectElementNamesRegex = /(<\/?)((?:object|embed|param).*?>)/gi;
+	var protectSelfClosingRegex = /<cke:param(.*?)\/>/gi;
+
+	function protectStyleTagsMatch( match )
+	{
+		return '<cke:encoded>' + encodeURIComponent( match ) + '</cke:encoded>';
+	}
+
+	function protectStyleTags( html )
+	{
+		return html.replace( protectStyleTagsRegex, protectStyleTagsMatch );
+	}
+	function protectElementsNames( html )
+	{
+		return html.replace( protectElementNamesRegex, '$1cke:$2');
+	}
+	function protectSelfClosingElements( html )
+	{
+		return html.replace( protectSelfClosingRegex, '<cke:param$1></cke:param>' );
+	}
+
+	function unprotectEncodedTagsMatch( match, encoded )
+	{
+		return decodeURIComponent( encoded );
+	}
+
+	function unprotectEncodedTags( html )
+	{
+		return html.replace( encodedTagsRegex, unprotectEncodedTagsMatch );
+	}
+
+	function protectSource( data, protectRegexes )
+	{
+		var protectedHtml = [],
+			tempRegex = /<\!--\{cke_temp\}(\d*?)-->/g;
+		var regexes =
+			[
+				// First of any other protection, we must protect all comments
+				// to avoid loosing them (of course, IE related).
+				(/<!--[\s\S]*?-->/g),
+
+				// Script tags will also be forced to be protected, otherwise
+				// IE will execute them.
+				/<script[\s\S]*?<\/script>/gi,
+
+				// <noscript> tags (get lost in IE and messed up in FF).
+				/<noscript[\s\S]*?<\/noscript>/gi
+			]
+			.concat( protectRegexes );
+
+		for ( var i = 0 ; i < regexes.length ; i++ )
+		{
+			data = data.replace( regexes[i], function( match )
+				{
+					match = match.replace( tempRegex, 		// There could be protected source inside another one. (#3869).
+						function( $, id )
+						{
+							return protectedHtml[ id ];
+						}
+					);
+					return  '<!--{cke_temp}' + ( protectedHtml.push( match ) - 1 ) + '-->';
+				});
+		}
+		data = data.replace( tempRegex,	function( $, id )
+			{
+				return '<!--' + protectedSourceMarker +
+						encodeURIComponent( protectedHtml[ id ] ).replace( /--/g, '%2D%2D' ) +
+						'-->';
+			}
+		);
+		return data;
+	}
+
+	CKEDITOR.plugins.add( 'htmldataprocessor',
+	{
+		requires : [ 'htmlwriter' ],
+
+		init : function( editor )
+		{
+			var dataProcessor = editor.dataProcessor = new CKEDITOR.htmlDataProcessor( editor );
+
+			dataProcessor.writer.forceSimpleAmpersand = editor.config.forceSimpleAmpersand;
+
+			dataProcessor.dataFilter.addRules( defaultDataFilterRules );
+			dataProcessor.dataFilter.addRules( defaultDataBlockFilterRules );
+			dataProcessor.htmlFilter.addRules( defaultHtmlFilterRules );
+			dataProcessor.htmlFilter.addRules( defaultHtmlBlockFilterRules );
+		}
+	});
+
+	CKEDITOR.htmlDataProcessor = function( editor )
+	{
+		this.editor = editor;
+
+		this.writer = new CKEDITOR.htmlWriter();
+		this.dataFilter = new CKEDITOR.htmlParser.filter();
+		this.htmlFilter = new CKEDITOR.htmlParser.filter();
+	};
+
+	CKEDITOR.htmlDataProcessor.prototype =
+	{
+		toHtml : function( data, fixForBody )
+		{
+			// The source data is already HTML, but we need to clean
+			// it up and apply the filter.
+
+			data = protectSource( data, this.editor.config.protectedSource );
+
+			// Before anything, we must protect the URL attributes as the
+			// browser may changing them when setting the innerHTML later in
+			// the code.
+			data = protectAttributes( data );
+
+			// IE remvoes style tags from innerHTML. (#3710).
+			if ( CKEDITOR.env.ie )
+				data = protectStyleTags( data );
+
+			// Certain elements has problem to go through DOM operation, protect
+			// them by prefixing 'cke' namespace.(#3591)
+			data = protectElementsNames( data );
+
+			// All none-IE browsers ignore self-closed custom elements,
+			// protecting them into open-close.(#3591)
+			data = protectSelfClosingElements( data );
+
+			// Call the browser to help us fixing a possibly invalid HTML
+			// structure.
+			var div = document.createElement( 'div' );
+			// Add fake character to workaround IE comments bug. (#3801)
+			div.innerHTML = 'a' + data;
+			data = div.innerHTML.substr( 1 );
+
+			if ( CKEDITOR.env.ie )
+				data = unprotectEncodedTags( data );
+
+			// Now use our parser to make further fixes to the structure, as
+			// well as apply the filter.
+			var fragment = CKEDITOR.htmlParser.fragment.fromHtml( data, fixForBody ),
+				writer = new CKEDITOR.htmlParser.basicWriter();
+
+			fragment.writeHtml( writer, this.dataFilter );
+
+			return writer.getHtml( true );
+		},
+
+		toDataFormat : function( html, fixForBody )
+		{
+			var writer = this.writer,
+				fragment = CKEDITOR.htmlParser.fragment.fromHtml( html, fixForBody );
+
+			writer.reset();
+
+			fragment.writeHtml( writer, this.htmlFilter );
+
+			return writer.getHtml( true );
+		}
+	};
+})();
+
+/**
+ * Whether to force using "&" instead of "&amp;amp;" in elements attributes
+ * values. It's not recommended to change this setting for compliance with the
+ * W3C XHTML 1.0 standards
+ * (<a href="http://www.w3.org/TR/xhtml1/#C_12">C.12, XHTML 1.0</a>).
+ * @type Boolean
+ * @default false
+ * @example
+ * config.forceSimpleAmpersand = false;
+ */
+CKEDITOR.config.forceSimpleAmpersand = false;
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/colordialog/dialogs/colordialog.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/colordialog/dialogs/colordialog.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/colordialog/dialogs/colordialog.js	(revision 2000)
@@ -0,0 +1,191 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'colordialog', function( editor )
+	{
+		// Define some shorthands.
+		var $el = CKEDITOR.dom.element,
+			$doc = CKEDITOR.document,
+			$tools = CKEDITOR.tools,
+			lang = editor.lang.colordialog;
+
+		// Reference the dialog.
+		var dialog;
+
+		function spacer()
+		{
+			return {
+				type : 'html',
+				html : '&nbsp;'
+			};
+		}
+
+		var table = new $el( 'table' );
+		createColorTable();
+
+		var cellMouseover = function( event )
+		{
+			var color = new $el( event.data.getTarget() ).getAttribute( 'title' );
+			$doc.getById( 'hicolor' ).setStyle( 'background-color', color );
+			$doc.getById( 'hicolortext' ).setHtml( color );
+		};
+
+		var cellClick = function( event )
+		{
+			var color = new $el( event.data.getTarget() ).getAttribute( 'title' );
+			dialog.getContentElement( 'picker', 'selectedColor' ).setValue( color );
+		};
+
+		function createColorTable()
+		{
+			// Create the base colors array.
+			var aColors = ['00','33','66','99','cc','ff'];
+
+			// This function combines two ranges of three values from the color array into a row.
+			function appendColorRow( rangeA, rangeB )
+			{
+				for ( var i = rangeA ; i < rangeA + 3 ; i++ )
+				{
+					var row = table.$.insertRow(-1);
+
+					for ( var j = rangeB ; j < rangeB + 3 ; j++ )
+					{
+						for ( var n = 0 ; n < 6 ; n++ )
+						{
+							appendColorCell( row, '#' + aColors[j] + aColors[n] + aColors[i] );
+						}
+					}
+				}
+			}
+
+			// This function create a single color cell in the color table.
+			function appendColorCell( targetRow, color )
+			{
+				var cell = new $el( targetRow.insertCell( -1 ) );
+				cell.setAttribute( 'class', 'ColorCell' );
+				cell.setStyle( 'background-color', color );
+
+				cell.setStyle( 'width', '15px' );
+				cell.setStyle( 'height', '15px' );
+
+				// Pass unparsed color value in some markup-degradable form.
+				cell.setAttribute( 'title', color );
+			}
+
+			appendColorRow( 0, 0 );
+			appendColorRow( 3, 0 );
+			appendColorRow( 0, 3 );
+			appendColorRow( 3, 3 );
+
+			// Create the last row.
+			var oRow = table.$.insertRow(-1) ;
+
+			// Create the gray scale colors cells.
+			for ( var n = 0 ; n < 6 ; n++ )
+			{
+				appendColorCell( oRow, '#' + aColors[n] + aColors[n] + aColors[n] ) ;
+			}
+
+			// Fill the row with black cells.
+			for ( var i = 0 ; i < 12 ; i++ )
+			{
+				appendColorCell( oRow, '#000000' ) ;
+			}
+		}
+
+		function clear()
+		{
+			$doc.getById( 'selhicolor' ).removeStyle( 'background-color' );
+			dialog.getContentElement( 'picker', 'selectedColor' ).setValue( '' );
+		}
+
+		var clearActual = $tools.addFunction( function()
+		{
+			$doc.getById( 'hicolor' ).removeStyle( 'background-color' );
+			$doc.getById( 'hicolortext' ).setHtml( '&nbsp;' );
+		} );
+
+		return {
+			title : lang.title,
+			minWidth : 360,
+			minHeight : 220,
+			onLoad : function()
+			{
+				// Update reference.
+				dialog = this;
+			},
+			contents : [
+				{
+					id : 'picker',
+					label : lang.title,
+					accessKey : 'I',
+					elements :
+					[
+						{
+							type : 'hbox',
+							padding : 0,
+							widths : [ '70%', '10%', '30%' ],
+							children :
+							[
+								{
+									type : 'html',
+									html : '<table onmouseout="CKEDITOR.tools.callFunction( ' + clearActual + ' );">' + table.getHtml() + '</table>',
+									onLoad : function()
+									{
+										var table = CKEDITOR.document.getById( this.domId );
+										table.on( 'mouseover', cellMouseover );
+										table.on( 'click', cellClick );
+									}
+								},
+								spacer(),
+								{
+									type : 'vbox',
+									padding : 0,
+									widths : [ '70%', '5%', '25%' ],
+									children :
+									[
+										{
+											type : 'html',
+											html : '<span>' + lang.highlight +'</span>\
+												<div id="hicolor" style="border: 1px solid; height: 74px; width: 74px;"></div>\
+												<div id="hicolortext">&nbsp;</div>\
+												<span>' + lang.selected +'</span>\
+												<div id="selhicolor" style="border: 1px solid; height: 20px; width: 74px;"></div>'
+										},
+										{
+											type : 'text',
+											id : 'selectedColor',
+											style : 'width: 74px',
+											onChange : function()
+											{
+												// Try to update color preview with new value. If fails, then set it no none.
+												try
+												{
+													$doc.getById( 'selhicolor' ).setStyle( 'background-color', this.getValue() );
+												}
+												catch ( e )
+												{
+													clear();
+												}
+											}
+										},
+										spacer(),
+										{
+											type : 'button',
+											id : 'clear',
+											style : 'margin-top: 5px',
+											label : lang.clear,
+											onClick : clear
+										}
+									]
+								}
+							]
+						}
+					]
+				}
+			]
+		};
+	}
+	);
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/colordialog/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/colordialog/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/colordialog/plugin.js	(revision 2000)
@@ -0,0 +1,13 @@
+﻿( function()
+{
+	CKEDITOR.plugins.colordialog =
+	{
+		init : function( editor )
+		{
+			editor.addCommand( 'colordialog', new CKEDITOR.dialogCommand( 'colordialog' ) );
+			CKEDITOR.dialog.add( 'colordialog', this.path + 'dialogs/colordialog.js' );
+		}
+	};
+
+	CKEDITOR.plugins.add( 'colordialog', CKEDITOR.plugins.colordialog );
+} )();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/clipboard/dialogs/paste.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/clipboard/dialogs/paste.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/clipboard/dialogs/paste.js	(revision 2000)
@@ -0,0 +1,167 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'paste', function( editor )
+{
+	var isCustomDomain = CKEDITOR.env.isCustomDomain();
+
+	return {
+		title : editor.lang.clipboard.title,
+
+		minWidth : CKEDITOR.env.ie && CKEDITOR.env.quirks ? 370 : 350,
+		minHeight : CKEDITOR.env.quirks ? 250 : 245,
+		htmlToLoad : '<!doctype html><script type="text/javascript">'
+				+ 'window.onload = function()'
+				+ '{'
+					+ 'if ( ' + CKEDITOR.env.ie + ' ) '
+						+ 'document.body.contentEditable = "true";'
+					+ 'else '
+						+ 'document.designMode = "on";'
+					+ 'var iframe = new window.parent.CKEDITOR.dom.element( frameElement );'
+					+ 'var dialog = iframe.getCustomData( "dialog" );'
+		      + ''
+					+ 'iframe.getFrameDocument().on( "keydown", function( e )\
+						{\
+							if ( e.data.getKeystroke() == 27 )\
+								dialog.hide();\
+						});'
+				+ '};'
+				+ '</script><style>body { margin: 3px; height: 95%; } </style><body></body>',
+
+		onShow : function()
+		{
+			if ( CKEDITOR.env.ie )
+				this.getParentEditor().document.getBody().$.contentEditable = 'false';
+
+			// FIREFOX BUG: Force the browser to render the dialog to make the to-be-
+			// inserted iframe editable. (#3366)
+			this.parts.dialog.$.offsetHeight;
+
+			var container = this.getContentElement( 'general', 'editing_area' ).getElement(),
+				iframe = CKEDITOR.dom.element.createFromHtml( '<iframe src="javascript:void(0)" frameborder="0" allowtransparency="1"></iframe>' );
+
+			var lang = this.getParentEditor().lang;
+
+			iframe.setStyles(
+				{
+					width : '346px',
+					height : '130px',
+					'background-color' : 'white',
+					border : '1px solid black'
+				} );
+			iframe.setCustomData( 'dialog', this );
+
+			var accTitle = lang.editorTitle.replace( '%1', lang.clipboard.title );
+
+			if ( CKEDITOR.env.ie )
+				container.setHtml( '<legend style="position:absolute;top:-1000000px;left:-1000000px;">'
+						+ CKEDITOR.tools.htmlEncode( accTitle )
+						+ '</legend>' );
+			else
+			{
+				container.setHtml( '' );
+				container.setAttributes(
+					{
+						role : 'region',
+						title : accTitle
+					} );
+				iframe.setAttributes(
+					{
+						role : 'region',
+						title : ' '
+					} );
+			}
+			container.append( iframe );
+			if ( CKEDITOR.env.ie )
+				container.setStyle( 'height', ( iframe.$.offsetHeight + 2 ) + 'px' );
+
+			if ( isCustomDomain )
+			{
+				CKEDITOR._cke_htmlToLoad = this.definition.htmlToLoad;
+				iframe.setAttribute( 'src',
+					'javascript:void( (function(){' +
+						   'document.open();' +
+						   'document.domain="' + document.domain + '";' +
+						   'document.write( window.parent.CKEDITOR._cke_htmlToLoad );' +
+						   'delete window.parent.CKEDITOR._cke_htmlToLoad;' +
+						   'document.close();' +
+					'})() )' );
+			}
+			else
+			{
+				var doc = iframe.$.contentWindow.document;
+				doc.open();
+				doc.write( this.definition.htmlToLoad );
+				doc.close();
+			}
+		},
+
+		onHide : function()
+		{
+			if ( CKEDITOR.env.ie )
+				this.getParentEditor().document.getBody().$.contentEditable = 'true';
+		},
+
+		onLoad : function()
+		{
+			if ( ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) && editor.lang.dir == 'rtl' )
+				this.parts.contents.setStyle( 'overflow', 'hidden' );
+		},
+
+		onOk : function()
+		{
+			var container = this.getContentElement( 'general', 'editing_area' ).getElement(),
+				iframe = container.getElementsByTag( 'iframe' ).getItem( 0 ),
+				editor = this.getParentEditor(),
+				html = iframe.$.contentWindow.document.body.innerHTML;
+
+			setTimeout( function(){
+				editor.insertHtml( html );
+			}, 0 );
+
+		},
+
+		contents : [
+			{
+				id : 'general',
+				label : editor.lang.common.generalTab,
+				elements : [
+					{
+						type : 'html',
+						id : 'securityMsg',
+						html : '<div style="white-space:normal;width:340px;">' + editor.lang.clipboard.securityMsg + '</div>'
+					},
+					{
+						type : 'html',
+						id : 'pasteMsg',
+						html : '<div style="white-space:normal;width:340px;">'+editor.lang.clipboard.pasteMsg +'</div>'
+					},
+					{
+						type : 'html',
+						id : 'editing_area',
+						style : 'width: 100%; height: 100%;',
+						html : '<fieldset></fieldset>',
+						focus : function()
+						{
+							var div = this.getElement();
+							var iframe = div.getElementsByTag( 'iframe' );
+							if ( iframe.count() < 1 )
+								return;
+							iframe = iframe.getItem( 0 );
+
+							// #3291 : JAWS needs the 500ms delay to detect that the editor iframe
+							// iframe is no longer editable. So that it will put the focus into the
+							// Paste from Word dialog's editable area instead.
+							setTimeout( function()
+							{
+								iframe.$.contentWindow.focus();
+							}, 500 );
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/clipboard/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/clipboard/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/clipboard/plugin.js	(revision 2000)
@@ -0,0 +1,208 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Clipboard support
+ */
+
+(function()
+{
+	// Tries to execute any of the paste, cut or copy commands in IE. Returns a
+	// boolean indicating that the operation succeeded.
+	var execIECommand = function( editor, command )
+	{
+		var doc = editor.document,
+			body = doc.getBody();
+
+		var	enabled = false;
+		var onExec = function()
+		{
+			enabled = true;
+		};
+
+		// The following seems to be the only reliable way to detect that
+		// clipboard commands are enabled in IE. It will fire the
+		// onpaste/oncut/oncopy events only if the security settings allowed
+		// the command to execute.
+		body.on( command, onExec );
+
+		doc.$.execCommand( command );
+
+		body.removeListener( command, onExec );
+
+		return enabled;
+	};
+
+	// Attempts to execute the Cut and Copy operations.
+	var tryToCutCopy =
+		CKEDITOR.env.ie ?
+			function( editor, type )
+			{
+				return execIECommand( editor, type );
+			}
+		:		// !IE.
+			function( editor, type )
+			{
+				try
+				{
+					// Other browsers throw an error if the command is disabled.
+					return editor.document.$.execCommand( type );
+				}
+				catch( e )
+				{
+					return false;
+				}
+			};
+
+	// A class that represents one of the cut or copy commands.
+	var cutCopyCmd = function( type )
+	{
+		this.type = type;
+		this.canUndo = ( this.type == 'cut' );		// We can't undo copy to clipboard.
+	};
+
+	cutCopyCmd.prototype =
+	{
+		exec : function( editor, data )
+		{
+			var success = tryToCutCopy( editor, this.type );
+
+			if ( !success )
+				alert( editor.lang.clipboard[ this.type + 'Error' ] );		// Show cutError or copyError.
+
+			return success;
+		}
+	};
+
+	// Paste command.
+	var pasteCmd =
+		CKEDITOR.env.ie ?
+			{
+				exec : function( editor, data )
+				{
+					// Prevent IE from pasting at the begining of the document.
+					editor.focus();
+
+					if ( !editor.fire( 'beforePaste' )
+						&& !execIECommand( editor, 'paste' ) )
+					{
+							editor.openDialog( 'paste' );
+					}
+				}
+			}
+		:
+			{
+				exec : function( editor )
+				{
+					try
+					{
+						if ( !editor.fire( 'beforePaste' )
+							&& !editor.document.$.execCommand( 'Paste', false, null ) )
+						{
+							throw 0;
+						}
+					}
+					catch ( e )
+					{
+						// Open the paste dialog.
+						editor.openDialog( 'paste' );
+					}
+				}
+			};
+
+	// Listens for some clipboard related keystrokes, so they get customized.
+	var onKey = function( event )
+	{
+		switch ( event.data.keyCode )
+		{
+			// Paste
+			case CKEDITOR.CTRL + 86 :		// CTRL+V
+			case CKEDITOR.SHIFT + 45 :		// SHIFT+INS
+
+				var editor = this;
+				editor.fire( 'saveSnapshot' );		// Save before paste
+
+				if ( editor.fire( 'beforePaste' ) )
+					event.cancel();
+
+				setTimeout( function()
+					{
+						editor.fire( 'saveSnapshot' );		// Save after paste
+					}, 0 );
+				return;
+
+			// Cut
+			case CKEDITOR.CTRL + 88 :		// CTRL+X
+			case CKEDITOR.SHIFT + 46 :		// SHIFT+DEL
+
+				// Save Undo snapshot.
+				editor = this;
+				editor.fire( 'saveSnapshot' );		// Save before paste
+				setTimeout( function()
+					{
+						editor.fire( 'saveSnapshot' );		// Save after paste
+					}, 0 );
+		}
+	};
+
+	// Register the plugin.
+	CKEDITOR.plugins.add( 'clipboard',
+		{
+			init : function( editor )
+			{
+				function addButtonCommand( buttonName, commandName, command, ctxMenuOrder )
+				{
+					var lang = editor.lang[ commandName ];
+
+					editor.addCommand( commandName, command );
+					editor.ui.addButton( buttonName,
+						{
+							label : lang,
+							command : commandName
+						});
+
+					// If the "menu" plugin is loaded, register the menu item.
+					if ( editor.addMenuItems )
+					{
+						editor.addMenuItem( commandName,
+							{
+								label : lang,
+								command : commandName,
+								group : 'clipboard',
+								order : ctxMenuOrder
+							});
+					}
+				}
+
+				addButtonCommand( 'Cut', 'cut', new cutCopyCmd( 'cut' ), 1 );
+				addButtonCommand( 'Copy', 'copy', new cutCopyCmd( 'copy' ), 4 );
+				addButtonCommand( 'Paste', 'paste', pasteCmd, 8 );
+
+				CKEDITOR.dialog.add( 'paste', CKEDITOR.getUrl( this.path + 'dialogs/paste.js' ) );
+
+				editor.on( 'key', onKey, editor );
+
+				// If the "contextmenu" plugin is loaded, register the listeners.
+				if ( editor.contextMenu )
+				{
+					function stateFromNamedCommand( command )
+					{
+						return editor.document.$.queryCommandEnabled( command ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED;
+					}
+
+					editor.contextMenu.addListener( function()
+						{
+							return {
+								cut : stateFromNamedCommand( 'Cut' ),
+
+								// Browser bug: 'Cut' has the correct states for both Copy and Cut.
+								copy : stateFromNamedCommand( 'Cut' ),
+								paste : CKEDITOR.env.webkit ? CKEDITOR.TRISTATE_OFF : stateFromNamedCommand( 'Paste' )
+							};
+						});
+				}
+			}
+		});
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/panel/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/panel/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/panel/plugin.js	(revision 2000)
@@ -0,0 +1,333 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'panel',
+{
+	beforeInit : function( editor )
+	{
+		editor.ui.addHandler( CKEDITOR.UI_PANEL, CKEDITOR.ui.panel.handler );
+	}
+});
+
+/**
+ * Panel UI element.
+ * @constant
+ * @example
+ */
+CKEDITOR.UI_PANEL = 2;
+
+CKEDITOR.ui.panel = function( document, definition )
+{
+	// Copy all definition properties to this object.
+	if ( definition )
+		CKEDITOR.tools.extend( this, definition );
+
+	// Set defaults.
+	CKEDITOR.tools.extend( this,
+		{
+			className : '',
+			css : []
+		});
+
+	this.id = CKEDITOR.tools.getNextNumber();
+	this.document = document;
+
+	this._ =
+	{
+		blocks : {}
+	};
+};
+
+/**
+ * Transforms a rich combo definition in a {@link CKEDITOR.ui.richCombo}
+ * instance.
+ * @type Object
+ * @example
+ */
+CKEDITOR.ui.panel.handler =
+{
+	create : function( definition )
+	{
+		return new CKEDITOR.ui.panel( definition );
+	}
+};
+
+CKEDITOR.ui.panel.prototype =
+{
+	renderHtml : function( editor )
+	{
+		var output = [];
+		this.render( editor, output );
+		return output.join( '' );
+	},
+
+	/**
+	 * Renders the combo.
+	 * @param {CKEDITOR.editor} editor The editor instance which this button is
+	 *		to be used by.
+	 * @param {Array} output The output array to which append the HTML relative
+	 *		to this button.
+	 * @example
+	 */
+	render : function( editor, output )
+	{
+		var id = 'cke_' + this.id;
+
+		output.push(
+			'<div class="', editor.skinClass ,'"' +
+				' lang="', editor.langCode, '"' +
+				// iframe loading need sometime, keep the panel hidden(#4186).
+				' style="display:none;z-index:' + ( editor.config.baseFloatZIndex + 1 ) + '">' +
+				'<div' +
+					' id=', id,
+					' dir=', editor.lang.dir,
+					' class="cke_panel cke_', editor.lang.dir );
+
+		if ( this.className )
+			output.push( ' ', this.className );
+
+		output.push(
+				'">' );
+
+		if ( this.forceIFrame || this.css.length )
+		{
+			output.push(
+						'<iframe id="', id, '_frame"' +
+							' frameborder="0"' +
+							' src="javascript:void(' );
+
+			output.push(
+							// Support for custom document.domain in IE.
+							CKEDITOR.env.isCustomDomain() ?
+								'(function(){' +
+									'document.open();' +
+									'document.domain=\'' + document.domain + '\';' +
+									'document.close();' +
+								'})()'
+							:
+								'0' );
+
+			output.push(
+						')"></iframe>' );
+		}
+
+		output.push(
+				'</div>' +
+			'</div>' );
+
+		return id;
+	},
+
+	getHolderElement : function()
+	{
+		var holder = this._.holder;
+
+		if ( !holder )
+		{
+			if ( this.forceIFrame || this.css.length )
+			{
+				var iframe = this.document.getById( 'cke_' + this.id + '_frame' ),
+					parentDiv = iframe.getParent(),
+					dir = parentDiv.getAttribute( 'dir' ),
+					className = parentDiv.getParent().getAttribute( 'class' ),
+					langCode = parentDiv.getParent().getAttribute( 'lang' ),
+					doc = iframe.getFrameDocument();
+				// Initialize the IFRAME document body.
+				doc.$.open();
+
+				// Support for custom document.domain in IE.
+				if ( CKEDITOR.env.isCustomDomain() )
+					doc.$.domain = document.domain;
+
+				var onLoad = CKEDITOR.tools.addFunction( CKEDITOR.tools.bind( function( ev )
+					{
+						this.isLoaded = true;
+						if ( this.onLoad )
+							this.onLoad();
+					}, this ) );
+
+				doc.$.write(
+					'<!DOCTYPE html>' +
+					'<html dir="' + dir + '" class="' + className + '_container" lang="' + langCode + '">' +
+						'<head>' +
+							'<style>.' + className + '_container{visibility:hidden}</style>' +
+						'</head>' +
+						'<body class="cke_' + dir + ' cke_panel_frame ' + CKEDITOR.env.cssClass + '" style="margin:0;padding:0"' +
+						' onload="( window.CKEDITOR || window.parent.CKEDITOR ).tools.callFunction(' + onLoad + ');">' +
+						'</body>' +
+						// It looks strange, but for FF2, the styles must go
+						// after <body>, so it (body) becames immediatelly
+						// available. (#3031)
+						'<link type="text/css" rel=stylesheet href="' + this.css.join( '"><link type="text/css" rel="stylesheet" href="' ) + '">' +
+					'<\/html>' );
+				doc.$.close();
+
+				var win = doc.getWindow();
+
+				// Register the CKEDITOR global.
+				win.$.CKEDITOR = CKEDITOR;
+
+				doc.on( 'keydown', function( evt )
+					{
+						var keystroke = evt.data.getKeystroke();
+
+						// Delegate key processing to block.
+						if ( this._.onKeyDown && this._.onKeyDown( keystroke ) === false )
+						{
+							evt.data.preventDefault();
+							return;
+						}
+
+						if ( keystroke == 27 )		// ESC
+							this.onEscape && this.onEscape();
+					},
+					this );
+
+				holder = doc.getBody();
+			}
+			else
+				holder = this.document.getById( 'cke_' + this.id );
+
+			this._.holder = holder;
+		}
+
+		return holder;
+	},
+
+	addBlock : function( name, block )
+	{
+		block = this._.blocks[ name ] = block || new CKEDITOR.ui.panel.block( this.getHolderElement() );
+
+		if ( !this._.currentBlock )
+			this.showBlock( name );
+
+		return block;
+	},
+
+	getBlock : function( name )
+	{
+		return this._.blocks[ name ];
+	},
+
+	showBlock : function( name )
+	{
+		var blocks = this._.blocks,
+			block = blocks[ name ],
+			current = this._.currentBlock;
+
+		if ( current )
+			current.hide();
+
+		this._.currentBlock = block;
+
+		// Reset the focus index, so it will always go into the first one.
+		block._.focusIndex = -1;
+
+		this._.onKeyDown = block.onKeyDown && CKEDITOR.tools.bind( block.onKeyDown, block );
+
+		block.show();
+
+		return block;
+	}
+};
+
+CKEDITOR.ui.panel.block = CKEDITOR.tools.createClass(
+{
+	$ : function( blockHolder )
+	{
+		this.element = blockHolder.append(
+			blockHolder.getDocument().createElement( 'div',
+				{
+					attributes :
+					{
+						'class' : 'cke_panel_block'
+					},
+					styles :
+					{
+						display : 'none'
+					}
+				}) );
+
+		this.keys = {};
+
+		this._.focusIndex = -1;
+
+		// Disable context menu for panels.
+		this.element.disableContextMenu();
+	},
+
+	_ : {},
+
+	proto :
+	{
+		show : function()
+		{
+			this.element.setStyle( 'display', '' );
+		},
+
+		hide : function()
+		{
+			if ( !this.onHide || this.onHide.call( this )  !== true )
+				this.element.setStyle( 'display', 'none' );
+		},
+
+		onKeyDown : function( keystroke )
+		{
+			var keyAction = this.keys[ keystroke ];
+			switch ( keyAction )
+			{
+				// Move forward.
+				case 'next' :
+					var index = this._.focusIndex,
+						links = this.element.getElementsByTag( 'a' ),
+						link;
+
+					while ( ( link = links.getItem( ++index ) ) )
+					{
+						// Move the focus only if the element is marked with
+						// the _cke_focus and it it's visible (check if it has
+						// width).
+						if ( link.getAttribute( '_cke_focus' ) && link.$.offsetWidth )
+						{
+							this._.focusIndex = index;
+							link.focus();
+							break;
+						}
+					}
+					return false;
+
+				// Move backward.
+				case 'prev' :
+					index = this._.focusIndex;
+					links = this.element.getElementsByTag( 'a' );
+
+					while ( index > 0 && ( link = links.getItem( --index ) ) )
+					{
+						// Move the focus only if the element is marked with
+						// the _cke_focus and it it's visible (check if it has
+						// width).
+						if ( link.getAttribute( '_cke_focus' ) && link.$.offsetWidth )
+						{
+							this._.focusIndex = index;
+							link.focus();
+							break;
+						}
+					}
+					return false;
+
+				case 'click' :
+					index = this._.focusIndex;
+					link = index >= 0 && this.element.getElementsByTag( 'a' ).getItem( index );
+
+					if ( link )
+						link.$.click ? link.$.click() : link.$.onclick();
+
+					return false;
+			}
+
+			return true;
+		}
+	}
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/menubutton/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/menubutton/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/menubutton/plugin.js	(revision 2000)
@@ -0,0 +1,93 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'menubutton',
+{
+	requires : [ 'button', 'contextmenu' ],
+	beforeInit : function( editor )
+	{
+		editor.ui.addHandler( CKEDITOR.UI_MENUBUTTON, CKEDITOR.ui.menuButton.handler );
+	}
+});
+
+/**
+ * Button UI element.
+ * @constant
+ * @example
+ */
+CKEDITOR.UI_MENUBUTTON = 5;
+
+(function()
+{
+	var clickFn = function( editor )
+	{
+		var _ = this._;
+
+		// Do nothing if this button is disabled.
+		if ( _.state === CKEDITOR.TRISTATE_DISABLED )
+			return;
+
+		_.previousState = _.state;
+
+		// Check if we already have a menu for it, otherwise just create it.
+		var menu = _.menu;
+		if ( !menu )
+		{
+			menu = _.menu = new CKEDITOR.plugins.contextMenu( editor );
+
+			menu.onHide = CKEDITOR.tools.bind( function()
+				{
+					this.setState( _.previousState );
+				},
+				this );
+
+			// Initialize the menu items at this point.
+			if ( this.onMenu )
+			{
+				menu.addListener( this.onMenu );
+			}
+		}
+
+		if ( _.on )
+		{
+			menu.hide();
+			return;
+		}
+
+		this.setState( CKEDITOR.TRISTATE_ON );
+
+		menu.show( CKEDITOR.document.getById( this._.id ), 4 );
+	};
+
+
+	CKEDITOR.ui.menuButton = CKEDITOR.tools.createClass(
+	{
+		base : CKEDITOR.ui.button,
+
+		$ : function( definition )
+		{
+			// We don't want the panel definition in this object.
+			var panelDefinition = definition.panel;
+			delete definition.panel;
+
+			this.base( definition );
+
+			this.hasArrow = true;
+
+			this.click = clickFn;
+		},
+
+		statics :
+		{
+			handler :
+			{
+				create : function( definition )
+				{
+					return new CKEDITOR.ui.menuButton( definition );
+				}
+			}
+		}
+	});
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/htmlwriter/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/htmlwriter/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/htmlwriter/plugin.js	(revision 2000)
@@ -0,0 +1,289 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'htmlwriter' );
+
+/**
+ * Class used to write HTML data.
+ * @constructor
+ * @example
+ * var writer = new CKEDITOR.htmlWriter();
+ * writer.openTag( 'p' );
+ * writer.attribute( 'class', 'MyClass' );
+ * writer.openTagClose( 'p' );
+ * writer.text( 'Hello' );
+ * writer.closeTag( 'p' );
+ * alert( writer.getHtml() );  "&lt;p class="MyClass"&gt;Hello&lt;/p&gt;"
+ */
+CKEDITOR.htmlWriter = CKEDITOR.tools.createClass(
+{
+	base : CKEDITOR.htmlParser.basicWriter,
+
+	$ : function()
+	{
+		// Call the base contructor.
+		this.base();
+
+		/**
+		 * The characters to be used for each identation step.
+		 * @type String
+		 * @default "\t" (tab)
+		 * @example
+		 * // Use two spaces for indentation.
+		 * editorInstance.dataProcessor.writer.indentationChars = '  ';
+		 */
+		this.indentationChars = '\t';
+
+		/**
+		 * The characters to be used to close "self-closing" elements, like "br" or
+		 * "img".
+		 * @type String
+		 * @default " /&gt;"
+		 * @example
+		 * // Use HTML4 notation for self-closing elements.
+		 * editorInstance.dataProcessor.writer.selfClosingEnd = '>';
+		 */
+		this.selfClosingEnd = ' />';
+
+		/**
+		 * The characters to be used for line breaks.
+		 * @type String
+		 * @default "\n" (LF)
+		 * @example
+		 * // Use CRLF for line breaks.
+		 * editorInstance.dataProcessor.writer.lineBreakChars = '\r\n';
+		 */
+		this.lineBreakChars = '\n';
+
+		this.forceSimpleAmpersand = false;
+
+		this.sortAttributes = true;
+
+		this._.indent = false;
+		this._.indentation = '';
+		this._.rules = {};
+
+		var dtd = CKEDITOR.dtd;
+
+		for ( var e in CKEDITOR.tools.extend( {}, dtd.$block, dtd.$listItem, dtd.$tableContent ) )
+		{
+			this.setRules( e,
+				{
+					indent : true,
+					breakBeforeOpen : true,
+					breakAfterOpen : true,
+					breakBeforeClose : !dtd[ e ][ '#' ],
+					breakAfterClose : true
+				});
+		}
+		this.setRules( 'br',
+			{
+				breakAfterOpen : true
+			});
+		// Disable indentation on <pre>.
+		this.setRules( 'pre',
+		{
+		  indent: false
+		} );
+	},
+
+	proto :
+	{
+		/**
+		 * Writes the tag opening part for a opener tag.
+		 * @param {String} tagName The element name for this tag.
+		 * @param {Object} attributes The attributes defined for this tag. The
+		 *		attributes could be used to inspect the tag.
+		 * @example
+		 * // Writes "&lt;p".
+		 * writer.openTag( 'p', { class : 'MyClass', id : 'MyId' } );
+		 */
+		openTag : function( tagName, attributes )
+		{
+			var rules = this._.rules[ tagName ];
+
+			if ( this._.indent )
+				this.indentation();
+			// Do not break if indenting.
+			else if ( rules && rules.breakBeforeOpen )
+			{
+				this.lineBreak();
+				this.indentation();
+			}
+
+			this._.output.push( '<', tagName );
+		},
+
+		/**
+		 * Writes the tag closing part for a opener tag.
+		 * @param {String} tagName The element name for this tag.
+		 * @param {Boolean} isSelfClose Indicates that this is a self-closing tag,
+		 *		like "br" or "img".
+		 * @example
+		 * // Writes "&gt;".
+		 * writer.openTagClose( 'p', false );
+		 * @example
+		 * // Writes " /&gt;".
+		 * writer.openTagClose( 'br', true );
+		 */
+		openTagClose : function( tagName, isSelfClose )
+		{
+			var rules = this._.rules[ tagName ];
+
+			if ( isSelfClose )
+				this._.output.push( this.selfClosingEnd );
+			else
+			{
+				this._.output.push( '>' );
+
+				if ( rules && rules.indent )
+					this._.indentation += this.indentationChars;
+			}
+
+			if ( rules && rules.breakAfterOpen )
+				this.lineBreak();
+		},
+
+		/**
+		 * Writes an attribute. This function should be called after opening the
+		 * tag with {@link #openTagClose}.
+		 * @param {String} attName The attribute name.
+		 * @param {String} attValue The attribute value.
+		 * @example
+		 * // Writes ' class="MyClass"'.
+		 * writer.attribute( 'class', 'MyClass' );
+		 */
+		attribute : function( attName, attValue )
+		{
+			if ( this.forceSimpleAmpersand )
+				attValue = attValue.replace( /&amp;/, '&' );
+
+			this._.output.push( ' ', attName, '="', attValue, '"' );
+		},
+
+		/**
+		 * Writes a closer tag.
+		 * @param {String} tagName The element name for this tag.
+		 * @example
+		 * // Writes "&lt;/p&gt;".
+		 * writer.closeTag( 'p' );
+		 */
+		closeTag : function( tagName )
+		{
+			var rules = this._.rules[ tagName ];
+
+			if ( rules && rules.indent )
+				this._.indentation = this._.indentation.substr( this.indentationChars.length );
+
+			if ( this._.indent )
+				this.indentation();
+			// Do not break if indenting.
+			else if ( rules && rules.breakBeforeClose )
+			{
+				this.lineBreak();
+				this.indentation();
+			}
+
+			this._.output.push( '</', tagName, '>' );
+
+			if ( rules && rules.breakAfterClose )
+				this.lineBreak();
+		},
+
+		/**
+		 * Writes text.
+		 * @param {String} text The text value
+		 * @example
+		 * // Writes "Hello Word".
+		 * writer.text( 'Hello Word' );
+		 */
+		text : function( text )
+		{
+			if ( this._.indent )
+			{
+				this.indentation();
+				text = CKEDITOR.tools.ltrim( text );
+			}
+
+			this._.output.push( text );
+		},
+
+		/**
+		 * Writes a comment.
+		 * @param {String} comment The comment text.
+		 * @example
+		 * // Writes "&lt;!-- My comment --&gt;".
+		 * writer.comment( ' My comment ' );
+		 */
+		comment : function( comment )
+		{
+			if ( this._.indent )
+				this.indentation();
+
+			this._.output.push( '<!--', comment, '-->' );
+		},
+
+		/**
+		 * Writes a line break. It uses the {@link #lineBreakChars} property for it.
+		 * @example
+		 * // Writes "\n" (e.g.).
+		 * writer.lineBreak();
+		 */
+		lineBreak : function()
+		{
+			if ( this._.output.length > 0 )
+				this._.output.push( this.lineBreakChars );
+			this._.indent = true;
+		},
+
+		/**
+		 * Writes the current indentation chars. It uses the
+		 * {@link #indentationChars} property, repeating it for the current
+		 * indentation steps.
+		 * @example
+		 * // Writes "\t" (e.g.).
+		 * writer.indentation();
+		 */
+		indentation : function()
+		{
+			this._.output.push( this._.indentation );
+			this._.indent = false;
+		},
+
+		/**
+		 * Sets formatting rules for a give element. The possible rules are:
+		 * <ul>
+		 *	<li><b>indent</b>: indent the element contents.</li>
+		 *	<li><b>breakBeforeOpen</b>: break line before the opener tag for this element.</li>
+		 *	<li><b>breakAfterOpen</b>: break line after the opener tag for this element.</li>
+		 *	<li><b>breakBeforeClose</b>: break line before the closer tag for this element.</li>
+		 *	<li><b>breakAfterClose</b>: break line after the closer tag for this element.</li>
+		 * </ul>
+		 *
+		 * All rules default to "false".
+		 *
+		 * By default, all elements available in the {@link CKEDITOR.dtd.$block),
+		 * {@link CKEDITOR.dtd.$listItem} and {@link CKEDITOR.dtd.$tableContent}
+		 * lists have all the above rules set to "true". Additionaly, the "br"
+		 * element has the "breakAfterOpen" set to "true".
+		 * @param {String} tagName The element name to which set the rules.
+		 * @param {Object} rules An object containing the element rules.
+		 * @example
+		 * // Break line before and after "img" tags.
+		 * writer.setRules( 'img',
+		 *     {
+		 *         breakBeforeOpen : true
+		 *         breakAfterOpen : true
+		 *     });
+		 * @example
+		 * // Reset the rules for the "h1" tag.
+		 * writer.setRules( 'h1', {} );
+		 */
+		setRules : function( tagName, rules )
+		{
+			this._.rules[ tagName ] = rules;
+		}
+	}
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/menu/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/menu/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/menu/plugin.js	(revision 2000)
@@ -0,0 +1,379 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'menu',
+{
+	beforeInit : function( editor )
+	{
+		var groups = editor.config.menu_groups.split( ',' ),
+			groupsOrder = {};
+
+		for ( var i = 0 ; i < groups.length ; i++ )
+			groupsOrder[ groups[ i ] ] = i + 1;
+
+		editor._.menuGroups = groupsOrder;
+		editor._.menuItems = {};
+	},
+
+	requires : [ 'floatpanel' ]
+});
+
+CKEDITOR.tools.extend( CKEDITOR.editor.prototype,
+{
+	addMenuGroup : function( name, order )
+	{
+		this._.menuGroups[ name ] = order || 100;
+	},
+
+	addMenuItem : function( name, definition )
+	{
+		if ( this._.menuGroups[ definition.group ] )
+			this._.menuItems[ name ] = new CKEDITOR.menuItem( this, name, definition );
+	},
+
+	addMenuItems : function( definitions )
+	{
+		for ( var itemName in definitions )
+		{
+			this.addMenuItem( itemName, definitions[ itemName ] );
+		}
+	},
+
+	getMenuItem : function( name )
+	{
+		return this._.menuItems[ name ];
+	}
+});
+
+(function()
+{
+	CKEDITOR.menu = CKEDITOR.tools.createClass(
+	{
+		$ : function( editor, level )
+		{
+			this.id = 'cke_' + CKEDITOR.tools.getNextNumber();
+
+			this.editor = editor;
+			this.items = [];
+
+			this._.level = level || 1;
+		},
+
+		_ :
+		{
+			showSubMenu : function( index )
+			{
+				var menu = this._.subMenu,
+					item = this.items[ index ],
+					subItems = item.getItems && item.getItems();
+
+				// If this item has no subitems, we just hide the submenu, if
+				// available, and return back.
+				if ( !subItems )
+				{
+					this._.panel.hideChild();
+					return;
+				}
+
+				// Create the submenu, if not available, or clean the existing
+				// one.
+				if ( menu )
+					menu.removeAll();
+				else
+				{
+					menu = this._.subMenu = new CKEDITOR.menu( this.editor, this._.level + 1 );
+					menu.parent = this;
+					menu.onClick = CKEDITOR.tools.bind( this.onClick, this );
+				}
+
+				// Add all submenu items to the menu.
+				for ( var itemName in subItems )
+				{
+					menu.add( this.editor.getMenuItem( itemName ) );
+				}
+
+				// Get the element representing the current item.
+				var element = this._.panel.getBlock( this.id ).element.getDocument().getById( this.id + String( index ) );
+
+				// Show the submenu.
+				menu.show( element, 2 );
+			}
+		},
+
+		proto :
+		{
+			add : function( item )
+			{
+				// Later we may sort the items, but Array#sort is not stable in
+				// some browsers, here we're forcing the original sequence with
+				// 'order' attribute if it hasn't been assigned. (#3868)
+				if ( !item.order )
+					item.order = this.items.length;
+
+				this.items.push( item );
+			},
+
+			removeAll : function()
+			{
+				this.items = [];
+			},
+
+			show : function( offsetParent, corner, offsetX, offsetY )
+			{
+				var items = this.items,
+					editor = this.editor,
+					panel = this._.panel,
+					element = this._.element;
+
+				// Create the floating panel for this menu.
+				if ( !panel )
+				{
+					panel = this._.panel = new CKEDITOR.ui.floatPanel( this.editor, CKEDITOR.document.getBody(),
+						{
+							css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
+							level : this._.level - 1,
+							className : editor.skinClass + ' cke_contextmenu'
+						},
+						this._.level);
+
+					panel.onEscape = CKEDITOR.tools.bind( function()
+					{
+						this.onEscape && this.onEscape();
+						this.hide();
+					},
+					this );
+
+					panel.onHide = CKEDITOR.tools.bind( function()
+					{
+						this.onHide && this.onHide();
+					},
+					this );
+
+					// Create an autosize block inside the panel.
+					var block = panel.addBlock( this.id );
+					block.autoSize = true;
+
+					var keys = block.keys;
+					keys[ 40 ]	= 'next';					// ARROW-DOWN
+					keys[ 9 ]	= 'next';					// TAB
+					keys[ 38 ]	= 'prev';					// ARROW-UP
+					keys[ CKEDITOR.SHIFT + 9 ]	= 'prev';	// SHIFT + TAB
+					keys[ 32 ]	= 'click';					// SPACE
+					keys[ 39 ]	= 'click';					// ARROW-RIGHT
+
+					element = this._.element = block.element;
+					element.addClass( editor.skinClass );
+
+					var elementDoc = element.getDocument();
+					elementDoc.getBody().setStyle( 'overflow', 'hidden' );
+					elementDoc.getElementsByTag( 'html' ).getItem( 0 ).setStyle( 'overflow', 'hidden' );
+
+					this._.itemOverFn = CKEDITOR.tools.addFunction( function( index )
+						{
+							clearTimeout( this._.showSubTimeout );
+							this._.showSubTimeout = CKEDITOR.tools.setTimeout( this._.showSubMenu, editor.config.menu_subMenuDelay, this, [ index ] );
+						},
+						this);
+
+					this._.itemOutFn = CKEDITOR.tools.addFunction( function( index )
+						{
+							clearTimeout( this._.showSubTimeout );
+						},
+						this);
+
+					this._.itemClickFn = CKEDITOR.tools.addFunction( function( index )
+						{
+							var item = this.items[ index ];
+
+							if ( item.state == CKEDITOR.TRISTATE_DISABLED )
+							{
+								this.hide();
+								return;
+							}
+
+							if ( item.getItems )
+								this._.showSubMenu( index );
+							else
+								this.onClick && this.onClick( item );
+						},
+						this);
+				}
+
+				// Put the items in the right order.
+				sortItems( items );
+
+				// Build the HTML that composes the menu and its items.
+				var output = [ '<div class="cke_menu">' ];
+
+				var length = items.length,
+					lastGroup = length && items[ 0 ].group;
+
+				for ( var i = 0 ; i < length ; i++ )
+				{
+					var item = items[ i ];
+					if ( lastGroup != item.group )
+					{
+						output.push( '<div class="cke_menuseparator"></div>' );
+						lastGroup = item.group;
+					}
+
+					item.render( this, i, output );
+				}
+
+				output.push( '</div>' );
+
+				// Inject the HTML inside the panel.
+				element.setHtml( output.join( '' ) );
+
+				// Show the panel.
+				if ( this.parent )
+					this.parent._.panel.showAsChild( panel, this.id, offsetParent, corner, offsetX, offsetY );
+				else
+					panel.showBlock( this.id, offsetParent, corner, offsetX, offsetY );
+
+				editor.fire( 'menuShow', [ panel ] );
+			},
+
+			hide : function()
+			{
+				this._.panel && this._.panel.hide();
+			}
+		}
+	});
+
+	function sortItems( items )
+	{
+		items.sort( function( itemA, itemB )
+			{
+				if ( itemA.group < itemB.group )
+					return -1;
+				else if ( itemA.group > itemB.group )
+					return 1;
+
+				return itemA.order < itemB.order ? -1 :
+					itemA.order > itemB.order ? 1 :
+					0;
+			});
+	}
+})();
+
+CKEDITOR.menuItem = CKEDITOR.tools.createClass(
+{
+	$ : function( editor, name, definition )
+	{
+		CKEDITOR.tools.extend( this, definition,
+			// Defaults
+			{
+				order : 0,
+				className : 'cke_button_' + name
+			});
+
+		// Transform the group name into its order number.
+		this.group = editor._.menuGroups[ this.group ];
+
+		this.editor = editor;
+		this.name = name;
+	},
+
+	proto :
+	{
+		render : function( menu, index, output )
+		{
+			var id = menu.id + String( index ),
+				state = ( typeof this.state == 'undefined' ) ? CKEDITOR.TRISTATE_OFF : this.state;
+
+			var classes = ' cke_' + (
+				state == CKEDITOR.TRISTATE_ON ? 'on' :
+				state == CKEDITOR.TRISTATE_DISABLED ? 'disabled' :
+				'off' );
+
+			var htmlLabel = this.label;
+			if ( state == CKEDITOR.TRISTATE_DISABLED )
+				htmlLabel = this.editor.lang.common.unavailable.replace( '%1', htmlLabel );
+
+			if ( this.className )
+				classes += ' ' + this.className;
+
+			output.push(
+				'<span class="cke_menuitem">' +
+				'<a id="', id, '"' +
+					' class="', classes, '" href="javascript:void(\'', ( this.label || '' ).replace( "'", '' ), '\')"' +
+					' title="', this.label, '"' +
+					' tabindex="-1"' +
+					'_cke_focus=1' +
+					' hidefocus="true"' );
+
+			// Some browsers don't cancel key events in the keydown but in the
+			// keypress.
+			// TODO: Check if really needed for Gecko+Mac.
+			if ( CKEDITOR.env.opera || ( CKEDITOR.env.gecko && CKEDITOR.env.mac ) )
+			{
+				output.push(
+					' onkeypress="return false;"' );
+			}
+
+			// With Firefox, we need to force the button to redraw, otherwise it
+			// will remain in the focus state.
+			if ( CKEDITOR.env.gecko )
+			{
+				output.push(
+					' onblur="this.style.cssText = this.style.cssText;"' );
+			}
+
+			var offset = ( this.iconOffset || 0 ) * -16;
+			output.push(
+//					' onkeydown="return CKEDITOR.ui.button._.keydown(', index, ', event);"' +
+					' onmouseover="CKEDITOR.tools.callFunction(', menu._.itemOverFn, ',', index, ');"' +
+					' onmouseout="CKEDITOR.tools.callFunction(', menu._.itemOutFn, ',', index, ');"' +
+					' onclick="CKEDITOR.tools.callFunction(', menu._.itemClickFn, ',', index, '); return false;"' +
+					'>' +
+						'<span class="cke_icon_wrapper"><span class="cke_icon"' +
+							( this.icon ? ' style="background-image:url(' + CKEDITOR.getUrl( this.icon ) + ');background-position:0 ' + offset + 'px;"'
+							: '' ) +
+							'></span></span>' +
+						'<span class="cke_label">' );
+
+			if ( this.getItems )
+			{
+				output.push(
+							'<span class="cke_menuarrow"></span>' );
+			}
+
+			output.push(
+							htmlLabel,
+						'</span>' +
+				'</a>' +
+				'</span>' );
+		}
+	}
+});
+
+/**
+ * The amount of time, in milliseconds, the editor waits before showing submenu
+ * options when moving the mouse over options that contains submenus, like the
+ * "Cell Properties" entry for tables.
+ * @type Number
+ * @default 400
+ * @example
+ * // Remove the submenu delay.
+ * config.menu_subMenuDelay = 0;
+ */
+CKEDITOR.config.menu_subMenuDelay = 400;
+
+/**
+ * A comma separated list of items group names to be displayed in the context
+ * menu. The items order will reflect the order in this list if no priority
+ * has been definted in the groups.
+ * @type String
+ * @default 'clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea'
+ * @example
+ * config.menu_groups = 'clipboard,table,anchor,link,image';
+ */
+CKEDITOR.config.menu_groups =
+	'clipboard,' +
+	'form,' +
+	'tablecell,tablecellproperties,tablerow,tablecolumn,table,'+
+	'anchor,link,image,flash,' +
+	'checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea';
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/undo/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/undo/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/undo/plugin.js	(revision 2000)
@@ -0,0 +1,490 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Undo/Redo system for saving shapshot for document modification
+ *		and other recordable changes.
+ */
+
+(function()
+{
+	CKEDITOR.plugins.add( 'undo',
+	{
+		requires : [ 'selection', 'wysiwygarea' ],
+
+		init : function( editor )
+		{
+			var undoManager = new UndoManager( editor );
+
+			var undoCommand = editor.addCommand( 'undo',
+				{
+					exec : function()
+					{
+						if ( undoManager.undo() )
+						{
+							editor.selectionChange();
+							this.fire( 'afterUndo' );
+						}
+					},
+					state : CKEDITOR.TRISTATE_DISABLED,
+					canUndo : false
+				});
+
+			var redoCommand = editor.addCommand( 'redo',
+				{
+					exec : function()
+					{
+						if ( undoManager.redo() )
+						{
+							editor.selectionChange();
+							this.fire( 'afterRedo' );
+						}
+					},
+					state : CKEDITOR.TRISTATE_DISABLED,
+					canUndo : false
+				});
+
+			undoManager.onChange = function()
+			{
+				undoCommand.setState( undoManager.undoable() ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
+				redoCommand.setState( undoManager.redoable() ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
+			};
+
+			function recordCommand( event )
+			{
+				// If the command hasn't been marked to not support undo.
+				if ( undoManager.enabled && event.data.command.canUndo !== false )
+					undoManager.save();
+			}
+
+			// We'll save snapshots before and after executing a command.
+			editor.on( 'beforeCommandExec', recordCommand );
+			editor.on( 'afterCommandExec', recordCommand );
+
+			// Save snapshots before doing custom changes.
+			editor.on( 'saveSnapshot', function()
+				{
+					undoManager.save();
+				});
+
+			// Registering keydown on every document recreation.(#3844)
+			editor.on( 'contentDom', function()
+				{
+					editor.document.on( 'keydown', function( event )
+						{
+							// Do not capture CTRL hotkeys.
+							if ( !event.data.$.ctrlKey && !event.data.$.metaKey )
+								undoManager.type( event );
+						});
+				});
+
+			// Always save an undo snapshot - the previous mode might have
+			// changed editor contents.
+			editor.on( 'beforeModeUnload', function()
+				{
+					editor.mode == 'wysiwyg' && undoManager.save( true );
+				});
+
+			// Make the undo manager available only in wysiwyg mode.
+			editor.on( 'mode', function()
+				{
+					undoManager.enabled = editor.mode == 'wysiwyg';
+					undoManager.onChange();
+				});
+
+			editor.ui.addButton( 'Undo',
+				{
+					label : editor.lang.undo,
+					command : 'undo'
+				});
+
+			editor.ui.addButton( 'Redo',
+				{
+					label : editor.lang.redo,
+					command : 'redo'
+				});
+
+			editor.resetUndo = function()
+			{
+				// Reset the undo stack.
+				undoManager.reset();
+
+				// Create the first image.
+				editor.fire( 'saveSnapshot' );
+			};
+		}
+	});
+
+	// Gets a snapshot image which represent the current document status.
+	function Image( editor )
+	{
+		var selection = editor.getSelection();
+
+		this.contents	= editor.getSnapshot();
+		this.bookmarks	= selection && selection.createBookmarks2( true );
+
+		// In IE, we need to remove the expando attributes.
+		if ( CKEDITOR.env.ie )
+			this.contents = this.contents.replace( /\s+_cke_expando=".*?"/g, '' );
+	}
+
+	Image.prototype =
+	{
+		equals : function( otherImage, contentOnly )
+		{
+			if ( this.contents != otherImage.contents )
+				return false;
+
+			if ( contentOnly )
+				return true;
+
+			var bookmarksA = this.bookmarks,
+				bookmarksB = otherImage.bookmarks;
+
+			if ( bookmarksA || bookmarksB )
+			{
+				if ( !bookmarksA || !bookmarksB || bookmarksA.length != bookmarksB.length )
+					return false;
+
+				for ( var i = 0 ; i < bookmarksA.length ; i++ )
+				{
+					var bookmarkA = bookmarksA[ i ],
+						bookmarkB = bookmarksB[ i ];
+
+					if (
+						bookmarkA.startOffset != bookmarkB.startOffset ||
+						bookmarkA.endOffset != bookmarkB.endOffset ||
+						!CKEDITOR.tools.arrayCompare( bookmarkA.start, bookmarkB.start ) ||
+						!CKEDITOR.tools.arrayCompare( bookmarkA.end, bookmarkB.end ) )
+					{
+						return false;
+					}
+				}
+			}
+
+			return true;
+		}
+	};
+
+	/**
+	 * @constructor Main logic for Redo/Undo feature.
+	 */
+	function UndoManager( editor )
+	{
+		this.editor = editor;
+
+		// Reset the undo stack.
+		this.reset();
+	}
+
+	UndoManager.prototype =
+	{
+		/**
+		 * Process undo system regard keystrikes.
+		 * @param {CKEDITOR.dom.event} event
+		 */
+		type : function( event )
+		{
+			var keystroke = event && event.data.getKeystroke(),
+
+				// Backspace, Delete
+				modifierCodes = { 8:1, 46:1 },
+				// Keystrokes which will modify the contents.
+				isModifier = keystroke in modifierCodes,
+				wasModifier = this.lastKeystroke in modifierCodes,
+				lastWasSameModifier = isModifier && keystroke == this.lastKeystroke,
+
+				// Arrows: L, T, R, B
+				resetTypingCodes = { 37:1, 38:1, 39:1, 40:1 },
+				// Keystrokes which navigation through contents.
+				isReset = keystroke in resetTypingCodes,
+				wasReset = this.lastKeystroke in resetTypingCodes,
+
+				// Keystrokes which just introduce new contents.
+				isContent = ( !isModifier && !isReset ),
+
+				// Create undo snap for every different modifier key.
+				modifierSnapshot = ( isModifier && !lastWasSameModifier ),
+				// Create undo snap on the following cases:
+				// 1. Just start to type.
+				// 2. Typing some content after a modifier.
+				// 3. Typing some content after make a visible selection.
+				startedTyping = !this.typing
+					|| ( isContent && ( wasModifier || wasReset ) );
+
+			if ( startedTyping || modifierSnapshot )
+			{
+				var beforeTypeImage = new Image( this.editor );
+
+				// Use setTimeout, so we give the necessary time to the
+				// browser to insert the character into the DOM.
+				CKEDITOR.tools.setTimeout( function()
+					{
+						var currentSnapshot = this.editor.getSnapshot();
+
+						// In IE, we need to remove the expando attributes.
+						if ( CKEDITOR.env.ie )
+							currentSnapshot = currentSnapshot.replace( /\s+_cke_expando=".*?"/g, '' );
+
+						if ( beforeTypeImage.contents != currentSnapshot )
+						{
+							// This's a special save, with specified snapshot
+							// and without auto 'fireChange'.
+							if ( !this.save( false, beforeTypeImage, false ) )
+								// Drop future snapshots.
+								this.snapshots.splice( this.index + 1, this.snapshots.length - this.index - 1 );
+
+							this.hasUndo = true;
+							this.hasRedo = false;
+
+							this.typesCount = 1;
+							this.modifiersCount = 1;
+
+							this.onChange();
+						}
+					},
+					0, this
+				);
+			}
+
+			this.lastKeystroke = keystroke;
+			// Create undo snap after typed too much (over 25 times).
+			if ( isModifier )
+			{
+				this.typesCount = 0;
+				this.modifiersCount++;
+
+				if ( this.modifiersCount > 25 )
+				{
+					this.save();
+					this.modifiersCount = 1;
+				}
+			}
+			else if ( !isReset )
+			{
+				this.modifiersCount = 0;
+				this.typesCount++;
+
+				if ( this.typesCount > 25 )
+				{
+					this.save();
+					this.typesCount = 1;
+				}
+			}
+
+			this.typing = true;
+		},
+
+		reset : function()	// Reset the undo stack.
+		{
+			/**
+			 * Remember last pressed key.
+			 */
+			this.lastKeystroke = 0;
+
+			/**
+			 * Stack for all the undo and redo snapshots, they're always created/removed
+			 * in consistency.
+			 */
+			this.snapshots = [];
+
+			/**
+			 * Current snapshot history index.
+			 */
+			this.index = -1;
+
+			this.limit = this.editor.config.undoStackSize;
+
+			this.currentImage = null;
+
+			this.hasUndo = false;
+			this.hasRedo = false;
+
+			this.resetType();
+		},
+
+		/**
+		 * Reset all states about typing.
+		 * @see  UndoManager.type
+		 */
+		resetType : function()
+		{
+			this.typing = false;
+			delete this.lastKeystroke;
+			this.typesCount = 0;
+			this.modifiersCount = 0;
+		},
+		fireChange : function()
+		{
+			this.hasUndo = !!this.getNextImage( true );
+			this.hasRedo = !!this.getNextImage( false );
+			// Reset typing
+			this.resetType();
+			this.onChange();
+		},
+
+		/**
+		 * Save a snapshot of document image for later retrieve.
+		 */
+		save : function( onContentOnly, image, autoFireChange )
+		{
+			var snapshots = this.snapshots;
+
+			// Get a content image.
+			if ( !image )
+				image = new Image( this.editor );
+
+			// Check if this is a duplicate. In such case, do nothing.
+			if ( this.currentImage && image.equals( this.currentImage, onContentOnly ) )
+				return false;
+
+			// Drop future snapshots.
+			snapshots.splice( this.index + 1, snapshots.length - this.index - 1 );
+
+			// If we have reached the limit, remove the oldest one.
+			if ( snapshots.length == this.limit )
+				snapshots.shift();
+
+			// Add the new image, updating the current index.
+			this.index = snapshots.push( image ) - 1;
+
+			this.currentImage = image;
+
+			if ( autoFireChange !== false )
+				this.fireChange();
+			return true;
+		},
+
+		restoreImage : function( image )
+		{
+			this.editor.loadSnapshot( image.contents );
+
+			if ( image.bookmarks )
+				this.editor.getSelection().selectBookmarks( image.bookmarks );
+			else if ( CKEDITOR.env.ie )
+			{
+				// IE BUG: If I don't set the selection to *somewhere* after setting
+				// document contents, then IE would create an empty paragraph at the bottom
+				// the next time the document is modified.
+				var $range = this.editor.document.getBody().$.createTextRange();
+				$range.collapse( true );
+				$range.select();
+			}
+
+			this.index = image.index;
+
+			this.currentImage = image;
+
+			this.fireChange();
+		},
+
+		// Get the closest available image.
+		getNextImage : function( isUndo )
+		{
+			var snapshots = this.snapshots,
+				currentImage = this.currentImage,
+				image, i;
+
+			if ( currentImage )
+			{
+				if ( isUndo )
+				{
+					for ( i = this.index - 1 ; i >= 0 ; i-- )
+					{
+						image = snapshots[ i ];
+						if ( !currentImage.equals( image, true ) )
+						{
+							image.index = i;
+							return image;
+						}
+					}
+				}
+				else
+				{
+					for ( i = this.index + 1 ; i < snapshots.length ; i++ )
+					{
+						image = snapshots[ i ];
+						if ( !currentImage.equals( image, true ) )
+						{
+							image.index = i;
+							return image;
+						}
+					}
+				}
+			}
+
+			return null;
+		},
+
+		/**
+		 * Check the current redo state.
+		 * @return {Boolean} Whether the document has previous state to
+		 *		retrieve.
+		 */
+		redoable : function()
+		{
+			return this.enabled && this.hasRedo;
+		},
+
+		/**
+		 * Check the current undo state.
+		 * @return {Boolean} Whether the document has future state to restore.
+		 */
+		undoable : function()
+		{
+			return this.enabled && this.hasUndo;
+		},
+
+		/**
+		 * Perform undo on current index.
+		 */
+		undo : function()
+		{
+			if ( this.undoable() )
+			{
+				this.save( true );
+
+				var image = this.getNextImage( true );
+				if ( image )
+					return this.restoreImage( image ), true;
+			}
+
+			return false;
+		},
+
+		/**
+		 * Perform redo on current index.
+		 */
+		redo : function()
+		{
+			if ( this.redoable() )
+			{
+				// Try to save. If no changes have been made, the redo stack
+				// will not change, so it will still be redoable.
+				this.save( true );
+
+				// If instead we had changes, we can't redo anymore.
+				if ( this.redoable() )
+				{
+					var image = this.getNextImage( false );
+					if ( image )
+						return this.restoreImage( image ), true;
+				}
+			}
+
+			return false;
+		}
+	};
+})();
+
+/**
+ * The number of undo steps to be saved. The higher this setting value the more
+ * memory is used for it.
+ * @type Number
+ * @default 20
+ * @example
+ * config.undoStackSize = 50;
+ */
+CKEDITOR.config.undoStackSize = 20;
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/removeformat/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/removeformat/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/removeformat/plugin.js	(revision 2000)
@@ -0,0 +1,132 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'removeformat',
+{
+	requires : [ 'selection' ],
+
+	init : function( editor )
+	{
+		editor.addCommand( 'removeFormat', CKEDITOR.plugins.removeformat.commands.removeformat );
+		editor.ui.addButton( 'RemoveFormat',
+			{
+				label : editor.lang.removeFormat,
+				command : 'removeFormat'
+			});
+	}
+});
+
+CKEDITOR.plugins.removeformat =
+{
+	commands :
+	{
+		removeformat :
+		{
+			exec : function( editor )
+			{
+				var tagsRegex = editor._.removeFormatRegex ||
+					( editor._.removeFormatRegex = new RegExp( '^(?:' + editor.config.removeFormatTags.replace( /,/g,'|' ) + ')$', 'i' ) );
+
+				var removeAttributes = editor._.removeAttributes ||
+					( editor._.removeAttributes = editor.config.removeFormatAttributes.split( ',' ) );
+
+				var ranges = editor.getSelection().getRanges();
+
+				for ( var i = 0, range ; range = ranges[ i ] ; i++ )
+				{
+					if ( range.collapsed )
+						continue;
+
+					range.enlarge( CKEDITOR.ENLARGE_ELEMENT );
+
+					// Bookmark the range so we can re-select it after processing.
+					var bookmark = range.createBookmark();
+
+					// The style will be applied within the bookmark boundaries.
+					var startNode	= bookmark.startNode;
+					var endNode		= bookmark.endNode;
+
+					// We need to check the selection boundaries (bookmark spans) to break
+					// the code in a way that we can properly remove partially selected nodes.
+					// For example, removing a <b> style from
+					//		<b>This is [some text</b> to show <b>the] problem</b>
+					// ... where [ and ] represent the selection, must result:
+					//		<b>This is </b>[some text to show the]<b> problem</b>
+					// The strategy is simple, we just break the partial nodes before the
+					// removal logic, having something that could be represented this way:
+					//		<b>This is </b>[<b>some text</b> to show <b>the</b>]<b> problem</b>
+
+					var breakParent = function( node )
+					{
+						// Let's start checking the start boundary.
+						var path = new CKEDITOR.dom.elementPath( node );
+						var pathElements = path.elements;
+
+						for ( var i = 1, pathElement ; pathElement = pathElements[ i ] ; i++ )
+						{
+							if ( pathElement.equals( path.block ) || pathElement.equals( path.blockLimit ) )
+								break;
+
+							// If this element can be removed (even partially).
+							if ( tagsRegex.test( pathElement.getName() ) )
+								node.breakParent( pathElement );
+						}
+					};
+
+					breakParent( startNode );
+					breakParent( endNode );
+
+					// Navigate through all nodes between the bookmarks.
+					var currentNode = startNode.getNextSourceNode( true, CKEDITOR.NODE_ELEMENT );
+
+					while ( currentNode )
+					{
+						// If we have reached the end of the selection, stop looping.
+						if ( currentNode.equals( endNode ) )
+							break;
+
+						// Cache the next node to be processed. Do it now, because
+						// currentNode may be removed.
+						var nextNode = currentNode.getNextSourceNode( false, CKEDITOR.NODE_ELEMENT );
+
+						// This node must not be a fake element.
+						if ( currentNode.getName() != 'img' || !currentNode.getAttribute( '_cke_protected_html' ) )
+						{
+							// Remove elements nodes that match with this style rules.
+							if ( tagsRegex.test( currentNode.getName() ) )
+								currentNode.remove( true );
+							else
+								currentNode.removeAttributes( removeAttributes );
+						}
+
+						currentNode = nextNode;
+					}
+
+					range.moveToBookmark( bookmark );
+				}
+
+				editor.getSelection().selectRanges( ranges );
+			}
+		}
+	}
+};
+
+/**
+ * A comma separated list of elements to be removed when executing the "remove
+ " format" command. Note that only inline elements are allowed.
+ * @type String
+ * @default 'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var'
+ * @example
+ */
+CKEDITOR.config.removeFormatTags = 'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var';
+
+/**
+ * A comma separated list of elements attributes to be removed when executing
+ * the "remove format" command.
+ * @type String
+ * @default 'class,style,lang,width,height,align,hspace,valign'
+ * @example
+ */
+CKEDITOR.config.removeFormatAttributes = 'class,style,lang,width,height,align,hspace,valign';
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/colorbutton/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/colorbutton/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/colorbutton/plugin.js	(revision 2000)
@@ -0,0 +1,202 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'colorbutton',
+{
+	requires : [ 'panelbutton', 'floatpanel', 'styles' ],
+
+	init : function( editor )
+	{
+		var config = editor.config,
+			lang = editor.lang.colorButton;
+
+		var clickFn;
+
+		if ( !CKEDITOR.env.hc )
+		{
+			addButton( 'TextColor', 'fore', lang.textColorTitle );
+			addButton( 'BGColor', 'back', lang.bgColorTitle );
+		}
+
+		function addButton( name, type, title )
+		{
+			editor.ui.add( name, CKEDITOR.UI_PANELBUTTON,
+				{
+					label : title,
+					title : title,
+					className : 'cke_button_' + name.toLowerCase(),
+					modes : { wysiwyg : 1 },
+
+					panel :
+					{
+						css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ]
+					},
+
+					onBlock : function( panel, blockName )
+					{
+						var block = panel.addBlock( blockName );
+						block.autoSize = true;
+						block.element.addClass( 'cke_colorblock' );
+						block.element.setHtml( renderColors( panel, type ) );
+
+						var keys = block.keys;
+						keys[ 39 ]	= 'next';					// ARROW-RIGHT
+						keys[ 9 ]	= 'next';					// TAB
+						keys[ 37 ]	= 'prev';					// ARROW-LEFT
+						keys[ CKEDITOR.SHIFT + 9 ]	= 'prev';	// SHIFT + TAB
+						keys[ 32 ]	= 'click';					// SPACE
+					}
+				});
+		}
+
+
+		function renderColors( panel, type )
+		{
+			var output = [],
+				colors = config.colorButton_colors.split( ',' );
+
+			var clickFn = CKEDITOR.tools.addFunction( function( color, type )
+				{
+					if ( color == '?' )
+					{
+						// TODO : Implement the colors dialog.
+						// editor.openDialog( '' );
+						return;
+					}
+
+					editor.focus();
+
+					panel.hide();
+
+					var style = new CKEDITOR.style( config['colorButton_' + type + 'Style'], color && { color : color } );
+
+					editor.fire( 'saveSnapshot' );
+					if ( color )
+						style.apply( editor.document );
+					else
+						style.remove( editor.document );
+					editor.fire( 'saveSnapshot' );
+				});
+
+			// Render the "Automatic" button.
+			output.push(
+				'<a class="cke_colorauto" _cke_focus=1 hidefocus=true' +
+					' title="', lang.auto, '"' +
+					' onclick="CKEDITOR.tools.callFunction(', clickFn, ',null,\'', type, '\');return false;"' +
+					' href="javascript:void(\'', lang.auto, '\')">' +
+					'<table cellspacing=0 cellpadding=0 width="100%">' +
+						'<tr>' +
+							'<td>' +
+								'<span class="cke_colorbox" style="background-color:#000"></span>' +
+							'</td>' +
+							'<td colspan=7 align=center>',
+								lang.auto,
+							'</td>' +
+						'</tr>' +
+					'</table>' +
+				'</a>' +
+				'<table cellspacing=0 cellpadding=0 width="100%">' );
+
+			// Render the color boxes.
+			for ( var i = 0 ; i < colors.length ; i++ )
+			{
+				if ( ( i % 8 ) === 0 )
+					output.push( '</tr><tr>' );
+
+				var colorCode = colors[ i ];
+				var colorLabel = editor.lang.colors[ colorCode ] || colorCode;
+				output.push(
+					'<td>' +
+						'<a class="cke_colorbox" _cke_focus=1 hidefocus=true' +
+							' title="', colorLabel, '"' +
+							' onclick="CKEDITOR.tools.callFunction(', clickFn, ',\'#', colorCode, '\',\'', type, '\'); return false;"' +
+							' href="javascript:void(\'', colorLabel, '\')">' +
+							'<span class="cke_colorbox" style="background-color:#', colorCode, '"></span>' +
+						'</a>' +
+					'</td>' );
+			}
+
+			// Render the "More Colors" button.
+			if ( config.colorButton_enableMore )
+			{
+				output.push(
+					'</tr>' +
+					'<tr>' +
+						'<td colspan=8 align=center>' +
+							'<a class="cke_colormore" _cke_focus=1 hidefocus=true' +
+								' title="', lang.more, '"' +
+								' onclick="CKEDITOR.tools.callFunction(', clickFn, ',\'?\',\'', type, '\');return false;"' +
+								' href="javascript:void(\'', lang.more, '\')">',
+								lang.more,
+							'</a>' +
+						'</td>' );	// It is later in the code.
+			}
+
+			output.push( '</tr></table>' );
+
+			return output.join( '' );
+		}
+	}
+});
+
+/**
+ * Whether to enable the "More Colors..." button in the color selectors.
+ * @default false
+ * @type Boolean
+ * @example
+ * config.colorButton_enableMore = false;
+ */
+CKEDITOR.config.colorButton_enableMore = false;
+
+/**
+ * Defines the colors to be displayed in the color selectors. It's a string
+ * containing the hexadecimal notation for HTML colors, without the "#" prefix.
+ * @type String
+ * @default '000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,A9A9A9,FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,FFF0F5,FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF'
+ * @example
+ * // Brazil colors only.
+ * config.colorButton_colors = '00923E,F8C100,28166F';
+ */
+CKEDITOR.config.colorButton_colors =
+	'000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,' +
+	'B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,' +
+	'F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,A9A9A9,' +
+	'FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,' +
+	'FFF0F5,FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF';
+
+/**
+ * Holds the style definition to be used to apply the text foreground color.
+ * @type Object
+ * @example
+ * // This is basically the default setting value.
+ * config.colorButton_foreStyle =
+ *     {
+ *         element : 'span',
+ *         styles : { 'color' : '#(color)' }
+ *     };
+ */
+CKEDITOR.config.colorButton_foreStyle =
+	{
+		element		: 'span',
+		styles		: { 'color' : '#(color)' },
+		overrides	: [ { element : 'font', attributes : { 'color' : null } } ]
+	};
+
+/**
+ * Holds the style definition to be used to apply the text background color.
+ * @type Object
+ * @example
+ * // This is basically the default setting value.
+ * config.colorButton_backStyle =
+ *     {
+ *         element : 'span',
+ *         styles : { 'background-color' : '#(color)' }
+ *     };
+ */
+CKEDITOR.config.colorButton_backStyle =
+	{
+		element		: 'span',
+		styles		: { 'background-color' : '#(color)' }
+	};
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/fakeobjects/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/fakeobjects/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/fakeobjects/plugin.js	(revision 2000)
@@ -0,0 +1,111 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	var htmlFilterRules =
+	{
+		elements :
+		{
+			$ : function( element )
+			{
+				var realHtml = element.attributes._cke_realelement,
+					realFragment = realHtml && new CKEDITOR.htmlParser.fragment.fromHtml( decodeURIComponent( realHtml ) ),
+					realElement = realFragment && realFragment.children[ 0 ];
+
+				if ( realElement )
+				{
+					// If we have width/height in the element, we must move it into
+					// the real element.
+
+					var style = element.attributes.style;
+
+					if ( style )
+					{
+						// Get the width from the style.
+						var match = /(?:^|\s)width\s*:\s*(\d+)/.exec( style ),
+							width = match && match[1];
+
+						// Get the height from the style.
+						match = /(?:^|\s)height\s*:\s*(\d+)/.exec( style );
+						var height = match && match[1];
+
+						if ( width )
+							realElement.attributes.width = width;
+
+						if ( height )
+							realElement.attributes.height = height;
+					}
+				}
+
+				return realElement;
+			}
+		}
+	};
+
+	CKEDITOR.plugins.add( 'fakeobjects',
+	{
+		requires : [ 'htmlwriter' ],
+
+		afterInit : function( editor )
+		{
+			var dataProcessor = editor.dataProcessor,
+				htmlFilter = dataProcessor && dataProcessor.htmlFilter;
+
+			if ( htmlFilter )
+				htmlFilter.addRules( htmlFilterRules );
+		}
+	});
+})();
+
+CKEDITOR.editor.prototype.createFakeElement = function( realElement, className, realElementType, isResizable )
+{
+	var lang = this.lang.fakeobjects;
+	var attributes =
+	{
+		'class' : className,
+		src : CKEDITOR.getUrl( 'images/spacer.gif' ),
+		_cke_realelement : encodeURIComponent( realElement.getOuterHtml() ),
+		alt : lang[ realElementType ] || lang.unknown
+	};
+	if ( realElementType )
+		attributes._cke_real_element_type = realElementType;
+	if ( isResizable )
+		attributes._cke_resizable = isResizable;
+
+	return this.document.createElement( 'img', { attributes : attributes } );
+};
+
+CKEDITOR.editor.prototype.createFakeParserElement = function( realElement, className, realElementType, isResizable )
+{
+	var writer = new CKEDITOR.htmlParser.basicWriter();
+
+	realElement.writeHtml( writer );
+
+	var html = writer.getHtml();
+	var lang = this.lang.fakeobjects;
+
+	var attributes =
+	{
+		'class' : className,
+		src : CKEDITOR.getUrl( 'images/spacer.gif' ),
+		_cke_realelement : encodeURIComponent( html ),
+		alt : lang[ realElementType ] || lang.unknown
+	};
+
+	if ( realElementType )
+		attributes._cke_real_element_type = realElementType;
+
+	if ( isResizable )
+		attributes._cke_resizable = isResizable;
+
+	return new CKEDITOR.htmlParser.element( 'img', attributes );
+};
+
+CKEDITOR.editor.prototype.restoreRealElement = function( fakeElement )
+{
+	var html = decodeURIComponent( fakeElement.getAttribute( '_cke_realelement' ) );
+	return CKEDITOR.dom.element.createFromHtml( html, this.document );
+};
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/horizontalrule/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/horizontalrule/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/horizontalrule/plugin.js	(revision 2000)
@@ -0,0 +1,35 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Horizontal Rule plugin.
+ */
+
+(function()
+{
+	var horizontalruleCmd =
+	{
+		exec : function( editor )
+		{
+			editor.insertElement( editor.document.createElement( 'hr' ) );
+		}
+	};
+
+	var pluginName = 'horizontalrule';
+
+	// Register a plugin named "horizontalrule".
+	CKEDITOR.plugins.add( pluginName,
+	{
+		init : function( editor )
+		{
+			editor.addCommand( pluginName, horizontalruleCmd );
+			editor.ui.addButton( 'HorizontalRule',
+				{
+					label : editor.lang.horizontalrule,
+					command : pluginName
+				});
+		}
+	});
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/indent/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/indent/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/indent/plugin.js	(revision 2000)
@@ -0,0 +1,323 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Increse and decrease indent commands.
+ */
+
+(function()
+{
+	var listNodeNames = { ol : 1, ul : 1 };
+
+	function setState( editor, state )
+	{
+		editor.getCommand( this.name ).setState( state );
+	}
+
+	function onSelectionChange( evt )
+	{
+		var elements = evt.data.path.elements,
+			listNode, listItem,
+			editor = evt.editor;
+
+		for ( var i = 0 ; i < elements.length ; i++ )
+		{
+			if ( elements[i].getName() == 'li' )
+			{
+				listItem = elements[i];
+				continue;
+			}
+			if ( listNodeNames[ elements[i].getName() ] )
+			{
+				listNode = elements[i];
+				break;
+			}
+		}
+
+		if ( listNode )
+		{
+			if ( this.name == 'outdent' )
+				return setState.call( this, editor, CKEDITOR.TRISTATE_OFF );
+			else
+			{
+				while ( listItem && ( listItem = listItem.getPrevious( CKEDITOR.dom.walker.whitespaces( true ) ) ) )
+				{
+					if ( listItem.getName && listItem.getName() == 'li' )
+						return setState.call( this, editor, CKEDITOR.TRISTATE_OFF );
+				}
+				return setState.call( this, editor, CKEDITOR.TRISTATE_DISABLED );
+			}
+		}
+
+		if ( !this.useIndentClasses && this.name == 'indent' )
+			return setState.call( this, editor, CKEDITOR.TRISTATE_OFF );
+
+		var path = evt.data.path,
+			firstBlock = path.block || path.blockLimit;
+		if ( !firstBlock )
+			return setState.call( this, editor, CKEDITOR.TRISTATE_DISABLED );
+
+		if ( this.useIndentClasses )
+		{
+			var indentClass = firstBlock.$.className.match( this.classNameRegex ),
+				indentStep = 0;
+			if ( indentClass )
+			{
+				indentClass = indentClass[1];
+				indentStep = this.indentClassMap[ indentClass ];
+			}
+			if ( ( this.name == 'outdent' && !indentStep ) ||
+					( this.name == 'indent' && indentStep == editor.config.indentClasses.length ) )
+				return setState.call( this, editor, CKEDITOR.TRISTATE_DISABLED );
+			return setState.call( this, editor, CKEDITOR.TRISTATE_OFF );
+		}
+		else
+		{
+			var indent = parseInt( firstBlock.getStyle( this.indentCssProperty ), 10 );
+			if ( isNaN( indent ) )
+				indent = 0;
+			if ( indent <= 0 )
+				return setState.call( this, editor, CKEDITOR.TRISTATE_DISABLED );
+			return setState.call( this, editor, CKEDITOR.TRISTATE_OFF );
+		}
+	}
+
+	function indentList( editor, range, listNode )
+	{
+		// Our starting and ending points of the range might be inside some blocks under a list item...
+		// So before playing with the iterator, we need to expand the block to include the list items.
+		var startContainer = range.startContainer,
+			endContainer = range.endContainer;
+		while ( startContainer && !startContainer.getParent().equals( listNode ) )
+			startContainer = startContainer.getParent();
+		while ( endContainer && !endContainer.getParent().equals( listNode ) )
+			endContainer = endContainer.getParent();
+
+		if ( !startContainer || !endContainer )
+			return;
+
+		// Now we can iterate over the individual items on the same tree depth.
+		var block = startContainer,
+			itemsToMove = [],
+			stopFlag = false;
+		while ( !stopFlag )
+		{
+			if ( block.equals( endContainer ) )
+				stopFlag = true;
+			itemsToMove.push( block );
+			block = block.getNext();
+		}
+		if ( itemsToMove.length < 1 )
+			return;
+
+		// Do indent or outdent operations on the array model of the list, not the
+		// list's DOM tree itself. The array model demands that it knows as much as
+		// possible about the surrounding lists, we need to feed it the further
+		// ancestor node that is still a list.
+		var listParents = listNode.getParents( true );
+		for ( var i = 0 ; i < listParents.length ; i++ )
+		{
+			if ( listParents[i].getName && listNodeNames[ listParents[i].getName() ] )
+			{
+				listNode = listParents[i];
+				break;
+			}
+		}
+		var indentOffset = this.name == 'indent' ? 1 : -1,
+			startItem = itemsToMove[0],
+			lastItem = itemsToMove[ itemsToMove.length - 1 ],
+			database = {};
+
+		// Convert the list DOM tree into a one dimensional array.
+		var listArray = CKEDITOR.plugins.list.listToArray( listNode, database );
+
+		// Apply indenting or outdenting on the array.
+		var baseIndent = listArray[ lastItem.getCustomData( 'listarray_index' ) ].indent;
+		for ( i = startItem.getCustomData( 'listarray_index' ) ; i <= lastItem.getCustomData( 'listarray_index' ) ; i++ )
+			listArray[i].indent += indentOffset;
+		for ( i = lastItem.getCustomData( 'listarray_index' ) + 1 ;
+				i < listArray.length && listArray[i].indent > baseIndent ; i++ )
+			listArray[i].indent += indentOffset;
+
+		// Convert the array back to a DOM forest (yes we might have a few subtrees now).
+		// And replace the old list with the new forest.
+		var newList = CKEDITOR.plugins.list.arrayToList( listArray, database, null, editor.config.enterMode, 0 );
+
+		// Avoid nested <li> after outdent even they're visually same,
+		// recording them for later refactoring.(#3982)
+		if ( this.name == 'outdent' )
+		{
+			var parentLiElement;
+			if ( ( parentLiElement = listNode.getParent() ) && parentLiElement.is( 'li' ) )
+			{
+				var children = newList.listNode.getChildren(),
+					pendingLis = [],
+					count = children.count(),
+					child;
+
+				for ( i = count - 1 ; i >= 0 ; i-- )
+				{
+					if( ( child = children.getItem( i ) ) && child.is && child.is( 'li' )  )
+						pendingLis.push( child );
+				}
+			}
+		}
+
+		if ( newList )
+			newList.listNode.replace( listNode );
+
+		// Move the nested <li> to be appeared after the parent.
+		if ( pendingLis && pendingLis.length )
+		{
+			for (  i = 0; i < pendingLis.length ; i++ )
+			{
+				var li = pendingLis[ i ],
+					followingList = li;
+
+				// Nest preceding <ul>/<ol> inside current <li> if any.
+				while( ( followingList = followingList.getNext() ) &&
+					   followingList.is &&
+					   followingList.getName() in listNodeNames )
+				{
+					li.append( followingList );
+				}
+
+				li.insertAfter( parentLiElement );
+			}
+		}
+
+		// Clean up the markers.
+		CKEDITOR.dom.element.clearAllMarkers( database );
+	}
+
+	function indentBlock( editor, range )
+	{
+		var iterator = range.createIterator(),
+			enterMode = editor.config.enterMode;
+		iterator.enforceRealBlocks = true;
+		iterator.enlargeBr = enterMode != CKEDITOR.ENTER_BR;
+		var block;
+		while ( ( block = iterator.getNextParagraph() ) )
+		{
+
+			if ( this.useIndentClasses )
+			{
+				// Transform current class name to indent step index.
+				var indentClass = block.$.className.match( this.classNameRegex ),
+					indentStep = 0;
+				if ( indentClass )
+				{
+					indentClass = indentClass[1];
+					indentStep = this.indentClassMap[ indentClass ];
+				}
+
+				// Operate on indent step index, transform indent step index back to class
+				// name.
+				if ( this.name == 'outdent' )
+					indentStep--;
+				else
+					indentStep++;
+				indentStep = Math.min( indentStep, editor.config.indentClasses.length );
+				indentStep = Math.max( indentStep, 0 );
+				var className = CKEDITOR.tools.ltrim( block.$.className.replace( this.classNameRegex, '' ) );
+				if ( indentStep < 1 )
+					block.$.className = className;
+				else
+					block.addClass( editor.config.indentClasses[ indentStep - 1 ] );
+			}
+			else
+			{
+				var currentOffset = parseInt( block.getStyle( this.indentCssProperty ), 10 );
+				if ( isNaN( currentOffset ) )
+					currentOffset = 0;
+				currentOffset += ( this.name == 'indent' ? 1 : -1 ) * editor.config.indentOffset;
+				currentOffset = Math.max( currentOffset, 0 );
+				currentOffset = Math.ceil( currentOffset / editor.config.indentOffset ) * editor.config.indentOffset;
+				block.setStyle( this.indentCssProperty, currentOffset ? currentOffset + editor.config.indentUnit : '' );
+				if ( block.getAttribute( 'style' ) === '' )
+					block.removeAttribute( 'style' );
+			}
+		}
+	}
+
+	function indentCommand( editor, name )
+	{
+		this.name = name;
+		this.useIndentClasses = editor.config.indentClasses && editor.config.indentClasses.length > 0;
+		if ( this.useIndentClasses )
+		{
+			this.classNameRegex = new RegExp( '(?:^|\\s+)(' + editor.config.indentClasses.join( '|' ) + ')(?=$|\\s)' );
+			this.indentClassMap = {};
+			for ( var i = 0 ; i < editor.config.indentClasses.length ; i++ )
+				this.indentClassMap[ editor.config.indentClasses[i] ] = i + 1;
+		}
+		else
+			this.indentCssProperty = editor.config.contentsLangDirection == 'ltr' ? 'margin-left' : 'margin-right';
+	}
+
+	indentCommand.prototype = {
+		exec : function( editor )
+		{
+			var selection = editor.getSelection(),
+				range = selection && selection.getRanges()[0];
+
+			if ( !selection || !range )
+				return;
+
+			var bookmarks = selection.createBookmarks( true ),
+				nearestListBlock = range.getCommonAncestor();
+
+			while ( nearestListBlock && !( nearestListBlock.type == CKEDITOR.NODE_ELEMENT &&
+				listNodeNames[ nearestListBlock.getName() ] ) )
+				nearestListBlock = nearestListBlock.getParent();
+
+			if ( nearestListBlock )
+				indentList.call( this, editor, range, nearestListBlock );
+			else
+				indentBlock.call( this, editor, range );
+
+			editor.focus();
+			editor.forceNextSelectionCheck();
+			selection.selectBookmarks( bookmarks );
+		}
+	};
+
+	CKEDITOR.plugins.add( 'indent',
+	{
+		init : function( editor )
+		{
+			// Register commands.
+			var indent = new indentCommand( editor, 'indent' ),
+				outdent = new indentCommand( editor, 'outdent' );
+			editor.addCommand( 'indent', indent );
+			editor.addCommand( 'outdent', outdent );
+
+			// Register the toolbar buttons.
+			editor.ui.addButton( 'Indent',
+				{
+					label : editor.lang.indent,
+					command : 'indent'
+				});
+			editor.ui.addButton( 'Outdent',
+				{
+					label : editor.lang.outdent,
+					command : 'outdent'
+				});
+
+			// Register the state changing handlers.
+			editor.on( 'selectionChange', CKEDITOR.tools.bind( onSelectionChange, indent ) );
+			editor.on( 'selectionChange', CKEDITOR.tools.bind( onSelectionChange, outdent ) );
+		},
+
+		requires : [ 'domiterator', 'list' ]
+	} );
+})();
+
+CKEDITOR.tools.extend( CKEDITOR.config,
+	{
+		indentOffset : 40,
+		indentUnit : 'px',
+		indentClasses : null
+	});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/scayt/dialogs/options.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/scayt/dialogs/options.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/scayt/dialogs/options.js	(revision 2000)
@@ -0,0 +1,494 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'scaytcheck', function( editor )
+{
+	var firstLoad = true,
+		captions,
+		doc = CKEDITOR.document,
+		tags = [],
+		i,
+		contents = [],
+		userDicActive = false;
+	var dic_buttons = [
+		// [0] contains buttons for creating
+		"dic_create,dic_restore",
+		// [1] contains buton for manipulation
+		"dic_rename,dic_delete"
+	];
+	var tags_contents =  [
+				{
+					id : 'options',
+					label : editor.lang.scayt.optionsTab,
+					elements : [
+						{
+							type : 'html',
+							id : 'options',
+							html : 	'<div class="inner_options">' +
+									'	<div class="messagebox"></div>' +
+									'	<div style="display:none;">' +
+									'		<input type="checkbox" value="0" id="allCaps" />' +
+									'		<label for="allCaps" id="label_allCaps"></label>' +
+									'	</div>' +
+									'	<div style="display:none;">' +
+									'		<input type="checkbox" value="0" id="ignoreDomainNames" />' +
+									'		<label for="ignoreDomainNames" id="label_ignoreDomainNames"></label>' +
+									'	</div>' +
+									'	<div style="display:none;">' +
+									'	<input type="checkbox" value="0" id="mixedCase" />' +
+									'		<label for="mixedCase" id="label_mixedCase"></label>' +
+									'	</div>' +
+									'	<div style="display:none;">' +
+									'		<input type="checkbox" value="0" id="mixedWithDigits" />' +
+									'		<label for="mixedWithDigits" id="label_mixedWithDigits"></label>' +
+									'	</div>' +
+									'</div>'
+						}
+					]
+				},
+				{
+					id : 'langs',
+					label : editor.lang.scayt.languagesTab,
+					elements : [
+						{
+							type : 'html',
+							id : 'langs',
+							html : 	'<div class="inner_langs">' +
+									'	<div class="messagebox"></div>	' +
+									'   <div style="float:left;width:47%;margin-left:5px;" id="scayt_lcol" ></div>' +
+									'   <div style="float:left;width:47%;margin-left:15px;" id="scayt_rcol"></div>' +
+									'</div>'
+						}
+					]
+				},
+				{
+					id : 'dictionaries',
+					label : editor.lang.scayt.dictionariesTab,
+					elements : [
+						{
+							type : 'html',
+							style: '',
+							id : 'dic',
+							html : 	'<div class="inner_dictionary" style="text-align:left; white-space:normal;">' +
+									'	<div style="margin:5px auto; width:80%;white-space:normal; overflow:hidden;" id="dic_message"> </div>' +
+									'	<div style="margin:5px auto; width:80%;white-space:normal;"> ' +
+									'       <span class="cke_dialog_ui_labeled_label" >Dictionary name</span><br>'+
+									'		<span class="cke_dialog_ui_labeled_content" >'+
+									'			<div class="cke_dialog_ui_input_text">'+
+									'				<input id="dic_name" type="text" class="cke_dialog_ui_input_text"/>'+
+									'		</div></span></div>'+
+									'		<div style="margin:5px auto; width:80%;white-space:normal;">'+
+									'			<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_create">'+
+									'				</a>' +
+									'			<a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_delete">'+
+									'				</a>' +
+									'			<a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_rename">'+
+									'				</a>' +
+									'			<a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_restore">'+
+									'				</a>' +
+									'		</div>' +
+									'	<div style="margin:5px auto; width:95%;white-space:normal;" id="dic_info"></div>' +
+									'</div>'
+						}
+					]
+				},
+				{
+					id : 'about',
+					label : editor.lang.scayt.aboutTab,
+					elements : [
+						{
+							type : 'html',
+							id : 'about',
+							style : 'margin: 10px 40px;',
+							html : '<div id="scayt_about"></div>'
+						}
+					]
+				}
+			];
+	var dialogDefiniton = {
+		title : editor.lang.scayt.title,
+		minWidth : 340,
+		minHeight : 200,
+		onShow : function()
+		{
+			var dialog = this;
+			dialog.data = editor.fire( 'scaytDialog', {} );
+			dialog.options = dialog.data.scayt_control.option();
+			dialog.sLang = dialog.data.scayt_control.sLang;
+
+			if ( !dialog.data || !dialog.data.scayt || !dialog.data.scayt_control )
+			{
+				alert( 'Error loading application service' );
+				dialog.hide();
+				return;
+			}
+
+			var stop = 0;
+			if ( firstLoad )
+			{
+				dialog.data.scayt.getCaption( 'en', function( caps )
+					{
+						if ( stop++ > 0 )	// Once only
+							return;
+						captions = caps;
+						init_with_captions.apply( dialog );
+						reload.apply( dialog );
+						firstLoad = false;
+					});
+			}
+			else
+				reload.apply( dialog );
+
+			dialog.selectPage( dialog.data.tab );
+		},
+		onOk : function()
+		{
+			var scayt_control =  this.data.scayt_control,
+				o = scayt_control.option(),
+				c = 0;
+
+			// Set up options if any was set.
+			for ( var i in this.options )
+			{
+				if (o[i] != this.options[ i ] && c === 0 )
+				{
+					scayt_control.option( this.options );
+					c++;
+				}
+			}
+
+			// Setup languge if it was changed.
+			var csLang = this.chosed_lang;
+			if ( csLang && this.data.sLang != csLang )
+			{
+				scayt_control.setLang( csLang );
+				c++;
+			}
+			if ( c > 0 )
+				scayt_control.refresh();
+		},
+		contents : contents
+        };
+
+	var scayt_control = CKEDITOR.plugins.scayt.getScayt( editor );
+	if ( scayt_control )
+	{
+		tags = scayt_control.uiTags;
+	}
+
+	for ( i in tags ) {
+		if ( tags[ i ] == 1 )
+			contents[ contents.length ] = tags_contents[ i ];
+	}
+	if ( tags[2] == 1 )
+		userDicActive = true;
+
+	function onDicButtonClick()
+	{
+		var dic_name = doc.getById('dic_name').getValue();
+		if ( !dic_name )
+		{
+			dic_error_message(" Dictionary name should not be empty. ");
+			return false;
+		}
+		//apply handler
+		window.dic[ this.getId() ].apply( null, [ this, dic_name, dic_buttons ] );
+
+		return true;
+	}
+	var init_with_captions = function()
+	{
+		var dialog = this,
+			lang_list = dialog.data.scayt.getLangList(),
+			buttons = [ 'dic_create','dic_delete','dic_rename','dic_restore' ],
+			labels = [ 'mixedCase','mixedWithDigits','allCaps','ignoreDomainNames' ],
+			i;
+
+		// Add buttons titles
+		if (userDicActive)
+		{
+			for ( i in buttons )
+			{
+				var button = buttons[ i ];
+				doc.getById( button ).setHtml( '<span class="cke_dialog_ui_button">' + captions[ 'button_' + button]  +'</span>' );
+			}
+			doc.getById( 'dic_info' ).setHtml( captions[ 'dic_info' ] );
+		}
+
+
+		// Fill options and dictionary labels.
+		for ( i in labels )
+		{
+			var label = 'label_' + labels[ i ],
+				labelElement = doc.getById( label );
+
+			if (  'undefined' != typeof labelElement
+			   && 'undefined' != typeof captions[ label ]
+			   && 'undefined' != typeof dialog.options[labels[ i ]] )
+			{
+				labelElement.setHtml( captions[ label ] );
+				var labelParent = labelElement.getParent();
+				labelParent.$.style.display = "block";
+			}
+		}
+
+		var about = '<p>' + captions[ 'about_throwt_image' ] + '</p>'+
+					'<p>' + captions[ 'version' ]  + dialog.data.scayt.version.toString() + '</p>' +
+					'<p>' + captions[ 'about_throwt_copy' ] + '</p>';
+
+		doc.getById( 'scayt_about' ).setHtml( about );
+
+		// Create languages tab.
+		var createOption = function( option, list )
+		{
+			var label = doc.createElement( 'label' );
+			label.setAttribute( 'for', 'cke_option' + option );
+			label.setHtml( list[ option ] );
+
+			if ( dialog.sLang == option )	// Current.
+				dialog.chosed_lang = option;
+
+			var div = doc.createElement( 'div' );
+			var radio = CKEDITOR.dom.element.createFromHtml( '<input id="cke_option' +
+					option + '" type="radio" ' +
+					( dialog.sLang == option ? 'checked="checked"' : '' ) +
+					' value="' + option + '" name="scayt_lang" />' );
+
+			radio.on( 'click', function()
+				{
+					this.$.checked = true;
+					dialog.chosed_lang = option;
+				});
+
+			div.append( radio );
+			div.append( label );
+
+			return {
+				lang : list[ option ],
+				code : option,
+				radio : div
+			};
+		};
+
+		var langList = [];
+		for ( i in lang_list.rtl )
+			langList[ langList.length ] = createOption( i, lang_list.ltr );
+
+		for ( i in lang_list.ltr )
+			langList[ langList.length  ] = createOption( i, lang_list.ltr );
+
+		langList.sort( 	function( lang1, lang2 )
+			{
+				return ( lang2.lang > lang1.lang ) ? -1 : 1 ;
+			});
+
+		var fieldL = doc.getById( 'scayt_lcol' ),
+			fieldR = doc.getById( 'scayt_rcol' );
+		for ( i=0; i < langList.length; i++ )
+		{
+			var field = ( i < langList.length / 2 ) ? fieldL : fieldR;
+			field.append( langList[ i ].radio );
+		}
+
+		// user dictionary handlers
+		var dic = {};
+		dic.dic_create = function( el, dic_name , dic_buttons )
+			{
+				// comma separated button's ids include repeats if exists
+				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
+
+				var err_massage = captions["err_dic_create"];
+				var suc_massage = captions["succ_dic_create"];
+				//console.info("--plugin ");
+
+				window.scayt.createUserDictionary(dic_name,
+					function(arg)
+						{
+							//console.info( "dic_create callback called with args" , arg );
+							hide_dic_buttons ( all_buttons );
+							display_dic_buttons ( dic_buttons[1] );
+							suc_massage = suc_massage.replace("%s" , arg.dname );
+							dic_success_message (suc_massage);
+						},
+					function(arg)
+						{
+							//console.info( "dic_create errorback called with args" , arg )
+							err_massage = err_massage.replace("%s" ,arg.dname );
+							dic_error_message ( err_massage + "( "+ (arg.message || "") +")");
+						});
+
+			};
+
+		dic.dic_rename = function( el, dic_name )
+			{
+				//
+				// try to rename dictionary
+				// @TODO: rename dict
+				//console.info ( captions["err_dic_rename"] )
+				var err_massage = captions["err_dic_rename"] || "";
+				var suc_massage = captions["succ_dic_rename"] || "";
+				window.scayt.renameUserDictionary(dic_name,
+					function(arg)
+						{
+							//console.info( "dic_rename callback called with args" , arg );
+							suc_massage = suc_massage.replace("%s" , arg.dname );
+							set_dic_name( dic_name );
+							dic_success_message ( suc_massage );
+						},
+					function(arg)
+						{
+							//console.info( "dic_rename errorback called with args" , arg )
+							err_massage = err_massage.replace("%s" , arg.dname  );
+							set_dic_name( dic_name );
+							dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" );
+						});
+			};
+
+		dic.dic_delete = function ( el, dic_name , dic_buttons )
+			{
+				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
+				var err_massage = captions["err_dic_delete"];
+				var suc_massage = captions["succ_dic_delete"];
+
+				// try to delete dictionary
+				// @TODO: delete dict
+				window.scayt.deleteUserDictionary(
+					function(arg)
+						{
+							//console.info( "dic_delete callback " , dic_name ,arg );
+							suc_massage = suc_massage.replace("%s" , arg.dname );
+							hide_dic_buttons ( all_buttons );
+							display_dic_buttons ( dic_buttons[0] );
+							set_dic_name( "" ); // empty input field
+							dic_success_message( suc_massage );
+						},
+					function(arg)
+						{
+							//console.info( " dic_delete errorback called with args" , arg )
+							err_massage = err_massage.replace("%s" , arg.dname );
+							dic_error_message(err_massage);
+						});
+			};
+
+		dic.dic_restore = dialog.dic_restore || function ( el, dic_name , dic_buttons )
+			{
+				// try to restore existing dictionary
+				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
+				var err_massage = captions["err_dic_restore"];
+				var suc_massage = captions["succ_dic_restore"];
+
+				window.scayt.restoreUserDictionary(dic_name,
+					function(arg)
+						{
+							//console.info( "dic_restore callback called with args" , arg );
+							suc_massage = suc_massage.replace("%s" , arg.dname );
+							hide_dic_buttons ( all_buttons );
+							display_dic_buttons(dic_buttons[1]);
+							dic_success_message( suc_massage );
+						},
+					function(arg)
+						{
+							//console.info( " dic_restore errorback called with args" , arg )
+							err_massage = err_massage.replace("%s" , arg.dname );
+							dic_error_message( err_massage );
+						});
+			};
+
+		// ** bind event listeners
+		var arr_buttons = ( dic_buttons[0] + ',' + dic_buttons[1] ).split( ',' ),
+			l;
+
+		for ( i = 0, l = arr_buttons.length ; i < l ; i += 1 )
+		{
+		 	var dic_button = doc.getById(arr_buttons[i]);
+			if ( dic_button )
+				dic_button.on( 'click', onDicButtonClick, this );
+		}
+	};
+
+	var reload = function()
+	{
+		var dialog = this;
+
+		// Animate options.
+		for ( var i in dialog.options )
+		{
+			var checkbox = doc.getById( i );
+			if ( checkbox )
+			{
+				checkbox.removeAttribute( 'checked' );
+				if ( dialog.options[ i ] == 1 )
+					checkbox.setAttribute( 'checked', 'checked' );
+
+				// Bind events. Do it only once.
+				if ( firstLoad )
+				{
+					checkbox.on( 'click', function()
+						{
+							dialog.options[ this.getId() ] = this.$.checked ? 1 : 0 ;
+						} );
+				}
+			}
+		}
+
+		// * user dictionary
+		if ( userDicActive ){
+			window.scayt.getNameUserDictionary(
+			function( o )
+			{
+				var dic_name = o.dname;
+				if ( dic_name )
+				{
+					doc.getById( 'dic_name' ).setValue(dic_name);
+					display_dic_buttons( dic_buttons[1] );
+				}
+				else
+					display_dic_buttons( dic_buttons[0] );
+
+			},
+			function ()
+			{
+				doc.getById( 'dic_name' ).setValue("");
+			});
+			dic_success_message("");
+		}
+
+	};
+
+	function dic_error_message ( m )
+		{
+			doc.getById('dic_message').setHtml('<span style="color:red;">' + m + '</span>' );
+		}
+    function dic_success_message ( m )
+		{
+			doc.getById('dic_message').setHtml('<span style="color:blue;">' + m + '</span>') ;
+		}
+	function display_dic_buttons ( sIds )
+		{
+
+			sIds = String( sIds );
+			var aIds = sIds.split(',');
+			for ( var i=0, l = aIds.length; i < l ; i+=1)
+			{
+				doc.getById( aIds[i] ).$.style.display = "inline";
+			}
+
+		}
+	function hide_dic_buttons ( sIds )
+		{
+			sIds = String( sIds );
+			var aIds = sIds.split(',');
+			for ( var i = 0, l = aIds.length; i < l ; i += 1 )
+			{
+				doc.getById( aIds[i] ).$.style.display = "none";
+			}
+		}
+	function set_dic_name ( dic_name )
+		{
+			doc.getById('dic_name').$.value= dic_name;
+		}
+
+	return dialogDefiniton;
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/scayt/dialogs/toolbar.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/scayt/dialogs/toolbar.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/scayt/dialogs/toolbar.css	(revision 2000)
@@ -0,0 +1,71 @@
+a
+{
+	text-decoration:none;
+	padding: 2px 4px 4px 6px;
+	display : block;
+	border-width: 1px;
+	border-style: solid;
+	margin : 0px;
+}
+
+a.cke_scayt_toogle:hover,
+a.cke_scayt_toogle:focus,
+a.cke_scayt_toogle:active
+{
+	border-color: #316ac5;
+	background-color: #dff1ff;
+	color : #000;
+	cursor: pointer;
+	margin : 0px;
+}
+a.cke_scayt_toogle {
+	color : #316ac5;
+	border-color: #fff;
+}
+.scayt_enabled a.cke_scayt_item {
+	color : #316ac5;
+	border-color: #fff;
+	margin : 0px;
+}
+.scayt_disabled a.cke_scayt_item {
+	color : gray;
+	border-color : #fff;
+}
+.scayt_enabled a.cke_scayt_item:hover,
+.scayt_enabled a.cke_scayt_item:focus,
+.scayt_enabled a.cke_scayt_item:active
+{
+	border-color: #316ac5;
+	background-color: #dff1ff;
+	color : #000;
+	cursor: pointer;
+}
+.scayt_disabled a.cke_scayt_item:hover,
+.scayt_disabled a.cke_scayt_item:focus,
+.scayt_disabled a.cke_scayt_item:active
+{
+	border-color: gray;
+	background-color: #dff1ff;
+	color : gray;
+	cursor: no-drop;
+}
+.cke_scayt_set_on, .cke_scayt_set_off
+{
+	display: none;
+}
+.scayt_enabled .cke_scayt_set_on
+{
+	display: none;
+}
+.scayt_disabled .cke_scayt_set_on
+{
+	display: inline;
+}
+.scayt_disabled .cke_scayt_set_off
+{
+	display: none;
+}
+.scayt_enabled  .cke_scayt_set_off
+{
+	display: inline;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/scayt/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/scayt/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/scayt/plugin.js	(revision 2000)
@@ -0,0 +1,512 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Spell Check As You Type (SCAYT).
+ * Button name : Scayt.
+ */
+
+(function()
+{
+	var commandName 	= 'scaytcheck',
+		openPage		= '';
+
+	var onEngineLoad = function()
+	{
+		var editor = this;
+
+		var createInstance = function()	// Create new instance every time Document is created.
+		{
+			// Initialise Scayt instance.
+			var oParams = {};
+			oParams.srcNodeRef = editor.document.getWindow().$.frameElement; 		// Get the iframe.
+			// syntax : AppName.AppVersion@AppRevision
+			oParams.assocApp  = "CKEDITOR." + CKEDITOR.version + "@" + CKEDITOR.revision;
+
+			oParams.customerid = editor.config.scayt_customerid  || "1:11111111111111111111111111111111111111";
+			oParams.customDictionaryName = editor.config.scayt_customDictionaryName;
+			oParams.userDictionaryName = editor.config.scayt_userDictionaryName;
+			oParams.defLang = editor.scayt_defLang;
+
+			if ( CKEDITOR._scaytParams )
+			{
+				for ( var k in CKEDITOR._scaytParams )
+				{
+					oParams[ k ] = CKEDITOR._scaytParams[ k ];
+				}
+			}
+
+			var scayt_control = new window.scayt( oParams );
+
+			// Copy config.
+			var	lastInstance = plugin.instances[ editor.name ];
+			if ( lastInstance )
+			{
+				scayt_control.sLang = lastInstance.sLang;
+				scayt_control.option( lastInstance.option() );
+				scayt_control.paused = lastInstance.paused;
+			}
+
+			plugin.instances[ editor.name ] = scayt_control;
+
+			try {
+				scayt_control.setDisabled( scayt_control.paused === false );				// I really don't know why it causes JS error in IE
+			} catch (e) {}
+			editor.fire( 'showScaytState' );
+		};
+
+		editor.on( 'contentDom', createInstance );
+		editor.on( 'contentDomUnload', function()
+			{
+				// Remove scripts.
+				var scripts = CKEDITOR.document.getElementsByTag( 'script' ),
+					scaytIdRegex =  /^dojoIoScript(\d+)$/i,
+					scaytSrcRegex =  /^https?:\/\/svc\.spellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i;
+
+				for ( var i=0; i < scripts.count(); i++ )
+				{
+					var script = scripts.getItem( i ),
+						id = script.getId(),
+						src = script.getAttribute( 'src' );
+
+					if ( id && src && id.match( scaytIdRegex ) && src.match( scaytSrcRegex ))
+						script.remove();
+				}
+			});
+
+		editor.on( 'beforeCommandExec', function( ev )		// Disable SCAYT before Source command execution.
+			{
+				if ( (ev.data.name == 'source' ||  ev.data.name == 'newpage') && editor.mode == 'wysiwyg' )
+				{
+					var scayt_instanse = plugin.getScayt( editor );
+					if ( scayt_instanse )
+					{
+						scayt_instanse.paused = !scayt_instanse.disabled;
+						scayt_instanse.destroy();
+						delete plugin.instances[ editor.name ];
+					}
+				}
+			});
+
+		// Listen to data manipulation to reflect scayt markup.
+		editor.on( 'afterSetData', function()
+			{
+				if ( plugin.isScaytEnabled( editor ) )
+					plugin.getScayt( editor ).refresh();
+			});
+
+		// Reload spell-checking for current word after insertion completed.
+		editor.on( 'insertElement', function()
+			{
+				var scayt_instance = plugin.getScayt( editor );
+				if ( plugin.isScaytEnabled( editor ) )
+				{
+					// Unlock the selection before reload, SCAYT will take
+					// care selection update.
+					if ( CKEDITOR.env.ie )
+						editor.getSelection().unlock( true );
+
+					// Swallow any SCAYT engine errors.
+					try{
+						scayt_instance.refresh();
+					}catch( er )
+					{}
+				}
+			}, this, null, 50 );
+
+		editor.on( 'scaytDialog', function( ev )	// Communication with dialog.
+			{
+				ev.data.djConfig = window.djConfig;
+				ev.data.scayt_control = plugin.getScayt( editor );
+				ev.data.tab = openPage;
+				ev.data.scayt = window.scayt;
+			});
+
+		var dataProcessor = editor.dataProcessor,
+			htmlFilter = dataProcessor && dataProcessor.htmlFilter;
+		if ( htmlFilter )
+		{
+			htmlFilter.addRules(
+				{
+					elements :
+					{
+						span : function( element )
+						{
+							if ( element.attributes.scayt_word && element.attributes.scaytid )
+							{
+								delete element.name;	// Write children, but don't write this node.
+								return element;
+							}
+						}
+					}
+				}
+			);
+		}
+
+		if ( editor.document )
+			createInstance();
+	};
+
+	CKEDITOR.plugins.scayt =
+	{
+		engineLoaded : false,
+		instances : {},
+		getScayt : function( editor )
+		{
+			return this.instances[ editor.name ];
+		},
+		isScaytReady : function( editor )
+		{
+			return this.engineLoaded === true &&
+				'undefined' !== typeof window.scayt && this.getScayt( editor );
+		},
+		isScaytEnabled : function( editor )
+		{
+			var scayt_instanse = this.getScayt( editor );
+			return ( scayt_instanse ) ? scayt_instanse.disabled === false : false;
+		},
+		loadEngine : function( editor )
+		{
+			if ( this.engineLoaded === true )
+				return onEngineLoad.apply( editor );	// Add new instance.
+			else if ( this.engineLoaded == -1 )			// We are waiting.
+				return CKEDITOR.on( 'scaytReady', function(){ onEngineLoad.apply( editor );} );	// Use function(){} to avoid rejection as duplicate.
+
+			CKEDITOR.on( 'scaytReady', onEngineLoad, editor );
+			CKEDITOR.on( 'scaytReady', function()
+				{
+					this.engineLoaded = true;
+				},
+				this,
+				null,
+				0 );	// First to run.
+
+			this.engineLoaded = -1;	// Loading in progress.
+
+			// compose scayt url
+			var protocol = document.location.protocol;
+			// Default to 'http' for unknown.
+			protocol = protocol.search( /https?:/) != -1? protocol : 'http:';
+			var baseUrl  = "svc.spellchecker.net/spellcheck/lf/scayt/scayt1.js";
+
+			var scaytUrl  =  editor.config.scayt_srcUrl || ( protocol + "//" + baseUrl );
+			var scaytConfigBaseUrl =  plugin.parseUrl( scaytUrl ).path +  "/";
+
+			CKEDITOR._djScaytConfig =
+			{
+				baseUrl: scaytConfigBaseUrl,
+				addOnLoad:
+				[
+					function()
+					{
+						CKEDITOR.fireOnce( "scaytReady" );
+					}
+				],
+				isDebug: false
+			};
+			// Append javascript code.
+			CKEDITOR.document.getHead().append(
+				CKEDITOR.document.createElement( 'script',
+					{
+						attributes :
+							{
+								type : 'text/javascript',
+								src : scaytUrl
+							}
+					})
+			);
+
+			return null;
+		},
+		parseUrl : function ( data )
+		{
+			var match;
+			if ( data.match && ( match = data.match(/(.*)[\/\\](.*?\.\w+)$/) ) )
+				return { path: match[1], file: match[2] };
+			else
+				return data;
+		}
+	};
+
+	var plugin = CKEDITOR.plugins.scayt;
+
+	// Context menu constructing.
+	var addButtonCommand = function( editor, buttonName, buttonLabel, commandName, command, menugroup, menuOrder )
+	{
+		editor.addCommand( commandName, command );
+
+		// If the "menu" plugin is loaded, register the menu item.
+		editor.addMenuItem( commandName,
+			{
+				label : buttonLabel,
+				command : commandName,
+				group : menugroup,
+				order : menuOrder
+			});
+	};
+
+	var commandDefinition =
+	{
+		preserveState : true,
+		editorFocus : false,
+
+		exec: function( editor )
+		{
+			if ( plugin.isScaytReady( editor ) )
+			{
+				var isEnabled = plugin.isScaytEnabled( editor );
+
+				this.setState( isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_ON );
+
+				var scayt_control = plugin.getScayt( editor );
+				scayt_control.setDisabled( isEnabled );
+			}
+			else if ( !editor.config.scayt_autoStartup && plugin.engineLoaded >= 0 )	// Load first time
+			{
+				this.setState( CKEDITOR.TRISTATE_DISABLED );
+
+				editor.on( 'showScaytState', function()
+					{
+						this.removeListener();
+						this.setState( plugin.isScaytEnabled( editor ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF );
+					},
+					this);
+
+				plugin.loadEngine( editor );
+			}
+		}
+	};
+
+	// Add scayt plugin.
+	CKEDITOR.plugins.add( 'scayt',
+	{
+		requires : [ 'menubutton' ],
+
+		beforeInit : function( editor )
+		{
+			// Register own rbc menu group.
+			editor.config.menu_groups = 'scayt_suggest,scayt_moresuggest,scayt_control,' + editor.config.menu_groups;
+		},
+
+		init : function( editor )
+		{
+			var moreSuggestions = {};
+			var mainSuggestions = {};
+
+			// Scayt command.
+			var command = editor.addCommand( commandName, commandDefinition );
+
+			// Add Options dialog.
+			CKEDITOR.dialog.add( commandName, CKEDITOR.getUrl( this.path + 'dialogs/options.js' ) );
+
+			var menuGroup = 'scaytButton';
+			editor.addMenuGroup( menuGroup );
+			editor.addMenuItems(
+				{
+					scaytToggle :
+					{
+						label : editor.lang.scayt.enable,
+						command : commandName,
+						group : menuGroup
+					},
+
+					scaytOptions :
+					{
+						label : editor.lang.scayt.options,
+						group : menuGroup,
+						onClick : function()
+						{
+							openPage = 'options';
+							editor.openDialog( commandName );
+						}
+					},
+
+					scaytLangs :
+					{
+						label : editor.lang.scayt.langs,
+						group : menuGroup,
+						onClick : function()
+						{
+							openPage = 'langs';
+							editor.openDialog( commandName );
+						}
+					},
+
+					scaytAbout :
+					{
+						label : editor.lang.scayt.about,
+						group : menuGroup,
+						onClick : function()
+						{
+							openPage = 'about';
+							editor.openDialog( commandName );
+						}
+					}
+				});
+
+				editor.ui.add( 'Scayt', CKEDITOR.UI_MENUBUTTON,
+					{
+						label : editor.lang.scayt.title,
+						title : editor.lang.scayt.title,
+						className : 'cke_button_scayt',
+						onRender: function()
+						{
+						command.on( 'state', function()
+							{
+								this.setState( command.state );
+							},
+							this);
+					},
+					onMenu : function()
+					{
+						var isEnabled = plugin.isScaytEnabled( editor );
+
+						editor.getMenuItem( 'scaytToggle' ).label = editor.lang.scayt[ isEnabled ? 'disable' : 'enable' ];
+
+							return {
+								scaytToggle : CKEDITOR.TRISTATE_OFF,
+								scaytOptions : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
+								scaytLangs : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
+								scaytAbout : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED
+							};
+						}
+					});
+
+			// If the "contextmenu" plugin is loaded, register the listeners.
+			if ( editor.contextMenu && editor.addMenuItems )
+			{
+				editor.contextMenu.addListener( function( element )
+					{
+						if ( !( plugin.isScaytEnabled( editor ) && element ) )
+							return null;
+
+						var scayt_control = plugin.getScayt( editor ),
+							word = scayt_control.getWord( element.$ );
+
+						if ( !word )
+							return null;
+
+						var sLang = scayt_control.getLang(),
+							_r = {},
+							items_suggestion = window.scayt.getSuggestion( word, sLang );
+						if (!items_suggestion || !items_suggestion.length )
+							return null;
+						// Remove unused commands and menuitems
+						for ( i in moreSuggestions )
+						{
+							delete editor._.menuItems[ i ];
+							delete editor._.commands[ i ];
+						}
+						for ( i in mainSuggestions )
+						{
+							delete editor._.menuItems[ i ];
+							delete editor._.commands[ i ];
+						}
+						moreSuggestions = {};		// Reset items.
+						mainSuggestions = {};
+
+						var moreSuggestionsUnable = false;
+
+						for ( var i = 0, l = items_suggestion.length; i < l; i += 1 )
+						{
+							var commandName = 'scayt_suggestion_' + items_suggestion[i].replace( ' ', '_' );
+							var exec = ( function( el, s )
+								{
+									return {
+										exec: function()
+										{
+											scayt_control.replace(el, s);
+										}
+									};
+								})( element.$, items_suggestion[i] );
+
+							if ( i < editor.config.scayt_maxSuggestions )
+							{
+								addButtonCommand( editor, 'button_' + commandName, items_suggestion[i],
+									commandName, exec, 'scayt_suggest', i + 1 );
+								_r[ commandName ] = CKEDITOR.TRISTATE_OFF;
+								mainSuggestions[ commandName ] = CKEDITOR.TRISTATE_OFF;
+							}
+							else
+							{
+								addButtonCommand( editor, 'button_' + commandName, items_suggestion[i],
+									commandName, exec, 'scayt_moresuggest', i + 1 );
+								moreSuggestions[ commandName ] = CKEDITOR.TRISTATE_OFF;
+								moreSuggestionsUnable = true;
+							}
+						}
+						if ( moreSuggestionsUnable )
+							// Rgister the More suggestions group;
+							editor.addMenuItem( 'scayt_moresuggest',
+								{
+									label : editor.lang.scayt.moreSuggestions,
+									group : 'scayt_moresuggest',
+									order : 10,
+									getItems : function()
+									{
+										return moreSuggestions;
+									}
+								});
+
+
+						var ignore_command =
+						{
+							exec: function()
+							{
+								scayt_control.ignore( element.$ );
+							}
+						};
+						var ignore_all_command =
+						{
+							exec: function()
+							{
+								scayt_control.ignoreAll( element.$ );
+							}
+						};
+						var addword_command =
+						{
+							exec: function()
+							{
+								window.scayt.addWordToUserDictionary( element.$ );
+							}
+						};
+
+						addButtonCommand( editor, 'ignore', editor.lang.scayt.ignore,
+							'scayt_ignore', ignore_command, 'scayt_control', 1);
+						addButtonCommand( editor, 'ignore_all', editor.lang.scayt.ignoreAll,
+							'scayt_ignore_all', ignore_all_command, 'scayt_control', 2);
+						addButtonCommand( editor, 'add_word', editor.lang.scayt.addWord,
+							'scayt_add_word', addword_command, 'scayt_control', 3);
+
+						mainSuggestions[ 'scayt_moresuggest' ] = CKEDITOR.TRISTATE_OFF;
+						mainSuggestions[ 'scayt_ignore' ] = CKEDITOR.TRISTATE_OFF;
+						mainSuggestions[ 'scayt_ignore_all' ] = CKEDITOR.TRISTATE_OFF;
+						mainSuggestions[ 'scayt_add_word' ] = CKEDITOR.TRISTATE_OFF;
+
+						if ( scayt_control.fireOnContextMenu )
+							scayt_control.fireOnContextMenu( editor );
+
+						return mainSuggestions;
+					});
+			}
+
+			// Start plugin
+			if ( editor.config.scayt_autoStartup )
+			{
+				var showInitialState = function()
+				{
+					editor.removeListener( 'showScaytState', showInitialState );
+					command.setState( plugin.isScaytEnabled( editor ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF );
+				};
+				editor.on( 'showScaytState', showInitialState );
+
+				plugin.loadEngine( editor );
+			}
+		}
+	});
+})();
+
+CKEDITOR.config.scayt_maxSuggestions =  5;
+CKEDITOR.config.scayt_autoStartup = false;
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/entities/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/entities/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/entities/plugin.js	(revision 2000)
@@ -0,0 +1,200 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	var entities =
+
+		// Base HTML entities.
+		'nbsp,gt,lt,quot,' +
+
+		// Latin-1 Entities
+		'iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,' +
+		'not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,' +
+		'cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,' +
+
+		// Symbols
+		'fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,' +
+		'alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,' +
+		'forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,' +
+		'radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,' +
+		'equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,' +
+		'rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,' +
+
+		// Other Special Characters
+		'circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,' +
+		'rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,' +
+		'euro';
+
+	// Latin Letters Entities
+	var latin =
+		'Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,' +
+		'Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,' +
+		'Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,' +
+		'agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,' +
+		'ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,' +
+		'otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,' +
+		'OElig,oelig,Scaron,scaron,Yuml';
+
+	// Greek Letters Entities.
+	var greek =
+		'Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,' +
+		'Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,' +
+		'beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,' +
+		'omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,' +
+		'upsih,piv';
+
+	function buildTable( entities )
+	{
+		var table = {},
+			regex = [];
+
+		// Entities that the browsers DOM don't transform to the final char
+		// automatically.
+		var specialTable =
+			{
+				nbsp	: '\u00A0',		// IE | FF
+				shy		: '\u00AD',		// IE
+				gt		: '\u003E',		// IE | FF |   --   | Opera
+				lt		: '\u003C'		// IE | FF | Safari | Opera
+			};
+
+		entities = entities.replace( /\b(nbsp|shy|gt|lt|amp)(?:,|$)/g, function( match, entity )
+			{
+				table[ specialTable[ entity ] ] = '&' + entity + ';';
+				regex.push( specialTable[ entity ] );
+				return '';
+			});
+
+		// Transforms the entities string into an array.
+		entities = entities.split( ',' );
+
+		// Put all entities inside a DOM element, transforming them to their
+		// final chars.
+		var div = document.createElement( 'div' ),
+			chars;
+		div.innerHTML = '&' + entities.join( ';&' ) + ';';
+		chars = div.innerHTML;
+		div = null;
+
+		// Add all chars to the table.
+		for ( var i = 0 ; i < chars.length ; i++ )
+		{
+			var charAt = chars.charAt( i );
+			table[ charAt ] = '&' + entities[ i ] + ';';
+			regex.push( charAt );
+		}
+
+		table.regex = regex.join( '' );
+
+		return table;
+	}
+
+	CKEDITOR.plugins.add( 'entities',
+	{
+		afterInit : function( editor )
+		{
+			var config = editor.config;
+
+			if ( !config.entities )
+				return;
+
+			var dataProcessor = editor.dataProcessor,
+				htmlFilter = dataProcessor && dataProcessor.htmlFilter;
+
+			if ( htmlFilter )
+			{
+				var selectedEntities = entities;
+
+				if ( config.entities_latin )
+					selectedEntities += ',' + latin;
+
+				if ( config.entities_greek )
+					selectedEntities += ',' + greek;
+
+				if ( config.entities_additional )
+					selectedEntities += ',' + config.entities_additional;
+
+				var entitiesTable = buildTable( selectedEntities );
+
+				// Create the Regex used to find entities in the text.
+				var entitiesRegex = '[' + entitiesTable.regex + ']';
+				delete entitiesTable.regex;
+
+				if ( config.entities_processNumerical )
+					entitiesRegex = '[^ -~]|' + entitiesRegex ;
+
+				entitiesRegex = new RegExp( entitiesRegex, 'g' );
+
+				function getChar( character )
+				{
+					return entitiesTable[ character ] || ( '&#' + character.charCodeAt(0) + ';' );
+				}
+
+				htmlFilter.addRules(
+					{
+						text : function( text )
+						{
+							return text.replace( entitiesRegex, getChar );
+						}
+					});
+			}
+		}
+	});
+})();
+
+/**
+ * Whether to use HTML entities in the output.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.entities = false;
+ */
+CKEDITOR.config.entities = true;
+
+/**
+ * Whether to convert some Latin characters (Latin alphabet No&#46; 1, ISO 8859-1)
+ * to HTML entities. The list of entities can be found at the
+ * <a href="http://www.w3.org/TR/html4/sgml/entities.html#h-24.2.1">W3C HTML 4.01 Specification, section 24.2.1</a>.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.entities_latin = false;
+ */
+CKEDITOR.config.entities_latin = true;
+
+/**
+ * Whether to convert some symbols, mathematical symbols, and Greek letters to
+ * HTML entities. This may be more relevant for users typing text written in Greek.
+ * The list of entities can be found at the
+ * <a href="http://www.w3.org/TR/html4/sgml/entities.html#h-24.3.1">W3C HTML 4.01 Specification, section 24.3.1</a>.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.entities_greek = false;
+ */
+CKEDITOR.config.entities_greek = true;
+
+/**
+ * Whether to convert all remaining characters, not comprised in the ASCII
+ * character table, to their relative numeric representation of HTML entity.
+ * For example, the phrase "This is Chinese: &#27721;&#35821;." is outputted
+ * as "This is Chinese: &amp;#27721;&amp;#35821;."
+ * @type Boolean
+ * @default false
+ * @example
+ * config.entities_processNumerical = true;
+ */
+CKEDITOR.config.entities_processNumerical = false;
+
+/**
+ * An additional list of entities to be used. It's a string containing each
+ * entry separated by a comma. Entities names or number must be used, exclusing
+ * the "&amp;" preffix and the ";" termination.
+ * @default '#39'  // The single quote (') character.
+ * @type String
+ * @example
+ */
+CKEDITOR.config.entities_additional = '#39';
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/newpage/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/newpage/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/newpage/plugin.js	(revision 2000)
@@ -0,0 +1,49 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Horizontal Page Break
+ */
+
+// Register a plugin named "newpage".
+CKEDITOR.plugins.add( 'newpage',
+{
+	init : function( editor )
+	{
+		editor.addCommand( 'newpage',
+			{
+				modes : { wysiwyg:1, source:1 },
+
+				exec : function( editor )
+				{
+					var command = this;
+					editor.setData( editor.config.newpage_html, function()
+					{
+						editor.fire( 'afterCommandExec',
+						{
+							name: command.name,
+							command: command
+						} );
+					} );
+					editor.focus();
+				},
+				async : true
+			});
+
+		editor.ui.addButton( 'NewPage',
+			{
+				label : editor.lang.newPage,
+				command : 'newpage'
+			});
+	}
+});
+/**
+ * The HTML to load in the editor when the "new page" command is executed.
+ * @type String
+ * @default ''
+ * @example
+ * config.newpage_html = '&lt;p&gt;Type your text here.&lt;/p&gt;';
+ */
+CKEDITOR.config.newpage_html = '';
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/elementspath/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/elementspath/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/elementspath/plugin.js	(revision 2000)
@@ -0,0 +1,182 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview The "elementspath" plugin. It shows all elements in the DOM
+ *		parent tree relative to the current selection in the editing area.
+ */
+
+(function()
+{
+	var commands =
+	{
+		toolbarFocus :
+		{
+			exec : function( editor )
+			{
+				var idBase = editor._.elementsPath.idBase;
+				var element = CKEDITOR.document.getById( idBase + '0' );
+
+				if ( element )
+					element.focus();
+			}
+		}
+	};
+
+	var emptyHtml = '<span class="cke_empty">&nbsp;</span>';
+
+	CKEDITOR.plugins.add( 'elementspath',
+	{
+		requires : [ 'selection' ],
+
+		init : function( editor )
+		{
+			var spaceId = 'cke_path_' + editor.name;
+			var spaceElement;
+			var getSpaceElement = function()
+			{
+				if ( !spaceElement )
+					spaceElement = CKEDITOR.document.getById( spaceId );
+				return spaceElement;
+			};
+
+			var idBase = 'cke_elementspath_' + CKEDITOR.tools.getNextNumber() + '_';
+
+			editor._.elementsPath = { idBase : idBase };
+
+			editor.on( 'themeSpace', function( event )
+				{
+					if ( event.data.space == 'bottom' )
+						event.data.html += '<div id="' + spaceId + '" class="cke_path">' + emptyHtml + '</div>';
+				});
+
+			editor.on( 'selectionChange', function( ev )
+				{
+					var env = CKEDITOR.env;
+
+					var selection = ev.data.selection;
+
+					var element = selection.getStartElement(),
+						html = [],
+						elementsList = this._.elementsPath.list = [];
+
+					while ( element )
+					{
+						var index = elementsList.push( element ) - 1;
+						var name;
+						if ( element.getAttribute( '_cke_real_element_type' ) )
+							name = element.getAttribute( '_cke_real_element_type' );
+						else
+							name = element.getName();
+
+						// Use this variable to add conditional stuff to the
+						// HTML (because we are doing it in reverse order... unshift).
+						var extra = '';
+
+						// Some browsers don't cancel key events in the keydown but in the
+						// keypress.
+						// TODO: Check if really needed for Gecko+Mac.
+						if ( env.opera || ( env.gecko && env.mac ) )
+							extra += ' onkeypress="return false;"';
+
+						// With Firefox, we need to force the button to redraw, otherwise it
+						// will remain in the focus state.
+						if ( env.gecko )
+							extra += ' onblur="this.style.cssText = this.style.cssText;"';
+
+						html.unshift(
+							'<a' +
+								' id="', idBase, index, '"' +
+								' href="javascript:void(\'', name, '\')"' +
+								' tabindex="-1"' +
+								' title="', editor.lang.elementsPath.eleTitle.replace( /%1/, name ), '"' +
+								( ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 ) ?
+								' onfocus="event.preventBubble();"' : '' ) +
+								' hidefocus="true" ' +
+								' onkeydown="return CKEDITOR._.elementsPath.keydown(\'', this.name, '\',', index, ', event);"' +
+								extra ,
+								' onclick="return CKEDITOR._.elementsPath.click(\'', this.name, '\',', index, ');">',
+									name,
+							'</a>' );
+
+						if ( name == 'body' )
+							break;
+
+						element = element.getParent();
+					}
+
+					getSpaceElement().setHtml( html.join('') + emptyHtml );
+				});
+
+			editor.on( 'contentDomUnload', function()
+				{
+					getSpaceElement().setHtml( emptyHtml );
+				});
+
+			editor.addCommand( 'elementsPathFocus', commands.toolbarFocus );
+		}
+	});
+})();
+
+/**
+ * Handles the click on an element in the element path.
+ * @private
+ */
+CKEDITOR._.elementsPath =
+{
+	click : function( instanceName, elementIndex )
+	{
+		var editor = CKEDITOR.instances[ instanceName ];
+		editor.focus();
+
+		var element = editor._.elementsPath.list[ elementIndex ];
+		editor.getSelection().selectElement( element );
+
+		return false;
+	},
+
+	keydown : function( instanceName, elementIndex, ev )
+	{
+		var instance = CKEDITOR.ui.button._.instances[ elementIndex ];
+		var editor = CKEDITOR.instances[ instanceName ];
+		var idBase = editor._.elementsPath.idBase;
+
+		var element;
+
+		ev = new CKEDITOR.dom.event( ev );
+
+		switch ( ev.getKeystroke() )
+		{
+			case 37 :					// LEFT-ARROW
+			case 9 :					// TAB
+				element = CKEDITOR.document.getById( idBase + ( elementIndex + 1 ) );
+				if ( !element )
+					element = CKEDITOR.document.getById( idBase + '0' );
+				element.focus();
+				return false;
+
+			case 39 :					// RIGHT-ARROW
+			case CKEDITOR.SHIFT + 9 :	// SHIFT + TAB
+				element = CKEDITOR.document.getById( idBase + ( elementIndex - 1 ) );
+				if ( !element )
+					element = CKEDITOR.document.getById( idBase + ( editor._.elementsPath.list.length - 1 ) );
+				element.focus();
+				return false;
+
+			case 27 :					// ESC
+				editor.focus();
+				return false;
+
+			case 13 :					// ENTER	// Opera
+			case 32 :					// SPACE
+				this.click( instanceName, elementIndex );
+				return false;
+
+			//default :
+			//	alert( ev.getKeystroke() );
+		}
+		return true;
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/dialogui/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/dialogui/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/dialogui/plugin.js	(revision 2000)
@@ -0,0 +1,1319 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/** @fileoverview The "dialogui" plugin. */
+
+CKEDITOR.plugins.add( 'dialogui' );
+
+(function()
+{
+	var initPrivateObject = function( elementDefinition )
+	{
+		this._ || ( this._ = {} );
+		this._['default'] = this._.initValue = elementDefinition['default'] || '';
+		var args = [ this._ ];
+		for ( var i = 1 ; i < arguments.length ; i++ )
+			args.push( arguments[i] );
+		args.push( true );
+		CKEDITOR.tools.extend.apply( CKEDITOR.tools, args );
+		return this._;
+	},
+	textBuilder =
+	{
+		build : function( dialog, elementDefinition, output )
+		{
+			return new CKEDITOR.ui.dialog.textInput( dialog, elementDefinition, output );
+		}
+	},
+	commonBuilder =
+	{
+		build : function( dialog, elementDefinition, output )
+		{
+			return new CKEDITOR.ui.dialog[elementDefinition.type]( dialog, elementDefinition, output );
+		}
+	},
+	commonPrototype =
+	{
+		isChanged : function()
+		{
+			return this.getValue() != this.getInitValue();
+		},
+
+		reset : function()
+		{
+			this.setValue( this.getInitValue() );
+		},
+
+		setInitValue : function()
+		{
+			this._.initValue = this.getValue();
+		},
+
+		resetInitValue : function()
+		{
+			this._.initValue = this._['default'];
+		},
+
+		getInitValue : function()
+		{
+			return this._.initValue;
+		}
+	},
+	commonEventProcessors = CKEDITOR.tools.extend( {}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,
+		{
+			onChange : function( dialog, func )
+			{
+				if ( !this._.domOnChangeRegistered )
+				{
+					dialog.on( 'load', function()
+						{
+							this.getInputElement().on( 'change', function(){ this.fire( 'change', { value : this.getValue() } ); }, this );
+						}, this );
+					this._.domOnChangeRegistered = true;
+				}
+
+				this.on( 'change', func );
+			}
+		}, true ),
+	eventRegex = /^on([A-Z]\w+)/,
+	cleanInnerDefinition = function( def )
+	{
+		// An inner UI element should not have the parent's type, title or events.
+		for ( var i in def )
+		{
+			if ( eventRegex.test( i ) || i == 'title' || i == 'type' )
+				delete def[i];
+		}
+		return def;
+	};
+
+	CKEDITOR.tools.extend( CKEDITOR.ui.dialog,
+		/** @lends CKEDITOR.ui.dialog */
+		{
+			/**
+			 * Base class for all dialog elements with a textual label on the left.
+			 * @constructor
+			 * @example
+			 * @extends CKEDITOR.ui.dialog.uiElement
+			 * @param {CKEDITOR.dialog} dialog
+			 * Parent dialog object.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
+			 * The element definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>label</strong> (Required) The label string.</li>
+			 * 	<li><strong>labelLayout</strong> (Optional) Put 'horizontal' here if the
+			 * 	label element is to be layed out horizontally. Otherwise a vertical
+			 * 	layout will be used.</li>
+			 * 	<li><strong>widths</strong> (Optional) This applies only for horizontal
+			 * 	layouts - an 2-element array of lengths to specify the widths of the
+			 * 	label and the content element.</li>
+			 * </ul>
+			 * @param {Array} htmlList
+			 * List of HTML code to output to.
+			 * @param {Function} contentHtml
+			 * A function returning the HTML code string to be added inside the content
+			 * cell.
+			 */
+			labeledElement : function( dialog, elementDefinition, htmlList, contentHtml )
+			{
+				if ( arguments.length < 4 )
+					return;
+
+				var _ = initPrivateObject.call( this, elementDefinition );
+				_.labelId = CKEDITOR.tools.getNextNumber() + '_label';
+				var children = this._.children = [];
+				/** @ignore */
+				var innerHTML = function()
+				{
+					var html = [];
+					if ( elementDefinition.labelLayout != 'horizontal' )
+						html.push( '<div class="cke_dialog_ui_labeled_label" id="',
+								_.labelId,
+								'" >',
+								elementDefinition.label,
+								'</div>',
+								'<div class="cke_dialog_ui_labeled_content">',
+								contentHtml( dialog, elementDefinition ),
+								'</div>' );
+					else
+					{
+						var hboxDefinition = {
+							type : 'hbox',
+							widths : elementDefinition.widths,
+							padding : 0,
+							children :
+							[
+								{
+									type : 'html',
+									html : '<span class="cke_dialog_ui_labeled_label" ' +
+										'id="' + _.labelId + '">' +  CKEDITOR.tools.htmlEncode( elementDefinition.label ) +
+										'</span>'
+								},
+								{
+									type : 'html',
+									html : '<span class="cke_dialog_ui_labeled_content">' +
+										contentHtml( dialog, elementDefinition ) +
+										'</span>'
+								}
+							]
+						};
+						CKEDITOR.dialog._.uiElementBuilders.hbox.build( dialog, hboxDefinition, html );
+					}
+					return html.join( '' );
+				};
+				CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'div', null, null, innerHTML );
+			},
+
+			/**
+			 * A text input with a label. This UI element class represents both the
+			 * single-line text inputs and password inputs in dialog boxes.
+			 * @constructor
+			 * @example
+			 * @extends CKEDITOR.ui.dialog.labeledElement
+			 * @param {CKEDITOR.dialog} dialog
+			 * Parent dialog object.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
+			 * The element definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>default</strong> (Optional) The default value.</li>
+			 * 	<li><strong>validate</strong> (Optional) The validation function. </li>
+			 * 	<li><strong>maxLength</strong> (Optional) The maximum length of text box
+			 * 	contents.</li>
+			 * 	<li><strong>size</strong> (Optional) The size of the text box. This is
+			 * 	usually overridden by the size defined by the skin, however.</li>
+			 * </ul>
+			 * @param {Array} htmlList
+			 * List of HTML code to output to.
+			 */
+			textInput : function( dialog, elementDefinition, htmlList )
+			{
+				if ( arguments.length < 3 )
+					return;
+
+				initPrivateObject.call( this, elementDefinition );
+				var domId = this._.inputId = CKEDITOR.tools.getNextNumber() + '_textInput',
+					attributes = { 'class' : 'cke_dialog_ui_input_' + elementDefinition.type, id : domId, type : 'text' },
+					i;
+
+				// Set the validator, if any.
+				if ( elementDefinition.validate )
+					this.validate = elementDefinition.validate;
+
+				// Set the max length and size.
+				if ( elementDefinition.maxLength )
+					attributes.maxlength = elementDefinition.maxLength;
+				if ( elementDefinition.size )
+					attributes.size = elementDefinition.size;
+
+				// If user presses Enter in a text box, it implies clicking OK for the dialog.
+				var me = this, keyPressedOnMe = false;
+				dialog.on( 'load', function()
+					{
+						me.getInputElement().on( 'keydown', function( evt )
+							{
+								if ( evt.data.getKeystroke() == 13 )
+									keyPressedOnMe = true;
+							} );
+
+						// Lower the priority this 'keyup' since 'ok' will close the dialog.(#3749)
+						me.getInputElement().on( 'keyup', function( evt )
+							{
+								if ( evt.data.getKeystroke() == 13 && keyPressedOnMe )
+								{
+									dialog.getButton( 'ok' ) && dialog.getButton( 'ok' ).click();
+									keyPressedOnMe = false;
+								}
+							}, null, null, 1000 );
+					} );
+
+				/** @ignore */
+				var innerHTML = function()
+				{
+					// IE BUG: Text input fields in IE at 100% would exceed a <td> or inline
+					// container's width, so need to wrap it inside a <div>.
+					var html = [ '<div class="cke_dialog_ui_input_', elementDefinition.type, '"' ];
+
+					if ( elementDefinition.width )
+						html.push( 'style="width:'+ elementDefinition.width +'" ' );
+
+					html.push( '><input ' );
+					for ( var i in attributes )
+						html.push( i + '="' + attributes[i] + '" ' );
+					html.push( ' /></div>' );
+					return html.join( '' );
+				};
+				CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML );
+			},
+
+			/**
+			 * A text area with a label on the top or left.
+			 * @constructor
+			 * @extends CKEDITOR.ui.dialog.labeledElement
+			 * @example
+			 * @param {CKEDITOR.dialog} dialog
+			 * Parent dialog object.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
+			 * The element definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>rows</strong> (Optional) The number of rows displayed.
+			 * 	Defaults to 5 if not defined.</li>
+			 * 	<li><strong>cols</strong> (Optional) The number of cols displayed.
+			 * 	Defaults to 20 if not defined. Usually overridden by skins.</li>
+			 * 	<li><strong>default</strong> (Optional) The default value.</li>
+			 * 	<li><strong>validate</strong> (Optional) The validation function. </li>
+			 * </ul>
+			 * @param {Array} htmlList
+			 * List of HTML code to output to.
+			 */
+			textarea : function( dialog, elementDefinition, htmlList )
+			{
+				if ( arguments.length < 3 )
+					return;
+
+				initPrivateObject.call( this, elementDefinition );
+				var me = this,
+					domId = this._.inputId = CKEDITOR.tools.getNextNumber() + '_textarea',
+					attributes = {};
+
+				if ( elementDefinition.validate )
+					this.validate = elementDefinition.validate;
+
+				// Generates the essential attributes for the textarea tag.
+				attributes.rows = elementDefinition.rows || 5;
+				attributes.cols = elementDefinition.cols || 20;
+
+				/** @ignore */
+				var innerHTML = function()
+				{
+					var html = [ '<div class="cke_dialog_ui_input_textarea"><textarea class="cke_dialog_ui_input_textarea" id="', domId, '" ' ];
+					for ( var i in attributes )
+						html.push( i + '="' + CKEDITOR.tools.htmlEncode( attributes[i] ) + '" ' );
+					html.push( '>', CKEDITOR.tools.htmlEncode( me._['default'] ), '</textarea></div>' );
+					return html.join( '' );
+				};
+				CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML );
+			},
+
+			/**
+			 * A single checkbox with a label on the right.
+			 * @constructor
+			 * @extends CKEDITOR.ui.dialog.uiElement
+			 * @example
+			 * @param {CKEDITOR.dialog} dialog
+			 * Parent dialog object.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
+			 * The element definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>checked</strong> (Optional) Whether the checkbox is checked
+			 * 	on instantiation. Defaults to false.</li>
+			 * 	<li><strong>validate</strong> (Optional) The validation function.</li>
+			 * 	<li><strong>label</strong> (Optional) The checkbox label.</li>
+			 * </ul>
+			 * @param {Array} htmlList
+			 * List of HTML code to output to.
+			 */
+			checkbox : function( dialog, elementDefinition, htmlList )
+			{
+				if ( arguments.length < 3 )
+					return;
+
+				var _ = initPrivateObject.call( this, elementDefinition, { 'default' : !!elementDefinition[ 'default' ] } );
+
+				if ( elementDefinition.validate )
+					this.validate = elementDefinition.validate;
+
+				/** @ignore */
+				var innerHTML = function()
+				{
+					var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition,
+							{
+								id : elementDefinition.id ? elementDefinition.id + '_checkbox' : CKEDITOR.tools.getNextNumber() + '_checkbox'
+							}, true ),
+						html = [],
+						attributes = { 'class' : 'cke_dialog_ui_checkbox_input', type : 'checkbox' };
+					cleanInnerDefinition( myDefinition );
+					if ( elementDefinition[ 'default' ] )
+						attributes.checked = 'checked';
+					_.checkbox = new CKEDITOR.ui.dialog.uiElement( dialog, myDefinition, html, 'input', null, attributes );
+					html.push( ' <label for="', attributes.id, '">',
+							CKEDITOR.tools.htmlEncode( elementDefinition.label ),
+							'</label>' );
+					return html.join( '' );
+				};
+
+				CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'span', null, null, innerHTML );
+			},
+
+			/**
+			 * A group of radio buttons.
+			 * @constructor
+			 * @example
+			 * @extends CKEDITOR.ui.dialog.labeledElement
+			 * @param {CKEDITOR.dialog} dialog
+			 * Parent dialog object.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
+			 * The element definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>default</strong> (Required) The default value.</li>
+			 * 	<li><strong>validate</strong> (Optional) The validation function.</li>
+			 * 	<li><strong>items</strong> (Required) An array of options. Each option
+			 * 	is a 1- or 2-item array of format [ 'Description', 'Value' ]. If 'Value'
+			 * 	is missing, then the value would be assumed to be the same as the
+			 * 	description.</li>
+			 * </ul>
+			 * @param {Array} htmlList
+			 * List of HTML code to output to.
+			 */
+			radio : function( dialog, elementDefinition, htmlList )
+			{
+				if ( arguments.length < 3)
+					return;
+
+				initPrivateObject.call( this, elementDefinition );
+				if ( !this._['default'] )
+					this._['default'] = this._.initValue = elementDefinition.items[0][1];
+				if ( elementDefinition.validate )
+					this.validate = elementDefinition.valdiate;
+				var children = [], me = this;
+
+				/** @ignore */
+				var innerHTML = function()
+				{
+					var inputHtmlList = [], html = [],
+						commonAttributes = { 'class' : 'cke_dialog_ui_radio_item' },
+						commonName = elementDefinition.id ? elementDefinition.id + '_radio' : CKEDITOR.tools.getNextNumber() + '_radio';
+					for ( var i = 0 ; i < elementDefinition.items.length ; i++ )
+					{
+						var item = elementDefinition.items[i],
+							title = item[2] !== undefined ? item[2] : item[0],
+							value = item[1] !== undefined ? item[1] : item[0],
+							inputDefinition = CKEDITOR.tools.extend( {}, elementDefinition,
+									{
+										id : CKEDITOR.tools.getNextNumber() + '_radio_input',
+										title : null,
+										type : null
+									}, true ),
+							labelDefinition = CKEDITOR.tools.extend( {}, inputDefinition,
+									{
+										id : null,
+										title : title
+									}, true ),
+							inputAttributes =
+							{
+								type : 'radio',
+								'class' : 'cke_dialog_ui_radio_input',
+								name : commonName,
+								value : value
+							},
+							inputHtml = [];
+						if ( me._['default'] == value )
+							inputAttributes.checked = 'checked';
+						cleanInnerDefinition( inputDefinition );
+						cleanInnerDefinition( labelDefinition );
+						children.push( new CKEDITOR.ui.dialog.uiElement( dialog, inputDefinition, inputHtml, 'input', null, inputAttributes ) );
+						inputHtml.push( ' ' );
+						new CKEDITOR.ui.dialog.uiElement( dialog, labelDefinition, inputHtml, 'label', null, { 'for' : inputAttributes.id },
+							   item[0] );
+						inputHtmlList.push( inputHtml.join( '' ) );
+					}
+					new CKEDITOR.ui.dialog.hbox( dialog, [], inputHtmlList, html );
+					return html.join( '' );
+				};
+
+				CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML );
+				this._.children = children;
+			},
+
+			/**
+			 * A button with a label inside.
+			 * @constructor
+			 * @example
+			 * @extends CKEDITOR.ui.dialog.uiElement
+			 * @param {CKEDITOR.dialog} dialog
+			 * Parent dialog object.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
+			 * The element definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>label</strong> (Required) The button label.</li>
+			 * 	<li><strong>disabled</strong> (Optional) Set to true if you want the
+			 * 	button to appear in disabled state.</li>
+			 * </ul>
+			 * @param {Array} htmlList
+			 * List of HTML code to output to.
+			 */
+			button : function( dialog, elementDefinition, htmlList )
+			{
+				if ( !arguments.length )
+					return;
+
+				if ( typeof elementDefinition == 'function' )
+					elementDefinition = elementDefinition( dialog.getParentEditor() );
+
+				initPrivateObject.call( this, elementDefinition, { disabled : elementDefinition.disabled || false } );
+
+				// Add OnClick event to this input.
+				CKEDITOR.event.implementOn( this );
+
+				var me = this;
+
+				// Register an event handler for processing button clicks.
+				dialog.on( 'load', function( eventInfo )
+					{
+						var element = this.getElement();
+
+						(function()
+						{
+							element.on( 'click', function( evt )
+								{
+									me.fire( 'click', { dialog : me.getDialog() } );
+									evt.data.preventDefault();
+								} );
+						})();
+
+						element.unselectable();
+					}, this );
+
+				var outerDefinition = CKEDITOR.tools.extend( {}, elementDefinition );
+				delete outerDefinition.style;
+
+				CKEDITOR.ui.dialog.uiElement.call(
+					this,
+					dialog,
+					outerDefinition,
+					htmlList,
+					'a',
+					null,
+					{
+						style : elementDefinition.style,
+						href : 'javascript:void(0)',
+						title : elementDefinition.label,
+						hidefocus : 'true',
+						'class' : elementDefinition['class']
+					},
+					'<span class="cke_dialog_ui_button">' +
+						CKEDITOR.tools.htmlEncode( elementDefinition.label ) +
+					'</span>' );
+			},
+
+			/**
+			 * A select box.
+			 * @extends CKEDITOR.ui.dialog.uiElement
+			 * @example
+			 * @constructor
+			 * @param {CKEDITOR.dialog} dialog
+			 * Parent dialog object.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
+			 * The element definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>default</strong> (Required) The default value.</li>
+			 * 	<li><strong>validate</strong> (Optional) The validation function.</li>
+			 * 	<li><strong>items</strong> (Required) An array of options. Each option
+			 * 	is a 1- or 2-item array of format [ 'Description', 'Value' ]. If 'Value'
+			 * 	is missing, then the value would be assumed to be the same as the
+			 * 	description.</li>
+			 * 	<li><strong>multiple</strong> (Optional) Set this to true if you'd like
+			 * 	to have a multiple-choice select box.</li>
+			 * 	<li><strong>size</strong> (Optional) The number of items to display in
+			 * 	the select box.</li>
+			 * </ul>
+			 * @param {Array} htmlList
+			 * List of HTML code to output to.
+			 */
+			select : function( dialog, elementDefinition, htmlList )
+			{
+				if ( arguments.length < 3 )
+					return;
+
+				var _ = initPrivateObject.call( this, elementDefinition );
+
+				if ( elementDefinition.validate )
+					this.validate = elementDefinition.validate;
+
+				/** @ignore */
+				var innerHTML = function()
+				{
+					var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition,
+							{
+								id : elementDefinition.id ? elementDefinition.id + '_select' : CKEDITOR.tools.getNextNumber() + '_select'
+							}, true ),
+						html = [],
+						innerHTML = [],
+						attributes = { 'class' : 'cke_dialog_ui_input_select' };
+
+					// Add multiple and size attributes from element definition.
+					if ( elementDefinition.size != undefined )
+						attributes.size = elementDefinition.size;
+					if ( elementDefinition.multiple != undefined )
+						attributes.multiple = elementDefinition.multiple;
+
+					cleanInnerDefinition( myDefinition );
+					for ( var i = 0, item ; i < elementDefinition.items.length && ( item = elementDefinition.items[i] ) ; i++ )
+					{
+						innerHTML.push( '<option value="',
+							CKEDITOR.tools.htmlEncode( item[1] !== undefined ? item[1] : item[0] ), '" /> ',
+							CKEDITOR.tools.htmlEncode( item[0] ) );
+					}
+
+					_.select = new CKEDITOR.ui.dialog.uiElement( dialog, myDefinition, html, 'select', null, attributes, innerHTML.join( '' ) );
+					return html.join( '' );
+				};
+
+				CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML );
+			},
+
+			/**
+			 * A file upload input.
+			 * @extends CKEDITOR.ui.dialog.labeledElement
+			 * @example
+			 * @constructor
+			 * @param {CKEDITOR.dialog} dialog
+			 * Parent dialog object.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
+			 * The element definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>validate</strong> (Optional) The validation function.</li>
+			 * </ul>
+			 * @param {Array} htmlList
+			 * List of HTML code to output to.
+			 */
+			file : function( dialog, elementDefinition, htmlList )
+			{
+				if ( arguments.length < 3 )
+					return;
+
+				if ( elementDefinition['default'] === undefined )
+					elementDefinition['default'] = '';
+
+				var _ = CKEDITOR.tools.extend( initPrivateObject.call( this, elementDefinition ), { definition : elementDefinition, buttons : [] } );
+
+				if ( elementDefinition.validate )
+					this.validate = elementDefinition.validate;
+
+				/** @ignore */
+				var innerHTML = function()
+				{
+					_.frameId = CKEDITOR.tools.getNextNumber() + '_fileInput';
+
+					// Support for custom document.domain in IE.
+					var isCustomDomain = CKEDITOR.env.isCustomDomain();
+
+					var html = [
+						'<iframe' +
+							' frameborder="0"' +
+							' allowtransparency="0"' +
+							' class="cke_dialog_ui_input_file"' +
+							' id="', _.frameId, '"' +
+							' title="', elementDefinition.label, '"' +
+							' src="javascript:void(' ];
+
+					html.push(
+							isCustomDomain ?
+								'(function(){' +
+									'document.open();' +
+									'document.domain=\'' + document.domain + '\';' +
+									'document.close();' +
+								'})()'
+							:
+								'0' );
+
+					html.push(
+							')">' +
+						'</iframe>' );
+
+					return html.join( '' );
+				};
+
+				// IE BUG: Parent container does not resize to contain the iframe automatically.
+				dialog.on( 'load', function()
+					{
+						var iframe = CKEDITOR.document.getById( _.frameId ),
+							contentDiv = iframe.getParent();
+						contentDiv.addClass( 'cke_dialog_ui_input_file' );
+					} );
+
+				CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML );
+			},
+
+			/**
+			 * A button for submitting the file in a file upload input.
+			 * @extends CKEDITOR.ui.dialog.button
+			 * @example
+			 * @constructor
+			 * @param {CKEDITOR.dialog} dialog
+			 * Parent dialog object.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
+			 * The element definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>for</strong> (Required) The file input's page and element Id
+			 * 	to associate to, in a 2-item array format: [ 'page_id', 'element_id' ].
+			 * 	</li>
+			 * 	<li><strong>validate</strong> (Optional) The validation function.</li>
+			 * </ul>
+			 * @param {Array} htmlList
+			 * List of HTML code to output to.
+			 */
+			fileButton : function( dialog, elementDefinition, htmlList )
+			{
+				if ( arguments.length < 3 )
+					return;
+
+				var _ = initPrivateObject.call( this, elementDefinition ),
+					me = this;
+
+				if ( elementDefinition.validate )
+					this.validate = elementDefinition.validate;
+
+				var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition );
+				var onClick = myDefinition.onClick;
+				myDefinition.className = ( myDefinition.className ? myDefinition.className + ' ' : '' ) + 'cke_dialog_ui_button';
+				myDefinition.onClick = function( evt )
+				{
+					var target = elementDefinition[ 'for' ];		// [ pageId, elementId ]
+					if ( !onClick || onClick.call( this, evt ) !== false )
+					{
+						dialog.getContentElement( target[0], target[1] ).submit();
+						this.disable();
+					}
+				};
+
+				dialog.on( 'load', function()
+						{
+							dialog.getContentElement( elementDefinition[ 'for' ][0], elementDefinition[ 'for' ][1] )._.buttons.push( me );
+						} );
+
+				CKEDITOR.ui.dialog.button.call( this, dialog, myDefinition, htmlList );
+			},
+
+			html : (function()
+			{
+				var myHtmlRe = /^\s*<[\w:]+\s+([^>]*)?>/,
+					theirHtmlRe = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,
+					emptyTagRe = /\/$/;
+				/**
+				 * A dialog element made from raw HTML code.
+				 * @extends CKEDITOR.ui.dialog.uiElement
+				 * @name CKEDITOR.ui.dialog.html
+				 * @param {CKEDITOR.dialog} dialog Parent dialog object.
+				 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition Element definition.
+				 * Accepted fields:
+				 * <ul>
+				 * 	<li><strong>html</strong> (Required) HTML code of this element.</li>
+				 * </ul>
+				 * @param {Array} htmlList List of HTML code to be added to the dialog's content area.
+				 * @example
+				 * @constructor
+				 */
+				return function( dialog, elementDefinition, htmlList )
+				{
+					if ( arguments.length < 3 )
+						return;
+
+					var myHtmlList = [],
+						myHtml,
+						theirHtml = elementDefinition.html,
+						myMatch, theirMatch;
+
+					// If the HTML input doesn't contain any tags at the beginning, add a <span> tag around it.
+					if ( theirHtml.charAt( 0 ) != '<' )
+						theirHtml = '<span>' + theirHtml + '</span>';
+
+					// Look for focus function in definition.
+					if ( elementDefinition.focus )
+					{
+						var oldFocus = this.focus;
+						this.focus = function()
+						{
+							oldFocus.call( this );
+							elementDefinition.focus.call( this );
+							this.fire( 'focus' );
+						};
+						if ( elementDefinition.isFocusable )
+						{
+							var oldIsFocusable = this.isFocusable;
+							this.isFocusable = oldIsFocusable;
+						}
+						this.keyboardFocusable = true;
+					}
+
+					CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, myHtmlList, 'span', null, null, '' );
+
+					// Append the attributes created by the uiElement call to the real HTML.
+					myHtml = myHtmlList.join( '' );
+					myMatch = myHtml.match( myHtmlRe );
+					theirMatch = theirHtml.match( theirHtmlRe ) || [ '', '', '' ];
+
+					if ( emptyTagRe.test( theirMatch[1] ) )
+					{
+						theirMatch[1] = theirMatch[1].slice( 0, -1 );
+						theirMatch[2] = '/' + theirMatch[2];
+					}
+
+					htmlList.push( [ theirMatch[1], ' ', myMatch[1] || '', theirMatch[2] ].join( '' ) );
+				};
+			})()
+		}, true );
+
+	CKEDITOR.ui.dialog.html.prototype = new CKEDITOR.ui.dialog.uiElement;
+
+	CKEDITOR.ui.dialog.labeledElement.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement,
+			/** @lends CKEDITOR.ui.dialog.labeledElement.prototype */
+			{
+				/**
+				 * Sets the label text of the element.
+				 * @param {String} label The new label text.
+				 * @returns {CKEDITOR.ui.dialog.labeledElement} The current labeled element.
+				 * @example
+				 */
+				setLabel : function( label )
+				{
+					var node = CKEDITOR.document.getById( this._.labelId );
+					if ( node.getChildCount() < 1 )
+						( new CKEDITOR.dom.text( label, CKEDITOR.document ) ).appendTo( node );
+					else
+						node.getChild( 0 ).$.nodeValue = label;
+					return this;
+				},
+
+				/**
+				 * Retrieves the current label text of the elment.
+				 * @returns {String} The current label text.
+				 * @example
+				 */
+				getLabel : function()
+				{
+					var node = CKEDITOR.document.getById( this._.labelId );
+					if ( !node || node.getChildCount() < 1 )
+						return '';
+					else
+						return node.getChild( 0 ).getText();
+				},
+
+				/**
+				 * Defines the onChange event for UI element definitions.
+				 * @field
+				 * @type Object
+				 * @example
+				 */
+				eventProcessors : commonEventProcessors
+			}, true );
+
+	CKEDITOR.ui.dialog.button.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement,
+			/** @lends CKEDITOR.ui.dialog.button.prototype */
+			{
+				/**
+				 * Simulates a click to the button.
+				 * @example
+				 * @returns {Object} Return value of the 'click' event.
+				 */
+				click : function()
+				{
+					if ( !this._.disabled )
+						return this.fire( 'click', { dialog : this._.dialog } );
+					this.getElement().$.blur();
+					return false;
+				},
+
+				/**
+				 * Enables the button.
+				 * @example
+				 */
+				enable : function()
+				{
+					this._.disabled = false;
+					var element = this.getElement();
+					element && element.removeClass( 'disabled' );
+				},
+
+				/**
+				 * Disables the button.
+				 * @example
+				 */
+				disable : function()
+				{
+					this._.disabled = true;
+					this.getElement().addClass( 'disabled' );
+				},
+
+				isVisible : function()
+				{
+					return !!this.getElement().$.firstChild.offsetHeight;
+				},
+
+				isEnabled : function()
+				{
+					return !this._.disabled;
+				},
+
+				/**
+				 * Defines the onChange event and onClick for button element definitions.
+				 * @field
+				 * @type Object
+				 * @example
+				 */
+				eventProcessors : CKEDITOR.tools.extend( {}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,
+					{
+						/** @ignore */
+						onClick : function( dialog, func )
+						{
+							this.on( 'click', func );
+						}
+					}, true ),
+
+				/**
+				 * Handler for the element's access key up event. Simulates a click to
+				 * the button.
+				 * @example
+				 */
+				accessKeyUp : function()
+				{
+					this.click();
+				},
+
+				/**
+				 * Handler for the element's access key down event. Simulates a mouse
+				 * down to the button.
+				 * @example
+				 */
+				accessKeyDown : function()
+				{
+					this.focus();
+				},
+
+				keyboardFocusable : true
+			}, true );
+
+	CKEDITOR.ui.dialog.textInput.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement,
+			/** @lends CKEDITOR.ui.dialog.textInput.prototype */
+			{
+				/**
+				 * Gets the text input DOM element under this UI object.
+				 * @example
+				 * @returns {CKEDITOR.dom.element} The DOM element of the text input.
+				 */
+				getInputElement : function()
+				{
+					return CKEDITOR.document.getById( this._.inputId );
+				},
+
+				/**
+				 * Puts focus into the text input.
+				 * @example
+				 */
+				focus : function()
+				{
+					var me = this.selectParentTab();
+
+					// GECKO BUG: setTimeout() is needed to workaround invisible selections.
+					setTimeout( function()
+						{
+							var element = me.getInputElement();
+							element && element.$.focus();
+						}, 0 );
+				},
+
+				/**
+				 * Selects all the text in the text input.
+				 * @example
+				 */
+				select : function()
+				{
+					var me = this.selectParentTab();
+
+					// GECKO BUG: setTimeout() is needed to workaround invisible selections.
+					setTimeout( function()
+						{
+							var e = me.getInputElement();
+							if ( e )
+							{
+								e.$.focus();
+								e.$.select();
+							}
+						}, 0 );
+				},
+
+				/**
+				 * Handler for the text input's access key up event. Makes a select()
+				 * call to the text input.
+				 * @example
+				 */
+				accessKeyUp : function()
+				{
+					this.select();
+				},
+
+				/**
+				 * Sets the value of this text input object.
+				 * @param {Object} value The new value.
+				 * @returns {CKEDITOR.ui.dialog.textInput} The current UI element.
+				 * @example
+				 * uiElement.setValue( 'Blamo' );
+				 */
+				setValue : function( value )
+				{
+					value = value || '';
+					return CKEDITOR.ui.dialog.uiElement.prototype.setValue.call( this, value );
+				},
+
+				keyboardFocusable : true
+			}, commonPrototype, true );
+
+	CKEDITOR.ui.dialog.textarea.prototype = new CKEDITOR.ui.dialog.textInput();
+
+	CKEDITOR.ui.dialog.select.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement,
+			/** @lends CKEDITOR.ui.dialog.select.prototype */
+			{
+				/**
+				 * Gets the DOM element of the select box.
+				 * @returns {CKEDITOR.dom.element} The &lt;select&gt; element of this UI
+				 * element.
+				 * @example
+				 */
+				getInputElement : function()
+				{
+					return this._.select.getElement();
+				},
+
+				/**
+				 * Adds an option to the select box.
+				 * @param {String} label Option label.
+				 * @param {String} value (Optional) Option value, if not defined it'll be
+				 * assumed to be the same as the label.
+				 * @param {Number} index (Optional) Position of the option to be inserted
+				 * to. If not defined the new option will be inserted to the end of list.
+				 * @example
+				 * @returns {CKEDITOR.ui.dialog.select} The current select UI element.
+				 */
+				add : function( label, value, index )
+				{
+					var option = new CKEDITOR.dom.element( 'option', this.getDialog().getParentEditor().document ),
+						selectElement = this.getInputElement().$;
+					option.$.text = label;
+					option.$.value = ( value === undefined || value === null ) ? label : value;
+					if ( index === undefined || index === null )
+					{
+						if ( CKEDITOR.env.ie )
+							selectElement.add( option.$ );
+						else
+							selectElement.add( option.$, null );
+					}
+					else
+						selectElement.add( option.$, index );
+					return this;
+				},
+
+				/**
+				 * Removes an option from the selection list.
+				 * @param {Number} index Index of the option to be removed.
+				 * @example
+				 * @returns {CKEDITOR.ui.dialog.select} The current select UI element.
+				 */
+				remove : function( index )
+				{
+					var selectElement = this.getInputElement().$;
+					selectElement.remove( index );
+					return this;
+				},
+
+				/**
+				 * Clears all options out of the selection list.
+				 * @returns {CKEDITOR.ui.dialog.select} The current select UI element.
+				 */
+				clear : function()
+				{
+					var selectElement = this.getInputElement().$;
+					while ( selectElement.length > 0 )
+						selectElement.remove( 0 );
+					return this;
+				},
+
+				keyboardFocusable : true
+			}, commonPrototype, true );
+
+	CKEDITOR.ui.dialog.checkbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement,
+			/** @lends CKEDITOR.ui.dialog.checkbox.prototype */
+			{
+				/**
+				 * Gets the checkbox DOM element.
+				 * @example
+				 * @returns {CKEDITOR.dom.element} The DOM element of the checkbox.
+				 */
+				getInputElement : function()
+				{
+					return this._.checkbox.getElement();
+				},
+
+				/**
+				 * Sets the state of the checkbox.
+				 * @example
+				 * @param {Boolean} true to tick the checkbox, false to untick it.
+				 */
+				setValue : function( checked )
+				{
+					this.getInputElement().$.checked = checked;
+					this.fire( 'change', { value : checked } );
+				},
+
+				/**
+				 * Gets the state of the checkbox.
+				 * @example
+				 * @returns {Boolean} true means the checkbox is ticked, false means it's not ticked.
+				 */
+				getValue : function()
+				{
+					return this.getInputElement().$.checked;
+				},
+
+				/**
+				 * Handler for the access key up event. Toggles the checkbox.
+				 * @example
+				 */
+				accessKeyUp : function()
+				{
+					this.setValue( !this.getValue() );
+				},
+
+				/**
+				 * Defines the onChange event for UI element definitions.
+				 * @field
+				 * @type Object
+				 * @example
+				 */
+				eventProcessors :
+				{
+					onChange : function( dialog, func )
+					{
+						if ( !CKEDITOR.env.ie )
+							return commonEventProcessors.onChange.apply( this, arguments );
+						else
+						{
+							dialog.on( 'load', function()
+								{
+									var element = this._.checkbox.getElement();
+									element.on( 'propertychange', function( evt )
+										{
+											evt = evt.data.$;
+											if ( evt.propertyName == 'checked' )
+												this.fire( 'change', { value : element.$.checked } );
+										}, this );
+								}, this );
+							this.on( 'change', func );
+						}
+						return null;
+					}
+				},
+
+				keyboardFocusable : true
+			}, commonPrototype, true );
+
+	CKEDITOR.ui.dialog.radio.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement,
+			/** @lends CKEDITOR.ui.dialog.radio.prototype */
+			{
+				/**
+				 * Checks one of the radio buttons in this button group.
+				 * @example
+				 * @param {String} value The value of the button to be chcked.
+				 */
+				setValue : function( value )
+				{
+					var children = this._.children,
+						item;
+					for ( var i = 0 ; ( i < children.length ) && ( item = children[i] ) ; i++ )
+						item.getElement().$.checked = ( item.getValue() == value );
+					this.fire( 'change', { value : value } );
+				},
+
+				/**
+				 * Gets the value of the currently checked radio button.
+				 * @example
+				 * @returns {String} The currently checked button's value.
+				 */
+				getValue : function()
+				{
+					var children = this._.children;
+					for ( var i = 0 ; i < children.length ; i++ )
+					{
+						if ( children[i].getElement().$.checked )
+							return children[i].getValue();
+					}
+					return null;
+				},
+
+				/**
+				 * Handler for the access key up event. Focuses the currently
+				 * selected radio button, or the first radio button if none is
+				 * selected.
+				 * @example
+				 */
+				accessKeyUp : function()
+				{
+					var children = this._.children, i;
+					for ( i = 0 ; i < children.length ; i++ )
+					{
+						if ( children[i].getElement().$.checked )
+						{
+							children[i].getElement().focus();
+							return;
+						}
+					}
+					children[0].getElement().focus();
+				},
+
+				/**
+				 * Defines the onChange event for UI element definitions.
+				 * @field
+				 * @type Object
+				 * @example
+				 */
+				eventProcessors :
+				{
+					onChange : function( dialog, func )
+					{
+						if ( !CKEDITOR.env.ie )
+							return commonEventProcessors.onChange.apply( this, arguments );
+						else
+						{
+							dialog.on( 'load', function()
+								{
+									var children = this._.children, me = this;
+									for ( var i = 0 ; i < children.length ; i++ )
+									{
+										var element = children[i].getElement();
+										element.on( 'propertychange', function( evt )
+											{
+												evt = evt.data.$;
+												if ( evt.propertyName == 'checked' && this.$.checked )
+													me.fire( 'change', { value : this.getAttribute( 'value' ) } );
+											} );
+									}
+								}, this );
+							this.on( 'change', func );
+						}
+						return null;
+					}
+				},
+
+				keyboardFocusable : true
+			}, commonPrototype, true );
+
+	CKEDITOR.ui.dialog.file.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement,
+			commonPrototype,
+			/** @lends CKEDITOR.ui.dialog.file.prototype */
+			{
+				/**
+				 * Gets the &lt;input&gt; element of this file input.
+				 * @returns {CKEDITOR.dom.element} The file input element.
+				 * @example
+				 */
+				getInputElement : function()
+				{
+					var frameDocument = CKEDITOR.document.getById( this._.frameId ).getFrameDocument();
+					return frameDocument.$.forms.length > 0 ?
+						new CKEDITOR.dom.element( frameDocument.$.forms[0].elements[0] ) :
+						this.getElement();
+				},
+
+				/**
+				 * Uploads the file in the file input.
+				 * @returns {CKEDITOR.ui.dialog.file} This object.
+				 * @example
+				 */
+				submit : function()
+				{
+					this.getInputElement().getParent().$.submit();
+					return this;
+				},
+
+				/**
+				 * Get the action assigned to the form.
+				 * @returns {String} The value of the action.
+				 * @example
+				 */
+				getAction : function( action )
+				{
+					return this.getInputElement().getParent().$.action;
+				},
+
+				/**
+				 * Redraws the file input and resets the file path in the file input.
+				 * The redraw logic is necessary because non-IE browsers tend to clear
+				 * the &lt;iframe&gt; containing the file input after closing the dialog.
+				 * @example
+				 */
+				reset : function()
+				{
+					var frameElement = CKEDITOR.document.getById( this._.frameId ),
+						frameDocument = frameElement.getFrameDocument(),
+						elementDefinition = this._.definition,
+						buttons = this._.buttons;
+
+					function generateFormField()
+					{
+						frameDocument.$.open();
+
+						// Support for custom document.domain in IE.
+						if ( CKEDITOR.env.isCustomDomain() )
+							frameDocument.$.domain = document.domain;
+
+						var size = '';
+						if ( elementDefinition.size )
+							size = elementDefinition.size - ( CKEDITOR.env.ie  ? 7 : 0 );	// "Browse" button is bigger in IE.
+
+						frameDocument.$.write( [ '<html><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">',
+								'<form enctype="multipart/form-data" method="POST" action="',
+								CKEDITOR.tools.htmlEncode( elementDefinition.action ),
+								'">',
+								'<input type="file" name="',
+								CKEDITOR.tools.htmlEncode( elementDefinition.id || 'cke_upload' ),
+								'" size="',
+								CKEDITOR.tools.htmlEncode( size > 0 ? size : "" ),
+								'" />',
+								'</form>',
+								'</body></html>' ].join( '' ) );
+
+						frameDocument.$.close();
+
+						for ( var i = 0 ; i < buttons.length ; i++ )
+							buttons[i].enable();
+					}
+
+					// #3465: Wait for the browser to finish rendering the dialog first.
+					if ( CKEDITOR.env.gecko )
+						setTimeout( generateFormField, 500 );
+					else
+						generateFormField();
+				},
+
+				getValue : function()
+				{
+					// The file path returned from the input tag is incomplete anyway, so it's
+					// safe to ignore it and prevent the confirmation dialog from appearing.
+					// (Part of #3465)
+					return '';
+				},
+
+				/**
+				 * Defines the onChange event for UI element definitions.
+				 * @field
+				 * @type Object
+				 * @example
+				 */
+				eventProcessors : commonEventProcessors,
+
+				keyboardFocusable : true
+			}, true );
+
+	CKEDITOR.ui.dialog.fileButton.prototype = new CKEDITOR.ui.dialog.button;
+
+	CKEDITOR.dialog.addUIElement( 'text', textBuilder );
+	CKEDITOR.dialog.addUIElement( 'password', textBuilder );
+	CKEDITOR.dialog.addUIElement( 'textarea', commonBuilder );
+	CKEDITOR.dialog.addUIElement( 'checkbox', commonBuilder );
+	CKEDITOR.dialog.addUIElement( 'radio', commonBuilder );
+	CKEDITOR.dialog.addUIElement( 'button', commonBuilder );
+	CKEDITOR.dialog.addUIElement( 'select', commonBuilder );
+	CKEDITOR.dialog.addUIElement( 'file', commonBuilder );
+	CKEDITOR.dialog.addUIElement( 'fileButton', commonBuilder );
+	CKEDITOR.dialog.addUIElement( 'html', commonBuilder );
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/flash/dialogs/flash.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/flash/dialogs/flash.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/flash/dialogs/flash.js	(revision 2000)
@@ -0,0 +1,682 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	/*
+	 * It is possible to set things in three different places.
+	 * 1. As attributes in the object tag.
+	 * 2. As param tags under the object tag.
+	 * 3. As attributes in the embed tag.
+	 * It is possible for a single attribute to be present in more than one place.
+	 * So let's define a mapping between a sementic attribute and its syntactic
+	 * equivalents.
+	 * Then we'll set and retrieve attribute values according to the mapping,
+	 * instead of having to check and set each syntactic attribute every time.
+	 *
+	 * Reference: http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_12701
+	 */
+	var ATTRTYPE_OBJECT = 1,
+		ATTRTYPE_PARAM = 2,
+		ATTRTYPE_EMBED = 4;
+
+	var attributesMap =
+	{
+		id : [ { type : ATTRTYPE_OBJECT, name :  'id' } ],
+		classid : [ { type : ATTRTYPE_OBJECT, name : 'classid' } ],
+		codebase : [ { type : ATTRTYPE_OBJECT, name : 'codebase'} ],
+		pluginspage : [ { type : ATTRTYPE_EMBED, name : 'pluginspage' } ],
+		src : [ { type : ATTRTYPE_PARAM, name : 'movie' }, { type : ATTRTYPE_EMBED, name : 'src' } ],
+		name : [ { type : ATTRTYPE_EMBED, name : 'name' } ],
+		align : [ { type : ATTRTYPE_OBJECT, name : 'align' } ],
+		title : [ { type : ATTRTYPE_OBJECT, name : 'title' }, { type : ATTRTYPE_EMBED, name : 'title' } ],
+		'class' : [ { type : ATTRTYPE_OBJECT, name : 'class' }, { type : ATTRTYPE_EMBED, name : 'class'} ],
+		width : [ { type : ATTRTYPE_OBJECT, name : 'width' }, { type : ATTRTYPE_EMBED, name : 'width' } ],
+		height : [ { type : ATTRTYPE_OBJECT, name : 'height' }, { type : ATTRTYPE_EMBED, name : 'height' } ],
+		hSpace : [ { type : ATTRTYPE_OBJECT, name : 'hSpace' }, { type : ATTRTYPE_EMBED, name : 'hSpace' } ],
+		vSpace : [ { type : ATTRTYPE_OBJECT, name : 'vSpace' }, { type : ATTRTYPE_EMBED, name : 'vSpace' } ],
+		style : [ { type : ATTRTYPE_OBJECT, name : 'style' }, { type : ATTRTYPE_EMBED, name : 'style' } ],
+		type : [ { type : ATTRTYPE_EMBED, name : 'type' } ]
+	};
+
+	var names = [ 'play', 'loop', 'menu', 'quality', 'scale', 'salign', 'wmode', 'bgcolor', 'base', 'flashvars', 'allowScriptAccess',
+		'allowFullScreen' ];
+	for ( var i = 0 ; i < names.length ; i++ )
+		attributesMap[ names[i] ] = [ { type : ATTRTYPE_EMBED, name : names[i] }, { type : ATTRTYPE_PARAM, name : names[i] } ];
+	names = [ 'allowFullScreen', 'play', 'loop', 'menu' ];
+	for ( i = 0 ; i < names.length ; i++ )
+		attributesMap[ names[i] ][0]['default'] = attributesMap[ names[i] ][1]['default'] = true;
+
+	function loadValue( objectNode, embedNode, paramMap )
+	{
+		var attributes = attributesMap[ this.id ];
+		if ( !attributes )
+			return;
+
+		var isCheckbox = ( this instanceof CKEDITOR.ui.dialog.checkbox );
+		for ( var i = 0 ; i < attributes.length ; i++ )
+		{
+			var attrDef = attributes[ i ];
+			switch ( attrDef.type )
+			{
+				case ATTRTYPE_OBJECT:
+					if ( !objectNode )
+						continue;
+					if ( objectNode.getAttribute( attrDef.name ) !== null )
+					{
+						var value = objectNode.getAttribute( attrDef.name );
+						if ( isCheckbox )
+							this.setValue( value.toLowerCase() == 'true' );
+						else
+							this.setValue( value );
+						return;
+					}
+					else if ( isCheckbox )
+						this.setValue( !!attrDef[ 'default' ] );
+					break;
+				case ATTRTYPE_PARAM:
+					if ( !objectNode )
+						continue;
+					if ( attrDef.name in paramMap )
+					{
+						value = paramMap[ attrDef.name ];
+						if ( isCheckbox )
+							this.setValue( value.toLowerCase() == 'true' );
+						else
+							this.setValue( value );
+						return;
+					}
+					else if ( isCheckbox )
+						this.setValue( !!attrDef[ 'default' ] );
+					break;
+				case ATTRTYPE_EMBED:
+					if ( !embedNode )
+						continue;
+					if ( embedNode.getAttribute( attrDef.name ) )
+					{
+						value = embedNode.getAttribute( attrDef.name );
+						if ( isCheckbox )
+							this.setValue( value.toLowerCase() == 'true' );
+						else
+							this.setValue( value );
+						return;
+					}
+					else if ( isCheckbox )
+						this.setValue( !!attrDef[ 'default' ] );
+			}
+		}
+	}
+
+	function commitValue( objectNode, embedNode, paramMap )
+	{
+		var attributes = attributesMap[ this.id ];
+		if ( !attributes )
+			return;
+
+		var isRemove = ( this.getValue() === '' ),
+			isCheckbox = ( this instanceof CKEDITOR.ui.dialog.checkbox );
+
+		for ( var i = 0 ; i < attributes.length ; i++ )
+		{
+			var attrDef = attributes[i];
+			switch ( attrDef.type )
+			{
+				case ATTRTYPE_OBJECT:
+					if ( !objectNode )
+						continue;
+					var value = this.getValue();
+					if ( isRemove || isCheckbox && value === attrDef[ 'default' ] )
+						objectNode.removeAttribute( attrDef.name );
+					else
+						objectNode.setAttribute( attrDef.name, value );
+					break;
+				case ATTRTYPE_PARAM:
+					if ( !objectNode )
+						continue;
+					value = this.getValue();
+					if ( isRemove || isCheckbox && value === attrDef[ 'default' ] )
+					{
+						if ( attrDef.name in paramMap )
+							paramMap[ attrDef.name ].remove();
+					}
+					else
+					{
+						if ( attrDef.name in paramMap )
+							paramMap[ attrDef.name ].setAttribute( 'value', value );
+						else
+						{
+							var param = CKEDITOR.dom.element.createFromHtml( '<cke:param></cke:param>', objectNode.getDocument() );
+							param.setAttributes( { name : attrDef.name, value : value } );
+							if ( objectNode.getChildCount() < 1 )
+								param.appendTo( objectNode );
+							else
+								param.insertBefore( objectNode.getFirst() );
+						}
+					}
+					break;
+				case ATTRTYPE_EMBED:
+					if ( !embedNode )
+						continue;
+					value = this.getValue();
+					if ( isRemove || isCheckbox && value === attrDef[ 'default' ])
+						embedNode.removeAttribute( attrDef.name );
+					else
+						embedNode.setAttribute( attrDef.name, value );
+			}
+		}
+	}
+
+	CKEDITOR.dialog.add( 'flash', function( editor )
+	{
+		var makeObjectTag = !editor.config.flashEmbedTagOnly,
+			makeEmbedTag = editor.config.flashAddEmbedTag || editor.config.flashEmbedTagOnly;
+
+		var previewAreaHtml = '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.image.preview ) +'<br>' +
+			'<div id="FlashPreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div>' +
+			'<div id="FlashPreviewBox"></div></div>';
+
+		return {
+			title : editor.lang.flash.title,
+			minWidth : 420,
+			minHeight : 310,
+			onShow : function()
+			{
+				// Clear previously saved elements.
+				this.fakeImage = this.objectNode = this.embedNode = null;
+
+				// Try to detect any embed or object tag that has Flash parameters.
+				var fakeImage = this.getSelectedElement();
+				if ( fakeImage && fakeImage.getAttribute( '_cke_real_element_type' ) && fakeImage.getAttribute( '_cke_real_element_type' ) == 'flash' )
+				{
+					this.fakeImage = fakeImage;
+
+					var realElement = editor.restoreRealElement( fakeImage ),
+						objectNode = null, embedNode = null, paramMap = {};
+					if ( realElement.getName() == 'cke:object' )
+					{
+						objectNode = realElement;
+						var embedList = objectNode.getElementsByTag( 'embed', 'cke' );
+						if ( embedList.count() > 0 )
+							embedNode = embedList.getItem( 0 );
+						var paramList = objectNode.getElementsByTag( 'param', 'cke' );
+						for ( var i = 0, length = paramList.count() ; i < length ; i++ )
+						{
+							var item = paramList.getItem( i ),
+								name = item.getAttribute( 'name' ),
+								value = item.getAttribute( 'value' );
+							paramMap[ name ] = value;
+						}
+					}
+					else if ( realElement.getName() == 'cke:embed' )
+						embedNode = realElement;
+
+					this.objectNode = objectNode;
+					this.embedNode = embedNode;
+
+					this.setupContent( objectNode, embedNode, paramMap, fakeImage );
+				}
+			},
+			onOk : function()
+			{
+				// If there's no selected object or embed, create one. Otherwise, reuse the
+				// selected object and embed nodes.
+				var objectNode = null,
+					embedNode = null,
+					paramMap = null;
+				if ( !this.fakeImage )
+				{
+					if ( makeObjectTag )
+					{
+						objectNode = CKEDITOR.dom.element.createFromHtml( '<cke:object></cke:object>', editor.document );
+						var attributes = {
+							classid : 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',
+							codebase : 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'
+						};
+						objectNode.setAttributes( attributes );
+					}
+					if ( makeEmbedTag )
+					{
+						embedNode = CKEDITOR.dom.element.createFromHtml( '<cke:embed></cke:embed>', editor.document );
+						embedNode.setAttributes(
+							{
+								type : 'application/x-shockwave-flash',
+								pluginspage : 'http://www.macromedia.com/go/getflashplayer'
+							} );
+						if ( objectNode )
+							embedNode.appendTo( objectNode );
+					}
+				}
+				else
+				{
+					objectNode = this.objectNode;
+					embedNode = this.embedNode;
+				}
+
+				// Produce the paramMap if there's an object tag.
+				if ( objectNode )
+				{
+					paramMap = {};
+					var paramList = objectNode.getElementsByTag( 'param', 'cke' );
+					for ( var i = 0, length = paramList.count() ; i < length ; i++ )
+						paramMap[ paramList.getItem( i ).getAttribute( 'name' ) ] = paramList.getItem( i );
+				}
+
+				// Apply or remove flash parameters.
+				var extraStyles = {};
+				this.commitContent( objectNode, embedNode, paramMap, extraStyles );
+
+				// Refresh the fake image.
+				var newFakeImage = editor.createFakeElement( objectNode || embedNode, 'cke_flash', 'flash', true );
+				newFakeImage.setStyles( extraStyles );
+				if ( this.fakeImage )
+					newFakeImage.replace( this.fakeImage );
+				else
+					editor.insertElement( newFakeImage );
+			},
+
+			onHide : function()
+			{
+				if ( this.preview )
+					this.preview.setHtml('');
+			},
+
+			contents : [
+				{
+					id : 'info',
+					label : editor.lang.common.generalTab,
+					accessKey : 'I',
+					elements :
+					[
+						{
+							type : 'vbox',
+							padding : 0,
+							children :
+							[
+								{
+									type : 'html',
+									html : '<span>' + CKEDITOR.tools.htmlEncode( editor.lang.image.url ) + '</span>'
+								},
+								{
+									type : 'hbox',
+									widths : [ '280px', '110px' ],
+									align : 'right',
+									children :
+									[
+										{
+											id : 'src',
+											type : 'text',
+											label : '',
+											validate : CKEDITOR.dialog.validate.notEmpty( editor.lang.flash.validateSrc ),
+											setup : loadValue,
+											commit : commitValue,
+											onLoad : function()
+											{
+												var dialog = this.getDialog(),
+												updatePreview = function( src ){
+
+													dialog.preview.setHtml( '<embed height="100%" width="100%" src="'
+														+ CKEDITOR.tools.htmlEncode( src )
+														+ '" type="application/x-shockwave-flash"></embed>' );
+												};
+												// Preview element
+												dialog.preview = dialog.getContentElement( 'info', 'preview' ).getElement().getChild( 3 );
+
+												// Sync on inital value loaded.
+												this.on( 'change', function( evt ){
+
+														if ( evt.data && evt.data.value )
+															updatePreview( evt.data.value );
+													} );
+												// Sync when input value changed.
+												this.getInputElement().on( 'change', function( evt ){
+
+													updatePreview( this.getValue() );
+												}, this );
+											}
+										},
+										{
+											type : 'button',
+											id : 'browse',
+											filebrowser : 'info:src',
+											hidden : true,
+											align : 'center',
+											label : editor.lang.common.browseServer
+										}
+									]
+								}
+							]
+						},
+						{
+							type : 'hbox',
+							widths : [ '25%', '25%', '25%', '25%', '25%' ],
+							children :
+							[
+								{
+									type : 'text',
+									id : 'width',
+									style : 'width:95px',
+									label : editor.lang.flash.width,
+									validate : CKEDITOR.dialog.validate.integer( editor.lang.flash.validateWidth ),
+									setup : function( objectNode, embedNode, paramMap, fakeImage )
+									{
+										loadValue.apply( this, arguments );
+										if ( fakeImage )
+										{
+											var fakeImageWidth = parseInt( fakeImage.$.style.width, 10 );
+											if ( !isNaN( fakeImageWidth ) )
+												this.setValue( fakeImageWidth );
+										}
+									},
+									commit : function( objectNode, embedNode, paramMap, extraStyles )
+									{
+										commitValue.apply( this, arguments );
+										if ( this.getValue() )
+											extraStyles.width = this.getValue() + 'px';
+									}
+								},
+								{
+									type : 'text',
+									id : 'height',
+									style : 'width:95px',
+									label : editor.lang.flash.height,
+									validate : CKEDITOR.dialog.validate.integer( editor.lang.flash.validateHeight ),
+									setup : function( objectNode, embedNode, paramMap, fakeImage )
+									{
+										loadValue.apply( this, arguments );
+										if ( fakeImage )
+										{
+											var fakeImageHeight = parseInt( fakeImage.$.style.height, 10 );
+											if ( !isNaN( fakeImageHeight ) )
+												this.setValue( fakeImageHeight );
+										}
+									},
+									commit : function( objectNode, embedNode, paramMap, extraStyles )
+									{
+										commitValue.apply( this, arguments );
+										if ( this.getValue() )
+											extraStyles.height = this.getValue() + 'px';
+									}
+								},
+								{
+									type : 'text',
+									id : 'hSpace',
+									style : 'width:95px',
+									label : editor.lang.flash.hSpace,
+									validate : CKEDITOR.dialog.validate.integer( editor.lang.flash.validateHSpace ),
+									setup : loadValue,
+									commit : commitValue
+								},
+								{
+									type : 'text',
+									id : 'vSpace',
+									style : 'width:95px',
+									label : editor.lang.flash.vSpace,
+									validate : CKEDITOR.dialog.validate.integer( editor.lang.flash.validateVSpace ),
+									setup : loadValue,
+									commit : commitValue
+								}
+							]
+						},
+
+						{
+							type : 'vbox',
+							children :
+							[
+								{
+									type : 'html',
+									id : 'preview',
+									style : 'width:95%;',
+									html : previewAreaHtml
+								}
+							]
+						}
+					]
+				},
+				{
+					id : 'Upload',
+					hidden : true,
+					filebrowser : 'uploadButton',
+					label : editor.lang.common.upload,
+					elements :
+					[
+						{
+							type : 'file',
+							id : 'upload',
+							label : editor.lang.common.upload,
+							size : 38
+						},
+						{
+							type : 'fileButton',
+							id : 'uploadButton',
+							label : editor.lang.common.uploadSubmit,
+							filebrowser : 'info:src',
+							'for' : [ 'Upload', 'upload' ]
+						}
+					]
+				},
+				{
+					id : 'properties',
+					label : editor.lang.flash.propertiesTab,
+					elements :
+					[
+						{
+							type : 'hbox',
+							widths : [ '50%', '50%' ],
+							children :
+							[
+								{
+									id : 'scale',
+									type : 'select',
+									label : editor.lang.flash.scale,
+									'default' : '',
+									style : 'width : 100%;',
+									items :
+									[
+										[ editor.lang.common.notSet , ''],
+										[ editor.lang.flash.scaleAll, 'showall' ],
+										[ editor.lang.flash.scaleNoBorder, 'noborder' ],
+										[ editor.lang.flash.scaleFit, 'exactfit' ]
+									],
+									setup : loadValue,
+									commit : commitValue
+								},
+								{
+									id : 'allowScriptAccess',
+									type : 'select',
+									label : editor.lang.flash.access,
+									'default' : '',
+									style : 'width : 100%;',
+									items :
+									[
+										[ editor.lang.common.notSet , ''],
+										[ editor.lang.flash.accessAlways, 'always' ],
+										[ editor.lang.flash.accessSameDomain, 'samedomain' ],
+										[ editor.lang.flash.accessNever, 'never' ]
+									],
+									setup : loadValue,
+									commit : commitValue
+								}
+							]
+						},
+						{
+							type : 'hbox',
+							widths : [ '50%', '50%' ],
+							children :
+							[
+								{
+									id : 'wmode',
+									type : 'select',
+									label : editor.lang.flash.windowMode,
+									'default' : '',
+									style : 'width : 100%;',
+									items :
+									[
+										[ editor.lang.common.notSet , '' ],
+										[ editor.lang.flash.windowModeWindow, 'window' ],
+										[ editor.lang.flash.windowModeOpaque, 'opaque' ],
+										[ editor.lang.flash.windowModeTransparent, 'transparent' ]
+									],
+									setup : loadValue,
+									commit : commitValue
+								},
+								{
+									id : 'quality',
+									type : 'select',
+									label : editor.lang.flash.quality,
+									'default' : 'high',
+									style : 'width : 100%;',
+									items :
+									[
+										[ editor.lang.common.notSet , '' ],
+										[ editor.lang.flash.qualityBest, 'best' ],
+										[ editor.lang.flash.qualityHigh, 'high' ],
+										[ editor.lang.flash.qualityAutoHigh, 'autohigh' ],
+										[ editor.lang.flash.qualityMedium, 'medium' ],
+										[ editor.lang.flash.qualityAutoLow, 'autolow' ],
+										[ editor.lang.flash.qualityLow, 'low' ]
+									],
+									setup : loadValue,
+									commit : commitValue
+								}
+							]
+						},
+						{
+							type : 'hbox',
+							widths : [ '50%', '50%' ],
+							children :
+							[
+								{
+									id : 'align',
+									type : 'select',
+									label : editor.lang.flash.align,
+									'default' : '',
+									style : 'width : 100%;',
+									items :
+									[
+										[ editor.lang.common.notSet , ''],
+										[ editor.lang.image.alignLeft , 'left'],
+										[ editor.lang.image.alignAbsBottom , 'absBottom'],
+										[ editor.lang.image.alignAbsMiddle , 'absMiddle'],
+										[ editor.lang.image.alignBaseline , 'baseline'],
+										[ editor.lang.image.alignBottom , 'bottom'],
+										[ editor.lang.image.alignMiddle , 'middle'],
+										[ editor.lang.image.alignRight , 'right'],
+										[ editor.lang.image.alignTextTop , 'textTop'],
+										[ editor.lang.image.alignTop , 'top']
+									],
+									setup : loadValue,
+									commit : commitValue
+								},
+								{
+									type : 'html',
+									html : '<div></div>'
+								}
+							]
+						},
+						{
+							type : 'vbox',
+							padding : 0,
+							children :
+							[
+								{
+									type : 'html',
+									html : CKEDITOR.tools.htmlEncode( editor.lang.flash.flashvars )
+								},
+								{
+									type : 'checkbox',
+									id : 'menu',
+									label : editor.lang.flash.chkMenu,
+									'default' : true,
+									setup : loadValue,
+									commit : commitValue
+								},
+								{
+									type : 'checkbox',
+									id : 'play',
+									label : editor.lang.flash.chkPlay,
+									'default' : true,
+									setup : loadValue,
+									commit : commitValue
+								},
+								{
+									type : 'checkbox',
+									id : 'loop',
+									label : editor.lang.flash.chkLoop,
+									'default' : true,
+									setup : loadValue,
+									commit : commitValue
+								},
+								{
+									type : 'checkbox',
+									id : 'allowFullScreen',
+									label : editor.lang.flash.chkFull,
+									'default' : true,
+									setup : loadValue,
+									commit : commitValue
+								}
+							]
+						}
+					]
+				},
+				{
+					id : 'advanced',
+					label : editor.lang.common.advancedTab,
+					elements :
+					[
+						{
+							type : 'hbox',
+							widths : [ '45%', '55%' ],
+							children :
+							[
+								{
+									type : 'text',
+									id : 'id',
+									label : editor.lang.common.id,
+									setup : loadValue,
+									commit : commitValue
+								},
+								{
+									type : 'text',
+									id : 'title',
+									label : editor.lang.common.advisoryTitle,
+									setup : loadValue,
+									commit : commitValue
+								}
+							]
+						},
+						{
+							type : 'hbox',
+							widths : [ '45%', '55%' ],
+							children :
+							[
+								{
+									type : 'text',
+									id : 'bgcolor',
+									label : editor.lang.flash.bgcolor,
+									setup : loadValue,
+									commit : commitValue
+								},
+								{
+									type : 'text',
+									id : 'class',
+									label : editor.lang.common.cssClass,
+									setup : loadValue,
+									commit : commitValue
+								}
+							]
+						},
+						{
+							type : 'text',
+							id : 'style',
+							label : editor.lang.common.cssStyle,
+							setup : loadValue,
+							commit : commitValue
+						}
+					]
+				}
+			]
+		};
+	} );
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/flash/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/flash/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/flash/plugin.js	(revision 2000)
@@ -0,0 +1,165 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	var flashFilenameRegex = /\.swf(?:$|\?)/i,
+		numberRegex = /^\d+(?:\.\d+)?$/;
+
+	function cssifyLength( length )
+	{
+		if ( numberRegex.test( length ) )
+			return length + 'px';
+		return length;
+	}
+
+	function isFlashEmbed( element )
+	{
+		var attributes = element.attributes;
+
+		return ( attributes.type == 'application/x-shockwave-flash' || flashFilenameRegex.test( attributes.src || '' ) );
+	}
+
+	function createFakeElement( editor, realElement )
+	{
+		var fakeElement = editor.createFakeParserElement( realElement, 'cke_flash', 'flash', true ),
+			fakeStyle = fakeElement.attributes.style || '';
+
+		var width = realElement.attributes.width,
+			height = realElement.attributes.height;
+
+		if ( typeof width != 'undefined' )
+			fakeStyle = fakeElement.attributes.style = fakeStyle + 'width:' + cssifyLength( width ) + ';';
+
+		if ( typeof height != 'undefined' )
+			fakeStyle = fakeElement.attributes.style = fakeStyle + 'height:' + cssifyLength( height ) + ';';
+
+		return fakeElement;
+	}
+
+	CKEDITOR.plugins.add( 'flash',
+	{
+		init : function( editor )
+		{
+			editor.addCommand( 'flash', new CKEDITOR.dialogCommand( 'flash' ) );
+			editor.ui.addButton( 'Flash',
+				{
+					label : editor.lang.common.flash,
+					command : 'flash'
+				});
+			CKEDITOR.dialog.add( 'flash', this.path + 'dialogs/flash.js' );
+
+			editor.addCss(
+				'img.cke_flash' +
+				'{' +
+					'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/placeholder.png' ) + ');' +
+					'background-position: center center;' +
+					'background-repeat: no-repeat;' +
+					'border: 1px solid #a9a9a9;' +
+					'width: 80px;' +
+					'height: 80px;' +
+				'}'
+				);
+
+			// If the "menu" plugin is loaded, register the menu items.
+			if ( editor.addMenuItems )
+			{
+				editor.addMenuItems(
+					{
+						flash :
+						{
+							label : editor.lang.flash.properties,
+							command : 'flash',
+							group : 'flash'
+						}
+					});
+			}
+
+			// If the "contextmenu" plugin is loaded, register the listeners.
+			if ( editor.contextMenu )
+			{
+				editor.contextMenu.addListener( function( element, selection )
+					{
+						if ( element && element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'flash' )
+							return { flash : CKEDITOR.TRISTATE_OFF };
+					});
+			}
+		},
+
+		afterInit : function( editor )
+		{
+			var dataProcessor = editor.dataProcessor,
+				dataFilter = dataProcessor && dataProcessor.dataFilter;
+
+			if ( dataFilter )
+			{
+				dataFilter.addRules(
+					{
+						elements :
+						{
+							'cke:object' : function( element )
+							{
+								var attributes = element.attributes,
+									classId = attributes.classid && String( attributes.classid ).toLowerCase();
+
+								if ( !classId )
+								{
+									// Look for the inner <embed>
+									for ( var i = 0 ; i < element.children.length ; i++ )
+									{
+										if ( element.children[ i ].name == 'embed' )
+										{
+											if ( !isFlashEmbed( element.children[ i ] ) )
+												return null;
+
+											return createFakeElement( editor, element );
+										}
+									}
+									return null;
+								}
+
+								return createFakeElement( editor, element );
+							},
+
+							'cke:embed' : function( element )
+							{
+								if ( !isFlashEmbed( element ) )
+									return null;
+
+								return createFakeElement( editor, element );
+							}
+						}
+					},
+					5);
+			}
+		},
+
+		requires : [ 'fakeobjects' ]
+	});
+})();
+
+CKEDITOR.tools.extend( CKEDITOR.config,
+{
+	/**
+	 * Save as EMBED tag only. This tag is unrecommended.
+	 * @type Boolean
+	 * @default false
+	 */
+	flashEmbedTagOnly : false,
+
+	/**
+	 * Add EMBED tag as alternative: &lt;object&gt&lt;embed&gt&lt;/embed&gt&lt;/object&gt
+	 * @type Boolean
+	 * @default false
+	 */
+	flashAddEmbedTag : true,
+
+	/**
+	 * Use embedTagOnly and addEmbedTag values on edit.
+	 * @type Boolean
+	 * @default false
+	 */
+	flashConvertOnEdit : false
+} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/justify/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/justify/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/justify/plugin.js	(revision 2000)
@@ -0,0 +1,164 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Justify commands.
+ */
+
+(function()
+{
+	var alignRemoveRegex = /(-moz-|-webkit-|start|auto)/i;
+
+	function getState( editor, path )
+	{
+		var firstBlock = path.block || path.blockLimit;
+
+		if ( !firstBlock || firstBlock.getName() == 'body' )
+			return CKEDITOR.TRISTATE_OFF;
+
+		var currentAlign = firstBlock.getComputedStyle( 'text-align' ).replace( alignRemoveRegex, '' );
+		if ( ( !currentAlign && this.isDefaultAlign ) || currentAlign == this.value )
+			return CKEDITOR.TRISTATE_ON;
+		return CKEDITOR.TRISTATE_OFF;
+	}
+
+	function onSelectionChange( evt )
+	{
+		var command = evt.editor.getCommand( this.name );
+		command.state = getState.call( this, evt.editor, evt.data.path );
+		command.fire( 'state' );
+	}
+
+	function justifyCommand( editor, name, value )
+	{
+		this.name = name;
+		this.value = value;
+
+		var contentDir = editor.config.contentsLangDirection;
+		this.isDefaultAlign = ( value == 'left' && contentDir == 'ltr' ) ||
+			( value == 'right' && contentDir == 'rtl' );
+
+		var classes = editor.config.justifyClasses;
+		if ( classes )
+		{
+			switch ( value )
+			{
+				case 'left' :
+					this.cssClassName = classes[0];
+					break;
+				case 'center' :
+					this.cssClassName = classes[1];
+					break;
+				case 'right' :
+					this.cssClassName = classes[2];
+					break;
+				case 'justify' :
+					this.cssClassName = classes[3];
+					break;
+			}
+
+			this.cssClassRegex = new RegExp( '(?:^|\\s+)(?:' + classes.join( '|' ) + ')(?=$|\\s)' );
+		}
+	}
+
+	justifyCommand.prototype = {
+		exec : function( editor )
+		{
+			var selection = editor.getSelection();
+			if ( !selection )
+				return;
+
+			var bookmarks = selection.createBookmarks(),
+				ranges = selection.getRanges();
+
+
+			var cssClassName = this.cssClassName,
+				iterator,
+				block;
+			for ( var i = ranges.length - 1 ; i >= 0 ; i-- )
+			{
+				iterator = ranges[ i ].createIterator();
+				while ( ( block = iterator.getNextParagraph() ) )
+				{
+					block.removeAttribute( 'align' );
+
+					if ( cssClassName )
+					{
+						// Remove any of the alignment classes from the className.
+						var className = block.$.className =
+							CKEDITOR.tools.ltrim( block.$.className.replace( this.cssClassRegex, '' ) );
+
+						// Append the desired class name.
+						if ( this.state == CKEDITOR.TRISTATE_OFF && !this.isDefaultAlign )
+							block.addClass( cssClassName );
+						else if ( !className )
+							block.removeAttribute( 'class' );
+					}
+					else
+					{
+						if ( this.state == CKEDITOR.TRISTATE_OFF && !this.isDefaultAlign )
+							block.setStyle( 'text-align', this.value );
+						else
+							block.removeStyle( 'text-align' );
+					}
+				}
+
+			}
+
+			editor.focus();
+			editor.forceNextSelectionCheck();
+			selection.selectBookmarks( bookmarks );
+		}
+	};
+
+	CKEDITOR.plugins.add( 'justify',
+	{
+		init : function( editor )
+		{
+			var left = new justifyCommand( editor, 'justifyleft', 'left' ),
+				center = new justifyCommand( editor, 'justifycenter', 'center' ),
+				right = new justifyCommand( editor, 'justifyright', 'right' ),
+				justify = new justifyCommand( editor, 'justifyblock', 'justify' );
+
+			editor.addCommand( 'justifyleft', left );
+			editor.addCommand( 'justifycenter', center );
+			editor.addCommand( 'justifyright', right );
+			editor.addCommand( 'justifyblock', justify );
+
+			editor.ui.addButton( 'JustifyLeft',
+				{
+					label : editor.lang.justify.left,
+					command : 'justifyleft'
+				} );
+			editor.ui.addButton( 'JustifyCenter',
+				{
+					label : editor.lang.justify.center,
+					command : 'justifycenter'
+				} );
+			editor.ui.addButton( 'JustifyRight',
+				{
+					label : editor.lang.justify.right,
+					command : 'justifyright'
+				} );
+			editor.ui.addButton( 'JustifyBlock',
+				{
+					label : editor.lang.justify.block,
+					command : 'justifyblock'
+				} );
+
+			editor.on( 'selectionChange', CKEDITOR.tools.bind( onSelectionChange, left ) );
+			editor.on( 'selectionChange', CKEDITOR.tools.bind( onSelectionChange, right ) );
+			editor.on( 'selectionChange', CKEDITOR.tools.bind( onSelectionChange, center ) );
+			editor.on( 'selectionChange', CKEDITOR.tools.bind( onSelectionChange, justify ) );
+		},
+
+		requires : [ 'domiterator' ]
+	});
+})();
+
+CKEDITOR.tools.extend( CKEDITOR.config,
+	{
+		justifyClasses : null
+	} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/link/dialogs/anchor.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/link/dialogs/anchor.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/link/dialogs/anchor.js	(revision 2000)
@@ -0,0 +1,98 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'anchor', function( editor )
+{
+	// Function called in onShow to load selected element.
+	var loadElements = function( editor, selection, element )
+	{
+		this.editMode = true;
+		this.editObj = element;
+
+		var attributeValue = this.editObj.getAttribute( 'name' );
+		if ( attributeValue )
+			this.setValueOf( 'info','txtName', attributeValue );
+		else
+			this.setValueOf( 'info','txtName', "" );
+	};
+
+	return {
+		title : editor.lang.anchor.title,
+		minWidth : 300,
+		minHeight : 60,
+		onOk : function()
+		{
+			// Always create a new anchor, because of IE BUG.
+			var name = this.getValueOf( 'info', 'txtName' ),
+				element = CKEDITOR.env.ie ?
+				editor.document.createElement( '<a name="' + CKEDITOR.tools.htmlEncode( name ) + '">' ) :
+				editor.document.createElement( 'a' );
+
+			// Move contents and attributes of old anchor to new anchor.
+			if ( this.editMode )
+			{
+				this.editObj.copyAttributes( element, { name : 1 } );
+				this.editObj.moveChildren( element );
+			}
+
+			// Set name.
+			element.removeAttribute( '_cke_saved_name' );
+			element.setAttribute( 'name', name );
+
+			// Insert a new anchor.
+			var fakeElement = editor.createFakeElement( element, 'cke_anchor', 'anchor' );
+			if ( !this.editMode )
+				editor.insertElement( fakeElement );
+			else
+			{
+				fakeElement.replace( this.fakeObj );
+				editor.getSelection().selectElement( fakeElement );
+			}
+
+			return true;
+		},
+		onShow : function()
+		{
+			this.editObj = false;
+			this.fakeObj = false;
+			this.editMode = false;
+
+			var selection = editor.getSelection();
+			var element = selection.getSelectedElement();
+			if ( element && element.getAttribute( '_cke_real_element_type' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' )
+			{
+				this.fakeObj = element;
+				element = editor.restoreRealElement( this.fakeObj );
+				loadElements.apply( this, [ editor, selection, element ] );
+				selection.selectElement( this.fakeObj );
+			}
+			this.getContentElement( 'info', 'txtName' ).focus();
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.anchor.title,
+				accessKey : 'I',
+				elements :
+				[
+					{
+						type : 'text',
+						id : 'txtName',
+						label : editor.lang.anchor.name,
+						validate : function()
+						{
+							if ( !this.getValue() )
+							{
+								alert( editor.lang.anchor.errorName );
+								return false;
+							}
+							return true;
+						}
+					}
+				]
+			}
+		]
+	};
+} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/link/dialogs/link.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/link/dialogs/link.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/link/dialogs/link.js	(revision 2000)
@@ -0,0 +1,1217 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'link', function( editor )
+{
+	// Handles the event when the "Target" selection box is changed.
+	var targetChanged = function()
+	{
+		var dialog = this.getDialog(),
+			popupFeatures = dialog.getContentElement( 'target', 'popupFeatures' ),
+			targetName = dialog.getContentElement( 'target', 'linkTargetName' ),
+			value = this.getValue();
+
+		if ( !popupFeatures || !targetName )
+			return;
+
+		popupFeatures = popupFeatures.getElement();
+
+		if ( value == 'popup' )
+		{
+			popupFeatures.show();
+			targetName.setLabel( editor.lang.link.targetPopupName );
+		}
+		else
+		{
+			popupFeatures.hide();
+			targetName.setLabel( editor.lang.link.targetFrameName );
+			this.getDialog().setValueOf( 'target', 'linkTargetName', value.charAt( 0 ) == '_' ? value : '' );
+		}
+	};
+
+	// Handles the event when the "Type" selection box is changed.
+	var linkTypeChanged = function()
+	{
+		var dialog = this.getDialog(),
+			partIds = [ 'urlOptions', 'anchorOptions', 'emailOptions' ],
+			typeValue = this.getValue(),
+			uploadInitiallyHidden = dialog.definition.getContents( 'upload' ).hidden;
+
+		if ( typeValue == 'url' )
+		{
+			if ( editor.config.linkShowTargetTab )
+				dialog.showPage( 'target' );
+			if ( !uploadInitiallyHidden )
+				dialog.showPage( 'upload' );
+		}
+		else
+		{
+			dialog.hidePage( 'target' );
+			if ( !uploadInitiallyHidden )
+				dialog.hidePage( 'upload' );
+		}
+
+		for ( var i = 0 ; i < partIds.length ; i++ )
+		{
+			var element = dialog.getContentElement( 'info', partIds[i] );
+			if ( !element )
+				continue;
+
+			element = element.getElement().getParent().getParent();
+			if ( partIds[i] == typeValue + 'Options' )
+				element.show();
+			else
+				element.hide();
+		}
+	};
+
+	// Loads the parameters in a selected link to the link dialog fields.
+	var emailRegex = /^mailto:([^?]+)(?:\?(.+))?$/,
+		emailSubjectRegex = /subject=([^;?:@&=$,\/]*)/,
+		emailBodyRegex = /body=([^;?:@&=$,\/]*)/,
+		anchorRegex = /^#(.*)$/,
+		urlRegex = /^((?:http|https|ftp|news):\/\/)?(.*)$/,
+		selectableTargets = /^(_(?:self|top|parent|blank))$/;
+
+	var popupRegex =
+		/\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*/;
+	var popupFeaturesRegex = /(?:^|,)([^=]+)=(\d+|yes|no)/gi;
+
+	var parseLink = function( editor, element )
+	{
+		var href = element ? ( element.getAttribute( '_cke_saved_href' ) || element.getAttribute( 'href' ) ) : '',
+			emailMatch = '',
+			anchorMatch = '',
+			urlMatch = false,
+			retval = {};
+
+		if ( href )
+		{
+			emailMatch = href.match( emailRegex );
+			anchorMatch = href.match( anchorRegex );
+			urlMatch = href.match( urlRegex );
+		}
+
+		// Load the link type and URL.
+		if ( emailMatch )
+		{
+			var subjectMatch = href.match( emailSubjectRegex ),
+				bodyMatch = href.match( emailBodyRegex );
+			retval.type = 'email';
+			retval.email = {};
+			retval.email.address = emailMatch[1];
+			subjectMatch && ( retval.email.subject = decodeURIComponent( subjectMatch[1] ) );
+			bodyMatch && ( retval.email.body = decodeURIComponent( bodyMatch[1] ) );
+		}
+		else if ( anchorMatch )
+		{
+			retval.type = 'anchor';
+			retval.anchor = {};
+			retval.anchor.name = retval.anchor.id = anchorMatch[1];
+		}
+		else if ( href && urlMatch )		// urlRegex matches empty strings, so need to check for href as well.
+		{
+			retval.type = 'url';
+			retval.url = {};
+			retval.url.protocol = urlMatch[1];
+			retval.url.url = urlMatch[2];
+		}
+		else
+			retval.type = 'url';
+
+		// Load target and popup settings.
+		if ( element )
+		{
+			var target = element.getAttribute( 'target' );
+			retval.target = {};
+			retval.adv = {};
+
+			// IE BUG: target attribute is an empty string instead of null in IE if it's not set.
+			if ( !target )
+			{
+				var onclick = element.getAttribute( '_cke_pa_onclick' ) || element.getAttribute( 'onclick' ),
+					onclickMatch = onclick && onclick.match( popupRegex );
+				if ( onclickMatch )
+				{
+					retval.target.type = 'popup';
+					retval.target.name = onclickMatch[1];
+
+					var featureMatch;
+					while ( ( featureMatch = popupFeaturesRegex.exec( onclickMatch[2] ) ) )
+					{
+						if ( featureMatch[2] == 'yes' || featureMatch[2] == '1' )
+							retval.target[ featureMatch[1] ] = true;
+						else if ( isFinite( featureMatch[2] ) )
+							retval.target[ featureMatch[1] ] = featureMatch[2];
+					}
+				}
+			}
+			else
+			{
+				var targetMatch = target.match( selectableTargets );
+				if ( targetMatch )
+					retval.target.type = retval.target.name = target;
+				else
+				{
+					retval.target.type = 'frame';
+					retval.target.name = target;
+				}
+			}
+
+			var me = this;
+			var advAttr = function( inputName, attrName )
+			{
+				var value = element.getAttribute( attrName );
+				if ( value !== null )
+					retval.adv[ inputName ] = value || '';
+			};
+			advAttr( 'advId', 'id' );
+			advAttr( 'advLangDir', 'dir' );
+			advAttr( 'advAccessKey', 'accessKey' );
+			advAttr( 'advName', 'name' );
+			advAttr( 'advLangCode', 'lang' );
+			advAttr( 'advTabIndex', 'tabindex' );
+			advAttr( 'advTitle', 'title' );
+			advAttr( 'advContentType', 'type' );
+			advAttr( 'advCSSClasses', 'class' );
+			advAttr( 'advCharset', 'charset' );
+			advAttr( 'advStyles', 'style' );
+		}
+
+		// Find out whether we have any anchors in the editor.
+		// Get all IMG elements in CK document.
+		var elements = editor.document.getElementsByTag( 'img' ),
+			realAnchors = new CKEDITOR.dom.nodeList( editor.document.$.anchors ),
+			anchors = retval.anchors = [];
+
+		for( var i = 0; i < elements.count() ; i++ )
+		{
+			var item = elements.getItem( i );
+			if ( item.getAttribute( '_cke_realelement' ) && item.getAttribute( '_cke_real_element_type' ) == 'anchor' )
+			{
+				anchors.push( editor.restoreRealElement( item ) );
+			}
+		}
+
+		for ( i = 0 ; i < realAnchors.count() ; i++ )
+			anchors.push( realAnchors.getItem( i ) );
+
+		for ( i = 0 ; i < anchors.length ; i++ )
+		{
+			item = anchors[ i ];
+			anchors[ i ] = { name : item.getAttribute( 'name' ), id : item.getAttribute( 'id' ) };
+		}
+
+		// Record down the selected element in the dialog.
+		this._.selectedElement = element;
+
+		return retval;
+	};
+
+	var setupParams = function( page, data )
+	{
+		if ( data[page] )
+			this.setValue( data[page][this.id] || '' );
+	};
+
+	var setupPopupParams = function( data )
+	{
+		return setupParams.call( this, 'target', data );
+	};
+
+	var setupAdvParams = function( data )
+	{
+		return setupParams.call( this, 'adv', data );
+	};
+
+	var commitParams = function( page, data )
+	{
+		if ( !data[page] )
+			data[page] = {};
+
+		data[page][this.id] = this.getValue() || '';
+	};
+
+	var commitPopupParams = function( data )
+	{
+		return commitParams.call( this, 'target', data );
+	};
+
+	var commitAdvParams = function( data )
+	{
+		return commitParams.call( this, 'adv', data );
+	};
+
+	return {
+		title : editor.lang.link.title,
+		minWidth : 350,
+		minHeight : 230,
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.link.info,
+				title : editor.lang.link.info,
+				elements :
+				[
+					{
+						id : 'linkType',
+						type : 'select',
+						label : editor.lang.link.type,
+						'default' : 'url',
+						items :
+						[
+							[ editor.lang.common.url, 'url' ],
+							[ editor.lang.link.toAnchor, 'anchor' ],
+							[ editor.lang.link.toEmail, 'email' ]
+						],
+						onChange : linkTypeChanged,
+						setup : function( data )
+						{
+							if ( data.type )
+								this.setValue( data.type );
+						},
+						commit : function( data )
+						{
+							data.type = this.getValue();
+						}
+					},
+					{
+						type : 'vbox',
+						id : 'urlOptions',
+						children :
+						[
+							{
+								type : 'hbox',
+								widths : [ '25%', '75%' ],
+								children :
+								[
+									{
+										id : 'protocol',
+										type : 'select',
+										label : editor.lang.common.protocol,
+										'default' : 'http://',
+										style : 'width : 100%;',
+										items :
+										[
+											[ 'http://' ],
+											[ 'https://' ],
+											[ 'ftp://' ],
+											[ 'news://' ],
+											[ '<other>', '' ]
+										],
+										setup : function( data )
+										{
+											if ( data.url )
+												this.setValue( data.url.protocol );
+										},
+										commit : function( data )
+										{
+											if ( !data.url )
+												data.url = {};
+
+											data.url.protocol = this.getValue();
+										}
+									},
+									{
+										type : 'text',
+										id : 'url',
+										label : editor.lang.common.url,
+										onLoad : function ()
+										{
+											this.allowOnChange = true;
+										},
+										onKeyUp : function()
+										{
+											this.allowOnChange = false;
+											var	protocolCmb = this.getDialog().getContentElement( 'info', 'protocol' ),
+												url = this.getValue(),
+												urlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi,
+												urlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi;
+
+											var protocol = urlOnChangeProtocol.exec( url );
+											if ( protocol )
+											{
+												this.setValue( url.substr( protocol[ 0 ].length ) );
+												protocolCmb.setValue( protocol[ 0 ].toLowerCase() );
+											}
+											else if ( urlOnChangeTestOther.test( url ) )
+												protocolCmb.setValue( '' );
+
+											this.allowOnChange = true;
+										},
+										onChange : function()
+										{
+											if ( this.allowOnChange )		// Dont't call on dialog load.
+												this.onKeyUp();
+										},
+										validate : function()
+										{
+											var dialog = this.getDialog();
+
+											if ( dialog.getContentElement( 'info', 'linkType' ) &&
+													dialog.getValueOf( 'info', 'linkType' ) != 'url' )
+												return true;
+
+											if ( this.getDialog().fakeObj )	// Edit Anchor.
+												return true;
+
+											var func = CKEDITOR.dialog.validate.notEmpty( editor.lang.link.noUrl );
+											return func.apply( this );
+										},
+										setup : function( data )
+										{
+											this.allowOnChange = false;
+											if ( data.url )
+												this.setValue( data.url.url );
+											this.allowOnChange = true;
+
+											var linkType = this.getDialog().getContentElement( 'info', 'linkType' );
+											if ( linkType && linkType.getValue() == 'url' )
+												this.select();
+
+										},
+										commit : function( data )
+										{
+											if ( !data.url )
+												data.url = {};
+
+											data.url.url = this.getValue();
+											this.allowOnChange = false;
+										}
+									}
+								],
+								setup : function( data )
+								{
+									if ( !this.getDialog().getContentElement( 'info', 'linkType' ) )
+										this.getElement().show();
+								}
+							},
+							{
+								type : 'button',
+								id : 'browse',
+								hidden : 'true',
+								filebrowser : 'info:url',
+								label : editor.lang.common.browseServer
+							}
+						]
+					},
+					{
+						type : 'vbox',
+						id : 'anchorOptions',
+						width : 260,
+						align : 'center',
+						padding : 0,
+						children :
+						[
+							{
+								type : 'html',
+								id : 'selectAnchorText',
+								html : CKEDITOR.tools.htmlEncode( editor.lang.link.selectAnchor ),
+								setup : function( data )
+								{
+									if ( data.anchors.length > 0 )
+										this.getElement().show();
+									else
+										this.getElement().hide();
+								}
+							},
+							{
+								type : 'html',
+								id : 'noAnchors',
+								style : 'text-align: center;',
+								html : '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.link.noAnchors ) + '</div>',
+								setup : function( data )
+								{
+									if ( data.anchors.length < 1 )
+										this.getElement().show();
+									else
+										this.getElement().hide();
+								}
+							},
+							{
+								type : 'hbox',
+								id : 'selectAnchor',
+								children :
+								[
+									{
+										type : 'select',
+										id : 'anchorName',
+										'default' : '',
+										label : editor.lang.link.anchorName,
+										style : 'width: 100%;',
+										items :
+										[
+											[ '' ]
+										],
+										setup : function( data )
+										{
+											this.clear();
+											this.add( '' );
+											for ( var i = 0 ; i < data.anchors.length ; i++ )
+											{
+												if ( data.anchors[i].name )
+													this.add( data.anchors[i].name );
+											}
+
+											if ( data.anchor )
+												this.setValue( data.anchor.name );
+
+											var linkType = this.getDialog().getContentElement( 'info', 'linkType' );
+											if ( linkType && linkType.getValue() == 'email' )
+												this.focus();
+										},
+										commit : function( data )
+										{
+											if ( !data.anchor )
+												data.anchor = {};
+
+											data.anchor.name = this.getValue();
+										}
+									},
+									{
+										type : 'select',
+										id : 'anchorId',
+										'default' : '',
+										label : editor.lang.link.anchorId,
+										style : 'width: 100%;',
+										items :
+										[
+											[ '' ]
+										],
+										setup : function( data )
+										{
+											this.clear();
+											this.add( '' );
+											for ( var i = 0 ; i < data.anchors.length ; i++ )
+											{
+												if ( data.anchors[i].id )
+													this.add( data.anchors[i].id );
+											}
+
+											if ( data.anchor )
+												this.setValue( data.anchor.id );
+										},
+										commit : function( data )
+										{
+											if ( !data.anchor )
+												data.anchor = {};
+
+											data.anchor.id = this.getValue();
+										}
+									}
+								],
+								setup : function( data )
+								{
+									if ( data.anchors.length > 0 )
+										this.getElement().show();
+									else
+										this.getElement().hide();
+								}
+							}
+						],
+						setup : function( data )
+						{
+							if ( !this.getDialog().getContentElement( 'info', 'linkType' ) )
+								this.getElement().hide();
+						}
+					},
+					{
+						type :  'vbox',
+						id : 'emailOptions',
+						padding : 1,
+						children :
+						[
+							{
+								type : 'text',
+								id : 'emailAddress',
+								label : editor.lang.link.emailAddress,
+								validate : function()
+								{
+									var dialog = this.getDialog();
+
+									if ( !dialog.getContentElement( 'info', 'linkType' ) ||
+											dialog.getValueOf( 'info', 'linkType' ) != 'email' )
+										return true;
+
+									var func = CKEDITOR.dialog.validate.notEmpty( editor.lang.link.noEmail );
+									return func.apply( this );
+								},
+								setup : function( data )
+								{
+									if ( data.email )
+										this.setValue( data.email.address );
+
+									var linkType = this.getDialog().getContentElement( 'info', 'linkType' );
+									if ( linkType && linkType.getValue() == 'email' )
+										this.select();
+								},
+								commit : function( data )
+								{
+									if ( !data.email )
+										data.email = {};
+
+									data.email.address = this.getValue();
+								}
+							},
+							{
+								type : 'text',
+								id : 'emailSubject',
+								label : editor.lang.link.emailSubject,
+								setup : function( data )
+								{
+									if ( data.email )
+										this.setValue( data.email.subject );
+								},
+								commit : function( data )
+								{
+									if ( !data.email )
+										data.email = {};
+
+									data.email.subject = this.getValue();
+								}
+							},
+							{
+								type : 'textarea',
+								id : 'emailBody',
+								label : editor.lang.link.emailBody,
+								rows : 3,
+								'default' : '',
+								setup : function( data )
+								{
+									if ( data.email )
+										this.setValue( data.email.body );
+								},
+								commit : function( data )
+								{
+									if ( !data.email )
+										data.email = {};
+
+									data.email.body = this.getValue();
+								}
+							}
+						],
+						setup : function( data )
+						{
+							if ( !this.getDialog().getContentElement( 'info', 'linkType' ) )
+								this.getElement().hide();
+						}
+					}
+				]
+			},
+			{
+				id : 'target',
+				label : editor.lang.link.target,
+				title : editor.lang.link.target,
+				elements :
+				[
+					{
+						type : 'hbox',
+						widths : [ '50%', '50%' ],
+						children :
+						[
+							{
+								type : 'select',
+								id : 'linkTargetType',
+								label : editor.lang.link.target,
+								'default' : 'notSet',
+								style : 'width : 100%;',
+								'items' :
+								[
+									[ editor.lang.link.targetNotSet, 'notSet' ],
+									[ editor.lang.link.targetFrame, 'frame' ],
+									[ editor.lang.link.targetPopup, 'popup' ],
+									[ editor.lang.link.targetNew, '_blank' ],
+									[ editor.lang.link.targetTop, '_top' ],
+									[ editor.lang.link.targetSelf, '_self' ],
+									[ editor.lang.link.targetParent, '_parent' ]
+								],
+								onChange : targetChanged,
+								setup : function( data )
+								{
+									if ( data.target )
+										this.setValue( data.target.type );
+								},
+								commit : function( data )
+								{
+									if ( !data.target )
+										data.target = {};
+
+									data.target.type = this.getValue();
+								}
+							},
+							{
+								type : 'text',
+								id : 'linkTargetName',
+								label : editor.lang.link.targetFrameName,
+								'default' : '',
+								setup : function( data )
+								{
+									if ( data.target )
+										this.setValue( data.target.name );
+								},
+								commit : function( data )
+								{
+									if ( !data.target )
+										data.target = {};
+
+									data.target.name = this.getValue();
+								}
+							}
+						]
+					},
+					{
+						type : 'vbox',
+						width : 260,
+						align : 'center',
+						padding : 2,
+						id : 'popupFeatures',
+						children :
+						[
+							{
+								type : 'html',
+								html : CKEDITOR.tools.htmlEncode( editor.lang.link.popupFeatures )
+							},
+							{
+								type : 'hbox',
+								children :
+								[
+									{
+										type : 'checkbox',
+										id : 'resizable',
+										label : editor.lang.link.popupResizable,
+										setup : setupPopupParams,
+										commit : commitPopupParams
+									},
+									{
+										type : 'checkbox',
+										id : 'status',
+										label : editor.lang.link.popupStatusBar,
+										setup : setupPopupParams,
+										commit : commitPopupParams
+
+									}
+								]
+							},
+							{
+								type : 'hbox',
+								children :
+								[
+									{
+										type : 'checkbox',
+										id : 'location',
+										label : editor.lang.link.popupLocationBar,
+										setup : setupPopupParams,
+										commit : commitPopupParams
+
+									},
+									{
+										type : 'checkbox',
+										id : 'toolbar',
+										label : editor.lang.link.popupToolbar,
+										setup : setupPopupParams,
+										commit : commitPopupParams
+
+									}
+								]
+							},
+							{
+								type : 'hbox',
+								children :
+								[
+									{
+										type : 'checkbox',
+										id : 'menubar',
+										label : editor.lang.link.popupMenuBar,
+										setup : setupPopupParams,
+										commit : commitPopupParams
+
+									},
+									{
+										type : 'checkbox',
+										id : 'fullscreen',
+										label : editor.lang.link.popupFullScreen,
+										setup : setupPopupParams,
+										commit : commitPopupParams
+
+									}
+								]
+							},
+							{
+								type : 'hbox',
+								children :
+								[
+									{
+										type : 'checkbox',
+										id : 'scrollbars',
+										label : editor.lang.link.popupScrollBars,
+										setup : setupPopupParams,
+										commit : commitPopupParams
+
+									},
+									{
+										type : 'checkbox',
+										id : 'dependent',
+										label : editor.lang.link.popupDependent,
+										setup : setupPopupParams,
+										commit : commitPopupParams
+
+									}
+								]
+							},
+							{
+								type : 'hbox',
+								children :
+								[
+									{
+										type :  'text',
+										widths : [ '30%', '70%' ],
+										labelLayout : 'horizontal',
+										label : editor.lang.link.popupWidth,
+										id : 'width',
+										setup : setupPopupParams,
+										commit : commitPopupParams
+
+									},
+									{
+										type :  'text',
+										labelLayout : 'horizontal',
+										widths : [ '55%', '45%' ],
+										label : editor.lang.link.popupLeft,
+										id : 'left',
+										setup : setupPopupParams,
+										commit : commitPopupParams
+
+									}
+								]
+							},
+							{
+								type : 'hbox',
+								children :
+								[
+									{
+										type :  'text',
+										labelLayout : 'horizontal',
+										widths : [ '30%', '70%' ],
+										label : editor.lang.link.popupHeight,
+										id : 'height',
+										setup : setupPopupParams,
+										commit : commitPopupParams
+
+									},
+									{
+										type :  'text',
+										labelLayout : 'horizontal',
+										label : editor.lang.link.popupTop,
+										widths : [ '55%', '45%' ],
+										id : 'top',
+										setup : setupPopupParams,
+										commit : commitPopupParams
+
+									}
+								]
+							}
+						]
+					}
+				]
+			},
+			{
+				id : 'upload',
+				label : editor.lang.link.upload,
+				title : editor.lang.link.upload,
+				hidden : true,
+				filebrowser : 'uploadButton',
+				elements :
+				[
+					{
+						type : 'file',
+						id : 'upload',
+						label : editor.lang.common.upload,
+						style: 'height:40px',
+						size : 29
+					},
+					{
+						type : 'fileButton',
+						id : 'uploadButton',
+						label : editor.lang.common.uploadSubmit,
+						filebrowser : 'info:url',
+						'for' : [ 'upload', 'upload' ]
+					}
+				]
+			},
+			{
+				id : 'advanced',
+				label : editor.lang.link.advanced,
+				title : editor.lang.link.advanced,
+				elements :
+				[
+					{
+						type : 'vbox',
+						padding : 1,
+						children :
+						[
+							{
+								type : 'hbox',
+								widths : [ '45%', '35%', '20%' ],
+								children :
+								[
+									{
+										type : 'text',
+										id : 'advId',
+										label : editor.lang.link.id,
+										setup : setupAdvParams,
+										commit : commitAdvParams
+									},
+									{
+										type : 'select',
+										id : 'advLangDir',
+										label : editor.lang.link.langDir,
+										'default' : '',
+										style : 'width:110px',
+										items :
+										[
+											[ editor.lang.link.langDirNotSet, '' ],
+											[ editor.lang.link.langDirLTR, 'ltr' ],
+											[ editor.lang.link.langDirRTL, 'rtl' ]
+										],
+										setup : setupAdvParams,
+										commit : commitAdvParams
+									},
+									{
+										type : 'text',
+										id : 'advAccessKey',
+										width : '80px',
+										label : editor.lang.link.acccessKey,
+										maxLength : 1,
+										setup : setupAdvParams,
+										commit : commitAdvParams
+
+									}
+								]
+							},
+							{
+								type : 'hbox',
+								widths : [ '45%', '35%', '20%' ],
+								children :
+								[
+									{
+										type : 'text',
+										label : editor.lang.link.name,
+										id : 'advName',
+										setup : setupAdvParams,
+										commit : commitAdvParams
+
+									},
+									{
+										type : 'text',
+										label : editor.lang.link.langCode,
+										id : 'advLangCode',
+										width : '110px',
+										'default' : '',
+										setup : setupAdvParams,
+										commit : commitAdvParams
+
+									},
+									{
+										type : 'text',
+										label : editor.lang.link.tabIndex,
+										id : 'advTabIndex',
+										width : '80px',
+										maxLength : 5,
+										setup : setupAdvParams,
+										commit : commitAdvParams
+
+									}
+								]
+							}
+						]
+					},
+					{
+						type : 'vbox',
+						padding : 1,
+						children :
+						[
+							{
+								type : 'hbox',
+								widths : [ '45%', '55%' ],
+								children :
+								[
+									{
+										type : 'text',
+										label : editor.lang.link.advisoryTitle,
+										'default' : '',
+										id : 'advTitle',
+										setup : setupAdvParams,
+										commit : commitAdvParams
+
+									},
+									{
+										type : 'text',
+										label : editor.lang.link.advisoryContentType,
+										'default' : '',
+										id : 'advContentType',
+										setup : setupAdvParams,
+										commit : commitAdvParams
+
+									}
+								]
+							},
+							{
+								type : 'hbox',
+								widths : [ '45%', '55%' ],
+								children :
+								[
+									{
+										type : 'text',
+										label : editor.lang.link.cssClasses,
+										'default' : '',
+										id : 'advCSSClasses',
+										setup : setupAdvParams,
+										commit : commitAdvParams
+
+									},
+									{
+										type : 'text',
+										label : editor.lang.link.charset,
+										'default' : '',
+										id : 'advCharset',
+										setup : setupAdvParams,
+										commit : commitAdvParams
+
+									}
+								]
+							},
+							{
+								type : 'hbox',
+								children :
+								[
+									{
+										type : 'text',
+										label : editor.lang.link.styles,
+										'default' : '',
+										id : 'advStyles',
+										setup : setupAdvParams,
+										commit : commitAdvParams
+
+									}
+								]
+							}
+						]
+					}
+				]
+			}
+		],
+		onShow : function()
+		{
+			this.fakeObj = false;
+
+			var editor = this.getParentEditor(),
+				selection = editor.getSelection(),
+				ranges = selection.getRanges(),
+				element = null,
+				me = this;
+			// Fill in all the relevant fields if there's already one link selected.
+			if ( ranges.length == 1 )
+			{
+
+				var rangeRoot = ranges[0].getCommonAncestor( true );
+				element = rangeRoot.getAscendant( 'a', true );
+				if ( element && element.getAttribute( 'href' ) )
+				{
+					selection.selectElement( element );
+				}
+				else if ( ( element = rangeRoot.getAscendant( 'img', true ) ) &&
+						 element.getAttribute( '_cke_real_element_type' ) &&
+						 element.getAttribute( '_cke_real_element_type' ) == 'anchor' )
+				{
+					this.fakeObj = element;
+					element = editor.restoreRealElement( this.fakeObj );
+					selection.selectElement( this.fakeObj );
+				}
+				else
+					element = null;
+			}
+
+			this.setupContent( parseLink.apply( this, [ editor, element ] ) );
+		},
+		onOk : function()
+		{
+			var attributes = { href : 'javascript:void(0)/*' + CKEDITOR.tools.getNextNumber() + '*/' },
+				removeAttributes = [],
+				data = { href : attributes.href },
+				me = this, editor = this.getParentEditor();
+
+			this.commitContent( data );
+
+			// Compose the URL.
+			switch ( data.type || 'url' )
+			{
+				case 'url':
+					var protocol = ( data.url && data.url.protocol != undefined ) ? data.url.protocol : 'http://',
+						url = ( data.url && data.url.url ) || '';
+					attributes._cke_saved_href = ( url.indexOf( '/' ) === 0 ) ? url : protocol + url;
+					break;
+				case 'anchor':
+					var name = ( data.anchor && data.anchor.name ),
+						id = ( data.anchor && data.anchor.id );
+					attributes._cke_saved_href = '#' + ( name || id || '' );
+					break;
+				case 'email':
+					var address = ( data.email && data.email.address ),
+						subject = ( data.email && encodeURIComponent( data.email.subject || '' ) ),
+						body = ( data.email && encodeURIComponent( data.email.body || '' ) ),
+						linkList = [ 'mailto:', address ];
+					if ( subject || body )
+					{
+						var argList = [];
+						linkList.push( '?' );
+						subject && argList.push( 'subject=' + subject );
+						body && argList.push( 'body=' + body );
+						linkList.push( argList.join( '&' ) );
+					}
+					attributes._cke_saved_href = linkList.join( '' );
+					break;
+				default:
+			}
+
+			// Popups and target.
+			if ( data.target )
+			{
+				if ( data.target.type == 'popup' )
+				{
+					var onclickList = [ 'window.open(this.href, \'',
+							data.target.name || '', '\', \'' ];
+					var featureList = [ 'resizable', 'status', 'location', 'toolbar', 'menubar', 'fullscreen',
+							'scrollbars', 'dependent' ];
+					var featureLength = featureList.length;
+					var addFeature = function( featureName )
+					{
+						if ( data.target[ featureName ] )
+							featureList.push( featureName + '=' + data.target[ featureName ] );
+					};
+
+					for ( var i = 0 ; i < featureLength ; i++ )
+						featureList[i] = featureList[i] + ( data.target[ featureList[i] ] ? '=yes' : '=no' ) ;
+					addFeature( 'width' );
+					addFeature( 'left' );
+					addFeature( 'height' );
+					addFeature( 'top' );
+
+					onclickList.push( featureList.join( ',' ), '\'); return false;' );
+					attributes[ CKEDITOR.env.ie || CKEDITOR.env.webkit ? '_cke_pa_onclick' : 'onclick' ] = onclickList.join( '' );
+				}
+				else
+				{
+					if ( data.target.type != 'notSet' && data.target.name )
+						attributes.target = data.target.name;
+					removeAttributes.push( '_cke_pa_onclick', 'onclick' );
+				}
+			}
+
+			// Advanced attributes.
+			if ( data.adv )
+			{
+				var advAttr = function( inputName, attrName )
+				{
+					var value = data.adv[ inputName ];
+					if ( value )
+						attributes[attrName] = value;
+					else
+						removeAttributes.push( attrName );
+				};
+
+				if ( this._.selectedElement )
+					advAttr( 'advId', 'id' );
+				advAttr( 'advLangDir', 'dir' );
+				advAttr( 'advAccessKey', 'accessKey' );
+				advAttr( 'advName', 'name' );
+				advAttr( 'advLangCode', 'lang' );
+				advAttr( 'advTabIndex', 'tabindex' );
+				advAttr( 'advTitle', 'title' );
+				advAttr( 'advContentType', 'type' );
+				advAttr( 'advCSSClasses', 'class' );
+				advAttr( 'advCharset', 'charset' );
+				advAttr( 'advStyles', 'style' );
+			}
+
+			if ( !this._.selectedElement )
+			{
+				// Create element if current selection is collapsed.
+				var selection = editor.getSelection(),
+					ranges = selection.getRanges();
+				if ( ranges.length == 1 && ranges[0].collapsed )
+				{
+					var text = new CKEDITOR.dom.text( attributes._cke_saved_href, editor.document );
+					ranges[0].insertNode( text );
+					ranges[0].selectNodeContents( text );
+					selection.selectRanges( ranges );
+				}
+
+				// Apply style.
+				var style = new CKEDITOR.style( { element : 'a', attributes : attributes } );
+				style.type = CKEDITOR.STYLE_INLINE;		// need to override... dunno why.
+				style.apply( editor.document );
+
+				// Id. Apply only to the first link.
+				if ( data.adv && data.adv.advId )
+				{
+					var links = this.getParentEditor().document.$.getElementsByTagName( 'a' );
+					for ( i = 0 ; i < links.length ; i++ )
+					{
+						if ( links[i].href == attributes.href )
+						{
+							links[i].id = data.adv.advId;
+							break;
+						}
+					}
+				}
+			}
+			else
+			{
+				// We're only editing an existing link, so just overwrite the attributes.
+				var element = this._.selectedElement;
+
+				// IE BUG: Setting the name attribute to an existing link doesn't work.
+				// Must re-create the link from weired syntax to workaround.
+				if ( CKEDITOR.env.ie && attributes.name != element.getAttribute( 'name' ) )
+				{
+					var newElement = new CKEDITOR.dom.element( '<a name="' + CKEDITOR.tools.htmlEncode( attributes.name ) + '">',
+							editor.document );
+
+					selection = editor.getSelection();
+
+					element.moveChildren( newElement );
+					element.copyAttributes( newElement, { name : 1 } );
+					newElement.replace( element );
+					element = newElement;
+
+					selection.selectElement( element );
+				}
+
+				element.setAttributes( attributes );
+				element.removeAttributes( removeAttributes );
+
+				// Make the element display as an anchor if a name has been set.
+				if ( element.getAttribute( 'name' ) )
+					element.addClass( 'cke_anchor' );
+				else
+					element.removeClass( 'cke_anchor' );
+
+				if ( this.fakeObj )
+					editor.createFakeElement( element, 'cke_anchor', 'anchor' ).replace( this.fakeObj );
+
+				delete this._.selectedElement;
+			}
+		},
+		onLoad : function()
+		{
+			if ( !editor.config.linkShowAdvancedTab )
+				this.hidePage( 'advanced' );		//Hide Advanded tab.
+
+			if ( !editor.config.linkShowTargetTab )
+				this.hidePage( 'target' );		//Hide Target tab.
+
+		}
+	};
+} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/link/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/link/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/link/plugin.js	(revision 2000)
@@ -0,0 +1,188 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'link',
+{
+	init : function( editor )
+	{
+		// Add the link and unlink buttons.
+		editor.addCommand( 'link', new CKEDITOR.dialogCommand( 'link' ) );
+		editor.addCommand( 'anchor', new CKEDITOR.dialogCommand( 'anchor' ) );
+		editor.addCommand( 'unlink', new CKEDITOR.unlinkCommand() );
+		editor.ui.addButton( 'Link',
+			{
+				label : editor.lang.link.toolbar,
+				command : 'link'
+			} );
+		editor.ui.addButton( 'Unlink',
+			{
+				label : editor.lang.unlink,
+				command : 'unlink'
+			} );
+		editor.ui.addButton( 'Anchor',
+			{
+				label : editor.lang.anchor.toolbar,
+				command : 'anchor'
+			} );
+		CKEDITOR.dialog.add( 'link', this.path + 'dialogs/link.js' );
+		CKEDITOR.dialog.add( 'anchor', this.path + 'dialogs/anchor.js' );
+
+		// Add the CSS styles for anchor placeholders.
+		editor.addCss(
+			'img.cke_anchor' +
+			'{' +
+				'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/anchor.gif' ) + ');' +
+				'background-position: center center;' +
+				'background-repeat: no-repeat;' +
+				'border: 1px solid #a9a9a9;' +
+				'width: 18px;' +
+				'height: 18px;' +
+			'}\n' +
+			'a.cke_anchor' +
+			'{' +
+				'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/anchor.gif' ) + ');' +
+				'background-position: 0 center;' +
+				'background-repeat: no-repeat;' +
+				'border: 1px solid #a9a9a9;' +
+				'padding-left: 18px;' +
+			'}'
+		   	);
+
+		// Register selection change handler for the unlink button.
+		 editor.on( 'selectionChange', function( evt )
+			{
+				/*
+				 * Despite our initial hope, document.queryCommandEnabled() does not work
+				 * for this in Firefox. So we must detect the state by element paths.
+				 */
+				var command = editor.getCommand( 'unlink' ),
+					element = evt.data.path.lastElement.getAscendant( 'a', true );
+				if ( element && element.getName() == 'a' && element.getAttribute( 'href' ) )
+					command.setState( CKEDITOR.TRISTATE_OFF );
+				else
+					command.setState( CKEDITOR.TRISTATE_DISABLED );
+			} );
+
+		// If the "menu" plugin is loaded, register the menu items.
+		if ( editor.addMenuItems )
+		{
+			editor.addMenuItems(
+				{
+					anchor :
+					{
+						label : editor.lang.anchor.menu,
+						command : 'anchor',
+						group : 'anchor'
+					},
+
+					link :
+					{
+						label : editor.lang.link.menu,
+						command : 'link',
+						group : 'link',
+						order : 1
+					},
+
+					unlink :
+					{
+						label : editor.lang.unlink,
+						command : 'unlink',
+						group : 'link',
+						order : 5
+					}
+				});
+		}
+
+		// If the "contextmenu" plugin is loaded, register the listeners.
+		if ( editor.contextMenu )
+		{
+			editor.contextMenu.addListener( function( element, selection )
+				{
+					if ( !element )
+						return null;
+
+					var isAnchor = ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' );
+
+					if ( !isAnchor )
+					{
+						if ( !( element = element.getAscendant( 'a', true ) ) )
+							return null;
+
+						isAnchor = ( element.getAttribute( 'name' ) && !element.getAttribute( 'href' ) );
+					}
+
+					return isAnchor ?
+							{ anchor : CKEDITOR.TRISTATE_OFF } :
+							{ link : CKEDITOR.TRISTATE_OFF, unlink : CKEDITOR.TRISTATE_OFF };
+				});
+		}
+	},
+
+	afterInit : function( editor )
+	{
+		// Register a filter to displaying placeholders after mode change.
+
+		var dataProcessor = editor.dataProcessor,
+			dataFilter = dataProcessor && dataProcessor.dataFilter;
+
+		if ( dataFilter )
+		{
+			dataFilter.addRules(
+				{
+					elements :
+					{
+						a : function( element )
+						{
+							var attributes = element.attributes;
+							if ( attributes.name && !attributes.href )
+								return editor.createFakeParserElement( element, 'cke_anchor', 'anchor' );
+						}
+					}
+				});
+		}
+	},
+
+	requires : [ 'fakeobjects' ]
+} );
+
+CKEDITOR.unlinkCommand = function(){};
+CKEDITOR.unlinkCommand.prototype =
+{
+	/** @ignore */
+	exec : function( editor )
+	{
+		/*
+		 * execCommand( 'unlink', ... ) in Firefox leaves behind <span> tags at where
+		 * the <a> was, so again we have to remove the link ourselves. (See #430)
+		 *
+		 * TODO: Use the style system when it's complete. Let's use execCommand()
+		 * as a stopgap solution for now.
+		 */
+		var selection = editor.getSelection(),
+			bookmarks = selection.createBookmarks(),
+			ranges = selection.getRanges(),
+			rangeRoot,
+			element;
+
+		for ( var i = 0 ; i < ranges.length ; i++ )
+		{
+			rangeRoot = ranges[i].getCommonAncestor( true );
+			element = rangeRoot.getAscendant( 'a', true );
+			if ( !element )
+				continue;
+			ranges[i].selectNodeContents( element );
+		}
+
+		selection.selectRanges( ranges );
+		editor.document.$.execCommand( 'unlink', false, null );
+		selection.selectBookmarks( bookmarks );
+	}
+};
+
+CKEDITOR.tools.extend( CKEDITOR.config,
+{
+	linkShowAdvancedTab : true,
+	linkShowTargetTab : true
+} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/dialog/dialogDefinition.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/dialog/dialogDefinition.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/dialog/dialogDefinition.js	(revision 2000)
@@ -0,0 +1,315 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the "virtual" dialog, dialog content and dialog button
+ * definition classes.
+ */
+
+/**
+ * This class is not really part of the API. It just illustrates the properties
+ * that developers can use to define and create dialogs.
+ * @name CKEDITOR.dialog.dialogDefinition
+ * @constructor
+ * @example
+ * // There is no constructor for this class, the user just has to define an
+ * // object with the appropriate properties.
+ *
+ * CKEDITOR.dialog.add( 'testOnly', function( editor )
+ *       {
+ *           return {
+ *               title : 'Test Dialog',
+ *               resizable : CKEDITOR.DIALOG_RESIZE_BOTH,
+ *               minWidth : 500,
+ *               minHeight : 400,
+ *               contents : [
+ *                   {
+ *                       id : 'tab1',
+ *                       label : 'First Tab',
+ *                       title : 'First Tab Title',
+ *                       accessKey : 'Q',
+ *                       elements : [
+ *                           {
+ *                               type : 'text',
+ *                               label : 'Test Text 1',
+ *                               id : 'testText1',
+ *                               'default' : 'hello world!'
+ *                           }
+ *                       ]
+ *                    }
+ *               ]
+ *           };
+ *       });
+ */
+
+/**
+ * The dialog title, displayed in the dialog's header. Required.
+ * @name CKEDITOR.dialog.dialogDefinition.prototype.title
+ * @field
+ * @type String
+ * @example
+ */
+
+/**
+ * How the dialog can be resized, must be one of the four contents defined below.
+ * <br /><br />
+ * <strong>CKEDITOR.DIALOG_RESIZE_NONE</strong><br />
+ * <strong>CKEDITOR.DIALOG_RESIZE_WIDTH</strong><br />
+ * <strong>CKEDITOR.DIALOG_RESIZE_HEIGHT</strong><br />
+ * <strong>CKEDITOR.DIALOG_RESIZE_BOTH</strong><br />
+ * @name CKEDITOR.dialog.dialogDefinition.prototype.resizable
+ * @field
+ * @type Number
+ * @default CKEDITOR.DIALOG_RESIZE_NONE
+ * @example
+ */
+
+/**
+ * The minimum width of the dialog, in pixels.
+ * @name CKEDITOR.dialog.dialogDefinition.prototype.minWidth
+ * @field
+ * @type Number
+ * @default 600
+ * @example
+ */
+
+/**
+ * The minimum height of the dialog, in pixels.
+ * @name CKEDITOR.dialog.dialogDefinition.prototype.minHeight
+ * @field
+ * @type Number
+ * @default 400
+ * @example
+ */
+
+/**
+ * The buttons in the dialog, defined as an array of
+ * {@link CKEDITOR.dialog.buttonDefinition} objects.
+ * @name CKEDITOR.dialog.dialogDefinition.prototype.buttons
+ * @field
+ * @type Array
+ * @default [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ]
+ * @example
+ */
+
+/**
+ * The contents in the dialog, defined as an array of
+ * {@link CKEDITOR.dialog.contentDefinition} objects. Required.
+ * @name CKEDITOR.dialog.dialogDefinition.prototype.contents
+ * @field
+ * @type Array
+ * @example
+ */
+
+/**
+ * The function to execute when OK is pressed.
+ * @name CKEDITOR.dialog.dialogDefinition.prototype.onOk
+ * @field
+ * @type Function
+ * @example
+ */
+
+/**
+ * The function to execute when Cancel is pressed.
+ * @name CKEDITOR.dialog.dialogDefinition.prototype.onCancel
+ * @field
+ * @type Function
+ * @example
+ */
+
+/**
+ * The function to execute when the dialog is displayed for the first time.
+ * @name CKEDITOR.dialog.dialogDefinition.prototype.onLoad
+ * @field
+ * @type Function
+ * @example
+ */
+
+/**
+ * This class is not really part of the API. It just illustrates the properties
+ * that developers can use to define and create dialog content pages.
+ * @name CKEDITOR.dialog.contentDefinition
+ * @constructor
+ * @example
+ * // There is no constructor for this class, the user just has to define an
+ * // object with the appropriate properties.
+ */
+
+/**
+ * The id of the content page.
+ * @name CKEDITOR.dialog.contentDefinition.prototype.id
+ * @field
+ * @type String
+ * @example
+ */
+
+/**
+ * The tab label of the content page.
+ * @name CKEDITOR.dialog.contentDefinition.prototype.label
+ * @field
+ * @type String
+ * @example
+ */
+
+/**
+ * The popup message of the tab label.
+ * @name CKEDITOR.dialog.contentDefinition.prototype.title
+ * @field
+ * @type String
+ * @example
+ */
+
+/**
+ * The CTRL hotkey for switching to the tab.
+ * @name CKEDITOR.dialog.contentDefinition.prototype.accessKey
+ * @field
+ * @type String
+ * @example
+ * contentDefinition.accessKey = 'Q';	// Switch to this page when CTRL-Q is pressed.
+ */
+
+/**
+ * The UI elements contained in this content page, defined as an array of
+ * {@link CKEDITOR.dialog.uiElementDefinition} objects.
+ * @name CKEDITOR.dialog.contentDefinition.prototype.elements
+ * @field
+ * @type Array
+ * @example
+ */
+
+/**
+ * This class is not really part of the API. It just illustrates the properties
+ * that developers can use to define and create dialog buttons.
+ * @name CKEDITOR.dialog.buttonDefinition
+ * @constructor
+ * @example
+ * // There is no constructor for this class, the user just has to define an
+ * // object with the appropriate properties.
+ */
+
+/**
+ * The id of the dialog button. Required.
+ * @name CKEDITOR.dialog.buttonDefinition.prototype.id
+ * @type String
+ * @field
+ * @example
+ */
+
+/**
+ * The label of the dialog button. Required.
+ * @name CKEDITOR.dialog.buttonDefinition.prototype.label
+ * @type String
+ * @field
+ * @example
+ */
+
+/**
+ * The popup message of the dialog button.
+ * @name CKEDITOR.dialog.buttonDefinition.prototype.title
+ * @type String
+ * @field
+ * @example
+ */
+
+/**
+ * The CTRL hotkey for the button.
+ * @name CKEDITOR.dialog.buttonDefinition.prototype.accessKey
+ * @type String
+ * @field
+ * @example
+ * exitButton.accessKey = 'X';		// Button will be pressed when user presses CTRL-X
+ */
+
+/**
+ * Whether the button is disabled.
+ * @name CKEDITOR.dialog.buttonDefinition.prototype.disabled
+ * @type Boolean
+ * @field
+ * @default false
+ * @example
+ */
+
+/**
+ * The function to execute when the button is clicked.
+ * @name CKEDITOR.dialog.buttonDefinition.prototype.onClick
+ * @type Function
+ * @field
+ * @example
+ */
+
+/**
+ * This class is not really part of the API. It just illustrates the properties
+ * that developers can use to define and create dialog UI elements.
+ * @name CKEDITOR.dialog.uiElementDefinition
+ * @constructor
+ * @see CKEDITOR.ui.dialog.uiElement
+ * @example
+ * // There is no constructor for this class, the user just has to define an
+ * // object with the appropriate properties.
+ */
+
+/**
+ * The id of the UI element.
+ * @name CKEDITOR.dialog.uiElementDefinition.prototype.id
+ * @field
+ * @type String
+ * @example
+ */
+
+/**
+ * The type of the UI element. Required.
+ * @name CKEDITOR.dialog.uiElementDefinition.prototype.type
+ * @field
+ * @type String
+ * @example
+ */
+
+/**
+ * The popup label of the UI element.
+ * @name CKEDITOR.dialog.uiElementDefinition.prototype.title
+ * @field
+ * @type String
+ * @example
+ */
+
+/**
+ * CSS class names to append to the UI element.
+ * @name CKEDITOR.dialog.uiElementDefinition.prototype.className
+ * @field
+ * @type String
+ * @example
+ */
+
+/**
+ * Inline CSS classes to append to the UI element.
+ * @name CKEDITOR.dialog.uiElementDefinition.prototype.style
+ * @field
+ * @type String
+ * @example
+ */
+
+/**
+ * Function to execute the first time the UI element is displayed.
+ * @name CKEDITOR.dialog.uiElementDefinition.prototype.onLoad
+ * @field
+ * @type Function
+ * @example
+ */
+
+/**
+ * Function to execute whenever the UI element's parent dialog is displayed.
+ * @name CKEDITOR.dialog.uiElementDefinition.prototype.onShow
+ * @field
+ * @type Function
+ * @example
+ */
+
+/**
+ * Function to execute whenever the UI element's parent dialog is closed.
+ * @name CKEDITOR.dialog.uiElementDefinition.prototype.onHide
+ * @field
+ * @type Function
+ * @example
+ */
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/dialog/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/dialog/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/dialog/plugin.js	(revision 2000)
@@ -0,0 +1,2769 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview The floating dialog plugin.
+ */
+
+CKEDITOR.plugins.add( 'dialog',
+	{
+		requires : [ 'dialogui' ]
+	});
+
+/**
+ * No resize for this dialog.
+ * @constant
+ */
+CKEDITOR.DIALOG_RESIZE_NONE = 0;
+
+/**
+ * Only allow horizontal resizing for this dialog, disable vertical resizing.
+ * @constant
+ */
+CKEDITOR.DIALOG_RESIZE_WIDTH = 1;
+
+/**
+ * Only allow vertical resizing for this dialog, disable horizontal resizing.
+ * @constant
+ */
+CKEDITOR.DIALOG_RESIZE_HEIGHT = 2;
+
+/*
+ * Allow the dialog to be resized in both directions.
+ * @constant
+ */
+CKEDITOR.DIALOG_RESIZE_BOTH = 3;
+
+(function()
+{
+	function isTabVisible( tabId )
+	{
+		return !!this._.tabs[ tabId ][ 0 ].$.offsetHeight;
+	}
+
+	function getPreviousVisibleTab()
+	{
+		var tabId = this._.currentTabId,
+			length = this._.tabIdList.length,
+			tabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, tabId ) + length;
+
+		for ( var i = tabIndex - 1 ; i > tabIndex - length ; i-- )
+		{
+			if ( isTabVisible.call( this, this._.tabIdList[ i % length ] ) )
+				return this._.tabIdList[ i % length ];
+		}
+
+		return null;
+	}
+
+	function getNextVisibleTab()
+	{
+		var tabId = this._.currentTabId,
+			length = this._.tabIdList.length,
+			tabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, tabId );
+
+		for ( var i = tabIndex + 1 ; i < tabIndex + length ; i++ )
+		{
+			if ( isTabVisible.call( this, this._.tabIdList[ i % length ] ) )
+				return this._.tabIdList[ i % length ];
+		}
+
+		return null;
+	}
+
+	// Stores dialog related data from skin definitions. e.g. margin sizes.
+	var skinData = {};
+
+	/**
+	 * This is the base class for runtime dialog objects. An instance of this
+	 * class represents a single named dialog for a single editor instance.
+	 * @param {Object} editor The editor which created the dialog.
+	 * @param {String} dialogName The dialog's registered name.
+	 * @constructor
+	 * @example
+	 * var dialogObj = new CKEDITOR.dialog( editor, 'smiley' );
+	 */
+	CKEDITOR.dialog = function( editor, dialogName )
+	{
+		// Load the dialog definition.
+		var definition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ];
+		if ( !definition )
+		{
+			console.log( 'Error: The dialog "' + dialogName + '" is not defined.' );
+			return;
+		}
+
+		// Completes the definition with the default values.
+		definition = CKEDITOR.tools.extend( definition( editor ), defaultDialogDefinition );
+
+		// Clone a functionally independent copy for this dialog.
+		definition = CKEDITOR.tools.clone( definition );
+
+		// Create a complex definition object, extending it with the API
+		// functions.
+		definition = new definitionObject( this, definition );
+
+		// Fire the "dialogDefinition" event, making it possible to customize
+		// the dialog definition.
+		this.definition = definition = CKEDITOR.fire( 'dialogDefinition',
+			{
+				name : dialogName,
+				definition : definition
+			}
+			, editor ).definition;
+
+		var doc = CKEDITOR.document;
+
+		var themeBuilt = editor.theme.buildDialog( editor );
+
+		// Initialize some basic parameters.
+		this._ =
+		{
+			editor : editor,
+			element : themeBuilt.element,
+			name : dialogName,
+			contentSize : { width : 0, height : 0 },
+			size : { width : 0, height : 0 },
+			updateSize : false,
+			contents : {},
+			buttons : {},
+			accessKeyMap : {},
+
+			// Initialize the tab and page map.
+			tabs : {},
+			tabIdList : [],
+			currentTabId : null,
+			currentTabIndex : null,
+			pageCount : 0,
+			lastTab : null,
+			tabBarMode : false,
+
+			// Initialize the tab order array for input widgets.
+			focusList : [],
+			currentFocusIndex : 0,
+			hasFocus : false
+		};
+
+		this.parts = themeBuilt.parts;
+
+		// Set the startup styles for the dialog, avoiding it enlarging the
+		// page size on the dialog creation.
+		this.parts.dialog.setStyles(
+			{
+				position : CKEDITOR.env.ie6Compat ? 'absolute' : 'fixed',
+				top : 0,
+				left: 0,
+				visibility : 'hidden'
+			});
+
+		// Call the CKEDITOR.event constructor to initialize this instance.
+		CKEDITOR.event.call( this );
+
+		// Initialize load, show, hide, ok and cancel events.
+		if ( definition.onLoad )
+			this.on( 'load', definition.onLoad );
+
+		if ( definition.onShow )
+			this.on( 'show', definition.onShow );
+
+		if ( definition.onHide )
+			this.on( 'hide', definition.onHide );
+
+		if ( definition.onOk )
+		{
+			this.on( 'ok', function( evt )
+				{
+					if ( definition.onOk.call( this, evt ) === false )
+						evt.data.hide = false;
+				});
+		}
+
+		if ( definition.onCancel )
+		{
+			this.on( 'cancel', function( evt )
+				{
+					if ( definition.onCancel.call( this, evt ) === false )
+						evt.data.hide = false;
+				});
+		}
+
+		var me = this;
+
+		// Iterates over all items inside all content in the dialog, calling a
+		// function for each of them.
+		var iterContents = function( func )
+		{
+			var contents = me._.contents,
+				stop = false;
+
+			for ( var i in contents )
+			{
+				for ( var j in contents[i] )
+				{
+					stop = func.call( this, contents[i][j] );
+					if ( stop )
+						return;
+				}
+			}
+		};
+
+		this.on( 'ok', function( evt )
+			{
+				iterContents( function( item )
+					{
+						if ( item.validate )
+						{
+							var isValid = item.validate( this );
+
+							if ( typeof isValid == 'string' )
+							{
+								alert( isValid );
+								isValid = false;
+							}
+
+							if ( isValid === false )
+							{
+								if ( item.select )
+									item.select();
+								else
+									item.focus();
+
+								evt.data.hide = false;
+								evt.stop();
+								return true;
+							}
+						}
+					});
+			}, this, null, 0 );
+
+		this.on( 'cancel', function( evt )
+			{
+				iterContents( function( item )
+					{
+						if ( item.isChanged() )
+						{
+							if ( !confirm( editor.lang.common.confirmCancel ) )
+								evt.data.hide = false;
+							return true;
+						}
+					});
+			}, this, null, 0 );
+
+		this.parts.close.on( 'click', function( evt )
+				{
+					if ( this.fire( 'cancel', { hide : true } ).hide !== false )
+						this.hide();
+				}, this );
+
+		function changeFocus( forward )
+		{
+			var focusList = me._.focusList,
+				offset = forward ? 1 : -1;
+			if ( focusList.length < 1 )
+				return;
+
+			var currentIndex = ( me._.currentFocusIndex + offset + focusList.length ) % focusList.length;
+			while ( !focusList[ currentIndex ].isFocusable() )
+			{
+				currentIndex = ( currentIndex + offset + focusList.length ) % focusList.length;
+				if ( currentIndex == me._.currentFocusIndex )
+					break;
+			}
+			focusList[ currentIndex ].focus();
+
+			// Select whole field content.
+			if ( focusList[ currentIndex ].type == 'text' )
+				focusList[ currentIndex ].select();
+		}
+
+		function focusKeydownHandler( evt )
+		{
+			// If I'm not the top dialog, ignore.
+			if ( me != CKEDITOR.dialog._.currentTop )
+				return;
+
+			var keystroke = evt.data.getKeystroke(),
+				processed = false;
+			if ( keystroke == 9 || keystroke == CKEDITOR.SHIFT + 9 )
+			{
+				var shiftPressed = ( keystroke == CKEDITOR.SHIFT + 9 );
+
+				// Handling Tab and Shift-Tab.
+				if ( me._.tabBarMode )
+				{
+					// Change tabs.
+					var nextId = shiftPressed ? getPreviousVisibleTab.call( me ) : getNextVisibleTab.call( me );
+					me.selectPage( nextId );
+					me._.tabs[ nextId ][ 0 ].focus();
+				}
+				else
+				{
+					// Change the focus of inputs.
+					changeFocus( !shiftPressed );
+				}
+
+				processed = true;
+			}
+			else if ( keystroke == CKEDITOR.ALT + 121 && !me._.tabBarMode )
+			{
+				// Alt-F10 puts focus into the current tab item in the tab bar.
+				me._.tabBarMode = true;
+				me._.tabs[ me._.currentTabId ][ 0 ].focus();
+				processed = true;
+			}
+			else if ( ( keystroke == 37 || keystroke == 39 ) && me._.tabBarMode )
+			{
+				// Arrow keys - used for changing tabs.
+				nextId = ( keystroke == 37 ? getPreviousVisibleTab.call( me ) : getNextVisibleTab.call( me ) );
+				me.selectPage( nextId );
+				me._.tabs[ nextId ][ 0 ].focus();
+				processed = true;
+			}
+
+			if ( processed )
+			{
+				evt.stop();
+				evt.data.preventDefault();
+			}
+		}
+
+		// Add the dialog keyboard handlers.
+		this.on( 'show', function()
+			{
+				CKEDITOR.document.on( 'keydown', focusKeydownHandler, this, null, 0 );
+
+				if ( CKEDITOR.env.ie6Compat )
+				{
+					var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
+					coverDoc.on( 'keydown', focusKeydownHandler, this, null, 0 );
+				}
+			} );
+		this.on( 'hide', function()
+			{
+				CKEDITOR.document.removeListener( 'keydown', focusKeydownHandler );
+			} );
+		this.on( 'iframeAdded', function( evt )
+			{
+				var doc = new CKEDITOR.dom.document( evt.data.iframe.$.contentWindow.document );
+				doc.on( 'keydown', focusKeydownHandler, this, null, 0 );
+			} );
+
+		// Auto-focus logic in dialog.
+		this.on( 'show', function()
+			{
+				if ( !this._.hasFocus )
+				{
+					this._.currentFocusIndex = -1;
+					changeFocus( true );
+
+					/*
+					 * IE BUG: If the initial focus went into a non-text element (e.g. button),
+					 * then IE would still leave the caret inside the editing area.
+					 */
+					if ( this._.editor.mode == 'wysiwyg' && CKEDITOR.env.ie )
+					{
+						var $selection = editor.document.$.selection,
+							$range = $selection.createRange();
+
+						if ( $range )
+						{
+							if ( $range.parentElement && $range.parentElement().ownerDocument == editor.document.$
+							  || $range.item && $range.item( 0 ).ownerDocument == editor.document.$ )
+							{
+								var $myRange = document.body.createTextRange();
+								$myRange.moveToElementText( this.getElement().getFirst().$ );
+								$myRange.collapse( true );
+								$myRange.select();
+							}
+						}
+					}
+				}
+			}, this, null, 0xffffffff );
+
+		// IE6 BUG: Text fields and text areas are only half-rendered the first time the dialog appears in IE6 (#2661).
+		// This is still needed after [2708] and [2709] because text fields in hidden TR tags are still broken.
+		if ( CKEDITOR.env.ie6Compat )
+		{
+			this.on( 'load', function( evt )
+					{
+						var outer = this.getElement(),
+							inner = outer.getFirst();
+						inner.remove();
+						inner.appendTo( outer );
+					}, this );
+		}
+
+		initDragAndDrop( this );
+		initResizeHandles( this );
+
+		// Insert the title.
+		( new CKEDITOR.dom.text( definition.title, CKEDITOR.document ) ).appendTo( this.parts.title );
+
+		// Insert the tabs and contents.
+		for ( var i = 0 ; i < definition.contents.length ; i++ )
+			this.addPage( definition.contents[i] );
+
+		var tabRegex = /cke_dialog_tab(\s|$|_)/,
+			tabOuterRegex = /cke_dialog_tab(\s|$)/;
+		this.parts['tabs'].on( 'click', function( evt )
+				{
+					var target = evt.data.getTarget(), firstNode = target, id, page;
+
+					// If we aren't inside a tab, bail out.
+					if ( !( tabRegex.test( target.$.className ) || target.getName() == 'a' ) )
+						return;
+
+					// Find the outer <td> container of the tab.
+					id = target.$.id.substr( 0, target.$.id.lastIndexOf( '_' ) );
+					this.selectPage( id );
+
+					if ( this._.tabBarMode )
+					{
+						this._.tabBarMode = false;
+						this._.currentFocusIndex = -1;
+						changeFocus( true );
+					}
+
+					evt.data.preventDefault();
+				}, this );
+
+		// Insert buttons.
+		var buttonsHtml = [],
+			buttons = CKEDITOR.dialog._.uiElementBuilders.hbox.build( this,
+				{
+					type : 'hbox',
+					className : 'cke_dialog_footer_buttons',
+					widths : [],
+					children : definition.buttons
+				}, buttonsHtml ).getChild();
+		this.parts.footer.setHtml( buttonsHtml.join( '' ) );
+
+		for ( i = 0 ; i < buttons.length ; i++ )
+			this._.buttons[ buttons[i].id ] = buttons[i];
+
+		CKEDITOR.skins.load( editor, 'dialog' );
+	};
+
+	// Focusable interface. Use it via dialog.addFocusable.
+	function Focusable( dialog, element, index ) {
+		this.element = element;
+		this.focusIndex = index;
+		this.isFocusable = function()
+		{
+			return true;
+		};
+		this.focus = function()
+		{
+			dialog._.currentFocusIndex = this.focusIndex;
+			this.element.focus();
+		};
+		// Bind events
+		element.on( 'keydown', function( e )
+			{
+				if ( e.data.getKeystroke() in { 32:1, 13:1 }  )
+					this.fire( 'click' );
+			} );
+		element.on( 'focus', function()
+			{
+				this.fire( 'mouseover' );
+			} );
+		element.on( 'blur', function()
+			{
+				this.fire( 'mouseout' );
+			} );
+	}
+
+	CKEDITOR.dialog.prototype =
+	{
+		/**
+		 * Resizes the dialog.
+		 * @param {Number} width The width of the dialog in pixels.
+		 * @param {Number} height The height of the dialog in pixels.
+		 * @function
+		 * @example
+		 * dialogObj.resize( 800, 640 );
+		 */
+		resize : (function()
+		{
+			return function( width, height )
+			{
+				if ( this._.contentSize && this._.contentSize.width == width && this._.contentSize.height == height )
+					return;
+
+				CKEDITOR.dialog.fire( 'resize',
+					{
+						dialog : this,
+						skin : this._.editor.skinName,
+						width : width,
+						height : height
+					}, this._.editor );
+
+				this._.contentSize = { width : width, height : height };
+				this._.updateSize = true;
+			};
+		})(),
+
+		/**
+		 * Gets the current size of the dialog in pixels.
+		 * @returns {Object} An object with "width" and "height" properties.
+		 * @example
+		 * var width = dialogObj.getSize().width;
+		 */
+		getSize : function()
+		{
+			if ( !this._.updateSize )
+				return this._.size;
+			var element = this._.element.getFirst();
+			var size = this._.size = { width : element.$.offsetWidth || 0, height : element.$.offsetHeight || 0};
+
+			// If either the offsetWidth or offsetHeight is 0, the element isn't visible.
+			this._.updateSize = !size.width || !size.height;
+
+			return size;
+		},
+
+		/**
+		 * Moves the dialog to an (x, y) coordinate relative to the window.
+		 * @function
+		 * @param {Number} x The target x-coordinate.
+		 * @param {Number} y The target y-coordinate.
+		 * @example
+		 * dialogObj.move( 10, 40 );
+		 */
+		move : (function()
+		{
+			var isFixed;
+			return function( x, y )
+			{
+				// The dialog may be fixed positioned or absolute positioned. Ask the
+				// browser what is the current situation first.
+				var element = this._.element.getFirst();
+				if ( isFixed === undefined )
+					isFixed = element.getComputedStyle( 'position' ) == 'fixed';
+
+				if ( isFixed && this._.position && this._.position.x == x && this._.position.y == y )
+					return;
+
+				// Save the current position.
+				this._.position = { x : x, y : y };
+
+				// If not fixed positioned, add scroll position to the coordinates.
+				if ( !isFixed )
+				{
+					var scrollPosition = CKEDITOR.document.getWindow().getScrollPosition();
+					x += scrollPosition.x;
+					y += scrollPosition.y;
+				}
+
+				element.setStyles(
+						{
+							'left'	: ( x > 0 ? x : 0 ) + 'px',
+							'top'	: ( y > 0 ? y : 0 ) + 'px'
+						});
+			};
+		})(),
+
+		/**
+		 * Gets the dialog's position in the window.
+		 * @returns {Object} An object with "x" and "y" properties.
+		 * @example
+		 * var dialogX = dialogObj.getPosition().x;
+		 */
+		getPosition : function(){ return CKEDITOR.tools.extend( {}, this._.position ); },
+
+		/**
+		 * Shows the dialog box.
+		 * @example
+		 * dialogObj.show();
+		 */
+		show : function()
+		{
+			if ( this._.editor.mode == 'wysiwyg' && CKEDITOR.env.ie )
+				this._.editor.getSelection().lock();
+
+			// Insert the dialog's element to the root document.
+			var element = this._.element;
+			var definition = this.definition;
+			if ( !( element.getParent() && element.getParent().equals( CKEDITOR.document.getBody() ) ) )
+				element.appendTo( CKEDITOR.document.getBody() );
+			else
+				return;
+
+			// FIREFOX BUG: Fix vanishing caret for Firefox 2 or Gecko 1.8.
+			if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 )
+			{
+				var dialogElement = this.parts.dialog;
+				dialogElement.setStyle( 'position', 'absolute' );
+				setTimeout( function()
+					{
+						dialogElement.setStyle( 'position', 'fixed' );
+					}, 0 );
+			}
+
+
+			// First, set the dialog to an appropriate size.
+			this.resize( definition.minWidth, definition.minHeight );
+
+			// Select the first tab by default.
+			this.selectPage( this.definition.contents[0].id );
+
+			// Reset all inputs back to their default value.
+			this.reset();
+
+			// Set z-index.
+			if ( CKEDITOR.dialog._.currentZIndex === null )
+				CKEDITOR.dialog._.currentZIndex = this._.editor.config.baseFloatZIndex;
+			this._.element.getFirst().setStyle( 'z-index', CKEDITOR.dialog._.currentZIndex += 10 );
+
+			// Maintain the dialog ordering and dialog cover.
+			// Also register key handlers if first dialog.
+			if ( CKEDITOR.dialog._.currentTop === null )
+			{
+				CKEDITOR.dialog._.currentTop = this;
+				this._.parentDialog = null;
+				addCover( this._.editor );
+
+				CKEDITOR.document.on( 'keydown', accessKeyDownHandler );
+				CKEDITOR.document.on( 'keyup', accessKeyUpHandler );
+
+				// Prevent some keys from bubbling up. (#4269)
+				for ( var event in { keyup :1, keydown :1, keypress :1 } )
+					CKEDITOR.document.on( event, preventKeyBubbling );
+			}
+			else
+			{
+				this._.parentDialog = CKEDITOR.dialog._.currentTop;
+				var parentElement = this._.parentDialog.getElement().getFirst();
+				parentElement.$.style.zIndex  -= Math.floor( this._.editor.config.baseFloatZIndex / 2 );
+				CKEDITOR.dialog._.currentTop = this;
+			}
+
+			// Register the Esc hotkeys.
+			registerAccessKey( this, this, '\x1b', null, function()
+					{
+						this.getButton( 'cancel' ) && this.getButton( 'cancel' ).click();
+					} );
+
+			// Reset the hasFocus state.
+			this._.hasFocus = false;
+
+			// Rearrange the dialog to the middle of the window.
+			CKEDITOR.tools.setTimeout( function()
+				{
+					var viewSize = CKEDITOR.document.getWindow().getViewPaneSize();
+					var dialogSize = this.getSize();
+
+					// We're using definition size for initial position because of
+					// offten corrupted data in offsetWidth at this point. (#4084)
+					this.move( ( viewSize.width - definition.minWidth ) / 2, ( viewSize.height - dialogSize.height ) / 2 );
+
+					this.parts.dialog.setStyle( 'visibility', '' );
+
+					// Execute onLoad for the first show.
+					this.fireOnce( 'load', {} );
+					this.fire( 'show', {} );
+
+					// Save the initial values of the dialog.
+					this.foreach( function( contentObj ) { contentObj.setInitValue && contentObj.setInitValue(); } );
+
+				},
+				100, this );
+		},
+
+		/**
+		 * Executes a function for each UI element.
+		 * @param {Function} fn Function to execute for each UI element.
+		 * @returns {CKEDITOR.dialog} The current dialog object.
+		 */
+		foreach : function( fn )
+		{
+			for ( var i in this._.contents )
+			{
+				for ( var j in this._.contents[i] )
+					fn( this._.contents[i][j]);
+			}
+			return this;
+		},
+
+		/**
+		 * Resets all input values in the dialog.
+		 * @example
+		 * dialogObj.reset();
+		 * @returns {CKEDITOR.dialog} The current dialog object.
+		 */
+		reset : (function()
+		{
+			var fn = function( widget ){ if ( widget.reset ) widget.reset(); };
+			return function(){ this.foreach( fn ); return this; };
+		})(),
+
+		setupContent : function()
+		{
+			var args = arguments;
+			this.foreach( function( widget )
+				{
+					if ( widget.setup )
+						widget.setup.apply( widget, args );
+				});
+		},
+
+		commitContent : function()
+		{
+			var args = arguments;
+			this.foreach( function( widget )
+				{
+					if ( widget.commit )
+						widget.commit.apply( widget, args );
+				});
+		},
+
+		/**
+		 * Hides the dialog box.
+		 * @example
+		 * dialogObj.hide();
+		 */
+		hide : function()
+		{
+			this.fire( 'hide', {} );
+
+			// Remove the dialog's element from the root document.
+			var element = this._.element;
+			if ( !element.getParent() )
+				return;
+
+			element.remove();
+			this.parts.dialog.setStyle( 'visibility', 'hidden' );
+
+			// Unregister all access keys associated with this dialog.
+			unregisterAccessKey( this );
+
+			// Maintain dialog ordering and remove cover if needed.
+			if ( !this._.parentDialog )
+				removeCover();
+			else
+			{
+				var parentElement = this._.parentDialog.getElement().getFirst();
+				parentElement.setStyle( 'z-index', parseInt( parentElement.$.style.zIndex, 10 ) + Math.floor( this._.editor.config.baseFloatZIndex / 2 ) );
+			}
+			CKEDITOR.dialog._.currentTop = this._.parentDialog;
+
+			// Deduct or clear the z-index.
+			if ( !this._.parentDialog )
+			{
+				CKEDITOR.dialog._.currentZIndex = null;
+
+				// Remove access key handlers.
+				CKEDITOR.document.removeListener( 'keydown', accessKeyDownHandler );
+				CKEDITOR.document.removeListener( 'keyup', accessKeyUpHandler );
+				CKEDITOR.document.removeListener( 'keypress', accessKeyUpHandler );
+
+				// Remove bubbling-prevention handler. (#4269)
+				for ( var event in { keyup :1, keydown :1, keypress :1 } )
+					CKEDITOR.document.removeListener( event, preventKeyBubbling );
+
+				var editor = this._.editor;
+				editor.focus();
+
+				if ( editor.mode == 'wysiwyg' && CKEDITOR.env.ie )
+					editor.getSelection().unlock( true );
+			}
+			else
+				CKEDITOR.dialog._.currentZIndex -= 10;
+
+
+			// Reset the initial values of the dialog.
+			this.foreach( function( contentObj ) { contentObj.resetInitValue && contentObj.resetInitValue(); } );
+		},
+
+		/**
+		 * Adds a tabbed page into the dialog.
+		 * @param {Object} contents Content definition.
+		 * @example
+		 */
+		addPage : function( contents )
+		{
+			var pageHtml = [],
+				titleHtml = contents.label ? ' title="' + CKEDITOR.tools.htmlEncode( contents.label ) + '"' : '',
+				elements = contents.elements,
+				vbox = CKEDITOR.dialog._.uiElementBuilders.vbox.build( this,
+						{
+							type : 'vbox',
+							className : 'cke_dialog_page_contents',
+							children : contents.elements,
+							expand : !!contents.expand,
+							padding : contents.padding,
+							style : contents.style || 'width: 100%; height: 100%;'
+						}, pageHtml );
+
+			// Create the HTML for the tab and the content block.
+			var page = CKEDITOR.dom.element.createFromHtml( pageHtml.join( '' ) );
+			var tab = CKEDITOR.dom.element.createFromHtml( [
+					'<a class="cke_dialog_tab"',
+						( this._.pageCount > 0 ? ' cke_last' : 'cke_first' ),
+						titleHtml,
+						( !!contents.hidden ? ' style="display:none"' : '' ),
+						' id="', contents.id + '_', CKEDITOR.tools.getNextNumber(), '"' +
+						' href="javascript:void(0)"',
+						' hidefocus="true">',
+							contents.label,
+					'</a>'
+				].join( '' ) );
+
+			// If only a single page exist, a different style is used in the central pane.
+			if ( this._.pageCount === 0 )
+				this.parts.dialog.addClass( 'cke_single_page' );
+			else
+				this.parts.dialog.removeClass( 'cke_single_page' );
+
+			// Take records for the tabs and elements created.
+			this._.tabs[ contents.id ] = [ tab, page ];
+			this._.tabIdList.push( contents.id );
+			this._.pageCount++;
+			this._.lastTab = tab;
+
+			var contentMap = this._.contents[ contents.id ] = {},
+				cursor,
+				children = vbox.getChild();
+
+			while ( ( cursor = children.shift() ) )
+			{
+				contentMap[ cursor.id ] = cursor;
+				if ( typeof( cursor.getChild ) == 'function' )
+					children.push.apply( children, cursor.getChild() );
+			}
+
+			// Attach the DOM nodes.
+
+			page.setAttribute( 'name', contents.id );
+			page.appendTo( this.parts.contents );
+
+			tab.unselectable();
+			this.parts.tabs.append( tab );
+
+			// Add access key handlers if access key is defined.
+			if ( contents.accessKey )
+			{
+				registerAccessKey( this, this, 'CTRL+' + contents.accessKey,
+					tabAccessKeyDown, tabAccessKeyUp );
+				this._.accessKeyMap[ 'CTRL+' + contents.accessKey ] = contents.id;
+			}
+		},
+
+		/**
+		 * Activates a tab page in the dialog by its id.
+		 * @param {String} id The id of the dialog tab to be activated.
+		 * @example
+		 * dialogObj.selectPage( 'tab_1' );
+		 */
+		selectPage : function( id )
+		{
+			// Hide the non-selected tabs and pages.
+			for ( var i in this._.tabs )
+			{
+				var tab = this._.tabs[i][0],
+					page = this._.tabs[i][1];
+				if ( i != id )
+				{
+					tab.removeClass( 'cke_dialog_tab_selected' );
+					page.hide();
+				}
+			}
+
+			var selected = this._.tabs[id];
+			selected[0].addClass( 'cke_dialog_tab_selected' );
+			selected[1].show();
+			this._.currentTabId = id;
+			this._.currentTabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, id );
+		},
+
+		/**
+		 * Hides a page's tab away from the dialog.
+		 * @param {String} id The page's Id.
+		 * @example
+		 * dialog.hidePage( 'tab_3' );
+		 */
+		hidePage : function( id )
+		{
+			var tab = this._.tabs[id] && this._.tabs[id][0];
+			if ( !tab )
+				return;
+			tab.hide();
+		},
+
+		/**
+		 * Unhides a page's tab.
+		 * @param {String} id The page's Id.
+		 * @example
+		 * dialog.showPage( 'tab_2' );
+		 */
+		showPage : function( id )
+		{
+			var tab = this._.tabs[id] && this._.tabs[id][0];
+			if ( !tab )
+				return;
+			tab.show();
+		},
+
+		/**
+		 * Gets the root DOM element of the dialog.
+		 * @returns {CKEDITOR.dom.element} The &lt;span&gt; element containing this dialog.
+		 * @example
+		 * var dialogElement = dialogObj.getElement().getFirst();
+		 * dialogElement.setStyle( 'padding', '5px' );
+		 */
+		getElement : function()
+		{
+			return this._.element;
+		},
+
+		/**
+		 * Gets the name of the dialog.
+		 * @returns {String} The name of this dialog.
+		 * @example
+		 * var dialogName = dialogObj.getName();
+		 */
+		getName : function()
+		{
+			return this._.name;
+		},
+
+		/**
+		 * Gets a dialog UI element object from a dialog page.
+		 * @param {String} pageId id of dialog page.
+		 * @param {String} elementId id of UI element.
+		 * @example
+		 * @returns {CKEDITOR.ui.dialog.uiElement} The dialog UI element.
+		 */
+		getContentElement : function( pageId, elementId )
+		{
+			return this._.contents[pageId][elementId];
+		},
+
+		/**
+		 * Gets the value of a dialog UI element.
+		 * @param {String} pageId id of dialog page.
+		 * @param {String} elementId id of UI element.
+		 * @example
+		 * @returns {Object} The value of the UI element.
+		 */
+		getValueOf : function( pageId, elementId )
+		{
+			return this.getContentElement( pageId, elementId ).getValue();
+		},
+
+		/**
+		 * Sets the value of a dialog UI element.
+		 * @param {String} pageId id of the dialog page.
+		 * @param {String} elementId id of the UI element.
+		 * @param {Object} value The new value of the UI element.
+		 * @example
+		 */
+		setValueOf : function( pageId, elementId, value )
+		{
+			return this.getContentElement( pageId, elementId ).setValue( value );
+		},
+
+		/**
+		 * Gets the UI element of a button in the dialog's button row.
+		 * @param {String} id The id of the button.
+		 * @example
+		 * @returns {CKEDITOR.ui.dialog.button} The button object.
+		 */
+		getButton : function( id )
+		{
+			return this._.buttons[ id ];
+		},
+
+		/**
+		 * Simulates a click to a dialog button in the dialog's button row.
+		 * @param {String} id The id of the button.
+		 * @example
+		 * @returns The return value of the dialog's "click" event.
+		 */
+		click : function( id )
+		{
+			return this._.buttons[ id ].click();
+		},
+
+		/**
+		 * Disables a dialog button.
+		 * @param {String} id The id of the button.
+		 * @example
+		 */
+		disableButton : function( id )
+		{
+			return this._.buttons[ id ].disable();
+		},
+
+		/**
+		 * Enables a dialog button.
+		 * @param {String} id The id of the button.
+		 * @example
+		 */
+		enableButton : function( id )
+		{
+			return this._.buttons[ id ].enable();
+		},
+
+		/**
+		 * Gets the number of pages in the dialog.
+		 * @returns {Number} Page count.
+		 */
+		getPageCount : function()
+		{
+			return this._.pageCount;
+		},
+
+		/**
+		 * Gets the editor instance which opened this dialog.
+		 * @returns {CKEDITOR.editor} Parent editor instances.
+		 */
+		getParentEditor : function()
+		{
+			return this._.editor;
+		},
+
+		/**
+		 * Gets the element that was selected when opening the dialog, if any.
+		 * @returns {CKEDITOR.dom.element} The element that was selected, or null.
+		 */
+		getSelectedElement : function()
+		{
+			return this.getParentEditor().getSelection().getSelectedElement();
+		},
+
+		/**
+		 * Adds element to dialog's focusable list.
+		 *
+		 * @param {CKEDITOR.dom.element} element
+		 * @param {Number} [index]
+		 */
+		addFocusable: function( element, index ) {
+			if ( typeof index == 'undefined' )
+			{
+				index = this._.focusList.length;
+				this._.focusList.push( new Focusable( this, element, index ) );
+			}
+			else
+			{
+				this._.focusList.splice( index, 0, new Focusable( this, element, index ) );
+				for ( var i = index + 1 ; i < this._.focusList.length ; i++ )
+					this._.focusList[ i ].focusIndex++;
+			}
+		}
+	};
+
+	CKEDITOR.tools.extend( CKEDITOR.dialog,
+		/**
+		 * @lends CKEDITOR.dialog
+		 */
+		{
+			/**
+			 * Registers a dialog.
+			 * @param {String} name The dialog's name.
+			 * @param {Function|String} dialogDefinition
+			 * A function returning the dialog's definition, or the URL to the .js file holding the function.
+			 * The function should accept an argument "editor" which is the current editor instance, and
+			 * return an object conforming to {@link CKEDITOR.dialog.dialogDefinition}.
+			 * @example
+			 * @see CKEDITOR.dialog.dialogDefinition
+			 */
+			add : function( name, dialogDefinition )
+			{
+				// Avoid path registration from multiple instances override definition.
+				if ( !this._.dialogDefinitions[name]
+					|| typeof  dialogDefinition == 'function' )
+					this._.dialogDefinitions[name] = dialogDefinition;
+			},
+
+			exists : function( name )
+			{
+				return !!this._.dialogDefinitions[ name ];
+			},
+
+			getCurrent : function()
+			{
+				return CKEDITOR.dialog._.currentTop;
+			},
+
+			/**
+			 * The default OK button for dialogs. Fires the "ok" event and closes the dialog if the event succeeds.
+			 * @static
+			 * @field
+			 * @example
+			 * @type Function
+			 */
+			okButton : (function()
+			{
+				var retval = function( editor, override )
+				{
+					override = override || {};
+					return CKEDITOR.tools.extend( {
+						id : 'ok',
+						type : 'button',
+						label : editor.lang.common.ok,
+						'class' : 'cke_dialog_ui_button_ok',
+						onClick : function( evt )
+						{
+							var dialog = evt.data.dialog;
+							if ( dialog.fire( 'ok', { hide : true } ).hide !== false )
+								dialog.hide();
+						}
+					}, override, true );
+				};
+				retval.type = 'button';
+				retval.override = function( override )
+				{
+					return CKEDITOR.tools.extend( function( editor ){ return retval( editor, override ); },
+							{ type : 'button' }, true );
+				};
+				return retval;
+			})(),
+
+			/**
+			 * The default cancel button for dialogs. Fires the "cancel" event and closes the dialog if no UI element value changed.
+			 * @static
+			 * @field
+			 * @example
+			 * @type Function
+			 */
+			cancelButton : (function()
+			{
+				var retval = function( editor, override )
+				{
+					override = override || {};
+					return CKEDITOR.tools.extend( {
+						id : 'cancel',
+						type : 'button',
+						label : editor.lang.common.cancel,
+						'class' : 'cke_dialog_ui_button_cancel',
+						onClick : function( evt )
+						{
+							var dialog = evt.data.dialog;
+							if ( dialog.fire( 'cancel', { hide : true } ).hide !== false )
+								dialog.hide();
+						}
+					}, override, true );
+				};
+				retval.type = 'button';
+				retval.override = function( override )
+				{
+					return CKEDITOR.tools.extend( function( editor ){ return retval( editor, override ); },
+							{ type : 'button' }, true );
+				};
+				return retval;
+			})(),
+
+			/**
+			 * Registers a dialog UI element.
+			 * @param {String} typeName The name of the UI element.
+			 * @param {Function} builder The function to build the UI element.
+			 * @example
+			 */
+			addUIElement : function( typeName, builder )
+			{
+				this._.uiElementBuilders[ typeName ] = builder;
+			}
+		});
+
+	CKEDITOR.dialog._ =
+	{
+		uiElementBuilders : {},
+
+		dialogDefinitions : {},
+
+		currentTop : null,
+
+		currentZIndex : null
+	};
+
+	// "Inherit" (copy actually) from CKEDITOR.event.
+	CKEDITOR.event.implementOn( CKEDITOR.dialog );
+	CKEDITOR.event.implementOn( CKEDITOR.dialog.prototype, true );
+
+	var defaultDialogDefinition =
+	{
+		resizable : CKEDITOR.DIALOG_RESIZE_NONE,
+		minWidth : 600,
+		minHeight : 400,
+		buttons : [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ]
+	};
+
+	// Tool function used to return an item from an array based on its id
+	// property.
+	var getById = function( array, id, recurse )
+	{
+		for ( var i = 0, item ; ( item = array[ i ] ) ; i++ )
+		{
+			if ( item.id == id )
+				return item;
+			if ( recurse && item[ recurse ] )
+			{
+				var retval = getById( item[ recurse ], id, recurse ) ;
+				if ( retval )
+					return retval;
+			}
+		}
+		return null;
+	};
+
+	// Tool function used to add an item into an array.
+	var addById = function( array, newItem, nextSiblingId, recurse, nullIfNotFound )
+	{
+		if ( nextSiblingId )
+		{
+			for ( var i = 0, item ; ( item = array[ i ] ) ; i++ )
+			{
+				if ( item.id == nextSiblingId )
+				{
+					array.splice( i, 0, newItem );
+					return newItem;
+				}
+
+				if ( recurse && item[ recurse ] )
+				{
+					var retval = addById( item[ recurse ], newItem, nextSiblingId, recurse, true );
+					if ( retval )
+						return retval;
+				}
+			}
+
+			if ( nullIfNotFound )
+				return null;
+		}
+
+		array.push( newItem );
+		return newItem;
+	};
+
+	// Tool function used to remove an item from an array based on its id.
+	var removeById = function( array, id, recurse )
+	{
+		for ( var i = 0, item ; ( item = array[ i ] ) ; i++ )
+		{
+			if ( item.id == id )
+				return array.splice( i, 1 );
+			if ( recurse && item[ recurse ] )
+			{
+				var retval = removeById( item[ recurse ], id, recurse );
+				if ( retval )
+					return retval;
+			}
+		}
+		return null;
+	};
+
+	/**
+	 * This class is not really part of the API. It is the "definition" property value
+	 * passed to "dialogDefinition" event handlers.
+	 * @constructor
+	 * @name CKEDITOR.dialog.dialogDefinitionObject
+	 * @extends CKEDITOR.dialog.dialogDefinition
+	 * @example
+	 * CKEDITOR.on( 'dialogDefinition', function( evt )
+	 * 	{
+	 * 		var definition = evt.data.definition;
+	 * 		var content = definition.getContents( 'page1' );
+	 * 		...
+	 * 	} );
+	 */
+	var definitionObject = function( dialog, dialogDefinition )
+	{
+		// TODO : Check if needed.
+		this.dialog = dialog;
+
+		// Transform the contents entries in contentObjects.
+		var contents = dialogDefinition.contents;
+		for ( var i = 0, content ; ( content = contents[i] ) ; i++ )
+			contents[ i ] = new contentObject( dialog, content );
+
+		CKEDITOR.tools.extend( this, dialogDefinition );
+	};
+
+	definitionObject.prototype =
+	/** @lends CKEDITOR.dialog.dialogDefinitionObject.prototype */
+	{
+		/**
+		 * Gets a content definition.
+		 * @param {String} id The id of the content definition.
+		 * @returns {CKEDITOR.dialog.contentDefinition} The content definition
+		 *		matching id.
+		 */
+		getContents : function( id )
+		{
+			return getById( this.contents, id );
+		},
+
+		/**
+		 * Gets a button definition.
+		 * @param {String} id The id of the button definition.
+		 * @returns {CKEDITOR.dialog.buttonDefinition} The button definition
+		 *		matching id.
+		 */
+		getButton : function( id )
+		{
+			return getById( this.buttons, id );
+		},
+
+		/**
+		 * Adds a content definition object under this dialog definition.
+		 * @param {CKEDITOR.dialog.contentDefinition} contentDefinition The
+		 *		content definition.
+		 * @param {String} [nextSiblingId] The id of an existing content
+		 *		definition which the new content definition will be inserted
+		 *		before. Omit if the new content definition is to be inserted as
+		 *		the last item.
+		 * @returns {CKEDITOR.dialog.contentDefinition} The inserted content
+		 *		definition.
+		 */
+		addContents : function( contentDefinition, nextSiblingId )
+		{
+			return addById( this.contents, contentDefinition, nextSiblingId );
+		},
+
+		/**
+		 * Adds a button definition object under this dialog definition.
+		 * @param {CKEDITOR.dialog.buttonDefinition} buttonDefinition The
+		 *		button definition.
+		 * @param {String} [nextSiblingId] The id of an existing button
+		 *		definition which the new button definition will be inserted
+		 *		before. Omit if the new button definition is to be inserted as
+		 *		the last item.
+		 * @returns {CKEDITOR.dialog.buttonDefinition} The inserted button
+		 *		definition.
+		 */
+		addButton : function( buttonDefinition, nextSiblingId )
+		{
+			return addById( this.buttons, buttonDefinition, nextSiblingId );
+		},
+
+		/**
+		 * Removes a content definition from this dialog definition.
+		 * @param {String} id The id of the content definition to be removed.
+		 * @returns {CKEDITOR.dialog.contentDefinition} The removed content
+		 *		definition.
+		 */
+		removeContents : function( id )
+		{
+			removeById( this.contents, id );
+		},
+
+		/**
+		 * Removes a button definition from the dialog definition.
+		 * @param {String} id The id of the button definition to be removed.
+		 * @returns {CKEDITOR.dialog.buttonDefinition} The removed button
+		 *		definition.
+		 */
+		removeButton : function( id )
+		{
+			removeById( this.buttons, id );
+		}
+	};
+
+	/**
+	 * This class is not really part of the API. It is the template of the
+	 * objects representing content pages inside the
+	 * CKEDITOR.dialog.dialogDefinitionObject.
+	 * @constructor
+	 * @name CKEDITOR.dialog.contentDefinitionObject
+	 * @example
+	 * CKEDITOR.on( 'dialogDefinition', function( evt )
+	 * 	{
+	 * 		var definition = evt.data.definition;
+	 * 		var content = definition.getContents( 'page1' );
+	 *		content.remove( 'textInput1' );
+	 * 		...
+	 * 	} );
+	 */
+	function contentObject( dialog, contentDefinition )
+	{
+		this._ =
+		{
+			dialog : dialog
+		};
+
+		CKEDITOR.tools.extend( this, contentDefinition );
+	}
+
+	contentObject.prototype =
+	/** @lends CKEDITOR.dialog.contentDefinitionObject.prototype */
+	{
+		/**
+		 * Gets a UI element definition under the content definition.
+		 * @param {String} id The id of the UI element definition.
+		 * @returns {CKEDITOR.dialog.uiElementDefinition}
+		 */
+		get : function( id )
+		{
+			return getById( this.elements, id, 'children' );
+		},
+
+		/**
+		 * Adds a UI element definition to the content definition.
+		 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition The
+		 *		UI elemnet definition to be added.
+		 * @param {String} nextSiblingId The id of an existing UI element
+		 *		definition which the new UI element definition will be inserted
+		 *		before. Omit if the new button definition is to be inserted as
+		 *		the last item.
+		 * @returns {CKEDITOR.dialog.uiElementDefinition} The element
+		 *		definition inserted.
+		 */
+		add : function( elementDefinition, nextSiblingId )
+		{
+			return addById( this.elements, elementDefinition, nextSiblingId, 'children' );
+		},
+
+		/**
+		 * Removes a UI element definition from the content definition.
+		 * @param {String} id The id of the UI element definition to be
+		 *		removed.
+		 * @returns {CKEDITOR.dialog.uiElementDefinition} The element
+		 *		definition removed.
+		 * @example
+		 */
+		remove : function( id )
+		{
+			removeById( this.elements, id, 'children' );
+		}
+	};
+
+	function initDragAndDrop( dialog )
+	{
+		var lastCoords = null,
+			abstractDialogCoords = null,
+			element = dialog.getElement().getFirst(),
+			editor = dialog.getParentEditor(),
+			magnetDistance = editor.config.dialog_magnetDistance,
+			margins = skinData[ editor.skinName ].margins || [ 0, 0, 0, 0 ];
+
+		if ( typeof magnetDistance == 'undefined' )
+			magnetDistance = 20;
+
+		function mouseMoveHandler( evt )
+		{
+			var dialogSize = dialog.getSize(),
+				viewPaneSize = CKEDITOR.document.getWindow().getViewPaneSize(),
+				x = evt.data.$.screenX,
+				y = evt.data.$.screenY,
+				dx = x - lastCoords.x,
+				dy = y - lastCoords.y,
+				realX, realY;
+
+			lastCoords = { x : x, y : y };
+			abstractDialogCoords.x += dx;
+			abstractDialogCoords.y += dy;
+
+			if ( abstractDialogCoords.x + margins[3] < magnetDistance )
+				realX = - margins[3];
+			else if ( abstractDialogCoords.x - margins[1] > viewPaneSize.width - dialogSize.width - magnetDistance )
+				realX = viewPaneSize.width - dialogSize.width + margins[1];
+			else
+				realX = abstractDialogCoords.x;
+
+			if ( abstractDialogCoords.y + margins[0] < magnetDistance )
+				realY = - margins[0];
+			else if ( abstractDialogCoords.y - margins[2] > viewPaneSize.height - dialogSize.height - magnetDistance )
+				realY = viewPaneSize.height - dialogSize.height + margins[2];
+			else
+				realY = abstractDialogCoords.y;
+
+			dialog.move( realX, realY );
+
+			evt.data.preventDefault();
+		}
+
+		function mouseUpHandler( evt )
+		{
+			CKEDITOR.document.removeListener( 'mousemove', mouseMoveHandler );
+			CKEDITOR.document.removeListener( 'mouseup', mouseUpHandler );
+
+			if ( CKEDITOR.env.ie6Compat )
+			{
+				var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
+				coverDoc.removeListener( 'mousemove', mouseMoveHandler );
+				coverDoc.removeListener( 'mouseup', mouseUpHandler );
+			}
+		}
+
+		dialog.parts.title.on( 'mousedown', function( evt )
+			{
+				dialog._.updateSize = true;
+
+				lastCoords = { x : evt.data.$.screenX, y : evt.data.$.screenY };
+
+				CKEDITOR.document.on( 'mousemove', mouseMoveHandler );
+				CKEDITOR.document.on( 'mouseup', mouseUpHandler );
+				abstractDialogCoords = dialog.getPosition();
+
+				if ( CKEDITOR.env.ie6Compat )
+				{
+					var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
+					coverDoc.on( 'mousemove', mouseMoveHandler );
+					coverDoc.on( 'mouseup', mouseUpHandler );
+				}
+
+				evt.data.preventDefault();
+			}, dialog );
+	}
+
+	function initResizeHandles( dialog )
+	{
+		var definition = dialog.definition,
+			minWidth = definition.minWidth || 0,
+			minHeight = definition.minHeight || 0,
+			resizable = definition.resizable,
+			margins = skinData[ dialog.getParentEditor().skinName ].margins || [ 0, 0, 0, 0 ];
+
+		function topSizer( coords, dy )
+		{
+			coords.y += dy;
+		}
+
+		function rightSizer( coords, dx )
+		{
+			coords.x2 += dx;
+		}
+
+		function bottomSizer( coords, dy )
+		{
+			coords.y2 += dy;
+		}
+
+		function leftSizer( coords, dx )
+		{
+			coords.x += dx;
+		}
+
+		var lastCoords = null,
+			abstractDialogCoords = null,
+			magnetDistance = dialog._.editor.config.magnetDistance,
+			parts = [ 'tl', 't', 'tr', 'l', 'r', 'bl', 'b', 'br' ];
+
+		function mouseDownHandler( evt )
+		{
+			var partName = evt.listenerData.part, size = dialog.getSize();
+			abstractDialogCoords = dialog.getPosition();
+			CKEDITOR.tools.extend( abstractDialogCoords,
+				{
+					x2 : abstractDialogCoords.x + size.width,
+					y2 : abstractDialogCoords.y + size.height
+				} );
+			lastCoords = { x : evt.data.$.screenX, y : evt.data.$.screenY };
+
+			CKEDITOR.document.on( 'mousemove', mouseMoveHandler, dialog, { part : partName } );
+			CKEDITOR.document.on( 'mouseup', mouseUpHandler, dialog, { part : partName } );
+
+			if ( CKEDITOR.env.ie6Compat )
+			{
+				var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
+				coverDoc.on( 'mousemove', mouseMoveHandler, dialog, { part : partName } );
+				coverDoc.on( 'mouseup', mouseUpHandler, dialog, { part : partName } );
+			}
+
+			evt.data.preventDefault();
+		}
+
+		function mouseMoveHandler( evt )
+		{
+			var x = evt.data.$.screenX,
+				y = evt.data.$.screenY,
+				dx = x - lastCoords.x,
+				dy = y - lastCoords.y,
+				viewPaneSize = CKEDITOR.document.getWindow().getViewPaneSize(),
+				partName = evt.listenerData.part;
+
+			if ( partName.search( 't' ) != -1 )
+				topSizer( abstractDialogCoords, dy );
+			if ( partName.search( 'l' ) != -1 )
+				leftSizer( abstractDialogCoords, dx );
+			if ( partName.search( 'b' ) != -1 )
+				bottomSizer( abstractDialogCoords, dy );
+			if ( partName.search( 'r' ) != -1 )
+				rightSizer( abstractDialogCoords, dx );
+
+			lastCoords = { x : x, y : y };
+
+			var realX, realY, realX2, realY2;
+
+			if ( abstractDialogCoords.x + margins[3] < magnetDistance )
+				realX = - margins[3];
+			else if ( partName.search( 'l' ) != -1 && abstractDialogCoords.x2 - abstractDialogCoords.x < minWidth + magnetDistance )
+				realX = abstractDialogCoords.x2 - minWidth;
+			else
+				realX = abstractDialogCoords.x;
+
+			if ( abstractDialogCoords.y + margins[0] < magnetDistance )
+				realY = - margins[0];
+			else if ( partName.search( 't' ) != -1 && abstractDialogCoords.y2 - abstractDialogCoords.y < minHeight + magnetDistance )
+				realY = abstractDialogCoords.y2 - minHeight;
+			else
+				realY = abstractDialogCoords.y;
+
+			if ( abstractDialogCoords.x2 - margins[1] > viewPaneSize.width - magnetDistance )
+				realX2 = viewPaneSize.width + margins[1] ;
+			else if ( partName.search( 'r' ) != -1 && abstractDialogCoords.x2 - abstractDialogCoords.x < minWidth + magnetDistance )
+				realX2 = abstractDialogCoords.x + minWidth;
+			else
+				realX2 = abstractDialogCoords.x2;
+
+			if ( abstractDialogCoords.y2 - margins[2] > viewPaneSize.height - magnetDistance )
+				realY2= viewPaneSize.height + margins[2] ;
+			else if ( partName.search( 'b' ) != -1 && abstractDialogCoords.y2 - abstractDialogCoords.y < minHeight + magnetDistance )
+				realY2 = abstractDialogCoords.y + minHeight;
+			else
+				realY2 = abstractDialogCoords.y2 ;
+
+			dialog.move( realX, realY );
+			dialog.resize( realX2 - realX, realY2 - realY );
+
+			evt.data.preventDefault();
+		}
+
+		function mouseUpHandler( evt )
+		{
+			CKEDITOR.document.removeListener( 'mouseup', mouseUpHandler );
+			CKEDITOR.document.removeListener( 'mousemove', mouseMoveHandler );
+
+			if ( CKEDITOR.env.ie6Compat )
+			{
+				var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
+				coverDoc.removeListener( 'mouseup', mouseUpHandler );
+				coverDoc.removeListener( 'mousemove', mouseMoveHandler );
+			}
+		}
+
+// TODO : Simplify the resize logic, having just a single resize grip <div>.
+//		var widthTest = /[lr]/,
+//			heightTest = /[tb]/;
+//		for ( var i = 0 ; i < parts.length ; i++ )
+//		{
+//			var element = dialog.parts[ parts[i] + '_resize' ];
+//			if ( resizable == CKEDITOR.DIALOG_RESIZE_NONE ||
+//					resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT && widthTest.test( parts[i] ) ||
+//			  		resizable == CKEDITOR.DIALOG_RESIZE_WIDTH && heightTest.test( parts[i] ) )
+//			{
+//				element.hide();
+//				continue;
+//			}
+//			element.on( 'mousedown', mouseDownHandler, dialog, { part : parts[i] } );
+//		}
+	}
+
+	var resizeCover;
+	var coverElement;
+
+	var addCover = function( editor )
+	{
+		var win = CKEDITOR.document.getWindow();
+
+		if ( !coverElement )
+		{
+			var html = [
+					'<div style="position: ', ( CKEDITOR.env.ie6Compat ? 'absolute' : 'fixed' ),
+					'; z-index: ', editor.config.baseFloatZIndex,
+					'; top: 0px; left: 0px; ',
+					'background-color: ', editor.config.dialog_backgroundCoverColor || 'white',
+					'" id="cke_dialog_background_cover">'
+				];
+
+
+			if ( CKEDITOR.env.ie6Compat )
+			{
+				// Support for custom document.domain in IE.
+				var isCustomDomain = CKEDITOR.env.isCustomDomain();
+
+				html.push(
+					'<iframe' +
+						' hidefocus="true"' +
+						' frameborder="0"' +
+						' id="cke_dialog_background_iframe"' +
+						' src="javascript:' );
+
+				html.push(
+						isCustomDomain ?
+							'void((function(){' +
+								'document.open();' +
+								'document.domain=\'' + document.domain + '\';' +
+								'document.close();' +
+							'})())'
+						:
+							'\'\'' );
+
+				html.push(
+						'"' +
+						' style="' +
+							'position:absolute;' +
+							'left:0;' +
+							'top:0;' +
+							'width:100%;' +
+							'height: 100%;' +
+							'progid:DXImageTransform.Microsoft.Alpha(opacity=0)">' +
+					'</iframe>' );
+			}
+
+			html.push( '</div>' );
+
+			coverElement = CKEDITOR.dom.element.createFromHtml( html.join( '' ) );
+		}
+
+		var element = coverElement;
+
+		var resizeFunc = function()
+		{
+			var size = win.getViewPaneSize();
+			element.setStyles(
+				{
+					width : size.width + 'px',
+					height : size.height + 'px'
+				} );
+		};
+
+		var scrollFunc = function()
+		{
+			var pos = win.getScrollPosition(),
+				cursor = CKEDITOR.dialog._.currentTop;
+			element.setStyles(
+					{
+						left : pos.x + 'px',
+						top : pos.y + 'px'
+					});
+
+			do
+			{
+				var dialogPos = cursor.getPosition();
+				cursor.move( dialogPos.x, dialogPos.y );
+			} while( ( cursor = cursor._.parentDialog ) );
+		};
+
+		resizeCover = resizeFunc;
+		win.on( 'resize', resizeFunc );
+		resizeFunc();
+		if ( CKEDITOR.env.ie6Compat )
+		{
+			// IE BUG: win.$.onscroll assignment doesn't work.. it must be window.onscroll.
+			// So we need to invent a really funny way to make it work.
+			var myScrollHandler = function()
+				{
+					scrollFunc();
+					arguments.callee.prevScrollHandler.apply( this, arguments );
+				};
+			win.$.setTimeout( function()
+				{
+					myScrollHandler.prevScrollHandler = window.onscroll || function(){};
+					window.onscroll = myScrollHandler;
+				}, 0 );
+			scrollFunc();
+		}
+
+		var opacity = editor.config.dialog_backgroundCoverOpacity;
+		element.setOpacity( typeof opacity != 'undefined' ? opacity : 0.5 );
+
+		element.appendTo( CKEDITOR.document.getBody() );
+	};
+
+	var removeCover = function()
+	{
+		if ( !coverElement )
+			return;
+
+		var win = CKEDITOR.document.getWindow();
+		coverElement.remove();
+		win.removeListener( 'resize', resizeCover );
+
+		if ( CKEDITOR.env.ie6Compat )
+		{
+			win.$.setTimeout( function()
+				{
+					var prevScrollHandler = window.onscroll && window.onscroll.prevScrollHandler;
+					window.onscroll = prevScrollHandler || null;
+				}, 0 );
+		}
+		resizeCover = null;
+	};
+
+	var accessKeyProcessors = {};
+
+	var accessKeyDownHandler = function( evt )
+	{
+		var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey,
+			alt = evt.data.$.altKey,
+			shift = evt.data.$.shiftKey,
+			key = String.fromCharCode( evt.data.$.keyCode ),
+			keyProcessor = accessKeyProcessors[( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '') + ( shift ? 'SHIFT+' : '' ) + key];
+
+		if ( !keyProcessor || !keyProcessor.length )
+			return;
+
+		keyProcessor = keyProcessor[keyProcessor.length - 1];
+		keyProcessor.keydown && keyProcessor.keydown.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key );
+		evt.data.preventDefault();
+	};
+
+	var accessKeyUpHandler = function( evt )
+	{
+		var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey,
+			alt = evt.data.$.altKey,
+			shift = evt.data.$.shiftKey,
+			key = String.fromCharCode( evt.data.$.keyCode ),
+			keyProcessor = accessKeyProcessors[( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '') + ( shift ? 'SHIFT+' : '' ) + key];
+
+		if ( !keyProcessor || !keyProcessor.length )
+			return;
+
+		keyProcessor = keyProcessor[keyProcessor.length - 1];
+		keyProcessor.keyup && keyProcessor.keyup.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key );
+		evt.data.preventDefault();
+	};
+
+	var registerAccessKey = function( uiElement, dialog, key, downFunc, upFunc )
+	{
+		var procList = accessKeyProcessors[key] || ( accessKeyProcessors[key] = [] );
+		procList.push( {
+				uiElement : uiElement,
+				dialog : dialog,
+				key : key,
+				keyup : upFunc || uiElement.accessKeyUp,
+				keydown : downFunc || uiElement.accessKeyDown
+			} );
+	};
+
+	var unregisterAccessKey = function( obj )
+	{
+		for ( var i in accessKeyProcessors )
+		{
+			var list = accessKeyProcessors[i];
+			for ( var j = list.length - 1 ; j >= 0 ; j-- )
+			{
+				if ( list[j].dialog == obj || list[j].uiElement == obj )
+					list.splice( j, 1 );
+			}
+			if ( list.length === 0 )
+				delete accessKeyProcessors[i];
+		}
+	};
+
+	var tabAccessKeyUp = function( dialog, key )
+	{
+		if ( dialog._.accessKeyMap[key] )
+			dialog.selectPage( dialog._.accessKeyMap[key] );
+	};
+
+	var tabAccessKeyDown = function( dialog, key )
+	{
+	};
+
+	// ESC, ENTER
+	var preventKeyBubblingKeys = { 27 :1, 13 :1 };
+	var preventKeyBubbling = function( e )
+	{
+		if ( e.data.getKeystroke() in preventKeyBubblingKeys )
+			e.data.stopPropagation();
+	};
+
+	(function()
+	{
+		CKEDITOR.ui.dialog =
+		{
+			/**
+			 * The base class of all dialog UI elements.
+			 * @constructor
+			 * @param {CKEDITOR.dialog} dialog Parent dialog object.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition Element
+			 * definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>id</strong> (Required) The id of the UI element. See {@link
+			 * 	CKEDITOR.dialog#getContentElement}</li>
+			 * 	<li><strong>type</strong> (Required) The type of the UI element. The
+			 * 	value to this field specifies which UI element class will be used to
+			 * 	generate the final widget.</li>
+			 * 	<li><strong>title</strong> (Optional) The popup tooltip for the UI
+			 * 	element.</li>
+			 * 	<li><strong>hidden</strong> (Optional) A flag that tells if the element
+			 * 	should be initially visible.</li>
+			 * 	<li><strong>className</strong> (Optional) Additional CSS class names
+			 * 	to add to the UI element. Separated by space.</li>
+			 * 	<li><strong>style</strong> (Optional) Additional CSS inline styles
+			 * 	to add to the UI element. A semicolon (;) is required after the last
+			 * 	style declaration.</li>
+			 * 	<li><strong>accessKey</strong> (Optional) The alphanumeric access key
+			 * 	for this element. Access keys are automatically prefixed by CTRL.</li>
+			 * 	<li><strong>on*</strong> (Optional) Any UI element definition field that
+			 * 	starts with <em>on</em> followed immediately by a capital letter and
+			 * 	probably more letters is an event handler. Event handlers may be further
+			 * 	divided into registered event handlers and DOM event handlers. Please
+			 * 	refer to {@link CKEDITOR.ui.dialog.uiElement#registerEvents} and
+			 * 	{@link CKEDITOR.ui.dialog.uiElement#eventProcessors} for more
+			 * 	information.</li>
+			 * </ul>
+			 * @param {Array} htmlList
+			 * List of HTML code to be added to the dialog's content area.
+			 * @param {Function|String} nodeNameArg
+			 * A function returning a string, or a simple string for the node name for
+			 * the root DOM node. Default is 'div'.
+			 * @param {Function|Object} stylesArg
+			 * A function returning an object, or a simple object for CSS styles applied
+			 * to the DOM node. Default is empty object.
+			 * @param {Function|Object} attributesArg
+			 * A fucntion returning an object, or a simple object for attributes applied
+			 * to the DOM node. Default is empty object.
+			 * @param {Function|String} contentsArg
+			 * A function returning a string, or a simple string for the HTML code inside
+			 * the root DOM node. Default is empty string.
+			 * @example
+			 */
+			uiElement : function( dialog, elementDefinition, htmlList, nodeNameArg, stylesArg, attributesArg, contentsArg )
+			{
+				if ( arguments.length < 4 )
+					return;
+
+				var nodeName = ( nodeNameArg.call ? nodeNameArg( elementDefinition ) : nodeNameArg ) || 'div',
+					html = [ '<', nodeName, ' ' ],
+					styles = ( stylesArg && stylesArg.call ? stylesArg( elementDefinition ) : stylesArg ) || {},
+					attributes = ( attributesArg && attributesArg.call ? attributesArg( elementDefinition ) : attributesArg ) || {},
+					innerHTML = ( contentsArg && contentsArg.call ? contentsArg( dialog, elementDefinition ) : contentsArg ) || '',
+					domId = this.domId = attributes.id || CKEDITOR.tools.getNextNumber() + '_uiElement',
+					id = this.id = elementDefinition.id,
+					i;
+
+				// Set the id, a unique id is required for getElement() to work.
+				attributes.id = domId;
+
+				// Set the type and definition CSS class names.
+				var classes = {};
+				if ( elementDefinition.type )
+					classes[ 'cke_dialog_ui_' + elementDefinition.type ] = 1;
+				if ( elementDefinition.className )
+					classes[ elementDefinition.className ] = 1;
+				var attributeClasses = ( attributes['class'] && attributes['class'].split ) ? attributes['class'].split( ' ' ) : [];
+				for ( i = 0 ; i < attributeClasses.length ; i++ )
+				{
+					if ( attributeClasses[i] )
+						classes[ attributeClasses[i] ] = 1;
+				}
+				var finalClasses = [];
+				for ( i in classes )
+					finalClasses.push( i );
+				attributes['class'] = finalClasses.join( ' ' );
+
+				// Set the popup tooltop.
+				if ( elementDefinition.title )
+					attributes.title = elementDefinition.title;
+
+				// Write the inline CSS styles.
+				var styleStr = ( elementDefinition.style || '' ).split( ';' );
+				for ( i in styles )
+					styleStr.push( i + ':' + styles[i] );
+				if ( elementDefinition.hidden )
+					styleStr.push( 'display:none' );
+				for ( i = styleStr.length - 1 ; i >= 0 ; i-- )
+				{
+					if ( styleStr[i] === '' )
+						styleStr.splice( i, 1 );
+				}
+				if ( styleStr.length > 0 )
+					attributes.style = ( attributes.style ? ( attributes.style + '; ' ) : '' ) + styleStr.join( '; ' );
+
+				// Write the attributes.
+				for ( i in attributes )
+					html.push( i + '="' + CKEDITOR.tools.htmlEncode( attributes[i] ) + '" ');
+
+				// Write the content HTML.
+				html.push( '>', innerHTML, '</', nodeName, '>' );
+
+				// Add contents to the parent HTML array.
+				htmlList.push( html.join( '' ) );
+
+				( this._ || ( this._ = {} ) ).dialog = dialog;
+
+				// Override isChanged if it is defined in element definition.
+				if ( typeof( elementDefinition.isChanged ) == 'boolean' )
+					this.isChanged = function(){ return elementDefinition.isChanged; };
+				if ( typeof( elementDefinition.isChanged ) == 'function' )
+					this.isChanged = elementDefinition.isChanged;
+
+				// Add events.
+				CKEDITOR.event.implementOn( this );
+
+				this.registerEvents( elementDefinition );
+				if ( this.accessKeyUp && this.accessKeyDown && elementDefinition.accessKey )
+					registerAccessKey( this, dialog, 'CTRL+' + elementDefinition.accessKey );
+
+				var me = this;
+				dialog.on( 'load', function()
+					{
+						if ( me.getInputElement() )
+						{
+							me.getInputElement().on( 'focus', function()
+								{
+									dialog._.tabBarMode = false;
+									dialog._.hasFocus = true;
+									me.fire( 'focus' );
+								}, me );
+						}
+					} );
+
+				// Register the object as a tab focus if it can be included.
+				if ( this.keyboardFocusable )
+				{
+					this.focusIndex = dialog._.focusList.push( this ) - 1;
+					this.on( 'focus', function()
+						{
+							dialog._.currentFocusIndex = me.focusIndex;
+						} );
+				}
+
+				// Completes this object with everything we have in the
+				// definition.
+				CKEDITOR.tools.extend( this, elementDefinition );
+			},
+
+			/**
+			 * Horizontal layout box for dialog UI elements, auto-expends to available width of container.
+			 * @constructor
+			 * @extends CKEDITOR.ui.dialog.uiElement
+			 * @param {CKEDITOR.dialog} dialog
+			 * Parent dialog object.
+			 * @param {Array} childObjList
+			 * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this
+			 * container.
+			 * @param {Array} childHtmlList
+			 * Array of HTML code that correspond to the HTML output of all the
+			 * objects in childObjList.
+			 * @param {Array} htmlList
+			 * Array of HTML code that this element will output to.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
+			 * The element definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>widths</strong> (Optional) The widths of child cells.</li>
+			 * 	<li><strong>height</strong> (Optional) The height of the layout.</li>
+			 * 	<li><strong>padding</strong> (Optional) The padding width inside child
+			 * 	 cells.</li>
+			 * 	<li><strong>align</strong> (Optional) The alignment of the whole layout
+			 * 	</li>
+			 * </ul>
+			 * @example
+			 */
+			hbox : function( dialog, childObjList, childHtmlList, htmlList, elementDefinition )
+			{
+				if ( arguments.length < 4 )
+					return;
+
+				this._ || ( this._ = {} );
+
+				var children = this._.children = childObjList,
+					widths = elementDefinition && elementDefinition.widths || null,
+					height = elementDefinition && elementDefinition.height || null,
+					styles = {},
+					i;
+				/** @ignore */
+				var innerHTML = function()
+				{
+					var html = [ '<tbody><tr class="cke_dialog_ui_hbox">' ];
+					for ( i = 0 ; i < childHtmlList.length ; i++ )
+					{
+						var className = 'cke_dialog_ui_hbox_child',
+							styles = [];
+						if ( i === 0 )
+							className = 'cke_dialog_ui_hbox_first';
+						if ( i == childHtmlList.length - 1 )
+							className = 'cke_dialog_ui_hbox_last';
+						html.push( '<td class="', className, '" ' );
+						if ( widths )
+						{
+							if ( widths[i] )
+								styles.push( 'width:' + CKEDITOR.tools.cssLength( widths[i] ) );
+						}
+						else
+							styles.push( 'width:' + Math.floor( 100 / childHtmlList.length ) + '%' );
+						if ( height )
+							styles.push( 'height:' + CKEDITOR.tools.cssLength( height ) );
+						if ( elementDefinition && elementDefinition.padding != undefined )
+							styles.push( 'padding:' + CKEDITOR.tools.cssLength( elementDefinition.padding ) );
+						if ( styles.length > 0 )
+							html.push( 'style="' + styles.join('; ') + '" ' );
+						html.push( '>', childHtmlList[i], '</td>' );
+					}
+					html.push( '</tr></tbody>' );
+					return html.join( '' );
+				};
+
+				CKEDITOR.ui.dialog.uiElement.call(
+					this,
+					dialog,
+					elementDefinition || { type : 'hbox' },
+					htmlList,
+					'table',
+					styles,
+					elementDefinition && elementDefinition.align && { align : elementDefinition.align } || null,
+					innerHTML );
+			},
+
+			/**
+			 * Vertical layout box for dialog UI elements.
+			 * @constructor
+			 * @extends CKEDITOR.ui.dialog.hbox
+			 * @param {CKEDITOR.dialog} dialog
+			 * Parent dialog object.
+			 * @param {Array} childObjList
+			 * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this
+			 * container.
+			 * @param {Array} childHtmlList
+			 * Array of HTML code that correspond to the HTML output of all the
+			 * objects in childObjList.
+			 * @param {Array} htmlList
+			 * Array of HTML code that this element will output to.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
+			 * The element definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>width</strong> (Optional) The width of the layout.</li>
+			 * 	<li><strong>heights</strong> (Optional) The heights of individual cells.
+			 * 	</li>
+			 * 	<li><strong>align</strong> (Optional) The alignment of the layout.</li>
+			 * 	<li><strong>padding</strong> (Optional) The padding width inside child
+			 * 	cells.</li>
+			 * 	<li><strong>expand</strong> (Optional) Whether the layout should expand
+			 * 	vertically to fill its container.</li>
+			 * </ul>
+			 * @example
+			 */
+			vbox : function( dialog, childObjList, childHtmlList, htmlList, elementDefinition )
+			{
+				if (arguments.length < 3 )
+					return;
+
+				this._ || ( this._ = {} );
+
+				var children = this._.children = childObjList,
+					width = elementDefinition && elementDefinition.width || null,
+					heights = elementDefinition && elementDefinition.heights || null;
+				/** @ignore */
+				var innerHTML = function()
+				{
+					var html = [ '<table cellspacing="0" border="0" ' ];
+					html.push( 'style="' );
+					if ( elementDefinition && elementDefinition.expand )
+						html.push( 'height:100%;' );
+					html.push( 'width:' + CKEDITOR.tools.cssLength( width || '100%' ), ';' );
+					html.push( '"' );
+					html.push( 'align="', CKEDITOR.tools.htmlEncode(
+						( elementDefinition && elementDefinition.align ) || ( dialog.getParentEditor().lang.dir == 'ltr' ? 'left' : 'right' ) ), '" ' );
+
+					html.push( '><tbody>' );
+					for ( var i = 0 ; i < childHtmlList.length ; i++ )
+					{
+						var styles = [];
+						html.push( '<tr><td ' );
+						if ( width )
+							styles.push( 'width:' + CKEDITOR.tools.cssLength( width || '100%' ) );
+						if ( heights )
+							styles.push( 'height:' + CKEDITOR.tools.cssLength( heights[i] ) );
+						else if ( elementDefinition && elementDefinition.expand )
+							styles.push( 'height:' + Math.floor( 100 / childHtmlList.length ) + '%' );
+						if ( elementDefinition && elementDefinition.padding != undefined )
+							styles.push( 'padding:' + CKEDITOR.tools.cssLength( elementDefinition.padding ) );
+						if ( styles.length > 0 )
+							html.push( 'style="', styles.join( '; ' ), '" ' );
+						html.push( ' class="cke_dialog_ui_vbox_child">', childHtmlList[i], '</td></tr>' );
+					}
+					html.push( '</tbody></table>' );
+					return html.join( '' );
+				};
+				CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type : 'vbox' }, htmlList, 'div', null, null, innerHTML );
+			}
+		};
+	})();
+
+	CKEDITOR.ui.dialog.uiElement.prototype =
+	{
+		/**
+		 * Gets the root DOM element of this dialog UI object.
+		 * @returns {CKEDITOR.dom.element} Root DOM element of UI object.
+		 * @example
+		 * uiElement.getElement().hide();
+		 */
+		getElement : function()
+		{
+			return CKEDITOR.document.getById( this.domId );
+		},
+
+		/**
+		 * Gets the DOM element that the user inputs values.
+		 * This function is used by setValue(), getValue() and focus(). It should
+		 * be overrided in child classes where the input element isn't the root
+		 * element.
+		 * @returns {CKEDITOR.dom.element} The element where the user input values.
+		 * @example
+		 * var rawValue = textInput.getInputElement().$.value;
+		 */
+		getInputElement : function()
+		{
+			return this.getElement();
+		},
+
+		/**
+		 * Gets the parent dialog object containing this UI element.
+		 * @returns {CKEDITOR.dialog} Parent dialog object.
+		 * @example
+		 * var dialog = uiElement.getDialog();
+		 */
+		getDialog : function()
+		{
+			return this._.dialog;
+		},
+
+		/**
+		 * Sets the value of this dialog UI object.
+		 * @param {Object} value The new value.
+		 * @returns {CKEDITOR.dialog.uiElement} The current UI element.
+		 * @example
+		 * uiElement.setValue( 'Dingo' );
+		 */
+		setValue : function( value )
+		{
+			this.getInputElement().setValue( value );
+			this.fire( 'change', { value : value } );
+			return this;
+		},
+
+		/**
+		 * Gets the current value of this dialog UI object.
+		 * @returns {Object} The current value.
+		 * @example
+		 * var myValue = uiElement.getValue();
+		 */
+		getValue : function()
+		{
+			return this.getInputElement().getValue();
+		},
+
+		/**
+		 * Tells whether the UI object's value has changed.
+		 * @returns {Boolean} true if changed, false if not changed.
+		 * @example
+		 * if ( uiElement.isChanged() )
+		 * &nbsp;&nbsp;confirm( 'Value changed! Continue?' );
+		 */
+		isChanged : function()
+		{
+			// Override in input classes.
+			return false;
+		},
+
+		/**
+		 * Selects the parent tab of this element. Usually called by focus() or overridden focus() methods.
+		 * @returns {CKEDITOR.dialog.uiElement} The current UI element.
+		 * @example
+		 * focus : function()
+		 * {
+		 * 		this.selectParentTab();
+		 * 		// do something else.
+		 * }
+		 */
+		selectParentTab : function()
+		{
+			var element = this.getInputElement(),
+				cursor = element,
+				tabId;
+			while ( ( cursor = cursor.getParent() ) && cursor.$.className.search( 'cke_dialog_page_contents' ) == -1 )
+			{ /*jsl:pass*/ }
+
+			// Some widgets don't have parent tabs (e.g. OK and Cancel buttons).
+			if ( !cursor )
+				return this;
+
+			tabId = cursor.getAttribute( 'name' );
+			// Avoid duplicate select.
+			if ( this._.dialog._.currentTabId != tabId )
+				this._.dialog.selectPage( tabId );
+			return this;
+		},
+
+		/**
+		 * Puts the focus to the UI object. Switches tabs if the UI object isn't in the active tab page.
+		 * @returns {CKEDITOR.dialog.uiElement} The current UI element.
+		 * @example
+		 * uiElement.focus();
+		 */
+		focus : function()
+		{
+			this.selectParentTab().getInputElement().focus();
+			return this;
+		},
+
+		/**
+		 * Registers the on* event handlers defined in the element definition.
+		 * The default behavior of this function is:
+		 * <ol>
+		 *  <li>
+		 *  	If the on* event is defined in the class's eventProcesors list,
+		 *  	then the registration is delegated to the corresponding function
+		 *  	in the eventProcessors list.
+		 *  </li>
+		 *  <li>
+		 *  	If the on* event is not defined in the eventProcessors list, then
+		 *  	register the event handler under the corresponding DOM event of
+		 *  	the UI element's input DOM element (as defined by the return value
+		 *  	of {@link CKEDITOR.ui.dialog.uiElement#getInputElement}).
+		 *  </li>
+		 * </ol>
+		 * This function is only called at UI element instantiation, but can
+		 * be overridded in child classes if they require more flexibility.
+		 * @param {CKEDITOR.dialog.uiElementDefinition} definition The UI element
+		 * definition.
+		 * @returns {CKEDITOR.dialog.uiElement} The current UI element.
+		 * @example
+		 */
+		registerEvents : function( definition )
+		{
+			var regex = /^on([A-Z]\w+)/,
+				match;
+
+			var registerDomEvent = function( uiElement, dialog, eventName, func )
+			{
+				dialog.on( 'load', function()
+				{
+					uiElement.getInputElement().on( eventName, func, uiElement );
+				});
+			};
+
+			for ( var i in definition )
+			{
+				if ( !( match = i.match( regex ) ) )
+					continue;
+				if ( this.eventProcessors[i] )
+					this.eventProcessors[i].call( this, this._.dialog, definition[i] );
+				else
+					registerDomEvent( this, this._.dialog, match[1].toLowerCase(), definition[i] );
+			}
+
+			return this;
+		},
+
+		/**
+		 * The event processor list used by
+		 * {@link CKEDITOR.ui.dialog.uiElement#getInputElement} at UI element
+		 * instantiation. The default list defines three on* events:
+		 * <ol>
+		 *  <li>onLoad - Called when the element's parent dialog opens for the
+		 *  first time</li>
+		 *  <li>onShow - Called whenever the element's parent dialog opens.</li>
+		 *  <li>onHide - Called whenever the element's parent dialog closes.</li>
+		 * </ol>
+		 * @field
+		 * @type Object
+		 * @example
+		 * // This connects the 'click' event in CKEDITOR.ui.dialog.button to onClick
+		 * // handlers in the UI element's definitions.
+		 * CKEDITOR.ui.dialog.button.eventProcessors = CKEDITOR.tools.extend( {},
+		 * &nbsp;&nbsp;CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,
+		 * &nbsp;&nbsp;{ onClick : function( dialog, func ) { this.on( 'click', func ); } },
+		 * &nbsp;&nbsp;true );
+		 */
+		eventProcessors :
+		{
+			onLoad : function( dialog, func )
+			{
+				dialog.on( 'load', func, this );
+			},
+
+			onShow : function( dialog, func )
+			{
+				dialog.on( 'show', func, this );
+			},
+
+			onHide : function( dialog, func )
+			{
+				dialog.on( 'hide', func, this );
+			}
+		},
+
+		/**
+		 * The default handler for a UI element's access key down event, which
+		 * tries to put focus to the UI element.<br />
+		 * Can be overridded in child classes for more sophisticaed behavior.
+		 * @param {CKEDITOR.dialog} dialog The parent dialog object.
+		 * @param {String} key The key combination pressed. Since access keys
+		 * are defined to always include the CTRL key, its value should always
+		 * include a 'CTRL+' prefix.
+		 * @example
+		 */
+		accessKeyDown : function( dialog, key )
+		{
+			this.focus();
+		},
+
+		/**
+		 * The default handler for a UI element's access key up event, which
+		 * does nothing.<br />
+		 * Can be overridded in child classes for more sophisticated behavior.
+		 * @param {CKEDITOR.dialog} dialog The parent dialog object.
+		 * @param {String} key The key combination pressed. Since access keys
+		 * are defined to always include the CTRL key, its value should always
+		 * include a 'CTRL+' prefix.
+		 * @example
+		 */
+		accessKeyUp : function( dialog, key )
+		{
+		},
+
+		/**
+		 * Disables a UI element.
+		 * @example
+		 */
+		disable : function()
+		{
+			var element = this.getInputElement();
+			element.setAttribute( 'disabled', 'true' );
+			element.addClass( 'cke_disabled' );
+		},
+
+		/**
+		 * Enables a UI element.
+		 * @example
+		 */
+		enable : function()
+		{
+			var element = this.getInputElement();
+			element.removeAttribute( 'disabled' );
+			element.removeClass( 'cke_disabled' );
+		},
+
+		/**
+		 * Determines whether an UI element is enabled or not.
+		 * @returns {Boolean} Whether the UI element is enabled.
+		 * @example
+		 */
+		isEnabled : function()
+		{
+			return !this.getInputElement().getAttribute( 'disabled' );
+		},
+
+		/**
+		 * Determines whether an UI element is visible or not.
+		 * @returns {Boolean} Whether the UI element is visible.
+		 * @example
+		 */
+		isVisible : function()
+		{
+			return !!this.getInputElement().$.offsetHeight;
+		},
+
+		/**
+		 * Determines whether an UI element is focus-able or not.
+		 * Focus-able is defined as being both visible and enabled.
+		 * @returns {Boolean} Whether the UI element can be focused.
+		 * @example
+		 */
+		isFocusable : function()
+		{
+			if ( !this.isEnabled() || !this.isVisible() )
+				return false;
+			return true;
+		}
+	};
+
+	CKEDITOR.ui.dialog.hbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement,
+		/**
+		 * @lends CKEDITOR.ui.dialog.hbox.prototype
+		 */
+		{
+			/**
+			 * Gets a child UI element inside this container.
+			 * @param {Array|Number} indices An array or a single number to indicate the child's
+			 * position in the container's descendant tree. Omit to get all the children in an array.
+			 * @returns {Array|CKEDITOR.ui.dialog.uiElement} Array of all UI elements in the container
+			 * if no argument given, or the specified UI element if indices is given.
+			 * @example
+			 * var checkbox = hbox.getChild( [0,1] );
+			 * checkbox.setValue( true );
+			 */
+			getChild : function( indices )
+			{
+				// If no arguments, return a clone of the children array.
+				if ( arguments.length < 1 )
+					return this._.children.concat();
+
+				// If indices isn't array, make it one.
+				if ( !indices.splice )
+					indices = [ indices ];
+
+				// Retrieve the child element according to tree position.
+				if ( indices.length < 2 )
+					return this._.children[ indices[0] ];
+				else
+					return ( this._.children[ indices[0] ] && this._.children[ indices[0] ].getChild ) ?
+						this._.children[ indices[0] ].getChild( indices.slice( 1, indices.length ) ) :
+						null;
+			}
+		}, true );
+
+	CKEDITOR.ui.dialog.vbox.prototype = new CKEDITOR.ui.dialog.hbox();
+
+
+
+	(function()
+	{
+		var commonBuilder = {
+			build : function( dialog, elementDefinition, output )
+			{
+				var children = elementDefinition.children,
+					child,
+					childHtmlList = [],
+					childObjList = [];
+				for ( var i = 0 ; ( i < children.length && ( child = children[i] ) ) ; i++ )
+				{
+					var childHtml = [];
+					childHtmlList.push( childHtml );
+					childObjList.push( CKEDITOR.dialog._.uiElementBuilders[ child.type ].build( dialog, child, childHtml ) );
+				}
+				return new CKEDITOR.ui.dialog[elementDefinition.type]( dialog, childObjList, childHtmlList, output, elementDefinition );
+			}
+		};
+
+		CKEDITOR.dialog.addUIElement( 'hbox', commonBuilder );
+		CKEDITOR.dialog.addUIElement( 'vbox', commonBuilder );
+	})();
+
+	/**
+	 * Generic dialog command. It opens a specific dialog when executed.
+	 * @constructor
+	 * @augments CKEDITOR.commandDefinition
+	 * @param {string} dialogName The name of the dialog to open when executing
+	 *		this command.
+	 * @example
+	 * // Register the "link" command, which opens the "link" dialog.
+	 * editor.addCommand( 'link', <b>new CKEDITOR.dialogCommand( 'link' )</b> );
+	 */
+	CKEDITOR.dialogCommand = function( dialogName )
+	{
+		this.dialogName = dialogName;
+	};
+
+	CKEDITOR.dialogCommand.prototype =
+	{
+		/** @ignore */
+		exec : function( editor )
+		{
+			editor.openDialog( this.dialogName );
+		},
+		// Dialog commands just open a dialog ui, thus require no undo logic,
+		// undo support should dedicate to specific dialog implementation.
+		canUndo: false
+	};
+
+	(function()
+	{
+		var notEmptyRegex = /^([a]|[^a])+$/,
+			integerRegex = /^\d*$/,
+			numberRegex = /^\d*(?:\.\d+)?$/;
+
+		CKEDITOR.VALIDATE_OR = 1;
+		CKEDITOR.VALIDATE_AND = 2;
+
+		CKEDITOR.dialog.validate =
+		{
+			functions : function()
+			{
+				return function()
+				{
+					/**
+					 * It's important for validate functions to be able to accept the value
+					 * as argument in addition to this.getValue(), so that it is possible to
+					 * combine validate functions together to make more sophisticated
+					 * validators.
+					 */
+					var value = this && this.getValue ? this.getValue() : arguments[0];
+
+					var msg = undefined,
+						relation = CKEDITOR.VALIDATE_AND,
+						functions = [], i;
+
+					for ( i = 0 ; i < arguments.length ; i++ )
+					{
+						if ( typeof( arguments[i] ) == 'function' )
+							functions.push( arguments[i] );
+						else
+							break;
+					}
+
+					if ( i < arguments.length && typeof( arguments[i] ) == 'string' )
+					{
+						msg = arguments[i];
+						i++;
+					}
+
+					if ( i < arguments.length && typeof( arguments[i]) == 'number' )
+						relation = arguments[i];
+
+					var passed = ( relation == CKEDITOR.VALIDATE_AND ? true : false );
+					for ( i = 0 ; i < functions.length ; i++ )
+					{
+						if ( relation == CKEDITOR.VALIDATE_AND )
+							passed = passed && functions[i]( value );
+						else
+							passed = passed || functions[i]( value );
+					}
+
+					if ( !passed )
+					{
+						if ( msg !== undefined )
+							alert( msg );
+						if ( this && ( this.select || this.focus ) )
+							( this.select || this.focus )();
+						return false;
+					}
+
+					return true;
+				};
+			},
+
+			regex : function( regex, msg )
+			{
+				/*
+				 * Can be greatly shortened by deriving from functions validator if code size
+				 * turns out to be more important than performance.
+				 */
+				return function()
+				{
+					var value = this && this.getValue ? this.getValue() : arguments[0];
+					if ( !regex.test( value ) )
+					{
+						if ( msg !== undefined )
+							alert( msg );
+						if ( this && ( this.select || this.focus ) )
+						{
+							if ( this.select )
+								this.select();
+							else
+								this.focus();
+						}
+						return false;
+					}
+					return true;
+				};
+			},
+
+			notEmpty : function( msg )
+			{
+				return this.regex( notEmptyRegex, msg );
+			},
+
+			integer : function( msg )
+			{
+				return this.regex( integerRegex, msg );
+			},
+
+			'number' : function( msg )
+			{
+				return this.regex( numberRegex, msg );
+			},
+
+			equals : function( value, msg )
+			{
+				return this.functions( function( val ){ return val == value; }, msg );
+			},
+
+			notEqual : function( value, msg )
+			{
+				return this.functions( function( val ){ return val != value; }, msg );
+			}
+		};
+	})();
+
+	// Grab the margin data from skin definition and store it away.
+	CKEDITOR.skins.add = ( function()
+	{
+		var original = CKEDITOR.skins.add;
+		return function( skinName, skinDefinition )
+		{
+			skinData[ skinName ] = { margins : skinDefinition.margins };
+			return original.apply( this, arguments );
+		};
+	} )();
+})();
+
+// Extend the CKEDITOR.editor class with dialog specific functions.
+CKEDITOR.tools.extend( CKEDITOR.editor.prototype,
+	/** @lends CKEDITOR.editor.prototype */
+	{
+		/**
+		 * Loads and opens a registered dialog.
+		 * @param {String} dialogName The registered name of the dialog.
+		 * @see CKEDITOR.dialog.add
+		 * @example
+		 * CKEDITOR.instances.editor1.openDialog( 'smiley' );
+		 * @returns {CKEDITOR.dialog} The dialog object corresponding to the dialog displayed. null if the dialog name is not registered.
+		 */
+		openDialog : function( dialogName )
+		{
+			var dialogDefinitions = CKEDITOR.dialog._.dialogDefinitions[ dialogName ];
+
+			// If the dialogDefinition is already loaded, open it immediately.
+			if ( typeof dialogDefinitions == 'function' )
+			{
+				var storedDialogs = this._.storedDialogs ||
+					( this._.storedDialogs = {} );
+
+				var dialog = storedDialogs[ dialogName ] ||
+					( storedDialogs[ dialogName ] = new CKEDITOR.dialog( this, dialogName ) );
+
+				dialog.show();
+
+				return dialog;
+			}
+			else if ( dialogDefinitions == 'failed' )
+				throw new Error( '[CKEDITOR.dialog.openDialog] Dialog "' + dialogName + '" failed when loading definition.' );
+
+			// Not loaded? Load the .js file first.
+			var body = CKEDITOR.document.getBody(),
+				cursor = body.$.style.cursor,
+				me = this;
+
+			body.setStyle( 'cursor', 'wait' );
+			CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( dialogDefinitions ), function()
+				{
+					// In case of plugin error, mark it as loading failed.
+					if ( typeof CKEDITOR.dialog._.dialogDefinitions[ dialogName ] != 'function' )
+							CKEDITOR.dialog._.dialogDefinitions[ dialogName ] =  'failed';
+					me.openDialog( dialogName );
+					body.setStyle( 'cursor', cursor );
+				} );
+
+			return null;
+		}
+	});
+
+// Dialog related configurations.
+
+/**
+ * The color of the dialog background cover. It should be a valid CSS color
+ * string.
+ * @name CKEDITOR.config.dialog_backgroundCoverColor
+ * @type String
+ * @default 'white'
+ * @example
+ * config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)';
+ */
+
+/**
+ * The opacity of the dialog background cover. It should be a number within the
+ * range [0.0, 1.0].
+ * @name CKEDITOR.config.dialog_backgroundCoverOpacity
+ * @type Number
+ * @default 0.5
+ * @example
+ * config.dialog_backgroundCoverOpacity = 0.7;
+ */
+
+/**
+ * The distance of magnetic borders used in moving and resizing dialogs,
+ * measured in pixels.
+ * @name CKEDITOR.config.dialog_magnetDistance
+ * @type Number
+ * @default 20
+ * @example
+ * config.dialog_magnetDistance = 30;
+ */
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/stylescombo/styles/default.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/stylescombo/styles/default.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/stylescombo/styles/default.js	(revision 2000)
@@ -0,0 +1,85 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.addStylesSet( 'default',
+[
+	/* Block Styles */
+
+	// These styles are already available in the "Format" combo, so they are
+	// not needed here by default. You may enable them to avoid placing the
+	// "Format" combo in the toolbar, maintaining the same features.
+	/*
+	{ name : 'Paragraph'		, element : 'p' },
+	{ name : 'Heading 1'		, element : 'h1' },
+	{ name : 'Heading 2'		, element : 'h2' },
+	{ name : 'Heading 3'		, element : 'h3' },
+	{ name : 'Heading 4'		, element : 'h4' },
+	{ name : 'Heading 5'		, element : 'h5' },
+	{ name : 'Heading 6'		, element : 'h6' },
+	{ name : 'Preformatted Text', element : 'pre' },
+	{ name : 'Address'			, element : 'address' },
+	*/
+
+	{ name : 'Blue Title'		, element : 'h3', styles : { 'color' : 'Blue' } },
+	{ name : 'Red Title'		, element : 'h3', styles : { 'color' : 'Red' } },
+
+	/* Inline Styles */
+
+	// These are core styles available as toolbar buttons. You may opt enabling
+	// some of them in the Styles combo, removing them from the toolbar.
+	/*
+	{ name : 'Strong'			, element : 'strong', overrides : 'b' },
+	{ name : 'Emphasis'			, element : 'em'	, overrides : 'i' },
+	{ name : 'Underline'		, element : 'u' },
+	{ name : 'Strikethrough'	, element : 'strike' },
+	{ name : 'Subscript'		, element : 'sub' },
+	{ name : 'Superscript'		, element : 'sup' },
+	*/
+
+	{ name : 'Marker: Yellow'	, element : 'span', styles : { 'background-color' : 'Yellow' } },
+	{ name : 'Marker: Green'	, element : 'span', styles : { 'background-color' : 'Lime' } },
+
+	{ name : 'Big'				, element : 'big' },
+	{ name : 'Small'			, element : 'small' },
+	{ name : 'Typewriter'		, element : 'tt' },
+
+	{ name : 'Computer Code'	, element : 'code' },
+	{ name : 'Keyboard Phrase'	, element : 'kbd' },
+	{ name : 'Sample Text'		, element : 'samp' },
+	{ name : 'Variable'			, element : 'var' },
+
+	{ name : 'Deleted Text'		, element : 'del' },
+	{ name : 'Inserted Text'	, element : 'ins' },
+
+	{ name : 'Cited Work'		, element : 'cite' },
+	{ name : 'Inline Quotation'	, element : 'q' },
+
+	{ name : 'Language: RTL'	, element : 'span', attributes : { 'dir' : 'rtl' } },
+	{ name : 'Language: LTR'	, element : 'span', attributes : { 'dir' : 'ltr' } },
+
+	/* Object Styles */
+
+	{
+		name : 'Image on Left',
+		element : 'img',
+		attributes :
+		{
+			'style' : 'padding: 5px; margin-right: 5px',
+			'border' : '2',
+			'align' : 'left'
+		}
+	},
+
+	{
+		name : 'Image on Right',
+		element : 'img',
+		attributes :
+		{
+			'style' : 'padding: 5px; margin-left: 5px',
+			'border' : '2',
+			'align' : 'right'
+		}
+	}
+]);
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/stylescombo/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/stylescombo/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/stylescombo/plugin.js	(revision 2000)
@@ -0,0 +1,298 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	CKEDITOR.plugins.add( 'stylescombo',
+	{
+		requires : [ 'richcombo', 'styles' ],
+
+		init : function( editor )
+		{
+			var config = editor.config,
+				lang = editor.lang.stylesCombo,
+				pluginPath = this.path,
+				styles;
+
+			editor.ui.addRichCombo( 'Styles',
+				{
+					label : lang.label,
+					title : lang.panelTitle,
+					voiceLabel : lang.voiceLabel,
+					className : 'cke_styles',
+					multiSelect : true,
+
+					panel :
+					{
+						css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ].concat( config.contentsCss ),
+						voiceLabel : lang.panelVoiceLabel
+					},
+
+					init : function()
+					{
+						var combo = this,
+							stylesSet = config.stylesCombo_stylesSet.split( ':' );
+
+						var stylesSetPath = stylesSet[ 1 ] ?
+								stylesSet.slice( 1 ).join( ':' ) :		// #4481
+								CKEDITOR.getUrl( pluginPath + 'styles/' + stylesSet[ 0 ] + '.js' ) ;
+
+						stylesSet = stylesSet[ 0 ];
+
+						CKEDITOR.loadStylesSet( stylesSet, stylesSetPath, function( stylesDefinitions )
+							{
+								var style,
+									styleName,
+									stylesList = [];
+
+								styles = {};
+
+								// Put all styles into an Array.
+								for ( var i = 0 ; i < stylesDefinitions.length ; i++ )
+								{
+									var styleDefinition = stylesDefinitions[ i ];
+
+									styleName = styleDefinition.name;
+
+									style = styles[ styleName ] = new CKEDITOR.style( styleDefinition );
+									style._name = styleName;
+
+									stylesList.push( style );
+								}
+
+								// Sorts the Array, so the styles get grouped
+								// by type.
+								stylesList.sort( sortStyles );
+
+								// Loop over the Array, adding all items to the
+								// combo.
+								var lastType;
+								for ( i = 0 ; i < stylesList.length ; i++ )
+								{
+									style = stylesList[ i ];
+									styleName = style._name;
+
+									var type = style.type;
+
+									if ( type != lastType )
+									{
+										combo.startGroup( lang[ 'panelTitle' + String( type ) ] );
+										lastType = type;
+									}
+
+									combo.add(
+										styleName,
+										style.type == CKEDITOR.STYLE_OBJECT ? styleName : buildPreview( style._.definition ),
+										styleName );
+								}
+
+								combo.commit();
+
+								combo.onOpen();
+							});
+					},
+
+					onClick : function( value )
+					{
+						editor.focus();
+						editor.fire( 'saveSnapshot' );
+
+						var style = styles[ value ],
+							selection = editor.getSelection();
+
+						if ( style.type == CKEDITOR.STYLE_OBJECT )
+						{
+							var element = selection.getSelectedElement();
+							if ( element )
+								style.applyToObject( element );
+
+							return;
+						}
+
+						var elementPath = new CKEDITOR.dom.elementPath( selection.getStartElement() );
+
+						if ( style.type == CKEDITOR.STYLE_INLINE && style.checkActive( elementPath ) )
+							style.remove( editor.document );
+						else
+							style.apply( editor.document );
+
+						editor.fire( 'saveSnapshot' );
+					},
+
+					onRender : function()
+					{
+						editor.on( 'selectionChange', function( ev )
+							{
+								var currentValue = this.getValue();
+
+								var elementPath = ev.data.path,
+									elements = elementPath.elements;
+
+								// For each element into the elements path.
+								for ( var i = 0, element ; i < elements.length ; i++ )
+								{
+									element = elements[i];
+
+									// Check if the element is removable by any of
+									// the styles.
+									for ( var value in styles )
+									{
+										if ( styles[ value ].checkElementRemovable( element, true ) )
+										{
+											if ( value != currentValue )
+												this.setValue( value );
+											return;
+										}
+									}
+								}
+
+								// If no styles match, just empty it.
+								this.setValue( '' );
+							},
+							this);
+					},
+
+					onOpen : function()
+					{
+						if ( CKEDITOR.env.ie )
+							editor.focus();
+
+						var selection = editor.getSelection();
+
+						var element = selection.getSelectedElement(),
+							elementName = element && element.getName(),
+							elementPath = new CKEDITOR.dom.elementPath( element || selection.getStartElement() );
+
+						var counter = [ 0, 0, 0, 0 ];
+						this.showAll();
+						this.unmarkAll();
+						for ( var name in styles )
+						{
+							var style = styles[ name ],
+								type = style.type;
+
+							if ( type == CKEDITOR.STYLE_OBJECT )
+							{
+								if ( element && style.element == elementName )
+								{
+									if ( style.checkElementRemovable( element, true ) )
+										this.mark( name );
+
+									counter[ type ]++;
+								}
+								else
+									this.hideItem( name );
+							}
+							else
+							{
+								if ( style.checkActive( elementPath ) )
+									this.mark( name );
+
+								counter[ type ]++;
+							}
+						}
+
+						if ( !counter[ CKEDITOR.STYLE_BLOCK ] )
+							this.hideGroup( lang[ 'panelTitle' + String( CKEDITOR.STYLE_BLOCK ) ] );
+
+						if ( !counter[ CKEDITOR.STYLE_INLINE ] )
+							this.hideGroup( lang[ 'panelTitle' + String( CKEDITOR.STYLE_INLINE ) ] );
+
+						if ( !counter[ CKEDITOR.STYLE_OBJECT ] )
+							this.hideGroup( lang[ 'panelTitle' + String( CKEDITOR.STYLE_OBJECT ) ] );
+					}
+				});
+		}
+	});
+
+	var stylesSets = {};
+
+	CKEDITOR.addStylesSet = function( name, styles )
+	{
+		stylesSets[ name ] = styles;
+	};
+
+	CKEDITOR.loadStylesSet = function( name, url, callback )
+	{
+		var stylesSet = stylesSets[ name ];
+
+		if ( stylesSet )
+		{
+			callback( stylesSet );
+			return ;
+		}
+
+		CKEDITOR.scriptLoader.load( url, function()
+			{
+				callback( stylesSets[ name ] );
+			});
+	};
+
+	function buildPreview( styleDefinition )
+	{
+		var html = [];
+
+		var elementName = styleDefinition.element;
+
+		// Avoid <bdo> in the preview.
+		if ( elementName == 'bdo' )
+			elementName = 'span';
+
+		html = [ '<', elementName ];
+
+		// Assign all defined attributes.
+		var attribs	= styleDefinition.attributes;
+		if ( attribs )
+		{
+			for ( var att in attribs )
+			{
+				html.push( ' ', att, '="', attribs[ att ], '"' );
+			}
+		}
+
+		// Assign the style attribute.
+		var cssStyle = CKEDITOR.style.getStyleText( styleDefinition );
+		if ( cssStyle )
+			html.push( ' style="', cssStyle, '"' );
+
+		html.push( '>', styleDefinition.name, '</', elementName, '>' );
+
+		return html.join( '' );
+	}
+
+	function sortStyles( styleA, styleB )
+	{
+		var typeA = styleA.type,
+			typeB = styleB.type;
+
+		return typeA == typeB ? 0 :
+			typeA == CKEDITOR.STYLE_OBJECT ? -1 :
+			typeB == CKEDITOR.STYLE_OBJECT ? 1 :
+			typeB == CKEDITOR.STYLE_BLOCK ? 1 :
+			-1;
+	}
+})();
+
+/**
+ * The "styles definition set" to load into the styles combo. The styles may
+ * be defined in the page containing the editor, or can be loaded on demand
+ * from an external file when opening the styles combo for the fist time. In
+ * the second case, if this setting contains only a name, the styles definition
+ * file will be loaded from the "styles" folder inside the stylescombo plugin
+ * folder. Otherwise, this setting has the "name:url" syntax, making it
+ * possible to set the URL from which loading the styles file.
+ * @type string
+ * @default 'default'
+ * @example
+ * // Load from the stylescombo styles folder (mystyles.js file).
+ * config.stylesCombo_stylesSet = 'mystyles';
+ * @example
+ * // Load from a relative URL.
+ * config.stylesCombo_stylesSet = 'mystyles:/editorstyles/styles.js';
+ * @example
+ * // Load from a full URL.
+ * config.stylesCombo_stylesSet = 'mystyles:http://www.example.com/editorstyles/styles.js';
+ */
+CKEDITOR.config.stylesCombo_stylesSet = 'default';
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/about/dialogs/about.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/about/dialogs/about.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/about/dialogs/about.js	(revision 2000)
@@ -0,0 +1,73 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'about', function( editor )
+{
+	var lang = editor.lang.about;
+
+	return {
+		title : CKEDITOR.env.ie ? lang.dlgTitle : lang.title,
+		minWidth : 390,
+		minHeight : 230,
+		contents : [
+			{
+				id : 'tab1',
+				label : '',
+				title : '',
+				expand : true,
+				padding : 0,
+				elements :
+				[
+					{
+						type : 'html',
+						html :
+							'<style type="text/css">' +
+								'.cke_about_container' +
+								'{' +
+									'color:#000 !important;' +
+									'padding:10px 10px 0;' +
+									'margin-top:5px' +
+								'}' +
+								'.cke_about_container p' +
+								'{' +
+									'margin: 0 0 10px;' +
+								'}' +
+								'.cke_about_container .cke_about_logo' +
+								'{' +
+									'height:81px;' +
+									'background-color:#fff;' +
+									'background-image:url(' + CKEDITOR.plugins.get( 'about' ).path + 'dialogs/logo_ckeditor.png);' +
+									'background-position:center; ' +
+									'background-repeat:no-repeat;' +
+									'margin-bottom:10px;' +
+								'}' +
+								'.cke_about_container a' +
+								'{' +
+									'cursor:pointer !important;' +
+									'color:blue !important;' +
+									'text-decoration:underline !important;' +
+								'}' +
+							'</style>' +
+							'<div class="cke_about_container">' +
+								'<div class="cke_about_logo"></div>' +
+								'<p>' +
+									'CKEditor ' + CKEDITOR.version + ' (revision ' + CKEDITOR.revision + ')<br>' +
+									'<a href="http://ckeditor.com/">http://ckeditor.com</a>' +
+								'</p>' +
+								'<p>' +
+									lang.moreInfo + '<br>' +
+									'<a href="http://ckeditor.com/license">http://ckeditor.com/license</a>' +
+								'</p>' +
+								'<p>' +
+									lang.copy.replace( '$1', '<a href="http://cksource.com/">CKSource</a> - Frederico Knabben' ) +
+								'</p>' +
+							'</div>'
+					}
+				]
+			}
+		],
+		buttons : [ CKEDITOR.dialog.cancelButton ]
+	};
+} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/about/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/about/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/about/plugin.js	(revision 2000)
@@ -0,0 +1,22 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'about',
+{
+	init : function( editor )
+	{
+		var command = editor.addCommand( 'about', new CKEDITOR.dialogCommand( 'about' ) );
+		command.modes = { wysiwyg:1, source:1 };
+		command.canUndo = false;
+
+		editor.ui.addButton( 'About',
+			{
+				label : editor.lang.about.title,
+				command : 'about'
+			});
+
+		CKEDITOR.dialog.add( 'about', this.path + 'dialogs/about.js' );
+	}
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/button/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/button/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/button/plugin.js	(revision 2000)
@@ -0,0 +1,264 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'button',
+{
+	beforeInit : function( editor )
+	{
+		editor.ui.addHandler( CKEDITOR.UI_BUTTON, CKEDITOR.ui.button.handler );
+	}
+});
+
+/**
+ * Button UI element.
+ * @constant
+ * @example
+ */
+CKEDITOR.UI_BUTTON = 1;
+
+/**
+ * Represents a button UI element. This class should not be called directly. To
+ * create new buttons use {@link CKEDITOR.ui.prototype.addButton} instead.
+ * @constructor
+ * @param {Object} definition The button definition.
+ * @example
+ */
+CKEDITOR.ui.button = function( definition )
+{
+	// Copy all definition properties to this object.
+	CKEDITOR.tools.extend( this, definition,
+		// Set defaults.
+		{
+			title		: definition.label,
+			className	: definition.className || ( definition.command && 'cke_button_' + definition.command ) || '',
+			click		: definition.click || function( editor )
+				{
+					editor.execCommand( definition.command );
+				}
+		});
+
+	this._ = {};
+};
+
+/**
+ * Transforms a button definition in a {@link CKEDITOR.ui.button} instance.
+ * @type Object
+ * @example
+ */
+CKEDITOR.ui.button.handler =
+{
+	create : function( definition )
+	{
+		return new CKEDITOR.ui.button( definition );
+	}
+};
+
+CKEDITOR.ui.button.prototype =
+{
+	canGroup : true,
+
+	/**
+	 * Renders the button.
+	 * @param {CKEDITOR.editor} editor The editor instance which this button is
+	 *		to be used by.
+	 * @param {Array} output The output array to which append the HTML relative
+	 *		to this button.
+	 * @example
+	 */
+	render : function( editor, output )
+	{
+		var env = CKEDITOR.env;
+
+		var id = this._.id = 'cke_' + CKEDITOR.tools.getNextNumber();
+		this._.editor = editor;
+
+		var instance =
+		{
+			id : id,
+			button : this,
+			editor : editor,
+			focus : function()
+			{
+				var element = CKEDITOR.document.getById( id );
+				element.focus();
+			},
+			execute : function()
+			{
+				this.button.click( editor );
+			}
+		};
+
+		var clickFn = CKEDITOR.tools.addFunction( instance.execute, instance );
+
+		var index = CKEDITOR.ui.button._.instances.push( instance ) - 1;
+
+		var classes = '';
+
+		// Get the command name.
+		var command = this.command;
+
+		if ( this.modes )
+		{
+			editor.on( 'mode', function()
+				{
+					this.setState( this.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
+				}, this);
+		}
+		else if ( command )
+		{
+			// Get the command instance.
+			command = editor.getCommand( command );
+
+			if ( command )
+			{
+				command.on( 'state', function()
+					{
+						this.setState( command.state );
+					}, this);
+
+				classes += 'cke_' + (
+					command.state == CKEDITOR.TRISTATE_ON ? 'on' :
+					command.state == CKEDITOR.TRISTATE_DISABLED ? 'disabled' :
+					'off' );
+			}
+		}
+
+		if ( !command )
+			classes	+= 'cke_off';
+
+		if ( this.className )
+			classes += ' ' + this.className;
+
+		output.push(
+			'<span class="cke_button">',
+			'<a id="', id, '"' +
+				' class="', classes, '" href="javascript:void(\'', ( this.title || '' ).replace( "'", '' ), '\')"' +
+				' title="', this.title, '"' +
+				' tabindex="-1"' +
+				' hidefocus="true"' );
+
+		// Some browsers don't cancel key events in the keydown but in the
+		// keypress.
+		// TODO: Check if really needed for Gecko+Mac.
+		if ( env.opera || ( env.gecko && env.mac ) )
+		{
+			output.push(
+				' onkeypress="return false;"' );
+		}
+
+		// With Firefox, we need to force the button to redraw, otherwise it
+		// will remain in the focus state.
+		if ( env.gecko )
+		{
+			output.push(
+				' onblur="this.style.cssText = this.style.cssText;"' );
+		}
+
+		output.push(
+				' onkeydown="return CKEDITOR.ui.button._.keydown(', index, ', event);"' +
+				' onfocus="return CKEDITOR.ui.button._.focus(', index, ', event);"' +
+				' onclick="CKEDITOR.tools.callFunction(', clickFn, ', this); return false;">' +
+					'<span class="cke_icon"' );
+
+		if ( this.icon )
+		{
+			var offset = ( this.iconOffset || 0 ) * -16;
+			output.push( ' style="background-image:url(', CKEDITOR.getUrl( this.icon ), ');background-position:0 ' + offset + 'px;"' );
+		}
+
+		output.push(
+					'></span>' +
+					'<span class="cke_label">', this.label, '</span>' );
+
+		if ( this.hasArrow )
+		{
+			output.push(
+					'<span class="cke_buttonarrow"></span>' );
+		}
+
+		output.push(
+			'</a>',
+			'</span>' );
+
+		if ( this.onRender )
+			this.onRender();
+
+		return instance;
+	},
+
+	setState : function( state )
+	{
+		if ( this._.state == state )
+			return;
+
+		var element = CKEDITOR.document.getById( this._.id );
+
+		if ( element )
+		{
+			element.setState( state );
+
+			var htmlTitle = this.title,
+				unavailable = this._.editor.lang.common.unavailable,
+				labelElement = element.getChild( 1 );
+
+			if ( state == CKEDITOR.TRISTATE_DISABLED )
+				htmlTitle = unavailable.replace( '%1', this.title );
+
+			labelElement.setHtml( htmlTitle );
+		}
+
+		this._.state = state;
+	}
+};
+
+/**
+ * Handles a button click.
+ * @private
+ */
+CKEDITOR.ui.button._ =
+{
+	instances : [],
+
+	keydown : function( index, ev )
+	{
+		var instance = CKEDITOR.ui.button._.instances[ index ];
+
+		if ( instance.onkey )
+		{
+			ev = new CKEDITOR.dom.event( ev );
+			return ( instance.onkey( instance, ev.getKeystroke() ) !== false );
+		}
+	},
+
+	focus : function( index, ev )
+	{
+		var instance = CKEDITOR.ui.button._.instances[ index ],
+			retVal;
+
+		if ( instance.onfocus )
+			retVal = ( instance.onfocus( instance, new CKEDITOR.dom.event( ev ) ) !== false );
+
+		// FF2: prevent focus event been bubbled up to editor container, which caused unexpected editor focus.
+		if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 )
+			ev.preventBubble();
+		return retVal;
+	}
+};
+
+/**
+ * Adds a button definition to the UI elements list.
+ * @param {String} The button name.
+ * @param {Object} The button definition.
+ * @example
+ * editorInstance.ui.addButton( 'MyBold',
+ *     {
+ *         label : 'My Bold',
+ *         command : 'bold'
+ *     });
+ */
+CKEDITOR.ui.prototype.addButton = function( name, definition )
+{
+	this.add( name, CKEDITOR.UI_BUTTON, definition );
+};
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/pastetext/dialogs/pastetext.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/pastetext/dialogs/pastetext.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/pastetext/dialogs/pastetext.js	(revision 2000)
@@ -0,0 +1,65 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	CKEDITOR.dialog.add( 'pastetext', function( editor )
+		{
+			return {
+				title : editor.lang.pasteText.title,
+
+				minWidth : CKEDITOR.env.ie && CKEDITOR.env.quirks ? 368 : 350,
+				minHeight : 240,
+
+				onShow : function()
+				{
+					// Reset the textarea value.
+					this.getContentElement( 'general', 'content' ).getInputElement().setValue( '' );
+				},
+
+				onOk : function()
+				{
+					// Get the textarea value.
+					var text = this.getContentElement( 'general', 'content' ).getInputElement().getValue();
+
+					// Inserts the text.
+					this.getParentEditor().insertText( text );
+				},
+
+				contents :
+				[
+					{
+						label : editor.lang.common.generalTab,
+						id : 'general',
+						elements :
+						[
+							{
+								type : 'html',
+								id : 'pasteMsg',
+								html : '<div style="white-space:normal;width:340px;">' + editor.lang.clipboard.pasteMsg + '</div>'
+							},
+							{
+								type : 'html',
+								id : 'content',
+								style : 'width:340px;height:170px',
+								html :
+									'<textarea style="' +
+										'width:346px;' +
+										'height:170px;' +
+										'resize: none;' +
+										'border:1px solid black;' +
+										'background-color:white">' +
+									'</textarea>',
+								focus : function()
+								{
+									this.getElement().focus();
+								}
+							}
+						]
+					}
+				]
+			};
+		});
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/pastetext/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/pastetext/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/pastetext/plugin.js	(revision 2000)
@@ -0,0 +1,142 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Paste as plain text plugin
+ */
+
+(function()
+{
+	// The pastetext command definition.
+	var pasteTextCmd =
+	{
+		exec : function( editor )
+		{
+			// We use getClipboardData just to test if the clipboard access has
+			// been granted by the user.
+			if ( CKEDITOR.getClipboardData() === false || !window.clipboardData )
+			{
+				editor.openDialog( 'pastetext' );
+				return;
+			}
+
+			editor.insertText( window.clipboardData.getData( 'Text' ) );
+		}
+	};
+
+	// Register the plugin.
+	CKEDITOR.plugins.add( 'pastetext',
+	{
+		init : function( editor )
+		{
+			var commandName = 'pastetext',
+				command = editor.addCommand( commandName, pasteTextCmd );
+
+			editor.ui.addButton( 'PasteText',
+				{
+					label : editor.lang.pasteText.button,
+					command : commandName
+				});
+
+			CKEDITOR.dialog.add( commandName, CKEDITOR.getUrl( this.path + 'dialogs/pastetext.js' ) );
+
+			if ( editor.config.forcePasteAsPlainText )
+			{
+				editor.on( 'beforePaste', function( event )
+					{
+						if ( editor.mode == "wysiwyg" )
+						{
+							setTimeout( function() { command.exec(); }, 0 );
+							event.cancel();
+						}
+					},
+					null, null, 20 );
+			}
+		},
+		requires : [ 'clipboard' ]
+	});
+
+	var clipboardDiv;
+
+	CKEDITOR.getClipboardData = function()
+	{
+		if ( !CKEDITOR.env.ie )
+			return false;
+
+		var doc = CKEDITOR.document,
+			body = doc.getBody();
+
+		if ( !clipboardDiv )
+		{
+			clipboardDiv = doc.createElement( 'div',
+				{
+					attributes :
+						{
+							id: 'cke_hiddenDiv'
+						},
+					styles :
+						{
+							position : 'absolute',
+							visibility : 'hidden',
+							overflow : 'hidden',
+							width : '1px',
+							height : '1px'
+						}
+				});
+
+			clipboardDiv.setHtml( '' );
+
+			clipboardDiv.appendTo( body );
+		}
+
+		// The "enabled" flag is used to check whether the paste operation has
+		// been completed (the onpaste event has been fired).
+		var	enabled = false;
+		var setEnabled = function()
+		{
+			enabled = true;
+		};
+
+		body.on( 'paste', setEnabled );
+
+		// Create a text range and move it inside the div.
+		var textRange = body.$.createTextRange();
+		textRange.moveToElementText( clipboardDiv.$ );
+
+		// The execCommand in will fire the "onpaste", only if the
+		// security settings are enabled.
+		textRange.execCommand( 'Paste' );
+
+		// Get the DIV html and reset it.
+		var html = clipboardDiv.getHtml();
+		clipboardDiv.setHtml( '' );
+
+		body.removeListener( 'paste', setEnabled );
+
+		// Return the HTML or false if not enabled.
+		return enabled && html;
+	};
+})();
+
+CKEDITOR.editor.prototype.insertText = function( text )
+{
+	text = CKEDITOR.tools.htmlEncode( text );
+
+	// TODO: Replace the following with fill line break processing (see V2).
+	text = text.replace( /(?:\r\n)|\n|\r/g, '<br>' );
+
+	this.insertHtml( text );
+};
+
+/**
+ * Whether to force all pasting operations to insert on plain text into the
+ * editor, loosing any formatting information possibly available in the source
+ * text.
+ * @type Boolean
+ * @default false
+ * @example
+ * config.forcePasteAsPlainText = true;
+ */
+CKEDITOR.config.forcePasteAsPlainText = false;
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/basicstyles/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/basicstyles/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/basicstyles/plugin.js	(revision 2000)
@@ -0,0 +1,50 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'basicstyles',
+{
+	requires : [ 'styles', 'button' ],
+
+	init : function( editor )
+	{
+		// All buttons use the same code to register. So, to avoid
+		// duplications, let's use this tool function.
+		var addButtonCommand = function( buttonName, buttonLabel, commandName, styleDefiniton )
+		{
+			var style = new CKEDITOR.style( styleDefiniton );
+
+			editor.attachStyleStateChange( style, function( state )
+				{
+					editor.getCommand( commandName ).setState( state );
+				});
+
+			editor.addCommand( commandName, new CKEDITOR.styleCommand( style ) );
+
+			editor.ui.addButton( buttonName,
+				{
+					label : buttonLabel,
+					command : commandName
+				});
+		};
+
+		var config = editor.config;
+		var lang = editor.lang;
+
+		addButtonCommand( 'Bold'		, lang.bold			, 'bold'		, config.coreStyles_bold );
+		addButtonCommand( 'Italic'		, lang.italic		, 'italic'		, config.coreStyles_italic );
+		addButtonCommand( 'Underline'	, lang.underline	, 'underline'	, config.coreStyles_underline );
+		addButtonCommand( 'Strike'		, lang.strike		, 'strike'		, config.coreStyles_strike );
+		addButtonCommand( 'Subscript'	, lang.subscript	, 'subscript'	, config.coreStyles_subscript );
+		addButtonCommand( 'Superscript'	, lang.superscript	, 'superscript'	, config.coreStyles_superscript );
+	}
+});
+
+// Basic Inline Styles.
+CKEDITOR.config.coreStyles_bold			= { element : 'strong', overrides : 'b' };
+CKEDITOR.config.coreStyles_italic		= { element : 'em', overrides : 'i' };
+CKEDITOR.config.coreStyles_underline	= { element : 'u' };
+CKEDITOR.config.coreStyles_strike		= { element : 'strike' };
+CKEDITOR.config.coreStyles_subscript	= { element : 'sub' };
+CKEDITOR.config.coreStyles_superscript	= { element : 'sup' };
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/floatpanel/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/floatpanel/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/floatpanel/plugin.js	(revision 2000)
@@ -0,0 +1,332 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'floatpanel',
+{
+	requires : [ 'panel' ]
+});
+
+(function()
+{
+	var panels = {};
+	var isShowing = false;
+
+	function getPanel( editor, doc, parentElement, definition, level )
+	{
+		// Generates the panel key: docId-eleId-skinName-langDir[-uiColor][-CSSs][-level]
+		var key =
+			doc.getUniqueId() +
+			'-' + parentElement.getUniqueId() +
+			'-' + editor.skinName +
+			'-' + editor.lang.dir +
+			( ( editor.uiColor && ( '-' + editor.uiColor ) ) || '' ) +
+			( ( definition.css && ( '-' + definition.css ) ) || '' ) +
+			( ( level && ( '-' + level ) ) || '' );
+
+		var panel = panels[ key ];
+
+		if ( !panel )
+		{
+			panel = panels[ key ] = new CKEDITOR.ui.panel( doc, definition );
+			panel.element = parentElement.append( CKEDITOR.dom.element.createFromHtml( panel.renderHtml( editor ), doc ) );
+
+			panel.element.setStyles(
+				{
+					display : 'none',
+					position : 'absolute'
+				});
+		}
+
+		return panel;
+	}
+
+	CKEDITOR.ui.floatPanel = CKEDITOR.tools.createClass(
+	{
+		$ : function( editor, parentElement, definition, level )
+		{
+			definition.forceIFrame = true;
+
+			var doc = parentElement.getDocument(),
+				panel = getPanel( editor, doc, parentElement, definition, level || 0 ),
+				element = panel.element,
+				iframe = element.getFirst().getFirst();
+
+			this.element = element;
+
+			// Register panels to editor for easy destroying ( #4241 ).
+			editor.panels ? editor.panels.push( element ) : editor.panels = [ element ];
+
+
+			this._ =
+			{
+				// The panel that will be floating.
+				panel : panel,
+				parentElement : parentElement,
+				definition : definition,
+				document : doc,
+				iframe : iframe,
+				children : [],
+				dir : editor.lang.dir
+			};
+		},
+
+		proto :
+		{
+			addBlock : function( name, block )
+			{
+				return this._.panel.addBlock( name, block );
+			},
+
+			addListBlock : function( name, multiSelect )
+			{
+				return this._.panel.addListBlock( name, multiSelect );
+			},
+
+			getBlock : function( name )
+			{
+				return this._.panel.getBlock( name );
+			},
+
+			/*
+				corner (LTR):
+					1 = top-left
+					2 = top-right
+					3 = bottom-right
+					4 = bottom-left
+
+				corner (RTL):
+					1 = top-right
+					2 = top-left
+					3 = bottom-left
+					4 = bottom-right
+			 */
+			showBlock : function( name, offsetParent, corner, offsetX, offsetY )
+			{
+				var panel = this._.panel,
+					block = panel.showBlock( name );
+
+				this.allowBlur( false );
+				isShowing = true;
+
+				var element = this.element,
+					iframe = this._.iframe,
+					definition = this._.definition,
+					position = offsetParent.getDocumentPosition( element.getDocument() ),
+					rtl = this._.dir == 'rtl';
+
+				var left	= position.x + ( offsetX || 0 ),
+					top		= position.y + ( offsetY || 0 );
+
+				// Floating panels are off by (-1px, 0px) in RTL mode. (#3438)
+				if ( rtl && ( corner == 1 || corner == 4 ) )
+					left += offsetParent.$.offsetWidth;
+				else if ( !rtl && ( corner == 2 || corner == 3 ) )
+					left += offsetParent.$.offsetWidth - 1;
+
+				if ( corner == 3 || corner == 4 )
+					top += offsetParent.$.offsetHeight - 1;
+
+				// Memorize offsetParent by it's ID.
+				this._.panel._.offsetParentId = offsetParent.getId();
+
+				element.setStyles(
+					{
+						top : top + 'px',
+						left : '-3000px',
+						visibility : 'hidden',
+						opacity : '0',	// FF3 is ignoring "visibility"
+						display	: ''
+					});
+
+				// Configure the IFrame blur event. Do that only once.
+				if ( !this._.blurSet )
+				{
+					// Non IE prefer the event into a window object.
+					var focused = CKEDITOR.env.ie ? iframe : new CKEDITOR.dom.window( iframe.$.contentWindow );
+
+					// With addEventListener compatible browsers, we must
+					// useCapture when registering the focus/blur events to
+					// guarantee they will be firing in all situations. (#3068, #3222 )
+					CKEDITOR.event.useCapture = true;
+
+					focused.on( 'blur', function( ev )
+						{
+							if ( CKEDITOR.env.ie && !this.allowBlur() )
+								return;
+
+							// As we are using capture to register the listener,
+							// the blur event may get fired even when focusing
+							// inside the window itself, so we must ensure the
+							// target is out of it.
+							var target = ev.data.getTarget(),
+								targetWindow = target.getWindow && target.getWindow();
+
+							if ( targetWindow && targetWindow.equals( focused ) )
+								return;
+
+							if ( this.visible && !this._.activeChild && !isShowing )
+								this.hide();
+						},
+						this );
+
+					focused.on( 'focus', function()
+						{
+							this._.focused = true;
+							this.hideChild();
+							this.allowBlur( true );
+						},
+						this );
+
+					CKEDITOR.event.useCapture = false;
+
+					this._.blurSet = 1;
+				}
+
+				panel.onEscape = CKEDITOR.tools.bind( function()
+					{
+						this.onEscape && this.onEscape();
+					},
+					this );
+
+				CKEDITOR.tools.setTimeout( function()
+					{
+						if ( rtl )
+							left -= element.$.offsetWidth;
+
+						element.setStyles(
+							{
+								left : left + 'px',
+								visibility	: '',
+								opacity : '1'	// FF3 is ignoring "visibility"
+							});
+
+						if ( block.autoSize )
+						{
+							function setHeight()
+							{
+								var target = element.getFirst();
+								var height = block.element.$.scrollHeight;
+
+								// Account for extra height needed due to IE quirks box model bug:
+								// http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug
+								// (#3426)
+								if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && height > 0 )
+									height += ( target.$.offsetHeight || 0 ) - ( target.$.clientHeight || 0 );
+
+								target.setStyle( 'height', height + 'px' );
+
+								// Fix IE < 8 visibility.
+								panel._.currentBlock.element.setStyle( 'display', 'none' ).removeStyle( 'display' );
+							}
+
+							if ( panel.isLoaded )
+								setHeight();
+							else
+								panel.onLoad = setHeight;
+						}
+						else
+							element.getFirst().removeStyle( 'height' );
+
+						// Set the IFrame focus, so the blur event gets fired.
+						CKEDITOR.tools.setTimeout( function()
+							{
+								if ( definition.voiceLabel )
+								{
+									if ( CKEDITOR.env.gecko )
+									{
+										var container = iframe.getParent();
+										container.setAttribute( 'role', 'region' );
+										container.setAttribute( 'title', definition.voiceLabel );
+										iframe.setAttribute( 'role', 'region' );
+										iframe.setAttribute( 'title', ' ' );
+									}
+								}
+								if ( CKEDITOR.env.ie && CKEDITOR.env.quirks )
+									iframe.focus();
+								else
+									iframe.$.contentWindow.focus();
+
+								// We need this get fired manually because of unfired focus() function.
+								if ( CKEDITOR.env.ie && !CKEDITOR.env.quirks )
+									this.allowBlur( true );
+							}, 0, this);
+					}, 0, this);
+				this.visible = 1;
+
+				if ( this.onShow )
+					this.onShow.call( this );
+
+				isShowing = false;
+			},
+
+			hide : function()
+			{
+				if ( this.visible && ( !this.onHide || this.onHide.call( this ) !== true ) )
+				{
+					this.hideChild();
+					this.element.setStyle( 'display', 'none' );
+					this.visible = 0;
+				}
+			},
+
+			allowBlur : function( allow )	// Prevent editor from hiding the panel. #3222.
+			{
+				var panel = this._.panel;
+				if ( allow != undefined )
+					panel.allowBlur = allow;
+
+				return panel.allowBlur;
+			},
+
+			showAsChild : function( panel, blockName, offsetParent, corner, offsetX, offsetY )
+			{
+				// Skip reshowing of child which is already visible.
+				if ( this._.activeChild == panel && panel._.panel._.offsetParentId == offsetParent.getId() )
+					return;
+
+				this.hideChild();
+
+				panel.onHide = CKEDITOR.tools.bind( function()
+					{
+						// Use a timeout, so we give time for this menu to get
+						// potentially focused.
+						CKEDITOR.tools.setTimeout( function()
+							{
+								if ( !this._.focused )
+									this.hide();
+							},
+							0, this );
+					},
+					this );
+
+				this._.activeChild = panel;
+				this._.focused = false;
+
+				panel.showBlock( blockName, offsetParent, corner, offsetX, offsetY );
+
+				/* #3767 IE: Second level menu may not have borders */
+				if ( CKEDITOR.env.ie7Compat || ( CKEDITOR.env.ie8 && CKEDITOR.env.ie6Compat ) )
+				{
+					setTimeout(function()
+						{
+							panel.element.getChild( 0 ).$.style.cssText += '';
+						}, 100);
+				}
+			},
+
+			hideChild : function()
+			{
+				var activeChild = this._.activeChild;
+
+				if ( activeChild )
+				{
+					delete activeChild.onHide;
+					delete this._.activeChild;
+					activeChild.hide();
+				}
+			}
+		}
+	});
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/domiterator/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/domiterator/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/domiterator/plugin.js	(revision 2000)
@@ -0,0 +1,354 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file DOM iterator, which iterates over list items, lines and paragraphs.
+ */
+
+CKEDITOR.plugins.add( 'domiterator' );
+
+(function()
+{
+
+	var iterator = function( range )
+	{
+		if ( arguments.length < 1 )
+			return;
+
+		this.range = range;
+		this.forceBrBreak = false;
+
+		// Whether include <br>s into the enlarged range.(#3730).
+		this.enlargeBr = true;
+		this.enforceRealBlocks = false;
+
+		this._ || ( this._ = {} );
+	},
+		beginWhitespaceRegex = /^[\r\n\t ]+$/;
+
+
+	iterator.prototype = {
+		getNextParagraph : function( blockTag )
+		{
+			// The block element to be returned.
+			var block;
+
+			// The range object used to identify the paragraph contents.
+			var range;
+
+			// Indicats that the current element in the loop is the last one.
+			var isLast;
+
+			// Instructs to cleanup remaining BRs.
+			var removePreviousBr, removeLastBr;
+
+			// This is the first iteration. Let's initialize it.
+			if ( !this._.lastNode )
+			{
+				range = this.range.clone();
+				range.enlarge( this.forceBrBreak || !this.enlargeBr ?
+							   CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS : CKEDITOR.ENLARGE_BLOCK_CONTENTS );
+
+				var walker = new CKEDITOR.dom.walker( range ),
+					ignoreBookmarkTextEvaluator = CKEDITOR.dom.walker.bookmark( true, true );
+				// Avoid anchor inside bookmark inner text.
+				walker.evaluator = ignoreBookmarkTextEvaluator;
+				this._.nextNode = walker.next();
+				// TODO: It's better to have walker.reset() used here.
+				walker = new CKEDITOR.dom.walker( range );
+				walker.evaluator = ignoreBookmarkTextEvaluator;
+				var lastNode = walker.previous();
+				this._.lastNode = lastNode.getNextSourceNode( true );
+
+				// We may have an empty text node at the end of block due to [3770].
+				// If that node is the lastNode, it would cause our logic to leak to the
+				// next block.(#3887)
+				if ( this._.lastNode &&
+						this._.lastNode.type == CKEDITOR.NODE_TEXT &&
+						!CKEDITOR.tools.trim( this._.lastNode.getText( ) ) &&
+						this._.lastNode.getParent().isBlockBoundary() )
+				{
+					var testRange = new CKEDITOR.dom.range( range.document );
+					testRange.moveToPosition( this._.lastNode, CKEDITOR.POSITION_AFTER_END );
+					if ( testRange.checkEndOfBlock() )
+					{
+						var path = new CKEDITOR.dom.elementPath( testRange.endContainer );
+						var lastBlock = path.block || path.blockLimit;
+						this._.lastNode = lastBlock.getNextSourceNode( true );
+					}
+				}
+
+				// Probably the document end is reached, we need a marker node.
+				if ( !this._.lastNode )
+				{
+					this._.lastNode = this._.docEndMarker = range.document.createText( '' );
+					this._.lastNode.insertAfter( lastNode );
+				}
+
+				// Let's reuse this variable.
+				range = null;
+			}
+
+			var currentNode = this._.nextNode;
+			lastNode = this._.lastNode;
+
+			this._.nextNode = null;
+			while ( currentNode )
+			{
+				// closeRange indicates that a paragraph boundary has been found,
+				// so the range can be closed.
+				var closeRange = false;
+
+				// includeNode indicates that the current node is good to be part
+				// of the range. By default, any non-element node is ok for it.
+				var includeNode = ( currentNode.type != CKEDITOR.NODE_ELEMENT ),
+					continueFromSibling = false;
+
+				// If it is an element node, let's check if it can be part of the
+				// range.
+				if ( !includeNode )
+				{
+					var nodeName = currentNode.getName();
+
+					if ( currentNode.isBlockBoundary( this.forceBrBreak && { br : 1 } ) )
+					{
+						// <br> boundaries must be part of the range. It will
+						// happen only if ForceBrBreak.
+						if ( nodeName == 'br' )
+							includeNode = true;
+						else if ( !range && !currentNode.getChildCount() && nodeName != 'hr' )
+						{
+							// If we have found an empty block, and haven't started
+							// the range yet, it means we must return this block.
+							block = currentNode;
+							isLast = currentNode.equals( lastNode );
+							break;
+						}
+
+						// The range must finish right before the boundary,
+						// including possibly skipped empty spaces. (#1603)
+						if ( range )
+						{
+							range.setEndAt( currentNode, CKEDITOR.POSITION_BEFORE_START );
+
+							// The found boundary must be set as the next one at this
+							// point. (#1717)
+							if ( nodeName != 'br' )
+								this._.nextNode = currentNode;
+						}
+
+						closeRange = true;
+					}
+					else
+					{
+						// If we have child nodes, let's check them.
+						if ( currentNode.getFirst() )
+						{
+							// If we don't have a range yet, let's start it.
+							if ( !range )
+							{
+								range = new CKEDITOR.dom.range( this.range.document );
+								range.setStartAt( currentNode, CKEDITOR.POSITION_BEFORE_START );
+							}
+
+							currentNode = currentNode.getFirst();
+							continue;
+						}
+						includeNode = true;
+					}
+				}
+				else if ( currentNode.type == CKEDITOR.NODE_TEXT )
+				{
+					// Ignore normal whitespaces (i.e. not including &nbsp; or
+					// other unicode whitespaces) before/after a block node.
+					if ( beginWhitespaceRegex.test( currentNode.getText() ) )
+						includeNode = false;
+				}
+
+				// The current node is good to be part of the range and we are
+				// starting a new range, initialize it first.
+				if ( includeNode && !range )
+				{
+					range = new CKEDITOR.dom.range( this.range.document );
+					range.setStartAt( currentNode, CKEDITOR.POSITION_BEFORE_START );
+				}
+
+				// The last node has been found.
+				isLast = ( ( !closeRange || includeNode ) && currentNode.equals( lastNode ) );
+
+				// If we are in an element boundary, let's check if it is time
+				// to close the range, otherwise we include the parent within it.
+				if ( range && !closeRange )
+				{
+					while ( !currentNode.getNext() && !isLast )
+					{
+						var parentNode = currentNode.getParent();
+
+						if ( parentNode.isBlockBoundary( this.forceBrBreak && { br : 1 } ) )
+						{
+							closeRange = true;
+							isLast = isLast || ( parentNode.equals( lastNode) );
+							break;
+						}
+
+						currentNode = parentNode;
+						includeNode = true;
+						isLast = ( currentNode.equals( lastNode ) );
+						continueFromSibling = true;
+					}
+				}
+
+				// Now finally include the node.
+				if ( includeNode )
+					range.setEndAt( currentNode, CKEDITOR.POSITION_AFTER_END );
+
+				currentNode = currentNode.getNextSourceNode( continueFromSibling, null, lastNode );
+				isLast = !currentNode;
+
+				// We have found a block boundary. Let's close the range and move out of the
+				// loop.
+				if ( ( closeRange || isLast ) && range )
+				{
+					var boundaryNodes = range.getBoundaryNodes(),
+						startPath = new CKEDITOR.dom.elementPath( range.startContainer ),
+						endPath = new CKEDITOR.dom.elementPath( range.endContainer );
+
+					// Drop the range if it only contains bookmark nodes.(#4087)
+					if ( boundaryNodes.startNode.equals( boundaryNodes.endNode )
+						&& boundaryNodes.startNode.getParent().equals( startPath.blockLimit )
+						&& boundaryNodes.startNode.type == CKEDITOR.NODE_ELEMENT
+						&& boundaryNodes.startNode.getAttribute( '_fck_bookmark' ) )
+					{
+						range = null;
+						this._.nextNode = null;
+					}
+					else
+						break;
+				}
+
+				if ( isLast )
+					break;
+
+			}
+
+			// Now, based on the processed range, look for (or create) the block to be returned.
+			if ( !block )
+			{
+				// If no range has been found, this is the end.
+				if ( !range )
+				{
+					this._.docEndMarker && this._.docEndMarker.remove();
+					this._.nextNode = null;
+					return null;
+				}
+
+				startPath = new CKEDITOR.dom.elementPath( range.startContainer );
+				var startBlockLimit = startPath.blockLimit,
+					checkLimits = { div : 1, th : 1, td : 1 };
+				block = startPath.block;
+
+				if ( !block
+						&& !this.enforceRealBlocks
+						&& checkLimits[ startBlockLimit.getName() ]
+						&& range.checkStartOfBlock()
+						&& range.checkEndOfBlock() )
+					block = startBlockLimit;
+				else if ( !block || ( this.enforceRealBlocks && block.getName() == 'li' ) )
+				{
+					// Create the fixed block.
+					block = this.range.document.createElement( blockTag || 'p' );
+
+					// Move the contents of the temporary range to the fixed block.
+					range.extractContents().appendTo( block );
+					block.trim();
+
+					// Insert the fixed block into the DOM.
+					range.insertNode( block );
+
+					removePreviousBr = removeLastBr = true;
+				}
+				else if ( block.getName() != 'li' )
+				{
+					// If the range doesn't includes the entire contents of the
+					// block, we must split it, isolating the range in a dedicated
+					// block.
+					if ( !range.checkStartOfBlock() || !range.checkEndOfBlock() )
+					{
+						// The resulting block will be a clone of the current one.
+						block = block.clone( false );
+
+						// Extract the range contents, moving it to the new block.
+						range.extractContents().appendTo( block );
+						block.trim();
+
+						// Split the block. At this point, the range will be in the
+						// right position for our intents.
+						var splitInfo = range.splitBlock();
+
+						removePreviousBr = !splitInfo.wasStartOfBlock;
+						removeLastBr = !splitInfo.wasEndOfBlock;
+
+						// Insert the new block into the DOM.
+						range.insertNode( block );
+					}
+				}
+				else if ( !isLast )
+				{
+					// LIs are returned as is, with all their children (due to the
+					// nested lists). But, the next node is the node right after
+					// the current range, which could be an <li> child (nested
+					// lists) or the next sibling <li>.
+
+					this._.nextNode = ( block.equals( lastNode ) ? null :
+						range.getBoundaryNodes().endNode.getNextSourceNode( true, null, lastNode ) );
+				}
+			}
+
+			if ( removePreviousBr )
+			{
+				var previousSibling = block.getPrevious();
+				if ( previousSibling && previousSibling.type == CKEDITOR.NODE_ELEMENT )
+				{
+					if ( previousSibling.getName() == 'br' )
+						previousSibling.remove();
+					else if ( previousSibling.getLast() && previousSibling.getLast().$.nodeName.toLowerCase() == 'br' )
+						previousSibling.getLast().remove();
+				}
+			}
+
+			if ( removeLastBr )
+			{
+				// Ignore bookmark nodes.(#3783)
+				var bookmarkGuard = CKEDITOR.dom.walker.bookmark( false, true );
+
+				var lastChild = block.getLast();
+				if ( lastChild && lastChild.type == CKEDITOR.NODE_ELEMENT && lastChild.getName() == 'br' )
+				{
+					// Take care not to remove the block expanding <br> in non-IE browsers.
+					if ( CKEDITOR.env.ie
+						 || lastChild.getPrevious( bookmarkGuard )
+						 || lastChild.getNext( bookmarkGuard ) )
+						lastChild.remove();
+				}
+			}
+
+			// Get a reference for the next element. This is important because the
+			// above block can be removed or changed, so we can rely on it for the
+			// next interation.
+			if ( !this._.nextNode )
+			{
+				this._.nextNode = ( isLast || block.equals( lastNode ) ) ? null :
+					block.getNextSourceNode( true, null, lastNode );
+			}
+
+			return block;
+		}
+	};
+
+	CKEDITOR.dom.range.prototype.createIterator = function()
+	{
+		return new iterator( this );
+	};
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/sourcearea/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/sourcearea/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/sourcearea/plugin.js	(revision 2000)
@@ -0,0 +1,200 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview The "sourcearea" plugin. It registers the "source" editing
+ *		mode, which displays the raw data being edited in the editor.
+ */
+
+CKEDITOR.plugins.add( 'sourcearea',
+{
+	requires : [ 'editingblock' ],
+
+	init : function( editor )
+	{
+		var sourcearea = CKEDITOR.plugins.sourcearea;
+
+		editor.on( 'editingBlockReady', function()
+			{
+				var textarea,
+					onResize;
+
+				editor.addMode( 'source',
+					{
+						load : function( holderElement, data )
+						{
+							if ( CKEDITOR.env.ie && CKEDITOR.env.version < 8 )
+								holderElement.setStyle( 'position', 'relative' );
+
+							// Create the source area <textarea>.
+							editor.textarea = textarea = new CKEDITOR.dom.element( 'textarea' );
+							textarea.setAttributes(
+								{
+									dir : 'ltr',
+									tabIndex : -1
+								});
+							textarea.addClass( 'cke_source' );
+							textarea.addClass( 'cke_enable_context_menu' );
+
+							var styles =
+							{
+								// IE7 has overflow the <textarea> from wrapping table cell.
+								width	: CKEDITOR.env.ie7Compat ?  '99%' : '100%',
+								height	: '100%',
+								resize	: 'none',
+								outline	: 'none',
+								'text-align' : 'left'
+							};
+
+							// The textarea height/width='100%' doesn't
+							// constraint to the 'td' in IE strick mode
+							if ( CKEDITOR.env.ie )
+							{
+								if ( !CKEDITOR.env.ie8Compat )
+								{
+									onResize = function()
+										{
+											// Holder rectange size is stretched by textarea,
+											// so hide it just for a moment.
+											textarea.hide();
+											textarea.setStyle( 'height', holderElement.$.clientHeight + 'px' );
+											// When we have proper holder size, show textarea again.
+											textarea.show();
+										};
+									editor.on( 'resize', onResize );
+									editor.on( 'afterCommandExec', function( event )
+									{
+										if ( event.data.name == 'toolbarCollapse' )
+											onResize();
+									});
+									styles.height = holderElement.$.clientHeight + 'px';
+								}
+							}
+							else
+							{
+								// By some yet unknown reason, we must stop the
+								// mousedown propagation for the textarea,
+								// otherwise it's not possible to place the caret
+								// inside of it (non IE).
+								textarea.on( 'mousedown', function( evt )
+									{
+										evt.data.stopPropagation();
+									} );
+							}
+
+							// Reset the holder element and append the
+							// <textarea> to it.
+							holderElement.setHtml( '' );
+							holderElement.append( textarea );
+							textarea.setStyles( styles );
+
+							textarea.on( 'blur', function()
+								{
+									editor.focusManager.blur();
+								});
+
+							textarea.on( 'focus', function()
+								{
+									editor.focusManager.focus();
+								});
+
+							// The editor data "may be dirty" after this point.
+							editor.mayBeDirty = true;
+
+							// Set the <textarea> value.
+							this.loadData( data );
+
+							var keystrokeHandler = editor.keystrokeHandler;
+							if ( keystrokeHandler )
+								keystrokeHandler.attach( textarea );
+
+							setTimeout( function()
+							{
+								editor.mode = 'source';
+								editor.fire( 'mode' );
+							},
+							( CKEDITOR.env.gecko || CKEDITOR.env.webkit ) ? 100 : 0 );
+						},
+
+						loadData : function( data )
+						{
+							textarea.setValue( data );
+							editor.fire( 'dataReady' );
+						},
+
+						getData : function()
+						{
+							return textarea.getValue();
+						},
+
+						getSnapshotData : function()
+						{
+							return textarea.getValue();
+						},
+
+						unload : function( holderElement )
+						{
+							editor.textarea = textarea = null;
+
+							if ( onResize )
+								editor.removeListener( 'resize', onResize );
+
+							if ( CKEDITOR.env.ie && CKEDITOR.env.version < 8 )
+								holderElement.removeStyle( 'position' );
+						},
+
+						focus : function()
+						{
+							textarea.focus();
+						}
+					});
+			});
+
+		editor.addCommand( 'source', sourcearea.commands.source );
+
+		if ( editor.ui.addButton )
+		{
+			editor.ui.addButton( 'Source',
+				{
+					label : editor.lang.source,
+					command : 'source'
+				});
+		}
+
+		editor.on( 'mode', function()
+			{
+				editor.getCommand( 'source' ).setState(
+					editor.mode == 'source' ?
+						CKEDITOR.TRISTATE_ON :
+						CKEDITOR.TRISTATE_OFF );
+			});
+	}
+});
+
+/**
+ * Holds the definition of commands an UI elements included with the sourcearea
+ * plugin.
+ * @example
+ */
+CKEDITOR.plugins.sourcearea =
+{
+	commands :
+	{
+		source :
+		{
+			modes : { wysiwyg:1, source:1 },
+
+			exec : function( editor )
+			{
+				if ( editor.mode == 'wysiwyg' )
+					editor.fire( 'saveSnapshot' );
+				editor.getCommand( 'source' ).setState( CKEDITOR.TRISTATE_DISABLED );
+				editor.setMode( editor.mode == 'source' ? 'wysiwyg' : 'source' );
+			},
+
+			canUndo : false
+		}
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/panelbutton/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/panelbutton/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/panelbutton/plugin.js	(revision 2000)
@@ -0,0 +1,140 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'panelbutton',
+{
+	requires : [ 'button' ],
+	beforeInit : function( editor )
+	{
+		editor.ui.addHandler( CKEDITOR.UI_PANELBUTTON, CKEDITOR.ui.panelButton.handler );
+	}
+});
+
+/**
+ * Button UI element.
+ * @constant
+ * @example
+ */
+CKEDITOR.UI_PANELBUTTON = 4;
+
+(function()
+{
+	var clickFn = function( editor )
+	{
+		var _ = this._;
+
+		if ( _.state == CKEDITOR.TRISTATE_DISABLED )
+			return;
+
+		this.createPanel( editor );
+
+		if ( _.on )
+		{
+			_.panel.hide();
+			return;
+		}
+
+		_.panel.showBlock( this._.id, this.document.getById( this._.id ), 4 );
+	};
+
+
+	CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass(
+	{
+		base : CKEDITOR.ui.button,
+
+		$ : function( definition )
+		{
+			// We don't want the panel definition in this object.
+			var panelDefinition = definition.panel;
+			delete definition.panel;
+
+			this.base( definition );
+
+			this.document = ( panelDefinition
+								&& panelDefinition.parent
+								&& panelDefinition.parent.getDocument() )
+							|| CKEDITOR.document;
+
+			this.hasArrow = true;
+
+			this.click = clickFn;
+
+			this._ =
+			{
+				panelDefinition : panelDefinition
+			};
+		},
+
+		statics :
+		{
+			handler :
+			{
+				create : function( definition )
+				{
+					return new CKEDITOR.ui.panelButton( definition );
+				}
+			}
+		},
+
+		proto :
+		{
+			createPanel : function( editor )
+			{
+				var _ = this._;
+
+				if ( _.panel )
+					return;
+
+				var panelDefinition = this._.panelDefinition || {},
+					panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),
+					panel = this._.panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ),
+					me = this;
+
+				panel.onShow = function()
+					{
+						if ( me.className )
+							this.element.getFirst().addClass( me.className + '_panel' );
+
+						_.oldState = me._.state;
+						me.setState( CKEDITOR.TRISTATE_ON );
+
+						_.on = 1;
+
+						if ( me.onOpen )
+							me.onOpen();
+					};
+
+				panel.onHide = function()
+					{
+						if ( me.className )
+							this.element.getFirst().removeClass( me.className + '_panel' );
+
+						me.setState( _.oldState );
+
+						_.on = 0;
+
+						if ( me.onClose )
+							me.onClose();
+					};
+
+				panel.onEscape = function()
+					{
+						panel.hide();
+						me.document.getById( _.id ).focus();
+					};
+
+				if ( this.onBlock )
+					this.onBlock( panel, _.id );
+
+				panel.getBlock( _.id ).onHide = function()
+						{
+								_.on = 0;
+								me.setState( CKEDITOR.TRISTATE_OFF );
+						};
+			}
+		}
+	});
+
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/editingblock/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/editingblock/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/editingblock/plugin.js	(revision 2000)
@@ -0,0 +1,236 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview The default editing block plugin, which holds the editing area
+ *		and source view.
+ */
+
+(function()
+{
+	var getMode = function( editor, mode )
+	{
+		return editor._.modes && editor._.modes[ mode || editor.mode ];
+	};
+
+	// This is a semaphore used to avoid recursive calls between
+	// the following data handling functions.
+	var isHandlingData;
+
+	CKEDITOR.plugins.add( 'editingblock',
+	{
+		init : function( editor )
+		{
+			if ( !editor.config.editingBlock )
+				return;
+
+			editor.on( 'themeSpace', function( event )
+				{
+					if ( event.data.space == 'contents' )
+						event.data.html += '<br>';
+				});
+
+			editor.on( 'themeLoaded', function()
+				{
+					editor.fireOnce( 'editingBlockReady' );
+				});
+
+			editor.on( 'uiReady', function()
+				{
+					editor.setMode( editor.config.startupMode );
+				});
+
+			editor.on( 'afterSetData', function()
+				{
+					if ( !isHandlingData )
+					{
+						function setData()
+						{
+							isHandlingData = true;
+							getMode( editor ).loadData( editor.getData() );
+							isHandlingData = false;
+						}
+
+						if ( editor.mode )
+							setData();
+						else
+						{
+							editor.on( 'mode', function()
+								{
+									setData();
+									editor.removeListener( 'mode', arguments.callee );
+								});
+						}
+					}
+				});
+
+			editor.on( 'beforeGetData', function()
+				{
+					if ( !isHandlingData && editor.mode )
+					{
+						isHandlingData = true;
+						editor.setData( getMode( editor ).getData() );
+						isHandlingData = false;
+					}
+				});
+
+			editor.on( 'getSnapshot', function( event )
+				{
+					if ( editor.mode )
+						event.data = getMode( editor ).getSnapshotData();
+				});
+
+			editor.on( 'loadSnapshot', function( event )
+				{
+					if ( editor.mode )
+						getMode( editor ).loadSnapshotData( event.data );
+				});
+
+			// For the first "mode" call, we'll also fire the "instanceReady"
+			// event.
+			editor.on( 'mode', function( event )
+				{
+					// Do that once only.
+					event.removeListener();
+
+					// Grab editor focus if the editor container is focused. (#3104)
+					var focusGrabber = editor.container;
+
+					// Safari 3 can't handle tabindex in all elements, so we do
+					// a trick to make it move the focus to the editor on TAB.
+					if ( CKEDITOR.env.webkit && CKEDITOR.env.version < 528 )
+					{
+						var tabIndex = editor.config.tabIndex || editor.element.getAttribute( 'tabindex' ) || 0;
+						focusGrabber = focusGrabber.append( CKEDITOR.dom.element.createFromHtml(
+							'<input' +
+								' tabindex="' + tabIndex + '"' +
+								' style="position:absolute; left:-10000">' ) );
+					}
+
+					focusGrabber.on( 'focus', function()
+						{
+							editor.focus();
+						});
+
+					if ( editor.config.startupFocus )
+						editor.focus();
+
+					// Fire instanceReady for both the editor and CKEDITOR, but
+					// defer this until the whole execution has completed
+					// to guarantee the editor is fully responsible.
+					setTimeout( function(){
+						editor.fireOnce( 'instanceReady' );
+						CKEDITOR.fire( 'instanceReady', null, editor );
+					} );
+				});
+		}
+	});
+
+	/**
+	 * The current editing mode. An editing mode is basically a viewport for
+	 * editing or content viewing. By default the possible values for this
+	 * property are "wysiwyg" and "source".
+	 * @type String
+	 * @example
+	 * alert( CKEDITOR.instances.editor1.mode );  // "wysiwyg" (e.g.)
+	 */
+	CKEDITOR.editor.prototype.mode = '';
+
+	/**
+	 * Registers an editing mode. This function is to be used mainly by plugins.
+	 * @param {String} mode The mode name.
+	 * @param {Object} modeEditor The mode editor definition.
+	 * @example
+	 */
+	CKEDITOR.editor.prototype.addMode = function( mode, modeEditor )
+	{
+		modeEditor.name = mode;
+		( this._.modes || ( this._.modes = {} ) )[ mode ] = modeEditor;
+	};
+
+	/**
+	 * Sets the current editing mode in this editor instance.
+	 * @param {String} mode A registered mode name.
+	 * @example
+	 * // Switch to "source" view.
+	 * CKEDITOR.instances.editor1.setMode( 'source' );
+	 */
+	CKEDITOR.editor.prototype.setMode = function( mode )
+	{
+		var data,
+			holderElement = this.getThemeSpace( 'contents' ),
+			isDirty = this.checkDirty();
+
+		// Unload the previous mode.
+		if ( this.mode )
+		{
+			if ( mode == this.mode )
+				return;
+
+			this.fire( 'beforeModeUnload' );
+
+			var currentMode = getMode( this );
+			data = currentMode.getData();
+			currentMode.unload( holderElement );
+			this.mode = '';
+		}
+
+		holderElement.setHtml( '' );
+
+		// Load required mode.
+		var modeEditor = getMode( this, mode );
+		if ( !modeEditor )
+			throw '[CKEDITOR.editor.setMode] Unknown mode "' + mode + '".';
+
+		if ( !isDirty )
+		{
+			this.on( 'mode', function()
+				{
+					this.resetDirty();
+					this.removeListener( 'mode', arguments.callee );
+				});
+		}
+
+		modeEditor.load( holderElement, ( typeof data ) != 'string'  ? this.getData() : data);
+	};
+
+	/**
+	 * Moves the selection focus to the editing are space in the editor.
+	 */
+	CKEDITOR.editor.prototype.focus = function()
+	{
+		var mode = getMode( this );
+		if ( mode )
+			mode.focus();
+	};
+})();
+
+/**
+ * The mode to load at the editor startup. It depends on the plugins
+ * loaded. By default, the "wysiwyg" and "source" modes are available.
+ * @type String
+ * @default 'wysiwyg'
+ * @example
+ * config.startupMode = 'source';
+ */
+CKEDITOR.config.startupMode = 'wysiwyg';
+
+/**
+ * Sets whether the editor should have the focus when the page loads.
+ * @type Boolean
+ * @default false
+ * @example
+ * config.startupFocus = true;
+ */
+CKEDITOR.config.startupFocus = false;
+
+/**
+ * Whether to render or not the editing block area in the editor interface.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.editingBlock = false;
+ */
+CKEDITOR.config.editingBlock = true;
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/save/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/save/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/save/plugin.js	(revision 2000)
@@ -0,0 +1,55 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileSave plugin.
+ */
+
+(function()
+{
+	var saveCmd =
+	{
+		modes : { wysiwyg:1, source:1 },
+
+		exec : function( editor )
+		{
+			var $form = editor.element.$.form;
+
+			if ( $form )
+			{
+				try
+				{
+					$form.submit();
+				}
+				catch( e )
+				{
+					// If there's a button named "submit" then the form.submit
+					// function is masked and can't be called in IE/FF, so we
+					// call the click() method of that button.
+					if ( $form.submit.click )
+						$form.submit.click();
+				}
+			}
+		}
+	};
+
+	var pluginName = 'save';
+
+	// Register a plugin named "save".
+	CKEDITOR.plugins.add( pluginName,
+	{
+		init : function( editor )
+		{
+			var command = editor.addCommand( pluginName, saveCmd );
+			command.modes = { wysiwyg : !!( editor.element.$.form ) };
+
+			editor.ui.addButton( 'Save',
+				{
+					label : editor.lang.save,
+					command : pluginName
+				});
+		}
+	});
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/keystrokes/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/keystrokes/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/keystrokes/plugin.js	(revision 2000)
@@ -0,0 +1,218 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+// Register a plugin named "sample".
+CKEDITOR.plugins.add( 'keystrokes',
+{
+	beforeInit : function( editor )
+	{
+		/**
+		 * Controls keystrokes typing in this editor instance.
+		 * @name CKEDITOR.editor.prototype.keystrokeHandler
+		 * @type CKEDITOR.keystrokeHandler
+		 * @example
+		 */
+		editor.keystrokeHandler = new CKEDITOR.keystrokeHandler( editor );
+
+		editor.specialKeys = {};
+	},
+
+	init : function( editor )
+	{
+		var keystrokesConfig	= editor.config.keystrokes,
+			blockedConfig		= editor.config.blockedKeystrokes;
+
+		var keystrokes			= editor.keystrokeHandler.keystrokes,
+			blockedKeystrokes	= editor.keystrokeHandler.blockedKeystrokes;
+
+		for ( var i = 0 ; i < keystrokesConfig.length ; i++ )
+		{
+			keystrokes[ keystrokesConfig[i][0] ] = keystrokesConfig[i][1];
+		}
+
+		for ( i = 0 ; i < blockedConfig.length ; i++ )
+		{
+			blockedKeystrokes[ blockedConfig[i] ] = 1;
+		}
+	}
+});
+
+/**
+ * Controls keystrokes typing in an editor instance.
+ * @constructor
+ * @param {CKEDITOR.editor} editor The editor instance.
+ * @example
+ */
+CKEDITOR.keystrokeHandler = function( editor )
+{
+	if ( editor.keystrokeHandler )
+		return editor.keystrokeHandler;
+
+	/**
+	 * List of keystrokes associated to commands. Each entry points to the
+	 * command to be executed.
+	 * @type Object
+	 * @example
+	 */
+	this.keystrokes = {};
+
+	/**
+	 * List of keystrokes that should be blocked if not defined at
+	 * {@link keystrokes}. In this way it is possible to block the default
+	 * browser behavior for those keystrokes.
+	 * @type Object
+	 * @example
+	 */
+	this.blockedKeystrokes = {};
+
+	this._ =
+	{
+		editor : editor
+	};
+
+	return this;
+};
+
+(function()
+{
+	var cancel;
+
+	var onKeyDown = function( event )
+	{
+		// The DOM event object is passed by the "data" property.
+		event = event.data;
+
+		var keyCombination = event.getKeystroke();
+		var command = this.keystrokes[ keyCombination ];
+		var editor = this._.editor;
+
+		cancel = ( editor.fire( 'key', { keyCode : keyCombination } ) === true );
+
+		if ( !cancel )
+		{
+			if ( command )
+			{
+				var data = { from : 'keystrokeHandler' };
+				cancel = ( editor.execCommand( command, data ) !== false );
+			}
+
+			if  ( !cancel )
+			{
+				var handler = editor.specialKeys[ keyCombination ];
+				cancel = ( handler && handler( editor ) === true );
+
+				if ( !cancel )
+					cancel = !!this.blockedKeystrokes[ keyCombination ];
+			}
+		}
+
+		if ( cancel )
+			event.preventDefault( true );
+
+		return !cancel;
+	};
+
+	var onKeyPress = function( event )
+	{
+		if ( cancel )
+		{
+			cancel = false;
+			event.data.preventDefault( true );
+		}
+	};
+
+	CKEDITOR.keystrokeHandler.prototype =
+	{
+		/**
+		 * Attaches this keystroke handle to a DOM object. Keystrokes typed
+		 ** over this object will get handled by this keystrokeHandler.
+		 * @param {CKEDITOR.dom.domObject} domObject The DOM object to attach
+		 *		to.
+		 * @example
+		 */
+		attach : function( domObject )
+		{
+			// For most browsers, it is enough to listen to the keydown event
+			// only.
+			domObject.on( 'keydown', onKeyDown, this );
+
+			// Some browsers instead, don't cancel key events in the keydown, but in the
+			// keypress. So we must do a longer trip in those cases.
+			if ( CKEDITOR.env.opera || ( CKEDITOR.env.gecko && CKEDITOR.env.mac ) )
+				domObject.on( 'keypress', onKeyPress, this );
+		}
+	};
+})();
+
+/**
+ * A list of keystrokes to be blocked if not defined in the {@link CKEDITOR.config.keystrokes}
+ * setting. In this way it is possible to block the default browser behavior
+ * for those keystrokes.
+ * @type Array
+ * @default (see example)
+ * @example
+ * // This is actually the default value.
+ * config.blockedKeystrokes =
+ * [
+ *     CKEDITOR.CTRL + 66 &#47;*B*&#47;,
+ *     CKEDITOR.CTRL + 73 &#47;*I*&#47;,
+ *     CKEDITOR.CTRL + 85 &#47;*U*&#47;
+ * ];
+ */
+CKEDITOR.config.blockedKeystrokes =
+[
+	CKEDITOR.CTRL + 66 /*B*/,
+	CKEDITOR.CTRL + 73 /*I*/,
+	CKEDITOR.CTRL + 85 /*U*/
+];
+
+/**
+ * A list associating keystrokes to editor commands. Each element in the list
+ * is an array where the first item is the keystroke, and the second is the
+ * name of the command to be executed.
+ * @type Array
+ * @default (see example)
+ * @example
+ * // This is actually the default value.
+ * config.keystrokes =
+ * [
+ *     [ CKEDITOR.ALT + 121 &#47;*F10*&#47;, 'toolbarFocus' ],
+ *     [ CKEDITOR.ALT + 122 &#47;*F11*&#47;, 'elementsPathFocus' ],
+ *
+ *     [ CKEDITOR.SHIFT + 121 &#47;*F10*&#47;, 'contextMenu' ],
+ *
+ *     [ CKEDITOR.CTRL + 90 &#47;*Z*&#47;, 'undo' ],
+ *     [ CKEDITOR.CTRL + 89 &#47;*Y*&#47;, 'redo' ],
+ *     [ CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 &#47;*Z*&#47;, 'redo' ],
+ *
+ *     [ CKEDITOR.CTRL + 76 &#47;*L*&#47;, 'link' ],
+ *
+ *     [ CKEDITOR.CTRL + 66 &#47;*B*&#47;, 'bold' ],
+ *     [ CKEDITOR.CTRL + 73 &#47;*I*&#47;, 'italic' ],
+ *     [ CKEDITOR.CTRL + 85 &#47;*U*&#47;, 'underline' ],
+ *
+ *     [ CKEDITOR.ALT + 109 &#47;*-*&#47;, 'toolbarCollapse' ]
+ * ];
+ */
+CKEDITOR.config.keystrokes =
+[
+	[ CKEDITOR.ALT + 121 /*F10*/, 'toolbarFocus' ],
+	[ CKEDITOR.ALT + 122 /*F11*/, 'elementsPathFocus' ],
+
+	[ CKEDITOR.SHIFT + 121 /*F10*/, 'contextMenu' ],
+	[ CKEDITOR.CTRL + CKEDITOR.SHIFT + 121 /*F10*/, 'contextMenu' ],
+
+	[ CKEDITOR.CTRL + 90 /*Z*/, 'undo' ],
+	[ CKEDITOR.CTRL + 89 /*Y*/, 'redo' ],
+	[ CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 /*Z*/, 'redo' ],
+
+	[ CKEDITOR.CTRL + 76 /*L*/, 'link' ],
+
+	[ CKEDITOR.CTRL + 66 /*B*/, 'bold' ],
+	[ CKEDITOR.CTRL + 73 /*I*/, 'italic' ],
+	[ CKEDITOR.CTRL + 85 /*U*/, 'underline' ],
+
+	[ CKEDITOR.ALT + 109 /*-*/, 'toolbarCollapse' ]
+];
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/tab/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/tab/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/tab/plugin.js	(revision 2000)
@@ -0,0 +1,266 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	var blurCommand =
+		{
+			exec : function( editor )
+			{
+				editor.container.focusNext( true );
+			}
+		};
+
+	var blurBackCommand =
+		{
+			exec : function( editor )
+			{
+				editor.container.focusPrevious( true );
+			}
+		};
+
+	CKEDITOR.plugins.add( 'tab',
+	{
+		requires : [ 'keystrokes' ],
+
+		init : function( editor )
+		{
+			// Register the keystrokes.
+			var keystrokes = editor.keystrokeHandler.keystrokes;
+			keystrokes[ 9 /* TAB */ ] = 'tab';
+			keystrokes[ CKEDITOR.SHIFT + 9 /* TAB */ ] = 'shiftTab';
+
+			var tabSpaces = editor.config.tabSpaces,
+				tabText = '';
+
+			while ( tabSpaces-- )
+				tabText += '\xa0';
+
+			// Register the "tab" and "shiftTab" commands.
+			editor.addCommand( 'tab',
+				{
+					exec : function( editor )
+					{
+						// Fire the "tab" event, making it possible to
+						// customize the TAB key behavior on specific cases.
+						if ( !editor.fire( 'tab' ) )
+						{
+							if ( tabText.length > 0 )
+								editor.insertHtml( tabText );
+							else
+							{
+								// All browsers jump to the next field on TAB,
+								// except Safari, so we have to do that manually
+								// here.
+								/// https://bugs.webkit.org/show_bug.cgi?id=20597
+								return editor.execCommand( 'blur' );
+							}
+						}
+
+						return true;
+					}
+				});
+
+			editor.addCommand( 'shiftTab',
+				{
+					exec : function( editor )
+					{
+						// Fire the "tab" event, making it possible to
+						// customize the TAB key behavior on specific cases.
+						if ( !editor.fire( 'shiftTab' ) )
+							return editor.execCommand( 'blurBack' );
+
+						return true;
+					}
+				});
+
+			editor.addCommand( 'blur', blurCommand );
+			editor.addCommand( 'blurBack', blurBackCommand );
+		}
+	});
+})();
+
+/**
+ * Moves the UI focus to the element following this element in the tabindex
+ * order.
+ * @example
+ * var element = CKEDITOR.document.getById( 'example' );
+ * element.focusNext();
+ */
+CKEDITOR.dom.element.prototype.focusNext = function( ignoreChildren )
+{
+	var $ = this.$,
+		curTabIndex = this.getTabIndex(),
+		passedCurrent, enteredCurrent,
+		elected, electedTabIndex,
+		element, elementTabIndex;
+
+	if ( curTabIndex <= 0 )
+	{
+		// If this element has tabindex <= 0 then we must simply look for any
+		// element following it containing tabindex=0.
+
+		element = this.getNextSourceNode( ignoreChildren, CKEDITOR.NODE_ELEMENT );
+
+		while( element )
+		{
+			if ( element.isVisible() && element.getTabIndex() === 0 )
+			{
+				elected = element;
+				break;
+			}
+
+			element = element.getNextSourceNode( false, CKEDITOR.NODE_ELEMENT );
+		}
+	}
+	else
+	{
+		// If this element has tabindex > 0 then we must look for:
+		//		1. An element following this element with the same tabindex.
+		//		2. The first element in source other with the lowest tabindex
+		//		   that is higher than this element tabindex.
+		//		3. The first element with tabindex=0.
+
+		element = this.getDocument().getBody().getFirst();
+
+		while( ( element = element.getNextSourceNode( false, CKEDITOR.NODE_ELEMENT ) ) )
+		{
+			if ( !passedCurrent )
+			{
+				if ( !enteredCurrent && element.equals( this ) )
+				{
+					enteredCurrent = true;
+
+					// Ignore this element, if required.
+					if ( ignoreChildren )
+					{
+						if ( !( element = element.getNextSourceNode( true, CKEDITOR.NODE_ELEMENT ) ) )
+							break;
+						passedCurrent = 1;
+					}
+				}
+				else if ( enteredCurrent && !this.contains( element ) )
+					passedCurrent = 1;
+			}
+
+			if ( !element.isVisible() || ( elementTabIndex = element.getTabIndex() ) < 0 )
+				continue;
+
+			if ( passedCurrent && elementTabIndex == curTabIndex )
+			{
+				elected = element;
+				break;
+			}
+
+			if ( elementTabIndex > curTabIndex && ( !elected || !electedTabIndex || elementTabIndex < electedTabIndex ) )
+			{
+				elected = element;
+				electedTabIndex = elementTabIndex;
+			}
+			else if ( !elected && elementTabIndex === 0 )
+			{
+				elected = element;
+				electedTabIndex = elementTabIndex;
+			}
+		}
+	}
+
+	if ( elected )
+		elected.focus();
+};
+
+/**
+ * Moves the UI focus to the element before this element in the tabindex order.
+ * @example
+ * var element = CKEDITOR.document.getById( 'example' );
+ * element.focusPrevious();
+ */
+CKEDITOR.dom.element.prototype.focusPrevious = function( ignoreChildren )
+{
+	var $ = this.$,
+		curTabIndex = this.getTabIndex(),
+		passedCurrent, enteredCurrent,
+		elected,
+		electedTabIndex = 0,
+		elementTabIndex;
+
+	var element = this.getDocument().getBody().getLast();
+
+	while( ( element = element.getPreviousSourceNode( false, CKEDITOR.NODE_ELEMENT ) ) )
+	{
+		if ( !passedCurrent )
+		{
+			if ( !enteredCurrent && element.equals( this ) )
+			{
+				enteredCurrent = true;
+
+				// Ignore this element, if required.
+				if ( ignoreChildren )
+				{
+					if ( !( element = element.getPreviousSourceNode( true, CKEDITOR.NODE_ELEMENT ) ) )
+						break;
+					passedCurrent = 1;
+				}
+			}
+			else if ( enteredCurrent && !this.contains( element ) )
+				passedCurrent = 1;
+		}
+
+		if ( !element.isVisible() || ( elementTabIndex = element.getTabIndex() ) < 0 )
+			continue;
+
+		if ( curTabIndex <= 0 )
+		{
+			// If this element has tabindex <= 0 then we must look for:
+			//		1. An element before this one containing tabindex=0.
+			//		2. The last element with the highest tabindex.
+
+			if ( passedCurrent && elementTabIndex === 0 )
+			{
+				elected = element;
+				break;
+			}
+
+			if ( elementTabIndex > electedTabIndex )
+			{
+				elected = element;
+				electedTabIndex = elementTabIndex;
+			}
+		}
+		else
+		{
+			// If this element has tabindex > 0 we must look for:
+			//		1. An element preceeding this one, with the same tabindex.
+			//		2. The last element in source other with the highest tabindex
+			//		   that is lower than this element tabindex.
+
+			if ( passedCurrent && elementTabIndex == curTabIndex )
+			{
+				elected = element;
+				break;
+			}
+
+			if ( elementTabIndex < curTabIndex && ( !elected || elementTabIndex > electedTabIndex ) )
+			{
+				elected = element;
+				electedTabIndex = elementTabIndex;
+			}
+		}
+	}
+
+	if ( elected )
+		elected.focus();
+};
+
+/**
+ * Intructs the editor to add a number of spaces (&amp;nbsp;) to the text when
+ * hitting the TAB key. If set to zero, the TAB key will be used to move the
+ * cursor focus to the next element in the page, out of the editor focus.
+ * @type Number
+ * @default 0
+ * @example
+ * config.tabSpaces = 4;
+ */
+CKEDITOR.config.tabSpaces = 0 ;
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/blockquote/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/blockquote/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/blockquote/plugin.js	(revision 2000)
@@ -0,0 +1,301 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Blockquote.
+ */
+
+(function()
+{
+	function getState( editor, path )
+	{
+		var firstBlock = path.block || path.blockLimit;
+
+		if ( !firstBlock || firstBlock.getName() == 'body' )
+			return CKEDITOR.TRISTATE_OFF;
+
+		// See if the first block has a blockquote parent.
+		if ( firstBlock.getAscendant( 'blockquote', true ) )
+			return CKEDITOR.TRISTATE_ON;
+
+		return CKEDITOR.TRISTATE_OFF;
+	}
+
+	function onSelectionChange( evt )
+	{
+		var editor = evt.editor,
+			command = editor.getCommand( 'blockquote' );
+		command.state = getState( editor, evt.data.path );
+		command.fire( 'state' );
+	}
+
+	function noBlockLeft( bqBlock )
+	{
+		for ( var i = 0, length = bqBlock.getChildCount(), child ; i < length && ( child = bqBlock.getChild( i ) ) ; i++ )
+		{
+			if ( child.type == CKEDITOR.NODE_ELEMENT && child.isBlockBoundary() )
+				return false;
+		}
+		return true;
+	}
+
+	var commandObject =
+	{
+		exec : function( editor )
+		{
+			var state = editor.getCommand( 'blockquote' ).state,
+				selection = editor.getSelection(),
+				range = selection && selection.getRanges()[0];
+
+			if ( !range )
+				return;
+
+			var bookmarks = selection.createBookmarks();
+
+			// Kludge for #1592: if the bookmark nodes are in the beginning of
+			// blockquote, then move them to the nearest block element in the
+			// blockquote.
+			if ( CKEDITOR.env.ie )
+			{
+				var bookmarkStart = bookmarks[0].startNode,
+					bookmarkEnd = bookmarks[0].endNode,
+					cursor;
+
+				if ( bookmarkStart && bookmarkStart.getParent().getName() == 'blockquote' )
+				{
+					cursor = bookmarkStart;
+					while ( ( cursor = cursor.getNext() ) )
+					{
+						if ( cursor.type == CKEDITOR.NODE_ELEMENT &&
+								cursor.isBlockBoundary() )
+						{
+							bookmarkStart.move( cursor, true );
+							break;
+						}
+					}
+				}
+
+				if ( bookmarkEnd
+						&& bookmarkEnd.getParent().getName() == 'blockquote' )
+				{
+					cursor = bookmarkEnd;
+					while ( ( cursor = cursor.getPrevious() ) )
+					{
+						if ( cursor.type == CKEDITOR.NODE_ELEMENT &&
+								cursor.isBlockBoundary() )
+						{
+							bookmarkEnd.move( cursor );
+							break;
+						}
+					}
+				}
+			}
+
+			var iterator = range.createIterator(),
+				block;
+
+			if ( state == CKEDITOR.TRISTATE_OFF )
+			{
+				var paragraphs = [];
+				while ( ( block = iterator.getNextParagraph() ) )
+					paragraphs.push( block );
+
+				// If no paragraphs, create one from the current selection position.
+				if ( paragraphs.length < 1 )
+				{
+					var para = editor.document.createElement( editor.config.enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ),
+						firstBookmark = bookmarks.shift();
+					range.insertNode( para );
+					para.append( new CKEDITOR.dom.text( '\ufeff', editor.document ) );
+					range.moveToBookmark( firstBookmark );
+					range.selectNodeContents( para );
+					range.collapse( true );
+					firstBookmark = range.createBookmark();
+					paragraphs.push( para );
+					bookmarks.unshift( firstBookmark );
+				}
+
+				// Make sure all paragraphs have the same parent.
+				var commonParent = paragraphs[0].getParent(),
+					tmp = [];
+				for ( var i = 0 ; i < paragraphs.length ; i++ )
+				{
+					block = paragraphs[i];
+					commonParent = commonParent.getCommonAncestor( block.getParent() );
+				}
+
+				// The common parent must not be the following tags: table, tbody, tr, ol, ul.
+				var denyTags = { table : 1, tbody : 1, tr : 1, ol : 1, ul : 1 };
+				while ( denyTags[ commonParent.getName() ] )
+					commonParent = commonParent.getParent();
+
+				// Reconstruct the block list to be processed such that all resulting blocks
+				// satisfy parentNode.equals( commonParent ).
+				var lastBlock = null;
+				while ( paragraphs.length > 0 )
+				{
+					block = paragraphs.shift();
+					while ( !block.getParent().equals( commonParent ) )
+						block = block.getParent();
+					if ( !block.equals( lastBlock ) )
+						tmp.push( block );
+					lastBlock = block;
+				}
+
+				// If any of the selected blocks is a blockquote, remove it to prevent
+				// nested blockquotes.
+				while ( tmp.length > 0 )
+				{
+					block = tmp.shift();
+					if ( block.getName() == 'blockquote' )
+					{
+						var docFrag = new CKEDITOR.dom.documentFragment( editor.document );
+						while ( block.getFirst() )
+						{
+							docFrag.append( block.getFirst().remove() );
+							paragraphs.push( docFrag.getLast() );
+						}
+
+						docFrag.replace( block );
+					}
+					else
+						paragraphs.push( block );
+				}
+
+				// Now we have all the blocks to be included in a new blockquote node.
+				var bqBlock = editor.document.createElement( 'blockquote' );
+				bqBlock.insertBefore( paragraphs[0] );
+				while ( paragraphs.length > 0 )
+				{
+					block = paragraphs.shift();
+					bqBlock.append( block );
+				}
+			}
+			else if ( state == CKEDITOR.TRISTATE_ON )
+			{
+				var moveOutNodes = [],
+					database = {};
+
+				while ( ( block = iterator.getNextParagraph() ) )
+				{
+					var bqParent = null,
+						bqChild = null;
+					while ( block.getParent() )
+					{
+						if ( block.getParent().getName() == 'blockquote' )
+						{
+							bqParent = block.getParent();
+							bqChild = block;
+							break;
+						}
+						block = block.getParent();
+					}
+
+					// Remember the blocks that were recorded down in the moveOutNodes array
+					// to prevent duplicates.
+					if ( bqParent && bqChild && !bqChild.getCustomData( 'blockquote_moveout' ) )
+					{
+						moveOutNodes.push( bqChild );
+						CKEDITOR.dom.element.setMarker( database, bqChild, 'blockquote_moveout', true );
+					}
+				}
+
+				CKEDITOR.dom.element.clearAllMarkers( database );
+
+				var movedNodes = [],
+					processedBlockquoteBlocks = [];
+
+				database = {};
+				while ( moveOutNodes.length > 0 )
+				{
+					var node = moveOutNodes.shift();
+					bqBlock = node.getParent();
+
+					// If the node is located at the beginning or the end, just take it out
+					// without splitting. Otherwise, split the blockquote node and move the
+					// paragraph in between the two blockquote nodes.
+					if ( !node.getPrevious() )
+						node.remove().insertBefore( bqBlock );
+					else if ( !node.getNext() )
+						node.remove().insertAfter( bqBlock );
+					else
+					{
+						node.breakParent( node.getParent() );
+						processedBlockquoteBlocks.push( node.getNext() );
+					}
+
+					// Remember the blockquote node so we can clear it later (if it becomes empty).
+					if ( !bqBlock.getCustomData( 'blockquote_processed' ) )
+					{
+						processedBlockquoteBlocks.push( bqBlock );
+						CKEDITOR.dom.element.setMarker( database, bqBlock, 'blockquote_processed', true );
+					}
+
+					movedNodes.push( node );
+				}
+
+				CKEDITOR.dom.element.clearAllMarkers( database );
+
+				// Clear blockquote nodes that have become empty.
+				for ( i = processedBlockquoteBlocks.length - 1 ; i >= 0 ; i-- )
+				{
+					bqBlock = processedBlockquoteBlocks[i];
+					if ( noBlockLeft( bqBlock ) )
+						bqBlock.remove();
+				}
+
+				if ( editor.config.enterMode == CKEDITOR.ENTER_BR )
+				{
+					var firstTime = true;
+					while ( movedNodes.length )
+					{
+						node = movedNodes.shift();
+
+						if ( node.getName() == 'div' )
+						{
+							docFrag = new CKEDITOR.dom.documentFragment( editor.document );
+							var needBeginBr = firstTime && node.getPrevious() &&
+									!( node.getPrevious().type == CKEDITOR.NODE_ELEMENT && node.getPrevious().isBlockBoundary() );
+							if ( needBeginBr )
+								docFrag.append( editor.document.createElement( 'br' ) );
+
+							var needEndBr = node.getNext() &&
+								!( node.getNext().type == CKEDITOR.NODE_ELEMENT && node.getNext().isBlockBoundary() );
+							while ( node.getFirst() )
+								node.getFirst().remove().appendTo( docFrag );
+
+							if ( needEndBr )
+								docFrag.append( editor.document.createElement( 'br' ) );
+
+							docFrag.replace( node );
+							firstTime = false;
+						}
+					}
+				}
+			}
+
+			selection.selectBookmarks( bookmarks );
+			editor.focus();
+		}
+	};
+
+	CKEDITOR.plugins.add( 'blockquote',
+	{
+		init : function( editor )
+		{
+			editor.addCommand( 'blockquote', commandObject );
+
+			editor.ui.addButton( 'Blockquote',
+				{
+					label : editor.lang.blockquote,
+					command : 'blockquote'
+				} );
+
+			editor.on( 'selectionChange', onSelectionChange );
+		},
+
+		requires : [ 'domiterator' ]
+	} );
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/wysiwygarea/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/wysiwygarea/plugin.js	(revision 2000)
@@ -0,0 +1,687 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview The "wysiwygarea" plugin. It registers the "wysiwyg" editing
+ *		mode, which handles the main editing area space.
+ */
+
+(function()
+{
+	/**
+	 * List of elements in which has no way to move editing focus outside.
+	 */
+	var nonExitableElementNames = { table:1,pre:1 };
+	// Matching an empty paragraph at the end of document.
+	var emptyParagraphRegexp = /\s*<(p|div|address|h\d|center)[^>]*>\s*(?:<br[^>]*>|&nbsp;|&#160;)\s*(:?<\/\1>)?\s*$/gi;
+
+	function onInsertHtml( evt )
+	{
+		if ( this.mode == 'wysiwyg' )
+		{
+			this.focus();
+
+			var selection = this.getSelection(),
+				data = evt.data;
+
+			if ( this.dataProcessor )
+				data = this.dataProcessor.toHtml( data );
+
+			if ( CKEDITOR.env.ie )
+			{
+				var selIsLocked = selection.isLocked;
+
+				if ( selIsLocked )
+					selection.unlock();
+
+				var $sel = selection.getNative();
+				if ( $sel.type == 'Control' )
+					$sel.clear();
+				$sel.createRange().pasteHTML( data );
+
+				if ( selIsLocked )
+					this.getSelection().lock();
+			}
+			else
+				this.document.$.execCommand( 'inserthtml', false, data );
+		}
+	}
+
+	function onInsertElement( evt )
+	{
+		if ( this.mode == 'wysiwyg' )
+		{
+			this.focus();
+			this.fire( 'saveSnapshot' );
+
+			var element = evt.data,
+				elementName = element.getName(),
+				isBlock = CKEDITOR.dtd.$block[ elementName ];
+
+			var selection = this.getSelection(),
+				ranges = selection.getRanges();
+
+			var selIsLocked = selection.isLocked;
+
+			if ( selIsLocked )
+				selection.unlock();
+
+			var range, clone, lastElement, bookmark;
+
+			for ( var i = ranges.length - 1 ; i >= 0 ; i-- )
+			{
+				range = ranges[ i ];
+
+				// Remove the original contents.
+				range.deleteContents();
+
+				clone = !i && element || element.clone( true );
+
+				// If we're inserting a block at dtd-violated position, split
+				// the parent blocks until we reach blockLimit.
+				var current, dtd;
+				if ( isBlock )
+				{
+					while( ( current = range.getCommonAncestor( false, true ) )
+							&& ( dtd = CKEDITOR.dtd[ current.getName() ] )
+							&& !( dtd && dtd [ elementName ] ) )
+					{
+						// If we're in an empty block which indicate a new paragraph,
+						// simply replace it with the inserting block.(#3664)
+						if ( range.checkStartOfBlock()
+							 && range.checkEndOfBlock() )
+						{
+							range.setStartBefore( current );
+							range.collapse( true );
+							current.remove();
+						}
+						else
+							range.splitBlock();
+					}
+				}
+
+				// Insert the new node.
+				range.insertNode( clone );
+
+				// Save the last element reference so we can make the
+				// selection later.
+				if ( !lastElement )
+					lastElement = clone;
+			}
+
+			range.moveToPosition( lastElement, CKEDITOR.POSITION_AFTER_END );
+
+			var next = lastElement.getNextSourceNode( true );
+			if ( next && next.type == CKEDITOR.NODE_ELEMENT )
+				range.moveToElementEditStart( next );
+
+			selection.selectRanges( [ range ] );
+
+			if ( selIsLocked )
+				this.getSelection().lock();
+
+			// Save snaps after the whole execution completed.
+			// This's a workaround for make DOM modification's happened after
+			// 'insertElement' to be included either, e.g. Form-based dialogs' 'commitContents'
+			// call.
+			CKEDITOR.tools.setTimeout( function(){
+				this.fire( 'saveSnapshot' );
+			}, 0, this );
+		}
+	}
+
+	// DOM modification here should not bother dirty flag.(#4385)
+	function restoreDirty( editor )
+	{
+		if( !editor.checkDirty() )
+			setTimeout( function(){ editor.resetDirty(); } );
+	}
+
+	/**
+	 *  Auto-fixing block-less content by wrapping paragraph (#3190), prevent
+	 *  non-exitable-block by padding extra br.(#3189)
+	 */
+	function onSelectionChangeFixBody( evt )
+	{
+		var editor = evt.editor,
+			path = evt.data.path,
+			blockLimit = path.blockLimit,
+			selection = evt.data.selection,
+			range = selection.getRanges()[0],
+			body = editor.document.getBody(),
+			enterMode = editor.config.enterMode;
+
+		// When enterMode set to block, we'll establing new paragraph only if we're
+		// selecting inline contents right under body. (#3657)
+		if ( enterMode != CKEDITOR.ENTER_BR
+		     && range.collapsed
+			 && blockLimit.getName() == 'body'
+			 && !path.block )
+		{
+			restoreDirty( editor );
+			var bms = selection.createBookmarks(),
+				fixedBlock = range.fixBlock( true,
+					editor.config.enterMode == CKEDITOR.ENTER_DIV ? 'div' : 'p'  );
+
+			// For IE, we'll be removing any bogus br ( introduce by fixing body )
+			// right now to prevent it introducing visual line break.
+			if ( CKEDITOR.env.ie )
+			{
+				var brNodeList = fixedBlock.getElementsByTag( 'br' ), brNode;
+				for ( var i = 0 ; i < brNodeList.count() ; i++ )
+				{
+					if( ( brNode = brNodeList.getItem( i ) ) && brNode.hasAttribute( '_cke_bogus' ) )
+						brNode.remove();
+				}
+			}
+
+			selection.selectBookmarks( bms );
+
+			// If the fixed block is blank and is already followed by a exitable
+			// block, we should drop it and move to the exist block(#3684).
+			var children = fixedBlock.getChildren(),
+				count = children.count(),
+				firstChild,
+				whitespaceGuard = CKEDITOR.dom.walker.whitespaces( true ),
+				previousElement = fixedBlock.getPrevious( whitespaceGuard ),
+				nextElement = fixedBlock.getNext( whitespaceGuard ),
+				enterBlock;
+			if ( previousElement && previousElement.getName
+				 && !( previousElement.getName() in nonExitableElementNames ) )
+				enterBlock = previousElement;
+			else if ( nextElement && nextElement.getName
+					  && !( nextElement.getName() in nonExitableElementNames ) )
+				enterBlock = nextElement;
+
+			// Not all blocks are editable, e.g. <hr />, further checking it.(#3994)
+			if( ( !count
+				  || ( firstChild = children.getItem( 0 ) ) && firstChild.is && firstChild.is( 'br' ) )
+				&& enterBlock
+				&& range.moveToElementEditStart( enterBlock ) )
+			{
+				fixedBlock.remove();
+				range.select();
+			}
+		}
+
+		// Inserting the padding-br before body if it's preceded by an
+		// unexitable block.
+		var lastNode = body.getLast( CKEDITOR.dom.walker.whitespaces( true ) );
+		if ( lastNode && lastNode.getName && ( lastNode.getName() in nonExitableElementNames ) )
+		{
+			restoreDirty( editor );
+			var paddingBlock = editor.document.createElement(
+					( CKEDITOR.env.ie && enterMode != CKEDITOR.ENTER_BR ) ?
+						'<br _cke_bogus="true" />' : 'br' );
+			body.append( paddingBlock );
+		}
+	}
+
+	CKEDITOR.plugins.add( 'wysiwygarea',
+	{
+		requires : [ 'editingblock' ],
+
+		init : function( editor )
+		{
+			var fixForBody = ( editor.config.enterMode != CKEDITOR.ENTER_BR )
+				? editor.config.enterMode == CKEDITOR.ENTER_DIV ? 'div' : 'p' : false;
+
+			editor.on( 'editingBlockReady', function()
+				{
+					var mainElement,
+						fieldset,
+						iframe,
+						isLoadingData,
+						isPendingFocus,
+						frameLoaded,
+						fireMode;
+
+					// Support for custom document.domain in IE.
+					var isCustomDomain = CKEDITOR.env.isCustomDomain();
+
+					// Creates the iframe that holds the editable document.
+					var createIFrame = function()
+					{
+						if ( iframe )
+							iframe.remove();
+						if ( fieldset )
+							fieldset.remove();
+
+						frameLoaded = 0;
+						// The document domain must be set within the src
+						// attribute;
+						// Defer the script execution until iframe
+						// has been added to main window, this is needed for some
+						// browsers which will begin to load the frame content
+						// prior to it's presentation in DOM.(#3894)
+						var src = 'void( '
+								+ ( CKEDITOR.env.gecko ? 'setTimeout' : '' ) + '( function(){' +
+								'document.open();' +
+								( CKEDITOR.env.ie && isCustomDomain ? 'document.domain="' + document.domain + '";' : '' ) +
+								'document.write( window.parent[ "_cke_htmlToLoad_' + editor.name + '" ] );' +
+								'document.close();' +
+								'window.parent[ "_cke_htmlToLoad_' + editor.name + '" ] = null;' +
+								'}'
+								+ ( CKEDITOR.env.gecko ? ', 0 )' : ')()' )
+								+ ' )';
+
+						// Loading via src attribute does not work in Opera.
+						if ( CKEDITOR.env.opera )
+							src = 'void(0);';
+
+						iframe = CKEDITOR.dom.element.createFromHtml( '<iframe' +
+								' style="width:100%;height:100%"' +
+								' frameBorder="0"' +
+								' tabIndex="-1"' +
+								' allowTransparency="true"' +
+								' src="javascript:' + encodeURIComponent( src ) + '"' +
+								'></iframe>' );
+
+						var accTitle = editor.lang.editorTitle.replace( '%1', editor.name );
+
+						if ( CKEDITOR.env.gecko )
+						{
+							// Double checking the iframe will be loaded properly(#4058).
+							iframe.on( 'load', function( ev )
+							{
+								ev.removeListener();
+								contentDomReady( iframe.$.contentWindow );
+							} );
+
+							// Accessibility attributes for Firefox.
+							mainElement.setAttributes(
+								{
+									role : 'region',
+									title : accTitle
+								} );
+							iframe.setAttributes(
+								{
+									role : 'region',
+									title : ' '
+								} );
+						}
+						else if ( CKEDITOR.env.webkit )
+						{
+							iframe.setAttribute( 'title', accTitle );	// Safari 4
+							iframe.setAttribute( 'name', accTitle );	// Safari 3
+						}
+						else if ( CKEDITOR.env.ie )
+						{
+							// Accessibility label for IE.
+							fieldset = CKEDITOR.dom.element.createFromHtml(
+								'<fieldset style="height:100%' +
+								( CKEDITOR.env.ie && CKEDITOR.env.quirks ? ';position:relative' : '' ) +
+								'">' +
+									'<legend style="display:block;width:0;height:0;overflow:hidden;' +
+									( CKEDITOR.env.ie && CKEDITOR.env.quirks ? 'position:absolute' : '' ) +
+									'">' +
+										CKEDITOR.tools.htmlEncode( accTitle ) +
+									'</legend>' +
+								'</fieldset>'
+								, CKEDITOR.document );
+							iframe.appendTo( fieldset );
+							fieldset.appendTo( mainElement );
+						}
+
+						if ( !CKEDITOR.env.ie )
+							mainElement.append( iframe );
+					};
+
+					// The script that is appended to the data being loaded. It
+					// enables editing, and makes some
+					var activationScript =
+						'<script id="cke_actscrpt" type="text/javascript">' +
+							'window.onload = function()' +
+							'{' +
+								// Call the temporary function for the editing
+								// boostrap.
+								'window.parent.CKEDITOR._["contentDomReady' + editor.name + '"]( window );' +
+							'}' +
+						'</script>';
+
+					// Editing area bootstrap code.
+					var contentDomReady = function( domWindow )
+					{
+						if ( frameLoaded )
+							return;
+
+						frameLoaded = 1;
+
+						var domDocument = domWindow.document,
+							body = domDocument.body;
+
+						// Remove this script from the DOM.
+						var script = domDocument.getElementById( "cke_actscrpt" );
+						script.parentNode.removeChild( script );
+
+						delete CKEDITOR._[ 'contentDomReady' + editor.name ];
+
+						body.spellcheck = !editor.config.disableNativeSpellChecker;
+
+						if ( CKEDITOR.env.ie )
+						{
+							// Don't display the focus border.
+							body.hideFocus = true;
+
+							// Disable and re-enable the body to avoid IE from
+							// taking the editing focus at startup. (#141 / #523)
+							body.disabled = true;
+							body.contentEditable = true;
+							body.removeAttribute( 'disabled' );
+						}
+						else
+							domDocument.designMode = 'on';
+
+						// IE, Opera and Safari may not support it and throw
+						// errors.
+						try { domDocument.execCommand( 'enableObjectResizing', false, !editor.config.disableObjectResizing ) ; } catch(e) {}
+						try { domDocument.execCommand( 'enableInlineTableEditing', false, !editor.config.disableNativeTableHandles ) ; } catch(e) {}
+
+						domWindow	= editor.window		= new CKEDITOR.dom.window( domWindow );
+						domDocument	= editor.document	= new CKEDITOR.dom.document( domDocument );
+
+						// Gecko/Webkit need some help when selecting control type elements. (#3448)
+						if ( !( CKEDITOR.env.ie || CKEDITOR.env.opera) )
+						{
+							domDocument.on( 'mousedown', function( ev )
+							{
+								var control = ev.data.getTarget();
+								if ( control.is( 'img', 'hr', 'input', 'textarea', 'select' ) )
+									editor.getSelection().selectElement( control );
+							} );
+						}
+
+						// Webkit: avoid from editing form control elements content.
+						if ( CKEDITOR.env.webkit )
+						{
+							// Prevent from tick checkbox/radiobox/select
+							domDocument.on( 'click', function( ev )
+							{
+								if ( ev.data.getTarget().is( 'input', 'select' ) )
+									ev.data.preventDefault();
+							} );
+
+							// Prevent from editig textfield/textarea value.
+							domDocument.on( 'mouseup', function( ev )
+							{
+								if ( ev.data.getTarget().is( 'input', 'textarea' ) )
+									ev.data.preventDefault();
+							} );
+						}
+
+						var focusTarget = ( CKEDITOR.env.ie || CKEDITOR.env.webkit ) ?
+								domWindow : domDocument;
+
+						focusTarget.on( 'blur', function()
+							{
+								editor.focusManager.blur();
+							});
+
+						focusTarget.on( 'focus', function()
+							{
+								// Gecko need a key event to 'wake up' the editing
+								// ability when document is empty.(#3864)
+								if ( CKEDITOR.env.gecko )
+								{
+									var first = body;
+									while( first.firstChild )
+										first = first.firstChild;
+
+									if( !first.nextSibling
+										&& ( 'BR' == first.tagName )
+										&& first.hasAttribute( '_moz_editor_bogus_node' ) )
+									{
+										var keyEventSimulate = domDocument.$.createEvent( "KeyEvents" );
+										keyEventSimulate.initKeyEvent( 'keypress', true, true, domWindow.$, false,
+											false, false, false, 0, 32 );
+										domDocument.$.dispatchEvent( keyEventSimulate );
+										var bogusText = domDocument.getBody().getFirst() ;
+										// Compensate the line maintaining <br> if enterMode is not block.
+										if ( editor.config.enterMode == CKEDITOR.ENTER_BR )
+											domDocument.createElement( 'br', { attributes: { '_moz_dirty' : "" } } )
+												.replace( bogusText );
+										else
+											bogusText.remove();
+									}
+								}
+
+								editor.focusManager.focus();
+							});
+
+						var keystrokeHandler = editor.keystrokeHandler;
+						if ( keystrokeHandler )
+							keystrokeHandler.attach( domDocument );
+
+						// Cancel default action for backspace in IE on control types. (#4047)
+						if ( CKEDITOR.env.ie )
+						{
+							editor.on( 'key', function( event )
+							{
+								// Backspace.
+								var control = event.data.keyCode == 8
+											  && editor.getSelection().getSelectedElement();
+								if ( control )
+								{
+									// Make undo snapshot.
+									editor.fire( 'saveSnapshot' );
+									// Remove manually.
+									control.remove();
+									editor.fire( 'saveSnapshot' );
+									event.cancel();
+								}
+							} );
+						}
+
+						// Adds the document body as a context menu target.
+						if ( editor.contextMenu )
+							editor.contextMenu.addTarget( domDocument );
+
+						setTimeout( function()
+							{
+								editor.fire( 'contentDom' );
+
+								if ( fireMode )
+								{
+									editor.mode = 'wysiwyg';
+									editor.fire( 'mode' );
+									fireMode = false;
+								}
+
+								isLoadingData = false;
+
+								if ( isPendingFocus )
+								{
+									editor.focus();
+									isPendingFocus = false;
+								}
+								setTimeout( function()
+								{
+									editor.fire( 'dataReady' );
+								}, 0 );
+
+								/*
+								 * IE BUG: IE might have rendered the iframe with invisible contents.
+								 * (#3623). Push some inconsequential CSS style changes to force IE to
+								 * refresh it.
+								 *
+								 * Also, for some unknown reasons, short timeouts (e.g. 100ms) do not
+								 * fix the problem. :(
+								 */
+								if ( CKEDITOR.env.ie )
+								{
+									setTimeout( function()
+										{
+											if ( editor.document )
+											{
+												var $body = editor.document.$.body;
+												$body.runtimeStyle.marginBottom = '0px';
+												$body.runtimeStyle.marginBottom = '';
+											}
+										}, 1000 );
+								}
+							},
+							0 );
+					};
+
+					editor.addMode( 'wysiwyg',
+						{
+							load : function( holderElement, data, isSnapshot )
+							{
+								mainElement = holderElement;
+
+								if ( CKEDITOR.env.ie && CKEDITOR.env.quirks )
+									holderElement.setStyle( 'position', 'relative' );
+
+								// The editor data "may be dirty" after this
+								// point.
+								editor.mayBeDirty = true;
+
+								fireMode = true;
+
+								if ( isSnapshot )
+									this.loadSnapshotData( data );
+								else
+									this.loadData( data );
+							},
+
+							loadData : function( data )
+							{
+								isLoadingData = true;
+
+								// Get the HTML version of the data.
+								if ( editor.dataProcessor )
+								{
+									data = editor.dataProcessor.toHtml( data, fixForBody );
+								}
+
+								data =
+									editor.config.docType +
+									'<html dir="' + editor.config.contentsLangDirection + '">' +
+									'<head>' +
+										'<link type="text/css" rel="stylesheet" href="' +
+										[].concat( editor.config.contentsCss ).join( '"><link type="text/css" rel="stylesheet" href="' ) +
+										'">' +
+										'<style type="text/css" _fcktemp="true">' +
+											editor._.styles.join( '\n' ) +
+										'</style>'+
+									'</head>' +
+									'<body>' +
+										data +
+									'</body>' +
+									'</html>' +
+									activationScript;
+
+								window[ '_cke_htmlToLoad_' + editor.name ] = data;
+								CKEDITOR._[ 'contentDomReady' + editor.name ] = contentDomReady;
+								createIFrame();
+
+								// Opera must use the old method for loading contents.
+								if ( CKEDITOR.env.opera )
+								{
+									var doc = iframe.$.contentWindow.document;
+									doc.open();
+									doc.write( data );
+									doc.close();
+								}
+							},
+
+							getData : function()
+							{
+								var data = iframe.getFrameDocument().getBody().getHtml();
+
+								if ( editor.dataProcessor )
+									data = editor.dataProcessor.toDataFormat( data, fixForBody );
+
+								// Strip the last blank paragraph within document.
+								if ( editor.config.ignoreEmptyParagraph )
+									data = data.replace( emptyParagraphRegexp, '' );
+
+								return data;
+							},
+
+							getSnapshotData : function()
+							{
+								return iframe.getFrameDocument().getBody().getHtml();
+							},
+
+							loadSnapshotData : function( data )
+							{
+								iframe.getFrameDocument().getBody().setHtml( data );
+							},
+
+							unload : function( holderElement )
+							{
+								editor.window = editor.document = iframe = mainElement = isPendingFocus = null;
+
+								editor.fire( 'contentDomUnload' );
+							},
+
+							focus : function()
+							{
+								if ( isLoadingData )
+									isPendingFocus = true;
+								else if ( editor.window )
+								{
+									editor.window.focus();
+									editor.selectionChange();
+								}
+							}
+						});
+
+					editor.on( 'insertHtml', onInsertHtml, null, null, 20 );
+					editor.on( 'insertElement', onInsertElement, null, null, 20 );
+					// Auto fixing on some document structure weakness to enhance usabilities. (#3190 and #3189)
+					editor.on( 'selectionChange', onSelectionChangeFixBody, null, null, 1 );
+				});
+		}
+	});
+})();
+
+/**
+ * Disables the ability of resize objects (image and tables) in the editing
+ * area.
+ * @type Boolean
+ * @default false
+ * @example
+ * config.disableObjectResizing = true;
+ */
+CKEDITOR.config.disableObjectResizing = false;
+
+/**
+ * Disables the "table tools" offered natively by the browser (currently
+ * Firefox only) to make quick table editing operations, like adding or
+ * deleting rows and columns.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.disableNativeTableHandles = false;
+ */
+CKEDITOR.config.disableNativeTableHandles = true;
+
+/**
+ * Disables the built-in spell checker while typing natively available in the
+ * browser (currently Firefox and Safari only).<br /><br />
+ *
+ * Even if word suggestions will not appear in the CKEditor context menu, this
+ * feature is useful to help quickly identifying misspelled words.<br /><br />
+ *
+ * This setting is currently compatible with Firefox only due to limitations in
+ * other browsers.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.disableNativeSpellChecker = false;
+ */
+CKEDITOR.config.disableNativeSpellChecker = true;
+
+/**
+ * Whether the editor must output an empty value ("") if it's contents is made
+ * by an empty paragraph only.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.ignoreEmptyParagraph = false;
+ */
+CKEDITOR.config.ignoreEmptyParagraph = true;
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/list/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/list/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/list/plugin.js	(revision 2000)
@@ -0,0 +1,570 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Insert and remove numbered and bulleted lists.
+ */
+
+(function()
+{
+	var listNodeNames = { ol : 1, ul : 1 },
+		emptyTextRegex = /^[\n\r\t ]*$/;
+
+	CKEDITOR.plugins.list = {
+		/*
+		 * Convert a DOM list tree into a data structure that is easier to
+		 * manipulate. This operation should be non-intrusive in the sense that it
+		 * does not change the DOM tree, with the exception that it may add some
+		 * markers to the list item nodes when database is specified.
+		 */
+		listToArray : function( listNode, database, baseArray, baseIndentLevel, grandparentNode )
+		{
+			if ( !listNodeNames[ listNode.getName() ] )
+				return [];
+
+			if ( !baseIndentLevel )
+				baseIndentLevel = 0;
+			if ( !baseArray )
+				baseArray = [];
+
+			// Iterate over all list items to get their contents and look for inner lists.
+			for ( var i = 0, count = listNode.getChildCount() ; i < count ; i++ )
+			{
+				var listItem = listNode.getChild( i );
+
+				// It may be a text node or some funny stuff.
+				if ( listItem.$.nodeName.toLowerCase() != 'li' )
+					continue;
+				var itemObj = { 'parent' : listNode, indent : baseIndentLevel, contents : [] };
+				if ( !grandparentNode )
+				{
+					itemObj.grandparent = listNode.getParent();
+					if ( itemObj.grandparent && itemObj.grandparent.$.nodeName.toLowerCase() == 'li' )
+						itemObj.grandparent = itemObj.grandparent.getParent();
+				}
+				else
+					itemObj.grandparent = grandparentNode;
+
+				if ( database )
+					CKEDITOR.dom.element.setMarker( database, listItem, 'listarray_index', baseArray.length );
+				baseArray.push( itemObj );
+
+				for ( var j = 0, itemChildCount = listItem.getChildCount() ; j < itemChildCount ; j++ )
+				{
+					var child = listItem.getChild( j );
+					if ( child.type == CKEDITOR.NODE_ELEMENT && listNodeNames[ child.getName() ] )
+						// Note the recursion here, it pushes inner list items with
+						// +1 indentation in the correct order.
+						CKEDITOR.plugins.list.listToArray( child, database, baseArray, baseIndentLevel + 1, itemObj.grandparent );
+					else
+						itemObj.contents.push( child );
+				}
+			}
+			return baseArray;
+		},
+
+		// Convert our internal representation of a list back to a DOM forest.
+		arrayToList : function( listArray, database, baseIndex, paragraphMode )
+		{
+			if ( !baseIndex )
+				baseIndex = 0;
+			if ( !listArray || listArray.length < baseIndex + 1 )
+				return null;
+			var doc = listArray[ baseIndex ].parent.getDocument(),
+				retval = new CKEDITOR.dom.documentFragment( doc ),
+				rootNode = null,
+				currentIndex = baseIndex,
+				indentLevel = Math.max( listArray[ baseIndex ].indent, 0 ),
+				currentListItem = null,
+				paragraphName = ( paragraphMode == CKEDITOR.ENTER_P ? 'p' : 'div' );
+			while ( true )
+			{
+				var item = listArray[ currentIndex ];
+				if ( item.indent == indentLevel )
+				{
+					if ( !rootNode || listArray[ currentIndex ].parent.getName() != rootNode.getName() )
+					{
+						rootNode = listArray[ currentIndex ].parent.clone( false, true );
+						retval.append( rootNode );
+					}
+					currentListItem = rootNode.append( doc.createElement( 'li' ) );
+					for ( var i = 0 ; i < item.contents.length ; i++ )
+						currentListItem.append( item.contents[i].clone( true, true ) );
+					currentIndex++;
+				}
+				else if ( item.indent == Math.max( indentLevel, 0 ) + 1 )
+				{
+					var listData = CKEDITOR.plugins.list.arrayToList( listArray, null, currentIndex, paragraphMode );
+					currentListItem.append( listData.listNode );
+					currentIndex = listData.nextIndex;
+				}
+				else if ( item.indent == -1 && !baseIndex && item.grandparent )
+				{
+					currentListItem;
+					if ( listNodeNames[ item.grandparent.getName() ] )
+						currentListItem = doc.createElement( 'li' );
+					else
+					{
+						if ( paragraphMode != CKEDITOR.ENTER_BR && item.grandparent.getName() != 'td' )
+							currentListItem = doc.createElement( paragraphName );
+						else
+							currentListItem = new CKEDITOR.dom.documentFragment( doc );
+					}
+
+					for ( i = 0 ; i < item.contents.length ; i++ )
+						currentListItem.append( item.contents[i].clone( true, true ) );
+
+					if ( currentListItem.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT
+						 && currentIndex != listArray.length - 1 )
+					{
+						if ( currentListItem.getLast()
+								&& currentListItem.getLast().type == CKEDITOR.NODE_ELEMENT
+								&& currentListItem.getLast().getAttribute( 'type' ) == '_moz' )
+							currentListItem.getLast().remove();
+						currentListItem.appendBogus();
+					}
+
+					if ( currentListItem.type == CKEDITOR.NODE_ELEMENT &&
+							currentListItem.getName() == paragraphName &&
+							currentListItem.$.firstChild )
+					{
+						currentListItem.trim();
+						var firstChild = currentListItem.getFirst();
+						if ( firstChild.type == CKEDITOR.NODE_ELEMENT && firstChild.isBlockBoundary() )
+						{
+							var tmp = new CKEDITOR.dom.documentFragment( doc );
+							currentListItem.moveChildren( tmp );
+							currentListItem = tmp;
+						}
+					}
+
+					var currentListItemName = currentListItem.$.nodeName.toLowerCase();
+					if ( !CKEDITOR.env.ie && ( currentListItemName == 'div' || currentListItemName == 'p' ) )
+						currentListItem.appendBogus();
+					retval.append( currentListItem );
+					rootNode = null;
+					currentIndex++;
+				}
+				else
+					return null;
+
+				if ( listArray.length <= currentIndex || Math.max( listArray[ currentIndex ].indent, 0 ) < indentLevel )
+					break;
+			}
+
+			// Clear marker attributes for the new list tree made of cloned nodes, if any.
+			if ( database )
+			{
+				var currentNode = retval.getFirst();
+				while ( currentNode )
+				{
+					if ( currentNode.type == CKEDITOR.NODE_ELEMENT )
+						CKEDITOR.dom.element.clearMarkers( database, currentNode );
+					currentNode = currentNode.getNextSourceNode();
+				}
+			}
+
+			return { listNode : retval, nextIndex : currentIndex };
+		}
+	};
+
+	function setState( editor, state )
+	{
+		editor.getCommand( this.name ).setState( state );
+	}
+
+	function onSelectionChange( evt )
+	{
+		var path = evt.data.path,
+			blockLimit = path.blockLimit,
+			elements = path.elements,
+			element;
+
+		// Grouping should only happen under blockLimit.(#3940).
+		for ( var i = 0 ; i < elements.length && ( element = elements[ i ] )
+			  && !element.equals( blockLimit ); i++ )
+		{
+			if ( listNodeNames[ elements[i].getName() ] )
+			{
+				return setState.call( this, evt.editor,
+						this.type == elements[i].getName() ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF );
+			}
+		}
+
+		return setState.call( this, evt.editor, CKEDITOR.TRISTATE_OFF );
+	}
+
+	function changeListType( editor, groupObj, database, listsCreated )
+	{
+		// This case is easy...
+		// 1. Convert the whole list into a one-dimensional array.
+		// 2. Change the list type by modifying the array.
+		// 3. Recreate the whole list by converting the array to a list.
+		// 4. Replace the original list with the recreated list.
+		var listArray = CKEDITOR.plugins.list.listToArray( groupObj.root, database ),
+			selectedListItems = [];
+
+		for ( var i = 0 ; i < groupObj.contents.length ; i++ )
+		{
+			var itemNode = groupObj.contents[i];
+			itemNode = itemNode.getAscendant( 'li', true );
+			if ( !itemNode || itemNode.getCustomData( 'list_item_processed' ) )
+				continue;
+			selectedListItems.push( itemNode );
+			CKEDITOR.dom.element.setMarker( database, itemNode, 'list_item_processed', true );
+		}
+
+		var fakeParent = groupObj.root.getDocument().createElement( this.type );
+		for ( i = 0 ; i < selectedListItems.length ; i++ )
+		{
+			var listIndex = selectedListItems[i].getCustomData( 'listarray_index' );
+			listArray[listIndex].parent = fakeParent;
+		}
+		var newList = CKEDITOR.plugins.list.arrayToList( listArray, database, null, editor.config.enterMode );
+		var child, length = newList.listNode.getChildCount();
+		for ( i = 0 ; i < length && ( child = newList.listNode.getChild( i ) ) ; i++ )
+		{
+			if ( child.getName() == this.type )
+				listsCreated.push( child );
+		}
+		newList.listNode.replace( groupObj.root );
+	}
+
+	function createList( editor, groupObj, listsCreated )
+	{
+		var contents = groupObj.contents,
+			doc = groupObj.root.getDocument(),
+			listContents = [];
+
+		// It is possible to have the contents returned by DomRangeIterator to be the same as the root.
+		// e.g. when we're running into table cells.
+		// In such a case, enclose the childNodes of contents[0] into a <div>.
+		if ( contents.length == 1 && contents[0].equals( groupObj.root ) )
+		{
+			var divBlock = doc.createElement( 'div' );
+			contents[0].moveChildren && contents[0].moveChildren( divBlock );
+			contents[0].append( divBlock );
+			contents[0] = divBlock;
+		}
+
+		// Calculate the common parent node of all content blocks.
+		var commonParent = groupObj.contents[0].getParent();
+		for ( var i = 0 ; i < contents.length ; i++ )
+			commonParent = commonParent.getCommonAncestor( contents[i].getParent() );
+
+		// We want to insert things that are in the same tree level only, so calculate the contents again
+		// by expanding the selected blocks to the same tree level.
+		for ( i = 0 ; i < contents.length ; i++ )
+		{
+			var contentNode = contents[i],
+				parentNode;
+			while ( ( parentNode = contentNode.getParent() ) )
+			{
+				if ( parentNode.equals( commonParent ) )
+				{
+					listContents.push( contentNode );
+					break;
+				}
+				contentNode = parentNode;
+			}
+		}
+
+		if ( listContents.length < 1 )
+			return;
+
+		// Insert the list to the DOM tree.
+		var insertAnchor = listContents[ listContents.length - 1 ].getNext(),
+			listNode = doc.createElement( this.type );
+
+		listsCreated.push( listNode );
+		while ( listContents.length )
+		{
+			var contentBlock = listContents.shift(),
+				listItem = doc.createElement( 'li' );
+			contentBlock.moveChildren( listItem );
+			contentBlock.remove();
+			listItem.appendTo( listNode );
+
+			// Append a bogus BR to force the LI to render at full height
+			if ( !CKEDITOR.env.ie )
+				listItem.appendBogus();
+		}
+		if ( insertAnchor )
+			listNode.insertBefore( insertAnchor );
+		else
+			listNode.appendTo( commonParent );
+	}
+
+	function removeList( editor, groupObj, database )
+	{
+		// This is very much like the change list type operation.
+		// Except that we're changing the selected items' indent to -1 in the list array.
+		var listArray = CKEDITOR.plugins.list.listToArray( groupObj.root, database ),
+			selectedListItems = [];
+
+		for ( var i = 0 ; i < groupObj.contents.length ; i++ )
+		{
+			var itemNode = groupObj.contents[i];
+			itemNode = itemNode.getAscendant( 'li', true );
+			if ( !itemNode || itemNode.getCustomData( 'list_item_processed' ) )
+				continue;
+			selectedListItems.push( itemNode );
+			CKEDITOR.dom.element.setMarker( database, itemNode, 'list_item_processed', true );
+		}
+
+		var lastListIndex = null;
+		for ( i = 0 ; i < selectedListItems.length ; i++ )
+		{
+			var listIndex = selectedListItems[i].getCustomData( 'listarray_index' );
+			listArray[listIndex].indent = -1;
+			lastListIndex = listIndex;
+		}
+
+		// After cutting parts of the list out with indent=-1, we still have to maintain the array list
+		// model's nextItem.indent <= currentItem.indent + 1 invariant. Otherwise the array model of the
+		// list cannot be converted back to a real DOM list.
+		for ( i = lastListIndex + 1 ; i < listArray.length ; i++ )
+		{
+			if ( listArray[i].indent > listArray[i-1].indent + 1 )
+			{
+				var indentOffset = listArray[i-1].indent + 1 - listArray[i].indent;
+				var oldIndent = listArray[i].indent;
+				while ( listArray[i] && listArray[i].indent >= oldIndent )
+				{
+					listArray[i].indent += indentOffset;
+					i++;
+				}
+				i--;
+			}
+		}
+
+		var newList = CKEDITOR.plugins.list.arrayToList( listArray, database, null, editor.config.enterMode );
+
+		// Compensate <br> before/after the list node if the surrounds are non-blocks.(#3836)
+		var docFragment = newList.listNode, boundaryNode, siblingNode;
+		function compensateBrs( isStart )
+		{
+			if ( ( boundaryNode = docFragment[ isStart ? 'getFirst' : 'getLast' ]() )
+				 && !( boundaryNode.is && boundaryNode.isBlockBoundary() )
+				 && ( siblingNode = groupObj.root[ isStart ? 'getPrevious' : 'getNext' ]
+				      ( CKEDITOR.dom.walker.whitespaces( true ) ) )
+				 && !( siblingNode.is && siblingNode.isBlockBoundary( { br : 1 } ) ) )
+				editor.document.createElement( 'br' )[ isStart ? 'insertBefore' : 'insertAfter' ]( boundaryNode );
+		}
+		compensateBrs( true );
+		compensateBrs();
+
+		var rootParent = groupObj.root.getParent();
+		docFragment.replace( groupObj.root );
+	}
+
+	function listCommand( name, type )
+	{
+		this.name = name;
+		this.type = type;
+	}
+
+	listCommand.prototype = {
+		exec : function( editor )
+		{
+			editor.focus();
+
+			var doc = editor.document,
+				selection = editor.getSelection(),
+				ranges = selection && selection.getRanges();
+
+			// There should be at least one selected range.
+			if ( !ranges || ranges.length < 1 )
+				return;
+
+			// Midas lists rule #1 says we can create a list even in an empty document.
+			// But DOM iterator wouldn't run if the document is really empty.
+			// So create a paragraph if the document is empty and we're going to create a list.
+			if ( this.state == CKEDITOR.TRISTATE_OFF )
+			{
+				var body = doc.getBody();
+				body.trim();
+				if ( !body.getFirst() )
+				{
+					var paragraph = doc.createElement( editor.config.enterMode == CKEDITOR.ENTER_P ? 'p' :
+							( editor.config.enterMode == CKEDITOR.ENTER_DIV ? 'div' : 'br' ) );
+					paragraph.appendTo( body );
+					ranges = [ new CKEDITOR.dom.range( doc ) ];
+					// IE exception on inserting anything when anchor inside <br>.
+					if ( paragraph.is( 'br' ) )
+					{
+						ranges[ 0 ].setStartBefore( paragraph );
+						ranges[ 0 ].setEndAfter( paragraph );
+					}
+					else
+						ranges[ 0 ].selectNodeContents( paragraph );
+					selection.selectRanges( ranges );
+				}
+				// Maybe a single range there enclosing the whole list,
+				// turn on the list state manually(#4129).
+				else
+				{
+					var range = ranges.length == 1 && ranges[ 0 ],
+						enclosedNode = range && range.getEnclosedNode();
+					if ( enclosedNode && enclosedNode.is
+						&& this.type == enclosedNode.getName() )
+					{
+						setState.call( this, editor, CKEDITOR.TRISTATE_ON );
+					}
+				}
+			}
+
+			var bookmarks = selection.createBookmarks( true );
+
+			// Group the blocks up because there are many cases where multiple lists have to be created,
+			// or multiple lists have to be cancelled.
+			var listGroups = [],
+				database = {};
+
+			while ( ranges.length > 0 )
+			{
+				range = ranges.shift();
+
+				var boundaryNodes = range.getBoundaryNodes(),
+					startNode = boundaryNodes.startNode,
+					endNode = boundaryNodes.endNode;
+
+				if ( startNode.type == CKEDITOR.NODE_ELEMENT && startNode.getName() == 'td' )
+					range.setStartAt( boundaryNodes.startNode, CKEDITOR.POSITION_AFTER_START );
+
+				if ( endNode.type == CKEDITOR.NODE_ELEMENT && endNode.getName() == 'td' )
+					range.setEndAt( boundaryNodes.endNode, CKEDITOR.POSITION_BEFORE_END );
+
+				var iterator = range.createIterator(),
+					block;
+
+				iterator.forceBrBreak = ( this.state == CKEDITOR.TRISTATE_OFF );
+
+				while ( ( block = iterator.getNextParagraph() ) )
+				{
+					var path = new CKEDITOR.dom.elementPath( block ),
+						listNode = null,
+						processedFlag = false,
+						blockLimit = path.blockLimit,
+						element;
+
+					// First, try to group by a list ancestor.
+					for ( var i = 0 ; i < path.elements.length &&
+						  ( element = path.elements[ i ] ) && !element.equals( blockLimit ); i++ )
+					{
+						if ( listNodeNames[ element.getName() ] )
+						{
+							// If we've encountered a list inside a block limit
+							// The last group object of the block limit element should
+							// no longer be valid. Since paragraphs after the list
+							// should belong to a different group of paragraphs before
+							// the list. (Bug #1309)
+							blockLimit.removeCustomData( 'list_group_object' );
+
+							var groupObj = element.getCustomData( 'list_group_object' );
+							if ( groupObj )
+								groupObj.contents.push( block );
+							else
+							{
+								groupObj = { root : element, contents : [ block ] };
+								listGroups.push( groupObj );
+								CKEDITOR.dom.element.setMarker( database, element, 'list_group_object', groupObj );
+							}
+							processedFlag = true;
+							break;
+						}
+					}
+
+					if ( processedFlag )
+						continue;
+
+					// No list ancestor? Group by block limit.
+					var root = blockLimit;
+					if ( root.getCustomData( 'list_group_object' ) )
+						root.getCustomData( 'list_group_object' ).contents.push( block );
+					else
+					{
+						groupObj = { root : root, contents : [ block ] };
+						CKEDITOR.dom.element.setMarker( database, root, 'list_group_object', groupObj );
+						listGroups.push( groupObj );
+					}
+				}
+			}
+
+			// Now we have two kinds of list groups, groups rooted at a list, and groups rooted at a block limit element.
+			// We either have to build lists or remove lists, for removing a list does not makes sense when we are looking
+			// at the group that's not rooted at lists. So we have three cases to handle.
+			var listsCreated = [];
+			while ( listGroups.length > 0 )
+			{
+				groupObj = listGroups.shift();
+				if ( this.state == CKEDITOR.TRISTATE_OFF )
+				{
+					if ( listNodeNames[ groupObj.root.getName() ] )
+						changeListType.call( this, editor, groupObj, database, listsCreated );
+					else
+						createList.call( this, editor, groupObj, listsCreated );
+				}
+				else if ( this.state == CKEDITOR.TRISTATE_ON && listNodeNames[ groupObj.root.getName() ] )
+					removeList.call( this, editor, groupObj, database );
+			}
+
+			// For all new lists created, merge adjacent, same type lists.
+			for ( i = 0 ; i < listsCreated.length ; i++ )
+			{
+				listNode = listsCreated[i];
+				var mergeSibling, listCommand = this;
+				( mergeSibling = function( rtl ){
+
+					var sibling = listNode[ rtl ?
+						'getPrevious' : 'getNext' ]( CKEDITOR.dom.walker.whitespaces( true ) );
+					if ( sibling && sibling.getName &&
+					     sibling.getName() == listCommand.type )
+					{
+						sibling.remove();
+						// Move children order by merge direction.(#3820)
+						sibling.moveChildren( listNode, rtl ? true : false );
+					}
+				} )();
+				mergeSibling( true );
+			}
+
+			// Clean up, restore selection and update toolbar button states.
+			CKEDITOR.dom.element.clearAllMarkers( database );
+			selection.selectBookmarks( bookmarks );
+			editor.focus();
+		}
+	};
+
+	CKEDITOR.plugins.add( 'list',
+	{
+		init : function( editor )
+		{
+			// Register commands.
+			var numberedListCommand = new listCommand( 'numberedlist', 'ol' ),
+				bulletedListCommand = new listCommand( 'bulletedlist', 'ul' );
+			editor.addCommand( 'numberedlist', numberedListCommand );
+			editor.addCommand( 'bulletedlist', bulletedListCommand );
+
+			// Register the toolbar button.
+			editor.ui.addButton( 'NumberedList',
+				{
+					label : editor.lang.numberedlist,
+					command : 'numberedlist'
+				} );
+			editor.ui.addButton( 'BulletedList',
+				{
+					label : editor.lang.bulletedlist,
+					command : 'bulletedlist'
+				} );
+
+			// Register the state changing handlers.
+			editor.on( 'selectionChange', CKEDITOR.tools.bind( onSelectionChange, numberedListCommand ) );
+			editor.on( 'selectionChange', CKEDITOR.tools.bind( onSelectionChange, bulletedListCommand ) );
+		},
+
+		requires : [ 'domiterator' ]
+	} );
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/lang/en.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/lang/en.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/lang/en.js	(revision 2000)
@@ -0,0 +1,15 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang( 'uicolor', 'en',
+{
+	uicolor :
+	{
+		title : 'UI Color Picker',
+		preview : 'Live preview',
+		config : 'Paste this string into your config.js file',
+		predefined : 'Predefined color sets'
+	}
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/dialogs/uicolor.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/dialogs/uicolor.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/dialogs/uicolor.js	(revision 2000)
@@ -0,0 +1,204 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'uicolor', function( editor )
+{
+	var dialog, picker, pickerContents,
+		// Actual UI color value.
+		uiColor = editor.getUiColor();
+
+	function setNewPickerColor( color )
+	{
+		// Convert HEX representation to RGB, stripping # char.
+		if ( /^#/.test( color ) )
+			color = window.YAHOO.util.Color.hex2rgb( color.substr( 1 ) );
+		picker.setValue( color, true );
+		// Refresh picker UI.
+		picker.refresh( 'cke_uicolor_picker' );
+	}
+
+	function setNewUiColor( color, force )
+	{
+		if ( force || dialog._.contents.tab1.livePeview.getValue() )
+			editor.setUiColor( color );
+		// Write new config string into textbox.
+		dialog._.contents.tab1.configBox.setValue(
+			'config.uiColor = "#' + picker.get( "hex" ) + '"'
+		);
+	}
+
+	pickerContents =
+	{
+		id : 'yuiColorPicker',
+		type : 'html',
+		html : "<div id='cke_uicolor_picker' style='width: 360px; height: 200px; position: relative;'></div>",
+		onLoad : function( event )
+		{
+			var url = CKEDITOR.getUrl(
+					'_source/' + // @Packager.RemoveLine
+					'plugins/uicolor/yui/'
+				);
+
+			// Create new color picker widget.
+			picker = new window.YAHOO.widget.ColorPicker( "cke_uicolor_picker",
+				{
+					showhsvcontrols : true,
+					showhexcontrols : true,
+					images :
+					{
+						PICKER_THUMB : url + "assets/picker_thumb.png",
+						HUE_THUMB : url + "assets/hue_thumb.png"
+					}
+				});
+
+			// Set actual UI color to the picker.
+			if ( uiColor )
+				setNewPickerColor( uiColor );
+
+			// Subscribe to the rgbChange event.
+			picker.on( "rgbChange", function()
+				{
+					// Reset predefined box.
+					dialog._.contents.tab1.predefined.setValue( '' );
+					setNewUiColor( '#' + picker.get( 'hex' ) );
+				});
+
+			// Fix input class names.
+			var inputs = new CKEDITOR.dom.nodeList( picker.getElementsByTagName( 'input' ) );
+			for ( var i = 0; i < inputs.count() ; i++ )
+				inputs.getItem( i ).addClass( 'cke_dialog_ui_input_text' );
+		}
+	};
+
+	var skipPreviewChange = true;
+
+	return {
+		title : editor.lang.uicolor.title,
+		minWidth : 360,
+		minHeight : 320,
+		onLoad : function()
+		{
+			dialog = this;
+			this.setupContent();
+
+			// #3808
+			if ( CKEDITOR.env.ie7Compat )
+				dialog.parts.contents.setStyle( 'overflow', 'hidden' );
+		},
+		contents : [
+			{
+				id : 'tab1',
+				label : '',
+				title : '',
+				expand : true,
+				padding : 0,
+				elements : [
+						pickerContents,
+						{
+							id : 'tab1',
+							type : 'vbox',
+							children :
+							[
+								{
+									id : 'livePeview',
+									type : 'checkbox',
+									label : editor.lang.uicolor.preview,
+									'default' : 1,
+									onLoad : function()
+									{
+										skipPreviewChange = true;
+									},
+									onChange : function()
+									{
+										if ( skipPreviewChange )
+											return;
+										var on = this.getValue(),
+											color = on ? '#' + picker.get( 'hex' ) : uiColor;
+										setNewUiColor( color, true );
+									}
+								},
+								{
+									type : 'hbox',
+									children :
+									[
+										{
+											id : 'predefined',
+											type : 'select',
+											'default' : '',
+											label : editor.lang.uicolor.predefined,
+											items :
+											[
+												[ '' ],
+												[ 'Light blue', '#9AB8F3' ],
+												[ 'Sand', '#D2B48C' ],
+												[ 'Metallic', '#949AAA' ],
+												[ 'Purple', '#C2A3C7' ],
+												[ 'Olive', '#A2C980' ],
+												[ 'Happy green', '#9BD446' ],
+												[ 'Jezebel Blue', '#14B8C4' ],
+												[ 'Burn', '#FF893A' ],
+												[ 'Easy red', '#FF6969' ],
+												[ 'Pisces 3', '#48B4F2' ],
+												[ 'Aquarius 5', '#487ED4' ],
+												[ 'Absinthe', '#A8CF76' ],
+												[ 'Scrambled Egg', '#C7A622' ],
+												[ 'Hello monday', '#8E8D80' ],
+												[ 'Lovely sunshine', '#F1E8B1' ],
+												[ 'Recycled air', '#B3C593' ],
+												[ 'Down', '#BCBCA4' ],
+												[ 'Mark Twain', '#CFE91D' ],
+												[ 'Specks of dust', '#D1B596' ],
+												[ 'Lollipop', '#F6CE23' ]
+											],
+											onChange : function()
+											{
+												var color = this.getValue();
+												if ( color )
+												{
+													setNewPickerColor( color );
+													setNewUiColor( color );
+													// Refresh predefined preview box.
+													CKEDITOR.document.getById( 'predefinedPreview' ).setStyle( 'background', color );
+												}
+												else
+													CKEDITOR.document.getById( 'predefinedPreview' ).setStyle( 'background', '' );
+											},
+											onShow : function()
+											{
+												var color = editor.getUiColor();
+												if ( color )
+													this.setValue( color );
+											}
+										},
+										{
+											id : 'predefinedPreview',
+											type : 'html',
+											html : '<div id="cke_uicolor_preview" style="border: 1px solid black; padding: 3px; width: 30px;">' +
+													'<div id="predefinedPreview" style="width: 30px; height: 30px;">&nbsp;</div>' +
+												'</div>'
+										}
+									]
+								},
+								{
+									id : 'configBox',
+									type : 'text',
+									label : editor.lang.uicolor.config,
+									onShow : function()
+									{
+										var color = editor.getUiColor();
+										if ( color )
+											this.setValue(
+												'config.uiColor = "' + color + '"'
+											);
+									}
+								}
+							]
+						}
+					]
+			}
+		],
+		buttons : [ CKEDITOR.dialog.okButton ]
+	};
+} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/yui/yui.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/yui/yui.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/yui/yui.js	(revision 2000)
@@ -0,0 +1,71 @@
+﻿/*jsl:ignoreall*/
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=(""+A[C]).split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C){var B=YAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return false;}};YAHOO.register=function(A,E,D){var I=YAHOO.env.modules,B,H,G,F,C;if(!I[A]){I[A]={versions:[],builds:[]};}B=I[A];H=D.version;G=D.build;F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(C=0;C<F.length;C=C+1){F[C](B);}if(E){E.VERSION=H;E.BUILD=G;}else{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(A){return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function(){var C={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0,caja:0},B=navigator.userAgent,A;if((/KHTML/).test(B)){C.webkit=1;}A=B.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){C.webkit=parseFloat(A[1]);if(/ Mobile\//.test(B)){C.mobile="Apple";}else{A=B.match(/NokiaN[^\/]*/);if(A){C.mobile=A[0];}}A=B.match(/AdobeAIR\/([^\s]*)/);if(A){C.air=A[0];}}if(!C.webkit){A=B.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){C.opera=parseFloat(A[1]);A=B.match(/Opera Mini[^;]*/);if(A){C.mobile=A[0];}}else{A=B.match(/MSIE\s([^;]*)/);if(A&&A[1]){C.ie=parseFloat(A[1]);}else{A=B.match(/Gecko\/([^\s]*)/);if(A){C.gecko=1;A=B.match(/rv:([^\s\)]*)/);if(A&&A[1]){C.gecko=parseFloat(A[1]);}}}}}A=B.match(/Caja\/([^\s]*)/);if(A&&A[1]){C.caja=parseFloat(A[1]);}return C;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.env.listeners,D=true,C;if(B){for(C=0;C<A.length;C=C+1){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var B=YAHOO.lang,F="[object Array]",C="[object Function]",A=Object.prototype,E=["toString","valueOf"],D={isArray:function(G){return A.toString.apply(G)===F;},isBoolean:function(G){return typeof G==="boolean";},isFunction:function(G){return A.toString.apply(G)===C;},isNull:function(G){return G===null;},isNumber:function(G){return typeof G==="number"&&isFinite(G);},isObject:function(G){return(G&&(typeof G==="object"||B.isFunction(G)))||false;},isString:function(G){return typeof G==="string";},isUndefined:function(G){return typeof G==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(I,H){var G,K,J;for(G=0;G<E.length;G=G+1){K=E[G];J=H[K];if(B.isFunction(J)&&J!=A[K]){I[K]=J;}}}:function(){},extend:function(J,K,I){if(!K||!J){throw new Error("extend failed, please check that "+"all dependencies are included.");}var H=function(){},G;H.prototype=K.prototype;J.prototype=new H();J.prototype.constructor=J;J.superclass=K.prototype;if(K.prototype.constructor==A.constructor){K.prototype.constructor=K;}if(I){for(G in I){if(B.hasOwnProperty(I,G)){J.prototype[G]=I[G];}}B._IEEnumFix(J.prototype,I);}},augmentObject:function(K,J){if(!J||!K){throw new Error("Absorb failed, verify dependencies.");}var G=arguments,I,L,H=G[2];if(H&&H!==true){for(I=2;I<G.length;I=I+1){K[G[I]]=J[G[I]];}}else{for(L in J){if(H||!(L in K)){K[L]=J[L];}}B._IEEnumFix(K,J);}},augmentProto:function(J,I){if(!I||!J){throw new Error("Augment failed, verify dependencies.");}var G=[J.prototype,I.prototype],H;for(H=2;H<arguments.length;H=H+1){G.push(arguments[H]);}B.augmentObject.apply(this,G);},dump:function(G,L){var I,K,N=[],O="{...}",H="f(){...}",M=", ",J=" => ";if(!B.isObject(G)){return G+"";}else{if(G instanceof Date||("nodeType" in G&&"tagName" in G)){return G;}else{if(B.isFunction(G)){return H;}}}L=(B.isNumber(L))?L:3;if(B.isArray(G)){N.push("[");for(I=0,K=G.length;I<K;I=I+1){if(B.isObject(G[I])){N.push((L>0)?B.dump(G[I],L-1):O);}else{N.push(G[I]);}N.push(M);}if(N.length>1){N.pop();}N.push("]");}else{N.push("{");for(I in G){if(B.hasOwnProperty(G,I)){N.push(I+J);if(B.isObject(G[I])){N.push((L>0)?B.dump(G[I],L-1):O);}else{N.push(G[I]);}N.push(M);}}if(N.length>1){N.pop();}N.push("}");}return N.join("");},substitute:function(V,H,O){var L,K,J,R,S,U,Q=[],I,M="dump",P=" ",G="{",T="}",N;for(;;){L=V.lastIndexOf(G);if(L<0){break;}K=V.indexOf(T,L);if(L+1>=K){break;}I=V.substring(L+1,K);R=I;U=null;J=R.indexOf(P);if(J>-1){U=R.substring(J+1);R=R.substring(0,J);}S=H[R];if(O){S=O(R,S,U);}if(B.isObject(S)){if(B.isArray(S)){S=B.dump(S,parseInt(U,10));}else{U=U||"";N=U.indexOf(M);if(N>-1){U=U.substring(4);}if(S.toString===A.toString||N>-1){S=B.dump(S,parseInt(U,10));}else{S=S.toString();}}}else{if(!B.isString(S)&&!B.isNumber(S)){S="~-"+Q.length+"-~";Q[Q.length]=I;}}V=V.substring(0,L)+S+V.substring(K+1);}for(L=Q.length-1;L>=0;L=L-1){V=V.replace(new RegExp("~-"+L+"-~"),"{"+Q[L]+"}","g");}return V;},trim:function(G){try{return G.replace(/^\s+|\s+$/g,"");}catch(H){return G;}},merge:function(){var J={},H=arguments,G=H.length,I;for(I=0;I<G;I=I+1){B.augmentObject(J,H[I],true);}return J;},later:function(N,H,O,J,K){N=N||0;H=H||{};var I=O,M=J,L,G;if(B.isString(O)){I=H[O];}if(!I){throw new TypeError("method undefined");}if(!B.isArray(M)){M=[J];}L=function(){I.apply(H,M);};G=(K)?setInterval(L,N):setTimeout(L,N);return{interval:K,cancel:function(){if(this.interval){clearInterval(G);}else{clearTimeout(G);}}};},isValue:function(G){return(B.isObject(G)||B.isString(G)||B.isNumber(G)||B.isBoolean(G));}};B.hasOwnProperty=(A.hasOwnProperty)?function(G,H){return G&&G.hasOwnProperty(H);}:function(G,H){return !B.isUndefined(G[H])&&G.constructor.prototype[H]!==G[H];};D.augmentObject(B,D,true);YAHOO.util.Lang=B;B.augment=B.augmentProto;YAHOO.augment=B.augmentProto;YAHOO.extend=B.extend;})();YAHOO.register("yahoo",YAHOO,{version:"2.7.0",build:"1796"});(function(){YAHOO.env._id_counter=YAHOO.env._id_counter||0;var E=YAHOO.util,L=YAHOO.lang,m=YAHOO.env.ua,A=YAHOO.lang.trim,d={},h={},N=/^t(?:able|d|h)$/i,X=/color$/i,K=window.document,W=K.documentElement,e="ownerDocument",n="defaultView",v="documentElement",t="compatMode",b="offsetLeft",P="offsetTop",u="offsetParent",Z="parentNode",l="nodeType",C="tagName",O="scrollLeft",i="scrollTop",Q="getBoundingClientRect",w="getComputedStyle",a="currentStyle",M="CSS1Compat",c="BackCompat",g="class",F="className",J="",B=" ",s="(?:^|\\s)",k="(?= |$)",U="g",p="position",f="fixed",V="relative",j="left",o="top",r="medium",q="borderLeftWidth",R="borderTopWidth",D=m.opera,I=m.webkit,H=m.gecko,T=m.ie;E.Dom={CUSTOM_ATTRIBUTES:(!W.hasAttribute)?{"for":"htmlFor","class":F}:{"htmlFor":"for","className":g},get:function(y){var AA,Y,z,x,G;if(y){if(y[l]||y.item){return y;}if(typeof y==="string"){AA=y;y=K.getElementById(y);if(y&&y.id===AA){return y;}else{if(y&&K.all){y=null;Y=K.all[AA];for(x=0,G=Y.length;x<G;++x){if(Y[x].id===AA){return Y[x];}}}}return y;}if(y.DOM_EVENTS){y=y.get("element");}if("length" in y){z=[];for(x=0,G=y.length;x<G;++x){z[z.length]=E.Dom.get(y[x]);}return z;}return y;}return null;},getComputedStyle:function(G,Y){if(window[w]){return G[e][n][w](G,null)[Y];}else{if(G[a]){return E.Dom.IE_ComputedStyle.get(G,Y);}}},getStyle:function(G,Y){return E.Dom.batch(G,E.Dom._getStyle,Y);},_getStyle:function(){if(window[w]){return function(G,y){y=(y==="float")?y="cssFloat":E.Dom._toCamel(y);var x=G.style[y],Y;if(!x){Y=G[e][n][w](G,null);if(Y){x=Y[y];}}return x;};}else{if(W[a]){return function(G,y){var x;switch(y){case"opacity":x=100;try{x=G.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(z){try{x=G.filters("alpha").opacity;}catch(Y){}}return x/100;case"float":y="styleFloat";default:y=E.Dom._toCamel(y);x=G[a]?G[a][y]:null;return(G.style[y]||x);}};}}}(),setStyle:function(G,Y,x){E.Dom.batch(G,E.Dom._setStyle,{prop:Y,val:x});},_setStyle:function(){if(T){return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){switch(x){case"opacity":if(L.isString(Y.style.filter)){Y.style.filter="alpha(opacity="+y*100+")";if(!Y[a]||!Y[a].hasLayout){Y.style.zoom=1;}}break;case"float":x="styleFloat";default:Y.style[x]=y;}}else{}};}else{return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){if(x=="float"){x="cssFloat";}Y.style[x]=y;}else{}};}}(),getXY:function(G){return E.Dom.batch(G,E.Dom._getXY);},_canPosition:function(G){return(E.Dom._getStyle(G,"display")!=="none"&&E.Dom._inDoc(G));},_getXY:function(){if(K[v][Q]){return function(y){var z,Y,AA,AF,AE,AD,AC,G,x,AB=Math.floor,AG=false;if(E.Dom._canPosition(y)){AA=y[Q]();AF=y[e];z=E.Dom.getDocumentScrollLeft(AF);Y=E.Dom.getDocumentScrollTop(AF);AG=[AB(AA[j]),AB(AA[o])];if(T&&m.ie<8){AE=2;AD=2;AC=AF[t];G=S(AF[v],q);x=S(AF[v],R);if(m.ie===6){if(AC!==c){AE=0;AD=0;}}if((AC==c)){if(G!==r){AE=parseInt(G,10);}if(x!==r){AD=parseInt(x,10);}}AG[0]-=AE;AG[1]-=AD;}if((Y||z)){AG[0]+=z;AG[1]+=Y;}AG[0]=AB(AG[0]);AG[1]=AB(AG[1]);}else{}return AG;};}else{return function(y){var x,Y,AA,AB,AC,z=false,G=y;if(E.Dom._canPosition(y)){z=[y[b],y[P]];x=E.Dom.getDocumentScrollLeft(y[e]);Y=E.Dom.getDocumentScrollTop(y[e]);AC=((H||m.webkit>519)?true:false);while((G=G[u])){z[0]+=G[b];z[1]+=G[P];if(AC){z=E.Dom._calcBorders(G,z);}}if(E.Dom._getStyle(y,p)!==f){G=y;while((G=G[Z])&&G[C]){AA=G[i];AB=G[O];if(H&&(E.Dom._getStyle(G,"overflow")!=="visible")){z=E.Dom._calcBorders(G,z);}if(AA||AB){z[0]-=AB;z[1]-=AA;}}z[0]+=x;z[1]+=Y;}else{if(D){z[0]-=x;z[1]-=Y;}else{if(I||H){z[0]+=x;z[1]+=Y;}}}z[0]=Math.floor(z[0]);z[1]=Math.floor(z[1]);}else{}return z;};}}(),getX:function(G){var Y=function(x){return E.Dom.getXY(x)[0];};return E.Dom.batch(G,Y,E.Dom,true);},getY:function(G){var Y=function(x){return E.Dom.getXY(x)[1];};return E.Dom.batch(G,Y,E.Dom,true);},setXY:function(G,x,Y){E.Dom.batch(G,E.Dom._setXY,{pos:x,noRetry:Y});},_setXY:function(G,z){var AA=E.Dom._getStyle(G,p),y=E.Dom.setStyle,AD=z.pos,Y=z.noRetry,AB=[parseInt(E.Dom.getComputedStyle(G,j),10),parseInt(E.Dom.getComputedStyle(G,o),10)],AC,x;if(AA=="static"){AA=V;y(G,p,AA);}AC=E.Dom._getXY(G);if(!AD||AC===false){return false;}if(isNaN(AB[0])){AB[0]=(AA==V)?0:G[b];}if(isNaN(AB[1])){AB[1]=(AA==V)?0:G[P];}if(AD[0]!==null){y(G,j,AD[0]-AC[0]+AB[0]+"px");}if(AD[1]!==null){y(G,o,AD[1]-AC[1]+AB[1]+"px");}if(!Y){x=E.Dom._getXY(G);if((AD[0]!==null&&x[0]!=AD[0])||(AD[1]!==null&&x[1]!=AD[1])){E.Dom._setXY(G,{pos:AD,noRetry:true});}}},setX:function(Y,G){E.Dom.setXY(Y,[G,null]);},setY:function(G,Y){E.Dom.setXY(G,[null,Y]);},getRegion:function(G){var Y=function(x){var y=false;if(E.Dom._canPosition(x)){y=E.Region.getRegion(x);}else{}return y;};return E.Dom.batch(G,Y,E.Dom,true);},getClientWidth:function(){return E.Dom.getViewportWidth();},getClientHeight:function(){return E.Dom.getViewportHeight();},getElementsByClassName:function(AB,AF,AC,AE,x,AD){AB=L.trim(AB);AF=AF||"*";AC=(AC)?E.Dom.get(AC):null||K;if(!AC){return[];}var Y=[],G=AC.getElementsByTagName(AF),z=E.Dom.hasClass;for(var y=0,AA=G.length;y<AA;++y){if(z(G[y],AB)){Y[Y.length]=G[y];}}if(AE){E.Dom.batch(Y,AE,x,AD);}return Y;},hasClass:function(Y,G){return E.Dom.batch(Y,E.Dom._hasClass,G);},_hasClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom.getAttribute(x,F)||J;if(Y.exec){G=Y.test(y);}else{G=Y&&(B+y+B).indexOf(B+Y+B)>-1;}}else{}return G;},addClass:function(Y,G){return E.Dom.batch(Y,E.Dom._addClass,G);},_addClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom.getAttribute(x,F)||J;if(!E.Dom._hasClass(x,Y)){E.Dom.setAttribute(x,F,A(y+B+Y));G=true;}}else{}return G;},removeClass:function(Y,G){return E.Dom.batch(Y,E.Dom._removeClass,G);},_removeClass:function(y,x){var Y=false,AA,z,G;if(y&&x){AA=E.Dom.getAttribute(y,F)||J;E.Dom.setAttribute(y,F,AA.replace(E.Dom._getClassRegex(x),J));z=E.Dom.getAttribute(y,F);if(AA!==z){E.Dom.setAttribute(y,F,A(z));Y=true;if(E.Dom.getAttribute(y,F)===""){G=(y.hasAttribute&&y.hasAttribute(g))?g:F;y.removeAttribute(G);}}}else{}return Y;},replaceClass:function(x,Y,G){return E.Dom.batch(x,E.Dom._replaceClass,{from:Y,to:G});
+},_replaceClass:function(y,x){var Y,AB,AA,G=false,z;if(y&&x){AB=x.from;AA=x.to;if(!AA){G=false;}else{if(!AB){G=E.Dom._addClass(y,x.to);}else{if(AB!==AA){z=E.Dom.getAttribute(y,F)||J;Y=(B+z.replace(E.Dom._getClassRegex(AB),B+AA)).split(E.Dom._getClassRegex(AA));Y.splice(1,0,B+AA);E.Dom.setAttribute(y,F,A(Y.join(J)));G=true;}}}}else{}return G;},generateId:function(G,x){x=x||"yui-gen";var Y=function(y){if(y&&y.id){return y.id;}var z=x+YAHOO.env._id_counter++;if(y){if(y[e].getElementById(z)){return E.Dom.generateId(y,z+x);}y.id=z;}return z;};return E.Dom.batch(G,Y,E.Dom,true)||Y.apply(E.Dom,arguments);},isAncestor:function(Y,x){Y=E.Dom.get(Y);x=E.Dom.get(x);var G=false;if((Y&&x)&&(Y[l]&&x[l])){if(Y.contains&&Y!==x){G=Y.contains(x);}else{if(Y.compareDocumentPosition){G=!!(Y.compareDocumentPosition(x)&16);}}}else{}return G;},inDocument:function(G,Y){return E.Dom._inDoc(E.Dom.get(G),Y);},_inDoc:function(Y,x){var G=false;if(Y&&Y[C]){x=x||Y[e];G=E.Dom.isAncestor(x[v],Y);}else{}return G;},getElementsBy:function(Y,AF,AB,AD,y,AC,AE){AF=AF||"*";AB=(AB)?E.Dom.get(AB):null||K;if(!AB){return[];}var x=[],G=AB.getElementsByTagName(AF);for(var z=0,AA=G.length;z<AA;++z){if(Y(G[z])){if(AE){x=G[z];break;}else{x[x.length]=G[z];}}}if(AD){E.Dom.batch(x,AD,y,AC);}return x;},getElementBy:function(x,G,Y){return E.Dom.getElementsBy(x,G,Y,null,null,null,true);},batch:function(x,AB,AA,z){var y=[],Y=(z)?AA:window;x=(x&&(x[C]||x.item))?x:E.Dom.get(x);if(x&&AB){if(x[C]||x.length===undefined){return AB.call(Y,x,AA);}for(var G=0;G<x.length;++G){y[y.length]=AB.call(Y,x[G],AA);}}else{return false;}return y;},getDocumentHeight:function(){var Y=(K[t]!=M||I)?K.body.scrollHeight:W.scrollHeight,G=Math.max(Y,E.Dom.getViewportHeight());return G;},getDocumentWidth:function(){var Y=(K[t]!=M||I)?K.body.scrollWidth:W.scrollWidth,G=Math.max(Y,E.Dom.getViewportWidth());return G;},getViewportHeight:function(){var G=self.innerHeight,Y=K[t];if((Y||T)&&!D){G=(Y==M)?W.clientHeight:K.body.clientHeight;}return G;},getViewportWidth:function(){var G=self.innerWidth,Y=K[t];if(Y||T){G=(Y==M)?W.clientWidth:K.body.clientWidth;}return G;},getAncestorBy:function(G,Y){while((G=G[Z])){if(E.Dom._testElement(G,Y)){return G;}}return null;},getAncestorByClassName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return E.Dom.hasClass(y,G);};return E.Dom.getAncestorBy(Y,x);},getAncestorByTagName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return y[C]&&y[C].toUpperCase()==G.toUpperCase();};return E.Dom.getAncestorBy(Y,x);},getPreviousSiblingBy:function(G,Y){while(G){G=G.previousSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getPreviousSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getPreviousSiblingBy(G);},getNextSiblingBy:function(G,Y){while(G){G=G.nextSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getNextSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getNextSiblingBy(G);},getFirstChildBy:function(G,x){var Y=(E.Dom._testElement(G.firstChild,x))?G.firstChild:null;return Y||E.Dom.getNextSiblingBy(G.firstChild,x);},getFirstChild:function(G,Y){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getFirstChildBy(G);},getLastChildBy:function(G,x){if(!G){return null;}var Y=(E.Dom._testElement(G.lastChild,x))?G.lastChild:null;return Y||E.Dom.getPreviousSiblingBy(G.lastChild,x);},getLastChild:function(G){G=E.Dom.get(G);return E.Dom.getLastChildBy(G);},getChildrenBy:function(Y,y){var x=E.Dom.getFirstChildBy(Y,y),G=x?[x]:[];E.Dom.getNextSiblingBy(x,function(z){if(!y||y(z)){G[G.length]=z;}return false;});return G;},getChildren:function(G){G=E.Dom.get(G);if(!G){}return E.Dom.getChildrenBy(G);},getDocumentScrollLeft:function(G){G=G||K;return Math.max(G[v].scrollLeft,G.body.scrollLeft);},getDocumentScrollTop:function(G){G=G||K;return Math.max(G[v].scrollTop,G.body.scrollTop);},insertBefore:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}return G[Z].insertBefore(Y,G);},insertAfter:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}if(G.nextSibling){return G[Z].insertBefore(Y,G.nextSibling);}else{return G[Z].appendChild(Y);}},getClientRegion:function(){var x=E.Dom.getDocumentScrollTop(),Y=E.Dom.getDocumentScrollLeft(),y=E.Dom.getViewportWidth()+Y,G=E.Dom.getViewportHeight()+x;return new E.Region(x,y,G,Y);},setAttribute:function(Y,G,x){G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;Y.setAttribute(G,x);},getAttribute:function(Y,G){G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;return Y.getAttribute(G);},_toCamel:function(Y){var x=d;function G(y,z){return z.toUpperCase();}return x[Y]||(x[Y]=Y.indexOf("-")===-1?Y:Y.replace(/-([a-z])/gi,G));},_getClassRegex:function(Y){var G;if(Y!==undefined){if(Y.exec){G=Y;}else{G=h[Y];if(!G){Y=Y.replace(E.Dom._patterns.CLASS_RE_TOKENS,"\\$1");G=h[Y]=new RegExp(s+Y+k,U);}}}return G;},_patterns:{ROOT_TAG:/^body|html$/i,CLASS_RE_TOKENS:/([\.\(\)\^\$\*\+\?\|\[\]\{\}])/g},_testElement:function(G,Y){return G&&G[l]==1&&(!Y||Y(G));},_calcBorders:function(x,y){var Y=parseInt(E.Dom[w](x,R),10)||0,G=parseInt(E.Dom[w](x,q),10)||0;if(H){if(N.test(x[C])){Y=0;G=0;}}y[0]+=G;y[1]+=Y;return y;}};var S=E.Dom[w];if(m.opera){E.Dom[w]=function(Y,G){var x=S(Y,G);if(X.test(G)){x=E.Dom.Color.toRGB(x);}return x;};}if(m.webkit){E.Dom[w]=function(Y,G){var x=S(Y,G);if(x==="rgba(0, 0, 0, 0)"){x="transparent";}return x;};}})();YAHOO.util.Region=function(C,D,A,B){this.top=C;this.y=C;this[1]=C;this.right=D;this.bottom=A;this.left=B;this.x=B;this[0]=B;this.width=this.right-this.left;this.height=this.bottom-this.top;};YAHOO.util.Region.prototype.contains=function(A){return(A.left>=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E){var C=Math.max(this.top,E.top),D=Math.min(this.right,E.right),A=Math.min(this.bottom,E.bottom),B=Math.max(this.left,E.left);if(A>=C&&D>=B){return new YAHOO.util.Region(C,D,A,B);
+}else{return null;}};YAHOO.util.Region.prototype.union=function(E){var C=Math.min(this.top,E.top),D=Math.max(this.right,E.right),A=Math.max(this.bottom,E.bottom),B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+", height: "+this.height+", width: "+this.width+"}");};YAHOO.util.Region.getRegion=function(D){var F=YAHOO.util.Dom.getXY(D),C=F[1],E=F[0]+D.offsetWidth,A=F[1]+D.offsetHeight,B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B){if(YAHOO.lang.isArray(A)){B=A[1];A=A[0];}YAHOO.util.Point.superclass.constructor.call(this,B,A,B,A);};YAHOO.extend(YAHOO.util.Point,YAHOO.util.Region);(function(){var B=YAHOO.util,A="clientTop",F="clientLeft",J="parentNode",K="right",W="hasLayout",I="px",U="opacity",L="auto",D="borderLeftWidth",G="borderTopWidth",P="borderRightWidth",V="borderBottomWidth",S="visible",Q="transparent",N="height",E="width",H="style",T="currentStyle",R=/^width|height$/,O=/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,M={get:function(X,Z){var Y="",a=X[T][Z];if(Z===U){Y=B.Dom.getStyle(X,U);}else{if(!a||(a.indexOf&&a.indexOf(I)>-1)){Y=a;}else{if(B.Dom.IE_COMPUTED[Z]){Y=B.Dom.IE_COMPUTED[Z](X,Z);}else{if(O.test(a)){Y=B.Dom.IE.ComputedStyle.getPixel(X,Z);}else{Y=a;}}}}return Y;},getOffset:function(Z,e){var b=Z[T][e],X=e.charAt(0).toUpperCase()+e.substr(1),c="offset"+X,Y="pixel"+X,a="",d;if(b==L){d=Z[c];if(d===undefined){a=0;}a=d;if(R.test(e)){Z[H][e]=d;if(Z[c]>d){a=d-(Z[c]-d);}Z[H][e]=L;}}else{if(!Z[H][Y]&&!Z[H][e]){Z[H][e]=b;}a=Z[H][Y];}return a+I;},getBorderWidth:function(X,Z){var Y=null;if(!X[T][W]){X[H].zoom=1;}switch(Z){case G:Y=X[A];break;case V:Y=X.offsetHeight-X.clientHeight-X[A];break;case D:Y=X[F];break;case P:Y=X.offsetWidth-X.clientWidth-X[F];break;}return Y+I;},getPixel:function(Y,X){var a=null,b=Y[T][K],Z=Y[T][X];Y[H][K]=Z;a=Y[H].pixelRight;Y[H][K]=b;return a+I;},getMargin:function(Y,X){var Z;if(Y[T][X]==L){Z=0+I;}else{Z=B.Dom.IE.ComputedStyle.getPixel(Y,X);}return Z;},getVisibility:function(Y,X){var Z;while((Z=Y[T])&&Z[X]=="inherit"){Y=Y[J];}return(Z)?Z[X]:S;},getColor:function(Y,X){return B.Dom.Color.toRGB(Y[T][X])||Q;},getBorderColor:function(Y,X){var Z=Y[T],a=Z[X]||Z.color;return B.Dom.Color.toRGB(B.Dom.Color.toHex(a));}},C={};C.top=C.right=C.bottom=C.left=C[E]=C[N]=M.getOffset;C.color=M.getColor;C[G]=C[P]=C[V]=C[D]=M.getBorderWidth;C.marginTop=C.marginRight=C.marginBottom=C.marginLeft=M.getMargin;C.visibility=M.getVisibility;C.borderColor=C.borderTopColor=C.borderRightColor=C.borderBottomColor=C.borderLeftColor=M.getBorderColor;B.Dom.IE_COMPUTED=C;B.Dom.IE_ComputedStyle=M;})();(function(){var C="toString",A=parseInt,B=RegExp,D=YAHOO.util;D.Dom.Color={KEYWORDS:{black:"000",silver:"c0c0c0",gray:"808080",white:"fff",maroon:"800000",red:"f00",purple:"800080",fuchsia:"f0f",green:"008000",lime:"0f0",olive:"808000",yellow:"ff0",navy:"000080",blue:"00f",teal:"008080",aqua:"0ff"},re_RGB:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,re_hex:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,re_hex3:/([0-9A-F])/gi,toRGB:function(E){if(!D.Dom.Color.re_RGB.test(E)){E=D.Dom.Color.toHex(E);}if(D.Dom.Color.re_hex.exec(E)){E="rgb("+[A(B.$1,16),A(B.$2,16),A(B.$3,16)].join(", ")+")";}return E;},toHex:function(H){H=D.Dom.Color.KEYWORDS[H]||H;if(D.Dom.Color.re_RGB.exec(H)){var G=(B.$1.length===1)?"0"+B.$1:Number(B.$1),F=(B.$2.length===1)?"0"+B.$2:Number(B.$2),E=(B.$3.length===1)?"0"+B.$3:Number(B.$3);H=[G[C](16),F[C](16),E[C](16)].join("");}if(H.length<6){H=H.replace(D.Dom.Color.re_hex3,"$1$1");}if(H!=="transparent"&&H.indexOf("#")<0){H="#"+H;}return H.toLowerCase();}};}());YAHOO.register("dom",YAHOO.util.Dom,{version:"2.7.0",build:"1796"});YAHOO.util.CustomEvent=function(D,C,B,A){this.type=D;this.scope=C||window;this.silent=B;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var E="_YUICEOnSubscribe";if(D!==E){this.subscribeEvent=new YAHOO.util.CustomEvent(E,this,true);}this.lastError=null;};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(A,B,C){if(!A){throw new Error("Invalid callback for subscriber to '"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(A,B,C);}this.subscribers.push(new YAHOO.util.Subscriber(A,B,C));},unsubscribe:function(D,F){if(!D){return this.unsubscribeAll();}var E=false;for(var B=0,A=this.subscribers.length;B<A;++B){var C=this.subscribers[B];if(C&&C.contains(D,F)){this._delete(B);E=true;}}return E;},fire:function(){this.lastError=null;var K=[],E=this.subscribers.length;if(!E&&this.silent){return true;}var I=[].slice.call(arguments,0),G=true,D,J=false;if(!this.silent){}var C=this.subscribers.slice(),A=YAHOO.util.Event.throwErrors;for(D=0;D<E;++D){var M=C[D];if(!M){J=true;}else{if(!this.silent){}var L=M.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var B=null;if(I.length>0){B=I[0];}try{G=M.fn.call(L,B,M.obj);}catch(F){this.lastError=F;if(A){throw F;}}}else{try{G=M.fn.call(L,this.type,I,M.obj);}catch(H){this.lastError=H;if(A){throw H;}}}if(false===G){if(!this.silent){}break;}}}return(G!==false);},unsubscribeAll:function(){var A=this.subscribers.length,B;for(B=A-1;B>-1;B--){this._delete(B);}this.subscribers=[];return A;},_delete:function(A){var B=this.subscribers[A];if(B){delete B.fn;delete B.obj;}this.subscribers.splice(A,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"context: "+this.scope;}};YAHOO.util.Subscriber=function(A,B,C){this.fn=A;this.obj=YAHOO.lang.isUndefined(B)?null:B;this.overrideContext=C;};YAHOO.util.Subscriber.prototype.getScope=function(A){if(this.overrideContext){if(this.overrideContext===true){return this.obj;}else{return this.overrideContext;}}return A;};YAHOO.util.Subscriber.prototype.contains=function(A,B){if(B){return(this.fn==A&&this.obj==B);}else{return(this.fn==A);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", overrideContext: "+(this.overrideContext||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var H=false;var I=[];var J=[];var G=[];var E=[];var C=0;var F=[];var B=[];var A=0;var D={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9};var K=YAHOO.env.ua.ie?"focusin":"focus";var L=YAHOO.env.ua.ie?"focusout":"blur";return{POLL_RETRYS:2000,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:YAHOO.env.ua.ie,_interval:null,_dri:null,DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){var M=this;var N=function(){M._tryPreloadAttach();};this._interval=setInterval(N,this.POLL_INTERVAL);}},onAvailable:function(S,O,Q,R,P){var M=(YAHOO.lang.isString(S))?[S]:S;for(var N=0;N<M.length;N=N+1){F.push({id:M[N],fn:O,obj:Q,overrideContext:R,checkReady:P});}C=this.POLL_RETRYS;this.startInterval();},onContentReady:function(P,M,N,O){this.onAvailable(P,M,N,O,true);},onDOMReady:function(M,N,O){if(this.DOMReady){setTimeout(function(){var P=window;if(O){if(O===true){P=N;}else{P=O;}}M.call(P,"DOMReady",[],N);},0);}else{this.DOMReadyEvent.subscribe(M,N,O);}},_addListener:function(O,M,Y,S,W,b){if(!Y||!Y.call){return false;}if(this._isValidCollection(O)){var Z=true;for(var T=0,V=O.length;T<V;++T){Z=this.on(O[T],M,Y,S,W)&&Z;}return Z;}else{if(YAHOO.lang.isString(O)){var R=this.getEl(O);if(R){O=R;}else{this.onAvailable(O,function(){YAHOO.util.Event.on(O,M,Y,S,W);});return true;}}}if(!O){return false;}if("unload"==M&&S!==this){J[J.length]=[O,M,Y,S,W];return true;}var N=O;if(W){if(W===true){N=S;}else{N=W;}}var P=function(c){return Y.call(N,YAHOO.util.Event.getEvent(c,O),S);};var a=[O,M,Y,P,N,S,W];var U=I.length;I[U]=a;if(this.useLegacyEvent(O,M)){var Q=this.getLegacyIndex(O,M);if(Q==-1||O!=G[Q][0]){Q=G.length;B[O.id+M]=Q;G[Q]=[O,M,O["on"+M]];E[Q]=[];O["on"+M]=function(c){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(c),Q);};}E[Q].push(a);}else{try{this._simpleAdd(O,M,P,b);}catch(X){this.lastError=X;this.removeListener(O,M,Y);return false;}}return true;},addListener:function(N,Q,M,O,P){return this._addListener(N,Q,M,O,P,false);},addFocusListener:function(N,M,O,P){return this._addListener(N,K,M,O,P,true);},removeFocusListener:function(N,M){return this.removeListener(N,K,M);},addBlurListener:function(N,M,O,P){return this._addListener(N,L,M,O,P,true);},removeBlurListener:function(N,M){return this.removeListener(N,L,M);},fireLegacyEvent:function(R,P){var T=true,M,V,U,N,S;V=E[P].slice();for(var O=0,Q=V.length;O<Q;++O){U=V[O];if(U&&U[this.WFN]){N=U[this.ADJ_SCOPE];S=U[this.WFN].call(N,R);T=(T&&S);}}M=G[P];if(M&&M[2]){M[2](R);}return T;},getLegacyIndex:function(N,O){var M=this.generateId(N)+O;if(typeof B[M]=="undefined"){return -1;}else{return B[M];}},useLegacyEvent:function(M,N){return(this.webkit&&this.webkit<419&&("click"==N||"dblclick"==N));},removeListener:function(N,M,V){var Q,T,X;if(typeof N=="string"){N=this.getEl(N);}else{if(this._isValidCollection(N)){var W=true;for(Q=N.length-1;Q>-1;Q--){W=(this.removeListener(N[Q],M,V)&&W);}return W;}}if(!V||!V.call){return this.purgeElement(N,false,M);}if("unload"==M){for(Q=J.length-1;Q>-1;Q--){X=J[Q];if(X&&X[0]==N&&X[1]==M&&X[2]==V){J.splice(Q,1);return true;}}return false;}var R=null;var S=arguments[3];if("undefined"===typeof S){S=this._getCacheIndex(N,M,V);}if(S>=0){R=I[S];}if(!N||!R){return false;}if(this.useLegacyEvent(N,M)){var P=this.getLegacyIndex(N,M);var O=E[P];if(O){for(Q=0,T=O.length;Q<T;++Q){X=O[Q];if(X&&X[this.EL]==N&&X[this.TYPE]==M&&X[this.FN]==V){O.splice(Q,1);break;}}}}else{try{this._simpleRemove(N,M,R[this.WFN],false);}catch(U){this.lastError=U;return false;}}delete I[S][this.WFN];delete I[S][this.FN];
+I.splice(S,1);return true;},getTarget:function(O,N){var M=O.target||O.srcElement;return this.resolveTextNode(M);},resolveTextNode:function(N){try{if(N&&3==N.nodeType){return N.parentNode;}}catch(M){}return N;},getPageX:function(N){var M=N.pageX;if(!M&&0!==M){M=N.clientX||0;if(this.isIE){M+=this._getScrollLeft();}}return M;},getPageY:function(M){var N=M.pageY;if(!N&&0!==N){N=M.clientY||0;if(this.isIE){N+=this._getScrollTop();}}return N;},getXY:function(M){return[this.getPageX(M),this.getPageY(M)];},getRelatedTarget:function(N){var M=N.relatedTarget;if(!M){if(N.type=="mouseout"){M=N.toElement;}else{if(N.type=="mouseover"){M=N.fromElement;}}}return this.resolveTextNode(M);},getTime:function(O){if(!O.time){var N=new Date().getTime();try{O.time=N;}catch(M){this.lastError=M;return N;}}return O.time;},stopEvent:function(M){this.stopPropagation(M);this.preventDefault(M);},stopPropagation:function(M){if(M.stopPropagation){M.stopPropagation();}else{M.cancelBubble=true;}},preventDefault:function(M){if(M.preventDefault){M.preventDefault();}else{M.returnValue=false;}},getEvent:function(O,M){var N=O||window.event;if(!N){var P=this.getEvent.caller;while(P){N=P.arguments[0];if(N&&Event==N.constructor){break;}P=P.caller;}}return N;},getCharCode:function(N){var M=N.keyCode||N.charCode||0;if(YAHOO.env.ua.webkit&&(M in D)){M=D[M];}return M;},_getCacheIndex:function(Q,R,P){for(var O=0,N=I.length;O<N;O=O+1){var M=I[O];if(M&&M[this.FN]==P&&M[this.EL]==Q&&M[this.TYPE]==R){return O;}}return -1;},generateId:function(M){var N=M.id;if(!N){N="yuievtautoid-"+A;++A;M.id=N;}return N;},_isValidCollection:function(N){try{return(N&&typeof N!=="string"&&N.length&&!N.tagName&&!N.alert&&typeof N[0]!=="undefined");}catch(M){return false;}},elCache:{},getEl:function(M){return(typeof M==="string")?document.getElementById(M):M;},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",this),_load:function(N){if(!H){H=true;var M=YAHOO.util.Event;M._ready();M._tryPreloadAttach();}},_ready:function(N){var M=YAHOO.util.Event;if(!M.DOMReady){M.DOMReady=true;M.DOMReadyEvent.fire();M._simpleRemove(document,"DOMContentLoaded",M._ready);}},_tryPreloadAttach:function(){if(F.length===0){C=0;if(this._interval){clearInterval(this._interval);this._interval=null;}return;}if(this.locked){return;}if(this.isIE){if(!this.DOMReady){this.startInterval();return;}}this.locked=true;var S=!H;if(!S){S=(C>0&&F.length>0);}var R=[];var T=function(V,W){var U=V;if(W.overrideContext){if(W.overrideContext===true){U=W.obj;}else{U=W.overrideContext;}}W.fn.call(U,W.obj);};var N,M,Q,P,O=[];for(N=0,M=F.length;N<M;N=N+1){Q=F[N];if(Q){P=this.getEl(Q.id);if(P){if(Q.checkReady){if(H||P.nextSibling||!S){O.push(Q);F[N]=null;}}else{T(P,Q);F[N]=null;}}else{R.push(Q);}}}for(N=0,M=O.length;N<M;N=N+1){Q=O[N];T(this.getEl(Q.id),Q);}C--;if(S){for(N=F.length-1;N>-1;N--){Q=F[N];if(!Q||!Q.id){F.splice(N,1);}}this.startInterval();}else{if(this._interval){clearInterval(this._interval);this._interval=null;}}this.locked=false;},purgeElement:function(Q,R,T){var O=(YAHOO.lang.isString(Q))?this.getEl(Q):Q;var S=this.getListeners(O,T),P,M;if(S){for(P=S.length-1;P>-1;P--){var N=S[P];this.removeListener(O,N.type,N.fn);}}if(R&&O&&O.childNodes){for(P=0,M=O.childNodes.length;P<M;++P){this.purgeElement(O.childNodes[P],R,T);}}},getListeners:function(O,M){var R=[],N;if(!M){N=[I,J];}else{if(M==="unload"){N=[J];}else{N=[I];}}var T=(YAHOO.lang.isString(O))?this.getEl(O):O;for(var Q=0;Q<N.length;Q=Q+1){var V=N[Q];if(V){for(var S=0,U=V.length;S<U;++S){var P=V[S];if(P&&P[this.EL]===T&&(!M||M===P[this.TYPE])){R.push({type:P[this.TYPE],fn:P[this.FN],obj:P[this.OBJ],adjust:P[this.OVERRIDE],scope:P[this.ADJ_SCOPE],index:S});}}}}return(R.length)?R:null;},_unload:function(T){var N=YAHOO.util.Event,Q,P,O,S,R,U=J.slice(),M;for(Q=0,S=J.length;Q<S;++Q){O=U[Q];if(O){M=window;if(O[N.ADJ_SCOPE]){if(O[N.ADJ_SCOPE]===true){M=O[N.UNLOAD_OBJ];}else{M=O[N.ADJ_SCOPE];}}O[N.FN].call(M,N.getEvent(T,O[N.EL]),O[N.UNLOAD_OBJ]);U[Q]=null;}}O=null;M=null;J=null;if(I){for(P=I.length-1;P>-1;P--){O=I[P];if(O){N.removeListener(O[N.EL],O[N.TYPE],O[N.FN],P);}}O=null;}G=null;N._simpleRemove(window,"unload",N._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var M=document.documentElement,N=document.body;if(M&&(M.scrollTop||M.scrollLeft)){return[M.scrollTop,M.scrollLeft];}else{if(N){return[N.scrollTop,N.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(O,P,N,M){O.addEventListener(P,N,(M));};}else{if(window.attachEvent){return function(O,P,N,M){O.attachEvent("on"+P,N);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(O,P,N,M){O.removeEventListener(P,N,(M));};}else{if(window.detachEvent){return function(N,O,M){N.detachEvent("on"+O,M);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;EU.onFocus=EU.addFocusListener;EU.onBlur=EU.addBlurListener;
+/* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller */
+if(EU.isIE){YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var n=document.createElement("p");EU._dri=setInterval(function(){try{n.doScroll("left");clearInterval(EU._dri);EU._dri=null;EU._ready();n=null;}catch(ex){}},EU.POLL_INTERVAL);}else{if(EU.webkit&&EU.webkit<525){EU._dri=setInterval(function(){var rs=document.readyState;if("loaded"==rs||"complete"==rs){clearInterval(EU._dri);EU._dri=null;EU._ready();}},EU.POLL_INTERVAL);}else{EU._simpleAdd(document,"DOMContentLoaded",EU._ready);}}EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[A];if(D){D.subscribe(C,F,E);
+}else{this.__yui_subscribers=this.__yui_subscribers||{};var B=this.__yui_subscribers;if(!B[A]){B[A]=[];}B[A].push({fn:C,obj:F,overrideContext:E});}},unsubscribe:function(C,E,G){this.__yui_events=this.__yui_events||{};var A=this.__yui_events;if(C){var F=A[C];if(F){return F.unsubscribe(E,G);}}else{var B=true;for(var D in A){if(YAHOO.lang.hasOwnProperty(A,D)){B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A){return this.unsubscribe(A);},createEvent:function(G,D){this.__yui_events=this.__yui_events||{};var A=D||{};var I=this.__yui_events;if(I[G]){}else{var H=A.scope||this;var E=(A.silent);var B=new YAHOO.util.CustomEvent(G,H,E,YAHOO.util.CustomEvent.FLAT);I[G]=B;if(A.onSubscribeCallback){B.subscribeEvent.subscribe(A.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var F=this.__yui_subscribers[G];if(F){for(var C=0;C<F.length;++C){B.subscribe(F[C].fn,F[C].obj,F[C].overrideContext);}}}return I[G];},fireEvent:function(E,D,A,C){this.__yui_events=this.__yui_events||{};var G=this.__yui_events[E];if(!G){return null;}var B=[];for(var F=1;F<arguments.length;++F){B.push(arguments[F]);}return G.fire.apply(G,B);},hasEvent:function(A){if(this.__yui_events){if(this.__yui_events[A]){return true;}}return false;}};(function(){var A=YAHOO.util.Event,C=YAHOO.lang;YAHOO.util.KeyListener=function(D,I,E,F){if(!D){}else{if(!I){}else{if(!E){}}}if(!F){F=YAHOO.util.KeyListener.KEYDOWN;}var G=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(C.isString(D)){D=document.getElementById(D);}if(C.isFunction(E)){G.subscribe(E);}else{G.subscribe(E.fn,E.scope,E.correctScope);}function H(O,N){if(!I.shift){I.shift=false;}if(!I.alt){I.alt=false;}if(!I.ctrl){I.ctrl=false;}if(O.shiftKey==I.shift&&O.altKey==I.alt&&O.ctrlKey==I.ctrl){var J,M=I.keys,L;if(YAHOO.lang.isArray(M)){for(var K=0;K<M.length;K++){J=M[K];L=A.getCharCode(O);if(J==L){G.fire(L,O);break;}}}else{L=A.getCharCode(O);if(M==L){G.fire(L,O);}}}}this.enable=function(){if(!this.enabled){A.on(D,F,H);this.enabledEvent.fire(I);}this.enabled=true;};this.disable=function(){if(this.enabled){A.removeListener(D,F,H);this.disabledEvent.fire(I);}this.enabled=false;};this.toString=function(){return"KeyListener ["+I.keys+"] "+D.tagName+(D.id?"["+D.id+"]":"");};};var B=YAHOO.util.KeyListener;B.KEYDOWN="keydown";B.KEYUP="keyup";B.KEY={ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,TAB:9,UP:38};})();YAHOO.register("event",YAHOO.util.Event,{version:"2.7.0",build:"1796"});YAHOO.register("yahoo-dom-event", YAHOO, {version: "2.7.0", build: "1796"});
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+if(!YAHOO.util.DragDropMgr){YAHOO.util.DragDropMgr=function(){var A=YAHOO.util.Event,B=YAHOO.util.Dom;return{useShim:false,_shimActive:false,_shimState:false,_debugShim:false,_createShim:function(){var C=document.createElement("div");C.id="yui-ddm-shim";if(document.body.firstChild){document.body.insertBefore(C,document.body.firstChild);}else{document.body.appendChild(C);}C.style.display="none";C.style.backgroundColor="red";C.style.position="absolute";C.style.zIndex="99999";B.setStyle(C,"opacity","0");this._shim=C;A.on(C,"mouseup",this.handleMouseUp,this,true);A.on(C,"mousemove",this.handleMouseMove,this,true);A.on(window,"scroll",this._sizeShim,this,true);},_sizeShim:function(){if(this._shimActive){var C=this._shim;C.style.height=B.getDocumentHeight()+"px";C.style.width=B.getDocumentWidth()+"px";C.style.top="0";C.style.left="0";}},_activateShim:function(){if(this.useShim){if(!this._shim){this._createShim();}this._shimActive=true;var C=this._shim,D="0";if(this._debugShim){D=".5";}B.setStyle(C,"opacity",D);this._sizeShim();C.style.display="block";}},_deactivateShim:function(){this._shim.style.display="none";this._shimActive=false;},_shim:null,ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,interactionInfo:null,init:function(){this.initialized=true;},POINT:0,INTERSECT:1,STRICT_INTERSECT:2,mode:0,_execOnAll:function(E,D){for(var F in this.ids){for(var C in this.ids[F]){var G=this.ids[F][C];if(!this.isTypeOfDD(G)){continue;}G[E].apply(G,D);}}},_onLoad:function(){this.init();A.on(document,"mouseup",this.handleMouseUp,this,true);A.on(document,"mousemove",this.handleMouseMove,this,true);A.on(window,"unload",this._onUnload,this,true);A.on(window,"resize",this._onResize,this,true);},_onResize:function(C){this._execOnAll("resetConstraints",[]);},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:1000,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,fromTimeout:false,regDragDrop:function(D,C){if(!this.initialized){this.init();}if(!this.ids[C]){this.ids[C]={};}this.ids[C][D.id]=D;},removeDDFromGroup:function(E,C){if(!this.ids[C]){this.ids[C]={};}var D=this.ids[C];if(D&&D[E.id]){delete D[E.id];}},_remove:function(E){for(var D in E.groups){if(D){var C=this.ids[D];if(C&&C[E.id]){delete C[E.id];}}}delete this.handleIds[E.id];},regHandle:function(D,C){if(!this.handleIds[D]){this.handleIds[D]={};}this.handleIds[D][C]=C;},isDragDrop:function(C){return(this.getDDById(C))?true:false;},getRelated:function(H,D){var G=[];for(var F in H.groups){for(var E in this.ids[F]){var C=this.ids[F][E];if(!this.isTypeOfDD(C)){continue;}if(!D||C.isTarget){G[G.length]=C;}}}return G;},isLegalTarget:function(G,F){var D=this.getRelated(G,true);for(var E=0,C=D.length;E<C;++E){if(D[E].id==F.id){return true;}}return false;},isTypeOfDD:function(C){return(C&&C.__ygDragDrop);},isHandle:function(D,C){return(this.handleIds[D]&&this.handleIds[D][C]);},getDDById:function(D){for(var C in this.ids){if(this.ids[C][D]){return this.ids[C][D];}}return null;},handleMouseDown:function(E,D){this.currentTarget=YAHOO.util.Event.getTarget(E);this.dragCurrent=D;var C=D.getEl();this.startX=YAHOO.util.Event.getPageX(E);this.startY=YAHOO.util.Event.getPageY(E);this.deltaX=this.startX-C.offsetLeft;this.deltaY=this.startY-C.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var F=YAHOO.util.DDM;F.startDrag(F.startX,F.startY);F.fromTimeout=true;},this.clickTimeThresh);},startDrag:function(C,E){if(this.dragCurrent&&this.dragCurrent.useShim){this._shimState=this.useShim;this.useShim=true;}this._activateShim();clearTimeout(this.clickTimeout);var D=this.dragCurrent;if(D&&D.events.b4StartDrag){D.b4StartDrag(C,E);D.fireEvent("b4StartDragEvent",{x:C,y:E});}if(D&&D.events.startDrag){D.startDrag(C,E);D.fireEvent("startDragEvent",{x:C,y:E});}this.dragThreshMet=true;},handleMouseUp:function(C){if(this.dragCurrent){clearTimeout(this.clickTimeout);if(this.dragThreshMet){if(this.fromTimeout){this.fromTimeout=false;this.handleMouseMove(C);}this.fromTimeout=false;this.fireEvents(C,true);}else{}this.stopDrag(C);this.stopEvent(C);}},stopEvent:function(C){if(this.stopPropagation){YAHOO.util.Event.stopPropagation(C);}if(this.preventDefault){YAHOO.util.Event.preventDefault(C);}},stopDrag:function(E,D){var C=this.dragCurrent;if(C&&!D){if(this.dragThreshMet){if(C.events.b4EndDrag){C.b4EndDrag(E);C.fireEvent("b4EndDragEvent",{e:E});}if(C.events.endDrag){C.endDrag(E);C.fireEvent("endDragEvent",{e:E});}}if(C.events.mouseUp){C.onMouseUp(E);C.fireEvent("mouseUpEvent",{e:E});}}if(this._shimActive){this._deactivateShim();if(this.dragCurrent&&this.dragCurrent.useShim){this.useShim=this._shimState;this._shimState=false;}}this.dragCurrent=null;this.dragOvers={};},handleMouseMove:function(F){var C=this.dragCurrent;if(C){if(YAHOO.util.Event.isIE&&!F.button){this.stopEvent(F);return this.handleMouseUp(F);}else{if(F.clientX<0||F.clientY<0){}}if(!this.dragThreshMet){var E=Math.abs(this.startX-YAHOO.util.Event.getPageX(F));var D=Math.abs(this.startY-YAHOO.util.Event.getPageY(F));if(E>this.clickPixelThresh||D>this.clickPixelThresh){this.startDrag(this.startX,this.startY);}}if(this.dragThreshMet){if(C&&C.events.b4Drag){C.b4Drag(F);C.fireEvent("b4DragEvent",{e:F});}if(C&&C.events.drag){C.onDrag(F);C.fireEvent("dragEvent",{e:F});}if(C){this.fireEvents(F,false);}}this.stopEvent(F);}},fireEvents:function(V,L){var a=this.dragCurrent;if(!a||a.isLocked()||a.dragOnly){return;}var N=YAHOO.util.Event.getPageX(V),M=YAHOO.util.Event.getPageY(V),P=new YAHOO.util.Point(N,M),K=a.getTargetCoord(P.x,P.y),F=a.getDragEl(),E=["out","over","drop","enter"],U=new YAHOO.util.Region(K.y,K.x+F.offsetWidth,K.y+F.offsetHeight,K.x),I=[],D={},Q=[],c={outEvts:[],overEvts:[],dropEvts:[],enterEvts:[]};for(var S in this.dragOvers){var d=this.dragOvers[S];if(!this.isTypeOfDD(d)){continue;
+}if(!this.isOverTarget(P,d,this.mode,U)){c.outEvts.push(d);}I[S]=true;delete this.dragOvers[S];}for(var R in a.groups){if("string"!=typeof R){continue;}for(S in this.ids[R]){var G=this.ids[R][S];if(!this.isTypeOfDD(G)){continue;}if(G.isTarget&&!G.isLocked()&&G!=a){if(this.isOverTarget(P,G,this.mode,U)){D[R]=true;if(L){c.dropEvts.push(G);}else{if(!I[G.id]){c.enterEvts.push(G);}else{c.overEvts.push(G);}this.dragOvers[G.id]=G;}}}}}this.interactionInfo={out:c.outEvts,enter:c.enterEvts,over:c.overEvts,drop:c.dropEvts,point:P,draggedRegion:U,sourceRegion:this.locationCache[a.id],validDrop:L};for(var C in D){Q.push(C);}if(L&&!c.dropEvts.length){this.interactionInfo.validDrop=false;if(a.events.invalidDrop){a.onInvalidDrop(V);a.fireEvent("invalidDropEvent",{e:V});}}for(S=0;S<E.length;S++){var Y=null;if(c[E[S]+"Evts"]){Y=c[E[S]+"Evts"];}if(Y&&Y.length){var H=E[S].charAt(0).toUpperCase()+E[S].substr(1),X="onDrag"+H,J="b4Drag"+H,O="drag"+H+"Event",W="drag"+H;if(this.mode){if(a.events[J]){a[J](V,Y,Q);a.fireEvent(J+"Event",{event:V,info:Y,group:Q});}if(a.events[W]){a[X](V,Y,Q);a.fireEvent(O,{event:V,info:Y,group:Q});}}else{for(var Z=0,T=Y.length;Z<T;++Z){if(a.events[J]){a[J](V,Y[Z].id,Q[0]);a.fireEvent(J+"Event",{event:V,info:Y[Z].id,group:Q[0]});}if(a.events[W]){a[X](V,Y[Z].id,Q[0]);a.fireEvent(O,{event:V,info:Y[Z].id,group:Q[0]});}}}}}},getBestMatch:function(E){var G=null;var D=E.length;if(D==1){G=E[0];}else{for(var F=0;F<D;++F){var C=E[F];if(this.mode==this.INTERSECT&&C.cursorIsOver){G=C;break;}else{if(!G||!G.overlap||(C.overlap&&G.overlap.getArea()<C.overlap.getArea())){G=C;}}}}return G;},refreshCache:function(D){var F=D||this.ids;for(var C in F){if("string"!=typeof C){continue;}for(var E in this.ids[C]){var G=this.ids[C][E];if(this.isTypeOfDD(G)){var H=this.getLocation(G);if(H){this.locationCache[G.id]=H;}else{delete this.locationCache[G.id];}}}}},verifyEl:function(D){try{if(D){var C=D.offsetParent;if(C){return true;}}}catch(E){}return false;},getLocation:function(H){if(!this.isTypeOfDD(H)){return null;}var F=H.getEl(),K,E,D,M,L,N,C,J,G;try{K=YAHOO.util.Dom.getXY(F);}catch(I){}if(!K){return null;}E=K[0];D=E+F.offsetWidth;M=K[1];L=M+F.offsetHeight;N=M-H.padding[0];C=D+H.padding[1];J=L+H.padding[2];G=E-H.padding[3];return new YAHOO.util.Region(N,C,J,G);},isOverTarget:function(K,C,E,F){var G=this.locationCache[C.id];if(!G||!this.useCache){G=this.getLocation(C);this.locationCache[C.id]=G;}if(!G){return false;}C.cursorIsOver=G.contains(K);var J=this.dragCurrent;if(!J||(!E&&!J.constrainX&&!J.constrainY)){return C.cursorIsOver;}C.overlap=null;if(!F){var H=J.getTargetCoord(K.x,K.y);var D=J.getDragEl();F=new YAHOO.util.Region(H.y,H.x+D.offsetWidth,H.y+D.offsetHeight,H.x);}var I=F.intersect(G);if(I){C.overlap=I;return(E)?true:C.cursorIsOver;}else{return false;}},_onUnload:function(D,C){this.unregAll();},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null;}this._execOnAll("unreg",[]);this.ids={};},elementCache:{},getElWrapper:function(D){var C=this.elementCache[D];if(!C||!C.el){C=this.elementCache[D]=new this.ElementWrapper(YAHOO.util.Dom.get(D));}return C;},getElement:function(C){return YAHOO.util.Dom.get(C);},getCss:function(D){var C=YAHOO.util.Dom.get(D);return(C)?C.style:null;},ElementWrapper:function(C){this.el=C||null;this.id=this.el&&C.id;this.css=this.el&&C.style;},getPosX:function(C){return YAHOO.util.Dom.getX(C);},getPosY:function(C){return YAHOO.util.Dom.getY(C);},swapNode:function(E,C){if(E.swapNode){E.swapNode(C);}else{var F=C.parentNode;var D=C.nextSibling;if(D==E){F.insertBefore(E,C);}else{if(C==E.nextSibling){F.insertBefore(C,E);}else{E.parentNode.replaceChild(C,E);F.insertBefore(E,D);}}}},getScroll:function(){var E,C,F=document.documentElement,D=document.body;if(F&&(F.scrollTop||F.scrollLeft)){E=F.scrollTop;C=F.scrollLeft;}else{if(D){E=D.scrollTop;C=D.scrollLeft;}else{}}return{top:E,left:C};},getStyle:function(D,C){return YAHOO.util.Dom.getStyle(D,C);},getScrollTop:function(){return this.getScroll().top;},getScrollLeft:function(){return this.getScroll().left;},moveToEl:function(C,E){var D=YAHOO.util.Dom.getXY(E);YAHOO.util.Dom.setXY(C,D);},getClientHeight:function(){return YAHOO.util.Dom.getViewportHeight();},getClientWidth:function(){return YAHOO.util.Dom.getViewportWidth();},numericSort:function(D,C){return(D-C);},_timeoutCount:0,_addListeners:function(){var C=YAHOO.util.DDM;if(YAHOO.util.Event&&document){C._onLoad();}else{if(C._timeoutCount>2000){}else{setTimeout(C._addListeners,10);if(document&&document.body){C._timeoutCount+=1;}}}},handleWasClicked:function(C,E){if(this.isHandle(E,C.id)){return true;}else{var D=C.parentNode;while(D){if(this.isHandle(E,D.id)){return true;}else{D=D.parentNode;}}}return false;}};}();YAHOO.util.DDM=YAHOO.util.DragDropMgr;YAHOO.util.DDM._addListeners();}(function(){var A=YAHOO.util.Event;var B=YAHOO.util.Dom;YAHOO.util.DragDrop=function(E,C,D){if(E){this.init(E,C,D);}};YAHOO.util.DragDrop.prototype={events:null,on:function(){this.subscribe.apply(this,arguments);},id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isTarget:true,padding:null,dragOnly:false,useShim:false,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,deltaX:0,deltaY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,cursorIsOver:false,overlap:null,b4StartDrag:function(C,D){},startDrag:function(C,D){},b4Drag:function(C){},onDrag:function(C){},onDragEnter:function(C,D){},b4DragOver:function(C){},onDragOver:function(C,D){},b4DragOut:function(C){},onDragOut:function(C,D){},b4DragDrop:function(C){},onDragDrop:function(C,D){},onInvalidDrop:function(C){},b4EndDrag:function(C){},endDrag:function(C){},b4MouseDown:function(C){},onMouseDown:function(C){},onMouseUp:function(C){},onAvailable:function(){},getEl:function(){if(!this._domRef){this._domRef=B.get(this.id);
+}return this._domRef;},getDragEl:function(){return B.get(this.dragElId);},init:function(F,C,D){this.initTarget(F,C,D);A.on(this._domRef||this.id,"mousedown",this.handleMouseDown,this,true);for(var E in this.events){this.createEvent(E+"Event");}},initTarget:function(E,C,D){this.config=D||{};this.events={};this.DDM=YAHOO.util.DDM;this.groups={};if(typeof E!=="string"){this._domRef=E;E=B.generateId(E);}this.id=E;this.addToGroup((C)?C:"default");this.handleElId=E;A.onAvailable(E,this.handleOnAvailable,this,true);this.setDragElId(E);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();},applyConfig:function(){this.events={mouseDown:true,b4MouseDown:true,mouseUp:true,b4StartDrag:true,startDrag:true,b4EndDrag:true,endDrag:true,drag:true,b4Drag:true,invalidDrop:true,b4DragOut:true,dragOut:true,dragEnter:true,b4DragOver:true,dragOver:true,b4DragDrop:true,dragDrop:true};if(this.config.events){for(var C in this.config.events){if(this.config.events[C]===false){this.events[C]=false;}}}this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false);this.dragOnly=((this.config.dragOnly===true)?true:false);this.useShim=((this.config.useShim===true)?true:false);},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable();},setPadding:function(E,C,F,D){if(!C&&0!==C){this.padding=[E,E,E,E];}else{if(!F&&0!==F){this.padding=[E,C,E,C];}else{this.padding=[E,C,F,D];}}},setInitPosition:function(F,E){var G=this.getEl();if(!this.DDM.verifyEl(G)){if(G&&G.style&&(G.style.display=="none")){}else{}return;}var D=F||0;var C=E||0;var H=B.getXY(G);this.initPageX=H[0]-D;this.initPageY=H[1]-C;this.lastPageX=H[0];this.lastPageY=H[1];this.setStartPosition(H);},setStartPosition:function(D){var C=D||B.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=C[0];this.startPageY=C[1];},addToGroup:function(C){this.groups[C]=true;this.DDM.regDragDrop(this,C);},removeFromGroup:function(C){if(this.groups[C]){delete this.groups[C];}this.DDM.removeDDFromGroup(this,C);},setDragElId:function(C){this.dragElId=C;},setHandleElId:function(C){if(typeof C!=="string"){C=B.generateId(C);}this.handleElId=C;this.DDM.regHandle(this.id,C);},setOuterHandleElId:function(C){if(typeof C!=="string"){C=B.generateId(C);}A.on(C,"mousedown",this.handleMouseDown,this,true);this.setHandleElId(C);this.hasOuterHandles=true;},unreg:function(){A.removeListener(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this);},isLocked:function(){return(this.DDM.isLocked()||this.locked);},handleMouseDown:function(J,I){var D=J.which||J.button;if(this.primaryButtonOnly&&D>1){return;}if(this.isLocked()){return;}var C=this.b4MouseDown(J),F=true;if(this.events.b4MouseDown){F=this.fireEvent("b4MouseDownEvent",J);}var E=this.onMouseDown(J),H=true;if(this.events.mouseDown){H=this.fireEvent("mouseDownEvent",J);}if((C===false)||(E===false)||(F===false)||(H===false)){return;}this.DDM.refreshCache(this.groups);var G=new YAHOO.util.Point(A.getPageX(J),A.getPageY(J));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(G,this)){}else{if(this.clickValidator(J)){this.setStartPosition();this.DDM.handleMouseDown(J,this);this.DDM.stopEvent(J);}else{}}},clickValidator:function(D){var C=YAHOO.util.Event.getTarget(D);return(this.isValidHandleChild(C)&&(this.id==this.handleElId||this.DDM.handleWasClicked(C,this.id)));},getTargetCoord:function(E,D){var C=E-this.deltaX;var F=D-this.deltaY;if(this.constrainX){if(C<this.minX){C=this.minX;}if(C>this.maxX){C=this.maxX;}}if(this.constrainY){if(F<this.minY){F=this.minY;}if(F>this.maxY){F=this.maxY;}}C=this.getTick(C,this.xTicks);F=this.getTick(F,this.yTicks);return{x:C,y:F};},addInvalidHandleType:function(C){var D=C.toUpperCase();this.invalidHandleTypes[D]=D;},addInvalidHandleId:function(C){if(typeof C!=="string"){C=B.generateId(C);}this.invalidHandleIds[C]=C;},addInvalidHandleClass:function(C){this.invalidHandleClasses.push(C);},removeInvalidHandleType:function(C){var D=C.toUpperCase();delete this.invalidHandleTypes[D];},removeInvalidHandleId:function(C){if(typeof C!=="string"){C=B.generateId(C);}delete this.invalidHandleIds[C];},removeInvalidHandleClass:function(D){for(var E=0,C=this.invalidHandleClasses.length;E<C;++E){if(this.invalidHandleClasses[E]==D){delete this.invalidHandleClasses[E];}}},isValidHandleChild:function(F){var E=true;var H;try{H=F.nodeName.toUpperCase();}catch(G){H=F.nodeName;}E=E&&!this.invalidHandleTypes[H];E=E&&!this.invalidHandleIds[F.id];for(var D=0,C=this.invalidHandleClasses.length;E&&D<C;++D){E=!B.hasClass(F,this.invalidHandleClasses[D]);}return E;},setXTicks:function(F,C){this.xTicks=[];this.xTickSize=C;var E={};for(var D=this.initPageX;D>=this.minX;D=D-C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true;}}for(D=this.initPageX;D<=this.maxX;D=D+C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true;}}this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(F,C){this.yTicks=[];this.yTickSize=C;var E={};for(var D=this.initPageY;D>=this.minY;D=D-C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true;}}for(D=this.initPageY;D<=this.maxY;D=D+C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true;}}this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(E,D,C){this.leftConstraint=parseInt(E,10);this.rightConstraint=parseInt(D,10);this.minX=this.initPageX-this.leftConstraint;this.maxX=this.initPageX+this.rightConstraint;if(C){this.setXTicks(this.initPageX,C);}this.constrainX=true;},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks();},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0;},setYConstraint:function(C,E,D){this.topConstraint=parseInt(C,10);this.bottomConstraint=parseInt(E,10);this.minY=this.initPageY-this.topConstraint;this.maxY=this.initPageY+this.bottomConstraint;if(D){this.setYTicks(this.initPageY,D);
+}this.constrainY=true;},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var D=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var C=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(D,C);}else{this.setInitPosition();}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize);}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize);}},getTick:function(I,F){if(!F){return I;}else{if(F[0]>=I){return F[0];}else{for(var D=0,C=F.length;D<C;++D){var E=D+1;if(F[E]&&F[E]>=I){var H=I-F[D];var G=F[E]-I;return(G>H)?F[D]:F[E];}}return F[F.length-1];}}},toString:function(){return("DragDrop "+this.id);}};YAHOO.augment(YAHOO.util.DragDrop,YAHOO.util.EventProvider);})();YAHOO.util.DD=function(C,A,B){if(C){this.init(C,A,B);}};YAHOO.extend(YAHOO.util.DD,YAHOO.util.DragDrop,{scroll:true,autoOffset:function(C,B){var A=C-this.startPageX;var D=B-this.startPageY;this.setDelta(A,D);},setDelta:function(B,A){this.deltaX=B;this.deltaY=A;},setDragElPos:function(C,B){var A=this.getDragEl();this.alignElWithMouse(A,C,B);},alignElWithMouse:function(C,G,F){var E=this.getTargetCoord(G,F);if(!this.deltaSetXY){var H=[E.x,E.y];YAHOO.util.Dom.setXY(C,H);var D=parseInt(YAHOO.util.Dom.getStyle(C,"left"),10);var B=parseInt(YAHOO.util.Dom.getStyle(C,"top"),10);this.deltaSetXY=[D-E.x,B-E.y];}else{YAHOO.util.Dom.setStyle(C,"left",(E.x+this.deltaSetXY[0])+"px");YAHOO.util.Dom.setStyle(C,"top",(E.y+this.deltaSetXY[1])+"px");}this.cachePosition(E.x,E.y);var A=this;setTimeout(function(){A.autoScroll.call(A,E.x,E.y,C.offsetHeight,C.offsetWidth);},0);},cachePosition:function(B,A){if(B){this.lastPageX=B;this.lastPageY=A;}else{var C=YAHOO.util.Dom.getXY(this.getEl());this.lastPageX=C[0];this.lastPageY=C[1];}},autoScroll:function(J,I,E,K){if(this.scroll){var L=this.DDM.getClientHeight();var B=this.DDM.getClientWidth();var N=this.DDM.getScrollTop();var D=this.DDM.getScrollLeft();var H=E+I;var M=K+J;var G=(L+N-I-this.deltaY);var F=(B+D-J-this.deltaX);var C=40;var A=(document.all)?80:30;if(H>L&&G<C){window.scrollTo(D,N+A);}if(I<N&&N>0&&I-N<C){window.scrollTo(D,N-A);}if(M>B&&F<C){window.scrollTo(D+A,N);}if(J<D&&D>0&&J-D<C){window.scrollTo(D-A,N);}}},applyConfig:function(){YAHOO.util.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false);},b4MouseDown:function(A){this.setStartPosition();this.autoOffset(YAHOO.util.Event.getPageX(A),YAHOO.util.Event.getPageY(A));},b4Drag:function(A){this.setDragElPos(YAHOO.util.Event.getPageX(A),YAHOO.util.Event.getPageY(A));},toString:function(){return("DD "+this.id);}});YAHOO.util.DDProxy=function(C,A,B){if(C){this.init(C,A,B);this.initFrame();}};YAHOO.util.DDProxy.dragElId="ygddfdiv";YAHOO.extend(YAHOO.util.DDProxy,YAHOO.util.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var B=this,A=document.body;if(!A||!A.firstChild){setTimeout(function(){B.createFrame();},50);return;}var F=this.getDragEl(),E=YAHOO.util.Dom;if(!F){F=document.createElement("div");F.id=this.dragElId;var D=F.style;D.position="absolute";D.visibility="hidden";D.cursor="move";D.border="2px solid #aaa";D.zIndex=999;D.height="25px";D.width="25px";var C=document.createElement("div");E.setStyle(C,"height","100%");E.setStyle(C,"width","100%");E.setStyle(C,"background-color","#ccc");E.setStyle(C,"opacity","0");F.appendChild(C);A.insertBefore(F,A.firstChild);}},initFrame:function(){this.createFrame();},applyConfig:function(){YAHOO.util.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||YAHOO.util.DDProxy.dragElId);},showFrame:function(E,D){var C=this.getEl();var A=this.getDragEl();var B=A.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(B.width,10)/2),Math.round(parseInt(B.height,10)/2));}this.setDragElPos(E,D);YAHOO.util.Dom.setStyle(A,"visibility","visible");},_resizeProxy:function(){if(this.resizeFrame){var H=YAHOO.util.Dom;var B=this.getEl();var C=this.getDragEl();var G=parseInt(H.getStyle(C,"borderTopWidth"),10);var I=parseInt(H.getStyle(C,"borderRightWidth"),10);var F=parseInt(H.getStyle(C,"borderBottomWidth"),10);var D=parseInt(H.getStyle(C,"borderLeftWidth"),10);if(isNaN(G)){G=0;}if(isNaN(I)){I=0;}if(isNaN(F)){F=0;}if(isNaN(D)){D=0;}var E=Math.max(0,B.offsetWidth-I-D);var A=Math.max(0,B.offsetHeight-G-F);H.setStyle(C,"width",E+"px");H.setStyle(C,"height",A+"px");}},b4MouseDown:function(B){this.setStartPosition();var A=YAHOO.util.Event.getPageX(B);var C=YAHOO.util.Event.getPageY(B);this.autoOffset(A,C);},b4StartDrag:function(A,B){this.showFrame(A,B);},b4EndDrag:function(A){YAHOO.util.Dom.setStyle(this.getDragEl(),"visibility","hidden");},endDrag:function(D){var C=YAHOO.util.Dom;var B=this.getEl();var A=this.getDragEl();C.setStyle(A,"visibility","");C.setStyle(B,"visibility","hidden");YAHOO.util.DDM.moveToEl(B,A);C.setStyle(A,"visibility","hidden");C.setStyle(B,"visibility","");},toString:function(){return("DDProxy "+this.id);}});YAHOO.util.DDTarget=function(C,A,B){if(C){this.initTarget(C,A,B);}};YAHOO.extend(YAHOO.util.DDTarget,YAHOO.util.DragDrop,{toString:function(){return("DDTarget "+this.id);}});YAHOO.register("dragdrop",YAHOO.util.DragDropMgr,{version:"2.7.0",build:"1796"});/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+(function(){var B=YAHOO.util.Dom.getXY,A=YAHOO.util.Event,D=Array.prototype.slice;function C(G,E,F,H){C.ANIM_AVAIL=(!YAHOO.lang.isUndefined(YAHOO.util.Anim));if(G){this.init(G,E,true);this.initSlider(H);this.initThumb(F);}}YAHOO.lang.augmentObject(C,{getHorizSlider:function(F,G,I,H,E){return new C(F,F,new YAHOO.widget.SliderThumb(G,F,I,H,0,0,E),"horiz");},getVertSlider:function(G,H,E,I,F){return new C(G,G,new YAHOO.widget.SliderThumb(H,G,0,0,E,I,F),"vert");},getSliderRegion:function(G,H,J,I,E,K,F){return new C(G,G,new YAHOO.widget.SliderThumb(H,G,J,I,E,K,F),"region");},SOURCE_UI_EVENT:1,SOURCE_SET_VALUE:2,SOURCE_KEY_EVENT:3,ANIM_AVAIL:false},true);YAHOO.extend(C,YAHOO.util.DragDrop,{_mouseDown:false,dragOnly:true,initSlider:function(E){this.type=E;this.createEvent("change",this);this.createEvent("slideStart",this);this.createEvent("slideEnd",this);this.isTarget=false;this.animate=C.ANIM_AVAIL;this.backgroundEnabled=true;this.tickPause=40;this.enableKeys=true;this.keyIncrement=20;this.moveComplete=true;this.animationDuration=0.2;this.SOURCE_UI_EVENT=1;this.SOURCE_SET_VALUE=2;this.valueChangeSource=0;this._silent=false;this.lastOffset=[0,0];},initThumb:function(F){var E=this;this.thumb=F;F.cacheBetweenDrags=true;if(F._isHoriz&&F.xTicks&&F.xTicks.length){this.tickPause=Math.round(360/F.xTicks.length);}else{if(F.yTicks&&F.yTicks.length){this.tickPause=Math.round(360/F.yTicks.length);}}F.onAvailable=function(){return E.setStartSliderState();};F.onMouseDown=function(){E._mouseDown=true;return E.focus();};F.startDrag=function(){E._slideStart();};F.onDrag=function(){E.fireEvents(true);};F.onMouseUp=function(){E.thumbMouseUp();};},onAvailable:function(){this._bindKeyEvents();},_bindKeyEvents:function(){A.on(this.id,"keydown",this.handleKeyDown,this,true);A.on(this.id,"keypress",this.handleKeyPress,this,true);},handleKeyPress:function(F){if(this.enableKeys){var E=A.getCharCode(F);switch(E){case 37:case 38:case 39:case 40:case 36:case 35:A.preventDefault(F);break;default:}}},handleKeyDown:function(J){if(this.enableKeys){var G=A.getCharCode(J),F=this.thumb,H=this.getXValue(),E=this.getYValue(),I=true;switch(G){case 37:H-=this.keyIncrement;break;case 38:E-=this.keyIncrement;break;case 39:H+=this.keyIncrement;break;case 40:E+=this.keyIncrement;break;case 36:H=F.leftConstraint;E=F.topConstraint;break;case 35:H=F.rightConstraint;E=F.bottomConstraint;break;default:I=false;}if(I){if(F._isRegion){this._setRegionValue(C.SOURCE_KEY_EVENT,H,E,true);}else{this._setValue(C.SOURCE_KEY_EVENT,(F._isHoriz?H:E),true);}A.stopEvent(J);}}},setStartSliderState:function(){this.setThumbCenterPoint();this.baselinePos=B(this.getEl());this.thumb.startOffset=this.thumb.getOffsetFromParent(this.baselinePos);if(this.thumb._isRegion){if(this.deferredSetRegionValue){this._setRegionValue.apply(this,this.deferredSetRegionValue);this.deferredSetRegionValue=null;}else{this.setRegionValue(0,0,true,true,true);}}else{if(this.deferredSetValue){this._setValue.apply(this,this.deferredSetValue);this.deferredSetValue=null;}else{this.setValue(0,true,true,true);}}},setThumbCenterPoint:function(){var E=this.thumb.getEl();if(E){this.thumbCenterPoint={x:parseInt(E.offsetWidth/2,10),y:parseInt(E.offsetHeight/2,10)};}},lock:function(){this.thumb.lock();this.locked=true;},unlock:function(){this.thumb.unlock();this.locked=false;},thumbMouseUp:function(){this._mouseDown=false;if(!this.isLocked()&&!this.moveComplete){this.endMove();}},onMouseUp:function(){this._mouseDown=false;if(this.backgroundEnabled&&!this.isLocked()&&!this.moveComplete){this.endMove();}},getThumb:function(){return this.thumb;},focus:function(){this.valueChangeSource=C.SOURCE_UI_EVENT;var E=this.getEl();if(E.focus){try{E.focus();}catch(F){}}this.verifyOffset();return !this.isLocked();},onChange:function(E,F){},onSlideStart:function(){},onSlideEnd:function(){},getValue:function(){return this.thumb.getValue();},getXValue:function(){return this.thumb.getXValue();},getYValue:function(){return this.thumb.getYValue();},setValue:function(){var E=D.call(arguments);E.unshift(C.SOURCE_SET_VALUE);return this._setValue.apply(this,E);},_setValue:function(I,L,G,H,E){var F=this.thumb,K,J;if(!F.available){this.deferredSetValue=arguments;return false;}if(this.isLocked()&&!H){return false;}if(isNaN(L)){return false;}if(F._isRegion){return false;}this._silent=E;this.valueChangeSource=I||C.SOURCE_SET_VALUE;F.lastOffset=[L,L];this.verifyOffset(true);this._slideStart();if(F._isHoriz){K=F.initPageX+L+this.thumbCenterPoint.x;this.moveThumb(K,F.initPageY,G);}else{J=F.initPageY+L+this.thumbCenterPoint.y;this.moveThumb(F.initPageX,J,G);}return true;},setRegionValue:function(){var E=D.call(arguments);E.unshift(C.SOURCE_SET_VALUE);return this._setRegionValue.apply(this,E);},_setRegionValue:function(F,J,H,I,G,K){var L=this.thumb,E,M;if(!L.available){this.deferredSetRegionValue=arguments;return false;}if(this.isLocked()&&!G){return false;}if(isNaN(J)){return false;}if(!L._isRegion){return false;}this._silent=K;this.valueChangeSource=F||C.SOURCE_SET_VALUE;L.lastOffset=[J,H];this.verifyOffset(true);this._slideStart();E=L.initPageX+J+this.thumbCenterPoint.x;M=L.initPageY+H+this.thumbCenterPoint.y;this.moveThumb(E,M,I);return true;},verifyOffset:function(F){var G=B(this.getEl()),E=this.thumb;if(!this.thumbCenterPoint||!this.thumbCenterPoint.x){this.setThumbCenterPoint();}if(G){if(G[0]!=this.baselinePos[0]||G[1]!=this.baselinePos[1]){this.setInitPosition();this.baselinePos=G;E.initPageX=this.initPageX+E.startOffset[0];E.initPageY=this.initPageY+E.startOffset[1];E.deltaSetXY=null;this.resetThumbConstraints();return false;}}return true;},moveThumb:function(K,J,I,G){var L=this.thumb,M=this,F,E,H;if(!L.available){return;}L.setDelta(this.thumbCenterPoint.x,this.thumbCenterPoint.y);E=L.getTargetCoord(K,J);F=[Math.round(E.x),Math.round(E.y)];if(this.animate&&L._graduated&&!I){this.lock();this.curCoord=B(this.thumb.getEl());this.curCoord=[Math.round(this.curCoord[0]),Math.round(this.curCoord[1])];setTimeout(function(){M.moveOneTick(F);
+},this.tickPause);}else{if(this.animate&&C.ANIM_AVAIL&&!I){this.lock();H=new YAHOO.util.Motion(L.id,{points:{to:F}},this.animationDuration,YAHOO.util.Easing.easeOut);H.onComplete.subscribe(function(){M.unlock();if(!M._mouseDown){M.endMove();}});H.animate();}else{L.setDragElPos(K,J);if(!G&&!this._mouseDown){this.endMove();}}}},_slideStart:function(){if(!this._sliding){if(!this._silent){this.onSlideStart();this.fireEvent("slideStart");}this._sliding=true;}},_slideEnd:function(){if(this._sliding&&this.moveComplete){var E=this._silent;this._sliding=false;this._silent=false;this.moveComplete=false;if(!E){this.onSlideEnd();this.fireEvent("slideEnd");}}},moveOneTick:function(F){var H=this.thumb,G=this,I=null,E,J;if(H._isRegion){I=this._getNextX(this.curCoord,F);E=(I!==null)?I[0]:this.curCoord[0];I=this._getNextY(this.curCoord,F);J=(I!==null)?I[1]:this.curCoord[1];I=E!==this.curCoord[0]||J!==this.curCoord[1]?[E,J]:null;}else{if(H._isHoriz){I=this._getNextX(this.curCoord,F);}else{I=this._getNextY(this.curCoord,F);}}if(I){this.curCoord=I;this.thumb.alignElWithMouse(H.getEl(),I[0]+this.thumbCenterPoint.x,I[1]+this.thumbCenterPoint.y);if(!(I[0]==F[0]&&I[1]==F[1])){setTimeout(function(){G.moveOneTick(F);},this.tickPause);}else{this.unlock();if(!this._mouseDown){this.endMove();}}}else{this.unlock();if(!this._mouseDown){this.endMove();}}},_getNextX:function(E,F){var H=this.thumb,J,G=[],I=null;if(E[0]>F[0]){J=H.tickSize-this.thumbCenterPoint.x;G=H.getTargetCoord(E[0]-J,E[1]);I=[G.x,G.y];}else{if(E[0]<F[0]){J=H.tickSize+this.thumbCenterPoint.x;G=H.getTargetCoord(E[0]+J,E[1]);I=[G.x,G.y];}else{}}return I;},_getNextY:function(E,F){var H=this.thumb,J,G=[],I=null;if(E[1]>F[1]){J=H.tickSize-this.thumbCenterPoint.y;G=H.getTargetCoord(E[0],E[1]-J);I=[G.x,G.y];}else{if(E[1]<F[1]){J=H.tickSize+this.thumbCenterPoint.y;G=H.getTargetCoord(E[0],E[1]+J);I=[G.x,G.y];}else{}}return I;},b4MouseDown:function(E){if(!this.backgroundEnabled){return false;}this.thumb.autoOffset();this.resetThumbConstraints();},onMouseDown:function(F){if(!this.backgroundEnabled||this.isLocked()){return false;}this._mouseDown=true;var E=A.getPageX(F),G=A.getPageY(F);this.focus();this._slideStart();this.moveThumb(E,G);},onDrag:function(F){if(this.backgroundEnabled&&!this.isLocked()){var E=A.getPageX(F),G=A.getPageY(F);this.moveThumb(E,G,true,true);this.fireEvents();}},endMove:function(){this.unlock();this.fireEvents();this.moveComplete=true;this._slideEnd();},resetThumbConstraints:function(){var E=this.thumb;E.setXConstraint(E.leftConstraint,E.rightConstraint,E.xTickSize);E.setYConstraint(E.topConstraint,E.bottomConstraint,E.xTickSize);},fireEvents:function(G){var F=this.thumb,I,H,E;if(!G){F.cachePosition();}if(!this.isLocked()){if(F._isRegion){I=F.getXValue();H=F.getYValue();if(I!=this.previousX||H!=this.previousY){if(!this._silent){this.onChange(I,H);this.fireEvent("change",{x:I,y:H});}}this.previousX=I;this.previousY=H;}else{E=F.getValue();if(E!=this.previousVal){if(!this._silent){this.onChange(E);this.fireEvent("change",E);}}this.previousVal=E;}}},toString:function(){return("Slider ("+this.type+") "+this.id);}});YAHOO.lang.augmentProto(C,YAHOO.util.EventProvider);YAHOO.widget.Slider=C;})();YAHOO.widget.SliderThumb=function(G,B,E,D,A,F,C){if(G){YAHOO.widget.SliderThumb.superclass.constructor.call(this,G,B);this.parentElId=B;}this.isTarget=false;this.tickSize=C;this.maintainOffset=true;this.initSlider(E,D,A,F,C);this.scroll=false;};YAHOO.extend(YAHOO.widget.SliderThumb,YAHOO.util.DD,{startOffset:null,dragOnly:true,_isHoriz:false,_prevVal:0,_graduated:false,getOffsetFromParent0:function(C){var A=YAHOO.util.Dom.getXY(this.getEl()),B=C||YAHOO.util.Dom.getXY(this.parentElId);return[(A[0]-B[0]),(A[1]-B[1])];},getOffsetFromParent:function(H){var A=this.getEl(),E,I,F,B,K,D,C,J,G;if(!this.deltaOffset){I=YAHOO.util.Dom.getXY(A);F=H||YAHOO.util.Dom.getXY(this.parentElId);E=[(I[0]-F[0]),(I[1]-F[1])];B=parseInt(YAHOO.util.Dom.getStyle(A,"left"),10);K=parseInt(YAHOO.util.Dom.getStyle(A,"top"),10);D=B-E[0];C=K-E[1];if(isNaN(D)||isNaN(C)){}else{this.deltaOffset=[D,C];}}else{J=parseInt(YAHOO.util.Dom.getStyle(A,"left"),10);G=parseInt(YAHOO.util.Dom.getStyle(A,"top"),10);E=[J+this.deltaOffset[0],G+this.deltaOffset[1]];}return E;},initSlider:function(D,C,A,E,B){this.initLeft=D;this.initRight=C;this.initUp=A;this.initDown=E;this.setXConstraint(D,C,B);this.setYConstraint(A,E,B);if(B&&B>1){this._graduated=true;}this._isHoriz=(D||C);this._isVert=(A||E);this._isRegion=(this._isHoriz&&this._isVert);},clearTicks:function(){YAHOO.widget.SliderThumb.superclass.clearTicks.call(this);this.tickSize=0;this._graduated=false;},getValue:function(){return(this._isHoriz)?this.getXValue():this.getYValue();},getXValue:function(){if(!this.available){return 0;}var A=this.getOffsetFromParent();if(YAHOO.lang.isNumber(A[0])){this.lastOffset=A;return(A[0]-this.startOffset[0]);}else{return(this.lastOffset[0]-this.startOffset[0]);}},getYValue:function(){if(!this.available){return 0;}var A=this.getOffsetFromParent();if(YAHOO.lang.isNumber(A[1])){this.lastOffset=A;return(A[1]-this.startOffset[1]);}else{return(this.lastOffset[1]-this.startOffset[1]);}},toString:function(){return"SliderThumb "+this.id;},onChange:function(A,B){}});(function(){var A=YAHOO.util.Event,B=YAHOO.widget;function C(I,F,H,D){var G=this,J={min:false,max:false},E,K;this.minSlider=I;this.maxSlider=F;this.activeSlider=I;this.isHoriz=I.thumb._isHoriz;E=this.minSlider.thumb.onMouseDown;K=this.maxSlider.thumb.onMouseDown;this.minSlider.thumb.onMouseDown=function(){G.activeSlider=G.minSlider;E.apply(this,arguments);};this.maxSlider.thumb.onMouseDown=function(){G.activeSlider=G.maxSlider;K.apply(this,arguments);};this.minSlider.thumb.onAvailable=function(){I.setStartSliderState();J.min=true;if(J.max){G.fireEvent("ready",G);}};this.maxSlider.thumb.onAvailable=function(){F.setStartSliderState();J.max=true;if(J.min){G.fireEvent("ready",G);}};I.onMouseDown=F.onMouseDown=function(L){return this.backgroundEnabled&&G._handleMouseDown(L);
+};I.onDrag=F.onDrag=function(L){G._handleDrag(L);};I.onMouseUp=F.onMouseUp=function(L){G._handleMouseUp(L);};I._bindKeyEvents=function(){G._bindKeyEvents(this);};F._bindKeyEvents=function(){};I.subscribe("change",this._handleMinChange,I,this);I.subscribe("slideStart",this._handleSlideStart,I,this);I.subscribe("slideEnd",this._handleSlideEnd,I,this);F.subscribe("change",this._handleMaxChange,F,this);F.subscribe("slideStart",this._handleSlideStart,F,this);F.subscribe("slideEnd",this._handleSlideEnd,F,this);this.createEvent("ready",this);this.createEvent("change",this);this.createEvent("slideStart",this);this.createEvent("slideEnd",this);D=YAHOO.lang.isArray(D)?D:[0,H];D[0]=Math.min(Math.max(parseInt(D[0],10)|0,0),H);D[1]=Math.max(Math.min(parseInt(D[1],10)|0,H),0);if(D[0]>D[1]){D.splice(0,2,D[1],D[0]);}this.minVal=D[0];this.maxVal=D[1];this.minSlider.setValue(this.minVal,true,true,true);this.maxSlider.setValue(this.maxVal,true,true,true);}C.prototype={minVal:-1,maxVal:-1,minRange:0,_handleSlideStart:function(E,D){this.fireEvent("slideStart",D);},_handleSlideEnd:function(E,D){this.fireEvent("slideEnd",D);},_handleDrag:function(D){B.Slider.prototype.onDrag.call(this.activeSlider,D);},_handleMinChange:function(){this.activeSlider=this.minSlider;this.updateValue();},_handleMaxChange:function(){this.activeSlider=this.maxSlider;this.updateValue();},_bindKeyEvents:function(D){A.on(D.id,"keydown",this._handleKeyDown,this,true);A.on(D.id,"keypress",this._handleKeyPress,this,true);},_handleKeyDown:function(D){this.activeSlider.handleKeyDown.apply(this.activeSlider,arguments);},_handleKeyPress:function(D){this.activeSlider.handleKeyPress.apply(this.activeSlider,arguments);},setValues:function(H,K,I,E,J){var F=this.minSlider,M=this.maxSlider,D=F.thumb,L=M.thumb,N=this,G={min:false,max:false};if(D._isHoriz){D.setXConstraint(D.leftConstraint,L.rightConstraint,D.tickSize);L.setXConstraint(D.leftConstraint,L.rightConstraint,L.tickSize);}else{D.setYConstraint(D.topConstraint,L.bottomConstraint,D.tickSize);L.setYConstraint(D.topConstraint,L.bottomConstraint,L.tickSize);}this._oneTimeCallback(F,"slideEnd",function(){G.min=true;if(G.max){N.updateValue(J);setTimeout(function(){N._cleanEvent(F,"slideEnd");N._cleanEvent(M,"slideEnd");},0);}});this._oneTimeCallback(M,"slideEnd",function(){G.max=true;if(G.min){N.updateValue(J);setTimeout(function(){N._cleanEvent(F,"slideEnd");N._cleanEvent(M,"slideEnd");},0);}});F.setValue(H,I,E,false);M.setValue(K,I,E,false);},setMinValue:function(F,H,I,E){var G=this.minSlider,D=this;this.activeSlider=G;D=this;this._oneTimeCallback(G,"slideEnd",function(){D.updateValue(E);setTimeout(function(){D._cleanEvent(G,"slideEnd");},0);});G.setValue(F,H,I);},setMaxValue:function(D,H,I,F){var G=this.maxSlider,E=this;this.activeSlider=G;this._oneTimeCallback(G,"slideEnd",function(){E.updateValue(F);setTimeout(function(){E._cleanEvent(G,"slideEnd");},0);});G.setValue(D,H,I);},updateValue:function(J){var E=this.minSlider.getValue(),K=this.maxSlider.getValue(),F=false,D,M,H,I,L,G;if(E!=this.minVal||K!=this.maxVal){F=true;D=this.minSlider.thumb;M=this.maxSlider.thumb;H=this.isHoriz?"x":"y";G=this.minSlider.thumbCenterPoint[H]+this.maxSlider.thumbCenterPoint[H];I=Math.max(K-G-this.minRange,0);L=Math.min(-E-G-this.minRange,0);if(this.isHoriz){I=Math.min(I,M.rightConstraint);D.setXConstraint(D.leftConstraint,I,D.tickSize);M.setXConstraint(L,M.rightConstraint,M.tickSize);}else{I=Math.min(I,M.bottomConstraint);D.setYConstraint(D.leftConstraint,I,D.tickSize);M.setYConstraint(L,M.bottomConstraint,M.tickSize);}}this.minVal=E;this.maxVal=K;if(F&&!J){this.fireEvent("change",this);}},selectActiveSlider:function(H){var E=this.minSlider,D=this.maxSlider,J=E.isLocked()||!E.backgroundEnabled,G=D.isLocked()||!E.backgroundEnabled,F=YAHOO.util.Event,I;if(J||G){this.activeSlider=J?D:E;}else{if(this.isHoriz){I=F.getPageX(H)-E.thumb.initPageX-E.thumbCenterPoint.x;}else{I=F.getPageY(H)-E.thumb.initPageY-E.thumbCenterPoint.y;}this.activeSlider=I*2>D.getValue()+E.getValue()?D:E;}},_handleMouseDown:function(D){if(!D._handled){D._handled=true;this.selectActiveSlider(D);return B.Slider.prototype.onMouseDown.call(this.activeSlider,D);}else{return false;}},_handleMouseUp:function(D){B.Slider.prototype.onMouseUp.apply(this.activeSlider,arguments);},_oneTimeCallback:function(F,D,E){F.subscribe(D,function(){F.unsubscribe(D,arguments.callee);E.apply({},[].slice.apply(arguments));});},_cleanEvent:function(K,E){var J,I,D,G,H,F;if(K.__yui_events&&K.events[E]){for(I=K.__yui_events.length;I>=0;--I){if(K.__yui_events[I].type===E){J=K.__yui_events[I];break;}}if(J){H=J.subscribers;F=[];G=0;for(I=0,D=H.length;I<D;++I){if(H[I]){F[G++]=H[I];}}J.subscribers=F;}}}};YAHOO.lang.augmentProto(C,YAHOO.util.EventProvider);B.Slider.getHorizDualSlider=function(H,J,K,G,F,D){var I=new B.SliderThumb(J,H,0,G,0,0,F),E=new B.SliderThumb(K,H,0,G,0,0,F);return new C(new B.Slider(H,H,I,"horiz"),new B.Slider(H,H,E,"horiz"),G,D);};B.Slider.getVertDualSlider=function(H,J,K,G,F,D){var I=new B.SliderThumb(J,H,0,0,0,G,F),E=new B.SliderThumb(K,H,0,0,0,G,F);return new B.DualSlider(new B.Slider(H,H,I,"vert"),new B.Slider(H,H,E,"vert"),G,D);};YAHOO.widget.DualSlider=C;})();YAHOO.register("slider",YAHOO.widget.Slider,{version:"2.7.0",build:"1796"});/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+YAHOO.util.Attribute=function(B,A){if(A){this.owner=A;this.configure(B,true);}};YAHOO.util.Attribute.prototype={name:undefined,value:null,owner:null,readOnly:false,writeOnce:false,_initialConfig:null,_written:false,method:null,setter:null,getter:null,validator:null,getValue:function(){var A=this.value;if(this.getter){A=this.getter.call(this.owner,this.name);}return A;},setValue:function(F,B){var E,A=this.owner,C=this.name;var D={type:C,prevValue:this.getValue(),newValue:F};if(this.readOnly||(this.writeOnce&&this._written)){return false;}if(this.validator&&!this.validator.call(A,F)){return false;}if(!B){E=A.fireBeforeChangeEvent(D);if(E===false){return false;}}if(this.setter){F=this.setter.call(A,F,this.name);if(F===undefined){}}if(this.method){this.method.call(A,F,this.name);}this.value=F;this._written=true;D.type=C;if(!B){this.owner.fireChangeEvent(D);}return true;},configure:function(B,C){B=B||{};if(C){this._written=false;}this._initialConfig=this._initialConfig||{};for(var A in B){if(B.hasOwnProperty(A)){this[A]=B[A];if(C){this._initialConfig[A]=B[A];}}}},resetValue:function(){return this.setValue(this._initialConfig.value);},resetConfig:function(){this.configure(this._initialConfig,true);},refresh:function(A){this.setValue(this.value,A);}};(function(){var A=YAHOO.util.Lang;YAHOO.util.AttributeProvider=function(){};YAHOO.util.AttributeProvider.prototype={_configs:null,get:function(C){this._configs=this._configs||{};var B=this._configs[C];if(!B||!this._configs.hasOwnProperty(C)){return null;}return B.getValue();},set:function(D,E,B){this._configs=this._configs||{};var C=this._configs[D];if(!C){return false;}return C.setValue(E,B);},getAttributeKeys:function(){this._configs=this._configs;var C=[],B;for(B in this._configs){if(A.hasOwnProperty(this._configs,B)&&!A.isUndefined(this._configs[B])){C[C.length]=B;}}return C;},setAttributes:function(D,B){for(var C in D){if(A.hasOwnProperty(D,C)){this.set(C,D[C],B);}}},resetValue:function(C,B){this._configs=this._configs||{};if(this._configs[C]){this.set(C,this._configs[C]._initialConfig.value,B);return true;}return false;},refresh:function(E,C){this._configs=this._configs||{};var F=this._configs;E=((A.isString(E))?[E]:E)||this.getAttributeKeys();for(var D=0,B=E.length;D<B;++D){if(F.hasOwnProperty(E[D])){this._configs[E[D]].refresh(C);}}},register:function(B,C){this.setAttributeConfig(B,C);},getAttributeConfig:function(C){this._configs=this._configs||{};var B=this._configs[C]||{};var D={};for(C in B){if(A.hasOwnProperty(B,C)){D[C]=B[C];}}return D;},setAttributeConfig:function(B,C,D){this._configs=this._configs||{};C=C||{};if(!this._configs[B]){C.name=B;this._configs[B]=this.createAttribute(C);}else{this._configs[B].configure(C,D);}},configureAttribute:function(B,C,D){this.setAttributeConfig(B,C,D);},resetAttributeConfig:function(B){this._configs=this._configs||{};this._configs[B].resetConfig();},subscribe:function(B,C){this._events=this._events||{};if(!(B in this._events)){this._events[B]=this.createEvent(B);}YAHOO.util.EventProvider.prototype.subscribe.apply(this,arguments);},on:function(){this.subscribe.apply(this,arguments);},addListener:function(){this.subscribe.apply(this,arguments);},fireBeforeChangeEvent:function(C){var B="before";B+=C.type.charAt(0).toUpperCase()+C.type.substr(1)+"Change";C.type=B;return this.fireEvent(C.type,C);},fireChangeEvent:function(B){B.type+="Change";return this.fireEvent(B.type,B);},createAttribute:function(B){return new YAHOO.util.Attribute(B,this);}};YAHOO.augment(YAHOO.util.AttributeProvider,YAHOO.util.EventProvider);})();(function(){var B=YAHOO.util.Dom,C=YAHOO.util.AttributeProvider;var A=function(D,E){this.init.apply(this,arguments);};A.DOM_EVENTS={"click":true,"dblclick":true,"keydown":true,"keypress":true,"keyup":true,"mousedown":true,"mousemove":true,"mouseout":true,"mouseover":true,"mouseup":true,"focus":true,"blur":true,"submit":true,"change":true};A.prototype={DOM_EVENTS:null,DEFAULT_HTML_SETTER:function(F,D){var E=this.get("element");if(E){E[D]=F;}},DEFAULT_HTML_GETTER:function(D){var E=this.get("element"),F;if(E){F=E[D];}return F;},appendChild:function(D){D=D.get?D.get("element"):D;return this.get("element").appendChild(D);},getElementsByTagName:function(D){return this.get("element").getElementsByTagName(D);},hasChildNodes:function(){return this.get("element").hasChildNodes();},insertBefore:function(D,E){D=D.get?D.get("element"):D;E=(E&&E.get)?E.get("element"):E;return this.get("element").insertBefore(D,E);},removeChild:function(D){D=D.get?D.get("element"):D;return this.get("element").removeChild(D);},replaceChild:function(D,E){D=D.get?D.get("element"):D;E=E.get?E.get("element"):E;return this.get("element").replaceChild(D,E);},initAttributes:function(D){},addListener:function(H,G,I,F){var E=this.get("element")||this.get("id");F=F||this;var D=this;if(!this._events[H]){if(E&&this.DOM_EVENTS[H]){YAHOO.util.Event.addListener(E,H,function(J){if(J.srcElement&&!J.target){J.target=J.srcElement;}D.fireEvent(H,J);},I,F);}this.createEvent(H,this);}return YAHOO.util.EventProvider.prototype.subscribe.apply(this,arguments);},on:function(){return this.addListener.apply(this,arguments);},subscribe:function(){return this.addListener.apply(this,arguments);},removeListener:function(E,D){return this.unsubscribe.apply(this,arguments);},addClass:function(D){B.addClass(this.get("element"),D);},getElementsByClassName:function(E,D){return B.getElementsByClassName(E,D,this.get("element"));},hasClass:function(D){return B.hasClass(this.get("element"),D);},removeClass:function(D){return B.removeClass(this.get("element"),D);},replaceClass:function(E,D){return B.replaceClass(this.get("element"),E,D);},setStyle:function(E,D){return B.setStyle(this.get("element"),E,D);},getStyle:function(D){return B.getStyle(this.get("element"),D);},fireQueue:function(){var E=this._queue;for(var F=0,D=E.length;F<D;++F){this[E[F][0]].apply(this,E[F][1]);}},appendTo:function(E,F){E=(E.get)?E.get("element"):B.get(E);this.fireEvent("beforeAppendTo",{type:"beforeAppendTo",target:E});
+F=(F&&F.get)?F.get("element"):B.get(F);var D=this.get("element");if(!D){return false;}if(!E){return false;}if(D.parent!=E){if(F){E.insertBefore(D,F);}else{E.appendChild(D);}}this.fireEvent("appendTo",{type:"appendTo",target:E});return D;},get:function(D){var F=this._configs||{},E=F.element;if(E&&!F[D]&&!YAHOO.lang.isUndefined(E.value[D])){this._setHTMLAttrConfig(D);}return C.prototype.get.call(this,D);},setAttributes:function(J,G){var E={},H=this._configOrder;for(var I=0,D=H.length;I<D;++I){if(J[H[I]]!==undefined){E[H[I]]=true;this.set(H[I],J[H[I]],G);}}for(var F in J){if(J.hasOwnProperty(F)&&!E[F]){this.set(F,J[F],G);}}},set:function(E,G,D){var F=this.get("element");if(!F){this._queue[this._queue.length]=["set",arguments];if(this._configs[E]){this._configs[E].value=G;}return;}if(!this._configs[E]&&!YAHOO.lang.isUndefined(F[E])){this._setHTMLAttrConfig(E);}return C.prototype.set.apply(this,arguments);},setAttributeConfig:function(D,E,F){this._configOrder.push(D);C.prototype.setAttributeConfig.apply(this,arguments);},createEvent:function(E,D){this._events[E]=true;return C.prototype.createEvent.apply(this,arguments);},init:function(E,D){this._initElement(E,D);},destroy:function(){var D=this.get("element");YAHOO.util.Event.purgeElement(D,true);this.unsubscribeAll();if(D&&D.parentNode){D.parentNode.removeChild(D);}this._queue=[];this._events={};this._configs={};this._configOrder=[];},_initElement:function(F,E){this._queue=this._queue||[];this._events=this._events||{};this._configs=this._configs||{};this._configOrder=[];E=E||{};E.element=E.element||F||null;var H=false;var D=A.DOM_EVENTS;this.DOM_EVENTS=this.DOM_EVENTS||{};for(var G in D){if(D.hasOwnProperty(G)){this.DOM_EVENTS[G]=D[G];}}if(typeof E.element==="string"){this._setHTMLAttrConfig("id",{value:E.element});}if(B.get(E.element)){H=true;this._initHTMLElement(E);this._initContent(E);}YAHOO.util.Event.onAvailable(E.element,function(){if(!H){this._initHTMLElement(E);}this.fireEvent("available",{type:"available",target:B.get(E.element)});},this,true);YAHOO.util.Event.onContentReady(E.element,function(){if(!H){this._initContent(E);}this.fireEvent("contentReady",{type:"contentReady",target:B.get(E.element)});},this,true);},_initHTMLElement:function(D){this.setAttributeConfig("element",{value:B.get(D.element),readOnly:true});},_initContent:function(D){this.initAttributes(D);this.setAttributes(D,true);this.fireQueue();},_setHTMLAttrConfig:function(D,F){var E=this.get("element");F=F||{};F.name=D;F.setter=F.setter||this.DEFAULT_HTML_SETTER;F.getter=F.getter||this.DEFAULT_HTML_GETTER;F.value=F.value||E[D];this._configs[D]=new YAHOO.util.Attribute(F,this);}};YAHOO.augment(A,C);YAHOO.util.Element=A;})();YAHOO.register("element",YAHOO.util.Element,{version:"2.7.0",build:"1796"});/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+YAHOO.util.Color=function(){var A="0",B=YAHOO.lang.isArray,C=YAHOO.lang.isNumber;return{real2dec:function(D){return Math.min(255,Math.round(D*256));},hsv2rgb:function(H,O,M){if(B(H)){return this.hsv2rgb.call(this,H[0],H[1],H[2]);}var D,I,L,G=Math.floor((H/60)%6),J=(H/60)-G,F=M*(1-O),E=M*(1-J*O),N=M*(1-(1-J)*O),K;switch(G){case 0:D=M;I=N;L=F;break;case 1:D=E;I=M;L=F;break;case 2:D=F;I=M;L=N;break;case 3:D=F;I=E;L=M;break;case 4:D=N;I=F;L=M;break;case 5:D=M;I=F;L=E;break;}K=this.real2dec;return[K(D),K(I),K(L)];},rgb2hsv:function(D,H,I){if(B(D)){return this.rgb2hsv.apply(this,D);}D/=255;H/=255;I/=255;var G,L,E=Math.min(Math.min(D,H),I),J=Math.max(Math.max(D,H),I),K=J-E,F;switch(J){case E:G=0;break;case D:G=60*(H-I)/K;if(H<I){G+=360;}break;case H:G=(60*(I-D)/K)+120;break;case I:G=(60*(D-H)/K)+240;break;}L=(J===0)?0:1-(E/J);F=[Math.round(G),L,J];return F;},rgb2hex:function(F,E,D){if(B(F)){return this.rgb2hex.apply(this,F);}var G=this.dec2hex;return G(F)+G(E)+G(D);},dec2hex:function(D){D=parseInt(D,10)|0;D=(D>255||D<0)?0:D;return(A+D.toString(16)).slice(-2).toUpperCase();},hex2dec:function(D){return parseInt(D,16);},hex2rgb:function(D){var E=this.hex2dec;return[E(D.slice(0,2)),E(D.slice(2,4)),E(D.slice(4,6))];},websafe:function(F,E,D){if(B(F)){return this.websafe.apply(this,F);}var G=function(H){if(C(H)){H=Math.min(Math.max(0,H),255);var I,J;for(I=0;I<256;I=I+51){J=I+51;if(H>=I&&H<=J){return(H-I>25)?J:I;}}}return H;};return[G(F),G(E),G(D)];}};}();(function(){var J=0,F=YAHOO.util,C=YAHOO.lang,D=YAHOO.widget.Slider,B=F.Color,E=F.Dom,I=F.Event,A=C.substitute,H="yui-picker";function G(L,K){J=J+1;K=K||{};if(arguments.length===1&&!YAHOO.lang.isString(L)&&!L.nodeName){K=L;L=K.element||null;}if(!L&&!K.element){L=this._createHostElement(K);}G.superclass.constructor.call(this,L,K);this.initPicker();}YAHOO.extend(G,YAHOO.util.Element,{ID:{R:H+"-r",R_HEX:H+"-rhex",G:H+"-g",G_HEX:H+"-ghex",B:H+"-b",B_HEX:H+"-bhex",H:H+"-h",S:H+"-s",V:H+"-v",PICKER_BG:H+"-bg",PICKER_THUMB:H+"-thumb",HUE_BG:H+"-hue-bg",HUE_THUMB:H+"-hue-thumb",HEX:H+"-hex",SWATCH:H+"-swatch",WEBSAFE_SWATCH:H+"-websafe-swatch",CONTROLS:H+"-controls",RGB_CONTROLS:H+"-rgb-controls",HSV_CONTROLS:H+"-hsv-controls",HEX_CONTROLS:H+"-hex-controls",HEX_SUMMARY:H+"-hex-summary",CONTROLS_LABEL:H+"-controls-label"},TXT:{ILLEGAL_HEX:"Illegal hex value entered",SHOW_CONTROLS:"Show color details",HIDE_CONTROLS:"Hide color details",CURRENT_COLOR:"Currently selected color: {rgb}",CLOSEST_WEBSAFE:"Closest websafe color: {rgb}. Click to select.",R:"R",G:"G",B:"B",H:"H",S:"S",V:"V",HEX:"#",DEG:"\u00B0",PERCENT:"%"},IMAGE:{PICKER_THUMB:"../../build/colorpicker/assets/picker_thumb.png",HUE_THUMB:"../../build/colorpicker/assets/hue_thumb.png"},DEFAULT:{PICKER_SIZE:180},OPT:{HUE:"hue",SATURATION:"saturation",VALUE:"value",RED:"red",GREEN:"green",BLUE:"blue",HSV:"hsv",RGB:"rgb",WEBSAFE:"websafe",HEX:"hex",PICKER_SIZE:"pickersize",SHOW_CONTROLS:"showcontrols",SHOW_RGB_CONTROLS:"showrgbcontrols",SHOW_HSV_CONTROLS:"showhsvcontrols",SHOW_HEX_CONTROLS:"showhexcontrols",SHOW_HEX_SUMMARY:"showhexsummary",SHOW_WEBSAFE:"showwebsafe",CONTAINER:"container",IDS:"ids",ELEMENTS:"elements",TXT:"txt",IMAGES:"images",ANIMATE:"animate"},skipAnim:true,_createHostElement:function(){var K=document.createElement("div");if(this.CSS.BASE){K.className=this.CSS.BASE;}return K;},_updateHueSlider:function(){var K=this.get(this.OPT.PICKER_SIZE),L=this.get(this.OPT.HUE);L=K-Math.round(L/360*K);if(L===K){L=0;}this.hueSlider.setValue(L,this.skipAnim);},_updatePickerSlider:function(){var L=this.get(this.OPT.PICKER_SIZE),M=this.get(this.OPT.SATURATION),K=this.get(this.OPT.VALUE);M=Math.round(M*L/100);K=Math.round(L-(K*L/100));this.pickerSlider.setRegionValue(M,K,this.skipAnim);},_updateSliders:function(){this._updateHueSlider();this._updatePickerSlider();},setValue:function(L,K){K=(K)||false;this.set(this.OPT.RGB,L,K);this._updateSliders();},hueSlider:null,pickerSlider:null,_getH:function(){var K=this.get(this.OPT.PICKER_SIZE),L=(K-this.hueSlider.getValue())/K;L=Math.round(L*360);return(L===360)?0:L;},_getS:function(){return this.pickerSlider.getXValue()/this.get(this.OPT.PICKER_SIZE);},_getV:function(){var K=this.get(this.OPT.PICKER_SIZE);return(K-this.pickerSlider.getYValue())/K;},_updateSwatch:function(){var M=this.get(this.OPT.RGB),O=this.get(this.OPT.WEBSAFE),N=this.getElement(this.ID.SWATCH),L=M.join(","),K=this.get(this.OPT.TXT);E.setStyle(N,"background-color","rgb("+L+")");N.title=A(K.CURRENT_COLOR,{"rgb":"#"+this.get(this.OPT.HEX)});N=this.getElement(this.ID.WEBSAFE_SWATCH);L=O.join(",");E.setStyle(N,"background-color","rgb("+L+")");N.title=A(K.CLOSEST_WEBSAFE,{"rgb":"#"+B.rgb2hex(O)});},_getValuesFromSliders:function(){this.set(this.OPT.RGB,B.hsv2rgb(this._getH(),this._getS(),this._getV()));},_updateFormFields:function(){this.getElement(this.ID.H).value=this.get(this.OPT.HUE);this.getElement(this.ID.S).value=this.get(this.OPT.SATURATION);this.getElement(this.ID.V).value=this.get(this.OPT.VALUE);this.getElement(this.ID.R).value=this.get(this.OPT.RED);this.getElement(this.ID.R_HEX).innerHTML=B.dec2hex(this.get(this.OPT.RED));this.getElement(this.ID.G).value=this.get(this.OPT.GREEN);this.getElement(this.ID.G_HEX).innerHTML=B.dec2hex(this.get(this.OPT.GREEN));this.getElement(this.ID.B).value=this.get(this.OPT.BLUE);this.getElement(this.ID.B_HEX).innerHTML=B.dec2hex(this.get(this.OPT.BLUE));this.getElement(this.ID.HEX).value=this.get(this.OPT.HEX);},_onHueSliderChange:function(N){var L=this._getH(),K=B.hsv2rgb(L,1,1),M="rgb("+K.join(",")+")";this.set(this.OPT.HUE,L,true);E.setStyle(this.getElement(this.ID.PICKER_BG),"background-color",M);if(this.hueSlider.valueChangeSource!==D.SOURCE_SET_VALUE){this._getValuesFromSliders();}this._updateFormFields();this._updateSwatch();},_onPickerSliderChange:function(M){var L=this._getS(),K=this._getV();this.set(this.OPT.SATURATION,Math.round(L*100),true);this.set(this.OPT.VALUE,Math.round(K*100),true);if(this.pickerSlider.valueChangeSource!==D.SOURCE_SET_VALUE){this._getValuesFromSliders();
+}this._updateFormFields();this._updateSwatch();},_getCommand:function(K){var L=I.getCharCode(K);if(L===38){return 3;}else{if(L===13){return 6;}else{if(L===40){return 4;}else{if(L>=48&&L<=57){return 1;}else{if(L>=97&&L<=102){return 2;}else{if(L>=65&&L<=70){return 2;}else{if("8, 9, 13, 27, 37, 39".indexOf(L)>-1||K.ctrlKey||K.metaKey){return 5;}else{return 0;}}}}}}}},_useFieldValue:function(L,K,N){var M=K.value;if(N!==this.OPT.HEX){M=parseInt(M,10);}if(M!==this.get(N)){this.set(N,M);}},_rgbFieldKeypress:function(M,K,O){var N=this._getCommand(M),L=(M.shiftKey)?10:1;switch(N){case 6:this._useFieldValue.apply(this,arguments);break;case 3:this.set(O,Math.min(this.get(O)+L,255));this._updateFormFields();break;case 4:this.set(O,Math.max(this.get(O)-L,0));this._updateFormFields();break;default:}},_hexFieldKeypress:function(L,K,N){var M=this._getCommand(L);if(M===6){this._useFieldValue.apply(this,arguments);}},_hexOnly:function(L,K){var M=this._getCommand(L);switch(M){case 6:case 5:case 1:break;case 2:if(K!==true){break;}default:I.stopEvent(L);return false;}},_numbersOnly:function(K){return this._hexOnly(K,true);},getElement:function(K){return this.get(this.OPT.ELEMENTS)[this.get(this.OPT.IDS)[K]];},_createElements:function(){var N,M,P,O,L,K=this.get(this.OPT.IDS),Q=this.get(this.OPT.TXT),S=this.get(this.OPT.IMAGES),R=function(U,V){var W=document.createElement(U);if(V){C.augmentObject(W,V,true);}return W;},T=function(U,V){var W=C.merge({autocomplete:"off",value:"0",size:3,maxlength:3},V);W.name=W.id;return new R(U,W);};L=this.get("element");N=new R("div",{id:K[this.ID.PICKER_BG],className:"yui-picker-bg",tabIndex:-1,hideFocus:true});M=new R("div",{id:K[this.ID.PICKER_THUMB],className:"yui-picker-thumb"});P=new R("img",{src:S.PICKER_THUMB});M.appendChild(P);N.appendChild(M);L.appendChild(N);N=new R("div",{id:K[this.ID.HUE_BG],className:"yui-picker-hue-bg",tabIndex:-1,hideFocus:true});M=new R("div",{id:K[this.ID.HUE_THUMB],className:"yui-picker-hue-thumb"});P=new R("img",{src:S.HUE_THUMB});M.appendChild(P);N.appendChild(M);L.appendChild(N);N=new R("div",{id:K[this.ID.CONTROLS],className:"yui-picker-controls"});L.appendChild(N);L=N;N=new R("div",{className:"hd"});M=new R("a",{id:K[this.ID.CONTROLS_LABEL],href:"#"});N.appendChild(M);L.appendChild(N);N=new R("div",{className:"bd"});L.appendChild(N);L=N;N=new R("ul",{id:K[this.ID.RGB_CONTROLS],className:"yui-picker-rgb-controls"});M=new R("li");M.appendChild(document.createTextNode(Q.R+" "));O=new T("input",{id:K[this.ID.R],className:"yui-picker-r"});M.appendChild(O);N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.G+" "));O=new T("input",{id:K[this.ID.G],className:"yui-picker-g"});M.appendChild(O);N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.B+" "));O=new T("input",{id:K[this.ID.B],className:"yui-picker-b"});M.appendChild(O);N.appendChild(M);L.appendChild(N);N=new R("ul",{id:K[this.ID.HSV_CONTROLS],className:"yui-picker-hsv-controls"});M=new R("li");M.appendChild(document.createTextNode(Q.H+" "));O=new T("input",{id:K[this.ID.H],className:"yui-picker-h"});M.appendChild(O);M.appendChild(document.createTextNode(" "+Q.DEG));N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.S+" "));O=new T("input",{id:K[this.ID.S],className:"yui-picker-s"});M.appendChild(O);M.appendChild(document.createTextNode(" "+Q.PERCENT));N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.V+" "));O=new T("input",{id:K[this.ID.V],className:"yui-picker-v"});M.appendChild(O);M.appendChild(document.createTextNode(" "+Q.PERCENT));N.appendChild(M);L.appendChild(N);N=new R("ul",{id:K[this.ID.HEX_SUMMARY],className:"yui-picker-hex_summary"});M=new R("li",{id:K[this.ID.R_HEX]});N.appendChild(M);M=new R("li",{id:K[this.ID.G_HEX]});N.appendChild(M);M=new R("li",{id:K[this.ID.B_HEX]});N.appendChild(M);L.appendChild(N);N=new R("div",{id:K[this.ID.HEX_CONTROLS],className:"yui-picker-hex-controls"});N.appendChild(document.createTextNode(Q.HEX+" "));M=new T("input",{id:K[this.ID.HEX],className:"yui-picker-hex",size:6,maxlength:6});N.appendChild(M);L.appendChild(N);L=this.get("element");N=new R("div",{id:K[this.ID.SWATCH],className:"yui-picker-swatch"});L.appendChild(N);N=new R("div",{id:K[this.ID.WEBSAFE_SWATCH],className:"yui-picker-websafe-swatch"});L.appendChild(N);},_attachRGBHSV:function(L,K){I.on(this.getElement(L),"keydown",function(N,M){M._rgbFieldKeypress(N,this,K);},this);I.on(this.getElement(L),"keypress",this._numbersOnly,this,true);I.on(this.getElement(L),"blur",function(N,M){M._useFieldValue(N,this,K);},this);},_updateRGB:function(){var K=[this.get(this.OPT.RED),this.get(this.OPT.GREEN),this.get(this.OPT.BLUE)];this.set(this.OPT.RGB,K);this._updateSliders();},_initElements:function(){var O=this.OPT,N=this.get(O.IDS),L=this.get(O.ELEMENTS),K,M,P;for(K in this.ID){if(C.hasOwnProperty(this.ID,K)){N[this.ID[K]]=N[K];}}M=E.get(N[this.ID.PICKER_BG]);if(!M){this._createElements();}else{}for(K in N){if(C.hasOwnProperty(N,K)){M=E.get(N[K]);P=E.generateId(M);N[K]=P;N[N[K]]=P;L[P]=M;}}},initPicker:function(){this._initSliders();this._bindUI();this.syncUI(true);},_initSliders:function(){var K=this.ID,L=this.get(this.OPT.PICKER_SIZE);this.hueSlider=D.getVertSlider(this.getElement(K.HUE_BG),this.getElement(K.HUE_THUMB),0,L);this.pickerSlider=D.getSliderRegion(this.getElement(K.PICKER_BG),this.getElement(K.PICKER_THUMB),0,L,0,L);this.set(this.OPT.ANIMATE,this.get(this.OPT.ANIMATE));},_bindUI:function(){var K=this.ID,L=this.OPT;this.hueSlider.subscribe("change",this._onHueSliderChange,this,true);this.pickerSlider.subscribe("change",this._onPickerSliderChange,this,true);I.on(this.getElement(K.WEBSAFE_SWATCH),"click",function(M){this.setValue(this.get(L.WEBSAFE));},this,true);I.on(this.getElement(K.CONTROLS_LABEL),"click",function(M){this.set(L.SHOW_CONTROLS,!this.get(L.SHOW_CONTROLS));I.preventDefault(M);},this,true);this._attachRGBHSV(K.R,L.RED);this._attachRGBHSV(K.G,L.GREEN);this._attachRGBHSV(K.B,L.BLUE);this._attachRGBHSV(K.H,L.HUE);
+this._attachRGBHSV(K.S,L.SATURATION);this._attachRGBHSV(K.V,L.VALUE);I.on(this.getElement(K.HEX),"keydown",function(N,M){M._hexFieldKeypress(N,this,L.HEX);},this);I.on(this.getElement(this.ID.HEX),"keypress",this._hexOnly,this,true);I.on(this.getElement(this.ID.HEX),"blur",function(N,M){M._useFieldValue(N,this,L.HEX);},this);},syncUI:function(K){this.skipAnim=K;this._updateRGB();this.skipAnim=false;},_updateRGBFromHSV:function(){var L=[this.get(this.OPT.HUE),this.get(this.OPT.SATURATION)/100,this.get(this.OPT.VALUE)/100],K=B.hsv2rgb(L);this.set(this.OPT.RGB,K);this._updateSliders();},_updateHex:function(){var N=this.get(this.OPT.HEX),K=N.length,O,M,L;if(K===3){O=N.split("");for(M=0;M<K;M=M+1){O[M]=O[M]+O[M];}N=O.join("");}if(N.length!==6){return false;}L=B.hex2rgb(N);this.setValue(L);},_hideShowEl:function(M,K){var L=(C.isString(M)?this.getElement(M):M);E.setStyle(L,"display",(K)?"":"none");},initAttributes:function(K){K=K||{};G.superclass.initAttributes.call(this,K);this.setAttributeConfig(this.OPT.PICKER_SIZE,{value:K.size||this.DEFAULT.PICKER_SIZE});this.setAttributeConfig(this.OPT.HUE,{value:K.hue||0,validator:C.isNumber});this.setAttributeConfig(this.OPT.SATURATION,{value:K.saturation||0,validator:C.isNumber});this.setAttributeConfig(this.OPT.VALUE,{value:C.isNumber(K.value)?K.value:100,validator:C.isNumber});this.setAttributeConfig(this.OPT.RED,{value:C.isNumber(K.red)?K.red:255,validator:C.isNumber});this.setAttributeConfig(this.OPT.GREEN,{value:C.isNumber(K.green)?K.green:255,validator:C.isNumber});this.setAttributeConfig(this.OPT.BLUE,{value:C.isNumber(K.blue)?K.blue:255,validator:C.isNumber});this.setAttributeConfig(this.OPT.HEX,{value:K.hex||"FFFFFF",validator:C.isString});this.setAttributeConfig(this.OPT.RGB,{value:K.rgb||[255,255,255],method:function(O){this.set(this.OPT.RED,O[0],true);this.set(this.OPT.GREEN,O[1],true);this.set(this.OPT.BLUE,O[2],true);var Q=B.websafe(O),P=B.rgb2hex(O),N=B.rgb2hsv(O);this.set(this.OPT.WEBSAFE,Q,true);this.set(this.OPT.HEX,P,true);if(N[1]){this.set(this.OPT.HUE,N[0],true);}this.set(this.OPT.SATURATION,Math.round(N[1]*100),true);this.set(this.OPT.VALUE,Math.round(N[2]*100),true);},readonly:true});this.setAttributeConfig(this.OPT.CONTAINER,{value:null,method:function(N){if(N){N.showEvent.subscribe(function(){this.pickerSlider.focus();},this,true);}}});this.setAttributeConfig(this.OPT.WEBSAFE,{value:K.websafe||[255,255,255]});var M=K.ids||C.merge({},this.ID),L;if(!K.ids&&J>1){for(L in M){if(C.hasOwnProperty(M,L)){M[L]=M[L]+J;}}}this.setAttributeConfig(this.OPT.IDS,{value:M,writeonce:true});this.setAttributeConfig(this.OPT.TXT,{value:K.txt||this.TXT,writeonce:true});this.setAttributeConfig(this.OPT.IMAGES,{value:K.images||this.IMAGE,writeonce:true});this.setAttributeConfig(this.OPT.ELEMENTS,{value:{},readonly:true});this.setAttributeConfig(this.OPT.SHOW_CONTROLS,{value:C.isBoolean(K.showcontrols)?K.showcontrols:true,method:function(N){var O=E.getElementsByClassName("bd","div",this.getElement(this.ID.CONTROLS))[0];this._hideShowEl(O,N);this.getElement(this.ID.CONTROLS_LABEL).innerHTML=(N)?this.get(this.OPT.TXT).HIDE_CONTROLS:this.get(this.OPT.TXT).SHOW_CONTROLS;}});this.setAttributeConfig(this.OPT.SHOW_RGB_CONTROLS,{value:C.isBoolean(K.showrgbcontrols)?K.showrgbcontrols:true,method:function(N){this._hideShowEl(this.ID.RGB_CONTROLS,N);}});this.setAttributeConfig(this.OPT.SHOW_HSV_CONTROLS,{value:C.isBoolean(K.showhsvcontrols)?K.showhsvcontrols:false,method:function(N){this._hideShowEl(this.ID.HSV_CONTROLS,N);if(N&&this.get(this.OPT.SHOW_HEX_SUMMARY)){this.set(this.OPT.SHOW_HEX_SUMMARY,false);}}});this.setAttributeConfig(this.OPT.SHOW_HEX_CONTROLS,{value:C.isBoolean(K.showhexcontrols)?K.showhexcontrols:false,method:function(N){this._hideShowEl(this.ID.HEX_CONTROLS,N);}});this.setAttributeConfig(this.OPT.SHOW_WEBSAFE,{value:C.isBoolean(K.showwebsafe)?K.showwebsafe:true,method:function(N){this._hideShowEl(this.ID.WEBSAFE_SWATCH,N);}});this.setAttributeConfig(this.OPT.SHOW_HEX_SUMMARY,{value:C.isBoolean(K.showhexsummary)?K.showhexsummary:true,method:function(N){this._hideShowEl(this.ID.HEX_SUMMARY,N);if(N&&this.get(this.OPT.SHOW_HSV_CONTROLS)){this.set(this.OPT.SHOW_HSV_CONTROLS,false);}}});this.setAttributeConfig(this.OPT.ANIMATE,{value:C.isBoolean(K.animate)?K.animate:true,method:function(N){if(this.pickerSlider){this.pickerSlider.animate=N;this.hueSlider.animate=N;}}});this.on(this.OPT.HUE+"Change",this._updateRGBFromHSV,this,true);this.on(this.OPT.SATURATION+"Change",this._updateRGBFromHSV,this,true);this.on(this.OPT.VALUE+"Change",this._updateRGBFromHSV,this,true);this.on(this.OPT.RED+"Change",this._updateRGB,this,true);this.on(this.OPT.GREEN+"Change",this._updateRGB,this,true);this.on(this.OPT.BLUE+"Change",this._updateRGB,this,true);this.on(this.OPT.HEX+"Change",this._updateHex,this,true);this._initElements();}});YAHOO.widget.ColorPicker=G;})();YAHOO.register("colorpicker",YAHOO.widget.ColorPicker,{version:"2.7.0",build:"1796"});
+
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+(function(){var B=YAHOO.util;var A=function(D,C,E,F){if(!D){}this.init(D,C,E,F);};A.NAME="Anim";A.prototype={toString:function(){var C=this.getEl()||{};var D=C.id||C.tagName;return(this.constructor.NAME+": "+D);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(C,E,D){return this.method(this.currentFrame,E,D-E,this.totalFrames);},setAttribute:function(C,F,E){var D=this.getEl();if(this.patterns.noNegatives.test(C)){F=(F>0)?F:0;}if("style" in D){B.Dom.setStyle(D,C,F+E);}else{if(C in D){D[C]=F;}}},getAttribute:function(C){var E=this.getEl();var G=B.Dom.getStyle(E,C);if(G!=="auto"&&!this.patterns.offsetUnit.test(G)){return parseFloat(G);}var D=this.patterns.offsetAttribute.exec(C)||[];var H=!!(D[3]);var F=!!(D[2]);if("style" in E){if(F||(B.Dom.getStyle(E,"position")=="absolute"&&H)){G=E["offset"+D[0].charAt(0).toUpperCase()+D[0].substr(1)];}else{G=0;}}else{if(C in E){G=E[C];}}return G;},getDefaultUnit:function(C){if(this.patterns.defaultUnit.test(C)){return"px";}return"";},setRuntimeAttribute:function(D){var I;var E;var F=this.attributes;this.runtimeAttributes[D]={};var H=function(J){return(typeof J!=="undefined");};if(!H(F[D]["to"])&&!H(F[D]["by"])){return false;}I=(H(F[D]["from"]))?F[D]["from"]:this.getAttribute(D);if(H(F[D]["to"])){E=F[D]["to"];}else{if(H(F[D]["by"])){if(I.constructor==Array){E=[];for(var G=0,C=I.length;G<C;++G){E[G]=I[G]+F[D]["by"][G]*1;}}else{E=I+F[D]["by"]*1;}}}this.runtimeAttributes[D].start=I;this.runtimeAttributes[D].end=E;this.runtimeAttributes[D].unit=(H(F[D].unit))?F[D]["unit"]:this.getDefaultUnit(D);return true;},init:function(E,J,I,C){var D=false;var F=null;var H=0;E=B.Dom.get(E);this.attributes=J||{};this.duration=!YAHOO.lang.isUndefined(I)?I:1;this.method=C||B.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=B.AnimMgr.fps;this.setEl=function(M){E=B.Dom.get(M);};this.getEl=function(){return E;};this.isAnimated=function(){return D;};this.getStartTime=function(){return F;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(B.AnimMgr.fps*this.duration):this.duration;if(this.duration===0&&this.useSeconds){this.totalFrames=1;}B.AnimMgr.registerElement(this);return true;};this.stop=function(M){if(!this.isAnimated()){return false;}if(M){this.currentFrame=this.totalFrames;this._onTween.fire();}B.AnimMgr.stop(this);};var L=function(){this.onStart.fire();this.runtimeAttributes={};for(var M in this.attributes){this.setRuntimeAttribute(M);}D=true;H=0;F=new Date();};var K=function(){var O={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};O.toString=function(){return("duration: "+O.duration+", currentFrame: "+O.currentFrame);};this.onTween.fire(O);var N=this.runtimeAttributes;for(var M in N){this.setAttribute(M,this.doMethod(M,N[M].start,N[M].end),N[M].unit);}H+=1;};var G=function(){var M=(new Date()-F)/1000;var N={duration:M,frames:H,fps:H/M};N.toString=function(){return("duration: "+N.duration+", frames: "+N.frames+", fps: "+N.fps);};D=false;H=0;this.onComplete.fire(N);};this._onStart=new B.CustomEvent("_start",this,true);this.onStart=new B.CustomEvent("start",this);this.onTween=new B.CustomEvent("tween",this);this._onTween=new B.CustomEvent("_tween",this,true);this.onComplete=new B.CustomEvent("complete",this);this._onComplete=new B.CustomEvent("_complete",this,true);this._onStart.subscribe(L);this._onTween.subscribe(K);this._onComplete.subscribe(G);}};B.Anim=A;})();YAHOO.util.AnimMgr=new function(){var C=null;var B=[];var A=0;this.fps=1000;this.delay=1;this.registerElement=function(F){B[B.length]=F;A+=1;F._onStart.fire();this.start();};this.unRegister=function(G,F){F=F||E(G);if(!G.isAnimated()||F==-1){return false;}G._onComplete.fire();B.splice(F,1);A-=1;if(A<=0){this.stop();}return true;};this.start=function(){if(C===null){C=setInterval(this.run,this.delay);}};this.stop=function(H){if(!H){clearInterval(C);for(var G=0,F=B.length;G<F;++G){this.unRegister(B[0],0);}B=[];C=null;A=0;}else{this.unRegister(H);}};this.run=function(){for(var H=0,F=B.length;H<F;++H){var G=B[H];if(!G||!G.isAnimated()){continue;}if(G.currentFrame<G.totalFrames||G.totalFrames===null){G.currentFrame+=1;if(G.useSeconds){D(G);}G._onTween.fire();}else{YAHOO.util.AnimMgr.stop(G,H);}}};var E=function(H){for(var G=0,F=B.length;G<F;++G){if(B[G]==H){return G;}}return -1;};var D=function(G){var J=G.totalFrames;var I=G.currentFrame;var H=(G.currentFrame*G.duration*1000/G.totalFrames);var F=(new Date()-G.getStartTime());var K=0;if(F<G.duration*1000){K=Math.round((F/H-1)*G.currentFrame);}else{K=J-(I+1);}if(K>0&&isFinite(K)){if(G.currentFrame+K>=J){K=J-(I+1);}G.currentFrame+=K;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(E,D){var F=E.length;var C=[];for(var B=0;B<F;++B){C[B]=[E[B][0],E[B][1]];}for(var A=1;A<F;++A){for(B=0;B<F-A;++B){C[B][0]=(1-D)*C[B][0]+D*C[parseInt(B+1,10)][0];C[B][1]=(1-D)*C[B][1]+D*C[parseInt(B+1,10)][1];}}return[C[0][0],C[0][1]];};};(function(){var A=function(F,E,G,H){A.superclass.constructor.call(this,F,E,G,H);};A.NAME="ColorAnim";A.DEFAULT_BGCOLOR="#fff";var C=YAHOO.util;YAHOO.extend(A,C.Anim);var D=A.superclass;var B=A.prototype;B.patterns.color=/color$/i;B.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;B.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;B.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;B.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;B.parseColor=function(E){if(E.length==3){return E;}var F=this.patterns.hex.exec(E);if(F&&F.length==4){return[parseInt(F[1],16),parseInt(F[2],16),parseInt(F[3],16)];}F=this.patterns.rgb.exec(E);if(F&&F.length==4){return[parseInt(F[1],10),parseInt(F[2],10),parseInt(F[3],10)];}F=this.patterns.hex3.exec(E);if(F&&F.length==4){return[parseInt(F[1]+F[1],16),parseInt(F[2]+F[2],16),parseInt(F[3]+F[3],16)];
+}return null;};B.getAttribute=function(E){var G=this.getEl();if(this.patterns.color.test(E)){var I=YAHOO.util.Dom.getStyle(G,E);var H=this;if(this.patterns.transparent.test(I)){var F=YAHOO.util.Dom.getAncestorBy(G,function(J){return !H.patterns.transparent.test(I);});if(F){I=C.Dom.getStyle(F,E);}else{I=A.DEFAULT_BGCOLOR;}}}else{I=D.getAttribute.call(this,E);}return I;};B.doMethod=function(F,J,G){var I;if(this.patterns.color.test(F)){I=[];for(var H=0,E=J.length;H<E;++H){I[H]=D.doMethod.call(this,F,J[H],G[H]);}I="rgb("+Math.floor(I[0])+","+Math.floor(I[1])+","+Math.floor(I[2])+")";}else{I=D.doMethod.call(this,F,J,G);}return I;};B.setRuntimeAttribute=function(F){D.setRuntimeAttribute.call(this,F);if(this.patterns.color.test(F)){var H=this.attributes;var J=this.parseColor(this.runtimeAttributes[F].start);var G=this.parseColor(this.runtimeAttributes[F].end);if(typeof H[F]["to"]==="undefined"&&typeof H[F]["by"]!=="undefined"){G=this.parseColor(H[F].by);for(var I=0,E=J.length;I<E;++I){G[I]=J[I]+G[I];}}this.runtimeAttributes[F].start=J;this.runtimeAttributes[F].end=G;}};C.ColorAnim=A;})();
+/*
+TERMS OF USE - EASING EQUATIONS
+Open source under the BSD License.
+Copyright 2001 Robert Penner All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+YAHOO.util.Easing={easeNone:function(B,A,D,C){return D*B/C+A;},easeIn:function(B,A,D,C){return D*(B/=C)*B+A;},easeOut:function(B,A,D,C){return -D*(B/=C)*(B-2)+A;},easeBoth:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B+A;}return -D/2*((--B)*(B-2)-1)+A;},easeInStrong:function(B,A,D,C){return D*(B/=C)*B*B*B+A;},easeOutStrong:function(B,A,D,C){return -D*((B=B/C-1)*B*B*B-1)+A;},easeBothStrong:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B*B*B+A;}return -D/2*((B-=2)*B*B*B-2)+A;},elasticIn:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}return -(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;},elasticOut:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}return B*Math.pow(2,-10*C)*Math.sin((C*F-D)*(2*Math.PI)/E)+G+A;},elasticBoth:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F/2)==2){return A+G;}if(!E){E=F*(0.3*1.5);}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}if(C<1){return -0.5*(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;}return B*Math.pow(2,-10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E)*0.5+G+A;},backIn:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}return E*(B/=D)*B*((C+1)*B-C)+A;},backOut:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}return E*((B=B/D-1)*B*((C+1)*B+C)+1)+A;},backBoth:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}if((B/=D/2)<1){return E/2*(B*B*(((C*=(1.525))+1)*B-C))+A;}return E/2*((B-=2)*B*(((C*=(1.525))+1)*B+C)+2)+A;},bounceIn:function(B,A,D,C){return D-YAHOO.util.Easing.bounceOut(C-B,0,D,C)+A;},bounceOut:function(B,A,D,C){if((B/=C)<(1/2.75)){return D*(7.5625*B*B)+A;}else{if(B<(2/2.75)){return D*(7.5625*(B-=(1.5/2.75))*B+0.75)+A;}else{if(B<(2.5/2.75)){return D*(7.5625*(B-=(2.25/2.75))*B+0.9375)+A;}}}return D*(7.5625*(B-=(2.625/2.75))*B+0.984375)+A;},bounceBoth:function(B,A,D,C){if(B<C/2){return YAHOO.util.Easing.bounceIn(B*2,0,D,C)*0.5+A;}return YAHOO.util.Easing.bounceOut(B*2-C,0,D,C)*0.5+D*0.5+A;}};(function(){var A=function(H,G,I,J){if(H){A.superclass.constructor.call(this,H,G,I,J);}};A.NAME="Motion";var E=YAHOO.util;YAHOO.extend(A,E.ColorAnim);var F=A.superclass;var C=A.prototype;C.patterns.points=/^points$/i;C.setAttribute=function(G,I,H){if(this.patterns.points.test(G)){H=H||"px";F.setAttribute.call(this,"left",I[0],H);F.setAttribute.call(this,"top",I[1],H);}else{F.setAttribute.call(this,G,I,H);}};C.getAttribute=function(G){if(this.patterns.points.test(G)){var H=[F.getAttribute.call(this,"left"),F.getAttribute.call(this,"top")];}else{H=F.getAttribute.call(this,G);}return H;};C.doMethod=function(G,K,H){var J=null;if(this.patterns.points.test(G)){var I=this.method(this.currentFrame,0,100,this.totalFrames)/100;J=E.Bezier.getPosition(this.runtimeAttributes[G],I);}else{J=F.doMethod.call(this,G,K,H);}return J;};C.setRuntimeAttribute=function(P){if(this.patterns.points.test(P)){var H=this.getEl();var J=this.attributes;var G;var L=J["points"]["control"]||[];var I;var M,O;if(L.length>0&&!(L[0] instanceof Array)){L=[L];}else{var K=[];for(M=0,O=L.length;M<O;++M){K[M]=L[M];}L=K;}if(E.Dom.getStyle(H,"position")=="static"){E.Dom.setStyle(H,"position","relative");}if(D(J["points"]["from"])){E.Dom.setXY(H,J["points"]["from"]);
+}else{E.Dom.setXY(H,E.Dom.getXY(H));}G=this.getAttribute("points");if(D(J["points"]["to"])){I=B.call(this,J["points"]["to"],G);var N=E.Dom.getXY(this.getEl());for(M=0,O=L.length;M<O;++M){L[M]=B.call(this,L[M],G);}}else{if(D(J["points"]["by"])){I=[G[0]+J["points"]["by"][0],G[1]+J["points"]["by"][1]];for(M=0,O=L.length;M<O;++M){L[M]=[G[0]+L[M][0],G[1]+L[M][1]];}}}this.runtimeAttributes[P]=[G];if(L.length>0){this.runtimeAttributes[P]=this.runtimeAttributes[P].concat(L);}this.runtimeAttributes[P][this.runtimeAttributes[P].length]=I;}else{F.setRuntimeAttribute.call(this,P);}};var B=function(G,I){var H=E.Dom.getXY(this.getEl());G=[G[0]-H[0]+I[0],G[1]-H[1]+I[1]];return G;};var D=function(G){return(typeof G!=="undefined");};E.Motion=A;})();(function(){var D=function(F,E,G,H){if(F){D.superclass.constructor.call(this,F,E,G,H);}};D.NAME="Scroll";var B=YAHOO.util;YAHOO.extend(D,B.ColorAnim);var C=D.superclass;var A=D.prototype;A.doMethod=function(E,H,F){var G=null;if(E=="scroll"){G=[this.method(this.currentFrame,H[0],F[0]-H[0],this.totalFrames),this.method(this.currentFrame,H[1],F[1]-H[1],this.totalFrames)];}else{G=C.doMethod.call(this,E,H,F);}return G;};A.getAttribute=function(E){var G=null;var F=this.getEl();if(E=="scroll"){G=[F.scrollLeft,F.scrollTop];}else{G=C.getAttribute.call(this,E);}return G;};A.setAttribute=function(E,H,G){var F=this.getEl();if(E=="scroll"){F.scrollLeft=H[0];F.scrollTop=H[1];}else{C.setAttribute.call(this,E,H,G);}};B.Scroll=D;})();YAHOO.register("animation",YAHOO.util.Anim,{version:"2.7.0",build:"1799"});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/yui/assets/yui.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/yui/assets/yui.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/yui/assets/yui.css	(revision 2000)
@@ -0,0 +1,15 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+.yui-h-slider,.yui-v-slider{position:relative;}.yui-h-slider .yui-slider-thumb,.yui-v-slider .yui-slider-thumb{position:absolute;cursor:default;}.yui-skin-sam .yui-h-slider{background:url(bg-h.gif) no-repeat 5px 0;height:28px;width:228px;}.yui-skin-sam .yui-h-slider .yui-slider-thumb{top:4px;}.yui-skin-sam .yui-v-slider{background:url(bg-v.gif) no-repeat 12px 0;height:228px;width:48px;}
+
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+#cke_uicolor_picker .yui-picker-panel{background:#e3e3e3;border-color:#888;}#cke_uicolor_picker .yui-picker-panel .hd{background-color:#ccc;font-size:100%;line-height:100%;border:1px solid #e3e3e3;font-weight:bold;overflow:hidden;padding:6px;color:#000;}#cke_uicolor_picker .yui-picker-panel .bd{background:#e8e8e8;margin:1px;height:200px;}#cke_uicolor_picker .yui-picker-panel .ft{background:#e8e8e8;margin:1px;padding:1px;}#cke_uicolor_picker .yui-picker{position:relative;}#cke_uicolor_picker .yui-picker-hue-thumb{cursor:default;width:18px;height:18px;top:-8px;left:-2px;z-index:9;position:absolute;}#cke_uicolor_picker .yui-picker-hue-bg{-moz-outline:none;outline:0 none;position:absolute;left:200px;height:183px;width:14px;background:url(hue_bg.png) no-repeat;top:4px;}#cke_uicolor_picker .yui-picker-bg{-moz-outline:none;outline:0 none;position:absolute;top:4px;left:4px;height:182px;width:182px;background-color:#F00;background-image:url(picker_mask.png);}*html #cke_uicolor_picker .yui-picker-bg{background-image:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='picker_mask.png',sizingMethod='scale');}#cke_uicolor_picker .yui-picker-mask{position:absolute;z-index:1;top:0;left:0;}#cke_uicolor_picker .yui-picker-thumb{cursor:default;width:11px;height:11px;z-index:9;position:absolute;top:-4px;left:-4px;}#cke_uicolor_picker .yui-picker-swatch{position:absolute;left:240px;top:4px;height:60px;width:55px;border:1px solid #888;}#cke_uicolor_picker .yui-picker-websafe-swatch{position:absolute;left:304px;top:4px;height:24px;width:24px;border:1px solid #888;}#cke_uicolor_picker .yui-picker-controls{position:absolute;top:72px;left:226px;font:1em monospace;}#cke_uicolor_picker .yui-picker-controls .hd{background:transparent;border-width:0!important;}#cke_uicolor_picker .yui-picker-controls .bd{height:100px;border-width:0!important;}#cke_uicolor_picker .yui-picker-controls ul{float:left;padding:0 2px 0 0;margin:0;}#cke_uicolor_picker .yui-picker-controls li{padding:2px;list-style:none;margin:0;}#cke_uicolor_picker .yui-picker-controls input{font-size:.85em;width:2.4em;}#cke_uicolor_picker .yui-picker-hex-controls{clear:both;padding:2px;}#cke_uicolor_picker .yui-picker-hex-controls input{width:4.6em;}#cke_uicolor_picker .yui-picker-controls a{font:1em arial,helvetica,clean,sans-serif;display:block;*display:inline-block;padding:0;color:#000;}
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/uicolor/plugin.js	(revision 2000)
@@ -0,0 +1,37 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'uicolor',
+{
+	requires : [ 'dialog' ],
+	lang : [ 'en' ],
+
+	init : function( editor )
+	{
+		if ( CKEDITOR.env.ie6Compat )
+			return;
+
+		editor.addCommand( 'uicolor', new CKEDITOR.dialogCommand( 'uicolor' ) );
+		editor.ui.addButton( 'UIColor',
+			{
+				label : editor.lang.uicolor.title,
+				command : 'uicolor',
+				icon : this.path + 'uicolor.gif'
+			});
+		CKEDITOR.dialog.add( 'uicolor', this.path + 'dialogs/uicolor.js' );
+
+		// Load YUI js files.
+		CKEDITOR.scriptLoader.load( CKEDITOR.getUrl(
+			'_source/' + // @Packager.RemoveLine
+			'plugins/uicolor/yui/yui.js'
+		));
+
+		// Load YUI css files.
+		editor.element.getDocument().appendStyleSheet( CKEDITOR.getUrl(
+				'_source/' + // @Packager.RemoveLine
+				'plugins/uicolor/yui/assets/yui.css'
+		));
+	}
+} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/find/dialogs/find.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/find/dialogs/find.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/find/dialogs/find.js	(revision 2000)
@@ -0,0 +1,846 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	function guardDomWalkerNonEmptyTextNode( node )
+	{
+		return ( node.type == CKEDITOR.NODE_TEXT && node.getLength() > 0 );
+	}
+
+	/**
+	 * Elements which break characters been considered as sequence.
+	*/
+	function checkCharactersBoundary ( node )
+	{
+		var dtd = CKEDITOR.dtd;
+		return node.isBlockBoundary(
+			CKEDITOR.tools.extend( {}, dtd.$empty, dtd.$nonEditable ) );
+	}
+
+	/**
+	 * Get the cursor object which represent both current character and it's dom
+	 * position thing.
+	 */
+	var cursorStep = function()
+	{
+		return {
+			textNode : this.textNode,
+			offset : this.offset,
+			character : this.textNode ?
+				this.textNode.getText().charAt( this.offset ) : null,
+			hitMatchBoundary : this._.matchBoundary
+		};
+	};
+
+	var pages = [ 'find', 'replace' ],
+		fieldsMapping = [
+		[ 'txtFindFind', 'txtFindReplace' ],
+		[ 'txtFindCaseChk', 'txtReplaceCaseChk' ],
+		[ 'txtFindWordChk', 'txtReplaceWordChk' ],
+		[ 'txtFindCyclic', 'txtReplaceCyclic' ] ];
+
+	/**
+	 * Synchronize corresponding filed values between 'replace' and 'find' pages.
+	 * @param {String} currentPageId	The page id which receive values.
+	 */
+	function syncFieldsBetweenTabs( currentPageId )
+	{
+		var sourceIndex, targetIndex,
+			sourceField, targetField;
+
+		sourceIndex = currentPageId === 'find' ? 1 : 0;
+		targetIndex = 1 - sourceIndex;
+		var i, l = fieldsMapping.length;
+		for ( i = 0 ; i < l ; i++ )
+		{
+			sourceField = this.getContentElement( pages[ sourceIndex ],
+					fieldsMapping[ i ][ sourceIndex ] );
+			targetField = this.getContentElement( pages[ targetIndex ],
+					fieldsMapping[ i ][ targetIndex ] );
+
+			targetField.setValue( sourceField.getValue() );
+		}
+	}
+
+	var findDialog = function( editor, startupPage )
+	{
+		// Style object for highlights.
+		var highlightStyle = new CKEDITOR.style( editor.config.find_highlight );
+
+		/**
+		 * Iterator which walk through the specified range char by char. By
+		 * default the walking will not stop at the character boundaries, until
+		 * the end of the range is encountered.
+		 * @param { CKEDITOR.dom.range } range
+		 * @param {Boolean} matchWord Whether the walking will stop at character boundary.
+		 */
+		var characterWalker = function( range , matchWord )
+		{
+			var walker =
+				new CKEDITOR.dom.walker( range );
+			walker[ matchWord ? 'guard' : 'evaluator' ] =
+				guardDomWalkerNonEmptyTextNode;
+			walker.breakOnFalse = true;
+
+			this._ = {
+				matchWord : matchWord,
+				walker : walker,
+				matchBoundary : false
+			};
+		};
+
+		characterWalker.prototype = {
+			next : function()
+			{
+				return this.move();
+			},
+
+			back : function()
+			{
+				return this.move( true );
+			},
+
+			move : function( rtl )
+			{
+				var currentTextNode = this.textNode;
+				// Already at the end of document, no more character available.
+				if(  currentTextNode === null )
+					return cursorStep.call( this );
+
+				this._.matchBoundary = false;
+
+				// There are more characters in the text node, step forward.
+				if( currentTextNode
+				    && rtl
+					&& this.offset > 0 )
+				{
+					this.offset--;
+					return cursorStep.call( this );
+				}
+				else if( currentTextNode
+					&& this.offset < currentTextNode.getLength() - 1 )
+				{
+					this.offset++;
+					return cursorStep.call( this );
+				}
+				else
+				{
+					currentTextNode = null;
+					// At the end of the text node, walking foward for the next.
+					while ( !currentTextNode )
+					{
+						currentTextNode =
+							this._.walker[ rtl ? 'previous' : 'next' ].call( this._.walker );
+
+						// Stop searching if we're need full word match OR
+						// already reach document end.
+						if ( this._.matchWord && !currentTextNode
+							 ||this._.walker._.end )
+							break;
+
+						// Marking as match character boundaries.
+						if( !currentTextNode
+						   && checkCharactersBoundary( this._.walker.current ) )
+							this._.matchBoundary = true;
+
+					}
+					// Found a fresh text node.
+					this.textNode = currentTextNode;
+					if ( currentTextNode )
+						this.offset = rtl ? currentTextNode.getLength() - 1 : 0;
+					else
+						this.offset = 0;
+				}
+
+				return cursorStep.call( this );
+			}
+
+		};
+
+		/**
+		 * A range of cursors which represent a trunk of characters which try to
+		 * match, it has the same length as the pattern  string.
+		 */
+		var characterRange = function( characterWalker, rangeLength )
+		{
+			this._ = {
+				walker : characterWalker,
+				cursors : [],
+				rangeLength : rangeLength,
+				highlightRange : null,
+				isMatched : false
+			};
+		};
+
+		characterRange.prototype = {
+			/**
+			 * Translate this range to {@link CKEDITOR.dom.range}
+			 */
+			toDomRange : function()
+			{
+				var cursors = this._.cursors;
+				if ( cursors.length < 1 )
+					return null;
+
+				var first = cursors[0],
+					last = cursors[ cursors.length - 1 ],
+					range = new CKEDITOR.dom.range( editor.document );
+
+				range.setStart( first.textNode, first.offset );
+				range.setEnd( last.textNode, last.offset + 1 );
+				return range;
+			},
+			/**
+			 * Reflect the latest changes from dom range.
+			 */
+			updateFromDomRange : function( domRange )
+			{
+				var cursor,
+						walker = new characterWalker( domRange );
+				this._.cursors = [];
+				do
+				{
+					cursor = walker.next();
+					if ( cursor.character )
+						this._.cursors.push( cursor );
+				}
+				while ( cursor.character );
+				this._.rangeLength = this._.cursors.length;
+			},
+
+			setMatched : function()
+			{
+				this._.isMatched = true;
+			},
+
+			clearMatched : function()
+			{
+				this._.isMatched = false;
+			},
+
+			isMatched : function()
+			{
+				return this._.isMatched;
+			},
+
+			/**
+			 * Hightlight the current matched chunk of text.
+			 */
+			highlight : function()
+			{
+				// Do not apply if nothing is found.
+				if ( this._.cursors.length < 1 )
+					return;
+
+				// Remove the previous highlight if there's one.
+				if ( this._.highlightRange )
+					this.removeHighlight();
+
+				// Apply the highlight.
+				var range = this.toDomRange();
+				highlightStyle.applyToRange( range );
+				this._.highlightRange = range;
+
+				// Scroll the editor to the highlighted area.
+				var element = range.startContainer;
+				if ( element.type != CKEDITOR.NODE_ELEMENT )
+					element = element.getParent();
+				element.scrollIntoView();
+
+				// Update the character cursors.
+				this.updateFromDomRange( range );
+			},
+
+			/**
+			 * Remove highlighted find result.
+			 */
+			removeHighlight : function()
+			{
+				if ( !this._.highlightRange )
+					return;
+
+				highlightStyle.removeFromRange( this._.highlightRange );
+				this.updateFromDomRange( this._.highlightRange );
+				this._.highlightRange = null;
+			},
+
+			moveBack : function()
+			{
+				var retval = this._.walker.back(),
+					cursors = this._.cursors;
+
+				if ( retval.hitMatchBoundary )
+					this._.cursors = cursors = [];
+
+				cursors.unshift( retval );
+				if ( cursors.length > this._.rangeLength )
+					cursors.pop();
+
+				return retval;
+			},
+
+			moveNext : function()
+			{
+				var retval = this._.walker.next(),
+					cursors = this._.cursors;
+
+				// Clear the cursors queue if we've crossed a match boundary.
+				if ( retval.hitMatchBoundary )
+					this._.cursors = cursors = [];
+
+				cursors.push( retval );
+				if ( cursors.length > this._.rangeLength )
+					cursors.shift();
+
+				return retval;
+			},
+
+			getEndCharacter : function()
+			{
+				var cursors = this._.cursors;
+				if ( cursors.length < 1 )
+					return null;
+
+				return cursors[ cursors.length - 1 ].character;
+			},
+
+			getNextCharacterRange : function( maxLength )
+			{
+				var lastCursor,
+						cursors = this._.cursors;
+				if ( !( lastCursor = cursors[ cursors.length - 1 ] ) )
+					return null;
+				return new characterRange(
+										new characterWalker(
+											getRangeAfterCursor( lastCursor ) ),
+										maxLength );
+			},
+
+			getCursors : function()
+			{
+				return this._.cursors;
+			}
+		};
+
+
+		// The remaining document range after the character cursor.
+		function getRangeAfterCursor( cursor , inclusive )
+		{
+			var range = new CKEDITOR.dom.range();
+			range.setStart( cursor.textNode,
+						   ( inclusive ? cursor.offset : cursor.offset + 1 ) );
+			range.setEndAt( editor.document.getBody(),
+							CKEDITOR.POSITION_BEFORE_END );
+			return range;
+		}
+
+		// The document range before the character cursor.
+		function getRangeBeforeCursor( cursor )
+		{
+			var range = new CKEDITOR.dom.range();
+			range.setStartAt( editor.document.getBody(),
+							CKEDITOR.POSITION_AFTER_START );
+			range.setEnd( cursor.textNode, cursor.offset );
+			return range;
+		}
+
+		var KMP_NOMATCH = 0,
+			KMP_ADVANCED = 1,
+			KMP_MATCHED = 2;
+		/**
+		 * Examination the occurrence of a word which implement KMP algorithm.
+		 */
+		var kmpMatcher = function( pattern, ignoreCase )
+		{
+			var overlap = [ -1 ];
+			if ( ignoreCase )
+				pattern = pattern.toLowerCase();
+			for ( var i = 0 ; i < pattern.length ; i++ )
+			{
+				overlap.push( overlap[i] + 1 );
+				while ( overlap[ i + 1 ] > 0
+					&& pattern.charAt( i ) != pattern
+						.charAt( overlap[ i + 1 ] - 1 ) )
+					overlap[ i + 1 ] = overlap[ overlap[ i + 1 ] - 1 ] + 1;
+			}
+
+			this._ = {
+				overlap : overlap,
+				state : 0,
+				ignoreCase : !!ignoreCase,
+				pattern : pattern
+			};
+		};
+
+		kmpMatcher.prototype =
+		{
+			feedCharacter : function( c )
+			{
+				if ( this._.ignoreCase )
+					c = c.toLowerCase();
+
+				while ( true )
+				{
+					if ( c == this._.pattern.charAt( this._.state ) )
+					{
+						this._.state++;
+						if ( this._.state == this._.pattern.length )
+						{
+							this._.state = 0;
+							return KMP_MATCHED;
+						}
+						return KMP_ADVANCED;
+					}
+					else if ( !this._.state )
+						return KMP_NOMATCH;
+					else
+						this._.state = this._.overlap[ this._.state ];
+				}
+
+				return null;
+			},
+
+			reset : function()
+			{
+				this._.state = 0;
+			}
+		};
+
+		var wordSeparatorRegex =
+		/[.,"'?!;: \u0085\u00a0\u1680\u280e\u2028\u2029\u202f\u205f\u3000]/;
+
+		var isWordSeparator = function( c )
+		{
+			if ( !c )
+				return true;
+			var code = c.charCodeAt( 0 );
+			return ( code >= 9 && code <= 0xd )
+				|| ( code >= 0x2000 && code <= 0x200a )
+				|| wordSeparatorRegex.test( c );
+		};
+
+		var finder = {
+			searchRange : null,
+			matchRange : null,
+			find : function( pattern, matchCase, matchWord, matchCyclic, highlightMatched, cyclicRerun )
+			{
+				if( !this.matchRange )
+					this.matchRange =
+						new characterRange(
+							new characterWalker( this.searchRange ),
+							pattern.length );
+				else
+				{
+					this.matchRange.removeHighlight();
+					this.matchRange = this.matchRange.getNextCharacterRange( pattern.length );
+				}
+
+				var matcher = new kmpMatcher( pattern, !matchCase ),
+					matchState = KMP_NOMATCH,
+					character = '%';
+
+				while ( character !== null )
+				{
+					this.matchRange.moveNext();
+					while ( ( character = this.matchRange.getEndCharacter() ) )
+					{
+						matchState = matcher.feedCharacter( character );
+						if ( matchState == KMP_MATCHED )
+							break;
+						if ( this.matchRange.moveNext().hitMatchBoundary )
+							matcher.reset();
+					}
+
+					if ( matchState == KMP_MATCHED )
+					{
+						if ( matchWord )
+						{
+							var cursors = this.matchRange.getCursors(),
+								tail = cursors[ cursors.length - 1 ],
+								head = cursors[ 0 ];
+
+							var headWalker = new characterWalker( getRangeBeforeCursor( head ), true ),
+								tailWalker = new characterWalker( getRangeAfterCursor( tail ), true );
+
+							if ( ! ( isWordSeparator( headWalker.back().character )
+										&& isWordSeparator( tailWalker.next().character ) ) )
+								continue;
+						}
+						this.matchRange.setMatched();
+						if ( highlightMatched !== false )
+							this.matchRange.highlight();
+						return true;
+					}
+				}
+
+				this.matchRange.clearMatched();
+				this.matchRange.removeHighlight();
+				// Clear current session and restart with the default search
+				// range.
+				// Re-run the finding once for cyclic.(#3517)
+				if ( matchCyclic && !cyclicRerun )
+				{
+					this.searchRange = getSearchRange( true );
+					this.matchRange = null;
+					return arguments.callee.apply( this,
+						Array.prototype.slice.call( arguments ).concat( [ true ] ) );
+				}
+
+				return false;
+			},
+
+			/**
+			 * Record how much replacement occurred toward one replacing.
+			 */
+			replaceCounter : 0,
+
+			replace : function( dialog, pattern, newString, matchCase, matchWord,
+				matchCyclic , isReplaceAll )
+			{
+				// Successiveness of current replace/find.
+				var result = false;
+
+				// 1. Perform the replace when there's already a match here.
+				// 2. Otherwise perform the find but don't replace it immediately.
+				if ( this.matchRange && this.matchRange.isMatched()
+						&& !this.matchRange._.isReplaced )
+				{
+					// Turn off highlight for a while when saving snapshots.
+					this.matchRange.removeHighlight();
+					var domRange = this.matchRange.toDomRange();
+					var text = editor.document.createText( newString );
+					if ( !isReplaceAll )
+					{
+						// Save undo snaps before and after the replacement.
+						var selection = editor.getSelection();
+						selection.selectRanges( [ domRange ] );
+						editor.fire( 'saveSnapshot' );
+					}
+					domRange.deleteContents();
+					domRange.insertNode( text );
+					if ( !isReplaceAll )
+					{
+						selection.selectRanges( [ domRange ] );
+						editor.fire( 'saveSnapshot' );
+					}
+					this.matchRange.updateFromDomRange( domRange );
+					if ( !isReplaceAll )
+						this.matchRange.highlight();
+					this.matchRange._.isReplaced = true;
+					this.replaceCounter++;
+					result = true;
+				}
+				else
+					result = this.find( pattern, matchCase, matchWord, matchCyclic, !isReplaceAll );
+
+				return result;
+			}
+		};
+
+		/**
+		 * The range in which find/replace happened, receive from user
+		 * selection prior.
+		 */
+		function getSearchRange( isDefault )
+		{
+			var searchRange,
+				sel = editor.getSelection(),
+				body = editor.document.getBody();
+			if ( sel && !isDefault )
+			{
+				searchRange = sel.getRanges()[ 0 ].clone();
+				searchRange.collapse( true );
+			}
+			else
+			{
+				searchRange = new CKEDITOR.dom.range();
+				searchRange.setStartAt( body, CKEDITOR.POSITION_AFTER_START );
+			}
+			searchRange.setEndAt( body, CKEDITOR.POSITION_BEFORE_END );
+			return searchRange;
+		}
+
+		return {
+			title : editor.lang.findAndReplace.title,
+			resizable : CKEDITOR.DIALOG_RESIZE_NONE,
+			minWidth : 350,
+			minHeight : 165,
+			buttons : [ CKEDITOR.dialog.cancelButton ],		//Cancel button only.
+			contents : [
+				{
+					id : 'find',
+					label : editor.lang.findAndReplace.find,
+					title : editor.lang.findAndReplace.find,
+					accessKey : '',
+					elements : [
+						{
+							type : 'hbox',
+							widths : [ '230px', '90px' ],
+							children :
+							[
+								{
+									type : 'text',
+									id : 'txtFindFind',
+									label : editor.lang.findAndReplace.findWhat,
+									isChanged : false,
+									labelLayout : 'horizontal',
+									accessKey : 'F'
+								},
+								{
+									type : 'button',
+									align : 'left',
+									style : 'width:100%',
+									label : editor.lang.findAndReplace.find,
+									onClick : function()
+									{
+										var dialog = this.getDialog();
+										if ( !finder.find( dialog.getValueOf( 'find', 'txtFindFind' ),
+													dialog.getValueOf( 'find', 'txtFindCaseChk' ),
+													dialog.getValueOf( 'find', 'txtFindWordChk' ),
+													dialog.getValueOf( 'find', 'txtFindCyclic' ) ) )
+											alert( editor.lang.findAndReplace
+												.notFoundMsg );
+									}
+								}
+							]
+						},
+						{
+							type : 'vbox',
+							padding : 0,
+							children :
+							[
+								{
+									type : 'checkbox',
+									id : 'txtFindCaseChk',
+									isChanged : false,
+									style : 'margin-top:28px',
+									label : editor.lang.findAndReplace.matchCase
+								},
+								{
+									type : 'checkbox',
+									id : 'txtFindWordChk',
+									isChanged : false,
+									label : editor.lang.findAndReplace.matchWord
+								},
+								{
+									type : 'checkbox',
+									id : 'txtFindCyclic',
+									isChanged : false,
+									'default' : true,
+									label : editor.lang.findAndReplace.matchCyclic
+								}
+							]
+						}
+					]
+				},
+				{
+					id : 'replace',
+					label : editor.lang.findAndReplace.replace,
+					accessKey : 'M',
+					elements : [
+						{
+							type : 'hbox',
+							widths : [ '230px', '90px' ],
+							children :
+							[
+								{
+									type : 'text',
+									id : 'txtFindReplace',
+									label : editor.lang.findAndReplace.findWhat,
+									isChanged : false,
+									labelLayout : 'horizontal',
+									accessKey : 'F'
+								},
+								{
+									type : 'button',
+									align : 'left',
+									style : 'width:100%',
+									label : editor.lang.findAndReplace.replace,
+									onClick : function()
+									{
+										var dialog = this.getDialog();
+										if ( !finder.replace( dialog,
+													dialog.getValueOf( 'replace', 'txtFindReplace' ),
+													dialog.getValueOf( 'replace', 'txtReplace' ),
+													dialog.getValueOf( 'replace', 'txtReplaceCaseChk' ),
+													dialog.getValueOf( 'replace', 'txtReplaceWordChk' ),
+													dialog.getValueOf( 'replace', 'txtReplaceCyclic' ) ) )
+											alert( editor.lang.findAndReplace
+												.notFoundMsg );
+									}
+								}
+							]
+						},
+						{
+							type : 'hbox',
+							widths : [ '230px', '90px' ],
+							children :
+							[
+								{
+									type : 'text',
+									id : 'txtReplace',
+									label : editor.lang.findAndReplace.replaceWith,
+									isChanged : false,
+									labelLayout : 'horizontal',
+									accessKey : 'R'
+								},
+								{
+									type : 'button',
+									align : 'left',
+									style : 'width:100%',
+									label : editor.lang.findAndReplace.replaceAll,
+									isChanged : false,
+									onClick : function()
+									{
+										var dialog = this.getDialog();
+										var replaceNums;
+
+										finder.replaceCounter = 0;
+
+										// Scope to full document.
+										finder.searchRange = getSearchRange( true );
+										if ( finder.matchRange )
+										{
+											finder.matchRange.removeHighlight();
+											finder.matchRange = null;
+										}
+										editor.fire( 'saveSnapshot' );
+										while( finder.replace( dialog,
+											dialog.getValueOf( 'replace', 'txtFindReplace' ),
+											dialog.getValueOf( 'replace', 'txtReplace' ),
+											dialog.getValueOf( 'replace', 'txtReplaceCaseChk' ),
+											dialog.getValueOf( 'replace', 'txtReplaceWordChk' ),
+											false, true ) )
+										{ /*jsl:pass*/ }
+
+										if ( finder.replaceCounter )
+										{
+											alert( editor.lang.findAndReplace.replaceSuccessMsg.replace( /%1/, finder.replaceCounter ) );
+											editor.fire( 'saveSnapshot' );
+										}
+										else
+											alert( editor.lang.findAndReplace.notFoundMsg );
+									}
+								}
+							]
+						},
+						{
+							type : 'vbox',
+							padding : 0,
+							children :
+							[
+								{
+									type : 'checkbox',
+									id : 'txtReplaceCaseChk',
+									isChanged : false,
+									label : editor.lang.findAndReplace
+										.matchCase
+								},
+								{
+									type : 'checkbox',
+									id : 'txtReplaceWordChk',
+									isChanged : false,
+									label : editor.lang.findAndReplace
+										.matchWord
+								},
+								{
+									type : 'checkbox',
+									id : 'txtReplaceCyclic',
+									isChanged : false,
+									'default' : true,
+									label : editor.lang.findAndReplace
+										.matchCyclic
+								}
+							]
+						}
+					]
+				}
+			],
+			onLoad : function()
+			{
+				var dialog = this;
+
+				//keep track of the current pattern field in use.
+				var patternField, wholeWordChkField;
+
+				//Ignore initial page select on dialog show
+				var isUserSelect = false;
+				this.on('hide', function()
+						{
+							isUserSelect = false;
+						} );
+				this.on('show', function()
+						{
+							isUserSelect = true;
+						} );
+
+				this.selectPage = CKEDITOR.tools.override( this.selectPage, function( originalFunc )
+					{
+						return function( pageId )
+						{
+							originalFunc.call( dialog, pageId );
+
+							var currPage = dialog._.tabs[ pageId ];
+							var patternFieldInput, patternFieldId, wholeWordChkFieldId;
+							patternFieldId = pageId === 'find' ? 'txtFindFind' : 'txtFindReplace';
+							wholeWordChkFieldId = pageId === 'find' ? 'txtFindWordChk' : 'txtReplaceWordChk';
+
+							patternField = dialog.getContentElement( pageId,
+								patternFieldId );
+							wholeWordChkField = dialog.getContentElement( pageId,
+								wholeWordChkFieldId );
+
+							// prepare for check pattern text filed 'keyup' event
+							if ( !currPage.initialized )
+							{
+								patternFieldInput = CKEDITOR.document
+									.getById( patternField._.inputId );
+								currPage.initialized = true;
+							}
+
+							if( isUserSelect )
+								// synchronize fields on tab switch.
+								syncFieldsBetweenTabs.call( this, pageId );
+						};
+					} );
+
+			},
+			onShow : function()
+			{
+				// Establish initial searching start position.
+				finder.searchRange = getSearchRange();
+
+				if ( startupPage == 'replace' )
+					this.getContentElement( 'replace', 'txtFindReplace' ).focus();
+				else
+					this.getContentElement( 'find', 'txtFindFind' ).focus();
+			},
+			onHide : function()
+			{
+				if ( finder.matchRange && finder.matchRange.isMatched() )
+				{
+					finder.matchRange.removeHighlight();
+					editor.focus();
+					editor.getSelection().selectRanges(
+						[ finder.matchRange.toDomRange() ] );
+				}
+
+				// Clear current session before dialog close
+				delete finder.matchRange;
+			}
+		};
+	};
+
+	CKEDITOR.dialog.add( 'find', function( editor )
+		{
+			return findDialog( editor, 'find' );
+		});
+
+	CKEDITOR.dialog.add( 'replace', function( editor )
+		{
+			return findDialog( editor, 'replace' );
+		});
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/find/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/find/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/find/plugin.js	(revision 2000)
@@ -0,0 +1,46 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'find',
+{
+	init : function( editor )
+	{
+		var forms = CKEDITOR.plugins.find;
+		editor.ui.addButton( 'Find',
+			{
+				label : editor.lang.findAndReplace.find,
+				command : 'find'
+			});
+		var findCommand = editor.addCommand( 'find', new CKEDITOR.dialogCommand( 'find' ) );
+		findCommand.canUndo = false;
+
+		editor.ui.addButton( 'Replace',
+			{
+				label : editor.lang.findAndReplace.replace,
+				command : 'replace'
+			});
+		var replaceCommand = editor.addCommand( 'replace', new CKEDITOR.dialogCommand( 'replace' ) );
+		replaceCommand.canUndo = false;
+
+		CKEDITOR.dialog.add( 'find',	this.path + 'dialogs/find.js' );
+		CKEDITOR.dialog.add( 'replace',	this.path + 'dialogs/find.js' );
+	},
+
+	requires : [ 'styles' ]
+} );
+
+/**
+ * Defines the style to be used to highlight results with the find dialog.
+ * @type Object
+ * @default { element : 'span', styles : { 'background-color' : '#004', 'color' : '#fff' } }
+ * @example
+ * // Highlight search results with blue on yellow.
+ * config.find_highlight =
+ *     {
+ *         element : 'span',
+ *         styles : { 'background-color' : '#ff0', 'color' : '#00f' }
+ *     };
+ */
+CKEDITOR.config.find_highlight = { element : 'span', styles : { 'background-color' : '#004', 'color' : '#fff' } };
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/preview/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/preview/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/preview/plugin.js	(revision 2000)
@@ -0,0 +1,99 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Preview plugin.
+ */
+
+(function()
+{
+	var previewCmd =
+	{
+		modes : { wysiwyg:1, source:1 },
+		canUndo : false,
+		exec : function( editor )
+		{
+			var sHTML,
+				isCustomDomain = CKEDITOR.env.isCustomDomain();
+			if ( editor.config.fullPage )
+				sHTML = editor.getData();
+			else
+			{
+				var bodyHtml = '<body ',
+					body = CKEDITOR.document.getBody(),
+					baseTag = ( editor.config.baseHref.length > 0 ) ? '<base href="' + editor.config.baseHref + '" _cktemp="true"></base>' : '';
+
+				if ( body.getAttribute( 'id' ) )
+					bodyHtml += 'id="' + body.getAttribute( 'id' ) + '" ';
+				if ( body.getAttribute( 'class' ) )
+					bodyHtml += 'class="' + body.getAttribute( 'class' ) + '" ';
+				bodyHtml += '>';
+
+				sHTML =
+					editor.config.docType +
+					'<html dir="' + editor.config.contentsLangDirection + '">' +
+					'<head>' +
+					baseTag +
+					'<title>' + editor.lang.preview + '</title>' +
+					'<link type="text/css" rel="stylesheet" href="' +
+					[].concat( editor.config.contentsCss ).join( '"><link type="text/css" rel="stylesheet" href="' ) +
+					'">' +
+					'</head>' + bodyHtml +
+					editor.getData() +
+					'</body></html>';
+			}
+
+			var iWidth	= 640,	// 800 * 0.8,
+				iHeight	= 420,	// 600 * 0.7,
+				iLeft	= 80;	// (800 - 0.8 * 800) /2 = 800 * 0.1.
+			try
+			{
+				var screen = window.screen;
+				iWidth = Math.round( screen.width * 0.8 );
+				iHeight = Math.round( screen.height * 0.7 );
+				iLeft = Math.round( screen.width * 0.1 );
+			}
+			catch ( e ){}
+
+			var sOpenUrl = '';
+			if ( isCustomDomain )
+			{
+				window._cke_htmlToLoad = sHTML;
+				sOpenUrl = 'javascript:void( (function(){' +
+					'document.open();' +
+					'document.domain="' + document.domain + '";' +
+					'document.write( window.opener._cke_htmlToLoad );' +
+					'document.close();' +
+					'window.opener._cke_htmlToLoad = null;' +
+					'})() )';
+			}
+
+			var oWindow = window.open( sOpenUrl, null, 'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=' +
+				iWidth + ',height=' + iHeight + ',left=' + iLeft );
+
+			if ( !isCustomDomain )
+			{
+				oWindow.document.write( sHTML );
+				oWindow.document.close();
+			}
+		}
+	};
+
+	var pluginName = 'preview';
+
+	// Register a plugin named "preview".
+	CKEDITOR.plugins.add( pluginName,
+	{
+		init : function( editor )
+		{
+			editor.addCommand( pluginName, previewCmd );
+			editor.ui.addButton( 'Preview',
+				{
+					label : editor.lang.preview,
+					command : pluginName
+				});
+		}
+	});
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/iframedialog/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/iframedialog/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/iframedialog/plugin.js	(revision 2000)
@@ -0,0 +1,136 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Plugin for making iframe based dialogs.
+ */
+
+CKEDITOR.plugins.add( 'iframedialog',
+{
+	requires : [ 'dialog' ],
+	onLoad : function()
+	{
+		CKEDITOR.dialog.addIframe = function( name, title, src, width, height, onContentLoad )
+		{
+			var element =
+			{
+				type : 'iframe',
+				src : src,
+				width : '100%',
+				height : '100%'
+			};
+
+			if ( typeof( onContentLoad ) == 'function' )
+				element.onContentLoad = onContentLoad;
+
+			var definition =
+			{
+				title : title,
+				minWidth : width,
+				minHeight : height,
+				contents :
+				[
+					{
+						id : 'iframe',
+						label : title,
+						expand : true,
+						elements : [ element ]
+					}
+				]
+			};
+
+			return this.add( name, function(){ return definition; } );
+		};
+
+		(function()
+		{
+			/**
+			 * An iframe element.
+			 * @extends CKEDITOR.ui.dialog.uiElement
+			 * @example
+			 * @constructor
+			 * @param {CKEDITOR.dialog} dialog
+			 * Parent dialog object.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
+			 * The element definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>src</strong> (Required) The src field of the iframe. </li>
+			 * 	<li><strong>width</strong> (Required) The iframe's width.</li>
+			 * 	<li><strong>height</strong> (Required) The iframe's height.</li>
+			 * 	<li><strong>onContentLoad</strong> (Optional) A function to be executed
+			 * 	after the iframe's contents has finished loading.</li>
+			 * </ul>
+			 * @param {Array} htmlList
+			 * List of HTML code to output to.
+			 */
+			var iframeElement = function( dialog, elementDefinition, htmlList )
+			{
+				if ( arguments.length < 3 )
+					return;
+
+				var _ = ( this._ || ( this._ = {} ) ),
+					contentLoad = elementDefinition.onContentLoad && CKEDITOR.tools.bind( elementDefinition.onContentLoad, this ),
+					cssWidth = CKEDITOR.tools.cssLength( elementDefinition.width ),
+					cssHeight = CKEDITOR.tools.cssLength( elementDefinition.height );
+				_.frameId = CKEDITOR.tools.getNextNumber() + '_iframe';
+
+				// IE BUG: Parent container does not resize to contain the iframe automatically.
+				dialog.on( 'load', function()
+					{
+						var iframe = CKEDITOR.document.getById( _.frameId ),
+							parentContainer = iframe.getParent();
+
+						parentContainer.setStyles(
+							{
+								width : cssWidth,
+								height : cssHeight
+							} );
+					} );
+
+				var attributes =
+				{
+					src : '%2',
+					id : _.frameId,
+					frameborder : 0,
+					allowtransparency : true
+				};
+				var myHtml = [];
+
+				if ( typeof( elementDefinition.onContentLoad ) == 'function' )
+					attributes.onload = 'CKEDITOR.tools.callFunction(%1);';
+
+				CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, myHtml, 'iframe',
+						{
+							width : cssWidth,
+							height : cssHeight
+						}, attributes, '' );
+
+				// Put a placeholder for the first time.
+				htmlList.push( '<div style="width:' + cssWidth + ';height:' + cssHeight + ';" id="' + this.domId + '"></div>' );
+
+				// Iframe elements should be refreshed whenever it is shown.
+				myHtml = myHtml.join( '' );
+				dialog.on( 'show', function()
+					{
+						var iframe = CKEDITOR.document.getById( _.frameId ),
+							parentContainer = iframe.getParent(),
+							callIndex = CKEDITOR.tools.addFunction( contentLoad ),
+							html = myHtml.replace( '%1', callIndex ).replace( '%2', CKEDITOR.tools.htmlEncode( elementDefinition.src ) );
+						parentContainer.setHtml( html );
+					} );
+			};
+
+			iframeElement.prototype = new CKEDITOR.ui.dialog.uiElement;
+
+			CKEDITOR.dialog.addUIElement( 'iframe',
+				{
+					build : function( dialog, elementDefinition, output )
+					{
+						return new iframeElement( dialog, elementDefinition, output );
+					}
+				} );
+		})();
+	}
+} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/filebrowser/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/filebrowser/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/filebrowser/plugin.js	(revision 2000)
@@ -0,0 +1,383 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview The "filebrowser" plugin, it adds support for file uploads and
+ *               browsing.
+ *
+ * When file is selected inside of the file browser or uploaded, its url is
+ * inserted automatically to a field, which is described in the 'filebrowser'
+ * attribute. To specify field that should be updated, pass the tab id and
+ * element id, separated with a colon.
+ *
+ * Example 1: (Browse)
+ *
+ * <pre>
+ * {
+ * 	type : 'button',
+ * 	id : 'browse',
+ * 	filebrowser : 'tabId:elementId',
+ * 	label : editor.lang.common.browseServer
+ * }
+ * </pre>
+ *
+ * If you set the 'filebrowser' attribute on any element other than
+ * 'fileButton', the 'Browse' action will be triggered.
+ *
+ * Example 2: (Quick Upload)
+ *
+ * <pre>
+ * {
+ * 	type : 'fileButton',
+ * 	id : 'uploadButton',
+ * 	filebrowser : 'tabId:elementId',
+ * 	label : editor.lang.common.uploadSubmit,
+ * 	'for' : [ 'upload', 'upload' ]
+ * }
+ * </pre>
+ *
+ * If you set the 'filebrowser' attribute on a fileButton element, the
+ * 'QuickUpload' action will be executed.
+ *
+ * Filebrowser plugin also supports more advanced configuration (through
+ * javascript object).
+ *
+ * The following settings are supported:
+ *
+ * <pre>
+ *  [action] - Browse or QuickUpload
+ *  [target] - field to update, tabId:elementId
+ *  [params] - additional arguments to be passed to the server connector (optional)
+ *  [onSelect] - function to execute when file is selected/uploaded (optional)
+ *  [url] - the URL to be called (optional)
+ * </pre>
+ *
+ * Example 3: (Quick Upload)
+ *
+ * <pre>
+ * {
+ * 	type : 'fileButton',
+ * 	label : editor.lang.common.uploadSubmit,
+ * 	id : 'buttonId',
+ * 	filebrowser :
+ * 	{
+ * 		action : 'QuickUpload', //required
+ * 		target : 'tab1:elementId', //required
+ * 		params : //optional
+ * 		{
+ * 			type : 'Files',
+ * 			currentFolder : '/folder/'
+ * 		},
+ * 		onSelect : function( fileUrl, errorMessage ) //optional
+ * 		{
+ * 			// Do not call the built-in selectFuntion
+ * 			// return false;
+ * 		}
+ * 	},
+ * 	'for' : [ 'tab1', 'myFile' ]
+ * }
+ * </pre>
+ *
+ * Suppose we have a file element with id 'myFile', text field with id
+ * 'elementId' and a fileButton. If filebowser.url is not specified explicitly,
+ * form action will be set to 'filebrowser[DialogName]UploadUrl' or, if not
+ * specified, to 'filebrowserUploadUrl'. Additional parameters from 'params'
+ * object will be added to the query string. It is possible to create your own
+ * uploadHandler and cancel the built-in updateTargetElement command.
+ *
+ * Example 4: (Browse)
+ *
+ * <pre>
+ * {
+ * 	type : 'button',
+ * 	id : 'buttonId',
+ * 	label : editor.lang.common.browseServer,
+ * 	filebrowser :
+ * 	{
+ * 		action : 'Browse',
+ * 		url : '/ckfinder/ckfinder.html&amp;type=Images',
+ * 		target : 'tab1:elementId'
+ * 	}
+ * }
+ * </pre>
+ *
+ * In this example, after pressing a button, file browser will be opened in a
+ * popup. If we don't specify filebrowser.url attribute,
+ * 'filebrowser[DialogName]BrowseUrl' or 'filebrowserBrowseUrl' will be used.
+ * After selecting a file in a file browser, an element with id 'elementId' will
+ * be updated. Just like in the third example, a custom 'onSelect' function may be
+ * defined.
+ */
+( function()
+{
+	/**
+	 * Adds (additional) arguments to given url.
+	 *
+	 * @param {String}
+	 *            url The url.
+	 * @param {Object}
+	 *            params Additional parameters.
+	 */
+	function addQueryString( url, params )
+	{
+		var queryString = [];
+
+		if ( !params )
+			return url;
+		else
+		{
+			for ( var i in params )
+				queryString.push( i + "=" + encodeURIComponent( params[ i ] ) );
+		}
+
+		return url + ( ( url.indexOf( "?" ) != -1 ) ? "&" : "?" ) + queryString.join( "&" );
+	}
+
+	/**
+	 * Make a string's first character uppercase.
+	 *
+	 * @param {String}
+	 *            str String.
+	 */
+	function ucFirst( str )
+	{
+		str += '';
+		var f = str.charAt( 0 ).toUpperCase();
+		return f + str.substr( 1 );
+	}
+
+	/**
+	 * The onlick function assigned to the 'Browse Server' button. Opens the
+	 * file browser and updates target field when file is selected.
+	 *
+	 * @param {CKEDITOR.event}
+	 *            evt The event object.
+	 */
+	function browseServer( evt )
+	{
+		var dialog = this.getDialog();
+		var editor = dialog.getParentEditor();
+
+		editor._.filebrowserSe = this;
+
+		var width = editor.config[ 'filebrowser' + ucFirst( dialog.getName() ) + 'WindowWidth' ]
+				|| editor.config.filebrowserWindowWidth || '80%';
+		var height = editor.config[ 'filebrowser' + ucFirst( dialog.getName() ) + 'WindowHeight' ]
+				|| editor.config.filebrowserWindowHeight || '70%';
+
+		var params = this.filebrowser.params || {};
+		params.CKEditor = editor.name;
+		params.CKEditorFuncNum = editor._.filebrowserFn;
+		if ( !params.langCode )
+			params.langCode = editor.langCode;
+
+		var url = addQueryString( this.filebrowser.url, params );
+		editor.popup( url, width, height );
+	}
+
+	/**
+	 * The onlick function assigned to the 'Upload' button. Makes the final
+	 * decision whether form is really submitted and updates target field when
+	 * file is uploaded.
+	 *
+	 * @param {CKEDITOR.event}
+	 *            evt The event object.
+	 */
+	function uploadFile( evt )
+	{
+		var dialog = this.getDialog();
+		var editor = dialog.getParentEditor();
+
+		editor._.filebrowserSe = this;
+
+		// If user didn't select the file, stop the upload.
+		if ( !dialog.getContentElement( this[ 'for' ][ 0 ], this[ 'for' ][ 1 ] ).getInputElement().$.value )
+			return false;
+
+		if ( !dialog.getContentElement( this[ 'for' ][ 0 ], this[ 'for' ][ 1 ] ).getAction() )
+			return false;
+
+		return true;
+	}
+
+	/**
+	 * Setups the file element.
+	 *
+	 * @param {CKEDITOR.ui.dialog.file}
+	 *            fileInput The file element used during file upload.
+	 * @param {Object}
+	 *            filebrowser Object containing filebrowser settings assigned to
+	 *            the fileButton associated with this file element.
+	 */
+	function setupFileElement( editor, fileInput, filebrowser )
+	{
+		var params = filebrowser.params || {};
+		params.CKEditor = editor.name;
+		params.CKEditorFuncNum = editor._.filebrowserFn;
+		if ( !params.langCode )
+			params.langCode = editor.langCode;
+
+		fileInput.action = addQueryString( filebrowser.url, params );
+		fileInput.filebrowser = filebrowser;
+	}
+
+	/**
+	 * Traverse through the content definition and attach filebrowser to
+	 * elements with 'filebrowser' attribute.
+	 *
+	 * @param String
+	 *            dialogName Dialog name.
+	 * @param {CKEDITOR.dialog.dialogDefinitionObject}
+	 *            definition Dialog definition.
+	 * @param {Array}
+	 *            elements Array of {@link CKEDITOR.dialog.contentDefinition}
+	 *            objects.
+	 */
+	function attachFileBrowser( editor, dialogName, definition, elements )
+	{
+		var element, fileInput;
+
+		for ( var i in elements )
+		{
+			element = elements[ i ];
+
+			if ( element.type == 'hbox' || element.type == 'vbox' )
+				attachFileBrowser( editor, dialogName, definition, element.children );
+
+			if ( !element.filebrowser )
+				continue;
+
+			if ( typeof element.filebrowser == 'string' )
+			{
+				var fb =
+				{
+					action : ( element.type == 'fileButton' ) ? 'QuickUpload' : 'Browse',
+					target : element.filebrowser
+				};
+				element.filebrowser = fb;
+			}
+
+			if ( element.filebrowser.action == 'Browse' )
+			{
+				var url = element.filebrowser.url || editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'BrowseUrl' ]
+							|| editor.config.filebrowserBrowseUrl;
+
+				if ( url )
+				{
+					element.onClick = browseServer;
+					element.filebrowser.url = url;
+					element.hidden = false;
+				}
+			}
+			else if ( element.filebrowser.action == 'QuickUpload' && element[ 'for' ] )
+			{
+				url =  element.filebrowser.url || editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'UploadUrl' ]
+							|| editor.config.filebrowserUploadUrl;
+
+				if ( url )
+				{
+					element.onClick = uploadFile;
+					element.filebrowser.url = url;
+					element.hidden = false;
+					setupFileElement( editor, definition.getContents( element[ 'for' ][ 0 ] ).get( element[ 'for' ][ 1 ] ), element.filebrowser );
+				}
+			}
+		}
+	}
+
+	/**
+	 * Updates the target element with the url of uploaded/selected file.
+	 *
+	 * @param {String}
+	 *            url The url of a file.
+	 */
+	function updateTargetElement( url, sourceElement )
+	{
+		var dialog = sourceElement.getDialog();
+		var targetElement = sourceElement.filebrowser.target || null;
+		url = url.replace( /#/g, '%23' );
+
+		// If there is a reference to targetElement, update it.
+		if ( targetElement )
+		{
+			var target = targetElement.split( ':' );
+			var element = dialog.getContentElement( target[ 0 ], target[ 1 ] );
+			if ( element )
+			{
+				element.setValue( url );
+				dialog.selectPage( target[ 0 ] );
+			}
+		}
+	}
+
+	/**
+	 * Returns true if filebrowser is configured in one of the elements.
+	 *
+	 * @param {CKEDITOR.dialog.dialogDefinitionObject}
+	 *            definition Dialog definition.
+	 * @param String
+	 *            tabId The tab id where element(s) can be found.
+	 * @param String
+	 *            elementId The element id (or ids, separated with a semicolon) to check.
+	 */
+	function isConfigured( definition, tabId, elementId )
+	{
+		if ( elementId.indexOf( ";" ) !== -1 )
+		{
+			var ids = elementId.split( ";" );
+			for ( var i = 0 ; i < ids.length ; i++ )
+			{
+				if ( isConfigured( definition, tabId, ids[i]) )
+					return true;
+			}
+			return false;
+		}
+
+		return ( definition.getContents( tabId ).get( elementId ).filebrowser && definition.getContents( tabId ).get( elementId ).filebrowser.url );
+	}
+
+	function setUrl( fileUrl, data )
+	{
+		var dialog = this._.filebrowserSe.getDialog(),
+			targetInput = this._.filebrowserSe[ 'for' ],
+			onSelect = this._.filebrowserSe.filebrowser.onSelect;
+
+		if ( targetInput )
+			dialog.getContentElement( targetInput[ 0 ], targetInput[ 1 ] ).reset();
+
+		if ( onSelect && onSelect.call( this._.filebrowserSe, fileUrl, data ) === false )
+			return;
+
+		// The "data" argument may be used to pass the error message to the editor.
+		if ( typeof data == 'string' && data )
+			alert( data );
+
+		if ( fileUrl )
+			updateTargetElement( fileUrl, this._.filebrowserSe );
+	}
+
+	CKEDITOR.plugins.add( 'filebrowser',
+	{
+		init : function( editor, pluginPath )
+		{
+			editor._.filebrowserFn = CKEDITOR.tools.addFunction( setUrl, editor );
+
+			CKEDITOR.on( 'dialogDefinition', function( evt )
+			{
+				// Associate filebrowser to elements with 'filebrowser' attribute.
+				for ( var i in evt.data.definition.contents )
+				{
+					attachFileBrowser( evt.editor, evt.data.name, evt.data.definition, evt.data.definition.contents[ i ].elements );
+					if ( evt.data.definition.contents[ i ].hidden && evt.data.definition.contents[ i ].filebrowser )
+					{
+						evt.data.definition.contents[ i ].hidden =
+							!isConfigured( evt.data.definition, evt.data.definition.contents[ i ][ 'id' ], evt.data.definition.contents[ i ].filebrowser );
+					}
+				}
+			} );
+		}
+	} );
+
+} )();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/maximize/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/maximize/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/maximize/plugin.js	(revision 2000)
@@ -0,0 +1,279 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	function protectFormStyles( formElement )
+	{
+		if ( !formElement || formElement.type != CKEDITOR.NODE_ELEMENT || formElement.getName() != 'form' )
+			return [];
+
+		var hijackRecord = [];
+		var hijackNames = [ 'style', 'className' ];
+		for ( var i = 0 ; i < hijackNames.length ; i++ )
+		{
+			var name = hijackNames[i];
+			var $node = formElement.$.elements.namedItem( name );
+			if ( $node )
+			{
+				var hijackNode = new CKEDITOR.dom.element( $node );
+				hijackRecord.push( [ hijackNode, hijackNode.nextSibling ] );
+				hijackNode.remove();
+			}
+		}
+
+		return hijackRecord;
+	}
+
+	function restoreFormStyles( formElement, hijackRecord )
+	{
+		if ( !formElement || formElement.type != CKEDITOR.NODE_ELEMENT || formElement.getName() != 'form' )
+			return;
+
+		if ( hijackRecord.length > 0 )
+		{
+			for ( var i = hijackRecord.length - 1 ; i >= 0 ; i-- )
+			{
+				var node = hijackRecord[i][0];
+				var sibling = hijackRecord[i][1];
+				if ( sibling )
+					node.insertBefore( sibling );
+				else
+					node.appendTo( formElement );
+			}
+		}
+	}
+
+	function saveStyles( element, isInsideEditor )
+	{
+		var data = protectFormStyles( element );
+		var retval = {};
+
+		var $element = element.$;
+
+		if ( !isInsideEditor )
+		{
+			retval[ 'class' ] = $element.className || '';
+			$element.className = '';
+		}
+
+		retval.inline = $element.style.cssText || '';
+		if ( !isInsideEditor )		// Reset any external styles that might interfere. (#2474)
+			$element.style.cssText = 'position: static; overflow: visible';
+
+		restoreFormStyles( data );
+		return retval;
+	}
+
+	function restoreStyles( element, savedStyles )
+	{
+		var data = protectFormStyles( element );
+		var $element = element.$;
+		if ( 'class' in savedStyles )
+			$element.className = savedStyles[ 'class' ];
+		if ( 'inline' in savedStyles )
+			$element.style.cssText = savedStyles.inline;
+		restoreFormStyles( data );
+	}
+
+	function getResizeHandler( mainWindow, editor )
+	{
+		return function()
+		{
+			var viewPaneSize = mainWindow.getViewPaneSize();
+			editor.resize( viewPaneSize.width, viewPaneSize.height, null, true );
+		};
+	}
+
+	CKEDITOR.plugins.add( 'maximize',
+	{
+		init : function( editor )
+		{
+			var lang = editor.lang;
+			var mainDocument = CKEDITOR.document;
+			var mainWindow = mainDocument.getWindow();
+
+			// Saved selection and scroll position for the editing area.
+			var savedSelection;
+			var savedScroll;
+
+			// Saved scroll position for the outer window.
+			var outerScroll;
+
+			// Saved resize handler function.
+			var resizeHandler = getResizeHandler( mainWindow, editor );
+
+			// Retain state after mode switches.
+			var savedState = CKEDITOR.TRISTATE_OFF;
+
+			editor.addCommand( 'maximize',
+				{
+					modes : { wysiwyg : 1, source : 1 },
+					editorFocus : false,
+					exec : function()
+					{
+						var container = editor.container.getChild( [ 0, 0 ] );
+						var contents = editor.getThemeSpace( 'contents' );
+
+						// Save current selection and scroll position in editing area.
+						if ( editor.mode == 'wysiwyg' )
+						{
+							var selection = editor.getSelection();
+							savedSelection = selection && selection.getRanges();
+							savedScroll = mainWindow.getScrollPosition();
+						}
+						else
+						{
+							var $textarea = editor.textarea.$;
+							savedSelection = !CKEDITOR.env.ie && [ $textarea.selectionStart, $textarea.selectionEnd ];
+							savedScroll = [ $textarea.scrollLeft, $textarea.scrollTop ];
+						}
+
+						if ( this.state == CKEDITOR.TRISTATE_OFF )		// Go fullscreen if the state is off.
+						{
+							// Add event handler for resizing.
+							mainWindow.on( 'resize', resizeHandler );
+
+							// Save the scroll bar position.
+							outerScroll = mainWindow.getScrollPosition();
+
+							// Save and reset the styles for the entire node tree.
+							var currentNode = editor.container;
+							while ( ( currentNode = currentNode.getParent() ) )
+							{
+								currentNode.setCustomData( 'maximize_saved_styles', saveStyles( currentNode ) );
+								currentNode.setStyle( 'z-index', editor.config.baseFloatZIndex - 1 );
+							}
+							contents.setCustomData( 'maximize_saved_styles', saveStyles( contents, true ) );
+							container.setCustomData( 'maximize_saved_styles', saveStyles( container, true ) );
+
+							// Hide scroll bars.
+							if ( CKEDITOR.env.ie )
+							{
+								mainDocument.$.documentElement.style.overflow =
+									mainDocument.getBody().$.style.overflow = 'hidden';
+							}
+							else
+							{
+								mainDocument.getBody().setStyles(
+									{
+										overflow : 'hidden',
+										width : '0px',
+										height : '0px'
+									} );
+							}
+
+							// Scroll to the top left.
+							mainWindow.$.scrollTo( 0, 0 );
+
+							// Resize and move to top left.
+							var viewPaneSize = mainWindow.getViewPaneSize();
+							container.setStyle( 'position', 'absolute' );
+							container.$.offsetLeft;			// SAFARI BUG: See #2066.
+							container.setStyles(
+								{
+									'z-index' : editor.config.baseFloatZIndex - 1,
+									left : '0px',
+									top : '0px'
+								} );
+							editor.resize( viewPaneSize.width, viewPaneSize.height, null, true );
+
+							// Still not top left? Fix it. (Bug #174)
+							var offset = container.getDocumentPosition();
+							container.setStyles(
+								{
+									left : ( -1 * offset.x ) + 'px',
+									top : ( -1 * offset.y ) + 'px'
+								} );
+
+							// Add cke_maximized class.
+							container.addClass( 'cke_maximized' );
+						}
+						else if ( this.state == CKEDITOR.TRISTATE_ON )	// Restore from fullscreen if the state is on.
+						{
+							// Remove event handler for resizing.
+							mainWindow.removeListener( 'resize', resizeHandler );
+
+							// Restore CSS styles for the entire node tree.
+							var editorElements = [ contents, container ];
+							for ( var i = 0 ; i < editorElements.length ; i++ )
+							{
+								restoreStyles( editorElements[i], editorElements[i].getCustomData( 'maximize_saved_styles' ) );
+								editorElements[i].removeCustomData( 'maximize_saved_styles' );
+							}
+
+							currentNode = editor.container;
+							while ( ( currentNode = currentNode.getParent() ) )
+							{
+								restoreStyles( currentNode, currentNode.getCustomData( 'maximize_saved_styles' ) );
+								currentNode.removeCustomData( 'maximize_saved_styles' );
+							}
+
+							// Restore the window scroll position.
+							mainWindow.$.scrollTo( outerScroll.x, outerScroll.y );
+
+							// Remove cke_maximized class.
+							container.removeClass( 'cke_maximized' );
+
+							// Emit a resize event, because this time the size is modified in
+							// restoreStyles.
+							editor.fire( 'resize' );
+						}
+
+						this.toggleState();
+
+						// Toggle button label.
+						var button = this.uiItems[ 0 ];
+						var label = ( this.state == CKEDITOR.TRISTATE_OFF )
+							? lang.maximize : lang.minimize;
+						var buttonNode = editor.element.getDocument().getById( button._.id );
+						buttonNode.getChild( 1 ).setHtml( label );
+						buttonNode.setAttribute( 'title', label );
+						buttonNode.setAttribute( 'href', 'javascript:void("' + label + '");' );
+
+						// Restore selection and scroll position in editing area.
+						if ( editor.mode == 'wysiwyg' )
+						{
+							if ( savedSelection )
+							{
+								editor.getSelection().selectRanges(savedSelection);
+								var element = editor.getSelection().getStartElement();
+								element && element.scrollIntoView( true );
+							}
+
+							else
+								mainWindow.$.scrollTo( savedScroll.x, savedScroll.y );
+						}
+						else
+						{
+							if ( savedSelection )
+							{
+								$textarea.selectionStart = savedSelection[0];
+								$textarea.selectionEnd = savedSelection[1];
+							}
+							$textarea.scrollLeft = savedScroll[0];
+							$textarea.scrollTop = savedScroll[1];
+						}
+
+						savedSelection = savedScroll = null;
+						savedState = this.state;
+					},
+					canUndo : false
+				} );
+
+			editor.ui.addButton( 'Maximize',
+				{
+					label : lang.maximize,
+					command : 'maximize'
+				} );
+
+			// Restore the command state after mode change.
+			editor.on( 'mode', function()
+				{
+					editor.getCommand( 'maximize' ).setState( savedState );
+				}, null, null, 100 );
+		}
+	} );
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/selection/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/selection/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/selection/plugin.js	(revision 2000)
@@ -0,0 +1,1072 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	// #### checkSelectionChange : START
+
+	// The selection change check basically saves the element parent tree of
+	// the current node and check it on successive requests. If there is any
+	// change on the tree, then the selectionChange event gets fired.
+	function checkSelectionChange()
+	{
+		try
+		{
+			// In IE, the "selectionchange" event may still get thrown when
+			// releasing the WYSIWYG mode, so we need to check it first.
+			var sel = this.getSelection();
+			if ( !sel )
+				return;
+
+			var firstElement = sel.getStartElement();
+			var currentPath = new CKEDITOR.dom.elementPath( firstElement );
+
+			if ( !currentPath.compare( this._.selectionPreviousPath ) )
+			{
+				this._.selectionPreviousPath = currentPath;
+				this.fire( 'selectionChange', { selection : sel, path : currentPath, element : firstElement } );
+			}
+		}
+		catch (e)
+		{}
+	}
+
+	var checkSelectionChangeTimer,
+		checkSelectionChangeTimeoutPending;
+
+	function checkSelectionChangeTimeout()
+	{
+		// Firing the "OnSelectionChange" event on every key press started to
+		// be too slow. This function guarantees that there will be at least
+		// 200ms delay between selection checks.
+
+		checkSelectionChangeTimeoutPending = true;
+
+		if ( checkSelectionChangeTimer )
+			return;
+
+		checkSelectionChangeTimeoutExec.call( this );
+
+		checkSelectionChangeTimer = CKEDITOR.tools.setTimeout( checkSelectionChangeTimeoutExec, 200, this );
+	}
+
+	function checkSelectionChangeTimeoutExec()
+	{
+		checkSelectionChangeTimer = null;
+
+		if ( checkSelectionChangeTimeoutPending )
+		{
+			// Call this with a timeout so the browser properly moves the
+			// selection after the mouseup. It happened that the selection was
+			// being moved after the mouseup when clicking inside selected text
+			// with Firefox.
+			CKEDITOR.tools.setTimeout( checkSelectionChange, 0, this );
+
+			checkSelectionChangeTimeoutPending = false;
+		}
+	}
+
+	// #### checkSelectionChange : END
+
+	var selectAllCmd =
+	{
+		exec : function( editor )
+		{
+			switch ( editor.mode )
+			{
+				case 'wysiwyg' :
+					editor.document.$.execCommand( 'SelectAll', false, null );
+					break;
+				case 'source' :
+					// TODO
+			}
+		},
+		canUndo : false
+	};
+
+	CKEDITOR.plugins.add( 'selection',
+	{
+		init : function( editor )
+		{
+			editor.on( 'contentDom', function()
+				{
+					var doc = editor.document;
+
+					if ( CKEDITOR.env.ie )
+					{
+						// Other browsers don't loose the selection if the
+						// editor document loose the focus. In IE, we don't
+						// have support for it, so we reproduce it here, other
+						// than firing the selection change event.
+
+						var savedRange,
+							saveEnabled;
+
+						// "onfocusin" is fired before "onfocus". It makes it
+						// possible to restore the selection before click
+						// events get executed.
+						doc.on( 'focusin', function()
+							{
+								// If we have saved a range, restore it at this
+								// point.
+								if ( savedRange )
+								{
+									// Well not break because of this.
+									try
+									{
+										savedRange.select();
+									}
+									catch (e)
+									{}
+
+									savedRange = null;
+								}
+							});
+
+						editor.window.on( 'focus', function()
+							{
+								// Enable selections to be saved.
+								saveEnabled = true;
+
+								saveSelection();
+							});
+
+						// Check document selection before 'blur' fired, this
+						// will prevent us from breaking text selection somewhere
+						// else on the host page.(#3909)
+						editor.document.on( 'beforedeactivate', function()
+							{
+								// Disable selections from being saved.
+								saveEnabled = false;
+
+								// IE may leave the selection still inside the
+								// document. Let's force it to be removed.
+								// TODO: The following has effect for
+								// collapsed selections.
+								editor.document.$.execCommand( 'Unselect' );
+							});
+
+						// IE fires the "selectionchange" event when clicking
+						// inside a selection. We don't want to capture that.
+						doc.on( 'mousedown', disableSave );
+						doc.on( 'mouseup',
+							function()
+							{
+								saveEnabled = true;
+								setTimeout( function()
+									{
+										saveSelection( true );
+									},
+									0 );
+							});
+
+						doc.on( 'keydown', disableSave );
+						doc.on( 'keyup',
+							function()
+							{
+								saveEnabled = true;
+								saveSelection();
+							});
+
+
+						// IE is the only to provide the "selectionchange"
+						// event.
+						doc.on( 'selectionchange', saveSelection );
+
+						function disableSave()
+						{
+							saveEnabled = false;
+						}
+
+						function saveSelection( testIt )
+						{
+							if ( saveEnabled )
+							{
+								var doc = editor.document,
+									sel = doc && doc.$.selection;
+
+								// There is a very specific case, when clicking
+								// inside a text selection. In that case, the
+								// selection collapses at the clicking point,
+								// but the selection object remains in an
+								// unknown state, making createRange return a
+								// range at the very start of the document. In
+								// such situation we have to test the range, to
+								// be sure it's valid.
+								if ( testIt && sel && sel.type == 'None' )
+								{
+									// The "InsertImage" command can be used to
+									// test whether the selection is good or not.
+									// If not, it's enough to give some time to
+									// IE to put things in order for us.
+									if ( !doc.$.queryCommandEnabled( 'InsertImage' ) )
+									{
+										CKEDITOR.tools.setTimeout( saveSelection, 50, this, true );
+										return;
+									}
+								}
+
+								savedRange = sel && sel.createRange();
+
+								checkSelectionChangeTimeout.call( editor );
+							}
+						}
+					}
+					else
+					{
+						// In other browsers, we make the selection change
+						// check based on other events, like clicks or keys
+						// press.
+
+						doc.on( 'mouseup', checkSelectionChangeTimeout, editor );
+						doc.on( 'keyup', checkSelectionChangeTimeout, editor );
+					}
+				});
+
+			editor.addCommand( 'selectAll', selectAllCmd );
+			editor.ui.addButton( 'SelectAll',
+				{
+					label : editor.lang.selectAll,
+					command : 'selectAll'
+				});
+
+			editor.selectionChange = checkSelectionChangeTimeout;
+		}
+	});
+
+	/**
+	 * Gets the current selection from the editing area when in WYSIWYG mode.
+	 * @returns {CKEDITOR.dom.selection} A selection object or null if not on
+	 *		WYSIWYG mode or no selection is available.
+	 * @example
+	 * var selection = CKEDITOR.instances.editor1.<b>getSelection()</b>;
+	 * alert( selection.getType() );
+	 */
+	CKEDITOR.editor.prototype.getSelection = function()
+	{
+		return this.document && this.document.getSelection();
+	};
+
+	CKEDITOR.editor.prototype.forceNextSelectionCheck = function()
+	{
+		delete this._.selectionPreviousPath;
+	};
+
+	/**
+	 * Gets the current selection from the document.
+	 * @returns {CKEDITOR.dom.selection} A selection object.
+	 * @example
+	 * var selection = CKEDITOR.instances.editor1.document.<b>getSelection()</b>;
+	 * alert( selection.getType() );
+	 */
+	CKEDITOR.dom.document.prototype.getSelection = function()
+	{
+		var sel = new CKEDITOR.dom.selection( this );
+		return ( !sel || sel.isInvalid ) ? null : sel;
+	};
+
+	/**
+	 * No selection.
+	 * @constant
+	 * @example
+	 * if ( editor.getSelection().getType() == CKEDITOR.SELECTION_NONE )
+	 *     alert( 'Nothing is selected' );
+	 */
+	CKEDITOR.SELECTION_NONE		= 1;
+
+	/**
+	 * Text or collapsed selection.
+	 * @constant
+	 * @example
+	 * if ( editor.getSelection().getType() == CKEDITOR.SELECTION_TEXT )
+	 *     alert( 'Text is selected' );
+	 */
+	CKEDITOR.SELECTION_TEXT		= 2;
+
+	/**
+	 * Element selection.
+	 * @constant
+	 * @example
+	 * if ( editor.getSelection().getType() == CKEDITOR.SELECTION_ELEMENT )
+	 *     alert( 'An element is selected' );
+	 */
+	CKEDITOR.SELECTION_ELEMENT	= 3;
+
+	/**
+	 * Manipulates the selection in a DOM document.
+	 * @constructor
+	 * @example
+	 */
+	CKEDITOR.dom.selection = function( document )
+	{
+		var lockedSelection = document.getCustomData( 'cke_locked_selection' );
+
+		if ( lockedSelection )
+			return lockedSelection;
+
+		this.document = document;
+		this.isLocked = false;
+		this._ =
+		{
+			cache : {}
+		};
+
+		/**
+		 * IE BUG: The selection's document may be a different document than the
+		 * editor document. Return null if that's the case.
+		 */
+		if ( CKEDITOR.env.ie )
+		{
+			var range = this.getNative().createRange();
+			if ( !range
+				|| ( range.item && range.item(0).ownerDocument != this.document.$ )
+				|| ( range.parentElement && range.parentElement().ownerDocument != this.document.$ ) )
+			{
+				this.isInvalid = true;
+			}
+		}
+
+		return this;
+	};
+
+	var styleObjectElements =
+	{
+		img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1,
+		a:1, input:1, form:1, select:1, textarea:1, button:1, fieldset:1, th:1, thead:1, tfoot:1
+	};
+
+	CKEDITOR.dom.selection.prototype =
+	{
+		/**
+		 * Gets the native selection object from the browser.
+		 * @function
+		 * @returns {Object} The native selection object.
+		 * @example
+		 * var selection = editor.getSelection().<b>getNative()</b>;
+		 */
+		getNative :
+			CKEDITOR.env.ie ?
+				function()
+				{
+					return this._.cache.nativeSel || ( this._.cache.nativeSel = this.document.$.selection );
+				}
+			:
+				function()
+				{
+					return this._.cache.nativeSel || ( this._.cache.nativeSel = this.document.getWindow().$.getSelection() );
+				},
+
+		/**
+		 * Gets the type of the current selection. The following values are
+		 * available:
+		 * <ul>
+		 *		<li>{@link CKEDITOR.SELECTION_NONE} (1): No selection.</li>
+		 *		<li>{@link CKEDITOR.SELECTION_TEXT} (2): Text is selected or
+		 *			collapsed selection.</li>
+		 *		<li>{@link CKEDITOR.SELECTION_ELEMENT} (3): A element
+		 *			selection.</li>
+		 * </ul>
+		 * @function
+		 * @returns {Number} One of the following constant values:
+		 *		{@link CKEDITOR.SELECTION_NONE}, {@link CKEDITOR.SELECTION_TEXT} or
+		 *		{@link CKEDITOR.SELECTION_ELEMENT}.
+		 * @example
+		 * if ( editor.getSelection().<b>getType()</b> == CKEDITOR.SELECTION_TEXT )
+		 *     alert( 'Text is selected' );
+		 */
+		getType :
+			CKEDITOR.env.ie ?
+				function()
+				{
+					var cache = this._.cache;
+					if ( cache.type )
+						return cache.type;
+
+					var type = CKEDITOR.SELECTION_NONE;
+
+					try
+					{
+						var sel = this.getNative(),
+							ieType = sel.type;
+
+						if ( ieType == 'Text' )
+							type = CKEDITOR.SELECTION_TEXT;
+
+						if ( ieType == 'Control' )
+							type = CKEDITOR.SELECTION_ELEMENT;
+
+						// It is possible that we can still get a text range
+						// object even when type == 'None' is returned by IE.
+						// So we'd better check the object returned by
+						// createRange() rather than by looking at the type.
+						if ( sel.createRange().parentElement )
+							type = CKEDITOR.SELECTION_TEXT;
+					}
+					catch(e) {}
+
+					return ( cache.type = type );
+				}
+			:
+				function()
+				{
+					var cache = this._.cache;
+					if ( cache.type )
+						return cache.type;
+
+					var type = CKEDITOR.SELECTION_TEXT;
+
+					var sel = this.getNative();
+
+					if ( !sel )
+						type = CKEDITOR.SELECTION_NONE;
+					else if ( sel.rangeCount == 1 )
+					{
+						// Check if the actual selection is a control (IMG,
+						// TABLE, HR, etc...).
+
+						var range = sel.getRangeAt(0),
+							startContainer = range.startContainer;
+
+						if ( startContainer == range.endContainer
+							&& startContainer.nodeType == 1
+							&& ( range.endOffset - range.startOffset ) == 1
+							&& styleObjectElements[ startContainer.childNodes[ range.startOffset ].nodeName.toLowerCase() ] )
+						{
+							type = CKEDITOR.SELECTION_ELEMENT;
+						}
+					}
+
+					return ( cache.type = type );
+				},
+
+		getRanges :
+			CKEDITOR.env.ie ?
+				( function()
+				{
+					// Finds the container and offset for a specific boundary
+					// of an IE range.
+					var getBoundaryInformation = function( range, start )
+					{
+						// Creates a collapsed range at the requested boundary.
+						range = range.duplicate();
+						range.collapse( start );
+
+						// Gets the element that encloses the range entirely.
+						var parent = range.parentElement();
+						var siblings = parent.childNodes;
+
+						var testRange;
+
+						for ( var i = 0 ; i < siblings.length ; i++ )
+						{
+							var child = siblings[ i ];
+							if ( child.nodeType == 1 )
+							{
+								testRange = range.duplicate();
+
+								testRange.moveToElementText( child );
+								testRange.collapse();
+
+								var comparison = testRange.compareEndPoints( 'StartToStart', range );
+
+								if ( comparison > 0 )
+									break;
+								else if ( comparison === 0 )
+									return {
+										container : parent,
+										offset : i
+									};
+
+								testRange = null;
+							}
+						}
+
+						if ( !testRange )
+						{
+							testRange = range.duplicate();
+							testRange.moveToElementText( parent );
+							testRange.collapse( false );
+						}
+
+						testRange.setEndPoint( 'StartToStart', range );
+						// IE report line break as CRLF with range.text but
+						// only LF with textnode.nodeValue, normalize them to avoid
+						// breaking character counting logic below. (#3949)
+						var distance = testRange.text.replace( /(\r\n|\r)/g, '\n' ).length;
+
+						while ( distance > 0 )
+							distance -= siblings[ --i ].nodeValue.length;
+
+						if ( distance === 0 )
+						{
+							return {
+								container : parent,
+								offset : i
+							};
+						}
+						else
+						{
+							return {
+								container : siblings[ i ],
+								offset : -distance
+							};
+						}
+					};
+
+					return function()
+					{
+						var cache = this._.cache;
+						if ( cache.ranges )
+							return cache.ranges;
+
+						// IE doesn't have range support (in the W3C way), so we
+						// need to do some magic to transform selections into
+						// CKEDITOR.dom.range instances.
+
+						var sel = this.getNative(),
+							nativeRange = sel && sel.createRange(),
+							type = this.getType(),
+							range;
+
+						if ( !sel )
+							return [];
+
+						if ( type == CKEDITOR.SELECTION_TEXT )
+						{
+							range = new CKEDITOR.dom.range( this.document );
+
+							var boundaryInfo = getBoundaryInformation( nativeRange, true );
+							range.setStart( new CKEDITOR.dom.node( boundaryInfo.container ), boundaryInfo.offset );
+
+							boundaryInfo = getBoundaryInformation( nativeRange );
+							range.setEnd( new CKEDITOR.dom.node( boundaryInfo.container ), boundaryInfo.offset );
+
+							return ( cache.ranges = [ range ] );
+						}
+						else if ( type == CKEDITOR.SELECTION_ELEMENT )
+						{
+							var retval = this._.cache.ranges = [];
+
+							for ( var i = 0 ; i < nativeRange.length ; i++ )
+							{
+								var element = nativeRange.item( i ),
+									parentElement = element.parentNode,
+									j = 0;
+
+								range = new CKEDITOR.dom.range( this.document );
+
+								for (; j < parentElement.childNodes.length && parentElement.childNodes[j] != element ; j++ )
+								{ /*jsl:pass*/ }
+
+								range.setStart( new CKEDITOR.dom.node( parentElement ), j );
+								range.setEnd( new CKEDITOR.dom.node( parentElement ), j + 1 );
+								retval.push( range );
+							}
+
+							return retval;
+						}
+
+						return ( cache.ranges = [] );
+					};
+				})()
+			:
+				function()
+				{
+					var cache = this._.cache;
+					if ( cache.ranges )
+						return cache.ranges;
+
+					// On browsers implementing the W3C range, we simply
+					// tranform the native ranges in CKEDITOR.dom.range
+					// instances.
+
+					var ranges = [];
+					var sel = this.getNative();
+
+					if ( !sel )
+						return [];
+
+					for ( var i = 0 ; i < sel.rangeCount ; i++ )
+					{
+						var nativeRange = sel.getRangeAt( i );
+						var range = new CKEDITOR.dom.range( this.document );
+
+						range.setStart( new CKEDITOR.dom.node( nativeRange.startContainer ), nativeRange.startOffset );
+						range.setEnd( new CKEDITOR.dom.node( nativeRange.endContainer ), nativeRange.endOffset );
+						ranges.push( range );
+					}
+
+					return ( cache.ranges = ranges );
+				},
+
+		/**
+		 * Gets the DOM element in which the selection starts.
+		 * @returns {CKEDITOR.dom.element} The element at the beginning of the
+		 *		selection.
+		 * @example
+		 * var element = editor.getSelection().<b>getStartElement()</b>;
+		 * alert( element.getName() );
+		 */
+		getStartElement : function()
+		{
+			var cache = this._.cache;
+			if ( cache.startElement !== undefined )
+				return cache.startElement;
+
+			var node,
+				sel = this.getNative();
+
+			switch ( this.getType() )
+			{
+				case CKEDITOR.SELECTION_ELEMENT :
+					return this.getSelectedElement();
+
+				case CKEDITOR.SELECTION_TEXT :
+
+					var range = this.getRanges()[0];
+
+					if ( range )
+					{
+						if ( !range.collapsed )
+						{
+							range.optimize();
+
+							// Decrease the range content to exclude particial
+							// selected node on the start which doesn't have
+							// visual impact. ( #3231 )
+							while( true )
+							{
+								var startContainer = range.startContainer,
+									startOffset = range.startOffset;
+								if ( startOffset == ( startContainer.getChildCount ?
+									startContainer.getChildCount() : startContainer.getLength() ) )
+									range.setStartAfter( startContainer );
+								else break;
+							}
+
+							node = range.startContainer;
+
+							if ( node.type != CKEDITOR.NODE_ELEMENT )
+								return node.getParent();
+
+							node = node.getChild( range.startOffset );
+
+							if ( !node || node.type != CKEDITOR.NODE_ELEMENT )
+								return range.startContainer;
+
+							var child = node.getFirst();
+							while (  child && child.type == CKEDITOR.NODE_ELEMENT )
+							{
+								node = child;
+								child = child.getFirst();
+							}
+
+							return node;
+						}
+					}
+
+					if ( CKEDITOR.env.ie )
+					{
+						range = sel.createRange();
+						range.collapse( true );
+
+						node = range.parentElement();
+					}
+					else
+					{
+						node = sel.anchorNode;
+
+						if ( node && node.nodeType != 1 )
+							node = node.parentNode;
+					}
+			}
+
+			return cache.startElement = ( node ? new CKEDITOR.dom.element( node ) : null );
+		},
+
+		/**
+		 * Gets the current selected element.
+		 * @returns {CKEDITOR.dom.element} The selected element. Null if no
+		 *		selection is available or the selection type is not
+		 *		{@link CKEDITOR.SELECTION_ELEMENT}.
+		 * @example
+		 * var element = editor.getSelection().<b>getSelectedElement()</b>;
+		 * alert( element.getName() );
+		 */
+		getSelectedElement : function()
+		{
+			var cache = this._.cache;
+			if ( cache.selectedElement !== undefined )
+				return cache.selectedElement;
+
+			var node;
+
+			if ( this.getType() == CKEDITOR.SELECTION_ELEMENT )
+			{
+				var sel = this.getNative();
+
+				if ( CKEDITOR.env.ie )
+				{
+					try
+					{
+						node = sel.createRange().item(0);
+					}
+					catch(e) {}
+				}
+				else
+				{
+					var range = sel.getRangeAt( 0 );
+					node = range.startContainer.childNodes[ range.startOffset ];
+				}
+			}
+
+			return cache.selectedElement = ( node ? new CKEDITOR.dom.element( node ) : null );
+		},
+
+		lock : function()
+		{
+			// Call all cacheable function.
+			this.getRanges();
+			this.getStartElement();
+			this.getSelectedElement();
+
+			// The native selection is not available when locked.
+			this._.cache.nativeSel = {};
+
+			this.isLocked = true;
+
+			// Save this selection inside the DOM document.
+			this.document.setCustomData( 'cke_locked_selection', this );
+		},
+
+		unlock : function( restore )
+		{
+			var doc = this.document,
+				lockedSelection = doc.getCustomData( 'cke_locked_selection' );
+
+			if ( lockedSelection )
+			{
+				doc.setCustomData( 'cke_locked_selection', null );
+
+				if ( restore )
+				{
+					var selectedElement = lockedSelection.getSelectedElement(),
+						ranges = !selectedElement && lockedSelection.getRanges();
+
+					this.isLocked = false;
+					this.reset();
+
+					doc.getBody().focus();
+
+					if ( selectedElement )
+						this.selectElement( selectedElement );
+					else
+						this.selectRanges( ranges );
+				}
+			}
+
+			if  ( !lockedSelection || !restore )
+			{
+				this.isLocked = false;
+				this.reset();
+			}
+		},
+
+		reset : function()
+		{
+			this._.cache = {};
+		},
+
+		selectElement : function( element )
+		{
+			if ( this.isLocked )
+			{
+				var range = new CKEDITOR.dom.range( this.document );
+				range.setStartBefore( element );
+				range.setEndAfter( element );
+
+				this._.cache.selectedElement = element;
+				this._.cache.startElement = element;
+				this._.cache.ranges = [ range ];
+				this._.cache.type = CKEDITOR.SELECTION_ELEMENT;
+
+				return;
+			}
+
+			if ( CKEDITOR.env.ie )
+			{
+				this.getNative().empty();
+
+				try
+				{
+					// Try to select the node as a control.
+					range = this.document.$.body.createControlRange();
+					range.addElement( element.$ );
+					range.select();
+				}
+				catch(e)
+				{
+					// If failed, select it as a text range.
+					range = this.document.$.body.createTextRange();
+					range.moveToElementText( element.$ );
+					range.select();
+				}
+
+				this.reset();
+			}
+			else
+			{
+				// Create the range for the element.
+				range = this.document.$.createRange();
+				range.selectNode( element.$ );
+
+				// Select the range.
+				var sel = this.getNative();
+				sel.removeAllRanges();
+				sel.addRange( range );
+
+				this.reset();
+			}
+		},
+
+		selectRanges : function( ranges )
+		{
+			if ( this.isLocked )
+			{
+				this._.cache.selectedElement = null;
+				this._.cache.startElement = ranges[ 0 ].getTouchedStartNode();
+				this._.cache.ranges = ranges;
+				this._.cache.type = CKEDITOR.SELECTION_TEXT;
+
+				return;
+			}
+
+			if ( CKEDITOR.env.ie )
+			{
+				// IE doesn't accept multiple ranges selection, so we just
+				// select the first one.
+				if ( ranges[ 0 ] )
+					ranges[ 0 ].select();
+
+				this.reset();
+			}
+			else
+			{
+				var sel = this.getNative();
+				sel.removeAllRanges();
+
+				for ( var i = 0 ; i < ranges.length ; i++ )
+				{
+					var range = ranges[ i ];
+					var nativeRange = this.document.$.createRange();
+					var startContainer = range.startContainer;
+
+					// In FF2, if we have a collapsed range, inside an empty
+					// element, we must add something to it otherwise the caret
+					// will not be visible.
+					if ( range.collapsed &&
+						( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 ) &&
+						startContainer.type == CKEDITOR.NODE_ELEMENT &&
+						!startContainer.getChildCount() )
+					{
+						startContainer.appendText( '' );
+					}
+
+					nativeRange.setStart( startContainer.$, range.startOffset );
+					nativeRange.setEnd( range.endContainer.$, range.endOffset );
+
+					// Select the range.
+					sel.addRange( nativeRange );
+				}
+
+				this.reset();
+			}
+		},
+
+		createBookmarks : function( serializable )
+		{
+			var retval = [],
+				ranges = this.getRanges(),
+				length = ranges.length,
+				bookmark;
+			for ( var i = 0; i < length ; i++ )
+			{
+			    retval.push( bookmark = ranges[ i ].createBookmark( serializable, true ) );
+
+				serializable = bookmark.serializable;
+
+				var bookmarkStart = serializable ? this.document.getById( bookmark.startNode ) : bookmark.startNode,
+					bookmarkEnd = serializable ? this.document.getById( bookmark.endNode ) : bookmark.endNode;
+
+			    // Updating the offset values for rest of ranges which have been mangled(#3256).
+			    for ( var j = i + 1 ; j < length ; j++ )
+			    {
+			        var dirtyRange = ranges[ j ],
+			               rangeStart = dirtyRange.startContainer,
+			               rangeEnd = dirtyRange.endContainer;
+
+			       rangeStart.equals( bookmarkStart.getParent() ) && dirtyRange.startOffset++;
+			       rangeStart.equals( bookmarkEnd.getParent() ) && dirtyRange.startOffset++;
+			       rangeEnd.equals( bookmarkStart.getParent() ) && dirtyRange.endOffset++;
+			       rangeEnd.equals( bookmarkEnd.getParent() ) && dirtyRange.endOffset++;
+			    }
+			}
+
+			return retval;
+		},
+
+		createBookmarks2 : function( normalized )
+		{
+			var bookmarks = [],
+				ranges = this.getRanges();
+
+			for ( var i = 0 ; i < ranges.length ; i++ )
+				bookmarks.push( ranges[i].createBookmark2( normalized ) );
+
+			return bookmarks;
+		},
+
+		selectBookmarks : function( bookmarks )
+		{
+			var ranges = [];
+			for ( var i = 0 ; i < bookmarks.length ; i++ )
+			{
+				var range = new CKEDITOR.dom.range( this.document );
+				range.moveToBookmark( bookmarks[i] );
+				ranges.push( range );
+			}
+			this.selectRanges( ranges );
+			return this;
+		}
+	};
+})();
+
+CKEDITOR.dom.range.prototype.select =
+	CKEDITOR.env.ie ?
+		// V2
+		function( forceExpand )
+		{
+			var collapsed = this.collapsed;
+			var isStartMarkerAlone;
+			var dummySpan;
+
+			var bookmark = this.createBookmark();
+
+			// Create marker tags for the start and end boundaries.
+			var startNode = bookmark.startNode;
+
+			var endNode;
+			if ( !collapsed )
+				endNode = bookmark.endNode;
+
+			// Create the main range which will be used for the selection.
+			var ieRange = this.document.$.body.createTextRange();
+
+			// Position the range at the start boundary.
+			ieRange.moveToElementText( startNode.$ );
+			ieRange.moveStart( 'character', 1 );
+
+			if ( endNode )
+			{
+				// Create a tool range for the end.
+				var ieRangeEnd = this.document.$.body.createTextRange();
+
+				// Position the tool range at the end.
+				ieRangeEnd.moveToElementText( endNode.$ );
+
+				// Move the end boundary of the main range to match the tool range.
+				ieRange.setEndPoint( 'EndToEnd', ieRangeEnd );
+				ieRange.moveEnd( 'character', -1 );
+			}
+			else
+			{
+				// The isStartMarkerAlone logic comes from V2. It guarantees that the lines
+				// will expand and that the cursor will be blinking on the right place.
+				// Actually, we are using this flag just to avoid using this hack in all
+				// situations, but just on those needed.
+				isStartMarkerAlone = forceExpand || !startNode.hasPrevious() || ( startNode.getPrevious().is && startNode.getPrevious().is( 'br' ) );
+
+				// Append a temporary <span>&#65279;</span> before the selection.
+				// This is needed to avoid IE destroying selections inside empty
+				// inline elements, like <b></b> (#253).
+				// It is also needed when placing the selection right after an inline
+				// element to avoid the selection moving inside of it.
+				dummySpan = this.document.createElement( 'span' );
+				dummySpan.setHtml( '&#65279;' );	// Zero Width No-Break Space (U+FEFF). See #1359.
+				dummySpan.insertBefore( startNode );
+
+				if ( isStartMarkerAlone )
+				{
+					// To expand empty blocks or line spaces after <br>, we need
+					// instead to have any char, which will be later deleted using the
+					// selection.
+					// \ufeff = Zero Width No-Break Space (U+FEFF). (#1359)
+					this.document.createText( '\ufeff' ).insertBefore( startNode );
+				}
+			}
+
+			// Remove the markers (reset the position, because of the changes in the DOM tree).
+			this.setStartBefore( startNode );
+			startNode.remove();
+
+			if ( collapsed )
+			{
+				if ( isStartMarkerAlone )
+				{
+					// Move the selection start to include the temporary \ufeff.
+					ieRange.moveStart( 'character', -1 );
+
+					ieRange.select();
+
+					// Remove our temporary stuff.
+					this.document.$.selection.clear();
+				}
+				else
+					ieRange.select();
+
+				dummySpan.remove();
+			}
+			else
+			{
+				this.setEndBefore( endNode );
+				endNode.remove();
+				ieRange.select();
+			}
+		}
+	:
+		function()
+		{
+			var startContainer = this.startContainer;
+
+			// If we have a collapsed range, inside an empty element, we must add
+			// something to it, otherwise the caret will not be visible.
+			if ( this.collapsed && startContainer.type == CKEDITOR.NODE_ELEMENT && !startContainer.getChildCount() )
+				startContainer.append( new CKEDITOR.dom.text( '' ) );
+
+			var nativeRange = this.document.$.createRange();
+			nativeRange.setStart( startContainer.$, this.startOffset );
+
+			try
+			{
+				nativeRange.setEnd( this.endContainer.$, this.endOffset );
+			}
+			catch ( e )
+			{
+				// There is a bug in Firefox implementation (it would be too easy
+				// otherwise). The new start can't be after the end (W3C says it can).
+				// So, let's create a new range and collapse it to the desired point.
+				if ( e.toString().indexOf( 'NS_ERROR_ILLEGAL_VALUE' ) >= 0 )
+				{
+					this.collapse( true );
+					nativeRange.setEnd( this.endContainer.$, this.endOffset );
+				}
+				else
+					throw( e );
+			}
+
+			var selection = this.document.getSelection().getNative();
+			selection.removeAllRanges();
+			selection.addRange( nativeRange );
+		};
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/checkbox.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/checkbox.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/checkbox.js	(revision 2000)
@@ -0,0 +1,138 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+CKEDITOR.dialog.add( 'checkbox', function( editor )
+{
+	return {
+		title : editor.lang.checkboxAndRadio.checkboxTitle,
+		minWidth : 350,
+		minHeight : 140,
+		onShow : function()
+		{
+			delete this.checkbox;
+
+			var element = this.getParentEditor().getSelection().getSelectedElement();
+
+			if ( element && element.getAttribute( 'type' ) == "checkbox" )
+			{
+				this.checkbox = element;
+				this.setupContent( element );
+			}
+		},
+		onOk : function()
+		{
+			var editor,
+				element = this.checkbox,
+				isInsertMode = !element;
+
+			if ( isInsertMode )
+			{
+				editor = this.getParentEditor();
+				element = editor.document.createElement( 'input' );
+				element.setAttribute( 'type', 'checkbox' );
+			}
+
+			if ( isInsertMode )
+				editor.insertElement( element );
+			this.commitContent( { element : element } );
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.checkboxAndRadio.checkboxTitle,
+				title : editor.lang.checkboxAndRadio.checkboxTitle,
+				startupFocus : 'txtName',
+				elements : [
+					{
+						id : 'txtName',
+						type : 'text',
+						label : editor.lang.common.name,
+						'default' : '',
+						accessKey : 'N',
+						setup : function( element )
+						{
+							this.setValue(
+									element.getAttribute( '_cke_saved_name' ) ||
+									element.getAttribute( 'name' ) ||
+									'' );
+						},
+						commit : function( data )
+						{
+							var element = data.element;
+
+							// IE failed to update 'name' property on input elements, protect it now.
+							if ( this.getValue() )
+								element.setAttribute( '_cke_saved_name', this.getValue() );
+							else
+							{
+								element.removeAttribute( '_cke_saved_name' );
+								element.removeAttribute( 'name' );
+							}
+						}
+					},
+					{
+						id : 'txtValue',
+						type : 'text',
+						label : editor.lang.checkboxAndRadio.value,
+						'default' : '',
+						accessKey : 'V',
+						setup : function( element )
+						{
+							this.setValue( element.getAttribute( 'value' ) || '' );
+						},
+						commit : function( data )
+						{
+							var element = data.element;
+
+							if ( this.getValue() )
+								element.setAttribute( 'value', this.getValue() );
+							else
+								element.removeAttribute( 'value' );
+						}
+					},
+					{
+						id : 'cmbSelected',
+						type : 'checkbox',
+						label : editor.lang.checkboxAndRadio.selected,
+						'default' : '',
+						accessKey : 'S',
+						value : "checked",
+						setup : function( element )
+						{
+							this.setValue( element.getAttribute( 'checked' ) );
+						},
+						commit : function( data )
+						{
+							var element = data.element;
+
+							if ( CKEDITOR.env.ie )
+							{
+								var isElementChecked = !!element.getAttribute( 'checked' );
+								var isChecked = !!this.getValue();
+
+								if ( isElementChecked != isChecked )
+								{
+									var replace = CKEDITOR.dom.element.createFromHtml( '<input type="checkbox"'
+										   + ( isChecked ? ' checked="checked"' : '' )
+										   + '></input>', editor.document );
+									element.copyAttributes( replace, { type : 1, checked : 1 } );
+									replace.replace( element );
+									editor.getSelection().selectElement( replace );
+									data.element = replace;
+								}
+							}
+							else
+							{
+								if ( this.getValue() )
+									element.setAttribute( 'checked', this.getValue() );
+								else
+									element.removeAttribute( 'checked' );
+							}
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/textfield.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/textfield.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/textfield.js	(revision 2000)
@@ -0,0 +1,193 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+CKEDITOR.dialog.add( 'textfield', function( editor )
+{
+	var autoAttributes =
+	{
+		value : 1,
+		size : 1,
+		maxLength : 1
+	};
+
+	var acceptedTypes =
+	{
+		text : 1,
+		password : 1
+	};
+
+	return {
+		title : editor.lang.textfield.title,
+		minWidth : 350,
+		minHeight : 150,
+		onShow : function()
+		{
+			delete this.textField;
+
+			var element = this.getParentEditor().getSelection().getSelectedElement();
+			if ( element && element.getName() == "input" &&
+					( acceptedTypes[ element.getAttribute( 'type' ) ] || !element.getAttribute( 'type' ) ) )
+			{
+				this.textField = element;
+				this.setupContent( element );
+			}
+		},
+		onOk : function()
+		{
+			var editor,
+				element = this.textField,
+				isInsertMode = !element;
+
+			if ( isInsertMode )
+			{
+				editor = this.getParentEditor();
+				element = editor.document.createElement( 'input' );
+				element.setAttribute( 'type', 'text' );
+			}
+
+			if ( isInsertMode )
+				editor.insertElement( element );
+			this.commitContent( { element : element } );
+		},
+		onLoad : function()
+		{
+			var autoSetup = function( element )
+			{
+				var value = element.hasAttribute( this.id ) && element.getAttribute( this.id );
+				this.setValue( value || '' );
+			};
+
+			var autoCommit = function( data )
+			{
+				var element = data.element;
+				var value = this.getValue();
+
+				if ( value )
+					element.setAttribute( this.id, value );
+				else
+					element.removeAttribute( this.id );
+			};
+
+			this.foreach( function( contentObj )
+				{
+					if ( autoAttributes[ contentObj.id ] )
+					{
+						contentObj.setup = autoSetup;
+						contentObj.commit = autoCommit;
+					}
+				} );
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.textfield.title,
+				title : editor.lang.textfield.title,
+				elements : [
+					{
+						type : 'hbox',
+						widths : [ '50%', '50%' ],
+						children :
+						[
+							{
+								id : '_cke_saved_name',
+								type : 'text',
+								label : editor.lang.textfield.name,
+								'default' : '',
+								accessKey : 'N',
+								setup : function( element )
+								{
+									this.setValue(
+											element.getAttribute( '_cke_saved_name' ) ||
+											element.getAttribute( 'name' ) ||
+											'' );
+								},
+								commit : function( data )
+								{
+									var element = data.element;
+
+									if ( this.getValue() )
+										element.setAttribute( '_cke_saved_name', this.getValue() );
+									else
+									{
+										element.removeAttribute( '_cke_saved_name' );
+										element.removeAttribute( 'name' );
+									}
+								}
+							},
+							{
+								id : 'value',
+								type : 'text',
+								label : editor.lang.textfield.value,
+								'default' : '',
+								accessKey : 'V'
+							}
+						]
+					},
+					{
+						type : 'hbox',
+						widths : [ '50%', '50%' ],
+						children :
+						[
+							{
+								id : 'size',
+								type : 'text',
+								label : editor.lang.textfield.charWidth,
+								'default' : '',
+								accessKey : 'C',
+								style : 'width:50px',
+								validate : CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed )
+							},
+							{
+								id : 'maxLength',
+								type : 'text',
+								label : editor.lang.textfield.maxChars,
+								'default' : '',
+								accessKey : 'M',
+								style : 'width:50px',
+								validate : CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed )
+							}
+						]
+					},
+					{
+						id : 'type',
+						type : 'select',
+						label : editor.lang.textfield.type,
+						'default' : 'text',
+						accessKey : 'M',
+						items :
+						[
+							[ editor.lang.textfield.typeText, 'text' ],
+							[ editor.lang.textfield.typePass, 'password' ]
+						],
+						setup : function( element )
+						{
+							this.setValue( element.getAttribute( 'type' ) );
+						},
+						commit : function( data )
+						{
+							var element = data.element;
+
+							if ( CKEDITOR.env.ie )
+							{
+								var elementType = element.getAttribute( 'type' );
+								var myType = this.getValue();
+
+								if ( elementType != myType )
+								{
+									var replace = CKEDITOR.dom.element.createFromHtml( '<input type="' + myType + '"></input>', editor.document );
+									element.copyAttributes( replace, { type : 1 } );
+									replace.replace( element );
+									editor.getSelection().selectElement( replace );
+									data.element = element;
+								}
+							}
+							else
+								element.setAttribute( 'type', this.getValue() );
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/button.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/button.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/button.js	(revision 2000)
@@ -0,0 +1,135 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+CKEDITOR.dialog.add( 'button', function( editor )
+{
+	return {
+		title : editor.lang.button.title,
+		minWidth : 350,
+		minHeight : 150,
+		onShow : function()
+		{
+			delete this.button;
+			var element = this.getParentEditor().getSelection().getSelectedElement();
+			if ( element && element.getName() == "input" )
+			{
+				var type = element.getAttribute( 'type' );
+				if ( type == "button" || type == "reset" || type == "submit" )
+				{
+					this.button = element;
+					this.setupContent( element );
+				}
+			}
+		},
+		onOk : function()
+		{
+			var editor,
+				element = this.button,
+				isInsertMode = !element;
+
+			if ( isInsertMode )
+			{
+				editor = this.getParentEditor();
+				element = editor.document.createElement( 'input' );
+			}
+
+			if ( isInsertMode )
+				editor.insertElement( element );
+			this.commitContent( { element : element } );
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.button.title,
+				title : editor.lang.button.title,
+				elements : [
+					{
+						id : '_cke_saved_name',
+						type : 'text',
+						label : editor.lang.common.name,
+						'default' : '',
+						setup : function( element )
+						{
+							this.setValue(
+									element.getAttribute( '_cke_saved_name' ) ||
+									element.getAttribute( 'name' ) ||
+									'' );
+						},
+						commit : function( data )
+						{
+							var element = data.element;
+
+							if ( this.getValue() )
+								element.setAttribute( '_cke_saved_name', this.getValue() );
+							else
+							{
+								element.removeAttribute( '_cke_saved_name' );
+								element.removeAttribute( 'name' );
+							}
+						}
+					},
+					{
+						id : 'value',
+						type : 'text',
+						label : editor.lang.button.text,
+						accessKey : 'V',
+						'default' : '',
+						setup : function( element )
+						{
+							this.setValue( element.getAttribute( 'value' ) || '' );
+						},
+						commit : function( data )
+						{
+							var element = data.element;
+
+							if ( this.getValue() )
+								element.setAttribute( 'value', this.getValue() );
+							else
+								element.removeAttribute( 'value' );
+						}
+					},
+					{
+						id : 'type',
+						type : 'select',
+						label : editor.lang.button.type,
+						'default' : 'button',
+						accessKey : 'T',
+						items :
+						[
+							[ editor.lang.button.typeBtn, 'button' ],
+							[ editor.lang.button.typeSbm, 'submit' ],
+							[ editor.lang.button.typeRst, 'reset' ]
+						],
+						setup : function( element )
+						{
+							this.setValue( element.getAttribute( 'type' ) || '' );
+						},
+						commit : function( data )
+						{
+							var element = data.element;
+
+							if ( CKEDITOR.env.ie )
+							{
+								var elementType = element.getAttribute( 'type' );
+								var currentType = this.getValue();
+
+								if ( currentType != elementType )
+								{
+									var replace = CKEDITOR.dom.element.createFromHtml( '<input type="' + currentType +
+										'"></input>', editor.document );
+									element.copyAttributes( replace, { type : 1 } );
+									replace.replace( element );
+									editor.getSelection().selectElement( replace );
+									data.element = replace;
+								}
+							}
+							else
+								element.setAttribute( 'type', this.getValue() );
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/textarea.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/textarea.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/textarea.js	(revision 2000)
@@ -0,0 +1,114 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+CKEDITOR.dialog.add( 'textarea', function( editor )
+{
+	return {
+		title : editor.lang.textarea.title,
+		minWidth : 350,
+		minHeight : 150,
+		onShow : function()
+		{
+			delete this.textarea;
+
+			var element = this.getParentEditor().getSelection().getSelectedElement();
+			if ( element && element.getName() == "textarea" )
+			{
+				this.textarea = element;
+				this.setupContent( element );
+			}
+		},
+		onOk : function()
+		{
+			var editor,
+				element = this.textarea,
+				isInsertMode = !element;
+
+			if ( isInsertMode )
+			{
+				editor = this.getParentEditor();
+				element = editor.document.createElement( 'textarea' );
+			}
+			this.commitContent( element );
+
+			if ( isInsertMode )
+				editor.insertElement( element );
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.textarea.title,
+				title : editor.lang.textarea.title,
+				elements : [
+					{
+						id : '_cke_saved_name',
+						type : 'text',
+						label : editor.lang.common.name,
+						'default' : '',
+						accessKey : 'N',
+						setup : function( element )
+						{
+							this.setValue(
+									element.getAttribute( '_cke_saved_name' ) ||
+									element.getAttribute( 'name' ) ||
+									'' );
+						},
+						commit : function( element )
+						{
+							if ( this.getValue() )
+								element.setAttribute( '_cke_saved_name', this.getValue() );
+							else
+							{
+								element.removeAttribute( '_cke_saved_name' );
+								element.removeAttribute( 'name' );
+							}
+						}
+					},
+					{
+						id : 'cols',
+						type : 'text',
+						label : editor.lang.textarea.cols,
+						'default' : '',
+						accessKey : 'C',
+						style : 'width:50px',
+						validate : CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed ),
+						setup : function( element )
+						{
+							var value = element.hasAttribute( 'cols' ) && element.getAttribute( 'cols' );
+							this.setValue( value || '' );
+						},
+						commit : function( element )
+						{
+							if ( this.getValue() )
+								element.setAttribute( 'cols', this.getValue() );
+							else
+								element.removeAttribute( 'cols' );
+						}
+					},
+					{
+						id : 'rows',
+						type : 'text',
+						label : editor.lang.textarea.rows,
+						'default' : '',
+						accessKey : 'R',
+						style : 'width:50px',
+						validate : CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed ),
+						setup : function( element )
+						{
+							var value = element.hasAttribute( 'rows' ) && element.getAttribute( 'rows' );
+							this.setValue( value || '' );
+						},
+						commit : function( element )
+						{
+							if ( this.getValue() )
+								element.setAttribute( 'rows', this.getValue() );
+							else
+								element.removeAttribute( 'rows' );
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/radio.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/radio.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/radio.js	(revision 2000)
@@ -0,0 +1,135 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+CKEDITOR.dialog.add( 'radio', function( editor )
+{
+	return {
+		title : editor.lang.checkboxAndRadio.radioTitle,
+		minWidth : 350,
+		minHeight : 140,
+		onShow : function()
+		{
+			delete this.radioButton;
+
+			var element = this.getParentEditor().getSelection().getSelectedElement();
+			if ( element && element.getName() == "input" && element.getAttribute( 'type' ) == "radio" )
+			{
+				this.radioButton = element;
+				this.setupContent( element );
+			}
+		},
+		onOk : function()
+		{
+			var editor,
+				element = this.radioButton,
+				isInsertMode = !element;
+
+			if ( isInsertMode )
+			{
+				editor = this.getParentEditor();
+				element = editor.document.createElement( 'input' );
+				element.setAttribute( 'type', 'radio' );
+			}
+
+			if ( isInsertMode )
+				editor.insertElement( element );
+			this.commitContent( { element : element } );
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.checkboxAndRadio.radioTitle,
+				title : editor.lang.checkboxAndRadio.radioTitle,
+				elements : [
+					{
+						id : 'name',
+						type : 'text',
+						label : editor.lang.common.name,
+						'default' : '',
+						accessKey : 'N',
+						setup : function( element )
+						{
+							this.setValue(
+									element.getAttribute( '_cke_saved_name' ) ||
+									element.getAttribute( 'name' ) ||
+									'' );
+						},
+						commit : function( data )
+						{
+							var element = data.element;
+
+							if ( this.getValue() )
+								element.setAttribute( '_cke_saved_name', this.getValue() );
+							else
+							{
+								element.removeAttribute( '_cke_saved_name' );
+								element.removeAttribute( 'name' );
+							}
+						}
+					},
+					{
+						id : 'value',
+						type : 'text',
+						label : editor.lang.checkboxAndRadio.value,
+						'default' : '',
+						accessKey : 'V',
+						setup : function( element )
+						{
+							this.setValue( element.getAttribute( 'value' ) || '' );
+						},
+						commit : function( data )
+						{
+							var element = data.element;
+
+							if ( this.getValue() )
+								element.setAttribute( 'value', this.getValue() );
+							else
+								element.removeAttribute( 'value' );
+						}
+					},
+					{
+						id : 'checked',
+						type : 'checkbox',
+						label : editor.lang.checkboxAndRadio.selected,
+						'default' : '',
+						accessKey : 'S',
+						value : "checked",
+						setup : function( element )
+						{
+							this.setValue( element.getAttribute( 'checked' ) );
+						},
+						commit : function( data )
+						{
+							var element = data.element;
+
+							if ( !CKEDITOR.env.ie )
+							{
+								if ( this.getValue() )
+									element.setAttribute( 'checked', 'checked' );
+								else
+									element.removeAttribute( 'checked' );
+							}
+							else
+							{
+								var isElementChecked = element.getAttribute( 'checked' );
+								var isChecked = !!this.getValue();
+
+								if ( isElementChecked != isChecked )
+								{
+									var replace = CKEDITOR.dom.element.createFromHtml( '<input type="radio"'
+											+ ( isChecked ? ' checked="checked"' : '' )
+											+ '></input>', editor.document );
+									element.copyAttributes( replace, { type : 1, checked : 1 } );
+									replace.replace( element );
+									editor.getSelection().selectElement( replace );
+									data.element = replace;
+								}
+							}
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/hiddenfield.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/hiddenfield.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/hiddenfield.js	(revision 2000)
@@ -0,0 +1,91 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+CKEDITOR.dialog.add( 'hiddenfield', function( editor )
+{
+	return {
+		title : editor.lang.hidden.title,
+		minWidth : 350,
+		minHeight : 110,
+		onShow : function()
+		{
+			delete this.hiddenField;
+
+			var element = this.getParentEditor().getSelection().getSelectedElement();
+			if ( element && element.getName() == "input" && element.getAttribute( 'type' ) == "checkbox" )
+			{
+				this.hiddenField = element;
+				this.setupContent( element );
+			}
+		},
+		onOk : function()
+		{
+			var editor,
+				element = this.hiddenField,
+				isInsertMode = !element;
+
+			if ( isInsertMode )
+			{
+				editor = this.getParentEditor();
+				element = editor.document.createElement( 'input' );
+				element.setAttribute( 'type', 'hidden' );
+			}
+
+			if ( isInsertMode )
+				editor.insertElement( element );
+			this.commitContent( element );
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.hidden.title,
+				title : editor.lang.hidden.title,
+				elements : [
+					{
+						id : '_cke_saved_name',
+						type : 'text',
+						label : editor.lang.hidden.name,
+						'default' : '',
+						accessKey : 'N',
+						setup : function( element )
+						{
+							this.setValue(
+									element.getAttribute( '_cke_saved_name' ) ||
+									element.getAttribute( 'name' ) ||
+									'' );
+						},
+						commit : function( element )
+						{
+							if ( this.getValue() )
+								element.setAttribute( '_cke_saved_name', this.getValue() );
+							else
+							{
+								element.removeAttribute( '_cke_saved_name' );
+								element.removeAttribute( 'name' );
+							}
+						}
+					},
+					{
+						id : 'value',
+						type : 'text',
+						label : editor.lang.hidden.value,
+						'default' : '',
+						accessKey : 'V',
+						setup : function( element )
+						{
+							this.setValue( element.getAttribute( 'value' ) || '' );
+						},
+						commit : function( element )
+						{
+							if ( this.getValue() )
+								element.setAttribute( 'value', this.getValue() );
+							else
+								element.removeAttribute( 'value' );
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/select.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/select.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/select.js	(revision 2000)
@@ -0,0 +1,545 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+CKEDITOR.dialog.add( 'select', function( editor )
+{
+	// Add a new option to a SELECT object (combo or list).
+	function addOption( combo, optionText, optionValue, documentObject, index )
+	{
+		combo = getSelect( combo );
+		var oOption;
+		if ( documentObject )
+			oOption = documentObject.createElement( "OPTION" );
+		else
+			oOption = document.createElement( "OPTION" );
+
+		if ( combo && oOption && oOption.getName() == 'option' )
+		{
+			if ( CKEDITOR.env.ie ) {
+				if ( !isNaN( parseInt( index, 10) ) )
+					combo.$.options.add( oOption.$, index );
+				else
+					combo.$.options.add( oOption.$ );
+
+				oOption.$.innerHTML = optionText.length > 0 ? optionText : '';
+				oOption.$.value     = optionValue;
+			}
+			else
+			{
+				if ( index !== null && index < combo.getChildCount() )
+					combo.getChild( index < 0 ? 0 : index ).insertBeforeMe( oOption );
+				else
+					combo.append( oOption );
+
+				oOption.setText( optionText.length > 0 ? optionText : '' );
+				oOption.setValue( optionValue );
+			}
+		}
+		else
+			return false;
+
+		return oOption;
+	}
+	// Remove all selected options from a SELECT object.
+	function removeSelectedOptions( combo )
+	{
+		combo = getSelect( combo );
+
+		// Save the selected index
+		var iSelectedIndex = getSelectedIndex( combo );
+
+		// Remove all selected options.
+		for ( var i = combo.getChildren().count() - 1 ; i >= 0 ; i-- )
+		{
+			if ( combo.getChild( i ).$.selected )
+				combo.getChild( i ).remove();
+		}
+
+		// Reset the selection based on the original selected index.
+		setSelectedIndex( combo, iSelectedIndex );
+	}
+	//Modify option  from a SELECT object.
+	function modifyOption( combo, index, title, value )
+	{
+		combo = getSelect( combo );
+		if ( index < 0 )
+			return false;
+		var child = combo.getChild( index );
+		child.setText( title );
+		child.setValue( value );
+		return child;
+	}
+	function removeAllOptions( combo )
+	{
+		combo = getSelect( combo );
+		while( combo.getChild( 0 ) && combo.getChild( 0 ).remove() )
+		{ /*jsl:pass*/ }
+	}
+	// Moves the selected option by a number of steps (also negative).
+	function changeOptionPosition( combo, steps, documentObject )
+	{
+		combo = getSelect( combo );
+		var iActualIndex = getSelectedIndex( combo );
+		if ( iActualIndex < 0 )
+			return false;
+
+		var iFinalIndex = iActualIndex + steps;
+		iFinalIndex = ( iFinalIndex < 0 ) ? 0 : iFinalIndex;
+		iFinalIndex = ( iFinalIndex >= combo.getChildCount() ) ? combo.getChildCount() - 1 : iFinalIndex;
+
+		if ( iActualIndex == iFinalIndex )
+			return false;
+
+		var oOption = combo.getChild( iActualIndex ),
+			sText	= oOption.getText(),
+			sValue	= oOption.getValue();
+
+		oOption.remove();
+
+		oOption = addOption( combo, sText, sValue, ( !documentObject ) ? null : documentObject, iFinalIndex );
+		setSelectedIndex( combo, iFinalIndex );
+		return oOption;
+	}
+	function getSelectedIndex( combo )
+	{
+		combo = getSelect( combo );
+		return combo ? combo.$.selectedIndex : -1;
+	}
+	function setSelectedIndex( combo, index )
+	{
+		combo = getSelect( combo );
+		if ( index < 0 )
+			return null;
+		var count = combo.getChildren().count();
+		combo.$.selectedIndex = ( index >= count ) ? ( count - 1 ) : index;
+		return combo;
+	}
+	function getOptions( combo )
+	{
+		combo = getSelect( combo );
+		return combo ? combo.getChildren() : false;
+	}
+	function getSelect( obj )
+	{
+		if ( obj && obj.domId && obj.getInputElement().$ )				// Dialog element.
+			return  obj.getInputElement();
+		else if ( obj && obj.$ )
+			return obj;
+		return false;
+	}
+
+	return {
+		title : editor.lang.select.title,
+		minWidth : CKEDITOR.env.ie ? 460 : 395,
+		minHeight : CKEDITOR.env.ie ? 320 : 300,
+		onShow : function()
+		{
+			delete this.selectBox;
+			this.setupContent( 'clear' );
+			var element = this.getParentEditor().getSelection().getSelectedElement();
+			if ( element && element.getName() == "select" )
+			{
+				this.selectBox = element;
+				this.setupContent( element.getName(), element );
+
+				// Load Options into dialog.
+				var objOptions = getOptions( element );
+				for ( var i = 0 ; i < objOptions.count() ; i++ )
+					this.setupContent( 'option', objOptions.getItem( i ) );
+			}
+		},
+		onOk : function()
+		{
+			var editor = this.getParentEditor(),
+				element = this.selectBox,
+				isInsertMode = !element;
+
+			if ( isInsertMode )
+				element = editor.document.createElement( 'select' );
+			this.commitContent( element );
+
+			if ( isInsertMode )
+				editor.insertElement( element );
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.select.selectInfo,
+				title : editor.lang.select.selectInfo,
+				accessKey : '',
+				elements : [
+					{
+						id : 'txtName',
+						type : 'text',
+						widths : [ '25%','75%' ],
+						labelLayout : 'horizontal',
+						label : editor.lang.common.name,
+						'default' : '',
+						accessKey : 'N',
+						align : 'center',
+						style : 'width:350px',
+						setup : function( name, element )
+						{
+							if ( name == 'clear' )
+								this.setValue( '' );
+							else if ( name == 'select' )
+							{
+								this.setValue(
+										element.getAttribute( '_cke_saved_name' ) ||
+										element.getAttribute( 'name' ) ||
+										'' );
+							}
+						},
+						commit : function( element )
+						{
+							if ( this.getValue() )
+								element.setAttribute( '_cke_saved_name', this.getValue() );
+							else
+							{
+								element.removeAttribute( '_cke_saved_name' ) ;
+								element.removeAttribute( 'name' );
+							}
+						}
+					},
+					{
+						id : 'txtValue',
+						type : 'text',
+						widths : [ '25%','75%' ],
+						labelLayout : 'horizontal',
+						label : editor.lang.select.value,
+						style : 'width:350px',
+						'default' : '',
+						className : 'cke_disabled',
+						onLoad : function()
+						{
+							this.getInputElement().setAttribute( 'readOnly', true );
+						},
+						setup : function( name, element )
+						{
+							if ( name == 'clear' )
+								this.setValue( '' );
+							else if ( name == 'option' && element.getAttribute( 'selected' ) )
+								this.setValue( element.$.value );
+						}
+					},
+					{
+						type : 'hbox',
+						widths : [ '175px', '170px' ],
+						align : 'center',
+						children :
+						[
+							{
+								id : 'txtSize',
+								type : 'text',
+								align : 'center',
+								labelLayout : 'horizontal',
+								label : editor.lang.select.size,
+								'default' : '',
+								accessKey : 'S',
+								style : 'width:175px',
+								validate: function()
+								{
+									var func = CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed );
+									return ( ( this.getValue() === '' ) || func.apply( this ) );
+								},
+								setup : function( name, element )
+								{
+									if ( name == 'select' )
+										this.setValue( element.getAttribute( 'size' ) || '' );
+									if ( CKEDITOR.env.webkit )
+										this.getInputElement().setStyle( 'width', '86px' );
+								},
+								commit : function( element )
+								{
+									if ( this.getValue() )
+										element.setAttribute( 'size', this.getValue() );
+									else
+										element.removeAttribute( 'size' );
+								}
+							},
+							{
+								type : 'html',
+								html : '<span>' + CKEDITOR.tools.htmlEncode( editor.lang.select.lines ) + '</span>'
+							}
+						]
+					},
+					{
+						type : 'html',
+						html : '<span>' + CKEDITOR.tools.htmlEncode( editor.lang.select.opAvail ) + '</span>'
+					},
+					{
+						type : 'hbox',
+						widths : [ '115px', '115px' ,'100px' ],
+						align : 'top',
+						children :
+						[
+							{
+								type : 'vbox',
+								children :
+								[
+									{
+										id : 'txtOptName',
+										type : 'text',
+										label : editor.lang.select.opText,
+										style : 'width:115px',
+										setup : function( name, element )
+										{
+											if ( name == 'clear' )
+												this.setValue( "" );
+										}
+									},
+									{
+										type : 'select',
+										id : 'cmbName',
+										label : '',
+										title : '',
+										size : 5,
+										style : 'width:115px;height:75px',
+										items : [],
+										onChange : function()
+										{
+											var dialog = this.getDialog(),
+												values = dialog.getContentElement( 'info', 'cmbValue' ),
+												optName = dialog.getContentElement( 'info', 'txtOptName' ),
+												optValue = dialog.getContentElement( 'info', 'txtOptValue' ),
+												iIndex = getSelectedIndex( this );
+
+											setSelectedIndex( values, iIndex );
+											optName.setValue( this.getValue() );
+											optValue.setValue( values.getValue() );
+										},
+										setup : function( name, element )
+										{
+											if ( name == 'clear' )
+												removeAllOptions( this );
+											else if ( name == 'option' )
+												addOption( this, element.getText(), element.getText(),
+													this.getDialog().getParentEditor().document );
+										},
+										commit : function( element )
+										{
+											var dialog = this.getDialog(),
+												optionsNames = getOptions( this ),
+												optionsValues = getOptions( dialog.getContentElement( 'info', 'cmbValue' ) ),
+												selectValue = dialog.getContentElement( 'info', 'txtValue' ).getValue();
+
+											removeAllOptions( element );
+
+											for ( var i = 0 ; i < optionsNames.count() ; i++ )
+											{
+												var oOption = addOption( element, optionsNames.getItem( i ).getValue(),
+													optionsValues.getItem( i ).getValue(), dialog.getParentEditor().document );
+												if ( optionsValues.getItem( i ).getValue() == selectValue )
+												{
+													oOption.setAttribute( 'selected', 'selected' );
+													oOption.selected = true;
+												}
+											}
+										}
+									}
+								]
+							},
+							{
+								type : 'vbox',
+								children :
+								[
+									{
+										id : 'txtOptValue',
+										type : 'text',
+										label : editor.lang.select.opValue,
+										style : 'width:115px',
+										setup : function( name, element )
+										{
+											if ( name == 'clear' )
+												this.setValue( "" );
+										}
+									},
+									{
+										type : 'select',
+										id : 'cmbValue',
+										label : '',
+										size : 5,
+										style : 'width:115px;height:75px',
+										items : [],
+										onChange : function()
+										{
+											var dialog = this.getDialog(),
+												names = dialog.getContentElement( 'info', 'cmbName' ),
+												optName = dialog.getContentElement( 'info', 'txtOptName' ),
+												optValue = dialog.getContentElement( 'info', 'txtOptValue' ),
+												iIndex = getSelectedIndex( this );
+
+											setSelectedIndex( names, iIndex );
+											optName.setValue( names.getValue() );
+											optValue.setValue( this.getValue() );
+										},
+										setup : function( name, element )
+										{
+											if ( name == 'clear' )
+												removeAllOptions( this );
+											else if ( name == 'option' )
+											{
+												var oValue	= element.getValue();
+												addOption( this, oValue, oValue,
+													this.getDialog().getParentEditor().document );
+												if ( element.getAttribute( 'selected' ) == 'selected' )
+													this.getDialog().getContentElement( 'info', 'txtValue' ).setValue( oValue );
+											}
+										}
+									}
+								]
+							},
+							{
+								type : 'vbox',
+								padding : 5,
+								children :
+								[
+									{
+										type : 'button',
+										style : '',
+										label : editor.lang.select.btnAdd,
+										title : editor.lang.select.btnAdd,
+										style : 'width:100%;',
+										onClick : function()
+										{
+											//Add new option.
+											var dialog = this.getDialog(),
+												parentEditor = dialog.getParentEditor(),
+												optName = dialog.getContentElement( 'info', 'txtOptName' ),
+												optValue = dialog.getContentElement( 'info', 'txtOptValue' ),
+												names = dialog.getContentElement( 'info', 'cmbName' ),
+												values = dialog.getContentElement( 'info', 'cmbValue' );
+
+											addOption(names, optName.getValue(), optName.getValue(), dialog.getParentEditor().document );
+											addOption(values, optValue.getValue(), optValue.getValue(), dialog.getParentEditor().document );
+
+											optName.setValue( "" );
+											optValue.setValue( "" );
+										}
+									},
+									{
+										type : 'button',
+										label : editor.lang.select.btnModify,
+										title : editor.lang.select.btnModify,
+										style : 'width:100%;',
+										onClick : function()
+										{
+											//Modify selected option.
+											var dialog = this.getDialog(),
+												optName = dialog.getContentElement( 'info', 'txtOptName' ),
+												optValue = dialog.getContentElement( 'info', 'txtOptValue' ),
+												names = dialog.getContentElement( 'info', 'cmbName' ),
+												values = dialog.getContentElement( 'info', 'cmbValue' ),
+												iIndex = getSelectedIndex( names );
+
+											if ( iIndex >= 0 )
+											{
+												modifyOption( names, iIndex, optName.getValue(), optName.getValue() );
+												modifyOption( values, iIndex, optValue.getValue(), optValue.getValue() );
+											}
+										}
+									},
+									{
+										type : 'button',
+										style : 'width:100%;',
+										label : editor.lang.select.btnUp,
+										title : editor.lang.select.btnUp,
+										onClick : function()
+										{
+											//Move up.
+											var dialog = this.getDialog(),
+												names = dialog.getContentElement( 'info', 'cmbName' ),
+												values = dialog.getContentElement( 'info', 'cmbValue' );
+
+											changeOptionPosition( names, -1, dialog.getParentEditor().document );
+											changeOptionPosition( values, -1, dialog.getParentEditor().document );
+										}
+									},
+									{
+										type : 'button',
+										style : 'width:100%;',
+										label : editor.lang.select.btnDown,
+										title : editor.lang.select.btnDown,
+										onClick : function()
+										{
+											//Move down.
+											var dialog = this.getDialog(),
+												names = dialog.getContentElement( 'info', 'cmbName' ),
+												values = dialog.getContentElement( 'info', 'cmbValue' );
+
+											changeOptionPosition( names, 1, dialog.getParentEditor().document );
+											changeOptionPosition( values, 1, dialog.getParentEditor().document );
+										}
+									}
+								]
+							}
+						]
+					},
+					{
+						type : 'hbox',
+						widths : [ '40%', '20%', '40%' ],
+						children :
+						[
+							{
+								type : 'button',
+								label : editor.lang.select.btnSetValue,
+								title : editor.lang.select.btnSetValue,
+								onClick : function()
+								{
+									//Set as default value.
+									var dialog = this.getDialog(),
+										values = dialog.getContentElement( 'info', 'cmbValue' ),
+										txtValue = dialog.getContentElement( 'info', 'txtValue' );
+									txtValue.setValue( values.getValue() );
+								}
+							},
+							{
+								type : 'button',
+								label : editor.lang.select.btnDelete,
+								title : editor.lang.select.btnDelete,
+								onClick : function()
+								{
+									// Delete option.
+									var dialog = this.getDialog(),
+										names = dialog.getContentElement( 'info', 'cmbName' ),
+										values = dialog.getContentElement( 'info', 'cmbValue' ),
+										optName = dialog.getContentElement( 'info', 'txtOptName' ),
+										optValue = dialog.getContentElement( 'info', 'txtOptValue' );
+
+									removeSelectedOptions( names );
+									removeSelectedOptions( values );
+
+									optName.setValue( "" );
+									optValue.setValue( "" );
+								}
+							},
+							{
+								id : 'chkMulti',
+								type : 'checkbox',
+								label : editor.lang.select.chkMulti,
+								'default' : '',
+								accessKey : 'M',
+								value : "checked",
+								setup : function( name, element )
+								{
+									if ( name == 'select' )
+										this.setValue( element.getAttribute( 'multiple' ) );
+									if ( CKEDITOR.env.webkit )
+										this.getElement().getParent().setStyle( 'vertical-align', 'middle' );
+								},
+								commit : function( element )
+								{
+									if ( this.getValue() )
+										element.setAttribute( 'multiple', this.getValue() );
+									else
+										element.removeAttribute( 'multiple' );
+								}
+							}
+						]
+					}
+				]
+			}
+		]
+	};
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/form.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/form.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/forms/dialogs/form.js	(revision 2000)
@@ -0,0 +1,177 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+CKEDITOR.dialog.add( 'form', function( editor )
+{
+	var autoAttributes =
+	{
+		action : 1,
+		id : 1,
+		method : 1,
+		enctype : 1,
+		target : 1
+	};
+
+	return {
+		title : editor.lang.form.title,
+		minWidth : 350,
+		minHeight : 200,
+		onShow : function()
+		{
+			delete this.form;
+
+			var element = this.getParentEditor().getSelection().getStartElement();
+			var form = element && element.getAscendant( 'form', true );
+			if ( form )
+			{
+				this.form = form;
+				this.setupContent( form );
+			}
+		},
+		onOk : function()
+		{
+			var editor,
+				element = this.form,
+				isInsertMode = !element;
+
+			if ( isInsertMode )
+			{
+				editor = this.getParentEditor();
+				element = editor.document.createElement( 'form' );
+				element.append( editor.document.createElement( 'br' ) );
+			}
+
+			if ( isInsertMode )
+				editor.insertElement( element );
+			this.commitContent( element );
+		},
+		onLoad : function()
+		{
+			function autoSetup( element )
+			{
+				this.setValue( element.getAttribute( this.id ) || '' );
+			}
+
+			function autoCommit( element )
+			{
+				if ( this.getValue() )
+					element.setAttribute( this.id, this.getValue() );
+				else
+					element.removeAttribute( this.id );
+			}
+
+			this.foreach( function( contentObj )
+				{
+					if ( autoAttributes[ contentObj.id ] )
+					{
+						contentObj.setup = autoSetup;
+						contentObj.commit = autoCommit;
+					}
+				} );
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.form.title,
+				title : editor.lang.form.title,
+				elements : [
+					{
+						id : 'txtName',
+						type : 'text',
+						label : editor.lang.common.name,
+						'default' : '',
+						accessKey : 'N',
+						setup : function( element )
+						{
+							this.setValue( element.getAttribute( '_cke_saved_name' ) ||
+									element.getAttribute( 'name' ) ||
+									'' );
+						},
+						commit : function( element )
+						{
+							if ( this.getValue() )
+								element.setAttribute( '_cke_saved_name', this.getValue() );
+							else
+							{
+								element.removeAttribute( '_cke_saved_name' );
+								element.removeAttribute( 'name' );
+							}
+						}
+					},
+					{
+						id : 'action',
+						type : 'text',
+						label : editor.lang.form.action,
+						'default' : '',
+						accessKey : 'A'
+					},
+					{
+						type : 'hbox',
+						widths : [ '45%', '55%' ],
+						children :
+						[
+							{
+								id : 'id',
+								type : 'text',
+								label : editor.lang.common.id,
+								'default' : '',
+								accessKey : 'I'
+							},
+							{
+								id : 'enctype',
+								type : 'select',
+								label : editor.lang.form.encoding,
+								style : 'width:100%',
+								accessKey : 'E',
+								'default' : '',
+								items :
+								[
+									[ '' ],
+									[ 'text/plain' ],
+									[ 'multipart/form-data' ],
+									[ 'application/x-www-form-urlencoded' ]
+								]
+							}
+						]
+					},
+					{
+						type : 'hbox',
+						widths : [ '45%', '55%' ],
+						children :
+						[
+							{
+								id : 'target',
+								type : 'select',
+								label : editor.lang.form.target,
+								style : 'width:100%',
+								accessKey : 'M',
+								'default' : '',
+								items :
+								[
+									[ editor.lang.form.targetNotSet, '' ],
+									[ editor.lang.form.targetNew, '_blank' ],
+									[ editor.lang.form.targetTop, '_top' ],
+									[ editor.lang.form.targetSelf, '_self' ],
+									[ editor.lang.form.targetParent, '_parent' ]
+								]
+							},
+							{
+								id : 'method',
+								type : 'select',
+								label : editor.lang.form.method,
+								accessKey : 'M',
+								'default' : 'GET',
+								items :
+								[
+									[ 'GET', 'get' ],
+									[ 'POST', 'post' ]
+								]
+							}
+						]
+					}
+				]
+			}
+		]
+	};
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/forms/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/forms/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/forms/plugin.js	(revision 2000)
@@ -0,0 +1,193 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Forms Plugin
+ */
+
+CKEDITOR.plugins.add( 'forms',
+{
+	init : function( editor )
+	{
+		var lang = editor.lang;
+
+		editor.addCss(
+			'form' +
+			'{' +
+				'border: 1px dotted #FF0000;' +
+				'padding: 2px;' +
+			'}' );
+
+		// All buttons use the same code to register. So, to avoid
+		// duplications, let's use this tool function.
+		var addButtonCommand = function( buttonName, commandName, dialogFile )
+		{
+			editor.addCommand( commandName, new CKEDITOR.dialogCommand( commandName ) );
+
+			editor.ui.addButton( buttonName,
+				{
+					label : lang.common[ buttonName.charAt(0).toLowerCase() + buttonName.slice(1) ],
+					command : commandName
+				});
+			CKEDITOR.dialog.add( commandName, dialogFile );
+		};
+
+		var dialogPath = this.path + 'dialogs/';
+		addButtonCommand( 'Form',			'form',			dialogPath + 'form.js' );
+		addButtonCommand( 'Checkbox',		'checkbox',		dialogPath + 'checkbox.js' );
+		addButtonCommand( 'Radio',			'radio',		dialogPath + 'radio.js' );
+		addButtonCommand( 'TextField',		'textfield',	dialogPath + 'textfield.js' );
+		addButtonCommand( 'Textarea',		'textarea',		dialogPath + 'textarea.js' );
+		addButtonCommand( 'Select',			'select',		dialogPath + 'select.js' );
+		addButtonCommand( 'Button',			'button',		dialogPath + 'button.js' );
+		addButtonCommand( 'ImageButton',	'imagebutton',	CKEDITOR.plugins.getPath('image') + 'dialogs/image.js' );
+		addButtonCommand( 'HiddenField',	'hiddenfield',	dialogPath + 'hiddenfield.js' );
+
+		// If the "menu" plugin is loaded, register the menu items.
+		if ( editor.addMenuItems )
+		{
+			editor.addMenuItems(
+				{
+					form :
+					{
+						label : lang.form.menu,
+						command : 'form',
+						group : 'form'
+					},
+
+					checkbox :
+					{
+						label : lang.checkboxAndRadio.checkboxTitle,
+						command : 'checkbox',
+						group : 'checkbox'
+					},
+
+					radio :
+					{
+						label : lang.checkboxAndRadio.radioTitle,
+						command : 'radio',
+						group : 'radio'
+					},
+
+					textfield :
+					{
+						label : lang.textfield.title,
+						command : 'textfield',
+						group : 'textfield'
+					},
+
+					hiddenfield :
+					{
+						label : lang.hidden.title,
+						command : 'hiddenfield',
+						group : 'hiddenfield'
+					},
+
+					imagebutton :
+					{
+						label : lang.image.titleButton,
+						command : 'imagebutton',
+						group : 'imagebutton'
+					},
+
+					button :
+					{
+						label : lang.button.title,
+						command : 'button',
+						group : 'button'
+					},
+
+					select :
+					{
+						label : lang.select.title,
+						command : 'select',
+						group : 'select'
+					},
+
+					textarea :
+					{
+						label : lang.textarea.title,
+						command : 'textarea',
+						group : 'textarea'
+					}
+				});
+		}
+
+		// If the "contextmenu" plugin is loaded, register the listeners.
+		if ( editor.contextMenu )
+		{
+			editor.contextMenu.addListener( function( element )
+				{
+					if ( element && element.hasAscendant( 'form' ) )
+						return { form : CKEDITOR.TRISTATE_OFF };
+				});
+
+			editor.contextMenu.addListener( function( element )
+				{
+					if ( element )
+					{
+						var name = element.getName();
+
+						if ( name == 'select' )
+							return { select : CKEDITOR.TRISTATE_OFF };
+
+						if ( name == 'textarea' )
+							return { textarea : CKEDITOR.TRISTATE_OFF };
+
+						if ( name == 'input' )
+						{
+							var type = element.getAttribute( 'type' );
+
+							if ( type == 'text' || type == 'password' )
+								return { textfield : CKEDITOR.TRISTATE_OFF };
+
+							if ( type == 'button' || type == 'submit' || type == 'reset' )
+								return { button : CKEDITOR.TRISTATE_OFF };
+
+							if ( type == 'checkbox' )
+								return { checkbox : CKEDITOR.TRISTATE_OFF };
+
+							if ( type == 'radio' )
+								return { radio : CKEDITOR.TRISTATE_OFF };
+
+							if ( type == 'image' )
+								return { imagebutton : CKEDITOR.TRISTATE_OFF };
+						}
+
+						if ( name == 'img' && element.getAttribute( '_cke_real_element_type' ) == 'hiddenfield' )
+							return { hiddenfield : CKEDITOR.TRISTATE_OFF };
+					}
+				});
+		}
+	},
+	requires : [ 'image' ]
+} );
+
+if ( CKEDITOR.env.ie )
+{
+	CKEDITOR.dom.element.prototype.hasAttribute = function( name )
+	{
+		var $attr = this.$.attributes.getNamedItem( name );
+
+		if ( this.getName() == 'input' )
+		{
+			switch ( name )
+			{
+				case 'class' :
+					return this.$.className.length > 0;
+				case 'checked' :
+					return !!this.$.checked;
+				case 'value' :
+					var type = this.getAttribute( 'type' );
+					if ( type == 'checkbox' || type == 'radio' )
+						return this.$.value != 'on';
+					break;
+				default:
+			}
+		}
+
+		return !!( $attr && $attr.specified );
+	};
+}
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/enterkey/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/enterkey/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/enterkey/plugin.js	(revision 2000)
@@ -0,0 +1,324 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	CKEDITOR.plugins.add( 'enterkey',
+	{
+		requires : [ 'keystrokes', 'indent' ],
+
+		init : function( editor )
+		{
+			var specialKeys = editor.specialKeys;
+			specialKeys[ 13 ] = enter;
+			specialKeys[ CKEDITOR.SHIFT + 13 ] = shiftEnter;
+		}
+	});
+
+	var forceMode,
+		headerTagRegex = /^h[1-6]$/;
+
+	function shiftEnter( editor )
+	{
+		// On SHIFT+ENTER we want to enforce the mode to be respected, instead
+		// of cloning the current block. (#77)
+		forceMode = 1;
+
+		return enter( editor, editor.config.shiftEnterMode );
+	}
+
+	function enter( editor, mode )
+	{
+		// Only effective within document.
+		if ( editor.mode != 'wysiwyg' )
+			return false;
+
+		if ( !mode )
+			mode = editor.config.enterMode;
+
+		// Use setTimout so the keys get cancelled immediatelly.
+		setTimeout( function()
+			{
+				editor.fire( 'saveSnapshot' );	// Save undo step.
+				if ( mode == CKEDITOR.ENTER_BR || editor.getSelection().getStartElement().hasAscendant( 'pre', true ) )
+					enterBr( editor, mode );
+				else
+					enterBlock( editor, mode );
+
+				forceMode = 0;
+			}, 0 );
+
+		return true;
+	}
+
+	function enterBlock( editor, mode, range )
+	{
+		// Get the range for the current selection.
+		range = range || getRange( editor );
+
+		var doc = range.document;
+
+		// Determine the block element to be used.
+		var blockTag = ( mode == CKEDITOR.ENTER_DIV ? 'div' : 'p' );
+
+		// Split the range.
+		var splitInfo = range.splitBlock( blockTag );
+
+		if ( !splitInfo )
+			return;
+
+		// Get the current blocks.
+		var previousBlock	= splitInfo.previousBlock,
+			nextBlock		= splitInfo.nextBlock;
+
+		var isStartOfBlock	= splitInfo.wasStartOfBlock,
+			isEndOfBlock	= splitInfo.wasEndOfBlock;
+
+		var node;
+
+		// If this is a block under a list item, split it as well. (#1647)
+		if ( nextBlock )
+		{
+			node = nextBlock.getParent();
+			if ( node.is( 'li' ) )
+			{
+				nextBlock.breakParent( node );
+				nextBlock.move( nextBlock.getNext(), true );
+			}
+		}
+		else if ( previousBlock && ( node = previousBlock.getParent() ) && node.is( 'li' ) )
+		{
+			previousBlock.breakParent( node );
+			range.moveToElementEditStart( previousBlock.getNext() );
+			previousBlock.move( previousBlock.getPrevious() );
+		}
+
+		// If we have both the previous and next blocks, it means that the
+		// boundaries were on separated blocks, or none of them where on the
+		// block limits (start/end).
+		if ( !isStartOfBlock && !isEndOfBlock )
+		{
+			// If the next block is an <li> with another list tree as the first
+			// child, we'll need to append a placeholder or the list item
+			// wouldn't be editable. (#1420)
+			if ( nextBlock.is( 'li' ) && ( node = nextBlock.getFirst() )
+					&& node.is && node.is( 'ul', 'ol') )
+				nextBlock.insertBefore( doc.createText( '\xa0' ), node );
+
+			// Move the selection to the end block.
+			if ( nextBlock )
+				range.moveToElementEditStart( nextBlock );
+		}
+		else
+		{
+
+			if ( isStartOfBlock && isEndOfBlock && previousBlock.is( 'li' ) )
+			{
+				editor.execCommand( 'outdent' );
+				return;
+			}
+
+			var newBlock;
+
+			if ( previousBlock )
+			{
+				// Do not enter this block if it's a header tag, or we are in
+				// a Shift+Enter (#77). Create a new block element instead
+				// (later in the code).
+				if ( !forceMode && !headerTagRegex.test( previousBlock.getName() ) )
+				{
+					// Otherwise, duplicate the previous block.
+					newBlock = previousBlock.clone();
+				}
+			}
+			else if ( nextBlock )
+				newBlock = nextBlock.clone();
+
+			if ( !newBlock )
+				newBlock = doc.createElement( blockTag );
+
+			// Recreate the inline elements tree, which was available
+			// before hitting enter, so the same styles will be available in
+			// the new block.
+			var elementPath = splitInfo.elementPath;
+			if ( elementPath )
+			{
+				for ( var i = 0, len = elementPath.elements.length ; i < len ; i++ )
+				{
+					var element = elementPath.elements[ i ];
+
+					if ( element.equals( elementPath.block ) || element.equals( elementPath.blockLimit ) )
+						break;
+
+					if ( CKEDITOR.dtd.$removeEmpty[ element.getName() ] )
+					{
+						element = element.clone();
+						newBlock.moveChildren( element );
+						newBlock.append( element );
+					}
+				}
+			}
+
+			if ( !CKEDITOR.env.ie )
+				newBlock.appendBogus();
+
+			range.insertNode( newBlock );
+
+			// This is tricky, but to make the new block visible correctly
+			// we must select it.
+			// The previousBlock check has been included because it may be
+			// empty if we have fixed a block-less space (like ENTER into an
+			// empty table cell).
+			if ( CKEDITOR.env.ie && isStartOfBlock && ( !isEndOfBlock || !previousBlock.getChildCount() ) )
+			{
+				// Move the selection to the new block.
+				range.moveToElementEditStart( isEndOfBlock ? previousBlock : newBlock );
+				range.select();
+			}
+
+			// Move the selection to the new block.
+			range.moveToElementEditStart( isStartOfBlock && !isEndOfBlock ? nextBlock : newBlock );
+		}
+
+		if ( !CKEDITOR.env.ie )
+		{
+			if ( nextBlock )
+			{
+				// If we have split the block, adds a temporary span at the
+				// range position and scroll relatively to it.
+				var tmpNode = doc.createElement( 'span' );
+
+				// We need some content for Safari.
+				tmpNode.setHtml( '&nbsp;' );
+
+				range.insertNode( tmpNode );
+				tmpNode.scrollIntoView();
+				range.deleteContents();
+			}
+			else
+			{
+				// We may use the above scroll logic for the new block case
+				// too, but it gives some weird result with Opera.
+				newBlock.scrollIntoView();
+			}
+		}
+
+		range.select();
+	}
+
+	function enterBr( editor, mode )
+	{
+		// Get the range for the current selection.
+		var range = getRange( editor ),
+			doc = range.document;
+
+		// Determine the block element to be used.
+		var blockTag = ( mode == CKEDITOR.ENTER_DIV ? 'div' : 'p' );
+
+		var isEndOfBlock = range.checkEndOfBlock();
+
+		var elementPath = new CKEDITOR.dom.elementPath( editor.getSelection().getStartElement() );
+
+		var startBlock = elementPath.block,
+			startBlockTag = startBlock && elementPath.block.getName();
+
+		var isPre = false;
+
+		if ( !forceMode && startBlockTag == 'li' )
+		{
+			enterBlock( editor, mode, range );
+			return;
+		}
+
+		// If we are at the end of a header block.
+		if ( !forceMode && isEndOfBlock && headerTagRegex.test( startBlockTag ) )
+		{
+			// Insert a <br> after the current paragraph.
+			doc.createElement( 'br' ).insertAfter( startBlock );
+
+			// A text node is required by Gecko only to make the cursor blink.
+			if ( CKEDITOR.env.gecko )
+				doc.createText( '' ).insertAfter( startBlock );
+
+			// IE has different behaviors regarding position.
+			range.setStartAt( startBlock.getNext(), CKEDITOR.env.ie ? CKEDITOR.POSITION_BEFORE_START : CKEDITOR.POSITION_AFTER_START );
+		}
+		else
+		{
+			var lineBreak;
+
+			isPre = ( startBlockTag == 'pre' );
+
+			if ( isPre )
+				lineBreak = doc.createText( CKEDITOR.env.ie ? '\r' : '\n' );
+			else
+				lineBreak = doc.createElement( 'br' );
+
+			range.deleteContents();
+			range.insertNode( lineBreak );
+
+			// A text node is required by Gecko only to make the cursor blink.
+			// We need some text inside of it, so the bogus <br> is properly
+			// created.
+			if ( !CKEDITOR.env.ie )
+				doc.createText( '\ufeff' ).insertAfter( lineBreak );
+
+			// If we are at the end of a block, we must be sure the bogus node is available in that block.
+			if ( isEndOfBlock && !CKEDITOR.env.ie )
+				lineBreak.getParent().appendBogus();
+
+			// Now we can remove the text node contents, so the caret doesn't
+			// stop on it.
+			if ( !CKEDITOR.env.ie )
+				lineBreak.getNext().$.nodeValue = '';
+			// IE has different behavior regarding position.
+			if ( CKEDITOR.env.ie )
+				range.setStartAt( lineBreak, CKEDITOR.POSITION_AFTER_END );
+			else
+				range.setStartAt( lineBreak.getNext(), CKEDITOR.POSITION_AFTER_START );
+
+			// Scroll into view, for non IE.
+			if ( !CKEDITOR.env.ie )
+			{
+				var dummy = null;
+
+				// BR is not positioned in Opera and Webkit.
+				if ( !CKEDITOR.env.gecko )
+				{
+					dummy = doc.createElement( 'span' );
+					// We need have some contents for Webkit to position it
+					// under parent node. ( #3681)
+					dummy.setHtml('&nbsp;');
+				}
+				else
+					dummy = doc.createElement( 'br' );
+
+				dummy.insertBefore( lineBreak.getNext() );
+				dummy.scrollIntoView();
+				dummy.remove();
+			}
+		}
+
+		// This collapse guarantees the cursor will be blinking.
+		range.collapse( true );
+
+		range.select( isPre );
+	}
+
+	function getRange( editor )
+	{
+		// Get the selection ranges.
+		var ranges = editor.getSelection().getRanges();
+
+		// Delete the contents of all ranges except the first one.
+		for ( var i = ranges.length - 1 ; i > 0 ; i-- )
+		{
+			ranges[ i ].deleteContents();
+		}
+
+		// Return the first range.
+		return ranges[ 0 ];
+	}
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/table/dialogs/table.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/table/dialogs/table.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/table/dialogs/table.js	(revision 2000)
@@ -0,0 +1,549 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	var widthPattern = /^(\d+(?:\.\d+)?)(px|%)$/,
+		heightPattern = /^(\d+(?:\.\d+)?)px$/;
+
+	var commitValue = function( data )
+	{
+		var id = this.id;
+		if ( !data.info )
+			data.info = {};
+		data.info[id] = this.getValue();
+	};
+
+	function tableDialog( editor, command )
+	{
+		var makeElement = function( name ){ return new CKEDITOR.dom.element( name, editor.document ); };
+
+		return {
+			title : editor.lang.table.title,
+			minWidth : 310,
+			minHeight : CKEDITOR.env.ie ? 310 : 280,
+			onShow : function()
+			{
+				// Detect if there's a selected table.
+				var selection = editor.getSelection(),
+					ranges = selection.getRanges(),
+					selectedTable = null;
+
+				var rowsInput = this.getContentElement( 'info', 'txtRows' ),
+					colsInput = this.getContentElement( 'info', 'txtCols' ),
+					widthInput = this.getContentElement( 'info', 'txtWidth' );
+				if ( command == 'tableProperties' )
+				{
+					if ( ( selectedTable = editor.getSelection().getSelectedElement() ) )
+					{
+						if ( selectedTable.getName() != 'table' )
+							selectedTable = null;
+					}
+					else if ( ranges.length > 0 )
+					{
+						var rangeRoot = ranges[0].getCommonAncestor( true );
+						selectedTable = rangeRoot.getAscendant( 'table', true );
+					}
+
+					// Save a reference to the selected table, and push a new set of default values.
+					this._.selectedElement = selectedTable;
+				}
+
+				// Enable, disable and select the row, cols, width fields.
+				if ( selectedTable )
+				{
+					this.setupContent( selectedTable );
+					rowsInput && rowsInput.disable();
+					colsInput && colsInput.disable();
+					widthInput && widthInput.select();
+				}
+				else
+				{
+					rowsInput && rowsInput.enable();
+					colsInput && colsInput.enable();
+					rowsInput && rowsInput.select();
+				}
+			},
+			onOk : function()
+			{
+				var table = this._.selectedElement || makeElement( 'table' ),
+					me = this,
+					data = {};
+
+				this.commitContent( data, table );
+
+				if ( data.info )
+				{
+					var info = data.info;
+
+					// Generate the rows and cols.
+					if ( !this._.selectedElement )
+					{
+						var tbody = table.append( makeElement( 'tbody' ) ),
+							rows = parseInt( info.txtRows, 10 ) || 0,
+							cols = parseInt( info.txtCols, 10 ) || 0;
+
+						for ( var i = 0 ; i < rows ; i++ )
+						{
+							var row = tbody.append( makeElement( 'tr' ) );
+							for ( var j = 0 ; j < cols ; j++ )
+							{
+								var cell = row.append( makeElement( 'td' ) );
+								if ( !CKEDITOR.env.ie )
+									cell.append( makeElement( 'br' ) );
+							}
+						}
+					}
+
+					// Modify the table headers. Depends on having rows and cols generated
+					// correctly so it can't be done in commit functions.
+
+					// Should we make a <thead>?
+					var headers = info.selHeaders;
+					if ( !table.$.tHead && ( headers == 'row' || headers == 'both' ) )
+					{
+						var thead = new CKEDITOR.dom.element( table.$.createTHead() );
+						tbody = table.getElementsByTag( 'tbody' ).getItem( 0 );
+						var theRow = tbody.getElementsByTag( 'tr' ).getItem( 0 );
+
+						// Change TD to TH:
+						for ( i = 0 ; i < theRow.getChildCount() ; i++ )
+						{
+							var th = theRow.getChild( i );
+							if ( th.type == CKEDITOR.NODE_ELEMENT )
+							{
+								th.renameNode( 'th' );
+								th.setAttribute( 'scope', 'col' );
+							}
+						}
+						thead.append( theRow.remove() );
+					}
+
+					if ( table.$.tHead !== null && !( headers == 'row' || headers == 'both' ) )
+					{
+						// Move the row out of the THead and put it in the TBody:
+						thead = new CKEDITOR.dom.element( table.$.tHead );
+						tbody = table.getElementsByTag( 'tbody' ).getItem( 0 );
+
+						var previousFirstRow = tbody.getFirst();
+						while ( thead.getChildCount() > 0 )
+						{
+							theRow = thead.getFirst();
+							for ( i = 0; i < theRow.getChildCount() ; i++ )
+							{
+								var newCell = theRow.getChild( i );
+								if ( newCell.type == CKEDITOR.NODE_ELEMENT )
+								{
+									newCell.renameNode( 'td' );
+									newCell.removeAttribute( 'scope' );
+								}
+							}
+							theRow.insertBefore( previousFirstRow );
+						}
+						thead.remove();
+					}
+
+					// Should we make all first cells in a row TH?
+					if ( !this.hasColumnHeaders && ( headers == 'col' || headers == 'both' ) )
+					{
+						for( row = 0 ; row < table.$.rows.length ; row++ )
+						{
+							newCell = new CKEDITOR.dom.element( table.$.rows[ row ].cells[ 0 ] );
+							newCell.renameNode( 'th' );
+							newCell.setAttribute( 'scope', 'row' );
+						}
+					}
+
+					// Should we make all first TH-cells in a row make TD? If 'yes' we do it the other way round :-)
+					if ( ( this.hasColumnHeaders ) && !( headers == 'col' || headers == 'both' ) )
+					{
+						for( i = 0 ; i < table.$.rows.length ; i++ )
+						{
+							row = new CKEDITOR.dom.element( table.$.rows[i] );
+							if ( row.getParent().getName() == 'tbody' )
+							{
+								newCell = new CKEDITOR.dom.element( row.$.cells[0] );
+								newCell.renameNode( 'td' );
+								newCell.removeAttribute( 'scope' );
+							}
+						}
+					}
+
+					// Set the width and height.
+					var styles = [];
+					if ( info.txtHeight )
+						styles.push( 'height:' + info.txtHeight + 'px' );
+					if ( info.txtWidth )
+					{
+						var type = info.cmbWidthType || 'pixels';
+						styles.push( 'width:' + info.txtWidth + ( type == 'pixels' ? 'px' : '%' ) );
+					}
+					styles = styles.join( ';' );
+					if ( styles )
+						table.$.style.cssText = styles;
+					else
+						table.removeAttribute( 'style' );
+				}
+
+				// Insert the table element if we're creating one.
+				if ( !this._.selectedElement )
+					editor.insertElement( table );
+
+				return true;
+			},
+			contents : [
+				{
+					id : 'info',
+					label : editor.lang.table.title,
+					elements :
+					[
+						{
+							type : 'hbox',
+							widths : [ null, null ],
+							styles : [ 'vertical-align:top' ],
+							children :
+							[
+								{
+									type : 'vbox',
+									padding : 0,
+									children :
+									[
+										{
+											type : 'text',
+											id : 'txtRows',
+											'default' : 3,
+											label : editor.lang.table.rows,
+											style : 'width:5em',
+											validate : function()
+											{
+												var pass = true,
+													value = this.getValue();
+												pass = pass && CKEDITOR.dialog.validate.integer()( value )
+													&& value > 0;
+												if ( !pass )
+												{
+													alert( editor.lang.table.invalidRows );
+													this.select();
+												}
+												return pass;
+											},
+											setup : function( selectedElement )
+											{
+												this.setValue( selectedElement.$.rows.length );
+											},
+											commit : commitValue
+										},
+										{
+											type : 'text',
+											id : 'txtCols',
+											'default' : 2,
+											label : editor.lang.table.columns,
+											style : 'width:5em',
+											validate : function()
+											{
+												var pass = true,
+													value = this.getValue();
+												pass = pass && CKEDITOR.dialog.validate.integer()( value )
+													&& value > 0;
+												if ( !pass )
+												{
+													alert( editor.lang.table.invalidCols );
+													this.select();
+												}
+												return pass;
+											},
+											setup : function( selectedTable )
+											{
+												this.setValue( selectedTable.$.rows[0].cells.length);
+											},
+											commit : commitValue
+										},
+										{
+											type : 'html',
+											html : '&nbsp;'
+										},
+										{
+											type : 'select',
+											id : 'selHeaders',
+											'default' : '',
+											label : editor.lang.table.headers,
+											items :
+											[
+												[ editor.lang.table.headersNone, '' ],
+												[ editor.lang.table.headersRow, 'row' ],
+												[ editor.lang.table.headersColumn, 'col' ],
+												[ editor.lang.table.headersBoth, 'both' ]
+											],
+											setup : function( selectedTable )
+											{
+												// Fill in the headers field.
+												var dialog = this.getDialog();
+												dialog.hasColumnHeaders = true;
+
+												// Check if all the first cells in every row are TH
+												for ( var row = 0 ; row < selectedTable.$.rows.length ; row++ )
+												{
+													// If just one cell isn't a TH then it isn't a header column
+													if ( selectedTable.$.rows[row].cells[0].nodeName.toLowerCase() != 'th' )
+													{
+														dialog.hasColumnHeaders = false;
+														break;
+													}
+												}
+
+												// Check if the table contains <thead>.
+												if ( ( selectedTable.$.tHead !== null) )
+													this.setValue( dialog.hasColumnHeaders ? 'both' : 'row' );
+												else
+													this.setValue( dialog.hasColumnHeaders ? 'col' : '' );
+											},
+											commit : commitValue
+										},
+										{
+											type : 'text',
+											id : 'txtBorder',
+											'default' : 1,
+											label : editor.lang.table.border,
+											style : 'width:3em',
+											validate : CKEDITOR.dialog.validate['number']( editor.lang.table.invalidBorder ),
+											setup : function( selectedTable )
+											{
+												this.setValue( selectedTable.getAttribute( 'border' ) || '' );
+											},
+											commit : function( data, selectedTable )
+											{
+												if ( this.getValue() )
+													selectedTable.setAttribute( 'border', this.getValue() );
+												else
+													selectedTable.removeAttribute( 'border' );
+											}
+										},
+										{
+											id : 'cmbAlign',
+											type : 'select',
+											'default' : '',
+											label : editor.lang.table.align,
+											items :
+											[
+												[ editor.lang.table.alignNotSet , ''],
+												[ editor.lang.table.alignLeft , 'left'],
+												[ editor.lang.table.alignCenter , 'center'],
+												[ editor.lang.table.alignRight , 'right']
+											],
+											setup : function( selectedTable )
+											{
+												this.setValue( selectedTable.getAttribute( 'align' ) || '' );
+											},
+											commit : function( data, selectedTable )
+											{
+												if ( this.getValue() )
+													selectedTable.setAttribute( 'align', this.getValue() );
+												else
+													selectedTable.removeAttribute( 'align' );
+											}
+										}
+									]
+								},
+								{
+									type : 'vbox',
+									padding : 0,
+									children :
+									[
+										{
+											type : 'hbox',
+											widths : [ '5em' ],
+											children :
+											[
+												{
+													type : 'text',
+													id : 'txtWidth',
+													style : 'width:5em',
+													label : editor.lang.table.width,
+													'default' : 200,
+													validate : CKEDITOR.dialog.validate['number']( editor.lang.table.invalidWidth ),
+													setup : function( selectedTable )
+													{
+														var widthMatch = widthPattern.exec( selectedTable.$.style.width );
+														if ( widthMatch )
+															this.setValue( widthMatch[1] );
+													},
+													commit : commitValue
+												},
+												{
+													id : 'cmbWidthType',
+													type : 'select',
+													label : '&nbsp;',
+													'default' : 'pixels',
+													items :
+													[
+														[ editor.lang.table.widthPx , 'pixels'],
+														[ editor.lang.table.widthPc , 'percents']
+													],
+													setup : function( selectedTable )
+													{
+														var widthMatch = widthPattern.exec( selectedTable.$.style.width );
+														if ( widthMatch )
+															this.setValue( widthMatch[2] == 'px' ? 'pixels' : 'percents' );
+													},
+													commit : commitValue
+												}
+											]
+										},
+										{
+											type : 'hbox',
+											widths : [ '5em' ],
+											children :
+											[
+												{
+													type : 'text',
+													id : 'txtHeight',
+													style : 'width:5em',
+													label : editor.lang.table.height,
+													'default' : '',
+													validate : CKEDITOR.dialog.validate['number']( editor.lang.table.invalidHeight ),
+													setup : function( selectedTable )
+													{
+														var heightMatch = heightPattern.exec( selectedTable.$.style.height );
+														if ( heightMatch )
+															this.setValue( heightMatch[1] );
+													},
+													commit : commitValue
+												},
+												{
+													type : 'html',
+													html : '<br />' + editor.lang.table.widthPx
+												}
+											]
+										},
+										{
+											type : 'html',
+											html : '&nbsp;'
+										},
+										{
+											type : 'text',
+											id : 'txtCellSpace',
+											style : 'width:3em',
+											label : editor.lang.table.cellSpace,
+											'default' : 1,
+											validate : CKEDITOR.dialog.validate['number']( editor.lang.table.invalidCellSpacing ),
+											setup : function( selectedTable )
+											{
+												this.setValue( selectedTable.getAttribute( 'cellSpacing' ) || '' );
+											},
+											commit : function( data, selectedTable )
+											{
+												if ( this.getValue() )
+													selectedTable.setAttribute( 'cellSpacing', this.getValue() );
+												else
+													selectedTable.removeAttribute( 'cellSpacing' );
+											}
+										},
+										{
+											type : 'text',
+											id : 'txtCellPad',
+											style : 'width:3em',
+											label : editor.lang.table.cellPad,
+											'default' : 1,
+											validate : CKEDITOR.dialog.validate['number']( editor.lang.table.invalidCellPadding ),
+											setup : function( selectedTable )
+											{
+												this.setValue( selectedTable.getAttribute( 'cellPadding' ) || '' );
+											},
+											commit : function( data, selectedTable )
+											{
+												if ( this.getValue() )
+													selectedTable.setAttribute( 'cellPadding', this.getValue() );
+												else
+													selectedTable.removeAttribute( 'cellPadding' );
+											}
+										}
+									]
+								}
+							]
+						},
+						{
+							type : 'html',
+							align : 'right',
+							html : ''
+						},
+						{
+							type : 'vbox',
+							padding : 0,
+							children :
+							[
+								{
+									type : 'text',
+									id : 'txtCaption',
+									label : editor.lang.table.caption,
+									setup : function( selectedTable )
+									{
+										var nodeList = selectedTable.getElementsByTag( 'caption' );
+										if ( nodeList.count() > 0 )
+										{
+											var caption = nodeList.getItem( 0 );
+											caption = ( caption.getChild( 0 ) && caption.getChild( 0 ).getText() ) || '';
+											caption = CKEDITOR.tools.trim( caption );
+											this.setValue( caption );
+										}
+									},
+									commit : function( data, table )
+									{
+										var caption = this.getValue(),
+											captionElement = table.getElementsByTag( 'caption' );
+										if ( caption )
+										{
+											if ( captionElement.count() > 0 )
+											{
+												captionElement = captionElement.getItem( 0 );
+												captionElement.setHtml( '' );
+											}
+											else
+											{
+												captionElement = new CKEDITOR.dom.element( 'caption', editor.document );
+												if ( table.getChildCount() )
+													captionElement.insertBefore( table.getFirst() );
+												else
+													captionElement.appendTo( table );
+											}
+											captionElement.append( new CKEDITOR.dom.text( caption, editor.document ) );
+										}
+										else if ( captionElement.count() > 0 )
+										{
+											for ( var i = captionElement.count() - 1 ; i >= 0 ; i-- )
+												captionElement.getItem( i ).remove();
+										}
+									}
+								},
+								{
+									type : 'text',
+									id : 'txtSummary',
+									label : editor.lang.table.summary,
+									setup : function( selectedTable )
+									{
+										this.setValue( selectedTable.getAttribute( 'summary' ) || '' );
+									},
+									commit : function( data, selectedTable )
+									{
+										if ( this.getValue() )
+											selectedTable.setAttribute( 'summary', this.getValue() );
+									}
+								}
+							]
+						}
+					]
+				}
+			]
+		};
+	}
+
+	CKEDITOR.dialog.add( 'table', function( editor )
+		{
+			return tableDialog( editor, 'table' );
+		} );
+	CKEDITOR.dialog.add( 'tableProperties', function( editor )
+		{
+			return tableDialog( editor, 'tableProperties' );
+		} );
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/table/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/table/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/table/plugin.js	(revision 2000)
@@ -0,0 +1,70 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'table',
+{
+	init : function( editor )
+	{
+		var table = CKEDITOR.plugins.table,
+			lang = editor.lang.table;
+
+		editor.addCommand( 'table', new CKEDITOR.dialogCommand( 'table' ) );
+		editor.addCommand( 'tableProperties', new CKEDITOR.dialogCommand( 'tableProperties' ) );
+
+		editor.ui.addButton( 'Table',
+			{
+				label : lang.toolbar,
+				command : 'table'
+			});
+
+		CKEDITOR.dialog.add( 'table', this.path + 'dialogs/table.js' );
+		CKEDITOR.dialog.add( 'tableProperties', this.path + 'dialogs/table.js' );
+
+		// If the "menu" plugin is loaded, register the menu items.
+		if ( editor.addMenuItems )
+		{
+			editor.addMenuItems(
+				{
+					table :
+					{
+						label : lang.menu,
+						command : 'tableProperties',
+						group : 'table',
+						order : 5
+					},
+
+					tabledelete :
+					{
+						label : lang.deleteTable,
+						command : 'tableDelete',
+						group : 'table',
+						order : 1
+					}
+				} );
+		}
+
+		// If the "contextmenu" plugin is loaded, register the listeners.
+		if ( editor.contextMenu )
+		{
+			editor.contextMenu.addListener( function( element, selection )
+				{
+					if ( !element )
+						return null;
+
+					var isTable	= element.is( 'table' ) || element.hasAscendant( 'table' );
+
+					if ( isTable )
+					{
+						return {
+							tabledelete : CKEDITOR.TRISTATE_OFF,
+							table : CKEDITOR.TRISTATE_OFF
+						};
+					}
+
+					return null;
+				} );
+		}
+	}
+} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/format/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/format/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/format/plugin.js	(revision 2000)
@@ -0,0 +1,191 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'format',
+{
+	requires : [ 'richcombo', 'styles' ],
+
+	init : function( editor )
+	{
+		var config = editor.config,
+			lang = editor.lang.format;
+
+		// Gets the list of tags from the settings.
+		var tags = config.format_tags.split( ';' );
+
+		// Create style objects for all defined styles.
+		var styles = {};
+		for ( var i = 0 ; i < tags.length ; i++ )
+		{
+			var tag = tags[ i ];
+			styles[ tag ] = new CKEDITOR.style( config[ 'format_' + tag ] );
+		}
+
+		editor.ui.addRichCombo( 'Format',
+			{
+				label : lang.label,
+				title : lang.panelTitle,
+				voiceLabel : lang.voiceLabel,
+				className : 'cke_format',
+				multiSelect : false,
+
+				panel :
+				{
+					css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ].concat( config.contentsCss ),
+					voiceLabel : lang.panelVoiceLabel
+				},
+
+				init : function()
+				{
+					this.startGroup( lang.panelTitle );
+
+					for ( var tag in styles )
+					{
+						var label = lang[ 'tag_' + tag ];
+
+						// Add the tag entry to the panel list.
+						this.add( tag, '<' + tag + '>' + label + '</' + tag + '>', label );
+					}
+				},
+
+				onClick : function( value )
+				{
+					editor.focus();
+					editor.fire( 'saveSnapshot' );
+
+					styles[ value ].apply( editor.document );
+
+					editor.fire( 'saveSnapshot' );
+				},
+
+				onRender : function()
+				{
+					editor.on( 'selectionChange', function( ev )
+						{
+							var currentTag = this.getValue();
+
+							var elementPath = ev.data.path;
+
+							for ( var tag in styles )
+							{
+								if ( styles[ tag ].checkActive( elementPath ) )
+								{
+									if ( tag != currentTag )
+										this.setValue( tag, editor.lang.format[ 'tag_' + tag ] );
+									return;
+								}
+							}
+
+							// If no styles match, just empty it.
+							this.setValue( '' );
+						},
+						this);
+				}
+			});
+	}
+});
+
+/**
+ * A list of semi colon separated style names (by default tags) representing
+ * the style definition for each entry to be displayed in the Format combo in
+ * the toolbar. Each entry must have its relative definition configuration in a
+ * setting named "format_(tagName)". For example, the "p" entry has its
+ * definition taken from config.format_p.
+ * @type String
+ * @default 'p;h1;h2;h3;h4;h5;h6;pre;address;div'
+ * @example
+ * config.format_tags = 'p;h2;h3;pre'
+ */
+CKEDITOR.config.format_tags = 'p;h1;h2;h3;h4;h5;h6;pre;address;div';
+
+/**
+ * The style definition to be used to apply the "Normal" format.
+ * @type Object
+ * @default { element : 'p' }
+ * @example
+ * config.format_p = { element : 'p', attributes : { class : 'normalPara' } };
+ */
+CKEDITOR.config.format_p = { element : 'p' };
+
+/**
+ * The style definition to be used to apply the "Normal (DIV)" format.
+ * @type Object
+ * @default { element : 'div' }
+ * @example
+ * config.format_div = { element : 'div', attributes : { class : 'normalDiv' } };
+ */
+CKEDITOR.config.format_div = { element : 'div' };
+
+/**
+ * The style definition to be used to apply the "Formatted" format.
+ * @type Object
+ * @default { element : 'pre' }
+ * @example
+ * config.format_pre = { element : 'pre', attributes : { class : 'code' } };
+ */
+CKEDITOR.config.format_pre = { element : 'pre' };
+
+/**
+ * The style definition to be used to apply the "Address" format.
+ * @type Object
+ * @default { element : 'address' }
+ * @example
+ * config.format_address = { element : 'address', attributes : { class : 'styledAddress' } };
+ */
+CKEDITOR.config.format_address = { element : 'address' };
+
+/**
+ * The style definition to be used to apply the "Heading 1" format.
+ * @type Object
+ * @default { element : 'h1' }
+ * @example
+ * config.format_h1 = { element : 'h1', attributes : { class : 'contentTitle1' } };
+ */
+CKEDITOR.config.format_h1 = { element : 'h1' };
+
+/**
+ * The style definition to be used to apply the "Heading 1" format.
+ * @type Object
+ * @default { element : 'h2' }
+ * @example
+ * config.format_h2 = { element : 'h2', attributes : { class : 'contentTitle2' } };
+ */
+CKEDITOR.config.format_h2 = { element : 'h2' };
+
+/**
+ * The style definition to be used to apply the "Heading 1" format.
+ * @type Object
+ * @default { element : 'h3' }
+ * @example
+ * config.format_h3 = { element : 'h3', attributes : { class : 'contentTitle3' } };
+ */
+CKEDITOR.config.format_h3 = { element : 'h3' };
+
+/**
+ * The style definition to be used to apply the "Heading 1" format.
+ * @type Object
+ * @default { element : 'h4' }
+ * @example
+ * config.format_h4 = { element : 'h4', attributes : { class : 'contentTitle4' } };
+ */
+CKEDITOR.config.format_h4 = { element : 'h4' };
+
+/**
+ * The style definition to be used to apply the "Heading 1" format.
+ * @type Object
+ * @default { element : 'h5' }
+ * @example
+ * config.format_h5 = { element : 'h5', attributes : { class : 'contentTitle5' } };
+ */
+CKEDITOR.config.format_h5 = { element : 'h5' };
+
+/**
+ * The style definition to be used to apply the "Heading 1" format.
+ * @type Object
+ * @default { element : 'h6' }
+ * @example
+ * config.format_h6 = { element : 'h6', attributes : { class : 'contentTitle6' } };
+ */
+CKEDITOR.config.format_h6 = { element : 'h6' };
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/dialogs/wsc.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/dialogs/wsc.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/dialogs/wsc.css	(revision 2000)
@@ -0,0 +1,83 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+html, body
+{
+	background-color: transparent;
+	margin: 0px;
+	padding: 0px;
+}
+
+body
+{
+	padding: 10px;
+}
+
+body, td, input, select, textarea
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
+}
+
+.midtext
+{
+	padding:0px;
+	margin:10px;
+}
+
+.midtext p
+{
+	padding:0px;
+	margin:10px;
+}
+
+.Button
+{
+	border: #737357 1px solid;
+	color: #3b3b1f;
+	background-color: #c7c78f;
+}
+
+.PopupTabArea
+{
+	color: #737357;
+	background-color: #e3e3c7;
+}
+
+.PopupTitleBorder
+{
+	border-bottom: #d5d59d 1px solid;
+}
+.PopupTabEmptyArea
+{
+	padding-left: 10px;
+	border-bottom: #d5d59d 1px solid;
+}
+
+.PopupTab, .PopupTabSelected
+{
+	border-right: #d5d59d 1px solid;
+	border-top: #d5d59d 1px solid;
+	border-left: #d5d59d 1px solid;
+	padding: 3px 5px 3px 5px;
+	color: #737357;
+}
+
+.PopupTab
+{
+	margin-top: 1px;
+	border-bottom: #d5d59d 1px solid;
+	cursor: pointer;
+	cursor: hand;
+}
+
+.PopupTabSelected
+{
+	font-weight: bold;
+	cursor: default;
+	padding-top: 4px;
+	border-bottom: #f1f1e3 1px solid;
+	background-color: #f1f1e3;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/dialogs/wsc.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/dialogs/wsc.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/dialogs/wsc.js	(revision 2000)
@@ -0,0 +1,169 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'checkspell', function( editor )
+{
+	var number = CKEDITOR.tools.getNextNumber(),
+		iframeId = 'cke_frame_' + number,
+		textareaId = 'cke_data_' + number,
+		errorBoxId = 'cke_error_' + number,
+		interval,
+		protocol = document.location.protocol || 'http:',
+		errorMsg = editor.lang.spellCheck.notAvailable;
+
+	var pasteArea = '<textarea'+
+			' style="display: none"' +
+			' id="' + textareaId + '"' +
+			' rows="10"' +
+			' cols="40">' +
+		' </textarea><div' +
+			' id="' + errorBoxId + '"' +
+			' style="display:none;color:red;font-size:16px;font-weight:bold;padding-top:160px;text-align:center;z-index:11;">' +
+		'</div><iframe' +
+			' src=""' +
+			' style="width:485px;background-color:#f1f1e3;height:380px"' +
+			' frameborder="0"' +
+			' name="' + iframeId + '"' +
+			' id="' + iframeId + '"' +
+			' allowtransparency="1">' +
+		'</iframe>';
+
+	var wscCoreUrl = editor.config.wsc_customLoaderScript || ( protocol +
+			'//loader.spellchecker.net/sproxy_fck/sproxy.php'
+			+ '?plugin=fck2'
+			+ '&customerid=' + editor.config.wsc_customerId
+			+ '&cmd=script&doc=wsc&schema=22'
+		);
+
+	if ( editor.config.wsc_customLoaderScript )
+		errorMsg += '<p style="color:#000;font-size:11px;font-weight: normal;text-align:center;padding-top:10px">' +
+			editor.lang.spellCheck.errorLoading.replace( /%s/g, editor.config.wsc_customLoaderScript ) + '</p>';
+
+	function burnSpelling( dialog, errorMsg )
+	{
+		var i = 0;
+		return function ()
+		{
+			if ( typeof( window.doSpell ) == 'function' )
+			{
+				//Call from window.setInteval expected at once.
+				if ( typeof( interval ) != 'undefined' )
+					window.clearInterval( interval );
+
+				initAndSpell( dialog );
+			}
+			else if ( i++ == 180 )								// Timeout: 180 * 250ms = 45s.
+				window._cancelOnError( errorMsg );
+		};
+	}
+
+	window._cancelOnError = function( m )
+	{
+		if ( typeof( window.WSC_Error ) == 'undefined' )
+		{
+			CKEDITOR.document.getById( iframeId ).setStyle( 'display', 'none' );
+			var errorBox = CKEDITOR.document.getById( errorBoxId );
+			errorBox.setStyle( 'display', 'block' );
+			errorBox.setHtml( m || editor.lang.spellCheck.notAvailable );
+		}
+	};
+
+	function initAndSpell( dialog )
+	{
+		var LangComparer = new window._SP_FCK_LangCompare(),							// Language abbr standarts comparer.
+			pluginPath = CKEDITOR.getUrl( editor.plugins.wsc.path + 'dialogs/' ),			// Service paths corecting/preparing.
+			framesetPath = pluginPath + 'tmpFrameset.html';
+
+		// global var is used in FCK specific core
+		// change on equal var used in fckplugin.js
+		window.gFCKPluginName = 'wsc';
+
+		LangComparer.setDefaulLangCode( editor.config.defaultLanguage );
+
+		window.doSpell({
+			ctrl : textareaId,
+			lang : LangComparer.getSPLangCode( editor.langCode ),
+			winType : iframeId,		// If not defined app will run on winpopup.
+
+			// Callback binding section.
+			onCancel : function()
+			{
+				dialog.hide();
+			},
+			onFinish : function( dT )
+			{
+				editor.focus();
+				dialog.getParentEditor().setData( dT.value );
+				dialog.hide();
+			},
+
+			// Some manipulations with client static pages.
+			staticFrame : framesetPath,
+			framesetPath : framesetPath,
+			iframePath : pluginPath + 'ciframe.html',
+
+			// Styles defining.
+			schemaURI : pluginPath + 'wsc.css'
+		});
+
+		// Hide user message console (if application was loaded more then after timeout).
+		CKEDITOR.document.getById( errorBoxId ).setStyle( 'display', 'none' );
+		CKEDITOR.document.getById( iframeId ).setStyle( 'display', 'block' );
+	}
+
+	return {
+		title : editor.lang.spellCheck.title,
+		minWidth : 485,
+		minHeight : 380,
+		buttons : [ CKEDITOR.dialog.cancelButton ],
+		onShow : function()
+		{
+			var contentArea = this.getContentElement( 'general', 'content' ).getElement();
+			contentArea.setHtml( pasteArea );
+
+			if ( typeof( window.doSpell ) != 'function' )
+			{
+				// Load script.
+				CKEDITOR.document.getHead().append(
+					CKEDITOR.document.createElement( 'script',
+						{
+							attributes :
+								{
+									type : 'text/javascript',
+									src : wscCoreUrl
+								}
+						})
+				);
+			}
+
+			var sData = editor.getData();											// Get the data to be checked.
+			CKEDITOR.document.getById( textareaId ).setValue( sData );
+
+			interval = window.setInterval( burnSpelling( this, errorMsg ), 250 );
+		},
+		onHide : function()
+		{
+			window.ooo = undefined;
+			window.int_framsetLoaded = undefined;
+			window.framesetLoaded = undefined;
+			window.is_window_opened = false;
+		},
+		contents : [
+			{
+				id : 'general',
+				label : editor.lang.spellCheck.title,
+				padding : 0,
+				elements : [
+					{
+						type : 'html',
+						id : 'content',
+						style : 'width:485;height:380px',
+						html : '<div></div>'
+					}
+				]
+			}
+		]
+	};
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/dialogs/ciframe.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/dialogs/ciframe.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/dialogs/ciframe.html	(revision 2000)
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html>
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<script type="text/javascript">
+
+function gup( name )
+{
+	name = name.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' ) ;
+	var regexS = '[\\?&]' + name + '=([^&#]*)' ;
+	var regex = new RegExp( regexS ) ;
+	var results = regex.exec( window.location.href ) ;
+
+	if( results )
+		return results[ 1 ] ;
+	else
+		return '' ;
+}
+
+var interval;
+
+function sendData2Master()
+{
+	var destination = window.parent.parent ;
+	try
+	{
+		if ( destination.XDTMaster )
+		{
+			var t = destination.XDTMaster.read( [ gup( 'cmd' ), gup( 'data' ) ] ) ;
+			window.clearInterval( interval ) ;
+		}
+	}
+	catch (e) {}
+}
+
+function onLoad()
+{
+	interval = window.setInterval( sendData2Master, 100 );
+}
+
+</script>
+</head>
+<body onload="onLoad()"><p></p></body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/dialogs/tmpFrameset.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/dialogs/tmpFrameset.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/dialogs/tmpFrameset.html	(revision 2000)
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html>
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<script type="text/javascript">
+
+function doLoadScript( url )
+{
+	if ( !url )
+		return false ;
+
+	var s = document.createElement( "script" ) ;
+	s.type = "text/javascript" ;
+	s.src = url ;
+	document.getElementsByTagName( "head" )[ 0 ].appendChild( s ) ;
+
+	return true ;
+}
+
+var opener;
+function tryLoad()
+{
+	opener = window.parent;
+
+	// get access to global parameters
+	var oParams = window.opener.oldFramesetPageParams;
+
+	// make frameset rows string prepare
+	var sFramesetRows = ( parseInt( oParams.firstframeh, 10 ) || '30') + ",*," + ( parseInt( oParams.thirdframeh, 10 ) || '150' ) + ',0' ;
+	document.getElementById( 'itFrameset' ).rows = sFramesetRows ;
+
+	// dynamic including init frames and crossdomain transport code
+	// from config sproxy_js_frameset url
+	var addScriptUrl = oParams.sproxy_js_frameset ;
+	doLoadScript( addScriptUrl ) ;
+}
+
+	</script>
+</head>
+
+<frameset id="itFrameset" onload="tryLoad();" border="0" rows="30,*,*,0">
+    <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="2" src="" name="navbar"></frame>
+    <frame scrolling="auto" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="0" src="" name="mid"></frame>
+    <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="bot"></frame>
+    <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="spellsuggestall"></frame>
+</frameset>
+</html>
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/wsc/plugin.js	(revision 2000)
@@ -0,0 +1,32 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Spell checker
+ */
+
+// Register a plugin named "wsc".
+CKEDITOR.plugins.add( 'wsc',
+{
+	init : function( editor )
+	{
+		var commandName = 'checkspell';
+
+		var command = editor.addCommand( commandName, new CKEDITOR.dialogCommand( commandName ) );
+
+		// SpellChecker doesn't work in Opera and with custom domain
+		command.modes = { wysiwyg : ( !CKEDITOR.env.opera && document.domain == window.location.hostname ) };
+
+		editor.ui.addButton( 'SpellChecker',
+			{
+				label : editor.lang.spellCheck.toolbar,
+				command : commandName
+			});
+		CKEDITOR.dialog.add( commandName, this.path + 'dialogs/wsc.js' );
+	}
+});
+
+CKEDITOR.config.wsc_customerId			= CKEDITOR.config.wsc_customerId || '1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk' ;
+CKEDITOR.config.wsc_customLoaderScript	= CKEDITOR.config.wsc_customLoaderScript || null;
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/pastefromword/dialogs/pastefromword.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/pastefromword/dialogs/pastefromword.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/pastefromword/dialogs/pastefromword.js	(revision 2000)
@@ -0,0 +1,306 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'pastefromword', function( editor )
+{
+	return {
+		title : editor.lang.pastefromword.title,
+		minWidth : CKEDITOR.env.ie && CKEDITOR.env.quirks ? 370 : 350,
+		minHeight : CKEDITOR.env.ie && CKEDITOR.env.quirks ? 270 : 260,
+		htmlToLoad : '<!doctype html><script type="text/javascript">'
+				+ 'window.onload = function()'
+				+ '{'
+					+ 'if ( ' + CKEDITOR.env.ie + ' ) '
+						+ 'document.body.contentEditable = "true";'
+					+ 'else '
+						+ 'document.designMode = "on";'
+					+ 'var iframe = new window.parent.CKEDITOR.dom.element( frameElement );'
+					+ 'var dialog = iframe.getCustomData( "dialog" );'
+		      + ''
+					+ 'iframe.getFrameDocument().on( "keydown", function( e )\
+						{\
+							if ( e.data.getKeystroke() == 27 )\
+								dialog.hide();\
+						});'
+					+ 'dialog.fire( "iframeAdded", { iframe : iframe } );'
+				+ '};'
+				+ '</script><style>body { margin: 3px; height: 95%; } </style><body></body>',
+		cleanWord : function( editor, html, ignoreFont, removeStyles )
+		{
+			// Remove comments [SF BUG-1481861].
+			html = html.replace(/<\!--[\s\S]*?-->/g, '' ) ;
+
+			html = html.replace(/<o:p>\s*<\/o:p>/g, '') ;
+			html = html.replace(/<o:p>[\s\S]*?<\/o:p>/g, '&nbsp;') ;
+
+			// Remove mso-xxx styles.
+			html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, '' ) ;
+
+			// Remove margin styles.
+			html = html.replace( /\s*MARGIN: 0(?:cm|in) 0(?:cm|in) 0pt\s*;/gi, '' ) ;
+			html = html.replace( /\s*MARGIN: 0(?:cm|in) 0(?:cm|in) 0pt\s*"/gi, "\"" ) ;
+
+			html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, '' ) ;
+			html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;
+
+			html = html.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;
+
+			html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ;
+
+			html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ;
+
+			html = html.replace( /\s*tab-stops:[^;"]*;?/gi, '' ) ;
+			html = html.replace( /\s*tab-stops:[^"]*/gi, '' ) ;
+
+			// Remove FONT face attributes.
+			if ( ignoreFont )
+			{
+				html = html.replace( /\s*face="[^"]*"/gi, '' ) ;
+				html = html.replace( /\s*face=[^ >]*/gi, '' ) ;
+
+				html = html.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, '' ) ;
+			}
+
+			// Remove Class attributes
+			html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
+
+			// Remove styles.
+			if ( removeStyles )
+				html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;
+
+			// Remove style, meta and link tags
+			html = html.replace( /<STYLE[^>]*>[\s\S]*?<\/STYLE[^>]*>/gi, '' ) ;
+			html = html.replace( /<(?:META|LINK)[^>]*>\s*/gi, '' ) ;
+
+			// Remove empty styles.
+			html =  html.replace( /\s*style="\s*"/gi, '' ) ;
+
+			html = html.replace( /<SPAN\s*[^>]*>\s*&nbsp;\s*<\/SPAN>/gi, '&nbsp;' ) ;
+
+			html = html.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ;
+
+			// Remove Lang attributes
+			html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
+
+			html = html.replace( /<SPAN\s*>([\s\S]*?)<\/SPAN>/gi, '$1' ) ;
+
+			html = html.replace( /<FONT\s*>([\s\S]*?)<\/FONT>/gi, '$1' ) ;
+
+			// Remove XML elements and declarations
+			html = html.replace(/<\\?\?xml[^>]*>/gi, '' ) ;
+
+			// Remove w: tags with contents.
+			html = html.replace( /<w:[^>]*>[\s\S]*?<\/w:[^>]*>/gi, '' ) ;
+
+			// Remove Tags with XML namespace declarations: <o:p><\/o:p>
+			html = html.replace(/<\/?\w+:[^>]*>/gi, '' ) ;
+
+			html = html.replace( /<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;' ) ;
+
+			html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;
+
+			// Remove "display:none" tags.
+			html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none[\s\S]*?<\/\1>/ig, '' ) ;
+
+			// Remove language tags
+			html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3") ;
+
+			// Remove onmouseover and onmouseout events (from MS Word comments effect)
+			html = html.replace( /<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3") ;
+			html = html.replace( /<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3") ;
+
+			if ( editor.config.pasteFromWordKeepsStructure )
+			{
+				// The original <Hn> tag send from Word is something like this: <Hn style="margin-top:0px;margin-bottom:0px">
+				html = html.replace( /<H(\d)([^>]*)>/gi, '<h$1>' ) ;
+
+				// Word likes to insert extra <font> tags, when using MSIE. (Wierd).
+				html = html.replace( /<(H\d)><FONT[^>]*>([\s\S]*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );
+				html = html.replace( /<(H\d)><EM>([\s\S]*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' );
+			}
+			else
+			{
+				html = html.replace( /<H1([^>]*)>/gi, '<div$1><b><font size="6">' ) ;
+				html = html.replace( /<H2([^>]*)>/gi, '<div$1><b><font size="5">' ) ;
+				html = html.replace( /<H3([^>]*)>/gi, '<div$1><b><font size="4">' ) ;
+				html = html.replace( /<H4([^>]*)>/gi, '<div$1><b><font size="3">' ) ;
+				html = html.replace( /<H5([^>]*)>/gi, '<div$1><b><font size="2">' ) ;
+				html = html.replace( /<H6([^>]*)>/gi, '<div$1><b><font size="1">' ) ;
+
+				html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ;
+
+				// Transform <P> to <DIV>
+				var re = new RegExp( '(<P)([^>]*>[\\s\\S]*?)(<\/P>)', 'gi' ) ;	// Different because of a IE 5.0 error
+				html = html.replace( re, '<div$2<\/div>' ) ;
+
+				// Remove empty tags (three times, just to be sure).
+				// This also removes any empty anchor
+				html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
+				html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
+				html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
+			}
+
+			return html ;
+		},
+		onShow : function()
+		{
+			// To avoid JAWS putting virtual cursor back to the editor document,
+			// disable main document 'contentEditable' during dialog opening.
+			if ( CKEDITOR.env.ie )
+				this.getParentEditor().document.getBody().$.contentEditable = 'false';
+
+			// FIREFOX BUG: Force the browser to render the dialog to make the to-be-
+			// inserted iframe editable. (#3366)
+			this.parts.dialog.$.offsetHeight;
+
+			var container = this.getContentElement( 'general', 'editing_area' ).getElement(),
+				iframe = CKEDITOR.dom.element.createFromHtml( '<iframe src="javascript:void(0)" frameborder="0" allowtransparency="1"></iframe>' );
+
+			var lang = this.getParentEditor().lang;
+
+			iframe.setStyles(
+				{
+					width : '346px',
+					height : '152px',
+					'background-color' : 'white',
+					border : '1px solid black'
+				} );
+			iframe.setCustomData( 'dialog', this );
+
+			var accTitle = lang.editorTitle.replace( '%1', lang.pastefromword.title );
+
+			if ( CKEDITOR.env.ie )
+				container.setHtml( '<legend style="position:absolute;top:-1000000px;left:-1000000px;">'
+						+ CKEDITOR.tools.htmlEncode( accTitle )
+						+ '</legend>' );
+			else
+			{
+				container.setHtml( '' );
+				container.setAttributes(
+					{
+						role : 'region',
+						title : accTitle
+					} );
+				iframe.setAttributes(
+					{
+						role : 'region',
+						title : ' '
+					} );
+			}
+			container.append( iframe );
+			if ( CKEDITOR.env.ie )
+				container.setStyle( 'height', ( iframe.$.offsetHeight + 2 ) + 'px' );
+
+			if ( CKEDITOR.env.isCustomDomain() )
+			{
+				CKEDITOR._cke_htmlToLoad = this.definition.htmlToLoad;
+				iframe.setAttribute( 'src',
+					'javascript:void( (function(){' +
+						   'document.open();' +
+						   'document.domain="' + document.domain + '";' +
+						   'document.write( window.parent.CKEDITOR._cke_htmlToLoad );' +
+						   'delete window.parent.CKEDITOR._cke_htmlToLoad;' +
+						   'document.close();' +
+					'})() )' );
+			}
+			else
+			{
+				var doc = iframe.$.contentWindow.document;
+				doc.open();
+				doc.write( this.definition.htmlToLoad );
+				doc.close();
+			}
+		},
+		onOk : function()
+		{
+			var container = this.getContentElement( 'general', 'editing_area' ).getElement(),
+				iframe = container.getElementsByTag( 'iframe' ).getItem( 0 ),
+				editor = this.getParentEditor(),
+				html = this.definition.cleanWord( editor, iframe.$.contentWindow.document.body.innerHTML,
+						this.getValueOf( 'general', 'ignoreFontFace' ),
+						this.getValueOf( 'general', 'removeStyle' ) );
+
+				// Insertion should happen after main document design mode turned on.
+				setTimeout( function(){
+					editor.insertHtml( html );
+				}, 0 );
+		},
+		onHide : function()
+		{
+			if ( CKEDITOR.env.ie )
+				this.getParentEditor().document.getBody().$.contentEditable = 'true';
+		},
+		onLoad : function()
+		{
+			if ( ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) && editor.lang.dir == 'rtl' )
+				this.parts.contents.setStyle( 'overflow', 'hidden' );
+		},
+		contents :
+		[
+			{
+				id : 'general',
+				label : editor.lang.pastefromword.title,
+				elements :
+				[
+					{
+						type : 'html',
+						style : 'white-space:normal;width:346px;display:block',
+						onShow : function()
+						{
+							/*
+							 * SAFARI BUG: The advice label would overflow if the table layout
+							 * isn't fixed.
+							 */
+							if ( CKEDITOR.env.webkit )
+								this.getElement().getAscendant( 'table' ).setStyle( 'table-layout', 'fixed' );
+						},
+						html : editor.lang.pastefromword.advice
+					},
+					{
+						type : 'html',
+						id : 'editing_area',
+						style : 'width: 100%; height: 100%;',
+						html : '<fieldset></fieldset>',
+						focus : function()
+						{
+							var div = this.getElement();
+							var iframe = div.getElementsByTag( 'iframe' );
+							if ( iframe.count() < 1 )
+								return;
+							iframe = iframe.getItem( 0 );
+
+							// #3291 : JAWS needs the 500ms delay to detect that the editor iframe
+							// iframe is no longer editable. So that it will put the focus into the
+							// Paste from Word dialog's editable area instead.
+							setTimeout( function()
+							{
+								iframe.$.contentWindow.focus();
+							}, 500 );
+						}
+					},
+					{
+						type : 'vbox',
+						padding : 0,
+						children :
+						[
+							{
+								type : 'checkbox',
+								id : 'ignoreFontFace',
+								label : editor.lang.pastefromword.ignoreFontFace,
+								'default' : editor.config.pasteFromWordIgnoreFontFace
+							},
+							{
+								type : 'checkbox',
+								id : 'removeStyle',
+								label : editor.lang.pastefromword.removeStyle,
+								'default' : editor.config.pasteFromWordRemoveStyle
+							}
+						]
+					}
+				]
+			}
+		]
+	};
+} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/pastefromword/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/pastefromword/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/pastefromword/plugin.js	(revision 2000)
@@ -0,0 +1,54 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'pastefromword',
+{
+	init : function( editor )
+	{
+		// Register the command.
+		editor.addCommand( 'pastefromword', new CKEDITOR.dialogCommand( 'pastefromword' ) );
+
+		// Register the toolbar button.
+		editor.ui.addButton( 'PasteFromWord',
+			{
+				label : editor.lang.pastefromword.toolbar,
+				command : 'pastefromword'
+			} );
+
+		// Register the dialog.
+		CKEDITOR.dialog.add( 'pastefromword', this.path + 'dialogs/pastefromword.js' );
+	}
+} );
+
+/**
+ * Whether the "Ignore font face definitions" checkbox is enabled by default in
+ * the Paste from Word dialog.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.pasteFromWordIgnoreFontFace = false;
+ */
+CKEDITOR.config.pasteFromWordIgnoreFontFace = true;
+
+/**
+ * Whether the "Remove styles definitions" checkbox is enabled by default in
+ * the Paste from Word dialog.
+ * @type Boolean
+ * @default false
+ * @example
+ * config.pasteFromWordRemoveStyle = true;
+ */
+CKEDITOR.config.pasteFromWordRemoveStyle = false;
+
+/**
+ * Whether to keep structure markup (&lt;h1&gt;, &lt;h2&gt;, etc.) or replace
+ * it with elements that create more similar pasting results when pasting
+ * content from Microsoft Word into the Paste from Word dialog.
+ * @type Boolean
+ * @default false
+ * @example
+ * config.pasteFromWordKeepsStructure = true;
+ */
+CKEDITOR.config.pasteFromWordKeepsStructure = false;
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/print/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/print/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/print/plugin.js	(revision 2000)
@@ -0,0 +1,41 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Print Plugin
+ */
+
+CKEDITOR.plugins.add( 'print',
+{
+	init : function( editor )
+	{
+		var pluginName = 'print';
+
+		// Register the command.
+		var command = editor.addCommand( pluginName, CKEDITOR.plugins.print );
+
+		// Register the toolbar button.
+		editor.ui.addButton( 'Print',
+			{
+				label : editor.lang.print,
+				command : pluginName
+			});
+	}
+} );
+
+CKEDITOR.plugins.print =
+{
+	exec : function( editor )
+	{
+		if ( CKEDITOR.env.opera )
+			return;
+		else if ( CKEDITOR.env.gecko )
+			editor.window.$.print();
+		else
+			editor.document.$.execCommand( "Print" );
+	},
+	canUndo : false,
+	modes : { wysiwyg : !( CKEDITOR.env.opera ) }		// It is imposible to print the inner document in Opera.
+};
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/templates/dialogs/templates.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/templates/dialogs/templates.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/templates/dialogs/templates.js	(revision 2000)
@@ -0,0 +1,170 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	var doc = CKEDITOR.document;
+
+	var listId = 'cke' + CKEDITOR.tools.getNextNumber();
+
+	// Constructs the HTML view of the specified templates data.
+	function renderTemplatesList( editor, templatesDefinitions )
+	{
+		var listDiv = doc.getById( listId );
+
+		// clear loading wait text.
+		listDiv.setHtml( '' );
+
+		for ( var i = 0 ; i < templatesDefinitions.length ; i++ )
+		{
+			var definition = CKEDITOR.getTemplates( templatesDefinitions[ i ] ),
+				imagesPath = definition.imagesPath,
+				templates = definition.templates;
+
+			for ( var j = 0 ; j < templates.length ; j++ )
+			{
+				var template = templates[ j ];
+				listDiv.append( createTemplateItem( editor, template, imagesPath ) );
+			}
+		}
+	}
+
+	function createTemplateItem( editor, template, imagesPath )
+	{
+		var div = doc.createElement( 'div' );
+		div.setAttribute( 'class', 'cke_tpl_item' );
+
+		// Build the inner HTML of our new item DIV.
+		var html = '<table style="width:350px;" class="cke_tpl_preview"><tr>';
+
+		if( template.image && imagesPath )
+			html += '<td class="cke_tpl_preview_img"><img src="' + CKEDITOR.getUrl( imagesPath + template.image ) + '"></td>';
+
+		html += '<td style="white-space:normal;"><span class="cke_tpl_title">' + template.title + '</span><br/>';
+
+		if( template.description )
+			html += '<span>' + template.description + '</span>';
+
+		html += '</td></tr></table>';
+
+		div.setHtml( html );
+
+		div.on( 'mouseover', function()
+			{
+				div.addClass( 'cke_tpl_hover' );
+			});
+
+		div.on( 'mouseout', function()
+			{
+				div.removeClass( 'cke_tpl_hover' );
+			});
+
+		div.on( 'click', function()
+			{
+				insertTemplate( editor, template.html );
+			});
+
+		return div;
+	}
+
+	/**
+	 * Insert the specified template content
+	 * to document.
+	 * @param {Number} index
+	 */
+	function insertTemplate( editor, html )
+	{
+		var dialog = CKEDITOR.dialog.getCurrent(),
+			isInsert = dialog.getValueOf( 'selectTpl', 'chkInsertOpt' );
+
+		if( isInsert )
+		{
+			editor.setData( html );
+		}
+		else
+		{
+			editor.insertHtml( html );
+		}
+
+		dialog.hide();
+	}
+
+	CKEDITOR.dialog.add( 'templates', function( editor )
+		{
+			// Load skin at first.
+			CKEDITOR.skins.load( editor, 'templates' );
+
+			/**
+			 * Load templates once.
+			 */
+			var isLoaded = false;
+
+			return {
+				title :editor.lang.templates.title,
+
+				minWidth : CKEDITOR.env.ie ? 440 : 400,
+				minHeight : 340,
+
+				contents :
+				[
+					{
+						id :'selectTpl',
+						label : editor.lang.templates.title,
+						elements :
+						[
+							{
+								type : 'vbox',
+								padding : 5,
+								children :
+								[
+									{
+										type : 'html',
+										html :
+											'<span>'  +
+												editor.lang.templates.selectPromptMsg +
+											'</span>'
+									},
+									{
+										type : 'html',
+										html :
+											'<div id="' + listId + '" class="cke_tpl_list">' +
+												'<div class="cke_tpl_loading"><span></span></div>' +
+											'</div>'
+									},
+									{
+										id : 'chkInsertOpt',
+										type : 'checkbox',
+										label : editor.lang.templates.insertOption,
+										'default' : editor.config.templates_replaceContent
+									}
+								]
+							}
+						]
+					}
+				],
+
+				buttons : [ CKEDITOR.dialog.cancelButton ],
+
+				onShow : function()
+				{
+					CKEDITOR.loadTemplates( editor.config.templates_files, function()
+						{
+							var templates = editor.config.templates.split( ',' );
+
+							if ( templates.length )
+								renderTemplatesList( editor, templates );
+							else
+							{
+								var listCtEl = doc.getById( listId );
+								listCtEl.setHtml(
+									'<div class="cke_tpl_empty">' +
+										'<span>' + editor.lang.templates.emptyListMsg + '</span>' +
+									'</div>' );
+							}
+						});
+				}
+			};
+		});
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/templates/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/templates/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/templates/plugin.js	(revision 2000)
@@ -0,0 +1,100 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	CKEDITOR.plugins.add( 'templates',
+		{
+			requires : [ 'dialog' ],
+
+			init : function( editor )
+			{
+				CKEDITOR.dialog.add( 'templates', CKEDITOR.getUrl( this.path + 'dialogs/templates.js' ) );
+
+				editor.addCommand( 'templates', new CKEDITOR.dialogCommand( 'templates' ) );
+
+				editor.ui.addButton( 'Templates',
+					{
+						label : editor.lang.templates.button,
+						command : 'templates'
+					});
+			}
+		});
+
+	var templates = {},
+		loadedTemplatesFiles = {};
+
+	CKEDITOR.addTemplates = function( name, definition )
+	{
+		templates[ name ] = definition;
+	};
+
+	CKEDITOR.getTemplates = function( name )
+	{
+		return templates[ name ];
+	};
+
+	CKEDITOR.loadTemplates = function( templateFiles, callback )
+	{
+		// Holds the templates files to be loaded.
+		var toLoad = [];
+
+		// Look for pending template files to get loaded.
+		for ( var i = 0 ; i < templateFiles.length ; i++ )
+		{
+			if ( !loadedTemplatesFiles[ templateFiles[ i ] ] )
+			{
+				toLoad.push( templateFiles[ i ] );
+				loadedTemplatesFiles[ templateFiles[ i ] ] = 1;
+			}
+		}
+
+		if ( toLoad.length > 0 )
+			CKEDITOR.scriptLoader.load( toLoad, callback );
+		else
+			setTimeout( callback, 0 );
+	};
+})();
+
+
+
+/**
+ * The templates definition set to use. It accepts a list of names separated by
+ * comma. It must match definitions loaded with the templates_files setting.
+ * @type String
+ * @default 'default'
+ * @example
+ * config.templates = 'my_templates';
+ */
+CKEDITOR.config.templates = 'default';
+
+/**
+ * The list of templates definition files to load.
+ * @type (String) Array
+ * @default [ 'plugins/templates/templates/default.js' ]
+ * @example
+ * config.templates_files =
+ *     [
+ *         '/editor_templates/site_default.js',
+ *         'http://www.example.com/user_templates.js
+ *     ];
+ *
+ */
+CKEDITOR.config.templates_files =
+	[
+		CKEDITOR.getUrl(
+			'_source/' + // @Packager.RemoveLine
+			'plugins/templates/templates/default.js' )
+	];
+
+/**
+ * Whether the "Replace actual contents" checkbox is checked by default in the
+ * Templates dialog.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.templates_replaceContent = false;
+ */
+CKEDITOR.config.templates_replaceContent = true;
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/templates/templates/default.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/templates/templates/default.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/templates/templates/default.js	(revision 2000)
@@ -0,0 +1,94 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+// Register a templates definition set named "default".
+CKEDITOR.addTemplates( 'default',
+{
+	// The name of sub folder which hold the shortcut preview images of the
+	// templates.
+	imagesPath : CKEDITOR.getUrl( CKEDITOR.plugins.getPath( 'templates' ) + 'templates/images/' ),
+
+	// The templates definitions.
+	templates :
+		[
+			{
+				title: 'Image and Title',
+				image: 'template1.gif',
+				description: 'One main image with a title and text that surround the image.',
+				html:
+					'<h3>' +
+						'<img style="margin-right: 10px" height="100" width="100" align="left"/>' +
+						'Type the title here'+
+					'</h3>' +
+					'<p>' +
+						'Type the text here' +
+					'</p>'
+			},
+			{
+				title: 'Strange Template',
+				image: 'template2.gif',
+				description: 'A template that defines two colums, each one with a title, and some text.',
+				html:
+					'<table cellspacing="0" cellpadding="0" style="width:100%" border="0">' +
+						'<tr>' +
+							'<td style="width:50%">' +
+								'<h3>Title 1</h3>' +
+							'</td>' +
+							'<td></td>' +
+							'<td style="width:50%">' +
+								'<h3>Title 2</h3>' +
+							'</td>' +
+						'</tr>' +
+						'<tr>' +
+							'<td>' +
+								'Text 1' +
+							'</td>' +
+							'<td></td>' +
+							'<td>' +
+								'Text 2' +
+							'</td>' +
+						'</tr>' +
+					'</table>' +
+					'<p>' +
+						'More text goes here.' +
+					'</p>'
+			},
+			{
+				title: 'Text and Table',
+				image: 'template3.gif',
+				description: 'A title with some text and a table.',
+				html:
+					'<div style="width: 80%">' +
+						'<h3>' +
+							'Title goes here' +
+						'</h3>' +
+						'<table style="float: right" cellspacing="0" cellpadding="0" style="width:150px" border="1">' +
+							'<caption style="border:solid 1px black">' +
+								'<strong>Table title</strong>' +
+							'</caption>' +
+							'</tr>' +
+							'<tr>' +
+								'<td>&nbsp;</td>' +
+								'<td>&nbsp;</td>' +
+								'<td>&nbsp;</td>' +
+							'</tr>' +
+							'<tr>' +
+								'<td>&nbsp;</td>' +
+								'<td>&nbsp;</td>' +
+								'<td>&nbsp;</td>' +
+							'</tr>' +
+							'<tr>' +
+								'<td>&nbsp;</td>' +
+								'<td>&nbsp;</td>' +
+								'<td>&nbsp;</td>' +
+							'</tr>' +
+						'</table>' +
+						'<p>' +
+							'Type the text here' +
+						'</p>' +
+					'</div>'
+			}
+		]
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/resize/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/resize/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/resize/plugin.js	(revision 2000)
@@ -0,0 +1,115 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'resize',
+{
+	init : function( editor )
+	{
+		var config = editor.config;
+
+		if ( config.resize_enabled )
+		{
+			var container = null;
+			var origin, startSize;
+
+			function dragHandler( evt )
+			{
+				var dx = evt.data.$.screenX - origin.x;
+				var dy = evt.data.$.screenY - origin.y;
+				var internalWidth = startSize.width + dx * ( editor.lang.dir == 'rtl' ? -1 : 1 );
+				var internalHeight = startSize.height + dy;
+
+				editor.resize( Math.max( config.resize_minWidth, Math.min( internalWidth, config.resize_maxWidth ) ),
+						Math.max( config.resize_minHeight, Math.min( internalHeight, config.resize_maxHeight ) ) );
+			}
+
+			function dragEndHandler ( evt )
+			{
+				CKEDITOR.document.removeListener( 'mousemove', dragHandler );
+				CKEDITOR.document.removeListener( 'mouseup', dragEndHandler );
+
+				if ( editor.document )
+				{
+					editor.document.removeListener( 'mousemove', dragHandler );
+					editor.document.removeListener( 'mouseup', dragEndHandler );
+				}
+			}
+
+			var mouseDownFn = CKEDITOR.tools.addFunction( function( $event )
+				{
+					if ( !container )
+						container = editor.getResizable();
+
+					startSize = { width : container.$.offsetWidth || 0, height : container.$.offsetHeight || 0 };
+					origin = { x : $event.screenX, y : $event.screenY };
+
+					CKEDITOR.document.on( 'mousemove', dragHandler );
+					CKEDITOR.document.on( 'mouseup', dragEndHandler );
+
+					if ( editor.document )
+					{
+						editor.document.on( 'mousemove', dragHandler );
+						editor.document.on( 'mouseup', dragEndHandler );
+					}
+				} );
+
+			editor.on( 'themeSpace', function( event )
+				{
+					if ( event.data.space == 'bottom' )
+					{
+						event.data.html += '<div class="cke_resizer"' +
+							' title="' + CKEDITOR.tools.htmlEncode( editor.lang.resize ) + '"' +
+							' onmousedown="CKEDITOR.tools.callFunction(' + mouseDownFn + ', event)"' +
+							'></div>';
+					}
+				}, editor, null, 100 );
+		}
+	}
+} );
+
+/**
+ * The minimum editor width, in pixels, when resizing it with the resize handle.
+ * @type Number
+ * @default 750
+ * @example
+ * config.resize_minWidth = 500;
+ */
+CKEDITOR.config.resize_minWidth = 750;
+
+/**
+ * The minimum editor height, in pixels, when resizing it with the resize handle.
+ * @type Number
+ * @default 250
+ * @example
+ * config.resize_minHeight = 600;
+ */
+CKEDITOR.config.resize_minHeight = 250;
+
+/**
+ * The maximum editor width, in pixels, when resizing it with the resize handle.
+ * @type Number
+ * @default 3000
+ * @example
+ * config.resize_maxWidth = 750;
+ */
+CKEDITOR.config.resize_maxWidth = 3000;
+
+/**
+ * The maximum editor height, in pixels, when resizing it with the resize handle.
+ * @type Number
+ * @default 3000
+ * @example
+ * config.resize_maxHeight = 600;
+ */
+CKEDITOR.config.resize_maxHeight = 3000;
+
+/**
+ * Whether to enable the resizing feature. If disabed the resize handler will not be visible.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.resize_enabled = false;
+ */
+CKEDITOR.config.resize_enabled = true;
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/smiley/dialogs/smiley.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/smiley/dialogs/smiley.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/smiley/dialogs/smiley.js	(revision 2000)
@@ -0,0 +1,219 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'smiley', function( editor )
+{
+	var config = editor.config,
+		images = config.smiley_images,
+		columns = 8,
+		i;
+
+	/**
+	 * Simulate "this" of a dialog for non-dialog events.
+	 * @type {CKEDITOR.dialog}
+	 */
+	var dialog;
+	var onClick = function( evt )
+	{
+		var target = evt.data.getTarget(),
+			targetName = target.getName();
+
+		if ( targetName == 'td' )
+			target = target.getChild( [ 0, 0 ] );
+		else if ( targetName == 'a' )
+			target = target.getChild( 0 );
+		else if ( targetName != 'img' )
+			return;
+
+		var src = target.getAttribute( 'cke_src' ),
+			title = target.getAttribute( 'title' );
+
+		var img = editor.document.createElement( 'img',
+			{
+				attributes :
+				{
+					src : src,
+					_cke_saved_src : src,
+					title : title,
+					alt : title
+				}
+			});
+
+		editor.insertElement( img );
+
+		dialog.hide();
+	};
+
+	var onKeydown = CKEDITOR.tools.addFunction( function( ev, element )
+	{
+		ev = new CKEDITOR.dom.event( ev );
+		element = new CKEDITOR.dom.element( element );
+		var relative, nodeToMove;
+
+		var keystroke = ev.getKeystroke();
+		switch ( keystroke )
+		{
+			// RIGHT-ARROW
+			case 39 :
+				// relative is TD
+				if ( ( relative = element.getParent().getNext() ) )
+				{
+					nodeToMove = relative.getChild( 0 );
+					nodeToMove.focus();
+				}
+				ev.preventDefault();
+				break;
+			// LEFT-ARROW
+			case 37 :
+				// relative is TD
+				if ( ( relative = element.getParent().getPrevious() ) )
+				{
+					nodeToMove = relative.getChild( 0 );
+					nodeToMove.focus();
+				}
+				ev.preventDefault();
+				break;
+			// UP-ARROW
+			case 38 :
+				// relative is TR
+				if ( ( relative = element.getParent().getParent().getPrevious() ) )
+				{
+					nodeToMove = relative.getChild( [element.getParent().getIndex(), 0] );
+					nodeToMove.focus();
+				}
+				ev.preventDefault();
+				break;
+			// DOWN-ARROW
+			case 40 :
+				// relative is TR
+				if ( ( relative = element.getParent().getParent().getNext() ) )
+				{
+					nodeToMove = relative.getChild( [element.getParent().getIndex(), 0] );
+					if ( nodeToMove )
+						nodeToMove.focus();
+				}
+				ev.preventDefault();
+				break;
+			// ENTER
+			// SPACE
+			case 32 :
+				onClick( { data: ev } );
+				ev.preventDefault();
+				break;
+			// TAB
+			case 9 :
+				// relative is TD
+				if ( ( relative = element.getParent().getNext() ) )
+				{
+					nodeToMove = relative.getChild( 0 );
+					nodeToMove.focus();
+					ev.preventDefault(true);
+				}
+				// relative is TR
+				else if ( ( relative = element.getParent().getParent().getNext() ) )
+				{
+					nodeToMove = relative.getChild( [0, 0] );
+					if ( nodeToMove )
+						nodeToMove.focus();
+					ev.preventDefault(true);
+				}
+				break;
+			// SHIFT + TAB
+			case CKEDITOR.SHIFT + 9 :
+				// relative is TD
+				if ( ( relative = element.getParent().getPrevious() ) )
+				{
+					nodeToMove = relative.getChild( 0 );
+					nodeToMove.focus();
+					ev.preventDefault(true);
+				}
+				// relative is TR
+				else if ( ( relative = element.getParent().getParent().getPrevious() ) )
+				{
+					nodeToMove = relative.getLast().getChild( 0 );
+					nodeToMove.focus();
+					ev.preventDefault(true);
+				}
+				break;
+			default :
+				// Do not stop not handled events.
+				return;
+		}
+	});
+
+	// Build the HTML for the smiley images table.
+	var html =
+	[
+		'<table cellspacing="2" cellpadding="2"',
+		CKEDITOR.env.ie && CKEDITOR.env.quirks ? ' style="position:absolute;"' : '',
+		'><tbody>'
+	];
+
+	for ( i = 0 ; i < images.length ; i++ )
+	{
+		if ( i % columns === 0 )
+			html.push( '<tr>' );
+
+		html.push(
+			'<td class="cke_dark_background cke_hand cke_centered" style="vertical-align: middle;">' +
+				'<a href="javascript:void(0)" class="cke_smile" tabindex="-1" onkeydown="CKEDITOR.tools.callFunction( ', onKeydown, ', event, this );">',
+					'<img class="hand" title="', config.smiley_descriptions[i], '"' +
+						' cke_src="', CKEDITOR.tools.htmlEncode( config.smiley_path + images[ i ] ), '" alt="', config.smiley_descriptions[i], '"',
+						' src="', CKEDITOR.tools.htmlEncode( config.smiley_path + images[ i ] ), '"',
+						// IE BUG: Below is a workaround to an IE image loading bug to ensure the image sizes are correct.
+						( CKEDITOR.env.ie ? ' onload="this.setAttribute(\'width\', 2); this.removeAttribute(\'width\');" ' : '' ),
+					'>' +
+				'</a>',
+ 			'</td>' );
+
+		if ( i % columns == columns - 1 )
+			html.push( '</tr>' );
+	}
+
+	if ( i < columns - 1 )
+	{
+		for ( ; i < columns - 1 ; i++ )
+			html.push( '<td></td>' );
+		html.push( '</tr>' );
+	}
+
+	html.push( '</tbody></table>' );
+
+	var smileySelector =
+	{
+		type : 'html',
+		html : html.join( '' ),
+		onLoad : function( event )
+		{
+			dialog = event.sender;
+		},
+		focus : function()
+ 		{
+			var firstSmile = this.getElement().getChild( [0, 0, 0, 0] );
+			firstSmile.focus();
+ 		},
+		onClick : onClick,
+		style : 'width: 100%; height: 100%; border-collapse: separate;'
+	};
+
+	return {
+		title : editor.lang.smiley.title,
+		minWidth : 270,
+		minHeight : 120,
+		contents : [
+			{
+				id : 'tab1',
+				label : '',
+				title : '',
+				expand : true,
+				padding : 0,
+				elements : [
+						smileySelector
+					]
+			}
+		],
+		buttons : [ CKEDITOR.dialog.cancelButton ]
+	};
+} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/smiley/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/smiley/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/smiley/plugin.js	(revision 2000)
@@ -0,0 +1,75 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'smiley',
+{
+	requires : [ 'dialog' ],
+
+	init : function( editor )
+	{
+		editor.addCommand( 'smiley', new CKEDITOR.dialogCommand( 'smiley' ) );
+		editor.ui.addButton( 'Smiley',
+			{
+				label : editor.lang.smiley.toolbar,
+				command : 'smiley'
+			});
+		CKEDITOR.dialog.add( 'smiley', this.path + 'dialogs/smiley.js' );
+	}
+} );
+
+/**
+ * The base path used to build the URL for the smiley images. It must end with
+ * a slash.
+ * @type String
+ * @default {@link CKEDITOR.basePath} + 'plugins/smiley/images/'
+ * @example
+ * config.smiley_path = 'http://www.example.com/images/smileys/';
+ * @example
+ * config.smiley_path = '/images/smileys/';
+ */
+CKEDITOR.config.smiley_path = CKEDITOR.basePath +
+	'_source/' +		// @Packager.RemoveLine
+	'plugins/smiley/images/';
+
+/**
+ * The file names for the smileys to be displayed. These files must be
+ * contained inside the URL path defined with the
+ * {@link CKEDITOR.config.smiley_path} setting.
+ * @type Array
+ * @default (see example)
+ * @example
+ * // This is actually the default value.
+ * config.smiley_images = [
+ *     'regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif',
+ *     'embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif',
+ *     'devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif',
+ *     'broken_heart.gif','kiss.gif','envelope.gif'];
+ */
+CKEDITOR.config.smiley_images = [
+	'regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif',
+	'embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif',
+	'devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif',
+	'broken_heart.gif','kiss.gif','envelope.gif'];
+
+/**
+ * The description to be used for each of the smileys defined in the
+ * {@link CKEDITOR.config.smiley_images} setting. Each entry in this array list
+ * must match its relative pair in the {@link CKEDITOR.config.smiley_images}
+ * setting.
+ * @type Array
+ * @default (see example)
+ * @example
+ * // This is actually the default value.
+ * config.smiley_descriptions = [
+ *     ':)', ':(', ';)', ':D', ':/', ':P',
+ *     '', '', '', '', '', '',
+ *     '', ';(', '', '', '', '',
+ *     '', ':kiss', '' ];
+ */
+CKEDITOR.config.smiley_descriptions = [
+	':)', ':(', ';)', ':D', ':/', ':P',
+	'', '', '', '', '', '',
+	'', ';(', '', '', '', '',
+	'', ':kiss', '' ];
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/toolbar/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/toolbar/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/toolbar/plugin.js	(revision 2000)
@@ -0,0 +1,412 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview The "toolbar" plugin. Renders the default toolbar interface in
+ * the editor.
+ */
+
+(function()
+{
+	var toolbox = function()
+	{
+		this.toolbars = [];
+		this.focusCommandExecuted = false;
+	};
+
+	toolbox.prototype.focus = function()
+	{
+		for ( var t = 0, toolbar ; toolbar = this.toolbars[ t++ ] ; )
+		{
+			for ( var i = 0, item ; item = toolbar.items[ i++ ] ; )
+			{
+				if ( item.focus )
+				{
+					item.focus();
+					return;
+				}
+			}
+		}
+	};
+
+	var commands =
+	{
+		toolbarFocus :
+		{
+			modes : { wysiwyg : 1, source : 1 },
+
+			exec : function( editor )
+			{
+				if ( editor.toolbox )
+				{
+					editor.toolbox.focusCommandExecuted = true;
+
+					// Make the first button focus accessible. (#3417)
+					if ( CKEDITOR.env.ie )
+						setTimeout( function(){ editor.toolbox.focus(); }, 100 );
+					else
+						editor.toolbox.focus();
+				}
+			}
+		}
+	};
+
+	CKEDITOR.plugins.add( 'toolbar',
+	{
+		init : function( editor )
+		{
+			var itemKeystroke = function( item, keystroke )
+			{
+				switch ( keystroke )
+				{
+					case 39 :					// RIGHT-ARROW
+					case 9 :					// TAB
+						// Look for the next item in the toolbar.
+						while ( ( item = item.next || ( item.toolbar.next && item.toolbar.next.items[ 0 ] ) ) && !item.focus )
+						{ /*jsl:pass*/ }
+
+						// If available, just focus it, otherwise focus the
+						// first one.
+						if ( item )
+							item.focus();
+						else
+							editor.toolbox.focus();
+
+						return false;
+
+					case 37 :					// LEFT-ARROW
+					case CKEDITOR.SHIFT + 9 :	// SHIFT + TAB
+						// Look for the previous item in the toolbar.
+						while ( ( item = item.previous || ( item.toolbar.previous && item.toolbar.previous.items[ item.toolbar.previous.items.length - 1 ] ) ) && !item.focus )
+						{ /*jsl:pass*/ }
+
+						// If available, just focus it, otherwise focus the
+						// last one.
+						if ( item )
+							item.focus();
+						else
+						{
+							var lastToolbarItems = editor.toolbox.toolbars[ editor.toolbox.toolbars.length - 1 ].items;
+							lastToolbarItems[ lastToolbarItems.length - 1 ].focus();
+						}
+
+						return false;
+
+					case 27 :					// ESC
+						editor.focus();
+						return false;
+
+					case 13 :					// ENTER
+					case 32 :					// SPACE
+						item.execute();
+						return false;
+				}
+				return true;
+			};
+
+			editor.on( 'themeSpace', function( event )
+				{
+					if ( event.data.space == editor.config.toolbarLocation )
+					{
+						editor.toolbox = new toolbox();
+
+						var output = [ '<div class="cke_toolbox"' ],
+							expanded =  editor.config.toolbarStartupExpanded,
+							groupStarted;
+
+						output.push( expanded ? '>' : ' style="display:none">' );
+
+						var toolbars = editor.toolbox.toolbars,
+							toolbar =
+									( editor.config.toolbar instanceof Array ) ?
+										editor.config.toolbar
+									:
+										editor.config[ 'toolbar_' + editor.config.toolbar ];
+
+						for ( var r = 0 ; r < toolbar.length ; r++ )
+						{
+							var row = toolbar[ r ];
+
+							// It's better to check if the row object is really
+							// available because it's a common mistake to leave
+							// an extra comma in the toolbar definition
+							// settings, which leads on the editor not loading
+							// at all in IE. (#3983)
+							if ( !row )
+								continue;
+
+							var toolbarId = 'cke_' + CKEDITOR.tools.getNextNumber(),
+								toolbarObj = { id : toolbarId, items : [] };
+
+							if ( groupStarted )
+							{
+								output.push( '</div>' );
+								groupStarted = 0;
+							}
+
+							if ( row === '/' )
+							{
+								output.push( '<div class="cke_break"></div>' );
+								continue;
+							}
+
+							output.push( '<span id="', toolbarId, '" class="cke_toolbar"><span class="cke_toolbar_start"></span>' );
+
+							// Add the toolbar to the "editor.toolbox.toolbars"
+							// array.
+							var index = toolbars.push( toolbarObj ) - 1;
+
+							// Create the next/previous reference.
+							if ( index > 0 )
+							{
+								toolbarObj.previous = toolbars[ index - 1 ];
+								toolbarObj.previous.next = toolbarObj;
+							}
+
+							// Create all items defined for this toolbar.
+							for ( var i = 0 ; i < row.length ; i++ )
+							{
+								var item,
+									itemName = row[ i ];
+
+								if ( itemName == '-' )
+									item = CKEDITOR.ui.separator;
+								else
+									item = editor.ui.create( itemName );
+
+								if ( item )
+								{
+									if ( item.canGroup )
+									{
+										if ( !groupStarted )
+										{
+											output.push( '<span class="cke_toolgroup">' );
+											groupStarted = 1;
+										}
+									}
+									else if ( groupStarted )
+									{
+										output.push( '</span>' );
+										groupStarted = 0;
+									}
+
+									var itemObj = item.render( editor, output );
+									index = toolbarObj.items.push( itemObj ) - 1;
+
+									if ( index > 0 )
+									{
+										itemObj.previous = toolbarObj.items[ index - 1 ];
+										itemObj.previous.next = itemObj;
+									}
+
+									itemObj.toolbar = toolbarObj;
+									itemObj.onkey = itemKeystroke;
+
+									/*
+									 * Fix for #3052:
+									 * Prevent JAWS from focusing the toolbar after document load.
+									 */
+									itemObj.onfocus = function()
+									{
+										if ( !editor.toolbox.focusCommandExecuted )
+											editor.focus();
+									};
+								}
+							}
+
+							if ( groupStarted )
+							{
+								output.push( '</span>' );
+								groupStarted = 0;
+							}
+
+							output.push( '<span class="cke_toolbar_end"></span></span>' );
+						}
+
+						output.push( '</div>' );
+
+						if ( editor.config.toolbarCanCollapse )
+						{
+							var collapserFn = CKEDITOR.tools.addFunction(
+								function()
+								{
+									editor.execCommand( 'toolbarCollapse' );
+								} );
+
+							var collapserId = 'cke_' + CKEDITOR.tools.getNextNumber();
+
+							editor.addCommand( 'toolbarCollapse',
+								{
+									exec : function( editor )
+									{
+										var collapser = CKEDITOR.document.getById( collapserId );
+										var toolbox = collapser.getPrevious();
+										var contents = editor.getThemeSpace( 'contents' );
+										var toolboxContainer = toolbox.getParent();
+										var contentHeight = parseInt( contents.$.style.height, 10 );
+										var previousHeight = toolboxContainer.$.offsetHeight;
+
+										if ( toolbox.isVisible() )
+										{
+											toolbox.hide();
+											collapser.addClass( 'cke_toolbox_collapser_min' );
+										}
+										else
+										{
+											toolbox.show();
+											collapser.removeClass( 'cke_toolbox_collapser_min' );
+										}
+
+										var dy = toolboxContainer.$.offsetHeight - previousHeight;
+										contents.setStyle( 'height', ( contentHeight - dy ) + 'px' );
+									},
+
+									modes : { wysiwyg : 1, source : 1 }
+								} );
+
+							output.push( '<a id="' + collapserId + '" class="cke_toolbox_collapser' );
+
+							if ( !expanded )
+								output.push( ' cke_toolbox_collapser_min' );
+
+							output.push( '" onclick="CKEDITOR.tools.callFunction(' + collapserFn + ')"></a>' );
+						}
+
+						event.data.html += output.join( '' );
+					}
+				});
+
+			editor.addCommand( 'toolbarFocus', commands.toolbarFocus );
+		}
+	});
+})();
+
+/**
+ * The UI element that renders a toolbar separator.
+ * @type Object
+ * @example
+ */
+CKEDITOR.ui.separator =
+{
+	render : function( editor, output )
+	{
+		output.push( '<span class="cke_separator"></span>' );
+		return {};
+	}
+};
+
+/**
+ * The "theme space" to which rendering the toolbar. For the default theme,
+ * the recommended options are "top" and "bottom".
+ * @type String
+ * @default 'top'
+ * @see CKEDITOR.config.theme
+ * @example
+ * config.toolbarLocation = 'bottom';
+ */
+CKEDITOR.config.toolbarLocation = 'top';
+
+/**
+ * The toolbar definition. It is an array of toolbars (strips),
+ * each one being also an array, containing a list of UI items.
+ * Note that this setting is composed by "toolbar_" added by the toolbar name,
+ * which in this case is called "Basic". This second part of the setting name
+ * can be anything. You must use this name in the
+ * {@link CKEDITOR.config.toolbar} setting, so you instruct the editor which
+ * toolbar_(name) setting to you.
+ * @type Array
+ * @example
+ * // Defines a toolbar with only one strip containing the "Source" button, a
+ * // separator and the "Bold" and "Italic" buttons.
+ * <b>config.toolbar_Basic =
+ * [
+ *     [ 'Source', '-', 'Bold', 'Italic' ]
+ * ]</b>;
+ * config.toolbar = 'Basic';
+ */
+CKEDITOR.config.toolbar_Basic =
+[
+	['Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink','-','About']
+];
+
+/**
+ * This is the default toolbar definition used by the editor. It contains all
+ * editor features.
+ * @type Array
+ * @default (see example)
+ * @example
+ * // This is actually the default value.
+ * config.toolbar_Full =
+ * [
+ *     ['Source','-','Save','NewPage','Preview','-','Templates'],
+ *     ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
+ *     ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
+ *     ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'],
+ *     '/',
+ *     ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
+ *     ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
+ *     ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
+ *     ['Link','Unlink','Anchor'],
+ *     ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
+ *     '/',
+ *     ['Styles','Format','Font','FontSize'],
+ *     ['TextColor','BGColor'],
+ *     ['Maximize', 'ShowBlocks','-','About']
+ * ];
+ */
+CKEDITOR.config.toolbar_Full =
+[
+	['Source','-','Save','NewPage','Preview','-','Templates'],
+	['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
+	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
+	['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'],
+	'/',
+	['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
+	['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
+	['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
+	['Link','Unlink','Anchor'],
+	['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
+	'/',
+	['Styles','Format','Font','FontSize'],
+	['TextColor','BGColor'],
+	['Maximize', 'ShowBlocks','-','About']
+];
+
+/**
+ * The toolbox (alias toolbar) definition. It is a toolbar name or an array of
+ * toolbars (strips), each one being also an array, containing a list of UI items.
+ * @type Array|String
+ * @default 'Full'
+ * @example
+ * // Defines a toolbar with only one strip containing the "Source" button, a
+ * // separator and the "Bold" and "Italic" buttons.
+ * config.toolbar =
+ * [
+ *     [ 'Source', '-', 'Bold', 'Italic' ]
+ * ];
+ * @example
+ * // Load toolbar_Name where Name = Basic.
+ * config.toolbar = 'Basic';
+ */
+CKEDITOR.config.toolbar = 'Full';
+
+/**
+ * Whether the toolbar can be collapsed by the user. If disabled, the collapser
+ * button will not be displayed.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.toolbarCanCollapse = false;
+ */
+CKEDITOR.config.toolbarCanCollapse = true;
+
+/**
+ * Whether the toolbar must start expanded when the editor is loaded.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.toolbarStartupExpanded = false;
+ */
+CKEDITOR.config.toolbarStartupExpanded = true;
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/popup/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/popup/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/popup/plugin.js	(revision 2000)
@@ -0,0 +1,62 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'popup');
+
+CKEDITOR.tools.extend( CKEDITOR.editor.prototype,
+{
+	/**
+	 * Opens Browser in a popup. The "width" and "height" parameters accept
+	 * numbers (pixels) or percent (of screen size) values.
+	 * @param {String} url The url of the external file browser.
+	 * @param {String} width Popup window width.
+	 * @param {String} height Popup window height.
+	 */
+	popup : function( url, width, height )
+	{
+		width = width || '80%';
+		height = height || '70%';
+
+		if ( typeof width == 'string' && width.length > 1 && width.substr( width.length - 1, 1 ) == '%' )
+			width = parseInt( window.screen.width * parseInt( width, 10 ) / 100, 10 );
+
+		if ( typeof height == 'string' && height.length > 1 && height.substr( height.length - 1, 1 ) == '%' )
+			height = parseInt( window.screen.height * parseInt( height, 10 ) / 100, 10 );
+
+		if ( width < 640 )
+			width = 640;
+
+		if ( height < 420 )
+			height = 420;
+
+		var top = parseInt( ( window.screen.height - height ) / 2, 10 ),
+			left = parseInt( ( window.screen.width  - width ) / 2, 10 ),
+			options = 'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes' +
+			',width='  + width +
+			',height=' + height +
+			',top='  + top +
+			',left=' + left;
+
+		var popupWindow = window.open( '', null, options, true );
+
+		// Blocked by a popup blocker.
+		if ( !popupWindow )
+			return false;
+
+		try
+		{
+			popupWindow.moveTo( left, top );
+			popupWindow.resizeTo( width, height );
+			popupWindow.focus();
+			popupWindow.location.href = url;
+		}
+		catch (e)
+		{
+			popupWindow = window.open( url, null, options, true );
+		}
+
+		return true ;
+	}
+});
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/richcombo/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/richcombo/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/richcombo/plugin.js	(revision 2000)
@@ -0,0 +1,357 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'richcombo',
+{
+	requires : [ 'floatpanel', 'listblock', 'button' ],
+
+	beforeInit : function( editor )
+	{
+		editor.ui.addHandler( CKEDITOR.UI_RICHCOMBO, CKEDITOR.ui.richCombo.handler );
+	}
+});
+
+/**
+ * Button UI element.
+ * @constant
+ * @example
+ */
+CKEDITOR.UI_RICHCOMBO = 3;
+
+CKEDITOR.ui.richCombo = CKEDITOR.tools.createClass(
+{
+	$ : function( definition )
+	{
+		// Copy all definition properties to this object.
+		CKEDITOR.tools.extend( this, definition,
+			// Set defaults.
+			{
+				title : definition.label,
+				modes : { wysiwyg : 1 }
+			});
+
+		// We don't want the panel definition in this object.
+		var panelDefinition = this.panel || {};
+		delete this.panel;
+
+		this.id = CKEDITOR.tools.getNextNumber();
+
+		this.document = ( panelDefinition
+							&& panelDefinition.parent
+							&& panelDefinition.parent.getDocument() )
+						|| CKEDITOR.document;
+
+		panelDefinition.className = ( panelDefinition.className || '' ) + ' cke_rcombopanel';
+
+		this._ =
+		{
+			panelDefinition : panelDefinition,
+			items : {},
+			state : CKEDITOR.TRISTATE_OFF
+		};
+	},
+
+	statics :
+	{
+		handler :
+		{
+			create : function( definition )
+			{
+				return new CKEDITOR.ui.richCombo( definition );
+			}
+		}
+	},
+
+	proto :
+	{
+		renderHtml : function( editor )
+		{
+			var output = [];
+			this.render( editor, output );
+			return output.join( '' );
+		},
+
+		/**
+		 * Renders the combo.
+		 * @param {CKEDITOR.editor} editor The editor instance which this button is
+		 *		to be used by.
+		 * @param {Array} output The output array to which append the HTML relative
+		 *		to this button.
+		 * @example
+		 */
+		render : function( editor, output )
+		{
+			var id = 'cke_' + this.id;
+			var clickFn = CKEDITOR.tools.addFunction( function( $element )
+				{
+					var _ = this._;
+
+					if ( _.state == CKEDITOR.TRISTATE_DISABLED )
+						return;
+
+					this.createPanel( editor );
+
+					if ( _.on )
+					{
+						_.panel.hide();
+						return;
+					}
+
+					if ( !_.committed )
+					{
+						_.list.commit();
+						_.committed = 1;
+					}
+
+					var value = this.getValue();
+					if ( value )
+						_.list.mark( value );
+					else
+						_.list.unmarkAll();
+
+					_.panel.showBlock( this.id, new CKEDITOR.dom.element( $element ), 4 );
+				},
+				this );
+
+			var instance = {
+				id : id,
+				combo : this,
+				focus : function()
+				{
+					var element = CKEDITOR.document.getById( id ).getChild( 1 );
+					element.focus();
+				},
+				execute : clickFn
+			};
+
+			editor.on( 'mode', function()
+				{
+					this.setState( this.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
+				},
+				this );
+
+			var keyDownFn = CKEDITOR.tools.addFunction( function( ev, element )
+				{
+					ev = new CKEDITOR.dom.event( ev );
+
+					var keystroke = ev.getKeystroke();
+					switch ( keystroke )
+					{
+						case 13 :	// ENTER
+						case 32 :	// SPACE
+						case 40 :	// ARROW-DOWN
+							// Show panel
+							CKEDITOR.tools.callFunction( clickFn, element );
+							break;
+						default :
+							// Delegate the default behavior to toolbar button key handling.
+							instance.onkey( instance,  keystroke );
+					}
+
+					// Avoid subsequent focus grab on editor document.
+					ev.preventDefault();
+				});
+
+			output.push(
+				'<span class="cke_rcombo">',
+				'<span id=', id );
+
+			if ( this.className )
+				output.push( ' class="', this.className, ' cke_off"');
+
+			output.push(
+				'>' +
+					'<span class=cke_label>', this.label, '</span>' +
+					'<a hidefocus=true title="', this.title, '" tabindex="-1" href="javascript:void(\'', this.label, '\')"' );
+
+			// Some browsers don't cancel key events in the keydown but in the
+			// keypress.
+			// TODO: Check if really needed for Gecko+Mac.
+			if ( CKEDITOR.env.opera || ( CKEDITOR.env.gecko && CKEDITOR.env.mac ) )
+			{
+				output.push(
+					' onkeypress="return false;"' );
+			}
+
+			// With Firefox, we need to force it to redraw, otherwise it
+			// will remain in the focus state.
+			if ( CKEDITOR.env.gecko )
+			{
+				output.push(
+					' onblur="this.style.cssText = this.style.cssText;"' );
+			}
+
+			output.push(
+					' onkeydown="CKEDITOR.tools.callFunction( ', keyDownFn, ', event, this );"' +
+					' onclick="CKEDITOR.tools.callFunction(', clickFn, ', this); return false;">' +
+						'<span>' +
+							'<span class="cke_accessibility">' + ( this.voiceLabel ? this.voiceLabel + ' ' : '' ) + '</span>' +
+							'<span id="' + id + '_text" class="cke_text cke_inline_label">' + this.label + '</span>' +
+						'</span>' +
+						'<span class=cke_openbutton></span>' +
+					'</a>' +
+				'</span>' +
+				'</span>' );
+
+			if ( this.onRender )
+				this.onRender();
+
+			return instance;
+		},
+
+		createPanel : function( editor )
+		{
+			if ( this._.panel )
+				return;
+
+			var panelDefinition = this._.panelDefinition,
+				panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),
+				panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ),
+				list = panel.addListBlock( this.id, this.multiSelect ),
+				me = this;
+
+			panel.onShow = function()
+				{
+					if ( me.className )
+						this.element.getFirst().addClass( me.className + '_panel' );
+
+					me.setState( CKEDITOR.TRISTATE_ON );
+
+					list.focus( !me.multiSelect && me.getValue() );
+
+					me._.on = 1;
+
+					if ( me.onOpen )
+						me.onOpen();
+				};
+
+			panel.onHide = function()
+				{
+					if ( me.className )
+						this.element.getFirst().removeClass( me.className + '_panel' );
+
+					me.setState( CKEDITOR.TRISTATE_OFF );
+
+					me._.on = 0;
+
+					if ( me.onClose )
+						me.onClose();
+				};
+
+			panel.onEscape = function()
+				{
+					panel.hide();
+					me.document.getById( 'cke_' + me.id ).getFirst().getNext().focus();
+				};
+
+			list.onClick = function( value, marked )
+				{
+					// Move the focus to the main windows, otherwise it will stay
+					// into the floating panel, even if invisible, and Safari and
+					// Opera will go a bit crazy.
+					me.document.getWindow().focus();
+
+					if ( me.onClick )
+						me.onClick.call( me, value, marked );
+
+					if ( marked )
+						me.setValue( value, me._.items[ value ] );
+					else
+						me.setValue( '' );
+
+					panel.hide();
+				};
+
+			this._.panel = panel;
+			this._.list = list;
+
+			panel.getBlock( this.id ).onHide = function()
+				{
+					me._.on = 0;
+					me.setState( CKEDITOR.TRISTATE_OFF );
+				};
+
+			if ( this.init )
+				this.init();
+		},
+
+		setValue : function( value, text )
+		{
+			this._.value = value;
+
+			var textElement = this.document.getById( 'cke_' + this.id + '_text' );
+
+			if ( !value )
+			{
+				text = this.label;
+				textElement.addClass( 'cke_inline_label' );
+			}
+			else
+				textElement.removeClass( 'cke_inline_label' );
+			textElement.setHtml( typeof text != 'undefined' ? text : value );
+		},
+
+		getValue : function()
+		{
+			return this._.value || '';
+		},
+
+		unmarkAll : function()
+		{
+			this._.list.unmarkAll();
+		},
+
+		mark : function( value )
+		{
+			this._.list.mark( value );
+		},
+
+		hideItem : function( value )
+		{
+			this._.list.hideItem( value );
+		},
+
+		hideGroup : function( groupTitle )
+		{
+			this._.list.hideGroup( groupTitle );
+		},
+
+		showAll : function()
+		{
+			this._.list.showAll();
+		},
+
+		add : function( value, html, text )
+		{
+			this._.items[ value ] = text || value;
+			this._.list.add( value, html, text );
+		},
+
+		startGroup : function( title )
+		{
+			this._.list.startGroup( title );
+		},
+
+		commit : function()
+		{
+			this._.list.commit();
+		},
+
+		setState : function( state )
+		{
+			if ( this._.state == state )
+				return;
+
+			this.document.getById( 'cke_' + this.id ).setState( state );
+
+			this._.state = state;
+		}
+	}
+});
+
+CKEDITOR.ui.prototype.addRichCombo = function( name, definition )
+{
+	this.add( name, CKEDITOR.UI_RICHCOMBO, definition );
+};
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/font/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/font/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/font/plugin.js	(revision 2000)
@@ -0,0 +1,227 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	function addCombo( editor, comboName, styleType, lang, entries, defaultLabel, styleDefinition )
+	{
+		var config = editor.config;
+
+		// Gets the list of fonts from the settings.
+		var names = entries.split( ';' ),
+			values = [];
+
+		// Create style objects for all fonts.
+		var styles = {};
+		for ( var i = 0 ; i < names.length ; i++ )
+		{
+			var vars = {};
+			var parts = names[ i ].split( '/' );
+
+			var name = names[ i ] = parts[ 0 ];
+			vars[ styleType ] = values[ i ] = parts[ 1 ] || name;
+
+			styles[ name ] = new CKEDITOR.style( styleDefinition, vars );
+		}
+
+		editor.ui.addRichCombo( comboName,
+			{
+				label : lang.label,
+				title : lang.panelTitle,
+				voiceLabel : lang.voiceLabel,
+				className : 'cke_' + ( styleType == 'size' ? 'fontSize' : 'font' ),
+				multiSelect : false,
+
+				panel :
+				{
+					css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ].concat( config.contentsCss ),
+					voiceLabel : lang.panelVoiceLabel
+				},
+
+				init : function()
+				{
+					this.startGroup( lang.panelTitle );
+
+					for ( var i = 0 ; i < names.length ; i++ )
+					{
+						var name = names[ i ];
+
+						// Add the tag entry to the panel list.
+						this.add( name, '<span style="font-' + styleType + ':' + values[ i ] + '">' + name + '</span>', name );
+					}
+				},
+
+				onClick : function( value )
+				{
+					editor.focus();
+					editor.fire( 'saveSnapshot' );
+
+					var style = styles[ value ];
+
+					if ( this.getValue() == value )
+						style.remove( editor.document );
+					else
+						style.apply( editor.document );
+
+					editor.fire( 'saveSnapshot' );
+				},
+
+				onRender : function()
+				{
+					editor.on( 'selectionChange', function( ev )
+						{
+							var currentValue = this.getValue();
+
+							var elementPath = ev.data.path,
+								elements = elementPath.elements;
+
+							// For each element into the elements path.
+							for ( var i = 0, element ; i < elements.length ; i++ )
+							{
+								element = elements[i];
+
+								// Check if the element is removable by any of
+								// the styles.
+								for ( var value in styles )
+								{
+									if ( styles[ value ].checkElementRemovable( element, true ) )
+									{
+										if ( value != currentValue )
+											this.setValue( value );
+										return;
+									}
+								}
+							}
+
+							// If no styles match, just empty it.
+							this.setValue( '', defaultLabel );
+						},
+						this);
+				}
+			});
+	}
+
+	CKEDITOR.plugins.add( 'font',
+	{
+		requires : [ 'richcombo', 'styles' ],
+
+		init : function( editor )
+		{
+			var config = editor.config;
+
+			addCombo( editor, 'Font', 'family', editor.lang.font, config.font_names, config.font_defaultLabel, config.font_style );
+			addCombo( editor, 'FontSize', 'size', editor.lang.fontSize, config.fontSize_sizes, config.fontSize_defaultLabel, config.fontSize_style );
+		}
+	});
+})();
+
+/**
+ * The list of fonts names to be displayed in the Font combo in the toolbar.
+ * Entries are separated by semi-colons (;), while it's possible to have more
+ * than one font for each entry, in the HTML way (separated by comma).
+ *
+ * A display name may be optionally defined by prefixing the entries with the
+ * name and the slash character. For example, "Arial/Arial, Helvetica, sans-serif"
+ * will be displayed as "Arial" in the list, but will be outputted as
+ * "Arial, Helvetica, sans-serif".
+ * @type String
+ * @example
+ * config.font_names =
+ *     'Arial/Arial, Helvetica, sans-serif;' +
+ *     'Times New Roman/Times New Roman, Times, serif;' +
+ *     'Verdana';
+ * @example
+ * config.font_names = 'Arial;Times New Roman;Verdana';
+ */
+CKEDITOR.config.font_names =
+	'Arial/Arial, Helvetica, sans-serif;' +
+	'Comic Sans MS/Comic Sans MS, cursive;' +
+	'Courier New/Courier New, Courier, monospace;' +
+	'Georgia/Georgia, serif;' +
+	'Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;' +
+	'Tahoma/Tahoma, Geneva, sans-serif;' +
+	'Times New Roman/Times New Roman, Times, serif;' +
+	'Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;' +
+	'Verdana/Verdana, Geneva, sans-serif';
+
+/**
+ * The text to be displayed in the Font combo is none of the available values
+ * matches the current cursor position or text selection.
+ * @type String
+ * @example
+ * // If the default site font is Arial, we may making it more explicit to the end user.
+ * config.font_defaultLabel = 'Arial';
+ */
+CKEDITOR.config.font_defaultLabel = '';
+
+/**
+ * The style definition to be used to apply the font in the text.
+ * @type Object
+ * @example
+ * // This is actually the default value for it.
+ * config.font_style =
+ *     {
+ *         element		: 'span',
+ *         styles		: { 'font-family' : '#(family)' },
+ *         overrides	: [ { element : 'font', attributes : { 'face' : null } } ]
+ *     };
+ */
+CKEDITOR.config.font_style =
+	{
+		element		: 'span',
+		styles		: { 'font-family' : '#(family)' },
+		overrides	: [ { element : 'font', attributes : { 'face' : null } } ]
+	};
+
+/**
+ * The list of fonts size to be displayed in the Font Size combo in the
+ * toolbar. Entries are separated by semi-colons (;).
+ *
+ * Any kind of "CSS like" size can be used, like "12px", "2.3em", "130%",
+ * "larger" or "x-small".
+ *
+ * A display name may be optionally defined by prefixing the entries with the
+ * name and the slash character. For example, "Bigger Font/14px" will be
+ * displayed as "Bigger Font" in the list, but will be outputted as "14px".
+ * @type String
+ * @default '8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px'
+ * @example
+ * config.fontSize_sizes = '16/16px;24/24px;48/48px;';
+ * @example
+ * config.fontSize_sizes = '12px;2.3em;130%;larger;x-small';
+ * @example
+ * config.fontSize_sizes = '12 Pixels/12px;Big/2.3em;30 Percent More/130%;Bigger/larger;Very Small/x-small';
+ */
+CKEDITOR.config.fontSize_sizes =
+	'8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px';
+
+/**
+ * The text to be displayed in the Font Size combo is none of the available
+ * values matches the current cursor position or text selection.
+ * @type String
+ * @example
+ * // If the default site font size is 12px, we may making it more explicit to the end user.
+ * config.fontSize_defaultLabel = '12px';
+ */
+CKEDITOR.config.fontSize_defaultLabel = '';
+
+/**
+ * The style definition to be used to apply the font size in the text.
+ * @type Object
+ * @example
+ * // This is actually the default value for it.
+ * config.fontSize_style =
+ *     {
+ *         element		: 'span',
+ *         styles		: { 'font-size' : '#(size)' },
+ *         overrides	: [ { element : 'font', attributes : { 'size' : null } } ]
+ *     };
+ */
+CKEDITOR.config.fontSize_style =
+	{
+		element		: 'span',
+		styles		: { 'font-size' : '#(size)' },
+		overrides	: [ { element : 'font', attributes : { 'size' : null } } ]
+	};
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/tabletools/dialogs/tableCell.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/tabletools/dialogs/tableCell.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/tabletools/dialogs/tableCell.js	(revision 2000)
@@ -0,0 +1,430 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'cellProperties', function( editor )
+	{
+		var langTable = editor.lang.table;
+		var langCell = langTable.cell;
+		var langCommon = editor.lang.common;
+		var validate = CKEDITOR.dialog.validate;
+		var widthPattern = /^(\d+(?:\.\d+)?)(px|%)$/,
+			heightPattern = /^(\d+(?:\.\d+)?)px$/;
+		var bind = CKEDITOR.tools.bind;
+
+		function spacer()
+		{
+			return { type : 'html', html : '&nbsp;' };
+		}
+
+		/**
+		 *
+		 * @param dialogName
+		 * @param callback [ childDialog ]
+		 */
+		function getDialogValue( dialogName, callback )
+		{
+			var onOk = function()
+			{
+				releaseHandlers( this );
+				callback( this );
+			};
+			var onCancel = function()
+			{
+				releaseHandlers( this );
+			};
+			var bindToDialog = function( dialog )
+			{
+				dialog.on( 'ok', onOk );
+				dialog.on( 'cancel', onCancel );
+			};
+			var releaseHandlers = function( dialog )
+			{
+				dialog.removeListener( 'ok', onOk );
+				dialog.removeListener( 'cancel', onCancel );
+			};
+			editor.execCommand( dialogName );
+			if ( editor._.storedDialogs.colordialog )
+				bindToDialog( editor._.storedDialogs.colordialog );
+			else
+			{
+				CKEDITOR.on( 'dialogDefinition', function( e )
+				{
+					if ( e.data.name != dialogName )
+						return;
+
+					var definition = e.data.definition;
+
+					e.removeListener();
+					definition.onLoad = CKEDITOR.tools.override( definition.onLoad, function( orginal )
+					{
+						return function()
+						{
+							bindToDialog( this );
+							definition.onLoad = orginal;
+							if ( typeof orginal == 'function' )
+								orginal.call( this );
+						};
+					} );
+				});
+			}
+		}
+
+		return {
+			title : langCell.title,
+			minWidth : CKEDITOR.env.ie && CKEDITOR.env.quirks ? 550 : 480,
+			minHeight : CKEDITOR.env.ie ? ( CKEDITOR.env.quirks ? 180 : 150 ) : 140,
+			contents : [
+				{
+					id : 'info',
+					label : langCell.title,
+					accessKey : 'I',
+					elements :
+					[
+						{
+							type : 'hbox',
+							widths : [ '40%', '5%', '40%' ],
+							children :
+							[
+								{
+									type : 'vbox',
+									padding : 0,
+									children :
+									[
+										{
+											type : 'hbox',
+											widths : [ '70%', '30%' ],
+											children :
+											[
+												{
+													type : 'text',
+													id : 'width',
+													label : langTable.width,
+													widths : [ '71%', '29%' ],
+													labelLayout : 'horizontal',
+													validate : validate[ 'number' ]( langCell.invalidWidth ),
+													setup : function( selectedCell )
+													{
+														var widthMatch = widthPattern.exec( selectedCell.$.style.width );
+														if ( widthMatch )
+															this.setValue( widthMatch[1] );
+													},
+													commit : function( selectedCell )
+													{
+														var unit = this.getDialog().getValueOf( 'info', 'widthType' );
+														if ( this.getValue() !== '' )
+															selectedCell.$.style.width = this.getValue() + unit;
+														else
+															selectedCell.$.style.width = '';
+													},
+													'default' : ''
+												},
+												{
+													type : 'select',
+													id : 'widthType',
+													labelLayout : 'horizontal',
+													widths : [ '0%', '100%' ],
+													label : '',
+													'default' : 'px',
+													items :
+													[
+														[ langTable.widthPx, 'px' ],
+														[ langTable.widthPc, '%' ]
+													],
+													setup : function( selectedCell )
+													{
+														var widthMatch = widthPattern.exec( selectedCell.$.style.width );
+														if ( widthMatch )
+															this.setValue( widthMatch[2] );
+													}
+												}
+											]
+										},
+										{
+											type : 'hbox',
+											widths : [ '70%', '30%' ],
+											children :
+											[
+												{
+													type : 'text',
+													id : 'height',
+													label : langTable.height,
+													'default' : '',
+													widths : [ '71%', '29%' ],
+													labelLayout : 'horizontal',
+													validate : validate[ 'number' ]( langCell.invalidHeight ),
+													setup : function( selectedCell )
+													{
+														var heightMatch = heightPattern.exec( selectedCell.$.style.height );
+														if ( heightMatch )
+															this.setValue( heightMatch[1] );
+													},
+													commit : function( selectedCell )
+													{
+														if ( this.getValue() !== '' )
+															selectedCell.$.style.height = this.getValue() + 'px';
+														else
+															selectedCell.$.style.height = '';
+													}
+												},
+												{
+													type : 'html',
+													html : langTable.widthPx
+												}
+											]
+										},
+										spacer(),
+										{
+											type : 'select',
+											id : 'wordWrap',
+											labelLayout : 'horizontal',
+											label : langCell.wordWrap,
+											widths : [ '50%', '50%' ],
+											'default' : 'yes',
+											items :
+											[
+												[ langCell.yes, 'yes' ],
+												[ langCell.no, 'no' ]
+											],
+											commit : function( selectedCell )
+											{
+												if ( this.getValue() == 'no' )
+													selectedCell.setAttribute( 'noWrap', 'nowrap' );
+												else
+													selectedCell.removeAttribute( 'noWrap' );
+											}
+										},
+										spacer(),
+										{
+											type : 'select',
+											id : 'hAlign',
+											labelLayout : 'horizontal',
+											label : langCell.hAlign,
+											widths : [ '50%', '50%' ],
+											'default' : '',
+											items :
+											[
+												[ langCommon.notSet, '' ],
+												[ langTable.alignLeft, 'left' ],
+												[ langTable.alignCenter, 'center' ],
+												[ langTable.alignRight, 'right' ]
+											],
+											setup : function( selectedCell )
+											{
+												this.setValue( selectedCell.getAttribute( 'align' ) || '' );
+											},
+											commit : function( selectedCell )
+											{
+												if ( this.getValue() )
+													selectedCell.setAttribute( 'align', this.getValue() );
+												else
+													selectedCell.removeAttribute( 'align' );
+											}
+										},
+										{
+											type : 'select',
+											id : 'vAlign',
+											labelLayout : 'horizontal',
+											label : langCell.vAlign,
+											widths : [ '50%', '50%' ],
+											'default' : '',
+											items :
+											[
+												[ langCommon.notSet, '' ],
+												[ langCell.alignTop, 'top' ],
+												[ langCell.alignMiddle, 'middle' ],
+												[ langCell.alignBottom, 'bottom' ],
+												[ langCell.alignBaseline, 'baseline' ]
+											],
+											setup : function( selectedCell )
+											{
+												this.setValue( selectedCell.getAttribute( 'vAlign' ) || '' );
+											},
+											commit : function( selectedCell )
+											{
+												if ( this.getValue() )
+													selectedCell.setAttribute( 'vAlign', this.getValue() );
+												else
+													selectedCell.removeAttribute( 'vAlign' );
+											}
+										}
+									]
+								},
+								spacer(),
+								{
+									type : 'vbox',
+									padding : 0,
+									children :
+									[
+										{
+											type : 'select',
+											id : 'cellType',
+											label : langCell.cellType,
+											labelLayout : 'horizontal',
+											widths : [ '50%', '50%' ],
+											'default' : 'td',
+											items :
+											[
+												[ langCell.data, 'td' ],
+												[ langCell.header, 'th' ]
+											],
+											setup : function( selectedCell )
+											{
+												this.setValue( selectedCell.getName() );
+											},
+											commit : function( selectedCell )
+											{
+												selectedCell.renameNode( this.getValue() );
+											}
+										},
+										spacer(),
+										{
+											type : 'text',
+											id : 'rowSpan',
+											label : langCell.rowSpan,
+											labelLayout : 'horizontal',
+											widths : [ '50%', '50%' ],
+											'default' : '',
+											validate : validate.integer( langCell.invalidRowSpan ),
+											setup : function( selectedCell )
+											{
+												this.setValue( selectedCell.getAttribute( 'rowSpan' ) || '' );
+											},
+											commit : function( selectedCell )
+											{
+												if ( this.getValue() )
+													selectedCell.setAttribute( 'rowSpan', this.getValue() );
+												else
+													selectedCell.removeAttribute( 'rowSpan' );
+											}
+										},
+										{
+											type : 'text',
+											id : 'colSpan',
+											label : langCell.colSpan,
+											labelLayout : 'horizontal',
+											widths : [ '50%', '50%' ],
+											'default' : '',
+											validate : validate.integer( langCell.invalidColSpan ),
+											setup : function( selectedCell )
+											{
+												this.setValue( selectedCell.getAttribute( 'colSpan' ) || '' );
+											},
+											commit : function( selectedCell )
+											{
+												if ( this.getValue() )
+													selectedCell.setAttribute( 'colSpan', this.getValue() );
+												else
+													selectedCell.removeAttribute( 'colSpan' );
+											}
+										},
+										spacer(),
+										{
+											type : 'hbox',
+											padding : 0,
+											widths : [ '80%', '20%' ],
+											children :
+											[
+												{
+													type : 'text',
+													id : 'bgColor',
+													label : langCell.bgColor,
+													labelLayout : 'horizontal',
+													widths : [ '70%', '30%' ],
+													'default' : '',
+													setup : function( selectedCell )
+													{
+														this.setValue( selectedCell.getAttribute( 'bgColor' ) || '' );
+													},
+													commit : function( selectedCell )
+													{
+														if ( this.getValue() )
+															selectedCell.setAttribute( 'bgColor', this.getValue() );
+														else
+															selectedCell.removeAttribute( 'bgColor' );
+													}
+												},
+												{
+													type : 'button',
+													id : 'bgColorChoose',
+													label : langCell.chooseColor,
+													style : 'margin-left: 10px',
+													onClick : function()
+													{
+														var self = this;
+														getDialogValue( 'colordialog', function( colorDialog )
+														{
+															self.getDialog().getContentElement( 'info', 'bgColor' ).setValue(
+																colorDialog.getContentElement( 'picker', 'selectedColor' ).getValue()
+															);
+														} );
+													}
+												}
+											]
+										},
+										spacer(),
+										{
+											type : 'hbox',
+											padding : 0,
+											widths : [ '80%', '20%' ],
+											children :
+											[
+												{
+													type : 'text',
+													id : 'borderColor',
+													label : langCell.borderColor,
+													labelLayout : 'horizontal',
+													widths : [ '70%', '30%' ],
+													'default' : '',
+													setup : function( selectedCell )
+													{
+														this.setValue( selectedCell.getStyle( 'border-color' ) || '' );
+													},
+													commit : function( selectedCell )
+													{
+														if ( this.getValue() )
+															selectedCell.setStyle( 'border-color', this.getValue() );
+														else
+															selectedCell.removeStyle( 'border-color' );
+													}
+												},
+												{
+													type : 'button',
+													id : 'borderColorChoose',
+													label : langCell.chooseColor,
+													style : 'margin-left: 10px',
+													onClick : function()
+													{
+														var self = this;
+														getDialogValue( 'colordialog', function( colorDialog )
+														{
+															self.getDialog().getContentElement( 'info', 'borderColor' ).setValue(
+																colorDialog.getContentElement( 'picker', 'selectedColor' ).getValue()
+															);
+														} );
+													}
+												}
+											]
+										}
+									]
+								}
+							]
+						}
+					]
+				}
+			],
+			onShow : function()
+			{
+				this.cells = CKEDITOR.plugins.tabletools.getSelectedCells(
+					this._.editor.getSelection() );
+				this.setupContent( this.cells[ 0 ] );
+			},
+			onOk : function()
+			{
+				var cells = this.cells;
+				for ( var i = 0 ; i < cells.length ; i++ )
+					this.commitContent( cells[ i ] );
+			}
+		};
+	} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/tabletools/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/tabletools/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/tabletools/plugin.js	(revision 2000)
@@ -0,0 +1,701 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	function removeRawAttribute( $node, attr )
+	{
+		if ( CKEDITOR.env.ie )
+			$node.removeAttribute( attr );
+		else
+			delete $node[ attr ];
+	}
+
+	var cellNodeRegex = /^(?:td|th)$/;
+
+	function getSelectedCells( selection )
+	{
+		// Walker will try to split text nodes, which will make the current selection
+		// invalid. So save bookmarks before doing anything.
+		var bookmarks = selection.createBookmarks();
+
+		var ranges = selection.getRanges();
+		var retval = [];
+		var database = {};
+
+		function moveOutOfCellGuard( node )
+		{
+			// Apply to the first cell only.
+			if ( retval.length > 0 )
+				return;
+
+			// If we are exiting from the first </td>, then the td should definitely be
+			// included.
+			if ( node.type == CKEDITOR.NODE_ELEMENT && cellNodeRegex.test( node.getName() )
+					&& !node.getCustomData( 'selected_cell' ) )
+			{
+				CKEDITOR.dom.element.setMarker( database, node, 'selected_cell', true );
+				retval.push( node );
+			}
+		}
+
+		for ( var i = 0 ; i < ranges.length ; i++ )
+		{
+			var range = ranges[ i ];
+
+			if ( range.collapsed )
+			{
+				// Walker does not handle collapsed ranges yet - fall back to old API.
+				var startNode = range.getCommonAncestor();
+				var nearestCell = startNode.getAscendant( 'td', true ) || startNode.getAscendant( 'th', true );
+				if ( nearestCell )
+					retval.push( nearestCell );
+			}
+			else
+			{
+				var walker = new CKEDITOR.dom.walker( range );
+				var node;
+				walker.guard = moveOutOfCellGuard;
+
+				while ( ( node = walker.next() ) )
+				{
+					// If may be possible for us to have a range like this:
+					// <td>^1</td><td>^2</td>
+					// The 2nd td shouldn't be included.
+					//
+					// So we have to take care to include a td we've entered only when we've
+					// walked into its children.
+
+					var parent = node.getParent();
+					if ( parent && cellNodeRegex.test( parent.getName() ) && !parent.getCustomData( 'selected_cell' ) )
+					{
+						CKEDITOR.dom.element.setMarker( database, parent, 'selected_cell', true );
+						retval.push( parent );
+					}
+				}
+			}
+		}
+
+		CKEDITOR.dom.element.clearAllMarkers( database );
+
+		// Restore selection position.
+		selection.selectBookmarks( bookmarks );
+
+		return retval;
+	}
+
+	function createTableMap( $refCell )
+	{
+		var refCell = new CKEDITOR.dom.element( $refCell );
+		var $table = ( refCell.getName() == 'table' ? $refCell : refCell.getAscendant( 'table' ) ).$;
+		var $rows = $table.rows;
+
+		// Row and column counters.
+		var r = -1;
+		var map = [];
+		for ( var i = 0 ; i < $rows.length ; i++ )
+		{
+			r++;
+			if ( !map[ r ] )
+				map[ r ] = [];
+
+			var c = -1;
+
+			for ( var j = 0 ; j < $rows[ i ].cells.length ; j++ )
+			{
+				var $cell = $rows[ i ].cells[ j ];
+
+				c++;
+				while ( map[ r ][ c ] )
+					c++;
+
+				var colSpan = isNaN( $cell.colSpan ) ? 1 : $cell.colSpan;
+				var rowSpan = isNaN( $cell.rowSpan ) ? 1 : $cell.rowSpan;
+
+				for ( var rs = 0 ; rs < rowSpan ; rs++ )
+				{
+					if ( !map[ r + rs ] )
+						map[ r + rs ] = [];
+
+					for ( var cs = 0 ; cs < colSpan ; cs++ )
+						map [ r + rs ][ c + cs ] = $rows[ i ].cells[ j ];
+				}
+
+				c += colSpan - 1;
+			}
+		}
+
+		return map;
+	}
+
+	function installTableMap( tableMap, $table )
+	{
+		/*
+		 * IE BUG: rowSpan is always 1 in IE if the cell isn't attached to a row. So
+		 * store is separately in another attribute. (#1917)
+		 */
+		var rowSpanAttr = CKEDITOR.env.ie ? '_cke_rowspan' : 'rowSpan';
+
+		/*
+		 * Disconnect all the cells in tableMap from their parents, set all colSpan
+		 * and rowSpan attributes to 1.
+		 */
+		for ( var i = 0 ; i < tableMap.length ; i++ )
+		{
+			for ( var j = 0 ; j < tableMap[ i ].length ; j++ )
+			{
+				var $cell = tableMap[ i ][ j ];
+				if ( $cell.parentNode )
+					$cell.parentNode.removeChild( $cell );
+				$cell.colSpan = $cell[ rowSpanAttr ] = 1;
+			}
+		}
+
+		// Scan by rows and set colSpan.
+		var maxCol = 0;
+		for ( i = 0 ; i < tableMap.length ; i++ )
+		{
+			for ( j = 0 ; j < tableMap[ i ].length ; j++ )
+			{
+				$cell = tableMap[ i ][ j ];
+				if ( !$cell )
+					continue;
+				if ( j > maxCol )
+					maxCol = j;
+				if ( $cell[ '_cke_colScanned' ] )
+					continue;
+				if ( tableMap[ i ][ j - 1 ] == $cell )
+					$cell.colSpan++;
+				if ( tableMap[ i ][ j + 1 ] != $cell )
+					$cell[ '_cke_colScanned' ] = 1;
+			}
+		}
+
+		// Scan by columns and set rowSpan.
+		for ( i = 0 ; i <= maxCol ; i++ )
+		{
+			for ( j = 0 ; j < tableMap.length ; j++ )
+			{
+				if ( !tableMap[ j ] )
+					continue;
+				$cell = tableMap[ j ][ i ];
+				if ( !$cell || $cell[ '_cke_rowScanned' ] )
+					continue;
+				if ( tableMap[ j - 1 ] && tableMap[ j - 1 ][ i ] == $cell )
+					$cell[ rowSpanAttr ]++;
+				if ( !tableMap[ j + 1 ] || tableMap[ j + 1 ][ i ] != $cell  )
+					$cell[ '_cke_rowScanned' ] = 1;
+			}
+		}
+
+		// Clear all temporary flags.
+		for ( i = 0 ; i < tableMap.length ; i++ )
+		{
+			for ( j = 0 ; j < tableMap[ i ].length ; j++ )
+			{
+				$cell = tableMap[ i ][ j ];
+				removeRawAttribute( $cell, '_cke_colScanned' );
+				removeRawAttribute( $cell, '_cke_rowScanned' );
+			}
+		}
+
+		// Insert physical rows and columns to table.
+		for ( i = 0 ; i < tableMap.length ; i++ )
+		{
+			var $row = $table.ownerDocument.createElement( 'tr' );
+			for ( j = 0 ; j < tableMap[ i ].length ; )
+			{
+				$cell = tableMap[ i ][ j ];
+				if ( tableMap[ i - 1 ] && tableMap[ i - 1 ][ j ] == $cell )
+				{
+					j += $cell.colSpan;
+					continue;
+				}
+				$row.appendChild( $cell );
+				if ( rowSpanAttr != 'rowSpan' )
+				{
+					$cell.rowSpan = $cell[ rowSpanAttr ];
+					$cell.removeAttribute( rowSpanAttr );
+				}
+				j += $cell.colSpan;
+				if ( $cell.colSpan == 1 )
+					$cell.removeAttribute( 'colSpan' );
+				if ( $cell.rowSpan == 1 )
+					$cell.removeAttribute( 'rowSpan' );
+			}
+
+			if ( CKEDITOR.env.ie )
+				$table.rows[ i ].replaceNode( $row );
+			else
+			{
+				var dest = new CKEDITOR.dom.element( $table.rows[ i ] );
+				var src = new CKEDITOR.dom.element( $row );
+				dest.setHtml( '' );
+				src.moveChildren( dest );
+			}
+		}
+	}
+
+	function clearRow( $tr )
+	{
+		// Get the array of row's cells.
+		var $cells = $tr.cells;
+
+		// Empty all cells.
+		for ( var i = 0 ; i < $cells.length ; i++ )
+		{
+			$cells[ i ].innerHTML = '';
+
+			if ( !CKEDITOR.env.ie )
+				( new CKEDITOR.dom.element( $cells[ i ] ) ).appendBogus();
+		}
+	}
+
+	function insertRow( selection, insertBefore )
+	{
+		// Get the row where the selection is placed in.
+		var row = selection.getStartElement().getAscendant( 'tr' );
+		if ( !row )
+			return;
+
+		// Create a clone of the row.
+		var newRow = row.clone( true );
+
+		// Insert the new row before of it.
+		newRow.insertBefore( row );
+
+		// Clean one of the rows to produce the illusion of inserting an empty row
+		// before or after.
+		clearRow( insertBefore ? newRow.$ : row.$ );
+	}
+
+	function deleteRows( selectionOrRow )
+	{
+		if ( selectionOrRow instanceof CKEDITOR.dom.selection )
+		{
+			var cells = getSelectedCells( selectionOrRow );
+			var rowsToDelete = [];
+
+			// Queue up the rows - it's possible and likely that we have duplicates.
+			for ( var i = 0 ; i < cells.length ; i++ )
+			{
+				var row = cells[ i ].getParent();
+				rowsToDelete[ row.$.rowIndex ] = row;
+			}
+
+			for ( i = rowsToDelete.length ; i >= 0 ; i-- )
+			{
+				if ( rowsToDelete[ i ] )
+					deleteRows( rowsToDelete[ i ] );
+			}
+		}
+		else if ( selectionOrRow instanceof CKEDITOR.dom.element )
+		{
+			var table = selectionOrRow.getAscendant( 'table' );
+
+			if ( table.$.rows.length == 1 )
+				table.remove();
+			else
+				selectionOrRow.remove();
+		}
+	}
+
+	function insertColumn( selection, insertBefore )
+	{
+		// Get the cell where the selection is placed in.
+		var startElement = selection.getStartElement();
+		var cell = startElement.getAscendant( 'td', true ) || startElement.getAscendant( 'th', true );
+
+		if ( !cell )
+			return;
+
+		// Get the cell's table.
+		var table = cell.getAscendant( 'table' );
+		var cellIndex = cell.$.cellIndex;
+
+		// Loop through all rows available in the table.
+		for ( var i = 0 ; i < table.$.rows.length ; i++ )
+		{
+			var $row = table.$.rows[ i ];
+
+			// If the row doesn't have enough cells, ignore it.
+			if ( $row.cells.length < ( cellIndex + 1 ) )
+				continue;
+
+			cell = new CKEDITOR.dom.element( $row.cells[ cellIndex ].cloneNode( false ) );
+
+			if ( !CKEDITOR.env.ie )
+				cell.appendBogus();
+
+			// Get back the currently selected cell.
+			var baseCell = new CKEDITOR.dom.element( $row.cells[ cellIndex ] );
+			if ( insertBefore )
+				cell.insertBefore( baseCell );
+			else
+				cell.insertAfter( baseCell );
+		}
+	}
+
+	function deleteColumns( selectionOrCell )
+	{
+		if ( selectionOrCell instanceof CKEDITOR.dom.selection )
+		{
+			var colsToDelete = getSelectedCells( selectionOrCell );
+			for ( var i = colsToDelete.length ; i >= 0 ; i-- )
+			{
+				if ( colsToDelete[ i ] )
+					deleteColumns( colsToDelete[ i ] );
+			}
+		}
+		else if ( selectionOrCell instanceof CKEDITOR.dom.element )
+		{
+			// Get the cell's table.
+			var table = selectionOrCell.getAscendant( 'table' );
+
+			// Get the cell index.
+			var cellIndex = selectionOrCell.$.cellIndex;
+
+			/*
+			 * Loop through all rows from down to up, coz it's possible that some rows
+			 * will be deleted.
+			 */
+			for ( i = table.$.rows.length - 1 ; i >= 0 ; i-- )
+			{
+				// Get the row.
+				var row = new CKEDITOR.dom.element( table.$.rows[ i ] );
+
+				// If the cell to be removed is the first one and the row has just one cell.
+				if ( !cellIndex && row.$.cells.length == 1 )
+				{
+					deleteRows( row );
+					continue;
+				}
+
+				// Else, just delete the cell.
+				if ( row.$.cells[ cellIndex ] )
+					row.$.removeChild( row.$.cells[ cellIndex ] );
+			}
+		}
+	}
+
+	function insertCell( selection, insertBefore )
+	{
+		var startElement = selection.getStartElement();
+		var cell = startElement.getAscendant( 'td', true ) || startElement.getAscendant( 'th', true );
+
+		if ( !cell )
+			return;
+
+		// Create the new cell element to be added.
+		var newCell = cell.clone();
+		if ( !CKEDITOR.env.ie )
+			newCell.appendBogus();
+
+		if ( insertBefore )
+			newCell.insertBefore( cell );
+		else
+			newCell.insertAfter( cell );
+	}
+
+	function deleteCells( selectionOrCell )
+	{
+		if ( selectionOrCell instanceof CKEDITOR.dom.selection )
+		{
+			var cellsToDelete = getSelectedCells( selectionOrCell );
+			for ( var i = cellsToDelete.length - 1 ; i >= 0 ; i-- )
+				deleteCells( cellsToDelete[ i ] );
+		}
+		else if ( selectionOrCell instanceof CKEDITOR.dom.element )
+		{
+			if ( selectionOrCell.getParent().getChildCount() == 1 )
+				selectionOrCell.getParent().remove();
+			else
+				selectionOrCell.remove();
+		}
+	}
+
+	// Context menu on table caption incorrect (#3834)
+	var contextMenuTags = { thead : 1, tbody : 1, tfoot : 1, td : 1, tr : 1, th : 1 };
+
+	CKEDITOR.plugins.tabletools =
+	{
+		init : function( editor )
+		{
+			var lang = editor.lang.table;
+
+			editor.addCommand( 'cellProperties', new CKEDITOR.dialogCommand( 'cellProperties' ) );
+			CKEDITOR.dialog.add( 'cellProperties', this.path + 'dialogs/tableCell.js' );
+
+			editor.addCommand( 'tableDelete',
+				{
+					exec : function( editor )
+					{
+						var selection = editor.getSelection();
+						var startElement = selection && selection.getStartElement();
+						var table = startElement && startElement.getAscendant( 'table', true );
+
+						if ( !table )
+							return;
+
+						// Maintain the selection point at where the table was deleted.
+						selection.selectElement( table );
+						var range = selection.getRanges()[0];
+						range.collapse();
+						selection.selectRanges( [ range ] );
+
+						// If the table's parent has only one child, remove it as well.
+						if ( table.getParent().getChildCount() == 1 )
+							table.getParent().remove();
+						else
+							table.remove();
+					}
+				} );
+
+			editor.addCommand( 'rowDelete',
+				{
+					exec : function( editor )
+					{
+						var selection = editor.getSelection();
+						deleteRows( selection );
+					}
+				} );
+
+			editor.addCommand( 'rowInsertBefore',
+				{
+					exec : function( editor )
+					{
+						var selection = editor.getSelection();
+						insertRow( selection, true );
+					}
+				} );
+
+			editor.addCommand( 'rowInsertAfter',
+				{
+					exec : function( editor )
+					{
+						var selection = editor.getSelection();
+						insertRow( selection );
+					}
+				} );
+
+			editor.addCommand( 'columnDelete',
+				{
+					exec : function( editor )
+					{
+						var selection = editor.getSelection();
+						deleteColumns( selection );
+					}
+				} );
+
+			editor.addCommand( 'columnInsertBefore',
+				{
+					exec : function( editor )
+					{
+						var selection = editor.getSelection();
+						insertColumn( selection, true );
+					}
+				} );
+
+			editor.addCommand( 'columnInsertAfter',
+				{
+					exec : function( editor )
+					{
+						var selection = editor.getSelection();
+						insertColumn( selection );
+					}
+				} );
+
+			editor.addCommand( 'cellDelete',
+				{
+					exec : function( editor )
+					{
+						var selection = editor.getSelection();
+						deleteCells( selection );
+					}
+				} );
+
+			editor.addCommand( 'cellInsertBefore',
+				{
+					exec : function( editor )
+					{
+						var selection = editor.getSelection();
+						insertCell( selection, true );
+					}
+				} );
+
+			editor.addCommand( 'cellInsertAfter',
+				{
+					exec : function( editor )
+					{
+						var selection = editor.getSelection();
+						insertCell( selection );
+					}
+				} );
+
+			// If the "menu" plugin is loaded, register the menu items.
+			if ( editor.addMenuItems )
+			{
+				editor.addMenuItems(
+					{
+						tablecell :
+						{
+							label : lang.cell.menu,
+							group : 'tablecell',
+							order : 1,
+							getItems : function()
+							{
+								var cells = getSelectedCells( editor.getSelection() );
+								return {
+									tablecell_insertBefore : CKEDITOR.TRISTATE_OFF,
+									tablecell_insertAfter : CKEDITOR.TRISTATE_OFF,
+									tablecell_delete : CKEDITOR.TRISTATE_OFF,
+									tablecell_properties : cells.length > 0 ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED
+								};
+							}
+						},
+
+						tablecell_insertBefore :
+						{
+							label : lang.cell.insertBefore,
+							group : 'tablecell',
+							command : 'cellInsertBefore',
+							order : 5
+						},
+
+						tablecell_insertAfter :
+						{
+							label : lang.cell.insertAfter,
+							group : 'tablecell',
+							command : 'cellInsertAfter',
+							order : 10
+						},
+
+						tablecell_delete :
+						{
+							label : lang.cell.deleteCell,
+							group : 'tablecell',
+							command : 'cellDelete',
+							order : 15
+						},
+
+						tablecell_properties :
+						{
+							label : lang.cell.title,
+							group : 'tablecellproperties',
+							command : 'cellProperties',
+							order : 20
+						},
+
+						tablerow :
+						{
+							label : lang.row.menu,
+							group : 'tablerow',
+							order : 1,
+							getItems : function()
+							{
+								return {
+									tablerow_insertBefore : CKEDITOR.TRISTATE_OFF,
+									tablerow_insertAfter : CKEDITOR.TRISTATE_OFF,
+									tablerow_delete : CKEDITOR.TRISTATE_OFF
+								};
+							}
+						},
+
+						tablerow_insertBefore :
+						{
+							label : lang.row.insertBefore,
+							group : 'tablerow',
+							command : 'rowInsertBefore',
+							order : 5
+						},
+
+						tablerow_insertAfter :
+						{
+							label : lang.row.insertAfter,
+							group : 'tablerow',
+							command : 'rowInsertAfter',
+							order : 10
+						},
+
+						tablerow_delete :
+						{
+							label : lang.row.deleteRow,
+							group : 'tablerow',
+							command : 'rowDelete',
+							order : 15
+						},
+
+						tablecolumn :
+						{
+							label : lang.column.menu,
+							group : 'tablecolumn',
+							order : 1,
+							getItems : function()
+							{
+								return {
+									tablecolumn_insertBefore : CKEDITOR.TRISTATE_OFF,
+									tablecolumn_insertAfter : CKEDITOR.TRISTATE_OFF,
+									tablecolumn_delete : CKEDITOR.TRISTATE_OFF
+								};
+							}
+						},
+
+						tablecolumn_insertBefore :
+						{
+							label : lang.column.insertBefore,
+							group : 'tablecolumn',
+							command : 'columnInsertBefore',
+							order : 5
+						},
+
+						tablecolumn_insertAfter :
+						{
+							label : lang.column.insertAfter,
+							group : 'tablecolumn',
+							command : 'columnInsertAfter',
+							order : 10
+						},
+
+						tablecolumn_delete :
+						{
+							label : lang.column.deleteColumn,
+							group : 'tablecolumn',
+							command : 'columnDelete',
+							order : 15
+						}
+					});
+			}
+
+			// If the "contextmenu" plugin is laoded, register the listeners.
+			if ( editor.contextMenu )
+			{
+				editor.contextMenu.addListener( function( element, selection )
+					{
+						if ( !element )
+							return null;
+
+						while ( element )
+						{
+							if ( element.getName() in contextMenuTags )
+							{
+								return {
+									tablecell : CKEDITOR.TRISTATE_OFF,
+									tablerow : CKEDITOR.TRISTATE_OFF,
+									tablecolumn : CKEDITOR.TRISTATE_OFF
+								};
+							}
+							element = element.getParent();
+						}
+
+						return null;
+					} );
+			}
+		},
+
+		getSelectedCells : getSelectedCells
+
+	};
+	CKEDITOR.plugins.add( 'tabletools', CKEDITOR.plugins.tabletools );
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/contextmenu/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/contextmenu/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/contextmenu/plugin.js	(revision 2000)
@@ -0,0 +1,178 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'contextmenu',
+{
+	requires : [ 'menu' ],
+
+	beforeInit : function( editor )
+	{
+		editor.contextMenu = new CKEDITOR.plugins.contextMenu( editor );
+
+		editor.addCommand( 'contextMenu',
+			{
+				exec : function()
+					{
+						editor.contextMenu.show( editor.document.getBody() );
+					}
+			});
+	}
+});
+
+CKEDITOR.plugins.contextMenu = CKEDITOR.tools.createClass(
+{
+	$ : function( editor )
+	{
+		this.id = 'cke_' + CKEDITOR.tools.getNextNumber();
+		this.editor = editor;
+		this._.listeners = [];
+		this._.functionId = CKEDITOR.tools.addFunction( function( commandName )
+			{
+				this._.panel.hide();
+				editor.focus();
+				editor.execCommand( commandName );
+			},
+			this);
+	},
+
+	_ :
+	{
+		onMenu : function( offsetParent, corner, offsetX, offsetY )
+		{
+			var menu = this._.menu,
+				editor = this.editor;
+
+			if ( menu )
+			{
+				menu.hide();
+				menu.removeAll();
+			}
+			else
+			{
+				menu = this._.menu = new CKEDITOR.menu( editor );
+				menu.onClick = CKEDITOR.tools.bind( function( item )
+				{
+					var noUnlock = true;
+					menu.hide();
+
+					if ( CKEDITOR.env.ie )
+						menu.onEscape();
+
+					if ( item.onClick )
+						item.onClick();
+					else if ( item.command )
+						editor.execCommand( item.command );
+
+					noUnlock = false;
+				}, this );
+
+				menu.onEscape = function()
+				{
+					editor.focus();
+
+					if ( CKEDITOR.env.ie )
+						editor.getSelection().unlock( true );
+				};
+			}
+
+			var listeners = this._.listeners,
+				includedItems = [];
+
+			var selection = this.editor.getSelection(),
+				element = selection && selection.getStartElement();
+
+			// Lock the selection in IE, so it can be restored when closing the
+			// menu.
+			if ( CKEDITOR.env.ie )
+				selection.lock();
+
+			menu.onHide = CKEDITOR.tools.bind( function()
+				{
+					menu.onHide = null;
+
+					if ( CKEDITOR.env.ie )
+						editor.getSelection().unlock();
+
+					this.onHide && this.onHide();
+				},
+				this );
+
+			// Call all listeners, filling the list of items to be displayed.
+			for ( var i = 0 ; i < listeners.length ; i++ )
+			{
+				var listenerItems = listeners[ i ]( element, selection );
+
+				if ( listenerItems )
+				{
+					for ( var itemName in listenerItems )
+					{
+						var item = this.editor.getMenuItem( itemName );
+
+						if ( item )
+						{
+							item.state = listenerItems[ itemName ];
+							menu.add( item );
+						}
+					}
+				}
+			}
+
+			menu.show( offsetParent, corner || ( editor.lang.dir == 'rtl' ? 2 : 1 ), offsetX, offsetY );
+		}
+	},
+
+	proto :
+	{
+		addTarget : function( element )
+		{
+			element.on( 'contextmenu', function( event )
+				{
+					var domEvent = event.data;
+
+					// Cancel the browser context menu.
+					domEvent.preventDefault();
+
+					var offsetParent = domEvent.getTarget().getDocument().getDocumentElement(),
+						offsetX = domEvent.$.clientX,
+						offsetY = domEvent.$.clientY;
+
+					CKEDITOR.tools.setTimeout( function()
+						{
+							this._.onMenu( offsetParent, null, offsetX, offsetY );
+						},
+						0, this );
+				},
+				this );
+		},
+
+		addListener : function( listenerFn )
+		{
+			this._.listeners.push( listenerFn );
+		},
+
+		show : function( offsetParent, corner, offsetX, offsetY )
+		{
+			this.editor.focus();
+			this._.onMenu( offsetParent || CKEDITOR.document.getDocumentElement(), corner, offsetX || 0, offsetY || 0 );
+		}
+	}
+});
+
+// Fix the "contextmenu" event for DOM elements.
+// We may do this if we identify browsers that don't support the context meny
+// event on element directly. Leaving here for reference.
+//if ( <specific browsers> )
+//{
+//	CKEDITOR.dom.element.prototype.on = CKEDITOR.tools.override( CKEDITOR.dom.element.prototype.on, function( originalOn )
+//		{
+//			return function( eventName )
+//				{
+//					if ( eventName != 'contextmenu' )
+//						return originalOn.apply( this, arguments );
+//
+//					// TODO : Implement the fix.
+//				};
+//		});
+//}
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/specialchar/dialogs/specialchar.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/specialchar/dialogs/specialchar.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/specialchar/dialogs/specialchar.js	(revision 2000)
@@ -0,0 +1,362 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'specialchar', function( editor )
+{
+	/**
+	 * Simulate "this" of a dialog for non-dialog events.
+	 * @type {CKEDITOR.dialog}
+	 */
+	var dialog;
+	var onChoice = function( evt )
+	{
+		var target, value;
+		if ( evt.data )
+			target = evt.data.getTarget();
+		else
+			target = new CKEDITOR.dom.element( evt );
+
+		if ( target.getName() == 'a' && ( value = target.getChild( 0 ).getHtml() ) )
+		{
+			target.removeClass( "cke_light_background" );
+			dialog.hide();
+			editor.insertHtml( value );
+		}
+	};
+
+	var onClick = CKEDITOR.tools.addFunction( onChoice );
+
+	var focusedNode;
+
+	var onFocus = function( evt, target )
+	{
+		var value;
+		target = target || evt.data.getTarget();
+
+		if ( target.getName() == 'span' )
+			target = target.getParent();
+
+		if ( target.getName() == 'a' && ( value = target.getChild( 0 ).getHtml() ) )
+		{
+			// Trigger blur manually if there is focused node.
+			if ( focusedNode )
+				onBlur( null, focusedNode );
+
+			var htmlPreview = dialog.getContentElement( 'info', 'htmlPreview' ).getElement();
+
+			dialog.getContentElement( 'info', 'charPreview' ).getElement().setHtml( value );
+			htmlPreview.setHtml( CKEDITOR.tools.htmlEncode( value ) );
+			target.getParent().addClass( "cke_light_background" );
+
+			// Memorize focused node.
+			focusedNode = target;
+		}
+	};
+
+	var onBlur = function( evt, target )
+	{
+		target = target || evt.data.getTarget();
+
+		if ( target.getName() == 'span' )
+			target = target.getParent();
+
+		if ( target.getName() == 'a' )
+		{
+			dialog.getContentElement( 'info', 'charPreview' ).getElement().setHtml( '&nbsp;' );
+			dialog.getContentElement( 'info', 'htmlPreview' ).getElement().setHtml( '&nbsp;' );
+			target.getParent().removeClass( "cke_light_background" );
+
+			focusedNode = undefined;
+		}
+	};
+
+	var onKeydown = CKEDITOR.tools.addFunction( function( ev )
+	{
+		ev = new CKEDITOR.dom.event( ev );
+
+		// Get an Anchor element.
+		var element = ev.getTarget();
+		var relative, nodeToMove;
+		var keystroke = ev.getKeystroke();
+
+		switch ( keystroke )
+		{
+			// RIGHT-ARROW
+			case 39 :
+				// relative is TD
+				if ( ( relative = element.getParent().getNext() ) )
+				{
+					nodeToMove = relative.getChild( 0 );
+					if ( nodeToMove.type == 1 )
+					{
+						nodeToMove.focus();
+						onBlur( null, element );
+						onFocus( null, nodeToMove );
+					}
+				}
+				ev.preventDefault();
+				break;
+			// LEFT-ARROW
+			case 37 :
+				// relative is TD
+				if ( ( relative = element.getParent().getPrevious() ) )
+				{
+					nodeToMove = relative.getChild( 0 );
+					nodeToMove.focus();
+					onBlur( null, element );
+					onFocus( null, nodeToMove );
+				}
+				ev.preventDefault();
+				break;
+			// UP-ARROW
+			case 38 :
+				// relative is TR
+				if ( ( relative = element.getParent().getParent().getPrevious() ) )
+				{
+					nodeToMove = relative.getChild( [element.getParent().getIndex(), 0] );
+					nodeToMove.focus();
+					onBlur( null, element );
+					onFocus( null, nodeToMove );
+				}
+				ev.preventDefault();
+				break;
+			// DOWN-ARROW
+			case 40 :
+				// relative is TR
+				if ( ( relative = element.getParent().getParent().getNext() ) )
+				{
+					nodeToMove = relative.getChild( [ element.getParent().getIndex(), 0 ] );
+					if ( nodeToMove && nodeToMove.type == 1 )
+					{
+						nodeToMove.focus();
+						onBlur( null, element );
+						onFocus( null, nodeToMove );
+					}
+				}
+				ev.preventDefault();
+				break;
+			// SPACE
+			// ENTER is already handled as onClick
+			case 32 :
+				onChoice( { data: ev } );
+				ev.preventDefault();
+				break;
+			// TAB
+			case 9 :
+				// relative is TD
+				if ( ( relative = element.getParent().getNext() ) )
+				{
+					nodeToMove = relative.getChild( 0 );
+					if ( nodeToMove.type == 1 )
+					{
+						nodeToMove.focus();
+						onBlur( null, element );
+						onFocus( null, nodeToMove );
+						ev.preventDefault( true );
+					}
+					else
+						onBlur( null, element );
+				}
+				// relative is TR
+				else if ( ( relative = element.getParent().getParent().getNext() ) )
+				{
+					nodeToMove = relative.getChild( [ 0, 0 ] );
+					if ( nodeToMove && nodeToMove.type == 1 )
+					{
+						nodeToMove.focus();
+						onBlur( null, element );
+						onFocus( null, nodeToMove );
+						ev.preventDefault( true );
+					}
+					else
+						onBlur( null, element );
+				}
+				break;
+			// SHIFT + TAB
+			case CKEDITOR.SHIFT + 9 :
+				// relative is TD
+				if ( ( relative = element.getParent().getPrevious() ) )
+				{
+					nodeToMove = relative.getChild( 0 );
+					nodeToMove.focus();
+					onBlur( null, element );
+					onFocus( null, nodeToMove );
+					ev.preventDefault( true );
+				}
+				// relative is TR
+				else if ( ( relative = element.getParent().getParent().getPrevious() ) )
+				{
+					nodeToMove = relative.getLast().getChild( 0 );
+					nodeToMove.focus();
+					onBlur( null, element );
+					onFocus( null, nodeToMove );
+					ev.preventDefault( true );
+				}
+				else
+					onBlur( null, element );
+				break;
+			default :
+				// Do not stop not handled events.
+				return;
+		}
+	});
+
+	return {
+		title : editor.lang.specialChar.title,
+		minWidth : 430,
+		minHeight : 280,
+		buttons : [ CKEDITOR.dialog.cancelButton ],
+		charColumns : 17,
+		chars :
+			[
+				'!','&quot;','#','$','%','&amp;',"'",'(',')','*','+','-','.','/',
+				'0','1','2','3','4','5','6','7','8','9',':',';',
+				'&lt;','=','&gt;','?','@',
+				'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',
+				'P','Q','R','S','T','U','V','W','X','Y','Z',
+				'[',']','^','_','`',
+				'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',
+				'q','r','s','t','u','v','w','x','y','z',
+				'{','|','}','~','&euro;','&lsquo;','&rsquo;','&rsquo;','&ldquo;',
+				'&rdquo;','&ndash;','&mdash;','&iexcl;','&cent;','&pound;',
+				'&curren;','&yen;','&brvbar;','&sect;','&uml;','&copy;','&ordf;',
+				'&laquo;','&not;','&reg;','&macr;','&deg;','&plusmn;','&sup2;',
+				'&sup3;','&acute;','&micro;','&para;','&middot;','&cedil;',
+				'&sup1;','&ordm;','&raquo;','&frac14;','&frac12;','&frac34;',
+				'&iquest;','&Agrave;','&Aacute;','&Acirc;','&Atilde;','&Auml;',
+				'&Aring;','&AElig;','&Ccedil;','&Egrave;','&Eacute;','&Ecirc;',
+				'&Euml;','&Igrave;','&Iacute;','&Icirc;','&Iuml;','&ETH;',
+				'&Ntilde;','&Ograve;','&Oacute;','&Ocirc;','&Otilde;','&Ouml;',
+				'&times;','&Oslash;','&Ugrave;','&Uacute;','&Ucirc;','&Uuml;',
+				'&Yacute;','&THORN;','&szlig;','&agrave;','&aacute;','&acirc;',
+				'&atilde;','&auml;','&aring;','&aelig;','&ccedil;','&egrave;',
+				'&eacute;','&ecirc;','&euml;','&igrave;','&iacute;','&icirc;',
+				'&iuml;','&eth;','&ntilde;','&ograve;','&oacute;','&ocirc;',
+				'&otilde;','&ouml;','&divide;','&oslash;','&ugrave;','&uacute;',
+				'&ucirc;','&uuml;','&uuml;','&yacute;','&thorn;','&yuml;',
+				'&OElig;','&oelig;','&#372;','&#374','&#373','&#375;','&sbquo;',
+				'&#8219;','&bdquo;','&hellip;','&trade;','&#9658;','&bull;',
+				'&rarr;','&rArr;','&hArr;','&diams;','&asymp;'
+			],
+		onLoad :  function()
+		{
+			var columns = this.definition.charColumns,
+				chars = this.definition.chars;
+
+			var html = [ '<table style="width: 320px; height: 100%; border-collapse: separate;" align="center" cellspacing="2" cellpadding="2" border="0">' ];
+
+			var i = 0 ;
+			while ( i < chars.length )
+			{
+				html.push( '<tr>' ) ;
+
+				for( var j = 0 ; j < columns ; j++, i++ )
+				{
+					if ( chars[ i ] )
+					{
+						html.push(
+							'<td class="cke_dark_background" style="cursor: default">' +
+							'<a href="javascript: void(0);" style="cursor: inherit; display: block; height: 1.25em; margin-top: 0.25em; text-align: center;" title="', chars[i].replace( /&/g, '&amp;' ), '"' +
+							' onkeydown="CKEDITOR.tools.callFunction( ' + onKeydown + ', event, this )"' +
+							' onclick="CKEDITOR.tools.callFunction(' + onClick + ', this); return false;"' +
+							' tabindex="-1">' +
+							'<span style="margin: 0 auto;cursor: inherit">' +
+							chars[i] +
+							'</span></a>');
+					}
+					else
+						html.push( '<td class="cke_dark_background">&nbsp;' );
+
+					html.push( '</td>' );
+				}
+				html.push( '</tr>' );
+			}
+
+			html.push( '</tbody></table>' );
+
+			this.getContentElement( 'info', 'charContainer' ).getElement().setHtml( html.join( '' ) );
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.common.generalTab,
+				title : editor.lang.common.generalTab,
+				padding : 0,
+				align : 'top',
+				elements : [
+					{
+						type : 'hbox',
+						align : 'top',
+						widths : [ '320px', '90px' ],
+						children :
+						[
+							{
+								type : 'html',
+								id : 'charContainer',
+								html : '',
+								onMouseover : onFocus,
+								onMouseout : onBlur,
+								focus : function()
+								{
+									var firstChar = this.getElement().getChild( [0, 0, 0, 0, 0] );
+									setTimeout(function()
+									{
+										firstChar.focus();
+										onFocus( null, firstChar );
+									});
+								},
+								// Needed only for webkit.
+								onShow : function()
+								{
+									var firstChar = this.getElement().getChild( [0, 0, 0, 0, 0] );
+									setTimeout(function()
+									{
+										firstChar.focus();
+										onFocus( null, firstChar );
+									});
+								},
+								onLoad : function( event )
+								{
+									dialog = event.sender;
+								}
+							},
+							{
+								type : 'hbox',
+								align : 'top',
+								widths : [ '100%' ],
+								children :
+								[
+									{
+										type : 'vbox',
+										align : 'top',
+										children :
+										[
+											{
+												type : 'html',
+												html : '<div></div>'
+											},
+											{
+												type : 'html',
+												id : 'charPreview',
+												style : 'border:1px solid #eeeeee;background-color:#EAEAD1;font-size:28px;height:40px;width:70px;padding-top:9px;font-family:\'Microsoft Sans Serif\',Arial,Helvetica,Verdana;text-align:center;',
+												html : '<div>&nbsp;</div>'
+											},
+											{
+												type : 'html',
+												id : 'htmlPreview',
+												style : 'border:1px solid #eeeeee;background-color:#EAEAD1;font-size:14px;height:20px;width:70px;padding-top:2px;font-family:\'Microsoft Sans Serif\',Arial,Helvetica,Verdana;text-align:center;',
+												html : '<div>&nbsp;</div>'
+											}
+										]
+									}
+								]
+							}
+						]
+					}
+				]
+			}
+		]
+	};
+} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/specialchar/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/specialchar/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/specialchar/plugin.js	(revision 2000)
@@ -0,0 +1,29 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @file Special Character plugin
+ */
+
+CKEDITOR.plugins.add( 'specialchar',
+{
+	init : function( editor )
+	{
+		var pluginName = 'specialchar';
+
+		// Register the dialog.
+		CKEDITOR.dialog.add( pluginName, this.path + 'dialogs/specialchar.js' );
+
+		// Register the command.
+		editor.addCommand( pluginName, new CKEDITOR.dialogCommand( pluginName ) );
+
+		// Register the toolbar button.
+		editor.ui.addButton( 'SpecialChar',
+			{
+				label : editor.lang.specialChar.toolbar,
+				command : pluginName
+			});
+	}
+} );
Index: /trunk/filemanager/tp/ckeditor/_source/plugins/showblocks/plugin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/plugins/showblocks/plugin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/plugins/showblocks/plugin.js	(revision 2000)
@@ -0,0 +1,154 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview The "showblocks" plugin. Enable it will make all block level
+ *               elements being decorated with a border and the element name
+ *               displayed on the left-right corner.
+ */
+
+(function()
+{
+	var cssTemplate = '.%2 p,'+
+		'.%2 div,'+
+		'.%2 pre,'+
+		'.%2 address,'+
+		'.%2 blockquote,'+
+		'.%2 h1,'+
+		'.%2 h2,'+
+		'.%2 h3,'+
+		'.%2 h4,'+
+		'.%2 h5,'+
+		'.%2 h6'+
+		'{'+
+			'background-repeat: no-repeat;'+
+			'border: 1px dotted gray;'+
+			'padding-top: 8px;'+
+			'padding-left: 8px;'+
+		'}'+
+
+		'.%2 p'+
+		'{'+
+			'%1p.png);'+
+		'}'+
+
+		'.%2 div'+
+		'{'+
+			'%1div.png);'+
+		'}'+
+
+		'.%2 pre'+
+		'{'+
+			'%1pre.png);'+
+		'}'+
+
+		'.%2 address'+
+		'{'+
+			'%1address.png);'+
+		'}'+
+
+		'.%2 blockquote'+
+		'{'+
+			'%1blockquote.png);'+
+		'}'+
+
+		'.%2 h1'+
+		'{'+
+			'%1h1.png);'+
+		'}'+
+
+		'.%2 h2'+
+		'{'+
+			'%1h2.png);'+
+		'}'+
+
+		'.%2 h3'+
+		'{'+
+			'%1h3.png);'+
+		'}'+
+
+		'.%2 h4'+
+		'{'+
+			'%1h4.png);'+
+		'}'+
+
+		'.%2 h5'+
+		'{'+
+			'%1h5.png);'+
+		'}'+
+
+		'.%2 h6'+
+		'{'+
+			'%1h6.png);'+
+		'}';
+
+	var cssTemplateRegex = /%1/g, cssClassRegex = /%2/g;
+
+	var commandDefinition =
+	{
+		preserveState : true,
+		editorFocus : false,
+
+		exec : function ( editor )
+		{
+			this.toggleState();
+			this.refresh( editor );
+		},
+
+		refresh : function( editor )
+		{
+			var funcName = ( this.state == CKEDITOR.TRISTATE_ON ) ? 'addClass' : 'removeClass';
+			editor.document.getBody()[ funcName ]( 'cke_show_blocks' );
+		}
+	};
+
+	CKEDITOR.plugins.add( 'showblocks',
+	{
+		requires : [ 'wysiwygarea' ],
+
+		init : function( editor )
+		{
+			var command = editor.addCommand( 'showblocks', commandDefinition );
+			command.canUndo = false;
+
+			if ( editor.config.startupOutlineBlocks )
+				command.setState( CKEDITOR.TRISTATE_ON );
+
+			editor.addCss( cssTemplate
+				.replace( cssTemplateRegex, 'background-image: url(' + CKEDITOR.getUrl( this.path ) + 'images/block_' )
+				.replace( cssClassRegex, 'cke_show_blocks ' ) );
+
+			editor.ui.addButton( 'ShowBlocks',
+				{
+					label : editor.lang.showBlocks,
+					command : 'showblocks'
+				});
+
+			// Refresh the command on setData.
+			editor.on( 'mode', function()
+				{
+					if ( command.state != CKEDITOR.TRISTATE_DISABLED )
+						command.refresh( editor );
+				});
+
+			// Refresh the command on setData.
+			editor.on( 'contentDom', function()
+				{
+					if ( command.state != CKEDITOR.TRISTATE_DISABLED )
+						command.refresh( editor );
+				});
+		}
+	});
+} )();
+
+/**
+ * Whether to automaticaly enable the "show block" command when the editor
+ * loads.
+ * @type Boolean
+ * @default false
+ * @example
+ * config.startupOutlineBlocks = true;
+ */
+CKEDITOR.config.startupOutlineBlocks = false;
Index: /trunk/filemanager/tp/ckeditor/_source/themes/default/theme.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/themes/default/theme.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/themes/default/theme.js	(revision 2000)
@@ -0,0 +1,239 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.themes.add( 'default', (function()
+{
+	return {
+		build : function( editor, themePath )
+		{
+			var name = editor.name,
+				element = editor.element,
+				elementMode = editor.elementMode;
+
+			if ( !element || elementMode == CKEDITOR.ELEMENT_MODE_NONE )
+				return;
+
+			if ( elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
+				element.hide();
+
+			// Get the HTML for the predefined spaces.
+			var topHtml			= editor.fire( 'themeSpace', { space : 'top', html : '' } ).html;
+			var contentsHtml	= editor.fire( 'themeSpace', { space : 'contents', html : '' } ).html;
+			var bottomHtml		= editor.fireOnce( 'themeSpace', { space : 'bottom', html : '' } ).html;
+
+			var height	= contentsHtml && editor.config.height;
+
+			var tabIndex = editor.config.tabIndex || editor.element.getAttribute( 'tabindex' ) || 0;
+
+			// The editor height is considered only if the contents space got filled.
+			if ( !contentsHtml )
+				height = 'auto';
+			else if ( !isNaN( height ) )
+				height += 'px';
+
+			var style = '';
+			var width	= editor.config.width;
+
+			if ( width )
+			{
+				if ( !isNaN( width ) )
+					width += 'px';
+
+				style += "width: " + width + ";";
+			}
+
+			var container = CKEDITOR.dom.element.createFromHtml( [
+				'<span' +
+					' id="cke_', name, '"' +
+					' onmousedown="return false;"' +
+					' class="', editor.skinClass, '"' +
+					' dir="', editor.lang.dir, '"' +
+					' title="', ( CKEDITOR.env.gecko ? ' ' : '' ), '"' +
+					' lang="', editor.langCode, '"' +
+					' tabindex="' + tabIndex + '"' +
+					( style ? ' style="' + style + '"' : '' ) +
+					'>' +
+					'<span class="' , CKEDITOR.env.cssClass, '">' +
+						'<span class="cke_wrapper cke_', editor.lang.dir, '">' +
+							'<table class="cke_editor" border="0" cellspacing="0" cellpadding="0"><tbody>' +
+								'<tr', topHtml		? '' : ' style="display:none"', '><td id="cke_top_'		, name, '" class="cke_top">'	, topHtml		, '</td></tr>' +
+								'<tr', contentsHtml	? '' : ' style="display:none"', '><td id="cke_contents_', name, '" class="cke_contents" style="height:', height, '">', contentsHtml, '</td></tr>' +
+								'<tr', bottomHtml	? '' : ' style="display:none"', '><td id="cke_bottom_'	, name, '" class="cke_bottom">'	, bottomHtml	, '</td></tr>' +
+							'</tbody></table>' +
+							//Hide the container when loading skins, later restored by skin css.
+							'<style>.', editor.skinClass, '{visibility:hidden;}</style>' +
+						'</span>' +
+					'</span>' +
+				'</span>' ].join( '' ) );
+
+			container.getChild( [0, 0, 0, 0, 0] ).unselectable();
+			container.getChild( [0, 0, 0, 0, 2] ).unselectable();
+
+			if ( elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
+				container.insertAfter( element );
+			else
+				element.append( container );
+
+			/**
+			 * The DOM element that holds the main editor interface.
+			 * @name CKEDITOR.editor.prototype.container
+			 * @type CKEDITOR.dom.element
+			 * @example
+			 * var editor = CKEDITOR.instances.editor1;
+			 * alert( <b>editor.container</b>.getName() );  "span"
+			 */
+			editor.container = container;
+
+			// Disable browser context menu for editor's chrome.
+			container.disableContextMenu();
+
+			editor.fireOnce( 'themeLoaded' );
+			editor.fireOnce( 'uiReady' );
+		},
+
+		buildDialog : function( editor )
+		{
+			var baseIdNumber = CKEDITOR.tools.getNextNumber();
+
+			var element = CKEDITOR.dom.element.createFromHtml( [
+					'<div id="cke_' + editor.name.replace('.', '\\.') + '_dialog" class="cke_skin_', editor.skinName,
+						'" dir="', editor.lang.dir, '"' +
+						' lang="', editor.langCode, '"' +
+						'>' +
+
+						'<div class="cke_dialog', ' ' + CKEDITOR.env.cssClass,
+							' cke_', editor.lang.dir, '" style="position:absolute">' +
+							'<div class="%body">' +
+								'<div id="%title#" class="%title"></div>' +
+								'<div id="%close_button#" class="%close_button">' +
+									'<span>X</span>' +
+								'</div>' +
+								'<div id="%tabs#" class="%tabs"></div>' +
+								'<div id="%contents#" class="%contents"></div>' +
+								'<div id="%footer#" class="%footer"></div>' +
+							'</div>' +
+							'<div id="%tl#" class="%tl"></div>' +
+							'<div id="%tc#" class="%tc"></div>' +
+							'<div id="%tr#" class="%tr"></div>' +
+							'<div id="%ml#" class="%ml"></div>' +
+							'<div id="%mr#" class="%mr"></div>' +
+							'<div id="%bl#" class="%bl"></div>' +
+							'<div id="%bc#" class="%bc"></div>' +
+							'<div id="%br#" class="%br"></div>' +
+						'</div>',
+
+						//Hide the container when loading skins, later restored by skin css.
+						( CKEDITOR.env.ie ? '' : '<style>.cke_dialog{visibility:hidden;}</style>' ),
+
+					'</div>'
+				].join( '' )
+					.replace( /#/g, '_' + baseIdNumber )
+					.replace( /%/g, 'cke_dialog_' ) );
+
+			var body = element.getChild( [ 0, 0 ] );
+
+			// Make the Title and Close Button unselectable.
+			body.getChild( 0 ).unselectable();
+			body.getChild( 1 ).unselectable();
+
+
+			return {
+				element : element,
+				parts :
+				{
+					dialog		: element.getChild( 0 ),
+					title		: body.getChild( 0 ),
+					close		: body.getChild( 1 ),
+					tabs		: body.getChild( 2 ),
+					contents	: body.getChild( 3 ),
+					footer		: body.getChild( 4 )
+				}
+			};
+		},
+
+		destroy : function( editor )
+		{
+			var container = editor.container,
+				panels = editor.panels;
+
+			/*
+			 * IE BUG: Removing the editor DOM elements while the selection is inside
+			 * the editing area would break IE7/8's selection system. So we need to put
+			 * the selection back to the parent document without scrolling the window.
+			 * (#3812)
+			 */
+			if ( CKEDITOR.env.ie )
+			{
+				container.setStyle( 'display', 'none' );
+
+				var $range = document.body.createTextRange();
+				$range.moveToElementText( container.$ );
+				try
+				{
+					// Putting the selection to a display:none element - this will certainly
+					// fail. But! We've just put the selection document back to the parent
+					// document without scrolling the window!
+					$range.select();
+				}
+				catch ( e ) {}
+			}
+
+			if ( container )
+				container.remove();
+
+			for( var i = 0 ; panels && i < panels.length ; i++ )
+					panels[ i ].remove();
+
+			if ( editor.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
+			{
+				editor.element.show();
+				delete editor.element;
+			}
+		}
+	};
+})() );
+
+CKEDITOR.editor.prototype.getThemeSpace = function( spaceName )
+{
+	var spacePrefix = 'cke_' + spaceName;
+	var space = this._[ spacePrefix ] ||
+		( this._[ spacePrefix ] = CKEDITOR.document.getById( spacePrefix + '_' + this.name ) );
+	return space;
+};
+
+CKEDITOR.editor.prototype.resize = function( width, height, isContentHeight, resizeInner )
+{
+	var numberRegex = /^\d+$/;
+	if ( numberRegex.test( width ) )
+		width += 'px';
+
+	var contents = CKEDITOR.document.getById( 'cke_contents_' + this.name );
+	var outer = resizeInner ? contents.getAscendant( 'table' ).getParent()
+		: contents.getAscendant( 'table' ).getParent().getParent().getParent();
+
+	// Resize the width first.
+	// WEBKIT BUG: Webkit requires that we put the editor off from display when we
+	// resize it. If we don't, the browser crashes!
+	CKEDITOR.env.webkit && outer.setStyle( 'display', 'none' );
+	outer.setStyle( 'width', width );
+	if ( CKEDITOR.env.webkit )
+	{
+		outer.$.offsetWidth;
+		outer.setStyle( 'display', '' );
+	}
+
+	// Get the height delta between the outer table and the content area.
+	// If we're setting the content area's height, then we don't need the delta.
+	var delta = isContentHeight ? 0 : ( outer.$.offsetHeight || 0 ) - ( contents.$.clientHeight || 0 );
+	contents.setStyle( 'height', Math.max( height - delta, 0 ) + 'px' );
+
+	// Emit a resize event.
+	this.fire( 'resize' );
+};
+
+CKEDITOR.editor.prototype.getResizable = function()
+{
+	return this.container.getChild( [ 0, 0 ] );
+};
Index: /trunk/filemanager/tp/ckeditor/_source/skins/office2003/skin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/office2003/skin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/office2003/skin.js	(revision 2000)
@@ -0,0 +1,77 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.skins.add( 'office2003', (function()
+{
+	var preload = [];
+
+	if ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 )
+	{
+		// For IE6, we need to preload some images, otherwhise they will be
+		// downloaded several times (CSS background bug).
+		preload.push( 'icons.png', 'images/sprites_ie6.png', 'images/dialog_sides.gif' );
+	}
+
+	return {
+		preload		: preload,
+		editor		: { css : [ 'editor.css' ] },
+		dialog		: { css : [ 'dialog.css' ] },
+		templates	: { css : [ 'templates.css' ] },
+		margins		: [ 0, 14, 18, 14 ]
+	};
+})() );
+
+if ( CKEDITOR.dialog )
+{
+	CKEDITOR.dialog.on( 'resize', function( evt )
+		{
+			var data = evt.data,
+				width = data.width,
+				height = data.height,
+				dialog = data.dialog,
+				standardsMode = !CKEDITOR.env.quirk;
+
+			if ( data.skin != 'office2003' )
+				return;
+
+			dialog.parts.contents.setStyles(
+				{
+					width : width + 'px',
+					height : height + 'px'
+				});
+
+			if ( !CKEDITOR.env.ie )
+				return;
+
+			// Fix the size of the elements which have flexible lengths.
+			var fixSize = function()
+				{
+					var content = dialog.parts.contents,
+						body = content.getParent(),
+						innerDialog = body.getParent();
+
+					// tc
+					var el = innerDialog.getChild( 2 );
+					el.setStyle( 'width', ( body.$.offsetWidth ) + 'px' );
+
+					// bc
+					el = innerDialog.getChild( 7 );
+					el.setStyle( 'width', ( body.$.offsetWidth - 28 ) + 'px' );
+
+					// ml
+					el = innerDialog.getChild( 4 );
+					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
+
+					// mr
+					el = innerDialog.getChild( 5 );
+					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
+				};
+			setTimeout( fixSize, 100 );
+
+			// Ensure size is correct for RTL mode. (#4003)
+			if ( evt.editor.lang.dir == 'rtl' )
+				setTimeout( fixSize, 1000 );
+		});
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/office2003/elementspath.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/office2003/elementspath.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/office2003/elementspath.css	(revision 2000)
@@ -0,0 +1,68 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+@media print
+{
+	.cke_path
+	{
+		display: none;
+	}
+}
+
+.cke_skin_office2003 .cke_path
+{
+	padding: 3px 3px 0 3px;
+	display: inline-block;
+	float: left;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_path
+{
+	float: right;
+}
+
+.cke_skin_office2003 .cke_path a,
+.cke_skin_office2003 .cke_path .cke_empty
+{
+	display: inline-block;
+	float: left;
+	border: solid 1px #f7f8fd;
+	background-color: #f7f8fd;
+	padding-top: 1px;
+	padding-bottom: 1px;
+	padding-left: 4px;
+	padding-right: 4px;
+	margin-bottom : 3px;
+}
+
+.cke_skin_office2003 .cke_path .cke_empty
+{
+	visibility: hidden;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_path a,
+.cke_skin_office2003 .cke_rtl .cke_path cke_empty
+{
+	float: right;
+}
+
+.cke_skin_office2003 .cke_path a:hover,
+.cke_skin_office2003 .cke_path a:focus,
+.cke_skin_office2003 .cke_path a:active	/* IE */
+{
+	border: solid 1px #316ac5;
+	background-color: #dff1ff;
+	padding-top: 1px;
+	padding-bottom: 1px;
+	padding-left: 4px;
+	padding-right: 4px;
+	outline: none;
+}
+
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_path a,
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_path .cke_empty
+{
+	float: none;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/office2003/icons.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/office2003/icons.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/office2003/icons.css	(revision 2000)
@@ -0,0 +1,309 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_office2003 .cke_button_source .cke_icon
+{
+	background-position: 0 0;
+}
+
+.cke_skin_office2003 .cke_button_newpage .cke_icon
+{
+	background-position: 0 -48px;
+}
+
+.cke_skin_office2003 .cke_button_preview .cke_icon
+{
+	background-position: 0 -64px;
+}
+
+.cke_skin_office2003 .cke_button_cut .cke_icon
+{
+	background-position: 0 -96px;
+}
+
+.cke_skin_office2003 .cke_button_copy .cke_icon
+{
+	background-position: 0 -112px;
+}
+
+.cke_skin_office2003 .cke_button_paste .cke_icon
+{
+	background-position: 0 -128px;
+}
+
+.cke_skin_office2003 .cke_button_pastetext .cke_icon
+{
+	background-position: 0 -144px;
+}
+
+.cke_skin_office2003 .cke_button_find .cke_icon
+{
+	background-position: 0 -240px;
+}
+
+.cke_skin_office2003 .cke_button_replace .cke_icon
+{
+	background-position: 0 -256px;
+}
+
+.cke_skin_office2003 .cke_button_selectAll .cke_icon
+{
+	background-position: 0 -272px;
+}
+
+.cke_skin_office2003 .cke_button_removeFormat .cke_icon
+{
+	background-position: 0 -288px;
+}
+
+.cke_skin_office2003 .cke_button_bold .cke_icon
+{
+	background-position: 0 -304px;
+}
+
+.cke_skin_office2003 .cke_button_italic .cke_icon
+{
+	background-position: 0 -320px;
+}
+
+.cke_skin_office2003 .cke_button_underline .cke_icon
+{
+	background-position: 0 -336px;
+}
+
+.cke_skin_office2003 .cke_button_strike .cke_icon
+{
+	background-position: 0 -352px;
+}
+
+.cke_skin_office2003 .cke_button_subscript .cke_icon
+{
+	background-position: 0 -368px;
+}
+
+.cke_skin_office2003 .cke_button_superscript .cke_icon
+{
+	background-position: 0 -384px;
+}
+
+.cke_skin_office2003 .cke_button_table .cke_icon
+{
+	background-position: 0 -608px;
+}
+
+.cke_skin_office2003 .cke_button_horizontalrule .cke_icon
+{
+	background-position: 0 -624px;
+}
+
+.cke_skin_office2003 .cke_button_smiley .cke_icon
+{
+	background-position: 0 -640px;
+}
+
+.cke_skin_office2003 .cke_button_link .cke_icon
+{
+	background-position: 0 -528px;
+}
+
+.cke_skin_office2003 .cke_button_unlink .cke_icon
+{
+	background-position: 0 -544px;
+}
+
+.cke_skin_office2003 .cke_button_anchor .cke_icon
+{
+	background-position: 0 -560px;
+}
+
+.cke_skin_office2003 .cke_button_image .cke_icon
+{
+	background-position: 0 -576px;
+}
+
+.cke_skin_office2003 .cke_button_flash .cke_icon
+{
+	background-position: 0 -592px;
+}
+
+.cke_skin_office2003 .cke_button_specialchar .cke_icon
+{
+	background-position: 0 -656px;
+}
+
+.cke_skin_office2003 .cke_button_pagebreak .cke_icon
+{
+	background-position: 0 -672px;
+}
+
+.cke_skin_office2003 .cke_button_print .cke_icon
+{
+	background-position: 0 -176px;
+}
+
+.cke_skin_office2003 .cke_button_checkspell .cke_icon,
+.cke_skin_office2003 .cke_button_scayt .cke_icon
+{
+	background-position: 0 -192px;
+}
+
+.cke_skin_office2003 .cke_button_pagebreak .cke_icon
+{
+	background-position: 0 -672px;
+}
+
+.cke_skin_office2003 .cke_button_textcolor .cke_icon
+{
+	background-position: 0 -704px;
+}
+
+.cke_skin_office2003 .cke_button_bgcolor .cke_icon
+{
+	background-position: 0 -720px;
+}
+
+.cke_skin_office2003 .cke_button_form .cke_icon
+{
+	background-position: 0 -752px;
+}
+
+.cke_skin_office2003 .cke_button_checkbox .cke_icon
+{
+	background-position: 0 -768px;
+}
+
+.cke_skin_office2003 .cke_button_radio .cke_icon
+{
+	background-position: 0 -784px;
+}
+
+.cke_skin_office2003 .cke_button_textfield .cke_icon
+{
+	background-position: 0 -800px;
+}
+
+.cke_skin_office2003 .cke_button_textarea .cke_icon
+{
+	background-position: 0 -816px;
+}
+.cke_skin_office2003 .cke_button_showblocks .cke_icon
+{
+	background-position: 0 -1136px;
+}
+
+.cke_skin_office2003 .cke_button_select .cke_icon
+{
+	background-position: 0 -832px;
+}
+
+.cke_skin_office2003 .cke_button_button .cke_icon
+{
+	background-position: 0 -848px;
+}
+
+.cke_skin_office2003 .cke_button_imagebutton .cke_icon
+{
+	background-position: 0 -864px;
+}
+
+.cke_skin_office2003 .cke_button_hiddenfield .cke_icon
+{
+	background-position: 0 -880px;
+}
+
+.cke_skin_office2003 .cke_button_undo .cke_icon
+{
+	background-position: 0 -208px;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_button_undo .cke_icon
+{
+	background-position: 0 -224px;
+}
+
+.cke_skin_office2003 .cke_button_redo .cke_icon
+{
+	background-position: 0 -224px;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_button_redo .cke_icon
+{
+	background-position: 0 -208px;
+}
+
+.cke_skin_office2003 .cke_button_templates .cke_icon
+{
+	background-position: 0 -80px;
+}
+
+.cke_skin_office2003 .cke_button_numberedlist .cke_icon
+{
+	background-position: 0 -400px;
+}
+
+.cke_skin_office2003 .cke_button_bulletedlist .cke_icon
+{
+	background-position: 0 -416px;
+}
+
+.cke_skin_office2003 .cke_button_outdent .cke_icon
+{
+	background-position: 0 -432px;
+}
+
+.cke_skin_office2003 .cke_button_indent .cke_icon
+{
+	background-position: 0 -448px;
+}
+
+.cke_skin_office2003 .cke_button_justifyleft .cke_icon
+{
+	background-position: 0 -464px;
+}
+
+.cke_skin_office2003 .cke_button_justifycenter .cke_icon
+{
+	background-position: 0 -480px;
+}
+
+.cke_skin_office2003 .cke_button_justifyright .cke_icon
+{
+	background-position: 0 -496px;
+}
+
+.cke_skin_office2003 .cke_button_justifyblock .cke_icon
+{
+	background-position: 0 -512px;
+}
+
+.cke_skin_office2003 .cke_button_blockquote .cke_icon
+{
+	background-position: 0 -1152px;
+}
+
+.cke_skin_office2003 .cke_button_flash .cke_icon
+{
+	background-position: 0 -592px;
+}
+
+.cke_skin_office2003 .cke_button_pastefromword .cke_icon
+{
+	background-position: 0 -160px;
+}
+
+.cke_skin_office2003 .cke_button_save .cke_icon
+{
+	background-position: 0 -32px;
+}
+
+.cke_skin_office2003 .cke_button_about .cke_icon
+{
+	background-position: 0 -736px;
+}
+
+.cke_skin_office2003 .cke_button_maximize .cke_icon
+{
+	background-position: 0 -1040px;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/office2003/templates.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/office2003/templates.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/office2003/templates.css	(revision 2000)
@@ -0,0 +1,71 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * Styles for the "templates" plugin.
+ */
+
+.cke_skin_office2003 .cke_tpl_list
+{
+	border: #dcdcdc 2px solid;
+	background-color: #ffffff;
+	overflow: auto;
+	width: 100%;
+	height: 220px;
+}
+
+.cke_skin_office2003 .cke_tpl_item
+{
+	margin: 5px;
+	padding: 7px;
+	border: #eeeeee 1px solid;
+	*width: 88%;
+}
+
+.cke_skin_office2003 .cke_tpl_preview
+{
+	border-collapse: separate;
+	text-indent:0;
+	width: 100%;
+}
+.cke_skin_office2003 .cke_tpl_preview td
+{
+	padding: 2px;
+	vertical-align: middle;
+}
+.cke_skin_office2003 .cke_tpl_preview .cke_tpl_preview_img
+{
+	width: 100px;
+}
+.cke_skin_office2003 .cke_tpl_preview span
+{
+	white-space: normal;
+}
+
+.cke_skin_office2003 .cke_tpl_title
+{
+	font-weight: bold;
+}
+
+.cke_skin_office2003 .cke_tpl_hover
+{
+	border: #ff9933 1px solid !important;
+	background-color: #fffacd !important;
+	cursor: pointer;
+	cursor: hand;
+}
+/*
+ * Fix property 'cursor' doesn't inherit on table
+ */
+.cke_skin_office2003 .cke_tpl_hover *
+{
+	cursor: inherit;
+}
+
+.cke_skin_office2003 .cke_tpl_empty, .cke_tpl_loading
+{
+	text-align: center;
+	padding: 5px;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/office2003/dialog.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/office2003/dialog.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/office2003/dialog.css	(revision 2000)
@@ -0,0 +1,643 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/* Restore the dialog visibility */
+body .cke_dialog
+{
+	visibility: visible;
+}
+
+.cke_skin_office2003 .cke_dialog_body
+{
+	margin-left: 16px;
+	margin-right: 16px;
+	margin-top: 2px;
+	margin-bottom: 20px;
+	position: relative;
+	z-index: 1;
+}
+
+.cke_skin_office2003 .cke_dialog_tl,
+.cke_skin_office2003 .cke_dialog_tr,
+.cke_skin_office2003 .cke_dialog_tc,
+.cke_skin_office2003 .cke_dialog_bl,
+.cke_skin_office2003 .cke_dialog_br,
+.cke_skin_office2003 .cke_dialog_bc
+{
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+	position: absolute;
+
+	/* IE6 does not support full color transparent PNG. */
+	_background-image: url(images/sprites_ie6.png);
+}
+
+.cke_skin_office2003 .cke_dialog_tl
+{
+	background-position: -16px -16px;
+	height: 16px;
+	width: 16px;
+	top: 0;
+	left: 0;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_dialog_tl
+{
+	background-position: -16px -397px;
+}
+
+.cke_skin_office2003 .cke_dialog_tr
+{
+	background-position: -16px -76px;
+	height: 16px;
+	width: 16px;
+	top: 0;
+	right: 0;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_dialog_tr
+{
+	background-position: -16px -457px;
+}
+
+.cke_skin_office2003 .cke_dialog_tc
+{
+	background-position: 0 -136px;
+	background-repeat: repeat-x;
+	height: 16px;
+	top: 0;
+	left: 16px;
+	right: 16px;
+}
+
+.cke_skin_office2003 .cke_dialog_bl
+{
+	background-position: -16px -196px;
+	height: 51px;
+	width: 30px;
+	bottom: 0;
+	left: 0;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_dialog_bl
+{
+	background-position: -16px -517px;
+}
+
+.cke_skin_office2003 .cke_dialog_br
+{
+	background-position: -16px -263px;
+	height: 51px;
+	width: 30px;
+	bottom: 0;
+	right: 0;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_dialog_br
+{
+	background-position: -16px -584px;
+}
+
+.cke_skin_office2003 .cke_dialog_bc
+{
+	background-position: 0 -330px;
+	background-repeat: repeat-x;
+	height: 51px;
+	bottom: 0;
+	left: 30px;
+	right: 30px;
+}
+
+.cke_skin_office2003 .cke_dialog_ml,
+.cke_skin_office2003 .cke_dialog_mr
+{
+	background-image: url(images/dialog_sides.png);
+	background-repeat: repeat-y;
+	position: absolute;
+	width: 16px;
+	top: 16px;
+	bottom: 51px;
+
+	/* IE6 does not support full color transparent PNG. */
+	_background-image: url(images/dialog_sides.gif);
+
+	/* IE quirks gets confused when we have both top and bottom. */
+	_top: auto;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_dialog_ml,
+.cke_skin_office2003 .cke_rtl .cke_dialog_mr
+{
+	background-image: url(images/dialog_sides_rtl.png);
+
+	/* IE6 does not support full color transparent PNG. */
+	_background-image: url(images/dialog_sides.gif);
+}
+
+.cke_skin_office2003 .cke_dialog_ml
+{
+	background-position: 0 0;
+	left: 0;
+}
+
+.cke_skin_office2003 .cke_dialog_mr
+{
+	background-position: -16px 0;
+	right: 0;
+}
+
+.cke_skin_office2003 .cke_browser_iequirks .cke_dialog_ml,
+.cke_skin_office2003 .cke_browser_iequirks .cke_dialog_mr
+{
+	margin-top: 3px;
+}
+
+.cke_skin_office2003 .cke_dialog_title
+{
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 0 -678px;
+	background-repeat: repeat-x;
+	font-weight: bold;
+	font-size: 14pt;
+	color: #0E3460;
+	background-color: #8db1ff;
+	padding: 3px 10px 26px 10px;
+	cursor: move;
+	position: relative;
+}
+
+.cke_skin_office2003 .cke_browser_ie.cke_rtl .cke_dialog_title
+{
+	position: static !important;
+	unicode-bidi: bidi-override;
+}
+
+.cke_skin_office2003 .cke_dialog_contents
+{
+	background-color: #f7f8fd;
+	border: #2b66c9 1px solid;
+	overflow: auto;
+	padding: 5px 10px;
+}
+
+.cke_skin_office2003 .cke_dialog_footer
+{
+	background-color: #8db1ff;
+	text-align: right;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_dialog_footer
+{
+	text-align: left;
+}
+
+/* tabs */
+
+.cke_skin_office2003 .cke_dialog_tabs
+{
+	height: 23px;
+	background-color: #8db1ff;
+	display: inline-block;
+	margin-left:10px;
+	margin-right:10px;
+	margin-top:-23px;
+	position: absolute;
+	z-index: 2;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_dialog_tabs
+{
+	right: 10px;
+}
+
+.cke_skin_office2003 a.cke_dialog_tab,
+.cke_skin_office2003 a:link.cke_dialog_tab,
+.cke_skin_office2003 a:active.cke_dialog_tab,
+.cke_skin_office2003 a:hover.cke_dialog_tab,
+.cke_skin_office2003 a:visited.cke_dialog_tab
+{
+	color: #0E3460;
+	border-left: 1px solid #2b66c9;
+	border-right: 1px solid #2b66c9;
+	border-top: 1px solid #2b66c9;
+	height: 14px;
+	padding: 4px 5px;
+	display: inline-block;
+	cursor: pointer;
+}
+
+/* Gecko 1.8 layout workaround. */
+.cke_skin_office2003 .cke_browser_gecko18 a.cke_dialog_tab,
+.cke_skin_office2003 .cke_browser_gecko18 a:link.cke_dialog_tab,
+.cke_skin_office2003 .cke_browser_gecko18 a:active.cke_dialog_tab,
+.cke_skin_office2003 .cke_browser_gecko18 a:hover.cke_dialog_tab,
+.cke_skin_office2003 .cke_browser_gecko18 a:visited.cke_dialog_tab
+{
+	display: inline;
+	position: relative;
+	top: 6px;
+}
+
+.cke_skin_office2003 a:hover.cke_dialog_tab
+{
+	background-color: #f7f8fd;
+}
+
+.cke_skin_office2003 a.cke_dialog_tab_selected,
+.cke_skin_office2003 a:link.cke_dialog_tab_selected,
+.cke_skin_office2003 a:active.cke_dialog_tab_selected,
+.cke_skin_office2003 a:hover.cke_dialog_tab_selected,
+.cke_skin_office2003 a:visited.cke_dialog_tab_selected
+{
+	border-bottom: 1px solid #f7f8fd;
+	background-color: #f7f8fd;
+	font-weight: bold;
+	cursor: default;
+}
+
+/* single_page */
+
+.cke_skin_office2003 .cke_single_page .cke_dialog_tabs
+{
+	display: none;
+}
+
+.cke_skin_office2003 .cke_single_page .cke_dialog_title
+{
+	padding-bottom: 3px;
+}
+
+.cke_skin_office2003 .cke_dialog_ui_vbox table,
+.cke_skin_office2003 .cke_dialog_ui_hbox table
+{
+	margin: auto;
+}
+
+.cke_skin_office2003 .cke_dialog_ui_vbox_child
+{
+	padding: 5px 0px;
+}
+
+.cke_skin_office2003 input.cke_dialog_ui_input_text,
+.cke_skin_office2003 input.cke_dialog_ui_input_password
+{
+	background-color: white;
+	border: none;
+	padding: 0px;
+	width: 100%;
+	height: 14px;
+}
+
+.cke_skin_office2003 div.cke_dialog_ui_input_text,
+.cke_skin_office2003 div.cke_dialog_ui_input_password
+{
+	background-color: white;
+	border: 1px solid #a0a0a0;
+	padding: 1px 0px;
+}
+
+.cke_skin_office2003 textarea.cke_dialog_ui_input_textarea
+{
+	background-color: white;
+	border: none;
+	padding: 0px;
+	width: 100%;
+	/*
+	 * IE6 BUG: Scrollbars in textareas can overflow even if the outer DIV is set to overflow:hidden.
+	 * So leave 1% width for the scrollbar. In most situations the 1% isn't noticeable by users.
+	 */
+	_width: 99%;
+	overflow: auto;
+	resize: none;
+}
+
+.cke_skin_office2003 div.cke_dialog_ui_input_textarea
+{
+	background-color: white;
+	border: 1px solid #a0a0a0;
+	padding: 1px 0px;
+}
+
+.cke_skin_office2003 div.cke_disabled .cke_dialog_ui_labeled_content *
+{
+	background-color : #a0a0a0;
+	cursor : default;
+}
+
+.cke_skin_office2003 .cke_dialog_ui_hbox
+{
+	width: 100%;
+}
+
+.cke_skin_office2003 .cke_dialog_ui_hbox_first,
+.cke_skin_office2003 .cke_dialog_ui_hbox_child,
+.cke_skin_office2003 .cke_dialog_ui_hbox_last
+{
+	vertical-align: top;
+}
+
+.cke_skin_office2003 .cke_ltr .cke_dialog_ui_hbox_first,
+.cke_skin_office2003 .cke_ltr .cke_dialog_ui_hbox_child
+{
+	padding-right: 10px;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_dialog_ui_hbox_first,
+.cke_skin_office2003 .cke_rtl .cke_dialog_ui_hbox_child
+{
+	padding-left: 10px;
+}
+
+/* button */
+
+.cke_skin_office2003 a.cke_dialog_ui_button
+{
+	border-collapse: separate;
+	cursor: default;
+}
+
+.cke_skin_office2003 span.cke_dialog_ui_button
+{
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 0 -678px;
+	background-repeat: repeat-x;
+	border: #0E3460 1px solid;
+	padding: 2px 10px;
+	text-align: center;
+	color: #0E3460;
+	background-color: #8db1ff;
+	display: inline-block;
+	cursor: default;
+}
+
+/* Gecko 1.8 does not support display: inline-block */
+.cke_skin_office2003 .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button
+{
+	display: block;
+}
+
+.cke_skin_office2003 a.cke_dialog_ui_button span.cke_disabled
+{
+	border: #898980 1px solid;
+	color: #5e5e55;
+	background-color: #c5c5b3;
+}
+
+.cke_skin_office2003 a:focus span.cke_dialog_ui_button,
+.cke_skin_office2003 a:active span.cke_dialog_ui_button
+{
+	background-color: #8db1ff;
+}
+
+.cke_skin_office2003 .cke_dialog_footer_buttons
+{
+	display: inline-table;
+	margin-right: 12px;
+	margin-left: 12px;
+	width: auto;
+	position: relative;
+}
+
+/* Gecko 1.8 does not support for display: inline-table */
+.cke_skin_office2003 .cke_browser_gecko18 .cke_dialog_footer_buttons
+{
+	display: inline;
+}
+
+.cke_skin_office2003 .cke_dialog_footer_buttons span.cke_dialog_ui_button
+{
+	width: 60px;
+	margin: 7px 0;
+}
+
+.cke_skin_office2003 strong
+{
+	font-weight: bold;
+}
+
+/* close_button */
+
+.cke_skin_office2003 .cke_dialog_close_button
+{
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+	background-position: -20px -655px;
+	position: absolute;
+	cursor: pointer;
+	text-align: center;
+	height: 21px;
+	width: 21px;
+	top: 4px;
+
+	/* IE6 does not support full color transparent PNG. */
+	_background-image: url(images/sprites_ie6.png);
+}
+
+.cke_skin_office2003 .cke_dialog_close_button span
+{
+	display: none;
+}
+
+.cke_skin_office2003 .cke_ltr .cke_dialog_close_button
+{
+	right: 10px;
+	_right: 22px;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_dialog_close_button
+{
+	left: 10px;
+	_left: 16px;
+	_top: 6px;
+}
+
+.cke_skin_office2003 .cke_browser_ie6.cke_rtl .cke_dialog_close_button
+{
+	position: relative;
+	float: left;
+	margin-top: -55px;
+	margin-left: -7px;
+}
+
+.cke_skin_office2003 .cke_browser_iequirks.cke_rtl.cke_single_page .cke_dialog_close_button
+{
+	margin-top: -32px;
+}
+
+.cke_skin_office2003 .cke_browser_iequirks.cke_ltr .cke_dialog_close_button
+{
+	margin-top: 0;
+}
+
+.cke_skin_office2003 .cke_dialog_ui_input_select
+{
+	border: 1px solid #a0a0a0;
+	background-color: white;
+}
+
+.cke_skin_office2003 iframe.cke_dialog_ui_input_file
+{
+	width: 100%;
+	height: 25px;
+}
+
+/*
+ * Some utility CSS classes for dialog authors.
+ */
+.cke_skin_office2003 .cke_dialog .cke_dark_background
+{
+	background-color: #eaead1;
+}
+
+.cke_skin_office2003 .cke_dialog .cke_hand
+{
+	cursor: pointer;
+}
+
+.cke_skin_office2003 .cke_dialog .cke_centered
+{
+	text-align: center;
+}
+
+.cke_skin_office2003 .cke_dialog a.cke_btn_reset
+{
+	float: right;
+	background-position: 0 -32px;
+	background-image: url(images/mini.gif);
+	width: 16px;
+	height: 16px;
+	background-repeat: no-repeat;
+	border: 1px none;
+	font-size: 1px;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_dialog a.cke_btn_reset
+{
+	float: left;
+}
+
+.cke_skin_office2003 .cke_dialog a.cke_btn_locked,
+.cke_skin_office2003 .cke_dialog a.cke_btn_unlocked
+{
+	float: left;
+	background-position: 0 0;
+	background-image: url(images/mini.gif);
+	width: 16px;
+	height: 16px;
+	background-repeat: no-repeat;
+	border: none 1px;
+	font-size: 1px;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_dialog a.cke_btn_locked,
+.cke_skin_office2003 .cke_rtl .cke_dialog a.cke_btn_unlocked
+{
+	float: right;
+}
+
+.cke_skin_office2003 .cke_dialog a.cke_btn_unlocked
+{
+	background-position: 0 -16px;
+	background-image: url(images/mini.gif);
+}
+
+.cke_skin_office2003 .cke_dialog .cke_btn_over
+{
+	border: outset 1px;
+	cursor: pointer;
+	cursor: hand;
+}
+
+.cke_skin_office2003 .cke_dialog  #ImagePreviewBox
+{
+	white-space : normal;
+	border : 2px ridge black;
+	overflow : scroll;
+	height : 160px;
+	width : 230px;
+	padding : 2px;
+	background-color : white;
+}
+.cke_skin_office2003 .cke_dialog  #ImagePreviewLoader
+{
+	position: absolute;
+	white-space : normal;
+	overflow : hidden;
+	height : 160px;
+	width : 230px;
+	margin : 2px;
+	padding : 2px;
+	opacity : 0.9;
+	filter : alpha(opacity=90);
+
+	background-color : #e4e4e4;
+}
+
+.cke_skin_office2003 .cke_dialog  #FlashPreviewBox
+{
+	white-space : normal;
+	border : 2px ridge black;
+	overflow : auto;
+	height : 160px;
+	width : 390px;
+	padding : 2px;
+	background-color : white;
+}
+
+.cke_skin_office2003 .cke_dialog .cke_dark_background
+{
+	text-align : center;
+	background-color: #eaead1;
+	font-size : 14px;
+}
+
+.cke_skin_office2003 .cke_dialog .cke_light_background
+{
+	text-align : center;
+	background-color: #ffffbe;
+}
+
+.cke_skin_office2003 .cke_dialog .cke_hand
+{
+	cursor: pointer;
+	cursor: hand;
+}
+
+.cke_skin_office2003 .cke_disabled
+{
+	color: #a0a0a0;
+}
+
+/* High Contrast Mode */
+.cke_skin_office2003 .cke_hc .cke_dialog_title,
+.cke_skin_office2003 .cke_hc .cke_dialog_tabs,
+.cke_skin_office2003 .cke_hc .cke_dialog_contents,
+.cke_skin_office2003 .cke_hc .cke_dialog_footer
+{
+	border-left: 1px solid;
+	border-right: 1px solid;
+}
+
+.cke_skin_office2003 .cke_hc .cke_dialog_title
+{
+	border-top: 1px solid;
+}
+
+.cke_skin_office2003 .cke_hc .cke_dialog_footer
+{
+	border-bottom: 1px solid;
+}
+
+.cke_skin_office2003 .cke_hc .cke_dialog_close_button span
+{
+	display: inline;
+	cursor: pointer;
+	cursor: hand;
+	font-weight: bold;
+	position: relative;
+	top: 3px;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/office2003/panel.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/office2003/panel.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/office2003/panel.css	(revision 2000)
@@ -0,0 +1,198 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_office2003 .cke_panel
+{
+    border: 1px solid #8f8f73;
+	background-color: #fff;
+
+	width: 120px;
+	height: 100px;
+
+	overflow:hidden;
+
+	-moz-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+/* Ideally we would use "inherit here"... but you know... IE :( */
+.cke_skin_office2003 .cke_panel iframe
+{
+	width: 100%;
+	height: 100%;
+}
+
+/*
+ * All the following styles are to be used inside the iframe that holds panel
+ * contents. We don't use the cke_skin_default there to avoid the reset to be
+ * active.
+ * This is not an issue as we'll never have two skins running inside the same
+ * panel iframe.
+ */
+
+html.cke_skin_office2003_container
+{
+	overflow: auto;
+	overflow-x: hidden;
+}
+
+body.cke_panel_frame
+{
+	overflow: auto;
+	overflow-x: hidden;
+}
+
+ul.cke_panel_list
+{
+	list-style-type: none;
+	margin: 3px;
+	padding: 0px;
+    white-space: nowrap;
+}
+
+li.cke_panel_listItem
+{
+	margin: 0px;
+}
+
+.cke_panel_listItem a
+{
+	padding: 2px;
+	display: block;
+	border: 1px solid #fff;
+	color: inherit;
+	text-decoration: none;
+	overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+/* IE6 */
+* html .cke_panel_listItem a
+{
+	width : 100%;
+
+	/* IE is not able to inherit the color, so we must force it to black */
+	color: #000;
+}
+
+/* IE7 */
+*:first-child+html .cke_panel_listItem a
+{
+	/* IE is not able to inherit the color, so we must force it to black */
+	color: #000;
+}
+
+.cke_panel_listItem.cke_selected a
+{
+	border: 1px solid #ccc;
+	background-color: #e9f5ff;
+}
+
+.cke_panel_listItem a:hover,
+.cke_panel_listItem a:focus,
+.cke_panel_listItem a:active
+{
+	border-color: #316ac5;
+	background-color: #dff1ff;
+}
+
+.cke_panel_grouptitle
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+	font-weight: bold;
+    white-space: nowrap;
+	background-color: #dcdcdc;
+	color: #000;
+	margin:0px;
+	padding:3px;
+}
+
+.cke_panel_listItem p,
+.cke_panel_listItem h1,
+.cke_panel_listItem h2,
+.cke_panel_listItem h3,
+.cke_panel_listItem h4,
+.cke_panel_listItem h5,
+.cke_panel_listItem h6,
+.cke_panel_listItem pre
+{
+	margin-top: 3px;
+	margin-bottom: 3px;
+}
+
+.cke_skin_office2003 .cke_button_textcolor_panel,
+.cke_skin_office2003 .cke_button_bgcolor_panel
+{
+	width: 150px;
+	height: 135px;
+}
+
+.cke_colorblock
+{
+	padding: 3px;
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif', Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.cke_colorblock,
+.cke_colorblock a
+{
+	text-decoration: none;
+	color: #000;
+}
+
+span.cke_colorbox
+{
+	width: 10px;
+	height: 10px;
+    border: #808080 1px solid;
+	float: left;
+}
+
+.cke_rtl span.cke_colorbox
+{
+	float: right;
+}
+
+a.cke_colorbox
+{
+    border: #fff 1px solid;
+    padding: 2px;
+    float: left;
+}
+
+.cke_rtl a.cke_colorbox
+{
+    float: right;
+}
+
+a:hover.cke_colorbox,
+a:focus.cke_colorbox,
+a:active.cke_colorbox
+{
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
+}
+
+a.cke_colorauto,
+a.cke_colormore
+{
+    border: #fff 1px solid;
+    padding: 2px;
+    display: block;
+}
+
+a:hover.cke_colorauto,
+a:hover.cke_colormore,
+a:focus.cke_colorauto,
+a:focus.cke_colormore,
+a:active.cke_colorauto,
+a:active.cke_colormore
+{
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/office2003/mainui.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/office2003/mainui.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/office2003/mainui.css	(revision 2000)
@@ -0,0 +1,97 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_office2003 .cke_editor
+{
+/*
+	border: solid 1px #dcdcdc;
+*/
+	display: inline-table;
+	width: 100%;
+}
+
+.cke_skin_office2003,
+.cke_skin_office2003 .cke_wrapper
+{
+	display: block;
+}
+
+.cke_skin_office2003 .cke_top, .cke_skin_office2003 .cke_bottom
+{
+	background-color: #f7f8fd;
+}
+
+.cke_skin_office2003 .cke_top
+{
+    border-top: solid 1px #fafaf5;
+    border-left: solid 1px #fafaf5;
+    border-right: solid 1px #696969;
+    border-bottom: solid 2px #696969;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_top
+{
+    border-left: solid 1px #696969;
+    border-right: solid 1px #fafaf5;
+}
+
+.cke_skin_office2003 .cke_bottom
+{
+    border-left: solid 1px #696969;
+    border-right: solid 1px #696969;
+    border-bottom: solid 1px #696969;
+}
+
+.cke_skin_office2003 .cke_contents
+{
+	border: solid 1px #696969;
+}
+
+.cke_skin_office2003 .cke_focus
+{
+	outline: auto 5px -webkit-focus-ring-color;
+}
+
+.cke_skin_office2003 textarea.cke_source
+{
+	font-family: 'Courier New' , Monospace;
+	font-size: small;
+	white-space: pre;
+	background-color: #fff;
+}
+
+.cke_skin_office2003 .cke_resizer
+{
+	width: 12px;
+	height: 12px;
+	margin-top: 16px;
+	display: block;
+	float: right;
+	/* resizer.gif*/
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 0 -1088px;
+	background-repeat: no-repeat;
+	cursor: se-resize;
+}
+
+.cke_skin_office2003 .cke_maximized .cke_resizer
+{
+	display: none;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_resizer
+{
+	cursor: sw-resize;
+	/* resizer_rtl.gif*/
+	background-position: 0 -1115px;
+	float: left;
+}
+
+.cke_skin_office2003 .cke_browser_ie6 .cke_contents textarea,
+.cke_skin_office2003 .cke_browser_ie7 .cke_contents textarea
+{
+	position: absolute;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/office2003/reset.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/office2003/reset.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/office2003/reset.css	(revision 2000)
@@ -0,0 +1,78 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * Reset and Default Values
+ */
+.cke_skin_office2003 *,
+.cke_skin_office2003 a:hover,
+.cke_skin_office2003 a:link,
+.cke_skin_office2003 a:visited,
+.cke_skin_office2003 a:active
+{
+	margin: 0;
+	padding: 0;
+	border: 0;
+	background: transparent;
+	text-decoration: none;
+	font: normal normal normal 100% Sans-Serif;
+	width: auto;
+	height: auto;
+	border-collapse: collapse;
+	text-align: left;
+	vertical-align: baseline;
+	white-space: nowrap;
+	cursor: auto;
+	color: #000;
+
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.cke_skin_office2003 .cke_rtl *,
+.cke_skin_office2003 .cke_rtl a:hover,
+.cke_skin_office2003 .cke_rtl a:link,
+.cke_skin_office2003 .cke_rtl a:visited,
+.cke_skin_office2003 .cke_rtl a:active,
+.cke_rtl .cke_skin_office2003 *,
+.cke_rtl .cke_skin_office2003 a:hover,
+.cke_rtl .cke_skin_office2003 a:link,
+.cke_rtl .cke_skin_office2003 a:visited,
+.cke_rtl .cke_skin_office2003 a:active
+{
+	text-align: right;
+}
+
+.cke_skin_office2003 iframe
+{
+	vertical-align: inherit;	/** For IE */
+}
+
+.cke_skin_office2003 textarea
+{
+	white-space: pre;
+}
+
+.cke_skin_office2003 .cke_browser_gecko textarea
+{
+	cursor: text;
+}
+
+.cke_skin_office2003 .cke_browser_gecko textarea[disabled]
+{
+	cursor: default;
+}
+
+.cke_skin_office2003 input[type="text"],
+.cke_skin_office2003 input[type="password"]
+{
+	cursor: text;
+}
+
+.cke_skin_office2003 input[type="text"][disabled],
+.cke_skin_office2003 input[type="password"][disabled]
+{
+	cursor: default;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/office2003/toolbar.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/office2003/toolbar.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/office2003/toolbar.css	(revision 2000)
@@ -0,0 +1,448 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+@media print
+{
+	.cke_skin_office2003 .cke_toolbox
+	{
+		display: none;
+	}
+}
+
+.cke_skin_office2003 .cke_browser_webkit .cke_toolbox,
+.cke_skin_office2003 .cke_browser_webkit .cke_toolbox > span
+{
+	white-space: normal;
+}
+
+.cke_skin_office2003 a.cke_toolbox_collapser,
+.cke_skin_office2003 a:hover.cke_toolbox_collapser
+{
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 3px -1026px; /* +3px +4px */
+	background-repeat: no-repeat;
+	width: 11px;
+	height: 11px;
+	float: right;
+	border: outset 1px;
+	margin: 11px 2px 2px;
+	cursor: pointer;
+}
+
+.cke_skin_office2003 .cke_rtl a.cke_toolbox_collapser,
+.cke_skin_office2003 .cke_rtl a:hover.cke_toolbox_collapser
+{
+	float: left;
+}
+
+.cke_skin_office2003 a.cke_toolbox_collapser_min,
+.cke_skin_office2003 a:hover.cke_toolbox_collapser_min
+{
+	/* arrowleft.gif*/
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 4px -1047px; /* +4px +3px */
+	background-repeat: no-repeat;
+	margin: 2px;
+}
+
+.cke_skin_office2003 .cke_rtl a.cke_toolbox_collapser_min,
+.cke_skin_office2003 .cke_rtl a:hover.cke_toolbox_collapser_min
+{
+	/* arrowright.gif*/
+	background-position: 4px -1068px; /* +2px +3px */
+}
+
+.cke_skin_office2003 .cke_toolbar
+{
+	background-color: #d6dff7;
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 0 -962px;
+	background-repeat: repeat-x;
+	display: inline-block;
+	float: left;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_toolbar
+{
+	float: right;
+}
+
+.cke_skin_office2003 .cke_toolgroup
+{
+	display: inline-block;
+	float: left;
+	height: 28px;
+}
+
+.cke_skin_office2003 .cke_browser_ie .cke_toolgroup
+{
+	#float: none;
+	#display: inline;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_toolgroup
+{
+	float: right;
+}
+
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolgroup
+{
+	#float: none;
+}
+
+.cke_skin_office2003 .cke_separator
+{
+	display: inline-block;
+	float: left;
+	border-left: solid 1px #B2CBFF;
+	margin: 6px 2px;
+	height: 16px;
+}
+
+.cke_skin_office2003 .cke_browser_ie .cke_separator
+{
+	#float: none;
+	#display: inline;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_separator
+{
+	float: right;
+}
+
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_separator
+{
+	#float: none;
+}
+
+.cke_skin_office2003 .cke_break
+{
+	clear: left;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_break
+{
+	clear: right;
+}
+
+.cke_skin_office2003 .cke_toolbar_start
+{
+	display: inline-block;
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-repeat: no-repeat;
+	background-position: -27px -765px;
+	width: 10px;
+	height: 28px;
+	float: left;
+}
+
+.cke_skin_office2003 .cke_browser_ie .cke_toolbar_start
+{
+	#float: none;
+	#display: inline;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_toolbar_start
+{
+    background-position: -27px -816px;
+    float: right;
+}
+
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_start
+{
+	#float: none;
+}
+
+.cke_skin_office2003 .cke_toolbar_end
+{
+	display: inline-block;
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-repeat: no-repeat;
+	background-position: -29px -861px;
+	width: 4px;
+	height: 28px;
+	float: left;
+}
+
+.cke_skin_office2003 .cke_browser_ie .cke_toolbar_end
+{
+	#float: none;
+	#display: inline;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_toolbar_end
+{
+    background-position: -29px -907px;
+    float: right;
+}
+
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_end
+{
+	#float: none;
+}
+
+.cke_skin_office2003 .cke_button a,
+.cke_skin_office2003 .cke_button a:hover,
+.cke_skin_office2003 .cke_button a:focus,
+.cke_skin_office2003 .cke_button a:active,
+.cke_skin_office2003 .cke_button a.cke_off
+{
+	border: solid 1px transparent;
+	border-radius: 3px;
+	outline: none;
+	padding-top: 2px;
+	padding-left: 4px;
+	padding-right: 4px;
+	padding-bottom: 2px;
+	margin-top: 2px;
+	height: 18px;
+	vertical-align: top;
+
+	_border: none;
+	_margin: 3px 1px 1px 1px;
+	cursor: default;
+	display: inline-block;
+}
+
+.cke_skin_office2003 .cke_button a,
+.cke_skin_office2003 .cke_button a.cke_off
+{
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+	-moz-border-radius: 3px;
+	-webkit-border-radius: 3px;
+}
+
+.cke_skin_office2003 .cke_hc .cke_button a,
+.cke_skin_office2003 .cke_hc .cke_button a.cke_off
+{
+	opacity: 1.0;
+	filter: alpha(opacity=100);
+}
+
+.cke_skin_office2003 .cke_button a.cke_on
+{
+	border: solid 1px #316ac5;
+	background-color: #c1d2ee;
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1; /* Safari, Opera and Mozilla */
+
+	_margin: 2px 0 0 0;
+}
+
+.cke_skin_office2003 .cke_hc .cke_button a.cke_on
+{
+	padding: 0 2px !important;
+	border-width: 3px;
+}
+
+.cke_skin_office2003 .cke_button a.cke_disabled,
+.cke_skin_office2003 .cke_button a:hover.cke_disabled,
+.cke_skin_office2003 .cke_button a:focus.cke_disabled,
+.cke_skin_office2003 .cke_button a:active.cke_disabled
+{
+	border: solid 1px transparent;
+	filter: alpha(opacity=30); /* IE */
+	opacity : 0.3; /* Safari, Opera and Mozilla */
+	vertical-align: top;
+
+	_border: none;
+	_margin: 3px 1px 1px 1px;
+}
+
+.cke_skin_office2003 .cke_hc .cke_button a.cke_disabled,
+.cke_skin_office2003 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled
+{
+	filter: alpha(opacity=60);
+	opacity: 0.6;
+}
+
+.cke_skin_office2003 .cke_button a:hover.cke_on,
+.cke_skin_office2003 .cke_button a:focus.cke_on,
+.cke_skin_office2003 .cke_button a:active.cke_on,	/* IE */
+.cke_skin_office2003 .cke_button a:hover.cke_off,
+.cke_skin_office2003 .cke_button a:focus.cke_off,
+.cke_skin_office2003 .cke_button a:active.cke_off	/* IE */
+{
+	border: solid 1px #316ac5;
+	background-color: #dff1ff;
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1; /* Safari, Opera and Mozilla */
+	vertical-align: top;
+
+	_margin: 2px 0 0 0;
+	padding: 2px 4px;
+}
+
+.cke_skin_office2003 .cke_hc .cke_button a:hover.cke_on,
+.cke_skin_office2003 .cke_hc .cke_button a:focus.cke_on,
+.cke_skin_office2003 .cke_hc .cke_button a:active.cke_on,	/* IE */
+.cke_skin_office2003 .cke_hc .cke_button a:hover.cke_off,
+.cke_skin_office2003 .cke_hc .cke_button a:focus.cke_off,
+.cke_skin_office2003 .cke_hc .cke_button a:active.cke_off	/* IE */
+{
+	padding: 0 2px !important;
+	border-width: 3px;
+}
+
+.cke_skin_office2003 .cke_button .cke_icon
+{
+	background-image: url(icons.png);
+	background-position: 100px;
+	background-repeat:no-repeat;
+	margin-top:1px;
+	width: 16px;
+	height: 16px;
+	display: inline-block;
+}
+
+.cke_skin_office2003 .cke_button .cke_label
+{
+	display: none;
+	padding-left: 3px;
+	vertical-align: 3px;
+	cursor: default;
+
+	_background-image: url(images/sprites_ie6.png);
+	_background-position: 0 -970px;
+	_background-repeat: repeat-x;
+}
+
+.cke_skin_office2003 .cke_button a:hover .cke_label
+{
+	_background-color: #dff1ff;
+	_background-image: none;
+}
+
+.cke_skin_office2003 .cke_button a.cke_on .cke_label
+{
+	_background-color: #c1d2ee;
+	_background-image: none;
+}
+
+.cke_skin_office2003 .cke_hc .cke_button .cke_label
+{
+	padding: 0;
+	display: inline-block;
+}
+
+.cke_skin_office2003 .cke_hc .cke_button .cke_icon
+{
+	display: none;
+}
+
+.cke_skin_office2003 .cke_accessibility
+{
+	position: absolute;
+	display: block;
+	width: 0;
+	height: 0;
+	overflow: hidden;
+}
+
+.cke_skin_office2003 .cke_button .cke_buttonarrow
+{
+	display: inline-block;
+	height: 18px;
+	width: 8px;
+	background-position: 2px -1004px;
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-repeat: no-repeat;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_button .cke_buttonarrow
+{
+	background-position: 0 -1004px;
+}
+
+/*** Firefox 2 ***/
+
+.cke_skin_office2003 .cke_browser_gecko18 .cke_toolbar,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_button a,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_button a.cke_off,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_icon,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_buttonarrow,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_separator,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_toolbar_start,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_toolbar_end
+{
+	display: block;
+	float: left;
+}
+
+.cke_skin_office2003 .cke_browser_gecko18 .cke_hc .cke_button .cke_icon
+{
+	display: none;
+}
+
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_toolbar,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button a,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button a.cke_off,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button .cke_icon,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button .cke_buttonarrow,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_separator,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_toolbar_start,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_toolbar_end
+{
+	float: right;
+}
+
+.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_label,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_break
+{
+	float: left;
+}
+
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl span.cke_inline_label
+{
+	float: right;
+}
+
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button .cke_label,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_break
+{
+	float: right;
+}
+
+.cke_skin_office2003 .cke_browser_gecko18 .cke_separator
+{
+	margin-top: 4px;
+}
+
+.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_label
+{
+	padding-top: 3px;
+}
+
+/*** IE6 ***/
+
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolgroup,
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_separator,
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_start,
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_end
+{
+	float: none;
+}
+
+/*** IE8 ***/
+
+.cke_skin_office2003 .cke_browser_ie8 .cke_toolbar,
+.cke_skin_office2003 .cke_browser_ie8 .cke_toolgroup
+{
+	vertical-align: top;
+}
+
+.cke_skin_office2003 .cke_browser_iequirks.cke_browser_ie8 .cke_toolbar,
+.cke_skin_office2003 .cke_browser_iequirks.cke_browser_ie8 .cke_toolgroup
+{
+	/* revert previous */
+	vertical-align: baseline;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/office2003/menu.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/office2003/menu.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/office2003/menu.css	(revision 2000)
@@ -0,0 +1,175 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_office2003 .cke_contextmenu
+{
+	padding: 2px;
+}
+
+.cke_skin_office2003 .cke_menuitem a
+{
+	display:block;
+}
+
+.cke_skin_office2003 .cke_menuitem span
+{
+	cursor: default;
+}
+
+.cke_skin_office2003 .cke_menuitem a:hover,
+.cke_skin_office2003 .cke_menuitem a:focus,
+.cke_skin_office2003 .cke_menuitem a:active
+{
+	background-color: #8db1ff;
+	display:block;
+}
+
+.cke_skin_office2003 .cke_menuitem a.cke_disabled:hover,
+.cke_skin_office2003 .cke_menuitem a.cke_disabled:focus,
+.cke_skin_office2003 .cke_menuitem a.cke_disabled:active
+{
+	background-color: transparent !important;
+}
+
+.cke_skin_office2003 .cke_menuitem .cke_icon
+{
+	background-image: url(icons.png);
+	background-position: 100px;
+	background-repeat:no-repeat;
+	background-color: transparent;
+	width: 16px;
+	height: 16px;
+	float: left;
+}
+
+.cke_skin_office2003 .cke_menuitem .cke_disabled .cke_icon
+{
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_office2003 .cke_menuitem .cke_icon_wrapper
+{
+	background-color: #f7f8fd;
+	border: solid 4px #f7f8fd;
+	width: 16px;
+	height: 16px;
+	float: left;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_icon_wrapper
+{
+	float: right;
+}
+
+.cke_skin_office2003 .cke_menuitem a:hover .cke_icon_wrapper,
+.cke_skin_office2003 .cke_menuitem a:focus .cke_icon_wrapper,
+.cke_skin_office2003 .cke_menuitem a:active .cke_icon_wrapper
+{
+	background-color: #9d9d9d;
+	border: solid 4px #9d9d9d;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_office2003 .cke_menuitem a:hover.cke_disabled .cke_icon_wrapper,
+.cke_skin_office2003 .cke_menuitem a:focus.cke_disabled .cke_icon_wrapper,
+.cke_skin_office2003 .cke_menuitem a:active.cke_disabled .cke_icon_wrapper
+{
+	background-color: #f7f8fd;
+	border: solid 4px #f7f8fd;
+}
+
+.cke_skin_office2003 .cke_menuitem .cke_label
+{
+	display:block;
+	padding-right: 3px;
+	padding-top: 5px;
+	padding-left: 4px;
+	height:19px;
+	margin-left: 24px;
+	background-color: #fff;
+	_overflow: hidden;
+	_width: 80px;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_label
+{
+	padding-right: 0;
+	margin-left: 0;
+	padding-left: 3px;
+	margin-right: 28px;
+}
+
+.cke_skin_office2003 .cke_menuitem a.cke_disabled .cke_label
+{
+	filter: alpha(opacity=30); /* IE */
+	opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_office2003 .cke_menuitem a:hover .cke_label,
+.cke_skin_office2003 .cke_menuitem a:focus .cke_label,
+.cke_skin_office2003 .cke_menuitem a:active .cke_label
+{
+	background-color: #8db1ff;
+}
+
+.cke_skin_office2003 .cke_menuitem a.cke_disabled:hover .cke_label,
+.cke_skin_office2003 .cke_menuitem a.cke_disabled:focus .cke_label,
+.cke_skin_office2003 .cke_menuitem a.cke_disabled:active .cke_label
+{
+	background-color: transparent;
+}
+
+.cke_skin_office2003 .cke_menuseparator
+{
+	background-color: #f7f8fd;
+	height: 2px;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+
+	_font-size: 0;
+}
+
+.cke_skin_office2003 .cke_menuarrow
+{
+	/* arrowright.gif*/
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 0 -1071px;
+	background-repeat: no-repeat;
+	height: 5px;
+	width: 3px;
+	float: right;
+	margin-right: 2px;
+	margin-top: 3px;
+}
+
+.cke_rtl .cke_skin_office2003 .cke_menuarrow
+{
+	float: left;
+	margin-right: 0;
+	margin-left: 2px;
+	/* arrowleft.gif*/
+	background-position: 0 -1050px;
+}
+
+/* #3766 In the context menu, long labels with second level menu get wrapped */
+.cke_browser_ie.cke_ltr .cke_skin_office2003 .cke_menuarrow
+{
+	position: absolute;
+	right: 2px;
+}
+
+.cke_browser_ie.cke_rtl .cke_skin_office2003 .cke_menuarrow
+{
+	position: absolute;
+	left: 2px;
+}
+/* END #3766 */
Index: /trunk/filemanager/tp/ckeditor/_source/skins/office2003/presets.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/office2003/presets.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/office2003/presets.css	(revision 2000)
@@ -0,0 +1,49 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/* "Source" button label */
+.cke_skin_office2003 .cke_button_source .cke_label
+{
+	display: inline;
+}
+
+/* "Styles" panel size */
+.cke_skin_office2003 .cke_styles_panel
+{
+	width: 150px;
+	height: 170px;
+}
+
+/* "Format" panel size */
+.cke_skin_office2003 .cke_format_panel
+{
+	width: 150px;
+	height: 170px;
+}
+
+/* "Font" panel size */
+.cke_skin_office2003 .cke_font_panel
+{
+	width: 150px;
+	height: 170px;
+}
+
+/* "Font Size" panel size */
+.cke_skin_office2003 .cke_fontSize_panel
+{
+	height: 170px;
+}
+
+/* "Font Size" combo width */
+.cke_skin_office2003 .cke_fontSize .cke_text
+{
+	width: 20px;
+}
+
+/* "Font Size" combo width (IE Quirks) */
+.cke_skin_office2003 .cke_browser_iequirks .cke_fontSize .cke_text
+{
+	width: 32px;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/office2003/richcombo.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/office2003/richcombo.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/office2003/richcombo.css	(revision 2000)
@@ -0,0 +1,279 @@
+/* Special Combo */
+
+.cke_skin_office2003 .cke_rcombo
+{
+	display: inline-block;
+	margin-left: 2px;
+	margin-right: 2px;
+	margin-top: 2px;
+	vertical-align: top;
+	float: left;
+}
+
+.cke_skin_office2003 .cke_browser_ie .cke_rcombo
+{
+	#float: none;
+	#display: inline;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_rcombo
+{
+	float: right;
+}
+
+.cke_skin_office2003 .cke_browser_ie .cke_rcombo
+{
+	#float: none;
+}
+
+.cke_skin_office2003 .cke_rcombopanel
+{
+	border: 1px solid #316ac5;
+	-moz-border-radius-topleft: 0;
+	-webkit-border-top-left-radius: 0;
+	border-top-left-radius: 0;
+	/*margin-left: 1px;*/
+	/*_margin-left: 0;*/
+}
+
+.cke_skin_office2003 .cke_rcombo a
+{
+	display: inline-block;
+	float: left;
+
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_office2003 .cke_rtl .cke_rcombo a
+{
+	float: right;
+}
+
+.cke_skin_office2003 .cke_hc .cke_rcombo a
+{
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1.0; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_office2003 .cke_rcombo .cke_label
+{
+	display: inline-block;
+	float: left;
+
+	line-height: 24px;
+	height: 24px;
+
+	vertical-align: top;
+	padding-left: 4px;
+	padding-right: 5px;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+
+	_background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	_background-position: 0 -962px;
+	_background-repeat: repeat-x;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_label
+{
+	float: right;
+	padding-right: 4px;
+	padding-left: 5px;
+}
+
+.cke_skin_office2003 .cke_hc .cke_rcombo .cke_label
+{
+	filter: alpha(opacity=100);
+	opacity: 1.0;
+}
+
+.cke_skin_office2003 .cke_rcombo .cke_inline_label
+{
+	color: #fff;
+}
+
+.cke_skin_office2003 .cke_rcombo .cke_text
+{
+	border: 1px solid #8f8f73;
+	background-color: #fff;
+	height: 14px;
+	width:60px;
+	padding-top: 4px;
+	padding-bottom: 4px;
+	padding-left: 5px;
+	padding-right: 5px;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	display: inline-block;
+	vertical-align: top;
+}
+
+.cke_skin_office2003 .cke_ltr .cke_rcombo .cke_text
+{
+	-moz-border-radius-topleft: 3px;
+	-webkit-border-top-left-radius: 3px;
+	border-top-left-radius: 3px;
+	-moz-border-radius-bottomleft: 3px;
+	-webkit-border-bottom-left-radius: 3px;
+	border-bottom-left-radius: 3px;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_text
+{
+	-moz-border-radius-topright: 3px;
+	-webkit-border-top-right-radius: 3px;
+	border-top-right-radius: 3px;
+	-moz-border-radius-bottomright: 3px;
+	-webkit-border-bottom-right-radius: 3px;
+	border-bottom-right-radius: 3px;
+}
+
+/* Fix for IE height */
+.cke_skin_office2003 .cke_browser_iequirks .cke_rcombo .cke_text
+{
+	height: 22px;
+}
+
+.cke_skin_office2003 .cke_rcombo .cke_openbutton
+{
+	display: inline-block;
+
+	background-position: 5px -1002px;
+	background-image: url(images/sprites.png);
+	background-image: url(images/sprites_ie6.png);
+	background-repeat: no-repeat;
+
+	border-top: 1px solid #8f8f73;
+	border-bottom: 1px solid #8f8f73;
+	width: 14px;
+	height: 22px;
+}
+
+.cke_skin_office2003 .cke_ltr .cke_rcombo .cke_openbutton
+{
+    border-right: 1px solid #8f8f73;
+	-moz-border-radius-topright: 3px;
+	-webkit-border-top-right-radius: 3px;
+	border-top-right-radius: 3px;
+	-moz-border-radius-bottomright: 3px;
+	-webkit-border-bottom-right-radius: 3px;
+	border-bottom-right-radius: 3px;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_openbutton
+{
+    border-left: 1px solid #8f8f73;
+	-moz-border-radius-topleft: 3px;
+	-webkit-border-top-left-radius: 3px;
+	border-top-left-radius: 3px;
+	-moz-border-radius-bottomleft: 3px;
+	-webkit-border-bottom-left-radius: 3px;
+	border-bottom-left-radius: 3px;
+}
+
+.cke_skin_office2003 .cke_rcombo .cke_off a:hover,
+.cke_skin_office2003 .cke_rcombo .cke_off a:focus,
+.cke_skin_office2003 .cke_rcombo .cke_off a:active,
+.cke_skin_office2003 .cke_rcombo .cke_on a
+{
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_office2003 .cke_rcombo .cke_off a:hover .cke_text,
+.cke_skin_office2003 .cke_rcombo .cke_off a:focus .cke_text,
+.cke_skin_office2003 .cke_rcombo .cke_off a:active .cke_text,
+.cke_skin_office2003 .cke_rcombo .cke_on .cke_text
+{
+	border-color: #316ac5;
+}
+
+.cke_skin_office2003 .cke_rcombo .cke_off a:hover .cke_openbutton,
+.cke_skin_office2003 .cke_rcombo .cke_off a:focus .cke_openbutton,
+.cke_skin_office2003 .cke_rcombo .cke_off a:active .cke_openbutton,
+.cke_skin_office2003 .cke_rcombo .cke_on .cke_openbutton
+{
+	border-color: #316ac5;
+	background-color: #dff1ff;
+}
+
+.cke_skin_office2003 .cke_rcombo .cke_on .cke_text
+{
+	-moz-border-radius-bottomleft: 0px;
+	-webkit-border-bottom-left-radius: 0px;
+	border-bottom-left-radius: 0px;
+}
+
+.cke_skin_office2003 .cke_rcombo .cke_on .cke_openbutton
+{
+	-moz-border-radius-bottomright: 0px;
+	-webkit-border-bottom-right-radius: 0px;
+	border-bottom-right-radius: 0px;
+}
+
+.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_label
+{
+	filter: alpha(opacity=30); /* IE */
+	opacity: 0.3; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_label
+{
+	filter: alpha(opacity=70);
+	opacity: 0.7;
+}
+
+.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_text,
+.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: alpha(opacity=50); /* IE */
+	opacity: 0.5; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_text,
+.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: alpha(opacity=80);
+	opacity: 0.8;
+}
+
+.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_text
+{
+	color: #fff;
+}
+
+/* Firefox 2 & WebKit Section */
+
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo .cke_label,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo .cke_text,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo .cke_openbutton,
+.cke_skin_office2003 .cke_browser_webkit .cke_rcombo .cke_label,
+.cke_skin_office2003 .cke_browser_webkit .cke_rcombo .cke_text,
+.cke_skin_office2003 .cke_browser_webkit .cke_rcombo .cke_openbutton
+{
+	display: block;
+	float: left;
+}
+
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_label,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_text,
+.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_openbutton,
+.cke_skin_office2003 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_label,
+.cke_skin_office2003 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_text,
+.cke_skin_office2003 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_openbutton
+{
+	float: right;
+}
+
+/*** IE ***/
+
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_rcombo,
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_rcombo a,
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_rcombo .cke_label
+{
+	float: none;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/office2003/editor.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/office2003/editor.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/office2003/editor.css	(revision 2000)
@@ -0,0 +1,21 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+@import url("reset.css");
+@import url("mainui.css");
+@import url("panel.css");
+@import url("toolbar.css");
+@import url("menu.css");
+@import url("richcombo.css");
+@import url("elementspath.css");
+@import url("icons.css");
+@import url("presets.css");
+
+/* Restore the container visibility */
+html .cke_skin_office2003,
+html.cke_skin_office2003_container
+{
+	visibility: visible;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/v2/skin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/v2/skin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/v2/skin.js	(revision 2000)
@@ -0,0 +1,73 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.skins.add( 'v2', (function()
+{
+	var preload = [];
+
+	if ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 )
+	{
+		// For IE6, we need to preload some images, otherwhise they will be
+		// downloaded several times (CSS background bug).
+		preload.push( 'icons.png', 'images/sprites_ie6.png', 'images/dialog_sides.gif' );
+	}
+
+	return {
+		preload		: preload,
+		editor		: { css : [ 'editor.css' ] },
+		dialog		: { css : [ 'dialog.css' ] },
+		templates	: { css : [ 'templates.css' ] },
+		margins		: [ 0, 14, 18, 14 ]
+	};
+})() );
+
+if ( CKEDITOR.dialog )
+{
+	CKEDITOR.dialog.on( 'resize', function( evt )
+		{
+			var data = evt.data,
+				width = data.width,
+				height = data.height,
+				dialog = data.dialog,
+				standardsMode = !CKEDITOR.env.quirk;
+
+			if ( data.skin != 'v2' )
+				return;
+
+			dialog.parts.contents.setStyles(
+				{
+					width : width + 'px',
+					height : height + 'px'
+				});
+
+			if ( !CKEDITOR.env.ie )
+				return;
+
+			// Fix the size of the elements which have flexible lengths.
+			setTimeout( function()
+				{
+					var content = dialog.parts.contents,
+						body = content.getParent(),
+						innerDialog = body.getParent();
+
+					// tc
+					var el = innerDialog.getChild( 2 );
+					el.setStyle( 'width', ( body.$.offsetWidth ) + 'px' );
+
+					// bc
+					el = innerDialog.getChild( 7 );
+					el.setStyle( 'width', ( body.$.offsetWidth - 28 ) + 'px' );
+
+					// ml
+					el = innerDialog.getChild( 4 );
+					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
+
+					// mr
+					el = innerDialog.getChild( 5 );
+					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
+				},
+				100 );
+		});
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/v2/elementspath.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/v2/elementspath.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/v2/elementspath.css	(revision 2000)
@@ -0,0 +1,68 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+@media print
+{
+	.cke_path
+	{
+		display: none;
+	}
+}
+
+.cke_skin_v2 .cke_path
+{
+	padding: 3px 3px 0 3px;
+	display: inline-block;
+	float: left;
+}
+
+.cke_skin_v2 .cke_rtl .cke_path
+{
+	float: right;
+}
+
+.cke_skin_v2 .cke_path a,
+.cke_skin_v2 .cke_path .cke_empty
+{
+	display: inline-block;
+	float: left;
+	border: solid 1px #efefde;
+	background-color: #efefde;
+	padding-top: 1px;
+	padding-bottom: 1px;
+	padding-left: 4px;
+	padding-right: 4px;
+	margin-bottom : 3px;
+}
+
+.cke_skin_v2 .cke_path .cke_empty
+{
+	visibility: hidden;
+}
+
+.cke_skin_v2 .cke_rtl .cke_path a,
+.cke_skin_v2 .cke_rtl .cke_path cke_empty
+{
+	float: right;
+}
+
+.cke_skin_v2 .cke_path a:hover,
+.cke_skin_v2 .cke_path a:focus,
+.cke_skin_v2 .cke_path a:active	/* IE */
+{
+	border: solid 1px #316ac5;
+	background-color: #dff1ff;
+	padding-top: 1px;
+	padding-bottom: 1px;
+	padding-left: 4px;
+	padding-right: 4px;
+	outline: none;
+}
+
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_path a,
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_path .cke_empty
+{
+	float: none;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/v2/icons.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/v2/icons.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/v2/icons.css	(revision 2000)
@@ -0,0 +1,309 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_v2 .cke_button_source .cke_icon
+{
+	background-position: 0 0;
+}
+
+.cke_skin_v2 .cke_button_newpage .cke_icon
+{
+	background-position: 0 -48px;
+}
+
+.cke_skin_v2 .cke_button_preview .cke_icon
+{
+	background-position: 0 -64px;
+}
+
+.cke_skin_v2 .cke_button_cut .cke_icon
+{
+	background-position: 0 -96px;
+}
+
+.cke_skin_v2 .cke_button_copy .cke_icon
+{
+	background-position: 0 -112px;
+}
+
+.cke_skin_v2 .cke_button_paste .cke_icon
+{
+	background-position: 0 -128px;
+}
+
+.cke_skin_v2 .cke_button_pastetext .cke_icon
+{
+	background-position: 0 -144px;
+}
+
+.cke_skin_v2 .cke_button_find .cke_icon
+{
+	background-position: 0 -240px;
+}
+
+.cke_skin_v2 .cke_button_replace .cke_icon
+{
+	background-position: 0 -256px;
+}
+
+.cke_skin_v2 .cke_button_selectAll .cke_icon
+{
+	background-position: 0 -272px;
+}
+
+.cke_skin_v2 .cke_button_removeFormat .cke_icon
+{
+	background-position: 0 -288px;
+}
+
+.cke_skin_v2 .cke_button_bold .cke_icon
+{
+	background-position: 0 -304px;
+}
+
+.cke_skin_v2 .cke_button_italic .cke_icon
+{
+	background-position: 0 -320px;
+}
+
+.cke_skin_v2 .cke_button_underline .cke_icon
+{
+	background-position: 0 -336px;
+}
+
+.cke_skin_v2 .cke_button_strike .cke_icon
+{
+	background-position: 0 -352px;
+}
+
+.cke_skin_v2 .cke_button_subscript .cke_icon
+{
+	background-position: 0 -368px;
+}
+
+.cke_skin_v2 .cke_button_superscript .cke_icon
+{
+	background-position: 0 -384px;
+}
+
+.cke_skin_v2 .cke_button_table .cke_icon
+{
+	background-position: 0 -608px;
+}
+
+.cke_skin_v2 .cke_button_horizontalrule .cke_icon
+{
+	background-position: 0 -624px;
+}
+
+.cke_skin_v2 .cke_button_smiley .cke_icon
+{
+	background-position: 0 -640px;
+}
+
+.cke_skin_v2 .cke_button_link .cke_icon
+{
+	background-position: 0 -528px;
+}
+
+.cke_skin_v2 .cke_button_unlink .cke_icon
+{
+	background-position: 0 -544px;
+}
+
+.cke_skin_v2 .cke_button_anchor .cke_icon
+{
+	background-position: 0 -560px;
+}
+
+.cke_skin_v2 .cke_button_image .cke_icon
+{
+	background-position: 0 -576px;
+}
+
+.cke_skin_v2 .cke_button_flash .cke_icon
+{
+	background-position: 0 -592px;
+}
+
+.cke_skin_v2 .cke_button_specialchar .cke_icon
+{
+	background-position: 0 -656px;
+}
+
+.cke_skin_v2 .cke_button_pagebreak .cke_icon
+{
+	background-position: 0 -672px;
+}
+
+.cke_skin_v2 .cke_button_print .cke_icon
+{
+	background-position: 0 -176px;
+}
+
+.cke_skin_v2 .cke_button_checkspell .cke_icon,
+.cke_skin_v2 .cke_button_scayt .cke_icon
+{
+	background-position: 0 -192px;
+}
+
+.cke_skin_v2 .cke_button_pagebreak .cke_icon
+{
+	background-position: 0 -672px;
+}
+
+.cke_skin_v2 .cke_button_textcolor .cke_icon
+{
+	background-position: 0 -704px;
+}
+
+.cke_skin_v2 .cke_button_bgcolor .cke_icon
+{
+	background-position: 0 -720px;
+}
+
+.cke_skin_v2 .cke_button_form .cke_icon
+{
+	background-position: 0 -752px;
+}
+
+.cke_skin_v2 .cke_button_checkbox .cke_icon
+{
+	background-position: 0 -768px;
+}
+
+.cke_skin_v2 .cke_button_radio .cke_icon
+{
+	background-position: 0 -784px;
+}
+
+.cke_skin_v2 .cke_button_textfield .cke_icon
+{
+	background-position: 0 -800px;
+}
+
+.cke_skin_v2 .cke_button_textarea .cke_icon
+{
+	background-position: 0 -816px;
+}
+.cke_skin_v2 .cke_button_showblocks .cke_icon
+{
+	background-position: 0 -1136px;
+}
+
+.cke_skin_v2 .cke_button_select .cke_icon
+{
+	background-position: 0 -832px;
+}
+
+.cke_skin_v2 .cke_button_button .cke_icon
+{
+	background-position: 0 -848px;
+}
+
+.cke_skin_v2 .cke_button_imagebutton .cke_icon
+{
+	background-position: 0 -864px;
+}
+
+.cke_skin_v2 .cke_button_hiddenfield .cke_icon
+{
+	background-position: 0 -880px;
+}
+
+.cke_skin_v2 .cke_button_undo .cke_icon
+{
+	background-position: 0 -208px;
+}
+
+.cke_skin_v2 .cke_rtl .cke_button_undo .cke_icon
+{
+	background-position: 0 -224px;
+}
+
+.cke_skin_v2 .cke_button_redo .cke_icon
+{
+	background-position: 0 -224px;
+}
+
+.cke_skin_v2 .cke_rtl .cke_button_redo .cke_icon
+{
+	background-position: 0 -208px;
+}
+
+.cke_skin_v2 .cke_button_templates .cke_icon
+{
+	background-position: 0 -80px;
+}
+
+.cke_skin_v2 .cke_button_numberedlist .cke_icon
+{
+	background-position: 0 -400px;
+}
+
+.cke_skin_v2 .cke_button_bulletedlist .cke_icon
+{
+	background-position: 0 -416px;
+}
+
+.cke_skin_v2 .cke_button_outdent .cke_icon
+{
+	background-position: 0 -432px;
+}
+
+.cke_skin_v2 .cke_button_indent .cke_icon
+{
+	background-position: 0 -448px;
+}
+
+.cke_skin_v2 .cke_button_justifyleft .cke_icon
+{
+	background-position: 0 -464px;
+}
+
+.cke_skin_v2 .cke_button_justifycenter .cke_icon
+{
+	background-position: 0 -480px;
+}
+
+.cke_skin_v2 .cke_button_justifyright .cke_icon
+{
+	background-position: 0 -496px;
+}
+
+.cke_skin_v2 .cke_button_justifyblock .cke_icon
+{
+	background-position: 0 -512px;
+}
+
+.cke_skin_v2 .cke_button_blockquote .cke_icon
+{
+	background-position: 0 -1152px;
+}
+
+.cke_skin_v2 .cke_button_flash .cke_icon
+{
+	background-position: 0 -592px;
+}
+
+.cke_skin_v2 .cke_button_pastefromword .cke_icon
+{
+	background-position: 0 -160px;
+}
+
+.cke_skin_v2 .cke_button_save .cke_icon
+{
+	background-position: 0 -32px;
+}
+
+.cke_skin_v2 .cke_button_about .cke_icon
+{
+	background-position: 0 -736px;
+}
+
+.cke_skin_v2 .cke_button_maximize .cke_icon
+{
+	background-position: 0 -1040px;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/v2/templates.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/v2/templates.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/v2/templates.css	(revision 2000)
@@ -0,0 +1,71 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * Styles for the "templates" plugin.
+ */
+
+.cke_skin_v2 .cke_tpl_list
+{
+	border: #dcdcdc 2px solid;
+	background-color: #ffffff;
+	overflow: auto;
+	width: 100%;
+	height: 220px;
+}
+
+.cke_skin_v2 .cke_tpl_item
+{
+	margin: 5px;
+	padding: 7px;
+	border: #eeeeee 1px solid;
+	*width: 88%;
+}
+
+.cke_skin_v2 .cke_tpl_preview
+{
+	border-collapse: separate;
+	text-indent:0;
+	width: 100%;
+}
+.cke_skin_v2 .cke_tpl_preview td
+{
+	padding: 2px;
+	vertical-align: middle;
+}
+.cke_skin_v2 .cke_tpl_preview .cke_tpl_preview_img
+{
+	width: 100px;
+}
+.cke_skin_v2 .cke_tpl_preview span
+{
+	white-space: normal;
+}
+
+.cke_skin_v2 .cke_tpl_title
+{
+	font-weight: bold;
+}
+
+.cke_skin_v2 .cke_tpl_hover
+{
+	border: #ff9933 1px solid !important;
+	background-color: #fffacd !important;
+	cursor: pointer;
+	cursor: hand;
+}
+/*
+ * Fix property 'cursor' doesn't inherit on table
+ */
+.cke_skin_v2 .cke_tpl_hover *
+{
+	cursor: inherit;
+}
+
+.cke_skin_v2 .cke_tpl_empty, .cke_tpl_loading
+{
+	text-align: center;
+	padding: 5px;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/v2/dialog.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/v2/dialog.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/v2/dialog.css	(revision 2000)
@@ -0,0 +1,653 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/* Restore the dialog visibility */
+body .cke_dialog
+{
+	visibility: visible;
+}
+
+.cke_skin_v2 .cke_dialog_body
+{
+	margin-left: 16px;
+	margin-right: 16px;
+	margin-top: 2px;
+	margin-bottom: 20px;
+	position: relative;
+	z-index: 1;
+}
+
+.cke_skin_v2 .cke_dialog_tl,
+.cke_skin_v2 .cke_dialog_tr,
+.cke_skin_v2 .cke_dialog_tc,
+.cke_skin_v2 .cke_dialog_bl,
+.cke_skin_v2 .cke_dialog_br,
+.cke_skin_v2 .cke_dialog_bc
+{
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+	position: absolute;
+
+	/* IE6 does not support full color transparent PNG. */
+	_background-image: url(images/sprites_ie6.png);
+}
+
+.cke_skin_v2 .cke_dialog_tl
+{
+	background-position: -16px -16px;
+	height: 16px;
+	width: 16px;
+	top: 0;
+	left: 0;
+}
+
+.cke_skin_v2 .cke_rtl .cke_dialog_tl
+{
+	background-position: -16px -397px;
+}
+
+.cke_skin_v2 .cke_dialog_tr
+{
+	background-position: -16px -76px;
+	height: 16px;
+	width: 16px;
+	top: 0;
+	right: 0;
+}
+
+.cke_skin_v2 .cke_rtl .cke_dialog_tr
+{
+	background-position: -16px -457px;
+}
+
+.cke_skin_v2 .cke_dialog_tc
+{
+	background-position: 0 -136px;
+	background-repeat: repeat-x;
+	height: 16px;
+	top: 0;
+	left: 16px;
+	right: 16px;
+}
+
+.cke_skin_v2 .cke_dialog_bl
+{
+	background-position: -16px -196px;
+	height: 51px;
+	width: 30px;
+	bottom: 0;
+	left: 0;
+}
+
+.cke_skin_v2 .cke_rtl .cke_dialog_bl
+{
+	background-position: -16px -517px;
+}
+
+.cke_skin_v2 .cke_dialog_br
+{
+	background-position: -16px -263px;
+	height: 51px;
+	width: 30px;
+	bottom: 0;
+	right: 0;
+}
+
+.cke_skin_v2 .cke_rtl .cke_dialog_br
+{
+	background-position: -16px -584px;
+}
+
+.cke_skin_v2 .cke_dialog_bc
+{
+	background-position: 0 -330px;
+	background-repeat: repeat-x;
+	height: 51px;
+	bottom: 0;
+	left: 30px;
+	right: 30px;
+}
+
+.cke_skin_v2 .cke_dialog_ml,
+.cke_skin_v2 .cke_dialog_mr
+{
+	background-image: url(images/dialog_sides.png);
+	background-repeat: repeat-y;
+	position: absolute;
+	width: 16px;
+	top: 16px;
+	bottom: 51px;
+
+	/* IE6 does not support full color transparent PNG. */
+	_background-image: url(images/dialog_sides.gif);
+
+	/* IE quirks gets confused when we have both top and bottom. */
+	_top: auto;
+}
+
+.cke_skin_v2 .cke_rtl .cke_dialog_ml,
+.cke_skin_v2 .cke_rtl .cke_dialog_mr
+{
+	background-image: url(images/dialog_sides_rtl.png);
+
+	/* IE6 does not support full color transparent PNG. */
+	_background-image: url(images/dialog_sides.gif);
+}
+
+.cke_skin_v2 .cke_dialog_ml
+{
+	background-position: 0 0;
+	left: 0;
+}
+
+.cke_skin_v2 .cke_dialog_mr
+{
+	background-position: -16px 0;
+	right: 0;
+}
+
+.cke_skin_v2 .cke_browser_iequirks .cke_dialog_ml,
+.cke_skin_v2 .cke_browser_iequirks .cke_dialog_mr
+{
+	margin-top: 3px;
+}
+
+.cke_skin_v2 .cke_dialog_title
+{
+	font-weight: bold;
+	font-size: 14pt;
+	color: #737357;
+	background-color: #e3e3c7;
+	padding: 3px 10px 26px 10px;
+	cursor: move;
+	position: relative;
+}
+
+.cke_skin_v2 .cke_browser_ie.cke_rtl .cke_dialog_title
+{
+	position: static !important;
+	unicode-bidi: bidi-override;
+}
+
+.cke_skin_v2 .cke_dialog_contents
+{
+	background-color: #f1f1e3;
+	border: #d5d59d 1px solid;
+	overflow: auto;
+	padding: 5px 10px;
+}
+
+.cke_skin_v2 .cke_dialog_footer
+{
+	background-color: #e3e3c7;
+	text-align: right;
+}
+
+.cke_skin_v2 .cke_rtl .cke_dialog_footer
+{
+	text-align: left;
+}
+
+/* tabs */
+
+.cke_skin_v2 .cke_dialog_tabs
+{
+	height: 23px;
+	background-color: #e3e3c7;
+	display: inline-block;
+	margin-left:10px;
+	margin-right:10px;
+	margin-top:-23px;
+	position: absolute;
+	z-index: 2;
+}
+
+.cke_skin_v2 .cke_rtl .cke_dialog_tabs
+{
+	right: 10px;
+}
+
+.cke_skin_v2 a.cke_dialog_tab,
+.cke_skin_v2 a:link.cke_dialog_tab,
+.cke_skin_v2 a:active.cke_dialog_tab,
+.cke_skin_v2 a:hover.cke_dialog_tab,
+.cke_skin_v2 a:visited.cke_dialog_tab
+{
+	color: #737357;
+	border-left: 1px solid #d5d59d;
+	border-right: 1px solid #d5d59d;
+	border-top: 1px solid #d5d59d;
+	height: 14px;
+	padding: 4px 5px;
+	display: inline-block;
+	cursor: pointer;
+}
+
+/* Gecko 1.8 layout workaround. */
+.cke_skin_v2 .cke_browser_gecko18 a.cke_dialog_tab,
+.cke_skin_v2 .cke_browser_gecko18 a:link.cke_dialog_tab,
+.cke_skin_v2 .cke_browser_gecko18 a:active.cke_dialog_tab,
+.cke_skin_v2 .cke_browser_gecko18 a:hover.cke_dialog_tab,
+.cke_skin_v2 .cke_browser_gecko18 a:visited.cke_dialog_tab
+{
+	display: inline;
+	position: relative;
+	top: 6px;
+}
+
+.cke_skin_v2 a:hover.cke_dialog_tab
+{
+	background-color: #f1f1e3;
+}
+
+.cke_skin_v2 a.cke_dialog_tab_selected,
+.cke_skin_v2 a:link.cke_dialog_tab_selected,
+.cke_skin_v2 a:active.cke_dialog_tab_selected,
+.cke_skin_v2 a:hover.cke_dialog_tab_selected,
+.cke_skin_v2 a:visited.cke_dialog_tab_selected
+{
+	border-bottom: 1px solid #f1f1e3;
+	background-color: #f1f1e3;
+	font-weight: bold;
+	cursor: default;
+}
+
+/* single_page */
+
+.cke_skin_v2 .cke_single_page .cke_dialog_tabs
+{
+	display: none;
+}
+
+.cke_skin_v2 .cke_single_page .cke_dialog_title
+{
+	padding-bottom: 3px;
+}
+
+.cke_skin_v2 .cke_dialog_ui_vbox table,
+.cke_skin_v2 .cke_dialog_ui_hbox table
+{
+	margin: auto;
+}
+
+.cke_skin_v2 .cke_dialog_ui_vbox_child
+{
+	padding: 5px 0px;
+}
+
+.cke_skin_v2 input.cke_dialog_ui_input_text,
+.cke_skin_v2 input.cke_dialog_ui_input_password
+{
+	background-color: white;
+	border: none;
+	padding: 0px;
+	width: 100%;
+	height: 14px;
+}
+
+.cke_skin_v2 div.cke_dialog_ui_input_text,
+.cke_skin_v2 div.cke_dialog_ui_input_password
+{
+	background-color: white;
+	border: 1px solid #a0a0a0;
+	padding: 1px 0px;
+}
+
+.cke_skin_v2 textarea.cke_dialog_ui_input_textarea
+{
+	background-color: white;
+	border: none;
+	padding: 0px;
+	width: 100%;
+	/*
+	 * IE6 BUG: Scrollbars in textareas can overflow even if the outer DIV is set to overflow:hidden.
+	 * So leave 1% width for the scrollbar. In most situations the 1% isn't noticeable by users.
+	 */
+	_width: 99%;
+	overflow: auto;
+	resize: none;
+}
+
+.cke_skin_v2 div.cke_dialog_ui_input_textarea
+{
+	background-color: white;
+	border: 1px solid #a0a0a0;
+	padding: 1px 0px;
+}
+
+.cke_skin_v2 div.cke_disabled .cke_dialog_ui_labeled_content *
+{
+	background-color : #a0a0a0;
+	cursor : default;
+}
+
+.cke_skin_v2 .cke_dialog_ui_hbox
+{
+	width: 100%;
+}
+
+.cke_skin_v2 .cke_dialog_ui_hbox_first,
+.cke_skin_v2 .cke_dialog_ui_hbox_child,
+.cke_skin_v2 .cke_dialog_ui_hbox_last
+{
+	vertical-align: top;
+}
+
+.cke_skin_v2 .cke_ltr .cke_dialog_ui_hbox_first,
+.cke_skin_v2 .cke_ltr .cke_dialog_ui_hbox_child
+{
+	padding-right: 10px;
+}
+
+.cke_skin_v2 .cke_rtl .cke_dialog_ui_hbox_first,
+.cke_skin_v2 .cke_rtl .cke_dialog_ui_hbox_child
+{
+	padding-left: 10px;
+}
+
+/* button */
+
+.cke_skin_v2 a.cke_dialog_ui_button
+{
+	border-collapse: separate;
+	cursor: default;
+}
+
+.cke_skin_v2 span.cke_dialog_ui_button
+{
+	border: #737357 1px solid;
+	padding: 2px 10px;
+	text-align: center;
+	color: #3b3b1f;
+	background-color: #c7c78f;
+	display: inline-block;
+	cursor: default;
+}
+
+/* Gecko 1.8 does not support display: inline-block */
+.cke_skin_v2 .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button
+{
+	display: block;
+}
+
+.cke_skin_v2 a.cke_dialog_ui_button span.cke_disabled
+{
+	border: #898980 1px solid;
+	color: #5e5e55;
+	background-color: #c5c5b3;
+}
+
+.cke_skin_v2 a:focus span.cke_dialog_ui_button,
+.cke_skin_v2 a:active span.cke_dialog_ui_button
+{
+	background-color: #e3e3c7;
+}
+
+.cke_skin_v2 .cke_dialog_footer_buttons
+{
+	display: inline-table;
+	margin-right: 12px;
+	margin-left: 12px;
+	width: auto;
+	position: relative;
+}
+
+/* Gecko 1.8 does not support for display: inline-table */
+.cke_skin_v2 .cke_browser_gecko18 .cke_dialog_footer_buttons
+{
+	display: inline;
+}
+
+.cke_skin_v2 .cke_dialog_footer_buttons span.cke_dialog_ui_button
+{
+	width: 60px;
+	margin: 7px 0;
+}
+
+.cke_skin_v2 strong
+{
+	font-weight: bold;
+}
+
+/* close_button */
+
+.cke_skin_v2 .cke_dialog_close_button
+{
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+	background-position: -16px -651px;
+	position: absolute;
+	cursor: pointer;
+	text-align: center;
+	height: 20px;
+	width: 20px;
+	top: 5px;
+
+	/* IE6 does not support full color transparent PNG. */
+	_background-image: url(images/sprites_ie6.png);
+}
+
+.cke_skin_v2 .cke_dialog_close_button span
+{
+	display: none;
+}
+
+.cke_skin_v2 .cke_dialog_close_button:hover
+{
+	background-position: -16px -687px;
+}
+
+.cke_skin_v2 .cke_ltr .cke_dialog_close_button
+{
+	right: 10px;
+	_right: 22px;
+}
+
+.cke_skin_v2 .cke_rtl .cke_dialog_close_button
+{
+	left: 10px;
+	_left: 16px;
+	_top: 7px;
+}
+
+.cke_skin_v2 .cke_browser_ie6.cke_rtl .cke_dialog_close_button
+{
+	position: relative;
+	float: left;
+	margin-top: -55px;
+	margin-left: -7px;
+}
+
+.cke_skin_v2 .cke_browser_iequirks.cke_rtl.cke_single_page .cke_dialog_close_button
+{
+	margin-top: -32px;
+}
+
+.cke_skin_v2 .cke_browser_iequirks.cke_ltr .cke_dialog_close_button
+{
+	margin-top: 0;
+}
+
+.cke_skin_v2 .cke_dialog_ui_input_select
+{
+	border: 1px solid #a0a0a0;
+	background-color: white;
+}
+
+.cke_skin_v2 iframe.cke_dialog_ui_input_file
+{
+	width: 100%;
+	height: 25px;
+}
+
+/*
+ * Some utility CSS classes for dialog authors.
+ */
+.cke_skin_v2 .cke_dialog .cke_dark_background
+{
+	background-color: #eaead1;
+}
+
+.cke_skin_v2 .cke_dialog .cke_hand
+{
+	cursor: pointer;
+}
+
+.cke_skin_v2 .cke_dialog .cke_centered
+{
+	text-align: center;
+}
+
+.cke_skin_v2 .cke_dialog a.cke_btn_reset
+{
+	float: right;
+	background-position: 0 -32px;
+	background-image: url(images/mini.gif);
+	width: 16px;
+	height: 16px;
+	background-repeat: no-repeat;
+	border: 1px none;
+	font-size: 1px;
+}
+
+.cke_skin_v2 .cke_rtl .cke_dialog a.cke_btn_reset
+{
+	float: left;
+}
+
+.cke_skin_v2 .cke_dialog a.cke_btn_locked,
+.cke_skin_v2 .cke_dialog a.cke_btn_unlocked
+{
+	float: left;
+	background-position: 0 0;
+	background-image: url(images/mini.gif);
+	width: 16px;
+	height: 16px;
+	background-repeat: no-repeat;
+	border: none 1px;
+	font-size: 1px;
+}
+
+.cke_skin_v2 .cke_rtl .cke_dialog a.cke_btn_locked,
+.cke_skin_v2 .cke_rtl .cke_dialog a.cke_btn_unlocked
+{
+	float: right;
+}
+
+.cke_skin_v2 .cke_dialog a.cke_btn_unlocked
+{
+	background-position: 0 -16px;
+	background-image: url(images/mini.gif);
+}
+
+.cke_skin_v2 .cke_dialog .cke_btn_over
+{
+	border: outset 1px;
+	cursor: pointer;
+	cursor: hand;
+}
+
+.cke_skin_v2 .cke_dialog  #ImagePreviewBox
+{
+	white-space : normal;
+	border : 2px ridge black;
+	overflow : scroll;
+	height : 160px;
+	width : 230px;
+	padding : 2px;
+	background-color : white;
+}
+.cke_skin_v2 .cke_dialog  #ImagePreviewLoader
+{
+	position: absolute;
+	white-space : normal;
+	overflow : hidden;
+	height : 160px;
+	width : 230px;
+	margin : 2px;
+	padding : 2px;
+	opacity : 0.9;
+	filter : alpha(opacity=90);
+
+	background-color : #e4e4e4;
+}
+
+.cke_skin_v2 .cke_dialog  #FlashPreviewBox
+{
+	white-space : normal;
+	border : 2px ridge black;
+	overflow : auto;
+	height : 160px;
+	width : 390px;
+	padding : 2px;
+	background-color : white;
+}
+
+.cke_skin_v2 .cke_dialog .cke_dark_background
+{
+	text-align : center;
+	background-color: #eaead1;
+	font-size : 14px;
+}
+
+.cke_skin_v2 .cke_dialog .cke_light_background
+{
+	text-align : center;
+	background-color: #ffffbe;
+}
+
+.cke_skin_v2 .cke_dialog .cke_hand
+{
+	cursor: pointer;
+	cursor: hand;
+}
+
+.cke_skin_v2 .cke_disabled
+{
+	color: #a0a0a0;
+}
+
+/* High Contrast Mode */
+.cke_skin_v2 .cke_hc .cke_dialog_title,
+.cke_skin_v2 .cke_hc .cke_dialog_tabs,
+.cke_skin_v2 .cke_hc .cke_dialog_contents,
+.cke_skin_v2 .cke_hc .cke_dialog_footer
+{
+	border-left: 1px solid;
+	border-right: 1px solid;
+}
+
+.cke_skin_v2 .cke_hc .cke_dialog_title
+{
+	border-top: 1px solid;
+}
+
+.cke_skin_v2 .cke_hc .cke_dialog_footer
+{
+	border-bottom: 1px solid;
+}
+
+.cke_skin_v2 .cke_hc .cke_dialog_close_button span
+{
+	display: inline;
+	cursor: pointer;
+	cursor: hand;
+	font-weight: bold;
+	position: relative;
+	top: 3px;
+}
+
+.cke_skin_v2 a.cke_smile img
+{
+	/* IE6 does not support transparent borders */
+	border: 2px solid #eaead1;
+}
+
+.cke_skin_v2 a.cke_smile:focus img,
+.cke_skin_v2 a.cke_smile:active img,
+.cke_skin_v2 a.cke_smile:hover img
+{
+	border-color: #C7C78F;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/v2/panel.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/v2/panel.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/v2/panel.css	(revision 2000)
@@ -0,0 +1,198 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_v2 .cke_panel
+{
+    border: 1px solid #8f8f73;
+	background-color: #fff;
+
+	width: 120px;
+	height: 100px;
+
+	overflow:hidden;
+
+	-moz-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+/* Ideally we would use "inherit here"... but you know... IE :( */
+.cke_skin_v2 .cke_panel iframe
+{
+	width: 100%;
+	height: 100%;
+}
+
+/*
+ * All the following styles are to be used inside the iframe that holds panel
+ * contents. We don't use the cke_skin_default there to avoid the reset to be
+ * active.
+ * This is not an issue as we'll never have two skins running inside the same
+ * panel iframe.
+ */
+
+html.cke_skin_v2_container
+{
+	overflow: auto;
+	overflow-x: hidden;
+}
+
+body.cke_panel_frame
+{
+	overflow: auto;
+	overflow-x: hidden;
+}
+
+ul.cke_panel_list
+{
+	list-style-type: none;
+	margin: 3px;
+	padding: 0px;
+    white-space: nowrap;
+}
+
+li.cke_panel_listItem
+{
+	margin: 0px;
+}
+
+.cke_panel_listItem a
+{
+	padding: 2px;
+	display: block;
+	border: 1px solid #fff;
+	color: inherit;
+	text-decoration: none;
+	overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+/* IE6 */
+* html .cke_panel_listItem a
+{
+	width : 100%;
+
+	/* IE is not able to inherit the color, so we must force it to black */
+	color: #000;
+}
+
+/* IE7 */
+*:first-child+html .cke_panel_listItem a
+{
+	/* IE is not able to inherit the color, so we must force it to black */
+	color: #000;
+}
+
+.cke_panel_listItem.cke_selected a
+{
+	border: 1px solid #ccc;
+	background-color: #e9f5ff;
+}
+
+.cke_panel_listItem a:hover,
+.cke_panel_listItem a:focus,
+.cke_panel_listItem a:active
+{
+	border-color: #316ac5;
+	background-color: #dff1ff;
+}
+
+.cke_panel_grouptitle
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+	font-weight: bold;
+    white-space: nowrap;
+	background-color: #dcdcdc;
+	color: #000;
+	margin:0px;
+	padding:3px;
+}
+
+.cke_panel_listItem p,
+.cke_panel_listItem h1,
+.cke_panel_listItem h2,
+.cke_panel_listItem h3,
+.cke_panel_listItem h4,
+.cke_panel_listItem h5,
+.cke_panel_listItem h6,
+.cke_panel_listItem pre
+{
+	margin-top: 3px;
+	margin-bottom: 3px;
+}
+
+.cke_skin_v2 .cke_button_textcolor_panel,
+.cke_skin_v2 .cke_button_bgcolor_panel
+{
+	width: 150px;
+	height: 135px;
+}
+
+.cke_colorblock
+{
+	padding: 3px;
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif', Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.cke_colorblock,
+.cke_colorblock a
+{
+	text-decoration: none;
+	color: #000;
+}
+
+span.cke_colorbox
+{
+	width: 10px;
+	height: 10px;
+    border: #808080 1px solid;
+	float: left;
+}
+
+.cke_rtl span.cke_colorbox
+{
+	float: right;
+}
+
+a.cke_colorbox
+{
+    border: #fff 1px solid;
+    padding: 2px;
+    float: left;
+}
+
+.cke_rtl a.cke_colorbox
+{
+    float: right;
+}
+
+a:hover.cke_colorbox,
+a:focus.cke_colorbox,
+a:active.cke_colorbox
+{
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
+}
+
+a.cke_colorauto,
+a.cke_colormore
+{
+    border: #fff 1px solid;
+    padding: 2px;
+    display: block;
+}
+
+a:hover.cke_colorauto,
+a:hover.cke_colormore,
+a:focus.cke_colorauto,
+a:focus.cke_colormore,
+a:active.cke_colorauto,
+a:active.cke_colormore
+{
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/v2/mainui.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/v2/mainui.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/v2/mainui.css	(revision 2000)
@@ -0,0 +1,112 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_v2 .cke_editor
+{
+/*
+	border: solid 1px #dcdcdc;
+*/
+	display: inline-table;
+	width: 100%;
+}
+
+.cke_skin_v2
+{
+	display: block;
+}
+
+.cke_skin_v2 .cke_wrapper
+{
+	display: block;
+}
+
+.cke_skin_v2 .cke_browser_opera .cke_editor
+{
+	display: table;
+}
+
+.cke_skin_v2 .cke_top, .cke_skin_v2 .cke_bottom
+{
+	background-color: #efefde;
+}
+
+.cke_skin_v2 .cke_top
+{
+    border-top: solid 1px #fafaf5;
+    border-left: solid 1px #fafaf5;
+    border-right: solid 1px #696969;
+    border-bottom: solid 2px #696969;
+}
+
+.cke_skin_v2 .cke_rtl .cke_top
+{
+    border-left: solid 1px #696969;
+    border-right: solid 1px #fafaf5;
+}
+
+.cke_skin_v2 .cke_bottom
+{
+    border-left: solid 1px #696969;
+    border-right: solid 1px #696969;
+    border-bottom: solid 1px #696969;
+}
+
+.cke_skin_v2 .cke_contents
+{
+	border: solid 1px #696969;
+}
+
+.cke_skin_v2 .cke_focus
+{
+	outline: auto 5px -webkit-focus-ring-color;
+}
+
+.cke_skin_v2 textarea.cke_source
+{
+	font-family: 'Courier New' , Monospace;
+	font-size: small;
+	background-color: #fff;
+	white-space: pre;
+}
+
+.cke_skin_v2 .cke_browser_iequirks textarea.cke_source
+{
+	/* For IE6+Quirks only */
+	_white-space: normal;
+}
+
+.cke_skin_v2 .cke_resizer
+{
+	width: 12px;
+	height: 12px;
+	margin-top: 16px;
+	display: block;
+	float: right;
+	/* resizer.gif*/
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 0 -801px;
+	background-repeat: no-repeat;
+	cursor: se-resize;
+}
+
+.cke_skin_v2 .cke_rtl .cke_resizer
+{
+	cursor: sw-resize;
+	/* resizer_rtl.gif*/
+	background-position: 0 -828px;
+	float: left;
+}
+
+.cke_skin_v2 .cke_maximized .cke_resizer
+{
+	display: none;
+}
+
+.cke_skin_v2 .cke_browser_ie6 .cke_contents textarea,
+.cke_skin_v2 .cke_browser_ie7 .cke_contents textarea
+{
+	position: absolute;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/v2/reset.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/v2/reset.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/v2/reset.css	(revision 2000)
@@ -0,0 +1,78 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * Reset and Default Values
+ */
+.cke_skin_v2 *,
+.cke_skin_v2 a:hover,
+.cke_skin_v2 a:link,
+.cke_skin_v2 a:visited,
+.cke_skin_v2 a:active
+{
+	margin: 0;
+	padding: 0;
+	border: 0;
+	background: transparent;
+	text-decoration: none;
+	font: normal normal normal 100% Sans-Serif;
+	width: auto;
+	height: auto;
+	border-collapse: collapse;
+	text-align: left;
+	vertical-align: baseline;
+	white-space: nowrap;
+	cursor: auto;
+	color: #000;
+
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.cke_skin_v2 .cke_rtl *,
+.cke_skin_v2 .cke_rtl a:hover,
+.cke_skin_v2 .cke_rtl a:link,
+.cke_skin_v2 .cke_rtl a:visited,
+.cke_skin_v2 .cke_rtl a:active,
+.cke_rtl .cke_skin_v2 *,
+.cke_rtl .cke_skin_v2 a:hover,
+.cke_rtl .cke_skin_v2 a:link,
+.cke_rtl .cke_skin_v2 a:visited,
+.cke_rtl .cke_skin_v2 a:active
+{
+	text-align: right;
+}
+
+.cke_skin_v2 iframe
+{
+	vertical-align: inherit;	/** For IE */
+}
+
+.cke_skin_v2 textarea
+{
+	white-space: pre;
+}
+
+.cke_skin_v2 .cke_browser_gecko textarea
+{
+	cursor: text;
+}
+
+.cke_skin_v2 .cke_browser_gecko textarea[disabled]
+{
+	cursor: default;
+}
+
+.cke_skin_v2 input[type="text"],
+.cke_skin_v2 input[type="password"]
+{
+	cursor: text;
+}
+
+.cke_skin_v2 input[type="text"][disabled],
+.cke_skin_v2 input[type="password"][disabled]
+{
+	cursor: default;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/v2/toolbar.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/v2/toolbar.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/v2/toolbar.css	(revision 2000)
@@ -0,0 +1,405 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+@media print
+{
+	.cke_skin_v2 .cke_toolbox
+	{
+		display: none;
+	}
+}
+
+.cke_skin_v2 .cke_browser_webkit .cke_toolbox,
+.cke_skin_v2 .cke_browser_webkit .cke_toolbox > span
+{
+	white-space: normal;
+}
+
+.cke_skin_v2 a.cke_toolbox_collapser,
+.cke_skin_v2 a:hover.cke_toolbox_collapser
+{
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 3px -739px; /* +3px +4px */
+	background-repeat: no-repeat;
+	width: 11px;
+	height: 11px;
+	float: right;
+	border: outset 1px;
+	margin: 11px 2px 2px;
+	cursor: pointer;
+}
+
+.cke_skin_v2 .cke_rtl a.cke_toolbox_collapser,
+.cke_skin_v2 .cke_rtl a:hover.cke_toolbox_collapser
+{
+	float: left;
+}
+
+.cke_skin_v2 a.cke_toolbox_collapser_min,
+.cke_skin_v2 a:hover.cke_toolbox_collapser_min
+{
+	/* arrowleft.gif*/
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 4px -760px; /* +4px +3px */
+	background-repeat: no-repeat;
+	margin: 2px;
+}
+
+.cke_skin_v2 .cke_rtl a.cke_toolbox_collapser_min,
+.cke_skin_v2 .cke_rtl a:hover.cke_toolbox_collapser_min
+{
+	/* arrowright.gif*/
+	background-position: 4px -781px; /* +2px +3px */
+}
+
+.cke_skin_v2 .cke_toolbar
+{
+	padding-top: 1px;
+	padding-bottom: 1px;
+	display: inline-block;
+	float: left;
+}
+
+.cke_skin_v2 .cke_rtl .cke_toolbar
+{
+	float: right;
+}
+
+.cke_skin_v2 .cke_toolgroup
+{
+	display: inline-block;
+	float: left;
+}
+
+.cke_skin_v2 .cke_browser_ie .cke_toolgroup
+{
+	#float: none;
+	#display: inline;
+}
+
+.cke_skin_v2 .cke_rtl .cke_toolgroup
+{
+	float: right;
+}
+
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolgroup
+{
+	#float: none;
+}
+
+.cke_skin_v2 .cke_separator
+{
+	display: inline-block;
+	float: left;
+	border-left: solid 1px #999;
+	margin: 0 2px;
+	height: 16px;
+}
+
+.cke_skin_v2 .cke_browser_ie .cke_separator
+{
+	#float: none;
+	#display: inline;
+}
+
+.cke_skin_v2 .cke_rtl .cke_separator
+{
+	float: right;
+}
+
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_separator
+{
+	#float: none;
+}
+
+.cke_skin_v2 .cke_break
+{
+	clear: left;
+}
+
+.cke_skin_v2 .cke_rtl .cke_break
+{
+	clear: right;
+}
+
+.cke_skin_v2 .cke_toolbar_start
+{
+	display: inline-block;
+	background-image: url(images/toolbar_start.gif);
+	background-repeat: no-repeat;
+	margin: 4px 2px 0 2px;
+	width: 3px;
+	height: 16px;
+	float: left;
+}
+
+.cke_skin_v2 .cke_browser_ie .cke_toolbar_start
+{
+	#float: none;
+	#display: inline;
+}
+
+.cke_skin_v2 .cke_rtl .cke_toolbar_start
+{
+	float: right;
+}
+
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_start
+{
+	#float: none;
+}
+
+.cke_skin_v2 .cke_toolbar_end
+{
+	display: inline-block;
+	float: left;
+}
+
+.cke_skin_v2 .cke_browser_ie .cke_toolbar_end
+{
+	#float: none;
+	#display: inline
+}
+
+.cke_skin_v2 .cke_rtl .cke_toolbar_end
+{
+    float: right;
+}
+
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_end
+{
+	#float: none;
+}
+
+.cke_skin_v2 .cke_button a,
+.cke_skin_v2 .cke_button a:hover,
+.cke_skin_v2 .cke_button a:focus,
+.cke_skin_v2 .cke_button a:active,
+.cke_skin_v2 .cke_button a.cke_off
+{
+	border: solid 1px #efefde;
+	display: inline-block;
+	border-radius: 3px;
+	outline: none;
+	padding-top: 2px;
+	padding-left: 4px;
+	padding-right: 4px;
+	padding-bottom: 2px;
+	height: 18px;
+	cursor: default;
+}
+
+.cke_skin_v2 .cke_button a,
+.cke_skin_v2 .cke_button a.cke_off
+{
+	background-color: #efefde;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+	-moz-border-radius: 3px;
+	-webkit-border-radius: 3px;
+}
+
+.cke_skin_v2 .cke_hc .cke_button a,
+.cke_skin_v2 .cke_hc .cke_button a.cke_off
+{
+	opacity: 1.0;
+	filter: alpha(opacity=100);
+}
+
+.cke_skin_v2 .cke_button a.cke_on
+{
+	border: solid 1px #316ac5;
+	background-color: #a3d7ff;
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_v2 .cke_hc .cke_button a.cke_on
+{
+	padding: 0 2px !important;
+	border-width: 3px;
+}
+
+.cke_skin_v2 .cke_button a.cke_disabled,
+.cke_skin_v2 .cke_browser_ie a:hover.cke_button .cke_disabled
+{
+	border: solid 1px #efefde;
+	background-color: #efefde;
+	filter: alpha(opacity=30); /* IE */
+	opacity : 0.3; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_v2 .cke_hc .cke_button a.cke_disabled,
+.cke_skin_v2 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled
+{
+	filter: alpha(opacity=60);
+	opacity: 0.6;
+}
+
+.cke_skin_v2 .cke_button a:hover.cke_on,
+.cke_skin_v2 .cke_button a:focus.cke_on,
+.cke_skin_v2 .cke_button a:active.cke_on,	/* IE */
+.cke_skin_v2 .cke_button a:hover.cke_off,
+.cke_skin_v2 .cke_button a:focus.cke_off,
+.cke_skin_v2 .cke_button a:active.cke_off	/* IE */
+{
+	border: solid 1px #316ac5;
+	background-color: #dff1ff;
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1; /* Safari, Opera and Mozilla */
+	padding: 2px 4px;
+}
+
+.cke_skin_v2 .cke_hc .cke_button a:hover.cke_on,
+.cke_skin_v2 .cke_hc .cke_button a:focus.cke_on,
+.cke_skin_v2 .cke_hc .cke_button a:active.cke_on,	/* IE */
+.cke_skin_v2 .cke_hc .cke_button a:hover.cke_off,
+.cke_skin_v2 .cke_hc .cke_button a:focus.cke_off,
+.cke_skin_v2 .cke_hc .cke_button a:active.cke_off	/* IE */
+{
+	padding: 0 2px !important;
+	border-width: 3px;
+}
+
+.cke_skin_v2 .cke_button .cke_icon
+{
+	background-image: url(icons.png);
+	background-position: 100px;
+	background-repeat:no-repeat;
+	margin-top:1px;
+	width: 16px;
+	height: 16px;
+	display: inline-block;
+}
+
+.cke_skin_v2 .cke_button .cke_label
+{
+	cursor: default;
+	display: none;
+	padding-left: 3px;
+	vertical-align: 3px;
+}
+
+.cke_skin_v2 .cke_hc .cke_button .cke_label
+{
+	padding: 0;
+	display: inline-block;
+}
+
+.cke_skin_v2 .cke_hc .cke_button .cke_icon
+{
+	display: none;
+}
+
+.cke_skin_v2 .cke_accessibility
+{
+	position: absolute;
+	display: block;
+	width: 0;
+	height: 0;
+	overflow: hidden;
+}
+
+.cke_skin_v2 .cke_button .cke_buttonarrow
+{
+	display: inline-block;
+	height: 17px;
+	width: 8px;
+	background-position: 2px -717px;
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-repeat: no-repeat;
+}
+
+.cke_skin_v2 .cke_rtl .cke_button .cke_buttonarrow
+{
+	background-position: 0 -717px;
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+}
+
+/*** Firefox 2 ***/
+
+.cke_skin_v2 .cke_browser_gecko18 .cke_toolbar,
+.cke_skin_v2 .cke_browser_gecko18 .cke_button a,
+.cke_skin_v2 .cke_browser_gecko18 .cke_button a.cke_off,
+.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_icon,
+.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_buttonarrow,
+.cke_skin_v2 .cke_browser_gecko18 .cke_separator,
+.cke_skin_v2 .cke_browser_gecko18 .cke_toolbar_start
+{
+	display: block;
+	float: left;
+}
+
+.cke_skin_v2 .cke_browser_gecko18 .cke_hc .cke_button .cke_icon
+{
+	display: none;
+}
+
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_toolbar,
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button a,
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button a.cke_off,
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button .cke_icon,
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button .cke_buttonarrow,
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_separator,
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_toolbar_start
+{
+	float: right;
+}
+
+.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_label,
+.cke_skin_v2 .cke_browser_gecko18 .cke_break
+{
+	float: left;
+}
+
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl span.cke_inline_label
+{
+	float: right;
+}
+
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button .cke_label,
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_break
+{
+	float: right;
+}
+
+.cke_skin_v2 .cke_browser_gecko18 .cke_separator
+{
+	margin-top: 4px;
+}
+
+.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_label
+{
+	padding-top: 3px;
+}
+
+/*** IE6 ***/
+
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolgroup,
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_separator,
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_start,
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_end
+{
+	float: none;
+}
+
+/*** IE8 ***/
+
+.cke_skin_v2 .cke_browser_ie8 .cke_toolbar,
+.cke_skin_v2 .cke_browser_ie8 .cke_toolgroup
+{
+	vertical-align: top;
+}
+
+.cke_skin_v2 .cke_browser_iequirks.cke_browser_ie8 .cke_toolbar,
+.cke_skin_v2 .cke_browser_iequirks.cke_browser_ie8 .cke_toolgroup
+{
+	/* revert previous */
+	vertical-align: baseline;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/v2/menu.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/v2/menu.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/v2/menu.css	(revision 2000)
@@ -0,0 +1,178 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_v2 .cke_contextmenu
+{
+	padding: 2px;
+}
+
+.cke_skin_v2 .cke_menuitem a
+{
+	display:block;
+}
+
+.cke_skin_v2 .cke_menuitem span
+{
+	cursor: default;
+}
+
+.cke_skin_v2 .cke_menuitem a:hover,
+.cke_skin_v2 .cke_menuitem a:focus,
+.cke_skin_v2 .cke_menuitem a:active
+{
+	background-color: #8f8f73;
+	display:block;
+}
+
+.cke_skin_v2 .cke_menuitem a.cke_disabled:hover,
+.cke_skin_v2 .cke_menuitem a.cke_disabled:focus,
+.cke_skin_v2 .cke_menuitem a.cke_disabled:active
+{
+	background-color: transparent !important;
+}
+
+.cke_skin_v2 .cke_menuitem .cke_icon
+{
+	background-image: url(icons.png);
+	background-position: 100px;
+	background-repeat:no-repeat;
+	background-color: transparent;
+	width: 16px;
+	height: 16px;
+	float: left;
+}
+
+.cke_skin_v2 .cke_menuitem .cke_disabled .cke_icon
+{
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_v2 .cke_menuitem .cke_icon_wrapper
+{
+	background-color: #e3e3c7;
+	border: solid 4px #e3e3c7;
+	width: 16px;
+	height: 16px;
+	float: left;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.cke_rtl .cke_skin_v2 .cke_menuitem .cke_icon_wrapper
+{
+	float: right;
+}
+
+.cke_skin_v2 .cke_menuitem a:hover .cke_icon_wrapper,
+.cke_skin_v2 .cke_menuitem a:focus .cke_icon_wrapper,
+.cke_skin_v2 .cke_menuitem a:active .cke_icon_wrapper
+{
+	background-color: #9d9d9d;
+	border: solid 4px #9d9d9d;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_v2 .cke_menuitem a:hover.cke_disabled .cke_icon_wrapper,
+.cke_skin_v2 .cke_menuitem a:focus.cke_disabled .cke_icon_wrapper,
+.cke_skin_v2 .cke_menuitem a:active.cke_disabled .cke_icon_wrapper
+{
+	background-color: #e3e3c7;
+	border: solid 4px #e3e3c7;
+}
+
+.cke_skin_v2 .cke_menuitem .cke_label
+{
+	display:block;
+	padding-right: 3px;
+	padding-top: 5px;
+	padding-left: 4px;
+	height:19px;
+	margin-left: 24px;
+	background-color: #fff;
+	_overflow: hidden;
+	_width: 80px;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.cke_rtl .cke_skin_v2 .cke_menuitem .cke_label
+{
+	padding-right: 0;
+	margin-left: 0;
+	padding-left: 3px;
+	margin-right: 28px;
+}
+
+.cke_skin_v2 .cke_menuitem a.cke_disabled .cke_label
+{
+	filter: alpha(opacity=30); /* IE */
+	opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_v2 .cke_menuitem a:hover .cke_label,
+.cke_skin_v2 .cke_menuitem a:focus .cke_label,
+.cke_skin_v2 .cke_menuitem a:active .cke_label
+{
+	background-color: #8f8f73;
+	color: white;
+}
+
+.cke_skin_v2 .cke_menuitem a.cke_disabled:hover .cke_label,
+.cke_skin_v2 .cke_menuitem a.cke_disabled:focus .cke_label,
+.cke_skin_v2 .cke_menuitem a.cke_disabled:active .cke_label
+{
+	background-color: transparent;
+	color: black;
+}
+
+.cke_skin_v2 .cke_menuseparator
+{
+	background-color: #e3e3c7;
+	height: 2px;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+
+	_font-size: 0;
+}
+
+.cke_skin_v2 .cke_menuarrow
+{
+	/* arrowright.gif*/
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 0 -784px;
+	background-repeat: no-repeat;
+	height: 5px;
+	width: 3px;
+	float: right;
+	margin-right: 2px;
+	margin-top: 3px;
+}
+
+/* Never applied */
+.cke_rtl .cke_skin_v2 .cke_menuarrow
+{
+	float: left;
+	margin-right: 0;
+	margin-left: 2px;
+	/* arrowleft.gif*/
+	background-position: 0 -763px;
+}
+
+/* #3766 In the context menu, long labels with second level menu get wrapped */
+.cke_browser_ie.cke_ltr .cke_skin_v2 .cke_menuarrow
+{
+	position: absolute;
+	right: 2px;
+}
+
+.cke_browser_ie.cke_rtl .cke_skin_v2 .cke_menuarrow
+{
+	position: absolute;
+	left: 2px;
+}
+/* END #3766 */
Index: /trunk/filemanager/tp/ckeditor/_source/skins/v2/presets.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/v2/presets.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/v2/presets.css	(revision 2000)
@@ -0,0 +1,50 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/* "Source" button label */
+.cke_skin_v2 .cke_button_source .cke_label
+{
+	display: inline;		/* FF2 */
+	display: inline-block;
+}
+
+/* "Styles" panel size */
+.cke_skin_v2 .cke_styles_panel
+{
+	width: 150px;
+	height: 170px;
+}
+
+/* "Format" panel size */
+.cke_skin_v2 .cke_format_panel
+{
+	width: 150px;
+	height: 170px;
+}
+
+/* "Font" panel size */
+.cke_skin_v2 .cke_font_panel
+{
+	width: 150px;
+	height: 170px;
+}
+
+/* "Font Size" panel size */
+.cke_skin_v2 .cke_fontSize_panel
+{
+	height: 170px;
+}
+
+/* "Font Size" combo width */
+.cke_skin_v2 .cke_fontSize .cke_text
+{
+	width: 20px;
+}
+
+/* "Font Size" combo width (IE Quirks) */
+.cke_skin_v2 .cke_browser_iequirks .cke_fontSize .cke_text
+{
+	width: 32px;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/v2/richcombo.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/v2/richcombo.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/v2/richcombo.css	(revision 2000)
@@ -0,0 +1,275 @@
+/* Special Combo */
+
+.cke_skin_v2 .cke_rcombo
+{
+	display: inline-block;
+	margin-left: 2px;
+	margin-right: 2px;
+	margin-top: 2px;
+	vertical-align: top;
+	float: left;
+}
+
+.cke_skin_v2 .cke_browser_ie .cke_rcombo
+{
+	#float: none;
+	#display: inline;
+}
+
+.cke_skin_v2 .cke_rtl .cke_rcombo
+{
+	float: right;
+}
+
+.cke_skin_v2 .cke_browser_ie .cke_rcombo
+{
+	#float: none;
+}
+
+.cke_skin_v2 .cke_rcombopanel
+{
+	border: 1px solid #316ac5;
+	-moz-border-radius-topleft: 0;
+	-webkit-border-top-left-radius: 0;
+	border-top-left-radius: 0;
+	/*margin-left: 1px;*/
+	/*_margin-left: 0;*/
+}
+
+.cke_skin_v2 .cke_rcombo a
+{
+	display: inline-block;
+	float: left;
+
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_v2 .cke_rtl .cke_rcombo a
+{
+	float: right;
+}
+
+.cke_skin_v2 .cke_hc .cke_rcombo a
+{
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1.0; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_v2 .cke_rcombo .cke_label
+{
+	display: inline-block;
+	float: left;
+
+	line-height: 24px;
+	height: 24px;
+
+	vertical-align: top;
+	padding-left: 4px;
+	padding-right: 5px;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+	background-color: #f1f1e3;	/* Because of IE6+ClearType */
+}
+
+.cke_skin_v2 .cke_rtl .cke_rcombo .cke_label
+{
+	float: right;
+	padding-right: 4px;
+	padding-left: 5px;
+}
+
+.cke_skin_v2 .cke_hc .cke_rcombo .cke_label
+{
+	filter: alpha(opacity=100);
+	opacity: 1.0;
+}
+
+.cke_skin_v2 .cke_rcombo .cke_inline_label
+{
+	color: #fff;
+}
+
+.cke_skin_v2 .cke_rcombo .cke_text
+{
+	border: 1px solid #8f8f73;
+	background-color: #fff;
+	height: 14px;
+	width:60px;
+	padding-top: 4px;
+	padding-bottom: 4px;
+	padding-left: 5px;
+	padding-right: 5px;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	display: inline-block;
+	vertical-align: top;
+}
+
+.cke_skin_v2 .cke_ltr .cke_rcombo .cke_text
+{
+	-moz-border-radius-topleft: 3px;
+	-webkit-border-top-left-radius: 3px;
+	border-top-left-radius: 3px;
+	-moz-border-radius-bottomleft: 3px;
+	-webkit-border-bottom-left-radius: 3px;
+	border-bottom-left-radius: 3px;
+}
+
+.cke_skin_v2 .cke_rtl .cke_rcombo .cke_text
+{
+	-moz-border-radius-topright: 3px;
+	-webkit-border-top-right-radius: 3px;
+	border-top-right-radius: 3px;
+	-moz-border-radius-bottomright: 3px;
+	-webkit-border-bottom-right-radius: 3px;
+	border-bottom-right-radius: 3px;
+}
+
+/* Fix for IE height */
+.cke_skin_v2 .cke_browser_iequirks .cke_rcombo .cke_text
+{
+	height: 22px;
+}
+
+.cke_skin_v2 .cke_rcombo .cke_openbutton
+{
+	display: inline-block;
+
+	background-position: 5px -715px;
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-repeat: no-repeat;
+
+	border-top: 1px solid #8f8f73;
+	border-bottom: 1px solid #8f8f73;
+	width: 14px;
+	height: 22px;
+}
+
+.cke_skin_v2 .cke_ltr .cke_rcombo .cke_openbutton
+{
+    border-right: 1px solid #8f8f73;
+	-moz-border-radius-topright: 3px;
+	-webkit-border-top-right-radius: 3px;
+	border-top-right-radius: 3px;
+	-moz-border-radius-bottomright: 3px;
+	-webkit-border-bottom-right-radius: 3px;
+	border-bottom-right-radius: 3px;
+}
+
+.cke_skin_v2 .cke_rtl .cke_rcombo .cke_openbutton
+{
+    border-left: 1px solid #8f8f73;
+	-moz-border-radius-topleft: 3px;
+	-webkit-border-top-left-radius: 3px;
+	border-top-left-radius: 3px;
+	-moz-border-radius-bottomleft: 3px;
+	-webkit-border-bottom-left-radius: 3px;
+	border-bottom-left-radius: 3px;
+}
+
+.cke_skin_v2 .cke_rcombo .cke_off a:hover,
+.cke_skin_v2 .cke_rcombo .cke_off a:focus,
+.cke_skin_v2 .cke_rcombo .cke_off a:active,
+.cke_skin_v2 .cke_rcombo .cke_on a
+{
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_v2 .cke_rcombo .cke_off a:hover .cke_text,
+.cke_skin_v2 .cke_rcombo .cke_off a:focus .cke_text,
+.cke_skin_v2 .cke_rcombo .cke_off a:active .cke_text,
+.cke_skin_v2 .cke_rcombo .cke_on .cke_text
+{
+	border-color: #316ac5;
+}
+
+.cke_skin_v2 .cke_rcombo .cke_off a:hover .cke_openbutton,
+.cke_skin_v2 .cke_rcombo .cke_off a:focus .cke_openbutton,
+.cke_skin_v2 .cke_rcombo .cke_off a:active .cke_openbutton,
+.cke_skin_v2 .cke_rcombo .cke_on .cke_openbutton
+{
+	border-color: #316ac5;
+	background-color: #dff1ff;
+}
+
+.cke_skin_v2 .cke_rcombo .cke_on .cke_text
+{
+	-moz-border-radius-bottomleft: 0px;
+	-webkit-border-bottom-left-radius: 0px;
+	border-bottom-left-radius: 0px;
+}
+
+.cke_skin_v2 .cke_rcombo .cke_on .cke_openbutton
+{
+	-moz-border-radius-bottomright: 0px;
+	-webkit-border-bottom-right-radius: 0px;
+	border-bottom-right-radius: 0px;
+}
+
+.cke_skin_v2 .cke_rcombo .cke_disabled .cke_label
+{
+	filter: alpha(opacity=30); /* IE */
+	opacity: 0.3; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_label
+{
+	filter: alpha(opacity=70);
+	opacity: 0.7;
+}
+
+.cke_skin_v2 .cke_rcombo .cke_disabled .cke_text,
+.cke_skin_v2 .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: alpha(opacity=50); /* IE */
+	opacity: 0.5; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_text,
+.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: alpha(opacity=80);
+	opacity: 0.8;
+}
+
+.cke_skin_v2 .cke_rcombo .cke_disabled .cke_text
+{
+	color: #fff;
+}
+
+/* Firefox 2 & WebKit Section */
+
+.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo,
+.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo .cke_label,
+.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo .cke_text,
+.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo .cke_openbutton,
+.cke_skin_v2 .cke_browser_webkit .cke_rcombo .cke_label,
+.cke_skin_v2 .cke_browser_webkit .cke_rcombo .cke_text,
+.cke_skin_v2 .cke_browser_webkit .cke_rcombo .cke_openbutton
+{
+	display: block;
+	float: left;
+}
+
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo,
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_label,
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_text,
+.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_openbutton,
+.cke_skin_v2 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_label,
+.cke_skin_v2 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_text,
+.cke_skin_v2 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_openbutton
+{
+	float: right;
+}
+
+/*** IE ***/
+
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_rcombo,
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_rcombo a,
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_rcombo .cke_label
+{
+	float: none;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/v2/editor.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/v2/editor.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/v2/editor.css	(revision 2000)
@@ -0,0 +1,21 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+@import url("reset.css");
+@import url("mainui.css");
+@import url("panel.css");
+@import url("toolbar.css");
+@import url("menu.css");
+@import url("richcombo.css");
+@import url("elementspath.css");
+@import url("icons.css");
+@import url("presets.css");
+
+/* Restore the container visibility */
+html .cke_skin_v2,
+html.cke_skin_v2_container
+{
+	visibility: visible;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/kama/skin.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/kama/skin.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/kama/skin.js	(revision 2000)
@@ -0,0 +1,276 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.skins.add( 'kama', (function()
+{
+	var preload = [];
+
+	if ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 )
+	{
+		// For IE6, we need to preload some images, otherwhise they will be
+		// downloaded several times (CSS background bug).
+		preload.push( 'icons.png', 'images/sprites_ie6.png', 'images/dialog_sides.gif' );
+	}
+
+	return {
+		preload		: preload,
+		editor		: { css : [ 'editor.css' ] },
+		dialog		: { css : [ 'dialog.css' ] },
+		templates	: { css : [ 'templates.css' ] },
+		margins		: [ 0, 0, 0, 0 ],
+		init : function( editor )
+		{
+			if ( editor.config.width && !isNaN( editor.config.width ) )
+				editor.config.width -= 12;
+
+			var uiColorMenus = [];
+			var uiColorRegex = /\$color/g;
+			var uiColorMenuCss = "/* UI Color Support */\
+.cke_skin_kama .cke_menuitem .cke_icon_wrapper\
+{\
+	background-color: $color !important;\
+	border-color: $color !important;\
+}\
+\
+.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,\
+.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,\
+.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper\
+{\
+	background-color: $color !important;\
+	border-color: $color !important;\
+}\
+\
+.cke_skin_kama .cke_menuitem a:hover .cke_label,\
+.cke_skin_kama .cke_menuitem a:focus .cke_label,\
+.cke_skin_kama .cke_menuitem a:active .cke_label\
+{\
+	background-color: $color !important;\
+}\
+\
+.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,\
+.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,\
+.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label\
+{\
+	background-color: transparent !important;\
+}\
+\
+.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_icon_wrapper,\
+.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_icon_wrapper,\
+.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_icon_wrapper\
+{\
+	background-color: $color !important;\
+	border-color: $color !important;\
+}\
+\
+.cke_skin_kama .cke_menuitem a.cke_disabled .cke_icon_wrapper\
+{\
+	background-color: $color !important;\
+	border-color: $color !important;\
+}\
+\
+.cke_skin_kama .cke_menuseparator\
+{\
+	background-color: $color !important;\
+}\
+\
+.cke_skin_kama .cke_menuitem a:hover,\
+.cke_skin_kama .cke_menuitem a:focus,\
+.cke_skin_kama .cke_menuitem a:active\
+{\
+	background-color: $color !important;\
+}";
+			// We have to split CSS declarations for webkit.
+			if ( CKEDITOR.env.webkit )
+			{
+				uiColorMenuCss = uiColorMenuCss.split( '}' ).slice( 0, -1 );
+				for ( var i = 0 ; i < uiColorMenuCss.length ; i++ )
+					uiColorMenuCss[ i ] = uiColorMenuCss[ i ].split( '{' );
+			}
+
+			function addStylesheet( document )
+			{
+				var node = document.getHead().append( 'style' );
+				node.setAttribute( "id", "cke_ui_color" );
+				node.setAttribute( "type", "text/css" );
+
+				return node;
+			}
+
+			function updateStylesheets( styleNodes, styleContent, replace )
+			{
+				var r, i, content;
+				for ( var id  = 0 ; id < styleNodes.length ; id++ )
+				{
+					if ( CKEDITOR.env.webkit )
+					{
+						// Truncate manually.
+						for ( i = 0 ; i < styleNodes[ id ].$.sheet.rules.length ; i++ )
+							styleNodes[ id ].$.sheet.removeRule( i );
+
+						for ( i = 0 ; i < styleContent.length ; i++ )
+						{
+							content = styleContent[ i ][ 1 ];
+							for ( r  = 0 ; r < replace.length ; r++ )
+								content = content.replace( replace[ r ][ 0 ], replace[ r ][ 1 ] );
+
+							styleNodes[ id ].$.sheet.addRule( styleContent[ i ][ 0 ], content );
+						}
+					}
+					else
+					{
+						content = styleContent;
+						for ( r  = 0 ; r < replace.length ; r++ )
+							content = content.replace( replace[ r ][ 0 ], replace[ r ][ 1 ] );
+
+						if ( CKEDITOR.env.ie )
+							styleNodes[ id ].$.styleSheet.cssText = content;
+						else
+							styleNodes[ id ].setHtml( content );
+					}
+				}
+			}
+
+			var uiColorRegexp = /\$color/g;
+
+			CKEDITOR.tools.extend( editor,
+			{
+				uiColor: null,
+
+				getUiColor : function()
+				{
+					return this.uiColor;
+				},
+
+				setUiColor : function( color )
+				{
+					var cssContent,
+						uiStyle = addStylesheet( CKEDITOR.document ),
+						cssId = '#cke_' + editor.name.replace('.', '\\.');
+
+					var cssSelectors =
+						[
+							cssId + " .cke_wrapper",
+							cssId + "_dialog .cke_dialog_contents",
+							cssId + "_dialog a.cke_dialog_tab",
+							cssId + "_dialog .cke_dialog_footer"
+						].join( ',' );
+					var cssProperties = "background-color: $color !important;";
+
+					if ( CKEDITOR.env.webkit )
+						cssContent = [ [ cssSelectors, cssProperties ] ];
+					else
+						cssContent = cssSelectors + '{' + cssProperties + '}';
+
+					return ( this.setUiColor =
+						function( color )
+						{
+							var replace = [ [ uiColorRegexp, color ] ];
+							editor.uiColor = color;
+
+							// Update general style.
+							updateStylesheets( [ uiStyle ], cssContent, replace );
+
+							// Update menu styles.
+							updateStylesheets( uiColorMenus, uiColorMenuCss, replace );
+						})( color );
+				}
+			});
+
+			editor.on( 'menuShow', function( event )
+			{
+				var panel = event.data[ 0 ];
+				var iframe = panel.element.getElementsByTag( 'iframe' ).getItem( 0 ).getFrameDocument();
+
+				// Add stylesheet if missing.
+				if ( !iframe.getById( 'cke_ui_color' ) )
+				{
+					var node = addStylesheet( iframe );
+					uiColorMenus.push( node );
+
+					var color = editor.getUiColor();
+					// Set uiColor for new menu.
+					if ( color )
+						updateStylesheets( [ node ], uiColorMenuCss, [ [ uiColorRegexp, color ] ] );
+				}
+			});
+
+			// Apply UI color if specified in config.
+			if ( editor.config.uiColor )
+				editor.setUiColor( editor.config.uiColor );
+		}
+	};
+})() );
+
+if ( CKEDITOR.dialog )
+{
+	CKEDITOR.dialog.on( 'resize', function( evt )
+		{
+			var data = evt.data,
+				width = data.width,
+				height = data.height,
+				dialog = data.dialog,
+				contents = dialog.parts.contents,
+				standardsMode = !CKEDITOR.env.quirks;
+
+			if ( data.skin != 'kama' )
+				return;
+
+			contents.setStyles(
+				( CKEDITOR.env.ie || ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 ) ) ?		// IE && FF2
+					{
+						width : width + 'px',
+						height : height + 'px'
+					}
+				:
+					{
+						// To avoid having scrollbars in the dialogs, we're
+						// (for now) using the "min-xxx" properties, for
+						// browsers which well support it (#3878).
+						'min-width' : width + 'px',
+						'min-height' : height + 'px'
+					});
+
+			if ( !CKEDITOR.env.ie )
+				return;
+
+			// Fix the size of the elements which have flexible lengths.
+			setTimeout( function()
+				{
+					var body = contents.getParent(),
+						innerDialog = body.getParent();
+
+					// tc
+					var el = innerDialog.getChild( 2 );
+					el.setStyle( 'width', ( body.$.offsetWidth ) + 'px' );
+
+					// bc
+					el = innerDialog.getChild( 7 );
+					el.setStyle( 'width', ( body.$.offsetWidth - 28 ) + 'px' );
+
+					// ml
+					el = innerDialog.getChild( 4 );
+					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
+
+					// mr
+					el = innerDialog.getChild( 5 );
+					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
+				},
+				100 );
+		});
+}
+
+/**
+ * The base user interface color to be used by the editor. Not all skins are
+ * compatible with this setting.
+ * @name CKEDITOR.config.uiColor
+ * @type String
+ * @default '' (empty)
+ * @example
+ * // Using a color code.
+ * config.uiColor = '#AADC6E';
+ * @example
+ * // Using an HTML color name.
+ * config.uiColor = 'Gold';
+ */
Index: /trunk/filemanager/tp/ckeditor/_source/skins/kama/elementspath.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/kama/elementspath.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/kama/elementspath.css	(revision 2000)
@@ -0,0 +1,68 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+@media print
+{
+	.cke_path
+	{
+		display: none;
+	}
+}
+
+.cke_skin_kama .cke_path
+{
+	padding: 0 5px;
+	display: inline-block;
+	float: left;
+}
+
+.cke_skin_kama .cke_rtl .cke_path
+{
+	float: right;
+}
+
+.cke_skin_kama .cke_path a,
+.cke_skin_kama .cke_path .cke_empty
+{
+	display: inline-block;
+	float: left;
+	padding-top: 1px;
+	padding-bottom: 1px;
+	padding-left: 4px;
+	padding-right: 4px;
+	margin-bottom : 3px;
+	color: #60676a;
+}
+
+.cke_skin_kama .cke_path .cke_empty
+{
+	visibility: hidden;
+}
+
+.cke_skin_kama .cke_rtl .cke_path a,
+.cke_skin_kama .cke_rtl .cke_path cke_empty
+{
+	float: right;
+}
+
+.cke_skin_kama .cke_path a:hover,
+.cke_skin_kama .cke_path a:focus,
+.cke_skin_kama .cke_path a:active	/* IE */
+{
+	background-color: #dff1ff;
+	padding-top: 1px;
+	padding-bottom: 1px;
+	padding-left: 4px;
+	padding-right: 4px;
+	outline: none;
+	color : #000;
+}
+
+/* IE double float-right workaround */
+.cke_skin_kama .cke_browser_ie .cke_rtl .cke_path a,
+.cke_skin_kama .cke_browser_ie .cke_rtl .cke_path .cke_empty
+{
+	float: none;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/kama/icons.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/kama/icons.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/kama/icons.css	(revision 2000)
@@ -0,0 +1,309 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_kama .cke_button_source .cke_icon
+{
+	background-position: 0 0;
+}
+
+.cke_skin_kama .cke_button_newpage .cke_icon
+{
+	background-position: 0 -48px;
+}
+
+.cke_skin_kama .cke_button_preview .cke_icon
+{
+	background-position: 0 -64px;
+}
+
+.cke_skin_kama .cke_button_cut .cke_icon
+{
+	background-position: 0 -96px;
+}
+
+.cke_skin_kama .cke_button_copy .cke_icon
+{
+	background-position: 0 -112px;
+}
+
+.cke_skin_kama .cke_button_paste .cke_icon
+{
+	background-position: 0 -128px;
+}
+
+.cke_skin_kama .cke_button_pastetext .cke_icon
+{
+	background-position: 0 -144px;
+}
+
+.cke_skin_kama .cke_button_find .cke_icon
+{
+	background-position: 0 -240px;
+}
+
+.cke_skin_kama .cke_button_replace .cke_icon
+{
+	background-position: 0 -256px;
+}
+
+.cke_skin_kama .cke_button_selectAll .cke_icon
+{
+	background-position: 0 -272px;
+}
+
+.cke_skin_kama .cke_button_removeFormat .cke_icon
+{
+	background-position: 0 -288px;
+}
+
+.cke_skin_kama .cke_button_bold .cke_icon
+{
+	background-position: 0 -304px;
+}
+
+.cke_skin_kama .cke_button_italic .cke_icon
+{
+	background-position: 0 -320px;
+}
+
+.cke_skin_kama .cke_button_underline .cke_icon
+{
+	background-position: 0 -336px;
+}
+
+.cke_skin_kama .cke_button_strike .cke_icon
+{
+	background-position: 0 -352px;
+}
+
+.cke_skin_kama .cke_button_subscript .cke_icon
+{
+	background-position: 0 -368px;
+}
+
+.cke_skin_kama .cke_button_superscript .cke_icon
+{
+	background-position: 0 -384px;
+}
+
+.cke_skin_kama .cke_button_table .cke_icon
+{
+	background-position: 0 -608px;
+}
+
+.cke_skin_kama .cke_button_horizontalrule .cke_icon
+{
+	background-position: 0 -624px;
+}
+
+.cke_skin_kama .cke_button_smiley .cke_icon
+{
+	background-position: 0 -640px;
+}
+
+.cke_skin_kama .cke_button_link .cke_icon
+{
+	background-position: 0 -528px;
+}
+
+.cke_skin_kama .cke_button_unlink .cke_icon
+{
+	background-position: 0 -544px;
+}
+
+.cke_skin_kama .cke_button_anchor .cke_icon
+{
+	background-position: 0 -560px;
+}
+
+.cke_skin_kama .cke_button_image .cke_icon
+{
+	background-position: 0 -576px;
+}
+
+.cke_skin_kama .cke_button_flash .cke_icon
+{
+	background-position: 0 -592px;
+}
+
+.cke_skin_kama .cke_button_specialchar .cke_icon
+{
+	background-position: 0 -656px;
+}
+
+.cke_skin_kama .cke_button_pagebreak .cke_icon
+{
+	background-position: 0 -672px;
+}
+
+.cke_skin_kama .cke_button_print .cke_icon
+{
+	background-position: 0 -176px;
+}
+
+.cke_skin_kama .cke_button_checkspell .cke_icon,
+.cke_skin_kama .cke_button_scayt .cke_icon
+{
+	background-position: 0 -192px;
+}
+
+.cke_skin_kama .cke_button_pagebreak .cke_icon
+{
+	background-position: 0 -672px;
+}
+
+.cke_skin_kama .cke_button_textcolor .cke_icon
+{
+	background-position: 0 -704px;
+}
+
+.cke_skin_kama .cke_button_bgcolor .cke_icon
+{
+	background-position: 0 -720px;
+}
+
+.cke_skin_kama .cke_button_form .cke_icon
+{
+	background-position: 0 -752px;
+}
+
+.cke_skin_kama .cke_button_checkbox .cke_icon
+{
+	background-position: 0 -768px;
+}
+
+.cke_skin_kama .cke_button_radio .cke_icon
+{
+	background-position: 0 -784px;
+}
+
+.cke_skin_kama .cke_button_textfield .cke_icon
+{
+	background-position: 0 -800px;
+}
+
+.cke_skin_kama .cke_button_textarea .cke_icon
+{
+	background-position: 0 -816px;
+}
+.cke_skin_kama .cke_button_showblocks .cke_icon
+{
+	background-position: 0 -1136px;
+}
+
+.cke_skin_kama .cke_button_select .cke_icon
+{
+	background-position: 0 -832px;
+}
+
+.cke_skin_kama .cke_button_button .cke_icon
+{
+	background-position: 0 -848px;
+}
+
+.cke_skin_kama .cke_button_imagebutton .cke_icon
+{
+	background-position: 0 -864px;
+}
+
+.cke_skin_kama .cke_button_hiddenfield .cke_icon
+{
+	background-position: 0 -880px;
+}
+
+.cke_skin_kama .cke_button_undo .cke_icon
+{
+	background-position: 0 -208px;
+}
+
+.cke_skin_kama .cke_rtl .cke_button_undo .cke_icon
+{
+	background-position: 0 -224px;
+}
+
+.cke_skin_kama .cke_button_redo .cke_icon
+{
+	background-position: 0 -224px;
+}
+
+.cke_skin_kama .cke_rtl .cke_button_redo .cke_icon
+{
+	background-position: 0 -208px;
+}
+
+.cke_skin_kama .cke_button_templates .cke_icon
+{
+	background-position: 0 -80px;
+}
+
+.cke_skin_kama .cke_button_numberedlist .cke_icon
+{
+	background-position: 0 -400px;
+}
+
+.cke_skin_kama .cke_button_bulletedlist .cke_icon
+{
+	background-position: 0 -416px;
+}
+
+.cke_skin_kama .cke_button_outdent .cke_icon
+{
+	background-position: 0 -432px;
+}
+
+.cke_skin_kama .cke_button_indent .cke_icon
+{
+	background-position: 0 -448px;
+}
+
+.cke_skin_kama .cke_button_justifyleft .cke_icon
+{
+	background-position: 0 -464px;
+}
+
+.cke_skin_kama .cke_button_justifycenter .cke_icon
+{
+	background-position: 0 -480px;
+}
+
+.cke_skin_kama .cke_button_justifyright .cke_icon
+{
+	background-position: 0 -496px;
+}
+
+.cke_skin_kama .cke_button_justifyblock .cke_icon
+{
+	background-position: 0 -512px;
+}
+
+.cke_skin_kama .cke_button_blockquote .cke_icon
+{
+	background-position: 0 -1152px;
+}
+
+.cke_skin_kama .cke_button_flash .cke_icon
+{
+	background-position: 0 -592px;
+}
+
+.cke_skin_kama .cke_button_pastefromword .cke_icon
+{
+	background-position: 0 -160px;
+}
+
+.cke_skin_kama .cke_button_save .cke_icon
+{
+	background-position: 0 -32px;
+}
+
+.cke_skin_kama .cke_button_about .cke_icon
+{
+	background-position: 0 -736px;
+}
+
+.cke_skin_kama .cke_button_maximize .cke_icon
+{
+	background-position: 0 -1040px;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/kama/templates.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/kama/templates.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/kama/templates.css	(revision 2000)
@@ -0,0 +1,71 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * Styles for the "templates" plugin.
+ */
+
+.cke_skin_kama .cke_tpl_list
+{
+	border: #dcdcdc 2px solid;
+	background-color: #ffffff;
+	overflow: auto;
+	width: 100%;
+	height: 220px;
+}
+
+.cke_skin_kama .cke_tpl_item
+{
+	margin: 5px;
+	padding: 7px;
+	border: #eeeeee 1px solid;
+	*width: 88%;
+}
+
+.cke_skin_kama .cke_tpl_preview
+{
+	border-collapse: separate;
+	text-indent:0;
+	width: 100%;
+}
+.cke_skin_kama .cke_tpl_preview td
+{
+	padding: 2px;
+	vertical-align: middle;
+}
+.cke_skin_kama .cke_tpl_preview .cke_tpl_preview_img
+{
+	width: 100px;
+}
+.cke_skin_kama .cke_tpl_preview span
+{
+	white-space: normal;
+}
+
+.cke_skin_kama .cke_tpl_title
+{
+	font-weight: bold;
+}
+
+.cke_skin_kama .cke_tpl_hover
+{
+	border: #ff9933 1px solid !important;
+	background-color: #fffacd !important;
+	cursor: pointer;
+	cursor: hand;
+}
+/*
+ * Fix property 'cursor' doesn't inherit on table
+ */
+.cke_skin_kama .cke_tpl_hover *
+{
+	cursor: inherit;
+}
+
+.cke_skin_kama .cke_tpl_empty, .cke_tpl_loading
+{
+	text-align: center;
+	padding: 5px;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/kama/dialog.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/kama/dialog.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/kama/dialog.css	(revision 2000)
@@ -0,0 +1,742 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/* Restore the dialog visibility */
+body .cke_dialog
+{
+	visibility: visible;
+}
+
+.cke_skin_kama .cke_dialog_body
+{
+	z-index: 1;
+	border: solid 1px #ddd;
+	padding: 5px;
+	background-color: #fff;
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+}
+
+.cke_skin_kama .cke_dialog_tl,
+.cke_skin_kama .cke_dialog_tr,
+.cke_skin_kama .cke_dialog_tc,
+.cke_skin_kama .cke_dialog_bl,
+.cke_skin_kama .cke_dialog_br,
+.cke_skin_kama .cke_dialog_bc,
+.cke_skin_kama .cke_dialog_ml,
+.cke_skin_kama .cke_dialog_mr
+{
+	display:none;
+}
+
+.cke_skin_kama .cke_dialog_title
+{
+	font-weight: bold;
+	font-size: 14px;
+	padding: 3px 3px 8px;
+	cursor: move;
+	position: relative;
+	border-bottom: 1px solid #eee;
+}
+
+.cke_skin_kama .cke_browser_iequirks .cke_dialog_title,
+.cke_skin_kama .cke_browser_ie6 .cke_dialog_title,
+.cke_skin_kama .cke_browser_ie7 .cke_dialog_title
+{
+	margin-bottom: 22px;
+}
+
+.cke_skin_kama .cke_browser_iequirks.cke_single_page .cke_dialog_title,
+.cke_skin_kama .cke_browser_ie6.cke_single_page .cke_dialog_title,
+.cke_skin_kama .cke_browser_ie7.cke_single_page .cke_dialog_title
+{
+	margin-bottom: 10px;
+}
+
+.cke_skin_kama .cke_browser_ie.cke_rtl .cke_dialog_title
+{
+	position: static !important;
+	unicode-bidi: bidi-override;
+}
+
+.cke_skin_kama .cke_dialog_contents
+{
+	background-color: #ebebeb;
+	border: solid 1px #fff;
+	border-bottom: none;
+	overflow: auto;
+	padding: 17px 10px 5px 10px;
+	-moz-border-radius-topleft: 5px;
+	-moz-border-radius-topright: 5px;
+	-webkit-border-top-left-radius: 5px;
+	-webkit-border-top-right-radius: 5px;
+	border-top-left-radius: 5px;
+	border-top-right-radius: 5px;
+	margin-top: 22px;
+}
+
+.cke_skin_kama .cke_dialog_footer
+{
+	text-align: right;
+	background-color: #ebebeb;
+	border: solid 1px #fff;
+	border-bottom: none;
+	-moz-border-radius-bottomleft: 5px;
+	-moz-border-radius-bottomright: 5px;
+	-webkit-border-bottom-left-radius: 5px;
+	-webkit-border-bottom-right-radius: 5px;
+	border-bottom-left-radius: 5px;
+	border-bottom-right-radius: 5px;
+}
+
+.cke_skin_kama .cke_rtl .cke_dialog_footer
+{
+	text-align: left;
+}
+
+/* tabs */
+
+.cke_skin_kama .cke_dialog_tabs
+{
+	height: 23px;
+	display: inline-block;
+	_display: block;
+	margin-left:10px;
+	margin-right:10px;
+	margin-top: 11px;
+	position: absolute;
+	z-index: 2;
+}
+
+.cke_skin_kama .cke_browser_iequirks .cke_dialog_tabs,
+.cke_skin_kama .cke_browser_ie6 .cke_dialog_tabs,
+.cke_skin_kama .cke_browser_ie7 .cke_dialog_tabs
+{
+	top: 33px;
+}
+
+.cke_skin_kama .cke_rtl .cke_dialog_tabs
+{
+	right: 10px;
+}
+
+.cke_skin_kama a.cke_dialog_tab,
+.cke_skin_kama a:link.cke_dialog_tab,
+.cke_skin_kama a:active.cke_dialog_tab,
+.cke_skin_kama a:hover.cke_dialog_tab,
+.cke_skin_kama a:visited.cke_dialog_tab
+{
+	background-image: url(images/sprites.png);
+	background-repeat: repeat-x;
+	background-position: 0 -1323px;
+
+	background-color: #ebebeb;
+	height: 14px;
+	padding: 4px 8px;
+	display: inline-block;
+	cursor: pointer;
+
+}
+
+/* Gecko 1.8 layout workaround. */
+.cke_skin_kama .cke_browser_gecko18 a.cke_dialog_tab,
+.cke_skin_kama .cke_browser_gecko18 a:link.cke_dialog_tab,
+.cke_skin_kama .cke_browser_gecko18 a:active.cke_dialog_tab,
+.cke_skin_kama .cke_browser_gecko18 a:hover.cke_dialog_tab,
+.cke_skin_kama .cke_browser_gecko18 a:visited.cke_dialog_tab
+{
+	display: inline;
+	position: relative;
+	top: 6px;
+}
+
+.cke_skin_kama a:hover.cke_dialog_tab
+{
+	background-color: #f1f1e3;
+}
+
+.cke_skin_kama a.cke_dialog_tab_selected,
+.cke_skin_kama a:link.cke_dialog_tab_selected,
+.cke_skin_kama a:active.cke_dialog_tab_selected,
+.cke_skin_kama a:hover.cke_dialog_tab_selected,
+.cke_skin_kama a:visited.cke_dialog_tab_selected
+{
+	background-position: 0 -1279px;
+	cursor: default;
+}
+
+/* single_page */
+
+.cke_skin_kama .cke_single_page .cke_dialog_tabs
+{
+	display: none;
+}
+
+.cke_skin_kama .cke_single_page .cke_dialog_contents
+{
+	padding-top: 5px;
+	margin-top: 10px;
+}
+
+/* IE7 + IE quirks */
+.cke_skin_kama .cke_browser_ie7.cke_single_page .cke_dialog_contents
+{
+	margin-top: -10px;
+	position: relative;
+	margin-bottom: -22px;
+}
+
+.cke_skin_kama .cke_dialog_ui_vbox table,
+.cke_skin_kama .cke_dialog_ui_hbox table
+{
+	margin: auto;
+}
+
+.cke_skin_kama .cke_dialog_ui_vbox_child
+{
+	padding: 5px 0px;
+}
+
+.cke_skin_kama input.cke_dialog_ui_input_text,
+.cke_skin_kama input.cke_dialog_ui_input_password
+{
+	background-color: white;
+	border: none;
+	padding: 0px;
+	width: 100%;
+	height: 14px;
+}
+
+.cke_skin_kama div.cke_dialog_ui_input_text,
+.cke_skin_kama div.cke_dialog_ui_input_password
+{
+	background-color: white;
+	border: 1px solid #a0a0a0;
+	padding: 1px 0px;
+}
+
+.cke_skin_kama textarea.cke_dialog_ui_input_textarea
+{
+	background-color: white;
+	border: none;
+	padding: 0px;
+	width: 100%;
+	/*
+	 * IE6 BUG: Scrollbars in textareas can overflow even if the outer DIV is set to overflow:hidden.
+	 * So leave 1% width for the scrollbar. In most situations the 1% isn't noticeable by users.
+	 */
+	_width: 99%;
+	overflow: auto;
+	resize: none;
+}
+
+.cke_skin_kama div.cke_dialog_ui_input_textarea
+{
+	background-color: white;
+	border: 1px solid #a0a0a0;
+	padding: 1px 0px;
+}
+
+.cke_skin_kama div.cke_disabled .cke_dialog_ui_labeled_content *
+{
+	background-color : #a0a0a0;
+	cursor : default;
+}
+
+.cke_skin_kama .cke_dialog_ui_hbox
+{
+	width: 100%;
+}
+
+.cke_skin_kama .cke_dialog_ui_hbox_first,
+.cke_skin_kama .cke_dialog_ui_hbox_child,
+.cke_skin_kama .cke_dialog_ui_hbox_last
+{
+	vertical-align: top;
+}
+
+.cke_skin_kama .cke_ltr .cke_dialog_ui_hbox_first,
+.cke_skin_kama .cke_ltr .cke_dialog_ui_hbox_child
+{
+	padding-right: 10px;
+}
+
+.cke_skin_kama .cke_rtl .cke_dialog_ui_hbox_first,
+.cke_skin_kama .cke_rtl .cke_dialog_ui_hbox_child
+{
+	padding-left: 10px;
+}
+
+/* button */
+
+.cke_skin_kama a.cke_dialog_ui_button
+{
+	border-collapse: separate;
+	cursor: default;
+
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+	background: transparent url(images/sprites.png) repeat-x scroll 0 -1069px;
+	_background: none;
+	padding: 5px 0;
+}
+
+.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button
+{
+	padding: 0;
+}
+
+/* IE6 buttons. */
+.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button span
+{
+	width: 70px;
+}
+
+.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span,
+.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span
+{
+	width: 100px;
+}
+
+.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span,
+.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span,
+.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button span
+{
+	padding: 5px 15px;
+	text-align: center;
+	color: #3b3b1f;
+	background: #53D9F0 none;
+	display: inline-block;
+	cursor: default;
+}
+/* END IE6 buttons. */
+
+.cke_skin_kama .cke_browser_webkit a.cke_dialog_ui_button span.cke_dialog_ui_button
+{
+	margin: 0;
+}
+.cke_skin_kama .cke_browser_webkit a.cke_dialog_ui_button
+{
+	float: right;
+	padding-top: 3px;
+	padding-bottom: 2px;
+	margin: 2px 0;
+}
+
+.cke_skin_kama a.cke_dialog_ui_button_ok span,
+.cke_skin_kama a.cke_dialog_ui_button_cancel span
+{
+	padding-right: 20px;
+	padding-left: 20px;
+}
+
+.cke_skin_kama a.cke_dialog_ui_button_ok
+{
+	background-position: 0 -1143px;
+}
+
+.cke_skin_kama a.cke_dialog_ui_button_ok span
+{
+	background: transparent url(images/sprites.png) no-repeat scroll right -1219px;
+}
+
+.cke_skin_kama .cke_rtl a.cke_dialog_ui_button_ok span
+{
+	background-position: left -1219px;
+}
+
+.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_ok span,
+.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_ok span
+{
+	background-color: #B8E834;
+	margin-right: 0;
+}
+
+.cke_skin_kama a.cke_dialog_ui_button_cancel
+{
+	background-position: 0 -1104px;
+}
+
+.cke_skin_kama a.cke_dialog_ui_button_cancel span
+{
+	background: transparent url(images/sprites.png) no-repeat scroll right -1245px;
+}
+
+.cke_skin_kama .cke_rtl a.cke_dialog_ui_button_cancel span
+{
+	background-position: left -1245px;
+}
+
+.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_cancel span,
+.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_cancel span
+{
+	background-color: #F65D20;
+}
+
+.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_cancel span,
+.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_cancel span,
+.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_ok span,
+.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_ok span
+{
+	background-image: none;
+}
+
+.cke_skin_kama span.cke_dialog_ui_button
+{
+	padding: 2px 10px;
+	text-align: center;
+	color: #222;
+	display: inline-block;
+	cursor: default;
+}
+
+/* Gecko 1.8 does not support display: inline-block */
+.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button
+{
+	display: block;
+}
+
+.cke_skin_kama a.cke_dialog_ui_button span.cke_disabled
+{
+	border: #898980 1px solid;
+	color: #5e5e55;
+	background-color: #c5c5b3;
+}
+
+.cke_skin_kama a:hover.cke_dialog_ui_button,
+.cke_skin_kama a:focus.cke_dialog_ui_button,
+.cke_skin_kama a:active.cke_dialog_ui_button
+{
+	background-position: 0 -1179px;
+}
+
+/* Skip hover effect on IE6 */
+.cke_skin_kama .cke_browser_iequirks a:hover.cke_dialog_ui_button span,
+.cke_skin_kama .cke_browser_iequirks a:focus.cke_dialog_ui_button span,
+.cke_skin_kama .cke_browser_iequirks a:active.cke_dialog_ui_button span,
+.cke_skin_kama .cke_browser_ie6 a:hover.cke_dialog_ui_button span,
+.cke_skin_kama .cke_browser_ie6 a:focus.cke_dialog_ui_button span,
+.cke_skin_kama .cke_browser_ie6 a:active.cke_dialog_ui_button span
+{
+	background-image: none;
+	background: #F7A922;
+}
+
+.cke_skin_kama .cke_dialog_footer_buttons
+{
+	display: inline-table;
+	margin-right: 12px;
+	margin-left: 12px;
+	width: auto;
+	position: relative;
+}
+
+/* Gecko 1.8 does not support for display: inline-table */
+.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons
+{
+	display: inline;
+}
+
+.cke_skin_kama .cke_dialog_footer_buttons span.cke_dialog_ui_button
+{
+	margin: 7px 0;
+	width: 60px;
+	text-align: center;
+}
+
+/* Firefox2 buttons */
+.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons a.cke_dialog_ui_button
+{
+	display: block;
+	padding: 0;
+}
+
+.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button
+{
+	padding-bottom: 5px;
+	padding-top: 6px;
+	margin-bottom: 0;
+}
+
+.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons .cke_dialog_ui_button_ok .cke_dialog_ui_button
+{
+	background-position: right -1214px;
+}
+
+.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons .cke_dialog_ui_button_cancel .cke_dialog_ui_button
+{
+	background-position: right -1242px;
+}
+/* END Firefox2 buttons */
+
+.cke_skin_kama strong
+{
+	font-weight: bold;
+}
+
+/* close_button */
+
+.cke_skin_kama .cke_dialog_close_button
+{
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+	background-position: 0 -1022px;
+	position: absolute;
+	cursor: pointer;
+	text-align: center;
+	height: 20px;
+	width: 20px;
+	top: 5px;
+
+	/* IE 6 */
+	_background-image: url(images/sprites_ie6.png);
+}
+
+.cke_skin_kama .cke_dialog_close_button span
+{
+	display: none;
+}
+
+.cke_skin_kama .cke_dialog_close_button:hover
+{
+	background-position: 0 -1045px;
+}
+
+.cke_skin_kama .cke_ltr .cke_dialog_close_button
+{
+	right: 10px;
+}
+
+.cke_skin_kama .cke_browser_ie8.cke_rtl .cke_dialog_close_button
+{
+	left: 8px;
+}
+
+.cke_skin_kama .cke_rtl .cke_dialog_close_button
+{
+	left: 10px;
+}
+
+.cke_skin_kama .cke_browser_ie7.cke_rtl .cke_dialog_close_button
+{
+	left: 16px;
+	top: 0;
+}
+
+/*.cke_skin_kama .cke_browser_ie6.cke_rtl .cke_dialog_close_button
+{
+	left: 16px;
+}*/
+
+/* IE7 + IE quirks */
+.cke_skin_kama .cke_browser_ie7.cke_rtl .cke_dialog_close_button
+{
+	position: absolute;
+	left: 10px;
+	top: 5px;
+}
+
+/* IE7 + IE quirks */
+.cke_skin_kama .cke_browser_ie7.cke_single_page .cke_dialog_footer
+{
+	margin-top: 22px;
+}
+
+.cke_skin_kama .cke_browser_ie6 .cke_dialog_close_button,
+.cke_skin_kama .cke_browser_iequirks .cke_dialog_close_button
+{
+	top: 7px;
+}
+
+/* IE7 + IE quirks */
+.cke_skin_kama .cke_browser_ie7.cke_ltr .cke_dialog_close_button
+{
+	margin-top: 0;
+}
+
+.cke_skin_kama .cke_dialog_ui_input_select
+{
+	border: 1px solid #a0a0a0;
+	background-color: white;
+}
+
+.cke_skin_kama iframe.cke_dialog_ui_input_file
+{
+	width: 100%;
+	height: 25px;
+}
+
+/*
+ * Some utility CSS classes for dialog authors.
+ */
+.cke_skin_kama .cke_dialog .cke_dark_background
+{
+	background-color: #eaead1;
+}
+
+.cke_skin_kama .cke_dialog .cke_hand
+{
+	cursor: pointer;
+}
+
+.cke_skin_kama .cke_dialog .cke_centered
+{
+	text-align: center;
+}
+
+.cke_skin_kama .cke_dialog a.cke_btn_reset
+{
+	float: right;
+	background-position: 0 -32px;
+	background-image: url(images/mini.gif);
+	width: 16px;
+	height: 16px;
+	background-repeat: no-repeat;
+	border: 1px none;
+	font-size: 1px;
+}
+
+.cke_skin_kama .cke_rtl .cke_dialog a.cke_btn_reset
+{
+	float: left;
+}
+
+.cke_skin_kama .cke_dialog a.cke_btn_locked,
+.cke_skin_kama .cke_dialog a.cke_btn_unlocked
+{
+	float: left;
+	background-position: 0 0;
+	background-image: url(images/mini.gif);
+	width: 16px;
+	height: 16px;
+	background-repeat: no-repeat;
+	border: none 1px;
+	font-size: 1px;
+}
+
+.cke_skin_kama .cke_rtl .cke_dialog a.cke_btn_locked,
+.cke_skin_kama .cke_rtl .cke_dialog a.cke_btn_unlocked
+{
+	float: right;
+}
+
+.cke_skin_kama .cke_dialog a.cke_btn_unlocked
+{
+	background-position: 0 -16px;
+	background-image: url(images/mini.gif);
+}
+
+.cke_skin_kama .cke_dialog .cke_btn_over
+{
+	border: outset 1px;
+	cursor: pointer;
+	cursor: hand;
+}
+
+.cke_skin_kama .cke_dialog  #ImagePreviewBox
+{
+	white-space : normal;
+	border : 2px ridge black;
+	overflow : scroll;
+	height : 160px;
+	width : 230px;
+	padding : 2px;
+	background-color : white;
+}
+.cke_skin_kama .cke_dialog  #ImagePreviewLoader
+{
+	position: absolute;
+	white-space : normal;
+	overflow : hidden;
+	height : 160px;
+	width : 230px;
+	margin : 2px;
+	padding : 2px;
+	opacity : 0.9;
+	filter : alpha(opacity=90);
+
+	background-color : #e4e4e4;
+}
+
+.cke_skin_kama .cke_dialog  #FlashPreviewBox
+{
+	white-space : normal;
+	border : 2px ridge black;
+	overflow : auto;
+	height : 160px;
+	width : 390px;
+	padding : 2px;
+	background-color : white;
+}
+
+.cke_skin_kama .cke_dialog .cke_dark_background
+{
+	text-align : center;
+	background-color: #eaead1;
+	font-size : 14px;
+}
+
+.cke_skin_kama .cke_dialog .cke_light_background
+{
+	text-align : center;
+	background-color: #ffffbe;
+}
+
+.cke_skin_kama .cke_dialog .cke_hand
+{
+	cursor: pointer;
+	cursor: hand;
+}
+
+.cke_skin_kama .cke_disabled
+{
+	color: #a0a0a0;
+}
+
+/* High Contrast Mode */
+
+.cke_skin_kama .cke_hc .cke_dialog_title,
+.cke_skin_kama .cke_hc .cke_dialog_tabs,
+.cke_skin_kama .cke_hc .cke_dialog_contents,
+.cke_skin_kama .cke_hc .cke_dialog_footer
+{
+	border-left: 1px solid;
+	border-right: 1px solid;
+}
+
+.cke_skin_kama .cke_hc .cke_dialog_title
+{
+	border-top: 1px solid;
+}
+
+.cke_skin_kama .cke_hc .cke_dialog_footer
+{
+	border-bottom: 1px solid;
+}
+
+.cke_skin_kama .cke_hc .cke_dialog_close_button span
+{
+	display: inline;
+	cursor: pointer;
+	cursor: hand;
+	font-weight: bold;
+	position: relative;
+	top: 3px;
+}
+
+.cke_skin_kama a.cke_smile img
+{
+	/* IE6 does not support transparent borders */
+	border: 2px solid #eaead1;
+}
+
+.cke_skin_kama a.cke_smile:focus img,
+.cke_skin_kama a.cke_smile:active img,
+.cke_skin_kama a.cke_smile:hover img
+{
+	border-color: #C7C78F;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/kama/panel.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/kama/panel.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/kama/panel.css	(revision 2000)
@@ -0,0 +1,203 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_kama .cke_panel
+{
+	border: 1px solid #8f8f73;
+	background-color: #fff;
+
+	width: 120px;
+	height: 100px;
+
+	overflow: hidden;
+
+	-moz-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+.cke_skin_kama .cke_contextmenu
+{
+	margin: 0;
+}
+
+/* Ideally we would use "inherit here"... but you know... IE :( */
+.cke_skin_kama .cke_panel iframe
+{
+	width: 100%;
+	height: 100%;
+}
+
+/*
+ * All the following styles are to be used inside the iframe that holds panel
+ * contents. We don't use the cke_skin_default there to avoid the reset to be
+ * active.
+ * This is not an issue as we'll never have two skins running inside the same
+ * panel iframe.
+ */
+
+html.cke_skin_kama_container
+{
+	overflow: auto;
+	overflow-x: hidden;
+}
+
+body.cke_panel_frame
+{
+	overflow: auto;
+	overflow-x: hidden;
+}
+
+ul.cke_panel_list
+{
+	list-style-type: none;
+	margin: 3px;
+	padding: 0px;
+	white-space: nowrap;
+}
+
+li.cke_panel_listItem
+{
+	margin: 0px;
+}
+
+.cke_panel_listItem a
+{
+	padding: 2px;
+	display: block;
+	border: 1px solid #fff;
+	color: inherit;
+	text-decoration: none;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+
+/* IE6 */
+* html .cke_panel_listItem a
+{
+	width : 100%;
+
+	/* IE is not able to inherit the color, so we must force it to black */
+	color: #000;
+}
+
+/* IE7 */
+*:first-child+html .cke_panel_listItem a
+{
+	/* IE is not able to inherit the color, so we must force it to black */
+	color: #000;
+}
+
+.cke_panel_listItem.cke_selected a
+{
+	border: 1px solid #ccc;
+	background-color: #e9f5ff;
+}
+
+.cke_panel_listItem a:hover,
+.cke_panel_listItem a:focus,
+.cke_panel_listItem a:active
+{
+	border-color: #316ac5;
+	background-color: #dff1ff;
+}
+
+.cke_panel_grouptitle
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+	font-weight: bold;
+	white-space: nowrap;
+	background-color: #dcdcdc;
+	color: #000;
+	margin:0px;
+	padding:3px;
+}
+
+.cke_panel_listItem p,
+.cke_panel_listItem h1,
+.cke_panel_listItem h2,
+.cke_panel_listItem h3,
+.cke_panel_listItem h4,
+.cke_panel_listItem h5,
+.cke_panel_listItem h6,
+.cke_panel_listItem pre
+{
+	margin-top: 3px;
+	margin-bottom: 3px;
+}
+
+.cke_skin_kama .cke_button_textcolor_panel,
+.cke_skin_kama .cke_button_bgcolor_panel
+{
+	width: 150px;
+	height: 135px;
+}
+
+.cke_colorblock
+{
+	padding: 3px;
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif', Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.cke_colorblock,
+.cke_colorblock a
+{
+	text-decoration: none;
+	color: #000;
+}
+
+span.cke_colorbox
+{
+	width: 10px;
+	height: 10px;
+    border: #808080 1px solid;
+	float: left;
+}
+
+.cke_rtl span.cke_colorbox
+{
+	float: right;
+}
+
+a.cke_colorbox
+{
+    border: #fff 1px solid;
+    padding: 2px;
+    float: left;
+}
+
+.cke_rtl a.cke_colorbox
+{
+    float: right;
+}
+
+a:hover.cke_colorbox,
+a:focus.cke_colorbox,
+a:active.cke_colorbox
+{
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
+}
+
+a.cke_colorauto,
+a.cke_colormore
+{
+    border: #fff 1px solid;
+    padding: 2px;
+    display: block;
+}
+
+a:hover.cke_colorauto,
+a:hover.cke_colormore,
+a:focus.cke_colorauto,
+a:focus.cke_colormore,
+a:active.cke_colorauto,
+a:active.cke_colormore
+{
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/kama/mainui.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/kama/mainui.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/kama/mainui.css	(revision 2000)
@@ -0,0 +1,139 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_kama
+{
+	display: block;
+	_display: inline-block;
+}
+
+/* Main editor only settings. */
+span.cke_skin_kama
+{
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+	border: 1px solid #D3D3D3;
+	padding: 5px;
+}
+
+.cke_skin_kama .cke_wrapper
+{
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+	background-color: #d3d3d3;
+	background-image: url(images/sprites.png);
+	background-repeat: repeat-x;
+	background-position: 0 -1950px;
+	display: block;
+
+	/*background-color: Red;*/
+}
+
+.cke_skin_kama .cke_browser_ie6 .cke_wrapper,
+.cke_skin_kama .cke_browser_iequirks .cke_wrapper
+{
+	background-image: none;
+}
+
+.cke_skin_kama .cke_editor
+{
+/*
+	border: solid 1px #dcdcdc;
+*/
+	display: inline-table;
+	width: 100%;
+}
+
+.cke_skin_kama .ltr .cke_browser_ie iframe
+{
+	margin-right: -10px;
+}
+
+.cke_skin_kama .rtl .cke_browser_ie iframe
+{
+	margin-left: -10px;
+}
+
+.cke_skin_kama .cke_browser_opera .cke_editor.cke_skin_kama .cke_resizer
+{
+	display: table;
+}
+
+.cke_skin_kama .cke_contents
+{
+	margin: 5px;
+	padding: 0 5px 5px;
+}
+
+.cke_skin_kama .cke_hc .cke_contents
+{
+	border: 1px solid black;
+}
+
+.cke_skin_kama .cke_contents iframe
+{
+	background-color: #fff;
+}
+
+.cke_skin_kama .cke_focus
+{
+	outline: auto 5px -webkit-focus-ring-color;
+}
+
+.cke_skin_kama textarea.cke_source
+{
+	font-family: 'Courier New' , Monospace;
+	font-size: small;
+	background-color: #fff;
+	white-space: pre;
+}
+
+.cke_skin_kama .cke_browser_iequirks textarea.cke_source
+{
+	/* For IE6+Quirks only */
+	_white-space: normal;
+}
+
+.cke_skin_kama .cke_resizer
+{
+	width: 12px;
+	height: 12px;
+	margin-top: 9px;
+	display: block;
+	float: right;
+	/* resizer.gif*/
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 0 -1428px;
+	background-repeat: no-repeat;
+	cursor: se-resize;
+}
+
+.cke_skin_kama .cke_rtl .cke_resizer
+{
+	cursor: sw-resize;
+	/* resizer_rtl.gif*/
+	background-position: 0 -1455px;
+	float: left;
+}
+
+.cke_skin_kama .cke_maximized .cke_resizer
+{
+	display: none;
+}
+
+.cke_skin_kama .cke_browser_ie6 .cke_contents textarea,
+.cke_skin_kama .cke_browser_ie7 .cke_contents textarea
+{
+	position: absolute;
+}
+
+.cke_skin_kama .cke_browser_ie.cke_browser_quirks .cke_contents iframe
+{
+	position: absolute;
+	top: 0;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/kama/reset.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/kama/reset.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/kama/reset.css	(revision 2000)
@@ -0,0 +1,78 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * Reset and Default Values
+ */
+.cke_skin_kama *,
+.cke_skin_kama a:hover,
+.cke_skin_kama a:link,
+.cke_skin_kama a:visited,
+.cke_skin_kama a:active
+{
+	margin: 0;
+	padding: 0;
+	border: 0;
+	background: transparent;
+	text-decoration: none;
+	font: normal normal normal 100% Sans-Serif;
+	width: auto;
+	height: auto;
+	border-collapse: collapse;
+	text-align: left;
+	vertical-align: baseline;
+	white-space: nowrap;
+	cursor: auto;
+	color: #000;
+
+    font-size: 12px;
+    font-family: Arial,Helvetica,Tahoma,Verdana,Sans-Serif;
+}
+
+.cke_skin_kama .cke_rtl *,
+.cke_skin_kama .cke_rtl a:hover,
+.cke_skin_kama .cke_rtl a:link,
+.cke_skin_kama .cke_rtl a:visited,
+.cke_skin_kama .cke_rtl a:active,
+.cke_rtl .cke_skin_kama *,
+.cke_rtl .cke_skin_kama a:hover,
+.cke_rtl .cke_skin_kama a:link,
+.cke_rtl .cke_skin_kama a:visited,
+.cke_rtl .cke_skin_kama a:active
+{
+	text-align: right;
+}
+
+.cke_skin_kama iframe
+{
+	vertical-align: inherit;	/** For IE */
+}
+
+.cke_skin_kama textarea
+{
+	white-space: pre;
+}
+
+.cke_skin_kama .cke_browser_gecko textarea
+{
+	cursor: text;
+}
+
+.cke_skin_kama .cke_browser_gecko textarea[disabled]
+{
+	cursor: default;
+}
+
+.cke_skin_kama input[type="text"],
+.cke_skin_kama input[type="password"]
+{
+	cursor: text;
+}
+
+.cke_skin_kama input[type="text"][disabled],
+.cke_skin_kama input[type="password"][disabled]
+{
+	cursor: default;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/kama/toolbar.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/kama/toolbar.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/kama/toolbar.css	(revision 2000)
@@ -0,0 +1,390 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+@media print
+{
+	/* For printing, we simply hide the toolbar */
+
+	.cke_skin_kama .cke_toolbox
+	{
+		display: none;
+	}
+}
+
+.cke_skin_kama .cke_browser_webkit .cke_toolbox,
+.cke_skin_kama .cke_browser_webkit .cke_toolbox > span
+{
+	white-space: normal;
+}
+
+.cke_skin_kama .cke_toolbox
+{
+	clear: both;
+	padding: 5px 3px 5px 6px;
+}
+
+.cke_skin_kama .cke_rtl .cke_toolbox
+{
+	padding: 5px 6px 5px 3px;
+}
+
+.cke_skin_kama a.cke_toolbox_collapser,
+.cke_skin_kama a:hover.cke_toolbox_collapser
+{
+	/* arrowtop.gif */
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 3px -1366px; /* +3px +4px */
+	background-repeat: no-repeat;
+	width: 11px;
+	height: 11px;
+	float: right;
+	border: 1px outset #D3D3D3;
+	margin: 11px 4px 2px;
+	cursor: pointer;
+}
+
+.cke_skin_kama .cke_rtl a.cke_toolbox_collapser,
+.cke_skin_kama .cke_rtl a:hover.cke_toolbox_collapser
+{
+	float: left;
+}
+
+.cke_skin_kama a.cke_toolbox_collapser_min,
+.cke_skin_kama a:hover.cke_toolbox_collapser_min
+{
+	/* arrowleft.gif*/
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 4px -1387px; /* +4px +3px */
+	background-repeat: no-repeat;
+	margin: 2px 4px;
+}
+
+.cke_skin_kama .cke_rtl a.cke_toolbox_collapser_min,
+.cke_skin_kama .cke_rtl a:hover.cke_toolbox_collapser_min
+{
+	/* arrowright.gif*/
+	background-position: 4px -1408px; /* +2px +3px */
+}
+
+.cke_skin_kama .cke_toolbar
+{
+	display: inline;
+}
+
+.cke_skin_kama .cke_separator
+{
+	display: none;
+}
+
+.cke_skin_kama .cke_break
+{
+	font-size: 0;
+	clear: left;
+}
+
+.cke_skin_kama .cke_rtl .cke_break
+{
+	clear: right;
+}
+
+.cke_skin_kama .cke_toolbar_start
+{
+	display: none;
+}
+
+.cke_skin_kama .cke_toolgroup
+{
+	-moz-border-radius:5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-repeat: repeat-x;
+	background-position: 0 -500px;
+	float: left;
+	margin-right: 6px;
+	margin-bottom: 5px;
+	padding: 2px;
+	display: inline;
+}
+
+.cke_skin_kama .cke_rtl .cke_toolgroup
+{
+	float: right;
+	margin-right: 0;
+	margin-left: 6px;
+}
+
+.cke_skin_kama .cke_button a,
+.cke_skin_kama .cke_button a:hover,
+.cke_skin_kama .cke_button a:focus,
+.cke_skin_kama .cke_button a:active,
+.cke_skin_kama .cke_button a.cke_off
+{
+	border-radius: 3px;
+	outline: none;
+	padding: 2px 4px;
+	height: 18px;
+	display: inline-block;
+	cursor: default;
+}
+
+.cke_skin_kama .cke_button a,
+.cke_skin_kama .cke_button a.cke_off
+{
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+	-moz-border-radius: 3px;
+	-webkit-border-radius: 3px;
+}
+
+.cke_skin_kama .cke_hc .cke_button a,
+.cke_skin_kama .cke_hc .cke_button a.cke_off
+{
+	opacity: 1.0;
+	filter: alpha(opacity=100);
+	border: 1px solid white;
+}
+
+.cke_skin_kama .cke_button a.cke_on
+{
+	background-color: #a3d7ff;
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1; /* Safari, Opera and Mozilla */
+	padding: 2px 4px;
+}
+
+.cke_skin_kama .cke_hc .cke_button a.cke_on
+{
+	padding: 0 2px !important;
+	border-width: 3px;
+}
+
+.cke_skin_kama .cke_button a.cke_disabled,
+.cke_skin_kama .cke_browser_ie a:hover.cke_button .cke_disabled
+{
+	filter: alpha(opacity=30); /* IE */
+	opacity: 0.3; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_kama .cke_hc .cke_button a.cke_disabled,
+.cke_skin_kama .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled
+{
+	filter: alpha(opacity=60);
+	opacity: 0.6;
+}
+
+.cke_skin_kama .cke_button a:hover.cke_on,
+.cke_skin_kama .cke_button a:focus.cke_on,
+.cke_skin_kama .cke_button a:active.cke_on,	/* IE */
+.cke_skin_kama .cke_button a:hover.cke_off,
+.cke_skin_kama .cke_button a:focus.cke_off,
+.cke_skin_kama .cke_button a:active.cke_off	/* IE */
+{
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1; /* Safari, Opera and Mozilla */
+	padding: 2px 4px;
+}
+
+.cke_skin_kama .cke_button a:hover.cke_on,
+.cke_skin_kama .cke_button a:focus.cke_on,
+.cke_skin_kama .cke_button a:active.cke_on	/* IE */
+{
+	background-color: #86caff;
+}
+
+.cke_skin_kama .cke_button a:hover.cke_off,
+.cke_skin_kama .cke_button a:focus.cke_off,
+.cke_skin_kama .cke_button a:active.cke_off	/* IE */
+{
+	background-color: #dff1ff;
+}
+
+.cke_skin_kama .cke_hc .cke_button a:hover.cke_on,
+.cke_skin_kama .cke_hc .cke_button a:focus.cke_on,
+.cke_skin_kama .cke_hc .cke_button a:active.cke_on,	/* IE */
+.cke_skin_kama .cke_hc .cke_button a:hover.cke_off,
+.cke_skin_kama .cke_hc .cke_button a:focus.cke_off,
+.cke_skin_kama .cke_hc .cke_button a:active.cke_off	/* IE */
+{
+	padding: 0 2px !important;
+	border-width: 3px;
+}
+
+.cke_skin_kama .cke_button .cke_icon
+{
+	background-image: url(icons.png);
+	background-position: 100px;
+	background-repeat: no-repeat;
+	margin-top: 1px;
+	width: 16px;
+	height: 16px;
+	display: inline-block;
+	float: left;
+}
+
+.cke_skin_kama .cke_rtl .cke_button .cke_icon
+{
+	float: right;
+}
+
+.cke_skin_kama .cke_button .cke_label
+{
+	cursor: default;
+	display: none;
+	padding-left: 3px;
+	line-height: 18px;
+	vertical-align: middle;
+	float: left;
+}
+
+.cke_skin_kama .cke_rtl .cke_button .cke_label
+{
+	padding-left: 0;
+	padding-right: 3px;
+	float: right;
+}
+
+.cke_skin_kama .cke_hc .cke_button .cke_label
+{
+	padding: 0;
+	display: inline-block;
+}
+
+.cke_skin_kama .cke_hc .cke_button .cke_icon
+{
+	display: none;
+}
+
+.cke_skin_kama .cke_accessibility
+{
+	position: absolute;
+	display: block;
+	width: 0;
+	height: 0;
+	overflow: hidden;
+}
+
+.cke_skin_kama .cke_button .cke_buttonarrow
+{
+	display: inline-block;
+	height: 17px;
+	width: 8px;
+	background-position: 2px -1469px; /* (+2, -5) */
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-repeat: no-repeat;
+	float: left;
+}
+
+.cke_skin_kama .cke_rtl .cke_button .cke_buttonarrow
+{
+	background-position: 0 -1469px; /* (0, -5) */
+	float: right;
+}
+
+.cke_skin_kama .cke_hc .cke_button .cke_buttonarrow
+{
+	display: none;
+}
+
+/*** Firefox 2 ***/
+
+.cke_skin_kama .cke_browser_gecko .cke_toolbar,
+.cke_skin_kama .cke_browser_gecko .cke_button a,
+.cke_skin_kama .cke_browser_gecko .cke_button a.cke_off,
+.cke_skin_kama .cke_browser_gecko .cke_button .cke_icon,
+.cke_skin_kama .cke_browser_gecko .cke_button .cke_buttonarrow,
+.cke_skin_kama .cke_browser_gecko .cke_separator,
+.cke_skin_kama .cke_browser_gecko .cke_toolbar_start
+{
+	display: block;
+	float: left;
+}
+
+.cke_skin_kama .cke_browser_gecko.cke_hc .cke_button .cke_icon
+{
+	display: none;
+}
+
+.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_toolbar,
+.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button a,
+.cke_skin_kama .cke_browser_gecko .cke_rtl.cke_button a.cke_off,
+.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_icon,
+.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_buttonarrow,
+.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_toolbar_start
+{
+	float: right;
+}
+
+.cke_skin_kama .cke_browser_gecko .cke_button .cke_label,
+.cke_skin_kama .cke_browser_gecko .cke_break
+{
+	float: left;
+}
+
+.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_label,
+.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_break
+{
+	float: right;
+}
+
+/*** IE ***/
+
+/* The biggest problem with IE is the RTL support (and float:right). It's
+   totally broken, and quite delicate. IE8 fixed these issues. */
+
+.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_icon,
+.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_label,
+.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_buttonarrow
+{
+	float: none;
+}
+
+/*** WebKit ***/
+
+/* We have originally used display:inline-block+float for cke_toolbar and it
+   worked well in all browsers, except IE+RTL. We had to change it to inline
+   and remove the float. This change didn't play well with Safari. */
+
+.cke_skin_kama .cke_browser_webkit .cke_toolbar
+{
+	float: left;
+}
+
+.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_toolbar
+{
+	float: right;
+}
+
+/*** Mixed Fixes ***/
+
+.cke_skin_kama .cke_browser_ie8 .cke_button .cke_label,
+.cke_skin_kama .cke_browser_opera .cke_button .cke_label,
+.cke_skin_kama .cke_browser_webkit .cke_button .cke_label
+{
+	line-height: 20px;
+}
+
+.cke_skin_kama .cke_browser_opera.cke_browser_quirks .cke_button .cke_label,
+.cke_skin_kama .cke_browser_iequirks .cke_button .cke_label
+{
+	line-height: 17px;
+}
+
+/* IE8 strict button valign correction */
+.cke_skin_kama .cke_browser_ie8 .cke_button .cke_label
+{
+	vertical-align: top;
+}
+
+.cke_skin_kama .cke_browser_iequirks.cke_browser_ie8 .cke_button .cke_label
+{
+	/* revert previous */
+	vertical-align: middle;
+}
+/* END IE8 strict button valign correction */
Index: /trunk/filemanager/tp/ckeditor/_source/skins/kama/menu.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/kama/menu.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/kama/menu.css	(revision 2000)
@@ -0,0 +1,179 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_kama .cke_contextmenu
+{
+	padding: 2px;
+}
+
+.cke_skin_kama .cke_menuitem a
+{
+	display:block;
+}
+
+.cke_skin_kama .cke_menuitem span
+{
+	cursor: default;
+}
+
+.cke_skin_kama .cke_menuitem a:hover,
+.cke_skin_kama .cke_menuitem a:focus,
+.cke_skin_kama .cke_menuitem a:active
+{
+	background-color: #D3D3D3;
+	display:block;
+}
+
+.cke_skin_kama .cke_menuitem a.cke_disabled:hover,
+.cke_skin_kama .cke_menuitem a.cke_disabled:focus,
+.cke_skin_kama .cke_menuitem a.cke_disabled:active
+{
+	background-color: transparent !important;
+}
+
+.cke_skin_kama .cke_menuitem .cke_icon
+{
+	background-image: url(icons.png);
+	background-position: 100px;
+	background-repeat:no-repeat;
+	background-color: transparent;
+	width: 16px;
+	height: 16px;
+	float: left;
+}
+
+.cke_skin_kama .cke_menuitem .cke_disabled .cke_icon
+{
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_kama .cke_menuitem .cke_icon_wrapper
+{
+	background-color: #D3D3D3;
+	border: solid 4px #D3D3D3;
+	width: 16px;
+	height: 16px;
+	float: left;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+	clear: both;
+}
+
+.cke_rtl .cke_skin_kama .cke_menuitem .cke_icon_wrapper
+{
+	float: right;
+}
+
+.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,
+.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,
+.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper
+{
+	background-color: #9d9d9d;
+	border: solid 4px #9d9d9d;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_kama .cke_menuitem a:hover.cke_disabled .cke_icon_wrapper,
+.cke_skin_kama .cke_menuitem a:focus.cke_disabled .cke_icon_wrapper,
+.cke_skin_kama .cke_menuitem a:active.cke_disabled .cke_icon_wrapper
+{
+	background-color: #D3D3D3;
+	border: solid 4px #D3D3D3;
+}
+
+.cke_skin_kama .cke_menuitem .cke_label
+{
+	display:block;
+	padding-right: 3px;
+	padding-top: 5px;
+	padding-left: 4px;
+	height:19px;
+	margin-left: 24px;
+	background-color: #fff;
+	_overflow: hidden;
+	_width: 80px;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.cke_rtl .cke_skin_kama .cke_menuitem .cke_label
+{
+	padding-right: 0;
+	margin-left: 0;
+	padding-left: 3px;
+	margin-right: 28px;
+}
+
+.cke_skin_kama .cke_menuitem a.cke_disabled .cke_label
+{
+	filter: alpha(opacity=30); /* IE */
+	opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_kama .cke_menuitem a:hover .cke_label,
+.cke_skin_kama .cke_menuitem a:focus .cke_label,
+.cke_skin_kama .cke_menuitem a:active .cke_label
+{
+	background-color: #D3D3D3;
+}
+
+.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,
+.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,
+.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label
+{
+	background-color: transparent;
+}
+
+.cke_skin_kama .cke_menuseparator
+{
+	background-color: #D3D3D3;
+	height: 2px;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+
+	_font-size: 0;
+}
+
+.cke_skin_kama .cke_menuarrow
+{
+	/* arrowright.gif*/
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 0 -1411px;
+	background-repeat: no-repeat;
+	height: 5px;
+	width: 3px;
+	float: right;
+	margin-right: 2px;
+	margin-top: 3px;
+}
+
+.cke_rtl .cke_skin_kama .cke_menuarrow
+{
+	float: left;
+	margin-right: 0;
+	margin-left: 2px;
+	/* arrowleft.gif*/
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 0px -1390px;
+	background-repeat: no-repeat;
+}
+
+/* #3766 In the context menu, long labels with second level menu get wrapped */
+.cke_browser_ie.cke_ltr .cke_skin_kama .cke_menuarrow
+{
+	position: absolute;
+	right: 2px;
+}
+
+.cke_browser_ie.cke_rtl .cke_skin_kama .cke_menuarrow
+{
+	position: absolute;
+	left: 2px;
+}
+/* END #3766 */
Index: /trunk/filemanager/tp/ckeditor/_source/skins/kama/presets.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/kama/presets.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/kama/presets.css	(revision 2000)
@@ -0,0 +1,49 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/* "Source" button label */
+.cke_skin_kama .cke_button_source .cke_label
+{
+	display: inline;
+}
+
+/* "Styles" panel size */
+.cke_skin_kama .cke_styles_panel
+{
+	width: 150px;
+	height: 170px;
+}
+
+/* "Format" panel size */
+.cke_skin_kama .cke_format_panel
+{
+	width: 150px;
+	height: 170px;
+}
+
+/* "Font" panel size */
+.cke_skin_kama .cke_font_panel
+{
+	width: 150px;
+	height: 170px;
+}
+
+/* "Font Size" panel size */
+.cke_skin_kama .cke_fontSize_panel
+{
+	height: 170px;
+}
+
+/* "Font Size" combo width */
+.cke_skin_kama .cke_fontSize .cke_text
+{
+	width: 25px;
+}
+
+/* "Font Size" combo width (IE Quirks) */
+.cke_skin_kama .cke_browser_iequirks .cke_fontSize .cke_text
+{
+	width: 32px;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/kama/richcombo.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/kama/richcombo.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/kama/richcombo.css	(revision 2000)
@@ -0,0 +1,260 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/* Special Combo */
+
+.cke_skin_kama .cke_rcombo
+{
+	display: inline;
+}
+
+.cke_skin_kama .cke_rtl .cke_rcombo
+{
+}
+
+.cke_skin_kama .cke_rcombopanel
+{
+	border: 1px solid #8F8F73;
+	-moz-border-radius-topleft: 0;
+	-webkit-border-top-left-radius: 0;
+	border-top-left-radius: 0;
+	height: auto;
+	_height: 100px;
+}
+
+/* IE6 workaround, shouldn't be here */
+.cke_skin_kama .cke_browser_iequirks .cke_rcombopanel,
+.cke_skin_kama .cke_browser_ie6 .cke_rcombopanel
+{
+/*	width: 150px;*/
+}
+
+.cke_skin_kama .cke_rcombo a,
+.cke_skin_kama .cke_rcombo a:active,
+.cke_skin_kama .cke_rcombo a:hover
+{
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-repeat: repeat-x;
+	background-position: 0 -100px;
+	border-bottom:1px solid #DAD9D9;
+	border-right:1px solid #DAD9D9;
+	float:left;
+	padding: 2px;
+	height: 21px;
+	margin-right: 6px;
+}
+
+.cke_skin_kama .cke_rtl .cke_rcombo a,
+.cke_skin_kama .cke_rtl .cke_rcombo a:active,
+.cke_skin_kama .cke_rtl .cke_rcombo a:hover
+{
+	float:right;
+	margin-right: 0;
+	margin-left: 6px;
+}
+
+.cke_skin_kama .cke_hc .cke_rcombo a
+{
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1.0; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_kama .cke_rcombo .cke_label
+{
+	display: none;
+	line-height: 26px;
+	vertical-align: top;
+	margin-right: 5px;
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+	/* background-color: #f1f1e3;	Because of IE6+ClearType */
+}
+
+.cke_skin_kama .cke_rtl .cke_rcombo .cke_label
+{
+	margin-right: 0;
+	margin-left: 5px;
+}
+
+.cke_skin_kama .cke_rcombo .cke_inline_label
+{
+	line-height: 21px;
+	font-style: italic;
+	color: #666666;
+}
+
+.cke_skin_kama .cke_browser_ie .cke_rcombo .cke_text
+{
+/*	float: left; */
+}
+
+.cke_skin_kama .cke_hc .cke_rcombo .cke_label
+{
+	filter: alpha(opacity=100);
+	opacity: 1.0;
+}
+
+.cke_skin_kama .cke_rcombo .cke_text
+{
+	filter: alpha(opacity=70); /* IE */
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+
+	height: 21px;
+	line-height: 21px;
+	width:60px;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	display: inline-block;
+	margin: 0 2px 0 4px;
+}
+
+.cke_skin_kama .cke_rtl .cke_rcombo .cke_text
+{
+	margin: 0 4px 0 2px;
+}
+
+.cke_skin_kama .cke_rcombo .cke_openbutton
+{
+	background-image: url(images/sprites.png);
+	_background-image: url(images/sprites_ie6.png);
+	background-position: 0 -68px;
+	background-repeat: no-repeat;
+	display: inline-block;
+	width: 17px;
+	height: 19px;
+	margin: 1px 2px;
+	background-repeat: no-repeat;
+}
+
+.cke_skin_kama .cke_browser_iequirks .cke_rcombo .cke_openbutton
+{
+	margin-bottom: 0;
+}
+
+.cke_skin_kama .cke_rcombo .cke_off a:hover .cke_text,
+.cke_skin_kama .cke_rcombo .cke_off a:focus .cke_text,
+.cke_skin_kama .cke_rcombo .cke_off a:active .cke_text,
+.cke_skin_kama .cke_rcombo .cke_on .cke_text
+{
+	border-color: #316ac5;
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_kama .cke_rcombo .cke_off a:hover .cke_openbutton,
+.cke_skin_kama .cke_rcombo .cke_off a:focus .cke_openbutton,
+.cke_skin_kama .cke_rcombo .cke_off a:active .cke_openbutton,
+.cke_skin_kama .cke_rcombo .cke_on .cke_openbutton
+{
+	border-color: #316ac5;
+	background-color: #dff1ff;
+}
+
+.cke_skin_kama .cke_rcombo .cke_on .cke_text
+{
+	-moz-border-radius-bottomleft: 0px;
+	-webkit-border-bottom-left-radius: 0px;
+	border-bottom-left-radius: 0px;
+}
+
+.cke_skin_kama .cke_rcombo .cke_on .cke_openbutton
+{
+	-moz-border-radius-bottomright: 0px;
+	-webkit-border-bottom-right-radius: 0px;
+	border-bottom-right-radius: 0px;
+}
+
+.cke_skin_kama .cke_rcombo .cke_disabled .cke_label
+{
+	filter: alpha(opacity=30); /* IE */
+	opacity: 0.3; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_label
+{
+	filter: alpha(opacity=70);
+	opacity: 0.7;
+}
+
+.cke_skin_kama .cke_rcombo .cke_disabled .cke_text,
+.cke_skin_kama .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: alpha(opacity=50); /* IE */
+	opacity: 0.5; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_text,
+.cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: alpha(opacity=80);
+	opacity: 0.8;
+}
+
+.cke_skin_kama .cke_rcombo .cke_disabled .cke_text
+{
+	color: #fff;
+}
+
+/* RTL */
+
+.cke_skin_kama .cke_rtl .cke_rcombo span
+{
+/*	_zoom: 1;*/
+}
+
+.cke_skin_kama .cke_rtl .cke_rcombo .cke_text
+{
+/*	_float: left;*/
+}
+
+/* Firefox 2 & WebKit Section */
+
+.cke_skin_kama .cke_browser_gecko .cke_rcombo .cke_text,
+.cke_skin_kama .cke_browser_gecko .cke_rcombo .cke_openbutton,
+.cke_skin_kama .cke_browser_webkit .cke_rcombo .cke_text,
+.cke_skin_kama .cke_browser_webkit .cke_rcombo .cke_openbutton
+{
+	display: block;
+	float: left;
+}
+
+.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_rcombo .cke_text,
+.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_rcombo .cke_text
+{
+/*	float: right;*/
+}
+
+.cke_skin_kama .cke_browser_gecko .cke_rcombo .cke_label,
+.cke_skin_kama .cke_browser_webkit .cke_rcombo .cke_label
+{
+	/*display: block;*/
+	float: left;
+}
+
+.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_rcombo .cke_label,
+.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_rcombo .cke_text,
+.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_rcombo .cke_openbutton,
+.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_rcombo .cke_label,
+.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_rcombo .cke_text,
+.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_rcombo .cke_openbutton
+{
+	float: right;
+}
+
+.cke_skin_kama .cke_browser_ie7 .cke_rcombo .cke_text
+{
+	line-height: 18px;
+}
+
+.cke_skin_kama .cke_browser_ie6 .cke_rcombo .cke_text,
+.cke_skin_kama .cke_browser_iequirks .cke_rcombo .cke_text
+{
+	height: auto;
+	line-height: 17px;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/skins/kama/editor.css
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/skins/kama/editor.css	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/skins/kama/editor.css	(revision 2000)
@@ -0,0 +1,21 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+@import url("reset.css");
+@import url("mainui.css");
+@import url("panel.css");
+@import url("toolbar.css");
+@import url("menu.css");
+@import url("richcombo.css");
+@import url("elementspath.css");
+@import url("icons.css");
+@import url("presets.css");
+
+/* Restore the container visibility */
+html .cke_skin_kama,
+html.cke_skin_kama_container
+{
+	visibility: visible;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/core/ckeditor.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/ckeditor.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/ckeditor.js	(revision 2000)
@@ -0,0 +1,96 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Contains the third and last part of the {@link CKEDITOR} object
+ *		definition.
+ */
+
+// Remove the CKEDITOR.loadFullCore reference defined on ckeditor_basic.
+delete CKEDITOR.loadFullCore;
+
+/**
+ * Holds references to all editor instances created. The name of the properties
+ * in this object correspond to instance names, and their values contains the
+ * {@link CKEDITOR.editor} object representing them.
+ * @type {Object}
+ * @example
+ * alert( <b>CKEDITOR.instances</b>.editor1.name );  // "editor1"
+ */
+CKEDITOR.instances = {};
+
+/**
+ * The document of the window holding the CKEDITOR object.
+ * @type {CKEDITOR.dom.document}
+ * @example
+ * alert( <b>CKEDITOR.document</b>.getBody().getName() );  // "body"
+ */
+CKEDITOR.document = new CKEDITOR.dom.document( document );
+
+/**
+ * Adds an editor instance to the global {@link CKEDITOR} object. This function
+ * is available for internal use mainly.
+ * @param {CKEDITOR.editor} editor The editor instance to be added.
+ * @example
+ */
+CKEDITOR.add = function( editor )
+{
+	CKEDITOR.instances[ editor.name ] = editor;
+
+	editor.on( 'focus', function()
+		{
+			if ( CKEDITOR.currentInstance != editor )
+			{
+				CKEDITOR.currentInstance = editor;
+				CKEDITOR.fire( 'currentInstance' );
+			}
+		});
+
+	editor.on( 'blur', function()
+		{
+			if ( CKEDITOR.currentInstance == editor )
+			{
+				CKEDITOR.currentInstance = null;
+				CKEDITOR.fire( 'currentInstance' );
+			}
+		});
+};
+
+/**
+ * Removes and editor instance from the global {@link CKEDITOR} object. his function
+ * is available for internal use mainly.
+ * @param {CKEDITOR.editor} editor The editor instance to be added.
+ * @example
+ */
+CKEDITOR.remove = function( editor )
+{
+	delete CKEDITOR.instances[ editor.name ];
+};
+
+// Load the bootstrap script.
+CKEDITOR.loader.load( 'core/_bootstrap' );		// @Packager.RemoveLine
+
+// Tri-state constants.
+
+/**
+ * Used to indicate the ON or ACTIVE state.
+ * @constant
+ * @example
+ */
+CKEDITOR.TRISTATE_ON = 1;
+
+/**
+ * Used to indicate the OFF or NON ACTIVE state.
+ * @constant
+ * @example
+ */
+CKEDITOR.TRISTATE_OFF = 2;
+
+/**
+ * Used to indicate DISABLED state.
+ * @constant
+ * @example
+ */
+CKEDITOR.TRISTATE_DISABLED = 0;
Index: /trunk/filemanager/tp/ckeditor/_source/core/dom/text.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dom/text.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dom/text.js	(revision 2000)
@@ -0,0 +1,123 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.dom.text} class, which represents
+ *		a DOM text node.
+ */
+
+/**
+ * Represents a DOM text node.
+ * @constructor
+ * @augments CKEDITOR.dom.node
+ * @param {Object|String} text A native DOM text node or a string containing
+ *		the text to use to create a new text node.
+ * @param {CKEDITOR.dom.document} [ownerDocument] The document that will contain
+ *		the node in case of new node creation. Defaults to the current document.
+ * @example
+ * var nativeNode = document.createTextNode( 'Example' );
+ * var text = CKEDITOR.dom.text( nativeNode );
+ * @example
+ * var text = CKEDITOR.dom.text( 'Example' );
+ */
+CKEDITOR.dom.text = function( text, ownerDocument )
+{
+	if ( typeof text == 'string' )
+		text = ( ownerDocument ? ownerDocument.$ : document ).createTextNode( text );
+
+	// Theoretically, we should call the base constructor here
+	// (not CKEDITOR.dom.node though). But, IE doesn't support expando
+	// properties on text node, so the features provided by domObject will not
+	// work for text nodes (which is not a big issue for us).
+	//
+	// CKEDITOR.dom.domObject.call( this, element );
+
+	/**
+	 * The native DOM text node represented by this class instance.
+	 * @type Object
+	 * @example
+	 * var element = new CKEDITOR.dom.text( 'Example' );
+	 * alert( element.$.nodeType );  // "3"
+	 */
+	this.$ = text;
+};
+
+CKEDITOR.dom.text.prototype = new CKEDITOR.dom.node();
+
+CKEDITOR.tools.extend( CKEDITOR.dom.text.prototype,
+	/** @lends CKEDITOR.dom.text.prototype */
+	{
+		/**
+		 * The node type. This is a constant value set to
+		 * {@link CKEDITOR.NODE_TEXT}.
+		 * @type Number
+		 * @example
+		 */
+		type : CKEDITOR.NODE_TEXT,
+
+		getLength : function()
+		{
+			return this.$.nodeValue.length;
+		},
+
+		getText : function()
+		{
+			return this.$.nodeValue;
+		},
+
+		/**
+		 * Breaks this text node into two nodes at the specified offset,
+		 * keeping both in the tree as siblings. This node then only contains
+		 * all the content up to the offset point. A new text node, which is
+		 * inserted as the next sibling of this node, contains all the content
+		 * at and after the offset point. When the offset is equal to the
+		 * length of this node, the new node has no data.
+		 * @param {Number} The position at which to split, starting from zero.
+		 * @returns {CKEDITOR.dom.text} The new text node.
+		 */
+		split : function( offset )
+		{
+			// If the offset is after the last char, IE creates the text node
+			// on split, but don't include it into the DOM. So, we have to do
+			// that manually here.
+			if ( CKEDITOR.env.ie && offset == this.getLength() )
+			{
+				var next = this.getDocument().createText( '' );
+				next.insertAfter( this );
+				return next;
+			}
+
+			var doc = this.getDocument();
+			var retval = new CKEDITOR.dom.text( this.$.splitText( offset ), doc );
+
+			// IE BUG: IE8 does not update the childNodes array in DOM after splitText(),
+			// we need to make some DOM changes to make it update. (#3436)
+			if ( CKEDITOR.env.ie8 )
+			{
+				var workaround = new CKEDITOR.dom.text( '', doc );
+				workaround.insertAfter( retval );
+				workaround.remove();
+			}
+
+			return retval;
+		},
+
+		/**
+		 * Extracts characters from indexA up to but not including indexB.
+		 * @param {Number} indexA An integer between 0 and one less than the
+		 *		length of the text.
+		 * @param {Number} [indexB] An integer between 0 and the length of the
+		 *		string. If omitted, extracts characters to the end of the text.
+		 */
+		substring : function( indexA, indexB )
+		{
+			// We need the following check due to a Firefox bug
+			// https://bugzilla.mozilla.org/show_bug.cgi?id=458886
+			if ( typeof indexB != 'number' )
+				return this.$.nodeValue.substr( indexA );
+			else
+				return this.$.nodeValue.substring( indexA, indexB );
+		}
+	});
Index: /trunk/filemanager/tp/ckeditor/_source/core/dom/node.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dom/node.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dom/node.js	(revision 2000)
@@ -0,0 +1,649 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.dom.node} class, which is the base
+ *		class for classes that represent DOM nodes.
+ */
+
+/**
+ * Base class for classes representing DOM nodes. This constructor may return
+ * and instance of classes that inherits this class, like
+ * {@link CKEDITOR.dom.element} or {@link CKEDITOR.dom.text}.
+ * @augments CKEDITOR.dom.domObject
+ * @param {Object} domNode A native DOM node.
+ * @constructor
+ * @see CKEDITOR.dom.element
+ * @see CKEDITOR.dom.text
+ * @example
+ */
+CKEDITOR.dom.node = function( domNode )
+{
+	if ( domNode )
+	{
+		switch ( domNode.nodeType )
+		{
+			case CKEDITOR.NODE_ELEMENT :
+				return new CKEDITOR.dom.element( domNode );
+
+			case CKEDITOR.NODE_TEXT :
+				return new CKEDITOR.dom.text( domNode );
+		}
+
+		// Call the base constructor.
+		CKEDITOR.dom.domObject.call( this, domNode );
+	}
+
+	return this;
+};
+
+CKEDITOR.dom.node.prototype = new CKEDITOR.dom.domObject();
+
+/**
+ * Element node type.
+ * @constant
+ * @example
+ */
+CKEDITOR.NODE_ELEMENT = 1;
+
+/**
+ * Text node type.
+ * @constant
+ * @example
+ */
+CKEDITOR.NODE_TEXT = 3;
+
+/**
+ * Comment node type.
+ * @constant
+ * @example
+ */
+CKEDITOR.NODE_COMMENT = 8;
+
+CKEDITOR.NODE_DOCUMENT_FRAGMENT = 11;
+
+CKEDITOR.POSITION_IDENTICAL = 0;
+CKEDITOR.POSITION_DISCONNECTED = 1;
+CKEDITOR.POSITION_FOLLOWING = 2;
+CKEDITOR.POSITION_PRECEDING = 4;
+CKEDITOR.POSITION_IS_CONTAINED = 8;
+CKEDITOR.POSITION_CONTAINS = 16;
+
+CKEDITOR.tools.extend( CKEDITOR.dom.node.prototype,
+	/** @lends CKEDITOR.dom.node.prototype */
+	{
+		/**
+		 * Makes this node child of another element.
+		 * @param {CKEDITOR.dom.element} element The target element to which append
+		 *		this node.
+		 * @returns {CKEDITOR.dom.element} The target element.
+		 * @example
+		 * var p = new CKEDITOR.dom.element( 'p' );
+		 * var strong = new CKEDITOR.dom.element( 'strong' );
+		 * strong.appendTo( p );
+		 *
+		 * // result: "&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;"
+		 */
+		appendTo : function( element, toStart )
+		{
+			element.append( this, toStart );
+			return element;
+		},
+
+		clone : function( includeChildren, cloneId )
+		{
+			var $clone = this.$.cloneNode( includeChildren );
+
+			if ( !cloneId )
+			{
+				var removeIds = function( node )
+				{
+					if ( node.nodeType != CKEDITOR.NODE_ELEMENT )
+						return;
+
+					node.removeAttribute( 'id', false ) ;
+					node.removeAttribute( '_cke_expando', false ) ;
+
+					var childs = node.childNodes;
+					for ( var i=0 ; i < childs.length ; i++ )
+						removeIds( childs[ i ] );
+				};
+
+				// The "id" attribute should never be cloned to avoid duplication.
+				removeIds( $clone );
+			}
+
+			return new CKEDITOR.dom.node( $clone );
+		},
+
+		hasPrevious : function()
+		{
+			return !!this.$.previousSibling;
+		},
+
+		hasNext : function()
+		{
+			return !!this.$.nextSibling;
+		},
+
+		/**
+		 * Inserts this element after a node.
+		 * @param {CKEDITOR.dom.node} node The that will preceed this element.
+		 * @returns {CKEDITOR.dom.node} The node preceeding this one after
+		 *		insertion.
+		 * @example
+		 * var em = new CKEDITOR.dom.element( 'em' );
+		 * var strong = new CKEDITOR.dom.element( 'strong' );
+		 * strong.insertAfter( em );
+		 *
+		 * // result: "&lt;em&gt;&lt;/em&gt;&lt;strong&gt;&lt;/strong&gt;"
+		 */
+		insertAfter : function( node )
+		{
+			node.$.parentNode.insertBefore( this.$, node.$.nextSibling );
+			return node;
+		},
+
+		/**
+		 * Inserts this element before a node.
+		 * @param {CKEDITOR.dom.node} node The that will be after this element.
+		 * @returns {CKEDITOR.dom.node} The node being inserted.
+		 * @example
+		 * var em = new CKEDITOR.dom.element( 'em' );
+		 * var strong = new CKEDITOR.dom.element( 'strong' );
+		 * strong.insertBefore( em );
+		 *
+		 * // result: "&lt;strong&gt;&lt;/strong&gt;&lt;em&gt;&lt;/em&gt;"
+		 */
+		insertBefore : function( node )
+		{
+			node.$.parentNode.insertBefore( this.$, node.$ );
+			return node;
+		},
+
+		insertBeforeMe : function( node )
+		{
+			this.$.parentNode.insertBefore( node.$, this.$ );
+			return node;
+		},
+
+		/**
+		 * Retrieves a uniquely identifiable tree address for this node.
+		 * The tree address returns is an array of integers, with each integer
+		 * indicating a child index of a DOM node, starting from
+		 * document.documentElement.
+		 *
+		 * For example, assuming <body> is the second child from <html> (<head>
+		 * being the first), and we'd like to address the third child under the
+		 * fourth child of body, the tree address returned would be:
+		 * [1, 3, 2]
+		 *
+		 * The tree address cannot be used for finding back the DOM tree node once
+		 * the DOM tree structure has been modified.
+		 */
+		getAddress : function( normalized )
+		{
+			var address = [];
+			var $documentElement = this.getDocument().$.documentElement;
+			var node = this.$;
+
+			while ( node && node != $documentElement )
+			{
+				var parentNode = node.parentNode;
+				var currentIndex = -1;
+
+				for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
+				{
+					var candidate = parentNode.childNodes[i];
+
+					if ( normalized &&
+							candidate.nodeType == 3 &&
+							candidate.previousSibling &&
+							candidate.previousSibling.nodeType == 3 )
+					{
+						continue;
+					}
+
+					currentIndex++;
+
+					if ( candidate == node )
+						break;
+				}
+
+				address.unshift( currentIndex );
+
+				node = node.parentNode;
+			}
+
+			return address;
+		},
+
+		/**
+		 * Gets the document containing this element.
+		 * @returns {CKEDITOR.dom.document} The document.
+		 * @example
+		 * var element = CKEDITOR.document.getById( 'example' );
+		 * alert( <b>element.getDocument().equals( CKEDITOR.document )</b> );  // "true"
+		 */
+		getDocument : function()
+		{
+			var document = new CKEDITOR.dom.document( this.$.ownerDocument || this.$.parentNode.ownerDocument );
+
+			return (
+			/** @ignore */
+			this.getDocument = function()
+				{
+					return document;
+				})();
+		},
+
+		getIndex : function()
+		{
+			var $ = this.$;
+
+			var currentNode = $.parentNode && $.parentNode.firstChild;
+			var currentIndex = -1;
+
+			while ( currentNode )
+			{
+				currentIndex++;
+
+				if ( currentNode == $ )
+					return currentIndex;
+
+				currentNode = currentNode.nextSibling;
+			}
+
+			return -1;
+		},
+
+		getNextSourceNode : function( startFromSibling, nodeType, guard )
+		{
+			// If "guard" is a node, transform it in a function.
+			if ( guard && !guard.call )
+			{
+				var guardNode = guard;
+				guard = function( node )
+				{
+					return !node.equals( guardNode );
+				};
+			}
+
+			var node = ( !startFromSibling && this.getFirst && this.getFirst() ),
+				parent;
+
+			// Guarding when we're skipping the current element( no children or 'startFromSibling' ).
+			// send the 'moving out' signal even we don't actually dive into.
+			if ( !node )
+			{
+				if ( this.type == CKEDITOR.NODE_ELEMENT && guard && guard( this, true ) === false )
+					return null;
+				node = this.getNext();
+			}
+
+			while ( !node && ( parent = ( parent || this ).getParent() ) )
+			{
+				// The guard check sends the "true" paramenter to indicate that
+				// we are moving "out" of the element.
+				if ( guard && guard( parent, true ) === false )
+					return null;
+
+				node = parent.getNext();
+			}
+
+			if ( !node )
+				return null;
+
+			if ( guard && guard( node ) === false )
+				return null;
+
+			if ( nodeType && nodeType != node.type )
+				return node.getNextSourceNode( false, nodeType, guard );
+
+			return node;
+		},
+
+		getPreviousSourceNode : function( startFromSibling, nodeType, guard )
+		{
+			if ( guard && !guard.call )
+			{
+				var guardNode = guard;
+				guard = function( node )
+				{
+					return !node.equals( guardNode );
+				};
+			}
+
+			var node = ( !startFromSibling && this.getLast && this.getLast() ),
+				parent;
+
+			// Guarding when we're skipping the current element( no children or 'startFromSibling' ).
+			// send the 'moving out' signal even we don't actually dive into.
+			if ( !node )
+			{
+				if ( this.type == CKEDITOR.NODE_ELEMENT && guard && guard( this, true ) === false )
+					return null;
+				node = this.getPrevious();
+			}
+
+			while ( !node && ( parent = ( parent || this ).getParent() ) )
+			{
+				// The guard check sends the "true" paramenter to indicate that
+				// we are moving "out" of the element.
+				if ( guard && guard( parent, true ) === false )
+					return null;
+
+				node = parent.getPrevious();
+			}
+
+			if ( !node )
+				return null;
+
+			if ( guard && guard( node ) === false )
+				return null;
+
+			if ( nodeType && node.type != nodeType )
+				return node.getPreviousSourceNode( false, nodeType, guard );
+
+			return node;
+		},
+
+		getPrevious : function( evaluator )
+		{
+			var previous = this.$, retval;
+			do
+			{
+				previous = previous.previousSibling;
+				retval = previous && new CKEDITOR.dom.node( previous );
+			}
+			while ( retval && evaluator && !evaluator( retval ) )
+			return retval;
+		},
+
+		/**
+		 * Gets the node that follows this element in its parent's child list.
+		 * @param {Function} evaluator Filtering the result node.
+		 * @returns {CKEDITOR.dom.node} The next node or null if not available.
+		 * @example
+		 * var element = CKEDITOR.dom.element.createFromHtml( '&lt;div&gt;&lt;b&gt;Example&lt;/b&gt; &lt;i&gt;next&lt;/i&gt;&lt;/div&gt;' );
+		 * var first = <b>element.getFirst().getNext()</b>;
+		 * alert( first.getName() );  // "i"
+		 */
+		getNext : function( evaluator )
+		{
+			var next = this.$, retval;
+			do
+			{
+				next = next.nextSibling;
+				retval = next && new CKEDITOR.dom.node( next );
+			}
+			while ( retval && evaluator && !evaluator( retval ) )
+			return retval;
+		},
+
+		/**
+		 * Gets the parent element for this node.
+		 * @returns {CKEDITOR.dom.element} The parent element.
+		 * @example
+		 * var node = editor.document.getBody().getFirst();
+		 * var parent = node.<b>getParent()</b>;
+		 * alert( node.getName() );  // "body"
+		 */
+		getParent : function()
+		{
+			var parent = this.$.parentNode;
+			return ( parent && parent.nodeType == 1 ) ? new CKEDITOR.dom.node( parent ) : null;
+		},
+
+		getParents : function( closerFirst )
+		{
+			var node = this;
+			var parents = [];
+
+			do
+			{
+				parents[  closerFirst ? 'push' : 'unshift' ]( node );
+			}
+			while ( ( node = node.getParent() ) )
+
+			return parents;
+		},
+
+		getCommonAncestor : function( node )
+		{
+			if ( node.equals( this ) )
+				return this;
+
+			if ( node.contains && node.contains( this ) )
+				return node;
+
+			var start = this.contains ? this : this.getParent();
+
+			do
+			{
+				if ( start.contains( node ) )
+					return start;
+			}
+			while ( ( start = start.getParent() ) );
+
+			return null;
+		},
+
+		getPosition : function( otherNode )
+		{
+			var $ = this.$;
+			var $other = otherNode.$;
+
+			if ( $.compareDocumentPosition )
+				return $.compareDocumentPosition( $other );
+
+			// IE and Safari have no support for compareDocumentPosition.
+
+			if ( $ == $other )
+				return CKEDITOR.POSITION_IDENTICAL;
+
+			// Only element nodes support contains and sourceIndex.
+			if ( this.type == CKEDITOR.NODE_ELEMENT && otherNode.type == CKEDITOR.NODE_ELEMENT )
+			{
+				if ( $.contains )
+				{
+					if ( $.contains( $other ) )
+						return CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_PRECEDING;
+
+					if ( $other.contains( $ ) )
+						return CKEDITOR.POSITION_IS_CONTAINED + CKEDITOR.POSITION_FOLLOWING;
+				}
+
+				if ( 'sourceIndex' in $ )
+				{
+					return ( $.sourceIndex < 0 || $other.sourceIndex < 0 ) ? CKEDITOR.POSITION_DISCONNECTED :
+						( $.sourceIndex < $other.sourceIndex ) ? CKEDITOR.POSITION_PRECEDING :
+						CKEDITOR.POSITION_FOLLOWING;
+				}
+			}
+
+			// For nodes that don't support compareDocumentPosition, contains
+			// or sourceIndex, their "address" is compared.
+
+			var addressOfThis = this.getAddress(),
+				addressOfOther = otherNode.getAddress(),
+				minLevel = Math.min( addressOfThis.length, addressOfOther.length );
+
+				// Determinate preceed/follow relationship.
+				for ( var i = 0 ; i <= minLevel - 1 ; i++ )
+ 				{
+					if ( addressOfThis[ i ] != addressOfOther[ i ] )
+					{
+						if ( i < minLevel )
+						{
+							return addressOfThis[ i ] < addressOfOther[ i ] ?
+						            CKEDITOR.POSITION_PRECEDING : CKEDITOR.POSITION_FOLLOWING;
+						}
+						break;
+					}
+ 				}
+
+				// Determinate contains/contained relationship.
+				return ( addressOfThis.length < addressOfOther.length ) ?
+							CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_PRECEDING :
+							CKEDITOR.POSITION_IS_CONTAINED + CKEDITOR.POSITION_FOLLOWING;
+		},
+
+		/**
+		 * Gets the closes ancestor node of a specified node name.
+		 * @param {String} name Node name of ancestor node.
+		 * @param {Boolean} includeSelf (Optional) Whether to include the current
+		 * node in the calculation or not.
+		 * @returns {CKEDITOR.dom.node} Ancestor node.
+		 */
+		getAscendant : function( name, includeSelf )
+		{
+			var $ = this.$;
+
+			if ( !includeSelf )
+				$ = $.parentNode;
+
+			while ( $ )
+			{
+				if ( $.nodeName && $.nodeName.toLowerCase() == name )
+					return new CKEDITOR.dom.node( $ );
+
+				$ = $.parentNode;
+			}
+			return null;
+		},
+
+		hasAscendant : function( name, includeSelf )
+		{
+			var $ = this.$;
+
+			if ( !includeSelf )
+				$ = $.parentNode;
+
+			while ( $ )
+			{
+				if ( $.nodeName && $.nodeName.toLowerCase() == name )
+					return true;
+
+				$ = $.parentNode;
+			}
+			return false;
+		},
+
+		move : function( target, toStart )
+		{
+			target.append( this.remove(), toStart );
+		},
+
+		/**
+		 * Removes this node from the document DOM.
+		 * @param {Boolean} [preserveChildren] Indicates that the children
+		 *		elements must remain in the document, removing only the outer
+		 *		tags.
+		 * @example
+		 * var element = CKEDITOR.dom.element.getById( 'MyElement' );
+		 * <b>element.remove()</b>;
+		 */
+		remove : function( preserveChildren )
+		{
+			var $ = this.$;
+			var parent = $.parentNode;
+
+			if ( parent )
+			{
+				if ( preserveChildren )
+				{
+					// Move all children before the node.
+					for ( var child ; ( child = $.firstChild ) ; )
+					{
+						parent.insertBefore( $.removeChild( child ), $ );
+					}
+				}
+
+				parent.removeChild( $ );
+			}
+
+			return this;
+		},
+
+		replace : function( nodeToReplace )
+		{
+			this.insertBefore( nodeToReplace );
+			nodeToReplace.remove();
+		},
+
+		trim : function()
+		{
+			this.ltrim();
+			this.rtrim();
+		},
+
+		ltrim : function()
+		{
+			var child;
+			while ( this.getFirst && ( child = this.getFirst() ) )
+			{
+				if ( child.type == CKEDITOR.NODE_TEXT )
+				{
+					var trimmed = CKEDITOR.tools.ltrim( child.getText() ),
+						originalLength = child.getLength();
+
+					if ( !trimmed )
+					{
+						child.remove();
+						continue;
+					}
+					else if ( trimmed.length < originalLength )
+					{
+						child.split( originalLength - trimmed.length );
+
+						// IE BUG: child.remove() may raise JavaScript errors here. (#81)
+						this.$.removeChild( this.$.firstChild );
+					}
+				}
+				break;
+			}
+		},
+
+		rtrim : function()
+		{
+			var child;
+			while ( this.getLast && ( child = this.getLast() ) )
+			{
+				if ( child.type == CKEDITOR.NODE_TEXT )
+				{
+					var trimmed = CKEDITOR.tools.rtrim( child.getText() ),
+						originalLength = child.getLength();
+
+					if ( !trimmed )
+					{
+						child.remove();
+						continue;
+					}
+					else if ( trimmed.length < originalLength )
+					{
+						child.split( trimmed.length );
+
+						// IE BUG: child.getNext().remove() may raise JavaScript errors here.
+						// (#81)
+						this.$.lastChild.parentNode.removeChild( this.$.lastChild );
+					}
+				}
+				break;
+			}
+
+			if ( !CKEDITOR.env.ie && !CKEDITOR.env.opera )
+			{
+				child = this.$.lastChild;
+
+				if ( child && child.type == 1 && child.nodeName.toLowerCase() == 'br' )
+				{
+					// Use "eChildNode.parentNode" instead of "node" to avoid IE bug (#324).
+					child.parentNode.removeChild( child ) ;
+				}
+			}
+		}
+	}
+);
Index: /trunk/filemanager/tp/ckeditor/_source/core/dom/walker.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dom/walker.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dom/walker.js	(revision 2000)
@@ -0,0 +1,411 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	// This function is to be called under a "walker" instance scope.
+	function iterate( rtl, breakOnFalse )
+	{
+		// Return null if we have reached the end.
+		if ( this._.end )
+			return null;
+
+		var node,
+			range = this.range,
+			guard,
+			userGuard = this.guard,
+			type = this.type,
+			getSourceNodeFn = ( rtl ? 'getPreviousSourceNode' : 'getNextSourceNode' );
+
+		// This is the first call. Initialize it.
+		if ( !this._.start )
+		{
+			this._.start = 1;
+
+			// Trim text nodes and optmize the range boundaries. DOM changes
+			// may happen at this point.
+			range.trim();
+
+			// A collapsed range must return null at first call.
+			if ( range.collapsed )
+			{
+				this.end();
+				return null;
+			}
+		}
+
+		// Create the LTR guard function, if necessary.
+		if ( !rtl && !this._.guardLTR )
+		{
+			// Gets the node that stops the walker when going LTR.
+			var limitLTR = range.endContainer,
+				blockerLTR = limitLTR.getChild( range.endOffset );
+
+			this._.guardLTR = function( node, movingOut )
+			{
+				return ( ( !movingOut || !limitLTR.equals( node ) )
+					&& ( !blockerLTR || !node.equals( blockerLTR ) )
+					&& ( node.type != CKEDITOR.NODE_ELEMENT || node.getName() != 'body' ) );
+			};
+		}
+
+		// Create the RTL guard function, if necessary.
+		if ( rtl && !this._.guardRTL )
+		{
+			// Gets the node that stops the walker when going LTR.
+			var limitRTL = range.startContainer,
+				blockerRTL = ( range.startOffset > 0 ) && limitRTL.getChild( range.startOffset - 1 );
+
+			this._.guardRTL = function( node, movingOut )
+			{
+				return ( ( !movingOut || !limitRTL.equals( node ) )
+					&& ( !blockerRTL || !node.equals( blockerRTL ) )
+					&& ( node.type != CKEDITOR.NODE_ELEMENT || node.getName() != 'body' ) );
+			};
+		}
+
+		// Define which guard function to use.
+		var stopGuard = rtl ? this._.guardRTL : this._.guardLTR;
+
+		// Make the user defined guard function participate in the process,
+		// otherwise simply use the boundary guard.
+		if ( userGuard )
+		{
+			guard = function( node, movingOut )
+			{
+				if ( stopGuard( node, movingOut ) === false )
+					return false;
+
+				return userGuard( node );
+			};
+		}
+		else
+			guard = stopGuard;
+
+		if ( this.current )
+			node = this.current[ getSourceNodeFn ]( false, type, guard );
+		else
+		{
+			// Get the first node to be returned.
+
+			if ( rtl )
+			{
+				node = range.endContainer;
+
+				if ( range.endOffset > 0 )
+				{
+					node = node.getChild( range.endOffset - 1 );
+					if ( guard( node ) === false )
+						node = null;
+				}
+				else
+					node = ( guard ( node ) === false ) ?
+						null : node.getPreviousSourceNode( true, type, guard );
+			}
+			else
+			{
+				node = range.startContainer;
+				node = node.getChild( range.startOffset );
+
+				if ( node )
+				{
+					if ( guard( node ) === false )
+						node = null;
+				}
+				else
+					node = ( guard ( range.startContainer ) === false ) ?
+						null : range.startContainer.getNextSourceNode( true, type, guard ) ;
+			}
+		}
+
+		while ( node && !this._.end )
+		{
+			this.current = node;
+
+			if ( !this.evaluator || this.evaluator( node ) !== false )
+			{
+				if ( !breakOnFalse )
+					return node;
+			}
+			else if ( breakOnFalse && this.evaluator )
+				return false;
+
+			node = node[ getSourceNodeFn ]( false, type, guard );
+		}
+
+		this.end();
+		return this.current = null;
+	}
+
+	function iterateToLast( rtl )
+	{
+		var node, last = null;
+
+		while ( ( node = iterate.call( this, rtl ) ) )
+			last = node;
+
+		return last;
+	}
+
+	CKEDITOR.dom.walker = CKEDITOR.tools.createClass(
+	{
+		/**
+		 * Utility class to "walk" the DOM inside a range boundaries. If
+		 * necessary, partially included nodes (text nodes) are broken to
+		 * reflect the boundaries limits, so DOM and range changes may happen.
+		 * Outside changes to the range may break the walker.
+		 *
+		 * The walker may return nodes that are not totaly included into the
+		 * range boundaires. Let's take the following range representation,
+		 * where the square brackets indicate the boundaries:
+		 *
+		 * [&lt;p&gt;Some &lt;b&gt;sample] text&lt;/b&gt;
+		 *
+		 * While walking forward into the above range, the following nodes are
+		 * returned: &lt;p&gt;, "Some ", &lt;b&gt; and "sample". Going
+		 * backwards instead we have: "sample" and "Some ". So note that the
+		 * walker always returns nodes when "entering" them, but not when
+		 * "leaving" them. The guard function is instead called both when
+		 * entering and leaving nodes.
+		 *
+		 * @constructor
+		 * @param {CKEDITOR.dom.range} range The range within which walk.
+		 */
+		$ : function( range )
+		{
+			this.range = range;
+
+			/**
+			 * A function executed for every matched node, to check whether
+			 * it's to be considered into the walk or not. If not provided, all
+			 * matched nodes are considered good.
+			 * If the function returns "false" the node is ignored.
+			 * @name CKEDITOR.dom.walker.prototype.evaluator
+			 * @property
+			 * @type Function
+			 */
+			// this.evaluator = null;
+
+			/**
+			 * A function executed for every node the walk pass by to check
+			 * whether the walk is to be finished. It's called when both
+			 * entering and exiting nodes, as well as for the matched nodes.
+			 * If this function returns "false", the walking ends and no more
+			 * nodes are evaluated.
+			 * @name CKEDITOR.dom.walker.prototype.guard
+			 * @property
+			 * @type Function
+			 */
+			// this.guard = null;
+
+			/** @private */
+			this._ = {};
+		},
+
+//		statics :
+//		{
+//			/* Creates a CKEDITOR.dom.walker instance to walk inside DOM boundaries set by nodes.
+//			 * @param {CKEDITOR.dom.node} startNode The node from wich the walk
+//			 *		will start.
+//			 * @param {CKEDITOR.dom.node} [endNode] The last node to be considered
+//			 *		in the walk. No more nodes are retrieved after touching or
+//			 *		passing it. If not provided, the walker stops at the
+//			 *		&lt;body&gt; closing boundary.
+//			 * @returns {CKEDITOR.dom.walker} A DOM walker for the nodes between the
+//			 *		provided nodes.
+//			 */
+//			createOnNodes : function( startNode, endNode, startInclusive, endInclusive )
+//			{
+//				var range = new CKEDITOR.dom.range();
+//				if ( startNode )
+//					range.setStartAt( startNode, startInclusive ? CKEDITOR.POSITION_BEFORE_START : CKEDITOR.POSITION_AFTER_END ) ;
+//				else
+//					range.setStartAt( startNode.getDocument().getBody(), CKEDITOR.POSITION_AFTER_START ) ;
+//
+//				if ( endNode )
+//					range.setEndAt( endNode, endInclusive ? CKEDITOR.POSITION_AFTER_END : CKEDITOR.POSITION_BEFORE_START ) ;
+//				else
+//					range.setEndAt( startNode.getDocument().getBody(), CKEDITOR.POSITION_BEFORE_END ) ;
+//
+//				return new CKEDITOR.dom.walker( range );
+//			}
+//		},
+//
+		proto :
+		{
+			/**
+			 * Stop walking. No more nodes are retrieved if this function gets
+			 * called.
+			 */
+			end : function()
+			{
+				this._.end = 1;
+			},
+
+			/**
+			 * Retrieves the next node (at right).
+			 * @returns {CKEDITOR.dom.node} The next node or null if no more
+			 *		nodes are available.
+			 */
+			next : function()
+			{
+				return iterate.call( this );
+			},
+
+			/**
+			 * Retrieves the previous node (at left).
+			 * @returns {CKEDITOR.dom.node} The previous node or null if no more
+			 *		nodes are available.
+			 */
+			previous : function()
+			{
+				return iterate.call( this, true );
+			},
+
+			/**
+			 * Check all nodes at right, executing the evaluation fuction.
+			 * @returns {Boolean} "false" if the evaluator function returned
+			 *		"false" for any of the matched nodes. Otherwise "true".
+			 */
+			checkForward : function()
+			{
+				return iterate.call( this, false, true ) !== false;
+			},
+
+			/**
+			 * Check all nodes at left, executing the evaluation fuction.
+			 * @returns {Boolean} "false" if the evaluator function returned
+			 *		"false" for any of the matched nodes. Otherwise "true".
+			 */
+			checkBackward : function()
+			{
+				return iterate.call( this, true, true ) !== false;
+			},
+
+			/**
+			 * Executes a full walk forward (to the right), until no more nodes
+			 * are available, returning the last valid node.
+			 * @returns {CKEDITOR.dom.node} The last node at the right or null
+			 *		if no valid nodes are available.
+			 */
+			lastForward : function()
+			{
+				return iterateToLast.call( this );
+			},
+
+			/**
+			 * Executes a full walk backwards (to the left), until no more nodes
+			 * are available, returning the last valid node.
+			 * @returns {CKEDITOR.dom.node} The last node at the left or null
+			 *		if no valid nodes are available.
+			 */
+			lastBackward : function()
+			{
+				return iterateToLast.call( this, true );
+			},
+
+			reset : function()
+			{
+				delete this.current;
+				this._ = {};
+			}
+
+		}
+	});
+
+	/*
+	 * Anything whose display computed style is block, list-item, table,
+	 * table-row-group, table-header-group, table-footer-group, table-row,
+	 * table-column-group, table-column, table-cell, table-caption, or whose node
+	 * name is hr, br (when enterMode is br only) is a block boundary.
+	 */
+	var blockBoundaryDisplayMatch =
+	{
+		block : 1,
+		'list-item' : 1,
+		table : 1,
+		'table-row-group' : 1,
+		'table-header-group' : 1,
+		'table-footer-group' : 1,
+		'table-row' : 1,
+		'table-column-group' : 1,
+		'table-column' : 1,
+		'table-cell' : 1,
+		'table-caption' : 1
+	},
+	blockBoundaryNodeNameMatch = { hr : 1 };
+
+	CKEDITOR.dom.element.prototype.isBlockBoundary = function( customNodeNames )
+	{
+		var nodeNameMatches = CKEDITOR.tools.extend( {},
+													blockBoundaryNodeNameMatch, customNodeNames || {} );
+
+		return blockBoundaryDisplayMatch[ this.getComputedStyle( 'display' ) ] ||
+			nodeNameMatches[ this.getName() ];
+	};
+
+	CKEDITOR.dom.walker.blockBoundary = function( customNodeNames )
+	{
+		return function( node , type )
+		{
+			return ! ( node.type == CKEDITOR.NODE_ELEMENT
+						&& node.isBlockBoundary( customNodeNames ) );
+		};
+	};
+
+	CKEDITOR.dom.walker.listItemBoundary = function()
+	{
+			return this.blockBoundary( { br : 1 } );
+	};
+	/**
+	 * Whether the node is a bookmark node's inner text node.
+	 */
+	CKEDITOR.dom.walker.bookmarkContents = function( node )
+	{
+	},
+
+	/**
+	 * Whether the to-be-evaluated node is a bookmark node OR bookmark node
+	 * inner contents.
+	 * @param {Boolean} contentOnly Whether only test againt the text content of
+	 * bookmark node instead of the element itself(default).
+	 * @param {Boolean} isReject Whether should return 'false' for the bookmark
+	 * node instead of 'true'(default).
+	 */
+	CKEDITOR.dom.walker.bookmark = function( contentOnly, isReject )
+	{
+		function isBookmarkNode( node )
+		{
+			return ( node && node.getName
+					&& node.getName() == 'span'
+					&& node.hasAttribute('_fck_bookmark') );
+		}
+
+		return function( node )
+		{
+			var isBookmark, parent;
+			// Is bookmark inner text node?
+			isBookmark = ( node && !node.getName && ( parent = node.getParent() )
+						&& isBookmarkNode( parent ) );
+			// Is bookmark node?
+			isBookmark = contentOnly ? isBookmark : isBookmark || isBookmarkNode( node );
+			return isReject ^ isBookmark;
+		};
+	};
+
+	/**
+	 * Whether the node contains only white-spaces characters.
+	 * @param isReject
+	 */
+	CKEDITOR.dom.walker.whitespaces = function( isReject )
+	{
+		return function( node )
+		{
+			var isWhitespace = node && ( node.type == CKEDITOR.NODE_TEXT )
+							&& !CKEDITOR.tools.trim( node.getText() );
+			return isReject ^ isWhitespace;
+		};
+	};
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/core/dom/domobject.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dom/domobject.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dom/domobject.js	(revision 2000)
@@ -0,0 +1,204 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.editor} class, which is the base
+ *		for other classes representing DOM objects.
+ */
+
+/**
+ * Represents a DOM object. This class is not intended to be used directly. It
+ * serves as the base class for other classes representing specific DOM
+ * objects.
+ * @constructor
+ * @param {Object} nativeDomObject A native DOM object.
+ * @augments CKEDITOR.event
+ * @example
+ */
+CKEDITOR.dom.domObject = function( nativeDomObject )
+{
+	if ( nativeDomObject )
+	{
+		/**
+		 * The native DOM object represented by this class instance.
+		 * @type Object
+		 * @example
+		 * var element = new CKEDITOR.dom.element( 'span' );
+		 * alert( element.$.nodeType );  // "1"
+		 */
+		this.$ = nativeDomObject;
+	}
+};
+
+CKEDITOR.dom.domObject.prototype = (function()
+{
+	// Do not define other local variables here. We want to keep the native
+	// listener closures as clean as possible.
+
+	var getNativeListener = function( domObject, eventName )
+	{
+		return function( domEvent )
+		{
+			// In FF, when reloading the page with the editor focused, it may
+			// throw an error because the CKEDITOR global is not anymore
+			// available. So, we check it here first. (#2923)
+			if ( typeof CKEDITOR != 'undefined' )
+				domObject.fire( eventName, new CKEDITOR.dom.event( domEvent ) );
+		};
+	};
+
+	return /** @lends CKEDITOR.dom.domObject.prototype */ {
+
+		getPrivate : function()
+		{
+			var priv;
+
+			// Get the main private function from the custom data. Create it if not
+			// defined.
+			if ( !( priv = this.getCustomData( '_' ) ) )
+				this.setCustomData( '_', ( priv = {} ) );
+
+			return priv;
+		},
+
+		/** @ignore */
+		on  : function( eventName )
+		{
+			// We customize the "on" function here. The basic idea is that we'll have
+			// only one listener for a native event, which will then call all listeners
+			// set to the event.
+
+			// Get the listeners holder object.
+			var nativeListeners = this.getCustomData( '_cke_nativeListeners' );
+
+			if ( !nativeListeners )
+			{
+				nativeListeners = {};
+				this.setCustomData( '_cke_nativeListeners', nativeListeners );
+			}
+
+			// Check if we have a listener for that event.
+			if ( !nativeListeners[ eventName ] )
+			{
+				var listener = nativeListeners[ eventName ] = getNativeListener( this, eventName );
+
+				if ( this.$.addEventListener )
+					this.$.addEventListener( eventName, listener, !!CKEDITOR.event.useCapture );
+				else if ( this.$.attachEvent )
+					this.$.attachEvent( 'on' + eventName, listener );
+			}
+
+			// Call the original implementation.
+			return CKEDITOR.event.prototype.on.apply( this, arguments );
+		},
+
+		/** @ignore */
+		removeListener : function( eventName )
+		{
+			// Call the original implementation.
+			CKEDITOR.event.prototype.removeListener.apply( this, arguments );
+
+			// If we don't have listeners for this event, clean the DOM up.
+			if ( !this.hasListeners( eventName ) )
+			{
+				var nativeListeners = this.getCustomData( '_cke_nativeListeners' );
+				var listener = nativeListeners && nativeListeners[ eventName ];
+				if ( listener )
+				{
+					if ( this.$.removeEventListener )
+						this.$.removeEventListener( eventName, listener, false );
+					else if ( this.$.detachEvent )
+						this.$.detachEvent( 'on' + eventName, listener );
+
+					delete nativeListeners[ eventName ];
+				}
+			}
+		}
+	};
+})();
+
+(function( domObjectProto )
+{
+	var customData = {};
+
+	/**
+	 * Determines whether the specified object is equal to the current object.
+	 * @name CKEDITOR.dom.domObject.prototype.equals
+	 * @function
+	 * @param {Object} object The object to compare with the current object.
+	 * @returns {Boolean} "true" if the object is equal.
+	 * @example
+	 * var doc = new CKEDITOR.dom.document( document );
+	 * alert( doc.equals( CKEDITOR.document ) );  // "true"
+	 * alert( doc == CKEDITOR.document );         // "false"
+	 */
+	domObjectProto.equals = function( object )
+	{
+		return ( object && object.$ === this.$ );
+	};
+
+	/**
+	 * Sets a data slot value for this object. These values are shared by all
+	 * instances pointing to that same DOM object.
+	 * @name CKEDITOR.dom.domObject.prototype.setCustomData
+	 * @function
+	 * @param {String} key A key used to identify the data slot.
+	 * @param {Object} value The value to set to the data slot.
+	 * @returns {CKEDITOR.dom.domObject} This DOM object instance.
+	 * @see CKEDITOR.dom.domObject.prototype.getCustomData
+	 * @example
+	 * var element = new CKEDITOR.dom.element( 'span' );
+	 * element.setCustomData( 'hasCustomData', true );
+	 */
+	domObjectProto.setCustomData = function( key, value )
+	{
+		var expandoNumber = this.getUniqueId(),
+			dataSlot = customData[ expandoNumber ] || ( customData[ expandoNumber ] = {} );
+
+		dataSlot[ key ] = value;
+
+		return this;
+	};
+
+	/**
+	 * Gets the value set to a data slot in this object.
+	 * @name CKEDITOR.dom.domObject.prototype.getCustomData
+	 * @function
+	 * @param {String} key The key used to identify the data slot.
+	 * @returns {Object} This value set to the data slot.
+	 * @see CKEDITOR.dom.domObject.prototype.setCustomData
+	 * @example
+	 * var element = new CKEDITOR.dom.element( 'span' );
+	 * alert( element.getCustomData( 'hasCustomData' ) );  // e.g. 'true'
+	 */
+	domObjectProto.getCustomData = function( key )
+	{
+		var expandoNumber = this.$._cke_expando,
+			dataSlot = expandoNumber && customData[ expandoNumber ];
+
+		return dataSlot && dataSlot[ key ];
+	};
+
+	domObjectProto.removeCustomData = function( key )
+	{
+		var expandoNumber = this.$._cke_expando,
+			dataSlot = expandoNumber && customData[ expandoNumber ],
+			retval = dataSlot && dataSlot[ key ];
+
+		if ( typeof retval != 'undefined' )
+			delete dataSlot[ key ];
+
+		return retval || null;
+	};
+
+	domObjectProto.getUniqueId = function()
+	{
+		return this.$._cke_expando || ( this.$._cke_expando = CKEDITOR.tools.getNextNumber() );
+	};
+
+	// Implement CKEDITOR.event.
+	CKEDITOR.event.implementOn( domObjectProto );
+
+})( CKEDITOR.dom.domObject.prototype );
Index: /trunk/filemanager/tp/ckeditor/_source/core/dom/elementpath.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dom/elementpath.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dom/elementpath.js	(revision 2000)
@@ -0,0 +1,104 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	// Elements that may be considered the "Block boundary" in an element path.
+	var pathBlockElements = { address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 };
+
+	// Elements that may be considered the "Block limit" in an element path.
+	var pathBlockLimitElements = { body:1,div:1,table:1,tbody:1,tr:1,td:1,th:1,caption:1,form:1 };
+
+	// Check if an element contains any block element.
+	var checkHasBlock = function( element )
+	{
+		var childNodes = element.getChildren();
+
+		for ( var i = 0, count = childNodes.count() ; i < count ; i++ )
+		{
+			var child = childNodes.getItem( i );
+
+			if ( child.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$block[ child.getName() ] )
+				return true;
+		}
+
+		return false;
+	};
+
+	CKEDITOR.dom.elementPath = function( lastNode )
+	{
+		var block = null;
+		var blockLimit = null;
+		var elements = [];
+
+		var e = lastNode;
+
+		while ( e )
+		{
+			if ( e.type == CKEDITOR.NODE_ELEMENT )
+			{
+				if ( !this.lastElement )
+					this.lastElement = e;
+
+				var elementName = e.getName();
+				if ( CKEDITOR.env.ie && e.$.scopeName != 'HTML' )
+					elementName = e.$.scopeName.toLowerCase() + ':' + elementName;
+
+				if ( !blockLimit )
+				{
+					if ( !block && pathBlockElements[ elementName ] )
+						block = e;
+
+					if ( pathBlockLimitElements[ elementName ] )
+					{
+						// DIV is considered the Block, if no block is available (#525)
+						// and if it doesn't contain other blocks.
+						if ( !block && elementName == 'div' && !checkHasBlock( e ) )
+							block = e;
+						else
+							blockLimit = e;
+					}
+				}
+
+				elements.push( e );
+
+				if ( elementName == 'body' )
+					break;
+			}
+			e = e.getParent();
+		}
+
+		this.block = block;
+		this.blockLimit = blockLimit;
+		this.elements = elements;
+	};
+})();
+
+CKEDITOR.dom.elementPath.prototype =
+{
+	/**
+	 * Compares this element path with another one.
+	 * @param {CKEDITOR.dom.elementPath} otherPath The elementPath object to be
+	 * compared with this one.
+	 * @returns {Boolean} "true" if the paths are equal, containing the same
+	 * number of elements and the same elements in the same order.
+	 */
+	compare : function( otherPath )
+	{
+		var thisElements = this.elements;
+		var otherElements = otherPath && otherPath.elements;
+
+		if ( !otherElements || thisElements.length != otherElements.length )
+			return false;
+
+		for ( var i = 0 ; i < thisElements.length ; i++ )
+		{
+			if ( !thisElements[ i ].equals( otherElements[ i ] ) )
+				return false;
+		}
+
+		return true;
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/core/dom/window.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dom/window.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dom/window.js	(revision 2000)
@@ -0,0 +1,96 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.dom.document} class, which
+ *		represents a DOM document.
+ */
+
+/**
+ * Represents a DOM window.
+ * @constructor
+ * @augments CKEDITOR.dom.domObject
+ * @param {Object} domWindow A native DOM window.
+ * @example
+ * var document = new CKEDITOR.dom.window( window );
+ */
+CKEDITOR.dom.window = function( domWindow )
+{
+	CKEDITOR.dom.domObject.call( this, domWindow );
+};
+
+CKEDITOR.dom.window.prototype = new CKEDITOR.dom.domObject();
+
+CKEDITOR.tools.extend( CKEDITOR.dom.window.prototype,
+	/** @lends CKEDITOR.dom.window.prototype */
+	{
+		/**
+		 * Moves the selection focus to this window.
+		 * @function
+		 * @example
+		 * var win = new CKEDITOR.dom.window( window );
+		 * <b>win.focus()</b>;
+		 */
+		focus : function()
+		{
+			// Webkit is sometimes failed to focus iframe, blur it first(#3835).
+			if( CKEDITOR.env.webkit && this.$.parent )
+				this.$.parent.focus();
+			this.$.focus();
+		},
+
+		/**
+		 * Gets the width and height of this window's viewable area.
+		 * @function
+		 * @returns {Object} An object with the "width" and "height"
+		 *		properties containing the size.
+		 * @example
+		 * var win = new CKEDITOR.dom.window( window );
+		 * var size = <b>win.getViewPaneSize()</b>;
+		 * alert( size.width );
+		 * alert( size.height );
+		 */
+		getViewPaneSize : function()
+		{
+			var doc = this.$.document,
+				stdMode = doc.compatMode == 'CSS1Compat';
+			return {
+				width : ( stdMode ? doc.documentElement.clientWidth : doc.body.clientWidth ) || 0,
+				height : ( stdMode ? doc.documentElement.clientHeight : doc.body.clientHeight ) || 0
+			};
+		},
+
+		/**
+		 * Gets the current position of the window's scroll.
+		 * @function
+		 * @returns {Object} An object with the "x" and "y" properties
+		 *		containing the scroll position.
+		 * @example
+		 * var win = new CKEDITOR.dom.window( window );
+		 * var pos = <b>win.getScrollPosition()</b>;
+		 * alert( pos.x );
+		 * alert( pos.y );
+		 */
+		getScrollPosition : function()
+		{
+			var $ = this.$;
+
+			if ( 'pageXOffset' in $ )
+			{
+				return {
+					x : $.pageXOffset || 0,
+					y : $.pageYOffset || 0
+				};
+			}
+			else
+			{
+				var doc = $.document;
+				return {
+					x : doc.documentElement.scrollLeft || doc.body.scrollLeft || 0,
+					y : doc.documentElement.scrollTop || doc.body.scrollTop || 0
+				};
+			}
+		}
+	});
Index: /trunk/filemanager/tp/ckeditor/_source/core/dom/element.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dom/element.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dom/element.js	(revision 2000)
@@ -0,0 +1,1394 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.dom.element} class, which
+ *		represents a DOM element.
+ */
+
+/**
+ * Represents a DOM element.
+ * @constructor
+ * @augments CKEDITOR.dom.node
+ * @param {Object|String} element A native DOM element or the element name for
+ *		new elements.
+ * @param {CKEDITOR.dom.document} [ownerDocument] The document that will contain
+ *		the element in case of element creation.
+ * @example
+ * // Create a new &lt;span&gt; element.
+ * var element = new CKEDITOR.dom.element( 'span' );
+ * @example
+ * // Create an element based on a native DOM element.
+ * var element = new CKEDITOR.dom.element( document.getElementById( 'myId' ) );
+ */
+CKEDITOR.dom.element = function( element, ownerDocument )
+{
+	if ( typeof element == 'string' )
+		element = ( ownerDocument ? ownerDocument.$ : document ).createElement( element );
+
+	// Call the base constructor (we must not call CKEDITOR.dom.node).
+	CKEDITOR.dom.domObject.call( this, element );
+};
+
+// PACKAGER_RENAME( CKEDITOR.dom.element )
+
+/**
+ * The the {@link CKEDITOR.dom.element} representing and element. If the
+ * element is a native DOM element, it will be transformed into a valid
+ * CKEDITOR.dom.element object.
+ * @returns {CKEDITOR.dom.element} The transformed element.
+ * @example
+ * var element = new CKEDITOR.dom.element( 'span' );
+ * alert( element == <b>CKEDITOR.dom.element.get( element )</b> );  "true"
+ * @example
+ * var element = document.getElementById( 'myElement' );
+ * alert( <b>CKEDITOR.dom.element.get( element )</b>.getName() );  e.g. "p"
+ */
+CKEDITOR.dom.element.get = function( element )
+{
+	return element && ( element.$ ? element : new CKEDITOR.dom.element( element ) );
+};
+
+CKEDITOR.dom.element.prototype = new CKEDITOR.dom.node();
+
+/**
+ * Creates an instance of the {@link CKEDITOR.dom.element} class based on the
+ * HTML representation of an element.
+ * @param {String} html The element HTML. It should define only one element in
+ *		the "root" level. The "root" element can have child nodes, but not
+ *		siblings.
+ * @returns {CKEDITOR.dom.element} The element instance.
+ * @example
+ * var element = <b>CKEDITOR.dom.element.createFromHtml( '&lt;strong class="anyclass"&gt;My element&lt;/strong&gt;' )</b>;
+ * alert( element.getName() );  // "strong"
+ */
+CKEDITOR.dom.element.createFromHtml = function( html, ownerDocument )
+{
+	var temp = new CKEDITOR.dom.element( 'div', ownerDocument );
+	temp.setHtml( html );
+
+	// When returning the node, remove it from its parent to detach it.
+	return temp.getFirst().remove();
+};
+
+CKEDITOR.dom.element.setMarker = function( database, element, name, value )
+{
+	var id = element.getCustomData( 'list_marker_id' ) ||
+			( element.setCustomData( 'list_marker_id', CKEDITOR.tools.getNextNumber() ).getCustomData( 'list_marker_id' ) ),
+		markerNames = element.getCustomData( 'list_marker_names' ) ||
+			( element.setCustomData( 'list_marker_names', {} ).getCustomData( 'list_marker_names' ) );
+	database[id] = element;
+	markerNames[name] = 1;
+
+	return element.setCustomData( name, value );
+};
+
+CKEDITOR.dom.element.clearAllMarkers = function( database )
+{
+	for ( var i in database )
+		CKEDITOR.dom.element.clearMarkers( database, database[i], true );
+};
+
+CKEDITOR.dom.element.clearMarkers = function( database, element, removeFromDatabase )
+{
+	var names = element.getCustomData( 'list_marker_names' ),
+		id = element.getCustomData( 'list_marker_id' );
+	for ( var i in names )
+		element.removeCustomData( i );
+	element.removeCustomData( 'list_marker_names' );
+	if ( removeFromDatabase )
+	{
+		element.removeCustomData( 'list_marker_id' );
+		delete database[id];
+	}
+};
+
+CKEDITOR.tools.extend( CKEDITOR.dom.element.prototype,
+	/** @lends CKEDITOR.dom.element.prototype */
+	{
+		/**
+		 * The node type. This is a constant value set to
+		 * {@link CKEDITOR.NODE_ELEMENT}.
+		 * @type Number
+		 * @example
+		 */
+		type : CKEDITOR.NODE_ELEMENT,
+
+		/**
+		 * Adds a CSS class to the element. It appends the class to the
+		 * already existing names.
+		 * @param {String} className The name of the class to be added.
+		 * @example
+		 * var element = new CKEDITOR.dom.element( 'div' );
+		 * element.addClass( 'classA' );  // &lt;div class="classA"&gt;
+		 * element.addClass( 'classB' );  // &lt;div class="classA classB"&gt;
+		 * element.addClass( 'classA' );  // &lt;div class="classA classB"&gt;
+		 */
+		addClass : function( className )
+		{
+			var c = this.$.className;
+			if ( c )
+			{
+				var regex = new RegExp( '(?:^|\\s)' + className + '(?:\\s|$)', '' );
+				if ( !regex.test( c ) )
+					c += ' ' + className;
+			}
+			this.$.className = c || className;
+		},
+
+		/**
+		 * Removes a CSS class name from the elements classes. Other classes
+		 * remain untouched.
+		 * @param {String} className The name of the class to remove.
+		 * @example
+		 * var element = new CKEDITOR.dom.element( 'div' );
+		 * element.addClass( 'classA' );  // &lt;div class="classA"&gt;
+		 * element.addClass( 'classB' );  // &lt;div class="classA classB"&gt;
+		 * element.removeClass( 'classA' );  // &lt;div class="classB"&gt;
+		 * element.removeClass( 'classB' );  // &lt;div&gt;
+		 */
+		removeClass : function( className )
+		{
+			var c = this.getAttribute( 'class' );
+			if ( c )
+			{
+				var regex = new RegExp( '(?:^|\\s+)' + className + '(?=\\s|$)', 'i' );
+				if ( regex.test( c ) )
+				{
+					c = c.replace( regex, '' ).replace( /^\s+/, '' );
+
+					if ( c )
+						this.setAttribute( 'class', c );
+					else
+						this.removeAttribute( 'class' );
+				}
+			}
+		},
+
+		hasClass : function( className )
+		{
+			var regex = new RegExp( '(?:^|\\s+)' + className + '(?=\\s|$)', '' );
+			return regex.test( this.getAttribute('class') );
+		},
+
+		/**
+		 * Append a node as a child of this element.
+		 * @param {CKEDITOR.dom.node|String} node The node or element name to be
+		 *		appended.
+		 * @param {Boolean} [toStart] Indicates that the element is to be
+		 *		appended at the start.
+		 * @returns {CKEDITOR.dom.node} The appended node.
+		 * @example
+		 * var p = new CKEDITOR.dom.element( 'p' );
+		 *
+		 * var strong = new CKEDITOR.dom.element( 'strong' );
+		 * <b>p.append( strong );</b>
+		 *
+		 * var em = <b>p.append( 'em' );</b>
+		 *
+		 * // result: "&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;"
+		 */
+		append : function( node, toStart )
+		{
+			if ( typeof node == 'string' )
+				node = this.getDocument().createElement( node );
+
+			if ( toStart )
+				this.$.insertBefore( node.$, this.$.firstChild );
+			else
+				this.$.appendChild( node.$ );
+
+			return node;
+		},
+
+		appendHtml : function( html )
+		{
+			if ( !this.$.childNodes.length )
+				this.setHtml( html );
+			else
+			{
+				var temp = new CKEDITOR.dom.element( 'div', this.getDocument() );
+				temp.setHtml( html );
+				temp.moveChildren( this );
+			}
+		},
+
+		/**
+		 * Append text to this element.
+		 * @param {String} text The text to be appended.
+		 * @returns {CKEDITOR.dom.node} The appended node.
+		 * @example
+		 * var p = new CKEDITOR.dom.element( 'p' );
+		 * p.appendText( 'This is' );
+		 * p.appendText( ' some text' );
+		 *
+		 * // result: "&lt;p&gt;This is some text&lt;/p&gt;"
+		 */
+		appendText : function( text )
+		{
+			if ( this.$.text != undefined )
+				this.$.text += text;
+			else
+				this.append( new CKEDITOR.dom.text( text ) );
+		},
+
+		appendBogus : function()
+		{
+			var lastChild = this.getLast() ;
+
+			// Ignore empty/spaces text.
+			while ( lastChild && lastChild.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.rtrim( lastChild.getText() ) )
+				lastChild = lastChild.getPrevious();
+			if ( !lastChild || !lastChild.is || !lastChild.is( 'br' ) )
+			{
+				this.append(
+					CKEDITOR.env.opera ?
+						this.getDocument().createText('') :
+						this.getDocument().createElement( 'br' ) );
+			}
+		},
+
+		/**
+		 * Breaks one of the ancestor element in the element position, moving
+		 * this element between the broken parts.
+		 * @param {CKEDITOR.dom.element} parent The anscestor element to get broken.
+		 * @example
+		 * // Before breaking:
+		 * //     <b>This <i>is some<span /> sample</i> test text</b>
+		 * // If "element" is <span /> and "parent" is <i>:
+		 * //     <b>This <i>is some</i><span /><i> sample</i> test text</b>
+		 * element.breakParent( parent );
+		 * @example
+		 * // Before breaking:
+		 * //     <b>This <i>is some<span /> sample</i> test text</b>
+		 * // If "element" is <span /> and "parent" is <b>:
+		 * //     <b>This <i>is some</i></b><span /><b><i> sample</i> test text</b>
+		 * element.breakParent( parent );
+		 */
+		breakParent : function( parent )
+		{
+			var range = new CKEDITOR.dom.range( this.getDocument() );
+
+			// We'll be extracting part of this element, so let's use our
+			// range to get the correct piece.
+			range.setStartAfter( this );
+			range.setEndAfter( parent );
+
+			// Extract it.
+			var docFrag = range.extractContents();
+
+			// Move the element outside the broken element.
+			range.insertNode( this.remove() );
+
+			// Re-insert the extracted piece after the element.
+			docFrag.insertAfterNode( this );
+		},
+
+		contains :
+			CKEDITOR.env.ie || CKEDITOR.env.webkit ?
+				function( node )
+				{
+					var $ = this.$;
+
+					return node.type != CKEDITOR.NODE_ELEMENT ?
+						$.contains( node.getParent().$ ) :
+						$ != node.$ && $.contains( node.$ );
+				}
+			:
+				function( node )
+				{
+					return !!( this.$.compareDocumentPosition( node.$ ) & 16 );
+				},
+
+		/**
+		 * Moves the selection focus to this element.
+		 * @example
+		 * var element = CKEDITOR.document.getById( 'myTextarea' );
+		 * <b>element.focus()</b>;
+		 */
+		focus : function()
+		{
+			// IE throws error if the element is not visible.
+			try
+			{
+				this.$.focus();
+			}
+			catch (e)
+			{}
+		},
+
+		/**
+		 * Gets the inner HTML of this element.
+		 * @returns {String} The inner HTML of this element.
+		 * @example
+		 * var element = CKEDITOR.dom.element.createFromHtml( '&lt;div&gt;&lt;b&gt;Example&lt;/b&gt;&lt;/div&gt;' );
+		 * alert( <b>p.getHtml()</b> );  // "&lt;b&gt;Example&lt;/b&gt;"
+		 */
+		getHtml : function()
+		{
+			return this.$.innerHTML;
+		},
+
+		getOuterHtml : function()
+		{
+			if ( this.$.outerHTML )
+			{
+				// IE includes the <?xml:namespace> tag in the outerHTML of
+				// namespaced element. So, we must strip it here. (#3341)
+				return this.$.outerHTML.replace( /<\?[^>]*>/, '' );
+			}
+
+			var tmpDiv = this.$.ownerDocument.createElement( 'div' );
+			tmpDiv.appendChild( this.$.cloneNode( true ) );
+			return tmpDiv.innerHTML;
+		},
+
+		/**
+		 * Sets the inner HTML of this element.
+		 * @param {String} html The HTML to be set for this element.
+		 * @returns {String} The inserted HTML.
+		 * @example
+		 * var p = new CKEDITOR.dom.element( 'p' );
+		 * <b>p.setHtml( '&lt;b&gt;Inner&lt;/b&gt; HTML' );</b>
+		 *
+		 * // result: "&lt;p&gt;&lt;b&gt;Inner&lt;/b&gt; HTML&lt;/p&gt;"
+		 */
+		setHtml : function( html )
+		{
+			return ( this.$.innerHTML = html );
+		},
+
+		/**
+		 * Sets the element contents as plain text.
+		 * @param {String} text The text to be set.
+		 * @returns {String} The inserted text.
+		 * @example
+		 * var element = new CKEDITOR.dom.element( 'div' );
+		 * element.setText( 'A > B & C < D' );
+		 * alert( element.innerHTML );  // "A &amp;gt; B &amp;amp; C &amp;lt; D"
+		 */
+		setText : function( text )
+		{
+			CKEDITOR.dom.element.prototype.setText = ( this.$.innerText != undefined ) ?
+				function ( text )
+				{
+					return this.$.innerText = text;
+				} :
+				function ( text )
+				{
+					return this.$.textContent = text;
+				};
+
+			return this.setText( text );
+		},
+
+		/**
+		 * Gets the value of an element attribute.
+		 * @function
+		 * @param {String} name The attribute name.
+		 * @returns {String} The attribute value or null if not defined.
+		 * @example
+		 * var element = CKEDITOR.dom.element.createFromHtml( '&lt;input type="text" /&gt;' );
+		 * alert( <b>element.getAttribute( 'type' )</b> );  // "text"
+		 */
+		getAttribute : (function()
+		{
+			var standard = function( name )
+			{
+				return this.$.getAttribute( name, 2 );
+			};
+
+			if ( CKEDITOR.env.ie && ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) )
+			{
+				return function( name )
+				{
+					switch ( name )
+					{
+						case 'class':
+							name = 'className';
+							break;
+
+						case 'tabindex':
+							var tabIndex = standard.call( this, name );
+
+							// IE returns tabIndex=0 by default for all
+							// elements. For those elements,
+							// getAtrribute( 'tabindex', 2 ) returns 32768
+							// instead. So, we must make this check to give a
+							// uniform result among all browsers.
+							if ( tabIndex !== 0 && this.$.tabIndex === 0 )
+								tabIndex = null;
+
+							return tabIndex;
+							break;
+
+						case 'checked':
+							return this.$.checked;
+							break;
+
+						case 'style':
+							// IE does not return inline styles via getAttribute(). See #2947.
+							return this.$.style.cssText;
+					}
+
+					return standard.call( this, name );
+				};
+			}
+			else
+				return standard;
+		})(),
+
+		getChildren : function()
+		{
+			return new CKEDITOR.dom.nodeList( this.$.childNodes );
+		},
+
+		/**
+		 * Gets the current computed value of one of the element CSS style
+		 * properties.
+		 * @function
+		 * @param {String} propertyName The style property name.
+		 * @returns {String} The property value.
+		 * @example
+		 * var element = new CKEDITOR.dom.element( 'span' );
+		 * alert( <b>element.getComputedStyle( 'display' )</b> );  // "inline"
+		 */
+		getComputedStyle :
+			CKEDITOR.env.ie ?
+				function( propertyName )
+				{
+					return this.$.currentStyle[ CKEDITOR.tools.cssStyleToDomStyle( propertyName ) ];
+				}
+			:
+				function( propertyName )
+				{
+					return this.getWindow().$.getComputedStyle( this.$, '' ).getPropertyValue( propertyName );
+				},
+
+		/**
+		 * Gets the DTD entries for this element.
+		 * @returns {Object} An object containing the list of elements accepted
+		 *		by this element.
+		 */
+		getDtd : function()
+		{
+			var dtd = CKEDITOR.dtd[ this.getName() ];
+
+			this.getDtd = function()
+			{
+				return dtd;
+			};
+
+			return dtd;
+		},
+
+		getElementsByTag : CKEDITOR.dom.document.prototype.getElementsByTag,
+
+		/**
+		 * Gets the computed tabindex for this element.
+		 * @function
+		 * @returns {Number} The tabindex value.
+		 * @example
+		 * var element = CKEDITOR.document.getById( 'myDiv' );
+		 * alert( <b>element.getTabIndex()</b> );  // e.g. "-1"
+		 */
+		getTabIndex :
+			CKEDITOR.env.ie ?
+				function()
+				{
+					var tabIndex = this.$.tabIndex;
+
+					// IE returns tabIndex=0 by default for all elements. In
+					// those cases we must check that the element really has
+					// the tabindex attribute set to zero, or it is one of
+					// those element that should have zero by default.
+					if ( tabIndex === 0 && !CKEDITOR.dtd.$tabIndex[ this.getName() ] && parseInt( this.getAttribute( 'tabindex' ), 10 ) !== 0 )
+						tabIndex = -1;
+
+						return tabIndex;
+				}
+			: CKEDITOR.env.webkit ?
+				function()
+				{
+					var tabIndex = this.$.tabIndex;
+
+					// Safari returns "undefined" for elements that should not
+					// have tabindex (like a div). So, we must try to get it
+					// from the attribute.
+					// https://bugs.webkit.org/show_bug.cgi?id=20596
+					if ( tabIndex == undefined )
+					{
+						tabIndex = parseInt( this.getAttribute( 'tabindex' ), 10 );
+
+						// If the element don't have the tabindex attribute,
+						// then we should return -1.
+						if ( isNaN( tabIndex ) )
+							tabIndex = -1;
+					}
+
+					return tabIndex;
+				}
+			:
+				function()
+				{
+					return this.$.tabIndex;
+				},
+
+		/**
+		 * Gets the text value of this element.
+		 *
+		 * Only in IE (which uses innerText), &lt;br&gt; will cause linebreaks,
+		 * and sucessive whitespaces (including line breaks) will be reduced to
+		 * a single space. This behavior is ok for us, for now. It may change
+		 * in the future.
+		 * @returns {String} The text value.
+		 * @example
+		 * var element = CKEDITOR.dom.element.createFromHtml( '&lt;div&gt;Same &lt;i&gt;text&lt;/i&gt;.&lt;/div&gt;' );
+		 * alert( <b>element.getText()</b> );  // "Sample text."
+		 */
+		getText : function()
+		{
+			return this.$.textContent || this.$.innerText || '';
+		},
+
+		/**
+		 * Gets the window object that contains this element.
+		 * @returns {CKEDITOR.dom.window} The window object.
+		 * @example
+		 */
+		getWindow : function()
+		{
+			return this.getDocument().getWindow();
+		},
+
+		/**
+		 * Gets the value of the "id" attribute of this element.
+		 * @returns {String} The element id, or null if not available.
+		 * @example
+		 * var element = CKEDITOR.dom.element.createFromHtml( '&lt;p id="myId"&gt;&lt;/p&gt;' );
+		 * alert( <b>element.getId()</b> );  // "myId"
+		 */
+		getId : function()
+		{
+			return this.$.id || null;
+		},
+
+		/**
+		 * Gets the value of the "name" attribute of this element.
+		 * @returns {String} The element name, or null if not available.
+		 * @example
+		 * var element = CKEDITOR.dom.element.createFromHtml( '&lt;input name="myName"&gt;&lt;/input&gt;' );
+		 * alert( <b>element.getNameAtt()</b> );  // "myName"
+		 */
+		getNameAtt : function()
+		{
+			return this.$.name || null;
+		},
+
+		/**
+		 * Gets the element name (tag name). The returned name is guaranteed to
+		 * be always full lowercased.
+		 * @returns {String} The element name.
+		 * @example
+		 * var element = new CKEDITOR.dom.element( 'span' );
+		 * alert( <b>element.getName()</b> );  // "span"
+		 */
+		getName : function()
+		{
+			// Cache the lowercased name inside a closure.
+			var nodeName = this.$.nodeName.toLowerCase();
+
+			if ( CKEDITOR.env.ie )
+			{
+				var scopeName = this.$.scopeName;
+				if ( scopeName != 'HTML' )
+					nodeName = scopeName.toLowerCase() + ':' + nodeName;
+			}
+
+			return (
+			/** @ignore */
+			this.getName = function()
+				{
+					return nodeName;
+				})();
+		},
+
+		/**
+		 * Gets the value set to this element. This value is usually available
+		 * for form field elements.
+		 * @returns {String} The element value.
+		 */
+		getValue : function()
+		{
+			return this.$.value;
+		},
+
+		/**
+		 * Gets the first child node of this element.
+		 * @returns {CKEDITOR.dom.node} The first child node or null if not
+		 *		available.
+		 * @example
+		 * var element = CKEDITOR.dom.element.createFromHtml( '&lt;div&gt;&lt;b&gt;Example&lt;/b&gt;&lt;/div&gt;' );
+		 * var first = <b>element.getFirst()</b>;
+		 * alert( first.getName() );  // "b"
+		 */
+		getFirst : function()
+		{
+			var $ = this.$.firstChild;
+			return $ ? new CKEDITOR.dom.node( $ ) : null;
+		},
+
+		/**
+		 * @param {Function} evaluator Filtering the result node.
+		 */
+		getLast : function( evaluator )
+		{
+			var last = this.$.lastChild,
+				retval = last && new CKEDITOR.dom.node( last );
+			if ( retval && evaluator && !evaluator( retval ) )
+				retval = retval.getPrevious( evaluator );
+
+			return retval;
+		},
+
+		getStyle : function( name )
+		{
+			return this.$.style[ CKEDITOR.tools.cssStyleToDomStyle( name ) ];
+		},
+
+		/**
+		 * Checks if the element name matches one or more names.
+		 * @param {String} name[,name[,...]] One or more names to be checked.
+		 * @returns {Boolean} true if the element name matches any of the names.
+		 * @example
+		 * var element = new CKEDITOR.element( 'span' );
+		 * alert( <b>element.is( 'span' )</b> );  "true"
+		 * alert( <b>element.is( 'p', 'span' )</b> );  "true"
+		 * alert( <b>element.is( 'p' )</b> );  "false"
+		 * alert( <b>element.is( 'p', 'div' )</b> );  "false"
+		 */
+		is : function()
+		{
+			var name = this.getName();
+			for ( var i = 0 ; i < arguments.length ; i++ )
+			{
+				if ( arguments[ i ] == name )
+					return true;
+			}
+			return false;
+		},
+
+		isEditable : function()
+		{
+			// Get the element name.
+			var name = this.getName();
+
+			// Get the element DTD (defaults to span for unknown elements).
+			var dtd = !CKEDITOR.dtd.$nonEditable[ name ]
+						&& ( CKEDITOR.dtd[ name ] || CKEDITOR.dtd.span );
+
+			// In the DTD # == text node.
+			return ( dtd && dtd['#'] );
+		},
+
+		isIdentical : function( otherElement )
+		{
+			if ( this.getName() != otherElement.getName() )
+				return false;
+
+			var thisAttribs = this.$.attributes,
+				otherAttribs = otherElement.$.attributes;
+
+			var thisLength = thisAttribs.length,
+				otherLength = otherAttribs.length;
+
+			if ( !CKEDITOR.env.ie && thisLength != otherLength )
+				return false;
+
+			for ( var i = 0 ; i < thisLength ; i++ )
+			{
+				var attribute = thisAttribs[ i ];
+
+				if ( ( !CKEDITOR.env.ie || ( attribute.specified && attribute.nodeName != '_cke_expando' ) ) && attribute.nodeValue != otherElement.getAttribute( attribute.nodeName ) )
+					return false;
+			}
+
+			// For IE, we have to for both elements, because it's difficult to
+			// know how the atttibutes collection is organized in its DOM.
+			if ( CKEDITOR.env.ie )
+			{
+				for ( i = 0 ; i < otherLength ; i++ )
+				{
+					attribute = otherAttribs[ i ];
+
+					if ( ( !CKEDITOR.env.ie || ( attribute.specified && attribute.nodeName != '_cke_expando' ) ) && attribute.nodeValue != thisAttribs.getAttribute( attribute.nodeName ) )
+						return false;
+				}
+			}
+
+			return true;
+		},
+
+		/**
+		 * Checks if this element is visible. May not work if the element is
+		 * child of an element with visibility set to "hidden", but works well
+		 * on the great majority of cases.
+		 * @return {Boolean} True if the element is visible.
+		 */
+		isVisible : function()
+		{
+			return this.$.offsetWidth && ( this.$.style.visibility != 'hidden' );
+		},
+
+		/**
+		 * Indicates that the element has defined attributes.
+		 * @returns {Boolean} True if the element has attributes.
+		 * @example
+		 * var element = CKEDITOR.dom.element.createFromHtml( '<div title="Test">Example</div>' );
+		 * alert( <b>element.hasAttributes()</b> );  "true"
+		 * @example
+		 * var element = CKEDITOR.dom.element.createFromHtml( '<div>Example</div>' );
+		 * alert( <b>element.hasAttributes()</b> );  "false"
+		 */
+		hasAttributes :
+			CKEDITOR.env.ie && ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) ?
+				function()
+				{
+					var attributes = this.$.attributes;
+
+					for ( var i = 0 ; i < attributes.length ; i++ )
+					{
+						var attribute = attributes[i];
+
+						switch ( attribute.nodeName )
+						{
+							case 'class' :
+								// IE has a strange bug. If calling removeAttribute('className'),
+								// the attributes collection will still contain the "class"
+								// attribute, which will be marked as "specified", even if the
+								// outerHTML of the element is not displaying the class attribute.
+								// Note : I was not able to reproduce it outside the editor,
+								// but I've faced it while working on the TC of #1391.
+								if ( this.getAttribute( 'class' ) )
+									return true;
+
+							// Attributes to be ignored.
+							case '_cke_expando' :
+								continue;
+
+							/*jsl:fallthru*/
+
+							default :
+								if ( attribute.specified )
+									return true;
+						}
+					}
+
+					return false;
+				}
+			:
+				function()
+				{
+					var attributes = this.$.attributes;
+					return ( attributes.length > 1 || ( attributes.length == 1 && attributes[0].nodeName != '_cke_expando' ) );
+				},
+
+		/**
+		 * Indicates whether a specified attribute is defined for this element.
+		 * @returns {Boolean} True if the specified attribute is defined.
+		 * @param (String) name The attribute name.
+		 * @example
+		 */
+		hasAttribute : function( name )
+		{
+			var $attr = this.$.attributes.getNamedItem( name );
+			return !!( $attr && $attr.specified );
+		},
+
+		/**
+		 * Hides this element (display:none).
+		 * @example
+		 * var element = CKEDITOR.dom.element.getById( 'myElement' );
+		 * <b>element.hide()</b>;
+		 */
+		hide : function()
+		{
+			this.setStyle( 'display', 'none' );
+		},
+
+		moveChildren : function( target, toStart )
+		{
+			var $ = this.$;
+			target = target.$;
+
+			if ( $ == target )
+				return;
+
+			var child;
+
+			if ( toStart )
+			{
+				while ( ( child = $.lastChild ) )
+					target.insertBefore( $.removeChild( child ), target.firstChild );
+			}
+			else
+			{
+				while ( ( child = $.firstChild ) )
+					target.appendChild( $.removeChild( child ) );
+			}
+		},
+
+		/**
+		 * Shows this element (display it).
+		 * @example
+		 * var element = CKEDITOR.dom.element.getById( 'myElement' );
+		 * <b>element.show()</b>;
+		 */
+		show : function()
+		{
+			this.setStyles(
+				{
+					display : '',
+					visibility : ''
+				});
+		},
+
+		/**
+		 * Sets the value of an element attribute.
+		 * @param {String} name The name of the attribute.
+		 * @param {String} value The value to be set to the attribute.
+		 * @function
+		 * @returns {CKEDITOR.dom.element} This element instance.
+		 * @example
+		 * var element = CKEDITOR.dom.element.getById( 'myElement' );
+		 * <b>element.setAttribute( 'class', 'myClass' )</b>;
+		 * <b>element.setAttribute( 'title', 'This is an example' )</b>;
+		 */
+		setAttribute : (function()
+		{
+			var standard = function( name, value )
+			{
+				this.$.setAttribute( name, value );
+				return this;
+			};
+
+			if ( CKEDITOR.env.ie && ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) )
+			{
+				return function( name, value )
+				{
+					if ( name == 'class' )
+						this.$.className = value;
+					else if ( name == 'style' )
+						this.$.style.cssText = value;
+					else if ( name == 'tabindex' )	// Case sensitive.
+						this.$.tabIndex = value;
+					else if ( name == 'checked' )
+						this.$.checked = value;
+					else
+						standard.apply( this, arguments );
+					return this;
+				};
+			}
+			else
+				return standard;
+		})(),
+
+		/**
+		 * Sets the value of several element attributes.
+		 * @param {Object} attributesPairs An object containing the names and
+		 *		values of the attributes.
+		 * @returns {CKEDITOR.dom.element} This element instance.
+		 * @example
+		 * var element = CKEDITOR.dom.element.getById( 'myElement' );
+		 * <b>element.setAttributes({
+		 *     'class' : 'myClass',
+		 *     'title' : 'This is an example' })</b>;
+		 */
+		setAttributes : function( attributesPairs )
+		{
+			for ( var name in attributesPairs )
+				this.setAttribute( name, attributesPairs[ name ] );
+			return this;
+		},
+
+		/**
+		 * Sets the element value. This function is usually used with form
+		 * field element.
+		 * @param {String} value The element value.
+		 * @returns {CKEDITOR.dom.element} This element instance.
+		 */
+		setValue : function( value )
+		{
+			this.$.value = value;
+			return this;
+		},
+
+		/**
+		 * Removes an attribute from the element.
+		 * @param {String} name The attribute name.
+		 * @function
+		 * @example
+		 * var element = CKEDITOR.dom.element.createFromHtml( '<div class="classA"></div>' );
+		 * element.removeAttribute( 'class' );
+		 */
+		removeAttribute : (function()
+		{
+			var standard = function( name )
+			{
+				this.$.removeAttribute( name );
+			};
+
+			if ( CKEDITOR.env.ie && ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) )
+			{
+				return function( name )
+				{
+					if ( name == 'class' )
+						name = 'className';
+					else if ( name == 'tabindex' )
+						name = 'tabIndex';
+					standard.call( this, name );
+				};
+			}
+			else
+				return standard;
+		})(),
+
+		removeAttributes : function ( attributes )
+		{
+			for ( var i = 0 ; i < attributes.length ; i++ )
+				this.removeAttribute( attributes[ i ] );
+		},
+
+		/**
+		 * Removes a style from the element.
+		 * @param {String} name The style name.
+		 * @function
+		 * @example
+		 * var element = CKEDITOR.dom.element.createFromHtml( '<div style="display:none"></div>' );
+		 * element.removeStyle( 'display' );
+		 */
+		removeStyle : function( name )
+		{
+			if ( this.$.style.removeAttribute )
+				this.$.style.removeAttribute( CKEDITOR.tools.cssStyleToDomStyle( name ) );
+			else
+				this.setStyle( name, '' );
+
+			if ( !this.$.style.cssText )
+				this.removeAttribute( 'style' );
+		},
+
+		/**
+		 * Sets the value of an element style.
+		 * @param {String} name The name of the style. The CSS naming notation
+		 *		must be used (e.g. "background-color").
+		 * @param {String} value The value to be set to the style.
+		 * @returns {CKEDITOR.dom.element} This element instance.
+		 * @example
+		 * var element = CKEDITOR.dom.element.getById( 'myElement' );
+		 * <b>element.setStyle( 'background-color', '#ff0000' )</b>;
+		 * <b>element.setStyle( 'margin-top', '10px' )</b>;
+		 * <b>element.setStyle( 'float', 'right' )</b>;
+		 */
+		setStyle : function( name, value )
+		{
+			this.$.style[ CKEDITOR.tools.cssStyleToDomStyle( name ) ] = value;
+			return this;
+		},
+
+		/**
+		 * Sets the value of several element styles.
+		 * @param {Object} stylesPairs An object containing the names and
+		 *		values of the styles.
+		 * @returns {CKEDITOR.dom.element} This element instance.
+		 * @example
+		 * var element = CKEDITOR.dom.element.getById( 'myElement' );
+		 * <b>element.setStyles({
+		 *     'position' : 'absolute',
+		 *     'float' : 'right' })</b>;
+		 */
+		setStyles : function( stylesPairs )
+		{
+			for ( var name in stylesPairs )
+				this.setStyle( name, stylesPairs[ name ] );
+			return this;
+		},
+
+		/**
+		 * Sets the opacity of an element.
+		 * @param {Number} opacity A number within the range [0.0, 1.0].
+		 * @example
+		 * var element = CKEDITOR.dom.element.getById( 'myElement' );
+		 * <b>element.setOpacity( 0.75 )</b>;
+		 */
+		setOpacity : function( opacity )
+		{
+			if ( CKEDITOR.env.ie )
+			{
+				opacity = Math.round( opacity * 100 );
+				this.setStyle( 'filter', opacity >= 100 ? '' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')' );
+			}
+			else
+				this.setStyle( 'opacity', opacity );
+		},
+
+		/**
+		 * Makes the element and its children unselectable.
+		 * @function
+		 * @example
+		 * var element = CKEDITOR.dom.element.getById( 'myElement' );
+		 * element.unselectable();
+		 */
+		unselectable :
+			CKEDITOR.env.gecko ?
+				function()
+				{
+					this.$.style.MozUserSelect = 'none';
+				}
+			: CKEDITOR.env.webkit ?
+				function()
+				{
+					this.$.style.KhtmlUserSelect = 'none';
+				}
+			:
+				function()
+				{
+					if ( CKEDITOR.env.ie || CKEDITOR.env.opera )
+					{
+						var element = this.$,
+							e,
+							i = 0;
+
+						element.unselectable = 'on';
+
+						while ( ( e = element.all[ i++ ] ) )
+						{
+							switch ( e.tagName.toLowerCase() )
+							{
+								case 'iframe' :
+								case 'textarea' :
+								case 'input' :
+								case 'select' :
+									/* Ignore the above tags */
+									break;
+								default :
+									e.unselectable = 'on';
+							}
+						}
+					}
+				},
+
+		getPositionedAncestor : function()
+		{
+			var current = this;
+			while ( current.getName() != 'html' )
+			{
+				if ( current.getComputedStyle( 'position' ) != 'static' )
+					return current;
+
+				current = current.getParent();
+			}
+			return null;
+		},
+
+		getDocumentPosition : function( refDocument )
+		{
+			var x = 0, y = 0,
+				body = this.getDocument().getBody(),
+				quirks = this.getDocument().$.compatMode == 'BackCompat';
+
+			var doc = this.getDocument();
+
+			if ( document.documentElement[ "getBoundingClientRect" ] )
+			{
+				var box  = this.$.getBoundingClientRect(),
+					$doc = doc.$,
+					$docElem = $doc.documentElement;
+
+				var clientTop = $docElem.clientTop || body.$.clientTop || 0,
+					clientLeft = $docElem.clientLeft || body.$.clientLeft || 0,
+					needAdjustScrollAndBorders = true;
+
+				/*
+				 * #3804: getBoundingClientRect() works differently on IE and non-IE
+				 * browsers, regarding scroll positions.
+				 *
+				 * On IE, the top position of the <html> element is always 0, no matter
+				 * how much you scrolled down.
+				 *
+				 * On other browsers, the top position of the <html> element is negative
+				 * scrollTop.
+				 */
+				if ( CKEDITOR.env.ie )
+				{
+					var inDocElem = doc.getDocumentElement().contains( this ),
+						inBody = doc.getBody().contains( this );
+
+					needAdjustScrollAndBorders = ( quirks && inBody ) || ( !quirks && inDocElem );
+				}
+
+				if ( needAdjustScrollAndBorders )
+				{
+					x = box.left + ( !quirks && $docElem.scrollLeft || body.$.scrollLeft );
+					x -= clientLeft;
+					y = box.top  + ( !quirks && $docElem.scrollTop || body.$.scrollTop );
+					y -= clientTop;
+				}
+			}
+			else
+ 			{
+				var current = this, previous = null, offsetParent;
+				while ( current && !( current.getName() == 'body' || current.getName() == 'html' ) )
+				{
+					x += current.$.offsetLeft - current.$.scrollLeft;
+					y += current.$.offsetTop - current.$.scrollTop;
+
+					// Opera includes clientTop|Left into offsetTop|Left.
+					if ( !current.equals( this ) )
+					{
+						x += ( current.$.clientLeft || 0 );
+						y += ( current.$.clientTop || 0 );
+					}
+
+					var scrollElement = previous;
+					while ( scrollElement && !scrollElement.equals( current ) )
+					{
+						x -= scrollElement.$.scrollLeft;
+						y -= scrollElement.$.scrollTop;
+						scrollElement = scrollElement.getParent();
+					}
+
+					previous = current;
+					current = ( offsetParent = current.$.offsetParent ) ?
+					          new CKEDITOR.dom.element( offsetParent ) : null;
+				}
+			}
+
+			if ( refDocument )
+			{
+				var currentWindow = this.getWindow(),
+					refWindow = refDocument.getWindow();
+
+				if ( !currentWindow.equals( refWindow ) && currentWindow.$.frameElement )
+				{
+					var iframePosition = ( new CKEDITOR.dom.element( currentWindow.$.frameElement ) ).getDocumentPosition( refDocument );
+
+					x += iframePosition.x;
+					y += iframePosition.y;
+				}
+			}
+
+			if ( !document.documentElement[ "getBoundingClientRect" ] )
+			{
+				// In Firefox, we'll endup one pixel before the element positions,
+				// so we must add it here.
+				if ( CKEDITOR.env.gecko && !quirks )
+				{
+					x += this.$.clientLeft ? 1 : 0;
+					y += this.$.clientTop ? 1 : 0;
+				}
+			}
+
+			return { x : x, y : y };
+		},
+
+		scrollIntoView : function( alignTop )
+		{
+			// Get the element window.
+			var win = this.getWindow(),
+				winHeight = win.getViewPaneSize().height;
+
+			// Starts from the offset that will be scrolled with the negative value of
+			// the visible window height.
+			var offset = winHeight * -1;
+
+			// Append the view pane's height if align to top.
+			// Append element height if we are aligning to the bottom.
+			if ( alignTop )
+				offset += winHeight;
+			else
+			{
+				offset += this.$.offsetHeight || 0;
+
+				// Consider the margin in the scroll, which is ok for our current needs, but
+				// needs investigation if we will be using this function in other places.
+				offset += parseInt( this.getComputedStyle( 'marginBottom' ) || 0, 10 ) || 0;
+			}
+
+			// Append the offsets for the entire element hierarchy.
+			var elementPosition = this.getDocumentPosition();
+			offset += elementPosition.y;
+
+			// offset value might be out of range(nagative), fix it(#3692).
+			offset = offset < 0 ? 0 : offset;
+
+			// Scroll the window to the desired position, if not already visible(#3795).
+			var currentScroll = win.getScrollPosition().y;
+			if ( offset > currentScroll || offset < currentScroll - winHeight )
+				win.$.scrollTo( 0, offset );
+		},
+
+		setState : function( state )
+		{
+			switch ( state )
+			{
+				case CKEDITOR.TRISTATE_ON :
+					this.addClass( 'cke_on' );
+					this.removeClass( 'cke_off' );
+					this.removeClass( 'cke_disabled' );
+					break;
+				case CKEDITOR.TRISTATE_DISABLED :
+					this.addClass( 'cke_disabled' );
+					this.removeClass( 'cke_off' );
+					this.removeClass( 'cke_on' );
+					break;
+				default :
+					this.addClass( 'cke_off' );
+					this.removeClass( 'cke_on' );
+					this.removeClass( 'cke_disabled' );
+					break;
+			}
+		},
+
+		/**
+		 * Returns the inner document of this IFRAME element.
+		 * @returns {CKEDITOR.dom.document} The inner document.
+		 */
+		getFrameDocument : function()
+		{
+			var $ = this.$;
+
+			try
+			{
+				// In IE, with custom document.domain, it may happen that
+				// the iframe is not yet available, resulting in "Access
+				// Denied" for the following property access.
+				$.contentWindow.document;
+			}
+			catch ( e )
+			{
+				// Trick to solve this issue, forcing the iframe to get ready
+				// by simply setting its "src" property.
+				$.src = $.src;
+
+				// In IE6 though, the above is not enough, so we must pause the
+				// execution for a while, giving it time to think.
+				if ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 )
+				{
+					window.showModalDialog(
+						'javascript:document.write("' +
+							'<script>' +
+								'window.setTimeout(' +
+									'function(){window.close();}' +
+									',50);' +
+							'</script>")' );
+				}
+			}
+
+			return $ && new CKEDITOR.dom.document( $.contentWindow.document );
+		},
+
+		/**
+		 * Copy all the attributes from one node to the other, kinda like a clone
+		 * skipAttributes is an object with the attributes that must NOT be copied.
+		 * @param {CKEDITOR.dom.element} dest The destination element.
+		 * @param {Object} skipAttributes A dictionary of attributes to skip.
+		 * @example
+		 */
+		copyAttributes : function( dest, skipAttributes )
+		{
+			var attributes = this.$.attributes;
+			skipAttributes = skipAttributes || {};
+
+			for ( var n = 0 ; n < attributes.length ; n++ )
+			{
+				var attribute = attributes[n];
+
+				// IE BUG: value attribute is never specified even if it exists.
+				if ( attribute.specified ||
+				  ( CKEDITOR.env.ie && attribute.nodeValue && attribute.nodeName.toLowerCase() == 'value' ) )
+				{
+					var attrName = attribute.nodeName;
+					// We can set the type only once, so do it with the proper value, not copying it.
+					if ( attrName in skipAttributes )
+						continue;
+
+					var attrValue = this.getAttribute( attrName );
+					if ( attrValue === null )
+						attrValue = attribute.nodeValue;
+
+					dest.setAttribute( attrName, attrValue );
+				}
+			}
+
+			// The style:
+			if ( this.$.style.cssText !== '' )
+				dest.$.style.cssText = this.$.style.cssText;
+		},
+
+		/**
+		 * Changes the tag name of the current element.
+		 * @param {String} newTag The new tag for the element.
+		 */
+		renameNode : function( newTag )
+		{
+			// If it's already correct exit here.
+			if ( this.getName() == newTag )
+				return;
+
+			var doc = this.getDocument();
+
+			// Create the new node.
+			var newNode = new CKEDITOR.dom.element( newTag, doc );
+
+			// Copy all attributes.
+			this.copyAttributes( newNode );
+
+			// Move children to the new node.
+			this.moveChildren( newNode );
+
+			// Replace the node.
+			this.$.parentNode.replaceChild( newNode.$, this.$ );
+			newNode.$._cke_expando = this.$._cke_expando;
+			this.$ = newNode.$;
+		},
+
+		/**
+		 * Gets a DOM tree descendant under the current node.
+		 * @param {Array|Number} indices The child index or array of child indices under the node.
+		 * @returns {CKEDITOR.dom.node} The specified DOM child under the current node. Null if child does not exist.
+		 * @example
+		 * var strong = p.getChild(0);
+		 */
+		getChild : function( indices )
+		{
+			var rawNode = this.$;
+
+			if ( !indices.slice )
+				rawNode = rawNode.childNodes[ indices ];
+			else
+			{
+				while ( indices.length > 0 && rawNode )
+					rawNode = rawNode.childNodes[ indices.shift() ];
+			}
+
+			return rawNode ? new CKEDITOR.dom.node( rawNode ) : null;
+		},
+
+		getChildCount : function()
+		{
+			return this.$.childNodes.length;
+ 		},
+
+		disableContextMenu : function()
+		{
+			this.on( 'contextmenu', function( event )
+				{
+					// Cancel the browser context menu.
+					if ( !event.data.getTarget().hasClass( 'cke_enable_context_menu' ) )
+						event.data.preventDefault();
+				} );
+		}
+	});
Index: /trunk/filemanager/tp/ckeditor/_source/core/dom/range.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dom/range.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dom/range.js	(revision 2000)
@@ -0,0 +1,1668 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dom.range = function( document )
+{
+	this.startContainer	= null;
+	this.startOffset	= null;
+	this.endContainer	= null;
+	this.endOffset		= null;
+	this.collapsed		= true;
+
+	this.document = document;
+};
+
+(function()
+{
+	// Updates the "collapsed" property for the given range object.
+	var updateCollapsed = function( range )
+	{
+		range.collapsed = (
+			range.startContainer &&
+			range.endContainer &&
+			range.startContainer.equals( range.endContainer ) &&
+			range.startOffset == range.endOffset );
+	};
+
+	// This is a shared function used to delete, extract and clone the range
+	// contents.
+	// V2
+	var execContentsAction = function( range, action, docFrag )
+	{
+		range.optimizeBookmark();
+
+		var startNode	= range.startContainer;
+		var endNode		= range.endContainer;
+
+		var startOffset	= range.startOffset;
+		var endOffset	= range.endOffset;
+
+		var removeStartNode;
+		var removeEndNode;
+
+		// For text containers, we must simply split the node and point to the
+		// second part. The removal will be handled by the rest of the code .
+		if ( endNode.type == CKEDITOR.NODE_TEXT )
+			endNode = endNode.split( endOffset );
+		else
+		{
+			// If the end container has children and the offset is pointing
+			// to a child, then we should start from it.
+			if ( endNode.getChildCount() > 0 )
+			{
+				// If the offset points after the last node.
+				if ( endOffset >= endNode.getChildCount() )
+				{
+					// Let's create a temporary node and mark it for removal.
+					endNode = endNode.append( range.document.createText( '' ) );
+					removeEndNode = true;
+				}
+				else
+					endNode = endNode.getChild( endOffset );
+			}
+		}
+
+		// For text containers, we must simply split the node. The removal will
+		// be handled by the rest of the code .
+		if ( startNode.type == CKEDITOR.NODE_TEXT )
+		{
+			startNode.split( startOffset );
+
+			// In cases the end node is the same as the start node, the above
+			// splitting will also split the end, so me must move the end to
+			// the second part of the split.
+			if ( startNode.equals( endNode ) )
+				endNode = startNode.getNext();
+		}
+		else
+		{
+			// If the start container has children and the offset is pointing
+			// to a child, then we should start from its previous sibling.
+
+			// If the offset points to the first node, we don't have a
+			// sibling, so let's use the first one, but mark it for removal.
+			if ( !startOffset )
+			{
+				// Let's create a temporary node and mark it for removal.
+				startNode = startNode.getFirst().insertBeforeMe( range.document.createText( '' ) );
+				removeStartNode = true;
+			}
+			else if ( startOffset >= startNode.getChildCount() )
+			{
+				// Let's create a temporary node and mark it for removal.
+				startNode = startNode.append( range.document.createText( '' ) );
+				removeStartNode = true;
+			}
+			else
+				startNode = startNode.getChild( startOffset ).getPrevious();
+		}
+
+		// Get the parent nodes tree for the start and end boundaries.
+		var startParents	= startNode.getParents();
+		var endParents		= endNode.getParents();
+
+		// Compare them, to find the top most siblings.
+		var i, topStart, topEnd;
+
+		for ( i = 0 ; i < startParents.length ; i++ )
+		{
+			topStart = startParents[ i ];
+			topEnd = endParents[ i ];
+
+			// The compared nodes will match until we find the top most
+			// siblings (different nodes that have the same parent).
+			// "i" will hold the index in the parents array for the top
+			// most element.
+			if ( !topStart.equals( topEnd ) )
+				break;
+		}
+
+		var clone = docFrag, levelStartNode, levelClone, currentNode, currentSibling;
+
+		// Remove all successive sibling nodes for every node in the
+		// startParents tree.
+		for ( var j = i ; j < startParents.length ; j++ )
+		{
+			levelStartNode = startParents[j];
+
+			// For Extract and Clone, we must clone this level.
+			if ( clone && !levelStartNode.equals( startNode ) )		// action = 0 = Delete
+				levelClone = clone.append( levelStartNode.clone() );
+
+			currentNode = levelStartNode.getNext();
+
+			while( currentNode )
+			{
+				// Stop processing when the current node matches a node in the
+				// endParents tree or if it is the endNode.
+				if ( currentNode.equals( endParents[ j ] ) || currentNode.equals( endNode ) )
+					break;
+
+				// Cache the next sibling.
+				currentSibling = currentNode.getNext();
+
+				// If cloning, just clone it.
+				if ( action == 2 )	// 2 = Clone
+					clone.append( currentNode.clone( true ) );
+				else
+				{
+					// Both Delete and Extract will remove the node.
+					currentNode.remove();
+
+					// When Extracting, move the removed node to the docFrag.
+					if ( action == 1 )	// 1 = Extract
+						clone.append( currentNode );
+				}
+
+				currentNode = currentSibling;
+			}
+
+			if ( clone )
+				clone = levelClone;
+		}
+
+		clone = docFrag;
+
+		// Remove all previous sibling nodes for every node in the
+		// endParents tree.
+		for ( var k = i ; k < endParents.length ; k++ )
+		{
+			levelStartNode = endParents[ k ];
+
+			// For Extract and Clone, we must clone this level.
+			if ( action > 0 && !levelStartNode.equals( endNode ) )		// action = 0 = Delete
+				levelClone = clone.append( levelStartNode.clone() );
+
+			// The processing of siblings may have already been done by the parent.
+			if ( !startParents[ k ] || levelStartNode.$.parentNode != startParents[ k ].$.parentNode )
+			{
+				currentNode = levelStartNode.getPrevious();
+
+				while( currentNode )
+				{
+					// Stop processing when the current node matches a node in the
+					// startParents tree or if it is the startNode.
+					if ( currentNode.equals( startParents[ k ] ) || currentNode.equals( startNode ) )
+						break;
+
+					// Cache the next sibling.
+					currentSibling = currentNode.getPrevious();
+
+					// If cloning, just clone it.
+					if ( action == 2 )	// 2 = Clone
+						clone.$.insertBefore( currentNode.$.cloneNode( true ), clone.$.firstChild ) ;
+					else
+					{
+						// Both Delete and Extract will remove the node.
+						currentNode.remove();
+
+						// When Extracting, mode the removed node to the docFrag.
+						if ( action == 1 )	// 1 = Extract
+							clone.$.insertBefore( currentNode.$, clone.$.firstChild );
+					}
+
+					currentNode = currentSibling;
+				}
+			}
+
+			if ( clone )
+				clone = levelClone;
+		}
+
+		if ( action == 2 )		// 2 = Clone.
+		{
+			// No changes in the DOM should be done, so fix the split text (if any).
+
+			var startTextNode = range.startContainer;
+			if ( startTextNode.type == CKEDITOR.NODE_TEXT )
+			{
+				startTextNode.$.data += startTextNode.$.nextSibling.data;
+				startTextNode.$.parentNode.removeChild( startTextNode.$.nextSibling );
+			}
+
+			var endTextNode = range.endContainer;
+			if ( endTextNode.type == CKEDITOR.NODE_TEXT && endTextNode.$.nextSibling )
+			{
+				endTextNode.$.data += endTextNode.$.nextSibling.data;
+				endTextNode.$.parentNode.removeChild( endTextNode.$.nextSibling );
+			}
+		}
+		else
+		{
+			// Collapse the range.
+
+			// If a node has been partially selected, collapse the range between
+			// topStart and topEnd. Otherwise, simply collapse it to the start. (W3C specs).
+			if ( topStart && topEnd && ( startNode.$.parentNode != topStart.$.parentNode || endNode.$.parentNode != topEnd.$.parentNode ) )
+			{
+				var endIndex = topEnd.getIndex();
+
+				// If the start node is to be removed, we must correct the
+				// index to reflect the removal.
+				if ( removeStartNode && topEnd.$.parentNode == startNode.$.parentNode )
+					endIndex--;
+
+				range.setStart( topEnd.getParent(), endIndex );
+			}
+
+			// Collapse it to the start.
+			range.collapse( true );
+		}
+
+		// Cleanup any marked node.
+		if( removeStartNode )
+			startNode.remove();
+
+		if( removeEndNode && endNode.$.parentNode )
+			endNode.remove();
+	};
+
+	var inlineChildReqElements = { abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 };
+
+	// Creates the appropriate node evaluator for the dom walker used inside
+	// check(Start|End)OfBlock.
+	function getCheckStartEndBlockEvalFunction( isStart )
+	{
+		var hadBr = false, bookmarkEvaluator = CKEDITOR.dom.walker.bookmark( true );
+		return function( node )
+		{
+			// First ignore bookmark nodes.
+			if ( bookmarkEvaluator( node ) )
+				return true;
+
+			if ( node.type == CKEDITOR.NODE_TEXT )
+			{
+				// If there's any visible text, then we're not at the start.
+				if ( CKEDITOR.tools.trim( node.getText() ).length )
+					return false;
+				}
+			else
+			{
+				// If there are non-empty inline elements (e.g. <img />), then we're not
+				// at the start.
+				if ( !inlineChildReqElements[ node.getName() ] )
+				{
+					// If we're working at the end-of-block, forgive the first <br /> in non-IE
+					// browsers.
+					if ( !isStart && !CKEDITOR.env.ie && node.getName() == 'br' && !hadBr )
+						hadBr = true;
+					else
+						return false;
+				}
+			}
+			return true;
+		};
+	}
+
+	// Evaluator for CKEDITOR.dom.element::checkBoundaryOfElement, reject any
+	// text node and non-empty elements unless it's being bookmark text.
+	function elementBoundaryEval( node )
+	{
+		// Reject any text node unless it's being bookmark
+		// OR it's spaces. (#3883)
+		return node.type != CKEDITOR.NODE_TEXT
+			    && node.getName() in CKEDITOR.dtd.$removeEmpty
+			    || !CKEDITOR.tools.trim( node.getText() )
+			    || node.getParent().hasAttribute( '_fck_bookmark' );
+	}
+
+	CKEDITOR.dom.range.prototype =
+	{
+		clone : function()
+		{
+			var clone = new CKEDITOR.dom.range( this.document );
+
+			clone.startContainer = this.startContainer;
+			clone.startOffset = this.startOffset;
+			clone.endContainer = this.endContainer;
+			clone.endOffset = this.endOffset;
+			clone.collapsed = this.collapsed;
+
+			return clone;
+		},
+
+		collapse : function( toStart )
+		{
+			if ( toStart )
+			{
+				this.endContainer	= this.startContainer;
+				this.endOffset		= this.startOffset;
+			}
+			else
+			{
+				this.startContainer	= this.endContainer;
+				this.startOffset	= this.endOffset;
+			}
+
+			this.collapsed = true;
+		},
+
+		// The selection may be lost when cloning (due to the splitText() call).
+		cloneContents : function()
+		{
+			var docFrag = new CKEDITOR.dom.documentFragment( this.document );
+
+			if ( !this.collapsed )
+				execContentsAction( this, 2, docFrag );
+
+			return docFrag;
+		},
+
+		deleteContents : function()
+		{
+			if ( this.collapsed )
+				return;
+
+			execContentsAction( this, 0 );
+		},
+
+		extractContents : function()
+		{
+			var docFrag = new CKEDITOR.dom.documentFragment( this.document );
+
+			if ( !this.collapsed )
+				execContentsAction( this, 1, docFrag );
+
+			return docFrag;
+		},
+
+		/**
+		 * Creates a bookmark object, which can be later used to restore the
+		 * range by using the moveToBookmark function.
+		 * This is an "intrusive" way to create a bookmark. It includes <span> tags
+		 * in the range boundaries. The advantage of it is that it is possible to
+		 * handle DOM mutations when moving back to the bookmark.
+		 * Attention: the inclusion of nodes in the DOM is a design choice and
+		 * should not be changed as there are other points in the code that may be
+		 * using those nodes to perform operations. See GetBookmarkNode.
+		 * @param {Boolean} [serializable] Indicates that the bookmark nodes
+		 *		must contain ids, which can be used to restore the range even
+		 *		when these nodes suffer mutations (like a clonation or innerHTML
+		 *		change).
+		 * @returns {Object} And object representing a bookmark.
+		 */
+		createBookmark : function( serializable )
+		{
+			var startNode, endNode;
+			var baseId;
+			var clone;
+
+			startNode = this.document.createElement( 'span' );
+			startNode.setAttribute( '_fck_bookmark', 1 );
+			startNode.setStyle( 'display', 'none' );
+
+			// For IE, it must have something inside, otherwise it may be
+			// removed during DOM operations.
+			startNode.setHtml( '&nbsp;' );
+
+			if ( serializable )
+			{
+				baseId = 'cke_bm_' + CKEDITOR.tools.getNextNumber();
+				startNode.setAttribute( 'id', baseId + 'S' );
+			}
+
+			// If collapsed, the endNode will not be created.
+			if ( !this.collapsed )
+			{
+				endNode = startNode.clone();
+				endNode.setHtml( '&nbsp;' );
+
+				if ( serializable )
+					endNode.setAttribute( 'id', baseId + 'E' );
+
+				clone = this.clone();
+				clone.collapse();
+				clone.insertNode( endNode );
+			}
+
+			clone = this.clone();
+			clone.collapse( true );
+			clone.insertNode( startNode );
+
+			// Update the range position.
+			if ( endNode )
+			{
+				this.setStartAfter( startNode );
+				this.setEndBefore( endNode );
+			}
+			else
+				this.moveToPosition( startNode, CKEDITOR.POSITION_AFTER_END );
+
+			return {
+				startNode : serializable ? baseId + 'S' : startNode,
+				endNode : serializable ? baseId + 'E' : endNode,
+				serializable : serializable
+			};
+		},
+
+		/**
+		 * Creates a "non intrusive" and "mutation sensible" bookmark. This
+		 * kind of bookmark should be used only when the DOM is supposed to
+		 * remain stable after its creation.
+		 * @param {Boolean} [normalized] Indicates that the bookmark must
+		 *		normalized. When normalized, the successive text nodes are
+		 *		considered a single node. To sucessful load a normalized
+		 *		bookmark, the DOM tree must be also normalized before calling
+		 *		moveToBookmark.
+		 * @returns {Object} An object representing the bookmark.
+		 */
+		createBookmark2 : function( normalized )
+		{
+			var startContainer	= this.startContainer,
+				endContainer	= this.endContainer;
+
+			var startOffset	= this.startOffset,
+				endOffset	= this.endOffset;
+
+			var child, previous;
+
+			// If there is no range then get out of here.
+			// It happens on initial load in Safari #962 and if the editor it's
+			// hidden also in Firefox
+			if ( !startContainer || !endContainer )
+				return { start : 0, end : 0 };
+
+			if ( normalized )
+			{
+				// Find out if the start is pointing to a text node that will
+				// be normalized.
+				if ( startContainer.type == CKEDITOR.NODE_ELEMENT )
+				{
+					child = startContainer.getChild( startOffset );
+
+					// In this case, move the start information to that text
+					// node.
+					if ( child && child.type == CKEDITOR.NODE_TEXT
+							&& startOffset > 0 && child.getPrevious().type == CKEDITOR.NODE_TEXT )
+					{
+						startContainer = child;
+						startOffset = 0;
+					}
+				}
+
+				// Normalize the start.
+				while ( startContainer.type == CKEDITOR.NODE_TEXT
+						&& ( previous = startContainer.getPrevious() )
+						&& previous.type == CKEDITOR.NODE_TEXT )
+				{
+					startContainer = previous;
+					startOffset += previous.getLength();
+				}
+
+				// Process the end only if not normalized.
+				if ( !this.isCollapsed )
+				{
+					// Find out if the start is pointing to a text node that
+					// will be normalized.
+					if ( endContainer.type == CKEDITOR.NODE_ELEMENT )
+					{
+						child = endContainer.getChild( endOffset );
+
+						// In this case, move the start information to that
+						// text node.
+						if ( child && child.type == CKEDITOR.NODE_TEXT
+								&& endOffset > 0 && child.getPrevious().type == CKEDITOR.NODE_TEXT )
+						{
+							endContainer = child;
+							endOffset = 0;
+						}
+					}
+
+					// Normalize the end.
+					while ( endContainer.type == CKEDITOR.NODE_TEXT
+							&& ( previous = endContainer.getPrevious() )
+							&& previous.type == CKEDITOR.NODE_TEXT )
+					{
+						endContainer = previous;
+						endOffset += previous.getLength();
+					}
+				}
+			}
+
+			return {
+				start		: startContainer.getAddress( normalized ),
+				end			: this.isCollapsed ? null : endContainer.getAddress( normalized ),
+				startOffset	: startOffset,
+				endOffset	: endOffset,
+				normalized	: normalized,
+				is2			: true		// It's a createBookmark2 bookmark.
+			};
+		},
+
+		moveToBookmark : function( bookmark )
+		{
+			if ( bookmark.is2 )		// Created with createBookmark2().
+			{
+				// Get the start information.
+				var startContainer	= this.document.getByAddress( bookmark.start, bookmark.normalized ),
+					startOffset	= bookmark.startOffset;
+
+				// Get the end information.
+				var endContainer	= bookmark.end && this.document.getByAddress( bookmark.end, bookmark.normalized ),
+					endOffset	= bookmark.endOffset;
+
+				// Set the start boundary.
+				this.setStart( startContainer, startOffset );
+
+				// Set the end boundary. If not available, collapse it.
+				if ( endContainer )
+					this.setEnd( endContainer, endOffset );
+				else
+					this.collapse( true );
+			}
+			else					// Created with createBookmark().
+			{
+				var serializable = bookmark.serializable,
+					startNode	= serializable ? this.document.getById( bookmark.startNode ) : bookmark.startNode,
+					endNode		= serializable ? this.document.getById( bookmark.endNode ) : bookmark.endNode;
+
+				// Set the range start at the bookmark start node position.
+				this.setStartBefore( startNode );
+
+				// Remove it, because it may interfere in the setEndBefore call.
+				startNode.remove();
+
+				// Set the range end at the bookmark end node position, or simply
+				// collapse it if it is not available.
+				if ( endNode )
+				{
+					this.setEndBefore( endNode );
+					endNode.remove();
+				}
+				else
+					this.collapse( true );
+			}
+		},
+
+		getBoundaryNodes : function()
+		{
+			var startNode = this.startContainer,
+				endNode = this.endContainer,
+				startOffset = this.startOffset,
+				endOffset = this.endOffset,
+				childCount;
+
+			if ( startNode.type == CKEDITOR.NODE_ELEMENT )
+			{
+				childCount = startNode.getChildCount();
+				if ( childCount > startOffset )
+					startNode = startNode.getChild( startOffset );
+				else if ( childCount < 1 )
+					startNode = startNode.getPreviousSourceNode();
+				else		// startOffset > childCount but childCount is not 0
+				{
+					// Try to take the node just after the current position.
+					startNode = startNode.$;
+					while ( startNode.lastChild )
+						startNode = startNode.lastChild;
+					startNode = new CKEDITOR.dom.node( startNode );
+
+					// Normally we should take the next node in DFS order. But it
+					// is also possible that we've already reached the end of
+					// document.
+					startNode = startNode.getNextSourceNode() || startNode;
+				}
+			}
+			if ( endNode.type == CKEDITOR.NODE_ELEMENT )
+			{
+				childCount = endNode.getChildCount();
+				if ( childCount > endOffset )
+					endNode = endNode.getChild( endOffset ).getPreviousSourceNode( true );
+				else if ( childCount < 1 )
+					endNode = endNode.getPreviousSourceNode();
+				else		// endOffset > childCount but childCount is not 0
+				{
+					// Try to take the node just before the current position.
+					endNode = endNode.$;
+					while ( endNode.lastChild )
+						endNode = endNode.lastChild;
+					endNode = new CKEDITOR.dom.node( endNode );
+				}
+			}
+
+			// Sometimes the endNode will come right before startNode for collapsed
+			// ranges. Fix it. (#3780)
+			if ( startNode.getPosition( endNode ) & CKEDITOR.POSITION_FOLLOWING )
+				startNode = endNode;
+
+			return { startNode : startNode, endNode : endNode };
+		},
+
+		/**
+		 * Find the node which fully contains the range.
+		 * @param includeSelf
+		 * @param {Boolean} ignoreTextNode Whether ignore CKEDITOR.NODE_TEXT type.
+		 */
+		getCommonAncestor : function( includeSelf , ignoreTextNode )
+		{
+			var start = this.startContainer,
+				end = this.endContainer,
+				ancestor;
+
+			if ( start.equals( end ) )
+			{
+				if ( includeSelf
+						&& start.type == CKEDITOR.NODE_ELEMENT
+						&& this.startOffset == this.endOffset - 1 )
+					ancestor = start.getChild( this.startOffset );
+				else
+					ancestor = start;
+			}
+			else
+				ancestor = start.getCommonAncestor( end );
+
+			return ignoreTextNode && !ancestor.is ? ancestor.getParent() : ancestor;
+		},
+
+		/**
+		 * Transforms the startContainer and endContainer properties from text
+		 * nodes to element nodes, whenever possible. This is actually possible
+		 * if either of the boundary containers point to a text node, and its
+		 * offset is set to zero, or after the last char in the node.
+		 */
+		optimize : function()
+		{
+			var container = this.startContainer;
+			var offset = this.startOffset;
+
+			if ( container.type != CKEDITOR.NODE_ELEMENT )
+			{
+				if ( !offset )
+					this.setStartBefore( container );
+				else if ( offset >= container.getLength() )
+					this.setStartAfter( container );
+			}
+
+			container = this.endContainer;
+			offset = this.endOffset;
+
+			if ( container.type != CKEDITOR.NODE_ELEMENT )
+			{
+				if ( !offset )
+					this.setEndBefore( container );
+				else if ( offset >= container.getLength() )
+					this.setEndAfter( container );
+			}
+		},
+
+		/**
+		 * Move the range out of bookmark nodes if they're been the container.
+		 */
+		optimizeBookmark: function()
+		{
+			var startNode = this.startContainer,
+				endNode = this.endContainer;
+
+			if ( startNode.is && startNode.is( 'span' )
+				&& startNode.hasAttribute( '_fck_bookmark' ) )
+				this.setStartAt( startNode, CKEDITOR.POSITION_BEFORE_START );
+			if ( endNode && endNode.is && endNode.is( 'span' )
+				&& endNode.hasAttribute( '_fck_bookmark' ) )
+				this.setEndAt( endNode,  CKEDITOR.POSITION_AFTER_END );
+		},
+
+		trim : function( ignoreStart, ignoreEnd )
+		{
+			var startContainer = this.startContainer,
+				startOffset = this.startOffset,
+				collapsed = this.collapsed;
+			if ( ( !ignoreStart || collapsed )
+				 && startContainer && startContainer.type == CKEDITOR.NODE_TEXT )
+			{
+				// If the offset is zero, we just insert the new node before
+				// the start.
+				if ( !startOffset )
+				{
+					startOffset = startContainer.getIndex();
+					startContainer = startContainer.getParent();
+				}
+				// If the offset is at the end, we'll insert it after the text
+				// node.
+				else if ( startOffset >= startContainer.getLength() )
+				{
+					startOffset = startContainer.getIndex() + 1;
+					startContainer = startContainer.getParent();
+				}
+				// In other case, we split the text node and insert the new
+				// node at the split point.
+				else
+				{
+					var nextText = startContainer.split( startOffset );
+
+					startOffset = startContainer.getIndex() + 1;
+					startContainer = startContainer.getParent();
+					// Check if it is necessary to update the end boundary.
+					if ( !collapsed && this.startContainer.equals( this.endContainer ) )
+						this.setEnd( nextText, this.endOffset - this.startOffset );
+				}
+
+				this.setStart( startContainer, startOffset );
+
+				if ( collapsed )
+					this.collapse( true );
+			}
+
+			var endContainer = this.endContainer;
+			var endOffset = this.endOffset;
+
+			if ( !( ignoreEnd || collapsed )
+				 && endContainer && endContainer.type == CKEDITOR.NODE_TEXT )
+			{
+				// If the offset is zero, we just insert the new node before
+				// the start.
+				if ( !endOffset )
+				{
+					endOffset = endContainer.getIndex();
+					endContainer = endContainer.getParent();
+				}
+				// If the offset is at the end, we'll insert it after the text
+				// node.
+				else if ( endOffset >= endContainer.getLength() )
+				{
+					endOffset = endContainer.getIndex() + 1;
+					endContainer = endContainer.getParent();
+				}
+				// In other case, we split the text node and insert the new
+				// node at the split point.
+				else
+				{
+					endContainer.split( endOffset );
+
+					endOffset = endContainer.getIndex() + 1;
+					endContainer = endContainer.getParent();
+				}
+
+				this.setEnd( endContainer, endOffset );
+			}
+		},
+
+		enlarge : function( unit )
+		{
+			switch ( unit )
+			{
+				case CKEDITOR.ENLARGE_ELEMENT :
+
+					if ( this.collapsed )
+						return;
+
+					// Get the common ancestor.
+					var commonAncestor = this.getCommonAncestor();
+
+					var body = this.document.getBody();
+
+					// For each boundary
+					//		a. Depending on its position, find out the first node to be checked (a sibling) or, if not available, to be enlarge.
+					//		b. Go ahead checking siblings and enlarging the boundary as much as possible until the common ancestor is not reached. After reaching the common ancestor, just save the enlargeable node to be used later.
+
+					var startTop, endTop;
+
+					var enlargeable, sibling, commonReached;
+
+					// Indicates that the node can be added only if whitespace
+					// is available before it.
+					var needsWhiteSpace = false;
+					var isWhiteSpace;
+					var siblingText;
+
+					// Process the start boundary.
+
+					var container = this.startContainer;
+					var offset = this.startOffset;
+
+					if ( container.type == CKEDITOR.NODE_TEXT )
+					{
+						if ( offset )
+						{
+							// Check if there is any non-space text before the
+							// offset. Otherwise, container is null.
+							container = !CKEDITOR.tools.trim( container.substring( 0, offset ) ).length && container;
+
+							// If we found only whitespace in the node, it
+							// means that we'll need more whitespace to be able
+							// to expand. For example, <i> can be expanded in
+							// "A <i> [B]</i>", but not in "A<i> [B]</i>".
+							needsWhiteSpace = !!container;
+						}
+
+						if ( container )
+						{
+							if ( !( sibling = container.getPrevious() ) )
+								enlargeable = container.getParent();
+						}
+					}
+					else
+					{
+						// If we have offset, get the node preceeding it as the
+						// first sibling to be checked.
+						if ( offset )
+							sibling = container.getChild( offset - 1 ) || container.getLast();
+
+						// If there is no sibling, mark the container to be
+						// enlarged.
+						if ( !sibling )
+							enlargeable = container;
+					}
+
+					while ( enlargeable || sibling )
+					{
+						if ( enlargeable && !sibling )
+						{
+							// If we reached the common ancestor, mark the flag
+							// for it.
+							if ( !commonReached && enlargeable.equals( commonAncestor ) )
+								commonReached = true;
+
+							if ( !body.contains( enlargeable ) )
+								break;
+
+							// If we don't need space or this element breaks
+							// the line, then enlarge it.
+							if ( !needsWhiteSpace || enlargeable.getComputedStyle( 'display' ) != 'inline' )
+							{
+								needsWhiteSpace = false;
+
+								// If the common ancestor has been reached,
+								// we'll not enlarge it immediately, but just
+								// mark it to be enlarged later if the end
+								// boundary also enlarges it.
+								if ( commonReached )
+									startTop = enlargeable;
+								else
+									this.setStartBefore( enlargeable );
+							}
+
+							sibling = enlargeable.getPrevious();
+						}
+
+						// Check all sibling nodes preceeding the enlargeable
+						// node. The node wil lbe enlarged only if none of them
+						// blocks it.
+						while ( sibling )
+						{
+							// This flag indicates that this node has
+							// whitespaces at the end.
+							isWhiteSpace = false;
+
+							if ( sibling.type == CKEDITOR.NODE_TEXT )
+							{
+								siblingText = sibling.getText();
+
+								if ( /[^\s\ufeff]/.test( siblingText ) )
+									sibling = null;
+
+								isWhiteSpace = /[\s\ufeff]$/.test( siblingText );
+							}
+							else
+							{
+								// If this is a visible element.
+								// We need to check for the bookmark attribute because IE insists on
+								// rendering the display:none nodes we use for bookmarks. (#3363)
+								if ( sibling.$.offsetWidth > 0 && !sibling.getAttribute( '_fck_bookmark' ) )
+								{
+									// We'll accept it only if we need
+									// whitespace, and this is an inline
+									// element with whitespace only.
+									if ( needsWhiteSpace && CKEDITOR.dtd.$removeEmpty[ sibling.getName() ] )
+									{
+										// It must contains spaces and inline elements only.
+
+										siblingText = sibling.getText();
+
+										if ( !(/[^\s\ufeff]/).test( siblingText ) )	// Spaces + Zero Width No-Break Space (U+FEFF)
+											sibling = null;
+										else
+										{
+											var allChildren = sibling.$.all || sibling.$.getElementsByTagName( '*' );
+											for ( var i = 0, child ; child = allChildren[ i++ ] ; )
+											{
+												if ( !CKEDITOR.dtd.$removeEmpty[ child.nodeName.toLowerCase() ] )
+												{
+													sibling = null;
+													break;
+												}
+											}
+										}
+
+										if ( sibling )
+											isWhiteSpace = !!siblingText.length;
+									}
+									else
+										sibling = null;
+								}
+							}
+
+							// A node with whitespaces has been found.
+							if ( isWhiteSpace )
+							{
+								// Enlarge the last enlargeable node, if we
+								// were waiting for spaces.
+								if ( needsWhiteSpace )
+								{
+									if ( commonReached )
+										startTop = enlargeable;
+									else if ( enlargeable )
+										this.setStartBefore( enlargeable );
+								}
+								else
+									needsWhiteSpace = true;
+							}
+
+							if ( sibling )
+							{
+								var next = sibling.getPrevious();
+
+								if ( !enlargeable && !next )
+								{
+									// Set the sibling as enlargeable, so it's
+									// parent will be get later outside this while.
+									enlargeable = sibling;
+									sibling = null;
+									break;
+								}
+
+								sibling = next;
+							}
+							else
+							{
+								// If sibling has been set to null, then we
+								// need to stop enlarging.
+								enlargeable = null;
+							}
+						}
+
+						if ( enlargeable )
+							enlargeable = enlargeable.getParent();
+					}
+
+					// Process the end boundary. This is basically the same
+					// code used for the start boundary, with small changes to
+					// make it work in the oposite side (to the right). This
+					// makes it difficult to reuse the code here. So, fixes to
+					// the above code are likely to be replicated here.
+
+					container = this.endContainer;
+					offset = this.endOffset;
+
+					// Reset the common variables.
+					enlargeable = sibling = null;
+					commonReached = needsWhiteSpace = false;
+
+					if ( container.type == CKEDITOR.NODE_TEXT )
+					{
+						// Check if there is any non-space text after the
+						// offset. Otherwise, container is null.
+						container = !CKEDITOR.tools.trim( container.substring( offset ) ).length && container;
+
+						// If we found only whitespace in the node, it
+						// means that we'll need more whitespace to be able
+						// to expand. For example, <i> can be expanded in
+						// "A <i> [B]</i>", but not in "A<i> [B]</i>".
+						needsWhiteSpace = !( container && container.getLength() );
+
+						if ( container )
+						{
+							if ( !( sibling = container.getNext() ) )
+								enlargeable = container.getParent();
+						}
+					}
+					else
+					{
+						// Get the node right after the boudary to be checked
+						// first.
+						sibling = container.getChild( offset );
+
+						if ( !sibling )
+							enlargeable = container;
+					}
+
+					while ( enlargeable || sibling )
+					{
+						if ( enlargeable && !sibling )
+						{
+							if ( !commonReached && enlargeable.equals( commonAncestor ) )
+								commonReached = true;
+
+							if ( !body.contains( enlargeable ) )
+								break;
+
+							if ( !needsWhiteSpace || enlargeable.getComputedStyle( 'display' ) != 'inline' )
+							{
+								needsWhiteSpace = false;
+
+								if ( commonReached )
+									endTop = enlargeable;
+								else if ( enlargeable )
+									this.setEndAfter( enlargeable );
+							}
+
+							sibling = enlargeable.getNext();
+						}
+
+						while ( sibling )
+						{
+							isWhiteSpace = false;
+
+							if ( sibling.type == CKEDITOR.NODE_TEXT )
+							{
+								siblingText = sibling.getText();
+
+								if ( /[^\s\ufeff]/.test( siblingText ) )
+									sibling = null;
+
+								isWhiteSpace = /^[\s\ufeff]/.test( siblingText );
+							}
+							else
+							{
+								// If this is a visible element.
+								// We need to check for the bookmark attribute because IE insists on
+								// rendering the display:none nodes we use for bookmarks. (#3363)
+								if ( sibling.$.offsetWidth > 0 && !sibling.getAttribute( '_fck_bookmark' ) )
+								{
+									// We'll accept it only if we need
+									// whitespace, and this is an inline
+									// element with whitespace only.
+									if ( needsWhiteSpace && CKEDITOR.dtd.$removeEmpty[ sibling.getName() ] )
+									{
+										// It must contains spaces and inline elements only.
+
+										siblingText = sibling.getText();
+
+										if ( !(/[^\s\ufeff]/).test( siblingText ) )
+											sibling = null;
+										else
+										{
+											allChildren = sibling.$.all || sibling.$.getElementsByTagName( '*' );
+											for ( i = 0 ; child = allChildren[ i++ ] ; )
+											{
+												if ( !CKEDITOR.dtd.$removeEmpty[ child.nodeName.toLowerCase() ] )
+												{
+													sibling = null;
+													break;
+												}
+											}
+										}
+
+										if ( sibling )
+											isWhiteSpace = !!siblingText.length;
+									}
+									else
+										sibling = null;
+								}
+							}
+
+							if ( isWhiteSpace )
+							{
+								if ( needsWhiteSpace )
+								{
+									if ( commonReached )
+										endTop = enlargeable;
+									else
+										this.setEndAfter( enlargeable );
+								}
+							}
+
+							if ( sibling )
+							{
+								next = sibling.getNext();
+
+								if ( !enlargeable && !next )
+								{
+									enlargeable = sibling;
+									sibling = null;
+									break;
+								}
+
+								sibling = next;
+							}
+							else
+							{
+								// If sibling has been set to null, then we
+								// need to stop enlarging.
+								enlargeable = null;
+							}
+						}
+
+						if ( enlargeable )
+							enlargeable = enlargeable.getParent();
+					}
+
+					// If the common ancestor can be enlarged by both boundaries, then include it also.
+					if ( startTop && endTop )
+					{
+						commonAncestor = startTop.contains( endTop ) ? endTop : startTop;
+
+						this.setStartBefore( commonAncestor );
+						this.setEndAfter( commonAncestor );
+					}
+					break;
+
+				case CKEDITOR.ENLARGE_BLOCK_CONTENTS:
+				case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:
+
+					// Enlarging the start boundary.
+					var walkerRange = new CKEDITOR.dom.range( this.document );
+
+					body = this.document.getBody();
+
+					walkerRange.setStartAt( body, CKEDITOR.POSITION_AFTER_START );
+					walkerRange.setEnd( this.startContainer, this.startOffset );
+
+					var walker = new CKEDITOR.dom.walker( walkerRange ),
+					    blockBoundary,  // The node on which the enlarging should stop.
+						tailBr, //
+					    defaultGuard = CKEDITOR.dom.walker.blockBoundary(
+								( unit == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ) ? { br : 1 } : null ),
+						// Record the encountered 'blockBoundary' for later use.
+						boundaryGuard = function( node )
+						{
+							var retval = defaultGuard( node );
+							if ( !retval )
+								blockBoundary = node;
+							return retval;
+						},
+						// Record the encounted 'tailBr' for later use.
+						tailBrGuard = function( node )
+						{
+							var retval = boundaryGuard( node );
+							if ( !retval && node.is && node.is( 'br' ) )
+								tailBr = node;
+							return retval;
+						};
+
+					walker.guard = boundaryGuard;
+
+					enlargeable = walker.lastBackward();
+
+					// It's the body which stop the enlarging if no block boundary found.
+					blockBoundary = blockBoundary || body;
+
+					// Start the range at different position by comparing
+					// the document position of it with 'enlargeable' node.
+					this.setStartAt(
+							blockBoundary,
+							!blockBoundary.is( 'br' ) &&
+							( !enlargeable || blockBoundary.contains( enlargeable ) ) ?
+								CKEDITOR.POSITION_AFTER_START :
+								CKEDITOR.POSITION_AFTER_END );
+
+					// Enlarging the end boundary.
+					walkerRange = this.clone();
+					walkerRange.collapse();
+					walkerRange.setEndAt( body, CKEDITOR.POSITION_BEFORE_END );
+					walker = new CKEDITOR.dom.walker( walkerRange );
+
+					// tailBrGuard only used for on range end.
+					walker.guard = ( unit == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ) ?
+						tailBrGuard : boundaryGuard;
+					blockBoundary = null;
+					// End the range right before the block boundary node.
+
+					enlargeable = walker.lastForward();
+
+					// It's the body which stop the enlarging if no block boundary found.
+					blockBoundary = blockBoundary || body;
+
+					// Start the range at different position by comparing
+					// the document position of it with 'enlargeable' node.
+					this.setEndAt(
+							blockBoundary,
+							!blockBoundary.is( 'br' ) &&
+							( !enlargeable || blockBoundary.contains( enlargeable ) ) ?
+								CKEDITOR.POSITION_BEFORE_END :
+								CKEDITOR.POSITION_BEFORE_START );
+					// We must include the <br> at the end of range if there's
+					// one and we're expanding list item contents
+					if ( tailBr )
+						this.setEndAfter( tailBr );
+			}
+		},
+
+		/**
+		 * Inserts a node at the start of the range. The range will be expanded
+		 * the contain the node.
+		 */
+		insertNode : function( node )
+		{
+			this.optimizeBookmark();
+			this.trim( false, true );
+
+			var startContainer = this.startContainer;
+			var startOffset = this.startOffset;
+
+			var nextNode = startContainer.getChild( startOffset );
+
+			if ( nextNode )
+				node.insertBefore( nextNode );
+			else
+				startContainer.append( node );
+
+			// Check if we need to update the end boundary.
+			if ( node.getParent().equals( this.endContainer ) )
+				this.endOffset++;
+
+			// Expand the range to embrace the new node.
+			this.setStartBefore( node );
+		},
+
+		moveToPosition : function( node, position )
+		{
+			this.setStartAt( node, position );
+			this.collapse( true );
+		},
+
+		selectNodeContents : function( node )
+		{
+			this.setStart( node, 0 );
+			this.setEnd( node, node.type == CKEDITOR.NODE_TEXT ? node.getLength() : node.getChildCount() );
+		},
+
+		/**
+		 * Sets the start position of a Range.
+		 * @param {CKEDITOR.dom.node} startNode The node to start the range.
+		 * @param {Number} startOffset An integer greater than or equal to zero
+		 *		representing the offset for the start of the range from the start
+		 *		of startNode.
+		 */
+		setStart : function( startNode, startOffset )
+		{
+			// W3C requires a check for the new position. If it is after the end
+			// boundary, the range should be collapsed to the new start. It seams
+			// we will not need this check for our use of this class so we can
+			// ignore it for now.
+
+			this.startContainer	= startNode;
+			this.startOffset	= startOffset;
+
+			if ( !this.endContainer )
+			{
+				this.endContainer	= startNode;
+				this.endOffset		= startOffset;
+			}
+
+			updateCollapsed( this );
+		},
+
+		/**
+		 * Sets the end position of a Range.
+		 * @param {CKEDITOR.dom.node} endNode The node to end the range.
+		 * @param {Number} endOffset An integer greater than or equal to zero
+		 *		representing the offset for the end of the range from the start
+		 *		of endNode.
+		 */
+		setEnd : function( endNode, endOffset )
+		{
+			// W3C requires a check for the new position. If it is before the start
+			// boundary, the range should be collapsed to the new end. It seams we
+			// will not need this check for our use of this class so we can ignore
+			// it for now.
+
+			this.endContainer	= endNode;
+			this.endOffset		= endOffset;
+
+			if ( !this.startContainer )
+			{
+				this.startContainer	= endNode;
+				this.startOffset	= endOffset;
+			}
+
+			updateCollapsed( this );
+		},
+
+		setStartAfter : function( node )
+		{
+			this.setStart( node.getParent(), node.getIndex() + 1 );
+		},
+
+		setStartBefore : function( node )
+		{
+			this.setStart( node.getParent(), node.getIndex() );
+		},
+
+		setEndAfter : function( node )
+		{
+			this.setEnd( node.getParent(), node.getIndex() + 1 );
+		},
+
+		setEndBefore : function( node )
+		{
+			this.setEnd( node.getParent(), node.getIndex() );
+		},
+
+		setStartAt : function( node, position )
+		{
+			switch( position )
+			{
+				case CKEDITOR.POSITION_AFTER_START :
+					this.setStart( node, 0 );
+					break;
+
+				case CKEDITOR.POSITION_BEFORE_END :
+					if ( node.type == CKEDITOR.NODE_TEXT )
+						this.setStart( node, node.getLength() );
+					else
+						this.setStart( node, node.getChildCount() );
+					break;
+
+				case CKEDITOR.POSITION_BEFORE_START :
+					this.setStartBefore( node );
+					break;
+
+				case CKEDITOR.POSITION_AFTER_END :
+					this.setStartAfter( node );
+			}
+
+			updateCollapsed( this );
+		},
+
+		setEndAt : function( node, position )
+		{
+			switch( position )
+			{
+				case CKEDITOR.POSITION_AFTER_START :
+					this.setEnd( node, 0 );
+					break;
+
+				case CKEDITOR.POSITION_BEFORE_END :
+					if ( node.type == CKEDITOR.NODE_TEXT )
+						this.setEnd( node, node.getLength() );
+					else
+						this.setEnd( node, node.getChildCount() );
+					break;
+
+				case CKEDITOR.POSITION_BEFORE_START :
+					this.setEndBefore( node );
+					break;
+
+				case CKEDITOR.POSITION_AFTER_END :
+					this.setEndAfter( node );
+			}
+
+			updateCollapsed( this );
+		},
+
+		fixBlock : function( isStart, blockTag )
+		{
+			var bookmark = this.createBookmark(),
+				fixedBlock = this.document.createElement( blockTag );
+
+			this.collapse( isStart );
+
+			this.enlarge( CKEDITOR.ENLARGE_BLOCK_CONTENTS );
+
+			this.extractContents().appendTo( fixedBlock );
+			fixedBlock.trim();
+
+			if ( !CKEDITOR.env.ie )
+				fixedBlock.appendBogus();
+
+			this.insertNode( fixedBlock );
+
+			this.moveToBookmark( bookmark );
+
+			return fixedBlock;
+		},
+
+		splitBlock : function( blockTag )
+		{
+			var startPath	= new CKEDITOR.dom.elementPath( this.startContainer ),
+				endPath		= new CKEDITOR.dom.elementPath( this.endContainer );
+
+			var startBlockLimit	= startPath.blockLimit,
+				endBlockLimit	= endPath.blockLimit;
+
+			var startBlock	= startPath.block,
+				endBlock	= endPath.block;
+
+			var elementPath = null;
+			// Do nothing if the boundaries are in different block limits.
+			if ( !startBlockLimit.equals( endBlockLimit ) )
+				return null;
+
+			// Get or fix current blocks.
+			if ( blockTag != 'br' )
+			{
+				if ( !startBlock )
+				{
+					startBlock = this.fixBlock( true, blockTag );
+					endBlock = new CKEDITOR.dom.elementPath( this.endContainer ).block;
+				}
+
+				if ( !endBlock )
+					endBlock = this.fixBlock( false, blockTag );
+			}
+
+			// Get the range position.
+			var isStartOfBlock = startBlock && this.checkStartOfBlock(),
+				isEndOfBlock = endBlock && this.checkEndOfBlock();
+
+			// Delete the current contents.
+			// TODO: Why is 2.x doing CheckIsEmpty()?
+			this.deleteContents();
+
+			if ( startBlock && startBlock.equals( endBlock ) )
+			{
+				if ( isEndOfBlock )
+				{
+					elementPath = new CKEDITOR.dom.elementPath( this.startContainer );
+					this.moveToPosition( endBlock, CKEDITOR.POSITION_AFTER_END );
+					endBlock = null;
+				}
+				else if ( isStartOfBlock )
+				{
+					elementPath = new CKEDITOR.dom.elementPath( this.startContainer );
+					this.moveToPosition( startBlock, CKEDITOR.POSITION_BEFORE_START );
+					startBlock = null;
+				}
+				else
+				{
+					// Extract the contents of the block from the selection point to the end
+					// of its contents.
+					this.setEndAt( startBlock, CKEDITOR.POSITION_BEFORE_END );
+					var documentFragment = this.extractContents();
+
+					// Duplicate the block element after it.
+					endBlock = startBlock.clone( false );
+
+					// Place the extracted contents into the duplicated block.
+					documentFragment.appendTo( endBlock );
+					endBlock.insertAfter( startBlock );
+					this.moveToPosition( startBlock, CKEDITOR.POSITION_AFTER_END );
+
+					// In Gecko, the last child node must be a bogus <br>.
+					// Note: bogus <br> added under <ul> or <ol> would cause
+					// lists to be incorrectly rendered.
+					if ( !CKEDITOR.env.ie && !startBlock.is( 'ul', 'ol') )
+						startBlock.appendBogus() ;
+				}
+			}
+
+			return {
+				previousBlock : startBlock,
+				nextBlock : endBlock,
+				wasStartOfBlock : isStartOfBlock,
+				wasEndOfBlock : isEndOfBlock,
+				elementPath : elementPath
+			};
+		},
+
+		/**
+		 * Check whether current range is on the inner edge of the specified element.
+		 * @param {Number} checkType ( CKEDITOR.START | CKEDITOR.END ) The checking side.
+		 * @param {CKEDITOR.dom.element} element The target element to check.
+		 */
+		checkBoundaryOfElement : function( element, checkType )
+		{
+			var walkerRange = this.clone();
+			// Expand the range to element boundary.
+			walkerRange[ checkType == CKEDITOR.START ?
+			 'setStartAt' : 'setEndAt' ]
+			 ( element, checkType == CKEDITOR.START ?
+			   CKEDITOR.POSITION_AFTER_START
+			   : CKEDITOR.POSITION_BEFORE_END );
+
+			var walker = new CKEDITOR.dom.walker( walkerRange ),
+			 retval = false;
+			walker.evaluator = elementBoundaryEval;
+			return walker[ checkType == CKEDITOR.START ?
+				'checkBackward' : 'checkForward' ]();
+		},
+		// Calls to this function may produce changes to the DOM. The range may
+		// be updated to reflect such changes.
+		checkStartOfBlock : function()
+		{
+			var startContainer = this.startContainer,
+				startOffset = this.startOffset;
+
+			// If the starting node is a text node, and non-empty before the offset,
+			// then we're surely not at the start of block.
+			if ( startOffset && startContainer.type == CKEDITOR.NODE_TEXT )
+			{
+				var textBefore = CKEDITOR.tools.ltrim( startContainer.substring( 0, startOffset ) );
+				if ( textBefore.length )
+					return false;
+			}
+
+			// Antecipate the trim() call here, so the walker will not make
+			// changes to the DOM, which would not get reflected into this
+			// range otherwise.
+			this.trim();
+
+			// We need to grab the block element holding the start boundary, so
+			// let's use an element path for it.
+			var path = new CKEDITOR.dom.elementPath( this.startContainer );
+
+			// Creates a range starting at the block start until the range start.
+			var walkerRange = this.clone();
+			walkerRange.collapse( true );
+			walkerRange.setStartAt( path.block || path.blockLimit, CKEDITOR.POSITION_AFTER_START );
+
+			var walker = new CKEDITOR.dom.walker( walkerRange );
+			walker.evaluator = getCheckStartEndBlockEvalFunction( true );
+
+			return walker.checkBackward();
+		},
+
+		checkEndOfBlock : function()
+		{
+			var endContainer = this.endContainer,
+				endOffset = this.endOffset;
+
+			// If the ending node is a text node, and non-empty after the offset,
+			// then we're surely not at the end of block.
+			if ( endContainer.type == CKEDITOR.NODE_TEXT )
+			{
+				var textAfter = CKEDITOR.tools.rtrim( endContainer.substring( endOffset ) );
+				if ( textAfter.length )
+					return false;
+			}
+
+			// Antecipate the trim() call here, so the walker will not make
+			// changes to the DOM, which would not get reflected into this
+			// range otherwise.
+			this.trim();
+
+			// We need to grab the block element holding the start boundary, so
+			// let's use an element path for it.
+			var path = new CKEDITOR.dom.elementPath( this.endContainer );
+
+			// Creates a range starting at the block start until the range start.
+			var walkerRange = this.clone();
+			walkerRange.collapse( false );
+			walkerRange.setEndAt( path.block || path.blockLimit, CKEDITOR.POSITION_BEFORE_END );
+
+			var walker = new CKEDITOR.dom.walker( walkerRange );
+			walker.evaluator = getCheckStartEndBlockEvalFunction( false );
+
+			return walker.checkForward();
+		},
+
+		/**
+		 * Moves the range boundaries to the first editing point inside an
+		 * element. For example, in an element tree like
+		 * "&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt; Text&lt;/p&gt;", the start editing point is
+		 * "&lt;p&gt;&lt;b&gt;&lt;i&gt;^&lt;/i&gt;&lt;/b&gt; Text&lt;/p&gt;" (inside &lt;i&gt;).
+		 * @param {CKEDITOR.dom.element} targetElement The element into which
+		 *		look for the editing spot.
+		 */
+		moveToElementEditStart : function( targetElement )
+		{
+			var editableElement;
+
+			while ( targetElement && targetElement.type == CKEDITOR.NODE_ELEMENT )
+			{
+				if ( targetElement.isEditable() )
+					editableElement = targetElement;
+				else if ( editableElement )
+					break ;		// If we already found an editable element, stop the loop.
+
+				targetElement = targetElement.getFirst();
+			}
+
+			if ( editableElement )
+			{
+				this.moveToPosition(editableElement, CKEDITOR.POSITION_AFTER_START);
+				return true;
+			}
+			else
+				return false;
+		},
+
+		/**
+		 * Get the single node enclosed within the range if there's one.
+		 */
+		getEnclosedNode : function()
+		{
+			var walkerRange = this.clone(),
+				walker = new CKEDITOR.dom.walker( walkerRange ),
+				isNotBookmarks = CKEDITOR.dom.walker.bookmark( true ),
+				isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( true ),
+				evaluator = function( node )
+				{
+					return isNotWhitespaces( node ) && isNotBookmarks( node );
+				};
+			walkerRange.evaluator = evaluator;
+			var node = walker.next();
+			walker.reset();
+			return node && node.equals( walker.previous() ) ? node : null;
+		},
+
+		getTouchedStartNode : function()
+		{
+			var container = this.startContainer ;
+
+			if ( this.collapsed || container.type != CKEDITOR.NODE_ELEMENT )
+				return container ;
+
+			return container.getChild( this.startOffset ) || container ;
+		},
+
+		getTouchedEndNode : function()
+		{
+			var container = this.endContainer ;
+
+			if ( this.collapsed || container.type != CKEDITOR.NODE_ELEMENT )
+				return container ;
+
+			return container.getChild( this.endOffset - 1 ) || container ;
+		}
+	};
+})();
+
+CKEDITOR.POSITION_AFTER_START	= 1;	// <element>^contents</element>		"^text"
+CKEDITOR.POSITION_BEFORE_END	= 2;	// <element>contents^</element>		"text^"
+CKEDITOR.POSITION_BEFORE_START	= 3;	// ^<element>contents</element>		^"text"
+CKEDITOR.POSITION_AFTER_END		= 4;	// <element>contents</element>^		"text"
+
+CKEDITOR.ENLARGE_ELEMENT = 1;
+CKEDITOR.ENLARGE_BLOCK_CONTENTS = 2;
+CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS = 3;
+
+/**
+ * Check boundary types.
+ * @see CKEDITOR.dom.range::checkBoundaryOfElement
+ */
+CKEDITOR.START = 1;
+CKEDITOR.END = 2;
+CKEDITOR.STARTEND = 3;
Index: /trunk/filemanager/tp/ckeditor/_source/core/dom/document.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dom/document.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dom/document.js	(revision 2000)
@@ -0,0 +1,210 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.dom.document} class, which
+ *		represents a DOM document.
+ */
+
+/**
+ * Represents a DOM document.
+ * @constructor
+ * @augments CKEDITOR.dom.domObject
+ * @param {Object} domDocument A native DOM document.
+ * @example
+ * var document = new CKEDITOR.dom.document( document );
+ */
+CKEDITOR.dom.document = function( domDocument )
+{
+	CKEDITOR.dom.domObject.call( this, domDocument );
+};
+
+// PACKAGER_RENAME( CKEDITOR.dom.document )
+
+CKEDITOR.dom.document.prototype = new CKEDITOR.dom.domObject();
+
+CKEDITOR.tools.extend( CKEDITOR.dom.document.prototype,
+	/** @lends CKEDITOR.dom.document.prototype */
+	{
+		/**
+		 * Appends a CSS file to the document.
+		 * @param {String} cssFileUrl The CSS file URL.
+		 * @example
+		 * <b>CKEDITOR.document.appendStyleSheet( '/mystyles.css' )</b>;
+		 */
+		appendStyleSheet : function( cssFileUrl )
+		{
+			if ( this.$.createStyleSheet )
+				this.$.createStyleSheet( cssFileUrl );
+			else
+			{
+				var link = new CKEDITOR.dom.element( 'link' );
+				link.setAttributes(
+					{
+						rel		:'stylesheet',
+						type	: 'text/css',
+						href	: cssFileUrl
+					});
+
+				this.getHead().append( link );
+			}
+		},
+
+		createElement : function( name, attribsAndStyles )
+		{
+			var element = new CKEDITOR.dom.element( name, this );
+
+			if ( attribsAndStyles )
+			{
+				if ( attribsAndStyles.attributes )
+					element.setAttributes( attribsAndStyles.attributes );
+
+				if ( attribsAndStyles.styles )
+					element.setStyles( attribsAndStyles.styles );
+			}
+
+			return element;
+		},
+
+		createText : function( text )
+		{
+			return new CKEDITOR.dom.text( text, this );
+		},
+
+		focus : function()
+		{
+			this.getWindow().focus();
+		},
+
+		/**
+		 * Gets and element based on its id.
+		 * @param {String} elementId The element id.
+		 * @returns {CKEDITOR.dom.element} The element instance, or null if not found.
+		 * @example
+		 * var element = <b>CKEDITOR.document.getById( 'myElement' )</b>;
+		 * alert( element.getId() );  // "myElement"
+		 */
+		getById : function( elementId )
+		{
+			var $ = this.$.getElementById( elementId );
+			return $ ? new CKEDITOR.dom.element( $ ) : null;
+		},
+
+		getByAddress : function( address, normalized )
+		{
+			var $ = this.$.documentElement;
+
+			for ( var i = 0 ; $ && i < address.length ; i++ )
+			{
+				var target = address[ i ];
+
+				if ( !normalized )
+				{
+					$ = $.childNodes[ target ];
+					continue;
+				}
+
+				var currentIndex = -1;
+
+				for (var j = 0 ; j < $.childNodes.length ; j++ )
+				{
+					var candidate = $.childNodes[ j ];
+
+					if ( normalized === true &&
+							candidate.nodeType == 3 &&
+							candidate.previousSibling &&
+							candidate.previousSibling.nodeType == 3 )
+					{
+						continue;
+					}
+
+					currentIndex++;
+
+					if ( currentIndex == target )
+					{
+						$ = candidate;
+						break;
+					}
+				}
+			}
+
+			return $ ? new CKEDITOR.dom.node( $ ) : null;
+		},
+
+		getElementsByTag : function( tagName, namespace )
+		{
+			if ( !CKEDITOR.env.ie && namespace )
+				tagName = namespace + ':' + tagName;
+			return new CKEDITOR.dom.nodeList( this.$.getElementsByTagName( tagName ) );
+		},
+
+		/**
+		 * Gets the &lt;head&gt; element for this document.
+		 * @returns {CKEDITOR.dom.element} The &lt;head&gt; element.
+		 * @example
+		 * var element = <b>CKEDITOR.document.getHead()</b>;
+		 * alert( element.getName() );  // "head"
+		 */
+		getHead : function()
+		{
+			var head = this.$.getElementsByTagName( 'head' )[0];
+			head = new CKEDITOR.dom.element( head );
+
+			return (
+			/** @ignore */
+			this.getHead = function()
+				{
+					return head;
+				})();
+		},
+
+		/**
+		 * Gets the &lt;body&gt; element for this document.
+		 * @returns {CKEDITOR.dom.element} The &lt;body&gt; element.
+		 * @example
+		 * var element = <b>CKEDITOR.document.getBody()</b>;
+		 * alert( element.getName() );  // "body"
+		 */
+		getBody : function()
+		{
+			var body = new CKEDITOR.dom.element( this.$.body );
+
+			return (
+			/** @ignore */
+			this.getBody = function()
+				{
+					return body;
+				})();
+		},
+
+		getDocumentElement : function()
+		{
+			var documentElement = new CKEDITOR.dom.element( this.$.documentElement );
+
+			return (
+			/** @ignore */
+			this.getDocumentElement = function()
+				{
+					return documentElement;
+				})();
+		},
+
+		/**
+		 * Gets the window object that holds this document.
+		 * @returns {CKEDITOR.dom.window} The window object.
+		 * @example
+		 */
+		getWindow : function()
+		{
+			var win = new CKEDITOR.dom.window( this.$.parentWindow || this.$.defaultView );
+
+			return (
+			/** @ignore */
+			this.getWindow = function()
+				{
+					return win;
+				})();
+		}
+	});
Index: /trunk/filemanager/tp/ckeditor/_source/core/dom/event.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dom/event.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dom/event.js	(revision 2000)
@@ -0,0 +1,142 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.dom.event} class, which
+ *		represents the a native DOM event object.
+ */
+
+/**
+ * Represents a native DOM event object.
+ * @constructor
+ * @param {Object} domEvent A native DOM event object.
+ * @example
+ */
+CKEDITOR.dom.event = function( domEvent )
+{
+	/**
+	 * The native DOM event object represented by this class instance.
+	 * @type Object
+	 * @example
+	 */
+	this.$ = domEvent;
+};
+
+CKEDITOR.dom.event.prototype =
+{
+	/**
+	 * Gets the key code associated to the event.
+	 * @returns {Number} The key code.
+	 * @example
+	 * alert( event.getKey() );  "65" is "a" has been pressed
+	 */
+	getKey : function()
+	{
+		return this.$.keyCode || this.$.which;
+	},
+
+	/**
+	 * Gets a number represeting the combination of the keys pressed during the
+	 * event. It is the sum with the current key code and the {@link CKEDITOR.CTRL},
+	 * {@link CKEDITOR.SHIFT} and {@link CKEDITOR.ALT} constants.
+	 * @returns {Number} The number representing the keys combination.
+	 * @example
+	 * alert( event.getKeystroke() == 65 );                                   // "a" key
+	 * alert( event.getKeystroke() == CKEDITOR.CTRL + 65 );                   // CTRL + "a" key
+	 * alert( event.getKeystroke() == CKEDITOR.CTRL + CKEDITOR.SHIFT + 65 );  // CTRL + SHIFT + "a" key
+	 */
+	getKeystroke : function()
+	{
+		var keystroke = this.getKey();
+
+		if ( this.$.ctrlKey || this.$.metaKey )
+			keystroke += CKEDITOR.CTRL;
+
+		if ( this.$.shiftKey )
+			keystroke += CKEDITOR.SHIFT;
+
+		if ( this.$.altKey )
+			keystroke += CKEDITOR.ALT;
+
+		return keystroke;
+	},
+
+	/**
+	 * Prevents the original behavior of the event to happen. It can optionally
+	 * stop propagating the event in the event chain.
+	 * @param {Boolean} [stopPropagation] Stop propagating this event in the
+	 *		event chain.
+	 * @example
+	 * var element = CKEDITOR.document.getById( 'myElement' );
+	 * element.on( 'click', function( ev )
+	 *     {
+	 *         // The DOM event object is passed by the "data" property.
+	 *         var domEvent = ev.data;
+	 *         // Prevent the click to chave any effect in the element.
+	 *         domEvent.preventDefault();
+	 *     });
+	 */
+	preventDefault : function( stopPropagation )
+	{
+		var $ = this.$;
+		if ( $.preventDefault )
+			$.preventDefault();
+		else
+			$.returnValue = false;
+
+		if ( stopPropagation )
+			this.stopPropagation();
+	},
+
+	stopPropagation : function()
+	{
+		var $ = this.$;
+		if ( $.stopPropagation )
+			$.stopPropagation();
+		else
+			$.cancelBubble = true;
+	},
+
+	/**
+	 * Returns the DOM node where the event was targeted to.
+	 * @returns {CKEDITOR.dom.node} The target DOM node.
+	 * @example
+	 * var element = CKEDITOR.document.getById( 'myElement' );
+	 * element.on( 'click', function( ev )
+	 *     {
+	 *         // The DOM event object is passed by the "data" property.
+	 *         var domEvent = ev.data;
+	 *         // Add a CSS class to the event target.
+	 *         domEvent.getTarget().addClass( 'clicked' );
+	 *     });
+	 */
+
+	getTarget : function()
+	{
+		var rawNode = this.$.target || this.$.srcElement;
+		return rawNode ? new CKEDITOR.dom.node( rawNode ) : null;
+	}
+};
+
+/**
+ * CTRL key (1000).
+ * @constant
+ * @example
+ */
+CKEDITOR.CTRL = 1000;
+
+/**
+ * SHIFT key (2000).
+ * @constant
+ * @example
+ */
+CKEDITOR.SHIFT = 2000;
+
+/**
+ * ALT key (4000).
+ * @constant
+ * @example
+ */
+CKEDITOR.ALT = 4000;
Index: /trunk/filemanager/tp/ckeditor/_source/core/dom/nodelist.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dom/nodelist.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dom/nodelist.js	(revision 2000)
@@ -0,0 +1,23 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dom.nodeList = function( nativeList )
+{
+	this.$ = nativeList;
+};
+
+CKEDITOR.dom.nodeList.prototype =
+{
+	count : function()
+	{
+		return this.$.length;
+	},
+
+	getItem : function( index )
+	{
+		var $node = this.$[ index ];
+		return $node ? new CKEDITOR.dom.node( $node ) : null;
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/core/dom/documentfragment.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dom/documentfragment.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dom/documentfragment.js	(revision 2000)
@@ -0,0 +1,49 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+/**
+ * DocumentFragment is a "lightweight" or "minimal" Document object. It is
+ * commonly used to extract a portion of a document's tree or to create a new
+ * fragment of a document. Various operations may take DocumentFragment objects
+ * as arguments and results in all the child nodes of the DocumentFragment being
+ * moved to the child list of this node.
+ *
+ * @param {Object} ownerDocument
+ */
+CKEDITOR.dom.documentFragment = function( ownerDocument )
+{
+	ownerDocument = ownerDocument || CKEDITOR.document;
+	this.$ = ownerDocument.$.createDocumentFragment();
+};
+
+CKEDITOR.tools.extend( CKEDITOR.dom.documentFragment.prototype,
+	CKEDITOR.dom.element.prototype,
+	{
+		type : CKEDITOR.NODE_DOCUMENT_FRAGMENT,
+		insertAfterNode : function( node )
+		{
+			node = node.$;
+			node.parentNode.insertBefore( this.$, node.nextSibling );
+		}
+	},
+	true,
+	{
+		'append' : 1,
+		'appendBogus' : 1,
+		'getFirst' : 1,
+		'getLast' : 1,
+		'appendTo' : 1,
+		'moveChildren' : 1,
+		'insertBefore' : 1,
+		'insertAfterNode' : 1,
+		'replace' : 1,
+		'trim' : 1,
+		'type' : 1,
+		'ltrim' : 1,
+		'rtrim' : 1,
+		'getDocument' : 1,
+		'getChildCount' : 1,
+		'getChild' : 1,
+		'getChildren' : 1
+	} );
Index: /trunk/filemanager/tp/ckeditor/_source/core/ckeditor_basic.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/ckeditor_basic.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/ckeditor_basic.js	(revision 2000)
@@ -0,0 +1,241 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Contains the second part of the {@link CKEDITOR} object
+ *		definition, which defines the basic editor features to be available in
+ *		the root ckeditor_basic.js file.
+ */
+
+if ( CKEDITOR.status == 'unloaded' )
+{
+	(function()
+	{
+		CKEDITOR.event.implementOn( CKEDITOR );
+
+		/**
+		 * Forces the full CKEditor core code, in the case only the basic code has been
+		 * loaded (ckeditor_basic.js). This method self-destroys (becomes undefined) in
+		 * the first call or as soon as the full code is available.
+		 * @example
+		 * // Check if the full core code has been loaded and load it.
+		 * if ( CKEDITOR.loadFullCore )
+		 *     <b>CKEDITOR.loadFullCore()</b>;
+		 */
+		CKEDITOR.loadFullCore = function()
+		{
+			// If not the basic code is not ready it, just mark it to be loaded.
+			if ( CKEDITOR.status != 'basic_ready' )
+			{
+				CKEDITOR.loadFullCore._load = true;
+				return;
+			}
+
+			// Destroy this function.
+			delete CKEDITOR.loadFullCore;
+
+			// Append the script to the head.
+			var script = document.createElement( 'script' );
+			script.type = 'text/javascript';
+			script.src = CKEDITOR.basePath + 'ckeditor.js';
+
+			document.getElementsByTagName( 'head' )[0].appendChild( script );
+		};
+
+		/**
+		 * The time to wait (in seconds) to load the full editor code after the
+		 * page load, if the "ckeditor_basic" file is used. If set to zero, the
+		 * editor is loaded on demand, as soon as an instance is created.
+		 *
+		 * This value must be set on the page before the page load completion.
+		 * @type Number
+		 * @default 0 (zero)
+		 * @example
+		 * // Loads the full source after five seconds.
+		 * CKEDITOR.loadFullCoreTimeout = 5;
+		 */
+		CKEDITOR.loadFullCoreTimeout = 0;
+
+		/**
+		 * The class name used to identify &lt;textarea&gt; elements to be replace
+		 * by CKEditor instances.
+		 * @type String
+		 * @default 'ckeditor'
+		 * @example
+		 * <b>CKEDITOR.replaceClass</b> = 'rich_editor';
+		 */
+		CKEDITOR.replaceClass = 'ckeditor';
+
+		/**
+		 * Enables the replacement of all textareas with class name matching
+		 * {@link CKEDITOR.replaceClass}.
+		 * @type Boolean
+		 * @default true
+		 * @example
+		 * // Disable the auto-replace feature.
+		 * <b>CKEDITOR.replaceByClassEnabled</b> = false;
+		 */
+		CKEDITOR.replaceByClassEnabled = true;
+
+		var createInstance = function( elementOrIdOrName, config, creationFunction )
+		{
+			if ( CKEDITOR.env.isCompatible )
+			{
+				// Load the full core.
+				if ( CKEDITOR.loadFullCore )
+					CKEDITOR.loadFullCore();
+
+				var editor = creationFunction( elementOrIdOrName, config );
+				CKEDITOR.add( editor );
+				return editor;
+			}
+
+			return null;
+		};
+
+		/**
+		 * Replaces a &lt;textarea&gt; or a DOM element (DIV) with a CKEditor
+		 * instance. For textareas, the initial value in the editor will be the
+		 * textarea value. For DOM elements, their innerHTML will be used
+		 * instead. We recommend using TEXTAREA and DIV elements only.
+		 * @param {Object|String} elementOrIdOrName The DOM element (textarea), its
+		 *		ID or name.
+		 * @param {Object} [config] The specific configurations to apply to this
+		 *		editor instance. Configurations set here will override global CKEditor
+		 *		settings.
+		 * @returns {CKEDITOR.editor} The editor instance created.
+		 * @example
+		 * &lt;textarea id="myfield" name="myfield"&gt;&lt:/textarea&gt;
+		 * ...
+		 * <b>CKEDITOR.replace( 'myfield' )</b>;
+		 * @example
+		 * var textarea = document.body.appendChild( document.createElement( 'textarea' ) );
+		 * <b>CKEDITOR.replace( textarea )</b>;
+		 */
+		CKEDITOR.replace = function( elementOrIdOrName, config )
+		{
+			return createInstance( elementOrIdOrName, config, CKEDITOR.editor.replace );
+		};
+
+		/**
+		 * Creates a new editor instance inside a specific DOM element.
+		 * @param {Object|String} elementOrId The DOM element or its ID.
+		 * @param {Object} [config] The specific configurations to apply to this
+		 *		editor instance. Configurations set here will override global CKEditor
+		 *		settings.
+		 * @returns {CKEDITOR.editor} The editor instance created.
+		 * @example
+		 * &lt;div id="editorSpace"&gt;&lt:/div&gt;
+		 * ...
+		 * <b>CKEDITOR.appendTo( 'editorSpace' )</b>;
+		 */
+		CKEDITOR.appendTo = function( elementOrId, config )
+		{
+			return createInstance( elementOrId, config, CKEDITOR.editor.appendTo );
+		};
+
+		/**
+		 * @ignore
+		 * Documented at ckeditor.js.
+		 */
+		CKEDITOR.add = function( editor )
+		{
+			// For now, just put the editor in the pending list. It will be
+			// processed as soon as the full code gets loaded.
+			var pending = this._.pending || ( this._.pending = [] );
+			pending.push( editor );
+		};
+
+		/**
+		 * Replace all &lt;textarea&gt; elements available in the document with
+		 * editor instances.
+		 * @example
+		 * // Replace all &lt;textarea&gt; elements in the page.
+		 * CKEDITOR.replaceAll();
+		 * @example
+		 * // Replace all &lt;textarea class="myClassName"&gt; elements in the page.
+		 * CKEDITOR.replaceAll( 'myClassName' );
+		 * @example
+		 * // Selectively replace &lt;textarea&gt; elements, based on custom assertions.
+		 * CKEDITOR.replaceAll( function( textarea, config )
+		 *     {
+		 *         // Custom code to evaluate the replace, returning false
+		 *         // if it must not be done.
+		 *         // It also passes the "config" parameter, so the
+		 *         // developer can customize the instance.
+		 *     } );
+		 */
+		CKEDITOR.replaceAll = function()
+		{
+			var textareas = document.getElementsByTagName( 'textarea' );
+
+			for ( var i = 0 ; i < textareas.length ; i++ )
+			{
+				var config = null;
+				var textarea = textareas[i];
+				var name = textarea.name;
+
+				// The "name" and/or "id" attribute must exist.
+				if ( !textarea.name && !textarea.id )
+					continue;
+
+				if ( typeof arguments[0] == 'string' )
+				{
+					// The textarea class name could be passed as the function
+					// parameter.
+
+					var classRegex = new RegExp( '(?:^| )' + arguments[0] + '(?:$| )' );
+
+					if ( !classRegex.test( textarea.className ) )
+						continue;
+				}
+				else if ( typeof arguments[0] == 'function' )
+				{
+					// An assertion function could be passed as the function parameter.
+					// It must explicitly return "false" to ignore a specific <textarea>.
+					config = {};
+					if ( arguments[0]( textarea, config ) === false )
+						continue;
+				}
+
+				this.replace( textarea, config );
+			}
+		};
+
+		(function()
+		{
+			var onload = function()
+			{
+				var loadFullCore = CKEDITOR.loadFullCore,
+					loadFullCoreTimeout = CKEDITOR.loadFullCoreTimeout;
+
+				// Replace all textareas with the default class name.
+				if ( CKEDITOR.replaceByClassEnabled )
+					CKEDITOR.replaceAll( CKEDITOR.replaceClass );
+
+				CKEDITOR.status = 'basic_ready';
+
+				if ( loadFullCore && loadFullCore._load )
+					loadFullCore();
+				else if ( loadFullCoreTimeout )
+				{
+					setTimeout( function()
+						{
+							if ( CKEDITOR.loadFullCore )
+								CKEDITOR.loadFullCore();
+						}
+						, loadFullCoreTimeout * 1000 );
+				}
+			};
+
+			if ( window.addEventListener )
+				window.addEventListener( 'load', onload, false );
+			else if ( window.attachEvent )
+				window.attachEvent( 'onload', onload );
+		})();
+
+		CKEDITOR.status = 'basic_loaded';
+	})();
+}
Index: /trunk/filemanager/tp/ckeditor/_source/core/config.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/config.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/config.js	(revision 2000)
@@ -0,0 +1,289 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.config} object, which holds the
+ * default configuration settings.
+ */
+
+CKEDITOR.ENTER_P	= 1;
+CKEDITOR.ENTER_BR	= 2;
+CKEDITOR.ENTER_DIV	= 3;
+
+/**
+ * Holds the default configuration settings. Changes to this object are
+ * reflected in all editor instances, if not specificaly specified for those
+ * instances.
+ * @namespace
+ * @example
+ * // All editor created after the following setting will not load custom
+ * // configuration files.
+ * CKEDITOR.config.customConfig = '';
+ */
+CKEDITOR.config =
+{
+	/**
+	 * The URL path for the custom configuration file to be loaded. If not
+	 * overloaded with inline configurations, it defaults to the "config.js"
+	 * file present in the root of the CKEditor installation directory.<br /><br />
+	 *
+	 * CKEditor will recursively load custom configuration files defined inside
+	 * other custom configuration files.
+	 * @type String
+	 * @default '&lt;CKEditor folder&gt;/config.js'
+	 * @example
+	 * // Load a specific configuration file.
+	 * CKEDITOR.replace( 'myfiled', { customConfig : '/myconfig.js' } );
+	 * @example
+	 * // Do not load any custom configuration file.
+	 * CKEDITOR.replace( 'myfiled', { customConfig : '' } );
+	 */
+	customConfig : CKEDITOR.getUrl( 'config.js' ),
+
+	/**
+	 * Whether the replaced element (usually a textarea) is to be updated
+	 * automatically when posting the form containing the editor.
+	 * @type Boolean
+	 * @default true
+	 * @example
+	 * config.autoUpdateElement = true;
+	 */
+	autoUpdateElement : true,
+
+	/**
+	 * The base href URL used to resolve relative and absolute URLs in the
+	 * editor content.
+	 * @type String
+	 * @default '' (empty string)
+	 * @example
+	 * config.baseHref = 'http://www.example.com/path/';
+	 */
+	baseHref : '',
+
+	/**
+	 * The CSS file(s) to be used to apply style to the contents. It should
+	 * reflect the CSS used in the final pages where the contents are to be
+	 * used.
+	 * @type String|Array
+	 * @default '&lt;CKEditor folder&gt;/contents.css'
+	 * @example
+	 * config.contentsCss = '/css/mysitestyles.css';
+	 * config.contentsCss = ['/css/mysitestyles.css', '/css/anotherfile.css'];
+	 */
+	contentsCss : CKEDITOR.basePath + 'contents.css',
+
+	/**
+	 * The writting direction of the language used to write the editor
+	 * contents. Allowed values are 'ltr' for Left-To-Right language (like
+	 * English), or 'rtl' for Right-To-Left languages (like Arabic).
+	 * @default 'ltr'
+	 * @type String
+	 * @example
+	 * config.contentsLangDirection = 'rtl';
+	 */
+	contentsLangDirection : 'ltr',
+
+	/**
+	 * The user interface language localization to use. If empty, the editor
+	 * automatically localize the editor to the user language, if supported,
+	 * otherwise the {@link CKEDITOR.config.defaultLanguage} language is used.
+	 * @default true
+	 * @type Boolean
+	 * @example
+	 * // Load the German interface.
+	 * config.language = 'de';
+	 */
+	language : '',
+
+	/**
+	 * The language to be used if {@link CKEDITOR.config.language} is left empty and it's not
+	 * possible to localize the editor to the user language.
+	 * @default 'en'
+	 * @type String
+	 * @example
+	 * config.defaultLanguage = 'it';
+	 */
+	defaultLanguage : 'en',
+
+	/**
+	 * Sets the behavior for the ENTER key. It also dictates other behaviour
+	 * rules in the editor, like whether the &lt;br&gt; element is to be used
+	 * as a paragraph separator when indenting text.
+	 * The allowed values are the following constants, and their relative
+	 * behavior:
+	 * <ul>
+	 *     <li>{@link CKEDITOR.ENTER_P} (1): new &lt;p&gt; paragraphs are created;</li>
+	 *     <li>{@link CKEDITOR.ENTER_BR} (2): lines are broken with &lt;br&gt; elements;</li>
+	 *     <li>{@link CKEDITOR.ENTER_DIV} (3): new &lt;div&gt; blocks are created.</li>
+	 * </ul>
+	 * <strong>Note</strong>: It's recommended to use the
+	 * {@link CKEDITOR.ENTER_P} value because of its semantic value and
+	 * correctness. The editor is optimized for this value.
+	 * @type Number
+	 * @default {@link CKEDITOR.ENTER_P}
+	 * @example
+	 * // Not recommended.
+	 * config.enterMode = CKEDITOR.ENTER_BR;
+	 */
+	enterMode : CKEDITOR.ENTER_P,
+
+	/**
+	 * Just like the {@link CKEDITOR.config.enterMode} setting, it defines the behavior for the SHIFT+ENTER key.
+	 * The allowed values are the following constants, and their relative
+	 * behavior:
+	 * <ul>
+	 *     <li>{@link CKEDITOR.ENTER_P} (1): new &lt;p&gt; paragraphs are created;</li>
+	 *     <li>{@link CKEDITOR.ENTER_BR} (2): lines are broken with &lt;br&gt; elements;</li>
+	 *     <li>{@link CKEDITOR.ENTER_DIV} (3): new &lt;div&gt; blocks are created.</li>
+	 * </ul>
+	 * @type Number
+	 * @default {@link CKEDITOR.ENTER_BR}
+	 * @example
+	 * config.shiftEnterMode = CKEDITOR.ENTER_P;
+	 */
+	shiftEnterMode : CKEDITOR.ENTER_BR,
+
+	/**
+	 * A comma separated list of plugins that are not related to editor
+	 * instances. Reserved to plugins that extend the core code only.<br /><br />
+	 *
+	 * There are no ways to override this setting, except by editing the source
+	 * code of CKEditor (_source/core/config.js).
+	 * @type String
+	 * @example
+	 */
+	corePlugins : '',
+
+	/**
+	 * Sets the doctype to be used when loading the editor content as HTML.
+	 * @type String
+	 * @default '&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;'
+	 * @example
+	 * // Set the doctype to the HTML 4 (quirks) mode.
+	 * config.docType = '&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;';
+	 */
+	docType : '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
+
+	/**
+	 * Indicates whether the contents to be edited are being inputted as a full
+	 * HTML page. A full page includes the &lt;html&gt;, &lt;head&gt; and
+	 * &lt;body&gt; tags. The final output will also reflect this setting,
+	 * including the &lt;body&gt; contents only if this setting is disabled.
+	 * @type Boolean
+	 * @default false
+	 * @example
+	 * config.fullPage = true;
+	 */
+	fullPage : false,
+
+	/**
+	 * The height of editing area( content ), in relative or absolute, e.g. 30px, 5em.
+	 * Note: Percentage unit is not supported yet. e.g. 30%.
+	 * @type Number|String
+	 * @default '200'
+	 * @example
+	 * config.height = 500;
+	 * config.height = '25em';
+	 * config.height = '300px';
+	 */
+	height : 200,
+
+	/**
+	 * Comma separated list of plugins to load and initialize for an editor
+	 * instance. This should be rarely changed, using instead the
+	 * {@link CKEDITOR.config.extraPlugins} and
+	 * {@link CKEDITOR.config.removePlugins} for customizations.
+	 * @type String
+	 * @example
+	 */
+	plugins : 'about,basicstyles,blockquote,button,clipboard,colorbutton,colordialog,contextmenu,elementspath,enterkey,entities,filebrowser,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,maximize,newpage,pagebreak,pastefromword,pastetext,popup,preview,print,removeformat,resize,save,scayt,smiley,showblocks,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc',
+
+	/**
+	 * List of additional plugins to be loaded. This is a tool setting which
+	 * makes it easier to add new plugins, whithout having to touch and
+	 * possibly breaking the {@link CKEDITOR.config.plugins} setting.
+	 * @type String
+	 * @example
+	 * config.extraPlugins = 'myplugin,anotherplugin';
+	 */
+	extraPlugins : '',
+
+	/**
+	 * List of plugins that must not be loaded. This is a tool setting which
+	 * makes it easier to avoid loading plugins definied in the
+	 * {@link CKEDITOR.config.plugins} setting, whithout having to touch it and
+	 * potentially breaking it.
+	 * @type String
+	 * @example
+	 * config.removePlugins = 'elementspath,save,font';
+	 */
+	removePlugins : '',
+
+	/**
+	 * List of regular expressions to be executed over the input HTML,
+	 * indicating code that must stay untouched.
+	 * @type Array
+	 * @default [] (empty array)
+	 * @example
+	 * config.protectedSource.push( /<\?[\s\S]*?\?>/g );   // PHP Code
+	 * config.protectedSource.push( /<%[\s\S]*?%>/g );   // ASP Code
+	 * config.protectedSource.push( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi );   // ASP.Net Code
+	 */
+	protectedSource : [],
+
+	/**
+	 * The editor tabindex value.
+	 * @type Number
+	 * @default 0 (zero)
+	 * @example
+	 * config.tabIndex = 1;
+	 */
+	tabIndex : 0,
+
+	/**
+	 * The theme to be used to build the UI.
+	 * @type String
+	 * @default 'default'
+	 * @see CKEDITOR.config.skin
+	 * @example
+	 * config.theme = 'default';
+	 */
+	theme : 'default',
+
+	/**
+	 * The skin to load. It may be the name of the skin folder inside the
+	 * editor installation path, or the name and the path separated by a comma.
+	 * @type String
+	 * @default 'default'
+	 * @example
+	 * config.skin = 'v2';
+	 * @example
+	 * config.skin = 'myskin,/customstuff/myskin/';
+	 */
+	skin : 'kama',
+
+	/**
+	 * The editor width in CSS size format or pixel integer.
+	 * @type String|Number
+	 * @default '' (empty)
+	 * @example
+	 * config.width = 850;
+	 * @example
+	 * config.width = '75%';
+	 */
+	width : '',
+
+	/**
+	 * The base Z-index for floating dialogs and popups.
+	 * @type Number
+	 * @default 10000
+	 * @example
+	 * config.baseFloatZIndex = 2000
+	 */
+	baseFloatZIndex : 10000
+
+};
+
+// PACKAGER_RENAME( CKEDITOR.config )
Index: /trunk/filemanager/tp/ckeditor/_source/core/loader.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/loader.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/loader.js	(revision 2000)
@@ -0,0 +1,238 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.loader} objects, which is used to
+ *		load core scripts and their dependencies from _source.
+ */
+
+if ( typeof CKEDITOR == 'undefined' )
+	CKEDITOR = {};
+
+if ( !CKEDITOR.loader )
+{
+	/**
+	 * Load core scripts and their dependencies from _source.
+	 * @namespace
+	 * @example
+	 */
+	CKEDITOR.loader = (function()
+	{
+		// Table of script names and their dependencies.
+		var scripts =
+		{
+			'core/_bootstrap'		: [ 'core/config', 'core/ckeditor', 'core/plugins', 'core/scriptloader', 'core/tools', /* The following are entries that we want to force loading at the end to avoid dependence recursion */ 'core/dom/elementpath', 'core/dom/text', 'core/dom/range' ],
+			'core/ajax'				: [ 'core/xml' ],
+			'core/ckeditor'			: [ 'core/ckeditor_basic', 'core/dom', 'core/dtd', 'core/dom/document', 'core/dom/element', 'core/editor', 'core/event', 'core/htmlparser', 'core/htmlparser/element', 'core/htmlparser/fragment', 'core/htmlparser/filter', 'core/htmlparser/basicwriter', 'core/tools' ],
+			'core/ckeditor_base'	: [],
+			'core/ckeditor_basic'	: [ 'core/editor_basic', 'core/env', 'core/event' ],
+			'core/command'			: [],
+			'core/config'			: [ 'core/ckeditor_base' ],
+			'core/dom'				: [],
+			'core/dom/document'		: [ 'core/dom', 'core/dom/domobject', 'core/dom/window' ],
+			'core/dom/documentfragment'	: [ 'core/dom/element' ],
+			'core/dom/element'		: [ 'core/dom', 'core/dom/document', 'core/dom/domobject', 'core/dom/node', 'core/dom/nodelist', 'core/tools' ],
+			'core/dom/elementpath'	: [ 'core/dom/element' ],
+			'core/dom/event'		: [],
+			'core/dom/node'			: [ 'core/dom/domobject', 'core/tools' ],
+			'core/dom/nodelist'		: [ 'core/dom/node' ],
+			'core/dom/domobject'	: [ 'core/dom/event' ],
+			'core/dom/range'		: [ 'core/dom/document', 'core/dom/documentfragment', 'core/dom/element', 'core/dom/walker' ],
+			'core/dom/text'			: [ 'core/dom/node', 'core/dom/domobject' ],
+			'core/dom/walker'		: [ 'core/dom/node' ],
+			'core/dom/window'		: [ 'core/dom/domobject' ],
+			'core/dtd'				: [ 'core/tools' ],
+			'core/editor'			: [ 'core/command', 'core/config', 'core/editor_basic', 'core/focusmanager', 'core/lang', 'core/plugins', 'core/skins', 'core/themes', 'core/tools', 'core/ui' ],
+			'core/editor_basic'		: [ 'core/event' ],
+			'core/env'				: [],
+			'core/event'			: [],
+			'core/focusmanager'		: [],
+			'core/htmlparser'		: [],
+			'core/htmlparser/comment'	: [ 'core/htmlparser' ],
+			'core/htmlparser/element'	: [ 'core/htmlparser', 'core/htmlparser/fragment' ],
+			'core/htmlparser/fragment'	: [ 'core/htmlparser', 'core/htmlparser/comment', 'core/htmlparser/text', 'core/htmlparser/cdata' ],
+			'core/htmlparser/text'		: [ 'core/htmlparser' ],
+			'core/htmlparser/cdata'		: [ 'core/htmlparser' ],
+			'core/htmlparser/filter'	: [ 'core/htmlparser' ],
+			'core/htmlparser/basicwriter': [ 'core/htmlparser' ],
+			'core/imagecacher'		: [ 'core/dom/element' ],
+			'core/lang'				: [],
+			'core/plugins'			: [ 'core/resourcemanager' ],
+			'core/resourcemanager'	: [ 'core/scriptloader', 'core/tools' ],
+			'core/scriptloader'		: [ 'core/dom/element', 'core/env' ],
+			'core/skins'			: [ 'core/imagecacher', 'core/scriptloader' ],
+			'core/themes'			: [ 'core/resourcemanager' ],
+			'core/tools'			: [ 'core/env' ],
+			'core/ui'				: [],
+			'core/xml'				: [ 'core/env' ]
+		};
+
+		var basePath = (function()
+		{
+			// This is a copy of CKEDITOR.basePath, but requires the script having
+			// "_source/core/loader.js".
+			if ( CKEDITOR && CKEDITOR.basePath )
+				return CKEDITOR.basePath;
+
+			// Find out the editor directory path, based on its <script> tag.
+			var path = '';
+			var scripts = document.getElementsByTagName( 'script' );
+
+			for ( var i = 0 ; i < scripts.length ; i++ )
+			{
+				var match = scripts[i].src.match( /(^|.*[\\\/])core\/loader.js(?:\?.*)?$/i );
+
+				if ( match )
+				{
+					path = match[1];
+					break;
+				}
+			}
+
+			// In IE (only) the script.src string is the raw valued entered in the
+			// HTML. Other browsers return the full resolved URL instead.
+			if ( path.indexOf('://') == -1 )
+			{
+				// Absolute path.
+				if ( path.indexOf( '/' ) === 0 )
+					path = location.href.match( /^.*?:\/\/[^\/]*/ )[0] + path;
+				// Relative path.
+				else
+					path = location.href.match( /^[^\?]*\// )[0] + path;
+			}
+
+			return path;
+		})();
+
+		var timestamp = '99GE';
+
+		var getUrl = function( resource )
+		{
+			if ( CKEDITOR && CKEDITOR.getUrl )
+				return CKEDITOR.getUrl( resource );
+
+			return basePath + resource +
+				( resource.indexOf( '?' ) >= 0 ? '&' : '?' ) +
+				't=' + timestamp;
+		};
+
+		var pendingLoad = [];
+
+		/** @lends CKEDITOR.loader */
+		return {
+			/**
+			 * The list of loaded scripts in their loading order.
+			 * @type Array
+			 * @example
+			 * // Alert the loaded script names.
+			 * alert( <b>CKEDITOR.loader.loadedScripts</b> );
+			 */
+			loadedScripts : [],
+
+			loadPending : function()
+			{
+				var scriptName = pendingLoad.shift();
+
+				if ( !scriptName )
+					return;
+
+				var scriptSrc = getUrl( '_source/' + scriptName + '.js' );
+
+				var script = document.createElement( 'script' );
+				script.type = 'text/javascript';
+				script.src = scriptSrc;
+
+				function onScriptLoaded()
+				{
+					// Append this script to the list of loaded scripts.
+					CKEDITOR.loader.loadedScripts.push( scriptName );
+
+					// Load the next.
+					CKEDITOR.loader.loadPending();
+				}
+
+				// We must guarantee the execution order of the scripts, so we
+				// need to load them one by one. (#4145)
+				// The followin if/else block has been taken from the scriptloader core code.
+				if ( CKEDITOR.env.ie )
+				{
+					/** @ignore */
+					script.onreadystatechange = function()
+					{
+						if ( script.readyState == 'loaded' || script.readyState == 'complete' )
+						{
+							script.onreadystatechange = null;
+							onScriptLoaded();
+						}
+					};
+				}
+				else
+				{
+					/** @ignore */
+					script.onload = function()
+					{
+						// Some browsers, such as Safari, may call the onLoad function
+						// immediately. Which will break the loading sequence. (#3661)
+						setTimeout( function() { onScriptLoaded( scriptName ); }, 0 );
+					};
+				}
+
+				document.body.appendChild( script );
+			},
+
+			/**
+			 * Loads a specific script, including its dependencies. This is not a
+			 * synchronous loading, which means that the code the be loaded will
+			 * not necessarily be available after this call.
+			 * @example
+			 * CKEDITOR.loader.load( 'core/dom/element' );
+			 */
+			load : function( scriptName, defer )
+			{
+				// Check if the script has already been loaded.
+				if ( scriptName in this.loadedScripts )
+					return;
+
+				// Get the script dependencies list.
+				var dependencies = scripts[ scriptName ];
+				if ( !dependencies )
+					throw 'The script name"' + scriptName + '" is not defined.';
+
+				// Mark the script as loaded, even before really loading it, to
+				// avoid cross references recursion.
+				this.loadedScripts[ scriptName ] = true;
+
+				// Load all dependencies first.
+				for ( var i = 0 ; i < dependencies.length ; i++ )
+					this.load( dependencies[ i ], true );
+
+				var scriptSrc = getUrl( '_source/' + scriptName + '.js' );
+
+				// Append the <script> element to the DOM.
+				if ( document.body )
+				{
+					pendingLoad.push( scriptName );
+
+					if ( !defer )
+						this.loadPending();
+				}
+				else
+				{
+					// Append this script to the list of loaded scripts.
+					this.loadedScripts.push( scriptName );
+
+					document.write( '<script src="' + scriptSrc + '" type="text/javascript"><\/script>' );
+				}
+			}
+		};
+	})();
+}
+
+// Check if any script has been defined for autoload.
+if ( CKEDITOR._autoLoad )
+{
+	CKEDITOR.loader.load( CKEDITOR._autoLoad );
+	delete CKEDITOR._autoLoad;
+}
Index: /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/text.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/text.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/text.js	(revision 2000)
@@ -0,0 +1,55 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	var spacesRegex = /[\t\r\n ]{2,}|[\t\r\n]/g;
+
+	/**
+	 * A lightweight representation of HTML text.
+	 * @constructor
+	 * @example
+	 */
+ 	CKEDITOR.htmlParser.text = function( value )
+	{
+		/**
+		 * The text value.
+		 * @type String
+		 * @example
+		 */
+		this.value = value;
+
+		/** @private */
+		this._ =
+		{
+			isBlockLike : false
+		};
+	};
+
+	CKEDITOR.htmlParser.text.prototype =
+	{
+		/**
+		 * The node type. This is a constant value set to {@link CKEDITOR.NODE_TEXT}.
+		 * @type Number
+		 * @example
+		 */
+		type : CKEDITOR.NODE_TEXT,
+
+		/**
+		 * Writes the HTML representation of this text to a CKEDITOR.htmlWriter.
+		 * @param {CKEDITOR.htmlWriter} writer The writer to which write the HTML.
+		 * @example
+		 */
+		writeHtml : function( writer, filter )
+		{
+			var text = this.value;
+
+			if ( filter && !( text = filter.onText( text, this ) ) )
+				return;
+
+			writer.text( text );
+		}
+	};
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/filter.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/filter.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/filter.js	(revision 2000)
@@ -0,0 +1,233 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	CKEDITOR.htmlParser.filter = CKEDITOR.tools.createClass(
+	{
+		$ : function( rules )
+		{
+			this._ =
+			{
+				elementNames : [],
+				attributeNames : [],
+				elements : { $length : 0 },
+				attributes : { $length : 0 }
+			};
+
+			if ( rules )
+				this.addRules( rules, 10 );
+		},
+
+		proto :
+		{
+			addRules : function( rules, priority )
+			{
+				if ( typeof priority != 'number' )
+					priority = 10;
+
+				// Add the elementNames.
+				addItemsToList( this._.elementNames, rules.elementNames, priority );
+
+				// Add the attributeNames.
+				addItemsToList( this._.attributeNames, rules.attributeNames, priority );
+
+				// Add the elements.
+				addNamedItems( this._.elements, rules.elements, priority );
+
+				// Add the attributes.
+				addNamedItems( this._.attributes, rules.attributes, priority );
+
+				// Add the text.
+				this._.text = transformNamedItem( this._.text, rules.text, priority ) || this._.text;
+
+				// Add the comment.
+				this._.comment = transformNamedItem( this._.comment, rules.comment, priority ) || this._.comment;
+			},
+
+			onElementName : function( name )
+			{
+				return filterName( name, this._.elementNames );
+			},
+
+			onAttributeName : function( name )
+			{
+				return filterName( name, this._.attributeNames );
+			},
+
+			onText : function( text )
+			{
+				var textFilter = this._.text;
+				return textFilter ? textFilter.filter( text ) : text;
+			},
+
+			onComment : function( commentText )
+			{
+				var textFilter = this._.comment;
+				return textFilter ? textFilter.filter( commentText ) : commentText;
+			},
+
+			onElement : function( element )
+			{
+				// We must apply filters set to the specific element name as
+				// well as those set to the generic $ name. So, add both to an
+				// array and process them in a small loop.
+				var filters = [ this._.elements[ element.name ], this._.elements.$ ],
+					filter, ret;
+
+				for ( var i = 0 ; i < 2 ; i++ )
+				{
+					filter = filters[ i ];
+					if ( filter )
+					{
+						ret = filter.filter( element, this );
+
+						if ( ret === false )
+							return null;
+
+						if ( ret && ret != element )
+							return this.onElement( ret );
+					}
+				}
+
+				return element;
+			},
+
+			onAttribute : function( element, name, value )
+			{
+				var filter = this._.attributes[ name ];
+
+				if ( filter )
+				{
+					var ret = filter.filter( value, element, this );
+
+					if ( ret === false )
+						return false;
+
+					if ( typeof ret != 'undefined' )
+						return ret;
+				}
+
+				return value;
+			}
+		}
+	});
+
+	function filterName( name, filters )
+	{
+		for ( var i = 0 ; name && i < filters.length ; i++ )
+		{
+			var filter = filters[ i ];
+			name = name.replace( filter[ 0 ], filter[ 1 ] );
+		}
+		return name;
+	}
+
+	function addItemsToList( list, items, priority )
+	{
+		var i, j,
+			listLength = list.length,
+			itemsLength = items && items.length;
+
+		if ( itemsLength )
+		{
+			// Find the index to insert the items at.
+			for ( i = 0 ; i < listLength && list[ i ].pri < priority ; i++ )
+			{ /*jsl:pass*/ }
+
+			// Add all new items to the list at the specific index.
+			for ( j = itemsLength - 1 ; j >= 0 ; j-- )
+			{
+				var item = items[ j ];
+				item.pri = priority;
+				list.splice( i, 0, item );
+			}
+		}
+	}
+
+	function addNamedItems( hashTable, items, priority )
+	{
+		if ( items )
+		{
+			for ( var name in items )
+			{
+				var current = hashTable[ name ];
+
+				hashTable[ name ] =
+					transformNamedItem(
+						current,
+						items[ name ],
+						priority );
+
+				if ( !current )
+					hashTable.$length++;
+			}
+		}
+	}
+
+	function transformNamedItem( current, item, priority )
+	{
+		if ( item )
+		{
+			item.pri = priority;
+
+			if ( current )
+			{
+				// If the current item is not an Array, transform it.
+				if ( !current.splice )
+				{
+					if ( current.pri > priority )
+						current = [ item, current ];
+					else
+						current = [ current, item ];
+
+					current.filter = callItems;
+				}
+				else
+					addItemsToList( current, item, priority );
+
+				return current;
+			}
+			else
+			{
+				item.filter = item;
+				return item;
+			}
+		}
+	}
+
+	function callItems( currentEntry )
+	{
+		var isObject = ( typeof currentEntry == 'object' );
+
+		for ( var i = 0 ; i < this.length ; i++ )
+		{
+			var item = this[ i ],
+				ret = item.apply( window, arguments );
+
+			if ( typeof ret != 'undefined' )
+			{
+				if ( ret === false )
+					return false;
+
+				if ( isObject && ret != currentEntry )
+					return ret;
+			}
+		}
+
+		return null;
+	}
+})();
+
+// "entities" plugin
+/*
+{
+	text : function( text )
+	{
+		// TODO : Process entities.
+		return text.toUpperCase();
+	}
+};
+*/
Index: /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/element.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/element.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/element.js	(revision 2000)
@@ -0,0 +1,196 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * A lightweight representation of an HTML element.
+ * @param {String} name The element name.
+ * @param {Object} attributes And object holding all attributes defined for
+ *		this element.
+ * @constructor
+ * @example
+ */
+CKEDITOR.htmlParser.element = function( name, attributes )
+{
+	/**
+	 * The element name.
+	 * @type String
+	 * @example
+	 */
+	this.name = name;
+
+	/**
+	 * Holds the attributes defined for this element.
+	 * @type Object
+	 * @example
+	 */
+	this.attributes = attributes;
+
+	/**
+	 * The nodes that are direct children of this element.
+	 * @type Array
+	 * @example
+	 */
+	this.children = [];
+
+	var dtd			= CKEDITOR.dtd,
+		isBlockLike	= !!( dtd.$block[ name ] || dtd.$listItem[ name ] || dtd.$tableContent[ name ] ),
+		isEmpty		= !!dtd.$empty[ name ];
+
+	this.isEmpty	= isEmpty;
+	this.isUnknown	= !dtd[ name ];
+
+	/** @private */
+	this._ =
+	{
+		isBlockLike : isBlockLike,
+		hasInlineStarted : isEmpty || !isBlockLike
+	};
+};
+
+(function()
+{
+	// Used to sort attribute entries in an array, where the first element of
+	// each object is the attribute name.
+	var sortAttribs = function( a, b )
+	{
+		a = a[0];
+		b = b[0];
+		return a < b ? -1 : a > b ? 1 : 0;
+	};
+
+	CKEDITOR.htmlParser.element.prototype =
+	{
+		/**
+		 * The node type. This is a constant value set to {@link CKEDITOR.NODE_ELEMENT}.
+		 * @type Number
+		 * @example
+		 */
+		type : CKEDITOR.NODE_ELEMENT,
+
+		/**
+		 * Adds a node to the element children list.
+		 * @param {Object} node The node to be added. It can be any of of the
+		 *		following types: {@link CKEDITOR.htmlParser.element},
+		 *		{@link CKEDITOR.htmlParser.text} and
+		 *		{@link CKEDITOR.htmlParser.comment}.
+		 * @function
+		 * @example
+		 */
+		add : CKEDITOR.htmlParser.fragment.prototype.add,
+
+		/**
+		 * Clone this element.
+		 * @returns {CKEDITOR.htmlParser.element} The element clone.
+		 * @example
+		 */
+		clone : function()
+		{
+			return new CKEDITOR.htmlParser.element( this.name, this.attributes );
+		},
+
+		/**
+		 * Writes the element HTML to a CKEDITOR.htmlWriter.
+		 * @param {CKEDITOR.htmlWriter} writer The writer to which write the HTML.
+		 * @example
+		 */
+		writeHtml : function( writer, filter )
+		{
+			var attributes = this.attributes;
+
+			// The "_cke_replacedata" indicates that this element is replacing
+			// a data snippet, which should be outputted as is.
+			if ( attributes._cke_replacedata )
+			{
+				writer.write( attributes._cke_replacedata );
+				return;
+			}
+
+			// Ignore cke: prefixes when writing HTML.
+			var element = this,
+				writeName = element.name,
+				a, value;
+
+			if ( filter )
+			{
+				while ( true )
+				{
+					if ( !( writeName = filter.onElementName( writeName ) ) )
+						return;
+
+					element.name = writeName;
+
+					if ( !( element = filter.onElement( element ) ) )
+						return;
+
+					if ( element.name == writeName )
+						break;
+
+					writeName = element.name;
+					if ( !writeName )	// Send children.
+					{
+						CKEDITOR.htmlParser.fragment.prototype.writeHtml.apply( element, arguments );
+						return;
+					}
+				}
+
+				// The element may have been changed, so update the local
+				// references.
+				attributes = element.attributes;
+			}
+
+			// Open element tag.
+			writer.openTag( writeName, attributes );
+
+			if ( writer.sortAttributes )
+			{
+				// Copy all attributes to an array.
+				var attribsArray = [];
+				for ( a in attributes )
+				{
+					value = attributes[ a ];
+
+					if ( filter && ( !( a = filter.onAttributeName( a ) ) || ( value = filter.onAttribute( element, a, value ) ) === false ) )
+						continue;
+
+					attribsArray.push( [ a, value ] );
+				}
+
+				// Sort the attributes by name.
+				attribsArray.sort( sortAttribs );
+
+				// Send the attributes.
+				for ( var i = 0, len = attribsArray.length ; i < len ; i++ )
+				{
+					var attrib = attribsArray[ i ];
+					writer.attribute( attrib[0], attrib[1] );
+				}
+			}
+			else
+			{
+				for ( a in attributes )
+				{
+					value = attributes[ a ];
+
+					if ( filter && ( !( a = filter.onAttributeName( a ) ) || ( value = filter.onAttribute( element, a, value ) ) === false ) )
+						continue;
+
+					writer.attribute( a, value );
+				}
+			}
+
+			// Close the tag.
+			writer.openTagClose( writeName, element.isEmpty );
+
+			if ( !element.isEmpty )
+			{
+				// Send children.
+				CKEDITOR.htmlParser.fragment.prototype.writeHtml.apply( element, arguments );
+
+				// Close the element.
+				writer.closeTag( writeName );
+			}
+		}
+	};
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/cdata.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/cdata.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/cdata.js	(revision 2000)
@@ -0,0 +1,44 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+
+	/**
+	 * A lightweight representation of HTML text.
+	 * @constructor
+	 * @example
+	 */
+	CKEDITOR.htmlParser.cdata = function( value )
+	{
+		/**
+		 * The CDATA value.
+		 * @type String
+		 * @example
+		 */
+		this.value = value;
+
+	};
+
+	CKEDITOR.htmlParser.cdata.prototype =
+	{
+		/**
+		 * CDATA has the same type as {@link CKEDITOR.htmlParser.text} This is
+		 * a constant value set to {@link CKEDITOR.NODE_TEXT}.
+		 * @type Number
+		 * @example
+		 */
+		type : CKEDITOR.NODE_TEXT,
+
+		/**
+		 * Writes write the CDATA with no special manipulations.
+		 * @param {CKEDITOR.htmlWriter} writer The writer to which write the HTML.
+		 */
+		writeHtml : function( writer )
+		{
+			writer.write( this.value );
+		}
+	};
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/basicwriter.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/basicwriter.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/basicwriter.js	(revision 2000)
@@ -0,0 +1,140 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.htmlParser.basicWriter = CKEDITOR.tools.createClass(
+{
+	$ : function()
+	{
+		this._ =
+		{
+			output : []
+		};
+	},
+
+	proto :
+	{
+		/**
+		 * Writes the tag opening part for a opener tag.
+		 * @param {String} tagName The element name for this tag.
+		 * @param {Object} attributes The attributes defined for this tag. The
+		 *		attributes could be used to inspect the tag.
+		 * @example
+		 * // Writes "&lt;p".
+		 * writer.openTag( 'p', { class : 'MyClass', id : 'MyId' } );
+		 */
+		openTag : function( tagName, attributes )
+		{
+			this._.output.push( '<', tagName );
+		},
+
+		/**
+		 * Writes the tag closing part for a opener tag.
+		 * @param {String} tagName The element name for this tag.
+		 * @param {Boolean} isSelfClose Indicates that this is a self-closing tag,
+		 *		like "br" or "img".
+		 * @example
+		 * // Writes "&gt;".
+		 * writer.openTagClose( 'p', false );
+		 * @example
+		 * // Writes " /&gt;".
+		 * writer.openTagClose( 'br', true );
+		 */
+		openTagClose : function( tagName, isSelfClose )
+		{
+			if ( isSelfClose )
+				this._.output.push( ' />' );
+			else
+				this._.output.push( '>' );
+		},
+
+		/**
+		 * Writes an attribute. This function should be called after opening the
+		 * tag with {@link #openTagClose}.
+		 * @param {String} attName The attribute name.
+		 * @param {String} attValue The attribute value.
+		 * @example
+		 * // Writes ' class="MyClass"'.
+		 * writer.attribute( 'class', 'MyClass' );
+		 */
+		attribute : function( attName, attValue )
+		{
+			this._.output.push( ' ', attName, '="', attValue, '"' );
+		},
+
+		/**
+		 * Writes a closer tag.
+		 * @param {String} tagName The element name for this tag.
+		 * @example
+		 * // Writes "&lt;/p&gt;".
+		 * writer.closeTag( 'p' );
+		 */
+		closeTag : function( tagName )
+		{
+			this._.output.push( '</', tagName, '>' );
+		},
+
+		/**
+		 * Writes text.
+		 * @param {String} text The text value
+		 * @example
+		 * // Writes "Hello Word".
+		 * writer.text( 'Hello Word' );
+		 */
+		text : function( text )
+		{
+			this._.output.push( text );
+		},
+
+		/**
+		 * Writes a comment.
+		 * @param {String} comment The comment text.
+		 * @example
+		 * // Writes "&lt;!-- My comment --&gt;".
+		 * writer.comment( ' My comment ' );
+		 */
+		comment : function( comment )
+		{
+			this._.output.push( '<!--', comment, '-->' );
+		},
+
+		/**
+		 * Writes any kind of data to the ouput.
+		 * @example
+		 * writer.write( 'This is an &lt;b&gt;example&lt;/b&gt;.' );
+		 */
+		write : function( data )
+		{
+			this._.output.push( data );
+		},
+
+		/**
+		 * Empties the current output buffer.
+		 * @example
+		 * writer.reset();
+		 */
+		reset : function()
+		{
+			this._.output = [];
+		},
+
+		/**
+		 * Empties the current output buffer.
+		 * @param {Boolean} reset Indicates that the {@link reset} function is to
+		 *		be automatically called after retrieving the HTML.
+		 * @returns {String} The HTML written to the writer so far.
+		 * @example
+		 * var html = writer.getHtml();
+		 */
+		getHtml : function( reset )
+		{
+			var html = this._.output.join( '' );
+
+			if ( reset )
+				this.reset();
+
+			return html;
+		}
+	}
+});
Index: /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/comment.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/comment.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/comment.js	(revision 2000)
@@ -0,0 +1,59 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * A lightweight representation of an HTML comment.
+ * @constructor
+ * @example
+ */
+CKEDITOR.htmlParser.comment = function( value )
+{
+	/**
+	 * The comment text.
+	 * @type String
+	 * @example
+	 */
+	this.value = value;
+
+	/** @private */
+	this._ =
+	{
+		isBlockLike : false
+	};
+};
+
+CKEDITOR.htmlParser.comment.prototype =
+{
+	/**
+	 * The node type. This is a constant value set to {@link CKEDITOR.NODE_COMMENT}.
+	 * @type Number
+	 * @example
+	 */
+	type : CKEDITOR.NODE_COMMENT,
+
+	/**
+	 * Writes the HTML representation of this comment to a CKEDITOR.htmlWriter.
+	 * @param {CKEDITOR.htmlWriter} writer The writer to which write the HTML.
+	 * @example
+	 */
+	writeHtml : function( writer, filter )
+	{
+		var comment = this.value;
+
+		if ( filter )
+		{
+			if ( !( comment = filter.onComment( comment ) ) )
+				return;
+
+			if ( typeof comment != 'string' )
+			{
+				comment.writeHtml( writer, filter );
+				return;
+			}
+		}
+
+		writer.comment( comment );
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/fragment.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/fragment.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/htmlparser/fragment.js	(revision 2000)
@@ -0,0 +1,451 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * A lightweight representation of an HTML DOM structure.
+ * @constructor
+ * @example
+ */
+CKEDITOR.htmlParser.fragment = function()
+{
+	/**
+	 * The nodes contained in the root of this fragment.
+	 * @type Array
+	 * @example
+	 * var fragment = CKEDITOR.htmlParser.fragment.fromHtml( '<b>Sample</b> Text' );
+	 * alert( fragment.children.length );  "2"
+	 */
+	this.children = [];
+
+	/**
+	 * Get the fragment parent. Should always be null.
+	 * @type Object
+	 * @default null
+	 * @example
+	 */
+	this.parent = null;
+
+	/** @private */
+	this._ =
+	{
+		isBlockLike : true,
+		hasInlineStarted : false
+	};
+};
+
+(function()
+{
+	// Elements which the end tag is marked as optional in the HTML 4.01 DTD
+	// (expect empty elements).
+	var optionalClose = {colgroup:1,dd:1,dt:1,li:1,option:1,p:1,td:1,tfoot:1,th:1,thead:1,tr:1};
+
+	// Block-level elements whose internal structure should be respected during
+	// parser fixing.
+	var nonBreakingBlocks = CKEDITOR.tools.extend(
+			{table:1,ul:1,ol:1,dl:1},
+			CKEDITOR.dtd.table, CKEDITOR.dtd.ul, CKEDITOR.dtd.ol, CKEDITOR.dtd.dl ),
+		listBlocks = CKEDITOR.dtd.$list, listItems = CKEDITOR.dtd.$listItem;
+
+	/**
+	 * Creates a {@link CKEDITOR.htmlParser.fragment} from an HTML string.
+	 * @param {String} fragmentHtml The HTML to be parsed, filling the fragment.
+	 * @param {Number} [fixForBody=false] Wrap body with specified element if needed.
+	 * @returns CKEDITOR.htmlParser.fragment The fragment created.
+	 * @example
+	 * var fragment = CKEDITOR.htmlParser.fragment.fromHtml( '<b>Sample</b> Text' );
+	 * alert( fragment.children[0].name );  "b"
+	 * alert( fragment.children[1].value );  " Text"
+	 */
+	CKEDITOR.htmlParser.fragment.fromHtml = function( fragmentHtml, fixForBody )
+	{
+		var parser = new CKEDITOR.htmlParser(),
+			html = [],
+			fragment = new CKEDITOR.htmlParser.fragment(),
+			pendingInline = [],
+			currentNode = fragment,
+		    // Indicate we're inside a <pre> element, spaces should be touched differently.
+			inPre = false,
+			returnPoint;
+
+		function checkPending( newTagName )
+		{
+			if ( pendingInline.length > 0 )
+			{
+				for ( var i = 0 ; i < pendingInline.length ; i++ )
+				{
+					var pendingElement = pendingInline[ i ],
+						pendingName = pendingElement.name,
+						pendingDtd = CKEDITOR.dtd[ pendingName ],
+						currentDtd = currentNode.name && CKEDITOR.dtd[ currentNode.name ];
+
+					if ( ( !currentDtd || currentDtd[ pendingName ] ) && ( !newTagName || !pendingDtd || pendingDtd[ newTagName ] || !CKEDITOR.dtd[ newTagName ] ) )
+					{
+						// Get a clone for the pending element.
+						pendingElement = pendingElement.clone();
+
+						// Add it to the current node and make it the current,
+						// so the new element will be added inside of it.
+						pendingElement.parent = currentNode;
+						currentNode = pendingElement;
+
+						// Remove the pending element (back the index by one
+						// to properly process the next entry).
+						pendingInline.splice( i, 1 );
+						i--;
+					}
+				}
+			}
+		}
+
+		function addElement( element, target, enforceCurrent )
+		{
+			target = target || currentNode || fragment;
+
+			// If the target is the fragment and this element can't go inside
+			// body (if fixForBody).
+			if ( fixForBody && !target.type )
+			{
+				var elementName, realElementName;
+				if ( element.attributes
+					 && ( realElementName =
+						  element.attributes[ '_cke_real_element_type' ] ) )
+					elementName = realElementName;
+				else
+					elementName =  element.name;
+				if ( !( elementName in CKEDITOR.dtd.$body ) )
+				{
+					var savedCurrent = currentNode;
+
+					// Create a <p> in the fragment.
+					currentNode = target;
+					parser.onTagOpen( fixForBody, {} );
+
+					// The new target now is the <p>.
+					target = currentNode;
+
+					if ( enforceCurrent )
+						currentNode = savedCurrent;
+				}
+			}
+
+			// Rtrim empty spaces on block end boundary. (#3585)
+			if ( element._.isBlockLike
+				 && element.name != 'pre' )
+			{
+
+				var length = element.children.length,
+					lastChild = element.children[ length - 1 ],
+					text;
+				if ( lastChild && lastChild.type == CKEDITOR.NODE_TEXT )
+				{
+					if ( !( text = CKEDITOR.tools.rtrim( lastChild.value ) ) )
+						element.children.length = length -1;
+					else
+						lastChild.value = text;
+				}
+			}
+
+			target.add( element );
+
+			if ( element.returnPoint )
+			{
+				currentNode = element.returnPoint;
+				delete element.returnPoint;
+			}
+		}
+
+		parser.onTagOpen = function( tagName, attributes, selfClosing )
+		{
+			var element = new CKEDITOR.htmlParser.element( tagName, attributes );
+
+			// "isEmpty" will be always "false" for unknown elements, so we
+			// must force it if the parser has identified it as a selfClosing tag.
+			if ( element.isUnknown && selfClosing )
+				element.isEmpty = true;
+
+			// This is a tag to be removed if empty, so do not add it immediately.
+			if ( CKEDITOR.dtd.$removeEmpty[ tagName ] )
+			{
+				pendingInline.push( element );
+				return;
+			}
+			else if ( tagName == 'pre' )
+				inPre = true;
+			else if ( tagName == 'br' && inPre )
+			{
+				currentNode.add( new CKEDITOR.htmlParser.text( '\n' ) );
+				return;
+			}
+
+			var currentName = currentNode.name,
+				currentDtd = ( currentName && CKEDITOR.dtd[ currentName ] ) || ( currentNode._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span );
+
+			// If the element cannot be child of the current element.
+			if ( !element.isUnknown && !currentNode.isUnknown && !currentDtd[ tagName ] )
+			{
+				// If this is the fragment node, just ignore this tag and add
+				// its children.
+				if ( !currentName )
+					return;
+
+				var reApply = false,
+					addPoint;   // New position to start adding nodes.
+
+				// Fixing malformed nested lists(#3828).
+				if( tagName in listBlocks
+					&& currentName in listBlocks )
+				{
+					var children = currentNode.children,
+						lastChild = children[ children.length - 1 ];
+					// Move inner list into to previous list item if any.
+					if( lastChild && lastChild.name in listItems )
+						returnPoint = currentNode, addPoint = lastChild;
+					// Move inner list outside in the worst case.
+					else
+						addElement( currentNode, currentNode.parent );
+				}
+				// If the element name is the same as the current element name,
+				// then just close the current one and append the new one to the
+				// parent. This situation usually happens with <p>, <li>, <dt> and
+				// <dd>, specially in IE. Do not enter in this if block in this case.
+				else if ( tagName == currentName )
+				{
+					addElement( currentNode, currentNode.parent );
+				}
+				else
+				{
+					if ( nonBreakingBlocks[ currentName ] )
+					{
+						if ( !returnPoint )
+							returnPoint = currentNode;
+					}
+					else
+					{
+						addElement( currentNode, currentNode.parent, true );
+
+						if ( !optionalClose[ currentName ] )
+						{
+							// The current element is an inline element, which
+							// cannot hold the new one. Put it in the pending list,
+							// and try adding the new one after it.
+							pendingInline.unshift( currentNode );
+						}
+					}
+
+					reApply = true;
+				}
+
+				if( addPoint )
+					currentNode = addPoint;
+				// Try adding it to the return point, or the parent element.
+				else
+					currentNode = currentNode.returnPoint || currentNode.parent;
+
+				if ( reApply )
+				{
+					parser.onTagOpen.apply( this, arguments );
+					return;
+				}
+			}
+
+			checkPending( tagName );
+
+			element.parent = currentNode;
+			element.returnPoint = returnPoint;
+			returnPoint = 0;
+
+			if ( element.isEmpty )
+				addElement( element );
+			else
+				currentNode = element;
+		};
+
+		parser.onTagClose = function( tagName )
+		{
+			var index = 0,
+				pendingAdd = [],
+				candidate = currentNode;
+
+			while ( candidate.type && candidate.name != tagName )
+			{
+				// If this is an inline element, add it to the pending list, so
+				// it will continue after the closing tag.
+				if ( !candidate._.isBlockLike )
+				{
+					pendingInline.unshift( candidate );
+
+					// Increase the index, so it will not get checked again in
+					// the pending list check that follows.
+					index++;
+				}
+
+				// This node should be added to it's parent at this point. But,
+				// it should happen only if the closing tag is really closing
+				// one of the nodes. So, for now, we just cache it.
+				pendingAdd.push( candidate );
+
+				candidate = candidate.parent;
+			}
+
+			if ( candidate.type )
+			{
+				// Add all elements that have been found in the above loop.
+				for ( var i = 0 ; i < pendingAdd.length ; i++ )
+				{
+					var node = pendingAdd[ i ];
+					addElement( node, node.parent );
+				}
+
+				currentNode = candidate;
+
+				if( currentNode.name == 'pre' )
+					inPre = false;
+
+				addElement( candidate, candidate.parent );
+
+				// The parent should start receiving new nodes now, except if
+				// addElement changed the currentNode.
+				if ( candidate == currentNode )
+					currentNode = currentNode.parent;
+			}
+			// The tag is not actually closing anything, thus we need invalidate
+			// the pending elements.(#3862)
+			else
+			{
+				pendingInline.splice( 0, index );
+				index = 0;
+			}
+
+			// Check if there is any pending tag to be closed.
+			for ( ; index < pendingInline.length ; index++ )
+			{
+				// If found, just remove it from the list.
+				if ( tagName == pendingInline[ index ].name )
+				{
+					pendingInline.splice( index, 1 );
+
+					// Decrease the index so we continue from the next one.
+					index--;
+				}
+			}
+		};
+
+		parser.onText = function( text )
+		{
+			// Trim empty spaces at beginning of element contents except <pre>.
+			if ( !currentNode._.hasInlineStarted && !inPre )
+			{
+				text = CKEDITOR.tools.ltrim( text );
+
+				if ( text.length === 0 )
+					return;
+			}
+
+			checkPending();
+
+			if ( fixForBody && !currentNode.type )
+				this.onTagOpen( fixForBody, {} );
+
+			// Shrinking consequential spaces into one single for all elements
+			// text contents.
+			if ( !inPre )
+				text = text.replace( /[\t\r\n ]{2,}|[\t\r\n]/g, ' ' );
+
+			currentNode.add( new CKEDITOR.htmlParser.text( text ) );
+		};
+
+		parser.onCDATA = function( cdata )
+		{
+			currentNode.add( new CKEDITOR.htmlParser.cdata( cdata ) );
+		};
+
+		parser.onComment = function( comment )
+		{
+			currentNode.add( new CKEDITOR.htmlParser.comment( comment ) );
+		};
+
+		// Parse it.
+		parser.parse( fragmentHtml );
+
+		// Close all pending nodes.
+		while ( currentNode.type )
+		{
+			var parent = currentNode.parent,
+				node = currentNode;
+
+			if ( fixForBody && !parent.type && !CKEDITOR.dtd.$body[ node.name ] )
+			{
+				currentNode = parent;
+				parser.onTagOpen( fixForBody, {} );
+				parent = currentNode;
+			}
+
+			parent.add( node );
+			currentNode = parent;
+		}
+
+		return fragment;
+	};
+
+	CKEDITOR.htmlParser.fragment.prototype =
+	{
+		/**
+		 * Adds a node to this fragment.
+		 * @param {Object} node The node to be added. It can be any of of the
+		 *		following types: {@link CKEDITOR.htmlParser.element},
+		 *		{@link CKEDITOR.htmlParser.text} and
+		 *		{@link CKEDITOR.htmlParser.comment}.
+		 * @example
+		 */
+		add : function( node )
+		{
+			var len = this.children.length,
+				previous = len > 0 && this.children[ len - 1 ] || null;
+
+			if ( previous )
+			{
+				// If the block to be appended is following text, trim spaces at
+				// the right of it.
+				if ( node._.isBlockLike && previous.type == CKEDITOR.NODE_TEXT )
+				{
+					previous.value = CKEDITOR.tools.rtrim( previous.value );
+
+					// If we have completely cleared the previous node.
+					if ( previous.value.length === 0 )
+					{
+						// Remove it from the list and add the node again.
+						this.children.pop();
+						this.add( node );
+						return;
+					}
+				}
+
+				previous.next = node;
+			}
+
+			node.previous = previous;
+			node.parent = this;
+
+			this.children.push( node );
+
+			this._.hasInlineStarted = node.type == CKEDITOR.NODE_TEXT || ( node.type == CKEDITOR.NODE_ELEMENT && !node._.isBlockLike );
+		},
+
+		/**
+		 * Writes the fragment HTML to a CKEDITOR.htmlWriter.
+		 * @param {CKEDITOR.htmlWriter} writer The writer to which write the HTML.
+		 * @example
+		 * var writer = new CKEDITOR.htmlWriter();
+		 * var fragment = CKEDITOR.htmlParser.fragment.fromHtml( '&lt;P&gt;&lt;B&gt;Example' );
+		 * fragment.writeHtml( writer )
+		 * alert( writer.getHtml() );  "&lt;p&gt;&lt;b&gt;Example&lt;/b&gt;&lt;/p&gt;"
+		 */
+		writeHtml : function( writer, filter )
+		{
+			for ( var i = 0, len = this.children.length ; i < len ; i++ )
+				this.children[i].writeHtml( writer, filter );
+		}
+	};
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/core/plugindefinition.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/plugindefinition.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/plugindefinition.js	(revision 2000)
@@ -0,0 +1,66 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the "virtual" {@link CKEDITOR.pluginDefinition} class, which
+ *		contains the defintion of a plugin. This file is for documentation
+ *		purposes only.
+ */
+
+/**
+ * (Virtual Class) Do not call this constructor. This class is not really part
+ *		of the API. It just illustrates the features of plugin objects to be
+ *		passed to the {@link CKEDITOR.plugins.add} function.
+ * @name CKEDITOR.pluginDefinition
+ * @constructor
+ * @example
+ */
+
+/**
+ * A list of plugins that are required by this plugin. Note that this property
+ * doesn't guarantee the loading order of the plugins.
+ * @name CKEDITOR.pluginDefinition.prototype.requires
+ * @type Array
+ * @example
+ * CKEDITOR.plugins.add( 'sample',
+ * {
+ *     requires : [ 'button', 'selection' ]
+ * });
+ */
+
+ /**
+ * Function called on initialization of every editor instance created in the
+ * page before the init() call task. The beforeInit function will be called for
+ * all plugins, after that the init function is called for all of them. This
+ * feature makes it possible to initialize things that could be used in the
+ * init function of other plugins.
+ * @name CKEDITOR.pluginDefinition.prototype.beforeInit
+ * @function
+ * @param {CKEDITOR.editor} editor The editor instance being initialized.
+ * @example
+ * CKEDITOR.plugins.add( 'sample',
+ * {
+ *     beforeInit : function( editor )
+ *     {
+ *         alert( 'Editor "' + editor.name + '" is to be initialized!' );
+ *     }
+ * });
+ */
+
+ /**
+ * Function called on initialization of every editor instance created in the
+ * page.
+ * @name CKEDITOR.pluginDefinition.prototype.init
+ * @function
+ * @param {CKEDITOR.editor} editor The editor instance being initialized.
+ * @example
+ * CKEDITOR.plugins.add( 'sample',
+ * {
+ *     init : function( editor )
+ *     {
+ *         alert( 'Editor "' + editor.name + '" is being initialized!' );
+ *     }
+ * });
+ */
Index: /trunk/filemanager/tp/ckeditor/_source/core/focusmanager.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/focusmanager.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/focusmanager.js	(revision 2000)
@@ -0,0 +1,123 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.focusManager} class, which is used
+ *		to handle the focus on editor instances..
+ */
+
+/**
+ * Manages the focus activity in an editor instance. This class is to be used
+ * mainly by UI elements coders when adding interface elements to CKEditor.
+ * @constructor
+ * @param {CKEDITOR.editor} editor The editor instance.
+ * @example
+ */
+CKEDITOR.focusManager = function( editor )
+{
+	if ( editor.focusManager )
+		return editor.focusManager;
+
+	/**
+	 * Indicates that the editor instance has focus.
+	 * @type Boolean
+	 * @example
+	 * alert( CKEDITOR.instances.editor1.focusManager.hasFocus );  // e.g "true"
+	 */
+	this.hasFocus = false;
+
+	/**
+	 * Object used to hold private stuff.
+	 * @private
+	 */
+	this._ =
+	{
+		editor : editor
+	};
+
+	return this;
+};
+
+CKEDITOR.focusManager.prototype =
+{
+	/**
+	 * Indicates that the editor instance has the focus.
+	 *
+	 * This function is not used to set the focus in the editor. Use
+	 * {@link CKEDITOR.editor#focus} for it instead.
+	 * @example
+	 * var editor = CKEDITOR.instances.editor1;
+	 * <b>editor.focusManager.focus()</b>;
+	 */
+	focus : function()
+	{
+		if ( this._.timer )
+			clearTimeout( this._.timer );
+
+		if ( !this.hasFocus )
+		{
+			// If another editor has the current focus, we first "blur" it. In
+			// this way the events happen in a more logical sequence, like:
+			//		"focus 1" > "blur 1" > "focus 2"
+			// ... instead of:
+			//		"focus 1" > "focus 2" > "blur 1"
+			if ( CKEDITOR.currentInstance )
+				CKEDITOR.currentInstance.focusManager.forceBlur();
+
+			var editor = this._.editor;
+
+			editor.container.getFirst().addClass( 'cke_focus' );
+
+			this.hasFocus = true;
+			editor.fire( 'focus' );
+		}
+	},
+
+	/**
+	 * Indicates that the editor instance has lost the focus. Note that this
+	 * functions acts asynchronously with a delay of 100ms to avoid subsequent
+	 * blur/focus effects. If you want the "blur" to happen immediately, use
+	 * the {@link #forceBlur} function instead.
+	 * @example
+	 * var editor = CKEDITOR.instances.editor1;
+	 * <b>editor.focusManager.blur()</b>;
+	 */
+	blur : function()
+	{
+		var focusManager = this;
+
+		if ( focusManager._.timer )
+			clearTimeout( focusManager._.timer );
+
+		focusManager._.timer = setTimeout(
+			function()
+			{
+				delete focusManager._.timer;
+				focusManager.forceBlur();
+			}
+			, 100 );
+	},
+
+	/**
+	 * Indicates that the editor instance has lost the focus. Unlike
+	 * {@link #blur}, this function is synchronous, marking the instance as
+	 * "blured" immediately.
+	 * @example
+	 * var editor = CKEDITOR.instances.editor1;
+	 * <b>editor.focusManager.forceBlur()</b>;
+	 */
+	forceBlur : function()
+	{
+		if ( this.hasFocus )
+		{
+			var editor = this._.editor;
+
+			editor.container.getFirst().removeClass( 'cke_focus' );
+
+			this.hasFocus = false;
+			editor.fire( 'blur' );
+		}
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/core/dtd.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dtd.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dtd.js	(revision 2000)
@@ -0,0 +1,207 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.dtd} object, which holds the DTD
+ *		mapping for XHTML 1.0 Transitional. This file was automatically
+ *		generated from the file: xhtml1-transitional.dtd.
+ */
+
+/**
+ * Holds and object representation of the HTML DTD to be used by the editor in
+ * its internal operations.
+ *
+ * Each element in the DTD is represented by a
+ * property in this object. Each property contains the list of elements that
+ * can be contained by the element. Text is represented by the "#" property.
+ *
+ * Several special grouping properties are also available. Their names start
+ * with the "$" character.
+ * @namespace
+ * @example
+ * // Check if "div" can be contained in a "p" element.
+ * alert( !!CKEDITOR.dtd[ 'p' ][ 'div' ] );  "false"
+ * @example
+ * // Check if "p" can be contained in a "div" element.
+ * alert( !!CKEDITOR.dtd[ 'div' ][ 'p' ] );  "true"
+ * @example
+ * // Check if "p" is a block element.
+ * alert( !!CKEDITOR.dtd.$block[ 'p' ] );  "true"
+ */
+CKEDITOR.dtd = (function()
+{
+    var X = CKEDITOR.tools.extend,
+
+		A = {isindex:1,fieldset:1},
+		B = {input:1,button:1,select:1,textarea:1,label:1},
+		C = X({a:1},B),
+		D = X({iframe:1},C),
+		E = {hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1},
+		F = {ins:1,del:1,script:1},
+		G = X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F),
+		H = X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G),
+		I = X({p:1},H),
+		J = X({iframe:1},H,B),
+		K = {img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1},
+
+		L = X({a:1},J),
+		M = {tr:1},
+		N = {'#':1},
+		O = X({param:1},K),
+		P = X({form:1},A,D,E,I),
+		Q = {li:1};
+
+	var block = {address:1,blockquote:1,center:1,dir:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,isindex:1,menu:1,noframes:1,ol:1,p:1,pre:1,table:1,ul:1};
+
+    return /** @lends CKEDITOR.dtd */ {
+
+		// The "$" items have been added manually.
+
+		/**
+		 * List of block elements, like "p" or "div".
+		 * @type Object
+		 * @example
+		 */
+		$block : block,
+
+		$body : X({script:1}, block),
+
+		$cdata : {script:1,style:1},
+
+		/**
+		 * List of empty (self-closing) elements, like "br" or "img".
+		 * @type Object
+		 * @example
+		 */
+		$empty : {area:1,base:1,br:1,col:1,hr:1,img:1,input:1,link:1,meta:1,param:1},
+
+		/**
+		 * List of list item elements, like "li" or "dd".
+		 * @type Object
+		 * @example
+		 */
+		$listItem : {dd:1,dt:1,li:1},
+
+		/**
+	     * List of list root elements.
+	     * @type Object
+	     * @example
+	     */
+	    $list: { ul:1,ol:1,dl:1},
+
+		/**
+		 * Elements that accept text nodes, but are not possible to edit into
+		 * the browser.
+		 * @type Object
+		 * @example
+		 */
+		$nonEditable : {applet:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,script:1,textarea:1},
+
+		/**
+		 * List of elements that can be ignored if empty, like "b" or "span".
+		 * @type Object
+		 * @example
+		 */
+		$removeEmpty : {abbr:1,acronym:1,address:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1},
+
+		/**
+		 * List of elements that have tabindex set to zero by default.
+		 * @type Object
+		 * @example
+		 */
+		$tabIndex : {a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},
+
+		/**
+		 * List of elements used inside the "table" element, like "tbody" or "td".
+		 * @type Object
+		 * @example
+		 */
+		$tableContent : {caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},
+
+        col : {},
+        tr : {td:1,th:1},
+        img : {},
+        colgroup : {col:1},
+        noscript : P,
+        td : P,
+        br : {},
+        th : P,
+        center : P,
+        kbd : L,
+        button : X(I,E),
+        basefont : {},
+        h5 : L,
+        h4 : L,
+        samp : L,
+        h6 : L,
+        ol : Q,
+        h1 : L,
+        h3 : L,
+        option : N,
+        h2 : L,
+        form : X(A,D,E,I),
+        select : {optgroup:1,option:1},
+        font : L,
+        ins : P,
+        menu : Q,
+        abbr : L,
+        label : L,
+        table : {thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},
+        code : L,
+        script : N,
+        tfoot : M,
+        cite : L,
+        li : P,
+        input : {},
+        iframe : P,
+        strong : L,
+        textarea : N,
+        noframes : P,
+        big : L,
+        small : L,
+        span : L,
+        hr : {},
+        dt : L,
+        sub : L,
+        optgroup : {option:1},
+        param : {},
+        bdo : L,
+        'var' : L,
+        div : P,
+        object : O,
+        sup : L,
+        dd : P,
+        strike : L,
+        area : {},
+        dir : Q,
+        map : X({area:1,form:1,p:1},A,F,E),
+        applet : O,
+        dl : {dt:1,dd:1},
+        del : P,
+        isindex : {},
+        fieldset : X({legend:1},K),
+        thead : M,
+        ul : Q,
+        acronym : L,
+        b : L,
+        a : J,
+        blockquote : P,
+        caption : L,
+        i : L,
+        u : L,
+        tbody : M,
+        s : L,
+        address : X(D,I),
+        tt : L,
+        legend : L,
+        q : L,
+        pre : X(G,C),
+        p : L,
+        em : L,
+        dfn : L
+    };
+})();
+
+// PACKAGER_RENAME( CKEDITOR.dtd )
Index: /trunk/filemanager/tp/ckeditor/_source/core/_bootstrap.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/_bootstrap.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/_bootstrap.js	(revision 2000)
@@ -0,0 +1,73 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview API initialization code.
+ */
+
+(function()
+{
+	// Check is High Contrast is active by creating a temporary element with a
+	// background image.
+
+	var testImage = ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 ) ? ( CKEDITOR.basePath + 'images/spacer.gif' ) : 'about:blank';
+
+	var hcDetect = CKEDITOR.dom.element.createFromHtml(
+		'<div style="width:0px;height:0px;' +
+			'position:absolute;left:-10000px;' +
+			'background-image:url(' + testImage + ')"></div>', CKEDITOR.document );
+
+	hcDetect.appendTo( CKEDITOR.document.getHead() );
+
+	// Update CKEDITOR.env.
+	// Catch exception needed sometimes for FF. (#4230)
+	try
+	{
+		CKEDITOR.env.hc = ( hcDetect.getComputedStyle( 'background-image' ) == 'none' );
+	}
+	catch (e)
+	{
+		CKEDITOR.env.hc = false;
+	}
+	if ( CKEDITOR.env.hc )
+		CKEDITOR.env.cssClass += ' cke_hc';
+
+	hcDetect.remove();
+})();
+
+// Load core plugins.
+CKEDITOR.plugins.load( CKEDITOR.config.corePlugins.split( ',' ), function()
+	{
+		CKEDITOR.status = 'loaded';
+		CKEDITOR.fire( 'loaded' );
+
+		// Process all instances created by the "basic" implementation.
+		var pending = CKEDITOR._.pending;
+		if ( pending )
+		{
+			delete CKEDITOR._.pending;
+
+			for ( var i = 0 ; i < pending.length ; i++ )
+				CKEDITOR.add( pending[ i ] );
+		}
+	});
+
+/*
+TODO: Enable the following and check if effective.
+
+if ( CKEDITOR.env.ie )
+{
+	// Remove IE mouse flickering on IE6 because of background images.
+	try
+	{
+		document.execCommand( 'BackgroundImageCache', false, true );
+	}
+	catch (e)
+	{
+		// We have been reported about loading problems caused by the above
+		// line. For safety, let's just ignore errors.
+	}
+}
+*/
Index: /trunk/filemanager/tp/ckeditor/_source/core/ui.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/ui.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/ui.js	(revision 2000)
@@ -0,0 +1,116 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * Contains UI features related to an editor instance.
+ * @constructor
+ * @param {CKEDITOR.editor} editor The editor instance.
+ * @example
+ */
+CKEDITOR.ui = function( editor )
+{
+	if ( editor.ui )
+		return editor.ui;
+
+	/**
+	 * Object used to hold private stuff.
+	 * @private
+	 */
+	this._ =
+	{
+		handlers : {},
+		items : {},
+		editor : editor
+	};
+
+	return this;
+};
+
+// PACKAGER_RENAME( CKEDITOR.ui )
+
+CKEDITOR.ui.prototype =
+{
+	/**
+	 * Adds a UI item to the items collection. These items can be later used in
+	 * the interface.
+	 * @param {String} name The UI item name.
+	 * @param {Object} type The item type.
+	 * @param {Object} definition The item definition. The properties of this
+	 *		object depend on the item type.
+	 * @example
+	 * // Add a new button named "MyBold".
+	 * editorInstance.ui.add( 'MyBold', CKEDITOR.UI_BUTTON,
+	 *     {
+	 *         label : 'My Bold',
+	 *         command : 'bold'
+	 *     });
+	 */
+	add : function( name, type, definition )
+	{
+		this._.items[ name ] =
+		{
+			type : type,
+			// The name of {@link CKEDITOR.command} which associate with this UI.
+			command : definition.command || null,
+			args : Array.prototype.slice.call( arguments, 2 )
+		};
+	},
+
+	/**
+	 * Gets a UI object.
+	 * @param {String} name The UI item hame.
+	 * @example
+	 */
+	create : function( name )
+	{
+		var item	= this._.items[ name ],
+			handler	= item && this._.handlers[ item.type ],
+			command = item && item.command && this._.editor.getCommand( item.command );
+
+		var result = handler && handler.create.apply( this, item.args );
+
+		// Add reference inside command object.
+		if ( command )
+			command.uiItems.push( result );
+
+		return result;
+	},
+
+	/**
+	 * Adds a handler for a UI item type. The handler is responsible for
+	 * transforming UI item definitions in UI objects.
+	 * @param {Object} type The item type.
+	 * @param {Object} handler The handler definition.
+	 * @example
+	 */
+	addHandler : function( type, handler )
+	{
+		this._.handlers[ type ] = handler;
+	}
+};
+
+/**
+ * (Virtual Class) Do not call this constructor. This class is not really part
+ *		of the API. It just illustrates the features of hanlder objects to be
+ *		passed to the {@link CKEDITOR.ui.prototype.addHandler} function.
+ * @name CKEDITOR.ui.handlerDefinition
+ * @constructor
+ * @example
+ */
+
+ /**
+ * Transforms an item definition into an UI item object.
+ * @name CKEDITOR.handlerDefinition.prototype.create
+ * @function
+ * @param {Object} definition The item definition.
+ * @example
+ * editorInstance.ui.addHandler( CKEDITOR.UI_BUTTON,
+ *     {
+ *         create : function( definition )
+ *         {
+ *             return new CKEDITOR.ui.button( definition );
+ *         }
+ *     });
+ */
Index: /trunk/filemanager/tp/ckeditor/_source/core/command.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/command.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/command.js	(revision 2000)
@@ -0,0 +1,73 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.command = function( editor, commandDefinition )
+{
+	this.uiItems = [];
+
+	this.exec = function( data )
+	{
+		if ( this.state == CKEDITOR.TRISTATE_DISABLED )
+			return false;
+
+		if( this.editorFocus )     // Give editor focus if necessary (#4355).
+			editor.focus();
+
+		return ( commandDefinition.exec.call( this, editor, data ) !== false );
+	};
+
+	CKEDITOR.tools.extend( this, commandDefinition,
+		// Defaults
+		{
+			modes : { wysiwyg : 1 },
+			editorFocus : true,
+			state : CKEDITOR.TRISTATE_OFF
+		});
+
+	// Call the CKEDITOR.event constructor to initialize this instance.
+	CKEDITOR.event.call( this );
+};
+
+CKEDITOR.command.prototype =
+{
+	enable : function()
+	{
+		if ( this.state == CKEDITOR.TRISTATE_DISABLED )
+			this.setState( ( !this.preserveState || ( typeof this.previousState == 'undefined' ) ) ? CKEDITOR.TRISTATE_OFF : this.previousState );
+	},
+
+	disable : function()
+	{
+		this.setState( CKEDITOR.TRISTATE_DISABLED );
+	},
+
+	setState : function( newState )
+	{
+		// Do nothing if there is no state change.
+		if ( this.state == newState )
+			return false;
+
+		this.previousState = this.state;
+
+		// Set the new state.
+		this.state = newState;
+
+		// Fire the "state" event, so other parts of the code can react to the
+		// change.
+		this.fire( 'state' );
+
+		return true;
+	},
+
+	toggleState : function()
+	{
+		if ( this.state == CKEDITOR.TRISTATE_OFF )
+			this.setState( CKEDITOR.TRISTATE_ON );
+		else if ( this.state == CKEDITOR.TRISTATE_ON )
+			this.setState( CKEDITOR.TRISTATE_OFF );
+	}
+};
+
+CKEDITOR.event.implementOn( CKEDITOR.command.prototype, true );
Index: /trunk/filemanager/tp/ckeditor/_source/core/dom.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/dom.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/dom.js	(revision 2000)
@@ -0,0 +1,21 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.dom} object, which contains DOM
+ *		manipulation objects and function.
+ */
+
+/**
+ * DOM manipulation objects and function.<br /><br />
+ * @see CKEDITOR.dom.element
+ * @see CKEDITOR.dom.node
+ * @namespace
+ * @example
+ */
+CKEDITOR.dom =
+{};
+
+// PACKAGER_RENAME( CKEDITOR.dom )
Index: /trunk/filemanager/tp/ckeditor/_source/core/lang.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/lang.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/lang.js	(revision 2000)
@@ -0,0 +1,151 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	var loadedLangs = {};
+
+	CKEDITOR.lang =
+	{
+		/**
+		 * The list of languages available in the editor core.
+		 * @type Object
+		 * @example
+		 * alert( CKEDITOR.lang.en );  // "true"
+		 */
+		languages :
+		{
+			'af'	: 1,
+			'ar'	: 1,
+			'bg'	: 1,
+			'bn'	: 1,
+			'bs'	: 1,
+			'ca'	: 1,
+			'cs'	: 1,
+			'da'	: 1,
+			'de'	: 1,
+			'el'	: 1,
+			'en-au'	: 1,
+			'en-ca'	: 1,
+			'en-uk'	: 1,
+			'en'	: 1,
+			'eo'	: 1,
+			'es'	: 1,
+			'et'	: 1,
+			'eu'	: 1,
+			'fa'	: 1,
+			'fi'	: 1,
+			'fo'	: 1,
+			'fr-ca'	: 1,
+			'fr'	: 1,
+			'gl'	: 1,
+			'gu'	: 1,
+			'he'	: 1,
+			'hi'	: 1,
+			'hr'	: 1,
+			'hu'	: 1,
+			'is'	: 1,
+			'it'	: 1,
+			'ja'	: 1,
+			'km'	: 1,
+			'ko'	: 1,
+			'lt'	: 1,
+			'lv'	: 1,
+			'mn'	: 1,
+			'ms'	: 1,
+			'nb'	: 1,
+			'nl'	: 1,
+			'no'	: 1,
+			'pl'	: 1,
+			'pt-br'	: 1,
+			'pt'	: 1,
+			'ro'	: 1,
+			'ru'	: 1,
+			'sk'	: 1,
+			'sl'	: 1,
+			'sr-latn'	: 1,
+			'sr'	: 1,
+			'sv'	: 1,
+			'th'	: 1,
+			'tr'	: 1,
+			'uk'	: 1,
+			'vi'	: 1,
+			'zh-cn'	: 1,
+			'zh'	: 1
+		},
+
+		/**
+		 * Loads a specific language file, or auto detect it. A callback is
+		 * then called when the file gets loaded.
+		 * @param {String} languageCode The code of the language file to be
+		 *		loaded. If "autoDetect" is set to true, this language will be
+		 *		used as the default one, if the detect language is not
+		 *		available in the core.
+		 * @param {Boolean} autoDetect Indicates that the function must try to
+		 *		detect the user language and load it instead.
+		 * @param {Function} callback The function to be called once the
+		 *		language file is loaded. Two parameters are passed to this
+		 *		function: the language code and the loaded language entries.
+		 * @example
+		 */
+		load : function( languageCode, defaultLanguage, callback )
+		{
+			// If no languageCode - fallback to browser or default.
+			// If languageCode - fallback to no-localized version or default.
+			if ( !languageCode || !CKEDITOR.lang.languages[ languageCode ] )
+				languageCode = this.detect( defaultLanguage, languageCode );
+
+			if ( !this[ languageCode ] )
+			{
+				CKEDITOR.scriptLoader.load( CKEDITOR.getUrl(
+					'_source/' +	// @Packager.RemoveLine
+					'lang/' + languageCode + '.js' ),
+					function()
+						{
+							callback( languageCode, this[ languageCode ] );
+						}
+						, this );
+			}
+			else
+				callback( languageCode, this[ languageCode ] );
+		},
+
+		/**
+		 * Returns the language that best fit the user language. For example,
+		 * suppose that the user language is "pt-br". If this language is
+		 * supported by the editor, it is returned. Otherwise, if only "pt" is
+		 * supported, it is returned instead. If none of the previous are
+		 * supported, a default language is then returned.
+		 * @param {String} defaultLanguage The default language to be returned
+		 *		if the user language is not supported.
+		 * @returns {String} The detected language code.
+		 * @example
+		 * alert( CKEDITOR.lang.detect( 'en' ) );  // e.g., in a German browser: "de"
+		 */
+		detect : function( defaultLanguage, probeLanguage )
+		{
+			var languages = this.languages;
+			probeLanguage = probeLanguage || navigator.userLanguage || navigator.language;
+
+			var parts = probeLanguage
+					.toLowerCase()
+					.match( /([a-z]+)(?:-([a-z]+))?/ ),
+				lang = parts[1],
+				locale = parts[2];
+
+			if ( languages[ lang + '-' + locale ] )
+				lang = lang + '-' + locale;
+			else if ( !languages[ lang ] )
+				lang = null;
+
+			CKEDITOR.lang.detect = lang ?
+				function() { return lang; } :
+				function( defaultLanguage ) { return defaultLanguage; };
+
+			return lang || defaultLanguage;
+		}
+	};
+
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/core/htmlparser.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/htmlparser.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/htmlparser.js	(revision 2000)
@@ -0,0 +1,212 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * HTML text parser.
+ * @constructor
+ * @example
+ */
+CKEDITOR.htmlParser = function()
+{
+	this._ =
+	{
+		htmlPartsRegex : new RegExp( '<(?:(?:\\/([^>]+)>)|(?:!--([\\S|\\s]*?)-->)|(?:([^\\s>]+)\\s*((?:(?:[^"\'>]+)|(?:"[^"]*")|(?:\'[^\']*\'))*)\\/?>))', 'g' )
+	};
+};
+
+(function()
+{
+	var attribsRegex	= /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,
+		emptyAttribs	= {checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};
+
+	CKEDITOR.htmlParser.prototype =
+	{
+		/**
+		 * Function to be fired when a tag opener is found. This function
+		 * should be overriden when using this class.
+		 * @param {String} tagName The tag name. The name is guarantted to be
+		 *		lowercased.
+		 * @param {Object} attributes An object containing all tag attributes. Each
+		 *		property in this object represent and attribute name and its
+		 *		value is the attribute value.
+		 * @param {Boolean} selfClosing true if the tag closes itself, false if the
+		 * 		tag doesn't.
+		 * @example
+		 * var parser = new CKEDITOR.htmlParser();
+		 * parser.onTagOpen = function( tagName, attributes, selfClosing )
+		 *     {
+		 *         alert( tagName );  // e.g. "b"
+		 *     });
+		 * parser.parse( "&lt;!-- Example --&gt;&lt;b&gt;Hello&lt;/b&gt;" );
+		 */
+		onTagOpen	: function() {},
+
+		/**
+		 * Function to be fired when a tag closer is found. This function
+		 * should be overriden when using this class.
+		 * @param {String} tagName The tag name. The name is guarantted to be
+		 *		lowercased.
+		 * @example
+		 * var parser = new CKEDITOR.htmlParser();
+		 * parser.onTagClose = function( tagName )
+		 *     {
+		 *         alert( tagName );  // e.g. "b"
+		 *     });
+		 * parser.parse( "&lt;!-- Example --&gt;&lt;b&gt;Hello&lt;/b&gt;" );
+		 */
+		onTagClose	: function() {},
+
+		/**
+		 * Function to be fired when text is found. This function
+		 * should be overriden when using this class.
+		 * @param {String} text The text found.
+		 * @example
+		 * var parser = new CKEDITOR.htmlParser();
+		 * parser.onText = function( text )
+		 *     {
+		 *         alert( text );  // e.g. "Hello"
+		 *     });
+		 * parser.parse( "&lt;!-- Example --&gt;&lt;b&gt;Hello&lt;/b&gt;" );
+		 */
+		onText		: function() {},
+
+		/**
+		 * Function to be fired when CDATA section is found. This function
+		 * should be overriden when using this class.
+		 * @param {String} cdata The CDATA been found.
+		 * @example
+		 * var parser = new CKEDITOR.htmlParser();
+		 * parser.onCDATA = function( cdata )
+		 *     {
+		 *         alert( cdata );  // e.g. "var hello;"
+		 *     });
+		 * parser.parse( "&lt;script&gt;var hello;&lt;/script&gt;" );
+		 */
+		onCDATA		: function() {},
+
+		/**
+		 * Function to be fired when a commend is found. This function
+		 * should be overriden when using this class.
+		 * @param {String} comment The comment text.
+		 * @example
+		 * var parser = new CKEDITOR.htmlParser();
+		 * parser.onText = function( comment )
+		 *     {
+		 *         alert( comment );  // e.g. " Example "
+		 *     });
+		 * parser.parse( "&lt;!-- Example --&gt;&lt;b&gt;Hello&lt;/b&gt;" );
+		 */
+		onComment	: function() {},
+
+		/**
+		 * Parses text, looking for HTML tokens, like tag openers or closers,
+		 * or comments. This function fires the onTagOpen, onTagClose, onText
+		 * and onComment function during its execution.
+		 * @param {String} html The HTML to be parsed.
+		 * @example
+		 * var parser = new CKEDITOR.htmlParser();
+		 * // The onTagOpen, onTagClose, onText and onComment should be overriden
+		 * // at this point.
+		 * parser.parse( "&lt;!-- Example --&gt;&lt;b&gt;Hello&lt;/b&gt;" );
+		 */
+		parse : function( html )
+		{
+			var parts,
+				tagName,
+				nextIndex = 0,
+				cdata;	// The collected data inside a CDATA section.
+
+			while ( ( parts = this._.htmlPartsRegex.exec( html ) ) )
+			{
+				var tagIndex = parts.index;
+				if ( tagIndex > nextIndex )
+				{
+					var text = html.substring( nextIndex, tagIndex );
+
+					if ( cdata )
+						cdata.push( text );
+					else
+						this.onText( text );
+				}
+
+				nextIndex = this._.htmlPartsRegex.lastIndex;
+
+				/*
+				 "parts" is an array with the following items:
+					0 : The entire match for opening/closing tags and comments.
+					1 : Group filled with the tag name for closing tags.
+					2 : Group filled with the comment text.
+					3 : Group filled with the tag name for opening tags.
+					4 : Group filled with the attributes part of opening tags.
+				 */
+
+				// Closing tag
+				if ( ( tagName = parts[ 1 ] ) )
+				{
+					tagName = tagName.toLowerCase();
+
+					if ( cdata && CKEDITOR.dtd.$cdata[ tagName ] )
+					{
+						// Send the CDATA data.
+						this.onCDATA( cdata.join('') );
+						cdata = null;
+					}
+
+					if ( !cdata )
+					{
+						this.onTagClose( tagName );
+						continue;
+					}
+				}
+
+				// If CDATA is enabled, just save the raw match.
+				if ( cdata )
+				{
+					cdata.push( parts[ 0 ] );
+					continue;
+				}
+
+				// Opening tag
+				if ( ( tagName = parts[ 3 ] ) )
+				{
+					tagName = tagName.toLowerCase();
+					var attribs = {},
+						attribMatch,
+						attribsPart = parts[ 4 ],
+						selfClosing = !!( attribsPart && attribsPart.charAt( attribsPart.length - 1 ) == '/' );
+
+					if ( attribsPart )
+					{
+						while ( ( attribMatch = attribsRegex.exec( attribsPart ) ) )
+						{
+							var attName = attribMatch[1].toLowerCase(),
+								attValue = attribMatch[2] || attribMatch[3] || attribMatch[4] || '';
+
+							if ( !attValue && emptyAttribs[ attName ] )
+								attribs[ attName ] = attName;
+							else
+								attribs[ attName ] = attValue;
+						}
+					}
+
+					this.onTagOpen( tagName, attribs, selfClosing );
+
+					// Open CDATA mode when finding the appropriate tags.
+					if ( !cdata && CKEDITOR.dtd.$cdata[ tagName ] )
+						cdata = [];
+
+					continue;
+				}
+
+				// Comment
+				if( ( tagName = parts[ 2 ] ) )
+					this.onComment( tagName );
+			}
+
+			if ( html.length > nextIndex )
+				this.onText( html.substring( nextIndex, html.length ) );
+		}
+	};
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/core/event.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/event.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/event.js	(revision 2000)
@@ -0,0 +1,335 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.event} class, which serves as the
+ *		base for classes and objects that require event handling features.
+ */
+
+if ( !CKEDITOR.event )
+{
+	/**
+	 * This is a base class for classes and objects that require event handling
+	 * features.
+	 * @constructor
+	 * @example
+	 */
+	CKEDITOR.event = function()
+	{};
+
+	/**
+	 * Implements the {@link CKEDITOR.event} features in an object.
+	 * @param {Object} targetObject The object in which implement the features.
+	 * @example
+	 * var myObject = { message : 'Example' };
+	 * <b>CKEDITOR.event.implementOn( myObject }</b>;
+	 * myObject.on( 'testEvent', function()
+	 *     {
+	 *         alert( this.message );  // "Example"
+	 *     });
+	 * myObject.fire( 'testEvent' );
+	 */
+	CKEDITOR.event.implementOn = function( targetObject, isTargetPrototype )
+	{
+		var eventProto = CKEDITOR.event.prototype;
+
+		for ( var prop in eventProto )
+		{
+			if ( targetObject[ prop ] == undefined )
+				targetObject[ prop ] = eventProto[ prop ];
+		}
+	};
+
+	CKEDITOR.event.prototype = (function()
+	{
+		// Returns the private events object for a given object.
+		var getPrivate = function( obj )
+		{
+			var _ = ( obj.getPrivate && obj.getPrivate() ) || obj._ || ( obj._ = {} );
+			return _.events || ( _.events = {} );
+		};
+
+		var eventEntry = function( eventName )
+		{
+			this.name = eventName;
+			this.listeners = [];
+		};
+
+		eventEntry.prototype =
+		{
+			// Get the listener index for a specified function.
+			// Returns -1 if not found.
+			getListenerIndex : function( listenerFunction )
+			{
+				for ( var i = 0, listeners = this.listeners ; i < listeners.length ; i++ )
+				{
+					if ( listeners[i].fn == listenerFunction )
+						return i;
+				}
+				return -1;
+			}
+		};
+
+		return /** @lends CKEDITOR.event.prototype */ {
+			/**
+			 * Registers a listener to a specific event in the current object.
+			 * @param {String} eventName The event name to which listen.
+			 * @param {Function} listenerFunction The function listening to the
+			 *		event.
+			 * @param {Object} [scopeObj] The object used to scope the listener
+			 *		call (the this object. If omitted, the current object is used.
+			 * @param {Object} [listenerData] Data to be sent as the
+			 *		{@link CKEDITOR.eventInfo#listenerData} when calling the
+			 *		listener.
+			 * @param {Number} [priority] The listener priority. Lower priority
+			 *		listeners are called first. Listeners with the same priority
+			 *		value are called in registration order. Defaults to 10.
+			 * @example
+			 * someObject.on( 'someEvent', function()
+			 *     {
+			 *         alert( this == someObject );  // "true"
+			 *     });
+			 * @example
+			 * someObject.on( 'someEvent', function()
+			 *     {
+			 *         alert( this == anotherObject );  // "true"
+			 *     }
+			 *     , anotherObject );
+			 * @example
+			 * someObject.on( 'someEvent', function( event )
+			 *     {
+			 *         alert( event.listenerData );  // "Example"
+			 *     }
+			 *     , null, 'Example' );
+			 * @example
+			 * someObject.on( 'someEvent', function() { ... } );                   // 2nd called
+			 * someObject.on( 'someEvent', function() { ... }, null, null, 100 );  // 3rd called
+			 * someObject.on( 'someEvent', function() { ... }, null, null, 1 );    // 1st called
+			 */
+			on : function( eventName, listenerFunction, scopeObj, listenerData, priority )
+			{
+				// Get the event entry (create it if needed).
+				var events = getPrivate( this ),
+					event = events[ eventName ] || ( events[ eventName ] = new eventEntry( eventName ) );
+
+				if ( event.getListenerIndex( listenerFunction ) < 0 )
+				{
+					// Get the listeners.
+					var listeners = event.listeners;
+
+					// Fill the scope.
+					if ( !scopeObj )
+						scopeObj = this;
+
+					// Default the priority, if needed.
+					if ( isNaN( priority ) )
+						priority = 10;
+
+					var me = this;
+
+					// Create the function to be fired for this listener.
+					var listenerFirer = function( editor, publisherData, stopFn, cancelFn )
+					{
+						var ev =
+						{
+							name : eventName,
+							sender : this,
+							editor : editor,
+							data : publisherData,
+							listenerData : listenerData,
+							stop : stopFn,
+							cancel : cancelFn,
+							removeListener : function()
+							{
+								me.removeListener( eventName, listenerFunction );
+							}
+						};
+
+						listenerFunction.call( scopeObj, ev );
+
+						return ev.data;
+					};
+					listenerFirer.fn = listenerFunction;
+					listenerFirer.priority = priority;
+
+					// Search for the right position for this new listener, based on its
+					// priority.
+					for ( var i = listeners.length - 1 ; i >= 0 ; i-- )
+					{
+						// Find the item which should be before the new one.
+						if ( listeners[ i ].priority <= priority )
+						{
+							// Insert the listener in the array.
+							listeners.splice( i + 1, 0, listenerFirer );
+							return;
+						}
+					}
+
+					// If no position has been found (or zero length), put it in
+					// the front of list.
+					listeners.unshift( listenerFirer );
+				}
+			},
+
+			/**
+			 * Fires an specific event in the object. All registered listeners are
+			 * called at this point.
+			 * @function
+			 * @param {String} eventName The event name to fire.
+			 * @param {Object} [data] Data to be sent as the
+			 *		{@link CKEDITOR.eventInfo#data} when calling the
+			 *		listeners.
+			 * @param {CKEDITOR.editor} [editor] The editor instance to send as the
+			 *		{@link CKEDITOR.eventInfo#editor} when calling the
+			 *		listener.
+			 * @returns {Boolean|Object} A booloan indicating that the event is to be
+			 *		canceled, or data returned by one of the listeners.
+			 * @example
+			 * someObject.on( 'someEvent', function() { ... } );
+			 * someObject.on( 'someEvent', function() { ... } );
+			 * <b>someObject.fire( 'someEvent' )</b>;  // both listeners are called
+			 * @example
+			 * someObject.on( 'someEvent', function( event )
+			 *     {
+			 *         alert( event.data );  // "Example"
+			 *     });
+			 * <b>someObject.fire( 'someEvent', 'Example' )</b>;
+			 */
+			fire : (function()
+			{
+				// Create the function that marks the event as stopped.
+				var stopped = false;
+				var stopEvent = function()
+				{
+					stopped = true;
+				};
+
+				// Create the function that marks the event as canceled.
+				var canceled = false;
+				var cancelEvent = function()
+				{
+					canceled = true;
+				};
+
+				return function( eventName, data, editor )
+				{
+					// Get the event entry.
+					var event = getPrivate( this )[ eventName ];
+
+					// Save the previous stopped and cancelled states. We may
+					// be nesting fire() calls.
+					var previousStopped = stopped,
+						previousCancelled = canceled;
+
+					// Reset the stopped and canceled flags.
+					stopped = canceled = false;
+
+					if ( event )
+					{
+						var listeners = event.listeners;
+
+						if ( listeners.length )
+						{
+							// As some listeners may remove themselves from the
+							// event, the original array length is dinamic. So,
+							// let's make a copy of all listeners, so we are
+							// sure we'll call all of them.
+							listeners = listeners.slice( 0 );
+
+							// Loop through all listeners.
+							for ( var i = 0 ; i < listeners.length ; i++ )
+							{
+								// Call the listener, passing the event data.
+								var retData = listeners[i].call( this, editor, data, stopEvent, cancelEvent );
+
+								if ( typeof retData != 'undefined' )
+									data = retData;
+
+								// No further calls is stopped or canceled.
+								if ( stopped || canceled )
+									break;
+							}
+						}
+					}
+
+					var ret = canceled || ( typeof data == 'undefined' ? false : data );
+
+					// Restore the previous stopped and canceled states.
+					stopped = previousStopped;
+					canceled = previousCancelled;
+
+					return ret;
+				};
+			})(),
+
+			/**
+			 * Fires an specific event in the object, releasing all listeners
+			 * registered to that event. The same listeners are not called again on
+			 * successive calls of it or of {@link #fire}.
+			 * @param {String} eventName The event name to fire.
+			 * @param {Object} [data] Data to be sent as the
+			 *		{@link CKEDITOR.eventInfo#data} when calling the
+			 *		listeners.
+			 * @param {CKEDITOR.editor} [editor] The editor instance to send as the
+			 *		{@link CKEDITOR.eventInfo#editor} when calling the
+			 *		listener.
+			 * @returns {Boolean|Object} A booloan indicating that the event is to be
+			 *		canceled, or data returned by one of the listeners.
+			 * @example
+			 * someObject.on( 'someEvent', function() { ... } );
+			 * someObject.fire( 'someEvent' );  // above listener called
+			 * <b>someObject.fireOnce( 'someEvent' )</b>;  // above listener called
+			 * someObject.fire( 'someEvent' );  // no listeners called
+			 */
+			fireOnce : function( eventName, data, editor )
+			{
+				var ret = this.fire( eventName, data, editor );
+				delete getPrivate( this )[ eventName ];
+				return ret;
+			},
+
+			/**
+			 * Unregisters a listener function from being called at the specified
+			 *		event. No errors are thrown if the listener has not been
+			 *		registered previously.
+			 * @param {String} eventName The event name.
+			 * @param {Function} listenerFunction The listener function to unregister.
+			 * @example
+			 * var myListener = function() { ... };
+			 * someObject.on( 'someEvent', myListener );
+			 * someObject.fire( 'someEvent' );  // myListener called
+			 * <b>someObject.removeListener( 'someEvent', myListener )</b>;
+			 * someObject.fire( 'someEvent' );  // myListener not called
+			 */
+			removeListener : function( eventName, listenerFunction )
+			{
+				// Get the event entry.
+				var event = getPrivate( this )[ eventName ];
+
+				if ( event )
+				{
+					var index = event.getListenerIndex( listenerFunction );
+					if ( index >= 0 )
+						event.listeners.splice( index, 1 );
+				}
+			},
+
+			/**
+			 * Checks if there is any listener registered to a given event.
+			 * @param {String} eventName The event name.
+			 * @example
+			 * var myListener = function() { ... };
+			 * someObject.on( 'someEvent', myListener );
+			 * alert( someObject.<b>hasListeners( 'someEvent' )</b> );  // "true"
+			 * alert( someObject.<b>hasListeners( 'noEvent' )</b> );    // "false"
+			 */
+			hasListeners : function( eventName )
+			{
+				var event = getPrivate( this )[ eventName ];
+				return ( event && event.listeners.length > 0 ) ;
+			}
+		};
+	})();
+}
Index: /trunk/filemanager/tp/ckeditor/_source/core/plugins.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/plugins.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/plugins.js	(revision 2000)
@@ -0,0 +1,83 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.plugins} object, which is used to
+ *		manage plugins registration and loading.
+ */
+
+/**
+ * Manages plugins registration and loading.
+ * @namespace
+ * @augments CKEDITOR.resourceManager
+ * @example
+ */
+CKEDITOR.plugins = new CKEDITOR.resourceManager(
+	'_source/' +	// @Packager.RemoveLine
+	'plugins/', 'plugin' );
+
+// PACKAGER_RENAME( CKEDITOR.plugins )
+
+CKEDITOR.plugins.load = CKEDITOR.tools.override( CKEDITOR.plugins.load, function( originalLoad )
+	{
+		return function( name, callback, scope )
+		{
+			var allPlugins = {};
+
+			var loadPlugins = function( names )
+			{
+				originalLoad.call( this, names, function( plugins )
+					{
+						CKEDITOR.tools.extend( allPlugins, plugins );
+
+						var requiredPlugins = [];
+						for ( var pluginName in plugins )
+						{
+							var plugin = plugins[ pluginName ],
+								requires = plugin && plugin.requires;
+
+							if ( requires )
+							{
+								for ( var i = 0 ; i < requires.length ; i++ )
+								{
+									if ( !allPlugins[ requires[ i ] ] )
+										requiredPlugins.push( requires[ i ] );
+								}
+							}
+						}
+
+						if ( requiredPlugins.length )
+							loadPlugins.call( this, requiredPlugins );
+						else
+						{
+							// Call the "onLoad" function for all plugins.
+							for ( pluginName in allPlugins )
+							{
+								plugin = allPlugins[ pluginName ];
+								if ( plugin.onLoad && !plugin.onLoad._called )
+								{
+									plugin.onLoad();
+									plugin.onLoad._called = 1;
+								}
+							}
+
+							// Call the callback.
+							if ( callback )
+								callback.call( scope || window, allPlugins );
+						}
+					}
+					, this);
+
+			};
+
+			loadPlugins.call( this, name );
+		};
+	});
+
+CKEDITOR.plugins.setLang = function( pluginName, languageCode, languageEntries )
+{
+	var plugin = this.get( pluginName );
+	plugin.lang[ languageCode ] = languageEntries;
+};
Index: /trunk/filemanager/tp/ckeditor/_source/core/resourcemanager.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/resourcemanager.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/resourcemanager.js	(revision 2000)
@@ -0,0 +1,233 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.resourceManager} class, which is
+ *		the base for resource managers, like plugins and themes.
+ */
+
+ /**
+ * Base class for resource managers, like plugins and themes. This class is not
+ * intended to be used out of the CKEditor core code.
+ * @param {String} basePath The path for the resources folder.
+ * @param {String} fileName The name used for resource files.
+ * @namespace
+ * @example
+ */
+CKEDITOR.resourceManager = function( basePath, fileName )
+{
+	/**
+	 * The base directory containing all resources.
+	 * @name CKEDITOR.resourceManager.prototype.basePath
+	 * @type String
+	 * @example
+	 */
+	this.basePath = basePath;
+
+	/**
+	 * The name used for resource files.
+	 * @name CKEDITOR.resourceManager.prototype.fileName
+	 * @type String
+	 * @example
+	 */
+	this.fileName = fileName;
+
+	/**
+	 * Contains references to all resources that have already been registered
+	 * with {@link #add}.
+	 * @name CKEDITOR.resourceManager.prototype.registered
+	 * @type Object
+	 * @example
+	 */
+	this.registered = {};
+
+	/**
+	 * Contains references to all resources that have already been loaded
+	 * with {@link #load}.
+	 * @name CKEDITOR.resourceManager.prototype.loaded
+	 * @type Object
+	 * @example
+	 */
+	this.loaded = {};
+
+	/**
+	 * Contains references to all resources that have already been registered
+	 * with {@link #addExternal}.
+	 * @name CKEDITOR.resourceManager.prototype.externals
+	 * @type Object
+	 * @example
+	 */
+	this.externals = {};
+
+	/**
+	 * @private
+	 */
+	this._ =
+	{
+		// List of callbacks waiting for plugins to be loaded.
+		waitingList : {}
+	};
+};
+
+CKEDITOR.resourceManager.prototype =
+{
+	/**
+	 * Registers a resource.
+	 * @param {String} name The resource name.
+	 * @param {Object} [definition] The resource definition.
+	 * @example
+	 * CKEDITOR.plugins.add( 'sample', { ... plugin definition ... } );
+	 * @see CKEDITOR.pluginDefinition
+	 */
+	add : function( name, definition )
+	{
+		if ( this.registered[ name ] )
+			throw '[CKEDITOR.resourceManager.add] The resource name "' + name + '" is already registered.';
+
+		this.registered[ name ] = definition || {};
+	},
+
+	/**
+	 * Gets the definition of a specific resource.
+	 * @param {String} name The resource name.
+	 * @type Object
+	 * @example
+	 * var definition = <b>CKEDITOR.plugins.get( 'sample' )</b>;
+	 */
+	get : function( name )
+	{
+		return this.registered[ name ] || null;
+	},
+
+	/**
+	 * Get the folder path for a specific loaded resource.
+	 * @param {String} name The resource name.
+	 * @type String
+	 * @example
+	 * alert( <b>CKEDITOR.plugins.getPath( 'sample' )</b> );  // "&lt;editor path&gt;/plugins/sample/"
+	 */
+	getPath : function( name )
+	{
+		var external = this.externals[ name ];
+		return CKEDITOR.getUrl( ( external && external.dir ) || this.basePath + name + '/' );
+	},
+
+	/**
+	 * Get the file path for a specific loaded resource.
+	 * @param {String} name The resource name.
+	 * @type String
+	 * @example
+	 * alert( <b>CKEDITOR.plugins.getFilePath( 'sample' )</b> );  // "&lt;editor path&gt;/plugins/sample/plugin.js"
+	 */
+	getFilePath : function( name )
+	{
+		var external = this.externals[ name ];
+		return CKEDITOR.getUrl(
+				this.getPath( name ) +
+				( ( external && external.file ) || ( this.fileName + '.js' ) ) );
+	},
+
+	/**
+	 * Registers one or more resources to be loaded from an external path
+	 * instead of the core base path.
+	 * @param {String} names The resource names, separated by commas.
+	 * @param {String} path The path of the folder containing the resource.
+	 * @param {String} [fileName] The resource file name. If not provided, the
+	 *		default name is used.
+	 * @example
+	 * // Loads a plugin from '/myplugin/samples/plugin.js'.
+	 * CKEDITOR.plugins.addExternal( 'sample', '/myplugins/sample/' );
+	 * @example
+	 * // Loads a plugin from '/myplugin/samples/my_plugin.js'.
+	 * CKEDITOR.plugins.addExternal( 'sample', '/myplugins/sample/', 'my_plugin.js' );
+	 */
+	addExternal : function( names, path, fileName )
+	{
+		names = names.split( ',' );
+		for ( var i = 0 ; i < names.length ; i++ )
+		{
+			var name = names[ i ];
+
+			this.externals[ name ] =
+			{
+				dir : path,
+				file : fileName
+			};
+		}
+	},
+
+	/**
+	 * Loads one or more resources.
+	 * @param {String|Array} name The name of the resource to load. It may be a
+	 *		string with a single resource name, or an array with several names.
+	 * @param {Function} callback A function to be called when all resources
+	 *		are loaded. The callback will receive an array containing all
+	 *		loaded names.
+	 * @param {Object} [scope] The scope object to be used for the callback
+	 *		call.
+	 * @example
+	 * <b>CKEDITOR.plugins.load</b>( 'myplugin', function( plugins )
+	 *     {
+	 *         alert( plugins['myplugin'] );  // "object"
+	 *     });
+	 */
+	load : function( names, callback, scope )
+	{
+		// Ensure that we have an array of names.
+		if ( !CKEDITOR.tools.isArray( names ) )
+			names = names ? [ names ] : [];
+
+		var loaded = this.loaded,
+			registered = this.registered,
+			urls = [],
+			urlsNames = {},
+			resources = {};
+
+		// Loop through all names.
+		for ( var i = 0 ; i < names.length ; i++ )
+		{
+			var name = names[ i ];
+
+			if ( !name )
+				continue;
+
+			// If not available yet.
+			if ( !loaded[ name ] && !registered[ name ] )
+			{
+				var url = this.getFilePath( name );
+				urls.push( url );
+				if ( !( url in urlsNames ) )
+					urlsNames[ url ] = [];
+				urlsNames[ url ].push( name );
+			}
+			else
+				resources[ name ] = this.get( name );
+		}
+
+		CKEDITOR.scriptLoader.load( urls, function( completed, failed )
+			{
+				if ( failed.length )
+				{
+					throw '[CKEDITOR.resourceManager.load] Resource name "' + urlsNames[ failed[ 0 ] ].join( ',' )
+						+ '" was not found at "' + failed[ 0 ] + '".';
+				}
+
+				for ( var i = 0 ; i < completed.length ; i++ )
+				{
+					var nameList = urlsNames[ completed[ i ] ];
+					for ( var j = 0 ; j < nameList.length ; j++ )
+					{
+						var name = nameList[ j ];
+						resources[ name ] = this.get( name );
+
+						loaded[ name ] = 1;
+					}
+				}
+
+				callback.call( scope, resources );
+			}
+			, this);
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/_source/core/ajax.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/ajax.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/ajax.js	(revision 2000)
@@ -0,0 +1,143 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.ajax} object, which holds ajax methods for
+ *		data loading.
+ */
+
+/**
+ * Ajax methods for data loading.
+ * @namespace
+ * @example
+ */
+CKEDITOR.ajax = (function()
+{
+	var createXMLHttpRequest = function()
+	{
+		// In IE, using the native XMLHttpRequest for local files may throw
+		// "Access is Denied" errors.
+		if ( !CKEDITOR.env.ie || location.protocol != 'file:' )
+			try { return new XMLHttpRequest(); } catch(e) {}
+
+		try { return new ActiveXObject( 'Msxml2.XMLHTTP' ); } catch (e) {}
+		try { return new ActiveXObject( 'Microsoft.XMLHTTP' ); } catch (e) {}
+
+		return null;
+	};
+
+	var checkStatus = function( xhr )
+	{
+		// HTTP Status Codes:
+		//	 2xx : Success
+		//	 304 : Not Modified
+		//	   0 : Returned when running locally (file://)
+		//	1223 : IE may change 204 to 1223 (see http://dev.jquery.com/ticket/1450)
+
+		return ( xhr.readyState == 4 &&
+				(	( xhr.status >= 200 && xhr.status < 300 ) ||
+					xhr.status == 304 ||
+					xhr.status === 0 ||
+					xhr.status == 1223 ) );
+	};
+
+	var getResponseText = function( xhr )
+	{
+		if ( checkStatus( xhr ) )
+			return xhr.responseText;
+		return null;
+	};
+
+	var getResponseXml = function( xhr )
+	{
+		if ( checkStatus( xhr ) )
+		{
+			var xml = xhr.responseXML;
+			return new CKEDITOR.xml( xml && xml.firstChild ? xml : xhr.responseText );
+		}
+		return null;
+	};
+
+	var load = function( url, callback, getResponseFn )
+	{
+		var async = !!callback;
+
+		var xhr = createXMLHttpRequest();
+
+		if ( !xhr )
+			return null;
+
+		xhr.open( 'GET', url, async );
+
+		if ( async )
+		{
+			// TODO: perform leak checks on this closure.
+			/** @ignore */
+			xhr.onreadystatechange = function()
+			{
+				if ( xhr.readyState == 4 )
+				{
+					callback( getResponseFn( xhr ) );
+					xhr = null;
+				}
+			};
+		}
+
+		xhr.send(null);
+
+		return async ? '' : getResponseFn( xhr );
+	};
+
+	return 	/** @lends CKEDITOR.ajax */ {
+
+		/**
+		 * Loads data from an URL as plain text.
+		 * @param {String} url The URL from which load data.
+		 * @param {Function} [callback] A callback function to be called on
+		 *		data load. If not provided, the data will be loaded
+		 *		asynchronously, passing the data value the function on load.
+		 * @returns {String} The loaded data. For asynchronous requests, an
+		 *		empty string. For invalid requests, null.
+		 * @example
+		 * // Load data synchronously.
+		 * var data = CKEDITOR.ajax.load( 'somedata.txt' );
+		 * alert( data );
+		 * @example
+		 * // Load data asynchronously.
+		 * var data = CKEDITOR.ajax.load( 'somedata.txt', function( data )
+		 *     {
+		 *         alert( data );
+		 *     } );
+		 */
+		load : function( url, callback )
+		{
+			return load( url, callback, getResponseText );
+		},
+
+		/**
+		 * Loads data from an URL as XML.
+		 * @param {String} url The URL from which load data.
+		 * @param {Function} [callback] A callback function to be called on
+		 *		data load. If not provided, the data will be loaded
+		 *		asynchronously, passing the data value the function on load.
+		 * @returns {CKEDITOR.xml} An XML object holding the loaded data. For asynchronous requests, an
+		 *		empty string. For invalid requests, null.
+		 * @example
+		 * // Load XML synchronously.
+		 * var xml = CKEDITOR.ajax.loadXml( 'somedata.xml' );
+		 * alert( xml.getInnerXml( '//' ) );
+		 * @example
+		 * // Load XML asynchronously.
+		 * var data = CKEDITOR.ajax.loadXml( 'somedata.xml', function( xml )
+		 *     {
+		 *         alert( xml.getInnerXml( '//' ) );
+		 *     } );
+		 */
+		loadXml : function( url, callback )
+		{
+			return load( url, callback, getResponseXml );
+		}
+	};
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/core/themes.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/themes.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/themes.js	(revision 2000)
@@ -0,0 +1,19 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.themes} object, which is used to
+ *		manage themes registration and loading.
+ */
+
+/**
+ * Manages themes registration and loading.
+ * @namespace
+ * @augments CKEDITOR.resourceManager
+ * @example
+ */
+CKEDITOR.themes = new CKEDITOR.resourceManager(
+	'_source/'+		// @Packager.RemoveLine
+	'themes/', 'theme' );
Index: /trunk/filemanager/tp/ckeditor/_source/core/editor.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/editor.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/editor.js	(revision 2000)
@@ -0,0 +1,671 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.editor} class, which represents an
+ *		editor instance.
+ */
+
+(function()
+{
+	// The counter for automatic instance names.
+	var nameCounter = 0;
+
+	var getNewName = function()
+	{
+		var name = 'editor' + ( ++nameCounter );
+		return ( CKEDITOR.instances && CKEDITOR.instances[ name ] ) ? getNewName() : name;
+	};
+
+	// ##### START: Config Privates
+
+	// These function loads custom configuration files and cache the
+	// CKEDITOR.editorConfig functions defined on them, so there is no need to
+	// download them more than once for several instances.
+	var loadConfigLoaded = {};
+	var loadConfig = function( editor )
+	{
+		var customConfig = editor.config.customConfig;
+
+		// Check if there is a custom config to load.
+		if ( !customConfig )
+			return false;
+
+		var loadedConfig = loadConfigLoaded[ customConfig ] || ( loadConfigLoaded[ customConfig ] = {} );
+
+		// If the custom config has already been downloaded, reuse it.
+		if ( loadedConfig.fn )
+		{
+			// Call the cached CKEDITOR.editorConfig defined in the custom
+			// config file for the editor instance depending on it.
+			loadedConfig.fn.call( editor, editor.config );
+
+			// If there is no other customConfig in the chain, fire the
+			// "configLoaded" event.
+			if ( editor.config.customConfig == customConfig || !loadConfig( editor ) )
+				editor.fireOnce( 'customConfigLoaded' );
+		}
+		else
+		{
+			// Load the custom configuration file.
+			CKEDITOR.scriptLoader.load( customConfig, function()
+				{
+					// If the CKEDITOR.editorConfig function has been properly
+					// defined in the custom configuration file, cache it.
+					if ( CKEDITOR.editorConfig )
+						loadedConfig.fn = CKEDITOR.editorConfig;
+					else
+						loadedConfig.fn = function(){};
+
+					// Call the load config again. This time the custom
+					// config is already cached and so it will get loaded.
+					loadConfig( editor );
+				});
+		}
+
+		return true;
+	};
+
+	var initConfig = function( editor, instanceConfig )
+	{
+		// Setup the lister for the "customConfigLoaded" event.
+		editor.on( 'customConfigLoaded', function()
+			{
+				if ( instanceConfig )
+				{
+					// Register the events that may have been set at the instance
+					// configuration object.
+					if ( instanceConfig.on )
+					{
+						for ( var eventName in instanceConfig.on )
+						{
+							editor.on( eventName, instanceConfig.on[ eventName ] );
+						}
+					}
+
+					// Overwrite the settings from the in-page config.
+					CKEDITOR.tools.extend( editor.config, instanceConfig, true );
+
+					delete editor.config.on;
+				}
+
+				onConfigLoaded( editor );
+			});
+
+		// The instance config may override the customConfig setting to avoid
+		// loading the default ~/config.js file.
+		if ( instanceConfig && instanceConfig.customConfig != undefined )
+			editor.config.customConfig = instanceConfig.customConfig;
+
+		// Load configs from the custom configuration files.
+		if ( !loadConfig( editor ) )
+			editor.fireOnce( 'customConfigLoaded' );
+	};
+
+	// ##### END: Config Privates
+
+	var onConfigLoaded = function( editor )
+	{
+		// Set config related properties.
+
+		var skin = editor.config.skin.split( ',' ),
+			skinName = skin[ 0 ],
+			skinPath = CKEDITOR.getUrl( skin[ 1 ] || (
+				'_source/' +	// @Packager.RemoveLine
+				'skins/' + skinName + '/' ) );
+
+		editor.skinName = skinName;
+		editor.skinPath = skinPath;
+		editor.skinClass = 'cke_skin_' + skinName;
+
+		// Fire the "configLoaded" event.
+		editor.fireOnce( 'configLoaded' );
+
+		// Load language file.
+		loadLang( editor );
+	};
+
+	var loadLang = function( editor )
+	{
+		CKEDITOR.lang.load( editor.config.language, editor.config.defaultLanguage, function( languageCode, lang )
+			{
+				editor.langCode = languageCode;
+
+				// As we'll be adding plugin specific entries that could come
+				// from different language code files, we need a copy of lang,
+				// not a direct reference to it.
+				editor.lang = CKEDITOR.tools.prototypedCopy( lang );
+
+				// We're not able to support RTL in Firefox 2 at this time.
+				if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 && editor.lang.dir == 'rtl' )
+					editor.lang.dir = 'ltr';
+
+				loadPlugins( editor );
+			});
+	};
+
+	var loadPlugins = function( editor )
+	{
+		var config			= editor.config,
+			plugins			= config.plugins,
+			extraPlugins	= config.extraPlugins,
+			removePlugins	= config.removePlugins;
+
+		if ( extraPlugins )
+		{
+			// Remove them first to avoid duplications.
+			var removeRegex = new RegExp( '(?:^|,)(?:' + extraPlugins.replace( /\s*,\s*/g, '|' ) + ')(?=,|$)' , 'g' );
+			plugins = plugins.replace( removeRegex, '' );
+
+			plugins += ',' + extraPlugins;
+		}
+
+		if ( removePlugins )
+		{
+			removeRegex = new RegExp( '(?:^|,)(?:' + removePlugins.replace( /\s*,\s*/g, '|' ) + ')(?=,|$)' , 'g' );
+			plugins = plugins.replace( removeRegex, '' );
+		}
+
+		// Load all plugins defined in the "plugins" setting.
+		CKEDITOR.plugins.load( plugins.split( ',' ), function( plugins )
+			{
+				// The list of plugins.
+				var pluginsArray = [];
+
+				// The language code to get loaded for each plugin. Null
+				// entries will be appended for plugins with no language files.
+				var languageCodes = [];
+
+				// The list of URLs to language files.
+				var languageFiles = [];
+
+				// Cache the loaded plugin names.
+				editor.plugins = plugins;
+
+				// Loop through all plugins, to build the list of language
+				// files to get loaded.
+				for ( var pluginName in plugins )
+				{
+					var plugin = plugins[ pluginName ],
+						pluginLangs = plugin.lang,
+						pluginPath = CKEDITOR.plugins.getPath( pluginName ),
+						lang = null;
+
+					// Set the plugin path in the plugin.
+					plugin.path = pluginPath;
+
+					// If the plugin has "lang".
+					if ( pluginLangs )
+					{
+						// Resolve the plugin language. If the current language
+						// is not available, get the first one (default one).
+						lang = ( CKEDITOR.tools.indexOf( pluginLangs, editor.langCode ) >= 0 ? editor.langCode : pluginLangs[ 0 ] );
+
+						if ( !plugin.lang[ lang ] )
+						{
+							// Put the language file URL into the list of files to
+							// get downloaded.
+							languageFiles.push( CKEDITOR.getUrl( pluginPath + 'lang/' + lang + '.js' ) );
+						}
+						else
+						{
+							CKEDITOR.tools.extend( editor.lang, plugin.lang[ lang ] );
+							lang = null;
+						}
+					}
+
+					// Save the language code, so we know later which
+					// language has been resolved to this plugin.
+					languageCodes.push( lang );
+
+					pluginsArray.push( plugin );
+				}
+
+				// Load all plugin specific language files in a row.
+				CKEDITOR.scriptLoader.load( languageFiles, function()
+					{
+						// Initialize all plugins that have the "beforeInit" and "init" methods defined.
+						var methods = [ 'beforeInit', 'init', 'afterInit' ];
+						for ( var m = 0 ; m < methods.length ; m++ )
+						{
+							for ( var i = 0 ; i < pluginsArray.length ; i++ )
+							{
+								var plugin = pluginsArray[ i ];
+
+								// Uses the first loop to update the language entries also.
+								if ( m === 0 && languageCodes[ i ] && plugin.lang )
+									CKEDITOR.tools.extend( editor.lang, plugin.lang[ languageCodes[ i ] ] );
+
+								// Call the plugin method (beforeInit and init).
+								if ( plugin[ methods[ m ] ] )
+									plugin[ methods[ m ] ]( editor );
+							}
+						}
+
+						// Load the editor skin.
+						editor.fire( 'pluginsLoaded' );
+						loadSkin( editor );
+					});
+			});
+	};
+
+	var loadSkin = function( editor )
+	{
+		CKEDITOR.skins.load( editor, 'editor', function()
+			{
+				loadTheme( editor );
+			});
+	};
+
+	var loadTheme = function( editor )
+	{
+		var theme = editor.config.theme;
+		CKEDITOR.themes.load( theme, function()
+			{
+				var editorTheme = editor.theme = CKEDITOR.themes.get( theme );
+				editorTheme.path = CKEDITOR.themes.getPath( theme );
+				editorTheme.build( editor );
+
+				if ( editor.config.autoUpdateElement )
+					attachToForm( editor );
+			});
+	};
+
+	var attachToForm = function( editor )
+	{
+		var element = editor.element;
+
+		// If are replacing a textarea, we must
+		if ( editor.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE && element.is( 'textarea' ) )
+		{
+			var form = element.$.form && new CKEDITOR.dom.element( element.$.form );
+			if ( form )
+			{
+				function onSubmit()
+				{
+					editor.updateElement();
+				}
+				form.on( 'submit',onSubmit );
+
+				// Setup the submit function because it doesn't fire the
+				// "submit" event.
+				if ( !form.$.submit.nodeName )
+				{
+					form.$.submit = CKEDITOR.tools.override( form.$.submit, function( originalSubmit )
+						{
+							return function()
+								{
+									editor.updateElement();
+
+									// For IE, the DOM submit function is not a
+									// function, so we need thid check.
+									if ( originalSubmit.apply )
+										originalSubmit.apply( this, arguments );
+									else
+										originalSubmit();
+								};
+						});
+				}
+
+				// Remove 'submit' events registered on form element before destroying.(#3988)
+				editor.on( 'destroy', function()
+				{
+					form.removeListener( 'submit', onSubmit );
+				} );
+			}
+		}
+	};
+
+	function updateCommandsMode()
+	{
+		var command,
+			commands = this._.commands,
+			mode = this.mode;
+
+		for ( var name in commands )
+		{
+			command = commands[ name ];
+			command[ command.modes[ mode ] ? 'enable' : 'disable' ]();
+		}
+	}
+
+	/**
+	 * Initializes the editor instance. This function is called by the editor
+	 * contructor (editor_basic.js).
+	 * @private
+	 */
+	CKEDITOR.editor.prototype._init = function()
+		{
+			// Get the properties that have been saved in the editor_base
+			// implementation.
+			var element			= CKEDITOR.dom.element.get( this._.element ),
+				instanceConfig	= this._.instanceConfig;
+			delete this._.element;
+			delete this._.instanceConfig;
+
+			this._.commands = {};
+			this._.styles = [];
+
+			/**
+			 * The DOM element that has been replaced by this editor instance. This
+			 * element holds the editor data on load and post.
+			 * @name CKEDITOR.editor.prototype.element
+			 * @type CKEDITOR.dom.element
+			 * @example
+			 * var editor = CKEDITOR.instances.editor1;
+			 * alert( <b>editor.element</b>.getName() );  "textarea"
+			 */
+			this.element = element;
+
+			/**
+			 * The editor instance name. It hay be the replaced element id, name or
+			 * a default name using a progressive counter (editor1, editor2, ...).
+			 * @name CKEDITOR.editor.prototype.name
+			 * @type String
+			 * @example
+			 * var editor = CKEDITOR.instances.editor1;
+			 * alert( <b>editor.name</b> );  "editor1"
+			 */
+			this.name = ( element && ( this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
+							&& ( element.getId() || element.getNameAtt() ) )
+						|| getNewName();
+
+			if ( this.name in CKEDITOR.instances )
+				throw '[CKEDITOR.editor] The instance "' + this.name + '" already exists.';
+
+			/**
+			 * The configurations for this editor instance. It inherits all
+			 * settings defined in (@link CKEDITOR.config}, combined with settings
+			 * loaded from custom configuration files and those defined inline in
+			 * the page when creating the editor.
+			 * @name CKEDITOR.editor.prototype.config
+			 * @type Object
+			 * @example
+			 * var editor = CKEDITOR.instances.editor1;
+			 * alert( <b>editor.config.theme</b> );  "default" e.g.
+			 */
+			this.config = CKEDITOR.tools.prototypedCopy( CKEDITOR.config );
+
+			/**
+			 * Namespace containing UI features related to this editor instance.
+			 * @name CKEDITOR.editor.prototype.ui
+			 * @type CKEDITOR.ui
+			 * @example
+			 */
+			this.ui = new CKEDITOR.ui( this );
+
+			/**
+			 * Controls the focus state of this editor instance. This property
+			 * is rarely used for normal API operations. It is mainly
+			 * destinated to developer adding UI elements to the editor interface.
+			 * @name CKEDITOR.editor.prototype.focusManager
+			 * @type CKEDITOR.focusManager
+			 * @example
+			 */
+			this.focusManager = new CKEDITOR.focusManager( this );
+
+			CKEDITOR.fire( 'instanceCreated', null, this );
+
+			this.on( 'mode', updateCommandsMode, null, null, 1 );
+
+			initConfig( this, instanceConfig );
+		};
+})();
+
+CKEDITOR.tools.extend( CKEDITOR.editor.prototype,
+	/** @lends CKEDITOR.editor.prototype */
+	{
+		/**
+		 * Adds a command definition to the editor instance. Commands added with
+		 * this function can be later executed with {@link #execCommand}.
+		 * @param {String} commandName The indentifier name of the command.
+		 * @param {CKEDITOR.commandDefinition} commandDefinition The command definition.
+		 * @example
+		 * editorInstance.addCommand( 'sample',
+		 * {
+		 *     exec : function( editor )
+		 *     {
+		 *         alert( 'Executing a command for the editor name "' + editor.name + '"!' );
+		 *     }
+		 * });
+		 */
+		addCommand : function( commandName, commandDefinition )
+		{
+			return this._.commands[ commandName ] = new CKEDITOR.command( this, commandDefinition );
+		},
+
+		/**
+		 * Add a trunk of css text to the editor which will be applied to the wysiwyg editing document.
+		 * Note: This function should be called before editor is loaded to take effect.
+		 * @param css {String} CSS text.
+		 * @example
+		 * editorInstance.addCss( 'body { background-color: grey; }' );
+		 */
+		addCss : function( css )
+		{
+			this._.styles.push( css );
+		},
+
+		/**
+		 * Destroys the editor instance, releasing all resources used by it.
+		 * If the editor replaced an element, the element will be recovered.
+		 * @param {Boolean} [noUpdate] If the instance is replacing a DOM
+		 *		element, this parameter indicates whether or not to update the
+		 *		element with the instance contents.
+		 * @example
+		 * alert( CKEDITOR.instances.editor1 );  e.g "object"
+		 * <b>CKEDITOR.instances.editor1.destroy()</b>;
+		 * alert( CKEDITOR.instances.editor1 );  "undefined"
+		 */
+		destroy : function( noUpdate )
+		{
+			if ( !noUpdate )
+				this.updateElement();
+
+			this.theme.destroy( this );
+			this.fire( 'destroy' );
+			CKEDITOR.remove( this );
+		},
+
+		/**
+		 * Executes a command.
+		 * @param {String} commandName The indentifier name of the command.
+		 * @param {Object} [data] Data to be passed to the command
+		 * @returns {Boolean} "true" if the command has been successfuly
+		 *		executed, otherwise "false".
+		 * @example
+		 * editorInstance.execCommand( 'Bold' );
+		 */
+		execCommand : function( commandName, data )
+		{
+			var command = this.getCommand( commandName );
+
+			var eventData =
+			{
+				name: commandName,
+				commandData: data,
+				command: command
+			};
+
+			if ( command && command.state != CKEDITOR.TRISTATE_DISABLED )
+			{
+				if ( this.fire( 'beforeCommandExec', eventData ) !== true )
+				{
+					eventData.returnValue = command.exec( eventData.commandData );
+
+					// Fire the 'afterCommandExec' immediately if command is synchronous.
+					if ( !command.async && this.fire( 'afterCommandExec', eventData ) !== true )
+						return eventData.returnValue;
+				}
+			}
+
+			// throw 'Unknown command name "' + commandName + '"';
+			return false;
+		},
+
+		/**
+		 * Gets one of the registered commands. Note that, after registering a
+		 * command definition with addCommand, it is transformed internally
+		 * into an instance of {@link CKEDITOR.command}, which will be then
+		 * returned by this function.
+		 * @param {String} commandName The name of the command to be returned.
+		 * This is the same used to register the command with addCommand.
+		 * @returns {CKEDITOR.command} The command object identified by the
+		 * provided name.
+		 */
+		getCommand : function( commandName )
+		{
+			return this._.commands[ commandName ];
+		},
+
+		/**
+		 * Gets the editor data. The data will be in raw format. It is the same
+		 * data that is posted by the editor.
+		 * @type String
+		 * @returns (String) The editor data.
+		 * @example
+		 * if ( CKEDITOR.instances.editor1.<b>getData()</b> == '' )
+		 *     alert( 'There is no data available' );
+		 */
+		getData : function()
+		{
+			this.fire( 'beforeGetData' );
+
+			var eventData = this._.data;
+
+			if ( typeof eventData != 'string' )
+			{
+				var element = this.element;
+				if ( element && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
+					eventData = element.is( 'textarea' ) ? element.getValue() : element.getHtml();
+				else
+					eventData = '';
+			}
+
+			eventData = { dataValue : eventData };
+
+			// Fire "getData" so data manipulation may happen.
+			this.fire( 'getData', eventData );
+
+			return eventData.dataValue;
+		},
+
+		getSnapshot : function()
+		{
+			var data = this.fire( 'getSnapshot' );
+
+			if ( typeof data != 'string' )
+			{
+				var element = this.element;
+				if ( element && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
+					data = element.is( 'textarea' ) ? element.getValue() : element.getHtml();
+			}
+
+			return data;
+		},
+
+		loadSnapshot : function( snapshot )
+		{
+			this.fire( 'loadSnapshot', snapshot );
+		},
+
+		/**
+		 * Sets the editor data. The data must be provided in raw format.
+		 * @param {String} data HTML code to replace the curent content in the editor.
+		 * @param {Function} callback Function to be called after the setData is completed.
+		 * @example
+		 * CKEDITOR.instances.editor1.<b>setData( '&lt;p&gt;This is the editor data.&lt;/p&gt;' )</b>;
+		 * CKEDITOR.instances.editor1.setData( '&lt;p&gt;Some other editor data.&lt;/p&gt;', function()
+		 * {
+		 * 		CKEDITOR.instances.editor1.checkDirty(); 	// true
+		 * } );
+		 */
+		setData : function( data , callback )
+		{
+			if( callback )
+			{
+				this.on( 'dataReady', function( evt )
+				{
+					evt.removeListener();
+					callback.call( evt.editor );
+				} );
+			}
+			// Fire "setData" so data manipulation may happen.
+			var eventData = { dataValue : data };
+			this.fire( 'setData', eventData );
+
+			this._.data = eventData.dataValue;
+
+			this.fire( 'afterSetData', eventData );
+		},
+
+		/**
+		 * Inserts HTML into the currently selected position in the editor.
+		 * @param {String} data HTML code to be inserted into the editor.
+		 * @example
+		 * CKEDITOR.instances.editor1.<b>insertHtml( '&lt;p&gt;This is a new paragraph.&lt;/p&gt;' )</b>;
+		 */
+		insertHtml : function( data )
+		{
+			this.fire( 'insertHtml', data );
+		},
+
+		/**
+		 * Inserts an element into the currently selected position in the
+		 * editor.
+		 * @param {CKEDITOR.dom.element} element The element to be inserted
+		 *		into the editor.
+		 * @example
+		 * var element = CKEDITOR.dom.element.createFromHtml( '&lt;img src="hello.png" border="0" title="Hello" /&gt;' );
+		 * CKEDITOR.instances.editor1.<b>insertElement( element )</b>;
+		 */
+		insertElement : function( element )
+		{
+			this.fire( 'insertElement', element );
+		},
+
+		checkDirty : function()
+		{
+			return ( this.mayBeDirty && this._.previousValue !== this.getSnapshot() );
+		},
+
+		resetDirty : function()
+		{
+			if ( this.mayBeDirty )
+				this._.previousValue = this.getSnapshot();
+		},
+
+		/**
+		 * Updates the &lt;textarea&gt; element that has been replaced by the editor with
+		 * the current data available in the editor.
+		 * @example
+		 * CKEDITOR.instances.editor1.updateElement();
+		 * alert( document.getElementById( 'editor1' ).value );  // The current editor data.
+		 */
+		updateElement : function()
+		{
+			var element = this.element;
+			if ( element && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
+			{
+				if ( element.is( 'textarea' ) )
+					element.setValue( this.getData() );
+				else
+					element.setHtml( this.getData() );
+			}
+		}
+	});
+
+CKEDITOR.on( 'loaded', function()
+	{
+		// Run the full initialization for pending editors.
+		var pending = CKEDITOR.editor._pending;
+		if ( pending )
+		{
+			delete CKEDITOR.editor._pending;
+
+			for ( var i = 0 ; i < pending.length ; i++ )
+				pending[ i ]._init();
+		}
+	});
Index: /trunk/filemanager/tp/ckeditor/_source/core/editor_basic.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/editor_basic.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/editor_basic.js	(revision 2000)
@@ -0,0 +1,178 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+if ( !CKEDITOR.editor )
+{
+	/**
+	 * No element is linked to the editor instance.
+	 * @constant
+	 * @example
+	 */
+	CKEDITOR.ELEMENT_MODE_NONE = 0;
+
+	/**
+	 * The element is to be replaced by the editor instance.
+	 * @constant
+	 * @example
+	 */
+	CKEDITOR.ELEMENT_MODE_REPLACE = 1;
+
+	/**
+	 * The editor is to be created inside the element.
+	 * @constant
+	 * @example
+	 */
+	CKEDITOR.ELEMENT_MODE_APPENDTO = 2;
+
+	/**
+	 * Represents an editor instance. This constructor should be rarely used,
+	 * being the {@link CKEDITOR} methods preferible.
+	 * @constructor
+	 * @param {Object} instanceConfig Configuration values for this specific
+	 *		instance.
+	 * @param {CKEDITOR.dom.element} [element] The element linked to this
+	 *		instance.
+	 * @param {Number} [mode] The mode in which the element is linked to this
+	 *		instance.
+	 * @augments CKEDITOR.event
+	 * @example
+	 */
+	CKEDITOR.editor = function( instanceConfig, element, mode )
+	{
+		this._ =
+		{
+			// Save the config to be processed later by the full core code.
+			instanceConfig : instanceConfig,
+			element : element
+		};
+
+		/**
+		 * The mode in which the {@link #element} is linked to this editor
+		 * instance. It can be any of the following values:
+		 * <ul>
+		 * <li><b>CKEDITOR.ELEMENT_MODE_NONE</b>: No element is linked to the
+		 *		editor instance.</li>
+		 * <li><b>CKEDITOR.ELEMENT_MODE_REPLACE</b>: The element is to be
+		 *		replaced by the editor instance.</li>
+		 * <li><b>CKEDITOR.ELEMENT_MODE_APPENDTO</b>: The editor is to be
+		 *		created inside the element.</li>
+		 * </ul>
+		 * @name CKEDITOR.editor.prototype.elementMode
+		 * @type Number
+		 * @example
+		 * var editor = CKEDITOR.replace( 'editor1' );
+		 * alert( <b>editor.elementMode</b> );  "1"
+		 */
+		this.elementMode = mode || CKEDITOR.ELEMENT_MODE_NONE;
+
+		// Call the CKEDITOR.event constructor to initialize this instance.
+		CKEDITOR.event.call( this );
+
+		this._init();
+	};
+
+	/**
+	 * Replaces a &lt;textarea&gt; or a DOM element (DIV) with a CKEditor
+	 * instance. For textareas, the initial value in the editor will be the
+	 * textarea value. For DOM elements, their innerHTML will be used
+	 * instead. We recommend using TEXTAREA and DIV elements only. Do not use
+	 * this function directly. Use {@link CKEDITOR.replace} instead.
+	 * @param {Object|String} elementOrIdOrName The DOM element (textarea), its
+	 *		ID or name.
+	 * @param {Object} [config] The specific configurations to apply to this
+	 *		editor instance. Configurations set here will override global CKEditor
+	 *		settings.
+	 * @returns {CKEDITOR.editor} The editor instance created.
+	 * @example
+	 */
+	CKEDITOR.editor.replace = function( elementOrIdOrName, config )
+	{
+		var element = elementOrIdOrName;
+
+		if ( typeof element != 'object' )
+		{
+			// Look for the element by id. We accept any kind of element here.
+			element = document.getElementById( elementOrIdOrName );
+
+			// If not found, look for elements by name. In this case we accept only
+			// textareas.
+			if ( !element )
+			{
+				var i = 0,
+					textareasByName	= document.getElementsByName( elementOrIdOrName );
+
+				while ( ( element = textareasByName[ i++ ] ) && element.tagName.toLowerCase() != 'textarea' )
+				{ /*jsl:pass*/ }
+			}
+
+			if ( !element )
+				throw '[CKEDITOR.editor.replace] The element with id or name "' + elementOrIdOrName + '" was not found.';
+		}
+
+		// Do not replace the textarea right now, just hide it. The effective
+		// replacement will be done by the _init function.
+		element.style.visibility = 'hidden';
+
+		// Create the editor instance.
+		return new CKEDITOR.editor( config, element, CKEDITOR.ELEMENT_MODE_REPLACE );
+	};
+
+	/**
+	 * Creates a new editor instance inside a specific DOM element. Do not use
+	 * this function directly. Use {@link CKEDITOR.appendTo} instead.
+	 * @param {Object|String} elementOrId The DOM element or its ID.
+	 * @param {Object} [config] The specific configurations to apply to this
+	 *		editor instance. Configurations set here will override global CKEditor
+	 *		settings.
+	 * @returns {CKEDITOR.editor} The editor instance created.
+	 * @example
+	 */
+	CKEDITOR.editor.appendTo = function( elementOrId, config )
+	{
+		if ( typeof elementOrId != 'object' )
+		{
+			elementOrId = document.getElementById( elementOrId );
+
+			if ( !elementOrId )
+				throw '[CKEDITOR.editor.appendTo] The element with id "' + elementOrId + '" was not found.';
+		}
+
+		// Create the editor instance.
+		return new CKEDITOR.editor( config, elementOrId, CKEDITOR.ELEMENT_MODE_APPENDTO );
+	};
+
+	CKEDITOR.editor.prototype =
+	{
+		/**
+		 * Initializes the editor instance. This function will be overriden by the
+		 * full CKEDITOR.editor implementation (editor.js).
+		 * @private
+		 */
+		_init : function()
+		{
+			var pending = CKEDITOR.editor._pending || ( CKEDITOR.editor._pending = [] );
+			pending.push( this );
+		},
+
+		// Both fire and fireOnce will always pass this editor instance as the
+		// "editor" param in CKEDITOR.event.fire. So, we override it to do that
+		// automaticaly.
+
+		/** @ignore */
+		fire : function( eventName, data )
+		{
+			return CKEDITOR.event.prototype.fire.call( this, eventName, data, this );
+		},
+
+		/** @ignore */
+		fireOnce : function( eventName, data )
+		{
+			return CKEDITOR.event.prototype.fireOnce.call( this, eventName, data, this );
+		}
+	};
+
+	// "Inherit" (copy actually) from CKEDITOR.event.
+	CKEDITOR.event.implementOn( CKEDITOR.editor.prototype, true );
+}
Index: /trunk/filemanager/tp/ckeditor/_source/core/commanddefinition.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/commanddefinition.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/commanddefinition.js	(revision 2000)
@@ -0,0 +1,86 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the "virtual" {@link CKEDITOR.commandDefinition} class,
+ *		which contains the defintion of a command. This file is for
+ *		documentation purposes only.
+ */
+
+/**
+ * (Virtual Class) Do not call this constructor. This class is not really part
+ *		of the API. It just illustrates the features of command objects to be
+ *		passed to the {@link CKEDITOR.editor.prototype.addCommand} function.
+ * @name CKEDITOR.commandDefinition
+ * @constructor
+ * @example
+ */
+
+ /**
+ * Executes the command.
+ * @name CKEDITOR.commandDefinition.prototype.exec
+ * @function
+ * @param {CKEDITOR.editor} editor The editor within which run the command.
+ * @param {Object} [data] Additional data to be used to execute the command.
+ * @returns {Boolean} Whether the command has been successfully executed.
+ *		Defaults to "true", if nothing is returned.
+ * @example
+ * editorInstance.addCommand( 'sample',
+ * {
+ *     exec : function( editor )
+ *     {
+ *         alert( 'Executing a command for the editor name "' + editor.name + '"!' );
+ *     }
+ * });
+ */
+
+/**
+ * Whether the command need to be hooked into the redo/undo system.
+ * @name  CKEDITOR.commandDefinition.canUndo
+ * @type {Boolean} If not defined or 'true' both hook into undo system, set it
+ *		to 'false' explicitly  keep it out.
+ * @field
+ * @example
+ * editorInstance.addCommand( 'alertName',
+ * {
+ *     exec : function( editor )
+ *     {
+ *         alert( editor.name );
+ *     },
+ *     canUndo : false    // No support for undo/redo
+ * });
+ */
+
+/**
+ * Whether the command is asynchronous, which means the 'afterCommandExec' event
+ * will be fired by the command itself manually, and the 'exec' function return value
+ * of this command is not to be returned.
+ * @name  CKEDITOR.commandDefinition.async
+ * @type {Boolean} If defined as 'true', the command is asynchronous.
+ * @example
+ * editorInstance.addCommand( 'alertName',
+ * {
+ *     exec : function( editor )
+ *     {
+ *         // Asynchronous operation below.
+ *         CKEDITOR.ajax.loadXml( 'data.xml' );
+ *     },
+ *     async : true    // The command need some time to complete after exec function returns.
+ * });
+ */
+
+/**
+ * Whether the command should give focus to the editor before execution.
+ * @name  CKEDITOR.commandDefinition.editorFocus
+ * @type {Boolean}
+ * @example
+ * editorInstance.addCommand( 'maximize',
+ * {
+ *     exec : function( editor )
+ *     {
+ *     },
+ *     editorFocus : false    // The command doesn't require focusing the editing document.
+ * });
+ */
Index: /trunk/filemanager/tp/ckeditor/_source/core/skins.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/skins.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/skins.js	(revision 2000)
@@ -0,0 +1,186 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.skins} object, which is used to
+ *		manage skins loading.
+ */
+
+/**
+ * Manages skins loading.
+ * @namespace
+ * @example
+ */
+CKEDITOR.skins = (function()
+{
+	// Holds the list of loaded skins.
+	var loaded = {};
+	var preloaded = {};
+	var paths = {};
+
+	var loadedPart = function( skinName, part, callback )
+	{
+		// Get the skin definition.
+		var skinDefinition = loaded[ skinName ];
+
+		var appendSkinPath = function( fileNames )
+		{
+			for ( var n = 0 ; n < fileNames.length ; n++ )
+			{
+				fileNames[ n ] = CKEDITOR.getUrl( paths[ skinName ] + fileNames[ n ] );
+			}
+		};
+
+		// Check if we need to preload images from it.
+		if ( !preloaded[ skinName ] )
+		{
+			var preload = skinDefinition.preload;
+			if ( preload && preload.length > 0 )
+			{
+				appendSkinPath( preload );
+				CKEDITOR.imageCacher.load( preload, function()
+					{
+						preloaded[ skinName ] = 1;
+						loadedPart( skinName, part, callback );
+					} );
+				return;
+			}
+
+			// Mark it as preloaded.
+			preloaded[ skinName ] = 1;
+		}
+
+		// Get the part definition.
+		part = skinDefinition[ part ];
+		var partIsLoaded = !part || !!part._isLoaded;
+
+		// Call the callback immediately if already loaded.
+		if ( partIsLoaded )
+			callback && callback();
+		else
+		{
+			// Put the callback in a queue.
+			var pending = part._pending || ( part._pending = [] );
+			pending.push( callback );
+
+			// We may have more than one skin part load request. Just the first
+			// one must do the loading job.
+			if ( pending.length > 1 )
+				return;
+
+			// Check whether the "css" and "js" properties have been defined
+			// for that part.
+			var cssIsLoaded = !part.css || !part.css.length;
+			var jsIsLoaded = !part.js || !part.js.length;
+
+			// This is the function that will trigger the callback calls on
+			// load.
+			var checkIsLoaded = function()
+			{
+				if ( cssIsLoaded && jsIsLoaded )
+				{
+					// Mark the part as loaded.
+					part._isLoaded = 1;
+
+					// Call all pending callbacks.
+					for ( var i = 0 ; i < pending.length ; i++ )
+					{
+						if ( pending[ i ] )
+							pending[ i ]();
+					}
+				}
+			};
+
+			// Load the "css" pieces.
+			if ( !cssIsLoaded )
+			{
+				appendSkinPath( part.css );
+
+				for ( var c = 0 ; c < part.css.length ; c++ )
+					CKEDITOR.document.appendStyleSheet( part.css[ c ] );
+
+				cssIsLoaded = 1;
+			}
+
+			// Load the "js" pieces.
+			if ( !jsIsLoaded )
+			{
+				appendSkinPath( part.js );
+				CKEDITOR.scriptLoader.load( part.js, function()
+					{
+						jsIsLoaded = 1;
+						checkIsLoaded();
+					});
+			}
+
+			// We may have nothing to load, so check it immediately.
+			checkIsLoaded();
+		}
+	};
+
+	return /** @lends CKEDITOR.skins */ {
+
+		/**
+		 * Registers a skin definition.
+		 * @param {String} skinName The skin name.
+		 * @param {Object} skinDefinition The skin definition.
+		 * @example
+		 */
+		add : function( skinName, skinDefinition )
+		{
+			loaded[ skinName ] = skinDefinition;
+
+			skinDefinition.skinPath = paths[ skinName ]
+				|| ( paths[ skinName ] =
+						CKEDITOR.getUrl(
+							'_source/' +	// @Packager.RemoveLine
+							'skins/' + skinName + '/' ) );
+		},
+
+		/**
+		 * Loads a skin part. Skins are defined in parts, which are basically
+		 * separated CSS files. This function is mainly used by the core code and
+		 * should not have much use out of it.
+		 * @param {String} skinName The name of the skin to be loaded.
+		 * @param {String} skinPart The skin part to be loaded. Common skin parts
+		 *		are "editor" and "dialog".
+		 * @param {Function} [callback] A function to be called once the skin
+		 *		part files are loaded.
+		 * @example
+		 */
+		load : function( editor, skinPart, callback )
+		{
+			var skinName = editor.skinName,
+				skinPath = editor.skinPath;
+
+			if ( loaded[ skinName ] )
+			{
+				loadedPart( skinName, skinPart, callback );
+
+				// Get the skin definition.
+				var skinDefinition = loaded[ skinName ];
+
+				// Trigger init function if any.
+				if ( skinDefinition.init )
+					skinDefinition.init( editor );
+			}
+			else
+			{
+				paths[ skinName ] = skinPath;
+				CKEDITOR.scriptLoader.load( skinPath + 'skin.js', function()
+						{
+							loadedPart( skinName, skinPart, callback );
+
+							// Get the skin definition.
+							var skinDefinition = loaded[ skinName ];
+
+							// Trigger init function if any.
+							if ( skinDefinition.init )
+								skinDefinition.init( editor );
+						});
+			}
+		}
+	};
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/core/env.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/env.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/env.js	(revision 2000)
@@ -0,0 +1,219 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.env} object, which constains
+ *		environment and browser information.
+ */
+
+if ( !CKEDITOR.env )
+{
+	/**
+	 * Environment and browser information.
+	 * @namespace
+	 * @example
+	 */
+	CKEDITOR.env = (function()
+	{
+		var agent = navigator.userAgent.toLowerCase();
+		var opera = window.opera;
+
+		var env =
+		/** @lends CKEDITOR.env */
+		{
+			/**
+			 * Indicates that CKEditor is running on Internet Explorer.
+			 * @type Boolean
+			 * @example
+			 * if ( CKEDITOR.env.ie )
+			 *     alert( "I'm on IE!" );
+			 */
+			ie		: /*@cc_on!@*/false,
+
+			/**
+			 * Indicates that CKEditor is running on Opera.
+			 * @type Boolean
+			 * @example
+			 * if ( CKEDITOR.env.opera )
+			 *     alert( "I'm on Opera!" );
+			 */
+			opera	: ( !!opera && opera.version ),
+
+			/**
+			 * Indicates that CKEditor is running on a WebKit based browser, like
+			 * Safari.
+			 * @type Boolean
+			 * @example
+			 * if ( CKEDITOR.env.webkit )
+			 *     alert( "I'm on WebKit!" );
+			 */
+			webkit	: ( agent.indexOf( ' applewebkit/' ) > -1 ),
+
+			/**
+			 * Indicates that CKEditor is running on Adobe AIR.
+			 * @type Boolean
+			 * @example
+			 * if ( CKEDITOR.env.air )
+			 *     alert( "I'm on AIR!" );
+			 */
+			air		: ( agent.indexOf( ' adobeair/' ) > -1 ),
+
+			/**
+			 * Indicates that CKEditor is running on Macintosh.
+			 * @type Boolean
+			 * @example
+			 * if ( CKEDITOR.env.mac )
+			 *     alert( "I love apples!" );
+			 */
+			mac	: ( agent.indexOf( 'macintosh' ) > -1 ),
+
+			quirks : ( document.compatMode == 'BackCompat' ),
+
+			isCustomDomain : function()
+			{
+				return this.ie && document.domain != window.location.hostname;
+			}
+		};
+
+		/**
+		 * Indicates that CKEditor is running on a Gecko based browser, like
+		 * Firefox.
+		 * @name CKEDITOR.env.gecko
+		 * @type Boolean
+		 * @example
+		 * if ( CKEDITOR.env.gecko )
+		 *     alert( "I'm riding a gecko!" );
+		 */
+		env.gecko = ( navigator.product == 'Gecko' && !env.webkit && !env.opera );
+
+		var version = 0;
+
+		// Internet Explorer 6.0+
+		if ( env.ie )
+		{
+			version = parseFloat( agent.match( /msie (\d+)/ )[1] );
+
+			/**
+			 *  Indicate IE8 browser.
+			 */
+			env.ie8 = !!document.documentMode;
+
+			/**
+			 * Indicte IE8 document mode.
+			 */
+			env.ie8Compat = document.documentMode == 8;
+
+			/**
+			 * Indicates that CKEditor is running on an IE7-like environment, which
+			 * includes IE7 itself and IE8's IE7 document mode.
+			 * @type Boolean
+			 */
+			env.ie7Compat = ( ( version == 7 && !document.documentMode )
+					|| document.documentMode == 7 );
+
+			/**
+			 * Indicates that CKEditor is running on an IE6-like environment, which
+			 * includes IE6 itself and IE7 and IE8 quirks mode.
+			 * @type Boolean
+			 * @example
+			 * if ( CKEDITOR.env.ie6Compat )
+			 *     alert( "I'm on IE6 or quirks mode!" );
+			 */
+			env.ie6Compat = ( version < 7 || env.quirks );
+
+		}
+
+		// Gecko.
+		if ( env.gecko )
+		{
+			var geckoRelease = agent.match( /rv:([\d\.]+)/ );
+			if ( geckoRelease )
+			{
+				geckoRelease = geckoRelease[1].split( '.' );
+				version = geckoRelease[0] * 10000 + ( geckoRelease[1] || 0 ) * 100 + ( geckoRelease[2] || 0 ) * 1;
+			}
+		}
+
+		// Opera 9.50+
+		if ( env.opera )
+			version = parseFloat( opera.version() );
+
+		// Adobe AIR 1.0+
+		// Checked before Safari because AIR have the WebKit rich text editor
+		// features from Safari 3.0.4, but the version reported is 420.
+		if ( env.air )
+			version = parseFloat( agent.match( / adobeair\/(\d+)/ )[1] );
+
+		// WebKit 522+ (Safari 3+)
+		if ( env.webkit )
+			version = parseFloat( agent.match( / applewebkit\/(\d+)/ )[1] );
+
+		/**
+		 * Contains the browser version.
+		 *
+		 * For gecko based browsers (like Firefox) it contains the revision
+		 * number with first three parts concatenated with a padding zero
+		 * (e.g. for revision 1.9.0.2 we have 10900).
+		 *
+		 * For webkit based browser (like Safari and Chrome) it contains the
+		 * WebKit build version (e.g. 522).
+		 * @name CKEDITOR.env.version
+		 * @type Boolean
+		 * @example
+		 * if ( CKEDITOR.env.ie && <b>CKEDITOR.env.version</b> <= 6 )
+		 *     alert( "Ouch!" );
+		 */
+		env.version = version;
+
+		/**
+		 * Indicates that CKEditor is running on a compatible browser.
+		 * @name CKEDITOR.env.isCompatible
+		 * @type Boolean
+		 * @example
+		 * if ( CKEDITOR.env.isCompatible )
+		 *     alert( "Your browser is pretty cool!" );
+		 */
+		env.isCompatible =
+			( env.ie && version >= 6 ) ||
+			( env.gecko && version >= 10801 ) ||
+			( env.opera && version >= 9.5 ) ||
+			( env.air && version >= 1 ) ||
+			( env.webkit && version >= 522 ) ||
+			false;
+
+		// The CSS class to be appended on the main UI containers, making it
+		// easy to apply browser specific styles to it.
+		env.cssClass =
+			'cke_browser_' + (
+				env.ie ? 'ie' :
+				env.gecko ? 'gecko' :
+				env.opera ? 'opera' :
+				env.air ? 'air' :
+				env.webkit ? 'webkit' :
+				'unknown' );
+
+		if ( env.quirks )
+			env.cssClass += ' cke_browser_quirks';
+
+		if ( env.ie )
+		{
+			env.cssClass += ' cke_browser_ie' + (
+				env.version < 7 ? '6' :
+				env.version >= 8 ? '8' :
+				'7' );
+
+			if ( env.quirks )
+				env.cssClass += ' cke_browser_iequirks';
+		}
+
+		if ( env.gecko && version < 10900 )
+			env.cssClass += ' cke_browser_gecko18';
+
+		return env;
+	})();
+}
+
+// PACKAGER_RENAME( CKEDITOR.env )
+// PACKAGER_RENAME( CKEDITOR.env.ie )
Index: /trunk/filemanager/tp/ckeditor/_source/core/imagecacher.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/imagecacher.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/imagecacher.js	(revision 2000)
@@ -0,0 +1,58 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	var loaded = {};
+
+	var loadImage = function( image, callback )
+	{
+		var doCallback = function()
+			{
+				loaded[ image ] = 1;
+				callback();
+			};
+
+		var img = new CKEDITOR.dom.element( 'img' );
+		img.on( 'load', doCallback );
+		img.on( 'error', doCallback );
+		img.setAttribute( 'src', image );
+	};
+
+	/**
+	 * Load images into the browser cache.
+	 * @namespace
+	 * @example
+	 */
+ 	CKEDITOR.imageCacher =
+	{
+		/**
+		 * Loads one or more images.
+		 * @param {Array} images The URLs for the images to be loaded.
+		 * @param {Function} callback The function to be called once all images
+		 *		are loaded.
+		 */
+		load : function( images, callback )
+		{
+			var pendingCount = images.length;
+
+			var checkPending = function()
+			{
+				if ( --pendingCount === 0 )
+					callback();
+			};
+
+			for ( var i = 0 ; i < images.length ; i++ )
+			{
+				var image = images[ i ];
+
+				if ( loaded[ image ] )
+					checkPending();
+				else
+					loadImage( image, checkPending );
+			}
+		}
+	};
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/core/scriptloader.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/scriptloader.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/scriptloader.js	(revision 2000)
@@ -0,0 +1,194 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.scriptLoader} object, used to load scripts
+ *		asynchronously.
+ */
+
+/**
+ * Load scripts asynchronously.
+ * @namespace
+ * @example
+ */
+CKEDITOR.scriptLoader = (function()
+{
+	var uniqueScripts = {};
+	var waitingList = {};
+
+	return /** @lends CKEDITOR.scriptLoader */ {
+		/**
+		 * Loads one or more external script checking if not already loaded
+		 * previously by this function.
+		 * @param {String|Array} scriptUrl One or more URLs pointing to the
+		 *		scripts to be loaded.
+		 * @param {Function} [callback] A function to be called when the script
+		 *		is loaded and executed. If a string is passed to "scriptUrl", a
+		 *		boolean parameter is passed to the callback, indicating the
+		 *		success of the load. If an array is passed instead, two array
+		 *		parameters are passed to the callback; the first contains the
+		 *		URLs that have been properly loaded, and the second the failed
+		 *		ones.
+		 * @param {Object} [scope] The scope ("this" reference) to be used for
+		 *		the callback call. Default to {@link CKEDITOR}.
+		 * @param {Boolean} [noCheck] Indicates that the script must be loaded
+		 *		anyway, not checking if it has already loaded.
+		 * @example
+		 * CKEDITOR.scriptLoader.load( '/myscript.js' );
+		 * @example
+		 * CKEDITOR.scriptLoader.load( '/myscript.js', function( success )
+		 *     {
+		 *         // Alerts "true" if the script has been properly loaded.
+		 *         // HTTP error 404 should return "false".
+		 *         alert( success );
+		 *     });
+		 * @example
+		 * CKEDITOR.scriptLoader.load( [ '/myscript1.js', '/myscript2.js' ], function( completed, failed )
+		 *     {
+		 *         alert( 'Number of scripts loaded: ' + completed.length );
+		 *         alert( 'Number of failures: ' + failed.length );
+		 *     });
+		 */
+		load : function( scriptUrl, callback, scope, noCheck )
+		{
+			var isString = ( typeof scriptUrl == 'string' );
+
+			if ( isString )
+				scriptUrl = [ scriptUrl ];
+
+			if ( !scope )
+				scope = CKEDITOR;
+
+			var scriptCount = scriptUrl.length,
+				completed = [],
+				failed = [];
+
+			var doCallback = function( success )
+			{
+				if ( callback )
+				{
+					if ( isString )
+						callback.call( scope, success );
+					else
+						callback.call( scope, completed, failed );
+				}
+			};
+
+			if ( scriptCount === 0 )
+			{
+				doCallback( true );
+				return;
+			}
+
+			var checkLoaded = function( url, success )
+			{
+				( success ? completed : failed ).push( url );
+
+				if ( --scriptCount <= 0 )
+					doCallback( success );
+			};
+
+			var onLoad = function( url, success )
+			{
+				// Mark this script as loaded.
+				uniqueScripts[ url ] = 1;
+
+				// Get the list of callback checks waiting for this file.
+				var waitingInfo = waitingList[ url ];
+				delete waitingList[ url ];
+
+				// Check all callbacks waiting for this file.
+				for ( var i = 0 ; i < waitingInfo.length ; i++ )
+					waitingInfo[ i ]( url, success );
+			};
+
+			var loadScript = function( url )
+			{
+				if ( noCheck !== true && uniqueScripts[ url ] )
+				{
+					checkLoaded( url, true );
+					return;
+				}
+
+				var waitingInfo = waitingList[ url ] || ( waitingList[ url ] = [] );
+				waitingInfo.push( checkLoaded );
+
+				// Load it only for the first request.
+				if ( waitingInfo.length > 1 )
+					return;
+
+				// Create the <script> element.
+				var script = new CKEDITOR.dom.element( 'script' );
+				script.setAttributes( {
+					type : 'text/javascript',
+					src : url } );
+
+				if ( callback )
+				{
+					if ( CKEDITOR.env.ie )
+					{
+						// FIXME: For IE, we are not able to return false on error (like 404).
+
+						/** @ignore */
+						script.$.onreadystatechange = function ()
+						{
+							if ( script.$.readyState == 'loaded' || script.$.readyState == 'complete' )
+							{
+								script.$.onreadystatechange = null;
+								onLoad( url, true );
+							}
+						};
+					}
+					else
+					{
+						/** @ignore */
+						script.$.onload = function()
+						{
+							// Some browsers, such as Safari, may call the onLoad function
+							// immediately. Which will break the loading sequence. (#3661)
+							setTimeout( function() { onLoad( url, true ); }, 0 );
+						};
+
+						// FIXME: Opera and Safari will not fire onerror.
+
+						/** @ignore */
+						script.$.onerror = function()
+						{
+							onLoad( url, false );
+						};
+					}
+				}
+
+				// Append it to <head>.
+				script.appendTo( CKEDITOR.document.getHead() );
+
+				CKEDITOR.fire( 'download', url );		// @Packager.RemoveLine
+			};
+
+			for ( var i = 0 ; i < scriptCount ; i++ )
+			{
+				loadScript( scriptUrl[ i ] );
+			}
+		},
+
+		/**
+		 * Executes a JavaScript code into the current document.
+		 * @param {String} code The code to be executed.
+		 * @example
+		 * CKEDITOR.scriptLoader.loadCode( 'var x = 10;' );
+		 * alert( x );  // "10"
+		 */
+		loadCode : function( code )
+		{
+			// Create the <script> element.
+			var script = new CKEDITOR.dom.element( 'script' );
+			script.setAttribute( 'type', 'text/javascript' );
+			script.appendText( code );
+
+			// Append it to <head>.
+			script.appendTo( CKEDITOR.document.getHead() );
+		}
+	};
+})();
Index: /trunk/filemanager/tp/ckeditor/_source/core/eventInfo.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/eventInfo.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/eventInfo.js	(revision 2000)
@@ -0,0 +1,120 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the "virtual" {@link CKEDITOR.eventInfo} class, which
+ *		contains the defintions of the event object passed to event listeners.
+ *		This file is for documentation purposes only.
+ */
+
+/**
+ * This class is not really part of the API. It just illustrates the features
+ * of the event object passed to event listeners by a {@link CKEDITOR.event}
+ * based object.
+ * @name CKEDITOR.eventInfo
+ * @constructor
+ * @example
+ * // Do not do this.
+ * var myEvent = new CKEDITOR.eventInfo();  // Error: CKEDITOR.eventInfo is undefined
+ */
+
+/**
+ * The event name.
+ * @name CKEDITOR.eventInfo.prototype.name
+ * @field
+ * @type String
+ * @example
+ * someObject.on( 'someEvent', function( event )
+ *     {
+ *         alert( <b>event.name</b> );  // "someEvent"
+ *     });
+ * someObject.fire( 'someEvent' );
+ */
+
+/**
+ * The object that publishes (sends) the event.
+ * @name CKEDITOR.eventInfo.prototype.sender
+ * @field
+ * @type Object
+ * @example
+ * someObject.on( 'someEvent', function( event )
+ *     {
+ *         alert( <b>event.sender</b> == someObject );  // "true"
+ *     });
+ * someObject.fire( 'someEvent' );
+ */
+
+/**
+ * The editor instance that holds the sender. May be the same as sender. May be
+ * null if the sender is not part of an editor instance, like a component
+ * running in standalone mode.
+ * @name CKEDITOR.eventInfo.prototype.editor
+ * @field
+ * @type CKEDITOR.editor
+ * @example
+ * myButton.on( 'someEvent', function( event )
+ *     {
+ *         alert( <b>event.editor</b> == myEditor );  // "true"
+ *     });
+ * myButton.fire( 'someEvent', null, <b>myEditor</b> );
+ */
+
+/**
+ * Any kind of additional data. Its format and usage is event dependent.
+ * @name CKEDITOR.eventInfo.prototype.data
+ * @field
+ * @type Object
+ * @example
+ * someObject.on( 'someEvent', function( event )
+ *     {
+ *         alert( <b>event.data</b> );  // "Example"
+ *     });
+ * someObject.fire( 'someEvent', <b>'Example'</b> );
+ */
+
+/**
+ * Any extra data appended during the listener registration.
+ * @name CKEDITOR.eventInfo.prototype.listenerData
+ * @field
+ * @type Object
+ * @example
+ * someObject.on( 'someEvent', function( event )
+ *     {
+ *         alert( <b>event.listenerData</b> );  // "Example"
+ *     }
+ *     , null, <b>'Example'</b> );
+ */
+
+/**
+ * Indicates that no further listeners are to be called.
+ * @name CKEDITOR.eventInfo.prototype.stop
+ * @function
+ * @example
+ * someObject.on( 'someEvent', function( event )
+ *     {
+ *         <b>event.stop()</b>;
+ *     });
+ * someObject.on( 'someEvent', function( event )
+ *     {
+ *         // This one will not be called.
+ *     });
+ * alert( someObject.fire( 'someEvent' ) );  // "false"
+ */
+
+/**
+ * Indicates that the event is to be cancelled (if cancelable).
+ * @name CKEDITOR.eventInfo.prototype.cancel
+ * @function
+ * @example
+ * someObject.on( 'someEvent', function( event )
+ *     {
+ *         <b>event.cancel()</b>;
+ *     });
+ * someObject.on( 'someEvent', function( event )
+ *     {
+ *         // This one will not be called.
+ *     });
+ * alert( someObject.fire( 'someEvent' ) );  // "true"
+ */
Index: /trunk/filemanager/tp/ckeditor/_source/core/ckeditor_base.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/ckeditor_base.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/ckeditor_base.js	(revision 2000)
@@ -0,0 +1,190 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Contains the first and essential part of the {@link CKEDITOR}
+ *		object definition.
+ */
+
+// #### Compressed Code
+// Must be updated on changes in the script, as well as updated in the
+// ckeditor_source.js and ckeditor_basic_source.js files.
+
+// if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'3.0.1',rev:'4391',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();
+
+// #### Raw code
+// ATTENTION: read the above "Compressed Code" notes when changing this code.
+
+if ( !window.CKEDITOR )
+{
+	/**
+	 * This is the API entry point. The entire CKEditor code runs under this object.
+	 * @name CKEDITOR
+	 * @namespace
+	 * @example
+	 */
+	window.CKEDITOR = (function()
+	{
+		var CKEDITOR =
+		/** @lends CKEDITOR */
+		{
+
+			/**
+			 * A constant string unique for each release of CKEditor. Its value
+			 * is used, by default, to build the URL for all resources loaded
+			 * by the editor code, guaranteing clean cache results when
+			 * upgrading.
+			 * @type String
+			 * @example
+			 * alert( CKEDITOR.timestamp );  // e.g. '87dm'
+			 */
+			// The production implementation contains a fixed timestamp, unique
+			// for each release, generated by the releaser.
+			// (Base 36 value of each component of YYMMDDHH - 4 chars total - e.g. 87bm == 08071122)
+			timestamp : '99GE',
+
+			/**
+			 * Contains the CKEditor version number.
+			 * @type String
+			 * @example
+			 * alert( CKEDITOR.version );  // e.g. 'CKEditor 3.0 Beta'
+			 */
+			version : '3.0.1',
+
+			/**
+			 * Contains the CKEditor revision number.
+			 * Revision number is incremented automatically after each modification of CKEditor source code.
+			 * @type String
+			 * @example
+			 * alert( CKEDITOR.revision );  // e.g. '3975'
+			 */
+			revision : '4391',
+
+			/**
+			 * Private object used to hold core stuff. It should not be used out of
+			 * the API code as properties defined here may change at any time
+			 * without notice.
+			 * @private
+			 */
+			_ : {},
+
+			/**
+			 * Indicates the API loading status. The following status are available:
+			 *		<ul>
+			 *			<li><b>unloaded</b>: the API is not yet loaded.</li>
+			 *			<li><b>basic_loaded</b>: the basic API features are available.</li>
+			 *			<li><b>basic_ready</b>: the basic API is ready to load the full core code.</li>
+			 *			<li><b>loading</b>: the full API is being loaded.</li>
+			 *			<li><b>ready</b>: the API can be fully used.</li>
+			 *		</ul>
+			 * @type String
+			 * @example
+			 * if ( <b>CKEDITOR.status</b> == 'ready' )
+			 * {
+			 *     // The API can now be fully used.
+			 * }
+			 */
+			status : 'unloaded',
+
+			/**
+			 * Contains the full URL for the CKEditor installation directory.
+			 * It's possible to manually provide the base path by setting a
+			 * global variable named CKEDITOR_BASEPATH. This global variable
+			 * must be set "before" the editor script loading.
+			 * @type String
+			 * @example
+			 * alert( <b>CKEDITOR.basePath</b> );  // "http://www.example.com/ckeditor/" (e.g.)
+			 */
+			basePath : (function()
+			{
+				// ATTENTION: fixes on this code must be ported to
+				// var basePath in "core/loader.js".
+
+				// Find out the editor directory path, based on its <script> tag.
+				var path = window.CKEDITOR_BASEPATH || '';
+
+				if ( !path )
+				{
+					var scripts = document.getElementsByTagName( 'script' );
+
+					for ( var i = 0 ; i < scripts.length ; i++ )
+					{
+						var match = scripts[i].src.match( /(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i );
+
+						if ( match )
+						{
+							path = match[1];
+							break;
+						}
+					}
+				}
+
+				// In IE (only) the script.src string is the raw valued entered in the
+				// HTML. Other browsers return the full resolved URL instead.
+				if ( path.indexOf('://') == -1 )
+				{
+					// Absolute path.
+					if ( path.indexOf( '/' ) === 0 )
+						path = location.href.match( /^.*?:\/\/[^\/]*/ )[0] + path;
+					// Relative path.
+					else
+						path = location.href.match( /^[^\?]*\/(?:)/ )[0] + path;
+				}
+
+				return path;
+			})(),
+
+			/**
+			 * Gets the full URL for CKEditor resources. By default, URLs
+			 * returned by this function contains a querystring parameter ("t")
+			 * set to the {@link CKEDITOR.timestamp} value.
+			 * It's possible to provide a custom implementation to this
+			 * function by setting a global variable named CKEDITOR_GETURL.
+			 * This global variable must be set "before" the editor script
+			 * loading. If the custom implementation returns nothing, the
+			 * default implementation is used.
+			 * @returns {String} The full URL.
+			 * @example
+			 * // e.g. http://www.example.com/ckeditor/skins/default/editor.css?t=87dm
+			 * alert( CKEDITOR.getUrl( 'skins/default/editor.css' ) );
+			 * @example
+			 * // e.g. http://www.example.com/skins/default/editor.css?t=87dm
+			 * alert( CKEDITOR.getUrl( '/skins/default/editor.css' ) );
+			 * @example
+			 * // e.g. http://www.somesite.com/skins/default/editor.css?t=87dm
+			 * alert( CKEDITOR.getUrl( 'http://www.somesite.com/skins/default/editor.css' ) );
+			 */
+			getUrl : function( resource )
+			{
+				// If this is not a full or absolute path.
+				if ( resource.indexOf('://') == -1 && resource.indexOf( '/' ) !== 0 )
+					resource = this.basePath + resource;
+
+				// Add the timestamp, except for directories.
+				if ( this.timestamp && resource.charAt( resource.length - 1 ) != '/' )
+					resource += ( resource.indexOf( '?' ) >= 0 ? '&' : '?' ) + 't=' + this.timestamp;
+
+				return resource;
+			}
+		};
+
+		// Make it possible to override the getUrl function with a custom
+		// implementation pointing to a global named CKEDITOR_GETURL.
+		var newGetUrl = window.CKEDITOR_GETURL;
+		if ( newGetUrl )
+		{
+			var originalGetUrl = CKEDITOR.getUrl;
+			CKEDITOR.getUrl = function ( resource )
+			{
+				return newGetUrl.call( CKEDITOR, resource ) ||
+					originalGetUrl.call( CKEDITOR, resource );
+			};
+		}
+
+		return CKEDITOR;
+	})();
+}
+
+// PACKAGER_RENAME( CKEDITOR )
Index: /trunk/filemanager/tp/ckeditor/_source/core/tools.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/tools.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/tools.js	(revision 2000)
@@ -0,0 +1,540 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.tools} object, which contains
+ *		utility functions.
+ */
+
+(function()
+{
+	var functions = [];
+
+	/**
+	 * Utility functions.
+	 * @namespace
+	 * @example
+	 */
+	CKEDITOR.tools =
+	{
+		arrayCompare : function( arrayA, arrayB )
+		{
+			if ( !arrayA && !arrayB )
+				return true;
+
+			if ( !arrayA || !arrayB || arrayA.length != arrayB.length )
+				return false;
+
+			for ( var i = 0 ; i < arrayA.length ; i++ )
+			{
+				if ( arrayA[ i ] != arrayB[ i ] )
+					return false;
+			}
+
+			return true;
+		},
+
+		/**
+		 * Creates a deep copy of an object.
+		 * Attention: there is no support for recursive references.
+		 * @param {Object} object The object to be cloned.
+		 * @returns {Object} The object clone.
+		 * @example
+		 * var obj =
+		 *     {
+		 *         name : 'John',
+		 *         cars :
+		 *             {
+		 *                 Mercedes : { color : 'blue' },
+		 *                 Porsche : { color : 'red' }
+		 *             }
+		 *     };
+		 * var clone = CKEDITOR.tools.clone( obj );
+		 * clone.name = 'Paul';
+		 * clone.cars.Porsche.color = 'silver';
+		 * alert( obj.name );	// John
+		 * alert( clone.name );	// Paul
+		 * alert( obj.cars.Porsche.color );	// red
+		 * alert( clone.cars.Porsche.color );	// silver
+		 */
+		clone : function( obj )
+		{
+			var clone;
+
+			// Array.
+			if ( obj && ( obj instanceof Array ) )
+			{
+				clone = [];
+
+				for ( var i = 0 ; i < obj.length ; i++ )
+					clone[ i ] = this.clone( obj[ i ] );
+
+				return clone;
+			}
+
+			// "Static" types.
+			if ( obj === null
+				|| ( typeof( obj ) != 'object' )
+				|| ( obj instanceof String )
+				|| ( obj instanceof Number )
+				|| ( obj instanceof Boolean )
+				|| ( obj instanceof Date ) )
+			{
+				return obj;
+			}
+
+			// Objects.
+			clone = new obj.constructor();
+
+			for ( var propertyName in obj )
+			{
+				var property = obj[ propertyName ];
+				clone[ propertyName ] = this.clone( property );
+			}
+
+			return clone;
+		},
+
+		/**
+		 * Copy the properties from one object to another. By default, properties
+		 * already present in the target object <strong>are not</strong> overwritten.
+		 * @param {Object} target The object to be extended.
+		 * @param {Object} source[,souce(n)] The objects from which copy
+		 *		properties. Any number of objects can be passed to this function.
+		 * @param {Boolean} [overwrite] If 'true' is specified it indicates that
+		 *            properties already present in the target object could be
+		 *            overwritten by subsequent objects.
+		 * @param {Object} [properties] Only properties within the specified names
+		 *            list will be received from the source object.
+		 * @returns {Object} the extended object (target).
+		 * @example
+		 * // Create the sample object.
+		 * var myObject =
+		 * {
+		 *     prop1 : true
+		 * };
+		 *
+		 * // Extend the above object with two properties.
+		 * CKEDITOR.tools.extend( myObject,
+		 *     {
+		 *         prop2 : true,
+		 *         prop3 : true
+		 *     } );
+		 *
+		 * // Alert "prop1", "prop2" and "prop3".
+		 * for ( var p in myObject )
+		 *     alert( p );
+		 */
+		extend : function( target )
+		{
+			var argsLength = arguments.length,
+				overwrite, propertiesList;
+
+			if ( typeof ( overwrite = arguments[ argsLength - 1 ] ) == 'boolean')
+				argsLength--;
+			else if ( typeof ( overwrite = arguments[ argsLength - 2 ] ) == 'boolean' )
+			{
+				propertiesList = arguments [ argsLength -1 ];
+				argsLength-=2;
+			}
+			for ( var i = 1 ; i < argsLength ; i++ )
+			{
+				var source = arguments[ i ];
+				for ( var propertyName in source )
+				{
+					// Only copy existed fields if in overwrite mode.
+					if ( overwrite === true || target[ propertyName ] == undefined )
+					{
+						// Only copy  specified fields if list is provided.
+						if ( !propertiesList || ( propertyName in propertiesList ) )
+							target[ propertyName ] = source[ propertyName ];
+
+					}
+				}
+			}
+
+			return target;
+		},
+
+		/**
+		 * Creates an object which is an instance of a class which prototype is a
+		 * predefined object. All properties defined in the source object are
+		 * automatically inherited by the resulting object, including future
+		 * changes to it.
+		 * @param {Object} source The source object to be used as the prototype for
+		 *		the final object.
+		 * @returns {Object} The resulting copy.
+		 */
+		prototypedCopy : function( source )
+		{
+			var copy = function()
+			{};
+			copy.prototype = source;
+			return new copy();
+		},
+
+		/**
+		 * Checks if an object is an Array.
+		 * @param {Object} object The object to be checked.
+		 * @type Boolean
+		 * @returns <i>true</i> if the object is an Array, otherwise <i>false</i>.
+		 * @example
+		 * alert( CKEDITOR.tools.isArray( [] ) );      // "true"
+		 * alert( CKEDITOR.tools.isArray( 'Test' ) );  // "false"
+		 */
+		isArray : function( object )
+		{
+			return ( !!object && object instanceof Array );
+		},
+
+		/**
+		 * Transforms a CSS property name to its relative DOM style name.
+		 * @param {String} cssName The CSS property name.
+		 * @returns {String} The transformed name.
+		 * @example
+		 * alert( CKEDITOR.tools.cssStyleToDomStyle( 'background-color' ) );  // "backgroundColor"
+		 * alert( CKEDITOR.tools.cssStyleToDomStyle( 'float' ) );             // "cssFloat"
+		 */
+		cssStyleToDomStyle : ( function()
+		{
+			var test = document.createElement( 'div' ).style;
+
+			var cssFloat = ( typeof test.cssFloat != 'undefined' ) ? 'cssFloat'
+				: ( typeof test.styleFloat != 'undefined' ) ? 'styleFloat'
+				: 'float';
+
+			return function( cssName )
+			{
+				if ( cssName == 'float' )
+					return cssFloat;
+				else
+				{
+					return cssName.replace( /-./g, function( match )
+						{
+							return match.substr( 1 ).toUpperCase();
+						});
+				}
+			};
+		} )(),
+
+		/**
+		 * Replace special HTML characters in a string with their relative HTML
+		 * entity values.
+		 * @param {String} text The string to be encoded.
+		 * @returns {String} The encode string.
+		 * @example
+		 * alert( CKEDITOR.tools.htmlEncode( 'A > B & C < D' ) );  // "A &amp;gt; B &amp;amp; C &amp;lt; D"
+		 */
+		htmlEncode : function( text )
+		{
+			var standard = function( text )
+			{
+				var span = new CKEDITOR.dom.element( 'span' );
+				span.setText( text );
+				return span.getHtml();
+			};
+
+			var fix1 = ( standard( '\n' ).toLowerCase() == '<br>' ) ?
+				function( text )
+				{
+					// #3874 IE and Safari encode line-break into <br>
+					return standard( text ).replace( /<br>/gi, '\n' );
+				} :
+				standard;
+
+			var fix2 = ( standard( '>' ) == '>' ) ?
+				function( text )
+				{
+					// WebKit does't encode the ">" character, which makes sense, but
+					// it's different than other browsers.
+					return fix1( text ).replace( />/g, '&gt;' );
+				} :
+				fix1;
+
+			var fix3 = ( standard( '  ' ) == '&nbsp; ' ) ?
+				function( text )
+				{
+					// #3785 IE8 changes spaces (>= 2) to &nbsp;
+					return fix2( text ).replace( /&nbsp;/g, ' ' );
+				} :
+				fix2;
+
+			this.htmlEncode = fix3;
+
+			return this.htmlEncode( text );
+		},
+
+		/**
+		 * Gets a unique number for this CKEDITOR execution session. It returns
+		 * progressive numbers starting at 1.
+		 * @function
+		 * @returns {Number} A unique number.
+		 * @example
+		 * alert( CKEDITOR.tools.<b>getNextNumber()</b> );  // "1" (e.g.)
+		 * alert( CKEDITOR.tools.<b>getNextNumber()</b> );  // "2"
+		 */
+		getNextNumber : (function()
+		{
+			var last = 0;
+			return function()
+			{
+				return ++last;
+			};
+		})(),
+
+		/**
+		 * Creates a function override.
+		 * @param {Function} originalFunction The function to be overridden.
+		 * @param {Function} functionBuilder A function that returns the new
+		 *		function. The original function reference will be passed to this
+		 *		function.
+		 * @returns {Function} The new function.
+		 * @example
+		 * var example =
+		 * {
+		 *     myFunction : function( name )
+		 *     {
+		 *         alert( 'Name: ' + name );
+		 *     }
+		 * };
+		 *
+		 * example.myFunction = CKEDITOR.tools.override( example.myFunction, function( myFunctionOriginal )
+		 *     {
+		 *         return function( name )
+		 *             {
+		 *                 alert( 'Override Name: ' + name );
+		 *                 myFunctionOriginal.call( this, name );
+		 *             };
+		 *     });
+		 */
+		override : function( originalFunction, functionBuilder )
+		{
+			return functionBuilder( originalFunction );
+		},
+
+		/**
+		 * Executes a function after specified delay.
+		 * @param {Function} func The function to be executed.
+		 * @param {Number} [milliseconds] The amount of time (millisecods) to wait
+		 *		to fire the function execution. Defaults to zero.
+		 * @param {Object} [scope] The object to hold the function execution scope
+		 *		(the "this" object). By default the "window" object.
+		 * @param {Object|Array} [args] A single object, or an array of objects, to
+		 *		pass as arguments to the function.
+		 * @param {Object} [ownerWindow] The window that will be used to set the
+		 *		timeout. By default the current "window".
+		 * @returns {Object} A value that can be used to cancel the function execution.
+		 * @example
+		 * CKEDITOR.tools.<b>setTimeout(
+		 *     function()
+		 *     {
+		 *         alert( 'Executed after 2 seconds' );
+		 *     },
+		 *     2000 )</b>;
+		 */
+		setTimeout : function( func, milliseconds, scope, args, ownerWindow )
+		{
+			if ( !ownerWindow )
+				ownerWindow = window;
+
+			if ( !scope )
+				scope = ownerWindow;
+
+			return ownerWindow.setTimeout(
+				function()
+				{
+					if ( args )
+						func.apply( scope, [].concat( args ) ) ;
+					else
+						func.apply( scope ) ;
+				},
+				milliseconds || 0 );
+		},
+
+		/**
+		 * Remove spaces from the start and the end of a string. The following
+		 * characters are removed: space, tab, line break, line feed.
+		 * @function
+		 * @param {String} str The text from which remove the spaces.
+		 * @returns {String} The modified string without the boundary spaces.
+		 * @example
+		 * alert( CKEDITOR.tools.trim( '  example ' );  // "example"
+		 */
+		trim : (function()
+		{
+			// We are not using \s because we don't want "non-breaking spaces" to be caught.
+			var trimRegex = /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;
+			return function( str )
+			{
+				return str.replace( trimRegex, '' ) ;
+			};
+		})(),
+
+		/**
+		 * Remove spaces from the start (left) of a string. The following
+		 * characters are removed: space, tab, line break, line feed.
+		 * @function
+		 * @param {String} str The text from which remove the spaces.
+		 * @returns {String} The modified string excluding the removed spaces.
+		 * @example
+		 * alert( CKEDITOR.tools.ltrim( '  example ' );  // "example "
+		 */
+		ltrim : (function()
+		{
+			// We are not using \s because we don't want "non-breaking spaces" to be caught.
+			var trimRegex = /^[ \t\n\r]+/g;
+			return function( str )
+			{
+				return str.replace( trimRegex, '' ) ;
+			};
+		})(),
+
+		/**
+		 * Remove spaces from the end (right) of a string. The following
+		 * characters are removed: space, tab, line break, line feed.
+		 * @function
+		 * @param {String} str The text from which remove the spaces.
+		 * @returns {String} The modified string excluding the removed spaces.
+		 * @example
+		 * alert( CKEDITOR.tools.ltrim( '  example ' );  // "  example"
+		 */
+		rtrim : (function()
+		{
+			// We are not using \s because we don't want "non-breaking spaces" to be caught.
+			var trimRegex = /[ \t\n\r]+$/g;
+			return function( str )
+			{
+				return str.replace( trimRegex, '' ) ;
+			};
+		})(),
+
+		/**
+		 * Returns the index of an element in an array.
+		 * @param {Array} array The array to be searched.
+		 * @param {Object} entry The element to be found.
+		 * @returns {Number} The (zero based) index of the first entry that matches
+		 *		the entry, or -1 if not found.
+		 * @example
+		 * var letters = [ 'a', 'b', 0, 'c', false ];
+		 * alert( CKEDITOR.tools.indexOf( letters, '0' ) );  "-1" because 0 !== '0'
+		 * alert( CKEDITOR.tools.indexOf( letters, false ) );  "4" because 0 !== false
+		 */
+		indexOf :
+			// #2514: We should try to use Array.indexOf if it does exist.
+			( Array.prototype.indexOf ) ?
+				function( array, entry )
+					{
+						return array.indexOf( entry );
+					}
+			:
+				function( array, entry )
+				{
+					for ( var i = 0, len = array.length ; i < len ; i++ )
+					{
+						if ( array[ i ] === entry )
+							return i;
+					}
+					return -1;
+				},
+
+		bind : function( func, obj )
+		{
+			return function() { return func.apply( obj, arguments ); };
+		},
+
+		/**
+		 * Class creation based on prototype inheritance, with supports of the
+		 * following features:
+		 * <ul>
+		 * <li> Static fields </li>
+		 * <li> Private fields </li>
+		 * <li> Public(prototype) fields </li>
+		 * <li> Chainable base class constructor </li>
+		 * </ul>
+		 *
+		 * @param {Object} definiton (Optional)The class definiton object.
+		 */
+		createClass : function( definition )
+		{
+			var $ = definition.$,
+				baseClass = definition.base,
+				privates = definition.privates || definition._,
+				proto = definition.proto,
+				statics = definition.statics;
+
+			if ( privates )
+			{
+				var originalConstructor = $;
+				$ = function()
+				{
+					// Create (and get) the private namespace.
+					var _ = this._ || ( this._ = {} );
+
+					// Make some magic so "this" will refer to the main
+					// instance when coding private functions.
+					for ( var privateName in privates )
+					{
+						var priv = privates[ privateName ];
+
+						_[ privateName ] =
+							( typeof priv == 'function' ) ? CKEDITOR.tools.bind( priv, this ) : priv;
+					}
+
+					originalConstructor.apply( this, arguments );
+				};
+			}
+
+			if ( baseClass )
+			{
+				$.prototype = this.prototypedCopy( baseClass.prototype );
+				$.prototype.constructor = $;
+				$.prototype.base = function()
+				{
+					this.base = baseClass.prototype.base;
+					baseClass.apply( this, arguments );
+					this.base = arguments.callee;
+				};
+			}
+
+			if ( proto )
+				this.extend( $.prototype, proto, true );
+
+			if ( statics )
+				this.extend( $, statics, true );
+
+			return $;
+		},
+
+		addFunction : function( fn, scope )
+		{
+			return functions.push( function()
+				{
+					fn.apply( scope || this, arguments );
+				}) - 1;
+		},
+
+		callFunction : function( index )
+		{
+			var fn = functions[ index ];
+			return fn.apply( window, Array.prototype.slice.call( arguments, 1 ) );
+		},
+
+		cssLength : (function()
+		{
+			var decimalRegex = /^\d+(?:\.\d+)?$/;
+			return function( length )
+			{
+				return length + ( decimalRegex.test( length ) ? 'px' : '' );
+			};
+		})(),
+
+		repeat : function( str, times )
+		{
+			return new Array( times + 1 ).join( str );
+		}
+	};
+})();
+
+// PACKAGER_RENAME( CKEDITOR.tools )
Index: /trunk/filemanager/tp/ckeditor/_source/core/xml.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_source/core/xml.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_source/core/xml.js	(revision 2000)
@@ -0,0 +1,165 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.xml} class, which represents a
+ *		loaded XML document.
+ */
+
+/**
+ * Represents a loaded XML document.
+ * @constructor
+ * @param {object|string} xmlObjectOrData A native XML (DOM document) object or
+ *		a string containing the XML definition to be loaded.
+ * @example
+ * var xml = <b>new CKEDITOR.xml( '<books><book title="My Book" /></books>' )</b>;
+ */
+CKEDITOR.xml = function( xmlObjectOrData )
+{
+	var baseXml = null;
+
+	if ( typeof xmlObjectOrData == 'object' )
+		baseXml = xmlObjectOrData;
+	else
+	{
+		var data = ( xmlObjectOrData || '' ).replace( /&nbsp;/g, '\xA0' );
+		if ( window.DOMParser )
+			baseXml = (new DOMParser()).parseFromString( data, 'text/xml' );
+		else if ( window.ActiveXObject )
+		{
+			try { baseXml = new ActiveXObject( 'MSXML2.DOMDocument' ); }
+			catch(e)
+			{
+				try { baseXml = new ActiveXObject( 'Microsoft.XmlDom' ); } catch(e) {}
+			}
+
+			if ( baseXml )
+			{
+				baseXml.async = false;
+				baseXml.resolveExternals = false;
+				baseXml.validateOnParse = false;
+				baseXml.loadXML( data );
+			}
+		}
+	}
+
+	/**
+	 * The native XML (DOM document) used by the class instance.
+	 * @type object
+	 * @example
+	 */
+	this.baseXml = baseXml;
+};
+
+CKEDITOR.xml.prototype =
+{
+	/**
+	 * Get a single node from the XML document, based on a XPath query.
+	 * @param {String} xpath The XPath query to execute.
+	 * @param {Object} [contextNode] The XML DOM node to be used as the context
+	 *		for the XPath query. The document root is used by default.
+	 * @returns {Object} A XML node element or null if the query has no results.
+	 * @example
+	 * // Create the XML instance.
+	 * var xml = new CKEDITOR.xml( '<list><item id="test1" /><item id="test2" /></list>' );
+	 * // Get the first <item> node.
+	 * var itemNode = <b>xml.selectSingleNode( 'list/item' )</b>;
+	 * // Alert "item".
+	 * alert( itemNode.nodeName );
+	 */
+	selectSingleNode : function( xpath, contextNode )
+	{
+		var baseXml = this.baseXml;
+
+		if ( contextNode || ( contextNode = baseXml ) )
+		{
+			if ( CKEDITOR.env.ie || contextNode.selectSingleNode )	// IE
+				return contextNode.selectSingleNode( xpath );
+			else if ( baseXml.evaluate )							// Others
+			{
+				var result = baseXml.evaluate( xpath, contextNode, null, 9, null);
+				return ( result && result.singleNodeValue ) || null;
+			}
+		}
+
+		return null;
+	},
+
+	/**
+	 * Gets a list node from the XML document, based on a XPath query.
+	 * @param {String} xpath The XPath query to execute.
+	 * @param {Object} [contextNode] The XML DOM node to be used as the context
+	 *		for the XPath query. The document root is used by default.
+	 * @returns {ArrayLike} An array containing all matched nodes. The array will
+	 *		be empty if the query has no results.
+	 * @example
+	 * // Create the XML instance.
+	 * var xml = new CKEDITOR.xml( '<list><item id="test1" /><item id="test2" /></list>' );
+	 * // Get the first <item> node.
+	 * var itemNodes = xml.selectSingleNode( 'list/item' );
+	 * // Alert "item" twice, one for each <item>.
+	 * for ( var i = 0 ; i < itemNodes.length ; i++ )
+	 *     alert( itemNodes[i].nodeName );
+	 */
+	selectNodes : function( xpath, contextNode )
+	{
+		var baseXml = this.baseXml,
+			nodes = [];
+
+		if ( contextNode || ( contextNode = baseXml ) )
+		{
+			if ( CKEDITOR.env.ie || contextNode.selectNodes )		// IE
+				return contextNode.selectNodes( xpath );
+			else if ( baseXml.evaluate )							// Others
+			{
+				var result = baseXml.evaluate( xpath, contextNode, null, 5, null);
+
+				if ( result )
+				{
+					var node;
+					while( ( node = result.iterateNext() ) )
+						nodes.push( node );
+				}
+			}
+		}
+
+		return nodes;
+	},
+
+	/**
+	 * Gets the string representation of hte inner contents of a XML node,
+	 * based on a XPath query.
+	 * @param {String} xpath The XPath query to execute.
+	 * @param {Object} [contextNode] The XML DOM node to be used as the context
+	 *		for the XPath query. The document root is used by default.
+	 * @returns {String} The textual representation of the inner contents of
+	 *		the node or null if the query has no results.
+	 * @example
+	 * // Create the XML instance.
+	 * var xml = new CKEDITOR.xml( '<list><item id="test1" /><item id="test2" /></list>' );
+	 * // Alert "<item id="test1" /><item id="test2" />".
+	 * alert( xml.getInnerXml( 'list' ) );
+	 */
+	getInnerXml : function( xpath, contextNode )
+	{
+		var node = this.selectSingleNode( xpath, contextNode ),
+			xml = [];
+		if ( node )
+		{
+			node = node.firstChild;
+			while ( node )
+			{
+				if ( node.xml )				// IE
+					xml.push( node.xml );
+				else if ( window.XMLSerializer )	// Others
+					xml.push( ( new XMLSerializer() ).serializeToString( node ) );
+
+				node = node.nextSibling;
+			}
+		}
+
+		return xml.length ? xml.join( '' ) : null;
+	}
+};
Index: /trunk/filemanager/tp/ckeditor/ckeditor_source.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/ckeditor_source.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/ckeditor_source.js	(revision 2000)
@@ -0,0 +1,25 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+// Compressed version of core/ckeditor_base.js. See original for instructions.
+/*jsl:ignore*/
+if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'3.0.1',revision:'4391',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();
+/*jsl:end*/
+
+// Uncomment the following line to have a new timestamp generated for each
+// request, having clear cache load of the editor code.
+// CKEDITOR.timestamp = ( new Date() ).valueOf();
+
+if ( CKEDITOR.loader )
+	CKEDITOR.loader.load( 'core/ckeditor' );
+else
+{
+	// Set the script name to be loaded by the loader.
+	CKEDITOR._autoLoad = 'core/ckeditor';
+
+	// Include the loader script.
+	document.write(
+		'<script type="text/javascript" src="' + CKEDITOR.getUrl( '_source/core/loader.js' ) + '"></script>' );
+}
Index: /trunk/filemanager/tp/ckeditor/ckeditor_basic_source.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/ckeditor_basic_source.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/ckeditor_basic_source.js	(revision 2000)
@@ -0,0 +1,20 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+// Compressed version of core/ckeditor_base.js. See original for instructions.
+/*jsl:ignore*/
+if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'3.0.1',revision:'4391',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();
+/*jsl:end*/
+
+// Uncomment the following line to have a new timestamp generated for each
+// request, having clear cache load of the editor code.
+// CKEDITOR.timestamp = ( new Date() ).valueOf();
+
+// Set the script name to be loaded by the loader.
+CKEDITOR._autoLoad = 'core/ckeditor_basic';
+
+// Include the loader script.
+document.write(
+	'<script type="text/javascript" src="' + CKEDITOR.getUrl( '_source/core/loader.js' ) + '"></script>' );
Index: /trunk/filemanager/tp/ckeditor/_samples/replacebyclass.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/_samples/replacebyclass.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_samples/replacebyclass.html	(revision 2000)
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<!-- This <fieldset> holds the HTML that you will usually find in your
+	     pages. -->
+	<form action="sample_posteddata.php" method="post">
+			<p>
+				<label for="editor1">
+					Editor 1:</label><br/>
+				<textarea class="ckeditor" cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+			</p>
+			<p>
+				<input type="submit" value="Submit"/>
+			</p>
+		</form>
+	<div id="footer">
+		<hr/>
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/" shape="rect">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright Â© 2003-2009, <a href="http://cksource.com/" shape="rect">CKSource</a> - Frederico Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/_samples/sample_posteddata.php
===================================================================
--- /trunk/filemanager/tp/ckeditor/_samples/sample_posteddata.php	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_samples/sample_posteddata.php	(revision 2000)
@@ -0,0 +1,59 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<?php
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+?>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Sample - CKEditor</title>
+	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+	<link type="text/css" rel="stylesheet" href="sample.css" />
+</head>
+<body>
+	<h1>
+		CKEditor - Posted Data
+	</h1>
+	<table border="1" cellspacing="0" id="outputSample">
+		<colgroup><col width="100" /></colgroup>
+		<thead>
+			<tr>
+				<th>Field&nbsp;Name</th>
+				<th>Value</th>
+			</tr>
+		</thead>
+<?php
+
+if ( isset( $_POST ) )
+	$postArray = &$_POST ;			// 4.1.0 or later, use $_POST
+else
+	$postArray = &$HTTP_POST_VARS ;	// prior to 4.1.0, use HTTP_POST_VARS
+
+foreach ( $postArray as $sForm => $value )
+{
+	if ( get_magic_quotes_gpc() )
+		$postedValue = htmlspecialchars( stripslashes( $value ) ) ;
+	else
+		$postedValue = htmlspecialchars( $value ) ;
+
+?>
+		<tr>
+			<th style="vertical-align: top"><?php echo $sForm?></th>
+			<td><pre><?php echo $postedValue?></pre></td>
+		</tr>
+	<?php
+}
+?>
+	</table>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2009, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/_samples/divreplace.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/_samples/divreplace.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_samples/divreplace.html	(revision 2000)
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css"/>
+	<style id="styles" type="text/css">
+
+		div.editable
+		{
+			border: solid 2px Transparent;
+			padding-left: 15px;
+			padding-right: 15px;
+		}
+
+		div.editable:hover
+		{
+			border-color: black;
+		}
+
+	</style>
+	<script id="headscript" type="text/javascript">
+	//<![CDATA[
+
+// Uncomment the following code to test the "Timeout Loading Method".
+// CKEDITOR.loadFullCoreTimeout = 5;
+
+window.onload = function()
+{
+	// Listen to the double click event.
+	if ( window.addEventListener )
+		document.body.addEventListener( 'dblclick', onDoubleClick, false );
+	else if ( window.attachEvent )
+		document.body.attachEvent( 'ondblclick', onDoubleClick );
+
+};
+
+function onDoubleClick( ev )
+{
+	// Get the element which fired the event. This is not necessarily the
+	// element to which the event has been attached.
+	var element = ev.target || ev.srcElement;
+
+	// Find out the div that holds this element.
+	element = element.parentNode;
+
+	if ( element.nodeName.toLowerCase() == 'div'
+		 && ( element.className.indexOf( 'editable' ) != -1 ) )
+		replaceDiv( element );
+}
+
+var editor;
+
+function replaceDiv( div )
+{
+	if ( editor )
+		editor.destroy();
+
+	editor = CKEDITOR.replace( div );
+}
+
+	//]]>
+	</script>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<!-- This <fieldset> holds the HTML that you will usually find in your
+	     pages. -->
+	<p>
+			Double-click on any of the following DIVs to transform them into editor instances.</p>
+		<div class="editable">
+			<h3>
+				Part 1</h3>
+			<p>
+				Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi
+				semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna
+				rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla
+				nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce
+				eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.
+			</p>
+		</div>
+		<div class="editable">
+			<h3>
+				Part 2</h3>
+			<p>
+				Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi
+				semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna
+				rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla
+				nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce
+				eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.
+			</p>
+			<p>
+				Donec velit. Mauris massa. Vestibulum non nulla. Nam suscipit arcu nec elit. Phasellus
+				sollicitudin iaculis ante. Ut non mauris et sapien tincidunt adipiscing. Vestibulum
+				vitae leo. Suspendisse nec mi tristique nulla laoreet vulputate.
+			</p>
+		</div>
+		<div class="editable">
+			<h3>
+				Part 3</h3>
+			<p>
+				Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi
+				semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna
+				rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla
+				nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce
+				eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.
+			</p>
+		</div>
+	<div id="footer">
+		<hr/>
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/" shape="rect">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright Â© 2003-2009, <a href="http://cksource.com/" shape="rect">CKSource</a> - Frederico Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/_samples/replacebycode.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/_samples/replacebycode.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_samples/replacebycode.html	(revision 2000)
@@ -0,0 +1,81 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<!-- This <fieldset> holds the HTML that you will usually find in your
+	     pages. -->
+	<form action="sample_posteddata.php" method="post">
+			<p>
+				<label for="editor1">
+					Editor 1:</label><br/>
+				<textarea cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+				<script type="text/javascript">
+				//<![CDATA[
+
+					// This call can be placed at any point after the
+					// <textarea>, or inside a <head><script> in a
+					// window.onload event handler.
+
+					// Replace the <textarea id="editor"> with an CKEditor
+					// instance, using default configurations.
+					CKEDITOR.replace( 'editor1' );
+
+				//]]>
+				</script>
+			</p>
+			<p>
+				<label for="editor2">
+					Editor 2:</label><br/>
+				<textarea cols="80" id="editor2" name="editor2" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+				<script type="text/javascript">
+				//<![CDATA[
+
+					// This call can be placed at any point after the
+					// <textarea>, or inside a <head><script> in a
+					// window.onload event handler.
+
+					// Replace the <textarea id="editor"> with an CKEditor
+					// instance, using default configurations.
+					CKEDITOR.replace( 'editor2' );
+
+				//]]>
+				</script>
+			</p>
+			<p>
+				<input type="submit" value="Submit"/>
+			</p>
+		</form>
+	<div id="footer">
+		<hr/>
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/" shape="rect">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright Â© 2003-2009, <a href="http://cksource.com/" shape="rect">CKSource</a> - Frederico Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/_samples/ajax.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/_samples/ajax.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_samples/ajax.html	(revision 2000)
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css"/>
+	<script id="headscript" type="text/javascript">
+	//<![CDATA[
+
+var editor;
+
+function createEditor()
+{
+	if ( editor )
+		return;
+
+	var html = document.getElementById( 'editorcontents' ).innerHTML;
+
+	// Create a new editor inside the <div id="editor">
+	editor = CKEDITOR.appendTo( 'editor' );
+	editor.setData( html );
+
+	// This sample may break here if the ckeditor_basic.js is used. In such case, the following code should be used instead:
+	/*
+	if ( editor.setData )
+		editor.setData( html );
+	else
+		CKEDITOR.on( 'loaded', function()
+			{
+				editor.setData( html );
+			});
+	*/
+}
+
+function removeEditor()
+{
+	if ( !editor )
+		return;
+
+	// Retrieve the editor contents. In an Ajax application, this data would be
+	// sent to the server or used in any other way.
+	document.getElementById( 'editorcontents' ).innerHTML = editor.getData();
+	document.getElementById( 'contents' ).style.display = '';
+
+	// Destroy the editor.
+	editor.destroy();
+	editor = null;
+}
+
+	//]]>
+	</script>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<!-- This <fieldset> holds the HTML that you will usually find in your
+	     pages. -->
+	<p>
+			<input onclick="createEditor();" type="button" value="Create Editor"/>
+			<input onclick="removeEditor();" type="button" value="Remove Editor"/>
+		</p>
+		<div id="editor">
+		</div>
+		<div id="contents" style="display: none">
+			<p>Edited Contents:</p>
+			<div id="editorcontents"/>
+		</div>
+	<div id="footer">
+		<hr/>
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/" shape="rect">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright Â© 2003-2009, <a href="http://cksource.com/" shape="rect">CKSource</a> - Frederico Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/_samples/ui_languages.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/_samples/ui_languages.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_samples/ui_languages.html	(revision 2000)
@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css"/>
+	<script id="headscript" type="text/javascript">
+	//<![CDATA[
+
+	document.write( '<script type="text/javascript" src="../' +
+		'lang/_languages.js"><\/script>' );
+
+	//]]>
+	</script>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<!-- This <fieldset> holds the HTML that you will usually find in your
+	     pages. -->
+	<form action="sample_posteddata.php" method="post">
+			<p>
+				<label for="editor1">
+					Available languages (<span id="count">Â </span>
+					languages!):</label><br/>
+				<select disabled="disabled" id="languages" onchange="createEditor( this.value );">
+					<script type="text/javascript">
+					//<![CDATA[
+
+						// Get the language list from the _languages.js file.
+						for ( var i = 0 ; i < window.CKEDITOR_LANGS.length ; i++ )
+						{
+							document.write(
+								'<option value="' + window.CKEDITOR_LANGS[i].code + '">' +
+									window.CKEDITOR_LANGS[i].name +
+								'</option>' );
+						}
+
+					//]]>
+					</script>
+				</select>
+				<br/>
+				<span style="color: #888888">(You may see strange characters if your system doesn't
+					support the selected language)</span>
+			</p>
+			<p>
+				<textarea cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+				<script type="text/javascript">
+				//<![CDATA[
+
+					// Set the number of languages.
+					document.getElementById( 'count' ).innerHTML = window.CKEDITOR_LANGS.length;
+
+					var editor;
+
+					function createEditor( languageCode )
+					{
+						if ( editor )
+							editor.destroy();
+
+						// Replace the <textarea id="editor"> with an CKEditor
+						// instance, using default configurations.
+						editor = CKEDITOR.replace( 'editor1',
+							{
+								language : languageCode,
+
+								on :
+								{
+									instanceReady : function()
+									{
+										// Wait for the editor to be ready to set
+										// the language combo.
+										var languages = document.getElementById( 'languages' );
+										languages.value = this.langCode;
+										languages.disabled = false;
+									}
+								}
+							} );
+					}
+
+					// At page startup, load the default language:
+					createEditor( '' );
+
+				//]]>
+				</script>
+			</p>
+		</form>
+	<div id="footer">
+		<hr/>
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/" shape="rect">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright Â© 2003-2009, <a href="http://cksource.com/" shape="rect">CKSource</a> - Frederico Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/_samples/api_dialog/my_dialog.js
===================================================================
--- /trunk/filemanager/tp/ckeditor/_samples/api_dialog/my_dialog.js	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_samples/api_dialog/my_dialog.js	(revision 2000)
@@ -0,0 +1,28 @@
+﻿/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'myDialog', function( editor )
+{
+	return {
+		title : 'My Dialog',
+		minWidth : 400,
+		minHeight : 200,
+		contents : [
+			{
+				id : 'tab1',
+				label : 'First Tab',
+				title : 'First Tab',
+				elements :
+				[
+					{
+						id : 'input1',
+						type : 'text',
+						label : 'Input 1'
+					}
+				]
+			}
+		]
+	};
+} );
Index: /trunk/filemanager/tp/ckeditor/_samples/enterkey.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/_samples/enterkey.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_samples/enterkey.html	(revision 2000)
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css"/>
+	<script id="headscript" type="text/javascript">
+	//<![CDATA[
+
+var editor;
+
+function changeEnter()
+{
+	// If we already have an editor, let's destroy it first.
+	if ( editor )
+		editor.destroy( true );
+
+	// Create the editor again, with the appropriate settings.
+	editor = CKEDITOR.replace( 'editor1',
+		{
+			enterMode		: Number( document.getElementById( 'xEnter' ).value ),
+			shiftEnterMode	: Number( document.getElementById( 'xShiftEnter' ).value )
+		});
+}
+
+window.onload = changeEnter;
+
+	//]]>
+	</script>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<!-- This <fieldset> holds the HTML that you will usually find in your
+	     pages. -->
+	<div style="float: left; margin-right: 20px">
+			When ENTER is pressed:<br/>
+			<select id="xEnter" onchange="changeEnter();">
+				<option selected="selected" value="1">Create new &lt;P&gt; (recommended)</option>
+				<option value="3">Create new &lt;DIV&gt;</option>
+				<option value="2">Break the line with a &lt;BR&gt;</option>
+			</select>
+		</div>
+		<div style="float: left">
+			When SHIFT + ENTER is pressed:<br/>
+			<select id="xShiftEnter" onchange="changeEnter();">
+				<option value="1">Create new &lt;P&gt;</option>
+				<option value="3">Create new &lt;DIV&gt;</option>
+				<option selected="selected" value="2">Break the line with a &lt;BR&gt; (recommended)</option>
+			</select>
+		</div>
+		<br style="clear: both"/>
+
+		<form action="sample_posteddata.php" method="post">
+			<p>
+				<br/>
+				<textarea cols="80" id="editor1" name="editor1" rows="10">This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.</textarea>
+			</p>
+			<p>
+				<input type="submit" value="Submit"/>
+			</p>
+		</form>
+	<div id="footer">
+		<hr/>
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/" shape="rect">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright Â© 2003-2009, <a href="http://cksource.com/" shape="rect">CKSource</a> - Frederico Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/_samples/index.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/_samples/index.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_samples/index.html	(revision 2000)
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Samples List - CKEditor</title>
+	<link type="text/css" rel="stylesheet" href="sample.css" />
+</head>
+<body>
+	<h1>
+		CKEditor Samples List
+	</h1>
+	<h2>
+		Basic Samples
+	</h2>
+	<ul>
+		<li><a href="replacebyclass.html">Replace textareas by class name</a></li>
+		<li><a href="replacebycode.html">Replace textareas by code</a></li>
+	</ul>
+	<h2>
+		Basic Customization
+	</h2>
+	<ul>
+		<li><a href="skins.html">Skins</a></li>
+		<li><a href="ui_color.html">User Interface Color</a></li>
+		<li><a href="ui_languages.html">User Interface Languages</a></li>
+	</ul>
+	<h2>
+		Advanced Samples
+	</h2>
+	<ul>
+		<li><a href="divreplace.html">Replace DIV elements on the fly</a>&nbsp; </li>
+		<li><a href="ajax.html">Create and destroy editor instances for Ajax applications</a></li>
+		<li><a href="api.html">Basic usage of the API</a></li>
+		<li><a href="api_dialog.html">Using the JavaScript API to customize dialogs</a></li>
+		<li><a href="enterkey.html">Using the "Enter" key in CKEditor</a></li>
+	</ul>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2009, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/_samples/api_dialog.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/_samples/api_dialog.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_samples/api_dialog.html	(revision 2000)
@@ -0,0 +1,178 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css"/>
+	<style id="styles" type="text/css">
+
+.cke_button_myDialogCmd .cke_icon
+{
+	display : none !important;
+}
+
+.cke_button_myDialogCmd .cke_label
+{
+	display : inline !important;
+}
+
+	</style>
+	<script id="headscript" type="text/javascript">
+	//<![CDATA[
+
+// When opening a dialog, its "definition" is created for it, for
+// each editor instance. The "dialogDefinition" event is then
+// fired. We should use this event to make customizations to the
+// definition of existing dialogs.
+CKEDITOR.on( 'dialogDefinition', function( ev )
+	{
+		// Take the dialog name and its definition from the event
+		// data.
+		var dialogName = ev.data.name;
+		var dialogDefinition = ev.data.definition;
+
+		// Check if the definition is from the dialog we're
+		// interested on (the "Link" dialog).
+		if ( dialogName == 'link' )
+		{
+			// Get a reference to the "Link Info" tab.
+			var infoTab = dialogDefinition.getContents( 'info' );
+
+			// Add a text field to the "info" tab.
+			infoTab.add( {
+					type : 'text',
+					label : 'My Custom Field',
+					id : 'customField',
+					'default' : 'Sample!',
+					validate : function()
+					{
+						if ( /\d/.test( this.getValue() ) )
+							return 'My Custom Field must not contain digits';
+					}
+				});
+
+			// Remove the "Link Type" combo and the "Browser
+			// Server" button from the "info" tab.
+			infoTab.remove( 'linkType' );
+			infoTab.remove( 'browse' );
+
+			// Set the default value for the URL field.
+			var urlField = infoTab.get( 'url' );
+			urlField['default'] = 'www.example.com';
+
+			// Remove the "Target" tab from the "Link" dialog.
+			dialogDefinition.removeContents( 'target' );
+
+			// Add a new tab to the "Link" dialog.
+			dialogDefinition.addContents({
+				id : 'customTab',
+				label : 'My Tab',
+				accessKey : 'M',
+				elements : [
+					{
+						id : 'myField1',
+						type : 'text',
+						label : 'My Text Field'
+					},
+					{
+						id : 'myField2',
+						type : 'text',
+						label : 'Another Text Field'
+					}
+				]
+			});
+		}
+	});
+
+	//]]>
+	</script>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<!-- This <fieldset> holds the HTML that you will usually find in your
+	     pages. -->
+	<p>
+			This sample shows how to use the dialog API to customize dialogs whithout changing
+			the original editor code. The following customizations are being done::</p>
+		<ol>
+			<li><strong>Add dialog pages</strong> ("My Tab" in the Link dialog).</li>
+			<li><strong>Remove a dialog tab</strong> ("Target" tab from the Link dialog).</li>
+			<li><strong>Add dialog fields</strong> ("My Custom Field" into the Link dialog).</li>
+			<li><strong>Remove dialog fields</strong> ("Link Type" and "Browser Server" the Link dialog).</li>
+			<li><strong>Set default values for dialog fields</strong> (for the "URL" field in the
+				Link dialog). </li>
+			<li><strong>Create a custom dialog</strong> ("My Dialog" button).</li>
+		</ol>
+		<textarea cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+		<script type="text/javascript">
+		//<![CDATA[
+			// Replace the <textarea id="editor1"> with an CKEditor instance.
+			var editor = CKEDITOR.replace( 'editor1',
+				{
+					// Defines a simpler toolbar to be used in this sample.
+					// Note that we have added out "MyButton" button here.
+					toolbar : [ [ 'Source', '-', 'Bold', 'Italic', 'Underline', 'Strike','-','Link', '-', 'MyButton' ] ]
+				});
+
+			// Listen for the "pluginsLoaded" event, so we are sure that the
+			// "dialog" plugin has been loaded and we are able to do our
+			// customizations.
+			editor.on( 'pluginsLoaded', function( ev )
+				{
+					// If our custom dialog has not been registered, do that now.
+					if ( !CKEDITOR.dialog.exists( 'myDialog' ) )
+					{
+						// We need to do the following trick to find out the dialog
+						// definition file URL path. In the real world, you would simply
+						// point to an absolute path directly, like "/mydir/mydialog.js".
+						var href = document.location.href.split( '/' );
+						href.pop();
+						href.push( 'api_dialog', 'my_dialog.js' );
+						href = href.join( '/' );
+
+						// Finally, register the dialog.
+						CKEDITOR.dialog.add( 'myDialog', href );
+					}
+
+					// Register the command used to open the dialog.
+					editor.addCommand( 'myDialogCmd', new CKEDITOR.dialogCommand( 'myDialog' ) );
+
+					// Add the a custom toolbar buttons, which fires the above
+					// command..
+					editor.ui.addButton( 'MyButton',
+						{
+							label : 'My Dialog',
+							command : 'myDialogCmd'
+						} );
+				});
+		//]]>
+		</script>
+	<div id="footer">
+		<hr/>
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/" shape="rect">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright Â© 2003-2009, <a href="http://cksource.com/" shape="rect">CKSource</a> - Frederico Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/_samples/api.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/_samples/api.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_samples/api.html	(revision 2000)
@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css"/>
+	<script id="headscript" type="text/javascript">
+	//<![CDATA[
+
+// The instanceReady event is fired when an instance of CKEditor has finished
+// its initialization.
+CKEDITOR.on( 'instanceReady', function( ev )
+	{
+		// Show the editor name and description in the browser status bar.
+		document.getElementById('eMessage').innerHTML = '<p>Instance "' + ev.editor.name + '" loaded.<\/p>' ;
+
+		// Show this sample buttons.
+		document.getElementById('eButtons').style.visibility = '' ;
+	});
+
+function InsertHTML()
+{
+	// Get the editor instance that we want to interact with.
+	var oEditor = CKEDITOR.instances.editor1 ;
+	var value = document.getElementById( 'plainArea' ).value ;
+
+	// Check the active editing mode.
+	if (oEditor.mode == 'wysiwyg' )
+	{
+		// Insert the desired HTML.
+		oEditor.insertHtml( value ) ;
+	}
+	else
+		alert( 'You must be on WYSIWYG mode!' ) ;
+}
+
+function SetContents()
+{
+	// Get the editor instance that we want to interact with.
+	var oEditor = CKEDITOR.instances.editor1 ;
+	var value = document.getElementById( 'plainArea' ).value ;
+
+	// Set the editor contents (replace the actual one).
+	oEditor.setData( value ) ;
+}
+
+function GetContents()
+{
+	// Get the editor instance that we want to interact with.
+	var oEditor = CKEDITOR.instances.editor1 ;
+
+	// Get the editor contents
+	alert( oEditor.getData() ) ;
+}
+
+function ExecuteCommand( commandName )
+{
+	// Get the editor instance that we want to interact with.
+	var oEditor = CKEDITOR.instances.editor1 ;
+
+	// Check the active editing mode.
+	if (oEditor.mode == 'wysiwyg' )
+	{
+		// Execute the command.
+		oEditor.execCommand( commandName ) ;
+	}
+	else
+		alert( 'You must be on WYSIWYG mode!' ) ;
+}
+
+function CheckDirty()
+{
+	// Get the editor instance that we want to interact with.
+	var oEditor = CKEDITOR.instances.editor1 ;
+	alert( oEditor.checkDirty() ) ;
+}
+
+function ResetDirty()
+{
+	// Get the editor instance that we want to interact with.
+	var oEditor = CKEDITOR.instances.editor1 ;
+	oEditor.resetDirty() ;
+	alert( 'The "IsDirty" status has been reset' ) ;
+}
+
+	//]]>
+	</script>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<!-- This <fieldset> holds the HTML that you will usually find in your
+	     pages. -->
+	<form action="sample_posteddata.php" method="post">
+		<p>
+		This sample shows how to use the CKeditor JavaScript API to interact with the editor
+		at runtime.</p>
+		<textarea cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+		<script type="text/javascript">
+		//<![CDATA[
+			// Replace the <textarea id="editor1"> with an CKEditor instance.
+			var editor = CKEDITOR.replace( 'editor1');
+		//]]>
+		</script>
+		<div id="eMessage">
+
+		</div>
+		<div id="eButtons" style="visibility: hidden">
+			<input onclick="InsertHTML();" type="button" value="Insert HTML"/>
+			<input onclick="SetContents();" type="button" value="Set Editor Contents"/>
+			<input onclick="GetContents();" type="button" value="Get Editor Contents (XHTML)"/>
+			<br/>
+			<textarea cols="80" id="plainArea" rows="3">&lt;h2&gt;Test&lt;/h2&gt;&lt;p&gt;This is some &lt;a href="/Test1.html"&gt;sample&lt;/a&gt; HTML&lt;/p&gt;</textarea>
+			<br/>
+			<br/>
+			<input onclick="ExecuteCommand('bold');" type="button" value="Execute &quot;bold&quot; Command"/>
+			<input onclick="ExecuteCommand('link');" type="button" value="Execute &quot;link&quot; Command"/>
+		<br/>
+		<br/>
+		<input onclick="CheckDirty();" type="button" value="checkDirty()"/>
+		<input onclick="ResetDirty();" type="button" value="resetDirty()"/>
+		</div>
+		</form>
+	<div id="footer">
+		<hr/>
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/" shape="rect">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright Â© 2003-2009, <a href="http://cksource.com/" shape="rect">CKSource</a> - Frederico Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/_samples/ui_color.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/_samples/ui_color.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/_samples/ui_color.html	(revision 2000)
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<!-- This <fieldset> holds the HTML that you will usually find in your
+	     pages. -->
+	<p>Click the UI Color Picker button to test your color preferences at runtime.</p>
+		<form action="sample_posteddata.php" method="post">
+			<p>
+				<textarea cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+				<script type="text/javascript">
+				//<![CDATA[
+
+					// Replace the <textarea id="editor"> with an CKEditor
+					// instance, using default configurations.
+					CKEDITOR.replace( 'editor1',
+						{
+							extraPlugins : 'uicolor',
+							toolbar :
+							[
+								[ 'Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink' ],
+								[ 'UIColor' ]
+							]
+						});
+
+				//]]>
+				</script>
+			</p>
+			<p>
+				<textarea cols="80" id="editor2" name="editor2" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+				<script type="text/javascript">
+				//<![CDATA[
+
+					// Replace the <textarea id="editor"> with an CKEditor
+					// instance, using default configurations.
+					CKEDITOR.replace( 'editor2',
+						{
+							extraPlugins : 'uicolor',
+							uiColor: '#14B8C4',
+							toolbar :
+							[
+								[ 'Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink' ],
+								[ 'UIColor' ]
+							]
+						} );
+
+				//]]>
+				</script>
+			</p>
+			<p>
+				<input type="submit" value="Submit"/>
+			</p>
+		</form>
+	<div id="footer">
+		<hr/>
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/" shape="rect">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright Â© 2003-2009, <a href="http://cksource.com/" shape="rect">CKSource</a> - Frederico Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/INSTALL.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/INSTALL.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/INSTALL.html	(revision 2000)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Installation Guide - CKEditor</title>
+	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+	<style type="text/css">
+		h3
+		{
+			border-bottom: 1px solid #AAAAAA;
+		}
+		pre
+		{
+			background-color: #F9F9F9;
+			border: 1px dashed #2F6FAB;
+			padding: 1em;
+			line-height: 1.1em;
+		}
+		#footer hr
+		{
+			margin: 10px 0 15px 0;
+			height: 1px;
+			border: solid 1px gray;
+			border-bottom: none;
+		}
+		#footer p
+		{
+			margin: 0 10px 10px 10px;
+			float: left;
+		}
+		#footer #copy
+		{
+			float: right;
+		}
+	</style>
+</head>
+<body>
+	<h1>
+		CKEditor Installation Guide</h1>
+	<h3>
+		What&#39;s CKEditor?</h3>
+	<p>
+		CKEditor is a text editor to be used inside web pages. It&#39;s not a replacement
+		for desktop text editors like Word or OpenOffice, but a component to be used as
+		part of web applications and web sites.</p>
+	<h3>
+		Installation</h3>
+	<p>
+		Installing CKEditor is an easy task. Just follow these simple steps:</p>
+	<ol>
+		<li><strong>Download</strong> the latest version of the editor from our web site: <a
+			href="http://ckeditor.com">http://ckeditor.com</a>. You should have already completed
+			this step, but be sure you have the very latest version.</li>
+		<li><strong>Extract</strong> (decompress) the downloaded file into the root of your
+			web site.</li>
+	</ol>
+	<p>
+		<strong>Note:</strong> CKEditor is by default installed in the &quot;ckeditor&quot;
+		folder. You can place the files in whichever you want though.</p>
+	<h3>
+		Checking Your Installation
+	</h3>
+	<p>
+		The editor comes with a few sample pages that can be used to verify that installation
+		proceeded properly. Take a look at the <a href="_samples">_samples</a> directory.</p>
+	<p>
+		To test your installation, just call the following page at your web site:</p>
+	<pre>
+http://&lt;your site&gt;/&lt;CKEditor installation path&gt;/_samples/index.html
+
+For example:
+http://www.example.com/ckeditor/_samples/index.html</pre>
+	<h3>
+		Documentation</h3>
+	<p>
+		The full editor documentation is available online at the following address:<br />
+		<a href="http://docs.cksource.com/ckeditor">http://docs.cksource.com/ckeditor</a></p>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2009, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/CHANGES.html
===================================================================
--- /trunk/filemanager/tp/ckeditor/CHANGES.html	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/CHANGES.html	(revision 2000)
@@ -0,0 +1,320 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Changelog - CKEditor</title>
+	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+	<style type="text/css">
+
+#footer hr
+{
+	margin: 10px 0 15px 0;
+	height: 1px;
+	border: solid 1px gray;
+	border-bottom: none;
+}
+
+#footer p
+{
+	margin: 0 10px 10px 10px;
+	float: left;
+}
+
+#footer #copy
+{
+	float: right;
+}
+
+	</style>
+</head>
+<body>
+	<h1>
+		CKEditor Changelog
+	</h1>
+	<h3>
+		CKEditor 3.0.1</h3>
+	<p>
+		New features:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/4219">#4219</a> : Added fallback mechanism for config.language.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4194">#4194</a> : Added support for using multiple css style sheets within the editor.</li>
+	</ul>
+	<p>
+		Fixed issues:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/3898">#3898</a> : Added validation for URL value in Image dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3528">#3528</a> : Fixed Context Menu issue when triggered using Shift+F10.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4028">#4028</a> : Maximize control's tool tip was wrong once it is maximized.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4237">#4237</a> : Toolbar is chopped off in Safari browser 3.x.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4241">#4241</a> : Float panels are left on screen while editor is destroyed.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4274">#4274</a> : Double click event is incorrect handled in 'divreplace' sample.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4354">#4354</a> : Fixed TAB key on toolbar to not focus disabled buttons.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3856">#3856</a> : Fixed focus and blur events in source view mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3438">#3438</a> : Floating panels are off by (-1px, 0px) in RTL mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3370">#3370</a> : Refactored use of CKEDITOR.env.isCustomDomain().</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4230">#4230</a> : HC detection caused js error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3978">#3978</a> : Fixed setStyle float on IE7 strict.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4262">#4262</a> : Tab and Shift+Tab was not working to cycle through CTRL+SHIFT+F10 context menu in IE.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3633">#3633</a> : Default context menu isn't disabled in toolbar, status bar, panels...</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3897">#3897</a> : Now there is no image previews when the URL is empty in image dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4048">#4048</a> : Context submenu was lacking uiColor.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3568">#3568</a> : Dialogs now select all text when tabbing to text inputs.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3727">#3727</a> : Cell Properties dialog was missing color selection option.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3517">#3517</a> : Fixed "Match cyclic" field in Find & Replace dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4368">#4368</a> : borderColor table cell attribute haven't worked for none-IE</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4203">#4203</a> : In IE quirks mode + toolbar collapsed + source mode editing block height was incorrect.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4387">#4387</a> : Fixed: right clicking in Kama skin can lead to a javascript error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4397">#4397</a> : Wysiwyg mode caused the host page scroll.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4385">#4385</a> : Fixed editor's auto adjusting on DOM structure were confusing the dirty checking mechanism.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4397">#4397</a> : Fixed regression of [3816] where turn on design mode was causing Firefox3 to scroll the host page.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4254">#4254</a> : Added basic API sample.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4107">#4107</a> : Normalize css font-family style text for correct comparision.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3664">#3664</a> : Insert block element in empty editor document should not create new paragraph.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4037">#4037</a> : 'id' attribute is missing with Flash dialog advanced page.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4047">#4047</a> : Delete selected control type element when 'Backspace' is pressed on it.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4191">#4191</a> : Fixed: dialog changes confirmation on image dialog appeared even when no changes have been made.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4351">#4351</a> : Dash and dot could appear in attribute names.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4355">#4355</a> : 'maximize' and 'showblock' commands shouldn't take editor focus.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4504">#4504</a> : Fixed 'Enter'/'Esc' key is not working on dialog button.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4245">#4245</a> : 'Strange Template' now come with a style attribute for width.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4512">#4512</a> : Fixed styles plugin incorrectly adding semicolons to style text.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3855">#3855</a> : Fixed loading unminified _source files when ckeditor_source.js is used.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3717">#3717</a> : Dialog settings defaults can now be overridden in-page through the CKEDITOR.config object.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4481">#4481</a> : The 'stylesCombo_stylesSet' configuration entry didn't work for full URLs.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4480">#4480</a> : Fixed scope attribute in th.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4467">#4467</a> : Fixed bug to use custom icon in context menus. Thanks to george.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4190">#4190</a> : Fixed select field dialog layout in Safari.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4518">#4518</a> : Fixed unable to open dialog without editor focus in IE.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4519">#4519</a> : Fixed maximize without editor focus throw error in IE.</li>
+		<li>Updated the following language files:<ul>
+			<li><a href="http://dev.fckeditor.net/ticket/3947">#3947</a> : Arabic;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4466">#4466</a> : Czech;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4363">#4363</a> : Danish;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4346">#4346</a> : Dutch;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4371">#4371</a> <a href="http://dev.fckeditor.net/ticket/4456">#4456</a> : Hebrew;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4382">#4382</a> : Polish.</li>
+		</ul></li>
+	</ul>
+	<h3>
+		CKEditor 3.0</h3>
+	<p>
+		New features:</p>
+	<ul>
+	<li><a href="http://dev.fckeditor.net/ticket/3188">#3188</a> : Introduce
+		&lt;pre&gt; formatting feature when converting from other blocks.</li>
+	<li><a href="http://dev.fckeditor.net/ticket/4445">#4445</a> : editor::setData now support an optional callback parameter.</li>
+	</ul>
+	<p>
+		Fixed issues:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/2856">#2856</a> : Fixed problem with inches in Paste From Word plugin.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3929">#3929</a> : Using Paste dialog,
+			the text is pasted into current selection</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3920">#3920</a> : Mouse cursor over characters in
+			Special Character dialog now is correct</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3882">#3882</a> : Fixed an issue
+			with PasteFromWord dialog in which default values was ignored</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3859">#3859</a> : Fixed Flash dialog layout in Webkit</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3852">#3852</a> : Disabled textarea resizing in dialogs</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3831">#3831</a> : The attempt to remove the contextmenu plugin
+			will not anymore break the editor</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3781">#3781</a> : Colorbutton is now disabled in 'source' mode</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3848">#3848</a> : Fixed an issue with Webkit in witch
+			elements in the Image and Link dialogs had wrong dimensions.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3808">#3808</a> : Fixed UI Color Picker dialog size in example page.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3658">#3658</a> : Editor had horizontal scrollbar in IE6.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3819">#3819</a> : The cursor was not visible
+			when applying style to collapsed selections in Firefox 2.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3809">#3809</a> : Fixed beam cursor
+			when mouse cursor is over text-only buttons in IE.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3815">#3815</a> : Fixed an issue
+			with the form dialog in which the "enctype" attribute is outputted as "encoding".</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3785">#3785</a> : Fixed an issue
+			in CKEDITOR.tools.htmlEncode() which incorrectly outputs &amp;nbsp; in IE8.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3820">#3820</a> : Fixed an issue in
+			bullet list command in which a list created at the bottom of another gets merged to the top.
+			</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3830">#3830</a> : Table cell properties dialog
+			doesn't apply to all selected cells.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3835">#3835</a> : Element path is not refreshed
+			after click on 'newpage'; and safari is not putting focus on document also.
+			</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3821">#3821</a> : Fixed an issue with JAWS in which
+			toolbar items are read inconsistently between virtual cursor modes.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3789">#3789</a> : The &quot;src&quot; attribute
+			was getting duplicated in some situations.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3591">#3591</a> : Protecting flash related elements
+			including '&lt;object&gt;', '&lt;embed&gt;' and '&lt;param&gt;'.
+			</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3759">#3759</a> : Fixed CKEDITOR.dom.element::scrollIntoView
+			logic bug which scroll even element is inside viewport.
+			</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3773">#3773</a> : Fixed remove list will merge lines.
+			</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3829">#3829</a> : Fixed remove empty link on output data.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3730">#3730</a> : Indent is performing on the whole
+			block instead of selected lines in enterMode = BR.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3844">#3844</a> : Fixed UndoManager register keydown on obsoleted document</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3805">#3805</a> : Enabled SCAYT plugin for IE.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3834">#3834</a> : Context menu on table caption was incorrect.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3812">#3812</a> : Fixed an issue in which the editor
+			may show up empty or uneditable in IE7, 8 and Firefox 3.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3825">#3825</a> : Fixed JS error when opening spellingcheck.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3862">#3862</a> : Fixed html parser infinite loop on certain malformed
+			source code.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3639">#3639</a> : Button size was inconsistent.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3874">#3874</a> : Paste as plain text in Safari loosing lines.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3849">#3849</a> : Fixed IE8 crashes when applying lists and indenting.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3876">#3876</a> : Changed dialog checkbox and radio labels to explicit labels.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3843">#3843</a> : Fixed context submenu position in IE 6 & 7 RTL.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3864">#3864</a> : [FF]Document is not editable after inserting element on a fresh page.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3883">#3883</a> : Fixed removing inline style logic incorrect on Firefox2.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3884">#3884</a> : Empty "href" attribute was duplicated on output data.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3858">#3858</a> : Fixed the issue where toolbars
+			break up in IE6 and IE7 after the browser is resized.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3868">#3868</a> : [chrome] SCAYT toolbar options was in reversed order.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3875">#3875</a> : Fixed an issue in Safari where
+			table row/column/cell menus are not useable when table cells are selected.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3896">#3896</a> : The editing area was
+			flashing when switching forth and back to source view.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3894">#3894</a> : Fixed an issue where editor failed to initialize when using the on-demand loading way.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3903">#3903</a> : Color button plugin doesn't read config entry from editor instance correctly.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3801">#3801</a> : Comments at the start of the document was lost in IE.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3871">#3871</a> : Unable to redo when undos to the front of snapshots stack.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3909">#3909</a> : Move focus from editor into a text input control is broken.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3870">#3870</a> : The empty paragraph
+			desappears when hitting ENTER after &quot;New Page&quot;.</li>
+ 		<li><a href="http://dev.fckeditor.net/ticket/3887">#3887</a> : Fixed an issue in which the create
+ 			list command may leak outside of a selected table cell and into the rest of document.</li>
+ 		<li><a href="http://dev.fckeditor.net/ticket/3916">#3916</a> : Fixed maximize does not enlarge editor width when width is set.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3879">#3879</a> : [webkit] Color button panel had incorrect size on first open.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3839">#3839</a> : Update Scayt plugin to reflect the latest change from SpellChecker.net.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3742">#3742</a> : Fixed wrong dialog layout for dialogs without tab bar in IE RTL mode .</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3671">#3671</a> : Fixed body fixing should be applied to the real type under fake elements.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3836">#3836</a> : Fixed remove list in enterMode=BR will merge sibling text to one line.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3949">#3949</a> : Fixed enterKey within pre-formatted text introduce wrong line-break.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3878">#3878</a> : Whenever possible,
+		dialogs will not present scrollbars if the content is too big for its standard
+		size.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3782">#3782</a> : Remove empty list in table cell result in collapsed cell.</li>
+		<li>Updated the following language files:<ul>
+			<li><a href="http://dev.fckeditor.net/ticket/4183">#4183</a> : Basque;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/3837">#3837</a> : Brazilian Portuguese;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4171">#4171</a> : Catalan;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4115">#4115</a> : Chinese (Simplified);</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4179">#4179</a> : Chinese (Traditional);</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4102">#4102</a> : Croatian;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4105">#4105</a> : French;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4104">#4104</a> : German;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4116">#4116</a> : Italian;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4091">#4091</a> : Japanese;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4120">#4120</a> : Polish;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/3987">#3987</a> : Spanish;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4089">#4089</a> : Ukrainian;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4166">#4166</a> : Vietnamese.</li>
+		</ul></li>
+		<li><a href="http://dev.fckeditor.net/ticket/3984">#3984</a> : [IE]The pre-formatted style is generating error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3946">#3946</a> : Fixed unable to hide contextmenu.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3956">#3956</a> : Fixed About dialog in Source Mode for IE.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3953">#3953</a> : Fixed keystroke for close Paste dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3951">#3951</a> : Reset size and lock ratio options were not accessible in Image dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3921">#3921</a> : Fixed Container scroll issue on IE7.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3940">#3940</a> : Fixed list operation doesn't stop at table.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3891">#3891</a> : [IE] Fixed 'automatic' font color doesn't work.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3972">#3972</a> : Fixed unable to remove a single empty list in document in Firefox with enterMode=BR.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3973">#3973</a> : Fixed list creation error at the end of document.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3959">#3959</a> : Pasting styled text from word result in content lost.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3793">#3793</a> : Combined images into sprites.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3783">#3783</a> : Fixed indenting command in table cells create collapsed paragraph.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3968">#3968</a> : About dialog layout was broken with IE+Standards+RTL.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3991">#3991</a> : In IE quirks, text was not visible in v2 and office2003 skins.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3983">#3983</a> : In IE, we&#39;ll now
+			silently ignore wrong toolbar definition settings which have extra commas being
+			left around.</li>
+		<li>Fixed the following test cases:<ul>
+			<li><a href="http://dev.fckeditor.net/ticket/3992">#3992</a> : core/ckeditor2.html</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4138">#4138</a> : core/plugins.html</li>
+			<li><a href="http://dev.fckeditor.net/ticket/3801">#3801</a> : plugins/htmldataprocessor/htmldataprocessor.html</li>
+		</ul></li>
+		<li><a href="http://dev.fckeditor.net/ticket/3989">#3989</a> : Host page horizontal scrolling a lot when on having righ-to-left direction.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4001">#4001</a> : Create link around existing image result incorrect.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3988">#3988</a> : Destroy editor on form submit event cause error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3994">#3994</a> : Insert horizontal line at end of document cause error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4074">#4074</a> : Indent error with 'indentClasses' config specified.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4057">#4057</a> : Fixed anchor is lost after switch between editing modes.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3644">#3644</a> : Image dialog was missin radio lock.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4014">#4014</a> : Firefox2 had no dialog button backgrounds.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4018">#4018</a> : Firefox2 had no richcombo text visible.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4035">#4035</a> : [IE6] Paste dialog size was too small.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4049">#4049</a> : Kama skin was too wide with config.width.</li>
+		<li>The following released files now doesn't require the _source folder<ul>
+			<li><a href="http://dev.fckeditor.net/ticket/4086">#4086</a> : _samples/ui_languages.html</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4093">#4093</a> : _tests/core/dom/document.html</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4094">#4094</a> : Smiley plugin file</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4097">#4097</a> : No undo/redo support for fontColor and backgroundColor buttons.</li>
+		</ul></li>
+		<li><a href="http://dev.fckeditor.net/ticket/4085">#4085</a> : Paste and Paste from Word dialogs were not well styled in IE+RTL.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3982">#3982</a> : Fixed enterKey on empty list item result in weird dom structure.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4101">#4101</a> : Now it is possible to close dialog before gets focus.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4075">#4075</a> : [IE6/7]Fixed apply custom inline style with "class" attribute failed.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4087">#4087</a> : [Firefox]Fixed extra blocks created on create list when full document selected.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4097">#4097</a> : No undo/redo support for fontColor and backgroundColor buttons.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4111">#4111</a> : Fixed apply block style after inline style applied on full document error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3622">#3622</a> : Fixed shift enter with selection not deleting highlighted text.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4092">#4092</a> : [IE6] Close button was missing for dialog without multiple tabs.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4003">#4003</a> : Markup on the image dialog was disrupted when removing the border input.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4096">#4096</a> : Editor content area was pushed down in IE RTL quirks.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4112">#4112</a> : [FF] Paste dialog had scrollbars in quirks.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4118">#4118</a> : Dialog dragging was
+			occasionally behaving strangely .</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4077">#4077</a> : The toolbar combos
+			were rendering incorrectly in some languages, like Chinese.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3622">#3622</a> : The toolbar in the v2
+			skin was wrapping improperly in some languages.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4119">#4119</a> : Unable to edit image link with image dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4117">#4117</a> : Fixed dialog error when transforming image into button.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4058">#4058</a> : [FF] wysiwyg mode is sometimes not been activated.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4114">#4114</a> : [IE] RTE + IE6/IE7 Quirks = dialog mispositoned.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4123">#4123</a> : Some dialog buttons were broken in IE7 quirks.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4122">#4122</a> : [IE] The image dialog
+			was being rendered improperly when loading an image with long URL.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4144">#4144</a> : Fixed the white-spaces at the end of &lt;pre&gt; is incorrectly removed.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4143">#4143</a> : Fixed element id is lost when extracting contents from the range.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4007">#4007</a> : [IE] Source area overflow from editor chrome.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4145">#4145</a> : Fixed the on demand
+			(&quot;basic&quot;) loading model of the editor.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4139">#4139</a> : Fixed list plugin regression of [3903].</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4147">#4147</a> : Unify style text normalization logic when comparing styles.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4150">#4150</a> : Fixed enlarge list result incorrect at the inner boundary of block.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4164">#4164</a> : Now it is possible to paste text
+			in Source mode even if forcePasteAsPlainText = true.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4129">#4129</a> : [FF]Unable to remove list with Ctrl-A.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4172">#4172</a> : [Safari] The trailing
+			&lt;br&gt; was not been always added to blank lines ending with &amp;nbsp;.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4178">#4178</a> : It&#39;s now possible to
+			copy and paste Flash content among different editor instances.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4193">#4193</a> : Automatic font color produced empty span on Firefox 3.5.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4186">#4186</a> : [FF] Fixed First open float panel cause host page scrollbar blinking.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4227">#4227</a> : Fixed destroy editor instance created on textarea which is not within form cause error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4240">#4240</a> : Fixed editor name containing hyphen break editor completely.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3828">#3828</a> : Malformed nested list is now corrected by the parser.</li>
+	</ul>
+	<h3>
+		CKEditor 3.0 RC</h3>
+	<p>
+		Changelog starts at this release.</p>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2009, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/ckeditor/.htaccess
===================================================================
--- /trunk/filemanager/tp/ckeditor/.htaccess	(revision 2000)
+++ /trunk/filemanager/tp/ckeditor/.htaccess	(revision 2000)
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+# For licensing, see LICENSE.html or http://ckeditor.com/license
+#
+
+#
+# On some specific Linux installations you could face problems with Firefox.
+# It could give you errors when loading the editor saying that some illegal
+# characters were found (three strange chars in the beginning of the file).
+# This could happen if you map the .js or .css files to PHP, for example.
+#
+# Those characters are the Byte Order Mask (BOM) of the Unicode encoded files.
+# All FCKeditor files are Unicode encoded.
+#
+
+AddType application/x-javascript .js
+AddType text/css .css
+
+#
+# If PHP is mapped to handle XML files, you could have some issues. The
+# following will disable it.
+#
+
+AddType text/xml .xml
Index: /trunk/filemanager/tp/dompdf/LICENSE.LGPL
===================================================================
--- /trunk/filemanager/tp/dompdf/LICENSE.LGPL	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/LICENSE.LGPL	(revision 2000)
@@ -0,0 +1,456 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
Index: /trunk/filemanager/tp/dompdf/dompdf.php
===================================================================
--- /trunk/filemanager/tp/dompdf/dompdf.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/dompdf.php	(revision 2000)
@@ -0,0 +1,324 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: dompdf.php,v $
+ * Created on: 2004-06-22
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * dompdf.php is a simple script to drive DOMPDF.  It can be executed from
+ * a browser or from the command line.
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: dompdf.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Display command line usage:
+ *
+ * Usage: ./dompdf.php [options] html_file
+ *
+ * html_file can be a filename, a url if fopen_wrappers are enabled, or the '-'
+ * character to read from standard input.
+ *
+ * Options:
+ *  -h             Show this message
+ *  -l             list available paper sizes
+ *  -p size        paper size; something like 'letter', 'A4', 'legal', etc.  The default is
+ *                 'letter'
+ *  -o orientation either 'portrait' or 'landscape'.  Default is 'portrait'.
+ *  -b path        set the 'document root' of the html_file.  Relative urls (for
+ *                 stylesheets) are resolved using this directory.  Default is the
+ *                 directory of html_file.
+ *  -f file        the output filename.  Default is the input [html_file].pdf.
+ *  -v             verbose: display html parsing warnings and file not found errors.
+ *  -d             very verbose: display oodles of debugging output: every frame in the
+ *                 tree is printed to stdout.
+ *  -t             comma separated list of debugging types (page-break,reflow,split)
+ *  -r             write the render time to the log file
+ *
+ *
+ */
+
+function dompdf_usage() {
+  echo
+    "\nUsage: {$_SERVER["argv"][0]} [options] html_file\n\n".
+    "html_file can be a filename, a url if fopen_wrappers are enabled, or the '-' \n".
+    "character to read from standard input.\n\n".
+    "Options:\n".
+    " -h\t\tShow this message\n".
+    " -l\t\tlist available paper sizes\n".
+    " -p size\tpaper size; something like 'letter', 'A4', 'legal', etc.  The default is\n".
+    "   \t\t'" . DOMPDF_DEFAULT_PAPER_SIZE . "'\n".
+    " -o orientation\teither 'portrait' or 'landscape'.  Default is 'portrait'.\n".
+    " -b path\tset the 'document root' of the html_file.  Relative urls (for \n".
+    "        \tstylesheets) are resolved using this directory.  Default is the \n".
+    "        \tdirectory of html_file.\n".
+    " -f file\tthe output filename.  Default is the input [html_file].pdf.\n".
+    " -v     \tverbose: display html parsing warnings and file not found errors.\n".
+    " -d     \tvery verbose:  display oodles of debugging output: every frame\n".
+    "        \tin the tree printed to stdout.\n".
+    " -t             comma separated list of debugging types (page-break,reflow,split)\n\n";
+    
+
+}
+
+function getoptions() {
+
+  $opts = array();
+
+  if ( $_SERVER["argc"] == 1 )
+    return $opts;
+
+  $i = 1;
+  while ($i < $_SERVER["argc"]) {
+
+    switch ($_SERVER["argv"][$i]) {
+
+    case "--help":
+    case "-h":
+      $opts["h"] = true;
+      $i++;
+      break;
+
+    case "-l":
+      $opts["l"] = true;
+      $i++;
+      break;
+
+    case "-p":
+      if ( !isset($_SERVER["argv"][$i+1]) )
+        die("-p switch requires a size parameter\n");
+      $opts["p"] = $_SERVER["argv"][$i+1];
+      $i += 2;
+      break;
+
+    case "-o":
+      if ( !isset($_SERVER["argv"][$i+1]) )
+        die("-o switch requires an orientation parameter\n");
+      $opts["o"] = $_SERVER["argv"][$i+1];
+      $i += 2;
+      break;
+
+    case "-b":
+      if ( !isset($_SERVER["argv"][$i+1]) )
+        die("-b switch requires a path parameter\n");
+      $opts["b"] = $_SERVER["argv"][$i+1];
+      $i += 2;
+      break;
+
+    case "-f":
+      if ( !isset($_SERVER["argv"][$i+1]) )
+        die("-f switch requires a filename parameter\n");
+      $opts["f"] = $_SERVER["argv"][$i+1];
+      $i += 2;
+      break;
+
+    case "-v":
+      $opts["v"] = true;
+      $i++;
+      break;
+
+    case "-d":
+      $opts["d"] = true;
+      $i++;
+      break;
+
+    case "-t":
+      if ( !isset($_SERVER['argv'][$i + 1]) )
+        die("-t switch requires a comma separated list of types\n");
+      $opts["t"] = $_SERVER['argv'][$i+1];
+      $i += 2;
+      break;
+
+   default:
+      $opts["filename"] = $_SERVER["argv"][$i];
+      $i++;
+      break;
+    }
+
+  }
+  return $opts;
+}
+
+require_once("dompdf_config.inc.php");
+global $_dompdf_show_warnings;
+global $_dompdf_debug;
+global $_DOMPDF_DEBUG_TYPES;
+
+$sapi = php_sapi_name();
+
+switch ( $sapi ) {
+
+ case "cli":
+
+  $opts = getoptions();
+
+  if ( isset($opts["h"]) || (!isset($opts["filename"]) && !isset($opts["l"])) ) {
+    dompdf_usage();
+    exit;
+  }
+
+  if ( isset($opts["l"]) ) {
+    echo "\nUnderstood paper sizes:\n";
+
+    foreach (array_keys(CPDF_Adapter::$PAPER_SIZES) as $size)
+      echo "  " . mb_strtoupper($size) . "\n";
+    exit;
+  }
+  $file = $opts["filename"];
+
+  if ( isset($opts["p"]) )
+    $paper = $opts["p"];
+  else
+    $paper = DOMPDF_DEFAULT_PAPER_SIZE;
+
+  if ( isset($opts["o"]) )
+    $orientation = $opts["o"];
+  else
+    $orientation = "portrait";
+
+  if ( isset($opts["b"]) )
+    $base_path = $opts["b"];
+
+  if ( isset($opts["f"]) )
+    $outfile = $opts["f"];
+  else {
+    if ( $file == "-" )
+      $outfile = "dompdf_out.pdf";
+    else
+      $outfile = str_ireplace(array(".html", ".htm", ".php"), "", $file) . ".pdf";
+  }
+
+  if ( isset($opts["v"]) )
+    $_dompdf_show_warnings = true;
+
+  if ( isset($opts["d"]) ) {
+    $_dompdf_show_warnings = true;
+    $_dompdf_debug = true;
+  }
+
+  if ( isset($opts['t']) ) {
+    $arr = split(',',$opts['t']);
+    $types = array();
+    foreach ($arr as $type)
+      $types[ trim($type) ] = 1;
+    $_DOMPDF_DEBUG_TYPES = $types;
+  }
+  
+  $save_file = true;
+
+  break;
+
+ default:
+
+ 	if ( isset($_GET["input_file"]) )
+ 		$file = basename(rawurldecode($_GET["input_file"]));
+ 	else
+ 		throw new DOMPDF_Exception("An input file is required (i.e. input_file _GET variable).");
+ 		
+ 	if ( isset($_GET["paper"]) )
+ 		$paper = rawurldecode($_GET["paper"]);
+ 	else
+ 		$paper = DOMPDF_DEFAULT_PAPER_SIZE;
+ 		
+ 	if ( isset($_GET["orientation"]) )
+ 		$orientation = rawurldecode($_GET["orientation"]);
+ 	else
+ 		$orientation = "portrait";
+ 		
+ 	if ( isset($_GET["base_path"]) )
+ 		$base_path = rawurldecode($_GET["base_path"]);
+ 		
+ 		
+ 		$outfile = "dompdf_out.pdf"; # Don't allow them to set the output file
+ 		$save_file = false; # Don't save the file
+ 		$file = $base_path . $file; # Set the input file
+
+ 		/* Check to see if the input file and base path = www/test */
+ 		if(!$base_path=="www/test/") 		
+ 			throw new DOMPDF_Exception("Access to dompdf.php via non-cli SAPI has been deprecated due to security concerns.  Please use the dompdf class directly.");
+
+   break;
+}
+
+$dompdf = new DOMPDF();
+
+if ( $file == "-" ) {
+  $str = "";
+  while ( !feof(STDIN) )
+    $str .= fread(STDIN, 4096);
+
+  $dompdf->load_html($str);
+
+} else
+  $dompdf->load_html_file($file);
+
+if ( isset($base_path) ) {
+  $dompdf->set_base_path($base_path);
+}
+
+$dompdf->set_paper($paper, $orientation);
+
+$dompdf->render();
+
+if ( $_dompdf_show_warnings ) {
+  global $_dompdf_warnings;
+  foreach ($_dompdf_warnings as $msg)
+    echo $msg . "\n";
+  echo $dompdf->get_canvas()->get_cpdf()->messages;
+  flush();
+}
+
+if ( $save_file ) {
+//   if ( !is_writable($outfile) )
+//     throw new DOMPDF_Exception("'$outfile' is not writable.");
+  if ( strtolower(DOMPDF_PDF_BACKEND) == "gd" )
+    $outfile = str_replace(".pdf", ".png", $outfile);
+
+  list($proto, $host, $path, $file) = explode_url($outfile);
+  if ( $proto != "" ) // i.e. not file://
+    $outfile = $file; // just save it locally, FIXME? could save it like wget: ./host/basepath/file
+
+  $outfile = dompdf_realpath($outfile);
+
+  if ( strpos($outfile, DOMPDF_CHROOT) !== 0 )
+    throw new DOMPDF_Exception("Permission denied.");
+
+  file_put_contents($outfile, $dompdf->output( array("compress" => 0) ));
+  exit(0);
+}
+
+if ( !headers_sent() ) {
+  $dompdf->stream($outfile);
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/dompdf.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/dompdf.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/dompdf.cls.php	(revision 2000)
@@ -0,0 +1,612 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: dompdf.cls.php,v $
+ * Created on: 2004-06-09
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: dompdf.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * DOMPDF loads HTML and does its best to render it as a PDF.  It gets its
+ * name from the new DomDocument PHP5 extension.  Source HTML is first
+ * parsed by a DomDocument object.  DOMPDF takes the resulting DOM tree and
+ * attaches a {@link Frame} object to each node.  {@link Frame} objects store
+ * positioning and layout information and each has a reference to a {@link
+ * Style} object.
+ *
+ * Style information is loaded and parsed (see {@link Stylesheet}) and is
+ * applied to the frames in the tree by using XPath.  CSS selectors are
+ * converted into XPath queries, and the computed {@link Style} objects are
+ * applied to the {@link Frame}s.
+ *
+ * {@link Frame}s are then decorated (in the design pattern sense of the
+ * word) based on their CSS display property ({@link
+ * http://www.w3.org/TR/CSS21/visuren.html#propdef-display}).
+ * Frame_Decorators augment the basic {@link Frame} class by adding
+ * additional properties and methods specific to the particular type of
+ * {@link Frame}.  For example, in the CSS layout model, block frames
+ * (display: block;) contain line boxes that are usually filled with text or
+ * other inline frames.  The Block_Frame_Decorator therefore adds a $lines
+ * property as well as methods to add {@link Frame}s to lines and to add
+ * additional lines.  {@link Frame}s also are attached to specific
+ * Positioner and {@link Frame_Reflower} objects that contain the
+ * positioining and layout algorithm for a specific type of frame,
+ * respectively.  This is an application of the Strategy pattern.
+ *
+ * Layout, or reflow, proceeds recursively (post-order) starting at the root
+ * of the document.  Space constraints (containing block width & height) are
+ * pushed down, and resolved positions and sizes bubble up.  Thus, every
+ * {@link Frame} in the document tree is traversed once (except for tables
+ * which use a two-pass layout algorithm).  If you are interested in the
+ * details, see the reflow() method of the Reflower classes.
+ *
+ * Rendering is relatively straightforward once layout is complete. {@link
+ * Frame}s are rendered using an adapted {@link Cpdf} class, originally
+ * written by Wayne Munro, http://www.ros.co.nz/pdf/.  (Some performance
+ * related changes have been made to the original {@link Cpdf} class, and
+ * the {@link CPDF_Adapter} class provides a simple, stateless interface to
+ * PDF generation.)  PDFLib support has now also been added, via the {@link
+ * PDFLib_Adapter}.
+ *
+ *
+ * @package dompdf
+ */
+class DOMPDF {
+
+
+  /**
+   * DomDocument representing the HTML document
+   *
+   * @var DomDocument
+   */
+  protected $_xml;
+
+  /**
+   * Frame_Tree derived from the DOM tree
+   *
+   * @var Frame_Tree
+   */
+  protected $_tree;
+
+  /**
+   * Stylesheet for the document
+   *
+   * @var Stylesheet
+   */
+  protected $_css;
+
+  /**
+   * Actual PDF renderer
+   *
+   * @var Canvas
+   */
+  protected $_pdf;
+
+  /**
+   * Desired paper size ('letter', 'legal', 'A4', etc.)
+   *
+   * @var string
+   */
+  protected $_paper_size;
+
+  /**
+   * Paper orientation ('portrait' or 'landscape')
+   *
+   * @var string
+   */
+  protected $_paper_orientation;
+
+  /**
+   * Callbacks on new page and new element
+   *
+   * @var array
+   */
+  protected $_callbacks;
+
+  /**
+   * Experimental caching capability
+   *
+   * @var string
+   */
+  private $_cache_id;
+
+  /**
+   * Base hostname
+   *
+   * Used for relative paths/urls
+   * @var string
+   */
+  protected $_base_host;
+
+  /**
+   * Absolute base path
+   *
+   * Used for relative paths/urls
+   * @var string
+   */
+  protected $_base_path;
+
+  /**
+   * Protcol used to request file (file://, http://, etc)
+   *
+   * @var string
+   */
+  protected $_protocol;
+
+
+  /**
+   * Class constructor
+   */
+  function __construct() {
+    $this->_messages = array();
+    $this->_xml = new DomDocument();
+    $this->_xml->preserveWhiteSpace = true;
+    $this->_tree = new Frame_Tree($this->_xml);
+    $this->_css = new Stylesheet();
+    $this->_pdf = null;
+    $this->_paper_size = "letter";
+    $this->_paper_orientation = "portrait";
+    $this->_base_protocol = "";
+    $this->_base_host = "";
+    $this->_base_path = "";
+    $this->_callbacks = array();
+    $this->_cache_id = null;
+  }
+
+  /**
+   * Returns the underlying {@link Frame_Tree} object
+   *
+   * @return Frame_Tree
+   */
+  function get_tree() { return $this->_tree; }
+
+  //........................................................................
+
+  /**
+   * Sets the protocol to use
+   *
+   * @param string $proto
+   */
+  // FIXME: validate these
+  function set_protocol($proto) { $this->_protocol = $proto; }
+
+  /**
+   * Sets the base hostname
+   *
+   * @param string $host
+   */
+  function set_host($host) { $this->_base_host = $host; }
+
+  /**
+   * Sets the base path
+   *
+   * @param string $path
+   */
+  function set_base_path($path) { $this->_base_path = $path; }
+
+  /**
+   * Returns the protocol in use
+   *
+   * @return string
+   */
+  function get_protocol() { return $this->_protocol; }
+
+  /**
+   * Returns the base hostname
+   *
+   * @return string
+   */
+  function get_host() { return $this->_base_host; }
+
+  /**
+   * Returns the base path
+   *
+   * @return string
+   */
+  function get_base_path() { return $this->_base_path; }
+
+  /**
+   * Return the underlying Canvas instance (e.g. CPDF_Adapter, GD_Adapter)
+   *
+   * @return Canvas
+   */
+  function get_canvas() { return $this->_pdf; }
+
+  /**
+   * Returns the callbacks array
+   *
+   * @return array
+   */
+  function get_callbacks() { return $this->_callbacks; }
+  
+  //........................................................................
+
+  /**
+   * Loads an HTML file
+   *
+   * Parse errors are stored in the global array _dompdf_warnings.
+   *
+   * @param string $file a filename or url to load
+   */
+  function load_html_file($file) {
+    // Store parsing warnings as messages (this is to prevent output to the
+    // browser if the html is ugly and the dom extension complains,
+    // preventing the pdf from being streamed.)
+    if ( !$this->_protocol && !$this->_base_host && !$this->_base_path )
+      list($this->_protocol, $this->_base_host, $this->_base_path) = explode_url($file);
+
+    if ( !DOMPDF_ENABLE_REMOTE &&
+         ($this->_protocol != "" && $this->_protocol != "file://" ) )
+      throw new DOMPDF_Exception("Remote file requested, but DOMPDF_ENABLE_REMOTE is false.");
+
+    if ($this->_protocol == "" || $this->_protocol == "file://") {
+
+      $realfile = dompdf_realpath($file);
+      if ( !$file )
+        throw new DOMPDF_Exception("File '$file' not found.");
+
+      if ( strpos($realfile, DOMPDF_CHROOT) !== 0 )
+        throw new DOMPDF_Exception("Permission denied on $file.");
+
+      // Exclude dot files (e.g. .htaccess)
+      if ( substr(basename($realfile),0,1) == "." )
+        throw new DOMPDF_Exception("Permission denied on $file.");
+
+      $file = $realfile;
+    }
+
+    $this->load_html(file_get_contents($file));
+  }
+
+  /**
+   * Loads an HTML string
+   *
+   * Parse errors are stored in the global array _dompdf_warnings.
+   *
+   * @param string $str HTML text to load
+   */
+  function load_html($str) {
+    // FIXME: Determine character encoding, switch to UTF8, update meta tag. Need better http/file stream encoding detection, currently relies on text or meta tag.
+    mb_detect_order('auto');
+    if (mb_detect_encoding($str) != 'UTF-8') {
+      if (mb_detect_encoding($str) == '') {
+        if (preg_match('@<meta\s+http-equiv="Content-Type"\s+content="([\w/]+)(;\s+charset=([^\s"]+))?@i',$str,$matches)) {
+          $encoding = strtoupper($matches[3]);
+        } else {
+          $encoding = 'UTF-8';
+        }
+      } else {
+        if (preg_match('@<meta\s+http-equiv="Content-Type"\s+content="([\w/]+)(;\s+charset=([^\s"]+))?@i',$str,$matches)) {
+          $encoding = strtoupper($matches[3]);
+        } else {
+          $encoding = 'auto';
+        }
+      }
+      if ($encoding != 'UTF-8') { $str = mb_convert_encoding($str, 'UTF-8', $encoding); }
+      if (preg_match('@<meta\s+http-equiv="Content-Type"\s+content="([\w/]+)(;\s+charset=([^\s"]+))?@i',$str,$matches)) {
+        $str = preg_replace('/charset=([^\s"]+)/i','charset=UTF-8',$str);
+      } else {
+        $str = str_replace('<head>', '<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">', $str);
+      }
+    }
+
+    // Parse embedded php, first-pass
+    if ( DOMPDF_ENABLE_PHP ) {
+      ob_start();
+      eval("?" . ">$str");
+      $str = ob_get_contents();
+      ob_end_clean();
+    }
+
+    // Store parsing warnings as messages
+    set_error_handler("record_warnings");
+    $this->_xml->loadHTML($str);
+    restore_error_handler();
+  }
+
+  /**
+   * Builds the {@link Frame_Tree}, loads any CSS and applies the styles to
+   * the {@link Frame_Tree}
+   */
+  protected function _process_html() {
+    $this->_tree->build_tree();
+
+    $this->_css->load_css_file(Stylesheet::DEFAULT_STYLESHEET);
+
+    $acceptedmedia = Stylesheet::$ACCEPTED_GENERIC_MEDIA_TYPES;
+    if ( defined("DOMPDF_DEFAULT_MEDIA_TYPE") ) {
+      $acceptedmedia[] = DOMPDF_DEFAULT_MEDIA_TYPE;
+    } else {
+      $acceptedmedia[] = Stylesheet::$ACCEPTED_DEFAULT_MEDIA_TYPE;
+    }
+          
+    // load <link rel="STYLESHEET" ... /> tags
+    $links = $this->_xml->getElementsByTagName("link");
+    foreach ($links as $link) {
+      if ( mb_strtolower($link->getAttribute("rel")) == "stylesheet" ||
+           mb_strtolower($link->getAttribute("type")) == "text/css" ) {
+        //Check if the css file is for an accepted media type
+        //media not given then always valid
+        $formedialist = preg_split("/[\s\n,]/", $link->getAttribute("media"),-1, PREG_SPLIT_NO_EMPTY);
+        if ( count($formedialist) > 0 ) {
+          $accept = false;
+          foreach ( $formedialist as $type ) {
+            if ( in_array(mb_strtolower(trim($type)), $acceptedmedia) ) {
+              $accept = true;
+              break;
+            }
+          }
+          if (!$accept) {
+            //found at least one mediatype, but none of the accepted ones
+            //Skip this css file.
+            continue;
+          }
+        }
+           
+        $url = $link->getAttribute("href");
+        $url = build_url($this->_protocol, $this->_base_host, $this->_base_path, $url);
+
+        $this->_css->load_css_file($url);
+      }
+
+    }
+
+    // load <style> tags
+    $styles = $this->_xml->getElementsByTagName("style");
+    foreach ($styles as $style) {
+
+      // Accept all <style> tags by default (note this is contrary to W3C
+      // HTML 4.0 spec:
+      // http://www.w3.org/TR/REC-html40/present/styles.html#adef-media
+      // which states that the default media type is 'screen'
+      if ( $style->hasAttributes() &&
+           ($media = $style->getAttribute("media")) &&
+           !in_array($media, $acceptedmedia) )
+        continue;
+
+      $css = "";
+      if ( $style->hasChildNodes() ) {
+
+        $child = $style->firstChild;
+        while ( $child ) {
+          $css .= $child->nodeValue; // Handle <style><!-- blah --></style>
+          $child = $child->nextSibling;
+        }
+
+      } else
+        $css = $style->nodeValue;
+      
+      // Set the base path of the Stylesheet to that of the file being processed
+      $this->_css->set_protocol($this->_protocol);
+      $this->_css->set_host($this->_base_host);
+      $this->_css->set_base_path($this->_base_path);
+
+      $this->_css->load_css($css);
+    }
+
+  }
+
+  //........................................................................
+
+  /**
+   * Sets the paper size & orientation
+   *
+   * @param string $size 'letter', 'legal', 'A4', etc. {@link CPDF_Adapter::$PAPER_SIZES}
+   * @param string $orientation 'portrait' or 'landscape'
+   */
+  function set_paper($size, $orientation = "portrait") {
+    $this->_paper_size = $size;
+    $this->_paper_orientation = $orientation;
+  }
+
+  //........................................................................
+
+  /**
+   * Enable experimental caching capability
+   * @access private
+   */
+  function enable_caching($cache_id) {
+    $this->_cache_id = $cache_id;
+  }
+
+  //........................................................................
+
+  /**
+   * Sets callbacks for events like rendering of pages and elements.
+   * The callbacks array contains arrays with 'event' set to 'begin_page',
+   * 'end_page', 'begin_frame', or 'end_frame' and 'f' set to a function or
+   * object plus method to be called.
+   *
+   * The function 'f' must take an array as argument, which contains info
+   * about the event.
+   *
+   * @param array $callbacks the set of callbacks to set
+   */
+  function set_callbacks($callbacks) {
+    if (is_array($callbacks)) {
+      $this->_callbacks = array();
+      foreach ($callbacks as $c) {
+        if (is_array($c) && isset($c['event']) && isset($c['f'])) {
+          $event = $c['event'];
+          $f = $c['f'];
+          if (is_callable($f) && is_string($event)) {
+            $this->_callbacks[$event][] = $f;
+          }
+        }
+      }
+    }
+  }
+  
+  //........................................................................
+
+  /**
+   * Renders the HTML to PDF
+   */
+  function render() {
+
+    //enable_mem_profile();
+
+    $this->_process_html();
+
+    $this->_css->apply_styles($this->_tree);
+
+    $root = null;
+
+    foreach ($this->_tree->get_frames() as $frame) {
+      // Set up the root frame
+
+      if ( is_null($root) ) {
+        $root = Frame_Factory::decorate_root( $this->_tree->get_root(), $this );
+        continue;
+      }
+
+      // Create the appropriate decorators, reflowers & positioners.
+      $deco = Frame_Factory::decorate_frame($frame, $this);
+      $deco->set_root($root);
+
+      // FIXME: handle generated content
+      if ( $frame->get_style()->display == "list-item" ) {
+
+        // Insert a list-bullet frame
+        $node = $this->_xml->createElement("bullet"); // arbitrary choice
+        $b_f = new Frame($node);
+
+        $style = $this->_css->create_style();
+        $style->display = "-dompdf-list-bullet";
+        $style->inherit($frame->get_style());
+        $b_f->set_style($style);
+
+        $deco->prepend_child( Frame_Factory::decorate_frame($b_f, $this) );
+      }
+
+    }
+
+    $this->_pdf = Canvas_Factory::get_instance($this->_paper_size, $this->_paper_orientation);
+
+    $root->set_containing_block(0, 0, $this->_pdf->get_width(), $this->_pdf->get_height());
+    $root->set_renderer(new Renderer($this));
+
+    // This is where the magic happens:
+    $root->reflow();
+
+    // Clean up cached images
+    Image_Cache::clear();
+    
+    if ( $GLOBALS['_dompdf_show_warnings'] ) {
+      global $_dompdf_warnings;
+        echo '<b>DOMPDF Warnings</b><br><pre>';
+      foreach ($_dompdf_warnings as $msg)
+        echo $msg . "\n";
+      echo $this->get_canvas()->get_cpdf()->messages;
+        echo '</pre>';
+      flush();
+    }
+  }
+
+  //........................................................................
+
+  /**
+   * Add meta information to the PDF after rendering
+   */
+  function add_info($label, $value) {
+    if (!is_null($this->_pdf))
+      $this->_pdf->add_info($label, $value);
+  }
+  
+  //........................................................................
+
+  /**
+   * Streams the PDF to the client
+   *
+   * The file will open a download dialog by default.  The options
+   * parameter controls the output.  Accepted options are:
+   *
+   * 'Accept-Ranges' => 1 or 0 - if this is not set to 1, then this
+   *    header is not included, off by default this header seems to
+   *    have caused some problems despite the fact that it is supposed
+   *    to solve them, so I am leaving it off by default.
+   *
+   * 'compress' = > 1 or 0 - apply content stream compression, this is
+   *    on (1) by default
+   *
+   * 'Attachment' => 1 or 0 - if 1, force the browser to open a
+   *    download dialog, on (1) by default
+   *
+   * @param string $filename the name of the streamed file
+   * @param array  $options header options (see above)
+   */
+  function stream($filename, $options = null) {
+    if (!is_null($this->_pdf))
+      $this->_pdf->stream($filename, $options);
+  }
+
+  /**
+   * Returns the PDF as a string
+   *
+   * The file will open a download dialog by default.  The options
+   * parameter controls the output.  Accepted options are:
+   *
+   *
+   * 'compress' = > 1 or 0 - apply content stream compression, this is
+   *    on (1) by default
+   *
+   *
+   * @param array  $options options (see above)
+   * @return string
+   */
+  function output($options = null) {
+
+    if ( is_null($this->_pdf) )
+      return null;
+
+    return $this->_pdf->output( $options );
+  }
+
+
+  /**
+   * Returns the underlying HTML document as a string
+   *
+   * @return string
+   */
+  function output_html() {
+    return $this->_xml->saveHTML();
+  }
+  //........................................................................
+
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/null_positioner.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/null_positioner.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/null_positioner.cls.php	(revision 2000)
@@ -0,0 +1,57 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: null_positioner.cls.php,v $
+ * Created on: 2004-07-12
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: null_positioner.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Dummy positioner
+ *
+ * @access private
+ * @package dompdf
+ */
+class Null_Positioner extends Positioner {
+
+  function __construct(Frame_Decorator $frame) {
+    parent::__construct($frame);
+  }
+
+  function position() { return; }
+  
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/null_frame_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/null_frame_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/null_frame_decorator.cls.php	(revision 2000)
@@ -0,0 +1,60 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: null_frame_decorator.cls.php,v $
+ * Created on: 2004-07-12
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: null_frame_decorator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Dummy decorator
+ *
+ * @access private
+ * @package dompdf
+ */
+class Null_Frame_Decorator extends Frame_Decorator {
+
+  function __construct(Frame $frame, DOMPDF $dompdf) {
+    parent::__construct($frame, $dompdf);
+    $style = $this->_frame->get_style();
+    $style->width = 0;
+    $style->height = 0;
+    $style->margin = 0;
+    $style->padding = 0;
+  }
+
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/dompdf_exception.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/dompdf_exception.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/dompdf_exception.cls.php	(revision 2000)
@@ -0,0 +1,61 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: dompdf_exception.cls.php,v $
+ * Created on: 2004-08-07
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: dompdf_exception.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Standard exception thrown by DOMPDF classes
+ *
+ * @link http://www.zend.com/php5/articles/engine2-php5-changes.php#Heading12
+ * @package dompdf
+ */
+class DOMPDF_Exception extends Exception {
+
+  /**
+   * Class constructor
+   *
+   * @param string $message Error message
+   * @param int $code Error code
+   */
+  function __construct($message = NULL, $code = 0) {
+    parent::__construct($message, $code);
+  }
+
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/page_frame_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/page_frame_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/page_frame_decorator.cls.php	(revision 2000)
@@ -0,0 +1,561 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: page_frame_decorator.cls.php,v $
+ * Created on: 2004-06-15
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: page_frame_decorator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Decorates frames for page layout
+ *
+ * @access private
+ * @package dompdf
+ */
+class Page_Frame_Decorator extends Frame_Decorator {
+
+  /**
+   * y value of bottom page margin
+   *
+   * @var float
+   */
+  protected $_bottom_page_margin;
+
+  /**
+   * Flag indicating page is full.
+   *
+   * @var bool
+   */
+  protected $_page_full;
+
+  /**
+   * Number of tables currently being reflowed
+   *
+   * @var int
+   */
+  protected $_in_table;
+
+  /**
+   * The pdf renderer
+   *
+   * @var Renderer
+   */
+  protected $_renderer;
+
+  //........................................................................
+
+  /**
+   * Class constructor
+   *
+   * @param Frame $frame the frame to decorate
+   */
+  function __construct(Frame $frame, DOMPDF $dompdf) {
+    parent::__construct($frame, $dompdf);
+    $this->_page_full = false;
+    $this->_in_table = 0;
+    $this->_bottom_page_margin = null;
+  }
+
+
+  /**
+   * Set the renderer used for this pdf
+   *
+   * @param Renderer $renderer the renderer to use
+   */
+  function set_renderer($renderer) {
+    $this->_renderer = $renderer;
+  }
+
+  /**
+   * Return the renderer used for this pdf
+   *
+   * @return Renderer
+   */
+  function get_renderer() {
+    return $this->_renderer;
+  }
+
+  /**
+   * Set the frame's containing block.  Overridden to set $this->_bottom_page_margin.
+   *
+   * @param float $x
+   * @param float $y
+   * @param float $w
+   * @param float $h
+   */
+  function set_containing_block($x = null, $y = null, $w = null, $h = null) {
+    parent::set_containing_block($x,$y,$w,$h);
+    $w = $this->get_containing_block("w");
+    if ( isset($h) )
+      $this->_bottom_page_margin = $h; // - $this->_frame->get_style()->length_in_pt($this->_frame->get_style()->margin_bottom, $w);
+  }
+
+  /**
+   * Returns true if the page is full and is no longer accepting frames.
+   *
+   * @return bool
+   */
+  function is_full() {
+    return $this->_page_full;
+  }
+
+  /**
+   * Start a new page by resetting the full flag.
+   */
+  function next_page() {
+    $this->_renderer->new_page();
+    $this->_page_full = false;
+  }
+
+  /**
+   * Indicate to the page that a table is currently being reflowed.
+   */
+  function table_reflow_start() {
+    $this->_in_table++;
+  }
+
+  /**
+   * Indicate to the page that table reflow is finished.
+   */
+  function table_reflow_end() {
+    $this->_in_table--;
+  }
+
+  /**
+   * Return whether we are currently in a nested table or not
+   *
+   * @return bool
+   */
+  function in_nested_table() {
+    return $this->_in_table > 1;
+  }
+  
+  /**
+   * Check if a forced page break is required before $frame.  This uses the
+   * frame's page_break_before property as well as the preceeding frame's
+   * page_break_after property.
+   *
+   * @link http://www.w3.org/TR/CSS21/page.html#forced
+   *
+   * @param Frame $frame the frame to check
+   * @return bool true if a page break occured
+   */
+  function check_forced_page_break(Frame $frame) {
+
+    // Skip check if page is already split
+    if ( $this->_page_full )
+      return;
+
+    $block_types = array("block", "list-item", "table");
+    $page_breaks = array("always", "left", "right");
+
+    $style = $frame->get_style();
+
+    if ( !in_array($style->display, $block_types) )
+      return false;
+
+    // Find the previous block-level sibling
+    $prev = $frame->get_prev_sibling();
+    while ( $prev && !in_array($prev->get_style()->display, $block_types) )
+      $prev = $prev->get_prev_sibling();
+
+    if ( in_array($style->page_break_before, $page_breaks) ) {
+
+      // Prevent cascading splits
+      $frame->split();
+      // We have to grab the style again here because split() resets
+      // $frame->style to the frame's orignal style.
+      $frame->get_style()->page_break_before = "auto";
+      $this->_page_full = true;
+      return true;
+    }
+
+    if ( ($prev && in_array($prev->get_style()->page_break_after, $page_breaks)) ) {
+      // Prevent cascading splits
+      $frame->split();
+      $prev->get_style()->page_break_after = "auto";
+      $this->_page_full = true;
+      return true;
+    }
+
+    return false;
+  }
+
+  /**
+   * Determine if a page break is allowed before $frame
+   *
+   * @param Frame $frame the frame to check
+   * @return bool true if a break is allowed, false otherwise
+   */
+  protected function _page_break_allowed(Frame $frame) {
+    /**
+     *
+     * http://www.w3.org/TR/CSS21/page.html#allowed-page-breaks
+     * /*
+     * In the normal flow, page breaks can occur at the following places:
+     *
+     *    1. In the vertical margin between block boxes. When a page
+     *    break occurs here, the used values of the relevant
+     *    'margin-top' and 'margin-bottom' properties are set to '0'.
+     *    2. Between line boxes inside a block box.
+     *
+     * These breaks are subject to the following rules:
+     *
+     *   * Rule A: Breaking at (1) is allowed only if the
+     *     'page-break-after' and 'page-break-before' properties of
+     *     all the elements generating boxes that meet at this margin
+     *     allow it, which is when at least one of them has the value
+     *     'always', 'left', or 'right', or when all of them are
+     *     'auto'.
+     *
+     *   * Rule B: However, if all of them are 'auto' and the
+     *     nearest common ancestor of all the elements has a
+     *     'page-break-inside' value of 'avoid', then breaking here is
+     *     not allowed.
+     *
+     *   * Rule C: Breaking at (2) is allowed only if the number of
+     *     line boxes between the break and the start of the enclosing
+     *     block box is the value of 'orphans' or more, and the number
+     *     of line boxes between the break and the end of the box is
+     *     the value of 'widows' or more.
+     *
+     *   * Rule D: In addition, breaking at (2) is allowed only if
+     *     the 'page-break-inside' property is 'auto'.
+     *
+     * If the above doesn't provide enough break points to keep
+     * content from overflowing the page boxes, then rules B and D are
+     * dropped in order to find additional breakpoints.
+     *
+     * If that still does not lead to sufficient break points, rules A
+     * and C are dropped as well, to find still more break points.
+     *
+     * [endquote]
+     *
+     * We will also allow breaks between table rows.  However, when
+     * splitting a table, the table headers should carry over to the
+     * next page (but they don't yet).
+     */
+
+    $block_types = array("block", "list-item", "table");
+    dompdf_debug("page-break", "_page_break_allowed(" . $frame->get_node()->nodeName. ")");
+    $display = $frame->get_style()->display;
+
+    // Block Frames (1):
+    if ( in_array($display, $block_types) ) {
+
+      // Avoid breaks within table-cells
+      if ( $this->_in_table ) {
+        dompdf_debug("page-break", "In table: " . $this->_in_table);
+        return false;
+      }
+
+      // Rules A & B
+
+      if ( $frame->get_style()->page_break_before == "avoid" ) {
+        dompdf_debug("page-break", "before: avoid");
+        return false;
+      }
+
+      // Find the preceeding block-level sibling
+      $prev = $frame->get_prev_sibling();
+      while ( $prev && !in_array($prev->get_style()->display, $block_types) )
+        $prev = $prev->get_prev_sibling();
+
+      // Does the previous element allow a page break after?
+      if ( $prev && $prev->get_style()->page_break_after == "avoid" ) {
+        dompdf_debug("page-break", "after: avoid");
+        return false;
+      }
+
+      // If both $prev & $frame have the same parent, check the parent's
+      // page_break_inside property.
+      $parent = $frame->get_parent();
+      if ( $prev && $parent && $parent->get_style()->page_break_inside == "avoid" ) {
+          dompdf_debug("page-break", "parent inside: avoid");
+        return false;
+      }
+
+      // To prevent cascading page breaks when a top-level element has
+      // page-break-inside: avoid, ensure that at least one frame is
+      // on the page before splitting.
+      if ( $parent->get_node()->nodeName == "body" && !$prev ) {
+        // We are the body's first child
+          dompdf_debug("page-break", "Body's first child.");
+        return false;
+      }
+
+      // If the frame is the first block-level frame, use the value from
+      // $frame's parent instead.
+      if ( !$prev && $parent )
+        return $this->_page_break_allowed( $parent );
+
+      dompdf_debug("page-break", "block: break allowed");
+      return true;
+
+    }
+
+    // Inline frames (2):
+    else if ( in_array($display, Style::$INLINE_TYPES) ) {
+
+      // Avoid breaks within table-cells
+      if ( $this->_in_table ) {
+          dompdf_debug("page-break", "In table: " . $this->_in_table);
+        return false;
+      }
+
+      // Rule C
+      $block_parent = $frame->find_block_parent();
+      if ( count($block_parent->get_lines() ) < $frame->get_style()->orphans ) {
+          dompdf_debug("page-break", "orphans");
+        return false;
+      }
+
+      // FIXME: Checking widows is tricky without having laid out the
+      // remaining line boxes.  Just ignore it for now...
+
+      // Rule D
+      $p = $block_parent;
+      while ($p) {
+        if ( $p->get_style()->page_break_inside == "avoid" ) {
+          dompdf_debug("page-break", "parent->inside: avoid");
+          return false;
+        }
+        $p = $p->find_block_parent();
+      }
+
+      // To prevent cascading page breaks when a top-level element has
+      // page-break-inside: avoid, ensure that at least one frame with
+      // some content is on the page before splitting.
+      $prev = $frame->get_prev_sibling();
+      while ( $prev && ($prev->get_node()->nodeName == "#text" && trim($prev->get_node()->nodeValue) == "") )
+        $prev = $prev->get_prev_sibling();
+
+      if ( $block_parent->get_node()->nodeName == "body" && !$prev ) {
+        // We are the body's first child
+          dompdf_debug("page-break", "Body's first child.");
+        return false;
+      }
+
+      // Skip breaks on empty text nodes
+      if ( $frame->get_node()->nodeName == "#text" &&
+           $frame->get_node()->nodeValue == "" )
+        return false;
+
+      dompdf_debug("page-break", "inline: break allowed");
+      return true;
+
+    // Table-rows
+    } else if ( $display == "table-row" ) {
+
+      // Simply check if the parent table's page_break_inside property is
+      // not 'avoid'
+      $p = Table_Frame_Decorator::find_parent_table($frame);
+
+      while ($p) {
+        if ( $p->get_style()->page_break_inside == "avoid" ) {
+          dompdf_debug("page-break", "parent->inside: avoid");
+          return false;
+        }
+        $p = $p->find_block_parent();
+      }
+
+      // Avoid breaking after the first row of a table
+      if ( $p && $p->get_first_child() === $frame) {
+         dompdf_debug("page-break", "table: first-row");
+        return false;
+      }
+
+      // If this is a nested table, prevent the page from breaking
+      if ( $this->_in_table > 1 ) {
+        dompdf_debug("page-break", "table: nested table");
+        return false;
+      }
+
+      dompdf_debug("page-break","table-row/row-groups: break allowed");
+      return true;
+
+    } else if ( in_array($display, Table_Frame_Decorator::$ROW_GROUPS) ) {
+
+      // Disallow breaks at row-groups: only split at row boundaries
+      return false;
+
+    } else {
+
+      dompdf_debug("page-break", "? " . $frame->get_style()->display . "");
+      return false;
+    }
+
+  }
+
+  /**
+   * Check if $frame will fit on the page.  If the frame does not fit,
+   * the frame tree is modified so that a page break occurs in the
+   * correct location.
+   *
+   * @param Frame $frame the frame to check
+   * @return Frame the frame following the page break
+   */
+  function check_page_break(Frame $frame) {
+    // Do not split if we have already
+    if ( $this->_page_full )
+      return false;
+
+    // Determine the frame's maximum y value
+    $max_y = $frame->get_position("y") + $frame->get_margin_height();
+
+    // If a split is to occur here, then the bottom margins & paddings of all
+    // parents of $frame must fit on the page as well:
+    $p = $frame->get_parent();
+    while ( $p ) {
+      $style = $p->get_style();
+      $max_y += $style->length_in_pt(array($style->margin_bottom,
+                                           $style->padding_bottom,
+                                           $style->border_bottom_width));
+      $p = $p->get_parent();
+    }
+
+
+    // Check if $frame flows off the page
+    if ( $max_y <= $this->_bottom_page_margin )
+      // no: do nothing
+      return false;
+
+    dompdf_debug("page-break", "check_page_break");
+    dompdf_debug("page-break", "in_table: " . $this->_in_table);
+
+
+    // yes: determine page break location
+    $iter = $frame;
+    $flg = false;
+
+    $in_table = $this->_in_table;
+
+    dompdf_debug("page-break","Starting search");
+    while ( $iter ) {
+//       echo "\nbacktrack: " .$iter->get_node()->nodeName ." ".spl_object_hash($iter->get_node()). "";
+      if ( $iter === $this ) {
+         dompdf_debug("page-break", "reached root.");
+        // We've reached the root in our search.  Just split at $frame.
+        break;
+      }
+
+      if ( $this->_page_break_allowed($iter) ) {
+        dompdf_debug("page-break","break allowed, splitting.");
+        $iter->split();
+        $this->_page_full = true;
+        $this->_in_table = $in_table;
+        return true;
+      }
+
+      if ( !$flg && $next = $iter->get_last_child() ) {
+         dompdf_debug("page-break", "following last child.");
+
+        if ( in_array($next->get_style()->display, Style::$TABLE_TYPES) )
+          $this->_in_table++;
+
+        $iter = $next;
+        continue;
+      }
+
+      if ( $next = $iter->get_prev_sibling() ) {
+         dompdf_debug("page-break", "following prev sibling.");
+
+        if ( in_array($next->get_style()->display, Style::$TABLE_TYPES) &&
+             !in_array($iter->get_style()->display, Style::$TABLE_TYPES) )
+          $this->_in_table++;
+
+        else if ( !in_array($next->get_style()->display, Style::$TABLE_TYPES) &&
+                  in_array($iter->get_style()->display, Style::$TABLE_TYPES) )
+          $this->_in_table--;
+
+        $iter = $next;
+        $flg = false;
+        continue;
+      }
+
+      if ( $next = $iter->get_parent() ) {
+         dompdf_debug("page-break", "following parent.");
+
+        if ( in_array($iter->get_style()->display, Style::$TABLE_TYPES) )
+          $this->_in_table--;
+
+        $iter = $next;
+        $flg = true;
+        continue;
+      }
+
+      break;
+
+    }
+
+    $this->_in_table = $in_table;
+
+    // No valid page break found.  Just break at $frame.
+    dompdf_debug("page-break", "no valid break found, just splitting.");
+
+    // If we are in a table, backtrack to the nearest top-level table row
+    if ( $this->_in_table ) {
+      $num_tables = $this->_in_table - 1;
+
+      $iter = $frame;
+      while ( $iter && $num_tables && $iter->get_style->display != "table" ) {
+        $iter = $iter->get_parent();
+        $num_tables--;
+      }
+
+      $iter = $frame;
+      while ($iter && $iter->get_style()->display != "table-row" )
+        $iter = $iter->get_parent();
+
+      $iter->split();
+      $this->_page_full = true;
+      return true;
+    }
+
+    $frame->split();
+    $this->_page_full = true;
+    return true;
+
+  }
+
+  //........................................................................
+
+  function split($frame = null) {
+    // Do nothing
+  }
+
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/abstract_renderer.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/abstract_renderer.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/abstract_renderer.cls.php	(revision 2000)
@@ -0,0 +1,850 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: abstract_renderer.cls.php,v $
+ * Created on: 2004-06-01
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 0.5.1.htischer.20090507
+ * - On background image
+ *   - Clip invisible areas from background images, then merge identical
+ *     image/size/offset to a single image.
+ *   - Fix rounding of background image size.
+ *   - Fix background image position given as percent
+ *   - Check if identical image is already cached by cpdf. Then do not create
+ *     duplicates to save memory and CPU time
+ *   - Fix skipping of image repetition if area is too small
+ *   - Do not create temporary files, but pass gd object directly
+ */
+
+/* $Id: abstract_renderer.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Base renderer class
+ *
+ * @access private
+ * @package dompdf
+ */
+abstract class Abstract_Renderer {
+
+  /**
+   * Rendering backend
+   *
+   * @var Canvas
+   */
+  protected $_canvas;
+
+  /**
+   * Current dompdf instance
+   *
+   * @var DOMPDF
+   */
+  protected $_dompdf;
+  
+  /**
+   * Class constructor
+   *
+   * @param DOMPDF $dompdf The current dompdf instance
+   */
+  function __construct(DOMPDF $dompdf) {
+    $this->_dompdf = $dompdf;
+    $this->_canvas = $dompdf->get_canvas();
+  }
+  
+  /**
+   * Render a frame.
+   *
+   * Specialized in child classes
+   *
+   * @param Frame $frame The frame to render
+   */
+  abstract function render(Frame $frame);
+
+  //........................................................................
+
+  /**
+   * Render a background image over a rectangular area
+   *
+   * @param string $img      The background image to load
+   * @param float  $x        The left edge of the rectangular area
+   * @param float  $y        The top edge of the rectangular area
+   * @param float  $width    The width of the rectangular area
+   * @param float  $height   The height of the rectangular area
+   * @param Style  $style    The associated Style object
+   */
+  protected function _background_image($url, $x, $y, $width, $height, $style) {
+    $sheet = $style->get_stylesheet();
+
+    // Skip degenerate cases
+    if ( $width == 0 || $height == 0 )
+      return;
+
+    //debugpng
+    if (DEBUGPNG) print '[_background_image '.$url.']';
+
+    list($img, $ext) = Image_Cache::resolve_url($url,
+                                                $sheet->get_protocol(),
+                                                $sheet->get_host(),
+                                                $sheet->get_base_path());
+
+    // Bail if the image is no good
+    if ( $img == DOMPDF_LIB_DIR . "/res/broken_image.png" )
+      return;
+
+	//Try to optimize away reading and composing of same background multiple times
+	//Postponing read with imagecreatefrom   ...()
+	//final composition paramters and name not known yet
+	//Therefore read dimension directly from file, instead of creating gd object first.
+    //$img_w = imagesx($src); $img_h = imagesy($src);
+
+    list($img_w, $img_h) = getimagesize($img);
+    if (!isset($img_w) || $img_w == 0 || !isset($img_h) || $img_h == 0) {
+      return;
+    }
+
+    $repeat = $style->background_repeat;
+    $bg_color = $style->background_color;
+
+	//Increase background resolution and dependent box size according to image resolution to be placed in
+	//Then image can be copied in without resize
+    $bg_width = round((float)($width * DOMPDF_DPI) / 72);
+    $bg_height = round((float)($height * DOMPDF_DPI) / 72);
+
+    //Need %bg_x, $bg_y as background pos, where img starts, converted to pixel
+
+    list($bg_x, $bg_y) = $style->background_position;
+
+    if ( is_percent($bg_x) ) {
+      // The point $bg_x % from the left edge of the image is placed
+      // $bg_x % from the left edge of the background rectangle
+      $p = ((float)$bg_x)/100.0;
+      $x1 = $p * $img_w;
+      $x2 = $p * $bg_width;
+
+      $bg_x = round($x2 - $x1);
+    } else {
+      $bg_x = round((float)($style->length_in_pt($bg_x)*DOMPDF_DPI) / 72);
+    }
+
+    if ( is_percent($bg_y) ) {
+      // The point $bg_y % from the left edge of the image is placed
+      // $bg_y % from the left edge of the background rectangle
+      $p = ((float)$bg_y)/100.0;
+      $y1 = $p * $img_h;
+      $y2 = $p * $bg_height;
+
+      $bg_y = round($y2 - $y1);
+    } else {
+      $bg_y = round((float)($style->length_in_pt($bg_y)*DOMPDF_DPI) / 72);
+    }
+
+    //clip background to the image area on partial repeat. Nothing to do if img off area
+    //On repeat, normalize start position to the tile at immediate left/top or 0/0 of area
+    //On no repeat with positive offset: move size/start to have offset==0
+    //Handle x/y Dimensions separately
+
+    if ( $repeat != "repeat" && $repeat != "repeat-x" ) {
+      //No repeat x
+      if ($bg_x < 0) {
+        $bg_width = $img_w + $bg_x;
+      } else {
+        $x += ($bg_x * 72)/DOMPDF_DPI;
+        $bg_width = $bg_width - $bg_x;
+        if ($bg_width > $img_w) {
+          $bg_width = $img_w;
+        }
+        $bg_x = 0;
+      }
+      if ($bg_width <= 0) {
+      	return;
+      }
+      $width = (float)($bg_width * 72)/DOMPDF_DPI;
+    } else {
+      //repeat x
+      if ($bg_x < 0) {
+        $bg_x = - ((-$bg_x) % $img_w);
+      } else {
+        $bg_x = $bg_x % $img_w;
+        if ($bg_x > 0) {
+          $bg_x -= $img_w;
+        }
+      }
+    }
+
+    if ( $repeat != "repeat" && $repeat != "repeat-y" ) {
+      //no repeat y
+      if ($bg_y < 0) {
+        $bg_height = $img_h + $bg_y;
+      } else {
+        $y += ($bg_y * 72)/DOMPDF_DPI;
+        $bg_height = $bg_height - $bg_y;
+        if ($bg_height > $img_h) {
+          $bg_height = $img_h;
+        }
+        $bg_y = 0;
+      }
+      if ($bg_height <= 0) {
+      	return;
+      }
+      $height = (float)($bg_height * 72)/DOMPDF_DPI;
+    } else {
+      //repeat y
+      if ($bg_y < 0) {
+        $bg_y = - ((-$bg_y) % $img_h);
+      } else {
+        $bg_y = $bg_y % $img_h;
+        if ($bg_y > 0) {
+          $bg_y -= $img_h;
+        }
+      }
+    }
+
+    //Optimization, if repeat has no effect
+    if ( $repeat == "repeat" && $bg_y <= 0 && $img_h+$bg_y >= $bg_height ) {
+      $repeat = "repeat-x";
+    }
+    if ( $repeat == "repeat" && $bg_x <= 0 && $img_w+$bg_x >= $bg_width ) {
+      $repeat = "repeat-y";
+    }
+    if ( ($repeat == "repeat-x" && $bg_x <= 0 && $img_w+$bg_x >= $bg_width) ||
+         ($repeat == "repeat-y" && $bg_y <= 0 && $img_h+$bg_y >= $bg_height) ) {
+      $repeat = "no-repeat";
+    }
+
+	//Use filename as indicator only
+	//different names for different variants to have different copies in the pdf
+	//This is not dependent of background color of box! .'_'.(is_array($bg_color) ? $bg_color["hex"] : $bg_color)
+	//Note: Here, bg_* are the start values, not end values after going through the tile loops!
+
+	$filedummy = $img;
+
+    /* 
+    //Make shorter strings with limited characters for cache associative array index - needed?	
+	//Strip common base path - server root, explicite temp, default temp; remove unwanted characters;
+	$filedummy = strtr($filedummy,"\\:","//");
+	$p = strtr($_SERVER["DOCUMENT_ROOT"],"\\:","//");
+	$l = strlen($p);
+	if ( substr($filedummy,0,$l) == $p) {
+	  $filedummy = substr($filedummy,$l);
+	} else {
+      $p = strtr(DOMPDF_TEMP_DIR,"\\:","//");
+	  $l = strlen($p);
+	  if ( substr($filedummy,0,$l) == $p) {
+	    $filedummy = substr($filedummy,$l);
+	  } else {
+        $p = strtr(sys_get_temp_dir(),"\\:","//");
+	    $l = strlen($p);
+	    if ( substr($filedummy,0,$l) == $p) {
+	      $filedummy = substr($filedummy,$l);
+	    }
+	  }
+	}
+	*/
+	
+	$filedummy .= '_'.$bg_width.'_'.$bg_height.'_'.$bg_x.'_'.$bg_y.'_'.$repeat;
+    //debugpng
+    //if (DEBUGPNG) print '<pre>[_background_image name '.$filedummy.']</pre>';
+
+    //Optimization to avoid multiple times rendering the same image.
+    //If check functions are existing and identical image already cached,
+    //then skip creation of duplicate, because it is not needed by addImagePng
+	if ( method_exists( $this->_canvas, "get_cpdf" ) &&
+	     method_exists( $this->_canvas->get_cpdf(), "addImagePng" ) &&
+	     method_exists( $this->_canvas->get_cpdf(), "image_iscached" ) &&
+	     $this->_canvas->get_cpdf()->image_iscached($filedummy) ) {
+	  $bg = null;
+
+      //debugpng
+      //if (DEBUGPNG) print '[_background_image skip]';
+
+	} else {
+
+    // Create a new image to fit over the background rectangle
+    $bg = imagecreatetruecolor($bg_width, $bg_height);
+    //anyway default
+	//imagealphablending($img, true);
+
+    switch (strtolower($ext)) {
+
+    case "png":
+      $src = imagecreatefrompng($img);
+      break;
+
+    case "jpg":
+    case "jpeg":
+      $src = imagecreatefromjpeg($img);
+      break;
+
+    case "gif":
+      $src = imagecreatefromgif($img);
+      break;
+
+    default:
+      return; // Unsupported image type
+    }
+
+    if ($src == null) {
+      return;
+    }
+
+    //Background color if box is not relevant here
+    //Non transparent image: box clipped to real size. Background non relevant.
+    //Transparent image: The image controls the transparency and lets shine through whatever background.
+    //However on transparent imaage preset the composed image with the transparency color,
+    //to keep the transparency when copying over the non transparent parts of the tiles.
+	$ti = imagecolortransparent($src);
+	if ($ti >= 0) {
+	  $tc = imagecolorsforindex($src,$ti);
+      $ti = imagecolorallocate($bg,$tc['red'],$tc['green'],$tc['blue']);
+      imagefill($bg,0,0,$ti);
+      imagecolortransparent($bg, $ti);
+    }
+
+    //This has only an effect for the non repeatable dimension.
+    //compute start of src and dest coordinates of the single copy
+    if ( $bg_x < 0 ) {
+      $dst_x = 0;
+      $src_x = -$bg_x;
+    } else {
+      $src_x = 0;
+      $dst_x = $bg_x;
+    }
+
+    if ( $bg_y < 0 ) {
+      $dst_y = 0;
+      $src_y = -$bg_y;
+    } else {
+      $src_y = 0;
+      $dst_y = $bg_y;
+    }
+
+	//For historical reasons exchange meanings of variables:
+	//start_* will be the start values, while bg_* will be the temporary start values in the loops
+    $start_x = $bg_x;
+    $start_y = $bg_y;
+
+    // Copy regions from the source image to the background
+
+    if ( $repeat == "no-repeat" ) {
+
+      // Simply place the image on the background
+      imagecopy($bg, $src, $dst_x, $dst_y, $src_x, $src_y, $img_w, $img_h);
+
+    } else if ( $repeat == "repeat-x" ) {
+
+      for ( $bg_x = $start_x; $bg_x < $bg_width; $bg_x += $img_w ) {
+        if ( $bg_x < 0 ) {
+          $dst_x = 0;
+          $src_x = -$bg_x;
+          $w = $img_w + $bg_x;
+        } else {
+          $dst_x = $bg_x;
+          $src_x = 0;
+          $w = $img_w;
+        }
+        imagecopy($bg, $src, $dst_x, $dst_y, $src_x, $src_y, $w, $img_h);
+      }
+
+    } else if ( $repeat == "repeat-y" ) {
+
+      for ( $bg_y = $start_y; $bg_y < $bg_height; $bg_y += $img_h ) {
+        if ( $bg_y < 0 ) {
+          $dst_y = 0;
+          $src_y = -$bg_y;
+          $h = $img_h + $bg_y;
+        } else {
+          $dst_y = $bg_y;
+          $src_y = 0;
+          $h = $img_h;
+        }
+        imagecopy($bg, $src, $dst_x, $dst_y, $src_x, $src_y, $img_w, $h);
+
+      }
+
+    } else if ( $repeat == "repeat" ) {
+
+      for ( $bg_y = $start_y; $bg_y < $bg_height; $bg_y += $img_h ) {
+        for ( $bg_x = $start_x; $bg_x < $bg_width; $bg_x += $img_w ) {
+
+          if ( $bg_x < 0 ) {
+            $dst_x = 0;
+            $src_x = -$bg_x;
+            $w = $img_w + $bg_x;
+          } else {
+            $dst_x = $bg_x;
+            $src_x = 0;
+            $w = $img_w;
+          }
+
+          if ( $bg_y < 0 ) {
+            $dst_y = 0;
+            $src_y = -$bg_y;
+            $h = $img_h + $bg_y;
+          } else {
+            $dst_y = $bg_y;
+            $src_y = 0;
+            $h = $img_h;
+          }
+          imagecopy($bg, $src, $dst_x, $dst_y, $src_x, $src_y, $w, $h);
+        }
+      }
+    } else {
+ print 'Unknown repeat!';
+    }   
+
+    } /* End optimize away creation of duplicates */
+
+    //img: image url string
+	//img_w, img_h: original image size in px
+	//width, height: box size in pt
+	//bg_width, bg_height: box size in px
+	//x, y: left/top edge of box on page in pt
+	//start_x, start_y: placement of image relativ to pattern
+	//$repeat: repeat mode
+	//$bg: GD object of result image
+	//$src: GD object of original image
+    //When using cpdf and optimization to direct png creation from gd object is available,
+    //don't create temp file, but place gd object directly into the pdf
+	if ( method_exists( $this->_canvas, "get_cpdf" ) && method_exists( $this->_canvas->get_cpdf(), "addImagePng" ) ) {
+      //Note: CPDF_Adapter image converts y position
+	  $this->_canvas->get_cpdf()->addImagePng(
+	  		$filedummy,
+			$x, $this->_canvas->get_height() - $y - $height, $width, $height, $bg);
+	} else {
+      $tmp_file = tempnam(DOMPDF_TEMP_DIR, "bg_dompdf_img_").'.png';
+      //debugpng
+      if (DEBUGPNG) print '[_background_image '.$tmp_file.']';
+
+      imagepng($bg, $tmp_file);
+      $this->_canvas->image($tmp_file, "png", $x, $y, $width, $height);
+
+      //debugpng
+      if (DEBUGPNG) print '[_background_image unlink '.$tmp_file.']';
+
+      if (!DEBUGKEEPTEMP)
+        unlink($tmp_file);
+    }
+  }
+
+  protected function _border_none($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
+    return;
+  }
+  
+  // Border rendering functions
+  protected function _border_dotted($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
+    list($top, $right, $bottom, $left) = $widths;
+
+    if ( $$side < 2 )
+      $dash = array($$side, 2);
+    else
+      $dash = array($$side);
+  
+    
+    switch ($side) {
+
+    case "top":
+      $delta = $top / 2;
+    case "bottom":
+      $delta = isset($delta) ? $delta : -$bottom / 2;
+      $this->_canvas->line($x, $y + $delta, $x + $length, $y + $delta, $color, $$side, $dash);
+      break;
+
+    case "left":
+      $delta = $left / 2;
+    case "right":
+      $delta = isset($delta) ? $delta : - $right / 2;
+      $this->_canvas->line($x + $delta, $y, $x + $delta, $y + $length, $color, $$side, $dash);
+      break;
+
+    default:
+      return;
+
+    }
+  }
+
+  
+  protected function _border_dashed($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
+    list($top, $right, $bottom, $left) = $widths;
+
+    switch ($side) {
+
+    case "top":
+      $delta = $top / 2;
+    case "bottom":
+      $delta = isset($delta) ? $delta : -$bottom / 2;
+      $this->_canvas->line($x, $y + $delta, $x + $length, $y + $delta, $color, $$side, array(3 * $$side));
+      break;
+
+    case "left":
+      $delta = $left / 2;
+    case "right":
+      $delta = isset($delta) ? $delta : - $right / 2;
+      $this->_canvas->line($x + $delta, $y, $x + $delta, $y + $length, $color, $$side, array(3 * $$side));
+      break;
+
+    default:
+      return;
+    }
+    
+  }
+
+  
+  protected function _border_solid($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
+    list($top, $right, $bottom, $left) = $widths;
+
+    // All this polygon business is for beveled corners...
+    switch ($side) {
+
+    case "top":
+      if ( $corner_style == "bevel" ) {
+        
+        $points = array($x, $y,
+                        $x + $length, $y,
+                        $x + $length - $right, $y + $top,
+                        $x + $left, $y + $top);
+        $this->_canvas->polygon($points, $color, null, null, true);
+      } else
+        $this->_canvas->filled_rectangle($x, $y, $length, $top, $color);
+      
+      break;
+      
+    case "bottom":
+      if ( $corner_style == "bevel" ) {
+        $points = array($x, $y,
+                        $x + $length, $y,
+                        $x + $length - $right, $y - $bottom,
+                        $x + $left, $y - $bottom);
+        $this->_canvas->polygon($points, $color, null, null, true);
+      } else
+        $this->_canvas->filled_rectangle($x, $y - $bottom, $length, $bottom, $color);
+      
+      break;
+      
+    case "left":
+      if ( $corner_style == "bevel" ) {
+        $points = array($x, $y,
+                        $x, $y + $length,
+                        $x + $left, $y + $length - $bottom,
+                        $x + $left, $y + $top);
+        $this->_canvas->polygon($points, $color, null, null, true);
+      } else
+        $this->_canvas->filled_rectangle($x, $y, $left, $length, $color);
+      
+      break;
+      
+    case "right":
+      if ( $corner_style == "bevel" ) {
+        $points = array($x, $y,
+                        $x, $y + $length,
+                        $x - $right, $y + $length - $bottom,
+                        $x - $right, $y + $top);
+        $this->_canvas->polygon($points, $color, null, null, true);
+      } else
+        $this->_canvas->filled_rectangle($x - $right, $y, $right, $length, $color);
+
+      break;
+
+    default:
+      return;
+
+    }
+        
+  }
+
+
+  protected function _border_double($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
+    list($top, $right, $bottom, $left) = $widths;
+    
+    $line_width = $$side / 4;
+    
+    // We draw the outermost edge first. Points are ordered: outer left,
+    // outer right, inner right, inner left, or outer top, outer bottom,
+    // inner bottom, inner top.
+    switch ($side) {
+
+    case "top":
+      if ( $corner_style == "bevel" ) {
+        $left_line_width = $left / 4;
+        $right_line_width = $right / 4;
+        
+        $points = array($x, $y,
+                        $x + $length, $y,
+                        $x + $length - $right_line_width, $y + $line_width,
+                        $x + $left_line_width, $y + $line_width,);
+        $this->_canvas->polygon($points, $color, null, null, true);
+        
+        $points = array($x + $left - $left_line_width, $y + $top - $line_width,
+                        $x + $length - $right + $right_line_width, $y + $top - $line_width,
+                        $x + $length - $right, $y + $top,
+                        $x + $left, $y + $top);
+        $this->_canvas->polygon($points, $color, null, null, true);
+
+      } else {
+        $this->_canvas->filled_rectangle($x, $y, $length, $line_width, $color);
+        $this->_canvas->filled_rectangle($x, $y + $top - $line_width, $length, $line_width, $color);
+
+      }
+      break;
+      
+    case "bottom":
+      if ( $corner_style == "bevel" ) {
+        $left_line_width = $left / 4;
+        $right_line_width = $right / 4;
+        
+        $points = array($x, $y,
+                        $x + $length, $y,
+                        $x + $length - $right_line_width, $y - $line_width,
+                        $x + $left_line_width, $y - $line_width);
+        $this->_canvas->polygon($points, $color, null, null, true);
+        
+        $points = array($x + $left - $left_line_width, $y - $bottom + $line_width,
+                        $x + $length - $right + $right_line_width, $y - $bottom + $line_width,
+                        $x + $length - $right, $y - $bottom,
+                        $x + $left, $y - $bottom);
+        $this->_canvas->polygon($points, $color, null, null, true);
+
+      } else {
+        $this->_canvas->filled_rectangle($x, $y - $line_width, $length, $line_width, $color);
+        $this->_canvas->filled_rectangle($x, $y - $bottom, $length, $line_width, $color);
+      }
+          
+      break;
+
+    case "left":
+      if ( $corner_style == "bevel" ) {
+        $top_line_width = $top / 4;
+        $bottom_line_width = $bottom / 4;
+        
+        $points = array($x, $y,
+                        $x, $y + $length,
+                        $x + $line_width, $y + $length - $bottom_line_width,
+                        $x + $line_width, $y + $top_line_width);
+        $this->_canvas->polygon($points, $color, null, null, true);
+
+        $points = array($x + $left - $line_width, $y + $top - $top_line_width,
+                        $x + $left - $line_width, $y + $length - $bottom + $bottom_line_width,
+                        $x + $left, $y + $length - $bottom,
+                        $x + $left, $y + $top);
+        $this->_canvas->polygon($points, $color, null, null, true);
+
+      } else {
+        $this->_canvas->filled_rectangle($x, $y, $line_width, $length, $color);
+        $this->_canvas->filled_rectangle($x + $left - $line_width, $y, $line_width, $length, $color);
+      }
+      
+      break;
+                      
+    case "right":
+      if ( $corner_style == "bevel" ) {
+        $top_line_width = $top / 4;
+        $bottom_line_width = $bottom / 4;
+        
+      
+        $points = array($x, $y,
+                      $x, $y + $length,
+                        $x - $line_width, $y + $length - $bottom_line_width,
+                        $x - $line_width, $y + $top_line_width);
+        $this->_canvas->polygon($points, $color, null, null, true);
+        
+        $points = array($x - $right + $line_width, $y + $top - $top_line_width,
+                        $x - $right + $line_width, $y + $length - $bottom + $bottom_line_width,
+                        $x - $right, $y + $length - $bottom,
+                        $x - $right, $y + $top);
+        $this->_canvas->polygon($points, $color, null, null, true);
+
+      } else {
+        $this->_canvas->filled_rectangle($x - $line_width, $y, $line_width, $length, $color);
+        $this->_canvas->filled_rectangle($x - $right, $y, $line_width, $length, $color);
+      }
+      
+      break;
+
+    default:
+      return;
+
+    }
+        
+  }
+
+  protected function _border_groove($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
+    list($top, $right, $bottom, $left) = $widths;
+      
+    $half_widths = array($top / 2, $right / 2, $bottom / 2, $left / 2);
+    
+    $this->_border_inset($x, $y, $length, $color, $half_widths, $side);
+
+    switch ($side) {
+
+    case "top":
+      $x += $left / 2;
+      $y += $top / 2;
+      $length -= $left / 2 + $right / 2;
+      break;
+
+    case "bottom":
+      $x += $left / 2;
+      $y -= $bottom / 2;
+      $length -= $left / 2 + $right / 2;
+      break;
+
+    case "left":
+      $x += $left / 2;
+      $y += $top / 2;
+      $length -= $top / 2 + $bottom / 2;
+      break;
+
+    case "right":
+      $x -= $right / 2;
+      $y += $top / 2;
+      $length -= $top / 2 + $bottom / 2;
+      break;
+
+    default:
+      return;
+
+    }
+
+    $this->_border_outset($x, $y, $length, $color, $half_widths, $side);
+    
+  }
+  
+  protected function _border_ridge($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
+    list($top, $right, $bottom, $left) = $widths;
+     
+    $half_widths = array($top / 2, $right / 2, $bottom / 2, $left / 2);
+    
+    $this->_border_outset($x, $y, $length, $color, $half_widths, $side);
+
+    switch ($side) {
+
+    case "top":
+      $x += $left / 2;
+      $y += $top / 2;
+      $length -= $left / 2 + $right / 2;
+      break;
+
+    case "bottom":
+      $x += $left / 2;
+      $y -= $bottom / 2;
+      $length -= $left / 2 + $right / 2;
+      break;
+
+    case "left":
+      $x += $left / 2;
+      $y += $top / 2;
+      $length -= $top / 2 + $bottom / 2;
+      break;
+
+    case "right":
+      $x -= $right / 2;
+      $y += $top / 2;
+      $length -= $top / 2 + $bottom / 2;
+      break;
+
+    default:
+      return;
+
+    }
+
+    $this->_border_inset($x, $y, $length, $color, $half_widths, $side);
+
+  }
+
+  protected function _tint($c) {
+    if ( !is_numeric($c) )
+      return $c;
+    
+    return min(1, $c + 0.66);
+  }
+
+  protected function _shade($c) {
+    if ( !is_numeric($c) )
+      return $c;
+    
+    return max(0, $c - 0.66);
+  }
+
+  protected function _border_inset($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
+    list($top, $right, $bottom, $left) = $widths;
+    
+    switch ($side) {
+
+    case "top":
+    case "left":
+      $shade = array_map(array($this, "_shade"), $color);
+      $this->_border_solid($x, $y, $length, $shade, $widths, $side);
+      break;
+
+    case "bottom":
+    case "right":
+      $tint = array_map(array($this, "_tint"), $color);
+      $this->_border_solid($x, $y, $length, $tint, $widths, $side);
+      break;
+
+    default:
+      return;
+    }
+  }
+  
+  protected function _border_outset($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
+    list($top, $right, $bottom, $left) = $widths;
+    
+    switch ($side) {
+    case "top":
+    case "left":
+      $tint = array_map(array($this, "_tint"), $color);
+      $this->_border_solid($x, $y, $length, $tint, $widths, $side);
+      break;
+
+    case "bottom":
+    case "right":
+      $shade = array_map(array($this, "_shade"), $color);
+      $this->_border_solid($x, $y, $length, $shade, $widths, $side);
+      break;
+
+    default:
+      return;
+
+    }
+  }
+
+  //........................................................................
+  
+
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/gd_adapter.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/gd_adapter.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/gd_adapter.cls.php	(revision 2000)
@@ -0,0 +1,730 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: gd_adapter.cls.php,v $
+ * Created on: 2004-06-06
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id */
+
+/**
+ * Image rendering interface
+ *
+ * Renders to an image format supported by GD (jpeg, gif, png, xpm).
+ * Not super-useful day-to-day but handy nonetheless
+ *
+ * @package dompdf
+ */
+class GD_Adapter implements Canvas {
+
+  /**
+   * Resoure handle for the image
+   *
+   * @var resource
+   */
+  private $_img;
+
+  /**
+   * Image width in pixels
+   *
+   * @var int
+   */
+  private $_width;
+
+  /**
+   * Image height in pixels
+   *
+   * @var int
+   */
+  private $_height;
+
+  /**
+   * Image antialias factor
+   *
+   * @var float
+   */
+  private $_aa_factor;
+
+  /**
+   * Allocated colors
+   *
+   * @var array
+   */
+  private $_colors;
+
+  /**
+   * Background color
+   *
+   * @var int
+   */
+  private $_bg_color;
+  
+  /**
+   * Class constructor
+   *
+   * @param mixed  $size         The size of image to create: array(x1,y1,x2,y2) or "letter", "legal", etc.
+   * @param string $orientation  The orientation of the document (either 'landscape' or 'portrait')
+   * @param float  $aa_factor    Anti-aliasing factor, 1 for no AA
+   * @param array  $bg_color     Image background color: array(r,g,b,a), 0 <= r,g,b,a <= 1
+   */
+  function __construct($size, $orientation = "portrait", $aa_factor = 1, $bg_color = array(1,1,1,0) ) {
+
+    if ( !is_array($size) ) {
+
+      if ( isset(CPDF_Adapter::$PAPER_SIZES[ strtolower($size)]) ) 
+        $size = CPDF_Adapter::$PAPER_SIZES[$size];
+      else
+        $size = CPDF_Adapter::$PAPER_SIZES["letter"];
+    
+    }
+
+    if ( strtolower($orientation) == "landscape" ) {
+      list($size[2],$size[3]) = array($size[3],$size[2]);
+    }
+
+    if ( $aa_factor < 1 )
+      $aa_factor = 1;
+
+    $this->_aa_factor = $aa_factor;
+    
+    $size[2] *= $aa_factor;
+    $size[3] *= $aa_factor;
+    
+    $this->_width = $size[2] - $size[0];
+    $this->_height = $size[3] - $size[1];
+
+    $this->_img = imagecreatetruecolor($this->_width, $this->_height);
+
+    if ( is_null($bg_color) || !is_array($bg_color) ) {
+      // Pure white bg
+      $bg_color = array(1,1,1,0);
+    }
+
+    $this->_bg_color = $this->_allocate_color($bg_color);
+    imagealphablending($this->_img, false);
+    imagesavealpha($this->_img, true);
+    imagefill($this->_img, 0, 0, $this->_bg_color);
+        
+  }
+
+  /**
+   * Return the GF image resource
+   *
+   * @return resource
+   */
+  function get_image() { return $this->_img; }
+
+  /**
+   * Return the image's width in pixels
+   *
+   * @return float
+   */
+  function get_width() { return $this->_width / $this->_aa_factor; }
+
+  /**
+   * Return the image's height in pixels
+   *
+   * @return float
+   */
+  function get_height() { return $this->_height / $this->_aa_factor; }
+  
+  /**
+   * Returns the current page number
+   *
+   * @return int
+   */
+  function get_page_number() {
+    // FIXME
+  }
+   
+  /**
+   * Returns the total number of pages
+   *
+   * @return int
+   */
+  function get_page_count() {
+    // FIXME
+  }    
+
+  /**
+   * Sets the total number of pages
+   *
+   * @param int $count
+   */
+  function set_page_count($count) {
+    // FIXME
+  }    
+
+  /**
+   * Allocate a new color.  Allocate with GD as needed and store
+   * previously allocated colors in $this->_colors.
+   *
+   * @param array $color  The new current color
+   * @return int           The allocated color
+   */
+  private function _allocate_color($color) {
+    
+    // Full opacity if no alpha set
+    if ( !isset($color[3]) ) 
+      $color[3] = 0;
+    
+    list($r,$g,$b,$a) = $color;
+    
+    $r *= 255;
+    $g *= 255;
+    $b *= 255;
+    $a *= 127;
+    
+    // Clip values
+    $r = $r > 255 ? 255 : $r;
+    $g = $g > 255 ? 255 : $g;
+    $b = $b > 255 ? 255 : $b;
+    $a = $a > 127 ? 127 : $a;
+      
+    $r = $r < 0 ? 0 : $r;
+    $g = $g < 0 ? 0 : $g;
+    $b = $b < 0 ? 0 : $b;
+    $a = $a < 0 ? 0 : $a;
+      
+    $key = sprintf("#%02X%02X%02X%02X", $r, $g, $b, $a);
+      
+    if ( isset($this->_colors[$key]) )
+      return $this->_colors[$key];
+
+    if ( $a != 0 ) 
+      $this->_colors[$key] = imagecolorallocatealpha($this->_img, $r, $g, $b, $a);
+    else
+      $this->_colors[$key] = imagecolorallocate($this->_img, $r, $g, $b);
+      
+    return $this->_colors[$key];
+    
+  }
+  
+  /**
+   * Draws a line from x1,y1 to x2,y2
+   *
+   * See {@link Style::munge_color()} for the format of the color array.
+   * See {@link Cpdf::setLineStyle()} for a description of the format of the
+   * $style parameter (aka dash).
+   *
+   * @param float $x1
+   * @param float $y1
+   * @param float $x2
+   * @param float $y2
+   * @param array $color
+   * @param float $width
+   * @param array $style
+   */
+  function line($x1, $y1, $x2, $y2, $color, $width, $style = null) {
+
+    // Scale by the AA factor
+    $x1 *= $this->_aa_factor;
+    $y1 *= $this->_aa_factor;
+    $x2 *= $this->_aa_factor;
+    $y2 *= $this->_aa_factor;
+    $width *= $this->_aa_factor;
+
+    $c = $this->_allocate_color($color);
+
+    // Convert the style array if required
+    if ( !is_null($style) ) {
+      $gd_style = array();
+
+      if ( count($style) == 1 ) {
+        for ($i = 0; $i < $style[0] * $this->_aa_factor; $i++) {
+          $gd_style[] = $c;
+        }
+
+        for ($i = 0; $i < $style[0] * $this->_aa_factor; $i++) {
+          $gd_style[] = $this->_bg_color;
+        }
+
+      } else {
+
+        $i = 0;
+        foreach ($style as $length) {
+
+          if ( $i % 2 == 0 ) {
+            // 'On' pattern
+            for ($i = 0; $i < $style[0] * $this->_aa_factor; $i++) 
+              $gd_style[] = $c;
+            
+          } else {
+            // Off pattern
+            for ($i = 0; $i < $style[0] * $this->_aa_factor; $i++) 
+              $gd_style[] = $this->_bg_color;
+            
+          }
+          $i++;
+        }
+      }
+      
+      imagesetstyle($this->_img, $gd_style);
+      $c = IMG_COLOR_STYLED;
+    }
+    
+    imagesetthickness($this->_img, $width);
+
+    imageline($this->_img, $x1, $y1, $x2, $y2, $c);
+    
+  }
+
+  /**
+   * Draws a rectangle at x1,y1 with width w and height h
+   *
+   * See {@link Style::munge_color()} for the format of the color array.
+   * See {@link Cpdf::setLineStyle()} for a description of the $style
+   * parameter (aka dash)
+   *
+   * @param float $x1
+   * @param float $y1
+   * @param float $w
+   * @param float $h
+   * @param array $color
+   * @param float $width
+   * @param array $style
+   */   
+  function rectangle($x1, $y1, $w, $h, $color, $width, $style = null) {
+
+    // Scale by the AA factor
+    $x1 *= $this->_aa_factor;
+    $y1 *= $this->_aa_factor;
+    $w *= $this->_aa_factor;
+    $h *= $this->_aa_factor;
+
+    $c = $this->_allocate_color($color);
+
+    // Convert the style array if required
+    if ( !is_null($style) ) {
+      $gd_style = array();
+
+      foreach ($style as $length) {
+        for ($i = 0; $i < $length; $i++) {
+          $gd_style[] = $c;
+        }
+      }
+
+      imagesetstyle($this->_img, $gd_style);
+      $c = IMG_COLOR_STYLED;
+    }
+
+    imagesetthickness($this->_img, $width);
+
+    imagerectangle($this->_img, $x1, $y1, $x1 + $w, $y1 + $h, $c);
+    
+  }
+
+  /**
+   * Draws a filled rectangle at x1,y1 with width w and height h
+   *
+   * See {@link Style::munge_color()} for the format of the color array.
+   *
+   * @param float $x1
+   * @param float $y1
+   * @param float $w
+   * @param float $h
+   * @param array $color
+   */   
+  function filled_rectangle($x1, $y1, $w, $h, $color) {
+
+    // Scale by the AA factor
+    $x1 *= $this->_aa_factor;
+    $y1 *= $this->_aa_factor;
+    $w *= $this->_aa_factor;
+    $h *= $this->_aa_factor;
+
+    $c = $this->_allocate_color($color);
+
+    imagefilledrectangle($this->_img, $x1, $y1, $x1 + $w, $y1 + $h, $c);
+
+  }
+
+  /**
+   * Draws a polygon
+   *
+   * The polygon is formed by joining all the points stored in the $points
+   * array.  $points has the following structure:
+   * <code>
+   * array(0 => x1,
+   *       1 => y1,
+   *       2 => x2,
+   *       3 => y2,
+   *       ...
+   *       );
+   * </code>
+   *
+   * See {@link Style::munge_color()} for the format of the color array.
+   * See {@link Cpdf::setLineStyle()} for a description of the $style
+   * parameter (aka dash)   
+   *
+   * @param array $points
+   * @param array $color
+   * @param float $width
+   * @param array $style
+   * @param bool  $fill  Fills the polygon if true
+   */
+  function polygon($points, $color, $width = null, $style = null, $fill = false) {
+
+    // Scale each point by the AA factor
+    foreach (array_keys($points) as $i)
+      $points[$i] *= $this->_aa_factor;
+
+    $c = $this->_allocate_color($color);
+
+    // Convert the style array if required
+    if ( !is_null($style) && !$fill ) {
+      $gd_style = array();
+
+      foreach ($style as $length) {
+        for ($i = 0; $i < $length; $i++) {
+          $gd_style[] = $c;
+        }
+      }
+
+      imagesetstyle($this->_img, $gd_style);
+      $c = IMG_COLOR_STYLED;
+    }
+
+    imagesetthickness($this->_img, $width);
+
+    if ( $fill ) 
+      imagefilledpolygon($this->_img, $points, count($points) / 2, $c);
+    else
+      imagepolygon($this->_img, $points, count($points) / 2, $c);
+        
+  }
+
+  /**
+   * Draws a circle at $x,$y with radius $r
+   *
+   * See {@link Style::munge_color()} for the format of the color array.
+   * See {@link Cpdf::setLineStyle()} for a description of the $style
+   * parameter (aka dash)
+   *
+   * @param float $x
+   * @param float $y
+   * @param float $r
+   * @param array $color
+   * @param float $width
+   * @param array $style
+   * @param bool $fill Fills the circle if true   
+   */   
+  function circle($x, $y, $r, $color, $width = null, $style = null, $fill = false) {
+
+    // Scale by the AA factor
+    $x *= $this->_aa_factor;
+    $y *= $this->_aa_factor;
+    $r *= $this->_aa_factor;
+
+    $c = $this->_allocate_color($color);
+
+    // Convert the style array if required
+    if ( !is_null($style) && !$fill ) {
+      $gd_style = array();
+
+      foreach ($style as $length) {
+        for ($i = 0; $i < $length; $i++) {
+          $gd_style[] = $c;
+        }
+      }
+
+      imagesetstyle($this->_img, $gd_style);
+      $c = IMG_COLOR_STYLED;
+    }
+
+    imagesetthickness($this->_img, $width);
+
+    if ( $fill )
+      imagefilledellipse($this->_img, $x, $y, $r, $r, $c);
+    else
+      imageellipse($this->_img, $x, $y, $r, $r, $c);
+        
+  }
+
+  /**
+   * Add an image to the pdf.
+   *
+   * The image is placed at the specified x and y coordinates with the
+   * given width and height.
+   *
+   * @param string $img_url the path to the image
+   * @param string $img_type the type (e.g. extension) of the image
+   * @param float $x x position
+   * @param float $y y position
+   * @param int $w width (in pixels)
+   * @param int $h height (in pixels)
+   */
+  function image($img_url, $img_type, $x, $y, $w, $h) {
+
+    switch ($img_type) {
+    case "png":
+      $src = @imagecreatefrompng($img_url);
+      break;
+      
+    case "gif":
+      $src = @imagecreatefromgif($img_url);
+      break;
+      
+    case "jpg":
+    case "jpeg":
+      $src = @imagecreatefromjpeg($img_url);
+      break;
+
+    default:
+      break;
+      
+    }
+
+    if ( !$src )
+      return; // Probably should add to $_dompdf_errors or whatever here
+    
+    // Scale by the AA factor
+    $x *= $this->_aa_factor;
+    $y *= $this->_aa_factor;
+
+    $w *= $this->_aa_factor;
+    $h *= $this->_aa_factor;
+    
+    $img_w = imagesx($src);
+    $img_h = imagesy($src);
+
+    
+    imagecopyresampled($this->_img, $src, $x, $y, 0, 0, $w, $h, $img_w, $img_h);
+    
+  }
+
+  /**
+   * Writes text at the specified x and y coordinates
+   *
+   * See {@link Style::munge_color()} for the format of the color array.
+   *
+   * @param float $x
+   * @param float $y
+   * @param string $text the text to write
+   * @param string $font the font file to use
+   * @param float $size the font size, in points
+   * @param array $color
+   * @param float $adjust word spacing adjustment
+   * @param float $angle Text angle
+   */
+  function text($x, $y, $text, $font, $size, $color = array(0,0,0), $adjust = 0, $angle = 0) {
+
+    // Scale by the AA factor
+    $x *= $this->_aa_factor;
+    $y *= $this->_aa_factor;
+    $size *= $this->_aa_factor;
+    
+    $h = $this->get_font_height($font, $size);
+    
+    $c = $this->_allocate_color($color);
+
+    if ( strpos($font, '.ttf') === false )
+      $font .= ".ttf";
+
+    // FIXME: word spacing
+    imagettftext($this->_img, $size, $angle, $x, $y + $h, $c, $font, $text);
+    
+  }
+
+  /**
+   * Add a named destination (similar to <a name="foo">...</a> in html)
+   *
+   * @param string $anchorname The name of the named destination
+   */
+  function add_named_dest($anchorname) {
+    // Not implemented
+  }
+
+  /**
+   * Add a link to the pdf
+   *
+   * @param string $url The url to link to
+   * @param float  $x   The x position of the link
+   * @param float  $y   The y position of the link
+   * @param float  $width   The width of the link
+   * @param float  $height   The height of the link
+   */
+  function add_link($url, $x, $y, $width, $height) {
+    // Not implemented
+  }
+
+  /**
+   * Calculates text size, in points
+   *
+   * @param string $text the text to be sized
+   * @param string $font the desired font
+   * @param float  $size the desired font size
+   * @param float  $spacing word spacing, if any
+   * @return float
+   */
+  function get_text_width($text, $font, $size, $spacing = 0) {    
+
+    if ( strpos($font, '.ttf') === false )
+      $font .= ".ttf";
+
+    // FIXME: word spacing
+    list($x1,,$x2) = imagettfbbox($size, 0, $font, $text);
+    return $x2 - $x1;
+  }
+
+  /**
+   * Calculates font height, in points
+   *
+   * @param string $font
+   * @param float $size
+   * @return float
+   */
+  function get_font_height($font, $size) {
+    if ( strpos($font, '.ttf') === false )
+      $font .= ".ttf";
+
+    // FIXME: word spacing
+    list(,$y2,,,,$y1) = imagettfbbox($size, 0, $font, "MXjpqytfhl");  // Test string with ascenders, descenders and caps
+    return $y2 - $y1;
+  }
+
+  
+  /**
+   * Starts a new page
+   *
+   * Subsequent drawing operations will appear on the new page.
+   */
+  function new_page() {
+    // FIXME
+  }    
+
+  /**
+   * Streams the image directly to the browser
+   *
+   * @param string $filename the name of the image file (ignored)
+   * @param array  $options associative array, 'type' => jpeg|jpg|png, 'quality' => 0 - 100 (jpeg only)
+   */
+  function stream($filename, $options = null) {
+
+    // Perform any antialiasing
+    if ( $this->_aa_factor != 1 ) {
+      $dst_w = $this->_width / $this->_aa_factor;
+      $dst_h = $this->_height / $this->_aa_factor;
+      $dst = imagecreatetruecolor($dst_w, $dst_h);
+      imagecopyresampled($dst, $this->_img, 0, 0, 0, 0,
+                         $dst_w, $dst_h,
+                         $this->_width, $this->_height);
+    } else {
+      $dst = $this->_img;
+    }
+
+    if ( !isset($options["type"]) )
+      $options["type"] = "png";
+
+    $type = strtolower($options["type"]);
+    
+    header("Cache-Control: private");
+    
+    switch ($type) {
+
+    case "jpg":
+    case "jpeg":
+      if ( !isset($options["quality"]) )
+        $options["quality"] = 75;
+      
+      header("Content-type: image/jpeg");
+      imagejpeg($dst, '', $options["quality"]);
+      break;
+
+    case "png":
+    default:
+      header("Content-type: image/png");
+      imagepng($dst);
+      break;
+    }
+
+    if ( $this->_aa_factor != 1 ) 
+      imagedestroy($dst);
+  }
+
+  /**
+   * Returns the PNG as a string
+   *
+   * @param array  $options associative array, 'type' => jpeg|jpg|png, 'quality' => 0 - 100 (jpeg only)
+   * @return string
+   */
+  function output($options = null) {
+
+    if ( $this->_aa_factor != 1 ) {
+      $dst_w = $this->_width / $this->_aa_factor;
+      $dst_h = $this->_height / $this->_aa_factor;
+      $dst = imagecreatetruecolor($dst_w, $dst_h);
+      imagecopyresampled($dst, $this->_img, 0, 0, 0, 0,
+                         $dst_w, $dst_h,
+                         $this->_width, $this->_height);
+    } else {
+      $dst = $this->_img;
+    }
+    
+    if ( !isset($options["type"]) )
+      $options["type"] = "png";
+
+    $type = $options["type"];
+    
+    ob_start();
+
+    switch ($type) {
+
+    case "jpg":
+    case "jpeg":
+      if ( !isset($options["quality"]) )
+        $options["quality"] = 75;
+      
+      imagejpeg($dst, '', $options["quality"]);
+      break;
+
+    case "png":
+    default:
+      imagepng($dst);
+      break;
+    }
+
+    $image = ob_get_contents();
+    ob_end_clean();
+
+    if ( $this->_aa_factor != 1 )
+      imagedestroy($dst);
+    
+    return $image;
+  }
+  
+  
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/positioner.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/positioner.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/positioner.cls.php	(revision 2000)
@@ -0,0 +1,66 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: positioner.cls.php,v $
+ * Created on: 2004-06-08
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: positioner.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Base Positioner class
+ *
+ * Defines postioner interface
+ *
+ * @access private
+ * @package dompdf
+ */
+abstract class Positioner {
+  
+  // protected members
+  protected $_frame;
+  
+  //........................................................................
+
+  function __construct(Frame_Decorator $frame) {
+    $this->_frame = $frame;
+  }
+
+  //........................................................................
+
+  abstract function position();
+  
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/inline_frame_reflower.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/inline_frame_reflower.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/inline_frame_reflower.cls.php	(revision 2000)
@@ -0,0 +1,82 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: inline_frame_reflower.cls.php,v $
+ * Created on: 2004-06-17
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: inline_frame_reflower.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Reflows inline frames
+ *
+ * @access private
+ * @package dompdf
+ */
+class Inline_Frame_Reflower extends Frame_Reflower {
+
+  function __construct(Frame $frame) { parent::__construct($frame); }
+  
+  //........................................................................
+
+  function reflow() {
+    $style = $this->_frame->get_style();
+    $this->_frame->position();
+
+    $cb = $this->_frame->get_containing_block();
+
+    // Add our margin, padding & border to the first and last children
+    if ( ($f = $this->_frame->get_first_child()) && $f instanceof Text_Frame_Decorator ) {
+      $f->get_style()->margin_left = $style->margin_left;
+      $f->get_style()->padding_left = $style->padding_left;
+      $f->get_style()->border_left = $style->border_left;
+    }
+
+    if ( ($l = $this->_frame->get_last_child()) && $l instanceof Text_Frame_Decorator ) {
+      $f->get_style()->margin_right = $style->margin_right;
+      $f->get_style()->padding_right = $style->padding_right;
+      $f->get_style()->border_right = $style->border_right;
+    }
+
+    // Set the containing blocks and reflow each child.  The containing
+    // block is not changed by line boxes.
+    foreach ( $this->_frame->get_children() as $child ) {
+      
+      $child->set_containing_block($cb);
+      $child->reflow();
+    }
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/table_row_frame_reflower.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/table_row_frame_reflower.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/table_row_frame_reflower.cls.php	(revision 2000)
@@ -0,0 +1,95 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: table_row_frame_reflower.cls.php,v $
+ * Created on: 2004-06-17
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: table_row_frame_reflower.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Reflows table rows
+ *
+ * @access private
+ * @package dompdf
+ */
+class Table_Row_Frame_Reflower extends Frame_Reflower {
+
+
+  function __construct(Table_Row_Frame_Decorator $frame) {
+    parent::__construct($frame);
+  }
+
+  //........................................................................
+
+  function reflow() {
+    $page = $this->_frame->get_root();
+
+    if ( $page->is_full() )
+      return;
+
+    $this->_frame->position();
+    $style = $this->_frame->get_style();
+    $cb = $this->_frame->get_containing_block();
+
+    foreach ($this->_frame->get_children() as $child) {
+
+      if ( $page->is_full() )
+        return;
+
+      $child->set_containing_block($cb);
+      $child->reflow();
+
+    }
+
+    if ( $page->is_full() )
+      return;
+
+    $table = Table_Frame_Decorator::find_parent_table($this->_frame);
+    $cellmap = $table->get_cellmap();
+    $style->width = $cellmap->get_frame_width($this->_frame);
+    $style->height = $cellmap->get_frame_height($this->_frame);
+
+    $this->_frame->set_position($cellmap->get_frame_position($this->_frame));
+
+  }
+
+  //........................................................................
+
+  function get_min_max_width() {
+    throw new DOMPDF_Exception("Min/max width is undefined for table rows");
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/style.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/style.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/style.cls.php	(revision 2000)
@@ -0,0 +1,1948 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: style.cls.php,v $
+ * Created on: 2004-06-01
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 0.5.1.htischer.20090507
+ * - Fix px to pt conversion according to DOMPDF_DPI
+ * - Recognize css styles with !important attribute, and store !important attribute within style
+ * - Propagate !important by inherit and sequences of styles with merge.
+ * - Add missing style property cache flushes for consistent rendering, e.g. on explicte assignments
+ * - Add important set/get for access from outside of class
+ * - Fix font_family search path with multiple fonts list in css attribute:
+ *   On missing font, do not immediately fall back to default font,
+ *   but try subsequent fonts in search chain. Only when none found, explicitely
+ *   refer to default font.
+ * - Allow read of background individual properties
+ * - Add support for individual styles background-position, background-attachment, background-repeat
+ * - Complete style components of list-style
+ * - Add support for combined styles in addition to individual styles
+ *   like {border: red 1px solid;}, { border-width: 1px;}, { border-right-color: red; } ...
+ *   for font, background
+ * - Propagate attributes including !important from combined style to individual component
+ *   for border, background, padding, margin, font, list_style
+ * - Refactor common code of border, background, padding, margin, font, list_style
+ * - Refactor common code of list-style-image and background-image
+ * - special treatment of css images "none" instead of url(...), otherwise would prepend string "none" with path name
+ * - Added comments
+ * - Added debug output
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version dompdf_trunk_with_helmut_mods.20090524
+ * - Allow superflous white space and string delimiter in font search path.
+ * - Restore lost change of default font of above
+ * @version 20090610
+ * - Allow absolute path from web server root as html image reference
+ * - More accurate handling of css property cache consistency
+ */
+
+/* $Id: style.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Represents CSS properties.
+ *
+ * The Style class is responsible for handling and storing CSS properties.
+ * It includes methods to resolve colours and lengths, as well as getters &
+ * setters for many CSS properites.
+ *
+ * Actual CSS parsing is performed in the {@link Stylesheet} class.
+ *
+ * @package dompdf
+ */
+class Style {
+
+  /**
+   * Default font size, in points.
+   *
+   * @var float
+   */
+  static $default_font_size = 12;
+
+  /**
+   * Default line height, as a fraction of the font size.
+   *
+   * @var float
+   */
+  static $default_line_height = 1.2;
+
+  /**
+   * List of all inline types.  Should really be a constant.
+   *
+   * @var array
+   */
+  static $INLINE_TYPES = array("inline");
+
+  /**
+   * List of all block types.  Should really be a constant.
+   *
+   * @var array
+   */
+  static $BLOCK_TYPES = array("block","inline-block", "table-cell", "list-item");
+
+  /**
+   * List of all table types.  Should really be a constant.
+   *
+   * @var array;
+   */
+  static $TABLE_TYPES = array("table", "inline-table");
+
+  /**
+   * List of valid border styles.  Should also really be a constant.
+   *
+   * @var array
+   */
+  static $BORDER_STYLES = array("none", "hidden", "dotted", "dashed", "solid",
+                                "double", "groove", "ridge", "inset", "outset");
+
+  /**
+   * Default style values.
+   *
+   * @link http://www.w3.org/TR/CSS21/propidx.html
+   *
+   * @var array
+   */
+  static protected $_defaults = null;
+
+  /**
+   * List of inherited properties
+   *
+   * @link http://www.w3.org/TR/CSS21/propidx.html
+   *
+   * @var array
+   */
+  static protected $_inherited = null;
+
+  /**
+   * The stylesheet this style belongs to
+   *
+   * @see Stylesheet
+   * @var Stylesheet
+   */
+  protected $_stylesheet; // stylesheet this style is attached to
+
+  /**
+   * Main array of all CSS properties & values
+   *
+   * @var array
+   */
+  protected $_props;
+
+  /* var instead of protected would allow access outside of class */
+  protected $_important_props;
+
+  /**
+   * Cached property values
+   *
+   * @var array
+   */
+  protected $_prop_cache;
+  
+  /**
+   * Font size of parent element in document tree.  Used for relative font
+   * size resolution.
+   *
+   * @var float
+   */
+  protected $_parent_font_size; // Font size of parent element
+  
+  // private members
+  /**
+   * True once the font size is resolved absolutely
+   *
+   * @var bool
+   */
+  private $__font_size_calculated; // Cache flag
+  
+  /**
+   * Class constructor
+   *
+   * @param Stylesheet $stylesheet the stylesheet this Style is associated with.
+   */
+  function __construct(Stylesheet $stylesheet) {
+    $this->_props = array();
+    $this->_important_props = array();
+    $this->_stylesheet = $stylesheet;
+    $this->_parent_font_size = null;
+    $this->__font_size_calculated = false;
+    
+    if ( !isset(self::$_defaults) ) {
+    
+      // Shorthand
+      $d =& self::$_defaults;
+    
+      // All CSS 2.1 properties, and their default values
+      $d["azimuth"] = "center";
+      $d["background_attachment"] = "scroll";
+      $d["background_color"] = "transparent";
+      $d["background_image"] = "none";
+      $d["background_position"] = "0% 0%";
+      $d["background_repeat"] = "repeat";
+      $d["background"] = "";
+      $d["border_collapse"] = "separate";
+      $d["border_color"] = "";
+      $d["border_spacing"] = "0";
+      $d["border_style"] = "";
+      $d["border_top"] = "";
+      $d["border_right"] = "";
+      $d["border_bottom"] = "";
+      $d["border_left"] = "";
+      $d["border_top_color"] = "";
+      $d["border_right_color"] = "";
+      $d["border_bottom_color"] = "";
+      $d["border_left_color"] = "";
+      $d["border_top_style"] = "none";
+      $d["border_right_style"] = "none";
+      $d["border_bottom_style"] = "none";
+      $d["border_left_style"] = "none";
+      $d["border_top_width"] = "medium";
+      $d["border_right_width"] = "medium";
+      $d["border_bottom_width"] = "medium";
+      $d["border_left_width"] = "medium";
+      $d["border_width"] = "medium";
+      $d["border"] = "";
+      $d["bottom"] = "auto";
+      $d["caption_side"] = "top";
+      $d["clear"] = "none";
+      $d["clip"] = "auto";
+      $d["color"] = "#000000";
+      $d["content"] = "normal";
+      $d["counter_increment"] = "none";
+      $d["counter_reset"] = "none";
+      $d["cue_after"] = "none";
+      $d["cue_before"] = "none";
+      $d["cue"] = "";
+      $d["cursor"] = "auto";
+      $d["direction"] = "ltr";
+      $d["display"] = "inline";
+      $d["elevation"] = "level";
+      $d["empty_cells"] = "show";
+      $d["float"] = "none";
+      $d["font_family"] = "serif";
+      $d["font_size"] = "medium";
+      $d["font_style"] = "normal";
+      $d["font_variant"] = "normal";
+      $d["font_weight"] = "normal";
+      $d["font"] = "";
+      $d["height"] = "auto";
+      $d["left"] = "auto";
+      $d["letter_spacing"] = "normal";
+      $d["line_height"] = "normal";
+      $d["list_style_image"] = "none";
+      $d["list_style_position"] = "outside";
+      $d["list_style_type"] = "disc";
+      $d["list_style"] = "";
+      $d["margin_right"] = "0";
+      $d["margin_left"] = "0";
+      $d["margin_top"] = "0";
+      $d["margin_bottom"] = "0";
+      $d["margin"] = "";
+      $d["max_height"] = "none";
+      $d["max_width"] = "none";
+      $d["min_height"] = "0";
+      $d["min_width"] = "0";
+      $d["orphans"] = "2";
+      $d["outline_color"] = "invert";
+      $d["outline_style"] = "none";
+      $d["outline_width"] = "medium";
+      $d["outline"] = "";
+      $d["overflow"] = "visible";
+      $d["padding_top"] = "0";
+      $d["padding_right"] = "0";
+      $d["padding_bottom"] = "0";
+      $d["padding_left"] = "0";
+      $d["padding"] = "";
+      $d["page_break_after"] = "auto";
+      $d["page_break_before"] = "auto";
+      $d["page_break_inside"] = "auto";
+      $d["pause_after"] = "0";
+      $d["pause_before"] = "0";
+      $d["pause"] = "";
+      $d["pitch_range"] = "50";
+      $d["pitch"] = "medium";
+      $d["play_during"] = "auto";
+      $d["position"] = "static";
+      $d["quotes"] = "";
+      $d["richness"] = "50";
+      $d["right"] = "auto";
+      $d["speak_header"] = "once";
+      $d["speak_numeral"] = "continuous";
+      $d["speak_punctuation"] = "none";
+      $d["speak"] = "normal";
+      $d["speech_rate"] = "medium";
+      $d["stress"] = "50";
+      $d["table_layout"] = "auto";
+      $d["text_align"] = "left";
+      $d["text_decoration"] = "none";
+      $d["text_indent"] = "0";
+      $d["text_transform"] = "none";
+      $d["top"] = "auto";
+      $d["unicode_bidi"] = "normal";
+      $d["vertical_align"] = "baseline";
+      $d["visibility"] = "visible";
+      $d["voice_family"] = "";
+      $d["volume"] = "medium";
+      $d["white_space"] = "normal";
+      $d["widows"] = "2";
+      $d["width"] = "auto";
+      $d["word_spacing"] = "normal";
+      $d["z_index"] = "auto";
+
+      // Properties that inherit by default
+      self::$_inherited = array("azimuth",
+                                 "border_collapse",
+                                 "border_spacing",
+                                 "caption_side",
+                                 "color",
+                                 "cursor",
+                                 "direction",
+                                 "elevation",
+                                 "empty_cells",
+                                 "font_family",
+                                 "font_size",
+                                 "font_style",
+                                 "font_variant",
+                                 "font_weight",
+                                 "font",
+                                 "letter_spacing",
+                                 "line_height",
+                                 "list_style_image",
+                                 "list_style_position",
+                                 "list_style_type",
+                                 "list_style",
+                                 "orphans",
+                                 "page_break_inside",
+                                 "pitch_range",
+                                 "pitch",
+                                 "quotes",
+                                 "richness",
+                                 "speak_header",
+                                 "speak_numeral",
+                                 "speak_punctuation",
+                                 "speak",
+                                 "speech_rate",
+                                 "stress",
+                                 "text_align",
+                                 "text_indent",
+                                 "text_transform",
+                                 "visibility",
+                                 "voice_family",
+                                 "volume",
+                                 "white_space",
+                                 "widows",
+                                 "word_spacing");
+    }
+
+  }
+
+  /**
+   * "Destructor": forcibly free all references held by this object
+   */
+  function dispose() {
+    unset($this->_stylesheet);
+  }
+  
+  /**
+   * returns the {@link Stylesheet} this Style is associated with.
+   *
+   * @return Stylesheet
+   */
+  function get_stylesheet() { return $this->_stylesheet; }
+  
+  /**
+   * Converts any CSS length value into an absolute length in points.
+   *
+   * length_in_pt() takes a single length (e.g. '1em') or an array of
+   * lengths and returns an absolute length.  If an array is passed, then
+   * the return value is the sum of all elements.
+   *
+   * If a reference size is not provided, the default font size is used
+   * ({@link Style::$default_font_size}).
+   *
+   * @param float|array $length   the length or array of lengths to resolve
+   * @param float       $ref_size  an absolute reference size to resolve percentage lengths
+   * @return float
+   */
+  function length_in_pt($length, $ref_size = null) {
+
+    if ( !is_array($length) )
+      $length = array($length);
+
+    if ( !isset($ref_size) )
+      $ref_size = self::$default_font_size;
+
+    $ret = 0;
+    foreach ($length as $l) {
+
+      if ( $l === "auto" ) 
+        return "auto";
+      
+      if ( $l === "none" )
+        return "none";
+
+      // Assume numeric values are already in points
+      if ( is_numeric($l) ) {
+        $ret += $l;
+        continue;
+      }
+        
+      if ( $l === "normal" ) {
+        $ret += $ref_size;
+        continue;
+      }
+
+      // Border lengths
+      if ( $l === "thin" ) {
+        $ret += 0.5;
+        continue;
+      }
+      
+      if ( $l === "medium" ) {
+        $ret += 1.5;
+        continue;
+      }
+    
+      if ( $l === "thick" ) {
+        $ret += 2.5;
+        continue;
+      }
+      
+      if ( ($i = mb_strpos($l, "pt"))  !== false ) {
+        $ret += mb_substr($l, 0, $i);
+        continue;
+      }
+
+      if ( ($i = mb_strpos($l, "px"))  !== false ) {
+        $ret += ( mb_substr($l, 0, $i)  * 72 ) / DOMPDF_DPI;
+        continue;
+      }
+
+      if ( ($i = mb_strpos($l, "em"))  !== false ) {
+        $ret += mb_substr($l, 0, $i) * $this->__get("font_size");
+        continue;
+      }
+      
+      // FIXME: em:ex ratio?
+      if ( ($i = mb_strpos($l, "ex"))  !== false ) {
+        $ret += mb_substr($l, 0, $i) * $this->__get("font_size");
+        continue;
+      }
+      
+      if ( ($i = mb_strpos($l, "%"))  !== false ) {
+        $ret += mb_substr($l, 0, $i)/100 * $ref_size;
+        continue;
+      }
+      
+      if ( ($i = mb_strpos($l, "in")) !== false ) {
+        $ret += mb_substr($l, 0, $i) * 72;
+        continue;
+      }
+          
+      if ( ($i = mb_strpos($l, "cm")) !== false ) {
+        $ret += mb_substr($l, 0, $i) * 72 / 2.54;
+        continue;
+      }
+
+      if ( ($i = mb_strpos($l, "mm")) !== false ) {
+        $ret += mb_substr($l, 0, $i) * 72 / 25.4;
+        continue;
+      }
+          
+      if ( ($i = mb_strpos($l, "pc")) !== false ) {
+        $ret += mb_substr($l, 0, $i) / 12;
+        continue;
+      }
+          
+      // Bogus value
+      $ret += $ref_size;
+    }
+
+    return $ret;
+  }
+
+  
+  /**
+   * Set inherited properties in this style using values in $parent
+   *
+   * @param Style $parent
+   */
+  function inherit(Style $parent) {
+
+    // Set parent font size
+    $this->_parent_font_size = $parent->get_font_size();
+    
+    foreach (self::$_inherited as $prop) {
+      //inherit the !important property also.
+      //if local property is also !important, don't inherit.
+      if ( isset($parent->_props[$prop]) &&
+           ( !isset($this->_props[$prop]) ||
+             ( isset($parent->_important_props[$prop]) && !isset($this->_important_props[$prop]) )
+           )
+         ) {
+        if ( isset($parent->_important_props[$prop]) ) {
+          $this->_important_props[$prop] = true;
+        }
+        //see __set and __get, on all assignments clear cache!
+		$this->_prop_cache[$prop] = null;
+		$this->_props[$prop] = $parent->_props[$prop];
+      }
+    }
+      
+    foreach (array_keys($this->_props) as $prop) {
+      if ( $this->_props[$prop] == "inherit" ) {
+        if ( isset($parent->_important_props[$prop]) ) {
+          $this->_important_props[$prop] = true;
+        }
+        //do not assign direct, but
+        //implicite assignment through __set, redirect to specialized, get value with __get
+        //This is for computing defaults if the parent setting is also missing.
+        //Therefore do not directly assign the value without __set
+        //set _important_props before that to be able to propagate.
+        //see __set and __get, on all assignments clear cache!
+		//$this->_prop_cache[$prop] = null;
+		//$this->_props[$prop] = $parent->_props[$prop];
+        //props_set for more obvious explicite assignment not implemented, because
+        //too many implicite uses.
+        // $this->props_set($prop, $parent->$prop);
+        $this->$prop = $parent->$prop;
+      }
+    }
+          
+    return $this;
+  }
+
+  
+  /**
+   * Override properties in this style with those in $style
+   *
+   * @param Style $style
+   */
+  function merge(Style $style) {
+    //treat the !important attribute
+    //if old rule has !important attribute, override with new rule only if
+    //the new rule is also !important
+    foreach($style->_props as $prop => $val ) {
+      if (isset($style->_important_props[$prop])) {
+ 	    $this->_important_props[$prop] = true;
+        //see __set and __get, on all assignments clear cache!
+		$this->_prop_cache[$prop] = null;
+ 	    $this->_props[$prop] = $val;
+ 	  } else if ( !isset($this->_important_props[$prop]) ) {
+        //see __set and __get, on all assignments clear cache!
+		$this->_prop_cache[$prop] = null;
+ 	    $this->_props[$prop] = $val;
+ 	  }
+ 	}
+
+    if ( isset($style->_props["font_size"]) )
+      $this->__font_size_calculated = false;    
+  }
+
+  
+  /**
+   * Returns an array(r, g, b, "r"=> r, "g"=>g, "b"=>b, "hex"=>"#rrggbb")
+   * based on the provided CSS colour value.
+   *
+   * @param string $colour
+   * @return array
+   */
+  function munge_colour($colour) {
+    if ( is_array($colour) )
+      // Assume the array has the right format...
+      // FIXME: should/could verify this.
+      return $colour;
+    
+    $r = 0;
+    $g = 0;
+    $b = 0;
+
+    // Handle colour names
+    switch ($colour) {
+
+    case "maroon":
+      $r = 0x80;
+      break;
+
+    case "red":
+      $r = 0xff;
+      break;
+
+    case "orange":
+      $r = 0xff;
+      $g = 0xa5;
+      break;
+
+    case "yellow":
+      $r = 0xff;
+      $g = 0xff;
+      break;
+
+    case "olive":
+      $r = 0x80;
+      $g = 0x80;
+      break;
+
+    case "purple":
+      $r = 0x80;
+      $b = 0x80;
+      break;
+
+    case "fuchsia":
+      $r = 0xff;
+      $b = 0xff;
+      break;
+
+    case "white":
+      $r = $g = $b = 0xff;
+      break;
+
+    case "lime":
+      $g = 0xff;
+      break;
+
+    case "green":
+      $g = 0x80;
+      break;
+
+    case "navy":
+      $b = 0x80;
+      break;
+
+    case "blue":
+      $b = 0xff;
+      break;
+
+    case "aqua":
+      $g = 0xff;
+      $b = 0xff;
+      break;
+
+    case "teal":
+      $g = 0x80;
+      $b = 0x80;
+      break;
+
+    case "black":
+      break;
+
+    case "sliver":
+      $r = $g = $b = 0xc0;
+      break;
+
+    case "gray":
+    case "grey":
+      $r = $g = $b = 0x80;
+      break;
+
+    case "transparent":
+      return "transparent";
+      
+    default:
+      if ( mb_strlen($colour) == 4 && $colour{0} == "#" ) {
+        // #rgb format
+        $r = hexdec($colour{1} . $colour{1});
+        $g = hexdec($colour{2} . $colour{2});
+        $b = hexdec($colour{3} . $colour{3});
+
+      } else if ( mb_strlen($colour) == 7 && $colour{0} == "#" ) {
+        // #rrggbb format
+        $r = hexdec(mb_substr($colour, 1, 2));
+        $g = hexdec(mb_substr($colour, 3, 2));
+        $b = hexdec(mb_substr($colour, 5, 2));
+
+      } else if ( mb_strpos($colour, "rgb") !== false ) {
+        // rgb( r,g,b ) format
+        $i = mb_strpos($colour, "(");
+        $j = mb_strpos($colour, ")");
+        
+        // Bad colour value
+        if ($i === false || $j === false)
+          return null;
+
+        $triplet = explode(",", mb_substr($colour, $i+1, $j-$i-1));
+
+        if (count($triplet) != 3)
+          return null;
+        
+        foreach (array_keys($triplet) as $c) {
+          $triplet[$c] = trim($triplet[$c]);
+          
+          if ( $triplet[$c]{mb_strlen($triplet[$c]) - 1} == "%" ) 
+            $triplet[$c] = round($triplet[$c] * 0.255);
+        }
+
+        list($r, $g, $b) = $triplet;
+
+      } else {
+        // Who knows?
+        return null;
+      }
+      
+      // Clip to 0 - 1
+      $r = $r < 0 ? 0 : ($r > 255 ? 255 : $r);
+      $g = $g < 0 ? 0 : ($g > 255 ? 255 : $g);
+      $b = $b < 0 ? 0 : ($b > 255 ? 255 : $b);
+      break;
+      
+    }
+    
+    // Form array
+    $arr = array(0 => $r / 0xff, 1 => $g / 0xff, 2 => $b / 0xff,
+                 "r"=>$r / 0xff, "g"=>$g / 0xff, "b"=>$b / 0xff,
+                 "hex" => sprintf("#%02X%02X%02X", $r, $g, $b));
+    return $arr;
+      
+  }
+
+  
+  /**
+   * Alias for {@link Style::munge_colour()}
+   *
+   * @param string $color
+   * @return array
+   */
+  function munge_color($color) { return $this->munge_colour($color); }
+
+  /* direct access to _important_props array from outside would work only when declared as
+   * 'var $_important_props;' instead of 'protected $_important_props;'
+   * Don't call _set/__get on missing attribute. Therefore need a special access.
+   * Assume that __set will be also called when this is called, so do not check validity again.
+   * Only created, if !important exists -> always set true.
+   */
+  function important_set($prop) {
+      $prop = str_replace("-", "_", $prop);
+      $this->_important_props[$prop] = true;
+  }
+
+  function important_get($prop) {
+      isset($this->_important_props[$prop]);
+  }
+
+  /**
+   * PHP5 overloaded setter
+   *
+   * This function along with {@link Style::__get()} permit a user of the
+   * Style class to access any (CSS) property using the following syntax:
+   * <code>
+   *  Style->margin_top = "1em";
+   *  echo (Style->margin_top);
+   * </code>
+   *
+   * __set() automatically calls the provided set function, if one exists,
+   * otherwise it sets the property directly.  Typically, __set() is not
+   * called directly from outside of this class.
+   *
+   * On each modification clear cache to return accurate setting.
+   * Also affects direct settings not using __set
+   * For easier finding all assignments, attempted to allowing only explicite assignment:
+   * Very many uses, e.g. frame_reflower.cls.php -> for now leave as it is
+   * function __set($prop, $val) {
+   *   throw new DOMPDF_Exception("Implicite replacement of assignment by __set.  Not good.");
+   * }
+   * function props_set($prop, $val) { ... }
+   *
+   * @param string $prop  the property to set
+   * @param mixed  $val   the value of the property
+   * 
+   */
+  function __set($prop, $val) {
+    global $_dompdf_warnings;
+
+    $prop = str_replace("-", "_", $prop);
+    $this->_prop_cache[$prop] = null;
+    
+    if ( !isset(self::$_defaults[$prop]) ) {
+      $_dompdf_warnings[] = "'$prop' is not a valid CSS2 property.";
+      return;
+    }
+    
+    if ( $prop !== "content" && is_string($val) && mb_strpos($val, "url") === false ) {
+      $val = mb_strtolower(trim(str_replace(array("\n", "\t"), array(" "), $val)));
+      $val = preg_replace("/([0-9]+) (pt|px|pc|em|ex|in|cm|mm|%)/S", "\\1\\2", $val);
+    }
+    
+    $method = "set_$prop";
+
+    if ( method_exists($this, $method) )
+      $this->$method($val);
+    else 
+      $this->_props[$prop] = $val;
+    
+  }
+
+  /**
+   * PHP5 overloaded getter
+   *
+   * Along with {@link Style::__set()} __get() provides access to all CSS
+   * properties directly.  Typically __get() is not called directly outside
+   * of this class.
+   *
+   * On each modification clear cache to return accurate setting.
+   * Also affects direct settings not using __set
+   *
+   * @param string $prop
+   * @return mixed
+   */
+  function __get($prop) {
+    
+    if ( !isset(self::$_defaults[$prop]) ) 
+      throw new DOMPDF_Exception("'$prop' is not a valid CSS2 property.");
+
+    if ( isset($this->_prop_cache[$prop]) && $this->_prop_cache[$prop] != null)
+      return $this->_prop_cache[$prop];
+    
+    $method = "get_$prop";
+
+    // Fall back on defaults if property is not set
+    if ( !isset($this->_props[$prop]) )
+      $this->_props[$prop] = self::$_defaults[$prop];
+
+    if ( method_exists($this, $method) )
+      return $this->_prop_cache[$prop] = $this->$method();
+
+
+    return $this->_prop_cache[$prop] = $this->_props[$prop];
+  }
+
+
+  /**
+   * Getter for the 'font-family' CSS property.
+   *
+   * Uses the {@link Font_Metrics} class to resolve the font family into an
+   * actual font file.
+   *
+   * @link http://www.w3.org/TR/CSS21/fonts.html#propdef-font-family
+   * @return string
+   */
+  function get_font_family() {
+  
+    $DEBUGCSS=DEBUGCSS; //=DEBUGCSS; Allow override of global setting for ad hoc debug
+	
+    // Select the appropriate font.  First determine the subtype, then check
+    // the specified font-families for a candidate.
+
+    // Resolve font-weight
+    $weight = $this->__get("font_weight");
+    
+    if ( is_numeric($weight) ) {
+
+      if ( $weight < 600 )
+        $weight = "normal";
+      else
+        $weight = "bold";
+
+    } else if ( $weight == "bold" || $weight == "bolder" ) {
+      $weight = "bold";
+
+    } else {
+      $weight = "normal";
+
+    }
+
+    // Resolve font-style
+    $font_style = $this->__get("font_style");
+
+    if ( $weight == "bold" && ($font_style == "italic" || $font_style == "oblique") )
+      $subtype = "bold_italic";
+    else if ( $weight == "bold" && $font_style != "italic" && $font_style != "oblique" )
+      $subtype = "bold";
+    else if ( $weight != "bold" && ($font_style == "italic" || $font_style == "oblique") )
+      $subtype = "italic";
+    else
+      $subtype = "normal";
+    
+    // Resolve the font family
+    if ($DEBUGCSS) {
+      print "<pre>[get_font_family:";
+      print '('.$this->_props["font_family"].'.'.$font_style.'.'.$this->__get("font_weight").'.'.$weight.'.'.$subtype.')';
+    }
+    $families = explode(",", $this->_props["font_family"]);
+    $families = array_map('trim',$families);
+    reset($families);
+
+    $font = null;
+    while ( current($families) ) {
+      list(,$family) = each($families);
+      //remove leading and trailing string delimiters, e.g. on font names with spaces;
+      //remove leading and trailing whitespace
+      $family=trim($family," \t\n\r\x0B\"'");
+      if ($DEBUGCSS) print '('.$family.')';
+      $font = Font_Metrics::get_font($family, $subtype);
+
+      if ( $font ) {
+        if ($DEBUGCSS)  print '('.$font.")get_font_family]\n</pre>";
+        return $font;
+      }
+    }
+
+    $family = null;
+    if ($DEBUGCSS)  print '(default)';
+    $font = Font_Metrics::get_font($family, $subtype);
+
+    if ( $font ) {
+      if ($DEBUGCSS) print '('.$font.")get_font_family]\n</pre>";
+      return $font;
+    }
+    throw new DOMPDF_Exception("Unable to find a suitable font replacement for: '" . $this->_props["font_family"] ."'");
+    
+  }
+
+  /**
+   * Returns the resolved font size, in points
+   *
+   * @link http://www.w3.org/TR/CSS21/fonts.html#propdef-font-size   
+   * @return float
+   */
+  function get_font_size() {
+
+    if ( $this->__font_size_calculated )
+      return $this->_props["font_size"];
+    
+    if ( !isset($this->_props["font_size"]) )
+      $fs = self::$_defaults["font_size"];
+    else 
+      $fs = $this->_props["font_size"];
+    
+    if ( !isset($this->_parent_font_size) )
+      $this->_parent_font_size = self::$default_font_size;
+    
+    switch ($fs) {
+      
+    case "xx-small":
+      $fs = 3/5 * $this->_parent_font_size;
+      break;
+
+    case "x-small":
+      $fs = 3/4 * $this->_parent_font_size;
+      break;
+
+    case "smaller":
+    case "small":
+      $fs = 8/9 * $this->_parent_font_size;
+      break;
+
+    case "medium":
+      $fs = $this->_parent_font_size;
+      break;
+
+    case "larger":
+    case "large":
+      $fs = 6/5 * $this->_parent_font_size;
+      break;
+
+    case "x-large":
+      $fs = 3/2 * $this->_parent_font_size;
+      break;
+
+    case "xx-large":
+      $fs = 2/1 * $this->_parent_font_size;
+      break;
+
+    default:
+      break;
+    }
+
+    // Ensure relative sizes resolve to something
+    if ( ($i = mb_strpos($fs, "em")) !== false ) 
+      $fs = mb_substr($fs, 0, $i) * $this->_parent_font_size;
+
+    else if ( ($i = mb_strpos($fs, "ex")) !== false ) 
+      $fs = mb_substr($fs, 0, $i) * $this->_parent_font_size;
+
+    else
+      $fs = $this->length_in_pt($fs);
+
+    //see __set and __get, on all assignments clear cache!
+	$this->_prop_cache["font_size"] = null;
+    $this->_props["font_size"] = $fs;
+    $this->__font_size_calculated = true;
+    return $this->_props["font_size"];
+
+  }
+
+  /**
+   * @link http://www.w3.org/TR/CSS21/text.html#propdef-word-spacing
+   * @return float
+   */
+  function get_word_spacing() {
+    if ( $this->_props["word_spacing"] === "normal" )
+      return 0;
+
+    return $this->_props["word_spacing"];
+  }
+
+  /**
+   * @link http://www.w3.org/TR/CSS21/visudet.html#propdef-line-height
+   * @return float
+   */
+  function get_line_height() {
+    if ( $this->_props["line_height"] === "normal" )
+      return self::$default_line_height * $this->get_font_size();
+
+    if ( is_numeric($this->_props["line_height"]) ) 
+      return $this->length_in_pt( $this->_props["line_height"] . "%", $this->get_font_size());
+    
+    return $this->length_in_pt( $this->_props["line_height"], $this->get_font_size() );
+  }
+
+  /**
+   * Returns the colour as an array
+   *
+   * The array has the following format:
+   * <code>array(r,g,b, "r" => r, "g" => g, "b" => b, "hex" => "#rrggbb")</code>
+   *
+   * @link http://www.w3.org/TR/CSS21/colors.html#propdef-color
+   * @return array
+   */
+  function get_color() {
+    return $this->munge_color( $this->_props["color"] );
+  }
+
+  /**
+   * Returns the background colour as an array
+   *
+   * The returned array has the same format as {@link Style::get_color()}
+   *
+   * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-color
+   * @return array
+   */
+  function get_background_color() {
+    return $this->munge_color( $this->_props["background_color"] );
+  }
+  
+  /**
+   * Returns the background position as an array
+   *
+   * The returned array has the following format:
+   * <code>array(x,y, "x" => x, "y" => y)</code>
+   *
+   * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-position
+   * @return array
+   */
+  function get_background_position() {
+    
+    $tmp = explode(" ", $this->_props["background_position"]);
+
+    switch ($tmp[0]) {
+
+    case "left":
+      $x = "0%";
+      break;
+
+    case "right":
+      $x = "100%";
+      break;
+
+    case "top":
+      $y = "0%";
+      break;
+
+    case "bottom":
+      $y = "100%";
+      break;
+
+    case "center":
+      $x = "50%";
+      $y = "50%";
+      break;
+
+    default:
+      $x = $tmp[0];
+      break;
+    }
+
+    if ( isset($tmp[1]) ) {
+
+      switch ($tmp[1]) {
+      case "left":
+        $x = "0%";
+        break;
+        
+      case "right":
+        $x = "100%";
+        break;
+        
+      case "top":
+        $y = "0%";
+        break;
+        
+      case "bottom":
+        $y = "100%";
+        break;
+        
+      case "center":
+        if ( $tmp[0] == "left" || $tmp[0] == "right" || $tmp[0] == "center" )
+          $y = "50%";
+        else
+          $x = "50%";
+        break;
+        
+      default:
+        $y = $tmp[1];
+        break;
+      }
+
+    } else {
+      $y = "50%";
+    }
+
+    if ( !isset($x) )
+      $x = "0%";
+
+    if ( !isset($y) )
+      $y = "0%";
+
+    return array( 0 => $x, "x" => $x,
+                  1 => $y, "y" => $y );
+  }
+
+
+  /**
+   * Returns the background as it is currently stored
+   *
+   * (currently anyway only for completeness.
+   * not used for further processing)
+   *
+   * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-attachment
+   * @return string
+   */
+  function get_background_attachment() {
+    return $this->_props["background_attachment"];
+  }
+
+
+  /**
+   * Returns the background_repeat as it is currently stored
+   *
+   * (currently anyway only for completeness.
+   * not used for further processing)
+   *
+   * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-repeat
+   * @return string
+   */
+  function get_background_repeat() {
+    return $this->_props["background_repeat"];
+  }
+
+
+  /**
+   * Returns the background as it is currently stored
+   *
+   * (currently anyway only for completeness.
+   * not used for further processing, but the individual get_background_xxx)
+   *
+   * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background
+   * @return string
+   */
+  function get_background() {
+    return $this->_props["background"];
+  }
+
+
+  /**#@+
+   * Returns the border colour as an array
+   *
+   * See {@link Style::get_color()}
+   *
+   * @link http://www.w3.org/TR/CSS21/box.html#border-color-properties
+   * @return array
+   */
+  function get_border_top_color() {
+    if ( $this->_props["border_top_color"] === "" ) {
+      //see __set and __get, on all assignments clear cache!
+      $this->_prop_cache["border_top_color"] = null;
+      $this->_props["border_top_color"] = $this->__get("color");
+    }
+    return $this->munge_color($this->_props["border_top_color"]);
+  }
+
+  function get_border_right_color() {
+    if ( $this->_props["border_right_color"] === "" ) {
+      //see __set and __get, on all assignments clear cache!
+      $this->_prop_cache["border_right_color"] = null;
+      $this->_props["border_right_color"] = $this->__get("color");
+    }
+    return $this->munge_color($this->_props["border_right_color"]);
+  }
+
+  function get_border_bottom_color() {
+    if ( $this->_props["border_bottom_color"] === "" ) {
+      //see __set and __get, on all assignments clear cache!
+      $this->_prop_cache["border_bottom_color"] = null;
+      $this->_props["border_bottom_color"] = $this->__get("color");
+    }
+    return $this->munge_color($this->_props["border_bottom_color"]);;
+  }
+
+  function get_border_left_color() {
+    if ( $this->_props["border_left_color"] === "" ) {
+      //see __set and __get, on all assignments clear cache!
+      $this->_prop_cache["border_left_color"] = null;
+      $this->_props["border_left_color"] = $this->__get("color");
+    }
+    return $this->munge_color($this->_props["border_left_color"]);
+  }
+  
+  /**#@-*/
+
+ /**#@+
+   * Returns the border width, as it is currently stored
+   *
+   * @link http://www.w3.org/TR/CSS21/box.html#border-width-properties
+   * @return float|string   
+   */
+  function get_border_top_width() {
+    $style = $this->__get("border_top_style");
+    return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_top_width"]) : 0;
+  }
+  
+  function get_border_right_width() {
+    $style = $this->__get("border_right_style");    
+    return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_right_width"]) : 0;
+  }
+
+  function get_border_bottom_width() {
+    $style = $this->__get("border_bottom_style");
+    return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_bottom_width"]) : 0;
+  }
+
+  function get_border_left_width() {
+    $style = $this->__get("border_left_style");
+    return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_left_width"]) : 0;
+  }
+  /**#@-*/
+
+  /**
+   * Return an array of all border properties.
+   *
+   * The returned array has the following structure:
+   * <code>
+   * array("top" => array("width" => [border-width],
+   *                      "style" => [border-style],
+   *                      "color" => [border-color (array)]),
+   *       "bottom" ... )
+   * </code>
+   *
+   * @return array
+   */
+  function get_border_properties() {
+    return array("top" => array("width" => $this->__get("border_top_width"),
+                                "style" => $this->__get("border_top_style"),
+                                "color" => $this->__get("border_top_color")),
+                 "bottom" => array("width" => $this->__get("border_bottom_width"),
+                                   "style" => $this->__get("border_bottom_style"),
+                                   "color" => $this->__get("border_bottom_color")),
+                 "right" => array("width" => $this->__get("border_right_width"),
+                                  "style" => $this->__get("border_right_style"),
+                                  "color" => $this->__get("border_right_color")),
+                 "left" => array("width" => $this->__get("border_left_width"),
+                                 "style" => $this->__get("border_left_style"),
+                                 "color" => $this->__get("border_left_color")));
+  }
+
+  /**
+   * Return a single border property
+   *
+   * @return mixed
+   */
+  protected function _get_border($side) {
+    $color = $this->__get("border_" . $side . "_color");
+    
+    return $this->__get("border_" . $side . "_width") . " " .
+      $this->__get("border_" . $side . "_style") . " " . $color["hex"];
+  }
+
+  /**#@+
+   * Return full border properties as a string
+   *
+   * Border properties are returned just as specified in CSS:
+   * <pre>[width] [style] [color]</pre>
+   * e.g. "1px solid blue"
+   *
+   * @link http://www.w3.org/TR/CSS21/box.html#border-shorthand-properties
+   * @return string
+   */
+  function get_border_top() { return $this->_get_border("top"); }
+  function get_border_right() { return $this->_get_border("right"); }
+  function get_border_bottom() { return $this->_get_border("bottom"); }
+  function get_border_left() { return $this->_get_border("left"); }
+  /**#@-*/
+
+
+  /**
+   * Returns border spacing as an array
+   *
+   * The array has the format (h_space,v_space)
+   *
+   * @link http://www.w3.org/TR/CSS21/tables.html#propdef-border-spacing
+   * @return array
+   */
+  function get_border_spacing() {
+    return explode(" ", $this->_props["border_spacing"]);
+  }
+
+/*==============================*/
+
+  /*
+   !important attribute
+   For basic functionality of the !important attribute with overloading
+   of several styles of an element, changes in inherit(), merge() and _parse_properties()
+   are sufficient [helpers var $_important_props, __construct(), important_set(), important_get()]
+
+   Only for combined attributes extra treatment needed. See below.
+
+   div { border: 1px red; }
+   div { border: solid; } // Not combined! Only one occurence of same style per context
+   //
+   div { border: 1px red; }
+   div a { border: solid; } // Adding to border style ok by inheritance
+   //
+   div { border-style: solid; } // Adding to border style ok because of different styles
+   div { border: 1px red; }
+   //
+   div { border-style: solid; !important} // border: overrides, even though not !important
+   div { border: 1px dashed red; }
+   //
+   div { border: 1px red; !important }
+   div a { border-style: solid; } // Need to override because not set
+
+   Special treatment:
+   At individual property like border-top-width need to check whether overriding value is also !important.
+   Also store the !important condition for later overrides.
+   Since not known who is initiating the override, need to get passed !importan as parameter.
+   !important Paramter taken as in the original style in the css file.
+   When poperty border !important given, do not mark subsets like border_style as important. Only
+   individual properties.
+
+   Note:
+   Setting individual property directly from css with e.g. set_border_top_style() is not needed, because
+   missing set funcions handled by a generic handler __set(), including the !important.
+   Setting individual property of as sub-property is handled below.
+
+   Implementation see at _set_style_side_type()
+   Callers _set_style_sides_type(), _set_style_type, _set_style_type_important()
+
+   Related functionality for background, padding, margin, font, list_style
+  */
+
+  /* Generalized set function for individual attribute of combined style.
+   * With check for !important
+   * Applicable for background, border, padding, margin, font, list_style
+   * Note: $type has a leading underscore (or is empty), the others not.
+   */
+  protected function _set_style_side_type($style,$side,$type,$val,$important) {
+    if ( !isset($this->_important_props[$style.'_'.$side.$type]) || $important) {
+      //see __set and __get, on all assignments clear cache!
+      $this->_prop_cache[$style.'_'.$side.$type] = null;
+      if ($important) {
+        $this->_important_props[$style.'_'.$side.$type] = true;
+      }
+      $this->_props[$style.'_'.$side.$type] = $val;
+    }
+  }
+
+  protected function _set_style_sides_type($style,$top,$right,$bottom,$left,$type,$important) {
+      $this->_set_style_side_type($style,'top',$type,$top,$important);
+      $this->_set_style_side_type($style,'right',$type,$right,$important);
+      $this->_set_style_side_type($style,'bottom',$type,$bottom,$important);
+      $this->_set_style_side_type($style,'left',$type,$left,$important);
+  }
+
+  protected function _set_style_type($style,$type,$val,$important) {
+    $arr = explode(" ", $val);
+    switch (count($arr)) {
+    case 1:
+      $this->_set_style_sides_type($style,$arr[0],$arr[0],$arr[0],$arr[0],$type,$important);
+      break;
+    case 2:
+      $this->_set_style_sides_type($style,$arr[0],$arr[1],$arr[0],$arr[1],$type,$important);
+      break;
+    case 3:
+      $this->_set_style_sides_type($style,$arr[0],$arr[1],$arr[1],$arr[2],$type,$important);
+      break;
+    case 4:
+      $this->_set_style_sides_type($style,$arr[0],$arr[1],$arr[2],$arr[3],$type,$important);
+      break;
+    default:
+      break;
+    }
+    //see __set and __get, on all assignments clear cache!
+	$this->_prop_cache[$style.$type] = null;
+    $this->_props[$style.$type] = $val;
+  }
+
+  protected function _set_style_type_important($style,$type,$val) {
+    $this->_set_style_type($style,$type,$val,isset($this->_important_props[$style.$type]));
+  }
+
+  /* Anyway only called if _important matches and is assigned
+   * E.g. _set_style_side_type($style,$side,'',str_replace("none", "0px", $val),isset($this->_important_props[$style.'_'.$side]));
+   */
+  protected function _set_style_side_width_important($style,$side,$val) {
+    //see __set and __get, on all assignments clear cache!
+    $this->_prop_cache[$style.'_'.$side] = null;
+    $this->_props[$style.'_'.$side] = str_replace("none", "0px", $val);
+  }
+
+  protected function _set_style($style,$val,$important) {
+    if ( !isset($this->_important_props[$style]) || $important) {
+      if ($important) {
+        $this->_important_props[$style] = true;
+      }
+      //see __set and __get, on all assignments clear cache!
+	  $this->_prop_cache[$style] = null;
+      $this->_props[$style] = $val;
+    }
+  }
+
+  protected function _image($val) {
+    $DEBUGCSS=DEBUGCSS;
+    
+    if ( mb_strpos($val, "url") === false ) {
+      $path = "none"; //Don't resolve no image -> otherwise would prefix path and no longer recognize as none
+    }
+    else {
+      $val = preg_replace("/url\(['\"]?([^'\")]+)['\"]?\)/","\\1", trim($val));
+
+      // Resolve the url now in the context of the current stylesheet
+      $parsed_url = explode_url($val);
+      if ( $parsed_url["protocol"] == "" && $this->_stylesheet->get_protocol() == "" ) {
+        if ($parsed_url["path"]{0} == '/' || $parsed_url["path"]{0} == '\\' ) {
+          $path = $_SERVER["DOCUMENT_ROOT"].'/';
+        } else {
+          $path = $this->_stylesheet->get_base_path();
+        }
+        $path .= $parsed_url["path"] . $parsed_url["file"];
+        $path = dompdf_realpath($path);
+      } else {
+        $path = build_url($this->_stylesheet->get_protocol(),
+                          $this->_stylesheet->get_host(),
+                          $this->_stylesheet->get_base_path(),
+                          $val);
+      }
+    }
+    if ($DEBUGCSS) {
+      print "<pre>[_image\n";
+      print_r($parsed_url);
+      print $this->_stylesheet->get_protocol()."\n".$this->_stylesheet->get_base_path()."\n".$path."\n";
+      print "_image]</pre>";;
+    }
+    return $path;
+  }
+
+/*======================*/
+
+  /**
+   * Sets colour
+   *
+   * The colour parameter can be any valid CSS colour value
+   *   
+   * @link http://www.w3.org/TR/CSS21/colors.html#propdef-color
+   * @param string $colour
+   */
+  function set_color($colour) {
+    $col = $this->munge_colour($colour);
+
+    if ( is_null($col) )
+      $col = self::$_defaults["color"];
+
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["color"] = null;
+    $this->_props["color"] = $col["hex"];
+  }
+
+  /**
+   * Sets the background colour
+   *
+   * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-color
+   * @param string $colour
+   */
+  function set_background_color($colour) {
+    $col = $this->munge_colour($colour);
+    if ( is_null($col) )
+      $col = self::$_defaults["background_color"];
+
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["background_color"] = null;
+    $this->_props["background_color"] = is_array($col) ? $col["hex"] : $col;
+  }
+
+  /**
+   * Set the background image url
+   *
+   * @link http://www.w3.org/TR/CSS21/colors.html#background-properties
+   * @param string $url
+   */
+  function set_background_image($val) {
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["background_image"] = null;
+    $this->_props["background_image"] = $this->_image($val);
+  }
+
+  /**
+   * Sets the background repeat
+   *
+   * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-repeat
+   * @param string $val
+   */
+  function set_background_repeat($val) {
+    if ( is_null($val) )
+      $val = self::$_defaults["background_repeat"];
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+    $this->_prop_cache["background_repeat"] = null;
+    $this->_props["background_repeat"] = $val;
+  }
+
+  /**
+   * Sets the background attachment
+   *
+   * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-attachment
+   * @param string $val
+   */
+  function set_background_attachment($val) {
+    if ( is_null($val) )
+      $val = self::$_defaults["background_attachment"];
+
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["background_attachment"] = null;
+    $this->_props["background_attachment"] = $val;
+  }
+
+  /**
+   * Sets the background position
+   *
+   * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background-position
+   * @param string $val
+   */
+  function set_background_position($val) {
+    if ( is_null($val) )
+      $val = self::$_defaults["background_position"];
+
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["background_position"] = null;
+    $this->_props["background_position"] = $val;
+  }
+
+  /**
+   * Sets the background - combined options
+   *
+   * @link http://www.w3.org/TR/CSS21/colors.html#propdef-background
+   * @param string $val
+   */
+  function set_background($val) {
+    $col = null;
+    $pos = array();
+    $tmp = explode(" ", $val);
+    $important = isset($this->_important_props["background"]);
+    foreach($tmp as $attr) {
+	  if (mb_substr($attr, 0, 3) == "url" || $attr == "none") {
+   	    $this->_set_style("background_image", $this->_image($attr), $important);
+  	  } else if ($attr == "fixed" || $attr == "scroll") {
+   	    $this->_set_style("background_attachment", $attr, $important);
+  	  } else if ($attr == "repeat" || $attr == "repeat-x" || $attr == "repeat-y" || $attr == "no-repeat") {
+   	    $this->_set_style("background_repeat", $attr, $important);
+      } else if (($col = $this->munge_color($attr)) != null ) {
+   	    $this->_set_style("background_color", is_array($col) ? $col["hex"] : $col, $important);
+      } else {
+ 		$pos[] = $attr;
+ 	  }
+ 	}
+ 	if (count($pos)) {
+ 	  $this->_set_style("background_position",implode(' ',$pos), $important);
+ 	}
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["background"] = null;
+ 	$this->_props["background"] = $val;
+  }
+
+  /**
+   * Sets the font size
+   *
+   * $size can be any acceptable CSS size
+   *
+   * @link http://www.w3.org/TR/CSS21/fonts.html#propdef-font-size
+   * @param string|float $size
+   */
+  function set_font_size($size) {
+    $this->__font_size_calculated = false;
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["font_size"] = null;
+    $this->_props["font_size"] = $size;
+  }
+
+  /**
+   * Sets the font style
+   *
+   * combined attributes
+   * set individual attributes also, respecting !important mark
+   * exactly this order, separate by space. Multiple fonts separated by comma:
+   * font-style, font-variant, font-weight, font-size, line-height, font-family
+   *
+   * Other than with border and list, existing partial attributes should
+   * reset when starting here, even when not mentioned.
+   * If individual attribute is !important and explicite or implicite replacement is not,
+   * keep individual attribute
+   *
+   * require whitespace as delimiters for single value attributes
+   * On delimiter "/" treat first as font height, second as line height
+   * treat all remaining at the end of line as font
+   * font-style, font-variant, font-weight, font-size, line-height, font-family
+   *
+   * missing font-size and font-family might be not allowed, but accept it here and
+   * use default (medium size, enpty font name)
+   *
+   * @link http://www.w3.org/TR/CSS21/generate.html#propdef-list-style
+   * @param $val
+   */
+  function set_font($val) {
+    $this->__font_size_calculated = false;
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["font"] = null;
+ 	$this->_props["font"] = $val;
+
+    $important = isset($this->_important_props["font"]);
+
+	if ( preg_match("/^(italic|oblique|normal)\s*(.*)$/i",$val,$match) ) {
+		$this->_set_style("font_style", $match[1], $important);
+		$val = $match[2];
+	} else {
+		$this->_set_style("font_style", self::$_defaults["font_style"], $important);
+	}
+
+	if ( preg_match("/^(small-caps|normal)\s*(.*)$/i",$val,$match) ) {
+		$this->_set_style("font_variant", $match[1], $important);
+		$val = $match[2];
+	} else {
+		$this->_set_style("font_variant", self::$_defaults["font_variant"], $important);
+	}
+
+    //matching numeric value followed by unit -> this is indeed a subsequent font size. Skip!
+	if ( preg_match("/^(bold|bolder|lighter|100|200|300|400|500|600|700|800|900|normal)\s*(.*)$/i",$val,$match) &&
+         !preg_match("/^(?:pt|px|pc|em|ex|in|cm|mm|%)/",$match[2])
+	   ) {
+		$this->_set_style("font_weight", $match[1], $important);
+		$val = $match[2];
+	} else {
+		$this->_set_style("font_weight", self::$_defaults["font_weight"], $important);
+	}
+
+	if ( preg_match("/^(xx-small|x-small|small|medium|large|x-large|xx-large|smaller|larger|\d+\s*(?:pt|px|pc|em|ex|in|cm|mm|%))\s*(.*)$/i",$val,$match) ) {
+		$this->_set_style("font_size", $match[1], $important);
+		$val = $match[2];
+        if (preg_match("/^\/\s*(\d+\s*(?:pt|px|pc|em|ex|in|cm|mm|%))\s*(.*)$/i",$val,$match) ) {
+			$this->_set_style("line_height", $match[1], $important);
+			$val = $match[2];
+        } else {
+			$this->_set_style("line_height", self::$_defaults["line_height"], $important);
+        }
+	} else {
+ 		$this->_set_style("font_size", self::$_defaults["font_size"], $important);
+		$this->_set_style("line_height", self::$_defaults["line_height"], $important);
+	}
+
+	if(strlen($val) != 0) {
+	  $this->_set_style("font_family", $val, $important);
+	} else {
+	  $this->_set_style("font_family", self::$_defaults["font_family"], $important);
+	}
+  }
+
+  /**#@+
+   * Sets page break properties
+   *
+   * @link http://www.w3.org/TR/CSS21/page.html#page-breaks
+   * @param string $break
+   */
+  function set_page_break_before($break) {
+    if ($break === "left" || $break === "right")
+      $break = "always";
+
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["page_break_before"] = null;
+    $this->_props["page_break_before"] = $break;
+  }
+
+  function set_page_break_after($break) {
+    if ($break === "left" || $break === "right")
+      $break = "always";
+
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["page_break_after"] = null;
+    $this->_props["page_break_after"] = $break;
+  }
+  /**#@-*/
+    
+  //........................................................................
+
+  /**#@+
+   * Sets the margin size
+   *
+   * @link http://www.w3.org/TR/CSS21/box.html#margin-properties
+   * @param $val
+   */
+  function set_margin_top($val) {
+    $this->_set_style_side_width_important('margin','top',$val);
+  }
+
+  function set_margin_right($val) {
+    $this->_set_style_side_width_important('margin','right',$val);
+  }
+
+  function set_margin_bottom($val) {
+    $this->_set_style_side_width_important('margin','bottom',$val);
+  }
+
+  function set_margin_left($val) {
+    $this->_set_style_side_width_important('margin','left',$val);
+  }
+  
+  function set_margin($val) {
+    $val = str_replace("none", "0px", $val);
+    $this->_set_style_type_important('margin','',$val);
+  }
+  /**#@-*/
+
+  /**#@+
+   * Sets the padding size
+   *
+   * @link http://www.w3.org/TR/CSS21/box.html#padding-properties
+   * @param $val
+   */
+  function set_padding_top($val) {
+    $this->_set_style_side_width_important('padding','top',$val);
+  }
+
+  function set_padding_right($val) {
+    $this->_set_style_side_width_important('padding','right',$val);
+  }
+
+  function set_padding_bottom($val) {
+    $this->_set_style_side_width_important('padding','bottom',$val);
+  }
+
+  function set_padding_left($val) {
+    $this->_set_style_side_width_important('padding','left',$val);
+  }
+
+  function set_padding($val) {
+    $val = str_replace("none", "0px", $val);
+    $this->_set_style_type_important('padding','',$val);
+  }
+  /**#@-*/
+
+  /**
+   * Sets a single border
+   *
+   * @param string $side
+   * @param string $border_spec  ([width] [style] [color])
+   */
+  protected function _set_border($side, $border_spec, $important) {
+    $border_spec = str_replace(",", " ", $border_spec);
+    $arr = explode(" ", $border_spec);
+
+    // FIXME: handle partial values
+ 
+    //For consistency of individal and combined properties, and with ie8 and firefox3
+    //reset all attributes, even if only partially given   
+    $this->_set_style_side_type('border',$side,'_style',self::$_defaults['border_'.$side.'_style'],$important);
+    $this->_set_style_side_type('border',$side,'_width',self::$_defaults['border_'.$side.'_width'],$important);
+    $this->_set_style_side_type('border',$side,'_color',self::$_defaults['border_'.$side.'_color'],$important);
+
+    foreach ($arr as $value) {
+      $value = trim($value);
+      if ( in_array($value, self::$BORDER_STYLES) ) {
+        $this->_set_style_side_type('border',$side,'_style',$value,$important);
+
+      } else if ( preg_match("/[.0-9]+(?:px|pt|pc|em|ex|%|in|mm|cm)|(?:thin|medium|thick)/", $value ) ) {
+        $this->_set_style_side_type('border',$side,'_width',$value,$important);
+
+      } else {
+        // must be colour
+        $this->_set_style_side_type('border',$side,'_color',$value,$important);
+      }
+    }
+
+    //see __set and __get, on all assignments clear cache!
+	$this->_prop_cache['border_'.$side] = null;
+    $this->_props['border_'.$side] = $border_spec;
+  }
+
+  /**#@+
+   * Sets the border styles
+   *
+   * @link http://www.w3.org/TR/CSS21/box.html#border-properties
+   * @param string $val
+   */
+  function set_border_top($val) { $this->_set_border("top", $val, isset($this->_important_props['border_top'])); }
+  function set_border_right($val) { $this->_set_border("right", $val, isset($this->_important_props['border_right'])); }
+  function set_border_bottom($val) { $this->_set_border("bottom", $val, isset($this->_important_props['border_bottom'])); }
+  function set_border_left($val) { $this->_set_border("left", $val, isset($this->_important_props['border_left'])); }
+
+  function set_border($val) {
+    $important = isset($this->_important_props["border"]);
+    $this->_set_border("top", $val, $important);
+    $this->_set_border("right", $val, $important);
+    $this->_set_border("bottom", $val, $important);
+    $this->_set_border("left", $val, $important);
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["border"] = null;
+    $this->_props["border"] = $val;
+  }
+
+  function set_border_width($val) {
+    $this->_set_style_type_important('border','_width',$val);
+  }
+
+  function set_border_color($val) {
+    $this->_set_style_type_important('border','_color',$val);
+  }
+
+  function set_border_style($val) {
+    $this->_set_style_type_important('border','_style',$val);
+  }
+  /**#@-*/
+
+
+  /**
+   * Sets the border spacing
+   *
+   * @link http://www.w3.org/TR/CSS21/box.html#border-properties
+   * @param float $val
+   */
+  function set_border_spacing($val) {
+
+    $arr = explode(" ", $val);
+
+    if ( count($arr) == 1 )
+      $arr[1] = $arr[0];
+
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["border_spacing"] = null;
+    $this->_props["border_spacing"] = $arr[0] . " " . $arr[1];
+  }
+
+  /**
+   * Sets the list style image
+   *
+   * @link http://www.w3.org/TR/CSS21/generate.html#propdef-list-style-image
+   * @param $val
+   */
+  function set_list_style_image($val) {
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["list_style_image"] = null;
+    $this->_props["list_style_image"] = $this->_image($val);
+  }
+
+  /**
+   * Sets the list style
+   *
+   * @link http://www.w3.org/TR/CSS21/generate.html#propdef-list-style
+   * @param $val
+   */
+  function set_list_style($val) {
+    $important = isset($this->_important_props["list_style"]);
+    $arr = explode(" ", str_replace(",", " ", $val));
+
+    static $types = array("disc", "circle", "square", "decimal",
+                   "decimal-leading-zero", "lower-roman",
+                   "upper-roman", "lower-greek", "lower-latin",
+                   "upper-latin", "armenian", "georgian",
+                   "lower-alpha", "upper-alpha", "hebrew",
+                   "cjk-ideographic", "hiragana", "katakana",
+                   "hiragana-iroha", "katakana-iroha", "none");
+
+    static $positions = array("inside", "outside");
+
+    foreach ($arr as $value) {
+      /* http://www.w3.org/TR/CSS21/generate.html#list-style
+       * A value of 'none' for the 'list-style' property sets both 'list-style-type' and 'list-style-image' to 'none'
+       */
+      if ($value == "none") {
+   	    $this->_set_style("list_style_type", $value, $important);
+   	    $this->_set_style("list_style_image", $value, $important);
+        continue;
+      }
+
+      //On setting or merging or inheriting list_style_image as well as list_style_type,
+      //and url exists, then url has precedence, otherwise fall back to list_style_type
+      //Firefox is wrong here (list_style_image gets overwritten on explicite list_style_type)
+      //Internet Explorer 7/8 and dompdf is right.
+       
+	  if (mb_substr($value, 0, 3) == "url") {
+   	    $this->_set_style("list_style_image", $this->_image($value), $important);
+        continue;
+      }
+
+      if ( in_array($value, $types) ) {
+   	    $this->_set_style("list_style_type", $value, $important);
+      } else if ( in_array($value, $positions) ) {
+   	    $this->_set_style("list_style_position", $value, $important);
+      }
+    }
+
+    //see __set and __get, on all assignments clear cache, not needed on direct set through __set
+	$this->_prop_cache["list_style"] = null;
+ 	$this->_props["list_style"] = $val;
+  }
+
+  /**
+   * Generate a string representation of the Style
+   *
+   * This dumps the entire property array into a string via print_r.  Useful
+   * for debugging.
+   *
+   * @return string
+   */
+ /*DEBUGCSS print: see below additional debugging util*/
+  function __toString() {
+    return print_r(array_merge(array("parent_font_size" => $this->_parent_font_size),
+                               $this->_props), true);
+  }
+
+/*DEBUGCSS*/  function debug_print()
+/*DEBUGCSS*/  {
+/*DEBUGCSS*/    print "parent_font_size:".$this->_parent_font_size . ";\n";
+/*DEBUGCSS*/    foreach($this->_props as $prop => $val ) {
+/*DEBUGCSS*/      print $prop.':'.$val;
+/*DEBUGCSS*/      if (isset($this->_important_props[$prop])) {
+/*DEBUGCSS*/      	print '!important';
+/*DEBUGCSS*/      }
+/*DEBUGCSS*/      print ";\n";
+/*DEBUGCSS*/    }
+/*DEBUGCSS*/  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/tcpdf_adapter.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/tcpdf_adapter.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/tcpdf_adapter.cls.php	(revision 2000)
@@ -0,0 +1,464 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile$
+ * Created on: 2004-08-04
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: tcpdf_adapter.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+require_once(DOMPDF_LIB_DIR . '/tcpdf/tcpdf.php');
+
+/**
+ * TCPDF PDF Rendering interface
+ *
+ * TCPDF_Adapter provides a simple, stateless interface to TCPDF.
+ *
+ * Unless otherwise mentioned, all dimensions are in points (1/72 in).
+ * The coordinate origin is in the top left corner and y values
+ * increase downwards.
+ *
+ * See {@link http://tcpdf.sourceforge.net} for more information on
+ * the underlying TCPDF class.
+ *
+ * @package dompdf
+ */
+class TCPDF_Adapter implements Canvas {
+
+  /**
+   * Dimensions of paper sizes in points
+   *
+   * @var array;
+   */
+  static public $PAPER_SIZES = array(); // Set to
+                                        // CPDF_Adapter::$PAPER_SIZES below.
+
+
+  /**
+   * Instance of the TCPDF class
+   *
+   * @var TCPDF
+   */
+  private $_pdf;
+
+  /**
+   * PDF width in points
+   *
+   * @var float
+   */
+  private $_width;
+
+  /**
+   * PDF height in points
+   *
+   * @var float
+   */
+  private $_height;
+
+  /**
+   * Last fill colour used
+   *
+   * @var array
+   */
+  private $_last_fill_color;
+
+  /**
+   * Last stroke colour used
+   *
+   * @var array
+   */
+  private $_last_stroke_color;
+
+  /**
+   * Last line width used
+   *
+   * @var float
+   */
+  private $_last_line_width;
+  
+  /**
+   * Total number of pages
+   *
+   * @var int
+   */
+  private $_page_count;
+
+  /**
+   * Text to display on every page
+   *
+   * @var array
+   */
+  private $_page_text;
+
+  /**
+   * Array of pages for accessing after initial rendering is complete
+   *
+   * @var array
+   */
+  private $_pages;
+
+  /**
+   * Class constructor
+   *
+   * @param mixed $paper The size of paper to use either a string (see {@link CPDF_Adapter::$PAPER_SIZES}) or
+   *                     an array(xmin,ymin,xmax,ymax)
+   * @param string $orientation The orientation of the document (either 'landscape' or 'portrait')
+   */
+  function __construct($paper = "letter", $orientation = "portrait") {
+   
+    if ( is_array($paper) )
+      $size = $paper;
+    else if ( isset(self::$PAPER_SIZES[mb_strtolower($paper)]) )
+      $size = self::$PAPER_SIZE[$paper];
+    else
+      $size = self::$PAPER_SIZE["letter"];
+
+    if ( mb_strtolower($orientation) == "landscape" ) {
+      $a = $size[3];
+      $size[3] = $size[2];
+      $size[2] = $a;
+    }
+
+    $this->_width = $size[2] - $size[0];
+    $this->_height = $size[3] - $size[1];
+
+    $this->_pdf = new TCPDF("P", "pt", array($this->_width, $this->_height));
+    $this->_pdf->Setcreator("DOMPDF Converter");
+
+    $this->_pdf->AddPage();
+
+    $this->_page_number = $this->_page_count = 1;
+    $this->_page_text = array();
+
+    $this->_last_fill_color     =
+      $this->_last_stroke_color =
+      $this->_last_line_width   = null;
+
+  }  
+  
+  /**
+   * Remaps y coords from 4th to 1st quadrant
+   *
+   * @param float $y
+   * @return float
+   */
+  protected function y($y) { return $this->_height - $y; }
+
+  /**
+   * Sets the stroke colour
+   *
+   * @param array $color
+   */
+  protected function _set_stroke_colour($colour) {
+    $colour[0] = round(255 * $colour[0]);
+    $colour[1] = round(255 * $colour[1]);
+    $colour[2] = round(255 * $colour[2]);
+
+    if ( is_null($this->_last_stroke_color) || $color != $this->_last_stroke_color ) {
+      $this->_pdf->SetDrawColor($color[0],$color[1],$color[2]);
+      $this->_last_stroke_color = $color;
+    }
+
+  }
+
+  /**
+   * Sets the fill colour
+   *
+   * @param array $color
+   */
+  protected function _set_fill_colour($colour) {
+    $colour[0] = round(255 * $colour[0]);
+    $colour[1] = round(255 * $colour[1]);
+    $colour[2] = round(255 * $colour[2]);
+
+    if ( is_null($this->_last_fill_color) || $color != $this->_last_fill_color ) {
+      $this->_pdf->SetDrawColor($color[0],$color[1],$color[2]);
+      $this->_last_fill_color = $color;
+    }
+
+  }
+
+  /**
+   * Return the TCPDF instance
+   *
+   * @return TCPDF
+   */
+  function get_tcpdf() { return $this->_pdf; }
+  
+  /**
+   * Returns the current page number
+   *
+   * @return int
+   */
+  function get_page_number() {
+    return $this->_page_number;
+  }
+
+  /**
+   * Returns the total number of pages
+   *
+   * @return int
+   */
+  function get_page_count() {
+    return $this->_page_count;
+  }
+
+  /**
+   * Sets the total number of pages
+   *
+   * @param int $count
+   */
+  function set_page_count($count) {
+    $this->_page_count = (int)$count;
+  }
+
+  /**
+   * Draws a line from x1,y1 to x2,y2
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   * See {@link Cpdf::setLineStyle()} for a description of the format of the
+   * $style parameter (aka dash).
+   *
+   * @param float $x1
+   * @param float $y1
+   * @param float $x2
+   * @param float $y2
+   * @param array $color
+   * @param float $width
+   * @param array $style
+   */
+  function line($x1, $y1, $x2, $y2, $color, $width, $style = null) {
+
+    if ( is_null($this->_last_line_width) || $width != $this->_last_line_width ) {
+      $this->_pdf->SetLineWidth($width);
+      $this->_last_line_width = $width;
+    }
+
+    $this->_set_stroke_colour($color);
+
+    // FIXME: ugh, need to handle different styles here
+    $this->_pdf->line($x1, $y1, $x2, $y2);
+  }
+
+  /**
+   * Draws a rectangle at x1,y1 with width w and height h
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   * See {@link Cpdf::setLineStyle()} for a description of the $style
+   * parameter (aka dash)
+   *
+   * @param float $x1
+   * @param float $y1
+   * @param float $w
+   * @param float $h
+   * @param array $color
+   * @param float $width
+   * @param array $style
+   */   
+  function rectangle($x1, $y1, $w, $h, $color, $width, $style = null) {
+
+    if ( is_null($this->_last_line_width) || $width != $this->_last_line_width ) {
+      $this->_pdf->SetLineWidth($width);
+      $this->_last_line_width = $width;
+    }
+
+    $this->_set_stroke_colour($color);
+    
+    // FIXME: ugh, need to handle styles here
+    $this->_pdf->rect($x1, $y1, $w, $h);
+    
+  }
+
+  /**
+   * Draws a filled rectangle at x1,y1 with width w and height h
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   *
+   * @param float $x1
+   * @param float $y1
+   * @param float $w
+   * @param float $h
+   * @param array $color
+   */   
+  function filled_rectangle($x1, $y1, $w, $h, $color) {
+
+    $this->_set_fill_colour($color);
+    
+    // FIXME: ugh, need to handle styles here
+    $this->_pdf->rect($x1, $y1, $w, $h, "F");
+  }
+
+  /**
+   * Draws a polygon
+   *
+   * The polygon is formed by joining all the points stored in the $points
+   * array.  $points has the following structure:
+   * <code>
+   * array(0 => x1,
+   *       1 => y1,
+   *       2 => x2,
+   *       3 => y2,
+   *       ...
+   *       );
+   * </code>
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   * See {@link Cpdf::setLineStyle()} for a description of the $style
+   * parameter (aka dash)   
+   *
+   * @param array $points
+   * @param array $color
+   * @param float $width
+   * @param array $style
+   * @param bool  $fill  Fills the polygon if true
+   */
+  function polygon($points, $color, $width = null, $style = null, $fill = false) {
+    // FIXME: FPDF sucks
+  }
+
+  /**
+   * Draws a circle at $x,$y with radius $r
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   * See {@link Cpdf::setLineStyle()} for a description of the $style
+   * parameter (aka dash)
+   *
+   * @param float $x
+   * @param float $y
+   * @param float $r
+   * @param array $color
+   * @param float $width
+   * @param array $style
+   * @param bool $fill Fills the circle if true   
+   */   
+  function circle($x, $y, $r, $color, $width = null, $style = null, $fill = false);
+
+  /**
+   * Add an image to the pdf.
+   *
+   * The image is placed at the specified x and y coordinates with the
+   * given width and height.
+   *
+   * @param string $img_url the path to the image
+   * @param string $img_type the type (e.g. extension) of the image
+   * @param float $x x position
+   * @param float $y y position
+   * @param int $w width (in pixels)
+   * @param int $h height (in pixels)
+   */
+  function image($img_url, $img_type, $x, $y, $w, $h);
+
+  /**
+   * Writes text at the specified x and y coordinates
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   *
+   * @param float $x
+   * @param float $y
+   * @param string $text the text to write
+   * @param string $font the font file to use
+   * @param float $size the font size, in points
+   * @param array $color
+   * @param float $adjust word spacing adjustment
+   */
+  function text($x, $y, $text, $font, $size, $color = array(0,0,0), $adjust = 0);
+
+  /**
+   * Add a named destination (similar to <a name="foo">...</a> in html)
+   *
+   * @param string $anchorname The name of the named destination
+   */
+  function add_named_dest($anchorname);
+
+  /**
+   * Add a link to the pdf
+   *
+   * @param string $url The url to link to
+   * @param float  $x   The x position of the link
+   * @param float  $y   The y position of the link
+   * @param float  $width   The width of the link
+   * @param float  $height   The height of the link
+   */
+  function add_link($url, $x, $y, $width, $height);
+  
+  /**
+   * Calculates text size, in points
+   *
+   * @param string $text the text to be sized
+   * @param string $font the desired font
+   * @param float  $size the desired font size
+   * @param float  $spacing word spacing, if any
+   * @return float
+   */
+  function get_text_width($text, $font, $size, $spacing = 0);
+
+  /**
+   * Calculates font height, in points
+   *
+   * @param string $font
+   * @param float $size
+   * @return float
+   */
+  function get_font_height($font, $size);
+
+  
+  /**
+   * Starts a new page
+   *
+   * Subsequent drawing operations will appear on the new page.
+   */
+  function new_page();
+
+  /**
+   * Streams the PDF directly to the browser
+   *
+   * @param string $filename the name of the PDF file
+   * @param array  $options associative array, 'Attachment' => 0 or 1, 'compress' => 1 or 0
+   */
+  function stream($filename, $options = null);
+
+  /**
+   * Returns the PDF as a string
+   *
+   * @param array  $options associative array: 'compress' => 1 or 0
+   * @return string
+   */
+  function output($options = null);
+  
+}
+    
+// Workaround for idiotic limitation on statics...
+PDFLib_Adapter::$PAPER_SIZES = CPDF_Adapter::$PAPER_SIZES;
+?>
Index: /trunk/filemanager/tp/dompdf/include/table_cell_positioner.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/table_cell_positioner.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/table_cell_positioner.cls.php	(revision 2000)
@@ -0,0 +1,62 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: table_cell_positioner.cls.php,v $
+ * Created on: 2004-06-08
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: table_cell_positioner.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Positions table cells
+ *
+ * @access private
+ * @package dompdf
+ */
+class Table_Cell_Positioner extends Positioner {
+
+  function __construct(Frame_Decorator $frame) { parent::__construct($frame); }
+  
+  //........................................................................
+
+  function position() {
+
+    $table = Table_Frame_Decorator::find_parent_table($this->_frame);
+    $cellmap = $table->get_cellmap();
+    $this->_frame->set_position($cellmap->get_frame_position($this->_frame));
+
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/table_cell_frame_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/table_cell_frame_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/table_cell_frame_decorator.cls.php	(revision 2000)
@@ -0,0 +1,136 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: table_cell_frame_decorator.cls.php,v $
+ * Created on: 2004-07-29
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: table_cell_frame_decorator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Decorates table cells for layout
+ *
+ * @access private
+ * @package dompdf
+ */
+class Table_Cell_Frame_Decorator extends Block_Frame_Decorator {
+  
+  protected $_resolved_borders;
+  protected $_content_height;
+  
+  //........................................................................
+
+  function __construct(Frame $frame, DOMPDF $dompdf) {
+    parent::__construct($frame, $dompdf);
+    $this->_resolved_borders = array();
+    $this->_content_height = 0;    
+  }
+
+  //........................................................................
+
+  function reset() {
+    parent::reset();
+    $this->_resolved_borders = array();
+    $this->_content_height = 0;
+    $this->_frame->reset();    
+  }
+  
+  function get_content_height() {
+    return $this->_content_height;
+  }
+
+  function set_content_height($height) {
+    $this->_content_height = $height;
+  }
+  
+  function set_cell_height($height) {
+    $style = $this->get_style();
+    $v_space = $style->length_in_pt(array($style->margin_top,
+                                          $style->padding_top,
+                                          $style->border_top_width,
+                                          $style->border_bottom_width,
+                                          $style->padding_bottom,
+                                          $style->margin_bottom),
+                                    $style->width);
+
+    $new_height = $height - $v_space;    
+    $style->height = $new_height;
+
+    if ( $new_height > $this->_content_height ) {
+      // Adjust our vertical alignment
+      $valign = $style->vertical_align;
+
+      switch ($valign) {
+
+      default:
+      case "baseline":
+        // FIXME: this isn't right
+        
+      case "top":
+        // Don't need to do anything
+        return;
+
+      case "middle":
+        $delta = ($new_height - $this->_content_height) / 2;
+        break;
+
+      case "bottom":
+        $delta = $new_height - $this->_content_height;
+        break;
+
+      }
+   
+      // Move our children
+      foreach ( $this->get_lines() as $i => $line ) {
+        foreach ( $line["frames"] as $frame )
+          $frame->set_position( null, $frame->get_position("y") + $delta );
+      }
+   }
+        
+  }
+
+  function set_resolved_border($side, $border_spec) {    
+    $this->_resolved_borders[$side] = $border_spec;
+  }
+
+  //........................................................................
+
+  function get_resolved_border($side) {
+    return $this->_resolved_borders[$side];
+  }
+
+  function get_resolved_borders() { return $this->_resolved_borders; }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/inline_renderer.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/inline_renderer.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/inline_renderer.cls.php	(revision 2000)
@@ -0,0 +1,201 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: inline_renderer.cls.php,v $
+ * Created on: 2004-06-30
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: inline_renderer.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Renders inline frames
+ *
+ * @access private
+ * @package dompdf
+ */
+class Inline_Renderer extends Abstract_Renderer {
+  
+  //........................................................................
+
+  function render(Frame $frame) {
+    $style = $frame->get_style();
+
+    if ( !$frame->get_first_child() )
+      return; // No children, no service
+    
+    // Draw the left border if applicable
+    $bp = $style->get_border_properties();
+    $widths = array($style->length_in_pt($bp["top"]["width"]),
+                    $style->length_in_pt($bp["right"]["width"]),
+                    $style->length_in_pt($bp["bottom"]["width"]),
+                    $style->length_in_pt($bp["left"]["width"]));
+
+    // Draw the background & border behind each child.  To do this we need
+    // to figure out just how much space each child takes:
+    list($x, $y) = $frame->get_first_child()->get_position();
+    $w = null;
+    $h = 0;
+//     $x += $widths[3];
+//     $y += $widths[0];
+
+    $first_row = true;
+
+    foreach ($frame->get_children() as $child) {
+      list($child_x, $child_y, $child_w, $child_h) = $child->get_padding_box();
+      $child_h += $widths[2];
+      
+      if ( !is_null($w) && $child_x < $x + $w ) {
+        //This branch seems to be supposed to being called on the first part
+        //of an inline html element, and the part after the if clause for the
+        //parts after a line break.
+        //But because $w initially mostly is 0, and gets updated only on the next
+        //round, this seem to be never executed and the common close always.
+
+        // The next child is on another line.  Draw the background &
+        // borders on this line.
+
+        // Background:
+        if ( ($bg = $style->background_color) !== "transparent" )
+          $this->_canvas->filled_rectangle( $x, $y, $w, $h, $style->background_color);
+
+        if ( ($url = $style->background_image) && $url !== "none" ) {
+          $this->_background_image($url, $x, $y, $w, $h, $style);
+        }
+
+        // If this is the first row, draw the left border
+        if ( $first_row ) {
+
+          if ( $bp["left"]["style"] != "none" && $bp["left"]["width"] > 0 ) {
+            $method = "_border_" . $bp["left"]["style"];            
+            $this->$method($x, $y, $h + $widths[0] + $widths[2], $bp["left"]["color"], $widths, "left");
+          }
+          $first_row = false;
+        }
+
+        // Draw the top & bottom borders
+        if ( $bp["top"]["style"] != "none" && $bp["top"]["width"] > 0 ) {
+          $method = "_border_" . $bp["top"]["style"];
+          $this->$method($x, $y, $w + $widths[1] + $widths[3], $bp["top"]["color"], $widths, "top");
+        }
+        
+        if ( $bp["bottom"]["style"] != "none" && $bp["bottom"]["width"] > 0 ) {
+          $method = "_border_" . $bp["bottom"]["style"];
+          $this->$method($x, $y + $h + $widths[0] + $widths[2], $w + $widths[1] + $widths[3], $bp["bottom"]["color"], $widths, "bottom");
+        }
+
+        // Handle anchors & links
+        if ( $frame->get_node()->nodeName == "a" ) {
+                    
+          if ( $href = $frame->get_node()->getAttribute("href") )
+            $this->_canvas->add_link($href, $x, $y, $w, $h);
+
+        }
+
+        $x = $child_x;
+        $y = $child_y;
+        $w = $child_w;
+        $h = $child_h;
+        continue;
+      }
+
+      if ( is_null($w) )
+        $w = $child_w;
+      else
+        $w += $child_w;
+      
+      $h = max($h, $child_h);
+    }
+
+    
+    // Handle the last child
+    if ( ($bg = $style->background_color) !== "transparent" ) 
+      $this->_canvas->filled_rectangle( $x + $widths[3], $y + $widths[0], $w, $h, $style->background_color);
+
+    //On continuation lines (after line break) of inline elements, the style got copied.
+    //But a non repeatable background image should not be repeated on the next line.
+    //But removing the background image above has never an effect, and removing it below
+    //removes it always, even on the initial line.
+    //Need to handle it elsewhere, e.g. on certain ...clone()... usages.    
+    // Repeat not given: default is Style::__construct
+    // ... && (!($repeat = $style->background_repeat) || $repeat === "repeat" ...
+    //different position? $this->_background_image($url, $x, $y, $w, $h, $style);
+    if ( ($url = $style->background_image) && $url !== "none" )           
+      $this->_background_image($url, $x + $widths[3], $y + $widths[0], $w, $h, $style);
+        
+    // Add the border widths
+    $w += $widths[1] + $widths[3];
+    $h += $widths[0] + $widths[2];
+
+    // make sure the border and background start inside the left margin
+    $left_margin = $style->length_in_pt($style->margin_left);
+    $x += $left_margin;
+
+    // If this is the first row, draw the left border too
+    if ( $first_row && $bp["left"]["style"] != "none" && $widths[3] > 0 ) {
+      $method = "_border_" . $bp["left"]["style"];
+      $this->$method($x, $y, $h, $bp["left"]["color"], $widths, "left");
+    }
+    
+    // Draw the top & bottom borders
+    if ( $bp["top"]["style"] != "none" && $widths[0] > 0 ) {
+      $method = "_border_" . $bp["top"]["style"];
+      $this->$method($x, $y, $w, $bp["top"]["color"], $widths, "top");
+    }
+    
+    if ( $bp["bottom"]["style"] != "none" && $widths[2] > 0 ) {
+      $method = "_border_" . $bp["bottom"]["style"];
+      $this->$method($x, $y + $h, $w, $bp["bottom"]["color"], $widths, "bottom");
+    }
+
+    //    pre_var_dump(get_class($frame->get_next_sibling()));
+    //    $last_row = get_class($frame->get_next_sibling()) != 'Inline_Frame_Decorator';
+    // Draw the right border if this is the last row
+    if ( $bp["right"]["style"] != "none" && $widths[1] > 0 ) {
+      $method = "_border_" . $bp["right"]["style"];
+      $this->$method($x + $w, $y, $h, $bp["right"]["color"], $widths, "right");
+    }
+
+    // Handle anchors & links
+    if ( $frame->get_node()->nodeName == "a" ) {
+
+      if ( $name = $frame->get_node()->getAttribute("name") )
+        $this->_canvas->add_named_dest($name);
+
+      if ( $href = $frame->get_node()->getAttribute("href") )
+        $this->_canvas->add_link($href, $x, $y, $w, $h);
+    }
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/block_frame_reflower.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/block_frame_reflower.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/block_frame_reflower.cls.php	(revision 2000)
@@ -0,0 +1,612 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: block_frame_reflower.cls.php,v $
+ * Created on: 2004-06-17
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: block_frame_reflower.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Reflows block frames
+ *
+ * @access private
+ * @package dompdf
+ */
+class Block_Frame_Reflower extends Frame_Reflower {
+  const MIN_JUSTIFY_WIDTH = 0.80;  // (Minimum line width to justify, as
+                                   // fraction of available width)
+
+  function __construct(Block_Frame_Decorator $frame) { parent::__construct($frame); }
+
+  //........................................................................
+
+  // Calculate the ideal used value for the width property as per:
+  // http://www.w3.org/TR/CSS21/visudet.html#Computing_widths_and_margins
+
+  protected function _calculate_width($width) {
+    $style = $this->_frame->get_style();
+    $w = $this->_frame->get_containing_block("w");
+
+    $rm = $style->length_in_pt($style->margin_right, $w);
+    $lm = $style->length_in_pt($style->margin_left, $w);
+
+    $left = $style->length_in_pt($style->left, $w);
+    $right = $style->length_in_pt($style->right, $w);
+    
+    // Handle 'auto' values
+    $dims = array($style->border_left_width,
+                  $style->border_right_width,
+                  $style->padding_left,
+                  $style->padding_right,
+                  $width !== "auto" ? $width : 0,
+                  $rm !== "auto" ? $rm : 0,
+                  $lm !== "auto" ? $lm : 0);
+
+    // absolutely positioned boxes take the 'left' and 'right' properties into account
+    if ( $style->position == "absolute" || $style->position == "fixed" ) {
+      $absolute = true;
+      $dims[] = $left !== "auto" ? $left : 0;
+      $dims[] = $right !== "auto" ? $right : 0;
+    } else {
+      $absolute = false;
+    }
+
+    $sum = $style->length_in_pt($dims, $w);
+
+    // Compare to the containing block
+    $diff = $w - $sum;
+
+    if ( $diff > 0 ) {
+
+      if ( $absolute ) {
+
+        // resolve auto properties: see
+        // http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-width
+
+        if ( $width === "auto" && $left === "auto" && $right === "auto" ) {
+
+          if ( $lm === "auto" )
+            $lm = 0;
+          if ( $rm === "auto" )
+            $rm = 0;
+
+          // Technically, the width should be "shrink-to-fit" i.e. based on the
+          // preferred width of the content...  a little too costly here as a
+          // special case.  Just get the width to take up the slack:
+          $left = 0;
+          $right = 0;
+          $width = $diff;
+
+        } else if ( $width === "auto" ) {
+
+          if ( $lm === "auto" )
+            $lm = 0;
+          if ( $rm === "auto" )
+            $rm = 0;
+          if ( $left === "auto" )
+            $left = 0;
+          if ( $right === "auto" )
+            $right = 0;
+
+          $width = $diff;
+
+        } else if ( $left === "auto" ) {
+          if ( $lm === "auto" )
+            $lm = 0;
+          if ( $rm === "auto" )
+            $rm = 0;
+          if ( $right === "auto" )
+            $right = 0;
+
+          $left = $diff;
+
+        } else if ( $right === "auto" ) {
+
+          if ( $lm === "auto" )
+            $lm = 0;
+          if ( $rm === "auto" )
+            $rm = 0;
+
+          $right = $diff;
+        }
+
+      } else {
+
+        // Find auto properties and get them to take up the slack
+        if ( $width === "auto" )
+          $width = $diff;
+
+        else if ( $lm === "auto" && $rm === "auto" )
+          $lm = $rm = round($diff / 2);
+
+        else if ( $lm === "auto" )
+          $lm = $diff;
+
+        else if ( $rm === "auto" )
+          $rm = $diff;
+      }
+
+    } else if ($diff < 0) {
+
+      // We are over constrained--set margin-right to the difference
+      $rm = $diff;
+
+    }
+
+    $ret = array("width"=> $width, "margin_left" => $lm, "margin_right" => $rm, "left" => $left, "right" => $right);
+
+    return $ret;
+  }
+
+  // Call the above function, but resolve max/min widths
+  protected function _calculate_restricted_width() {
+    $style = $this->_frame->get_style();
+    $cb = $this->_frame->get_containing_block();
+
+    if ( !isset($cb["w"]) )
+      throw new DOMPDF_Exception("Box property calculation requires containing block width");
+
+    // Treat width 100% as auto
+    if ( $style->width === "100%" )
+      $width = "auto";
+    else
+      $width = $style->length_in_pt($style->width, $cb["w"]);
+
+    extract($this->_calculate_width($width));
+
+    // Handle min/max width
+    $min_width = $style->length_in_pt($style->min_width, $cb["w"]);
+    $max_width = $style->length_in_pt($style->max_width, $cb["w"]);
+
+    if ( $max_width !== "none" && $min_width > $max_width)
+      // Swap 'em
+      list($max_width, $min_width) = array($min_width, $max_width);
+
+    if ( $max_width !== "none" && $width > $max_width )
+      extract($this->_calculate_width($max_width));
+
+    if ( $width < $min_width )
+      extract($this->_calculate_width($min_width));
+
+    return array($width, $margin_left, $margin_right, $left, $right);
+
+  }
+
+  //........................................................................
+
+  // Determine the unrestricted height of content within the block
+  protected function _calculate_content_height() {
+
+    // Calculate the actual height
+    $height = 0;
+    
+    // Add the height of all lines
+    foreach ($this->_frame->get_lines() as $line)
+      $height += $line["h"];
+
+    return $height;
+
+  }
+
+  // Determine the frame's restricted height
+  protected function _calculate_restricted_height() {
+    $style = $this->_frame->get_style();
+    $content_height = $this->_calculate_content_height();
+    $cb = $this->_frame->get_containing_block();
+
+    $height = $style->length_in_pt($style->height, $cb["h"]);
+
+    $top = $style->length_in_pt($style->top, $cb["h"]);
+    $bottom = $style->length_in_pt($style->bottom, $cb["h"]);
+
+    $margin_top = $style->length_in_pt($style->margin_top, $cb["h"]);
+    $margin_bottom = $style->length_in_pt($style->margin_bottom, $cb["h"]);
+
+    if ( $style->position == "absolute" || $style->position == "fixed" ) {
+
+      // see http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height
+
+      $dims = array($top !== "auto" ? $top : 0,
+                    $style->margin_top !== "auto" ? $style->margin_top : 0,
+                    $style->padding_top,
+                    $style->border_top_width,
+                    $height !== "height" ? $height : 0,
+                    $style->border_bottom_width,
+                    $style->padding_bottom,
+                    $style->margin_bottom !== "auto" ? $style->margin_bottom : 0,
+                    $bottom !== "auto" ? $bottom : 0);
+
+      $sum = $style->length_in_pt($dims, $cb["h"]);
+
+      $diff = $cb["h"] - $sum; 
+
+      if ( $diff > 0 ) {
+
+        if ( $height === "auto" && $top === "auto" && $bottom === "auto" ) {
+
+          if ( $margin_top === "auto" ) 
+            $margin_top = 0;
+          if ( $margin_bottom === "auto" )
+            $margin_bottom = 0;
+
+          $height = $diff;
+
+        } else if ( $height === "auto" && $top === "auto" ) {
+
+          if ( $margin_top === "auto" ) 
+            $margin_top = 0;
+          if ( $margin_bottom === "auto" )
+            $margin_bottom = 0;
+
+          $height = $content_height;
+          $top = $diff - $content_height;
+
+        } else if ( $height === "auto" && $bottom === "auto" ) {
+
+          if ( $margin_top === "auto" ) 
+            $margin_top = 0;
+          if ( $margin_bottom === "auto" )
+            $margin_bottom = 0;
+
+          $height = $content_height;
+          $bottom = $diff - $content_height;
+
+        } else if ( $top === "auto" && $bottom === "auto" ) {
+
+          if ( $margin_top === "auto" ) 
+            $margin_top = 0;
+          if ( $margin_bottom === "auto" )
+            $margin_bottom = 0;
+
+          $bottom = $diff;
+
+        } else if ( $top === "auto" ) {
+
+          if ( $margin_top === "auto" ) 
+            $margin_top = 0;
+          if ( $margin_bottom === "auto" )
+            $margin_bottom = 0;
+
+          $top = $diff;
+
+        } else if ( $height === "auto" ) {
+
+          if ( $margin_top === "auto" ) 
+            $margin_top = 0;
+          if ( $margin_bottom === "auto" )
+            $margin_bottom = 0;
+
+          $height = $diff;
+
+        } else if ( $bottom === "auto" ) {
+
+          if ( $margin_top === "auto" ) 
+            $margin_top = 0;
+          if ( $margin_bottom === "auto" )
+            $margin_bottom = 0;
+
+          $bottom = $diff;
+
+        } else {
+
+          if ( $style->overflow === "visible" ) {
+
+            // set all autos to zero
+            if ( $margin_top === "auto" ) 
+              $margin_top = 0;
+            if ( $margin_bottom === "auto" )
+              $margin_bottom = 0;
+            if ( $top === "auto" )
+              $top = 0;
+            if ( $bottom === "auto" )
+              $bottom = 0;
+            if ( $height === "auto" )
+              $height = $content_height;
+
+          }
+
+          // FIXME: overflow hidden
+        }
+
+      }
+
+    } else {
+
+      // Expand the height if overflow is visible
+      if ( $height == "auto" && $content_height > $height && $style->overflow === "visible" )
+        $height = $content_height;
+
+      // FIXME: this should probably be moved to a seperate function as per
+      // _calculate_restricted_width
+      
+      // Only handle min/max height if the height is independent of the frame's content
+      if ( !($style->overflow === "visible" ||
+             ($style->overflow === "hidden" && $height === "auto")) ) {
+
+        $min_height = $style->min_height;
+        $max_height = $style->max_height;
+
+        if ( isset($cb["h"]) ) {
+          $min_height = $style->length_in_pt($min_height, $cb["h"]);
+          $max_height = $style->length_in_pt($max_height, $cb["h"]);
+
+        } else if ( isset($cb["w"]) ) {
+
+          if ( mb_strpos($min_height, "%") !== false )
+            $min_height = 0;
+          else
+            $min_height = $style->length_in_pt($min_height, $cb["w"]);
+
+          if ( mb_strpos($max_height, "%") !== false )
+            $max_height = "none";
+          else
+            $max_height = $style->length_in_pt($max_height, $cb["w"]);
+        }
+
+        if ( $max_height !== "none" && $min_height > $max_height )
+          // Swap 'em
+          list($max_height, $min_height) = array($min_height, $max_height);
+
+        if ( $max_height !== "none" && $height > $max_height )
+          $height = $max_height;
+
+        if ( $height < $min_height )
+          $height = $min_height;
+      }
+
+    }
+
+    return array($height, $margin_top, $margin_bottom, $top, $bottom);
+
+  }
+
+  //........................................................................
+
+  protected function _text_align() {
+    $style = $this->_frame->get_style();
+    $w = $this->_frame->get_containing_block("w");
+    $width = $style->length_in_pt($style->width, $w);
+
+    // Adjust the justification of each of our lines.
+    // http://www.w3.org/TR/CSS21/text.html#propdef-text-align
+    switch ($style->text_align) {
+
+    default:
+    case "left":
+      return;
+
+    case "right":
+      foreach ($this->_frame->get_lines() as $line) {
+
+        // Move each child over by $dx
+        $dx = $width - $line["w"];
+        foreach($line["frames"] as $frame)
+          $frame->set_position( $frame->get_position("x") + $dx );
+
+      }
+      break;
+
+
+    case "justify":
+      foreach ($this->_frame->get_lines() as $i => $line) {
+
+        // Only set the spacing if the line is long enough.  This is really
+        // just an aesthetic choice ;)
+        if ( $line["w"] > self::MIN_JUSTIFY_WIDTH * $width ) {
+          // Set the spacing for each child
+          if ( $line["wc"] > 1 )
+            $spacing = ($width - $line["w"]) / ($line["wc"] - 1);
+          else
+            $spacing = 0;
+
+          $dx = 0;
+          foreach($line["frames"] as $frame) {
+            if ( !$frame instanceof Text_Frame_Decorator )
+              continue;
+
+            $frame->set_position( $frame->get_position("x") + $dx );
+            $frame->set_text_spacing($spacing);
+            $dx += mb_substr_count($frame->get_text(), " ") * $spacing;
+          }
+
+          // The line (should) now occupy the entire width
+          $this->_frame->set_line($i, null, $width);
+
+        }
+      }
+      break;
+
+    case "center":
+    case "centre":
+      foreach ($this->_frame->get_lines() as $i => $line) {
+        // Centre each line by moving each frame in the line by:
+        $dx = ($width - $line["w"]) / 2;
+        foreach ($line["frames"] as $frame)
+          $frame->set_position( $frame->get_position("x") + $dx );
+      }
+      break;
+    }
+
+  }
+  /**
+   * Align inline children vertically
+   */
+  function vertical_align() {
+    // Align each child vertically after each line is reflowed
+    foreach ( $this->_frame->get_lines() as $i => $line ) {
+
+      foreach ( $line["frames"] as $frame ) {
+        $style = $frame->get_style();
+
+        if ( $style->display != "inline" && $style->display != "text" )
+          continue;
+
+        $align = $style->vertical_align;
+
+        $frame_h = $frame->get_margin_height();
+
+        switch ($align) {
+
+        case "baseline":
+          $y = $line["y"] + $line["h"] - $frame_h;
+          break;
+
+        case "middle":
+          $y = $line["y"] + ($line["h"] + $frame_h) / 2;
+          break;
+
+        case "sub":
+          $y = $line["y"] + 0.9 * $line["h"];
+          break;
+
+        case "super":
+          $y = $line["y"] + 0.1 * $line["h"];
+          break;
+
+        case  "text-top":
+        case "top": // Not strictly accurate, but good enough for now
+          $y = $line["y"];
+          break;
+
+        case "text-bottom":
+        case "bottom":
+          $y = $line["y"] + $line["h"] - $frame_h;
+          break;
+        }
+
+        $x = $frame->get_position("x");
+        $frame->set_position($x, $y);
+
+      }
+    }
+  }
+
+  //........................................................................
+
+  function reflow() {
+
+    // Check if a page break is forced
+    $page = $this->_frame->get_root();
+    $page->check_forced_page_break($this->_frame);
+
+    // Bail if the page is full
+    if ( $page->is_full() )
+      return;
+
+    // Collapse margins if required
+    $this->_collapse_margins();
+
+    $style = $this->_frame->get_style();
+    $cb = $this->_frame->get_containing_block();
+
+    // Determine the constraints imposed by this frame: calculate the width
+    // of the content area:
+    list($w, $left_margin, $right_margin, $left, $right) = $this->_calculate_restricted_width();
+
+    // Store the calculated properties
+    $style->width = $w;
+    $style->margin_left = $left_margin."pt";
+    $style->margin_right = $right_margin."pt";
+    $style->left = $left ."pt";
+    $style->right = $right . "pt";
+    
+    // Update the position
+    $this->_frame->position();
+    list($x, $y) = $this->_frame->get_position();
+
+    // Adjust the first line based on the text-indent property
+    $indent = $style->length_in_pt($style->text_indent, $cb["w"]);
+    $this->_frame->increase_line_width($indent);
+
+    // Determine the content edge
+    $top = $style->length_in_pt(array($style->margin_top,
+                                      $style->padding_top,
+                                      $style->border_top_width), $cb["h"]);
+
+    $bottom = $style->length_in_pt(array($style->border_bottom_width,
+                                         $style->margin_bottom,
+                                         $style->padding_bottom), $cb["h"]);
+
+    $cb_x = $x + $left_margin +
+      $style->length_in_pt($style->border_left_width, $cb["w"]) +
+      $style->length_in_pt($style->padding_left, $cb["w"]);
+
+    $cb_y = $line_y = $y + $top;
+
+    $cb_h = ($cb["h"] + $cb["y"]) - $bottom - $cb_y;
+
+    // Set the y position of the first line in this block
+    $this->_frame->set_current_line($line_y);
+
+    // Set the containing blocks and reflow each child
+    foreach ( $this->_frame->get_children() as $child ) {
+
+      // Bail out if the page is full
+      if ( $page->is_full() )
+        break;
+      
+      $child->set_containing_block($cb_x, $cb_y, $w, $cb_h);
+      $child->reflow();
+
+      // Don't add the child to the line if a page break has occurred
+      if ( $page->check_page_break($child) )
+        break;
+
+      // If the frame is not absolutely positioned, It's okay to add the frame
+      // to the line
+      if ( $child->get_style()->position != "absolute" &&
+           $child->get_style()->position != "fixed" ) {
+        $this->_frame->add_frame_to_line( $child );
+      }
+    }
+
+    // Determine our height
+    list($height, $margin_top, $margin_bottom, $top, $bottom) = $this->_calculate_restricted_height();
+    $style->height = $height;
+    $style->margin_top = $margin_top;
+    $style->margin_bottom = $margin_bottom;
+    $style->top = $top;
+    $style->bottom = $bottom;
+
+    $this->_text_align();
+
+    $this->vertical_align();
+  }
+
+  //........................................................................
+
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/cpdf_adapter.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/cpdf_adapter.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/cpdf_adapter.cls.php	(revision 2000)
@@ -0,0 +1,902 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: cpdf_adapter.cls.php,v $
+ * Created on: 2004-08-04
+ * Modified on: 2008-01-05
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ * Portions copyright (c) 2008 - Orion Richardson <orionr@yahoo.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Orion Richardson <orionr@yahoo.com>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 0.5.1.htischer.20090507
+ * - On gif to png conversion tmp file creation, clarify tmp name and add to tmp deletion list only on success
+ * - On gif to png conversion, when available add direct from gd without tmp file, skip image load if already cached.
+ *   to safe CPU time and memory
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version dompdf_trunk_with_helmut_mods.20090524
+ * - Pass temp and fontcache folders to Cpdf, to making Cpdf independent from dompdf
+ * @version dompdf_trunk_with_helmut_mods.20090528
+ * - fix text position according to glyph baseline to match background rectangle
+ */
+
+/* $Id: cpdf_adapter.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+// FIXME: Need to sanity check inputs to this class
+require_once(DOMPDF_LIB_DIR . "/class.pdf.php");
+
+/**
+ * PDF rendering interface
+ *
+ * CPDF_Adapter provides a simple stateless interface to the stateful one
+ * provided by the Cpdf class.
+ *
+ * Unless otherwise mentioned, all dimensions are in points (1/72 in).  The
+ * coordinate origin is in the top left corner, and y values increase
+ * downwards.
+ *
+ * See {@link http://www.ros.co.nz/pdf/} for more complete documentation
+ * on the underlying {@link Cpdf} class.
+ *
+ * @package dompdf
+ */
+class CPDF_Adapter implements Canvas {
+
+  /**
+   * Dimensions of paper sizes in points
+   *
+   * @var array;
+   */
+  static $PAPER_SIZES = array("4a0" => array(0,0,4767.87,6740.79),
+                              "2a0" => array(0,0,3370.39,4767.87),
+                              "a0" => array(0,0,2383.94,3370.39),
+                              "a1" => array(0,0,1683.78,2383.94),
+                              "a2" => array(0,0,1190.55,1683.78),
+                              "a3" => array(0,0,841.89,1190.55),
+                              "a4" => array(0,0,595.28,841.89),
+                              "a5" => array(0,0,419.53,595.28),
+                              "a6" => array(0,0,297.64,419.53),
+                              "a7" => array(0,0,209.76,297.64),
+                              "a8" => array(0,0,147.40,209.76),
+                              "a9" => array(0,0,104.88,147.40),
+                              "a10" => array(0,0,73.70,104.88),
+                              "b0" => array(0,0,2834.65,4008.19),
+                              "b1" => array(0,0,2004.09,2834.65),
+                              "b2" => array(0,0,1417.32,2004.09),
+                              "b3" => array(0,0,1000.63,1417.32),
+                              "b4" => array(0,0,708.66,1000.63),
+                              "b5" => array(0,0,498.90,708.66),
+                              "b6" => array(0,0,354.33,498.90),
+                              "b7" => array(0,0,249.45,354.33),
+                              "b8" => array(0,0,175.75,249.45),
+                              "b9" => array(0,0,124.72,175.75),
+                              "b10" => array(0,0,87.87,124.72),
+                              "c0" => array(0,0,2599.37,3676.54),
+                              "c1" => array(0,0,1836.85,2599.37),
+                              "c2" => array(0,0,1298.27,1836.85),
+                              "c3" => array(0,0,918.43,1298.27),
+                              "c4" => array(0,0,649.13,918.43),
+                              "c5" => array(0,0,459.21,649.13),
+                              "c6" => array(0,0,323.15,459.21),
+                              "c7" => array(0,0,229.61,323.15),
+                              "c8" => array(0,0,161.57,229.61),
+                              "c9" => array(0,0,113.39,161.57),
+                              "c10" => array(0,0,79.37,113.39),
+                              "ra0" => array(0,0,2437.80,3458.27),
+                              "ra1" => array(0,0,1729.13,2437.80),
+                              "ra2" => array(0,0,1218.90,1729.13),
+                              "ra3" => array(0,0,864.57,1218.90),
+                              "ra4" => array(0,0,609.45,864.57),
+                              "sra0" => array(0,0,2551.18,3628.35),
+                              "sra1" => array(0,0,1814.17,2551.18),
+                              "sra2" => array(0,0,1275.59,1814.17),
+                              "sra3" => array(0,0,907.09,1275.59),
+                              "sra4" => array(0,0,637.80,907.09),
+                              "letter" => array(0,0,612.00,792.00),
+                              "legal" => array(0,0,612.00,1008.00),
+                              "ledger" => array(0,0,1224.00, 792.00),
+                              "tabloid" => array(0,0,792.00, 1224.00),
+                              "executive" => array(0,0,521.86,756.00),
+                              "folio" => array(0,0,612.00,936.00),
+                              "commerical #10 envelope" => array(0,0,684,297),
+                              "catalog #10 1/2 envelope" => array(0,0,648,864),
+                              "8.5x11" => array(0,0,612.00,792.00),
+                              "8.5x14" => array(0,0,612.00,1008.0),
+                              "11x17"  => array(0,0,792.00, 1224.00));
+
+
+  /**
+   * Instance of Cpdf class
+   *
+   * @var Cpdf
+   */
+  private $_pdf;
+
+  /**
+   * PDF width, in points
+   *
+   * @var float
+   */
+  private $_width;
+
+  /**
+   * PDF height, in points
+   *
+   * @var float;
+   */
+  private $_height;
+
+  /**
+   * Current page number
+   *
+   * @var int
+   */
+  private $_page_number;
+
+  /**
+   * Total number of pages
+   *
+   * @var int
+   */
+  private $_page_count;
+
+  /**
+   * Text to display on every page
+   *
+   * @var array
+   */
+  private $_page_text;
+
+  /**
+   * Array of pages for accesing after rendering is initially complete
+   *
+   * @var array
+   */
+  private $_pages;
+
+  /**
+   * Array of temporary cached images to be deleted when processing is complete
+   *
+   * @var array
+   */
+  private $_image_cache;
+  
+  /**
+   * Class constructor
+   *
+   * @param mixed  $paper  The size of paper to use in this PDF ({@link CPDF_Adapter::$PAPER_SIZES})
+   * @param string $orientation The orienation of the document (either 'landscape' or 'portrait')
+   */
+  function __construct($paper = "letter", $orientation = "portrait") {
+
+    if ( is_array($paper) )
+      $size = $paper;
+    else if ( isset(self::$PAPER_SIZES[mb_strtolower($paper)]) )
+      $size = self::$PAPER_SIZES[mb_strtolower($paper)];
+    else
+      $size = self::$PAPER_SIZES["letter"];
+
+    if ( mb_strtolower($orientation) == "landscape" ) {
+      $a = $size[3];
+      $size[3] = $size[2];
+      $size[2] = $a;
+    }
+    
+    $this->_pdf = new Cpdf($size, DOMPDF_UNICODE_ENABLED, DOMPDF_FONT_CACHE, DOMPDF_TEMP_DIR);
+    $this->_pdf->addInfo("Creator", "dompdf");
+
+    // Silence pedantic warnings about missing TZ settings
+    if ( function_exists("date_default_timezone_get") ) {
+      $tz = @date_default_timezone_get();
+      date_default_timezone_set("UTC");
+      $this->_pdf->addInfo("CreationDate", date("Y-m-d"));
+      date_default_timezone_set($tz);
+
+    } else {
+      $this->_pdf->addInfo("CreationDate", date("Y-m-d"));
+    }
+
+    $this->_width = $size[2] - $size[0];
+    $this->_height= $size[3] - $size[1];
+    $this->_pdf->openHere('Fit');
+    
+    $this->_page_number = $this->_page_count = 1;
+    $this->_page_text = array();
+
+    $this->_pages = array($this->_pdf->getFirstPageId());
+
+    $this->_image_cache = array();
+  }
+
+  /**
+   * Class destructor
+   *
+   * Deletes all temporary image files
+   */
+  function __destruct() {
+    foreach ($this->_image_cache as $img) {
+      //debugpng
+      if (DEBUGPNG) print '[__destruct unlink '.$img.']';
+      if (!DEBUGKEEPTEMP)
+        unlink($img);
+    }
+  }
+  
+  /**
+   * Returns the Cpdf instance
+   *
+   * @return Cpdf
+   */
+  function get_cpdf() { return $this->_pdf; }
+
+  /**
+   * Add meta information to the PDF
+   *
+   * @param string $label  label of the value (Creator, Producter, etc.)
+   * @param string $value  the text to set
+   */
+  function add_info($label, $value) {
+    $this->_pdf->addInfo($label, $value);
+  }
+
+  /**
+   * Opens a new 'object'
+   *
+   * While an object is open, all drawing actions are recored in the object,
+   * as opposed to being drawn on the current page.  Objects can be added
+   * later to a specific page or to several pages.
+   *
+   * The return value is an integer ID for the new object.
+   *
+   * @see CPDF_Adapter::close_object()
+   * @see CPDF_Adapter::add_object()
+   *
+   * @return int
+   */
+  function open_object() {
+    $ret = $this->_pdf->openObject();
+    $this->_pdf->saveState();
+    return $ret;
+  }
+
+  /**
+   * Reopens an existing 'object'
+   *
+   * @see CPDF_Adapter::open_object()
+   * @param int $object  the ID of a previously opened object
+   */
+  function reopen_object($object) {
+    $this->_pdf->reopenObject($object);
+    $this->_pdf->saveState();
+  }
+
+  /**
+   * Closes the current 'object'
+   *
+   * @see CPDF_Adapter::open_object()
+   */
+  function close_object() {
+    $this->_pdf->restoreState();
+    $this->_pdf->closeObject();
+  }
+
+  /**
+   * Adds a specified 'object' to the document
+   *
+   * $object int specifying an object created with {@link
+   * CPDF_Adapter::open_object()}.  $where can be one of:
+   * - 'add' add to current page only
+   * - 'all' add to every page from the current one onwards
+   * - 'odd' add to all odd numbered pages from now on
+   * - 'even' add to all even numbered pages from now on
+   * - 'next' add the object to the next page only
+   * - 'nextodd' add to all odd numbered pages from the next one
+   * - 'nexteven' add to all even numbered pages from the next one
+   *
+   * @see Cpdf::addObject()
+   *
+   * @param int $object
+   * @param string $where
+   */
+  function add_object($object, $where = 'all') {
+    $this->_pdf->addObject($object, $where);
+  }
+
+  /**
+   * Stops the specified 'object' from appearing in the document.
+   *
+   * The object will stop being displayed on the page following the current
+   * one.
+   *
+   * @param int $object
+   */
+  function stop_object($object) {
+    $this->_pdf->stopObject($object);
+  }
+
+  /**
+   * @access private
+   */
+  function serialize_object($id) {
+    // Serialize the pdf object's current state for retrieval later
+    return $this->_pdf->serializeObject($id);
+  }
+
+  /**
+   * @access private
+   */
+  function reopen_serialized_object($obj) {
+    return $this->_pdf->restoreSerializedObject($obj);
+  }
+    
+  //........................................................................
+
+  /**
+   * Returns the PDF's width in points
+   * @return float
+   */
+  function get_width() { return $this->_width; }
+
+  /**
+   * Returns the PDF's height in points
+   * @return float
+   */
+  function get_height() { return $this->_height; }
+
+  /**
+   * Returns the current page number
+   * @return int
+   */
+  function get_page_number() { return $this->_page_number; }
+
+  /**
+   * Returns the total number of pages in the document
+   * @return int
+   */
+  function get_page_count() { return $this->_page_count; }
+
+  /**
+   * Sets the current page number
+   *
+   * @param int $num
+   */
+  function set_page_number($num) { $this->_page_number = $num; }
+
+  /**
+   * Sets the page count
+   *
+   * @param int $count
+   */
+  function set_page_count($count) {  $this->_page_count = $count; }
+    
+  /**
+   * Sets the stroke colour
+   *
+   * See {@link Style::set_colour()} for the format of the color array.
+   * @param array $color
+   */
+  protected function _set_stroke_color($color) {
+    list($r, $g, $b) = $color;
+    $this->_pdf->setStrokeColor($r, $g, $b);
+  }
+  
+  /**
+   * Sets the fill colour
+   *
+   * See {@link Style::set_colour()} for the format of the colour array.
+   * @param array $color
+   */
+  protected function _set_fill_color($color) {
+    list($r, $g, $b) = $color;
+    $this->_pdf->setColor($r, $g, $b);
+  }
+
+  /**
+   * Sets line transparency
+   * @see Cpdf::setLineTransparency()
+   *
+   * Valid blend modes are (case-sensitive):
+   *
+   * Normal, Multiply, Screen, Overlay, Darken, Lighten,
+   * ColorDodge, ColorBurn, HardLight, SoftLight, Difference,
+   * Exclusion
+   *
+   * @param string $mode the blending mode to use
+   * @param float $opacity 0.0 fully transparent, 1.0 fully opaque
+   */
+  protected function _set_line_transparency($mode, $opacity) {
+    $this->_pdf->setLineTransparency($mode, $opacity);
+  }
+  
+  /**
+   * Sets fill transparency
+   * @see Cpdf::setFillTransparency()
+   *
+   * Valid blend modes are (case-sensitive):
+   *
+   * Normal, Multiply, Screen, Overlay, Darken, Lighten,
+   * ColorDogde, ColorBurn, HardLight, SoftLight, Difference,
+   * Exclusion
+   *
+   * @param string $mode the blending mode to use
+   * @param float $opacity 0.0 fully transparent, 1.0 fully opaque
+   */
+  protected function _set_fill_transparency($mode, $opacity) {
+    $this->_pdf->setFillTransparency($mode, $opacity);
+  }
+
+  /**
+   * Sets the line style
+   *
+   * @see Cpdf::setLineStyle()
+   *
+   * @param float width
+   * @param string cap
+   * @param string join
+   * @param array dash
+   */
+  protected function _set_line_style($width, $cap, $join, $dash) {
+    $this->_pdf->setLineStyle($width, $cap, $join, $dash);
+  }
+  
+  //........................................................................
+
+  
+  /**
+   * Remaps y coords from 4th to 1st quadrant
+   *
+   * @param float $y
+   * @return float
+   */
+  protected function y($y) { return $this->_height - $y; }
+
+  // Canvas implementation
+
+  function line($x1, $y1, $x2, $y2, $color, $width, $style = array(),
+                $blend = "Normal", $opacity = 1.0) {
+    //pre_r(compact("x1", "y1", "x2", "y2", "color", "width", "style"));
+
+    $this->_set_stroke_color($color);
+    $this->_set_line_style($width, "butt", "", $style);
+    $this->_set_line_transparency($blend, $opacity);
+    
+    $this->_pdf->line($x1, $this->y($y1),
+                      $x2, $this->y($y2));
+  }
+                              
+  //........................................................................
+
+  /**
+   * Convert a GIF image to a PNG image
+   *
+   * @return string The url of the newly converted image
+   */
+  protected function _convert_gif_to_png($image_url) {
+    
+    if ( !function_exists("imagecreatefromgif") ) {
+      throw new DOMPDF_Exception("Function imagecreatefromgif() not found.  Cannot convert gif image: $image_url.  Please install the image PHP extension.");
+    }
+
+    $old_err = set_error_handler("record_warnings");
+    $im = imagecreatefromgif($image_url);
+
+    if ( $im ) {
+      imageinterlace($im, 0);
+
+      $filename = tempnam(DOMPDF_TEMP_DIR, "gifdompdf_img_").'.png';
+      $this->_image_cache[] = $filename;
+
+      imagepng($im, $filename);
+
+    } else {
+      $filename = DOMPDF_LIB_DIR . "/res/broken_image.png";
+
+    }
+
+    restore_error_handler();
+
+    return $filename;
+    
+  }
+
+  function rectangle($x1, $y1, $w, $h, $color, $width, $style = array(),
+                     $blend = "Normal", $opacity = 1.0) {
+
+    $this->_set_stroke_color($color);
+    $this->_set_line_style($width, "square", "miter", $style);
+    $this->_set_line_transparency($blend, $opacity);
+    
+    $this->_pdf->rectangle($x1, $this->y($y1) - $h, $w, $h);
+  }
+
+  //........................................................................
+  
+  function filled_rectangle($x1, $y1, $w, $h, $color, $blend = "Normal", $opacity = 1.0) {
+
+    $this->_set_fill_color($color);
+    $this->_set_line_style(1, "square", "miter", array());
+    $this->_set_line_transparency($blend, $opacity);
+    $this->_set_fill_transparency($blend, $opacity);
+    
+    $this->_pdf->filledRectangle($x1, $this->y($y1) - $h, $w, $h);
+  }
+
+  //........................................................................
+
+  function polygon($points, $color, $width = null, $style = array(),
+                   $fill = false, $blend = "Normal", $opacity = 1.0) {
+
+    $this->_set_fill_color($color);
+    $this->_set_stroke_color($color);
+
+    $this->_set_line_transparency($blend, $opacity);
+    $this->_set_fill_transparency($blend, $opacity);
+    
+    if ( !$fill && isset($width) )
+      $this->_set_line_style($width, "square", "miter", $style);
+    
+    // Adjust y values
+    for ( $i = 1; $i < count($points); $i += 2)
+      $points[$i] = $this->y($points[$i]);
+    
+    $this->_pdf->polygon($points, count($points) / 2, $fill);
+  }
+
+  //........................................................................
+
+  function circle($x, $y, $r1, $color, $width = null, $style = null,
+                  $fill = false, $blend = "Normal", $opacity = 1.0) {
+
+    $this->_set_fill_color($color);
+    $this->_set_stroke_color($color);
+    
+    $this->_set_line_transparency($blend, $opacity);
+    $this->_set_fill_transparency($blend, $opacity);
+
+    if ( !$fill && isset($width) )
+      $this->_set_line_style($width, "round", "round", $style);
+
+    $this->_pdf->ellipse($x, $this->y($y), $r1, 0, 0, 8, 0, 360, 1, $fill);
+  }
+  
+  //........................................................................
+
+  function image($img_url, $img_type, $x, $y, $w, $h) {
+    //debugpng
+    if (DEBUGPNG) print '[image:'.$img_url.'|'.$img_type.']';
+
+    $img_type = mb_strtolower($img_type);
+
+    switch ($img_type) {
+    case "jpeg":
+    case "jpg":
+      //debugpng
+      if (DEBUGPNG)  print '!!!jpg!!!';
+
+      $this->_pdf->addJpegFromFile($img_url, $x, $this->y($y) - $h, $w, $h);
+      break;
+
+    case "png":
+      //debugpng
+      if (DEBUGPNG)  print '!!!png!!!';
+
+      $this->_pdf->addPngFromFile($img_url, $x, $this->y($y) - $h, $w, $h);
+      break;
+
+    case "gif":
+      // Convert gifs to pngs
+      //DEBUG_IMG_TEMP
+      //if (0) {
+      if ( method_exists( $this->_pdf, "addImagePng" ) ) {
+        //debugpng
+        if (DEBUGPNG)  print '!!!gif addImagePng!!!';
+
+      	//If optimization to direct png creation from gd object is available,
+        //don't create temp file, but place gd object directly into the pdf
+	    if ( method_exists( $this->_pdf, "image_iscached" ) &&
+	         $this->_pdf->image_iscached($img_url) ) {
+	      //If same image has occured already before, no need to load because
+	      //duplicate will anyway be eliminated.
+	      $img = null;
+	    } else {
+    	  $img = @imagecreatefromgif($img_url);
+    	  if (!$img) {
+      	    return;
+    	  }
+    	  imageinterlace($img, 0);
+    	}
+    	$this->_pdf->addImagePng($img_url, $x, $this->y($y) - $h, $w, $h, $img);
+      } else {
+        //debugpng
+        if (DEBUGPNG)  print '!!!gif addPngFromFile!!!';
+        $img_url = $this->_convert_gif_to_png($img_url);
+        $this->_pdf->addPngFromFile($img_url, $x, $this->y($y) - $h, $w, $h);
+      }
+      break;
+
+    default:
+      //debugpng
+      if (DEBUGPNG) print '!!!unknown!!!';
+      break;
+    }
+    
+    return;
+  }
+
+  //........................................................................
+
+  function text($x, $y, $text, $font, $size, $color = array(0,0,0),
+                $adjust = 0, $angle = 0, $blend = "Normal", $opacity = 1.0) {
+
+    list($r, $g, $b) = $color;
+    $this->_pdf->setColor($r, $g, $b);
+
+    $this->_set_line_transparency($blend, $opacity);
+    $this->_set_fill_transparency($blend, $opacity);
+    $font .= ".afm";
+    
+    $this->_pdf->selectFont($font);
+    
+    //Font_Metrics::get_font_height($font, $size) ==
+    //$this->get_font_height($font, $size) ==
+    //$this->_pdf->selectFont($font),$this->_pdf->getFontHeight($size)
+    //- FontBBoxheight+FontHeightOffset, scaled to $size, in pt
+    //$this->_pdf->getFontDescender($size)
+    //- Descender scaled to size
+    //
+    //$this->_pdf->fonts[$this->_pdf->currentFont] sizes:
+    //['FontBBox'][0] left, ['FontBBox'][1] bottom, ['FontBBox'][2] right, ['FontBBox'][3] top
+    //Maximum extent of all glyphs of the font from the baseline point
+    //['Ascender'] maximum height above baseline except accents
+    //['Descender'] maximum depth below baseline, negative number means below baseline
+    //['FontHeightOffset'] manual enhancement of .afm files to trim windows fonts. currently not used.
+    //Values are in 1/1000 pt for a font size of 1 pt
+    //
+    //['FontBBox'][1] should be close to ['Descender']
+    //['FontBBox'][3] should be close to ['Ascender']+Accents
+    //in practice, FontBBox values are a little bigger
+    //
+    //The text position is referenced to the baseline, not to the lower corner of the FontBBox,
+    //for what the left,top corner is given.
+    //FontBBox spans also the background box for the text.
+    //If the lower corner would be used as reference point, the Descents of the glyphs would
+    //hang over the background box border.
+    //Therefore compensate only the extent above the Baseline.
+    //
+    //print '<pre>['.$font.','.$size.','.$this->_pdf->getFontHeight($size).','.$this->_pdf->getFontDescender($size).','.$this->_pdf->fonts[$this->_pdf->currentFont]['FontBBox'][3].','.$this->_pdf->fonts[$this->_pdf->currentFont]['FontBBox'][1].','.$this->_pdf->fonts[$this->_pdf->currentFont]['FontHeightOffset'].','.$this->_pdf->fonts[$this->_pdf->currentFont]['Ascender'].','.$this->_pdf->fonts[$this->_pdf->currentFont]['Descender'].']</pre>';
+    //
+    //$this->_pdf->addText($x, $this->y($y) - Font_Metrics::get_font_height($font, $size), $size, $text, $angle, $adjust);
+	//$this->_pdf->addText($x, $this->y($y) - $size, $size, $text, $angle, $adjust);
+	//$this->_pdf->addText($x, $this->y($y) - $this->_pdf->getFontHeight($size)-$this->_pdf->getFontDescender($size), $size, $text, $angle, $adjust);
+	$this->_pdf->addText($x, $this->y($y) - ($this->_pdf->fonts[$this->_pdf->currentFont]['FontBBox'][3]*$size)/1000, $size, $text, $angle, $adjust);
+  }
+
+  //........................................................................
+
+  /**
+   * Add a named destination (similar to <a name="foo">...</a> in html)
+   *
+   * @param string $anchorname The name of the named destination
+   */
+  function add_named_dest($anchorname) {
+    $this->_pdf->addDestination($anchorname,"Fit");
+  }
+
+  //........................................................................
+
+  /**
+   * Add a link to the pdf
+   *
+   * @param string $url The url to link to
+   * @param float  $x   The x position of the link
+   * @param float  $y   The y position of the link
+   * @param float  $width   The width of the link
+   * @param float  $height   The height of the link
+   */
+  function add_link($url, $x, $y, $width, $height) {
+
+    $y = $this->y($y) - $height;
+
+    if ( strpos($url, '#') === 0 ) {
+      // Local link
+      $name = substr($url,1);
+      if ( $name )
+        $this->_pdf->addInternalLink($name, $x, $y, $x + $width, $y + $height);
+
+    } else {
+      $this->_pdf->addLink(rawurldecode($url), $x, $y, $x + $width, $y + $height);
+    }
+    
+  }
+
+  //........................................................................
+
+  function get_text_width($text, $font, $size, $spacing = 0) {
+    $this->_pdf->selectFont($font);
+    $ascii = utf8_decode($text);
+//     // Hack for &nbsp;
+//     $ascii = str_replace("\xA0", " ", $ascii);
+
+    return $this->_pdf->getTextWidth($size, $ascii, $spacing);
+  }
+
+  //........................................................................
+
+  function get_font_height($font, $size) {
+    $this->_pdf->selectFont($font);
+    return $this->_pdf->getFontHeight($size);
+  }
+
+  //........................................................................
+  
+  /**
+   * Writes text at the specified x and y coordinates on every page
+   *
+   * The strings '{PAGE_NUM}' and '{PAGE_COUNT}' are automatically replaced
+   * with their current values.
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   *
+   * @param float $x
+   * @param float $y
+   * @param string $text the text to write
+   * @param string $font the font file to use
+   * @param float $size the font size, in points
+   * @param array $color
+   * @param float $adjust word spacing adjustment
+   * @param float $angle angle to write the text at, measured CW starting from the x-axis
+   */
+  function page_text($x, $y, $text, $font, $size, $color = array(0,0,0),
+                     $adjust = 0, $angle = 0) {
+    $_t = "text";
+    $this->_page_text[] = compact("_t", "x", "y", "text", "font", "size", "color", "adjust", "angle");
+  }
+
+  //........................................................................
+    
+  /**
+   * Processes a script on every page
+   *
+   * The variables $pdf, $PAGE_NUM, and $PAGE_COUNT are available.
+   *
+   * This function can be used to add page numbers to all pages
+   * after the first one, for example.
+   *
+   * @param string $code the script code
+   * @param string $type the language type for script
+   */
+  function page_script($code, $type = "text/php") {
+    $_t = "script";
+    $this->_page_text[] = compact("_t", "code", "type");
+  }
+  
+  //........................................................................
+
+  function new_page() {
+    $this->_page_count++;
+
+    $ret = $this->_pdf->newPage();
+    $this->_pages[] = $ret;
+    return $ret;
+  }
+  
+  //........................................................................
+
+  /**
+   * Add text to each page after rendering is complete
+   */
+  protected function _add_page_text() {
+    
+    if ( !count($this->_page_text) )
+      return;
+
+    $page_number = 1;
+    $eval = null;
+
+    foreach ($this->_pages as $pid) {
+      $this->reopen_object($pid);
+
+      foreach ($this->_page_text as $pt) {
+        extract($pt);
+
+        switch ($_t) {
+            
+        case "text":
+        $text = str_replace(array("{PAGE_NUM}","{PAGE_COUNT}"),
+                            array($page_number, $this->_page_count), $text);
+        $this->text($x, $y, $text, $font, $size, $color, $adjust, $angle);
+          break;
+          
+        case "script":
+          if (!$eval) {
+            $eval = new PHP_Evaluator($this);
+          }
+          $eval->evaluate($code, array('PAGE_NUM' => $page_number, 'PAGE_COUNT' => $this->_page_count));
+          break;
+        }
+      }
+
+      $this->close_object();
+      $page_number++;
+    }
+  }
+  
+  /**
+   * Streams the PDF directly to the browser
+   *
+   * @param string $filename the name of the PDF file
+   * @param array  $options associative array, 'Attachment' => 0 or 1, 'compress' => 1 or 0
+   */
+  function stream($filename, $options = null) {
+    // Add page text
+    $this->_add_page_text();
+    
+    $options["Content-Disposition"] = $filename;
+    $this->_pdf->stream($options);
+  }
+
+  //........................................................................
+
+  /**
+   * Returns the PDF as a string
+   *
+   * @return string
+   */
+  function output($options = null) {
+    // Add page text
+    $this->_add_page_text();
+
+    if ( isset($options["compress"]) && $options["compress"] != 1 )
+      $debug = 1;
+    else
+      $debug = 0;
+    
+    return $this->_pdf->output($debug);
+    
+  }
+  
+  //........................................................................
+
+  /**
+   * Returns logging messages generated by the Cpdf class
+   *
+   * @return string
+   */
+  function get_messages() { return $this->_pdf->messages; }
+  
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/attribute_translator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/attribute_translator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/attribute_translator.cls.php	(revision 2000)
@@ -0,0 +1,492 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: attribute_translator.cls.php,v $
+ * Created on: 2004-09-13
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: attribute_translator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Translates HTML 4.0 attributes into CSS rules
+ *
+ * @access private
+ * @package dompdf
+ */
+class Attribute_Translator {
+  
+  // Munged data originally from
+  // http://www.w3.org/TR/REC-html40/index/attributes.html
+  //
+  // thank you var_export() :D
+  static private $__ATTRIBUTE_LOOKUP =
+    array (//'caption' => array ( 'align' => '', ),
+           'img_inner' =>  // img tags actually end up wrapping img_inner elements
+           array ('align' => array('bottom' => 'vertical-align: baseline;',
+                                   'middle' => 'vertical-align: middle;',
+                                   'top' => 'vertical-align: top;',
+                                   'left' => 'float: left;',
+                                   'right' => 'float: right;'),
+                  'border' => 'border-width: %0.2f px;',
+                  'height' => 'height: %s;',
+                  'hspace' => 'padding-left: %1$0.2f px; padding-right: %1$0.2f px;',
+                  'vspace' => 'padding-top: %1$0.2f px; padding-bottom: %1$0.2f px',
+                  'width' => 'width: %s;',
+                  ),
+           'table' => 
+           array ("align" => array(//'left' => '',
+                        'center' => 'margin-left: auto; margin-right: auto;',
+                        //'right' => ''
+                        ),
+                  'bgcolor' => 'background-color: %s;',
+                  'border' => '!set_table_border',
+                  'cellpadding' => '!set_table_cellpadding',
+                  'cellspacing' => 'border-spacing: %0.2f; border-collapse: separate;',
+                  'frame' => array('void' => 'border-style: none;',
+                                   'above' => 'border-top-style: solid;',
+                                   'below' => 'border-bottom-style: solid;',
+                                   'hsides' => 'border-left-style: solid; border-right-style: solid;',
+                                   'vsides' => 'border-top-style: solid; border-bottom-style: solid;',
+                                   'lhs' => 'border-left-style: solid;',
+                                   'rhs' => 'border-right-style: solid;',
+                                   'box' => 'border-style: solid;',
+                                   'border' => 'border-style: solid;'),
+                  'rules' => '!set_table_rules',
+                  'width' => 'width: %s;',
+                  ),
+           'hr' => 
+           array (
+                  'align' => '!set_hr_align', // Need to grab width to set 'left' & 'right' correctly
+                  'noshade' => 'border-style: solid;',
+                  'size' => 'border-width: %0.2f px;',
+                  'width' => 'width: %s;',
+                  ),
+           'div' => 
+           array (
+                  'align' => 'text-align: %s;',
+                  ),
+           'h1' => 
+           array (
+                  'align' => 'text-align: %s;',
+                  ),
+           'h2' => 
+           array (
+                  'align' => 'text-align: %s;',
+                  ),
+           'h3' => 
+           array (
+                  'align' => 'text-align: %s;',
+                  ),
+           'h4' => 
+           array (
+                  'align' => 'text-align: %s;',
+                  ),
+           'h5' => 
+           array (
+                  'align' => 'text-align: %s;',
+                  ),
+           'h6' => 
+           array (
+                  'align' => 'text-align: %s;',
+                  ),
+           'p' => 
+           array (
+                  'align' => 'text-align: %s;',
+                  ),
+//            'col' => 
+//            array (
+//                   'align' => '',
+//                   'valign' => '',
+//                   ),
+//            'colgroup' => 
+//            array (
+//                   'align' => '',
+//                   'valign' => '',
+//                   ),
+           'tbody' => 
+           array (
+                  'align' => '!set_table_row_align',
+                  'valign' => '!set_table_row_valign',
+                  ),
+           'td' => 
+           array (
+                  'align' => 'text-align: %s;',
+                  'bgcolor' => 'background-color: %s;',
+                  'height' => 'height: %s;',
+                  'nowrap' => 'white-space: nowrap;',
+                  'valign' => 'vertical-align: %s;',
+                  'width' => 'width: %s;',
+                  ),
+           'tfoot' => 
+           array (
+                  'align' => '!set_table_row_align',
+                  'valign' => '!set_table_row_valign',
+                  ),
+           'th' => 
+           array (
+                  'align' => 'text-align: %s;',
+                  'bgcolor' => 'background-color: %s;',
+                  'height' => 'height: %s;',
+                  'nowrap' => 'white-space: nowrap;',
+                  'valign' => 'vertical-align: %s;',
+                  'width' => 'width: %s;',
+                  ),
+           'thead' => 
+           array (
+                  'align' => '!set_table_row_align',
+                  'valign' => '!set_table_row_valign',
+                  ),
+           'tr' => 
+           array (
+                  'align' => '!set_table_row_align',
+                  'bgcolor' => '!set_table_row_bgcolor',
+                  'valign' => '!set_table_row_valign',
+                  ),
+           'body' => 
+           array (
+                  'background' => 'background-image: url(%s);',
+                  'bgcolor' => 'background-color: %s;',
+                  'link' => '!set_body_link',
+                  'text' => 'color: %s;',
+                  ),
+           'br' => 
+           array (
+                  'clear' => 'clear: %s;',
+                  ),
+           'basefont' => 
+           array (
+                  'color' => 'color: %s;',
+                  'face' => 'font-family: %s;',
+                  'size' => '!set_basefont_size',
+                  ),
+           'font' => 
+           array (
+                  'color' => 'color: %s;',
+                  'face' => 'font-family: %s;',
+                  'size' => '!set_font_size',
+                  ),
+           'dir' => 
+           array (
+                  'compact' => 'margin: 0.5em 0;',
+                  ),
+           'dl' => 
+           array (
+                  'compact' => 'margin: 0.5em 0;',
+                  ),
+           'menu' => 
+           array (
+                  'compact' => 'margin: 0.5em 0;',
+                  ),
+           'ol' => 
+           array (
+                  'compact' => 'margin: 0.5em 0;',
+                  'start' => 'counter-reset: -dompdf-default-counter %d;',
+                  'type' => 'list-style-type: %s;',
+                  ),
+           'ul' => 
+           array (
+                  'compact' => 'margin: 0.5em 0;',
+                  'type' => 'list-style-type: %s;',
+                  ),
+           'li' => 
+           array (
+                  'type' => 'list-style-type: %s;',
+                  'value' => 'counter-reset: -dompdf-default-counter %d;',
+                  ),
+           'pre' => 
+           array (
+                  'width' => 'width: %s;',
+                  ),
+           );
+
+  
+  static protected $_last_basefont_size = 3;
+  static protected $_font_size_lookup = array(1=>"xx-small",
+                                              2=>"x-small",
+                                              3=>"medium",
+                                              4=>"large",
+                                              5=>"x-large",
+                                              6=>"xx-large",
+                                              7=>"300%");
+  
+  
+  static function translate_attributes($frame) {
+    $node = $frame->get_node();
+    $tag = $node->tagName;
+
+    if ( !isset(self::$__ATTRIBUTE_LOOKUP[$tag]) )
+      return;
+
+    $valid_attrs = self::$__ATTRIBUTE_LOOKUP[$tag];
+    $attrs = $node->attributes;
+    $style = rtrim($node->getAttribute("style"), "; ");
+    if ( $style != "" )
+      $style .= ";";
+
+    foreach ($attrs as $attr => $attr_node ) {
+      if ( !isset($valid_attrs[$attr]) )
+        continue;
+
+      $value = $attr_node->value;
+
+      $target = $valid_attrs[$attr];
+      
+      // Look up $value in $target, if $target is an array:
+      if ( is_array($target) ) {
+
+        if ( isset($target[$value]) ) 
+          $style .= " " . self::_resolve_target($node, $target[$value], $value);
+
+      } else {
+        // otherwise use target directly
+        $style .= " " . self::_resolve_target($node, $target, $value);
+      }
+    }
+    if ( !is_null($style) ) {
+      $style = ltrim($style);
+      $node->setAttribute("style", $style);
+    }
+    
+  }
+
+  static protected function _resolve_target($node, $target, $value) {
+    if ( $target{0} == "!" ) {
+      // Function call
+      $func = "_" . mb_substr($target, 1);
+      return self::$func($node, $value);
+    }
+    
+    return $value ? sprintf($target, $value) : "";
+  }
+
+  //.....................................................................
+
+  static protected function _set_table_cellpadding($node, $value) {
+
+    $td_list = $node->getElementsByTagName("td");
+    foreach ($td_list as $td) {
+      $style = rtrim($td->getAttribute("style"), ";");
+      $style .= "; padding: $value" . "px;";
+      $style = ltrim($style, ";");
+      $td->setAttribute("style", $style);
+    }
+    return null;
+  }
+
+  static protected function _set_table_border($node, $value) {
+    $td_list = $node->getElementsByTagName("td");
+    foreach ($td_list as $td) {
+      $style = $td->getAttribute("style");
+      if ( strpos($style, "border") !== false )
+        continue;
+      $style = rtrim($style, ";");
+      $style .= "; border-width: $value" . "px; border-style: ridge;";
+      $style = ltrim($style, ";");
+      $td->setAttribute("style", $style);
+    }
+    $th_list = $node->getElementsByTagName("th");
+    foreach ($th_list as $th) {
+      $style = $th->getAttribute("style");
+      if ( strpos($style, "border") !== false )
+        continue;
+      $style = rtrim($style, ";");
+      $style .= "; border-width: $value" . "px; border-style: ridge;";
+      $style = ltrim($style, ";");
+      $th->setAttribute("style", $style);
+    }
+    
+    return null;
+  }
+
+  static protected function _set_table_cellspacing($node, $value) {
+    $style = rtrim($td->getAttribute($style), ";");
+
+    if ( $value == 0 ) 
+      $style .= "; border-collapse: collapse;";
+      
+    else 
+      $style = "; border-collapse: separate;";
+      
+    return ltrim($style, ";");
+  }
+  
+  static protected function _set_table_rules($node, $value) {
+    $new_style = "; border-collapse: collapse;";
+    switch ($value) {
+    case "none":
+      $new_style .= "border-style: none;";
+      break;
+
+    case "groups":
+      // FIXME: unsupported
+      return;
+
+    case "rows":
+      $new_style .= "border-style: solid none solid none; border-width: 1px; ";
+      break;
+
+    case "cols":
+      $new_style .= "border-style: none solid none solid; border-width: 1px; ";
+      break;
+
+    case "all":
+      $new_style .= "border-style: solid; border-width: 1px; ";
+      break;
+      
+    default:
+      // Invalid value
+      return null;
+    }
+
+    $td_list = $node->getElementsByTagName("td");
+    
+    foreach ($td_list as $td) {
+      $style = $td->getAttribute("style");
+      $style .= $new_style;
+      $td->setAttribute("style", $style);
+    }
+    return null;
+  }
+
+  static protected function _set_hr_align($node, $value) {
+
+    $style = rtrim($node->getAttribute("style"),";");
+    $width = $node->getAttribute("width");
+    if ( $width == "" )
+      $width = "100%";
+
+    $remainder = 100 - (double)rtrim($width, "% ");
+    
+    switch ($value) {
+    case "left":
+      $style .= "; margin-right: $remainder %;";
+      break;
+
+    case "right":
+      $style .= "; margin-left: $remainder %;";
+      break;
+
+    case "center":
+      $style .= "; margin-left: auto; margin-right: auto;";
+      break;
+
+    default:
+      return null;
+    }
+    return ltrim($style, "; ");
+    
+  }
+
+  static protected function _set_table_row_align($node, $value) {
+
+    $td_list = $node->getElementsByTagName("td");
+
+    foreach ($td_list as $td) {
+      $style = rtrim($td->getAttribute("style"), ";");
+      $style .= "; text-align: $value;";
+      $style = ltrim($style, "; ");
+      $td->setAttribute("style", $style);
+    }
+
+    return null;
+  }
+
+  static protected function _set_table_row_valign($node, $value) {
+
+    $td_list = $node->getElementsByTagName("td");
+
+    foreach ($td_list as $td) {
+      $style = rtrim($td->getAttribute("style"), ";");
+      $style .= "; vertical-align: $value;";
+      $style = ltrim($style, "; ");
+      $td->setAttribute("style", $style);
+    }
+
+    return null;
+  }
+
+  static protected function _set_table_row_bgcolor($node, $value) {
+
+    $td_list = $node->getElementsByTagName("td");
+
+    foreach ($td_list as $td) {
+      $style = rtrim($td->getAttribute("style"), ";");
+      $style .= "; background-color: $value;";
+      $style = ltrim($style, "; ");
+      $td->setAttribute("style", $style);
+    }
+
+    return null;
+  }
+
+  static protected function _set_body_link($node, $value) {
+
+    $a_list = $node->getElementsByTagName("a");
+
+    foreach ($a_list as $a) {
+      $style = rtrim($a->getAttribute("style"), ";");
+      $style .= "; color: $value;";
+      $style = ltrim($style, "; ");
+      $a->setAttribute("style", $style);
+    }
+
+    return null;
+  }
+
+  static protected function _set_basefont_size($node, $value) {
+    // FIXME: ? we don't actually set the font size of anything here, just
+    // the base size for later modification by <font> tags.
+    self::$_last_basefont_size = $value;
+    return null;
+  }
+  
+  static protected function _set_font_size($node, $value) {
+    $style = $node->getAttribute("style");
+
+    if ( $value{0} == "-" || $value{0} == "+" )
+      $value = self::$_last_basefont_size + (int)$value;
+
+    if ( isset(self::$_font_size_lookup[$value]) )
+      $style .= "; font-size: " . self::$_font_size_lookup[$value] . ";";
+    else
+      $style .= "; font-size: $value;";
+
+    return ltrim($style, "; ");
+    
+  }
+
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/generated_frame_reflower.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/generated_frame_reflower.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/generated_frame_reflower.cls.php	(revision 2000)
@@ -0,0 +1,208 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: generated_frame_reflower.cls.php,v $
+ * Created on: 2004-06-23
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: generated_frame_reflower.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Reflows generated content frames (decorates reflower)
+ *
+ * @access private
+ * @package dompdf
+ */
+class Generated_Frame_Reflower extends Frame_Reflower {
+
+  protected $_reflower; // Decoration target
+
+  function __construct(Frame $frame) {
+    parent::__construct($frame);
+  }
+
+  function set_reflower(Frame_Reflower $reflow) {
+    $this->_reflower = $reflow;
+  }
+
+  //........................................................................
+
+  protected function _parse_string($string) {
+    $string = trim($string, "'\"");
+    $string = str_replace(array("\\\n",'\\"',"\\'"),
+                          array("",'"',"'"), $string);
+
+    // Convert escaped hex characters into ascii characters (e.g. \A => newline)
+    $string = preg_replace_callback("/\\\\([0-9a-fA-F]{0,6})(\s)?(?(2)|(?=[^0-9a-fA-F]))/",
+                                    create_function('$matches',
+                                                    'return chr(hexdec($matches[1]));'),
+                                    $string);
+    return $string;
+  }
+
+  protected function _parse_content() {
+    $style = $this->_frame->get_style();
+
+    // Matches generated content
+    $re = "/\n".
+      "\s(counters?\\([^)]*\\))|\n".
+      "\A(counters?\\([^)]*\\))|\n".
+      "\s([\"']) ( (?:[^\"']|\\\\[\"'])+ )(?<!\\\\)\\3|\n".
+      "\A([\"']) ( (?:[^\"']|\\\\[\"'])+ )(?<!\\\\)\\5|\n" .
+      "\s([^\s\"']+)|\n" .
+      "\A([^\s\"']+)\n".
+      "/xi";
+
+    $content = $style->content;
+
+    // split on spaces, except within quotes
+    if (!preg_match_all($re, $content, $matches, PREG_SET_ORDER))
+      return;
+
+    $text = "";
+
+    foreach ($matches as $match) {
+      if ( isset($match[2]) && $match[2] !== "" )
+        $match[1] = $match[1];
+
+      if ( isset($match[6]) && $match[6] !== "" )
+        $match[4] = $match[6];
+
+      if ( isset($match[8]) && $match[8] !== "" )
+        $match[7] = $match[8];
+
+      if ( isset($match[1]) && $match[1] !== "" ) {
+        // counters?(...)
+        $match[1] = mb_strtolower(trim($match[1]));
+
+        // Handle counter() references:
+        // http://www.w3.org/TR/CSS21/generate.html#content
+
+        $i = mb_strpos($match[1], ")");
+        if ( $i === false )
+          continue;
+
+        $args = explode(",", mb_substr($match[1], 7, $i - 7));
+        $counter_id = $args[0];
+
+        if ( $match[1]{7} == "(" ) {
+          // counter(name [,style])
+
+          if ( isset($args[1]) )
+            $type = $args[1];
+          else
+            $type = null;
+
+
+          $p = $this->_frame->find_block_parent();
+
+          $text .= $p->counter_value($counter_id, $type);
+
+        } else if ( $match[1]{7} == "s" ) {
+          // counters(name, string [,style])
+          if ( isset($args[1]) )
+            $string = $this->_parse_string(trim($args[1]));
+          else
+            $string = "";
+
+          if ( isset($args[2]) )
+            $type = $args[2];
+          else
+            $type = null;
+
+          $p = $this->_frame->find_block_parent();
+          $tmp = "";
+          while ($p) {
+            $tmp = $p->counter_value($counter_id, $type) . $string . $tmp;
+            $p = $p->find_block_parent();
+          }
+          $text .= $tmp;
+
+        } else
+          // countertops?
+          continue;
+
+      } else if ( isset($match[4]) && $match[4] !== "" ) {
+        // String match
+        $text .= $this->_parse_string($match[4]);
+
+      } else if ( isset($match[7]) && $match[7] !== "" ) {
+        // Directive match
+
+        if ( $match[7] === "open-quote" ) {
+          // FIXME: do something here
+        } else if ( $match[7] === "close-quote" ) {
+          // FIXME: do something else here
+        } else if ( $match[7] === "no-open-quote" ) {
+          // FIXME:
+        } else if ( $match[7] === "no-close-quote" ) {
+          // FIXME:
+        } else if ( mb_strpos($match[7],"attr(") === 0 ) {
+
+          $i = mb_strpos($match[7],")");
+          if ( $i === false )
+            continue;
+
+          $attr = mb_substr($match[7], 6, $i - 6);
+          if ( $attr == "" )
+            continue;
+
+          $text .= $this->_frame->get_node()->getAttribute($attr);
+        } else
+          continue;
+
+      }
+    }
+
+    return $text;
+
+  }
+
+  function reflow() {
+    $style = $this->_frame->get_style();
+
+    $text = $this->_parse_content();
+    $t_node = $this->_frame->get_node()->ownerDocument->createTextNode($text);
+    $t_frame = new Frame($t_node);
+    $t_style = $style->get_stylesheet()->create_style();
+    $t_style->inherit($style);
+    $t_frame->set_style($t_style);
+
+    $this->_frame->prepend_child(Frame_Factory::decorate_frame($t_frame));
+    $this->_reflower->reflow();
+  }
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/block_renderer.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/block_renderer.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/block_renderer.cls.php	(revision 2000)
@@ -0,0 +1,116 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: block_renderer.cls.php,v $
+ * Created on: 2004-06-03
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: block_renderer.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Renders block frames
+ *
+ * @access private
+ * @package dompdf
+ */
+class Block_Renderer extends Abstract_Renderer {
+
+  //........................................................................
+
+  function render(Frame $frame) {
+    $style = $frame->get_style();
+    list($x, $y, $w, $h) = $frame->get_padding_box();
+
+    // Draw our background, border and content
+    if ( ($bg = $style->background_color) !== "transparent" ) {
+      $this->_canvas->filled_rectangle( $x, $y, $w, $h, $style->background_color );
+    }
+
+    if ( ($url = $style->background_image) && $url !== "none" )
+      $this->_background_image($url, $x, $y, $w, $h, $style);
+
+
+    $this->_render_border($frame);
+
+  }
+
+  protected function _render_border(Frame_Decorator $frame, $corner_style = "bevel") {
+    $cb = $frame->get_containing_block();
+    $style = $frame->get_style();
+
+    $bbox = $frame->get_border_box();
+    $bp = $frame->get_style()->get_border_properties();
+
+    $widths = array($style->length_in_pt($bp["top"]["width"]),
+                    $style->length_in_pt($bp["right"]["width"]),
+                    $style->length_in_pt($bp["bottom"]["width"]),
+                    $style->length_in_pt($bp["left"]["width"]));
+
+    foreach ($bp as $side => $props) {
+      list($x, $y, $w, $h) = $bbox;
+
+      if ( !$props["style"] || $props["style"] == "none" || $props["width"] <= 0 )
+        continue;
+
+
+      switch($side) {
+      case "top":
+        $length = $w;
+        break;
+
+      case "bottom":
+        $length = $w;
+        $y += $h;
+        break;
+
+      case "left":
+        $length = $h;
+        break;
+
+      case "right":
+        $length = $h;
+        $x += $w;
+        break;
+      default:
+        break;
+      }
+      $method = "_border_" . $props["style"];
+
+      $this->$method($x, $y, $length, $props["color"], $widths, $side, $corner_style);
+    }
+  }
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/stylesheet.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/stylesheet.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/stylesheet.cls.php	(revision 2000)
@@ -0,0 +1,1067 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: stylesheet.cls.php,v $
+ * Created on: 2004-06-01
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 0.5.1.htischer.20090507
+ * - Specifity of css selector chain was too small because leading whitespace
+ *   to be counted as number of elements was removed
+ * - On parsing css properties accept and register !important attribute
+ * - Add optional debug output
+ * @version 20090610
+ * - _parse_properties on style property name and value remove augmenting superflous
+ *   space for consistent parsing, in particular combined values like background
+ */
+
+/* $Id: stylesheet.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * The location of the default built-in CSS file.
+ * {@link Stylesheet::DEFAULT_STYLESHEET}
+ */
+define('__DEFAULT_STYLESHEET', DOMPDF_LIB_DIR . DIRECTORY_SEPARATOR . "res" . DIRECTORY_SEPARATOR . "html.css");
+
+/**
+ * The master stylesheet class
+ *
+ * The Stylesheet class is responsible for parsing stylesheets and style
+ * tags/attributes.  It also acts as a registry of the individual Style
+ * objects generated by the current set of loaded CSS files and style
+ * elements.
+ *
+ * @see Style
+ * @package dompdf
+ */
+class Stylesheet {
+
+
+
+  /**
+   * the location of the default built-in CSS file.
+   *
+   */
+  const DEFAULT_STYLESHEET = __DEFAULT_STYLESHEET; // Hack: can't
+                                                   // concatenate stuff in
+                                                   // const declarations,
+                                                   // but I can do this?
+  // protected members
+
+  /**
+   *  array of currently defined styles
+   *  @var array
+   */
+  private $_styles;
+
+  /**
+   * base protocol of the document being parsed
+   *
+   * Used to handle relative urls.
+   *
+   * @var string
+   */
+  private $_protocol;
+
+  /**
+   * base hostname of the document being parsed
+   *
+   * Used to handle relative urls.
+   * @var string
+   */
+  private $_base_host;
+
+  /**
+   * base path of the document being parsed
+   *
+   * Used to handle relative urls.
+   * @var string
+   */
+  private $_base_path;
+
+
+  /**
+   * the style defined by @page rules
+   *
+   * @var Style
+   */
+  private $_page_style;
+
+
+  /**
+   * list of loaded files, used to prevent recursion
+   *
+   * @var array
+   */
+  private $_loaded_files;
+
+  /**
+   * accepted CSS media types
+   * List of types and parsing rules for future extensions:
+   * http://www.w3.org/TR/REC-html40/types.html
+   *   screen, tty, tv, projection, handheld, print, braille, aural, all
+   * The following are non standard extensions for undocumented specific environments.
+   *   static, visual, bitmap, paged
+   * Note, even though the generated pdf file is intended for print output,
+   * the desired content might be different (e.g. screen or projection view of html file).
+   * Therefore allow specification of content by dompdf setting DOMPDF_DEFAULT_MEDIA_TYPE.
+   * If given, replace media "print" by DOMPDF_DEFAULT_MEDIA_TYPE.
+   * (Previous version $ACCEPTED_MEDIA_TYPES = $ACCEPTED_GENERIC_MEDIA_TYPES + $ACCEPTED_DEFAULT_MEDIA_TYPE)
+   */
+  static $ACCEPTED_DEFAULT_MEDIA_TYPE = "print";
+  static $ACCEPTED_GENERIC_MEDIA_TYPES = array("all", "static", "visual", "bitmap", "paged");
+
+  /**
+   * The class constructor.
+   *
+   * The base protocol, host & path are initialized to those of
+   * the current script.
+   */
+  function __construct() {
+    $this->_styles = array();
+    $this->_loaded_files = array();
+    list($this->_protocol, $this->_base_host, $this->_base_path) = explode_url($_SERVER["SCRIPT_FILENAME"]);
+    $this->_page_style = null;
+  }
+
+  /**
+   * Set the base protocol
+   *
+   * @param string $proto
+   */
+  function set_protocol($proto) { $this->_protocol = $proto; }
+
+  /**
+   * Set the base host
+   *
+   * @param string $host
+   */
+  function set_host($host) { $this->_base_host = $host; }
+
+  /**
+   * Set the base path
+   *
+   * @param string $path
+   */
+  function set_base_path($path) { $this->_base_path = $path; }
+
+
+  /**
+   * Return the base protocol for this stylesheet
+   *
+   * @return string
+   */
+  function get_protocol() { return $this->_protocol; }
+
+  /**
+   * Return the base host for this stylesheet
+   *
+   * @return string
+   */
+  function get_host() { return $this->_base_host; }
+
+  /**
+   * Return the base path for this stylesheet
+   *
+   * @return string
+   */
+  function get_base_path() { return $this->_base_path; }
+
+  /**
+   * add a new Style object to the stylesheet
+   *
+   * add_style() adds a new Style object to the current stylesheet, or
+   * merges a new Style with an existing one.
+   *
+   * @param string $key   the Style's selector
+   * @param Style $style  the Style to be added
+   */
+  function add_style($key, Style $style) {
+    if (!is_string($key))
+      throw new DOMPDF_Exception("CSS rule must be keyed by a string.");
+
+    if ( isset($this->_styles[$key]) )
+      $this->_styles[$key]->merge($style);
+    else
+      $this->_styles[$key] = clone $style;
+  }
+
+
+  /**
+   * lookup a specifc Style object
+   *
+   * lookup() returns the Style specified by $key, or null if the Style is
+   * not found.
+   *
+   * @param string $key   the selector of the requested Style
+   * @return Style
+   */
+  function lookup($key) {
+    if ( !isset($this->_styles[$key]) )
+      return null;
+
+    return $this->_styles[$key];
+  }
+
+  /**
+   * create a new Style object associated with this stylesheet
+   *
+   * @param Style $parent The style of this style's parent in the DOM tree
+   * @return Style
+   */
+  function create_style($parent = null) {
+    return new Style($this, $parent);
+  }
+
+
+  /**
+   * load and parse a CSS string
+   *
+   * @param string $css
+   */
+  function load_css(&$css) { $this->_parse_css($css); }
+
+
+  /**
+   * load and parse a CSS file
+   *
+   * @param string $file
+   */
+  function load_css_file($file) {
+    global $_dompdf_warnings;
+
+    // Prevent circular references
+    if ( isset($this->_loaded_files[$file]) )
+      return;
+
+    $this->_loaded_files[$file] = true;
+    $parsed_url = explode_url($file);
+
+    list($this->_protocol, $this->_base_host, $this->_base_path, $filename) = $parsed_url;
+
+    if ( !DOMPDF_ENABLE_REMOTE &&
+         ($this->_protocol != "" && $this->_protocol != "file://") ) {
+      record_warnings(E_USER_WARNING, "Remote CSS file '$file' requested, but DOMPDF_ENABLE_REMOTE is false.", __FILE__, __LINE__);
+      return;
+    }
+
+    // Fix submitted by Nick Oostveen for aliased directory support:
+    if ( $this->_protocol == "" )
+      $file = $this->_base_path . $filename;
+    else
+      $file = build_url($this->_protocol, $this->_base_host, $this->_base_path, $filename);
+
+    set_error_handler("record_warnings");
+    $css = file_get_contents($file);
+    restore_error_handler();
+
+    if ( $css == "" ) {
+      record_warnings(E_USER_WARNING, "Unable to load css file $file", __FILE__, __LINE__);;
+      return;
+    }
+
+    $this->_parse_css($css);
+
+  }
+
+  /**
+   * @link http://www.w3.org/TR/CSS21/cascade.html#specificity}
+   *
+   * @param string $selector
+   * @return int
+   */
+  private function _specificity($selector) {
+    // http://www.w3.org/TR/CSS21/cascade.html#specificity
+    // ignoring the ":" pseudoclass modifyers
+    // also ignored in _css_selector_to_xpath
+
+    $a = ($selector === "!style attribute") ? 1 : 0;
+
+    $b = min(mb_substr_count($selector, "#"), 255);
+
+    $c = min(mb_substr_count($selector, ".") +
+             mb_substr_count($selector, ">") +
+             mb_substr_count($selector, "+"), 255);
+
+    $d = min(mb_substr_count($selector, " "), 255);
+
+    //If a normal element name is at the begining of the string,
+    //a leading whitespace might have been removed on whitespace collapsing and removal
+    //therefore there might be one whitespace less as selected element names
+    //this can lead to a too small specificity
+    //see _css_selector_to_xpath
+
+    if ( !in_array($selector{0}, array(" ", ">", ".", "#", "+", ":", "[")) ) {
+    	$d++;
+    }
+
+    if (DEBUGCSS) {
+      /*DEBUGCSS*/	print "<pre>\n";
+      /*DEBUGCSS*/	printf("_specificity(): 0x%08x \"%s\"\n", ($a << 24) | ($b << 16) | ($c << 8) | ($d), $selector);
+      /*DEBUGCSS*/	print "</pre>";
+    }
+
+    return ($a << 24) | ($b << 16) | ($c << 8) | ($d);
+  }
+
+
+  /**
+   * converts a CSS selector to an XPath query.
+   *
+   * @param string $selector
+   * @return string
+   */
+  private function _css_selector_to_xpath($selector) {
+
+    // Collapse white space and strip whitespace around delimiters
+//     $search = array("/\\s+/", "/\\s+([.>#+:])\\s+/");
+//     $replace = array(" ", "\\1");
+//     $selector = preg_replace($search, $replace, trim($selector));
+
+    // Initial query (non-absolute)
+    $query = "//";
+
+    // Parse the selector
+    //$s = preg_split("/([ :>.#+])/", $selector, -1, PREG_SPLIT_DELIM_CAPTURE);
+
+    $delimiters = array(" ", ">", ".", "#", "+", ":", "[");
+
+    // Add an implicit space at the beginning of the selector if there is no
+    // delimiter there already.
+    if ( !in_array($selector{0}, $delimiters) )
+      $selector = " $selector";
+
+    $tok = "";
+    $len = mb_strlen($selector);
+    $i = 0;
+
+    while ( $i < $len ) {
+
+      $s = $selector{$i};
+      $i++;
+
+      // Eat characters up to the next delimiter
+      $tok = "";
+
+      while ($i < $len) {
+        if ( in_array($selector{$i}, $delimiters) )
+          break;
+        $tok .= $selector{$i++};
+      }
+
+      switch ($s) {
+
+      case " ":
+      case ">":
+        // All elements matching the next token that are direct children of
+        // the current token
+        $expr = $s == " " ? "descendant" : "child";
+
+        if ( mb_substr($query, -1, 1) != "/" )
+          $query .= "/";
+
+        if ( !$tok )
+          $tok = "*";
+
+        $query .= "$expr::$tok";
+        $tok = "";
+        break;
+
+      case ".":
+      case "#":
+        // All elements matching the current token with a class/id equal to
+        // the _next_ token.
+
+        $attr = $s == "." ? "class" : "id";
+
+        // empty class/id == *
+        if ( mb_substr($query, -1, 1) == "/" )
+          $query .= "*";
+
+        // Match multiple classes: $tok contains the current selected
+        // class.  Search for class attributes with class="$tok",
+        // class=".* $tok .*" and class=".* $tok"
+
+        // This doesn't work because libxml only supports XPath 1.0...
+        //$query .= "[matches(@$attr,\"^${tok}\$|^${tok}[ ]+|[ ]+${tok}\$|[ ]+${tok}[ ]+\")]";
+
+        // Query improvement by Michael Sheakoski <michael@mjsdigital.com>:
+        $query .= "[contains(concat(' ', @$attr, ' '), concat(' ', '$tok', ' '))]";
+        $tok = "";
+        break;
+
+      case "+":
+        // All sibling elements that folow the current token
+        if ( mb_substr($query, -1, 1) != "/" )
+          $query .= "/";
+
+        $query .= "following-sibling::$tok";
+        $tok = "";
+        break;
+
+      case ":":
+        // Pseudo-classes
+        switch ($tok) {
+
+        case "first-child":
+          $query .= "[1]";
+          $tok = "";
+          break;
+
+        case "link":
+          $query .= "[@href]";
+          $tok = "";
+          break;
+
+        case "first-line":
+          break;
+
+        case "first-letter":
+          break;
+
+        case "before":
+          break;
+
+        case "after":
+          break;
+
+        }
+
+        break;
+
+      case "[":
+        // Attribute selectors.  All with an attribute matching the following token(s)
+        $attr_delimiters = array("=", "]", "~", "|");
+        $tok_len = mb_strlen($tok);
+        $j = 0;
+
+        $attr = "";
+        $op = "";
+        $value = "";
+
+        while ( $j < $tok_len ) {
+          if ( in_array($tok{$j}, $attr_delimiters) )
+            break;
+          $attr .= $tok{$j++};
+        }
+
+        switch ( $tok{$j} ) {
+
+        case "~":
+        case "|":
+          $op .= $tok{$j++};
+
+          if ( $tok{$j} != "=" )
+            throw new DOMPDF_Exception("Invalid CSS selector syntax: invalid attribute selector: $selector");
+
+          $op .= $tok{$j};
+          break;
+
+        case "=":
+          $op = "=";
+          break;
+
+        }
+
+        // Read the attribute value, if required
+        if ( $op != "" ) {
+          $j++;
+          while ( $j < $tok_len ) {
+            if ( $tok{$j} == "]" )
+              break;
+            $value .= $tok{$j++};
+          }
+        }
+
+        if ( $attr == "" )
+          throw new DOMPDF_Exception("Invalid CSS selector syntax: missing attribute name");
+
+        switch ( $op ) {
+
+        case "":
+          $query .=  "[@$attr]";
+          break;
+
+        case "=":
+          $query .= "[@$attr$op\"$value\"]";
+          break;
+
+        case "~=":
+          // FIXME: this will break if $value contains quoted strings
+          // (e.g. [type~="a b c" "d e f"])
+          $values = explode(" ", $value);
+          $query .=  "[";
+
+          foreach ( $values as $val )
+            $query .= "@$attr=\"$val\" or ";
+
+          $query = rtrim($query, " or ") . "]";
+          break;
+
+        case "|=":
+          $values = explode("-", $value);
+          $query .= "[";
+
+          foreach ($values as $val)
+            $query .= "starts-with(@$attr, \"$val\") or ";
+
+          $query = rtrim($query, " or ") . "]";
+          break;
+
+        }
+
+        break;
+      }
+    }
+    $i++;
+
+//       case ":":
+//         // Pseudo selectors: ignore for now.  Partially handled directly
+//         // below.
+
+//         // Skip until the next special character, leaving the token as-is
+//         while ( $i < $len ) {
+//           if ( in_array($selector{$i}, $delimiters) )
+//             break;
+//           $i++;
+//         }
+//         break;
+
+//       default:
+//         // Add the character to the token
+//         $tok .= $selector{$i++};
+//         break;
+//       }
+
+//    }
+
+
+    // Trim the trailing '/' from the query
+    if ( mb_strlen($query) > 2 )
+      $query = rtrim($query, "/");
+
+    return $query;
+  }
+
+  /**
+   * applies all current styles to a particular document tree
+   *
+   * apply_styles() applies all currently loaded styles to the provided
+   * {@link Frame_Tree}.  Aside from parsing CSS, this is the main purpose
+   * of this class.
+   *
+   * @param Frame_Tree $tree
+   */
+  function apply_styles(Frame_Tree $tree) {
+
+    // Use XPath to select nodes.  This would be easier if we could attach
+    // Frame objects directly to DOMNodes using the setUserData() method, but
+    // we can't do that just yet.  Instead, we set a _node attribute_ in
+    // Frame->set_id() and use that as a handle on the Frame object via
+    // Frame_Tree::$_registry.
+
+    // We create a scratch array of styles indexed by frame id.  Once all
+    // styles have been assigned, we order the cached styles by specificity
+    // and create a final style object to assign to the frame.
+
+    // FIXME: this is not particularly robust...
+
+    $styles = array();
+    $xp = new DOMXPath($tree->get_dom());
+
+    // Apply all styles in stylesheet
+    foreach ($this->_styles as $selector => $style) {
+
+      $query = $this->_css_selector_to_xpath($selector);
+//       pre_var_dump($selector);
+//       pre_var_dump($query);
+//        echo ($style);
+
+      // Retrieve the nodes
+      $nodes = $xp->query($query);
+
+      foreach ($nodes as $node) {
+        //echo $node->nodeName . "\n";
+        // Retrieve the node id
+        if ( $node->nodeType != 1 ) // Only DOMElements get styles
+          continue;
+
+        $id = $node->getAttribute("frame_id");
+
+        // Assign the current style to the scratch array
+        $spec = $this->_specificity($selector);
+        $styles[$id][$spec][] = $style;
+      }
+    }
+
+    // Now create the styles and assign them to the appropriate frames.  (We
+    // iterate over the tree using an implicit Frame_Tree iterator.)
+    $root_flg = false;
+    foreach ($tree->get_frames() as $frame) {
+      // pre_r($frame->get_node()->nodeName . ":");
+      if ( !$root_flg && $this->_page_style ) {
+        $style = $this->_page_style;
+        $root_flg = true;
+      } else
+        $style = $this->create_style();
+
+      // Find nearest DOMElement parent
+      $p = $frame;
+      while ( $p = $p->get_parent() )
+        if ($p->get_node()->nodeType == 1 )
+          break;
+
+      // Styles can only be applied directly to DOMElements; anonymous
+      // frames inherit from their parent
+      if ( $frame->get_node()->nodeType != 1 ) {
+        if ( $p )
+          $style->inherit($p->get_style());
+        $frame->set_style($style);
+        continue;
+      }
+
+      $id = $frame->get_id();
+
+      // Handle HTML 4.0 attributes
+      Attribute_Translator::translate_attributes($frame);
+
+      // Locate any additional style attributes
+      if ( ($str = $frame->get_node()->getAttribute("style")) !== "" ) {
+        $spec = $this->_specificity("!style attribute");
+        $styles[$id][$spec][] = $this->_parse_properties($str);
+      }
+
+      // Grab the applicable styles
+      if ( isset($styles[$id]) ) {
+
+        $applied_styles = $styles[ $frame->get_id() ];
+
+        // Sort by specificity
+        ksort($applied_styles);
+
+        if (DEBUGCSS) {
+          $debug_nodename = $frame->get_node()->nodeName;
+          print "<pre>\n[$debug_nodename\n";
+          foreach ($applied_styles as $spec => $arr) {
+            printf("specificity: 0x%08x\n",$spec);
+            foreach ($arr as $s) {
+              print "[\n";
+              $s->debug_print();
+              print "]\n";
+            }
+          }
+        }
+        
+        // Merge the new styles with the inherited styles
+        foreach ($applied_styles as $arr) {
+          foreach ($arr as $s)
+            $style->merge($s);
+        }
+      }
+
+      // Inherit parent's styles if required
+      if ( $p ) {
+
+        if (DEBUGCSS) {
+          print "inherit:\n";
+          print "[\n";
+          $p->get_style()->debug_print();
+          print "]\n";
+        }
+
+        $style->inherit( $p->get_style() );
+      }
+
+      if (DEBUGCSS) {
+        print "DomElementStyle:\n";
+        print "[\n";
+        $style->debug_print();
+        print "]\n";
+        print "/$debug_nodename]\n</pre>";
+      }
+
+      /*DEBUGCSS print: see below different print debugging method
+      pre_r($frame->get_node()->nodeName . ":");
+      echo "<pre>";
+      echo $style;
+      echo "</pre>";*/
+      $frame->set_style($style);
+
+    }
+
+    // We're done!  Clean out the registry of all styles since we
+    // won't be needing this later.
+    foreach ( array_keys($this->_styles) as $key ) {
+      unset($this->_styles[$key]);
+    }
+
+  }
+
+
+  /**
+   * parse a CSS string using a regex parser
+   *
+   * Called by {@link Stylesheet::parse_css()}
+   *
+   * @param string $str
+   */
+  private function _parse_css($str) {
+
+    // Destroy comments
+    $css = preg_replace("'/\*.*?\*/'si", "", $str);
+
+    // FIXME: handle '{' within strings, e.g. [attr="string {}"]
+
+    // Something more legible:
+    $re =
+      "/\s*                                   # Skip leading whitespace                             \n".
+      "( @([^\s]+)\s+([^{;]*) (?:;|({)) )?    # Match @rules followed by ';' or '{'                 \n".
+      "(?(1)                                  # Only parse sub-sections if we're in an @rule...     \n".
+      "  (?(4)                                # ...and if there was a leading '{'                   \n".
+      "    \s*( (?:(?>[^{}]+) ({)?            # Parse rulesets and individual @page rules           \n".
+      "            (?(6) (?>[^}]*) }) \s*)+?  \n".
+      "       )                               \n".
+      "   })                                  # Balancing '}'                                \n".
+      "|                                      # Branch to match regular rules (not preceeded by '@')\n".
+      "([^{]*{[^}]*}))                        # Parse normal rulesets\n".
+      "/xs";
+
+    if ( preg_match_all($re, $css, $matches, PREG_SET_ORDER) === false )
+      // An error occured
+      throw new DOMPDF_Exception("Error parsing css file: preg_match_all() failed.");
+
+    // After matching, the array indicies are set as follows:
+    //
+    // [0] => complete text of match
+    // [1] => contains '@import ...;' or '@media {' if applicable
+    // [2] => text following @ for cases where [1] is set
+    // [3] => media types or full text following '@import ...;'
+    // [4] => '{', if present
+    // [5] => rulesets within media rules
+    // [6] => '{', within media rules
+    // [7] => individual rules, outside of media rules
+    //
+    //pre_r($matches);
+    foreach ( $matches as $match ) {
+      $match[2] = trim($match[2]);
+
+      if ( $match[2] !== "" ) {
+        // Handle @rules
+        switch ($match[2]) {
+
+        case "import":
+          $this->_parse_import($match[3]);
+          break;
+
+        case "media":
+          $acceptedmedia = self::$ACCEPTED_GENERIC_MEDIA_TYPES;
+          if ( defined("DOMPDF_DEFAULT_MEDIA_TYPE") ) {
+            $acceptedmedia[] = DOMPDF_DEFAULT_MEDIA_TYPE;
+          } else {
+            $acceptedmedia[] = self::$ACCEPTED_DEFAULT_MEDIA_TYPE; 
+          }
+          if ( in_array(mb_strtolower(trim($match[3])), $acceptedmedia ) ) {
+            $this->_parse_sections($match[5]);
+          }
+          break;
+
+        case "page":
+          //This handles @page to be applied to page oriented media
+          //Note: This has a reduced syntax:
+          //@page { margin:1cm; color:blue; }
+          //Not a sequence of styles like a full.css, but only the properties
+          //of a single style, which is applied to the very first "root" frame before
+          //processing other styles of the frame.
+          //Working properties:
+          // margin (for margin around edge of paper)
+          // font-family (default font of pages)
+          // color (default text color of pages)
+          //Non working properties:
+          // border
+          // padding
+          // background-color
+          //Todo:Reason is unknown
+          //Other properties (like further font or border attributes) not tested.
+          //If a border or background color around each paper sheet is desired,
+          //assign it to the <body> tag, possibly only for the css of the correct media type.
+
+          // Store the style for later...
+          if ( is_null($this->_page_style) )
+            $this->_page_style = $this->_parse_properties($match[5]);
+          else
+            $this->_page_style->merge($this->_parse_properties($match[5]));
+          break;
+
+        default:
+          // ignore everything else
+          break;
+        }
+
+        continue;
+      }
+
+      if ( $match[7] !== "" )
+        $this->_parse_sections($match[7]);
+
+    }
+  }
+
+  /* See also style.cls Style::_image(), refactoring?, works also for imported css files */
+  protected function _image($val) {
+    $DEBUGCSS=DEBUGCSS;
+    
+    if ( mb_strpos($val, "url") === false ) {
+      $path = "none"; //Don't resolve no image -> otherwise would prefix path and no longer recognize as none
+    }
+    else {
+      $val = preg_replace("/url\(['\"]?([^'\")]+)['\"]?\)/","\\1", trim($val));
+
+      // Resolve the url now in the context of the current stylesheet
+      $parsed_url = explode_url($val);
+      if ( $parsed_url["protocol"] == "" && $this->get_protocol() == "" ) {
+        if ($parsed_url["path"]{0} == '/' || $parsed_url["path"]{0} == '\\' ) {
+          $path = $_SERVER["DOCUMENT_ROOT"].'/';
+        } else {
+          $path = $this->get_base_path();
+        }
+        $path .= $parsed_url["path"] . $parsed_url["file"];
+        $path = dompdf_realpath($path);
+      } else {
+        $path = build_url($this->get_protocol(),
+                          $this->get_host(),
+                          $this->get_base_path(),
+                          $val);
+      }
+    }
+    if ($DEBUGCSS) {
+      print "<pre>[_image\n";
+      print_r($parsed_url);
+      print $this->get_protocol()."\n".$this->get_base_path()."\n".$path."\n";
+      print "_image]</pre>";;
+    }
+    return $path;
+  }
+
+  /**
+   * parse @import{} sections
+   *
+   * @param string $url  the url of the imported CSS file
+   */
+  private function _parse_import($url) {
+    $arr = preg_split("/[\s\n,]/", $url,-1, PREG_SPLIT_NO_EMPTY);
+    $url = array_shift($arr);
+    $accept = false;
+
+    if ( count($arr) > 0 ) {
+
+      $acceptedmedia = self::$ACCEPTED_GENERIC_MEDIA_TYPES;
+      if ( defined("DOMPDF_DEFAULT_MEDIA_TYPE") ) {
+        $acceptedmedia[] = DOMPDF_DEFAULT_MEDIA_TYPE;
+      } else {
+        $acceptedmedia[] = self::$ACCEPTED_DEFAULT_MEDIA_TYPE; 
+      }
+              
+      // @import url media_type [media_type...]
+      foreach ( $arr as $type ) {
+        if ( in_array(mb_strtolower(trim($type)), $acceptedmedia) ) {
+          $accept = true;
+          break;
+        }
+      }
+
+    } else {
+      // unconditional import
+      $accept = true;
+    }
+
+    if ( $accept ) {
+      // Store our current base url properties in case the new url is elsewhere
+      $protocol = $this->_protocol;
+      $host = $this->_base_host;
+      $path = $this->_base_path;
+      
+      // $url = str_replace(array('"',"url", "(", ")"), "", $url);
+      // If the protocol is php, assume that we will import using file://
+      // $url = build_url($protocol == "php://" ? "file://" : $protocol, $host, $path, $url);
+      // Above does not work for subfolders and absolute urls.
+      // Todo: As above, do we need to replace php or file to an empty protocol for local files?
+      
+      $url = $this->_image($url);      
+      
+      $this->load_css_file($url);
+
+      // Restore the current base url
+      $this->_protocol = $protocol;
+      $this->_base_host = $host;
+      $this->_base_path = $path;
+    }
+
+  }
+
+  /**
+   * parse regular CSS blocks
+   *
+   * _parse_properties() creates a new Style object based on the provided
+   * CSS rules.
+   *
+   * @param string $str  CSS rules
+   * @return Style
+   */
+  private function _parse_properties($str) {
+    $properties = explode(";", $str);
+
+    if (DEBUGCSS) print '[_parse_properties';
+
+    // Create the style
+    $style = new Style($this);
+    foreach ($properties as $prop) {
+      //A css property can have " ! important" appended (whitespace optional)
+      //strip this off to decode core of the property correctly.
+      //Pass on in the style to allow proper handling:
+      //!important properties can only be overridden by other !important ones.
+      //$style->$prop_name = is a shortcut of $style->__set($prop_name,$value);.
+      //If no specific set function available, set _props["prop_name"]
+      //style is always copied completely, or $_props handled separately
+      //Therefore set a _important_props["prop_name"]=true to indicate the modifier
+
+      /* Instead of short code, prefer the typical case with fast code
+	  $important = preg_match("/(.*?)!\s*important/",$prop,$match);
+      if ( $important ) {
+      	$prop = $match[1];
+      }
+      $prop = trim($prop);
+      */
+      if (DEBUGCSS) print '(';
+ 	  $important = false;
+      $prop = trim($prop);
+      if (substr($prop,-9) == 'important') {
+      	$prop_tmp = rtrim(substr($prop,0,-9));
+      	if (substr($prop_tmp,-1) == '!') {
+      		$prop = rtrim(substr($prop_tmp,0,-1));
+      		$important = true;
+      	}
+      }
+
+      if ($prop == "") {
+        if (DEBUGCSS) print 'empty)';
+        continue;
+      }
+
+      $i = mb_strpos($prop, ":");
+      if ( $i === false ) {
+        if (DEBUGCSS) print 'novalue'.$prop.')';
+        continue;
+      }
+
+      $prop_name = rtrim(mb_strtolower(mb_substr($prop, 0, $i)));
+      $value = ltrim(mb_substr($prop, $i+1));
+      if (DEBUGCSS) print $prop_name.':='.$value.($important?'!IMPORTANT':'').')';
+      //New style, anyway empty
+      //if ($important || !$style->important_get($prop_name) ) {
+      //$style->$prop_name = array($value,$important);
+      //assignment might be replaced by overloading through __set,
+      //and overloaded functions might check _important_props,
+      //therefore set _important_props first.
+      if ($important) {
+        $style->important_set($prop_name);
+      }
+      //For easier debugging, don't use overloading of assignments with __set
+      $style->$prop_name = $value;
+      //$style->props_set($prop_name, $value);
+    }
+    if (DEBUGCSS) print '_parse_properties]';
+
+    return $style;
+  }
+
+  /**
+   * parse selector + rulesets
+   *
+   * @param string $str  CSS selectors and rulesets
+   */
+  private function _parse_sections($str) {
+    // Pre-process: collapse all whitespace and strip whitespace around '>',
+    // '.', ':', '+', '#'
+
+    $patterns = array("/[\\s\n]+/", "/\\s+([>.:+#])\\s+/");
+    $replacements = array(" ", "\\1");
+    $str = preg_replace($patterns, $replacements, $str);
+
+    $sections = explode("}", $str);
+    if (DEBUGCSS) print '[_parse_sections';
+    foreach ($sections as $sect) {
+      $i = mb_strpos($sect, "{");
+
+      $selectors = explode(",", mb_substr($sect, 0, $i));
+      if (DEBUGCSS) print '[section';
+      $style = $this->_parse_properties(trim(mb_substr($sect, $i+1)));
+      
+      // Assign it to the selected elements
+      foreach ($selectors as $selector) {
+        $selector = trim($selector);
+
+        if ($selector == "") {
+          if (DEBUGCSS) print '#empty#';
+          continue;
+        }
+        if (DEBUGCSS) print '#'.$selector.'#';
+        //if (DEBUGCSS) { if (strpos($selector,'p') !== false) print '!!!p!!!#'; }
+
+        $this->add_style($selector, $style);
+      }
+      if (DEBUGCSS) print 'section]';
+    }
+    if (DEBUGCSS) print '_parse_sections]';
+  }
+
+  /**
+   * dumps the entire stylesheet as a string
+   *
+   * Generates a string of each selector and associated style in the
+   * Stylesheet.  Useful for debugging.
+   *
+   * @return string
+   */
+  function __toString() {
+    $str = "";
+    foreach ($this->_styles as $selector => $style)
+      $str .= "$selector => " . $style->__toString() . "\n";
+
+    return $str;
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/null_frame_reflower.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/null_frame_reflower.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/null_frame_reflower.cls.php	(revision 2000)
@@ -0,0 +1,55 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: null_frame_reflower.cls.php,v $
+ * Created on: 2004-07-12
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: null_frame_reflower.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Dummy reflower
+ *
+ * @access private
+ * @package dompdf
+ */
+class Null_Frame_Reflower extends Frame_Reflower {
+
+  function __construct(Frame $frame) { parent::__construct($frame); }
+
+  function reflow() { return; }
+  
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/absolute_positioner.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/absolute_positioner.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/absolute_positioner.cls.php	(revision 2000)
@@ -0,0 +1,87 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: absolute_positioner.cls.php,v $
+ * Created on: 2004-06-08
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id */
+
+/**
+ * Positions absolutly positioned frames
+ */
+class Absolute_Positioner extends Positioner {
+
+  function __construct(Frame_Decorator $frame) { parent::__construct($frame); }
+
+  function position() {
+
+    $cb = $this->_frame->get_containing_block();
+
+    $style = $this->_frame->get_style();
+
+    $top = $style->length_in_pt($style->top, $cb["w"]);
+    $left =   $style->length_in_pt($style->left, $cb["w"]);
+    $right =  $style->length_in_pt($style->right, $cb["w"]);
+    $bottom = $style->length_in_pt($style->bottom, $cb["w"]);
+    
+    $p = $this->_frame->find_block_parent();
+
+    if ( $p ) {
+
+      // Get the parent's padding box (see http://www.w3.org/TR/CSS21/visuren.html#propdef-top)
+
+      list($x, $y, $w, $h) = $p->get_padding_box();
+
+    } else {
+
+      $x = $cb["x"];
+      $y = $cb["y"];
+
+    }
+
+    if ( isset($top) ) {
+      $y += $top;
+    } else if ( isset($bottom) ) {
+      // FIXME: need to know this frame's height before we can do this correctly
+    }
+
+    $x += $left;
+
+    $this->_frame->set_position($x, $y);
+
+  }
+
+}
Index: /trunk/filemanager/tp/dompdf/include/list_bullet_positioner.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/list_bullet_positioner.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/list_bullet_positioner.cls.php	(revision 2000)
@@ -0,0 +1,112 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: list_bullet_positioner.cls.php,v $
+ * Created on: 2004-06-23
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 20090622
+ * - try to adjust top position of bullet to top corner of subsequent font
+ */
+
+/* $Id: list_bullet_positioner.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Positions list bullets
+ *
+ * @access private
+ * @package dompdf
+ */
+class List_Bullet_Positioner extends Positioner {
+
+  function __construct(Frame_Decorator $frame) { parent::__construct($frame); }
+  
+  //........................................................................
+
+  function position() {
+    
+    // Bullets & friends are positioned an absolute distance to the left of
+    // the content edge of their parent element
+    $cb = $this->_frame->get_containing_block();
+    $style = $this->_frame->get_style();
+    
+    // Note: this differs from most frames in that we must position
+    // ourselves after determining our width
+    $x = $cb["x"] - $this->_frame->get_width();
+
+    $p = $this->_frame->find_block_parent();
+
+    $y = $p->get_current_line("y");
+
+    // This is a bit of a hack...
+    $n = $this->_frame->get_next_sibling();
+    if ( $n ) {
+      $style = $n->get_style();
+      $y += $style->length_in_pt( array($style->margin_top, $style->padding_top),
+                                  $n->get_containing_block("w") );
+    }
+
+	// Now the position is the left top of the block which should be marked with the bullet.
+	// We tried to find out the y of the start of the first text character within the block.
+	// But the top margin/padding does not fit, neither from this nor from the next sibling
+	// The "bit of a hack" above does not work also.
+	
+	// Instead let's position the bullet vertically centered to the block which should be marked.
+	// But for get_next_sibling() the get_containing_block is all zero, and for find_block_parent()
+	// the get_containing_block is paper width and the entire list as height.
+	
+    // if ($p) {
+    //   //$cb = $n->get_containing_block();
+    //   $cb = $p->get_containing_block();
+    //   $y += $cb["h"]/2;
+    // print 'cb:'.$cb["x"].':'.$cb["y"].':'.$cb["w"].':'.$cb["h"].':';
+    // }	 
+
+	// Todo:
+	// For now give up on the above. Use Guesswork with font y-pos in the middle of the line spacing
+
+    $style = $p->get_style();
+    $font_size = $style->get_font_size();
+    $line_height = $style->length_in_pt($style->line_height, $font_size);
+    $y += ($line_height - $font_size) / 2;  	
+	 
+    //Position is x-end y-top of character position of the bullet.    
+    $this->_frame->set_position($x, $y);
+    
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/list_bullet_frame_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/list_bullet_frame_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/list_bullet_frame_decorator.cls.php	(revision 2000)
@@ -0,0 +1,95 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: list_bullet_frame_decorator.cls.php,v $
+ * Created on: 2004-06-23
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 20090622
+ * - bullet size proportional to font size, center position
+ */
+
+/* $Id: list_bullet_frame_decorator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Decorates frames for list bullet rendering
+ *
+ * @access private
+ * @package dompdf 
+ */
+class List_Bullet_Frame_Decorator extends Frame_Decorator {
+
+  const BULLET_PADDING = 1; // Distance from bullet to text in pt
+  // As fraction of font size (including descent). See also DECO_THICKNESS.
+  const BULLET_THICKNESS = 0.04;   // Thickness of bullet outline. Screen: 0.08, print: better less, e.g. 0.04
+  const BULLET_DESCENT = 0.3;  //descent of font below baseline. Todo: Guessed for now.
+  const BULLET_SIZE = 0.35;   // bullet diameter. For now 0.5 of font_size without descent.
+  
+  static $BULLET_TYPES = array("disc", "circle", "square");
+  
+  //........................................................................
+
+  function __construct(Frame $frame, DOMPDF $dompdf) {
+    parent::__construct($frame, $dompdf);
+  }
+  
+  function get_margin_width() {
+    $style = $this->_frame->get_style();
+    // Small hack to prevent extra indenting of list text on list_style_position == "inside"
+    // and on suppressed bullet
+    if ( $style->list_style_position == "outside" ||
+         $style->list_style_type == "none" )
+      return 0;
+    return $style->get_font_size()*self::BULLET_SIZE + 2 * self::BULLET_PADDING;
+  }
+
+  //hits only on "inset" lists items, to increase height of box
+  function get_margin_height() {
+    return $this->_frame->get_style()->get_font_size()*self::BULLET_SIZE + 2 * self::BULLET_PADDING;
+  }
+
+  function get_width() {
+    return $this->_frame->get_style()->get_font_size()*self::BULLET_SIZE + 2 * self::BULLET_PADDING;
+  }
+  
+  function get_height() {
+    return $this->_frame->get_style()->get_font_size()*self::BULLET_SIZE + 2 * self::BULLET_PADDING;
+  }
+  
+  //........................................................................
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/frame_reflower.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/frame_reflower.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/frame_reflower.cls.php	(revision 2000)
@@ -0,0 +1,223 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: frame_reflower.cls.php,v $
+ * Created on: 2004-06-17
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: frame_reflower.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Base reflower class
+ *
+ * Reflower objects are responsible for determining the width and height of
+ * individual frames.  They also create line and page breaks as necessary.
+ *
+ * @access private
+ * @package dompdf
+ */
+abstract class Frame_Reflower {
+
+  /**
+   * Frame for this reflower
+   *
+   * @var Frame
+   */
+  protected $_frame;
+
+  /**
+   * Cached min/max size
+   *
+   * @var array
+   */
+  protected $_min_max_cache;
+  
+  function __construct(Frame $frame) {
+    $this->_frame = $frame;
+    $this->_min_max_cache = null;
+  }
+
+  function dispose() {
+    unset($this->_frame);
+  }
+
+  protected function _collapse_margins() {
+    $cb = $this->_frame->get_containing_block();
+    $style = $this->_frame->get_style();
+
+    $t = $style->length_in_pt($style->margin_top, $cb["h"]);
+    $b = $style->length_in_pt($style->margin_bottom, $cb["w"]);
+
+    // Handle 'auto' values
+    if ( $t === "auto" ) {
+      $style->margin_top = "0pt";
+      $t = 0;
+    }
+
+    if ( $b === "auto" ) {
+      $style->margin_bottom = "0pt";
+      $b = 0;
+    }
+
+    // Collapse vertical margins:
+    $n = $this->_frame->get_next_sibling();
+    while ( $n && !in_array($n->get_style()->display, Style::$BLOCK_TYPES) )
+      $n = $n->get_next_sibling();
+
+    if ( $n ) { // && !$n instanceof Page_Frame_Decorator ) {
+
+      $b = max($b, $style->length_in_pt($n->get_style()->margin_top, $cb["w"]));
+
+      $n->get_style()->margin_top = "$b pt";
+      $style->margin_bottom = "0 pt";
+
+    }
+
+    // Collapse our first child's margin
+    $f = $this->_frame->get_first_child();
+    while ( $f && !in_array($f->get_style()->display, Style::$BLOCK_TYPES) )
+      $f = $f->get_next_sibling();
+
+    if ( $f ) {
+      $t = max( $t, $style->length_in_pt($f->get_style()->margin_top, $cb["w"]));
+      $style->margin_top = "$t pt";
+      $f->get_style()->margin_top = "0 pt";
+    }
+
+  }
+
+  // Returns true if a new page is required
+  protected function _check_new_page() {
+    $y = $this->_frame->get_position("y");
+    $h = $style->length_in_pt($style->height);
+    // Check if we need to move to a new page
+    if ( $y + $h >= $this->_frame->get_root()->get_page_height() )
+      return true;
+
+  }
+
+  //........................................................................
+
+  abstract function reflow();
+
+  //........................................................................
+
+  // Required for table layout: Returns an array(0 => min, 1 => max, "min"
+  // => min, "max" => max) of the minimum and maximum widths of this frame.
+  // This provides a basic implementation.  Child classes should override
+  // this if necessary.
+  function get_min_max_width() {
+    if ( !is_null($this->_min_max_cache) ) {
+      return $this->_min_max_cache;
+    }
+    
+    $style = $this->_frame->get_style();
+
+    // Account for margins & padding
+    $dims = array($style->padding_left,
+                  $style->padding_right,
+                  $style->border_left_width,
+                  $style->border_right_width,
+                  $style->margin_left,
+                  $style->margin_right);
+
+    $cb_w = $this->_frame->get_containing_block("w");
+    $delta = $style->length_in_pt($dims, $cb_w);
+
+    // Handle degenerate case
+    if ( !$this->_frame->get_first_child() )
+      return $this->_min_max_cache = array($delta, $delta,"min" => $delta, "max" => $delta);
+
+    $low = array();
+    $high = array();
+
+    for ( $iter = $this->_frame->get_children()->getIterator();
+          $iter->valid();
+          $iter->next() ) {
+
+      $inline_min = 0;
+      $inline_max = 0;
+
+      // Add all adjacent inline widths together to calculate max width
+      while ( $iter->valid() && in_array( $iter->current()->get_style()->display, Style::$INLINE_TYPES ) ) {
+
+        $child = $iter->current();
+
+        $minmax = $child->get_min_max_width();
+
+        if ( in_array( $iter->current()->get_style()->white_space, array("pre", "nowrap") ) )
+          $inline_min += $minmax["min"];
+        else
+          $low[] = $minmax["min"];
+
+        $inline_max += $minmax["max"];
+        $iter->next();
+
+      }
+
+      if ( $inline_max > 0 )
+        $high[] = $inline_max;
+
+      if ( $inline_min > 0 )
+        $low[] = $inline_min;
+
+      if ( $iter->valid() ) {
+        list($low[], $high[]) = $iter->current()->get_min_max_width();
+        continue;
+      }
+
+    }
+    $min = count($low) ? max($low) : 0;
+    $max = count($high) ? max($high) : 0;
+
+    // Use specified width if it is greater than the minimum defined by the
+    // content.  If the width is a percentage ignore it for now.
+    $width = $style->width;
+    if ( $width !== "auto" && !is_percent($width) ) {
+      $width = $style->length_in_pt($width, $cb_w);
+      if ( $min < $width )
+        $min = $width;
+      if ( $max < $width )
+        $max = $width;
+    }
+
+    $min += $delta;
+    $max += $delta;
+    return $this->_min_max_cache = array($min, $max, "min"=>$min, "max"=>$max);
+  }
+
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/pdflib_adapter.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/pdflib_adapter.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/pdflib_adapter.cls.php	(revision 2000)
@@ -0,0 +1,968 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: pdflib_adapter.cls.php,v $
+ * Created on: 2005-02-28
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 0.5.1.htischer.20090507
+ * - Clarify temp file name, optional debug output for temp file tracking
+ */
+
+/* $Id: pdflib_adapter.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * PDF rendering interface
+ *
+ * PDFLib_Adapter provides a simple, stateless interface to the one
+ * provided by PDFLib.
+ *
+ * Unless otherwise mentioned, all dimensions are in points (1/72 in).
+ * The coordinate origin is in the top left corner and y values
+ * increase downwards.
+ *
+ * See {@link http://www.pdflib.com/} for more complete documentation
+ * on the underlying PDFlib functions.
+ *
+ * @package dompdf
+ */
+class PDFLib_Adapter implements Canvas {
+
+  /**
+   * Dimensions of paper sizes in points
+   *
+   * @var array;
+   */
+  static public $PAPER_SIZES = array(); // Set to
+                                        // CPDF_Adapter::$PAPER_SIZES below.
+
+  /**
+   * Fudge factor to adjust reported font heights
+   *
+   * CPDF reports larger font heights than PDFLib.  This factor
+   * adjusts the height reported by get_font_height().
+   *
+   * @var float
+   */
+  const FONT_HEIGHT_SCALE = 1.2;
+
+  /**
+   * Whether to create PDFs in memory or on disk
+   *
+   * @var bool
+   */
+  static $IN_MEMORY = true;
+
+  /**
+   * Instance of PDFLib class
+   *
+   * @var PDFlib
+   */
+  private $_pdf;
+
+  /**
+   * Name of temporary file used for PDFs created on disk
+   *
+   * @var string
+   */
+  private $_file;
+
+  /**
+   * PDF width, in points
+   *
+   * @var float
+   */
+  private $_width;
+
+  /**
+   * PDF height, in points
+   *
+   * @var height
+   */
+  private $_height;
+
+  /**
+   * Last fill colour used
+   *
+   * @var array
+   */
+  private $_last_fill_color;
+
+  /**
+   * Last stroke colour used
+   *
+   * @var array
+   */
+  private $_last_stroke_color;
+
+  /**
+   * Cache of image handles
+   *
+   * @var array
+   */
+  private $_imgs;
+
+  /**
+   * Cache of font handles
+   *
+   * @var array
+   */
+  private $_fonts;
+
+  /**
+   * List of objects (templates) to add to multiple pages
+   *
+   * @var array
+   */
+  private $_objs;
+
+  /**
+   * Current page number
+   *
+   * @var int
+   */
+  private $_page_number;
+
+  /**
+   * Total number of pages
+   *
+   * @var int
+   */
+  private $_page_count;
+
+  /**
+   * Text to display on every page
+   *
+   * @var array
+   */
+  private $_page_text;
+
+  /**
+   * Array of pages for accesing after rendering is initially complete
+   *
+   * @var array
+   */
+  private $_pages;
+
+  /**
+   * Class constructor
+   *
+   * @param mixed $paper The size of paper to use either a string (see {@link CPDF_Adapter::$PAPER_SIZES}) or
+   *                     an array(xmin,ymin,xmax,ymax)
+   * @param string $orientation The orientation of the document (either 'landscape' or 'portrait')
+   */
+  function __construct($paper = "letter", $orientation = "portrait") {
+    if ( is_array($paper) )
+      $size = $paper;
+    else if ( isset(self::$PAPER_SIZES[mb_strtolower($paper)]) )
+      $size = self::$PAPER_SIZES[mb_strtolower($paper)];
+    else
+      $size = self::$PAPER_SIZES["letter"];
+
+    if ( mb_strtolower($orientation) == "landscape" ) {
+      $a = $size[3];
+      $size[3] = $size[2];
+      $size[2] = $a;
+    }
+    $this->_width = $size[2] - $size[0];
+    $this->_height= $size[3] - $size[1];
+
+    $this->_pdf = new PDFLib();
+
+	if ( defined("DOMPDF_PDFLIB_LICENSE") )
+      $this->_pdf->set_parameter( "license", DOMPDF_PDFLIB_LICENSE);
+
+	$this->_pdf->set_parameter("textformat", "utf8");
+    $this->_pdf->set_parameter("fontwarning", "false");
+
+    $this->_pdf->set_info("Creator", "DOMPDF Converter");
+
+    // Silence pedantic warnings about missing TZ settings
+    if ( function_exists("date_default_timezone_get") ) {
+      $tz = @date_default_timezone_get();
+      date_default_timezone_set("UTC");
+      $this->_pdf->set_info("Date", date("Y-m-d"));
+      date_default_timezone_set($tz);
+    } else {
+      $this->_pdf->set_info("Date", date("Y-m-d"));
+    }
+
+    if ( self::$IN_MEMORY )
+      $this->_pdf->begin_document("","");
+    else {
+      $this->_file = tempnam(DOMPDF_TEMP_DIR, "libdompdf_pdf_").'.pdf';
+      $this->_pdf->begin_document($this->_file,"");
+    }
+
+    $this->_pdf->begin_page_ext($this->_width, $this->_height, "");
+
+    $this->_page_number = $this->_page_count = 1;
+    $this->_page_text = array();
+
+    $this->_imgs = array();
+    $this->_fonts = array();
+    $this->_objs = array();
+
+    // Set up font paths
+    $families = Font_Metrics::get_font_families();
+    foreach ($families as $family => $files) {
+      foreach ($files as $style => $file) {
+        $face = basename($file);
+
+        // Prefer ttfs to afms
+        if ( file_exists($file.".ttf") ) {
+          $outline = "$file.ttf";
+          $afm = null;
+
+        } else if ( file_exists($file .".TTF") ) {
+          $outline = "$file.TTF";
+          $afm = null;
+
+        } else if ( file_exists($file . ".pfb") ) {
+          $outline = "$file.pfb";
+
+          if ( file_exists($file . ".afm") )
+            $afm = "$file.afm";
+
+        } else if ( file_exists($file . ".PFB") ) {
+          $outline = "$file.PFB";
+          if ( file_exists($file . ".AFM") )
+            $afm = "$file.AFM";
+        } else
+          continue;
+
+        $this->_pdf->set_parameter("FontOutline", "\{$face\}=\{$outline\}");
+        if ( !is_null($afm) )
+          $this->_pdf->set_parameter("FontAFM", "\{$face\}=\{$afm\}");
+      }
+    }
+  }
+
+  /**
+   * Close the pdf
+   */
+  protected function _close() {
+    $this->_place_objects();
+
+    // Close all pages
+    $this->_pdf->suspend_page("");
+    for ($p = 1; $p <= $this->_page_count; $p++) {
+      $this->_pdf->resume_page("pagenumber=$p");
+      $this->_pdf->end_page_ext("");
+    }
+
+    $this->_pdf->end_document("");
+  }
+
+
+  /**
+   * Returns the PDFLib instance
+   *
+   * @return PDFLib
+   */
+  function get_pdflib() { return $this->_pdf; }
+
+  /**
+   * Add meta information to the PDF
+   *
+   * @param string $label  label of the value (Creator, Producter, etc.)
+   * @param string $value  the text to set
+   */
+  function add_info($label, $value) {
+    $this->_pdf->set_info($label, $value);
+  }
+  
+  /**
+   * Opens a new 'object' (template in PDFLib-speak)
+   *
+   * While an object is open, all drawing actions are recorded to the
+   * object instead of being drawn on the current page.  Objects can
+   * be added later to a specific page or to several pages.
+   *
+   * The return value is an integer ID for the new object.
+   *
+   * @see PDFLib_Adapter::close_object()
+   * @see PDFLib_Adapter::add_object()
+   *
+   * @return int
+   */
+  function open_object() {
+    $this->_pdf->suspend_page("");
+    $ret = $this->_pdf->begin_template($this->_width, $this->_height);
+    $this->_pdf->save();
+    $this->_objs[$ret] = array("start_page" => $this->_page_number);
+    return $ret;
+  }
+
+  /**
+   * Reopen an existing object (NOT IMPLEMENTED)
+   *
+   * PDFLib does not seem to support reopening templates.
+   *
+   * @param int $object the ID of a previously opened object
+   */
+  function reopen_object($object) {
+    throw new DOMPDF_Exception("PDFLib does not support reopening objects.");
+  }
+
+  /**
+   * Close the current template
+   *
+   * @see PDFLib_Adapter::open_object()
+   */
+  function close_object() {
+    $this->_pdf->restore();
+    $this->_pdf->end_template();
+    $this->_pdf->resume_page("pagenumber=".$this->_page_number);
+  }
+
+  /**
+   * Adds the specified object to the document
+   *
+   * $where can be one of:
+   * - 'add' add to current page only
+   * - 'all' add to every page from the current one onwards
+   * - 'odd' add to all odd numbered pages from now on
+   * - 'even' add to all even numbered pages from now on
+   * - 'next' add the object to the next page only
+   * - 'nextodd' add to all odd numbered pages from the next one
+   * - 'nexteven' add to all even numbered pages from the next one
+   *
+   * @param int $object the object handle returned by open_object()
+   * @param string $where
+   */
+  function add_object($object, $where = 'all') {
+
+    if ( mb_strpos($where, "next") !== false ) {
+      $this->_objs[$object]["start_page"]++;
+      $where = str_replace("next", "", $where);
+      if ( $where == "" )
+        $where = "add";
+    }
+
+    $this->_objs[$object]["where"] = $where;
+  }
+
+  /**
+   * Stops the specified template from appearing in the document.
+   *
+   * The object will stop being displayed on the page following the
+   * current one.
+   *
+   * @param int $object
+   */
+  function stop_object($object) {
+
+    if ( !isset($this->_objs[$object]) )
+      return;
+
+    $start = $this->_objs[$object]["start_page"];
+    $where = $this->_objs[$object]["where"];
+
+    // Place the object on this page if required
+    if ( $this->_page_number >= $start &&
+         (($this->_page_number % 2 == 0 && $where == "even") ||
+          ($this->_page_number % 2 == 1 && $where == "odd") ||
+          ($where == "all")) )
+      $this->_pdf->fit_image($object,0,0,"");
+
+    unset($this->_objs[$object]);
+  }
+
+  /**
+   * Add all active objects to the current page
+   */
+  protected function _place_objects() {
+
+    foreach ( $this->_objs as $obj => $props ) {
+      $start = $props["start_page"];
+      $where = $props["where"];
+
+      // Place the object on this page if required
+      if ( $this->_page_number >= $start &&
+           (($this->_page_number % 2 == 0 && $where == "even") ||
+            ($this->_page_number % 2 == 1 && $where == "odd") ||
+            ($where == "all")) ) {
+        $this->_pdf->fit_image($obj,0,0,"");
+      }
+    }
+
+  }
+
+  function get_width() { return $this->_width; }
+
+  function get_height() { return $this->_height; }
+
+  function get_page_number() { return $this->_page_number; }
+
+  function get_page_count() { return $this->_page_count; }
+
+  function set_page_number($num) { $this->_page_number = (int)$num; }
+
+  function set_page_count($count) { $this->_page_count = (int)$count; }
+
+
+  /**
+   * Sets the line style
+   *
+   * @param float width
+   * @param string corner
+   * @param string join
+   * @param array dash
+   */
+  protected function _set_line_style($width, $cap, $join, $dash) {
+
+    if ( count($dash) == 1 )
+      $dash[] = $dash[0];
+
+    if ( count($dash) > 1 )
+      $this->_pdf->setdashpattern("dasharray={" . join(" ", $dash) . "}");
+    else
+      $this->_pdf->setdash(0,0);
+
+    switch ( $join ) {
+    case "miter":
+      $this->_pdf->setlinejoin(0);
+      break;
+
+    case "round":
+      $this->_pdf->setlinejoin(1);
+      break;
+
+    case "bevel":
+      $this->_pdf->setlinejoin(2);
+      break;
+
+    default:
+      break;
+    }
+
+    switch ( $cap ) {
+    case "butt":
+      $this->_pdf->setlinecap(0);
+      break;
+
+    case "round":
+      $this->_pdf->setlinecap(1);
+      break;
+
+    case "square":
+      $this->_pdf->setlinecap(2);
+      break;
+
+    default:
+      break;
+    }
+
+    $this->_pdf->setlinewidth($width);
+
+  }
+
+  /**
+   * Sets the line color
+   *
+   * @param array $color array(r,g,b)
+   */
+  protected function _set_stroke_color($color) {
+    if($this->_last_stroke_color == $color)
+    	return;
+
+    $this->_last_stroke_color = $color;
+
+    list($r,$g,$b) = $color;
+    $this->_pdf->setcolor("stroke", "rgb", $r, $g, $b, 0);
+  }
+
+  /**
+   * Sets the fill color
+   *
+   * @param array $color array(r,g,b)
+   */
+  protected function _set_fill_color($color) {
+    if($this->_last_fill_color == $color)
+    	return;
+
+    $this->_last_fill_color = $color;
+
+    list($r,$g,$b) = $color;
+    $this->_pdf->setcolor("fill", "rgb", $r, $g, $b, 0);
+  }
+
+  /**
+   * Loads a specific font and stores the corresponding descriptor.
+   *
+   * @param string $font
+   * @return int the font descriptor for the font
+   */
+  protected function _load_font($font, $encoding = null, $options = "") {
+
+    // Check if the font is a native PDF font
+    // Embed non-native fonts
+    $native_fonts = array("courier", "courier-bold", "courier-oblique", "courier-boldoblique",
+                          "helvetica", "helvetica-bold", "helvetica-oblique", "helvetica-boldoblique",
+                          "times-roman", "times-bold", "times-italic", "times-bolditalic",
+                          "symbol", "zapfdinbats");
+
+    $test = strtolower(basename($font));
+    if ( in_array($test, $native_fonts) ) {
+      $font = basename($font);
+
+    } else {
+      // Embed non-native fonts
+      $options .= " embedding=true";
+    }
+
+    if ( is_null($encoding) ) {
+
+      // Unicode encoding is only available for the commerical
+      // version of PDFlib and not PDFlib-Lite
+      if ( defined("DOMPDF_PDFLIB_LICENSE") )
+        $encoding = "unicode";
+      else
+        $encoding = "auto";
+
+    }
+
+    $key = $font .":". $encoding .":". $options;
+
+    if ( isset($this->_fonts[$key]) )
+      return $this->_fonts[$key];
+
+    else {
+
+      $this->_fonts[$key] = $this->_pdf->load_font($font, $encoding, $options);
+      return $this->_fonts[$key];
+
+    }
+
+  }
+
+  /**
+   * Remaps y coords from 4th to 1st quadrant
+   *
+   * @param float $y
+   * @return float
+   */
+  protected function y($y) { return $this->_height - $y; }
+
+  //........................................................................
+
+  function line($x1, $y1, $x2, $y2, $color, $width, $style = null) {
+    $this->_set_line_style($width, "butt", "", $style);
+    $this->_set_stroke_color($color);
+
+    $y1 = $this->y($y1);
+    $y2 = $this->y($y2);
+
+    $this->_pdf->moveto($x1,$y1);
+    $this->_pdf->lineto($x2, $y2);
+    $this->_pdf->stroke();
+  }
+
+  //........................................................................
+
+  function rectangle($x1, $y1, $w, $h, $color, $width, $style = null) {
+    $this->_set_stroke_color($color);
+    $this->_set_line_style($width, "square", "miter", $style);
+
+    $y1 = $this->y($y1) - $h;
+
+    $this->_pdf->rect($x1, $y1, $w, $h);
+    $this->_pdf->stroke();
+  }
+
+  //........................................................................
+
+  function filled_rectangle($x1, $y1, $w, $h, $color) {
+    $this->_set_fill_color($color);
+
+    $y1 = $this->y($y1) - $h;
+
+    $this->_pdf->rect($x1, $y1, $w, $h);
+    $this->_pdf->fill();
+  }
+
+  //........................................................................
+
+  function polygon($points, $color, $width = null, $style = null, $fill = false) {
+
+    $this->_set_fill_color($color);
+    $this->_set_stroke_color($color);
+
+    if ( !$fill && isset($width) )
+      $this->_set_line_style($width, "square", "miter", $style);
+
+    $y = $this->y(array_pop($points));
+    $x = array_pop($points);
+    $this->_pdf->moveto($x,$y);
+
+    while (count($points) > 1) {
+      $y = $this->y(array_pop($points));
+      $x = array_pop($points);
+      $this->_pdf->lineto($x,$y);
+    }
+
+    if ( $fill )
+      $this->_pdf->fill();
+    else
+      $this->_pdf->closepath_stroke();
+  }
+
+  //........................................................................
+
+  function circle($x, $y, $r, $color, $width = null, $style = null, $fill = false) {
+
+    $this->_set_fill_color($color);
+    $this->_set_stroke_color($color);
+
+    if ( !$fill && isset($width) )
+      $this->_set_line_style($width, "round", "round", $style);
+
+    $y = $this->y($y);
+
+    $this->_pdf->circle($x, $y, $r);
+
+    if ( $fill )
+      $this->_pdf->fill();
+    else
+      $this->_pdf->stroke();
+
+  }
+
+  //........................................................................
+
+  function image($img_url, $img_type, $x, $y, $w, $h) {
+    $w = (int)$w;
+    $h = (int)$h;
+
+    $img_type = strtolower($img_type);
+
+    if ( $img_type == "jpg" )
+      $img_type = "jpeg";
+
+    if ( isset($this->_imgs[$img_url]) )
+      $img = $this->_imgs[$img_url];
+
+    else {
+
+      $img = $this->_imgs[$img_url] = $this->_pdf->load_image($img_type, $img_url, "");
+    }
+
+    $y = $this->y($y) - $h;
+    $this->_pdf->fit_image($img, $x, $y, 'boxsize={'. "$w $h" .'} fitmethod=entire');
+
+  }
+
+  //........................................................................
+
+  function text($x, $y, $text, $font, $size, $color = array(0,0,0), $adjust = 0, $angle = 0) {
+    $fh = $this->_load_font($font);
+
+    $this->_pdf->setfont($fh, $size);
+    $this->_set_fill_color($color);
+
+    $y = $this->y($y) - Font_Metrics::get_font_height($font, $size);
+
+    $adjust = (float)$adjust;
+    $angle = -(float)$angle;
+
+    //$this->_pdf->fit_textline(utf8_decode($text), $x, $y, "rotate=$angle wordspacing=$adjust");
+    $this->_pdf->fit_textline($text, $x, $y, "rotate=$angle wordspacing=$adjust");
+
+  }
+
+  //........................................................................
+
+  /**
+   * Add a named destination (similar to <a name="foo">...</a> in html)
+   *
+   * @param string $anchorname The name of the named destination
+   */
+  function add_named_dest($anchorname) {
+    $this->_pdf->add_nameddest($anchorname,"");
+  }
+
+  //........................................................................
+
+  /**
+   * Add a link to the pdf
+   *
+   * @param string $url The url to link to
+   * @param float  $x   The x position of the link
+   * @param float  $y   The y position of the link
+   * @param float  $width   The width of the link
+   * @param float  $height   The height of the link
+   */
+  function add_link($url, $x, $y, $width, $height) {
+
+    $y = $this->y($y) - $height;
+    if ( strpos($url, '#') === 0 ) {
+      // Local link
+      $name = substr($url,1);
+      if ( $name )
+        $this->_pdf->create_annotation($x, $y, $x + $width, $y + $height, 'Link', "contents={$url} destname=". substr($url,1) . " linewidth=0");
+    } else {
+
+      list($proto, $host, $path, $file) = explode_url($url);
+
+      if ( $proto == "" || $proto == "file://" )
+        return; // Local links are not allowed
+      $url = build_url($proto, $host, $path, $file);
+      $url = '{' . rawurldecode($url) . '}';
+      
+      $action = $this->_pdf->create_action("URI", "url=" . $url);
+      $this->_pdf->create_annotation($x, $y, $x + $width, $y + $height, 'Link', "contents={$url} action={activate=$action} linewidth=0");
+    }
+  }
+
+  //........................................................................
+
+  function get_text_width($text, $font, $size, $spacing = 0) {
+    $fh = $this->_load_font($font);
+
+    // Determine the additional width due to extra spacing
+    $num_spaces = mb_substr_count($text," ");
+    $delta = $spacing * $num_spaces;
+    return $this->_pdf->stringwidth($text, $fh, $size) + $delta;
+  }
+
+  //........................................................................
+
+  function get_font_height($font, $size) {
+
+    $fh = $this->_load_font($font);
+
+    $this->_pdf->setfont($fh, $size);
+
+    $asc = $this->_pdf->get_value("ascender", $fh);
+    $desc = $this->_pdf->get_value("descender", $fh);
+
+    // $desc is usually < 0,
+    return self::FONT_HEIGHT_SCALE * $size * ($asc - $desc);
+  }
+
+  //........................................................................
+
+  /**
+   * Writes text at the specified x and y coordinates on every page
+   *
+   * The strings '{PAGE_NUM}' and '{PAGE_COUNT}' are automatically replaced
+   * with their current values.
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   *
+   * @param float $x
+   * @param float $y
+   * @param string $text the text to write
+   * @param string $font the font file to use
+   * @param float $size the font size, in points
+   * @param array $color
+   * @param float $adjust word spacing adjustment
+   * @param float $angle angle to write the text at, measured CW starting from the x-axis
+   */
+  function page_text($x, $y, $text, $font, $size, $color = array(0,0,0),
+                     $adjust = 0, $angle = 0,  $blend = "Normal", $opacity = 1.0) {
+    $_t = "text";
+    $this->_page_text[] = compact("_t", "x", "y", "text", "font", "size", "color", "adjust", "angle");
+  }
+
+  //........................................................................
+
+  /**
+   * Processes a script on every page
+   * 
+   * The variables $pdf, $PAGE_NUM, and $PAGE_COUNT are available.
+   * 
+   * This function can be used to add page numbers to all pages
+   * after the first one, for example.
+   *
+   * @param string $code the script code
+   * @param string $type the language type for script
+   */
+  function page_script($code, $type = "text/php") {
+    $_t = "script";
+    $this->_page_text[] = compact("_t", "code", "type");
+  }
+
+  //........................................................................
+
+  function new_page() {
+
+    // Add objects to the current page
+    $this->_place_objects();
+
+    $this->_pdf->suspend_page("");
+    $this->_pdf->begin_page_ext($this->_width, $this->_height, "");
+    $this->_page_number = ++$this->_page_count;
+
+  }
+
+  //........................................................................
+
+  /**
+   * Add text to each page after rendering is complete
+   */
+  protected function _add_page_text() {
+
+    if ( !count($this->_page_text) )
+      return;
+
+    $this->_pdf->suspend_page("");
+
+    for ($p = 1; $p <= $this->_page_count; $p++) {
+      $this->_pdf->resume_page("pagenumber=$p");
+
+      foreach ($this->_page_text as $pt) {
+        extract($pt);
+
+        switch ($_t) {
+
+        case "text":
+          $text = str_replace(array("{PAGE_NUM}","{PAGE_COUNT}"),
+                              array($p, $this->_page_count), $text);
+          $this->text($x, $y, $text, $font, $size, $color, $adjust, $angle);
+          break;
+
+        case "script":
+          if (!$eval) {
+            $eval = new PHP_Evaluator($this);  
+          }
+          $eval->evaluate($code, array('PAGE_NUM' => $p, 'PAGE_COUNT' => $this->_page_count));
+          break;
+        }
+      }
+
+      $this->_pdf->suspend_page("");
+    }
+
+    $this->_pdf->resume_page("pagenumber=".$this->_page_number);
+  }
+
+  //........................................................................
+
+  function stream($filename, $options = null) {
+
+    // Add page text
+    $this->_add_page_text();
+
+    if ( isset($options["compress"]) && $options["compress"] != 1 )
+      $this->_pdf->set_value("compress", 0);
+    else
+      $this->_pdf->set_value("compress", 6);
+
+    $this->_close();
+
+    if ( self::$IN_MEMORY ) {
+      $data = $this->_pdf->get_buffer();
+      $size = strlen($data);
+
+    } else
+      $size = filesize($this->_file);
+
+
+    $filename = str_replace(array("\n","'"),"", $filename);
+    $attach = (isset($options["Attachment"]) && $options["Attachment"]) ? "attachment" : "inline";
+
+    header("Cache-Control: private");
+    header("Content-type: application/pdf");
+    header("Content-Disposition: $attach; filename=\"$filename\"");
+
+    //header("Content-length: " . $size);
+
+    if ( self::$IN_MEMORY )
+      echo $data;
+
+    else {
+
+      // Chunked readfile()
+      $chunk = (1 << 21); // 2 MB
+      $fh = fopen($this->_file, "rb");
+      if ( !$fh )
+        throw new DOMPDF_Exception("Unable to load temporary PDF file: " . $this->_file);
+
+      while ( !feof($fh) )
+        echo fread($fh,$chunk);
+      fclose($fh);
+
+      //debugpng
+      if (DEBUGPNG) print '[pdflib stream unlink '.$this->_file.']';
+      if (!DEBUGKEEPTEMP)
+
+      unlink($this->_file);
+      $this->_file = null;
+    }
+
+    flush();
+
+
+  }
+
+  //........................................................................
+
+  function output($options = null) {
+
+    // Add page text
+    $this->_add_page_text();
+
+    if ( isset($options["compress"]) && $options["compress"] != 1 )
+      $this->_pdf->set_value("compress", 0);
+    else
+      $this->_pdf->set_value("compress", 6);
+
+    $this->_close();
+
+    if ( self::$IN_MEMORY )
+      $data = $this->_pdf->get_buffer();
+
+    else {
+      $data = file_get_contents($this->_file);
+
+      //debugpng
+      if (DEBUGPNG) print '[pdflib output unlink '.$this->_file.']';
+      if (!DEBUGKEEPTEMP)
+
+      unlink($this->_file);
+      $this->_file = null;
+    }
+
+    return $data;
+  }
+}
+
+// Workaround for idiotic limitation on statics...
+PDFLib_Adapter::$PAPER_SIZES = CPDF_Adapter::$PAPER_SIZES;
+?>
Index: /trunk/filemanager/tp/dompdf/include/list_bullet_image_frame_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/list_bullet_image_frame_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/list_bullet_image_frame_decorator.cls.php	(revision 2000)
@@ -0,0 +1,191 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: list_bullet_image_frame_decorator.cls.php,v $
+ * Created on: 2005-06-28
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 0.5.1.htischer.20090507
+ * - added comment
+ */
+
+/* $Id: list_bullet_image_frame_decorator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Decorates frames for list bullets with custom images
+ *
+ * @access private
+ * @package dompdf
+ */
+class List_Bullet_Image_Frame_Decorator extends Frame_Decorator {
+
+  /**
+   * The underlying image frame
+   * 
+   * @var Image_Frame_Decorator
+   */
+  protected $_img;
+
+  /**
+   * The image's width in pixels
+   *
+   * @var int
+   */
+  protected $_width;
+  
+  /**
+   * The image's height in pixels
+   *
+   * @var int
+   */
+  protected $_height;
+
+  /**
+   * Class constructor
+   *
+   * @param Frame $frame the bullet frame to decorate
+   * @param DOMPDF $dompdf the document's dompdf object
+   */
+  function __construct(Frame $frame, DOMPDF $dompdf) {
+    $style = $frame->get_style();
+    $url = $style->list_style_image;
+    $frame->get_node()->setAttribute("src", $url);
+    $this->_img = new Image_Frame_Decorator($frame, $dompdf);
+    parent::__construct($this->_img, $dompdf);
+    list($width, $height) = getimagesize($this->_img->get_image_url());
+
+    // Resample the bullet image to be consistent with 'auto' sized images
+    // See also Image_Frame_Reflower::get_min_max_width
+    // Tested php ver: value measured in px, suffix "px" not in value: rtrim unnecessary.
+    $this->_width = (((float)rtrim($width, "px")) * 72) / DOMPDF_DPI;
+    $this->_height = (((float)rtrim($height, "px")) * 72) / DOMPDF_DPI;
+ 
+    //If an image is taller as the containing block/box, the box should be extended.
+    //Neighbour elements are overwriting the overlapping image areas.
+    //Todo: Where can the box size be extended?   
+    //Code below has no effect.
+    //See block_frame_reflower _calculate_restricted_height
+    //See generated_frame_reflower, Dompdf:render() "list-item", "-dompdf-list-bullet"S.
+    //Leave for now    
+    //if ($style->min_height < $this->_height ) {
+    //  $style->min_height = $this->_height;
+    //}
+    //$style->height = "auto";   
+  }
+
+  /**
+   * Return the bullet's width
+   *
+   * @return int
+   */
+  function get_width() {
+    //ignore image width, use same width as on predefined bullet List_Bullet_Frame_Decorator
+    //for proper alignment of bullet image and text. Allow image to not fitting on left border.
+    //This controls the distance between bullet image and text 
+    //return $this->_width;
+    return $this->_frame->get_style()->get_font_size()*List_Bullet_Frame_Decorator::BULLET_SIZE + 
+      2 * List_Bullet_Frame_Decorator::BULLET_PADDING;
+  }
+
+  /**
+   * Return the bullet's height
+   *
+   * @return int
+   */
+  function get_height() {
+    //based on image height
+    return $this->_height;
+  }
+  
+  /**
+   * Override get_margin_width
+   *
+   * @return int
+   */
+  function get_margin_width() {
+    //ignore image width, use same width as on predefined bullet List_Bullet_Frame_Decorator
+    //for proper alignment of bullet image and text. Allow image to not fitting on left border.
+    //This controls the extra indentation of text to make room for the bullet image.
+    //Here use actual image size, not predefined bullet size 
+    //return $this->_frame->get_style()->get_font_size()*List_Bullet_Frame_Decorator::BULLET_SIZE + 
+    //  2 * List_Bullet_Frame_Decorator::BULLET_PADDING;
+
+    // Small hack to prevent indenting of list text
+    // Image Might not exist, then position like on list_bullet_frame_decorator fallback to none. 
+    if ( $this->_frame->get_style()->list_style_position == "outside" ||
+         $this->_width == 0) 
+      return 0;
+    //This aligns the "inside" image position with the text.
+    //The text starts to the right of the image.
+    //Between the image and the text there is an added margin of image width.
+    //Where this comes from is unknown.
+    //The corresponding List_Bullet_Frame_Decorator sets a smaller margin. bullet size?
+    return $this->_width + 2 * List_Bullet_Frame_Decorator::BULLET_PADDING;
+  }
+
+  /**
+   * Override get_margin_height()
+   *
+   * @return int
+   */
+  function get_margin_height() {
+    //Hits only on "inset" lists items, to increase height of box
+    //based on image height
+    return $this->_height + 2 * List_Bullet_Frame_Decorator::BULLET_PADDING;
+  }
+
+  /**
+   * Return image url
+   *
+   * @return string
+   */
+  function get_image_url() {
+    return $this->_img->get_image_url();
+  }
+
+  /**
+   * Return the image extension
+   *
+   * @return string
+   */
+  function get_image_ext() {
+    return $this->_img->get_image_ext();
+  }
+  
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/text_frame_reflower.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/text_frame_reflower.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/text_frame_reflower.cls.php	(revision 2000)
@@ -0,0 +1,426 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: text_frame_reflower.cls.php,v $
+ * Created on: 2004-06-17
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: text_frame_reflower.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Reflows text frames.
+ *
+ * @access private
+ * @package dompdf
+ */
+class Text_Frame_Reflower extends Frame_Reflower {
+
+  protected $_block_parent; // Nearest block-level ancestor
+
+  function __construct(Text_Frame_Decorator $frame) {
+    parent::__construct($frame);
+    $this->_block_parent = null;
+
+    // Handle text transform
+    $transform = $this->_frame->get_style()->text_transform;
+    switch ( strtolower($transform) ) {
+    case "capitalize":
+      $this->_frame->set_text( ucwords($this->_frame->get_text()) );
+      break;
+
+    case "uppercase":
+      $this->_frame->set_text( strtoupper($this->_frame->get_text()) );
+      break;
+
+    case "lowercase":
+      $this->_frame->set_text( strtolower($this->_frame->get_text()) );
+      break;
+
+    default:
+      // Do nothing
+      break;
+    }
+  }
+
+  //........................................................................
+
+  protected function _collapse_white_space($text) {
+    //$text = $this->_frame->get_text();
+//     if ( $this->_block_parent->get_current_line("w") == 0 )
+//       $text = ltrim($text, " \n\r\t");
+    return preg_replace("/[\s\n]+/u", " ", $text);
+  }
+
+  //........................................................................
+
+  protected function _line_break($text) {
+    $style = $this->_frame->get_style();
+    $size = $style->font_size;
+    $font = $style->font_family;
+
+    // Determine the available width
+    $line_width = $this->_frame->get_containing_block("w");
+    $current_line_width = $this->_block_parent->get_current_line("w");
+
+    $available_width = $line_width - $current_line_width;
+
+    // split the text into words
+    $words = preg_split('/([\s-]+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
+    $wc = count($words);
+
+    // Account for word-spacing
+    $word_spacing = $style->length_in_pt($style->word_spacing);
+
+    // Determine the frame width including margin, padding & border
+    $text_width = Font_Metrics::get_text_width($text, $font, $size, $word_spacing);
+    $mbp_width =
+      $style->length_in_pt( array( $style->margin_left,
+                                   $style->border_left_width,
+                                   $style->padding_left,
+                                   $style->padding_right,
+                                   $style->border_right_width,
+                                   $style->margin_right), $line_width );
+    $frame_width = $text_width + $mbp_width;
+
+// Debugging:
+//    pre_r("Text: '" . htmlspecialchars($text). "'");
+//    pre_r("width: " .$frame_width);
+//    pre_r("textwidth + delta: $text_width + $mbp_width");
+//    pre_r("font-size: $size");
+//    pre_r("cb[w]: " .$line_width);
+//    pre_r("available width: " . $available_width);
+//    pre_r("current line width: " . $current_line_width);
+
+//     pre_r($words);
+
+    if ( $frame_width <= $available_width )
+      return false;
+
+    // Determine the split point
+    $width = 0;
+    $str = "";
+    reset($words);
+
+    for ($i = 0; $i < count($words); $i += 2) {
+      $word = $words[$i] . (isset($words[$i+1]) ? $words[$i+1] : "");
+      $word_width = Font_Metrics::get_text_width($word, $font, $size, $word_spacing);
+      if ( $width + $word_width + $mbp_width > $available_width )
+        break;
+
+      $width += $word_width;
+      $str .= $word;
+
+    }
+
+    // The first word has overflowed.   Force it onto the line
+    if ( $current_line_width == 0 && $width == 0 ) {
+      $width += $word_width;
+      $str .= $word;
+    }
+
+    $offset = mb_strlen($str);
+
+// More debugging:
+//     pre_var_dump($str);
+//     pre_r("Width: ". $width);
+//     pre_r("Offset: " . $offset);
+
+    return $offset;
+
+  }
+
+  //........................................................................
+
+  protected function _newline_break($text) {
+
+    if ( ($i = mb_strpos($text, "\n")) === false)
+      return false;
+
+    return $i+1;
+
+  }
+
+  //........................................................................
+
+  protected function _layout_line() {
+    $style = $this->_frame->get_style();
+    $text = $this->_frame->get_text();
+    $size = $style->font_size;
+    $font = $style->font_family;
+    $word_spacing = $style->length_in_pt($style->word_spacing);
+
+    // Determine the text height
+    $style->height = Font_Metrics::get_font_height( $font, $size );
+
+    $split = false;
+    $add_line = false;
+
+    // Handle text transform:
+    // http://www.w3.org/TR/CSS21/text.html#propdef-text-transform
+
+    switch ($style->text_transform) {
+
+    default:
+      break;
+
+    case "capitalize":
+      $text = mb_convert_case($text, MB_CASE_TITLE, 'UTF-8');
+      break;
+
+    case "uppercase":
+      $text = mb_convert_case($text, MB_CASE_UPPER, 'UTF-8');
+      break;
+
+    case "lowercase":
+      $text = mb_convert_case($text, MB_CASE_LOWER, 'UTF-8');
+      break;
+
+    }
+    
+    // Handle white-space property:
+    // http://www.w3.org/TR/CSS21/text.html#propdef-white-space
+
+    switch ($style->white_space) {
+
+    default:
+    case "normal":
+      $this->_frame->set_text( $text = $this->_collapse_white_space($text) );
+      if ( $text == "" )
+        break;
+
+      $split = $this->_line_break($text);
+      break;
+
+    case "pre":
+      $split = $this->_newline_break($text);
+      $add_line = $split !== false;
+      break;
+
+    case "nowrap":
+      $this->_frame->set_text( $text = $this->_collapse_white_space($text) );
+      break;
+
+    case "pre-wrap":
+      $split = $this->_newline_break($text);
+
+      if ( ($tmp = $this->_line_break($text)) !== false ) {
+        $add_line = $split < $tmp;
+        $split = min($tmp, $split);
+      } else
+        $add_line = true;
+
+      break;
+
+    case "pre-line":
+      // Collapse white-space except for \n
+      $this->_frame->set_text( $text = preg_replace( "/[ \t]+/u", " ", $text ) );
+
+      if ( $text == "" )
+        break;
+
+      $split = $this->_newline_break($text);
+
+      if ( ($tmp = $this->_line_break($text)) !== false ) {
+        $add_line = $split < $tmp;
+        $split = min($tmp, $split);
+      } else
+        $add_line = true;
+
+      break;
+
+    }
+
+    // Handle degenerate case
+    if ( $text === "" )
+      return;
+
+    if ( $split !== false) {
+
+      // Handle edge cases
+      if ( $split == 0 && $text == " " ) {
+        $this->_frame->set_text("");
+        return;
+      }
+
+      if ( $split == 0 ) {
+
+        // Trim newlines from the beginning of the line
+        //$this->_frame->set_text(ltrim($text, "\n\r"));
+
+        $this->_block_parent->add_line();
+        $this->_frame->position();
+
+        // Layout the new line
+        $this->_layout_line();
+
+      } else if ( $split < mb_strlen($this->_frame->get_text()) ) {
+
+        // split the line if required
+        $this->_frame->split_text($split);
+
+        // Remove any trailing newlines
+        $t = $this->_frame->get_text();
+
+        if ( $split > 1 && $t{$split-1} == "\n" )
+          $this->_frame->set_text( mb_substr($t, 0, -1) );
+
+      }
+
+      if ( $add_line ) {
+        $this->_block_parent->add_line();
+        $this->_frame->position();
+      }
+
+      // Set our new width
+      $this->_frame->recalculate_width();
+
+    } else {
+
+      $this->_frame->recalculate_width();
+
+    }
+  }
+
+  //........................................................................
+
+  function reflow() {
+
+    $this->_block_parent = $this->_frame->find_block_parent();
+
+    // Left trim the text if this is the first text on the line and we're
+    // collapsing white space
+//     if ( $this->_block_parent->get_current_line("w") == 0 &&
+//          ($this->_frame->get_style()->white_space != "pre" ||
+//           $this->_frame->get_style()->white_space != "pre-wrap") ) {
+//       $this->_frame->set_text( ltrim( $this->_frame->get_text() ) );
+//     }
+    
+    $this->_frame->position();
+
+    $this->_layout_line();
+
+  }
+
+  //........................................................................
+
+  // Returns an array(0 => min, 1 => max, "min" => min, "max" => max) of the
+  // minimum and maximum widths of this frame
+  function get_min_max_width() {
+
+    $style = $this->_frame->get_style();
+    $this->_block_parent = $this->_frame->find_block_parent();
+    $line_width = $this->_frame->get_containing_block("w");
+
+    $str = $text = $this->_frame->get_text();
+    $size = $style->font_size;
+    $font = $style->font_family;
+
+    $spacing = $style->length_in_pt($style->word_spacing);
+
+    switch($style->white_space) {
+
+    default:
+    case "normal":
+      $str = preg_replace("/[\s\n]+/u"," ", $str);
+    case "pre-wrap":
+    case "pre-line":
+
+      // Find the longest word (i.e. minimum length)
+
+      // This technique (using arrays & an anonymous function) is actually
+      // faster than doing a single-pass character by character scan.  Heh,
+      // yes I took the time to bench it ;)
+      $words = array_flip(preg_split("/[\s-]+/u",$str, -1, PREG_SPLIT_DELIM_CAPTURE));
+      array_walk($words, create_function('&$val,$str',
+                                         '$val = Font_Metrics::get_text_width($str, "'.$font.'", '.$size.', '.$spacing.');'));
+      arsort($words);
+      $min = reset($words);
+      break;
+
+    case "pre":
+      $lines = array_flip(preg_split("/\n/u", $str));
+      array_walk($lines, create_function('&$val,$str',
+                                         '$val = Font_Metrics::get_text_width($str, "'.$font.'", '.$size.', '.$spacing.');'));
+
+      arsort($lines);
+      $min = reset($lines);
+      break;
+
+    case "nowrap":
+      $min = Font_Metrics::get_text_width($this->_collapse_white_space($str), $font, $size, $spacing);
+      break;
+
+    }
+
+    switch ($style->white_space) {
+
+    default:
+    case "normal":
+    case "nowrap":
+      $str = preg_replace("/[\s\n]+/u"," ", $text);
+      break;
+
+    case "pre-line":
+      $str = preg_replace( "/[ \t]+/u", " ", $text);
+
+    case "pre-wrap":
+      // Find the longest word (i.e. minimum length)
+      $lines = array_flip(preg_split("/\n/", $text));
+      array_walk($lines, create_function('&$val,$str',
+                                         '$val = Font_Metrics::get_text_width($str, "'.$font.'", '.$size.', '.$spacing.');'));
+      arsort($lines);
+      reset($lines);
+      $str = key($lines);
+      break;
+
+    }
+
+    $max = Font_Metrics::get_text_width($str, $font, $size, $spacing);
+    
+    $delta = $style->length_in_pt(array($style->margin_left,
+                                        $style->border_left_width,
+                                        $style->padding_left,
+                                        $style->padding_right,
+                                        $style->border_right_width,
+                                        $style->margin_right), $line_width);
+    $min += $delta;
+    $max += $delta;
+
+    return array($min, $max, "min" => $min, "max" => $max);
+
+  }
+
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/table_frame_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/table_frame_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/table_frame_decorator.cls.php	(revision 2000)
@@ -0,0 +1,343 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: table_frame_decorator.cls.php,v $
+ * Created on: 2004-06-04
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: table_frame_decorator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Decorates Frames for table layout
+ *
+ * @access private
+ * @package dompdf
+ */
+class Table_Frame_Decorator extends Frame_Decorator {
+  static $VALID_CHILDREN = array("table-row-group",
+                                 "table-row",
+                                 "table-header-group",
+                                 "table-footer-group",
+                                 "table-column",
+                                 "table-column-group",
+                                 "table-caption",
+                                 "table-cell");
+
+  static $ROW_GROUPS = array('table-row-group',
+                             'table-header-group',
+                             'table-footer-group');
+
+  /**
+   * The Cellmap object for this table.  The cellmap maps table cells
+   * to rows and columns, and aids in calculating column widths.
+   *
+   * @var Cellmap
+   */
+  protected $_cellmap;
+
+  /**
+   * The minimum width of the table, in pt
+   *
+   * @var float
+   */
+  protected $_min_width;
+
+  /**
+   * The maximum width of the table, in pt
+   *
+   * @var float
+   */
+  protected $_max_width;
+
+  /**
+   * Table header rows.  Each table header is duplicated when a table
+   * spans pages.
+   *
+   * @var array
+   */
+  protected $_headers;
+
+  /**
+   * Table footer rows.  Each table footer is duplicated when a table
+   * spans pages.
+   *
+   * @var array
+   */
+  protected $_footers;
+
+  /**
+   * Class constructor
+   *
+   * @param Frame $frame the frame to decorate
+   */
+  function __construct(Frame $frame, DOMPDF $dompdf) {
+    parent::__construct($frame, $dompdf);
+    $this->_cellmap = new Cellmap($this);
+    $this->_min_width = null;
+    $this->_max_width = null;
+    $this->_headers = array();
+    $this->_footers = array();
+  }
+
+
+  function reset() {
+    parent::reset();
+    $this->_cellmap->reset();
+    $this->_min_width = null;
+    $this->_max_width = null;
+    $this->_headers = array();
+    $this->_footers = array();
+    $this->_reflower->reset();
+  }
+
+  //........................................................................
+
+  /**
+   * split the table at $row.  $row and all subsequent rows will be
+   * added to the clone.  This method is overidden in order to remove
+   * frames from the cellmap properly.
+   *
+   * @param Frame $row
+   */
+  function split($child = null) {
+
+    if ( is_null($child) ) {
+      parent::split();
+      return;
+    }
+
+    // If $child is a header or if it is the first non-header row, do
+    // not duplicate headers, simply move the table to the next page.
+    if ( count($this->_headers) && !in_array($child, $this->_headers, true) &&
+         !in_array($child->get_prev_sibling(), $this->_headers, true) ) {
+
+      $first_header = null;
+
+      // Insert copies of the table headers before $child
+      foreach ($this->_headers as $header) {
+
+        $new_header = $header->deep_copy();
+
+        if ( is_null($first_header) )
+          $first_header = $new_header;
+
+        $this->insert_child_before($new_header, $child);
+      }
+
+      parent::split($first_header);
+
+    } else if ( in_array($child->get_style()->display, self::$ROW_GROUPS) ) {
+
+      // Individual rows should have already been handled
+      parent::split($child);
+
+    } else {
+
+      $iter = $child;
+
+      while ($iter) {
+        $this->_cellmap->remove_row($iter);
+        $iter = $iter->get_next_sibling();
+      }
+
+      parent::split($child);
+    }
+  }
+
+  /**
+   * Static function to locate the parent table of a frame
+   *
+   * @param Frame $frame
+   * @return Frame the table that is an ancestor of $frame
+   */
+  static function find_parent_table(Frame $frame) {
+
+    while ( $frame = $frame->get_parent() )
+      if ( in_array($frame->get_style()->display, Style::$TABLE_TYPES) )
+        break;
+
+    return $frame;
+  }
+
+  /**
+   * Return this table's Cellmap
+   *
+   * @return Cellmap
+   */
+  function get_cellmap() { return $this->_cellmap; }
+
+  /**
+   * Return the minimum width of this table
+   *
+   * @return float
+   */
+  function get_min_width() { return $this->_min_width; }
+
+  /**
+   * Return the maximum width of this table
+   *
+   * @return float
+   */
+  function get_max_width() { return $this->_max_width; }
+
+  /**
+   * Set the minimum width of the table
+   *
+   * @param float $width the new minimum width
+   */
+  function set_min_width($width) { $this->_min_width = $width; }
+
+  /**
+   * Set the maximum width of the table
+   *
+   * @param float $width the new maximum width
+   */
+  function set_max_width($width) { $this->_max_width = $width; }
+
+  /**
+   * Restructure tree so that the table has the correct structure.
+   * Invalid children (i.e. all non-table-rows) are moved below the
+   * table.
+   */
+  function normalise() {
+
+    // Store frames generated by invalid tags and move them outside the table
+    $erroneous_frames = array();
+    $anon_row = false;
+    $iter = $this->get_first_child();
+    while ( $iter ) {
+      $child = $iter;
+      $iter = $iter->get_next_sibling();
+
+      $display = $child->get_style()->display;
+
+      if ( $anon_row ) {
+
+        if ( $display == "table-row" ) {
+          // Add the previous anonymous row
+          $this->insert_child_before($table_row, $child);
+
+          $table_row->normalise();
+          $child->normalise();
+          $anon_row = false;
+          continue;
+        }
+
+        // add the child to the anonymous row
+        $table_row->append_child($child);
+        continue;
+
+      } else {
+
+        if ( $display == "table-row" ) {
+          $child->normalise();
+          continue;
+        }
+
+        if ( $display == "table-cell") {
+          // Create an anonymous table row
+          $tr = $this->get_node()->ownerDocument->createElement("tr");
+
+          $frame = new Frame($tr);
+
+          $css = $this->get_style()->get_stylesheet();
+          $style = $css->create_style();
+          $style->inherit($this->get_style());
+
+          // Lookup styles for tr tags.  If the user wants styles to work
+          // better, they should make the tr explicit... I'm not going to
+          // try to guess what they intended.
+          if ( $tr_style = $css->lookup("tr") )
+            $style->merge($tr_style);
+
+          // Okay, I have absolutely no idea why I need this clone here, but
+          // if it's omitted, php (as of 2004-07-28) segfaults.
+          $frame->set_style(clone $style);
+          $table_row = Frame_Factory::decorate_frame($frame, $this->_dompdf);
+          $table_row->set_root($this->_root);
+
+          // Add the cell to the row
+          $table_row->append_child($child);
+
+          $anon_row = true;
+          continue;
+        }
+
+        if ( !in_array($display, self::$VALID_CHILDREN) ) {
+          $erroneous_frames[] = $child;
+          continue;
+        }
+
+        // Normalise other table parts (i.e. row groups)
+        foreach ($child->get_children() as $grandchild) {
+          if ( $grandchild->get_style()->display == "table-row" )
+            $grandchild->normalise();
+        }
+
+        // Add headers and footers
+        if ( $display == "table-header-group" )
+          $this->_headers[] = $child;
+
+        else if ( $display == "table-footer-group" )
+          $this->_footers[] = $child;
+      }
+    }
+
+    if ( $anon_row ) {
+      // Add the row to the table
+      $this->_frame->append_child($table_row);
+      $table_row->normalise();
+      $this->_cellmap->add_row();
+    }
+
+    foreach ($erroneous_frames as $frame)
+      $this->move_after($frame);
+
+  }
+
+  //........................................................................
+
+  /**
+   * Moves the specified frame and it's corresponding node outside of
+   * the table.
+   *
+   * @param Frame $frame the frame to move
+   */
+  function move_after(Frame $frame) {
+    $this->get_parent()->insert_child_after($frame, $this);
+  }
+
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/table_cell_frame_reflower.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/table_cell_frame_reflower.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/table_cell_frame_reflower.cls.php	(revision 2000)
@@ -0,0 +1,150 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: table_cell_frame_reflower.cls.php,v $
+ * Created on: 2004-06-07
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: table_cell_frame_reflower.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+
+/**
+ * Reflows table cells
+ *
+ * @access private
+ * @package dompdf
+ */
+class Table_Cell_Frame_Reflower extends Block_Frame_Reflower {
+
+  //........................................................................
+
+  function __construct(Frame $frame) {
+    parent::__construct($frame);
+  }
+
+  //........................................................................
+
+  function reflow() {
+
+    $style = $this->_frame->get_style();
+
+    $table = Table_Frame_Decorator::find_parent_table($this->_frame);
+    $cellmap = $table->get_cellmap();
+
+    list($x, $y) = $cellmap->get_frame_position($this->_frame);
+    $this->_frame->set_position($x, $y);
+
+    $cells = $cellmap->get_spanned_cells($this->_frame);
+
+    $w = 0;
+    foreach ( $cells["columns"] as $i ) {
+      $col = $cellmap->get_column( $i );
+      $w += $col["used-width"];
+    }
+
+    //FIXME?
+    $h = $this->_frame->get_containing_block("h");
+
+    $left_space = $style->length_in_pt(array($style->margin_left,
+                                             $style->padding_left,
+                                             $style->border_left_width),
+                                       $w);
+
+    $right_space = $style->length_in_pt(array($style->padding_right,
+                                              $style->margin_right,
+                                              $style->border_right_width),
+                                        $w);
+
+    $top_space = $style->length_in_pt(array($style->margin_top,
+                                            $style->padding_top,
+                                            $style->border_top_width),
+                                      $w);
+    $bottom_space = $style->length_in_pt(array($style->margin_bottom,
+                                               $style->padding_bottom,
+                                               $style->border_bottom_width),
+                                      $w);
+
+    $style->width = $cb_w = $w - $left_space - $right_space;
+
+    $content_x = $x + $left_space;
+    $content_y = $line_y = $y + $top_space;
+
+    // Adjust the first line based on the text-indent property
+    $indent = $style->length_in_pt($style->text_indent, $w);
+    $this->_frame->increase_line_width($indent);
+
+    // Set the y position of the first line in the cell
+    $page = $this->_frame->get_root();
+    $this->_frame->set_current_line($line_y);
+    
+    // Set the containing blocks and reflow each child
+    foreach ( $this->_frame->get_children() as $child ) {
+      
+      if ( $page->is_full() )
+        break;
+    
+      $child->set_containing_block($content_x, $content_y, $cb_w, $h);
+      $child->reflow();
+
+      $this->_frame->add_frame_to_line( $child );
+
+    }
+
+    // Determine our height
+    $style_height = $style->length_in_pt($style->height, $w);
+
+    $this->_frame->set_content_height($this->_calculate_content_height());
+
+    $height = max($style_height, $this->_frame->get_content_height());
+
+    // Let the cellmap know our height
+    $cell_height = $height / count($cells["rows"]);
+
+    if ($style_height < $height)
+      $cell_height += $top_space + $bottom_space;
+
+    foreach ($cells["rows"] as $i)
+      $cellmap->set_row_height($i, $cell_height);
+
+    $style->height = $height;
+
+    $this->_text_align();
+
+    $this->vertical_align();
+
+  }
+
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/image_cache.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/image_cache.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/image_cache.cls.php	(revision 2000)
@@ -0,0 +1,220 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: image_cache.cls.php,v $
+ * Created on: 2004-08-08
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 0.5.1.htischer.20090507
+ * - On getting type of images don't require any file endings
+ *   and don't strip off url parameters,
+ *   to allowing dynamically generated sites with image id
+ *   in url parameters and not at end of url or missing file extension
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version dompdf_trunk_with_helmut_mods.20090524
+ * - Made debug messages more individually configurable
+ * @version 20090622
+ * - don't cache broken image, but refer to original broken image replacement
+ */
+
+/* $Id */
+
+/**
+ * Static class that resolves image urls and downloads and caches
+ * remote images if required.
+ *
+ * @access private
+ * @package dompdf
+ */
+class Image_Cache {
+
+  /**
+   * Array of downloaded images.  Cached so that identical images are
+   * not needlessly downloaded.
+   *
+   * @var array
+   */
+  static protected $_cache = array();
+
+
+  /**
+   * Resolve and fetch an image for use.
+   *
+   * @param string $url        The url of the image
+   * @param string $proto      Default protocol if none specified in $url
+   * @param string $host       Default host if none specified in $url
+   * @param string $base_path  Default path if none specified in $url
+   * @return array             An array with two elements: The local path to the image and the image extension
+   */
+  static function resolve_url($url, $proto, $host, $base_path) {
+    global $_dompdf_warnings;
+
+    $parsed_url = explode_url($url);
+
+    $DEBUGPNG=DEBUGPNG; //=DEBUGPNG; Allow override of global setting for ad hoc debug
+    $full_url_dbg = '';
+    
+    //debugpng
+    if ($DEBUGPNG) print 'resolve_url('.$url.','.$proto.','.$host.','.$base_path.')('.$parsed_url['protocol'].')';
+
+    $remote = ($proto != "" && $proto != "file://");
+    $remote = $remote || ($parsed_url['protocol'] != "");
+
+    if ( !DOMPDF_ENABLE_REMOTE && $remote ) {
+      $resolved_url = DOMPDF_LIB_DIR . "/res/broken_image.png";
+      $ext = "png";
+
+      //debugpng
+      if ($DEBUGPNG) $full_url_dbg = '(blockedremote)';
+
+    } else if ( DOMPDF_ENABLE_REMOTE && $remote ) {
+      // Download remote files to a temporary directory
+      $full_url = build_url($proto, $host, $base_path, $url);
+
+      if ( isset(self::$_cache[$full_url]) ) {
+        list($resolved_url,$ext) = self::$_cache[$full_url];
+
+        //debugpng
+        if ($DEBUGPNG) $full_url_dbg = $full_url.'(cache)';
+
+      } else {
+
+        $resolved_url = tempnam(DOMPDF_TEMP_DIR, "ca_dompdf_img_");
+        //debugpng
+        if ($DEBUGPNG) echo $resolved_url . "\n";
+
+        $old_err = set_error_handler("record_warnings");
+        $image = file_get_contents($full_url);
+        restore_error_handler();
+
+        if ( strlen($image) == 0 ) {
+          //target image not found
+          $resolved_url = DOMPDF_LIB_DIR . "/res/broken_image.png";
+          $ext = "png";
+
+          //debugpng
+          if ($DEBUGPNG) $full_url_dbg = $full_url.'(missing)';
+
+        } else {
+
+        file_put_contents($resolved_url, $image);
+
+		//e.g. fetch.php?media=url.jpg&cache=1
+		//- Image file name might be one of the dynamic parts of the url, don't strip off!
+		//  if ( preg_match("/.*\.(\w+)/",$url,$match) ) $ext = $match[1];
+		//- a remote url does not need to have a file extension at all
+        //- local cached file does not have a matching file extension
+        //Therefore get image type from the content
+
+        $imagedim = getimagesize($resolved_url);
+        if( $imagedim[2] >= 1 && $imagedim[2] <=3 && $imagedim[0] && $imagedim[1] ) {
+        //target image is valid
+
+        $imagetypes = array('','gif','jpeg','png','swf');
+        $ext = $imagetypes[$imagedim[2]];
+        if ( rename($resolved_url,$resolved_url.'.'.$ext) ) {
+          $resolved_url .= '.'.$ext;
+        }
+ 
+ 		//Don't put replacement image into cache - otherwise it will be deleted on cache cleanup.
+ 		//Only execute on successfull caching of remote image.
+        self::$_cache[$full_url] = array($resolved_url,$ext);
+
+        } else {
+          //target image is not valid.
+          unlink($resolved_url);
+          
+          $resolved_url = DOMPDF_LIB_DIR . "/res/broken_image.png";
+          $ext = "png";
+        }
+        }
+
+      }
+
+    } else {
+
+      $resolved_url = build_url($proto, $host, $base_path, $url);
+      if ($DEBUGPNG) print 'build_url('.$proto.','.$host.','.$base_path.','.$url.')('.$resolved_url.')';
+
+      if ( !preg_match("/.*\.(\w+)/",$url,$match) ) {
+        //debugpng
+        if ($DEBUGPNG) print '[resolve_url exception '.$url.']';
+          throw new DOMPDF_Exception("Unknown image type: $url.");
+        }
+
+        $ext = $match[1];
+
+        //debugpng
+        if ($DEBUGPNG) $full_url_dbg = '(local)';
+
+    }
+
+    if ( !is_readable($resolved_url) || !filesize($resolved_url) ) {
+
+      //debugpng
+      if ($DEBUGPNG) $full_url_dbg .= '(nocache'.$resolved_url.')';
+
+      $_dompdf_warnings[] = "File " .$resolved_url . " is not readable or is an empty file.\n";
+      $resolved_url = DOMPDF_LIB_DIR . "/res/broken_image.png";
+      $ext = "png";
+    }
+
+    //debugpng
+    if ($DEBUGPNG) print '[resolve_url '.$url.'|'.$full_url_dbg.'|'.$resolved_url.'|'.$ext.']';
+
+    return array($resolved_url, $ext);
+  }
+
+  /**
+   * Unlink all cached images (i.e. temporary images either downloaded
+   * or converted)
+   */
+  static function clear() {
+    if ( count(self::$_cache) ) {
+      while ($entry = array_shift(self::$_cache)) {
+        list($file, $ext) = $entry;
+        //debugpng
+        if (DEBUGPNG) print '[clear unlink '.$file.']';
+        if (!DEBUGKEEPTEMP)
+          //XXX: Should we have some kind of fallback or warning if unlink() fails?
+          unlink($file);
+      }
+    }
+  }
+
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/renderer.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/renderer.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/renderer.cls.php	(revision 2000)
@@ -0,0 +1,227 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: renderer.cls.php,v $
+ * Created on: 2004-06-03
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: renderer.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Concrete renderer
+ *
+ * Instantiates several specific renderers in order to render any given
+ * frame.
+ *
+ * @access private
+ * @package dompdf
+ */
+class Renderer extends Abstract_Renderer {
+
+  /**
+   * Array of renderers for specific frame types
+   *
+   * @var array
+   */
+  protected $_renderers;
+    
+  /**
+   * Cache of the callbacks array
+   * 
+   * @var array
+   */
+  private $_callbacks;
+    
+  /**
+   * Advance the canvas to the next page
+   */  
+  function new_page() {
+    $this->_canvas->new_page();
+  }
+
+  /**
+   * Render frames recursively
+   *
+   * @param Frame $frame the frame to render
+   */
+  function render(Frame $frame) {    
+    global $_dompdf_debug;
+
+    if ( $_dompdf_debug ) {
+      echo $frame;
+      flush();
+    }
+
+    $display = $frame->get_style()->display;
+    
+    switch ($display) {
+      
+    case "block":
+    case "list-item":
+    case "inline-block":
+    case "table":
+    case "table-row-group":
+    case "table-header-group":
+    case "table-footer-group":
+    case "inline-table":
+      $this->_render_frame("block", $frame);
+      break;
+
+    case "inline":
+      if ( $frame->get_node()->nodeName == "#text" )
+        $this->_render_frame("text", $frame);
+      else
+        $this->_render_frame("inline", $frame);
+      break;
+
+    case "table-cell":
+      $this->_render_frame("table-cell", $frame);
+      break;
+
+    case "-dompdf-list-bullet":
+      $this->_render_frame("list-bullet", $frame);
+      break;
+
+    case "-dompdf-image":
+      $this->_render_frame("image", $frame);
+      break;
+      
+    case "none":
+      $node = $frame->get_node();
+          
+      if ( $node->nodeName == "script" &&
+           ( $node->getAttribute("type") == "text/php" ||
+             $node->getAttribute("language") == "php" ) ) {
+        // Evaluate embedded php scripts
+        $this->_render_frame("php", $frame);
+      }
+
+      // Don't render children, so skip to next iter
+      return;
+      
+    default:
+      break;
+
+    }
+
+    // Check for begin frame callback
+    $this->_check_callbacks("begin_frame", $frame);
+    
+    foreach ($frame->get_children() as $child)
+      $this->render($child);
+
+    // Check for end frame callback
+    $this->_check_callbacks("end_frame", $frame);
+    
+  }
+  
+  /**
+   * Check for callbacks that need to be performed when a given event
+   * gets triggered on a frame
+   *
+   * @param string $event the type of event
+   * @param Frame $frame the frame that event is triggered on
+   */
+  protected function _check_callbacks($event, $frame) {
+    if (!isset($this->_callbacks)) {
+      $this->_callbacks = $this->_dompdf->get_callbacks();
+    }
+    
+    if (is_array($this->_callbacks) && isset($this->_callbacks[$event])) {
+      $info = array(0 => $this->_canvas, "canvas" => $this->_canvas,
+                    1 => $frame, "frame" => $frame);
+      $fs = $this->_callbacks[$event];
+      foreach ($fs as $f) {
+        if (is_callable($f)) {
+          if (is_array($f)) {
+            $f[0]->$f[1]($info);
+          } else {
+            $f($info);
+          }
+        }
+      }
+    }
+  }
+
+  /**
+   * Render a single frame
+   *
+   * Creates Renderer objects on demand
+   *
+   * @param string $type type of renderer to use
+   * @param Frame $frame the frame to render
+   */
+  protected function _render_frame($type, $frame) {
+
+    if ( !isset($this->_renderers[$type]) ) {
+      
+      switch ($type) {
+      case "block":
+        $this->_renderers["block"] = new Block_Renderer($this->_dompdf);
+        break;
+
+      case "inline":
+        $this->_renderers["inline"] = new Inline_Renderer($this->_dompdf);
+        break;
+
+      case "text":
+        $this->_renderers["text"] = new Text_Renderer($this->_dompdf);
+        break;
+
+      case "image":
+        $this->_renderers["image"] = new Image_Renderer($this->_dompdf);
+        break;
+      
+      case "table-cell":
+        $this->_renderers["table-cell"] = new Table_Cell_Renderer($this->_dompdf);
+        break;
+
+      case "list-bullet":
+        $this->_renderers["list-bullet"] = new List_Bullet_Renderer($this->_dompdf);
+        break;
+
+      case "php":
+        $this->_renderers["php"] = new PHP_Evaluator($this->_canvas);
+        break;
+
+      }
+    }
+    
+    $this->_renderers[$type]->render($frame);
+
+  }
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/table_frame_reflower.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/table_frame_reflower.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/table_frame_reflower.cls.php	(revision 2000)
@@ -0,0 +1,568 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: table_frame_reflower.cls.php,v $
+ * Created on: 2004-06-17
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: table_frame_reflower.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Reflows tables
+ *
+ * @access private
+ * @package dompdf
+ */
+class Table_Frame_Reflower extends Frame_Reflower {
+
+  /**
+   * Cache of results between call to get_min_max_width and assign_widths
+   *
+   * @var array
+   */
+  protected $_state;
+
+  function __construct(Table_Frame_Decorator $frame) {
+    $this->_state = null;
+    parent::__construct($frame);
+  }
+
+  /**
+   * State is held here so it needs to be reset along with the decorator
+   */
+  function reset() {
+    $this->_state = null;
+    $this->_min_max_cache = null;
+  }
+
+  //........................................................................
+
+  protected function _assign_widths() {
+    $style = $this->_frame->get_style();
+
+    // Find the min/max width of the table and sort the columns into
+    // absolute/percent/auto arrays
+    $min_width = $this->_state["min_width"];
+    $max_width = $this->_state["max_width"];
+    $percent_used = $this->_state["percent_used"];
+    $absolute_used = $this->_state["absolute_used"];
+    $auto_min = $this->_state["auto_min"];
+
+    $absolute =& $this->_state["absolute"];
+    $percent =& $this->_state["percent"];
+    $auto =& $this->_state["auto"];
+
+    // Determine the actual width of the table
+    $cb = $this->_frame->get_containing_block();
+    $columns =& $this->_frame->get_cellmap()->get_columns();
+
+    $width = $style->width;
+
+    // Calcluate padding & border fudge factor
+    $left = $style->margin_left;
+    $right = $style->margin_right;
+
+    $left = $left == "auto" ? 0 : $style->length_in_pt($left, $cb["w"]);
+    $right = $right == "auto" ? 0 : $style->length_in_pt($right, $cb["w"]);
+
+    $delta = $left + $right + $style->length_in_pt(array($style->padding_left,
+                                                         $style->border_left_width,
+                                                         $style->border_right_width,
+                                                         $style->padding_right), $cb["w"]);
+
+    $min_table_width = $style->length_in_pt( $style->min_width, $cb["w"] - $delta );
+
+    // min & max widths already include borders & padding
+    $min_width -= $delta;
+    $max_width -= $delta;
+    
+    if ( $width !== "auto" ) {
+
+      $preferred_width = $style->length_in_pt($width, $cb["w"]) - $delta;
+
+      if ( $preferred_width < $min_table_width )
+        $preferred_width = $min_table_width;
+
+      if ( $preferred_width > $min_width )
+        $width = $preferred_width;
+      else
+        $width = $min_width;
+
+    } else {
+
+      if ( $max_width + $delta < $cb["w"] )
+        $width = $max_width;
+      else if ( $cb["w"] - $delta > $min_width )
+        $width = $cb["w"] - $delta;
+      else
+        $width = $min_width;
+
+      if ( $width < $min_table_width )
+        $width = $min_table_width;
+
+    }
+
+    // Store our resolved width
+    $style->width = $width;
+
+    $cellmap = $this->_frame->get_cellmap();
+
+    // If the whole table fits on the page, then assign each column it's max width
+    if ( $width == $max_width ) {
+
+      foreach (array_keys($columns) as $i)
+        $cellmap->set_column_width($i, $columns[$i]["max-width"]);
+
+      return;
+    }
+
+    // Determine leftover and assign it evenly to all columns
+    if ( $width > $min_width ) {
+
+      // We have four cases to deal with:
+      //
+      // 1. All columns are auto--no widths have been specified.  In this
+      // case we distribute extra space across all columns weighted by max-width.
+      //
+      // 2. Only absolute widths have been specified.  In this case we
+      // distribute any extra space equally among 'width: auto' columns, or all
+      // columns if no auto columns have been specified.
+      //
+      // 3. Only percentage widths have been specified.  In this case we
+      // normalize the percentage values and distribute any remaining % to
+      // width: auto columns.  We then proceed to assign widths as fractions
+      // of the table width.
+      //
+      // 4. Both absolute and percentage widths have been specified.
+
+      // Case 1:
+      if ( $absolute_used == 0 && $percent_used == 0 ) {
+        $increment = $width - $min_width;
+
+        foreach (array_keys($columns) as $i)
+          $cellmap->set_column_width($i, $columns[$i]["min-width"] + $increment * ($columns[$i]["max-width"] / $max_width));
+        return;
+      }
+
+
+      // Case 2
+      if ( $absolute_used > 0 && $percent_used == 0 ) {
+
+        if ( count($auto) > 0 )
+          $increment = ($width - $auto_min - $absolute_used) / count($auto);
+
+        // Use the absolutely specified width or the increment
+        foreach (array_keys($columns) as $i) {
+
+          if ( $columns[$i]["absolute"] > 0 && count($auto) )
+            $cellmap->set_column_width($i, $columns[$i]["min-width"]);
+          else if ( count($auto) ) 
+            $cellmap->set_column_width($i, $columns[$i]["min-width"] + $increment);
+          else {
+            // All absolute columns
+            $increment = ($width - $absolute_used) * $columns[$i]["absolute"] / $absolute_used;
+
+            $cellmap->set_column_width($i, $columns[$i]["min-width"] + $increment);
+          }
+
+        }
+        return;
+      }
+
+
+      // Case 3:
+      if ( $absolute_used == 0 && $percent_used > 0 ) {
+
+        $scale = null;
+        $remaining = null;
+
+        // Scale percent values if the total percentage is > 100, or if all
+        // values are specified as percentages.
+        if ( $percent_used > 100 || count($auto) == 0)
+          $scale = 100 / $percent_used;
+        else
+          $scale = 1;
+
+        // Account for the minimum space used by the unassigned auto columns
+        $used_width = $auto_min;
+
+        foreach ($percent as $i) {
+          $columns[$i]["percent"] *= $scale;
+
+          $slack = $width - $used_width;
+
+          $w = min($columns[$i]["percent"] * $width/100, $slack);
+
+          if ( $w < $columns[$i]["min-width"] )
+            $w = $columns[$i]["min-width"];
+
+          $cellmap->set_column_width($i, $w);
+          $used_width += $w;
+
+        }
+
+        // This works because $used_width includes the min-width of each
+        // unassigned column
+        if ( count($auto) > 0 ) {
+          $increment = ($width - $used_width) / count($auto);
+
+          foreach ($auto as $i)
+            $cellmap->set_column_width($i, $columns[$i]["min-width"] + $increment);
+
+        }
+        return;
+      }
+
+      // Case 4:
+
+      // First-come, first served
+      if ( $absolute_used > 0 && $percent_used > 0 ) {
+
+        $used_width = $auto_min;
+
+        foreach ($absolute as $i) {
+          $cellmap->set_column_width($i, $columns[$i]["min-width"]);
+          $used_width +=  $columns[$i]["min-width"];
+        }
+
+        // Scale percent values if the total percentage is > 100 or there
+        // are no auto values to take up slack
+        if ( $percent_used > 100 || count($auto) == 0 )
+          $scale = 100 / $percent_used;
+        else
+          $scale = 1;
+
+        $remaining_width = $width - $used_width;
+
+        foreach ($percent as $i) {
+          $slack = $remaining_width - $used_width;
+
+          $columns[$i]["percent"] *= $scale;
+          $w = min($columns[$i]["percent"] * $remaining_width / 100, $slack);
+
+          if ( $w < $columns[$i]["min-width"] )
+            $w = $columns[$i]["min-width"];
+
+          $columns[$i]["used-width"] = $w;
+          $used_width += $w;
+        }
+
+        if ( count($auto) > 0 ) {
+          $increment = ($width - $used_width) / count($auto);
+
+          foreach ($auto as $i)
+            $cellmap->set_column_width($i, $columns[$i]["min-width"] + $increment);
+
+        }
+
+        return;
+      }
+
+
+    } else { // we are over constrained
+
+      // Each column gets its minimum width
+      foreach (array_keys($columns) as $i)
+        $cellmap->set_column_width($i, $columns[$i]["min-width"]);
+
+    }
+  }
+
+  //........................................................................
+
+  // Determine the frame's height based on min/max height
+  protected function _calculate_height() {
+
+    $style = $this->_frame->get_style();
+    $height = $style->height;
+
+    $cellmap = $this->_frame->get_cellmap();
+    $cellmap->assign_frame_heights();
+    $rows = $cellmap->get_rows();
+
+    // Determine our content height
+    $content_height = 0;
+    foreach ( $rows as $r )
+      $content_height += $r["height"];
+
+    $cb = $this->_frame->get_containing_block();
+
+    if ( !($style->overflow === "visible" ||
+           ($style->overflow === "hidden" && $height === "auto")) ) {
+
+      // Only handle min/max height if the height is independent of the frame's content
+
+      $min_height = $style->min_height;
+      $max_height = $style->max_height;
+
+      if ( isset($cb["h"]) ) {
+        $min_height = $style->length_in_pt($min_height, $cb["h"]);
+        $max_height = $style->length_in_pt($max_height, $cb["h"]);
+
+      } else if ( isset($cb["w"]) ) {
+
+        if ( mb_strpos($min_height, "%") !== false )
+          $min_height = 0;
+        else
+          $min_height = $style->length_in_pt($min_height, $cb["w"]);
+
+        if ( mb_strpos($max_height, "%") !== false )
+          $max_height = "none";
+        else
+          $max_height = $style->length_in_pt($max_height, $cb["w"]);
+      }
+
+      if ( $max_height !== "none" && $min_height > $max_height )
+        // Swap 'em
+        list($max_height, $min_height) = array($min_height, $max_height);
+
+      if ( $max_height !== "none" && $height > $max_height )
+        $height = $max_height;
+
+      if ( $height < $min_height )
+        $height = $min_height;
+
+    } else {
+
+      // Use the content height or the height value, whichever is greater
+      if ( $height !== "auto" ) {
+        $height = $style->length_in_pt($height, $cb["h"]);
+
+        if ( $height <= $content_height )
+          $height = $content_height;
+        else
+          $cellmap->set_frame_heights($height,$content_height);
+
+      } else
+        $height = $content_height;
+
+    }
+
+    return $height;
+
+  }
+  //........................................................................
+
+  function reflow() {
+
+    // Check if a page break is forced
+    $page = $this->_frame->get_root();
+    $page->check_forced_page_break($this->_frame);
+
+    // Bail if the page is full
+    if ( $page->is_full() )
+      return;
+    
+    // Let the page know that we're reflowing a table so that splits
+    // are suppressed (simply setting page-break-inside: avoid won't
+    // work because we may have an arbitrary number of block elements
+    // inside tds.)
+    $page->table_reflow_start();
+
+    
+    // Collapse vertical margins, if required
+    $this->_collapse_margins();
+
+    $this->_frame->position();
+
+    // Table layout algorithm:
+    // http://www.w3.org/TR/CSS21/tables.html#auto-table-layout
+
+    if ( is_null($this->_state) )
+      $this->get_min_max_width();
+
+    $cb = $this->_frame->get_containing_block();
+    $style = $this->_frame->get_style();
+
+    // This is slightly inexact, but should be okay.  Add half the
+    // border-spacing to the table as padding.  The other half is added to
+    // the cells themselves.
+    if ( $style->border_collapse === "separate" ) {
+      list($h, $v) = $style->border_spacing;
+
+      $v = $style->length_in_pt($v) / 2;
+      $h = $style->length_in_pt($h) / 2;
+
+      $style->padding_left = $style->length_in_pt($style->padding_left, $cb["w"]) + $h;
+      $style->padding_right = $style->length_in_pt($style->padding_right, $cb["w"]) + $h;
+      $style->padding_top = $style->length_in_pt($style->padding_top, $cb["w"]) + $v;
+      $style->padding_bottom = $style->length_in_pt($style->padding_bottom, $cb["w"]) + $v;
+
+    }
+
+    $this->_assign_widths();
+
+    // Adjust left & right margins, if they are auto
+    $width = $style->width;
+    $left = $style->margin_left;
+    $right = $style->margin_right;
+
+    $diff = $cb["w"] - $width;
+
+    if ( $left === "auto" && $right === "auto" && $diff > 0 ) {
+      $left = $right = $diff / 2;
+      $style->margin_left = "$left pt";
+      $style->margin_right = "$right pt";
+
+    } else {
+      $left = $style->length_in_pt($left, $cb["w"]);
+      $right = $style->length_in_pt($right, $cb["w"]);
+    }
+
+
+    list($x, $y) = $this->_frame->get_position();
+
+    // Determine the content edge
+    $content_x = $x + $left + $style->length_in_pt(array($style->padding_left,
+                                                         $style->border_left_width), $cb["w"]);
+    $content_y = $y + $style->length_in_pt(array($style->margin_top,
+                                                 $style->border_top_width,
+                                                 $style->padding_top), $cb["w"]);
+
+    if ( isset($cb["h"]) )
+      $h = $cb["h"];
+    else
+      $h = null;
+
+
+    $cellmap = $this->_frame->get_cellmap();
+    $col =& $cellmap->get_column(0);
+    $col["x"] = $content_x;
+
+    $row =& $cellmap->get_row(0);
+    $row["y"] = $content_y;
+
+    $cellmap->assign_x_positions();
+
+    // Set the containing block of each child & reflow
+    foreach ( $this->_frame->get_children() as $child ) {
+
+      // Bail if the page is full
+      if ( !$page->in_nested_table() && $page->is_full() )
+        break;
+
+      $child->set_containing_block($content_x, $content_y, $width, $h);
+      $child->reflow();
+
+      if ( !$page->in_nested_table() )
+        // Check if a split has occured
+        $page->check_page_break($child);
+
+    }
+
+    // Assign heights to our cells:
+    $style->height = $this->_calculate_height();
+
+    if ( $style->border_collapse === "collapse" ) {
+      // Unset our borders because our cells are now using them
+      $style->border_style = "none";
+    }
+
+    $page->table_reflow_end();
+
+    // Debugging:
+    //echo ($this->_frame->get_cellmap());
+  }
+
+  //........................................................................
+
+  function get_min_max_width() {
+
+    if ( !is_null($this->_min_max_cache)  )
+      return $this->_min_max_cache;
+
+    $style = $this->_frame->get_style();
+
+    $this->_frame->normalise();
+
+    // Add the cells to the cellmap (this will calcluate column widths as
+    // frames are added)
+    $this->_frame->get_cellmap()->add_frame($this->_frame);
+
+    // Find the min/max width of the table and sort the columns into
+    // absolute/percent/auto arrays
+    $this->_state = array();
+    $this->_state["min_width"] = 0;
+    $this->_state["max_width"] = 0;
+
+    $this->_state["percent_used"] = 0;
+    $this->_state["absolute_used"] = 0;
+    $this->_state["auto_min"] = 0;
+
+    $this->_state["absolute"] = array();
+    $this->_state["percent"] = array();
+    $this->_state["auto"] = array();
+
+    $columns =& $this->_frame->get_cellmap()->get_columns();
+    foreach (array_keys($columns) as $i) {
+      $this->_state["min_width"] += $columns[$i]["min-width"];
+      $this->_state["max_width"] += $columns[$i]["max-width"];
+
+      if ( $columns[$i]["absolute"] > 0 ) {
+        $this->_state["absolute"][] = $i;
+        $this->_state["absolute_used"] += $columns[$i]["absolute"];
+
+      } else if ( $columns[$i]["percent"] > 0 ) {
+        $this->_state["percent"][] = $i;
+        $this->_state["percent_used"] += $columns[$i]["percent"];
+
+      } else {
+        $this->_state["auto"][] = $i;
+        $this->_state["auto_min"] += $columns[$i]["min-width"];
+      }
+    }
+
+    // Account for margins & padding
+    $dims = array($style->border_left_width,
+                  $style->border_right_width,
+                  $style->padding_left,
+                  $style->padding_right,
+                  $style->margin_left,
+                  $style->margin_right);
+
+    if ( $style->border_collapse != "collapse" ) 
+      list($dims[]) = $style->border_spacing;
+
+    $delta = $style->length_in_pt($dims, $this->_frame->get_containing_block("w"));
+
+    $this->_state["min_width"] += $delta;
+    $this->_state["max_width"] += $delta;
+
+    return $this->_min_max_cache = array($this->_state["min_width"], $this->_state["max_width"],
+                 "min" => $this->_state["min_width"], "max" => $this->_state["max_width"]);
+  }
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/table_row_group_frame_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/table_row_group_frame_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/table_row_group_frame_decorator.cls.php	(revision 2000)
@@ -0,0 +1,97 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: table_row_group_frame_decorator.cls.php,v $
+ * Created on: 2004-06-02
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004-6 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ */
+
+/* $Id */
+
+/**
+ * Table row group decorator
+ *
+ * Overrides split() method for tbody, thead & tfoot elements
+ *
+ * @access private
+ * @package dompdf
+ */
+class Table_Row_Group_Frame_Decorator extends Frame_Decorator {
+
+  /**
+   * Class constructor
+   *
+   * @param Frame $frame   Frame to decorate
+   * @param DOMPDF $dompdf Current dompdf instance
+   */
+  function __construct(Frame $frame, DOMPDF $dompdf) {
+    parent::__construct($frame, $dompdf);
+  }
+
+  /**
+   * Override split() to remove all child rows and this element from the cellmap
+   *
+   * @param Frame $child
+   */
+  function split($child = null) {
+
+    if ( is_null($child) ) {
+      parent::split();
+      return;
+    }
+
+
+    // Remove child & all subsequent rows from the cellmap
+    $cellmap = $this->get_parent()->get_cellmap();
+    $iter = $child;
+
+    while ( $iter ) {
+      $cellmap->remove_row($iter);
+      $iter = $iter->get_next_sibling();
+    }
+
+    // If we are splitting at the first child remove the
+    // table-row-group from the cellmap as well
+    if ( $child === $this->get_first_child() ) {
+      $cellmap->remove_row_group($this);
+      parent::split();
+      return;
+    }
+    
+    $cellmap->update_row_group($this, $child->get_prev_sibling());
+    parent::split($child);
+    
+  }
+}
+ 
+?>
Index: /trunk/filemanager/tp/dompdf/include/php_evaluator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/php_evaluator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/php_evaluator.cls.php	(revision 2000)
@@ -0,0 +1,77 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: php_evaluator.cls.php,v $
+ * Created on: 2004-07-12
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: php_evaluator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Executes inline PHP code during the rendering process
+ *
+ * @access private
+ * @package dompdf
+ */
+class PHP_Evaluator {
+  
+  protected $_canvas;
+
+  function __construct(Canvas $canvas) {
+    $this->_canvas = $canvas;
+  }
+
+  function evaluate($code, $vars = array()) {
+    if ( !DOMPDF_ENABLE_PHP )
+      return;
+    
+    // Set up some variables for the inline code
+    $pdf = $this->_canvas;
+    $PAGE_NUM = $pdf->get_page_number();
+    $PAGE_COUNT = $pdf->get_page_count();
+    
+    // Override those variables if passed in
+    foreach ($vars as $k => $v) {
+        $$k = $v;
+    }
+
+    eval(utf8_decode($code)); 
+  }
+
+  function render($frame) {
+    $this->evaluate($frame->get_node()->nodeValue);
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/text_renderer.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/text_renderer.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/text_renderer.cls.php	(revision 2000)
@@ -0,0 +1,162 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: text_renderer.cls.php,v $
+ * Created on: 2004-06-01
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version dompdf_trunk_with_helmut_mods.20090528
+ * - fix text decoration positions according to font metrics
+ * @version 20090610
+ * - better accuracy on using different renderer as cpdf, added comments
+ */
+
+/* $Id: text_renderer.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+/**
+ * Renders text frames
+ *
+ * @access private
+ * @package dompdf
+ */
+class Text_Renderer extends Abstract_Renderer {
+  
+  const DECO_THICKNESS = 0.04;     // Thickness of underline. Screen: 0.08, print: better less, e.g. 0.04
+
+  //Tweaking if $base and $descent are not accurate.
+  //Check method_exists( $this->_canvas, "get_cpdf" )
+  //- For cpdf these can and must stay 0, because font metrics are used directly.
+  //- For other renderers, if different values are wanted, separate the parameter sets.
+  //  But $size and $size-$height seem to be accurate enough
+  const UNDERLINE_OFFSET = 0.0;    // Relative to bottom of text, as fraction of height.
+  const OVERLINE_OFFSET = 0.0;    // Relative to top of text
+  const LINETHROUGH_OFFSET = 0.0; // Relative to centre of text.
+  const DECO_EXTENSION = 0.0;     // How far to extend lines past either end, in pt
+    
+  //........................................................................
+
+  function render(Frame $frame) {
+    
+    $style = $frame->get_style();
+    list($x, $y) = $frame->get_position();
+    $cb = $frame->get_containing_block();
+
+    if ( ($ml = $style->margin_left) == "auto" || $ml == "none" )
+      $ml = 0;
+
+    if ( ($pl = $style->padding_left) == "auto" || $pl == "none" )
+      $pl = 0;
+
+    if ( ($bl = $style->border_left_width) == "auto" || $bl == "none" )
+      $bl = 0;
+
+    $x += $style->length_in_pt( array($ml, $pl, $bl), $cb["w"] );
+
+    $text = $frame->get_text();
+    
+    $font = $style->font_family;
+    $size = $style->font_size;
+    $height = $style->height;    
+    $spacing = $frame->get_text_spacing() + $style->word_spacing;
+
+//     if ( preg_replace("/[\s]+/", "", $text) == "" )
+//       return;
+    
+    $this->_canvas->text($x, $y, $text,
+                         $font, $size,
+                         $style->color, $spacing);
+
+    if ( method_exists( $this->_canvas, "get_cpdf" ) ) {
+      $base = ($this->_canvas->get_cpdf()->fonts[$this->_canvas->get_cpdf()->currentFont]['FontBBox'][3]*$size)/1000;
+      $descent = ($this->_canvas->get_cpdf()->fonts[$this->_canvas->get_cpdf()->currentFont]['FontBBox'][1]*$size)/1000;
+      //print '<pre>Text_Renderer cpdf:'.$base.' '.$descent.' '.$size.'</pre>';
+    } else {
+      //Descent is font part below baseline, typically negative. $height is about full height of font box.
+      //$descent = -$size/6; is less accurate, depends on font family.
+      $base = $size;
+      $descent = $size-$height;
+      //print '<pre>Text_Renderer other than cpdf:'.$base.' '.$descent.' '.$size.'</pre>';
+    }
+    
+    // Handle text decoration:
+    // http://www.w3.org/TR/CSS21/text.html#propdef-text-decoration
+    
+    // Draw all applicable text-decorations.  Start with the root and work
+    // our way down.
+    $p = $frame;
+    $stack = array();
+    while ( $p = $p->get_parent() )
+      $stack[] = $p;
+    
+    while ( count($stack) > 0 ) {
+      $f = array_pop($stack);
+
+      $deco_y = $y;
+      if ( ($text_deco = $f->get_style()->text_decoration) === "none" )
+        continue;
+
+      $color = $f->get_style()->color;
+
+      switch ($text_deco) {
+
+      default:
+        continue;
+
+      case "underline":
+        $deco_y += $base - $descent+ $size * (self::UNDERLINE_OFFSET - self::DECO_THICKNESS/2);
+        break;
+
+      case "overline":
+        $deco_y += $size * (self::OVERLINE_OFFSET + self::DECO_THICKNESS/2);
+        break;
+
+      case "line-through":
+        $deco_y += $base * 0.7 + $size * self::LINETHROUGH_OFFSET;
+        break;
+
+      }
+
+      $dx = 0;
+      $x1 = $x - self::DECO_EXTENSION;
+      $x2 = $x + $style->width + $dx + self::DECO_EXTENSION;
+      $this->_canvas->line($x1, $deco_y, $x2, $deco_y, $color, $size * self::DECO_THICKNESS);
+
+    }
+  }
+
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/table_cell_renderer.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/table_cell_renderer.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/table_cell_renderer.cls.php	(revision 2000)
@@ -0,0 +1,180 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: table_cell_renderer.cls.php,v $
+ * Created on: 2004-06-09
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: table_cell_renderer.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Renders table cells
+ *
+ * @access private
+ * @package dompdf
+ */
+class Table_Cell_Renderer extends Block_Renderer {
+
+  //........................................................................
+
+  function render(Frame $frame) {
+    $style = $frame->get_style();
+    list($x, $y, $w, $h) = $frame->get_padding_box();
+
+    // Draw our background, border and content
+    if ( ($bg = $style->background_color) !== "transparent" ) {
+      list($x, $y, $w, $h) = $frame->get_padding_box();
+      $this->_canvas->filled_rectangle( $x, $y, $w, $h, $style->background_color );
+    }
+
+    if ( ($url = $style->background_image) && $url !== "none" ) {
+      $this->_background_image($url, $x, $y, $w, $h, $style);
+    }
+
+    if ( $style->border_collapse != "collapse" ) {
+      $this->_render_border($frame, "bevel");
+      return;
+    }
+
+    // The collapsed case is slightly complicated...
+
+    $cellmap = Table_Frame_Decorator::find_parent_table($frame)->get_cellmap();
+    $cells = $cellmap->get_spanned_cells($frame);
+    $num_rows = $cellmap->get_num_rows();
+    $num_cols = $cellmap->get_num_cols();
+
+    // Determine the top row spanned by this cell
+    $i = $cells["rows"][0];
+    $top_row = $cellmap->get_row($i);
+
+    // Determine if this cell borders on the bottom of the table.  If so,
+    // then we draw its bottom border.  Otherwise the next row down will
+    // draw its top border instead.
+    if (in_array( $num_rows - 1, $cells["rows"])) {
+      $draw_bottom = true;
+      $bottom_row = $cellmap->get_row($num_rows - 1);
+    } else
+      $draw_bottom = false;
+
+
+    // Draw the horizontal borders
+    foreach ( $cells["columns"] as $j ) {
+      $bp = $cellmap->get_border_properties($i, $j);
+
+      $y = $top_row["y"] - $bp["top"]["width"] / 2;
+
+      $col = $cellmap->get_column($j);
+      $x = $col["x"] - $bp["left"]["width"] / 2;
+      $w = $col["used-width"] + ($bp["left"]["width"] + $bp["right"]["width"] ) / 2;
+
+      if ( $bp["top"]["style"] != "none" && $bp["top"]["width"] > 0 ) {
+        $widths = array($bp["top"]["width"],
+                        $bp["right"]["width"],
+                        $bp["bottom"]["width"],
+                        $bp["left"]["width"]);
+        $method = "_border_". $bp["top"]["style"];
+        $this->$method($x, $y, $w, $bp["top"]["color"], $widths, "top", "square");
+      }
+
+      if ( $draw_bottom ) {
+        $bp = $cellmap->get_border_properties($num_rows - 1, $j);
+        if ( $bp["bottom"]["style"] == "none" || $bp["bottom"]["width"] <= 0 )
+          continue;
+
+        $y = $bottom_row["y"] + $bottom_row["height"] + $bp["bottom"]["width"] / 2;
+
+        $widths = array($bp["top"]["width"],
+                        $bp["right"]["width"],
+                        $bp["bottom"]["width"],
+                        $bp["left"]["width"]);
+        $method = "_border_". $bp["bottom"]["style"];
+        $this->$method($x, $y, $w, $bp["bottom"]["color"], $widths, "bottom", "square");
+
+      }
+    }
+
+    $j = $cells["columns"][0];
+
+    $left_col = $cellmap->get_column($j);
+
+    if (in_array($num_cols - 1, $cells["columns"])) {
+      $draw_right = true;
+      $right_col = $cellmap->get_column($num_cols - 1);
+    } else
+      $draw_right = false;
+
+    // Draw the vertical borders
+    foreach ( $cells["rows"] as $i ) {
+      $bp = $cellmap->get_border_properties($i, $j);
+
+      $x = $left_col["x"] - $bp["left"]["width"] / 2;
+
+      $row = $cellmap->get_row($i);
+
+      $y = $row["y"] - $bp["top"]["width"] / 2;
+      $h = $row["height"] + ($bp["top"]["width"] + $bp["bottom"]["width"])/ 2;
+
+      if ( $bp["left"]["style"] != "none" && $bp["left"]["width"] > 0 ) {
+
+        $widths = array($bp["top"]["width"],
+                        $bp["right"]["width"],
+                        $bp["bottom"]["width"],
+                        $bp["left"]["width"]);
+
+        $method = "_border_" . $bp["left"]["style"];
+        $this->$method($x, $y, $h, $bp["left"]["color"], $widths, "left", "square");
+      }
+
+      if ( $draw_right ) {
+        $bp = $cellmap->get_border_properties($i, $num_cols - 1);
+        if ( $bp["right"]["style"] == "none" || $bp["right"]["width"] <= 0 )
+          continue;
+
+        $x = $right_col["x"] + $right_col["used-width"] + $bp["right"]["width"] / 2;
+
+        $widths = array($bp["top"]["width"],
+                        $bp["right"]["width"],
+                        $bp["bottom"]["width"],
+                        $bp["left"]["width"]);
+
+        $method = "_border_" . $bp["right"]["style"];
+        $this->$method($x, $y, $h, $bp["right"]["color"], $widths, "right", "square");
+
+      }
+    }
+
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/cellmap.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/cellmap.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/cellmap.cls.php	(revision 2000)
@@ -0,0 +1,714 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: cellmap.cls.php,v $
+ * Created on: 2004-07-28
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: cellmap.cls.php 185 2009-10-19 22:40:21Z eclecticgeek@gmail.com $ */
+
+/**
+ * Maps table cells to the table grid.
+ *
+ * This class resolves borders in tables with collapsed borders and helps
+ * place row & column spanned table cells.
+ *
+ * @access private
+ * @package dompdf
+ */
+class Cellmap {
+
+  /**
+   * Border style weight lookup for collapsed border resolution.
+   *
+   * @var array
+   */
+  static protected $_BORDER_STYLE_SCORE = array("inset"  => 1,
+                                                "groove" => 2,
+                                                "outset" => 3,
+                                                "ridge"  => 4,
+                                                "dotted" => 5,
+                                                "dashed" => 6,
+                                                "solid"  => 7,
+                                                "double" => 8,
+                                                "none"   => 0);
+
+  /**
+   * The table object this cellmap is attached to.
+   *
+   * @var Table_Frame_Decorator
+   */
+  protected $_table;
+
+  /**
+   * The total number of rows in the table
+   *
+   * @var int
+   */
+  protected $_num_rows;
+
+  /**
+   * The total number of columns in the table
+   *
+   * @var int
+   */
+  protected $_num_cols;
+
+  /**
+   * 2D array mapping <row,column> to frames
+   *
+   * @var array
+   */
+  protected $_cells;
+
+  /**
+   * 1D array of column dimensions
+   *
+   * @var array
+   */
+  protected $_columns;
+
+  /**
+   * 1D array of row dimensions
+   *
+   * @var array
+   */
+  protected $_rows;
+
+  /**
+   * 2D array of border specs
+   *
+   * @var array
+   */
+  protected $_borders;
+
+  /**
+   * 1D Array mapping frames to (multiple) <row, col> pairs, keyed on
+   * frame_id.
+   *
+   * @var array
+   */
+  protected $_frames;
+
+  /**
+   * Current column when adding cells, 0-based
+   *
+   * @var int
+   */
+  private $__col;
+
+  /**
+   * Current row when adding cells, 0-based
+   *
+   * @var int
+   */
+  private $__row;
+
+  //........................................................................
+
+  function __construct(Table_Frame_Decorator $table) {
+    $this->_table = $table;
+    $this->reset();
+  }
+
+  //........................................................................
+
+  function reset() {
+    $this->_num_rows = 0;
+    $this->_num_cols = 0;
+
+    $this->_cells  = array();
+    $this->_frames = array();
+
+    $this->_columns = array();
+    $this->_rows = array();
+
+    $this->_borders = array();
+
+    $this->__col = $this->__row = 0;
+  }
+
+  //........................................................................
+
+  function get_num_rows() { return $this->_num_rows; }
+  function get_num_cols() { return $this->_num_cols; }
+
+  function &get_columns() {
+    return $this->_columns;
+  }
+
+  function &get_column($i) {
+    if ( !isset($this->_columns[$i]) )
+      $this->_columns[$i] = array("x" => 0,
+                                  "min-width" => 0,
+                                  "max-width" => 0,
+                                  "used-width" => null,
+                                  "absolute" => 0,
+                                  "percent" => 0,
+                                  "auto" => true);
+
+    return $this->_columns[$i];
+  }
+
+  function &get_rows() {
+    return $this->_rows;
+  }
+
+  function &get_row($j) {
+    if ( !isset($this->_rows[$j]) )
+      $this->_rows[$j] = array("y" => 0,
+                               "first-column" => 0,
+                               "height" => null);
+    return $this->_rows[$j];
+  }
+
+  function get_border($i, $j, $h_v, $prop = null) {
+    if ( !isset($this->_borders[$i][$j][$h_v]) )
+      $this->_borders[$i][$j][$h_v] = array("width" => 0,
+                                           "style" => "solid",
+                                           "color" => "black");
+    if ( isset($prop) )
+      return $this->_borders[$i][$j][$h_v][$prop];
+
+    return $this->_borders[$i][$j][$h_v];
+  }
+
+  function get_border_properties($i, $j) {
+
+    $left = $this->get_border($i, $j, "vertical");
+    $right = $this->get_border($i, $j+1, "vertical");
+    $top = $this->get_border($i, $j, "horizontal");
+    $bottom = $this->get_border($i+1, $j, "horizontal");
+
+    return compact("top", "bottom", "left", "right");
+  }
+
+  //........................................................................
+
+  function get_spanned_cells($frame) {
+    $key = $frame->get_id();
+
+    if ( !isset($this->_frames[$key]) ) {
+      throw new DOMPDF_Internal_Exception("Frame not found in cellmap");
+    }
+
+    return $this->_frames[$key];
+
+  }
+
+  function frame_exists_in_cellmap($frame) {
+    $key = $frame->get_id();
+    return isset($this->_frames[$key]);
+  }
+  
+  function get_frame_position($frame) {
+    global $_dompdf_warnings;
+
+    $key = $frame->get_id();
+
+    if ( !isset($this->_frames[$key]) ) {
+      throw new DOMPDF_Internal_Exception("Frame not found in cellmap");
+    }
+
+    $col = $this->_frames[$key]["columns"][0];
+    $row = $this->_frames[$key]["rows"][0];
+
+    if ( !isset($this->_columns[$col])) {
+      $_dompdf_warnings[] = "Frame not found in columns array.  Check your table layout for missing or extra TDs.";
+      $x = 0;
+    } else
+      $x = $this->_columns[$col]["x"];
+
+    if ( !isset($this->_rows[$row])) {
+      $_dompdf_warnings[] = "Frame not found in row array.  Check your table layout for missing or extra TDs.";
+      $y = 0;
+    } else
+      $y = $this->_rows[$row]["y"];
+
+    return array($x, $y, "x" => $x, "y" => $y);
+  }
+
+  function get_frame_width($frame) {
+    $key = $frame->get_id();
+
+    if ( !isset($this->_frames[$key]) ) {
+      throw new DOMPDF_Internal_Exception("Frame not found in cellmap");
+    }
+
+    $cols = $this->_frames[$key]["columns"];
+    $w = 0;
+    foreach ($cols as $i)
+      $w += $this->_columns[$i]["used-width"];
+
+    return $w;
+
+  }
+
+  function get_frame_height($frame) {
+    $key = $frame->get_id();
+
+    if ( !isset($this->_frames[$key]) )
+      throw new DOMPDF_Internal_Exception("Frame not found in cellmap");
+
+    $rows = $this->_frames[$key]["rows"];
+    $h = 0;
+    foreach ($rows as $i) {
+      if ( !isset($this->_rows[$i]) )  {
+        throw new Exception("foo");
+      }
+      $h += $this->_rows[$i]["height"];
+    }
+    return $h;
+
+  }
+
+
+  //........................................................................
+
+  function set_column_width($j, $width) {
+    $col =& $this->get_column($j);
+    $col["used-width"] = $width;
+    $next_col =& $this->get_column($j+1);
+    $next_col["x"] = $next_col["x"] + $width;
+  }
+
+  function set_row_height($i, $height) {
+    $row =& $this->get_row($i);
+    if ( $height <= $row["height"] )
+      return;
+
+    $row["height"] = $height;
+    $next_row =& $this->get_row($i+1);
+    $next_row["y"] = $row["y"] + $height;
+
+  }
+
+  //........................................................................
+
+
+  protected function _resolve_border($i, $j, $h_v, $border_spec) {
+    $n_width = $border_spec["width"];
+    $n_style = $border_spec["style"];
+    $n_color = $border_spec["color"];
+
+    if ( !isset($this->_borders[$i][$j][$h_v]) ) {
+      $this->_borders[$i][$j][$h_v] = $border_spec;
+      return $this->_borders[$i][$j][$h_v]["width"];
+    }
+
+    $o_width = $this->_borders[$i][$j][$h_v]["width"];
+    $o_style = $this->_borders[$i][$j][$h_v]["style"];
+    $o_color = $this->_borders[$i][$j][$h_v]["color"];
+
+    if ( ($n_style === "hidden" ||
+          $n_width  >  $o_width ||
+          $o_style === "none")
+
+         or
+
+         ($o_width == $n_width &&
+          in_array($n_style, self::$_BORDER_STYLE_SCORE) &&
+          self::$_BORDER_STYLE_SCORE[ $n_style ] > self::$_BORDER_STYLE_SCORE[ $o_style ]) )
+      $this->_borders[$i][$j][$h_v] = $border_spec;
+
+    return $this->_borders[$i][$j][$h_v]["width"];
+  }
+
+  //........................................................................
+
+  function add_frame(Frame $frame) {
+    
+    $style = $frame->get_style();
+    $display = $style->display;
+
+    $collapse = $this->_table->get_style()->border_collapse == "collapse";
+
+    // Recursively add the frames within tables, table-row-groups and table-rows
+    if ( $display == "table-row" ||
+         $display == "table" ||
+         $display == "inline-table" ||
+         in_array($display, Table_Frame_Decorator::$ROW_GROUPS) ) {
+
+      $start_row = $this->__row;
+      foreach ( $frame->get_children() as $child )
+        $this->add_frame( $child );
+
+      if ( $display == "table-row" )
+        $this->add_row();
+
+      $num_rows = $this->__row - $start_row - 1;
+      $key = $frame->get_id();
+
+      // Row groups always span across the entire table
+      $this->_frames[ $key ]["columns"] = range(0,max(0,$this->_num_cols-1));
+      $this->_frames[ $key ]["rows"] = range($start_row, max(0, $this->__row - 1));
+      $this->_frames[ $key ]["frame"] = $frame;
+
+      if ( $display != "table-row" && $collapse ) {
+
+        $bp = $style->get_border_properties();
+
+        // Resolve the borders
+        for ( $i = 0; $i < $num_rows+1; $i++) {
+          $this->_resolve_border($start_row + $i, 0, "vertical", $bp["left"]);
+          $this->_resolve_border($start_row + $i, $this->_num_cols, "vertical", $bp["right"]);
+        }
+
+        for ( $j = 0; $j < $this->_num_cols; $j++) {
+          $this->_resolve_border($start_row, $j, "horizontal", $bp["top"]);
+          $this->_resolve_border($this->__row, $j, "horizontal", $bp["bottom"]);
+        }
+      }
+
+
+      return;
+    }
+
+    // Determine where this cell is going
+    $colspan = $frame->get_node()->getAttribute("colspan");
+    $rowspan = $frame->get_node()->getAttribute("rowspan");
+
+    if ( !$colspan ) {
+      $colspan = 1;
+      $frame->get_node()->setAttribute("colspan",1);
+    }
+
+    if ( !$rowspan ) {
+      $rowspan = 1;
+      $frame->get_node()->setAttribute("rowspan",1);
+    }
+    $key = $frame->get_id();
+
+    $bp = $style->get_border_properties();
+
+
+    // Add the frame to the cellmap
+    $max_left = $max_right = 0;
+
+    // Find the next available column (fix by Ciro Mondueri)
+    $ac = $this->__col;
+    while ( isset($this->_cells[$this->__row][$ac]) )
+       $ac++;
+    $this->__col = $ac;
+
+    // Rows:
+    for ( $i = 0; $i < $rowspan; $i++ ) {
+      $row = $this->__row + $i;
+
+      $this->_frames[ $key ]["rows"][] = $row;
+
+      for ( $j = 0; $j < $colspan; $j++)
+        $this->_cells[$row][$this->__col + $j] = $frame;
+
+      if ( $collapse ) {
+        // Resolve vertical borders
+        $max_left = max($max_left, $this->_resolve_border($row, $this->__col, "vertical", $bp["left"]));
+        $max_right = max($max_right, $this->_resolve_border($row, $this->__col + $colspan, "vertical", $bp["right"]));
+      }
+    }
+
+    $max_top = $max_bottom = 0;
+
+    // Columns:
+    for ( $j = 0; $j < $colspan; $j++ ) {
+      $col = $this->__col + $j;
+      $this->_frames[ $key ]["columns"][] = $col;
+
+      if ( $collapse ) {
+        // Resolve horizontal borders
+        $max_top = max($max_top, $this->_resolve_border($this->__row, $col, "horizontal", $bp["top"]));
+        $max_bottom = max($max_bottom, $this->_resolve_border($this->__row + $rowspan, $col, "horizontal", $bp["bottom"]));
+      }
+    }
+
+    $this->_frames[ $key ]["frame"] = $frame;
+
+    // Handle seperated border model
+    if ( !$collapse ) {
+      list($h, $v) = $this->_table->get_style()->border_spacing;
+
+      // Border spacing is effectively a margin between cells
+      $v = $style->length_in_pt($v) / 2;
+      $h = $style->length_in_pt($h) / 2;
+      $style->margin = "$v $h";
+
+      // The additional 1/2 width gets added to the table proper
+
+    } else {
+
+      // Drop the frame's actual border
+      $style->border_left_width = $max_left / 2;
+      $style->border_right_width = $max_right / 2;
+      $style->border_top_width = $max_top / 2;
+      $style->border_bottom_width = $max_bottom / 2;
+      $style->margin = "none";
+    }
+
+    // Resolve the frame's width
+    list($frame_min, $frame_max) = $frame->get_min_max_width();
+
+    $width = $style->width;
+
+    if ( is_percent($width) ) {
+      $var = "percent";
+      $val = (float)rtrim($width, "% ") / $colspan;
+
+    } else if ( $width !== "auto" ) {
+      $var = "absolute";
+      $val = $style->length_in_pt($frame_min) / $colspan;
+    }
+
+    $min = 0;
+    $max = 0;
+    for ( $cs = 0; $cs < $colspan; $cs++ ) {
+
+      // Resolve the frame's width(s) with other cells
+      $col =& $this->get_column( $this->__col + $cs );
+
+      // Note: $var is either 'percent' or 'absolute'.  We compare the
+      // requested percentage or absolute values with the existing widths
+      // and adjust accordingly.
+      if ( isset($var) && $val > $col[$var] ) {
+        $col[$var] = $val;
+        $col["auto"] = false;
+      }
+
+      $min += $col["min-width"];
+      $max += $col["max-width"];
+    }
+
+
+    if ( $frame_min > $min ) {
+      // The frame needs more space.  Expand each sub-column
+      $inc = ($frame_min - $min) / $colspan;
+      for ($c = 0; $c < $colspan; $c++) {
+        $col =& $this->get_column($this->__col + $c);
+        $col["min-width"] += $inc;
+      }
+    }
+
+    if ( $frame_max > $max ) {
+      $inc = ($frame_max - $max) / $colspan;
+      for ($c = 0; $c < $colspan; $c++) {
+        $col =& $this->get_column($this->__col + $c);
+        $col["max-width"] += $inc;
+      }
+    }
+
+    $this->__col += $colspan;
+    if ( $this->__col > $this->_num_cols )
+      $this->_num_cols = $this->__col;
+
+  }
+
+  //........................................................................
+
+  function add_row() {
+
+    $this->__row++;
+    $this->_num_rows++;
+
+    // Find the next available column
+    $i = 0;
+    while ( isset($this->_cells[$this->__row][$i]) )
+      $i++;
+
+    $this->__col = $i;
+
+  }
+
+  //........................................................................
+
+  /**
+   * Remove a row from the cellmap.
+   *
+   * @param Frame
+   */
+  function remove_row(Frame $row) {
+
+    $key = $row->get_id();
+    if ( !isset($this->_frames[$key]) )
+      return;  // Presumably this row has alredy been removed
+
+    $this->_row = $this->_num_rows--;
+
+    $rows = $this->_frames[$key]["rows"];
+    $columns = $this->_frames[$key]["columns"];
+
+    // Remove all frames from this row
+    foreach ( $rows as $r ) {
+      foreach ( $columns as $c ) {
+        if ( isset($this->_cells[$r][$c]) ) {
+          $frame = $this->_cells[$r][$c];
+          unset($this->_frames[ $frame->get_id() ]);
+          unset($this->_cells[$r][$c]);
+        }
+      }
+      unset($this->_rows[$r]);
+    }
+
+    unset($this->_frames[$key]);
+
+  }
+
+  /**
+   * Remove a row group from the cellmap.
+   *
+   * @param Frame $group  The group to remove
+   */
+  function remove_row_group(Frame $group) {
+
+    $key = $group->get_id();
+    if ( !isset($this->_frames[$key]) )
+      return;  // Presumably this row has alredy been removed
+
+    $iter = $group->get_first_child();
+    while ($iter) {
+      $this->remove_row($iter);
+      $iter = $iter->get_next_sibling();
+    }
+
+    unset($this->_frames[$key]);
+  }
+
+  /**
+   * Update a row group after rows have been removed
+   *
+   * @param Frame $group    The group to update
+   * @param Frame $last_row The last row in the row group
+   */
+  function update_row_group(Frame $group, Frame $last_row) {
+
+    $g_key = $group->get_id();
+    $r_key = $last_row->get_id();
+
+    $r_rows = $this->_frames[$r_key]["rows"];
+    $this->_frames[$g_key]["rows"] = range( $this->_frames[$g_key]["rows"][0], end($r_rows) );
+
+  }
+
+  //........................................................................
+
+  function assign_x_positions() {
+    // Pre-condition: widths must be resolved and assigned to columns and
+    // column[0]["x"] must be set.
+
+    $x = $this->_columns[0]["x"];
+    foreach ( array_keys($this->_columns) as $j ) {
+      $this->_columns[$j]["x"] = $x;
+      $x += $this->_columns[$j]["used-width"];
+
+    }
+
+  }
+
+  function assign_frame_heights() {
+    // Pre-condition: widths and heights of each column & row must be
+    // calcluated
+
+    foreach ( $this->_frames as $arr ) {
+      $frame = $arr["frame"];
+
+      $h = 0;
+      foreach( $arr["rows"] as $row ) {
+        if ( !isset($this->_rows[$row]) )
+          // The row has been removed because of a page split, so skip it.
+          continue;
+        $h += $this->_rows[$row]["height"];
+      }
+
+      if ( $frame instanceof Table_Cell_Frame_Decorator )
+        $frame->set_cell_height($h);
+      else
+        $frame->get_style()->height = $h;
+    }
+
+  }
+
+  //........................................................................
+
+  /**
+   * Re-adjust frame height if the table height is larger than its content
+   */
+  function set_frame_heights($table_height, $content_height) {
+
+
+    // Distribute the increased height proportionally amongst each row
+    foreach ( $this->_frames as $arr ) {
+      $frame = $arr["frame"];
+
+      $h = 0;
+      foreach ($arr["rows"] as $row ) {
+        if ( !isset($this->_rows[$row]) )
+          continue;
+
+        $h += $this->_rows[$row]["height"];
+      }
+
+      $new_height = ($h / $content_height) * $table_height;
+
+      if ( $frame instanceof Table_Cell_Frame_Decorator )
+        $frame->set_cell_height($new_height);
+      else
+        $frame->get_style()->height = $new_height;
+    }
+
+  }
+
+  //........................................................................
+
+  // Used for debugging:
+  function __toString() {
+    $str = "";
+    $str .= "Columns:<br/>";
+    $str .= pre_r($this->_columns, true);
+    $str .=  "Rows:<br/>";
+    $str .= pre_r($this->_rows, true);
+
+    $str .=  "Frames:<br/>";
+    $arr = array();
+    foreach ( $this->_frames as $key => $val )
+      $arr[$key] = array("columns" => $val["columns"], "rows" => $val["rows"]);
+
+    $str .= pre_r($arr, true);
+
+    if ( php_sapi_name() == "cli" )
+      $str = strip_tags(str_replace(array("<br/>","<b>","</b>"),
+                                    array("\n",chr(27)."[01;33m", chr(27)."[0m"),
+                                    $str));
+    return $str;
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/dompdf_internal_exception.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/dompdf_internal_exception.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/dompdf_internal_exception.cls.php	(revision 2000)
@@ -0,0 +1,60 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: dompdf_internal_exception.cls.php,v $
+ * Created on: 2004-08-07
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: dompdf_internal_exception.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Exception thrown by DOMPDF classes for internal errors
+ *
+ * @package dompdf
+ */
+class DOMPDF_Internal_Exception extends Exception {
+
+  /**
+   * Class constructor
+   *
+   * @param string $message Error message
+   * @param int $code Error code
+   */
+  function __construct($message = NULL, $code = 0) {
+    parent::__construct($message, $code);
+  }
+
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/frame.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/frame.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/frame.cls.php	(revision 2000)
@@ -0,0 +1,774 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: frame.cls.php,v $
+ * Created on: 2004-06-02
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: frame.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * The main Frame class
+ *
+ * This class represents a single HTML element.  This class stores
+ * positioning information as well as containing block location and
+ * dimensions. Style information for the element is stored in a {@link
+ * Style} object.  Tree structure is maintained via the parent & children
+ * links.
+ *
+ * @access protected
+ * @package dompdf
+ */
+class Frame {
+  
+  /**
+   * The DOMNode object this frame represents
+   *
+   * @var DOMNode
+   */
+  protected $_node;
+
+  /**
+   * Unique identifier for this frame.  Used to reference this frame
+   * via the node.
+   *
+   * @var string
+   */
+  protected $_id;
+
+  /**
+   * Unique id counter
+   */
+  static protected $ID_COUNTER = 0;
+  
+  /**
+   * This frame's calculated style
+   *
+   * @var Style
+   */
+  protected $_style;
+
+  /**
+   * This frame's original style.  Needed for cases where frames are
+   * split across pages.
+   *
+   * @var Style
+   */
+  protected $_original_style;
+  
+  /**
+   * This frame's parent in the document tree.
+   *
+   * @var Frame
+   */
+  protected $_parent;
+
+  /**
+   * This frame's first child.  All children are handled as a
+   * doubly-linked list.
+   *
+   * @var Frame
+   */
+  protected $_first_child;
+
+  /**
+   * This frame's last child.
+   *
+   * @var Frame
+   */
+  protected $_last_child;
+
+  /**
+   * This frame's previous sibling in the document tree.
+   *
+   * @var Frame
+   */
+  protected $_prev_sibling;
+
+  /**
+   * This frame's next sibling in the document tree.
+   *
+   * @var Frame
+   */
+  protected $_next_sibling;
+  
+  /**
+   * This frame's containing block (used in layout): array(x, y, w, h)
+   *
+   * @var array
+   */
+  protected $_containing_block;
+
+  /**
+   * Position on the page of the top-left corner of the margin box of
+   * this frame: array(x,y)
+   *
+   * @var array
+   */
+  protected $_position;
+
+  /**
+   * This frame's decorator
+   *
+   * @var Frame_Decorator
+   */
+  protected $_decorator;
+    
+  /**
+   * Class constructor
+   *
+   * @param DOMNode $node the DOMNode this frame represents
+   */
+  function __construct(DomNode $node) {
+    $this->_node = $node;
+      
+    $this->_parent = null;
+    $this->_first_child = null;
+    $this->_last_child = null;
+    $this->_prev_sibling = $this->_next_sibling = null;
+    
+    $this->_style = null;
+    $this->_original_style = null;
+    
+    $this->_containing_block = array("x" => null,
+                                     "y" => null,
+                                     "w" => null,
+                                     "h" => null);
+    $this->_position = array("x" => null,
+                             "y" => null);
+
+    $this->_decorator = null;
+
+    $this->set_id( self::$ID_COUNTER++ );
+  }
+
+  /**
+   * "Destructor": forcibly free all references held by this frame
+   *
+   * @param bool $recursive if true, call dispose on all children
+   */
+  function dispose($recursive = false) {
+
+    if ( $recursive ) {
+      while ( $child = $this->_first_child )
+        $child->dispose(true);
+    }
+
+    // Remove this frame from the tree
+    if ( $this->_prev_sibling ) {
+      $this->_prev_sibling->_next_sibling = $this->_next_sibling;      
+    }
+
+    if ( $this->_next_sibling ) {
+      $this->_next_sibling->_prev_sibling = $this->_prev_sibling;
+    }
+
+    if ( $this->_parent && $this->_parent->_first_child === $this ) {
+      $this->_parent->_first_child = $this->_next_sibling;
+    }
+
+    if ( $this->_parent && $this->_parent->_last_child === $this ) {
+      $this->_parent->_last_child = $this->_prev_sibling;
+    }
+
+    if ( $this->_parent ) {
+      $this->_parent->get_node()->removeChild($this->_node);
+    }
+
+    $this->_style->dispose();
+    unset($this->_style);
+    $this->_original_style->dispose();
+    unset($this->_original_style);
+    
+  }
+
+  // Re-initialize the frame
+  function reset() {
+    $this->_position = array("x" => null,
+                             "y" => null);
+    $this->_containing_block = array("x" => null,
+                                     "y" => null,
+                                     "w" => null,
+                                     "h" => null);
+
+    unset($this->_style);    
+    $this->_style = clone $this->_original_style;
+    
+  }
+  
+  //........................................................................
+
+  // Accessor methods
+  function get_node() { return $this->_node; }
+  function get_id() { return $this->_id; }
+  function get_style() { return $this->_style; }
+  function get_original_style() { return $this->_original_style; }
+  function get_parent() { return $this->_parent; }
+  function get_decorator() { return $this->_decorator; }
+  function get_first_child() { return $this->_first_child; }
+  function get_last_child() { return $this->_last_child; }
+  function get_prev_sibling() { return $this->_prev_sibling; }
+  function get_next_sibling() { return $this->_next_sibling; }
+
+  function get_children() { return new FrameList($this); }
+  
+  // Layout property accessors
+  function get_containing_block($i = null) {
+    if ( isset($i) )
+      return $this->_containing_block[$i];    
+    return $this->_containing_block;
+  }
+  
+  function get_position($i = null) {
+    if ( isset($i) )
+      return $this->_position[$i];
+    return array($this->_position["x"],
+                 $this->_position["y"],
+                 "x"=>$this->_position["x"],
+                 "y"=>$this->_position["y"]);
+  }
+    
+  //........................................................................
+
+  // Return the height of the margin box of the frame, in pt.  Meaningless
+  // unless the height has been calculated properly.
+  function get_margin_height() {      
+    return $this->_style->length_in_pt(array($this->_style->height,
+                                             $this->_style->margin_top,
+                                             $this->_style->margin_bottom,
+                                             $this->_style->border_top_width,
+                                             $this->_style->border_bottom_width,
+                                             $this->_style->padding_top,
+                                             $this->_style->padding_bottom),
+                                       $this->_containing_block["w"]);
+  }
+
+  // Return the width of the margin box of the frame, in pt.  Meaningless
+  // unless the width has been calculted properly.
+  function get_margin_width() {
+    return $this->_style->length_in_pt(array($this->_style->width,
+                                     $this->_style->margin_left,
+                                     $this->_style->margin_right,
+                                     $this->_style->border_left_width,
+                                     $this->_style->border_right_width,
+                                     $this->_style->padding_left,
+                                     $this->_style->padding_right),
+                               $this->_containing_block["w"]);
+  }
+
+  // Return the padding box (x,y,w,h) of the frame
+  function get_padding_box() {
+    $x = $this->_position["x"] +
+      $this->_style->length_in_pt(array($this->_style->margin_left,
+                                        $this->_style->border_left_width),
+                                  $this->_containing_block["w"]);
+    $y = $this->_position["y"] +
+      $this->_style->length_in_pt(array($this->_style->margin_top,
+                                $this->_style->border_top_width),
+                          $this->_containing_block["w"]);
+    
+    $w = $this->_style->length_in_pt(array($this->_style->padding_left,
+                                   $this->_style->width,
+                                   $this->_style->padding_right),
+                             $this->_containing_block["w"]);
+
+    $h = $this->_style->length_in_pt(array($this->_style->padding_top,
+                                   $this->_style->height,
+                                   $this->_style->padding_bottom),
+                             $this->_containing_block["w"]);
+
+    return array(0 => $x, "x" => $x,
+                 1 => $y, "y" => $y,
+                 2 => $w, "w" => $w,
+                 3 => $h, "h" => $h);
+  }
+
+  // Return the border box of the frame
+  function get_border_box() {
+    $x = $this->_position["x"] +
+      $this->_style->length_in_pt($this->_style->margin_left,
+                          $this->_containing_block["w"]);
+    $y = $this->_position["y"] +
+      $this->_style->length_in_pt($this->_style->margin_top,
+                          $this->_containing_block["w"]);
+
+    $w = $this->_style->length_in_pt(array($this->_style->border_left_width,
+                                   $this->_style->padding_left,
+                                   $this->_style->width,
+                                   $this->_style->padding_right,
+                                   $this->_style->border_right_width),
+                             $this->_containing_block["w"]);
+
+    $h = $this->_style->length_in_pt(array($this->_style->border_top_width,
+                                   $this->_style->padding_top,
+                                   $this->_style->height,
+                                   $this->_style->padding_bottom,
+                                   $this->_style->border_bottom_width),
+                             $this->_containing_block["w"]);
+
+    return array(0 => $x, "x" => $x,
+                 1 => $y, "y" => $y,
+                 2 => $w, "w" => $w,
+                 3 => $h, "h" => $h);
+    
+  }
+  
+  //........................................................................
+
+  // Set methods
+  function set_id($id) {
+    $this->_id = $id;
+
+    // We can only set attributes of DOMElement objects (nodeType == 1).
+    // Since these are the only objects that we can assign CSS rules to,
+    // this shortcoming is okay.
+    if ( $this->_node->nodeType == 1)
+      $this->_node->setAttribute("frame_id", $id);
+  }
+
+  function set_style(Style $style) {
+    if ( is_null($this->_style) )
+      $this->_original_style = clone $style;
+    
+    $this->_style = $style;
+  }
+  
+  function set_decorator(Frame_Decorator $decorator) {
+    $this->_decorator = $decorator;
+  }
+  
+  function set_containing_block($x = null, $y = null, $w = null, $h = null) {
+    if ( is_array($x) ){
+  		foreach($x AS $key => $val){
+			$$key = $val;
+		}
+    }
+    
+    if (is_numeric($x)) {
+      $this->_containing_block[0] = $x;
+      $this->_containing_block["x"] = $x;
+    }
+    
+    if (is_numeric($y)) {
+      $this->_containing_block[1] = $y;
+      $this->_containing_block["y"] = $y;
+    }
+    
+    if (is_numeric($w)) {
+      $this->_containing_block[2] = $w;
+      $this->_containing_block["w"] = $w;
+    }
+    
+    if (is_numeric($h)) {
+      $this->_containing_block[3] = $h;
+      $this->_containing_block["h"] = $h;
+    }
+    
+  }
+
+  function set_position($x = null, $y = null) {
+    if ( is_array($x) )
+      extract($x);
+    
+    if ( is_numeric($x) ) {
+      $this->_position[0] = $x;
+      $this->_position["x"] = $x;
+    }
+
+    if ( is_numeric($y) ) {
+      $this->_position[1] = $y;
+      $this->_position["y"] = $y;
+    }
+  }
+
+  //........................................................................
+
+  function prepend_child(Frame $child, $update_node = true) {
+
+    if ( $update_node ) 
+      $this->_node->insertBefore($child->_node, $this->_first_child ? $this->_first_child->_node : null);
+
+    // Remove the child from its parent
+    if ( $child->_parent )
+      $child->_parent->remove_child($child, false);
+    
+    $child->_parent = $this;
+    $child->_prev_sibling = null;
+    
+    // Handle the first child
+    if ( !$this->_first_child ) {
+      $this->_first_child = $child;
+      $this->_last_child = $child;
+      $child->_next_sibling = null;
+      
+    } else {
+
+      $this->_first_child->_prev_sibling = $child;
+      $child->_next_sibling = $this->_first_child;      
+      $this->_first_child = $child;
+      
+    }
+  }
+  
+  function append_child(Frame $child, $update_node = true) {
+
+    if ( $update_node ) 
+      $this->_node->appendChild($child->_node);
+
+    // Remove the child from its parent
+    if ( $child->_parent )
+      $child->_parent->remove_child($child, false);
+
+    $child->_parent = $this;
+    $child->_next_sibling = null;
+    
+    // Handle the first child
+    if ( !$this->_last_child ) {
+      $this->_first_child = $child;
+      $this->_last_child = $child;
+      $child->_prev_sibling = null;
+      
+    } else {
+
+      $this->_last_child->_next_sibling = $child;
+      $child->_prev_sibling = $this->_last_child;
+      $this->_last_child = $child;
+
+    }
+  }  
+
+  // Inserts a new child immediately before the specified frame
+  function insert_child_before(Frame $new_child, Frame $ref, $update_node = true) {
+
+    if ( $ref === $this->_first_child ) {
+      $this->prepend_child($new_child, $update_node);
+      return;
+    }
+
+    if ( is_null($ref) ) {
+      $this->append_child($new_child, $update_node);
+      return;
+    }
+    
+    if ( $ref->_parent !== $this )
+      throw new DOMPDF_Exception("Reference child is not a child of this node.");
+
+    // Update the node    
+    if ( $update_node )
+      $this->_node->insertBefore($new_child->_node, $ref->_node);
+
+    // Remove the child from its parent
+    if ( $new_child->_parent )
+      $new_child->_parent->remove_child($new_child, false);
+    
+    $new_child->_parent = $this;
+    $new_child->_next_sibling = $ref;
+    $new_child->_prev_sibling = $ref->_prev_sibling;
+
+    if ( $ref->_prev_sibling )
+      $ref->_prev_sibling->_next_sibling = $new_child;
+    
+    $ref->_prev_sibling = $new_child;
+  }
+  
+  // Inserts a new child immediately after the specified frame
+  function insert_child_after(Frame $new_child, Frame $ref, $update_node = true) {    
+
+    if ( $ref === $this->_last_child ) {
+      $this->append_child($new_child, $update_node);
+      return;
+    }
+
+    if ( is_null($ref) ) {
+      $this->prepend_child($new_child, $update_node);
+      return;
+    }
+    
+    if ( $ref->_parent !== $this )
+      throw new DOMPDF_Exception("Reference child is not a child of this node.");
+
+    // Update the node
+    if ( $update_node ) {
+      if ( $ref->_next_sibling ) {
+        $next_node = $ref->_next_sibling->_node;
+        $this->_node->insertBefore($new_child->_node, $next_node);
+      } else {
+        $new_child->_node = $this->_node->appendChild($new_child);
+      }
+    }
+    
+    // Remove the child from its parent
+    if ( $new_child->_parent)
+      $new_child->_parent->remove_child($new_child, false);
+    
+    $new_child->_parent = $this;
+    $new_child->_prev_sibling = $ref;
+    $new_child->_next_sibling = $ref->_next_sibling;
+
+    if ( $ref->_next_sibling ) 
+      $ref->_next_sibling->_prev_sibling = $new_child;
+
+    $ref->_next_sibling = $new_child;
+  }
+
+
+  function remove_child(Frame $child, $update_node = true) {
+
+    if ( $child->_parent !== $this )
+      throw new DOMPDF_Exception("Child not found in this frame");
+
+    if ( $update_node )
+      $this->_node->removeChild($child->_node);
+    
+    if ( $child === $this->_first_child )
+      $this->_first_child = $child->_next_sibling;
+
+    if ( $child === $this->_last_child )
+      $this->_last_child = $child->_prev_sibling;
+
+    if ( $child->_prev_sibling )
+      $child->_prev_sibling->_next_sibling = $child->_next_sibling;
+
+    if ( $child->_next_sibling )
+      $child->_next_sibling->_prev_sibling = $child->_prev_sibling;    
+
+    $child->_next_sibling = null;
+    $child->_prev_sibling = null;
+    $child->_parent = null;
+    return $child;
+        
+  }
+
+  //........................................................................
+
+  // Debugging function:
+  function __toString() {
+
+    // Skip empty text frames
+//     if ( $this->_node->nodeName == "#text" &&
+//          preg_replace("/\s/", "", $this->_node->data) === "" )
+//       return "";
+    
+    
+    $str = "<b>" . $this->_node->nodeName . ":</b><br/>";
+    //$str .= spl_object_hash($this->_node) . "<br/>";
+    $str .= "Id: " .$this->get_id() . "<br/>";
+    $str .= "Class: " .get_class($this) . "<br/>";
+    
+    if ( $this->_node->nodeName == "#text" ) {
+      $tmp = htmlspecialchars($this->_node->nodeValue);
+      $str .= "<pre>'" .  mb_substr($tmp,0,70) .
+        (mb_strlen($tmp) > 70 ? "..." : "") . "'</pre>";
+    }
+    if ( $this->_parent )
+      $str .= "\nParent:" . $this->_parent->_node->nodeName .
+        " (" . spl_object_hash($this->_parent->_node) . ") " .
+        "<br/>";
+
+    if ( $this->_prev_sibling )
+      $str .= "Prev: " . $this->_prev_sibling->_node->nodeName .
+        " (" . spl_object_hash($this->_prev_sibling->_node) . ") " .
+        "<br/>";
+
+    if ( $this->_next_sibling )
+      $str .= "Next: " . $this->_next_sibling->_node->nodeName .
+        " (" . spl_object_hash($this->_next_sibling->_node) . ") " .
+        "<br/>";
+
+    $d = $this->get_decorator();
+    while ($d && $d != $d->get_decorator()) {
+      $str .= "Decorator: " . get_class($d) . "<br/>";
+      $d = $d->get_decorator();
+    }
+
+    $str .= "Position: " . pre_r($this->_position, true);
+    $str .= "\nContaining block: " . pre_r($this->_containing_block, true);
+    $str .= "\nMargin width: " . pre_r($this->get_margin_width(), true);
+    $str .= "\nMargin height: " . pre_r($this->get_margin_height(), true);
+    
+    $str .= "\nStyle: <pre>". $this->_style->__toString() . "</pre>";
+
+    if ( $this->_decorator instanceof Block_Frame_Decorator ) {
+      $str .= "Lines:<pre>";
+      foreach ($this->_decorator->get_lines() as $line) {
+        foreach ($line["frames"] as $frame) {
+          if ($frame instanceof Text_Frame_Decorator) {
+            $str .= "\ntext: ";          
+            $str .= "'". htmlspecialchars($frame->get_text()) ."'";
+          } else {
+            $str .= "\nBlock: " . $frame->get_node()->nodeName . " (" . spl_object_hash($frame->get_node()) . ")";
+          }
+        }
+        
+        $str .=
+          //"\ncount => " . $line["count"] . "\n".
+          "\ny => " . $line["y"] . "\n" .
+          "w => " . $line["w"] . "\n" .
+          "h => " . $line["h"] . "\n";
+      }
+      $str .= "</pre>";
+    }
+    $str .= "\n";
+    if ( php_sapi_name() == "cli" )
+      $str = strip_tags(str_replace(array("<br/>","<b>","</b>"),
+                                    array("\n","",""),
+                                    $str));
+    
+    return $str;
+  }
+        
+}
+
+//------------------------------------------------------------------------
+
+/**
+ * Linked-list IteratorAggregate
+ *
+ * @access private
+ * @package dompdf
+ */
+class FrameList implements IteratorAggregate {
+  protected $_frame;
+
+  function __construct($frame) { $this->_frame = $frame; }
+  function getIterator() { return new FrameListIterator($this->_frame); }
+}
+  
+/**
+ * Linked-list Iterator
+ *
+ * Returns children in order and allows for list to change during iteration,
+ * provided the changes occur to or after the current element
+ *
+ * @access private
+ * @package dompdf
+ */
+class FrameListIterator implements Iterator {
+
+  protected $_parent;
+  protected $_cur;
+  protected $_num;
+
+  function __construct(Frame $frame) {
+    $this->_parent = $frame;
+    $this->_cur = $frame->get_first_child();
+    $this->_num = 0;
+  }
+
+  function rewind() { 
+    $this->_cur = $this->_parent->get_first_child();
+    $this->_num = 0;
+  }
+
+  function valid() {
+    return isset($this->_cur);// && ($this->_cur->get_prev_sibling() === $this->_prev);
+  }
+  function key() { return $this->_num; }
+  function current() { return $this->_cur; }
+
+  function next() {
+
+    $ret = $this->_cur;
+    if ( !$ret )
+      return null;
+    
+    $this->_cur = $this->_cur->get_next_sibling();
+    $this->_num++;
+    return $ret;
+  }
+}
+
+//------------------------------------------------------------------------
+
+/**
+ * Pre-order IteratorAggregate
+ *
+ * @access private
+ * @package dompdf
+ */
+class FrameTreeList implements IteratorAggregate {
+
+  protected $_root;
+  function __construct(Frame $root) { $this->_root = $root; }
+  function getIterator() { return new FrameTreeIterator($this->_root); }
+
+}
+
+/**
+ * Pre-order Iterator
+ *
+ * Returns frames in preorder traversal order (parent then children)
+ *
+ * @access private
+ * @package dompdf
+ */
+class FrameTreeIterator implements Iterator {
+
+  protected $_root;
+  protected $_stack = array();
+  protected $_num;
+  
+  function __construct(Frame $root) {
+    $this->_stack[] = $this->_root = $root;
+    $this->_num = 0;
+  }
+
+  function rewind() {
+    $this->_stack = array($this->_root);
+    $this->_num = 0;
+  }
+    
+  function valid() { return count($this->_stack) > 0; }
+  function key() { return $this->_num; }
+  function current() { return end($this->_stack); }
+
+  function next() {
+    $b = end($this->_stack);
+    
+    // Pop last element
+    unset($this->_stack[ key($this->_stack) ]);
+    $this->_num++;
+    
+    // Push all children onto the stack in reverse order
+    if ( $c = $b->get_last_child() ) {
+      $this->_stack[] = $c;
+      while ( $c = $c->get_prev_sibling() )
+        $this->_stack[] = $c;
+    }
+    return $b;
+  }
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/frame_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/frame_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/frame_decorator.cls.php	(revision 2000)
@@ -0,0 +1,398 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: frame_decorator.cls.php,v $
+ * Created on: 2004-06-02
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: frame_decorator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Base Frame_Decorator class
+ *
+ * @access private
+ * @package dompdf
+ */
+abstract class Frame_Decorator extends Frame {
+  
+  /**
+   * The root node of the DOM tree
+   *
+   * @var Frame
+   */
+  protected $_root;
+
+  /**
+   * The decorated frame
+   *
+   * @var Frame
+   */
+  protected $_frame;
+
+  /**
+   * Positioner object used to position this frame (Strategy pattern)
+   *
+   * @var Positioner
+   */
+  protected $_positioner;
+
+  /**
+   * Reflower object used to calculate frame dimensions (Strategy pattern)
+   *
+   * @var Frame_Reflower
+   */
+  protected $_reflower;
+  
+  /**
+   * Reference to the current dompdf instance
+   *
+   * @var DOMPDF
+   */
+  protected $_dompdf;
+
+  /**
+   * Class constructor
+   *
+   * @param Frame $frame the decoration target
+   */
+  function __construct(Frame $frame, DOMPDF $dompdf) {
+    $this->_frame = $frame;
+    $this->_root = null;
+    $this->_dompdf = $dompdf;
+    $frame->set_decorator($this);
+  }
+
+  /**
+   * "Destructor": foribly free all references held by this object
+   *
+   * @param bool $recursive if true, call dispose on all children
+   */
+  function dispose($recursive = false) {
+    
+    if ( $recursive ) {
+      while ( $child = $this->get_first_child() )
+        $child->dispose(true);
+    }
+    
+    unset($this->_root);
+    $this->_frame->dispose(false);
+    unset($this->_frame);
+    unset($this->_positioner);
+    unset($this->_reflower);
+
+  }
+
+  // Return a copy of this frame with $node as its node
+  function copy(DomNode $node) {
+    $frame = new Frame($node);
+    $frame->set_style(clone $this->_frame->get_original_style());
+    $deco = Frame_Factory::decorate_frame($frame, $this->_dompdf);
+    $deco->set_root($this->_root);
+    return $deco;
+  }
+
+  /**
+   * Create a deep copy: copy this node and all children
+   *
+   * @return Frame
+   */
+  function deep_copy() {
+    $frame = new Frame($this->get_node()->cloneNode());
+    $frame->set_style(clone $this->_frame->get_original_style());
+    $deco = Frame_Factory::decorate_frame($frame, $this->_dompdf);
+    $deco->set_root($this->_root);
+
+    foreach ($this->get_children() as $child)
+      $deco->append_child($child->deep_copy());
+
+    return $deco;
+  }
+  //........................................................................
+  
+  // Delegate calls to decorated frame object
+  function reset() {
+    $this->_frame->reset();
+
+    // Reset all children
+    foreach ($this->get_children() as $child)
+      $child->reset();
+
+  }
+  
+  function get_node() { return $this->_frame->get_node(); }
+  function get_id() { return $this->_frame->get_id(); }
+  function get_style() { return $this->_frame->get_style(); }
+  function get_original_style() { return $this->_frame->get_original_style(); }
+  function get_containing_block($i = null) { return $this->_frame->get_containing_block($i); }
+  function get_position($i = null) { return $this->_frame->get_position($i); }
+  function get_dompdf() { return $this->_dompdf; }
+//   function get_decorator() {
+//     if ( isset($this->_decorator) )
+//       return $this->_decorator;
+//     else
+//       return $this;
+//   }
+
+  function get_margin_height() { return $this->_frame->get_margin_height(); }
+  function get_margin_width() { return $this->_frame->get_margin_width(); }
+  function get_padding_box() { return $this->_frame->get_padding_box(); }
+  function get_border_box() { return $this->_frame->get_border_box(); }
+
+  function set_id($id) { $this->_frame->set_id($id); }
+  function set_style(Style $style) { $this->_frame->set_style($style); }
+
+  function set_containing_block($x = null, $y = null, $w = null, $h = null) {
+    $this->_frame->set_containing_block($x, $y, $w, $h);
+  }
+
+  function set_position($x = null, $y = null) {
+    $this->_frame->set_position($x, $y);
+  }
+  function __toString() { return $this->_frame->__toString(); }
+  
+  function prepend_child(Frame $child, $update_node = true) {
+    while ( $child instanceof Frame_Decorator )
+      $child = $child->_frame;
+    
+    $this->_frame->prepend_child($child, $update_node);
+  }
+
+  function append_child(Frame $child, $update_node = true) {
+    while ( $child instanceof Frame_Decorator )
+      $child = $child->_frame;
+
+    $this->_frame->append_child($child, $update_node);
+  }
+
+  function insert_child_before(Frame $new_child, Frame $ref, $update_node = true) {
+    while ( $new_child instanceof Frame_Decorator )
+      $new_child = $new_child->_frame;
+
+    if ( $ref instanceof Frame_Decorator )
+      $ref = $ref->_frame;
+
+    $this->_frame->insert_child_before($new_child, $ref, $update_node);
+  }
+
+  function insert_child_after(Frame $new_child, Frame $ref, $update_node = true) {
+    while ( $new_child instanceof Frame_Decorator )
+      $new_child = $new_child->_frame;
+
+    while ( $ref instanceof Frame_Decorator )
+      $ref = $ref->_frame;
+    
+    $this->_frame->insert_child_after($new_child, $ref, $update_node);
+  }
+
+  function remove_child(Frame $child, $update_node = true) {
+    while  ( $child instanceof Frame_Decorator )
+      $child = $new_child->_frame;
+
+    $this->_frame->remove_child($child, $update_node);
+  }
+  
+  //........................................................................
+
+  function get_parent() {
+
+    $p = $this->_frame->get_parent();
+    
+    if ( $p && $deco = $p->get_decorator() ) {
+      while ( $tmp = $deco->get_decorator() )
+        $deco = $tmp;      
+      return $deco;
+    } else if ( $p )
+      return $p;
+    else
+      return null;
+  }
+
+  function get_first_child() {
+    $c = $this->_frame->get_first_child();
+    if ( $c && $deco = $c->get_decorator() ) {
+      while ( $tmp = $deco->get_decorator() )
+        $deco = $tmp;      
+      return $deco;
+    } else if ( $c )
+      return $c;
+    else
+      return null;
+  }
+
+  function get_last_child() {
+    $c = $this->_frame->get_last_child();
+    if ( $c && $deco = $c->get_decorator() ) {
+      while ( $tmp = $deco->get_decorator() )
+        $deco = $tmp;      
+      return $deco;
+    } else if ( $c )
+      return $c;
+    else
+      return null;
+  }
+
+  function get_prev_sibling() {
+    $s = $this->_frame->get_prev_sibling();
+    if ( $s && $deco = $s->get_decorator() ) {
+      while ( $tmp = $deco->get_decorator() )
+        $deco = $tmp;      
+      return $deco;
+    } else if ( $s )
+      return $s;
+    else
+      return null;
+  }
+  
+  function get_next_sibling() {
+    $s = $this->_frame->get_next_sibling();
+    if ( $s && $deco = $s->get_decorator() ) {
+      while ( $tmp = $deco->get_decorator() )
+        $deco = $tmp;      
+      return $deco;
+    } else if ( $s )
+      return $s;
+    else
+      return null;
+  }
+
+  function get_children() {
+    return new FrameList($this);
+  }
+
+  function get_subtree() {
+    return new FrameTreeList($this);
+  }
+  
+  //........................................................................
+
+  function set_positioner(Positioner $posn) {
+    $this->_positioner = $posn;
+    if ( $this->_frame instanceof Frame_Decorator )
+      $this->_frame->set_positioner($posn);
+  }
+  
+  //........................................................................
+
+  function set_reflower(Frame_Reflower $reflower) {
+    $this->_reflower = $reflower;
+    if ( $this->_frame instanceof Frame_Decorator )
+      $this->_frame->set_reflower( $reflower );
+  }
+  
+  function get_reflower() { return $this->_reflower; }
+  
+  //........................................................................
+  
+  function set_root(Frame $root) {
+    $this->_root = $root;
+      if ( $this->_frame instanceof Frame_Decorator )
+        $this->_frame->set_root($root);
+  }
+  
+  function get_root() { return $this->_root; }
+  
+  //........................................................................
+
+  function find_block_parent() {
+
+    // Find our nearest block level parent
+    $p = $this->get_parent();
+    
+    while ( $p ) {
+      if ( in_array($p->get_style()->display, Style::$BLOCK_TYPES) )
+        break;
+
+      $p = $p->get_parent();
+    }
+
+    return $p;
+  }
+
+  //........................................................................
+
+  /**
+   * split this frame at $child.
+   *
+   * The current frame is cloned and $child and all children following
+   * $child are added to the clone.  The clone is then passed to the
+   * current frame's parent->split() method.
+   *
+   * @param Frame $child
+   */
+  function split($child = null) {
+
+    if ( is_null( $child ) ) {
+      $this->get_parent()->split($this);
+      return;
+    }
+    
+    if ( $child->get_parent() !== $this )
+      throw new DOMPDF_Exception("Unable to split: frame is not a child of this one.");
+
+    $split = $this->copy( $this->_frame->get_node()->cloneNode() );
+    $split->reset();
+    $this->get_parent()->insert_child_after($split, $this);
+
+    // Add $frame and all following siblings to the new split node
+    $iter = $child;
+    while ($iter) {
+      $frame = $iter;      
+      $iter = $iter->get_next_sibling();
+      $frame->reset();
+      $split->append_child($frame);
+    }
+
+    $this->get_parent()->split($split);
+  }
+
+  //........................................................................
+
+  final function position() { $this->_positioner->position();  }
+  
+  final function reflow() {
+    // Uncomment this to see the frames before they're laid out, instead of
+    // during rendering.
+    //echo $this->_frame; flush();
+    $this->_reflower->reflow();
+  }
+
+  final function get_min_max_width() { return $this->get_reflower()->get_min_max_width(); }
+  
+  //........................................................................
+
+
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/font_metrics.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/font_metrics.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/font_metrics.cls.php	(revision 2000)
@@ -0,0 +1,245 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: font_metrics.cls.php,v $
+ * Created on: 2004-06-02
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 0.5.1.htischer.20090507
+ * - On missing font on explicite font selection don't change subtype and don't return default font.
+ * - On requesting default font and missing subtype, check similar subtypes, then any subtype, then normal. The last must exist.
+ * - Add comments
+ */
+
+/* $Id: font_metrics.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+require_once(DOMPDF_LIB_DIR . "/class.pdf.php");
+
+/**
+ * Name of the font cache file
+ *
+ * This file must be writable by the webserver process only to update it
+ * with save_font_families() after adding the .afm file references of a new font family
+ * with Font_Metrics::save_font_families().
+ * This is typically done only from command line with load_font.php on converting
+ * ttf fonts to afm with an external tool referenced in the define _TTF2AFM
+ *
+ * Declared here because PHP5 prevents constants from being declared with expressions
+ */
+if (file_exists(DOMPDF_FONT_DIR . "dompdf_font_family_cache")) {
+	define('__DOMPDF_FONT_CACHE_FILE', DOMPDF_FONT_DIR . "dompdf_font_family_cache");
+} else {
+	define('__DOMPDF_FONT_CACHE_FILE', DOMPDF_FONT_DIR . "dompdf_font_family_cache.dist");
+}
+
+
+/**
+ * The font metrics class
+ *
+ * This class provides information about fonts and text.  It can resolve
+ * font names into actual installed font files, as well as determine the
+ * size of text in a particular font and size.
+ *
+ * @static
+ * @package dompdf
+ */
+class Font_Metrics {
+
+  /**
+   * @see __DOMPDF_FONT_CACHE_FILE
+   */
+  const CACHE_FILE = __DOMPDF_FONT_CACHE_FILE;
+  
+  /**
+   * Underlying {@link Cpdf} object to perform text size calculations
+   *
+   * @var Cpdf
+   */
+  static protected $_pdf = null;
+
+  /**
+   * Array of font family names to font files
+   *
+   * Usually cached by the {@link load_font.php} script
+   *
+   * @var array
+   */
+  static protected $_font_lookup = array();
+  
+  
+  /**
+   * Class initialization
+   *
+   */
+  static function init() {
+    if (!self::$_pdf) {
+      self::load_font_families();
+      self::$_pdf = Canvas_Factory::get_instance();
+    }
+  }
+
+  /**
+   * Calculates text size, in points
+   *
+   * @param string $text the text to be sized
+   * @param string $font the desired font
+   * @param float  $size the desired font size
+   * @param float  $spacing word spacing, if any
+   * @return float
+   */
+  static function get_text_width($text, $font, $size, $spacing = 0) {
+    return self::$_pdf->get_text_width($text, $font, $size, $spacing);
+  }
+
+  /**
+   * Calculates font height
+   *
+   * @param string $font
+   * @param float $size
+   * @return float
+   */
+  static function get_font_height($font, $size) {
+    return self::$_pdf->get_font_height($font, $size);
+  }
+
+  /**
+   * Resolves a font family & subtype into an actual font file
+   *
+   * Subtype can be one of 'normal', 'bold', 'italic' or 'bold_italic'.  If
+   * the particular font family has no suitable font file, the default font
+   * ({@link DOMPDF_DEFAULT_FONT}) is used.  The font file returned
+   * is the absolute pathname to the font file on the system.
+   *
+   * @param string $family
+   * @param string $subtype
+   * @return string
+   */
+  static function get_font($family, $subtype = "normal") {
+
+    /* Allow calling for various fonts in search path. Therefore not immediately
+     * return replacement on non match.
+     * Only when called with NULL try replacement.
+     * When this is also missing there is really trouble.
+     * If only the subtype fails, nevertheless return failure.
+     * Only on checking the fallback font, check various subtypes on same font.
+     */
+
+    if ( $family ) {
+      $family = str_replace( array("'", '"'), "", mb_strtolower($family));
+      $subtype = mb_strtolower($subtype);
+
+      if ( isset(self::$_font_lookup[$family][$subtype]) ) {
+        return self::$_font_lookup[$family][$subtype];
+      }
+      return null;
+    }
+
+    $family = DOMPDF_DEFAULT_FONT;
+
+    if ( isset(self::$_font_lookup[$family][$subtype]) ) {
+      return self::$_font_lookup[$family][$subtype];
+    }
+
+    foreach ( self::$_font_lookup[$family] as $sub => $font ) {
+      if (strpos($subtype, $sub) !== false) {
+        return $font;
+      }
+    }
+
+    if ($subtype != "normal") {
+      foreach ( self::$_font_lookup[$family] as $sub => $font ) {
+        if ($sub != "normal") {
+          return $font;
+        }
+      }
+    }
+
+    $subtype = "normal";
+
+    if ( isset(self::$_font_lookup[$family][$subtype]) ) {
+      return self::$_font_lookup[$family][$subtype];
+    }
+    return null;
+  }
+
+  /**
+   * Saves the stored font family cache
+   *
+   * The name and location of the cache file are determined by {@link
+   * Font_Metrics::CACHE_FILE}.  This file should be writable by the
+   * webserver process.
+   *
+   * @see Font_Metrics::load_font_families()
+   */
+  static function save_font_families() {
+
+    file_put_contents(self::CACHE_FILE, var_export(self::$_font_lookup, true));
+    
+  }
+
+  /**
+   * Loads the stored font family cache
+   *
+   * @see save_font_families()
+   */
+  static function load_font_families() {
+    if ( !is_readable(self::CACHE_FILE) )
+      return;
+
+    $data = file_get_contents(self::CACHE_FILE);
+
+    if ( $data != "" )
+      eval ('self::$_font_lookup = ' . $data . ";");
+  }
+
+  /**
+   * Returns the current font lookup table
+   *
+   * @return array
+   */
+  static function get_font_families() {
+    return self::$_font_lookup;
+  }
+
+  static function set_font_family($fontname, $entry) {
+    self::$_font_lookup[mb_strtolower($fontname)] = $entry;
+  }
+}
+
+Font_Metrics::init();
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/image_frame_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/image_frame_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/image_frame_decorator.cls.php	(revision 2000)
@@ -0,0 +1,133 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: image_frame_decorator.cls.php,v $
+ * Created on: 2004-08-08
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 0.5.1.htischer.20090507
+ * - add optional debug output
+ */
+
+/* $Id: image_frame_decorator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Decorates frames for image layout and rendering
+ *
+ * @access private
+ * @package dompdf
+ */
+class Image_Frame_Decorator extends Frame_Decorator {
+
+  /**
+   * Array of downloaded images.  Cached so that identical images are
+   * not needlessly downloaded.
+   *
+   * @var array
+   */
+  static protected $_cache = array();
+ 
+  /**
+   * The path to the image file (note that remote images are
+   * downloaded locally to DOMPDF_TEMP_DIR).
+   *
+   * @var string
+   */
+  protected $_image_url;
+
+  /**
+   * The image's file extension (i.e. png, jpeg, gif)
+   *
+   * @var string
+   */
+  protected $_image_ext;
+
+  /**
+   * Class constructor
+   *
+   * @param Frame $frame the frame to decorate
+   * @param DOMPDF $dompdf the document's dompdf object (required to resolve relative & remote urls)
+   */
+  function __construct(Frame $frame, DOMPDF $dompdf) {
+    global $_dompdf_warnings;
+    
+    parent::__construct($frame, $dompdf);
+    $url = $frame->get_node()->getAttribute("src");
+      
+    //debugpng
+    if (DEBUGPNG) print '[__construct '.$url.']';
+
+    list($this->_image_url, $this->_image_ext) = Image_Cache::resolve_url($url,
+                                                                          $dompdf->get_protocol(),
+                                                                          $dompdf->get_host(),
+                                                                          $dompdf->get_base_path());
+    
+  }
+
+  /**
+   * Return the image's url
+   *
+   * @return string The url of this image
+   */
+  function get_image_url() {
+    return $this->_image_url;
+  }
+
+  /**
+   * Return the image's file extension
+   *
+   * @return string The image's file extension
+   */
+  function get_image_ext() {
+    return $this->_image_ext;
+  }
+  
+  /**
+   * Unlink all cached images (i.e. temporary images either downloaded
+   * or converted)
+   */
+  static function clear_image_cache() {
+    if ( count(self::$_cache) ) {
+      foreach (self::$_cache as $file)
+        //debugpng
+        if (DEBUGPNG) print '[clear_image_cache unlink '.$file.']';
+        if (!DEBUGKEEPTEMP)
+          unlink($file);
+    }
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/functions.inc.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/functions.inc.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/functions.inc.php	(revision 2000)
@@ -0,0 +1,559 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: functions.inc.php,v $
+ * Created on: 2004-08-04
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 0.5.1.htischer.20090507
+ * - trailing slash of base_path in build_url is no longer optional when
+ *   required. This allows paths not ending in a slash, e.g. on dynamically
+ *   created sites with page id in the url parameters.
+ * @version 20090601
+ * - fix windows paths
+ * @version 20090610
+ * - relax windows path syntax, use uniform path delimiter. Used for background images.
+ */
+
+/* $Id: functions.inc.php 187 2009-10-20 19:09:52Z eclecticgeek@gmail.com $ */
+
+/**
+ * print_r wrapper for html/cli output
+ *
+ * Wraps print_r() output in < pre > tags if the current sapi is not
+ * 'cli'.  Returns the output string instead of displaying it if $return is
+ * true.
+ *
+ * @param mixed $mixed variable or expression to display
+ * @param bool $return
+ *
+ */
+if ( !function_exists("pre_r") ) {
+function pre_r($mixed, $return = false) {
+  if ($return)
+    return "<pre>" . print_r($mixed, true) . "</pre>";
+
+  if ( php_sapi_name() != "cli")
+    echo ("<pre>");
+  print_r($mixed);
+
+  if ( php_sapi_name() != "cli")
+    echo("</pre>");
+  else
+    echo ("\n");
+  flush();
+
+}
+}
+
+/**
+ * var_dump wrapper for html/cli output
+ *
+ * Wraps var_dump() output in < pre > tags if the current sapi is not
+ * 'cli'.
+ *
+ * @param mixed $mixed variable or expression to display.
+ */
+if ( !function_exists("pre_var_dump") ) {
+function pre_var_dump($mixed) {
+  if ( php_sapi_name() != "cli")
+    echo("<pre>");
+  var_dump($mixed);
+  if ( php_sapi_name() != "cli")
+    echo("</pre>");
+}
+}
+
+/**
+ * builds a full url given a protocol, hostname, base path and url
+ *
+ * @param string $protocol
+ * @param string $host
+ * @param string $base_path
+ * @param string $url
+ * @return string
+ *
+ * Initially the trailing slash of $base_path was optional, and conditionally appended.
+ * However on dynamically created sites, where the page is given as url parameter,
+ * the base path might not end with an url.
+ * Therefore do not append a slash, and **require** the $base_url to ending in a slash
+ * when needed.
+ * Vice versa, on using the local file system path of a file, make sure that the slash
+ * is appended (o.k. also for Windows)
+ */
+function build_url($protocol, $host, $base_path, $url) {
+  if ( mb_strlen($url) == 0 ) {
+    //return $protocol . $host . rtrim($base_path, "/\\") . "/";
+    return $protocol . $host . $base_path;
+  }
+
+  // Is the url already fully qualified?
+  if ( mb_strpos($url, "://") !== false )
+    return $url;
+
+  $ret = $protocol;
+
+  if (!in_array(mb_strtolower($protocol), array("http://", "https://", "ftp://", "ftps://"))) {
+    //On Windows local file, an abs path can begin also with a '\' or a drive letter and colon
+    //drive: followed by a relative path would be a drive specific default folder.
+    //not known in php app code, treat as abs path
+    //($url{1} !== ':' || ($url{2}!=='\\' && $url{2}!=='/'))
+    if ($url{0} !== '/' && (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' || ($url{0} != '\\' && $url{1} !== ':'))) {
+      // For rel path and local acess we ignore the host, and run the path through realpath()
+      $ret .= dompdf_realpath($base_path).'/';
+    }
+    $ret .= $url;
+    return $ret;
+  }
+
+  //remote urls with backslash in html/css are not really correct, but lets be genereous
+  if ( $url{0} === '/' || $url{0} === '\\' ) {
+    // Absolute path
+    $ret .= $host . $url;
+  } else {
+    // Relative path
+    //$base_path = $base_path !== "" ? rtrim($base_path, "/\\") . "/" : "";
+    $ret .= $host . $base_path . $url;
+  }
+
+  return $ret;
+
+}
+
+/**
+ * parse a full url or pathname and return an array(protocol, host, path,
+ * file + query + fragment)
+ *
+ * @param string $url
+ * @return array
+ */
+function explode_url($url) {
+  $protocol = "";
+  $host = "";
+  $path = "";
+  $file = "";
+
+  $arr = parse_url($url);
+
+  if ( isset($arr["scheme"]) &&
+       $arr["scheme"] != "file" &&
+       mb_strlen($arr["scheme"]) > 1 ) // Exclude windows drive letters...
+    {
+    $protocol = $arr["scheme"] . "://";
+
+    if ( isset($arr["user"]) ) {
+      $host .= $arr["user"];
+
+      if ( isset($arr["pass"]) )
+        $host .= "@" . $arr["pass"];
+
+      $host .= ":";
+    }
+
+    if ( isset($arr["host"]) )
+      $host .= $arr["host"];
+
+    if ( isset($arr["port"]) )
+      $host .= ":" . $arr["port"];
+
+    if ( isset($arr["path"]) && $arr["path"] !== "" ) {
+      // Do we have a trailing slash?
+      if ( $arr["path"]{ mb_strlen($arr["path"]) - 1 } == "/" ) {
+        $path = $arr["path"];
+        $file = "";
+      } else {
+        $path = dirname($arr["path"]) . "/";
+        $file = basename($arr["path"]);
+      }
+    }
+
+    if ( isset($arr["query"]) )
+      $file .= "?" . $arr["query"];
+
+    if ( isset($arr["fragment"]) )
+      $file .= "#" . $arr["fragment"];
+
+  } else {
+
+    $i = mb_strpos($url, "file://");
+    if ( $i !== false)
+      $url = mb_substr($url, $i + 7);
+
+    $protocol = ""; // "file://"; ? why doesn't this work... It's because of
+                    // network filenames like //COMPU/SHARENAME
+
+    $host = ""; // localhost, really
+    $file = basename($url);
+
+    $path = dirname($url);
+
+    // Check that the path exists
+    if ( $path !== false ) {
+      $path .= '/';
+
+    } else {
+      // generate a url to access the file if no real path found.
+      $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://';
+
+      $host = isset($_SERVER["HTTP_HOST"]) ? $_SERVER["HTTP_HOST"] : php_uname("n");
+
+      if ( substr($arr["path"], 0, 1) == '/' ) {
+        $path = dirname($arr["path"]);
+      } else {
+        $path = '/' . rtrim(dirname($_SERVER["SCRIPT_NAME"]), '/') . '/' . $arr["path"];
+      }
+    }
+  }
+
+  $ret = array($protocol, $host, $path, $file,
+               "protocol" => $protocol,
+               "host" => $host,
+               "path" => $path,
+               "file" => $file);
+  return $ret;
+}
+
+/**
+ * converts decimal numbers to roman numerals
+ *
+ * @param int $num
+ * @return string
+ */
+function dec2roman($num) {
+
+  static $ones = array("", "i", "ii", "iii", "iv", "v",
+                       "vi", "vii", "viii", "ix");
+  static $tens = array("", "x", "xx", "xxx", "xl", "l",
+                       "lx", "lxx", "lxxx", "xc");
+  static $hund = array("", "c", "cc", "ccc", "cd", "d",
+                       "dc", "dcc", "dccc", "cm");
+  static $thou = array("", "m", "mm", "mmm");
+
+  if ( !is_numeric($num) )
+    throw new DOMPDF_Exception("dec2roman() requires a numeric argument.");
+
+  if ( $num > 4000 || $num < 0 )
+    return "(out of range)";
+
+  $num = strrev((string)$num);
+
+  $ret = "";
+  switch (mb_strlen($num)) {
+
+  case 4:
+    $ret .= $thou[$num{3}];
+
+  case 3:
+    $ret .= $hund[$num{2}];
+
+  case 2:
+    $ret .= $tens[$num{1}];
+
+  case 1:
+    $ret .= $ones[$num{0}];
+
+  default:
+    break;
+  }
+  return $ret;
+
+}
+
+/**
+ * Determines whether $value is a percentage or not
+ *
+ * @param float $value
+ * @return bool
+ */
+function is_percent($value) { return false !== mb_strpos($value, "%"); }
+
+/**
+ * Canonicalize a path without checking if the file exists
+ *
+ * @param  string $path The path to canonicalize
+ * @return string The canonical path, or null if the path is invalid (e.g. /../../foo)
+ */
+function dompdf_realpath($path) {
+  // If the path is relative, prepend the current directory
+  if ( strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ) {
+    if ( $path{0} == '/' || $path{0} == '\\' ) {
+      $path = substr(getcwd(),0,2) . $path;
+    } else if ($path{1} != ':' ) {
+      $path = getcwd() . DIRECTORY_SEPARATOR . $path;
+    }
+  } else if ($path{0} != '/') {
+    $path = getcwd() . DIRECTORY_SEPARATOR . $path;
+  }
+  $path = strtr( $path, DIRECTORY_SEPARATOR == "\\" ? "/" : DIRECTORY_SEPARATOR , DIRECTORY_SEPARATOR);
+
+  $parts = explode(DIRECTORY_SEPARATOR, $path);
+  $path = array();
+
+  $i = 0;
+  foreach ($parts as $dir) {
+
+    if ( $dir == "." )
+      continue;
+
+    if ( $dir == ".." ) {
+      $i--;
+      if ( $i < 0 )
+        $i = 0;
+
+      unset($path[$i]);
+      continue;
+    }
+
+    if ( $dir == "" )
+      continue;
+
+    $path[$i] = $dir;
+    $i++;
+  }
+
+  return (DIRECTORY_SEPARATOR === '/' ? DIRECTORY_SEPARATOR : NULL) . join(DIRECTORY_SEPARATOR, $path);
+}
+
+/**
+ * mb_string compatibility
+ */
+
+if ( !function_exists("mb_convert_encoding") ) {
+  function mb_convert_encoding($data, $to_encoding, $from_encoding='UTF-8') {
+    if (str_replace('-', '', strtolower($to_encoding)) == 'utf8') {
+      return utf8_encode($data);
+    } else {
+      return utf8_decode($data);
+    }
+  }
+}
+
+if ( !function_exists("mb_detect_encoding") ) {
+  function mb_detect_encoding($data, $encoding_list=array('iso-8859-1'), $strict=false) {
+    return 'iso-8859-1';
+  }
+}
+
+if ( !function_exists("mb_internal_encoding") ) {
+  function mb_internal_encoding($encoding=NULL) {
+    if (isset($encoding)) {
+      return true;
+    } else {
+      return 'iso-8859-1';
+    }
+  }
+}
+
+if ( !function_exists("mb_strlen") ) {
+  function mb_strlen($str, $encoding='iso-8859-1') {
+    return strlen($str);
+  }
+}
+
+if ( !function_exists("mb_strpos") ) {
+  function mb_strpos($haystack, $needle, $offset = 0) {
+    return strpos($haystack, $needle, $offset);
+  }
+}
+
+if ( !function_exists("mb_strrpos") ) {
+  function mb_strrpos($haystack, $needle, $offset = 0) {
+    return strrpos($haystack, $needle, $offset);
+  }
+}
+
+if ( !function_exists("mb_strtolower") ) {
+  function mb_strtolower($str) {
+    return strtolower($str);
+  }
+}
+
+if ( !function_exists("mb_strtoupper") ) {
+  function mb_strtoupper($str) {
+    return strtoupper($str);
+  }
+}
+
+if ( !function_exists("mb_substr") ) {
+  function mb_substr($str, $start, $length=null, $encoding='iso-8859-1') {
+    if ( is_null($length) )
+      return substr($str, $start);
+    else
+      return substr($str, $start, $length);
+  }
+}
+
+if ( !function_exists("mb_substr_count") ) {
+  function mb_substr_count($haystack, $needle) {
+    return substr_count($haystack, $needle);
+  }
+}
+
+/**
+ * Stores warnings in an array for display later
+ *
+ * This function allows warnings generated by the DomDocument parser
+ * and CSS loader ({@link Stylesheet}) to be captured and displayed
+ * later.  Without this function, errors are displayed immediately and
+ * PDF streaming is impossible.
+ *
+ * @see http://www.php.net/manual/en/function.set-error_handler.php
+ *
+ * @param int $errno
+ * @param string $errstr
+ * @param string $errfile
+ * @param string $errline
+ */
+function record_warnings($errno, $errstr, $errfile, $errline) {
+
+  if ( !($errno & (E_WARNING | E_NOTICE | E_USER_NOTICE | E_USER_WARNING )) ) // Not a warning or notice
+    throw new DOMPDF_Exception($errstr . " $errno");
+
+  global $_dompdf_warnings;
+  global $_dompdf_show_warnings;
+
+  if ( $_dompdf_show_warnings )
+    echo $errstr . "\n";
+
+  $_dompdf_warnings[] = $errstr;
+}
+
+/**
+ * Print a useful backtrace
+ */
+function bt() {
+  $bt = debug_backtrace();
+
+  array_shift($bt); // remove actual bt() call
+  echo "\n";
+
+  $i = 0;
+  foreach ($bt as $call) {
+    $file = basename($call["file"]) . " (" . $call["line"] . ")";
+    if ( isset($call["class"]) ) {
+      $func = $call["class"] . "->" . $call["function"] . "()";
+    } else {
+      $func = $call["function"] . "()";
+    }
+
+    echo "#" . str_pad($i, 2, " ", STR_PAD_RIGHT) . ": " . str_pad($file.":", 42) . " $func\n";
+    $i++;
+  }
+  echo "\n";
+}
+
+/**
+ * Print debug messages
+ *
+ * @param string $type  The type of debug messages to print
+ */
+function dompdf_debug($type, $msg) {
+  global $_DOMPDF_DEBUG_TYPES;
+  global $_dompdf_show_warnings;
+  global $_dompdf_debug;
+  if ( isset($_DOMPDF_DEBUG_TYPES[$type]) && ($_dompdf_show_warnings || $_dompdf_debug) ) {
+    $arr = debug_backtrace();
+
+    echo basename($arr[0]["file"]) . " (" . $arr[0]["line"] ."): " . $arr[1]["function"] . ": ";
+    pre_r($msg);
+  }
+}
+
+/**
+ * Dump memory usage
+ */
+if ( !function_exists("print_memusage") ) {
+function print_memusage() {
+  global $memusage;
+  echo ("Memory Usage\n");
+  $prev = 0;
+  $initial = reset($memusage);
+  echo (str_pad("Initial:", 40) . $initial . "\n\n");
+
+  foreach ($memusage as $key=>$mem) {
+    $mem -= $initial;
+    echo (str_pad("$key:" , 40));
+    echo (str_pad("$mem", 12) . "(diff: " . ($mem - $prev) . ")\n");
+    $prev = $mem;
+  }
+
+  echo ("\n" . str_pad("Total:", 40) . memory_get_usage()) . "\n";
+}
+}
+
+/**
+ * Initialize memory profiling code
+ */
+if ( !function_exists("enable_mem_profile") ) {
+function enable_mem_profile() {
+    global $memusage;
+    $memusage = array("Startup" => memory_get_usage());
+    register_shutdown_function("print_memusage");
+}
+}
+
+/**
+ * Record the current memory usage
+ *
+ * @param string $location a meaningful location
+ */
+if ( !function_exists("mark_memusage") ) {
+function mark_memusage($location) {
+  global $memusage;
+  if ( isset($memusage) )
+    $memusage[$location] = memory_get_usage();
+}
+}
+
+/**
+ * Find the current system temporary directory
+ *
+ * @link http://us.php.net/manual/en/function.sys-get-temp-dir.php#85261
+ */
+if ( !function_exists('sys_get_temp_dir')) {
+  function sys_get_temp_dir() {
+    if (!empty($_ENV['TMP'])) { return realpath($_ENV['TMP']); }
+    if (!empty($_ENV['TMPDIR'])) { return realpath( $_ENV['TMPDIR']); }
+    if (!empty($_ENV['TEMP'])) { return realpath( $_ENV['TEMP']); }
+    $tempfile=tempnam(uniqid(rand(),TRUE),'');
+    if (file_exists($tempfile)) {
+    unlink($tempfile);
+    return realpath(dirname($tempfile));
+    }
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/text_frame_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/text_frame_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/text_frame_decorator.cls.php	(revision 2000)
@@ -0,0 +1,184 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: text_frame_decorator.cls.php,v $
+ * Created on: 2004-06-04
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: text_frame_decorator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Decorates Frame objects for text layout
+ *
+ * @access private
+ * @package dompdf
+ */
+class Text_Frame_Decorator extends Frame_Decorator {
+  
+  // protected members
+  protected $_text_spacing;
+  
+  function __construct(Frame $frame, DOMPDF $dompdf) {
+    if ( $frame->get_node()->nodeName != "#text" )
+      throw new DOMPDF_Exception("Text_Decorator can only be applied to #text nodes.");
+    
+    parent::__construct($frame, $dompdf);
+    $this->_text_spacing = null;
+  }
+
+  //........................................................................
+
+  function reset() {
+    parent::reset();
+    $this->_text_spacing = null;
+  }
+  
+  //........................................................................
+
+  // Accessor methods
+  function get_text_spacing() { return $this->_text_spacing; }
+      
+  function get_text() {
+    // FIXME: this should be in a child class (and is incorrect)
+    if ( $this->_frame->get_style()->content !== "normal" ) {
+      $this->_frame->get_node()->data = $this->_frame->get_style()->content;
+      $this->_frame->get_style()->content = "normal";
+    }
+
+//      pre_r("---");
+//      $style = $this->_frame->get_style();
+//      var_dump($text = $this->_frame->get_node()->data);
+//      var_dump($asc = utf8_decode($text));
+//      for ($i = 0; $i < strlen($asc); $i++)
+//        pre_r("$i: " . $asc{$i} . " - " . ord($asc{$i}));
+//      pre_r("width: " . Font_Metrics::get_text_width($text, $style->font_family, $style->font_size));
+
+    return $this->_frame->get_node()->data;
+  }
+
+  //........................................................................
+
+  // Vertical margins & padding do not apply to text frames
+
+  // http://www.w3.org/TR/CSS21/visudet.html#inline-non-replaced:
+  //
+  // The vertical padding, border and margin of an inline, non-replaced box
+  // start at the top and bottom of the content area, not the
+  // 'line-height'. But only the 'line-height' is used to calculate the
+  // height of the line box.
+  function get_margin_height() {
+    // This function is called in add_frame_to_line() and is used to
+    // determine the line height, so we actually want to return the
+    // 'line-height' property, not the actual margin box
+    $style = $this->get_style();
+    $font = $style->font_family;
+    $size = $style->font_size;
+
+    /*
+    pre_r('-----');
+    pre_r($style->line_height);
+    pre_r($style->font_size);
+    pre_r(Font_Metrics::get_font_height($font, $size));
+    pre_r(($style->line_height / $size) * Font_Metrics::get_font_height($font, $size));
+    */
+
+    return ($style->line_height / $size) * Font_Metrics::get_font_height($font, $size);
+    
+  }
+
+  function get_padding_box() {
+    $pb = $this->_frame->get_padding_box();
+    $pb[3] = $pb["h"] = $this->_frame->get_style()->height;
+    return $pb;
+  }
+  //........................................................................
+
+  // Set method
+  function set_text_spacing($spacing) {
+    $this->_text_spacing = $spacing;
+
+    $style = $this->_frame->get_style();
+    // Re-adjust our width to account for the change in spacing
+    $style->width = Font_Metrics::get_text_width($this->get_text(), $style->font_family, $style->font_size, $spacing);
+  }
+
+  //........................................................................
+
+  // Recalculate the text width
+  function recalculate_width() {
+    $style = $this->get_style();
+    $text = $this->get_text();
+    $size = $style->font_size;
+    $font = $style->font_family;
+    $word_spacing = $style->length_in_pt($style->word_spacing);
+
+    $style->width = Font_Metrics::get_text_width($text, $font, $size, $word_spacing);
+  }
+  
+  //........................................................................
+
+  // Text manipulation methods
+  
+  // split the text in this frame at the offset specified.  The remaining
+  // text is added a sibling frame following this one and is returned.
+  function split_text($offset) {
+    if ( $offset == 0 )
+      return;
+
+    $split = $this->_frame->get_node()->splitText($offset);
+    $deco = $this->copy($split);
+
+    $p = $this->get_parent();
+    $p->insert_child_after($deco, $this, false);
+
+    if ( $p instanceof Inline_Frame_Decorator )
+      $p->split($deco);
+
+  }
+
+  //........................................................................
+
+  function delete_text($offset, $count) {
+    $this->_frame->get_node()->deleteData($offset, $count);
+  }
+
+  //........................................................................
+
+  function set_text($text) {
+    $this->_frame->get_node()->data = $text;
+  }
+
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/list_bullet_frame_reflower.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/list_bullet_frame_reflower.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/list_bullet_frame_reflower.cls.php	(revision 2000)
@@ -0,0 +1,67 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: list_bullet_frame_reflower.cls.php,v $
+ * Created on: 2004-06-23
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: list_bullet_frame_reflower.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Reflows list bullets
+ *
+ * @access private
+ * @package dompdf
+ */
+class List_Bullet_Frame_Reflower extends Frame_Reflower {
+
+  function __construct(Frame_Decorator $frame) { parent::__construct($frame); }
+    
+  //........................................................................
+
+  function reflow() {
+    $style = $this->_frame->get_style();
+
+    $style->width = $this->_frame->get_width();
+    $this->_frame->position();
+
+    if ( $style->list_style_position == "inside" ) {
+      $p = $this->_frame->find_block_parent();
+      $p->add_frame_to_line($this->_frame);
+    }
+
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/cached_pdf_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/cached_pdf_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/cached_pdf_decorator.cls.php	(revision 2000)
@@ -0,0 +1,188 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: cached_pdf_decorator.cls.php,v $
+ * Created on: 2004-07-23
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: cached_pdf_decorator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Caching canvas implementation
+ *
+ * Each rendered page is serialized and stored in the {@link Page_Cache}.
+ * This is useful for static forms/pages that do not need to be re-rendered
+ * all the time.
+ *
+ * This class decorates normal CPDF_Adapters.  It is currently completely
+ * experimental.
+ *
+ * @access private
+ * @package dompdf
+ */
+class Cached_PDF_Decorator extends CPDF_Adapter implements Canvas {
+  protected $_pdf;
+  protected $_cache_id;
+  protected $_current_page_id;
+  protected $_fonts;  // fonts used in this document
+  
+  function __construct($cache_id, CPDF_Adapter $pdf) {
+    $this->_pdf = $pdf;
+    $this->_cache_id = $cache_id;
+    $this->_fonts = array();
+    
+    $this->_current_page_id = $this->_pdf->open_object();
+  }
+
+  //........................................................................
+
+  function get_cpdf() { return $this->_pdf->get_cpdf(); }
+
+  function open_object() { $this->_pdf->open_object(); }
+  function reopen_object() { return $this->_pdf->reopen_object(); }
+  
+  function close_object() { $this->_pdf->close_object(); }
+
+  function add_object($object, $where = 'all') { $this->_pdf->add_object($object, $where); }
+
+  function serialize_object($id) { $this->_pdf->serialize_object($id); }
+
+  function reopen_serialized_object($obj) { $this->_pdf->reopen_serialized_object($obj); }
+    
+  //........................................................................
+
+  function get_width() { return $this->_pdf->get_width(); }
+  function get_height() {  return $this->_pdf->get_height(); }
+  function get_page_number() { return $this->_pdf->get_page_number(); }
+  function get_page_count() { return $this->_pdf->get_page_count(); }
+
+  function set_page_number($num) { $this->_pdf->set_page_number($num); }
+  function set_page_count($count) { $this->_pdf->set_page_count($count); }
+
+  function line($x1, $y1, $x2, $y2, $color, $width, $style = array()) {
+    $this->_pdf->line($x1, $y1, $x2, $y2, $color, $width, $style);
+  }
+                              
+  function rectangle($x1, $y1, $w, $h, $color, $width, $style = array()) {
+    $this->_pdf->rectangle($x1, $y1, $w, $h, $color, $width, $style);
+  }
+ 
+  function filled_rectangle($x1, $y1, $w, $h, $color) {
+    $this->_pdf->filled_rectangle($x1, $y1, $w, $h, $color);
+  }
+    
+  function polygon($points, $color, $width = null, $style = array(), $fill = false) {
+    $this->_pdf->polygon($points, $color, $width, $style, $fill);
+  }
+
+  function circle($x, $y, $r1, $color, $width = null, $style = null, $fill = false) {
+    $this->_pdf->circle($x, $y, $r1, $color, $width, $style, $fill);
+  }
+
+  function image($img_url, $x, $y, $w = null, $h = null) {
+    $this->_pdf->image($img_url, $x, $y, $w, $h);
+  }
+  
+  function text($x, $y, $text, $font, $size, $color = array(0,0,0), $adjust = 0, $angle = 0) {
+    $this->_fonts[$font] = true;
+    $this->_pdf->text($x, $y, $text, $font, $size, $color, $adjust, $angle);
+  }
+
+  function page_text($x, $y, $text, $font, $size, $color = array(0,0,0), $adjust = 0, $angle = 0) {
+    
+    // We want to remove this from cached pages since it may not be correct
+    $this->_pdf->close_object();
+    $this->_pdf->page_text($x, $y, $text, $font, $size, $color, $adjust, $angle);
+    $this->_pdf->reopen_object($this->_current_page_id);
+  }
+  
+  function page_script($script, $type = 'text/php') {
+    
+    // We want to remove this from cached pages since it may not be correct
+    $this->_pdf->close_object();
+    $this->_pdf->page_script($script, $type);
+    $this->_pdf->reopen_object($this->_current_page_id);
+  }
+  
+  function new_page() {
+    $this->_pdf->close_object();
+
+    // Add the object to the current page
+    $this->_pdf->add_object($this->_current_page_id, "add");
+    $this->_pdf->new_page();    
+
+    Page_Cache::store_page($this->_cache_id,
+                           $this->_pdf->get_page_number() - 1,
+                           $this->_pdf->serialize_object($this->_current_page_id));
+
+    $this->_current_page_id = $this->_pdf->open_object();
+    return $this->_current_page_id;
+  }
+  
+  function stream($filename) {
+    // Store the last page in the page cache
+    if ( !is_null($this->_current_page_id) ) {
+      $this->_pdf->close_object();
+      $this->_pdf->add_object($this->_current_page_id, "add");
+      Page_Cache::store_page($this->_cache_id,
+                             $this->_pdf->get_page_number(),
+                             $this->_pdf->serialize_object($this->_current_page_id));
+      Page_Cache::store_fonts($this->_cache_id, $this->_fonts);
+      $this->_current_page_id = null;
+    }
+    
+    $this->_pdf->stream($filename);
+    
+  }
+  
+  function &output() {
+    // Store the last page in the page cache
+    if ( !is_null($this->_current_page_id) ) {
+      $this->_pdf->close_object();
+      $this->_pdf->add_object($this->_current_page_id, "add");
+      Page_Cache::store_page($this->_cache_id,
+                             $this->_pdf->get_page_number(),
+                             $this->_pdf->serialize_object($this->_current_page_id));
+      $this->_current_page_id = null;
+    }
+    
+    return $this->_pdf->output();
+  }
+  
+  function get_messages() { return $this->_pdf->get_messages(); }
+  
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/list_bullet_renderer.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/list_bullet_renderer.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/list_bullet_renderer.cls.php	(revision 2000)
@@ -0,0 +1,122 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: list_bullet_renderer.cls.php,v $
+ * Created on: 2004-06-23
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 20090622
+ * - bullet size proportional to font size, center position
+ */
+
+/* $Id: list_bullet_renderer.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Renders list bullets
+ *
+ * @access private
+ * @package dompdf
+ */
+class List_Bullet_Renderer extends Abstract_Renderer {
+
+  //........................................................................
+
+  function render(Frame $frame) {
+
+    $style = $frame->get_style();
+    $font_size = $style->get_font_size();
+    $line_height = $style->length_in_pt($style->line_height, $frame->get_containing_block("w"));
+
+    // Handle list-style-image
+    // If list style image is requested but missing, fall back to predefined types
+    if ( $style->list_style_image != "none" &&
+         strcmp($img = $frame->get_image_url(), DOMPDF_LIB_DIR . "/res/broken_image.png") != 0) {
+
+      list($x,$y) = $frame->get_position();
+      
+      //For expected size and aspect, instead of box size, use image natural size scaled to DPI.
+      // Resample the bullet image to be consistent with 'auto' sized images
+      // See also Image_Frame_Reflower::get_min_max_width
+      // Tested php ver: value measured in px, suffix "px" not in value: rtrim unnecessary.
+      //$w = $frame->get_width();
+      //$h = $frame->get_height();
+      list($width, $height) = getimagesize($img);
+      $w = (((float)rtrim($width, "px")) * 72) / DOMPDF_DPI;
+      $h = (((float)rtrim($height, "px")) * 72) / DOMPDF_DPI;
+      
+      $x -= $w;
+      $y -= ($line_height - $font_size)/2; //Reverse hinting of list_bullet_positioner
+
+      $this->_canvas->image( $img, $frame->get_image_ext(), $x, $y, $w, $h);
+
+    } else {
+
+      $bullet_style = $style->list_style_type;
+
+      $fill = false;
+
+      switch ($bullet_style) {
+
+      default:
+      case "disc":
+        $fill = true;
+
+      case "circle":
+        list($x,$y) = $frame->get_position();
+        $r = ($font_size*(List_Bullet_Frame_Decorator::BULLET_SIZE /*-List_Bullet_Frame_Decorator::BULLET_THICKNESS*/ ))/2;
+        $x -= $font_size*(List_Bullet_Frame_Decorator::BULLET_SIZE/2);
+        $y += ($font_size*(1-List_Bullet_Frame_Decorator::BULLET_DESCENT))/2;
+        $o = $font_size*List_Bullet_Frame_Decorator::BULLET_THICKNESS;
+        $this->_canvas->circle($x, $y, $r, $style->color, $o, null, $fill);
+        break;
+
+      case "square":
+        list($x, $y) = $frame->get_position();
+        $w = $font_size*List_Bullet_Frame_Decorator::BULLET_SIZE;
+        $x -= $w;
+        $y += ($font_size*(1-List_Bullet_Frame_Decorator::BULLET_DESCENT-List_Bullet_Frame_Decorator::BULLET_SIZE))/2;
+        $this->_canvas->filled_rectangle($x, $y, $w, $w, $style->color);
+        break;
+      
+      case "none":
+        break;
+
+      }
+    }
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/frame_tree.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/frame_tree.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/frame_tree.cls.php	(revision 2000)
@@ -0,0 +1,229 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: frame_tree.cls.php,v $
+ * Created on: 2004-06-02
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: frame_tree.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Represents an entire document as a tree of frames
+ *
+ * The Frame_Tree consists of {@link Frame} objects each tied to specific
+ * DomNode objects in a specific DomDocument.  The Frame_Tree has the same
+ * structure as the DomDocument, but adds additional capabalities for
+ * styling and layout.
+ *
+ * @package dompdf
+ * @access protected
+ */
+class Frame_Tree {
+    
+  /**
+   * Tags to ignore while parsing the tree
+   *
+   * @var array
+   */
+  static protected $_HIDDEN_TAGS = array("area", "base", "basefont", "head", "style",
+                                         "meta", "title", "colgroup",
+                                         "noembed", "noscript", "param", "#comment");  
+  /**
+   * The main DomDocument
+   *
+   * @see http://ca2.php.net/manual/en/ref.dom.php
+   * @var DomDocument
+   */
+  protected $_dom;
+
+  /**
+   * The root node of the FrameTree.
+   *
+   * @var Frame
+   */
+  protected $_root;
+
+  /**
+   * Subtrees of absolutely positioned elements
+   *
+   * @var array of Frames
+   */
+  protected $_absolute_frames;
+
+  /**
+   * A mapping of {@link Frame} objects to DomNode objects
+   *
+   * @var array
+   */
+  protected $_registry;
+  
+
+  /**
+   * Class constructor
+   *
+   * @param DomDocument $dom the main DomDocument object representing the current html document
+   */
+  function __construct(DomDocument $dom) {
+    $this->_dom = $dom;
+    $this->_root = null;
+    $this->_registry = array();
+  }
+
+  /**
+   * Returns the DomDocument object representing the curent html document
+   *
+   * @return DomDocument
+   */
+  function get_dom() { return $this->_dom; }
+
+  /**
+   * Returns the root frame of the tree
+   *
+   * @return Frame
+   */
+  function get_root() { return $this->_root; }
+
+  /**
+   * Returns a specific frame given its id
+   *
+   * @param string $id
+   * @return Frame
+   */
+  function get_frame($id) { return isset($this->_registry[$id]) ? $this->_registry[$id] : null; }
+
+  /**
+   * Returns a post-order iterator for all frames in the tree
+   *
+   * @return FrameTreeList
+   */
+  function get_frames() { return new FrameTreeList($this->_root); }
+      
+  /**
+   * Builds the tree
+   */
+  function build_tree() {
+    $html = $this->_dom->getElementsByTagName("html")->item(0);
+    if ( is_null($html) )
+      $html = $this->_dom->firstChild;
+
+    if ( is_null($html) )
+      throw new DOMPDF_Exception("Requested HTML document contains no data.");
+
+    $this->_root = $this->_build_tree_r($html);
+
+  }
+
+  /**
+   * Recursively adds {@link Frame} objects to the tree
+   *
+   * Recursively build a tree of Frame objects based on a dom tree.
+   * No layout information is calculated at this time, although the
+   * tree may be adjusted (i.e. nodes and frames for generated content
+   * and images may be created).
+   *
+   * @param DomNode $node the current DomNode being considered
+   * @return Frame
+   */
+  protected function _build_tree_r(DomNode $node) {
+    
+    $frame = new Frame($node);
+    $id = $frame->get_id();
+    $this->_registry[ $id ] = $frame;
+    
+    if ( !$node->hasChildNodes() )
+      return $frame;
+
+    // Fixes 'cannot access undefined property for object with
+    // overloaded access', fix by Stefan radulian
+    // <stefan.radulian@symbion.at>    
+    //foreach ($node->childNodes as $child) {
+
+    // Store the children in an array so that the tree can be modified
+    $children = array();
+    for ($i = 0; $i < $node->childNodes->length; $i++)
+      $children[] = $node->childNodes->item($i);
+
+    foreach ($children as $child) {
+      // Skip non-displaying nodes
+      if ( in_array( mb_strtolower($child->nodeName), self::$_HIDDEN_TAGS) )  {
+        if ( mb_strtolower($child->nodeName) != "head" &&
+             mb_strtolower($child->nodeName) != "style" ) 
+          $child->parentNode->removeChild($child);
+        continue;
+      }
+
+      // Skip empty text nodes
+      if ( $child->nodeName == "#text" && $child->nodeValue == "" ) {
+        $child->parentNode->removeChild($child);
+        continue;
+      }
+
+      // Skip empty image nodes
+      if ( $child->nodeName == "img" && $child->getAttribute("src") == "" ) {
+        $child->parentNode->removeChild($child);
+        continue;
+      }
+
+      // Add a container frame for images
+      if ( $child->nodeName == "img" ) {
+        $img_node = $child->ownerDocument->createElement("img_inner");
+     
+        // Move attributes to inner node        
+        foreach ( $child->attributes as $attr => $attr_node ) {
+          // Skip style, but move all other attributes
+          if ( $attr == "style" )
+            continue;
+       
+          $img_node->setAttribute($attr, $attr_node->value);
+        }
+
+        foreach ( $child->attributes as $attr => $node ) {
+          if ( $attr == "style" )
+            continue;
+          $child->removeAttribute($attr);
+        }
+
+        $child->appendChild($img_node);
+      }
+      
+      $frame->append_child($this->_build_tree_r($child), false);
+
+    }
+    
+    return $frame;
+  }
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/table_row_group_frame_reflower.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/table_row_group_frame_reflower.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/table_row_group_frame_reflower.cls.php	(revision 2000)
@@ -0,0 +1,93 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: table_row_group_frame_reflower.cls.php,v $
+ * Created on: 2004-07-26
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: table_row_group_frame_reflower.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Reflows table row groups (e.g. tbody tags)
+ *
+ * @access private
+ * @package dompdf
+ */
+class Table_Row_Group_Frame_Reflower extends Frame_Reflower {
+
+  function __construct($frame) {
+    parent::__construct($frame);
+  }
+
+  function reflow() {
+    $page = $this->_frame->get_root();
+
+    $style = $this->_frame->get_style();
+    
+    // Our width is equal to the width of our parent table
+    $table = Table_Frame_Decorator::find_parent_table($this->_frame);
+    
+    $cb = $this->_frame->get_containing_block();
+    
+    foreach ( $this->_frame->get_children() as $child) {
+      // Bail if the page is full
+      if ( $page->is_full() )
+        return;
+
+      $child->set_containing_block($cb["x"], $cb["y"], $cb["w"], $cb["h"]);
+      $child->reflow();
+
+      // Check if a split has occured
+      $page->check_page_break($child);
+
+    }
+
+    if ( $page->is_full() )
+      return;
+
+    $cellmap = $table->get_cellmap();
+    $style->width = $cellmap->get_frame_width($this->_frame);
+    $style->height = $cellmap->get_frame_height($this->_frame);
+
+    $this->_frame->set_position($cellmap->get_frame_position($this->_frame));
+    
+    if ( $table->get_style()->border_collapse === "collapse" ) 
+      // Unset our borders because our cells are now using them
+      $style->border_style = "none";
+ 
+  }
+
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/canvas.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/canvas.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/canvas.cls.php	(revision 2000)
@@ -0,0 +1,261 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: canvas.cls.php,v $
+ * Created on: 2004-06-06
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: canvas.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Main rendering interface
+ *
+ * Currently {@link CPDF_Adapter}, {@link PDFLib_Adapter}, {@link TCPDF_Adapter}, and {@link GD_Adapter}
+ * implement this interface.
+ *
+ * Implementations should measure x and y increasing to the left and down,
+ * respectively, with the origin in the top left corner.  Implementations
+ * are free to use a unit other than points for length, but I can't
+ * guarantee that the results will look any good.
+ *
+ * @package dompdf
+ */
+interface Canvas {
+
+  /**
+   * Returns the current page number
+   *
+   * @return int
+   */
+  function get_page_number();
+
+  /**
+   * Returns the total number of pages
+   *
+   * @return int
+   */
+  function get_page_count();
+
+  /**
+   * Sets the total number of pages
+   *
+   * @param int $count
+   */
+  function set_page_count($count);
+
+  /**
+   * Draws a line from x1,y1 to x2,y2
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   * See {@link Cpdf::setLineStyle()} for a description of the format of the
+   * $style parameter (aka dash).
+   *
+   * @param float $x1
+   * @param float $y1
+   * @param float $x2
+   * @param float $y2
+   * @param array $color
+   * @param float $width
+   * @param array $style
+   */
+  function line($x1, $y1, $x2, $y2, $color, $width, $style = null);
+
+  /**
+   * Draws a rectangle at x1,y1 with width w and height h
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   * See {@link Cpdf::setLineStyle()} for a description of the $style
+   * parameter (aka dash)
+   *
+   * @param float $x1
+   * @param float $y1
+   * @param float $w
+   * @param float $h
+   * @param array $color
+   * @param float $width
+   * @param array $style
+   */   
+  function rectangle($x1, $y1, $w, $h, $color, $width, $style = null);
+
+  /**
+   * Draws a filled rectangle at x1,y1 with width w and height h
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   *
+   * @param float $x1
+   * @param float $y1
+   * @param float $w
+   * @param float $h
+   * @param array $color
+   */   
+  function filled_rectangle($x1, $y1, $w, $h, $color);
+
+  /**
+   * Draws a polygon
+   *
+   * The polygon is formed by joining all the points stored in the $points
+   * array.  $points has the following structure:
+   * <code>
+   * array(0 => x1,
+   *       1 => y1,
+   *       2 => x2,
+   *       3 => y2,
+   *       ...
+   *       );
+   * </code>
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   * See {@link Cpdf::setLineStyle()} for a description of the $style
+   * parameter (aka dash)   
+   *
+   * @param array $points
+   * @param array $color
+   * @param float $width
+   * @param array $style
+   * @param bool  $fill  Fills the polygon if true
+   */
+  function polygon($points, $color, $width = null, $style = null, $fill = false);
+
+  /**
+   * Draws a circle at $x,$y with radius $r
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   * See {@link Cpdf::setLineStyle()} for a description of the $style
+   * parameter (aka dash)
+   *
+   * @param float $x
+   * @param float $y
+   * @param float $r
+   * @param array $color
+   * @param float $width
+   * @param array $style
+   * @param bool $fill Fills the circle if true   
+   */   
+  function circle($x, $y, $r, $color, $width = null, $style = null, $fill = false);
+
+  /**
+   * Add an image to the pdf.
+   *
+   * The image is placed at the specified x and y coordinates with the
+   * given width and height.
+   *
+   * @param string $img_url the path to the image
+   * @param string $img_type the type (e.g. extension) of the image
+   * @param float $x x position
+   * @param float $y y position
+   * @param int $w width (in pixels)
+   * @param int $h height (in pixels)
+   */
+  function image($img_url, $img_type, $x, $y, $w, $h);
+
+  /**
+   * Writes text at the specified x and y coordinates
+   *
+   * See {@link Style::munge_colour()} for the format of the colour array.
+   *
+   * @param float $x
+   * @param float $y
+   * @param string $text the text to write
+   * @param string $font the font file to use
+   * @param float $size the font size, in points
+   * @param array $color
+   * @param float $adjust word spacing adjustment
+   */
+  function text($x, $y, $text, $font, $size, $color = array(0,0,0), $adjust = 0);
+
+  /**
+   * Add a named destination (similar to <a name="foo">...</a> in html)
+   *
+   * @param string $anchorname The name of the named destination
+   */
+  function add_named_dest($anchorname);
+
+  /**
+   * Add a link to the pdf
+   *
+   * @param string $url The url to link to
+   * @param float  $x   The x position of the link
+   * @param float  $y   The y position of the link
+   * @param float  $width   The width of the link
+   * @param float  $height   The height of the link
+   */
+  function add_link($url, $x, $y, $width, $height);
+  
+  /**
+   * Calculates text size, in points
+   *
+   * @param string $text the text to be sized
+   * @param string $font the desired font
+   * @param float  $size the desired font size
+   * @param float  $spacing word spacing, if any
+   * @return float
+   */
+  function get_text_width($text, $font, $size, $spacing = 0);
+
+  /**
+   * Calculates font height, in points
+   *
+   * @param string $font
+   * @param float $size
+   * @return float
+   */
+  function get_font_height($font, $size);
+
+  
+  /**
+   * Starts a new page
+   *
+   * Subsequent drawing operations will appear on the new page.
+   */
+  function new_page();
+
+  /**
+   * Streams the PDF directly to the browser
+   *
+   * @param string $filename the name of the PDF file
+   * @param array  $options associative array, 'Attachment' => 0 or 1, 'compress' => 1 or 0
+   */
+  function stream($filename, $options = null);
+
+  /**
+   * Returns the PDF as a string
+   *
+   * @param array  $options associative array: 'compress' => 1 or 0
+   * @return string
+   */
+  function output($options = null);
+  
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/frame_factory.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/frame_factory.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/frame_factory.cls.php	(revision 2000)
@@ -0,0 +1,210 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: frame_factory.cls.php,v $
+ * Created on: 2004-06-17
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: frame_factory.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Contains frame decorating logic
+ *
+ * This class is responsible for assigning the correct {@link Frame_Decorator},
+ * {@link Positioner}, and {@link Frame_Reflower} objects to {@link Frame}
+ * objects.  This is determined primarily by the Frame's display type, but
+ * also by the Frame's node's type (e.g. DomElement vs. #text)
+ *
+ * @access private
+ * @package dompdf
+ */
+class Frame_Factory {
+
+  static function decorate_root(Frame $root, DOMPDF $dompdf) {
+    $frame = new Page_Frame_Decorator($root, $dompdf);
+    $frame->set_reflower( new Page_Frame_Reflower($frame) );
+    $root->set_decorator($frame);
+    return $frame;
+  }
+
+  // FIXME: this is admittedly a little smelly...
+  static function decorate_frame(Frame $frame, $dompdf) {
+    if ( is_null($dompdf) )
+      throw new Exception("foo");
+    switch ($frame->get_style()->display) {
+      
+    case "block":
+      $positioner = "Block";        
+      $decorator = "Block";
+      $reflower = "Block";
+      break;
+    
+    case "inline-block":
+      $positioner = "Inline";
+      $decorator = "Block";
+      $reflower = "Block";
+      break;
+
+    case "inline":
+      $positioner = "Inline";
+      if ( $frame->get_node()->nodeName == "#text" ) {
+        $decorator = "Text";
+        $reflower = "Text";
+      } else {
+        $decorator = "Inline";
+        $reflower = "Inline";
+      }
+      break;   
+
+    case "table":
+      $positioner = "Block";
+      $decorator = "Table";
+      $reflower = "Table";
+      break;
+      
+    case "inline-table":
+      $positioner = "Inline";
+      $decorator = "Table";
+      $reflower = "Table";
+      break;
+
+    case "table-row-group":
+    case "table-header-group":
+    case "table-footer-group":
+      $positioner = "Null";
+      $decorator = "Table_Row_Group";
+      $reflower = "Table_Row_Group";
+      break;
+      
+    case "table-row":
+      $positioner = "Null";
+      $decorator = "Table_Row";
+      $reflower = "Table_Row";
+      break;
+
+    case "table-cell":
+      $positioner = "Table_Cell";
+      $decorator = "Table_Cell";
+      $reflower = "Table_Cell";
+      break;
+        
+    case "list-item":
+      $positioner = "Block";
+      $decorator  = "Block";
+      $reflower   = "Block";
+      break;
+
+    case "-dompdf-list-bullet":
+      if ( $frame->get_style()->list_style_position == "inside" )
+        $positioner = "Inline";
+      else        
+        $positioner = "List_Bullet";
+
+      if ( $frame->get_style()->list_style_image != "none" )
+        $decorator = "List_Bullet_Image";
+      else
+        $decorator = "List_Bullet";
+      
+      $reflower = "List_Bullet";
+      break;
+
+    case "-dompdf-image":
+      $positioner = "Inline";
+      $decorator = "Image";
+      $reflower = "Image";
+      break;
+      
+    case "-dompdf-br":
+      $positioner = "Inline";
+      $decorator = "Inline";
+      $reflower = "Inline";
+      break;
+
+    default:
+      // FIXME: should throw some sort of warning or something?
+    case "none":
+      $positioner = "Null";
+      $decorator = "Null";
+      $reflower = "Null";
+      break;
+
+    }
+
+    if ( $frame->get_style()->position == "absolute" ||
+         $frame->get_style()->position == "fixed" )
+      $positioner = "Absolute";
+    
+    $positioner .= "_Positioner";
+    $decorator .= "_Frame_Decorator";
+    $reflower .= "_Frame_Reflower";
+
+    $deco = new $decorator($frame, $dompdf);
+    $deco->set_positioner( new $positioner($deco) );
+    $reflow = new $reflower($deco);
+    
+    // Generated content is a special case
+    if ( $frame->get_node()->nodeName == "_dompdf_generated" ) {
+      // Decorate the reflower
+      $gen = new Generated_Frame_Reflower( $deco );
+      $gen->set_reflower( $reflow );
+      $reflow = $gen;
+    }
+    
+    $deco->set_reflower( $reflow );
+
+    // Images are a special case
+//    if ( $frame->get_node()->nodeName == "img" ) {
+
+//       // FIXME: This is a hack
+//       $node =$frame->get_node()->ownerDocument->createElement("img_sub");
+//       $node->setAttribute("src", $frame->get_node()->getAttribute("src"));
+      
+//       $img_frame = new Frame( $node );
+
+//       $style = $frame->get_style()->get_stylesheet()->create_style();
+//       $style->inherit($frame->get_style());
+//       $img_frame->set_style( $style );
+
+//       $img_deco = new Image_Frame_Decorator($img_frame, $dompdf);
+//       $img_deco->set_reflower( new Image_Frame_Reflower($img_deco) );
+//       $deco->append_child($img_deco);
+
+//     }   
+    
+    return $deco;
+  }
+  
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/inline_positioner.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/inline_positioner.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/inline_positioner.cls.php	(revision 2000)
@@ -0,0 +1,76 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: inline_positioner.cls.php,v $
+ * Created on: 2004-06-08
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: inline_positioner.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+/**
+ * Positions inline frames
+ *
+ * @access private
+ * @package dompdf
+ */
+class Inline_Positioner extends Positioner {
+
+  function __construct(Frame_Decorator $frame) { parent::__construct($frame); }
+
+  //........................................................................
+
+  function position() {
+    $cb = $this->_frame->get_containing_block();
+
+    // Find our nearest block level parent and access its lines property.
+    $p = $this->_frame->find_block_parent();
+
+    // Debugging code:
+
+//     pre_r("\nPositioning:");
+//     pre_r("Me: " . $this->_frame->get_node()->nodeName . " (" . spl_object_hash($this->_frame->get_node()) . ")");
+//     pre_r("Parent: " . $p->get_node()->nodeName . " (" . spl_object_hash($p->get_node()) . ")");
+
+    // End debugging
+
+    if ( !$p )
+      throw new DOMPDF_Exception("No block-level parent found.  Not good.");
+
+    $line = $p->get_current_line();
+    
+    $this->_frame->set_position($cb["x"] + $line["w"], $line["y"]);
+
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/table_row_positioner.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/table_row_positioner.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/table_row_positioner.cls.php	(revision 2000)
@@ -0,0 +1,70 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: table_row_positioner.cls.php,v $
+ * Created on: 2004-06-08
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: table_row_positioner.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Positions table rows
+ *
+ * @access private
+ * @package dompdf
+ */
+class Table_Row_Positioner extends Positioner {
+
+  function __construct(Frame_Decorator $frame) { parent::__construct($frame); }
+  
+  //........................................................................
+
+  function position() {
+
+    $cb = $this->_frame->get_containing_block();    
+    $p = $this->_frame->get_prev_sibling();
+
+    if ( $p ) 
+      $y = $p->get_position("y") + $p->get_margin_height();
+
+    else
+      $y = $cb["y"];
+
+    $this->_frame->set_position($cb["x"], $y);
+
+  }
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/inline_frame_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/inline_frame_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/inline_frame_decorator.cls.php	(revision 2000)
@@ -0,0 +1,104 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: inline_frame_decorator.cls.php,v $
+ * Created on: 2004-06-02
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 20090610
+ * - don't repeat non repeatable background images after a line break
+ */
+
+/* $Id: inline_frame_decorator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Decorates frames for inline layout
+ *
+ * @access private
+ * @package dompdf
+ */
+class Inline_Frame_Decorator extends Frame_Decorator {
+  
+  function __construct(Frame $frame, DOMPDF $dompdf) { parent::__construct($frame, $dompdf); }
+
+  function split($frame = null) {
+
+    if ( is_null($frame) ) {
+      $this->get_parent()->split($this);
+      return;
+    }
+    
+    if ( $frame->get_parent() !== $this )
+      throw new DOMPDF_Exception("Unable to split: frame is not a child of this one.");
+        
+    $split = $this->copy( $this->_frame->get_node()->cloneNode() ); 
+    $this->get_parent()->insert_child_after($split, $this);
+
+    // Unset the current node's right style properties
+    $style = $this->_frame->get_style();
+    $style->margin_right = "0";
+    $style->padding_right = "0";
+    $style->border_right_width = "0";
+
+    // Unset the split node's left style properties since we don't want them
+    // to propagate
+    $style = $split->get_style();
+    $style->margin_left = "0";
+    $style->padding_left = "0";
+    $style->border_left_width = "0";
+
+    //On continuation of inline element on next line,
+    //don't repeat non-vertically repeatble background images
+    //See e.g. in testcase image_variants, long desriptions
+    if ( ($url = $style->background_image) && $url !== "none"
+         && ($repeat = $style->background_repeat) && $repeat != "repeat" &&  $repeat != "repeat-y"
+       ) {
+      $style->background_image = "none";
+    }           
+
+    // Add $frame and all following siblings to the new split node
+    $iter = $frame;
+    while ($iter) {
+      $frame = $iter;      
+      $iter = $iter->get_next_sibling();
+      $frame->reset();
+      $split->append_child($frame);
+    }
+  }
+  
+} 
+?>
Index: /trunk/filemanager/tp/dompdf/include/table_row_frame_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/table_row_frame_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/table_row_frame_decorator.cls.php	(revision 2000)
@@ -0,0 +1,82 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: table_row_frame_decorator.cls.php,v $
+ * Created on: 2004-06-07
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: table_row_frame_decorator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Decorates Frames for table row layout
+ *
+ * @access private
+ * @package dompdf
+ */
+class Table_Row_Frame_Decorator extends Frame_Decorator {
+
+  // protected members
+  
+  function __construct(Frame $frame, DOMPDF $dompdf) {
+    parent::__construct($frame, $dompdf);
+  }
+  
+  //........................................................................ 
+
+  /**
+   * Remove all non table-cell frames from this row and move them after
+   * the table.
+   */
+  function normalise() {
+
+    // Find our table parent
+    $p = Table_Frame_Decorator::find_parent_table($this);
+    
+    $erroneous_frames = array();
+    foreach ($this->get_children() as $child) {      
+      $display = $child->get_style()->display;
+
+      if ( $display != "table-cell" )
+        $erroneous_frames[] = $child;
+    }
+    
+    //  dump the extra nodes after the table.
+    foreach ($erroneous_frames as $frame) 
+      $p->move_after($frame);
+  }
+  
+  
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/page_frame_reflower.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/page_frame_reflower.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/page_frame_reflower.cls.php	(revision 2000)
@@ -0,0 +1,162 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: page_frame_reflower.cls.php,v $
+ * Created on: 2004-06-16
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: page_frame_reflower.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Reflows pages
+ *
+ * @access private
+ * @package dompdf
+ */
+class Page_Frame_Reflower extends Frame_Reflower {
+
+  /**
+   * Cache of the callbacks array
+   * 
+   * @var array
+   */
+  private $_callbacks;
+  
+  /**
+   * Cache of the canvas
+   *
+   * @var Canvas
+   */
+  private $_canvas;
+
+  function __construct(Page_Frame_Decorator $frame) { parent::__construct($frame); }
+  
+  //........................................................................
+
+  function reflow() {
+    $style = $this->_frame->get_style();
+    
+    // Paged layout:
+    // http://www.w3.org/TR/CSS21/page.html
+
+    // Pages are only concerned with margins
+    $cb = $this->_frame->get_containing_block();
+    $left = $style->length_in_pt($style->margin_left, $cb["w"]);
+    $right = $style->length_in_pt($style->margin_right, $cb["w"]);
+    $top = $style->length_in_pt($style->margin_top, $cb["w"]);
+    $bottom = $style->length_in_pt($style->margin_bottom, $cb["w"]);
+    
+    $content_x = $cb["x"] + $left;
+    $content_y = $cb["y"] + $top;
+    $content_width = $cb["w"] - $left - $right;
+    $content_height = $cb["h"] - $top - $bottom;
+
+    $prev_child = null;
+    $child = $this->_frame->get_first_child();
+
+    while ($child) {
+
+      $child->set_containing_block($content_x, $content_y, $content_width, $content_height);
+      
+      // Check for begin reflow callback
+      $this->_check_callbacks("begin_page_reflow", $child);
+      
+      $child->reflow();
+      $next_child = $child->get_next_sibling();
+      
+      // Check for begin render callback
+      $this->_check_callbacks("begin_page_render", $child);
+      
+      // Render the page
+      $this->_frame->get_renderer()->render($child);
+      
+      // Check for end render callback
+      $this->_check_callbacks("end_page_render", $child);
+      
+      if ( $next_child )
+      {
+        $this->_frame->next_page();
+      }
+
+      // Wait to dispose of all frames on the previous page
+      // so callback will have access to them
+      if ( $prev_child )
+      {
+        $prev_child->dispose(true);
+      }
+      $prev_child = $child;
+      $child = $next_child;
+    }
+
+    // Dispose of previous page if it still exists
+    if ( $prev_child )
+    {
+      $prev_child->dispose(true);
+    }
+  }  
+  
+  //........................................................................
+  
+  /**
+   * Check for callbacks that need to be performed when a given event
+   * gets triggered on a page
+   *
+   * @param string $event the type of event
+   * @param Frame $frame the frame that event is triggered on
+   */
+  protected function _check_callbacks($event, $frame) {
+    if (!isset($this->_callbacks)) {
+      $dompdf = $this->_frame->get_dompdf();
+      $this->_callbacks = $dompdf->get_callbacks();
+      $this->_canvas = $dompdf->get_canvas();
+    }
+    
+    if (is_array($this->_callbacks) && isset($this->_callbacks[$event])) {
+      $info = array(0 => $this->_canvas, "canvas" => $this->_canvas,
+                    1 => $frame, "frame" => $frame);
+      $fs = $this->_callbacks[$event];
+      foreach ($fs as $f) {
+        if (is_callable($f)) {
+          if (is_array($f)) {
+            $f[0]->$f[1]($info);
+          } else {
+            $f($info);
+          }
+        }
+      }
+    }
+  }  
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/page_cache.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/page_cache.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/page_cache.cls.php	(revision 2000)
@@ -0,0 +1,160 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: page_cache.cls.php,v $
+ * Created on: 2004-07-23
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: page_cache.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Caches individual rendered PDF pages
+ *
+ * Not totally implmented yet.  Use at your own risk ;)
+ * 
+ * @access private
+ * @package dompdf
+ * @static
+ */
+class Page_Cache {
+
+  const DB_USER = "dompdf_page_cache";
+  const DB_PASS = "some meaningful password";
+  const DB_NAME = "dompdf_page_cache";
+  
+  static private $__connection = null;
+  
+  function init() {
+    if ( is_null(self::$__connection) ) {
+      $con_str = "host=" . DB_HOST .
+        " dbname=" . self::DB_NAME .
+        " user=" . self::DB_USER .
+        " password=" . self::DB_PASS;
+      
+      if ( !self::$__connection = pg_connect($con_str) )
+        throw new Exception("Database connection failed.");
+    }
+  }
+  
+  function __construct() { throw new Exception("Can not create instance of Page_Class.  Class is static."); }
+
+  private static function __query($sql) {
+    if ( !($res = pg_query(self::$__connection, $sql)) )
+      throw new Exception(pg_last_error(self::$__connection));
+    return $res;
+  }
+  
+  static function store_page($id, $page_num, $data) {
+    $where = "WHERE id='" . pg_escape_string($id) . "' AND ".
+      "page_num=". pg_escape_string($page_num);
+
+    $res = self::__query("SELECT timestamp FROM page_cache ". $where);
+
+    $row = pg_fetch_assoc($res);
+    
+    if ( $row ) 
+      self::__query("UPDATE page_cache SET data='" . pg_escape_string($data) . "' " . $where);
+    else 
+      self::__query("INSERT INTO page_cache (id, page_num, data) VALUES ('" . pg_escape_string($id) . "', ".
+                     pg_escape_string($page_num) . ", ".
+                     "'". pg_escape_string($data) . "')");
+
+  }
+
+  static function store_fonts($id, $fonts) {
+    self::__query("BEGIN");
+    // Update the font information
+    self::__query("DELETE FROM page_fonts WHERE id='" . pg_escape_string($id) . "'");
+
+    foreach (array_keys($fonts) as $font)
+      self::__query("INSERT INTO page_fonts (id, font_name) VALUES ('" .
+                    pg_escape_string($id) . "', '" . pg_escape_string($font) . "')");
+    self::__query("COMMIT");
+  }
+  
+//   static function retrieve_page($id, $page_num) {
+
+//     $res = self::__query("SELECT data FROM page_cache WHERE id='" . pg_escape_string($id) . "' AND ".
+//                           "page_num=". pg_escape_string($page_num));
+
+//     $row = pg_fetch_assoc($res);
+
+//     return pg_unescape_bytea($row["data"]);
+    
+//   }
+
+  static function get_page_timestamp($id, $page_num) {
+    $res = self::__query("SELECT timestamp FROM page_cache WHERE id='" . pg_escape_string($id) . "' AND ".
+                          "page_num=". pg_escape_string($page_num));
+
+    $row = pg_fetch_assoc($res);
+
+    return $row["timestamp"];
+    
+  }
+
+  // Adds the cached document referenced by $id to the provided pdf
+  static function insert_cached_document(CPDF_Adapter $pdf, $id, $new_page = true) {
+    $res = self::__query("SELECT font_name FROM page_fonts WHERE id='" . pg_escape_string($id) . "'");
+
+    // Ensure that the fonts needed by the cached document are loaded into
+    // the pdf
+    while ($row = pg_fetch_assoc($res)) 
+      $pdf->get_cpdf()->selectFont($row["font_name"]);
+    
+    $res = self::__query("SELECT data FROM page_cache WHERE id='" . pg_escape_string($id) . "'");
+
+    if ( $new_page )
+      $pdf->new_page();
+
+    $first = true;
+    while ($row = pg_fetch_assoc($res)) {
+
+      if ( !$first ) 
+        $pdf->new_page();
+      else 
+        $first = false;        
+      
+      $page = $pdf->reopen_serialized_object($row["data"]);
+      //$pdf->close_object();
+      $pdf->add_object($page, "add");
+
+    }
+      
+  }
+}
+
+Page_Cache::init();
+?>
Index: /trunk/filemanager/tp/dompdf/include/image_frame_reflower.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/image_frame_reflower.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/image_frame_reflower.cls.php	(revision 2000)
@@ -0,0 +1,184 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: image_frame_reflower.cls.php,v $
+ * Created on: 2004-08-08
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 0.5.1.htischer.20090507
+ * - Fix image size as percent of wrapping box
+ * - Fix arithmetic rounding of image size
+ * - Time consuming additional image file scan only when really needed
+ */
+
+/* $Id: image_frame_reflower.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Image reflower class
+ *
+ * @access private
+ * @package dompdf
+ */
+class Image_Frame_Reflower extends Frame_Reflower {
+
+  function __construct(Image_Frame_Decorator $frame) {
+    parent::__construct($frame);
+  }
+
+  function reflow() {
+    
+    // Set the frame's width
+    $this->get_min_max_width();
+    
+  }
+
+  function get_min_max_width() {
+
+    if (DEBUGPNG) {
+      // Determine the image's size. Time consuming. Only when really needed?
+      list($img_width, $img_height) = getimagesize($this->_frame->get_image_url());
+      print "get_min_max_width() ".
+        $this->_frame->get_style()->width.' '.
+        $this->_frame->get_style()->height.';'.
+        $this->_frame->get_parent()->get_style()->width." ".
+        $this->_frame->get_parent()->get_style()->height.";".
+        $this->_frame->get_parent()->get_parent()->get_style()->width.' '.
+        $this->_frame->get_parent()->get_parent()->get_style()->height.';'.
+        $img_width. ' '.
+        $img_height.'|' ;
+    }
+
+    // We need to grab our *parent's* style because images are wrapped...
+    $style = $this->_frame->get_parent()->get_style();
+
+    //own style auto or invalid value: use natural size in px
+    //own style value: ignore suffix text including unit, use given number as px
+    //own style %: walk up parent chain until found available space in pt; fill available space
+    //
+    //special ignored unit: e.g. 10ex: e treated as exponent; x ignored; 10e completely invalid ->like auto
+
+    $width = $this->_frame->get_style()->width;
+    if ( is_percent($width) ) {
+      $t = 0.0;
+      for ($f = $this->_frame->get_parent(); $f; $f = $f->get_parent()) {
+        $t = (float)($f->get_style()->width); //always in pt
+        if ((float)$t != 0) {
+        	break;
+        }
+      }
+      $width = ((float)rtrim($width,"%") * $t)/100; //maybe 0
+    } else {
+      // Don't set image original size if "%" branch was 0 or size not given.
+      // Otherwise aspect changed on %/auto combination for width/height
+      // Resample according to px per inch
+      // See also List_Bullet_Image_Frame_Decorator::__construct
+      $width = (float)($width * 72) / DOMPDF_DPI;
+    }
+
+    $height = $this->_frame->get_style()->height;
+    if ( is_percent($height) ) {
+      $t = 0.0;
+      for ($f = $this->_frame->get_parent(); $f; $f = $f->get_parent()) {
+        $t = (float)($f->get_style()->height); //always in pt
+        if ((float)$t != 0) {
+        	break;
+        }
+      }
+      $height = ((float)rtrim($height,"%") * $t)/100; //maybe 0
+    } else {
+      // Don't set image original size if "%" branch was 0 or size not given.
+      // Otherwise aspect changed on %/auto combination for width/height
+      // Resample according to px per inch
+      // See also List_Bullet_Image_Frame_Decorator::__construct
+      $height = (float)($height * 72) / DOMPDF_DPI;
+    }
+
+    if ($width == 0 && $height == 0) {
+      // Determine the image's size. Time consuming. Only when really needed!
+      list($img_width, $img_height) = getimagesize($this->_frame->get_image_url());
+      // don't treat 0 as error. Can be downscaled or can be catched elsewhere if image not readable.
+      // Resample according to px per inch
+      // See also List_Bullet_Image_Frame_Decorator::__construct
+      $width = (float)($img_width * 72) / DOMPDF_DPI;
+      $height = (float)($img_height * 72) / DOMPDF_DPI;
+    } else if ($height == 0) {
+      list($img_width, $img_height) = getimagesize($this->_frame->get_image_url());
+      //On error don't divide by 0
+      if ($img_width == 0) {
+        throw new DOMPDF_Exception('Image width not detected: '.$this->_frame->get_image_url());
+      }
+      $height = ($width / $img_width) * $img_height; //keep aspect ratio
+    } else if ($width == 0) {
+      list($img_width, $img_height) = getimagesize($this->_frame->get_image_url());
+      if ($img_height == 0) {
+        throw new DOMPDF_Exception('Image height not detected: '.$this->_frame->get_image_url());
+      }
+      $width = ($height / $img_height) * $img_width; //keep aspect ratio
+    }
+
+    if (DEBUGPNG) print $width.' '.$height.';';
+
+    // Synchronize the styles
+    $inner_style = $this->_frame->get_style();
+    $inner_style->width = $style->width = $width . "pt";
+    $inner_style->height = $style->height = $height . "pt";
+
+    $inner_style->padding_top = $style->padding_top;
+    $inner_style->padding_right = $style->padding_right;
+    $inner_style->padding_bottom = $style->padding_bottom;
+    $inner_style->padding_left = $style->padding_left;
+
+    $inner_style->border_top_width = $style->border_top_width;
+    $inner_style->border_right_width = $style->border_right_width;
+    $inner_style->border_bottom_width = $style->border_bottom_width;
+    $inner_style->border_left_width = $style->border_left_width;
+
+    $inner_style->border_top_style = $style->border_top_style;
+    $inner_style->border_right_style = $style->border_right_style;
+    $inner_style->border_bottom_style = $style->border_bottom_style;
+    $inner_style->border_left_style = $style->border_left_style;
+
+    $inner_style->margin_top = $style->margin_top;
+    $inner_style->margin_right = $style->margin_right;
+    $inner_style->margin_bottom = $style->margin_bottom;
+    $inner_style->margin_left = $style->margin_left;
+
+    return array( $width, $width, "min" => $width, "max" => $width);
+    
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/canvas_factory.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/canvas_factory.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/canvas_factory.cls.php	(revision 2000)
@@ -0,0 +1,84 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: canvas_factory.cls.php,v $
+ * Created on: 2004-06-02
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: canvas_factory.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Create canvas instances
+ *
+ * The canvas factory creates canvas instances based on the
+ * availability of rendering backends and config options.
+ *
+ * @package dompdf
+ */
+class Canvas_Factory {
+
+  /**
+   * Constructor is private: this is a static class
+   */
+  private function __construct() { }
+
+  static function get_instance($paper = null, $orientation = null,  $class = null) {
+
+    $backend = strtolower(DOMPDF_PDF_BACKEND);
+    
+    if ( isset($class) && class_exists($class, false) )
+      $class .= "_Adapter";
+    
+    else if ( (DOMPDF_PDF_BACKEND == "auto" || $backend == "pdflib" ) &&
+              class_exists("PDFLib", false) )
+      $class = "PDFLib_Adapter";
+
+    else if ( (DOMPDF_PDF_BACKEND == "auto" || $backend == "cpdf") )
+      $class = "CPDF_Adapter";
+
+    else if ( ( $backend == "tcpdf") )
+      $class = "TCPDF_Adapter";
+      
+    else if ( $backend == "gd" )
+      $class = "GD_Adapter";
+    
+    else
+      $class = "CPDF_Adapter";
+
+    return new $class($paper, $orientation);
+        
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/block_positioner.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/block_positioner.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/block_positioner.cls.php	(revision 2000)
@@ -0,0 +1,72 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: block_positioner.cls.php,v $
+ * Created on: 2004-06-08
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: block_positioner.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Positions block frames
+ *
+ * @access private
+ * @package dompdf
+ */
+class Block_Positioner extends Positioner {
+
+
+  function __construct(Frame_Decorator $frame) { parent::__construct($frame); }
+  
+  //........................................................................
+
+  function position() {
+    $cb = $this->_frame->get_containing_block();
+
+    $p = $this->_frame->find_block_parent();
+    
+    if ( $p ) {
+      $p->add_line();
+      $y = $p->get_current_line("y");
+      
+    } else
+      $y = $cb["y"];
+
+    $x = $cb["x"];
+    
+    $this->_frame->set_position($x, $y);
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/include/block_frame_decorator.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/block_frame_decorator.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/block_frame_decorator.cls.php	(revision 2000)
@@ -0,0 +1,299 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: block_frame_decorator.cls.php,v $
+ * Created on: 2004-06-02
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: block_frame_decorator.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Decorates frames for block layout
+ *
+ * @access private
+ * @package dompdf
+ */
+class Block_Frame_Decorator extends Frame_Decorator {
+
+  const DEFAULT_COUNTER = "-dompdf-default-counter";
+
+  protected $_lines; // array( [num] => array([frames] => array(<frame list>),
+                     //                 y, w, h) )
+  protected $_counters; // array([id] => counter_value) (for generated content)
+  protected $_cl;    // current line index
+
+  //........................................................................
+
+  function __construct(Frame $frame, DOMPDF $dompdf) {
+    parent::__construct($frame, $dompdf);
+    $this->_lines = array(array("frames" => array(),
+                                "wc" => 0,
+                                "y" => null,
+                                "w" => 0,
+                                "h" => 0));
+    $this->_counters = array(self::DEFAULT_COUNTER => 0);
+    $this->_cl = 0;
+
+  }
+
+  //........................................................................
+
+  function reset() {
+    parent::reset();
+    $this->_lines = array(array("frames" => array(),
+                                "wc" => 0,
+                                "y" => null,
+                                "w" => 0,
+                                "h" => 0));
+    $this->_counters = array(self::DEFAULT_COUNTER => 0);
+    $this->_cl = 0;
+  }
+
+  //........................................................................
+
+  // Accessor methods
+
+  function get_current_line($i = null) {
+    $cl = $this->_lines[$this->_cl];
+    if ( isset($i) )
+      return $cl[$i];
+    return $cl;
+  }
+
+  function get_lines() { return $this->_lines; }
+
+  //........................................................................
+
+  // Set methods
+  function set_current_line($y = null, $w = null, $h = null) {
+    $this->set_line($this->_cl, $y, $w, $h);
+  }
+
+  function clear_line($i) {
+    if ( isset($this->_lines[$i]) )
+      unset($this->_lines[$i]);
+  }
+
+  function set_line($lineno, $y = null, $w = null, $h = null) {
+
+    if ( is_array($y) )
+      extract($y);
+
+    if (is_numeric($y))
+      $this->_lines[$lineno]["y"] = $y;
+
+    if (is_numeric($w))
+      $this->_lines[$lineno]["w"] = $w;
+
+    if (is_numeric($h))
+      $this->_lines[$lineno]["h"] = $h;
+
+  }
+
+
+  function add_frame_to_line(Frame $frame) {
+
+    // Handle inline frames (which are effectively wrappers)
+    if ( $frame instanceof Inline_Frame_Decorator ) {
+
+      // Handle line breaks
+      if ( $frame->get_node()->nodeName == "br" ) {
+        $this->maximize_line_height( $frame->get_style()->length_in_pt($frame->get_style()->line_height) );
+        $this->add_line();
+        return;
+      }
+
+      // Add each child of the inline frame to the line individually
+      foreach ($frame->get_children() as $child)
+        $this->add_frame_to_line( $child );
+
+      return;
+    }
+
+    // Trim leading text if this is an empty line.  Kinda a hack to put it here,
+    // but what can you do...
+    if ( $this->_lines[$this->_cl]["w"] == 0 &&
+         $frame->get_node()->nodeName == "#text" &&
+         ($frame->get_style()->white_space != "pre" ||
+          $frame->get_style()->white_space != "pre-wrap") ) {
+
+      $frame->set_text( ltrim($frame->get_text()) );
+      $frame->recalculate_width();
+
+    }
+
+    $w = $frame->get_margin_width();
+
+    if ( $w == 0 )
+      return;
+
+    // Debugging code:
+    /*
+    pre_r("\nAdding frame to line:");
+
+    //    pre_r("Me: " . $this->get_node()->nodeName . " (" . spl_object_hash($this->get_node()) . ")");
+    //    pre_r("Node: " . $frame->get_node()->nodeName . " (" . spl_object_hash($frame->get_node()) . ")");
+    if ( $frame->get_node()->nodeName == "#text" )
+      pre_r($frame->get_node()->nodeValue);
+
+    pre_r("Line width: " . $this->_lines[$this->_cl]["w"]);
+    pre_r("Frame: " . get_class($frame));
+    pre_r("Frame width: "  . $w);
+    pre_r("Frame height: " . $frame->get_margin_height());
+    pre_r("Containing block width: " . $this->get_containing_block("w"));
+    */
+    // End debugging
+
+    if ($this->_lines[$this->_cl]["w"] + $w > $this->get_containing_block("w"))
+      $this->add_line();
+
+    $frame->position();
+
+
+    $this->_lines[$this->_cl]["frames"][] = $frame;
+
+    if ( $frame->get_node()->nodeName == "#text")
+      $this->_lines[$this->_cl]["wc"] += count(preg_split("/\s+/", $frame->get_text()));
+
+    $this->_lines[$this->_cl]["w"] += $w;
+    $this->_lines[$this->_cl]["h"] = max($this->_lines[$this->_cl]["h"], $frame->get_margin_height());
+
+  }
+
+  function remove_frames_from_line(Frame $frame) {
+    // Search backwards through the lines for $frame
+    $i = $this->_cl;
+
+    while ($i >= 0) {
+      if ( ($j = in_array($frame, $this->_lines[$i]["frames"], true)) !== false )
+        break;
+      $i--;
+    }
+
+    if ( $j === false )
+      return;
+
+    // Remove $frame and all frames that follow
+    while ($j < count($this->_lines[$i]["frames"])) {
+      $f = $this->_lines[$i]["frames"][$j];
+      unset($this->_lines[$i]["frames"][$j++]);
+      $this->_lines[$i]["w"] -= $f->get_margin_width();
+    }
+
+    // Recalculate the height of the line
+    $h = 0;
+    foreach ($this->_lines[$i]["frames"] as $f)
+      $h = max( $h, $f->get_margin_height() );
+
+    $this->_lines[$i]["h"] = $h;
+
+    // Remove all lines that follow
+    while ($this->_cl > $i)
+      unset($this->_lines[ $this->_cl-- ]);
+
+  }
+
+  function increase_line_width($w) {
+    $this->_lines[ $this->_cl ]["w"] += $w;
+  }
+
+  function maximize_line_height($val) {
+    $this->_lines[ $this->_cl ]["h"] = max($this->_lines[ $this->_cl ]["h"], $val);
+  }
+
+  function add_line() {
+
+//     if ( $this->_lines[$this->_cl]["h"] == 0 ) //count($this->_lines[$i]["frames"]) == 0 ||
+//       return;
+
+    $y = $this->_lines[$this->_cl]["y"] + $this->_lines[$this->_cl]["h"];
+
+    $this->_lines[ ++$this->_cl ] = array("frames" => array(),
+                                          "wc" => 0,
+                                          "y" => $y, "w" => 0, "h" => 0);
+  }
+
+  //........................................................................
+
+  function reset_counter($id = self::DEFAULT_COUNTER, $value = 0) {
+    $this->_counters[$id] = $value;
+  }
+
+  function increment_counter($id = self::DEFAULT_COUNTER, $increment = 1) {
+    if ( !isset($this->_counters[$id]) )
+      $this->_counters[$id] = $increment;
+    else
+      $this->_counters[$id] += $increment;
+
+  }
+
+  function counter_value($id = self::DEFAULT_COUNTER, $type = "decimal") {
+    $type = mb_strtolower($type);
+    if ( !isset($this->_counters[$id]) )
+      $this->_counters[$id] = 0;
+
+    switch ($type) {
+
+    default:
+    case "decimal":
+      return $this->_counters[$id];
+
+    case "decimal-leading-zero":
+      return str_pad($this->_counters[$id], 2, "0");
+
+    case "lower-roman":
+      return dec2roman($this->_counters[$id]);
+
+    case "upper-roman":
+      return mb_strtoupper(dec2roman($this->_counters[$id]));
+
+    case "lower-latin":
+    case "lower-alpha":
+      return chr( ($this->_counters[$id] % 26) + ord('a') - 1);
+
+    case "upper-latin":
+    case "upper-alpha":
+      return chr( ($this->_counters[$id] % 26) + ord('A') - 1);
+
+    case "lower-greek":
+      return chr($this->_counters[$id] + 944);
+
+    case "upper-greek":
+      return chr($this->_counters[$id] + 912);
+    }
+  }
+}
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/file.skel
===================================================================
--- /trunk/filemanager/tp/dompdf/include/file.skel	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/file.skel	(revision 2000)
@@ -0,0 +1,43 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: file.skel,v $
+ * Created on: 2004-08-04
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.3
+ */
+
+/* $Id: file.skel 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+
+?>
Index: /trunk/filemanager/tp/dompdf/include/image_renderer.cls.php
===================================================================
--- /trunk/filemanager/tp/dompdf/include/image_renderer.cls.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/include/image_renderer.cls.php	(revision 2000)
@@ -0,0 +1,70 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: image_renderer.cls.php,v $
+ * Created on: 2004-08-04
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+/* $Id: image_renderer.cls.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+/**
+ * Image renderer
+ *
+ * @access private
+ * @package dompdf
+ */
+class Image_Renderer extends Abstract_Renderer {
+
+  function render(Frame $frame) {
+
+    // Render background & borders
+    //parent::render($frame);
+    $p = $frame->get_parent();
+    $style = $frame->get_style();
+    
+    $cb = $frame->get_containing_block();
+    
+    list($x, $y) = $frame->get_padding_box();
+    $x += $style->length_in_pt($style->padding_left, $cb["w"]);
+    $y += $style->length_in_pt($style->padding_top, $cb["h"]);
+
+    $w = $style->length_in_pt($style->width, $cb["w"]);
+    $h = $style->length_in_pt($style->height, $cb["h"]);
+
+    $this->_canvas->image( $frame->get_image_url(), $frame->get_image_ext(), $x, $y, $w, $h);
+
+  }
+}
+?>
Index: /trunk/filemanager/tp/dompdf/HACKING
===================================================================
--- /trunk/filemanager/tp/dompdf/HACKING	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/HACKING	(revision 2000)
@@ -0,0 +1,33 @@
+dompdf - PHP5 HTML to PDF converter
+===================================
+
+http://www.digitaljunkies.ca/dompdf
+Copyright (c) 2004 Benj Carson
+R&OS PDF class (class.pdf.php) Copyright (c) 2001-04 Wayne Munro
+
+Send bug reports, patches, feature requests, complaints & hate mail (no spam
+thanks) to <benjcarson@digitaljunkies.ca>
+
+Hacking
+-------
+
+If you are interested in extending or modifying dompdf, please feel free to
+contact me (Benj Carson) by email at benjcarson@digitaljunkies.ca.  If you
+let me know what you'd like to try, I can maybe point you to the relevant
+sections of the source.  If you've added some features, or fixed some bugs,
+please send me a patch and I'll include your changes in the main
+distribution.
+
+For starters, I can point out some of the OO design patterns used in dompdf:
+  
+  Pattern      Classes
+  -------      -------
+  composite    Frame
+  decorator    Frame_Decorator, *_Frame_Decorator classes
+  strategy     Frame_Reflower, *_Frame_Reflower classes, Positioner,
+               *_Positioner classes
+  facade       dompdf
+  adapter      CPDF_Adapter, PDFLib_Adapter
+
+Also, see the main doc comment in dompdf.cls.php for a general overview of 
+the rendering process.
Index: /trunk/filemanager/tp/dompdf/www/foot.inc
===================================================================
--- /trunk/filemanager/tp/dompdf/www/foot.inc	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/foot.inc	(revision 2000)
@@ -0,0 +1,10 @@
+</div>
+
+<div id="footer">
+<div class="badges">
+<a href="http://www.php.net"><img src="images/php5-power-micro.png" alt="php5 logo"/></a>
+<a href="http://validator.w3.org"><img src="images/xhtml10.png" alt="valid xhtml"/></a>
+<a href="http://jigsaw.w3.org/css-validator"><img src="images/css2.png" alt="valid css2"/></a>
+</div>
+</div>
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/border_test.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/border_test.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/border_test.html	(revision 2000)
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+<style>
+table {
+  border-spacing: 5px;
+  margin: 5em auto 5em auto;
+}
+td {
+  border-width: 5px;
+  padding: 1em;
+}
+
+td.dotted { border-style: dotted; color: maroon;}
+td.dashed { border-style: dashed; color: orange; }
+td.solid  { border-style: solid; color: yellow; }
+td.double { border-style: double; color: olive; }
+td.groove { border-style: groove; color: green; }
+td.ridge  { border-style: ridge; color: lime; }
+td.inset  { border-style: inset; color: teal; }
+td.outset { border-style: outset; color: blue; }
+
+div.full { border:thin blue solid; margin:2pt;}
+
+div.partialthinsolid,
+div.partial1,
+div.partial2 { border:thin solid; margin:2pt;}
+
+div.partial1 { border-color:green; }
+div.partial2 { border:blue;}
+
+div.partial3 { border-style:dashed; }
+div.partial4 { border-width:thick; }
+div.partial5 { border-width:medium; }
+div.partial6 { border-width:3pt; }
+
+div.partial1top,
+div.partial2top { border-top:thin solid; margin:2pt;}
+
+div.partial1top {border-top-color:green; }
+div.partial2top {border-top:blue;}
+
+
+</style>
+</head>
+
+<body>
+<table>
+  <tr>
+    <td class="dotted">dotted</td>
+    <td class="dashed">dashed</td>
+    <td class="solid">solid</td>
+    <td class="double">double</td>
+  </tr>
+  <tr>
+    <td class="groove">groove</td>
+    <td class="ridge">ridge</td>
+    <td class="inset">inset</td>
+    <td class="outset">outset</td>
+  </tr>
+</table>
+
+<h2>partial attributes merged</h2>
+
+<div style="border:thin solid red;">border:thin solid red;</div>
+<div style="border:red thin solid;">border:red thin solid;</div>
+<div class="partialthinsolid partial2">{ border:thin solid; }{border:blue; } (merged, reset all - color has no effect)</div>
+<div class="partialthinsolid partial1">{ border:thin solid; }{border-color:green; } (merged, overwrite only color)</div>
+<div class="partial2">{ border:thin solid; }{border:blue; } (merged, reset all - color has no effect)</div>
+<div class="partial1">{ border:thin solid; }{border-color:green; } (merged, overwrite only color)</div>
+<div class="full partial1">{ border:thin blue solid; }{border-color:green; } (merged, overwrite only color)</div>
+<div class="full partial3">{ border:thin blue solid; }{border-style:dashed; } (merged, overwrite only style)</div>
+<div class="full partial4">{ border:thin blue solid; }{border-width:thick; } (merged, overwrite only width)</div>
+<div class="full partial5">{ border:thin blue solid; }{border-width:medium; } (merged, overwrite only width)</div>
+<div class="full partial6">{ border:thin blue solid; }{border-width:3pt; } (merged, overwrite only width)</div>
+
+<h2>top:</h2>
+
+<div style="border-top:thin solid red;">border-top:thin solid red;</div>
+<div style="border-top:red thin solid;">border-top:red thin solid;</div>
+<div class="partial1top">{ border-top:thin solid; }{border-top-color:green; } (merged, overwrite only color)</div>
+<div class="partial2top">{ border-top:thin solid; }{border-top:blue; } (merged, reset all - color has no effect)</div>
+
+<h2>right left bottom:</h2>
+
+<div style="border-right:thin solid red;">border-right:thin solid red;</div>
+<div style="border-left:thin solid red;">border-left:thin solid red;</div>
+<div style="border-bottom:thin solid red;">border-bottom:thin solid red;</div>
+
+<h2>Individual Attributes</h2>
+<div class="full" style="border-top-color:red;">{border:thin blue solid;}{border-top-color:red;}</div>
+<div class="full" style="border-right-color:red;">{border:thin blue solid;}{border-right-color:red;}</div>
+<div class="full" style="border-bottom-color:red;">{border:thin blue solid;}{border-bottom-color:red;}</div>
+<div class="full" style="border-left-color:red;">{border:thin blue solid;}{border-left-color:red;}</div>
+
+<div class="full" style="border-top-style:dashed;">{border:thin blue solid;}{border-top-style:dashed;}</div>
+<div class="full" style="border-right-style:dashed;">{border:thin blue solid;}{border-right-style:dashed;}</div>
+<div class="full" style="border-bottom-style:dashed;">{border:thin blue solid;}{border-bottom-style:dashed;}</div>
+<div class="full" style="border-left-style:dashed;">{border:thin blue solid;}{border-left-style:dashed;}</div>
+
+<div class="full" style="border-top-width:medium;">{border:thin blue solid;}{border-top-width:medium;}</div>
+<div class="full" style="border-right-width:medium;">{border:thin blue solid;}{border-right-width:medium;}</div>
+<div class="full" style="border-bottom-width:medium;">{border:thin blue solid;}{border-bottom-width:medium;}</div>
+<div class="full" style="border-left-width:medium;">{border:thin blue solid;}{border-left-width:medium;}</div>
+
+<h2>Individual side specific Attributes</h2>
+
+<div class="full" style="border-color:red;">{border:thin blue solid;}{border-color:red;}</div>
+<div class="full" style="border-color:red green;">{border:thin blue solid;}{border-color:red green;}</div>
+<div class="full" style="border-color:red green blue;">{border:thin blue solid;}{border-color:red green blue;}</div>
+<div class="full" style="border-color:red green blue gray;">{border:thin blue solid;}{border-color:red green blue gray;}</div>
+
+<div class="full" style="border-style:dashed;">{border:thin blue solid;}{border-style:dashed;}</div>
+<div class="full" style="border-style:dashed dotted;">{border:thin blue solid;}{border-style:dashed dotted;}</div>
+<div class="full" style="border-style:dashed dotted double;">{border:thin blue solid;}{border-style:dashed dotted double;}</div>
+<div class="full" style="border-style:dashed dotted double groove;">{border:thin blue solid;}{border-style:dashed dotted double groove;}</div>
+
+<div class="full" style="border-width:1pt;">{border:thin blue solid;}{border-width:1pt;}</div>
+<div class="full" style="border-width:1pt 2pt;">{border:thin blue solid;}{border-width:1pt 2pt;}</div>
+<div class="full" style="border-width:1pt 2pt 3pt;">{border:thin blue solid;}{border-width:1pt 2pt 3pt;}</div>
+<div class="full" style="border-width:1pt 2pt 3pt 4pt;">{border:thin blue solid;}{border-width:1pt 2pt 3pt 4pt;}</div>
+
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/common.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/common.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/common.css	(revision 2000)
@@ -0,0 +1,128 @@
+/* Notes
+-----------------------------------------------------------------------*/
+.note_form { 
+  display: none;
+}
+
+
+/* Page
+-----------------------------------------------------------------------*/
+.page {
+  background-color: white;
+  padding: 20px;
+  font-size: 0.7em;
+  margin-bottom: 15px;
+  margin-right: 5px;
+}
+
+.page table.header td h1 { 
+  margin: 0px;
+}
+
+.page table.header { 
+  border-bottom: 1px solid black;
+}
+
+.page h1 {
+  text-align: center;
+  color: black;
+  font-style: normal;
+  font-size: 2em;
+}
+
+.page h2 {
+  text-align: center;
+  color: black;
+}
+
+.page h3 {
+  color: black;
+  font-size: 1em;
+}
+
+.page p { 
+  text-align: justify;
+  font-size: 1em;
+}
+
+.page em {
+  font-weight: bold;
+  font-style: normal;
+  text-decoration: underline;
+  margin-left: 1%;
+  margin-right: 1%;
+
+}
+
+.money_table {
+  width: 85%;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.money {
+  text-align: right;
+  padding-right: 20px;
+}
+
+.money_field {
+  text-align: right;
+  padding: 0px 15px 5px 15px;
+  font-weight: bold;
+}
+
+.total_label {
+  border-top: 2px double black;
+  font-weight: bold;
+}
+
+.total_field {
+  border-top: 2px double black;
+  text-align: right;
+  padding: 0px 15px 5px 15px;
+  font-weight: bold;
+}
+
+.written_field { 
+  border-bottom: 0.1pt solid black;
+}
+
+.page .indent * { margin-left: 4em; }
+
+.checkbox { 
+  border: 1px solid black;
+  padding: 1px 2px;
+  font-size: 7px;
+  font-weight: bold;
+}
+
+table.fax_head { 
+  width: 100%;
+  font-weight: bold;
+  font-size: 1.1em;
+  border-bottom: 1px solid black;
+}
+
+/* Sales-agreement specific
+-----------------------------------------------------------------------*/
+table.sa_signature_box { 
+  margin: 2em auto 2em auto;
+}
+
+table.sa_signature_box tr td { 
+  padding-top: 1.5em;
+  vertical-align: top;
+  white-space: nowrap;
+}
+
+.special_conditions { 
+  font-style: italic;
+  margin-left: 2em; 
+  white-space: pre;
+  font-weight: bold;
+}
+
+.page h2 { 
+  text-align: left;
+}
+
Index: /trunk/filemanager/tp/dompdf/www/test/margin.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/margin.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/margin.html	(revision 2000)
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+<style>
+p { width: 50%; text-align: justify; }
+</style>
+</head>
+<body>
+
+<p style="margin: 1em;"><strong>(margin: 1em;)</strong> The PHP Development
+Team would like to announce the immediate availability of PHP 5.0.1. This is
+a maintenance release that in addition to many non-critical bug fixes also
+includes new UNIX and Windows installation docs which are now auto-generated
+from the PHP Manual.</p>
+
+<p style="margin: 1em 1em 1em 50%;"><strong>(margin: 1em 1em 1em
+50%;)</strong> PHP 4.3.9RC1 has been released for testing. This is the first
+release candidate and should have a very low number of problems and/or
+bugs. Nevertheless, please download and test it as much as possible on
+real-life applications to uncover any remaining issues.</p>
+
+<p style="margin: 4em 1em 4em 4em;"><strong>(margin: 4em 1em 4em
+1em;)</strong> PHP Tunisie has just released the second issue of its monthly
+french PHP Magazine. In this issue you'll find a large plan on PostgreSQL,
+Databases abstractions with PHP, your mini template engine, an article on
+images generation with PHP, the migration towards PHP5 with
+EasyPHP1.7... And many other articles and latests PHP news.</p>
+
+<p style="margin: 1em auto 1em auto;"><strong>(margin: 1em auto 1em
+auto;)</strong> The traditional International PHP Conference 2004 will be
+taking place from 7th November to 10th November in Frankfurt (FFM). The Call
+for Papers has been issued, so if you have an interesting talk, the
+organizers would love to hear about it! You can expect a gathering of PHP
+experts and core developers.</P>
+
+
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/media.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/media.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/media.html	(revision 2000)
@@ -0,0 +1,150 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
+<link rel="stylesheet" media="screen, projection" href="css/linkdisplay.css">
+<link rel="stylesheet" media="print" href="css/linkprint.css">
+<link rel="stylesheet" media="all" href="css/linkall.css">
+<link rel="stylesheet" href="css/linkdefault.css">
+<style>
+@page { margin:1cm; color:#0000ff; font-family:sans-serif;} 
+
+@media print {
+  p.media {background-color:#eeeeee;}
+}
+@media screen {
+  p.media {background-color:#c0c0ff;}
+}
+@media projection {
+  p.media {background-color:#ffffc0;}
+}
+
+@import url(css/importall.css);
+@import url(css/importprint.css) print;
+@import url(css/importdisplay.css) projection, screen;
+
+@import url(css/importsub.css);
+
+@import url(/absimagetest/importabs.css);
+
+body { background-color:#eeeeee; margin:0pt; padding:1cm; border:0.5pt solid red; }
+</style>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+</head>
+<body>
+<h1>css @media media types</h1>
+<p class="media">
+Depending on dompdf_config.inc.php setting DOMPDF_DEFAULT_MEDIA_TYPE here the
+background color appeares different:
+</p>
+<ul>
+<li>print: light gray</li>
+<li>screen: light blue</li>
+<li>projection: light yellow</li>
+</ul>
+
+<h1>css @import media types</h1>
+<p class="import">
+Depending on dompdf_config.inc.php setting DOMPDF_DEFAULT_MEDIA_TYPE here the
+background color appeares different:
+</p>
+<ul>
+<li>print: light gray</li>
+<li>screen or projection: light blue</li>
+<li class="import">all: this line yellow</li>
+</ul>
+
+<p class="importsub">yellow by import css from subfolder</p>
+
+<p class="importabs">yellow by import css from absolute local folder.
+Note: Only works if www\test\images/importabs.css was copied to /absimagetest/importabs.css
+</p>
+
+
+<h1>css link media types</h1>
+<p class="link">
+Depending on dompdf_config.inc.php setting DOMPDF_DEFAULT_MEDIA_TYPE here the
+background color appeares different:
+</p>
+<ul>
+<li>print: light gray</li>
+<li>screen or projection: light blue</li>
+<li class="link">all: this line yellow background with red color</li>
+</ul>
+
+
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+<p>x</p>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/multiple_class.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/multiple_class.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/multiple_class.html	(revision 2000)
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<style>
+.a { font-style: italic; }
+.b { font-weight: bold; }
+.c { color: red; }
+</style>
+</head>
+<body>
+<p class="a">class="a"</p>
+<p class="b">class="b"</p>
+<p class="c">class="c"</p>
+<p class="a b">class="a b"</p>
+<p class="a b c">class="a b c"</p>
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/special.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/special.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/special.html	(revision 2000)
@@ -0,0 +1,570 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
+   "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html lang=en>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>HTML 4.0 Special Entities</title>
+<link rev=Made href="mailto:liam@htmlhelp.com">
+<link rel=Start href="../index.html">
+<link rel=Prev href="symbols.html">
+<style>
+body {
+  background: white;
+  color: black;
+  font-family: sans-serif;
+}
+
+h1 {
+  color: #c33;
+  background: none;
+  font-weight: bold;
+  text-align: center
+}
+
+h2 {
+  color: #00008b;
+  background: none;
+  font-weight: bold
+}
+
+h3 {
+  color: #006400;
+  background: none;
+  margin-left: 4%;
+  margin-right: 4%;
+  font-weight: bold
+}
+
+h4 {
+  margin-left: 6%;
+  margin-right: 6%;
+  font-weight: bold
+}
+
+h5 {
+  margin-left: 6%;
+  margin-right: 6%;
+  font-weight: bold
+}
+
+ul, ol, dl, p {
+  margin-left: 6%;
+  margin-right: 6%
+}
+
+ul ul, table ol, table ul, dl ol, dl ul {
+  margin-left: 1.2em;
+  margin-right: 1%;
+  padding-left: 0
+}
+
+pre {
+  margin-left: 10%;
+  white-space: pre
+}
+
+table caption {
+  font-size: larger;
+  font-weight: bolder
+}
+
+table p, table dl, ol p, ul p, dl p, blockquote p, .note p, .note ul, .note ol, .note dl, li pre, dd pre {
+  margin-left: 0;
+  margin-right: 0
+}
+
+p.top {
+  margin-left: 1%;
+  margin-right: 1%
+}
+
+blockquote {
+  margin-left: 8%;
+  margin-right: 8%;
+  border: thin ridge #dc143c
+}
+
+blockquote pre {
+  margin-left: 1%;
+  margin-right: 1%
+}
+
+dt a {
+  font-weight: bold;
+  margin-top: .8em
+}
+
+a:link {
+  color: #00f;
+  background: none;
+}
+
+a:visited {
+  color: #800080;
+  background: none;
+}
+
+a:active {
+  color: green;
+  background: #FFD700
+}
+
+.html {
+  color: #000080;
+  background: none
+}
+
+.css {
+  color: #800000;
+  background: none
+}
+
+.javascript {
+  color: #008000;
+  background: none
+}
+
+.example { margin-left: 10% }
+
+dfn {
+  font-style: normal;
+  font-weight: bolder
+}
+
+var sub { font-style: normal }
+
+.note {
+  font-size: 85%;
+  margin-left: 10%
+}
+
+.SMA {
+  color: fuchsia;
+  background: none;
+  font-family: Kids, "Comic Sans MS", Jester
+}
+
+.oops {
+  font-family: Jester, "Comic Sans MS"
+}
+
+.author {
+  font-style: italic
+}
+
+.copyright {
+  font-size: smaller;
+  text-align: right;
+  clear: right
+}
+
+.toolbar {
+  text-align: center
+}
+
+.toolbar IMG {
+  float: right
+}
+
+.error {
+  color: #DC143C;
+  background: none;
+  text-decoration: none
+}
+
+.warning {
+  color: #FF4500;
+  background: none;
+  text-decoration: none
+}
+
+.error strong {
+  color: #DC143C;
+  background: #FFD700;
+  text-decoration: none
+}
+
+.warning strong {
+  color: #FF4500;
+  background: #FFD700;
+  text-decoration: none
+}
+
+.warning a:link, .warning a:visited, .warning a:active {
+  color: #FF4500;
+  background: none;
+  text-decoration: underline
+}
+
+.error a:link, .error a:visited, .error a:active {
+  color: #DC143C;
+  background: none;
+  text-decoration: underline
+}
+
+.error strong a:link, .error strong a:visited, .error strong a:active {
+  color: #DC143C;
+  background: #FFD700
+}
+
+.warning strong a:link, .warning strong a:visited, .warning strong a:active {
+  color: #FF4500;
+  background: #FFD700
+}
+
+colgroup.entity { text-align: center }
+
+.default { text-decoration: underline; font-style: normal }
+.required { font-weight: bold }
+td li.transitional, .elements li.transitional {
+  font-weight: lighter;
+  color: #696969;
+  background: none
+}
+td li.frameset, .elements li.frameset {
+  font-weight: lighter;
+  color: #808080;
+  background: none
+}
+
+.footer, .checkedDocument {
+  margin-top: 2em;
+  padding-top: 1em;
+  border-top: solid thin black
+}
+
+strong.legal {
+  font-weight: normal;
+  text-transform: uppercase
+}
+
+@media print {
+  input#toggler, .toolbar { display: none }
+}
+
+table { border-collapse: collapse; width: 100%; }
+td { border: 0.5pt solid black; }
+
+</style>
+<meta name="author" content="Liam Quinn">
+<meta name="description" content="A table of the HTML 4.0 entities for markup-significant and internationalization characters.">
+<meta name="keywords" content="internationalization, internationalisation, i18n, I18N, entities, characters, character set, HTML, HyperText Markup Language, HTML 4.0, HTML4, character entity reference, decimal, hexadecimal, hex, browser test, WDG, Web Design Group">
+<body>
+<h1>Special Entities</h1>
+<p>The following table gives the character entity reference, decimal character reference, and hexadecimal character reference for markup-significant and internationalization characters, as well as the rendering of each in your browser. <a href="http://www.unicode.org/charts/">Glyphs</a> of the characters are available at the <a href="http://www.unicode.org/">Unicode Consortium</a>.</p>
+<p>With the exception of <a href="http://www.w3.org/MarkUp/html-spec/">HTML 2.0</a>'s <strong class=html>&amp;quot;</strong>, <strong class=html>&amp;amp;</strong>, <strong class=html>&amp;lt;</strong>, and <strong class=html>&amp;gt;</strong>, browser support for these entities is generally quite poor, but recent browsers support some of the character entity references and decimal character references.</p>
+<table>
+  <thead>
+    <tr>
+      <th scope=col rowspan=2>Character</th>
+      <th scope=col rowspan=2>Entity</th>
+      <th scope=col rowspan=2>Decimal</th>
+      <th scope=col rowspan=2>Hex</th>
+      <th scope=colgroup colspan=3>Rendering in Your Browser</th>
+    </tr>
+    <tr>
+      <th scope=col>Entity</th>
+      <th scope=col>Decimal</th>
+      <th scope=col>Hex</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td scope=row>quotation mark = APL quote</td>
+      <td>&amp;quot;</td>
+      <td>&amp;#34;</td>
+      <td>&amp;#x22;</td>
+      <td>&quot;</td>
+      <td>&#34;</td>
+      <td>&#x22;</td>
+    </tr>
+    <tr>
+      <td scope=row>ampersand</td>
+      <td>&amp;amp;</td>
+      <td>&amp;#38;</td>
+      <td>&amp;#x26;</td>
+      <td>&amp;</td>
+      <td>&#38;</td>
+      <td>&#x26;</td>
+    </tr>
+    <tr>
+      <td scope=row>less-than sign</td>
+      <td>&amp;lt;</td>
+      <td>&amp;#60;</td>
+      <td>&amp;#x3C;</td>
+      <td>&lt;</td>
+      <td>&#60;</td>
+      <td>&#x3C;</td>
+    </tr>
+    <tr>
+      <td scope=row>greater-than sign</td>
+      <td>&amp;gt;</td>
+      <td>&amp;#62;</td>
+      <td>&amp;#x3E;</td>
+      <td>&gt;</td>
+      <td>&#62;</td>
+      <td>&#x3E;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital ligature OE</td>
+      <td>&amp;OElig;</td>
+      <td>&amp;#338;</td>
+      <td>&amp;#x152;</td>
+      <td>&OElig;</td>
+      <td>&#338;</td>
+      <td>&#x152;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small ligature oe</td>
+      <td>&amp;oelig;</td>
+      <td>&amp;#339;</td>
+      <td>&amp;#x153;</td>
+      <td>&oelig;</td>
+      <td>&#339;</td>
+      <td>&#x153;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter S with caron</td>
+      <td>&amp;Scaron;</td>
+      <td>&amp;#352;</td>
+      <td>&amp;#x160;</td>
+      <td>&Scaron;</td>
+      <td>&#352;</td>
+      <td>&#x160;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter s with caron</td>
+      <td>&amp;scaron;</td>
+      <td>&amp;#353;</td>
+      <td>&amp;#x161;</td>
+      <td>&scaron;</td>
+      <td>&#353;</td>
+      <td>&#x161;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter Y with diaeresis</td>
+      <td>&amp;Yuml;</td>
+      <td>&amp;#376;</td>
+      <td>&amp;#x178;</td>
+      <td>&Yuml;</td>
+      <td>&#376;</td>
+      <td>&#x178;</td>
+    </tr>
+    <tr>
+      <td scope=row>modifier letter circumflex accent</td>
+      <td>&amp;circ;</td>
+      <td>&amp;#710;</td>
+      <td>&amp;#x2C6;</td>
+      <td>&circ;</td>
+      <td>&#710;</td>
+      <td>&#x2C6;</td>
+    </tr>
+    <tr>
+      <td scope=row>small tilde</td>
+      <td>&amp;tilde;</td>
+      <td>&amp;#732;</td>
+      <td>&amp;#x2DC;</td>
+      <td>&tilde;</td>
+      <td>&#732;</td>
+      <td>&#x2DC;</td>
+    </tr>
+    <tr>
+      <td scope=row>en space</td>
+      <td>&amp;ensp;</td>
+      <td>&amp;#8194;</td>
+      <td>&amp;#x2002;</td>
+      <td>&ensp;</td>
+      <td>&#8194;</td>
+      <td>&#x2002;</td>
+    </tr>
+    <tr>
+      <td scope=row>em space</td>
+      <td>&amp;emsp;</td>
+      <td>&amp;#8195;</td>
+      <td>&amp;#x2003;</td>
+      <td>&emsp;</td>
+      <td>&#8195;</td>
+      <td>&#x2003;</td>
+    </tr>
+    <tr>
+      <td scope=row>thin space</td>
+      <td>&amp;thinsp;</td>
+      <td>&amp;#8201;</td>
+      <td>&amp;#x2009;</td>
+      <td>&thinsp;</td>
+      <td>&#8201;</td>
+      <td>&#x2009;</td>
+    </tr>
+    <tr>
+      <td scope=row>zero width non-joiner</td>
+      <td>&amp;zwnj;</td>
+      <td>&amp;#8204;</td>
+      <td>&amp;#x200C;</td>
+      <td>&zwnj;</td>
+      <td>&#8204;</td>
+      <td>&#x200C;</td>
+    </tr>
+    <tr>
+      <td scope=row>zero width joiner</td>
+      <td>&amp;zwj;</td>
+      <td>&amp;#8205;</td>
+      <td>&amp;#x200D;</td>
+      <td>&zwj;</td>
+      <td>&#8205;</td>
+      <td>&#x200D;</td>
+    </tr>
+    <tr>
+      <td scope=row>left-to-right mark</td>
+      <td>&amp;lrm;</td>
+      <td>&amp;#8206;</td>
+      <td>&amp;#x200E;</td>
+      <td>&lrm;</td>
+      <td>&#8206;</td>
+      <td>&#x200E;</td>
+    </tr>
+    <tr>
+      <td scope=row>right-to-left mark</td>
+      <td>&amp;rlm;</td>
+      <td>&amp;#8207;</td>
+      <td>&amp;#x200F;</td>
+      <td>&rlm;</td>
+      <td>&#8207;</td>
+      <td>&#x200F;</td>
+    </tr>
+    <tr>
+      <td scope=row>en dash</td>
+      <td>&amp;ndash;</td>
+      <td>&amp;#8211;</td>
+      <td>&amp;#x2013;</td>
+      <td>&ndash;</td>
+      <td>&#8211;</td>
+      <td>&#x2013;</td>
+    </tr>
+    <tr>
+      <td scope=row>em dash</td>
+      <td>&amp;mdash;</td>
+      <td>&amp;#8212;</td>
+      <td>&amp;#x2014;</td>
+      <td>&mdash;</td>
+      <td>&#8212;</td>
+      <td>&#x2014;</td>
+    </tr>
+    <tr>
+      <td scope=row>left single quotation mark</td>
+      <td>&amp;lsquo;</td>
+      <td>&amp;#8216;</td>
+      <td>&amp;#x2018;</td>
+      <td>&lsquo;</td>
+      <td>&#8216;</td>
+      <td>&#x2018;</td>
+    </tr>
+    <tr>
+      <td scope=row>right single quotation mark</td>
+      <td>&amp;rsquo;</td>
+      <td>&amp;#8217;</td>
+      <td>&amp;#x2019;</td>
+      <td>&rsquo;</td>
+      <td>&#8217;</td>
+      <td>&#x2019;</td>
+    </tr>
+    <tr>
+      <td scope=row>single low-9 quotation mark</td>
+      <td>&amp;sbquo;</td>
+      <td>&amp;#8218;</td>
+      <td>&amp;#x201A;</td>
+      <td>&sbquo;</td>
+      <td>&#8218;</td>
+      <td>&#x201A;</td>
+    </tr>
+    <tr>
+      <td scope=row>left double quotation mark</td>
+      <td>&amp;ldquo;</td>
+      <td>&amp;#8220;</td>
+      <td>&amp;#x201C;</td>
+      <td>&ldquo;</td>
+      <td>&#8220;</td>
+      <td>&#x201C;</td>
+    </tr>
+    <tr>
+      <td scope=row>right double quotation mark</td>
+      <td>&amp;rdquo;</td>
+      <td>&amp;#8221;</td>
+      <td>&amp;#x201D;</td>
+      <td>&rdquo;</td>
+      <td>&#8221;</td>
+      <td>&#x201D;</td>
+    </tr>
+    <tr>
+      <td scope=row>double low-9 quotation mark</td>
+      <td>&amp;bdquo;</td>
+      <td>&amp;#8222;</td>
+      <td>&amp;#x201E;</td>
+      <td>&bdquo;</td>
+      <td>&#8222;</td>
+      <td>&#x201E;</td>
+    </tr>
+    <tr>
+      <td scope=row>dagger</td>
+      <td>&amp;dagger;</td>
+      <td>&amp;#8224;</td>
+      <td>&amp;#x2020;</td>
+      <td>&dagger;</td>
+      <td>&#8224;</td>
+      <td>&#x2020;</td>
+    </tr>
+    <tr>
+      <td scope=row>double dagger</td>
+      <td>&amp;Dagger;</td>
+      <td>&amp;#8225;</td>
+      <td>&amp;#x2021;</td>
+      <td>&Dagger;</td>
+      <td>&#8225;</td>
+      <td>&#x2021;</td>
+    </tr>
+    <tr>
+      <td scope=row>per mille sign</td>
+      <td>&amp;permil;</td>
+      <td>&amp;#8240;</td>
+      <td>&amp;#x2030;</td>
+      <td>&permil;</td>
+      <td>&#8240;</td>
+      <td>&#x2030;</td>
+    </tr>
+    <tr>
+      <td scope=row>single left-pointing angle quotation mark</td>
+      <td>&amp;lsaquo;</td>
+      <td>&amp;#8249;</td>
+      <td>&amp;#x2039;</td>
+      <td>&lsaquo;</td>
+      <td>&#8249;</td>
+      <td>&#x2039;</td>
+    </tr>
+    <tr>
+      <td scope=row>single right-pointing angle quotation mark</td>
+      <td>&amp;rsaquo;</td>
+      <td>&amp;#8250;</td>
+      <td>&amp;#x203A;</td>
+      <td>&rsaquo;</td>
+      <td>&#8250;</td>
+      <td>&#x203A;</td>
+    </tr>
+    <tr>
+      <td scope=row>euro sign</td>
+      <td>&amp;euro;</td>
+      <td>&amp;#8364;</td>
+      <td>&amp;#x20AC;</td>
+      <td>&euro;</td>
+      <td>&#8364;</td>
+      <td>&#x20AC;</td>
+    </tr>
+  </tbody>
+</table>
+
+<div class=footer>
+<address>Maintained by <a href="http://www.htmlhelp.com/%7Eliam/">Liam Quinn</a> &lt;<a href="mailto:liam@htmlhelp.com">liam@htmlhelp.com</a>&gt;</address>
+<p class=toolbar><a href="../index.html" rel=Start>HTML&#160;4.0&#160;Reference</a>&#160;~ <a href="latin1.html">Latin-1&#160;Characters</a>&#160;~ <a href="symbols.html" rel=Prev>Symbols&#160;and&#160;Greek&#160;Letters</a></p>
+<p class=copyright>Copyright &copy; 1998 by <a href="http://www.htmlhelp.com/%7Eliam/">Liam Quinn</a>. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at <a href="http://www.opencontent.org/openpub/">http://www.opencontent.org/openpub/</a>).</p>
+<p class=copyright>Modfications made by Benj Carson <a>benjcarson@digitaljunkies.ca</a> for dompdf, Jan 5, 2006.</p>
+</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/background_image.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/background_image.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/background_image.html	(revision 2000)
@@ -0,0 +1,68 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
+<style>
+p.c1 { background-image: url(images/dompdf_simple.png); background-repeat: repeat-x; background-position: 100px 50%; }
+p.c2 { background-image: url(images/php.gif); background-position: bottom center; background-repeat: repeat-y; }
+</style>
+</head>
+<body>
+<h1>Lorem ipsum dolor sit amet</h1>
+<p class="c1">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at
+odio vitae libero tempus convallis. Cum sociis natoque penatibus et
+magnis dis parturient montes, nascetur ridiculus mus. Vestibulum purus
+mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla
+massa quis velit. Curabitur metus massa, semper mollis, molestie vel,
+adipiscing nec, massa. Phasellus vitae felis sed lectus dapibus
+facilisis. In ultrices sagittis ipsum. In at est. Integer iaculis
+turpis vel magna. Cras eu est. Integer porttitor ligula a
+tellus. Curabitur accumsan ipsum a velit. Sed laoreet lectus quis
+leo. Nulla pellentesque molestie ante. Quisque vestibulum est id
+justo. Ut pellentesque ante in neque.</p>
+
+<p class="c2">Curabitur ut diam eu dui vestibulum pharetra. Nam pellentesque, justo
+non hendrerit venenatis, mi orci pretium mi, et vehicula leo arcu quis
+diam. Nullam mattis laoreet quam. Morbi mollis sem ut tellus. Nam mi
+massa, lobortis eu, sollicitudin et, iaculis et, massa. Maecenas purus
+mauris, luctus sit amet, pharetra in, facilisis sit amet, elit. Nullam
+vel erat tempus purus molestie suscipit. <span>Vestibulum odio lorem,
+sollicitudin non, volutpat sit amet, tincidunt vel, nunc. Nulla quis
+ante vestibulum odio feugiat facilisis. Proin lorem nisl, viverra at,
+rhoncus quis, semper nec, mi. Donec euismod enim vitae velit</span>. Nulla
+sed lectus. Vivamus placerat, lacus sed vehicula sagittis, arcu massa
+adipiscing lorem, bibendum luctus nisl tortor vitae leo.</p>
+
+<p class="c1">Etiam a mauris. Proin justo elit, accumsan sit amet, tempus et,
+blandit id, tellus. Morbi varius, nisi id iaculis aliquam, lacus
+ligula facilisis velit, ac pharetra ipsum augue a massa. Etiam rhoncus
+commodo orci. Mauris ullamcorper sagittis turpis. Nullam magna libero,
+sagittis sed, auctor faucibus, accumsan vitae, urna. Pellentesque
+volutpat. Aliquam sapien ipsum, eleifend nec, imperdiet vitae,
+consectetuer id, quam. Donec a urna. Suspendisse sit amet
+velit. Curabitur quis nisi id dui viverra ornare. Sed condimentum enim
+quis tortor. Ut condimentum, magna non tempus tincidunt, leo nibh
+molestie tellus, vitae convallis dolor ante sed ante. Nunc et
+metus. Phasellus ultricies. Fusce faucibus tortor sit amet mauris.</p>
+
+<p class="c2">Aliquam enim. Duis et diam. Praesent porta, mauris quis pellentesque
+volutpat, erat elit vulputate eros, vitae pulvinar augue velit sit
+amet sem. Fusce eu urna eu nisi condimentum posuere. Vivamus sed
+felis. Duis eget urna vitae eros interdum dignissim. Proin justo eros,
+eleifend in, porttitor in, malesuada non, neque. Etiam sed
+augue. Nulla sit amet magna. Lorem ipsum dolor sit amet, consectetuer
+adipiscing elit. Mauris facilisis. Curabitur massa magna, pulvinar a,
+nonummy eget, egestas vitae, mauris. Quisque vel elit sit amet lorem
+malesuada facilisis. Vestibulum porta, metus sit amet egestas
+interdum, urna justo euismod erat, id tristique urna leo quis
+nibh. Morbi non erat.</p>
+
+<p class="c1">Cras fringilla, nulla id egestas elementum, augue nunc iaculis nibh,
+ac adipiscing nibh justo id tortor. Donec vel orci a nisi ultricies
+aliquet. Nunc urna quam, adipiscing molestie, vehicula non,
+condimentum non, magna. Integer magna. Donec quam metus, pulvinar id,
+suscipit eget, euismod ac, orci. Nulla facilisi. Nullam nec
+mauris. Morbi in mi. Etiam urna lectus, pulvinar ac, sollicitudin eu,
+euismod ac, lectus. Fusce elit. Sed ultricies odio ac felis.</p>
+
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/baseline.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/baseline.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/baseline.html	(revision 2000)
@@ -0,0 +1,16 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
+<title></title>
+</head>
+<body>
+
+<span style="font-size: 30px;">(enter </span><span style="font-family:
+Arial; font-size: 12px; font-weight: bold; color: rgb(255, 66, 0);
+font-style: italic;">your </span><span style="font-size: 20px;
+font-weight: bold; color: rgb(255, 66, 0); font-style:
+italic;">text</span><span style="font-family: Arial; font-size:
+12px;"> here)</span>
+
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/demo_01.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/demo_01.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/demo_01.html	(revision 2000)
@@ -0,0 +1,214 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<link rel="STYLESHEET" href="css/print_static.css" type="text/css" />
+</head>
+
+<body>
+
+<div id="body">
+
+<div id="section_header">
+</div>
+
+<div id="content">
+  
+<div class="page" style="font-size: 7pt">
+<table style="width: 100%;" class="header">
+<tr>
+<td><h1 style="text-align: left">SCHEDULE A</h1></td>
+<td><h1 style="text-align: right">Job: 132-003</h1></td>
+</tr>
+</table>
+
+<table style="width: 100%; font-size: 8pt;">
+<tr>
+<td>Job: <strong>132-003</strong></td>
+<td>Purchasers(s): <strong>Palmer</strong></td>
+</tr>
+
+<tr>
+<td>Created: <strong>2004-08-13</strong></td>
+<td>Last Change: <strong>2004-08-16  9:28 AM</strong></td>
+</tr>
+
+<tr>
+<td>Address: <strong>667 Pine Lodge Dr.</strong></td>
+<td>Legal: <strong>N/A</strong></td>
+</tr>
+</table>
+
+<table style="width: 100%; border-top: 1px solid black; border-bottom: 1px solid black; font-size: 8pt;">
+
+<tr>
+<td>Model: <strong>Franklin</strong></td>
+<td>Elevation: <strong>B</strong></td>
+<td>Size: <strong>1160 Cu. Ft.</strong></td>
+<td>Style: <strong>Reciprocating</strong></td>
+</tr>
+
+</table>
+
+<table class="change_order_items">
+
+<tr><td colspan="6"><h2>Standard Items:</h2></td></tr>
+
+<tbody>
+<tr>
+<th>Item</th>
+<th>Description</th>
+<th>Quantity</th>
+<th colspan="2">Unit Cost</th>
+<th>Total</th>
+</tr>
+
+<tr class="even_row">
+<td style="text-align: center">1</td>
+<td>Sprockets (13 tooth)</td>
+<td style="text-align: center">50</td>
+<td style="text-align: right; border-right-style: none;">$10.00</td>
+<td class="change_order_unit_col" style="border-left-style: none;">Ea.</td>
+<td class="change_order_total_col">$5,000.00</td>
+</tr>
+
+
+<tr class="odd_row">
+<td style="text-align: center">2</td>
+<td>Cogs (Cylindrical)</td>
+<td style="text-align: center">45</td>
+<td style="text-align: right; border-right-style: none;">$25.00</td>
+<td class="change_order_unit_col" style="border-left-style: none;">Ea.</td>
+<td class="change_order_total_col">$1125.00</td>
+</tr>
+
+<tr class="even_row">
+<td style="text-align: center">3</td>
+<td>Gears (15 tooth)</td>
+<td style="text-align: center">32</td>
+<td style="text-align: right; border-right-style: none;">$19.00</td>
+<td class="change_order_unit_col" style="border-left-style: none;">Ea.</td>
+<td class="change_order_total_col">$608.00</td>
+</tr>
+
+<tr class="odd_row">
+<td style="text-align: center">4</td>
+<td>Leaf springs (13 N/m)</td>
+<td style="text-align: center">6</td>
+<td style="text-align: right; border-right-style: none;">$125.00</td>
+<td class="change_order_unit_col" style="border-left-style: none;">Ea.</td>
+<td class="change_order_total_col">$750.00</td>
+</tr>
+
+<tr class="even_row">
+<td style="text-align: center">5</td>
+<td>Coil springs (6 N/deg)</td>
+<td style="text-align: center">7</td>
+<td style="text-align: right; border-right-style: none;">$11.00</td>
+<td class="change_order_unit_col" style="border-left-style: none;">Ea.</td>
+<td class="change_order_total_col">$77.00</td>
+</tr>
+
+</tbody>
+
+
+
+
+<tr>
+<td colspan="3" style="text-align: right;">(Tax is not included; it will be collected on closing.)</td>
+<td colspan="2" style="text-align: right;"><strong>GRAND TOTAL:</strong></td>
+<td class="change_order_total_col"><strong>$7560.00</strong></td></tr>
+</table>
+
+<table class="sa_signature_box" style="border-top: 1px solid black; padding-top: 2em; margin-top: 2em;">
+
+  <tr>    
+    <td>WITNESS:</td><td class="written_field" style="padding-left: 2.5in">&nbsp;</td>
+    <td style="padding-left: 1em">PURCHASER:</td><td class="written_field" style="padding-left: 2.5in; text-align: right;">X</td>
+  </tr>
+  <tr>
+    <td colspan="3" style="padding-top: 0em">&nbsp;</td>
+    <td style="text-align: center; padding-top: 0em;">Mr. Leland Palmer</td>
+  </tr>
+
+<tr><td colspan="4" style="white-space: normal">
+This change order shall have no force or effect until approved and signed
+by an authorizing signing officer of the supplier.  Any change or special
+request not noted on this document is not contractual.
+</td>
+</tr>
+
+<tr>
+<td colspan="2">ACCEPTED THIS
+<span class="written_field" style="padding-left: 4em">&nbsp;</span>
+DAY OF <span class="written_field" style="padding-left: 8em;">&nbsp;</span>, 
+20<span class="written_field" style="padding-left: 4em">&nbsp;</span>.
+</td>
+
+<td colspan="2" style="padding-left: 1em;">TWIN PEAKS SUPPLY LTD.<br/><br/>
+PER: 
+<span class="written_field" style="padding-left: 2.5in">&nbsp;</span>
+</td>
+</tr>
+</table>
+
+</div>
+
+</div>
+</div>
+
+<script type="text/php">
+
+if ( isset($pdf) ) {
+
+  $font = Font_Metrics::get_font("verdana");
+  // If verdana isn't available, we'll use sans-serif.
+  if (!isset($font)) { Font_Metrics::get_font("sans-serif"); }
+  $size = 6;
+  $color = array(0,0,0);
+  $text_height = Font_Metrics::get_font_height($font, $size);
+
+  $foot = $pdf->open_object();
+  
+  $w = $pdf->get_width();
+  $h = $pdf->get_height();
+
+  // Draw a line along the bottom
+  $y = $h - 2 * $text_height - 24;
+  $pdf->line(16, $y, $w - 16, $y, $color, 1);
+
+  $y += $text_height;
+
+  $text = "Job: 132-003";
+  $pdf->text(16, $y, $text, $font, $size, $color);
+
+  $pdf->close_object();
+  $pdf->add_object($foot, "all");
+
+  global $initials;
+  $initials = $pdf->open_object();
+  
+  // Add an initals box
+  $text = "Initials:";
+  $width = Font_Metrics::get_text_width($text, $font, $size);
+  $pdf->text($w - 16 - $width - 38, $y, $text, $font, $size, $color);
+  $pdf->rectangle($w - 16 - 36, $y - 2, 36, $text_height + 4, array(0.5,0.5,0.5), 0.5);
+    
+
+  $pdf->close_object();
+  $pdf->add_object($initials);
+ 
+  // Mark the document as a duplicate
+  $pdf->text(110, $h - 240, "DUPLICATE", Font_Metrics::get_font("verdana", "bold"),
+             110, array(0.85, 0.85, 0.85), 0, -52);
+
+  $text = "Page {PAGE_NUM} of {PAGE_COUNT}";  
+
+  // Center the text
+  $width = Font_Metrics::get_text_width("Page 1 of 2", $font, $size);
+  $pdf->page_text($w / 2 - $width / 2, $y, $text, $font, $size, $color);
+  
+}
+</script>
+
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/entities.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/entities.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/entities.html	(revision 2000)
@@ -0,0 +1,14 @@
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<style>
+p.1 { font-family: serif; }
+p.2 { font-family: sans-serif; }
+</style>
+</head>
+<body>
+<p class="1">&eacute; &copy; &laquo; avoir et &ecirc;tre &alpha; &beta;</p>
+<p class="2">&eacute; &copy; &laquo; avoir et &ecirc;tre &alpha; &beta;</p>
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/anchor_link.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/anchor_link.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/anchor_link.html	(revision 2000)
@@ -0,0 +1,210 @@
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<style>
+body {
+  margin: 18pt 18pt 24pt 18pt;
+}
+
+* {
+  font-family: georgia,serif;
+  font-weight: bold;
+}
+
+p {
+  text-align: justify;
+  font-size: 1em;
+  margin: 0.5em;
+  padding: 10px;
+}
+</style>
+</head>
+<body>
+
+<script type="text/php">
+
+if ( isset($pdf) ) {
+
+  $font = Font_Metrics::get_font("verdana");;
+  $size = 6;
+  $color = array(0,0,0);
+  $text_height = Font_Metrics::get_font_height($font, $size);
+
+  $foot = $pdf->open_object();
+  
+  $w = $pdf->get_width();
+  $h = $pdf->get_height();
+
+  // Draw a line along the bottom
+  $y = $h - $text_height - 24;
+  $pdf->line(16, $y, $w - 16, $y, $color, 0.5);
+
+  $pdf->close_object();
+  $pdf->add_object($foot, "all");
+
+  $text = "Page {PAGE_NUM} of {PAGE_COUNT}";  
+
+  // Center the text
+  $width = Font_Metrics::get_text_width("Page 1 of 2", $font, $size);
+  $pdf->page_text($w / 2 - $width / 2, $y, $text, $font, $size, $color);
+  
+}
+</script>
+
+<h1>Lorem ipsum dolor sit amet</h1>
+<h2><a name="anchor1">Anchor 1</a></h2>
+
+<p><a href="#anchor3">link to anchor3</a></p>
+<p><a href="http://www.digitaljunkies.ca/dompdf/">www.digitaljunkies.ca/dompdf</a></p>
+<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at
+odio vitae libero tempus convallis. Cum sociis natoque penatibus et
+magnis dis parturient montes, nascetur ridiculus mus. Vestibulum purus
+mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla
+massa quis velit. Curabitur metus massa, semper mollis, molestie vel,
+adipiscing nec, massa. Phasellus vitae felis sed lectus dapibus
+facilisis. In ultrices sagittis ipsum. In at est. Integer iaculis
+turpis vel magna. Cras eu est. Integer porttitor ligula a
+tellus. Curabitur accumsan ipsum a velit. Sed laoreet lectus quis
+leo. Nulla pellentesque molestie ante. Quisque vestibulum est id
+justo. Ut pellentesque ante in neque.</p>
+
+<p>Curabitur ut diam eu dui vestibulum pharetra. Nam pellentesque, justo
+non hendrerit venenatis, mi orci pretium mi, et vehicula leo arcu quis
+diam. Nullam mattis laoreet quam. Morbi mollis sem ut tellus. Nam mi
+massa, lobortis eu, sollicitudin et, iaculis et, massa. Maecenas purus
+mauris, luctus sit amet, pharetra in, facilisis sit amet, elit. Nullam
+vel erat tempus purus molestie suscipit. Vestibulum odio lorem,
+sollicitudin non, volutpat sit amet, tincidunt vel, nunc. Nulla quis
+ante vestibulum odio feugiat facilisis. Proin lorem nisl, viverra at,
+rhoncus quis, semper nec, mi. Donec euismod enim vitae velit. Nulla
+sed lectus. Vivamus placerat, lacus sed vehicula sagittis, arcu massa
+adipiscing lorem, bibendum luctus nisl tortor vitae leo.</p>
+
+<p>Etiam a mauris. Proin justo elit, accumsan sit amet, tempus et,
+blandit id, tellus. Morbi varius, nisi id iaculis aliquam, lacus
+ligula facilisis velit, ac pharetra ipsum augue a massa. Etiam rhoncus
+commodo orci. Mauris ullamcorper sagittis turpis. Nullam magna libero,
+sagittis sed, auctor faucibus, accumsan vitae, urna. Pellentesque
+volutpat. Aliquam sapien ipsum, eleifend nec, imperdiet vitae,
+consectetuer id, quam. Donec a urna. Suspendisse sit amet
+velit. Curabitur quis nisi id dui viverra ornare. Sed condimentum enim
+quis tortor. Ut condimentum, magna non tempus tincidunt, leo nibh
+molestie tellus, vitae convallis dolor ante sed ante. Nunc et
+metus. Phasellus ultricies. Fusce faucibus tortor sit amet mauris.</p>
+
+<p>Aliquam enim. Duis et diam. Praesent porta, mauris quis pellentesque
+volutpat, erat elit vulputate eros, vitae pulvinar augue velit sit
+amet sem. Fusce eu urna eu nisi condimentum posuere. Vivamus sed
+felis. Duis eget urna vitae eros interdum dignissim. Proin justo eros,
+eleifend in, porttitor in, malesuada non, neque. Etiam sed
+augue. Nulla sit amet magna. Lorem ipsum dolor sit amet, consectetuer
+adipiscing elit. Mauris facilisis. Curabitur massa magna, pulvinar a,
+nonummy eget, egestas vitae, mauris. Quisque vel elit sit amet lorem
+malesuada facilisis. Vestibulum porta, metus sit amet egestas
+interdum, urna justo euismod erat, id tristique urna leo quis
+nibh. Morbi non erat.</p>
+
+<p>Cras fringilla, nulla id egestas elementum, augue nunc iaculis nibh,
+ac adipiscing nibh justo id tortor. Donec vel orci a nisi ultricies
+aliquet. Nunc urna quam, adipiscing molestie, vehicula non,
+condimentum non, magna. Integer magna. Donec quam metus, pulvinar id,
+suscipit eget, euismod ac, orci. Nulla facilisi. Nullam nec
+mauris. Morbi in mi. Etiam urna lectus, pulvinar ac, sollicitudin eu,
+euismod ac, lectus. Fusce elit. Sed ultricies odio ac felis.</p>
+
+<h1>Cras iaculis. Nulla facilisi.</h1>
+<h2><a name="anchor2">Anchor 2</a></h2>
+<p><a href="#anchor1">link to anchor1</a></p>
+<p>Cras iaculis. Nulla facilisi. Fusce vitae arcu. Integer lectus mauris,
+ornare vel, accumsan eget, scelerisque vel, nunc. Maecenas justo urna,
+volutpat vel, vehicula vel, ullamcorper nec, odio. Suspendisse laoreet
+nisi sed erat. Cras convallis sollicitudin sapien. Phasellus ac erat
+eu mi rutrum rhoncus. Morbi et velit. Morbi odio nisi, pharetra eget,
+sollicitudin sed, aliquam at, nisl. Quisque euismod diam in
+sapien. Integer accumsan urna in risus.</p>
+
+<p>Proin sit amet nisl. Phasellus dui ipsum, laoreet a, pulvinar id,
+fringilla ut, libero. In hac habitasse platea dictumst. Maecenas mi
+magna, cursus sed, rutrum eget, molestie nec, dui. Suspendisse
+lacus. Vivamus nibh urna, accumsan sit amet, gravida sed, convallis a,
+leo. Cras sollicitudin orci sit amet eros. Pellentesque eu odio et
+velit tempor dignissim. Morbi vehicula malesuada enim. Pellentesque
+tincidunt, tellus ac fringilla tempor, justo libero interdum nunc, eu
+sollicitudin tortor augue nec tellus. Nullam eget leo quis tellus
+gravida faucibus. Nam gravida. Curabitur rhoncus egestas
+nunc. Curabitur mollis, nisi sed suscipit gravida, enim felis interdum
+justo, vel accumsan magna nunc ut libero. Ut fermentum. Fusce luctus,
+est sit amet feugiat lobortis, nisl eros bibendum libero, ut suscipit
+felis ligula in massa. Proin congue elit et nisi. Cras ac nisl. Nunc
+ullamcorper neque vel diam.</p>
+
+<h1>Ut pellentesque arcu ac lectus.</h1>
+<p>Sed ac lorem. Ut pellentesque arcu ac lectus. Cum sociis natoque
+penatibus et magnis dis parturient montes, nascetur ridiculus
+mus. Pellentesque ultrices metus sollicitudin pede. Donec fermentum
+est a velit fringilla mollis. Duis ligula. Fusce viverra laoreet
+odio. Suspendisse sit amet ligula. Maecenas nunc velit, sagittis eu,
+bibendum eu, placerat at, nibh. Praesent ut erat eget nisi gravida
+imperdiet. Quisque vitae sapien. Ut eros.</p>
+
+<p>Donec eros ligula, dignissim vel, ultricies id, mattis in, massa. Duis
+lobortis dui nec orci. Sed ullamcorper metus non massa. Aliquam eget
+mauris ac nulla elementum posuere. Sed porta, augue vitae rhoncus
+aliquet, felis quam eleifend est, vitae rutrum metus arcu vel
+lorem. Proin laoreet, mauris sit amet aliquet eleifend, nisl sem
+molestie nisi, eu varius eros ligula non erat. Integer ac
+sem. Suspendisse lectus. Aliquam erat volutpat. Fusce sit amet leo
+faucibus erat molestie ultrices. Maecenas lacinia lectus eget
+dui. Etiam porta porttitor ante. Phasellus sit amet lacus adipiscing
+enim mollis iaculis. Fusce congue, nulla a commodo aliquam, erat dui
+fermentum dui, pellentesque faucibus orci enim at mauris. Pellentesque
+a diam porta magna tempor posuere. Donec lorem.</p>
+
+<p>Sed viverra aliquam turpis. Aliquam lacus. Duis id massa. Nullam
+ante. Suspendisse condimentum. Donec adipiscing, felis vel semper
+sollicitudin, lacus justo pretium est, sed blandit pede risus eu
+ante. Praesent ante nulla, fringilla id, ultrices et, feugiat a,
+metus. Proin ac velit a metus suscipit fermentum. Integer aliquet. Sed
+sapien nulla, placerat at, rutrum at, condimentum quis, libero. In
+accumsan, tellus nec tincidunt malesuada, pede arcu commodo ipsum, ac
+mattis tortor urna vitae enim. Aenean nonummy, mauris eget commodo
+bibendum, augue sem ultrices nunc, eget rhoncus metus erat placerat
+lectus. Aliquam mollis lectus in justo. Vivamus iaculis lacus sit amet
+ligula. Etiam consectetuer convallis diam. Curabitur sollicitudin,
+felis eu vehicula scelerisque, nisl urna aliquam orci, sit amet
+laoreet mi turpis id ligula. Donec at enim non nulla adipiscing
+dapibus. Aenean nisl.</p>
+
+<p>Ut in lacus nec enim volutpat pellentesque. Integer euismod. In odio
+eros, malesuada in, mattis vel, tempor nec, sem. In libero tellus,
+varius vitae, bibendum in, elementum quis, nisl. Duis tortor. Etiam at
+justo. Pellentesque facilisis mauris non nunc. Praesent eros mi,
+dapibus eget, placerat ac, lobortis quis, sem. Nulla rhoncus
+turpis. Nulla vitae mi. Proin id massa. Nunc eros.</p>
+
+<h1>Aliquam molestie pulvinar ligula.</h1>
+<h2><a name="anchor3">Anchor 3</a></h2>
+<p><a href="#anchor2">link to anchor2</a></p>
+<p>Vestibulum dui risus, varius ut, semper et, consequat ultrices,
+felis. Pellentesque iaculis urna in velit. Ut pharetra. Nunc
+fringilla, nisi vitae fringilla placerat, enim justo semper erat,
+mollis feugiat leo neque eu sem. Vestibulum orci urna, suscipit a,
+accumsan nec, fringilla in, risus. Nullam ante. Nullam nec
+eros. Nullam varius. Nulla facilisi. In auctor libero in
+metus. Aliquam porttitor congue eros. Nulla facilisi. Mauris euismod
+turpis ut felis. Ut nunc nisl, cursus quis, eleifend at, viverra
+bibendum, lacus. Donec consequat lacus eu sapien. Fusce pulvinar
+lectus quis nunc. In hac habitasse platea dictumst.</p>
+
+<p>Aliquam molestie pulvinar ligula. Maecenas imperdiet, urna eget
+ultrices adipiscing, nibh ante elementum neque, id molestie massa quam
+ut nunc. Nullam porta. Phasellus a magna in sem volutpat
+viverra. Quisque aliquet nunc ac turpis. Mauris dolor enim, viverra
+rutrum, placerat et, laoreet et, justo. In id nulla. Donec
+erat. Phasellus nec mi sed velit mollis cursus. Vestibulum
+tincidunt. Praesent dui libero, facilisis eu, vulputate eget, aliquet
+nec, ipsum. Pellentesque in nisl in mauris pretium euismod.</p>
+
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/symbols.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/symbols.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/symbols.html	(revision 2000)
@@ -0,0 +1,1400 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
+   "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html lang=en>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>HTML 4.0 Entities for Symbols and Greek Letters</title>
+<link rev=Made href="mailto:liam@htmlhelp.com">
+<link rel=Start href="../index.html">
+<link rel=Prev href="latin1.html">
+<link rel=Next href="special.html">
+<style>
+body {
+  background: white;
+  color: black;
+  font-family: verdana;
+}
+
+h1 {
+  color: #c33;
+  background: none;
+  font-weight: bold;
+  text-align: center;
+}
+
+h2 {
+  color: #00008b;
+  background: none;
+  font-weight: bold;
+}
+
+h3 {
+  color: #006400;
+  background: none;
+  margin-left: 4%;
+  margin-right: 4%;
+  font-weight: bold;
+}
+
+h4 {
+  margin-left: 6%;
+  margin-right: 6%;
+  font-weight: bold;
+}
+
+h5 {
+  margin-left: 6%;
+  margin-right: 6%;
+  font-weight: bold;
+}
+
+ul, ol, dl, p {
+  margin-left: 6%;
+  margin-right: 6%;
+}
+
+ul ul, table ol, table ul, dl ol, dl ul {
+  margin-left: 1.2em;
+  margin-right: 1%;
+  padding-left: 0;
+}
+
+pre {
+  margin-left: 10%;
+  white-space: pre;
+}
+
+table caption {
+  font-size: larger;
+  font-weight: bolder;
+}
+
+table p, table dl, ol p, ul p, dl p, blockquote p, .note p, .note ul, .note ol, .note dl, li pre, dd pre {
+  margin-left: 0;
+  margin-right: 0;
+}
+
+p.top {
+  margin-left: 1%;
+  margin-right: 1%;
+}
+
+blockquote {
+  margin-left: 8%;
+  margin-right: 8%;
+  border: thin ridge #dc143c;
+}
+
+blockquote pre {
+  margin-left: 1%;
+  margin-right: 1%;
+}
+
+dt a {
+  font-weight: bold;
+  margin-top: .8em;
+}
+
+a:link {
+  color: #00f;
+  background: none;;
+}
+
+a:visited {
+  color: #800080;
+  background: none;;
+}
+
+a:active {
+  color: green;
+  background: #FFD700;
+}
+
+.html {
+  color: #000080;
+  background: none;
+}
+
+.css {
+  color: #800000;
+  background: none;
+}
+
+.javascript {
+  color: #008000;
+  background: none;
+}
+
+.example { margin-left: 10% }
+
+dfn {
+  font-style: normal;
+  font-weight: bolder;
+}
+
+var sub { font-style: normal }
+
+.note {
+  font-size: 85%;
+  margin-left: 10%;
+}
+
+.SMA {
+  color: fuchsia;
+  background: none;
+  font-family: Kids, "Comic Sans MS", Jester;
+}
+
+.oops {
+  font-family: Jester, "Comic Sans MS";
+}
+
+.author {
+  font-style: italic;
+}
+
+.copyright {
+  font-size: smaller;
+  text-align: right;
+  clear: right;
+}
+
+.toolbar {
+  text-align: center;
+}
+
+.toolbar IMG {
+  float: right;
+}
+
+.error {
+  color: #DC143C;
+  background: none;
+  text-decoration: none;
+}
+
+.warning {
+  color: #FF4500;
+  background: none;
+  text-decoration: none;
+}
+
+.error strong {
+  color: #DC143C;
+  background: #FFD700;
+  text-decoration: none;
+}
+
+.warning strong {
+  color: #FF4500;
+  background: #FFD700;
+  text-decoration: none;
+}
+
+.warning a:link, .warning a:visited, .warning a:active {
+  color: #FF4500;
+  background: none;
+  text-decoration: underline;
+}
+
+.error a:link, .error a:visited, .error a:active {
+  color: #DC143C;
+  background: none;
+  text-decoration: underline;
+}
+
+.error strong a:link, .error strong a:visited, .error strong a:active {
+  color: #DC143C;
+  background: #FFD700;
+}
+
+.warning strong a:link, .warning strong a:visited, .warning strong a:active {
+  color: #FF4500;
+  background: #FFD700;
+}
+
+colgroup.entity { text-align: center }
+
+.default { text-decoration: underline; font-style: normal }
+.required { font-weight: bold }
+td li.transitional, .elements li.transitional {
+  font-weight: lighter;
+  color: #696969;
+  background: none;
+}
+td li.frameset, .elements li.frameset {
+  font-weight: lighter;
+  color: #808080;
+  background: none;
+}
+
+.footer, .checkedDocument {
+  margin-top: 2em;
+  padding-top: 1em;
+  border-top: solid thin black;
+}
+
+strong.legal {
+  font-weight: normal;
+  text-transform: uppercase;
+}
+
+@media print {
+  input#toggler, .toolbar { display: none }
+}
+
+
+table { border-collapse: collapse; width: 100%; }
+td { border: 0.5pt solid black; }
+
+</style>
+<meta name="author" content="Liam Quinn">
+<meta name="description" content="A table of the HTML 4.0 entities for symbols and Greek letters.">
+<meta name="keywords" content="symbols, mathematical symbols, math, Greek letters, alpha, beta, Unicode, entities, characters, character set, HTML, HyperText Markup Language, HTML 4.0, HTML4, character entity reference, decimal, hexadecimal, hex, browser test, WDG, Web Design Group">
+<body>
+<h1>Entities for Symbols and Greek Letters</h1>
+<p>The following table gives the character entity reference, decimal character reference, and hexadecimal character reference for symbols and Greek letters, as well as the rendering of each in your browser. <a href="http://www.unicode.org/charts/">Glyphs</a> of the characters are available at the <a href="http://www.unicode.org/">Unicode Consortium</a>.</p>
+<p>Browser support for these entities is generally quite poor, but recent browsers support some of the character entity references and decimal character references.</p>
+<table>
+  <thead>
+    <tr>
+      <th scope=col rowspan=2>Character</th>
+      <th scope=col rowspan=2>Entity</th>
+      <th scope=col rowspan=2>Decimal</th>
+      <th scope=col rowspan=2>Hex</th>
+      <th scope=colgroup colspan=3>Rendering in Your Browser</th>
+    </tr>
+    <tr>
+      <th scope=col>Entity</th>
+      <th scope=col>Decimal</th>
+      <th scope=col>Hex</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td scope=row>Latin small f with hook = function = florin</td>
+      <td>&amp;fnof;</td>
+      <td>&amp;#402;</td>
+      <td>&amp;#x192;</td>
+      <td>&fnof;</td>
+      <td>&#402;</td>
+      <td>&#x192;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter alpha</td>
+      <td>&amp;Alpha;</td>
+      <td>&amp;#913;</td>
+      <td>&amp;#x391;</td>
+      <td>&Alpha;</td>
+      <td>&#913;</td>
+      <td>&#x391;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter beta</td>
+      <td>&amp;Beta;</td>
+      <td>&amp;#914;</td>
+      <td>&amp;#x392;</td>
+      <td>&Beta;</td>
+      <td>&#914;</td>
+      <td>&#x392;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter gamma</td>
+      <td>&amp;Gamma;</td>
+      <td>&amp;#915;</td>
+      <td>&amp;#x393;</td>
+      <td>&Gamma;</td>
+      <td>&#915;</td>
+      <td>&#x393;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter delta</td>
+      <td>&amp;Delta;</td>
+      <td>&amp;#916;</td>
+      <td>&amp;#x394;</td>
+      <td>&Delta;</td>
+      <td>&#916;</td>
+      <td>&#x394;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter epsilon</td>
+      <td>&amp;Epsilon;</td>
+      <td>&amp;#917;</td>
+      <td>&amp;#x395;</td>
+      <td>&Epsilon;</td>
+      <td>&#917;</td>
+      <td>&#x395;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter zeta</td>
+      <td>&amp;Zeta;</td>
+      <td>&amp;#918;</td>
+      <td>&amp;#x396;</td>
+      <td>&Zeta;</td>
+      <td>&#918;</td>
+      <td>&#x396;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter eta</td>
+      <td>&amp;Eta;</td>
+      <td>&amp;#919;</td>
+      <td>&amp;#x397;</td>
+      <td>&Eta;</td>
+      <td>&#919;</td>
+      <td>&#x397;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter theta</td>
+      <td>&amp;Theta;</td>
+      <td>&amp;#920;</td>
+      <td>&amp;#x398;</td>
+      <td>&Theta;</td>
+      <td>&#920;</td>
+      <td>&#x398;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter iota</td>
+      <td>&amp;Iota;</td>
+      <td>&amp;#921;</td>
+      <td>&amp;#x399;</td>
+      <td>&Iota;</td>
+      <td>&#921;</td>
+      <td>&#x399;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter kappa</td>
+      <td>&amp;Kappa;</td>
+      <td>&amp;#922;</td>
+      <td>&amp;#x39A;</td>
+      <td>&Kappa;</td>
+      <td>&#922;</td>
+      <td>&#x39A;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter lambda</td>
+      <td>&amp;Lambda;</td>
+      <td>&amp;#923;</td>
+      <td>&amp;#x39B;</td>
+      <td>&Lambda;</td>
+      <td>&#923;</td>
+      <td>&#x39B;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter mu</td>
+      <td>&amp;Mu;</td>
+      <td>&amp;#924;</td>
+      <td>&amp;#x39C;</td>
+      <td>&Mu;</td>
+      <td>&#924;</td>
+      <td>&#x39C;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter nu</td>
+      <td>&amp;Nu;</td>
+      <td>&amp;#925;</td>
+      <td>&amp;#x39D;</td>
+      <td>&Nu;</td>
+      <td>&#925;</td>
+      <td>&#x39D;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter xi</td>
+      <td>&amp;Xi;</td>
+      <td>&amp;#926;</td>
+      <td>&amp;#x39E;</td>
+      <td>&Xi;</td>
+      <td>&#926;</td>
+      <td>&#x39E;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter omicron</td>
+      <td>&amp;Omicron;</td>
+      <td>&amp;#927;</td>
+      <td>&amp;#x39F;</td>
+      <td>&Omicron;</td>
+      <td>&#927;</td>
+      <td>&#x39F;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter pi</td>
+      <td>&amp;Pi;</td>
+      <td>&amp;#928;</td>
+      <td>&amp;#x3A0;</td>
+      <td>&Pi;</td>
+      <td>&#928;</td>
+      <td>&#x3A0;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter rho</td>
+      <td>&amp;Rho;</td>
+      <td>&amp;#929;</td>
+      <td>&amp;#x3A1;</td>
+      <td>&Rho;</td>
+      <td>&#929;</td>
+      <td>&#x3A1;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter sigma</td>
+      <td>&amp;Sigma;</td>
+      <td>&amp;#931;</td>
+      <td>&amp;#x3A3;</td>
+      <td>&Sigma;</td>
+      <td>&#931;</td>
+      <td>&#x3A3;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter tau</td>
+      <td>&amp;Tau;</td>
+      <td>&amp;#932;</td>
+      <td>&amp;#x3A4;</td>
+      <td>&Tau;</td>
+      <td>&#932;</td>
+      <td>&#x3A4;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter upsilon</td>
+      <td>&amp;Upsilon;</td>
+      <td>&amp;#933;</td>
+      <td>&amp;#x3A5;</td>
+      <td>&Upsilon;</td>
+      <td>&#933;</td>
+      <td>&#x3A5;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter phi</td>
+      <td>&amp;Phi;</td>
+      <td>&amp;#934;</td>
+      <td>&amp;#x3A6;</td>
+      <td>&Phi;</td>
+      <td>&#934;</td>
+      <td>&#x3A6;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter chi</td>
+      <td>&amp;Chi;</td>
+      <td>&amp;#935;</td>
+      <td>&amp;#x3A7;</td>
+      <td>&Chi;</td>
+      <td>&#935;</td>
+      <td>&#x3A7;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter psi</td>
+      <td>&amp;Psi;</td>
+      <td>&amp;#936;</td>
+      <td>&amp;#x3A8;</td>
+      <td>&Psi;</td>
+      <td>&#936;</td>
+      <td>&#x3A8;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek capital letter omega</td>
+      <td>&amp;Omega;</td>
+      <td>&amp;#937;</td>
+      <td>&amp;#x3A9;</td>
+      <td>&Omega;</td>
+      <td>&#937;</td>
+      <td>&#x3A9;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter alpha</td>
+      <td>&amp;alpha;</td>
+      <td>&amp;#945;</td>
+      <td>&amp;#x3B1;</td>
+      <td>&alpha;</td>
+      <td>&#945;</td>
+      <td>&#x3B1;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter beta</td>
+      <td>&amp;beta;</td>
+      <td>&amp;#946;</td>
+      <td>&amp;#x3B2;</td>
+      <td>&beta;</td>
+      <td>&#946;</td>
+      <td>&#x3B2;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter gamma</td>
+      <td>&amp;gamma;</td>
+      <td>&amp;#947;</td>
+      <td>&amp;#x3B3;</td>
+      <td>&gamma;</td>
+      <td>&#947;</td>
+      <td>&#x3B3;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter delta</td>
+      <td>&amp;delta;</td>
+      <td>&amp;#948;</td>
+      <td>&amp;#x3B4;</td>
+      <td>&delta;</td>
+      <td>&#948;</td>
+      <td>&#x3B4;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter epsilon</td>
+      <td>&amp;epsilon;</td>
+      <td>&amp;#949;</td>
+      <td>&amp;#x3B5;</td>
+      <td>&epsilon;</td>
+      <td>&#949;</td>
+      <td>&#x3B5;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter zeta</td>
+      <td>&amp;zeta;</td>
+      <td>&amp;#950;</td>
+      <td>&amp;#x3B6;</td>
+      <td>&zeta;</td>
+      <td>&#950;</td>
+      <td>&#x3B6;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter eta</td>
+      <td>&amp;eta;</td>
+      <td>&amp;#951;</td>
+      <td>&amp;#x3B7;</td>
+      <td>&eta;</td>
+      <td>&#951;</td>
+      <td>&#x3B7;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter theta</td>
+      <td>&amp;theta;</td>
+      <td>&amp;#952;</td>
+      <td>&amp;#x3B8;</td>
+      <td>&theta;</td>
+      <td>&#952;</td>
+      <td>&#x3B8;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter iota</td>
+      <td>&amp;iota;</td>
+      <td>&amp;#953;</td>
+      <td>&amp;#x3B9;</td>
+      <td>&iota;</td>
+      <td>&#953;</td>
+      <td>&#x3B9;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter kappa</td>
+      <td>&amp;kappa;</td>
+      <td>&amp;#954;</td>
+      <td>&amp;#x3BA;</td>
+      <td>&kappa;</td>
+      <td>&#954;</td>
+      <td>&#x3BA;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter lambda</td>
+      <td>&amp;lambda;</td>
+      <td>&amp;#955;</td>
+      <td>&amp;#x3BB;</td>
+      <td>&lambda;</td>
+      <td>&#955;</td>
+      <td>&#x3BB;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter mu</td>
+      <td>&amp;mu;</td>
+      <td>&amp;#956;</td>
+      <td>&amp;#x3BC;</td>
+      <td>&mu;</td>
+      <td>&#956;</td>
+      <td>&#x3BC;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter nu</td>
+      <td>&amp;nu;</td>
+      <td>&amp;#957;</td>
+      <td>&amp;#x3BD;</td>
+      <td>&nu;</td>
+      <td>&#957;</td>
+      <td>&#x3BD;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter xi</td>
+      <td>&amp;xi;</td>
+      <td>&amp;#958;</td>
+      <td>&amp;#x3BE;</td>
+      <td>&xi;</td>
+      <td>&#958;</td>
+      <td>&#x3BE;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter omicron</td>
+      <td>&amp;omicron;</td>
+      <td>&amp;#959;</td>
+      <td>&amp;#x3BF;</td>
+      <td>&omicron;</td>
+      <td>&#959;</td>
+      <td>&#x3BF;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter pi</td>
+      <td>&amp;pi;</td>
+      <td>&amp;#960;</td>
+      <td>&amp;#x3C0;</td>
+      <td>&pi;</td>
+      <td>&#960;</td>
+      <td>&#x3C0;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter rho</td>
+      <td>&amp;rho;</td>
+      <td>&amp;#961;</td>
+      <td>&amp;#x3C1;</td>
+      <td>&rho;</td>
+      <td>&#961;</td>
+      <td>&#x3C1;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter final sigma</td>
+      <td>&amp;sigmaf;</td>
+      <td>&amp;#962;</td>
+      <td>&amp;#x3C2;</td>
+      <td>&sigmaf;</td>
+      <td>&#962;</td>
+      <td>&#x3C2;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter sigma</td>
+      <td>&amp;sigma;</td>
+      <td>&amp;#963;</td>
+      <td>&amp;#x3C3;</td>
+      <td>&sigma;</td>
+      <td>&#963;</td>
+      <td>&#x3C3;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter tau</td>
+      <td>&amp;tau;</td>
+      <td>&amp;#964;</td>
+      <td>&amp;#x3C4;</td>
+      <td>&tau;</td>
+      <td>&#964;</td>
+      <td>&#x3C4;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter upsilon</td>
+      <td>&amp;upsilon;</td>
+      <td>&amp;#965;</td>
+      <td>&amp;#x3C5;</td>
+      <td>&upsilon;</td>
+      <td>&#965;</td>
+      <td>&#x3C5;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter phi</td>
+      <td>&amp;phi;</td>
+      <td>&amp;#966;</td>
+      <td>&amp;#x3C6;</td>
+      <td>&phi;</td>
+      <td>&#966;</td>
+      <td>&#x3C6;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter chi</td>
+      <td>&amp;chi;</td>
+      <td>&amp;#967;</td>
+      <td>&amp;#x3C7;</td>
+      <td>&chi;</td>
+      <td>&#967;</td>
+      <td>&#x3C7;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter psi</td>
+      <td>&amp;psi;</td>
+      <td>&amp;#968;</td>
+      <td>&amp;#x3C8;</td>
+      <td>&psi;</td>
+      <td>&#968;</td>
+      <td>&#x3C8;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter omega</td>
+      <td>&amp;omega;</td>
+      <td>&amp;#969;</td>
+      <td>&amp;#x3C9;</td>
+      <td>&omega;</td>
+      <td>&#969;</td>
+      <td>&#x3C9;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek small letter theta symbol</td>
+      <td>&amp;thetasym;</td>
+      <td>&amp;#977;</td>
+      <td>&amp;#x3D1;</td>
+      <td>&thetasym;</td>
+      <td>&#977;</td>
+      <td>&#x3D1;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek upsilon with hook symbol</td>
+      <td>&amp;upsih;</td>
+      <td>&amp;#978;</td>
+      <td>&amp;#x3D2;</td>
+      <td>&upsih;</td>
+      <td>&#978;</td>
+      <td>&#x3D2;</td>
+    </tr>
+    <tr>
+      <td scope=row>Greek pi symbol</td>
+      <td>&amp;piv;</td>
+      <td>&amp;#982;</td>
+      <td>&amp;#x3D6;</td>
+      <td>&piv;</td>
+      <td>&#982;</td>
+      <td>&#x3D6;</td>
+    </tr>
+    <tr>
+      <td scope=row>bullet = black small circle</td>
+      <td>&amp;bull;</td>
+      <td>&amp;#8226;</td>
+      <td>&amp;#x2022;</td>
+      <td>&bull;</td>
+      <td>&#8226;</td>
+      <td>&#x2022;</td>
+    </tr>
+    <tr>
+      <td scope=row>horizontal ellipsis = three dot leader</td>
+      <td>&amp;hellip;</td>
+      <td>&amp;#8230;</td>
+      <td>&amp;#x2026;</td>
+      <td>&hellip;</td>
+      <td>&#8230;</td>
+      <td>&#x2026;</td>
+    </tr>
+    <tr>
+      <td scope=row>prime = minutes = feet</td>
+      <td>&amp;prime;</td>
+      <td>&amp;#8242;</td>
+      <td>&amp;#x2032;</td>
+      <td>&prime;</td>
+      <td>&#8242;</td>
+      <td>&#x2032;</td>
+    </tr>
+    <tr>
+      <td scope=row>double prime = seconds = inches</td>
+      <td>&amp;Prime;</td>
+      <td>&amp;#8243;</td>
+      <td>&amp;#x2033;</td>
+      <td>&Prime;</td>
+      <td>&#8243;</td>
+      <td>&#x2033;</td>
+    </tr>
+    <tr>
+      <td scope=row>overline = spacing overscore</td>
+      <td>&amp;oline;</td>
+      <td>&amp;#8254;</td>
+      <td>&amp;#x203E;</td>
+      <td>&oline;</td>
+      <td>&#8254;</td>
+      <td>&#x203E;</td>
+    </tr>
+    <tr>
+      <td scope=row>fraction slash</td>
+      <td>&amp;frasl;</td>
+      <td>&amp;#8260;</td>
+      <td>&amp;#x2044;</td>
+      <td>&frasl;</td>
+      <td>&#8260;</td>
+      <td>&#x2044;</td>
+    </tr>
+    <tr>
+      <td scope=row>script capital P = power set = Weierstrass p</td>
+      <td>&amp;weierp;</td>
+      <td>&amp;#8472;</td>
+      <td>&amp;#x2118;</td>
+      <td>&weierp;</td>
+      <td>&#8472;</td>
+      <td>&#x2118;</td>
+    </tr>
+    <tr>
+      <td scope=row>blackletter capital I = imaginary part</td>
+      <td>&amp;image;</td>
+      <td>&amp;#8465;</td>
+      <td>&amp;#x2111;</td>
+      <td>&image;</td>
+      <td>&#8465;</td>
+      <td>&#x2111;</td>
+    </tr>
+    <tr>
+      <td scope=row>blackletter capital R = real part symbol</td>
+      <td>&amp;real;</td>
+      <td>&amp;#8476;</td>
+      <td>&amp;#x211C;</td>
+      <td>&real;</td>
+      <td>&#8476;</td>
+      <td>&#x211C;</td>
+    </tr>
+    <tr>
+      <td scope=row>trade mark sign</td>
+      <td>&amp;trade;</td>
+      <td>&amp;#8482;</td>
+      <td>&amp;#x2122;</td>
+      <td>&trade;</td>
+      <td>&#8482;</td>
+      <td>&#x2122;</td>
+    </tr>
+    <tr>
+      <td scope=row>alef symbol = first transfinite cardinal</td>
+      <td>&amp;alefsym;</td>
+      <td>&amp;#8501;</td>
+      <td>&amp;#x2135;</td>
+      <td>&alefsym;</td>
+      <td>&#8501;</td>
+      <td>&#x2135;</td>
+    </tr>
+    <tr>
+      <td scope=row>leftwards arrow</td>
+      <td>&amp;larr;</td>
+      <td>&amp;#8592;</td>
+      <td>&amp;#x2190;</td>
+      <td>&larr;</td>
+      <td>&#8592;</td>
+      <td>&#x2190;</td>
+    </tr>
+    <tr>
+      <td scope=row>upwards arrow</td>
+      <td>&amp;uarr;</td>
+      <td>&amp;#8593;</td>
+      <td>&amp;#x2191;</td>
+      <td>&uarr;</td>
+      <td>&#8593;</td>
+      <td>&#x2191;</td>
+    </tr>
+    <tr>
+      <td scope=row>rightwards arrow</td>
+      <td>&amp;rarr;</td>
+      <td>&amp;#8594;</td>
+      <td>&amp;#x2192;</td>
+      <td>&rarr;</td>
+      <td>&#8594;</td>
+      <td>&#x2192;</td>
+    </tr>
+    <tr>
+      <td scope=row>downwards arrow</td>
+      <td>&amp;darr;</td>
+      <td>&amp;#8595;</td>
+      <td>&amp;#x2193;</td>
+      <td>&darr;</td>
+      <td>&#8595;</td>
+      <td>&#x2193;</td>
+    </tr>
+    <tr>
+      <td scope=row>left right arrow</td>
+      <td>&amp;harr;</td>
+      <td>&amp;#8596;</td>
+      <td>&amp;#x2194;</td>
+      <td>&harr;</td>
+      <td>&#8596;</td>
+      <td>&#x2194;</td>
+    </tr>
+    <tr>
+      <td scope=row>downwards arrow with corner leftwards = carriage return</td>
+      <td>&amp;crarr;</td>
+      <td>&amp;#8629;</td>
+      <td>&amp;#x21B5;</td>
+      <td>&crarr;</td>
+      <td>&#8629;</td>
+      <td>&#x21B5;</td>
+    </tr>
+    <tr>
+      <td scope=row>leftwards double arrow</td>
+      <td>&amp;lArr;</td>
+      <td>&amp;#8656;</td>
+      <td>&amp;#x21D0;</td>
+      <td>&lArr;</td>
+      <td>&#8656;</td>
+      <td>&#x21D0;</td>
+    </tr>
+    <tr>
+      <td scope=row>upwards double arrow</td>
+      <td>&amp;uArr;</td>
+      <td>&amp;#8657;</td>
+      <td>&amp;#x21D1;</td>
+      <td>&uArr;</td>
+      <td>&#8657;</td>
+      <td>&#x21D1;</td>
+    </tr>
+    <tr>
+      <td scope=row>rightwards double arrow</td>
+      <td>&amp;rArr;</td>
+      <td>&amp;#8658;</td>
+      <td>&amp;#x21D2;</td>
+      <td>&rArr;</td>
+      <td>&#8658;</td>
+      <td>&#x21D2;</td>
+    </tr>
+    <tr>
+      <td scope=row>downwards double arrow</td>
+      <td>&amp;dArr;</td>
+      <td>&amp;#8659;</td>
+      <td>&amp;#x21D3;</td>
+      <td>&dArr;</td>
+      <td>&#8659;</td>
+      <td>&#x21D3;</td>
+    </tr>
+    <tr>
+      <td scope=row>left right double arrow</td>
+      <td>&amp;hArr;</td>
+      <td>&amp;#8660;</td>
+      <td>&amp;#x21D4;</td>
+      <td>&hArr;</td>
+      <td>&#8660;</td>
+      <td>&#x21D4;</td>
+    </tr>
+    <tr>
+      <td scope=row>for all</td>
+      <td>&amp;forall;</td>
+      <td>&amp;#8704;</td>
+      <td>&amp;#x2200;</td>
+      <td>&forall;</td>
+      <td>&#8704;</td>
+      <td>&#x2200;</td>
+    </tr>
+    <tr>
+      <td scope=row>partial differential</td>
+      <td>&amp;part;</td>
+      <td>&amp;#8706;</td>
+      <td>&amp;#x2202;</td>
+      <td>&part;</td>
+      <td>&#8706;</td>
+      <td>&#x2202;</td>
+    </tr>
+    <tr>
+      <td scope=row>there exists</td>
+      <td>&amp;exist;</td>
+      <td>&amp;#8707;</td>
+      <td>&amp;#x2203;</td>
+      <td>&exist;</td>
+      <td>&#8707;</td>
+      <td>&#x2203;</td>
+    </tr>
+    <tr>
+      <td scope=row>empty set = null set = diameter</td>
+      <td>&amp;empty;</td>
+      <td>&amp;#8709;</td>
+      <td>&amp;#x2205;</td>
+      <td>&empty;</td>
+      <td>&#8709;</td>
+      <td>&#x2205;</td>
+    </tr>
+    <tr>
+      <td scope=row>nabla = backward difference</td>
+      <td>&amp;nabla;</td>
+      <td>&amp;#8711;</td>
+      <td>&amp;#x2207;</td>
+      <td>&nabla;</td>
+      <td>&#8711;</td>
+      <td>&#x2207;</td>
+    </tr>
+    <tr>
+      <td scope=row>element of</td>
+      <td>&amp;isin;</td>
+      <td>&amp;#8712;</td>
+      <td>&amp;#x2208;</td>
+      <td>&isin;</td>
+      <td>&#8712;</td>
+      <td>&#x2208;</td>
+    </tr>
+    <tr>
+      <td scope=row>not an element of</td>
+      <td>&amp;notin;</td>
+      <td>&amp;#8713;</td>
+      <td>&amp;#x2209;</td>
+      <td>&notin;</td>
+      <td>&#8713;</td>
+      <td>&#x2209;</td>
+    </tr>
+    <tr>
+      <td scope=row>contains as member</td>
+      <td>&amp;ni;</td>
+      <td>&amp;#8715;</td>
+      <td>&amp;#x220B;</td>
+      <td>&ni;</td>
+      <td>&#8715;</td>
+      <td>&#x220B;</td>
+    </tr>
+    <tr>
+      <td scope=row>n-ary product = product sign</td>
+      <td>&amp;prod;</td>
+      <td>&amp;#8719;</td>
+      <td>&amp;#x220F;</td>
+      <td>&prod;</td>
+      <td>&#8719;</td>
+      <td>&#x220F;</td>
+    </tr>
+    <tr>
+      <td scope=row>n-ary sumation</td>
+      <td>&amp;sum;</td>
+      <td>&amp;#8721;</td>
+      <td>&amp;#x2211;</td>
+      <td>&sum;</td>
+      <td>&#8721;</td>
+      <td>&#x2211;</td>
+    </tr>
+    <tr>
+      <td scope=row>minus sign</td>
+      <td>&amp;minus;</td>
+      <td>&amp;#8722;</td>
+      <td>&amp;#x2212;</td>
+      <td>&minus;</td>
+      <td>&#8722;</td>
+      <td>&#x2212;</td>
+    </tr>
+    <tr>
+      <td scope=row>asterisk operator</td>
+      <td>&amp;lowast;</td>
+      <td>&amp;#8727;</td>
+      <td>&amp;#x2217;</td>
+      <td>&lowast;</td>
+      <td>&#8727;</td>
+      <td>&#x2217;</td>
+    </tr>
+    <tr>
+      <td scope=row>square root = radical sign</td>
+      <td>&amp;radic;</td>
+      <td>&amp;#8730;</td>
+      <td>&amp;#x221A;</td>
+      <td>&radic;</td>
+      <td>&#8730;</td>
+      <td>&#x221A;</td>
+    </tr>
+    <tr>
+      <td scope=row>proportional to</td>
+      <td>&amp;prop;</td>
+      <td>&amp;#8733;</td>
+      <td>&amp;#x221D;</td>
+      <td>&prop;</td>
+      <td>&#8733;</td>
+      <td>&#x221D;</td>
+    </tr>
+    <tr>
+      <td scope=row>infinity</td>
+      <td>&amp;infin;</td>
+      <td>&amp;#8734;</td>
+      <td>&amp;#x221E;</td>
+      <td>&infin;</td>
+      <td>&#8734;</td>
+      <td>&#x221E;</td>
+    </tr>
+    <tr>
+      <td scope=row>angle</td>
+      <td>&amp;ang;</td>
+      <td>&amp;#8736;</td>
+      <td>&amp;#x2220;</td>
+      <td>&ang;</td>
+      <td>&#8736;</td>
+      <td>&#x2220;</td>
+    </tr>
+    <tr>
+      <td scope=row>logical and = wedge</td>
+      <td>&amp;and;</td>
+      <td>&amp;#8743;</td>
+      <td>&amp;#x2227;</td>
+      <td>&and;</td>
+      <td>&#8743;</td>
+      <td>&#x2227;</td>
+    </tr>
+    <tr>
+      <td scope=row>logical or = vee</td>
+      <td>&amp;or;</td>
+      <td>&amp;#8744;</td>
+      <td>&amp;#x2228;</td>
+      <td>&or;</td>
+      <td>&#8744;</td>
+      <td>&#x2228;</td>
+    </tr>
+    <tr>
+      <td scope=row>intersection = cap</td>
+      <td>&amp;cap;</td>
+      <td>&amp;#8745;</td>
+      <td>&amp;#x2229;</td>
+      <td>&cap;</td>
+      <td>&#8745;</td>
+      <td>&#x2229;</td>
+    </tr>
+    <tr>
+      <td scope=row>union = cup</td>
+      <td>&amp;cup;</td>
+      <td>&amp;#8746;</td>
+      <td>&amp;#x222A;</td>
+      <td>&cup;</td>
+      <td>&#8746;</td>
+      <td>&#x222A;</td>
+    </tr>
+    <tr>
+      <td scope=row>integral</td>
+      <td>&amp;int;</td>
+      <td>&amp;#8747;</td>
+      <td>&amp;#x222B;</td>
+      <td>&int;</td>
+      <td>&#8747;</td>
+      <td>&#x222B;</td>
+    </tr>
+    <tr>
+      <td scope=row>therefore</td>
+      <td>&amp;there4;</td>
+      <td>&amp;#8756;</td>
+      <td>&amp;#x2234;</td>
+      <td>&there4;</td>
+      <td>&#8756;</td>
+      <td>&#x2234;</td>
+    </tr>
+    <tr>
+      <td scope=row>tilde operator = varies with = similar to</td>
+      <td>&amp;sim;</td>
+      <td>&amp;#8764;</td>
+      <td>&amp;#x223C;</td>
+      <td>&sim;</td>
+      <td>&#8764;</td>
+      <td>&#x223C;</td>
+    </tr>
+    <tr>
+      <td scope=row>approximately equal to</td>
+      <td>&amp;cong;</td>
+      <td>&amp;#8773;</td>
+      <td>&amp;#x2245;</td>
+      <td>&cong;</td>
+      <td>&#8773;</td>
+      <td>&#x2245;</td>
+    </tr>
+    <tr>
+      <td scope=row>almost equal to = asymptotic to</td>
+      <td>&amp;asymp;</td>
+      <td>&amp;#8776;</td>
+      <td>&amp;#x2248;</td>
+      <td>&asymp;</td>
+      <td>&#8776;</td>
+      <td>&#x2248;</td>
+    </tr>
+    <tr>
+      <td scope=row>not equal to</td>
+      <td>&amp;ne;</td>
+      <td>&amp;#8800;</td>
+      <td>&amp;#x2260;</td>
+      <td>&ne;</td>
+      <td>&#8800;</td>
+      <td>&#x2260;</td>
+    </tr>
+    <tr>
+      <td scope=row>identical to</td>
+      <td>&amp;equiv;</td>
+      <td>&amp;#8801;</td>
+      <td>&amp;#x2261;</td>
+      <td>&equiv;</td>
+      <td>&#8801;</td>
+      <td>&#x2261;</td>
+    </tr>
+    <tr>
+      <td scope=row>less-than or equal to</td>
+      <td>&amp;le;</td>
+      <td>&amp;#8804;</td>
+      <td>&amp;#x2264;</td>
+      <td>&le;</td>
+      <td>&#8804;</td>
+      <td>&#x2264;</td>
+    </tr>
+    <tr>
+      <td scope=row>greater-than or equal to</td>
+      <td>&amp;ge;</td>
+      <td>&amp;#8805;</td>
+      <td>&amp;#x2265;</td>
+      <td>&ge;</td>
+      <td>&#8805;</td>
+      <td>&#x2265;</td>
+    </tr>
+    <tr>
+      <td scope=row>subset of</td>
+      <td>&amp;sub;</td>
+      <td>&amp;#8834;</td>
+      <td>&amp;#x2282;</td>
+      <td>&sub;</td>
+      <td>&#8834;</td>
+      <td>&#x2282;</td>
+    </tr>
+    <tr>
+      <td scope=row>superset of</td>
+      <td>&amp;sup;</td>
+      <td>&amp;#8835;</td>
+      <td>&amp;#x2283;</td>
+      <td>&sup;</td>
+      <td>&#8835;</td>
+      <td>&#x2283;</td>
+    </tr>
+    <tr>
+      <td scope=row>not a subset of</td>
+      <td>&amp;nsub;</td>
+      <td>&amp;#8836;</td>
+      <td>&amp;#x2284;</td>
+      <td>&nsub;</td>
+      <td>&#8836;</td>
+      <td>&#x2284;</td>
+    </tr>
+    <tr>
+      <td scope=row>subset of or equal to</td>
+      <td>&amp;sube;</td>
+      <td>&amp;#8838;</td>
+      <td>&amp;#x2286;</td>
+      <td>&sube;</td>
+      <td>&#8838;</td>
+      <td>&#x2286;</td>
+    </tr>
+    <tr>
+      <td scope=row>superset of or equal to</td>
+      <td>&amp;supe;</td>
+      <td>&amp;#8839;</td>
+      <td>&amp;#x2287;</td>
+      <td>&supe;</td>
+      <td>&#8839;</td>
+      <td>&#x2287;</td>
+    </tr>
+    <tr>
+      <td scope=row>circled plus = direct sum</td>
+      <td>&amp;oplus;</td>
+      <td>&amp;#8853;</td>
+      <td>&amp;#x2295;</td>
+      <td>&oplus;</td>
+      <td>&#8853;</td>
+      <td>&#x2295;</td>
+    </tr>
+    <tr>
+      <td scope=row>circled times = vector product</td>
+      <td>&amp;otimes;</td>
+      <td>&amp;#8855;</td>
+      <td>&amp;#x2297;</td>
+      <td>&otimes;</td>
+      <td>&#8855;</td>
+      <td>&#x2297;</td>
+    </tr>
+    <tr>
+      <td scope=row>up tack = orthogonal to = perpendicular</td>
+      <td>&amp;perp;</td>
+      <td>&amp;#8869;</td>
+      <td>&amp;#x22A5;</td>
+      <td>&perp;</td>
+      <td>&#8869;</td>
+      <td>&#x22A5;</td>
+    </tr>
+    <tr>
+      <td scope=row>dot operator</td>
+      <td>&amp;sdot;</td>
+      <td>&amp;#8901;</td>
+      <td>&amp;#x22C5;</td>
+      <td>&sdot;</td>
+      <td>&#8901;</td>
+      <td>&#x22C5;</td>
+    </tr>
+    <tr>
+      <td scope=row>left ceiling = APL upstile</td>
+      <td>&amp;lceil;</td>
+      <td>&amp;#8968;</td>
+      <td>&amp;#x2308;</td>
+      <td>&lceil;</td>
+      <td>&#8968;</td>
+      <td>&#x2308;</td>
+    </tr>
+    <tr>
+      <td scope=row>right ceiling</td>
+      <td>&amp;rceil;</td>
+      <td>&amp;#8969;</td>
+      <td>&amp;#x2309;</td>
+      <td>&rceil;</td>
+      <td>&#8969;</td>
+      <td>&#x2309;</td>
+    </tr>
+    <tr>
+      <td scope=row>left floor = APL downstile</td>
+      <td>&amp;lfloor;</td>
+      <td>&amp;#8970;</td>
+      <td>&amp;#x230A;</td>
+      <td>&lfloor;</td>
+      <td>&#8970;</td>
+      <td>&#x230A;</td>
+    </tr>
+    <tr>
+      <td scope=row>right floor</td>
+      <td>&amp;rfloor;</td>
+      <td>&amp;#8971;</td>
+      <td>&amp;#x230B;</td>
+      <td>&rfloor;</td>
+      <td>&#8971;</td>
+      <td>&#x230B;</td>
+    </tr>
+    <tr>
+      <td scope=row>left-pointing angle bracket = bra</td>
+      <td>&amp;lang;</td>
+      <td>&amp;#9001;</td>
+      <td>&amp;#x2329;</td>
+      <td>&lang;</td>
+      <td>&#9001;</td>
+      <td>&#x2329;</td>
+    </tr>
+    <tr>
+      <td scope=row>right-pointing angle bracket = ket</td>
+      <td>&amp;rang;</td>
+      <td>&amp;#9002;</td>
+      <td>&amp;#x232A;</td>
+      <td>&rang;</td>
+      <td>&#9002;</td>
+      <td>&#x232A;</td>
+    </tr>
+    <tr>
+      <td scope=row>lozenge</td>
+      <td>&amp;loz;</td>
+      <td>&amp;#9674;</td>
+      <td>&amp;#x25CA;</td>
+      <td>&loz;</td>
+      <td>&#9674;</td>
+      <td>&#x25CA;</td>
+    </tr>
+    <tr>
+      <td scope=row>black spade suit</td>
+      <td>&amp;spades;</td>
+      <td>&amp;#9824;</td>
+      <td>&amp;#x2660;</td>
+      <td>&spades;</td>
+      <td>&#9824;</td>
+      <td>&#x2660;</td>
+    </tr>
+    <tr>
+      <td scope=row>black club suit = shamrock</td>
+      <td>&amp;clubs;</td>
+      <td>&amp;#9827;</td>
+      <td>&amp;#x2663;</td>
+      <td>&clubs;</td>
+      <td>&#9827;</td>
+      <td>&#x2663;</td>
+    </tr>
+    <tr>
+      <td scope=row>black heart suit = valentine</td>
+      <td>&amp;hearts;</td>
+      <td>&amp;#9829;</td>
+      <td>&amp;#x2665;</td>
+      <td>&hearts;</td>
+      <td>&#9829;</td>
+      <td>&#x2665;</td>
+    </tr>
+    <tr>
+      <td scope=row>black diamond suit</td>
+      <td>&amp;diams;</td>
+      <td>&amp;#9830;</td>
+      <td>&amp;#x2666;</td>
+      <td>&diams;</td>
+      <td>&#9830;</td>
+      <td>&#x2666;</td>
+    </tr>
+  </tbody>
+</table>
+
+<div class=footer>
+<address>Maintained by <a href="http://www.htmlhelp.com/%7Eliam/">Liam Quinn</a> &lt;<a href="mailto:liam@htmlhelp.com">liam@htmlhelp.com</a>&gt;</address>
+<p class=toolbar><a href="../index.html" rel=Start>HTML&#160;4.0&#160;Reference</a>&#160;~ <a href="latin1.html" rel=Prev>Latin-1&#160;Characters</a>&#160;~ <a href="special.html" rel=Next>Other&#160;Special&#160;Characters</a></p>
+<p class=copyright>Copyright &copy; 1998 by <a href="http://www.htmlhelp.com/%7Eliam/">Liam Quinn</a>. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at <a href="http://www.opencontent.org/openpub/">http://www.opencontent.org/openpub/</a>).</p>
+<p class=copyright>Modfications made by Benj Carson <a>benjcarson@digitaljunkies.ca</a> for dompdf, Jan 5, 2006.</p>
+</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/long_table.php
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/long_table.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/long_table.php	(revision 2000)
@@ -0,0 +1,43 @@
+<html>
+<style>
+table { margin: auto; }
+td {
+  font-size: 0.8em;
+  padding: 4pt;
+  text-align: center;
+  font-family: sans-serif;
+}
+</style>
+<body>
+<table>
+<thead>
+<tr>
+<td colspan="20">Header</td>
+</tr>
+</thead>
+<tfoot>
+<tr>
+<td colspan="20">Footer</td>
+</tr>
+</tfoot>
+<?php
+$i_max = 40;
+$j_max = 20;
+
+for ( $i = 1; $i <= $i_max; $i++): ?>
+<tr>
+<?php
+for ( $j = 1; $j <= $j_max; $j++) {
+  $r = (int)(255*$i / $i_max);
+  $b = (int)(255*$j / $j_max);
+  $g = (int)(255*($i + $j)/($i_max + $j_max));
+  $c = "black;";
+  $bg = "rgb($r,$g,$b)";
+  echo "<td style=\"color: $c; background-color: $bg;\">" . ($i * $j) . "</td>\n";
+}
+?>
+</tr>
+<?php endfor; ?>
+</table>
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/image_variants.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/image_variants.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/image_variants.html	(revision 2000)
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+<style>
+body {
+  color: #7d7a7a;
+  font-family: sans-serif;
+}
+div.bgimages a {
+  padding-left:20px;
+  background:url(images/pdf.png) no-repeat yellow;
+}
+div.bgimages ul {
+  text-align: left;
+  line-height:170%;
+}
+</style>
+</head>
+
+<body>
+<div style="text-align: center;">
+
+<h2> 40% of box width:</h2>
+<div style="width:360pt; border:1pt solid #7d7a7a">
+<img style="width:40%;" src="images/dompdf_simple.png"/>
+</div>
+
+<h2>multiple identical images jpg:</h2>
+<img src="images/goldengate.jpg" width="204" height="272"/>
+<img src="images/goldengate.jpg" width="204" height="272"/>
+<img src="images/goldengate.jpg" width="204" height="272"/>
+
+<h2>multiple identical images gif (will be recoded to png by dompdf):</h2>
+<img src="images/what_ordered.gif" width="560" height="272"/>
+<img src="images/what_ordered.gif" width="560" height="272"/>
+<img src="images/what_ordered.gif" width="560" height="272"/>
+
+<h2>multiple identical images png:</h2>
+<img src="images/dompdf_simple.png" width="200" height="76"/>
+<img src="images/dompdf_simple.png" width="200" height="76"/>
+<img src="images/dompdf_simple.png" width="200" height="76"/>
+
+<h2>local png image with alpha channel:</h2>
+<img src="images/dokuwiki-128.png" width="128" height="128"/>
+
+<h2 style="color:red;">Attention!</h2>
+
+<p style="color:red;">For external images to work, the following configuration is required:</p>
+<pre style="color:red;">dompdf_config.inc.php :</pre>
+
+<pre style="color:red;">define("DOMPDF_ENABLE_REMOTE", true);</pre>
+
+<h2>external png Image with alpha channel:</h2>
+<img src="http://www.dokuwiki.org/lib/exe/fetch.php?media=wiki:dokuwiki-128.png" width="128" height="128" />
+
+<h2>external image, dynamically created with id in url parameter at end of parameter(.jpg):</h2>
+<img src="http://www.dokuwiki.org/lib/exe/fetch.php?media=example:sunset.jpg" width="500" height="375" />
+
+<h2>external image, dynamically created with id in url parameter not at end of parameter (.jpg):</h2>
+<img src="http://www.dokuwiki.org/lib/exe/fetch.php?media=example:sunset.jpg&w=100" width="100" height="75" />
+
+<h2>external Image without file extension (.gif):</h2>
+<img width="82" height="233" src="http://www.taz.de/fileadmin/templates/neu/images/logo" />
+
+<h2><a name="bgimages">Background images</a></h2>
+<div class="bgimages">
+<ul>
+<li><a href="bgimages">no-repeat position:default</a></li>
+<li><a href="bgimages" style="background-position:left center;">no-repeat position:left-center</a></li>
+<li><a href="bgimages" style="background-position:left bottom;">no-repeat position:left-bottom</a></li>
+<li><a href="bgimages" style="background-position:right bottom;">no-repeat position:right-bottom</a></li>
+<li><a href="bgimages" style="background-position:center center;">no-repeat position:center-center</a></li>
+<li><a href="bgimages" style="background-position:50% 50%;">no-repeat position:50%-50%</a></li>
+<li><a href="bgimages" style="background-position:4px 8px;">no-repeat position:4px-8px</a></li>
+<li><a href="bgimages" style="background-position:-4px -8px;">no-repeat position:-4px--8px</a></li>
+<li><a href="bgimages" style="background-position:32px 0px;">no-repeat position:32px-0px</a></li>
+<li><a href="bgimages" style="background-position:0px 8px;">no-repeat position:0px-8px</a></li>
+</ul>
+<ul>
+<li><a href="bgimages" style="background-repeat:repeat-y;">repeat-y position:default</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-y; background-position:left center;">repeat-y position:left-center</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-y; background-position:left bottom;">repeat-y position:left-bottom</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-y; background-position:right bottom;">repeat-y position:right-bottom</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-y; background-position:center center;">repeat-y position:center-center</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-y; background-position:50% 50%;">repeat-y position:50%-50%</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-y; background-position:4px 8px;">repeat-y position:4px-8px</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-y; background-position:-4px -8px;">repeat-y position:-4px--8px</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-y; background-position:32px 0px;">repeat-y position:32px-0px</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-y; background-position:0px 8px;">repeat-y position:0px-8px</a></li>
+</ul>
+<ul>
+<li><a href="bgimages" style="background-repeat:repeat-x;">repeat-x position:default</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-x; background-position:left center;">repeat-x position:left-center</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-x; background-position:left bottom;">repeat-x position:left-bottom</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-x; background-position:right bottom;">repeat-x position:right-bottom</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-x; background-position:center center;">repeat-x position:center-center</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-x; background-position:50% 50%;">repeat-x position:50%-50%</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-x; background-position:4px 8px;">repeat-x position:4px-8px</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-x; background-position:-4px -8px;">repeat-x position:-4px--8px</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-x; background-position:32px 0px;">repeat-x position:32px-0px</a></li>
+<li><a href="bgimages" style="background-repeat:repeat-x; background-position:0px 8px;">repeat-x position:0px-8px</a></li>
+</ul>
+<ul>
+<li><a href="bgimages" style="background-repeat:repeat;">repeat position:default</a></li>
+<li><a href="bgimages" style="background-repeat:repeat; background-position:left center;">repeat position:left-center</a></li>
+<li><a href="bgimages" style="background-repeat:repeat; background-position:left bottom;">repeat position:left-bottom</a></li>
+<li><a href="bgimages" style="background-repeat:repeat; background-position:right bottom;">repeat position:right-bottom</a></li>
+<li><a href="bgimages" style="background-repeat:repeat; background-position:center center;">repeat position:center-center</a></li>
+<li><a href="bgimages" style="background-repeat:repeat; background-position:50% 50%;">repeat position:50%-50%</a></li>
+<li><a href="bgimages" style="background-repeat:repeat; background-position:4px 8px;">repeat position:4px-8px</a></li>
+<li><a href="bgimages" style="background-repeat:repeat; background-position:-4px -8px;">repeat position:-4px--8px</a></li>
+<li><a href="bgimages" style="background-repeat:repeat; background-position:32px 0px;">repeat position:32px-0px</a></li>
+<li><a href="bgimages" style="background-repeat:repeat; background-position:0px 8px;">repeat position:0px-8px</a></li>
+</ul>
+<ul>
+<li><a href="bgimages" style="background-position:32px 8px;">no-repeat position:32px-8px</a></li>
+<li><a href="bgimages" style="background-position:32pt 8pt;">no-repeat position:32pt-8pt</a></li>
+<li><a href="bgimages" style="background-position:32px 32px;">no-repeat position:32px-32px</a></li>
+<li><a href="bgimages" style="background-position:-16px -16px;">no-repeat position:-16px--16px</a></li>
+</ul>
+<ul>
+<li><a href="bgimages" style="background-image:url(http://www.dokuwiki.org/lib/images/fileicons/html.png);">no-repeat position:default image:url(http://www.dokuwiki.org/lib/images/fileicons/html.png) [image remote]</a></li>
+<li><a href="bgimages" style="background-image:url(images/png.png);">no-repeat position:default image:url(images/png.png) [image in subfolder]</a></li>
+<li><a href="bgimages" style="background-image:url(images/html.png);">no-repeat position:default image:url(html.png) [image in same folder]</a></li>
+
+<li><a href="bgimages" style="background-image:url(images/html.png);">no-repeat position:default image:url(html.png) [image in same folder]
+Added very long description, to see if non repeating background image is repeated after a line break.
+blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah,
+blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah,
+...      
+</a></li>
+
+
+<h2 style="color:red;">Attention!</h2>
+<p style="color:red;">For absolute image references to work, the file (dompdf)/www/test/images/smiley.png must be copyied exactly to (virtual web server root)/absimagetest/smiley.png</p>
+<li><a href="bgimages" style="background-image:url(/absimagetest/smiley.png);">no-repeat position:default image:url(/absimagetest/smiley.png) [abs image ]</a></li>
+</ul>
+</div>
+<p><a href="bgimages" style="line-height:170%;padding-left:20px;background:url(images/pdf.png) no-repeat yellow;background-position:left top;">paragraph link no-repeat position:default</a></p>
+<p style="text-align:left;line-height:170%;padding-left:20px;background:url(images/pdf.png) no-repeat yellow;background-position:left top;">paragraph text no-repeat position:left-top; more text text more text text bla bla sdfjkhs sdfsjksdfks sdfkjsfsf skjfh ksjdfhsd </p>
+<p style="text-align:left;line-height:170%;padding-left:20px;background:url(images/pdf.png) no-repeat yellow;background-position:left center;">paragraph text no-repeat position:left-center; more text text more text text bla bla sdfjkhs sdfsjksdfks sdfkjsfsf skjfh ksjdfhsd </p>
+<p>
+<span>The PHP 5 HTML to PDF converter</span>
+</p>
+
+</div>
+
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/pages.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/pages.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/pages.html	(revision 2000)
@@ -0,0 +1,201 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<style>
+body {
+  margin: 18pt 18pt 24pt 18pt;
+}
+
+* {
+  font-family: helvetica,georgia,serif;
+  font-weight: bold;
+}
+
+p {
+  text-align: justify;
+  font-size: 1em;
+  margin: 0.5em;
+  padding: 10px;
+}
+</style>
+</head>
+<body>
+
+<script type="text/php">
+
+if ( isset($pdf) ) {
+
+  $font = Font_Metrics::get_font("verdana");;
+  $size = 6;
+  $color = array(0,0,0);
+  $text_height = Font_Metrics::get_font_height($font, $size);
+
+  $foot = $pdf->open_object();
+  
+  $w = $pdf->get_width();
+  $h = $pdf->get_height();
+
+  // Draw a line along the bottom
+  $y = $h - $text_height - 24;
+  $pdf->line(16, $y, $w - 16, $y, $color, 0.5);
+
+  $pdf->close_object();
+  $pdf->add_object($foot, "all");
+
+  $text = "Page {PAGE_NUM} of {PAGE_COUNT}";  
+
+  // Center the text
+  $width = Font_Metrics::get_text_width("Page 1 of 2", $font, $size);
+  $pdf->page_text($w / 2 - $width / 2, $y, $text, $font, $size, $color);
+  
+}
+</script>
+
+<h1>Lorem ipsum dolor sit amet</h1>
+<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at
+odio vitae libero tempus convallis. Cum sociis natoque penatibus et
+magnis dis parturient montes, nascetur ridiculus mus. Vestibulum purus
+mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla
+massa quis velit. Curabitur metus massa, semper mollis, molestie vel,
+adipiscing nec, massa. Phasellus vitae felis sed lectus dapibus
+facilisis. In ultrices sagittis ipsum. In at est. Integer iaculis
+turpis vel magna. Cras eu est. Integer porttitor ligula a
+tellus. Curabitur accumsan ipsum a velit. Sed laoreet lectus quis
+leo. Nulla pellentesque molestie ante. Quisque vestibulum est id
+justo. Ut pellentesque ante in neque.</p>
+
+<p>Curabitur ut diam eu dui vestibulum pharetra. Nam pellentesque, justo
+non hendrerit venenatis, mi orci pretium mi, et vehicula leo arcu quis
+diam. Nullam mattis laoreet quam. Morbi mollis sem ut tellus. Nam mi
+massa, lobortis eu, sollicitudin et, iaculis et, massa. Maecenas purus
+mauris, luctus sit amet, pharetra in, facilisis sit amet, elit. Nullam
+vel erat tempus purus molestie suscipit. Vestibulum odio lorem,
+sollicitudin non, volutpat sit amet, tincidunt vel, nunc. Nulla quis
+ante vestibulum odio feugiat facilisis. Proin lorem nisl, viverra at,
+rhoncus quis, semper nec, mi. Donec euismod enim vitae velit. Nulla
+sed lectus. Vivamus placerat, lacus sed vehicula sagittis, arcu massa
+adipiscing lorem, bibendum luctus nisl tortor vitae leo.</p>
+
+<p>Etiam a mauris. Proin justo elit, accumsan sit amet, tempus et,
+blandit id, tellus. Morbi varius, nisi id iaculis aliquam, lacus
+ligula facilisis velit, ac pharetra ipsum augue a massa. Etiam rhoncus
+commodo orci. Mauris ullamcorper sagittis turpis. Nullam magna libero,
+sagittis sed, auctor faucibus, accumsan vitae, urna. Pellentesque
+volutpat. Aliquam sapien ipsum, eleifend nec, imperdiet vitae,
+consectetuer id, quam. Donec a urna. Suspendisse sit amet
+velit. Curabitur quis nisi id dui viverra ornare. Sed condimentum enim
+quis tortor. Ut condimentum, magna non tempus tincidunt, leo nibh
+molestie tellus, vitae convallis dolor ante sed ante. Nunc et
+metus. Phasellus ultricies. Fusce faucibus tortor sit amet mauris.</p>
+
+<p>Aliquam enim. Duis et diam. Praesent porta, mauris quis pellentesque
+volutpat, erat elit vulputate eros, vitae pulvinar augue velit sit
+amet sem. Fusce eu urna eu nisi condimentum posuere. Vivamus sed
+felis. Duis eget urna vitae eros interdum dignissim. Proin justo eros,
+eleifend in, porttitor in, malesuada non, neque. Etiam sed
+augue. Nulla sit amet magna. Lorem ipsum dolor sit amet, consectetuer
+adipiscing elit. Mauris facilisis. Curabitur massa magna, pulvinar a,
+nonummy eget, egestas vitae, mauris. Quisque vel elit sit amet lorem
+malesuada facilisis. Vestibulum porta, metus sit amet egestas
+interdum, urna justo euismod erat, id tristique urna leo quis
+nibh. Morbi non erat.</p>
+
+<p>Cras fringilla, nulla id egestas elementum, augue nunc iaculis nibh,
+ac adipiscing nibh justo id tortor. Donec vel orci a nisi ultricies
+aliquet. Nunc urna quam, adipiscing molestie, vehicula non,
+condimentum non, magna. Integer magna. Donec quam metus, pulvinar id,
+suscipit eget, euismod ac, orci. Nulla facilisi. Nullam nec
+mauris. Morbi in mi. Etiam urna lectus, pulvinar ac, sollicitudin eu,
+euismod ac, lectus. Fusce elit. Sed ultricies odio ac felis.</p>
+
+<h1>Cras iaculis. Nulla facilisi.</h1>
+<p>Cras iaculis. Nulla facilisi. Fusce vitae arcu. Integer lectus mauris,
+ornare vel, accumsan eget, scelerisque vel, nunc. Maecenas justo urna,
+volutpat vel, vehicula vel, ullamcorper nec, odio. Suspendisse laoreet
+nisi sed erat. Cras convallis sollicitudin sapien. Phasellus ac erat
+eu mi rutrum rhoncus. Morbi et velit. Morbi odio nisi, pharetra eget,
+sollicitudin sed, aliquam at, nisl. Quisque euismod diam in
+sapien. Integer accumsan urna in risus.</p>
+
+<p>Proin sit amet nisl. Phasellus dui ipsum, laoreet a, pulvinar id,
+fringilla ut, libero. In hac habitasse platea dictumst. Maecenas mi
+magna, cursus sed, rutrum eget, molestie nec, dui. Suspendisse
+lacus. Vivamus nibh urna, accumsan sit amet, gravida sed, convallis a,
+leo. Cras sollicitudin orci sit amet eros. Pellentesque eu odio et
+velit tempor dignissim. Morbi vehicula malesuada enim. Pellentesque
+tincidunt, tellus ac fringilla tempor, justo libero interdum nunc, eu
+sollicitudin tortor augue nec tellus. Nullam eget leo quis tellus
+gravida faucibus. Nam gravida. Curabitur rhoncus egestas
+nunc. Curabitur mollis, nisi sed suscipit gravida, enim felis interdum
+justo, vel accumsan magna nunc ut libero. Ut fermentum. Fusce luctus,
+est sit amet feugiat lobortis, nisl eros bibendum libero, ut suscipit
+felis ligula in massa. Proin congue elit et nisi. Cras ac nisl. Nunc
+ullamcorper neque vel diam.</p>
+
+<h1>Ut pellentesque arcu ac lectus.</h1>
+<p>Sed ac lorem. Ut pellentesque arcu ac lectus. Cum sociis natoque
+penatibus et magnis dis parturient montes, nascetur ridiculus
+mus. Pellentesque ultrices metus sollicitudin pede. Donec fermentum
+est a velit fringilla mollis. Duis ligula. Fusce viverra laoreet
+odio. Suspendisse sit amet ligula. Maecenas nunc velit, sagittis eu,
+bibendum eu, placerat at, nibh. Praesent ut erat eget nisi gravida
+imperdiet. Quisque vitae sapien. Ut eros.</p>
+
+<p>Donec eros ligula, dignissim vel, ultricies id, mattis in, massa. Duis
+lobortis dui nec orci. Sed ullamcorper metus non massa. Aliquam eget
+mauris ac nulla elementum posuere. Sed porta, augue vitae rhoncus
+aliquet, felis quam eleifend est, vitae rutrum metus arcu vel
+lorem. Proin laoreet, mauris sit amet aliquet eleifend, nisl sem
+molestie nisi, eu varius eros ligula non erat. Integer ac
+sem. Suspendisse lectus. Aliquam erat volutpat. Fusce sit amet leo
+faucibus erat molestie ultrices. Maecenas lacinia lectus eget
+dui. Etiam porta porttitor ante. Phasellus sit amet lacus adipiscing
+enim mollis iaculis. Fusce congue, nulla a commodo aliquam, erat dui
+fermentum dui, pellentesque faucibus orci enim at mauris. Pellentesque
+a diam porta magna tempor posuere. Donec lorem.</p>
+
+<p>Sed viverra aliquam turpis. Aliquam lacus. Duis id massa. Nullam
+ante. Suspendisse condimentum. Donec adipiscing, felis vel semper
+sollicitudin, lacus justo pretium est, sed blandit pede risus eu
+ante. Praesent ante nulla, fringilla id, ultrices et, feugiat a,
+metus. Proin ac velit a metus suscipit fermentum. Integer aliquet. Sed
+sapien nulla, placerat at, rutrum at, condimentum quis, libero. In
+accumsan, tellus nec tincidunt malesuada, pede arcu commodo ipsum, ac
+mattis tortor urna vitae enim. Aenean nonummy, mauris eget commodo
+bibendum, augue sem ultrices nunc, eget rhoncus metus erat placerat
+lectus. Aliquam mollis lectus in justo. Vivamus iaculis lacus sit amet
+ligula. Etiam consectetuer convallis diam. Curabitur sollicitudin,
+felis eu vehicula scelerisque, nisl urna aliquam orci, sit amet
+laoreet mi turpis id ligula. Donec at enim non nulla adipiscing
+dapibus. Aenean nisl.</p>
+
+<p>Ut in lacus nec enim volutpat pellentesque. Integer euismod. In odio
+eros, malesuada in, mattis vel, tempor nec, sem. In libero tellus,
+varius vitae, bibendum in, elementum quis, nisl. Duis tortor. Etiam at
+justo. Pellentesque facilisis mauris non nunc. Praesent eros mi,
+dapibus eget, placerat ac, lobortis quis, sem. Nulla rhoncus
+turpis. Nulla vitae mi. Proin id massa. Nunc eros.</p>
+
+<h1>Aliquam molestie pulvinar ligula.</h1>
+<p>Vestibulum dui risus, varius ut, semper et, consequat ultrices,
+felis. Pellentesque iaculis urna in velit. Ut pharetra. Nunc
+fringilla, nisi vitae fringilla placerat, enim justo semper erat,
+mollis feugiat leo neque eu sem. Vestibulum orci urna, suscipit a,
+accumsan nec, fringilla in, risus. Nullam ante. Nullam nec
+eros. Nullam varius. Nulla facilisi. In auctor libero in
+metus. Aliquam porttitor congue eros. Nulla facilisi. Mauris euismod
+turpis ut felis. Ut nunc nisl, cursus quis, eleifend at, viverra
+bibendum, lacus. Donec consequat lacus eu sapien. Fusce pulvinar
+lectus quis nunc. In hac habitasse platea dictumst.</p>
+
+<p>Aliquam molestie pulvinar ligula. Maecenas imperdiet, urna eget
+ultrices adipiscing, nibh ante elementum neque, id molestie massa quam
+ut nunc. Nullam porta. Phasellus a magna in sem volutpat
+viverra. Quisque aliquet nunc ac turpis. Mauris dolor enim, viverra
+rutrum, placerat et, laoreet et, justo. In id nulla. Donec
+erat. Phasellus nec mi sed velit mollis cursus. Vestibulum
+tincidunt. Praesent dui libero, facilisis eu, vulputate eget, aliquet
+nec, ipsum. Pellentesque in nisl in mauris pretium euismod.</p>
+
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/br.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/br.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/br.html	(revision 2000)
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
+<title></title>
+</head>
+<body>
+<h1>Line break test</h1>
+<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at
+odio vitae libero tempus convallis. Cum sociis natoque penatibus et
+magnis dis parturient montes, nascetur ridiculus mus. Vestibulum purus
+mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla
+massa quis velit. Curabitur metus massa, semper mollis, molestie vel,<br/>
+adipiscing nec, massa. Phasellus vitae felis sed lectus dapibus
+facilisis. In ultrices sagittis ipsum. In at est. Integer iaculis
+turpis vel magna. Cras eu est. Integer porttitor ligula a
+<br/>
+<br/>
+tellus. Curabitur accumsan ipsum a velit. Sed laoreet lectus quis
+leo. Nulla pellentesque molestie ante. Quisque vestibulum est id
+justo. Ut pellentesque ante in neque.</p>
+
+<p>Line break at beginning of next paragraph:</p>
+<p style="border: 0.5pt solid blue"><br/>
+Line 2</p>
+
+<p>Line break within a font tag: 
+<font face="Trebuchet MS,Arial,Helvetica,sans-serif">ABCDE<br/>FGHIJK</font></p>
+
+<p>Line break within two nested spans: <span>span 1 <span>2<br/>break</span></span></p>
+
+<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at
+odio vitae libero tempus convallis. Cum sociis natoque penatibus et
+magnis dis parturient montes, nascetur ridiculus mus. Vestibulum purus
+mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla
+massa quis velit. Curabitur metus massa, semper mollis, molestie vel,<br/>
+adipiscing nec, massa. Phasellus vitae felis sed lectus dapibus
+facilisis. In ultrices sagittis ipsum. In at est. Integer iaculis
+turpis vel magna. Cras eu est. Integer porttitor ligula a
+<br/>
+<br/>
+tellus. Curabitur accumsan ipsum a velit. Sed laoreet lectus quis
+leo. Nulla pellentesque molestie ante. Quisque vestibulum est id
+justo. Ut pellentesque ante in neque.</p>
+
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/important_flag.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/important_flag.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/important_flag.html	(revision 2000)
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+<style>
+ul { line-height:160% }
+a {
+  border-bottom:dashed 1pt red !important;
+  text-decoration:none !important;
+}
+.monospace { font-family:monospace !important; }
+
+</style>
+</head>
+<body>
+
+<h1>Handling of "!important" property flag</h1>
+<p>
+Normally later css style properties defined later are overriding earlier ones.<br>
+Except if they are marked with the flag "!important".<br>
+Those can only be overridden by style properties which are also marked "!important".
+</p>
+
+<p>There are two classes of property overriding</p>
+<ul>
+<li>inherit (nested html tags)</li>
+<li>merging (more css properties to the same html tag)</li>
+</ul>
+<p>This is handled similarly for all styles, so we check only examples here</p>
+
+<p>ul { line-height:160% }<p>
+
+<h2>merge a { border-bottom:dashed 1pt red !important; text-decoration:none !important; }</h2>
+
+<p>dummy links, text decoration/border bottom:</p>
+
+<ul>
+<li><a href="">(default)</a></li>
+<li><a href="" style="border-bottom-style:none;">border-bottom-style:none; (ignore)</a></li>
+<li><a href="" style="border:1pt solid blue;">border:1pt solid blue; (ignore)</a></li>
+<li><a href="" style="border-bottom-style:none!important;">border-bottom-style:none!important; (override)</a></li>
+<li><a href="" style="border:1pt solid blue!important;">border:1pt solid blue!important; (override)</a></li>
+</ul>
+
+<h2>Inherit .monospace { font-family:monospace !important; }</h2>
+<p>font family selection:</p>
+<ul class="monospace">
+<li>(default)</li>
+<li class="font-family:sans-serif;">font-family:sans-serif; (ignored)</li>
+<li style="font-family:sans-serif!important;">font-family:sans-serif!important; (override)</li>
+</ul>
+
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/font_selection.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/font_selection.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/font_selection.html	(revision 2000)
@@ -0,0 +1,116 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+</head>
+<body>
+
+<h1>Font Selection</h1>
+
+<p>Available font-family:</p>
+<ul>
+<li>serif (default) (Aliases: times, times-roman)</li>
+<li>sans-serif (Aliases: helvetica)</li>
+<li>monospace (Aliases: fixed, courier)</li>
+</ul>
+<p>Available font-style:</p>
+<ul>
+<li>normal (default)</li>
+<li>italic</li>
+</ul>
+<p>Available  font-weight:</p>
+<ul>
+<li>normal (default)</li>
+<li>bold</li>
+</ul>
+<p>Other variations are falling back to a combination of the above</p>
+<p>Special fonts</p>
+<ul>
+<li>symbol</li>
+<li>zapfdingbats</li>
+</ul>
+
+<h2>Font selection</h2>
+
+<p style="font-family:sans-serif;">abcdefghijk ABCDEFGHIJK - (Helvetica) - (sans-serif) - sans-serif</p>
+<p style="font-family:helvetica;">abcdefghijk ABCDEFGHIJK - (Helvetica) - (sans-serif) - helvetica</p>
+<p style="font-family:serif;">abcdefghijk ABCDEFGHIJK - (Times-Roman) - (serif) - serif</p>
+<p style="font-family:times;">abcdefghijk ABCDEFGHIJK - (Times-Roman) - (serif) - times</p>
+<p style="font-family:times-roman;">abcdefghijk ABCDEFGHIJK - (Times-Roman) - (serif) - times-roman</p>
+<p style="font-family:monospace;">abcdefghijk ABCDEFGHIJK - (Courier)- (monospace) - mononospace</p>
+<p style="font-family:fixed;">abcdefghijk ABCDEFGHIJK - (Courier)- (monospace) - fixed</p>
+<p style="font-family:courier;">abcdefghijk ABCDEFGHIJK - (Courier)- (monospace) - courier</p>
+
+<h2>Font search path</h2>
+
+<p style="font-family:dummy1,dummy2;">abcdefghijk ABCDEFGHIJK - serif - "font-family:dummy1,dummy2;"</p>
+<p style="font-family:dummy1,dummy2,sans-serif;">abcdefghijk ABCDEFGHIJK - sans-serif - "font-family:dummy1,dummy2,sans-serif;"</p>
+<p style="font-family:sans-serif,dummy1,dummy2;">abcdefghijk ABCDEFGHIJK - sans-serif - "font-family:sans-serif,dummy1,dummy2;"</p>
+<p style="font-family:sans-serif,courier;">abcdefghijk ABCDEFGHIJK - sans-serif - "font-family:sans-serif,courier;"</p>
+
+<h2>Font variations</h2>
+
+<p style="font-style:normal; font-weight:normal;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:normal;"</p>
+<p style="font-style:normal; font-weight:lighter;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:lighter;"</p>
+<p style="font-style:normal; font-weight:100;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:100;"</p>
+<p style="font-style:normal; font-weight:200;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:200;"</p>
+<p style="font-style:normal; font-weight:300;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:300;"</p>
+<p style="font-style:normal; font-weight:400;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:400;"</p>
+<p style="font-style:normal; font-weight:500;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-style:normal; font-weight:500;"</p>
+<p style="font-style:normal; font-weight:600;">abcdefghijk ABCDEFGHIJK - serif - bold - "font-style:normal; font-weight:600;"</p>
+<p style="font-style:normal; font-weight:700;">abcdefghijk ABCDEFGHIJK - serif - bold - "font-style:normal; font-weight:700;"</p>
+<p style="font-style:normal; font-weight:800;">abcdefghijk ABCDEFGHIJK - serif - bold - "font-style:normal; font-weight:800;"</p>
+<p style="font-style:normal; font-weight:900;">abcdefghijk ABCDEFGHIJK - serif - bold - "font-style:normal; font-weight:900;"</p>
+<p style="font-style:normal; font-weight:bold;">abcdefghijk ABCDEFGHIJK - serif - bold - "font-style:normal; font-weight:bold;"</p>
+<p style="font-style:normal; font-weight:bolder;">abcdefghijk ABCDEFGHIJK - serif - bold - "font-style:normal; font-weight:bolder;"</p>
+<p style="font-style:italic; font-weight:normal;">abcdefghijk ABCDEFGHIJK - serif - italic - "font-style:italic; font-weight:normal;"</p>
+<p style="font-style:oblique; font-weight:normal;">abcdefghijk ABCDEFGHIJK - serif - italic - "font-style:oblique; font-weight:normal;"</p>
+<p style="font-style:italic; font-weight:bold;">abcdefghijk ABCDEFGHIJK - serif - bold_italic - "font-style:italic; font-weight:bold;"</p>
+<p style="font-variant:small-caps; font-style:normal; font-weight:normal;">abcdefghijk ABCDEFGHIJK - serif - normal - "font-variant:small-caps; font-style:normal; font-weight:normal;"</p>small-caps
+
+<h2>Font size</h2>
+
+<p style="font-size:xx-small">abcdefghijk ABCDEFGHIJK - xx-small</p>
+<p style="font-size:x-small">abcdefghijk ABCDEFGHIJK - x-small</p>
+<p style="font-size:small">abcdefghijk ABCDEFGHIJK - small</p>
+<p style="font-size:smaller">abcdefghijk ABCDEFGHIJK - smaller</p>
+<p style="font-size:medium">abcdefghijk ABCDEFGHIJK - medium</p>
+<p style="font-size:larger">abcdefghijk ABCDEFGHIJK - larger</p>
+<p style="font-size:large">abcdefghijk ABCDEFGHIJK - large</p>
+<p style="font-size:x-large">abcdefghijk ABCDEFGHIJK - x-large</p>
+<p style="font-size:xx-large">abcdefghijk ABCDEFGHIJK - xx-large</p>
+<p style="font-size:10pt">abcdefghijk ABCDEFGHIJK - 10pt</p>
+<p style="font-size:12pt">abcdefghijk ABCDEFGHIJK - 12pt</p>
+<p style="font-size:14pt">abcdefghijk ABCDEFGHIJK - l4pt</p>
+
+<h2>Line height</h2>
+<p style="line-height:100%">abcdefghijk ABCDEFGHIJK<br>abcdefghijk ABCDEFGHIJK 100%</p>
+<p style="line-height:120%">abcdefghijk ABCDEFGHIJK<br>abcdefghijk ABCDEFGHIJK 120%</p>
+<p style="line-height:140%">abcdefghijk ABCDEFGHIJK<br>abcdefghijk ABCDEFGHIJK 140%</p>
+<p style="font-size:xx-large;line-height:100%">abcdefghijk ABCDEFGHIJK<br>abcdefghijk ABCDEFGHIJK 100%</p>
+<p style="font-size:xx-large;line-height:120%">abcdefghijk ABCDEFGHIJK<br>abcdefghijk ABCDEFGHIJK 120%</p>
+<p style="font-size:xx-large;line-height:140%">abcdefghijk ABCDEFGHIJK<br>abcdefghijk ABCDEFGHIJK 140%</p>
+
+<h2>Font combined setting</h2>
+<p style="font:italic small-caps bold 14pt/160% sans-serif;">style="font:italic small-caps bold 14pt/160% sans-serif;"<br>(all attributes)</p>
+<p style="font:normal 10pt/160% sans-serif;">style="font:normal 10pt/160% sans-serif;"<br>(partial attributes)</p>
+<p style="font:700 10pt/160% sans-serif;">style="font:700 10pt/160% sans-serif;"<br>(partial attributes)</p>
+<p style="font:small sans-serif;">style="font:small sans-serif;"<br>(partial attributes)</p>
+<div style="font:italic small-caps bold 14pt/160% sans-serif;">
+
+<p>inherit style="font:italic small-caps bold 14pt/160% sans-serif;" :</p>
+
+<p style="font:small sans-serif;">
+style="font:small sans-serif;"<br>
+(partial attributes - reset inherited)<br>
+<span style="font-weight:bold;">style="font-weight:bold;"<br>
+(partial overwrite)</span><br>
+(resume partial attributes)
+</p>
+
+<p>continue inherited</p>
+
+</div>
+
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/table_height.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/table_height.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/table_height.html	(revision 2000)
@@ -0,0 +1,15 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+</head>
+<body>
+<table style="height: 50%; border: 0.5pt solid black;">
+<tbody>
+<tr>
+<td>Some text</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/ul.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/ul.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/ul.html	(revision 2000)
@@ -0,0 +1,312 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+<style>
+.disc li { list-style-type: disc; }
+.circle li { list-style-type: circle; }
+.square li { list-style-type: square; }
+.image li { list-style-type: square; list-style-image:url(images/png.png)} 
+.missing li { list-style-type: square; list-style-image:url(dummy.png)}
+.nobullet li { list-style-type: none;}  
+.noimage li { list-style-type: none; list-style-image:url(dummy.png)}
+.bigimage li { list-style-type: square; list-style-image:url(images/dokuwiki-128.png)} 
+.mindentimage li { list-style-type: square; list-style-image:url(images/png.png); margin-left:50px;} 
+.mindentimage2 li { list-style-type: square; list-style-image:url(images/png.png); margin-left:100px;} 
+.pindentimage li { list-style-type: square; list-style-image:url(images/png.png); padding-left:50px;} 
+.pindentimage2 li { list-style-type: square; list-style-image:url(images/png.png); padding-left:100px;} 
+.mindentsquare li { list-style-type: square; margin-left:50px;} 
+.mindentsquare2 li { list-style-type: square; margin-left:100px;} 
+.pindentsquare li { list-style-type: square; padding-left:50px;} 
+.pindentsquare2 li { list-style-type: square; padding-left:100px;} 
+</style>
+</head>
+
+<body>
+<ul>
+<li>Item 1</li>
+<li>Item 2</li>
+<li>Item 3</li>
+<ul><li>Sub 1</li>
+    <li>Sub 2</li>
+    <li>Sub 3</li>
+</ul>
+</ul>
+
+<ul class="circle">
+<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec at
+odio vitae libero tempus convallis. Cum sociis natoque penatibus et
+magnis dis parturient montes, nascetur ridiculus mus. Vestibulum purus
+mauris, dapibus eu, sagittis quis, sagittis quis, mi. Morbi fringilla
+massa quis velit. Curabitur metus massa, semper mollis, molestie vel,
+adipiscing nec, massa. Phasellus vitae felis sed lectus dapibus
+facilisis. In ultrices sagittis ipsum. In at est. Integer iaculis
+turpis vel magna. Cras eu est. Integer porttitor ligula a
+tellus. Curabitur accumsan ipsum a velit. Sed laoreet lectus quis
+leo. Nulla pellentesque molestie ante. Quisque vestibulum est id
+justo. Ut pellentesque ante in neque.</li>
+<li>Curabitur ut diam eu dui vestibulum pharetra. Nam pellentesque, justo
+non hendrerit venenatis, mi orci pretium mi, et vehicula leo arcu quis
+diam. Nullam mattis laoreet quam. Morbi mollis sem ut tellus. Nam mi
+massa, lobortis eu, sollicitudin et, iaculis et, massa. Maecenas purus
+mauris, luctus sit amet, pharetra in, facilisis sit amet, elit. Nullam
+vel erat tempus purus molestie suscipit. Vestibulum odio lorem,
+sollicitudin non, volutpat sit amet, tincidunt vel, nunc. Nulla quis
+ante vestibulum odio feugiat facilisis. Proin lorem nisl, viverra at,
+rhoncus quis, semper nec, mi. Donec euismod enim vitae velit. Nulla
+sed lectus. Vivamus placerat, lacus sed vehicula sagittis, arcu massa
+adipiscing lorem, bibendum luctus nisl tortor vitae leo.</li>
+<li  style="list-style-position: inside">Inside. Aliquam enim. Duis et diam. Praesent porta, mauris quis pellentesque
+volutpat, erat elit vulputate eros, vitae pulvinar augue velit sit
+amet sem. Fusce eu urna eu nisi condimentum posuere. Vivamus sed
+felis. Duis eget urna vitae eros interdum dignissim. Proin justo eros,
+eleifend in, porttitor in, malesuada non, neque. Etiam sed
+augue. Nulla sit amet magna. Lorem ipsum dolor sit amet, consectetuer
+adipiscing elit. Mauris facilisis. Curabitur massa magna, pulvinar a,
+nonummy eget, egestas vitae, mauris. Quisque vel elit sit amet lorem
+malesuada facilisis. Vestibulum porta, metus sit amet egestas
+interdum, urna justo euismod erat, id tristique urna leo quis
+nibh. Morbi non erat.</li>
+</ul>
+
+<ul class="disc">
+<li>Item 1 disc</li>
+<li>Item 2 disc</li>
+<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li>Item 4 disc</li>
+</ul>
+
+<ul class="circle">
+<li>Item 1 circle</li>
+<li>Item 2 circle</li>
+<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li>Item 4 circle</li>
+</ul>
+
+<ul class="square">
+<li>Item 1 square</li>
+<li>Item 2 square</li>
+<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li>Item 4 square </li>
+</ul>
+
+<ul class="image">
+<li>Item 1 image</li>
+<li>Item 2 image</li>
+<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li>Item 4 image</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li style="list-style-position: outside">Outside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li style="list-style-image:none">Item 7 noimage</li>
+
+<ul>
+<li>sub Item 1 image</li>
+<li>sub Item 2 image</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li style="list-style-position: outside">Outside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li style="list-style-image:none">sub Item 5 noimage</li>
+</ul>
+
+</ul>
+
+<ul class="missing">
+<li>Item 1 missing image - fallback square</li>
+<li>Item 2 missing image - fallback square</li>
+<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li>Item 4 missing image - fallback square</li>
+</ul>
+
+<ul class="nobullet">
+<li>Item 1 nobullet</li>
+<li>Item 2 nobullet</li>
+<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li>Item 4 nobullet</li>
+</ul>
+
+<ul class="noimage">
+<li>Item 1 missing image - fallback none</li>
+<li>Item 2 missing image - fallback none</li>
+<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li>Item 4 missing image - fallback none</li>
+</ul>
+
+<ul class="bigimage">
+<li>Item 1 bigimage</li>
+<li>Item 2 bigimage</li>
+<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li>Item 4 bigimage</li>
+</ul>
+
+<ul class="mindentimage">
+<li>margin Item 1 image</li>
+<li>margin Item 2 image</li>
+<li>Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li>margin Item 4 image</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li style="list-style-position: outside">Outside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li style="list-style-image:none">margin Item 7 noimage</li>
+
+<ul class="mindentimage2">
+<li>margin sub Item 1 image</li>
+<li>margin sub Item 2 image</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li style="list-style-position: outside">Outside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<li style="list-style-image:none">margin sub Item 5 noimage</li>
+</ul>
+
+</ul>
+
+<ul class="pindentimage">
+<li>padding Item 1 image</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<ul class="pindentimage2">
+<li>padding sub Item 1 image</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+</ul>
+</ul>
+
+<ul class="mindentsquare">
+<li>margin Item 1 square</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<ul class="mindentsquare2">
+<li>margin sub Item 1 square</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+</ul>
+</ul>
+
+<ul class="pindentsquare">
+<li>padding Item 1 square</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+<ul class="pindentsquare2">
+<li>padding sub Item 1 square</li>
+<li style="list-style-position: inside">Inside. Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, 
+sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
+aliquyam erat, sed diam voluptua. At vero eos et accusam et justo 
+duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata 
+sanctus est Lorem ipsum dolor sit amet.</li>
+</ul>
+</ul>
+
+<h1>combined list attributes list-style</h1>
+
+<ul style="list-style:square inside url(dummy.png);">
+ <li>list-style:square inside url(dummy.png);</li>
+ <li style="list-style-position:outside;">list-style:outside;[overwrites only position]</li>
+</ul>
+<ul style="list-style:square inside url(images/png.png);">
+ <li>list-style:square inside url(images/png.png);</li>
+ <li style="list-style-position:outside;">list-style-position:outside;[overwrites only position]</li>
+ <li style="list-style:outside;">list-style-position:outside;[overwrite attributes - firefox3: all; dompdf, internet explorer 8: only position]</li>
+ <li style="list-style:none;">list-style:none; [resets both, bullet and image]</li>
+</ul>
+
+
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/block_height.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/block_height.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/block_height.html	(revision 2000)
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title></title>
+</head>
+<body>
+
+<div style="height: 100%; width: 30%; background-color: #D3D7D8">
+&nbsp;
+</div>
+
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/image.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/image.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/image.html	(revision 2000)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+<style>
+body {
+  color: #7d7a7a;
+  font-family: 'trebuchet ms', verdana, sans-serif;
+}
+</style>
+</head>
+
+<body>
+<div style="text-align: center; margin-top: 40%;">
+<img style="width: 75%;" src="images/dompdf_simple.png"/>
+<br/>
+<span>The PHP 5 HTML to PDF converter</span>
+</div>
+
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/css/common.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/css/common.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/css/common.css	(revision 2000)
@@ -0,0 +1,128 @@
+/* Notes
+-----------------------------------------------------------------------*/
+.note_form { 
+  display: none;
+}
+
+
+/* Page
+-----------------------------------------------------------------------*/
+.page {
+  background-color: white;
+  padding: 20px;
+  font-size: 0.7em;
+  margin-bottom: 15px;
+  margin-right: 5px;
+}
+
+.page table.header td h1 { 
+  margin: 0px;
+}
+
+.page table.header { 
+  border-bottom: 1px solid black;
+}
+
+.page h1 {
+  text-align: center;
+  color: black;
+  font-style: normal;
+  font-size: 2em;
+}
+
+.page h2 {
+  text-align: center;
+  color: black;
+}
+
+.page h3 {
+  color: black;
+  font-size: 1em;
+}
+
+.page p { 
+  text-align: justify;
+  font-size: 1em;
+}
+
+.page em {
+  font-weight: bold;
+  font-style: normal;
+  text-decoration: underline;
+  margin-left: 1%;
+  margin-right: 1%;
+
+}
+
+.money_table {
+  width: 85%;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.money {
+  text-align: right;
+  padding-right: 20px;
+}
+
+.money_field {
+  text-align: right;
+  padding: 0px 15px 5px 15px;
+  font-weight: bold;
+}
+
+.total_label {
+  border-top: 2px double black;
+  font-weight: bold;
+}
+
+.total_field {
+  border-top: 2px double black;
+  text-align: right;
+  padding: 0px 15px 5px 15px;
+  font-weight: bold;
+}
+
+.written_field { 
+  border-bottom: 0.1pt solid black;
+}
+
+.page .indent * { margin-left: 4em; }
+
+.checkbox { 
+  border: 1px solid black;
+  padding: 1px 2px;
+  font-size: 7px;
+  font-weight: bold;
+}
+
+table.fax_head { 
+  width: 100%;
+  font-weight: bold;
+  font-size: 1.1em;
+  border-bottom: 1px solid black;
+}
+
+/* Sales-agreement specific
+-----------------------------------------------------------------------*/
+table.sa_signature_box { 
+  margin: 2em auto 2em auto;
+}
+
+table.sa_signature_box tr td { 
+  padding-top: 1.5em;
+  vertical-align: top;
+  white-space: nowrap;
+}
+
+.special_conditions { 
+  font-style: italic;
+  margin-left: 2em; 
+  white-space: pre;
+  font-weight: bold;
+}
+
+.page h2 { 
+  text-align: left;
+}
+
Index: /trunk/filemanager/tp/dompdf/www/test/css/linkprint.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/css/linkprint.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/css/linkprint.css	(revision 2000)
@@ -0,0 +1,2 @@
+p.link {background-color:#eeeeee;}
+
Index: /trunk/filemanager/tp/dompdf/www/test/css/importabs.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/css/importabs.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/css/importabs.css	(revision 2000)
@@ -0,0 +1,2 @@
+p.importabs {background-color:#ffffc0;}
+
Index: /trunk/filemanager/tp/dompdf/www/test/css/importdisplay.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/css/importdisplay.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/css/importdisplay.css	(revision 2000)
@@ -0,0 +1,2 @@
+p.import {background-color:#c0c0ff;}
+
Index: /trunk/filemanager/tp/dompdf/www/test/css/linkdefault.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/css/linkdefault.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/css/linkdefault.css	(revision 2000)
@@ -0,0 +1,2 @@
+li.link {color:#ff0000;}
+
Index: /trunk/filemanager/tp/dompdf/www/test/css/importall.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/css/importall.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/css/importall.css	(revision 2000)
@@ -0,0 +1,2 @@
+li.import {background-color:#ffffc0;}
+
Index: /trunk/filemanager/tp/dompdf/www/test/css/linkdisplay.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/css/linkdisplay.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/css/linkdisplay.css	(revision 2000)
@@ -0,0 +1,2 @@
+p.link {background-color:#c0c0ff;}
+
Index: /trunk/filemanager/tp/dompdf/www/test/css/print_static.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/css/print_static.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/css/print_static.css	(revision 2000)
@@ -0,0 +1,701 @@
+/* Default style definitions */
+
+@import url(common.css);
+
+@page { 
+  margin: 0.25in;
+}
+
+/* General
+-----------------------------------------------------------------------*/
+body { 
+  background-color: transparent;
+  color: black;
+  font-family: "verdana", "sans-serif";
+  margin: 0px;
+  padding-top: 0px;
+  font-size: 1em;
+}
+
+@media print { 
+  p { margin: 2px; }
+}
+
+h1 {
+  font-size: 1.1em;
+  font-style: italic;
+}
+
+h2 {
+  font-size: 1.05em;
+}
+
+img { 
+  border: none;
+}
+
+pre {
+  font-family: "verdana", "sans-serif";
+  font-size: 0.7em;
+}
+
+ul {
+  list-style-type: circle;
+  list-style-position: inside;
+  margin: 0px;
+  padding: 3px;
+}
+
+li.alpha {
+  list-style-type: lower-alpha;
+  margin-left: 15px;
+}
+
+p {
+  font-size: 0.8em;
+}
+
+a:link,
+a:visited {
+  /* font-weight: bold;  */
+  text-decoration: none;
+  color: black;
+}
+
+a:hover {
+  text-decoration: underline;
+}
+
+#body { 
+  padding-bottom: 2em;
+  padding-top: 5px;
+}
+
+#body pre {
+}
+
+.center {
+  text-align: center;
+}
+
+.right {
+  text-align: right;
+}
+
+#money {
+  text-align: right;
+  padding-right: 20px;
+}
+
+/* Footer
+-----------------------------------------------------------------------*/
+#footer {
+  color: black;
+}
+
+#copyright { 
+  padding: 5px;
+  font-size: 0.6em;
+  background-color: white;
+}
+
+#footer_spacer_row {
+  width: 100%;
+}
+
+#footer_spacer_row td {
+  padding: 0px;
+  border-bottom: 1px solid #000033;
+  background-color: #F7CF07;
+  height: 2px;
+  font-size: 2px;
+  line-height: 2px;
+}
+
+#logos {
+  padding: 5px;
+  float: right;
+}
+
+/* Section Header
+-----------------------------------------------------------------------*/
+#section_header {
+  text-align: center;
+}
+
+#job_header { 
+  text-align: left;
+  background-color: white;
+  margin-left: 5px;
+  padding: 5px;
+  border: 1px dashed black;
+}
+
+#job_info {
+  font-weight: bold;
+}
+
+.header_details td {
+  font-size: 0.6em;
+}
+
+.header_label {
+  padding-left: 20px;
+}
+
+.header_field {
+  padding-left: 5px;
+  font-weight: bold;
+}
+
+/* Content
+-----------------------------------------------------------------------*/
+#content {
+  padding: 0.2em 1% 0.2em 1%;
+  min-height: 15em;
+}
+
+.page_buttons {
+  text-align: center;
+  margin: 3px;
+  font-size: 0.7em;
+  white-space: nowrap;
+  font-weight: bold;
+  width: 74%;
+}
+
+.link_bar {
+  font-size: 0.7em;
+  text-align: center;
+  margin: auto;
+/*  white-space: nowrap; */
+}
+
+.link_bar a {
+  white-space: nowrap;
+  font-weight: bold;
+}
+
+.page_menu li {
+  margin: 5px;
+  font-size: 0.8em;
+}
+
+/* Detail
+-----------------------------------------------------------------------*/
+.detail_table {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+  padding: 3px;
+  margin: 15px;
+}
+
+.detail_head td {
+  background-color: #ddd;
+  color: black;
+  font-weight: bold;
+  padding: 3px;
+  font-size: 0.75em;
+  text-align: center;
+}
+
+.detail_label { 
+  padding: 3px;
+  font-size: 0.75em;  
+  width: 16%;
+  border-top: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  background-color: #ddd;
+}
+
+.detail_field { 
+  width: 33%;
+  font-size: 0.8em;
+  color: ;
+  text-align: center;
+  padding: 3px;  
+}
+
+.detail_sub_table {
+  font-size: 1em;
+}
+
+.detail_spacer_row td {
+  border-top: 1px solid white;
+  border-bottom: 1px solid white;
+  background-color: #999;
+  font-size: 2px;
+  line-height: 2px;
+}
+
+#narrow {
+  width: 50%;
+}
+
+.operation {
+  width: 1%;
+}
+
+.summary_spacer_row {
+  font-size: 0.1em;
+}
+
+.bar { 
+  border-top: 1px solid black;
+}
+
+/* Forms
+-----------------------------------------------------------------------*/
+.form {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+  margin-top: 10px;
+}
+
+.form td {
+  padding: 3px;
+}
+
+.form th, .form_head td { 
+  background-color: #ddd
+  border-bottom: 1px solid black;
+  color: black;
+  padding: 3px;
+  text-align: center;
+  font-size: 0.65em;
+  font-weight: bold;
+}
+
+.form_head a:link,
+.form_head a:visited {
+  color: black;
+}
+
+.form_head a:hover {
+}
+
+.sub_form_head td {
+  border: none;
+  font-size: 0.9em;
+  white-space: nowrap;
+}
+
+.form input {
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+  padding: 1px 2px 1px 2px;
+  text-decoration: none;
+  font-size: 1em;
+}
+
+.form textarea {
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+  font-size: 1em;
+}
+
+.form select {
+  color: black;
+  background-color: white;
+  font-size: 1em;
+}
+
+.button, a.button { 
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+  font-weight: normal;
+  white-space: nowrap;
+  text-decoration: none;
+}
+
+a.button { 
+  display: inline-block;
+  text-align: center;
+  padding: 2px;
+}
+
+a.button:hover {
+  text-decoration: none;
+  color: black;
+}
+
+.form_field {
+  color: black;
+  background-color: white;
+  font-size: 0.7em;
+}
+
+.form_label {
+  color: black;
+  background-color: #ddd;
+  font-size: 0.7em;
+  padding: 3px;
+}
+
+/*
+.form_foot {
+  background-color: #E5D9C3;
+  font-size: 0.6em;
+}
+*/
+
+.form_foot td { 
+  background-color: #ddd
+  border-bottom: 1px solid black;
+  color: black;
+  padding: 3px;
+  text-align: center;
+  font-size: 0.65em;
+  font-weight: bold;
+}
+
+.form_foot a:link,
+.form_foot a:visited {
+  color: black;
+}
+
+.form_foot a:hover {
+  color: black;
+}
+
+.no_border_input input {
+  border: none;
+}
+
+.no_wrap {
+  white-space: nowrap;
+}
+
+tr.row_form td { 
+  white-space: nowrap;
+}
+
+/* Wizards
+-----------------------------------------------------------------------*/
+.wizard {
+  font-size: 0.8em;
+  border-top: 1px solid black;
+}
+
+#no_border {
+  border: none;
+}
+
+.wizard p {
+  text-indent: 2%;
+}
+
+.wizard td { 
+  padding: 3px;
+/*  padding-left: 3px;
+  padding-right: 3px;
+  padding-bottom: 3px;*/
+}
+
+.wizard input {
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+  padding: 1px 2px 1px 2px;
+  text-decoration: none;
+}
+
+.wizard textarea {
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+}
+
+.wizard select {
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+}
+
+.wizard_head {
+  color: black;
+  font-weight: bold;
+}
+
+.wizard_buttons {
+  border-top: 1px solid black;
+  padding-top: 3px;
+}
+
+.wizard_buttons a {
+  background-color: white;
+  border: 1px solid black;
+  padding: 2px 3px 2px 3px;
+}
+
+/* List
+-----------------------------------------------------------------------*/
+.list_table,
+.notif_list_table {
+  color: black;
+  padding-bottom: 4px;
+  background-color: white;
+}
+
+.list_table td,
+.notif_list_table td { 
+  padding: 3px 5px 3px 5px;
+}
+
+.list_table input {
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+  padding: 1px 2px 1px 2px;
+  text-decoration: none;
+}
+
+.list_head,
+.notif_list_head {
+  font-weight: bold;
+  background-color: #ddd;
+  font-size: 0.65em;
+}
+
+.list_head td,
+.notif_list_head td {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+  color: black;
+  text-align: center;
+  white-space: nowrap;
+}
+
+.list_head a:link,
+.list_head a:visited,
+.notif_list_head a:link,
+.notif_list_head a:visited {
+  color: black;
+}
+
+.list_head a:hover,
+.notif_list_head a:hover {
+}
+
+.list_foot {
+  font-weight: bold;
+  background-color: #ddd;
+  font-size: 0.65em;
+}
+
+.list_foot td {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+  color: black;
+  text-align: right;
+  white-space: nowrap;
+}
+
+.sub_list_head td {
+  border: none;
+  font-size: 0.7em;
+}
+
+.odd_row td {
+/*  background-color: #EDF2F7;
+  border-top: 2px solid #FFFFff;*/
+  background-color: transparent;
+  border-bottom: 0.9px solid #ddd; /* 0.9 so table borders take precedence */
+}
+
+.even_row td {
+/*  background-color: #F8EEE4;
+  border-top: 3px solid #FFFFff;*/
+  background-color: #f6f6f6;
+  border-bottom: 0.9px solid #ddd;
+}
+
+.spacer_row td { 
+  line-height: 2px;
+  font-size: 2px;
+}
+
+.phone_table td {
+  border: none;
+  font-size: 0.8em;
+}
+
+div.notif_list_text { 
+  margin-bottom: 1px;
+  font-size: 1.1em;
+}
+
+.notif_list_row td.notif_list_job { 
+  text-align: center;
+  font-weight: bold;
+  font-size: 0.65em;
+}
+
+.notif_list_row td.notif_list_dismiss table td {
+  text-align: center;
+  font-size: 1em;
+  border: none;
+  padding: 0px 2px 0px 2px;
+}
+
+.notif_list_row td { 
+  padding: 5px 5px 7px 5px;
+  border-bottom: 1px dotted #ddd;
+  background-color: white;
+  font-size: 0.6em;
+}
+
+.notif_list_row:hover td {
+  background-color: #ddd;
+}
+
+/* Page
+-----------------------------------------------------------------------*/
+.page {
+  border: none;
+  padding: 0in;
+  margin-right: 0.1in;
+  margin-left: 0.1in;
+  /*margin: 0.33in 0.33in 0.4in 0.33in; */
+  background-color: transparent;
+}
+
+.page table.header h1{ 
+  font-size: 12pt;
+}
+
+.page>h2,
+.page>p { 
+  margin-top: 2pt;
+  margin-bottom: 2pt;  
+}
+
+.page h2 { 
+  page-break-after: avoid;
+}
+
+.money_table {
+  border-collapse: collapse;
+  font-size: 6pt;
+}
+
+/* Tree
+-----------------------------------------------------------------------*/
+.tree_div { 
+  display: none;
+  background-color: #ddd;
+  border: 1px solid #333;
+}
+
+.tree_div .tree_step_bottom_border { 
+  border-bottom: 1px dashed #8B9DBE;
+}
+
+.tree_div .button, .tree_row_table .button,
+.tree_div .no_button {
+  width: 110px;
+  font-size: 0.7em;
+  padding: 3px;
+  text-align: center;
+}
+
+/*
+.tree_div .button a, .tree_row_table .button a {
+  text-decoration: none;
+  color: #114C8D;
+}
+*/
+
+.tree_row_desc { 
+  font-weight: bold;
+  font-size: 0.7em;
+  text-indent: -10px;  
+}
+
+.tree_row_info {
+  font-size: 0.7em;
+  width: 200px;
+}
+
+.tree_div_head a,
+.tree_row_desc a { 
+  color: #000033;
+  text-decoration: none;
+}
+
+.tree_div_head { 
+  font-weight: bold;
+  font-size: 0.7em;
+}
+
+/* Summaries
+-----------------------------------------------------------------------*/
+.summary {
+  border: 1px solid black;
+  background-color: white;
+  padding: 1%;
+  font-size: 0.8em;
+}
+
+.summary h1 {
+  color: black;
+  font-style: normal;
+}
+
+/* Sales-agreement specific
+-----------------------------------------------------------------------*/
+table.sa_signature_box { 
+  margin: 2em auto 2em auto;
+}
+
+table.sa_signature_box tr td { 
+  padding-top: 1.25em;
+  vertical-align: top;
+  white-space: nowrap;
+}
+
+.special_conditions { 
+  font-style: italic;
+  margin-left: 2em; 
+  white-space: pre;
+}
+
+.sa_head * { 
+  font-size: 7pt;
+}
+
+/* Change order specific
+-----------------------------------------------------------------------*/
+table.change_order_items { 
+  font-size: 8pt;
+  width: 100%;
+  border-collapse: collapse;
+  margin-top: 2em;
+  margin-bottom: 2em;
+}
+
+table.change_order_items>tbody { 
+  border: 1px solid black;
+}
+
+table.change_order_items>tbody>tr>th { 
+  border-bottom: 1px solid black;
+}
+
+table.change_order_items>tbody>tr>td { 
+  border-right: 1px solid black;
+  padding: 0.5em;
+}
+
+td.change_order_total_col { 
+  padding-right: 4pt;
+  text-align: right;
+}
+
+td.change_order_unit_col { 
+  padding-left: 2pt;
+  text-align: left;
+}
Index: /trunk/filemanager/tp/dompdf/www/test/css/importsub.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/css/importsub.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/css/importsub.css	(revision 2000)
@@ -0,0 +1,2 @@
+p.importsub {background-color:#ffffc0;}
+
Index: /trunk/filemanager/tp/dompdf/www/test/css/linkall.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/css/linkall.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/css/linkall.css	(revision 2000)
@@ -0,0 +1,2 @@
+li.link {background-color:#ffffc0;}
+
Index: /trunk/filemanager/tp/dompdf/www/test/css/importprint.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/css/importprint.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/css/importprint.css	(revision 2000)
@@ -0,0 +1,2 @@
+p.import {background-color:#eeeeee;}
+
Index: /trunk/filemanager/tp/dompdf/www/test/unicode.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/unicode.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/unicode.html	(revision 2000)
@@ -0,0 +1,8 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+</head>
+<body style="font-size: 8pt; font-family: verdana, sans-serif;">
+ç®ç»æ¯äº²çç±
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/table_01.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/table_01.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/table_01.html	(revision 2000)
@@ -0,0 +1,24 @@
+<html>
+<head>
+<style>
+
+TABLE {
+border: 3px, solid, #eeeeee;
+}
+
+</style>
+</head>
+
+<body>
+<table border="3">
+ <tr>
+   <td colspan="2">Title</td>
+ </tr>
+ <tr>
+   <td>Kaire</td>
+  <td>Desine</td>
+ </tr>
+</table>
+
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/table.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/table.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/table.html	(revision 2000)
@@ -0,0 +1,106 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+<style>
+body { font-family: verdana;} 
+table {
+  margin-top: 2em;
+}
+
+thead {
+  background-color: #eeeeee;
+}
+
+tbody {
+  background-color: #ffffee;
+}
+
+th,td {
+  padding: 3pt;
+}
+
+table.separate {
+  border-collapse: separate;
+  border-spacing: 5pt;
+  border: 3pt solid #33d;
+}
+
+table.separate td {
+  border: 2pt solid #33d;
+}
+
+table.collapse {
+  border-collapse: collapse;
+  border: 1pt solid black;  
+}
+
+table.collapse td {
+  border: 1pt solid black;
+}
+</style>
+
+</head>
+
+<body>
+
+<table class="separate"> 
+<thead>
+  <tr>
+    <th>head 1</th>
+    <th>head 2</th>
+    <th>head 3</th>
+    <th>head 4</th>
+  </tr>
+</thead>
+  <tr>
+    <td rowspan="2">cell 1</td>
+    <td>cell 2</td>
+    <td colspan="2">cell 3</td>
+  </tr>
+  <tr>
+    <td style="border: 4px double black" colspan="2">cell 4</td>
+    <td rowspan="2">cell 5</td>
+  </tr>
+  <tr>
+    <td colspan="3">cell 6</td>
+  </tr>
+  <tr>
+    <td colspan="4">cell 7</td>
+  </tr>
+</table>
+
+<table class="collapse"> 
+<thead>
+  <tr>
+    <th>head 1</th>
+    <th>head 2</th>
+    <th>head 3</th>
+    <th>head 4</th>
+  </tr>
+</thead>
+  <tbody>
+  <tr>
+    <td>cell 1</td>
+    <td>cell 2</td>
+    <td>cell 3</td>
+    <td>cell 4</td>
+  </tr>
+  <tr>
+    <td colspan="2">cell 5</td>
+    <td>cell 6</td>
+    <td>cell 7</td>
+  </tr>
+  <tr>
+    <td>cell 8</td>
+    <td>cell 9</td>
+    <td colspan="2">cell 10</td>
+  </tr>
+  </tbody>
+  <tr>
+    <td colspan="4">cell 11</td>
+  </tr>
+</table>
+
+
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/print_static.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/print_static.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/print_static.css	(revision 2000)
@@ -0,0 +1,701 @@
+/* Default style definitions */
+
+@import url(common.css);
+
+@page { 
+  margin: 0.25in;
+}
+
+/* General
+-----------------------------------------------------------------------*/
+body { 
+  background-color: transparent;
+  color: black;
+  font-family: "verdana", "sans-serif";
+  margin: 0px;
+  padding-top: 0px;
+  font-size: 1em;
+}
+
+@media print { 
+  p { margin: 2px; }
+}
+
+h1 {
+  font-size: 1.1em;
+  font-style: italic;
+}
+
+h2 {
+  font-size: 1.05em;
+}
+
+img { 
+  border: none;
+}
+
+pre {
+  font-family: "verdana", "sans-serif";
+  font-size: 0.7em;
+}
+
+ul {
+  list-style-type: circle;
+  list-style-position: inside;
+  margin: 0px;
+  padding: 3px;
+}
+
+li.alpha {
+  list-style-type: lower-alpha;
+  margin-left: 15px;
+}
+
+p {
+  font-size: 0.8em;
+}
+
+a:link,
+a:visited {
+  /* font-weight: bold;  */
+  text-decoration: none;
+  color: black;
+}
+
+a:hover {
+  text-decoration: underline;
+}
+
+#body { 
+  padding-bottom: 2em;
+  padding-top: 5px;
+}
+
+#body pre {
+}
+
+.center {
+  text-align: center;
+}
+
+.right {
+  text-align: right;
+}
+
+#money {
+  text-align: right;
+  padding-right: 20px;
+}
+
+/* Footer
+-----------------------------------------------------------------------*/
+#footer {
+  color: black;
+}
+
+#copyright { 
+  padding: 5px;
+  font-size: 0.6em;
+  background-color: white;
+}
+
+#footer_spacer_row {
+  width: 100%;
+}
+
+#footer_spacer_row td {
+  padding: 0px;
+  border-bottom: 1px solid #000033;
+  background-color: #F7CF07;
+  height: 2px;
+  font-size: 2px;
+  line-height: 2px;
+}
+
+#logos {
+  padding: 5px;
+  float: right;
+}
+
+/* Section Header
+-----------------------------------------------------------------------*/
+#section_header {
+  text-align: center;
+}
+
+#job_header { 
+  text-align: left;
+  background-color: white;
+  margin-left: 5px;
+  padding: 5px;
+  border: 1px dashed black;
+}
+
+#job_info {
+  font-weight: bold;
+}
+
+.header_details td {
+  font-size: 0.6em;
+}
+
+.header_label {
+  padding-left: 20px;
+}
+
+.header_field {
+  padding-left: 5px;
+  font-weight: bold;
+}
+
+/* Content
+-----------------------------------------------------------------------*/
+#content {
+  padding: 0.2em 1% 0.2em 1%;
+  min-height: 15em;
+}
+
+.page_buttons {
+  text-align: center;
+  margin: 3px;
+  font-size: 0.7em;
+  white-space: nowrap;
+  font-weight: bold;
+  width: 74%;
+}
+
+.link_bar {
+  font-size: 0.7em;
+  text-align: center;
+  margin: auto;
+/*  white-space: nowrap; */
+}
+
+.link_bar a {
+  white-space: nowrap;
+  font-weight: bold;
+}
+
+.page_menu li {
+  margin: 5px;
+  font-size: 0.8em;
+}
+
+/* Detail
+-----------------------------------------------------------------------*/
+.detail_table {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+  padding: 3px;
+  margin: 15px;
+}
+
+.detail_head td {
+  background-color: #ddd;
+  color: black;
+  font-weight: bold;
+  padding: 3px;
+  font-size: 0.75em;
+  text-align: center;
+}
+
+.detail_label { 
+  padding: 3px;
+  font-size: 0.75em;  
+  width: 16%;
+  border-top: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  background-color: #ddd;
+}
+
+.detail_field { 
+  width: 33%;
+  font-size: 0.8em;
+  color: ;
+  text-align: center;
+  padding: 3px;  
+}
+
+.detail_sub_table {
+  font-size: 1em;
+}
+
+.detail_spacer_row td {
+  border-top: 1px solid white;
+  border-bottom: 1px solid white;
+  background-color: #999;
+  font-size: 2px;
+  line-height: 2px;
+}
+
+#narrow {
+  width: 50%;
+}
+
+.operation {
+  width: 1%;
+}
+
+.summary_spacer_row {
+  font-size: 0.1em;
+}
+
+.bar { 
+  border-top: 1px solid black;
+}
+
+/* Forms
+-----------------------------------------------------------------------*/
+.form {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+  margin-top: 10px;
+}
+
+.form td {
+  padding: 3px;
+}
+
+.form th, .form_head td { 
+  background-color: #ddd
+  border-bottom: 1px solid black;
+  color: black;
+  padding: 3px;
+  text-align: center;
+  font-size: 0.65em;
+  font-weight: bold;
+}
+
+.form_head a:link,
+.form_head a:visited {
+  color: black;
+}
+
+.form_head a:hover {
+}
+
+.sub_form_head td {
+  border: none;
+  font-size: 0.9em;
+  white-space: nowrap;
+}
+
+.form input {
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+  padding: 1px 2px 1px 2px;
+  text-decoration: none;
+  font-size: 1em;
+}
+
+.form textarea {
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+  font-size: 1em;
+}
+
+.form select {
+  color: black;
+  background-color: white;
+  font-size: 1em;
+}
+
+.button, a.button { 
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+  font-weight: normal;
+  white-space: nowrap;
+  text-decoration: none;
+}
+
+a.button { 
+  display: inline-block;
+  text-align: center;
+  padding: 2px;
+}
+
+a.button:hover {
+  text-decoration: none;
+  color: black;
+}
+
+.form_field {
+  color: black;
+  background-color: white;
+  font-size: 0.7em;
+}
+
+.form_label {
+  color: black;
+  background-color: #ddd;
+  font-size: 0.7em;
+  padding: 3px;
+}
+
+/*
+.form_foot {
+  background-color: #E5D9C3;
+  font-size: 0.6em;
+}
+*/
+
+.form_foot td { 
+  background-color: #ddd
+  border-bottom: 1px solid black;
+  color: black;
+  padding: 3px;
+  text-align: center;
+  font-size: 0.65em;
+  font-weight: bold;
+}
+
+.form_foot a:link,
+.form_foot a:visited {
+  color: black;
+}
+
+.form_foot a:hover {
+  color: black;
+}
+
+.no_border_input input {
+  border: none;
+}
+
+.no_wrap {
+  white-space: nowrap;
+}
+
+tr.row_form td { 
+  white-space: nowrap;
+}
+
+/* Wizards
+-----------------------------------------------------------------------*/
+.wizard {
+  font-size: 0.8em;
+  border-top: 1px solid black;
+}
+
+#no_border {
+  border: none;
+}
+
+.wizard p {
+  text-indent: 2%;
+}
+
+.wizard td { 
+  padding: 3px;
+/*  padding-left: 3px;
+  padding-right: 3px;
+  padding-bottom: 3px;*/
+}
+
+.wizard input {
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+  padding: 1px 2px 1px 2px;
+  text-decoration: none;
+}
+
+.wizard textarea {
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+}
+
+.wizard select {
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+}
+
+.wizard_head {
+  color: black;
+  font-weight: bold;
+}
+
+.wizard_buttons {
+  border-top: 1px solid black;
+  padding-top: 3px;
+}
+
+.wizard_buttons a {
+  background-color: white;
+  border: 1px solid black;
+  padding: 2px 3px 2px 3px;
+}
+
+/* List
+-----------------------------------------------------------------------*/
+.list_table,
+.notif_list_table {
+  color: black;
+  padding-bottom: 4px;
+  background-color: white;
+}
+
+.list_table td,
+.notif_list_table td { 
+  padding: 3px 5px 3px 5px;
+}
+
+.list_table input {
+  color: black;
+  background-color: white;
+  border: 1px solid black;
+  padding: 1px 2px 1px 2px;
+  text-decoration: none;
+}
+
+.list_head,
+.notif_list_head {
+  font-weight: bold;
+  background-color: #ddd;
+  font-size: 0.65em;
+}
+
+.list_head td,
+.notif_list_head td {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+  color: black;
+  text-align: center;
+  white-space: nowrap;
+}
+
+.list_head a:link,
+.list_head a:visited,
+.notif_list_head a:link,
+.notif_list_head a:visited {
+  color: black;
+}
+
+.list_head a:hover,
+.notif_list_head a:hover {
+}
+
+.list_foot {
+  font-weight: bold;
+  background-color: #ddd;
+  font-size: 0.65em;
+}
+
+.list_foot td {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+  color: black;
+  text-align: right;
+  white-space: nowrap;
+}
+
+.sub_list_head td {
+  border: none;
+  font-size: 0.7em;
+}
+
+.odd_row td {
+/*  background-color: #EDF2F7;
+  border-top: 2px solid #FFFFff;*/
+  background-color: transparent;
+  border-bottom: 0.9px solid #ddd; /* 0.9 so table borders take precedence */
+}
+
+.even_row td {
+/*  background-color: #F8EEE4;
+  border-top: 3px solid #FFFFff;*/
+  background-color: #f6f6f6;
+  border-bottom: 0.9px solid #ddd;
+}
+
+.spacer_row td { 
+  line-height: 2px;
+  font-size: 2px;
+}
+
+.phone_table td {
+  border: none;
+  font-size: 0.8em;
+}
+
+div.notif_list_text { 
+  margin-bottom: 1px;
+  font-size: 1.1em;
+}
+
+.notif_list_row td.notif_list_job { 
+  text-align: center;
+  font-weight: bold;
+  font-size: 0.65em;
+}
+
+.notif_list_row td.notif_list_dismiss table td {
+  text-align: center;
+  font-size: 1em;
+  border: none;
+  padding: 0px 2px 0px 2px;
+}
+
+.notif_list_row td { 
+  padding: 5px 5px 7px 5px;
+  border-bottom: 1px dotted #ddd;
+  background-color: white;
+  font-size: 0.6em;
+}
+
+.notif_list_row:hover td {
+  background-color: #ddd;
+}
+
+/* Page
+-----------------------------------------------------------------------*/
+.page {
+  border: none;
+  padding: 0in;
+  margin-right: 0.1in;
+  margin-left: 0.1in;
+  /*margin: 0.33in 0.33in 0.4in 0.33in; */
+  background-color: transparent;
+}
+
+.page table.header h1{ 
+  font-size: 12pt;
+}
+
+.page>h2,
+.page>p { 
+  margin-top: 2pt;
+  margin-bottom: 2pt;  
+}
+
+.page h2 { 
+  page-break-after: avoid;
+}
+
+.money_table {
+  border-collapse: collapse;
+  font-size: 6pt;
+}
+
+/* Tree
+-----------------------------------------------------------------------*/
+.tree_div { 
+  display: none;
+  background-color: #ddd;
+  border: 1px solid #333;
+}
+
+.tree_div .tree_step_bottom_border { 
+  border-bottom: 1px dashed #8B9DBE;
+}
+
+.tree_div .button, .tree_row_table .button,
+.tree_div .no_button {
+  width: 110px;
+  font-size: 0.7em;
+  padding: 3px;
+  text-align: center;
+}
+
+/*
+.tree_div .button a, .tree_row_table .button a {
+  text-decoration: none;
+  color: #114C8D;
+}
+*/
+
+.tree_row_desc { 
+  font-weight: bold;
+  font-size: 0.7em;
+  text-indent: -10px;  
+}
+
+.tree_row_info {
+  font-size: 0.7em;
+  width: 200px;
+}
+
+.tree_div_head a,
+.tree_row_desc a { 
+  color: #000033;
+  text-decoration: none;
+}
+
+.tree_div_head { 
+  font-weight: bold;
+  font-size: 0.7em;
+}
+
+/* Summaries
+-----------------------------------------------------------------------*/
+.summary {
+  border: 1px solid black;
+  background-color: white;
+  padding: 1%;
+  font-size: 0.8em;
+}
+
+.summary h1 {
+  color: black;
+  font-style: normal;
+}
+
+/* Sales-agreement specific
+-----------------------------------------------------------------------*/
+table.sa_signature_box { 
+  margin: 2em auto 2em auto;
+}
+
+table.sa_signature_box tr td { 
+  padding-top: 1.25em;
+  vertical-align: top;
+  white-space: nowrap;
+}
+
+.special_conditions { 
+  font-style: italic;
+  margin-left: 2em; 
+  white-space: pre;
+}
+
+.sa_head * { 
+  font-size: 7pt;
+}
+
+/* Change order specific
+-----------------------------------------------------------------------*/
+table.change_order_items { 
+  font-size: 8pt;
+  width: 100%;
+  border-collapse: collapse;
+  margin-top: 2em;
+  margin-bottom: 2em;
+}
+
+table.change_order_items>tbody { 
+  border: 1px solid black;
+}
+
+table.change_order_items>tbody>tr>th { 
+  border-bottom: 1px solid black;
+}
+
+table.change_order_items>tbody>tr>td { 
+  border-right: 1px solid black;
+  padding: 0.5em;
+}
+
+td.change_order_total_col { 
+  padding-right: 4pt;
+  text-align: right;
+}
+
+td.change_order_unit_col { 
+  padding-left: 2pt;
+  text-align: left;
+}
Index: /trunk/filemanager/tp/dompdf/www/test/center_table.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/center_table.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/center_table.html	(revision 2000)
@@ -0,0 +1,19 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+</head>
+<body>
+<table align="center">
+<tr>
+<td>a</td>
+<td>b</td>
+</tr>
+<tr>
+<td>c</td>
+<td>d</td>
+</tr>
+</table>
+
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/latin1.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/latin1.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/latin1.html	(revision 2000)
@@ -0,0 +1,1162 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
+   "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html lang=en>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>HTML 4.0 Latin-1 Entities</title>
+<link rev=Made href="mailto:liam@htmlhelp.com">
+<style>
+body {
+  background: white;
+  color: black;
+  font-family: verdana,sans-serif;
+}
+
+h1 {
+  color: #c33;
+  background: none;
+  font-weight: bold;
+  text-align: center
+}
+
+h2 {
+  color: #00008b;
+  background: none;
+  font-weight: bold
+}
+
+h3 {
+  color: #006400;
+  background: none;
+  margin-left: 4%;
+  margin-right: 4%;
+  font-weight: bold
+}
+
+h4 {
+  margin-left: 6%;
+  margin-right: 6%;
+  font-weight: bold
+}
+
+h5 {
+  margin-left: 6%;
+  margin-right: 6%;
+  font-weight: bold
+}
+
+ul, ol, dl, p {
+  margin-left: 6%;
+  margin-right: 6%
+}
+
+ul ul, table ol, table ul, dl ol, dl ul {
+  margin-left: 1.2em;
+  margin-right: 1%;
+  padding-left: 0
+}
+
+pre {
+  margin-left: 10%;
+  white-space: pre
+}
+
+table caption {
+  font-size: larger;
+  font-weight: bolder
+}
+
+table p, table dl, ol p, ul p, dl p, blockquote p, .note p, .note ul, .note ol, .note dl, li pre, dd pre {
+  margin-left: 0;
+  margin-right: 0
+}
+
+p.top {
+  margin-left: 1%;
+  margin-right: 1%
+}
+
+blockquote {
+  margin-left: 8%;
+  margin-right: 8%;
+  border: thin ridge #dc143c
+}
+
+blockquote pre {
+  margin-left: 1%;
+  margin-right: 1%
+}
+
+dt a {
+  font-weight: bold;
+  margin-top: .8em
+}
+
+a:link {
+  color: #00f;
+  background: none;
+}
+
+a:visited {
+  color: #800080;
+  background: none;
+}
+
+a:active {
+  color: green;
+  background: #FFD700
+}
+
+.html {
+  color: #000080;
+  background: none
+}
+
+.css {
+  color: #800000;
+  background: none
+}
+
+.javascript {
+  color: #008000;
+  background: none
+}
+
+.example { margin-left: 10% }
+
+dfn {
+  font-style: normal;
+  font-weight: bolder
+}
+
+var sub { font-style: normal }
+
+.note {
+  font-size: 85%;
+  margin-left: 10%
+}
+
+.SMA {
+  color: fuchsia;
+  background: none;
+  font-family: Kids, "Comic Sans MS", Jester, sans-serif
+}
+
+.oops {
+  font-family: Jester, "Comic Sans MS", sans-serif
+}
+
+.author {
+  font-style: italic
+}
+
+.copyright {
+  font-size: smaller;
+  text-align: right;
+  clear: right
+}
+
+.toolbar {
+  text-align: center
+}
+
+.toolbar IMG {
+  float: right
+}
+
+.error {
+  color: #DC143C;
+  background: none;
+  text-decoration: none
+}
+
+.warning {
+  color: #FF4500;
+  background: none;
+  text-decoration: none
+}
+
+.error strong {
+  color: #DC143C;
+  background: #FFD700;
+  text-decoration: none
+}
+
+.warning strong {
+  color: #FF4500;
+  background: #FFD700;
+  text-decoration: none
+}
+
+.warning a:link, .warning a:visited, .warning a:active {
+  color: #FF4500;
+  background: none;
+  text-decoration: underline
+}
+
+.error a:link, .error a:visited, .error a:active {
+  color: #DC143C;
+  background: none;
+  text-decoration: underline
+}
+
+.error strong a:link, .error strong a:visited, .error strong a:active {
+  color: #DC143C;
+  background: #FFD700
+}
+
+.warning strong a:link, .warning strong a:visited, .warning strong a:active {
+  color: #FF4500;
+  background: #FFD700
+}
+
+colgroup.entity { text-align: center }
+
+.default { text-decoration: underline; font-style: normal }
+.required { font-weight: bold }
+td li.transitional, .elements li.transitional {
+  font-weight: lighter;
+  color: #696969;
+  background: none
+}
+td li.frameset, .elements li.frameset {
+  font-weight: lighter;
+  color: #808080;
+  background: none
+}
+
+.footer, .checkedDocument {
+  margin-top: 2em;
+  padding-top: 1em;
+  border-top: solid thin black
+}
+
+strong.legal {
+  font-weight: normal;
+  text-transform: uppercase
+}
+
+@media print {
+  input#toggler, .toolbar { display: none }
+}
+
+table { border-collapse: collapse; width: 100%; }
+td { border: 0.5pt solid black; }
+
+</style>
+<meta name="author" content="Liam Quinn">
+<meta name="description" content="A table of the HTML 4.0 entities for Latin-1 (ISO 8859-1) characters.">
+<meta name="keywords" content="Latin-1, ISO-8859-1, entities, characters, character set, accents, accent, accented, HTML, HyperText Markup Language, HTML 4.0, character entity reference, decimal, hexadecimal, hex, browser test, WDG, Web Design Group">
+<body>
+<h1>Latin-1 Entities</h1>
+
+<p>The following table gives the character entity reference, decimal
+character reference, and hexadecimal character reference for 8-bit
+characters in the Latin-1 (ISO-8859-1) character set, as well as the
+rendering of each in your browser. <a
+href="http://www.unicode.org/charts/">Glyphs</a> of the characters are
+available at the <a href="http://www.unicode.org/">Unicode
+Consortium</a>.</p>
+
+<p>Browser support is generally best for the decimal character
+references, except for the accented characters (decimal 192-214,
+216-246, 248-255), where the character entity references hold a slight
+edge.</p>
+
+<p>Note that most Mac browsers will render fourteen Latin-1 characters
+incorrectly. These characters are decimal 166, 178, 179, 185, 188,
+189, 190, 208, 215, 221, 222, 240, 253, and 254. See <a
+href="http://ppewww.ph.gla.ac.uk/%7Eflavell/iso8859/iso8859-mac.html">ISO-8859-1
+and the Mac platform</a> for more information.</p>
+
+<table style="border: none">
+  <thead>
+    <tr>
+      <th rowspan=2>Character</th>
+      <th rowspan=2>Entity</th>
+      <th rowspan=2>Decimal</th>
+      <th rowspan=2>Hex</th>
+      <th colspan=3>Rendering in Your Browser</th>
+    </tr>
+    <tr>
+      <th>Entity</th>
+      <th>Decimal</th>
+      <th>Hex</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td scope=row>no-break space = non-breaking space</td>
+      <td>&amp;nbsp;</td>
+      <td>&amp;#160;</td>
+      <td>&amp;#xA0;</td>
+      <td>&nbsp;</td>
+      <td>&#160;</td>
+      <td>&#xA0;</td>
+    </tr>
+    <tr>
+      <td scope=row>inverted exclamation mark</td>
+      <td>&amp;iexcl;</td>
+      <td>&amp;#161;</td>
+      <td>&amp;#xA1;</td>
+      <td>&iexcl;</td>
+      <td>&#161;</td>
+      <td>&#xA1;</td>
+    </tr>
+    <tr>
+      <td scope=row>cent sign</td>
+      <td>&amp;cent;</td>
+      <td>&amp;#162;</td>
+      <td>&amp;#xA2;</td>
+      <td>&cent;</td>
+      <td>&#162;</td>
+      <td>&#xA2;</td>
+    </tr>
+    <tr>
+      <td scope=row>pound sign</td>
+      <td>&amp;pound;</td>
+      <td>&amp;#163;</td>
+      <td>&amp;#xA3;</td>
+      <td>&pound;</td>
+      <td>&#163;</td>
+      <td>&#xA3;</td>
+    </tr>
+    <tr>
+      <td scope=row>currency sign</td>
+      <td>&amp;curren;</td>
+      <td>&amp;#164;</td>
+      <td>&amp;#xA4;</td>
+      <td>&curren;</td>
+      <td>&#164;</td>
+      <td>&#xA4;</td>
+    </tr>
+    <tr>
+      <td scope=row>yen sign = yuan sign</td>
+      <td>&amp;yen;</td>
+      <td>&amp;#165;</td>
+      <td>&amp;#xA5;</td>
+      <td>&yen;</td>
+      <td>&#165;</td>
+      <td>&#xA5;</td>
+    </tr>
+    <tr>
+      <td scope=row>broken bar = broken vertical bar</td>
+      <td>&amp;brvbar;</td>
+      <td>&amp;#166;</td>
+      <td>&amp;#xA6;</td>
+      <td>&brvbar;</td>
+      <td>&#166;</td>
+      <td>&#xA6;</td>
+    </tr>
+    <tr>
+      <td scope=row>section sign</td>
+      <td>&amp;sect;</td>
+      <td>&amp;#167;</td>
+      <td>&amp;#xA7;</td>
+      <td>&sect;</td>
+      <td>&#167;</td>
+      <td>&#xA7;</td>
+    </tr>
+    <tr>
+      <td scope=row>diaeresis = spacing diaeresis</td>
+      <td>&amp;uml;</td>
+      <td>&amp;#168;</td>
+      <td>&amp;#xA8;</td>
+      <td>&uml;</td>
+      <td>&#168;</td>
+      <td>&#xA8;</td>
+    </tr>
+    <tr>
+      <td scope=row>copyright sign</td>
+      <td>&amp;copy;</td>
+      <td>&amp;#169;</td>
+      <td>&amp;#xA9;</td>
+      <td>&copy;</td>
+      <td>&#169;</td>
+      <td>&#xA9;</td>
+    </tr>
+    <tr>
+      <td scope=row>feminine ordinal indicator</td>
+      <td>&amp;ordf;</td>
+      <td>&amp;#170;</td>
+      <td>&amp;#xAA;</td>
+      <td>&ordf;</td>
+      <td>&#170;</td>
+      <td>&#xAA;</td>
+    </tr>
+    <tr>
+      <td scope=row>left-pointing double angle quotation mark = left pointing guillemet</td>
+      <td>&amp;laquo;</td>
+      <td>&amp;#171;</td>
+      <td>&amp;#xAB;</td>
+      <td>&laquo;</td>
+      <td>&#171;</td>
+      <td>&#xAB;</td>
+    </tr>
+    <tr>
+      <td scope=row>not sign</td>
+      <td>&amp;not;</td>
+      <td>&amp;#172;</td>
+      <td>&amp;#xAC;</td>
+      <td>&not;</td>
+      <td>&#172;</td>
+      <td>&#xAC;</td>
+    </tr>
+    <tr>
+      <td scope=row>soft hyphen = discretionary hyphen</td>
+      <td>&amp;shy;</td>
+      <td>&amp;#173;</td>
+      <td>&amp;#xAD;</td>
+      <td>&shy;</td>
+      <td>&#173;</td>
+      <td>&#xAD;</td>
+    </tr>
+    <tr>
+      <td scope=row>registered sign = registered trade mark sign</td>
+      <td>&amp;reg;</td>
+      <td>&amp;#174;</td>
+      <td>&amp;#xAE;</td>
+      <td>&reg;</td>
+      <td>&#174;</td>
+      <td>&#xAE;</td>
+    </tr>
+    <tr>
+      <td scope=row>macron = spacing macron = overline = APL overbar</td>
+      <td>&amp;macr;</td>
+      <td>&amp;#175;</td>
+      <td>&amp;#xAF;</td>
+      <td>&macr;</td>
+      <td>&#175;</td>
+      <td>&#xAF;</td>
+    </tr>
+    <tr>
+      <td scope=row>degree sign</td>
+      <td>&amp;deg;</td>
+      <td>&amp;#176;</td>
+      <td>&amp;#xB0;</td>
+      <td>&deg;</td>
+      <td>&#176;</td>
+      <td>&#xB0;</td>
+    </tr>
+    <tr>
+      <td scope=row>plus-minus sign = plus-or-minus sign</td>
+      <td>&amp;plusmn;</td>
+      <td>&amp;#177;</td>
+      <td>&amp;#xB1;</td>
+      <td>&plusmn;</td>
+      <td>&#177;</td>
+      <td>&#xB1;</td>
+    </tr>
+    <tr>
+      <td scope=row>superscript two = superscript digit two = squared</td>
+      <td>&amp;sup2;</td>
+      <td>&amp;#178;</td>
+      <td>&amp;#xB2;</td>
+      <td>&sup2;</td>
+      <td>&#178;</td>
+      <td>&#xB2;</td>
+    </tr>
+    <tr>
+      <td scope=row>superscript three = superscript digit three = cubed</td>
+      <td>&amp;sup3;</td>
+      <td>&amp;#179;</td>
+      <td>&amp;#xB3;</td>
+      <td>&sup3;</td>
+      <td>&#179;</td>
+      <td>&#xB3;</td>
+    </tr>
+    <tr>
+      <td scope=row>acute accent = spacing acute</td>
+      <td>&amp;acute;</td>
+      <td>&amp;#180;</td>
+      <td>&amp;#xB4;</td>
+      <td>&acute;</td>
+      <td>&#180;</td>
+      <td>&#xB4;</td>
+    </tr>
+    <tr>
+      <td scope=row>micro sign</td>
+      <td>&amp;micro;</td>
+      <td>&amp;#181;</td>
+      <td>&amp;#xB5;</td>
+      <td>&micro;</td>
+      <td>&#181;</td>
+      <td>&#xB5;</td>
+    </tr>
+    <tr>
+      <td scope=row>pilcrow sign = paragraph sign</td>
+      <td>&amp;para;</td>
+      <td>&amp;#182;</td>
+      <td>&amp;#xB6;</td>
+      <td>&para;</td>
+      <td>&#182;</td>
+      <td>&#xB6;</td>
+    </tr>
+    <tr>
+      <td scope=row>middle dot = Georgian comma = Greek middle dot</td>
+      <td>&amp;middot;</td>
+      <td>&amp;#183;</td>
+      <td>&amp;#xB7;</td>
+      <td>&middot;</td>
+      <td>&#183;</td>
+      <td>&#xB7;</td>
+    </tr>
+    <tr>
+      <td scope=row>cedilla = spacing cedilla</td>
+      <td>&amp;cedil;</td>
+      <td>&amp;#184;</td>
+      <td>&amp;#xB8;</td>
+      <td>&cedil;</td>
+      <td>&#184;</td>
+      <td>&#xB8;</td>
+    </tr>
+    <tr>
+      <td scope=row>superscript one = superscript digit one</td>
+      <td>&amp;sup1;</td>
+      <td>&amp;#185;</td>
+      <td>&amp;#xB9;</td>
+      <td>&sup1;</td>
+      <td>&#185;</td>
+      <td>&#xB9;</td>
+    </tr>
+    <tr>
+      <td scope=row>masculine ordinal indicator</td>
+      <td>&amp;ordm;</td>
+      <td>&amp;#186;</td>
+      <td>&amp;#xBA;</td>
+      <td>&ordm;</td>
+      <td>&#186;</td>
+      <td>&#xBA;</td>
+    </tr>
+    <tr>
+      <td scope=row>right-pointing double angle quotation mark = right pointing guillemet</td>
+      <td>&amp;raquo;</td>
+      <td>&amp;#187;</td>
+      <td>&amp;#xBB;</td>
+      <td>&raquo;</td>
+      <td>&#187;</td>
+      <td>&#xBB;</td>
+    </tr>
+    <tr>
+      <td scope=row>vulgar fraction one quarter = fraction one quarter</td>
+      <td>&amp;frac14;</td>
+      <td>&amp;#188;</td>
+      <td>&amp;#xBC;</td>
+      <td>&frac14;</td>
+      <td>&#188;</td>
+      <td>&#xBC;</td>
+    </tr>
+    <tr>
+      <td scope=row>vulgar fraction one half = fraction one half</td>
+      <td>&amp;frac12;</td>
+      <td>&amp;#189;</td>
+      <td>&amp;#xBD;</td>
+      <td>&frac12;</td>
+      <td>&#189;</td>
+      <td>&#xBD;</td>
+    </tr>
+    <tr>
+      <td scope=row>vulgar fraction three quarters = fraction three quarters</td>
+      <td>&amp;frac34;</td>
+      <td>&amp;#190;</td>
+      <td>&amp;#xBE;</td>
+      <td>&frac34;</td>
+      <td>&#190;</td>
+      <td>&#xBE;</td>
+    </tr>
+    <tr>
+      <td scope=row>inverted question mark = turned question mark</td>
+      <td>&amp;iquest;</td>
+      <td>&amp;#191;</td>
+      <td>&amp;#xBF;</td>
+      <td>&iquest;</td>
+      <td>&#191;</td>
+      <td>&#xBF;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter A with grave = Latin capital letter A grave</td>
+      <td>&amp;Agrave;</td>
+      <td>&amp;#192;</td>
+      <td>&amp;#xC0;</td>
+      <td>&Agrave;</td>
+      <td>&#192;</td>
+      <td>&#xC0;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter A with acute</td>
+      <td>&amp;Aacute;</td>
+      <td>&amp;#193;</td>
+      <td>&amp;#xC1;</td>
+      <td>&Aacute;</td>
+      <td>&#193;</td>
+      <td>&#xC1;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter A with circumflex</td>
+      <td>&amp;Acirc;</td>
+      <td>&amp;#194;</td>
+      <td>&amp;#xC2;</td>
+      <td>&Acirc;</td>
+      <td>&#194;</td>
+      <td>&#xC2;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter A with tilde</td>
+      <td>&amp;Atilde;</td>
+      <td>&amp;#195;</td>
+      <td>&amp;#xC3;</td>
+      <td>&Atilde;</td>
+      <td>&#195;</td>
+      <td>&#xC3;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter A with diaeresis</td>
+      <td>&amp;Auml;</td>
+      <td>&amp;#196;</td>
+      <td>&amp;#xC4;</td>
+      <td>&Auml;</td>
+      <td>&#196;</td>
+      <td>&#xC4;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter A with ring above = Latin capital letter A ring</td>
+      <td>&amp;Aring;</td>
+      <td>&amp;#197;</td>
+      <td>&amp;#xC5;</td>
+      <td>&Aring;</td>
+      <td>&#197;</td>
+      <td>&#xC5;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter AE = Latin capital ligature AE</td>
+      <td>&amp;AElig;</td>
+      <td>&amp;#198;</td>
+      <td>&amp;#xC6;</td>
+      <td>&AElig;</td>
+      <td>&#198;</td>
+      <td>&#xC6;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter C with cedilla</td>
+      <td>&amp;Ccedil;</td>
+      <td>&amp;#199;</td>
+      <td>&amp;#xC7;</td>
+      <td>&Ccedil;</td>
+      <td>&#199;</td>
+      <td>&#xC7;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter E with grave</td>
+      <td>&amp;Egrave;</td>
+      <td>&amp;#200;</td>
+      <td>&amp;#xC8;</td>
+      <td>&Egrave;</td>
+      <td>&#200;</td>
+      <td>&#xC8;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter E with acute</td>
+      <td>&amp;Eacute;</td>
+      <td>&amp;#201;</td>
+      <td>&amp;#xC9;</td>
+      <td>&Eacute;</td>
+      <td>&#201;</td>
+      <td>&#xC9;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter E with circumflex</td>
+      <td>&amp;Ecirc;</td>
+      <td>&amp;#202;</td>
+      <td>&amp;#xCA;</td>
+      <td>&Ecirc;</td>
+      <td>&#202;</td>
+      <td>&#xCA;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter E with diaeresis</td>
+      <td>&amp;Euml;</td>
+      <td>&amp;#203;</td>
+      <td>&amp;#xCB;</td>
+      <td>&Euml;</td>
+      <td>&#203;</td>
+      <td>&#xCB;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter I with grave</td>
+      <td>&amp;Igrave;</td>
+      <td>&amp;#204;</td>
+      <td>&amp;#xCC;</td>
+      <td>&Igrave;</td>
+      <td>&#204;</td>
+      <td>&#xCC;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter I with acute</td>
+      <td>&amp;Iacute;</td>
+      <td>&amp;#205;</td>
+      <td>&amp;#xCD;</td>
+      <td>&Iacute;</td>
+      <td>&#205;</td>
+      <td>&#xCD;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter I with circumflex</td>
+      <td>&amp;Icirc;</td>
+      <td>&amp;#206;</td>
+      <td>&amp;#xCE;</td>
+      <td>&Icirc;</td>
+      <td>&#206;</td>
+      <td>&#xCE;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter I with diaeresis</td>
+      <td>&amp;Iuml;</td>
+      <td>&amp;#207;</td>
+      <td>&amp;#xCF;</td>
+      <td>&Iuml;</td>
+      <td>&#207;</td>
+      <td>&#xCF;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter ETH</td>
+      <td>&amp;ETH;</td>
+      <td>&amp;#208;</td>
+      <td>&amp;#xD0;</td>
+      <td>&ETH;</td>
+      <td>&#208;</td>
+      <td>&#xD0;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter N with tilde</td>
+      <td>&amp;Ntilde;</td>
+      <td>&amp;#209;</td>
+      <td>&amp;#xD1;</td>
+      <td>&Ntilde;</td>
+      <td>&#209;</td>
+      <td>&#xD1;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter O with grave</td>
+      <td>&amp;Ograve;</td>
+      <td>&amp;#210;</td>
+      <td>&amp;#xD2;</td>
+      <td>&Ograve;</td>
+      <td>&#210;</td>
+      <td>&#xD2;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter O with acute</td>
+      <td>&amp;Oacute;</td>
+      <td>&amp;#211;</td>
+      <td>&amp;#xD3;</td>
+      <td>&Oacute;</td>
+      <td>&#211;</td>
+      <td>&#xD3;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter O with circumflex</td>
+      <td>&amp;Ocirc;</td>
+      <td>&amp;#212;</td>
+      <td>&amp;#xD4;</td>
+      <td>&Ocirc;</td>
+      <td>&#212;</td>
+      <td>&#xD4;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter O with tilde</td>
+      <td>&amp;Otilde;</td>
+      <td>&amp;#213;</td>
+      <td>&amp;#xD5;</td>
+      <td>&Otilde;</td>
+      <td>&#213;</td>
+      <td>&#xD5;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter O with diaeresis</td>
+      <td>&amp;Ouml;</td>
+      <td>&amp;#214;</td>
+      <td>&amp;#xD6;</td>
+      <td>&Ouml;</td>
+      <td>&#214;</td>
+      <td>&#xD6;</td>
+    </tr>
+    <tr>
+      <td scope=row>multiplication sign</td>
+      <td>&amp;times;</td>
+      <td>&amp;#215;</td>
+      <td>&amp;#xD7;</td>
+      <td>&times;</td>
+      <td>&#215;</td>
+      <td>&#xD7;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter O with stroke = Latin capital letter O slash</td>
+      <td>&amp;Oslash;</td>
+      <td>&amp;#216;</td>
+      <td>&amp;#xD8;</td>
+      <td>&Oslash;</td>
+      <td>&#216;</td>
+      <td>&#xD8;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter U with grave</td>
+      <td>&amp;Ugrave;</td>
+      <td>&amp;#217;</td>
+      <td>&amp;#xD9;</td>
+      <td>&Ugrave;</td>
+      <td>&#217;</td>
+      <td>&#xD9;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter U with acute</td>
+      <td>&amp;Uacute;</td>
+      <td>&amp;#218;</td>
+      <td>&amp;#xDA;</td>
+      <td>&Uacute;</td>
+      <td>&#218;</td>
+      <td>&#xDA;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter U with circumflex</td>
+      <td>&amp;Ucirc;</td>
+      <td>&amp;#219;</td>
+      <td>&amp;#xDB;</td>
+      <td>&Ucirc;</td>
+      <td>&#219;</td>
+      <td>&#xDB;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter U with diaeresis</td>
+      <td>&amp;Uuml;</td>
+      <td>&amp;#220;</td>
+      <td>&amp;#xDC;</td>
+      <td>&Uuml;</td>
+      <td>&#220;</td>
+      <td>&#xDC;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter Y with acute</td>
+      <td>&amp;Yacute;</td>
+      <td>&amp;#221;</td>
+      <td>&amp;#xDD;</td>
+      <td>&Yacute;</td>
+      <td>&#221;</td>
+      <td>&#xDD;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin capital letter THORN</td>
+      <td>&amp;THORN;</td>
+      <td>&amp;#222;</td>
+      <td>&amp;#xDE;</td>
+      <td>&THORN;</td>
+      <td>&#222;</td>
+      <td>&#xDE;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter sharp s = ess-zed</td>
+      <td>&amp;szlig;</td>
+      <td>&amp;#223;</td>
+      <td>&amp;#xDF;</td>
+      <td>&szlig;</td>
+      <td>&#223;</td>
+      <td>&#xDF;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter a with grave = Latin small letter a grave</td>
+      <td>&amp;agrave;</td>
+      <td>&amp;#224;</td>
+      <td>&amp;#xE0;</td>
+      <td>&agrave;</td>
+      <td>&#224;</td>
+      <td>&#xE0;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter a with acute</td>
+      <td>&amp;aacute;</td>
+      <td>&amp;#225;</td>
+      <td>&amp;#xE1;</td>
+      <td>&aacute;</td>
+      <td>&#225;</td>
+      <td>&#xE1;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter a with circumflex</td>
+      <td>&amp;acirc;</td>
+      <td>&amp;#226;</td>
+      <td>&amp;#xE2;</td>
+      <td>&acirc;</td>
+      <td>&#226;</td>
+      <td>&#xE2;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter a with tilde</td>
+      <td>&amp;atilde;</td>
+      <td>&amp;#227;</td>
+      <td>&amp;#xE3;</td>
+      <td>&atilde;</td>
+      <td>&#227;</td>
+      <td>&#xE3;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter a with diaeresis</td>
+      <td>&amp;auml;</td>
+      <td>&amp;#228;</td>
+      <td>&amp;#xE4;</td>
+      <td>&auml;</td>
+      <td>&#228;</td>
+      <td>&#xE4;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter a with ring above = Latin small letter a ring</td>
+      <td>&amp;aring;</td>
+      <td>&amp;#229;</td>
+      <td>&amp;#xE5;</td>
+      <td>&aring;</td>
+      <td>&#229;</td>
+      <td>&#xE5;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter ae = Latin small ligature ae</td>
+      <td>&amp;aelig;</td>
+      <td>&amp;#230;</td>
+      <td>&amp;#xE6;</td>
+      <td>&aelig;</td>
+      <td>&#230;</td>
+      <td>&#xE6;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter c with cedilla</td>
+      <td>&amp;ccedil;</td>
+      <td>&amp;#231;</td>
+      <td>&amp;#xE7;</td>
+      <td>&ccedil;</td>
+      <td>&#231;</td>
+      <td>&#xE7;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter e with grave</td>
+      <td>&amp;egrave;</td>
+      <td>&amp;#232;</td>
+      <td>&amp;#xE8;</td>
+      <td>&egrave;</td>
+      <td>&#232;</td>
+      <td>&#xE8;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter e with acute</td>
+      <td>&amp;eacute;</td>
+      <td>&amp;#233;</td>
+      <td>&amp;#xE9;</td>
+      <td>&eacute;</td>
+      <td>&#233;</td>
+      <td>&#xE9;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter e with circumflex</td>
+      <td>&amp;ecirc;</td>
+      <td>&amp;#234;</td>
+      <td>&amp;#xEA;</td>
+      <td>&ecirc;</td>
+      <td>&#234;</td>
+      <td>&#xEA;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter e with diaeresis</td>
+      <td>&amp;euml;</td>
+      <td>&amp;#235;</td>
+      <td>&amp;#xEB;</td>
+      <td>&euml;</td>
+      <td>&#235;</td>
+      <td>&#xEB;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter i with grave</td>
+      <td>&amp;igrave;</td>
+      <td>&amp;#236;</td>
+      <td>&amp;#xEC;</td>
+      <td>&igrave;</td>
+      <td>&#236;</td>
+      <td>&#xEC;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter i with acute</td>
+      <td>&amp;iacute;</td>
+      <td>&amp;#237;</td>
+      <td>&amp;#xED;</td>
+      <td>&iacute;</td>
+      <td>&#237;</td>
+      <td>&#xED;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter i with circumflex</td>
+      <td>&amp;icirc;</td>
+      <td>&amp;#238;</td>
+      <td>&amp;#xEE;</td>
+      <td>&icirc;</td>
+      <td>&#238;</td>
+      <td>&#xEE;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter i with diaeresis</td>
+      <td>&amp;iuml;</td>
+      <td>&amp;#239;</td>
+      <td>&amp;#xEF;</td>
+      <td>&iuml;</td>
+      <td>&#239;</td>
+      <td>&#xEF;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter eth</td>
+      <td>&amp;eth;</td>
+      <td>&amp;#240;</td>
+      <td>&amp;#xF0;</td>
+      <td>&eth;</td>
+      <td>&#240;</td>
+      <td>&#xF0;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter n with tilde</td>
+      <td>&amp;ntilde;</td>
+      <td>&amp;#241;</td>
+      <td>&amp;#xF1;</td>
+      <td>&ntilde;</td>
+      <td>&#241;</td>
+      <td>&#xF1;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter o with grave</td>
+      <td>&amp;ograve;</td>
+      <td>&amp;#242;</td>
+      <td>&amp;#xF2;</td>
+      <td>&ograve;</td>
+      <td>&#242;</td>
+      <td>&#xF2;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter o with acute</td>
+      <td>&amp;oacute;</td>
+      <td>&amp;#243;</td>
+      <td>&amp;#xF3;</td>
+      <td>&oacute;</td>
+      <td>&#243;</td>
+      <td>&#xF3;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter o with circumflex</td>
+      <td>&amp;ocirc;</td>
+      <td>&amp;#244;</td>
+      <td>&amp;#xF4;</td>
+      <td>&ocirc;</td>
+      <td>&#244;</td>
+      <td>&#xF4;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter o with tilde</td>
+      <td>&amp;otilde;</td>
+      <td>&amp;#245;</td>
+      <td>&amp;#xF5;</td>
+      <td>&otilde;</td>
+      <td>&#245;</td>
+      <td>&#xF5;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter o with diaeresis</td>
+      <td>&amp;ouml;</td>
+      <td>&amp;#246;</td>
+      <td>&amp;#xF6;</td>
+      <td>&ouml;</td>
+      <td>&#246;</td>
+      <td>&#xF6;</td>
+    </tr>
+    <tr>
+      <td scope=row>division sign</td>
+      <td>&amp;divide;</td>
+      <td>&amp;#247;</td>
+      <td>&amp;#xF7;</td>
+      <td>&divide;</td>
+      <td>&#247;</td>
+      <td>&#xF7;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter o with stroke = Latin small letter o slash</td>
+      <td>&amp;oslash;</td>
+      <td>&amp;#248;</td>
+      <td>&amp;#xF8;</td>
+      <td>&oslash;</td>
+      <td>&#248;</td>
+      <td>&#xF8;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter u with grave</td>
+      <td>&amp;ugrave;</td>
+      <td>&amp;#249;</td>
+      <td>&amp;#xF9;</td>
+      <td>&ugrave;</td>
+      <td>&#249;</td>
+      <td>&#xF9;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter u with acute</td>
+      <td>&amp;uacute;</td>
+      <td>&amp;#250;</td>
+      <td>&amp;#xFA;</td>
+      <td>&uacute;</td>
+      <td>&#250;</td>
+      <td>&#xFA;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter u with circumflex</td>
+      <td>&amp;ucirc;</td>
+      <td>&amp;#251;</td>
+      <td>&amp;#xFB;</td>
+      <td>&ucirc;</td>
+      <td>&#251;</td>
+      <td>&#xFB;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter u with diaeresis</td>
+      <td>&amp;uuml;</td>
+      <td>&amp;#252;</td>
+      <td>&amp;#xFC;</td>
+      <td>&uuml;</td>
+      <td>&#252;</td>
+      <td>&#xFC;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter y with acute</td>
+      <td>&amp;yacute;</td>
+      <td>&amp;#253;</td>
+      <td>&amp;#xFD;</td>
+      <td>&yacute;</td>
+      <td>&#253;</td>
+      <td>&#xFD;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter thorn</td>
+      <td>&amp;thorn;</td>
+      <td>&amp;#254;</td>
+      <td>&amp;#xFE;</td>
+      <td>&thorn;</td>
+      <td>&#254;</td>
+      <td>&#xFE;</td>
+    </tr>
+    <tr>
+      <td scope=row>Latin small letter y with diaeresis</td>
+      <td>&amp;yuml;</td>
+      <td>&amp;#255;</td>
+      <td>&amp;#xFF;</td>
+      <td>&yuml;</td>
+      <td>&#255;</td>
+      <td>&#xFF;</td>
+    </tr>
+  </tbody>
+</table>
+
+<div class=footer>
+<address>Maintained by <a href="http://www.htmlhelp.com/%7Eliam/">Liam Quinn</a> &lt;<a href="mailto:liam@htmlhelp.com">liam@htmlhelp.com</a>&gt;</address>
+<p class=toolbar><a href="../index.html" rel=Start>HTML 4.0 Reference</a> ~ <a href="symbols.html" rel=Next>Symbols and Greek Letters</a> ~ <a href="special.html">Other Special Characters</a></p>
+<p class=copyright>Copyright &copy; 1998 by <a href="http://www.htmlhelp.com/%7Eliam/">Liam Quinn</a>. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at <a href="http://www.opencontent.org/openpub/">http://www.opencontent.org/openpub/</a>).</p>
+<p class=copyright>Modfications made by Benj Carson <a>benjcarson@digitaljunkies.ca</a> for dompdf, Jan 5, 2006.</p>
+</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/nested_table.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/nested_table.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/nested_table.html	(revision 2000)
@@ -0,0 +1,61 @@
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<style>
+table { border-collapse: separate; border-spacing: 5px; margin: 1px; border: 1px solid black; }
+td { border: 1px solid grey; width: 10px; height: 10px; padding: 2px;}
+td td { border: 1px solid green; }
+td td td { border: 1px solid red; }
+</style>
+<body>
+
+<table>
+<tr>
+<td>
+  <table>
+  <tr>
+  <td>foo</td>
+  </tr>
+  <tr>
+  <td>bar</td>
+  </tr>
+  </table>
+</td>
+</tr>
+</table>
+
+<table style="margin-top: 1em; width: 300px;">
+<tr>
+<td>
+  <table>
+  <tr>
+  <td>
+    <table>
+    <tr>
+    <td colspan="2">a</td>
+    </tr>
+    <tr>
+    <td>b</td>
+    <td>c</td>
+    </tr>
+    </table>
+  </td>
+  <td rowspan="2">d</td>
+  </tr>
+  <tr>
+  <td>e</td>
+  </tr>
+  </table>
+</td> 
+<td>f</td>
+</tr>
+<tr>
+<td>g</td>
+<td>h</td>
+</tr>
+</table>    
+
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/simple_ul.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/simple_ul.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/simple_ul.html	(revision 2000)
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+
+</head>
+
+<body>
+<p>Here's a simple list from my favourite website:</p>
+
+<ul>
+  <li>The Zend Engine II  with a new object model and dozens of new features.</li>
+
+  <li>XML support has been completely redone in PHP 5, all extensions are
+  now focused around the excellent libxml2 library
+  (http://www.xmlsoft.org/).</li>
+
+  <li>A new SimpleXML extension for easily accessing and manipulating XML
+  as PHP objects. It can also interface with the DOM extension and
+  vice-versa.</li>
+
+  <li>A brand new built-in SOAP extension for interoperability with Web Services.</li>
+
+  <li>A new MySQL extension named MySQLi for developers using MySQL 4.1 and
+  later. This new extension includes an object-oriented interface in
+  addition to a traditional interface; as well as support for many of
+  MySQL's new features, such as prepared statements.</li>
+
+  <li>SQLite has been bundled with PHP. For more information on SQLite,
+  please visit their website. </li>
+
+  <li>Streams have been greatly improved, including the ability to access low-level socket operations on streams.</li>
+
+  <li>And lots more...</li>
+
+  <ul><li>Sublists</li><li>work</li><li>too!</li></ul>
+</ul>
+
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/table_image.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/table_image.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/table_image.html	(revision 2000)
@@ -0,0 +1,19 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
+<title></title>
+</head>
+<body>
+<table>
+<tr>
+<td><img src="images/dompdf_simple.png"/></td>
+<td>Some Text</td>
+</tr>
+<tr>
+<td>More Text</td>
+<td>Blah</td>
+</tr>
+</table>
+
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/remote.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/remote.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/remote.html	(revision 2000)
@@ -0,0 +1,21 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<link rel="stylesheet" href="http://www.digitaljunkies.ca/dompdf/style.css" type="text/css"/>
+<style>
+#content {
+  margin: 0.25in;
+  width: 100%;
+}
+</style>
+</head>
+<body>
+<div id="content">
+<h2>Remote CSS &amp; Image Test</h2>
+<h3>CSS: <a href="http://www.digitaljunkies.ca/dompdf/style.css">www.digitaljunkies.ca/dompdf/style.css</a></h3>
+<p>Testing remote image: <img src="http://www.digitaljunkies.ca/dompdf/images/title.gif"/></p>
+<p>Note: DOMPDF_ENABLE_REMOTE must be enabled for this test to work.</p>
+</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/unicode_wrapping.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/unicode_wrapping.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/unicode_wrapping.html	(revision 2000)
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Wrapping of non-ANSI characters</title>
+</head>
+
+<body>
+No se tendrÃ¡ en cuenta el hecho de que las partes tengan sus establecimientos en Estados diferentes
+cuando ello no resulte del contrato, ni de los tratos entre ellas, ni de informaciÃ³n revelada por
+las partes en cualquier momento antes de la celebraciÃ³n del contrato o en el momento de su celebraciÃ³n.
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/large_table.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/large_table.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/large_table.html	(revision 2000)
@@ -0,0 +1,2197 @@
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<style>
+/* Style definitions for pdfs */
+
+/**********************************************************************/
+/* Default style definitions
+/**********************************************************************/
+
+/* General
+-----------------------------------------------------------------------*/
+body {
+  background-color: #114C8D;
+  color: #000033;
+  font-family: "verdana", "sans-serif";
+  margin: 0px;
+  padding-top: 0px;
+  font-size: 1em;
+}
+
+h1 {
+  font-size: 1.1em;
+  color: #114C8D;
+  font-style: italic;
+}
+
+h2 {
+  font-size: 1.05em;
+  color: #114C8D;
+}
+
+h3 { 
+  font-size: 1em;
+  color: #114C8D;
+}
+
+img { 
+  border: none;
+}
+
+img.border {
+  border: 1px solid #114C8D;
+}
+
+pre {
+  font-family: "verdana", "sans-serif";
+  color: #FFFFff;
+  font-size: 0.7em;
+}
+
+ul {
+  color: #BEAC8B;
+  list-style-type: circle;
+  list-style-position: inside;
+  margin: 0px;
+  padding: 3px;
+}
+
+li { 
+  color: #000033;
+}
+
+li.alpha {
+  list-style-type: lower-alpha;
+  margin-left: 15px;
+}
+
+p {
+  font-size: 0.8em;
+}
+
+a:link,
+a:visited {
+  text-decoration: none;
+  color: #114C8D;
+}
+
+a:hover {
+  text-decoration: underline;
+  color: #860000;
+}
+
+hr {
+  border: 0;
+}
+
+#page_header { 
+  position: relative; /* required to make the z-index work */  
+  z-index: 2;
+}
+
+#body { 
+  background-color: #F9F0E9;
+  padding: 12px 0.5% 2em 3px;
+  min-height: 20em;
+  margin: 0px;
+  width: 100%;
+}
+
+#body pre {
+  color: #000033;
+}
+
+#left_column { 
+  width: 84%;
+  height: auto;
+  padding-right: 8px;
+  padding-bottom: 30px;
+}
+
+#right_column {
+/*  position: absolute;
+  right: 0.5%;*/
+  padding-left: 16px;
+  width: 15%;
+  min-width: 160px;
+}
+
+
+/* Inputs
+-----------------------------------------------------------------------*/
+input {
+  color: #114C8D;
+  border: 1px solid #114C8D;
+  background-color: #FFFFff;
+  font-family: "verdana", "sans-serif";
+  font-size: 1em;
+  padding-left: 3px;
+}
+
+select {
+  color: #114C8D;
+  border: 1px solid #114C8D;
+  background-color: #FFFFff;
+  font-family: "verdana", "sans-serif";
+  font-size: 1em;
+}
+
+textarea {
+  color: #114C8D;
+  border: 1px solid #114C8D;
+  background-color: #FFFFff;
+  font-family: "verdana", "sans-serif";
+  font-size: 1em;
+}
+
+a.button {
+  color: #114C8D;
+  border: 1px solid #114C8D;
+  background-color: #FFFFff;
+  font-size: 11px;
+  font-weight: normal;
+/*  font-size: 0.75em; */
+  -moz-border-radius: 4px;
+  padding: 1px 6px 1px 6px;
+  cursor: pointer;
+  white-space: nowrap;
+  text-align: center;
+}
+
+a.button:hover {
+  text-decoration: none;
+}
+
+a.block_button {
+  color: #114C8D;
+  border: 1px solid #114C8D;
+  background-color: #FFFFff;
+  font-size: 11px;
+  -moz-border-radius: 4px;
+  padding: 1px 6px 1px 6px;
+  cursor: pointer;
+  white-space: nowrap;
+  text-align: center;
+  display: block;
+}
+
+a.block_button:hover {
+  text-decoration: none;
+}
+
+input[type=button], 
+input[type=submit], 
+input[type=reset] {
+  -moz-border-radius: 4px;
+  cursor: pointer;
+  font-size: 11px;
+/*  font-size: 0.75em; */
+  padding: 0px 3px 0px 3px;
+}
+
+input[type=checkbox] {
+  border: none;
+}
+
+input[disabled],
+input[readonly] { 
+  background-color: #dddddd;
+}
+
+input.ok {
+  padding-left: 12px;
+  background-image: url(/images/check.png);
+  background-repeat: no-repeat;
+  background-position: 3px center;
+}
+
+input.cancel { 
+  padding-left: 12px;
+  background-image: url(/images/small_cancel.png);
+  background-repeat: no-repeat;
+  background-position: 3px center;
+}
+
+/* Footer
+-----------------------------------------------------------------------*/
+#footer {
+  color: #FFFFff;
+  border-top: 1px solid #000033;
+}
+
+#copyright { 
+  padding: 5px;
+  font-size: 0.6em;
+  background-color: #114C8D;
+}
+
+#footer_spacer_row {
+  border-spacing: 0;
+  width: 100%;
+}
+
+#footer_spacer_row td {
+  padding: 0px;
+  border-bottom: 1px solid #000033;
+  background-color: #F7CF07;
+  height: 2px;
+  font-size: 2px;
+  line-height: 2px;
+}
+
+#logos {
+  padding: 5px;
+  float: right;
+}
+
+
+/* Plugins
+-----------------------------------------------------------------------*/
+#plugin_box {
+  width: 100%;
+  min-width: 160px;
+  padding: 0px;
+  float: right;
+  background-color: #EDF2F7;
+  border: 1px solid #114C8D;
+  margin: 0px 0px 2em 0px;
+}
+
+.plugin_header {
+  font-size: 0.7em;
+  font-weight: bold;
+  padding: 2px;
+  background-color: #114C8D;
+  color: #FFFFff;
+}
+
+ul.side_menu_list>li { 
+  color: #BEAC8B;
+}
+
+ul.side_menu_list>li {
+  font-size: 0.7em;
+  font-weight: bold;
+  margin-left: 0.5%;
+  list-style-type: none;
+}
+
+ul.side_menu_sublist>li {
+  font-size: 0.7em;
+  color: black;
+  font-weight: normal;
+  margin-left: 10%;
+  list-style-position: outside;
+}
+
+
+.plugin_shade {
+  float: right;
+}
+
+
+#plugin_box p {
+  font-size: 0.7em;
+  margin: 0px 0px 3px 5%;
+}
+
+.plugin {
+  border-spacing: 0px;
+  width: 98%;
+  margin: 3px auto 3px auto;
+}
+
+.plugin td {
+  font-size: 0.7em;
+}
+
+.plugin td.field {
+  background-color: #EDF2F7;
+}
+
+.plugin td.field_center {
+  background-color: #EDF2F7;
+}
+
+.plugin td.label {
+  background-color: #EDF2F7;
+}
+
+.plugin tr.foot td {
+  text-align: center;
+  font-size: 0.7em;
+}
+
+/* Menu
+-----------------------------------------------------------------------*/
+#main_menu { 
+  width: 100%;
+  position: absolute;
+  margin: 0px;
+  font-size: 0.7em;
+  background-color: #F9F0E9;
+  z-index: 1;
+}
+
+#menu_group_head { 
+  margin: 0px;
+  position: relative;
+  background-color: #EDF2F7;
+  white-space: nowrap;
+  font-weight: bold;
+  border-bottom: 1px solid #114C8D;
+  padding: 3px 3px 2px 3px;
+  color: #114C8D;
+}
+
+#menu_group_head>a {
+  padding: 4px 6px 2px 6px;
+}
+
+#menu_group_head>a:hover { 
+  text-decoration: none;
+  cursor: pointer;
+  color: #FFFFff;
+  background-color: #114C8D;
+}
+
+ul.menu_group { 
+  z-index: 2;
+  position: absolute;
+  display: none;
+  background-color: #EDF2F7;
+  border: 1px solid #114C8D;
+  border-top: none;
+  padding: 2px 0px 4px 0px;
+}
+
+ul.menu_group li { 
+  color: #114C8D;    
+  list-style: none;
+  margin-top: 4px;
+  margin-bottom: 4px;
+  padding: 2px 12px 2px 12px;
+  font-size: 1.05em;
+}
+
+ul.menu_group>a:hover,
+ul.menu_group>a:hover>li,
+ul.menu_group>a>li:hover { 
+  text-decoration: none;
+  color: #114C8D;
+  background-color: #DDE1E6;
+}
+
+/* Message area
+-----------------------------------------------------------------------*/
+#message_area {
+  background-color: #EDF2F7;
+  color: #000033;
+  margin-left: 0.5%;
+/*  margin-right: 19.5%; */
+  margin-bottom: 1em;
+  padding: 0.2em 1% 0.5em 1%;
+  border: 1px solid #114C8D;
+}
+
+#message_area h2 {
+  margin: 0px 0px 0.5em 0px;
+  font-size: 1em;
+  font-style: italic;
+}
+
+.message { 
+  font-size: 0.8em;
+}
+
+/* Tooltips
+-----------------------------------------------------------------------*/
+.tooltip { 
+  display: none;
+  position: absolute; 
+  font-size: 10px;
+  line-height: 12px;
+  width: 20em;
+  background-color: #EDF2F7;
+  border: 1px solid #114C8D;
+  color: #114C8D;
+  padding: 5px;
+  z-index: 3;
+}
+
+/* Section Header
+-----------------------------------------------------------------------*/
+#section_header {
+/*  margin-right: 19.5%; */
+  background-color: #BEAC8B;
+  padding: 5px;
+  margin-right: 8px;
+  border: 1px solid #8B7958;
+}
+
+#job_info {
+  font-weight: bold;
+}
+
+#job_buttons a.button { 
+  background-color: #E5D9C3;
+}
+
+.header_details {
+  border-spacing: 0px;
+}
+
+.header_details td {
+  font-size: 0.6em;
+}
+
+.header_label {
+  padding-left: 20px;
+  font-weight: bold;
+}
+
+.header_field {
+  padding-left: 5px;
+}
+
+
+/* Content
+-----------------------------------------------------------------------*/
+.page_buttons {
+  text-align: center;
+  margin: 3px;
+  font-size: 0.7em;
+  white-space: nowrap;
+  font-weight: bold;
+  width: 74%;
+}
+
+.link_bar {
+  white-space: nowrap;
+  padding: 3px 0px 0px 0px;
+  margin: -1px 8px 2em 0px;
+  font-size: 0.7em;
+  text-align: center;
+}
+
+.link_bar a {
+  background-color: #E5D9C3;  
+  border: 1px solid #8B7958;
+  -moz-border-radius-bottomleft: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-top: none;
+  padding: 2px 3px 3px 3px;
+  margin-right: 2px;  
+  white-space: nowrap;  
+}
+
+.link_bar a.selected,
+.link_bar a:hover { 
+  background-color: #BEAC8B;  
+  color: #114C8D;
+  padding-top: 3px;
+  border: 1px solid #8B7958;
+  border-top: none;
+  text-decoration: none;
+}
+
+.page_menu li {
+  margin: 5px;
+  font-size: 0.8em;
+}
+
+
+/* Pop-Up
+-----------------------------------------------------------------------*/
+#popup_header {
+  padding: 3px;
+  text-align: center;
+}
+
+#popup_body { 
+  background-color: #F9F0E9;
+  padding-bottom: 5px;
+  padding-top: 5px;
+}
+
+#popup_content {
+  padding: 0.2em 1% 0px 1%;
+}
+
+
+/* Tables
+-----------------------------------------------------------------------*/
+table {
+  empty-cells: show;
+}
+
+.head td {
+  color: #8B7958;
+  background-color: #E5D9C3;
+  font-weight: bold;
+  font-size: 0.7em;
+  padding: 3px;
+}
+
+.head input {
+  font-weight: normal;
+}
+
+.sub_head td {
+  border: none;
+  white-space: nowrap;
+  font-size: 10px;
+}
+
+.foot td {
+  color: #8B7958;
+  background-color: #E5D9C3;
+  font-size: 0.8em;
+}
+
+.label {
+  color: #8B7958;
+  background-color: #F8F5F2;
+  padding: 3px;
+  font-size: 0.75em;
+}
+
+.label_right {
+  color: #8B7958;
+  background-color: #F8F5F2;
+  padding: 3px;
+  font-size: 0.75em;
+  text-align: right;
+  padding-right: 1em;
+}
+
+.sublabel {
+  color: #8B7958;
+  font-size: 0.6em;
+  padding: 0px;
+  text-align: center;
+}
+
+.field {
+  color: #000033;
+  background-color: #F9F0E9;
+  padding: 3px;
+  font-size: 0.75em;
+}
+
+.field_center {
+  color: #000033;
+  background-color: #F9F0E9;
+  padding: 3px;
+  font-size: 0.75em;  
+  text-align: center;
+}
+
+.field_nw {
+  color: #000033;
+  background-color: #F9F0E9;
+  padding: 3px;
+  font-size: 0.75em;
+  white-space: nowrap;
+}
+
+.field_money {
+  color: #000033;
+  background-color: #F9F0E9;
+  padding: 3px;
+  font-size: 0.75em;
+  white-space: nowrap;
+  text-align: right;
+}
+
+.field_total {
+  color: #000033;
+  background-color: #F9F0E9;
+  padding: 3px;
+  font-size: 0.75em;
+  white-space: nowrap;
+  text-align: right;
+  font-weight: bold;
+  border-top: 1px solid black;
+}
+
+/* Table Data
+-----------------------------------------------------------------------*/
+.h_scrollable { 
+  overflow: -moz-scrollbars-horizontal;
+}
+
+.v_scrollable { 
+  overflow: -moz-scrollbars-vertical;
+}
+
+.scrollable {
+  overflow: auto;/*-moz-scrollbars-horizontal;*/
+}
+
+tr.head>td.center,
+tr.list_row>td.center,
+.center {
+  text-align: center;
+}
+
+.left,
+tr.head>td.left,
+tr.list_row>td.left { 
+  text-align: left;
+  padding-left: 2em;
+}
+
+.total,
+.right,
+.list tr.head td.right,
+tr.list_row td.right,
+tr.foot td.right,
+tr.foot td.total {
+  text-align: right;
+  padding-right: 2em;
+}
+
+.list tr.foot td {
+  font-weight: bold;
+}
+
+.no_wrap {
+  white-space: nowrap;
+}
+
+.bar {
+  border-top: 1px solid black;
+}
+
+.total {
+  font-weight: bold;
+}
+
+.summary_spacer_row {
+  line-height: 2px;
+}
+
+.light { 
+  color: #999999;
+}
+
+/* Detail
+-----------------------------------------------------------------------*/
+.fax_head,
+.narrow,
+.detail {
+  border-spacing: 1px;
+  border-top: 1px solid #8B7958;
+  border-bottom: 1px solid #8B7958;
+  width: 99%;
+  padding: 3px;
+  margin-bottom: 10px;
+}
+
+.detail td.label {
+  width: 16%;
+  background-color: #F9F0E9;
+}
+
+.detail td.field {
+  width: 33%;
+  text-align: center;
+  background-color: #F8F5F2;
+}
+
+.detail_spacer_row td {
+  background-color: #BEAC8B;
+  font-size: 2px;
+  line-height: 2px;
+  padding: 0px;
+  border-top: 1px solid #F9F0E9;
+  border-bottom: 1px solid #F9F0E9;
+}
+
+.detail td.field_money {
+  width: 33%;
+  background-color: #F8F5F2;
+}
+
+.narrow {
+  width: 60%;
+}
+
+.narrow td.label { 
+  width: 50%;
+  background-color: #F9F0E9;
+}
+
+.narrow td.field_money,
+.narrow td.field_total,
+.narrow td.field { 
+  width: 49%;
+}
+
+.narrow td.field_money,
+.narrow td.field { 
+  background-color: #F8F5F2;
+}
+
+.narrow td.field_total,
+.narrow td.field_money {
+  padding-right: 4em;
+}
+
+.detail td.field {
+  text-align: center;
+  background-color: #F8F5F2;
+}
+
+.fax_head td.label {
+  width: 7%;
+}
+
+.fax_head td.field {
+  width: 26%;
+}
+
+.operation {
+  width: 1%;
+}
+
+/* Wizards
+-----------------------------------------------------------------------*/
+.wizard {
+/*  border-spacing: 0px; */
+  border-top: 1px solid #8B7958;
+  border-bottom: 1px solid #8B7958;
+}
+
+.wizard_buttons {
+  font-size: 0.75em;
+  margin: 3px;
+}
+
+/* Forms
+-----------------------------------------------------------------------*/
+.form {
+/*  border-spacing: 0px; */
+  border-top: 1px solid #8B7958;
+  border-bottom: 1px solid #8B7958;
+  padding: 1px;
+}
+
+.form tr.head input {
+  font-weight: normal;
+}
+
+.form tr.head td {
+  padding: 2px;
+}
+
+.form tr.foot td {
+  text-align: center;
+  padding: 2px;
+}
+
+
+/* Lists
+-----------------------------------------------------------------------*/
+.list {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  border-top: 1px solid #8B7958;
+  border-bottom: 1px solid #8B7958;
+  width: 99%;
+  margin-top: 3px;
+}
+
+.list tr.head td {
+  font-size: 0.7em;
+  white-space: nowrap;
+  padding-right: 0.65em;
+  border-bottom: 1px solid #8B7958;
+}
+
+.list table.sub_head td {
+  border: none;
+  white-space: nowrap;
+  font-size: 10px;
+}
+
+.list tr.foot td {
+  border-top: 1px solid #8B7958;
+  font-size: 0.7em;
+}
+
+tr.list_row>td {
+  background-color: #EDF2F7;
+  border-bottom: 1px dotted #8B7958;
+  font-size: 0.65em;
+  padding: 3px;
+}
+
+tr.list_row:hover td {
+  background-color: #F8EEE4;
+}
+
+tr.problem_row>td {
+  background-color: #FDCCCC;
+  border-bottom: 1px dotted #8B7958;
+  font-size: 0.65em;
+  padding: 3px;
+}
+
+tr.problem_row:hover td {
+  background-color: #F8EEE4;
+}
+
+.row_form td {
+  font-size: 0.7em;
+  padding: 3px;
+  white-space: nowrap;
+/*  text-align: center; */
+}
+
+.row_form td.label {
+  text-align: left;
+  white-space: normal;
+}
+
+.inline_header td {
+  color: #8B7958;
+  font-size: 0.6em;
+  white-space: nowrap;
+  text-align: center;
+}
+
+/* Sub-Tables
+-----------------------------------------------------------------------*/
+.sub_table {
+  border-spacing: 0px;
+}
+
+.sub_table tr.head td {
+  font-size: 11px;
+  padding: 3px;
+  background-color: #F9F0E9;
+}
+
+.sub_table td {
+  padding: 3px;
+}
+
+/* Reports
+-----------------------------------------------------------------------*/
+.report { 
+  border-collapse: collapse;
+  border-spacing: 0px;
+  border-top: 1px solid #8B7958;
+  border-bottom: 1px solid #8B7958;
+  width: 80%;
+  margin-top: 3px;
+}
+
+.report tr td { 
+  padding: 4px 6px;
+}
+
+.report tr.head td { 
+  font-size: 0.7em;
+  white-space: nowrap;
+  text-align: center;
+  border-bottom: 1px solid #8B7958;
+}
+
+.report tr.foot td { 
+  font-size: 0.7em;
+  border-top: 1px solid #8B7958;
+}
+
+.report tr.list_row>td { 
+  background-color: #EDF2F7;
+  border-bottom: 1px dotted #8B7958;
+  font-size: 0.65em;
+}
+
+.report tr.list_row:hover td { 
+  background-color: #F8EEE4;
+}
+
+.report td.total_col {
+  font-weight: bold;
+  border-left: 1px dotted #8B7958;
+  text-align: center;  
+  width: 10%;
+}
+
+.report tr.head td.group_col { 
+  text-align: left;
+}
+
+.report td.group_col { 
+  font-weight: bold;
+  text-align: left;
+  border-right: 1px dotted #8B7958;
+  width: 12%;
+}
+
+.graph { 
+  width: 80%;
+  margin-top: 2em;
+  margin-bottom: 3em;
+  text-align: center;
+}
+
+
+/* Notifications
+-----------------------------------------------------------------------*/
+.notification_list {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  border-top: 1px solid #8B7958;
+  border-bottom: 1px solid #8B7958;
+  width: 99%;
+}
+
+.notification_list tr.head td {
+  font-size: 0.65em;
+  white-space: nowrap;
+  text-align: center;
+  border-bottom: 1px solid #8B7958;
+}
+
+.notification_list tr.foot td {
+  border-top: 1px solid #8B7958;
+}
+
+.notification_list tr.list_row td {
+  padding: 7px;
+}
+
+div.notif_list_text { 
+  margin-bottom: 1px;
+  font-size: 1.1em;
+}
+
+.list_row>td.notif_list_job { 
+  white-space: nowrap;
+  text-align: center;
+  font-weight: bold;
+  font-size: 0.65em;
+  white-space: nowrap;
+}
+
+/* Some of the system messages are long and look bad with a highlighted
+background... */
+#system_notif_table tr.list_row:hover > td {
+  background-color: #EDF2F7;
+}
+
+.notif_select_column {
+  width: 2%;
+  padding: 0px;
+  text-align: center;
+}
+
+.notif_job_column {
+  width: 8%; 
+  white-space: nowrap; 
+  padding-left: 0px; 
+  font-weight: bold; 
+  text-align: center;
+}
+
+.notif_notif_column {
+  width: auto;
+}
+
+.notif_date_column { 
+  width: 15%; 
+  text-align: center;
+  white-space: nowrap;
+  padding-right: 3px;
+}
+
+
+
+/* Notes
+-----------------------------------------------------------------------*/
+/* Note Table */
+table#topic_list { 
+  border-bottom: 1px solid #E5D9C3; 
+  border-collapse: separate;
+}
+
+/* Note Form */
+.note_form {
+  background-color: #F9F0E9;
+  position: absolute;
+  left: 20%;
+  display: none;
+  border: 2px solid #114C8D;   
+}
+
+.note_form table.form {
+  margin-top: 2em;
+}
+
+.handle {
+  background-color: #114C8D;
+  color: #FFFFff;
+  margin-bottom: 3px; 
+  height: 16px;
+}
+
+.note_form_close { 
+  font-weight: bold;
+  font-size: 9px;
+  padding: 0px 2px 0px 2px;
+  margin-right: 2px;
+  position: absolute;
+  right: 0%;
+  border: 1px solid #114C8D;
+}
+
+a.note_form_close:hover { 
+  text-decoration: none;
+}
+
+.list_row:hover>td table.add_note tr.add_note_foot td,
+.list_row:hover>td table.add_note tr.add_note_head td { background-color: #E5D9C3; }
+.list_row:hover>td table.add_note tr td { background-color: #F9F0E9; }
+
+.add_note td { 
+  border: none;
+  padding: 3px;
+  background-color: #F9F0E9;
+  font-size: 9px; 
+}
+
+.add_note_head td {
+  background-color: #E5D9C3;
+  border-top: 1px solid #8B7958;
+  border-bottom: 1px solid #8B7958;
+  color: #8B7958;
+  padding: 3px;
+  text-align: center;
+  font-weight: bold;
+  font-size: 9px; 
+}
+
+.add_note input {   
+  color: #114C8D;
+  background-color: #FFFFff;
+  border: 1px solid #114C8D;
+  padding: 1px 2px 1px 2px;
+  text-decoration: none;
+  font-size: 9px; 
+}
+
+.add_note textarea { 
+  color: #114C8D;
+  background-color: #FFFFff;
+  border: 1px solid #114C8D;
+  padding: 1px 2px 1px 2px;
+  font-family: "verdana", "sans-serif";
+  font-size: 9px; 
+}
+
+.add_note select   { 
+  color: #114C8D;
+  background-color: #FFFFff;
+  font-size: 9px; 
+}
+
+.add_note_foot td { 
+  background-color: #E5D9C3;
+  border-bottom: 1px solid #8B7958;
+  color: #8B7958;
+  padding: 3px;
+  text-align: center;
+  font-weight: bold;
+  font-size: 9px;
+}
+
+/* Note List */
+.note>td {
+  background-color: #EDF2F7;
+  padding-left: 10px;
+  border-bottom: 1px dotted #E5D9C3;
+}
+
+.note:hover>td,
+.note:hover>td>p {
+  background-color: #EDF2F7;
+}
+
+.note_author {
+  font-size: 0.65em;
+  text-align: center;
+  border-right: 1px dotted #E5D9C3;
+}
+
+.note p {
+  margin-left: 3%;
+  font-size: 0.75em;
+  background-color: #EDF2F7;
+}
+
+.topic_spacer td {
+  border-bottom: 1px solid #8B7958;
+  line-height: 2px;
+}
+
+td.note_indent {
+  background-color: #F9F0E9;
+  width: 2%;
+  border-bottom: none;
+}
+
+.note_control td { 
+  padding-left: 2%;
+  padding-bottom: 1%;
+  font-weight: normal;
+  font-size: 0.6em;
+  background-color: #EDF2F7;
+  border-bottom: 1px dotted #E5D9C3;
+}
+
+.topic_title {
+  font-size: 0.8em;
+  font-weight: bold;
+}
+
+.note_title {
+  font-size: 0.8em;
+}
+
+.problem .topic_title {
+  color: #860000;
+}
+
+.thread>tr { display: none; }
+
+/* Summaries
+-----------------------------------------------------------------------*/
+.summary {
+  border: 1px solid black;
+  background-color: white;
+  padding: 1%;
+  font-size: 0.8em;
+}
+
+.summary h1 {
+  color: black;
+  font-style: normal;
+}
+
+/* Print preview
+-----------------------------------------------------------------------*/
+.page { 
+  background-color: white;
+  padding: 0px;
+  border: 1px solid black;
+/*  font-size: 0.7em; */
+  width: 95%;
+  margin-bottom: 15px;
+  margin-right: 5px;
+  padding: 20px;
+}
+
+.page table.header td {
+  padding: 0px;
+}
+
+.page table.header td h1 { 
+  padding: 0px;
+  margin: 0px;
+}
+
+.page h1 {
+  color: black;
+  font-style: normal;
+  font-size: 1.3em;
+}
+
+.page h2 {
+  color: black;
+}
+
+.page h3 {
+  color: black;
+  font-size: 1em;
+}
+
+.page p { 
+  text-align: justify;
+  font-size: 0.8em;
+}
+
+.page table { 
+  font-size: 0.8em;
+}
+
+.page em {
+  font-weight: bold;
+  font-style: normal;
+  text-decoration: underline;
+  margin-left: 1%;
+  margin-right: 1%;
+}
+
+.page table.money_table {
+  font-size: 1.1em;
+  border-collapse: collapse;
+  width: 85%;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.page table.money_table tr.foot td { 
+  font-size: 1em;
+  border-top: 0.4pt solid black;
+  font-weight: bold;
+  background-color: white;
+  color: black;
+}
+
+.page table.money_table tr.foot td.right { 
+  padding-right: 1px;
+}
+
+.written_field {
+  border-bottom: 1px solid black;
+}
+
+.page .written_field { 
+  border-bottom: 0.4pt solid black;
+}
+
+.page .indent * { margin-left: 4em; }
+
+.checkbox { 
+  border: 1px solid black;
+  padding: 1px 2px;
+  font-size: 7px;
+  font-weight: bold;
+}
+
+
+table.signature_table { 
+  width: 80%;
+  font-size: 0.7em;
+  margin: 2em auto 2em auto;
+}
+
+table.signature_table tr td { 
+  padding-top: 1.5em;
+  vertical-align: top;
+  white-space: nowrap;
+}
+
+#special_conditions { 
+  font-size: 1.3em;  
+  font-style: italic;
+  margin-left: 2em;
+  font-weight: bold;
+}
+
+.sa_head p {
+  font-size: 1em;
+}
+
+
+.page hr {
+  border-bottom: 1px solid black;
+}
+
+.page table.detail,
+.page table.fax_head {
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.page .narrow,
+.page .fax_head {
+  border: none;
+}
+
+.page tr.head td {
+  color: black;
+  background-color: #eee;
+}
+
+.page td.label {
+  color: black;
+  background-color: white;
+  width: 20%;
+}
+
+.page td.label_right {
+  color: black;
+  background-color: white;
+}
+
+.page td.field {
+  background-color: white;
+  font-weight: bold;
+}
+
+.page td.field_money {
+  background-color: white;
+}
+
+.page td.field_total {
+  font-weight: bold;
+  background-color: white;
+}
+
+.page tr.detail_spacer_row td {
+  background-color: white;
+  border-top: 1px solid black;
+}
+
+.page .header { 
+  border-spacing: 0px;
+  border-collapse: collapse;
+  padding: 0px;
+}
+
+.page .header tr td {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+  background-color: #eee;
+}
+/* Style definitions for printable pages */
+
+
+/* Hide non-printing stuff
+-----------------------------------------------------------------------*/
+#page_header,
+#main_menu,
+#right_column,
+#footer {
+  display: none;
+}
+
+/* General
+-----------------------------------------------------------------------*/
+@page { 
+  margin: 0.25in;
+}
+
+body { 
+  background-color: white;
+  color: black;
+}
+
+h1 {
+  color: black;
+}
+
+h2 {
+  color: black;
+}
+
+pre {
+  color: black;
+}
+
+ul {
+  color: black;
+}
+
+a:link,
+a:visited {
+  color: black;
+}
+
+a:hover {
+  text-decoration: none;
+  color: black;
+}
+
+p a {
+  display: none;
+}
+
+#body { 
+  background-color: white;
+}
+
+#body pre {
+  color: black;
+}
+
+/* Inputs
+-----------------------------------------------------------------------*/
+input {
+  color: black;
+  border: 1px solid black;
+  background-color: white;
+}
+
+select {
+  color: black;
+  border: 1px solid black;
+  background-color: white;
+}
+
+textarea {
+  color: black;
+  border: 1px solid black;
+  background-color: white;
+}
+
+a.button {
+  display: none;
+}
+
+a.block_button {
+  display: none;
+}
+
+input[type=button], 
+input[type=submit], 
+input[type=reset] {
+  display: none;
+}
+
+/* Tooltips
+-----------------------------------------------------------------------*/
+.tooltip { 
+  display: none;
+}
+
+/* Message area
+-----------------------------------------------------------------------*/
+#message_area {
+  display: none;
+}
+
+/* Section Header
+-----------------------------------------------------------------------*/
+#section_header {
+  background-color: #ddd;
+  border: 1px dashed #666;
+}
+
+/* Content
+-----------------------------------------------------------------------*/
+.page_buttons {
+  display: none;
+}
+
+.link_bar {
+  display: none;
+}
+
+/* Tables
+-----------------------------------------------------------------------*/
+.head td {
+  color: black;
+  background-color: white;
+}
+
+.head input {
+}
+
+.foot td {
+  color: black;
+  background-color: white;
+}
+
+.label {
+  color: black;
+  background-color: white;
+}
+
+.sublabel {
+  color: black;
+}
+
+.field {
+  color: black;
+  background-color: white;
+}
+
+.field_center {
+  color: black;
+  background-color: white;
+}
+
+.field_nw {
+  color: black;
+  background-color: white;
+}
+
+.field_money {
+  color: black;
+  background-color: white;
+}
+
+.field_total {
+  color: black;
+  background-color: white;
+}
+
+/* Detail
+-----------------------------------------------------------------------*/
+.detail {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+}
+
+.detail td.label {
+  background-color: white;
+}
+
+.detail td.field_total,
+.detail td.field {
+  font-weight: bold;
+  background-color: #eee;
+}
+
+.detail td.field_money { 
+  background-color: #eee;
+}
+
+.detail_spacer_row td {
+  background-color: white;
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+}
+
+.narrow td.label {
+  background-color: white;
+}
+
+.narrow td.field {
+  background-color: #eee;
+}
+
+/* Wizards
+-----------------------------------------------------------------------*/
+.wizard {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+}
+
+/* Forms
+-----------------------------------------------------------------------*/
+.form {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+}
+
+/* Lists
+-----------------------------------------------------------------------*/
+.list {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+}
+
+.list tr.head>td {
+  border-bottom: 1px solid black;
+}
+.list tr.foot td {
+  border-top: 1px solid black;
+}
+
+tr.list_row>td {
+  background-color: white;
+  border-bottom: 1px dotted #666;
+}
+
+tr.list_row:hover td {
+  background-color: white;
+}
+
+/* Notifications
+-----------------------------------------------------------------------*/
+.notification_list {
+  border-top: 1px solid black;
+  border-bottom: 1px solid black;
+}
+
+.notification_list tr.head td {
+  border-bottom: 1px solid black;
+}
+
+.notification_list tr.foot td {
+  border-top: 1px solid black;
+}
+
+#system_notif_table tr.list_row:hover > td {
+  background-color: white;
+}
+
+/* Notes
+-----------------------------------------------------------------------*/
+/* Note Table */
+table#topic_list { 
+  border-bottom: 1px solid #eee;
+}
+
+/* Note Form */
+.note_form {
+  display: none;
+}
+
+/* Note List */
+.note>td {
+  background-color: white
+  border-bottom: 1px dotted #eee;
+}
+
+.note:hover>td,
+.note:hover>td>p {
+  background-color: white;
+}
+
+.note_author {
+  border-right: 1px dotted #eee;
+}
+
+.note td {
+  background-color: white;
+}
+
+.note p {
+  background-color: white;
+}
+
+.topic_spacer td {
+  border-bottom: 1px solid black;
+}
+
+td.note_indent {
+  background-color: white;
+}
+
+.note_control td { 
+  background-color: white;
+  border-bottom: 1px dotted #eee;
+}
+
+.problem .topic_title {
+  color: black;
+}
+
+/* Summaries
+-----------------------------------------------------------------------*/
+.summary {
+  border: 1px solid black;
+  background-color: white;
+}
+
+.summary h1 {
+  color: black;
+}
+
+/* Pages
+-----------------------------------------------------------------------*/
+.page>*>p, .page>p { 
+  font-size: 1.5em;
+}
+
+.written_field { 
+  font-size: 1em;
+  border-bottom: 1px solid black;
+}
+
+.page h1 {
+  font-size: 1em;
+}
+
+.page h2 { 
+  font-size: 0.9em;
+}
+
+@page {
+  margin-bottom: 0.75in;
+}
+/* General
+-----------------------------------------------------------------------*/
+body { background-color: white; }
+
+/* Detail
+-----------------------------------------------------------------------*/
+
+.narrow td.field,
+.detail td.field { 
+  text-align: left;
+  padding-left: 1em;
+  background-color: white;
+}
+
+/* Lists
+-----------------------------------------------------------------------*/
+.list tr.head td { 
+  background-color: #eee;
+}
+
+tr.list_row>td {
+  background-color: white;
+  border-bottom: 0.7pt dotted #666;
+}
+
+.list tr.foot td { 
+  background-color: #eee;
+}
+
+/* Pages
+-----------------------------------------------------------------------*/
+.page { 
+  font-size: 1em;
+  border: none;
+  margin: none;
+  width: auto;
+  padding: 0px;
+}
+
+.foot td { 
+  font-size: 1em;
+}
+
+
+.page>*>p, .page>p { 
+  font-size: 0.8em;
+}
+
+
+table.signature_table { 
+  width: 88%;
+  font-size: 0.6em;  
+}
+
+#special_conditions { 
+  font-size: 1.5em;
+}
+
+.header h1 {
+  font-size: 0.8em;
+}
+
+p.small { 
+  font-size: 0.8em;
+}
+
+.page td {
+  padding: 1px;
+}
+
+td.label {
+  font-size: 0.7em;
+}
+
+td.field {
+  font-size: 0.7em;
+}
+
+td.field_money {
+  font-size: 0.7em;
+}</style>
+</head>
+<body class="page">
+
+<script type="text/php">
+
+if ( isset($pdf) ) {
+
+  $font = Font_Metrics::get_font("verdana");;
+  $size = 6;
+  $color = array(0,0,0);
+  $text_height = Font_Metrics::get_font_height($font, $size);
+
+  $foot = $pdf->open_object();
+  
+  $w = $pdf->get_width();
+  $h = $pdf->get_height();
+
+  // Draw a line along the bottom
+  $y = $h - 2.5 * $text_height - 24;
+  $pdf->line(16, $y, $w - 16, $y, array(0,0,0), 1);
+
+  $y += $text_height;
+
+  // Add the job number
+  $text = "Job: 404-135";
+  $pdf->text(16, $y, $text, $font, $size, $color);
+
+  $pdf->close_object();
+  $pdf->add_object($foot, "all");
+
+  
+  if ( !"2004-11-18 17:19:38" ) {
+    // Add an initals box if the document has not already been approved
+  
+    global $initials;
+    $initials = $pdf->open_object();
+    
+    $text = "Initials:";
+    $width = Font_Metrics::get_text_width($text, $font, $size);
+    $pdf->text($w - 16 - $width - 38, $y, $text, $font, $size, $color);
+    $pdf->rectangle($w - 16 - 36, $y - 2, 36, $text_height + 4, array(0.5,0.5,0.5), 0.5);
+    
+        $pdf->close_object();
+    $pdf->add_object($initials);
+
+  } else {
+
+    // Mark the document as a duplicate if has been approved
+    $watermark = $pdf->open_object();
+    $pdf->text(110, $h - 240, "DUPLICATE", Font_Metrics::get_font("verdana", "bold"),
+               110, array(0.5, 0.5, 0.5), 0, -52, "Normal", 0.5);
+
+    $text = "Approved: 2004-11-18";
+    $width = Font_Metrics::get_text_width($text, $font, $size);
+    $pdf->text($w - 16 - $width, $y, $text, $font, $size, $color);
+    
+    $pdf->close_object();
+    $pdf->add_object($watermark, "all");
+  }
+
+  $text = "Page {PAGE_NUM} of {PAGE_COUNT}";  
+  $width = Font_Metrics::get_text_width("Page 1 of 2", $font, $size);
+
+  $pdf->page_text($w / 2 - $width / 2, $y, $text, $font, $size, $color);
+  
+}
+</script>
+<table style="width: 100%" class="header">
+<tr>
+<td style="width: 50%; vertical-align: middle;">
+<h1 style="text-align: left">SCHEDULE A</h1>
+</td>
+
+<td style="width: 50%; text-align: right;">
+<h1 style="text-align: right">404-135 - Schedule A</h1>
+<span style="font-weight: bold; font-size: 0.7em;">APPROVED: 2004-11-18</span>
+</tr>
+
+</table>
+
+<table class="detail" style="margin: 0px; border-top: none;">
+
+<tr>
+<td class="label">Job:
+<td class="field">404-135</td>
+<td class="label">Purchasers:</td>
+<td class="field">
+Komant</td>
+</tr>
+
+<tr>
+<td class="label">Created:</td>
+<td class="field">2004-09-28</td>
+<td class="label">Last change:</td>
+<td class="field">2004-11-18</td>
+
+</tr>
+
+<tr>
+<td class="label">Job address:</td>
+<td class="field">2904-26 Street</td>
+<td class="label">Legal:</td>
+<td class="field">28B/22/032-5210</td>
+</tr>
+</table>
+
+<table class="detail" style="border-top: none; margin: 0px 0px 1.5em 0px;">
+<tr>
+<td class="label" style="width: 8.25%">Model:</td>
+<td class="field" style="width: 16.5%"></td>
+<td class="label" style="width: 8.25%">Elevation:</td>
+<td class="field" style="width: 16.5%"></td>
+<td class="label" style="width: 8.25%">Size:</td>
+<td class="field" style="width: 16.5%"></td>
+<td class="label" style="width: 8.25%">Style:</td>
+<td class="field" style="width: 16.5%"></td>
+</tr>
+
+</table>
+
+
+<table class="list" style="width: 99%; margin-top: 1em;">
+
+<tr class="head">
+<td class="center" style="width: 15%">Item</td>
+<td style="width: 30%">Description</td>
+<td class="center" style="width: 10%">Quantity</td>
+<td class="center" colspan="2" style="width: 15%">Unit Cost</td>
+<td class="right" style="width: 15%;">Total</td>
+</tr>
+
+
+<tr class="list_row">
+<td style="font-weight: bold" colspan="6">Standard items:</td>
+  </tr>
+
+<tr class="list_row"><td class="center">1</td>
+<td>add bank of drawers - to bathroom vanity</td>
+<td class="center">2</td>
+<td style="text-align: right">$125.00</td>
+<td>Ea.</td>
+<td class="right">$250.00</td>
+</tr><tr class="list_row"><td class="center">2</td>
+<td>add sweep outlet - central vac</td>
+<td class="center">1</td>
+<td style="text-align: right">$100.00</td>
+<td>Ea.</td>
+<td class="right">$100.00</td>
+</tr><tr class="list_row"><td class="center">3</td>
+<td>run central vac rough in to attached garage c/w separate circuit</td>
+<td class="center">1</td>
+<td style="text-align: right">$120.00</td>
+<td>Ea.</td>
+<td class="right">$120.00</td>
+</tr><tr class="list_row"><td class="center">4</td>
+<td>add fan to FIREPLACE</td>
+<td class="center">1</td>
+<td style="text-align: right">$195.00</td>
+<td>Ea.</td>
+<td class="right">$195.00</td>
+</tr><tr class="list_row"><td class="center">5</td>
+<td>upgrade to laminate flooring - Entire Main Floor</td>
+<td class="center">1</td>
+<td style="text-align: right">$2,400.00</td>
+<td>Ea.</td>
+<td class="right">$2,400.00</td>
+</tr><tr class="list_row"><td class="center">6</td>
+<td>upgrade oh door to insulated (9ft)</td>
+<td class="center">1</td>
+<td style="text-align: right">$95.00</td>
+<td>Ea.</td>
+<td class="right">$95.00</td>
+</tr><tr class="list_row"><td class="center">7</td>
+<td>change upper stairwell ledge to painted MDF</td>
+<td class="center">1</td>
+<td style="text-align: right">$45.00</td>
+<td>Ea.</td>
+<td class="right">$45.00</td>
+</tr><tr class="list_row"><td class="center">8</td>
+<td>upgrade standard door to pocket door</td>
+<td class="center">1</td>
+<td style="text-align: right">$145.00</td>
+<td>Ea.</td>
+<td class="right">$145.00</td>
+</tr><tr class="list_row"><td class="center">9</td>
+<td>add RIDP</td>
+<td class="center">1</td>
+<td style="text-align: right">$400.00</td>
+<td>Ea.</td>
+<td class="right">$400.00</td>
+</tr>
+
+<tr class="list_row">
+<td style="font-weight: bold" colspan="6">Standard items:</td>
+  </tr>
+
+<tr class="list_row"><td class="center">1</td>
+<td>add bank of drawers - to bathroom vanity</td>
+<td class="center">2</td>
+<td style="text-align: right">$125.00</td>
+<td>Ea.</td>
+<td class="right">$250.00</td>
+</tr><tr class="list_row"><td class="center">2</td>
+<td>add sweep outlet - central vac</td>
+<td class="center">1</td>
+<td style="text-align: right">$100.00</td>
+<td>Ea.</td>
+<td class="right">$100.00</td>
+</tr><tr class="list_row"><td class="center">3</td>
+<td>run central vac rough in to attached garage c/w separate circuit</td>
+<td class="center">1</td>
+<td style="text-align: right">$120.00</td>
+<td>Ea.</td>
+<td class="right">$120.00</td>
+</tr><tr class="list_row"><td class="center">4</td>
+<td>add fan to FIREPLACE</td>
+<td class="center">1</td>
+<td style="text-align: right">$195.00</td>
+<td>Ea.</td>
+<td class="right">$195.00</td>
+</tr><tr class="list_row"><td class="center">5</td>
+<td>upgrade to laminate flooring - Entire Main Floor</td>
+<td class="center">1</td>
+<td style="text-align: right">$2,400.00</td>
+<td>Ea.</td>
+<td class="right">$2,400.00</td>
+</tr><tr class="list_row"><td class="center">6</td>
+<td>upgrade oh door to insulated (9ft)</td>
+<td class="center">1</td>
+<td style="text-align: right">$95.00</td>
+<td>Ea.</td>
+<td class="right">$95.00</td>
+</tr><tr class="list_row"><td class="center">7</td>
+<td>change upper stairwell ledge to painted MDF</td>
+<td class="center">1</td>
+<td style="text-align: right">$45.00</td>
+<td>Ea.</td>
+<td class="right">$45.00</td>
+</tr><tr class="list_row"><td class="center">8</td>
+<td>upgrade standard door to pocket door</td>
+<td class="center">1</td>
+<td style="text-align: right">$145.00</td>
+<td>Ea.</td>
+<td class="right">$145.00</td>
+</tr><tr class="list_row"><td class="center">9</td>
+<td>add RIDP</td>
+<td class="center">1</td>
+<td style="text-align: right">$400.00</td>
+<td>Ea.</td>
+<td class="right">$400.00</td>
+</tr>
+
+<tr class="list_row">
+<td style="font-weight: bold" colspan="6">Custom items:</td>
+</tr>
+
+    <tr class="list_row">
+  <td class="center">1</td>
+<td>upgrade to brushed chrome hardware </td>
+<td class="center">1</td>
+<td style="text-align: right">$195.00</td>
+<td>Ea.</td>
+<td class="right">$195.00</td>
+    </tr>
+    <tr class="list_row">
+  <td class="center">2</td>
+<td>box out FIREPLACE as per plan attached</td>
+<td class="center">1</td>
+<td style="text-align: right">$250.00</td>
+<td>Ea.</td>
+<td class="right">$250.00</td>
+    </tr>
+    <tr class="list_row">
+  <td class="center">3</td>
+<td>reduce WIC size by 6&quot; to 8&quot; to allow for large vanity ensuite</td>
+<td class="center">1</td>
+<td style="text-align: right">$0.00</td>
+<td>Ea.</td>
+<td class="right">$0.00</td>
+    </tr>
+    <tr class="list_row">
+  <td class="center">4</td>
+<td>add gas line to basement for future gas FP</td>
+<td class="center">1</td>
+<td style="text-align: right">$300.00</td>
+<td>Ea.</td>
+<td class="right">$300.00</td>
+    </tr>
+    <tr class="list_row">
+  <td class="center">5</td>
+<td>add pocket dorr to ensuite joining WIC and Ensuite.  Delete 2 existing doors</td>
+<td class="center">1</td>
+<td style="text-align: right">$0.00</td>
+<td>Ea.</td>
+<td class="right">$0.00</td>
+    </tr>
+    <tr class="list_row">
+  <td class="center">6</td>
+<td>Main floor to be ISLAND Kitchen design</td>
+<td class="center">1</td>
+<td style="text-align: right">$0.00</td>
+<td>Ea.</td>
+<td class="right">$0.00</td>
+    </tr>
+    <tr class="list_row">
+  <td class="center">7</td>
+<td>price adjustment</td>
+<td class="center">1</td>
+<td style="text-align: right">($0.37)</td>
+<td>Ea.</td>
+<td class="right">($0.37)</td>
+    </tr>
+  
+<tr class="list_row">
+<td style="font-weight: bold" colspan="6">Custom items:</td>
+</tr>
+
+    <tr class="list_row">
+  <td class="center">1</td>
+<td>upgrade to brushed chrome hardware </td>
+<td class="center">1</td>
+<td style="text-align: right">$195.00</td>
+<td>Ea.</td>
+<td class="right">$195.00</td>
+    </tr>
+    <tr class="list_row">
+  <td class="center">2</td>
+<td>box out FIREPLACE as per plan attached</td>
+<td class="center">1</td>
+<td style="text-align: right">$250.00</td>
+<td>Ea.</td>
+<td class="right">$250.00</td>
+    </tr>
+    <tr class="list_row">
+  <td class="center">3</td>
+<td>reduce WIC size by 6&quot; to 8&quot; to allow for large vanity ensuite</td>
+<td class="center">1</td>
+<td style="text-align: right">$0.00</td>
+<td>Ea.</td>
+<td class="right">$0.00</td>
+    </tr>
+    <tr class="list_row">
+  <td class="center">4</td>
+<td>add gas line to basement for future gas FP</td>
+<td class="center">1</td>
+<td style="text-align: right">$300.00</td>
+<td>Ea.</td>
+<td class="right">$300.00</td>
+    </tr>
+    <tr class="list_row">
+  <td class="center">5</td>
+<td>add pocket dorr to ensuite joining WIC and Ensuite.  Delete 2 existing doors</td>
+<td class="center">1</td>
+<td style="text-align: right">$0.00</td>
+<td>Ea.</td>
+<td class="right">$0.00</td>
+    </tr>
+
+
+
+
+<tr class="foot">
+<td colspan="5" class="right">(GST is not included)&nbsp;&nbsp;
+<strong>Grand total:</strong></td>
+<td class="right" style="font-weight: bold">$4,494.63</td>
+</tr>
+
+
+</table><div style="font-size: 0.8em">
+<table class="signature_table">
+
+  <tr>    
+    <td>WITNESS:</td><td class="written_field" style="width: 38%">&nbsp;</td>
+    <td style="padding-left: 1em">PURCHASER:</td>
+    <td class="written_field" style="width: 39%; text-align: right;">X</td>
+  </tr>
+  <tr>
+    <td colspan="3" style="padding-top: 0em">&nbsp;</td>
+    <td style="text-align: center; padding-top: 0em;">
+              Tammy Komant</td>
+  </tr>
+</table>
+<p style="font-size: 0.65em">This change order shall have no force or effect until approved and signed
+by an authorizing signing officer of the Builder.  Any change or special
+request not noted on this document is not contractual.</p>
+
+<table class="signature_table">
+<tr>
+<td>ACCEPTED THIS
+<em>18 DAY OF NOVEMBER, 2004</em>
+</td>
+
+<td style="padding-left: 1em;">LINCOLNBERG COMMUNITIES<br/><br/>
+PER: 
+<em>Keith Jansen</em>
+</td>
+</tr>
+
+</table>
+</div>
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/nbsp.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/nbsp.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/nbsp.html	(revision 2000)
@@ -0,0 +1,6 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
+<title></title>
+</head>
+<body><p style="font-family: verdana">a&#xA0;b&nbsp;c&nbsp;</p></body></html>
Index: /trunk/filemanager/tp/dompdf/www/test/border_css_values.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/border_css_values.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/border_css_values.html	(revision 2000)
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<style>
+.d { width: 1in; height: 1in; margin: 5pt; }
+
+.b1 {
+  border: 1px solid red;
+}
+
+.b2 {
+  border: solid thick blue;
+}
+
+.b3 {
+  border: #369 thin dashed;
+}
+
+.b4 {
+  border: dotted green 2px;
+}
+
+.b5 {
+  border: 0.1em #0033DD solid;
+}
+
+.b6 {
+  border: orange inset 4pt;
+}
+
+</head>
+<body>
+<div class="d b1"> </div>
+<div class="d b2"> </div>
+<div class="d b3"> </div>
+<div class="d b4"> </div>
+<div class="d b5"> </div>
+<div class="d b6"> </div>
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/www/test/gif_test.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/gif_test.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/gif_test.html	(revision 2000)
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+</head>
+
+<body>
+<p><img src="images/php.gif"/></p>
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/backgroundcolor_fontdecoration_pageborder.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/backgroundcolor_fontdecoration_pageborder.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/backgroundcolor_fontdecoration_pageborder.html	(revision 2000)
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+<style>
+* { padding: 0; margin: 0; }
+
+body {
+  /*color: #7d7a7a;*/
+  /*font-family: 'trebuchet ms', verdana, sans-serif;*/
+  font-family: sans-serif;
+}
+
+div.page {
+  margin:10mm;
+  padding:10mm;
+  border:0.5pt solid gray;
+}
+div.bgcolor {
+  background-color:#e0e0e0;
+  line-height:170%;
+</style>
+</head>
+
+<body>
+<div class="page">
+<h2><a name="bgimages">Background color, text decoration, page border</a></h2>
+<p>see more testcases with background images in <a href="image_variants.html">image_variants.html</a></p>
+
+<div class="bgcolor">
+</div>
+
+<p>&nbsp;<p>
+
+<p style="background:yellow; line-height:170%;">Text</p>
+<p><a href="bgimages" style="background:yellow; line-height:170%;">Link</a></p>
+
+<p>&nbsp;<p>
+
+<div style="background-color:#e0e0e0;">
+block
+<span style="background-color:yellow;">inline</span>
+block
+_<u  style="background-color:yellow;">underline</u><span style="background-color:yellow;">x</span>
+block
+_<span style="background-color:yellow;text-decoration:underline;">underline style</span><span style="background-color:yellow;">x</span>
+block
+_<span style="background-color:yellow;text-decoration:line-through;">line-through style</span><span style="background-color:yellow;">x</span>
+block
+_<span style="background-color:yellow;text-decoration:overline;">overline style</span><span style="background-color:yellow;">x</span>
+block
+</div>
+
+<p>&nbsp;<p>
+
+<div style="font-size:200%; background-color:#e0e0e0;">
+block
+<span style="background-color:yellow;">inline</span>
+block
+_<u  style="background-color:yellow;">underline</u><span style="background-color:yellow;">x</span>
+block
+_<span style="background-color:yellow;text-decoration:underline;">underline style</span><span style="background-color:yellow;">x</span>
+block
+_<span style="background-color:yellow;text-decoration:line-through;">line-through style</span><span style="background-color:yellow;">x</span>
+block
+_<span style="background-color:yellow;text-decoration:overline;">overline style</span><span style="background-color:yellow;">x</span>
+block
+</div>
+
+<p>&nbsp;<p>
+
+<div style="font-family:times; background-color:#e0e0e0;">
+block
+<span style="background-color:yellow;">inline</span>
+block
+_<u  style="background-color:yellow;">underline</u><span style="background-color:yellow;">x</span> 
+block
+_<span style="background-color:yellow;text-decoration:underline;">underline style</span><span style="background-color:yellow;">x</span>
+block
+_<span style="background-color:yellow;text-decoration:line-through;">line-through style</span><span style="background-color:yellow;">x</span>
+block
+_<span style="background-color:yellow;text-decoration:overline;">overline style</span><span style="background-color:yellow;">x</span>
+block
+</div>
+
+<p>&nbsp;<p>
+
+<div style="font-family:times; font-size:200%; background-color:#e0e0e0;">
+block
+<span style="background-color:yellow;">inline</span>
+block
+_<u  style="background-color:yellow;">underline</u><span style="background-color:yellow;">x</span>
+block
+_<span style="background-color:yellow;text-decoration:underline;">underline style</span><span style="background-color:yellow;">x</span>
+block
+_<span style="background-color:yellow;text-decoration:line-through;">line-through style</span><span style="background-color:yellow;">x</span>
+block
+_<span style="background-color:yellow;text-decoration:overline;">overline style</span><span style="background-color:yellow;">x</span>
+block
+</div>
+<p>&nbsp;<p>
+
+<div style="background-color:#e0e0e0;">
+block
+<span style="background-color:yellow;">inline</span>
+<span style="background-color:yellow;text-decoration:underline;">
+underline sdfjsfh sdfs sfd sf sf sdfsdfasf asdfasdfa asdfasdf asdf asdfas dfasdf afsafasf asdfasdasdf adfasfasdf
+</span>
+block
+</div>
+
+<p>&nbsp;<p>
+
+<div style="background-color:#e0e0e0;font-family:serif;">
+block
+<span style="background-color:yellow;">inline</span>
+block
+<u  style="background-color:yellow;">underline</u>
+block
+<span style="background-color:yellow;text-decoration:underline;">underline style</span>
+block
+</div>
+
+<p>&nbsp;<p>
+
+<p>
+<span>The PHP 5 HTML to PDF converter</span>
+</p>
+
+<p>Fill fill fill fill fill fill fill fill</p>
+<p>Fill fill fill fill fill fill fill fill</p>
+<p>Fill fill fill fill fill fill fill fill</p>
+<p>Fill fill fill fill fill fill fill fill</p>
+<p>Fill fill fill fill fill fill fill fill</p>
+<p>Fill fill fill fill fill fill fill fill</p>
+<p>Fill fill fill fill fill fill fill fill</p>
+<div>
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/php_test.php
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/php_test.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/php_test.php	(revision 2000)
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+<title></title>
+</head>
+
+<body>
+
+<?php
+echo "<p>Here's some dynamically generated text and some random circles...</p>";
+?>
+
+<script type="text/php">
+$max_x = $pdf->get_width() - 50;
+$max_y = $pdf->get_height() - 50; 
+for ( $i = 0; $i < 30; $i++) {
+  $pdf->circle(rand(50, $max_x), rand(50, $max_y), rand(10, 70),
+               array(rand()/getrandmax(), rand()/getrandmax(), rand()/getrandmax()),
+               rand(1,40));
+}
+</script>
+<?php
+echo "<p>Current PHP version: " . phpversion() . ".  ";
+echo "Today is " . strftime("%A") . " the " . strftime("%e").date("S").strftime(" of %B, %Y %T") . "</p>";
+
+?>
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/test/html_attributes.html
===================================================================
--- /trunk/filemanager/tp/dompdf/www/test/html_attributes.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/test/html_attributes.html	(revision 2000)
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+</head>
+<body>
+<div align="center">
+
+Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet
+doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit
+amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt
+ut laoreet dolore magna aliquam erat volutpat.<br/>
+Ut wisi enim ad minim veniam,
+quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex
+ea commodo consequat.
+
+</div>
+<hr size="3" noshade align="center" width="50%"/>
+
+<table border="2" cellspacing="3" cellpadding="5" rules="rows" bgcolor="#eeeeee">
+  <tr bgcolor="#ddddff" valign="top">
+    <td>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
+    suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem
+    vel eum iriure dolor in hendrerit in vulputate velit esse molestie
+    consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et
+    accumsan et iusto odio dignissim qui blandit praesent luptatum zzril
+    delenit augue duis dolore te feugait nulla facilisi.</td>
+    <td>table test</td>
+    <td width="25%">Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
+    sed diam nonumy eirmod tempor invidunt ut labore et dolore magna
+    aliquyam erat, sed diam voluptua.</td>
+    <td width="200">Duis autem vel eum iriure dolor in hendrerit in
+    vulputate velit esse molestie consequat, vel illum dolore eu feugiat
+    nulla facilisis at vero eros et accumsan et iusto odio dignissim qui
+    blandit praesent luptatum zzril delenit augue duis dolore te feugait
+    nulla facilisi.</td>
+  </tr>
+  <tr align="right">
+    <td bgcolor="#ddffdd" valign="bottom">table test</td>
+    <td>Nam liber tempor cum soluta nobis eleifend option congue nihil
+    imperdiet doming id quod mazim placerat facer possim assum.<br/>
+    Lorem ipsum dolor sit amet.</td>
+    <td>table test</td>
+    <td>table test</td>
+  </tr>
+  <tr align="center">
+    <td>table test</td>
+    <td bgcolor="#ffdddd">table test</td>
+    <td>table test</td>
+    <td>table test</td>
+  </tr>
+</table>
+
+
+</body> </html>
Index: /trunk/filemanager/tp/dompdf/www/examples.php
===================================================================
--- /trunk/filemanager/tp/dompdf/www/examples.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/examples.php	(revision 2000)
@@ -0,0 +1,108 @@
+<?php
+
+require_once("../dompdf_config.inc.php");
+if ( isset( $_POST["html"] ) ) {
+
+  if ( get_magic_quotes_gpc() )
+    $_POST["html"] = stripslashes($_POST["html"]);
+  
+  $dompdf = new DOMPDF();
+  $dompdf->load_html($_POST["html"]);
+  $dompdf->set_paper($_POST["paper"], $_POST["orientation"]);
+  $dompdf->render();
+
+  $dompdf->stream("dompdf_out.pdf");
+
+  exit(0);
+}
+
+?>
+<?php include("head.inc"); ?>
+<div id="toc">
+<h2>On this page:</h2>
+<ul>
+<?php echo li_arrow() ?><a href="#samples">Samples</a></li>
+<?php echo li_arrow() ?><a href="#demo">Demo</a></li>
+</ul>
+</div>
+
+<a name="samples"> </a>
+<h2>Samples</h2>
+
+<p>Below are some sample files. The PDF version is generated on the fly by dompdf.  (The source HTML &amp; CSS for
+these files is included in the test/ directory of the distribution
+package.)</p>
+
+<ul class="samples">
+<?php
+$test_files = glob("test/*.{html,php}", GLOB_BRACE);
+//if dompdf.php runs in virtual server root, dirname does not return empty folder but '/' or '\' (windows).
+//This leads to a duplicate separator in unix etc. and an error in Windows. Therefore strip off.
+//echo '<li>['.$_SERVER["PHP_SELF"].']</li>';
+$dompdf = dirname(dirname($_SERVER["PHP_SELF"]));
+//echo '<li>['.$dompdf.']</li>';
+if ( $dompdf == '/' || $dompdf == '\\') {
+  $dompdf = '';
+}
+//echo '<li>['.$dompdf.']</li>';
+$dompdf .= "/dompdf.php?base_path=" . rawurlencode("www/test/");
+//echo '<li>['.$dompdf.']</li>';
+foreach ( $test_files as $file ) {
+  $file = basename($file);
+  $arrow = "images/arrow_0" . rand(1, 6) . ".gif";  
+  echo "<li style=\"list-style-image: url('$arrow');\">\n";
+  echo $file;
+  echo " [<a class=\"button\" target=\"blank\" href=\"test/$file\">HTML</a>] [<a class=\"button\" href=\"$dompdf&input_file=" . rawurlencode("$file") .  "\">PDF</a>]\n";
+  echo "</li>\n";
+}
+?>
+</ul>
+
+<a name="demo"> </a>
+<h2>Demo</h2>
+<p>Enter your html snippet in the text box below to see it rendered as a
+PDF: (Note by default, remote stylesheets, images &amp; are disabled.)</p>
+
+<form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
+<div>
+<p>Paper size and orientaion:
+<select name="paper">
+<?php
+foreach ( array_keys(CPDF_Adapter::$PAPER_SIZES) as $size )
+  echo "<option ". ($size == "letter" ? "selected " : "" ) . "value=\"$size\">$size</option>\n";
+?>
+</select>
+<select name="orientation">
+  <option value="portrait">portrait</option>
+  <option value="landscape">landscape</option>
+</select>
+</p>
+
+<textarea name="html" cols="60" rows="20">
+&lt;html&gt;
+&lt;head&gt;
+&lt;style&gt;
+
+/* Type some style rules here */
+
+&lt;/style&gt;
+&lt;/head&gt;
+
+&lt;body&gt;
+
+&lt;!-- Type some HTML here --&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
+</textarea>
+
+<div style="text-align: center; margin-top: 1em;">
+<input type="submit" name="submit" value="submit"/>
+</div>
+</div>
+</form>
+<p style="font-size: 0.65em; text-align: center;">(Note: if you use a KHTML
+based browser and are having difficulties loading the sample output, try
+saving it to a file first.)</p>
+
+<?php include("foot.inc"); ?>
Index: /trunk/filemanager/tp/dompdf/www/style.css
===================================================================
--- /trunk/filemanager/tp/dompdf/www/style.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/style.css	(revision 2000)
@@ -0,0 +1,269 @@
+body, select {
+  color: #7d7a7a;
+  font-family: 'trebuchet ms', verdana, sans-serif;
+}
+
+a:link, a:visited, a:active { 
+  color: #5F83BA; 
+  text-decoration: none;
+}
+
+a:hover { 
+  color: #5f83ba; 
+  text-decoration: underline; 
+}
+
+img { border: none; }
+
+pre,
+code { 
+  font-size: 0.8em;
+  font-family: "lucida console", monospace;
+}
+
+pre {
+  background-color: #f8f8f8; 
+  padding: 10px;
+}
+
+select { font-size: 0.8em; font-weight: bold; }
+
+#header {
+  background-image: url('images/h_bar.gif');
+  background-repeat: repeat-x;
+  background-position: bottom right;
+  height: 50px;
+}
+
+#footer {
+  font-size: 0.75em;
+  padding-top: 12px;
+  background-image: url('images/h_bar.gif');
+  background-repeat: repeat-x;
+  background-position: top left;
+  height: 35px;
+  vertical-align: middle;
+  clear: both;
+}
+
+#logo {
+  position: absolute;
+  top: 0px;
+  right: 0px;
+  border: none;
+}
+
+.badges { float: right; }
+
+#left_col, #content {
+  vertical-align: top;  
+}
+/*
+#left_col {
+  padding: 3px 3px 2em 3px;
+  margin-top: 2px;
+  width: 210px;
+  padding-right: 10px;
+  background-image: url('images/v_bar.gif');
+  background-repeat: repeat-y;
+  background-position: top right;
+}
+*/
+
+#left_col {
+  padding: 3px 3px 2em 3px;
+  margin-top: 2px;
+  width: 210px;
+  padding-right: 10px;
+  float: left;
+}
+
+#left_col h2 {
+  font-size: 1.0em;
+  margin-top: 0.5em;
+  margin-bottom: 0.25em;
+}
+
+#left_col ul {
+  margin-top: 0.25em;
+  padding-left: 0px;
+}
+
+#left_col ul { margin-left: 0px; }
+
+#left_col ul li { list-style-position: inside; }
+
+#left_col p { font-size: 0.8em; }
+
+#left_col iframe { margin-left: 40px; margin-top: 10px; }
+
+#content {
+  margin: 0em 0px 0px 210px;
+  padding: 1em 1em 1em 4em;
+  min-width: 400px;
+  width: 60%;
+  background-image: url('images/v_bar.gif');
+  background-repeat: repeat-y;
+  background-position: top left;
+}
+
+#content #toc+a+h2,
+#content #toc+h2 { margin-top: -1.5em; }
+
+.message { 
+  margin-top: 1em;
+  border: 1px dashed #5E83BA;
+}
+
+#content li {
+  margin-top: 0.5em;
+  vertical-align: top;
+}
+
+#content>*>li { 
+  margin-right: 40px;  /* keep things in line */
+}
+
+#content h2 {
+  text-align: right;
+  color: #4A9166;
+}
+
+#content h3 { 
+  margin-top: 2em;
+}
+
+#content p {
+  text-align: justify;
+}
+
+#content div.divider1,  
+#content div.divider2 { 
+  margin-top: 1.5em;
+  margin-bottom: 1em;
+  margin-left: 15%;
+  height: 25px;
+  width: 60%;
+}
+
+#content table td { padding: 0.5em; }
+
+
+#content div.divider1,  
+#content div.divider2,
+#content table td.bar1,
+#content table td.bar2 { 
+  background-image: url('images/h_bar.gif');
+  background-repeat: repeat-x;
+}
+
+#content div.divider1,
+#content table td.bar1 { 
+  background-position: bottom right;
+}
+
+#content div.divider2,
+#content table td.bar2 { 
+  background-position: top left;
+}
+
+#content table td.input { 
+  white-space: nowrap;
+  font-family: "lucida console", monospace; 
+  font-size: 0.8em;
+}
+
+#content table td.description { 
+  padding-left: 2em;
+}
+
+#content textarea { 
+  padding: 4px;
+  width: 100%;
+  border: 1px dashed #5F83BA;
+}
+
+#content input { 
+  border: 1px dashed #5F83BA;
+  background-color: #fff;
+  color: #7d7a7a;
+  font-family: 'trebuchet ms', verdana, sans-serif;
+}
+
+#toc {
+  margin-top: -1em;
+  margin-left: -3em;
+  font-size: 0.8em;
+}
+
+/*
+#toc>h2:first-child {
+  background-image: url('images/h_bar.gif');
+  background-repeat: repeat-x;
+  background-position: top left;
+  padding-top: 0.5em;
+}
+*/
+
+#toc h2 { 
+  font-size: 1em; 
+  text-align: left; 
+  padding-left: 1em;
+}
+
+#toc ul ul {
+  padding-left: 20px;
+}
+
+.news_headline { 
+  margin-top: 0.75em;
+  color: #5F83BA;
+}
+
+p.news_body {
+}
+
+.posted_date { 
+  font-size: 0.8em;
+  color: #4A9166;
+}
+
+.answers>h3:before { 
+  content: "Q: ";
+  color:  #4A9166;
+  font-size: 30px;
+  font-weight: bold;
+}
+
+.answers>h3+p:before { 
+  content: "A: ";
+  color: #5F83BA;
+  font-size: 30px;
+  font-weight: bold;
+}
+
+/* Method definitions from phpdoc */
+.method-definition {
+  background-image: url('images/h_bar.gif');
+  background-position: bottom center;
+  background-repeat: repeat-x;
+  padding: 10px 10px 20px 10px;  
+  margin-bottom: 1em;
+}
+
+.method-title {
+  color: #5F83BA;
+}
+
+.var-name,
+.method-name,
+.method-title {
+  font-weight: bold;
+}
+
+.var-type,
+.method-result {
+  color: #4A9166;
+  font-style: italic;  
+}
+
Index: /trunk/filemanager/tp/dompdf/www/head.inc
===================================================================
--- /trunk/filemanager/tp/dompdf/www/head.inc	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/head.inc	(revision 2000)
@@ -0,0 +1,39 @@
+<?php
+function li_arrow() {
+  return '<li style="list-style-image: url(\'images/arrow_0' . rand(1,6) . '.gif\');">';  
+}
+function li_star() {
+  return '<li style="list-style-image: url(\'images/star_0' . rand(1,5) . '.gif\');">';  
+}
+?>
+<?php echo '<?' . 'xml version="1.0" encoding="iso-8859-1"?' . '>'; ?>
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>dompdf - The PHP 5 HTML to PDF Converter</title>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<link rel="SHORTCUT ICON" href="http://<?php echo $_SERVER["HTTP_HOST"] . dirname($_SERVER["PHP_SELF"]);?>/images/favicon.ico"/>
+</head>
+
+<body>
+<div id="header">
+<a href="index.php"><img id="logo" src="images/title.gif" alt="dompdf"/></a>
+</div>
+<div id="left_col">
+<h2>dompdf Homepage</h2>
+  <ul>
+    <li style="list-style-image: url('images/star_02.gif');"><a style="font-size: 0.8em;" href="http://code.google.com/p/dompdf/">dompdf @ google code</a></li>
+  </ul>
+  
+<h2>Examples</h2>
+  <ul>
+    <li style="list-style-image: url('images/arrow_02.gif');"><a href="examples.php">samples</a></li>
+    <li style="list-style-image: url('images/arrow_03.gif');"><a href="examples.php#demo">demo</a></li>
+  </ul>
+
+  <p>Send bug reports &amp; support questions to <a href="http://groups.google.com/group/dompdf">Google Groups</a>.
+  </p>
+</div>  
+<div id="content">
Index: /trunk/filemanager/tp/dompdf/www/usage.php
===================================================================
--- /trunk/filemanager/tp/dompdf/www/usage.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/usage.php	(revision 2000)
@@ -0,0 +1,532 @@
+<?php include("head.inc"); ?>
+<div id="toc">
+<h2>On this page:</h2>
+<ul>
+<?php echo li_arrow() ?><a href="#usage">Usage</a></li>
+<ul><?php echo li_arrow() ?><a href="#web">Invoking via the web</a></li>
+    <?php echo li_arrow() ?><a href="#cli">Invoking via the command line</a></li>
+    <?php echo li_arrow() ?><a href="#class">Using the dompdf class directly</a></li>
+    <?php echo li_arrow() ?><a href="#method_summary">dompdf class reference</a></li> 
+</ul>
+<?php echo li_arrow() ?><a href="#inline">Inline PHP support</a></li>
+</ul>
+</div>
+
+<a name="usage"> </a>
+<h2>Usage</h2>
+
+<p>The dompdf.php script included in the distribution can be used both from
+the <a href="#cli">command line</a> or via a <a href="#web">web browser</a>.
+Alternatively, the dompdf class can be used <a href="#class">directly</a>.</p>
+
+<a name="web"> </a>
+<h3>Invoking dompdf via the web</h3>
+
+<p>The dompdf.php script is not intended to be an interactive page.  It
+receives input parameters via $_GET and can stream a PDF directly to the
+browser.  This makes it possible to embed links to the script in a page that
+look like static PDF links, but are actually dynamically generated.  This
+method is also useful as a redirection target.</p>
+
+<p>dompdf.php accepts the following $_GET variables:</p>
+
+<table>
+<tr><td class="bar1" colspan="3">&nbsp;</td></tr>
+<tr>
+<td class="input">input_file</td>  <td>required</td>
+
+<td class="description">a rawurlencoded() path to the HTML file to process.  Remote files
+(http/ftp) are supported if fopen wrappers are enabled.</td>
+</tr>
+
+<tr>
+<td class="input">paper</td>  <td>optional</td>
+
+<td class="description">the paper size.  Defaults to 'letter' (unless the default has been
+changed in dompdf_config.inc.php).  See include/pdf_adapter.cls.php, or
+invoke dompdf.php on the command line with the -l switch for accepted paper
+sizes.</td>
+</tr>
+
+<tr>
+<td class="input">orientation</td>  <td>optional</td>
+<td class="description">'portrait' or 'landscape'.  Defaults to 'portrait'.</td>
+</tr>
+
+<tr>
+<td class="input">base_path</td>  <td>optional</td>
+
+<td class="description">the base path to use when resolving relative links (images or CSS
+files).  Defaults to the directory containing the file being accessed.
+(This option is useful for pointing dompdf at your CSS files even though the
+HTML file may be elsewhere.)</td>
+</tr>
+
+<tr>
+<td class="input">output_file</td>  <td>optional</td>
+
+<td class="description">the rawurlencoded() name of the output file. Defaults to 'dompdf_out.pdf'.</td>
+</tr>
+
+<tr>
+<td class="input">save_file</td>  <td>optional</td>
+
+<td class="description">If present (i.e. <code>isset($_GET["save_file"]) == true');</code>),
+output_file is saved locally, Otherwise the file is streamed directly to the client.</td>
+</tr>
+
+<tr><td class="bar2" colspan="3">&nbsp;</td></tr>
+</table>
+
+
+<p>One technique for generating dynamic PDFs is to generate dynamic HTML as you
+normally would, except instead of displaying the output to the browser, you
+use output buffering and write the output to a temporary file.  Once this
+file is saved, you redirect to the dompdf.php script.  If you use a
+templating engine like Smarty, you can simply do:</p>
+
+
+<pre>
+&lt;?php
+$tmpfile = tempnam("/tmp", "dompdf_");
+file_put_contents($tmpfile, $smarty->fetch()); // Replace $smarty->fetch()
+                                                // with your HTML string
+
+$url = "dompdf.php?input_file=" . rawurlencode($tmpfile) . 
+       "&amp;paper=letter&amp;output_file=" . rawurlencode("My Fancy PDF.pdf");
+
+header("Location: http://" . $_SERVER["HTTP_HOST"] . "/$url");
+?&gt;
+</pre>
+
+<p>If you use any stylesheets, you may need to provide the
+<code>base_path</code> option to tell dompdf where to look for them, as they
+are not likely relative to /tmp ;).</p>
+
+
+<a name="cli"> </a>
+<h3>Invoking dompdf via the command line</h3>
+
+<p>You can execute dompdf.php using the following command:</p>
+
+<pre>$ php -f dompdf.php -- [options]</pre>
+
+<p>(If you find yourself using only the cli interface, you can add
+<code>#!/usr/bin/php</code> as the first line of dompdf.php to invoke dompdf.php
+directly.)</p>
+
+<p>dompdf.php is invoked as follows:</p>
+
+<table>
+<tr><td class="bar1" colspan="2">&nbsp;</td></tr>
+<tr>
+<td colspan="2" class="input">$ ./dompdf.php [options] html_file</td>
+</tr>
+
+<tr>
+<td colspan="2"><code>html_file</code> can be a filename, a url if
+fopen_wrappers are enabled, or the '-' character to read from standard input.</td>
+</tr>
+
+<tr>
+<td class="input">-h</td>
+<td class="description">Show a brief help message</td>
+</tr>
+
+<tr>
+<td class="input">-l</td>
+<td class="description">list available paper sizes</td>
+</tr>
+
+<tr>
+<td class="input">-p size</td>
+<td class="description">paper size; something like 'letter', 'A4', 'legal', etc. Thee default is 'letter'</td>
+</tr>
+
+<tr>
+<td class="input">-o orientation</td>
+<td class="description">either 'portrait' or 'landscape'.  Default is 'portrait'.</td>
+</tr>
+
+<tr>
+<td class="input">-b path</td>
+
+<td class="description">the base path to use when resolving relative links
+(images or CSS files). Default is the directory of html_file.</td>
+</tr>
+
+<tr>
+<td class="input">-f file</td>
+<td class="description">the output filename.  Default is the input <code>[html_file].pdf</code>.</td>
+</tr>
+
+<tr>
+<td class="input">-v</td>
+<td class="description">verbose: display html parsing warnings and file not found errors.</td>
+</tr>
+
+<tr>
+<td class="input">-d</td>
+
+<td class="description">very verbose: display oodles of debugging output;
+every frame in the tree is printed to stdout.</td>
+</tr>
+<tr><td class="bar2" colspan="2">&nbsp;</td></tr>
+
+</table>
+
+<p>Examples:</p>
+
+<pre>
+$ php -f dompdf.php -- my_resume.html
+$ ./dompdf.php -b /var/www/ ./web_stuff/index.html
+$ echo '&lt;html&gt;&lt;body&gt;Hello world!&lt;/body&gt;&lt;/html&gt;' | ./dompdf.php -
+</pre>
+
+
+<a name="class"> </a>
+<h3>Using the dompdf class directly</h3>
+
+<p>Using the dompdf class directly is fairly straightforward:
+<pre>
+&lt;?php
+require_once("dompdf_config.inc.php");
+
+$html =
+  '&lt;html&gt;&lt;body&gt;'.
+  '&lt;p&gt;Put your html here, or generate it with your favourite '.
+  'templating system.&lt;/p&gt;'.
+  '&lt;/body&gt;&lt;/html&gt;';
+
+$dompdf = new DOMPDF();
+$dompdf-&gt;load_html($html);
+$dompdf-&gt;render();
+$dompdf-&gt;stream("sample.pdf");
+
+?&gt;
+</pre></p>
+
+<p>Below is a summary of the methods available in the dompdf class.  For complete details,
+see the <a href="http://www.digitaljunkies.ca/dompdf/doc/">API
+documentation</a> for the class interface definition.</p>
+
+<a name="method_summary"> </a>
+<h3>Method Summary</h3>
+<ul class="method-summary">
+<?php echo li_arrow() ?><span class="method-result">DOMPDF</span> <a href="#method__construct">__construct</a>()</li>
+<?php echo li_arrow() ?><span class="method-result">string</span> <a href="#methodget_base_path">get_base_path</a>()</li>
+<?php echo li_arrow() ?><span class="method-result">string</span> <a href="#methodget_host">get_host</a>()</li>
+<?php echo li_arrow() ?><span class="method-result">string</span> <a href="#methodget_protocol">get_protocol</a>()</li>
+<?php echo li_arrow() ?><span class="method-result">Frame_Tree</span> <a href="#methodget_tree">get_tree</a>()</li>
+<?php echo li_arrow() ?><span class="method-result">void</span> <a href="#methodload_html">load_html</a>(<span class="var-type">string</span> <span class="var-name">$str</span>)</li>
+<?php echo li_arrow() ?><span class="method-result">void</span> <a href="#methodload_html_file">load_html_file</a>(<span class="var-type">string</span> <span class="var-name">$file</span>)</li>
+<?php echo li_arrow() ?><span class="method-result">string</span> <a href="#methodoutput">output</a>()</li>
+<?php echo li_arrow() ?><span class="method-result">void</span> <a href="#methodrender">render</a>()</li>
+<?php echo li_arrow() ?><span class="method-result">void</span> <a href="#methodset_base_path">set_base_path</a>(<span class="var-type">string</span> <span class="var-name">$path</span>)</li>
+<?php echo li_arrow() ?><span class="method-result">void</span> <a href="#methodset_host">set_host</a>(<span class="var-type">string</span> <span class="var-name">$host</span>)</li>
+<?php echo li_arrow() ?><span class="method-result">void</span> <a href="#methodset_paper">set_paper</a>(<span class="var-type">string</span> <span class="var-name">$size</span>, [<span class="var-type">string</span> <span class="var-name">$orientation</span> = "portrait"])</li>
+<?php echo li_arrow() ?><span class="method-result">void</span> <a href="#methodset_protocol">set_protocol</a>(<span class="var-type">string</span> <span class="var-name">$proto</span>)</li>
+<?php echo li_arrow() ?><span class="method-result">void</span> <a href="#methodstream">stream</a>(<span class="var-type">string</span> <span class="var-type">$filename</span>, [<span class="var-type">mixed</span> <span class="var-name">$options</span> = null])</li>
+</ul>
+
+<div class="method-definition" style="background-position: 10px bottom;">
+<a name="method__construct" id="__construct"><!-- --></a>
+<div class="method-header">
+  <span class="method-title">Constructor __construct</span> (line <span class="line-number">163</span>)
+</div> 
+<p class="short-description">Class constructor</p> 
+  <div class="method-signature">
+    <span class="method-result">DOMPDF</span>
+    <span class="method-name">__construct</span>()
+  </div>
+</div>
+
+<div class="method-definition"  style="background-position: 302px bottom;">
+<a name="methodget_base_path" id="get_base_path"><!-- --></a>
+<div class="method-header">
+  <span class="method-title">get_base_path</span> (line <span class="line-number">227</span>)
+</div> 
+<p class="short-description">Returns the base path</p>
+  <div class="method-signature">
+    <span class="method-result">string</span>
+    <span class="method-name">get_base_path</span>()
+  </div>
+</div>
+
+<div class="method-definition" style="background-position: 710px bottom;">
+<a name="methodget_canvas" id="get_canvas"><!-- --></a>
+<div class="method-header">
+    <span class="method-title">get_canvas</span> (line <span class="line-number">234</span>)
+</div> 
+<p class="short-description">Return the underlying Canvas instance (e.g. CPDF_Adapter, GD_Adapter)</p> 
+  <div class="method-signature">
+    <span class="method-result">Canvas</span>
+    <span class="method-name">get_canvas</span>()
+  </div>
+
+</div>
+
+<div class="method-definition"  style="background-position: 252px bottom;">
+<a name="methodget_host" id="get_host"><!-- --></a> 
+  <div class="method-header">
+    <span class="method-title">get_host</span> (line <span class="line-number">220</span>)
+  </div> 
+<p class="short-description">Returns the base hostname</p>  
+  <div class="method-signature">
+    <span class="method-result">string</span>
+    <span class="method-name">get_host</span>()
+  </div>
+
+</div>
+
+<div class="method-definition" style="background-position: 498px bottom;">
+<a name="methodget_protocol" id="get_protocol"><!-- --></a>
+<div class="method-header">
+  <span class="method-title">get_protocol</span> (line <span class="line-number">213</span>)
+</div> 
+<p class="short-description">Returns the protocol in use</p>
+  <div class="method-signature">
+    <span class="method-result">string</span>
+    <span class="method-name">get_protocol</span>()
+  </div>
+
+</div>
+
+<div class="method-definition" style="background-position: 39px bottom;">
+<a name="methodget_tree" id="get_tree"><!-- --></a>
+<div class="method-header">
+  <span class="method-title">get_tree</span> (line <span class="line-number">182</span>)
+</div> 
+<p class="short-description">Returns the underlying Frame_Tree object</p>
+  <div class="method-signature">
+    <span class="method-result">Frame_Tree</span>
+    <span class="method-name">get_tree</span>()
+  </div>
+
+</div>
+
+<div class="method-definition" style="background-position: 653px bottom;">
+<a name="methodload_html" id="load_html"><!-- --></a>
+<div class="method-header">
+  <span class="method-title">load_html</span> (line <span class="line-number">272</span>)
+</div> 
+<p class="short-description">Loads an HTML string</p>
+<p class="description"><p>Parse errors are stored in the global array _dompdf_warnings.</p></p>
+  <div class="method-signature">
+    <span class="method-result">void</span>
+    <span class="method-name">load_html</span>(<span class="var-type">string</span>&nbsp;<span class="var-name">$str</span>)
+  </div>
+  
+   <ul class="parameters">
+   <li>
+     <span class="var-type">string</span>
+     <span class="var-name">$str</span><span class="var-description">: HTML text to load</span></li>
+   </ul>
+
+</div>
+
+<div class="method-definition" style="background-position: 479px bottom;">
+<a name="methodload_html_file" id="load_html_file"><!-- --></a>
+<div class="method-header">
+  <span class="method-title">load_html_file</span> (line <span class="line-number">245</span>)
+</div> 
+<p class="short-description">Loads an HTML file</p>
+<p class="description"><p>Parse errors are stored in the global array _dompdf_warnings.</p></p>
+  <div class="method-signature">
+    <span class="method-result">void</span>
+    <span class="method-name">load_html_file</span>(<span class="var-type">string</span>&nbsp;<span class="var-name">$file</span>)
+  </div>
+  
+  <ul class="parameters">
+      <li>
+    <span class="var-type">string</span>
+    <span class="var-name">$file</span><span class="var-description">: a filename or url to load</span></li>
+    </ul>
+
+</div>
+
+<div class="method-definition" style="background-position: 182px bottom;">
+<a name="methodoutput" id="output"><!-- --></a>
+<div class="method-header">
+  <span class="method-title">output</span> (line <span class="line-number">451</span>)
+</div> 
+<p class="short-description">Returns the PDF as a string</p>
+  <div class="method-signature">
+    <span class="method-result">string</span>
+    <span class="method-name">output</span>()
+  </div>
+
+</div>
+
+<div class="method-definition" style="background-position: 741px bottom;">
+
+<a name="methodrender" id="render"><!-- --></a>
+<div class="method-header">
+  <span class="method-title">render</span> (line <span class="line-number">373</span>)
+</div> 
+<p class="short-description">Renders the HTML to PDF</p>
+  
+  <div class="method-signature">
+    <span class="method-result">void</span>
+    <span class="method-name">render</span>()
+  </div>
+</div>
+
+<div class="method-definition" style="background-position: 824px bottom;">
+<a name="methodset_base_path" id="set_base_path"><!-- --></a>
+<div class="method-header">
+  <span class="method-title">set_base_path</span> (line <span class="line-number">206</span>)
+</div> 
+<p class="short-description">Sets the base path</p>
+  <div class="method-signature">
+    <span class="method-result">void</span>
+    <span class="method-name">set_base_path</span>(<span class="var-type">string</span>&nbsp;<span class="var-name">$path</span>)
+  </div>
+  
+  <ul class="parameters">
+  <li>
+    <span class="var-type">string</span>
+    <span class="var-name">$path</span></li>
+  </ul>
+
+</div>
+
+<div class="method-definition" style="background-position: 519px bottom;">
+
+<a name="methodset_host" id="set_host"><!-- --></a>
+<div class="method-header">
+  <span class="method-title">set_host</span> (line <span class="line-number">199</span>)
+</div> 
+ <p class="short-description">Sets the base hostname</p>
+  
+  <div class="method-signature">
+    <span class="method-result">void</span>
+    <span class="method-name">set_host</span>(<span class="var-type">string</span>&nbsp;<span class="var-name">$host</span>)
+  </div>
+  
+  <ul class="parameters">
+  <li>
+     <span class="var-type">string</span>
+     <span class="var-name">$host</span></li>
+     </ul>
+</div>
+
+<div class="method-definition"  style="background-position: 391px bottom;">
+<a name="methodset_paper" id="set_paper"><!-- --></a>
+<div class="method-header">
+  <span class="method-title">set_paper</span> (line <span class="line-number">353</span>)
+</div> 
+<p class="short-description">Sets the paper size &amp; orientation</p>
+  
+  <div class="method-signature">
+    <span class="method-result">void</span>
+    <span class="method-name">set_paper</span>(<span class="var-type">string</span>&nbsp;<span class="var-name">$size</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$orientation</span> = <span class="var-default">"portrait"</span>])
+  </div>
+  
+  <ul class="parameters">
+  <li>
+    <span class="var-type">string</span>
+    <span class="var-name">$size</span><span class="var-description">: 'letter', 'legal', 'A4', etc. See CPDF_Adapter::$PAPER_SIZES</span></li>
+  <li>
+    <span class="var-type">string</span>
+    <span class="var-name">$orientation</span><span class="var-description">: 'portrait' or 'landscape'</span></li>
+  </ul>
+</div>
+
+<div class="method-definition" style="background-position: 672px bottom;">
+<a name="methodset_protocol" id="set_protocol"><!-- --></a>
+<div class="method-header">
+  <span class="method-title">set_protocol</span> (line <span class="line-number">192</span>)
+</div> 
+<p class="short-description">Sets the protocol to use (http://, file://, ftp:// etc.)</p>
+  
+  <div class="method-signature">
+    <span class="method-result">void</span>
+    <span class="method-name">set_protocol</span>(<span class="var-type">string</span>&nbsp;<span class="var-name">$proto</span>)
+  </div>
+  
+  <ul class="parameters">
+  <li>
+    <span class="var-type">string</span>
+    <span class="var-name">$proto</span></li>
+  </ul>
+</div>
+
+<div class="method-definition" style="background-position: 146px bottom;">
+<a name="methodstream" id="stream"><!-- --></a>
+<div class="method-header">
+  <span class="method-title">stream</span> (line <span class="line-number">441</span>)
+</div> 
+<p class="short-description">Streams the PDF to the client</p>
+
+<p class="description">
+
+<p>The file will always open a download dialog.  The options parameter
+controls the output headers.  Accepted headers
+are:<br/><br/>
+
+'Accept-Ranges' =&gt; 1 or 0 - if this is not set to 1, then this
+header is not included, off by default. This header seems to have
+caused some problems despite the fact that it is supposed to solve
+them, so I am leaving it off by default.<br/><br/>
+
+'compress' = &gt; 1 or 0 - apply content stream compression, this is
+on (1) by default<br/><br/>
+
+'Attachment' =&gt; 1 or 0 - if 1, force the browser to open a download
+dialog, on (1) by default</p>
+
+</p>
+  
+  <div class="method-signature">
+    <span class="method-result">void</span>
+    <span class="method-name">stream</span>(<span class="var-type">string</span>&nbsp;<span class="var-name">$filename</span>, [<span class="var-type">array</span>&nbsp;<span class="var-name">$options</span> = <span class="var-default">null</span>])
+  </div>
+  
+   <ul class="parameters">
+       <li>
+     <span class="var-type">string</span>
+     <span class="var-name">$filename</span><span class="var-description">: the name of the streamed file</span>      </li>
+       <li>
+     <span class="var-type">array</span>
+     <span class="var-name">$options</span><span class="var-description">: header options (see above)</span>      </li>
+     </ul>
+</div>
+
+<a name="inline"> </a>
+<h2>Inline PHP Support</h2>
+
+<p>dompdf supports two varieties of inline PHP code.  All PHP evaluation is
+controlled by the <code>DOMPDF_ENABLE_PHP</code> configuration option.  If it is set to
+false, then no PHP code is executed.  Otherwise, PHP is evaluated in two
+passes:</p>
+
+<p>The first pass is useful for inserting dynamic data into your PDF.  You can
+do this by embedding &lt;?php ?&gt; tags in your HTML file, as you would in a
+normal .php file.  This code is evaluated prior to parsing the HTML, so you
+can echo any text or markup and it will appear in the rendered PDF.</p>
+
+<p>The second pass is useful for performing drawing operations on the
+underlying PDF class directly.  You can do this by embedding PHP code within
+&lt;script type="text/php"&gt; &lt;/script&gt; tags.  This code is evaluated
+during the rendering phase and you have access to a few internal objects and
+operations.  In particular, the <code>$pdf</code> variable is the current instance of
+Canvas.  Using this object, you can write and draw directly on the
+current page.  Using the <code>Canvas::open_object()</code>,
+<code>Canvas::close_object()</code> and
+<code>Canvas::add_object()</code> methods, you can create text and
+drawing objects that appear on every page of your PDF (useful for headers &amp;
+footers).</p>
+
+<p>The following variables are defined for you during the second pass of PHP
+execution:</p>
+<pre>
+  $pdf         the current instance of Canvas
+  $PAGE_NUM    the current page number
+  $PAGE_COUNT  the total number of pages in the document
+</pre>
+
+<p>For more complete documentation of the Canvas API, see the <a
+href="http://www.digitaljunkies.ca/dompdf/doc/">API documentation</a>.</p>
+
+<?php include("foot.inc"); ?>
Index: /trunk/filemanager/tp/dompdf/www/install.php
===================================================================
--- /trunk/filemanager/tp/dompdf/www/install.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/install.php	(revision 2000)
@@ -0,0 +1,171 @@
+<?php include("head.inc");?>
+
+<div id="toc">
+<h2>On this page:</h2>
+<ul>
+<?php echo li_arrow() ?><a href="#requirements">Requirements</a></li>
+<?php echo li_arrow() ?><a href="#installation">Installation</a></li>
+<?php echo li_arrow() ?><a href="#fonts">Font Installation</a></li>
+<ul>
+<?php echo li_arrow() ?><a href="#all_platforms">Note for all platforms</a></li>
+<?php echo li_arrow() ?><a href="#unix">Linux/Unix</a></li>
+<ul><?php echo li_arrow() ?><a href="#load_font"><pre>load_font.php</pre></a></li></ul>
+<?php echo li_arrow() ?><a href="#windows">Windows</a></li>
+</ul>
+<?php echo li_arrow() ?><a href="#hacking">Hacking</a></li>
+</ul>
+</div>
+
+<a name="requirements"> </a>
+<h2>Requirements</h2>
+
+<ul>
+
+<li style="list-style-image: url('images/star_03.gif');">PHP 5.0.0+
+(although most later pre-5.0 snaps should work as well) with the DOM
+extension enabled.</li>
+
+<li style="list-style-image: url('images/star_05.gif');">Some fonts.  PDFs
+internally support Helvetica, Times-Roman, Courier &amp; Zapf-Dingbats, but
+if you wish to use other fonts you will need to install some fonts.  dompdf
+supports the same fonts as the underlying PDF backends: Type 1 (.pfb
+with the corresponding .afm) and TrueType (.ttf).  At the minimum, you
+should probably have the Microsoft core fonts (now available at: <a
+href="http://corefonts.sourceforge.net/">http://corefonts.sourceforge.net/</a>).
+See <a href="#fonts">below</a> for font installation instructions.</li>
+
+<li style="list-style-image: url('images/star_04.gif');">ttf2pt1 (available
+at <a
+href="http://ttf2pt1.sourceforge.net">http://ttf2pt1.sourceforge.net</a>) is
+required to install new ttf fonts when using the CPDF backend.</li>
+
+</ul>
+
+<a name="installation"> </a>
+<h2>Installation</h2>
+
+<ol>
+<li>Untar/unzip the source package in a directory accessible by your webserver.</li>
+
+<li>Edit dompdf_config.inc.php to fit your installation.  If you leave
+the DOMPDF_PDF_BACKEND setting at 'auto' dompdf will use PDFLib if it
+is installed, otherwise it will use the bundled R&amp;OS CPDF class.</li>
+
+<li><p>Give your webserver write permission on the path specified in
+<code>DOMPDF_FONT_DIR</code> (lib/fonts by default).  Under *nix, ideally
+you can make the webserver group the owner of this directory and give the
+directory group write permissions.  For example, on Debian systems, apache
+runs as the www-data user:</p>
+<pre>
+   $ chgrp www-data lib/fonts
+   $ chmod g+w lib/fonts
+</pre>
+<p>If your user is not a member of the www-data group or you do not have
+root priviledges, you can make the directory world writable and set the
+sticky bit:</p>
+<pre>   
+   $ chmod 1777 lib/fonts
+</pre>
+</li>
+</ol>
+
+<a name="fonts"> </a>
+<h2>Font Installation</h2>
+
+<a name="all_platforms"> </a>
+<h3>Note for all platforms</h3>
+
+<p>PDFs include support by default for Helvetica, Times-Roman, Courier and
+ZapfDingbats.  You do not need to install any font files if you wish to use
+these fonts.  This has the advantage of reducing the size of the resulting
+PDF, because additional fonts must be embedded in the PDF.</p>
+
+<p>Also, if you have problems installing the font files, you can try and use
+the distributed dompdf_font_family_cache.dist file in lib/fonts.  Copy this
+file to lib/fonts/dompdf_font_family_cache and edit it directly to match the
+files present in your lib/fonts directory.</p>
+
+<a name="unix"> </a>
+<h3>Linux/Unix</h3>
+
+<p>The load_font.php utility installs and converts TrueType fonts for use with
+dompdf.  Since CSS uses the concept of font families (i.e. the same face can
+be rendered in differnt styles &amp; weights) dompdf needs to know which actual
+font files belong to which font family and which style.  For example, the
+Microsoft core font pack includes the files Verdana.ttf, Verdana_Italic.ttf,
+Verdana_Bold.ttf and Verdana_Bold_Italic.ttf.  All four of these files need
+to be present in the dompdf font directory (<code>DOMPDF_FONT_DIR</code>), and entries
+need to be made in the dompdf_font_family_cache file.</p>
+
+<p>Given the font family name and the path to the 'normal' font face file
+(Verdana.ttf, in our example), load_font.php will search for the bold,
+italic and bold italic font face files in the same directory as the
+specified file.  It searches for files with the same base name followed by
+'_Bold', 'B', or 'b' (similarly for italic and bold italic).  If it can not
+find the correct files, you can specify them on the command line.</p>
+
+<p>In addition to copying the files to the dompdf font directory, it also
+generates .afm files.  The R&amp;OS CPDF class requires both the ttf file and an
+afm file, which describes glyph metrics.  The afm file is generated using
+the ttf2pt1 utlity (available at <a
+href="http://ttf2pt1.sourceforge.net">http://ttf2pt1.sourceforge.net</a>).  
+If you are using the PDFLib backend, you will not need to create afm
+files for the fonts.</p>
+
+<a name="load_font"> </a>
+<p>load_font.php usage:</p>
+
+<table>
+<tr><td class="bar1" colspan="2">&nbsp;</td></tr>
+<tr>
+<td colspan="2" class="input">$ ./load_font.php font-family n_file [b_file] [i_file] [bi_file]</td>
+</tr>
+
+<tr>
+<td class="input">font_family</td>
+<td class="description">the name of the font, e.g. Verdana, 'Times New Roman', monospace, sans-serif.</td>
+</tr>
+
+<tr>
+<td class="input">n_file</td>
+<td class="description">the .pfb or .ttf file for the normal, non-bold, non-italic face of the font.</td>
+</tr>
+
+<tr>
+<td class="input">{b|i|bi}_file</td>
+<td class="description">the files for each of the respective (bold, italic, bold-italic) faces.</td>
+</tr>
+
+<tr><td class="bar2" colspan="2">&nbsp;</td></tr>
+</table>
+
+<p>Examples:</p>
+<pre>
+$ ./load_font.php silkscreen /usr/share/fonts/truetype/slkscr.ttf
+
+$ ./load_font.php 'Times New Roman' /mnt/c_drive/WINDOWS/Fonts/times.ttf
+
+$ php -f load_font.php -- sans-serif /home/dude_mcbacon/myfonts/Verdana.ttf \
+                                     /home/dude_mcbacon/myfonts/V_Bold.ttf
+</pre>
+
+<a name="windows"> </a>
+<h3>Windows</h3>
+
+<p>(Note I don't have a windows test box at the moment, so these instructions
+may not work...  If someone has tried this and has any suggestions for me,
+please send me an email!)</p>
+
+<p>Read the Linux/Unix section above first, as most of it applies.  The main
+difference is the ttf2pt1 utility.  Fortunately, there is a windows version,
+available at <a
+href="http://gnuwin32.sourceforge.net/packages/ttf2pt1.htm">http://gnuwin32.sourceforge.net/packages/ttf2pt1.htm</a>.
+You will have to edit your dompdf_config.inc.php file to point to the path
+where you installed ttf2pt1.</p>
+
+<p>You will also need the cli version of PHP in order to execute
+load_font.php, however it's usage is the same (see the last example above).</p>
+
+
+
+<?php include("foot.inc");?>
Index: /trunk/filemanager/tp/dompdf/www/faq.php
===================================================================
--- /trunk/filemanager/tp/dompdf/www/faq.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/faq.php	(revision 2000)
@@ -0,0 +1,308 @@
+<?php include("head.inc"); ?>
+<a name="FAQ"> </a>
+<h2>Frequently Asked Questions</h2>
+
+<ol>
+<li><a href="#hello_world">Is there a 'hello world' script for dompdf?</a></li>
+
+<li><a href="#save">How do I save a PDF to disk?</a></li>
+
+<li><a href="#dom">I'm getting the following error: <br/>
+ Fatal error: DOMPDF_autoload() [function.require]: Failed opening required
+ '/var/www/dompdf/include/domdocument.cls.php'
+ (include_path='.:') in
+ /var/www/dompdf/dompdf_config.inc.php
+ on line 146</a></li>
+
+<li><a href="#exec_time">I'm getting the following error: <br/> Fatal error:
+  Maximum execution time of 30 seconds exceeded in /var/www/dompdf/dompdf.php
+  on line XXX</a></li>
+
+<li><a href="#no_block_parent">I'm getting the following error:<br/>
+Fatal error: Uncaught exception 'DOMPDF_Exception' with message 'No
+block-level parent found. Not good.' in
+C:\Program Files\Apache\htdocs\dompdf\include\inline_positioner.cls.php:68
+...
+</a></li>
+
+<li><a href="#tables">I have a big table and it's broken!</a></li>
+
+<li><a href="#footers">Is there a way to add headers and footers?</a></li>
+
+<li><a href="#page_break">How do I insert page breaks?</a></li>
+
+<li><a href="#zend_optimizer">I'm getting the following error:<br/>
+Cannot access undefined property for object with
+overloaded property access in
+/var/www/dompdf/include/frame_tree.cls.php on line 160
+</a></li>
+
+<li><a href="#new_window">How can I make PDFs open in the browser window instead of
+opening the download dialog?</a></li>
+
+<li><a href="#centre">How do I centre a table, paragraph or div?</li>
+</ol>
+
+<div class="divider1">&nbsp;</div>
+<div class="answers">
+<a name="hello_world"> </a>
+<h3>Is there a 'hello world' script for dompdf?</h3>
+
+<p>Here's a hello world script:
+<pre>
+&lt;?php
+require_once("dompdf_config.inc.php");
+$html =
+    '&lt;html&gt;&lt;body&gt;'.
+    '&lt;p&gt;Hello World!&lt;/p&gt;'.
+    '&lt;/body&gt;&lt;/html&gt;';
+
+$dompdf = new DOMPDF();
+$dompdf-&gt;load_html($html);
+
+$dompdf-&gt;render();
+$dompdf-&gt;stream("hello_world.pdf");
+
+?&gt;
+</pre>
+
+<p>Put this script in the same directory as
+dompdf_config.inc.php.  You'll have to change the paths in
+dompdf_config.inc.php to match your installation.</p>
+
+<a href="#FAQ">[back to top]</a>
+<div class="divider2" style="background-position: 25% 0%">&nbsp;</div>
+
+<a name="save"> </a>
+<h3>How do I save a PDF to disk?</h3>
+
+<p>If you are using the included <a href="usage.php#web">dompdf.php</a> script you
+can pass it the "save_file" option in conjunction with the "output_file" option.</p>
+
+<p>If you are using the DOMPDF class, you can save the generated PDF
+by calling <code>$dompdf-&gt;output()</code>:</p>
+
+<pre>
+require_once("dompdf_config.inc.php");
+$html = 
+    '&lt;html&gt;&lt;body&gt;'.
+    '&lt;p&gt;Foo&lt;/p&gt;'.
+    '&lt;/body&gt;&lt;/html&gt;';
+
+$dompdf = new DOMPDF();
+$dompdf-&gt;load_html($html);
+
+$dompdf-&gt;render();
+
+// The next call will store the entire PDF as a string in $pdf
+
+$pdf = $dompdf-&gt;output();  
+
+// You can now write $pdf to disk, store it in a database or stream it
+// to the client.
+
+file_put_contents("saved_pdf.pdf", $pdf);
+</pre>
+
+<p>Note that typically <code>dompdf-&gt;stream()</code> and
+<code>dompdf-&gt;output()</code> are mutually exclusive.</p>
+
+<a href="#FAQ">[back to top]</a>
+<div class="divider1" style="background-position: 721px 0%">&nbsp;</div>
+
+
+<a name="dom"> </a>
+<h3>I'm getting the following error: <br/>
+ Fatal error: DOMPDF_autoload() [function.require]: Failed opening required
+ '/var/www/dompdf/include/domdocument.cls.php'
+ (include_path='.:') in
+ /var/www/dompdf/dompdf_config.inc.php
+ on line 146</h3>
+
+<p>This error occurs when the version of PHP that you are using does not have
+the DOM extension enabled.  You can check which extensions are enabled by
+examning the output of <code>phpinfo()</code>.</p>
+
+<p>There are a couple of ways that the DOM extension could have been
+disabled.  DOM uses libxml, so if libxml is not present on your server
+then the DOM extension will not work.  Alternatively, if PHP was compiled
+with the '--disable-dom' switch or the '--disable-xml' switch, DOM support
+will also be removed.  You can check which switches were used to compile
+PHP with <code>phpinfo()</code>.</p>
+
+<a href="#FAQ">[back to top]</a>
+<div class="divider1" style="background-position: 239px 0%">&nbsp;</div>
+
+<a name="exec_time"> </a>
+<h3>I'm getting the following error: <br/> Fatal error:
+  Maximum execution time of 30 seconds exceeded in /var/www/dompdf/dompdf.php
+  on line XXX</h3>
+
+<p>Nested tables are not supported yet (v0.4.3) and can cause dompdf to enter an
+endless loop, thus giving rise to this error.</p>
+
+<a href="#FAQ">[back to top]</a>
+<div class="divider1" style="background-position: 300px 0%">&nbsp;</div>
+
+<a name="no_block_parent"> </a>
+<h3>I'm getting the following error:<br/>
+Fatal error: Uncaught exception 'DOMPDF_Exception' with message 'No
+block-level parent found. Not good.' in
+C:\Program Files\Apache\htdocs\dompdf\include\inline_positioner.cls.php:68
+...</h3>
+
+<p>This should be fixed in versions 0.4.1 and up.  The error was
+caused by <code>parse_url()</code> thinking that the 'c' in 'c:\' was
+a protocol.  Version 0.4.1 works around this issue.</p>
+
+<a href="#FAQ">[back to top]</a>
+<div class="divider2" style="background-position: 130px 0%">&nbsp;</div>
+
+<a name="tables"> </a>
+<h3>I have a big table and it's broken!</h3>
+
+<p>This is fixed in versions 0.4 and higher.  Previous versions did not support tables that spanned pages.</p>
+
+<a href="#FAQ">[back to top]</a>
+<div class="divider1" style="background-position: 812px 0%">&nbsp;</div>
+
+<a name="footers"> </a>
+<h3>Is there a way to add headers and footers?</h3>
+
+<p>Yes, you can add headers and footers using inline PHP.  Headers and
+footers are added by accessing the PDF renderer directly using inline
+PHP embedded in your HTML file.  This is similar to creating PDFs with
+FPDF or ezPDF from R&amp;OS, in that you can draw lines, boxes and text
+directly on the PDF.  Here are step by step instructions:</p>
+
+<ol>
+<li> Somewhere in your html file, near the top, open a script tag with a "text/php" type:
+<pre>
+  &lt;script type="text/php"&gt;
+</pre>
+</li>
+
+<li> Check if the $pdf variable is set.  dompdf sets this variable when evaluating embedded PHP.
+<pre>
+  &lt;script type="text/php"&gt;
+ 
+  if ( isset($pdf) ) {
+</pre>
+</li>
+
+<li> Pick a font:
+<pre>
+  &lt;script type="text/php"&gt;
+ 
+  if ( isset($pdf) ) {
+  
+    $font = Font_Metrics::get_font("verdana", "bold");
+</pre>
+</li>
+
+<li> Use the CPDF_Adapter::page_text() method to set text that will be
+displayed on every page:
+
+<pre>
+  &lt;script type="text/php"&gt;
+ 
+  if ( isset($pdf) ) {
+  
+    $font = Font_Metrics::get_font("verdana", "bold");
+    $pdf-&gt;page_text(72, 18, "Fancy Header", $font, 6, array(0,0,0));
+
+  }
+  &lt;/script&gt;
+</pre>
+
+In this example, the text will be displayed 72pt (1 in) from the left
+edge of the page and 18pt (1/4 in) from the top of the page, in 6pt
+font.  The last argument to page_text() is the colour which takes an
+array of the form array(r,g,b) where each of r, g, and b are between
+0.0 and 1.0.  </li>
+
+<li> There are several other methods available.  See the API
+documentation for the CPDF_Adapter class (<a
+href="doc/">http://www.digitaljunkies.ca/dompdf/doc</a>) for more
+details.  Also have a look at the demo_01.html file in the www/test/
+directory.  It adds a header and footer using
+PDF_Adapter->page_text().  It also adds text superimposed over the
+rendered text using a PDF 'object'.  This object is added using
+CPDF_Adapter->add_object().  See <a
+href="usage.php#inline">usage.php</a> for more info on inline PHP.</li>
+</ol>
+
+<a href="#FAQ">[back to top]</a>
+<div class="divider2" style="background-position: 12px 0%">&nbsp;</div>
+
+<a name="page_break"> </a>
+<h3>How do I insert page breaks?</h3>
+
+<p>Page breaks can be inserted by applying the CSS properties 
+<a href="http://www.w3.org/TR/CSS21/page.html#propdef-page-break-before">page-break-before</a>
+and 
+<a href="http://www.w3.org/TR/CSS21/page.html#propdef-page-break-after">page-break-after</a> to
+any block level element.</p>
+
+<a href="#FAQ">[back to top]</a>
+<div class="divider1" style="background-position: 44px 0%">&nbsp;</div>
+
+<a name="zend_optimizer"> </a>
+<h3>I'm getting the following error:<br/>
+Cannot access undefined property for object with
+overloaded property access in
+/var/www/dompdf/include/frame_tree.cls.php on line 160</h3>
+
+<p>This error is caused by an incompatibility with the Zend Optimizer.
+Disable the optimizer when using dompdf.</p>
+
+<a href="#FAQ">[back to top]</a>
+<div class="divider1" style="background-position: 991px 0%">&nbsp;</div>
+
+<a name="new_window"> </a>
+<h3>How can I make PDFs open in the browser window instead of
+opening the download dialog?</h3>
+
+<p>This is controlled by the "Attachment" header sent by dompdf when
+it streams the PDF to the client.  You can modify the headers sent by
+dompdf by passing additional options to the
+<code>$dompdf->stream()</code> function:</p>
+
+<pre>
+require_once("dompdf_config.inc.php");
+$html = 
+    '&lt;html&gt;&lt;body&gt;'.
+    '&lt;p&gt;Some text&lt;/p&gt;'.
+    '&lt;/body&gt;&lt;/html&gt;';
+
+$dompdf = new DOMPDF();
+$dompdf-&gt;load_html($html);
+
+$dompdf-&gt;render();
+$domper-&gt;stream("my_pdf.pdf", array("Attachment" =&gt; 0));
+
+</pre>
+
+<p>See the <a href="usage.php#methodstream">class reference</a> for full details.</p>
+
+<a href="#FAQ">[back to top]</a>
+<div class="divider2" style="background-position: 237px 0%">&nbsp;</div>
+
+<a name="centre"> </a>
+<h3>How do I centre a table, paragraph or div?</h3>
+
+<p>You can centre any block level element (table, p, div, ul, etc.) by
+using margins:</p>
+
+<pre>
+&lt;table style="margin-left: auto; margin-right: auto"&gt;
+&lt;tr&gt;
+&lt;td&gt; ... &lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+</pre>
+
+<a href="#FAQ">[back to top]</a>
+<div class="divider1" style="background-position: 884px 0%">&nbsp;</div>
+
+</div> <?php include "foot.inc" ?>
Index: /trunk/filemanager/tp/dompdf/www/index.php
===================================================================
--- /trunk/filemanager/tp/dompdf/www/index.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/www/index.php	(revision 2000)
@@ -0,0 +1,32 @@
+<?php include("head.inc"); ?>
+
+<a name="overview"> </a>
+<h2>Overview</h2>
+
+<p>dompdf is an HTML to PDF converter.  At its heart, dompdf is (mostly)
+CSS2.1 compliant HTML layout and rendering engine written in PHP.  It is
+a style-driven renderer: it will download and read external stylesheets,
+inline style tags, and the style attributes of individual HTML elements.  It
+also supports most presentational HTML attributes.</p>
+
+<p>PDF rendering is currently provided either by PDFLib (<a
+href="http://www.pdflib.com">www.pdflib.com</a>) or by a bundled
+version the R&amp;OS CPDF class written by Wayne Munro (<a
+href="http://www.ros.co.nz/pdf/">www.ros.co.nz/pdf</a>).  (Some
+performance related changes have been made to the R&amp;OS class,
+however).  In order to use PDFLib with dompdf, the PDFLib PECL
+extension is required.  Using PDFLib improves performance and reduces
+the memory requirements of dompdf somewhat, while the R&amp;OS CPDF class,
+though slightly slower, eliminates any dependencies on external PDF
+libraries.</p>
+
+<p>dompdf was entered in the <a
+href="http://www.zend.com/php5/contest/contest.php">Zend PHP 5
+Contest</a> and placed 20th overall.</p>
+
+<p>Please note that dompdf works only with PHP 5.  There are no plans for
+a PHP 4 port.  If your web host does not offer PHP 4, I suggest either pestering
+them, or setting up your own PHP 5 box and using it to run dompdf.  Your scripts
+on your web host can redirect PDF requests to your PHP 5 box.</p>
+
+<?php include("foot.inc"); ?>
Index: /trunk/filemanager/tp/dompdf/TODO
===================================================================
--- /trunk/filemanager/tp/dompdf/TODO	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/TODO	(revision 2000)
@@ -0,0 +1,172 @@
+FIXME: This is out of date...
+- where/how to resolve text-transform, font-variant, letter-spacing?
+
+- superscript/subscript (vertical-align)
+
+- font differences for CPDF->selectFont().  Equivalent thing for
+   PDFLib?
+
+- document getting non-latin glyphs working
+
+- write a 'quick start' guide
+
+- support for links
+
+- "Firstly a suggestion. When an image doesn't have width and height tags
+specified it renders the picture, but if the picture is in a table cell
+the table cell has a width of 0. This isn't really a bug, and yes people
+really should be specifying the width and height, but I thought I'd point
+it out anyway."
+
+- render form controls?
+
+- Need to handle *2 style relative column widths (specified in table attributes),
+  col/colgroup tags
+
+- *** Partly done: tbody tested *** test tbody/thead/tfoot tags
+
+- inline-block positioning is a little screwy, esp. when text is justified.
+  Should figure out a better way of accounting for block frame heights wrt lines.
+  (reflow vs. position?, adding blocks to lines)
+
+- table splitting: split rows, redraw thead & tfoot elements across split tables
+
+- potential optimization: refrain from traversing the tree in Stylesheet and
+  merge it with the decoration step; use a visitor?
+
+- log errors/warnings somewhere, probably in session or to a file
+
+- generated PDFs crash kpdf
+
+- pseudo-selectors:
+   :before
+   :after
+   :first-child
+   :first-line
+   :first-letter
+   :link
+
+- lists
+  table captions
+  nested tables
+  absolutely positioned elements
+  relatively positioned elements
+  floats
+  images (DONE: jpeg & png only)
+
+- Property support:
+  azimuth                | N/A
+  background-attachment  | 
+  background-color       | y
+  background-image       | untested
+  background-position    | 
+  background-repeat      | 
+  background             | 
+  border-collapse        | y
+  border-color           | y
+  border-spacing         | y
+  border-style           | y
+  border-top             | y
+  border-right           | y
+  border-bottom          | y
+  border-left            | y
+  border-top-color       | y
+  border-right-color     | y
+  border-bottom-color    | y
+  border-left-color      | y
+  border-top-style       | y
+  border-right-style     | y
+  border-bottom-style    | y
+  border-left-style      | y
+  border-top-width       | y
+  border-right-width     | y
+  border-bottom-width    | y
+  border-left-width      | y
+  border-width           | y
+  border                 | y
+  bottom                 | 
+  caption-side           | 
+  clear                  | 
+  clip                   | 
+  color                  | y
+  content                | 
+  counter-increment      | 
+  counter-reset          | 
+  cue-after              | N/A
+  cue-before             | N/A
+  cue                    | N/A
+  cursor                 | N/A
+  direction              | 
+  display                | block|inline|table|table-row|table-row-group|table-cell|list-item (sorta)
+  elevation              | N/A
+  empty-cells            | 
+  float                  | 
+  font-family            | y
+  font-size              | y
+  font-style             | y
+  font-variant           | y
+  font-weight            | y
+  font                   | y
+  height                 | y
+  left                   | 
+  letter-spacing         | 
+  line-height            | y
+  list-style-image       | 
+  list-style-position    | 
+  list-style-type        | non-numeric only
+  list-style             | 
+  margin-right           | y
+  margin-left            | y
+  margin-top             | y
+  margin-bottom          | y
+  margin                 | y
+  max-height             | y
+  max-width              | y
+  min-height             | y
+  min-width              | y
+  orphans                | 
+  outline-color          | 
+  outline-style          | 
+  outline-width          | 
+  outline                | 
+  overflow               | 
+  padding-top            | y
+  padding-right          | y
+  padding-bottom         | y
+  padding-left           | y
+  padding                | y
+  page-break-after       | y
+  page-break-before      | y
+  page-break-inside      | y
+  pause-after            | N/A
+  pause-before           | N/A
+  pause                  | N/A
+  pitch-range            | N/A
+  pitch                  | N/A
+  play-during            | N/A
+  position               | 
+  quotes                 | 
+  richness               | N/A
+  right                  | 
+  speak-header           | N/A
+  speak-numeral          | N/A
+  speak-punctuation      | N/A
+  speak                  | N/A
+  speech-rate            | N/A
+  stress                 | N/A
+  table-layout           | y
+  text-align             | y
+  text-decoration        | y
+  text-indent            | y
+  text-transform         | y
+  top                    | 
+  unicode-bidi           | 
+  vertical-align         | within table-cells
+  visibility             | 
+  voice-family           | N/A
+  volume                 | N/A
+  white-space            | y
+  widows                 | 
+  width                  | y
+  word-spacing           | y
+  z-index                | 
Index: /trunk/filemanager/tp/dompdf/INSTALL
===================================================================
--- /trunk/filemanager/tp/dompdf/INSTALL	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/INSTALL	(revision 2000)
@@ -0,0 +1,115 @@
+DOMPDF - PHP5 HTML to PDF converter
+===================================
+
+http://www.digitaljunkies.ca/dompdf
+Copyright (c) 2004 Benj Carson
+
+Send bug reports, patches, feature requests, complaints & hate mail (no spam
+thanks though) to <benjcarson@digitaljunkies.ca>
+
+##### See README for usage information. #####
+
+
+Installation
+------------
+
+1. Untar/unzip the source package in a directory accessible by your
+   webserver.
+
+2. Edit dompdf_config.inc.php to fit your installation.
+
+3. Give your webserver write permission on the path specified in
+   DOMPDF_FONT_DIR (lib/fonts by default).  Under *nix, ideally you can make
+   the webserver group the owner of this directory and give the directory
+   group write permissions.  For example, on Debian systems, apache runs as
+   the www-data user:
+
+   $ chgrp www-data lib/fonts
+   $ chmod g+w lib/fonts
+
+   If your user is not a member of the www-data group or you do not have
+   root priviledges, you can make the directory world writable and set the
+   sticky bit:
+   
+   $ chmod 1777 lib/fonts
+
+
+Font Installation
+-----------------
+
+Linux/Unix:
+
+The load_font.php utility installs and converts TrueType fonts for use with
+DOMPDF.  Since CSS uses the concept of font families (i.e. the same face can
+be rendered in differnt styles & weights) DOMPDF needs to know which actual
+font files belong to which font family and which style.  For example, the
+Microsoft core font pack includes the files Verdana.ttf, Verdana_Italic.ttf,
+Verdana_Bold.ttf and Verdana_Bold_Italic.ttf.  All four of these files need
+to be present in the DOMPDF font directory (DOMPDF_FONT_DIR), and entries
+need to be made in the dompdf_font_family_cache file.
+
+Given the font family name and the path to the 'normal' font face file
+(Verdana.ttf, in our example), load_font.php will search for the bold,
+italic and bold italic font face files in the same directory as the
+specified file.  It searches for files with the same base name followed by
+'_Bold', 'B', or 'b' (similarly for italic and bold italic).  If it can not
+find the correct files, you can specify them on the command line.
+
+In addition to copying the files to the DOMPDF font directory, it also
+generates .afm files.  The R&OS PDF class requires both the ttf file and an
+afm file, which describes glyph metrics.  The afm file is generated using
+the ttf2pt1 utlity (available at http://ttf2pt1.sourceforge.net).
+
+
+usage:
+
+./load_font.php font-family n_file [b_file] [i_file] [bi_file]
+
+font_family:      the name of the font, e.g. Verdana, 'Times New Roman', 
+                  monospace, sans-serif.
+
+n_file:           the .pfb or .ttf file for the normal, non-bold, non-italic
+                  face of the font.
+
+{b|i|bi}_file:    the files for each of the respective (bold, italic, 
+                  bold-italic) faces.
+
+Examples:
+
+$ ./load_font.php silkscreen /usr/share/fonts/truetype/slkscr.ttf
+
+$ ./load_font.php 'Times New Roman' /mnt/c_drive/WINDOWS/Fonts/times.ttf
+
+$ php -f load_font.php -- sans-serif /home/dude_mcbacon/myfonts/Verdana.ttf \
+                                     /home/dude_mcbacon/myfonts/V_Bold.ttf
+
+Windows:
+
+(Note I don't have a windows test box at the moment, so these instructions
+may not work...  If someone has tried this and has any suggestions for me,
+please send me an email!)
+
+Read the Linux/Unix section above first, as most of it applies.  The main
+difference is the ttf2pt1 utility.  Fortunately, there is a windows version,
+available at http://gnuwin32.sourceforge.net/packages/ttf2pt1.htm.  You will
+have to edit your dompdf_config.inc.php file to point to the path where you
+installed ttf2pt1.
+
+You will also need the cli version of PHP in order to execute
+load_font.php, however it's usage is the same (see the last example above).
+
+
+Note for all platforms:
+
+PDFs include support by default for Helvetica, Times-Roman, Courier and
+ZapfDingbats.  You do not need to install any font files if you wish to use
+these fonts.  This has the advantage of reducing the size of the resulting
+PDF, because additional fonts must be embedded in the PDF.
+
+Also, if you have problems installing the font files, you can try and use
+the distributed dompdf_font_family_cache.dist file in lib/fonts.  Copy this
+file to lib/fonts/dompdf_font_family_cache and edit it directly to match the
+files present in your lib/fonts directory. You can uncomment the appropriate
+entries in dompdf_font_family_cache once you have copied the appropriate ttf
+files into lib/fonts and generated afm files for each one.
+
Index: /trunk/filemanager/tp/dompdf/lib/class.pdf.php
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/class.pdf.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/class.pdf.php	(revision 2000)
@@ -0,0 +1,5633 @@
+<?php
+  /**
+   * Cpdf
+   *
+   * http://www.ros.co.nz/pdf
+   *
+   * A PHP class to provide the basic functionality to create a pdf document without
+   * any requirement for additional modules.
+   *
+   * Note that they companion class CezPdf can be used to extend this class and dramatically
+   * simplify the creation of documents.
+   *
+   * Extended by Orion Richardson to support Unicode / UTF-8 characters using
+   * TCPDF and others as a guide.
+   *
+   * IMPORTANT NOTE
+   * there is no warranty, implied or otherwise with this software.
+   *
+   * LICENCE
+   * This code has been placed in the Public Domain for all to enjoy.
+   *
+   * @author       Wayne Munro <pdf@ros.co.nz>
+   * @contributor  Orion Richardson <orionr@yahoo.com>
+   * @contributor  Helmut Tischer <htischer@weihenstephan.org>
+   * @version  009
+   * @package  Cpdf
+   *
+   * Changes
+   * @contributor Helmut Tischer <htischer@weihenstephan.org>
+   * @version 0.5.1.htischer.20090507
+   * - On multiple identical png and jpg images, put only one copy into the pdf file and refer to it.
+   *   This reduces file size and rendering time.
+   * - Allow font metrics cache to be a different folder as the font metrics. This allows a read only installation.
+   * - Allow adding images directly from a gd object. This increases performance by avoiding temporary files.
+   * - On png image files remove alpa channel to allow display of typical png files in pdf.
+   * - On addImage avoid temporary file. Todo: Duplicate Image (currently not used)
+   * - Add a check function, whether image is already cached, This avoids double creation by caller which saves
+   *   CPU time and memory.
+   * @contributor Helmut Tischer <htischer@weihenstephan.org>
+   * @version dompdf_trunk_with_helmut_mods.20090524
+   * - Allow temp and fontcache folders to be passed in by class creator
+   * @version dompdf_trunk_with_helmut_mods.20090528
+   * - typo 'decent' instead of 'descent' at various locations made getFontDescender worthless
+   */
+class  Cpdf {
+
+
+  /**
+   * the current number of pdf objects in the document
+   */
+  public  $numObj = 0;
+
+  /**
+   * this array contains all of the pdf objects, ready for final assembly
+   */
+  public  $objects =  array();
+
+  /**
+   * the objectId (number within the objects array) of the document catalog
+   */
+  public  $catalogId;
+
+  /**
+   * array carrying information about the fonts that the system currently knows about
+   * used to ensure that a font is not loaded twice, among other things
+   */
+  public  $fonts = array();
+
+  /**
+   * a record of the current font
+   */
+  public  $currentFont = '';
+
+  /**
+   * the current base font
+   */
+  public  $currentBaseFont = '';
+
+  /**
+   * the number of the current font within the font array
+   */
+  public  $currentFontNum = 0;
+
+  /**
+   *
+   */
+  public  $currentNode;
+
+  /**
+   * object number of the current page
+   */
+  public  $currentPage;
+
+  /**
+   * object number of the currently active contents block
+   */
+  public  $currentContents;
+
+  /**
+   * number of fonts within the system
+   */
+  public  $numFonts = 0;
+
+  /**
+   * Number of graphic state resources used
+   */
+  private  $numStates =  0;
+
+
+  /**
+   * current colour for fill operations, defaults to inactive value, all three components should be between 0 and 1 inclusive when active
+   */
+  public  $currentColour = array('r'=>-1, 'g'=>-1, 'b'=>-1);
+
+  /**
+   * current colour for stroke operations (lines etc.)
+   */
+  public  $currentStrokeColour = array('r'=>-1, 'g'=>-1, 'b'=>-1);
+
+  /**
+   * current style that lines are drawn in
+   */
+  public  $currentLineStyle = '';
+
+  /**
+   * current line transparency (partial graphics state)
+   */
+  public $currentLineTransparency = array("mode" => "Normal", "opacity" => 1.0);
+  
+  /**
+   * current fill transparency (partial graphics state)
+   */
+  public $currentFillTransparency = array("mode" => "Normal", "opacity" => 1.0);
+  
+  /**
+   * an array which is used to save the state of the document, mainly the colours and styles
+   * it is used to temporarily change to another state, the change back to what it was before
+   */
+  public  $stateStack =  array();
+
+  /**
+   * number of elements within the state stack
+   */
+  public  $nStateStack =  0;
+
+  /**
+   * number of page objects within the document
+   */
+  public  $numPages = 0;
+
+  /**
+   * object Id storage stack
+   */
+  public  $stack = array();
+
+  /**
+   * number of elements within the object Id storage stack
+   */
+  public  $nStack = 0;
+
+  /**
+   * an array which contains information about the objects which are not firmly attached to pages
+   * these have been added with the addObject function
+   */
+  public  $looseObjects = array();
+
+  /**
+   * array contains infomation about how the loose objects are to be added to the document
+   */
+  public  $addLooseObjects = array();
+
+  /**
+   * the objectId of the information object for the document
+   * this contains authorship, title etc.
+   */
+  public  $infoObject = 0;
+
+  /**
+   * number of images being tracked within the document
+   */
+  public  $numImages = 0;
+
+  /**
+   * an array containing options about the document
+   * it defaults to turning on the compression of the objects
+   */
+  public  $options = array('compression'=>1);
+
+  /**
+   * the objectId of the first page of the document
+   */
+  public  $firstPageId;
+
+  /**
+   * used to track the last used value of the inter-word spacing, this is so that it is known
+   * when the spacing is changed.
+   */
+  public  $wordSpaceAdjust = 0;
+
+  /**
+   * the object Id of the procset object
+   */
+  public  $procsetObjectId;
+
+  /**
+   * store the information about the relationship between font families
+   * this used so that the code knows which font is the bold version of another font, etc.
+   * the value of this array is initialised in the constuctor function.
+   */
+  public  $fontFamilies =  array();
+ 
+  /**
+   * folder for php serialized formats of font metrics files.
+   * If empty string, use same folder as original metrics files.
+   * This can be passed in from class creator.
+   * If this folder does not exist or is not writable, Cpdf will be **much** slower.
+   * Because of potential trouble with php safe mode, folder cannot be created at runtime.
+   */
+  public  $fontcache = '';
+  
+  /**
+   * temporary folder.
+   * If empty string, will attempty system tmp folder.
+   * This can be passed in from class creator.
+   * Only used for conversion of gd images to jpeg images.
+   */
+  public  $tmp = '';
+
+  /**
+   * track if the current font is bolded or italicised
+   */
+  public  $currentTextState =  '';
+
+  /**
+   * messages are stored here during processing, these can be selected afterwards to give some useful debug information
+   */
+  public  $messages = '';
+
+  /**
+   * the ancryption array for the document encryption is stored here
+   */
+  public  $arc4 = '';
+
+  /**
+   * the object Id of the encryption information
+   */
+  public  $arc4_objnum = 0;
+
+  /**
+   * the file identifier, used to uniquely identify a pdf document
+   */
+  public  $fileIdentifier = '';
+
+  /**
+   * a flag to say if a document is to be encrypted or not
+   */
+  public  $encrypted = 0;
+
+  /**
+   * the ancryption key for the encryption of all the document content (structure is not encrypted)
+   */
+  public  $encryptionKey = '';
+
+  /**
+   * array which forms a stack to keep track of nested callback functions
+   */
+  public  $callback =  array();
+
+  /**
+   * the number of callback functions in the callback array
+   */
+  public  $nCallback =  0;
+
+  /**
+   * store label->id pairs for named destinations, these will be used to replace internal links
+   * done this way so that destinations can be defined after the location that links to them
+   */
+  public  $destinations =  array();
+
+  /**
+   * store the stack for the transaction commands, each item in here is a record of the values of all the
+   * publiciables within the class, so that the user can rollback at will (from each 'start' command)
+   * note that this includes the objects array, so these can be large.
+   */
+  public  $checkpoint =  '';
+
+  /* Table of Image origin filenames and image labels which were already added with o_image().
+   * Allows to merge identical images
+   */
+  public  $imagelist = array();
+
+  /**
+   * whether the text passed in should be treated as Unicode or just local character set.
+   */
+  public  $isUnicode = false;
+
+  /**
+   * class constructor
+   * this will start a new document
+   * @var array array of 4 numbers, defining the bottom left and upper right corner of the page. first two are normally zero.
+   * @var boolean whether text will be treated as Unicode or not.
+   */
+  function  Cpdf ($pageSize = array(0, 0, 612, 792), $isUnicode = false, $fontcache = '', $tmp = '') {
+
+    $this->isUnicode = $isUnicode;
+
+    $this->fontcache = $fontcache;
+
+    $this->tmp = $tmp;
+
+    $this->newDocument($pageSize);
+
+
+    // also initialize the font families that are known about already
+    $this->setFontFamily('init');
+
+    //  $this->fileIdentifier = md5('xxxxxxxx'.time());
+
+
+  }
+
+
+  /**
+   * Document object methods (internal use only)
+   *
+   * There is about one object method for each type of object in the pdf document
+   * Each function has the same call list ($id,$action,$options).
+   * $id = the object ID of the object, or what it is to be if it is being created
+   * $action = a string specifying the action to be performed, though ALL must support:
+   *           'new' - create the object with the id $id
+   *           'out' - produce the output for the pdf object
+   * $options = optional, a string or array containing the various parameters for the object
+   *
+   * These, in conjunction with the output function are the ONLY way for output to be produced
+   * within the pdf 'file'.
+   */
+
+  /**
+   *destination object, used to specify the location for the user to jump to, presently on opening
+   */
+  function  o_destination($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch ($action) {
+
+    case  'new':
+
+      $this->objects[$id] = array('t'=>'destination', 'info'=>array());
+
+      $tmp =  '';
+
+      switch  ($options['type']) {
+
+      case  'XYZ':
+
+      case  'FitR':
+
+        $tmp =   ' '.$options['p3'].$tmp;
+
+      case  'FitH':
+
+      case  'FitV':
+
+      case  'FitBH':
+
+      case  'FitBV':
+
+        $tmp =   ' '.$options['p1'].' '.$options['p2'].$tmp;
+
+      case  'Fit':
+
+      case  'FitB':
+
+        $tmp =   $options['type'].$tmp;
+
+        $this->objects[$id]['info']['string'] = $tmp;
+
+        $this->objects[$id]['info']['page'] = $options['page'];
+      }
+
+      break;
+
+    case  'out':
+
+      $tmp =  $o['info'];
+
+      $res = "\n".$id." 0 obj\n".'['.$tmp['page'].' 0 R /'.$tmp['string']."]\nendobj";
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * set the viewer preferences
+   */
+  function  o_viewerPreferences($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      $this->objects[$id] = array('t'=>'viewerPreferences', 'info'=>array());
+
+      break;
+
+    case  'add':
+
+      foreach($options as  $k=>$v) {
+
+        switch  ($k) {
+
+        case  'HideToolbar':
+
+        case  'HideMenubar':
+
+        case  'HideWindowUI':
+
+        case  'FitWindow':
+
+        case  'CenterWindow':
+
+        case  'NonFullScreenPageMode':
+
+        case  'Direction':
+
+          $o['info'][$k] = $v;
+
+          break;
+        }
+      }
+
+      break;
+
+    case  'out':
+
+
+      $res = "\n".$id." 0 obj\n".'<< ';
+
+      foreach($o['info'] as  $k=>$v) {
+
+        $res.= "\n/".$k.' '.$v;
+      }
+
+      $res.= "\n>>\n";
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * define the document catalog, the overall controller for the document
+   */
+  function  o_catalog($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      $this->objects[$id] = array('t'=>'catalog', 'info'=>array());
+
+      $this->catalogId = $id;
+
+      break;
+
+    case  'outlines':
+
+    case  'pages':
+
+    case  'openHere':
+
+      $o['info'][$action] = $options;
+
+      break;
+
+    case  'viewerPreferences':
+
+      if  (!isset($o['info']['viewerPreferences'])) {
+
+        $this->numObj++;
+
+        $this->o_viewerPreferences($this->numObj, 'new');
+
+        $o['info']['viewerPreferences'] = $this->numObj;
+      }
+
+      $vp =  $o['info']['viewerPreferences'];
+
+      $this->o_viewerPreferences($vp, 'add', $options);
+
+      break;
+
+    case  'out':
+
+      $res = "\n".$id." 0 obj\n".'<< /Type /Catalog';
+
+      foreach($o['info'] as  $k=>$v) {
+
+        switch ($k) {
+
+        case  'outlines':
+
+          $res.= "\n".'/Outlines '.$v.' 0 R';
+
+          break;
+
+        case  'pages':
+
+          $res.= "\n".'/Pages '.$v.' 0 R';
+
+          break;
+
+        case  'viewerPreferences':
+
+          $res.= "\n".'/ViewerPreferences '.$o['info']['viewerPreferences'].' 0 R';
+
+          break;
+
+        case  'openHere':
+
+          $res.= "\n".'/OpenAction '.$o['info']['openHere'].' 0 R';
+
+          break;
+        }
+      }
+
+      $res.= " >>\nendobj";
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * object which is a parent to the pages in the document
+   */
+  function  o_pages($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      $this->objects[$id] = array('t'=>'pages', 'info'=>array());
+
+      $this->o_catalog($this->catalogId, 'pages', $id);
+
+      break;
+
+    case  'page':
+
+      if  (!is_array($options)) {
+
+        // then it will just be the id of the new page
+        $o['info']['pages'][] = $options;
+      } else {
+
+        // then it should be an array having 'id','rid','pos', where rid=the page to which this one will be placed relative
+        // and pos is either 'before' or 'after', saying where this page will fit.
+        if  (isset($options['id']) &&  isset($options['rid']) &&  isset($options['pos'])) {
+
+          $i =  array_search($options['rid'], $o['info']['pages']);
+
+          if  (isset($o['info']['pages'][$i]) &&  $o['info']['pages'][$i] == $options['rid']) {
+
+            // then there is a match
+            // make a space
+            switch  ($options['pos']) {
+
+            case  'before':
+
+              $k =  $i;
+
+              break;
+
+            case  'after':
+
+              $k = $i+1;
+
+              break;
+
+            default:
+
+              $k = -1;
+
+              break;
+            }
+
+            if  ($k >= 0) {
+
+              for  ($j = count($o['info']['pages']) -1;$j >= $k;$j--) {
+
+                $o['info']['pages'][$j+1] = $o['info']['pages'][$j];
+              }
+
+              $o['info']['pages'][$k] = $options['id'];
+            }
+          }
+        }
+      }
+
+      break;
+
+    case  'procset':
+
+      $o['info']['procset'] = $options;
+
+      break;
+
+    case  'mediaBox':
+
+      $o['info']['mediaBox'] = $options;
+      // which should be an array of 4 numbers
+      break;
+
+    case  'font':
+
+      $o['info']['fonts'][] = array('objNum'=>$options['objNum'], 'fontNum'=>$options['fontNum']);
+
+      break;
+
+
+    case  'extGState':
+
+      $o['info']['extGStates'][] =  array('objNum' => $options['objNum'],  'stateNum' => $options['stateNum']);
+
+      break;
+
+
+    case  'xObject':
+
+      $o['info']['xObjects'][] = array('objNum'=>$options['objNum'], 'label'=>$options['label']);
+
+      break;
+
+    case  'out':
+
+      if  (count($o['info']['pages'])) {
+
+        $res = "\n".$id." 0 obj\n<< /Type /Pages\n/Kids [";
+
+        foreach($o['info']['pages'] as  $k=>$v) {
+
+          $res.= $v." 0 R\n";
+        }
+
+        $res.= "]\n/Count ".count($this->objects[$id]['info']['pages']);
+
+
+        if  ( (isset($o['info']['fonts']) &&  count($o['info']['fonts'])) ||
+              isset($o['info']['procset']) ||
+              (isset($o['info']['extGStates']) &&  count($o['info']['extGStates']))) {
+
+
+          $res.= "\n/Resources <<";
+
+          if  (isset($o['info']['procset'])) {
+
+            $res.= "\n/ProcSet ".$o['info']['procset']." 0 R";
+          }
+
+          if  (isset($o['info']['fonts']) &&  count($o['info']['fonts'])) {
+
+            $res.= "\n/Font << ";
+
+            foreach($o['info']['fonts'] as  $finfo) {
+
+              $res.= "\n/F".$finfo['fontNum']." ".$finfo['objNum']." 0 R";
+            }
+
+            $res.= "\n>>";
+          }
+
+          if  (isset($o['info']['xObjects']) &&  count($o['info']['xObjects'])) {
+
+            $res.= "\n/XObject << ";
+
+            foreach($o['info']['xObjects'] as  $finfo) {
+
+              $res.= "\n/".$finfo['label']." ".$finfo['objNum']." 0 R";
+            }
+
+            $res.= "\n>>";
+          }
+
+          if  ( isset($o['info']['extGStates']) &&  count($o['info']['extGStates'])) {
+
+            $res.=  "\n/ExtGState << ";
+
+            foreach ($o['info']['extGStates'] as  $gstate) {
+
+              $res.=  "\n/GS" . $gstate['stateNum'] . " " . $gstate['objNum'] . " 0 R";
+            }
+
+            $res.=  "\n>>";
+          }
+
+
+          $res.= "\n>>";
+
+          if  (isset($o['info']['mediaBox'])) {
+
+            $tmp = $o['info']['mediaBox'];
+
+            $res.= "\n/MediaBox [".sprintf('%.3F', $tmp[0]) .' '.sprintf('%.3F', $tmp[1]) .' '.sprintf('%.3F', $tmp[2]) .' '.sprintf('%.3F', $tmp[3]) .']';
+          }
+        }
+
+        $res.= "\n >>\nendobj";
+      } else {
+
+        $res = "\n".$id." 0 obj\n<< /Type /Pages\n/Count 0\n>>\nendobj";
+      }
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * define the outlines in the doc, empty for now
+   */
+  function  o_outlines($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      $this->objects[$id] = array('t'=>'outlines', 'info'=>array('outlines'=>array()));
+
+      $this->o_catalog($this->catalogId, 'outlines', $id);
+
+      break;
+
+    case  'outline':
+
+      $o['info']['outlines'][] = $options;
+
+      break;
+
+    case  'out':
+
+      if  (count($o['info']['outlines'])) {
+
+        $res = "\n".$id." 0 obj\n<< /Type /Outlines /Kids [";
+
+        foreach($o['info']['outlines'] as  $k=>$v) {
+
+          $res.= $v." 0 R ";
+        }
+
+        $res.= "] /Count ".count($o['info']['outlines']) ." >>\nendobj";
+      } else {
+
+        $res = "\n".$id." 0 obj\n<< /Type /Outlines /Count 0 >>\nendobj";
+      }
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * an object to hold the font description
+   */
+  function  o_font($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      $this->objects[$id] =  array('t' => 'font', 'info' => array('name' => $options['name'], 'fontFileName' => $options['fontFileName'], 'SubType' => 'Type1'));
+
+      $fontNum =  $this->numFonts;
+
+      $this->objects[$id]['info']['fontNum'] =  $fontNum;
+
+      // deal with the encoding and the differences
+      if  (isset($options['differences'])) {
+
+        // then we'll need an encoding dictionary
+        $this->numObj++;
+
+        $this->o_fontEncoding($this->numObj, 'new', $options);
+
+        $this->objects[$id]['info']['encodingDictionary'] =  $this->numObj;
+      } else  if  (isset($options['encoding'])) {
+
+        // we can specify encoding here
+        switch ($options['encoding']) {
+
+        case  'WinAnsiEncoding':
+
+        case  'MacRomanEncoding':
+
+        case  'MacExpertEncoding':
+
+          $this->objects[$id]['info']['encoding'] =  $options['encoding'];
+
+          break;
+
+        case  'none':
+
+          break;
+
+        default:
+
+          $this->objects[$id]['info']['encoding'] =  'WinAnsiEncoding';
+
+          break;
+        }
+      } else {
+
+        $this->objects[$id]['info']['encoding'] =  'WinAnsiEncoding';
+      }
+
+      if ($this->isUnicode) {
+
+        // For Unicode fonts, we need to incorporate font data into
+        // sub-sections that are linked from the primary font section.
+        // Look at o_fontGIDtoCID and o_fontDescendentCID functions
+        // for more informaiton.
+        //
+        // All of this code is adapted from the excellent changes made to
+        // transform FPDF to TCPDF (http://tcpdf.sourceforge.net/)
+
+        $toUnicodeId = ++$this->numObj;
+        $this->o_contents($toUnicodeId, 'new', 'raw');
+        $this->objects[$id]['info']['toUnicode'] = $toUnicodeId;
+        
+        $stream =  "/CIDInit /ProcSet findresource begin\n";
+        $stream.=  "12 dict begin\n";
+        $stream.=  "begincmap\n";
+        $stream.=  "/CIDSystemInfo\n";
+        $stream.=  "<</Registry (Adobe)\n";
+        $stream.=  "/Ordering (UCS)\n";
+        $stream.=  "/Supplement 0\n";
+        $stream.=  ">> def\n";
+        $stream.=  "/CMapName /Adobe-Identity-UCS def\n";
+        $stream.=  "/CMapType 2 def\n";
+        $stream.=  "1 begincodespacerange\n";
+        $stream.=  "<0000> <FFFF>\n";
+        $stream.=  "endcodespacerange\n";
+        $stream.=  "1 beginbfrange\n";
+        $stream.=  "<0000> <FFFF> <0000>\n";
+        $stream.=  "endbfrange\n";
+        $stream.=  "endcmap\n";
+        $stream.=  "CMapName currentdict /CMap defineresource pop\n";
+        $stream.=  "end\n";
+        $stream.=  "end\n";
+
+        $res =   "<</Length " . mb_strlen($stream) . " >>\n";
+        $res .=  "stream\n" . $stream . "endstream";
+
+        $this->objects[$toUnicodeId]['c'] = $res;
+
+        $cidFontId = ++$this->numObj;
+        $this->o_fontDescendentCID($cidFontId, 'new', $options);
+        $this->objects[$id]['info']['cidFont'] = $cidFontId;
+      }
+      
+      // also tell the pages node about the new font
+      $this->o_pages($this->currentNode, 'font', array('fontNum' => $fontNum, 'objNum' => $id));
+
+      break;
+
+
+    case  'add':
+
+      foreach ($options as  $k => $v) {
+
+        switch  ($k) {
+
+        case  'BaseFont':
+
+          $o['info']['name'] =  $v;
+
+          break;
+
+        case  'FirstChar':
+
+        case  'LastChar':
+
+        case  'Widths':
+
+        case  'FontDescriptor':
+
+        case  'SubType':
+
+          $this->addMessage('o_font '.$k." : ".$v);
+
+          $o['info'][$k] =  $v;
+
+          break;
+        }
+      }
+
+      // pass values down to descendent font
+      if (isset($o['info']['cidFont'])) {
+
+        $this->o_fontDescendentCID($o['info']['cidFont'], 'add', $options);
+      }
+        
+      break;
+
+
+    case  'out':
+
+      if ($this->isUnicode) {
+
+        // For Unicode fonts, we need to incorporate font data into
+        // sub-sections that are linked from the primary font section.
+        // Look at o_fontGIDtoCID and o_fontDescendentCID functions
+        // for more informaiton.
+        //
+        // All of this code is adapted from the excellent changes made to
+        // transform FPDF to TCPDF (http://tcpdf.sourceforge.net/)
+
+        $res =  "\n".$id." 0 obj\n<</Type /Font\n/Subtype /Type0\n";
+        $res.=  "/BaseFont /".$o['info']['name']."\n";
+
+        // The horizontal identity mapping for 2-byte CIDs; may be used
+        // with CIDFonts using any Registry, Ordering, and Supplement values.
+        $res.=  "/Encoding /Identity-H\n";
+        $res.=  "/DescendantFonts [".$o['info']['cidFont']." 0 R]\n";
+        $res.=  "/ToUnicode ".$o['info']['toUnicode']." 0 R\n";
+        $res.=  ">>\n";
+        $res.=  "endobj";
+
+      } else {
+      $res =  "\n".$id." 0 obj\n<< /Type /Font\n/Subtype /".$o['info']['SubType']."\n";
+
+      $res.=  "/Name /F".$o['info']['fontNum']."\n";
+
+      $res.=  "/BaseFont /".$o['info']['name']."\n";
+
+      if  (isset($o['info']['encodingDictionary'])) {
+
+        // then place a reference to the dictionary
+        $res.=  "/Encoding ".$o['info']['encodingDictionary']." 0 R\n";
+      } else  if  (isset($o['info']['encoding'])) {
+
+        // use the specified encoding
+        $res.=  "/Encoding /".$o['info']['encoding']."\n";
+      }
+
+      if  (isset($o['info']['FirstChar'])) {
+
+        $res.=  "/FirstChar ".$o['info']['FirstChar']."\n";
+      }
+
+      if  (isset($o['info']['LastChar'])) {
+
+        $res.=  "/LastChar ".$o['info']['LastChar']."\n";
+      }
+
+      if  (isset($o['info']['Widths'])) {
+
+        $res.=  "/Widths ".$o['info']['Widths']." 0 R\n";
+      }
+
+      if  (isset($o['info']['FontDescriptor'])) {
+
+        $res.=  "/FontDescriptor ".$o['info']['FontDescriptor']." 0 R\n";
+      }
+
+        $res.=  ">>\n";
+        $res.=  "endobj";
+        
+      }
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * a font descriptor, needed for including additional fonts
+   */
+  function  o_fontDescriptor($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      $this->objects[$id] = array('t'=>'fontDescriptor', 'info'=>$options);
+
+      break;
+
+    case  'out':
+
+      $res = "\n".$id." 0 obj\n<< /Type /FontDescriptor\n";
+
+      foreach ($o['info'] as  $label => $value) {
+
+        switch  ($label) {
+
+        case  'Ascent':
+
+        case  'CapHeight':
+
+        case  'Descent':
+
+        case  'Flags':
+
+        case  'ItalicAngle':
+
+        case  'StemV':
+
+        case  'AvgWidth':
+
+        case  'Leading':
+
+        case  'MaxWidth':
+
+        case  'MissingWidth':
+
+        case  'StemH':
+
+        case  'XHeight':
+
+        case  'CharSet':
+
+          if  (mb_strlen($value)) {
+
+            $res.= '/'.$label.' '.$value."\n";
+          }
+
+          break;
+
+        case  'FontFile':
+
+        case  'FontFile2':
+
+        case  'FontFile3':
+
+          $res.= '/'.$label.' '.$value." 0 R\n";
+
+          break;
+
+        case  'FontBBox':
+
+          $res.= '/'.$label.' ['.$value[0].' '.$value[1].' '.$value[2].' '.$value[3]."]\n";
+
+          break;
+
+        case  'FontName':
+
+          $res.= '/'.$label.' /'.$value."\n";
+
+          break;
+        }
+      }
+
+      $res.= ">>\nendobj";
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * the font encoding
+   */
+  function  o_fontEncoding($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      // the options array should contain 'differences' and maybe 'encoding'
+      $this->objects[$id] = array('t'=>'fontEncoding', 'info'=>$options);
+
+      break;
+
+    case  'out':
+
+      $res = "\n".$id." 0 obj\n<< /Type /Encoding\n";
+
+      if  (!isset($o['info']['encoding'])) {
+
+        $o['info']['encoding'] = 'WinAnsiEncoding';
+      }
+
+      if  ($o['info']['encoding'] != 'none') {
+
+        $res.= "/BaseEncoding /".$o['info']['encoding']."\n";
+      }
+
+      $res.= "/Differences \n[";
+
+      $onum = -100;
+
+      foreach($o['info']['differences'] as  $num=>$label) {
+
+        if  ($num != $onum+1) {
+
+          // we cannot make use of consecutive numbering
+          $res.=  "\n".$num." /".$label;
+        } else {
+
+          $res.=  " /".$label;
+        }
+
+        $onum = $num;
+      }
+
+      $res.= "\n]\n>>\nendobj";
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * a descendent cid font,  needed for unicode fonts
+   */
+  function  o_fontDescendentCID($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      $this->objects[$id] =  array('t'=>'fontDescendentCID', 'info'=>$options);
+
+      // we need a CID system info section
+      $cidSystemInfoId = ++$this->numObj;
+      $this->o_contents($cidSystemInfoId, 'new', 'raw');
+      $this->objects[$id]['info']['cidSystemInfo'] = $cidSystemInfoId;
+      $res=   "<</Registry (Adobe)\n"; // A string identifying an issuer of character collections
+      $res.=  "/Ordering (UCS)\n"; // A string that uniquely names a character collection issued by a specific registry
+      $res.=  "/Supplement 0\n"; // The supplement number of the character collection.
+      $res.=  ">>";
+      $this->objects[$cidSystemInfoId]['c'] = $res;
+
+      // and a CID to GID map
+      $cidToGidMapId = ++$this->numObj;
+      $this->o_fontGIDtoCIDMap($cidToGidMapId, 'new', $options);
+      $this->objects[$id]['info']['cidToGidMap'] = $cidToGidMapId;
+      
+      break;
+
+    case  'add':
+
+      foreach ($options as  $k => $v) {
+        switch  ($k) {
+        case  'BaseFont':
+          $o['info']['name'] =  $v;
+          break;
+
+        case  'FirstChar':
+        case  'LastChar':
+        case  'MissingWidth':
+        case  'FontDescriptor':
+        case  'SubType':
+          $this->addMessage('o_fontDescendentCID '.$k." : ".$v);
+          $o['info'][$k] =  $v;
+          break;
+        }
+      }
+
+      // pass values down to cid to gid map
+      $this->o_fontGIDtoCIDMap($o['info']['cidToGidMap'], 'add', $options);
+      
+      break;
+
+    case  'out':
+
+      $res =  "\n".$id." 0 obj\n";
+      $res.=  "<</Type /Font\n";
+      $res.=  "/Subtype /CIDFontType2\n";
+      $res.=  "/BaseFont /".$o['info']['name']."\n";
+      $res.=  "/CIDSystemInfo ".$o['info']['cidSystemInfo']." 0 R\n";
+//      if  (isset($o['info']['FirstChar'])) {
+//
+//        $res.=  "/FirstChar ".$o['info']['FirstChar']."\n";
+//      }
+
+//      if  (isset($o['info']['LastChar'])) {
+//
+//        $res.=  "/LastChar ".$o['info']['LastChar']."\n";
+//      }
+      if  (isset($o['info']['FontDescriptor'])) {
+
+        $res.=  "/FontDescriptor ".$o['info']['FontDescriptor']." 0 R\n";
+      }
+
+      if  (isset($o['info']['MissingWidth'])) {
+        $res.=  "/DW ".$o['info']['MissingWidth']."\n";
+      }
+
+      if  (isset($o['info']['fontFileName']) && isset($this->fonts[$o['info']['fontFileName']]['CIDWidths'])) {
+        $cid_widths = &$this->fonts[$o['info']['fontFileName']]['CIDWidths'];
+        $w = '';
+        foreach ($cid_widths as $cid => $width) {
+          $w .= $cid.' ['.$width.'] ';
+        }
+        $res.=  "/W [".$w."]\n";
+      }
+
+      $res.=  "/CIDToGIDMap ".$o['info']['cidToGidMap']." 0 R\n";
+      $res.=  ">>\n";
+      $res.=  "endobj";
+
+      return  $res;
+
+      break;
+    }
+  }
+  
+
+  /**
+   * a font glyph to character map,  needed for unicode fonts
+   */
+  function  o_fontGIDtoCIDMap($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      $this->objects[$id] =  array('t'=>'fontGIDtoCIDMap', 'info'=>$options);
+
+      break;
+
+    case  'out':
+       
+      $res = "\n".$id." 0 obj\n";
+      $tmp = $this->fonts[$o['info']['fontFileName']]['CIDtoGID'] = base64_decode($this->fonts[$o['info']['fontFileName']]['CIDtoGID']);
+      $compressed = isset($this->fonts[$o['info']['fontFileName']]['CIDtoGID_Compressed']) &&
+                    $this->fonts[$o['info']['fontFileName']]['CIDtoGID_Compressed'];
+
+      if  (!$compressed && isset($o['raw'])) {
+
+        $res.= $tmp;
+      } else {
+
+        $res.=  "<<";
+
+        if  (!$compressed && function_exists('gzcompress') &&  $this->options['compression']) {
+
+          // then implement ZLIB based compression on this content stream
+          $compressed = true;
+
+          $tmp =  gzcompress($tmp,  6);
+        }
+        if ($compressed) {
+
+          $res.= "\n/Filter /FlateDecode";
+        }
+
+        $res.= "\n/Length ".mb_strlen($tmp) .">>\nstream\n".$tmp."\nendstream";
+      }
+
+      $res.= "\nendobj";
+
+      return  $res;
+
+      break;
+    }
+  }
+  
+
+  /**
+   * the document procset, solves some problems with printing to old PS printers
+   */
+  function  o_procset($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      $this->objects[$id] = array('t'=>'procset', 'info'=>array('PDF'=>1, 'Text'=>1));
+
+      $this->o_pages($this->currentNode, 'procset', $id);
+
+      $this->procsetObjectId = $id;
+
+      break;
+
+    case  'add':
+
+      // this is to add new items to the procset list, despite the fact that this is considered
+      // obselete, the items are required for printing to some postscript printers
+      switch  ($options) {
+
+      case  'ImageB':
+
+      case  'ImageC':
+
+      case  'ImageI':
+
+        $o['info'][$options] = 1;
+
+        break;
+      }
+
+      break;
+
+    case  'out':
+
+      $res = "\n".$id." 0 obj\n[";
+
+      foreach ($o['info'] as  $label=>$val) {
+
+        $res.= '/'.$label.' ';
+      }
+
+      $res.= "]\nendobj";
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * define the document information
+   */
+  function  o_info($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      $this->infoObject = $id;
+
+      $date = 'D:'.@date('Ymd');
+
+      $this->objects[$id] = array('t'=>'info', 'info'=>array('Creator'=>'R and OS php pdf writer, http://www.ros.co.nz', 'CreationDate'=>$date));
+
+      break;
+
+    case  'Title':
+
+    case  'Author':
+
+    case  'Subject':
+
+    case  'Keywords':
+
+    case  'Creator':
+
+    case  'Producer':
+
+    case  'CreationDate':
+
+    case  'ModDate':
+
+    case  'Trapped':
+
+      $o['info'][$action] = $options;
+
+      break;
+
+    case  'out':
+
+      if  ($this->encrypted) {
+
+        $this->encryptInit($id);
+      }
+
+      $res = "\n".$id." 0 obj\n<<\n";
+
+      foreach ($o['info'] as  $k=>$v) {
+
+        $res.= '/'.$k.' (';
+
+        // dates must be outputted as-is, without Unicode transformations
+        $raw = ($k == 'CreationDate' || $k == 'ModDate');
+        $c = $v;
+
+        if  ($this->encrypted) {
+
+          $c = $this->ARC4($c);
+        }
+
+        $res.= ($raw) ? $c : $this->filterText($c);
+
+        $res.= ")\n";
+      }
+
+      $res.= ">>\nendobj";
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * an action object, used to link to URLS initially
+   */
+  function  o_action($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      if  (is_array($options)) {
+
+        $this->objects[$id] = array('t'=>'action', 'info'=>$options, 'type'=>$options['type']);
+      } else {
+
+        // then assume a URI action
+        $this->objects[$id] = array('t'=>'action', 'info'=>$options, 'type'=>'URI');
+      }
+
+      break;
+
+    case  'out':
+
+      if  ($this->encrypted) {
+
+        $this->encryptInit($id);
+      }
+
+      $res = "\n".$id." 0 obj\n<< /Type /Action";
+
+      switch ($o['type']) {
+
+      case  'ilink':
+
+        // there will be an 'label' setting, this is the name of the destination
+        $res.= "\n/S /GoTo\n/D ".$this->destinations[(string)$o['info']['label']]." 0 R";
+
+        break;
+
+      case  'URI':
+
+        $res.= "\n/S /URI\n/URI (";
+
+        if  ($this->encrypted) {
+
+          $res.= $this->filterText($this->ARC4($o['info']));
+        } else {
+
+          $res.= $this->filterText($o['info']);
+        }
+
+        $res.= ")";
+
+        break;
+      }
+
+      $res.= "\n>>\nendobj";
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * an annotation object, this will add an annotation to the current page.
+   * initially will support just link annotations
+   */
+  function  o_annotation($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      // add the annotation to the current page
+      $pageId =  $this->currentPage;
+
+      $this->o_page($pageId, 'annot', $id);
+
+      // and add the action object which is going to be required
+      switch ($options['type']) {
+
+      case  'link':
+
+        $this->objects[$id] = array('t'=>'annotation', 'info'=>$options);
+
+        $this->numObj++;
+
+        $this->o_action($this->numObj, 'new', $options['url']);
+
+        $this->objects[$id]['info']['actionId'] = $this->numObj;
+
+        break;
+
+      case  'ilink':
+
+        // this is to a named internal link
+        $label =  $options['label'];
+
+        $this->objects[$id] = array('t'=>'annotation', 'info'=>$options);
+
+        $this->numObj++;
+
+        $this->o_action($this->numObj, 'new', array('type'=>'ilink', 'label'=>$label));
+
+        $this->objects[$id]['info']['actionId'] = $this->numObj;
+
+        break;
+      }
+
+      break;
+
+    case  'out':
+
+      $res = "\n".$id." 0 obj\n<< /Type /Annot";
+
+      switch ($o['info']['type']) {
+
+      case  'link':
+
+      case  'ilink':
+
+        $res.=  "\n/Subtype /Link";
+
+        break;
+      }
+
+      $res.= "\n/A ".$o['info']['actionId']." 0 R";
+
+      $res.= "\n/Border [0 0 0]";
+
+      $res.= "\n/H /I";
+
+      $res.= "\n/Rect [ ";
+
+      foreach($o['info']['rect'] as  $v) {
+
+        $res.=  sprintf("%.4F ", $v);
+      }
+
+      $res.= "]";
+
+      $res.= "\n>>\nendobj";
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * a page object, it also creates a contents object to hold its contents
+   */
+  function  o_page($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      $this->numPages++;
+
+      $this->objects[$id] = array('t'=>'page', 'info'=>array('parent'=>$this->currentNode, 'pageNum'=>$this->numPages));
+
+      if  (is_array($options)) {
+
+        // then this must be a page insertion, array shoudl contain 'rid','pos'=[before|after]
+        $options['id'] = $id;
+
+        $this->o_pages($this->currentNode, 'page', $options);
+      } else {
+
+        $this->o_pages($this->currentNode, 'page', $id);
+      }
+
+      $this->currentPage = $id;
+
+      //make a contents object to go with this page
+      $this->numObj++;
+
+      $this->o_contents($this->numObj, 'new', $id);
+
+      $this->currentContents = $this->numObj;
+
+      $this->objects[$id]['info']['contents'] = array();
+
+      $this->objects[$id]['info']['contents'][] = $this->numObj;
+
+      $match =  ($this->numPages%2 ?  'odd' :  'even');
+
+      foreach($this->addLooseObjects as  $oId=>$target) {
+
+        if  ($target == 'all' ||  $match == $target) {
+
+          $this->objects[$id]['info']['contents'][] = $oId;
+        }
+      }
+
+      break;
+
+    case  'content':
+
+      $o['info']['contents'][] = $options;
+
+      break;
+
+    case  'annot':
+
+      // add an annotation to this page
+      if  (!isset($o['info']['annot'])) {
+
+        $o['info']['annot'] = array();
+      }
+
+      // $options should contain the id of the annotation dictionary
+      $o['info']['annot'][] = $options;
+
+      break;
+
+    case  'out':
+
+      $res = "\n".$id." 0 obj\n<< /Type /Page";
+
+      $res.= "\n/Parent ".$o['info']['parent']." 0 R";
+
+      if  (isset($o['info']['annot'])) {
+
+        $res.= "\n/Annots [";
+
+        foreach($o['info']['annot'] as  $aId) {
+
+          $res.= " ".$aId." 0 R";
+        }
+
+        $res.= " ]";
+      }
+
+      $count =  count($o['info']['contents']);
+
+      if  ($count == 1) {
+
+        $res.= "\n/Contents ".$o['info']['contents'][0]." 0 R";
+      } else  if  ($count>1) {
+
+        $res.= "\n/Contents [\n";
+
+        // reverse the page contents so added objects are below normal content
+        //foreach (array_reverse($o['info']['contents']) as  $cId) {
+
+        // Back to normal now that I've got transparency working --Benj
+        foreach ($o['info']['contents'] as  $cId) {
+          $res.= $cId." 0 R\n";
+        }
+
+        $res.= "]";
+      }
+
+      $res.= "\n>>\nendobj";
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * the contents objects hold all of the content which appears on pages
+   */
+  function  o_contents($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  'new':
+
+      $this->objects[$id] = array('t'=>'contents', 'c'=>'', 'info'=>array());
+
+      if  (mb_strlen($options) &&  intval($options)) {
+
+        // then this contents is the primary for a page
+        $this->objects[$id]['onPage'] = $options;
+      } else  if  ($options == 'raw') {
+
+        // then this page contains some other type of system object
+        $this->objects[$id]['raw'] = 1;
+      }
+
+      break;
+
+    case  'add':
+
+      // add more options to the decleration
+      foreach ($options as  $k=>$v) {
+
+        $o['info'][$k] = $v;
+      }
+
+    case  'out':
+      $tmp = $o['c'];
+
+      $res =  "\n".$id." 0 obj\n";
+
+      if  (isset($this->objects[$id]['raw'])) {
+
+        $res.= $tmp;
+      } else {
+
+        $res.=  "<<";
+
+        if  (function_exists('gzcompress') &&  $this->options['compression']) {
+
+          // then implement ZLIB based compression on this content stream
+          $res.= " /Filter /FlateDecode";
+
+          $tmp =  gzcompress($tmp,  6);
+        }
+
+        if  ($this->encrypted) {
+
+          $this->encryptInit($id);
+
+          $tmp =  $this->ARC4($tmp);
+        }
+
+        foreach($o['info'] as  $k=>$v) {
+
+          $res.=  "\n/".$k.' '.$v;
+        }
+
+        $res.= "\n/Length ".mb_strlen($tmp) ." >>\nstream\n".$tmp."\nendstream";
+      }
+
+      $res.= "\nendobj";
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * an image object, will be an XObject in the document, includes description and data
+   */
+  function  o_image($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+      $o = & $this->objects[$id];
+    }
+
+    switch ($action) {
+
+    case  'new':
+
+      // make the new object
+      $this->objects[$id] = array('t'=>'image', 'data'=>&$options['data'], 'info'=>array());
+
+      $this->objects[$id]['info']['Type'] = '/XObject';
+
+      $this->objects[$id]['info']['Subtype'] = '/Image';
+
+      $this->objects[$id]['info']['Width'] = $options['iw'];
+
+      $this->objects[$id]['info']['Height'] = $options['ih'];
+
+      if  (!isset($options['type']) ||  $options['type'] == 'jpg') {
+
+        if  (!isset($options['channels'])) {
+
+          $options['channels'] = 3;
+        }
+
+        switch ($options['channels']) {
+
+        case  1:
+
+          $this->objects[$id]['info']['ColorSpace'] = '/DeviceGray';
+
+          break;
+
+        default:
+
+          $this->objects[$id]['info']['ColorSpace'] = '/DeviceRGB';
+
+          break;
+        }
+
+        $this->objects[$id]['info']['Filter'] = '/DCTDecode';
+
+        $this->objects[$id]['info']['BitsPerComponent'] = 8;
+      } else  if  ($options['type'] == 'png') {
+        
+        $this->objects[$id]['info']['Filter'] = '/FlateDecode';
+
+        $this->objects[$id]['info']['DecodeParms'] = '<< /Predictor 15 /Colors '.$options['ncolor'].' /Columns '.$options['iw'].' /BitsPerComponent '.$options['bitsPerComponent'].'>>';
+        if  (mb_strlen($options['pdata'])) {
+
+          $tmp =  ' [ /Indexed /DeviceRGB '.(mb_strlen($options['pdata']) /3-1) .' ';
+
+          $this->numObj++;
+
+          $this->o_contents($this->numObj, 'new');
+
+          $this->objects[$this->numObj]['c'] = $options['pdata'];
+
+          $tmp.= $this->numObj.' 0 R';
+
+          $tmp.= ' ]';
+
+          $this->objects[$id]['info']['ColorSpace'] =  $tmp;
+
+          if  (isset($options['transparency'])) {
+
+            switch ($options['transparency']['type']) {
+
+            case  'indexed':
+
+              $tmp = ' [ '.$options['transparency']['data'].' '.$options['transparency']['data'].'] ';
+
+              $this->objects[$id]['info']['Mask'] =  $tmp;
+
+              break;
+
+            case 'color-key':
+              $tmp = ' [ '.
+                $options['transparency']['r'] . ' ' . $options['transparency']['r'] .
+                $options['transparency']['g'] . ' ' . $options['transparency']['g'] .
+                $options['transparency']['b'] . ' ' . $options['transparency']['b'] .
+                ' ] ';
+              $this->objects[$id]['info']['Mask'] = $tmp;
+              pre_r($tmp);
+              break;
+              
+            }
+          }
+        } else {
+
+          if  (isset($options['transparency'])) {
+
+            switch ($options['transparency']['type']) {
+
+            case  'indexed':
+
+              $tmp = ' [ '.$options['transparency']['data'].' '.$options['transparency']['data'].'] ';
+
+              $this->objects[$id]['info']['Mask'] =  $tmp;
+
+              break;
+
+            case 'color-key':
+              $tmp = ' [ '.
+                $options['transparency']['r'] . ' ' . $options['transparency']['r'] . ' ' .
+                $options['transparency']['g'] . ' ' . $options['transparency']['g'] . ' ' .
+                $options['transparency']['b'] . ' ' . $options['transparency']['b'] .
+                ' ] ';
+              $this->objects[$id]['info']['Mask'] = $tmp;
+              break;
+              
+            }
+          }
+          $this->objects[$id]['info']['ColorSpace'] = '/'.$options['color'];
+        }
+
+        $this->objects[$id]['info']['BitsPerComponent'] = $options['bitsPerComponent'];
+      }
+
+      // assign it a place in the named resource dictionary as an external object, according to
+      // the label passed in with it.
+      $this->o_pages($this->currentNode, 'xObject', array('label'=>$options['label'], 'objNum'=>$id));
+
+      // also make sure that we have the right procset object for it.
+      $this->o_procset($this->procsetObjectId, 'add', 'ImageC');
+
+      break;
+
+    case  'out':
+
+      $tmp = &$o['data'];
+
+      $res =  "\n".$id." 0 obj\n<<";
+
+      foreach($o['info'] as  $k=>$v) {
+
+        $res.= "\n/".$k.' '.$v;
+      }
+
+      if  ($this->encrypted) {
+
+        $this->encryptInit($id);
+
+        $tmp =  $this->ARC4($tmp);
+      }
+
+      $res.= "\n/Length ".mb_strlen($tmp, '8bit') .">>\nstream\n".$tmp."\nendstream\nendobj";
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * graphics state object
+   */
+  function  o_extGState($id,  $action,  $options = "") {
+
+    static  $valid_params =  array("LW",  "LC",  "LC",  "LJ",  "ML",
+                                   "D",  "RI",  "OP",  "op",  "OPM",
+                                   "Font",  "BG",  "BG2",  "UCR",
+                                   "TR",  "TR2",  "HT",  "FL",
+                                   "SM",  "SA",  "BM",  "SMask",
+                                   "CA",  "ca",  "AIS",  "TK");
+
+    if  ( $action !=  "new") {
+      $o = & $this->objects[$id];
+    }
+
+    switch  ($action) {
+
+    case  "new":
+      $this->objects[$id] =  array('t' => 'extGState',  'info' => $options);
+
+      // Tell the pages about the new resource
+      $this->numStates++;
+      $this->o_pages($this->currentNode,  'extGState',  array("objNum" => $id,  "stateNum" => $this->numStates));
+      break;
+
+
+    case  "out":
+      $res =
+        "\n" . $id . " 0 obj\n".
+        "<< /Type /ExtGState\n";
+
+      foreach ($o["info"] as  $parameter => $value) {
+        if  ( !in_array($parameter,  $valid_params))
+          continue;
+        $res.=  "/$parameter $value\n";
+      }
+
+      $res.=
+        ">>\n".
+        "endobj";
+
+      return  $res;
+    }
+  }
+
+
+  /**
+   * encryption object.
+   */
+  function  o_encryption($id, $action, $options = '') {
+
+    if  ($action != 'new') {
+
+      $o = & $this->objects[$id];
+    }
+
+    switch ($action) {
+
+    case  'new':
+
+      // make the new object
+      $this->objects[$id] = array('t'=>'encryption', 'info'=>$options);
+
+      $this->arc4_objnum = $id;
+
+      // figure out the additional paramaters required
+      $pad =  chr(0x28) .chr(0xBF) .chr(0x4E) .chr(0x5E) .chr(0x4E) .chr(0x75) .chr(0x8A) .chr(0x41) .chr(0x64) .chr(0x00) .chr(0x4E) .chr(0x56) .chr(0xFF) .chr(0xFA) .chr(0x01) .chr(0x08) .chr(0x2E) .chr(0x2E) .chr(0x00) .chr(0xB6) .chr(0xD0) .chr(0x68) .chr(0x3E) .chr(0x80) .chr(0x2F) .chr(0x0C) .chr(0xA9) .chr(0xFE) .chr(0x64) .chr(0x53) .chr(0x69) .chr(0x7A);
+
+      $len =  mb_strlen($options['owner']);
+
+      if  ($len>32) {
+
+        $owner =  substr($options['owner'], 0, 32);
+      } else  if  ($len<32) {
+
+        $owner =  $options['owner'].substr($pad, 0, 32-$len);
+      } else {
+
+        $owner =  $options['owner'];
+      }
+
+      $len =  mb_strlen($options['user']);
+
+      if  ($len>32) {
+
+        $user =  substr($options['user'], 0, 32);
+      } else  if  ($len<32) {
+
+        $user =  $options['user'].substr($pad, 0, 32-$len);
+      } else {
+
+        $user =  $options['user'];
+      }
+
+      $tmp =  $this->md5_16($owner);
+
+      $okey =  substr($tmp, 0, 5);
+
+      $this->ARC4_init($okey);
+
+      $ovalue = $this->ARC4($user);
+
+      $this->objects[$id]['info']['O'] = $ovalue;
+
+      // now make the u value, phew.
+      $tmp =  $this->md5_16($user.$ovalue.chr($options['p']) .chr(255) .chr(255) .chr(255) .$this->fileIdentifier);
+
+      $ukey =  substr($tmp, 0, 5);
+
+
+      $this->ARC4_init($ukey);
+
+      $this->encryptionKey =  $ukey;
+
+      $this->encrypted = 1;
+
+      $uvalue = $this->ARC4($pad);
+
+
+      $this->objects[$id]['info']['U'] = $uvalue;
+
+      $this->encryptionKey = $ukey;
+
+
+      // initialize the arc4 array
+      break;
+
+    case  'out':
+
+      $res =  "\n".$id." 0 obj\n<<";
+
+      $res.= "\n/Filter /Standard";
+
+      $res.= "\n/V 1";
+
+      $res.= "\n/R 2";
+
+      $res.= "\n/O (".$this->filterText($o['info']['O']) .')';
+
+      $res.= "\n/U (".$this->filterText($o['info']['U']) .')';
+
+      // and the p-value needs to be converted to account for the twos-complement approach
+      $o['info']['p'] =  (($o['info']['p']^255) +1) *-1;
+
+      $res.= "\n/P ".($o['info']['p']);
+
+      $res.= "\n>>\nendobj";
+
+
+      return  $res;
+
+      break;
+    }
+  }
+
+
+  /**
+   * ARC4 functions
+   * A series of function to implement ARC4 encoding in PHP
+   */
+
+  /**
+   * calculate the 16 byte version of the 128 bit md5 digest of the string
+   */
+  function  md5_16($string) {
+
+    $tmp =  md5($string);
+
+    $out = '';
+
+    for  ($i = 0;$i <= 30;$i = $i+2) {
+
+      $out.= chr(hexdec(substr($tmp, $i, 2)));
+    }
+
+    return  $out;
+  }
+
+
+  /**
+   * initialize the encryption for processing a particular object
+   */
+  function  encryptInit($id) {
+
+    $tmp =  $this->encryptionKey;
+
+    $hex =  dechex($id);
+
+    if  (mb_strlen($hex) <6) {
+
+      $hex =  substr('000000', 0, 6-mb_strlen($hex)) .$hex;
+    }
+
+    $tmp.=  chr(hexdec(substr($hex, 4, 2))) .chr(hexdec(substr($hex, 2, 2))) .chr(hexdec(substr($hex, 0, 2))) .chr(0) .chr(0);
+
+    $key =  $this->md5_16($tmp);
+
+    $this->ARC4_init(substr($key, 0, 10));
+  }
+
+
+  /**
+   * initialize the ARC4 encryption
+   */
+  function  ARC4_init($key = '') {
+
+    $this->arc4 =  '';
+
+    // setup the control array
+    if  (mb_strlen($key) == 0) {
+
+      return;
+    }
+
+    $k =  '';
+
+    while (mb_strlen($k) <256) {
+
+      $k.= $key;
+    }
+
+    $k = substr($k, 0, 256);
+
+    for  ($i = 0;$i<256;$i++) {
+
+      $this->arc4.=  chr($i);
+    }
+
+    $j = 0;
+
+    for  ($i = 0;$i<256;$i++) {
+
+      $t =  $this->arc4[$i];
+
+      $j =  ($j + ord($t)  + ord($k[$i])) %256;
+
+      $this->arc4[$i] = $this->arc4[$j];
+
+      $this->arc4[$j] = $t;
+    }
+  }
+
+
+  /**
+   * ARC4 encrypt a text string
+   */
+  function  ARC4($text) {
+
+    $len = mb_strlen($text);
+
+    $a = 0;
+
+    $b = 0;
+
+    $c =  $this->arc4;
+
+    $out = '';
+
+    for  ($i = 0;$i<$len;$i++) {
+
+      $a =  ($a+1) %256;
+
+      $t =  $c[$a];
+
+      $b =  ($b+ord($t)) %256;
+
+      $c[$a] = $c[$b];
+
+      $c[$b] = $t;
+
+      $k =  ord($c[(ord($c[$a]) +ord($c[$b])) %256]);
+
+      $out.= chr(ord($text[$i])  ^ $k);
+    }
+
+
+    return  $out;
+  }
+
+
+  /**
+   * functions which can be called to adjust or add to the document
+   */
+
+  /**
+   * add a link in the document to an external URL
+   */
+  function  addLink($url, $x0, $y0, $x1, $y1) {
+
+    $this->numObj++;
+
+    $info =  array('type'=>'link', 'url'=>$url, 'rect'=>array($x0, $y0, $x1, $y1));
+
+    $this->o_annotation($this->numObj, 'new', $info);
+  }
+
+
+  /**
+   * add a link in the document to an internal destination (ie. within the document)
+   */
+  function  addInternalLink($label, $x0, $y0, $x1, $y1) {
+
+    $this->numObj++;
+
+    $info =  array('type'=>'ilink', 'label'=>$label, 'rect'=>array($x0, $y0, $x1, $y1));
+
+    $this->o_annotation($this->numObj, 'new', $info);
+  }
+
+
+  /**
+   * set the encryption of the document
+   * can be used to turn it on and/or set the passwords which it will have.
+   * also the functions that the user will have are set here, such as print, modify, add
+   */
+  function  setEncryption($userPass = '', $ownerPass = '', $pc = array()) {
+
+    $p = bindec(11000000);
+
+
+    $options =  array(
+                      'print'=>4, 'modify'=>8, 'copy'=>16, 'add'=>32);
+
+    foreach($pc as  $k=>$v) {
+
+      if  ($v &&  isset($options[$k])) {
+
+        $p+= $options[$k];
+      } else  if  (isset($options[$v])) {
+
+        $p+= $options[$v];
+      }
+    }
+
+    // implement encryption on the document
+    if  ($this->arc4_objnum ==  0) {
+
+      // then the block does not exist already, add it.
+      $this->numObj++;
+
+      if  (mb_strlen($ownerPass) == 0) {
+
+        $ownerPass = $userPass;
+      }
+
+      $this->o_encryption($this->numObj, 'new', array('user'=>$userPass, 'owner'=>$ownerPass, 'p'=>$p));
+    }
+  }
+
+
+  /**
+   * should be used for internal checks, not implemented as yet
+   */
+  function  checkAllHere() {
+  }
+
+
+  /**
+   * return the pdf stream as a string returned from the function
+   */
+  function  output($debug = 0) {
+
+
+    if  ($debug) {
+      // turn compression off
+      $this->options['compression'] = 0;
+    }
+
+
+    if  ($this->arc4_objnum) {
+
+      $this->ARC4_init($this->encryptionKey);
+    }
+
+
+    $this->checkAllHere();
+
+
+    $xref = array();
+
+    $content = '%PDF-1.3';
+    $pos = mb_strlen($content);
+
+    foreach($this->objects as  $k=>$v) {
+
+      $tmp = 'o_'.$v['t'];
+
+      $cont = $this->$tmp($k, 'out');
+
+      $content.= $cont;
+
+      $xref[] = $pos;
+
+      $pos+= mb_strlen($cont);
+    }
+
+    $content.= "\nxref\n0 ".(count($xref) +1) ."\n0000000000 65535 f \n";
+
+    foreach($xref as  $p) {
+
+      $content.= str_pad($p,  10,  "0",  STR_PAD_LEFT)  . " 00000 n \n";
+    }
+
+    $content.= "trailer\n<<\n/Size ".(count($xref) +1) ."\n/Root 1 0 R\n/Info ".$this->infoObject." 0 R\n";
+
+    // if encryption has been applied to this document then add the marker for this dictionary
+    if  ($this->arc4_objnum > 0) {
+
+      $content.=  "/Encrypt ".$this->arc4_objnum." 0 R\n";
+    }
+
+    if  (mb_strlen($this->fileIdentifier)) {
+
+      $content.=  "/ID[<".$this->fileIdentifier."><".$this->fileIdentifier.">]\n";
+    }
+
+    $content.=  ">>\nstartxref\n".$pos."\n%%EOF\n";
+
+    return  $content;
+  }
+
+
+  /**
+   * intialize a new document
+   * if this is called on an existing document results may be unpredictable, but the existing document would be lost at minimum
+   * this function is called automatically by the constructor function
+   *
+   * @access private
+   */
+  function  newDocument($pageSize = array(0, 0, 612, 792)) {
+
+    $this->numObj = 0;
+
+    $this->objects =  array();
+
+
+    $this->numObj++;
+
+    $this->o_catalog($this->numObj, 'new');
+
+
+    $this->numObj++;
+
+    $this->o_outlines($this->numObj, 'new');
+
+
+    $this->numObj++;
+
+    $this->o_pages($this->numObj, 'new');
+
+
+    $this->o_pages($this->numObj, 'mediaBox', $pageSize);
+
+    $this->currentNode =  3;
+
+
+    $this->numObj++;
+
+    $this->o_procset($this->numObj, 'new');
+
+
+    $this->numObj++;
+
+    $this->o_info($this->numObj, 'new');
+
+
+    $this->numObj++;
+
+    $this->o_page($this->numObj, 'new');
+
+
+    // need to store the first page id as there is no way to get it to the user during
+    // startup
+    $this->firstPageId =  $this->currentContents;
+  }
+
+
+  /**
+   * open the font file and return a php structure containing it.
+   * first check if this one has been done before and saved in a form more suited to php
+   * note that if a php serialized version does not exist it will try and make one, but will
+   * require write access to the directory to do it... it is MUCH faster to have these serialized
+   * files.
+   *
+   * @access private
+   */
+  function  openFont($font) {
+
+    // assume that $font contains the path and file but not the extension
+    $pos = strrpos($font, '/');
+
+    if  ($pos === false) {
+
+      $dir =  './';
+
+      $name =  $font;
+    } else {
+
+      $dir = substr($font, 0, $pos+1);
+
+      $name = substr($font, $pos+1);
+    }
+    
+    $fontcache = $this->fontcache;
+    if ($fontcache == '') {
+    	$fontcache = $dir;
+    }
+    
+    //$name       filename without folder and extension of font metrics
+    //$dir		  folder of font metrics
+    //$fontcache  folder of runtime created php serialized version of font metrics.
+    //            If this is not given, the same folder as the font metrics will be used.
+    //            Storing and reusing serialized versions improves speed much
+    
+    $this->addMessage('openFont: '.$font.' - '.$name);
+
+    $metrics_name = $name . (($this->isUnicode) ? '.ufm' : '.afm');
+    $cache_name = 'php_' . $metrics_name;
+    $this->addMessage('metrics: '.$metrics_name.', cache: '.$cache_name);
+    if  (file_exists($fontcache . $cache_name)) {
+
+      $this->addMessage('openFont: php file exists ' . $fontcache . $cache_name);
+
+      $tmp =  file_get_contents($fontcache . $cache_name);
+
+      eval($tmp);
+
+      if  (!isset($this->fonts[$font]['_version_']) ||  $this->fonts[$font]['_version_']<1) {
+
+        // if the font file is old, then clear it out and prepare for re-creation
+        $this->addMessage('openFont: clear out, make way for new version.');
+
+        unset($this->fonts[$font]);
+      }
+    }
+
+    if  (!isset($this->fonts[$font]) &&  file_exists($dir . $metrics_name)) {
+
+      // then rebuild the php_<font>.afm file from the <font>.afm file
+      $this->addMessage('openFont: build php file from ' . $dir . $metrics_name);
+
+      $data =  array();
+      $cidtogid = '';
+      if ($this->isUnicode) {
+        $cidtogid = str_pad('', 256*256*2, "\x00");
+      }
+
+      $file =  file($dir . $metrics_name);
+
+      foreach ($file as  $rowA) {
+
+        $row = trim($rowA);
+
+        $pos = strpos($row, ' ');
+
+        if  ($pos) {
+
+          // then there must be some keyword
+          $key =  substr($row, 0, $pos);
+
+          switch  ($key) {
+
+          case  'FontName':
+
+          case  'FullName':
+
+          case  'FamilyName':
+
+          case  'Weight':
+
+          case  'ItalicAngle':
+
+          case  'IsFixedPitch':
+
+          case  'CharacterSet':
+
+          case  'UnderlinePosition':
+
+          case  'UnderlineThickness':
+
+          case  'Version':
+
+          case  'EncodingScheme':
+
+          case  'CapHeight':
+
+          case  'XHeight':
+
+          case  'Ascender':
+
+          case  'Descender':
+
+          case  'StdHW':
+
+          case  'StdVW':
+
+          case  'StartCharMetrics':
+
+          case  'FontHeightOffset': // OAR - Added so we can offset the height calculation of a Windows font.  Otherwise it's too big.
+
+            $data[$key] = trim(substr($row, $pos));
+
+            break;
+
+          case  'FontBBox':
+
+            $data[$key] = explode(' ', trim(substr($row, $pos)));
+
+            break;
+
+          case  'C': // Found in AFM files
+
+            //C 39 ; WX 222 ; N quoteright ; B 53 463 157 718 ;
+            $bits = explode(';', trim($row));
+
+            $dtmp = array();
+
+            foreach($bits as  $bit) {
+
+              $bits2 =  explode(' ', trim($bit));
+
+              if  (mb_strlen($bits2[0])) {
+
+                if  (count($bits2) >2) {
+
+                  $dtmp[$bits2[0]] = array();
+
+                  for  ($i = 1;$i<count($bits2);$i++) {
+
+                    $dtmp[$bits2[0]][] = $bits2[$i];
+                  }
+                } else  if  (count($bits2) == 2) {
+
+                  $dtmp[$bits2[0]] = $bits2[1];
+                }
+              }
+            }
+
+            $cc = (int)$dtmp['C'];
+            if  ($cc >= 0) {
+
+              $data['C'][$dtmp['C']] = $dtmp;
+
+              $data['C'][$dtmp['N']] = $dtmp;
+            } else {
+
+              $data['C'][$dtmp['N']] = $dtmp;
+            }
+
+            if  (!isset($data['MissingWidth']) && $cc == -1 && $dtmp['N'] == '.notdef') {
+
+              $data['MissingWidth'] = $width;
+            }
+            
+            break;
+
+          case  'U': // Found in UFM files
+            if ($this->isUnicode) {
+              // U 827 ; WX 0 ; N squaresubnosp ; G 675 ;
+              $bits = explode(';', trim($row));
+              
+              $dtmp = array();
+
+              foreach($bits as  $bit) {
+
+                $bits2 =  explode(' ', trim($bit));
+
+                if  (mb_strlen($bits2[0])) {
+
+                  if  (count($bits2) >2) {
+
+                    $dtmp[$bits2[0]] = array();
+
+                    for  ($i = 1;$i<count($bits2);$i++) {
+
+                      $dtmp[$bits2[0]][] = $bits2[$i];
+                    }
+                  } else  if  (count($bits2) == 2) {
+
+                    $dtmp[$bits2[0]] = $bits2[1];
+                  }
+                }
+              }
+
+              $cc = (int)$dtmp['U'];
+              $glyph = $dtmp['G'];
+              $width = $dtmp['WX'];
+              if  ($cc >= 0) {
+                // Set values in CID to GID map
+                if ($cc >= 0 && $cc < 0xFFFF && $glyph) {
+                  $cidtogid{$cc*2} = chr($glyph >> 8);
+                  $cidtogid{$cc*2 + 1} = chr($glyph & 0xFF);
+                }
+
+                $data['C'][$dtmp['U']] = $dtmp;
+
+                $data['C'][$dtmp['N']] = $dtmp;
+              } else {
+
+                $data['C'][$dtmp['N']] = $dtmp;
+              }
+              
+              if  (!isset($data['MissingWidth']) && $cc == -1 && $dtmp['N'] == '.notdef') {
+
+                $data['MissingWidth'] = $width;
+              }
+            }
+
+            break;
+
+          case  'KPX':
+
+            //KPX Adieresis yacute -40
+            $bits = explode(' ', trim($row));
+
+            $data['KPX'][$bits[1]][$bits[2]] = $bits[3];
+
+            break;
+          }
+        }
+      }
+
+      //    echo $cidtogid; die("CIDtoGID Displayed!");
+
+      if  (function_exists('gzcompress') &&  $this->options['compression']) {
+
+        // then implement ZLIB based compression on CIDtoGID string
+        $data['CIDtoGID_Compressed'] = true;
+
+        $cidtogid =  gzcompress($cidtogid,  6);
+      }
+      $data['CIDtoGID'] = base64_encode($cidtogid);
+      
+      $data['_version_'] = 1;
+
+      $this->fonts[$font] = $data;
+
+      //Because of potential trouble with php safe mode, expect that the folder already exists.
+      //If not existing, this will hit performance because of missing cached results.
+      if ( is_dir(substr($fontcache,0,-1)) ) {
+        file_put_contents($fontcache . $cache_name,  '$this->fonts[$font]=' . var_export($data,  true)  . ';');
+      }
+    }
+    
+    if  (!isset($this->fonts[$font])) {
+      $this->addMessage("openFont: no font file found for $font.  Do you need to run load_font.php?");
+      //echo 'Font not Found '.$font;
+    }
+
+    //pre_r($this->messages);
+  }
+
+
+  /**
+   * if the font is not loaded then load it and make the required object
+   * else just make it the current font
+   * the encoding array can contain 'encoding'=> 'none','WinAnsiEncoding','MacRomanEncoding' or 'MacExpertEncoding'
+   * note that encoding='none' will need to be used for symbolic fonts
+   * and 'differences' => an array of mappings between numbers 0->255 and character names.
+   *
+   */
+  function  selectFont($fontName, $encoding =  '', $set =  true) {
+
+    $ext = substr($fontName, -4);
+    if  ($ext == '.afm' || $ext == '.ufm') {
+      $fontName = substr($fontName, 0, mb_strlen($fontName)-4);
+    }
+
+    if  (!isset($this->fonts[$fontName])) {
+      $this->addMessage("selectFont: selecting - $fontName - $encoding, $set");
+
+      // load the file
+      $this->openFont($fontName);
+
+      if  (isset($this->fonts[$fontName])) {
+
+        $this->numObj++;
+
+        $this->numFonts++;
+
+        //$this->numFonts = md5($fontName);
+        $pos =  strrpos($fontName, '/');
+
+        //      $dir = substr($fontName,0,$pos+1);
+        $name =  substr($fontName, $pos+1);
+
+        $options =  array('name' => $name, 'fontFileName' => $fontName);
+
+        if  (is_array($encoding)) {
+
+          // then encoding and differences might be set
+          if  (isset($encoding['encoding'])) {
+
+            $options['encoding'] =  $encoding['encoding'];
+          }
+
+          if  (isset($encoding['differences'])) {
+
+            $options['differences'] =  $encoding['differences'];
+          }
+        } else  if  (mb_strlen($encoding)) {
+
+          // then perhaps only the encoding has been set
+          $options['encoding'] =  $encoding;
+        }
+
+
+        $fontObj =  $this->numObj;
+
+        $this->o_font($this->numObj, 'new', $options);
+
+        $this->fonts[$fontName]['fontNum'] =  $this->numFonts;
+
+
+        // if this is a '.afm' font, and there is a '.pfa' file to go with it ( as there
+        // should be for all non-basic fonts), then load it into an object and put the
+        // references into the font object
+        $basefile =  $fontName;
+        if  (file_exists($basefile.'.pfb')) {
+
+          $fbtype =  'pfb';
+        } else  if  (file_exists($basefile.'.ttf')) {
+
+          $fbtype =  'ttf';
+        } else {
+
+          $fbtype =  '';
+        }
+
+        $fbfile =  $basefile.'.'.$fbtype;
+
+
+        //      $pfbfile = substr($fontName,0,strlen($fontName)-4).'.pfb';
+        //      $ttffile = substr($fontName,0,strlen($fontName)-4).'.ttf';
+        $this->addMessage('selectFont: checking for - '.$fbfile);
+
+
+        // OAR - I don't understand this old check
+        // if  (substr($fontName, -4) ==  '.afm' &&  strlen($fbtype)) {
+        if  (mb_strlen($fbtype)) {
+          $adobeFontName =  $this->fonts[$fontName]['FontName'];
+
+          //        $fontObj = $this->numObj;
+          $this->addMessage('selectFont: adding font file - '.$fbfile.' - '.$adobeFontName);
+
+          // find the array of font widths, and put that into an object.
+          $firstChar =  -1;
+
+          $lastChar =  0;
+
+          $widths =  array();
+          $cid_widths = array();
+
+          foreach ($this->fonts[$fontName]['C'] as  $num => $d) {
+
+            if  (intval($num) >0 ||  $num ==  '0') {
+
+              if (!$this->isUnicode) {
+                // With Unicode, widths array isn't used
+                if  ($lastChar>0 &&  $num>$lastChar+1) {
+
+                  for ($i =  $lastChar+1;$i<$num;$i++) {
+
+                    $widths[] =  0;
+                  }
+                }
+              }
+
+              $widths[] =  $d['WX'];
+
+              if ($this->isUnicode) {
+                $cid_widths[$num] =  $d['WX'];
+              }
+
+              if  ($firstChar ==  -1) {
+                $firstChar =  $num;
+              }
+
+              $lastChar =  $num;
+            }
+          }
+
+          // also need to adjust the widths for the differences array
+          if  (isset($options['differences'])) {
+
+            foreach($options['differences'] as  $charNum => $charName) {
+
+              if  ($charNum > $lastChar) {
+
+                if (!$this->isUnicode) {
+                  // With Unicode, widths array isn't used
+                  for ($i =  $lastChar + 1; $i <=  $charNum; $i++) {
+
+                    $widths[] =  0;
+                  }
+                }
+
+                $lastChar =  $charNum;
+              }
+
+              if  (isset($this->fonts[$fontName]['C'][$charName])) {
+
+                $widths[$charNum-$firstChar] =  $this->fonts[$fontName]['C'][$charName]['WX'];
+                if ($this->isUnicode) {
+                  $cid_widths[$charName] =  $this->fonts[$fontName]['C'][$charName]['WX'];
+                }
+              }
+            }
+          }
+
+          if ($this->isUnicode) {
+            $this->fonts[$fontName]['CIDWidths'] = $cid_widths;
+          }
+
+          $this->addMessage('selectFont: FirstChar = '.$firstChar);
+
+          $this->addMessage('selectFont: LastChar = '.$lastChar);
+
+          $widthid = -1;
+
+          if (!$this->isUnicode) {
+            // With Unicode, widths array isn't used
+
+            $this->numObj++;
+
+            $this->o_contents($this->numObj, 'new', 'raw');
+
+            $this->objects[$this->numObj]['c'].=  '[';
+
+            foreach($widths as  $width) {
+              $this->objects[$this->numObj]['c'].=  ' '.$width;
+            }
+
+            $this->objects[$this->numObj]['c'].=  ' ]';
+
+            $widthid =  $this->numObj;
+          }
+
+          $missing_width = 500;
+          $stemV = 70;
+
+          if (isset($this->fonts[$fontName]['MissingWidth'])) {
+
+            $missing_width =  $this->fonts[$fontName]['MissingWidth'];
+          }
+          if (isset($this->fonts[$fontName]['StdVW'])) {
+
+            $stemV = $this->fonts[$fontName]['StdVW'];
+          } elseif (isset($this->fonts[$fontName]['Weight']) && preg_match('!(bold|black)!i', $this->fonts[$fontName]['Weight'])) {
+
+            $stemV = 120;
+          }
+
+          // load the pfb file, and put that into an object too.
+          // note that pdf supports only binary format type 1 font files, though there is a
+          // simple utility to convert them from pfa to pfb.
+          $data =  file_get_contents($fbfile);
+
+
+          // create the font descriptor
+          $this->numObj++;
+
+          $fontDescriptorId =  $this->numObj;
+
+          $this->numObj++;
+
+          $pfbid =  $this->numObj;
+
+          // determine flags (more than a little flakey, hopefully will not matter much)
+          $flags =  0;
+
+          if  ($this->fonts[$fontName]['ItalicAngle'] !=  0) {
+            $flags+=  pow(2, 6);
+          }
+
+          if  ($this->fonts[$fontName]['IsFixedPitch'] ==  'true') {
+            $flags+=  1;
+          }
+
+          $flags+=  pow(2, 5); // assume non-sybolic
+
+          $list =  array('Ascent' => 'Ascender', 'CapHeight' => 'CapHeight', 'MissingWidth' => 'MissingWidth', 'Descent' => 'Descender', 'FontBBox' => 'FontBBox', 'ItalicAngle' => 'ItalicAngle');
+
+          $fdopt =  array('Flags' => $flags, 'FontName' => $adobeFontName, 'StemV' => $stemV);
+
+          foreach($list as  $k => $v) {
+
+            if  (isset($this->fonts[$fontName][$v])) {
+
+              $fdopt[$k] =  $this->fonts[$fontName][$v];
+            }
+          }
+
+
+          if  ($fbtype ==  'pfb') {
+
+            $fdopt['FontFile'] =  $pfbid;
+          } else  if  ($fbtype ==  'ttf') {
+
+            $fdopt['FontFile2'] =  $pfbid;
+          }
+
+          $this->o_fontDescriptor($fontDescriptorId, 'new', $fdopt);
+
+
+          // embed the font program
+          $this->o_contents($this->numObj, 'new');
+
+          $this->objects[$pfbid]['c'].=  $data;
+
+          // determine the cruicial lengths within this file
+          if  ($fbtype ==  'pfb') {
+
+            $l1 =  strpos($data, 'eexec') +6;
+
+            $l2 =  strpos($data, '00000000') -$l1;
+
+            $l3 =  mb_strlen($data) -$l2-$l1;
+
+            $this->o_contents($this->numObj, 'add', array('Length1' => $l1, 'Length2' => $l2, 'Length3' => $l3));
+          } else  if  ($fbtype ==  'ttf') {
+
+            $l1 =  mb_strlen($data);
+
+            $this->o_contents($this->numObj, 'add', array('Length1' => $l1));
+          }
+
+
+
+          // tell the font object about all this new stuff
+          $tmp =  array('BaseFont' => $adobeFontName, 'MissingWidth' => $missing_width, 'Widths' => $widthid, 'FirstChar' => $firstChar, 'LastChar' => $lastChar, 'FontDescriptor' => $fontDescriptorId);
+
+          if  ($fbtype ==  'ttf') {
+
+            $tmp['SubType'] =  'TrueType';
+          }
+
+          $this->addMessage('adding extra info to font.('.$fontObj.')');
+
+          foreach($tmp as  $fk => $fv) {
+
+            $this->addMessage($fk." : ".$fv);
+          }
+
+          $this->o_font($fontObj, 'add', $tmp);
+        } else {
+
+          $this->addMessage('selectFont: pfb or ttf file not found, ok if this is one of the 14 standard fonts');
+        }
+
+
+
+        // also set the differences here, note that this means that these will take effect only the
+        //first time that a font is selected, else they are ignored
+        if  (isset($options['differences'])) {
+
+          $this->fonts[$fontName]['differences'] =  $options['differences'];
+        }
+      }
+    }
+
+    if  ($set &&  isset($this->fonts[$fontName])) {
+
+      // so if for some reason the font was not set in the last one then it will not be selected
+      $this->currentBaseFont =  $fontName;
+
+      // the next lines mean that if a new font is selected, then the current text state will be
+      // applied to it as well.
+      $this->currentFont =  $this->currentBaseFont;
+
+      $this->currentFontNum =  $this->fonts[$this->currentFont]['fontNum'];
+
+      //$this->setCurrentFont();
+
+    }
+
+    return  $this->currentFontNum;
+
+    //return $this->numObj;
+
+  }
+
+
+  /**
+   * sets up the current font, based on the font families, and the current text state
+   * note that this system is quite flexible, a bold-italic font can be completely different to a
+   * italic-bold font, and even bold-bold will have to be defined within the family to have meaning
+   * This function is to be called whenever the currentTextState is changed, it will update
+   * the currentFont setting to whatever the appropriatte family one is.
+   * If the user calls selectFont themselves then that will reset the currentBaseFont, and the currentFont
+   * This function will change the currentFont to whatever it should be, but will not change the
+   * currentBaseFont.
+   *
+   * @access private
+   */
+  function  setCurrentFont() {
+
+    //   if (strlen($this->currentBaseFont) == 0){
+    //     // then assume an initial font
+    //     $this->selectFont('./fonts/Helvetica.afm');
+    //   }
+    //   $cf = substr($this->currentBaseFont,strrpos($this->currentBaseFont,'/')+1);
+    //   if (strlen($this->currentTextState)
+    //     && isset($this->fontFamilies[$cf])
+    //       && isset($this->fontFamilies[$cf][$this->currentTextState])){
+    //     // then we are in some state or another
+    //     // and this font has a family, and the current setting exists within it
+    //     // select the font, then return it
+    //     $nf = substr($this->currentBaseFont,0,strrpos($this->currentBaseFont,'/')+1).$this->fontFamilies[$cf][$this->currentTextState];
+    //     $this->selectFont($nf,'',0);
+    //     $this->currentFont = $nf;
+    //     $this->currentFontNum = $this->fonts[$nf]['fontNum'];
+    //   } else {
+    //     // the this font must not have the right family member for the current state
+    //     // simply assume the base font
+    $this->currentFont =  $this->currentBaseFont;
+
+    $this->currentFontNum =  $this->fonts[$this->currentFont]['fontNum'];
+
+    //  }
+
+  }
+
+
+  /**
+   * function for the user to find out what the ID is of the first page that was created during
+   * startup - useful if they wish to add something to it later.
+   */
+  function  getFirstPageId() {
+
+    return  $this->firstPageId;
+  }
+
+
+  /**
+   * add content to the currently active object
+   *
+   * @access private
+   */
+  function  addContent($content) {
+
+    $this->objects[$this->currentContents]['c'].=  $content;
+  }
+
+
+  /**
+   * sets the colour for fill operations
+   */
+  function  setColor($r, $g, $b, $force =  0) {
+
+    if  ($r >=  0 &&  ($force ||  $r !=  $this->currentColour['r'] ||  $g !=  $this->currentColour['g'] ||  $b !=  $this->currentColour['b'])) {
+
+      $this->objects[$this->currentContents]['c'].=  "\n".sprintf('%.3F', $r) .' '.sprintf('%.3F', $g) .' '.sprintf('%.3F', $b) .' rg';
+
+      $this->currentColour =  array('r' => $r, 'g' => $g, 'b' => $b);
+    }
+  }
+
+
+  /**
+   * sets the colour for stroke operations
+   */
+  function  setStrokeColor($r, $g, $b, $force =  0) {
+
+    if  ($r >=  0 &&  ($force ||  $r !=  $this->currentStrokeColour['r'] ||  $g !=  $this->currentStrokeColour['g'] ||  $b !=  $this->currentStrokeColour['b'])) {
+
+      $this->objects[$this->currentContents]['c'].=  "\n".sprintf('%.3F', $r) .' '.sprintf('%.3F', $g) .' '.sprintf('%.3F', $b) .' RG';
+
+      $this->currentStrokeColour =  array('r' => $r, 'g' => $g, 'b' => $b);
+    }
+  }
+
+
+  /**
+   * Set the graphics state for compositions
+   */
+  function  setGraphicsState($parameters) {
+
+    // Create a new graphics state object
+    // FIXME: should actually keep track of states that have already been created...
+    $this->numObj++;
+
+    $this->o_extGState($this->numObj,  'new',  $parameters);
+
+    $this->objects[ $this->currentContents ]['c'].=  "\n/GS" . $this->numStates . " gs";
+  }
+
+
+  /**
+   * Set current blend mode & opacity for lines.
+   *
+   * Valid blend modes are:
+   *
+   * Normal, Multiply, Screen, Overlay, Darken, Lighten,
+   * ColorDogde, ColorBurn, HardLight, SoftLight, Difference,
+   * Exclusion
+   *
+   * @param string $mode the blend mode to use
+   * @param float $opacity 0.0 fully transparent, 1.0 fully opaque
+   */
+  function setLineTransparency($mode, $opacity) {
+    static $blend_modes = array("Normal", "Multiply", "Screen",
+                                "Overlay", "Darken", "Lighten",
+                                "ColorDogde", "ColorBurn", "HardLight",
+                                "SoftLight", "Difference", "Exclusion");
+
+    if ( !in_array($mode, $blend_modes) )
+      $mode = "Normal";
+    
+    // Only create a new graphics state if required
+    if ( $mode == $this->currentLineTransparency["mode"]  &&
+         $opacity == $this->currentLineTransparency["opacity"] )
+      return;
+
+    $options = array("BM" => "/$mode",
+                     "CA" => (float)$opacity);
+
+    $this->setGraphicsState($options);
+  }
+  
+  /**
+   * Set current blend mode & opacity for filled objects.
+   *
+   * Valid blend modes are:
+   *
+   * Normal, Multiply, Screen, Overlay, Darken, Lighten,
+   * ColorDogde, ColorBurn, HardLight, SoftLight, Difference,
+   * Exclusion
+   *
+   * @param string $mode the blend mode to use
+   * @param float $opacity 0.0 fully transparent, 1.0 fully opaque
+   */
+  function setFillTransparency($mode, $opacity) {
+    static $blend_modes = array("Normal", "Multiply", "Screen",
+                                "Overlay", "Darken", "Lighten",
+                                "ColorDogde", "ColorBurn", "HardLight",
+                                "SoftLight", "Difference", "Exclusion");
+
+    if ( !in_array($mode, $blend_modes) )
+      $mode = "Normal";
+
+    if ( $mode == $this->currentFillTransparency["mode"]  &&
+         $opacity == $this->currentFillTransparency["opacity"] )
+      return;
+
+    $options = array("BM" => "/$mode",
+                     "ca" => (float)$opacity);
+    
+    $this->setGraphicsState($options);
+  }
+
+  /**
+   * draw a line from one set of coordinates to another
+   */
+  function  line($x1, $y1, $x2, $y2) {
+
+    $this->objects[$this->currentContents]['c'] .=
+      "\n".sprintf('%.3F', $x1) .' '.sprintf('%.3F', $y1) .' m '.sprintf('%.3F', $x2) .' '.sprintf('%.3F', $y2) .' l S';
+  }
+
+
+  /**
+   * draw a bezier curve based on 4 control points
+   */
+  function  curve($x0, $y0, $x1, $y1, $x2, $y2, $x3, $y3) {
+
+    // in the current line style, draw a bezier curve from (x0,y0) to (x3,y3) using the other two points
+    // as the control points for the curve.
+    $this->objects[$this->currentContents]['c'] .=
+      "\n".sprintf('%.3F', $x0) .' '.sprintf('%.3F', $y0) .' m '.sprintf('%.3F', $x1) .' '.sprintf('%.3F', $y1);
+
+    $this->objects[$this->currentContents]['c'] .=
+      ' '.sprintf('%.3F', $x2) .' '.sprintf('%.3F', $y2) .' '.sprintf('%.3F', $x3) .' '.sprintf('%.3F', $y3) .' c S';
+  }
+
+
+  /**
+   * draw a part of an ellipse
+   */
+  function  partEllipse($x0, $y0, $astart, $afinish, $r1, $r2 =  0, $angle =  0, $nSeg =  8) {
+
+    $this->ellipse($x0, $y0, $r1, $r2, $angle, $nSeg, $astart, $afinish, 0);
+  }
+
+
+  /**
+   * draw a filled ellipse
+   */
+  function  filledEllipse($x0, $y0, $r1, $r2 =  0, $angle =  0, $nSeg =  8, $astart =  0, $afinish =  360) {
+
+    return  $this->ellipse($x0, $y0, $r1, $r2 =  0, $angle, $nSeg, $astart, $afinish, 1, 1);
+  }
+
+
+  /**
+   * draw an ellipse
+   * note that the part and filled ellipse are just special cases of this function
+   *
+   * draws an ellipse in the current line style
+   * centered at $x0,$y0, radii $r1,$r2
+   * if $r2 is not set, then a circle is drawn
+   * nSeg is not allowed to be less than 2, as this will simply draw a line (and will even draw a
+   * pretty crappy shape at 2, as we are approximating with bezier curves.
+   */
+  function  ellipse($x0, $y0, $r1, $r2 =  0, $angle =  0, $nSeg =  8, $astart =  0, $afinish =  360, $close =  1, $fill =  0) {
+
+    if  ($r1 ==  0) {
+      return;
+    }
+
+    if  ($r2 ==  0) {
+      $r2 =  $r1;
+    }
+
+    if  ($nSeg < 2) {
+      $nSeg =  2;
+    }
+
+
+    $astart =  deg2rad((float)$astart);
+
+    $afinish =  deg2rad((float)$afinish);
+
+    $totalAngle = $afinish-$astart;
+
+
+    $dt =  $totalAngle/$nSeg;
+
+    $dtm =  $dt/3;
+
+
+    if  ($angle !=  0) {
+
+      $a =  -1*deg2rad((float)$angle);
+
+      $tmp  =  "\n q ";
+      $tmp .=  sprintf('%.3F', cos($a)) .' '.sprintf('%.3F', (-1.0*sin($a))) .' '.sprintf('%.3F', sin($a)) .' '.sprintf('%.3F', cos($a)) .' ';
+      $tmp .=  sprintf('%.3F', $x0) .' '.sprintf('%.3F', $y0) .' cm';
+
+      $this->objects[$this->currentContents]['c'].=  $tmp;
+
+      $x0 =  0;
+      $y0 =  0;
+    }
+
+
+    $t1 =  $astart;
+    $a0 =  $x0 + $r1*cos($t1);
+    $b0 =  $y0 + $r2*sin($t1);
+    $c0 =  -$r1 * sin($t1);
+    $d0 =  $r2 * cos($t1);
+
+
+    $this->objects[$this->currentContents]['c'] .=  "\n".sprintf('%.3F', $a0) .' '.sprintf('%.3F', $b0) .' m ';
+
+    for  ($i = 1; $i <=  $nSeg; $i++) {
+
+      // draw this bit of the total curve
+      $t1 =  $i * $dt + $astart;
+
+      $a1 =  $x0 + $r1 * cos($t1);
+
+      $b1 =  $y0 + $r2 * sin($t1);
+
+      $c1 = -$r1 * sin($t1);
+
+      $d1 =  $r2 * cos($t1);
+
+      $this->objects[$this->currentContents]['c']
+        .=  "\n".sprintf('%.3F', ($a0+$c0*$dtm)) .' '.sprintf('%.3F', ($b0 + $d0 * $dtm));
+
+      $this->objects[$this->currentContents]['c'] .=
+        ' '.sprintf('%.3F', ($a1-$c1*$dtm)) .' '.sprintf('%.3F', ($b1-$d1*$dtm)) .' '.sprintf('%.3F', $a1) .' '.sprintf('%.3F', $b1) .' c';
+
+      $a0 =  $a1;
+
+      $b0 =  $b1;
+
+      $c0 =  $c1;
+
+      $d0 =  $d1;
+    }
+
+    if  ($fill) {
+      $this->objects[$this->currentContents]['c'].=  ' f';
+
+    } else if ($close) {
+
+        $this->objects[$this->currentContents]['c'].=  ' s';
+        // small 's' signifies closing the path as well
+
+    } else {
+
+      $this->objects[$this->currentContents]['c'].=  ' S';
+
+    }
+
+    if  ($angle !=  0) {
+      $this->objects[$this->currentContents]['c'].=  ' Q';
+    }
+
+  }
+
+
+  /**
+   * this sets the line drawing style.
+   * width, is the thickness of the line in user units
+   * cap is the type of cap to put on the line, values can be 'butt','round','square'
+   *    where the diffference between 'square' and 'butt' is that 'square' projects a flat end past the
+   *    end of the line.
+   * join can be 'miter', 'round', 'bevel'
+   * dash is an array which sets the dash pattern, is a series of length values, which are the lengths of the
+   *   on and off dashes.
+   *   (2) represents 2 on, 2 off, 2 on , 2 off ...
+   *   (2,1) is 2 on, 1 off, 2 on, 1 off.. etc
+   * phase is a modifier on the dash pattern which is used to shift the point at which the pattern starts.
+   */
+  function  setLineStyle($width =  1, $cap =  '', $join =  '', $dash =  '', $phase =  0) {
+
+
+    // this is quite inefficient in that it sets all the parameters whenever 1 is changed, but will fix another day
+    $string =  '';
+
+    if  ($width>0) {
+
+      $string.=  $width.' w';
+    }
+
+    $ca =  array('butt' => 0, 'round' => 1, 'square' => 2);
+
+    if  (isset($ca[$cap])) {
+
+      $string.=  ' '.$ca[$cap].' J';
+    }
+
+    $ja =  array('miter' => 0, 'round' => 1, 'bevel' => 2);
+
+    if  (isset($ja[$join])) {
+
+      $string.=  ' '.$ja[$join].' j';
+    }
+
+    if  (is_array($dash)) {
+
+      $string.=  ' [';
+
+      foreach ($dash as  $len) {
+
+        $string.=  ' '.$len;
+      }
+
+      $string.=  ' ] '.$phase.' d';
+    }
+
+    $this->currentLineStyle =  $string;
+
+    $this->objects[$this->currentContents]['c'].=  "\n".$string;
+  }
+
+
+
+  /**
+   * draw a polygon, the syntax for this is similar to the GD polygon command
+   */
+  function  polygon($p, $np, $f =  0) {
+
+    $this->objects[$this->currentContents]['c'].=  "\n";
+
+    $this->objects[$this->currentContents]['c'].=  sprintf('%.3F', $p[0]) .' '.sprintf('%.3F', $p[1]) .' m ';
+
+    for  ($i =  2; $i < $np * 2; $i =  $i + 2) {
+
+      $this->objects[$this->currentContents]['c'].=  sprintf('%.3F', $p[$i]) .' '.sprintf('%.3F', $p[$i+1]) .' l ';
+    }
+
+    if  ($f ==  1) {
+
+      $this->objects[$this->currentContents]['c'].=  ' f';
+    } else {
+
+      $this->objects[$this->currentContents]['c'].=  ' S';
+    }
+  }
+
+
+  /**
+   * a filled rectangle, note that it is the width and height of the rectangle which are the secondary paramaters, not
+   * the coordinates of the upper-right corner
+   */
+  function  filledRectangle($x1, $y1, $width, $height) {
+
+    $this->objects[$this->currentContents]['c'].=  "\n".sprintf('%.3F', $x1) .' '.sprintf('%.3F', $y1) .' '.sprintf('%.3F', $width) .' '.sprintf('%.3F', $height) .' re f';
+  }
+
+
+  /**
+   * draw a rectangle, note that it is the width and height of the rectangle which are the secondary paramaters, not
+   * the coordinates of the upper-right corner
+   */
+  function  rectangle($x1, $y1, $width, $height) {
+
+    $this->objects[$this->currentContents]['c'].=  "\n".sprintf('%.3F', $x1) .' '.sprintf('%.3F', $y1) .' '.sprintf('%.3F', $width) .' '.sprintf('%.3F', $height) .' re S';
+  }
+
+
+  /**
+   * add a new page to the document
+   * this also makes the new page the current active object
+   */
+  function  newPage($insert =  0, $id =  0, $pos =  'after') {
+
+
+    // if there is a state saved, then go up the stack closing them
+    // then on the new page, re-open them with the right setings
+
+    if  ($this->nStateStack) {
+
+      for  ($i =  $this->nStateStack;$i >=  1;$i--) {
+
+        $this->restoreState($i);
+      }
+    }
+
+
+    $this->numObj++;
+
+    if  ($insert) {
+
+      // the id from the ezPdf class is the od of the contents of the page, not the page object itself
+      // query that object to find the parent
+      $rid =  $this->objects[$id]['onPage'];
+
+      $opt =  array('rid' => $rid, 'pos' => $pos);
+
+      $this->o_page($this->numObj, 'new', $opt);
+    } else {
+
+      $this->o_page($this->numObj, 'new');
+    }
+
+    // if there is a stack saved, then put that onto the page
+    if  ($this->nStateStack) {
+
+      for  ($i =  1;$i <=  $this->nStateStack;$i++) {
+
+        $this->saveState($i);
+      }
+    }
+
+    // and if there has been a stroke or fill colour set, then transfer them
+    if  ($this->currentColour['r'] >=  0) {
+
+      $this->setColor($this->currentColour['r'], $this->currentColour['g'], $this->currentColour['b'], 1);
+    }
+
+    if  ($this->currentStrokeColour['r'] >=  0) {
+
+      $this->setStrokeColor($this->currentStrokeColour['r'], $this->currentStrokeColour['g'], $this->currentStrokeColour['b'], 1);
+    }
+
+
+    // if there is a line style set, then put this in too
+    if  (mb_strlen($this->currentLineStyle)) {
+
+      $this->objects[$this->currentContents]['c'].=  "\n".$this->currentLineStyle;
+    }
+
+
+    // the call to the o_page object set currentContents to the present page, so this can be returned as the page id
+    return  $this->currentContents;
+  }
+
+
+  /**
+   * output the pdf code, streaming it to the browser
+   * the relevant headers are set so that hopefully the browser will recognise it
+   */
+  function  stream($options =  '') {
+
+    // setting the options allows the adjustment of the headers
+    // values at the moment are:
+    // 'Content-Disposition' => 'filename'  - sets the filename, though not too sure how well this will
+    //        work as in my trial the browser seems to use the filename of the php file with .pdf on the end
+    // 'Accept-Ranges' => 1 or 0 - if this is not set to 1, then this header is not included, off by default
+    //    this header seems to have caused some problems despite tha fact that it is supposed to solve
+    //    them, so I am leaving it off by default.
+    // 'compress' = > 1 or 0 - apply content stream compression, this is on (1) by default
+    // 'Attachment' => 1 or 0 - if 1, force the browser to open a download dialog
+    if  (!is_array($options)) {
+
+      $options =  array();
+    }
+
+    if  ( headers_sent())
+      die("Unable to stream pdf: headers already sent");
+
+
+    if  ( isset($options['compress']) &&  $options['compress'] ==  0) {
+
+      $tmp =  ltrim($this->output(1));
+    } else {
+
+      $tmp =  ltrim($this->output());
+    }
+
+
+    header("Cache-Control: private");
+
+    header("Content-type: application/pdf");
+
+    //FIXME: I don't know that this is sufficient for determining content length (i.e. what about transport compression?)
+    //header("Content-Length: " . mb_strlen($tmp));
+    $fileName =  (isset($options['Content-Disposition']) ?  $options['Content-Disposition'] :  'file.pdf');
+
+    if  ( !isset($options["Attachment"]))
+      $options["Attachment"] =  true;
+
+
+    $attachment =  $options["Attachment"] ?  "attachment" :  "inline";
+
+
+    header("Content-Disposition: $attachment; filename=\"$fileName\"");
+
+
+    if  (isset($options['Accept-Ranges']) &&  $options['Accept-Ranges'] ==  1) {
+      //FIXME: Is this the correct value ... spec says 1#range-unit
+      header("Accept-Ranges: " . mb_strlen($tmp));
+    }
+
+    echo  $tmp;
+
+    flush();
+  }
+
+
+  /**
+   * return the height in units of the current font in the given size
+   */
+  function  getFontHeight($size) {
+
+    if  (!$this->numFonts) {
+      $this->selectFont('./fonts/Helvetica');
+    }
+    
+    // for the current font, and the given size, what is the height of the font in user units
+    $h =  $this->fonts[$this->currentFont]['FontBBox'][3]-$this->fonts[$this->currentFont]['FontBBox'][1];
+
+    // have to adjust by a font offset for Windows fonts.  unfortunately it looks like
+    // the bounding box calculations are wrong and I don't know why.
+    if (isset($this->fonts[$this->currentFont]['FontHeightOffset'])) {
+
+      // For CourierNew from Windows this needs to be -646 to match the
+      // Adobe native Courier font.
+      //
+      // For FreeMono from GNU this needs to be -337 to match the
+      // Courier font.
+      //
+      // Both have been added manually to the .afm and .ufm files.
+      $h += (int)$this->fonts[$this->currentFont]['FontHeightOffset'];
+    }
+
+    return  $size*$h/1000;
+  }
+
+
+  /**
+   * return the font descender, this will normally return a negative number
+   * if you add this number to the baseline, you get the level of the bottom of the font
+   * it is in the pdf user units
+   */
+  function  getFontDescender($size) {
+
+    // note that this will most likely return a negative value
+    if  (!$this->numFonts) {
+      $this->selectFont('./fonts/Helvetica');
+    }
+
+    //$h = $this->fonts[$this->currentFont]['FontBBox'][1];
+    $h = $this->fonts[$this->currentFont]['Descender'];
+
+    return  $size*$h/1000;
+  }
+
+
+  /**
+   * filter the text, this is applied to all text just before being inserted into the pdf document
+   * it escapes the various things that need to be escaped, and so on
+   *
+   * @access private
+   */
+  function  filterText($text, $bom = true) {
+    if ($this->isUnicode) {
+      $text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
+      $text =  $this->utf8toUtf16BE($text, $bom);
+    } else {
+      if (in_array('Windows-1252', mb_list_encodings())) {
+        $text = mb_convert_encoding($text, 'Windows-1252', 'UTF-8');
+      } else {
+        $text = mb_convert_encoding($text, 'iso-8859-1', 'UTF-8');
+      }
+      $text = html_entity_decode($text, ENT_QUOTES);
+    }
+
+    // the chr(13) substitution fixes a bug seen in TCPDF (bug #1421290)
+    $text = strtr($text, array(')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r'));
+    return  $text;
+  }
+
+  /**
+   * return array containing codepoints (UTF-8 character values) for the
+   * string passed in.
+   *
+   * based on the excellent TCPDF code by Nicola Asuni and the
+   * RFC for UTF-8 at http://www.faqs.org/rfcs/rfc3629.html
+   *
+   * @access private
+   * @author Orion Richardson
+   * @since January 5, 2008
+   * @param string $text UTF-8 string to process
+   * @return array UTF-8 codepoints array for the string
+   */
+  function  utf8toCodePointsArray(&$text) {
+    $length = mb_strlen($text,'8bit'); // http://www.php.net/manual/en/function.mb-strlen.php#77040
+    $unicode = array(); // array containing unicode values
+    $bytes = array(); // array containing single character byte sequences
+    $numbytes = 1; // number of octetc needed to represent the UTF-8 character
+    
+    for ($i = 0; $i < $length; $i++) {
+      $c = ord($text{$i}); // get one string character at time
+      if (count($bytes) == 0) { // get starting octect
+        if ($c <= 0x7F) {
+          $unicode[] = $c; // use the character "as is" because is ASCII
+          $numbytes = 1;
+        } elseif (($c >> 0x05) == 0x06) { // 2 bytes character (0x06 = 110 BIN)
+          $bytes[] = ($c - 0xC0) << 0x06;
+          $numbytes = 2;
+        } elseif (($c >> 0x04) == 0x0E) { // 3 bytes character (0x0E = 1110 BIN)
+          $bytes[] = ($c - 0xE0) << 0x0C;
+          $numbytes = 3;
+        } elseif (($c >> 0x03) == 0x1E) { // 4 bytes character (0x1E = 11110 BIN)
+          $bytes[] = ($c - 0xF0) << 0x12;
+          $numbytes = 4;
+        } else {
+          // use replacement character for other invalid sequences
+          $unicode[] = 0xFFFD;
+          $bytes = array();
+          $numbytes = 1;
+        }
+      } elseif (($c >> 0x06) == 0x02) { // bytes 2, 3 and 4 must start with 0x02 = 10 BIN
+        $bytes[] = $c - 0x80;
+        if (count($bytes) == $numbytes) {
+          // compose UTF-8 bytes to a single unicode value
+          $c = $bytes[0];
+          for ($j = 1; $j < $numbytes; $j++) {
+            $c += ($bytes[$j] << (($numbytes - $j - 1) * 0x06));
+          }
+          if ((($c >= 0xD800) AND ($c <= 0xDFFF)) OR ($c >= 0x10FFFF)) {
+            // The definition of UTF-8 prohibits encoding character numbers between
+            // U+D800 and U+DFFF, which are reserved for use with the UTF-16
+            // encoding form (as surrogate pairs) and do not directly represent
+            // characters.
+            $unicode[] = 0xFFFD; // use replacement character
+          } else {
+            $unicode[] = $c; // add char to array
+          }
+          // reset data for next char
+          $bytes = array();
+          $numbytes = 1;
+        }
+      } else {
+        // use replacement character for other invalid sequences
+        $unicode[] = 0xFFFD;
+        $bytes = array();
+        $numbytes = 1;
+      }
+    }
+    return $unicode;
+  }
+
+  /**
+   * convert UTF-8 to UTF-16 with an additional byte order marker
+   * at the front if required.
+   *
+   * based on the excellent TCPDF code by Nicola Asuni and the
+   * RFC for UTF-8 at http://www.faqs.org/rfcs/rfc3629.html
+   *
+   * @access private
+   * @author Orion Richardson
+   * @since January 5, 2008
+   * @param string $text UTF-8 string to process
+   * @param boolean $bom whether to add the byte order marker
+   * @return string UTF-16 result string
+   */
+  function  utf8toUtf16BE(&$text, $bom = true) {
+    if (!$this->isUnicode) return $text;
+    $out = $bom ? "\xFE\xFF" : '';
+    
+    $unicode = $this->utf8toCodePointsArray($text);
+    foreach ($unicode as $c) {
+      if ($c == 0xFFFD) {
+        $out .= "\xFF\xFD"; // replacement character
+      } elseif ($c < 0x10000) {
+        $out .= chr($c >> 0x08);
+        $out .= chr($c & 0xFF);
+       } else {
+        $c -= 0x10000;
+        $w1 = 0xD800 | ($c >> 0x10);
+        $w2 = 0xDC00 | ($c & 0x3FF);
+        $out .= chr($w1 >> 0x08);
+        $out .= chr($w1 & 0xFF);
+        $out .= chr($w2 >> 0x08);
+        $out .= chr($w2 & 0xFF);
+      }
+    }
+    return $out;
+  }
+
+
+  /**
+   * given a start position and information about how text is to be laid out, calculate where
+   * on the page the text will end
+   *
+   * @access private
+   */
+  function  PRVTgetTextPosition($x, $y, $angle, $size, $wa, $text) {
+
+    // given this information return an array containing x and y for the end position as elements 0 and 1
+    $w =  $this->getTextWidth($size, $text);
+
+    // need to adjust for the number of spaces in this text
+    $words =  explode(' ', $text);
+
+    $nspaces =  count($words) -1;
+
+    $w+=  $wa*$nspaces;
+
+    $a =  deg2rad((float)$angle);
+
+    return  array(cos($a) *$w+$x, -sin($a) *$w+$y);
+  }
+
+
+  /**
+   * wrapper function for PRVTcheckTextDirective1
+   *
+   * @access private
+   */
+  function  PRVTcheckTextDirective(&$text, $i, &$f) {
+
+    return  0;
+
+    $x =  0;
+
+    $y =  0;
+
+    return  $this->PRVTcheckTextDirective1($text, $i, $f, 0, $x, $y);
+  }
+
+
+  /**
+   * checks if the text stream contains a control directive
+   * if so then makes some changes and returns the number of characters involved in the directive
+   * this has been re-worked to include everything neccesary to fins the current writing point, so that
+   * the location can be sent to the callback function if required
+   * if the directive does not require a font change, then $f should be set to 0
+   *
+   * @access private
+   */
+  function  PRVTcheckTextDirective1(&$text, $i, &$f, $final, &$x, &$y, $size =  0, $angle =  0, $wordSpaceAdjust =  0) {
+
+    return  0;
+
+    $directive =  0;
+
+    $j =  $i;
+
+    if  ($text[$j] ==  '<') {
+
+      $j++;
+
+      switch ($text[$j]) {
+
+      case  '/':
+
+        $j++;
+
+        if  (mb_strlen($text) <=  $j) {
+
+          return  $directive;
+        }
+
+        switch ($text[$j]) {
+
+        case  'b':
+
+        case  'i':
+
+          $j++;
+
+          if  ($text[$j] ==  '>') {
+
+            $p =  mb_strrpos($this->currentTextState, $text[$j-1]);
+
+            if  ($p !==  false) {
+
+              // then there is one to remove
+              $this->currentTextState =  mb_substr($this->currentTextState, 0, $p) .substr($this->currentTextState, $p+1);
+            }
+
+            $directive =  $j-$i+1;
+          }
+
+          break;
+
+        case  'c':
+
+          // this this might be a callback function
+          $j++;
+
+          $k =  mb_strpos($text, '>', $j);
+
+          if  ($k !==  false &&  $text[$j] ==  ':') {
+
+            // then this will be treated as a callback directive
+            $directive =  $k-$i+1;
+
+            $f =  0;
+
+            // split the remainder on colons to get the function name and the paramater
+            $tmp =  mb_substr($text, $j+1, $k-$j-1);
+
+            $b1 =  mb_strpos($tmp, ':');
+
+            if  ($b1 !==  false) {
+
+              $func =  mb_substr($tmp, 0, $b1);
+
+              $parm =  mb_substr($tmp, $b1+1);
+            } else {
+
+              $func =  $tmp;
+
+              $parm =  '';
+            }
+
+            if  (!isset($func) ||  !mb_strlen(trim($func))) {
+
+              $directive =  0;
+            } else {
+
+              // only call the function if this is the final call
+              if  ($final) {
+
+                // need to assess the text position, calculate the text width to this point
+                // can use getTextWidth to find the text width I think
+                $tmp =  $this->PRVTgetTextPosition($x, $y, $angle, $size, $wordSpaceAdjust, mb_substr($text, 0, $i));
+
+                $info =  array('x' => $tmp[0], 'y' => $tmp[1], 'angle' => $angle, 'status' => 'end', 'p' => $parm, 'nCallback' => $this->nCallback);
+
+                $x =  $tmp[0];
+
+                $y =  $tmp[1];
+
+                $ret =  $this->$func($info);
+
+                if  (is_array($ret)) {
+
+                  // then the return from the callback function could set the position, to start with, later will do font colour, and font
+                  foreach($ret as  $rk => $rv) {
+
+                    switch ($rk) {
+
+                    case  'x':
+
+                    case  'y':
+
+                      $$rk =  $rv;
+
+                      break;
+                    }
+                  }
+                }
+
+                // also remove from to the stack
+                // for simplicity, just take from the end, fix this another day
+                $this->nCallback--;
+
+                if  ($this->nCallback<0) {
+
+                  $this->nCallBack =  0;
+                }
+              }
+            }
+          }
+
+          break;
+        }
+
+        break;
+
+      case  'b':
+
+      case  'i':
+
+        $j++;
+
+        if  ($text[$j] ==  '>') {
+
+          $this->currentTextState.=  $text[$j-1];
+
+          $directive =  $j-$i+1;
+        }
+
+        break;
+
+      case  'C':
+
+        $noClose =  1;
+
+      case  'c':
+
+        // this this might be a callback function
+        $j++;
+
+        $k =  mb_strpos($text, '>', $j);
+
+        if  ($k !==  false &&  $text[$j] ==  ':') {
+
+          // then this will be treated as a callback directive
+          $directive =  $k-$i+1;
+
+          $f =  0;
+
+          // split the remainder on colons to get the function name and the paramater
+          //          $bits = explode(':',substr($text,$j+1,$k-$j-1));
+          $tmp =  mb_substr($text, $j+1, $k-$j-1);
+
+          $b1 =  mb_strpos($tmp, ':');
+
+          if  ($b1 !==  false) {
+
+            $func =  mb_substr($tmp, 0, $b1);
+
+            $parm =  mb_substr($tmp, $b1+1);
+          } else {
+
+            $func =  $tmp;
+
+            $parm =  '';
+          }
+
+          if  (!isset($func) ||  !mb_strlen(trim($func))) {
+
+            $directive =  0;
+          } else {
+
+            // only call the function if this is the final call, ie, the one actually doing printing, not measurement
+            if  ($final) {
+
+              // need to assess the text position, calculate the text width to this point
+              // can use getTextWidth to find the text width I think
+              // also add the text height and descender
+              $tmp =  $this->PRVTgetTextPosition($x, $y, $angle, $size, $wordSpaceAdjust, mb_substr($text, 0, $i));
+
+              $info =  array('x' => $tmp[0], 'y' => $tmp[1], 'angle' => $angle, 'status' => 'start', 'p' => $parm, 'f' => $func, 'height' => $this->getFontHeight($size), 'descender' => $this->getFontDescender($size));
+
+              $x =  $tmp[0];
+
+              $y =  $tmp[1];
+
+              if  (!isset($noClose) ||  !$noClose) {
+
+                // only add to the stack if this is a small 'c', therefore is a start-stop pair
+                $this->nCallback++;
+
+                $info['nCallback'] =  $this->nCallback;
+
+                $this->callback[$this->nCallback] =  $info;
+              }
+
+              $ret =  $this->$func($info);
+
+              if  (is_array($ret)) {
+
+                // then the return from the callback function could set the position, to start with, later will do font colour, and font
+                foreach($ret as  $rk => $rv) {
+
+                  switch ($rk) {
+
+                  case  'x':
+
+                  case  'y':
+
+                    $$rk =  $rv;
+
+                    break;
+                  }
+                }
+              }
+            }
+          }
+        }
+
+        break;
+      }
+    }
+
+    return  $directive;
+  }
+
+
+  /**
+   * add text to the document, at a specified location, size and angle on the page
+   */
+  function  addText($x, $y, $size, $text, $angle =  0, $wordSpaceAdjust =  0) {
+    if  (!$this->numFonts) {
+      $this->selectFont('./fonts/Helvetica');
+    }
+
+
+    // if there are any open callbacks, then they should be called, to show the start of the line
+    if  ($this->nCallback>0) {
+
+      for  ($i =  $this->nCallback;$i>0;$i--) {
+
+        // call each function
+        $info =  array('x' => $x,
+                       'y' => $y,
+                       'angle' => $angle,
+                       'status' => 'sol',
+                       'p' => $this->callback[$i]['p'],
+                       'nCallback' => $this->callback[$i]['nCallback'],
+                       'height' => $this->callback[$i]['height'],
+                       'descender' => $this->callback[$i]['descender']);
+
+        $func =  $this->callback[$i]['f'];
+
+        $this->$func($info);
+      }
+    }
+
+    if  ($angle ==  0) {
+
+      $this->objects[$this->currentContents]['c'].=  "\n".'BT '.sprintf('%.3F', $x) .' '.sprintf('%.3F', $y) .' Td';
+
+    } else {
+
+      $a =  deg2rad((float)$angle);
+
+      $tmp =  "\n".'BT ';
+
+      $tmp.=  sprintf('%.3F', cos($a)) .' '.sprintf('%.3F', (-1.0*sin($a))) .' '.sprintf('%.3F', sin($a)) .' '.sprintf('%.3F', cos($a)) .' ';
+
+      $tmp.=  sprintf('%.3F', $x) .' '.sprintf('%.3F', $y) .' Tm';
+
+      $this->objects[$this->currentContents]['c'].=  $tmp;
+    }
+
+    if  ($wordSpaceAdjust !=  0 ||  $wordSpaceAdjust !=  $this->wordSpaceAdjust) {
+
+      $this->wordSpaceAdjust =  $wordSpaceAdjust;
+
+      $this->objects[$this->currentContents]['c'].=  ' '.sprintf('%.3F', $wordSpaceAdjust) .' Tw';
+    }
+
+    $len =  mb_strlen($text);
+
+    $start =  0;
+
+    /*
+     for ($i = 0;$i<$len;$i++){
+     $f = 1;
+     $directive = 0; //$this->PRVTcheckTextDirective($text,$i,$f);
+     if ($directive){
+     // then we should write what we need to
+     if ($i>$start){
+     $part = mb_substr($text,$start,$i-$start);
+     $this->objects[$this->currentContents]['c'] .= ' /F'.$this->currentFontNum.' '.sprintf('%.1F',$size).' Tf ';
+     $this->objects[$this->currentContents]['c'] .= ' ('.$this->filterText($part, false).') Tj';
+     }
+     if ($f){
+     // then there was nothing drastic done here, restore the contents
+     $this->setCurrentFont();
+     } else {
+     $this->objects[$this->currentContents]['c'] .= ' ET';
+     $f = 1;
+     $xp = $x;
+     $yp = $y;
+     $directive = 0; //$this->PRVTcheckTextDirective1($text,$i,$f,1,$xp,$yp,$size,$angle,$wordSpaceAdjust);
+
+     // restart the text object
+     if ($angle == 0){
+     $this->objects[$this->currentContents]['c'] .= "\n".'BT '.sprintf('%.3F',$xp).' '.sprintf('%.3F',$yp).' Td';
+     } else {
+     $a = deg2rad((float)$angle);
+     $tmp = "\n".'BT ';
+     $tmp .= sprintf('%.3F',cos($a)).' '.sprintf('%.3F',(-1.0*sin($a))).' '.sprintf('%.3F',sin($a)).' '.sprintf('%.3F',cos($a)).' ';
+     $tmp .= sprintf('%.3F',$xp).' '.sprintf('%.3F',$yp).' Tm';
+     $this->objects[$this->currentContents]['c'] .= $tmp;
+     }
+     if ($wordSpaceAdjust != 0 || $wordSpaceAdjust != $this->wordSpaceAdjust){
+     $this->wordSpaceAdjust = $wordSpaceAdjust;
+     $this->objects[$this->currentContents]['c'] .= ' '.sprintf('%.3F',$wordSpaceAdjust).' Tw';
+     }
+     }
+     // and move the writing point to the next piece of text
+     $i = $i+$directive-1;
+     $start = $i+1;
+     }
+
+     }
+    */
+    if  ($start < $len) {
+
+      $part =  $text; // OAR - Don't need this anymore, given that $start always equals zero.  substr($text, $start);
+
+      $this->objects[$this->currentContents]['c'].=  ' /F'.$this->currentFontNum.' '.sprintf('%.1F', $size) .' Tf ';
+
+      $this->objects[$this->currentContents]['c'].=  ' ('.$this->filterText($part, false) .') Tj';
+    }
+
+    $this->objects[$this->currentContents]['c'].=  ' ET';
+
+
+    // if there are any open callbacks, then they should be called, to show the end of the line
+    if  ($this->nCallback>0) {
+
+      for  ($i =  $this->nCallback;$i>0;$i--) {
+
+        // call each function
+        $tmp =  $this->PRVTgetTextPosition($x, $y, $angle, $size, $wordSpaceAdjust, $text);
+
+        $info =  array('x' => $tmp[0], 'y' => $tmp[1], 'angle' => $angle, 'status' => 'eol', 'p' => $this->callback[$i]['p'], 'nCallback' => $this->callback[$i]['nCallback'], 'height' => $this->callback[$i]['height'], 'descender' => $this->callback[$i]['descender']);
+
+        $func =  $this->callback[$i]['f'];
+
+        $this->$func($info);
+      }
+    }
+  }
+
+
+  /**
+   * calculate how wide a given text string will be on a page, at a given size.
+   * this can be called externally, but is alse used by the other class functions
+   */
+  function  getTextWidth($size, $text, $spacing =  0) {
+
+    // this function should not change any of the settings, though it will need to
+    // track any directives which change during calculation, so copy them at the start
+    // and put them back at the end.
+    $store_currentTextState =  $this->currentTextState;
+
+
+    if  (!$this->numFonts) {
+      $this->selectFont('./fonts/Helvetica');
+    }
+
+
+    // converts a number or a float to a string so it can get the width
+    $text =  "$text";
+
+    // hmm, this is where it all starts to get tricky - use the font information to
+    // calculate the width of each character, add them up and convert to user units
+    $w =  0;
+
+    $cf =  $this->currentFont;
+
+    $space_scale =  1000 / $size;
+
+    if ( $this->isUnicode) {
+      // for Unicode, use the code points array to calculate width rather
+      // than just the string itself
+      $unicode =  $this->utf8toCodePointsArray($text);
+
+      foreach ($unicode as $char) {
+        // check if we have to replace character
+      if  ( isset($this->fonts[$cf]['differences'][$char])) {
+          $char =  $this->fonts[$cf]['differences'][$char];
+        }
+        // add the character width
+        if  ( isset($this->fonts[$cf]['C'][$char]['WX'])) {
+          $w+=  $this->fonts[$cf]['C'][$char]['WX'];
+        }
+        // add additional padding for space
+        if  ( $char ==  32) {  // Space
+          $w+=  $spacing * $space_scale;
+        }
+      }
+
+    } else {
+
+      $len =  mb_strlen($text);
+
+      for  ($i =  0; $i < $len; $i++) {
+        $char =  ord($text{$i});
+        // check if we have to replace character
+        if  ( isset($this->fonts[$cf]['differences'][$char])) {
+          $char =  $this->fonts[$cf]['differences'][$char];
+        }
+        // add the character width
+        if  ( isset($this->fonts[$cf]['C'][$char]['WX'])) {
+        $w+=  $this->fonts[$cf]['C'][$char]['WX'];
+        }
+        // add additional padding for space
+        if  ( $char ==  32) {  // Space
+        $w+=  $spacing * $space_scale;
+    }
+      }
+    }
+
+
+    $this->currentTextState =  $store_currentTextState;
+
+    $this->setCurrentFont();
+
+
+    return  $w*$size/1000;
+  }
+
+
+  /**
+   * do a part of the calculation for sorting out the justification of the text
+   *
+   * @access private
+   */
+  function  PRVTadjustWrapText($text, $actual, $width, &$x, &$adjust, $justification) {
+
+    switch  ($justification) {
+
+    case  'left':
+
+      return;
+
+      break;
+
+    case  'right':
+
+      $x+=  $width-$actual;
+
+      break;
+
+    case  'center':
+
+    case  'centre':
+
+      $x+=  ($width-$actual) /2;
+
+      break;
+
+    case  'full':
+
+      // count the number of words
+      $words =  explode(' ', $text);
+
+      $nspaces =  count($words) -1;
+
+      if  ($nspaces>0) {
+
+        $adjust =  ($width-$actual) /$nspaces;
+      } else {
+
+        $adjust =  0;
+      }
+
+      break;
+    }
+  }
+
+
+  /**
+   * add text to the page, but ensure that it fits within a certain width
+   * if it does not fit then put in as much as possible, splitting at word boundaries
+   * and return the remainder.
+   * justification and angle can also be specified for the text
+   */
+  function  addTextWrap($x, $y, $width, $size, $text, $justification =  'left', $angle =  0, $test =  0) {
+  	// TODO - need to support Unicode
+    if ($this->isUnicode) {
+        die("addTextWrap does not support Unicode yet!");
+    }
+
+    // this will display the text, and if it goes beyond the width $width, will backtrack to the
+    // previous space or hyphen, and return the remainder of the text.
+
+    // $justification can be set to 'left','right','center','centre','full'
+
+    // need to store the initial text state, as this will change during the width calculation
+    // but will need to be re-set before printing, so that the chars work out right
+    $store_currentTextState =  $this->currentTextState;
+
+
+    if  (!$this->numFonts) {
+      $this->selectFont('./fonts/Helvetica');
+    }
+
+    if  ($width <=  0) {
+
+      // error, pretend it printed ok, otherwise risking a loop
+      return  '';
+    }
+
+    $w =  0;
+
+    $break =  0;
+
+    $breakWidth =  0;
+
+    $len =  mb_strlen($text);
+
+    $cf =  $this->currentFont;
+
+    $tw =  $width/$size*1000;
+
+    for  ($i =  0;$i<$len;$i++) {
+
+      $f =  1;
+
+      $directive =  0;
+      //$this->PRVTcheckTextDirective($text,$i,$f);
+      if  ($directive) {
+
+        if  ($f) {
+
+          $this->setCurrentFont();
+
+          $cf =  $this->currentFont;
+        }
+
+        $i =  $i+$directive-1;
+      } else {
+
+        $cOrd =  ord($text[$i]);
+
+        if  (isset($this->fonts[$cf]['differences'][$cOrd])) {
+
+          // then this character is being replaced by another
+          $cOrd2 =  $this->fonts[$cf]['differences'][$cOrd];
+        } else {
+
+          $cOrd2 =  $cOrd;
+        }
+
+
+        if  (isset($this->fonts[$cf]['C'][$cOrd2]['WX'])) {
+
+          $w+=  $this->fonts[$cf]['C'][$cOrd2]['WX'];
+        }
+
+        if  ($w>$tw) {
+
+          // then we need to truncate this line
+          if  ($break>0) {
+
+            // then we have somewhere that we can split :)
+            if  ($text[$break] ==  ' ') {
+
+              $tmp =  mb_substr($text, 0, $break);
+            } else {
+
+              $tmp =  mb_substr($text, 0, $break+1);
+            }
+
+            $adjust =  0;
+
+            $this->PRVTadjustWrapText($tmp, $breakWidth, $width, $x, $adjust, $justification);
+
+
+            // reset the text state
+            $this->currentTextState =  $store_currentTextState;
+
+            $this->setCurrentFont();
+
+            if  (!$test) {
+
+              $this->addText($x, $y, $size, $tmp, $angle, $adjust);
+            }
+
+            return  mb_substr($text, $break+1);
+          } else {
+
+            // just split before the current character
+            $tmp =  mb_substr($text, 0, $i);
+
+            $adjust =  0;
+
+            $ctmp =  ord($text[$i]);
+
+            if  (isset($this->fonts[$cf]['differences'][$ctmp])) {
+
+              $ctmp =  $this->fonts[$cf]['differences'][$ctmp];
+            }
+
+            $tmpw =  ($w-$this->fonts[$cf]['C'][$ctmp]['WX']) *$size/1000;
+
+            $this->PRVTadjustWrapText($tmp, $tmpw, $width, $x, $adjust, $justification);
+
+            // reset the text state
+            $this->currentTextState =  $store_currentTextState;
+
+            $this->setCurrentFont();
+
+            if  (!$test) {
+
+              $this->addText($x, $y, $size, $tmp, $angle, $adjust);
+            }
+
+            return  mb_substr($text, $i);
+          }
+        }
+
+        if  ($text[$i] ==  '-') {
+
+          $break =  $i;
+
+          $breakWidth =  $w*$size/1000;
+        }
+
+        if  ($text[$i] ==  ' ') {
+
+          $break =  $i;
+
+          $ctmp =  ord($text[$i]);
+
+          if  (isset($this->fonts[$cf]['differences'][$ctmp])) {
+
+            $ctmp =  $this->fonts[$cf]['differences'][$ctmp];
+          }
+
+          $breakWidth =  ($w-$this->fonts[$cf]['C'][$ctmp]['WX']) *$size/1000;
+        }
+      }
+    }
+
+    // then there was no need to break this line
+    if  ($justification ==  'full') {
+
+      $justification =  'left';
+    }
+
+    $adjust =  0;
+
+    $tmpw =  $w*$size/1000;
+
+    $this->PRVTadjustWrapText($text, $tmpw, $width, $x, $adjust, $justification);
+
+    // reset the text state
+    $this->currentTextState =  $store_currentTextState;
+
+    $this->setCurrentFont();
+
+    if  (!$test) {
+
+      $this->addText($x, $y, $size, $text, $angle, $adjust, $angle);
+    }
+
+    return  '';
+  }
+
+
+  /**
+   * this will be called at a new page to return the state to what it was on the
+   * end of the previous page, before the stack was closed down
+   * This is to get around not being able to have open 'q' across pages
+   *
+   */
+  function  saveState($pageEnd =  0) {
+
+    if  ($pageEnd) {
+
+      // this will be called at a new page to return the state to what it was on the
+      // end of the previous page, before the stack was closed down
+      // This is to get around not being able to have open 'q' across pages
+      $opt =  $this->stateStack[$pageEnd];
+      // ok to use this as stack starts numbering at 1
+      $this->setColor($opt['col']['r'], $opt['col']['g'], $opt['col']['b'], 1);
+
+      $this->setStrokeColor($opt['str']['r'], $opt['str']['g'], $opt['str']['b'], 1);
+
+      $this->objects[$this->currentContents]['c'].=  "\n".$opt['lin'];
+
+      //    $this->currentLineStyle = $opt['lin'];
+
+    } else {
+
+      $this->nStateStack++;
+
+      $this->stateStack[$this->nStateStack] =  array(
+                                                     'col' => $this->currentColour, 'str' => $this->currentStrokeColour, 'lin' => $this->currentLineStyle);
+    }
+
+    $this->objects[$this->currentContents]['c'].=  "\nq";
+  }
+
+
+  /**
+   * restore a previously saved state
+   */
+  function  restoreState($pageEnd =  0) {
+
+    if  (!$pageEnd) {
+
+      $n =  $this->nStateStack;
+
+      $this->currentColour =  $this->stateStack[$n]['col'];
+
+      $this->currentStrokeColour =  $this->stateStack[$n]['str'];
+
+      $this->objects[$this->currentContents]['c'].=  "\n".$this->stateStack[$n]['lin'];
+
+      $this->currentLineStyle =  $this->stateStack[$n]['lin'];
+
+      unset($this->stateStack[$n]);
+
+      $this->nStateStack--;
+    }
+
+    $this->objects[$this->currentContents]['c'].=  "\nQ";
+  }
+
+
+  /**
+   * make a loose object, the output will go into this object, until it is closed, then will revert to
+   * the current one.
+   * this object will not appear until it is included within a page.
+   * the function will return the object number
+   */
+  function  openObject() {
+
+    $this->nStack++;
+
+    $this->stack[$this->nStack] =  array('c' => $this->currentContents, 'p' => $this->currentPage);
+
+    // add a new object of the content type, to hold the data flow
+    $this->numObj++;
+
+    $this->o_contents($this->numObj, 'new');
+
+    $this->currentContents =  $this->numObj;
+
+    $this->looseObjects[$this->numObj] =  1;
+
+
+    return  $this->numObj;
+  }
+
+
+  /**
+   * open an existing object for editing
+   */
+  function  reopenObject($id) {
+
+    $this->nStack++;
+
+    $this->stack[$this->nStack] =  array('c' => $this->currentContents, 'p' => $this->currentPage);
+
+    $this->currentContents =  $id;
+
+    // also if this object is the primary contents for a page, then set the current page to its parent
+    if  (isset($this->objects[$id]['onPage'])) {
+
+      $this->currentPage =  $this->objects[$id]['onPage'];
+    }
+  }
+
+
+  /**
+   * close an object
+   */
+  function  closeObject() {
+
+    // close the object, as long as there was one open in the first place, which will be indicated by
+    // an objectId on the stack.
+    if  ($this->nStack>0) {
+
+      $this->currentContents =  $this->stack[$this->nStack]['c'];
+
+      $this->currentPage =  $this->stack[$this->nStack]['p'];
+
+      $this->nStack--;
+
+      // easier to probably not worry about removing the old entries, they will be overwritten
+      // if there are new ones.
+
+    }
+  }
+
+
+  /**
+   * stop an object from appearing on pages from this point on
+   */
+  function  stopObject($id) {
+
+    // if an object has been appearing on pages up to now, then stop it, this page will
+    // be the last one that could contian it.
+    if  (isset($this->addLooseObjects[$id])) {
+
+      $this->addLooseObjects[$id] =  '';
+    }
+  }
+
+
+  /**
+   * after an object has been created, it wil only show if it has been added, using this function.
+   */
+  function  addObject($id, $options =  'add') {
+
+    // add the specified object to the page
+    if  (isset($this->looseObjects[$id]) &&  $this->currentContents !=  $id) {
+
+      // then it is a valid object, and it is not being added to itself
+      switch ($options) {
+
+      case  'all':
+
+        // then this object is to be added to this page (done in the next block) and
+        // all future new pages.
+        $this->addLooseObjects[$id] =  'all';
+
+      case  'add':
+
+        if  (isset($this->objects[$this->currentContents]['onPage'])) {
+
+          // then the destination contents is the primary for the page
+          // (though this object is actually added to that page)
+          $this->o_page($this->objects[$this->currentContents]['onPage'], 'content', $id);
+        }
+
+        break;
+
+      case  'even':
+
+        $this->addLooseObjects[$id] =  'even';
+
+        $pageObjectId =  $this->objects[$this->currentContents]['onPage'];
+
+        if  ($this->objects[$pageObjectId]['info']['pageNum']%2 ==  0) {
+
+          $this->addObject($id);
+          // hacky huh :)
+
+        }
+
+        break;
+
+      case  'odd':
+
+        $this->addLooseObjects[$id] =  'odd';
+
+        $pageObjectId =  $this->objects[$this->currentContents]['onPage'];
+
+        if  ($this->objects[$pageObjectId]['info']['pageNum']%2 ==  1) {
+
+          $this->addObject($id);
+          // hacky huh :)
+
+        }
+
+        break;
+
+      case  'next':
+
+        $this->addLooseObjects[$id] =  'all';
+
+        break;
+
+      case  'nexteven':
+
+        $this->addLooseObjects[$id] =  'even';
+
+        break;
+
+      case  'nextodd':
+
+        $this->addLooseObjects[$id] =  'odd';
+
+        break;
+      }
+    }
+  }
+
+
+  /**
+   * return a storable representation of a specific object
+   */
+  function  serializeObject($id) {
+    if  ( array_key_exists($id,  $this->objects))
+      return  var_export($this->objects[$id],  true);
+
+
+    return  null;
+  }
+
+
+  /**
+   * restore an object from its stored representation.  returns its new object id.
+   */
+  function  restoreSerializedObject($obj) {
+
+
+    $obj_id =  $this->openObject();
+
+    eval('$this->objects[$obj_id] = ' . $obj . ';');
+
+    $this->closeObject();
+
+    return  $obj_id;
+  }
+
+
+
+  /**
+   * add content to the documents info object
+   */
+  function  addInfo($label, $value =  0) {
+
+    // this will only work if the label is one of the valid ones.
+    // modify this so that arrays can be passed as well.
+    // if $label is an array then assume that it is key => value pairs
+    // else assume that they are both scalar, anything else will probably error
+    if  (is_array($label)) {
+
+      foreach ($label as  $l => $v) {
+
+        $this->o_info($this->infoObject, $l, $v);
+      }
+    } else {
+
+      $this->o_info($this->infoObject, $label, $value);
+    }
+  }
+
+
+  /**
+   * set the viewer preferences of the document, it is up to the browser to obey these.
+   */
+  function  setPreferences($label, $value =  0) {
+
+    // this will only work if the label is one of the valid ones.
+    if  (is_array($label)) {
+
+      foreach ($label as  $l => $v) {
+
+        $this->o_catalog($this->catalogId, 'viewerPreferences', array($l => $v));
+      }
+    } else {
+
+      $this->o_catalog($this->catalogId, 'viewerPreferences', array($label => $value));
+    }
+  }
+
+
+  /**
+   * extract an integer from a position in a byte stream
+   *
+   * @access private
+   */
+  function  PRVT_getBytes(&$data, $pos, $num) {
+
+    // return the integer represented by $num bytes from $pos within $data
+    $ret =  0;
+
+    for  ($i =  0;$i<$num;$i++) {
+
+      $ret =  $ret*256;
+
+      $ret+=  ord($data[$pos+$i]);
+    }
+
+    return  $ret;
+  }
+
+
+  /**
+   * add a PNG image into the document, from a GD object
+   * this should work with remote files
+   */
+  function addImagePng($file, $x, $y, $w =  0, $h =  0, &$img) {
+    //if already cached, need not to read again
+	if ( isset($this->imagelist[$file]) ) {
+	  $data = null;
+	} else {
+  	  // Example for transparency handling on new image. Retain for current image
+      // $tIndex = imagecolortransparent($img);
+      // if ($tIndex > 0) {
+      //   $tColor    = imagecolorsforindex($img, $tIndex);
+      //   $new_tIndex    = imagecolorallocate($new_img, $tColor['red'], $tColor['green'], $tColor['blue']);
+      //   imagefill($new_img, 0, 0, $new_tIndex);
+      //   imagecolortransparent($new_img, $new_tIndex);
+      // }
+	  // blending mode (literal/blending) on drawing into current image. not relevant when not saved or not drawn
+	  //imagealphablending($img, true);
+	  //default, but explicitely set to ensure pdf compatibility
+      imagesavealpha($img, false);
+      
+      $error =  0;
+      //DEBUG_IMG_TEMP
+      //debugpng
+      if (DEBUGPNG) print '[addImagePng '.$file.']';
+
+      ob_start();
+      @imagepng($img);
+      //$data = ob_get_contents(); ob_end_clean();
+      $data = ob_get_clean();
+
+      if ($data == '') {
+        $error = 1;
+        $errormsg = 'trouble writing file from GD';
+        //DEBUG_IMG_TEMP
+        //debugpng
+        if (DEBUGPNG) print 'trouble writing file from GD';
+	  }
+
+      if  ($error) {
+        $this->addMessage('PNG error - ('.$file.') '.$errormsg);
+        return;
+      }
+    }  //End isset($this->imagelist[$file]) (png Duplicate removal)
+
+    $this->addPngFromBuf($file, $x, $y, $w, $h, $data);
+  }
+
+
+  /**
+   * add a PNG image into the document, from a file
+   * this should work with remote files
+   */
+  function  addPngFromFile($file, $x, $y, $w =  0, $h =  0) {
+    //if already cached, need not to read again
+	if ( isset($this->imagelist[$file]) ) {
+	  $img = null;
+	} else {
+      //png files typically contain an alpha channel.
+      //pdf file format or class.pdf does not support alpha blending.
+      //on alpha blended images, more transparent areas have a color near black.
+      //This appears in the result on not storing the alpha channel.
+      //Correct would be the box background image or its parent when transparent.
+      //But this would make the image dependent on the background.
+      //Therefore create an image with white background and copy in
+      //A more natural background than black is white.
+      //Therefore create an empty image with white background and merge the
+      //image in with alpha blending.
+      $imgtmp = @imagecreatefrompng($file);
+      if (!$imgtmp) {
+        return;
+      }
+      $sx = imagesx($imgtmp);
+      $sy = imagesy($imgtmp);
+      $img = imagecreatetruecolor($sx,$sy);
+      imagealphablending($img, true);
+  	  $ti = imagecolortransparent($imgtmp);
+	  if ($ti >= 0) {
+	    $tc = imagecolorsforindex($imgtmp,$ti);
+        $ti = imagecolorallocate($img,$tc['red'],$tc['green'],$tc['blue']);
+        imagefill($img,0,0,$ti);
+        imagecolortransparent($img, $ti);
+      } else {
+        imagefill($img,1,1,imagecolorallocate($img,255,255,255));
+      }
+      imagecopy($img,$imgtmp,0,0,0,0,$sx,$sy);
+      imagedestroy($imgtmp);
+    }
+    $this->addImagePng($file, $x, $y, $w, $h, $img);
+  }
+
+
+  /**
+   * add a PNG image into the document, from a memory buffer of the file
+   */
+  function  addPngFromBuf($file, $x, $y, $w =  0, $h =  0, &$data) {
+
+	if ( isset($this->imagelist[$file]) ) {
+      //debugpng
+      //if (DEBUGPNG) print '[addPngFromBuf Duplicate '.$file.']';
+	  $data = null;
+      $info['width'] = $this->imagelist[$file]['w'];
+      $info['height'] = $this->imagelist[$file]['h'];
+      $label = $this->imagelist[$file]['label'];
+
+	} else {
+      
+      if ($data == null) {
+      	$this->addMessage('addPngFromBuf error - ('.$imgname.') data not present!');
+        return;
+      }
+      //debugpng
+      //if (DEBUGPNG) print '[addPngFromBuf file='.$file.']';
+    $error =  0;
+
+    if  (!$error) {
+
+      $header =  chr(137) .chr(80) .chr(78) .chr(71) .chr(13) .chr(10) .chr(26) .chr(10);
+
+      if  (mb_substr($data, 0, 8, '8bit') !=  $header) {
+
+        $error =  1;
+
+        //debugpng
+        if (DEBUGPNG) print '[addPngFromFile this file does not have a valid header '.$file.']';
+
+        $errormsg =  'this file does not have a valid header';
+      }
+    }
+
+
+    if  (!$error) {
+
+      // set pointer
+      $p =  8;
+
+      $len =  mb_strlen($data, '8bit');
+
+      // cycle through the file, identifying chunks
+      $haveHeader =  0;
+
+      $info =  array();
+
+      $idata =  '';
+
+      $pdata =  '';
+
+      while  ($p < $len) {
+
+        $chunkLen =  $this->PRVT_getBytes($data, $p, 4);
+
+        $chunkType =  mb_substr($data, $p+4, 4, '8bit');
+
+        //      echo $chunkType.' - '.$chunkLen.'<br>';
+
+        switch ($chunkType) {
+
+        case  'IHDR':
+
+          // this is where all the file information comes from
+          $info['width'] =  $this->PRVT_getBytes($data, $p+8, 4);
+
+          $info['height'] =  $this->PRVT_getBytes($data, $p+12, 4);
+
+          $info['bitDepth'] =  ord($data[$p+16]);
+
+          $info['colorType'] =  ord($data[$p+17]);
+
+          $info['compressionMethod'] =  ord($data[$p+18]);
+
+          $info['filterMethod'] =  ord($data[$p+19]);
+
+          $info['interlaceMethod'] =  ord($data[$p+20]);
+
+          //print_r($info);
+          $haveHeader =  1;
+
+          if  ($info['compressionMethod'] !=  0) {
+
+            $error =  1;
+
+            //debugpng
+            if (DEBUGPNG) print '[addPngFromFile unsupported compression method '.$file.']';
+
+            $errormsg =  'unsupported compression method';
+          }
+
+          if  ($info['filterMethod'] !=  0) {
+
+            $error =  1;
+
+            //debugpng
+            if (DEBUGPNG) print '[addPngFromFile unsupported filter method '.$file.']';
+
+            $errormsg =  'unsupported filter method';
+          }
+
+          break;
+
+        case  'PLTE':
+
+          $pdata.=  mb_substr($data, $p+8, $chunkLen, '8bit');
+
+          break;
+
+        case  'IDAT':
+
+          $idata.=  mb_substr($data, $p+8, $chunkLen, '8bit');
+
+          break;
+
+        case  'tRNS':
+
+          //this chunk can only occur once and it must occur after the PLTE chunk and before IDAT chunk
+          //print "tRNS found, color type = ".$info['colorType']."\n";
+          $transparency =  array();
+
+          if  ($info['colorType'] ==  3) {
+            // indexed color, rbg
+            /* corresponding to entries in the plte chunk
+             Alpha for palette index 0: 1 byte
+             Alpha for palette index 1: 1 byte
+             ...etc...
+            */
+            // there will be one entry for each palette entry. up until the last non-opaque entry.
+            // set up an array, stretching over all palette entries which will be o (opaque) or 1 (transparent)
+            $transparency['type'] =  'indexed';
+
+            $numPalette =  mb_strlen($pdata, '8bit') /3;
+
+            $trans =  0;
+
+            for  ($i =  $chunkLen;$i >=  0;$i--) {
+
+              if  (ord($data[$p+8+$i]) ==  0) {
+
+                $trans =  $i;
+              }
+            }
+
+            $transparency['data'] =  $trans;
+          } elseif ($info['colorType'] ==  0) {
+            // grayscale
+            /* corresponding to entries in the plte chunk
+             Gray: 2 bytes, range 0 .. (2^bitdepth)-1
+            */
+            //            $transparency['grayscale'] = $this->PRVT_getBytes($data,$p+8,2); // g = grayscale
+            $transparency['type'] =  'indexed';
+
+            $transparency['data'] =  ord($data[$p+8+1]);
+          } elseif ($info['colorType'] ==  2) {
+            // truecolor
+            /* corresponding to entries in the plte chunk
+             Red: 2 bytes, range 0 .. (2^bitdepth)-1
+             Green: 2 bytes, range 0 .. (2^bitdepth)-1
+             Blue: 2 bytes, range 0 .. (2^bitdepth)-1
+            */
+            $transparency['r'] =  $this->PRVT_getBytes($data, $p+8, 2);
+            // r from truecolor
+            $transparency['g'] =  $this->PRVT_getBytes($data, $p+10, 2);
+            // g from truecolor
+            $transparency['b'] =  $this->PRVT_getBytes($data, $p+12, 2);
+            // b from truecolor
+
+            $transparency['type'] = 'color-key';
+            
+          } else {
+
+            //unsupported transparency type
+
+            //debugpng
+            if (DEBUGPNG) print '[addPngFromFile unsupported transparency type '.$file.']';
+          }
+
+          // KS End new code
+          break;
+
+        default:
+
+          break;
+        }
+
+
+        $p+=  $chunkLen+12;
+      }
+
+
+      if (!$haveHeader) {
+
+        $error =  1;
+
+        //debugpng
+        if (DEBUGPNG) print '[addPngFromFile information header is missing '.$file.']';
+
+        $errormsg =  'information header is missing';
+      }
+
+      if  (isset($info['interlaceMethod']) &&  $info['interlaceMethod']) {
+
+        $error =  1;
+
+        //debugpng
+        if (DEBUGPNG) print '[addPngFromFile no support for interlaced images in pdf '.$file.']';
+
+        $errormsg =  'There appears to be no support for interlaced images in pdf.';
+      }
+    }
+
+
+    if  (!$error &&  $info['bitDepth'] > 8) {
+
+      $error =  1;
+
+      //debugpng
+      if (DEBUGPNG) print '[addPngFromFile bit depth of 8 or less is supported '.$file.']';
+
+      $errormsg =  'only bit depth of 8 or less is supported';
+    }
+
+
+    if  (!$error) {
+
+      if  ($info['colorType'] !=  2 &&  $info['colorType'] !=  0 &&  $info['colorType'] !=  3) {
+
+        $error =  1;
+
+        //debugpng
+        if (DEBUGPNG) print '[addPngFromFile alpha channel not supported: '.$info['colorType'].' '.$file.']';
+
+        $errormsg =  'transparancey alpha channel not supported, transparency only supported for palette images.';
+      } else {
+
+        switch  ($info['colorType']) {
+
+        case  3:
+
+          $color =  'DeviceRGB';
+
+          $ncolor =  1;
+
+          break;
+
+        case  2:
+
+          $color =  'DeviceRGB';
+
+          $ncolor =  3;
+
+          break;
+
+        case  0:
+
+          $color =  'DeviceGray';
+
+          $ncolor =  1;
+
+          break;
+        }
+      }
+    }
+
+    if  ($error) {
+
+      $this->addMessage('PNG error - ('.$file.') '.$errormsg);
+
+      return;
+    }
+
+      //print_r($info);
+      // so this image is ok... add it in.
+      $this->numImages++;
+
+      $im =  $this->numImages;
+
+      $label =  'I'.$im;
+
+      $this->numObj++;
+
+      //  $this->o_image($this->numObj,'new',array('label' => $label,'data' => $idata,'iw' => $w,'ih' => $h,'type' => 'png','ic' => $info['width']));
+      $options =  array('label' => $label, 'data' => $idata, 'bitsPerComponent' => $info['bitDepth'], 'pdata' => $pdata, 'iw' => $info['width'], 'ih' => $info['height'], 'type' => 'png', 'color' => $color, 'ncolor' => $ncolor);
+
+      if  (isset($transparency)) {
+
+        $options['transparency'] =  $transparency;
+      }
+
+      $this->o_image($this->numObj, 'new', $options);
+
+      $this->imagelist[$file] = array('label' =>$label, 'w' => $info['width'], 'h' => $info['height']);
+    }
+
+    if  ($w <=  0 && $h <=  0) {
+      $w =  $info['width'];
+      $h =  $info['height'];
+    }
+
+    if  ($w <=  0) {
+
+      $w =  $h/$info['height']*$info['width'];
+    }
+
+    if  ($h <=  0) {
+
+      $h =  $w*$info['height']/$info['width'];
+    }
+
+    $this->objects[$this->currentContents]['c'].=  "\nq";
+
+    $this->objects[$this->currentContents]['c'].=  "\n".sprintf('%.3F', $w) ." 0 0 ".sprintf('%.3F', $h) ." ".sprintf('%.3F', $x) ." ".sprintf('%.3F', $y) ." cm";
+
+    $this->objects[$this->currentContents]['c'].=  "\n/".$label.' Do';
+
+    $this->objects[$this->currentContents]['c'].=  "\nQ";
+  }
+
+
+  /**
+   * add a JPEG image into the document, from a file
+   */
+  function  addJpegFromFile($img, $x, $y, $w =  0, $h =  0) {
+
+    // attempt to add a jpeg image straight from a file, using no GD commands
+    // note that this function is unable to operate on a remote file.
+
+    if  (!file_exists($img)) {
+
+      return;
+    }
+
+	if ( isset($this->imagelist[$img]) ) {
+	  $data = null;
+      $imageWidth = $this->imagelist[$img]['w'];
+      $imageHeight = $this->imagelist[$img]['h'];
+      $channels =  $this->imagelist[$img]['c'];
+	} else {
+
+      $tmp =  getimagesize($img);
+
+      $imageWidth =  $tmp[0];
+
+      $imageHeight =  $tmp[1];
+
+
+      if  (isset($tmp['channels'])) {
+
+        $channels =  $tmp['channels'];
+      } else {
+
+        $channels =  3;
+      }
+
+
+      //$fp = fopen($img,'rb');
+
+      $data =  file_get_contents($img);
+
+      //fread($fp,filesize($img));
+
+      //fclose($fp);
+    }
+
+    if  ($w <=  0 &&  $h <=  0) {
+
+      $w =  $imageWidth;
+    }
+
+    if  ($w ==  0) {
+
+      $w =  $h/$imageHeight*$imageWidth;
+    }
+
+    if  ($h ==  0) {
+
+      $h =  $w*$imageHeight/$imageWidth;
+    }
+
+    $this->addJpegImage_common($data, $x, $y, $w, $h, $imageWidth, $imageHeight, $channels, $img);
+  }
+
+
+  /**
+   * add an image into the document, from a GD object
+   * this function is not all that reliable, and I would probably encourage people to use
+   * the file based functions
+   */
+  function  addImage(&$img, $x, $y, $w =  0, $h =  0, $quality =  75) {
+
+    /* Todo:
+     * Pass in original filename as $imgname
+     * If already cached like image_iscached(), allow empty $img
+     * How to get w  and h in this case?
+     * Then caller can check with image_iscached() whether generation of image is needed.
+     *
+     * But anyway, this function is not used!
+     */
+    $imgname = tempnam($this->tmp, "cpdf_img_").'.jpeg';
+
+    // add a new image into the current location, as an external object
+    // add the image at $x,$y, and with width and height as defined by $w & $h
+
+    // note that this will only work with full colour images and makes them jpg images for display
+    // later versions could present lossless image formats if there is interest.
+
+    // there seems to be some problem here in that images that have quality set above 75 do not appear
+    // not too sure why this is, but in the meantime I have restricted this to 75.
+    if  ($quality>75) {
+
+      $quality =  75;
+    }
+
+
+    // if the width or height are set to zero, then set the other one based on keeping the image
+    // height/width ratio the same, if they are both zero, then give up :)
+    $imageWidth =  imagesx($img);
+
+    $imageHeight =  imagesy($img);
+
+
+    if  ($w <=  0 &&  $h <=  0) {
+
+      return;
+    }
+
+    if  ($w ==  0) {
+
+      $w =  $h/$imageHeight*$imageWidth;
+    }
+
+    if  ($h ==  0) {
+
+      $h =  $w*$imageHeight/$imageWidth;
+    }
+
+    // gotta get the data out of the img..
+    ob_start();
+    imagejpeg($img, '', $quality);
+    //$data = ob_get_contents(); ob_end_clean();
+    $data = ob_get_clean();
+
+    $this->addJpegImage_common($data, $x, $y, $w, $h, $imageWidth, $imageHeight, $imgname);
+  }
+
+
+  /* Check if image already added to pdf image directory.
+   * If yes, need not to create again (pass empty data)
+   */
+  function  image_iscached($imgname) {
+    return isset($this->imagelist[$imgname]);
+  }
+
+
+  /**
+   * common code used by the two JPEG adding functions
+   *
+   * @access private
+   */
+  function  addJpegImage_common(&$data, $x, $y, $w =  0, $h =  0, $imageWidth, $imageHeight, $channels =  3, $imgname) {
+
+    if ( isset($this->imagelist[$imgname]) ) {
+      $label = $this->imagelist[$imgname]['label'];
+      //debugpng
+      //if (DEBUGPNG) print '[addJpegImage_common Duplicate '.$imgname.']';
+
+    } else {
+
+      if ($data == null) {
+      	$this->addMessage('addJpegImage_common error - ('.$imgname.') data not present!');
+        return;
+      }
+
+      // note that this function is not to be called externally
+      // it is just the common code between the GD and the file options
+      $this->numImages++;
+
+      $im =  $this->numImages;
+
+      $label =  'I'.$im;
+
+      $this->numObj++;
+
+      $this->o_image($this->numObj, 'new', array('label' => $label, 'data' => &$data, 'iw' => $imageWidth, 'ih' => $imageHeight, 'channels' => $channels));
+
+      $this->imagelist[$imgname] = array('label' =>$label, 'w' => $imageWidth, 'h' => $imageHeight, 'c'=> $channels );
+    }
+
+
+    $this->objects[$this->currentContents]['c'].=  "\nq";
+
+    $this->objects[$this->currentContents]['c'].=  "\n".sprintf('%.3F', $w) ." 0 0 ".sprintf('%.3F', $h) ." ".sprintf('%.3F', $x) ." ".sprintf('%.3F', $y) ." cm";
+
+    $this->objects[$this->currentContents]['c'].=  "\n/".$label.' Do';
+
+    $this->objects[$this->currentContents]['c'].=  "\nQ";
+  }
+
+
+  /**
+   * specify where the document should open when it first starts
+   */
+  function  openHere($style, $a =  0, $b =  0, $c =  0) {
+
+    // this function will open the document at a specified page, in a specified style
+    // the values for style, and the required paramters are:
+    // 'XYZ'  left, top, zoom
+    // 'Fit'
+    // 'FitH' top
+    // 'FitV' left
+    // 'FitR' left,bottom,right
+    // 'FitB'
+    // 'FitBH' top
+    // 'FitBV' left
+    $this->numObj++;
+
+    $this->o_destination($this->numObj, 'new', array('page' => $this->currentPage, 'type' => $style, 'p1' => $a, 'p2' => $b, 'p3' => $c));
+
+    $id =  $this->catalogId;
+
+    $this->o_catalog($id, 'openHere', $this->numObj);
+  }
+
+
+  /**
+   * create a labelled destination within the document
+   */
+  function  addDestination($label, $style, $a =  0, $b =  0, $c =  0) {
+
+    // associates the given label with the destination, it is done this way so that a destination can be specified after
+    // it has been linked to
+    // styles are the same as the 'openHere' function
+    $this->numObj++;
+
+    $this->o_destination($this->numObj, 'new', array('page' => $this->currentPage, 'type' => $style, 'p1' => $a, 'p2' => $b, 'p3' => $c));
+
+    $id =  $this->numObj;
+
+    // store the label->idf relationship, note that this means that labels can be used only once
+    $this->destinations["$label"] =  $id;
+  }
+
+
+  /**
+   * define font families, this is used to initialize the font families for the default fonts
+   * and for the user to add new ones for their fonts. The default bahavious can be overridden should
+   * that be desired.
+   */
+  function  setFontFamily($family, $options =  '') {
+
+    if  (!is_array($options)) {
+
+      if  ($family ==  'init') {
+
+        // set the known family groups
+        // these font families will be used to enable bold and italic markers to be included
+        // within text streams. html forms will be used... <b></b> <i></i>
+        $this->fontFamilies['Helvetica.afm'] =
+          array('b' => 'Helvetica-Bold.afm',
+                'i' => 'Helvetica-Oblique.afm',
+                'bi' => 'Helvetica-BoldOblique.afm',
+                'ib' => 'Helvetica-BoldOblique.afm');
+
+        $this->fontFamilies['Courier.afm'] =
+          array('b' => 'Courier-Bold.afm',
+                'i' => 'Courier-Oblique.afm',
+                'bi' => 'Courier-BoldOblique.afm',
+                'ib' => 'Courier-BoldOblique.afm');
+
+        $this->fontFamilies['Times-Roman.afm'] =
+          array('b' => 'Times-Bold.afm',
+                'i' => 'Times-Italic.afm',
+                'bi' => 'Times-BoldItalic.afm',
+                'ib' => 'Times-BoldItalic.afm');
+      }
+    } else {
+
+      // the user is trying to set a font family
+      // note that this can also be used to set the base ones to something else
+      if  (mb_strlen($family)) {
+
+        $this->fontFamilies[$family] =  $options;
+      }
+    }
+  }
+
+
+  /**
+   * used to add messages for use in debugging
+   */
+  function  addMessage($message) {
+
+    $this->messages.=  $message."\n";
+  }
+
+
+  /**
+   * a few functions which should allow the document to be treated transactionally.
+   */
+  function  transaction($action) {
+
+    switch  ($action) {
+
+    case  'start':
+
+      // store all the data away into the checkpoint variable
+      $data =  get_object_vars($this);
+
+      $this->checkpoint =  $data;
+
+      unset($data);
+
+      break;
+
+    case  'commit':
+
+      if  (is_array($this->checkpoint) &&  isset($this->checkpoint['checkpoint'])) {
+
+        $tmp =  $this->checkpoint['checkpoint'];
+
+        $this->checkpoint =  $tmp;
+
+        unset($tmp);
+      } else {
+
+        $this->checkpoint =  '';
+      }
+
+      break;
+
+    case  'rewind':
+
+      // do not destroy the current checkpoint, but move us back to the state then, so that we can try again
+      if  (is_array($this->checkpoint)) {
+
+        // can only abort if were inside a checkpoint
+        $tmp =  $this->checkpoint;
+
+        foreach ($tmp as  $k => $v) {
+
+          if  ($k !=  'checkpoint') {
+
+            $this->$k =  $v;
+          }
+        }
+
+        unset($tmp);
+      }
+
+      break;
+
+    case  'abort':
+
+      if  (is_array($this->checkpoint)) {
+
+        // can only abort if were inside a checkpoint
+        $tmp =  $this->checkpoint;
+
+        foreach ($tmp as  $k => $v) {
+
+          $this->$k =  $v;
+        }
+
+        unset($tmp);
+      }
+
+      break;
+    }
+  }
+}
+// end of class
+
+?>
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/README.TXT
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/README.TXT	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/README.TXT	(revision 2000)
@@ -0,0 +1,24 @@
+To embed TrueType fonts (.TTF) files, you need to extract the font metrics and 
+build the required tables using the provided utility (/fonts/ttf2ufm). 
+
+TTF2UFM is a modified version of Mark Heath's TTF 2 PT1 converter 
+(http://ttf2pt1.sourceforge.net/) by Steven Wittens <steven@acko.net> 
+(http://www.acko.net/blog/ufpdf). ttf2ufm, is included in /ttf2ufm-src. 
+The /fonts/ttf2ufm folder contains a compiled Windows binary. 
+TTF 2 UFM is identical to TTF 2 PT1 except that it also generates a .ufm file 
+for usage with makefontuni.php.
+
+
+Setting up a Truetype font for usage with TCPDF:
+  1) Generate the font's .ufm metrics file by processing it with the provided 
+     ttf2ufm program (modified ttf2pt1). For example:
+     $ ttf2ufm -a -F myfont.ttf
+  2) Run makefontuni.php with the .ttf and .ufm filenames as argument:
+     $ php -q makefontuni.php myfont.ttf myfont.ufm
+  3) Copy the resulting .php, .z and .ctg.z file to the TCPDF font directory.
+  4) Rename php font files variations for bold and italic using the following schema:
+  	[basic-font-name]b.php for bold variation
+  	[basic-font-name]i.php for oblique variation
+  	[basic-font-name]bi.php for bold oblique variation
+  5) Convert all fonts filenames to lowercase.
+  	
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/README.html
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/README.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/README.html	(revision 2000)
@@ -0,0 +1,80 @@
+<HTML>
+<HEAD>
+<TITLE>
+Scripts to support CJK-LaTeX
+</TITLE>
+</HEAD>
+<BODY>
+<H2>
+Scripts to support CJK-LaTeX
+</H2>
+
+by Mike Fabian
+&lt;mfabian@suse.de&gt;
+<p>
+
+The tiny Perl-script '<tt>sfd2map</tt>' converts <tt>.sfd</tt> files (as used by
+CJK-LaTeX) to <tt>.map</tt> files (as used by ttf2pt1).
+<p>
+
+Actually I currently don't use that script stand-alone for performance
+reasons.
+<p>
+
+Currently I use such a conversion in another small script '<tt>cjk-latex-config</tt>'
+(attached as well) which creates <tt>.tfm</tt> files usable with CJK-LaTeX
+from TrueType fonts as listed in <tt>/etc/ttf2pk/ttfonts.map</tt>. When called like
+<br>
+&nbsp;&nbsp;<tt>cjk-latex-config --type1</tt>
+<br>
+this script will use ttf2pt1 to generate <tt>.pfb</tt> files as well from these TrueType
+fonts to be used with CJK-LaTeX.
+<p>
+
+The <tt>.sfd</tt> files cannot be directly used as input to ttf2pt1 because the
+format of the <tt>.map</tt> files which ttf2pt1 expects is slightly different,
+therefore I made the '<tt>sfd2map</tt>' converter script.
+<p>
+
+But then I noticed that I would have to parse the generated map file
+*again* to get a list of the plane numbers to use. That seemed to be a
+bit wastful because I had just parsed the <tt>.sfd</tt> file to convert it to
+<tt>.map</tt>, therefore I included <tt>sfd2map</tt> as a function in '<tt>cjk-latex-config</tt>'
+as well and collected the plane numbers during the conversion.
+<p>
+
+But '<tt>cjk-latex-config</tt>' is maybe a little bit SuSE specific, therefore
+I kept '<tt>sfd2map</tt>' also as a standalong script. Use it if you like.
+<p>
+
+'<tt>cjk-latex-config</tt>' calls another small script '<tt>cjk-latex-t1mapgen</tt>'
+to generate a <tt>cjk-latex.map</tt> file containing something like
+<br>
+<tt>&nbsp;&nbsp;cyberb00 BitstreamCyberbit-Roman-00 <cyberb00.pfb</tt>
+<br>
+<tt>&nbsp;&nbsp;cyberb01 BitstreamCyberbit-Roman-01 <cyberb01.pfb</tt>
+<br>
+<tt>&nbsp;&nbsp;cyberb02 BitstreamCyberbit-Roman-02 <cyberb02.pfb</tt>
+<br>
+<tt>&nbsp;&nbsp;[...]</tt>
+<br>
+after all <tt>.pfb</tt> files have been generated.
+<p>
+
+Maybe this is also SuSE specific, I'm not sure about in what
+directories the relevant files are stored on other Linux-like systems.
+<p>
+
+I'm not yet sure whether they work on other systems beside SuSE Linux.
+They have hard coded path names where to find the TrueType fonts,
+<tt>ttfonts.map</tt>, the TeX fonts etc and <tt>cjk-latex-config</tt> checks
+whether freetype-tools.rpm is installed. freetype-tools.rpm might
+have another name for other distributions and for distributions
+which don't use rpm this check can't work anyway. 
+<p>
+
+These are small details and it should not be difficult to adapt the
+scripts for other Linux-like systems though.
+<p>
+</BODY>
+</HTML>
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/cjk-latex-config
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/cjk-latex-config	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/cjk-latex-config	(revision 2000)
@@ -0,0 +1,352 @@
+#!/usr/bin/perl -w
+#
+# Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany.  All rights reserved.
+#
+# Author: Mike Fabian <mfabian@suse.de>, 2002
+#
+
+use English;
+use Getopt::Long;
+
+# check if we are started as root
+# only one of UID and USER must be set correctly
+
+if ($UID != 0 && $ENV{USER} !~ /root/) {
+    print "You must be root to start $0\n";
+    exit 1;
+}
+
+if (system ("rpm -q freetype-tools >/dev/null 2>&1") != 0) {
+  print "freetype-tools package missing, exiting.\n";
+  exit 1;
+}
+
+
+sub usage {
+  print "Usage: cjk-latex-config [--verbose|v] [--force|f] [--type1|t]\n";
+  exit 1;
+}
+
+# Process command line options
+my %opt;
+unless (GetOptions(\%opt,
+		   'verbose|v', \$OPT_VERBOSE,
+		   'force|f',   \$OPT_FORCE,
+		   'type1|t',   \$OPT_TYPE1,
+		  )) {
+  &usage();
+  exit 1;
+}
+
+# to make sure ttf2tfm finds the .sdf files:
+system("texhash");
+
+$tfm_created = 0;
+$type1_created = 0;
+
+system("mkdir -p /usr/share/texmf/fonts/truetype/");
+
+open (TTFONTS_MAP, "/etc/ttf2pk/ttfonts.map");
+
+while (<TTFONTS_MAP>) {
+  
+  chomp($ARG);
+  
+  if ($ARG =~ /\@[a-zA-Z0-9\/]+\@/) {
+
+    if($OPT_VERBOSE) {
+      print "----------------------------------------------------------------------\n";
+      print "$ARG\n";
+    }
+    
+    @fields = split(/\s+/, $ARG);
+    
+    $tt_dir = "/usr/X11R6/lib/X11/fonts/truetype/";
+    $tt_basename = $fields[1];
+    
+    if ($fields[0] =~ /([^\s]+)\@[a-zA-Z0-9\/]+\@/) {
+      $latex_font_name = $1;
+    } else {
+      print "can't find latex font name.\n";
+      exit 1
+    }
+    
+    if ($fields[0] =~ /\@([a-zA-Z0-9\/]+)\@/) {
+      $sfd_name = $1;
+      $sfd_name =~ /.*\/([a-zA-Z0-9]+)/;
+      $sfd_basename = $1;
+    } else {
+      print "can't find sfd_name.\n";
+      exit 1
+    }
+
+    if ($ARG =~ /Pid=([0-9]+)/) {
+      $pid = "$1";
+    } else {
+      $pid = "3";
+    }
+
+    if ($ARG =~ /Eid=([0-9]+)/) {
+      $eid = "$1";
+    } else {
+      $eid = "1";
+    }
+
+    if ($ARG =~ /Slant=([0-9.]+)/) {
+      $slant = $1;
+      $slant_opt = "-s $1";
+    } else {
+      $slant = 0;
+      $slant_opt = "-s 0";
+    }
+
+    if ($ARG =~ /Rotate=(Yes)/) {
+      $rotate = 1;
+      $rotate_opt = "-x";
+    } else {
+      $rotate = 0;
+      $rotate_opt = "";
+    }
+
+    if (-e "$tt_dir/$tt_basename") {
+      symlink("$tt_dir/$tt_basename",
+	      "/usr/share/texmf/fonts/truetype/$tt_basename");
+      $tfm_dir = "/usr/share/texmf/fonts/tfm/cjk-latex/";
+      $type1_dir = "/usr/share/texmf/fonts/type1/cjk-latex/";
+
+      if (0 != create_or_update_tfm ()) {
+	print "creating .tfm failed.\n";
+      }
+      if ($OPT_TYPE1 && $slant == 0 && $rotate == 0) {
+	if (0 != create_or_update_type1 ()) {
+	  print "creating type1 font failed.\n";
+	}
+      }
+    }
+  }
+}
+
+if ($type1_created) {
+  $command = "cjk-latex-t1mapgen $type1_dir";
+  if (0 != system ($command)) {
+    print "$command failed.\n";
+    exit 1;
+  }
+}
+
+if ($tfm_created || $type1_created) {
+  system("texhash");
+}
+
+
+exit 0;
+
+
+######################################################################
+
+sub create_or_update_tfm {
+  
+  if ($OPT_FORCE ||
+      mtime_differs_or_missing ("$tt_dir/$tt_basename",
+				"$tfm_dir/$sfd_basename/$latex_font_name/")) {
+      
+    if (0 != system ("mkdir -p $tfm_dir/$sfd_basename/$latex_font_name/")) {
+      print "mkdir -p $tfm_dir/$sfd_basename/$latex_font_name/ failed.\n";
+      exit 1;
+    }
+    if (! chdir ("$tfm_dir/$sfd_basename/$latex_font_name/")) {
+      print "can't chdir to $tfm_dir/$sfd_basename/$latex_font_name/\n";
+      exit 1;
+    }
+    
+    $command = "ttf2tfm $tt_dir/$tt_basename ";
+    unless ($OPT_VERBOSE) {
+      $command .= " -q"; 
+    }
+    $command .= " -P $pid -E $eid $rotate_opt $slant_opt $latex_font_name\@$sfd_name\@";
+    if ($OPT_VERBOSE) {
+      print "$command\n";
+    } else {
+      $command .= " > /dev/null 2>&1";
+      print "$latex_font_name\@$sfd_name\@: calling ttf2tfm ...\n";
+    }
+    if (0 != system($command)) {
+      print "$command failed.\n";
+      return 1;
+    }
+
+    # success, mark this by giving the created directory the same time stamp
+    # as the TT-font:
+    system("touch -r $tt_dir/$tt_basename $tfm_dir/$sfd_basename/$latex_font_name/");
+    $tfm_created = 1;
+    return 0; 
+  }
+  
+}
+
+######################################################################
+
+sub create_or_update_type1 {
+
+  if ($OPT_FORCE ||
+      mtime_differs_or_missing ("$tt_dir/$tt_basename",
+				"$type1_dir/$sfd_basename/$latex_font_name/")) {
+      
+    if (0 != system ("mkdir -p $type1_dir/$sfd_basename/$latex_font_name/")) {
+      print "mkdir -p $type1_dir/$sfd_basename/$latex_font_name/ failed.\n";
+      exit 1;
+    }
+    if (! chdir ("$type1_dir/$sfd_basename/$latex_font_name/")) {
+      print "can't chdir to $type1_dir/$sfd_basename/$latex_font_name/\n";
+      exit 1;
+    }
+
+    if (grep(/$tt_basename/,("wadalab-gothic.ttf","watanabe-mincho.ttf"))) {
+      print "$tt_basename does not work with ttf2pt1, skipping ...\n";
+      return 0;
+    }
+    
+    # disable smoothing of outlines for broken fonts
+    # (for details see 'man ttf2pt1'):
+    my $smoothing_opt = " ";
+    if (grep(/$tt_basename/,("kochi-gothic.ttf"))) {
+      print "$tt_basename broken, disabling smoothing of outlines.\n";
+      $smoothing_opt = " -O s ";
+    } 
+    
+    $sfd_file = "/usr/share/texmf/ttf2tfm/$sfd_basename.sfd";
+    $map_file = `mktemp /tmp/cjk-latex-config-map.XXXXXX`;
+    chomp $map_file;
+    if ($map_file eq "") {
+      print "mktemp /tmp/cjk-latex-config-map.XXXXXX failed.\n";
+    }
+    
+    @planes = sfd2map($sfd_file,$map_file);
+    if ($#planes == -1) {
+      print "sfd2map($sfd_file,$map_file) failed.\n";
+      return 1;
+    }
+    
+    for my $plane (@planes) {
+      if ($OPT_VERBOSE) {
+	$command = "ttf2pt1 -W 99 ";
+      } else {
+	$command = "ttf2pt1 -W 0 ";
+      }
+      $command .= $smoothing_opt;
+      $command .= " -p ft -b -G a -m h=5000 ";
+      $command .= " -L $map_file+pid=$pid,eid=$eid,$plane ";
+      $command .= " $tt_dir/$tt_basename $latex_font_name$plane";
+      if ($OPT_VERBOSE) {
+	print "$command\n";
+      } else {
+	$command .= " > /dev/null 2>&1";
+	print "$latex_font_name\@$sfd_name\@, plane=$plane: calling ttf2pt1 ...\n";
+      }
+      if (0 != system($command)) {
+	print "$command failed.\n";
+	return 1;
+      }      
+    }
+
+    unlink $map_file;
+    
+    # success, mark this by giving the created directory the same time stamp
+    # as the TT-font:
+    system("touch -r $tt_dir/$tt_basename $type1_dir/$sfd_basename/$latex_font_name/");
+    $type1_created = 1;
+    return 0;
+  }
+}
+
+######################################################################
+
+sub sfd2map {
+  my($sfd_file,$map_file) = @_;
+  if (! open (SFD, "<$sfd_file")) {
+    print "cannot open $sfd_file\n";
+    return ();
+  }
+  if (! open (MAP, ">$map_file")) {
+    print "cannot open $map_file\n";
+    close (SFD);
+    return ();
+  }
+
+  my(@planes) = ();
+
+  while (<SFD>) {
+  
+    if ( ! ($ARG =~ /^[[:space:]]*\#/)) {  # skip comment lines
+
+      # handle plane numbers:
+      if ( $ARG =~ /^([[:xdigit:]]{2})[[:space:]]*/ ) {
+	$ARG =~ s/^([[:xdigit:]]{2})[[:space:]]*/   /;
+	print MAP "plane $1\n";
+	print MAP "at 0x00\n";
+	$planes[$#planes + 1] = $1;
+      }
+    
+      # remove continuation chars '\':
+      $ARG =~ s/\\$//;
+    
+      $ARG =~ s/(0x[[:xdigit:]]{1,4})/$1,/g;
+      # handle ranges like 0xF800_0xF8FF
+      $ARG =~ s/(0x[[:xdigit:]]{1,4}),_/$1-/g;
+    }
+
+    print MAP $ARG;
+
+  }
+
+  close (MAP);
+  close (SFD);
+  return @planes;
+}
+
+
+# Returns true if the modification time of $f1 differs from
+# the modification time of $f2 
+sub mtime_differs {
+  my($f1,$f2) = @_;
+  if( -e $f1 && -e $f2) {
+    local (@f1s) = stat ($f1);
+    local (@f2s) = stat ($f2);
+    return ($f1s[9] != $f2s[9]);
+  } else {
+    return 0;
+  }
+}
+
+# Returns true if the modification time of $f1 differs from
+# the modification time of $f2 or if one of the files is missing
+sub mtime_differs_or_missing {
+    my($f1,$f2) = @_;
+    if (! -e $f1 || ! -e $f2 || mtime_differs($f1,$f2)) {
+      return 1;
+    } else {
+      return 0;
+    }
+}  
+
+# Returns true if $f1 is newer than $f2
+sub newer {
+  my($f1,$f2) = @_;
+  if( -e $f1 && -e $f2) {
+    local (@f1s) = stat ($f1);
+    local (@f2s) = stat ($f2);
+    return ($f1s[9] > $f2s[9]);
+  } else {
+    return 0;
+  }
+}
+
+# Returns true if $f1 is newer than $f2 or if one of the files is missing
+sub newer_or_missing {
+    my($f1,$f2) = @_;
+    if (! -e $f1 || ! -e $f2 || newer($f1,$f2)) {
+      return 1;
+    } else {
+      return 0;
+    }
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/cjk-latex-t1mapgen
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/cjk-latex-t1mapgen	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/cjk-latex-t1mapgen	(revision 2000)
@@ -0,0 +1,60 @@
+#!/bin/sh
+#
+# Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany.  All rights reserved.
+#
+# Author: Mike Fabian <mfabian@suse.de>, 2002
+#
+
+TYPE1_DIR=$1
+if [ -z $TYPE1_DIR ] ; then
+    TYPE1_DIR=/usr/share/texmf/fonts/type1/cjk-latex/
+fi
+
+CJK_LATEX_TYPE1_MAP_FILE=/var/lib/texmf/dvips/config/cjk-latex.map
+
+echo "creating $CJK_LATEX_TYPE1_MAP_FILE ..."
+
+TMPFILE=`mktemp /tmp/cjk-latex-t1mapgen.XXXXXX`
+
+if [ -d $TYPE1_DIR ] ; then
+    for FILE in $( find $TYPE1_DIR -name "*.pfb" )
+    do
+        BASENAME_WITHOUT_EXT=$( basename $FILE )
+        BASENAME_WITHOUT_EXT=${BASENAME_WITHOUT_EXT%.pfb}
+        FONT_NAME=$( grep -a "/FontName.*def" ${FILE} | perl -pe "s%/FontName /([^ ]+) def%\1%" )
+        echo "${BASENAME_WITHOUT_EXT} ${FONT_NAME} <${BASENAME_WITHOUT_EXT}.pfb" >> $TMPFILE
+    done
+fi
+
+mv $TMPFILE $CJK_LATEX_TYPE1_MAP_FILE
+chmod 644 $CJK_LATEX_TYPE1_MAP_FILE
+
+# add entries for PostScript font map files used by CJK-LaTeX
+# to 'pdftex.cfg' and 'config.ps':
+
+PDFTEX_CFG=/var/lib/texmf/pdftex/config/pdftex.cfg
+CONFIG_PS=/var/lib/texmf/dvips/config/config.ps
+
+for MAP in cjk-latex.map
+do
+    if [ -f /var/lib/texmf/dvips/config/$MAP ] ; then
+        egrep "^p \+$MAP" $CONFIG_PS > /dev/null 
+        if [ $? = 1 ] ; then
+            echo "p +$MAP" >>  $CONFIG_PS
+        fi
+        egrep "^map \+$MAP" $PDFTEX_CFG > /dev/null 
+        if [ $? = 1 ] ; then
+            echo "map +$MAP" >>  $PDFTEX_CFG
+        fi
+    fi
+done
+
+# pdflatex seems to prefer pk fonts if they exist. That seems strange
+# but I couldn't find out how to change this.
+# Deleting all the pk fonts from /var/cache/fonts/pk/* is probably a bit overkill
+# but it helps. 'dvips' will regenerate the pk fonts as needed but will not
+# regenerate pk fonts for the pfb fonts listed in the map file generated above.
+# Therefore, deleting /var/cache/fonts/pk/* makes sure that all available pfb
+# fonts are used:
+
+rm -rf /var/cache/fonts/pk/*
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/sfd2map
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/sfd2map	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/sfd2map	(revision 2000)
@@ -0,0 +1,68 @@
+#!/usr/bin/perl -w
+#
+# Copyright (c) 2002 Mike Fabian <mike.fabian@gmx.de>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+
+use English;
+use Getopt::Long;
+
+sub usage {
+  print "Usage: sfd2map [-debug|d]\n\n";
+  print "Converts a .sfd files in the format used by ttf2pk and ttf2tfm\n"; 
+  print "into .map files in the format expected by ttf2pt1. For example:\n\n";
+  print "    sfd2map < UJIS.sfd > UJIS.map \n\n";
+  exit 1;
+}
+
+# Process command line options
+my %opt;
+unless (GetOptions(\%opt,
+	'-debug|d' , \$OPT_DEBUG
+       )) {
+    &usage();
+    exit 1;
+}
+
+if($OPT_DEBUG) {
+}
+
+open (MAP, ">&STDOUT");
+open (SFD, "<&STDIN");
+
+print MAP "# generated from a .sfd file by sfd2map to make it usable with ttf2pt1\n";
+print MAP "#\n";
+
+while (<SFD>) {
+  
+  if ( ! ($ARG =~ /^[[:space:]]*\#/)) { # skip comment lines
+
+    # handle plane numbers:
+    if ( $ARG =~ /^([[:xdigit:]]{2})[[:space:]]*/ ) {
+      $ARG =~ s/^([[:xdigit:]]{2})[[:space:]]*/   /;
+      print MAP "plane $1\n";
+      print MAP "at 0x00\n";
+    }
+    
+    # remove continuation chars '\':
+    $ARG =~ s/\\$//;
+
+    $ARG =~ s/(0x[[:xdigit:]]{1,4})/$1,/g;
+    # handle ranges like 0xF800_0xF8FF
+    $ARG =~ s/(0x[[:xdigit:]]{1,4}),_/$1-/g;
+    
+  }
+
+  print MAP $ARG;
+
+}
+
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/README
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/README	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/TeX/README	(revision 2000)
@@ -0,0 +1,51 @@
+Scripts to support CJK-LaTeX
+
+by Mike Fabian
+<mfabian@suse.de>
+
+The tiny Perl-script 'sfd2map' converts .sfd files (as used by
+CJK-LaTeX) to .map files (as used by ttf2pt1).
+
+Actually I currently don't use that script stand-alone for performance
+reasons.
+
+Currently I use such a conversion in another small script 'cjk-latex-config'
+(attached as well) which creates .tfm files usable with CJK-LaTeX
+from TrueType fonts as listed in /etc/ttf2pk/ttfonts.map. When called like
+  cjk-latex-config --type1
+this script will use ttf2pt1 to generate .pfb files as well from these TrueType
+fonts to be used with CJK-LaTeX.
+
+The .sfd files cannot be directly used as input to ttf2pt1 because the
+format of the .map files which ttf2pt1 expects is slightly different,
+therefore I made the 'sfd2map' converter script.
+
+But then I noticed that I would have to parse the generated map file
+*again* to get a list of the plane numbers to use. That seemed to be a
+bit wastful because I had just parsed the .sfd file to convert it to
+.map, therefore I included sfd2map as a function in 'cjk-latex-config'
+as well and collected the plane numbers during the conversion.
+
+But 'cjk-latex-config' is maybe a little bit SuSE specific, therefore
+I kept 'sfd2map' also as a standalong script. Use it if you like.
+
+'cjk-latex-config' calls another small script 'cjk-latex-t1mapgen'
+to generate a cjk-latex.map file containing something like
+  cyberb00 BitstreamCyberbit-Roman-00 <cyberb00.pfb
+  cyberb01 BitstreamCyberbit-Roman-01 <cyberb01.pfb
+  cyberb02 BitstreamCyberbit-Roman-02 <cyberb02.pfb
+  [...]
+after all .pfb files have been generated.
+
+Maybe this is also SuSE specific, I'm not sure about in what
+directories the relevant files are stored on other Linux-like systems.
+
+I'm not yet sure whether they work on other systems beside SuSE Linux.
+They have hard coded path names where to find the TrueType fonts,
+ttfonts.map, the TeX fonts etc and cjk-latex-config checks
+whether freetype-tools.rpm is installed. freetype-tools.rpm might
+have another name for other distributions and for distributions
+which don't use rpm this check can't work anyway. 
+
+These are small details and it should not be difficult to adapt the
+scripts for other Linux-like systems though.
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/README.html
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/README.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/README.html	(revision 2000)
@@ -0,0 +1,242 @@
+<HTML>
+<HEAD>
+<TITLE>
+Installing the fonts in Netscape Navigator
+</TITLE>
+</HEAD>
+<BODY>
+<H2>
+Installing the fonts in Netscape Navigator
+</H2>
+
+<tt>
+by Sergey Babkin 
+&lt;babkin@bellatlantic.net&gt;, &lt;sab123@hotmail.com&gt;
+</tt>
+<p>
+
+This is a collection of supplements to Netscape 4.x on
+Unix. Probably they will also work with Netscape 3.x,
+possilby with minor modifications.
+<p>
+
+<h4><tt>
+&nbsp;&nbsp;Makefile<br>
+&nbsp;&nbsp;nsfix.c<br>
+&nbsp;&nbsp;psfonts.cf
+</tt></h4>
+<p>
+
+This is a program that allows to substitute the font metrics
+of any PostScript font in Netscape. 
+<p>
+
+When Netscape prints the files to PostScript format it uses a 
+built-in table of character widths. It prints all the fixed-width 
+characters in the typeface "Courier" and all the variable-width 
+characters in the typeface "Times". And if the PostScript printer
+has these fonts by Adobe then everything goes fine because
+the tables inside Netscape are generated from the Adobe fonts.
+But if the fonts are different (say, those supplied with Ghostscripts
+or the fonts with non-latin characters) then the result is quite
+ugly. This program allows to replace the width tables inside
+the Netscape executable with the tables for any given font.
+The only problem is that Netscape can hold only one set of tables
+at once. So if you want to print with different fonts (say,
+for different languages or encodings) you will have to make
+multiple copies of the executable, tune each of them for its
+font and then run them separately.
+<p>
+
+I tried to make the program as machine-independent as possible.
+But because it patches the binary files it still has the dependencies
+on hardware. The default version as supplied was designed for
+Intel x86 machines but it should work OK on any machine
+with 32-bit CPU and 4Kbyte (or less) page size. If it can't
+find the tables matching the font names on some other architecture
+the first thing to try would be reduce the `<tt>PAGEBITS</tt>' definition
+in the source code. On the machines with non-page-aligned structure
+of executables it won't work at all. I don't know whether would
+it work on the 64-bit machines. This may depend on whether the
+Netscape executable was compiled in 32-bit or 64-bit mode. For
+the 64-bit executables it may be neccessary to change the definition
+of the type `<tt>tptr</tt>' to an 8-byte integer type (probably `<tt>long</tt>'
+or `<tt>long long</tt>'). Also must be re-compiled for patching of the 
+Netscape binary for each particular machine architecture because
+it assumes the byte order of the current machine.
+<p>
+
+It might be possible to create a program that would patch
+a running Netscape binary on the fly, that would allow
+changing the printing fonts as neccessary when Netscape is
+running. But this would be even more platform-dependent,
+so I don't feel any enthusiasm about doing that.
+<p>
+
+I have tested the program on the Intel machines, Netscape
+4.08 and 4.7, OS FreeBSD (both a.out and ELF formats of the
+Netscape binary) and UnixWare.
+<p>
+
+After all these scary issues are resolved the compiling
+is easy: just run `<tt>make</tt>'.
+<p>
+
+To command to patch the Netscape is:
+<p>
+<tt>
+&nbsp;&nbsp;./nsfix <i>&lt;netscape-binary&gt; &lt;config-file&gt;</i>
+</tt>
+<p>
+
+Please make a copy of the original Netscape binary before
+patching in case anything goes wrong. Patch the copy, test
+that it works OK and only then install it. The configuration
+file describes the fonts that are to be used. An example
+is provided in the file psfonts.cf.
+<p>
+
+Each line in the configuration file consists of 4
+columns:
+<p>
+
+<tt><i>
+&lt;PS_font_name&gt; &lt;font_base_file&gt; &lt;suffix_afm&gt; &lt;suffix_font&gt;
+</i></tt>
+<p>
+
+For example, the following line from my configuration file:
+<p>
+
+<tt>
+Courier /usr/lib/X11/fonts/ttf/cokoi8n.koi8-r .afm .pfa
+</tt>
+<p>
+
+says that the font `Courier' will be replaced with the
+font taken from the file `<tt>/usr/lib/X11/fonts/ttf/cokoi8n.koi8-r.pfa</tt>'
+and the metrics for that font will be taken from the file
+`<tt>/usr/lib/X11/fonts/ttf/cokoi8n.koi8-r.afm</tt>' .
+<p>
+
+One more caveat: the new font must have a proper encoding
+table. Some fonts contain characters for multiple encodings
+hoping that the program wil re-encode them as neccessary.
+This won't work in this case, only the primary encoding table
+of the font will be used.
+<p>
+
+<h4><tt>
+&nbsp;&nbsp;nsfilter<br>
+&nbsp;&nbsp;nsprint<br>
+&nbsp;&nbsp;psfonts.cf
+</tt></h4>
+<p>
+
+These are the filters for printing from Netscape.
+<p>
+
+Changing the metrics is not the end of the story. This will
+provide proper placement of the characters but not the
+characters themselves. There are a few ways to provide
+the characters:
+<p>
+
+First, if you use GhostScript you may configure proper
+aliases in the GhostScript configuration file. We will
+consider this variant trivial and won't discuss it furter
+except for one caveat: Netscape tries to re-encode the
+fonts per the ISO Latin-1 encoding. If the primary encoding
+of the font is different this cause unexpected effects.
+So you still may consider using the filters (at least in a
+simplified form) to solve this problem.
+<p>
+
+Second, load the fonts right into your printer. This is
+very much like configuring GhostScript.
+<p>
+
+Third, use the provided filters. The script `<tt>nsfilter</tt>'
+reads the output of Netscape on its standard input and
+puts the result to its standard output. It uses the same
+configuration file `<tt>psfonts.cf</tt>' as `<tt>nsfix</tt>'. First it
+looks for the configuration file in the user's home
+directory (<tt>$HOME/.netscape/psfonts.cf</tt>) and if the
+file it not there then the second guess is the system-wide
+configuration file <tt>/usr/local/etc/psfonts.cf</tt>. The
+script inserts the fonts into the output and also
+removes the Netscape's experiments with the encodings.
+<p>
+
+`<tt>nsfilter</tt>' is generally intended to be ran by user, not by the 
+printing subsystem. The reason is that the user may have
+changed fonts in his Netscape and the printing subsystem
+would have no way to access user's configuration file.
+But if all the users are using the same fonts then it
+may be incorporated into the printing subsystem and use
+the system-wide configuration file.
+<p>
+
+The script `<tt>nsprint</tt>' is purely for convenience, to type it
+as a printing command in the Netscape printing window.
+It just pipelines the data through `<tt>nsfilter</tt>' to the
+printing program which also gets all the arguments. Please 
+note that the SystemV-style and BSD-style systems use different
+printing programs (although they commonly provide compatibility
+with the other style too). The script tries to guess the
+type of system and use its native print program, `<tt>lp</tt>' or
+`<tt>lpr</tt>'. But in case it guesses wrong you may want
+to change this in the script.  Also if the printer does not support
+PostScript directly this script may be a good place to
+insert a call to GhostScript.
+<p>
+
+<h4><tt>
+&nbsp;&nbsp;notscape<br>
+&nbsp;&nbsp;fontsz.cf
+</tt></h4>
+<p>
+
+Netscape on Unix has a very annoying "feature", it does
+not remember the desired base size of the scalable screen
+fonts and always resets it to 12.0 points. Even if the size
+is changed manually in its preferences file, Netscape
+forgets it after it exits. 
+<p>
+
+So my solution was to write a program which would change
+the size to my favorite one every time right before
+starting Netscape. `<tt>notscape</tt>' is exactly such a program,
+it sets the font sizes an then transparently executes 
+netscape. It takes the font sizes from the file
+`<tt>$HOME/.netscape/fontsz.cf</tt>' . An example of such file
+is provided. The format of the file is quite self-explanatory,
+for example the lines
+<p>
+
+<tt>
+fixed-koi8-r	140<br>
+prop-koi8-r	150
+</tt>
+<p>
+
+mean "set the size of the fixed-width screen font in the 
+encoding koi8-r to 14.0 points; set the size of the proportional 
+(variable-width) font in the encoding koi8-r to 15.0 points".
+<p>
+
+
+<h3><tt>
+&nbsp;&nbsp;nspr
+</tt><br>
+by Zvezdan Petkovic</h3>
+<p>
+
+To print from Netscape, I usually print to the Postscript file first.
+Then I use this small script to change the names of Times and Courier fonts
+in the file and remove `/Encoding' lines.  After that the file can be
+sent to printer.
+<p>
+</BODY>
+</HTML>
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/nspr
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/nspr	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/nspr	(revision 2000)
@@ -0,0 +1,26 @@
+#!/bin/sh
+if [ $# != 2 ]
+then
+    echo "Usage: 'nspr # file.ps' where # is 2, 5, or 1251"
+    exit
+else
+    enc=$1
+    shift
+fi
+case ${enc} in
+    1250|1251)
+        charset=windows
+        ;;
+    *)
+        charset=iso8859
+        ;;
+esac
+sed "s/Times-Roman/Timesnew-Roman-${charset}-${enc}/g;\
+     s/Times-Italic/Timesnew-Italic-${charset}-${enc}/g;\
+     s/Times-BoldItalic/Timesnew-BoldItalic-${charset}-${enc}/g;\
+     s/Times-Bold/Timesnew-Bold-${charset}-${enc}/g;\
+     s/Courier/Couriernew-Roman-${charset}-${enc}/g;\
+     s/Couriernew-Roman-${charset}-${enc}-BoldOblique/Couriernew-BoldItalic-${charset}-${enc}/g;\
+     s/Couriernew-Roman-${charset}-${enc}-Bold/Couriernew-Bold-${charset}-${enc}/g;\
+     s/Couriernew-Roman-${charset}-${enc}-Oblique/Couriernew-Italic-${charset}-${enc}/g;" $* | \
+grep -v "^	/Encoding isolatin1encoding def$"
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/psfonts.cf
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/psfonts.cf	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/psfonts.cf	(revision 2000)
@@ -0,0 +1,11 @@
+# PS_font_name font_base_file suffix_afm suffix_font
+
+Courier /usr/lib/X11/fonts/ttf/cokoi8n.koi8-r .afm .pfa
+Courier-Bold /usr/lib/X11/fonts/ttf/cokoi8b.koi8-r .afm .pfa
+Courier-Oblique /usr/lib/X11/fonts/ttf/cokoi8i.koi8-r .afm .pfa
+Courier-BoldOblique /usr/lib/X11/fonts/ttf/cokoi8bi.koi8-r .afm .pfa
+
+Times-Roman /usr/lib/X11/fonts/ttf/kudriash.koi8-r .afm .pfa
+Times-Bold /usr/lib/X11/fonts/ttf/kudrias1.koi8-r .afm .pfa
+Times-Italic /usr/lib/X11/fonts/ttf/kudrias3.koi8-r .afm .pfa
+Times-BoldItalic /usr/lib/X11/fonts/ttf/kudrias2.koi8-r .afm .pfa
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/nsfilter
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/nsfilter	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/nsfilter	(revision 2000)
@@ -0,0 +1,24 @@
+#!/bin/sh
+CONFLOCAL=$HOME/.netscape/psfonts.cf
+CONFGLOBAL=/usr/local/etc/nspsfonts.cf
+
+if [ -r "$CONFLOCAL" ]
+then
+	CONF="$CONFLOCAL"
+else
+	CONF="$CONFGLOBAL"
+fi
+
+grep -v "^#" <$CONF | grep -v "^$" | while :
+do {
+	read nsname base afm pfa x
+	[ -z "$nsname" ] && break;
+
+	fname=`awk '/^FontName/ {print $2;}' <$base$afm`
+
+	cat $base$pfa
+	echo "/$nsname /$fname findfont definefont"
+
+} done
+
+grep -v "^	/Encoding isolatin1encoding def$" | egrep -v '^newpath .* closepath clip newpath$'
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/nsfix.c
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/nsfix.c	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/nsfix.c	(revision 2000)
@@ -0,0 +1,469 @@
+/*
+ * Fix the Netscape executable for specified font widths
+ *
+ * (c) 1999 Copyright by Sergey Babkin
+ * see COPYRIGHT
+ */
+
+#include <sys/types.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <locale.h>
+#include <unistd.h>
+
+/************************** DEFINES *************************/
+
+#undef DEBUG
+
+/* we can handle at most this many fonts */
+#define MAXFONTS	20
+
+/* maximal line buffer size */
+#define MAXLINE 512
+
+/* there may be multiple strings with the same contents */
+#define MAXDUPS 10
+
+/* file read buffer size */
+#define FILEBF	40960
+
+/* bits in the hardware page offset */
+#define BITSPERPAGE	12
+
+/* size of page in bytes */
+#define PAGESIZE (1<<BITSPERPAGE)
+
+/* mask of the in-page offset */
+#define PAGEMASK (PAGESIZE-1)
+
+/* this is machine-dependent! */
+typedef short t2b; /* 2-byte type */
+typedef int t4b; /* 4-byte type */
+typedef int tptr; /* integer type with the same size as pointer */
+
+struct bbox { /* bounding box */
+	t2b llx; /* lower-left-x */
+	t2b lly;
+	t2b urx;
+	t2b ury; /* upper-right-y */
+};
+
+struct glyphmetrics { /* metrics of one glyph */
+	t2b	width;
+	t2b	unknown;
+	struct bbox bbox;
+};
+
+struct fontmetrics { /* metrics of the wholefont */
+	tptr name;
+	struct bbox bbox;
+	t2b underlinepos;
+	t2b underlinethick;
+	struct glyphmetrics glyphs[256];
+};
+
+struct font {
+	char nsname[MAXLINE]; /* name in the Netscape binary */
+	char afmname[MAXLINE]; /* name of the .afm file */
+	char pfaname[MAXLINE]; /* name of the .pfa (or .pfb) file */
+	struct fontmetrics metrics;
+	off_t binoff; /* offset in the binary */
+};
+
+#define SCONST(x)	(x), ((sizeof (x))-1)
+
+/************************** GLOBALS *************************/
+
+struct font font[MAXFONTS];
+int nfonts=0;
+
+char msg[MAXLINE];
+
+/*************************** PROTOTYPES **********************/
+
+void usage(void);
+void readconfig( char *fn);
+void readmetrics(void);
+void replacefonts( char *fn);
+
+/************************** main ****************************/
+
+main(ac, av)
+	int ac;
+	char **av;
+{
+	setlocale(LC_ALL, "");
+
+	if(ac!=3) {
+		usage(); exit(1);
+	}
+
+	readconfig(av[2]);
+	readmetrics();
+	replacefonts( av[1]);
+}
+
+/************************** usage ***************************/
+
+void
+usage(void)
+{
+	fprintf(stderr,"Use:\n");
+	fprintf(stderr,"   nsfix <netscape.bin> <config-file>\n");
+}
+
+
+/************************** readconfig **********************/
+
+void
+readconfig(fn)
+	char *fn;
+{
+	char s[MAXLINE];
+	char afmsuffix[MAXLINE], pfasuffix[MAXLINE];
+	int lineno=0;
+	FILE *f;
+
+	if(( f=fopen(fn, "r") )==NULL) {
+		sprintf(msg,"nsfix: open %s",fn);
+		perror(msg);
+		exit(1);
+	}
+
+	while( fgets(s, MAXLINE, f) ) {
+		lineno++;
+		if(s[0]=='#' || s[0]=='\n')
+			continue;
+
+		if(nfonts>=MAXFONTS) {
+			fprintf(stderr, "nsfix: only %d fonts are supported at once\n", 
+				MAXFONTS);
+			exit(1);
+		}
+
+		if( sscanf(s, "%s %s %s %s", font[nfonts].nsname, 
+				font[nfonts].afmname, afmsuffix, pfasuffix) != 4 ) {
+			fprintf(stderr, "nsfix: syntax error at line %d of %s\n",
+				lineno, fn);
+			exit(1);
+		}
+		strcpy(font[nfonts].pfaname, font[nfonts].afmname);
+		strcat(font[nfonts].afmname, afmsuffix);
+		strcat(font[nfonts].pfaname, pfasuffix);
+		nfonts++;
+	}
+
+	if(nfonts==0) {
+		fprintf(stderr, "nsfix: no fonts are defined in %s\n", fn);
+		exit(1);
+	}
+	fclose(f);
+}
+
+/************************** readmetrics *********************/
+
+void
+readmetrics(void)
+{
+	int i;
+	char s[MAXLINE];
+	FILE *f;
+	int n;
+	int lineno;
+	int code, width, llx, lly, urx, ury;
+	char gn[MAXLINE];
+	struct glyphmetrics *gm;
+
+	for(i=0; i<nfonts; i++) {
+		if(( f=fopen(font[i].afmname, "r") )==NULL) {
+			sprintf(msg,"nsfix: open %s", font[i].afmname);
+			perror(msg);
+			exit(1);
+		}
+		lineno=0;
+		while( fgets(s, MAXLINE, f) ) {
+			lineno++;
+			if( !strncmp(s, SCONST("UnderlineThickness ")) ) {
+				if( sscanf(s, "UnderlineThickness %d", &n) <1) {
+					fprintf(stderr, "nsfix: weird UnderlineThickness at line %d in %s\n",
+						lineno, font[i].afmname);
+					exit(1);
+				}
+				font[i].metrics.underlinethick=n;
+			} else if( !strncmp(s, SCONST("UnderlinePosition ")) ) {
+				if( sscanf(s, "UnderlinePosition %d", &n) <1) {
+					fprintf(stderr, "nsfix: weird UnderlinePosition at line %d in %s\n",
+						lineno, font[i].afmname);
+					exit(1);
+				}
+				font[i].metrics.underlinepos=n;
+			} else if( !strncmp(s, SCONST("FontBBox ")) ) {
+				if( sscanf(s, "FontBBox %d %d %d %d", &llx, &lly, &urx, &ury) <4) {
+					fprintf(stderr, "nsfix: weird FontBBox at line %d in %s\n",
+						lineno, font[i].afmname);
+					exit(1);
+				}
+				font[i].metrics.bbox.llx=llx;
+				font[i].metrics.bbox.lly=lly;
+				font[i].metrics.bbox.urx=urx;
+				font[i].metrics.bbox.ury=ury;
+			} else if( !strncmp(s, SCONST("C ")) ) {
+				if( sscanf(s, "C %d ; WX %d ; N %s ; B %d %d %d %d", 
+					&code, &width, &gn, &llx, &lly, &urx, &ury) <7) 
+				{
+					fprintf(stderr, "nsfix: weird metrics at line %d in %s\n",
+						lineno, font[i].afmname);
+					exit(1);
+				}
+				if(code>=32 && code<=255) {
+					font[i].metrics.glyphs[code].width=width;
+					font[i].metrics.glyphs[code].bbox.llx=llx;
+					font[i].metrics.glyphs[code].bbox.lly=lly;
+					font[i].metrics.glyphs[code].bbox.urx=urx;
+					font[i].metrics.glyphs[code].bbox.ury=ury;
+				}
+			}
+		}
+		fclose(f);
+	}
+
+#ifdef DEBUG
+	for(i=0; i<nfonts; i++) {
+		printf("Font %s\n", font[i].nsname);
+		for(n=0; n<256; n++) {
+			gm= &font[i].metrics.glyphs[n];
+			printf("  %d w=%4d [%4d %4d %4d %4d]", n, gm->width,
+				gm->bbox.llx, gm->bbox.lly, gm->bbox.urx, gm->bbox.ury);
+			printf("  w=0x%04x [0x%04x 0x%04x 0x%04x 0x%04x]\n", gm->width & 0xffff,
+				gm->bbox.llx & 0xffff, gm->bbox.lly & 0xffff, gm->bbox.urx & 0xffff, gm->bbox.ury & 0xffff);
+		}
+	}
+
+	exit(0);
+#endif
+
+}
+
+/************************** replacefonts ********************/
+
+void
+replacefonts(fn)
+	char *fn;
+{
+	int f; /* don't use stdio */
+	char bf[FILEBF];
+	char *bfend, *p;
+	int len;
+	off_t pos;
+
+	off_t zerooff[MAXFONTS*MAXDUPS]; /* offset of zero strings */
+	tptr nameaddr[MAXFONTS*MAXDUPS]; /* name pointers before these zero strings */
+	int zeroid[MAXFONTS*MAXDUPS]; /* font number for this zero block */
+	int nzeroes;
+	short matched[MAXFONTS]; /* counters how many matches we have for each requested font */
+	struct fontmetrics *fp;
+
+	struct {
+		int noff;
+		int nz;
+		off_t off[MAXDUPS]; /* there may be multiple strings with the same contents */
+	} o[MAXFONTS];
+	int maxnlen;
+	int i, j, k, n;
+
+	static struct glyphmetrics gm[32]; /* 0-initialized */
+
+
+	if(( f=open(fn, O_RDWR) )<0) {
+		sprintf(msg,"nsfix: open %s",fn);
+		perror(msg);
+		exit(1);
+	}
+
+
+	/* get the maximal font name length */
+	maxnlen=0;
+	for(i=0; i<nfonts; i++) {
+		o[i].noff=o[i].nz=0;
+		matched[i]=0;
+		len=strlen(font[i].nsname)+1;
+		if(len>maxnlen)
+			maxnlen=len;
+	}
+
+	/* fprintf(stderr,"maxnlen= 0x%x\n", maxnlen); /* */
+	/* try to find the literal strings of the font names */
+	pos=0; bfend=bf;
+	while(( len=read(f, bfend, FILEBF-(bfend-bf)) )>=0 ) {
+		/* fprintf(stderr,"looking at 0x%lx\n", (long)pos); /* */
+		/* the last position to check */
+		if(len>=maxnlen) 
+			/* leave the rest with the next block */
+			bfend+= len-maxnlen; 
+		else {
+			/* we are very near to the end of file, check
+			 * up to the very last byte */
+			bfend+= len-2;
+			memset(bfend+2, 0, maxnlen);
+		}
+
+		for(p=bf; p<=bfend; p++)
+			for(i=0; i<nfonts; i++)
+				if(!strcmp(font[i].nsname, p) && o[i].noff<MAXDUPS) {
+					o[i].off[ o[i].noff++ ] = pos + (p-bf);
+					fprintf(stderr,"found %s at 0x%lx\n", font[i].nsname, (long)pos + (p-bf));
+				}
+
+		if(len==0)
+			break;
+
+		memmove(bf, bfend, maxnlen);
+		pos+= (bfend-bf);
+		bfend= (bf+maxnlen);
+	}
+	if(len<0) {
+		sprintf(msg,"nsfix: read %s",fn);
+		perror(msg);
+		exit(1);
+	}
+	fprintf(stderr,"---\n");
+	/* if there are any dups try to resolve them */
+	for(i=0; i<nfonts; i++) {
+		if(o[i].noff==0) {
+			fprintf(stderr, "nsfix: font %s (%d of %d) is missing in %s\n", 
+				font[i].nsname, i, nfonts, fn);
+			exit(1);
+		}
+		if(o[i].noff!=1)
+			continue;
+		/* good, only one entry */
+		fprintf(stderr,"found unique %s at 0x%lx\n", font[i].nsname, (long)o[i].off[0] );
+		/* if any dupped entry is right after this one then it's good */
+		/* if it's farther than PAGESIZE/2 then it's bad */
+		pos=o[i].off[0]+strlen(font[i].nsname)+1;
+		for(j=0; j<MAXFONTS; j++) {
+			if(o[j].noff<=1)
+				continue;
+			for(k=0; k<o[j].noff; k++) {
+				if(o[j].off[k]==pos) { /* good */
+					fprintf(stderr,"got unique %s at 0x%lx\n", font[j].nsname, (long)pos );
+					o[j].off[0]=pos;
+					o[j].noff=1;
+					break;
+				}
+				if(o[j].off[k] < pos - PAGESIZE/2
+				|| o[j].off[k] > pos + PAGESIZE/2) { /* bad */
+					fprintf(stderr, "eliminated %s at 0x%lx\n", font[j].nsname, (long)o[j].off[k] );
+					for(n=k+1; n<o[j].noff; n++)
+						o[j].off[n-1]=o[j].off[n];
+					o[j].noff--;
+					k--;
+				}
+			}
+			if(o[j].noff==1 && j<i) { /* have to revisit this font */
+				i=j-1; /* compensate for i++ */
+				break; 
+			}
+		}
+	}
+
+
+	/* try to find the metric tables in the executable */
+	if(lseek(f, (off_t)0, SEEK_SET)<0) {
+		sprintf(msg,"nsfix: rewind %s",fn);
+		perror(msg);
+		exit(1);
+	}
+
+	/*
+	 * search for the zeroes in place of the metrics for the codes 0-31:
+	 * 4-byte aligned strings of (32*sizeof(struct glyphmetrics)) zero bytes
+	 */
+	maxnlen=sizeof(struct fontmetrics);
+
+	pos=0; bfend=bf; nzeroes=0;
+	while(( len=read(f, bfend, FILEBF-(bfend-bf)) )>=0 ) {
+		/* fprintf(stderr,"looking at 0x%lx\n", (long)pos); /* */
+		/* the last position to check */
+		bfend+= len-maxnlen; /* don't look beyond the EOF */
+
+		for(p=bf; p<=bfend; p+=4 /* 4-byte aligned */ ) {
+			fp=(struct fontmetrics *)p;
+			if(fp->name==0)
+				continue;
+			if( memcmp(gm, fp->glyphs, sizeof gm) )
+				continue;
+
+			/* OK, looks like it, see if we can match it to any name */
+			n= fp->name & PAGEMASK;
+			for(i=0; i<nfonts; i++) {
+				for(j=0; j<o[i].noff; j++)
+					if( n==(o[i].off[j] & PAGEMASK) )  {
+						zerooff[nzeroes]= pos + (p-bf);
+						nameaddr[nzeroes]= fp->name;
+						zeroid[nzeroes]=i;
+						o[i].nz++;
+						fprintf(stderr, "matched %s at 0x%lx\n", 
+							font[i].nsname, (long) zerooff[nzeroes]);
+						nzeroes++;
+						matched[i]++;
+						break;
+					}
+			}
+
+		}
+
+		if(len==0)
+			break;
+
+		memmove(bf, bfend, maxnlen);
+		pos+= (bfend-bf);
+		bfend= (bf+maxnlen);
+	}
+	if(len<0) {
+		sprintf(msg,"nsfix: read %s",fn);
+		perror(msg);
+		exit(1);
+	}
+	fprintf(stderr,"---\n");
+
+	/* make sure that all the fonts got one match */
+	k=0; /* flag: have non-matched fonts */ n=0; /* flag: have ambiguities */
+	for(i=0; i<nfonts; i++)
+		if(matched[i]==0)
+			k=1;
+		else if(matched[i]>1)
+			n=1;
+
+	if(k) {
+		fprintf(stderr,"nsfix: can't find match for some of the fonts\n");
+		fprintf(stderr,"nsfix: maybe wrong byte order, aborting\n");
+		exit(1);
+	}
+	if(n) {
+		fprintf(stderr,"nsfix: got multiple matches for some of the fonts\n");
+		fprintf(stderr,"nsfix: can't resolve, aborting\n");
+		exit(1);
+	}
+
+	/* now finally write the updated tables */
+	for(i=0; i<nzeroes; i++) {
+		j=zeroid[i];
+		fprintf(stderr, "nsfix: writing table for %s at 0x%lx\n", font[j].nsname,
+			(long)zerooff[i]);
+
+		font[j].metrics.name=nameaddr[i];
+		if( lseek(f, zerooff[i], SEEK_SET)<0 ) {
+			sprintf(msg,"nsfix: seek %s to 0x%lx",fn, (long)zerooff[i] );
+			perror(msg);
+			exit(1);
+		}
+		if( write(f, &font[j].metrics, sizeof font[j].metrics) != sizeof font[j].metrics ) {
+			sprintf(msg,"nsfix: write to %s",fn );
+			perror(msg);
+			exit(1);
+		}
+	}
+
+	close(f);
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/fontsz.cf
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/fontsz.cf	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/fontsz.cf	(revision 2000)
@@ -0,0 +1,8 @@
+fixed-koi8-r	150
+prop-koi8-r	150
+fixed-iso-8859-5	150
+prop-iso-8859-5	150
+fixed-iso-8859-1	150
+prop-iso-8859-1	150
+fixed-x-user-defined	150
+prop-x-user-defined	150
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/notscape
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/notscape	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/notscape	(revision 2000)
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+NDIR=$HOME/.netscape
+PFILE=$NDIR/preferences.js
+CFFILE=$NDIR/fontsz.cf
+TMPFILE=$NDIR/fontsz.sed
+
+die() {
+	echo "notscape: can't $*" >&2
+	exit 1
+}
+
+[ -r $CFFILE ] && {
+awk '{ printf("/intl.font_spec_list/s/-[^-]*-\\([^-]*\\)-%s,/-%s-\\1-%s,/\n", \
+	$1, $2, $1); }' <$CFFILE >$TMPFILE
+
+cp $PFILE $PFILE.old || die "save old pref file"
+sed -f $TMPFILE <$PFILE.old >$PFILE.new || die "create new pref file"
+[ -s $PFILE.new ] || die "create new pref file"
+
+mv $PFILE.new $PFILE || die "install new pref file"
+
+}
+
+exec netscape -no-about-splash "$@"
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/Makefile
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/Makefile	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/Makefile	(revision 2000)
@@ -0,0 +1,5 @@
+nsfix: nsfix.c
+	$(CC) $(CFLAGS) -o nsfix nsfix.c $(LDFLAGS)
+
+clean:
+	rm -f *.o core *.core core.* nsfix
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/README
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/README	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/README	(revision 2000)
@@ -0,0 +1,180 @@
+Installing the fonts in Netscape Navigator
+
+by Sergey Babkin 
+<babkin@bellatlantic.net>, <sab123@hotmail.com>
+
+This is a collection of supplements to Netscape 4.x on
+Unix. Probably they will also work with Netscape 3.x,
+possilby with minor modifications.
+
+  Makefile
+  nsfix.c
+  psfonts.cf
+
+This is a program that allows to substitute the font metrics
+of any PostScript font in Netscape. 
+
+When Netscape prints the files to PostScript format it uses a 
+built-in table of character widths. It prints all the fixed-width 
+characters in the typeface "Courier" and all the variable-width 
+characters in the typeface "Times". And if the PostScript printer
+has these fonts by Adobe then everything goes fine because
+the tables inside Netscape are generated from the Adobe fonts.
+But if the fonts are different (say, those supplied with Ghostscripts
+or the fonts with non-latin characters) then the result is quite
+ugly. This program allows to replace the width tables inside
+the Netscape executable with the tables for any given font.
+The only problem is that Netscape can hold only one set of tables
+at once. So if you want to print with different fonts (say,
+for different languages or encodings) you will have to make
+multiple copies of the executable, tune each of them for its
+font and then run them separately.
+
+I tried to make the program as machine-independent as possible.
+But because it patches the binary files it still has the dependencies
+on hardware. The default version as supplied was designed for
+Intel x86 machines but it should work OK on any machine
+with 32-bit CPU and 4Kbyte (or less) page size. If it can't
+find the tables matching the font names on some other architecture
+the first thing to try would be reduce the `PAGEBITS' definition
+in the source code. On the machines with non-page-aligned structure
+of executables it won't work at all. I don't know whether would
+it work on the 64-bit machines. This may depend on whether the
+Netscape executable was compiled in 32-bit or 64-bit mode. For
+the 64-bit executables it may be neccessary to change the definition
+of the type `tptr' to an 8-byte integer type (probably `long'
+or `long long'). Also must be re-compiled for patching of the 
+Netscape binary for each particular machine architecture because
+it assumes the byte order of the current machine.
+
+It might be possible to create a program that would patch
+a running Netscape binary on the fly, that would allow
+changing the printing fonts as neccessary when Netscape is
+running. But this would be even more platform-dependent,
+so I don't feel any enthusiasm about doing that.
+
+I have tested the program on the Intel machines, Netscape
+4.08 and 4.7, OS FreeBSD (both a.out and ELF formats of the
+Netscape binary) and UnixWare.
+
+After all these scary issues are resolved the compiling
+is easy: just run `make'.
+
+To command to patch the Netscape is:
+  ./nsfix <netscape-binary> <config-file>
+
+Please make a copy of the original Netscape binary before
+patching in case anything goes wrong. Patch the copy, test
+that it works OK and only then install it. The configuration
+file describes the fonts that are to be used. An example
+is provided in the file psfonts.cf.
+
+Each line in the configuration file consists of 4
+columns:
+
+<PS_font_name> <font_base_file> <suffix_afm> <suffix_font>
+
+For example, the following line from my configuration file:
+
+Courier /usr/lib/X11/fonts/ttf/cokoi8n.koi8-r .afm .pfa
+
+says that the font `Courier' will be replaced with the
+font taken from the file `/usr/lib/X11/fonts/ttf/cokoi8n.koi8-r.pfa'
+and the metrics for that font will be taken from the file
+`/usr/lib/X11/fonts/ttf/cokoi8n.koi8-r.afm' .
+
+One more caveat: the new font must have a proper encoding
+table. Some fonts contain characters for multiple encodings
+hoping that the program wil re-encode them as neccessary.
+This won't work in this case, only the primary encoding table
+of the font will be used.
+
+  nsfilter
+  nsprint
+  psfonts.cf
+
+These are the filters for printing from Netscape.
+
+Changing the metrics is not the end of the story. This will
+provide proper placement of the characters but not the
+characters themselves. There are a few ways to provide
+the characters:
+
+First, if you use GhostScript you may configure proper
+aliases in the GhostScript configuration file. We will
+consider this variant trivial and won't discuss it furter
+except for one caveat: Netscape tries to re-encode the
+fonts per the ISO Latin-1 encoding. If the primary encoding
+of the font is different this cause unexpected effects.
+So you still may consider using the filters (at least in a
+simplified form) to solve this problem.
+
+Second, load the fonts right into your printer. This is
+very much like configuring GhostScript.
+
+Third, use the provided filters. The script `nsfilter'
+reads the output of Netscape on its standard input and
+puts the result to its standard output. It uses the same
+configuration file `psfonts.cf' as `nsfix'. First it
+looks for the configuration file in the user's home
+directory ($HOME/.netscape/psfonts.cf) and if the
+file it not there then the second guess is the system-wide
+configuration file /usr/local/etc/psfonts.cf. The
+script inserts the fonts into the output and also
+removes the Netscape's experiments with the encodings.
+
+`nsfilter' is generally intended to be ran by user, not by the 
+printing subsystem. The reason is that the user may have
+changed fonts in his Netscape and the printing subsystem
+would have no way to access user's configuration file.
+But if all the users are using the same fonts then it
+may be incorporated into the printing subsystem and use
+the system-wide configuration file.
+
+The script `nsprint' is purely for convenience, to type it
+as a printing command in the Netscape printing window.
+It just pipelines the data through `nsfilter' to the
+printing program which also gets all the arguments. Please 
+note that the SystemV-style and BSD-style systems use different
+printing programs (although they commonly provide compatibility
+with the other style too). The script tries to guess the
+type of system and use its native print program, `lp' or
+`lpr'. But in case it guesses wrong you may want
+to change this in the script.  Also if the printer does not support
+PostScript directly this script may be a good place to
+insert a call to GhostScript.
+
+  notscape
+  fontsz.cf
+
+Netscape on Unix has a very annoying "feature", it does
+not remember the desired base size of the scalable screen
+fonts and always resets it to 12.0 points. Even if the size
+is changed manually in its preferences file, Netscape
+forgets it after it exits. 
+
+So my solution was to write a program which would change
+the size to my favorite one every time right before
+starting Netscape. `notscape' is exactly such a program,
+it sets the font sizes an then transparently executes 
+netscape. It takes the font sizes from the file
+`$HOME/.netscape/fontsz.cf' . An example of such file
+is provided. The format of the file is quite self-explanatory,
+for example the lines
+
+fixed-koi8-r	140
+prop-koi8-r	150
+
+mean "set the size of the fixed-width screen font in the 
+encoding koi8-r to 14.0 points; set the size of the proportional 
+(variable-width) font in the encoding koi8-r to 15.0 points".
+
+
+  nspr
+by Zvezdan Petkovic
+
+To print from Netscape, I usually print to the Postscript file first.
+Then I use this small script to change the names of Times and Courier fonts
+in the file and remove `/Encoding' lines.  After that the file can be
+sent to printer.
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/nsprint
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/nsprint	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/netscape/nsprint	(revision 2000)
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+if uname -s | grep -i bsd >/dev/null
+then
+	LPR=lpr
+else
+	LPR=lp
+fi
+
+nsfilter | $LPR "$@"
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/X11/README.html
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/X11/README.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/X11/README.html	(revision 2000)
@@ -0,0 +1,41 @@
+<HTML>
+<HEAD>
+<TITLE>
+Recommended patches for the X11 font library
+</TITLE>
+</HEAD>
+<BODY>
+<H2>
+Recommended patches for the X11 font library
+</H2>
+
+by Sergey Babkin 
+&lt;babkin@bellatlantic.net&gt;, &lt;sab123@hotmail.com&gt;
+<p>
+
+These are patches for XFree86 versions 3.3.4 and 3.9
+to fix a few known problems with big Type1 fonts and
+with strange handling of the standard stem width table.
+The patch for XFree86 3.3.4 probably may be easily
+installed on any other distribution of X11.
+They are supposed to be installed in the subdirectory
+<br>
+
+&nbsp;&nbsp;<tt>xc/lib/font/Type1</tt>
+<br>
+
+of the X11 source tree and after that the font library, 
+font server and X server should be rebuilt.
+<p>
+
+Sorry that the description has so little details but if
+you know how to build X11 then this is enough, otherwise
+any more details won't help much.
+<p>
+
+The patches have been submitted to the XFree86 project,
+hope they will be included in some next release of XFree86
+and X11.
+<p>
+</BODY>
+</HTML>
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/X11/t1-xf86.334.patch
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/X11/t1-xf86.334.patch	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/X11/t1-xf86.334.patch	(revision 2000)
@@ -0,0 +1,199 @@
+*** fontfcn.c	2000/01/02 18:55:56	1.1
+--- fontfcn.c	2000/01/02 19:00:17
+***************
+*** 33,38 ****
+--- 33,39 ----
+  #include <string.h>
+  #include "t1imager.h"
+  #include "util.h"
++ #include "t1stdio.h"
+  #include "fontfcn.h"
+  #include "fontmisc.h"
+   
+***************
+*** 117,132 ****
+    resetFont(env);
+    /* This will load the font into the FontP */
+    rcode = scan_font(FontP);
+!   if (rcode == SCAN_OUT_OF_MEMORY) {
+      /* free the memory and start again */
+      xfree(vm_base);
+      if (!(initFont(vm_size * 2))) {
+        /* we are really out of memory */
+        return(SCAN_OUT_OF_MEMORY);
+        }
+      resetFont(env);
+      rcode = scan_font(FontP);
+-     /* only double the memory once, then report error */
+    }
+    return(rcode);
+  }
+--- 118,151 ----
+    resetFont(env);
+    /* This will load the font into the FontP */
+    rcode = scan_font(FontP);
+!   if (rcode != SCAN_OUT_OF_MEMORY) 
+!     return rcode;
+! 
+!   if (T1FileSize > VM_SIZE) {
+!     /* use the file size as estimation */
+! 
+      /* free the memory and start again */
+      xfree(vm_base);
++     if (!(initFont(T1FileSize))) {
++ 	/* we are really out of memory */
++ 	return(SCAN_OUT_OF_MEMORY);
++     }
++     resetFont(env);
++     rcode = scan_font(FontP);
++     if (rcode != SCAN_OUT_OF_MEMORY) 
++       return rcode;
++   }
++ 
++   /* if still not enough, increase up to maximum */
++   while (rcode == SCAN_OUT_OF_MEMORY
++   && vm_size <= VM_SIZE_MAX/2 ) {
++     xfree(vm_base);
+      if (!(initFont(vm_size * 2))) {
+        /* we are really out of memory */
+        return(SCAN_OUT_OF_MEMORY);
+        }
+      resetFont(env);
+      rcode = scan_font(FontP);
+    }
+    return(rcode);
+  }
+*** paths.c	2000/01/02 18:55:56	1.1
+--- paths.c	2000/01/02 18:56:27
+***************
+*** 584,590 ****
+                 CONCAT(before, r);
+                 r = before;
+         }
+!        else
+                 r->context = after->context;
+         if (after != NULL)
+                 CONCAT(r, after);
+--- 584,590 ----
+                 CONCAT(before, r);
+                 r = before;
+         }
+!        else if (after != NULL)
+                 r->context = after->context;
+         if (after != NULL)
+                 CONCAT(r, after);
+*** scanfont.c	2000/01/02 18:55:56	1.1
+--- scanfont.c	2000/01/02 18:56:26
+***************
+*** 1383,1388 ****
+--- 1383,1390 ----
+      /* point to name and search for leading blanks */
+      nameP= FontP->FontFileName.data.nameP;
+      namelen  = FontP->FontFileName.len;
++     if (namelen > (128-1) ) /* prevent getting out of filename[] */
++ 	namelen = (128-1);
+      while (nameP[0] == ' ') {
+          nameP++;
+          namelen--;
+*** t1io.c	2000/01/02 18:55:56	1.1
+--- t1io.c	2000/01/02 18:56:32
+***************
+*** 54,59 ****
+--- 54,62 ----
+  /* Our single FILE structure and buffer for this package */
+  STATIC F_FILE TheFile;
+  STATIC unsigned char TheBuffer[F_BUFSIZ];
++ 
++ /* the size of the file we read */
++ int T1FileSize;
+   
+  /* Our routines */
+  F_FILE *T1Open(), *T1Eexec();
+***************
+*** 87,92 ****
+--- 90,96 ----
+    of->flags = 0;
+    of->error = 0;
+    haveextrach = 0;
++   T1FileSize = 0;
+    return &TheFile;
+  } /* end Open */
+   
+***************
+*** 165,171 ****
+--- 169,181 ----
+  int T1Close(f)       /* Close the file */
+    F_FILE *f;         /* Stream descriptor */
+  {
++   int rc;
++ 
+    if (f->b_base == NULL) return 0;  /* already closed */
++ 
++   while ( (rc = read(f->fd, f->b_base, F_BUFSIZ)) >0)
++ 	T1FileSize += rc; /* count the rest of the file */
++ 
+    f->b_base = NULL;  /* no valid stream */
+    return close(f->fd);
+  } /* end Close */
+***************
+*** 289,294 ****
+--- 299,305 ----
+      }
+    }
+    f->b_ptr = f->b_base;
++   T1FileSize += rc; /* remember how many bytes we have */
+    if (Decrypt) rc = T1Decrypt(f->b_base, rc);
+    return rc;
+  } /* end Fill */
+*** type1.c	2000/01/02 18:55:56	1.1
+--- type1.c	2000/01/02 18:56:27
+***************
+*** 365,378 ****
+    /* ADJUST STEM WIDTHS */
+    /**********************/
+   
+!   widthdiff = 0.0;
+   
+    /* Find standard stem with smallest width difference from this stem */
+    if (stems[stemno].vertical) { /* vertical stem */
+      if (blues->StdVW != 0)      /* there is an entry for StdVW */
+        widthdiff = blues->StdVW - stemwidth;
+      for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */
+!       if (blues->StemSnapV[i] - stemwidth < widthdiff)
+          /* this standard width is the best match so far for this stem */
+          widthdiff = blues->StemSnapV[i] - stemwidth;
+      }
+--- 365,380 ----
+    /* ADJUST STEM WIDTHS */
+    /**********************/
+   
+!   /* a big value to not compete with StemSnap */
+!   /* if there is no StemSnap it will be caught later */
+!   widthdiff = onepixel*2; 
+   
+    /* Find standard stem with smallest width difference from this stem */
+    if (stems[stemno].vertical) { /* vertical stem */
+      if (blues->StdVW != 0)      /* there is an entry for StdVW */
+        widthdiff = blues->StdVW - stemwidth;
+      for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */
+!       if ( FABS(blues->StemSnapV[i] - stemwidth) < FABS(widthdiff) )
+          /* this standard width is the best match so far for this stem */
+          widthdiff = blues->StemSnapV[i] - stemwidth;
+      }
+***************
+*** 380,386 ****
+      if (blues->StdHW != 0)      /* there is an entry for StdHW */
+        widthdiff = blues->StdHW - stemwidth;
+      for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */
+!       if (blues->StemSnapH[i] - stemwidth < widthdiff)
+          /* this standard width is the best match so far for this stem */
+          widthdiff = blues->StemSnapH[i] - stemwidth;
+      }
+--- 382,388 ----
+      if (blues->StdHW != 0)      /* there is an entry for StdHW */
+        widthdiff = blues->StdHW - stemwidth;
+      for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */
+!       if ( FABS(blues->StemSnapH[i] - stemwidth) < FABS(widthdiff) )
+          /* this standard width is the best match so far for this stem */
+          widthdiff = blues->StemSnapH[i] - stemwidth;
+      }
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/X11/t1-xf86.39.patch
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/X11/t1-xf86.39.patch	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/X11/t1-xf86.39.patch	(revision 2000)
@@ -0,0 +1,252 @@
+*** scanfont.c	1999/12/27 00:34:02	1.1
+--- scanfont.c	1999/12/27 00:35:34
+***************
+*** 2234,2239 ****
+--- 2234,2241 ----
+      /* point to name and search for leading blanks */
+      nameP= FontP->FontFileName.data.nameP;
+      namelen  = FontP->FontFileName.len;
++     if (namelen > (128-1) ) /* prevent getting out of filename[] */
++ 	namelen = (128-1);
+      while (nameP[0] == ' ') {
+          nameP++;
+          namelen--;
+*** paths.c	1999/12/27 00:37:01	1.1
+--- paths.c	1999/12/27 00:37:43
+***************
+*** 583,589 ****
+                 CONCAT(before, r);
+                 r = before;
+         }
+!        else
+                 r->context = after->context;
+         if (after != NULL)
+                 CONCAT(r, after);
+--- 583,589 ----
+                 CONCAT(before, r);
+                 r = before;
+         }
+!        else if (after != NULL)
+                 r->context = after->context;
+         if (after != NULL)
+                 CONCAT(r, after);
+*** type1.c	1999/12/27 00:38:16	1.1
+--- type1.c	1999/12/27 01:08:02
+***************
+*** 399,412 ****
+    /* ADJUST STEM WIDTHS */
+    /**********************/
+   
+!   widthdiff = 0.0;
+   
+    /* Find standard stem with smallest width difference from this stem */
+    if (stems[stemno].vertical) { /* vertical stem */
+      if (blues->StdVW != 0)      /* there is an entry for StdVW */
+        widthdiff = blues->StdVW - stemwidth;
+      for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */
+!       if (blues->StemSnapV[i] - stemwidth < widthdiff)
+          /* this standard width is the best match so far for this stem */
+          widthdiff = blues->StemSnapV[i] - stemwidth;
+      }
+--- 399,414 ----
+    /* ADJUST STEM WIDTHS */
+    /**********************/
+   
+!   /* a big value to not compete with StemSnap */
+!   /* if there is no StemSnap it will be caught later */
+!   widthdiff = onepixel*2; 
+   
+    /* Find standard stem with smallest width difference from this stem */
+    if (stems[stemno].vertical) { /* vertical stem */
+      if (blues->StdVW != 0)      /* there is an entry for StdVW */
+        widthdiff = blues->StdVW - stemwidth;
+      for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */
+!       if ( FABS(blues->StemSnapV[i] - stemwidth) < FABS(widthdiff) )
+          /* this standard width is the best match so far for this stem */
+          widthdiff = blues->StemSnapV[i] - stemwidth;
+      }
+***************
+*** 414,420 ****
+      if (blues->StdHW != 0)      /* there is an entry for StdHW */
+        widthdiff = blues->StdHW - stemwidth;
+      for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */
+!       if (blues->StemSnapH[i] - stemwidth < widthdiff)
+          /* this standard width is the best match so far for this stem */
+          widthdiff = blues->StemSnapH[i] - stemwidth;
+      }
+--- 416,422 ----
+      if (blues->StdHW != 0)      /* there is an entry for StdHW */
+        widthdiff = blues->StdHW - stemwidth;
+      for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */
+!       if ( FABS(blues->StemSnapH[i] - stemwidth) < FABS(widthdiff) )
+          /* this standard width is the best match so far for this stem */
+          widthdiff = blues->StemSnapH[i] - stemwidth;
+      }
+*** t1io.c	2000/01/01 00:41:44	1.1
+--- t1io.c	2000/01/01 01:23:38
+***************
+*** 78,83 ****
+--- 78,86 ----
+  /* Our single FILE structure and buffer for this package */
+  STATIC F_FILE TheFile;
+  STATIC unsigned char TheBuffer[F_BUFSIZ];
++ 
++ /* the size of the file we read */
++ int T1FileSize;
+   
+  /* Our routines */
+  F_FILE *T1Open(), *T1Eexec();
+***************
+*** 118,123 ****
+--- 121,127 ----
+    of->flags = 0;
+    of->error = 0;
+    haveextrach = 0;
++   T1FileSize = 0;
+    return &TheFile;
+  } /* end Open */
+   
+***************
+*** 196,202 ****
+--- 200,212 ----
+  int T1Close(f)       /* Close the file */
+    F_FILE *f;         /* Stream descriptor */
+  {
++   int rc;
++ 
+    if (f->b_base == NULL) return 0;  /* already closed */
++ 
++   while ( (rc = read(f->fd, f->b_base, F_BUFSIZ)) >0)
++ 	T1FileSize += rc; /* count the rest of the file */
++ 
+    f->b_base = NULL;  /* no valid stream */
+    return close(f->fd);
+  } /* end Close */
+***************
+*** 381,386 ****
+--- 391,397 ----
+      }
+    }
+    f->b_ptr = f->b_base;
++   T1FileSize += rc; /* remember how many bytes we have */
+    if (Decrypt) rc = T1Decrypt(f->b_base, rc);
+    return rc;
+  } /* end Fill */
+*** t1stdio.h	2000/01/01 00:43:38	1.1
+--- t1stdio.h	2000/01/01 01:24:19
+***************
+*** 73,78 ****
+--- 73,79 ----
+  
+  extern FILE *T1Open(), *T1eexec();
+  extern int T1Close(), T1Ungetc(), T1Read();
++ extern int T1FileSize;
+   
+  #undef fclose
+  #undef fopen
+*** fontfcn.c	2000/01/01 00:07:54	1.1
+--- fontfcn.c	2000/01/01 01:36:02
+***************
+*** 57,62 ****
+--- 57,63 ----
+  #endif
+  #include "t1imager.h"
+  #include "util.h"
++ #include "t1stdio.h"
+  #ifdef BUILDCID
+  #include "range.h"
+  #include "fontmisc.h"
+***************
+*** 300,333 ****
+    resetFont(env);
+    /* This will load the font into the FontP */
+    rcode = scan_font(FontP);
+!   if (rcode == SCAN_OUT_OF_MEMORY) {
+      /* free the memory and start again */
+  #ifdef BUILDCID
+      /* xfree(vm_base); */
+  #else
+      xfree(vm_base);
+  #endif
+      if (!(initFont(vm_size * 2))) {
+        /* we are really out of memory */
+        return(SCAN_OUT_OF_MEMORY);
+        }
+      resetFont(env);
+      rcode = scan_font(FontP);
+- #ifdef BUILDCID
+-     /* only double the memory twice, then report error */
+-     if (rcode == SCAN_OUT_OF_MEMORY) {
+-       /* free the memory and start again */
+-       /* xfree(vm_base) */
+-       if (!(initFont(vm_size * 2))) {
+-         /* we are really out of memory */
+-         return(SCAN_OUT_OF_MEMORY);
+-       }
+-       resetFont(env);
+-       rcode = scan_font(FontP);
+-     }
+- #else
+-     /* only double the memory once, then report error */
+- #endif
+    }
+    return(rcode);
+  }
+--- 301,342 ----
+    resetFont(env);
+    /* This will load the font into the FontP */
+    rcode = scan_font(FontP);
+!   if (rcode != SCAN_OUT_OF_MEMORY) 
+!     return rcode;
+! 
+!   if (T1FileSize > VM_SIZE) {
+!     /* use the file size as estimation */
+! 
+      /* free the memory and start again */
+  #ifdef BUILDCID
+      /* xfree(vm_base); */
+  #else
+      xfree(vm_base);
+  #endif
++     if (!(initFont(T1FileSize))) {
++ 	/* we are really out of memory */
++ 	return(SCAN_OUT_OF_MEMORY);
++ 	}
++     resetFont(env);
++     rcode = scan_font(FontP);
++     if (rcode != SCAN_OUT_OF_MEMORY) 
++       return rcode;
++   }
++ 
++   /* if still not enough, increase up to maximum */
++   while (rcode == SCAN_OUT_OF_MEMORY
++   && vm_size <= VM_SIZE_MAX/2 ) {
++ #ifdef BUILDCID
++     /* xfree(vm_base); */
++ #else
++     xfree(vm_base);
++ #endif
+      if (!(initFont(vm_size * 2))) {
+        /* we are really out of memory */
+        return(SCAN_OUT_OF_MEMORY);
+        }
+      resetFont(env);
+      rcode = scan_font(FontP);
+    }
+    return(rcode);
+  }
+*** util.h	2000/01/01 00:40:11	1.1
+--- util.h	2000/01/01 01:29:18
+***************
+*** 83,88 ****
+--- 83,92 ----
+  #else
+  #define VM_SIZE               (50*1024)
+  #endif
++ 
++ /* this is the maximal permitted memory size */
++ #define VM_SIZE_MAX           (1024*1024)
++ 
+  /***================================================================***/
+   
+  #ifndef MIN
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/X11/README
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/X11/README	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/X11/README	(revision 2000)
@@ -0,0 +1,24 @@
+Recommended patches for the X11 font library
+
+by Sergey Babkin 
+<babkin@bellatlantic.net>, <sab123@hotmail.com>
+
+These are patches for XFree86 versions 3.3.4 and 3.9
+to fix a few known problems with big Type1 fonts and
+with strange handling of the standard stem width table.
+The patch for XFree86 3.3.4 probably may be easily
+installed on any other distribution of X11.
+They are supposed to be installed in the subdirectory
+
+  xc/lib/font/Type1
+
+of the X11 source tree and after that the font library, 
+font server and X server should be rebuilt.
+
+Sorry that the description has so little details but if
+you know how to build X11 then this is enough, otherwise
+any more details won't help much.
+
+The patches have been submitted to the XFree86 project,
+hope they will be included in some next release of XFree86
+and X11.
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/RPM/ttf2pt1.spec.src
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/RPM/ttf2pt1.spec.src	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/RPM/ttf2pt1.spec.src	(revision 2000)
@@ -0,0 +1,40 @@
+Summary: TrueType to Adobe Type 1 font converter
+Name: ttf2pt1
+Version: XXX
+Release: 1jv
+Source: %{name}-%{version}.tgz
+Copyright: Distributable
+Group: Utilities/Printing
+BuildRoot: /var/tmp/ttf2pt1
+
+%description
+ * True Type Font to Adobe Type 1 font converter 
+ * By Mark Heath <mheath@netspace.net.au> 
+ * Based on ttf2pfa by Andrew Weeks <ccsaw@bath.ac.uk> 
+ * With help from Frank M. Siegert <fms@this.net> 
+
+%prep 
+%setup
+
+%build
+make all
+
+%install
+rm -fr $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/usr/local/bin
+mkdir -p $RPM_BUILD_ROOT/usr/local/share/%{name}
+mkdir -p $RPM_BUILD_ROOT/usr/local/doc
+
+install -s -m 0555 ttf2pt1 $RPM_BUILD_ROOT/usr/local/bin
+install -m 0555 scripts/* $RPM_BUILD_ROOT/usr/local/share/%{name}
+chmod 0444 $RPM_BUILD_ROOT/usr/local/share/%{name}/convert.cfg.sample
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(644, root, root, 755)
+%doc README README.html INSTALL INSTALL.html
+/usr/local/bin/ttf2pt1
+/usr/local/share/%{name}
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/RPM/Makefile
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/RPM/Makefile	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/RPM/Makefile	(revision 2000)
@@ -0,0 +1,279 @@
+
+# This file should be configured before running `make'.
+# Uncomment or change the values that are relevant for your OS.
+
+# The preferred C compiler (by default use the OS-specific default value).
+# For BSD/OS, FreeBSD, Linux (all flavors), NetBSD, OpenBSD the default
+# compiler is GNU C. 
+# (Note please the politically correct ordering by alphabet ! :-)
+#
+# Use GNU C even if it's not the default compiler
+#
+CC=gcc
+#
+# Use the standard ANSI C compiler on HP-UX even if it's not default
+#
+#CC=c89
+
+#
+# The system-dependent flags for the C compiler
+#
+# Default
+
+CFLAGS_SYS= -O2 -D_GNU_SOURCE
+
+# For GNU C
+#
+CFLAGS_SYS= -O2 -D_GNU_SOURCE
+#
+# For GNU C with long options support library (Linux etc.)
+#
+CFLAGS_SYS= -O2 -D_GNU_SOURCE
+#
+# For GNU C on HP-UX/PA-RISC 1.1
+#
+#CFLAGS_SYS= -O2 -Wa,-w
+#
+# For the standard ANSI C on HP-UX
+#
+#CFLAGS_SYS= +O2 -D_HPUX_SOURCE
+
+#
+# The system-dependent libraries
+#
+# Defalut (for the BSD-style OSes)
+
+LIBS_SYS= -lm
+
+# For SystemV (such as SCO, UnixWare, Solaris, but _NOT_ Linux or HP-UX)
+#
+#LIBS_SYS= -lm -lsocket
+
+#
+# The flags for C compiler for the FreeType-2 library (disabled by default). 
+# This WON'T BUILD with FT2-beta8, use the FreeType release 2.0.4
+# http://download.sourceforge.net/freetype/freetype-2.0.4.tar.gz
+
+CFLAGS_FT= 
+
+# To enable use of the FreeType-2 library
+# (if the include and lib directory do not match your installation,
+# modify them), also uncomment LIBS_FT
+#
+#CFLAGS_FT = -DUSE_FREETYPE -I/usr/include/freetype2 -I/usr/include
+
+# 
+# The FreeType-2 library flags (disabled by default)
+
+LIBS_FT=
+
+# To enable use of the FreeType-2 library
+# (if the include and lib directory do not match your installation,
+# modify them), also uncomment CFLAGS_FT
+#
+#LIBS_FT= -L/usr/lib -lfreetype
+
+#
+# The flags for C compiler for the Autotrace library (disabled by default). 
+# USE OF THIS FEATURE IS STRONGLY DISCOURAGED, THE BUILT-IN TRACING
+# (AKA VECTORIZATION) PROVIDES MUCH BETTER RESULTS.
+# The tested version is 0.29a (and the fonts produced with it are
+# absolutely not usable).
+# http://download.sourceforge.net/autotrace/autotrace-0.29.tar.gz
+
+CFLAGS_AT= 
+
+# To enable use of the Autotrace library
+# (if the include and lib directory do not match your installation,
+# modify them), also uncomment LIBS_AT
+#
+#CFLAGS_AT = -DUSE_AUTOTRACE -I/usr/local/include
+
+# 
+# The Autotrace library flags (disabled by default)
+
+LIBS_AT=
+
+# To enable use of the Autotrace library
+# (if the include and lib directory do not match your installation,
+# modify them), also uncomment CFLAGS_AT
+#
+#LIBS_AT= -L/usr/local/lib -lautotrace
+
+#
+# Preference of front-ends if multiple parsers match a file
+# (by default the build-in front-end takes preference over FreeType)
+
+CFLAGS_PREF=
+
+# To prefer FreeType (if enabled):
+#
+#CFLAGS_PREF= -DPREFER_FREETYPE
+
+# Uncomment the second line to not compile t1asm into ttf2pt1
+CFLAGS_EXTT1ASM=
+#CFLAGS_EXTT1ASM= -DEXTERNAL_T1ASM
+
+CFLAGS= $(CFLAGS_SYS) $(CFLAGS_FT) $(CFLAGS_AT) $(CFLAGS_PREF)
+LIBS= $(LIBS_SYS) $(LIBS_FT) $(LIBS_AT)
+
+# Installation-related stuff
+# 
+# The base dir for installation and subdirs in it
+INSTDIR = /home/eclecticgeek/apps
+# for binaries
+BINDIR = $(INSTDIR)/bin
+# for binaries of little general interest
+LIBXDIR = $(INSTDIR)/libexec/ttf2pt1
+# for scripts, maps/encodings etc.
+SHAREDIR = $(INSTDIR)/share/ttf2pt1
+MANDIR = $(INSTDIR)/man
+
+# owner and group of installed files
+OWNER = eclecticgeek
+GROUP = pg1755828
+
+# After you have configured the Makefile, comment out the following
+# definition:
+##warning: docs
+##	@echo >&2
+##	@echo "  You have to configure the Makefile before running make!" >&2
+##	@echo "(or if you are lazy and hope that it will work as is run \`make all')">&2
+##	@echo >&2
+#
+DOCS=CHANGES README FONTS FONTS.hpux encodings/README other/README \
+	app/X11/README app/netscape/README app/TeX/README
+
+SUBDIRS = app encodings maps scripts other
+TXTFILES = README* FONTS* CHANGES* COPYRIGHT
+
+MANS1=ttf2pt1.1 ttf2pt1_convert.1 ttf2pt1_x2gs.1
+MANS=$(MANS1) $(MANS5)
+
+all:	t1asm ttf2pt1 docs mans rpm
+
+docs: $(DOCS)
+
+mans: $(MANS) 
+
+clean:
+	rm -f t1asm ttf2pt1 *.o app/RPM/Makefile app/RPM/*.spec *.core core.* core
+	( cd other && make clean; )
+	( cd app/netscape && make clean; )
+
+veryclean: clean
+	rm -f $(DOCS) $(MANS)
+
+rpm: app/RPM/Makefile app/RPM/ttf2pt1.spec
+
+ttf2pt1.1: README.html
+	scripts/html2man . . <README.html
+
+ttf2pt1_convert.1 ttf2pt1_x2gs.1: FONTS.html
+	scripts/html2man . . <FONTS.html
+
+app/RPM/Makefile: Makefile
+#	sed 's/^CFLAGS_SYS.*=.*$$/CFLAGS_SYS= -O2 -D_GNU_SOURCE/;/warning:/,/^$$/s/^/#/' <Makefile >app/RPM/Makefile
+#
+app/RPM/ttf2pt1.spec: app/RPM/ttf2pt1.spec.src version.h
+	sed 's/^Version:.*/Version: '`grep TTF2PT1_VERSION version.h| cut -d\" -f2`'/' <app/RPM/ttf2pt1.spec.src  >$@
+
+t1asm: t1asm.c
+	$(CC) $(CFLAGS) -o t1asm -DSTANDALONE t1asm.c $(LIBS)
+
+ttf2pt1.o: ttf2pt1.c ttf.h pt1.h global.h version.h
+	$(CC) $(CFLAGS) -c ttf2pt1.c
+
+pt1.o: pt1.c ttf.h pt1.h global.h
+	$(CC) $(CFLAGS) -c pt1.c
+
+ttf.o: ttf.c ttf.h pt1.h global.h
+	$(CC) $(CFLAGS) -c ttf.c
+
+ft.o: ft.c pt1.h global.h
+	$(CC) $(CFLAGS) -c ft.c
+
+bdf.o: bdf.c pt1.h global.h
+	$(CC) $(CFLAGS) -c bdf.c
+
+bitmap.o: bitmap.c pt1.h global.h
+	$(CC) $(CFLAGS) -c bitmap.c
+
+runt1asm.o: runt1asm.c global.h
+	$(CC) $(CFLAGS) $(CFLAGS_EXTT1ASM) -c runt1asm.c
+
+ttf2pt1:	ttf2pt1.o pt1.o runt1asm.o ttf.o ft.o bdf.o bitmap.o
+	$(CC) $(CFLAGS) -o ttf2pt1 ttf2pt1.o pt1.o runt1asm.o ttf.o ft.o bdf.o bitmap.o $(LIBS)
+
+CHANGES: CHANGES.html
+	scripts/unhtml <CHANGES.html >CHANGES
+
+README: README.html
+	scripts/unhtml <README.html >README
+
+encodings/README: encodings/README.html
+	scripts/unhtml <encodings/README.html >encodings/README
+
+other/README: other/README.html
+	scripts/unhtml <other/README.html >other/README
+
+app/X11/README: app/X11/README.html
+	scripts/unhtml <app/X11/README.html >app/X11/README
+
+app/netscape/README: app/netscape/README.html
+	scripts/unhtml <app/netscape/README.html >app/netscape/README
+
+app/TeX/README: app/TeX/README.html
+	scripts/unhtml <app/TeX/README.html >app/TeX/README
+
+FONTS: FONTS.html
+	scripts/unhtml <FONTS.html >FONTS
+
+FONTS.hpux: FONTS.hpux.html
+	scripts/unhtml <FONTS.hpux.html >FONTS.hpux
+
+install: all
+	scripts/inst_dir $(BINDIR) $(OWNER) $(GROUP) 0755
+	scripts/inst_dir $(LIBXDIR) $(OWNER) $(GROUP) 0755
+	scripts/inst_dir $(SHAREDIR) $(OWNER) $(GROUP) 0755
+	scripts/inst_dir $(MANDIR)/man1 $(OWNER) $(GROUP) 0755
+	scripts/inst_dir $(MANDIR)/man5 $(OWNER) $(GROUP) 0755
+	cp -R $(TXTFILES) $(SUBDIRS) $(SHAREDIR)
+	chown -R $(OWNER) $(SHAREDIR)
+	chgrp -R $(GROUP) $(SHAREDIR)
+	chmod -R go-w $(SHAREDIR)
+	scripts/inst_file ttf2pt1 $(BINDIR)/ttf2pt1 $(OWNER) $(GROUP) 0755
+	[ -f $(BINDIR)/t1asm ] || scripts/inst_file t1asm $(LIBXDIR)/t1asm $(OWNER) $(GROUP) 0755
+	sed -e 's|^TTF2PT1_BINDIR=$$|TTF2PT1_BINDIR=$(BINDIR)|;' \
+		-e 's|^TTF2PT1_LIBXDIR=$$|TTF2PT1_LIBXDIR=$(LIBXDIR)|;' \
+		-e 's|^TTF2PT1_SHAREDIR=$$|TTF2PT1_SHAREDIR=$(SHAREDIR)|;' <scripts/convert >cvt.tmp
+	scripts/inst_file cvt.tmp $(BINDIR)/ttf2pt1_convert $(OWNER) $(GROUP) 0755
+	scripts/inst_file cvt.tmp $(SHAREDIR)/scripts/convert $(OWNER) $(GROUP) 0755
+	rm cvt.tmp
+	scripts/inst_file scripts/x2gs $(BINDIR)/ttf2pt1_x2gs $(OWNER) $(GROUP) 0755
+	for i in $(MANS1); do { \
+		sed -e 's|TTF2PT1_BINDIR|$(BINDIR)|;' \
+			-e 's|TTF2PT1_LIBXDIR|$(LIBXDIR)|;' \
+			-e 's|TTF2PT1_SHAREDIR|$(SHAREDIR)|;' <$$i >$(MANDIR)/man1/$$i \
+		&& chown $(OWNER) $(MANDIR)/man1/$$i \
+		&& chgrp $(GROUP) $(MANDIR)/man1/$$i \
+		&& chmod 0644 $(MANDIR)/man1/$$i \
+		|| exit 1; \
+	} done
+
+uninstall:
+	rm -f $(BINDIR)/ttf2pt1 $(BINDIR)/ttf2pt1_convert $(BINDIR)/ttf2pt1_x2gs
+	rm -rf $(LIBXDIR)
+	rm -rf $(SHAREDIR)
+	for i in $(MANS1); do { \
+		rm -f $(MANDIR)/man1/$$i $(MANDIR)/man1/$$i.gz; \
+	} done
+
+
+# targets for automatic generation of releases and snapshots
+
+snapshot:
+	scripts/mkrel snapshot
+
+release:
+	scripts/mkrel release
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/RPM/ttf2pt1.spec
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/RPM/ttf2pt1.spec	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/RPM/ttf2pt1.spec	(revision 2000)
@@ -0,0 +1,40 @@
+Summary: TrueType to Adobe Type 1 font converter
+Name: ttf2pt1
+Version: 3.4.4
+Release: 1jv
+Source: %{name}-%{version}.tgz
+Copyright: Distributable
+Group: Utilities/Printing
+BuildRoot: /var/tmp/ttf2pt1
+
+%description
+ * True Type Font to Adobe Type 1 font converter 
+ * By Mark Heath <mheath@netspace.net.au> 
+ * Based on ttf2pfa by Andrew Weeks <ccsaw@bath.ac.uk> 
+ * With help from Frank M. Siegert <fms@this.net> 
+
+%prep 
+%setup
+
+%build
+make all
+
+%install
+rm -fr $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/usr/local/bin
+mkdir -p $RPM_BUILD_ROOT/usr/local/share/%{name}
+mkdir -p $RPM_BUILD_ROOT/usr/local/doc
+
+install -s -m 0555 ttf2pt1 $RPM_BUILD_ROOT/usr/local/bin
+install -m 0555 scripts/* $RPM_BUILD_ROOT/usr/local/share/%{name}
+chmod 0444 $RPM_BUILD_ROOT/usr/local/share/%{name}/convert.cfg.sample
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(644, root, root, 755)
+%doc README README.html INSTALL INSTALL.html
+/usr/local/bin/ttf2pt1
+/usr/local/share/%{name}
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/README.html
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/README.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/README.html	(revision 2000)
@@ -0,0 +1,176 @@
+<HTML>
+<HEAD>
+<TITLE>
+Supplements for True Type to PostScript Type 1 Converter 
+</TITLE>
+</HEAD>
+<BODY>
+<H2>
+Supplements for True Type to PostScript Type 1 Converter 
+</H2>
+
+<! 
+(Do not edit this file, it is generated from README.html!!!)
+>
+
+<h4><tt>bz</tt></h4>
+<!
+--
+>
+
+A small program to draw the Bezier curves on an alphanumeric display.
+The recommended way of uing it is to run it from xterm with "Tiny"
+(if you want higher magnification) or "Unreadable" (if you want
+higher resolution) font and as big window size as possible. The size
+of the window can be obtained by running "<tt>stty -a</tt>". For everything else 
+just "Use the source, Luke!"
+<p>
+
+<h4><tt>cmpf</tt></h4>
+<!
+----
+>
+
+A small program to compare the rendering of two supposedly
+nearly-identical fonts at low resolutions. It requires the
+T1LIB library. This program may be used to compare the
+effect of various options of the converter on the resulting
+fonts. Create two <tt>.pfa</tt> files, one with one set of options,
+another with another set of options, then use this program
+to compare them.
+<p>
+
+<h4><tt>dmpf</tt></h4>
+<!
+----
+>
+
+A small program to dump the bitmaps of all glyphs of the font
+at low pixel sizes, up to 20 pixels. It requires the
+T1LIB library. This program may be used to compare the
+effect of changes in the T1LIB rasterizer and just for visual
+search for rendering anomalies.
+<p>
+
+<h4><tt>lst.pl</tt></h4>
+<!
+------
+>
+
+A simple PERL script that generates an HTML file
+with the full list of all characters in all
+possible styles of the Variable-width and Fixed-width
+fonts. This file is quite convenient to look
+at the converted fonts in Netscape (or other
+graphical browser).
+
+<h4><tt>cntstems.pl</tt></h4>
+<!
+------
+>
+
+A simple PERL script that counts the required hint stack in the
+interpreter to rasterize the glyphs of the font. May be quite
+useful in search for missing glyphs which may be aborted due to
+insufficient stack depth.
+
+<h4><tt>showg</tt></h4>
+<!
+-----
+>
+
+A PERL script that draws the glyphs and their interesting
+metrics (such as coordinates of the dots, hints and blue zones)
+in PostScript. It works only with un-encoded font files generated
+by <tt>ttf2pt1</tt>. The intended use is like:
+<p>
+
+&nbsp;&nbsp;<tt>showg [-c <i>&lt;fontfile.t1a&gt;</i>]...  <i>&lt;fontfile.t1a&gt; &lt;glyph-to-draw&gt;</i>... &gt;file.ps</tt><br>
+&nbsp;&nbsp;<tt>gv file.ps # start the Ghostscript viewer</tt>
+<p>
+
+As you can see, multiple glyphs may be specified. The glyphs may be
+specified in one of three ways:
+<br>
+&nbsp;&nbsp;- as a decimal code (for example, <tt>43</tt> )
+<br>
+&nbsp;&nbsp;- as a glyph name preceded by a slash (for example, <tt>/plus</tt> )
+<br>
+&nbsp;&nbsp;- as a literal character preceded by a dot (for example, <tt>.+</tt> )
+<p>
+
+So for example the following command would draw the same glyph "left
+parenthesis" three times:
+<p>
+
+&nbsp;&nbsp;<tt>showg file.t1a 40 /parenleft .\( >/file.ps</tt>
+<p>
+
+Don't forget that some characters have to be protected from the shell
+by backslash as shown above, or else the shell would try to interpret
+them before passing to the program.
+<p>
+
+One file (given as the first argument) is considered the main file
+but multiple files can be specified with option <b>-c</b> for visual comparison
+of the outlines. The glyphs from the main file are drawn in black
+and supplemented with coordinate grid and sidebars for hints. The
+glyphs from the comparison files are drawn in slightly lighter colors 
+(red, cyan, brown) and no supplemental information is provided for them. 
+Each use of option <b>-c</b> adds one comparison file, this option may be used 
+multiple times. If there are more than 3 comparison files the colors
+repeat cyclically.
+<p>
+
+So for example the following command would draw the same glyph "left
+parenthesis" from three files on the same page:
+<p>
+
+&nbsp;&nbsp;<tt>showg -c fileA.t1a -c fileB.t1a file.t1a .\( >/file.ps</tt>
+<p>
+
+This program is quite valuable it you want to take a close-up view at 
+the font.
+<p>
+
+The outlines are drawn in black, the ends of the curves and
+lines are marked as dots, the first dots of the outlines
+are fatter. The Blue Zones are drawn in light blue. The
+substituted hints are marked in red, the global hints are
+marked in blue. The coordinate grid is drawn in green.
+The stems and the values of coordinates are for convenience
+marked twice, on each size of the picture.
+<p>
+
+<h4><tt>showdf</tt></h4>
+<!
+------
+>
+
+A Perl script to find a list of differing glyphs in two versions of a font
+file (for example, converted with different versions of <tt>ttf2pt1</tt> or
+with different options given to ttf2pt1) and feed this list into the <tt>showg</tt> 
+program for display.  The intended use is like:
+<p>
+
+&nbsp;&nbsp;<tt>showdf <i>&lt;showg-location&gt;</i> <i>&lt;fontfile1.t1a&gt;</i> <i>&lt;fontfile2.t1a&gt;</i> &gt;file.ps</tt><br>
+&nbsp;&nbsp;<tt>gv file.ps # start the Ghostscript viewer</tt>
+<p>
+
+If both <tt>showdf</tt> and <tt>showg</tt> scripts are located in the
+same directory, the command would look like:
+<p>
+
+&nbsp;&nbsp;<tt>./showdf ./showg font1.t1a font2.t1a &gt;file.ps</tt><br>
+<p>
+
+For decent results both font files should be converted from the same original
+font and contain the same glyphs with the same names in the same order. 
+Otherwise most probably all the glyphs will be included, or a failure may
+happen if some glyph is not found in one of the files. It is also a good
+idea to convert the fonts for comparison with hinting disabled, otherwise
+the differences in hinting may trigger the otherwise equal glyphs to be shown.
+<p>
+
+</BODY>
+</HTML>
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/bzscreen.h
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/bzscreen.h	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/bzscreen.h	(revision 2000)
@@ -0,0 +1,40 @@
+/*
+ * see COPYRIGHT
+ */
+
+
+/*
+ * Screen for drawing the Bezier curves in text mode
+ */
+
+struct screen {
+	unsigned physx;
+	unsigned physy;
+	unsigned cols;
+	unsigned rows;
+	unsigned xoff;
+	unsigned yoff;
+	unsigned minx;
+	unsigned miny;
+	char *dots;
+	double xscale;
+	double yscale;
+} screen;
+
+#define screenabsdot(x,y)	(screen.dots[(y)*screen.cols+(x)])
+#define screendot(x,y)	screenabsdot((x)+screen.xoff, (y)+screen.yoff)
+
+/* prototypes */
+double fmin(double a, double b);
+int abs(int x);
+void initscreen(unsigned physx, unsigned physy, 
+	unsigned cols, unsigned rows, unsigned xoff, unsigned yoff, 
+	unsigned minx, unsigned miny, unsigned maxx, unsigned maxy);
+void drawcurve(int mark, int ax,int ay, 
+	int bx,int by, int cx,int cy, int dx,int dy);
+void drawcurvedir(int mark, int ax,int ay, 
+	int bx,int by, int cx,int cy, int dx,int dy);
+void drawdot(int mark, int x, int y);
+void setabsdot(int mark, int x, int y);
+void setfdot(int mark, double x, double y);
+void printscreen(FILE *f);
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/cmpf.c
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/cmpf.c	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/cmpf.c	(revision 2000)
@@ -0,0 +1,67 @@
+/*
+ * see COPYRIGHT
+ */
+
+#include <stdio.h>
+#include <ctype.h>
+#include "t1lib.h"
+
+/*
+ * compare two [ almost the same ] fonts
+ */
+
+#define PROGNAME "cmpf"
+
+#include "bmpfont.h"
+
+
+main(ac, av)
+	int ac;
+	char **av;
+{
+	int fontid1, fontid2;
+	GLYPH *g1, *g2;
+	int chr, size, diff, offset;
+
+	if(ac!=3) {
+		fprintf(stderr,"Use: %s font1 font2\n", PROGNAME);
+		exit(1);
+	}
+
+	chkneg(T1_SetBitmapPad(MYPAD));
+	chkneg(T1_InitLib(NO_LOGFILE|IGNORE_CONFIGFILE|IGNORE_FONTDATABASE));
+	chkneg(fontid1=T1_AddFont(av[1]));
+	chkneg(fontid2=T1_AddFont(av[2]));
+
+
+	resetmap();
+	for(chr=0; chr<256; chr++) {
+		diff=0;
+		for(size=MAXSIZE; size>=MINSIZE; size--) {
+			chknull( g1=T1_CopyGlyph(T1_SetChar( fontid1, chr, (float)size, NULL)) );
+			chknull( g2=T1_CopyGlyph(T1_SetChar( fontid2, chr, (float)size, NULL)) );
+
+			if( cmpglyphs(g1, g2) ) {
+				/* printf("%d %d - diff\n", chr, size); */
+				diff=1;
+				drawdiff(size, g1, g2);
+			} 
+			/*
+			else
+				fprintf(stderr, "%d %d - same\n", chr, size);
+			*/
+
+			chkneg(T1_FreeGlyph(g1));
+			chkneg(T1_FreeGlyph(g2));
+		}
+		if(diff) {
+			printf("*** Difference for %d==0x%x  %c\n", chr, chr,
+				isprint(chr) ? chr : ' ');
+			printmap(stdout);
+			diff=0;
+			resetmap();
+		}
+	}
+
+	printf("All done!\n");
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/dmpf.c
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/dmpf.c	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/dmpf.c	(revision 2000)
@@ -0,0 +1,53 @@
+/*
+ * see COPYRIGHT
+ */
+
+#include <stdio.h>
+#include <ctype.h>
+#include "t1lib.h"
+
+/*
+ * Dump a rasterizarion of the font at small size
+ */
+
+#define PROGNAME "dmpf"
+
+#include "bmpfont.h"
+
+
+main(ac, av)
+	int ac;
+	char **av;
+{
+	int fontid1, fontid2;
+	GLYPH *g1, *g2;
+	int chr, size, diff, offset;
+
+	if(ac!=2) {
+		fprintf(stderr,"Use: %s font\n", PROGNAME);
+		exit(1);
+	}
+
+	chkneg(T1_SetBitmapPad(MYPAD));
+	chkneg(T1_InitLib(NO_LOGFILE|IGNORE_CONFIGFILE|IGNORE_FONTDATABASE));
+	chkneg(fontid1=T1_AddFont(av[1]));
+
+
+	resetmap();
+	for(chr=0; chr<256; chr++) {
+		for(size=MAXSIZE; size>=MINSIZE; size--) {
+			chknull( g1=T1_CopyGlyph(T1_SetChar( fontid1, chr, (float)size, NULL)) );
+
+			drawglyf(size, g1);
+
+			chkneg(T1_FreeGlyph(g1));
+		}
+
+		printf("*** Glyph %d==0x%x  %c\n", chr, chr,
+			isprint(chr) ? chr : ' ');
+		printmap(stdout);
+		resetmap();
+	}
+
+	printf("All done!\n");
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/showg
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/showg	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/showg	(revision 2000)
@@ -0,0 +1,633 @@
+#!/usr/bin/perl
+
+my @cmpfiles;
+
+while($ARGV[0] eq "-c") {
+	shift(@ARGV);
+	push(@cmpfiles, shift(@ARGV));
+}
+
+if( $#ARGV < 1) {
+	die("Usage: $0 [-c file]... file glyph-code...\n");
+}
+
+$fname=shift @ARGV;
+
+# storage for files
+my %fontname;
+my %fbbox;
+my %fblues;
+my %fenc;
+my %frevenc;
+my %fsubrs;
+my %fchars;
+my @cmnbbox; # common bounding box covering all files
+
+@cmnbbox = (100, 100, 100, 100);
+
+# read all files into memory
+for $f (@cmpfiles, $fname) {
+	open(FILE, "<$f") or die("no such file $f");
+	while(<FILE>) {
+		if(/FontBBox\s+\{\s*(.*)\s*}/) {
+			@bbox=split(/\s+/, $1);
+			push(@{$fbbox{$f}}, @bbox);
+			if($bbox[0] < $cmnbbox[0]) {
+				$cmnbbox[0] = $bbox[0];
+			}
+			if($bbox[1] < $cmnbbox[1]) {
+				$cmnbbox[1] = $bbox[1];
+			}
+			if($bbox[2] > $cmnbbox[2]) {
+				$cmnbbox[2] = $bbox[2];
+			}
+			if($bbox[3] > $cmnbbox[3]) {
+				$cmnbbox[3] = $bbox[3];
+			}
+		} elsif( /BlueValues\s+\[\s*(.*)\s*\]/ || /OtherBlues\s+\[\s*(.*)\s*\]/ ) {
+			@blues=split(/\s+/, $1);
+			push(@{$fblues{$f}}, @blues);
+		} elsif( /^dup\s+(\d+)\s+\/(\S+)\s+put/ ) {
+			$fenc{$f}{$1} = $2;
+			if( ! defined $frevenc{$f}{$2} ) {
+				$frevenc{$f}{$2} = $1;
+			}
+		} elsif( /^dup\s+(\d+)\s+\{\s*$/ ) {
+			$key = $1;
+			$bf = $_;
+			while(<FILE>) {
+				$bf .= $_;
+				if( /\}\s+NP/ ) {
+					last;
+				}
+			}
+			$fsubrs{$f}{$key} = $bf;
+		} elsif( /^\/(\S+)\s+\{\s*$/ ) {
+			$key = $1;
+			$bf = $_;
+			while(<FILE>) {
+				$bf .= $_;
+				if( /endchar/ ) {
+					last;
+				}
+			}
+			$fchars{$f}{$key} = $bf;
+		} elsif( /^\/FontName\s+(\S+)/ ) {
+			$fontname{$f} = $1;
+		}
+	}
+	close(FILE);
+}
+
+######################## Prolog ###################################
+
+print("%%!PS-Adobe-1.0
+%%DocumentNeededResources: font Courier
+%%Pages: (atend)
+%%EndComments
+%%BeginProlog
+/cmpfcolorarray [ 
+	[ 1 0.2 0.2 ] % slightly lighter red
+	[ 0 0.7 0.7 ] % cyan 
+	[ 0.7 0.7 0 ] % brown-yellow
+] def
+/cmpfcolor { % number -> .
+	cmpfcolorarray length mod % get the subarray number
+	cmpfcolorarray exch get aload pop setrgbcolor
+} bind def
+/contourcolor { 0 0 0 setrgbcolor } bind def % black
+/bluezonecolor { 0.95 0.95 1 setrgbcolor } bind def % very light blue
+/coordcolor { 0 1 0 setrgbcolor } bind def % green
+/textcolor { 0 0 0 setrgbcolor } bind def % black
+/stemcolor { 1 0 0 setrgbcolor } bind def % red
+/mainstemcolor { 0 0 1 setrgbcolor } bind def % blue
+
+% /fnt2pt { 72 5 mul 1000 div } bind def
+
+/linehor { % . font_y -> .
+	gsave
+	0 72 translate
+	72 fnt2pt scale
+	newpath
+	0 exch moveto
+	7 0 rlineto
+	stroke
+	grestore
+} bind def
+
+/linevert { % . font_x -> .
+	gsave
+	72 0 translate
+	fnt2pt 72 scale
+	newpath
+	0 moveto
+	0 7 rlineto
+	stroke
+	grestore
+} bind def
+
+/bluezone { % . font_y_1 font_y_2 -> .
+	gsave
+	bluezonecolor
+	0 72 translate
+	72 fnt2pt scale
+	newpath
+	0 exch moveto
+	7 0 rlineto
+	7 exch lineto
+	-7 0 rlineto
+	closepath
+	fill
+	grestore
+} bind def
+
+/drawstem { %  . xwidth ywidth x0 y0 -> .
+	gsave
+	72 72 translate fnt2pt fnt2pt scale xorg yorg translate
+	newpath
+	moveto
+	dup 0 exch rlineto
+	exch 0 rlineto
+	neg 0 exch rlineto
+	closepath fill
+	grestore
+} bind def
+	
+/getlen {
+	dup stringwidth pop
+} bind def
+
+/compressfont 0.8 def
+
+/label { % . string stringwd y -> .
+	dup lasty lt {
+		dup lasty fontsz sub le
+	} { 
+		dup lasty fontsz add ge
+	} ifelse {
+		/curx 0 store
+	} if
+	dup /lasty exch store
+	0 exch moveto
+	compressfont mul dup curx add maxx gt {
+		/curx 0 store
+	} if
+	curx 0 rmoveto
+	dup 0 rlineto
+	stroke
+	gsave
+	curx lasty moveto
+	curx add /curx exch store
+	compressfont 1 scale
+	show
+	grestore
+} bind def
+");
+
+@bbox=@cmnbbox;
+
+$nx=$bbox[2]-$bbox[0];
+$ny=$bbox[3]-$bbox[1];
+$maxsz= ($nx>$ny) ? $nx : $ny;
+$fnt2pt= 72*5/$maxsz;
+printf("/fnt2pt 72 5 mul %d div def\n", $maxsz);
+$xorg= -($bbox[0]-($maxsz-$nx)/2); 
+$yorg= -($bbox[1]-($maxsz-$ny)/2);
+printf("/xorg %d def /yorg %d def\n", $xorg, $yorg);
+
+print("
+%%EndProlog
+");
+
+######################## Subroutines ##############################
+
+sub bluezone # from to
+{
+	my ($a, $b)=@_;
+	printf("%d %d bluezone\n",$a+$yorg, $b+$yorg);
+	$ycoord{$a+0}=1;
+	$ycoord{$b+0}=1;
+}
+
+sub linehor # x
+{
+	my $a=$_[0];
+	printf("%d linehor\n",$a+$yorg);
+	$ycoord{$a+0}=1;
+}
+
+sub linevert # x
+{
+	my $a=$_[0];
+	printf("%d linevert\n",$a+$xorg);
+	$xcoord{$a+0}=1;
+}
+
+sub hstem # from width
+{
+	my ($from, $width)=@_;
+	$stemhused=1;
+	printf("%d %d %d %d drawstem %% %d %d h \n", -$stemwd, $width,
+		$bbox[0]-2-$stemhgrp*$stemwd, $from,
+		$from, $width);
+	printf("%d %d %d %d drawstem %% %d %d h \n", $stemwd, $width,
+		$bbox[2]+2+$stemhgrp*$stemwd, $from,
+		$from, $width);
+}
+
+sub vstem # from width
+{
+	my ($from, $width)=@_;
+	$stemvused=1;
+	printf("%d %d %d %d drawstem %% %d %d v \n", $width, -$stemwd,
+		$from, $bbox[1]-2-$stemhgrp*$stemwd,
+		$from, $width);
+	printf("%d %d %d %d drawstem %% %d %d v \n", $width, $stemwd,
+		$from, $bbox[3]+2+$stemhgrp*$stemwd,
+		$from, $width);
+}
+
+sub nextstemgrp
+{
+	if($stemhused || $stemvused) {
+		$stemhgrp++;
+		$stemhused=0;
+		$stemvgrp++;
+		$stemvused=0;
+	}
+}
+
+sub substems # fname subrlist
+{
+	my $fname = shift;
+	my $i, $cmd, @vals;
+
+	print("\nstemcolor\n");
+
+	for $i (@_) {
+		&nextstemgrp();
+		for $_ (split(/\n/, $fsubrs{$fname}{$i})) {
+			s/^\s+//;
+			@vals=split(/\s+/, $_);
+			$cmd=$vals[$#vals];
+			if($cmd eq "hstem") {
+				&hstem($vals[0], $vals[1]);
+			} elsif($cmd eq "vstem") {
+				&vstem($vals[0], $vals[1]);
+			}
+		}
+	}
+	print("\n");
+}
+
+sub drawcharwstems # charstring
+{
+	my($x,$y)=(0,0);
+	my @vals, $cmd, $i;
+
+	print("\nmainstemcolor\n");
+	&nextstemgrp();
+	for $_ (split(/\n/, $_[0])) {
+		s/^\s+//;
+		@vals=split(/\s+/, $_);
+		$cmd=$vals[$#vals];
+
+		if($cmd eq "hsbw") {
+			$x=$vals[0]+0;
+		} elsif($cmd eq "hstem") {
+			&hstem($vals[0], $vals[1]);
+		} elsif($cmd eq "hstem3") {
+			&hstem($vals[0], $vals[1]);
+			&hstem($vals[2], $vals[3]);
+			&hstem($vals[4], $vals[5]);
+		} elsif($cmd eq "vstem") {
+			&vstem($vals[0], $vals[1]);
+		} elsif($cmd eq "vstem3") {
+			&vstem($vals[0], $vals[1]);
+			&vstem($vals[2], $vals[3]);
+			&vstem($vals[4], $vals[5]);
+		} elsif($cmd eq "rmoveto") {
+			# a shortcut
+			last;
+		}
+	}
+	&drawchar("drawchar", 1, "contourcolor", $_[0]);
+}
+
+sub drawchar #procname wantgrid color charstring
+{
+	my($procname, $wantgrid, $color, $charstring) = @_;
+	my($x,$y)=(0,0);
+	my @vals, $cmd, $i;
+	my %xv=();
+	my %yv=();
+
+	printf("\n/%s {\n",$procname);
+	printf("\ngsave 72 72 translate fnt2pt fnt2pt scale %d %d translate\n", $xorg, $yorg);
+	printf("%s 1 setlinewidth newpath\n", $color);
+	for $_ (split(/\n/, $charstring)) {
+		s/^\s+//;
+		@vals=split(/\s+/, $_);
+		$cmd=$vals[$#vals];
+
+		if($cmd eq "callsubr" && $vals[1] == 4) {
+			push(@subrlist, $vals[0]);
+		} elsif($cmd eq "amoveto") {
+			$x=$vals[0]+0;
+			$y=$vals[1]+0;
+			$xv{$x+0}=1; $yv{$y+0}=1; 
+			printf("%d %d moveto\n", $x, $y);
+			printf("%d %d 5 0 360 arc %d %d moveto\n", $x, $y, $x, $y);
+		} elsif($cmd eq "rmoveto") {
+			$x+=$vals[0];
+			$y+=$vals[1];
+			$xv{$x+0}=1; $yv{$y+0}=1; 
+			printf("%d %d moveto\n", $x, $y);
+			printf("%d %d 5 0 360 arc %d %d moveto\n", $x, $y, $x, $y);
+		} elsif($cmd eq "hmoveto") {
+			$x+=$vals[0];
+			$xv{$x+0}=1; $yv{$y+0}=1; 
+			printf("%d %d moveto\n", $x, $y);
+			printf("%d %d 5 0 360 arc %d %d moveto\n", $x, $y, $x, $y);
+		} elsif($cmd eq "vmoveto") {
+			$y+=$vals[0];
+			$xv{$x+0}=1; $yv{$y+0}=1; 
+			printf("%d %d moveto\n", $x, $y);
+			printf("%d %d 5 0 360 arc %d %d moveto\n", $x, $y, $x, $y);
+		} elsif($cmd eq "alineto") {
+			$x=$vals[0]+0;
+			$y=$vals[1]+0;
+			$xv{$x+0}=1; $yv{$y+0}=1; 
+			printf("%d %d lineto\n", $x, $y);
+			printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y);
+		} elsif($cmd eq "rlineto") {
+			$x+=$vals[0];
+			$y+=$vals[1];
+			$xv{$x+0}=1; $yv{$y+0}=1; 
+			printf("%d %d lineto\n", $x, $y);
+			printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y);
+		} elsif($cmd eq "hlineto") {
+			$x+=$vals[0];
+			$xv{$x+0}=1; $yv{$y+0}=1; 
+			printf("%d %d lineto\n", $x, $y);
+			printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y);
+		} elsif($cmd eq "vlineto") {
+			$y+=$vals[0];
+			$xv{$x+0}=1; $yv{$y+0}=1; 
+			printf("%d %d lineto\n", $x, $y);
+			printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y);
+		} elsif($cmd eq "arcurveto") {
+			for $i (0,2,4) {
+				$x=$vals[$i]+0;
+				$y=$vals[$i+1]+0;
+				printf("%d %d ", $x, $y);
+			}
+			$xv{$x+0}=1; $yv{$y+0}=1; 
+			printf("curveto\n");
+			printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y);
+		} elsif($cmd eq "rrcurveto") {
+			for $i (0,2,4) {
+				$x+=$vals[$i];
+				$y+=$vals[$i+1];
+				printf("%d %d \n", $x, $y);
+			}
+			$xv{$x+0}=1; $yv{$y+0}=1; 
+			printf("curveto\n");
+			printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y);
+		} elsif($cmd eq "hvcurveto") {
+			$x+=$vals[0];
+			printf("%d %d \n", $x, $y);
+			$x+=$vals[1];
+			$y+=$vals[2];
+			printf("%d %d \n", $x, $y);
+			$y+=$vals[3];
+			printf("%d %d \n", $x, $y);
+			$xv{$x+0}=1; $yv{$y+0}=1; 
+			printf("curveto\n");
+			printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y);
+		} elsif($cmd eq "vhcurveto") {
+			$y+=$vals[0];
+			printf("%d %d \n", $x, $y);
+			$x+=$vals[1];
+			$y+=$vals[2];
+			printf("%d %d \n", $x, $y);
+			$x+=$vals[3];
+			printf("%d %d \n", $x, $y);
+			$xv{$x+0}=1; $yv{$y+0}=1; 
+			printf("curveto\n");
+			printf("%d %d 3 0 360 arc %d %d moveto\n", $x, $y, $x, $y);
+		} elsif($cmd eq "closepath") {
+			printf("closepath stroke newpath\n");
+		}
+	}
+
+	printf("grestore } bind def\n");
+	if($wantgrid) {
+		printf("coordcolor\n");
+		for $x (keys %xv) {
+			&linevert($x);
+		}
+		for $y (keys %yv) {
+			&linehor($y);
+		}
+	}
+}
+
+$pages=0;
+
+for $arg (@ARGV) {
+	undef $name, $code;
+
+	if( $arg =~ /^\/(.*)/ ) {
+		$name=$1;
+	} elsif( $arg =~ /^\.(.)/ ) {
+		$code=ord($1);
+	} else {
+		$code=$arg;
+	}
+
+	$pages++;
+
+	$stemhgrp=0;
+	$stemhused=0;
+	$stemvgrp=0;
+	$stemvused=0;
+	$stemwd=10;
+	undef %xcoord;
+	undef %ycoord;
+
+	if( defined $name ) {
+		$xname = $name;
+		$xcode = $frevenc{$fname}{$name};
+		if( $xcode eq "" ) {
+			$xcode = "**UNKNOWN**";
+		}
+	} else {
+		$xname = $fenc{$fname}{$code};
+		if( $xname eq "" ) {
+			$xname = "**UNKNOWN**";
+		}
+		$xcode = $code;
+	} 
+
+	printf("%%%%Page: %d %d\n", $pages, $pages);
+	printf("gsave
+
+0 setlinewidth
+36 72 translate
+
+gsave
+contourcolor
+72 72 scale
+newpath
+0 0 moveto
+7 0 rlineto
+0 7 rlineto
+-7 0 rlineto
+closepath
+stroke
+1 1 translate
+newpath
+0 0 moveto
+5 0 rlineto
+0 5 rlineto
+-5 0 rlineto
+closepath
+stroke
+grestore
+
+");
+
+	undef @subrlist;
+
+
+	@bbox=@{$fbbox{$fname}};
+
+	print("coordcolor\n");
+	printf("0 linehor %d linehor %d linehor\n", $bbox[1]+$yorg, $bbox[3]+$yorg);
+	printf("%d linevert %d linevert\n", $bbox[0]+$xorg, $bbox[2]+$xorg);
+
+	%vals=@{$fblues{$fname}};
+	for $i (keys %vals) {
+		&bluezone($i, $vals{$i});
+	}
+
+	$havechar = 1;
+	if( defined $fchars{$fname}{$xname} ) {
+		&drawcharwstems($fchars{$fname}{$xname});
+	} else {
+		$havechar = 0;
+		if(defined $name) {
+			printf(STDERR "WARNING: %s nas no character with name \"%s\"\n", $fname, $name);
+		} else {
+			printf(STDERR "WARNING: %s nas no character with code \"%s\"\n", $fname, $code);
+		}
+	}
+
+	&substems($fname, @subrlist);
+
+	printf(STDERR "glyph name:%s code:%s (%d substituted stem groups)\n", $xname, $xcode, scalar @subrlist);
+
+	$cmpfidx = 0;
+	for $cmpf(@cmpfiles) {
+		undef $cname, $ccode;
+
+		if( defined $name ) {
+			if ( ! defined $fchars{$cmpf}{$name} && defined $fenc{$cmpf}{$xcode}) {
+				printf(STDERR "  NOTE: %s nas no glyph with name \"%s\", guessed by code\n", $cmpf, $name);
+				$cname = $fenc{$cmpf}{$xcode};
+				if( $cname eq "" ) {
+					$cname = "**UNKNOWN**";
+				}
+				$ccode = $xcode;
+			} else {
+				$cname = $name;
+				$ccode = $frevenc{$cmpf}{$name};
+				if( $ccode eq "" ) {
+					$ccode = "**UNKNOWN**";
+				}
+			}
+		} else {
+			$cname = $fenc{$cmpf}{$code};
+			if( $cname eq "" ) {
+				$cname = "**UNKNOWN**";
+			}
+			$ccode = $code;
+		} 
+
+		if( defined $fchars{$cmpf}{$cname} ) {
+			&drawchar("drawcmpchar", 0, sprintf("%d cmpfcolor", $cmpfidx),
+				$fchars{$cmpf}{$cname});
+			printf("drawcmpchar\n\n");
+			printf(STDERR "  in %s glyph name:%s code:%s\n", $cmpf, $cname, $ccode);
+		} else {
+			if(defined $name) {
+				printf(STDERR "  WARNING: %s nas no character with name \"%s\"\n", $cmpf, $name);
+			} else {
+				printf(STDERR "  WARNING: %s nas no character with code \"%s\"\n", $cmpf, $code);
+			}
+		}
+		$cmpfidx++;
+	}
+
+	if($havechar) {
+		printf("drawchar\n\n");
+	}
+
+	# flush the last group
+	&nextstemgrp();
+
+	# the values of coordinates
+	printf("/fontsz 8 fnt2pt div def\n");
+	printf("/Myfont /Courier findfont fontsz scalefont def\n\n");
+	printf("contourcolor Myfont setfont\n");
+
+	for $org (0, $xorg+$bbox[2]+$stemwd*$stemhgrp+72/$fnt2pt) {
+		printf("gsave\n");
+		printf("/maxx 72 fnt2pt div %d sub def /curx 0 def /lasty -10000 def\n",
+				2+$stemhgrp*$stemwd-$xorg-$bbox[0]);
+		printf("0 72 translate fnt2pt fnt2pt scale %f yorg translate 1 setlinewidth\n", $org);
+		for $y (sort {$a <=> $b} keys %ycoord) {
+			printf("(%d) getlen %d label\n", $y, $y);
+		}
+		printf("grestore\n");
+	}
+
+	for $org (0, $yorg+$bbox[3]+$stemwd*$stemvgrp+72/$fnt2pt) {
+		printf("gsave\n");
+		printf("/maxx 72 fnt2pt div %d sub def /curx 0 def /lasty -10000 def\n",
+				2+$stemvgrp*$stemwd-$yorg-$bbox[1]);
+		printf("72 0 translate fnt2pt fnt2pt scale xorg %f translate 90 rotate 1 setlinewidth\n", $org);
+		for $x (sort {$a <=> $b} keys %xcoord) {
+			printf("(%d) getlen %d label\n", $x, -$x);
+		}
+		printf("grestore\n");
+	}
+
+	printf("gsave 0 %d translate\n", 7.5*72 );
+	printf("contourcolor /Courier findfont 12 scalefont setfont\n");
+	$line = 0;
+
+	$cmpfidx = $#cmpfiles;
+	if( $cmpfidx > (2.5*72/15)-4 ) {
+		$cmpfidx = (2.5*72/15)-4;
+	}
+	for(; $cmpfidx>=0; $cmpfidx--) {
+		$cmpf = $cmpfiles[$cmpfidx];
+		printf("%d cmpfcolor\n", $cmpfidx);
+		printf("newpath 20 %d moveto 0 10 rlineto 10 0 rlineto 0 -10 rlineto closepath fill\n", 
+			15*$line, $cmpf);
+		printf("contourcolor 40 %d moveto (%s %s) show\n", 15*$line, $cmpf, $fontname{$cmpf});
+		$line++;
+	}
+	if( $#cmpfiles >=0 ) {
+		printf("0 %d moveto (Comparison files:) show\n", 15*$line++);
+	}
+	printf("0 %d moveto (code: %d  name: %s) show\n", 15*$line++, $xcode, $xname);
+	printf("0 %d moveto (%s) show\n", 15*$line++, $fname);
+	printf("0 %d moveto (%s) show\n", 15*$line++, $fontname{$fname});
+	printf("grestore\n\n");
+
+	printf("showpage grestore\n\n");
+}
+printf("%%%%Pages: %d\n", $pages);
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/cntstems.pl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/cntstems.pl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/cntstems.pl	(revision 2000)
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+#
+# Copyright (c) 2000 by Sergey Babkin
+# (see COPYRIGHT for full copyright notice)
+#
+# script to calculate the total number of stems used by the
+# glyphs in case if stems are always pushed to the stack and
+# never popped (as X11 does)
+
+$insubrs = 0;
+$inchars = 0;
+
+while(<>)
+{
+	if(/\/Subrs/) {
+		$insubrs = 1;
+	} elsif(/\/CharStrings/) {
+		$insubrs = 0;
+		$inchars = 1;
+	} 
+	if($insubrs && /^dup (\d+)/) {
+		$cursubr = $1;
+		$substems[$cursubr] = 0;
+	} elsif (/^dup (\d+) \/(\S+) put/) {
+		$codeof{$2} = $1;
+	}
+	if($inchars) {
+		if(/^\/(\S+)\s+\{/) {
+			$curchar = $1;
+			$charstems = 0;
+		} elsif( /endchar/ ) {
+			printf("%d:%s\t%d\n", $codeof{$curchar}, $curchar, $charstems);
+		} elsif( /(\d+)\s+4\s+callsubr/) {
+			$charstems += $substems[$1+0];
+		}
+	}
+	if(/[hv]stem3/) {
+		if($insubrs) {
+			$substems[$cursubr] += 3;
+		} elsif($inchars) {
+			$charstems += 3;
+		}
+	} elsif( /[hv]stem/ ) {
+		if($insubrs) {
+			$substems[$cursubr]++;
+		} elsif($inchars) {
+			$charstems++;
+		}
+	}
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/showdf
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/showdf	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/showdf	(revision 2000)
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+
+if (@ARGV != 3) {
+	print STDERR "Use:\n";
+	print STDERR "  showdf <showg-script> <old-file> <new-file>\n";
+	print STDERR "to create a showg diagram of glyphs differing in two files\n";
+	exit 1;
+}
+
+$cmd = shift @ARGV;
+$oldf = shift @ARGV;
+$newf = shift @ARGV;
+
+open(O, "<$oldf") or die "Unable to open '$oldf'\n";
+open(N, "<$newf") or die "Unable to open '$newf'\n";
+
+while(<O>) {
+	last if(/CharStrings/);
+}
+while(<N>) {
+	last if(/CharStrings/);
+}
+
+undef @symlist;
+$sym = '';
+$inlist = 0;
+$nstop = 0;
+
+while($so = <O>) {
+	if($so =~ m|^(/\S+)\s+\{|) {
+		$sym = $1;
+		$inlist = 0;
+		#printf STDERR "found sym $sym\n";
+		if (!$nstop || $sn !~ m|^$sym\s+\{|) {
+			while($sn = <N>) {
+				#print STDERR "+$sn";
+				last if($sn =~ m|^${sym}\s+\{|);
+			}
+		}
+		$nstop = 0;
+	} elsif(!$nstop) {
+		$sn = <N>;
+		#print STDERR "<$so>$sn\n";
+		if($so ne $sn) {
+			if(!$inlist) {
+				$inlist = 1;
+				push(@symlist, $sym);
+			}
+			if($sn =~ m|^(/\S+)\s+\{|) {
+				$nstop = 1;
+				#printf STDERR "stop at $1\n";
+			}
+		}
+	}
+}
+unshift(@symlist, $cmd, '-c', $oldf, $newf);
+#printf("%s\n", join(' ', @symlist));
+exec @symlist;
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/bmpfont.h
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/bmpfont.h	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/bmpfont.h	(revision 2000)
@@ -0,0 +1,338 @@
+/*
+ * see COPYRIGHT
+ */
+
+
+fchkneg(file, line, rc, cmd)
+	char *file;
+	int line;
+	int rc;
+	char *cmd;
+{
+	if(rc<0) {
+		fprintf(stderr,"%s: fatal error on line %d of %s: %d\n", 
+			PROGNAME, line, file, rc);
+		fprintf(stderr,"%s\n", cmd);
+		exit(1);
+	}
+}
+
+fchknull(file, line, rc, cmd)
+	char *file;
+	int line;
+	void *rc;
+	char *cmd;
+{
+	if(rc==NULL) {
+		fprintf(stderr,"%s: fatal error on line %d of %s: NULL\n", 
+			PROGNAME, line, file);
+		fprintf(stderr,"%s\n", cmd);
+		exit(1);
+	}
+}
+
+#define chkneg(f)	fchkneg(__FILE__,__LINE__,(f),#f)
+#define chknull(f)	fchknull(__FILE__,__LINE__,(f),#f)
+
+#define MYPAD 8
+
+#define CHRNONE	' '
+#define CHRBOTH	'.'
+#define CHRONE	'1'
+#define CHRTWO	'2'
+
+#define MINSIZE 8
+#define MAXSIZE 20
+
+#define LINEWIDTH	80 /* screen line width in chars */
+#define MAXLINES	(MAXSIZE*(MAXSIZE-MINSIZE+1))
+
+static char map[MAXLINES][LINEWIDTH+1];
+static char mbase, mx, mend;
+
+/* returns 0 if the same, -1 if different */
+
+int 
+cmpglyphs(g1, g2)
+	GLYPH *g1, *g2;
+{
+	int wd1, wd2;
+	int ht1, ht2;
+	int i, j;
+	char *p1, *p2;
+
+	wd1=g1->metrics.rightSideBearing - g1->metrics.leftSideBearing;
+	ht1=g1->metrics.ascent - g1->metrics.descent;
+	wd2=g2->metrics.rightSideBearing - g2->metrics.leftSideBearing;
+	ht2=g2->metrics.ascent - g2->metrics.descent;
+
+	if(g1->bits==NULL && g2->bits!=NULL
+	|| g1->bits!=NULL && g2->bits==NULL)
+		return -1;
+
+	if(g1->metrics.ascent != g2->metrics.ascent)
+		return -1;
+
+	if(g1->metrics.descent != g2->metrics.descent)
+		return -1;
+
+	if( wd1 != wd2 )
+		return -1;
+
+	if( (p1=g1->bits) !=NULL && (p2=g2->bits) !=NULL )
+		for(i=0; i<ht1; i++) {
+			for(j=0; j<wd1; j+=8) {
+				if( *p1++ != *p2++)
+					return -1;
+			}
+		}
+	return 0;
+}
+
+void
+resetmap()
+{
+	int i, j;
+
+	for(i=0; i<MAXLINES; i++)
+		for(j=0; j<LINEWIDTH; j++)
+			map[i][j]=' ';
+	mbase=mx=mend=0;
+}
+
+void 
+drawdot(row, col, val)
+	unsigned row, col, val;
+{
+	if(row < MAXLINES && col < LINEWIDTH-1) {
+		map[row][col]=val;
+		if(row > mend)
+			mend=row;
+	}
+}
+
+void 
+drawdotg1(row, col, val)
+	unsigned row, col, val;
+{
+	if(row < MAXLINES && col < LINEWIDTH-1) {
+		if(val)
+			map[row][col]=CHRONE;
+		else
+			map[row][col]=CHRNONE;
+		if(row > mend)
+			mend=row;
+	}
+}
+
+void 
+drawdotg2(row, col, val)
+	unsigned row, col, val;
+{
+	if(row < MAXLINES && col < LINEWIDTH-1) {
+		if(val) 
+			if(map[row][col]==CHRONE)
+				map[row][col]=CHRBOTH;
+			else
+				map[row][col]=CHRTWO;
+		else if(map[row][col]!=CHRONE)
+			map[row][col]=CHRNONE;
+		if(row > mend)
+			mend=row;
+	}
+}
+
+void 
+drawglyf(size, g1)
+	int size;
+	GLYPH *g1;
+{
+	int wd1, wd2, wdm;
+	int ht1, ht2, ascm, desm;
+	int i, j, k, val;
+	char *p;
+	int off1, off2;
+
+	wd1=g1->metrics.rightSideBearing - g1->metrics.leftSideBearing;
+	ht1=g1->metrics.ascent - g1->metrics.descent;
+
+	wdm=wd1;
+
+	ascm=g1->metrics.ascent;
+	desm= -g1->metrics.descent;
+
+	if(mbase==0) 
+		mbase=ascm+1;
+	else if(LINEWIDTH-mx <= wdm+1) {
+		mx=0; mbase=mend+ascm+2;
+	}
+
+	drawdot(mbase-ascm-1, mx, (size/10)%10+'0');
+	drawdot(mbase-ascm-1, mx+1, size%10+'0');
+
+	if( (p=g1->bits) !=NULL)
+		for(i=0; i<ht1; i++) {
+			for(j=0; j<wd1; j+=8) {
+				val = *p++;
+				for(k=0; k<8 && j+k<wd1; k++, val>>=1)
+					drawdot(i+mbase-g1->metrics.ascent, mx+j+k, (val&1)?CHRBOTH:CHRNONE);
+			}
+		}
+
+	wdm++;
+	if(wdm<3)
+		wdm=3;
+	mx+=wdm;
+	drawdot(mbase, mx-1, '-');
+}
+
+void 
+drawdiff(size, g1, g2)
+	int size;
+	GLYPH *g1, *g2;
+{
+	int wd1, wd2, wdm;
+	int ht1, ht2, ascm, desm;
+	int i, j, k, val;
+	char *p;
+	int off1, off2;
+
+	wd1=g1->metrics.rightSideBearing - g1->metrics.leftSideBearing;
+	ht1=g1->metrics.ascent - g1->metrics.descent;
+	wd2=g2->metrics.rightSideBearing - g2->metrics.leftSideBearing;
+	ht2=g2->metrics.ascent - g2->metrics.descent;
+
+	if(wd1>wd2) {
+		wdm=wd1;
+		off1=0; off2=wd1-wd2;
+	} else {
+		wdm=wd2;
+		off2=0; off1=wd2-wd1;
+	}
+
+	if(g1->metrics.ascent > g2->metrics.ascent)
+		ascm=g1->metrics.ascent;
+	else
+		ascm=g2->metrics.ascent;
+
+	if(g1->metrics.descent < g2->metrics.descent)
+		desm= -g1->metrics.descent;
+	else
+		desm= -g2->metrics.descent;
+
+	if(mbase==0) 
+		mbase=ascm+1;
+	else if(LINEWIDTH-mx <= wdm+1) {
+		mx=0; mbase=mend+ascm+2;
+	}
+
+	drawdot(mbase-ascm-1, mx, (size/10)%10+'0');
+	drawdot(mbase-ascm-1, mx+1, size%10+'0');
+
+	/* check which alignment is better */
+	if(off1!=0 || off2!=0) {
+		int cntl,cntr;
+		int a1, a2, d1, d2;
+		int val1, val2;
+		int rstep1, rstep2;
+
+		cntl=cntr=0;
+		rstep1=(wd1+7)/8;
+		rstep2=(wd2+7)/8;
+		a1=g1->metrics.ascent;
+		d1=g1->metrics.descent;
+		a2=g2->metrics.ascent;
+		d2=g2->metrics.descent;
+
+#ifdef dbgoff
+		printf("size: %d\n", size);
+#endif
+		for(i=ascm; i>= -desm; i--) {
+			for(j=0; j<wdm; j++) {
+				/* first the left alignment */
+				if(i>a1 || i<d1 || j>=wd1)
+					val1=0;
+				else
+					val1=( g1->bits[ (a1-i)*rstep1+j/8 ] >> (j%8) ) & 1;
+				if(i>a2 || i<d2 || j>=wd2)
+					val2=0;
+				else
+					val2=( g2->bits[ (a2-i)*rstep2+j/8 ] >> (j%8) ) & 1;
+
+				cntl += (val1 ^ val2);
+
+#ifdef dbgoff
+				putchar(val1?'1':' ');
+				putchar(val2?'2':' ');
+				putchar('.');
+#endif
+
+				/* now the right alignment */
+				if(i>a1 || i<d1 || j-off1>=wd1 || j<off1)
+					val1=0;
+				else
+					val1=( g1->bits[ (a1-i)*rstep1+(j-off1)/8 ] >> ((j-off1)%8) ) & 1;
+				if(i>a2 || i<d2 || j-off2>=wd2)
+					val2=0;
+				else
+					val2=( g2->bits[ (a2-i)*rstep2+(j-off2)/8 ] >> ((j-off2)%8) ) & 1;
+
+				cntr += (val1 ^ val2);
+
+#ifdef dbgoff
+				putchar(val1?'1':' ');
+				putchar(val2?'2':' ');
+				putchar('|');
+#endif
+			}
+#ifdef dbgoff
+			putchar('\n');
+#endif
+		}
+
+#ifdef dbgoff
+		printf("size %d: left %d right %d\n",size, cntl, cntr);
+#endif
+		if(cntl <= cntr) /* left is better or the same */
+			off1=off2=0;
+	}
+
+	if( (p=g1->bits) !=NULL)
+		for(i=0; i<ht1; i++) {
+			for(j=0; j<wd1; j+=8) {
+				val = *p++;
+				for(k=0; k<8 && j+k<wd1; k++, val>>=1)
+					drawdotg1(i+mbase-g1->metrics.ascent, mx+j+k+off1, val&1);
+			}
+		}
+	if( (p=g2->bits) !=NULL)
+		for(i=0; i<ht2; i++) {
+			for(j=0; j<wd2; j+=8) {
+				val = *p++;
+				for(k=0; k<8 && j+k<wd2; k++, val>>=1)
+					drawdotg2(i+mbase-g2->metrics.ascent, mx+j+k+off2, val&1);
+			}
+		}
+
+	wdm++;
+	if(wdm<3)
+		wdm=3;
+	mx+=wdm;
+	drawdot(mbase, mx-1, '-');
+}
+
+void
+printmap(f)
+	FILE *f;
+{
+	int i, j;
+
+	for(i=0; i<=mend; i++) {
+		for(j=LINEWIDTH-1; j>=0 && map[i][j]==' '; j--)
+			{}
+		map[i][j+1]='\n';
+		map[i][j+2]=0;
+		fputs(map[i], f);
+	}
+}
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/bz.c
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/bz.c	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/bz.c	(revision 2000)
@@ -0,0 +1,78 @@
+/*
+ * see COPYRIGHT
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "bzscreen.h"
+
+/* size of the screen in "physical pixels" */
+#define PHYSX	980
+#define PHYSY	310
+
+/* the bounding box of the drawing in "logical pixels" */
+/* the base point - set to 0, 0 for absolute coordinates */
+#define BASEX 19 
+#define BASEY 122
+/* the maximal point */
+#define MAXX 450
+#define MAXY 481
+
+main(argc,argv)
+	int argc;
+	char **argv;
+{
+	initscreen(PHYSX, PHYSY, PHYSX, PHYSY, 0, 0, BASEX, BASEY, MAXX, MAXY);
+
+	/*
+	drawcurve('#', 0,0, 51,0, 1,49, 45,98);
+	drawcurve('1', 5,28, 8,37, 16,65, 45,98);
+
+	drawcurve('3', 0,0, 0,24, 30,68, 80,72);
+
+	drawcurve('1', 0,0, 0,5, 1,10, 2,15);
+	drawcurve('2', 2,15, 8,42, 30,68, 80,72);
+
+	drawcurve('4', 0,0, 0,37, 22,67, 80,72);
+	*/
+
+	/* final */
+	/*
+	drawcurve('#', 324, 481, 390, 481, 448, 475, 448, 404 );
+	drawcurve('#', 448, 404, 448, 404, 448, 324, 448, 324 );
+	drawcurve('#', 448, 324, 402, 245, 19, 338, 19, 122 );
+	*/
+
+	/* 3 */
+	/*
+	*/
+	drawcurve('*', 450, 404, 450, 397, 450, 390, 448, 384 );
+
+	drawcurve('*', 448, 384, 446, 378, 444, 370, 443, 360 );
+	drawcurve('.', 443, 360, 309, 356, 206, 341, 132, 304 );
+	drawcurve('.', 132, 304, 57, 266, 19, 208, 19, 122 );
+
+	/* 4 */
+	drawcurve('#', 324, 481, 390, 481, 450, 475, 450, 404 );
+	drawcurve('#', 450, 404, 450, 397, 450, 390, 448, 384 );
+
+	drawcurve('#', 448, 384, 402, 245, 19, 338, 19, 122 );
+
+	/*
+	drawcurve('.', 324, 481, 361, 481, 391, 478, 414, 466 );
+	drawcurve('.', 414, 466, 436, 454, 450, 436, 450, 404 );
+
+	drawcurve('.', 450, 404, 450, 390, 447, 378, 443, 360 );
+	drawcurve('.', 443, 360, 309, 356, 206, 341, 132, 304 );
+
+	drawcurve('.', 132, 304, 57, 266, 19, 208, 19, 122 );
+	*/
+
+	printscreen(stdout);
+}
+
+sumcurves(dx11, dy11, dx12, dy12, dx13, dy13,
+	dx21, dy21, dx22, dy22, dx23, dy23)
+{
+}
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/bzscreen.c
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/bzscreen.c	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/bzscreen.c	(revision 2000)
@@ -0,0 +1,220 @@
+/*
+ * see COPYRIGHT
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "bzscreen.h"
+
+/*
+ * functions to draw the bezier curves in text mode 
+ */
+
+double
+fmin(a,b)
+	double a, b;
+{
+	if(a<b)
+		return a;
+	else
+		return b;
+}
+
+int
+abs(x)
+	int x;
+{
+	if(x<0)
+		return -x;
+	else
+		return x;
+}
+
+void
+initscreen(physx, physy, cols, rows, xoff, yoff, minx, miny, maxx, maxy)
+	unsigned physx, physy, cols, rows, xoff, yoff, minx, miny, maxx, maxy;
+{
+	int i,j;
+	double yxscale;
+
+	if(screen.dots != NULL)
+		free(screen.dots);
+
+	if(physx==0 || physy==0 || rows==0 || cols==0) {
+		fprintf(stderr, "*** negative or zero screen size\n");
+		exit(1);
+	}
+
+	if(physx+xoff > cols || physy+yoff > rows) {
+		fprintf(stderr, "*** drawable area out of screen\n");
+		exit(1);
+	}
+
+	if(minx>maxx || miny>maxy) {
+		fprintf(stderr, "*** empty drawable area\n");
+		exit(1);
+	}
+
+	screen.physx = physx;
+	screen.physy = physy;
+	screen.rows = rows; 
+	screen.cols = cols+2; /* for '\n\0' */
+	screen.xoff = xoff;
+	screen.yoff = yoff;
+	screen.minx = minx;
+	screen.miny = miny;
+
+	if(( screen.dots=malloc(screen.rows*screen.cols) )==NULL) {
+		perror("*** no memory for screen: ");
+		exit(1);
+	}
+
+	j=screen.rows*screen.cols;
+	for(i=0; i<j; i++)
+		screen.dots[i]=' ';
+
+	/* scale of Y to X on the screen, i.e. x=YXSCALE*y */
+	/* 3/4 is the approx. ratio of Y/X sizes of the physical screen */
+	yxscale = ((double)physx/(double)physy*3.0/4.0);
+
+	/* scale of "logical" to "physical", i.e. physical=PHYSSCALE*logical */
+	screen.yscale = fmin( ((double)physy-0.51)/(maxy+1-miny), 
+		((double)physx-0.51)/yxscale/(maxx+1-minx) );
+	screen.xscale = yxscale * screen.yscale;
+}
+
+void
+drawcurve(mark, ax,ay, bx,by, cx,cy, dx,dy)
+	int mark, ax,ay, bx,by, cx,cy, dx,dy;
+{
+	int i,j,n,c;
+	int maxn=(screen.physx + screen.physy)*2;
+
+	ax-=screen.minx; bx-=screen.minx; cx-=screen.minx; dx-=screen.minx;
+	ay-=screen.miny; by-=screen.miny; cy-=screen.miny; dy-=screen.miny;
+
+	for(i=0; i<=maxn; i++) {
+		double t, t2, t3, nt, nt2, nt3;
+
+		t=(double)i/(double)maxn; t2=t*t; t3=t2*t;
+		nt=1-t; nt2=nt*nt; nt3=nt2*nt;
+
+		setfdot(
+			mark, 
+			( ax*t3 + bx*3*t2*nt + cx*3*t*nt2 + dx*nt3 ),
+			( ay*t3 + by*3*t2*nt + cy*3*t*nt2 + dy*nt3 )
+		);
+	}
+}
+
+/* draw curve and mark direction at the ends */
+
+void
+drawcurvedir(mark, ax,ay, bx,by, cx,cy, dx,dy)
+	int mark, ax,ay, bx,by, cx,cy, dx,dy;
+{
+	int i,j,n,c;
+	int maxn=(screen.physx + screen.physy)*2;
+	double t, t2, t3, nt, nt2, nt3;
+	int markb, marke;
+
+	ax-=screen.minx; bx-=screen.minx; cx-=screen.minx; dx-=screen.minx;
+	ay-=screen.miny; by-=screen.miny; cy-=screen.miny; dy-=screen.miny;
+
+	if(bx==ax && by==ay) {
+		markb=mark;
+	} else if( abs(by-ay) > abs(bx-ax) ) {
+		if(by>ay)
+			markb='^';
+		else
+			markb='v';
+	} else {
+		if(bx>ax)
+			markb='>';
+		else
+			markb='<';
+	}
+
+	if(dx==cx && dy==cy) {
+		marke=mark;
+	} else if( abs(dy-cy) > abs(dx-cx) ) {
+		if(dy>cy)
+			marke='^';
+		else
+			marke='v';
+	} else {
+		if(dx>cx)
+			marke='>';
+		else
+			marke='<';
+	}
+
+	for(i=1; i<maxn; i++) {
+		t=(double)i/(double)maxn; t2=t*t; t3=t2*t;
+		nt=1-t; nt2=nt*nt; nt3=nt2*nt;
+
+		setfdot(
+			mark,
+			( ax*t3 + bx*3*t2*nt + cx*3*t*nt2 + dx*nt3 ),
+			( ay*t3 + by*3*t2*nt + cy*3*t*nt2 + dy*nt3 )
+		);
+	}
+	/* mark the ends */
+	setfdot( markb, (double)ax, (double)ay );
+	setfdot( marke, (double)dx, (double)dy );
+}
+
+void
+drawdot(mark, x, y)
+	int mark;
+	int x, y;
+{
+	x=(int)((x-screen.minx)*screen.xscale+0.5);
+	y=(int)((y-screen.miny)*screen.yscale+0.5);
+
+	if(y<0 || y>=screen.physy || x<0 || x>=screen.physx)
+		return;
+	screendot(x,y)=mark;
+}
+
+void
+setabsdot(mark, x, y)
+	int x, y, mark;
+{
+	if(y<0 || y>=screen.rows || x<0 || x>=screen.cols-2)
+		return;
+	screenabsdot(x,y)=mark;
+}
+
+void
+setfdot(mark, fx, fy)
+	int mark;
+	double fx, fy;
+{
+	int x, y;
+
+	x=(int)(fx*screen.xscale+0.5);
+	y=(int)(fy*screen.yscale+0.5);
+
+	if(y<0 || y>=screen.physy || x<0 || x>=screen.physx)
+		return;
+	screendot(x,y)=mark;
+}
+
+/* destructive */
+void
+printscreen(f)
+	FILE *f;
+{
+	int r;
+	char *pi, *pc;
+
+	for(r=screen.rows-1; r>=0; r--) {
+		pc=&screenabsdot(0,r);
+		for(pi=&screenabsdot(-2,r+1); pi>=pc && *pi == ' '; pi--)
+			{}
+		pi[1]='\n';
+		pi[2]=0;
+		fputs(pc, f);
+	}
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/lst.pl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/lst.pl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/lst.pl	(revision 2000)
@@ -0,0 +1,65 @@
+#!/usr/bin/perl
+#
+# script to create HTML file with character table
+# in plain, italic, bold, bold-italic
+#
+# see COPYRIGHT
+#
+
+# width of tables
+$step=16;
+
+# commands to enable and disable the font modes
+# (the fastest changing is first)
+@matrix = (
+	[ "Roman", "Italic", "</i>", "<i>" ],
+	[ "Medium", "Bold", "</b>", "<b>" ],
+	[ "Variable", "Fixed", "</tt>", "<tt>" ],
+);
+
+sub printall
+{
+	local $i, $j;
+
+	printf("<table border=\"0\" >\n");
+	for($j=32; $j<256; $j+=$step) {
+		printf("<tr>\n");
+		for $i ($j..$j+$step-1) {
+			$c=chr($i);
+			if($c eq "<") {
+				$c="&lt;";
+			} elsif($c eq ">") {
+				$c="&gt;";
+			}
+			printf("<td><font color=\"gray\">%03d</font></td><td>\n", $i);
+			printf("<font color=\"white\">%s%s%s</font>\n", $enmode, $c, $dismode);
+			printf("</td>\n");
+		}
+		printf("</tr>\n");
+	}
+	printf("</table><p>\n");
+}
+
+printf("<HTML><HEAD></HEAD><BODY bgcolor=\"black\">\n<font color=\"white\"><p>\n");
+
+for $mask (0.. (1<<@matrix)-1) {
+	#printf("<table><tr>");
+	$mode = $enmode = $dismode = "";
+	for $bit (0.. $#matrix) {
+		$val = ($mask >> $bit) & 1;
+		$mode = $matrix[$bit]->[$val] . "<br>" . $mode;
+		if( $val ) {
+			$enmode = $matrix[$bit]->[3] . $enmode;
+			$dismode = $dismode . $matrix[$bit]->[2];
+		}
+		#printf("=== %d %s %s %s\n", $val, $mode, $enmode, $dismode);
+	}
+	#printf("%x %s %s %s\n", $mask, $mode, $enmode, $dismode);
+	printf("<table border=\"0\"><tr><td>\n");
+	&printall();
+	printf("</td><td valign=top><font size=\"+1\" color=\"yellow\"><b>\n");
+	printf("%s\n", $mode);
+	printf("</b></font></td></tr></table>\n");
+}
+
+printf("</font></BODY></HTML>\n");
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/Makefile
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/Makefile	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/Makefile	(revision 2000)
@@ -0,0 +1,20 @@
+
+PROGS= bz cmpf dmpf
+
+BZOBJS= bz.o bzscreen.o
+
+CFLAGS= -g
+
+all: $(PROGS)
+
+clean:
+	rm -f $(PROGS) *.o *.core core.* core
+
+bz: $(BZOBJS)
+	$(CC) $(CFLAGS) -o bz $(BZOBJS)
+
+cmpf: cmpf.c bmpfont.h
+	$(CC) $(CFLAGS) -o cmpf -I/usr/local/include -L/usr/local/lib cmpf.c -lt1 -lm
+
+dmpf: dmpf.c bmpfont.h
+	$(CC) $(CFLAGS) -o dmpf -I/usr/local/include -L/usr/local/lib dmpf.c -lt1 -lm
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/README
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/README	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/other/README	(revision 2000)
@@ -0,0 +1,127 @@
+Supplements for True Type to PostScript Type 1 Converter 
+
+(Do not edit this file, it is generated from README.html!!!)
+
+bz
+--
+
+A small program to draw the Bezier curves on an alphanumeric display.
+The recommended way of uing it is to run it from xterm with "Tiny"
+(if you want higher magnification) or "Unreadable" (if you want
+higher resolution) font and as big window size as possible. The size
+of the window can be obtained by running "stty -a". For everything else 
+just "Use the source, Luke!"
+
+cmpf
+----
+
+A small program to compare the rendering of two supposedly
+nearly-identical fonts at low resolutions. It requires the
+T1LIB library. This program may be used to compare the
+effect of various options of the converter on the resulting
+fonts. Create two .pfa files, one with one set of options,
+another with another set of options, then use this program
+to compare them.
+
+dmpf
+----
+
+A small program to dump the bitmaps of all glyphs of the font
+at low pixel sizes, up to 20 pixels. It requires the
+T1LIB library. This program may be used to compare the
+effect of changes in the T1LIB rasterizer and just for visual
+search for rendering anomalies.
+
+lst.pl
+------
+
+A simple PERL script that generates an HTML file
+with the full list of all characters in all
+possible styles of the Variable-width and Fixed-width
+fonts. This file is quite convenient to look
+at the converted fonts in Netscape (or other
+graphical browser).
+
+cntstems.pl
+------
+
+A simple PERL script that counts the required hint stack in the
+interpreter to rasterize the glyphs of the font. May be quite
+useful in search for missing glyphs which may be aborted due to
+insufficient stack depth.
+
+showg
+-----
+
+A PERL script that draws the glyphs and their interesting
+metrics (such as coordinates of the dots, hints and blue zones)
+in PostScript. It works only with un-encoded font files generated
+by ttf2pt1. The intended use is like:
+
+  showg [-c <fontfile.t1a>]...  <fontfile.t1a> <glyph-to-draw>... >file.ps
+  gv file.ps # start the Ghostscript viewer
+
+As you can see, multiple glyphs may be specified. The glyphs may be
+specified in one of three ways:
+  - as a decimal code (for example, 43 )
+  - as a glyph name preceded by a slash (for example, /plus )
+  - as a literal character preceded by a dot (for example, .+ )
+
+So for example the following command would draw the same glyph "left
+parenthesis" three times:
+
+  showg file.t1a 40 /parenleft .\( >/file.ps
+
+Don't forget that some characters have to be protected from the shell
+by backslash as shown above, or else the shell would try to interpret
+them before passing to the program.
+
+One file (given as the first argument) is considered the main file
+but multiple files can be specified with option -c for visual comparison
+of the outlines. The glyphs from the main file are drawn in black
+and supplemented with coordinate grid and sidebars for hints. The
+glyphs from the comparison files are drawn in slightly lighter colors 
+(red, cyan, brown) and no supplemental information is provided for them. 
+Each use of option -c adds one comparison file, this option may be used 
+multiple times. If there are more than 3 comparison files the colors
+repeat cyclically.
+
+So for example the following command would draw the same glyph "left
+parenthesis" from three files on the same page:
+
+  showg -c fileA.t1a -c fileB.t1a file.t1a .\( >/file.ps
+
+This program is quite valuable it you want to take a close-up view at 
+the font.
+
+The outlines are drawn in black, the ends of the curves and
+lines are marked as dots, the first dots of the outlines
+are fatter. The Blue Zones are drawn in light blue. The
+substituted hints are marked in red, the global hints are
+marked in blue. The coordinate grid is drawn in green.
+The stems and the values of coordinates are for convenience
+marked twice, on each size of the picture.
+
+showdf
+------
+
+A Perl script to find a list of differing glyphs in two versions of a font
+file (for example, converted with different versions of ttf2pt1 or
+with different options given to ttf2pt1) and feed this list into the showg
+program for display.  The intended use is like:
+
+  showdf <showg-location> <fontfile1.t1a> <fontfile2.t1a> >file.ps
+  gv file.ps # start the Ghostscript viewer
+
+If both showdf and showg scripts are located in the
+same directory, the command would look like:
+
+  ./showdf ./showg font1.t1a font2.t1a >file.ps
+
+For decent results both font files should be converted from the same original
+font and contain the same glyphs with the same names in the same order. 
+Otherwise most probably all the glyphs will be included, or a failure may
+happen if some glyph is not found in one of the files. It is also a good
+idea to convert the fonts for comparison with hinting disabled, otherwise
+the differences in hinting may trigger the otherwise equal glyphs to be shown.
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/byteorder.h
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/byteorder.h	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/byteorder.h	(revision 2000)
@@ -0,0 +1,24 @@
+/*
+ * see COPYRIGHT
+ */
+
+/*	This defines the macroes ntohs and ntohl, which convert short and long
+	ints from network order (used on 68000 chips, and in TrueType font
+	files) to whatever order your computer uses. #define _BIG_ENDIAN or not
+	to control which set of definitions apply. If you don't know, try both. If
+	you have a peculiar machine you're on your own.
+*/
+
+#if defined(_BIG_ENDIAN)
+#define	ntohl(x)	(x)
+#define	ntohs(x)	(x)
+#else
+#define ntohs(x) \
+    ((USHORT)((((USHORT)(x) & 0x00ff) << 8) | \
+              (((USHORT)(x) & 0xff00) >> 8))) 
+#define ntohl(x) \
+    ((ULONG)((((ULONG)(x) & 0x000000ffU) << 24) | \
+             (((ULONG)(x) & 0x0000ff00U) <<  8) | \
+             (((ULONG)(x) & 0x00ff0000U) >>  8) | \
+             (((ULONG)(x) & 0xff000000U) >> 24)))  
+#endif
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/convert
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/convert	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/convert	(revision 2000)
@@ -0,0 +1,367 @@
+#!/bin/sh
+# 
+#  Copyright (c) 1998-2000
+#   Sergey A. Babkin.  All rights reserved.
+# 
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+# 
+#  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+#  WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+# 
+#  Sergey A. Babkin (sab123@hotmail.com, babkin@bellatlantic.net)
+# 
+
+# Use : convert [cfgfile]
+
+# Convert TTF fonts from source directory to Type1 fonts in the destination
+# directory, converted to the specified encodings. Also generate the
+# fonts.scale, fonts.dir and fonts.alias files in the destination directory.
+
+# clean some variables so that they won't be inherited from environment
+
+ENCDIR=
+MAPDIR=
+
+# path to the configuration file
+
+if [ $# -eq 1 ]
+then
+	CFGFILE=$1
+else
+	CFGFILE=`pwd`/convert.cfg
+fi
+
+# these setting would be edited during installation
+
+TTF2PT1_BINDIR=
+TTF2PT1_LIBXDIR=
+TTF2PT1_SHAREDIR=
+
+[ -z "$TTF2PT1_BINDIR" ] && {
+	TTF2PT1_BINDIR=`pwd`/..
+}
+[ -z "$TTF2PT1_LIBXDIR" ] && {
+	TTF2PT1_LIBXDIR=`pwd`/..
+}
+[ -z "$TTF2PT1_SHAREDIR" ] && {
+	TTF2PT1_SHAREDIR=`pwd`/..
+}
+
+# directory from where we are started
+
+RUNDIR=`pwd`
+
+# paths to various utilities
+
+T1ASM=$TTF2PT1_LIBXDIR/t1asm
+[ -f $T1ASM -a -x $T1ASM ] || {
+	# if it's not in libxdir, use whatever t1asm the system provides
+	T1ASM=t1asm
+}
+TTF2PT1=$TTF2PT1_BINDIR/ttf2pt1
+TRANS=$TTF2PT1_SHAREDIR/scripts/trans
+T1FDIR=$TTF2PT1_SHAREDIR/scripts/t1fdir
+FORCEISO=$TTF2PT1_SHAREDIR/scripts/forceiso
+X2GS=$TTF2PT1_SHAREDIR/scripts/x2gs
+SUFFIX="pfa"
+
+MYSELF=convert
+
+# include the configuration
+
+if [ -r $CFGFILE ] 
+then {
+	. $CFGFILE
+} else {
+	echo "
+Can't find the configuration file 
+   $CFGFILE
+Please look at the sample file convert.cfg.sample,
+copy it to convert.cfg and modify for
+you actual configuration." >&2
+	exit 1
+} fi
+
+# path to the directory with descriptions of encodings
+[ -z "$ENCDIR" ] && {
+	ENCDIR=$TTF2PT1_SHAREDIR/encodings
+}
+
+# directory with the external Unicode maps
+[ -z "$MAPDIR" ] && {
+	MAPDIR=$TTF2PT1_SHAREDIR/maps
+}
+
+LOG=$DSTDIR/convert.log
+
+# configure the ttf2pt1 options from our options
+
+# artefact of backwards-compatibility with .cfg
+[ -z "$CORRECTWIDTH" -a YES != "$DONTCORRECTWIDTH" ] && {
+	TTF2PT1="$TTF2PT1 -OW"
+}
+[ YES = "$CORRECTWIDTH" ] && {
+	TTF2PT1="$TTF2PT1 -OW"
+}
+
+[ YES != "$HINTSUBST" ] && {
+	TTF2PT1="$TTF2PT1 -Ou" # meaning changed past 3.22
+}
+
+[ YES = "$ALLGLYPHS" -a YES = "$ENFORCEISO" ] && {
+	echo "$MYSELF: options ALLGLYPHS and ENFORCEISO are mutually exclusive" >&2
+	exit 1
+}
+
+[ YES = "$ALLGLYPHS" ] && {
+	TTF2PT1="$TTF2PT1 -a"
+}
+
+[ YES = "$GENUID" ] && {
+	TTF2PT1="$TTF2PT1 -uA"
+}
+
+[ YES != "$ENFORCEISO" ] && {
+	FORCEISO=cat
+}
+
+[ YES = "$CREATEPFB" ] && {
+	T1ASM="$T1ASM -b"
+	SUFFIX="pfb"
+}
+
+# parse the information about the source files
+
+eval "`echo \"$SRCDIRS\" | awk '
+	BEGIN	{ n=0; }
+	/^ *$/	{ next; }
+		{ 
+			if(n>9) { 
+				printf(\"echo \\\"Only 9 encodings are supported at once!\\\" >&2\n\");
+				printf(\"exit 1\\n\");
+			} else {
+				printf(\"SRCDIR%d=%s\n\",n,$1);
+				printf(\"SRCLANG%d=%s\n\",n,$2);
+				printf(\"SRCENC%d=%s\n\",n,$3);
+				printf(\"SRCMAP%d=%s\n\",n,$4);
+				n++;
+			}
+		}'`"
+
+# check whether we have the directories
+
+mkdir $DSTDIR 2>/dev/null >/dev/null
+[ -d $DSTDIR -a -r $DSTDIR -a -w $DSTDIR -a -x $DSTDIR ] || {
+	echo "$MYSELF: can't access the directory $DSTDIR" >&2
+	exit 1
+}
+
+# go to our destination directory
+
+cd $DSTDIR || {
+	echo "$MYSELF: can't chdir to $DSTDIR" >&2
+	exit 1
+}
+
+rm -f ./* 2>/dev/null
+>$LOG
+
+for dirno in 0 1 2 3 4 5 6 7 8 9
+do {
+	
+	SRCDIR=`eval "echo \\\$SRCDIR$dirno"`
+	SRCLANG=`eval "echo \\\$SRCLANG$dirno"`
+	SRCENC=`eval "echo \\\$SRCENC$dirno"`
+	SRCMAP=`eval "echo \\\$SRCMAP$dirno"`
+	DSTENC=`eval "echo \\\$DSTENC$SRCLANG"`
+
+	echo $SRCDIR
+	echo $SRCENC
+
+	[ -z "$SRCDIR" ] && break;
+
+	[ "`ls $SRCDIR/*.[tT][tT][fF] 2>/dev/null |wc -l`" -gt 0 ] || {
+		echo "$MYSELF: no TTF files in $SRCDIR" >&2
+		exit 1
+	}
+
+	# check whether we have the encoding tables
+
+	[ -n "$SRCENC" ] || {
+		echo "$MYSELF: you must specify some source encoding" >&2
+		exit 1
+	}
+
+	[ unknown = "$SRCLANG" -o -n "$DSTENC" ] || {
+		echo "$MYSELF: you must specify some destination encodings" >&2
+		exit 1
+	}
+
+	# handle aliases of the destination encodings
+
+	XDSTENC=
+	DSTALIAS=
+
+	[ -r $ENCDIR/$SRCLANG/encodings.alias ] && {
+		for i in $DSTENC
+		do {
+			TO=`awk  '$1=="'$i'" { print $2; }' <$ENCDIR/$SRCLANG/encodings.alias`
+			if [ -n "$TO" ]
+			then {
+				[ -f $ENCDIR/$SRCLANG/$i.tbl -a -r $ENCDIR/$SRCLANG/$i.tbl ] && {
+					echo "WARNING: $SRCLANG encoding $i found as both table and alias" >&2
+					echo "WARNING: The alias takes precedence" >&2
+				}
+				DSTALIAS="$TO $i
+$DSTALIAS"
+				XDSTENC="$TO
+$XDSTENC"
+			} else {
+				XDSTENC="$i
+$XDSTENC"
+			} fi
+		} done
+		DSTENC=`echo "$XDSTENC" | sort -u | tr '
+' ' '`
+	}
+
+	[ unknown != "$SRCLANG" ] && {
+		for i in $SRCENC $DSTENC
+		do {
+			[ -f $ENCDIR/$SRCLANG/$i.tbl -a -r $ENCDIR/$SRCLANG/$i.tbl ] || {
+				echo "$MYSELF: can't read $ENCDIR/$SRCLANG/$i.tbl" >&2
+				exit 1
+			}
+		} done
+	}
+
+	# OK convert the files
+
+	for file in $SRCDIR/*.[tT][tT][fF]
+	do {
+		name=`echo $file | tr A-Z a-z`
+		name=`basename $name .ttf`
+
+		echo "Converting $name"
+
+		# generate the assembler code
+
+		echo "******* $name -> t1a ************" >>$LOG
+		
+		if [ -n "$SRCMAP" ]
+		then {
+			$TTF2PT1 -L $MAPDIR/$SRCMAP $file ./$name.$SRCENC 2>>$LOG
+		} else {
+			$TTF2PT1 -l $SRCLANG $file ./$name.$SRCENC 2>>$LOG
+		} fi
+
+		[ -s ./$name.$SRCENC.t1a ] || {
+			echo "$MYSELF: can't generate Type1 assembler code for $name" >&2
+			continue;
+		}
+
+		[ -s ./$name.$SRCENC.afm ] || {
+			echo "$MYSELF: can't generate AFM metrics file for $name" >&2
+			continue;
+		}
+
+		mv ./$name.$SRCENC.afm ./$name.$SRCENC.xafm
+
+		psname=`$T1FDIR -g $FOUNDRY " " -f ./$name.$SRCENC.t1a \
+			| awk '{print substr($1,2);}'`
+
+		# now for each destination encoding generate a .pfa/b file
+		# and record for fonts.scale
+
+		if [ unknown != "$SRCLANG" ]
+		then {
+			for enc in $DSTENC
+			do {
+				echo "******* $name -> $enc ************" >>$LOG
+
+				sed 's|^\/FontName.*$|/FontName /'$psname$enc' def|' <./$name.$SRCENC.t1a \
+					| $TRANS $ENCDIR/$SRCLANG/$SRCENC.tbl $ENCDIR/$SRCLANG/$enc.tbl \
+					| $FORCEISO | $T1ASM >./$name.$enc.$SUFFIX
+				[ -s ./$name.$enc.$SUFFIX ] || {
+					echo "$MYSELF: can't convert/assemble Type1 file for $name.$enc" >&2
+					continue;
+				}
+
+				sed 's|^FontName.*$|FontName '$psname$enc'|' <./$name.$SRCENC.xafm \
+					| $TRANS $ENCDIR/$SRCLANG/$SRCENC.tbl $ENCDIR/$SRCLANG/$enc.tbl \
+					| uniq | $FORCEISO >./$name.$enc.afm
+				[ -s ./$name.$enc.afm ] || {
+					echo "$MYSELF: can't convert AFM file for $name.$enc" >&2
+				}
+
+				aliases=`echo "$DSTALIAS" | grep "^$enc" | cut -d\  -f2`
+				echo "******* aliases: $aliases" >>$LOG
+
+				$T1FDIR -d fonts.ttf fonts.alias $FOUNDRY $enc $aliases -f ./$name.$enc.$SUFFIX
+				echo "/$psname$enc	($name.$enc.$SUFFIX)	;" >>Fontmap.ttf
+			} done
+		} else {
+			enc="$SRCENC"
+			echo "******* $name -> $enc ************" >>$LOG
+
+			sed 's|^\/FontName.*$|/FontName /'$psname$enc' def|' <./$name.$SRCENC.t1a \
+				| $FORCEISO | $T1ASM >./$name.$enc.$SUFFIX
+			[ -s ./$name.$enc.$SUFFIX ] || {
+				echo "$MYSELF: can't convert/assemble Type1 file for $name.$enc" >&2
+				continue;
+			}
+
+			sed 's|^FontName.*$|FontName '$psname$enc'|' <./$name.$SRCENC.xafm \
+				| uniq | $FORCEISO >./$name.$enc.afm
+			[ -s ./$name.$enc.afm ] || {
+				echo "$MYSELF: can't convert AFM file for $name.$enc" >&2
+			}
+
+			$T1FDIR -d fonts.ttf fonts.alias $FOUNDRY $enc -f ./$name.$enc.$SUFFIX
+			echo "/$psname$enc	($name.$enc.$SUFFIX)	;" >>Fontmap.ttf
+		} fi
+
+		[ YES = "$REMOVET1A" ] && {
+			rm -f ./$name.$SRCENC.t1a
+			rm -f ./$name.$SRCENC.xafm
+		}
+
+	} done
+} done
+
+wc -l <fonts.ttf >fonts.scale
+cat fonts.ttf >>fonts.scale
+mkfontdir
+
+[ YES = "$GENUID" ] && {
+	echo "Checking for duplicate UniqueIDs..."
+	for id in `find . -name "*.$SUFFIX" -exec grep UniqueID {} \; \
+			| cut -d" " -f2 | sort | uniq -d`
+	do {
+		echo "Warning: duplicate UniqueID $id in files:" | tee -a $LOG
+		find  . -name "*.$SUFFIX" -exec grep -l "UniqueID $id " {} \; 2>&1 | tee -a $LOG
+	} done
+}
+
+[ -n "$GSDIR" ] || {
+	echo "$MYSELF: The Ghostscript base directory is not specified.\n" >&2
+	echo "$MYSELF: Installation of the Ghostscript fonts is deferred.\n" >&2
+	echo "$MYSELF: You can do it later by running x2gs\n" >&2
+	exit 0
+}
+
+echo "Installing the Ghostscript fonts"
+cd $RUNDIR
+$X2GS $CFGFILE || {
+	echo "$MYSELF: Installation of the Ghostscript fonts has failed.\n" >&2
+	echo "$MYSELF: You can correct the problem and run x2gs to repeat\n" >&2
+	exit 0
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/frommap
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/frommap	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/frommap	(revision 2000)
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+#
+# A script to convert a Unicode character map to
+# the C code
+#
+
+sub fromhex
+{
+	return eval "0x".$_[0];
+}
+
+$inmap=0;
+
+while(<>)
+{
+	if(/^CHARMAP/) {
+		$inmap=1;
+	} elsif(/^END CHARMAP/) {
+		$inmap=0;
+	} elsif($inmap
+	&& /^\s*\S+\s+\/x([0-9a-fA-F][0-9a-fA-F])\s+\<U([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])/) {
+		$map[fromhex($1)]=fromhex($2);
+	}
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/html2man
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/html2man	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/html2man	(revision 2000)
@@ -0,0 +1,231 @@
+#!/usr/bin/perl
+#
+# See COPYRIGHT
+#
+# Script to generate a pod file from an html source (the same one as for text files too)
+# and later this pod file it passed through pod2man
+#
+# Use:
+#  html2man [ <man-dir> [<version-dir>] ] <file.html
+#
+# <Man-dir> is the directory where the man pages will be created
+# (current directory by default). If a file name is given instead of
+# directory then the directory of that file is used.
+# <Version-dir> is the directory containing the ttf2pt1 files version.h
+# and CHANGES.html which are used to generate the release name and date
+# for the man page (by default looks in current directory and then in up to
+# 5 ancestor directories).
+# If the version files can not be found then the release defaults to
+# "current" and the date defaults to today.
+#
+# Special formatting in the html file is:
+# All controls are hidden within HTML comments that must occupy a whole separate line
+# Such a line looks like:
+# <!-- =<html2man_directive> <arguments> -->
+# <!-- ==<pod_directive> <arguments> -->
+# Any sort of directive must be followed by a space. The pod directives are
+# automatically surrounded by empty lines in the output file.
+# The html2man directives are:
+#
+# <!-- =defdoc <docid> <file> <section> -->
+# Define a man page. Multiple man pages can be defined in the same HTML
+# file. <Docid> is a short name by which this man page will be referred in the
+# other directives. <File> is the name of the man page, and <section> is the
+# section of the manual (do not confuse with sections within a man page).
+#
+# <!-- =section <docid> <page_section_name> -->
+# All the text following this directive is copied (with translation)
+# into the specified section of the specified man page. The sections
+# may appear in arbitrary order, they will be rearranged to the standard
+# order before output. Only standard section names are permitted (see @stdsect
+# below). The pod directives which occur outside of man sections are ignored,
+# just like the common text. The translation of HTML tags is:
+#
+# <br> - to paragraph break
+# <b> - to B<>
+# <i> - to I<>
+# <tt> - to C<>
+# <a href> - to F<>
+# <ul>, <li>, </ul> - to =over 2, =item *, =back
+# &nbsp;, &amp;, &lt;, &gt - to their symbols, appropriately encoded
+#
+# The rest of HTML tags is removed
+#
+# If the same section is started more than once, the text from the
+# second appearance will be added to the first, etc.
+#
+# <!-- =stop -->
+# Stop copying text to the man page.
+#
+# <!-- =cont -->
+# Continue copying text to the man page, same section as before.
+#
+# <!-- =text <text> -->
+# Insert this <text> into the man page (works only when copying is enabled).
+# Characters &lt;, &gt;, &amp; are converted as usual.
+
+@mons = qw(January February March April May June July August September October November December);
+
+$dir = $ARGV[0];
+$maindir = $ARGV[1];
+
+if($dir eq "") {
+	$dir = ".";
+} elsif( ! -d $dir ) {
+	if( ! ($dir =~ s|\/[^/]*$||) ) {
+		$dir = ".";
+	}
+}
+if($maindir eq "") {
+	$maindir = ".";
+	for($i=0; $i<5; $i++) {
+		if(-f "$maindir/version.h") {
+			last;
+		}
+		$maindir = "../$maindir";
+	}
+}
+
+if( open(VERFILE, "<$maindir/version.h") ) {
+	while(<VERFILE>) {
+		if( /^\s*\#define\s+TTF2PT1_VERSION\s+\"(.*)\"/ ) {
+			$release = "version $1";
+		}
+	}
+	close(VERFILE);
+	if( $release =~ /SNAP-([0-9][0-9])([0-9][0-9])([0-9][0-9])/ ) {
+		$date = sprintf("%s %d, 20%02d", $mons[$2-1], $3, $1);
+	} elsif( open(CFILE, "<$maindir/CHANGES.html") ) {
+		while(<CFILE>) {
+			if( /\<H4\>/) {
+				last;
+			}
+		}
+		$_ = <CFILE>;
+		chomp;
+		if( $_ =~ s/^.*?-- // ) {
+			$date = $_;
+		}
+		close(CFILE);
+	}
+}
+
+if($release eq "") {
+	$release = "current";
+}
+if($date eq "") {
+	@lt = localtime(time);
+	$date = sprintf("%s %d, %d", $mons[$lt[4]], $lt[3], 1900+$lt[5]);
+}
+
+#printf(STDERR "date=%s release=%s\n", $date, $release);
+
+$writemode = 0;
+
+while(<STDIN>) {
+	if( s/^\<\!\-\- \=(\S+)\s+//) { 
+		$cmd = $1;
+		s/\s*--\>\s*$//;
+		#printf(STDERR "cmd=%s args=%s\n", $cmd, $_);
+		if($cmd =~ /^=/) {
+			if($writemode) {
+				$text{$tosect} .= "\n\n$cmd $_\n\n";
+			}
+		} elsif($cmd eq "defdoc") {
+			@sl = split;
+			push(@allids, $sl[0]);
+			$file{$sl[0]} = $sl[1];
+			$mansect{$sl[0]} = $sl[2];
+		} elsif($cmd eq "section") {
+			# tosect includes the file id
+			$tosect = $_;
+			$text{$tosect} .= "\n\n";
+			$writemode = 1;
+		} elsif($cmd eq "stop") {
+			$writemode = 0;
+			$text{$tosect} .= "\n";
+		} elsif($cmd eq "cont") {
+			$writemode = 1;
+		} elsif($cmd eq "text") {
+			if($writemode) {
+				s/\&lt\;/</gi;
+				s/\&gt\;/>/gi;
+				s/\&amp\;/\&/gi;
+				$text{$tosect} .= "$_\n";
+			}
+		}
+	} elsif($writemode) {
+		s/^\s+//;
+
+		s/\{/\&lbr;/g;
+		s/\}/\&rbr;/g;
+
+		s/\<br\>/\n\n/gi;
+		#s/\<blockquote\>/\n\n=over 4\n\n/gi;
+		#s/\<\/blockquote\>/\n\n=back\n\n/gi;
+		s/\<ul\>/\n\n=over 4\n\n/gi;
+		s/\<\/ul\>/\n\n=back\n\n/gi;
+		s/\<li\>\s*/\n\n=item \*\n\n/gi;
+		s/\<i\>(.*?)\<\/i\>/I\{\1\}/gi;
+		s/\<b\>(.*?)\<\/b\>/B\{\1\}/gi;
+		s/\<tt\>(.*?)\<\/tt\>/C\{\1\}/gi;
+		s/\<a href\=\.*?\>(.*?)\<\/a\>/F\{\1\}/gi;
+		s/\<.*?\>//g;
+		s/\{/\</g;
+		s/\}/\>/g;
+
+		s/\&nbsp\;/S< >/gi;
+		s/\&amp\;/\&/gi;
+		s/\&lt\;/E<lt>/gi;
+		s/\&gt\;/E<gt>/gi;
+		#s/\|/E<verbar>/g;
+		#s/\//E<sol>/g;
+		s/\&lbr\;/\{/g;
+		s/\&rbr\;/\}/g;
+
+		#printf(STDERR "section=%s add=%s", $tosect, $_);
+		$text{$tosect} .= $_;
+	}
+}
+
+@stdsect = (
+	"NAME", 
+	"SYNOPSIS",
+	"DESCRIPTION",
+	"OPTIONS",
+	"RETURN VALUE",
+	"ERRORS",
+	"EXAMPLES",
+	"ENVIRONMENT",
+	"FILES",
+	"SEE ALSO",
+	"NOTES",
+	"CAVEATS",
+	"DIAGNOSTICS",
+	"BUGS", 
+	"RESTRICTIONS",
+	"AUTHOR",
+	"HISTORY" );
+
+#printf(STDERR "allids= @allids\n");
+for $id (@allids) {
+	#print(STDERR "creating man page $id $file{$id} $mansect{$id}\n\n");
+	die "Unable to create pod file $dir/$file{$id}.pod"
+		unless open(PODF, ">$dir/$file{$id}.pod");
+	print(PODF "=pod\n\n");
+	for $sect (@stdsect) {
+		$sid = "$id $sect";
+		#printf(STDERR "trying %s\n", $sid);
+		if(defined $text{$sid}) {
+			print(PODF "=head1 $sect\n\n$text{$sid}\n\n");
+		}
+	}
+	print(PODF "=cut\n");
+	close(PODF);
+	die "Unable to generate the man page $dir/$file{$id}.1"
+		if system("pod2man --section=\"$mansect{$id}\" --release=\"$release\" "
+		. "--center=\"TTF2PT1 Font Converter\" --date=\"$date\" "
+		. "$dir/$file{$id}.pod >$dir/$file{$id}.1");
+
+	unlink("$dir/$file{$id}.pod");
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/x2gs
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/x2gs	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/x2gs	(revision 2000)
@@ -0,0 +1,118 @@
+#!/bin/sh
+#
+#  Copyright (c) 1998-2000
+#   Sergey A. Babkin.  All rights reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#
+#  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+#  WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+#  Sergey A. Babkin (sab123@hotmail.com, babkin@bellatlantic.net)
+#
+
+# Use : x2gs [cfgfile]
+
+# path to the configuration file
+
+if [ $# -eq 1 ]
+then
+	CFGFILE=$1
+else
+	CFGFILE=`pwd`/convert.cfg
+fi
+
+MYSELF=x2gs
+
+# include the configuration
+
+if [ -r $CFGFILE ] 
+then {
+	. $CFGFILE
+} else {
+	echo "
+Can't find the configuration file 
+   $CFGFILE
+Please look at the sample file convert.cfg.sample,
+copy it to convert.cfg and modify for
+you actual configuration." >&2
+	exit 1
+} fi
+
+LOG=$DSTDIR/convert.log
+
+[ -n "$GSDIR" ] || {
+	echo "$MYSELF: The Ghostscript base directory is not specified." >&2
+	echo "$MYSELF: Installation of the Ghostscript fonts is deferred." >&2
+	exit 0
+}
+
+[ -n "$GSCONFDIR" -a -d "$GSCONFDIR" ] || {
+	echo "$MYSELF: The Ghostscript configuration directory does not exist." >&2
+	echo "$MYSELF: Installation of the Ghostscript fonts is aborted." >&2
+	exit 1
+}
+
+[ -r "$GSCONFDIR/Fontmap" ] || {
+	echo "$MYSELF: Can't find Fontmap in the GS configuration directory." >&2
+	echo "$MYSELF: Installation of the Ghostscript fonts is aborted." >&2
+	exit 1
+}
+
+[ -n "$GSFONTDIR" -a -d "$GSFONTDIR" ] || {
+	echo "$MYSELF: The Ghostscript font directory does not exist." >&2
+	echo "$MYSELF: Installation of the Ghostscript fonts is aborted." >&2
+	exit 1
+}
+
+# link the fonts to $GSFONTDIR
+
+rm -f $GSCONFDIR/Fontmap.ttf
+
+# historically x2gs supported multiple X11 directories
+for d in $DSTDIR
+do {
+	for i in $d/*.pfa $d/*.afm
+	do {
+		[ -f $i ] || break;
+
+		n=`basename $i`
+
+		rm -f $GSFONTDIR/$n
+
+		ln -s $i $GSFONTDIR/$n || {
+			echo "$MYSELF: Unable to link $n to GS font directory">&2
+		}
+	} done
+
+	cat $d/Fontmap.ttf >>$GSCONFDIR/Fontmap.ttf
+} done
+
+if [ YES = "$INSTALLFONTMAP" ]
+then {
+	mv $GSCONFDIR/Fontmap $GSCONFDIR/Fontmap.old || {
+		echo "$MYSELF: can't save Fontmap.old" >&2
+		exit 1
+	}
+
+	sed "\\|^% begin fonts from $DSTDIR|,\\|^% end fonts from $DSTDIR|d" \
+			<$GSCONFDIR/Fontmap.old >$GSCONFDIR/Fontmap || {
+		echo "$MYSELF: Can't create the new Fontmap file" >&2
+		echo "$MYSELF: Trying to restore the old Fontmap file" >&2
+		cp $GSCONFDIR/Fontmap.old $GSCONFDIR/Fontmap
+		exit 1
+	}
+	echo "% begin fonts from $DSTDIR" >>$GSCONFDIR/Fontmap
+	echo "" >>$GSCONFDIR/Fontmap
+	cat $GSCONFDIR/Fontmap.ttf >>$GSCONFDIR/Fontmap
+	echo "" >>$GSCONFDIR/Fontmap
+	echo "% end fonts from $DSTDIR" >>$GSCONFDIR/Fontmap
+} fi
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/trans
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/trans	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/trans	(revision 2000)
@@ -0,0 +1,164 @@
+#!/usr/bin/perl
+# 
+#  Copyright (c) 1998-2000
+#   Sergey A. Babkin.  All rights reserved.
+# 
+#  See the full text of the license in the COPYRIGHT file.
+# 
+#  Sergey A. Babkin (sab123@hotmail.com, babkin@users.sourceforge.net)
+# 
+
+#
+# Script to transcode the Type1 disassembled font to other encoding
+#
+
+# calculation of UniqueID from old UID and encoding name
+# we don't have unsigned integer arithmetic in Perl
+# so we try to do at least something
+sub newuid
+{
+	use integer;
+	my ($u,$enc)=@_;
+	my $i, $uid;
+
+	$uid=substr($u, -6, 6);
+	$u=substr($u, 0, 4);
+
+	$uid+=0;
+	for $i (split(//,$enc)) {
+		$uid*=37;
+		$uid+=ord($i);
+		$uid+=($uid>>16) & 0xff;
+		$uid&=0xffffff;
+	}
+
+	($uid % 1000000) + 4000000;
+	#$u . substr(sprintf("%d",$uid), 0, 5);
+}
+
+if($#ARGV != 1) {
+	printf(STDERR "Use: trans src-table dst-table <src-font >dst-font\n");
+	exit 1;
+}
+
+# tables are formatted in two columns, one row per character
+# name decimal-code
+
+# Read the destination table
+
+open(FILE,"<".$ARGV[1])
+	or die "Unable to read $ARGV[2]\n";
+while(<FILE>) {
+	@sl=split(/\s+/);
+	$dst{$sl[0]}=$sl[1];
+}
+close(FILE);
+
+#read the source table and build the translation table
+
+open(FILE,"<".$ARGV[0])
+	or die "Unable to read $ARGV[0]\n";
+while(<FILE>) {
+	@sl=split(/\s+/);
+	$trans{$sl[1]}=$dst{$sl[0]};
+}
+close(FILE);
+
+# name of the encoding, for UniqueID
+$encname=$ARGV[1];
+$encname =~ s|^.*\/||g;
+$encname =~ s|\..*$||g;
+
+# now read the font file, skip everything upto the encoding table
+# we suppose that the file was autogenerated by ttf2pt1 with my patches
+
+while(<STDIN>) {
+	if( /^\/FontName\s+(\S+)/) {
+		$fontname=$1;
+	}
+	if( /^\/UniqueID\s+(\S+)/) {
+		use integer;
+		my $uid=$1;
+		$_=sprintf("/UniqueID %u def\n", &newuid($uid, $encname));
+	}
+	print $_;
+	if(/^\/Encoding/) {
+		$fontfile=1;
+		last;
+	}
+	if(/^StartCharMetrics/) {
+		$fontfile=0;
+		last;
+	}
+}
+
+# read the old encoding table and build the new encoding table
+
+if($fontfile) { # .t1a
+	while($row=<STDIN>) {
+		if( $row !~  /^dup/) {
+			last;
+		}
+
+		@sl=split(/\s+/,$row);
+
+		$new=$trans{$sl[1]};
+		if($new eq "") {
+			$new=$sl[1];
+			if($enc{$new} eq "") {
+				$enc{$new}=$sl[2];
+			}
+		} else {
+			$enc{$new}=$sl[2];
+		}
+	}
+
+	# print new encoding table
+
+	for $i (0..255) {
+		if($enc{$i}) {
+			printf("dup %d %s put\n",$i,$enc{$i});
+		} else {
+			printf("dup %d /.notdef put\n",$i);
+		}
+	}
+} else { # .afm
+	while($row=<STDIN>) {
+		if($row !~ /^C\s+(\d+)(\s*;.*)\n/) {
+			last;
+		}
+		$code=$1;
+		$part2=$2;
+
+		$new=$trans{$code};
+		if($new eq "") {
+			$new=$code;
+			if($enc{$new} eq "") {
+				$enc{$new}=$part2;
+			}
+		} else {
+			$enc{$new}=$part2;
+		}
+	}
+
+	# print new encoding table
+
+	for $i (0..255) {
+		if($enc{$i}) {
+			printf("C %d%s\n",$i,$enc{$i});
+		}
+	}
+}
+
+print $row;
+
+# now copy the rest of file
+
+while(<STDIN>) {
+	if( /^\/UniqueID\s+(\S+)/) {
+		use integer;
+		my $uid=$1;
+		$_=sprintf("/UniqueID %u def\n", &newuid($uid, $encname));
+	}
+	print;
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/unhtml
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/unhtml	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/unhtml	(revision 2000)
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# This script removes the HTML formatting from a file. If the file was designed
+# with such use in mind and was properly formatted besides HTML (such as the README
+# file for ttf2pt1) it will look good as a plain text file.
+#
+# This script supports a very limited set of HTML formatting. Everything that
+# goes before <BODY> is removed.  Any lines that
+# contain only the HTML formatting or start with "<!" or contain only ">"
+# are completely removed. Then all the in-line formatting is removed.
+# Then "&nbsp;", "&lt;", "&gt;" are changed to " ", "<", ">".
+
+sed '1,/<[bB][oO][dD][yY]>/d;
+/^<!/d;
+s/<[lL][iI]>/-/g;
+s/^</< </;
+s/> *$/>>/;
+s/<[^<>]*>//g;
+/^< *>$/d;
+/^>>$/d;s/^< //;
+s/>$//;
+s/&[nN][bB][sS][pP];/ /g;s/&[lL][tT];/</g;s/&[gG][tT];/>/g;s/&[aA][mM][pP];/\&/g;'
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/forceiso
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/forceiso	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/forceiso	(revision 2000)
@@ -0,0 +1,450 @@
+#!/usr/bin/perl
+# 
+#  Copyright (c) 1998
+#   Sergey A. Babkin.  All rights reserved.
+# 
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+# 
+#  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+#  WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+# 
+#  Sergey A. Babkin (sab123@hotmail.com, babkin@bellatlantic.net)
+# 
+
+#
+# Force the font to use the encoding as close to ISO Latin-1 as possible
+#
+# Use:
+#   forceiso [format] <file1.t1a >file2.t1a
+# where format is a printf-type format used to select names for the
+# glyphs without standard Latin-1 names. It must expect one argument,
+# the character code. The default format is "_%d".
+
+%latin1=(
+   0, "",
+   1, "",
+   2, "",
+   3, "",
+   4, "",
+   5, "",
+   6, "",
+   7, "",
+   8, "",
+   9, "",
+  10, "",
+  11, "",
+  12, "",
+  13, "",
+  14, "",
+  15, "",
+  16, "",
+  17, "",
+  18, "",
+  19, "",
+  20, "",
+  21, "",
+  22, "",
+  23, "",
+  24, "",
+  25, "",
+  26, "",
+  27, "",
+  28, "",
+  29, "",
+  30, "",
+  31, "",
+  32, "space",
+  33, "exclam",
+  34, "quotedbl",
+  35, "numbersign",
+  36, "dollar",
+  37, "percent",
+  38, "ampersand",
+  39, "quoteright",
+  40, "parenleft",
+  41, "parenright",
+  42, "asterisk",
+  43, "plus",
+  44, "comma",
+  45, "hyphen",
+  46, "period",
+  47, "slash",
+  48, "zero",
+  49, "one",
+  50, "two",
+  51, "three",
+  52, "four",
+  53, "five",
+  54, "six",
+  55, "seven",
+  56, "eight",
+  57, "nine",
+  58, "colon",
+  59, "semicolon",
+  60, "less",
+  61, "equal",
+  62, "greater",
+  63, "question",
+  64, "at",
+  65, "A",
+  66, "B",
+  67, "C",
+  68, "D",
+  69, "E",
+  70, "F",
+  71, "G",
+  72, "H",
+  73, "I",
+  74, "J",
+  75, "K",
+  76, "L",
+  77, "M",
+  78, "N",
+  79, "O",
+  80, "P",
+  81, "Q",
+  82, "R",
+  83, "S",
+  84, "T",
+  85, "U",
+  86, "V",
+  87, "W",
+  88, "X",
+  89, "Y",
+  90, "Z",
+  91, "bracketleft",
+  92, "backslash",
+  93, "bracketright",
+  94, "asciicircum",
+  95, "underscore",
+  96, "grave",
+  97, "a",
+  98, "b",
+  99, "c",
+ 100, "d",
+ 101, "e",
+ 102, "f",
+ 103, "g",
+ 104, "h",
+ 105, "i",
+ 106, "j",
+ 107, "k",
+ 108, "l",
+ 109, "m",
+ 110, "n",
+ 111, "o",
+ 112, "p",
+ 113, "q",
+ 114, "r",
+ 115, "s",
+ 116, "t",
+ 117, "u",
+ 118, "v",
+ 119, "w",
+ 120, "x",
+ 121, "y",
+ 122, "z",
+ 123, "braceleft",
+ 124, "bar",
+ 125, "braceright",
+ 126, "asciitilde",
+ 127, "",
+ 128, "",
+ 129, "",
+ 130, "",
+ 131, "",
+ 132, "",
+ 133, "",
+ 134, "",
+ 135, "",
+ 136, "",
+ 137, "",
+ 138, "",
+ 139, "",
+ 140, "",
+ 141, "",
+ 142, "",
+ 143, "",
+ 144, "",
+ 145, "",
+ 146, "",
+ 147, "",
+ 148, "",
+ 149, "",
+ 150, "",
+ 151, "",
+ 152, "",
+ 153, "",
+ 154, "",
+ 155, "",
+ 156, "",
+ 157, "",
+ 158, "",
+ 159, "",
+ 160, "",
+ 161, "exclamdown",
+ 162, "cent",
+ 163, "sterling",
+ 164, "currency",
+ 165, "yen",
+ 166, "brokenbar",
+ 167, "section",
+ 168, "dieresis",
+ 169, "copyright",
+ 170, "ordfeminine",
+ 171, "guillemotleft",
+ 172, "logicalnot",
+ 173, "minus",
+ 174, "registered",
+ 175, "macron",
+ 176, "degree",
+ 177, "plusminus",
+ 178, "twosuperior",
+ 179, "threesuperior",
+ 180, "acute",
+ 181, "mu",
+ 182, "paragraph",
+ 183, "periodcentered",
+ 184, "cedilla",
+ 185, "onesuperior",
+ 186, "ordmasculine",
+ 187, "guillemotright",
+ 188, "onequarter",
+ 189, "onehalf",
+ 190, "threequarters",
+ 191, "questiondown",
+ 192, "Agrave",
+ 193, "Aacute",
+ 194, "Acircumflex",
+ 195, "Atilde",
+ 196, "Adieresis",
+ 197, "Aring",
+ 198, "AE",
+ 199, "Ccedilla",
+ 200, "Egrave",
+ 201, "Eacute",
+ 202, "Ecircumflex",
+ 203, "Edieresis",
+ 204, "Igrave",
+ 205, "Iacute",
+ 206, "Icircumflex",
+ 207, "Idieresis",
+ 208, "Eth",
+ 209, "Ntilde",
+ 210, "Ograve",
+ 211, "Oacute",
+ 212, "Ocircumflex",
+ 213, "Otilde",
+ 214, "Odieresis",
+ 215, "multiply",
+ 216, "Oslash",
+ 217, "Ugrave",
+ 218, "Uacute",
+ 219, "Ucircumflex",
+ 220, "Udieresis",
+ 221, "Yacute",
+ 222, "Thorn",
+ 223, "germandbls",
+ 224, "agrave",
+ 225, "aacute",
+ 226, "acircumflex",
+ 227, "atilde",
+ 228, "adieresis",
+ 229, "aring",
+ 230, "ae",
+ 231, "ccedilla",
+ 232, "egrave",
+ 233, "eacute",
+ 234, "ecircumflex",
+ 235, "edieresis",
+ 236, "igrave",
+ 237, "iacute",
+ 238, "icircumflex",
+ 239, "idieresis",
+ 240, "eth",
+ 241, "ntilde",
+ 242, "ograve",
+ 243, "oacute",
+ 244, "ocircumflex",
+ 245, "otilde",
+ 246, "odieresis",
+ 247, "divide",
+ 248, "oslash",
+ 249, "ugrave",
+ 250, "uacute",
+ 251, "ucircumflex",
+ 252, "udieresis",
+ 253, "yacute",
+ 254, "thorn",
+ 255, "ydieresis"
+);
+
+# how to treat the unknown characters
+$unk = "_%d";
+
+if($#ARGV >= 0) {
+	$unk = $ARGV[0];
+}
+
+# fill in the unnamed characters
+if( sprintf($unk, 0) eq sprintf($unk, 1) ) {
+	die "The format for unnamed characters must not be a constant"
+}
+for($i=0; $i < 256; $i++) {
+	if($latin1{$i} eq "") {
+		$latin1{$i} = sprintf($unk, $i);
+	}
+}
+
+while(<STDIN>) {
+	print $_;
+	if(/^\/Encoding\s+.*\s+array/) {
+		$fontfile=1;
+		last;
+	}
+	if(/^StartCharMetrics\s+/) {
+		$fontfile=0;
+		last;
+	}
+}
+
+$ndups=0;
+
+if($fontfile) { # .t1a file 
+	while(<STDIN>) {
+		if($_ !~ /^dup\s+(\d+)\s+\/(\S+)\s+put/) {
+			print $_;
+			last;
+		}
+		$code=$1+0;
+		$name=$2;
+		if($name eq ".notdef") {
+			print $_;
+		} else {
+			printf("dup %d /%s put\n",$code,$latin1{$code});
+			if($trans{$name}) { # two or more references to the same glyph
+				$ndups++;
+				#printf(STDERR "forceiso: %d dups\n", $ndups);
+				if($copies{$name} eq "") {
+					$copies{$name} = $latin1{$code};
+				} else {
+					$copies{$name} .= "|" . $latin1{$code};
+				}
+			} else {
+				$trans{$name}=$latin1{$code};
+			}
+		}
+
+	}
+
+	while(<STDIN>) {
+		if( /\/CharStrings\s+(\d+)\s/) {
+			$nchars=$1+$ndups;
+			#printf(STDERR "forceiso: %d dups %d chars\n", $ndups, $nchars);
+			$_ =~ s|/CharStrings\s+\d+\s|/CharStrings $nchars |;
+			print $_;
+			last;
+		}
+		print $_;
+	}
+
+	while(<STDIN>) {
+		if(/^\/(\S+)/) {
+			$name=$1;
+			$to=$trans{$name};
+
+			$header=$_;
+			$body="";
+
+			if($to ne "") {
+				$_ =~ s/^\/\S+/\/$to/;
+			}
+			print $_;
+		} elsif(/endchar/) {
+			print $_;
+			if($copies{$name}) {
+				for $to (split(/\|/,$copies{$name})) {
+					$header =~ s/^\/\S+/\/$to/;
+					print($header, $body, $_);
+				}
+			}
+		} else {
+			print $_;
+			$body .= $_;
+		}
+	}
+} else { # .afm file 
+	while(<STDIN>) {
+		if($_ !~ /^C\s+(\d+)(\s*;.*N\s+)(\S+)(\s*;.*)\n/) {
+			print $_;
+			last;
+		}
+		$code=$1+0;
+		$name=$3;
+		$part2=$2;
+		$part4=$4;
+		if($name eq ".notdef") {
+			print $_;
+		} else {
+			printf("C %d%s%s%s\n",$code,$part2,$latin1{$code},$part4);
+			if($copies{$name} eq "") {
+				$copies{$name} = $latin1{$code};
+			} else {
+				$copies{$name} .= "|" . $latin1{$code};
+				$ndups++;
+				#printf(STDERR "forceiso: %d dups\n", $ndups);
+			}
+		}
+
+	}
+
+	while(<STDIN>) {
+		if(/^StartKernPairs\s+(\d+)/) {
+			last;
+		}
+		print $_;
+	}
+
+	$npairs=0;
+	$kps="";
+	while(<STDIN>) {
+		if(/^KPX\s+(\S+)\s+(\S+)\s+(.*)\n/) {
+			$name1=$1;
+			$name2=$2;
+			$metric=$3;
+
+			$cp1=$copies{$name1};
+			if($cp1 eq "") {
+				$cp1=$name1;
+			}
+
+			$cp2=$copies{$name2};
+			if($cp2 eq "") {
+				$cp2=$name2;
+			}
+
+			for $to1 (split(/\|/,$cp1)) {
+				for $to2 (split(/\|/,$cp2)) {
+					$kps .= sprintf("KPX %s %s %s\n", $to1, $to2, $metric);
+					$npairs++;
+				}
+			}
+		} else {
+			if($npairs!=0) {
+				printf("StartKernPairs %d\n", $npairs);
+				printf("%s", $kps);
+				$npairs=0;
+				$kps="";
+			}
+			print $_;
+		}
+	}
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/t1fdir
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/t1fdir	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/t1fdir	(revision 2000)
@@ -0,0 +1,227 @@
+#!/usr/bin/perl
+#
+#  Copyright (c) 1998
+#   Sergey A. Babkin.  All rights reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#
+#  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+#  WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+#  Sergey A. Babkin (sab123@hotmail.com, babkin@bellatlantic.net)
+#
+
+#
+# Script that reads the Type1 font files and prints out the fonts.scale
+# lines for them
+#
+
+# other substrings (regexps) that are considered irrelevant
+# and sould be removed from the font names:
+@wrongstr= (
+	"koi8r",
+	"koi8",
+	"cp1251",
+	"ibm1251",
+	"win1251",
+	"cp866",
+	"ibm866",
+	"iso8859[1-9]",
+	"iso8859",
+	"isolatin[0-9]",
+	"isolatin",
+	"latin[0-9]",
+	"^ER ",
+	"^K8 ",
+);
+
+sub usage
+{
+	print STDERR "Use: \n";
+	print STDERR "   t1fdir [-g] <foundry> <encoding>... [ -f <file>...]\n";
+	print STDERR "or\n";
+	print STDERR "   t1fdir -d fonts.scale fonts.alias <foundry> <encoding>... [ -f <file>...]\n";
+}
+
+$ghost=0;
+if( $ARGV[0] eq "-g" ) {
+	shift @ARGV;
+	$ghost=1;
+} elsif( $ARGV[0] eq "-d" ) {
+	shift @ARGV;
+	$files=1;
+	$scalef=shift @ARGV;
+	$aliasf=shift @ARGV;
+}
+
+if($#ARGV<2) {
+	&usage();
+	exit 1;
+}
+
+$foundry=$ARGV[0];
+shift @ARGV;
+
+while($#ARGV>=0) {
+	if($ARGV[0] eq "-f") {
+		shift @ARGV;
+		last;
+	}
+	push(@encodings,$ARGV[0]);
+	shift @ARGV;
+}
+
+if($files) {
+	open(SCALEF, ">>$scalef") || die "Can't write to $scalef";
+	open(ALIASF, ">>$aliasf") || die "Can't write to $aliasf";
+}
+for $name (@ARGV) {
+
+	$familyname="";
+	$fullname="";
+	$fontname="";
+	$weight="";
+	$angle=0;
+
+	open(FILE,"<$name") || die "Unable to open file $name\n";
+
+	$type="p"; # by default
+
+	while(<FILE>) {
+		if(/eexec/) { last; }
+		if(/^\/FamilyName.*\((.+)\)/ ) { $familyname= $1; }
+		if(/^\/FullName.*\((.+)\)/ ) { $fullname= $1; }
+		if(/^\/FontName.*\((.+)\)/ ) { $fontname= $1; }
+		if(/^\/Weight.*\((.+)\)/ ) { $weight= $1; }
+		if(/^\/ItalicAngle.*(\d+)/ ) { $angle= $1+0; }
+		if(/^\/isFixedPitch/) {
+			if(/true/) {
+				$type="m";
+			} else {
+				$type="p";
+			}
+		}
+	}
+
+	# now try to interpret this information 
+
+	$allinfo= $familyname ." ". $fullname ." ". $fontname ." ". $weight;
+	$lcallinfo=$allinfo;
+	$lcallinfo=~tr[A-Z][a-z];
+
+	$familyname.="_"; # just a delimiter for substitutions
+	$familyname=~s/Bold([^a-z])/$1/g;
+	$familyname=~s/Italic([^a-z])/$1/g;
+	$familyname=~s/Oblique([^a-z])/$1/g;
+	$familyname=~s/Roman([^a-z])/$1/g;
+
+	for $i (@wrongstr) { # for uppercase- and space- sensitive strings
+		$familyname =~ s/$i//g;
+	}
+
+	$familyname=~tr[A-Z][a-z];
+	$familyname=~tr[A-Za-z0-9][]cd;
+
+	for $i (@wrongstr) { # for case-insensitive strings
+		$familyname =~ s/$i//g;
+	}
+
+	if( $familyname eq "") {
+		$familyname="unknown";
+	}
+
+	$fn=$name;
+	$fn=~ s/.*\///g;
+
+	$n=0;
+	for $encoding (@encodings) {
+		$n++;
+		if($ghost) {
+			printf("/%s-", uc(substr($familyname,0,1)).substr($familyname,1));
+
+			$r=1;
+
+			if( $allinfo =~ /Bold[^a-z]/
+			|| $lcallinfo =~ /\bbold\b/ ) {
+				printf("Bold");
+				$r=0;
+			}
+			if( $allinfo =~ /Italic[^a-z]/
+			|| $lcallinfo =~ /\bitalic\b/ 
+			|| $angle>0 ) {
+				printf("Italic");
+				$r=0;
+			} elsif( $allinfo =~ /Oblique[^a-z]/
+			|| $lcallinfo =~ /\boblique\b/ 
+			|| $angle<0 ) {
+				printf("Oblique");
+				$r=0;
+			}
+
+			if($r) {
+				printf("Roman");
+			}
+
+			printf("-%s\t (%s)	;\n",$encoding,$fn);
+		} else {
+			$xenc=$encoding;
+			$xenc =~ s/\-/_/g;
+
+			$srec = sprintf("-%s-%s_%s-",$foundry,$familyname,$xenc);
+			$arec = sprintf("-%s-%s-",$foundry,$familyname);
+
+			if( $allinfo =~ /Bold[^a-z]/
+			|| $lcallinfo =~ /\bbold\b/ ) {
+				$srec .= "bold-";
+				$arec .= "bold-";
+			} else {
+				$srec .= "medium-";
+				$arec .= "medium-";
+			}
+
+			if( $allinfo =~ /Italic[^a-z]/
+			|| $lcallinfo =~ /\bitalic\b/ 
+			|| $angle>0 ) {
+				$srec .= "i-";
+				$arec .= "i-";
+			} elsif( $allinfo =~ /Oblique[^a-z]/
+			|| $lcallinfo =~ /\boblique\b/ 
+			|| $angle<0 ) {
+				$srec .= "o-";
+				$arec .= "o-";
+			} else {
+				$srec .= "r-";
+				$arec .= "r-";
+			}
+
+			$srec .= sprintf("normal--0-0-0-0-%s-0-adobe-fontspecific",$type,$encoding);
+			$arec .= sprintf("normal--0-0-0-0-%s-0-%s",$type,$encoding);
+
+			if($files) {
+				if($n==1) {
+					printf(SCALEF "%s %s\n",$fn,$srec);
+					printf(ALIASF "%s %s\n",$arec,$srec);
+					$srec1=$srec;
+				} else {
+					printf(ALIASF "%s %s\n",$arec,$srec1);
+				}
+			} else {
+				printf("%s %s\n",$fn,$arec);
+			}
+		}
+	}
+
+	close(FILE);
+}
+if($files) {
+	close(SCALEF);
+	close(ALIASF);
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/mkrel
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/mkrel	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/mkrel	(revision 2000)
@@ -0,0 +1,104 @@
+#!/bin/sh
+#
+# See COPYRIGHT
+#
+# Script to create a release or shapshot archive.
+# Also checks for very basic inconsistences.
+# Expects that it would be run from the current directory of ttf2pt1,
+# and that the parent directory is the place to create archives.
+# Expects that the CVS environment variables are set properly.
+
+VER=`grep TTF2PT1_VERSION version.h | cut -d\" -f2`
+
+case "$1" in
+snapshot)
+	echo "$VER" | egrep '^[0-9][0-9]*\.[0-9].*-CURRENT$' || {
+		echo "mkrel: version.h must contain *-CURRENT to create a snapshot" >&2
+		exit 1
+	}
+	grep "^current$" CHANGES.html >/dev/null || {
+		echo "mkrel: CHANGES.html must list 'current' to create a snapshot" >&2
+		exit 1
+	}
+	snapdate=`date "+ %y  %m  %d " | sed 's/ \([0-9]\) / 0& /g;s/ //g'`
+	NEWVER=`echo "$VER" | sed "s/-CURRENT/-SNAP-$snapdate/"`
+	TAG="-D tomorrow"
+	;;
+release)
+	echo "$VER" | egrep '^[0-9][0-9]*\.[0-9][.0-9]*$' || {
+		echo "mkrel: version.h must not be -CURRENT to create a release" >&2
+		exit 1
+	}
+	grep "^$VER -- " CHANGES.html >/dev/null || {
+		echo "mkrel: CHANGES.html must list the same version as version.h" >&2
+		exit 1
+	}
+	NEWVER="$VER"
+	TAG=`echo "-r ttf2pt1-$VER" | sed \
+		's/\(-[0-9][0-9]*\.[0-9]\)$/&.0/;s/\./-/g'`
+	;;
+*)
+	echo "use: mkrel [snapshot|release]" >&2
+	exit 1
+	;;
+esac
+
+cd .. || {
+	echo "mkrel: can't cd to .." >&2
+	exit 1
+}
+
+rm -f ttf2pt1-$NEWVER.tgz ttf2pt1-$NEWVER.zip 
+rm -rf ttf2pt1-$NEWVER
+
+echo "cvs -z9 export $TAG -d ttf2pt1-$NEWVER ttf2pt1"
+cvs -z9 export $TAG -d ttf2pt1-$NEWVER ttf2pt1 || {
+	echo "mkrel: unable to export from CVS" >&2
+	echo "mkrel: check that the CVS tree is properly tagged" >&2
+	exit 1
+}
+
+
+# a little bit more for snapshot: correct the version
+(
+case "$1" in
+snapshot)
+	cd ttf2pt1-$NEWVER || {
+		echo "mkrel: can't cd to ../ttf2pt1-$NEWVER" >&2
+		exit 1
+	}
+
+	sed "s/^current\$/$NEWVER/" <CHANGES.html >CHANGES.html.new \
+	&& mv CHANGES.html.new CHANGES.html || {
+		echo "mkrel: can't update CHANGES.html" >&2
+		exit 1
+	}
+
+	sed "s/\".*-CURRENT\"/\"$NEWVER\"/" <version.h >version.h.new \
+	&& mv version.h.new version.h || {
+		echo "mkrel: can't update version.h" >&2
+		exit 1
+	}
+	;;
+esac
+)
+
+# generate the man pages - in case if the users would have no pod2man
+(
+	cd ttf2pt1-$NEWVER || {
+		echo "mkrel: can't cd to ../ttf2pt1-$NEWVER" >&2
+		exit 1
+	}
+
+	make mans
+)
+
+tar czvf ttf2pt1-$NEWVER.tgz ttf2pt1-$NEWVER || {
+	echo "mkrel: can't create .tgz archive" >&2
+	exit 1
+}
+
+zip -u -r ttf2pt1-$NEWVER.zip ttf2pt1-$NEWVER || {
+	echo "mkrel: can't create .zip archive" >&2
+	exit 1
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/inst_dir
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/inst_dir	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/inst_dir	(revision 2000)
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+#
+# Script to create a directory for installation
+#
+# (c) 2000 by The TTF2PT1 Project
+# See COPYRIGHT for full license
+#
+
+if( $#ARGV!=0 && $#ARGV !=3) {
+	die "Use: $0 dir-name [owner group mode]\n"
+}
+
+if( $#ARGV==3 ) {
+	$owner = $ARGV[1];
+	$group = $ARGV[2];
+	eval "\$mode = 0$ARGV[3];";
+} else {
+	$owner = "root";
+	$group = "bin";
+	$mode = 0755;
+}
+
+@sl = split(/\//, $ARGV[0]);
+$prefix = shift(@sl);
+if($prefix eq "") {
+	$prefix = "/" . shift(@sl);
+}
+
+while(1) {
+	if( ! -d "$prefix" ) {
+		die "Unable to create directory $prefix:\n$!\n"
+			unless mkdir($prefix, $mode);
+		die "Unable to change owner of $prefix to $owner\n"
+			if system("chown $owner $prefix");
+		die "Unable to change group of $prefix to $group\n"
+			if system("chgrp $group $prefix");
+	}
+	if($#sl < 0) {
+		last;
+	}
+	$prefix .= "/" . shift(@sl);
+}
+exit(0);
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/inst_file
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/inst_file	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/inst_file	(revision 2000)
@@ -0,0 +1,17 @@
+#!/bin/sh
+#
+# Script to install a file (for portability reasons)
+#
+# (c) 2000 by The TTF2PT1 Project
+# See COPYRIGHT for full license
+#
+
+[ $#  != 5 ] && {
+	echo  "Use: $0 file-from file-to owner group mode" >&2
+	exit 1
+}
+
+cp -f $1 $2 \
+&& chown $3 $2 \
+&& chgrp $4 $2 \
+&& chmod 0$5 $2
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/convert.cfg.sample
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/convert.cfg.sample	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/scripts/convert.cfg.sample	(revision 2000)
@@ -0,0 +1,192 @@
+#!/bin/sh
+# 
+#  Copyright (c) 1998, 1999
+#   Sergey A. Babkin.  All rights reserved.
+# 
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+# 
+#  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+#  WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+# 
+#  Sergey A. Babkin (sab123@hotmail.com, babkin@bellatlantic.net)
+# 
+
+# Configuration file for the conversion script.
+# Convert TTF fonts from source directory to Type1 fonts in the destination
+# directory, converted to the specified encodings. Also generate the
+# fonts.scale, fonts.dir and fonts.alias files in the destination 
+# directory.
+
+# This file is an example of configuration. It contains
+# the examples of settings for all the supported languages. 
+# Please check the settings and change them for
+# your needs.
+
+# The directories with source TTF files.
+# The lines are formatted in 3 columns:
+# - directory path
+# - language name 
+# - encoding of the fonts in this directory
+# - optional Unicode map file name
+# There should be a separate directory for each input encoding.
+# No more than 10 encodings are supported now for
+# one conversion.
+#
+# If the Unicode map file name is specified then this
+# external map file will be used to encode the resulting 
+# font. Otherwise the built-in table for this language 
+# will be used.  If you have some special encoding map that 
+# does not conform to any of the defined languages, set the
+# language name to 'unknown' and encoding name to whatever
+# you want to see in the X11 logical font description.
+#
+# NOTES:
+# For Russian, Bulgarian and English (as a subset of
+# Western) languages you may pile together the Unicode 
+# fonts and the fonts in the Windows encoding into the same
+# directory, they will be sorted out automatically. For
+# the Russian and Bulgarian Unicode fonts set the
+# source encoding to ibm-1251.  
+#
+# For Turkish, Baltic, Central European and other Western
+# European languages the resulting fonts will be in
+# a proper iso8859 encoding only if the source fonts
+# are in Unicode. 
+#
+# AdobeStd encoding will work only
+# for the source font in Unicode encoding which
+# either have proper character names or map the
+# Adobe character extensions to the expected codes
+# (or both). 
+# 
+# The external maps work only if the source fonts
+# are in Unicode, otherwise the original font's
+# encoding will be preserved.
+#
+# Better don't use the map adobe-standard-encoding.map,
+# unless you really need it, it's very incomplete.
+#
+# The map planes are not supported in the scripts yet.
+
+SRCDIRS="
+/SOME_DIR_WITH_cyrillic_windows_TTF_FONTS cyrillic ibm-1251
+/SOME_DIR_WITH_cyrillic_koi_TTF_FONTS cyrillic koi8-r
+/SOME_DIR_WITH_unicode_TTF_FONTS latin4 iso8859-4
+/SOME_DIR_WITH_unicode_TTF_FONTS latin5 iso8859-9
+/SOME_DIR_WITH_unicode_TTF_FONTS latin2 iso8859-2
+/SOME_DIR_WITH_western_TTF_FONTS latin1 iso8859-1
+/SOME_DIR_WITH_unicode_TTF_FONTS adobestd adobe-std
+/SOME_DIR_WITH_weird_unicode_TTF_FONTS adobestd adobe-std adobe-standard-encoding.map
+/SOME_DIR_WITH_unicode_TTF_FONTS unknown my-special some-very-special.map
+"
+
+# the directory for converted X11 fonts
+DSTDIR=/usr/X11R6/lib/X11/fonts/fromttf
+
+# The base directory of Ghostscript;
+# set it to empty space if you don't want the Ghostscript fonts installed. 
+# For some systems the directory is /usr/share/ghostscript.
+GSDIR=/usr/local/share/ghostscript
+
+# The font directory of Ghostscript;
+# should work for all the versions of Ghostscript. Except (as always) the one 
+# packaged with Red Hat Linux 6.0. For RH6.0 it should be set to either 
+# /usr/share/fonts/default/ghostscript or /usr/share/fonts/default/Type1.
+GSFONTDIR=$GSDIR/fonts
+
+# The configuration directory of Ghostscript where the Fontmap file is stored;
+# the example is for Ghostscript 6.0, change for the version you actually 
+# have. This directory is used only to reach the Fontmap file, so if your
+# installation stores the Fontmap files in the same directory as fonts
+# (like Debian Linux does - isn't Linux wonderful in its differences?)
+# then set it to the same value as GSFONTDIR.
+GSCONFDIR=$GSDIR/6.0
+
+# The encodings of generated files by languages
+# (see the whole list of possible encodings for each
+# language in the directories encoding/<language> )
+#
+# Here prefer windows-1251 over ibm-1251: it aliases
+# to the same thing but is the name expected by
+# Netscape Navigator. For the same reason prefer
+# cp-866 over ibm-866.
+
+DSTENCcyrillic="koi8-r windows-1251 iso8859-1"
+DSTENClatin1="iso8859-1"
+DSTENClatin2="iso8859-2"
+DSTENClatin4="iso8859-4"
+DSTENClatin5="iso8859-9"
+DSTENCadobestd="adobe-std"
+
+# name of foundry for generated fonts
+# (for HP-UX or if you just want to use an 
+# honest name change to "misc")
+FOUNDRY=fromttf
+
+# If you want to use non-standard directories with encoding
+# maps and tables then set these values 
+
+MAPDIR=
+ENCDIR=
+
+# Options:
+# set the value to YES to enable, NO (or anything else) to disable
+
+# CORRECTWIDTH - use the option "-w" of converter. Set this
+#   option to NO if your fonts are well-designed. At least some
+#   freeware fonts have the width metrics broken and the letters
+#   look smashed into each other. If this option is set to "YES"
+#   the converter tries to correct this defect but this may have slight
+#   side effects on the well-designed fonts: the characters that
+#   are designed to be close to each other will get wider spacing.
+# REMOVET1A - remove the un-encoded .t1a files after they are converted
+#   and assembled if this option set to YES
+# INSTALLFONTMAP - if set to YES install the entries for the converted 
+#   fonts right into the Ghostscript Fontmap file. Otherwise just
+#   symlink the font files and copy Fontmap.ttf to the Ghostscript
+#   directories.
+# HINTSUBST - enable the hint substitution (option "-H" of 
+#   converter). You may want to compare the looks of the fonts with and
+#   without this option and decide what is better (see the discussion in 
+#   the README file). If the fonts with this option set to YES look
+#   completely empty in X11 then set this option to NO or install
+#   the supplied patches.
+# ENFORCEISO - try to disguise the character names according to
+#   the ISOLatin1 encoding table. Set it to YES if some program
+#   expects strictly the ISO names but the fonts have different
+#   character names (this is not the case for X11 any more).
+#   Options ENFORCEISO and ALLGLYPHS can't be both set to YES.
+# ALLGLYPHS - include all the glyphs (characters) from the source
+#   fonts into the resulting fonts, even if those are not
+#   included into the encoding tables. If the supplied X11
+#   patches are not installed this may cause font size overflow
+#   in X11. So if you are not sure better leave it as NO.
+#   For more details see the discussion of the option "-a".
+# GENUID - automatically generate UniqueID for all the fonts.
+#   Setting it to YES may be useful only for the fonts to
+#   be loaded the fonts into a printer with hard disk. Be
+#   advised that although unlikely the generated UniqueIDs
+#   for two fonts may coincide, then the consequences will
+#   be unpredictable.
+# CREATEPFB - if set to YES create .pfb font files, otherwise
+#   .pfa font files. The .pfb files take somewhat less disk
+#   space but contain 8-bit binary data.
+
+CORRECTWIDTH=YES
+REMOVET1A=YES
+INSTALLFONTMAP=YES
+HINTSUBST=NO
+ENFORCEISO=NO
+ALLGLYPHS=NO
+GENUID=NO
+CREATEPFB=YES
+
+# End of the configuration file
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/runt1asm.c
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/runt1asm.c	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/runt1asm.c	(revision 2000)
@@ -0,0 +1,61 @@
+/*
+ * Wrap-around code to either compile in t1asm or call it externally
+ *
+ * Copyright (C) 2000 by Sergey Babkin
+ * Copyright (C) 2000 by The TTF2PT1 Project
+ *
+ * See COPYRIGHT for full license
+ */
+
+#ifdef EXTERNAL_T1ASM
+
+#include <stdio.h>
+#include <errno.h>
+
+FILE *ifp;
+FILE *ofp;
+
+int 
+runt1asm(
+	int pfbflag
+)
+{
+	char *cmd;
+	int id, od;
+	int error;
+
+	/* first make a copy in case some of then is already stdin/stdout */
+	if(( id = dup(fileno(ifp)) )<0) {
+		perror("** Re-opening input file for t1asm");
+		exit(1);
+	}
+	if(( od = dup(fileno(ofp)) )<0) {
+		perror("** Re-opening output file for t1asm");
+		exit(1);
+	}
+	fclose(ifp); fclose(ofp);
+	close(0);
+	if(( dup(id) )!=0) {
+		perror("** Re-directing input file for t1asm");
+		exit(1);
+	}
+	close(1);
+	if(( dup(od) )!=1) {
+		perror("** Re-directing output file for t1asm");
+		exit(1);
+	}
+	close(id); close(od);
+
+	if(pfbflag)
+		error = execlp("t1asm", "t1asm", "-b", NULL);
+	else
+		error = execlp("t1asm", "t1asm", NULL);
+
+	perror("** Calling t1asm");
+	
+	exit(1);
+}
+
+#else
+#	include "t1asm.c"
+#endif
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/unicode-sample.map
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/unicode-sample.map	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/unicode-sample.map	(revision 2000)
@@ -0,0 +1,158 @@
+# this file is a sample Unicode map description.
+# It describes which glyphs are to be included in the font
+# and at which character position they are to be put.
+
+# If the character position is greater than 255, the glyph is included, but
+# does not appear in the encoding table (you must then use font reencoding
+# to use this glyph).
+# That makes it possible to have more than 256 glyphs in a font.
+# Currently the maximum supported number of glyphs is 1024.
+
+# Use this file as the argument to ttf2pt1's -L option.
+
+# 1999-11-24 Thomas.Henlich@mailbox.tu-dresden.de
+# 2000-03-01 Sergey Babkin: added 3rd format
+
+# comment lines start with '#' or '%' or '//'
+
+# The default source encoding table in the TTF file is Unicode (pid=3,eid=1).
+# However a map may specify another source encoding with the "id <pid> <eid>"
+# directive. If this directive is used at the beginning of the map file,
+# it applies to the whole file. If it is used after a "plane" directive,
+# then it sets the source encoding for this particular destination plane
+# (possibly overriding the file-wide id directive). The user can also
+# specify the source encoding explicitly at the comman line in the
+# argument to the option -L. This used-specified source encoding overrides
+# any id directives in the map file.
+
+# examples:
+
+# same as Unicode (default)
+id 3 1
+
+# One file may contain multiple actual translation tables. Each particular
+# table within a file is named a plane. The primary use of planes is
+# for multi-plane Eastern fonts with over 256 glyphs: for them one TTF
+# file gets converted into multiple Type1 files, with each resulting file
+# containing one plane of the original font. But they may also be used
+# in other creative ways. Each plane may be specified in different format
+# although this is not recommended for aesthetical reasons. If a map file
+# contains any specifications of planes then the plane argument MUST
+# be specified to the converter with that map file. If a map file
+# contains no specifications of planes then the plane argument MUST NOT
+# be specified to the converter with that map file.
+#
+# The plane maps start from the plane directive and continue to the next
+# plane directive or end of file. The plane directive must be located
+# at the very beginning of a separate string and contain the word "plane"
+# followed by whitespace and the plane name. The whitespace characters
+# are not allowed in the plane names. Non-alphanumeric characters are
+# discouraged in the plane names as well.
+
+# examples:
+
+plane 81
+=27	U+0027	APOSTROPHE
+
+plane otherplane
+ 0, 1, 2
+
+
+% There is one code assignment per line.
+// Three formats are recognized:
+# 1. optional whitespace, followed by '=', followed by a hex number
+# (character position), followed by optional whitespace, followed by
+# 'U+', followed by a four-digit hex number (the Unicode of the glyph we want
+# here), followed by any number of characters.
+
+// example:
+
+=20	U+0020	SPACE
+=48	U+0021	EXCLAMATION MARK
+=22	U+0022	QUOTATION MARK
+=23	U+0023	NUMBER SIGN
+=24	U+0024	DOLLAR SIGN
+=25	U+0025	PERCENT SIGN
+=26	U+0026	AMPERSAND
+=27	U+0027	APOSTROPHE
+
+=E0	U+042E	CYRILLIC CAPITAL LETTER YU
+=E1	U+0410	CYRILLIC CAPITAL LETTER A
+=E2	U+0411	CYRILLIC CAPITAL LETTER BE
+=E3	U+0426	CYRILLIC CAPITAL LETTER TSE
+=E4	U+0414	CYRILLIC CAPITAL LETTER DE
+=E5	U+0415	CYRILLIC CAPITAL LETTER IE
+=E6	U+0424	CYRILLIC CAPITAL LETTER EF
+=E7	U+0413	CYRILLIC CAPITAL LETTER GHE
+
+% 2. optional whitespace, followed by '<', followed by one or more
+% non-whitespace characters,
+% followed by optional whitespace, followed by '/x',  followed by
+% a hex number (character position), followed by optional
+% whitespace, followed by '<U', followed by a four-digit hex number
+% (the Unicode of the glyph we want here), followed by '>' and any number
+% of characters.
+
+# example:
+
+<I>                    /x40     <U0049> LATIN CAPITAL LETTER I
+<t>                    /x41     <U0074> LATIN SMALL LETTER T
+<r>                    /x43     <U0072> LATIN SMALL LETTER R
+<o>                    /x44     <U006F> LATIN SMALL LETTER O
+<c>                    /x45     <U0063> LATIN SMALL LETTER C
+<k>                    /x46     <U006B> LATIN SMALL LETTER K
+<s>                    /x47     <U0073> LATIN SMALL LETTER S
+
+<Eu>                   /xA4     <U20AC> EURO SIGN
+
+# 3. optional whitespace, followed by '!', followed by a hex number
+# (character position), followed by optional whitespace, followed by
+# 'U+', followed by a four-digit hex number (the Unicode of the glyph we want
+# here), followed by the name of the glyph that will be used in the
+# output file.
+
+# example:
+
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+
+# 4. compact format: just list of unicodes separated by commas or ranges
+# denoted by a dash between unicodes. These unicodes are mapped to
+# the output codes starting from 0 and continuously increasing.
+# It is possible to reset the current code by using the "at" directive
+# which must start at beginning of the line and give the new current
+# output code (which will be assigned to the next occuring unicode)
+# as decimal, hexadecimal or octal in C notation. The "at directive must
+# take a separate line. The spaces around unicodes don't matter.
+
+# example: 
+# map unicodes 0x40, 0x400, 0x4000 to the output codes 0, 1, 2 and unicodes
+# 0xf010 - 0xf020, 0xf030 to the output codes 0x11-0x22
+
+ 0, 1, 2
+at 0x11
+ 0xf010- 0xf020, 0xf030
+
+
+# the first format is used by Roman Czyborra on his fine WWW pages:
+# http://czyborra.com/charsets/iso8859.html
+
+# the second format is used in the Linux locale charmaps files:
+# /usr/share/i18n/charmaps/*
+
+# we don't need those glyphs in the encoding table
+=100     U+0030  DIGIT ZERO
+=101     U+0031  DIGIT ONE
+=102     U+0032  DIGIT TWO
+=103     U+0033  DIGIT THREE
+=104     U+0034  DIGIT FOUR
+=105     U+0035  DIGIT FIVE
+=106     U+0036  DIGIT SIX
+=107     U+0037  DIGIT SEVEN
+=108     U+0039  DIGIT NINE
+=109     U+0038  DIGIT EIGHT
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/ugbk.map
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/ugbk.map	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/ugbk.map	(revision 2000)
@@ -0,0 +1,3295 @@
+#  GBK --> Unicode conversion table:
+#     generated by Chen Xiangyang (chenxy@sun.ihep.ac.cn)
+#
+#     it contains all 21886 characters of GBK character set, it also contains
+#     some unused codes in order to make the array easy to use.
+#          Code range: first byte:    0x81 -- 0xFE          126
+#                      second byte:   0x40 -- 0xFF          192
+#                      code points:   126 x 192 = 24192
+#
+#     Usage:
+#
+#       unsigned short GBK_code, unicode;
+#       int pos;
+#       pos = ((GBK_code>>8)-0x81)*192 + ((GBK_Code&0x00FF)-0x40);
+#       unicode = gbk2uni[pos];
+#
+# Converted to ttf2pt1 map format by Sergey Babkin
+#
+
+plane 81
+at 0x40
+  0x4E02, 0x4E04, 0x4E05, 0x4E06, 0x4E0F, 0x4E12, 0x4E17, 0x4E1F, 
+  0x4E20, 0x4E21, 0x4E23, 0x4E26, 0x4E29, 0x4E2E, 0x4E2F, 0x4E31, 
+  0x4E33, 0x4E35, 0x4E37, 0x4E3C, 0x4E40, 0x4E41, 0x4E42, 0x4E44, 
+  0x4E46, 0x4E4A, 0x4E51, 0x4E55, 0x4E57, 0x4E5A, 0x4E5B, 0x4E62, 
+  0x4E63, 0x4E64, 0x4E65, 0x4E67, 0x4E68, 0x4E6A, 0x4E6B, 0x4E6C, 
+  0x4E6D, 0x4E6E, 0x4E6F, 0x4E72, 0x4E74, 0x4E75, 0x4E76, 0x4E77, 
+  0x4E78, 0x4E79, 0x4E7A, 0x4E7B, 0x4E7C, 0x4E7D, 0x4E7F, 0x4E80, 
+  0x4E81, 0x4E82, 0x4E83, 0x4E84, 0x4E85, 0x4E87, 0x4E8A,      0, 
+  0x4E90, 0x4E96, 0x4E97, 0x4E99, 0x4E9C, 0x4E9D, 0x4E9E, 0x4EA3, 
+  0x4EAA, 0x4EAF, 0x4EB0, 0x4EB1, 0x4EB4, 0x4EB6, 0x4EB7, 0x4EB8, 
+  0x4EB9, 0x4EBC, 0x4EBD, 0x4EBE, 0x4EC8, 0x4ECC, 0x4ECF, 0x4ED0, 
+  0x4ED2, 0x4EDA, 0x4EDB, 0x4EDC, 0x4EE0, 0x4EE2, 0x4EE6, 0x4EE7, 
+  0x4EE9, 0x4EED, 0x4EEE, 0x4EEF, 0x4EF1, 0x4EF4, 0x4EF8, 0x4EF9, 
+  0x4EFA, 0x4EFC, 0x4EFE, 0x4F00, 0x4F02, 0x4F03, 0x4F04, 0x4F05, 
+  0x4F06, 0x4F07, 0x4F08, 0x4F0B, 0x4F0C, 0x4F12, 0x4F13, 0x4F14, 
+  0x4F15, 0x4F16, 0x4F1C, 0x4F1D, 0x4F21, 0x4F23, 0x4F28, 0x4F29, 
+  0x4F2C, 0x4F2D, 0x4F2E, 0x4F31, 0x4F33, 0x4F35, 0x4F37, 0x4F39, 
+  0x4F3B, 0x4F3E, 0x4F3F, 0x4F40, 0x4F41, 0x4F42, 0x4F44, 0x4F45, 
+  0x4F47, 0x4F48, 0x4F49, 0x4F4A, 0x4F4B, 0x4F4C, 0x4F52, 0x4F54, 
+  0x4F56, 0x4F61, 0x4F62, 0x4F66, 0x4F68, 0x4F6A, 0x4F6B, 0x4F6D, 
+  0x4F6E, 0x4F71, 0x4F72, 0x4F75, 0x4F77, 0x4F78, 0x4F79, 0x4F7A, 
+  0x4F7D, 0x4F80, 0x4F81, 0x4F82, 0x4F85, 0x4F86, 0x4F87, 0x4F8A, 
+  0x4F8C, 0x4F8E, 0x4F90, 0x4F92, 0x4F93, 0x4F95, 0x4F96, 0x4F98, 
+  0x4F99, 0x4F9A, 0x4F9C, 0x4F9E, 0x4F9F, 0x4FA1, 0x4FA2,      0, 
+plane 82
+at 0x40
+  0x4FA4, 0x4FAB, 0x4FAD, 0x4FB0, 0x4FB1, 0x4FB2, 0x4FB3, 0x4FB4, 
+  0x4FB6, 0x4FB7, 0x4FB8, 0x4FB9, 0x4FBA, 0x4FBB, 0x4FBC, 0x4FBD, 
+  0x4FBE, 0x4FC0, 0x4FC1, 0x4FC2, 0x4FC6, 0x4FC7, 0x4FC8, 0x4FC9, 
+  0x4FCB, 0x4FCC, 0x4FCD, 0x4FD2, 0x4FD3, 0x4FD4, 0x4FD5, 0x4FD6, 
+  0x4FD9, 0x4FDB, 0x4FE0, 0x4FE2, 0x4FE4, 0x4FE5, 0x4FE7, 0x4FEB, 
+  0x4FEC, 0x4FF0, 0x4FF2, 0x4FF4, 0x4FF5, 0x4FF6, 0x4FF7, 0x4FF9, 
+  0x4FFB, 0x4FFC, 0x4FFD, 0x4FFF, 0x5000, 0x5001, 0x5002, 0x5003, 
+  0x5004, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009, 0x500A,      0, 
+  0x500B, 0x500E, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, 0x5017, 
+  0x501B, 0x501D, 0x501E, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027, 
+  0x502B, 0x502F, 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 
+  0x5036, 0x5037, 0x5038, 0x5039, 0x503B, 0x503D, 0x503F, 0x5040, 
+  0x5041, 0x5042, 0x5044, 0x5045, 0x5046, 0x5049, 0x504A, 0x504B, 
+  0x504D, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057, 
+  0x5058, 0x5059, 0x505B, 0x505D, 0x505E, 0x505F, 0x5060, 0x5061, 
+  0x5062, 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506A, 
+  0x506B, 0x506D, 0x506E, 0x506F, 0x5070, 0x5071, 0x5072, 0x5073, 
+  0x5074, 0x5075, 0x5078, 0x5079, 0x507A, 0x507C, 0x507D, 0x5081, 
+  0x5082, 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508A, 0x508B, 
+  0x508C, 0x508E, 0x508F, 0x5090, 0x5091, 0x5092, 0x5093, 0x5094, 
+  0x5095, 0x5096, 0x5097, 0x5098, 0x5099, 0x509A, 0x509B, 0x509C, 
+  0x509D, 0x509E, 0x509F, 0x50A0, 0x50A1, 0x50A2, 0x50A4, 0x50A6, 
+  0x50AA, 0x50AB, 0x50AD, 0x50AE, 0x50AF, 0x50B0, 0x50B1, 0x50B3, 
+  0x50B4, 0x50B5, 0x50B6, 0x50B7, 0x50B8, 0x50B9, 0x50BC,      0, 
+plane 83
+at 0x40
+  0x50BD, 0x50BE, 0x50BF, 0x50C0, 0x50C1, 0x50C2, 0x50C3, 0x50C4, 
+  0x50C5, 0x50C6, 0x50C7, 0x50C8, 0x50C9, 0x50CA, 0x50CB, 0x50CC, 
+  0x50CD, 0x50CE, 0x50D0, 0x50D1, 0x50D2, 0x50D3, 0x50D4, 0x50D5, 
+  0x50D7, 0x50D8, 0x50D9, 0x50DB, 0x50DC, 0x50DD, 0x50DE, 0x50DF, 
+  0x50E0, 0x50E1, 0x50E2, 0x50E3, 0x50E4, 0x50E5, 0x50E8, 0x50E9, 
+  0x50EA, 0x50EB, 0x50EF, 0x50F0, 0x50F1, 0x50F2, 0x50F4, 0x50F6, 
+  0x50F7, 0x50F8, 0x50F9, 0x50FA, 0x50FC, 0x50FD, 0x50FE, 0x50FF, 
+  0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5108,      0, 
+  0x5109, 0x510A, 0x510C, 0x510D, 0x510E, 0x510F, 0x5110, 0x5111, 
+  0x5113, 0x5114, 0x5115, 0x5116, 0x5117, 0x5118, 0x5119, 0x511A, 
+  0x511B, 0x511C, 0x511D, 0x511E, 0x511F, 0x5120, 0x5122, 0x5123, 
+  0x5124, 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512A, 0x512B, 
+  0x512C, 0x512D, 0x512E, 0x512F, 0x5130, 0x5131, 0x5132, 0x5133, 
+  0x5134, 0x5135, 0x5136, 0x5137, 0x5138, 0x5139, 0x513A, 0x513B, 
+  0x513C, 0x513D, 0x513E, 0x5142, 0x5147, 0x514A, 0x514C, 0x514E, 
+  0x514F, 0x5150, 0x5152, 0x5153, 0x5157, 0x5158, 0x5159, 0x515B, 
+  0x515D, 0x515E, 0x515F, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, 
+  0x5167, 0x5169, 0x516A, 0x516F, 0x5172, 0x517A, 0x517E, 0x517F, 
+  0x5183, 0x5184, 0x5186, 0x5187, 0x518A, 0x518B, 0x518E, 0x518F, 
+  0x5190, 0x5191, 0x5193, 0x5194, 0x5198, 0x519A, 0x519D, 0x519E, 
+  0x519F, 0x51A1, 0x51A3, 0x51A6, 0x51A7, 0x51A8, 0x51A9, 0x51AA, 
+  0x51AD, 0x51AE, 0x51B4, 0x51B8, 0x51B9, 0x51BA, 0x51BE, 0x51BF, 
+  0x51C1, 0x51C2, 0x51C3, 0x51C5, 0x51C8, 0x51CA, 0x51CD, 0x51CE, 
+  0x51D0, 0x51D2, 0x51D3, 0x51D4, 0x51D5, 0x51D6, 0x51D7,      0, 
+plane 84
+at 0x40
+  0x51D8, 0x51D9, 0x51DA, 0x51DC, 0x51DE, 0x51DF, 0x51E2, 0x51E3, 
+  0x51E5, 0x51E6, 0x51E7, 0x51E8, 0x51E9, 0x51EA, 0x51EC, 0x51EE, 
+  0x51F1, 0x51F2, 0x51F4, 0x51F7, 0x51FE, 0x5204, 0x5205, 0x5209, 
+  0x520B, 0x520C, 0x520F, 0x5210, 0x5213, 0x5214, 0x5215, 0x521C, 
+  0x521E, 0x521F, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227, 
+  0x522A, 0x522C, 0x522F, 0x5231, 0x5232, 0x5234, 0x5235, 0x523C, 
+  0x523E, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524B, 
+  0x524E, 0x524F, 0x5252, 0x5253, 0x5255, 0x5257, 0x5258,      0, 
+  0x5259, 0x525A, 0x525B, 0x525D, 0x525F, 0x5260, 0x5262, 0x5263, 
+  0x5264, 0x5266, 0x5268, 0x526B, 0x526C, 0x526D, 0x526E, 0x5270, 
+  0x5271, 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278, 0x5279, 
+  0x527A, 0x527B, 0x527C, 0x527E, 0x5280, 0x5283, 0x5284, 0x5285, 
+  0x5286, 0x5287, 0x5289, 0x528A, 0x528B, 0x528C, 0x528D, 0x528E, 
+  0x528F, 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297, 0x5298, 
+  0x5299, 0x529A, 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7, 0x52AE, 
+  0x52AF, 0x52B0, 0x52B4, 0x52B5, 0x52B6, 0x52B7, 0x52B8, 0x52B9, 
+  0x52BA, 0x52BB, 0x52BC, 0x52BD, 0x52C0, 0x52C1, 0x52C2, 0x52C4, 
+  0x52C5, 0x52C6, 0x52C8, 0x52CA, 0x52CC, 0x52CD, 0x52CE, 0x52CF, 
+  0x52D1, 0x52D3, 0x52D4, 0x52D5, 0x52D7, 0x52D9, 0x52DA, 0x52DB, 
+  0x52DC, 0x52DD, 0x52DE, 0x52E0, 0x52E1, 0x52E2, 0x52E3, 0x52E5, 
+  0x52E6, 0x52E7, 0x52E8, 0x52E9, 0x52EA, 0x52EB, 0x52EC, 0x52ED, 
+  0x52EE, 0x52EF, 0x52F1, 0x52F2, 0x52F3, 0x52F4, 0x52F5, 0x52F6, 
+  0x52F7, 0x52F8, 0x52FB, 0x52FC, 0x52FD, 0x5301, 0x5302, 0x5303, 
+  0x5304, 0x5307, 0x5309, 0x530A, 0x530B, 0x530C, 0x530E,      0, 
+plane 85
+at 0x40
+  0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531B, 0x531C, 0x531E, 
+  0x531F, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532B, 
+  0x532C, 0x532D, 0x532F, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334, 
+  0x5335, 0x5336, 0x5337, 0x5338, 0x533C, 0x533D, 0x5340, 0x5342, 
+  0x5344, 0x5346, 0x534B, 0x534C, 0x534D, 0x5350, 0x5354, 0x5358, 
+  0x5359, 0x535B, 0x535D, 0x5365, 0x5368, 0x536A, 0x536C, 0x536D, 
+  0x5372, 0x5376, 0x5379, 0x537B, 0x537C, 0x537D, 0x537E, 0x5380, 
+  0x5381, 0x5383, 0x5387, 0x5388, 0x538A, 0x538E, 0x538F,      0, 
+  0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399, 
+  0x539B, 0x539C, 0x539E, 0x53A0, 0x53A1, 0x53A4, 0x53A7, 0x53AA, 
+  0x53AB, 0x53AC, 0x53AD, 0x53AF, 0x53B0, 0x53B1, 0x53B2, 0x53B3, 
+  0x53B4, 0x53B5, 0x53B7, 0x53B8, 0x53B9, 0x53BA, 0x53BC, 0x53BD, 
+  0x53BE, 0x53C0, 0x53C3, 0x53C4, 0x53C5, 0x53C6, 0x53C7, 0x53CE, 
+  0x53CF, 0x53D0, 0x53D2, 0x53D3, 0x53D5, 0x53DA, 0x53DC, 0x53DD, 
+  0x53DE, 0x53E1, 0x53E2, 0x53E7, 0x53F4, 0x53FA, 0x53FE, 0x53FF, 
+  0x5400, 0x5402, 0x5405, 0x5407, 0x540B, 0x5414, 0x5418, 0x5419, 
+  0x541A, 0x541C, 0x5422, 0x5424, 0x5425, 0x542A, 0x5430, 0x5433, 
+  0x5436, 0x5437, 0x543A, 0x543D, 0x543F, 0x5441, 0x5442, 0x5444, 
+  0x5445, 0x5447, 0x5449, 0x544C, 0x544D, 0x544E, 0x544F, 0x5451, 
+  0x545A, 0x545D, 0x545E, 0x545F, 0x5460, 0x5461, 0x5463, 0x5465, 
+  0x5467, 0x5469, 0x546A, 0x546B, 0x546C, 0x546D, 0x546E, 0x546F, 
+  0x5470, 0x5474, 0x5479, 0x547A, 0x547E, 0x547F, 0x5481, 0x5483, 
+  0x5485, 0x5487, 0x5488, 0x5489, 0x548A, 0x548D, 0x5491, 0x5493, 
+  0x5497, 0x5498, 0x549C, 0x549E, 0x549F, 0x54A0, 0x54A1,      0, 
+plane 86
+at 0x40
+  0x54A2, 0x54A5, 0x54AE, 0x54B0, 0x54B2, 0x54B5, 0x54B6, 0x54B7, 
+  0x54B9, 0x54BA, 0x54BC, 0x54BE, 0x54C3, 0x54C5, 0x54CA, 0x54CB, 
+  0x54D6, 0x54D8, 0x54DB, 0x54E0, 0x54E1, 0x54E2, 0x54E3, 0x54E4, 
+  0x54EB, 0x54EC, 0x54EF, 0x54F0, 0x54F1, 0x54F4, 0x54F5, 0x54F6, 
+  0x54F7, 0x54F8, 0x54F9, 0x54FB, 0x54FE, 0x5500, 0x5502, 0x5503, 
+  0x5504, 0x5505, 0x5508, 0x550A, 0x550B, 0x550C, 0x550D, 0x550E, 
+  0x5512, 0x5513, 0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551A, 
+  0x551C, 0x551D, 0x551E, 0x551F, 0x5521, 0x5525, 0x5526,      0, 
+  0x5528, 0x5529, 0x552B, 0x552D, 0x5532, 0x5534, 0x5535, 0x5536, 
+  0x5538, 0x5539, 0x553A, 0x553B, 0x553D, 0x5540, 0x5542, 0x5545, 
+  0x5547, 0x5548, 0x554B, 0x554C, 0x554D, 0x554E, 0x554F, 0x5551, 
+  0x5552, 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555A, 0x555B, 
+  0x555D, 0x555E, 0x555F, 0x5560, 0x5562, 0x5563, 0x5568, 0x5569, 
+  0x556B, 0x556F, 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5579, 
+  0x557A, 0x557D, 0x557F, 0x5585, 0x5586, 0x558C, 0x558D, 0x558E, 
+  0x5590, 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559A, 0x559B, 
+  0x559E, 0x55A0, 0x55A1, 0x55A2, 0x55A3, 0x55A4, 0x55A5, 0x55A6, 
+  0x55A8, 0x55A9, 0x55AA, 0x55AB, 0x55AC, 0x55AD, 0x55AE, 0x55AF, 
+  0x55B0, 0x55B2, 0x55B4, 0x55B6, 0x55B8, 0x55BA, 0x55BC, 0x55BF, 
+  0x55C0, 0x55C1, 0x55C2, 0x55C3, 0x55C6, 0x55C7, 0x55C8, 0x55CA, 
+  0x55CB, 0x55CE, 0x55CF, 0x55D0, 0x55D5, 0x55D7, 0x55D8, 0x55D9, 
+  0x55DA, 0x55DB, 0x55DE, 0x55E0, 0x55E2, 0x55E7, 0x55E9, 0x55ED, 
+  0x55EE, 0x55F0, 0x55F1, 0x55F4, 0x55F6, 0x55F8, 0x55F9, 0x55FA, 
+  0x55FB, 0x55FC, 0x55FF, 0x5602, 0x5603, 0x5604, 0x5605,      0, 
+plane 87
+at 0x40
+  0x5606, 0x5607, 0x560A, 0x560B, 0x560D, 0x5610, 0x5611, 0x5612, 
+  0x5613, 0x5614, 0x5615, 0x5616, 0x5617, 0x5619, 0x561A, 0x561C, 
+  0x561D, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629, 
+  0x562A, 0x562B, 0x562E, 0x562F, 0x5630, 0x5633, 0x5635, 0x5637, 
+  0x5638, 0x563A, 0x563C, 0x563D, 0x563E, 0x5640, 0x5641, 0x5642, 
+  0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564A, 
+  0x564B, 0x564F, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656, 
+  0x565A, 0x565B, 0x565D, 0x565E, 0x565F, 0x5660, 0x5661,      0, 
+  0x5663, 0x5665, 0x5666, 0x5667, 0x566D, 0x566E, 0x566F, 0x5670, 
+  0x5672, 0x5673, 0x5674, 0x5675, 0x5677, 0x5678, 0x5679, 0x567A, 
+  0x567D, 0x567E, 0x567F, 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, 
+  0x5687, 0x5688, 0x5689, 0x568A, 0x568B, 0x568C, 0x568D, 0x5690, 
+  0x5691, 0x5692, 0x5694, 0x5695, 0x5696, 0x5697, 0x5698, 0x5699, 
+  0x569A, 0x569B, 0x569C, 0x569D, 0x569E, 0x569F, 0x56A0, 0x56A1, 
+  0x56A2, 0x56A4, 0x56A5, 0x56A6, 0x56A7, 0x56A8, 0x56A9, 0x56AA, 
+  0x56AB, 0x56AC, 0x56AD, 0x56AE, 0x56B0, 0x56B1, 0x56B2, 0x56B3, 
+  0x56B4, 0x56B5, 0x56B6, 0x56B8, 0x56B9, 0x56BA, 0x56BB, 0x56BD, 
+  0x56BE, 0x56BF, 0x56C0, 0x56C1, 0x56C2, 0x56C3, 0x56C4, 0x56C5, 
+  0x56C6, 0x56C7, 0x56C8, 0x56C9, 0x56CB, 0x56CC, 0x56CD, 0x56CE, 
+  0x56CF, 0x56D0, 0x56D1, 0x56D2, 0x56D3, 0x56D5, 0x56D6, 0x56D8, 
+  0x56D9, 0x56DC, 0x56E3, 0x56E5, 0x56E6, 0x56E7, 0x56E8, 0x56E9, 
+  0x56EA, 0x56EC, 0x56EE, 0x56EF, 0x56F2, 0x56F3, 0x56F6, 0x56F7, 
+  0x56F8, 0x56FB, 0x56FC, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707, 
+  0x570B, 0x570C, 0x570D, 0x570E, 0x570F, 0x5710, 0x5711,      0, 
+plane 88
+at 0x40
+  0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718, 0x5719, 
+  0x571A, 0x571B, 0x571D, 0x571E, 0x5720, 0x5721, 0x5722, 0x5724, 
+  0x5725, 0x5726, 0x5727, 0x572B, 0x5731, 0x5732, 0x5734, 0x5735, 
+  0x5736, 0x5737, 0x5738, 0x573C, 0x573D, 0x573F, 0x5741, 0x5743, 
+  0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574B, 0x5752, 0x5753, 
+  0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, 0x5765, 
+  0x5767, 0x576C, 0x576E, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775, 
+  0x5778, 0x5779, 0x577A, 0x577D, 0x577E, 0x577F, 0x5780,      0, 
+  0x5781, 0x5787, 0x5788, 0x5789, 0x578A, 0x578D, 0x578E, 0x578F, 
+  0x5790, 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799, 
+  0x579A, 0x579C, 0x579D, 0x579E, 0x579F, 0x57A5, 0x57A8, 0x57AA, 
+  0x57AC, 0x57AF, 0x57B0, 0x57B1, 0x57B3, 0x57B5, 0x57B6, 0x57B7, 
+  0x57B9, 0x57BA, 0x57BB, 0x57BC, 0x57BD, 0x57BE, 0x57BF, 0x57C0, 
+  0x57C1, 0x57C4, 0x57C5, 0x57C6, 0x57C7, 0x57C8, 0x57C9, 0x57CA, 
+  0x57CC, 0x57CD, 0x57D0, 0x57D1, 0x57D3, 0x57D6, 0x57D7, 0x57DB, 
+  0x57DC, 0x57DE, 0x57E1, 0x57E2, 0x57E3, 0x57E5, 0x57E6, 0x57E7, 
+  0x57E8, 0x57E9, 0x57EA, 0x57EB, 0x57EC, 0x57EE, 0x57F0, 0x57F1, 
+  0x57F2, 0x57F3, 0x57F5, 0x57F6, 0x57F7, 0x57FB, 0x57FC, 0x57FE, 
+  0x57FF, 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809, 0x580A, 
+  0x580C, 0x580E, 0x580F, 0x5810, 0x5812, 0x5813, 0x5814, 0x5816, 
+  0x5817, 0x5818, 0x581A, 0x581B, 0x581C, 0x581D, 0x581F, 0x5822, 
+  0x5823, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582B, 0x582C, 
+  0x582D, 0x582E, 0x582F, 0x5831, 0x5832, 0x5833, 0x5834, 0x5836, 
+  0x5837, 0x5838, 0x5839, 0x583A, 0x583B, 0x583C, 0x583D,      0, 
+plane 89
+at 0x40
+  0x583E, 0x583F, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846, 
+  0x5847, 0x5848, 0x5849, 0x584A, 0x584B, 0x584E, 0x584F, 0x5850, 
+  0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585A, 0x585B, 
+  0x585C, 0x585D, 0x585F, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, 
+  0x5866, 0x5867, 0x5868, 0x5869, 0x586A, 0x586D, 0x586E, 0x586F, 
+  0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877, 
+  0x5878, 0x5879, 0x587A, 0x587B, 0x587C, 0x587D, 0x587F, 0x5882, 
+  0x5884, 0x5886, 0x5887, 0x5888, 0x588A, 0x588B, 0x588C,      0, 
+  0x588D, 0x588E, 0x588F, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 
+  0x5897, 0x5898, 0x589B, 0x589C, 0x589D, 0x58A0, 0x58A1, 0x58A2, 
+  0x58A3, 0x58A4, 0x58A5, 0x58A6, 0x58A7, 0x58AA, 0x58AB, 0x58AC, 
+  0x58AD, 0x58AE, 0x58AF, 0x58B0, 0x58B1, 0x58B2, 0x58B3, 0x58B4, 
+  0x58B5, 0x58B6, 0x58B7, 0x58B8, 0x58B9, 0x58BA, 0x58BB, 0x58BD, 
+  0x58BE, 0x58BF, 0x58C0, 0x58C2, 0x58C3, 0x58C4, 0x58C6, 0x58C7, 
+  0x58C8, 0x58C9, 0x58CA, 0x58CB, 0x58CC, 0x58CD, 0x58CE, 0x58CF, 
+  0x58D0, 0x58D2, 0x58D3, 0x58D4, 0x58D6, 0x58D7, 0x58D8, 0x58D9, 
+  0x58DA, 0x58DB, 0x58DC, 0x58DD, 0x58DE, 0x58DF, 0x58E0, 0x58E1, 
+  0x58E2, 0x58E3, 0x58E5, 0x58E6, 0x58E7, 0x58E8, 0x58E9, 0x58EA, 
+  0x58ED, 0x58EF, 0x58F1, 0x58F2, 0x58F4, 0x58F5, 0x58F7, 0x58F8, 
+  0x58FA, 0x58FB, 0x58FC, 0x58FD, 0x58FE, 0x58FF, 0x5900, 0x5901, 
+  0x5903, 0x5905, 0x5906, 0x5908, 0x5909, 0x590A, 0x590B, 0x590C, 
+  0x590E, 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591B, 
+  0x591D, 0x591E, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928, 
+  0x592C, 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593B,      0, 
+plane 8a
+at 0x40
+  0x593D, 0x593E, 0x593F, 0x5940, 0x5943, 0x5945, 0x5946, 0x594A, 
+  0x594C, 0x594D, 0x5950, 0x5952, 0x5953, 0x5959, 0x595B, 0x595C, 
+  0x595D, 0x595E, 0x595F, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967, 
+  0x5968, 0x5969, 0x596A, 0x596B, 0x596C, 0x596D, 0x596E, 0x596F, 
+  0x5970, 0x5971, 0x5972, 0x5975, 0x5977, 0x597A, 0x597B, 0x597C, 
+  0x597E, 0x597F, 0x5980, 0x5985, 0x5989, 0x598B, 0x598C, 0x598E, 
+  0x598F, 0x5990, 0x5991, 0x5994, 0x5995, 0x5998, 0x599A, 0x599B, 
+  0x599C, 0x599D, 0x599F, 0x59A0, 0x59A1, 0x59A2, 0x59A6,      0, 
+  0x59A7, 0x59AC, 0x59AD, 0x59B0, 0x59B1, 0x59B3, 0x59B4, 0x59B5, 
+  0x59B6, 0x59B7, 0x59B8, 0x59BA, 0x59BC, 0x59BD, 0x59BF, 0x59C0, 
+  0x59C1, 0x59C2, 0x59C3, 0x59C4, 0x59C5, 0x59C7, 0x59C8, 0x59C9, 
+  0x59CC, 0x59CD, 0x59CE, 0x59CF, 0x59D5, 0x59D6, 0x59D9, 0x59DB, 
+  0x59DE, 0x59DF, 0x59E0, 0x59E1, 0x59E2, 0x59E4, 0x59E6, 0x59E7, 
+  0x59E9, 0x59EA, 0x59EB, 0x59ED, 0x59EE, 0x59EF, 0x59F0, 0x59F1, 
+  0x59F2, 0x59F3, 0x59F4, 0x59F5, 0x59F6, 0x59F7, 0x59F8, 0x59FA, 
+  0x59FC, 0x59FD, 0x59FE, 0x5A00, 0x5A02, 0x5A0A, 0x5A0B, 0x5A0D, 
+  0x5A0E, 0x5A0F, 0x5A10, 0x5A12, 0x5A14, 0x5A15, 0x5A16, 0x5A17, 
+  0x5A19, 0x5A1A, 0x5A1B, 0x5A1D, 0x5A1E, 0x5A21, 0x5A22, 0x5A24, 
+  0x5A26, 0x5A27, 0x5A28, 0x5A2A, 0x5A2B, 0x5A2C, 0x5A2D, 0x5A2E, 
+  0x5A2F, 0x5A30, 0x5A33, 0x5A35, 0x5A37, 0x5A38, 0x5A39, 0x5A3A, 
+  0x5A3B, 0x5A3D, 0x5A3E, 0x5A3F, 0x5A41, 0x5A42, 0x5A43, 0x5A44, 
+  0x5A45, 0x5A47, 0x5A48, 0x5A4B, 0x5A4C, 0x5A4D, 0x5A4E, 0x5A4F, 
+  0x5A50, 0x5A51, 0x5A52, 0x5A53, 0x5A54, 0x5A56, 0x5A57, 0x5A58, 
+  0x5A59, 0x5A5B, 0x5A5C, 0x5A5D, 0x5A5E, 0x5A5F, 0x5A60,      0, 
+plane 8b
+at 0x40
+  0x5A61, 0x5A63, 0x5A64, 0x5A65, 0x5A66, 0x5A68, 0x5A69, 0x5A6B, 
+  0x5A6C, 0x5A6D, 0x5A6E, 0x5A6F, 0x5A70, 0x5A71, 0x5A72, 0x5A73, 
+  0x5A78, 0x5A79, 0x5A7B, 0x5A7C, 0x5A7D, 0x5A7E, 0x5A80, 0x5A81, 
+  0x5A82, 0x5A83, 0x5A84, 0x5A85, 0x5A86, 0x5A87, 0x5A88, 0x5A89, 
+  0x5A8A, 0x5A8B, 0x5A8C, 0x5A8D, 0x5A8E, 0x5A8F, 0x5A90, 0x5A91, 
+  0x5A93, 0x5A94, 0x5A95, 0x5A96, 0x5A97, 0x5A98, 0x5A99, 0x5A9C, 
+  0x5A9D, 0x5A9E, 0x5A9F, 0x5AA0, 0x5AA1, 0x5AA2, 0x5AA3, 0x5AA4, 
+  0x5AA5, 0x5AA6, 0x5AA7, 0x5AA8, 0x5AA9, 0x5AAB, 0x5AAC,      0, 
+  0x5AAD, 0x5AAE, 0x5AAF, 0x5AB0, 0x5AB1, 0x5AB4, 0x5AB6, 0x5AB7, 
+  0x5AB9, 0x5ABA, 0x5ABB, 0x5ABC, 0x5ABD, 0x5ABF, 0x5AC0, 0x5AC3, 
+  0x5AC4, 0x5AC5, 0x5AC6, 0x5AC7, 0x5AC8, 0x5ACA, 0x5ACB, 0x5ACD, 
+  0x5ACE, 0x5ACF, 0x5AD0, 0x5AD1, 0x5AD3, 0x5AD5, 0x5AD7, 0x5AD9, 
+  0x5ADA, 0x5ADB, 0x5ADD, 0x5ADE, 0x5ADF, 0x5AE2, 0x5AE4, 0x5AE5, 
+  0x5AE7, 0x5AE8, 0x5AEA, 0x5AEC, 0x5AED, 0x5AEE, 0x5AEF, 0x5AF0, 
+  0x5AF2, 0x5AF3, 0x5AF4, 0x5AF5, 0x5AF6, 0x5AF7, 0x5AF8, 0x5AF9, 
+  0x5AFA, 0x5AFB, 0x5AFC, 0x5AFD, 0x5AFE, 0x5AFF, 0x5B00, 0x5B01, 
+  0x5B02, 0x5B03, 0x5B04, 0x5B05, 0x5B06, 0x5B07, 0x5B08, 0x5B0A, 
+  0x5B0B, 0x5B0C, 0x5B0D, 0x5B0E, 0x5B0F, 0x5B10, 0x5B11, 0x5B12, 
+  0x5B13, 0x5B14, 0x5B15, 0x5B18, 0x5B19, 0x5B1A, 0x5B1B, 0x5B1C, 
+  0x5B1D, 0x5B1E, 0x5B1F, 0x5B20, 0x5B21, 0x5B22, 0x5B23, 0x5B24, 
+  0x5B25, 0x5B26, 0x5B27, 0x5B28, 0x5B29, 0x5B2A, 0x5B2B, 0x5B2C, 
+  0x5B2D, 0x5B2E, 0x5B2F, 0x5B30, 0x5B31, 0x5B33, 0x5B35, 0x5B36, 
+  0x5B38, 0x5B39, 0x5B3A, 0x5B3B, 0x5B3C, 0x5B3D, 0x5B3E, 0x5B3F, 
+  0x5B41, 0x5B42, 0x5B43, 0x5B44, 0x5B45, 0x5B46, 0x5B47,      0, 
+plane 8c
+at 0x40
+  0x5B48, 0x5B49, 0x5B4A, 0x5B4B, 0x5B4C, 0x5B4D, 0x5B4E, 0x5B4F, 
+  0x5B52, 0x5B56, 0x5B5E, 0x5B60, 0x5B61, 0x5B67, 0x5B68, 0x5B6B, 
+  0x5B6D, 0x5B6E, 0x5B6F, 0x5B72, 0x5B74, 0x5B76, 0x5B77, 0x5B78, 
+  0x5B79, 0x5B7B, 0x5B7C, 0x5B7E, 0x5B7F, 0x5B82, 0x5B86, 0x5B8A, 
+  0x5B8D, 0x5B8E, 0x5B90, 0x5B91, 0x5B92, 0x5B94, 0x5B96, 0x5B9F, 
+  0x5BA7, 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD, 0x5BAE, 0x5BAF, 0x5BB1, 
+  0x5BB2, 0x5BB7, 0x5BBA, 0x5BBB, 0x5BBC, 0x5BC0, 0x5BC1, 0x5BC3, 
+  0x5BC8, 0x5BC9, 0x5BCA, 0x5BCB, 0x5BCD, 0x5BCE, 0x5BCF,      0, 
+  0x5BD1, 0x5BD4, 0x5BD5, 0x5BD6, 0x5BD7, 0x5BD8, 0x5BD9, 0x5BDA, 
+  0x5BDB, 0x5BDC, 0x5BE0, 0x5BE2, 0x5BE3, 0x5BE6, 0x5BE7, 0x5BE9, 
+  0x5BEA, 0x5BEB, 0x5BEC, 0x5BED, 0x5BEF, 0x5BF1, 0x5BF2, 0x5BF3, 
+  0x5BF4, 0x5BF5, 0x5BF6, 0x5BF7, 0x5BFD, 0x5BFE, 0x5C00, 0x5C02, 
+  0x5C03, 0x5C05, 0x5C07, 0x5C08, 0x5C0B, 0x5C0C, 0x5C0D, 0x5C0E, 
+  0x5C10, 0x5C12, 0x5C13, 0x5C17, 0x5C19, 0x5C1B, 0x5C1E, 0x5C1F, 
+  0x5C20, 0x5C21, 0x5C23, 0x5C26, 0x5C28, 0x5C29, 0x5C2A, 0x5C2B, 
+  0x5C2D, 0x5C2E, 0x5C2F, 0x5C30, 0x5C32, 0x5C33, 0x5C35, 0x5C36, 
+  0x5C37, 0x5C43, 0x5C44, 0x5C46, 0x5C47, 0x5C4C, 0x5C4D, 0x5C52, 
+  0x5C53, 0x5C54, 0x5C56, 0x5C57, 0x5C58, 0x5C5A, 0x5C5B, 0x5C5C, 
+  0x5C5D, 0x5C5F, 0x5C62, 0x5C64, 0x5C67, 0x5C68, 0x5C69, 0x5C6A, 
+  0x5C6B, 0x5C6C, 0x5C6D, 0x5C70, 0x5C72, 0x5C73, 0x5C74, 0x5C75, 
+  0x5C76, 0x5C77, 0x5C78, 0x5C7B, 0x5C7C, 0x5C7D, 0x5C7E, 0x5C80, 
+  0x5C83, 0x5C84, 0x5C85, 0x5C86, 0x5C87, 0x5C89, 0x5C8A, 0x5C8B, 
+  0x5C8E, 0x5C8F, 0x5C92, 0x5C93, 0x5C95, 0x5C9D, 0x5C9E, 0x5C9F, 
+  0x5CA0, 0x5CA1, 0x5CA4, 0x5CA5, 0x5CA6, 0x5CA7, 0x5CA8,      0, 
+plane 8d
+at 0x40
+  0x5CAA, 0x5CAE, 0x5CAF, 0x5CB0, 0x5CB2, 0x5CB4, 0x5CB6, 0x5CB9, 
+  0x5CBA, 0x5CBB, 0x5CBC, 0x5CBE, 0x5CC0, 0x5CC2, 0x5CC3, 0x5CC5, 
+  0x5CC6, 0x5CC7, 0x5CC8, 0x5CC9, 0x5CCA, 0x5CCC, 0x5CCD, 0x5CCE, 
+  0x5CCF, 0x5CD0, 0x5CD1, 0x5CD3, 0x5CD4, 0x5CD5, 0x5CD6, 0x5CD7, 
+  0x5CD8, 0x5CDA, 0x5CDB, 0x5CDC, 0x5CDD, 0x5CDE, 0x5CDF, 0x5CE0, 
+  0x5CE2, 0x5CE3, 0x5CE7, 0x5CE9, 0x5CEB, 0x5CEC, 0x5CEE, 0x5CEF, 
+  0x5CF1, 0x5CF2, 0x5CF3, 0x5CF4, 0x5CF5, 0x5CF6, 0x5CF7, 0x5CF8, 
+  0x5CF9, 0x5CFA, 0x5CFC, 0x5CFD, 0x5CFE, 0x5CFF, 0x5D00,      0, 
+  0x5D01, 0x5D04, 0x5D05, 0x5D08, 0x5D09, 0x5D0A, 0x5D0B, 0x5D0C, 
+  0x5D0D, 0x5D0F, 0x5D10, 0x5D11, 0x5D12, 0x5D13, 0x5D15, 0x5D17, 
+  0x5D18, 0x5D19, 0x5D1A, 0x5D1C, 0x5D1D, 0x5D1F, 0x5D20, 0x5D21, 
+  0x5D22, 0x5D23, 0x5D25, 0x5D28, 0x5D2A, 0x5D2B, 0x5D2C, 0x5D2F, 
+  0x5D30, 0x5D31, 0x5D32, 0x5D33, 0x5D35, 0x5D36, 0x5D37, 0x5D38, 
+  0x5D39, 0x5D3A, 0x5D3B, 0x5D3C, 0x5D3F, 0x5D40, 0x5D41, 0x5D42, 
+  0x5D43, 0x5D44, 0x5D45, 0x5D46, 0x5D48, 0x5D49, 0x5D4D, 0x5D4E, 
+  0x5D4F, 0x5D50, 0x5D51, 0x5D52, 0x5D53, 0x5D54, 0x5D55, 0x5D56, 
+  0x5D57, 0x5D59, 0x5D5A, 0x5D5C, 0x5D5E, 0x5D5F, 0x5D60, 0x5D61, 
+  0x5D62, 0x5D63, 0x5D64, 0x5D65, 0x5D66, 0x5D67, 0x5D68, 0x5D6A, 
+  0x5D6D, 0x5D6E, 0x5D70, 0x5D71, 0x5D72, 0x5D73, 0x5D75, 0x5D76, 
+  0x5D77, 0x5D78, 0x5D79, 0x5D7A, 0x5D7B, 0x5D7C, 0x5D7D, 0x5D7E, 
+  0x5D7F, 0x5D80, 0x5D81, 0x5D83, 0x5D84, 0x5D85, 0x5D86, 0x5D87, 
+  0x5D88, 0x5D89, 0x5D8A, 0x5D8B, 0x5D8C, 0x5D8D, 0x5D8E, 0x5D8F, 
+  0x5D90, 0x5D91, 0x5D92, 0x5D93, 0x5D94, 0x5D95, 0x5D96, 0x5D97, 
+  0x5D98, 0x5D9A, 0x5D9B, 0x5D9C, 0x5D9E, 0x5D9F, 0x5DA0,      0, 
+plane 8e
+at 0x40
+  0x5DA1, 0x5DA2, 0x5DA3, 0x5DA4, 0x5DA5, 0x5DA6, 0x5DA7, 0x5DA8, 
+  0x5DA9, 0x5DAA, 0x5DAB, 0x5DAC, 0x5DAD, 0x5DAE, 0x5DAF, 0x5DB0, 
+  0x5DB1, 0x5DB2, 0x5DB3, 0x5DB4, 0x5DB5, 0x5DB6, 0x5DB8, 0x5DB9, 
+  0x5DBA, 0x5DBB, 0x5DBC, 0x5DBD, 0x5DBE, 0x5DBF, 0x5DC0, 0x5DC1, 
+  0x5DC2, 0x5DC3, 0x5DC4, 0x5DC6, 0x5DC7, 0x5DC8, 0x5DC9, 0x5DCA, 
+  0x5DCB, 0x5DCC, 0x5DCE, 0x5DCF, 0x5DD0, 0x5DD1, 0x5DD2, 0x5DD3, 
+  0x5DD4, 0x5DD5, 0x5DD6, 0x5DD7, 0x5DD8, 0x5DD9, 0x5DDA, 0x5DDC, 
+  0x5DDF, 0x5DE0, 0x5DE3, 0x5DE4, 0x5DEA, 0x5DEC, 0x5DED,      0, 
+  0x5DF0, 0x5DF5, 0x5DF6, 0x5DF8, 0x5DF9, 0x5DFA, 0x5DFB, 0x5DFC, 
+  0x5DFF, 0x5E00, 0x5E04, 0x5E07, 0x5E09, 0x5E0A, 0x5E0B, 0x5E0D, 
+  0x5E0E, 0x5E12, 0x5E13, 0x5E17, 0x5E1E, 0x5E1F, 0x5E20, 0x5E21, 
+  0x5E22, 0x5E23, 0x5E24, 0x5E25, 0x5E28, 0x5E29, 0x5E2A, 0x5E2B, 
+  0x5E2C, 0x5E2F, 0x5E30, 0x5E32, 0x5E33, 0x5E34, 0x5E35, 0x5E36, 
+  0x5E39, 0x5E3A, 0x5E3E, 0x5E3F, 0x5E40, 0x5E41, 0x5E43, 0x5E46, 
+  0x5E47, 0x5E48, 0x5E49, 0x5E4A, 0x5E4B, 0x5E4D, 0x5E4E, 0x5E4F, 
+  0x5E50, 0x5E51, 0x5E52, 0x5E53, 0x5E56, 0x5E57, 0x5E58, 0x5E59, 
+  0x5E5A, 0x5E5C, 0x5E5D, 0x5E5F, 0x5E60, 0x5E63, 0x5E64, 0x5E65, 
+  0x5E66, 0x5E67, 0x5E68, 0x5E69, 0x5E6A, 0x5E6B, 0x5E6C, 0x5E6D, 
+  0x5E6E, 0x5E6F, 0x5E70, 0x5E71, 0x5E75, 0x5E77, 0x5E79, 0x5E7E, 
+  0x5E81, 0x5E82, 0x5E83, 0x5E85, 0x5E88, 0x5E89, 0x5E8C, 0x5E8D, 
+  0x5E8E, 0x5E92, 0x5E98, 0x5E9B, 0x5E9D, 0x5EA1, 0x5EA2, 0x5EA3, 
+  0x5EA4, 0x5EA8, 0x5EA9, 0x5EAA, 0x5EAB, 0x5EAC, 0x5EAE, 0x5EAF, 
+  0x5EB0, 0x5EB1, 0x5EB2, 0x5EB4, 0x5EBA, 0x5EBB, 0x5EBC, 0x5EBD, 
+  0x5EBF, 0x5EC0, 0x5EC1, 0x5EC2, 0x5EC3, 0x5EC4, 0x5EC5,      0, 
+plane 8f
+at 0x40
+  0x5EC6, 0x5EC7, 0x5EC8, 0x5ECB, 0x5ECC, 0x5ECD, 0x5ECE, 0x5ECF, 
+  0x5ED0, 0x5ED4, 0x5ED5, 0x5ED7, 0x5ED8, 0x5ED9, 0x5EDA, 0x5EDC, 
+  0x5EDD, 0x5EDE, 0x5EDF, 0x5EE0, 0x5EE1, 0x5EE2, 0x5EE3, 0x5EE4, 
+  0x5EE5, 0x5EE6, 0x5EE7, 0x5EE9, 0x5EEB, 0x5EEC, 0x5EED, 0x5EEE, 
+  0x5EEF, 0x5EF0, 0x5EF1, 0x5EF2, 0x5EF3, 0x5EF5, 0x5EF8, 0x5EF9, 
+  0x5EFB, 0x5EFC, 0x5EFD, 0x5F05, 0x5F06, 0x5F07, 0x5F09, 0x5F0C, 
+  0x5F0D, 0x5F0E, 0x5F10, 0x5F12, 0x5F14, 0x5F16, 0x5F19, 0x5F1A, 
+  0x5F1C, 0x5F1D, 0x5F1E, 0x5F21, 0x5F22, 0x5F23, 0x5F24,      0, 
+  0x5F28, 0x5F2B, 0x5F2C, 0x5F2E, 0x5F30, 0x5F32, 0x5F33, 0x5F34, 
+  0x5F35, 0x5F36, 0x5F37, 0x5F38, 0x5F3B, 0x5F3D, 0x5F3E, 0x5F3F, 
+  0x5F41, 0x5F42, 0x5F43, 0x5F44, 0x5F45, 0x5F46, 0x5F47, 0x5F48, 
+  0x5F49, 0x5F4A, 0x5F4B, 0x5F4C, 0x5F4D, 0x5F4E, 0x5F4F, 0x5F51, 
+  0x5F54, 0x5F59, 0x5F5A, 0x5F5B, 0x5F5C, 0x5F5E, 0x5F5F, 0x5F60, 
+  0x5F63, 0x5F65, 0x5F67, 0x5F68, 0x5F6B, 0x5F6E, 0x5F6F, 0x5F72, 
+  0x5F74, 0x5F75, 0x5F76, 0x5F78, 0x5F7A, 0x5F7D, 0x5F7E, 0x5F7F, 
+  0x5F83, 0x5F86, 0x5F8D, 0x5F8E, 0x5F8F, 0x5F91, 0x5F93, 0x5F94, 
+  0x5F96, 0x5F9A, 0x5F9B, 0x5F9D, 0x5F9E, 0x5F9F, 0x5FA0, 0x5FA2, 
+  0x5FA3, 0x5FA4, 0x5FA5, 0x5FA6, 0x5FA7, 0x5FA9, 0x5FAB, 0x5FAC, 
+  0x5FAF, 0x5FB0, 0x5FB1, 0x5FB2, 0x5FB3, 0x5FB4, 0x5FB6, 0x5FB8, 
+  0x5FB9, 0x5FBA, 0x5FBB, 0x5FBE, 0x5FBF, 0x5FC0, 0x5FC1, 0x5FC2, 
+  0x5FC7, 0x5FC8, 0x5FCA, 0x5FCB, 0x5FCE, 0x5FD3, 0x5FD4, 0x5FD5, 
+  0x5FDA, 0x5FDB, 0x5FDC, 0x5FDE, 0x5FDF, 0x5FE2, 0x5FE3, 0x5FE5, 
+  0x5FE6, 0x5FE8, 0x5FE9, 0x5FEC, 0x5FEF, 0x5FF0, 0x5FF2, 0x5FF3, 
+  0x5FF4, 0x5FF6, 0x5FF7, 0x5FF9, 0x5FFA, 0x5FFC, 0x6007,      0, 
+plane 90
+at 0x40
+  0x6008, 0x6009, 0x600B, 0x600C, 0x6010, 0x6011, 0x6013, 0x6017, 
+  0x6018, 0x601A, 0x601E, 0x601F, 0x6022, 0x6023, 0x6024, 0x602C, 
+  0x602D, 0x602E, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036, 
+  0x6037, 0x6038, 0x6039, 0x603A, 0x603D, 0x603E, 0x6040, 0x6044, 
+  0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604A, 0x604C, 0x604E, 
+  0x604F, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605B, 
+  0x605C, 0x605E, 0x605F, 0x6060, 0x6061, 0x6065, 0x6066, 0x606E, 
+  0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607E, 0x6080,      0, 
+  0x6081, 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608A, 0x608B, 
+  0x608E, 0x608F, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, 0x6098, 
+  0x6099, 0x609C, 0x609E, 0x60A1, 0x60A2, 0x60A4, 0x60A5, 0x60A7, 
+  0x60A9, 0x60AA, 0x60AE, 0x60B0, 0x60B3, 0x60B5, 0x60B6, 0x60B7, 
+  0x60B9, 0x60BA, 0x60BD, 0x60BE, 0x60BF, 0x60C0, 0x60C1, 0x60C2, 
+  0x60C3, 0x60C4, 0x60C7, 0x60C8, 0x60C9, 0x60CC, 0x60CD, 0x60CE, 
+  0x60CF, 0x60D0, 0x60D2, 0x60D3, 0x60D4, 0x60D6, 0x60D7, 0x60D9, 
+  0x60DB, 0x60DE, 0x60E1, 0x60E2, 0x60E3, 0x60E4, 0x60E5, 0x60EA, 
+  0x60F1, 0x60F2, 0x60F5, 0x60F7, 0x60F8, 0x60FB, 0x60FC, 0x60FD, 
+  0x60FE, 0x60FF, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107, 0x610A, 
+  0x610B, 0x610C, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, 
+  0x6117, 0x6118, 0x6119, 0x611B, 0x611C, 0x611D, 0x611E, 0x6121, 
+  0x6122, 0x6125, 0x6128, 0x6129, 0x612A, 0x612C, 0x612D, 0x612E, 
+  0x612F, 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 
+  0x6137, 0x6138, 0x6139, 0x613A, 0x613B, 0x613C, 0x613D, 0x613E, 
+  0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146,      0, 
+plane 91
+at 0x40
+  0x6147, 0x6149, 0x614B, 0x614D, 0x614F, 0x6150, 0x6152, 0x6153, 
+  0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615A, 0x615B, 0x615C, 
+  0x615E, 0x615F, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166, 
+  0x6169, 0x616A, 0x616B, 0x616C, 0x616D, 0x616E, 0x616F, 0x6171, 
+  0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617A, 0x617B, 
+  0x617C, 0x617D, 0x617E, 0x617F, 0x6180, 0x6181, 0x6182, 0x6183, 
+  0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618A, 0x618C, 
+  0x618D, 0x618F, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195,      0, 
+  0x6196, 0x6197, 0x6198, 0x6199, 0x619A, 0x619B, 0x619C, 0x619E, 
+  0x619F, 0x61A0, 0x61A1, 0x61A2, 0x61A3, 0x61A4, 0x61A5, 0x61A6, 
+  0x61AA, 0x61AB, 0x61AD, 0x61AE, 0x61AF, 0x61B0, 0x61B1, 0x61B2, 
+  0x61B3, 0x61B4, 0x61B5, 0x61B6, 0x61B8, 0x61B9, 0x61BA, 0x61BB, 
+  0x61BC, 0x61BD, 0x61BF, 0x61C0, 0x61C1, 0x61C3, 0x61C4, 0x61C5, 
+  0x61C6, 0x61C7, 0x61C9, 0x61CC, 0x61CD, 0x61CE, 0x61CF, 0x61D0, 
+  0x61D3, 0x61D5, 0x61D6, 0x61D7, 0x61D8, 0x61D9, 0x61DA, 0x61DB, 
+  0x61DC, 0x61DD, 0x61DE, 0x61DF, 0x61E0, 0x61E1, 0x61E2, 0x61E3, 
+  0x61E4, 0x61E5, 0x61E7, 0x61E8, 0x61E9, 0x61EA, 0x61EB, 0x61EC, 
+  0x61ED, 0x61EE, 0x61EF, 0x61F0, 0x61F1, 0x61F2, 0x61F3, 0x61F4, 
+  0x61F6, 0x61F7, 0x61F8, 0x61F9, 0x61FA, 0x61FB, 0x61FC, 0x61FD, 
+  0x61FE, 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207, 
+  0x6209, 0x6213, 0x6214, 0x6219, 0x621C, 0x621D, 0x621E, 0x6220, 
+  0x6223, 0x6226, 0x6227, 0x6228, 0x6229, 0x622B, 0x622D, 0x622F, 
+  0x6230, 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623A, 
+  0x623B, 0x623C, 0x6242, 0x6244, 0x6245, 0x6246, 0x624A,      0, 
+plane 92
+at 0x40
+  0x624F, 0x6250, 0x6255, 0x6256, 0x6257, 0x6259, 0x625A, 0x625C, 
+  0x625D, 0x625E, 0x625F, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265, 
+  0x6268, 0x6271, 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627A, 
+  0x627B, 0x627D, 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287, 
+  0x6288, 0x628B, 0x628C, 0x628D, 0x628E, 0x628F, 0x6290, 0x6294, 
+  0x6299, 0x629C, 0x629D, 0x629E, 0x62A3, 0x62A6, 0x62A7, 0x62A9, 
+  0x62AA, 0x62AD, 0x62AE, 0x62AF, 0x62B0, 0x62B2, 0x62B3, 0x62B4, 
+  0x62B6, 0x62B7, 0x62B8, 0x62BA, 0x62BE, 0x62C0, 0x62C1,      0, 
+  0x62C3, 0x62CB, 0x62CF, 0x62D1, 0x62D5, 0x62DD, 0x62DE, 0x62E0, 
+  0x62E1, 0x62E4, 0x62EA, 0x62EB, 0x62F0, 0x62F2, 0x62F5, 0x62F8, 
+  0x62F9, 0x62FA, 0x62FB, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306, 
+  0x630A, 0x630B, 0x630C, 0x630D, 0x630F, 0x6310, 0x6312, 0x6313, 
+  0x6314, 0x6315, 0x6317, 0x6318, 0x6319, 0x631C, 0x6326, 0x6327, 
+  0x6329, 0x632C, 0x632D, 0x632E, 0x6330, 0x6331, 0x6333, 0x6334, 
+  0x6335, 0x6336, 0x6337, 0x6338, 0x633B, 0x633C, 0x633E, 0x633F, 
+  0x6340, 0x6341, 0x6344, 0x6347, 0x6348, 0x634A, 0x6351, 0x6352, 
+  0x6353, 0x6354, 0x6356, 0x6357, 0x6358, 0x6359, 0x635A, 0x635B, 
+  0x635C, 0x635D, 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636A, 
+  0x636B, 0x636C, 0x636F, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375, 
+  0x6378, 0x6379, 0x637C, 0x637D, 0x637E, 0x637F, 0x6381, 0x6383, 
+  0x6384, 0x6385, 0x6386, 0x638B, 0x638D, 0x6391, 0x6393, 0x6394, 
+  0x6395, 0x6397, 0x6399, 0x639A, 0x639B, 0x639C, 0x639D, 0x639E, 
+  0x639F, 0x63A1, 0x63A4, 0x63A6, 0x63AB, 0x63AF, 0x63B1, 0x63B2, 
+  0x63B5, 0x63B6, 0x63B9, 0x63BB, 0x63BD, 0x63BF, 0x63C0,      0, 
+plane 93
+at 0x40
+  0x63C1, 0x63C2, 0x63C3, 0x63C5, 0x63C7, 0x63C8, 0x63CA, 0x63CB, 
+  0x63CC, 0x63D1, 0x63D3, 0x63D4, 0x63D5, 0x63D7, 0x63D8, 0x63D9, 
+  0x63DA, 0x63DB, 0x63DC, 0x63DD, 0x63DF, 0x63E2, 0x63E4, 0x63E5, 
+  0x63E6, 0x63E7, 0x63E8, 0x63EB, 0x63EC, 0x63EE, 0x63EF, 0x63F0, 
+  0x63F1, 0x63F3, 0x63F5, 0x63F7, 0x63F9, 0x63FA, 0x63FB, 0x63FC, 
+  0x63FE, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, 0x640A, 
+  0x640D, 0x640E, 0x6411, 0x6412, 0x6415, 0x6416, 0x6417, 0x6418, 
+  0x6419, 0x641A, 0x641D, 0x641F, 0x6422, 0x6423, 0x6424,      0, 
+  0x6425, 0x6427, 0x6428, 0x6429, 0x642B, 0x642E, 0x642F, 0x6430, 
+  0x6431, 0x6432, 0x6433, 0x6435, 0x6436, 0x6437, 0x6438, 0x6439, 
+  0x643B, 0x643C, 0x643E, 0x6440, 0x6442, 0x6443, 0x6449, 0x644B, 
+  0x644C, 0x644D, 0x644E, 0x644F, 0x6450, 0x6451, 0x6453, 0x6455, 
+  0x6456, 0x6457, 0x6459, 0x645A, 0x645B, 0x645C, 0x645D, 0x645F, 
+  0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6468, 
+  0x646A, 0x646B, 0x646C, 0x646E, 0x646F, 0x6470, 0x6471, 0x6472, 
+  0x6473, 0x6474, 0x6475, 0x6476, 0x6477, 0x647B, 0x647C, 0x647D, 
+  0x647E, 0x647F, 0x6480, 0x6481, 0x6483, 0x6486, 0x6488, 0x6489, 
+  0x648A, 0x648B, 0x648C, 0x648D, 0x648E, 0x648F, 0x6490, 0x6493, 
+  0x6494, 0x6497, 0x6498, 0x649A, 0x649B, 0x649C, 0x649D, 0x649F, 
+  0x64A0, 0x64A1, 0x64A2, 0x64A3, 0x64A5, 0x64A6, 0x64A7, 0x64A8, 
+  0x64AA, 0x64AB, 0x64AF, 0x64B1, 0x64B2, 0x64B3, 0x64B4, 0x64B6, 
+  0x64B9, 0x64BB, 0x64BD, 0x64BE, 0x64BF, 0x64C1, 0x64C3, 0x64C4, 
+  0x64C6, 0x64C7, 0x64C8, 0x64C9, 0x64CA, 0x64CB, 0x64CC, 0x64CF, 
+  0x64D1, 0x64D3, 0x64D4, 0x64D5, 0x64D6, 0x64D9, 0x64DA,      0, 
+plane 94
+at 0x40
+  0x64DB, 0x64DC, 0x64DD, 0x64DF, 0x64E0, 0x64E1, 0x64E3, 0x64E5, 
+  0x64E7, 0x64E8, 0x64E9, 0x64EA, 0x64EB, 0x64EC, 0x64ED, 0x64EE, 
+  0x64EF, 0x64F0, 0x64F1, 0x64F2, 0x64F3, 0x64F4, 0x64F5, 0x64F6, 
+  0x64F7, 0x64F8, 0x64F9, 0x64FA, 0x64FB, 0x64FC, 0x64FD, 0x64FE, 
+  0x64FF, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507, 
+  0x6508, 0x650A, 0x650B, 0x650C, 0x650D, 0x650E, 0x650F, 0x6510, 
+  0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, 0x6519, 0x651A, 
+  0x651B, 0x651C, 0x651D, 0x651E, 0x651F, 0x6520, 0x6521,      0, 
+  0x6522, 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529, 0x652A, 
+  0x652C, 0x652D, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653A, 
+  0x653C, 0x653D, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546, 
+  0x6547, 0x654A, 0x654B, 0x654D, 0x654E, 0x6550, 0x6552, 0x6553, 
+  0x6554, 0x6557, 0x6558, 0x655A, 0x655C, 0x655F, 0x6560, 0x6561, 
+  0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656A, 0x656D, 0x656E, 
+  0x656F, 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579, 0x657A, 
+  0x657B, 0x657C, 0x657D, 0x657E, 0x657F, 0x6580, 0x6581, 0x6582, 
+  0x6583, 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658A, 0x658D, 
+  0x658E, 0x658F, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598, 0x659A, 
+  0x659D, 0x659E, 0x65A0, 0x65A2, 0x65A3, 0x65A6, 0x65A8, 0x65AA, 
+  0x65AC, 0x65AE, 0x65B1, 0x65B2, 0x65B3, 0x65B4, 0x65B5, 0x65B6, 
+  0x65B7, 0x65B8, 0x65BA, 0x65BB, 0x65BE, 0x65BF, 0x65C0, 0x65C2, 
+  0x65C7, 0x65C8, 0x65C9, 0x65CA, 0x65CD, 0x65D0, 0x65D1, 0x65D3, 
+  0x65D4, 0x65D5, 0x65D8, 0x65D9, 0x65DA, 0x65DB, 0x65DC, 0x65DD, 
+  0x65DE, 0x65DF, 0x65E1, 0x65E3, 0x65E4, 0x65EA, 0x65EB,      0, 
+plane 95
+at 0x40
+  0x65F2, 0x65F3, 0x65F4, 0x65F5, 0x65F8, 0x65F9, 0x65FB, 0x65FC, 
+  0x65FD, 0x65FE, 0x65FF, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608, 
+  0x6609, 0x660B, 0x660D, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617, 
+  0x6618, 0x661A, 0x661B, 0x661C, 0x661E, 0x6621, 0x6622, 0x6623, 
+  0x6624, 0x6626, 0x6629, 0x662A, 0x662B, 0x662C, 0x662E, 0x6630, 
+  0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663A, 0x663B, 0x663D, 
+  0x663F, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648, 
+  0x6649, 0x664A, 0x664D, 0x664E, 0x6650, 0x6651, 0x6658,      0, 
+  0x6659, 0x665B, 0x665C, 0x665D, 0x665E, 0x6660, 0x6662, 0x6663, 
+  0x6665, 0x6667, 0x6669, 0x666A, 0x666B, 0x666C, 0x666D, 0x6671, 
+  0x6672, 0x6673, 0x6675, 0x6678, 0x6679, 0x667B, 0x667C, 0x667D, 
+  0x667F, 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689, 
+  0x668A, 0x668B, 0x668D, 0x668E, 0x668F, 0x6690, 0x6692, 0x6693, 
+  0x6694, 0x6695, 0x6698, 0x6699, 0x669A, 0x669B, 0x669C, 0x669E, 
+  0x669F, 0x66A0, 0x66A1, 0x66A2, 0x66A3, 0x66A4, 0x66A5, 0x66A6, 
+  0x66A9, 0x66AA, 0x66AB, 0x66AC, 0x66AD, 0x66AF, 0x66B0, 0x66B1, 
+  0x66B2, 0x66B3, 0x66B5, 0x66B6, 0x66B7, 0x66B8, 0x66BA, 0x66BB, 
+  0x66BC, 0x66BD, 0x66BF, 0x66C0, 0x66C1, 0x66C2, 0x66C3, 0x66C4, 
+  0x66C5, 0x66C6, 0x66C7, 0x66C8, 0x66C9, 0x66CA, 0x66CB, 0x66CC, 
+  0x66CD, 0x66CE, 0x66CF, 0x66D0, 0x66D1, 0x66D2, 0x66D3, 0x66D4, 
+  0x66D5, 0x66D6, 0x66D7, 0x66D8, 0x66DA, 0x66DE, 0x66DF, 0x66E0, 
+  0x66E1, 0x66E2, 0x66E3, 0x66E4, 0x66E5, 0x66E7, 0x66E8, 0x66EA, 
+  0x66EB, 0x66EC, 0x66ED, 0x66EE, 0x66EF, 0x66F1, 0x66F5, 0x66F6, 
+  0x66F8, 0x66FA, 0x66FB, 0x66FD, 0x6701, 0x6702, 0x6703,      0, 
+plane 96
+at 0x40
+  0x6704, 0x6705, 0x6706, 0x6707, 0x670C, 0x670E, 0x670F, 0x6711, 
+  0x6712, 0x6713, 0x6716, 0x6718, 0x6719, 0x671A, 0x671C, 0x671E, 
+  0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729, 
+  0x672E, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739, 
+  0x673B, 0x673C, 0x673E, 0x673F, 0x6741, 0x6744, 0x6745, 0x6747, 
+  0x674A, 0x674B, 0x674D, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758, 
+  0x6759, 0x675A, 0x675B, 0x675D, 0x6762, 0x6763, 0x6764, 0x6766, 
+  0x6767, 0x676B, 0x676C, 0x676E, 0x6771, 0x6774, 0x6776,      0, 
+  0x6778, 0x6779, 0x677A, 0x677B, 0x677D, 0x6780, 0x6782, 0x6783, 
+  0x6785, 0x6786, 0x6788, 0x678A, 0x678C, 0x678D, 0x678E, 0x678F, 
+  0x6791, 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679B, 0x679F, 
+  0x67A0, 0x67A1, 0x67A4, 0x67A6, 0x67A9, 0x67AC, 0x67AE, 0x67B1, 
+  0x67B2, 0x67B4, 0x67B9, 0x67BA, 0x67BB, 0x67BC, 0x67BD, 0x67BE, 
+  0x67BF, 0x67C0, 0x67C2, 0x67C5, 0x67C6, 0x67C7, 0x67C8, 0x67C9, 
+  0x67CA, 0x67CB, 0x67CC, 0x67CD, 0x67CE, 0x67D5, 0x67D6, 0x67D7, 
+  0x67DB, 0x67DF, 0x67E1, 0x67E3, 0x67E4, 0x67E6, 0x67E7, 0x67E8, 
+  0x67EA, 0x67EB, 0x67ED, 0x67EE, 0x67F2, 0x67F5, 0x67F6, 0x67F7, 
+  0x67F8, 0x67F9, 0x67FA, 0x67FB, 0x67FC, 0x67FE, 0x6801, 0x6802, 
+  0x6803, 0x6804, 0x6806, 0x680D, 0x6810, 0x6812, 0x6814, 0x6815, 
+  0x6818, 0x6819, 0x681A, 0x681B, 0x681C, 0x681E, 0x681F, 0x6820, 
+  0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682B, 
+  0x682C, 0x682D, 0x682E, 0x682F, 0x6830, 0x6831, 0x6834, 0x6835, 
+  0x6836, 0x683A, 0x683B, 0x683F, 0x6847, 0x684B, 0x684D, 0x684F, 
+  0x6852, 0x6856, 0x6857, 0x6858, 0x6859, 0x685A, 0x685B,      0, 
+plane 97
+at 0x40
+  0x685C, 0x685D, 0x685E, 0x685F, 0x686A, 0x686C, 0x686D, 0x686E, 
+  0x686F, 0x6870, 0x6871, 0x6872, 0x6873, 0x6875, 0x6878, 0x6879, 
+  0x687A, 0x687B, 0x687C, 0x687D, 0x687E, 0x687F, 0x6880, 0x6882, 
+  0x6884, 0x6887, 0x6888, 0x6889, 0x688A, 0x688B, 0x688C, 0x688D, 
+  0x688E, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6898, 
+  0x6899, 0x689A, 0x689B, 0x689C, 0x689D, 0x689E, 0x689F, 0x68A0, 
+  0x68A1, 0x68A3, 0x68A4, 0x68A5, 0x68A9, 0x68AA, 0x68AB, 0x68AC, 
+  0x68AE, 0x68B1, 0x68B2, 0x68B4, 0x68B6, 0x68B7, 0x68B8,      0, 
+  0x68B9, 0x68BA, 0x68BB, 0x68BC, 0x68BD, 0x68BE, 0x68BF, 0x68C1, 
+  0x68C3, 0x68C4, 0x68C5, 0x68C6, 0x68C7, 0x68C8, 0x68CA, 0x68CC, 
+  0x68CE, 0x68CF, 0x68D0, 0x68D1, 0x68D3, 0x68D4, 0x68D6, 0x68D7, 
+  0x68D9, 0x68DB, 0x68DC, 0x68DD, 0x68DE, 0x68DF, 0x68E1, 0x68E2, 
+  0x68E4, 0x68E5, 0x68E6, 0x68E7, 0x68E8, 0x68E9, 0x68EA, 0x68EB, 
+  0x68EC, 0x68ED, 0x68EF, 0x68F2, 0x68F3, 0x68F4, 0x68F6, 0x68F7, 
+  0x68F8, 0x68FB, 0x68FD, 0x68FE, 0x68FF, 0x6900, 0x6902, 0x6903, 
+  0x6904, 0x6906, 0x6907, 0x6908, 0x6909, 0x690A, 0x690C, 0x690F, 
+  0x6911, 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919, 
+  0x691A, 0x691B, 0x691C, 0x691D, 0x691E, 0x6921, 0x6922, 0x6923, 
+  0x6925, 0x6926, 0x6927, 0x6928, 0x6929, 0x692A, 0x692B, 0x692C, 
+  0x692E, 0x692F, 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937, 
+  0x6938, 0x693A, 0x693B, 0x693C, 0x693E, 0x6940, 0x6941, 0x6943, 
+  0x6944, 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694A, 0x694B, 
+  0x694C, 0x694D, 0x694E, 0x694F, 0x6950, 0x6951, 0x6952, 0x6953, 
+  0x6955, 0x6956, 0x6958, 0x6959, 0x695B, 0x695C, 0x695F,      0, 
+plane 98
+at 0x40
+  0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968, 0x6969, 0x696A, 
+  0x696C, 0x696D, 0x696F, 0x6970, 0x6972, 0x6973, 0x6974, 0x6975, 
+  0x6976, 0x697A, 0x697B, 0x697D, 0x697E, 0x697F, 0x6981, 0x6983, 
+  0x6985, 0x698A, 0x698B, 0x698C, 0x698E, 0x698F, 0x6990, 0x6991, 
+  0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699A, 0x699D, 0x699E, 
+  0x699F, 0x69A0, 0x69A1, 0x69A2, 0x69A3, 0x69A4, 0x69A5, 0x69A6, 
+  0x69A9, 0x69AA, 0x69AC, 0x69AE, 0x69AF, 0x69B0, 0x69B2, 0x69B3, 
+  0x69B5, 0x69B6, 0x69B8, 0x69B9, 0x69BA, 0x69BC, 0x69BD,      0, 
+  0x69BE, 0x69BF, 0x69C0, 0x69C2, 0x69C3, 0x69C4, 0x69C5, 0x69C6, 
+  0x69C7, 0x69C8, 0x69C9, 0x69CB, 0x69CD, 0x69CF, 0x69D1, 0x69D2, 
+  0x69D3, 0x69D5, 0x69D6, 0x69D7, 0x69D8, 0x69D9, 0x69DA, 0x69DC, 
+  0x69DD, 0x69DE, 0x69E1, 0x69E2, 0x69E3, 0x69E4, 0x69E5, 0x69E6, 
+  0x69E7, 0x69E8, 0x69E9, 0x69EA, 0x69EB, 0x69EC, 0x69EE, 0x69EF, 
+  0x69F0, 0x69F1, 0x69F3, 0x69F4, 0x69F5, 0x69F6, 0x69F7, 0x69F8, 
+  0x69F9, 0x69FA, 0x69FB, 0x69FC, 0x69FE, 0x6A00, 0x6A01, 0x6A02, 
+  0x6A03, 0x6A04, 0x6A05, 0x6A06, 0x6A07, 0x6A08, 0x6A09, 0x6A0B, 
+  0x6A0C, 0x6A0D, 0x6A0E, 0x6A0F, 0x6A10, 0x6A11, 0x6A12, 0x6A13, 
+  0x6A14, 0x6A15, 0x6A16, 0x6A19, 0x6A1A, 0x6A1B, 0x6A1C, 0x6A1D, 
+  0x6A1E, 0x6A20, 0x6A22, 0x6A23, 0x6A24, 0x6A25, 0x6A26, 0x6A27, 
+  0x6A29, 0x6A2B, 0x6A2C, 0x6A2D, 0x6A2E, 0x6A30, 0x6A32, 0x6A33, 
+  0x6A34, 0x6A36, 0x6A37, 0x6A38, 0x6A39, 0x6A3A, 0x6A3B, 0x6A3C, 
+  0x6A3F, 0x6A40, 0x6A41, 0x6A42, 0x6A43, 0x6A45, 0x6A46, 0x6A48, 
+  0x6A49, 0x6A4A, 0x6A4B, 0x6A4C, 0x6A4D, 0x6A4E, 0x6A4F, 0x6A51, 
+  0x6A52, 0x6A53, 0x6A54, 0x6A55, 0x6A56, 0x6A57, 0x6A5A,      0, 
+plane 99
+at 0x40
+  0x6A5C, 0x6A5D, 0x6A5E, 0x6A5F, 0x6A60, 0x6A62, 0x6A63, 0x6A64, 
+  0x6A66, 0x6A67, 0x6A68, 0x6A69, 0x6A6A, 0x6A6B, 0x6A6C, 0x6A6D, 
+  0x6A6E, 0x6A6F, 0x6A70, 0x6A72, 0x6A73, 0x6A74, 0x6A75, 0x6A76, 
+  0x6A77, 0x6A78, 0x6A7A, 0x6A7B, 0x6A7D, 0x6A7E, 0x6A7F, 0x6A81, 
+  0x6A82, 0x6A83, 0x6A85, 0x6A86, 0x6A87, 0x6A88, 0x6A89, 0x6A8A, 
+  0x6A8B, 0x6A8C, 0x6A8D, 0x6A8F, 0x6A92, 0x6A93, 0x6A94, 0x6A95, 
+  0x6A96, 0x6A98, 0x6A99, 0x6A9A, 0x6A9B, 0x6A9C, 0x6A9D, 0x6A9E, 
+  0x6A9F, 0x6AA1, 0x6AA2, 0x6AA3, 0x6AA4, 0x6AA5, 0x6AA6,      0, 
+  0x6AA7, 0x6AA8, 0x6AAA, 0x6AAD, 0x6AAE, 0x6AAF, 0x6AB0, 0x6AB1, 
+  0x6AB2, 0x6AB3, 0x6AB4, 0x6AB5, 0x6AB6, 0x6AB7, 0x6AB8, 0x6AB9, 
+  0x6ABA, 0x6ABB, 0x6ABC, 0x6ABD, 0x6ABE, 0x6ABF, 0x6AC0, 0x6AC1, 
+  0x6AC2, 0x6AC3, 0x6AC4, 0x6AC5, 0x6AC6, 0x6AC7, 0x6AC8, 0x6AC9, 
+  0x6ACA, 0x6ACB, 0x6ACC, 0x6ACD, 0x6ACE, 0x6ACF, 0x6AD0, 0x6AD1, 
+  0x6AD2, 0x6AD3, 0x6AD4, 0x6AD5, 0x6AD6, 0x6AD7, 0x6AD8, 0x6AD9, 
+  0x6ADA, 0x6ADB, 0x6ADC, 0x6ADD, 0x6ADE, 0x6ADF, 0x6AE0, 0x6AE1, 
+  0x6AE2, 0x6AE3, 0x6AE4, 0x6AE5, 0x6AE6, 0x6AE7, 0x6AE8, 0x6AE9, 
+  0x6AEA, 0x6AEB, 0x6AEC, 0x6AED, 0x6AEE, 0x6AEF, 0x6AF0, 0x6AF1, 
+  0x6AF2, 0x6AF3, 0x6AF4, 0x6AF5, 0x6AF6, 0x6AF7, 0x6AF8, 0x6AF9, 
+  0x6AFA, 0x6AFB, 0x6AFC, 0x6AFD, 0x6AFE, 0x6AFF, 0x6B00, 0x6B01, 
+  0x6B02, 0x6B03, 0x6B04, 0x6B05, 0x6B06, 0x6B07, 0x6B08, 0x6B09, 
+  0x6B0A, 0x6B0B, 0x6B0C, 0x6B0D, 0x6B0E, 0x6B0F, 0x6B10, 0x6B11, 
+  0x6B12, 0x6B13, 0x6B14, 0x6B15, 0x6B16, 0x6B17, 0x6B18, 0x6B19, 
+  0x6B1A, 0x6B1B, 0x6B1C, 0x6B1D, 0x6B1E, 0x6B1F, 0x6B25, 0x6B26, 
+  0x6B28, 0x6B29, 0x6B2A, 0x6B2B, 0x6B2C, 0x6B2D, 0x6B2E,      0, 
+plane 9a
+at 0x40
+  0x6B2F, 0x6B30, 0x6B31, 0x6B33, 0x6B34, 0x6B35, 0x6B36, 0x6B38, 
+  0x6B3B, 0x6B3C, 0x6B3D, 0x6B3F, 0x6B40, 0x6B41, 0x6B42, 0x6B44, 
+  0x6B45, 0x6B48, 0x6B4A, 0x6B4B, 0x6B4D, 0x6B4E, 0x6B4F, 0x6B50, 
+  0x6B51, 0x6B52, 0x6B53, 0x6B54, 0x6B55, 0x6B56, 0x6B57, 0x6B58, 
+  0x6B5A, 0x6B5B, 0x6B5C, 0x6B5D, 0x6B5E, 0x6B5F, 0x6B60, 0x6B61, 
+  0x6B68, 0x6B69, 0x6B6B, 0x6B6C, 0x6B6D, 0x6B6E, 0x6B6F, 0x6B70, 
+  0x6B71, 0x6B72, 0x6B73, 0x6B74, 0x6B75, 0x6B76, 0x6B77, 0x6B78, 
+  0x6B7A, 0x6B7D, 0x6B7E, 0x6B7F, 0x6B80, 0x6B85, 0x6B88,      0, 
+  0x6B8C, 0x6B8E, 0x6B8F, 0x6B90, 0x6B91, 0x6B94, 0x6B95, 0x6B97, 
+  0x6B98, 0x6B99, 0x6B9C, 0x6B9D, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BA2, 
+  0x6BA3, 0x6BA4, 0x6BA5, 0x6BA6, 0x6BA7, 0x6BA8, 0x6BA9, 0x6BAB, 
+  0x6BAC, 0x6BAD, 0x6BAE, 0x6BAF, 0x6BB0, 0x6BB1, 0x6BB2, 0x6BB6, 
+  0x6BB8, 0x6BB9, 0x6BBA, 0x6BBB, 0x6BBC, 0x6BBD, 0x6BBE, 0x6BC0, 
+  0x6BC3, 0x6BC4, 0x6BC6, 0x6BC7, 0x6BC8, 0x6BC9, 0x6BCA, 0x6BCC, 
+  0x6BCE, 0x6BD0, 0x6BD1, 0x6BD8, 0x6BDA, 0x6BDC, 0x6BDD, 0x6BDE, 
+  0x6BDF, 0x6BE0, 0x6BE2, 0x6BE3, 0x6BE4, 0x6BE5, 0x6BE6, 0x6BE7, 
+  0x6BE8, 0x6BE9, 0x6BEC, 0x6BED, 0x6BEE, 0x6BF0, 0x6BF1, 0x6BF2, 
+  0x6BF4, 0x6BF6, 0x6BF7, 0x6BF8, 0x6BFA, 0x6BFB, 0x6BFC, 0x6BFE, 
+  0x6BFF, 0x6C00, 0x6C01, 0x6C02, 0x6C03, 0x6C04, 0x6C08, 0x6C09, 
+  0x6C0A, 0x6C0B, 0x6C0C, 0x6C0E, 0x6C12, 0x6C17, 0x6C1C, 0x6C1D, 
+  0x6C1E, 0x6C20, 0x6C23, 0x6C25, 0x6C2B, 0x6C2C, 0x6C2D, 0x6C31, 
+  0x6C33, 0x6C36, 0x6C37, 0x6C39, 0x6C3A, 0x6C3B, 0x6C3C, 0x6C3E, 
+  0x6C3F, 0x6C43, 0x6C44, 0x6C45, 0x6C48, 0x6C4B, 0x6C4C, 0x6C4D, 
+  0x6C4E, 0x6C4F, 0x6C51, 0x6C52, 0x6C53, 0x6C56, 0x6C58,      0, 
+plane 9b
+at 0x40
+  0x6C59, 0x6C5A, 0x6C62, 0x6C63, 0x6C65, 0x6C66, 0x6C67, 0x6C6B, 
+  0x6C6C, 0x6C6D, 0x6C6E, 0x6C6F, 0x6C71, 0x6C73, 0x6C75, 0x6C77, 
+  0x6C78, 0x6C7A, 0x6C7B, 0x6C7C, 0x6C7F, 0x6C80, 0x6C84, 0x6C87, 
+  0x6C8A, 0x6C8B, 0x6C8D, 0x6C8E, 0x6C91, 0x6C92, 0x6C95, 0x6C96, 
+  0x6C97, 0x6C98, 0x6C9A, 0x6C9C, 0x6C9D, 0x6C9E, 0x6CA0, 0x6CA2, 
+  0x6CA8, 0x6CAC, 0x6CAF, 0x6CB0, 0x6CB4, 0x6CB5, 0x6CB6, 0x6CB7, 
+  0x6CBA, 0x6CC0, 0x6CC1, 0x6CC2, 0x6CC3, 0x6CC6, 0x6CC7, 0x6CC8, 
+  0x6CCB, 0x6CCD, 0x6CCE, 0x6CCF, 0x6CD1, 0x6CD2, 0x6CD8,      0, 
+  0x6CD9, 0x6CDA, 0x6CDC, 0x6CDD, 0x6CDF, 0x6CE4, 0x6CE6, 0x6CE7, 
+  0x6CE9, 0x6CEC, 0x6CED, 0x6CF2, 0x6CF4, 0x6CF9, 0x6CFF, 0x6D00, 
+  0x6D02, 0x6D03, 0x6D05, 0x6D06, 0x6D08, 0x6D09, 0x6D0A, 0x6D0D, 
+  0x6D0F, 0x6D10, 0x6D11, 0x6D13, 0x6D14, 0x6D15, 0x6D16, 0x6D18, 
+  0x6D1C, 0x6D1D, 0x6D1F, 0x6D20, 0x6D21, 0x6D22, 0x6D23, 0x6D24, 
+  0x6D26, 0x6D28, 0x6D29, 0x6D2C, 0x6D2D, 0x6D2F, 0x6D30, 0x6D34, 
+  0x6D36, 0x6D37, 0x6D38, 0x6D3A, 0x6D3F, 0x6D40, 0x6D42, 0x6D44, 
+  0x6D49, 0x6D4C, 0x6D50, 0x6D55, 0x6D56, 0x6D57, 0x6D58, 0x6D5B, 
+  0x6D5D, 0x6D5F, 0x6D61, 0x6D62, 0x6D64, 0x6D65, 0x6D67, 0x6D68, 
+  0x6D6B, 0x6D6C, 0x6D6D, 0x6D70, 0x6D71, 0x6D72, 0x6D73, 0x6D75, 
+  0x6D76, 0x6D79, 0x6D7A, 0x6D7B, 0x6D7D, 0x6D7E, 0x6D7F, 0x6D80, 
+  0x6D81, 0x6D83, 0x6D84, 0x6D86, 0x6D87, 0x6D8A, 0x6D8B, 0x6D8D, 
+  0x6D8F, 0x6D90, 0x6D92, 0x6D96, 0x6D97, 0x6D98, 0x6D99, 0x6D9A, 
+  0x6D9C, 0x6DA2, 0x6DA5, 0x6DAC, 0x6DAD, 0x6DB0, 0x6DB1, 0x6DB3, 
+  0x6DB4, 0x6DB6, 0x6DB7, 0x6DB9, 0x6DBA, 0x6DBB, 0x6DBC, 0x6DBD, 
+  0x6DBE, 0x6DC1, 0x6DC2, 0x6DC3, 0x6DC8, 0x6DC9, 0x6DCA,      0, 
+plane 9c
+at 0x40
+  0x6DCD, 0x6DCE, 0x6DCF, 0x6DD0, 0x6DD2, 0x6DD3, 0x6DD4, 0x6DD5, 
+  0x6DD7, 0x6DDA, 0x6DDB, 0x6DDC, 0x6DDF, 0x6DE2, 0x6DE3, 0x6DE5, 
+  0x6DE7, 0x6DE8, 0x6DE9, 0x6DEA, 0x6DED, 0x6DEF, 0x6DF0, 0x6DF2, 
+  0x6DF4, 0x6DF5, 0x6DF6, 0x6DF8, 0x6DFA, 0x6DFD, 0x6DFE, 0x6DFF, 
+  0x6E00, 0x6E01, 0x6E02, 0x6E03, 0x6E04, 0x6E06, 0x6E07, 0x6E08, 
+  0x6E09, 0x6E0B, 0x6E0F, 0x6E12, 0x6E13, 0x6E15, 0x6E18, 0x6E19, 
+  0x6E1B, 0x6E1C, 0x6E1E, 0x6E1F, 0x6E22, 0x6E26, 0x6E27, 0x6E28, 
+  0x6E2A, 0x6E2C, 0x6E2E, 0x6E30, 0x6E31, 0x6E33, 0x6E35,      0, 
+  0x6E36, 0x6E37, 0x6E39, 0x6E3B, 0x6E3C, 0x6E3D, 0x6E3E, 0x6E3F, 
+  0x6E40, 0x6E41, 0x6E42, 0x6E45, 0x6E46, 0x6E47, 0x6E48, 0x6E49, 
+  0x6E4A, 0x6E4B, 0x6E4C, 0x6E4F, 0x6E50, 0x6E51, 0x6E52, 0x6E55, 
+  0x6E57, 0x6E59, 0x6E5A, 0x6E5C, 0x6E5D, 0x6E5E, 0x6E60, 0x6E61, 
+  0x6E62, 0x6E63, 0x6E64, 0x6E65, 0x6E66, 0x6E67, 0x6E68, 0x6E69, 
+  0x6E6A, 0x6E6C, 0x6E6D, 0x6E6F, 0x6E70, 0x6E71, 0x6E72, 0x6E73, 
+  0x6E74, 0x6E75, 0x6E76, 0x6E77, 0x6E78, 0x6E79, 0x6E7A, 0x6E7B, 
+  0x6E7C, 0x6E7D, 0x6E80, 0x6E81, 0x6E82, 0x6E84, 0x6E87, 0x6E88, 
+  0x6E8A, 0x6E8B, 0x6E8C, 0x6E8D, 0x6E8E, 0x6E91, 0x6E92, 0x6E93, 
+  0x6E94, 0x6E95, 0x6E96, 0x6E97, 0x6E99, 0x6E9A, 0x6E9B, 0x6E9D, 
+  0x6E9E, 0x6EA0, 0x6EA1, 0x6EA3, 0x6EA4, 0x6EA6, 0x6EA8, 0x6EA9, 
+  0x6EAB, 0x6EAC, 0x6EAD, 0x6EAE, 0x6EB0, 0x6EB3, 0x6EB5, 0x6EB8, 
+  0x6EB9, 0x6EBC, 0x6EBE, 0x6EBF, 0x6EC0, 0x6EC3, 0x6EC4, 0x6EC5, 
+  0x6EC6, 0x6EC8, 0x6EC9, 0x6ECA, 0x6ECC, 0x6ECD, 0x6ECE, 0x6ED0, 
+  0x6ED2, 0x6ED6, 0x6ED8, 0x6ED9, 0x6EDB, 0x6EDC, 0x6EDD, 0x6EE3, 
+  0x6EE7, 0x6EEA, 0x6EEB, 0x6EEC, 0x6EED, 0x6EEE, 0x6EEF,      0, 
+plane 9d
+at 0x40
+  0x6EF0, 0x6EF1, 0x6EF2, 0x6EF3, 0x6EF5, 0x6EF6, 0x6EF7, 0x6EF8, 
+  0x6EFA, 0x6EFB, 0x6EFC, 0x6EFD, 0x6EFE, 0x6EFF, 0x6F00, 0x6F01, 
+  0x6F03, 0x6F04, 0x6F05, 0x6F07, 0x6F08, 0x6F0A, 0x6F0B, 0x6F0C, 
+  0x6F0D, 0x6F0E, 0x6F10, 0x6F11, 0x6F12, 0x6F16, 0x6F17, 0x6F18, 
+  0x6F19, 0x6F1A, 0x6F1B, 0x6F1C, 0x6F1D, 0x6F1E, 0x6F1F, 0x6F21, 
+  0x6F22, 0x6F23, 0x6F25, 0x6F26, 0x6F27, 0x6F28, 0x6F2C, 0x6F2E, 
+  0x6F30, 0x6F32, 0x6F34, 0x6F35, 0x6F37, 0x6F38, 0x6F39, 0x6F3A, 
+  0x6F3B, 0x6F3C, 0x6F3D, 0x6F3F, 0x6F40, 0x6F41, 0x6F42,      0, 
+  0x6F43, 0x6F44, 0x6F45, 0x6F48, 0x6F49, 0x6F4A, 0x6F4C, 0x6F4E, 
+  0x6F4F, 0x6F50, 0x6F51, 0x6F52, 0x6F53, 0x6F54, 0x6F55, 0x6F56, 
+  0x6F57, 0x6F59, 0x6F5A, 0x6F5B, 0x6F5D, 0x6F5F, 0x6F60, 0x6F61, 
+  0x6F63, 0x6F64, 0x6F65, 0x6F67, 0x6F68, 0x6F69, 0x6F6A, 0x6F6B, 
+  0x6F6C, 0x6F6F, 0x6F70, 0x6F71, 0x6F73, 0x6F75, 0x6F76, 0x6F77, 
+  0x6F79, 0x6F7B, 0x6F7D, 0x6F7E, 0x6F7F, 0x6F80, 0x6F81, 0x6F82, 
+  0x6F83, 0x6F85, 0x6F86, 0x6F87, 0x6F8A, 0x6F8B, 0x6F8F, 0x6F90, 
+  0x6F91, 0x6F92, 0x6F93, 0x6F94, 0x6F95, 0x6F96, 0x6F97, 0x6F98, 
+  0x6F99, 0x6F9A, 0x6F9B, 0x6F9D, 0x6F9E, 0x6F9F, 0x6FA0, 0x6FA2, 
+  0x6FA3, 0x6FA4, 0x6FA5, 0x6FA6, 0x6FA8, 0x6FA9, 0x6FAA, 0x6FAB, 
+  0x6FAC, 0x6FAD, 0x6FAE, 0x6FAF, 0x6FB0, 0x6FB1, 0x6FB2, 0x6FB4, 
+  0x6FB5, 0x6FB7, 0x6FB8, 0x6FBA, 0x6FBB, 0x6FBC, 0x6FBD, 0x6FBE, 
+  0x6FBF, 0x6FC1, 0x6FC3, 0x6FC4, 0x6FC5, 0x6FC6, 0x6FC7, 0x6FC8, 
+  0x6FCA, 0x6FCB, 0x6FCC, 0x6FCD, 0x6FCE, 0x6FCF, 0x6FD0, 0x6FD3, 
+  0x6FD4, 0x6FD5, 0x6FD6, 0x6FD7, 0x6FD8, 0x6FD9, 0x6FDA, 0x6FDB, 
+  0x6FDC, 0x6FDD, 0x6FDF, 0x6FE2, 0x6FE3, 0x6FE4, 0x6FE5,      0, 
+plane 9e
+at 0x40
+  0x6FE6, 0x6FE7, 0x6FE8, 0x6FE9, 0x6FEA, 0x6FEB, 0x6FEC, 0x6FED, 
+  0x6FF0, 0x6FF1, 0x6FF2, 0x6FF3, 0x6FF4, 0x6FF5, 0x6FF6, 0x6FF7, 
+  0x6FF8, 0x6FF9, 0x6FFA, 0x6FFB, 0x6FFC, 0x6FFD, 0x6FFE, 0x6FFF, 
+  0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007, 
+  0x7008, 0x7009, 0x700A, 0x700B, 0x700C, 0x700D, 0x700E, 0x700F, 
+  0x7010, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018, 
+  0x7019, 0x701C, 0x701D, 0x701E, 0x701F, 0x7020, 0x7021, 0x7022, 
+  0x7024, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029, 0x702A,      0, 
+  0x702B, 0x702C, 0x702D, 0x702E, 0x702F, 0x7030, 0x7031, 0x7032, 
+  0x7033, 0x7034, 0x7036, 0x7037, 0x7038, 0x703A, 0x703B, 0x703C, 
+  0x703D, 0x703E, 0x703F, 0x7040, 0x7041, 0x7042, 0x7043, 0x7044, 
+  0x7045, 0x7046, 0x7047, 0x7048, 0x7049, 0x704A, 0x704B, 0x704D, 
+  0x704E, 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 
+  0x7057, 0x7058, 0x7059, 0x705A, 0x705B, 0x705C, 0x705D, 0x705F, 
+  0x7060, 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067, 
+  0x7068, 0x7069, 0x706A, 0x706E, 0x7071, 0x7072, 0x7073, 0x7074, 
+  0x7077, 0x7079, 0x707A, 0x707B, 0x707D, 0x7081, 0x7082, 0x7083, 
+  0x7084, 0x7086, 0x7087, 0x7088, 0x708B, 0x708C, 0x708D, 0x708F, 
+  0x7090, 0x7091, 0x7093, 0x7097, 0x7098, 0x709A, 0x709B, 0x709E, 
+  0x709F, 0x70A0, 0x70A1, 0x70A2, 0x70A3, 0x70A4, 0x70A5, 0x70A6, 
+  0x70A7, 0x70A8, 0x70A9, 0x70AA, 0x70B0, 0x70B2, 0x70B4, 0x70B5, 
+  0x70B6, 0x70BA, 0x70BE, 0x70BF, 0x70C4, 0x70C5, 0x70C6, 0x70C7, 
+  0x70C9, 0x70CB, 0x70CC, 0x70CD, 0x70CE, 0x70CF, 0x70D0, 0x70D1, 
+  0x70D2, 0x70D3, 0x70D4, 0x70D5, 0x70D6, 0x70D7, 0x70DA,      0, 
+plane 9f
+at 0x40
+  0x70DC, 0x70DD, 0x70DE, 0x70E0, 0x70E1, 0x70E2, 0x70E3, 0x70E5, 
+  0x70EA, 0x70EE, 0x70F0, 0x70F1, 0x70F2, 0x70F3, 0x70F4, 0x70F5, 
+  0x70F6, 0x70F8, 0x70FA, 0x70FB, 0x70FC, 0x70FE, 0x70FF, 0x7100, 
+  0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108, 
+  0x710B, 0x710C, 0x710D, 0x710E, 0x710F, 0x7111, 0x7112, 0x7114, 
+  0x7117, 0x711B, 0x711C, 0x711D, 0x711E, 0x711F, 0x7120, 0x7121, 
+  0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, 0x7129, 0x712A, 
+  0x712B, 0x712C, 0x712D, 0x712E, 0x7132, 0x7133, 0x7134,      0, 
+  0x7135, 0x7137, 0x7138, 0x7139, 0x713A, 0x713B, 0x713C, 0x713D, 
+  0x713E, 0x713F, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146, 
+  0x7147, 0x7148, 0x7149, 0x714B, 0x714D, 0x714F, 0x7150, 0x7151, 
+  0x7152, 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159, 
+  0x715A, 0x715B, 0x715D, 0x715F, 0x7160, 0x7161, 0x7162, 0x7163, 
+  0x7165, 0x7169, 0x716A, 0x716B, 0x716C, 0x716D, 0x716F, 0x7170, 
+  0x7171, 0x7174, 0x7175, 0x7176, 0x7177, 0x7179, 0x717B, 0x717C, 
+  0x717E, 0x717F, 0x7180, 0x7181, 0x7182, 0x7183, 0x7185, 0x7186, 
+  0x7187, 0x7188, 0x7189, 0x718B, 0x718C, 0x718D, 0x718E, 0x7190, 
+  0x7191, 0x7192, 0x7193, 0x7195, 0x7196, 0x7197, 0x719A, 0x719B, 
+  0x719C, 0x719D, 0x719E, 0x71A1, 0x71A2, 0x71A3, 0x71A4, 0x71A5, 
+  0x71A6, 0x71A7, 0x71A9, 0x71AA, 0x71AB, 0x71AD, 0x71AE, 0x71AF, 
+  0x71B0, 0x71B1, 0x71B2, 0x71B4, 0x71B6, 0x71B7, 0x71B8, 0x71BA, 
+  0x71BB, 0x71BC, 0x71BD, 0x71BE, 0x71BF, 0x71C0, 0x71C1, 0x71C2, 
+  0x71C4, 0x71C5, 0x71C6, 0x71C7, 0x71C8, 0x71C9, 0x71CA, 0x71CB, 
+  0x71CC, 0x71CD, 0x71CF, 0x71D0, 0x71D1, 0x71D2, 0x71D3,      0, 
+plane a0
+at 0x40
+  0x71D6, 0x71D7, 0x71D8, 0x71D9, 0x71DA, 0x71DB, 0x71DC, 0x71DD, 
+  0x71DE, 0x71DF, 0x71E1, 0x71E2, 0x71E3, 0x71E4, 0x71E6, 0x71E8, 
+  0x71E9, 0x71EA, 0x71EB, 0x71EC, 0x71ED, 0x71EF, 0x71F0, 0x71F1, 
+  0x71F2, 0x71F3, 0x71F4, 0x71F5, 0x71F6, 0x71F7, 0x71F8, 0x71FA, 
+  0x71FB, 0x71FC, 0x71FD, 0x71FE, 0x71FF, 0x7200, 0x7201, 0x7202, 
+  0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, 0x720A, 0x720B, 
+  0x720C, 0x720D, 0x720E, 0x720F, 0x7210, 0x7211, 0x7212, 0x7213, 
+  0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721A,      0, 
+  0x721B, 0x721C, 0x721E, 0x721F, 0x7220, 0x7221, 0x7222, 0x7223, 
+  0x7224, 0x7225, 0x7226, 0x7227, 0x7229, 0x722B, 0x722D, 0x722E, 
+  0x722F, 0x7232, 0x7233, 0x7234, 0x723A, 0x723C, 0x723E, 0x7240, 
+  0x7241, 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724A, 
+  0x724B, 0x724E, 0x724F, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, 
+  0x7257, 0x7258, 0x725A, 0x725C, 0x725E, 0x7260, 0x7263, 0x7264, 
+  0x7265, 0x7268, 0x726A, 0x726B, 0x726C, 0x726D, 0x7270, 0x7271, 
+  0x7273, 0x7274, 0x7276, 0x7277, 0x7278, 0x727B, 0x727C, 0x727D, 
+  0x7282, 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728C, 
+  0x728E, 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297, 
+  0x7298, 0x7299, 0x729A, 0x729B, 0x729C, 0x729D, 0x729E, 0x72A0, 
+  0x72A1, 0x72A2, 0x72A3, 0x72A4, 0x72A5, 0x72A6, 0x72A7, 0x72A8, 
+  0x72A9, 0x72AA, 0x72AB, 0x72AE, 0x72B1, 0x72B2, 0x72B3, 0x72B5, 
+  0x72BA, 0x72BB, 0x72BC, 0x72BD, 0x72BE, 0x72BF, 0x72C0, 0x72C5, 
+  0x72C6, 0x72C7, 0x72C9, 0x72CA, 0x72CB, 0x72CC, 0x72CF, 0x72D1, 
+  0x72D3, 0x72D4, 0x72D5, 0x72D6, 0x72D8, 0x72DA, 0x72DB,      0, 
+plane a1
+at 0x40
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0, 0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, 
+  0x3003, 0x3005, 0x2015, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019, 
+  0x201C, 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 
+  0x300C, 0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, 0x3011, 
+  0x00B1, 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, 
+  0x222A, 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 
+  0x2312, 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 
+  0x221D, 0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 
+  0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 
+  0x00A4, 0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, 
+  0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 
+  0x25B2, 0x203B, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,      0, 
+plane a2
+at 0x40
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 
+  0x2177, 0x2178, 0x2179,      0,      0,      0,      0,      0, 
+       0, 0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 
+  0x248F, 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 
+  0x2497, 0x2498, 0x2499, 0x249A, 0x249B, 0x2474, 0x2475, 0x2476, 
+  0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 
+  0x247F, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 
+  0x2487, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 
+  0x2467, 0x2468, 0x2469,      0,      0, 0x3220, 0x3221, 0x3222, 
+  0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229,      0, 
+       0, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 
+  0x2167, 0x2168, 0x2169, 0x216A, 0x216B,      0,      0,      0, 
+plane a3
+at 0x40
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0, 0xFF01, 0xFF02, 0xFF03, 0xFFE5, 0xFF05, 0xFF06, 0xFF07, 
+  0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, 
+  0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 
+  0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, 
+  0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 
+  0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 
+  0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 
+  0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E, 0xFF3F, 
+  0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 
+  0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 
+  0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 
+  0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3,      0, 
+plane a4
+at 0x40
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 
+  0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 
+  0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 
+  0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 
+  0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 
+  0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 
+  0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 
+  0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 
+  0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 
+  0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 
+  0x3090, 0x3091, 0x3092, 0x3093,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane a5
+at 0x40
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0, 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 
+  0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 
+  0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 
+  0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 
+  0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 
+  0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 
+  0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 
+  0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 
+  0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 
+  0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 
+  0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane a6
+at 0x40
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 
+  0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 
+  0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 
+  0x03A9,      0,      0,      0,      0,      0,      0,      0, 
+       0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 
+  0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 
+  0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 
+  0x03C9,      0,      0,      0,      0,      0,      0,      0, 
+  0xFE35, 0xFE36, 0xFE39, 0xFE3A, 0xFE3F, 0xFE40, 0xFE3D, 0xFE3E, 
+  0xFE41, 0xFE42, 0xFE43, 0xFE44,      0,      0, 0xFE3B, 0xFE3C, 
+  0xFE37, 0xFE38, 0xFE31,      0, 0xFE33, 0xFE34,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane a7
+at 0x40
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 
+  0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 
+  0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 
+  0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 
+  0x042E, 0x042F,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 
+  0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 
+  0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 
+  0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 
+  0x044E, 0x044F,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane a8
+at 0x40
+  0x02CA, 0x02CB, 0x02D9, 0x2013, 0x2014, 0x2025, 0x2035, 0x2105, 
+  0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215, 0x221F, 0x2223, 
+  0x2252, 0x2266, 0x2267, 0x22BF, 0x2550, 0x2551, 0x2552, 0x2553, 
+  0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 
+  0x255C, 0x255D, 0x255E, 0x255F, 0x2560, 0x2561, 0x2562, 0x2563, 
+  0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 
+  0x256C, 0x256D, 0x256E, 0x256F, 0x2570, 0x2571, 0x2572, 0x2573, 
+  0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587,      0, 
+  0x2588, 0x2589, 0x258A, 0x258B, 0x258C, 0x258D, 0x258E, 0x258F, 
+  0x2593, 0x2594, 0x2595, 0x25BC, 0x25BD, 0x25E2, 0x25E3, 0x25E4, 
+  0x25E5, 0x2609, 0x2295, 0x3012, 0x301D, 0x301E,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, 
+  0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 
+  0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 
+  0x01DC, 0x00FC, 0x00EA, 0x0251, 0xE7C7, 0x0144, 0x0148, 0xE7C8, 
+  0x0261,      0,      0,      0,      0, 0x3105, 0x3106, 0x3107, 
+  0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F, 
+  0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 
+  0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F, 
+  0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 
+  0x3128, 0x3129,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane a9
+at 0x40
+  0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 
+  0x3029, 0x32A3, 0x338E, 0x338F, 0x339C, 0x339D, 0x339E, 0x33A1, 
+  0x33C4, 0x33CE, 0x33D1, 0x33D2, 0x33D5, 0xFE30, 0xFFE2, 0xFFE4, 
+       0, 0x2121, 0x3231,      0, 0x2010,      0,      0,      0, 
+  0x30FC, 0x309B, 0x309C, 0x30FD, 0x30FE, 0x3006, 0x309D, 0x309E, 
+  0xFE49, 0xFE4A, 0xFE4B, 0xFE4C, 0xFE4D, 0xFE4E, 0xFE4F, 0xFE50, 
+  0xFE51, 0xFE52, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFE59, 0xFE5A, 
+  0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0xFE5F, 0xFE60, 0xFE61,      0, 
+  0xFE62, 0xFE63, 0xFE64, 0xFE65, 0xFE66, 0xFE68, 0xFE69, 0xFE6A, 
+  0xFE6B, 0xE7E7, 0xE7E8, 0xE7E9, 0xE7EA, 0xE7EB, 0xE7EC, 0xE7ED, 
+  0xE7EE, 0xE7EF, 0xE7F0, 0xE7F1, 0xE7F2, 0xE7F3, 0x3007,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0, 0x2500, 0x2501, 0x2502, 0x2503, 
+  0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, 
+  0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513, 
+  0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B, 
+  0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, 
+  0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 
+  0x252C, 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 
+  0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 
+  0x253C, 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 
+  0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane aa
+at 0x40
+  0x72DC, 0x72DD, 0x72DF, 0x72E2, 0x72E3, 0x72E4, 0x72E5, 0x72E6, 
+  0x72E7, 0x72EA, 0x72EB, 0x72F5, 0x72F6, 0x72F9, 0x72FD, 0x72FE, 
+  0x72FF, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308, 
+  0x7309, 0x730B, 0x730C, 0x730D, 0x730F, 0x7310, 0x7311, 0x7312, 
+  0x7314, 0x7318, 0x7319, 0x731A, 0x731F, 0x7320, 0x7323, 0x7324, 
+  0x7326, 0x7327, 0x7328, 0x732D, 0x732F, 0x7330, 0x7332, 0x7333, 
+  0x7335, 0x7336, 0x733A, 0x733B, 0x733C, 0x733D, 0x7340, 0x7341, 
+  0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, 0x7348,      0, 
+  0x7349, 0x734A, 0x734B, 0x734C, 0x734E, 0x734F, 0x7351, 0x7353, 
+  0x7354, 0x7355, 0x7356, 0x7358, 0x7359, 0x735A, 0x735B, 0x735C, 
+  0x735D, 0x735E, 0x735F, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 
+  0x7366, 0x7367, 0x7368, 0x7369, 0x736A, 0x736B, 0x736E, 0x7370, 
+  0x7371,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane ab
+at 0x40
+  0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379, 
+  0x737A, 0x737B, 0x737C, 0x737D, 0x737F, 0x7380, 0x7381, 0x7382, 
+  0x7383, 0x7385, 0x7386, 0x7388, 0x738A, 0x738C, 0x738D, 0x738F, 
+  0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399, 
+  0x739A, 0x739C, 0x739D, 0x739E, 0x73A0, 0x73A1, 0x73A3, 0x73A4, 
+  0x73A5, 0x73A6, 0x73A7, 0x73A8, 0x73AA, 0x73AC, 0x73AD, 0x73B1, 
+  0x73B4, 0x73B5, 0x73B6, 0x73B8, 0x73B9, 0x73BC, 0x73BD, 0x73BE, 
+  0x73BF, 0x73C1, 0x73C3, 0x73C4, 0x73C5, 0x73C6, 0x73C7,      0, 
+  0x73CB, 0x73CC, 0x73CE, 0x73D2, 0x73D3, 0x73D4, 0x73D5, 0x73D6, 
+  0x73D7, 0x73D8, 0x73DA, 0x73DB, 0x73DC, 0x73DD, 0x73DF, 0x73E1, 
+  0x73E2, 0x73E3, 0x73E4, 0x73E6, 0x73E8, 0x73EA, 0x73EB, 0x73EC, 
+  0x73EE, 0x73EF, 0x73F0, 0x73F1, 0x73F3, 0x73F4, 0x73F5, 0x73F6, 
+  0x73F7,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane ac
+at 0x40
+  0x73F8, 0x73F9, 0x73FA, 0x73FB, 0x73FC, 0x73FD, 0x73FE, 0x73FF, 
+  0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408, 0x740B, 0x740C, 
+  0x740D, 0x740E, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416, 
+  0x7417, 0x7418, 0x7419, 0x741C, 0x741D, 0x741E, 0x741F, 0x7420, 
+  0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742B, 0x742D, 0x742F, 
+  0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743A, 0x743B, 0x743D, 
+  0x743E, 0x743F, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446, 
+  0x7447, 0x7448, 0x7449, 0x744A, 0x744B, 0x744C, 0x744D,      0, 
+  0x744E, 0x744F, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7456, 
+  0x7458, 0x745D, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465, 
+  0x7466, 0x7467, 0x7468, 0x7469, 0x746A, 0x746B, 0x746C, 0x746E, 
+  0x746F, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, 
+  0x747A,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane ad
+at 0x40
+  0x747B, 0x747C, 0x747D, 0x747F, 0x7482, 0x7484, 0x7485, 0x7486, 
+  0x7488, 0x7489, 0x748A, 0x748C, 0x748D, 0x748F, 0x7491, 0x7492, 
+  0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749A, 
+  0x749B, 0x749D, 0x749F, 0x74A0, 0x74A1, 0x74A2, 0x74A3, 0x74A4, 
+  0x74A5, 0x74A6, 0x74AA, 0x74AB, 0x74AC, 0x74AD, 0x74AE, 0x74AF, 
+  0x74B0, 0x74B1, 0x74B2, 0x74B3, 0x74B4, 0x74B5, 0x74B6, 0x74B7, 
+  0x74B8, 0x74B9, 0x74BB, 0x74BC, 0x74BD, 0x74BE, 0x74BF, 0x74C0, 
+  0x74C1, 0x74C2, 0x74C3, 0x74C4, 0x74C5, 0x74C6, 0x74C7,      0, 
+  0x74C8, 0x74C9, 0x74CA, 0x74CB, 0x74CC, 0x74CD, 0x74CE, 0x74CF, 
+  0x74D0, 0x74D1, 0x74D3, 0x74D4, 0x74D5, 0x74D6, 0x74D7, 0x74D8, 
+  0x74D9, 0x74DA, 0x74DB, 0x74DD, 0x74DF, 0x74E1, 0x74E5, 0x74E7, 
+  0x74E8, 0x74E9, 0x74EA, 0x74EB, 0x74EC, 0x74ED, 0x74F0, 0x74F1, 
+  0x74F2,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane ae
+at 0x40
+  0x74F3, 0x74F5, 0x74F8, 0x74F9, 0x74FA, 0x74FB, 0x74FC, 0x74FD, 
+  0x74FE, 0x7500, 0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507, 
+  0x7508, 0x7509, 0x750A, 0x750B, 0x750C, 0x750E, 0x7510, 0x7512, 
+  0x7514, 0x7515, 0x7516, 0x7517, 0x751B, 0x751D, 0x751E, 0x7520, 
+  0x7521, 0x7522, 0x7523, 0x7524, 0x7526, 0x7527, 0x752A, 0x752E, 
+  0x7534, 0x7536, 0x7539, 0x753C, 0x753D, 0x753F, 0x7541, 0x7542, 
+  0x7543, 0x7544, 0x7546, 0x7547, 0x7549, 0x754A, 0x754D, 0x7550, 
+  0x7551, 0x7552, 0x7553, 0x7555, 0x7556, 0x7557, 0x7558,      0, 
+  0x755D, 0x755E, 0x755F, 0x7560, 0x7561, 0x7562, 0x7563, 0x7564, 
+  0x7567, 0x7568, 0x7569, 0x756B, 0x756C, 0x756D, 0x756E, 0x756F, 
+  0x7570, 0x7571, 0x7573, 0x7575, 0x7576, 0x7577, 0x757A, 0x757B, 
+  0x757C, 0x757D, 0x757E, 0x7580, 0x7581, 0x7582, 0x7584, 0x7585, 
+  0x7587,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane af
+at 0x40
+  0x7588, 0x7589, 0x758A, 0x758C, 0x758D, 0x758E, 0x7590, 0x7593, 
+  0x7595, 0x7598, 0x759B, 0x759C, 0x759E, 0x75A2, 0x75A6, 0x75A7, 
+  0x75A8, 0x75A9, 0x75AA, 0x75AD, 0x75B6, 0x75B7, 0x75BA, 0x75BB, 
+  0x75BF, 0x75C0, 0x75C1, 0x75C6, 0x75CB, 0x75CC, 0x75CE, 0x75CF, 
+  0x75D0, 0x75D1, 0x75D3, 0x75D7, 0x75D9, 0x75DA, 0x75DC, 0x75DD, 
+  0x75DF, 0x75E0, 0x75E1, 0x75E5, 0x75E9, 0x75EC, 0x75ED, 0x75EE, 
+  0x75EF, 0x75F2, 0x75F3, 0x75F5, 0x75F6, 0x75F7, 0x75F8, 0x75FA, 
+  0x75FB, 0x75FD, 0x75FE, 0x7602, 0x7604, 0x7606, 0x7607,      0, 
+  0x7608, 0x7609, 0x760B, 0x760D, 0x760E, 0x760F, 0x7611, 0x7612, 
+  0x7613, 0x7614, 0x7616, 0x761A, 0x761C, 0x761D, 0x761E, 0x7621, 
+  0x7623, 0x7627, 0x7628, 0x762C, 0x762E, 0x762F, 0x7631, 0x7632, 
+  0x7636, 0x7637, 0x7639, 0x763A, 0x763B, 0x763D, 0x7641, 0x7642, 
+  0x7644,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane b0
+at 0x40
+  0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764A, 0x764B, 0x764E, 
+  0x764F, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655, 0x7657, 0x7658, 
+  0x7659, 0x765A, 0x765B, 0x765D, 0x765F, 0x7660, 0x7661, 0x7662, 
+  0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0x766A, 0x766C, 
+  0x766D, 0x766E, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675, 
+  0x7676, 0x7677, 0x7679, 0x767A, 0x767C, 0x767F, 0x7680, 0x7681, 
+  0x7683, 0x7685, 0x7689, 0x768A, 0x768C, 0x768D, 0x768F, 0x7690, 
+  0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769A, 0x769B,      0, 
+  0x769C, 0x769D, 0x769E, 0x769F, 0x76A0, 0x76A1, 0x76A2, 0x76A3, 
+  0x76A5, 0x76A6, 0x76A7, 0x76A8, 0x76A9, 0x76AA, 0x76AB, 0x76AC, 
+  0x76AD, 0x76AF, 0x76B0, 0x76B3, 0x76B5, 0x76B6, 0x76B7, 0x76B8, 
+  0x76B9, 0x76BA, 0x76BB, 0x76BC, 0x76BD, 0x76BE, 0x76C0, 0x76C1, 
+  0x76C3, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509, 0x54C0, 
+  0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, 0x9698, 
+  0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, 0x80FA, 
+  0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, 0x7FF1, 
+  0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, 0x6252, 
+  0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, 0x8DCB, 
+  0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238, 0x767D, 
+  0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17, 0x6591, 
+  0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248, 0x626E, 
+  0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6, 0x5E2E, 
+  0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, 0x9551, 
+  0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265,      0, 
+plane b1
+at 0x40
+  0x76C4, 0x76C7, 0x76C9, 0x76CB, 0x76CC, 0x76D3, 0x76D5, 0x76D9, 
+  0x76DA, 0x76DC, 0x76DD, 0x76DE, 0x76E0, 0x76E1, 0x76E2, 0x76E3, 
+  0x76E4, 0x76E6, 0x76E7, 0x76E8, 0x76E9, 0x76EA, 0x76EB, 0x76EC, 
+  0x76ED, 0x76F0, 0x76F3, 0x76F5, 0x76F6, 0x76F7, 0x76FA, 0x76FB, 
+  0x76FD, 0x76FF, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770A, 
+  0x770C, 0x770E, 0x770F, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714, 
+  0x7715, 0x7716, 0x7717, 0x7718, 0x771B, 0x771C, 0x771D, 0x771E, 
+  0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772A, 0x772B,      0, 
+  0x772C, 0x772E, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, 
+  0x773B, 0x773D, 0x773E, 0x773F, 0x7742, 0x7744, 0x7745, 0x7746, 
+  0x7748, 0x7749, 0x774A, 0x774B, 0x774C, 0x774D, 0x774E, 0x774F, 
+  0x7752, 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759, 
+  0x775C, 0x8584, 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1, 
+  0x62A5, 0x66B4, 0x8C79, 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2, 
+  0x5351, 0x5317, 0x8F88, 0x80CC, 0x8D1D, 0x94A1, 0x500D, 0x72C8, 
+  0x5907, 0x60EB, 0x7119, 0x88AB, 0x5954, 0x82EF, 0x672C, 0x7B28, 
+  0x5D29, 0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, 0x903C, 0x9F3B, 
+  0x6BD4, 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, 0x6BD5, 
+  0x6BD9, 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A, 
+  0x5FC5, 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9, 
+  0x7F16, 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9, 
+  0x8FAB, 0x904D, 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B, 
+  0x522B, 0x762A, 0x5F6C, 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, 
+  0x5175, 0x51B0, 0x67C4, 0x4E19, 0x79C9, 0x997C, 0x70B3,      0, 
+plane b2
+at 0x40
+  0x775D, 0x775E, 0x775F, 0x7760, 0x7764, 0x7767, 0x7769, 0x776A, 
+  0x776D, 0x776E, 0x776F, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774, 
+  0x7775, 0x7776, 0x7777, 0x7778, 0x777A, 0x777B, 0x777C, 0x7781, 
+  0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778A, 0x778B, 
+  0x778F, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798, 
+  0x7799, 0x779A, 0x779B, 0x779C, 0x779D, 0x779E, 0x77A1, 0x77A3, 
+  0x77A4, 0x77A6, 0x77A8, 0x77AB, 0x77AD, 0x77AE, 0x77AF, 0x77B1, 
+  0x77B2, 0x77B4, 0x77B6, 0x77B7, 0x77B8, 0x77B9, 0x77BA,      0, 
+  0x77BC, 0x77BE, 0x77C0, 0x77C1, 0x77C2, 0x77C3, 0x77C4, 0x77C5, 
+  0x77C6, 0x77C7, 0x77C8, 0x77C9, 0x77CA, 0x77CB, 0x77CC, 0x77CE, 
+  0x77CF, 0x77D0, 0x77D1, 0x77D2, 0x77D3, 0x77D4, 0x77D5, 0x77D6, 
+  0x77D8, 0x77D9, 0x77DA, 0x77DD, 0x77DE, 0x77DF, 0x77E0, 0x77E1, 
+  0x77E4, 0x75C5, 0x5E76, 0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5, 
+  0x6CE2, 0x535A, 0x52C3, 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, 
+  0x8236, 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 
+  0x54FA, 0x8865, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 
+  0x6016, 0x64E6, 0x731C, 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, 
+  0x8E29, 0x91C7, 0x5F69, 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, 
+  0x6B8B, 0x60ED, 0x60E8, 0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7, 
+  0x85CF, 0x64CD, 0x7CD9, 0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56, 
+  0x4FA7, 0x518C, 0x6D4B, 0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C, 
+  0x8336, 0x67E5, 0x78B4, 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7, 
+  0x62C6, 0x67F4, 0x8C7A, 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, 
+  0x7F20, 0x94F2, 0x4EA7, 0x9610, 0x98A4, 0x660C, 0x7316,      0, 
+plane b3
+at 0x40
+  0x77E6, 0x77E8, 0x77EA, 0x77EF, 0x77F0, 0x77F1, 0x77F2, 0x77F4, 
+  0x77F5, 0x77F7, 0x77F9, 0x77FA, 0x77FB, 0x77FC, 0x7803, 0x7804, 
+  0x7805, 0x7806, 0x7807, 0x7808, 0x780A, 0x780B, 0x780E, 0x780F, 
+  0x7810, 0x7813, 0x7815, 0x7819, 0x781B, 0x781E, 0x7820, 0x7821, 
+  0x7822, 0x7824, 0x7828, 0x782A, 0x782B, 0x782E, 0x782F, 0x7831, 
+  0x7832, 0x7833, 0x7835, 0x7836, 0x783D, 0x783F, 0x7841, 0x7842, 
+  0x7843, 0x7844, 0x7846, 0x7848, 0x7849, 0x784A, 0x784B, 0x784D, 
+  0x784F, 0x7851, 0x7853, 0x7854, 0x7858, 0x7859, 0x785A,      0, 
+  0x785B, 0x785C, 0x785E, 0x785F, 0x7860, 0x7861, 0x7862, 0x7863, 
+  0x7864, 0x7865, 0x7866, 0x7867, 0x7868, 0x7869, 0x786F, 0x7870, 
+  0x7871, 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7878, 0x7879, 
+  0x787A, 0x787B, 0x787D, 0x787E, 0x787F, 0x7880, 0x7881, 0x7882, 
+  0x7883, 0x573A, 0x5C1D, 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382, 
+  0x655E, 0x7545, 0x5531, 0x5021, 0x8D85, 0x6284, 0x949E, 0x671D, 
+  0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092, 0x8F66, 0x626F, 0x64A4, 
+  0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, 0x8FB0, 0x5C18, 0x6668, 
+  0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, 0x6491, 0x79F0, 0x57CE, 
+  0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, 0x60E9, 0x6F84, 0x8BDA, 
+  0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319, 
+  0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A, 
+  0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07, 
+  0x5BA0, 0x62BD, 0x916C, 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79, 
+  0x4EC7, 0x7EF8, 0x7785, 0x4E11, 0x81ED, 0x521D, 0x51FA, 0x6A71, 
+  0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1, 0x9664, 0x695A,      0, 
+plane b4
+at 0x40
+  0x7884, 0x7885, 0x7886, 0x7888, 0x788A, 0x788B, 0x788F, 0x7890, 
+  0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789D, 0x789E, 0x78A0, 
+  0x78A2, 0x78A4, 0x78A6, 0x78A8, 0x78A9, 0x78AA, 0x78AB, 0x78AC, 
+  0x78AD, 0x78AE, 0x78AF, 0x78B5, 0x78B6, 0x78B7, 0x78B8, 0x78BA, 
+  0x78BB, 0x78BC, 0x78BD, 0x78BF, 0x78C0, 0x78C2, 0x78C3, 0x78C4, 
+  0x78C6, 0x78C7, 0x78C8, 0x78CC, 0x78CD, 0x78CE, 0x78CF, 0x78D1, 
+  0x78D2, 0x78D3, 0x78D6, 0x78D7, 0x78D8, 0x78DA, 0x78DB, 0x78DC, 
+  0x78DD, 0x78DE, 0x78DF, 0x78E0, 0x78E1, 0x78E2, 0x78E3,      0, 
+  0x78E4, 0x78E5, 0x78E6, 0x78E7, 0x78E9, 0x78EA, 0x78EB, 0x78ED, 
+  0x78EE, 0x78EF, 0x78F0, 0x78F1, 0x78F3, 0x78F5, 0x78F6, 0x78F8, 
+  0x78F9, 0x78FB, 0x78FC, 0x78FD, 0x78FE, 0x78FF, 0x7900, 0x7902, 
+  0x7903, 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790A, 0x790B, 
+  0x790C, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904, 0x63E3, 
+  0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32, 0x75AE, 
+  0x7A97, 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A, 0x6376, 
+  0x9524, 0x5782, 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3, 0x7EAF, 
+  0x8822, 0x6233, 0x7EF0, 0x75B5, 0x8328, 0x78C1, 0x96CC, 0x8F9E, 
+  0x6148, 0x74F7, 0x8BCD, 0x6B64, 0x523A, 0x8D50, 0x6B21, 0x806A, 
+  0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, 0x51D1, 0x7C97, 0x918B, 
+  0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, 0x5D14, 0x50AC, 
+  0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58, 0x5BF8, 
+  0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D, 0x8FBE, 
+  0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3, 0x6234, 
+  0x5E26, 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E,      0, 
+plane b5
+at 0x40
+  0x790D, 0x790E, 0x790F, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915, 
+  0x7916, 0x7917, 0x7918, 0x7919, 0x791A, 0x791B, 0x791C, 0x791D, 
+  0x791F, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927, 
+  0x7928, 0x7929, 0x792A, 0x792B, 0x792C, 0x792D, 0x792E, 0x792F, 
+  0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938, 
+  0x7939, 0x793D, 0x793F, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947, 
+  0x794A, 0x794B, 0x794C, 0x794D, 0x794E, 0x794F, 0x7950, 0x7951, 
+  0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963,      0, 
+  0x7964, 0x7966, 0x7969, 0x796A, 0x796B, 0x796C, 0x796E, 0x7970, 
+  0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797B, 
+  0x797C, 0x797D, 0x797E, 0x797F, 0x7982, 0x7983, 0x7986, 0x7987, 
+  0x7988, 0x7989, 0x798B, 0x798C, 0x798D, 0x798E, 0x7990, 0x7991, 
+  0x7992, 0x6020, 0x803D, 0x62C5, 0x4E39, 0x5355, 0x90F8, 0x63B8, 
+  0x80C6, 0x65E6, 0x6C2E, 0x4F46, 0x60EE, 0x6DE1, 0x8BDE, 0x5F39, 
+  0x86CB, 0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, 0x5200, 0x6363, 
+  0x8E48, 0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, 0x60BC, 
+  0x9053, 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B, 
+  0x7B49, 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, 
+  0x654C, 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, 
+  0x5730, 0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0, 
+  0x6382, 0x6EC7, 0x7898, 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535, 
+  0x4F43, 0x7538, 0x5E97, 0x60E6, 0x5960, 0x6DC0, 0x6BBF, 0x7889, 
+  0x53FC, 0x96D5, 0x51CB, 0x5201, 0x6389, 0x540A, 0x9493, 0x8C03, 
+  0x8DCC, 0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, 0x53E0,      0, 
+plane b6
+at 0x40
+  0x7993, 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799B, 
+  0x799C, 0x799D, 0x799E, 0x799F, 0x79A0, 0x79A1, 0x79A2, 0x79A3, 
+  0x79A4, 0x79A5, 0x79A6, 0x79A8, 0x79A9, 0x79AA, 0x79AB, 0x79AC, 
+  0x79AD, 0x79AE, 0x79AF, 0x79B0, 0x79B1, 0x79B2, 0x79B4, 0x79B5, 
+  0x79B6, 0x79B7, 0x79B8, 0x79BC, 0x79BF, 0x79C2, 0x79C4, 0x79C5, 
+  0x79C7, 0x79C8, 0x79CA, 0x79CC, 0x79CE, 0x79CF, 0x79D0, 0x79D3, 
+  0x79D4, 0x79D6, 0x79D7, 0x79D9, 0x79DA, 0x79DB, 0x79DC, 0x79DD, 
+  0x79DE, 0x79E0, 0x79E1, 0x79E2, 0x79E5, 0x79E8, 0x79EA,      0, 
+  0x79EC, 0x79EE, 0x79F1, 0x79F2, 0x79F3, 0x79F4, 0x79F5, 0x79F6, 
+  0x79F7, 0x79F9, 0x79FA, 0x79FC, 0x79FE, 0x79FF, 0x7A01, 0x7A04, 
+  0x7A05, 0x7A07, 0x7A08, 0x7A09, 0x7A0A, 0x7A0C, 0x7A0F, 0x7A10, 
+  0x7A11, 0x7A12, 0x7A13, 0x7A15, 0x7A16, 0x7A18, 0x7A19, 0x7A1B, 
+  0x7A1C, 0x4E01, 0x76EF, 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 
+  0x5B9A, 0x8BA2, 0x4E22, 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 
+  0x680B, 0x4F97, 0x606B, 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 
+  0x9661, 0x8C46, 0x9017, 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, 
+  0x72EC, 0x8BFB, 0x5835, 0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A, 
+  0x5EA6, 0x6E21, 0x5992, 0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD, 
+  0x7F0E, 0x5806, 0x5151, 0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72, 
+  0x6566, 0x987F, 0x56E4, 0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6, 
+  0x591A, 0x593A, 0x579B, 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, 
+  0x60F0, 0x5815, 0x86FE, 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 
+  0x5A25, 0x6076, 0x5384, 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 
+  0x800C, 0x513F, 0x8033, 0x5C14, 0x9975, 0x6D31, 0x4E8C,      0, 
+plane b7
+at 0x40
+  0x7A1D, 0x7A1F, 0x7A21, 0x7A22, 0x7A24, 0x7A25, 0x7A26, 0x7A27, 
+  0x7A28, 0x7A29, 0x7A2A, 0x7A2B, 0x7A2C, 0x7A2D, 0x7A2E, 0x7A2F, 
+  0x7A30, 0x7A31, 0x7A32, 0x7A34, 0x7A35, 0x7A36, 0x7A38, 0x7A3A, 
+  0x7A3E, 0x7A40, 0x7A41, 0x7A42, 0x7A43, 0x7A44, 0x7A45, 0x7A47, 
+  0x7A48, 0x7A49, 0x7A4A, 0x7A4B, 0x7A4C, 0x7A4D, 0x7A4E, 0x7A4F, 
+  0x7A50, 0x7A52, 0x7A53, 0x7A54, 0x7A55, 0x7A56, 0x7A58, 0x7A59, 
+  0x7A5A, 0x7A5B, 0x7A5C, 0x7A5D, 0x7A5E, 0x7A5F, 0x7A60, 0x7A61, 
+  0x7A62, 0x7A63, 0x7A64, 0x7A65, 0x7A66, 0x7A67, 0x7A68,      0, 
+  0x7A69, 0x7A6A, 0x7A6B, 0x7A6C, 0x7A6D, 0x7A6E, 0x7A6F, 0x7A71, 
+  0x7A72, 0x7A73, 0x7A75, 0x7A7B, 0x7A7C, 0x7A7D, 0x7A7E, 0x7A82, 
+  0x7A85, 0x7A87, 0x7A89, 0x7A8A, 0x7A8B, 0x7A8C, 0x7A8E, 0x7A8F, 
+  0x7A90, 0x7A93, 0x7A94, 0x7A99, 0x7A9A, 0x7A9B, 0x7A9E, 0x7AA1, 
+  0x7AA2, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F, 0x4F10, 0x4E4F, 0x9600, 
+  0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A, 0x7FFB, 0x6A0A, 0x77FE, 
+  0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD, 0x8FD4, 0x8303, 0x8D29, 
+  0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3, 0x65B9, 0x80AA, 0x623F, 
+  0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA, 0x653E, 0x83F2, 0x975E, 
+  0x5561, 0x98DE, 0x80A5, 0x532A, 0x8BFD, 0x5420, 0x80BA, 0x5E9F, 
+  0x6CB8, 0x8D39, 0x82AC, 0x915A, 0x5429, 0x6C1B, 0x5206, 0x7EB7, 
+  0x575F, 0x711A, 0x6C7E, 0x7C89, 0x594B, 0x4EFD, 0x5FFF, 0x6124, 
+  0x7CAA, 0x4E30, 0x5C01, 0x67AB, 0x8702, 0x5CF0, 0x950B, 0x98CE, 
+  0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D, 0x8BBD, 0x5949, 0x51E4, 
+  0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4, 0x5B75, 0x6276, 0x62C2, 
+  0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F, 0x4FD8, 0x670D,      0, 
+plane b8
+at 0x40
+  0x7AA3, 0x7AA4, 0x7AA7, 0x7AA9, 0x7AAA, 0x7AAB, 0x7AAE, 0x7AAF, 
+  0x7AB0, 0x7AB1, 0x7AB2, 0x7AB4, 0x7AB5, 0x7AB6, 0x7AB7, 0x7AB8, 
+  0x7AB9, 0x7ABA, 0x7ABB, 0x7ABC, 0x7ABD, 0x7ABE, 0x7AC0, 0x7AC1, 
+  0x7AC2, 0x7AC3, 0x7AC4, 0x7AC5, 0x7AC6, 0x7AC7, 0x7AC8, 0x7AC9, 
+  0x7ACA, 0x7ACC, 0x7ACD, 0x7ACE, 0x7ACF, 0x7AD0, 0x7AD1, 0x7AD2, 
+  0x7AD3, 0x7AD4, 0x7AD5, 0x7AD7, 0x7AD8, 0x7ADA, 0x7ADB, 0x7ADC, 
+  0x7ADD, 0x7AE1, 0x7AE2, 0x7AE4, 0x7AE7, 0x7AE8, 0x7AE9, 0x7AEA, 
+  0x7AEB, 0x7AEC, 0x7AEE, 0x7AF0, 0x7AF1, 0x7AF2, 0x7AF3,      0, 
+  0x7AF4, 0x7AF5, 0x7AF6, 0x7AF7, 0x7AF8, 0x7AFB, 0x7AFC, 0x7AFE, 
+  0x7B00, 0x7B01, 0x7B02, 0x7B05, 0x7B07, 0x7B09, 0x7B0C, 0x7B0D, 
+  0x7B0E, 0x7B10, 0x7B12, 0x7B13, 0x7B16, 0x7B17, 0x7B18, 0x7B1A, 
+  0x7B1C, 0x7B1D, 0x7B1F, 0x7B21, 0x7B22, 0x7B23, 0x7B27, 0x7B29, 
+  0x7B2D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B, 0x629A, 
+  0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C, 0x8150, 
+  0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, 0x5085, 0x4ED8, 0x961C, 
+  0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, 0x9644, 0x5987, 0x7F1A, 
+  0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, 0x6982, 0x9499, 0x76D6, 
+  0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF, 0x809D, 0x8D76, 
+  0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2, 0x7F38, 
+  0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B, 0x9AD8, 
+  0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A, 0x54E5, 
+  0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272, 0x9769, 
+  0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A, 0x5404, 
+  0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, 0x5E9A, 0x7FB9,      0, 
+plane b9
+at 0x40
+  0x7B2F, 0x7B30, 0x7B32, 0x7B34, 0x7B35, 0x7B36, 0x7B37, 0x7B39, 
+  0x7B3B, 0x7B3D, 0x7B3F, 0x7B40, 0x7B41, 0x7B42, 0x7B43, 0x7B44, 
+  0x7B46, 0x7B48, 0x7B4A, 0x7B4D, 0x7B4E, 0x7B53, 0x7B55, 0x7B57, 
+  0x7B59, 0x7B5C, 0x7B5E, 0x7B5F, 0x7B61, 0x7B63, 0x7B64, 0x7B65, 
+  0x7B66, 0x7B67, 0x7B68, 0x7B69, 0x7B6A, 0x7B6B, 0x7B6C, 0x7B6D, 
+  0x7B6F, 0x7B70, 0x7B73, 0x7B74, 0x7B76, 0x7B78, 0x7B7A, 0x7B7C, 
+  0x7B7D, 0x7B7F, 0x7B81, 0x7B82, 0x7B83, 0x7B84, 0x7B86, 0x7B87, 
+  0x7B88, 0x7B89, 0x7B8A, 0x7B8B, 0x7B8C, 0x7B8E, 0x7B8F,      0, 
+  0x7B91, 0x7B92, 0x7B93, 0x7B96, 0x7B98, 0x7B99, 0x7B9A, 0x7B9B, 
+  0x7B9E, 0x7B9F, 0x7BA0, 0x7BA3, 0x7BA4, 0x7BA5, 0x7BAE, 0x7BAF, 
+  0x7BB0, 0x7BB2, 0x7BB3, 0x7BB5, 0x7BB6, 0x7BB7, 0x7BB9, 0x7BBA, 
+  0x7BBB, 0x7BBC, 0x7BBD, 0x7BBE, 0x7BBF, 0x7BC0, 0x7BC2, 0x7BC3, 
+  0x7BC4, 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D, 
+  0x9F9A, 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E, 
+  0x62F1, 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, 
+  0x57A2, 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, 
+  0x4F30, 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, 
+  0x8C37, 0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, 
+  0x5250, 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, 
+  0x5173, 0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF, 
+  0x704C, 0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D, 
+  0x7845, 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678, 
+  0x6842, 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD, 
+  0x9505, 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8,      0, 
+plane ba
+at 0x40
+  0x7BC5, 0x7BC8, 0x7BC9, 0x7BCA, 0x7BCB, 0x7BCD, 0x7BCE, 0x7BCF, 
+  0x7BD0, 0x7BD2, 0x7BD4, 0x7BD5, 0x7BD6, 0x7BD7, 0x7BD8, 0x7BDB, 
+  0x7BDC, 0x7BDE, 0x7BDF, 0x7BE0, 0x7BE2, 0x7BE3, 0x7BE4, 0x7BE7, 
+  0x7BE8, 0x7BE9, 0x7BEB, 0x7BEC, 0x7BED, 0x7BEF, 0x7BF0, 0x7BF2, 
+  0x7BF3, 0x7BF4, 0x7BF5, 0x7BF6, 0x7BF8, 0x7BF9, 0x7BFA, 0x7BFB, 
+  0x7BFD, 0x7BFF, 0x7C00, 0x7C01, 0x7C02, 0x7C03, 0x7C04, 0x7C05, 
+  0x7C06, 0x7C08, 0x7C09, 0x7C0A, 0x7C0D, 0x7C0E, 0x7C10, 0x7C11, 
+  0x7C12, 0x7C13, 0x7C14, 0x7C15, 0x7C17, 0x7C18, 0x7C19,      0, 
+  0x7C1A, 0x7C1B, 0x7C1C, 0x7C1D, 0x7C1E, 0x7C20, 0x7C21, 0x7C22, 
+  0x7C23, 0x7C24, 0x7C25, 0x7C28, 0x7C29, 0x7C2B, 0x7C2C, 0x7C2D, 
+  0x7C2E, 0x7C2F, 0x7C30, 0x7C31, 0x7C32, 0x7C33, 0x7C34, 0x7C35, 
+  0x7C36, 0x7C37, 0x7C39, 0x7C3A, 0x7C3B, 0x7C3C, 0x7C3D, 0x7C3E, 
+  0x7C42, 0x9AB8, 0x5B69, 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, 
+  0x9163, 0x61A8, 0x90AF, 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, 
+  0x558A, 0x7F55, 0x7FF0, 0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D, 
+  0x710A, 0x6C57, 0x6C49, 0x592F, 0x676D, 0x822A, 0x58D5, 0x568E, 
+  0x8C6A, 0x6BEB, 0x90DD, 0x597D, 0x8017, 0x53F7, 0x6D69, 0x5475, 
+  0x559D, 0x8377, 0x83CF, 0x6838, 0x79BE, 0x548C, 0x4F55, 0x5408, 
+  0x76D2, 0x8C89, 0x9602, 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64, 
+  0x8D3A, 0x563F, 0x9ED1, 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, 
+  0x4EA8, 0x6A2A, 0x8861, 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, 
+  0x9E3F, 0x6D2A, 0x5B8F, 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, 
+  0x543C, 0x539A, 0x5019, 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, 
+  0x58F6, 0x846B, 0x80E1, 0x8774, 0x72D0, 0x7CCA, 0x6E56,      0, 
+plane bb
+at 0x40
+  0x7C43, 0x7C44, 0x7C45, 0x7C46, 0x7C47, 0x7C48, 0x7C49, 0x7C4A, 
+  0x7C4B, 0x7C4C, 0x7C4E, 0x7C4F, 0x7C50, 0x7C51, 0x7C52, 0x7C53, 
+  0x7C54, 0x7C55, 0x7C56, 0x7C57, 0x7C58, 0x7C59, 0x7C5A, 0x7C5B, 
+  0x7C5C, 0x7C5D, 0x7C5E, 0x7C5F, 0x7C60, 0x7C61, 0x7C62, 0x7C63, 
+  0x7C64, 0x7C65, 0x7C66, 0x7C67, 0x7C68, 0x7C69, 0x7C6A, 0x7C6B, 
+  0x7C6C, 0x7C6D, 0x7C6E, 0x7C6F, 0x7C70, 0x7C71, 0x7C72, 0x7C75, 
+  0x7C76, 0x7C77, 0x7C78, 0x7C79, 0x7C7A, 0x7C7E, 0x7C7F, 0x7C80, 
+  0x7C81, 0x7C82, 0x7C83, 0x7C84, 0x7C85, 0x7C86, 0x7C87,      0, 
+  0x7C88, 0x7C8A, 0x7C8B, 0x7C8C, 0x7C8D, 0x7C8E, 0x7C8F, 0x7C90, 
+  0x7C93, 0x7C94, 0x7C96, 0x7C99, 0x7C9A, 0x7C9B, 0x7CA0, 0x7CA1, 
+  0x7CA3, 0x7CA6, 0x7CA7, 0x7CA8, 0x7CA9, 0x7CAB, 0x7CAC, 0x7CAD, 
+  0x7CAF, 0x7CB0, 0x7CB4, 0x7CB5, 0x7CB6, 0x7CB7, 0x7CB8, 0x7CBA, 
+  0x7CBB, 0x5F27, 0x864E, 0x552C, 0x62A4, 0x4E92, 0x6CAA, 0x6237, 
+  0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, 0x753B, 0x5212, 0x5316, 
+  0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, 0x574F, 0x6B22, 0x73AF, 
+  0x6853, 0x8FD8, 0x7F13, 0x6362, 0x60A3, 0x5524, 0x75EA, 0x8C62, 
+  0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352, 0x614C, 0x9EC4, 0x78FA, 
+  0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6, 0x714C, 0x6643, 0x5E4C, 
+  0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89, 0x5FBD, 0x6062, 0x86D4, 
+  0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, 0x60E0, 0x6666, 0x8D3F, 
+  0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, 0x8BF2, 0x7ED8, 0x8364, 
+  0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, 0x8C41, 0x6D3B, 0x4F19, 
+  0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, 0x8D27, 0x7978, 0x51FB, 
+  0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, 0x79EF, 0x7B95,      0, 
+plane bc
+at 0x40
+  0x7CBF, 0x7CC0, 0x7CC2, 0x7CC3, 0x7CC4, 0x7CC6, 0x7CC9, 0x7CCB, 
+  0x7CCE, 0x7CCF, 0x7CD0, 0x7CD1, 0x7CD2, 0x7CD3, 0x7CD4, 0x7CD8, 
+  0x7CDA, 0x7CDB, 0x7CDD, 0x7CDE, 0x7CE1, 0x7CE2, 0x7CE3, 0x7CE4, 
+  0x7CE5, 0x7CE6, 0x7CE7, 0x7CE9, 0x7CEA, 0x7CEB, 0x7CEC, 0x7CED, 
+  0x7CEE, 0x7CF0, 0x7CF1, 0x7CF2, 0x7CF3, 0x7CF4, 0x7CF5, 0x7CF6, 
+  0x7CF7, 0x7CF9, 0x7CFA, 0x7CFC, 0x7CFD, 0x7CFE, 0x7CFF, 0x7D00, 
+  0x7D01, 0x7D02, 0x7D03, 0x7D04, 0x7D05, 0x7D06, 0x7D07, 0x7D08, 
+  0x7D09, 0x7D0B, 0x7D0C, 0x7D0D, 0x7D0E, 0x7D0F, 0x7D10,      0, 
+  0x7D11, 0x7D12, 0x7D13, 0x7D14, 0x7D15, 0x7D16, 0x7D17, 0x7D18, 
+  0x7D19, 0x7D1A, 0x7D1B, 0x7D1C, 0x7D1D, 0x7D1E, 0x7D1F, 0x7D21, 
+  0x7D23, 0x7D24, 0x7D25, 0x7D26, 0x7D28, 0x7D29, 0x7D2A, 0x7D2C, 
+  0x7D2D, 0x7D2E, 0x7D30, 0x7D31, 0x7D32, 0x7D33, 0x7D34, 0x7D35, 
+  0x7D36, 0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, 0x59EC, 
+  0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D, 0x96C6, 
+  0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, 0x5AC9, 0x7EA7, 0x6324, 
+  0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, 0x5B63, 0x4F0E, 
+  0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1, 0x8BB0, 
+  0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, 0x67B7, 
+  0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, 0x7532, 
+  0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, 0x6B7C, 
+  0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, 0x80A9, 
+  0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1, 0x7877, 
+  0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350, 0x69DB, 
+  0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, 0x7BAD, 0x4EF6,      0, 
+plane bd
+at 0x40
+  0x7D37, 0x7D38, 0x7D39, 0x7D3A, 0x7D3B, 0x7D3C, 0x7D3D, 0x7D3E, 
+  0x7D3F, 0x7D40, 0x7D41, 0x7D42, 0x7D43, 0x7D44, 0x7D45, 0x7D46, 
+  0x7D47, 0x7D48, 0x7D49, 0x7D4A, 0x7D4B, 0x7D4C, 0x7D4D, 0x7D4E, 
+  0x7D4F, 0x7D50, 0x7D51, 0x7D52, 0x7D53, 0x7D54, 0x7D55, 0x7D56, 
+  0x7D57, 0x7D58, 0x7D59, 0x7D5A, 0x7D5B, 0x7D5C, 0x7D5D, 0x7D5E, 
+  0x7D5F, 0x7D60, 0x7D61, 0x7D62, 0x7D63, 0x7D64, 0x7D65, 0x7D66, 
+  0x7D67, 0x7D68, 0x7D69, 0x7D6A, 0x7D6B, 0x7D6C, 0x7D6D, 0x7D6F, 
+  0x7D70, 0x7D71, 0x7D72, 0x7D73, 0x7D74, 0x7D75, 0x7D76,      0, 
+  0x7D78, 0x7D79, 0x7D7A, 0x7D7B, 0x7D7C, 0x7D7D, 0x7D7E, 0x7D7F, 
+  0x7D80, 0x7D81, 0x7D82, 0x7D83, 0x7D84, 0x7D85, 0x7D86, 0x7D87, 
+  0x7D88, 0x7D89, 0x7D8A, 0x7D8B, 0x7D8C, 0x7D8D, 0x7D8E, 0x7D8F, 
+  0x7D90, 0x7D91, 0x7D92, 0x7D93, 0x7D94, 0x7D95, 0x7D96, 0x7D97, 
+  0x7D98, 0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, 
+  0x5EFA, 0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, 
+  0x6868, 0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, 
+  0x7901, 0x7126, 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, 
+  0x56BC, 0x6405, 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, 
+  0x997A, 0x7F34, 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, 0x8F83, 
+  0x53EB, 0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, 0x9636, 
+  0x622A, 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED, 
+  0x6D01, 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C, 
+  0x501F, 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, 
+  0x91D1, 0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, 
+  0x8FDB, 0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78,      0, 
+plane be
+at 0x40
+  0x7D99, 0x7D9A, 0x7D9B, 0x7D9C, 0x7D9D, 0x7D9E, 0x7D9F, 0x7DA0, 
+  0x7DA1, 0x7DA2, 0x7DA3, 0x7DA4, 0x7DA5, 0x7DA7, 0x7DA8, 0x7DA9, 
+  0x7DAA, 0x7DAB, 0x7DAC, 0x7DAD, 0x7DAF, 0x7DB0, 0x7DB1, 0x7DB2, 
+  0x7DB3, 0x7DB4, 0x7DB5, 0x7DB6, 0x7DB7, 0x7DB8, 0x7DB9, 0x7DBA, 
+  0x7DBB, 0x7DBC, 0x7DBD, 0x7DBE, 0x7DBF, 0x7DC0, 0x7DC1, 0x7DC2, 
+  0x7DC3, 0x7DC4, 0x7DC5, 0x7DC6, 0x7DC7, 0x7DC8, 0x7DC9, 0x7DCA, 
+  0x7DCB, 0x7DCC, 0x7DCD, 0x7DCE, 0x7DCF, 0x7DD0, 0x7DD1, 0x7DD2, 
+  0x7DD3, 0x7DD4, 0x7DD5, 0x7DD6, 0x7DD7, 0x7DD8, 0x7DD9,      0, 
+  0x7DDA, 0x7DDB, 0x7DDC, 0x7DDD, 0x7DDE, 0x7DDF, 0x7DE0, 0x7DE1, 
+  0x7DE2, 0x7DE3, 0x7DE4, 0x7DE5, 0x7DE6, 0x7DE7, 0x7DE8, 0x7DE9, 
+  0x7DEA, 0x7DEB, 0x7DEC, 0x7DED, 0x7DEE, 0x7DEF, 0x7DF0, 0x7DF1, 
+  0x7DF2, 0x7DF3, 0x7DF4, 0x7DF5, 0x7DF6, 0x7DF7, 0x7DF8, 0x7DF9, 
+  0x7DFA, 0x5C3D, 0x52B2, 0x8346, 0x5162, 0x830E, 0x775B, 0x6676, 
+  0x9CB8, 0x4EAC, 0x60CA, 0x7CBE, 0x7CB3, 0x7ECF, 0x4E95, 0x8B66, 
+  0x666F, 0x9888, 0x9759, 0x5883, 0x656C, 0x955C, 0x5F84, 0x75C9, 
+  0x9756, 0x7ADF, 0x7ADE, 0x51C0, 0x70AF, 0x7A98, 0x63EA, 0x7A76, 
+  0x7EA0, 0x7396, 0x97ED, 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9, 
+  0x6551, 0x65E7, 0x81FC, 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, 
+  0x62D8, 0x72D9, 0x75BD, 0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480, 
+  0x77E9, 0x4E3E, 0x6CAE, 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177, 
+  0x8DDD, 0x8E1E, 0x952F, 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, 
+  0x6350, 0x9E43, 0x5A1F, 0x5026, 0x7737, 0x5377, 0x7EE2, 0x6485, 
+  0x652B, 0x6289, 0x6398, 0x5014, 0x7235, 0x89C9, 0x51B3, 0x8BC0, 
+  0x7EDD, 0x5747, 0x83CC, 0x94A7, 0x519B, 0x541B, 0x5CFB,      0, 
+plane bf
+at 0x40
+  0x7DFB, 0x7DFC, 0x7DFD, 0x7DFE, 0x7DFF, 0x7E00, 0x7E01, 0x7E02, 
+  0x7E03, 0x7E04, 0x7E05, 0x7E06, 0x7E07, 0x7E08, 0x7E09, 0x7E0A, 
+  0x7E0B, 0x7E0C, 0x7E0D, 0x7E0E, 0x7E0F, 0x7E10, 0x7E11, 0x7E12, 
+  0x7E13, 0x7E14, 0x7E15, 0x7E16, 0x7E17, 0x7E18, 0x7E19, 0x7E1A, 
+  0x7E1B, 0x7E1C, 0x7E1D, 0x7E1E, 0x7E1F, 0x7E20, 0x7E21, 0x7E22, 
+  0x7E23, 0x7E24, 0x7E25, 0x7E26, 0x7E27, 0x7E28, 0x7E29, 0x7E2A, 
+  0x7E2B, 0x7E2C, 0x7E2D, 0x7E2E, 0x7E2F, 0x7E30, 0x7E31, 0x7E32, 
+  0x7E33, 0x7E34, 0x7E35, 0x7E36, 0x7E37, 0x7E38, 0x7E39,      0, 
+  0x7E3A, 0x7E3C, 0x7E3D, 0x7E3E, 0x7E3F, 0x7E40, 0x7E42, 0x7E43, 
+  0x7E44, 0x7E45, 0x7E46, 0x7E48, 0x7E49, 0x7E4A, 0x7E4B, 0x7E4C, 
+  0x7E4D, 0x7E4E, 0x7E4F, 0x7E50, 0x7E51, 0x7E52, 0x7E53, 0x7E54, 
+  0x7E55, 0x7E56, 0x7E57, 0x7E58, 0x7E59, 0x7E5A, 0x7E5B, 0x7E5C, 
+  0x7E5D, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496, 
+  0x5361, 0x54AF, 0x5F00, 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A, 
+  0x582A, 0x52D8, 0x574E, 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0, 
+  0x625B, 0x6297, 0x4EA2, 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760, 
+  0x5777, 0x82DB, 0x67EF, 0x68F5, 0x78D5, 0x9897, 0x79D1, 0x58F3, 
+  0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B, 0x5BA2, 0x8BFE, 0x80AF, 
+  0x5543, 0x57A6, 0x6073, 0x5751, 0x542D, 0x7A7A, 0x6050, 0x5B54, 
+  0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7, 0x67AF, 0x54ED, 0x7A9F, 
+  0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8, 
+  0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321, 
+  0x7B50, 0x72C2, 0x6846, 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F, 
+  0x76D4, 0x5CBF, 0x7AA5, 0x8475, 0x594E, 0x9B41, 0x5080,      0, 
+plane c0
+at 0x40
+  0x7E5E, 0x7E5F, 0x7E60, 0x7E61, 0x7E62, 0x7E63, 0x7E64, 0x7E65, 
+  0x7E66, 0x7E67, 0x7E68, 0x7E69, 0x7E6A, 0x7E6B, 0x7E6C, 0x7E6D, 
+  0x7E6E, 0x7E6F, 0x7E70, 0x7E71, 0x7E72, 0x7E73, 0x7E74, 0x7E75, 
+  0x7E76, 0x7E77, 0x7E78, 0x7E79, 0x7E7A, 0x7E7B, 0x7E7C, 0x7E7D, 
+  0x7E7E, 0x7E7F, 0x7E80, 0x7E81, 0x7E83, 0x7E84, 0x7E85, 0x7E86, 
+  0x7E87, 0x7E88, 0x7E89, 0x7E8A, 0x7E8B, 0x7E8C, 0x7E8D, 0x7E8E, 
+  0x7E8F, 0x7E90, 0x7E91, 0x7E92, 0x7E93, 0x7E94, 0x7E95, 0x7E96, 
+  0x7E97, 0x7E98, 0x7E99, 0x7E9A, 0x7E9C, 0x7E9D, 0x7E9E,      0, 
+  0x7EAE, 0x7EB4, 0x7EBB, 0x7EBC, 0x7ED6, 0x7EE4, 0x7EEC, 0x7EF9, 
+  0x7F0A, 0x7F10, 0x7F1E, 0x7F37, 0x7F39, 0x7F3B, 0x7F3C, 0x7F3D, 
+  0x7F3E, 0x7F3F, 0x7F40, 0x7F41, 0x7F43, 0x7F46, 0x7F47, 0x7F48, 
+  0x7F49, 0x7F4A, 0x7F4B, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F4F, 0x7F52, 
+  0x7F53, 0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346, 0x56F0, 
+  0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587, 0x8721, 
+  0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD, 0x5A6A, 
+  0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, 0x63FD, 
+  0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, 0x72FC, 
+  0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, 0x8001, 
+  0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, 0x96F7, 
+  0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2, 0x808B, 
+  0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8, 0x7281, 
+  0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E, 0x91CC, 
+  0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D, 0x5389, 
+  0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0,      0, 
+plane c1
+at 0x40
+  0x7F56, 0x7F59, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F5E, 0x7F60, 0x7F63, 
+  0x7F64, 0x7F65, 0x7F66, 0x7F67, 0x7F6B, 0x7F6C, 0x7F6D, 0x7F6F, 
+  0x7F70, 0x7F73, 0x7F75, 0x7F76, 0x7F77, 0x7F78, 0x7F7A, 0x7F7B, 
+  0x7F7C, 0x7F7D, 0x7F7F, 0x7F80, 0x7F82, 0x7F83, 0x7F84, 0x7F85, 
+  0x7F86, 0x7F87, 0x7F88, 0x7F89, 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90, 
+  0x7F91, 0x7F92, 0x7F93, 0x7F95, 0x7F96, 0x7F97, 0x7F98, 0x7F99, 
+  0x7F9B, 0x7F9C, 0x7FA0, 0x7FA2, 0x7FA3, 0x7FA5, 0x7FA6, 0x7FA8, 
+  0x7FA9, 0x7FAA, 0x7FAB, 0x7FAC, 0x7FAD, 0x7FAE, 0x7FB1,      0, 
+  0x7FB3, 0x7FB4, 0x7FB5, 0x7FB6, 0x7FB7, 0x7FBA, 0x7FBB, 0x7FBE, 
+  0x7FC0, 0x7FC2, 0x7FC3, 0x7FC4, 0x7FC6, 0x7FC7, 0x7FC8, 0x7FC9, 
+  0x7FCB, 0x7FCD, 0x7FCF, 0x7FD0, 0x7FD1, 0x7FD2, 0x7FD3, 0x7FD6, 
+  0x7FD7, 0x7FD9, 0x7FDA, 0x7FDB, 0x7FDC, 0x7FDD, 0x7FDE, 0x7FE2, 
+  0x7FE3, 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, 
+  0x54E9, 0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, 
+  0x6D9F, 0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, 
+  0x7CAE, 0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, 0x91CF, 
+  0x667E, 0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, 0x71CE, 
+  0x5BE5, 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, 0x6599, 
+  0x5217, 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, 0x78F7, 
+  0x9716, 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D, 
+  0x62CE, 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, 
+  0x51CC, 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, 
+  0x7409, 0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, 
+  0x67F3, 0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF,      0, 
+plane c2
+at 0x40
+  0x7FE4, 0x7FE7, 0x7FE8, 0x7FEA, 0x7FEB, 0x7FEC, 0x7FED, 0x7FEF, 
+  0x7FF2, 0x7FF4, 0x7FF5, 0x7FF6, 0x7FF7, 0x7FF8, 0x7FF9, 0x7FFA, 
+  0x7FFD, 0x7FFE, 0x7FFF, 0x8002, 0x8007, 0x8008, 0x8009, 0x800A, 
+  0x800E, 0x800F, 0x8011, 0x8013, 0x801A, 0x801B, 0x801D, 0x801E, 
+  0x801F, 0x8021, 0x8023, 0x8024, 0x802B, 0x802C, 0x802D, 0x802E, 
+  0x802F, 0x8030, 0x8032, 0x8034, 0x8039, 0x803A, 0x803C, 0x803E, 
+  0x8040, 0x8041, 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804E, 
+  0x804F, 0x8050, 0x8051, 0x8053, 0x8055, 0x8056, 0x8057,      0, 
+  0x8059, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 
+  0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806B, 
+  0x806C, 0x806D, 0x806E, 0x806F, 0x8070, 0x8072, 0x8073, 0x8074, 
+  0x8075, 0x8076, 0x8077, 0x8078, 0x8079, 0x807A, 0x807B, 0x807C, 
+  0x807D, 0x9686, 0x5784, 0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402, 
+  0x7BD3, 0x6F0F, 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089, 
+  0x63B3, 0x5364, 0x864F, 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, 
+  0x8D42, 0x9E7F, 0x6F5E, 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, 
+  0x5415, 0x94DD, 0x4FA3, 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, 
+  0x6C2F, 0x5F8B, 0x7387, 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, 
+  0x6EE6, 0x5375, 0x4E71, 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, 
+  0x4ED1, 0x6CA6, 0x7EB6, 0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B, 
+  0x9523, 0x7BA9, 0x9AA1, 0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC, 
+  0x5988, 0x9EBB, 0x739B, 0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B, 
+  0x5417, 0x57CB, 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792, 
+  0x9992, 0x86EE, 0x6EE1, 0x8513, 0x66FC, 0x6162, 0x6F2B,      0, 
+plane c3
+at 0x40
+  0x807E, 0x8081, 0x8082, 0x8085, 0x8088, 0x808A, 0x808D, 0x808E, 
+  0x808F, 0x8090, 0x8091, 0x8092, 0x8094, 0x8095, 0x8097, 0x8099, 
+  0x809E, 0x80A3, 0x80A6, 0x80A7, 0x80A8, 0x80AC, 0x80B0, 0x80B3, 
+  0x80B5, 0x80B6, 0x80B8, 0x80B9, 0x80BB, 0x80C5, 0x80C7, 0x80C8, 
+  0x80C9, 0x80CA, 0x80CB, 0x80CF, 0x80D0, 0x80D1, 0x80D2, 0x80D3, 
+  0x80D4, 0x80D5, 0x80D8, 0x80DF, 0x80E0, 0x80E2, 0x80E3, 0x80E6, 
+  0x80EE, 0x80F5, 0x80F7, 0x80F9, 0x80FB, 0x80FE, 0x80FF, 0x8100, 
+  0x8101, 0x8103, 0x8104, 0x8105, 0x8107, 0x8108, 0x810B,      0, 
+  0x810C, 0x8115, 0x8117, 0x8119, 0x811B, 0x811C, 0x811D, 0x811F, 
+  0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127, 
+  0x8128, 0x8129, 0x812A, 0x812B, 0x812D, 0x812E, 0x8130, 0x8133, 
+  0x8134, 0x8135, 0x8137, 0x8139, 0x813A, 0x813B, 0x813C, 0x813D, 
+  0x813F, 0x8C29, 0x8292, 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD, 
+  0x732B, 0x8305, 0x951A, 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302, 
+  0x5192, 0x5E3D, 0x8C8C, 0x8D38, 0x4E48, 0x73AB, 0x679A, 0x6885, 
+  0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709, 0x5A92, 0x9541, 0x6BCF, 
+  0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, 0x95E8, 0x95F7, 0x4EEC, 
+  0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, 0x731B, 0x68A6, 0x5B5F, 
+  0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25, 0x7C73, 
+  0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720, 
+  0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7, 
+  0x63CF, 0x7784, 0x85D0, 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511, 
+  0x706D, 0x6C11, 0x62BF, 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E, 
+  0x879F, 0x9E23, 0x94ED, 0x540D, 0x547D, 0x8C2C, 0x6478,      0, 
+plane c4
+at 0x40
+  0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149, 
+  0x814D, 0x814E, 0x814F, 0x8152, 0x8156, 0x8157, 0x8158, 0x815B, 
+  0x815C, 0x815D, 0x815E, 0x815F, 0x8161, 0x8162, 0x8163, 0x8164, 
+  0x8166, 0x8168, 0x816A, 0x816B, 0x816C, 0x816F, 0x8172, 0x8173, 
+  0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, 0x8185, 
+  0x8186, 0x8187, 0x8189, 0x818B, 0x818C, 0x818D, 0x818E, 0x8190, 
+  0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8199, 0x819A, 
+  0x819E, 0x819F, 0x81A0, 0x81A1, 0x81A2, 0x81A4, 0x81A5,      0, 
+  0x81A7, 0x81A9, 0x81AB, 0x81AC, 0x81AD, 0x81AE, 0x81AF, 0x81B0, 
+  0x81B1, 0x81B2, 0x81B4, 0x81B5, 0x81B6, 0x81B7, 0x81B8, 0x81B9, 
+  0x81BC, 0x81BD, 0x81BE, 0x81BF, 0x81C4, 0x81C5, 0x81C7, 0x81C8, 
+  0x81C9, 0x81CB, 0x81CD, 0x81CE, 0x81CF, 0x81D0, 0x81D1, 0x81D2, 
+  0x81D3, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469, 0x9B54, 
+  0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20, 0x5BDE, 
+  0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9, 0x59C6, 
+  0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728, 0x76EE, 
+  0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0, 0x90A3, 
+  0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, 0x8010, 0x5948, 0x5357, 
+  0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, 0x607C, 0x95F9, 0x6DD6, 
+  0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, 0x59AE, 0x9713, 0x502A, 
+  0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, 0x9006, 0x6EBA, 
+  0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5, 0x5A18, 
+  0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E, 0x954A, 
+  0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81,      0, 
+plane c5
+at 0x40
+  0x81D4, 0x81D5, 0x81D6, 0x81D7, 0x81D8, 0x81D9, 0x81DA, 0x81DB, 
+  0x81DC, 0x81DD, 0x81DE, 0x81DF, 0x81E0, 0x81E1, 0x81E2, 0x81E4, 
+  0x81E5, 0x81E6, 0x81E8, 0x81E9, 0x81EB, 0x81EE, 0x81EF, 0x81F0, 
+  0x81F1, 0x81F2, 0x81F5, 0x81F6, 0x81F7, 0x81F8, 0x81F9, 0x81FA, 
+  0x81FD, 0x81FF, 0x8203, 0x8207, 0x8208, 0x8209, 0x820A, 0x820B, 
+  0x820E, 0x820F, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218, 
+  0x8219, 0x821A, 0x821D, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227, 
+  0x8229, 0x822E, 0x8232, 0x823A, 0x823C, 0x823D, 0x823F,      0, 
+  0x8240, 0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824A, 
+  0x824C, 0x824D, 0x824E, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 
+  0x8255, 0x8256, 0x8257, 0x8259, 0x825B, 0x825C, 0x825D, 0x825E, 
+  0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, 
+  0x8269, 0x62E7, 0x6CDE, 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113, 
+  0x6D53, 0x519C, 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, 0x6696, 
+  0x8650, 0x759F, 0x632A, 0x61E6, 0x7CEF, 0x8BFA, 0x54E6, 0x6B27, 
+  0x9E25, 0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, 0x556A, 0x8DB4, 
+  0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, 0x5F98, 
+  0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554, 
+  0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B, 
+  0x5486, 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA, 
+  0x57F9, 0x88F4, 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7, 
+  0x76C6, 0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA, 
+  0x787C, 0x7BF7, 0x81A8, 0x670B, 0x9E4F, 0x6367, 0x78B0, 0x576F, 
+  0x7812, 0x9739, 0x6279, 0x62AB, 0x5288, 0x7435, 0x6BD7,      0, 
+plane c6
+at 0x40
+  0x826A, 0x826B, 0x826C, 0x826D, 0x8271, 0x8275, 0x8276, 0x8277, 
+  0x8278, 0x827B, 0x827C, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286, 
+  0x8287, 0x8289, 0x828C, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296, 
+  0x829A, 0x829B, 0x829E, 0x82A0, 0x82A2, 0x82A3, 0x82A7, 0x82B2, 
+  0x82B5, 0x82B6, 0x82BA, 0x82BB, 0x82BC, 0x82BF, 0x82C0, 0x82C2, 
+  0x82C3, 0x82C5, 0x82C6, 0x82C9, 0x82D0, 0x82D6, 0x82D9, 0x82DA, 
+  0x82DD, 0x82E2, 0x82E7, 0x82E8, 0x82E9, 0x82EA, 0x82EC, 0x82ED, 
+  0x82EE, 0x82F0, 0x82F2, 0x82F3, 0x82F5, 0x82F6, 0x82F8,      0, 
+  0x82FA, 0x82FC, 0x82FD, 0x82FE, 0x82FF, 0x8300, 0x830A, 0x830B, 
+  0x830D, 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, 0x8319, 0x831D, 
+  0x831E, 0x831F, 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 
+  0x8326, 0x8329, 0x832A, 0x832E, 0x8330, 0x8332, 0x8337, 0x833B, 
+  0x833D, 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, 
+  0x5C41, 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, 
+  0x74E2, 0x7968, 0x6487, 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, 
+  0x8058, 0x4E52, 0x576A, 0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6, 
+  0x8BC4, 0x5C4F, 0x5761, 0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44, 
+  0x8FEB, 0x7C95, 0x5256, 0x6251, 0x94FA, 0x4EC6, 0x8386, 0x8461, 
+  0x83E9, 0x84B2, 0x57D4, 0x6734, 0x5703, 0x666E, 0x6D66, 0x8C31, 
+  0x66DD, 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A, 0x59BB, 0x4E03, 
+  0x51C4, 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67, 
+  0x7566, 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91, 
+  0x8D77, 0x5C82, 0x4E5E, 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, 
+  0x6C14, 0x8FC4, 0x5F03, 0x6C7D, 0x6CE3, 0x8BAB, 0x6390,      0, 
+plane c7
+at 0x40
+  0x833E, 0x833F, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, 0x834A, 
+  0x834B, 0x834C, 0x834D, 0x834E, 0x8353, 0x8355, 0x8356, 0x8357, 
+  0x8358, 0x8359, 0x835D, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373, 
+  0x8374, 0x8375, 0x8376, 0x8379, 0x837A, 0x837E, 0x837F, 0x8380, 
+  0x8381, 0x8382, 0x8383, 0x8384, 0x8387, 0x8388, 0x838A, 0x838B, 
+  0x838C, 0x838D, 0x838F, 0x8390, 0x8391, 0x8394, 0x8395, 0x8396, 
+  0x8397, 0x8399, 0x839A, 0x839D, 0x839F, 0x83A1, 0x83A2, 0x83A3, 
+  0x83A4, 0x83A5, 0x83A6, 0x83A7, 0x83AC, 0x83AD, 0x83AE,      0, 
+  0x83AF, 0x83B5, 0x83BB, 0x83BE, 0x83BF, 0x83C2, 0x83C3, 0x83C4, 
+  0x83C6, 0x83C8, 0x83C9, 0x83CB, 0x83CD, 0x83CE, 0x83D0, 0x83D1, 
+  0x83D2, 0x83D3, 0x83D5, 0x83D7, 0x83D9, 0x83DA, 0x83DB, 0x83DE, 
+  0x83E2, 0x83E3, 0x83E4, 0x83E6, 0x83E7, 0x83E8, 0x83EB, 0x83EC, 
+  0x83ED, 0x6070, 0x6D3D, 0x7275, 0x6266, 0x948E, 0x94C5, 0x5343, 
+  0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E, 0x9ED4, 0x94B1, 0x94B3, 
+  0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, 0x5811, 0x5D4C, 0x6B20, 
+  0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, 0x5899, 0x8537, 0x5F3A, 
+  0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77A7, 0x4E54, 
+  0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, 0x5CED, 0x4FCF, 0x7A8D, 
+  0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83, 0x94A6, 0x4FB5, 0x4EB2, 
+  0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2, 0x79BD, 0x5BDD, 0x6C81, 
+  0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F, 0x6E05, 0x64CE, 0x6674, 
+  0x6C30, 0x60C5, 0x9877, 0x8BF7, 0x5E86, 0x743C, 0x7A77, 0x79CB, 
+  0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA, 0x914B, 0x6CC5, 0x8D8B, 
+  0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, 0x9A71, 0x6E20,      0, 
+plane c8
+at 0x40
+  0x83EE, 0x83EF, 0x83F3, 0x83F4, 0x83F5, 0x83F6, 0x83F7, 0x83FA, 
+  0x83FB, 0x83FC, 0x83FE, 0x83FF, 0x8400, 0x8402, 0x8405, 0x8407, 
+  0x8408, 0x8409, 0x840A, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415, 
+  0x8416, 0x8417, 0x8419, 0x841A, 0x841B, 0x841E, 0x841F, 0x8420, 
+  0x8421, 0x8422, 0x8423, 0x8429, 0x842A, 0x842B, 0x842C, 0x842D, 
+  0x842E, 0x842F, 0x8430, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436, 
+  0x8437, 0x8439, 0x843A, 0x843B, 0x843E, 0x843F, 0x8440, 0x8441, 
+  0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x8449,      0, 
+  0x844A, 0x844B, 0x844C, 0x844D, 0x844E, 0x844F, 0x8450, 0x8452, 
+  0x8453, 0x8454, 0x8455, 0x8456, 0x8458, 0x845D, 0x845E, 0x845F, 
+  0x8460, 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, 0x846A, 
+  0x846E, 0x846F, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479, 0x847B, 
+  0x847C, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708, 0x98A7, 
+  0x6743, 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC, 0x5238, 
+  0x529D, 0x7F3A, 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7, 0x786E, 
+  0x96C0, 0x88D9, 0x7FA4, 0x7136, 0x71C3, 0x5189, 0x67D3, 0x74E4, 
+  0x58E4, 0x6518, 0x56B7, 0x8BA9, 0x9976, 0x6270, 0x7ED5, 0x60F9, 
+  0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, 0x97E7, 0x4EFB, 0x8BA4, 
+  0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, 0x620E, 0x8338, 
+  0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2, 0x5197, 
+  0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A, 0x5982, 
+  0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E, 0x854A, 
+  0x745E, 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492, 0x6D12, 
+  0x8428, 0x816E, 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1,      0, 
+plane c9
+at 0x40
+  0x847D, 0x847E, 0x847F, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485, 
+  0x8486, 0x848A, 0x848D, 0x848F, 0x8490, 0x8491, 0x8492, 0x8493, 
+  0x8494, 0x8495, 0x8496, 0x8498, 0x849A, 0x849B, 0x849D, 0x849E, 
+  0x849F, 0x84A0, 0x84A2, 0x84A3, 0x84A4, 0x84A5, 0x84A6, 0x84A7, 
+  0x84A8, 0x84A9, 0x84AA, 0x84AB, 0x84AC, 0x84AD, 0x84AE, 0x84B0, 
+  0x84B1, 0x84B3, 0x84B5, 0x84B6, 0x84B7, 0x84BB, 0x84BC, 0x84BE, 
+  0x84C0, 0x84C2, 0x84C3, 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x84CB, 
+  0x84CC, 0x84CE, 0x84CF, 0x84D2, 0x84D4, 0x84D5, 0x84D7,      0, 
+  0x84D8, 0x84D9, 0x84DA, 0x84DB, 0x84DC, 0x84DE, 0x84E1, 0x84E2, 
+  0x84E4, 0x84E7, 0x84E8, 0x84E9, 0x84EA, 0x84EB, 0x84ED, 0x84EE, 
+  0x84EF, 0x84F1, 0x84F2, 0x84F3, 0x84F4, 0x84F5, 0x84F6, 0x84F7, 
+  0x84F8, 0x84F9, 0x84FA, 0x84FB, 0x84FD, 0x84FE, 0x8500, 0x8501, 
+  0x8502, 0x4F1E, 0x6563, 0x6851, 0x55D3, 0x4E27, 0x6414, 0x9A9A, 
+  0x626B, 0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, 0x50E7, 0x838E, 
+  0x7802, 0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, 0x715E, 
+  0x7B5B, 0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D, 
+  0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55, 
+  0x6247, 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A, 
+  0x5C1A, 0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA, 
+  0x97F6, 0x5C11, 0x54E8, 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7, 
+  0x820C, 0x820D, 0x8D66, 0x6444, 0x5C04, 0x6151, 0x6D89, 0x793E, 
+  0x8BBE, 0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, 0x5A20, 
+  0x7EC5, 0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, 0x80BE, 0x614E, 
+  0x6E17, 0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3,      0, 
+plane ca
+at 0x40
+  0x8503, 0x8504, 0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850A, 
+  0x850B, 0x850D, 0x850E, 0x850F, 0x8510, 0x8512, 0x8514, 0x8515, 
+  0x8516, 0x8518, 0x8519, 0x851B, 0x851C, 0x851D, 0x851E, 0x8520, 
+  0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529, 
+  0x852A, 0x852D, 0x852E, 0x852F, 0x8530, 0x8531, 0x8532, 0x8533, 
+  0x8534, 0x8535, 0x8536, 0x853E, 0x853F, 0x8540, 0x8541, 0x8542, 
+  0x8544, 0x8545, 0x8546, 0x8547, 0x854B, 0x854C, 0x854D, 0x854E, 
+  0x854F, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555,      0, 
+  0x8557, 0x8558, 0x855A, 0x855B, 0x855C, 0x855D, 0x855F, 0x8560, 
+  0x8561, 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, 0x8569, 0x856A, 
+  0x856B, 0x856C, 0x856D, 0x856E, 0x856F, 0x8570, 0x8571, 0x8573, 
+  0x8575, 0x8576, 0x8577, 0x8578, 0x857C, 0x857D, 0x857F, 0x8580, 
+  0x8581, 0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, 
+  0x72EE, 0x65BD, 0x6E7F, 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, 
+  0x62FE, 0x65F6, 0x4EC0, 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, 
+  0x77E2, 0x4F7F, 0x5C4E, 0x9A76, 0x59CB, 0x5F0F, 0x793A, 0x58EB, 
+  0x4E16, 0x67FF, 0x4E8B, 0x62ED, 0x8A93, 0x901D, 0x52BF, 0x662F, 
+  0x55DC, 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA, 0x9970, 0x6C0F, 
+  0x5E02, 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, 0x624B, 0x9996, 
+  0x5B88, 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C, 
+  0x67A2, 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, 
+  0x758F, 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, 
+  0x7F72, 0x8700, 0x9ECD, 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, 
+  0x675F, 0x620D, 0x7AD6, 0x5885, 0x5EB6, 0x6570, 0x6F31,      0, 
+plane cb
+at 0x40
+  0x8582, 0x8583, 0x8586, 0x8588, 0x8589, 0x858A, 0x858B, 0x858C, 
+  0x858D, 0x858E, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595, 
+  0x8596, 0x8597, 0x8598, 0x8599, 0x859A, 0x859D, 0x859E, 0x859F, 
+  0x85A0, 0x85A1, 0x85A2, 0x85A3, 0x85A5, 0x85A6, 0x85A7, 0x85A9, 
+  0x85AB, 0x85AC, 0x85AD, 0x85B1, 0x85B2, 0x85B3, 0x85B4, 0x85B5, 
+  0x85B6, 0x85B8, 0x85BA, 0x85BB, 0x85BC, 0x85BD, 0x85BE, 0x85BF, 
+  0x85C0, 0x85C2, 0x85C3, 0x85C4, 0x85C5, 0x85C6, 0x85C7, 0x85C8, 
+  0x85CA, 0x85CB, 0x85CC, 0x85CD, 0x85CE, 0x85D1, 0x85D2,      0, 
+  0x85D4, 0x85D6, 0x85D7, 0x85D8, 0x85D9, 0x85DA, 0x85DB, 0x85DD, 
+  0x85DE, 0x85DF, 0x85E0, 0x85E1, 0x85E2, 0x85E3, 0x85E5, 0x85E6, 
+  0x85E7, 0x85E8, 0x85EA, 0x85EB, 0x85EC, 0x85ED, 0x85EE, 0x85EF, 
+  0x85F0, 0x85F1, 0x85F2, 0x85F3, 0x85F4, 0x85F5, 0x85F6, 0x85F7, 
+  0x85F8, 0x6055, 0x5237, 0x800D, 0x6454, 0x8870, 0x7529, 0x5E05, 
+  0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D, 0x8C01, 0x6C34, 0x7761, 
+  0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714, 
+  0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D, 0x79C1, 0x53F8, 0x4E1D, 
+  0x6B7B, 0x8086, 0x5BFA, 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x9972, 
+  0x5DF3, 0x677E, 0x8038, 0x6002, 0x9882, 0x9001, 0x5B8B, 0x8BBC, 
+  0x8BF5, 0x641C, 0x8258, 0x64DE, 0x55FD, 0x82CF, 0x9165, 0x4FD7, 
+  0x7D20, 0x901F, 0x7C9F, 0x50F3, 0x5851, 0x6EAF, 0x5BBF, 0x8BC9, 
+  0x8083, 0x9178, 0x849C, 0x7B97, 0x867D, 0x968B, 0x968F, 0x7EE5, 
+  0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042, 0x96A7, 0x795F, 0x5B59, 
+  0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506, 0x7F29, 0x7410, 0x7D22, 
+  0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83, 0x5979, 0x5854,      0, 
+plane cc
+at 0x40
+  0x85F9, 0x85FA, 0x85FC, 0x85FD, 0x85FE, 0x8600, 0x8601, 0x8602, 
+  0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609, 0x860A, 0x860B, 
+  0x860C, 0x860D, 0x860E, 0x860F, 0x8610, 0x8612, 0x8613, 0x8614, 
+  0x8615, 0x8617, 0x8618, 0x8619, 0x861A, 0x861B, 0x861C, 0x861D, 
+  0x861E, 0x861F, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625, 
+  0x8626, 0x8628, 0x862A, 0x862B, 0x862C, 0x862D, 0x862E, 0x862F, 
+  0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637, 
+  0x8639, 0x863A, 0x863B, 0x863D, 0x863E, 0x863F, 0x8640,      0, 
+  0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 
+  0x8649, 0x864A, 0x864B, 0x864C, 0x8652, 0x8653, 0x8655, 0x8656, 
+  0x8657, 0x8658, 0x8659, 0x865B, 0x865C, 0x865D, 0x865F, 0x8660, 
+  0x8661, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 
+  0x866A, 0x736D, 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, 0x62AC, 
+  0x53F0, 0x6CF0, 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D, 0x644A, 
+  0x8D2A, 0x762B, 0x6EE9, 0x575B, 0x6A80, 0x75F0, 0x6F6D, 0x8C2D, 
+  0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, 0x63A2, 0x53F9, 0x70AD, 
+  0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B, 0x5510, 0x7CD6, 
+  0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B, 0x6ED4, 
+  0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, 0x5957, 
+  0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, 0x8E22, 
+  0x9511, 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, 0x568F, 
+  0x60D5, 0x6D95, 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, 0x7530, 
+  0x751C, 0x606C, 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2, 0x773A, 
+  0x8DF3, 0x8D34, 0x94C1, 0x5E16, 0x5385, 0x542C, 0x70C3,      0, 
+plane cd
+at 0x40
+  0x866D, 0x866F, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676, 
+  0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688, 
+  0x8689, 0x868E, 0x868F, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696, 
+  0x8697, 0x8698, 0x8699, 0x869A, 0x869B, 0x869E, 0x869F, 0x86A0, 
+  0x86A1, 0x86A2, 0x86A5, 0x86A6, 0x86AB, 0x86AD, 0x86AE, 0x86B2, 
+  0x86B3, 0x86B7, 0x86B8, 0x86B9, 0x86BB, 0x86BC, 0x86BD, 0x86BE, 
+  0x86BF, 0x86C1, 0x86C2, 0x86C3, 0x86C5, 0x86C8, 0x86CC, 0x86CD, 
+  0x86D2, 0x86D3, 0x86D5, 0x86D6, 0x86D7, 0x86DA, 0x86DC,      0, 
+  0x86DD, 0x86E0, 0x86E1, 0x86E2, 0x86E3, 0x86E5, 0x86E6, 0x86E7, 
+  0x86E8, 0x86EA, 0x86EB, 0x86EC, 0x86EF, 0x86F5, 0x86F6, 0x86F7, 
+  0x86FA, 0x86FB, 0x86FC, 0x86FD, 0x86FF, 0x8701, 0x8704, 0x8705, 
+  0x8706, 0x870B, 0x870C, 0x870E, 0x870F, 0x8710, 0x8711, 0x8714, 
+  0x8716, 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247, 
+  0x901A, 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, 
+  0x6876, 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, 
+  0x900F, 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, 
+  0x5C60, 0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, 
+  0x817F, 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, 
+  0x6258, 0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, 0x59A5, 
+  0x62D3, 0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6, 
+  0x889C, 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D, 
+  0x4E38, 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB, 
+  0x5B9B, 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, 
+  0x7F51, 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01,      0, 
+plane ce
+at 0x40
+  0x8719, 0x871B, 0x871D, 0x871F, 0x8720, 0x8724, 0x8726, 0x8727, 
+  0x8728, 0x872A, 0x872B, 0x872C, 0x872D, 0x872F, 0x8730, 0x8732, 
+  0x8733, 0x8735, 0x8736, 0x8738, 0x8739, 0x873A, 0x873C, 0x873D, 
+  0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874A, 
+  0x874B, 0x874D, 0x874F, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755, 
+  0x8756, 0x8758, 0x875A, 0x875B, 0x875C, 0x875D, 0x875E, 0x875F, 
+  0x8761, 0x8762, 0x8766, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B, 
+  0x876C, 0x876D, 0x876F, 0x8771, 0x8772, 0x8773, 0x8775,      0, 
+  0x8777, 0x8778, 0x8779, 0x877A, 0x877F, 0x8780, 0x8781, 0x8784, 
+  0x8786, 0x8787, 0x8789, 0x878A, 0x878C, 0x878E, 0x878F, 0x8790, 
+  0x8791, 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879A, 
+  0x879B, 0x879C, 0x879D, 0x879E, 0x87A0, 0x87A1, 0x87A2, 0x87A3, 
+  0x87A4, 0x5DCD, 0x5FAE, 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 
+  0x552F, 0x60DF, 0x4E3A, 0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4, 
+  0x4F1F, 0x4F2A, 0x5C3E, 0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F, 
+  0x80C3, 0x5582, 0x9B4F, 0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170, 
+  0x536B, 0x761F, 0x6E29, 0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B, 
+  0x7A33, 0x7D0A, 0x95EE, 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, 
+  0x6DA1, 0x7A9D, 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 
+  0x545C, 0x94A8, 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, 
+  0x68A7, 0x543E, 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 
+  0x821E, 0x4F0D, 0x4FAE, 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 
+  0x52FF, 0x52A1, 0x609F, 0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F, 
+  0x7852, 0x77FD, 0x6670, 0x563B, 0x5438, 0x9521, 0x727A,      0, 
+plane cf
+at 0x40
+  0x87A5, 0x87A6, 0x87A7, 0x87A9, 0x87AA, 0x87AE, 0x87B0, 0x87B1, 
+  0x87B2, 0x87B4, 0x87B6, 0x87B7, 0x87B8, 0x87B9, 0x87BB, 0x87BC, 
+  0x87BE, 0x87BF, 0x87C1, 0x87C2, 0x87C3, 0x87C4, 0x87C5, 0x87C7, 
+  0x87C8, 0x87C9, 0x87CC, 0x87CD, 0x87CE, 0x87CF, 0x87D0, 0x87D4, 
+  0x87D5, 0x87D6, 0x87D7, 0x87D8, 0x87D9, 0x87DA, 0x87DC, 0x87DD, 
+  0x87DE, 0x87DF, 0x87E1, 0x87E2, 0x87E3, 0x87E4, 0x87E6, 0x87E7, 
+  0x87E8, 0x87E9, 0x87EB, 0x87EC, 0x87ED, 0x87EF, 0x87F0, 0x87F1, 
+  0x87F2, 0x87F3, 0x87F4, 0x87F5, 0x87F6, 0x87F7, 0x87F8,      0, 
+  0x87FA, 0x87FB, 0x87FC, 0x87FD, 0x87FF, 0x8800, 0x8801, 0x8802, 
+  0x8804, 0x8805, 0x8806, 0x8807, 0x8808, 0x8809, 0x880B, 0x880C, 
+  0x880D, 0x880E, 0x880F, 0x8810, 0x8811, 0x8812, 0x8814, 0x8817, 
+  0x8818, 0x8819, 0x881A, 0x881C, 0x881D, 0x881E, 0x881F, 0x8820, 
+  0x8823, 0x7A00, 0x606F, 0x5E0C, 0x6089, 0x819D, 0x5915, 0x60DC, 
+  0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280, 0x6A84, 0x88AD, 0x5E2D, 
+  0x4E60, 0x5AB3, 0x559C, 0x94E3, 0x6D17, 0x7CFB, 0x9699, 0x620F, 
+  0x7EC6, 0x778E, 0x867E, 0x5323, 0x971E, 0x8F96, 0x6687, 0x5CE1, 
+  0x4FA0, 0x72ED, 0x4E0B, 0x53A6, 0x590F, 0x5413, 0x6380, 0x9528, 
+  0x5148, 0x4ED9, 0x9C9C, 0x7EA4, 0x54B8, 0x8D24, 0x8854, 0x8237, 
+  0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E, 0x9669, 0x73B0, 0x732E, 
+  0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA, 0x9677, 0x9650, 0x7EBF, 
+  0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1, 0x8944, 0x6E58, 0x4E61, 
+  0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD, 0x4EAB, 0x9879, 0x5DF7, 
+  0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427, 0x785D, 0x9704, 0x524A, 
+  0x54EE, 0x56A3, 0x9500, 0x6D88, 0x5BB5, 0x6DC6, 0x6653,      0, 
+plane d0
+at 0x40
+  0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829, 0x882A, 0x882B, 
+  0x882C, 0x882D, 0x882E, 0x882F, 0x8830, 0x8831, 0x8833, 0x8834, 
+  0x8835, 0x8836, 0x8837, 0x8838, 0x883A, 0x883B, 0x883D, 0x883E, 
+  0x883F, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847, 0x8848, 0x8849, 
+  0x884A, 0x884B, 0x884E, 0x884F, 0x8850, 0x8851, 0x8852, 0x8853, 
+  0x8855, 0x8856, 0x8858, 0x885A, 0x885B, 0x885C, 0x885D, 0x885E, 
+  0x885F, 0x8860, 0x8866, 0x8867, 0x886A, 0x886D, 0x886F, 0x8871, 
+  0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879, 0x887A,      0, 
+  0x887B, 0x887C, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889, 0x888A, 
+  0x888C, 0x888E, 0x888F, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895, 
+  0x8897, 0x8898, 0x8899, 0x889A, 0x889B, 0x889D, 0x889E, 0x889F, 
+  0x88A0, 0x88A1, 0x88A3, 0x88A5, 0x88A6, 0x88A7, 0x88A8, 0x88A9, 
+  0x88AA, 0x5C0F, 0x5B5D, 0x6821, 0x8096, 0x5578, 0x7B11, 0x6548, 
+  0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, 0x534F, 0x631F, 0x643A, 
+  0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0, 0x5378, 0x87F9, 
+  0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF, 0x950C, 
+  0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845, 0x661F, 
+  0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62, 0x90A2, 
+  0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144, 0x51F6, 
+  0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE, 0x7F9E, 
+  0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, 0x7EE3, 0x589F, 0x620C, 
+  0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, 0x8BB8, 0x84C4, 0x9157, 
+  0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, 0x7D6E, 0x5A7F, 0x7EEA, 
+  0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB, 0x7384,      0, 
+plane d1
+at 0x40
+  0x88AC, 0x88AE, 0x88AF, 0x88B0, 0x88B2, 0x88B3, 0x88B4, 0x88B5, 
+  0x88B6, 0x88B8, 0x88B9, 0x88BA, 0x88BB, 0x88BD, 0x88BE, 0x88BF, 
+  0x88C0, 0x88C3, 0x88C4, 0x88C7, 0x88C8, 0x88CA, 0x88CB, 0x88CC, 
+  0x88CD, 0x88CF, 0x88D0, 0x88D1, 0x88D3, 0x88D6, 0x88D7, 0x88DA, 
+  0x88DB, 0x88DC, 0x88DD, 0x88DE, 0x88E0, 0x88E1, 0x88E6, 0x88E7, 
+  0x88E9, 0x88EA, 0x88EB, 0x88EC, 0x88ED, 0x88EE, 0x88EF, 0x88F2, 
+  0x88F5, 0x88F6, 0x88F7, 0x88FA, 0x88FB, 0x88FD, 0x88FF, 0x8900, 
+  0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908,      0, 
+  0x8909, 0x890B, 0x890C, 0x890D, 0x890E, 0x890F, 0x8911, 0x8914, 
+  0x8915, 0x8916, 0x8917, 0x8918, 0x891C, 0x891D, 0x891E, 0x891F, 
+  0x8920, 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929, 
+  0x892C, 0x892D, 0x892E, 0x892F, 0x8931, 0x8932, 0x8933, 0x8935, 
+  0x8937, 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66, 
+  0x7A74, 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2, 
+  0x5BFB, 0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A, 
+  0x8FC5, 0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD, 
+  0x7259, 0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, 0x54D1, 0x4E9A, 
+  0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, 0x76D0, 0x4E25, 
+  0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, 0x960E, 0x708E, 
+  0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, 0x5830, 
+  0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4, 
+  0x8C1A, 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C, 
+  0x4F6F, 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2, 
+  0x517B, 0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476,      0, 
+plane d2
+at 0x40
+  0x8938, 0x8939, 0x893A, 0x893B, 0x893C, 0x893D, 0x893E, 0x893F, 
+  0x8940, 0x8942, 0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 
+  0x894A, 0x894B, 0x894C, 0x894D, 0x894E, 0x894F, 0x8950, 0x8951, 
+  0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 
+  0x895A, 0x895B, 0x895C, 0x895D, 0x8960, 0x8961, 0x8962, 0x8963, 
+  0x8964, 0x8965, 0x8967, 0x8968, 0x8969, 0x896A, 0x896B, 0x896C, 
+  0x896D, 0x896E, 0x896F, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 
+  0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897A, 0x897C,      0, 
+  0x897D, 0x897E, 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988, 
+  0x8989, 0x898A, 0x898B, 0x898C, 0x898D, 0x898E, 0x898F, 0x8990, 
+  0x8991, 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, 0x8998, 
+  0x8999, 0x899A, 0x899B, 0x899C, 0x899D, 0x899E, 0x899F, 0x89A0, 
+  0x89A1, 0x6447, 0x5C27, 0x9065, 0x7A91, 0x8C23, 0x59DA, 0x54AC, 
+  0x8200, 0x836F, 0x8981, 0x8000, 0x6930, 0x564E, 0x8036, 0x7237, 
+  0x91CE, 0x51B6, 0x4E5F, 0x9875, 0x6396, 0x4E1A, 0x53F6, 0x66F3, 
+  0x814B, 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1, 
+  0x4F9D, 0x4F0A, 0x8863, 0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA, 
+  0x80F0, 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681, 
+  0x501A, 0x5DF2, 0x4E59, 0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613, 
+  0x9091, 0x5C79, 0x4EBF, 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, 
+  0x4EA6, 0x88D4, 0x610F, 0x6BC5, 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, 
+  0x8BE3, 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02, 0x7FFC, 0x7FCC, 0x7ECE, 
+  0x8335, 0x836B, 0x56E0, 0x6BB7, 0x97F3, 0x9634, 0x59FB, 0x541F, 
+  0x94F6, 0x6DEB, 0x5BC5, 0x996E, 0x5C39, 0x5F15, 0x9690,      0, 
+plane d3
+at 0x40
+  0x89A2, 0x89A3, 0x89A4, 0x89A5, 0x89A6, 0x89A7, 0x89A8, 0x89A9, 
+  0x89AA, 0x89AB, 0x89AC, 0x89AD, 0x89AE, 0x89AF, 0x89B0, 0x89B1, 
+  0x89B2, 0x89B3, 0x89B4, 0x89B5, 0x89B6, 0x89B7, 0x89B8, 0x89B9, 
+  0x89BA, 0x89BB, 0x89BC, 0x89BD, 0x89BE, 0x89BF, 0x89C0, 0x89C3, 
+  0x89CD, 0x89D3, 0x89D4, 0x89D5, 0x89D7, 0x89D8, 0x89D9, 0x89DB, 
+  0x89DD, 0x89DF, 0x89E0, 0x89E1, 0x89E2, 0x89E4, 0x89E7, 0x89E8, 
+  0x89E9, 0x89EA, 0x89EC, 0x89ED, 0x89EE, 0x89F0, 0x89F1, 0x89F2, 
+  0x89F4, 0x89F5, 0x89F6, 0x89F7, 0x89F8, 0x89F9, 0x89FA,      0, 
+  0x89FB, 0x89FC, 0x89FD, 0x89FE, 0x89FF, 0x8A01, 0x8A02, 0x8A03, 
+  0x8A04, 0x8A05, 0x8A06, 0x8A08, 0x8A09, 0x8A0A, 0x8A0B, 0x8A0C, 
+  0x8A0D, 0x8A0E, 0x8A0F, 0x8A10, 0x8A11, 0x8A12, 0x8A13, 0x8A14, 
+  0x8A15, 0x8A16, 0x8A17, 0x8A18, 0x8A19, 0x8A1A, 0x8A1B, 0x8A1C, 
+  0x8A1D, 0x5370, 0x82F1, 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28, 
+  0x83B9, 0x8424, 0x8425, 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8, 
+  0x5F71, 0x9896, 0x786C, 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3, 
+  0x75C8, 0x5EB8, 0x96CD, 0x8E0A, 0x86F9, 0x548F, 0x6CF3, 0x6D8C, 
+  0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D, 0x4F18, 0x60A0, 0x5FE7, 
+  0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9, 0x6CB9, 0x6E38, 0x9149, 
+  0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9, 0x8BF1, 0x53C8, 0x5E7C, 
+  0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206, 
+  0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685, 
+  0x4E88, 0x5A31, 0x96E8, 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED, 
+  0x7FBD, 0x7389, 0x57DF, 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB, 
+  0x5CEA, 0x5FA1, 0x6108, 0x6B32, 0x72F1, 0x80B2, 0x8A89,      0, 
+plane d4
+at 0x40
+  0x8A1E, 0x8A1F, 0x8A20, 0x8A21, 0x8A22, 0x8A23, 0x8A24, 0x8A25, 
+  0x8A26, 0x8A27, 0x8A28, 0x8A29, 0x8A2A, 0x8A2B, 0x8A2C, 0x8A2D, 
+  0x8A2E, 0x8A2F, 0x8A30, 0x8A31, 0x8A32, 0x8A33, 0x8A34, 0x8A35, 
+  0x8A36, 0x8A37, 0x8A38, 0x8A39, 0x8A3A, 0x8A3B, 0x8A3C, 0x8A3D, 
+  0x8A3F, 0x8A40, 0x8A41, 0x8A42, 0x8A43, 0x8A44, 0x8A45, 0x8A46, 
+  0x8A47, 0x8A49, 0x8A4A, 0x8A4B, 0x8A4C, 0x8A4D, 0x8A4E, 0x8A4F, 
+  0x8A50, 0x8A51, 0x8A52, 0x8A53, 0x8A54, 0x8A55, 0x8A56, 0x8A57, 
+  0x8A58, 0x8A59, 0x8A5A, 0x8A5B, 0x8A5C, 0x8A5D, 0x8A5E,      0, 
+  0x8A5F, 0x8A60, 0x8A61, 0x8A62, 0x8A63, 0x8A64, 0x8A65, 0x8A66, 
+  0x8A67, 0x8A68, 0x8A69, 0x8A6A, 0x8A6B, 0x8A6C, 0x8A6D, 0x8A6E, 
+  0x8A6F, 0x8A70, 0x8A71, 0x8A72, 0x8A73, 0x8A74, 0x8A75, 0x8A76, 
+  0x8A77, 0x8A78, 0x8A7A, 0x8A7B, 0x8A7C, 0x8A7D, 0x8A7E, 0x8A7F, 
+  0x8A80, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, 0x9A6D, 0x9E33, 
+  0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4, 0x8F95, 
+  0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC, 0x82D1, 
+  0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3, 0x94A5, 
+  0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91, 0x90E7, 
+  0x5300, 0x9668, 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655, 0x97F5, 
+  0x5B55, 0x531D, 0x7838, 0x6742, 0x683D, 0x54C9, 0x707E, 0x5BB0, 
+  0x8F7D, 0x518D, 0x5728, 0x54B1, 0x6512, 0x6682, 0x8D5E, 0x8D43, 
+  0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, 0x85FB, 0x67A3, 0x65E9, 
+  0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, 0x7076, 0x71E5, 
+  0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E, 0x618E, 
+  0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67,      0, 
+plane d5
+at 0x40
+  0x8A81, 0x8A82, 0x8A83, 0x8A84, 0x8A85, 0x8A86, 0x8A87, 0x8A88, 
+  0x8A8B, 0x8A8C, 0x8A8D, 0x8A8E, 0x8A8F, 0x8A90, 0x8A91, 0x8A92, 
+  0x8A94, 0x8A95, 0x8A96, 0x8A97, 0x8A98, 0x8A99, 0x8A9A, 0x8A9B, 
+  0x8A9C, 0x8A9D, 0x8A9E, 0x8A9F, 0x8AA0, 0x8AA1, 0x8AA2, 0x8AA3, 
+  0x8AA4, 0x8AA5, 0x8AA6, 0x8AA7, 0x8AA8, 0x8AA9, 0x8AAA, 0x8AAB, 
+  0x8AAC, 0x8AAD, 0x8AAE, 0x8AAF, 0x8AB0, 0x8AB1, 0x8AB2, 0x8AB3, 
+  0x8AB4, 0x8AB5, 0x8AB6, 0x8AB7, 0x8AB8, 0x8AB9, 0x8ABA, 0x8ABB, 
+  0x8ABC, 0x8ABD, 0x8ABE, 0x8ABF, 0x8AC0, 0x8AC1, 0x8AC2,      0, 
+  0x8AC3, 0x8AC4, 0x8AC5, 0x8AC6, 0x8AC7, 0x8AC8, 0x8AC9, 0x8ACA, 
+  0x8ACB, 0x8ACC, 0x8ACD, 0x8ACE, 0x8ACF, 0x8AD0, 0x8AD1, 0x8AD2, 
+  0x8AD3, 0x8AD4, 0x8AD5, 0x8AD6, 0x8AD7, 0x8AD8, 0x8AD9, 0x8ADA, 
+  0x8ADB, 0x8ADC, 0x8ADD, 0x8ADE, 0x8ADF, 0x8AE0, 0x8AE1, 0x8AE2, 
+  0x8AE3, 0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D, 
+  0x70B8, 0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8, 
+  0x77BB, 0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, 0x65A9, 0x8F97, 
+  0x5D2D, 0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7AD9, 0x6E5B, 
+  0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, 0x638C, 0x6DA8, 
+  0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, 0x969C, 
+  0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146, 
+  0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005, 
+  0x9517, 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504, 
+  0x7827, 0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA, 
+  0x9707, 0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81, 
+  0x72F0, 0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, 0x653F,      0, 
+plane d6
+at 0x40
+  0x8AE4, 0x8AE5, 0x8AE6, 0x8AE7, 0x8AE8, 0x8AE9, 0x8AEA, 0x8AEB, 
+  0x8AEC, 0x8AED, 0x8AEE, 0x8AEF, 0x8AF0, 0x8AF1, 0x8AF2, 0x8AF3, 
+  0x8AF4, 0x8AF5, 0x8AF6, 0x8AF7, 0x8AF8, 0x8AF9, 0x8AFA, 0x8AFB, 
+  0x8AFC, 0x8AFD, 0x8AFE, 0x8AFF, 0x8B00, 0x8B01, 0x8B02, 0x8B03, 
+  0x8B04, 0x8B05, 0x8B06, 0x8B08, 0x8B09, 0x8B0A, 0x8B0B, 0x8B0C, 
+  0x8B0D, 0x8B0E, 0x8B0F, 0x8B10, 0x8B11, 0x8B12, 0x8B13, 0x8B14, 
+  0x8B15, 0x8B16, 0x8B17, 0x8B18, 0x8B19, 0x8B1A, 0x8B1B, 0x8B1C, 
+  0x8B1D, 0x8B1E, 0x8B1F, 0x8B20, 0x8B21, 0x8B22, 0x8B23,      0, 
+  0x8B24, 0x8B25, 0x8B27, 0x8B28, 0x8B29, 0x8B2A, 0x8B2B, 0x8B2C, 
+  0x8B2D, 0x8B2E, 0x8B2F, 0x8B30, 0x8B31, 0x8B32, 0x8B33, 0x8B34, 
+  0x8B35, 0x8B36, 0x8B37, 0x8B38, 0x8B39, 0x8B3A, 0x8B3B, 0x8B3C, 
+  0x8B3D, 0x8B3E, 0x8B3F, 0x8B40, 0x8B41, 0x8B42, 0x8B43, 0x8B44, 
+  0x8B45, 0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, 0x679D, 0x652F, 
+  0x5431, 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7, 
+  0x804C, 0x76F4, 0x690D, 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, 
+  0x6307, 0x6B62, 0x8DBE, 0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A, 
+  0x63B7, 0x81F3, 0x81F4, 0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A, 
+  0x79E9, 0x7A1A, 0x8D28, 0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92, 
+  0x4E2D, 0x76C5, 0x5FE0, 0x949F, 0x8877, 0x7EC8, 0x79CD, 0x80BF, 
+  0x91CD, 0x4EF2, 0x4F17, 0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8BCC, 
+  0x7CA5, 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1, 0x5B99, 0x663C, 
+  0x9AA4, 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, 0x8BF8, 0x8BDB, 
+  0x9010, 0x7AF9, 0x70DB, 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B, 
+  0x8457, 0x67F1, 0x52A9, 0x86C0, 0x8D2E, 0x94F8, 0x7B51,      0, 
+plane d7
+at 0x40
+  0x8B46, 0x8B47, 0x8B48, 0x8B49, 0x8B4A, 0x8B4B, 0x8B4C, 0x8B4D, 
+  0x8B4E, 0x8B4F, 0x8B50, 0x8B51, 0x8B52, 0x8B53, 0x8B54, 0x8B55, 
+  0x8B56, 0x8B57, 0x8B58, 0x8B59, 0x8B5A, 0x8B5B, 0x8B5C, 0x8B5D, 
+  0x8B5E, 0x8B5F, 0x8B60, 0x8B61, 0x8B62, 0x8B63, 0x8B64, 0x8B65, 
+  0x8B67, 0x8B68, 0x8B69, 0x8B6A, 0x8B6B, 0x8B6D, 0x8B6E, 0x8B6F, 
+  0x8B70, 0x8B71, 0x8B72, 0x8B73, 0x8B74, 0x8B75, 0x8B76, 0x8B77, 
+  0x8B78, 0x8B79, 0x8B7A, 0x8B7B, 0x8B7C, 0x8B7D, 0x8B7E, 0x8B7F, 
+  0x8B80, 0x8B81, 0x8B82, 0x8B83, 0x8B84, 0x8B85, 0x8B86,      0, 
+  0x8B87, 0x8B88, 0x8B89, 0x8B8A, 0x8B8B, 0x8B8C, 0x8B8D, 0x8B8E, 
+  0x8B8F, 0x8B90, 0x8B91, 0x8B92, 0x8B93, 0x8B94, 0x8B95, 0x8B96, 
+  0x8B97, 0x8B98, 0x8B99, 0x8B9A, 0x8B9B, 0x8B9C, 0x8B9D, 0x8B9E, 
+  0x8B9F, 0x8BAC, 0x8BB1, 0x8BBB, 0x8BC7, 0x8BD0, 0x8BEA, 0x8C09, 
+  0x8C1E, 0x4F4F, 0x6CE8, 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD, 
+  0x4E13, 0x7816, 0x8F6C, 0x64B0, 0x8D5A, 0x7BC6, 0x6869, 0x5E84, 
+  0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6, 0x690E, 0x9525, 0x8FFD, 
+  0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6, 0x6349, 0x62D9, 0x5353, 
+  0x684C, 0x7422, 0x8301, 0x914C, 0x5544, 0x7740, 0x707C, 0x6D4A, 
+  0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B, 
+  0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA, 0x6E0D, 0x5B57, 0x9B03, 
+  0x68D5, 0x8E2A, 0x5B97, 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70, 
+  0x594F, 0x63CD, 0x79DF, 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5, 
+  0x963B, 0x7EC4, 0x94BB, 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A, 
+  0x5C0A, 0x9075, 0x6628, 0x5DE6, 0x4F50, 0x67DE, 0x505A, 0x4F5C, 
+  0x5750, 0x5EA7,      0,      0,      0,      0,      0,      0, 
+plane d8
+at 0x40
+  0x8C38, 0x8C39, 0x8C3A, 0x8C3B, 0x8C3C, 0x8C3D, 0x8C3E, 0x8C3F, 
+  0x8C40, 0x8C42, 0x8C43, 0x8C44, 0x8C45, 0x8C48, 0x8C4A, 0x8C4B, 
+  0x8C4D, 0x8C4E, 0x8C4F, 0x8C50, 0x8C51, 0x8C52, 0x8C53, 0x8C54, 
+  0x8C56, 0x8C57, 0x8C58, 0x8C59, 0x8C5B, 0x8C5C, 0x8C5D, 0x8C5E, 
+  0x8C5F, 0x8C60, 0x8C63, 0x8C64, 0x8C65, 0x8C66, 0x8C67, 0x8C68, 
+  0x8C69, 0x8C6C, 0x8C6D, 0x8C6E, 0x8C6F, 0x8C70, 0x8C71, 0x8C72, 
+  0x8C74, 0x8C75, 0x8C76, 0x8C77, 0x8C7B, 0x8C7C, 0x8C7D, 0x8C7E, 
+  0x8C7F, 0x8C80, 0x8C81, 0x8C83, 0x8C84, 0x8C86, 0x8C87,      0, 
+  0x8C88, 0x8C8B, 0x8C8D, 0x8C8E, 0x8C8F, 0x8C90, 0x8C91, 0x8C92, 
+  0x8C93, 0x8C95, 0x8C96, 0x8C97, 0x8C99, 0x8C9A, 0x8C9B, 0x8C9C, 
+  0x8C9D, 0x8C9E, 0x8C9F, 0x8CA0, 0x8CA1, 0x8CA2, 0x8CA3, 0x8CA4, 
+  0x8CA5, 0x8CA6, 0x8CA7, 0x8CA8, 0x8CA9, 0x8CAA, 0x8CAB, 0x8CAC, 
+  0x8CAD, 0x4E8D, 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345, 0x4E15, 
+  0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA, 0x4E3F, 
+  0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10, 0x56DF, 0x80E4, 
+  0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10, 0x4E5C, 
+  0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4, 0x538D, 
+  0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A, 0x53F5, 
+  0x5326, 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202, 0x5208, 
+  0x520E, 0x522D, 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, 0x5261, 
+  0x525C, 0x84AF, 0x527D, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 
+  0x7F54, 0x4EBB, 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB, 
+  0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x4F25, 0x4F27, 
+  0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A, 0x4F5D,      0, 
+plane d9
+at 0x40
+  0x8CAE, 0x8CAF, 0x8CB0, 0x8CB1, 0x8CB2, 0x8CB3, 0x8CB4, 0x8CB5, 
+  0x8CB6, 0x8CB7, 0x8CB8, 0x8CB9, 0x8CBA, 0x8CBB, 0x8CBC, 0x8CBD, 
+  0x8CBE, 0x8CBF, 0x8CC0, 0x8CC1, 0x8CC2, 0x8CC3, 0x8CC4, 0x8CC5, 
+  0x8CC6, 0x8CC7, 0x8CC8, 0x8CC9, 0x8CCA, 0x8CCB, 0x8CCC, 0x8CCD, 
+  0x8CCE, 0x8CCF, 0x8CD0, 0x8CD1, 0x8CD2, 0x8CD3, 0x8CD4, 0x8CD5, 
+  0x8CD6, 0x8CD7, 0x8CD8, 0x8CD9, 0x8CDA, 0x8CDB, 0x8CDC, 0x8CDD, 
+  0x8CDE, 0x8CDF, 0x8CE0, 0x8CE1, 0x8CE2, 0x8CE3, 0x8CE4, 0x8CE5, 
+  0x8CE6, 0x8CE7, 0x8CE8, 0x8CE9, 0x8CEA, 0x8CEB, 0x8CEC,      0, 
+  0x8CED, 0x8CEE, 0x8CEF, 0x8CF0, 0x8CF1, 0x8CF2, 0x8CF3, 0x8CF4, 
+  0x8CF5, 0x8CF6, 0x8CF7, 0x8CF8, 0x8CF9, 0x8CFA, 0x8CFB, 0x8CFC, 
+  0x8CFD, 0x8CFE, 0x8CFF, 0x8D00, 0x8D01, 0x8D02, 0x8D03, 0x8D04, 
+  0x8D05, 0x8D06, 0x8D07, 0x8D08, 0x8D09, 0x8D0A, 0x8D0B, 0x8D0C, 
+  0x8D0D, 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91, 
+  0x4F89, 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, 
+  0x4F94, 0x4FE6, 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, 
+  0x4FD1, 0x4FDF, 0x4FF8, 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F, 
+  0x502E, 0x502D, 0x4FFE, 0x501C, 0x500C, 0x5025, 0x5028, 0x507E, 
+  0x5043, 0x5055, 0x5048, 0x504E, 0x506C, 0x507B, 0x50A5, 0x50A7, 
+  0x50A9, 0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, 0x50E6, 0x50EE, 
+  0x5107, 0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, 0x9FA0, 
+  0x6C46, 0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914, 
+  0x52F9, 0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0, 
+  0x5156, 0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980, 
+  0x5B34, 0x8803, 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC,      0, 
+plane da
+at 0x40
+  0x8D0E, 0x8D0F, 0x8D10, 0x8D11, 0x8D12, 0x8D13, 0x8D14, 0x8D15, 
+  0x8D16, 0x8D17, 0x8D18, 0x8D19, 0x8D1A, 0x8D1B, 0x8D1C, 0x8D20, 
+  0x8D51, 0x8D52, 0x8D57, 0x8D5F, 0x8D65, 0x8D68, 0x8D69, 0x8D6A, 
+  0x8D6C, 0x8D6E, 0x8D6F, 0x8D71, 0x8D72, 0x8D78, 0x8D79, 0x8D7A, 
+  0x8D7B, 0x8D7C, 0x8D7D, 0x8D7E, 0x8D7F, 0x8D80, 0x8D82, 0x8D83, 
+  0x8D86, 0x8D87, 0x8D88, 0x8D89, 0x8D8C, 0x8D8D, 0x8D8E, 0x8D8F, 
+  0x8D90, 0x8D92, 0x8D93, 0x8D95, 0x8D96, 0x8D97, 0x8D98, 0x8D99, 
+  0x8D9A, 0x8D9B, 0x8D9C, 0x8D9D, 0x8D9E, 0x8DA0, 0x8DA1,      0, 
+  0x8DA2, 0x8DA4, 0x8DA5, 0x8DA6, 0x8DA7, 0x8DA8, 0x8DA9, 0x8DAA, 
+  0x8DAB, 0x8DAC, 0x8DAD, 0x8DAE, 0x8DAF, 0x8DB0, 0x8DB2, 0x8DB6, 
+  0x8DB7, 0x8DB9, 0x8DBB, 0x8DBD, 0x8DC0, 0x8DC1, 0x8DC2, 0x8DC5, 
+  0x8DC7, 0x8DC8, 0x8DC9, 0x8DCA, 0x8DCD, 0x8DD0, 0x8DD2, 0x8DD3, 
+  0x8DD4, 0x51C7, 0x5196, 0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7, 
+  0x8BAA, 0x8BB4, 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF, 
+  0x8BCE, 0x8BD2, 0x8BD3, 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC, 
+  0x8BDF, 0x8BE0, 0x8BE4, 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, 
+  0x8BF6, 0x8BF9, 0x8BFC, 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, 
+  0x8C0C, 0x8C0F, 0x8C11, 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, 
+  0x8C1B, 0x8C18, 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, 
+  0x8C2A, 0x8C2B, 0x8C2E, 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, 
+  0x5369, 0x537A, 0x961D, 0x9622, 0x9621, 0x9631, 0x962A, 0x963D, 
+  0x963C, 0x9642, 0x9649, 0x9654, 0x965F, 0x9667, 0x966C, 0x9672, 
+  0x9674, 0x9688, 0x968D, 0x9697, 0x96B0, 0x9097, 0x909B, 0x909D, 
+  0x9099, 0x90AC, 0x90A1, 0x90B4, 0x90B3, 0x90B6, 0x90BA,      0, 
+plane db
+at 0x40
+  0x8DD5, 0x8DD8, 0x8DD9, 0x8DDC, 0x8DE0, 0x8DE1, 0x8DE2, 0x8DE5, 
+  0x8DE6, 0x8DE7, 0x8DE9, 0x8DED, 0x8DEE, 0x8DF0, 0x8DF1, 0x8DF2, 
+  0x8DF4, 0x8DF6, 0x8DFC, 0x8DFE, 0x8DFF, 0x8E00, 0x8E01, 0x8E02, 
+  0x8E03, 0x8E04, 0x8E06, 0x8E07, 0x8E08, 0x8E0B, 0x8E0D, 0x8E0E, 
+  0x8E10, 0x8E11, 0x8E12, 0x8E13, 0x8E15, 0x8E16, 0x8E17, 0x8E18, 
+  0x8E19, 0x8E1A, 0x8E1B, 0x8E1C, 0x8E20, 0x8E21, 0x8E24, 0x8E25, 
+  0x8E26, 0x8E27, 0x8E28, 0x8E2B, 0x8E2D, 0x8E30, 0x8E32, 0x8E33, 
+  0x8E34, 0x8E36, 0x8E37, 0x8E38, 0x8E3B, 0x8E3C, 0x8E3E,      0, 
+  0x8E3F, 0x8E43, 0x8E45, 0x8E46, 0x8E4C, 0x8E4D, 0x8E4E, 0x8E4F, 
+  0x8E50, 0x8E53, 0x8E54, 0x8E55, 0x8E56, 0x8E57, 0x8E58, 0x8E5A, 
+  0x8E5B, 0x8E5C, 0x8E5D, 0x8E5E, 0x8E5F, 0x8E60, 0x8E61, 0x8E62, 
+  0x8E63, 0x8E64, 0x8E65, 0x8E67, 0x8E68, 0x8E6A, 0x8E6B, 0x8E6E, 
+  0x8E71, 0x90B8, 0x90B0, 0x90CF, 0x90C5, 0x90BE, 0x90D0, 0x90C4, 
+  0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC, 0x90D7, 0x90DB, 0x90EB, 
+  0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E, 0x9123, 0x9131, 0x912F, 
+  0x9139, 0x9143, 0x9146, 0x520D, 0x5942, 0x52A2, 0x52AC, 0x52AD, 
+  0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, 0x53DF, 0x71EE, 0x77CD, 
+  0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, 0x5F01, 0x755A, 0x5DEF, 
+  0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, 0x58C5, 0x58D1, 0x5729, 
+  0x572C, 0x572A, 0x5733, 0x5739, 0x572E, 0x572F, 0x575C, 0x573B, 
+  0x5742, 0x5769, 0x5785, 0x576B, 0x5786, 0x577C, 0x577B, 0x5768, 
+  0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4, 0x578C, 0x57B2, 0x57CF, 
+  0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5, 0x57D8, 0x57DA, 0x57D9, 
+  0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8, 0x57E4, 0x57DD,      0, 
+plane dc
+at 0x40
+  0x8E73, 0x8E75, 0x8E77, 0x8E78, 0x8E79, 0x8E7A, 0x8E7B, 0x8E7D, 
+  0x8E7E, 0x8E80, 0x8E82, 0x8E83, 0x8E84, 0x8E86, 0x8E88, 0x8E89, 
+  0x8E8A, 0x8E8B, 0x8E8C, 0x8E8D, 0x8E8E, 0x8E91, 0x8E92, 0x8E93, 
+  0x8E95, 0x8E96, 0x8E97, 0x8E98, 0x8E99, 0x8E9A, 0x8E9B, 0x8E9D, 
+  0x8E9F, 0x8EA0, 0x8EA1, 0x8EA2, 0x8EA3, 0x8EA4, 0x8EA5, 0x8EA6, 
+  0x8EA7, 0x8EA8, 0x8EA9, 0x8EAA, 0x8EAD, 0x8EAE, 0x8EB0, 0x8EB1, 
+  0x8EB3, 0x8EB4, 0x8EB5, 0x8EB6, 0x8EB7, 0x8EB8, 0x8EB9, 0x8EBB, 
+  0x8EBC, 0x8EBD, 0x8EBE, 0x8EBF, 0x8EC0, 0x8EC1, 0x8EC2,      0, 
+  0x8EC3, 0x8EC4, 0x8EC5, 0x8EC6, 0x8EC7, 0x8EC8, 0x8EC9, 0x8ECA, 
+  0x8ECB, 0x8ECC, 0x8ECD, 0x8ECF, 0x8ED0, 0x8ED1, 0x8ED2, 0x8ED3, 
+  0x8ED4, 0x8ED5, 0x8ED6, 0x8ED7, 0x8ED8, 0x8ED9, 0x8EDA, 0x8EDB, 
+  0x8EDC, 0x8EDD, 0x8EDE, 0x8EDF, 0x8EE0, 0x8EE1, 0x8EE2, 0x8EE3, 
+  0x8EE4, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E, 0x5819, 
+  0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, 0x5880, 
+  0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, 0x828A, 
+  0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB, 0x82B8, 
+  0x82BE, 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE, 
+  0x82CB, 0x82CC, 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F, 
+  0x82C4, 0x82CE, 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x830F, 
+  0x8307, 0x82DC, 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB, 0x82D3, 
+  0x8311, 0x831A, 0x8306, 0x8314, 0x8315, 0x82E0, 0x82D5, 0x831C, 
+  0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, 0x8334, 0x8331, 
+  0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F, 0x8340, 
+  0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365,      0, 
+plane dd
+at 0x40
+  0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0x8EE9, 0x8EEA, 0x8EEB, 0x8EEC, 
+  0x8EED, 0x8EEE, 0x8EEF, 0x8EF0, 0x8EF1, 0x8EF2, 0x8EF3, 0x8EF4, 
+  0x8EF5, 0x8EF6, 0x8EF7, 0x8EF8, 0x8EF9, 0x8EFA, 0x8EFB, 0x8EFC, 
+  0x8EFD, 0x8EFE, 0x8EFF, 0x8F00, 0x8F01, 0x8F02, 0x8F03, 0x8F04, 
+  0x8F05, 0x8F06, 0x8F07, 0x8F08, 0x8F09, 0x8F0A, 0x8F0B, 0x8F0C, 
+  0x8F0D, 0x8F0E, 0x8F0F, 0x8F10, 0x8F11, 0x8F12, 0x8F13, 0x8F14, 
+  0x8F15, 0x8F16, 0x8F17, 0x8F18, 0x8F19, 0x8F1A, 0x8F1B, 0x8F1C, 
+  0x8F1D, 0x8F1E, 0x8F1F, 0x8F20, 0x8F21, 0x8F22, 0x8F23,      0, 
+  0x8F24, 0x8F25, 0x8F26, 0x8F27, 0x8F28, 0x8F29, 0x8F2A, 0x8F2B, 
+  0x8F2C, 0x8F2D, 0x8F2E, 0x8F2F, 0x8F30, 0x8F31, 0x8F32, 0x8F33, 
+  0x8F34, 0x8F35, 0x8F36, 0x8F37, 0x8F38, 0x8F39, 0x8F3A, 0x8F3B, 
+  0x8F3C, 0x8F3D, 0x8F3E, 0x8F3F, 0x8F40, 0x8F41, 0x8F42, 0x8F43, 
+  0x8F44, 0x8368, 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E, 
+  0x83B0, 0x8378, 0x83B3, 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C, 
+  0x8385, 0x837C, 0x83B6, 0x83A9, 0x837D, 0x83B8, 0x837B, 0x8398, 
+  0x839E, 0x83A8, 0x83BA, 0x83BC, 0x83C1, 0x8401, 0x83E5, 0x83D8, 
+  0x5807, 0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6, 0x841C, 0x8438, 
+  0x8411, 0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8, 0x83F9, 
+  0x83EA, 0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451, 
+  0x845A, 0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478, 
+  0x843C, 0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D, 
+  0x84C1, 0x84CD, 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF, 
+  0x84BA, 0x84E0, 0x84A1, 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3, 
+  0x850C, 0x750D, 0x8538, 0x84F0, 0x8539, 0x851F, 0x853A,      0, 
+plane de
+at 0x40
+  0x8F45, 0x8F46, 0x8F47, 0x8F48, 0x8F49, 0x8F4A, 0x8F4B, 0x8F4C, 
+  0x8F4D, 0x8F4E, 0x8F4F, 0x8F50, 0x8F51, 0x8F52, 0x8F53, 0x8F54, 
+  0x8F55, 0x8F56, 0x8F57, 0x8F58, 0x8F59, 0x8F5A, 0x8F5B, 0x8F5C, 
+  0x8F5D, 0x8F5E, 0x8F5F, 0x8F60, 0x8F61, 0x8F62, 0x8F63, 0x8F64, 
+  0x8F65, 0x8F6A, 0x8F80, 0x8F8C, 0x8F92, 0x8F9D, 0x8FA0, 0x8FA1, 
+  0x8FA2, 0x8FA4, 0x8FA5, 0x8FA6, 0x8FA7, 0x8FAA, 0x8FAC, 0x8FAD, 
+  0x8FAE, 0x8FAF, 0x8FB2, 0x8FB3, 0x8FB4, 0x8FB5, 0x8FB7, 0x8FB8, 
+  0x8FBA, 0x8FBB, 0x8FBC, 0x8FBF, 0x8FC0, 0x8FC3, 0x8FC6,      0, 
+  0x8FC9, 0x8FCA, 0x8FCB, 0x8FCC, 0x8FCD, 0x8FCF, 0x8FD2, 0x8FD6, 
+  0x8FD7, 0x8FDA, 0x8FE0, 0x8FE1, 0x8FE3, 0x8FE7, 0x8FEC, 0x8FEF, 
+  0x8FF1, 0x8FF2, 0x8FF4, 0x8FF5, 0x8FF6, 0x8FFA, 0x8FFB, 0x8FFC, 
+  0x8FFE, 0x8FFF, 0x9007, 0x9008, 0x900C, 0x900E, 0x9013, 0x9015, 
+  0x9018, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, 0x8548, 0x8568, 
+  0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4, 
+  0x85A8, 0x8587, 0x858F, 0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9, 
+  0x85B7, 0x85B0, 0x85D3, 0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605, 
+  0x8629, 0x8616, 0x863C, 0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037, 
+  0x5955, 0x595A, 0x5958, 0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34, 
+  0x624C, 0x626A, 0x629F, 0x62BB, 0x62CA, 0x62DA, 0x62D7, 0x62EE, 
+  0x6322, 0x62F6, 0x6339, 0x634B, 0x6343, 0x63AD, 0x63F6, 0x6371, 
+  0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A, 0x6369, 0x63AE, 
+  0x63BC, 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, 0x63DE, 0x63CE, 
+  0x6452, 0x63C6, 0x63BE, 0x6445, 0x6441, 0x640B, 0x641B, 0x6420, 
+  0x640C, 0x6426, 0x6421, 0x645E, 0x6484, 0x646D, 0x6496,      0, 
+plane df
+at 0x40
+  0x9019, 0x901C, 0x9023, 0x9024, 0x9025, 0x9027, 0x9028, 0x9029, 
+  0x902A, 0x902B, 0x902C, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034, 
+  0x9037, 0x9039, 0x903A, 0x903D, 0x903F, 0x9040, 0x9043, 0x9045, 
+  0x9046, 0x9048, 0x9049, 0x904A, 0x904B, 0x904C, 0x904E, 0x9054, 
+  0x9055, 0x9056, 0x9059, 0x905A, 0x905C, 0x905D, 0x905E, 0x905F, 
+  0x9060, 0x9061, 0x9064, 0x9066, 0x9067, 0x9069, 0x906A, 0x906B, 
+  0x906C, 0x906F, 0x9070, 0x9071, 0x9072, 0x9073, 0x9076, 0x9077, 
+  0x9078, 0x9079, 0x907A, 0x907B, 0x907C, 0x907E, 0x9081,      0, 
+  0x9084, 0x9085, 0x9086, 0x9087, 0x9089, 0x908A, 0x908C, 0x908D, 
+  0x908E, 0x908F, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909A, 
+  0x909C, 0x909E, 0x909F, 0x90A0, 0x90A4, 0x90A5, 0x90A7, 0x90A8, 
+  0x90A9, 0x90AB, 0x90AD, 0x90B2, 0x90B7, 0x90BC, 0x90BD, 0x90BF, 
+  0x90C0, 0x647A, 0x64B7, 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0, 
+  0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525, 0x652E, 0x5F0B, 0x5FD2, 
+  0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, 0x53E9, 0x53E8, 0x53FB, 
+  0x5412, 0x5416, 0x5406, 0x544B, 0x5452, 0x5453, 0x5454, 0x5456, 
+  0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 
+  0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484, 0x5476, 0x5466, 
+  0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7, 0x54A6, 
+  0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC, 
+  0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF, 
+  0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522, 
+  0x5523, 0x550F, 0x5511, 0x5527, 0x552A, 0x5567, 0x558F, 0x55B5, 
+  0x5549, 0x556D, 0x5541, 0x5555, 0x553F, 0x5550, 0x553C,      0, 
+plane e0
+at 0x40
+  0x90C2, 0x90C3, 0x90C6, 0x90C8, 0x90C9, 0x90CB, 0x90CC, 0x90CD, 
+  0x90D2, 0x90D4, 0x90D5, 0x90D6, 0x90D8, 0x90D9, 0x90DA, 0x90DE, 
+  0x90DF, 0x90E0, 0x90E3, 0x90E4, 0x90E5, 0x90E9, 0x90EA, 0x90EC, 
+  0x90EE, 0x90F0, 0x90F1, 0x90F2, 0x90F3, 0x90F5, 0x90F6, 0x90F7, 
+  0x90F9, 0x90FA, 0x90FB, 0x90FC, 0x90FF, 0x9100, 0x9101, 0x9103, 
+  0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910A, 0x910B, 0x910C, 
+  0x910D, 0x910E, 0x910F, 0x9110, 0x9111, 0x9112, 0x9113, 0x9114, 
+  0x9115, 0x9116, 0x9117, 0x9118, 0x911A, 0x911B, 0x911C,      0, 
+  0x911D, 0x911F, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126, 0x9127, 
+  0x9128, 0x9129, 0x912A, 0x912B, 0x912C, 0x912D, 0x912E, 0x9130, 
+  0x9132, 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x913A, 
+  0x913B, 0x913C, 0x913D, 0x913E, 0x913F, 0x9140, 0x9141, 0x9142, 
+  0x9144, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 
+  0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581, 
+  0x559F, 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE, 
+  0x5594, 0x5599, 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x55EB, 
+  0x55EC, 0x55D4, 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2, 
+  0x55F3, 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94, 0x561E, 
+  0x5608, 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600, 0x5627, 
+  0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, 0x5659, 
+  0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, 0x567B, 
+  0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1, 
+  0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C, 
+  0x5E0F, 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C,      0, 
+plane e1
+at 0x40
+  0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156, 
+  0x9158, 0x9159, 0x915B, 0x915C, 0x915F, 0x9160, 0x9166, 0x9167, 
+  0x9168, 0x916B, 0x916D, 0x9173, 0x917A, 0x917B, 0x917C, 0x9180, 
+  0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918A, 0x918E, 
+  0x918F, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199, 
+  0x919C, 0x919D, 0x919E, 0x919F, 0x91A0, 0x91A1, 0x91A4, 0x91A5, 
+  0x91A6, 0x91A7, 0x91A8, 0x91A9, 0x91AB, 0x91AC, 0x91B0, 0x91B1, 
+  0x91B2, 0x91B3, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BB,      0, 
+  0x91BC, 0x91BD, 0x91BE, 0x91BF, 0x91C0, 0x91C1, 0x91C2, 0x91C3, 
+  0x91C4, 0x91C5, 0x91C6, 0x91C8, 0x91CB, 0x91D0, 0x91D2, 0x91D3, 
+  0x91D4, 0x91D5, 0x91D6, 0x91D7, 0x91D8, 0x91D9, 0x91DA, 0x91DB, 
+  0x91DD, 0x91DE, 0x91DF, 0x91E0, 0x91E1, 0x91E2, 0x91E3, 0x91E4, 
+  0x91E5, 0x5E37, 0x5E44, 0x5E54, 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 
+  0x5C7A, 0x5C8D, 0x5C90, 0x5C96, 0x5C88, 0x5C98, 0x5C99, 0x5C91, 
+  0x5C9A, 0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1, 
+  0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5, 
+  0x5D02, 0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, 
+  0x5D1B, 0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 
+  0x5D5D, 0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99, 
+  0x5D9D, 0x8C73, 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87, 
+  0x5F89, 0x5F8C, 0x5F95, 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 
+  0x5FBC, 0x8862, 0x5F61, 0x72AD, 0x72B0, 0x72B4, 0x72B7, 0x72B8, 
+  0x72C3, 0x72C1, 0x72CE, 0x72CD, 0x72D2, 0x72E8, 0x72EF, 0x72E9, 
+  0x72F2, 0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303, 0x72FA,      0, 
+plane e2
+at 0x40
+  0x91E6, 0x91E7, 0x91E8, 0x91E9, 0x91EA, 0x91EB, 0x91EC, 0x91ED, 
+  0x91EE, 0x91EF, 0x91F0, 0x91F1, 0x91F2, 0x91F3, 0x91F4, 0x91F5, 
+  0x91F6, 0x91F7, 0x91F8, 0x91F9, 0x91FA, 0x91FB, 0x91FC, 0x91FD, 
+  0x91FE, 0x91FF, 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205, 
+  0x9206, 0x9207, 0x9208, 0x9209, 0x920A, 0x920B, 0x920C, 0x920D, 
+  0x920E, 0x920F, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215, 
+  0x9216, 0x9217, 0x9218, 0x9219, 0x921A, 0x921B, 0x921C, 0x921D, 
+  0x921E, 0x921F, 0x9220, 0x9221, 0x9222, 0x9223, 0x9224,      0, 
+  0x9225, 0x9226, 0x9227, 0x9228, 0x9229, 0x922A, 0x922B, 0x922C, 
+  0x922D, 0x922E, 0x922F, 0x9230, 0x9231, 0x9232, 0x9233, 0x9234, 
+  0x9235, 0x9236, 0x9237, 0x9238, 0x9239, 0x923A, 0x923B, 0x923C, 
+  0x923D, 0x923E, 0x923F, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 
+  0x9245, 0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, 0x731E, 0x731D, 
+  0x7315, 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, 0x7331, 0x7350, 
+  0x734D, 0x7357, 0x7360, 0x736C, 0x736F, 0x737E, 0x821B, 0x5925, 
+  0x98E7, 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996A, 
+  0x996B, 0x996C, 0x9974, 0x9977, 0x997D, 0x9980, 0x9984, 0x9987, 
+  0x998A, 0x998D, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5E80, 
+  0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, 0x5EB5, 0x5EBE, 
+  0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, 0x81BA, 
+  0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1, 
+  0x5FE4, 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019, 
+  0x6035, 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, 0x602B, 0x600A, 
+  0x603F, 0x6021, 0x6078, 0x6079, 0x607B, 0x607A, 0x6042,      0, 
+plane e3
+at 0x40
+  0x9246, 0x9247, 0x9248, 0x9249, 0x924A, 0x924B, 0x924C, 0x924D, 
+  0x924E, 0x924F, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 
+  0x9256, 0x9257, 0x9258, 0x9259, 0x925A, 0x925B, 0x925C, 0x925D, 
+  0x925E, 0x925F, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 
+  0x9266, 0x9267, 0x9268, 0x9269, 0x926A, 0x926B, 0x926C, 0x926D, 
+  0x926E, 0x926F, 0x9270, 0x9271, 0x9272, 0x9273, 0x9275, 0x9276, 
+  0x9277, 0x9278, 0x9279, 0x927A, 0x927B, 0x927C, 0x927D, 0x927E, 
+  0x927F, 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285,      0, 
+  0x9286, 0x9287, 0x9288, 0x9289, 0x928A, 0x928B, 0x928C, 0x928D, 
+  0x928F, 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296, 
+  0x9297, 0x9298, 0x9299, 0x929A, 0x929B, 0x929C, 0x929D, 0x929E, 
+  0x929F, 0x92A0, 0x92A1, 0x92A2, 0x92A3, 0x92A4, 0x92A5, 0x92A6, 
+  0x92A7, 0x606A, 0x607D, 0x6096, 0x609A, 0x60AD, 0x609D, 0x6083, 
+  0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, 0x60B1, 0x60DD, 0x60D8, 
+  0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60F4, 
+  0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7, 
+  0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x95E9, 0x95EB, 0x95F1, 
+  0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603, 0x9604, 0x9606, 
+  0x9608, 0x960A, 0x960B, 0x960C, 0x960D, 0x960F, 0x9612, 0x9615, 
+  0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35, 
+  0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85, 0x6C90, 0x6C94, 0x6C8C, 
+  0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, 0x6CA9, 0x6CD0, 0x6CD4, 
+  0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2, 0x6CE0, 0x6CD6, 
+  0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE,      0, 
+plane e4
+at 0x40
+  0x92A8, 0x92A9, 0x92AA, 0x92AB, 0x92AC, 0x92AD, 0x92AF, 0x92B0, 
+  0x92B1, 0x92B2, 0x92B3, 0x92B4, 0x92B5, 0x92B6, 0x92B7, 0x92B8, 
+  0x92B9, 0x92BA, 0x92BB, 0x92BC, 0x92BD, 0x92BE, 0x92BF, 0x92C0, 
+  0x92C1, 0x92C2, 0x92C3, 0x92C4, 0x92C5, 0x92C6, 0x92C7, 0x92C9, 
+  0x92CA, 0x92CB, 0x92CC, 0x92CD, 0x92CE, 0x92CF, 0x92D0, 0x92D1, 
+  0x92D2, 0x92D3, 0x92D4, 0x92D5, 0x92D6, 0x92D7, 0x92D8, 0x92D9, 
+  0x92DA, 0x92DB, 0x92DC, 0x92DD, 0x92DE, 0x92DF, 0x92E0, 0x92E1, 
+  0x92E2, 0x92E3, 0x92E4, 0x92E5, 0x92E6, 0x92E7, 0x92E8,      0, 
+  0x92E9, 0x92EA, 0x92EB, 0x92EC, 0x92ED, 0x92EE, 0x92EF, 0x92F0, 
+  0x92F1, 0x92F2, 0x92F3, 0x92F4, 0x92F5, 0x92F6, 0x92F7, 0x92F8, 
+  0x92F9, 0x92FA, 0x92FB, 0x92FC, 0x92FD, 0x92FE, 0x92FF, 0x9300, 
+  0x9301, 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308, 
+  0x9309, 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04, 
+  0x6D19, 0x6D0E, 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F, 
+  0x6D52, 0x6D54, 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E, 
+  0x6D93, 0x6D94, 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7, 
+  0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6, 0x6DDD, 
+  0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E, 0x6E4E, 
+  0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, 0x6E25, 
+  0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5, 
+  0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F, 
+  0x6EC2, 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9, 
+  0x6F2F, 0x6F36, 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89, 
+  0x6F8D, 0x6F8C, 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1,      0, 
+plane e5
+at 0x40
+  0x930A, 0x930B, 0x930C, 0x930D, 0x930E, 0x930F, 0x9310, 0x9311, 
+  0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319, 
+  0x931A, 0x931B, 0x931C, 0x931D, 0x931E, 0x931F, 0x9320, 0x9321, 
+  0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329, 
+  0x932A, 0x932B, 0x932C, 0x932D, 0x932E, 0x932F, 0x9330, 0x9331, 
+  0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339, 
+  0x933A, 0x933B, 0x933C, 0x933D, 0x933F, 0x9340, 0x9341, 0x9342, 
+  0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349,      0, 
+  0x934A, 0x934B, 0x934C, 0x934D, 0x934E, 0x934F, 0x9350, 0x9351, 
+  0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359, 
+  0x935A, 0x935B, 0x935C, 0x935D, 0x935E, 0x935F, 0x9360, 0x9361, 
+  0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, 
+  0x936B, 0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, 
+  0x6FDE, 0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, 0x7035, 
+  0x704F, 0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, 
+  0x752F, 0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 
+  0x8B07, 0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, 
+  0x8FE6, 0x8FF3, 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, 
+  0x900D, 0x9016, 0x9021, 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, 
+  0x9051, 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9, 
+  0x9074, 0x907D, 0x9082, 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57, 
+  0x5F56, 0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63, 
+  0x5C66, 0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, 
+  0x5C6E, 0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3,      0, 
+plane e6
+at 0x40
+  0x936C, 0x936D, 0x936E, 0x936F, 0x9370, 0x9371, 0x9372, 0x9373, 
+  0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, 0x937A, 0x937B, 
+  0x937C, 0x937D, 0x937E, 0x937F, 0x9380, 0x9381, 0x9382, 0x9383, 
+  0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938A, 0x938B, 
+  0x938C, 0x938D, 0x938E, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 
+  0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939A, 0x939B, 0x939C, 
+  0x939D, 0x939E, 0x939F, 0x93A0, 0x93A1, 0x93A2, 0x93A3, 0x93A4, 
+  0x93A5, 0x93A6, 0x93A7, 0x93A8, 0x93A9, 0x93AA, 0x93AB,      0, 
+  0x93AC, 0x93AD, 0x93AE, 0x93AF, 0x93B0, 0x93B1, 0x93B2, 0x93B3, 
+  0x93B4, 0x93B5, 0x93B6, 0x93B7, 0x93B8, 0x93B9, 0x93BA, 0x93BB, 
+  0x93BC, 0x93BD, 0x93BE, 0x93BF, 0x93C0, 0x93C1, 0x93C2, 0x93C3, 
+  0x93C4, 0x93C5, 0x93C6, 0x93C7, 0x93C8, 0x93C9, 0x93CB, 0x93CC, 
+  0x93CD, 0x5997, 0x59CA, 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, 
+  0x59AF, 0x59D7, 0x59BE, 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, 
+  0x59D8, 0x59F9, 0x5A0C, 0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23, 
+  0x5A13, 0x5A40, 0x5A67, 0x5A4A, 0x5A55, 0x5A3C, 0x5A62, 0x5A75, 
+  0x80EC, 0x5AAA, 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE, 0x5AEB, 0x5AB2, 
+  0x5AD2, 0x5AD4, 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, 0x5AE6, 
+  0x5AD8, 0x5ADC, 0x5B09, 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40, 
+  0x5C15, 0x5C1C, 0x5B5A, 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, 
+  0x9A75, 0x9A77, 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, 
+  0x9A85, 0x9A88, 0x9A8A, 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, 
+  0x9A9B, 0x9A9C, 0x9A9D, 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, 
+  0x9AA7, 0x7E9F, 0x7EA1, 0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9,      0, 
+plane e7
+at 0x40
+  0x93CE, 0x93CF, 0x93D0, 0x93D1, 0x93D2, 0x93D3, 0x93D4, 0x93D5, 
+  0x93D7, 0x93D8, 0x93D9, 0x93DA, 0x93DB, 0x93DC, 0x93DD, 0x93DE, 
+  0x93DF, 0x93E0, 0x93E1, 0x93E2, 0x93E3, 0x93E4, 0x93E5, 0x93E6, 
+  0x93E7, 0x93E8, 0x93E9, 0x93EA, 0x93EB, 0x93EC, 0x93ED, 0x93EE, 
+  0x93EF, 0x93F0, 0x93F1, 0x93F2, 0x93F3, 0x93F4, 0x93F5, 0x93F6, 
+  0x93F7, 0x93F8, 0x93F9, 0x93FA, 0x93FB, 0x93FC, 0x93FD, 0x93FE, 
+  0x93FF, 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406, 
+  0x9407, 0x9408, 0x9409, 0x940A, 0x940B, 0x940C, 0x940D,      0, 
+  0x940E, 0x940F, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415, 
+  0x9416, 0x9417, 0x9418, 0x9419, 0x941A, 0x941B, 0x941C, 0x941D, 
+  0x941E, 0x941F, 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 
+  0x9426, 0x9427, 0x9428, 0x9429, 0x942A, 0x942B, 0x942C, 0x942D, 
+  0x942E, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, 0x7EC1, 0x7EC2, 0x7EC9, 
+  0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1, 
+  0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6, 
+  0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, 0x7F02, 0x7F03, 0x7F07, 0x7F08, 
+  0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, 0x7F12, 0x7F17, 0x7F19, 0x7F1C, 
+  0x7F1B, 0x7F1F, 0x7F21, 0x7F22, 0x7F23, 0x7F24, 0x7F25, 0x7F26, 
+  0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D, 0x7F2F, 0x7F30, 0x7F31, 
+  0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F, 0x5DDB, 0x753E, 0x9095, 
+  0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, 0x73CF, 0x73C2, 0x73D1, 
+  0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, 0x73E5, 0x73D9, 0x987C, 
+  0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA, 0x73F2, 0x740F, 0x742A, 
+  0x745B, 0x7426, 0x7425, 0x7428, 0x7430, 0x742E, 0x742C,      0, 
+plane e8
+at 0x40
+  0x942F, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436, 
+  0x9437, 0x9438, 0x9439, 0x943A, 0x943B, 0x943C, 0x943D, 0x943F, 
+  0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447, 
+  0x9448, 0x9449, 0x944A, 0x944B, 0x944C, 0x944D, 0x944E, 0x944F, 
+  0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 
+  0x9458, 0x9459, 0x945A, 0x945B, 0x945C, 0x945D, 0x945E, 0x945F, 
+  0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, 
+  0x9468, 0x9469, 0x946A, 0x946C, 0x946D, 0x946E, 0x946F,      0, 
+  0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477, 
+  0x9478, 0x9479, 0x947A, 0x947B, 0x947C, 0x947D, 0x947E, 0x947F, 
+  0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496, 0x9498, 
+  0x94C7, 0x94CF, 0x94D3, 0x94D4, 0x94DA, 0x94E6, 0x94FB, 0x951C, 
+  0x9520, 0x741B, 0x741A, 0x7441, 0x745C, 0x7457, 0x7455, 0x7459, 
+  0x7477, 0x746D, 0x747E, 0x749C, 0x748E, 0x7480, 0x7481, 0x7487, 
+  0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, 0x74A7, 0x74D2, 0x74BA, 
+  0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, 0x6748, 0x6769, 
+  0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775, 0x67A8, 
+  0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809, 0x67D8, 
+  0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA, 0x67B3, 
+  0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, 0x67FD, 
+  0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, 0x6864, 
+  0x6883, 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683E, 
+  0x684A, 0x6849, 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877, 0x6893, 
+  0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, 0x6920, 0x68F9,      0, 
+plane e9
+at 0x40
+  0x9527, 0x9533, 0x953D, 0x9543, 0x9548, 0x954B, 0x9555, 0x955A, 
+  0x9560, 0x956E, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957A, 
+  0x957B, 0x957C, 0x957D, 0x957E, 0x9580, 0x9581, 0x9582, 0x9583, 
+  0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958A, 0x958B, 
+  0x958C, 0x958D, 0x958E, 0x958F, 0x9590, 0x9591, 0x9592, 0x9593, 
+  0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959A, 0x959B, 
+  0x959C, 0x959D, 0x959E, 0x959F, 0x95A0, 0x95A1, 0x95A2, 0x95A3, 
+  0x95A4, 0x95A5, 0x95A6, 0x95A7, 0x95A8, 0x95A9, 0x95AA,      0, 
+  0x95AB, 0x95AC, 0x95AD, 0x95AE, 0x95AF, 0x95B0, 0x95B1, 0x95B2, 
+  0x95B3, 0x95B4, 0x95B5, 0x95B6, 0x95B7, 0x95B8, 0x95B9, 0x95BA, 
+  0x95BB, 0x95BC, 0x95BD, 0x95BE, 0x95BF, 0x95C0, 0x95C1, 0x95C2, 
+  0x95C3, 0x95C4, 0x95C5, 0x95C6, 0x95C7, 0x95C8, 0x95C9, 0x95CA, 
+  0x95CB, 0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910, 
+  0x6971, 0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980, 
+  0x6998, 0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989, 
+  0x6966, 0x6963, 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD, 
+  0x69D4, 0x69B1, 0x69C1, 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D, 
+  0x69FF, 0x6A2F, 0x69ED, 0x6A17, 0x6A18, 0x6A65, 0x69F2, 0x6A44, 
+  0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, 0x6A35, 0x6A8E, 0x6A79, 0x6A3D, 
+  0x6A28, 0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, 0x6A97, 0x6AAB, 
+  0x7337, 0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, 0x6B93, 
+  0x6B8D, 0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, 
+  0x8F72, 0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 
+  0x8F7C, 0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B,      0, 
+plane ea
+at 0x40
+  0x95CC, 0x95CD, 0x95CE, 0x95CF, 0x95D0, 0x95D1, 0x95D2, 0x95D3, 
+  0x95D4, 0x95D5, 0x95D6, 0x95D7, 0x95D8, 0x95D9, 0x95DA, 0x95DB, 
+  0x95DC, 0x95DD, 0x95DE, 0x95DF, 0x95E0, 0x95E1, 0x95E2, 0x95E3, 
+  0x95E4, 0x95E5, 0x95E6, 0x95E7, 0x95EC, 0x95FF, 0x9607, 0x9613, 
+  0x9618, 0x961B, 0x961E, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626, 
+  0x9627, 0x9628, 0x9629, 0x962B, 0x962C, 0x962D, 0x962F, 0x9630, 
+  0x9637, 0x9638, 0x9639, 0x963A, 0x963E, 0x9641, 0x9643, 0x964A, 
+  0x964E, 0x964F, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657,      0, 
+  0x9658, 0x9659, 0x965A, 0x965C, 0x965D, 0x965E, 0x9660, 0x9663, 
+  0x9665, 0x9666, 0x966B, 0x966D, 0x966E, 0x966F, 0x9670, 0x9671, 
+  0x9673, 0x9678, 0x9679, 0x967A, 0x967B, 0x967C, 0x967D, 0x967E, 
+  0x967F, 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689, 
+  0x968A, 0x8F8D, 0x8F8E, 0x8F8F, 0x8F98, 0x8F9A, 0x8ECE, 0x620B, 
+  0x6217, 0x621B, 0x621F, 0x6222, 0x6221, 0x6225, 0x6224, 0x622C, 
+  0x81E7, 0x74EF, 0x74F4, 0x74FF, 0x750F, 0x7511, 0x7513, 0x6534, 
+  0x65EE, 0x65EF, 0x65F0, 0x660A, 0x6619, 0x6772, 0x6603, 0x6615, 
+  0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, 0x6636, 0x6635, 
+  0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656, 0x6661, 0x6657, 
+  0x6677, 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC, 
+  0x66E6, 0x66E9, 0x8D32, 0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40, 
+  0x8D45, 0x8D46, 0x8D48, 0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59, 
+  0x89C7, 0x89CA, 0x89CB, 0x89CC, 0x89CE, 0x89CF, 0x89D0, 0x89D1, 
+  0x726E, 0x729F, 0x725D, 0x7266, 0x726F, 0x727E, 0x727F, 0x7284, 
+  0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332, 0x63B0,      0, 
+plane eb
+at 0x40
+  0x968C, 0x968E, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, 0x969A, 
+  0x969B, 0x969D, 0x969E, 0x969F, 0x96A0, 0x96A1, 0x96A2, 0x96A3, 
+  0x96A4, 0x96A5, 0x96A6, 0x96A8, 0x96A9, 0x96AA, 0x96AB, 0x96AC, 
+  0x96AD, 0x96AE, 0x96AF, 0x96B1, 0x96B2, 0x96B4, 0x96B5, 0x96B7, 
+  0x96B8, 0x96BA, 0x96BB, 0x96BF, 0x96C2, 0x96C3, 0x96C8, 0x96CA, 
+  0x96CB, 0x96D0, 0x96D1, 0x96D3, 0x96D4, 0x96D6, 0x96D7, 0x96D8, 
+  0x96D9, 0x96DA, 0x96DB, 0x96DC, 0x96DD, 0x96DE, 0x96DF, 0x96E1, 
+  0x96E2, 0x96E3, 0x96E4, 0x96E5, 0x96E6, 0x96E7, 0x96EB,      0, 
+  0x96EC, 0x96ED, 0x96EE, 0x96F0, 0x96F1, 0x96F2, 0x96F4, 0x96F5, 
+  0x96F8, 0x96FA, 0x96FB, 0x96FC, 0x96FD, 0x96FF, 0x9702, 0x9703, 
+  0x9705, 0x970A, 0x970B, 0x970C, 0x9710, 0x9711, 0x9712, 0x9714, 
+  0x9715, 0x9717, 0x9718, 0x9719, 0x971A, 0x971B, 0x971D, 0x971F, 
+  0x9720, 0x643F, 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5, 
+  0x6BF9, 0x6C05, 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19, 
+  0x6C1A, 0x6C21, 0x6C29, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555, 
+  0x656B, 0x724D, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809F, 
+  0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD, 0x80B1, 0x80AB, 0x80AD, 
+  0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9, 0x80EA, 0x80DB, 0x80C2, 
+  0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, 0x80DD, 0x80EB, 0x80F1, 
+  0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715, 0x8112, 
+  0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C, 
+  0x8153, 0x8174, 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C, 
+  0x817D, 0x816D, 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191, 
+  0x6ED5, 0x81A3, 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB,      0, 
+plane ec
+at 0x40
+  0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, 0x9728, 
+  0x9729, 0x972B, 0x972C, 0x972E, 0x972F, 0x9731, 0x9733, 0x9734, 
+  0x9735, 0x9736, 0x9737, 0x973A, 0x973B, 0x973C, 0x973D, 0x973F, 
+  0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747, 
+  0x9748, 0x9749, 0x974A, 0x974B, 0x974C, 0x974D, 0x974E, 0x974F, 
+  0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758, 0x975A, 0x975C, 
+  0x975D, 0x975F, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, 0x976A, 
+  0x976B, 0x976C, 0x976D, 0x976E, 0x976F, 0x9770, 0x9771,      0, 
+  0x9772, 0x9775, 0x9777, 0x9778, 0x9779, 0x977A, 0x977B, 0x977D, 
+  0x977E, 0x977F, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9786, 
+  0x9787, 0x9788, 0x9789, 0x978A, 0x978C, 0x978E, 0x978F, 0x9790, 
+  0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979A, 0x979B, 0x979C, 
+  0x979D, 0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43, 0x6B46, 
+  0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA, 0x6BB3, 
+  0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, 0x65C6, 
+  0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, 0x709C, 
+  0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, 0x70E8, 
+  0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, 0x715C, 
+  0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, 0x71B3, 
+  0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, 0x721D, 
+  0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D, 0x6243, 
+  0x6248, 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, 0x795C, 
+  0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, 0x7967, 0x797A, 
+  0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0,      0, 
+plane ed
+at 0x40
+  0x979E, 0x979F, 0x97A1, 0x97A2, 0x97A4, 0x97A5, 0x97A6, 0x97A7, 
+  0x97A8, 0x97A9, 0x97AA, 0x97AC, 0x97AE, 0x97B0, 0x97B1, 0x97B3, 
+  0x97B5, 0x97B6, 0x97B7, 0x97B8, 0x97B9, 0x97BA, 0x97BB, 0x97BC, 
+  0x97BD, 0x97BE, 0x97BF, 0x97C0, 0x97C1, 0x97C2, 0x97C3, 0x97C4, 
+  0x97C5, 0x97C6, 0x97C7, 0x97C8, 0x97C9, 0x97CA, 0x97CB, 0x97CC, 
+  0x97CD, 0x97CE, 0x97CF, 0x97D0, 0x97D1, 0x97D2, 0x97D3, 0x97D4, 
+  0x97D5, 0x97D6, 0x97D7, 0x97D8, 0x97D9, 0x97DA, 0x97DB, 0x97DC, 
+  0x97DD, 0x97DE, 0x97DF, 0x97E0, 0x97E1, 0x97E2, 0x97E3,      0, 
+  0x97E4, 0x97E5, 0x97E8, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2, 
+  0x97F4, 0x97F7, 0x97F8, 0x97F9, 0x97FA, 0x97FB, 0x97FC, 0x97FD, 
+  0x97FE, 0x97FF, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, 
+  0x9806, 0x9807, 0x9808, 0x9809, 0x980A, 0x980B, 0x980C, 0x980D, 
+  0x980E, 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, 
+  0x60AB, 0x6106, 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, 
+  0x6206, 0x8080, 0x807F, 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, 
+  0x7800, 0x7809, 0x7817, 0x7818, 0x7811, 0x65AB, 0x782D, 0x781C, 
+  0x781D, 0x7839, 0x783A, 0x783B, 0x781F, 0x783C, 0x7825, 0x782C, 
+  0x7823, 0x7829, 0x784E, 0x786D, 0x7856, 0x7857, 0x7826, 0x7850, 
+  0x7847, 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, 0x789C, 
+  0x78A1, 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9, 
+  0x78EC, 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, 
+  0x9F9B, 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, 
+  0x7707, 0x7708, 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, 
+  0x7738, 0x7750, 0x7751, 0x7747, 0x7743, 0x775A, 0x7768,      0, 
+plane ee
+at 0x40
+  0x980F, 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816, 
+  0x9817, 0x9818, 0x9819, 0x981A, 0x981B, 0x981C, 0x981D, 0x981E, 
+  0x981F, 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826, 
+  0x9827, 0x9828, 0x9829, 0x982A, 0x982B, 0x982C, 0x982D, 0x982E, 
+  0x982F, 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836, 
+  0x9837, 0x9838, 0x9839, 0x983A, 0x983B, 0x983C, 0x983D, 0x983E, 
+  0x983F, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 
+  0x9847, 0x9848, 0x9849, 0x984A, 0x984B, 0x984C, 0x984D,      0, 
+  0x984E, 0x984F, 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 
+  0x9856, 0x9857, 0x9858, 0x9859, 0x985A, 0x985B, 0x985C, 0x985D, 
+  0x985E, 0x985F, 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 
+  0x9866, 0x9867, 0x9868, 0x9869, 0x986A, 0x986B, 0x986C, 0x986D, 
+  0x986E, 0x7762, 0x7765, 0x777F, 0x778D, 0x777D, 0x7780, 0x778C, 
+  0x7791, 0x779F, 0x77A0, 0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540, 
+  0x754E, 0x754B, 0x7548, 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, 
+  0x7F61, 0x7F5F, 0x8A48, 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, 
+  0x7F7E, 0x76CD, 0x76E5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948B, 
+  0x948A, 0x948C, 0x948D, 0x948F, 0x9490, 0x9494, 0x9497, 0x9495, 
+  0x949A, 0x949B, 0x949C, 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, 
+  0x94AC, 0x94AF, 0x94B0, 0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8, 
+  0x94B9, 0x94BA, 0x94BC, 0x94BD, 0x94BF, 0x94C4, 0x94C8, 0x94C9, 
+  0x94CA, 0x94CB, 0x94CC, 0x94CD, 0x94CE, 0x94D0, 0x94D1, 0x94D2, 
+  0x94D5, 0x94D6, 0x94D7, 0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF, 
+  0x94E0, 0x94E2, 0x94E4, 0x94E5, 0x94E7, 0x94E8, 0x94EA,      0, 
+plane ef
+at 0x40
+  0x986F, 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x988B, 0x988E, 
+  0x9892, 0x9895, 0x9899, 0x98A3, 0x98A8, 0x98A9, 0x98AA, 0x98AB, 
+  0x98AC, 0x98AD, 0x98AE, 0x98AF, 0x98B0, 0x98B1, 0x98B2, 0x98B3, 
+  0x98B4, 0x98B5, 0x98B6, 0x98B7, 0x98B8, 0x98B9, 0x98BA, 0x98BB, 
+  0x98BC, 0x98BD, 0x98BE, 0x98BF, 0x98C0, 0x98C1, 0x98C2, 0x98C3, 
+  0x98C4, 0x98C5, 0x98C6, 0x98C7, 0x98C8, 0x98C9, 0x98CA, 0x98CB, 
+  0x98CC, 0x98CD, 0x98CF, 0x98D0, 0x98D4, 0x98D6, 0x98D7, 0x98DB, 
+  0x98DC, 0x98DD, 0x98E0, 0x98E1, 0x98E2, 0x98E3, 0x98E4,      0, 
+  0x98E5, 0x98E6, 0x98E9, 0x98EA, 0x98EB, 0x98EC, 0x98ED, 0x98EE, 
+  0x98EF, 0x98F0, 0x98F1, 0x98F2, 0x98F3, 0x98F4, 0x98F5, 0x98F6, 
+  0x98F7, 0x98F8, 0x98F9, 0x98FA, 0x98FB, 0x98FC, 0x98FD, 0x98FE, 
+  0x98FF, 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906, 
+  0x9907, 0x94E9, 0x94EB, 0x94EE, 0x94EF, 0x94F3, 0x94F4, 0x94F5, 
+  0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF, 0x9503, 0x9502, 0x9506, 
+  0x9507, 0x9509, 0x950A, 0x950D, 0x950E, 0x950F, 0x9512, 0x9513, 
+  0x9514, 0x9515, 0x9516, 0x9518, 0x951B, 0x951D, 0x951E, 0x951F, 
+  0x9522, 0x952A, 0x952B, 0x9529, 0x952C, 0x9531, 0x9532, 0x9534, 
+  0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F, 0x9542, 0x9535, 
+  0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, 0x954F, 0x9552, 
+  0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955B, 0x955E, 
+  0x955F, 0x955D, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 
+  0x9568, 0x9569, 0x956A, 0x956B, 0x956C, 0x956F, 0x9571, 0x9572, 
+  0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9, 0x79D5, 0x79ED, 0x79E3, 
+  0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02, 0x7A1E, 0x7A14,      0, 
+plane f0
+at 0x40
+  0x9908, 0x9909, 0x990A, 0x990B, 0x990C, 0x990E, 0x990F, 0x9911, 
+  0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, 0x9918, 0x9919, 
+  0x991A, 0x991B, 0x991C, 0x991D, 0x991E, 0x991F, 0x9920, 0x9921, 
+  0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, 0x9928, 0x9929, 
+  0x992A, 0x992B, 0x992C, 0x992D, 0x992F, 0x9930, 0x9931, 0x9932, 
+  0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938, 0x9939, 0x993A, 
+  0x993B, 0x993C, 0x993D, 0x993E, 0x993F, 0x9940, 0x9941, 0x9942, 
+  0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949,      0, 
+  0x994A, 0x994B, 0x994C, 0x994D, 0x994E, 0x994F, 0x9950, 0x9951, 
+  0x9952, 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995A, 0x995B, 
+  0x995C, 0x995D, 0x995E, 0x995F, 0x9960, 0x9961, 0x9962, 0x9964, 
+  0x9966, 0x9973, 0x9978, 0x9979, 0x997B, 0x997E, 0x9982, 0x9983, 
+  0x9989, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, 0x7688, 
+  0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, 0x9E20, 
+  0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, 0x9E31, 
+  0x9E36, 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, 0x9E42, 
+  0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, 0x9E4E, 
+  0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, 0x9E63, 
+  0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C, 0x9E71, 
+  0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D, 0x75AC, 
+  0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, 0x75C3, 
+  0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, 0x75EB, 
+  0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, 0x7605, 
+  0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619,      0, 
+plane f1
+at 0x40
+  0x998C, 0x998E, 0x999A, 0x999B, 0x999C, 0x999D, 0x999E, 0x999F, 
+  0x99A0, 0x99A1, 0x99A2, 0x99A3, 0x99A4, 0x99A6, 0x99A7, 0x99A9, 
+  0x99AA, 0x99AB, 0x99AC, 0x99AD, 0x99AE, 0x99AF, 0x99B0, 0x99B1, 
+  0x99B2, 0x99B3, 0x99B4, 0x99B5, 0x99B6, 0x99B7, 0x99B8, 0x99B9, 
+  0x99BA, 0x99BB, 0x99BC, 0x99BD, 0x99BE, 0x99BF, 0x99C0, 0x99C1, 
+  0x99C2, 0x99C3, 0x99C4, 0x99C5, 0x99C6, 0x99C7, 0x99C8, 0x99C9, 
+  0x99CA, 0x99CB, 0x99CC, 0x99CD, 0x99CE, 0x99CF, 0x99D0, 0x99D1, 
+  0x99D2, 0x99D3, 0x99D4, 0x99D5, 0x99D6, 0x99D7, 0x99D8,      0, 
+  0x99D9, 0x99DA, 0x99DB, 0x99DC, 0x99DD, 0x99DE, 0x99DF, 0x99E0, 
+  0x99E1, 0x99E2, 0x99E3, 0x99E4, 0x99E5, 0x99E6, 0x99E7, 0x99E8, 
+  0x99E9, 0x99EA, 0x99EB, 0x99EC, 0x99ED, 0x99EE, 0x99EF, 0x99F0, 
+  0x99F1, 0x99F2, 0x99F3, 0x99F4, 0x99F5, 0x99F6, 0x99F7, 0x99F8, 
+  0x99F9, 0x761B, 0x763C, 0x7622, 0x7620, 0x7640, 0x762D, 0x7630, 
+  0x763F, 0x7635, 0x7643, 0x763E, 0x7633, 0x764D, 0x765E, 0x7654, 
+  0x765C, 0x7656, 0x766B, 0x766F, 0x7FCA, 0x7AE6, 0x7A78, 0x7A79, 
+  0x7A80, 0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0, 0x7AAC, 0x7AA8, 
+  0x7AAD, 0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F, 0x8882, 
+  0x88A2, 0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3, 
+  0x88E5, 0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921, 
+  0x8919, 0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941, 
+  0x8966, 0x897B, 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012, 
+  0x8014, 0x8016, 0x801C, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 
+  0x8029, 0x8028, 0x8031, 0x800B, 0x8035, 0x8043, 0x8046, 0x804D, 
+  0x8052, 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883,      0, 
+plane f2
+at 0x40
+  0x99FA, 0x99FB, 0x99FC, 0x99FD, 0x99FE, 0x99FF, 0x9A00, 0x9A01, 
+  0x9A02, 0x9A03, 0x9A04, 0x9A05, 0x9A06, 0x9A07, 0x9A08, 0x9A09, 
+  0x9A0A, 0x9A0B, 0x9A0C, 0x9A0D, 0x9A0E, 0x9A0F, 0x9A10, 0x9A11, 
+  0x9A12, 0x9A13, 0x9A14, 0x9A15, 0x9A16, 0x9A17, 0x9A18, 0x9A19, 
+  0x9A1A, 0x9A1B, 0x9A1C, 0x9A1D, 0x9A1E, 0x9A1F, 0x9A20, 0x9A21, 
+  0x9A22, 0x9A23, 0x9A24, 0x9A25, 0x9A26, 0x9A27, 0x9A28, 0x9A29, 
+  0x9A2A, 0x9A2B, 0x9A2C, 0x9A2D, 0x9A2E, 0x9A2F, 0x9A30, 0x9A31, 
+  0x9A32, 0x9A33, 0x9A34, 0x9A35, 0x9A36, 0x9A37, 0x9A38,      0, 
+  0x9A39, 0x9A3A, 0x9A3B, 0x9A3C, 0x9A3D, 0x9A3E, 0x9A3F, 0x9A40, 
+  0x9A41, 0x9A42, 0x9A43, 0x9A44, 0x9A45, 0x9A46, 0x9A47, 0x9A48, 
+  0x9A49, 0x9A4A, 0x9A4B, 0x9A4C, 0x9A4D, 0x9A4E, 0x9A4F, 0x9A50, 
+  0x9A51, 0x9A52, 0x9A53, 0x9A54, 0x9A55, 0x9A56, 0x9A57, 0x9A58, 
+  0x9A59, 0x9889, 0x988C, 0x988D, 0x988F, 0x9894, 0x989A, 0x989B, 
+  0x989E, 0x989F, 0x98A1, 0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654, 
+  0x866C, 0x866E, 0x867F, 0x867A, 0x867C, 0x867B, 0x86A8, 0x868D, 
+  0x868B, 0x86AC, 0x869D, 0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9, 
+  0x86B6, 0x86C4, 0x86B5, 0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF, 
+  0x86C9, 0x86CF, 0x86B4, 0x86E9, 0x86F1, 0x86F2, 0x86ED, 0x86F3, 
+  0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF, 0x86D8, 0x86D1, 0x8703, 
+  0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, 0x8723, 0x873B, 
+  0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, 0x8734, 0x8731, 
+  0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, 0x877E, 0x877B, 
+  0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, 0x8763, 0x877C, 
+  0x8764, 0x8759, 0x8765, 0x8793, 0x87AF, 0x87A8, 0x87D2,      0, 
+plane f3
+at 0x40
+  0x9A5A, 0x9A5B, 0x9A5C, 0x9A5D, 0x9A5E, 0x9A5F, 0x9A60, 0x9A61, 
+  0x9A62, 0x9A63, 0x9A64, 0x9A65, 0x9A66, 0x9A67, 0x9A68, 0x9A69, 
+  0x9A6A, 0x9A6B, 0x9A72, 0x9A83, 0x9A89, 0x9A8D, 0x9A8E, 0x9A94, 
+  0x9A95, 0x9A99, 0x9AA6, 0x9AA9, 0x9AAA, 0x9AAB, 0x9AAC, 0x9AAD, 
+  0x9AAE, 0x9AAF, 0x9AB2, 0x9AB3, 0x9AB4, 0x9AB5, 0x9AB9, 0x9ABB, 
+  0x9ABD, 0x9ABE, 0x9ABF, 0x9AC3, 0x9AC4, 0x9AC6, 0x9AC7, 0x9AC8, 
+  0x9AC9, 0x9ACA, 0x9ACD, 0x9ACE, 0x9ACF, 0x9AD0, 0x9AD2, 0x9AD4, 
+  0x9AD5, 0x9AD6, 0x9AD7, 0x9AD9, 0x9ADA, 0x9ADB, 0x9ADC,      0, 
+  0x9ADD, 0x9ADE, 0x9AE0, 0x9AE2, 0x9AE3, 0x9AE4, 0x9AE5, 0x9AE7, 
+  0x9AE8, 0x9AE9, 0x9AEA, 0x9AEC, 0x9AEE, 0x9AF0, 0x9AF1, 0x9AF2, 
+  0x9AF3, 0x9AF4, 0x9AF5, 0x9AF6, 0x9AF7, 0x9AF8, 0x9AFA, 0x9AFC, 
+  0x9AFD, 0x9AFE, 0x9AFF, 0x9B00, 0x9B01, 0x9B02, 0x9B04, 0x9B05, 
+  0x9B06, 0x87C6, 0x8788, 0x8785, 0x87AD, 0x8797, 0x8783, 0x87AB, 
+  0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB, 0x87D3, 0x87BD, 0x87D1, 
+  0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, 0x87EE, 0x8816, 0x8813, 
+  0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36, 0x7F42, 
+  0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7B03, 0x7B04, 
+  0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19, 
+  0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E, 0x7B1E, 
+  0x7B58, 0x7B5A, 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E, 
+  0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8, 
+  0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB, 
+  0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD, 0x7BDA, 0x7BE5, 0x7BE6, 
+  0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, 0x7C16, 0x7C0B,      0, 
+plane f4
+at 0x40
+  0x9B07, 0x9B09, 0x9B0A, 0x9B0B, 0x9B0C, 0x9B0D, 0x9B0E, 0x9B10, 
+  0x9B11, 0x9B12, 0x9B14, 0x9B15, 0x9B16, 0x9B17, 0x9B18, 0x9B19, 
+  0x9B1A, 0x9B1B, 0x9B1C, 0x9B1D, 0x9B1E, 0x9B20, 0x9B21, 0x9B22, 
+  0x9B24, 0x9B25, 0x9B26, 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2B, 
+  0x9B2C, 0x9B2D, 0x9B2E, 0x9B30, 0x9B31, 0x9B33, 0x9B34, 0x9B35, 
+  0x9B36, 0x9B37, 0x9B38, 0x9B39, 0x9B3A, 0x9B3D, 0x9B3E, 0x9B3F, 
+  0x9B40, 0x9B46, 0x9B4A, 0x9B4B, 0x9B4C, 0x9B4E, 0x9B50, 0x9B52, 
+  0x9B53, 0x9B55, 0x9B56, 0x9B57, 0x9B58, 0x9B59, 0x9B5A,      0, 
+  0x9B5B, 0x9B5C, 0x9B5D, 0x9B5E, 0x9B5F, 0x9B60, 0x9B61, 0x9B62, 
+  0x9B63, 0x9B64, 0x9B65, 0x9B66, 0x9B67, 0x9B68, 0x9B69, 0x9B6A, 
+  0x9B6B, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B6F, 0x9B70, 0x9B71, 0x9B72, 
+  0x9B73, 0x9B74, 0x9B75, 0x9B76, 0x9B77, 0x9B78, 0x9B79, 0x9B7A, 
+  0x9B7B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE, 
+  0x8201, 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223, 
+  0x822D, 0x822F, 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, 0x8234, 
+  0x823E, 0x8244, 0x8249, 0x824B, 0x824F, 0x825A, 0x825F, 0x8268, 
+  0x887E, 0x8885, 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D, 0x7F9F, 
+  0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91, 0x7C9D, 
+  0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1, 0x7CC7, 
+  0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, 0x66A8, 
+  0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE, 
+  0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8, 
+  0x9EB4, 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D, 
+  0x8C47, 0x8C49, 0x914A, 0x9150, 0x914E, 0x914F, 0x9164,      0, 
+plane f5
+at 0x40
+  0x9B7C, 0x9B7D, 0x9B7E, 0x9B7F, 0x9B80, 0x9B81, 0x9B82, 0x9B83, 
+  0x9B84, 0x9B85, 0x9B86, 0x9B87, 0x9B88, 0x9B89, 0x9B8A, 0x9B8B, 
+  0x9B8C, 0x9B8D, 0x9B8E, 0x9B8F, 0x9B90, 0x9B91, 0x9B92, 0x9B93, 
+  0x9B94, 0x9B95, 0x9B96, 0x9B97, 0x9B98, 0x9B99, 0x9B9A, 0x9B9B, 
+  0x9B9C, 0x9B9D, 0x9B9E, 0x9B9F, 0x9BA0, 0x9BA1, 0x9BA2, 0x9BA3, 
+  0x9BA4, 0x9BA5, 0x9BA6, 0x9BA7, 0x9BA8, 0x9BA9, 0x9BAA, 0x9BAB, 
+  0x9BAC, 0x9BAD, 0x9BAE, 0x9BAF, 0x9BB0, 0x9BB1, 0x9BB2, 0x9BB3, 
+  0x9BB4, 0x9BB5, 0x9BB6, 0x9BB7, 0x9BB8, 0x9BB9, 0x9BBA,      0, 
+  0x9BBB, 0x9BBC, 0x9BBD, 0x9BBE, 0x9BBF, 0x9BC0, 0x9BC1, 0x9BC2, 
+  0x9BC3, 0x9BC4, 0x9BC5, 0x9BC6, 0x9BC7, 0x9BC8, 0x9BC9, 0x9BCA, 
+  0x9BCB, 0x9BCC, 0x9BCD, 0x9BCE, 0x9BCF, 0x9BD0, 0x9BD1, 0x9BD2, 
+  0x9BD3, 0x9BD4, 0x9BD5, 0x9BD6, 0x9BD7, 0x9BD8, 0x9BD9, 0x9BDA, 
+  0x9BDB, 0x9162, 0x9161, 0x9170, 0x9169, 0x916F, 0x917D, 0x917E, 
+  0x9172, 0x9174, 0x9179, 0x918C, 0x9185, 0x9190, 0x918D, 0x9191, 
+  0x91A2, 0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4, 
+  0x91BA, 0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69, 
+  0x8DB5, 0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, 
+  0x8DDE, 0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, 
+  0x8DE3, 0x8DF9, 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 
+  0x8E1F, 0x8E2C, 0x8E2E, 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, 
+  0x8E35, 0x8E3D, 0x8E31, 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52, 
+  0x8E4A, 0x8E70, 0x8E76, 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F, 
+  0x8E94, 0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85, 
+  0x8C98, 0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC,      0, 
+plane f6
+at 0x40
+  0x9BDC, 0x9BDD, 0x9BDE, 0x9BDF, 0x9BE0, 0x9BE1, 0x9BE2, 0x9BE3, 
+  0x9BE4, 0x9BE5, 0x9BE6, 0x9BE7, 0x9BE8, 0x9BE9, 0x9BEA, 0x9BEB, 
+  0x9BEC, 0x9BED, 0x9BEE, 0x9BEF, 0x9BF0, 0x9BF1, 0x9BF2, 0x9BF3, 
+  0x9BF4, 0x9BF5, 0x9BF6, 0x9BF7, 0x9BF8, 0x9BF9, 0x9BFA, 0x9BFB, 
+  0x9BFC, 0x9BFD, 0x9BFE, 0x9BFF, 0x9C00, 0x9C01, 0x9C02, 0x9C03, 
+  0x9C04, 0x9C05, 0x9C06, 0x9C07, 0x9C08, 0x9C09, 0x9C0A, 0x9C0B, 
+  0x9C0C, 0x9C0D, 0x9C0E, 0x9C0F, 0x9C10, 0x9C11, 0x9C12, 0x9C13, 
+  0x9C14, 0x9C15, 0x9C16, 0x9C17, 0x9C18, 0x9C19, 0x9C1A,      0, 
+  0x9C1B, 0x9C1C, 0x9C1D, 0x9C1E, 0x9C1F, 0x9C20, 0x9C21, 0x9C22, 
+  0x9C23, 0x9C24, 0x9C25, 0x9C26, 0x9C27, 0x9C28, 0x9C29, 0x9C2A, 
+  0x9C2B, 0x9C2C, 0x9C2D, 0x9C2E, 0x9C2F, 0x9C30, 0x9C31, 0x9C32, 
+  0x9C33, 0x9C34, 0x9C35, 0x9C36, 0x9C37, 0x9C38, 0x9C39, 0x9C3A, 
+  0x9C3B, 0x89E5, 0x89EB, 0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9, 
+  0x96F3, 0x96EF, 0x9706, 0x9701, 0x9708, 0x970F, 0x970E, 0x972A, 
+  0x972D, 0x9730, 0x973E, 0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87, 
+  0x9F88, 0x9F89, 0x9F8A, 0x9F8C, 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9, 
+  0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF, 0x96E0, 0x928E, 0x92AE, 
+  0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, 0x943E, 0x946B, 0x9C7F, 
+  0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x7A23, 0x9C8B, 0x9C8E, 
+  0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E, 
+  0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7, 
+  0x9CA8, 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2, 
+  0x9CB3, 0x9CB4, 0x9CB5, 0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC, 
+  0x9CBD, 0x9CC4, 0x9CC5, 0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB,      0, 
+plane f7
+at 0x40
+  0x9C3C, 0x9C3D, 0x9C3E, 0x9C3F, 0x9C40, 0x9C41, 0x9C42, 0x9C43, 
+  0x9C44, 0x9C45, 0x9C46, 0x9C47, 0x9C48, 0x9C49, 0x9C4A, 0x9C4B, 
+  0x9C4C, 0x9C4D, 0x9C4E, 0x9C4F, 0x9C50, 0x9C51, 0x9C52, 0x9C53, 
+  0x9C54, 0x9C55, 0x9C56, 0x9C57, 0x9C58, 0x9C59, 0x9C5A, 0x9C5B, 
+  0x9C5C, 0x9C5D, 0x9C5E, 0x9C5F, 0x9C60, 0x9C61, 0x9C62, 0x9C63, 
+  0x9C64, 0x9C65, 0x9C66, 0x9C67, 0x9C68, 0x9C69, 0x9C6A, 0x9C6B, 
+  0x9C6C, 0x9C6D, 0x9C6E, 0x9C6F, 0x9C70, 0x9C71, 0x9C72, 0x9C73, 
+  0x9C74, 0x9C75, 0x9C76, 0x9C77, 0x9C78, 0x9C79, 0x9C7A,      0, 
+  0x9C7B, 0x9C7D, 0x9C7E, 0x9C80, 0x9C83, 0x9C84, 0x9C89, 0x9C8A, 
+  0x9C8C, 0x9C8F, 0x9C93, 0x9C96, 0x9C97, 0x9C98, 0x9C99, 0x9C9D, 
+  0x9CAA, 0x9CAC, 0x9CAF, 0x9CB9, 0x9CBE, 0x9CBF, 0x9CC0, 0x9CC1, 
+  0x9CC2, 0x9CC8, 0x9CC9, 0x9CD1, 0x9CD2, 0x9CDA, 0x9CDB, 0x9CE0, 
+  0x9CE1, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, 0x9CD3, 0x9CD4, 
+  0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, 0x9CDF, 0x9CE2, 
+  0x977C, 0x9785, 0x9791, 0x9792, 0x9794, 0x97AF, 0x97AB, 0x97A3, 
+  0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9E58, 0x9AB6, 0x9ABA, 
+  0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, 0x9ACB, 0x9ACC, 0x9AD1, 
+  0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48, 0x9B4D, 0x9B51, 0x98E8, 
+  0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF, 0x9AE1, 0x9AE6, 0x9AEF, 
+  0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, 0x9B0F, 0x9B13, 0x9B1F, 
+  0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, 0x9E87, 0x9E88, 0x9E8B, 
+  0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, 0x9EDD, 0x9EE0, 
+  0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, 0x9EEF, 0x9F22, 
+  0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, 0x9F44,      0, 
+plane f8
+at 0x40
+  0x9CE3, 0x9CE4, 0x9CE5, 0x9CE6, 0x9CE7, 0x9CE8, 0x9CE9, 0x9CEA, 
+  0x9CEB, 0x9CEC, 0x9CED, 0x9CEE, 0x9CEF, 0x9CF0, 0x9CF1, 0x9CF2, 
+  0x9CF3, 0x9CF4, 0x9CF5, 0x9CF6, 0x9CF7, 0x9CF8, 0x9CF9, 0x9CFA, 
+  0x9CFB, 0x9CFC, 0x9CFD, 0x9CFE, 0x9CFF, 0x9D00, 0x9D01, 0x9D02, 
+  0x9D03, 0x9D04, 0x9D05, 0x9D06, 0x9D07, 0x9D08, 0x9D09, 0x9D0A, 
+  0x9D0B, 0x9D0C, 0x9D0D, 0x9D0E, 0x9D0F, 0x9D10, 0x9D11, 0x9D12, 
+  0x9D13, 0x9D14, 0x9D15, 0x9D16, 0x9D17, 0x9D18, 0x9D19, 0x9D1A, 
+  0x9D1B, 0x9D1C, 0x9D1D, 0x9D1E, 0x9D1F, 0x9D20, 0x9D21,      0, 
+  0x9D22, 0x9D23, 0x9D24, 0x9D25, 0x9D26, 0x9D27, 0x9D28, 0x9D29, 
+  0x9D2A, 0x9D2B, 0x9D2C, 0x9D2D, 0x9D2E, 0x9D2F, 0x9D30, 0x9D31, 
+  0x9D32, 0x9D33, 0x9D34, 0x9D35, 0x9D36, 0x9D37, 0x9D38, 0x9D39, 
+  0x9D3A, 0x9D3B, 0x9D3C, 0x9D3D, 0x9D3E, 0x9D3F, 0x9D40, 0x9D41, 
+  0x9D42,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane f9
+at 0x40
+  0x9D43, 0x9D44, 0x9D45, 0x9D46, 0x9D47, 0x9D48, 0x9D49, 0x9D4A, 
+  0x9D4B, 0x9D4C, 0x9D4D, 0x9D4E, 0x9D4F, 0x9D50, 0x9D51, 0x9D52, 
+  0x9D53, 0x9D54, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0x9D5A, 
+  0x9D5B, 0x9D5C, 0x9D5D, 0x9D5E, 0x9D5F, 0x9D60, 0x9D61, 0x9D62, 
+  0x9D63, 0x9D64, 0x9D65, 0x9D66, 0x9D67, 0x9D68, 0x9D69, 0x9D6A, 
+  0x9D6B, 0x9D6C, 0x9D6D, 0x9D6E, 0x9D6F, 0x9D70, 0x9D71, 0x9D72, 
+  0x9D73, 0x9D74, 0x9D75, 0x9D76, 0x9D77, 0x9D78, 0x9D79, 0x9D7A, 
+  0x9D7B, 0x9D7C, 0x9D7D, 0x9D7E, 0x9D7F, 0x9D80, 0x9D81,      0, 
+  0x9D82, 0x9D83, 0x9D84, 0x9D85, 0x9D86, 0x9D87, 0x9D88, 0x9D89, 
+  0x9D8A, 0x9D8B, 0x9D8C, 0x9D8D, 0x9D8E, 0x9D8F, 0x9D90, 0x9D91, 
+  0x9D92, 0x9D93, 0x9D94, 0x9D95, 0x9D96, 0x9D97, 0x9D98, 0x9D99, 
+  0x9D9A, 0x9D9B, 0x9D9C, 0x9D9D, 0x9D9E, 0x9D9F, 0x9DA0, 0x9DA1, 
+  0x9DA2,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fa
+at 0x40
+  0x9DA3, 0x9DA4, 0x9DA5, 0x9DA6, 0x9DA7, 0x9DA8, 0x9DA9, 0x9DAA, 
+  0x9DAB, 0x9DAC, 0x9DAD, 0x9DAE, 0x9DAF, 0x9DB0, 0x9DB1, 0x9DB2, 
+  0x9DB3, 0x9DB4, 0x9DB5, 0x9DB6, 0x9DB7, 0x9DB8, 0x9DB9, 0x9DBA, 
+  0x9DBB, 0x9DBC, 0x9DBD, 0x9DBE, 0x9DBF, 0x9DC0, 0x9DC1, 0x9DC2, 
+  0x9DC3, 0x9DC4, 0x9DC5, 0x9DC6, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA, 
+  0x9DCB, 0x9DCC, 0x9DCD, 0x9DCE, 0x9DCF, 0x9DD0, 0x9DD1, 0x9DD2, 
+  0x9DD3, 0x9DD4, 0x9DD5, 0x9DD6, 0x9DD7, 0x9DD8, 0x9DD9, 0x9DDA, 
+  0x9DDB, 0x9DDC, 0x9DDD, 0x9DDE, 0x9DDF, 0x9DE0, 0x9DE1,      0, 
+  0x9DE2, 0x9DE3, 0x9DE4, 0x9DE5, 0x9DE6, 0x9DE7, 0x9DE8, 0x9DE9, 
+  0x9DEA, 0x9DEB, 0x9DEC, 0x9DED, 0x9DEE, 0x9DEF, 0x9DF0, 0x9DF1, 
+  0x9DF2, 0x9DF3, 0x9DF4, 0x9DF5, 0x9DF6, 0x9DF7, 0x9DF8, 0x9DF9, 
+  0x9DFA, 0x9DFB, 0x9DFC, 0x9DFD, 0x9DFE, 0x9DFF, 0x9E00, 0x9E01, 
+  0x9E02,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fb
+at 0x40
+  0x9E03, 0x9E04, 0x9E05, 0x9E06, 0x9E07, 0x9E08, 0x9E09, 0x9E0A, 
+  0x9E0B, 0x9E0C, 0x9E0D, 0x9E0E, 0x9E0F, 0x9E10, 0x9E11, 0x9E12, 
+  0x9E13, 0x9E14, 0x9E15, 0x9E16, 0x9E17, 0x9E18, 0x9E19, 0x9E1A, 
+  0x9E1B, 0x9E1C, 0x9E1D, 0x9E1E, 0x9E24, 0x9E27, 0x9E2E, 0x9E30, 
+  0x9E34, 0x9E3B, 0x9E3C, 0x9E40, 0x9E4D, 0x9E50, 0x9E52, 0x9E53, 
+  0x9E54, 0x9E56, 0x9E59, 0x9E5D, 0x9E5F, 0x9E60, 0x9E61, 0x9E62, 
+  0x9E65, 0x9E6E, 0x9E6F, 0x9E72, 0x9E74, 0x9E75, 0x9E76, 0x9E77, 
+  0x9E78, 0x9E79, 0x9E7A, 0x9E7B, 0x9E7C, 0x9E7D, 0x9E80,      0, 
+  0x9E81, 0x9E83, 0x9E84, 0x9E85, 0x9E86, 0x9E89, 0x9E8A, 0x9E8C, 
+  0x9E8D, 0x9E8E, 0x9E8F, 0x9E90, 0x9E91, 0x9E94, 0x9E95, 0x9E96, 
+  0x9E97, 0x9E98, 0x9E99, 0x9E9A, 0x9E9B, 0x9E9C, 0x9E9E, 0x9EA0, 
+  0x9EA1, 0x9EA2, 0x9EA3, 0x9EA4, 0x9EA5, 0x9EA7, 0x9EA8, 0x9EA9, 
+  0x9EAA,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fc
+at 0x40
+  0x9EAB, 0x9EAC, 0x9EAD, 0x9EAE, 0x9EAF, 0x9EB0, 0x9EB1, 0x9EB2, 
+  0x9EB3, 0x9EB5, 0x9EB6, 0x9EB7, 0x9EB9, 0x9EBA, 0x9EBC, 0x9EBF, 
+  0x9EC0, 0x9EC1, 0x9EC2, 0x9EC3, 0x9EC5, 0x9EC6, 0x9EC7, 0x9EC8, 
+  0x9ECA, 0x9ECB, 0x9ECC, 0x9ED0, 0x9ED2, 0x9ED3, 0x9ED5, 0x9ED6, 
+  0x9ED7, 0x9ED9, 0x9EDA, 0x9EDE, 0x9EE1, 0x9EE3, 0x9EE4, 0x9EE6, 
+  0x9EE8, 0x9EEB, 0x9EEC, 0x9EED, 0x9EEE, 0x9EF0, 0x9EF1, 0x9EF2, 
+  0x9EF3, 0x9EF4, 0x9EF5, 0x9EF6, 0x9EF7, 0x9EF8, 0x9EFA, 0x9EFD, 
+  0x9EFF, 0x9F00, 0x9F01, 0x9F02, 0x9F03, 0x9F04, 0x9F05,      0, 
+  0x9F06, 0x9F07, 0x9F08, 0x9F09, 0x9F0A, 0x9F0C, 0x9F0F, 0x9F11, 
+  0x9F12, 0x9F14, 0x9F15, 0x9F16, 0x9F18, 0x9F1A, 0x9F1B, 0x9F1C, 
+  0x9F1D, 0x9F1E, 0x9F1F, 0x9F21, 0x9F23, 0x9F24, 0x9F25, 0x9F26, 
+  0x9F27, 0x9F28, 0x9F29, 0x9F2A, 0x9F2B, 0x9F2D, 0x9F2E, 0x9F30, 
+  0x9F31,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fd
+at 0x40
+  0x9F32, 0x9F33, 0x9F34, 0x9F35, 0x9F36, 0x9F38, 0x9F3A, 0x9F3C, 
+  0x9F3F, 0x9F40, 0x9F41, 0x9F42, 0x9F43, 0x9F45, 0x9F46, 0x9F47, 
+  0x9F48, 0x9F49, 0x9F4A, 0x9F4B, 0x9F4C, 0x9F4D, 0x9F4E, 0x9F4F, 
+  0x9F52, 0x9F53, 0x9F54, 0x9F55, 0x9F56, 0x9F57, 0x9F58, 0x9F59, 
+  0x9F5A, 0x9F5B, 0x9F5C, 0x9F5D, 0x9F5E, 0x9F5F, 0x9F60, 0x9F61, 
+  0x9F62, 0x9F63, 0x9F64, 0x9F65, 0x9F66, 0x9F67, 0x9F68, 0x9F69, 
+  0x9F6A, 0x9F6B, 0x9F6C, 0x9F6D, 0x9F6E, 0x9F6F, 0x9F70, 0x9F71, 
+  0x9F72, 0x9F73, 0x9F74, 0x9F75, 0x9F76, 0x9F77, 0x9F78,      0, 
+  0x9F79, 0x9F7A, 0x9F7B, 0x9F7C, 0x9F7D, 0x9F7E, 0x9F81, 0x9F82, 
+  0x9F8D, 0x9F8E, 0x9F8F, 0x9F90, 0x9F91, 0x9F92, 0x9F93, 0x9F94, 
+  0x9F95, 0x9F96, 0x9F97, 0x9F98, 0x9F9C, 0x9F9D, 0x9F9E, 0x9FA1, 
+  0x9FA2, 0x9FA3, 0x9FA4, 0x9FA5, 0xF92C, 0xF979, 0xF995, 0xF9E7, 
+  0xF9F1,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fe
+at 0x40
+  0xFA0C, 0xFA0D, 0xFA0E, 0xFA0F, 0xFA11, 0xFA13, 0xFA14, 0xFA18, 
+  0xFA1F, 0xFA20, 0xFA21, 0xFA23, 0xFA24, 0xFA27, 0xFA28, 0xFA29, 
+  0xE815, 0xE816, 0xE817, 0xE818, 0xE819, 0xE81A, 0xE81B, 0xE81C, 
+  0xE81D, 0xE81E, 0xE81F, 0xE820, 0xE821, 0xE822, 0xE823, 0xE824, 
+  0xE825, 0xE826, 0xE827, 0xE828, 0xE829, 0xE82A, 0xE82B, 0xE82C, 
+  0xE82D, 0xE82E, 0xE82F, 0xE830, 0xE831, 0xE832, 0xE833, 0xE834, 
+  0xE835, 0xE836, 0xE837, 0xE838, 0xE839, 0xE83A, 0xE83B, 0xE83C, 
+  0xE83D, 0xE83E, 0xE83F, 0xE840, 0xE841, 0xE842, 0xE843,      0, 
+  0xE844, 0xE845, 0xE846, 0xE847, 0xE848, 0xE849, 0xE84A, 0xE84B, 
+  0xE84C, 0xE84D, 0xE84E, 0xE84F, 0xE850, 0xE851, 0xE852, 0xE853, 
+  0xE854, 0xE855, 0xE856, 0xE857, 0xE858, 0xE859, 0xE85A, 0xE85B, 
+  0xE85C, 0xE85D, 0xE85E, 0xE85F, 0xE860, 0xE861, 0xE862, 0xE863, 
+  0xE864,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/cubg5plus.map
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/cubg5plus.map	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/cubg5plus.map	(revision 2000)
@@ -0,0 +1,3184 @@
+#
+# For unicode Big5+ Chinese fonts.
+#
+plane 01 
+at 0x00
+  0x8488, 0x8710, 0x871F, 0x870F, 0x88D3, 0x8C87, 0x8CC6, 0x90CC,
+  0x916D, 0x9258, 0x9242, 0x9268, 0x9269, 0x9243, 0x9247, 0x959D,
+  0x96CF, 0x97F4, 0x9809, 0x98AB, 0x98FB, 0x9AAC, 0x9AAE, 0x9AAA,
+  0x9B5C, 0x50DF, 0x5619, 0x560A, 0x589A, 0x5D85, 0x5E56, 0x5E51,
+  0x5FB1, 0x645A, 0x6463, 0x669B, 0x66A3, 0x669E, 0x69B8, 0x69BA,
+  0x69C7, 0x69D7, 0x6B70, 0x6B9D, 0x6F16, 0x6F24, 0x6F45, 0x7179,
+  0x717A, 0x7254, 0x757C, 0x757B, 0x7612, 0x76B6, 0x76E0, 0x7773,
+  0x7772, 0x7770, 0x789D, 0x7A27, 0x7A35, 0x7BA2, 0x7B89, 0x4E28,
+  0x4E05, 0x4E04, 0x4E2A, 0x4E87, 0x4E49, 0x51E2, 0x4E46, 0x4E8F,
+  0x4EBC, 0x4EBE, 0x5166, 0x51E3, 0x5204, 0x529C, 0x5344, 0x5F51,
+  0x961D, 0x4E63, 0x4E62, 0x4EA3, 0x5185, 0x4EC5, 0x4ECF, 0x4ECE,
+  0x4ECC, 0x5184, 0x5186, 0x51E4, 0x5205, 0x529E, 0x529D, 0x52FD,
+  0x7BA5, 0x7CB6, 0x7DA5, 0x7DC3, 0x7FAB, 0x8025, 0x8059, 0x8185,
+  0x818E, 0x84BE, 0x84A6, 0x872F, 0x89A0, 0x8A97, 0x8C8B, 0x8F0F,
+  0x9275, 0x929F, 0x95A6, 0x969A, 0x9757, 0x97F7, 0x98B0, 0x99C6,
+  0x50FA, 0x5285, 0x5643, 0x563C, 0x5BED, 0x5C35, 0x5F47, 0x616D,
+  0x69F5, 0x6A03, 0x6A65, 0x6B75, 0x6F56, 0x6F98, 0x6F68, 0x7234,
+  0x7245, 0x735C, 0x7356, 0x78BF, 0x78BD, 0x78E4, 0x7A34, 0x7A36,
+  0x7BBA, 0x7BBC, 0x7BC8, 0x7BC3, 0x7BB6, 0x7BC2, 0x7BC5, 0x7BBD,
+  0x7BB0, 0x7BBB, 0x7E04, 0x81F1, 0x8522, 0x8538, 0x8532, 0x8510,
+  0x854F, 0x877C, 0x890D, 0x8908, 0x8D9E, 0x8F28, 0x8F21, 0x9066,
+  0x906C, 0x90F6, 0x92EC, 0x92BA, 0x92E3, 0x92BD, 0x95B4, 0x97D1,
+  0x9823, 0x990B, 0x9AB2, 0x9ADB, 0x9B73, 0x9B6E, 0x9B65, 0x9B6A,
+  0x9B6D, 0x9D0B, 0x9E76, 0x9F11, 0x5119, 0x5675, 0x596F, 0x61A5,
+  0x61A0, 0x65B4, 0x65D8, 0x66C2, 0x6BA8, 0x6F83, 0x6FC5, 0x71CD,
+  0x729C, 0x7499, 0x7639, 0x762E, 0x769F, 0x76A0, 0x7794, 0x77AE,
+  0x78E6, 0x7ABC, 0x7BD6, 0x7CCF, 0x7E18, 0x806D, 0x8190, 0x8552,
+  0x8550, 0x87A0, 0x8786, 0x8795, 0x8860, 0x8928, 0x8920, 0x89A8,
+  0x8E3A, 0x9194, 0x9311, 0x9337, 0x9343, 0x96A6, 0x9795, 0x9796,
+  0x9825, 0x9926, 0x9934, 0x9B8A, 0x9B7F, 0x9D11, 0x9ED9, 0x9F3C,
+  0x5123, 0x512C, 0x5295, 0x5688, 0x568B, 0x61E1, 0x61D7, 0x65A3,
+  0x66D3, 0x6A8B, 0x6BAC, 0x7374, 0x7640, 0x5300, 0x533A, 0x5346,
+plane 02 
+at 0x00
+  0x535D, 0x5386, 0x53B7, 0x53CC, 0x53CE, 0x5721, 0x5E00, 0x5F0C,
+  0x6237, 0x6238, 0x6535, 0x738D, 0x4E97, 0x4EE0, 0x4EE7, 0x4EE6,
+  0x56D8, 0x518B, 0x518C, 0x5199, 0x51E5, 0x520B, 0x5304, 0x5303,
+  0x5307, 0x531E, 0x535F, 0x536D, 0x5389, 0x53BA, 0x7641, 0x76E8,
+  0x78F6, 0x7900, 0x7A59, 0x7A55, 0x7AF4, 0x7C04, 0x7C15, 0x7BF5,
+  0x81C1, 0x857D, 0x85A5, 0x893A, 0x8E51, 0x9198, 0x9381, 0x936F,
+  0x9842, 0x9937, 0x9BA9, 0x9BA7, 0x9BAC, 0x9B9C, 0x9D3C, 0x9D1C,
+  0x9D3A, 0x9D32, 0x9D34, 0x9F3F, 0x5EEB, 0x61D5, 0x6502, 0x7012,
+  0x7585, 0x7654, 0x7655, 0x76A7, 0x76A8, 0x790F, 0x7CE4, 0x7CE5,
+  0x7E65, 0x7E4E, 0x7F82, 0x802D, 0x85CA, 0x85BC, 0x8CFF, 0x91A6,
+  0x93B6, 0x93AB, 0x97A7, 0x983E, 0x9BBC, 0x9BB7, 0x9BBE, 0x9D62,
+  0x9E8F, 0x9ECB, 0x56A9, 0x5913, 0x5BF4, 0x61EC, 0x61EF, 0x6AD6,
+  0x7209, 0x7379, 0x74C6, 0x77C3, 0x791F, 0x7A65, 0x7AC6, 0x7C3A,
+  0x7CEB, 0x7F84, 0x85E0, 0x85F3, 0x881E, 0x89B4, 0x89F9, 0x8B44,
+  0x8E71, 0x8E6E, 0x8E79, 0x8EC4, 0x908C, 0x93C9, 0x97B0, 0x985A,
+  0x9946, 0x9AC3, 0x9B0F, 0x9BF4, 0x9BFA, 0x9BDD, 0x9BED, 0x9BEF,
+  0x9E96, 0x9EB3, 0x9EE2, 0x9F8F, 0x56B1, 0x5B41, 0x6AF6, 0x6AF2,
+  0x7588, 0x8267, 0x860E, 0x8D0E, 0x91B6, 0x942F, 0x97E0, 0x97DB,
+  0x9861, 0x9A33, 0x9C0F, 0x9C11, 0x9C03, 0x9C01, 0x9C16, 0x9D93,
+  0x535B, 0x56BF, 0x5DCE, 0x76AC, 0x77D2, 0x7C52, 0x8B76, 0x8EC7,
+  0x9434, 0x943E, 0x97BC, 0x9B39, 0x9C2A, 0x9C26, 0x9C27, 0x9DC0,
+  0x9DC9, 0x9EEC, 0x9F68, 0x8032, 0x8031, 0x89FD, 0x908E, 0x97C2,
+  0x9A4B, 0x9B1C, 0x9B1B, 0x9C42, 0x56D0, 0x56CF, 0x5DDA, 0x66EA,
+  0x8B89, 0x9458, 0x9DE7, 0x53D0, 0x53F6, 0x53F7, 0x53F9, 0x53F4,
+  0x5724, 0x5904, 0x5918, 0x5932, 0x5930, 0x5934, 0x5975, 0x5B82,
+  0x5BF9, 0x5C14, 0x5E81, 0x5E83, 0x5F0D, 0x5F52, 0x5FCA, 0x5FC7,
+  0x6239, 0x624F, 0x65E7, 0x672F, 0x6B7A, 0x6C39, 0x6C37, 0x6C44,
+  0x6C45, 0x738C, 0x9093, 0x9092, 0x9DEA, 0x9DF1, 0x9F44, 0x9F6D,
+  0x5DD9, 0x883A, 0x8975, 0x9A5D, 0x9C64, 0x9E0A, 0x9F73, 0x77E1,
+  0x9B2D, 0x9E0C, 0x9F1F, 0x7C70, 0x9479, 0x974A, 0x7E9D, 0x9960,
+  0x9F9E, 0x9EF8, 0x9F3A, 0x9F7D, 0x9F96, 0x6729, 0x5E07, 0x5FCB,
+  0x52B7, 0x52B8, 0x52B6, 0x52BA, 0x6306, 0x6B85, 0x8C38, 0x7309,
+plane 03 
+at 0x00
+  0x8A2F, 0x52DC, 0x5921, 0x5E3F, 0x7B3F, 0x83D0, 0x86E7, 0x6117,
+  0x8714, 0x88D1, 0x8CCB, 0x8EED, 0x52EC, 0x52E8, 0x7527, 0x798C,
+  0x7991, 0x8660, 0x9904, 0x999B, 0x729F, 0x8770, 0x8E37, 0x9703,
+  0x52F6, 0x64CC, 0x764A, 0x7AB9, 0x7BD7, 0x999F, 0x9B8D, 0x9E77,
+  0x764B, 0x76A2, 0x87F1, 0x9BBA, 0x8804, 0x9BD8, 0x9D7C, 0x7C46,
+  0x9D8D, 0x957E, 0x9C20, 0x9C22, 0x9C1E, 0x8970, 0x9C43, 0x9DE0,
+  0x9459, 0x9C72, 0x6530, 0x72DD, 0x6804, 0x82FF, 0x8FEC, 0x53DE,
+  0x5A30, 0x5BB2,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0, 0x4E21, 0x4E20, 0x4E22, 0x4E68, 0x4E89, 0x4E98, 0x4EF9,
+  0x4EEF, 0x4EF8, 0x4F06, 0x4F03, 0x4EFC, 0x4EEE, 0x4F16, 0x4F28,
+  0x4F1C, 0x4F07, 0x4F1A, 0x4EFA, 0x4F17, 0x514A, 0x5172, 0x51B4,
+  0x51B3, 0x51B2, 0x51E8, 0x5214, 0x520F, 0x5215, 0x5218, 0x52A8,
+  0x534B, 0x534F,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 04 
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0, 0x5350,
+  0x538B, 0x53BE, 0x53D2, 0x5416, 0x53FF, 0x5400, 0x5405, 0x5413,
+  0x5415, 0x56E3, 0x5735, 0x5736, 0x5731, 0x5732, 0x58EE, 0x5905,
+  0x4E54, 0x5936, 0x597A, 0x5986, 0x5B86, 0x5F53, 0x5C18, 0x5C3D,
+  0x5C78, 0x5C80, 0x5E08, 0x5EF5, 0x5F0E, 0x5FD3, 0x5FDA, 0x5FDB,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0, 0x620F, 0x625D, 0x625F,
+  0x6267, 0x6257, 0x9F50, 0x65EB, 0x65EA, 0x6737, 0x6732, 0x6736,
+plane 05 
+at 0x00
+  0x6B22, 0x6BCE, 0x6C58, 0x6C51, 0x6C77, 0x6C3C, 0x6C5A, 0x6C53,
+  0x706F, 0x7072, 0x706E, 0x7073, 0x72B1, 0x72B2, 0x738F, 0x793C,
+  0x808D, 0x808E, 0x827B, 0x8D71, 0x8FB9, 0x9096,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0, 0x909A, 0x4E24, 0x4E71, 0x4E9C, 0x4F45,
+  0x4F4A, 0x4F39, 0x4F37, 0x4F32, 0x4F42, 0x4F44, 0x4F4B, 0x4F40,
+  0x4F35, 0x4F31, 0x5151, 0x5150, 0x514E, 0x519D, 0x51B5, 0x51B8,
+  0x51EC, 0x5223, 0x5227, 0x5226, 0x521F, 0x522B, 0x5220, 0x52B4,
+  0x52B3, 0x5325, 0x533B, 0x5374,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 06 
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0, 0x544D, 0x543A, 0x5444, 0x544C, 0x5423, 0x541A, 0x5432,
+  0x544B, 0x5421, 0x5434, 0x5449, 0x5450, 0x5422, 0x543F, 0x5451,
+  0x545A, 0x542F, 0x56E9, 0x56F2, 0x56F3, 0x56EF, 0x56ED, 0x56EC,
+  0x56E6, 0x5748, 0x5744, 0x573F, 0x573C, 0x5753, 0x5756, 0x575F,
+  0x5743, 0x5758,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 07 
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0, 0x5757,
+  0x5746, 0x573D, 0x5742, 0x5754, 0x5755, 0x58F1, 0x58F2, 0x58F0,
+  0x590B, 0x9EA6, 0x56F1, 0x593D, 0x5994, 0x598C, 0x599C, 0x599F,
+  0x599B, 0x5989, 0x599A, 0x6588, 0x5B8D, 0x5BFE, 0x5BFF, 0x5BFD,
+  0x5C2B, 0x5C84, 0x5C8E, 0x5C9C, 0x5C85, 0x5DF5, 0x5E09, 0x5E0B,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0, 0x5E92, 0x5E90, 0x5F03,
+  0x5F1E, 0x5F63, 0x5FE7, 0x5FFE, 0x5FE6, 0x5FDC, 0x5FCE, 0x5FFC,
+  0x5FDF, 0x5FEC, 0x5FF6, 0x5FF2, 0x5FF0, 0x5FF9, 0x6213, 0x623B,
+plane 08 
+at 0x00
+  0x623C, 0x6282, 0x6278, 0x628B, 0x629E, 0x62A5, 0x629B, 0x629C,
+  0x6299, 0x628D, 0x6285, 0x629D, 0x6275, 0x65F6,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0, 0x66F5, 0x675B, 0x6754, 0x6752, 0x6758,
+  0x6744, 0x674A, 0x6761, 0x6C7F, 0x6C91, 0x6C9E, 0x6C6E, 0x6C7C,
+  0x6C9F, 0x6C75, 0x6C56, 0x6CA2, 0x6C79, 0x6CA1, 0x6CAA, 0x6CA0,
+  0x7079, 0x7077, 0x707E, 0x7075, 0x707B, 0x7264, 0x72BB, 0x72BC,
+  0x72C7, 0x72B9, 0x72BE, 0x72B6,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 09 
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0, 0x7398, 0x7593, 0x7680, 0x7683, 0x76C0, 0x76C1, 0x77F4,
+  0x77F5, 0x7ACC, 0x7ACD, 0x7CFA, 0x809F, 0x8091, 0x8097, 0x8094,
+  0x8286, 0x828C, 0x8295, 0x866C, 0x8FBE, 0x8FC7, 0x8FC1, 0x90A9,
+  0x90A4, 0x90A8, 0x9627, 0x9626, 0x962B, 0x9633, 0x9634, 0x9629,
+  0x4E3D, 0x4E9D,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 10 
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0, 0x4F93,
+  0x4F8A, 0x4F6D, 0x4F8E, 0x4FA0, 0x4FA2, 0x4FA1, 0x4F9F, 0x4FA3,
+  0x4F72, 0x4F8C, 0x5156, 0x5190, 0x51ED, 0x51FE, 0x522F, 0x523C,
+  0x5234, 0x5239, 0x52B9, 0x52B5, 0x52BF, 0x5355, 0x5376, 0x537A,
+  0x5393, 0x53C1, 0x53C2, 0x53D5, 0x5485, 0x545F, 0x5493, 0x5489,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0, 0x8038, 0x8081,
+  0x8158, 0x8A24, 0x8DC3, 0x51F2, 0x55B6, 0x5EC3, 0x7861, 0x7A01,
+  0x8849, 0x8999, 0x921F, 0x5313, 0x55E0, 0x6139, 0x6ED7, 0x733D,
+  0x9775, 0x7FE4, 0x8088, 0x5655, 0x617F, 0x71D7, 0x8666, 0x8F3A,
+  0x933D, 0x64F5, 0x7F80, 0x8D01, 0x58E1, 0x7CE9, 0x81CB, 0x95D9,
+  0x6707, 0x9A47, 0x7674, 0x5301, 0x53FA, 0x9F99, 0x6C49, 0x8FB7,
+  0x4F29, 0x534E, 0x5C81, 0x5F10, 0x6268, 0x6742, 0x6740, 0x51EA,
+  0x6C62, 0x7391, 0x8FBB, 0x8FBC, 0x56E8, 0x575B, 0x5C97, 0x6762,
+  0x62A4, 0x6766, 0x6CA3, 0x707F, 0x77F6, 0x5479, 0x9EFE, 0x548F,
+  0x5469, 0x546D, 0x5494, 0x546A, 0x548A, 0x56FD, 0x56FB, 0x56F8,
+  0x56FC, 0x56F6, 0x5765, 0x5781, 0x5763, 0x5767, 0x576E, 0x5778,
+  0x577F, 0x58F3, 0x594B, 0x594C, 0x59AD, 0x59C4, 0x59C2, 0x59B0,
+plane 11 
+at 0x00
+  0x59BF, 0x59C9, 0x59B8, 0x59AC, 0x59B7, 0x59D7, 0x8FC8, 0x4FAB,
+  0x5C2D, 0x549C, 0x5788, 0x62C3, 0x6619, 0x67A1, 0x67A6, 0x77FE,
+  0x7F57, 0x82C5, 0x8FDF, 0x8FDC, 0x4FE4, 0x551B, 0x57AA, 0x57AB,
+  0x5BA9, 0x6811, 0x7551, 0x7553, 0x7818, 0x7AD7, 0x7C7E, 0x867E,
+  0x5266, 0x5520, 0x5521, 0x57D7, 0x5BBE, 0x6857, 0x7F3C, 0x8273,
+  0x96BE, 0x66FA, 0x5A72, 0x68BD, 0x6E15, 0x7413, 0x74F8, 0x7B3D,
+  0x76D8, 0x79FC, 0x7B39, 0x7D4B, 0x83B9, 0x86CF, 0x8EAE, 0x96EB,
+  0x55B0, 0x5840, 0x5842, 0x692B, 0x6916, 0x691B, 0x6927, 0x6BF5,
+  0x6E82, 0x6E7A, 0x7129, 0x7CAB, 0x7CAC, 0x83F7, 0x9596, 0x55F1,
+  0x5F41, 0x698A, 0x698C, 0x6980, 0x697F, 0x789C, 0x7B7B, 0x90D2,
+  0x95A0, 0x51A9, 0x7195, 0x7198, 0x7478, 0x78B9, 0x7A33, 0x7CC0,
+  0x7CC1, 0x8744, 0x9064, 0x9277, 0x92AF, 0x5E64, 0x6A2B, 0x6F46,
+  0x6F9A, 0x92F2, 0x9B79, 0x567A, 0x5F5C, 0x65D9, 0x6A72, 0x6A78,
+  0x6B5A, 0x8EBE, 0x933B, 0x9340, 0x933A, 0x9B96, 0x71F5, 0x7A50,
+  0x9387, 0x9385, 0x9BB1, 0x9D47, 0x93B9, 0x93BF, 0x9BCF, 0x9D64,
+  0x9EBF, 0x89B8, 0x9BF3, 0x7C4F, 0x9425, 0x95E6, 0x9C2F, 0x6B0C,
+  0x9C47, 0x7936, 0x6B15, 0x53B5, 0x4F66, 0x4F68, 0x4FE7, 0x503F,
+  0x50A6, 0x510F, 0x523E, 0x5324, 0x5365, 0x539B, 0x517F, 0x54CB,
+  0x5573, 0x5571, 0x556B, 0x55F4, 0x5622, 0x5620, 0x5692, 0x56BA,
+  0x5691, 0x56B0, 0x5759, 0x578A, 0x580F, 0x5812, 0x5813, 0x5847,
+  0x589B, 0x5900, 0x594D, 0x5B60, 0x5B96, 0x5B9E, 0x5B94, 0x5B9F,
+  0x5B9D, 0x5C00, 0x5C19, 0x5C49, 0x5C4A, 0x5CBB, 0x5CC1, 0x5CB9,
+  0x5C9E, 0x5CB4, 0x5CBA, 0x5DF6, 0x5E13, 0x5E12, 0x5E77, 0x5E98,
+  0x5E99, 0x5E9D, 0x5EF8, 0x5EF9, 0x5F06, 0x5F21, 0x5F25, 0x5F55,
+  0x5F84, 0x5F83, 0x6030, 0x6007, 0x5AD1, 0x5AD3, 0x5B67, 0x5C57,
+  0x5C77, 0x5CD5, 0x5D75, 0x5D8E, 0x5DA5, 0x5DB6, 0x5DBF, 0x5E65,
+  0x5ECD, 0x5EED, 0x5F94, 0x5F9A, 0x5FBA, 0x6125, 0x6150, 0x62A3,
+  0x6360, 0x6364, 0x63B6, 0x6403, 0x64B6, 0x651A, 0x7A25, 0x5C21,
+  0x66E2, 0x6702, 0x67A4, 0x67AC, 0x6810, 0x6806, 0x685E, 0x685A,
+  0x692C, 0x6929, 0x6A2D, 0x6A77, 0x6A7A, 0x6ACA, 0x6AE6, 0x6AF5,
+  0x6B0D, 0x6B0E, 0x6BDC, 0x6BDD, 0x6BF6, 0x6C1E, 0x6C63, 0x6DA5,
+  0x6E0F, 0x6E8A, 0x6E84, 0x6E8B, 0x6E7C, 0x6F4C, 0x6F48, 0x6F49,
+plane 12 
+at 0x00
+  0x6F9D, 0x6F99, 0x6FF8, 0x702E, 0x702D, 0x705C, 0x79CC, 0x70BF,
+  0x70EA, 0x70E5, 0x7111, 0x7112, 0x713F, 0x7139, 0x713B, 0x713D,
+  0x7177, 0x7175, 0x7176, 0x7171, 0x7196, 0x7193, 0x71B4, 0x71DD,
+  0x71DE, 0x720E, 0x5911, 0x7218, 0x7347, 0x7348, 0x73EF, 0x7412,
+  0x743B, 0x74A4, 0x748D, 0x74B4, 0x7673, 0x7677, 0x76BC, 0x7819,
+  0x781B, 0x783D, 0x7853, 0x7854, 0x7858, 0x78B7, 0x78D8, 0x78EE,
+  0x7922, 0x794D, 0x7986, 0x7999, 0x79A3, 0x79BC, 0x7AA7, 0x7B37,
+  0x7B59, 0x7BD0, 0x7C2F, 0x7C32, 0x7C42, 0x7C4E, 0x7C68, 0x7CA9,
+  0x7CED, 0x7DD0, 0x7E07, 0x7DD3, 0x7E64, 0x7F40, 0x8041, 0x8063,
+  0x80BB, 0x6711, 0x6725, 0x8248, 0x8310, 0x8362, 0x8312, 0x8421,
+  0x841E, 0x84E2, 0x84DE, 0x84E1, 0x8573, 0x85D4, 0x85F5, 0x8637,
+  0x8645, 0x8672, 0x874A, 0x87A9, 0x87A5, 0x87F5, 0x8834, 0x8850,
+  0x8887, 0x6036, 0x5FE9, 0x603D, 0x6008, 0x62BA, 0x62B2, 0x62B7,
+  0x62E4, 0x62A7, 0x62D5, 0x62E1, 0x62DD, 0x62A6, 0x62C1, 0x62C5,
+  0x62C0, 0x62DF, 0x62E0, 0x62DE, 0x6589, 0x65A6, 0x65BA, 0x65FF,
+  0x6617, 0x6618, 0x6601, 0x65FE, 0x670C, 0x676B, 0x6796, 0x6782,
+  0x678A, 0x67A3, 0x8954, 0x8984, 0x8B03, 0x8C52, 0x8CD8, 0x8D0C,
+  0x8D18, 0x8DB0, 0x8EBC, 0x8ED5, 0x8FAA, 0x909C, 0x915C, 0x922B,
+  0x9221, 0x9273, 0x92F4, 0x92F5, 0x933F, 0x9342, 0x9386, 0x93BE,
+  0x93BC, 0x93BD, 0x93F1, 0x93F2, 0x93EF, 0x9422, 0x9423, 0x9424,
+  0x9467, 0x9466, 0x9597, 0x95CE, 0x95E7, 0x973B, 0x974D, 0x98E4,
+  0x9942, 0x9B1D, 0x9B98, 0x9D49, 0x6449, 0x5E71, 0x5E85, 0x61D3,
+  0x990E, 0x8002, 0x781E, 0x5528, 0x5572, 0x55BA, 0x55F0, 0x55EE,
+  0x56B8, 0x56B9, 0x56C4, 0x8053, 0x92B0, 0x4E13, 0x4E1A, 0x4E1B,
+  0x4E1C, 0x4E1D, 0x4E25, 0x4E27, 0x4E2C, 0x4E34, 0x4E3A, 0x4E3E,
+  0x4E4C, 0x4E50, 0x4E60, 0x4E61, 0x4E66, 0x4E70, 0x4E78, 0x4E9A,
+  0x4EA7, 0x4EA9, 0x4EAA, 0x4EB5, 0x4EB8, 0x4EBB, 0x4EBF, 0x4ED1,
+  0x4ED3, 0x4EEA, 0x4EEB, 0x4EEC, 0x4F1E, 0x4F1F, 0x4F20, 0x4F21,
+  0x4F23, 0x4F24, 0x4F25, 0x4F26, 0x4F27, 0x4F2A, 0x4F2B, 0x4F65,
+  0x4FA5, 0x4FA6, 0x4FA7, 0x4FA8, 0x4FA9, 0x4FAA, 0x4FAC, 0x4FE6,
+  0x4FE8, 0x4FEA, 0x4FEB, 0x4FED, 0x503A, 0x503D, 0x503E, 0x507E,
+  0x507F, 0x50A4, 0x50A5, 0x50A7, 0x50A8, 0x50A9, 0x5170, 0x5174,
+plane 13 
+at 0x00
+  0x517B, 0x517D, 0x5181, 0x519A, 0x519B, 0x519C, 0x51A7, 0x51AE,
+  0x51AF, 0x51BB, 0x51EB, 0x51EF, 0x51FB, 0x51FC, 0x51FF, 0x520D,
+  0x5219, 0x521A, 0x521B, 0x522C, 0x522D, 0x523F, 0x5240, 0x5242,
+  0x5250, 0x5251, 0x528F, 0x52A1, 0x52A2, 0x52B2, 0x52CB, 0x67A2,
+  0x678F, 0x67F9, 0x6780, 0x6B26, 0x6B27, 0x6B68, 0x6B69, 0x6B81,
+  0x6BB4, 0x6BD1, 0x6C1C, 0x6C97, 0x6C6C, 0x6CDF, 0x6CEA, 0x6CE4,
+  0x6CD8, 0x6CB2, 0x6CCE, 0x6CC8, 0x708B, 0x7088, 0x7090, 0x708F,
+  0x7087, 0x7089, 0x708D, 0x7081, 0x708C, 0x7240, 0x7265, 0x7266,
+  0x52DA, 0x5326, 0x532E, 0x5356, 0x5362, 0x536B, 0x5385, 0x538C,
+  0x538D, 0x5390, 0x5395, 0x53A2, 0x53A3, 0x53BF, 0x53C6, 0x53C7,
+  0x53D1, 0x53D8, 0x53FE, 0x5417, 0x5452, 0x5453, 0x5456, 0x5457,
+  0x5458, 0x5459, 0x545B, 0x545C, 0x5497, 0x5499, 0x549B, 0x549D,
+  0x54D1, 0x54D2, 0x54D3, 0x54D4, 0x54D5, 0x54D7, 0x54D9, 0x54DC,
+  0x54DD, 0x54DF, 0x551D, 0x551E, 0x5522, 0x5523, 0x5524, 0x5525,
+  0x5567, 0x556C, 0x556D, 0x556E, 0x556F, 0x5570, 0x5574, 0x5578,
+  0x5579, 0x55B7, 0x55B9, 0x55BC, 0x55BE, 0x55EB, 0x55EC, 0x55F3,
+  0x55F5, 0x5621, 0x5623, 0x5624, 0x5625, 0x565C, 0x565D, 0x567C,
+  0x56A1, 0x56A3, 0x56A4, 0x56D6, 0x56E2, 0x56F4, 0x56F5, 0x56FE,
+  0x5706, 0x5719, 0x5739, 0x573A, 0x575A, 0x575C, 0x575D, 0x575E,
+  0x5760, 0x5784, 0x5785, 0x57AD, 0x57AF, 0x57B1, 0x57B2, 0x57D8,
+  0x57D9, 0x57DA, 0x5811, 0x5816, 0x5846, 0x5899, 0x58B6, 0x58CB,
+  0x58EA, 0x58F6, 0x58F8, 0x5907, 0x5939, 0x593A, 0x5941, 0x5942,
+  0x5956, 0x5987, 0x5988, 0x59A9, 0x59AA, 0x59AB, 0x5A05, 0x5A06,
+  0x5A07, 0x5A08, 0x5A32, 0x5A34, 0x5A74, 0x5A76, 0x5AAD, 0x5AD2,
+  0x5AD4, 0x5AF1, 0x5AF2, 0x5B59, 0x5B6D, 0x5BA0, 0x5BA1, 0x5BAA,
+  0x5BBD, 0x5BFB, 0x5BFC, 0x5C1C, 0x5C1D, 0x5C27, 0x5C34, 0x5C42,
+  0x5C43, 0x5C66, 0x5C72, 0x5C7F, 0x5C82, 0x5C83, 0x5C96, 0x5C98,
+  0x5C99, 0x5C9A, 0x5C9B, 0x5CBD, 0x5CBF, 0x7268, 0x72CD, 0x72D3,
+  0x72DB, 0x72CF, 0x73A7, 0x73A3, 0x739E, 0x73AF, 0x73AA, 0x739C,
+  0x7542, 0x7544, 0x753B, 0x7541, 0x759B, 0x759E, 0x79C4, 0x79C3,
+  0x79C6, 0x79C7, 0x79CA, 0x7ACF, 0x7C76, 0x7C74, 0x7CFF, 0x7CFC,
+  0x7F59, 0x80A8, 0x80B0, 0x80B3, 0x80A4, 0x80B6, 0x5CC2, 0x5CC3,
+plane 14 
+at 0x00
+  0x5CC4, 0x5CE3, 0x5CE4, 0x5CE7, 0x5D02, 0x5D03, 0x5D04, 0x5D05,
+  0x5D2D, 0x5D58, 0x5D5A, 0x5D5D, 0x5DC5, 0x5DEF, 0x5E05, 0x5E0F,
+  0x5E10, 0x5E1C, 0x5E26, 0x5E27, 0x5E31, 0x5E3B, 0x5E3C, 0x5E86,
+  0x5E91, 0x5E93, 0x5E94, 0x5E9E, 0x5E9F, 0x5EBC, 0x5F20, 0x5F2A,
+  0x5F5F, 0x5F68, 0x5F7B, 0x5F95, 0x6001, 0x6002, 0x6003, 0x6004,
+  0x6005, 0x6006, 0x603B, 0x603C, 0x603F, 0x6076, 0x6078, 0x6079,
+  0x607A, 0x607B, 0x607D, 0x60AB, 0x60AC, 0x60AD, 0x60AF, 0x60EB,
+  0x60EC, 0x60ED, 0x60EF, 0x6124, 0x6126, 0x6151, 0x61D1, 0x61D2,
+  0x61D4, 0x6206, 0x620B, 0x6217, 0x6269, 0x626A, 0x626B, 0x626C,
+  0x629F, 0x62A0, 0x62A1, 0x62A2, 0x62E2, 0x62E3, 0x62E6, 0x62E7,
+  0x62E8, 0x62E9, 0x631A, 0x631C, 0x631D, 0x631E, 0x6320, 0x6322,
+  0x6324, 0x6325, 0x6326, 0x635E, 0x635F, 0x6361, 0x6362, 0x6363,
+  0x63B3, 0x63B7, 0x63B8, 0x63B9, 0x63BC, 0x63FB, 0x63FC, 0x63FD,
+  0x63FF, 0x6400, 0x6401, 0x6402, 0x6404, 0x6405, 0x6444, 0x6445,
+  0x6448, 0x644A, 0x6484, 0x64B5, 0x64B7, 0x64B8, 0x64BA, 0x64DD,
+  0x64DE, 0x6512, 0x6569, 0x6586, 0x658F, 0x6593, 0x65A9, 0x65F7,
+  0x65F8, 0x663D, 0x663E, 0x6653, 0x6654, 0x6655, 0x6656, 0x6682,
+  0x66A7, 0x6743, 0x6767, 0x6768, 0x6769, 0x67A5, 0x67A7, 0x67A8,
+  0x67AA, 0x67AB, 0x67AD, 0x67FD, 0x6807, 0x6808, 0x6809, 0x680A,
+  0x680B, 0x680C, 0x680E, 0x80A7, 0x80AC, 0x80A6, 0x5367, 0x820E,
+  0x82C4, 0x833E, 0x829C, 0x82AA, 0x82C9, 0x82A6, 0x82B2, 0x8FCC,
+  0x8FD9, 0x8FCA, 0x8FD8, 0x8FCF, 0x90B7, 0x90AD, 0x90B9, 0x9637,
+  0x9641, 0x963E, 0x9751, 0x9763, 0x4E57, 0x4E79, 0x4EB2, 0x4EB0,
+  0x4EAF, 0x4EB1, 0x4FD2, 0x4FD5, 0x680F, 0x6860, 0x6861, 0x6862,
+  0x6864, 0x6865, 0x6866, 0x6868, 0x6869, 0x686A, 0x68BE, 0x68BF,
+  0x68C0, 0x691D, 0x691F, 0x6920, 0x6924, 0x692D, 0x6984, 0x6987,
+  0x6988, 0x6989, 0x69DA, 0x69DB, 0x69DC, 0x69DF, 0x69E0, 0x6A2F,
+  0x6A31, 0x6A79, 0x6A7C, 0x6AA9, 0x6B7C, 0x6B87, 0x6B92, 0x6B93,
+  0x6B9A, 0x6BC2, 0x6BD5, 0x6BD9, 0x6C07, 0x6C22, 0x6C29, 0x6C47,
+  0x6C48, 0x6C64, 0x6CA4, 0x6CA5, 0x6CA6, 0x6CA7, 0x6CA8, 0x6CA9,
+  0x6CF6, 0x6CF7, 0x6CF8, 0x6CFA, 0x6CFB, 0x6CFC, 0x6CFD, 0x6CFE,
+  0x6D46, 0x6D47, 0x6D48, 0x6D49, 0x6D4A, 0x6D4B, 0x6D4D, 0x6D4E,
+plane 15 
+at 0x00
+  0x6D4F, 0x6D50, 0x6D51, 0x6D52, 0x6D53, 0x6D54, 0x6D55, 0x6D9D,
+  0x6D9F, 0x6DA0, 0x6DA1, 0x6DA2, 0x6DA3, 0x6DA4, 0x6DA6, 0x6DA7,
+  0x6DA8, 0x6DA9, 0x6E0D, 0x6E0E, 0x6E10, 0x6E11, 0x6E14, 0x6E16,
+  0x6E81, 0x6E83, 0x6E85, 0x6E87, 0x6EDF, 0x6EE0, 0x6EE1, 0x6EE2,
+  0x6EE4, 0x6EE5, 0x6EE7, 0x6EEA, 0x6F47, 0x6F4B, 0x6F4D, 0x6F9B,
+  0x6F9C, 0x6FD1, 0x6FD2, 0x704F, 0x706D, 0x7080, 0x709C, 0x709D,
+  0x709E, 0x70BC, 0x70BD, 0x70C1, 0x70C2, 0x70C3, 0x70E6, 0x70E7,
+  0x70E8, 0x70E9, 0x70EB, 0x70EC, 0x70ED, 0x7115, 0x7116, 0x7118,
+  0x7140, 0x71F7, 0x7231, 0x7237, 0x724D, 0x7275, 0x728A, 0x72B7,
+  0x72B8, 0x72C8, 0x72DE, 0x72EE, 0x72EF, 0x72F0, 0x72F1, 0x72F2,
+  0x7303, 0x7321, 0x736D, 0x7399, 0x739A, 0x739B, 0x73AE, 0x73B0,
+  0x73B1, 0x4FBE, 0x4FB8, 0x4FB0, 0x4FB1, 0x4FC8, 0x4FC6, 0x4FCC,
+  0x4FE5, 0x4FE3, 0x4FB4, 0x516A, 0x519F, 0x51C1, 0x51C2, 0x51C3,
+  0x5245, 0x5248, 0x524F, 0x52C5, 0x52CA, 0x52C4, 0x5327, 0x5358,
+  0x537D, 0x53DD, 0x53DC, 0x53DA, 0x53D9, 0x54B9, 0x54D0, 0x54B4,
+  0x54CA, 0x54A3, 0x73D1, 0x73F0, 0x73F2, 0x740E, 0x740F, 0x7410,
+  0x7437, 0x7477, 0x748E, 0x74D2, 0x7519, 0x7534, 0x7535, 0x7545,
+  0x758D, 0x7596, 0x759F, 0x75A0, 0x75A1, 0x75AC, 0x75AD, 0x75AE,
+  0x75AF, 0x75C8, 0x75C9, 0x75D6, 0x75E8, 0x75EA, 0x75EB, 0x7605,
+  0x7617, 0x7618, 0x762A, 0x762B, 0x763E, 0x763F, 0x765D, 0x765E,
+  0x7663, 0x7666, 0x766B, 0x7691, 0x76B1, 0x76B2, 0x76CF, 0x76D0,
+  0x76D1, 0x770D, 0x772C, 0x7750, 0x7751, 0x7786, 0x7792, 0x7793,
+  0x77CB, 0x77EB, 0x77FF, 0x7800, 0x7801, 0x7816, 0x7817, 0x781A,
+  0x781C, 0x7839, 0x783B, 0x783E, 0x7840, 0x7841, 0x7855, 0x7856,
+  0x7857, 0x7859, 0x785A, 0x785B, 0x7875, 0x7877, 0x789B, 0x78D7,
+  0x78D9, 0x7903, 0x7933, 0x7943, 0x794E, 0x796F, 0x7978, 0x79EF,
+  0x79FE, 0x7A06, 0x7A23, 0x7A51, 0x7A52, 0x7A5E, 0x7A77, 0x7A8D,
+  0x7A8E, 0x7A9C, 0x7A9D, 0x7AA5, 0x7AA6, 0x7AAD, 0x7AD6, 0x7ADE,
+  0x7B03, 0x7B15, 0x7B3A, 0x7B3C, 0x7B3E, 0x7B5A, 0x7B5B, 0x7B5C,
+  0x7B7C, 0x7B7E, 0x7B7F, 0x7B80, 0x7BA6, 0x7BA7, 0x7BA8, 0x7BA9,
+  0x7BAB, 0x7BD1, 0x7BD3, 0x7BEE, 0x7BEF, 0x7C16, 0x7C41, 0x7CAA,
+  0x7CF9, 0x7D27, 0x7D77, 0x7DD4, 0x7E06, 0x7E9F, 0x7EA0, 0x7EA1,
+plane 16 
+at 0x00
+  0x7EA2, 0x7EA3, 0x7EA4, 0x7EA5, 0x7EA6, 0x7EA7, 0x7EA8, 0x7EA9,
+  0x7EAA, 0x7EAB, 0x7EAC, 0x7EAD, 0x7EAE, 0x7EAF, 0x7EB0, 0x7EB1,
+  0x7EB2, 0x7EB3, 0x7EB4, 0x7EB5, 0x7EB6, 0x7EB7, 0x7EB8, 0x54DA,
+  0x54A4, 0x54B2, 0x549E, 0x549F, 0x54B5, 0x54CD, 0x54CC, 0x5700,
+  0x57AC, 0x5791, 0x578E, 0x578D, 0x5792, 0x57A1, 0x5790, 0x57A6,
+  0x57A8, 0x579C, 0x5796, 0x57A7, 0x58F5, 0x5909, 0x5908, 0x5952,
+  0x59DF, 0x59EB, 0x59EF, 0x59F0, 0x59D5, 0x5A0D, 0x5A04, 0x59F9,
+  0x7EB9, 0x7EBA, 0x7EBB, 0x7EBC, 0x7EBD, 0x7EBE, 0x7EBF, 0x7EC0,
+  0x7EC1, 0x7EC2, 0x7EC3, 0x7EC4, 0x7EC5, 0x7EC6, 0x7EC7, 0x7EC8,
+  0x7EC9, 0x7ECA, 0x7ECB, 0x7ECC, 0x7ECD, 0x7ECE, 0x7ECF, 0x7ED0,
+  0x7ED1, 0x7ED2, 0x7ED3, 0x7ED4, 0x7ED5, 0x7ED6, 0x7ED7, 0x7ED8,
+  0x7ED9, 0x7EDA, 0x7EDB, 0x7EDC, 0x7EDD, 0x7EDE, 0x7EDF, 0x7EE0,
+  0x7EE1, 0x7EE2, 0x7EE3, 0x7EE4, 0x7EE5, 0x7EE6, 0x7EE7, 0x7EE8,
+  0x7EE9, 0x7EEA, 0x7EEB, 0x7EEC, 0x7EED, 0x7EEE, 0x7EEF, 0x7EF0,
+  0x7EF1, 0x7EF2, 0x7EF3, 0x7EF4, 0x7EF5, 0x7EF6, 0x7EF7, 0x7EF8,
+  0x7EF9, 0x7EFA, 0x7EFB, 0x7EFC, 0x7EFD, 0x7EFE, 0x7EFF, 0x7F00,
+  0x7F01, 0x7F02, 0x7F03, 0x7F04, 0x7F05, 0x7F06, 0x7F07, 0x7F08,
+  0x7F09, 0x7F0A, 0x7F0B, 0x7F0C, 0x7F0D, 0x7F0E, 0x7F0F, 0x7F10,
+  0x7F11, 0x7F12, 0x7F13, 0x7F14, 0x7F15, 0x7F16, 0x7F17, 0x7F18,
+  0x7F19, 0x7F1A, 0x7F1B, 0x7F1C, 0x7F1D, 0x7F1E, 0x7F1F, 0x7F20,
+  0x7F21, 0x7F22, 0x7F23, 0x7F24, 0x7F25, 0x7F26, 0x7F27, 0x7F28,
+  0x7F29, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D, 0x7F2E, 0x7F2F, 0x7F30,
+  0x7F31, 0x7F32, 0x7F33, 0x7F34, 0x7F35, 0x7F42, 0x7F49, 0x7F56,
+  0x7F5A, 0x7F74, 0x7F81, 0x7F9F, 0x7FD8, 0x7FD9, 0x7FDA, 0x8022,
+  0x8027, 0x8042, 0x804B, 0x804C, 0x804D, 0x8054, 0x8069, 0x8080,
+  0x8083, 0x80A0, 0x80BC, 0x80BD, 0x80BE, 0x80BF, 0x80C0, 0x80C1,
+  0x80E7, 0x80E8, 0x80E9, 0x80EA, 0x80EB, 0x5A02, 0x59F8, 0x59E2,
+  0x59D9, 0x59E7, 0x5B6A, 0x5BAB, 0x5C1B, 0x5C2F, 0x663C, 0x5CD1,
+  0x5CDC, 0x5CE6, 0x5CE1, 0x5CCD, 0x5CE2, 0x5CDD, 0x5CE5, 0x5DFB,
+  0x5DFA, 0x5E1E, 0x5EA1, 0x5EFC, 0x5EFB, 0x5F2F, 0x5F66, 0x605C,
+  0x604E, 0x6051, 0x6023, 0x6031, 0x607C, 0x6060, 0x80EC, 0x810C,
+  0x810D, 0x810E, 0x810F, 0x8110, 0x8111, 0x8112, 0x8113, 0x8132,
+plane 17 
+at 0x00
+  0x8136, 0x8137, 0x8138, 0x8156, 0x8159, 0x815A, 0x817B, 0x817C,
+  0x817E, 0x8191, 0x81A5, 0x81B6, 0x81DC, 0x8206, 0x8223, 0x8230,
+  0x8231, 0x823B, 0x823E, 0x8254, 0x8270, 0x8282, 0x8288, 0x8297,
+  0x82C7, 0x82C8, 0x82CB, 0x82CC, 0x82CD, 0x82CE, 0x82CF, 0x830F,
+  0x8311, 0x8313, 0x8314, 0x8315, 0x8359, 0x835A, 0x835B, 0x835C,
+  0x835D, 0x835E, 0x835F, 0x8360, 0x8361, 0x8364, 0x8365, 0x8366,
+  0x8367, 0x8368, 0x8369, 0x836A, 0x836B, 0x836C, 0x836D, 0x836E,
+  0x836F, 0x83B2, 0x83B3, 0x83B4, 0x83B6, 0x83B8, 0x83BA, 0x83BC,
+  0x841A, 0x841C, 0x841D, 0x8424, 0x8425, 0x8426, 0x8427, 0x8428,
+  0x8487, 0x8489, 0x848C, 0x84DD, 0x84DF, 0x84E0, 0x84E3, 0x84E5,
+  0x84E6, 0x8537, 0x8539, 0x853A, 0x853C, 0x8572, 0x8574, 0x85D3,
+  0x8614, 0x864F, 0x867F, 0x8680, 0x8681, 0x8682, 0x8683, 0x86AC,
+  0x86F0, 0x86F1, 0x86F2, 0x86F3, 0x86F4, 0x8717, 0x8748, 0x877E,
+  0x8780, 0x87A8, 0x87CF, 0x8854, 0x8865, 0x886C, 0x8885, 0x8886,
+  0x88AD, 0x88AF, 0x88C6, 0x88C7, 0x88C8, 0x88E2, 0x88E3, 0x88E4,
+  0x88E5, 0x8934, 0x8947, 0x8955, 0x8980, 0x89C1, 0x89C2, 0x89C3,
+  0x89C4, 0x89C5, 0x89C6, 0x89C7, 0x89C8, 0x89C9, 0x89CA, 0x89CB,
+  0x89CC, 0x89CD, 0x89CE, 0x89CF, 0x89D0, 0x89D1, 0x89DE, 0x89EF,
+  0x8A01, 0x8A1A, 0x8A5F, 0x604A, 0x6061, 0x6218, 0x631F, 0x6317,
+  0x62EA, 0x6321, 0x6304, 0x6305, 0x6531, 0x6544, 0x6540, 0x6542,
+  0x65BE, 0x6629, 0x661B, 0x6623, 0x662C, 0x661A, 0x6630, 0x663B,
+  0x661E, 0x6637, 0x6638, 0x670E, 0x67E8, 0x67D6, 0x67C7, 0x67BC,
+  0x6852, 0x67BF, 0x67D5, 0x67FE, 0x8A8A, 0x8BA0, 0x8BA1, 0x8BA2,
+  0x8BA3, 0x8BA4, 0x8BA5, 0x8BA6, 0x8BA7, 0x8BA8, 0x8BA9, 0x8BAA,
+  0x8BAB, 0x8BAC, 0x8BAD, 0x8BAE, 0x8BAF, 0x8BB0, 0x8BB1, 0x8BB2,
+  0x8BB3, 0x8BB4, 0x8BB5, 0x8BB6, 0x8BB7, 0x8BB8, 0x8BB9, 0x8BBA,
+  0x8BBB, 0x8BBC, 0x8BBD, 0x8BBE, 0x8BBF, 0x8BC0, 0x8BC1, 0x8BC2,
+  0x8BC3, 0x8BC4, 0x8BC5, 0x8BC6, 0x8BC7, 0x8BC8, 0x8BC9, 0x8BCA,
+  0x8BCB, 0x8BCC, 0x8BCD, 0x8BCE, 0x8BCF, 0x8BD0, 0x8BD1, 0x8BD2,
+  0x8BD3, 0x8BD4, 0x8BD5, 0x8BD6, 0x8BD7, 0x8BD8, 0x8BD9, 0x8BDA,
+  0x8BDB, 0x8BDC, 0x8BDD, 0x8BDE, 0x8BDF, 0x8BE0, 0x8BE1, 0x8BE2,
+  0x8BE3, 0x8BE4, 0x8BE5, 0x8BE6, 0x8BE7, 0x8BE8, 0x8BE9, 0x8BEA,
+plane 18 
+at 0x00
+  0x8BEB, 0x8BEC, 0x8BED, 0x8BEE, 0x8BEF, 0x8BF0, 0x8BF1, 0x8BF2,
+  0x8BF3, 0x8BF4, 0x8BF5, 0x8BF6, 0x8BF7, 0x8BF8, 0x8BF9, 0x8BFA,
+  0x8BFB, 0x8BFC, 0x8BFD, 0x8BFE, 0x8BFF, 0x8C00, 0x8C01, 0x8C02,
+  0x8C03, 0x8C04, 0x8C05, 0x8C06, 0x8C07, 0x8C08, 0x8C09, 0x8C0A,
+  0x8C0B, 0x8C0C, 0x8C0D, 0x8C0E, 0x8C0F, 0x8C10, 0x8C11, 0x8C12,
+  0x8C13, 0x8C14, 0x8C15, 0x8C16, 0x8C17, 0x8C18, 0x8C19, 0x8C1A,
+  0x8C1B, 0x8C1C, 0x8C1D, 0x8C1E, 0x8C1F, 0x8C20, 0x8C21, 0x8C22,
+  0x8C23, 0x8C24, 0x8C25, 0x8C26, 0x8C27, 0x8C28, 0x8C29, 0x8C2A,
+  0x8C2B, 0x8C2C, 0x8C2D, 0x8C2E, 0x8C2F, 0x8C30, 0x8C31, 0x8C32,
+  0x8C33, 0x8C34, 0x8C35, 0x8C36, 0x8C6E, 0x8D1D, 0x8D1E, 0x8D1F,
+  0x8D20, 0x8363, 0x67FB, 0x67B1, 0x6801, 0x6805, 0x6800, 0x67D7,
+  0x6B2A, 0x6B6B, 0x6BE1, 0x6D23, 0x6CFF, 0x6D14, 0x6D05, 0x6D13,
+  0x6D06, 0x6D21, 0x6D15, 0x6CAF, 0x6CF4, 0x6D02, 0x6D45, 0x6D26,
+  0x6D44, 0x6D24, 0x70A5, 0x70A3, 0x70A2, 0x70BB, 0x70A0, 0x70AA,
+  0x70A8, 0x70B6, 0x8D21, 0x8D22, 0x8D23, 0x8D24, 0x8D25, 0x8D26,
+  0x8D27, 0x8D28, 0x8D29, 0x8D2A, 0x8D2B, 0x8D2C, 0x8D2D, 0x8D2E,
+  0x8D2F, 0x8D30, 0x8D31, 0x8D32, 0x8D33, 0x8D34, 0x8D35, 0x8D36,
+  0x8D37, 0x8D38, 0x8D39, 0x8D3A, 0x8D3B, 0x8D3C, 0x8D3D, 0x8D3E,
+  0x8D3F, 0x8D40, 0x8D41, 0x8D42, 0x8D43, 0x8D44, 0x8D45, 0x8D46,
+  0x8D47, 0x8D48, 0x8D49, 0x8D4A, 0x8D4B, 0x8D4C, 0x8D4D, 0x8D4E,
+  0x8D4F, 0x8D50, 0x8D51, 0x8D52, 0x8D53, 0x8D54, 0x8D55, 0x8D56,
+  0x8D57, 0x8D58, 0x8D59, 0x8D5A, 0x8D5B, 0x8D5C, 0x8D5D, 0x8D5E,
+  0x8D5F, 0x8D60, 0x8D61, 0x8D62, 0x8D63, 0x8D6A, 0x8D75, 0x8DB1,
+  0x8DB8, 0x8DC4, 0x8DDE, 0x8DF6, 0x8DF7, 0x8DF8, 0x8DF9, 0x8DFB,
+  0x8E0C, 0x8E0E, 0x8E2C, 0x8E2D, 0x8E2F, 0x8E52, 0x8E7E, 0x8E7F,
+  0x8E80, 0x8E8F, 0x8E9C, 0x8ECE, 0x8F66, 0x8F67, 0x8F68, 0x8F69,
+  0x8F6A, 0x8F6B, 0x8F6C, 0x8F6D, 0x8F6E, 0x8F6F, 0x8F70, 0x8F71,
+  0x8F72, 0x8F73, 0x8F74, 0x8F75, 0x8F76, 0x8F77, 0x8F78, 0x8F79,
+  0x8F7A, 0x8F7B, 0x8F7C, 0x8F7D, 0x8F7E, 0x8F7F, 0x8F80, 0x8F81,
+  0x8F82, 0x8F83, 0x8F84, 0x8F85, 0x8F86, 0x8F87, 0x8F88, 0x8F89,
+  0x8F8A, 0x8F8B, 0x8F8C, 0x8F8D, 0x8F8E, 0x8F8F, 0x8F90, 0x8F91,
+  0x8F92, 0x8F93, 0x8F94, 0x8F95, 0x8F96, 0x8F97, 0x8F98, 0x8F99,
+plane 19 
+at 0x00
+  0x8F9A, 0x8FA9, 0x8FAB, 0x8FBD, 0x8FDB, 0x8FDD, 0x8FDE, 0x8FF3,
+  0x900A, 0x9026, 0x9057, 0x909D, 0x90AC, 0x90BA, 0x90BB, 0x70B2,
+  0x70A7, 0x70B9, 0x722E, 0x723C, 0x726D, 0x72E7, 0x72ED, 0x72EC,
+  0x72E5, 0x72E2, 0x73C4, 0x73BD, 0x73CF, 0x73C9, 0x73C1, 0x73D0,
+  0x73CE, 0x74ED, 0x74EB, 0x74EF, 0x7549, 0x7550, 0x7546, 0x754A,
+  0x754D, 0x75A6, 0x75A8, 0x76C7, 0x76FF, 0x76FD, 0x77E6, 0x780A,
+  0x90CF, 0x90D0, 0x90D1, 0x90D3, 0x90E6, 0x90E7, 0x90F8, 0x9142,
+  0x915D, 0x915E, 0x9166, 0x9171, 0x917D, 0x917E, 0x917F, 0x91CA,
+  0x91D2, 0x91FA, 0x922A, 0x9274, 0x933E, 0x9341, 0x93F0, 0x9426,
+  0x9485, 0x9486, 0x9487, 0x9488, 0x9489, 0x948A, 0x948B, 0x948C,
+  0x948D, 0x948E, 0x948F, 0x9490, 0x9491, 0x9492, 0x9493, 0x9494,
+  0x9495, 0x9496, 0x9497, 0x9498, 0x9499, 0x949A, 0x949B, 0x949C,
+  0x949D, 0x949E, 0x949F, 0x94A0, 0x94A1, 0x94A2, 0x94A3, 0x94A4,
+  0x94A5, 0x94A6, 0x94A7, 0x94A8, 0x94A9, 0x94AA, 0x94AB, 0x94AC,
+  0x94AD, 0x94AE, 0x94AF, 0x94B0, 0x94B1, 0x94B2, 0x94B3, 0x94B4,
+  0x94B5, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BB, 0x94BC,
+  0x94BD, 0x94BE, 0x94BF, 0x94C0, 0x94C1, 0x94C2, 0x94C3, 0x94C4,
+  0x94C5, 0x94C6, 0x94C7, 0x94C8, 0x94C9, 0x94CA, 0x94CB, 0x94CC,
+  0x94CD, 0x94CE, 0x94CF, 0x94D0, 0x94D1, 0x94D2, 0x94D3, 0x94D4,
+  0x94D5, 0x94D6, 0x94D7, 0x94D8, 0x94D9, 0x94DA, 0x94DB, 0x94DC,
+  0x94DD, 0x94DE, 0x94DF, 0x94E0, 0x94E1, 0x94E2, 0x94E3, 0x94E4,
+  0x94E5, 0x94E6, 0x94E7, 0x94E8, 0x94E9, 0x94EA, 0x94EB, 0x94EC,
+  0x94ED, 0x94EE, 0x94EF, 0x94F0, 0x94F1, 0x94F2, 0x94F3, 0x94F4,
+  0x94F5, 0x94F6, 0x94F7, 0x94F8, 0x94F9, 0x94FA, 0x94FB, 0x94FC,
+  0x94FD, 0x94FE, 0x94FF, 0x9500, 0x9501, 0x9502, 0x9503, 0x9504,
+  0x9505, 0x9506, 0x9507, 0x9508, 0x9509, 0x7804, 0x780B, 0x7807,
+  0x7815, 0x7808, 0x79D3, 0x79D4, 0x79D0, 0x79D7, 0x7A7C, 0x7A7D,
+  0x7A83, 0x7A82, 0x7AD4, 0x7AD5, 0x7AD3, 0x7AD0, 0x7AD2, 0x7AFE,
+  0x7AFC, 0x7C77, 0x7C7C, 0x7C7B, 0x7F8F, 0x80D3, 0x80CB, 0x80D2,
+  0x8109, 0x80E2, 0x80DF, 0x80C6, 0x8224, 0x82F7, 0x950A, 0x950B,
+  0x950C, 0x950D, 0x950E, 0x950F, 0x9510, 0x9511, 0x9512, 0x9513,
+  0x9514, 0x9515, 0x9516, 0x9517, 0x9518, 0x9519, 0x951A, 0x951B,
+plane 20 
+at 0x00
+  0x951C, 0x951D, 0x951E, 0x951F, 0x9520, 0x9521, 0x9522, 0x9523,
+  0x9524, 0x9525, 0x9526, 0x9527, 0x9528, 0x9529, 0x952A, 0x952B,
+  0x952C, 0x952D, 0x952E, 0x952F, 0x9530, 0x9531, 0x9532, 0x9533,
+  0x9534, 0x9535, 0x9536, 0x9537, 0x9538, 0x9539, 0x953A, 0x953B,
+  0x953C, 0x953D, 0x953E, 0x953F, 0x9540, 0x9541, 0x9542, 0x9543,
+  0x9544, 0x9545, 0x9546, 0x9547, 0x9548, 0x9549, 0x954A, 0x954B,
+  0x954C, 0x954D, 0x954E, 0x954F, 0x9550, 0x9551, 0x9552, 0x9553,
+  0x9554, 0x9555, 0x9556, 0x9557, 0x9558, 0x9559, 0x955A, 0x955B,
+  0x955C, 0x955D, 0x955E, 0x955F, 0x9560, 0x9561, 0x9562, 0x9563,
+  0x9564, 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956A, 0x956B,
+  0x956C, 0x956D, 0x956E, 0x956F, 0x9570, 0x9571, 0x9572, 0x9573,
+  0x9574, 0x9575, 0x9576, 0x957F, 0x95E8, 0x95E9, 0x95EA, 0x95EB,
+  0x95EC, 0x95ED, 0x95EE, 0x95EF, 0x95F0, 0x95F1, 0x95F2, 0x95F3,
+  0x95F4, 0x95F5, 0x95F6, 0x95F7, 0x95F8, 0x95F9, 0x95FA, 0x95FB,
+  0x95FC, 0x95FD, 0x95FE, 0x95FF, 0x9600, 0x9601, 0x9602, 0x9603,
+  0x9604, 0x9605, 0x9606, 0x9607, 0x9608, 0x9609, 0x960A, 0x960B,
+  0x960C, 0x960D, 0x960E, 0x960F, 0x9610, 0x9611, 0x9612, 0x9613,
+  0x9614, 0x9615, 0x9616, 0x82D8, 0x82DD, 0x82F8, 0x82FC, 0x82E9,
+  0x82EE, 0x82D0, 0x830E, 0x82E2, 0x830B, 0x82FD, 0x5179, 0x8676,
+  0x8678, 0x8675, 0x867D, 0x8842, 0x8866, 0x898C, 0x8A05, 0x8A06,
+  0x8C9F, 0x8FF1, 0x8FE7, 0x8FE9, 0x8FEF, 0x90C2, 0x90BC, 0x90C6,
+  0x90C0, 0x90CD, 0x90C9, 0x90C4, 0x9617, 0x9618, 0x9619, 0x961A,
+  0x961B, 0x961F, 0x9635, 0x9636, 0x9645, 0x9646, 0x9647, 0x9648,
+  0x9649, 0x9667, 0x9668, 0x9669, 0x9690, 0x96E0, 0x96F3, 0x96FE,
+  0x9701, 0x972D, 0x9753, 0x9754, 0x9765, 0x9791, 0x9792, 0x97AF,
+  0x97E6, 0x97E7, 0x97E8, 0x97E9, 0x97EA, 0x97EB, 0x97EC, 0x9875,
+  0x9876, 0x9877, 0x9878, 0x9879, 0x987A, 0x987B, 0x987C, 0x987D,
+  0x987E, 0x987F, 0x9880, 0x9881, 0x9882, 0x9883, 0x9884, 0x9885,
+  0x9886, 0x9887, 0x9888, 0x9889, 0x988A, 0x988B, 0x988C, 0x988D,
+  0x988E, 0x988F, 0x9890, 0x9891, 0x9892, 0x9893, 0x9894, 0x9895,
+  0x9896, 0x9897, 0x9898, 0x9899, 0x989A, 0x989B, 0x989C, 0x989D,
+  0x989E, 0x989F, 0x98A0, 0x98A1, 0x98A2, 0x98A3, 0x98A4, 0x98A5,
+plane 21 
+at 0x00
+  0x98A6, 0x98A7, 0x98CE, 0x98CF, 0x98D0, 0x98D1, 0x98D2, 0x98D3,
+  0x98D4, 0x98D5, 0x98D6, 0x98D7, 0x98D8, 0x98D9, 0x98DA, 0x98DE,
+  0x98E0, 0x98E8, 0x990D, 0x990F, 0x9962, 0x9963, 0x9964, 0x9965,
+  0x9966, 0x9967, 0x9968, 0x9969, 0x996A, 0x996B, 0x996C, 0x996D,
+  0x996E, 0x996F, 0x9970, 0x9971, 0x9972, 0x9973, 0x9974, 0x9975,
+  0x9976, 0x9977, 0x9978, 0x9979, 0x997A, 0x997B, 0x997C, 0x997D,
+  0x997E, 0x997F, 0x9980, 0x9981, 0x9982, 0x9983, 0x9984, 0x9985,
+  0x9986, 0x9987, 0x9988, 0x9989, 0x998A, 0x998B, 0x998C, 0x998D,
+  0x998E, 0x998F, 0x9990, 0x9991, 0x9992, 0x9993, 0x9994, 0x9995,
+  0x9A6C, 0x9581, 0x9CEC, 0x5032, 0x4FF9, 0x501D, 0x4FFF, 0x5004,
+  0x4FF0, 0x5003, 0x5002, 0x4FFC, 0x4FF2, 0x5024, 0x5008, 0x5036,
+  0x502E, 0x5010, 0x5038, 0x5039, 0x4FFD, 0x5056, 0x4FFB, 0x51A3,
+  0x51A6, 0x51A1, 0x51C7, 0x51C9, 0x5260, 0x5264, 0x5259, 0x5265,
+  0x5267, 0x5257, 0x9A6D, 0x9A6E, 0x9A6F, 0x9A70, 0x9A71, 0x9A72,
+  0x9A73, 0x9A74, 0x9A75, 0x9A76, 0x9A77, 0x9A78, 0x9A79, 0x9A7A,
+  0x9A7B, 0x9A7C, 0x9A7D, 0x9A7E, 0x9A7F, 0x9A80, 0x9A81, 0x9A82,
+  0x9A83, 0x9A84, 0x9A85, 0x9A86, 0x9A87, 0x9A88, 0x9A89, 0x9A8A,
+  0x9A8B, 0x9A8C, 0x9A8D, 0x9A8E, 0x9A8F, 0x9A90, 0x9A91, 0x9A92,
+  0x9A93, 0x9A94, 0x9A95, 0x9A96, 0x9A97, 0x9A98, 0x9A99, 0x9A9A,
+  0x9A9B, 0x9A9C, 0x9A9D, 0x9A9E, 0x9A9F, 0x9AA0, 0x9AA1, 0x9AA2,
+  0x9AA3, 0x9AA4, 0x9AA5, 0x9AA6, 0x9AA7, 0x9ACB, 0x9ACC, 0x9B13,
+  0x9B47, 0x9C7C, 0x9C7D, 0x9C7E, 0x9C7F, 0x9C80, 0x9C81, 0x9C82,
+  0x9C83, 0x9C84, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x9C89, 0x9C8A,
+  0x9C8B, 0x9C8C, 0x9C8D, 0x9C8E, 0x9C8F, 0x9C90, 0x9C91, 0x9C92,
+  0x9C93, 0x9C94, 0x9C95, 0x9C96, 0x9C97, 0x9C98, 0x9C99, 0x9C9A,
+  0x9C9B, 0x9C9C, 0x9C9D, 0x9C9E, 0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2,
+  0x9CA3, 0x9CA4, 0x9CA5, 0x9CA6, 0x9CA7, 0x9CA8, 0x9CA9, 0x9CAA,
+  0x9CAB, 0x9CAC, 0x9CAD, 0x9CAE, 0x9CAF, 0x9CB0, 0x9CB1, 0x9CB2,
+  0x9CB3, 0x9CB4, 0x9CB5, 0x9CB6, 0x9CB7, 0x9CB8, 0x9CB9, 0x9CBA,
+  0x9CBB, 0x9CBC, 0x9CBD, 0x9CBE, 0x9CBF, 0x9CC0, 0x9CC1, 0x9CC2,
+  0x9CC3, 0x9CC4, 0x9CC5, 0x9CC6, 0x9CC7, 0x9CC8, 0x9CC9, 0x9CCA,
+  0x9CCB, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, 0x9CD1, 0x9CD2,
+plane 22 
+at 0x00
+  0x9CD3, 0x9CD4, 0x9CD5, 0x9CD6, 0x9CD7, 0x9CD8, 0x9CD9, 0x5263,
+  0x5253, 0x52CF, 0x52CE, 0x52D0, 0x52D1, 0x52CC, 0x550D, 0x54F4,
+  0x5513, 0x54EF, 0x54F5, 0x54F9, 0x5502, 0x5500, 0x5518, 0x54F0,
+  0x54F6, 0x5519, 0x5705, 0x57C9, 0x57B7, 0x57CD, 0x57BE, 0x57BB,
+  0x57DB, 0x57C8, 0x57C4, 0x57C5, 0x57D1, 0x57CA, 0x57C0, 0x5A21,
+  0x9CDA, 0x9CDB, 0x9CDC, 0x9CDD, 0x9CDE, 0x9CDF, 0x9CE0, 0x9CE1,
+  0x9CE2, 0x9CE3, 0x9CE4, 0x9E1F, 0x9E20, 0x9E21, 0x9E22, 0x9E23,
+  0x9E24, 0x9E25, 0x9E26, 0x9E27, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B,
+  0x9E2C, 0x9E2D, 0x9E2E, 0x9E2F, 0x9E30, 0x9E31, 0x9E32, 0x9E33,
+  0x9E34, 0x9E35, 0x9E36, 0x9E37, 0x9E38, 0x9E39, 0x9E3A, 0x9E3B,
+  0x9E3C, 0x9E3D, 0x9E3E, 0x9E3F, 0x9E40, 0x9E41, 0x9E42, 0x9E43,
+  0x9E44, 0x9E45, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4A, 0x9E4B,
+  0x9E4C, 0x9E4D, 0x9E4E, 0x9E4F, 0x9E50, 0x9E51, 0x9E52, 0x9E53,
+  0x9E54, 0x9E55, 0x9E56, 0x9E57, 0x9E58, 0x9E59, 0x9E5A, 0x9E5B,
+  0x9E5C, 0x9E5D, 0x9E5E, 0x9E5F, 0x9E60, 0x9E61, 0x9E62, 0x9E63,
+  0x9E64, 0x9E65, 0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B,
+  0x9E6C, 0x9E6D, 0x9E6E, 0x9E6F, 0x9E70, 0x9E71, 0x9E72, 0x9E73,
+  0x9E74, 0x9E7E, 0x9EC9, 0x9EE1, 0x9EE9, 0x9EEA, 0x9F0B, 0x9F0C,
+  0x9F0D, 0x9F51, 0x9F7F, 0x9F80, 0x9F81, 0x9F82, 0x9F83, 0x9F84,
+  0x9F85, 0x9F86, 0x9F87, 0x9F88, 0x9F89, 0x9F8A, 0x9F8B, 0x9F8C,
+  0x9F9A, 0x9F9B, 0x9F9F, 0x4E06, 0x4E37, 0x4E44, 0x4E4A, 0x4E55,
+  0x4E5B, 0x4E64, 0x4E65, 0x4E67, 0x4E6B, 0x4E6C, 0x4E6D, 0x4E6E,
+  0x4E6F, 0x4E72, 0x4E76, 0x4E77, 0x4E7A, 0x4E7B, 0x4E7C, 0x4E7D,
+  0x4E8A, 0x4E90, 0x4EBD, 0x4ED2, 0x4EED, 0x4FA4, 0x4FAD, 0x503B,
+  0x50F2, 0x516F, 0x517A, 0x51E6, 0x51E7, 0x5A2A, 0x5A1D, 0x5A0B,
+  0x5A22, 0x5A24, 0x5A14, 0x5A31, 0x5A2F, 0x5A1A, 0x5A12, 0x5A26,
+  0x5BBC, 0x5BBB, 0x5BB7, 0x5C05, 0x5C06, 0x5C52, 0x5C53, 0x5CFA,
+  0x5CEB, 0x5CF3, 0x5CF5, 0x5CE9, 0x5CEF, 0x5E2A, 0x5E30, 0x5E2E,
+  0x5E2C, 0x5E2F, 0x5EAF, 0x5EA9, 0x5EFD, 0x5F32, 0x51E9, 0x5271,
+  0x5302, 0x5381, 0x5391, 0x53BC, 0x5414, 0x5455, 0x54D8, 0x54DB,
+  0x551C, 0x551F, 0x5569, 0x55B8, 0x55BD, 0x55ED, 0x561A, 0x565B,
+  0x56A2, 0x56CE, 0x56D5, 0x5726, 0x5737, 0x5738, 0x5786, 0x5789,
+plane 23 
+at 0x00
+  0x57B0, 0x57B3, 0x57D6, 0x5815, 0x5841, 0x586E, 0x5870, 0x58B8,
+  0x58B9, 0x58CC, 0x58D7, 0x58E5, 0x58ED, 0x591E, 0x593B, 0x5B36,
+  0x5B5E, 0x5B91, 0x5BC9, 0x5C02, 0x5C26, 0x5C2E, 0x5C32, 0x5C76,
+  0x5CBC, 0x5CBE, 0x5CC5, 0x5CE0, 0x5D2B, 0x5D5C, 0x5D76, 0x5DEA,
+  0x5DEC, 0x5DED, 0x5DFC, 0x5E49, 0x5EE4, 0x5F09, 0x5F16, 0x5F45,
+  0x5FC6, 0x603A, 0x603E, 0x6077, 0x6184, 0x61F4, 0x6244, 0x6255,
+  0x6256, 0x62E5, 0x6318, 0x6327, 0x63B4, 0x63B5, 0x63BB, 0x6442,
+  0x655B, 0x657D, 0x657E, 0x65C0, 0x65D5, 0x663F, 0x6683, 0x66FB,
+  0x66FD, 0x6730, 0x6741, 0x6763, 0x6764, 0x67A0, 0x67A9, 0x6802,
+  0x6803, 0x680D, 0x685B, 0x685C, 0x685D, 0x685F, 0x6863, 0x6867,
+  0x688D, 0x68BA, 0x68BB, 0x68BC, 0x68C2, 0x6919, 0x691A, 0x6921,
+  0x6922, 0x6923, 0x6926, 0x6928, 0x697E, 0x6981, 0x698B, 0x69DD,
+  0x69DE, 0x6A2E, 0x6A30, 0x6A73, 0x6A74, 0x6A75, 0x6A7B, 0x6AC9,
+  0x6AE4, 0x6AF7, 0x6B05, 0x6B1F, 0x6BA9, 0x6BB1, 0x6BDF, 0x6BEE,
+  0x6C0E, 0x6C17, 0x6C35, 0x6C3A, 0x6C3D, 0x6D4C, 0x6D9C, 0x6D9E,
+  0x6E13, 0x6E7F, 0x6E8C, 0x6EDE, 0x6FF9, 0x704E, 0x7050, 0x7114,
+  0x713C, 0x713E, 0x7155, 0x5F8E, 0x5F93, 0x5F8F, 0x604F, 0x6099,
+  0x607E, 0x6074, 0x604B, 0x6073, 0x6075, 0x6056, 0x60A9, 0x608B,
+  0x60A6, 0x6093, 0x60AE, 0x609E, 0x60A7, 0x6245, 0x632E, 0x6352,
+  0x6330, 0x635B, 0x6319, 0x631B, 0x6331, 0x635D, 0x6337, 0x6335,
+  0x6353, 0x635C, 0x633F, 0x654B, 0x7173, 0x71F6, 0x7233, 0x725C,
+  0x72A0, 0x731F, 0x7320, 0x7339, 0x7363, 0x7364, 0x73F1, 0x7411,
+  0x748F, 0x7491, 0x74E7, 0x74F0, 0x74F1, 0x74F2, 0x74FC, 0x7505,
+  0x753C, 0x7552, 0x7560, 0x7569, 0x7573, 0x7574, 0x7582, 0x7597,
+  0x75E9, 0x7604, 0x7606, 0x764D, 0x767A, 0x770C, 0x77C8, 0x783A,
+  0x783C, 0x783F, 0x7872, 0x7873, 0x7874, 0x78B5, 0x78B6, 0x78F5,
+  0x7916, 0x7934, 0x793B, 0x7985, 0x79F4, 0x79FD, 0x7A24, 0x7A43,
+  0x7A5D, 0x7A63, 0x7AC3, 0x7B02, 0x7B07, 0x7B5D, 0x7B7A, 0x7B7D,
+  0x7B9A, 0x7BAA, 0x7BCF, 0x7BD2, 0x7C13, 0x7C14, 0x7C17, 0x7C31,
+  0x7C61, 0x7C82, 0x7C8F, 0x7C90, 0x7CAD, 0x7CD8, 0x7D26, 0x7D9A,
+  0x7D9B, 0x7DD5, 0x7E05, 0x7E28, 0x7E4A, 0x7E4B, 0x7E67, 0x7E83,
+  0x7E90, 0x7F53, 0x7FAA, 0x8062, 0x810B, 0x8133, 0x8135, 0x8157,
+plane 24 
+at 0x00
+  0x81A4, 0x81D3, 0x8217, 0x822E, 0x824D, 0x825D, 0x8260, 0x827A,
+  0x82C6, 0x83B1, 0x83B5, 0x83BB, 0x8419, 0x8420, 0x8422, 0x8485,
+  0x848A, 0x848B, 0x84D9, 0x84DC, 0x8536, 0x85AD, 0x85AE, 0x8612,
+  0x8630, 0x8644, 0x86AB, 0x86CD, 0x86CE, 0x86EF, 0x8749, 0x874B,
+  0x877F, 0x87A6, 0x87A7, 0x87D0, 0x8864, 0x88AE, 0x88B0, 0x88C3,
+  0x88C4, 0x88C5, 0x8904, 0x891C, 0x891D, 0x8945, 0x8968, 0x8977,
+  0x8A33, 0x8A89, 0x8AAD, 0x8AAE, 0x8ADA, 0x8B21, 0x8B5B, 0x8B72,
+  0x8B8F, 0x8CCE, 0x8DE5, 0x8DF5, 0x8E7D, 0x8E9B, 0x8EB5, 0x8EBB,
+  0x8EC5, 0x658B, 0x659A, 0x6650, 0x6646, 0x664E, 0x6640, 0x664B,
+  0x6648, 0x6660, 0x6644, 0x664D, 0x6837, 0x6824, 0x681B, 0x6836,
+  0x682C, 0x6819, 0x6856, 0x6847, 0x683E, 0x681E, 0x6815, 0x6822,
+  0x6827, 0x6859, 0x6858, 0x6855, 0x6830, 0x6823, 0x6B2E, 0x6B2B,
+  0x6B30, 0x6B6C, 0x8EC8, 0x8EE2, 0x8EE3, 0x8F0C, 0x8F4C, 0x8FBA,
+  0x8FDA, 0x8FF2, 0x9027, 0x9039, 0x9056, 0x9065, 0x915B, 0x9197,
+  0x91A4, 0x91B8, 0x91C8, 0x91E1, 0x91FB, 0x91FC, 0x9228, 0x9229,
+  0x922C, 0x9271, 0x9344, 0x93BA, 0x9421, 0x9441, 0x9453, 0x958A,
+  0x95AA, 0x95CF, 0x9665, 0x9666, 0x967A, 0x974C, 0x974E, 0x974F,
+  0x9771, 0x9786, 0x9790, 0x982C, 0x98AA, 0x98B4, 0x98C5, 0x98EE,
+  0x99C5, 0x99F2, 0x9A12, 0x9A13, 0x9A28, 0x9AC5, 0x9B36, 0x9B5E,
+  0x9B78, 0x9B97, 0x9BB2, 0x9BB4, 0x9BCE, 0x9BD0, 0x9BD1, 0x9BF1,
+  0x9BF2, 0x9BF5, 0x9C18, 0x9C19, 0x9C1A, 0x9C30, 0x9C5A, 0x9C5B,
+  0x9C5C, 0x9C69, 0x9C6A, 0x9C6B, 0x9C70, 0x9CF0, 0x9D0E, 0x9D2B,
+  0x9D2C, 0x9D46, 0x9D48, 0x9D65, 0x9D8E, 0x9D8F, 0x9DAB, 0x9DC6,
+  0x9E78, 0x9EB8, 0x9EB9, 0x9EBA, 0x9F21, 0x9F62,      0,      0,
+  0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2027, 0xFF1B, 0xFF1A,
+  0xFF1F, 0xFF01, 0xFE30, 0x2026, 0x2025, 0xFE50, 0xFE51, 0xFE52,
+  0x00B7, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2015, 0xFE31,
+  0x2014, 0xFE33, 0x2574, 0xFE34, 0xFE4F, 0xFF08, 0xFF09, 0xFE35,
+  0xFE36, 0xFF5B, 0xFF5D, 0xFE37, 0xFE38, 0x3014, 0x3015, 0xFE39,
+  0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C, 0x300A, 0x300B, 0xFE3D,
+  0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C, 0x300D, 0xFE41,
+  0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A, 0x6B8B,
+plane 25 
+at 0x00
+  0x6BE9, 0x6BEA, 0x6BE5, 0x6D6B, 0x6D73, 0x6D57, 0x6D5D, 0x6D56,
+  0x6D8F, 0x6D5B, 0x6D1C, 0x6D9A, 0x6D9B, 0x6D99, 0x6D81, 0x6D71,
+  0x6D72, 0x6D5C, 0x6D96, 0x70C4, 0x70DB, 0x70CC, 0x70D0, 0x70E3,
+  0x70DF, 0x70D6, 0x70EE, 0x70D5, 0x727A, 0x72F5, 0x7302, 0x73E2,
+  0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C, 0x201D,
+  0x301D, 0x301E, 0x2035, 0x2032, 0xFF03, 0xFF06, 0xFF0A, 0x203B,
+  0x00A7, 0x3003, 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE, 0x2606,
+  0x2605, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25BD, 0x25BC, 0x32A3,
+  0x2105, 0x203E, 0xFFE3, 0xFF3F, 0x02CD, 0xFE49, 0xFE4A, 0xFE4D,
+  0xFE4E, 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, 0xFE61, 0xFF0B, 0xFF0D,
+  0x00D7, 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, 0xFF1D, 0x2266,
+  0x2267, 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63, 0xFE64,
+  0xFE65, 0xFE66, 0xFF5E, 0x2229, 0x222A, 0x22A5, 0x2220, 0x221F,
+  0x22BF, 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234, 0x2640,
+  0x2642, 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196,
+  0x2197, 0x2199, 0x2198, 0x2225, 0x2223, 0xFF0F, 0xFF3C, 0x2215,
+  0xFE68, 0xFF04, 0xFFE5, 0x3012, 0xFFE0, 0xFFE1, 0xFF05, 0xFF20,
+  0x2103, 0x2109, 0xFE69, 0xFE6A, 0xFE6B, 0x33D5, 0x339C, 0x339D,
+  0x339E, 0x33CE, 0x33A1, 0x338E, 0x338F, 0x33C4, 0x00B0, 0x5159,
+  0x515B, 0x515E, 0x515D, 0x5161, 0x5163, 0x55E7, 0x74E9, 0x7CCE,
+  0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588,
+  0x258F, 0x258E, 0x258D, 0x258C, 0x258B, 0x258A, 0x2589, 0x253C,
+  0x2534, 0x252C, 0x2524, 0x251C, 0x2594, 0x2500, 0x2502, 0x2595,
+  0x250C, 0x2510, 0x2514, 0x2518, 0x256D, 0x73EC, 0x73D5, 0x73F9,
+  0x73DF, 0x73E6, 0x73E4, 0x73E1, 0x74F3, 0x7556, 0x7555, 0x7558,
+  0x7557, 0x755E, 0x75C3, 0x75B4, 0x75B1, 0x76CB, 0x76CC, 0x772A,
+  0x7716, 0x770F, 0x773F, 0x772B, 0x770E, 0x7724, 0x7721, 0x7718,
+  0x77DD, 0x7824, 0x7836, 0x7958, 0x7959, 0x7962, 0x256E, 0x2570,
+  0x256F, 0x2501, 0x251D, 0x253F, 0x2525, 0x25E2, 0x25E3, 0x25E5,
+  0x25E4, 0x2571, 0x2572, 0x2573, 0xFF10, 0xFF11, 0xFF12, 0xFF13,
+  0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0x2160, 0x2161,
+  0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169,
+plane 26 
+at 0x00
+  0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028,
+  0x3029, 0x5341, 0x5344, 0x5345, 0xFF21, 0xFF22, 0xFF23, 0xFF24,
+  0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C,
+  0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34,
+  0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF41, 0xFF42,
+  0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A,
+  0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52,
+  0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A,
+  0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+  0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0,
+  0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9,
+  0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8,
+  0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0,
+  0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9,
+  0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C,
+  0x310D, 0x310E, 0x310F, 0x79DA, 0x79D9, 0x79E1, 0x79E5, 0x79E8,
+  0x79DB, 0x79E2, 0x79F0, 0x7ADA, 0x7ADD, 0x7ADB, 0x7ADC, 0x7B0D,
+  0x7B0B, 0x7B14, 0x7C8E, 0x7C86, 0x7C87, 0x7C83, 0x7C8B, 0x7D24,
+  0x7D25, 0x7F62, 0x7F93, 0x7F99, 0x7F97, 0x7FC4, 0x7FC6, 0x800A,
+  0x8040, 0x803C, 0x803B, 0x80F6, 0x3110, 0x3111, 0x3112, 0x3113,
+  0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, 0x311A, 0x311B,
+  0x311C, 0x311D, 0x311E, 0x311F, 0x3120, 0x3121, 0x3122, 0x3123,
+  0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0x02D9, 0x02C9,
+  0x02CA, 0x02C7, 0x02CB, 0x2400, 0x2401, 0x2402, 0x2403, 0x2404,
+  0x2405, 0x2406, 0x2407, 0x2408, 0x2409, 0x240A, 0x240B, 0x240C,
+  0x240D, 0x240E, 0x240F, 0x2410, 0x2411, 0x2412, 0x2413, 0x2414,
+  0x2415, 0x2416, 0x2417, 0x2418, 0x2419, 0x241A, 0x241B, 0x241C,
+  0x241D, 0x241E, 0x241F, 0x2421, 0x532C, 0x5359, 0x5368, 0x537E,
+  0x53A1, 0x555B, 0x5542, 0x5547, 0x553D, 0x5560, 0x57EB, 0x595F,
+  0x5B6F, 0x5C5A, 0x5FA2, 0x5F9D, 0x5FA3, 0x60C2, 0x60A5, 0x621C,
+  0x621D, 0x6395, 0x639A, 0x63A6, 0x6550, 0x6552, 0x65C8, 0x6658,
+  0x6888, 0x6BB8, 0x4E00, 0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D,
+plane 27 
+at 0x00
+  0x4E86, 0x4E8C, 0x4EBA, 0x513F, 0x5165, 0x516B, 0x51E0, 0x5200,
+  0x5201, 0x529B, 0x5315, 0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B,
+  0x4E08, 0x4E0A, 0x4E2B, 0x4E38, 0x51E1, 0x4E45, 0x4E48, 0x4E5F,
+  0x4E5E, 0x4E8E, 0x4EA1, 0x5140, 0x5203, 0x52FA, 0x5343, 0x53C9,
+  0x53E3, 0x571F, 0x58EB, 0x5915, 0x5927, 0x5973, 0x5B50, 0x5B51,
+  0x5B53, 0x5BF8, 0x5C0F, 0x5C22, 0x5C38, 0x5C71, 0x5DDD, 0x5DE5,
+  0x5DF1, 0x5DF2, 0x5DF3, 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13,
+  0x624D, 0x80FF, 0x80EE, 0x8104, 0x8103, 0x8107, 0x80F7, 0x822D,
+  0x8227, 0x8229, 0x831F, 0x8357, 0x8321, 0x8318, 0x8358, 0x8684,
+  0x869F, 0x869B, 0x8689, 0x86A6, 0x8692, 0x868F, 0x86A0, 0x884F,
+  0x8878, 0x887A, 0x886E, 0x887B, 0x8884, 0x8873, 0x8A0D, 0x8A0B,
+  0x8A19, 0x8ED0, 0x4E11, 0x4E10, 0x4E0D, 0x4E2D, 0x4E30, 0x4E39,
+  0x4E4B, 0x5C39, 0x4E88, 0x4E91, 0x4E95, 0x4E92, 0x4E94, 0x4EA2,
+  0x4EC1, 0x4EC0, 0x4EC3, 0x4EC6, 0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB,
+  0x4EC4, 0x5143, 0x5141, 0x5167, 0x516D, 0x516E, 0x516C, 0x5197,
+  0x51F6, 0x5206, 0x5207, 0x5208, 0x52FB, 0x52FE, 0x52FF, 0x5316,
+  0x5339, 0x5348, 0x5347, 0x5345, 0x535E, 0x5384, 0x53CB, 0x53CA,
+  0x53CD, 0x58EC, 0x5929, 0x592B, 0x592A, 0x592D, 0x5B54, 0x5C11,
+  0x5C24, 0x5C3A, 0x5C6F, 0x5DF4, 0x5E7B, 0x5EFF, 0x5F14, 0x5F15,
+  0x5FC3, 0x6208, 0x6236, 0x624B, 0x624E, 0x652F, 0x6587, 0x6597,
+  0x65A4, 0x65B9, 0x65E5, 0x66F0, 0x6708, 0x6728, 0x6B20, 0x6B62,
+  0x6B79, 0x6BCB, 0x6BD4, 0x6BDB, 0x6C0F, 0x6C34, 0x706B, 0x722A,
+  0x7236, 0x723B, 0x7247, 0x7259, 0x725B, 0x72AC, 0x738B, 0x4E19,
+  0x4E16, 0x4E15, 0x4E14, 0x4E18, 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E,
+  0x4EE5, 0x4ED8, 0x4ED4, 0x4ED5, 0x4ED6, 0x4ED7, 0x4EE3, 0x4EE4,
+  0x4ED9, 0x4EDE, 0x5145, 0x5144, 0x5189, 0x518A, 0x51AC, 0x51F9,
+  0x51FA, 0x51F8, 0x520A, 0x52A0, 0x529F, 0x5305, 0x5306, 0x5317,
+  0x531D, 0x4EDF, 0x534A, 0x5349, 0x5361, 0x5360, 0x536F, 0x536E,
+  0x53BB, 0x53EF, 0x53E4, 0x53F3, 0x53EC, 0x53EE, 0x53E9, 0x53E8,
+  0x53FC, 0x53F8, 0x53F5, 0x53EB, 0x53E6, 0x53EA, 0x53F2, 0x53F1,
+  0x53F0, 0x53E5, 0x53ED, 0x53FB, 0x56DB, 0x56DA, 0x5916, 0x8FF9,
+  0x9009, 0x9008, 0x90DE, 0x9151, 0x91DB, 0x91DF, 0x91DE, 0x91D6,
+plane 28 
+at 0x00
+  0x91E0, 0x9585, 0x9660, 0x9659, 0x9656, 0x96BD, 0x5042, 0x5059,
+  0x5044, 0x5066, 0x5052, 0x5054, 0x5071, 0x5050, 0x507B, 0x507C,
+  0x5058, 0x5079, 0x506C, 0x5078, 0x51A8, 0x51D1, 0x51CF, 0x5268,
+  0x592E, 0x5931, 0x5974, 0x5976, 0x5B55, 0x5B83, 0x5C3C, 0x5DE8,
+  0x5DE7, 0x5DE6, 0x5E02, 0x5E03, 0x5E73, 0x5E7C, 0x5F01, 0x5F18,
+  0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254, 0x6252, 0x6251, 0x65A5,
+  0x65E6, 0x672E, 0x672C, 0x672A, 0x672B, 0x672D, 0x6B63, 0x6BCD,
+  0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40, 0x6C3E, 0x72AF, 0x7384,
+  0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, 0x7528, 0x7529, 0x7530,
+  0x7531, 0x7532, 0x7533, 0x758B, 0x767D, 0x76AE, 0x76BF, 0x76EE,
+  0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79BE, 0x7A74, 0x7ACB, 0x4E1E,
+  0x4E1F, 0x4E52, 0x4E53, 0x4E69, 0x4E99, 0x4EA4, 0x4EA6, 0x4EA5,
+  0x4EFF, 0x4F09, 0x4F19, 0x4F0A, 0x4F15, 0x4F0D, 0x4F10, 0x4F11,
+  0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0, 0x4EF3, 0x4EFD, 0x4F01,
+  0x4F0B, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, 0x5171, 0x518D,
+  0x51B0, 0x5217, 0x5211, 0x5212, 0x520E, 0x5216, 0x52A3, 0x5308,
+  0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540F, 0x540C, 0x540A,
+  0x5410, 0x5401, 0x540B, 0x5404, 0x5411, 0x540D, 0x5408, 0x5403,
+  0x540E, 0x5406, 0x5412, 0x56E0, 0x56DE, 0x56DD, 0x5733, 0x5730,
+  0x5728, 0x572D, 0x572C, 0x572F, 0x5729, 0x5919, 0x591A, 0x5937,
+  0x5938, 0x5984, 0x5978, 0x5983, 0x597D, 0x5979, 0x5982, 0x5981,
+  0x5B57, 0x5B58, 0x5B87, 0x5B88, 0x5B85, 0x5B89, 0x5BFA, 0x5C16,
+  0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74, 0x5276, 0x52D4, 0x53A0,
+  0x53C4, 0x5558, 0x554C, 0x5568, 0x5549, 0x555D, 0x5529, 0x5554,
+  0x5553, 0x555A, 0x553A, 0x553F, 0x552B, 0x57EA, 0x57EF, 0x57DD,
+  0x57FE, 0x57DE, 0x57E6, 0x57E8, 0x57FF, 0x5803, 0x58F7, 0x68A6,
+  0x591F, 0x595B, 0x595D, 0x595E, 0x5A2B, 0x5A3B, 0x5F0F, 0x5F1B,
+  0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D, 0x6210, 0x6263, 0x625B,
+  0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC, 0x65ED, 0x66F2, 0x66F3,
+  0x6709, 0x673D, 0x6734, 0x6731, 0x6735, 0x6B21, 0x6B64, 0x6B7B,
+  0x6C16, 0x6C5D, 0x6C57, 0x6C59, 0x6C5F, 0x6C60, 0x6C50, 0x6C55,
+  0x6C61, 0x6C5B, 0x6C4D, 0x6C4E, 0x7070, 0x725F, 0x725D, 0x767E,
+plane 29 
+at 0x00
+  0x7AF9, 0x7C73, 0x7CF8, 0x7F36, 0x7F8A, 0x7FBD, 0x8001, 0x8003,
+  0x800C, 0x8012, 0x8033, 0x807F, 0x8089, 0x808B, 0x808C, 0x81E3,
+  0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, 0x821F, 0x826E, 0x8272,
+  0x827E, 0x866B, 0x8840, 0x884C, 0x8863, 0x897F, 0x9621, 0x4E32,
+  0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57, 0x4F5E, 0x4F34, 0x4F5B,
+  0x4F55, 0x4F30, 0x4F50, 0x4F51, 0x4F3D, 0x4F3A, 0x4F38, 0x4F43,
+  0x4F54, 0x4F3C, 0x4F46, 0x4F63, 0x4F5C, 0x4F60, 0x4F2F, 0x4F4E,
+  0x4F36, 0x4F59, 0x4F5D, 0x4F48, 0x4F5A, 0x514C, 0x514B, 0x514D,
+  0x5175, 0x51B6, 0x51B7, 0x5225, 0x5224, 0x5229, 0x522A, 0x5228,
+  0x52AB, 0x52A9, 0x52AA, 0x52AC, 0x5323, 0x5373, 0x5375, 0x541D,
+  0x542D, 0x541E, 0x543E, 0x5426, 0x544E, 0x5427, 0x5446, 0x5443,
+  0x5433, 0x5448, 0x5442, 0x541B, 0x5429, 0x544A, 0x5439, 0x543B,
+  0x5438, 0x542E, 0x5435, 0x5436, 0x5420, 0x543C, 0x5440, 0x5431,
+  0x542B, 0x541F, 0x542C, 0x56EA, 0x56F0, 0x56E4, 0x56EB, 0x574A,
+  0x5751, 0x5740, 0x574D, 0x5A61, 0x5A3A, 0x5A6E, 0x5A4B, 0x5A6B,
+  0x5A45, 0x5A4E, 0x5A68, 0x5A3D, 0x5A71, 0x5A3F, 0x5A6F, 0x5A75,
+  0x5A73, 0x5A2C, 0x5A59, 0x5A54, 0x5A4F, 0x5A63, 0x5BC8, 0x5BC3,
+  0x5C5B, 0x5C61, 0x5D21, 0x5D0A, 0x5D09, 0x5D2C, 0x5D08, 0x5D2A,
+  0x5D15, 0x5D10, 0x5D13, 0x5D2F, 0x5747, 0x574E, 0x573E, 0x5750,
+  0x574F, 0x573B, 0x58EF, 0x593E, 0x599D, 0x5992, 0x59A8, 0x599E,
+  0x59A3, 0x5999, 0x5996, 0x598D, 0x59A4, 0x5993, 0x598A, 0x59A5,
+  0x5B5D, 0x5B5C, 0x5B5A, 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, 0x5C2C,
+  0x5C40, 0x5C41, 0x5C3F, 0x5C3E, 0x5C90, 0x5C91, 0x5C94, 0x5C8C,
+  0x5DEB, 0x5E0C, 0x5E8F, 0x5E87, 0x5E8A, 0x5EF7, 0x5F04, 0x5F1F,
+  0x5F64, 0x5F62, 0x5F77, 0x5F79, 0x5FD8, 0x5FCC, 0x5FD7, 0x5FCD,
+  0x5FF1, 0x5FEB, 0x5FF8, 0x5FEA, 0x6212, 0x6211, 0x6284, 0x6297,
+  0x6296, 0x6280, 0x6276, 0x6289, 0x626D, 0x628A, 0x627C, 0x627E,
+  0x6279, 0x6273, 0x6292, 0x626F, 0x6298, 0x626E, 0x6295, 0x6293,
+  0x6291, 0x6286, 0x6539, 0x653B, 0x6538, 0x65F1, 0x66F4, 0x675F,
+  0x674E, 0x674F, 0x6750, 0x6751, 0x675C, 0x6756, 0x675E, 0x6749,
+  0x6746, 0x6760, 0x6753, 0x6757, 0x6B65, 0x6BCF, 0x6C42, 0x6C5E,
+  0x6C99, 0x6C81, 0x6C88, 0x6C89, 0x6C85, 0x6C9B, 0x6C6A, 0x6C7A,
+plane 30 
+at 0x00
+  0x6C90, 0x6C70, 0x6C8C, 0x6C68, 0x6C96, 0x6C92, 0x6C7D, 0x6C83,
+  0x6C72, 0x6C7E, 0x6C74, 0x6C86, 0x6C76, 0x6C8D, 0x6C94, 0x6C98,
+  0x6C82, 0x7076, 0x707C, 0x707D, 0x7078, 0x7262, 0x7261, 0x7260,
+  0x72C4, 0x72C2, 0x7396, 0x752C, 0x752B, 0x7537, 0x7538, 0x7682,
+  0x76EF, 0x77E3, 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, 0x7F55,
+  0x8096, 0x8093, 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, 0x826F,
+  0x8292, 0x5D18, 0x5DE3, 0x5E39, 0x5E35, 0x5E3A, 0x5E32, 0x5EBB,
+  0x5EBA, 0x5F34, 0x5F39, 0x6098, 0x60D0, 0x60D7, 0x60AA, 0x60A1,
+  0x60A4, 0x60EE, 0x60E7, 0x60E8, 0x60DE, 0x637E, 0x638B, 0x6379,
+  0x6386, 0x6393, 0x6373, 0x636A, 0x636C, 0x637F, 0x63B2, 0x63BA,
+  0x6366, 0x6374, 0x828B, 0x828D, 0x898B, 0x89D2, 0x8A00, 0x8C37,
+  0x8C46, 0x8C55, 0x8C9D, 0x8D64, 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA,
+  0x8F9B, 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, 0x8FC4, 0x5DE1, 0x9091,
+  0x90A2, 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, 0x91CC, 0x9632,
+  0x962E, 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73, 0x4E8B,
+  0x4E9B, 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73,
+  0x4F7F, 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75,
+  0x4F88, 0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A,
+  0x5154, 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD,
+  0x51FD, 0x523B, 0x5238, 0x5237, 0x523A, 0x5230, 0x522E, 0x5236,
+  0x5241, 0x52BE, 0x52BB, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366,
+  0x5377, 0x5378, 0x5379, 0x53D6, 0x53D4, 0x53D7, 0x5473, 0x5475,
+  0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, 0x5484, 0x5492,
+  0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, 0x5462,
+  0x5468, 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A,
+  0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, 0x5949, 0x5947,
+  0x5948, 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE,
+  0x59D1, 0x59C6, 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF,
+  0x59B3, 0x59D2, 0x59C5, 0x5B5F, 0x5B64, 0x5B63, 0x5B97, 0x5B9A,
+  0x5B98, 0x5B9C, 0x5B99, 0x5B9B, 0x5C1A, 0x5C48, 0x5C45, 0x655A,
+  0x654E, 0x654D, 0x658D, 0x658E, 0x65AD, 0x65C7, 0x65CA, 0x65C9,
+  0x65E3, 0x6657, 0x6663, 0x6667, 0x671A, 0x6719, 0x6716, 0x689E,
+plane 31 
+at 0x00
+  0x68B6, 0x6898, 0x6873, 0x689A, 0x688E, 0x68B7, 0x68DB, 0x68A5,
+  0x686C, 0x68C1, 0x6884, 0x6895, 0x687A, 0x6899, 0x68B8, 0x68B9,
+  0x5C46, 0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, 0x5CB1, 0x5CB3,
+  0x5E18, 0x5E1A, 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78, 0x5E9A,
+  0x5E97, 0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27, 0x5F29,
+  0x5F80, 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD, 0x5FF5,
+  0x5FFF, 0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A, 0x6015,
+  0x6021, 0x6027, 0x6029, 0x602B, 0x601B, 0x6216, 0x6215, 0x623F,
+  0x623E, 0x6240, 0x627F, 0x62C9, 0x62CC, 0x62C4, 0x62BF, 0x62C2,
+  0x62B9, 0x62D2, 0x62DB, 0x62AB, 0x62D3, 0x62D4, 0x62CB, 0x62C8,
+  0x62A8, 0x62BD, 0x62BC, 0x62D0, 0x62D9, 0x62C7, 0x62CD, 0x62B5,
+  0x62DA, 0x62B1, 0x62D8, 0x62D6, 0x62D7, 0x62C6, 0x62AC, 0x62CE,
+  0x653E, 0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C, 0x6606,
+  0x6602, 0x660E, 0x6600, 0x660F, 0x6615, 0x660A, 0x6607, 0x670D,
+  0x670B, 0x676D, 0x678B, 0x6795, 0x6771, 0x679C, 0x6773, 0x6777,
+  0x6787, 0x679D, 0x6797, 0x676F, 0x6770, 0x677F, 0x6789, 0x677E,
+  0x6790, 0x6775, 0x679A, 0x6793, 0x677C, 0x676A, 0x6772, 0x6B23,
+  0x6B66, 0x6B67, 0x6B7F, 0x6C13, 0x6C1B, 0x6CE3, 0x6CE8, 0x6CF3,
+  0x6CB1, 0x6CCC, 0x6CE5, 0x6CB3, 0x6CBD, 0x6CBE, 0x6CBC, 0x6CE2,
+  0x6CAB, 0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4, 0x6CB9, 0x6CC1, 0x6CAE,
+  0x6CD7, 0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1, 0x6CDB, 0x6CCA,
+  0x6CAC, 0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0, 0x6870, 0x6B35, 0x6B90,
+  0x6BBB, 0x6BED, 0x6DC1, 0x6DC3, 0x6DCE, 0x6DAD, 0x6E04, 0x6DB9,
+  0x6DE7, 0x6E08, 0x6E06, 0x6E0A, 0x6DB0, 0x6DF8, 0x6E0C, 0x6DB1,
+  0x6E02, 0x6E07, 0x6E09, 0x6E01, 0x6E17, 0x6DFF, 0x6E12, 0x7103,
+  0x7107, 0x7101, 0x70F5, 0x70F1, 0x7108, 0x70F2, 0x7095, 0x708E,
+  0x7092, 0x708A, 0x7099, 0x722C, 0x722D, 0x7238, 0x7248, 0x7267,
+  0x7269, 0x72C0, 0x72CE, 0x72D9, 0x72D7, 0x72D0, 0x73A9, 0x73A8,
+  0x739F, 0x73AB, 0x73A5, 0x753D, 0x759D, 0x7599, 0x759A, 0x7684,
+  0x76C2, 0x76F2, 0x76F4, 0x77E5, 0x77FD, 0x793E, 0x7940, 0x7941,
+  0x79C9, 0x79C8, 0x7A7A, 0x7A79, 0x7AFA, 0x7CFE, 0x7F54, 0x7F8C,
+  0x7F8B, 0x8005, 0x80BA, 0x80A5, 0x80A2, 0x80B1, 0x80A1, 0x80AB,
+plane 32 
+at 0x00
+  0x80A9, 0x80B4, 0x80AA, 0x80AF, 0x81E5, 0x81FE, 0x820D, 0x82B3,
+  0x829D, 0x8299, 0x82AD, 0x82BD, 0x829F, 0x82B9, 0x82B1, 0x82AC,
+  0x82A5, 0x82AF, 0x82B8, 0x82A3, 0x82B0, 0x82BE, 0x82B7, 0x864E,
+  0x8671, 0x521D, 0x8868, 0x8ECB, 0x8FCE, 0x8FD4, 0x8FD1, 0x90B5,
+  0x90B8, 0x90B1, 0x90B6, 0x91C7, 0x91D1, 0x9577, 0x9580, 0x961C,
+  0x9640, 0x963F, 0x963B, 0x9644, 0x9642, 0x96B9, 0x96E8, 0x9752,
+  0x975E, 0x4E9F, 0x4EAD, 0x4EAE, 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF,
+  0x4FE0, 0x4FD1, 0x4FCF, 0x4FDD, 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF,
+  0x4FCA, 0x4FD7, 0x4FAE, 0x4FD0, 0x4FC4, 0x4FC2, 0x4FDA, 0x4FCE,
+  0x4FDE, 0x4FB7, 0x5157, 0x5192, 0x5191, 0x51A0, 0x524E, 0x5243,
+  0x524A, 0x524D, 0x524C, 0x524B, 0x5247, 0x52C7, 0x52C9, 0x52C3,
+  0x52C1, 0x530D, 0x5357, 0x537B, 0x539A, 0x53DB, 0x54AC, 0x54C0,
+  0x54A8, 0x54CE, 0x54C9, 0x54B8, 0x54A6, 0x54B3, 0x54C7, 0x54C2,
+  0x54BD, 0x54AA, 0x54C1, 0x710F, 0x70FE, 0x731A, 0x7310, 0x730E,
+  0x7402, 0x73F3, 0x73FB, 0x751B, 0x7523, 0x7561, 0x7568, 0x7567,
+  0x75D3, 0x7690, 0x76D5, 0x76D7, 0x76D6, 0x7730, 0x7726, 0x7740,
+  0x771E, 0x7847, 0x784B, 0x7851, 0x784F, 0x7842, 0x7846, 0x796E,
+  0x796C, 0x79F2, 0x79F1, 0x79F5, 0x54C4, 0x54C8, 0x54AF, 0x54AB,
+  0x54B1, 0x54BB, 0x54A9, 0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B,
+  0x57A0, 0x57A3, 0x57A2, 0x57CE, 0x57AE, 0x5793, 0x5955, 0x5951,
+  0x594F, 0x594E, 0x5950, 0x59DC, 0x59D8, 0x59FF, 0x59E3, 0x59E8,
+  0x5A03, 0x59E5, 0x59EA, 0x59DA, 0x59E6, 0x5A01, 0x59FB, 0x5B69,
+  0x5BA3, 0x5BA6, 0x5BA4, 0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, 0x5C4F,
+  0x5C4D, 0x5C4B, 0x5CD9, 0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F,
+  0x5E7D, 0x5EA0, 0x5EA6, 0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88,
+  0x5F85, 0x5F8A, 0x5F8B, 0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D,
+  0x6020, 0x6025, 0x600E, 0x6028, 0x604D, 0x6070, 0x6068, 0x6062,
+  0x6046, 0x6043, 0x606C, 0x606B, 0x606A, 0x6064, 0x6241, 0x62DC,
+  0x6316, 0x6309, 0x62FC, 0x62ED, 0x6301, 0x62EE, 0x62FD, 0x6307,
+  0x62F1, 0x62F7, 0x62EF, 0x62EC, 0x62FE, 0x62F4, 0x6311, 0x6302,
+  0x653F, 0x6545, 0x65AB, 0x65BD, 0x65E2, 0x6625, 0x662D, 0x6620,
+  0x6627, 0x662F, 0x661F, 0x6628, 0x6631, 0x6624, 0x66F7, 0x67FF,
+plane 33 
+at 0x00
+  0x67D3, 0x67F1, 0x67D4, 0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5,
+  0x67E9, 0x67EF, 0x67C4, 0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8,
+  0x67CF, 0x67DE, 0x67F3, 0x67B0, 0x67D9, 0x67E2, 0x67DD, 0x67D2,
+  0x6B6A, 0x6B83, 0x6B86, 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9,
+  0x6D0B, 0x6D32, 0x6D2A, 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E,
+  0x6D17, 0x79F3, 0x79F9, 0x7A9A, 0x7A93, 0x7A91, 0x7AE1, 0x7B21,
+  0x7B1C, 0x7B16, 0x7B17, 0x7B36, 0x7B1F, 0x7C93, 0x7C99, 0x7C9A,
+  0x7C9C, 0x7D49, 0x7D34, 0x7D37, 0x7D2D, 0x7D4C, 0x7D48, 0x7F3B,
+  0x8008, 0x801A, 0x801D, 0x8049, 0x8045, 0x8044, 0x7C9B, 0x812A,
+  0x812E, 0x8131, 0x6D3B, 0x6D3D, 0x6D3E, 0x6D36, 0x6D1B, 0x6CF5,
+  0x6D39, 0x6D27, 0x6D38, 0x6D29, 0x6D2E, 0x6D35, 0x6D0E, 0x6D2B,
+  0x70AB, 0x70BA, 0x70B3, 0x70AC, 0x70AF, 0x70AD, 0x70B8, 0x70AE,
+  0x70A4, 0x7230, 0x7272, 0x726F, 0x7274, 0x72E9, 0x72E0, 0x72E1,
+  0x73B7, 0x73CA, 0x73BB, 0x73B2, 0x73CD, 0x73C0, 0x73B3, 0x751A,
+  0x752D, 0x754F, 0x754C, 0x754E, 0x754B, 0x75AB, 0x75A4, 0x75A5,
+  0x75A2, 0x75A3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76C8, 0x76C6,
+  0x76C3, 0x76C5, 0x7701, 0x76F9, 0x76F8, 0x7709, 0x770B, 0x76FE,
+  0x76FC, 0x7707, 0x77DC, 0x7802, 0x7814, 0x780C, 0x780D, 0x7946,
+  0x7949, 0x7948, 0x7947, 0x79B9, 0x79BA, 0x79D1, 0x79D2, 0x79CB,
+  0x7A7F, 0x7A81, 0x7AFF, 0x7AFD, 0x7C7D, 0x7D02, 0x7D05, 0x7D00,
+  0x7D09, 0x7D07, 0x7D04, 0x7D06, 0x7F38, 0x7F8E, 0x7FBF, 0x8004,
+  0x8010, 0x800D, 0x8011, 0x8036, 0x80D6, 0x80E5, 0x80DA, 0x80C3,
+  0x80C4, 0x80CC, 0x80E1, 0x80DB, 0x80CE, 0x80DE, 0x80E4, 0x80DD,
+  0x81F4, 0x8222, 0x82E7, 0x8303, 0x8305, 0x82E3, 0x82DB, 0x82E6,
+  0x8304, 0x82E5, 0x8302, 0x8309, 0x82D2, 0x82D7, 0x82F1, 0x8301,
+  0x82DC, 0x82D4, 0x82D1, 0x82DE, 0x82D3, 0x82DF, 0x82EF, 0x8306,
+  0x8650, 0x8679, 0x867B, 0x867A, 0x884D, 0x886B, 0x8981, 0x89D4,
+  0x8A08, 0x8A02, 0x8A03, 0x8C9E, 0x8CA0, 0x8D74, 0x8D73, 0x8DB4,
+  0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, 0x8FE2, 0x8FEA, 0x8FE5, 0x811A,
+  0x8134, 0x8117, 0x831D, 0x8371, 0x8384, 0x8380, 0x8372, 0x83A1,
+  0x8379, 0x8391, 0x839F, 0x83AD, 0x8323, 0x8385, 0x839C, 0x83B7,
+  0x8658, 0x865A, 0x8657, 0x86B2, 0x86AE, 0x8845, 0x889C, 0x8894,
+plane 34 
+at 0x00
+  0x88A3, 0x888F, 0x88A5, 0x88A9, 0x88A6, 0x888A, 0x88A0, 0x8890,
+  0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA, 0x90CE, 0x90C1, 0x90C3,
+  0x914B, 0x914A, 0x91CD, 0x9582, 0x9650, 0x964B, 0x964C, 0x964D,
+  0x9762, 0x9769, 0x97CB, 0x97ED, 0x97F3, 0x9801, 0x98A8, 0x98DB,
+  0x98DF, 0x9996, 0x9999, 0x4E58, 0x4EB3, 0x500C, 0x500D, 0x5023,
+  0x4FEF, 0x5026, 0x5025, 0x4FF8, 0x5029, 0x5016, 0x5006, 0x503C,
+  0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA, 0x5000, 0x5014, 0x5028,
+  0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, 0x4FF3, 0x4FEE, 0x502D,
+  0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, 0x51A4, 0x51A5, 0x51A2,
+  0x51CD, 0x51CC, 0x51C6, 0x51CB, 0x5256, 0x525C, 0x5254, 0x525B,
+  0x525D, 0x532A, 0x537F, 0x539F, 0x539D, 0x53DF, 0x54E8, 0x5510,
+  0x5501, 0x5537, 0x54FC, 0x54E5, 0x54F2, 0x5506, 0x54FA, 0x5514,
+  0x54E9, 0x54ED, 0x54E1, 0x5509, 0x54EE, 0x54EA, 0x54E6, 0x5527,
+  0x5507, 0x54FD, 0x550F, 0x5703, 0x5704, 0x57C2, 0x57D4, 0x57CB,
+  0x57C3, 0x5809, 0x590F, 0x5957, 0x5958, 0x595A, 0x5A11, 0x5A18,
+  0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC, 0x5A20, 0x5A23, 0x5A29,
+  0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, 0x5BB0, 0x5BB3, 0x5BB6,
+  0x5BB4, 0x5BAE, 0x5BB5, 0x5BB9, 0x5BB8, 0x5C04, 0x5C51, 0x5C55,
+  0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA, 0x5CE8, 0x5CF0, 0x5CF6,
+  0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B, 0x5EAB, 0x5EAD, 0x5EA7,
+  0x5F31, 0x5F92, 0x5F91, 0x5F90, 0x6059, 0x8992, 0x8991, 0x8994,
+  0x8A26, 0x8A32, 0x8A28, 0x8A1C, 0x8A2B, 0x8A20, 0x8A29, 0x8A21,
+  0x8C3A, 0x8C5B, 0x8C58, 0x8C7C, 0x8CA6, 0x8CAE, 0x8CAD, 0x8D65,
+  0x8D7E, 0x8D7C, 0x8D7F, 0x8D7A, 0x8DBD, 0x8DC0, 0x8DBB, 0x8EAD,
+  0x8EAF, 0x8ED6, 0x8ED9, 0x9012, 0x900E, 0x9025, 0x6063, 0x6065,
+  0x6050, 0x6055, 0x606D, 0x6069, 0x606F, 0x6084, 0x609F, 0x609A,
+  0x608D, 0x6094, 0x608C, 0x6085, 0x6096, 0x6247, 0x62F3, 0x6308,
+  0x62FF, 0x634E, 0x633E, 0x632F, 0x6355, 0x6342, 0x6346, 0x634F,
+  0x6349, 0x633A, 0x6350, 0x633D, 0x632A, 0x632B, 0x6328, 0x634D,
+  0x634C, 0x6548, 0x6549, 0x6599, 0x65C1, 0x65C5, 0x6642, 0x6649,
+  0x664F, 0x6643, 0x6652, 0x664C, 0x6645, 0x6641, 0x66F8, 0x6714,
+  0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853, 0x6839,
+plane 35 
+at 0x00
+  0x6842, 0x6854, 0x6829, 0x68B3, 0x6817, 0x684C, 0x6851, 0x683D,
+  0x67F4, 0x6850, 0x6840, 0x683C, 0x6843, 0x682A, 0x6845, 0x6813,
+  0x6818, 0x6841, 0x6B8A, 0x6B89, 0x6BB7, 0x6C23, 0x6C27, 0x6C28,
+  0x6C26, 0x6C24, 0x6CF0, 0x6D6A, 0x6D95, 0x6D88, 0x6D87, 0x6D66,
+  0x6D78, 0x6D77, 0x6D59, 0x6D93, 0x6D6C, 0x6D89, 0x6D6E, 0x6D5A,
+  0x6D74, 0x6D69, 0x6D8C, 0x6D8A, 0x6D79, 0x6D85, 0x6D65, 0x6D94,
+  0x70CA, 0x70D8, 0x70E4, 0x70D9, 0x70C8, 0x70CF, 0x7239, 0x7279,
+  0x72FC, 0x72F9, 0x72FD, 0x72F8, 0x72F7, 0x7386, 0x73ED, 0x7409,
+  0x73EE, 0x73E0, 0x73EA, 0x73DE, 0x7554, 0x755D, 0x755C, 0x755A,
+  0x7559, 0x75BE, 0x75C5, 0x75C7, 0x75B2, 0x75B3, 0x75BD, 0x75BC,
+  0x75B9, 0x75C2, 0x75B8, 0x768B, 0x76B0, 0x76CA, 0x76CD, 0x76CE,
+  0x7729, 0x771F, 0x7720, 0x7728, 0x77E9, 0x7830, 0x7827, 0x7838,
+  0x781D, 0x7834, 0x7837, 0x9013, 0x90EE, 0x90AB, 0x90F7, 0x9159,
+  0x9154, 0x91F2, 0x91F0, 0x91E5, 0x91F6, 0x9587, 0x965A, 0x966E,
+  0x9679, 0x98E1, 0x98E6, 0x9EC4, 0x9ED2, 0x4E80, 0x4E81, 0x508F,
+  0x5097, 0x5088, 0x5089, 0x5081, 0x5160, 0x5E42, 0x51D3, 0x51D2,
+  0x51D6, 0x5273, 0x5270, 0x53A8, 0x7825, 0x782D, 0x7820, 0x781F,
+  0x7832, 0x7955, 0x7950, 0x7960, 0x795F, 0x7956, 0x795E, 0x795D,
+  0x7957, 0x795A, 0x79E4, 0x79E3, 0x79E7, 0x79DF, 0x79E6, 0x79E9,
+  0x79D8, 0x7A84, 0x7A88, 0x7AD9, 0x7B06, 0x7B11, 0x7C89, 0x7D21,
+  0x7D17, 0x7D0B, 0x7D0A, 0x7D20, 0x7D22, 0x7D14, 0x7D10, 0x7D15,
+  0x7D1A, 0x7D1C, 0x7D0D, 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, 0x7F94,
+  0x7FC5, 0x7FC1, 0x8006, 0x8018, 0x8015, 0x8019, 0x8017, 0x803D,
+  0x803F, 0x80F1, 0x8102, 0x80F0, 0x8105, 0x80ED, 0x80F4, 0x8106,
+  0x80F8, 0x80F3, 0x8108, 0x80FD, 0x810A, 0x80FC, 0x80EF, 0x81ED,
+  0x81EC, 0x8200, 0x8210, 0x822A, 0x822B, 0x8228, 0x822C, 0x82BB,
+  0x832B, 0x8352, 0x8354, 0x834A, 0x8338, 0x8350, 0x8349, 0x8335,
+  0x8334, 0x834F, 0x8332, 0x8339, 0x8336, 0x8317, 0x8340, 0x8331,
+  0x8328, 0x8343, 0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4, 0x86A9,
+  0x868C, 0x86A3, 0x869C, 0x8870, 0x8877, 0x8881, 0x8882, 0x887D,
+  0x8879, 0x8A18, 0x8A10, 0x8A0E, 0x8A0C, 0x8A15, 0x8A0A, 0x8A17,
+  0x8A13, 0x8A16, 0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79, 0x8CA1,
+plane 36 
+at 0x00
+  0x8CA2, 0x8D77, 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1, 0x9001,
+  0x9006, 0x8FF7, 0x9000, 0x8FFA, 0x8FF4, 0x9003, 0x8FFD, 0x9005,
+  0x8FF8, 0x9095, 0x90E1, 0x90DD, 0x90E2, 0x9152, 0x914D, 0x914C,
+  0x91D8, 0x91DD, 0x91D7, 0x91DC, 0x91D9, 0x9583, 0x9662, 0x9663,
+  0x9661, 0x53A6, 0x53C5, 0x5597, 0x55DE, 0x5596, 0x55B4, 0x5585,
+  0x559B, 0x55A0, 0x5559, 0x5586, 0x55AF, 0x557A, 0x559E, 0x55A9,
+  0x570F, 0x570E, 0x581A, 0x581F, 0x583C, 0x5818, 0x583E, 0x5826,
+  0x583A, 0x5822, 0x58FB, 0x5963, 0x5964, 0x5AA8, 0x5AA3, 0x5A82,
+  0x5A88, 0x5AA1, 0x965B, 0x965D, 0x9664, 0x9658, 0x965E, 0x96BB,
+  0x98E2, 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, 0x9B3C, 0x4E7E,
+  0x507A, 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049,
+  0x5065, 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F,
+  0x500F, 0x506F, 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F,
+  0x52D2, 0x52D9, 0x52D8, 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F,
+  0x5340, 0x533E, 0x53C3, 0x66FC, 0x5546, 0x556A, 0x5566, 0x5544,
+  0x555E, 0x5561, 0x5543, 0x554A, 0x5531, 0x5556, 0x554F, 0x5555,
+  0x552F, 0x5564, 0x5538, 0x552E, 0x555C, 0x552C, 0x5563, 0x5533,
+  0x5541, 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805, 0x580A,
+  0x5806, 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9,
+  0x5920, 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40,
+  0x5A3C, 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5,
+  0x5BC4, 0x5BC2, 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60,
+  0x5C5C, 0x5C5D, 0x5D07, 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22,
+  0x5D11, 0x5D29, 0x5D14, 0x5D19, 0x5D24, 0x5D27, 0x5D17, 0x5DE2,
+  0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7, 0x5EB8, 0x5EB6, 0x5EB5,
+  0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, 0x5F6B, 0x5F97,
+  0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F, 0x60A3,
+  0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD, 0x5A85,
+  0x5A98, 0x5A99, 0x5A89, 0x5A81, 0x5A96, 0x5A80, 0x5A91, 0x5ACF,
+  0x5A87, 0x5AA0, 0x5A79, 0x5A86, 0x5AAB, 0x5AAA, 0x5AA4, 0x5A8D,
+  0x5A7E, 0x5BD5, 0x5C1E, 0x5C5F, 0x5C5E, 0x5D44, 0x5D3E, 0x5D48,
+  0x5D1C, 0x5D5B, 0x5D4D, 0x5D57, 0x5D53, 0x5D4F, 0x5D3B, 0x5D46,
+plane 37 
+at 0x00
+  0x60C5, 0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, 0x60C6,
+  0x60DF, 0x60B8, 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248, 0x63A0,
+  0x63A7, 0x6372, 0x6396, 0x63A2, 0x63A5, 0x6377, 0x6367, 0x6398,
+  0x63AA, 0x6371, 0x63A9, 0x6389, 0x6383, 0x639B, 0x636B, 0x63A8,
+  0x6384, 0x6388, 0x6399, 0x63A1, 0x63AC, 0x6392, 0x638F, 0x6380,
+  0x637B, 0x6369, 0x6368, 0x637A, 0x655D, 0x6556, 0x6551, 0x6559,
+  0x6557, 0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C, 0x659B,
+  0x65AC, 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, 0x6664,
+  0x6668, 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, 0x68AF,
+  0x68A2, 0x6893, 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7, 0x6897,
+  0x68B0, 0x6883, 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894, 0x689D,
+  0x68A8, 0x689F, 0x68A1, 0x6882, 0x6B32, 0x6BBA, 0x6BEB, 0x6BEC,
+  0x6C2B, 0x6D8E, 0x6DBC, 0x6DF3, 0x6DD9, 0x6DB2, 0x6DE1, 0x6DCC,
+  0x6DE4, 0x6DFB, 0x6DFA, 0x6E05, 0x6DC7, 0x6DCB, 0x6DAF, 0x6DD1,
+  0x6DAE, 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5, 0x6DC5, 0x6DD2,
+  0x6E1A, 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, 0x6DF1, 0x6DEE,
+  0x6DE8, 0x6DC6, 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, 0x6DE6, 0x70F9,
+  0x7109, 0x710A, 0x70FD, 0x70EF, 0x723D, 0x727D, 0x7281, 0x731C,
+  0x731B, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 0x740A, 0x7403,
+  0x7406, 0x73FE, 0x740D, 0x74E0, 0x74F6, 0x5E46, 0x5E47, 0x5E48,
+  0x5EC0, 0x5EBD, 0x5EBF, 0x5F11, 0x5F3E, 0x5F3B, 0x5F3A, 0x5FA7,
+  0x60EA, 0x6107, 0x6122, 0x610C, 0x60B3, 0x60D6, 0x60D2, 0x60E3,
+  0x60E5, 0x60E9, 0x6111, 0x60FD, 0x611E, 0x6120, 0x6121, 0x621E,
+  0x63E2, 0x63DE, 0x63E6, 0x63F8, 0x63FE, 0x63C1, 0x74F7, 0x751C,
+  0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758F, 0x75D4, 0x75D5,
+  0x75B5, 0x75CA, 0x75CD, 0x768E, 0x76D4, 0x76D2, 0x76DB, 0x7737,
+  0x773E, 0x773C, 0x7736, 0x7738, 0x773A, 0x786B, 0x7843, 0x784E,
+  0x7965, 0x7968, 0x796D, 0x79FB, 0x7A92, 0x7A95, 0x7B20, 0x7B28,
+  0x7B1B, 0x7B2C, 0x7B26, 0x7B19, 0x7B1E, 0x7B2E, 0x7C92, 0x7C97,
+  0x7C95, 0x7D46, 0x7D43, 0x7D71, 0x7D2E, 0x7D39, 0x7D3C, 0x7D40,
+  0x7D30, 0x7D33, 0x7D44, 0x7D2F, 0x7D42, 0x7D32, 0x7D31, 0x7F3D,
+  0x7F9E, 0x7F9A, 0x7FCC, 0x7FCE, 0x7FD2, 0x801C, 0x804A, 0x8046,
+plane 38 
+at 0x00
+  0x812F, 0x8116, 0x8123, 0x812B, 0x8129, 0x8130, 0x8124, 0x8202,
+  0x8235, 0x8237, 0x8236, 0x8239, 0x838E, 0x839E, 0x8398, 0x8378,
+  0x83A2, 0x8396, 0x83BD, 0x83AB, 0x8392, 0x838A, 0x8393, 0x8389,
+  0x83A0, 0x8377, 0x837B, 0x837C, 0x8386, 0x83A7, 0x8655, 0x5F6A,
+  0x86C7, 0x86C0, 0x86B6, 0x86C4, 0x86B5, 0x86C6, 0x86CB, 0x86B1,
+  0x86AF, 0x86C9, 0x8853, 0x889E, 0x8888, 0x88AB, 0x8892, 0x8896,
+  0x888D, 0x888B, 0x8993, 0x898F, 0x8A2A, 0x8A1D, 0x8A23, 0x8A25,
+  0x8A31, 0x8A2D, 0x8A1F, 0x8A1B, 0x8A22, 0x8C49, 0x8C5A, 0x8CA9,
+  0x8CAC, 0x8CAB, 0x8CA8, 0x8CAA, 0x8CA7, 0x8D67, 0x8D66, 0x8DBE,
+  0x8DBA, 0x8EDB, 0x8EDF, 0x9019, 0x900D, 0x901A, 0x9017, 0x9023,
+  0x901F, 0x901D, 0x9010, 0x9015, 0x901E, 0x9020, 0x900F, 0x9022,
+  0x9016, 0x901B, 0x9014, 0x63BF, 0x63F7, 0x63D1, 0x655F, 0x6560,
+  0x6561, 0x65D1, 0x667D, 0x666B, 0x667F, 0x6673, 0x6681, 0x666D,
+  0x6669, 0x671E, 0x68ED, 0x6903, 0x68FE, 0x68E5, 0x691E, 0x6902,
+  0x6909, 0x68CA, 0x6900, 0x6901, 0x6918, 0x68E2, 0x68CF, 0x692E,
+  0x68C5, 0x68FF, 0x691C, 0x68C3, 0x90E8, 0x90ED, 0x90FD, 0x9157,
+  0x91CE, 0x91F5, 0x91E6, 0x91E3, 0x91E7, 0x91ED, 0x91E9, 0x9589,
+  0x966A, 0x9675, 0x9673, 0x9678, 0x9670, 0x9674, 0x9676, 0x9677,
+  0x966C, 0x96C0, 0x96EA, 0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803,
+  0x9B5A, 0x9CE5, 0x9E75, 0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D,
+  0x5085, 0x5099, 0x5091, 0x5080, 0x5096, 0x5098, 0x509A, 0x6700,
+  0x51F1, 0x5272, 0x5274, 0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB,
+  0x535A, 0x53A5, 0x557B, 0x5580, 0x55A7, 0x557C, 0x558A, 0x559D,
+  0x5598, 0x5582, 0x559C, 0x55AA, 0x5594, 0x5587, 0x558B, 0x5583,
+  0x55B3, 0x55AE, 0x559F, 0x553E, 0x55B2, 0x559A, 0x55BB, 0x55AC,
+  0x55B1, 0x557E, 0x5589, 0x55AB, 0x5599, 0x570D, 0x582F, 0x582A,
+  0x5834, 0x5824, 0x5830, 0x5831, 0x5821, 0x581D, 0x5820, 0x58F9,
+  0x58FA, 0x5960, 0x5A77, 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7,
+  0x5B73, 0x5B71, 0x5BD2, 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B,
+  0x5C31, 0x5D4C, 0x5D50, 0x5D34, 0x5D47, 0x5DFD, 0x5E45, 0x5E3D,
+  0x5E40, 0x5E43, 0x5E7E, 0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C,
+  0x5F6D, 0x5FA9, 0x5FAA, 0x5FA8, 0x60D1, 0x60E1, 0x60B2, 0x60B6,
+plane 39 
+at 0x00
+  0x60E0, 0x611C, 0x6123, 0x60FA, 0x6115, 0x60F0, 0x60FB, 0x60F4,
+  0x6168, 0x60F1, 0x610E, 0x60F6, 0x6109, 0x6100, 0x6112, 0x621F,
+  0x6249, 0x63A3, 0x638C, 0x63CF, 0x63C0, 0x63E9, 0x63C9, 0x63C6,
+  0x63CD, 0x6B6F, 0x6B6E, 0x6BBE, 0x6BF4, 0x6C2D, 0x6DB6, 0x6E75,
+  0x6E1E, 0x6E18, 0x6E48, 0x6E4F, 0x6E42, 0x6E6A, 0x6E70, 0x6DFE,
+  0x6E6D, 0x6E7B, 0x6E7E, 0x6E59, 0x6E57, 0x6E80, 0x6E50, 0x6E29,
+  0x6E76, 0x6E2A, 0x6E4C, 0x712A, 0x7135, 0x712C, 0x7137, 0x711D,
+  0x7138, 0x7134, 0x63D2, 0x63E3, 0x63D0, 0x63E1, 0x63D6, 0x63ED,
+  0x63EE, 0x6376, 0x63F4, 0x63EA, 0x63DB, 0x6452, 0x63DA, 0x63F9,
+  0x655E, 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65AF, 0x666E,
+  0x6670, 0x6674, 0x6676, 0x666F, 0x6691, 0x667A, 0x667E, 0x6677,
+  0x66FE, 0x66FF, 0x671F, 0x671D, 0x68FA, 0x68D5, 0x68E0, 0x68D8,
+  0x68D7, 0x6905, 0x68DF, 0x68F5, 0x68EE, 0x68E7, 0x68F9, 0x68D2,
+  0x68F2, 0x68E3, 0x68CB, 0x68CD, 0x690D, 0x6912, 0x690E, 0x68C9,
+  0x68DA, 0x696E, 0x68FB, 0x6B3E, 0x6B3A, 0x6B3D, 0x6B98, 0x6B96,
+  0x6BBC, 0x6BEF, 0x6C2E, 0x6C2F, 0x6C2C, 0x6E2F, 0x6E38, 0x6E54,
+  0x6E21, 0x6E32, 0x6E67, 0x6E4A, 0x6E20, 0x6E25, 0x6E23, 0x6E1B,
+  0x6E5B, 0x6E58, 0x6E24, 0x6E56, 0x6E6E, 0x6E2D, 0x6E26, 0x6E6F,
+  0x6E34, 0x6E4D, 0x6E3A, 0x6E2C, 0x6E43, 0x6E1D, 0x6E3E, 0x6ECB,
+  0x6E89, 0x6E19, 0x6E4E, 0x6E63, 0x6E44, 0x6E72, 0x6E69, 0x6E5F,
+  0x7119, 0x711A, 0x7126, 0x7130, 0x7121, 0x7136, 0x716E, 0x711C,
+  0x724C, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743A,
+  0x742A, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742F,
+  0x741B, 0x7426, 0x7428, 0x7525, 0x7526, 0x756B, 0x756A, 0x75E2,
+  0x75DB, 0x75E3, 0x75D9, 0x75D8, 0x75DE, 0x75E0, 0x767B, 0x767C,
+  0x7696, 0x7693, 0x76B4, 0x76DC, 0x774F, 0x77ED, 0x785D, 0x786C,
+  0x786F, 0x7A0D, 0x7A08, 0x7A0B, 0x7A05, 0x7A00, 0x7A98, 0x712B,
+  0x7133, 0x7127, 0x7124, 0x712D, 0x7232, 0x7283, 0x7282, 0x7287,
+  0x7306, 0x7324, 0x7338, 0x732A, 0x732C, 0x732B, 0x732F, 0x7328,
+  0x7417, 0x7419, 0x7438, 0x741F, 0x7414, 0x743C, 0x73F7, 0x741C,
+  0x7415, 0x7418, 0x7439, 0x74F9, 0x7524, 0x756E, 0x756D, 0x7571,
+  0x7A97, 0x7A96, 0x7AE5, 0x7AE3, 0x7B49, 0x7B56, 0x7B46, 0x7B50,
+plane 40 
+at 0x00
+  0x7B52, 0x7B54, 0x7B4D, 0x7B4B, 0x7B4F, 0x7B51, 0x7C9F, 0x7CA5,
+  0x7D5E, 0x7D50, 0x7D68, 0x7D55, 0x7D2B, 0x7D6E, 0x7D72, 0x7D61,
+  0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584, 0x7FD4, 0x7FD5, 0x800B,
+  0x8052, 0x8085, 0x8155, 0x8154, 0x814B, 0x8151, 0x814E, 0x8139,
+  0x8146, 0x813E, 0x814C, 0x8153, 0x8174, 0x8212, 0x821C, 0x83E9,
+  0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5, 0x840B, 0x83C1, 0x83EF,
+  0x83F1, 0x83F4, 0x8457, 0x840A, 0x83F0, 0x840C, 0x83CC, 0x83FD,
+  0x83F2, 0x83CA, 0x8438, 0x840E, 0x8404, 0x83DC, 0x8407, 0x83D4,
+  0x83DF, 0x865B, 0x86DF, 0x86D9, 0x86ED, 0x86D4, 0x86DB, 0x86E4,
+  0x86D0, 0x86DE, 0x8857, 0x88C1, 0x88C2, 0x88B1, 0x8983, 0x8996,
+  0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C, 0x8A41, 0x8A54, 0x8A5B,
+  0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, 0x8A56, 0x8C61, 0x8C82,
+  0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1, 0x8CBB, 0x8CC0, 0x8CB4,
+  0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, 0x8D85, 0x8D81, 0x8DCE,
+  0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, 0x8DDB, 0x8DC6, 0x8EFB,
+  0x8EF8, 0x8EFC, 0x8F9C, 0x902E, 0x9035, 0x9031, 0x9038, 0x9032,
+  0x9036, 0x9102, 0x90F5, 0x9109, 0x90FE, 0x9163, 0x9165, 0x91CF,
+  0x9214, 0x9215, 0x9223, 0x9209, 0x921E, 0x920D, 0x9210, 0x9207,
+  0x9211, 0x9594, 0x958F, 0x958B, 0x9591, 0x758E, 0x75E5, 0x7694,
+  0x76B3, 0x76D9, 0x7748, 0x7749, 0x7743, 0x7742, 0x77DF, 0x7863,
+  0x7876, 0x785F, 0x7866, 0x7966, 0x7971, 0x7976, 0x7984, 0x7975,
+  0x79FF, 0x7A07, 0x7A0E, 0x7A09, 0x7AE7, 0x7AE2, 0x7B55, 0x7B43,
+  0x7B57, 0x7B6C, 0x7B42, 0x7B53, 0x7B41, 0x7CA0, 0x9593, 0x9592,
+  0x958E, 0x968A, 0x968E, 0x968B, 0x967D, 0x9685, 0x9686, 0x968D,
+  0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4, 0x96C6, 0x96C7, 0x96EF,
+  0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808, 0x98E7, 0x98EA, 0x98EF,
+  0x98E9, 0x98F2, 0x98ED, 0x99AE, 0x99AD, 0x9EC3, 0x9ECD, 0x9ED1,
+  0x4E82, 0x50AD, 0x50B5, 0x50B2, 0x50B3, 0x50C5, 0x50BE, 0x50AC,
+  0x50B7, 0x50BB, 0x50AF, 0x50C7, 0x527F, 0x5277, 0x527D, 0x52DF,
+  0x52E6, 0x52E4, 0x52E2, 0x52E3, 0x532F, 0x55DF, 0x55E8, 0x55D3,
+  0x55E6, 0x55CE, 0x55DC, 0x55C7, 0x55D1, 0x55E3, 0x55E4, 0x55EF,
+  0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5, 0x55C9, 0x5712, 0x5713,
+plane 41 
+at 0x00
+  0x585E, 0x5851, 0x5858, 0x5857, 0x585A, 0x5854, 0x586B, 0x584C,
+  0x586D, 0x584A, 0x5862, 0x5852, 0x584B, 0x5967, 0x5AC1, 0x5AC9,
+  0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC, 0x5AB3, 0x5AC2, 0x5AB2, 0x5D69,
+  0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, 0x5EC8, 0x5F12, 0x5F59, 0x5FAC,
+  0x5FAE, 0x611A, 0x610F, 0x6148, 0x611F, 0x60F3, 0x611B, 0x60F9,
+  0x6101, 0x6108, 0x614E, 0x614C, 0x6144, 0x614D, 0x613E, 0x6134,
+  0x6127, 0x610D, 0x6106, 0x6137, 0x6221, 0x6222, 0x6413, 0x643E,
+  0x641E, 0x642A, 0x642D, 0x643D, 0x642C, 0x640F, 0x641C, 0x6414,
+  0x640D, 0x6436, 0x6416, 0x6417, 0x6406, 0x656C, 0x659F, 0x65B0,
+  0x6697, 0x6689, 0x6687, 0x6688, 0x6696, 0x6684, 0x6698, 0x668D,
+  0x6703, 0x6994, 0x696D, 0x7CA6, 0x7CA4, 0x7D74, 0x7D59, 0x7D60,
+  0x7D57, 0x7D6C, 0x7D7E, 0x7D64, 0x7D5A, 0x7D5D, 0x7D76, 0x7D4D,
+  0x7D75, 0x7FD3, 0x7FD6, 0x8060, 0x804E, 0x8145, 0x813B, 0x8148,
+  0x8142, 0x8149, 0x8140, 0x8114, 0x8141, 0x81EF, 0x81F6, 0x8203,
+  0x83ED, 0x83DA, 0x8418, 0x83D2, 0x695A, 0x6977, 0x6960, 0x6954,
+  0x6975, 0x6930, 0x6982, 0x694A, 0x6968, 0x696B, 0x695E, 0x6953,
+  0x6979, 0x6986, 0x695D, 0x6963, 0x695B, 0x6B47, 0x6B72, 0x6BC0,
+  0x6BBF, 0x6BD3, 0x6BFD, 0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6, 0x6EC2,
+  0x6E90, 0x6E9D, 0x6EC7, 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC, 0x6EBA,
+  0x6EAB, 0x6ED1, 0x6E96, 0x6E9C, 0x6EC4, 0x6ED4, 0x6EAA, 0x6EA7,
+  0x6EB4, 0x714E, 0x7159, 0x7169, 0x7164, 0x7149, 0x7167, 0x715C,
+  0x716C, 0x7166, 0x714C, 0x7165, 0x715E, 0x7146, 0x7168, 0x7156,
+  0x723A, 0x7252, 0x7337, 0x7345, 0x733F, 0x733E, 0x746F, 0x745A,
+  0x7455, 0x745F, 0x745E, 0x7441, 0x743F, 0x7459, 0x745B, 0x745C,
+  0x7576, 0x7578, 0x7600, 0x75F0, 0x7601, 0x75F2, 0x75F1, 0x75FA,
+  0x75FF, 0x75F4, 0x75F3, 0x76DE, 0x76DF, 0x775B, 0x776B, 0x7766,
+  0x775E, 0x7763, 0x7779, 0x776A, 0x776C, 0x775C, 0x7765, 0x7768,
+  0x7762, 0x77EE, 0x788E, 0x78B0, 0x7897, 0x7898, 0x788C, 0x7889,
+  0x787C, 0x7891, 0x7893, 0x787F, 0x797A, 0x797F, 0x7981, 0x842C,
+  0x79BD, 0x7A1C, 0x7A1A, 0x7A20, 0x7A14, 0x7A1F, 0x7A1E, 0x7A9F,
+  0x7AA0, 0x7B77, 0x7BC0, 0x7B60, 0x7B6E, 0x7B67, 0x7CB1, 0x7CB3,
+  0x7CB5, 0x7D93, 0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B, 0x7F6E,
+plane 42 
+at 0x00
+  0x7F69, 0x7F6A, 0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056, 0x8058,
+  0x8086, 0x8084, 0x8171, 0x8170, 0x8178, 0x8165, 0x816E, 0x8173,
+  0x816B, 0x8408, 0x8400, 0x8417, 0x8346, 0x8414, 0x83D3, 0x8405,
+  0x841F, 0x8402, 0x8416, 0x83CD, 0x83E6, 0x865D, 0x86D5, 0x86E1,
+  0x86EE, 0x8847, 0x8846, 0x88BB, 0x88BF, 0x88B4, 0x88B5, 0x899A,
+  0x8A43, 0x8A5A, 0x8A35, 0x8A38, 0x8A42, 0x8A49, 0x8A5D, 0x8A4B,
+  0x8A3D, 0x8C60, 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482,
+  0x8477, 0x843D, 0x8431, 0x8475, 0x8466, 0x846B, 0x8449, 0x846C,
+  0x845B, 0x843C, 0x8435, 0x8461, 0x8463, 0x8469, 0x846D, 0x8446,
+  0x865E, 0x865C, 0x865F, 0x86F9, 0x8713, 0x8708, 0x8707, 0x8700,
+  0x86FE, 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, 0x8859, 0x88DF,
+  0x88D4, 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA, 0x88D5,
+  0x88D2, 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69,
+  0x8A70, 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D,
+  0x8A62, 0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62,
+  0x8C8A, 0x8C89, 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3,
+  0x8CC2, 0x8CC5, 0x8DE1, 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA,
+  0x8DEA, 0x8DE4, 0x8DE6, 0x8EB2, 0x8F03, 0x8F09, 0x8EFE, 0x8F0A,
+  0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053, 0x9042, 0x9054, 0x903C,
+  0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, 0x9051, 0x903E,
+  0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, 0x9237,
+  0x9257, 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264,
+  0x9251, 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, 0x923F, 0x925A,
+  0x9598, 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA,
+  0x96F7, 0x96FB, 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810,
+  0x9811, 0x9813, 0x980A, 0x9812, 0x980C, 0x98FC, 0x98F4, 0x8C5E,
+  0x8C7F, 0x8C7E, 0x8C83, 0x8CB1, 0x8D87, 0x8D88, 0x8D83, 0x8D86,
+  0x8D8B, 0x8D82, 0x8DCA, 0x8DD2, 0x8DD4, 0x8DC9, 0x8EB0, 0x8EF2,
+  0x8EE4, 0x8EF3, 0x8EEA, 0x8EFD, 0x8F9D, 0x902B, 0x902A, 0x9028,
+  0x9029, 0x902C, 0x903A, 0x9030, 0x9037, 0x903B, 0x910A, 0x91FE,
+  0x98FD, 0x98FE, 0x99B3, 0x99B1, 0x99B4, 0x9AE1, 0x9CE9, 0x9E82,
+  0x9F0E, 0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5, 0x50D6, 0x50ED,
+plane 43 
+at 0x00
+  0x50DA, 0x50D5, 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9, 0x5162,
+  0x51F3, 0x5283, 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600, 0x561B,
+  0x5617, 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E, 0x55F7,
+  0x5616, 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716, 0x5875,
+  0x587E, 0x5883, 0x5893, 0x588A, 0x5879, 0x5885, 0x587D, 0x58FD,
+  0x5925, 0x5922, 0x5924, 0x596A, 0x5969, 0x5AE1, 0x5AE6, 0x5AE9,
+  0x5AD7, 0x5AD6, 0x5AD8, 0x5AE3, 0x5B75, 0x5BDE, 0x5BE7, 0x5BE1,
+  0x5BE5, 0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4, 0x5BDF, 0x5C0D, 0x5C62,
+  0x5D84, 0x5D87, 0x5E5B, 0x5E63, 0x5E55, 0x5E57, 0x5E54, 0x5ED3,
+  0x5ED6, 0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147, 0x613F, 0x614B,
+  0x6177, 0x6162, 0x6163, 0x615F, 0x615A, 0x6158, 0x6175, 0x622A,
+  0x6487, 0x6458, 0x6454, 0x64A4, 0x6478, 0x645F, 0x647A, 0x6451,
+  0x6467, 0x6434, 0x646D, 0x647B, 0x6572, 0x65A1, 0x65D7, 0x65D6,
+  0x66A2, 0x66A8, 0x669D, 0x699C, 0x69A8, 0x6995, 0x69C1, 0x69AE,
+  0x69D3, 0x69CB, 0x699B, 0x69B7, 0x69BB, 0x69AB, 0x69B4, 0x69D0,
+  0x69CD, 0x69AD, 0x69CC, 0x69A6, 0x69C3, 0x69A3, 0x6B49, 0x6B4C,
+  0x6C33, 0x6F33, 0x6F14, 0x6EFE, 0x6F13, 0x6EF4, 0x6F29, 0x6F3E,
+  0x6F20, 0x6F2C, 0x6F0F, 0x6F02, 0x6F22, 0x9220, 0x920B, 0x9218,
+  0x9222, 0x921B, 0x9208, 0x920E, 0x9213, 0x9595, 0x968C, 0x967B,
+  0x967F, 0x9681, 0x9682, 0x96EE, 0x96ED, 0x96EC, 0x975F, 0x976F,
+  0x976D, 0x98F0, 0x9AA9, 0x9AE0, 0x4EB7, 0x50CC, 0x50BC, 0x50AA,
+  0x50B9, 0x50AB, 0x50C3, 0x50CD, 0x517E, 0x527E, 0x6EFF, 0x6EEF,
+  0x6F06, 0x6F31, 0x6F38, 0x6F32, 0x6F23, 0x6F15, 0x6F2B, 0x6F2F,
+  0x6F88, 0x6F2A, 0x6EEC, 0x6F01, 0x6EF2, 0x6ECC, 0x6EF7, 0x7194,
+  0x7199, 0x717D, 0x718A, 0x7184, 0x7192, 0x723E, 0x7292, 0x7296,
+  0x7344, 0x7350, 0x7464, 0x7463, 0x746A, 0x7470, 0x746D, 0x7504,
+  0x7591, 0x7627, 0x760D, 0x760B, 0x7609, 0x7613, 0x76E1, 0x76E3,
+  0x7784, 0x777D, 0x777F, 0x7761, 0x78C1, 0x789F, 0x78A7, 0x78B3,
+  0x78A9, 0x78A3, 0x798E, 0x798F, 0x798D, 0x7A2E, 0x7A31, 0x7AAA,
+  0x7AA9, 0x7AED, 0x7AEF, 0x7BA1, 0x7B95, 0x7B8B, 0x7B75, 0x7B97,
+  0x7B9D, 0x7B94, 0x7B8F, 0x7BB8, 0x7B87, 0x7B84, 0x7CB9, 0x7CBD,
+  0x7CBE, 0x7DBB, 0x7DB0, 0x7D9C, 0x7DBD, 0x7DBE, 0x7DA0, 0x7DCA,
+plane 44 
+at 0x00
+  0x7DB4, 0x7DB2, 0x7DB1, 0x7DBA, 0x7DA2, 0x7DBF, 0x7DB5, 0x7DB8,
+  0x7DAD, 0x7DD2, 0x7DC7, 0x7DAC, 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF,
+  0x805E, 0x805A, 0x8087, 0x8150, 0x8180, 0x818F, 0x8188, 0x818A,
+  0x817F, 0x8182, 0x81E7, 0x81FA, 0x8207, 0x8214, 0x821E, 0x824B,
+  0x84C9, 0x84BF, 0x84C6, 0x84C4, 0x8499, 0x849E, 0x84B2, 0x849C,
+  0x84CB, 0x84B8, 0x84C0, 0x84D3, 0x8490, 0x84BC, 0x84D1, 0x84CA,
+  0x873F, 0x871C, 0x873B, 0x8722, 0x8725, 0x8734, 0x8718, 0x8755,
+  0x8737, 0x8729, 0x88F3, 0x8902, 0x88F4, 0x88F9, 0x88F8, 0x88FD,
+  0x88E8, 0x891A, 0x88EF, 0x8AA6, 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D,
+  0x8AA1, 0x8A93, 0x8AA4, 0x5279, 0x52E1, 0x52E0, 0x52E7, 0x5380,
+  0x53AB, 0x53AA, 0x53A9, 0x53E0, 0x55EA, 0x55D7, 0x55C1, 0x5715,
+  0x586C, 0x585C, 0x5850, 0x5861, 0x586A, 0x5869, 0x5856, 0x5860,
+  0x5866, 0x585F, 0x5923, 0x5966, 0x5968, 0x5ACE, 0x5AC5, 0x5AC3,
+  0x5AD0, 0x5B74, 0x5B76, 0x5BDC, 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98,
+  0x8A91, 0x8A9A, 0x8AA7, 0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1,
+  0x8CD2, 0x8D6B, 0x8D99, 0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15,
+  0x8F13, 0x8FA3, 0x9060, 0x9058, 0x905C, 0x9063, 0x9059, 0x905E,
+  0x9062, 0x905D, 0x905B, 0x9119, 0x9118, 0x911E, 0x9175, 0x9178,
+  0x9177, 0x9174, 0x9278, 0x9280, 0x9285, 0x9298, 0x9296, 0x927B,
+  0x9293, 0x929C, 0x92A8, 0x927C, 0x9291, 0x95A1, 0x95A8, 0x95A9,
+  0x95A3, 0x95A5, 0x95A4, 0x9699, 0x969C, 0x969B, 0x96CC, 0x96D2,
+  0x9700, 0x977C, 0x9785, 0x97F6, 0x9817, 0x9818, 0x98AF, 0x98B1,
+  0x9903, 0x9905, 0x990C, 0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6,
+  0x9B41, 0x9B42, 0x9CF4, 0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A,
+  0x5104, 0x5100, 0x50FB, 0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109,
+  0x5105, 0x51DC, 0x5287, 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0,
+  0x53B2, 0x562E, 0x563B, 0x5639, 0x5632, 0x563F, 0x5634, 0x5629,
+  0x5653, 0x564E, 0x5657, 0x5674, 0x5636, 0x562F, 0x5630, 0x5880,
+  0x589F, 0x589E, 0x58B3, 0x589C, 0x58AE, 0x58A9, 0x58A6, 0x596D,
+  0x5B09, 0x5AFB, 0x5B0B, 0x5AF5, 0x5B0C, 0x5B08, 0x5BEE, 0x5BEC,
+  0x5BE9, 0x5BEB, 0x5C64, 0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F,
+  0x5E61, 0x5EE2, 0x5EDA, 0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48,
+plane 45 
+at 0x00
+  0x5F71, 0x5FB7, 0x5FB5, 0x6176, 0x6167, 0x616E, 0x615D, 0x6155,
+  0x6182, 0x5BD7, 0x5BDA, 0x5BDB, 0x5C20, 0x5D6D, 0x5D66, 0x5D64,
+  0x5D6E, 0x5D60, 0x5F42, 0x5F5A, 0x5F6E, 0x6130, 0x613A, 0x612A,
+  0x6143, 0x6119, 0x6131, 0x613D, 0x6408, 0x6432, 0x6438, 0x6431,
+  0x6419, 0x6411, 0x6429, 0x641D, 0x643C, 0x6446, 0x6447, 0x643A,
+  0x6407, 0x656B, 0x617C, 0x6170, 0x616B, 0x617E, 0x61A7, 0x6190,
+  0x61AB, 0x618E, 0x61AC, 0x619A, 0x61A4, 0x6194, 0x61AE, 0x622E,
+  0x6469, 0x646F, 0x6479, 0x649E, 0x64B2, 0x6488, 0x6490, 0x64B0,
+  0x64A5, 0x6493, 0x6495, 0x64A9, 0x6492, 0x64AE, 0x64AD, 0x64AB,
+  0x649A, 0x64AC, 0x6499, 0x64A2, 0x64B3, 0x6575, 0x6577, 0x6578,
+  0x66AE, 0x66AB, 0x66B4, 0x66B1, 0x6A23, 0x6A1F, 0x69E8, 0x6A01,
+  0x6A1E, 0x6A19, 0x69FD, 0x6A21, 0x6A13, 0x6A0A, 0x69F3, 0x6A02,
+  0x6A05, 0x69ED, 0x6A11, 0x6B50, 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6,
+  0x6F3F, 0x6F7C, 0x6F84, 0x6F51, 0x6F66, 0x6F54, 0x6F86, 0x6F6D,
+  0x6F5B, 0x6F78, 0x6F6E, 0x6F8E, 0x6F7A, 0x6F70, 0x6F64, 0x6F97,
+  0x6F58, 0x6ED5, 0x6F6F, 0x6F60, 0x6F5F, 0x719F, 0x71AC, 0x71B1,
+  0x71A8, 0x7256, 0x729B, 0x734E, 0x7357, 0x7469, 0x748B, 0x7483,
+  0x747E, 0x7480, 0x757F, 0x7620, 0x7629, 0x761F, 0x7624, 0x7626,
+  0x7621, 0x7622, 0x769A, 0x76BA, 0x76E4, 0x778E, 0x7787, 0x778C,
+  0x7791, 0x778B, 0x78CB, 0x78C5, 0x78BA, 0x78CA, 0x78BE, 0x78D5,
+  0x78BC, 0x78D0, 0x7A3F, 0x7A3C, 0x7A40, 0x7A3D, 0x7A37, 0x7A3B,
+  0x7AAF, 0x7AAE, 0x7BAD, 0x7BB1, 0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7,
+  0x7BC1, 0x7BA0, 0x7BCC, 0x7CCA, 0x7DE0, 0x7DF4, 0x7DEF, 0x7DFB,
+  0x7DD8, 0x7DEC, 0x7DDD, 0x7DE8, 0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9,
+  0x7D9E, 0x7DD9, 0x7DF2, 0x7DF9, 0x7F75, 0x7F77, 0x7FAF, 0x6570,
+  0x656D, 0x65E4, 0x6693, 0x668F, 0x6692, 0x668E, 0x6946, 0x6931,
+  0x693E, 0x697C, 0x6943, 0x6973, 0x6955, 0x6985, 0x694D, 0x6950,
+  0x6947, 0x6967, 0x6936, 0x6964, 0x6961, 0x697D, 0x6B44, 0x6B40,
+  0x6B71, 0x6B73, 0x6B9C, 0x6BC1, 0x6BFA, 0x6C31, 0x6C32, 0x6EB8,
+  0x7FE9, 0x8026, 0x819B, 0x819C, 0x819D, 0x81A0, 0x819A, 0x8198,
+  0x8517, 0x853D, 0x851A, 0x84EE, 0x852C, 0x852D, 0x8513, 0x8511,
+  0x8523, 0x8521, 0x8514, 0x84EC, 0x8525, 0x84FF, 0x8506, 0x8782,
+plane 46 
+at 0x00
+  0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757,
+  0x874C, 0x8753, 0x885B, 0x885D, 0x8910, 0x8907, 0x8912, 0x8913,
+  0x8915, 0x890A, 0x8ABC, 0x8AD2, 0x8AC7, 0x8AC4, 0x8A95, 0x8ACB,
+  0x8AF8, 0x8AB2, 0x8AC9, 0x8AC2, 0x8ABF, 0x8AB0, 0x8AD6, 0x8ACD,
+  0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, 0x8C4E, 0x8C6C, 0x8CE0, 0x8CDE,
+  0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2, 0x8CE3, 0x8CDC, 0x8CEA,
+  0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, 0x8E2B, 0x8E10, 0x8E1D, 0x8E22,
+  0x8E0F, 0x8E29, 0x8E1F, 0x8E21, 0x8E1E, 0x8EBA, 0x8F1D, 0x8F1B,
+  0x8F1F, 0x8F29, 0x8F26, 0x8F2A, 0x8F1C, 0x8F1E, 0x8F25, 0x9069,
+  0x906E, 0x9068, 0x906D, 0x9077, 0x9130, 0x912D, 0x9127, 0x9131,
+  0x9187, 0x9189, 0x918B, 0x9183, 0x92C5, 0x92BB, 0x92B7, 0x92EA,
+  0x92AC, 0x92E4, 0x92C1, 0x92B3, 0x92BC, 0x92D2, 0x92C7, 0x92F0,
+  0x92B2, 0x95AD, 0x95B1, 0x9704, 0x9706, 0x9707, 0x9709, 0x9760,
+  0x978D, 0x978B, 0x978F, 0x9821, 0x982B, 0x981C, 0x98B3, 0x990A,
+  0x9913, 0x9912, 0x9918, 0x99DD, 0x99D0, 0x99DF, 0x99DB, 0x99D1,
+  0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE, 0x9AEF, 0x9B27, 0x9B45,
+  0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09, 0x6EA8, 0x6E91, 0x6EBB,
+  0x6E9A, 0x6EA9, 0x6EB5, 0x6E6C, 0x6EE8, 0x6EDD, 0x6EDA, 0x6EE6,
+  0x6EAC, 0x6ED9, 0x6EE3, 0x6EE9, 0x6EDB, 0x716F, 0x7148, 0x714A,
+  0x716B, 0x714F, 0x7157, 0x7174, 0x7145, 0x7151, 0x716D, 0x7251,
+  0x7250, 0x724E, 0x7341, 0x732E, 0x7346, 0x7427, 0x9D03, 0x9EA9,
+  0x9EBE, 0x9ECE, 0x58A8, 0x9F52, 0x5112, 0x5118, 0x5114, 0x5110,
+  0x5115, 0x5180, 0x51AA, 0x51DD, 0x5291, 0x5293, 0x52F3, 0x5659,
+  0x566B, 0x5679, 0x5669, 0x5664, 0x5678, 0x566A, 0x5668, 0x5665,
+  0x5671, 0x566F, 0x566C, 0x5662, 0x5676, 0x58C1, 0x58BE, 0x58C7,
+  0x58C5, 0x596E, 0x5B1D, 0x5B34, 0x5B78, 0x5BF0, 0x5C0E, 0x5F4A,
+  0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD, 0x61B6, 0x61BE, 0x61CA,
+  0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB, 0x64BB, 0x64BC, 0x64DA,
+  0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF, 0x64D2, 0x64D4, 0x64BE,
+  0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4, 0x66C7, 0x66B8, 0x6A3D,
+  0x6A38, 0x6A3A, 0x6A59, 0x6A6B, 0x6A58, 0x6A39, 0x6A44, 0x6A62,
+  0x6A61, 0x6A4B, 0x6A47, 0x6A35, 0x6A5F, 0x6A48, 0x6B59, 0x6B77,
+plane 47 
+at 0x00
+  0x6C05, 0x6FC2, 0x6FB1, 0x6FA1, 0x6FC3, 0x6FA4, 0x6FC1, 0x6FA7,
+  0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6, 0x6FA6, 0x6FA0, 0x6FB4, 0x71BE,
+  0x71C9, 0x71D0, 0x71D2, 0x71C8, 0x71D5, 0x71B9, 0x71CE, 0x71D9,
+  0x71DC, 0x71C3, 0x71C4, 0x7368, 0x749C, 0x74A3, 0x7498, 0x749F,
+  0x749E, 0x74E2, 0x750C, 0x750D, 0x7634, 0x7638, 0x763A, 0x76E7,
+  0x76E5, 0x77A0, 0x779E, 0x779F, 0x77A5, 0x78E8, 0x78DA, 0x78EC,
+  0x78E7, 0x79A6, 0x7A4D, 0x7A4E, 0x7A46, 0x7A4C, 0x7A4B, 0x7ABA,
+  0x7BD9, 0x7C11, 0x7BC9, 0x7BE4, 0x7BDB, 0x7BE1, 0x7BE9, 0x7BE6,
+  0x7CD5, 0x7CD6, 0x7E0A, 0x7448, 0x7453, 0x743D, 0x745D, 0x7456,
+  0x741E, 0x7447, 0x7443, 0x7458, 0x7449, 0x744C, 0x7445, 0x743E,
+  0x7501, 0x751E, 0x757A, 0x75EE, 0x7602, 0x7697, 0x7698, 0x775D,
+  0x7764, 0x7753, 0x7758, 0x7882, 0x7890, 0x788A, 0x787A, 0x787D,
+  0x788B, 0x7878, 0x788D, 0x7888, 0x7E11, 0x7E08, 0x7E1B, 0x7E23,
+  0x7E1E, 0x7E1D, 0x7E09, 0x7E10, 0x7F79, 0x7FB2, 0x7FF0, 0x7FF1,
+  0x7FEE, 0x8028, 0x81B3, 0x81A9, 0x81A8, 0x81FB, 0x8208, 0x8258,
+  0x8259, 0x854A, 0x8559, 0x8548, 0x8568, 0x8569, 0x8543, 0x8549,
+  0x856D, 0x856A, 0x855E, 0x8783, 0x879F, 0x879E, 0x87A2, 0x878D,
+  0x8861, 0x892A, 0x8932, 0x8925, 0x892B, 0x8921, 0x89AA, 0x89A6,
+  0x8AE6, 0x8AFA, 0x8AEB, 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, 0x8AEE,
+  0x8AFE, 0x8B01, 0x8B02, 0x8AF7, 0x8AED, 0x8AF3, 0x8AF6, 0x8AFC,
+  0x8C6B, 0x8C6D, 0x8C93, 0x8CF4, 0x8E44, 0x8E31, 0x8E34, 0x8E42,
+  0x8E39, 0x8E35, 0x8F3B, 0x8F2F, 0x8F38, 0x8F33, 0x8FA8, 0x8FA6,
+  0x9075, 0x9074, 0x9078, 0x9072, 0x907C, 0x907A, 0x9134, 0x9192,
+  0x9320, 0x9336, 0x92F8, 0x9333, 0x932F, 0x9322, 0x92FC, 0x932B,
+  0x9304, 0x931A, 0x9310, 0x9326, 0x9321, 0x9315, 0x932E, 0x9319,
+  0x95BB, 0x96A7, 0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711, 0x9716,
+  0x970D, 0x9713, 0x970F, 0x975B, 0x975C, 0x9766, 0x9798, 0x9830,
+  0x9838, 0x983B, 0x9837, 0x982D, 0x9839, 0x9824, 0x9910, 0x9928,
+  0x991E, 0x991B, 0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1, 0x9AB8,
+  0x9ABC, 0x9AFB, 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23, 0x9D26,
+  0x9D28, 0x9D12, 0x9D1B, 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, 0x512A,
+  0x511F, 0x5121, 0x5132, 0x52F5, 0x568E, 0x5680, 0x5690, 0x5685,
+plane 48 
+at 0x00
+  0x5687, 0x7892, 0x797E, 0x7983, 0x7980, 0x7A0F, 0x7A1D, 0x7AA1,
+  0x7AA4, 0x7AE9, 0x7AEA, 0x7B62, 0x7B6B, 0x7B5E, 0x7B79, 0x7B6F,
+  0x7B68, 0x7CAE, 0x7CB0, 0x7D90, 0x7D8A, 0x7D8B, 0x7D99, 0x7D95,
+  0x7D87, 0x7D78, 0x7D97, 0x7D89, 0x7D98, 0x7FA3, 0x7FDD, 0x8057,
+  0x8163, 0x816A, 0x568F, 0x58D5, 0x58D3, 0x58D1, 0x58CE, 0x5B30,
+  0x5B2A, 0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA, 0x5DBD,
+  0x5DB8, 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, 0x61C7, 0x61E6,
+  0x61CB, 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0,
+  0x64E6, 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9,
+  0x66D6, 0x6A80, 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3,
+  0x6A7E, 0x6A97, 0x6A90, 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08,
+  0x6FD8, 0x6FF1, 0x6FDF, 0x6FE0, 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF,
+  0x6F80, 0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, 0x6FEE, 0x6FF0, 0x71E7,
+  0x71DF, 0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC, 0x71F4, 0x71E0,
+  0x7235, 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6, 0x74A8,
+  0x7646, 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC,
+  0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901,
+  0x79A7, 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7,
+  0x7C0C, 0x7BE0, 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9,
+  0x7CDD, 0x7E2E, 0x7E3E, 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B,
+  0x7E3D, 0x7E31, 0x7E45, 0x7E41, 0x7E34, 0x7E39, 0x7E48, 0x7E35,
+  0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, 0x8071, 0x8072, 0x8070,
+  0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, 0x81C0, 0x81BF,
+  0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA, 0x816C,
+  0x815D, 0x8175, 0x815F, 0x817D, 0x816D, 0x8241, 0x844F, 0x8484,
+  0x847F, 0x8448, 0x842A, 0x847B, 0x8472, 0x8464, 0x842E, 0x845C,
+  0x8453, 0x8441, 0x84C8, 0x8462, 0x8480, 0x843E, 0x8483, 0x8471,
+  0x844A, 0x8455, 0x8458, 0x86FC, 0x86FD, 0x8715, 0x8716, 0x86FF,
+  0x8584, 0x857E, 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B, 0x8587,
+  0x85A8, 0x858A, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2, 0x87C6,
+  0x87AB, 0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936, 0x8944,
+  0x8938, 0x893D, 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B, 0x8B0A,
+plane 49 
+at 0x00
+  0x8B20, 0x8B1D, 0x8B04, 0x8B10, 0x8C41, 0x8C3F, 0x8C73, 0x8CFA,
+  0x8CFD, 0x8CFC, 0x8CF8, 0x8CFB, 0x8DA8, 0x8E49, 0x8E4B, 0x8E48,
+  0x8E4A, 0x8F44, 0x8F3E, 0x8F42, 0x8F45, 0x8F3F, 0x907F, 0x907D,
+  0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91A3, 0x919E, 0x919C,
+  0x934D, 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B, 0x9318,
+  0x937E, 0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, 0x95CB,
+  0x95CC, 0x95C8, 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C, 0x971E,
+  0x97A0, 0x97D3, 0x9846, 0x98B6, 0x9935, 0x9A01, 0x99FF, 0x9BAE,
+  0x9BAB, 0x9BAA, 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, 0x9ECF, 0x9EDE,
+  0x9EDC, 0x9EDD, 0x9EDB, 0x9F3E, 0x9F4B, 0x53E2, 0x5695, 0x56AE,
+  0x58D9, 0x58D8, 0x5B38, 0x5F5E, 0x61E3, 0x6233, 0x64F4, 0x64F2,
+  0x64FE, 0x6506, 0x64FA, 0x64FB, 0x64F7, 0x65B7, 0x66DC, 0x6726,
+  0x6AB3, 0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2, 0x6AAE, 0x6AAF,
+  0x6B5F, 0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE, 0x7006, 0x6FFA,
+  0x7011, 0x700F, 0x71FB, 0x71FC, 0x71FE, 0x71F8, 0x7377, 0x7375,
+  0x74A7, 0x74BF, 0x7515, 0x7656, 0x7658, 0x8858, 0x88E0, 0x89E7,
+  0x8A6A, 0x8A80, 0x8A6F, 0x8A65, 0x8A78, 0x8A7D, 0x8A88, 0x8A64,
+  0x8A7E, 0x8A67, 0x8C63, 0x8C88, 0x8CCD, 0x8CC9, 0x8DED, 0x8EB1,
+  0x8F04, 0x8F9E, 0x8FA0, 0x9043, 0x9046, 0x9048, 0x9045, 0x9040,
+  0x904C, 0x910C, 0x9113, 0x9115, 0x916B, 0x9167, 0x7652, 0x77BD,
+  0x77BF, 0x77BB, 0x77BC, 0x790E, 0x79AE, 0x7A61, 0x7A62, 0x7A60,
+  0x7AC4, 0x7AC5, 0x7C2B, 0x7C27, 0x7C2A, 0x7C1E, 0x7C23, 0x7C21,
+  0x7CE7, 0x7E54, 0x7E55, 0x7E5E, 0x7E5A, 0x7E61, 0x7E52, 0x7E59,
+  0x7F48, 0x7FF9, 0x7FFB, 0x8077, 0x8076, 0x81CD, 0x81CF, 0x820A,
+  0x85CF, 0x85A9, 0x85CD, 0x85D0, 0x85C9, 0x85B0, 0x85BA, 0x85B9,
+  0x85A6, 0x87EF, 0x87EC, 0x87F2, 0x87E0, 0x8986, 0x89B2, 0x89F4,
+  0x8B28, 0x8B39, 0x8B2C, 0x8B2B, 0x8C50, 0x8D05, 0x8E59, 0x8E63,
+  0x8E66, 0x8E64, 0x8E5F, 0x8E55, 0x8EC0, 0x8F49, 0x8F4D, 0x9087,
+  0x9083, 0x9088, 0x91AB, 0x91AC, 0x91D0, 0x9394, 0x938A, 0x9396,
+  0x93A2, 0x93B3, 0x93AE, 0x93AC, 0x93B0, 0x9398, 0x939A, 0x9397,
+  0x95D4, 0x95D6, 0x95D0, 0x95D5, 0x96E2, 0x96DC, 0x96D9, 0x96DB,
+  0x96DE, 0x9724, 0x97A3, 0x97A6, 0x97AD, 0x97F9, 0x984D, 0x984F,
+plane 50 
+at 0x00
+  0x984C, 0x984E, 0x9853, 0x98BA, 0x993E, 0x993F, 0x993D, 0x992E,
+  0x99A5, 0x9A0E, 0x9AC1, 0x9B03, 0x9B06, 0x9B4F, 0x9B4E, 0x9B4D,
+  0x9BCA, 0x9BC9, 0x9BFD, 0x9BC8, 0x9BC0, 0x9D51, 0x9D5D, 0x9D60,
+  0x9EE0, 0x9F15, 0x9F2C, 0x5133, 0x56A5, 0x58DE, 0x58DF, 0x58E2,
+  0x5BF5, 0x9F90, 0x5EEC, 0x61F2, 0x61F7, 0x61F6, 0x61F5, 0x6500,
+  0x650F, 0x66E0, 0x66DD, 0x6AE5, 0x6ADD, 0x6ADA, 0x6AD3, 0x701B,
+  0x701F, 0x7028, 0x701A, 0x701D, 0x7015, 0x7018, 0x7206, 0x720D,
+  0x7258, 0x72A2, 0x7378, 0x925D, 0x9255, 0x9235, 0x9259, 0x922F,
+  0x923C, 0x928F, 0x925C, 0x926A, 0x9262, 0x925F, 0x926B, 0x926E,
+  0x923B, 0x9244, 0x9241, 0x959A, 0x9599, 0x968F, 0x9696, 0x96F4,
+  0x96FC, 0x9755, 0x9779, 0x97EE, 0x97F5, 0x980B, 0x98F3, 0x98F7,
+  0x98FF, 0x98F5, 0x98EC, 0x98F1, 0x737A, 0x74BD, 0x74CA, 0x74E3,
+  0x7587, 0x7586, 0x765F, 0x7661, 0x77C7, 0x7919, 0x79B1, 0x7A6B,
+  0x7A69, 0x7C3E, 0x7C3F, 0x7C38, 0x7C3D, 0x7C37, 0x7C40, 0x7E6B,
+  0x7E6D, 0x7E79, 0x7E69, 0x7E6A, 0x7F85, 0x7E73, 0x7FB6, 0x7FB9,
+  0x7FB8, 0x81D8, 0x85E9, 0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5,
+  0x85F7, 0x87FB, 0x8805, 0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F,
+  0x8956, 0x895E, 0x8B41, 0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E,
+  0x8B4F, 0x8B46, 0x8B59, 0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87,
+  0x8E76, 0x8E6C, 0x8E7A, 0x8E74, 0x8F54, 0x8F4E, 0x8FAD, 0x908A,
+  0x908B, 0x91B1, 0x91AE, 0x93E1, 0x93D1, 0x93DF, 0x93C3, 0x93C8,
+  0x93DC, 0x93DD, 0x93D6, 0x93E2, 0x93CD, 0x93D8, 0x93E4, 0x93D7,
+  0x93E8, 0x95DC, 0x96B4, 0x96E3, 0x972A, 0x9727, 0x9761, 0x97DC,
+  0x97FB, 0x985E, 0x9858, 0x985B, 0x98BC, 0x9945, 0x9949, 0x9A16,
+  0x9A19, 0x9B0D, 0x9BE8, 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61,
+  0x9D72, 0x9D6A, 0x9D6C, 0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8,
+  0x56A8, 0x56B7, 0x56B6, 0x56B4, 0x56BC, 0x58E4, 0x5B40, 0x5B43,
+  0x5B7D, 0x5BF6, 0x5DC9, 0x61F8, 0x61FA, 0x6518, 0x6514, 0x6519,
+  0x66E6, 0x6727, 0x6AEC, 0x703E, 0x7030, 0x7032, 0x7210, 0x737B,
+  0x74CF, 0x7662, 0x7665, 0x7926, 0x792A, 0x792C, 0x792B, 0x7AC7,
+  0x7AF6, 0x7C4C, 0x7C43, 0x7C4D, 0x7CEF, 0x7CF0, 0x8FAE, 0x7E7D,
+  0x7E7C, 0x999A, 0x9AE2, 0x9B3D, 0x9B5D, 0x9CE8, 0x9CEB, 0x9CEF,
+plane 51 
+at 0x00
+  0x9CEE, 0x9E81, 0x9F14, 0x50D0, 0x50D9, 0x50DC, 0x50D8, 0x50E1,
+  0x50EB, 0x50F4, 0x50E2, 0x50DE, 0x51F4, 0x52ED, 0x52EA, 0x5332,
+  0x53AE, 0x53B0, 0x55FB, 0x5603, 0x560B, 0x5607, 0x55F8, 0x5628,
+  0x561E, 0x5618, 0x7E82, 0x7F4C, 0x8000, 0x81DA, 0x8266, 0x85FB,
+  0x85F9, 0x8611, 0x85FA, 0x8606, 0x860B, 0x8607, 0x860A, 0x8814,
+  0x8815, 0x8964, 0x89BA, 0x89F8, 0x8B70, 0x8B6C, 0x8B66, 0x8B6F,
+  0x8B5F, 0x8B6B, 0x8D0F, 0x8D0D, 0x8E89, 0x8E81, 0x8E85, 0x8E82,
+  0x91B4, 0x91CB, 0x9418, 0x9403, 0x93FD, 0x95E1, 0x9730, 0x98C4,
+  0x9952, 0x9951, 0x99A8, 0x9A2B, 0x9A30, 0x9A37, 0x9A35, 0x9C13,
+  0x9C0D, 0x9E79, 0x9EB5, 0x9EE8, 0x9F2F, 0x9F5F, 0x9F63, 0x9F61,
+  0x5137, 0x5138, 0x56C1, 0x56C0, 0x56C2, 0x5914, 0x5C6C, 0x5DCD,
+  0x61FC, 0x61FE, 0x651D, 0x651C, 0x6595, 0x66E9, 0x6AFB, 0x6B04,
+  0x6AFA, 0x6BB2, 0x704C, 0x721B, 0x72A7, 0x74D6, 0x74D4, 0x7669,
+  0x77D3, 0x7C50, 0x7E8F, 0x7E8C, 0x7FBC, 0x8617, 0x862D, 0x861A,
+  0x8823, 0x8822, 0x8821, 0x881F, 0x896A, 0x896C, 0x89BD, 0x8B74,
+  0x8B77, 0x8B7D, 0x8D13, 0x8E8A, 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF,
+  0x91BA, 0x942E, 0x9433, 0x9435, 0x943A, 0x9438, 0x9432, 0x942B,
+  0x95E2, 0x9738, 0x9739, 0x9732, 0x97FF, 0x9867, 0x9865, 0x9957,
+  0x9A45, 0x9A43, 0x9A40, 0x9A3E, 0x9ACF, 0x9B54, 0x9B51, 0x9C2D,
+  0x9C25, 0x9DAF, 0x9DB4, 0x9DC2, 0x9DB8, 0x9E9D, 0x9EEF, 0x9F19,
+  0x9F5C, 0x9F66, 0x9F67, 0x513C, 0x513B, 0x56C8, 0x56CA, 0x56C9,
+  0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, 0x61FF, 0x6524, 0x6B0A, 0x6B61,
+  0x7051, 0x7058, 0x7380, 0x74E4, 0x758A, 0x766E, 0x766C, 0x5611,
+  0x5651, 0x5605, 0x5717, 0x5892, 0x588C, 0x5878, 0x5884, 0x5873,
+  0x58AD, 0x5897, 0x5895, 0x5877, 0x5872, 0x5896, 0x588D, 0x5910,
+  0x596C, 0x5AE7, 0x5AE4, 0x5AEF, 0x5626, 0x5AF0, 0x5D7B, 0x5D83,
+  0x5D8B, 0x5D8C, 0x5D78, 0x5E52, 0x5ED0, 0x5ECF, 0x5FB3, 0x5FB4,
+  0x79B3, 0x7C60, 0x7C5F, 0x807E, 0x807D, 0x81DF, 0x8972, 0x896F,
+  0x89FC, 0x8B80, 0x8D16, 0x8D17, 0x8E91, 0x8E93, 0x8F61, 0x9148,
+  0x9444, 0x9451, 0x9452, 0x973D, 0x973E, 0x97C3, 0x97C1, 0x986B,
+  0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A, 0x9C49, 0x9C31, 0x9C3E,
+  0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C, 0x9F6A, 0x9F94, 0x56CC,
+plane 52 
+at 0x00
+  0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, 0x66EC, 0x6B10, 0x74DA,
+  0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, 0x7E96, 0x7E94, 0x81E2,
+  0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090, 0x908F, 0x9463, 0x9460,
+  0x9464, 0x9768, 0x986F, 0x995C, 0x9A5A, 0x9A5B, 0x9A57, 0x9AD3,
+  0x9AD4, 0x9AD1, 0x9C54, 0x9C57, 0x9C56, 0x9DE5, 0x9E9F, 0x9EF4,
+  0x56D1, 0x58E9, 0x652C, 0x705E, 0x7671, 0x7672, 0x77D7, 0x7F50,
+  0x7F88, 0x8836, 0x8839, 0x8862, 0x8B93, 0x8B92, 0x8B96, 0x8277,
+  0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748, 0x9744, 0x97C6, 0x9870,
+  0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, 0x9DFA, 0x9E7C, 0x9E7D,
+  0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16, 0x7063, 0x7C6C, 0x7C6E,
+  0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472, 0x9470, 0x9871, 0x995E,
+  0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA, 0x8B9A, 0x9477, 0x97C9,
+  0x9A62, 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA, 0x91C5, 0x947D, 0x947E,
+  0x947C, 0x9C77, 0x9C78, 0x9EF7, 0x8C54, 0x947F, 0x9E1A, 0x7228,
+  0x9A6A, 0x9B31, 0x9E1B, 0x9E1E, 0x7C72, 0x617B, 0x616F, 0x6181,
+  0x613C, 0x6142, 0x6138, 0x6133, 0x6160, 0x6169, 0x617D, 0x6186,
+  0x622C, 0x6228, 0x644C, 0x6457, 0x647C, 0x6455, 0x6462, 0x6471,
+  0x646A, 0x6456, 0x643B, 0x6481, 0x644F, 0x647E, 0x6464, 0x6571,
+  0x66A5, 0x669A, 0x669C, 0x66A6, 0x66A4, 0x698F, 0x2460, 0x2461,
+  0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
+  0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B,
+  0x247C, 0x247D, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175,
+  0x2176, 0x2177, 0x2178, 0x2179, 0x4E36, 0x4E3F, 0x4E85, 0x4EA0,
+  0x5182, 0x5196, 0x51AB, 0x52F9, 0x5338, 0x5369, 0x53B6, 0x590A,
+  0x5B80, 0x5DDB, 0x5E7A, 0x5E7F, 0x5EF4, 0x5F50, 0x5F61, 0x6534,
+  0x65E0, 0x7592, 0x7676, 0x8FB5, 0x96B6, 0x5902, 0xFF3E, 0x30FD,
+  0x30FE, 0x309D, 0x309E, 0xFF02, 0x309B, 0x309C, 0x30FB, 0x3007,
+  0x30FC, 0xFF3B, 0xFF3D, 0x273D, 0x3041, 0x3042, 0x3043, 0x3044,
+  0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C,
+  0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054,
+  0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C,
+  0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064,
+plane 53 
+at 0x00
+  0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C,
+  0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074,
+  0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C,
+  0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084,
+  0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C,
+  0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A1,
+  0x30A2, 0x30A3, 0x30A4, 0x69C5, 0x69C8, 0x6992, 0x69B2, 0x69E3,
+  0x69C0, 0x69D6, 0x69D1, 0x699F, 0x69A2, 0x69D2, 0x69E1, 0x69D5,
+  0x699D, 0x6998, 0x6B74, 0x6BA1, 0x6EF0, 0x6EF3, 0x6F1B, 0x6F0C,
+  0x6F1D, 0x6F34, 0x6F28, 0x6F17, 0x6F44, 0x6F42, 0x6F04, 0x6F11,
+  0x6EFA, 0x6F4A, 0x7191, 0x718E, 0x30A5, 0x30A6, 0x30A7, 0x30A8,
+  0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0,
+  0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8,
+  0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0,
+  0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8,
+  0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0,
+  0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8,
+  0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0,
+  0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8,
+  0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0,
+  0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0x6BB9, 0x6E0B,
+  0x7105, 0x7314, 0x7304, 0x7305, 0x7315, 0x730D, 0x772E, 0x7741,
+  0x77EA, 0x7844, 0x7B29, 0x7B27, 0x7C9D, 0x7FC8, 0x8126, 0x811C,
+  0x8128, 0x8370, 0x8382, 0x83AC, 0x86AD, 0x86CA, 0x8851, 0x889D,
+  0x8990, 0x89D8, 0x89D7, 0x8A2E, 0x8C59, 0x8EDA, 0x9033, 0x9018,
+  0x91EF, 0x9AD9, 0x4EB4, 0x50A0, 0x5090, 0x5086, 0x5084, 0x508A,
+  0x509F, 0x50A1, 0x5093, 0x51D5, 0x5590, 0x5710, 0x5817, 0x5844,
+  0x582B, 0x5845, 0x5965, 0x5BCF, 0x5D56, 0x5D54, 0x5F3D, 0x5FA4,
+  0x63EC, 0x63FA, 0x63D4, 0x6675, 0x671C, 0x68D9, 0x6BF1, 0x6E37,
+  0x6E7D, 0x6E86, 0x74FA, 0x7572, 0x75DC, 0x7867, 0x7977, 0x7A9B,
+  0x7D2A, 0x718B, 0x718D, 0x717F, 0x718C, 0x717E, 0x717C, 0x7183,
+  0x7188, 0x7294, 0x7355, 0x7353, 0x734F, 0x7354, 0x746C, 0x7465,
+plane 54 
+at 0x00
+  0x7466, 0x7461, 0x746B, 0x7468, 0x7476, 0x7460, 0x7474, 0x7506,
+  0x760E, 0x7607, 0x76B9, 0x76B7, 0x76E2, 0x7774, 0x7777, 0x7776,
+  0x7775, 0x7778, 0x7D65, 0x7F64, 0x8020, 0x8120, 0x813C, 0x813F,
+  0x81F0, 0x81F5, 0x8415, 0x83BE, 0x86E5, 0x86D2, 0x86E0, 0x88B3,
+  0x8A53, 0x8A37, 0x8A47, 0x8A5C, 0x8EF0, 0x921D, 0x976B, 0x50C0,
+  0x52E5, 0x53AF, 0x55D8, 0x5711, 0x5867, 0x5843, 0x5BDD, 0x5D70,
+  0x5D6A, 0x5D74, 0x5D5F, 0x5D61, 0x5D73, 0x5E50, 0x5F3F, 0x5FB0,
+  0x6135, 0x612D, 0x6102, 0x6226, 0x656E, 0x65B1, 0x65D4, 0x6685,
+  0x6972, 0x693A, 0x6EAD, 0x6E95, 0x7243, 0x728F, 0x7575, 0x75EC,
+  0x7757, 0x797B, 0x7A21, 0x7A16, 0x7AE8, 0x7B6A, 0x7B5F, 0x7D82,
+  0x8055, 0x8168, 0x8246, 0x8243, 0x8481, 0x847C, 0x846A, 0x9170,
+  0x50D2, 0x9B62, 0x6F8A, 0x8772, 0x9AF0, 0x9EA8, 0x5292, 0x878C,
+  0x9ABA, 0x9B81, 0x9384, 0x9AFF, 0x9BB3, 0x9BB0, 0x9EC7, 0x9721,
+  0x7C36, 0x8B5E, 0x9401, 0x941D, 0x994A, 0x8B73, 0x9DD4, 0x77D6,
+  0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, 0x4E47,
+  0x4E8D, 0x56D7, 0x5140, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E,
+  0x4E2E, 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C,
+  0x53B9, 0x5720, 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3,
+  0x6BCC, 0x6C14, 0x723F, 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9,
+  0x4EE1, 0x4EDD, 0x4EDA, 0x520C, 0x531C, 0x534C, 0x5722, 0x5723,
+  0x5917, 0x592F, 0x5B81, 0x5B84, 0x5C12, 0x5C3B, 0x5C74, 0x5C73,
+  0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, 0x6250, 0x6C15, 0x7771,
+  0x777A, 0x715B, 0x777B, 0x78A6, 0x78AE, 0x78B8, 0x78B1, 0x78AF,
+  0x7989, 0x7987, 0x7A29, 0x7A2A, 0x7A2D, 0x7A2C, 0x7A32, 0x7AEC,
+  0x7AF0, 0x7B81, 0x7B9E, 0x7B83, 0x7B92, 0x7BA3, 0x7B9F, 0x7B93,
+  0x7B86, 0x7CB8, 0x7CB7, 0x7DC8, 0x7DB6, 0x7DD1, 0x7DA8, 0x7DAB,
+  0x6C36, 0x6C43, 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A, 0x79B8,
+  0x808A, 0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14, 0x4EF1,
+  0x4F00, 0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22, 0x4F13,
+  0x4F04, 0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5209, 0x5210, 0x52A6,
+  0x5322, 0x531F, 0x534D, 0x538A, 0x5407, 0x56E1, 0x56DF, 0x572E,
+  0x572A, 0x5734, 0x593C, 0x5980, 0x597C, 0x5985, 0x597B, 0x597E,
+plane 55 
+at 0x00
+  0x5977, 0x597F, 0x5B56, 0x5C15, 0x5C25, 0x5C7C, 0x5C7A, 0x5C7B,
+  0x5C7E, 0x5DDF, 0x5E75, 0x5E84, 0x5F02, 0x5F1A, 0x5F74, 0x5FD5,
+  0x5FD4, 0x5FCF, 0x625C, 0x625E, 0x6264, 0x6261, 0x6266, 0x6262,
+  0x6259, 0x6260, 0x625A, 0x6265, 0x65EF, 0x65EE, 0x673E, 0x6739,
+  0x6738, 0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18, 0x6C46,
+  0x6C52, 0x6C5C, 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B, 0x6C4C, 0x7071,
+  0x725E, 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F, 0x7A75, 0x7F51,
+  0x8278, 0x827C, 0x8280, 0x827D, 0x827F, 0x864D, 0x897E, 0x9099,
+  0x9097, 0x9098, 0x909B, 0x9094, 0x9622, 0x9624, 0x9620, 0x9623,
+  0x4F56, 0x4F3B, 0x4F62, 0x4F49, 0x4F53, 0x4F64, 0x4F3E, 0x4F67,
+  0x4F52, 0x4F5F, 0x4F41, 0x4F58, 0x4F2D, 0x4F33, 0x4F3F, 0x4F61,
+  0x518F, 0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD, 0x52AE, 0x5309,
+  0x5363, 0x5372, 0x538E, 0x538F, 0x5430, 0x5437, 0x542A, 0x5454,
+  0x5445, 0x5419, 0x541C, 0x5425, 0x5418, 0x7DB3, 0x7DCD, 0x7DCF,
+  0x7DA4, 0x7F41, 0x7F6F, 0x7F71, 0x8023, 0x805B, 0x8061, 0x805F,
+  0x8181, 0x8184, 0x8213, 0x824A, 0x824C, 0x84BD, 0x8495, 0x8492,
+  0x84C3, 0x8496, 0x84A5, 0x84B5, 0x84B3, 0x84A3, 0x84E4, 0x84D8,
+  0x84D5, 0x84B7, 0x84AD, 0x84DA, 0x8493, 0x8736, 0x543D, 0x544F,
+  0x5441, 0x5428, 0x5424, 0x5447, 0x56EE, 0x56E7, 0x56E5, 0x5741,
+  0x5745, 0x574C, 0x5749, 0x574B, 0x5752, 0x5906, 0x5940, 0x59A6,
+  0x5998, 0x59A0, 0x5997, 0x598E, 0x59A2, 0x5990, 0x598F, 0x59A7,
+  0x59A1, 0x5B8E, 0x5B92, 0x5C28, 0x5C2A, 0x5C8D, 0x5C8F, 0x5C88,
+  0x5C8B, 0x5C89, 0x5C92, 0x5C8A, 0x5C86, 0x5C93, 0x5C95, 0x5DE0,
+  0x5E0A, 0x5E0E, 0x5E8B, 0x5E89, 0x5E8C, 0x5E88, 0x5E8D, 0x5F05,
+  0x5F1D, 0x5F78, 0x5F76, 0x5FD2, 0x5FD1, 0x5FD0, 0x5FED, 0x5FE8,
+  0x5FEE, 0x5FF3, 0x5FE1, 0x5FE4, 0x5FE3, 0x5FFA, 0x5FEF, 0x5FF7,
+  0x5FFB, 0x6000, 0x5FF4, 0x623A, 0x6283, 0x628C, 0x628E, 0x628F,
+  0x6294, 0x6287, 0x6271, 0x627B, 0x627A, 0x6270, 0x6281, 0x6288,
+  0x6277, 0x627D, 0x6272, 0x6274, 0x6537, 0x65F0, 0x65F4, 0x65F3,
+  0x65F2, 0x65F5, 0x6745, 0x6747, 0x6759, 0x6755, 0x674C, 0x6748,
+  0x675D, 0x674D, 0x675A, 0x674B, 0x6BD0, 0x6C19, 0x6C1A, 0x6C78,
+  0x6C67, 0x6C6B, 0x6C84, 0x6C8B, 0x6C8F, 0x6C71, 0x6C6F, 0x6C69,
+plane 56 
+at 0x00
+  0x6C9A, 0x6C6D, 0x6C87, 0x6C95, 0x6C9C, 0x6C66, 0x6C73, 0x6C65,
+  0x6C7B, 0x6C8E, 0x7074, 0x707A, 0x7263, 0x72BF, 0x72BD, 0x72C3,
+  0x72C6, 0x72C1, 0x72BA, 0x72C5, 0x7395, 0x7397, 0x7393, 0x7394,
+  0x7392, 0x753A, 0x7539, 0x7594, 0x7595, 0x7681, 0x793D, 0x8034,
+  0x8095, 0x8099, 0x8090, 0x8092, 0x809C, 0x8290, 0x828F, 0x8285,
+  0x828E, 0x8291, 0x8293, 0x873D, 0x872B, 0x8747, 0x8739, 0x8745,
+  0x871D, 0x88FF, 0x88EA, 0x88F5, 0x8900, 0x88ED, 0x8903, 0x88E9,
+  0x89EA, 0x8A9B, 0x8A8E, 0x8AA2, 0x8A9C, 0x8A94, 0x8A90, 0x8AA9,
+  0x8AAC, 0x8A9F, 0x8A9D, 0x8C67, 0x8CD0, 0x8CD6, 0x8CD4, 0x8D98,
+  0x8D9A, 0x8D97, 0x8E0B, 0x8E08, 0x828A, 0x8283, 0x8284, 0x8C78,
+  0x8FC9, 0x8FBF, 0x909F, 0x90A1, 0x90A5, 0x909E, 0x90A7, 0x90A0,
+  0x9630, 0x9628, 0x962F, 0x962D, 0x4E33, 0x4F98, 0x4F7C, 0x4F85,
+  0x4F7D, 0x4F80, 0x4F87, 0x4F76, 0x4F74, 0x4F89, 0x4F84, 0x4F77,
+  0x4F4C, 0x4F97, 0x4F6A, 0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90,
+  0x4F9C, 0x4F94, 0x4F9E, 0x4F92, 0x4F82, 0x4F95, 0x4F6B, 0x4F6E,
+  0x519E, 0x51BC, 0x51BE, 0x5235, 0x5232, 0x5233, 0x5246, 0x5231,
+  0x52BC, 0x530A, 0x530B, 0x533C, 0x5392, 0x5394, 0x5487, 0x547F,
+  0x5481, 0x5491, 0x5482, 0x5488, 0x546B, 0x547A, 0x547E, 0x5465,
+  0x546C, 0x5474, 0x5466, 0x548D, 0x546F, 0x5461, 0x5460, 0x5498,
+  0x5463, 0x5467, 0x5464, 0x56F7, 0x56F9, 0x576F, 0x5772, 0x576D,
+  0x576B, 0x5771, 0x5770, 0x5776, 0x5780, 0x5775, 0x577B, 0x5773,
+  0x5774, 0x5762, 0x5768, 0x577D, 0x590C, 0x5945, 0x59B5, 0x59BA,
+  0x59CF, 0x59CE, 0x59B2, 0x59CC, 0x59C1, 0x59B6, 0x59BC, 0x59C3,
+  0x59D6, 0x59B1, 0x59BD, 0x59C0, 0x59C8, 0x59B4, 0x59C7, 0x5B62,
+  0x5B65, 0x5B93, 0x5B95, 0x5C44, 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0,
+  0x5CB5, 0x5CAF, 0x5CA8, 0x5CAC, 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2,
+  0x5CAA, 0x5CA7, 0x5C9D, 0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17,
+  0x5E14, 0x5E19, 0x5F28, 0x5F22, 0x5F23, 0x5F24, 0x5F54, 0x5F82,
+  0x5F7E, 0x5F7D, 0x5FDE, 0x5FE5, 0x602D, 0x6026, 0x6019, 0x6032,
+  0x600B, 0x8E01, 0x8EB4, 0x8EB3, 0x8FA1, 0x8FA2, 0x905A, 0x9061,
+  0x905F, 0x9125, 0x917B, 0x9176, 0x917C, 0x9289, 0x92F6, 0x92B1,
+  0x92AD, 0x9292, 0x9281, 0x9284, 0x92AE, 0x9290, 0x929E, 0x95A2,
+plane 57 
+at 0x00
+  0x95A7, 0x96A0, 0x969D, 0x969F, 0x96D0, 0x96D1, 0x9759, 0x9764,
+  0x9819, 0x9814, 0x6034, 0x600A, 0x6017, 0x6033, 0x601A, 0x601E,
+  0x602C, 0x6022, 0x600D, 0x6010, 0x602E, 0x6013, 0x6011, 0x600C,
+  0x6009, 0x601C, 0x6214, 0x623D, 0x62AD, 0x62B4, 0x62D1, 0x62BE,
+  0x62AA, 0x62B6, 0x62CA, 0x62AE, 0x62B3, 0x62AF, 0x62BB, 0x62A9,
+  0x62B0, 0x62B8, 0x653D, 0x65A8, 0x65BB, 0x6609, 0x65FC, 0x6604,
+  0x6612, 0x6608, 0x65FB, 0x6603, 0x660B, 0x660D, 0x6605, 0x65FD,
+  0x6611, 0x6610, 0x66F6, 0x670A, 0x6785, 0x676C, 0x678E, 0x6792,
+  0x6776, 0x677B, 0x6798, 0x6786, 0x6784, 0x6774, 0x678D, 0x678C,
+  0x677A, 0x679F, 0x6791, 0x6799, 0x6783, 0x677D, 0x6781, 0x6778,
+  0x6779, 0x6794, 0x6B25, 0x6B80, 0x6B7E, 0x6BDE, 0x6C1D, 0x6C93,
+  0x6CEC, 0x6CEB, 0x6CEE, 0x6CD9, 0x6CB6, 0x6CD4, 0x6CAD, 0x6CE7,
+  0x6CB7, 0x6CD0, 0x6CC2, 0x6CBA, 0x6CC3, 0x6CC6, 0x6CED, 0x6CF2,
+  0x6CD2, 0x6CDD, 0x6CB4, 0x6C8A, 0x6C9D, 0x6C80, 0x6CDE, 0x6CC0,
+  0x6D30, 0x6CCD, 0x6CC7, 0x6CB0, 0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1,
+  0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
+  0x7082, 0x709A, 0x7083, 0x726A, 0x72D6, 0x72CB, 0x72D8, 0x72C9,
+  0x72DC, 0x72D2, 0x72D4, 0x72DA, 0x72CC, 0x72D1, 0x73A4, 0x73A1,
+  0x73AD, 0x73A6, 0x73A2, 0x73A0, 0x73AC, 0x739D, 0x74DD, 0x74E8,
+  0x753F, 0x7540, 0x753E, 0x758C, 0x7598, 0x76AF, 0x76F3, 0x76F1,
+  0x76F0, 0x76F5, 0x77F8, 0x77FC, 0x77F9, 0x77FB, 0x77FA, 0x9815,
+  0x981A, 0x9906, 0x98F8, 0x9901, 0x99BE, 0x99BC, 0x99B7, 0x99B6,
+  0x99C0, 0x99B8, 0x99C4, 0x99BF, 0x9ADA, 0x9AE4, 0x9AE9, 0x9AE8,
+  0x9AEA, 0x9AE5, 0x9B26, 0x9B40, 0x9EBD, 0x510E, 0x50F7, 0x50FC,
+  0x510D, 0x5101, 0x51DA, 0x51D9, 0x51DB, 0x5286, 0x528E, 0x52EE,
+  0x77F7, 0x7942, 0x793F, 0x79C5, 0x7A78, 0x7A7B, 0x7AFB, 0x7C75,
+  0x7CFD, 0x8035, 0x808F, 0x80AE, 0x80A3, 0x80B8, 0x80B5, 0x80AD,
+  0x8220, 0x82A0, 0x82C0, 0x82AB, 0x829A, 0x8298, 0x829B, 0x82B5,
+  0x82A7, 0x82AE, 0x82BC, 0x829E, 0x82BA, 0x82B4, 0x82A8, 0x82A1,
+  0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6, 0x82A2, 0x8670, 0x866F,
+  0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, 0x8FD3, 0x8FCD, 0x8FD6,
+  0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, 0x90B3, 0x90B0, 0x9639,
+plane 58 
+at 0x00
+  0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD, 0x4FC5, 0x4FD3, 0x4FB2,
+  0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC, 0x4FD9, 0x4FBB, 0x4FB3,
+  0x4FDB, 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0, 0x4FB9, 0x4FEC, 0x5244,
+  0x5249, 0x52C0, 0x52C2, 0x533D, 0x537C, 0x5397, 0x5396, 0x5399,
+  0x5398, 0x54BA, 0x54A1, 0x54AD, 0x54A5, 0x54CF, 0x54C3, 0x830D,
+  0x54B7, 0x54AE, 0x54D6, 0x54B6, 0x54C5, 0x54C6, 0x54A0, 0x5470,
+  0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE, 0x54B0, 0x57B5, 0x579E,
+  0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, 0x579B, 0x5794, 0x5798,
+  0x578F, 0x5799, 0x57A5, 0x579A, 0x5795, 0x58F4, 0x590D, 0x5953,
+  0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1, 0x59DD, 0x59FA, 0x59FD,
+  0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7, 0x59DB, 0x59E9, 0x59F3,
+  0x59F5, 0x59E0, 0x59FE, 0x59F4, 0x59ED, 0x5BA8, 0x5C4C, 0x5CD0,
+  0x5CD8, 0x5CCC, 0x5CD7, 0x5CCB, 0x5CDB, 0x5333, 0x53B1, 0x5647,
+  0x562D, 0x5654, 0x564B, 0x5652, 0x5631, 0x5644, 0x5656, 0x5650,
+  0x562B, 0x564D, 0x5637, 0x564F, 0x58A2, 0x58B7, 0x58B2, 0x58AA,
+  0x58B5, 0x58B0, 0x58B4, 0x58A4, 0x58A7, 0x5926, 0x5AFE, 0x5B04,
+  0x5AFC, 0x5B06, 0x5B0A, 0x5B0D, 0x5B00, 0x5B0E, 0x5CDE, 0x5CDA,
+  0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, 0x5CD3, 0x5CD4, 0x5CCF, 0x5CC8,
+  0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9, 0x5E21, 0x5E22, 0x5E23,
+  0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2, 0x5E9B, 0x5EA3, 0x5EA5,
+  0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037, 0x6039, 0x6054, 0x6072,
+  0x605E, 0x6045, 0x6053, 0x6047, 0x6049, 0x605B, 0x604C, 0x6040,
+  0x6042, 0x605F, 0x6024, 0x6044, 0x6058, 0x6066, 0x606E, 0x6242,
+  0x6243, 0x62CF, 0x630D, 0x630B, 0x62F5, 0x630E, 0x6303, 0x62EB,
+  0x62F9, 0x630F, 0x630C, 0x62F8, 0x62F6, 0x6300, 0x6313, 0x6314,
+  0x62FA, 0x6315, 0x62FB, 0x62F0, 0x6541, 0x6543, 0x65AA, 0x65BF,
+  0x6636, 0x6621, 0x6632, 0x6635, 0x661C, 0x6626, 0x6622, 0x6633,
+  0x662B, 0x663A, 0x661D, 0x6634, 0x6639, 0x662E, 0x670F, 0x6710,
+  0x67C1, 0x67F2, 0x67C8, 0x67BA, 0x67DC, 0x67BB, 0x67F8, 0x67D8,
+  0x67C0, 0x67B7, 0x67C5, 0x67EB, 0x67E4, 0x67DF, 0x67B5, 0x67CD,
+  0x67B3, 0x67F7, 0x67F6, 0x67EE, 0x67E3, 0x67C2, 0x67B9, 0x67CE,
+  0x67E7, 0x67F0, 0x67B2, 0x67FC, 0x67C6, 0x67ED, 0x67CC, 0x67AE,
+plane 59 
+at 0x00
+  0x67E6, 0x67DB, 0x67FA, 0x67C9, 0x67CA, 0x67C3, 0x67EA, 0x67CB,
+  0x6B28, 0x6B82, 0x6B84, 0x6BB6, 0x6BD6, 0x6BD8, 0x6BE0, 0x6C20,
+  0x6C21, 0x6D28, 0x6D34, 0x6D2D, 0x6D1F, 0x6D3C, 0x6D3F, 0x6D12,
+  0x6D0A, 0x6CDA, 0x6D33, 0x6D04, 0x6D19, 0x6D3A, 0x6D1A, 0x6D11,
+  0x6D00, 0x6D1D, 0x6D42, 0x5D91, 0x5D8F, 0x5D90, 0x5D98, 0x5DA4,
+  0x5D9B, 0x5DA3, 0x5D96, 0x5DE4, 0x5E5A, 0x5E5E, 0x5FB8, 0x6157,
+  0x615C, 0x61A6, 0x6195, 0x6188, 0x61A3, 0x618F, 0x6164, 0x6159,
+  0x6178, 0x6185, 0x6187, 0x619E, 0x6198, 0x619C, 0x622F, 0x6480,
+  0x649B, 0x648E, 0x648D, 0x6494, 0x6D01, 0x6D18, 0x6D37, 0x6D03,
+  0x6D0F, 0x6D40, 0x6D07, 0x6D20, 0x6D2C, 0x6D08, 0x6D22, 0x6D09,
+  0x6D10, 0x70B7, 0x709F, 0x70BE, 0x70B1, 0x70B0, 0x70A1, 0x70B4,
+  0x70B5, 0x70A9, 0x7241, 0x7249, 0x724A, 0x726C, 0x7270, 0x7273,
+  0x726E, 0x72CA, 0x72E4, 0x72E8, 0x72EB, 0x72DF, 0x72EA, 0x72E6,
+  0x72E3, 0x7385, 0x73CC, 0x73C2, 0x73C8, 0x73C5, 0x73B9, 0x73B6,
+  0x73B5, 0x73B4, 0x73EB, 0x73BF, 0x73C7, 0x73BE, 0x73C3, 0x73C6,
+  0x73B8, 0x73CB, 0x74EC, 0x74EE, 0x752E, 0x7547, 0x7548, 0x75A7,
+  0x75AA, 0x7679, 0x76C4, 0x7708, 0x7703, 0x7704, 0x7705, 0x770A,
+  0x76F7, 0x76FB, 0x76FA, 0x77E7, 0x77E8, 0x7806, 0x7811, 0x7812,
+  0x7805, 0x7810, 0x780F, 0x780E, 0x7809, 0x7803, 0x7813, 0x794A,
+  0x794C, 0x794B, 0x7945, 0x7944, 0x79D5, 0x79CD, 0x79CF, 0x79D6,
+  0x79CE, 0x7A80, 0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A, 0x7C78,
+  0x7C79, 0x7C7F, 0x7C80, 0x7C81, 0x7D03, 0x7D08, 0x7D01, 0x7F58,
+  0x7F91, 0x7F8D, 0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014, 0x8037,
+  0x80D8, 0x80C7, 0x80E0, 0x80D1, 0x80C8, 0x80C2, 0x80D0, 0x80C5,
+  0x80E3, 0x80D9, 0x80DC, 0x80CA, 0x80D5, 0x80C9, 0x80CF, 0x80D7,
+  0x80E6, 0x80CD, 0x81FF, 0x8221, 0x8294, 0x82D9, 0x82FE, 0x82F9,
+  0x8307, 0x82E8, 0x8300, 0x82D5, 0x833A, 0x82EB, 0x82D6, 0x82F4,
+  0x82EC, 0x82E1, 0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6, 0x82F0,
+  0x82EA, 0x64C6, 0x64A8, 0x6483, 0x64B9, 0x6486, 0x64B4, 0x64AF,
+  0x6491, 0x64AA, 0x64A1, 0x64A7, 0x66B6, 0x66B3, 0x66BC, 0x66AC,
+  0x66AD, 0x6A0E, 0x6A1C, 0x6A1A, 0x6A0B, 0x69EF, 0x6A0C, 0x69F0,
+  0x6A22, 0x69D8, 0x6A12, 0x69FA, 0x6A2A, 0x6A10, 0x6A29, 0x69F9,
+plane 60 
+at 0x00
+  0x69EA, 0x6A2C, 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, 0x8677,
+  0x8674, 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869,
+  0x89D3, 0x8A04, 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0,
+  0x90F1, 0x90BD, 0x90BF, 0x90D5, 0x90C5, 0x90BE, 0x90C7, 0x90CB,
+  0x90C8, 0x91D4, 0x91D3, 0x9654, 0x964F, 0x9651, 0x9653, 0x964A,
+  0x964E, 0x501E, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501B,
+  0x4FF5, 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, 0x4FF7, 0x5017,
+  0x501C, 0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, 0x515A,
+  0x5194, 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261,
+  0x525A, 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E,
+  0x539E, 0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4,
+  0x551A, 0x54FF, 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, 0x54F1,
+  0x550A, 0x54FB, 0x54F7, 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B,
+  0x5701, 0x5702, 0x57CC, 0x5832, 0x57D5, 0x57D2, 0x57BA, 0x57C6,
+  0x57BD, 0x57BC, 0x57B8, 0x57B6, 0x57BF, 0x57C7, 0x57D0, 0x57B9,
+  0x57C1, 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, 0x5A2E, 0x5A15,
+  0x5A0F, 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, 0x5BAD,
+  0x5BAC, 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1,
+  0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, 0x5EAA,
+  0x5EAC, 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067, 0x6A24,
+  0x69E9, 0x6B52, 0x6B4F, 0x6B53, 0x6F10, 0x6F65, 0x6F75, 0x6FD0,
+  0x6F5C, 0x6F3D, 0x6F71, 0x6F91, 0x6F0B, 0x6F79, 0x6F81, 0x6F8F,
+  0x6F59, 0x6F74, 0x71AE, 0x71A3, 0x71AD, 0x71AB, 0x71A6, 0x71A2,
+  0x52F2, 0x7257, 0x7255, 0x7299, 0x734B, 0x747A, 0x748C, 0x7484,
+  0x6041, 0x60A2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609D, 0x6083,
+  0x6095, 0x609B, 0x6097, 0x6087, 0x609C, 0x608E, 0x6219, 0x6246,
+  0x62F2, 0x6310, 0x6356, 0x632C, 0x6344, 0x6345, 0x6336, 0x6343,
+  0x63E4, 0x6339, 0x634B, 0x634A, 0x633C, 0x6329, 0x6341, 0x6334,
+  0x6358, 0x6354, 0x6359, 0x632D, 0x6347, 0x6333, 0x635A, 0x6351,
+  0x6338, 0x6357, 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6, 0x65C3,
+  0x65C4, 0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, 0x6713,
+  0x681F, 0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, 0x684F,
+plane 61 
+at 0x00
+  0x6816, 0x6831, 0x681C, 0x6835, 0x682B, 0x682D, 0x682F, 0x684E,
+  0x6844, 0x6834, 0x681D, 0x6812, 0x6814, 0x6826, 0x6828, 0x682E,
+  0x684D, 0x683A, 0x6825, 0x6820, 0x6B2C, 0x6B2F, 0x6B2D, 0x6B31,
+  0x6B34, 0x6B6D, 0x8082, 0x6B88, 0x6BE6, 0x6BE4, 0x6BE8, 0x6BE3,
+  0x6BE2, 0x6BE7, 0x6C25, 0x6D7A, 0x6D63, 0x6D64, 0x6D76, 0x6D0D,
+  0x6D61, 0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, 0x6D91, 0x6D8D,
+  0x6DEF, 0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60, 0x6D97, 0x6D70,
+  0x6D7C, 0x6D5F, 0x6D82, 0x6D98, 0x6D2F, 0x6D68, 0x6D8B, 0x6D7E,
+  0x6D80, 0x6D84, 0x6D16, 0x6D83, 0x6D7B, 0x6D7D, 0x6D75, 0x6D90,
+  0x70DC, 0x70D3, 0x70D1, 0x70DD, 0x70CB, 0x7F39, 0x70E2, 0x70D7,
+  0x70D2, 0x70DE, 0x70E0, 0x70D4, 0x70CD, 0x70C5, 0x70C6, 0x70C7,
+  0x70DA, 0x70CE, 0x70E1, 0x7242, 0x7278, 0x7482, 0x7493, 0x747B,
+  0x7509, 0x778A, 0x7790, 0x78C6, 0x78D3, 0x78C0, 0x78D2, 0x78C7,
+  0x78C2, 0x799F, 0x799D, 0x799E, 0x7A41, 0x7A38, 0x7A3A, 0x7A42,
+  0x7A3E, 0x7AB0, 0x7BAE, 0x7BB3, 0x7BBF, 0x7BCD, 0x7BB2, 0x7CC4,
+  0x7CCD, 0x7CC2, 0x7CC6, 0x7CC3, 0x7CC9, 0x7CC7, 0x7277, 0x7276,
+  0x7300, 0x72FA, 0x72F4, 0x72FE, 0x72F6, 0x72F3, 0x72FB, 0x7301,
+  0x73D3, 0x73D9, 0x73E5, 0x73D6, 0x73BC, 0x73E7, 0x73E3, 0x73E9,
+  0x73DC, 0x73D2, 0x73DB, 0x73D4, 0x73DD, 0x73DA, 0x73D7, 0x73D8,
+  0x73E8, 0x74DE, 0x74DF, 0x74F4, 0x74F5, 0x7521, 0x755B, 0x755F,
+  0x75B0, 0x75C1, 0x75BB, 0x75C4, 0x75C0, 0x75BF, 0x75B6, 0x75BA,
+  0x768A, 0x76C9, 0x771D, 0x771B, 0x7710, 0x7713, 0x7712, 0x7723,
+  0x7711, 0x7715, 0x7719, 0x771A, 0x7722, 0x7727, 0x7823, 0x782C,
+  0x7822, 0x7835, 0x782F, 0x7828, 0x782E, 0x782B, 0x7821, 0x7829,
+  0x7833, 0x782A, 0x7831, 0x7954, 0x795B, 0x794F, 0x795C, 0x7953,
+  0x7952, 0x7951, 0x79EB, 0x79EC, 0x79E0, 0x79EE, 0x79ED, 0x79EA,
+  0x79DC, 0x79DE, 0x79DD, 0x7A86, 0x7A89, 0x7A85, 0x7A8B, 0x7A8C,
+  0x7A8A, 0x7A87, 0x7AD8, 0x7B10, 0x7B04, 0x7B13, 0x7B05, 0x7B0F,
+  0x7B08, 0x7B0A, 0x7B0E, 0x7B09, 0x7B12, 0x7C84, 0x7C91, 0x7C8A,
+  0x7C8C, 0x7C88, 0x7C8D, 0x7C85, 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E,
+  0x7D18, 0x7D16, 0x7D13, 0x7D1F, 0x7D12, 0x7D0F, 0x7D0C, 0x7F5C,
+  0x7F61, 0x7F5E, 0x7F60, 0x7F5D, 0x7F5B, 0x7F96, 0x7F92, 0x7FC3,
+plane 62 
+at 0x00
+  0x7FC2, 0x7FC0, 0x8016, 0x803E, 0x8039, 0x80FA, 0x80F2, 0x80F9,
+  0x80F5, 0x8101, 0x80FB, 0x8100, 0x8201, 0x822F, 0x8225, 0x8333,
+  0x832D, 0x8344, 0x8319, 0x8351, 0x8325, 0x8356, 0x833F, 0x8341,
+  0x8326, 0x831C, 0x8322, 0x7DF8, 0x7DED, 0x7DE2, 0x7DDC, 0x7E02,
+  0x7E01, 0x7DD6, 0x7DE4, 0x7DFE, 0x7E00, 0x7DFC, 0x7DFD, 0x7DF5,
+  0x7DFF, 0x7DEB, 0x7DE5, 0x7F78, 0x7FAE, 0x7FE7, 0x8065, 0x806A,
+  0x8066, 0x8068, 0x806B, 0x8194, 0x81A1, 0x8192, 0x8196, 0x8193,
+  0x8501, 0x84F8, 0x84F5, 0x8504, 0x8342, 0x834E, 0x831B, 0x832A,
+  0x8308, 0x833C, 0x834D, 0x8316, 0x8324, 0x8320, 0x8337, 0x832F,
+  0x8329, 0x8347, 0x8345, 0x834C, 0x8353, 0x831E, 0x832C, 0x834B,
+  0x8327, 0x8348, 0x8653, 0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D,
+  0x8691, 0x869E, 0x8687, 0x8697, 0x8686, 0x868B, 0x869A, 0x8685,
+  0x86A5, 0x8699, 0x86A1, 0x86A7, 0x8695, 0x8698, 0x868E, 0x869D,
+  0x8690, 0x8694, 0x8843, 0x8844, 0x886D, 0x8875, 0x8876, 0x8872,
+  0x8880, 0x8871, 0x887F, 0x886F, 0x8883, 0x887E, 0x8874, 0x887C,
+  0x8A12, 0x8C47, 0x8C57, 0x8C7B, 0x8CA4, 0x8CA3, 0x8D76, 0x8D78,
+  0x8DB5, 0x8DB7, 0x8DB6, 0x8ED1, 0x8ED3, 0x8FFE, 0x8FF5, 0x9002,
+  0x8FFF, 0x8FFB, 0x9004, 0x8FFC, 0x8FF6, 0x90D6, 0x90E0, 0x90D9,
+  0x90DA, 0x90E3, 0x90DF, 0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC,
+  0x90E4, 0x9150, 0x914E, 0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C,
+  0x965F, 0x96BC, 0x98E3, 0x9ADF, 0x9B2F, 0x4E7F, 0x5070, 0x506A,
+  0x5061, 0x505E, 0x5060, 0x5053, 0x504B, 0x505D, 0x5072, 0x5048,
+  0x504D, 0x5041, 0x505B, 0x504A, 0x5062, 0x5015, 0x5045, 0x505F,
+  0x5069, 0x506B, 0x5063, 0x5064, 0x5046, 0x5040, 0x506E, 0x5073,
+  0x5057, 0x5051, 0x51D0, 0x526B, 0x526D, 0x526C, 0x526E, 0x52D6,
+  0x52D3, 0x532D, 0x539C, 0x5575, 0x5576, 0x553C, 0x554D, 0x5550,
+  0x5534, 0x552A, 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552,
+  0x5545, 0x851B, 0x8503, 0x8533, 0x8534, 0x84ED, 0x8535, 0x8505,
+  0x877D, 0x8771, 0x885C, 0x88E6, 0x890F, 0x891B, 0x89A9, 0x89A5,
+  0x89EE, 0x8AB1, 0x8ACC, 0x8ACE, 0x8AB7, 0x8AB5, 0x8AE9, 0x8AB4,
+  0x8AB3, 0x8AC1, 0x8AAF, 0x8ACA, 0x8AD0, 0x8C8E, 0x8CE9, 0x8CDB,
+  0x8CEB, 0x8DA4, 0x550C, 0x5532, 0x5565, 0x554E, 0x5539, 0x5548,
+plane 63 
+at 0x00
+  0x552D, 0x553B, 0x5540, 0x554B, 0x570A, 0x5707, 0x57FB, 0x5814,
+  0x57E2, 0x57F6, 0x57DC, 0x57F4, 0x5800, 0x57ED, 0x57FD, 0x5808,
+  0x57F8, 0x580B, 0x57F3, 0x57CF, 0x5807, 0x57EE, 0x57E3, 0x57F2,
+  0x57E5, 0x57EC, 0x57E1, 0x580E, 0x57FC, 0x5810, 0x57E7, 0x5801,
+  0x580C, 0x57F1, 0x57E9, 0x57F0, 0x580D, 0x5804, 0x595C, 0x5A60,
+  0x5A58, 0x5A55, 0x5A67, 0x5A5E, 0x5A38, 0x5A35, 0x5A6D, 0x5A50,
+  0x5A5F, 0x5A65, 0x5A6C, 0x5A53, 0x5A64, 0x5A57, 0x5A43, 0x5A5D,
+  0x5A52, 0x5A44, 0x5A5B, 0x5A48, 0x5A8E, 0x5A3E, 0x5A4D, 0x5A39,
+  0x5A4C, 0x5A70, 0x5A69, 0x5A47, 0x5A51, 0x5A56, 0x5A42, 0x5A5C,
+  0x5B72, 0x5B6E, 0x5BC1, 0x5BC0, 0x5C59, 0x5D1E, 0x5D0B, 0x5D1D,
+  0x5D1A, 0x5D20, 0x5D0C, 0x5D28, 0x5D0D, 0x5D26, 0x5D25, 0x5D0F,
+  0x5D30, 0x5D12, 0x5D23, 0x5D1F, 0x5D2E, 0x5E3E, 0x5E34, 0x5EB1,
+  0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3, 0x5F36, 0x5F38, 0x5F9B, 0x5F96,
+  0x5F9F, 0x608A, 0x6090, 0x6086, 0x60BE, 0x60B0, 0x60BA, 0x60D3,
+  0x60D4, 0x60CF, 0x60E4, 0x60D9, 0x60DD, 0x60C8, 0x60B1, 0x60DB,
+  0x60B7, 0x60CA, 0x60BF, 0x60C3, 0x60CD, 0x60C0, 0x6332, 0x6365,
+  0x638A, 0x6382, 0x637D, 0x63BD, 0x639E, 0x63AD, 0x639D, 0x6397,
+  0x63AB, 0x638E, 0x636F, 0x6387, 0x6390, 0x636E, 0x63AF, 0x6375,
+  0x639C, 0x636D, 0x63AE, 0x637C, 0x63A4, 0x633B, 0x639F, 0x8DA2,
+  0x8D9D, 0x8E2A, 0x8E28, 0x8EB8, 0x8EB6, 0x8EB9, 0x8EB7, 0x8F22,
+  0x8F2B, 0x8F27, 0x8F19, 0x8FA4, 0x8FB3, 0x9071, 0x906A, 0x9188,
+  0x918C, 0x92BF, 0x92B8, 0x92BE, 0x92DC, 0x92E5, 0x92D4, 0x92D6,
+  0x92DA, 0x92ED, 0x92F3, 0x92DB, 0x92E2, 0x92EB, 0x95AF, 0x95B2,
+  0x6378, 0x6385, 0x6381, 0x6391, 0x638D, 0x6370, 0x6553, 0x65CD,
+  0x6665, 0x6661, 0x665B, 0x6659, 0x665C, 0x6662, 0x6718, 0x6879,
+  0x6887, 0x6890, 0x689C, 0x686D, 0x686E, 0x68AE, 0x68AB, 0x6956,
+  0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875, 0x6874, 0x68B2, 0x688F,
+  0x6877, 0x6892, 0x687C, 0x686B, 0x6872, 0x68AA, 0x6880, 0x6871,
+  0x687E, 0x689B, 0x6896, 0x688B, 0x68A0, 0x6889, 0x68A4, 0x6878,
+  0x687B, 0x6891, 0x688C, 0x688A, 0x687D, 0x6B36, 0x6B33, 0x6B37,
+  0x6B38, 0x6B91, 0x6B8F, 0x6B8D, 0x6B8E, 0x6B8C, 0x6C2A, 0x6DC0,
+  0x6DAB, 0x6DB4, 0x6DB3, 0x6E74, 0x6DAC, 0x6DE9, 0x6DE2, 0x6DB7,
+plane 64 
+at 0x00
+  0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0, 0x6DDF, 0x6DD6, 0x6DBE,
+  0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4, 0x6DCA, 0x6DBD, 0x6DED,
+  0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF, 0x6DC9, 0x6DD0, 0x6DF2,
+  0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3, 0x6DBB, 0x70FA, 0x710D,
+  0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, 0x7104, 0x70F3, 0x7110,
+  0x70FC, 0x70FF, 0x7106, 0x7113, 0x7100, 0x70F8, 0x70F6, 0x710B,
+  0x7102, 0x710E, 0x727E, 0x727B, 0x727C, 0x727F, 0x731D, 0x7317,
+  0x7307, 0x7311, 0x7318, 0x730A, 0x7308, 0x72FF, 0x730F, 0x731E,
+  0x7388, 0x73F6, 0x73F8, 0x73F5, 0x7404, 0x7401, 0x73FD, 0x7407,
+  0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C, 0x740B, 0x73F4, 0x7408,
+  0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF, 0x95B3, 0x96A3, 0x96A5,
+  0x970A, 0x9787, 0x9789, 0x978C, 0x97EF, 0x982A, 0x9822, 0x981F,
+  0x9919, 0x99CA, 0x99DA, 0x99DE, 0x99C8, 0x99E0, 0x9AB6, 0x9AB5,
+  0x9AF4, 0x9B6B, 0x9B69, 0x9B72, 0x9B63, 0x9D0D, 0x9D01, 0x9D0C,
+  0x9CF8, 0x9CFE, 0x9D02, 0x9E84, 0x9EAB, 0x9EAA, 0x75CB, 0x75CC,
+  0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, 0x7739, 0x772F, 0x772D,
+  0x7731, 0x7732, 0x7734, 0x7733, 0x773D, 0x7725, 0x773B, 0x7735,
+  0x7848, 0x7852, 0x7849, 0x784D, 0x784A, 0x784C, 0x7826, 0x7845,
+  0x7850, 0x7964, 0x7967, 0x7969, 0x796A, 0x7963, 0x796B, 0x7961,
+  0x79BB, 0x79FA, 0x79F8, 0x79F6, 0x79F7, 0x7A8F, 0x7A94, 0x7A90,
+  0x7B35, 0x7B47, 0x7B34, 0x7B25, 0x7B30, 0x7B22, 0x7B24, 0x7B33,
+  0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B, 0x7B2D, 0x7B2F, 0x7B32,
+  0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98, 0x7C96, 0x7CA3, 0x7D35,
+  0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, 0x7D2C, 0x7D29, 0x7D41,
+  0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, 0x7D28, 0x7F63, 0x7F95,
+  0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB, 0x7FCD, 0x7FD0, 0x7FD1,
+  0x7FC7, 0x7FCF, 0x7FC9, 0x801F, 0x801E, 0x801B, 0x8047, 0x8043,
+  0x8048, 0x8118, 0x8125, 0x8119, 0x811B, 0x812D, 0x811F, 0x812C,
+  0x811E, 0x8121, 0x8115, 0x8127, 0x811D, 0x8122, 0x8211, 0x8238,
+  0x8233, 0x823A, 0x8234, 0x8232, 0x8274, 0x8390, 0x83A3, 0x83A8,
+  0x838D, 0x837A, 0x8373, 0x83A4, 0x8374, 0x838F, 0x8381, 0x8395,
+  0x8399, 0x8375, 0x8394, 0x83A9, 0x837D, 0x8383, 0x838C, 0x839D,
+plane 65 
+at 0x00
+  0x839B, 0x83AA, 0x838B, 0x837E, 0x83A5, 0x83AF, 0x8388, 0x8397,
+  0x83B0, 0x837F, 0x83A6, 0x8387, 0x83AE, 0x8376, 0x839A, 0x8659,
+  0x8656, 0x86BF, 0x86B7, 0x511D, 0x5116, 0x512B, 0x511E, 0x511B,
+  0x5290, 0x5294, 0x5314, 0x5667, 0x567B, 0x565F, 0x5661, 0x58C3,
+  0x58CA, 0x58C0, 0x58C4, 0x5901, 0x5B1F, 0x5B18, 0x5B11, 0x5B15,
+  0x5B12, 0x5B1C, 0x5B22, 0x5B79, 0x5DA6, 0x5DB3, 0x5DAB, 0x5EEA,
+  0x5F5B, 0x61B7, 0x61CE, 0x61B9, 0x86C2, 0x86C1, 0x86C5, 0x86BA,
+  0x86B0, 0x86C8, 0x86B9, 0x86B3, 0x86B8, 0x86CC, 0x86B4, 0x86BB,
+  0x86BC, 0x86C3, 0x86BD, 0x86BE, 0x8852, 0x8889, 0x8895, 0x88A8,
+  0x88A2, 0x88AA, 0x889A, 0x8891, 0x88A1, 0x889F, 0x8898, 0x88A7,
+  0x8899, 0x889B, 0x8897, 0x88A4, 0x88AC, 0x888C, 0x8893, 0x888E,
+  0x8982, 0x89D6, 0x89D9, 0x89D5, 0x8A30, 0x8A27, 0x8A2C, 0x8A1E,
+  0x8C39, 0x8C3B, 0x8C5C, 0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D, 0x8D7B,
+  0x8D79, 0x8DBC, 0x8DC2, 0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8, 0x8EDE,
+  0x8EDD, 0x8EDC, 0x8ED7, 0x8EE0, 0x8EE1, 0x9024, 0x900B, 0x9011,
+  0x901C, 0x900C, 0x9021, 0x90EF, 0x90EA, 0x90F0, 0x90F4, 0x90F2,
+  0x90F3, 0x90D4, 0x90EB, 0x90EC, 0x90E9, 0x9156, 0x9158, 0x915A,
+  0x9153, 0x9155, 0x91EC, 0x91F4, 0x91F1, 0x91F3, 0x91F8, 0x91E4,
+  0x91F9, 0x91EA, 0x91EB, 0x91F7, 0x91E8, 0x91EE, 0x957A, 0x9586,
+  0x9588, 0x967C, 0x966D, 0x966B, 0x9671, 0x966F, 0x96BF, 0x976A,
+  0x9804, 0x98E5, 0x9997, 0x509B, 0x5095, 0x5094, 0x509E, 0x508B,
+  0x50A3, 0x5083, 0x508C, 0x508E, 0x509D, 0x5068, 0x509C, 0x5092,
+  0x5082, 0x5087, 0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4, 0x53A7,
+  0x5591, 0x55A8, 0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2, 0x5593,
+  0x5588, 0x558F, 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, 0x557D,
+  0x558C, 0x55A6, 0x557F, 0x5595, 0x55A1, 0x558E, 0x570C, 0x5829,
+  0x5837, 0x61BD, 0x61CF, 0x61C0, 0x6199, 0x6197, 0x61BB, 0x61D0,
+  0x61C4, 0x6231, 0x64D3, 0x64C0, 0x64DC, 0x64D1, 0x64C8, 0x64D5,
+  0x66C3, 0x66BF, 0x66C5, 0x66CD, 0x66C1, 0x6706, 0x6724, 0x6A63,
+  0x6A42, 0x6A52, 0x6A43, 0x6A33, 0x6A6C, 0x6A57, 0x6A4C, 0x6A6E,
+  0x6A37, 0x6A71, 0x5819, 0x581E, 0x5827, 0x5823, 0x5828, 0x57F5,
+  0x5848, 0x5825, 0x581C, 0x581B, 0x5833, 0x583F, 0x5836, 0x582E,
+plane 66 
+at 0x00
+  0x5839, 0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, 0x5A94,
+  0x5A9F, 0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5,
+  0x5AAC, 0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83,
+  0x5A8B, 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93,
+  0x5A9D, 0x5BEA, 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE,
+  0x5C0C, 0x5C30, 0x5D37, 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F,
+  0x5D35, 0x5D51, 0x5D4E, 0x5D55, 0x5D33, 0x5D3A, 0x5D52, 0x5D3D,
+  0x5D31, 0x5D59, 0x5D42, 0x5D39, 0x5D49, 0x5D38, 0x5D3C, 0x5D32,
+  0x5D36, 0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58, 0x5FA6, 0x5FA5,
+  0x5FAB, 0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4, 0x6114,
+  0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC,
+  0x60FE, 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104,
+  0x610B, 0x624A, 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8,
+  0x63EF, 0x63C3, 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5,
+  0x63F2, 0x63F5, 0x6461, 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4,
+  0x63D8, 0x63D3, 0x63C2, 0x63C7, 0x63CC, 0x63CB, 0x63C8, 0x63F0,
+  0x63D7, 0x63D9, 0x6532, 0x6567, 0x656A, 0x6564, 0x655C, 0x6568,
+  0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0, 0x65D2, 0x6A4A,
+  0x6A36, 0x6A53, 0x6A45, 0x6A70, 0x6A5C, 0x6B58, 0x6B57, 0x6FBB,
+  0x6FBE, 0x6FB5, 0x6FD3, 0x6F9F, 0x6FB7, 0x6FF5, 0x71B7, 0x71BB,
+  0x71D1, 0x71BA, 0x71B6, 0x71CC, 0x71D3, 0x749B, 0x7496, 0x74A2,
+  0x749D, 0x750A, 0x750E, 0x7581, 0x762C, 0x7637, 0x7636, 0x763B,
+  0x667C, 0x666C, 0x667B, 0x6680, 0x6671, 0x6679, 0x666A, 0x6672,
+  0x6701, 0x690C, 0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC, 0x68EA,
+  0x68F1, 0x690F, 0x68D6, 0x68F7, 0x68EB, 0x68E4, 0x68F6, 0x6913,
+  0x6910, 0x68F3, 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970, 0x68B4,
+  0x6911, 0x68EF, 0x68C6, 0x6914, 0x68F8, 0x68D0, 0x68FD, 0x68FC,
+  0x68E8, 0x690B, 0x690A, 0x6917, 0x68CE, 0x68C8, 0x68DD, 0x68DE,
+  0x68E6, 0x68F4, 0x68D1, 0x6906, 0x68D4, 0x68E9, 0x6915, 0x6925,
+  0x68C7, 0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, 0x6B97, 0x6B99,
+  0x6B95, 0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC, 0x6E46,
+  0x6E47, 0x6E1F, 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45, 0x6E62,
+plane 67 
+at 0x00
+  0x6E2B, 0x6E3F, 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33, 0x6E4B,
+  0x6E40, 0x6E51, 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E, 0x6E68, 0x6E5C,
+  0x6E61, 0x6E31, 0x6E28, 0x6E60, 0x6E71, 0x6E6B, 0x6E39, 0x6E22,
+  0x6E30, 0x6E53, 0x6E65, 0x6E27, 0x6E78, 0x6E64, 0x6E77, 0x6E55,
+  0x6E79, 0x6E52, 0x6E66, 0x6E35, 0x6E36, 0x6E5A, 0x7120, 0x711E,
+  0x712F, 0x70FB, 0x712E, 0x7131, 0x7123, 0x7125, 0x7122, 0x7132,
+  0x711F, 0x7128, 0x713A, 0x711B, 0x724B, 0x725A, 0x7288, 0x7289,
+  0x7286, 0x7285, 0x728B, 0x7312, 0x730B, 0x7330, 0x7322, 0x7331,
+  0x7333, 0x7327, 0x7332, 0x732D, 0x7326, 0x7323, 0x7335, 0x730C,
+  0x742E, 0x742C, 0x7430, 0x742B, 0x7416, 0x76A1, 0x7798, 0x7796,
+  0x78D6, 0x78EB, 0x78DC, 0x79A5, 0x79A9, 0x9834, 0x7A53, 0x7A45,
+  0x7A4F, 0x7ABD, 0x7ABB, 0x7AF1, 0x7BEC, 0x7BED, 0x7CD3, 0x7CE1,
+  0x7E19, 0x7E27, 0x7E26, 0x806E, 0x81AF, 0x81AD, 0x81AA, 0x8218,
+  0x856F, 0x854C, 0x8542, 0x855C, 0x8570, 0x855F, 0x741A, 0x7421,
+  0x742D, 0x7431, 0x7424, 0x7423, 0x741D, 0x7429, 0x7420, 0x7432,
+  0x74FB, 0x752F, 0x756F, 0x756C, 0x75E7, 0x75DA, 0x75E1, 0x75E6,
+  0x75DD, 0x75DF, 0x75E4, 0x75D7, 0x7695, 0x7692, 0x76DA, 0x7746,
+  0x7747, 0x7744, 0x774D, 0x7745, 0x774A, 0x774E, 0x774B, 0x774C,
+  0x77DE, 0x77EC, 0x7860, 0x7864, 0x7865, 0x785C, 0x786D, 0x7871,
+  0x786A, 0x786E, 0x7870, 0x7869, 0x7868, 0x785E, 0x7862, 0x7974,
+  0x7973, 0x7972, 0x7970, 0x7A02, 0x7A0A, 0x7A03, 0x7A0C, 0x7A04,
+  0x7A99, 0x7AE6, 0x7AE4, 0x7B4A, 0x7B3B, 0x7B44, 0x7B48, 0x7B4C,
+  0x7B4E, 0x7B40, 0x7B58, 0x7B45, 0x7CA2, 0x7C9E, 0x7CA8, 0x7CA1,
+  0x7D58, 0x7D6F, 0x7D63, 0x7D53, 0x7D56, 0x7D67, 0x7D6A, 0x7D4F,
+  0x7D6D, 0x7D5C, 0x7D6B, 0x7D52, 0x7D54, 0x7D69, 0x7D51, 0x7D5F,
+  0x7D4E, 0x7F3E, 0x7F3F, 0x7F65, 0x7F66, 0x7FA2, 0x7FA0, 0x7FA1,
+  0x7FD7, 0x8051, 0x804F, 0x8050, 0x80FE, 0x80D4, 0x8143, 0x814A,
+  0x8152, 0x814F, 0x8147, 0x813D, 0x814D, 0x813A, 0x81E6, 0x81EE,
+  0x81F7, 0x81F8, 0x81F9, 0x8204, 0x823C, 0x823D, 0x823F, 0x8275,
+  0x833B, 0x83CF, 0x83F9, 0x8423, 0x83C0, 0x83E8, 0x8412, 0x83E7,
+  0x83E4, 0x83FC, 0x83F6, 0x8410, 0x83C6, 0x83C8, 0x83EB, 0x83E3,
+  0x83BF, 0x8401, 0x83DD, 0x83E5, 0x83D8, 0x83FF, 0x83E1, 0x83CB,
+plane 68 
+at 0x00
+  0x83CE, 0x83D6, 0x83F5, 0x83C9, 0x8409, 0x840F, 0x83DE, 0x8411,
+  0x8406, 0x83C2, 0x83F3, 0x855A, 0x854B, 0x853F, 0x878A, 0x878B,
+  0x87A1, 0x878E, 0x8799, 0x885E, 0x885F, 0x8924, 0x89A7, 0x8AEA,
+  0x8AFD, 0x8AF9, 0x8AE3, 0x8AE5, 0x8AEC, 0x8CF2, 0x8CEF, 0x8DA6,
+  0x8E3B, 0x8E43, 0x8E32, 0x8F31, 0x8F30, 0x8F2D, 0x8F3C, 0x8FA7,
+  0x8FA5, 0x9137, 0x9195, 0x918E, 0x83D5, 0x83FA, 0x83C7, 0x83D1,
+  0x83EA, 0x8413, 0x83C3, 0x83EC, 0x83EE, 0x83C4, 0x83FB, 0x83D7,
+  0x83E2, 0x841B, 0x83DB, 0x83FE, 0x86D8, 0x86E2, 0x86E6, 0x86D3,
+  0x86E3, 0x86DA, 0x86EA, 0x86DD, 0x86EB, 0x86DC, 0x86EC, 0x86E9,
+  0x86D7, 0x86E8, 0x86D1, 0x8848, 0x8856, 0x8855, 0x88BA, 0x88D7,
+  0x88B9, 0x88B8, 0x88C0, 0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD,
+  0x88B2, 0x8901, 0x88C9, 0x8995, 0x8998, 0x8997, 0x89DD, 0x89DA,
+  0x89DB, 0x8A4E, 0x8A4D, 0x8A39, 0x8A59, 0x8A40, 0x8A57, 0x8A58,
+  0x8A44, 0x8A45, 0x8A52, 0x8A48, 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F,
+  0x8C5F, 0x8C81, 0x8C80, 0x8CBA, 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5,
+  0x8D84, 0x8D80, 0x8D89, 0x8DD8, 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6,
+  0x8DDC, 0x8DCF, 0x8DD5, 0x8DD9, 0x8DC8, 0x8DD7, 0x8DC5, 0x8EEF,
+  0x8EF7, 0x8EFA, 0x8EF9, 0x8EE6, 0x8EEE, 0x8EE5, 0x8EF5, 0x8EE7,
+  0x8EE8, 0x8EF6, 0x8EEB, 0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9, 0x902D,
+  0x9034, 0x902F, 0x9106, 0x912C, 0x9104, 0x90FF, 0x90FC, 0x9108,
+  0x90F9, 0x90FB, 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161,
+  0x9164, 0x915F, 0x9162, 0x9160, 0x9201, 0x920A, 0x9225, 0x9203,
+  0x921A, 0x9226, 0x920F, 0x920C, 0x9200, 0x9212, 0x91FF, 0x91FD,
+  0x9206, 0x9204, 0x9227, 0x9202, 0x921C, 0x9224, 0x9219, 0x9217,
+  0x9205, 0x9216, 0x957B, 0x958D, 0x958C, 0x9590, 0x9687, 0x967E,
+  0x9688, 0x9196, 0x9345, 0x930A, 0x92FD, 0x9317, 0x931C, 0x9307,
+  0x9331, 0x9332, 0x932C, 0x9330, 0x9303, 0x9305, 0x95C2, 0x95B8,
+  0x95C1, 0x96AB, 0x96B7, 0x9715, 0x9714, 0x970C, 0x9717, 0x9793,
+  0x97D2, 0x9836, 0x9831, 0x9833, 0x983C, 0x982E, 0x983A, 0x983D,
+  0x98B5, 0x9922, 0x9689, 0x9683, 0x9680, 0x96C2, 0x96C8, 0x96C3,
+  0x96F1, 0x96F0, 0x976C, 0x9770, 0x976E, 0x9807, 0x98A9, 0x98EB,
+  0x9CE6, 0x9EF9, 0x4E83, 0x4E84, 0x4EB6, 0x50BD, 0x50BF, 0x50C6,
+plane 69 
+at 0x00
+  0x50AE, 0x50C4, 0x50CA, 0x50B4, 0x50C8, 0x50C2, 0x50B0, 0x50C1,
+  0x50BA, 0x50B1, 0x50CB, 0x50C9, 0x50B6, 0x50B8, 0x51D7, 0x527A,
+  0x5278, 0x527B, 0x527C, 0x55C3, 0x55DB, 0x55CC, 0x55D0, 0x55CB,
+  0x55CA, 0x55DD, 0x55C0, 0x55D4, 0x55C4, 0x55E9, 0x55BF, 0x55D2,
+  0x558D, 0x55CF, 0x55D5, 0x55E2, 0x55D6, 0x55C8, 0x55F2, 0x55CD,
+  0x55D9, 0x55C2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584F, 0x584D,
+  0x5849, 0x586F, 0x5855, 0x584E, 0x585D, 0x5859, 0x5865, 0x585B,
+  0x583D, 0x5863, 0x5871, 0x58FC, 0x5AC7, 0x5AC4, 0x5ACB, 0x5ABA,
+  0x5AB8, 0x5AB1, 0x5AB5, 0x5AB0, 0x5ABF, 0x5AC8, 0x5ABB, 0x5AC6,
+  0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, 0x5AB6, 0x5ACD, 0x5AB9, 0x5A90,
+  0x5BD6, 0x5BD8, 0x5BD9, 0x5C1F, 0x5C33, 0x5D71, 0x5D63, 0x5D4A,
+  0x5D65, 0x5D72, 0x5D6C, 0x5D5E, 0x5D68, 0x5D67, 0x5D62, 0x5DF0,
+  0x5E4F, 0x5E4E, 0x5E4A, 0x5E4D, 0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6,
+  0x5ECB, 0x5EC7, 0x5F40, 0x5FAF, 0x5FAD, 0x60F7, 0x6149, 0x614A,
+  0x612B, 0x6145, 0x6136, 0x6132, 0x612E, 0x6146, 0x612F, 0x614F,
+  0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63C5,
+  0x63F1, 0x63EB, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x9923,
+  0x9920, 0x991C, 0x991D, 0x99A0, 0x99EF, 0x99E8, 0x99EB, 0x99E1,
+  0x99E6, 0x9AF8, 0x9AF5, 0x9B83, 0x9B94, 0x9B84, 0x9B8B, 0x9B8F,
+  0x9B8C, 0x9B89, 0x9B8E, 0x9D24, 0x9D0F, 0x9D13, 0x9D0A, 0x9D2A,
+  0x9D1A, 0x9D27, 0x9D16, 0x9D21, 0x9E85, 0x9EAC, 0x9EC6, 0x9EC5,
+  0x6433, 0x6443, 0x641F, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422,
+  0x6423, 0x640C, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642F,
+  0x640A, 0x641A, 0x6440, 0x6425, 0x6427, 0x640B, 0x63E7, 0x641B,
+  0x642E, 0x6421, 0x640E, 0x656F, 0x6592, 0x65D3, 0x6686, 0x668C,
+  0x6695, 0x6690, 0x668B, 0x668A, 0x6699, 0x6694, 0x6678, 0x6720,
+  0x6966, 0x695F, 0x6938, 0x694E, 0x6962, 0x6971, 0x693F, 0x6945,
+  0x696A, 0x6939, 0x6942, 0x6957, 0x6959, 0x697A, 0x6948, 0x6949,
+  0x6935, 0x696C, 0x6933, 0x693D, 0x6965, 0x68F0, 0x6978, 0x6934,
+  0x6969, 0x6940, 0x696F, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974,
+  0x694C, 0x693B, 0x694B, 0x6937, 0x695C, 0x694F, 0x6951, 0x6932,
+  0x6952, 0x692F, 0x697B, 0x693C, 0x6B46, 0x6B45, 0x6B43, 0x6B42,
+plane 70 
+at 0x00
+  0x6B48, 0x6B41, 0x6B9B, 0x55C0, 0x6BFB, 0x6BFC, 0x6BF9, 0x6BF7,
+  0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, 0x6E8F, 0x6EC0, 0x6E9F, 0x6E93,
+  0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6, 0x6ED2, 0x6EBD, 0x6EC1,
+  0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, 0x6EA6, 0x6ECF, 0x6EB2,
+  0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, 0x6E92, 0x6E8E, 0x6E8D,
+  0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, 0x6ED0, 0x6ECA, 0x6E97, 0x6EAE,
+  0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160, 0x7141, 0x715D,
+  0x7162, 0x7172, 0x7178, 0x716A, 0x7161, 0x7142, 0x7158, 0x7143,
+  0x714B, 0x7170, 0x715F, 0x7150, 0x7153, 0x9ED7, 0x9F53, 0x5128,
+  0x5127, 0x51DF, 0x5335, 0x53B3, 0x568A, 0x567D, 0x5689, 0x58CD,
+  0x58D0, 0x5B2B, 0x5B33, 0x5B29, 0x5B35, 0x5B31, 0x5B37, 0x5C36,
+  0x5DBE, 0x5DB9, 0x5DBB, 0x61E2, 0x61DB, 0x61DD, 0x61DC, 0x61DA,
+  0x61D9, 0x64DF, 0x64E1, 0x64EE, 0x65B5, 0x66D4, 0x7144, 0x714D,
+  0x715A, 0x724F, 0x728D, 0x728C, 0x7291, 0x7290, 0x728E, 0x733C,
+  0x7342, 0x733B, 0x733A, 0x7340, 0x734A, 0x7349, 0x7444, 0x744A,
+  0x744B, 0x7452, 0x7451, 0x7457, 0x7440, 0x744F, 0x7450, 0x744E,
+  0x7442, 0x7446, 0x744D, 0x7454, 0x74E1, 0x74FF, 0x74FE, 0x74FD,
+  0x751D, 0x7579, 0x7577, 0x6983, 0x75EF, 0x760F, 0x7603, 0x75F7,
+  0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610, 0x75FB, 0x75F6, 0x75ED,
+  0x75F5, 0x75FD, 0x7699, 0x76B5, 0x76DD, 0x7755, 0x775F, 0x7760,
+  0x7752, 0x7756, 0x775A, 0x7769, 0x7767, 0x7754, 0x7759, 0x776D,
+  0x77E0, 0x7887, 0x789A, 0x7894, 0x788F, 0x7884, 0x7895, 0x7885,
+  0x7886, 0x78A1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896, 0x787B,
+  0x797C, 0x7982, 0x797D, 0x7979, 0x7A11, 0x7A18, 0x7A19, 0x7A12,
+  0x7A17, 0x7A15, 0x7A22, 0x7A13, 0x7A1B, 0x7A10, 0x7AA3, 0x7AA2,
+  0x7A9E, 0x7AEB, 0x7B66, 0x7B64, 0x7B6D, 0x7B74, 0x7B69, 0x7B72,
+  0x7B65, 0x7B73, 0x7B71, 0x7B70, 0x7B61, 0x7B78, 0x7B76, 0x7B63,
+  0x7CB2, 0x7CB4, 0x7CAF, 0x7D88, 0x7D86, 0x7D80, 0x7D8D, 0x7D7F,
+  0x7D85, 0x7D7A, 0x7D8E, 0x7D7B, 0x7D83, 0x7D7C, 0x7D8C, 0x7D94,
+  0x7D84, 0x7D7D, 0x7D92, 0x7F6D, 0x7F6B, 0x7F67, 0x7F68, 0x7F6C,
+  0x7FA6, 0x7FA5, 0x7FA7, 0x7FDB, 0x7FDC, 0x8021, 0x8164, 0x8160,
+  0x8177, 0x815C, 0x8169, 0x815B, 0x8162, 0x8172, 0x6721, 0x815E,
+plane 71 
+at 0x00
+  0x8176, 0x8167, 0x816F, 0x66D5, 0x66D0, 0x66D1, 0x66CE, 0x66D7,
+  0x6A7D, 0x6A8A, 0x6AA7, 0x6A99, 0x6A82, 0x6A88, 0x6A86, 0x6A98,
+  0x6A9D, 0x6A8F, 0x6AAA, 0x6B5D, 0x6C0A, 0x6FD7, 0x6FD6, 0x6FE5,
+  0x6FD9, 0x6FDA, 0x6FEA, 0x6FF6, 0x71E3, 0x71E9, 0x71EB, 0x71EF,
+  0x71F3, 0x71EA, 0x7371, 0x74AE, 0x8144, 0x8161, 0x821D, 0x8249,
+  0x8244, 0x8240, 0x8242, 0x8245, 0x84F1, 0x843F, 0x8456, 0x8476,
+  0x8479, 0x848F, 0x848D, 0x8465, 0x8451, 0x8440, 0x8486, 0x8467,
+  0x8430, 0x844D, 0x847D, 0x845A, 0x8459, 0x8474, 0x8473, 0x845D,
+  0x8507, 0x845E, 0x8437, 0x843A, 0x8434, 0x847A, 0x8443, 0x8478,
+  0x8432, 0x8445, 0x8429, 0x83D9, 0x844B, 0x842F, 0x8442, 0x842D,
+  0x845F, 0x8470, 0x8439, 0x844E, 0x844C, 0x8452, 0x846F, 0x84C5,
+  0x848E, 0x843B, 0x8447, 0x8436, 0x8433, 0x8468, 0x847E, 0x8444,
+  0x842B, 0x8460, 0x8454, 0x846E, 0x8450, 0x870B, 0x8704, 0x86F7,
+  0x870C, 0x86FA, 0x86D6, 0x86F5, 0x874D, 0x86F8, 0x870E, 0x8709,
+  0x8701, 0x86F6, 0x870D, 0x8705, 0x88D6, 0x88CB, 0x88CD, 0x88CE,
+  0x88DE, 0x88DB, 0x88DA, 0x88CC, 0x88D0, 0x8985, 0x899B, 0x89DF,
+  0x89E5, 0x89E4, 0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, 0x8A76,
+  0x8A86, 0x8A7F, 0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84, 0x8A75,
+  0x8A83, 0x8A81, 0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, 0x8C4A, 0x8C65,
+  0x8C64, 0x8C66, 0x8C86, 0x8C84, 0x8C85, 0x8CCC, 0x8D68, 0x8D69,
+  0x8D91, 0x8D8C, 0x8D8E, 0x8D8F, 0x8D8D, 0x8D93, 0x8D94, 0x8D90,
+  0x8D92, 0x8DF0, 0x8DE0, 0x8DEC, 0x8DF1, 0x8DEE, 0x8DD0, 0x8DE9,
+  0x8DE3, 0x8DE2, 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, 0x8F06, 0x8EFF,
+  0x8F01, 0x8F00, 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B, 0x9052,
+  0x903F, 0x74B3, 0x74AC, 0x7583, 0x7645, 0x764E, 0x7644, 0x76A3,
+  0x76A5, 0x77A6, 0x77A4, 0x77A9, 0x77AF, 0x78F0, 0x78F8, 0x78F1,
+  0x7A49, 0x7AC2, 0x7AF2, 0x7AF3, 0x7BFA, 0x7BF6, 0x7BFC, 0x7C18,
+  0x7C08, 0x7C12, 0x7CDB, 0x7CDA, 0x7E2C, 0x7E4D, 0x7F46, 0x7FF6,
+  0x802B, 0x8074, 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F,
+  0x9111, 0x9116, 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, 0x9248,
+  0x9252, 0x9230, 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283,
+  0x922E, 0x924A, 0x9246, 0x926D, 0x926C, 0x924F, 0x9260, 0x9267,
+plane 72 
+at 0x00
+  0x926F, 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250,
+  0x9272, 0x924E, 0x9253, 0x924C, 0x9256, 0x9232, 0x959F, 0x959C,
+  0x959E, 0x959B, 0x9692, 0x9693, 0x9691, 0x9697, 0x96CE, 0x96FA,
+  0x96FD, 0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980F,
+  0x980D, 0x980E, 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0,
+  0x99B5, 0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, 0x9E80,
+  0x9EFD, 0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA,
+  0x50DD, 0x50E4, 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0,
+  0x51D8, 0x5280, 0x5281, 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627,
+  0x5615, 0x560C, 0x5612, 0x55FC, 0x560F, 0x561C, 0x5601, 0x5613,
+  0x5602, 0x55FA, 0x561D, 0x5604, 0x55FF, 0x55F9, 0x5889, 0x587C,
+  0x5890, 0x5898, 0x5886, 0x5881, 0x587F, 0x5874, 0x588B, 0x587A,
+  0x5887, 0x5891, 0x588E, 0x5876, 0x5882, 0x5888, 0x587B, 0x5894,
+  0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA,
+  0x5ADA, 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC,
+  0x5ADE, 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0, 0x81B8,
+  0x81C8, 0x8592, 0x8593, 0x857F, 0x85AB, 0x8597, 0x85AC, 0x87CE,
+  0x87CD, 0x87C1, 0x87B1, 0x87C7, 0x8940, 0x893F, 0x8939, 0x8943,
+  0x89AB, 0x8B1F, 0x8B09, 0x8B0C, 0x8C40, 0x8C96, 0x8CF6, 0x8CF7,
+  0x8E46, 0x8E4F, 0x8F3D, 0x8F41, 0x9366, 0x9378, 0x935D, 0x9369,
+  0x5BE3, 0x5C63, 0x5D82, 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, 0x5D81,
+  0x5D77, 0x5D8A, 0x5D89, 0x5D88, 0x5D7E, 0x5D7C, 0x5D8D, 0x5D79,
+  0x5D7F, 0x5E58, 0x5E59, 0x5E53, 0x5ED8, 0x5ED1, 0x5ED7, 0x5ECE,
+  0x5EDC, 0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44, 0x5F43, 0x5F6F,
+  0x5FB6, 0x612C, 0x6128, 0x6141, 0x615E, 0x6171, 0x6173, 0x6152,
+  0x6153, 0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A, 0x615B,
+  0x6165, 0x613B, 0x616A, 0x6161, 0x6156, 0x6229, 0x6227, 0x622B,
+  0x642B, 0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472, 0x6473,
+  0x647D, 0x6475, 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E, 0x645C,
+  0x644B, 0x6453, 0x6460, 0x6450, 0x647F, 0x643F, 0x646C, 0x646B,
+  0x6459, 0x6465, 0x6477, 0x6573, 0x65A0, 0x66A1, 0x66A0, 0x669F,
+  0x6705, 0x6704, 0x6722, 0x69B1, 0x69B6, 0x69C9, 0x69A0, 0x69CE,
+plane 73 
+at 0x00
+  0x6996, 0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999, 0x698E, 0x69A7,
+  0x698D, 0x69A9, 0x69BE, 0x69AF, 0x69BF, 0x69C4, 0x69BD, 0x69A4,
+  0x69D4, 0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3, 0x6993, 0x69AA,
+  0x69A1, 0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2, 0x69B5, 0x69A5,
+  0x69C6, 0x6B4A, 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BC3,
+  0x6BC4, 0x6BFE, 0x6ECE, 0x6EF5, 0x6EF1, 0x6F03, 0x6F25, 0x6EF8,
+  0x6F37, 0x6EFB, 0x6F2E, 0x6F09, 0x6F4E, 0x6F19, 0x6F1A, 0x6F27,
+  0x6F18, 0x6F3B, 0x6F12, 0x6EED, 0x6F0A, 0x9374, 0x937D, 0x936E,
+  0x9372, 0x9373, 0x9362, 0x9348, 0x9353, 0x935F, 0x9368, 0x937F,
+  0x936B, 0x95C4, 0x96AF, 0x96AD, 0x96B2, 0x971A, 0x971B, 0x979B,
+  0x979F, 0x9840, 0x9847, 0x98B7, 0x99A2, 0x9A00, 0x99F3, 0x99F5,
+  0x9ABD, 0x9B00, 0x9B02, 0x9B34, 0x9B49, 0x9B9F, 0x6F36, 0x6F73,
+  0x6EF9, 0x6EEE, 0x6F2D, 0x6F40, 0x6F30, 0x6F3C, 0x6F35, 0x6EEB,
+  0x6F07, 0x6F0E, 0x6F43, 0x6F05, 0x6EFD, 0x6EF6, 0x6F39, 0x6F1C,
+  0x6EFC, 0x6F3A, 0x6F1F, 0x6F0D, 0x6F1E, 0x6F08, 0x6F21, 0x7187,
+  0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718F, 0x717B, 0x7186,
+  0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293, 0x7343,
+  0x734D, 0x7351, 0x734C, 0x7462, 0x7473, 0x7471, 0x7475, 0x7472,
+  0x7467, 0x746E, 0x7500, 0x7502, 0x7503, 0x757D, 0x7590, 0x7616,
+  0x7608, 0x760C, 0x7615, 0x7611, 0x760A, 0x7614, 0x76B8, 0x7781,
+  0x777C, 0x7785, 0x7782, 0x776E, 0x7780, 0x776F, 0x777E, 0x7783,
+  0x78B2, 0x78AA, 0x78B4, 0x78AD, 0x78A8, 0x787E, 0x78AB, 0x789E,
+  0x78A5, 0x78A0, 0x78AC, 0x78A2, 0x78A4, 0x7998, 0x798A, 0x798B,
+  0x7996, 0x7995, 0x7994, 0x7993, 0x7997, 0x7988, 0x7992, 0x7990,
+  0x7A2B, 0x7A4A, 0x7A30, 0x7A2F, 0x7A28, 0x7A26, 0x7AA8, 0x7AAB,
+  0x7AAC, 0x7AEE, 0x7B88, 0x7B9C, 0x7B8A, 0x7B91, 0x7B90, 0x7B96,
+  0x7B8D, 0x7B8C, 0x7B9B, 0x7B8E, 0x7B85, 0x7B98, 0x5284, 0x7B99,
+  0x7BA4, 0x7B82, 0x7CBB, 0x7CBF, 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7,
+  0x7DC2, 0x7DA3, 0x7DAA, 0x7DC1, 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE,
+  0x7DC4, 0x7DC6, 0x7DCB, 0x7DCC, 0x7DAF, 0x7DB9, 0x7D96, 0x7DBC,
+  0x7D9F, 0x7DA6, 0x7DAE, 0x7DA9, 0x7DA1, 0x7DC9, 0x7F73, 0x7FE2,
+  0x7FE3, 0x7FE5, 0x7FDE, 0x9BA3, 0x9BCD, 0x9B99, 0x9B9D, 0x9D39,
+plane 74 
+at 0x00
+  0x9D44, 0x9D35, 0x9EAF, 0x512F, 0x9F8E, 0x569F, 0x569B, 0x569E,
+  0x5696, 0x5694, 0x56A0, 0x5B3B, 0x5B3A, 0x5DC1, 0x5F4D, 0x5F5D,
+  0x61F3, 0x64F6, 0x64E5, 0x64EA, 0x64E7, 0x6505, 0x64F9, 0x6AAB,
+  0x6AED, 0x6AB2, 0x6AB0, 0x6AB5, 0x8024, 0x805D, 0x805C, 0x8189,
+  0x8186, 0x8183, 0x8187, 0x818D, 0x818C, 0x818B, 0x8215, 0x8497,
+  0x84A4, 0x84A1, 0x849F, 0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE,
+  0x84AB, 0x84B9, 0x84B4, 0x84C1, 0x84CD, 0x84AA, 0x849A, 0x84B1,
+  0x84D0, 0x849D, 0x84A7, 0x84BB, 0x84A2, 0x8494, 0x84C7, 0x84CC,
+  0x849B, 0x84A9, 0x84AF, 0x84A8, 0x84D6, 0x8498, 0x84B6, 0x84CF,
+  0x84A0, 0x84D7, 0x84D4, 0x84D2, 0x84DB, 0x84B0, 0x8491, 0x8661,
+  0x8733, 0x8723, 0x8728, 0x876B, 0x8740, 0x872E, 0x871E, 0x8721,
+  0x8719, 0x871B, 0x8743, 0x872C, 0x8741, 0x873E, 0x8746, 0x8720,
+  0x8732, 0x872A, 0x872D, 0x873C, 0x8712, 0x873A, 0x8731, 0x8735,
+  0x8742, 0x8726, 0x8727, 0x8738, 0x8724, 0x871A, 0x8730, 0x8711,
+  0x88F7, 0x88E7, 0x88F1, 0x88F2, 0x88FA, 0x88FE, 0x88EE, 0x88FC,
+  0x88F6, 0x88FB, 0x88F0, 0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F,
+  0x899E, 0x89E9, 0x89EB, 0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92,
+  0x8A8F, 0x8A96, 0x8C3D, 0x8C68, 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7,
+  0x8D96, 0x8E09, 0x8E02, 0x8DFF, 0x8E0D, 0x8DFD, 0x8E0A, 0x8E03,
+  0x8E07, 0x8E06, 0x8E05, 0x8DFE, 0x8E00, 0x8E04, 0x8F10, 0x8F11,
+  0x8F0E, 0x8F0D, 0x9123, 0x911C, 0x9120, 0x9122, 0x911F, 0x911D,
+  0x911A, 0x9124, 0x9121, 0x911B, 0x917A, 0x9172, 0x9179, 0x9173,
+  0x92A5, 0x92A4, 0x9276, 0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA,
+  0x928D, 0x6ABE, 0x6AC1, 0x6AC8, 0x6AC0, 0x6ABC, 0x6AB1, 0x6AC4,
+  0x6ABF, 0x7008, 0x7003, 0x6FFD, 0x7010, 0x7002, 0x7013, 0x71FA,
+  0x7200, 0x74B9, 0x74BC, 0x765B, 0x7651, 0x764F, 0x76EB, 0x77B8,
+  0x77B9, 0x77C1, 0x77C0, 0x77BE, 0x790B, 0x7907, 0x790A, 0x7908,
+  0x790D, 0x7906, 0x92A6, 0x929A, 0x92AB, 0x9279, 0x9297, 0x927F,
+  0x92A3, 0x92EE, 0x928E, 0x9282, 0x9295, 0x92A2, 0x927D, 0x9288,
+  0x92A1, 0x928A, 0x9286, 0x928C, 0x9299, 0x92A7, 0x927E, 0x9287,
+  0x92A9, 0x929D, 0x928B, 0x922D, 0x969E, 0x96A1, 0x96FF, 0x9758,
+  0x977D, 0x977A, 0x977E, 0x9783, 0x9780, 0x9782, 0x977B, 0x9784,
+plane 75 
+at 0x00
+  0x9781, 0x977F, 0x97CE, 0x97CD, 0x9816, 0x98AD, 0x98AE, 0x9902,
+  0x9900, 0x9907, 0x999D, 0x999C, 0x99C3, 0x99B9, 0x99BB, 0x99BA,
+  0x99C2, 0x99BD, 0x99C7, 0x9AB1, 0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F,
+  0x9B60, 0x9B61, 0x9B5F, 0x9CF1, 0x9CF2, 0x9CF5, 0x9EA7, 0x50FF,
+  0x5103, 0x5130, 0x50F8, 0x5106, 0x5107, 0x50F6, 0x50FE, 0x510B,
+  0x510C, 0x50FD, 0x510A, 0x528B, 0x528C, 0x52F1, 0x52EF, 0x5648,
+  0x5642, 0x564C, 0x5635, 0x5641, 0x564A, 0x5649, 0x5646, 0x5658,
+  0x565A, 0x5640, 0x5633, 0x563D, 0x562C, 0x563E, 0x5638, 0x562A,
+  0x563A, 0x571A, 0x58AB, 0x589D, 0x58B1, 0x58A0, 0x58A3, 0x58AF,
+  0x58AC, 0x58A5, 0x58A1, 0x58FF, 0x5AFF, 0x5AF4, 0x5AFD, 0x5AF7,
+  0x5AF6, 0x5B03, 0x5AF8, 0x5B02, 0x5AF9, 0x5B01, 0x5B07, 0x5B05,
+  0x5B0F, 0x5C67, 0x5D99, 0x5D97, 0x5D9F, 0x5D92, 0x5DA2, 0x5D93,
+  0x5D95, 0x5DA0, 0x5D9C, 0x5DA1, 0x5D9A, 0x5D9E, 0x5E69, 0x5E5D,
+  0x5E60, 0x5E5C, 0x7DF3, 0x5EDB, 0x5EDE, 0x5EE1, 0x5F49, 0x5FB2,
+  0x618B, 0x6183, 0x6179, 0x61B1, 0x61B0, 0x61A2, 0x6189, 0x7915,
+  0x79AF, 0x7AF5, 0x7C2E, 0x7C1B, 0x7C1A, 0x7C24, 0x7CE6, 0x7CE3,
+  0x7E5D, 0x7E4F, 0x7E66, 0x7E5B, 0x7F47, 0x7FB4, 0x7FFA, 0x802E,
+  0x81CE, 0x8219, 0x85CC, 0x85B2, 0x85BB, 0x85C1, 0x87E9, 0x87EE,
+  0x87F0, 0x87D6, 0x880E, 0x87DA, 0x8948, 0x894A, 0x894E, 0x894D,
+  0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F, 0x6192, 0x61AA, 0x61A1,
+  0x618D, 0x6166, 0x61B3, 0x622D, 0x646E, 0x6470, 0x6496, 0x64A0,
+  0x6485, 0x6497, 0x649C, 0x648F, 0x648B, 0x648A, 0x648C, 0x64A3,
+  0x649F, 0x6468, 0x64B1, 0x6498, 0x6576, 0x657A, 0x6579, 0x657B,
+  0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, 0x66B2, 0x66B7, 0x66AA,
+  0x66AF, 0x6A00, 0x6A06, 0x6A17, 0x69E5, 0x69F8, 0x6A15, 0x69F1,
+  0x69E4, 0x6A20, 0x69FF, 0x69EC, 0x69E2, 0x6A1B, 0x6A1D, 0x69FE,
+  0x6A27, 0x69F2, 0x69EE, 0x6A14, 0x69F7, 0x69E7, 0x6A40, 0x6A08,
+  0x69E6, 0x69FB, 0x6A0D, 0x69FC, 0x69EB, 0x6A09, 0x6A04, 0x6A18,
+  0x6A25, 0x6A0F, 0x69F6, 0x6A26, 0x6A07, 0x69F4, 0x6A16, 0x6B51,
+  0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, 0x6C01, 0x6C00, 0x6BFF, 0x6C02,
+  0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6, 0x6F92, 0x6F8D, 0x6F89,
+  0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, 0x6F96, 0x6F76, 0x6F6C,
+plane 76 
+at 0x00
+  0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50, 0x6F57, 0x6F94, 0x6F93,
+  0x6F5D, 0x6F00, 0x6F61, 0x6F6B, 0x6F7D, 0x6F67, 0x6F90, 0x6F53,
+  0x6F8B, 0x6F69, 0x6F7F, 0x6F95, 0x6F63, 0x6F77, 0x6F6A, 0x6F7B,
+  0x71B2, 0x71AF, 0x719B, 0x71B0, 0x71A0, 0x719A, 0x71A9, 0x71B5,
+  0x719D, 0x71A5, 0x719E, 0x71A4, 0x71A1, 0x71AA, 0x719C, 0x71A7,
+  0x71B3, 0x7298, 0x729A, 0x7358, 0x7352, 0x735E, 0x735F, 0x7360,
+  0x735D, 0x735B, 0x7361, 0x735A, 0x7359, 0x89B1, 0x89B0, 0x89B3,
+  0x8B38, 0x8B32, 0x8B2D, 0x8B34, 0x8B29, 0x8C74, 0x8D03, 0x8DA9,
+  0x8E58, 0x8EBF, 0x8EC1, 0x8F4A, 0x8FAC, 0x9089, 0x913D, 0x913C,
+  0x91A9, 0x93A0, 0x9390, 0x9393, 0x938B, 0x93AD, 0x93BB, 0x93B8,
+  0x939C, 0x95D8, 0x95D7, 0x975D, 0x97A9, 0x97DA, 0x7362, 0x7487,
+  0x7489, 0x748A, 0x7486, 0x7481, 0x747D, 0x7485, 0x7488, 0x747C,
+  0x7479, 0x7508, 0x7507, 0x757E, 0x7625, 0x761E, 0x7619, 0x761D,
+  0x761C, 0x7623, 0x761A, 0x7628, 0x761B, 0x769C, 0x769D, 0x769E,
+  0x769B, 0x778D, 0x778F, 0x7789, 0x7788, 0x78CD, 0x78BB, 0x78CF,
+  0x78CC, 0x78D1, 0x78CE, 0x78D4, 0x78C8, 0x78C3, 0x78C4, 0x78C9,
+  0x799A, 0x79A1, 0x79A0, 0x799C, 0x79A2, 0x799B, 0x6B76, 0x7A39,
+  0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB, 0x7BBE, 0x7BAC, 0x7BCE,
+  0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, 0x7CC8, 0x7CCC, 0x7CCB,
+  0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7, 0x7DE1, 0x7E03, 0x7DFA,
+  0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, 0x7DDF, 0x7F76, 0x7FAC,
+  0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, 0x7FEC, 0x7FE6, 0x7FE8,
+  0x8064, 0x8067, 0x81A3, 0x819F, 0x819E, 0x8195, 0x81A2, 0x8199,
+  0x8197, 0x8216, 0x824F, 0x8253, 0x8252, 0x8250, 0x824E, 0x8251,
+  0x8524, 0x853B, 0x850F, 0x8500, 0x8529, 0x850E, 0x8509, 0x850D,
+  0x851F, 0x850A, 0x8527, 0x851C, 0x84FB, 0x852B, 0x84FA, 0x8508,
+  0x850C, 0x84F4, 0x852A, 0x84F2, 0x8515, 0x84F7, 0x84EB, 0x84F3,
+  0x84FC, 0x8512, 0x84EA, 0x84E9, 0x8516, 0x84FE, 0x8528, 0x851D,
+  0x852E, 0x8502, 0x84FD, 0x851E, 0x84F6, 0x8531, 0x8526, 0x84E7,
+  0x84E8, 0x84F0, 0x84EF, 0x84F9, 0x8518, 0x8520, 0x8530, 0x850B,
+  0x8519, 0x852F, 0x8662, 0x9854, 0x9855, 0x984B, 0x983F, 0x98B9,
+  0x9938, 0x9936, 0x9940, 0x993B, 0x9939, 0x99A4, 0x9A08, 0x9A0C,
+plane 77 
+at 0x00
+  0x9A10, 0x9B07, 0x9BD2, 0x9BC2, 0x9BBB, 0x9BCC, 0x9BCB, 0x9D4D,
+  0x9D63, 0x9D4E, 0x9D50, 0x9D55, 0x9D5E, 0x9E90, 0x9EB2, 0x9EB1,
+  0x9ECA, 0x9F02, 0x9F27, 0x9F26, 0x8756, 0x8763, 0x8764, 0x8777,
+  0x87E1, 0x8773, 0x8758, 0x8754, 0x875B, 0x8752, 0x8761, 0x875A,
+  0x8751, 0x875E, 0x876D, 0x876A, 0x8750, 0x874E, 0x875F, 0x875D,
+  0x876F, 0x876C, 0x877A, 0x876E, 0x875C, 0x8765, 0x874F, 0x877B,
+  0x8775, 0x8762, 0x8767, 0x8769, 0x885A, 0x8905, 0x890C, 0x8914,
+  0x890B, 0x8917, 0x8918, 0x8919, 0x8906, 0x8916, 0x8911, 0x890E,
+  0x8909, 0x89A2, 0x89A4, 0x89A3, 0x89ED, 0x89F0, 0x89EC, 0x8ACF,
+  0x8AC6, 0x8AB8, 0x8AD3, 0x8AD1, 0x8AD4, 0x8AD5, 0x8ABB, 0x8AD7,
+  0x8ABE, 0x8AC0, 0x8AC5, 0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD, 0x8AD9,
+  0x8C3E, 0x8C4D, 0x8C8F, 0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8, 0x8CDA,
+  0x8CDD, 0x8CE7, 0x8DA0, 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20, 0x8E23,
+  0x8E25, 0x8E24, 0x8E2E, 0x8E15, 0x8E1B, 0x8E16, 0x8E11, 0x8E19,
+  0x8E26, 0x8E27, 0x8E14, 0x8E12, 0x8E18, 0x8E13, 0x8E1C, 0x8E17,
+  0x8E1A, 0x8F2C, 0x8F24, 0x8F18, 0x8F1A, 0x8F20, 0x8F23, 0x8F16,
+  0x8F17, 0x9073, 0x9070, 0x906F, 0x9067, 0x906B, 0x912F, 0x912B,
+  0x9129, 0x912A, 0x9132, 0x9126, 0x912E, 0x9185, 0x9186, 0x918A,
+  0x9181, 0x9182, 0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4, 0x92C0,
+  0x92D9, 0x92B6, 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9, 0x92D7,
+  0x92DD, 0x92CC, 0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8, 0x92CE,
+  0x92E6, 0x92CD, 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7, 0x92D1,
+  0x92D3, 0x56AF, 0x58E0, 0x58DC, 0x5B39, 0x5B7C, 0x5BF3, 0x5C6B,
+  0x5DC4, 0x650B, 0x6508, 0x650A, 0x65DC, 0x66E1, 0x66DF, 0x6ACE,
+  0x6AD4, 0x6AE3, 0x6AD7, 0x6AE2, 0x6AD8, 0x6AD5, 0x6AD2, 0x701E,
+  0x702C, 0x7025, 0x6FF3, 0x7204, 0x7208, 0x7215, 0x74C4, 0x74C9,
+  0x74C7, 0x74C8, 0x92B5, 0x92E1, 0x92C6, 0x92B4, 0x957C, 0x95AC,
+  0x95AB, 0x95AE, 0x95B0, 0x96A4, 0x96A2, 0x96D3, 0x9705, 0x9708,
+  0x9702, 0x975A, 0x978A, 0x978E, 0x9788, 0x97D0, 0x97CF, 0x981E,
+  0x981D, 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, 0x9827, 0x98B2,
+  0x9908, 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99DC,
+  0x99CD, 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8,
+plane 78 
+at 0x00
+  0x99CB, 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2,
+  0x9AF1, 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76,
+  0x9B75, 0x9B70, 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD,
+  0x9CFF, 0x9CF7, 0x9D07, 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, 0x9D05,
+  0x9D04, 0x9E83, 0x9ED3, 0x9F0F, 0x9F10, 0x511C, 0x5113, 0x5117,
+  0x511A, 0x5111, 0x51DE, 0x5334, 0x53E1, 0x5670, 0x5660, 0x566E,
+  0x5673, 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, 0x5677, 0x571C,
+  0x571B, 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, 0x58BC,
+  0x58C6, 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10,
+  0x5B16, 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1,
+  0x5DA9, 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2,
+  0x5DAD, 0x5DAF, 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, 0x5EE9,
+  0x5EE7, 0x5EE6, 0x5EE8, 0x5EE5, 0x5F4B, 0x5FBC, 0x619D, 0x61A8,
+  0x6196, 0x61C5, 0x61B4, 0x61C6, 0x61C1, 0x61CC, 0x61BA, 0x76A9,
+  0x77C6, 0x77C5, 0x7918, 0x791A, 0x7920, 0x7A66, 0x7A64, 0x7A6A,
+  0x7C35, 0x7C34, 0x7E6C, 0x7E6E, 0x7E71, 0x81D4, 0x81D6, 0x821A,
+  0x8262, 0x8265, 0x8276, 0x85DB, 0x85D6, 0x85E7, 0x85F4, 0x87FD,
+  0x87D5, 0x8807, 0x880F, 0x87F8, 0x8987, 0x89B5, 0x89F5, 0x8B3F,
+  0x61BF, 0x61B8, 0x618C, 0x64D7, 0x64D6, 0x64D0, 0x64CF, 0x64C9,
+  0x64BD, 0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9, 0x6533, 0x657F,
+  0x657C, 0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB, 0x66CF,
+  0x66BD, 0x66BB, 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66, 0x6A49,
+  0x6A67, 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76, 0x6A5B,
+  0x6A51, 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A, 0x6A64,
+  0x6A50, 0x6A4F, 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, 0x6A5E,
+  0x6A56, 0x6A55, 0x6A4D, 0x6A4E, 0x6A46, 0x6B55, 0x6B54, 0x6B56,
+  0x6BA7, 0x6BAA, 0x6BAB, 0x6BC8, 0x6BC7, 0x6C04, 0x6C03, 0x6C06,
+  0x6FAD, 0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC, 0x6FCE, 0x6FC8, 0x6F5E,
+  0x6FC4, 0x6FBD, 0x6F9E, 0x6FCA, 0x6FA8, 0x7004, 0x6FA5, 0x6FAE,
+  0x6FBA, 0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8, 0x6FA2, 0x6FC9,
+  0x6FAB, 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, 0x71C2, 0x71BF,
+  0x71B8, 0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4, 0x71CA, 0x71C7,
+plane 79 
+at 0x00
+  0x71CF, 0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA, 0x71DB, 0x729D,
+  0x729E, 0x7369, 0x7366, 0x7367, 0x736C, 0x7365, 0x736B, 0x736A,
+  0x747F, 0x749A, 0x74A0, 0x7494, 0x7492, 0x7495, 0x74A1, 0x750B,
+  0x7580, 0x762F, 0x762D, 0x7631, 0x763D, 0x7633, 0x763C, 0x7635,
+  0x7632, 0x7630, 0x76BB, 0x76E6, 0x779A, 0x779D, 0x77A1, 0x779C,
+  0x779B, 0x77A2, 0x77A3, 0x7795, 0x7799, 0x8B43, 0x8B4C, 0x8D0B,
+  0x8E6B, 0x8E68, 0x8E70, 0x8E75, 0x8E77, 0x8EC3, 0x93E9, 0x93EA,
+  0x93CB, 0x93C5, 0x93C6, 0x93ED, 0x93D3, 0x93E5, 0x93DB, 0x93EB,
+  0x93E0, 0x93C1, 0x95DD, 0x97B2, 0x97B4, 0x97B1, 0x97B5, 0x97F2,
+  0x9856, 0x9944, 0x9A26, 0x9A1F, 0x9A18, 0x9A21, 0x7797, 0x78DD,
+  0x78E9, 0x78E5, 0x78EA, 0x78DE, 0x78E3, 0x78DB, 0x78E1, 0x78E2,
+  0x78ED, 0x78DF, 0x78E0, 0x79A4, 0x7A44, 0x7A48, 0x7A47, 0x7AB6,
+  0x7AB8, 0x7AB5, 0x7AB1, 0x7AB7, 0x7BDE, 0x7BE3, 0x7BE7, 0x7BDD,
+  0x7BD5, 0x7BE5, 0x7BDA, 0x7BE8, 0x7BF9, 0x7BD4, 0x7BEA, 0x7BE2,
+  0x7BDC, 0x7BEB, 0x7BD8, 0x7BDF, 0x7CD2, 0x7CD4, 0x7CD7, 0x7CD0,
+  0x7CD1, 0x7E12, 0x7E21, 0x7E17, 0x7E0C, 0x7E1F, 0x7E20, 0x7E13,
+  0x7E0E, 0x7E1C, 0x7E15, 0x7E1A, 0x7E22, 0x7E0B, 0x7E0F, 0x7E16,
+  0x7E0D, 0x7E14, 0x7E25, 0x7E24, 0x7F43, 0x7F7B, 0x7F7C, 0x7F7A,
+  0x7FB1, 0x7FEF, 0x802A, 0x8029, 0x806C, 0x81B1, 0x81A6, 0x81AE,
+  0x81B9, 0x81B5, 0x81AB, 0x81B0, 0x81AC, 0x81B4, 0x81B2, 0x81B7,
+  0x81A7, 0x81F2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545, 0x856B,
+  0x854D, 0x8553, 0x8561, 0x8558, 0x8540, 0x8546, 0x8564, 0x8541,
+  0x8562, 0x8544, 0x8551, 0x8547, 0x8563, 0x853E, 0x855B, 0x8571,
+  0x854E, 0x856E, 0x8575, 0x8555, 0x8567, 0x8560, 0x858C, 0x8566,
+  0x855D, 0x8554, 0x8565, 0x856C, 0x8663, 0x8665, 0x8664, 0x879B,
+  0x878F, 0x8797, 0x8793, 0x8792, 0x8788, 0x8781, 0x8796, 0x8798,
+  0x8779, 0x8787, 0x87A3, 0x8785, 0x8790, 0x8791, 0x879D, 0x8784,
+  0x8794, 0x879C, 0x879A, 0x8789, 0x891E, 0x8926, 0x8930, 0x892D,
+  0x892E, 0x8927, 0x8931, 0x8922, 0x8929, 0x8923, 0x892F, 0x892C,
+  0x891F, 0x89F1, 0x8AE0, 0x9A17, 0x9B09, 0x9BC5, 0x9BDF, 0x9BE3,
+  0x9BE9, 0x9BEE, 0x9D66, 0x9D7A, 0x9D6E, 0x9D91, 0x9D83, 0x9D76,
+  0x9D7E, 0x9D6D, 0x9E95, 0x9EE3, 0x9F03, 0x9F04, 0x9F17, 0x5136,
+plane 80 
+at 0x00
+  0x5336, 0x5B42, 0x5B44, 0x5B46, 0x5B7E, 0x5DCA, 0x5DC8, 0x5DCC,
+  0x5EF0, 0x6585, 0x66E5, 0x66E7, 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5,
+  0x8ADD, 0x8B14, 0x8AE4, 0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1,
+  0x8AE8, 0x8AFF, 0x8AEF, 0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5,
+  0x8CEE, 0x8CF1, 0x8CF0, 0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7,
+  0x8E33, 0x8E3E, 0x8E38, 0x8E40, 0x8E45, 0x8E36, 0x8E3C, 0x8E3D,
+  0x8E41, 0x8E30, 0x8E3F, 0x8EBD, 0x8F36, 0x8F2E, 0x8F35, 0x8F32,
+  0x8F39, 0x8F37, 0x8F34, 0x9076, 0x9079, 0x907B, 0x9086, 0x90FA,
+  0x9133, 0x9135, 0x9136, 0x9193, 0x9190, 0x9191, 0x918D, 0x918F,
+  0x9327, 0x931E, 0x9308, 0x931F, 0x9306, 0x930F, 0x937A, 0x9338,
+  0x933C, 0x931B, 0x9323, 0x9312, 0x9301, 0x9346, 0x932D, 0x930E,
+  0x930D, 0x92CB, 0x931D, 0x92FA, 0x9325, 0x9313, 0x92F9, 0x92F7,
+  0x9334, 0x9302, 0x9324, 0x92FF, 0x9329, 0x9339, 0x9335, 0x932A,
+  0x9314, 0x930C, 0x930B, 0x92FE, 0x9309, 0x9300, 0x92FB, 0x9316,
+  0x95BC, 0x95CD, 0x95BE, 0x95B9, 0x95BA, 0x95B6, 0x95BF, 0x95B5,
+  0x95BD, 0x96A9, 0x96D4, 0x970B, 0x9712, 0x9710, 0x9799, 0x9797,
+  0x9794, 0x97F0, 0x97F8, 0x9835, 0x982F, 0x9832, 0x9924, 0x991F,
+  0x9927, 0x9929, 0x999E, 0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0,
+  0x99E3, 0x99EA, 0x99E9, 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB,
+  0x9AF6, 0x9AFA, 0x9AF9, 0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87,
+  0x9B7C, 0x9B7E, 0x9B7B, 0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A,
+  0x9B95, 0x6AF4, 0x6AE9, 0x703D, 0x7036, 0x7216, 0x7212, 0x720F,
+  0x7217, 0x7211, 0x720B, 0x74CD, 0x74D0, 0x74CC, 0x74CE, 0x74D1,
+  0x7589, 0x7A6F, 0x7C4B, 0x7C44, 0x7C55, 0x7E7F, 0x8B71, 0x802F,
+  0x807A, 0x807B, 0x807C, 0x85FC, 0x8610, 0x8602, 0x85EE, 0x8603,
+  0x860D, 0x8613, 0x9B7D, 0x9B88, 0x9D25, 0x9D17, 0x9D20, 0x9D1E,
+  0x9D14, 0x9D29, 0x9D1D, 0x9D18, 0x9D22, 0x9D10, 0x9D19, 0x9D1F,
+  0x9E88, 0x9E86, 0x9E87, 0x9EAE, 0x9EAD, 0x9ED5, 0x9ED6, 0x9EFA,
+  0x9F12, 0x9F3D, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129,
+  0x52F4, 0x5693, 0x568C, 0x568D, 0x5686, 0x5684, 0x5683, 0x567E,
+  0x5682, 0x567F, 0x5681, 0x58D6, 0x58D4, 0x58CF, 0x58D2, 0x5B2D,
+  0x5B25, 0x5B32, 0x5B23, 0x5B2C, 0x5B27, 0x5B26, 0x5B2F, 0x5B2E,
+plane 81 
+at 0x00
+  0x5B7B, 0x5BF1, 0x5BF2, 0x5DB7, 0x5E6C, 0x5E6A, 0x5FBE, 0x5FBB,
+  0x61C3, 0x61B5, 0x61BC, 0x61E7, 0x61E0, 0x61E5, 0x61E4, 0x61E8,
+  0x61DE, 0x64EF, 0x64E9, 0x64E3, 0x64EB, 0x64E4, 0x64E8, 0x6581,
+  0x6580, 0x65B6, 0x65DA, 0x66D2, 0x6A8D, 0x6A96, 0x6A81, 0x6AA5,
+  0x6A89, 0x6A9F, 0x6A9B, 0x6AA1, 0x6A9E, 0x6A87, 0x6A93, 0x6A8E,
+  0x6A95, 0x6A83, 0x6AA8, 0x6AA4, 0x6A91, 0x6A7F, 0x6AA6, 0x6A9A,
+  0x6A85, 0x6A8C, 0x6A92, 0x6B5B, 0x6BAD, 0x6C09, 0x6FCC, 0x6FA9,
+  0x6FF4, 0x6FD4, 0x6FE3, 0x6FDC, 0x6FED, 0x6FE7, 0x6FE6, 0x6FDE,
+  0x6FF2, 0x6FDD, 0x6FE2, 0x6FE8, 0x71E1, 0x71F1, 0x71E8, 0x71F2,
+  0x71E4, 0x71F0, 0x71E2, 0x7373, 0x736E, 0x736F, 0x7497, 0x74B2,
+  0x74AB, 0x7490, 0x74AA, 0x74AD, 0x74B1, 0x74A5, 0x74AF, 0x7510,
+  0x7511, 0x7512, 0x750F, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
+  0x76A4, 0x76E9, 0x77B5, 0x77AB, 0x77B2, 0x77B7, 0x77B6, 0x8608,
+  0x860F, 0x8818, 0x8812, 0x8967, 0x8965, 0x89BB, 0x8B69, 0x8B62,
+  0x8B6E, 0x8B61, 0x8B64, 0x8B4D, 0x8C51, 0x8E83, 0x8EC6, 0x941F,
+  0x9404, 0x9417, 0x9408, 0x9405, 0x93F3, 0x941E, 0x9402, 0x941A,
+  0x941B, 0x9427, 0x941C, 0x96B5, 0x9733, 0x9734, 0x9731, 0x97B8,
+  0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3, 0x78FD, 0x7902, 0x78FB,
+  0x78FC, 0x78F2, 0x7905, 0x78F9, 0x78FE, 0x7904, 0x79AB, 0x79A8,
+  0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54, 0x7A5A, 0x7ABE, 0x7AC0,
+  0x7AC1, 0x7C05, 0x7C0F, 0x7BF2, 0x7C00, 0x7BFF, 0x7BFB, 0x7C0E,
+  0x7BF4, 0x7C0B, 0x7BF3, 0x7C02, 0x7C09, 0x7C03, 0x7C01, 0x7BF8,
+  0x7BFD, 0x7C06, 0x7BF0, 0x7BF1, 0x7C10, 0x7C0A, 0x7CE8, 0x7E2D,
+  0x7E3C, 0x7E42, 0x7E33, 0x9848, 0x7E38, 0x7E2A, 0x7E49, 0x7E40,
+  0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B, 0x7E36, 0x7E44, 0x7E3A,
+  0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, 0x7FF2, 0x802C, 0x81BB,
+  0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7, 0x81BC, 0x81E9, 0x825B,
+  0x825A, 0x825C, 0x8583, 0x8580, 0x858F, 0x85A7, 0x8595, 0x85A0,
+  0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A, 0x859E, 0x8577, 0x857C,
+  0x8589, 0x85A1, 0x857A, 0x8578, 0x8557, 0x858E, 0x8596, 0x8586,
+  0x858D, 0x8599, 0x859D, 0x8581, 0x85A2, 0x8582, 0x8588, 0x8585,
+  0x8579, 0x8576, 0x8598, 0x8590, 0x859F, 0x8668, 0x87BE, 0x87AA,
+plane 82 
+at 0x00
+  0x87AD, 0x87C5, 0x87B0, 0x87AC, 0x87B9, 0x87B5, 0x87BC, 0x87AE,
+  0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7, 0x87AF, 0x87C4, 0x87CA,
+  0x87B4, 0x87B6, 0x87BF, 0x87B8, 0x87BD, 0x87DE, 0x87B2, 0x8935,
+  0x8933, 0x893C, 0x893E, 0x8941, 0x8952, 0x8937, 0x8942, 0x89AD,
+  0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E, 0x97BA, 0x97FC, 0x98C3,
+  0x994D, 0x9A2F, 0x9AC9, 0x9AC8, 0x9AC4, 0x9B2A, 0x9B38, 0x9B50,
+  0x9C0A, 0x9BFB, 0x9C04, 0x9BFC, 0x9BFE, 0x9C02, 0x9BF6, 0x9C1B,
+  0x9BF9, 0x9C15, 0x9C10, 0x9BFF, 0x9C00, 0x9C0C, 0x9D95, 0x9DA5,
+  0x9E98, 0x9EC1, 0x9F5A, 0x5164, 0x56BB, 0x58E6, 0x8B18, 0x8B16,
+  0x8B11, 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, 0x8B12, 0x8B15, 0x8B07,
+  0x8B0D, 0x8B08, 0x8B06, 0x8B1C, 0x8B13, 0x8B1A, 0x8C4F, 0x8C70,
+  0x8C72, 0x8C71, 0x8C6F, 0x8C95, 0x8C94, 0x8CF9, 0x8D6F, 0x8E4E,
+  0x8E4D, 0x8E53, 0x8E50, 0x8E4C, 0x8E47, 0x8F43, 0x8F40, 0x9085,
+  0x907E, 0x9138, 0x919A, 0x91A2, 0x919B, 0x9199, 0x919F, 0x91A1,
+  0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF, 0x9364, 0x9356, 0x9347,
+  0x937C, 0x9358, 0x935C, 0x9376, 0x9349, 0x9350, 0x9351, 0x9360,
+  0x936D, 0x938F, 0x934C, 0x936A, 0x9379, 0x9357, 0x9355, 0x9352,
+  0x934F, 0x9371, 0x9377, 0x937B, 0x9361, 0x935E, 0x9363, 0x9367,
+  0x9380, 0x934E, 0x9359, 0x95C7, 0x95C0, 0x95C9, 0x95C3, 0x95C5,
+  0x95B7, 0x96AE, 0x96B0, 0x96AC, 0x9720, 0x971F, 0x9718, 0x971D,
+  0x9719, 0x979A, 0x97A1, 0x979C, 0x979E, 0x979D, 0x97D5, 0x97D4,
+  0x97F1, 0x9841, 0x9844, 0x984A, 0x9849, 0x9845, 0x9843, 0x9925,
+  0x992B, 0x992C, 0x992A, 0x9933, 0x9932, 0x992F, 0x992D, 0x9931,
+  0x9930, 0x9998, 0x99A3, 0x99A1, 0x9A02, 0x99FA, 0x99F4, 0x99F7,
+  0x99F9, 0x99F8, 0x99F6, 0x99FB, 0x99FD, 0x99FE, 0x99FC, 0x9A03,
+  0x9ABE, 0x9AFE, 0x9AFD, 0x9B01, 0x9AFC, 0x9B48, 0x9B9A, 0x9BA8,
+  0x9B9E, 0x9B9B, 0x9BA6, 0x9BA1, 0x9BA5, 0x9BA4, 0x9B86, 0x9BA2,
+  0x9BA0, 0x9BAF, 0x9D33, 0x9D41, 0x9D67, 0x9D36, 0x9D2E, 0x9D2F,
+  0x9D31, 0x9D38, 0x9D30, 0x5B49, 0x5BF7, 0x5DD0, 0x5FC2, 0x6511,
+  0x6AFF, 0x6AFE, 0x6AFD, 0x6B01, 0x704B, 0x704D, 0x7047, 0x74D3,
+  0x7668, 0x7667, 0x77D1, 0x7930, 0x7932, 0x792E, 0x9F9D, 0x7AC9,
+  0x7AC8, 0x7C56, 0x7C51, 0x7E85, 0x7E89, 0x7E8E, 0x7E84, 0x826A,
+plane 83 
+at 0x00
+  0x862B, 0x862F, 0x8628, 0x8616, 0x9D45, 0x9D42, 0x9D43, 0x9D3E,
+  0x9D37, 0x9D40, 0x9D3D, 0x7FF5, 0x9D2D, 0x9E8A, 0x9E89, 0x9E8D,
+  0x9EB0, 0x9EC8, 0x9EDA, 0x9EFB, 0x9EFF, 0x9F24, 0x9F23, 0x9F22,
+  0x9F54, 0x9FA0, 0x5131, 0x512D, 0x512E, 0x5698, 0x569C, 0x5697,
+  0x569A, 0x569D, 0x5699, 0x5970, 0x5B3C, 0x5C69, 0x5C6A, 0x5DC0,
+  0x5E6D, 0x5E6E, 0x61D8, 0x61DF, 0x61ED, 0x61EE, 0x61F1, 0x61EA,
+  0x61F0, 0x61EB, 0x61D6, 0x61E9, 0x64FF, 0x6504, 0x64FD, 0x64F8,
+  0x6501, 0x6503, 0x64FC, 0x6594, 0x65DB, 0x66DA, 0x66DB, 0x66D8,
+  0x6AC5, 0x6AB9, 0x6ABD, 0x6AE1, 0x6AC6, 0x6ABA, 0x6AB6, 0x6AB7,
+  0x6AC7, 0x6AB4, 0x6AAD, 0x6B5E, 0x6BC9, 0x6C0B, 0x7007, 0x700C,
+  0x700D, 0x7001, 0x7005, 0x7014, 0x700E, 0x6FFF, 0x7000, 0x6FFB,
+  0x7026, 0x6FFC, 0x6FF7, 0x700A, 0x7201, 0x71FF, 0x71F9, 0x7203,
+  0x71FD, 0x7376, 0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE, 0x74B6,
+  0x74BB, 0x74C2, 0x7514, 0x7513, 0x765C, 0x7664, 0x7659, 0x7650,
+  0x7653, 0x7657, 0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2, 0x77BA,
+  0x78FF, 0x790C, 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911,
+  0x79AD, 0x79AC, 0x7A5F, 0x7C1C, 0x7C29, 0x7C19, 0x7C20, 0x7C1F,
+  0x7C2D, 0x7C1D, 0x7C26, 0x7C28, 0x7C22, 0x7C25, 0x7C30, 0x7E5C,
+  0x7E50, 0x7E56, 0x7E63, 0x7E58, 0x7E62, 0x7E5F, 0x7E51, 0x7E60,
+  0x7E57, 0x7E53, 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, 0x8075, 0x81D1,
+  0x81D2, 0x8615, 0x861D, 0x881A, 0x89BC, 0x8B75, 0x8B7C, 0x8D11,
+  0x8D12, 0x8F5C, 0x91BB, 0x93F4, 0x942D, 0x96E4, 0x9737, 0x9736,
+  0x9767, 0x97BE, 0x97BD, 0x97E2, 0x9868, 0x9866, 0x98C8, 0x98CA,
+  0x98C7, 0x98DC, 0x994F, 0x99A9, 0x9A3C, 0x9A3B, 0x9ACE, 0x9B14,
+  0x9B53, 0x9C2E, 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0,
+  0x85C3, 0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF,
+  0x85CB, 0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, 0x8624,
+  0x85B8, 0x85B7, 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, 0x87DB,
+  0x87EB, 0x87EA, 0x87E5, 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC,
+  0x87D3, 0x87ED, 0x87D8, 0x87E3, 0x87A4, 0x87D7, 0x87D9, 0x8801,
+  0x87F4, 0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F, 0x894C, 0x8946,
+  0x8950, 0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, 0x8B30,
+plane 84 
+at 0x00
+  0x8B35, 0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37,
+  0x8B26, 0x8B36, 0x8B2E, 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42,
+  0x8C75, 0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04, 0x8D02, 0x8D00,
+  0x8E5C, 0x8E62, 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67,
+  0x8E5B, 0x8E5A, 0x8E61, 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47,
+  0x8F48, 0x8F4B, 0x9128, 0x913A, 0x913B, 0x913E, 0x91A8, 0x91A5,
+  0x91A7, 0x91AF, 0x91AA, 0x93B5, 0x938C, 0x9392, 0x93B7, 0x939B,
+  0x939D, 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E, 0x93A6, 0x9395,
+  0x9388, 0x9399, 0x939F, 0x938D, 0x93B1, 0x9391, 0x93B2, 0x93A4,
+  0x93A8, 0x93B4, 0x93A3, 0x93A5, 0x95D2, 0x95D3, 0x95D1, 0x96B3,
+  0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722,
+  0x9725, 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA, 0x9C1F,
+  0x9DB0, 0x9DBD, 0x9DAE, 0x9DC4, 0x9E7B, 0x9E9E, 0x9F05, 0x9F69,
+  0x9FA1, 0x56C7, 0x571D, 0x5B4A, 0x5DD3, 0x5F72, 0x6202, 0x6235,
+  0x6527, 0x651E, 0x651F, 0x6B07, 0x6B06, 0x7054, 0x721C, 0x7220,
+  0x7AF8, 0x7C5D, 0x7C58, 0x7E92, 0x7F4E, 0x8827, 0x8B81, 0x8B83,
+  0x97A2, 0x97A5, 0x97D7, 0x97D9, 0x97D6, 0x97D8, 0x97FA, 0x9850,
+  0x9851, 0x9852, 0x98B8, 0x9941, 0x993C, 0x993A, 0x9A0F, 0x9A0B,
+  0x9A09, 0x9A0D, 0x9A04, 0x9A11, 0x9A0A, 0x9A05, 0x9A07, 0x9A06,
+  0x9AC0, 0x9ADC, 0x9B08, 0x9B04, 0x9B05, 0x9B29, 0x9B35, 0x9B4A,
+  0x9B4C, 0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF, 0x9BC1, 0x9BB5,
+  0x9BB8, 0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C, 0x9D53,
+  0x9D4F, 0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C, 0x9D57,
+  0x9D52, 0x9D54, 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C, 0x9EDF,
+  0x9F01, 0x9F00, 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29, 0x9F28,
+  0x9F4C, 0x9F55, 0x5134, 0x5135, 0x5296, 0x52F7, 0x53B4, 0x56AB,
+  0x56AD, 0x56A6, 0x56A7, 0x56AA, 0x56AC, 0x58DA, 0x58DD, 0x58DB,
+  0x5912, 0x5B3D, 0x5B3E, 0x5B3F, 0x5DC3, 0x5E70, 0x5FBF, 0x61FB,
+  0x6507, 0x6510, 0x650D, 0x6509, 0x650C, 0x650E, 0x6584, 0x65DE,
+  0x65DD, 0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1, 0x6AD9, 0x6ACB,
+  0x6ADF, 0x6ADC, 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD, 0x6ADE, 0x6B60,
+  0x6BB0, 0x6C0C, 0x7019, 0x7027, 0x7020, 0x7016, 0x702B, 0x7021,
+plane 85 
+at 0x00
+  0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701C, 0x702A, 0x720C,
+  0x720A, 0x7207, 0x7202, 0x7205, 0x72A5, 0x72A6, 0x72A4, 0x72A3,
+  0x72A1, 0x74CB, 0x74C5, 0x74B7, 0x74C3, 0x7516, 0x7660, 0x77C9,
+  0x77CA, 0x77C4, 0x77F1, 0x791D, 0x791B, 0x8C44, 0x9442, 0x944D,
+  0x9454, 0x944E, 0x9443, 0x973C, 0x9740, 0x97C0, 0x995A, 0x9A51,
+  0x9ADD, 0x9C38, 0x9C45, 0x9C3A, 0x9C35, 0x9EF1, 0x9F93, 0x529A,
+  0x8641, 0x5DD7, 0x6528, 0x7053, 0x7059, 0x7221, 0x766F, 0x7937,
+  0x79B5, 0x7C62, 0x7C5E, 0x7CF5, 0x863D, 0x882D, 0x7921, 0x791C,
+  0x7917, 0x791E, 0x79B0, 0x7A67, 0x7A68, 0x7C33, 0x7C3C, 0x7C39,
+  0x7C2C, 0x7C3B, 0x7CEC, 0x7CEA, 0x7E76, 0x7E75, 0x7E78, 0x7E70,
+  0x7E77, 0x7E6F, 0x7E7A, 0x7E72, 0x7E74, 0x7E68, 0x7F4B, 0x7F4A,
+  0x7F83, 0x7F86, 0x7FB7, 0x7FFD, 0x7FFE, 0x8078, 0x81D7, 0x81D5,
+  0x8264, 0x8261, 0x8263, 0x85EB, 0x85F1, 0x85ED, 0x85D9, 0x85E1,
+  0x85E8, 0x85DA, 0x85D7, 0x85EC, 0x85F2, 0x85F8, 0x85D8, 0x85DF,
+  0x85E3, 0x85DC, 0x85D1, 0x85F0, 0x85E6, 0x85EF, 0x85DE, 0x85E2,
+  0x8800, 0x87FA, 0x8803, 0x87F6, 0x87F7, 0x8809, 0x880C, 0x880B,
+  0x8806, 0x87FC, 0x8808, 0x87FF, 0x880A, 0x8802, 0x8962, 0x895A,
+  0x895B, 0x8957, 0x8961, 0x895C, 0x8958, 0x895D, 0x8959, 0x8988,
+  0x89B7, 0x89B6, 0x89F6, 0x8B50, 0x8B48, 0x8B4A, 0x8B40, 0x8B53,
+  0x8B56, 0x8B54, 0x8B4B, 0x8B55, 0x8B51, 0x8B42, 0x8B52, 0x8B57,
+  0x8C43, 0x8C77, 0x8C76, 0x8C9A, 0x8D06, 0x8D07, 0x8D09, 0x8DAC,
+  0x8DAA, 0x8DAD, 0x8DAB, 0x8E6D, 0x8E78, 0x8E73, 0x8E6A, 0x8E6F,
+  0x8E7B, 0x8EC2, 0x8F52, 0x8F51, 0x8F4F, 0x8F50, 0x8F53, 0x8FB4,
+  0x9140, 0x913F, 0x91B0, 0x91AD, 0x93DE, 0x93C7, 0x93CF, 0x93C2,
+  0x93DA, 0x93D0, 0x93F9, 0x93EC, 0x93CC, 0x93D9, 0x93A9, 0x93E6,
+  0x93CA, 0x93D4, 0x93EE, 0x93E3, 0x93D5, 0x93C4, 0x93CE, 0x93C0,
+  0x93D2, 0x93E7, 0x957D, 0x95DA, 0x95DB, 0x96E1, 0x9729, 0x972B,
+  0x972C, 0x9728, 0x9726, 0x8989, 0x8B8D, 0x8B87, 0x8B90, 0x8D1A,
+  0x8E99, 0x945F, 0x9456, 0x9461, 0x945B, 0x945A, 0x945C, 0x9465,
+  0x9741, 0x986E, 0x986C, 0x986D, 0x99AA, 0x9A5C, 0x9A58, 0x9ADE,
+  0x9C4F, 0x9C51, 0x9C53, 0x9DFC, 0x9F39, 0x513E, 0x56D2, 0x5B4F,
+  0x6B14, 0x7A72, 0x7A73, 0x8B91, 0x97B3, 0x97B7, 0x97B6, 0x97DD,
+plane 86 
+at 0x00
+  0x97DE, 0x97DF, 0x985C, 0x9859, 0x985D, 0x9857, 0x98BF, 0x98BD,
+  0x98BB, 0x98BE, 0x9948, 0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A,
+  0x9A15, 0x9A25, 0x9A1D, 0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27,
+  0x9A23, 0x9A1E, 0x9A1C, 0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E,
+  0x9B0C, 0x9B37, 0x9BEA, 0x9BEB, 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6,
+  0x9BE2, 0x9BF0, 0x9BD4, 0x9BD7, 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5,
+  0x9BD5, 0x9BE1, 0x9BDA, 0x9D77, 0x9D81, 0x9D8A, 0x9D84, 0x9D88,
+  0x9D71, 0x9D80, 0x9D78, 0x9D86, 0x9D8B, 0x9D8C, 0x9D7D, 0x9D6B,
+  0x9D74, 0x9D75, 0x9D70, 0x9D69, 0x9D85, 0x9D73, 0x9D7B, 0x9D82,
+  0x9D6F, 0x9D79, 0x9D7F, 0x9D87, 0x9D68, 0x9E94, 0x9E91, 0x9EC0,
+  0x9EFC, 0x9F2D, 0x9F40, 0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58,
+  0x5337, 0x56B2, 0x56B5, 0x56B3, 0x58E3, 0x5B45, 0x5DC6, 0x5DC7,
+  0x5EEE, 0x5EEF, 0x5FC0, 0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515,
+  0x6513, 0x65DF, 0x66E8, 0x66E3, 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA,
+  0x6AE8, 0x6AF9, 0x6AF1, 0x6AEE, 0x6AEF, 0x703C, 0x7035, 0x702F,
+  0x7037, 0x7034, 0x7031, 0x7042, 0x7038, 0x703F, 0x703A, 0x7039,
+  0x7040, 0x703B, 0x7033, 0x7041, 0x7213, 0x7214, 0x72A8, 0x737D,
+  0x737C, 0x74BA, 0x76AB, 0x76AA, 0x76BE, 0x76ED, 0x77CC, 0x77CE,
+  0x77CF, 0x77CD, 0x77F2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924,
+  0x7929, 0x91BF, 0x946C, 0x96E6, 0x9745, 0x97C8, 0x97E4, 0x995D,
+  0x9B21, 0x9B2C, 0x9B57, 0x9C5D, 0x9C61, 0x9C65, 0x9E08, 0x9F45,
+  0x6205, 0x66EF, 0x6B1B, 0x6B1D, 0x7225, 0x7224, 0x7C6D, 0x8642,
+  0x8649, 0x8978, 0x898A, 0x8B97, 0x8C9B, 0x8D1C, 0x8EA2, 0x9C6C,
+  0x9C6F, 0x9E0E, 0x79B2, 0x7A6E, 0x7A6C, 0x7A6D, 0x7AF7, 0x7C49,
+  0x7C48, 0x7C4A, 0x7C47, 0x7C45, 0x7CEE, 0x7E7B, 0x7E7E, 0x7E81,
+  0x7E80, 0x7FBA, 0x7FFF, 0x8079, 0x81DB, 0x81D9, 0x820B, 0x8268,
+  0x8269, 0x8622, 0x85FF, 0x8601, 0x85FE, 0x861B, 0x8600, 0x85F6,
+  0x8604, 0x8609, 0x8605, 0x860C, 0x85FD, 0x8819, 0x8810, 0x8811,
+  0x8817, 0x8813, 0x8816, 0x8963, 0x8966, 0x89B9, 0x89F7, 0x8B60,
+  0x8B6A, 0x8B5D, 0x8B68, 0x8B63, 0x8B65, 0x8B67, 0x8B6D, 0x8DAE,
+  0x8E86, 0x8E88, 0x8E84, 0x8F59, 0x8F56, 0x8F57, 0x8F55, 0x8F58,
+  0x8F5A, 0x908D, 0x9143, 0x9141, 0x91B7, 0x91B5, 0x91B2, 0x91B3,
+plane 87 
+at 0x00
+  0x940B, 0x9413, 0x93FB, 0x9420, 0x940F, 0x9414, 0x93FE, 0x9415,
+  0x9410, 0x9428, 0x9419, 0x940D, 0x93F5, 0x9400, 0x93F7, 0x9407,
+  0x940E, 0x9416, 0x9412, 0x93FA, 0x9409, 0x93F8, 0x940A, 0x93FF,
+  0x93FC, 0x940C, 0x93F6, 0x9411, 0x9406, 0x95DE, 0x95E0, 0x95DF,
+  0x972E, 0x972F, 0x97B9, 0x97BB, 0x97FD, 0x97FE, 0x9860, 0x9862,
+  0x9863, 0x985F, 0x98C1, 0x98C2, 0x9950, 0x994E, 0x9959, 0x994C,
+  0x994B, 0x9953, 0x9A32, 0x9A34, 0x9A31, 0x9A2C, 0x9A2A, 0x9A36,
+  0x9A29, 0x9A2E, 0x9A38, 0x9A2D, 0x9AC7, 0x9ACA, 0x9AC6, 0x9B10,
+  0x9B12, 0x9B11, 0x9C0B, 0x9C08, 0x9BF7, 0x9C05, 0x9C12, 0x9BF8,
+  0x9C40, 0x9C07, 0x9C0E, 0x9C06, 0x9C17, 0x9C14, 0x9C09, 0x9D9F,
+  0x9D99, 0x9DA4, 0x9D9D, 0x9D92, 0x9D98, 0x9D90, 0x9D9B, 0x9F08,
+  0x9F1D, 0x9FA3, 0x5F60, 0x6B1C, 0x7CF3, 0x8B9B, 0x8EA7, 0x91C4,
+  0x947A, 0x9A61, 0x9A63, 0x9AD7, 0x9C76, 0x9FA5, 0x7067, 0x72AB,
+  0x864A, 0x897D, 0x8B9D, 0x8C53, 0x8F65, 0x947B, 0x98CD, 0x98DD,
+  0x9B30, 0x9E16, 0x96E7, 0x9E18, 0x9EA2, 0x9F7C, 0x7E9E, 0x9484,
+  0x9DA0, 0x9D94, 0x9D9C, 0x9DAA, 0x9D97, 0x9DA1, 0x9D9A, 0x9DA2,
+  0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, 0x9DA9, 0x9D96, 0x9DA6, 0x9DA7,
+  0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4, 0x9EE7, 0x9EE6, 0x9F30,
+  0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D, 0x9F59, 0x9F91, 0x513A,
+  0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD, 0x56BE, 0x5B48, 0x5B47,
+  0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, 0x6B02, 0x6AFC, 0x6B03,
+  0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, 0x7048, 0x7049, 0x7045,
+  0x7046, 0x721D, 0x721A, 0x7219, 0x737E, 0x7517, 0x766A, 0x77D0,
+  0x792D, 0x7931, 0x792F, 0x7C54, 0x7C53, 0x7CF2, 0x7E8A, 0x7E87,
+  0x7E88, 0x7E8B, 0x7E86, 0x7E8D, 0x7F4D, 0x7FBB, 0x8030, 0x81DD,
+  0x8618, 0x862A, 0x8626, 0x861F, 0x8623, 0x861C, 0x8619, 0x8627,
+  0x862E, 0x8621, 0x8620, 0x8629, 0x861E, 0x8625, 0x8829, 0x881D,
+  0x881B, 0x8820, 0x8824, 0x881C, 0x882B, 0x884A, 0x896D, 0x8969,
+  0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, 0x8B45, 0x8B7A, 0x8B7B,
+  0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, 0x8F5E, 0x8F5B, 0x8F5D,
+  0x9146, 0x9144, 0x9145, 0x91B9, 0x943F, 0x943B, 0x9436, 0x9429,
+  0x943D, 0x943C, 0x9430, 0x9439, 0x942A, 0x9437, 0x942C, 0x9440,
+plane 88 
+at 0x00
+  0x9431, 0x95E5, 0x95E4, 0x95E3, 0x9735, 0x973A, 0x97BF, 0x97E1,
+  0x9864, 0x98C9, 0x98C6, 0x98C0, 0x9958, 0x9956, 0x9A39, 0x9A3D,
+  0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A, 0x9E1C, 0x7C71, 0x97CA,
+  0x9EA3, 0x9C7B, 0x9F97, 0x9750, 0x4E40, 0x4E41, 0x4E5A, 0x4E02,
+  0x4E29, 0x5202, 0x5DDC, 0x5342, 0x536A, 0x5B52, 0x5FC4, 0x624C,
+  0x72AD, 0x4E12, 0x4E2F, 0x4E96, 0x4ED0, 0x5142, 0x5183, 0x5383,
+  0x53B8, 0x5928, 0x5C23, 0x5E01, 0x5F00, 0x706C, 0x9A3F, 0x9ACD,
+  0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, 0x9B52, 0x9C2B, 0x9C1D,
+  0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29, 0x9C24, 0x9C21, 0x9DB7,
+  0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA, 0x9DCF, 0x9DBE, 0x9DC5,
+  0x9DC3, 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9, 0x9DBA, 0x9DAC, 0x9DC8,
+  0x9DB1, 0x9DAD, 0x9DCC, 0x9DB3, 0x9DCD, 0x9DB2, 0x9E7A, 0x9E9C,
+  0x9EEB, 0x9EEE, 0x9EED, 0x9F1B, 0x9F18, 0x9F1A, 0x9F31, 0x9F4E,
+  0x9F65, 0x9F64, 0x9F92, 0x4EB9, 0x56C6, 0x56C5, 0x56CB, 0x5971,
+  0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2, 0x6521, 0x6520, 0x6526,
+  0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, 0x7055, 0x7056, 0x7057,
+  0x7052, 0x721E, 0x721F, 0x72A9, 0x737F, 0x74D8, 0x74D5, 0x74D9,
+  0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4, 0x7A70, 0x7A71, 0x7C57,
+  0x7C5C, 0x7C59, 0x7C5B, 0x7C5A, 0x7CF4, 0x7CF1, 0x7E91, 0x7F4F,
+  0x7F87, 0x81DE, 0x826B, 0x8634, 0x8635, 0x8633, 0x862C, 0x8632,
+  0x8636, 0x882C, 0x8828, 0x8826, 0x882A, 0x8825, 0x8971, 0x89BF,
+  0x89BE, 0x89FB, 0x8B7E, 0x8B84, 0x8B82, 0x8B86, 0x8B85, 0x8B7F,
+  0x8D15, 0x8E95, 0x8E94, 0x8E9A, 0x8E92, 0x8E90, 0x8E96, 0x8E97,
+  0x8F60, 0x8F62, 0x9147, 0x944C, 0x9450, 0x944A, 0x944B, 0x944F,
+  0x9447, 0x9445, 0x9448, 0x9449, 0x9446, 0x973F, 0x97E3, 0x986A,
+  0x9869, 0x98CB, 0x9954, 0x995B, 0x9A4E, 0x9A53, 0x9A54, 0x9A4C,
+  0x9A4F, 0x9A48, 0x9A4A, 0x722B, 0x5188, 0x8279, 0x8FB6, 0x4E17,
+  0x4EE2, 0x4EDB, 0x51AD, 0x51F7, 0x531B, 0x5388, 0x5387, 0x53CF,
+  0x53FD, 0x53E7, 0x56DC, 0x56D9, 0x5725, 0x5727, 0x5933, 0x5C13,
+  0x5C75, 0x66F1, 0x7F52, 0x4E51, 0x4E6A, 0x4F0C, 0x4EFE, 0x4F1B,
+  0x5173, 0x518E, 0x52A5, 0x52A7, 0x9A49, 0x9A52, 0x9A50, 0x9AD0,
+  0x9B19, 0x9B2B, 0x9B3B, 0x9B56, 0x9B55, 0x9C46, 0x9C48, 0x9C3F,
+plane 89 
+at 0x00
+  0x9C44, 0x9C39, 0x9C33, 0x9C41, 0x9C3C, 0x9C37, 0x9C34, 0x9C32,
+  0x9C3D, 0x9C36, 0x9DDB, 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, 0x9DD0,
+  0x9DDC, 0x9DD1, 0x9DDF, 0x9DE9, 0x9DD9, 0x9DD8, 0x9DD6, 0x9DF5,
+  0x9DD5, 0x9DDD, 0x9EB6, 0x9EF0, 0x9F35, 0x9F33, 0x9F32, 0x9F42,
+  0x9F6B, 0x9F95, 0x9FA2, 0x513D, 0x5299, 0x58E8, 0x58E7, 0x5972,
+  0x5B4D, 0x5DD8, 0x882F, 0x5F4F, 0x6201, 0x6203, 0x6204, 0x6529,
+  0x6525, 0x6596, 0x66EB, 0x6B11, 0x6B12, 0x6B0F, 0x6BCA, 0x705B,
+  0x705A, 0x7222, 0x7382, 0x7381, 0x7383, 0x7670, 0x77D4, 0x7C67,
+  0x7C66, 0x7E95, 0x826C, 0x863A, 0x8640, 0x8639, 0x863C, 0x8631,
+  0x863B, 0x863E, 0x8830, 0x8832, 0x882E, 0x8833, 0x8976, 0x8974,
+  0x8973, 0x89FE, 0x8B8C, 0x8B8E, 0x8B8B, 0x8B88, 0x8C45, 0x8D19,
+  0x8E98, 0x8F64, 0x8F63, 0x91BC, 0x9462, 0x9455, 0x945D, 0x9457,
+  0x945E, 0x97C4, 0x97C5, 0x9800, 0x9A56, 0x9A59, 0x9B1E, 0x9B1F,
+  0x9B20, 0x9C52, 0x9C58, 0x9C50, 0x9C4A, 0x9C4D, 0x9C4B, 0x9C55,
+  0x9C59, 0x9C4C, 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, 0x9DE3, 0x9DEB,
+  0x9DF8, 0x9DE4, 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2, 0x9DF0,
+  0x9DE2, 0x9DEC, 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, 0x9ED0,
+  0x9EF2, 0x9EF3, 0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36, 0x9F43,
+  0x9F4F, 0x52A4, 0x53BD, 0x5402, 0x572B, 0x591B, 0x5935, 0x5C17,
+  0x5C70, 0x5C7D, 0x5DE9, 0x5F19, 0x5F1C, 0x5F75, 0x5FC8, 0x6C12,
+  0x72B3, 0x7390, 0x7536, 0x8281, 0x8FB8, 0x4E23, 0x4F2E, 0x514F,
+  0x51BA, 0x5222, 0x52AF, 0x52B0, 0x52B1, 0x5364, 0x53D3, 0x593F,
+  0x598B, 0x5991, 0x9F71, 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, 0x56CD,
+  0x5B4E, 0x5C6D, 0x652D, 0x66ED, 0x66EE, 0x6B13, 0x705F, 0x7061,
+  0x705D, 0x7060, 0x7223, 0x74DB, 0x74E5, 0x77D5, 0x7938, 0x79B7,
+  0x79B6, 0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643, 0x8838, 0x8837,
+  0x8835, 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, 0x8E9D,
+  0x91BE, 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746,
+  0x9743, 0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63,
+  0x9C67, 0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07,
+  0x9E03, 0x9E06, 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD,
+  0x9E04, 0x9EA0, 0x9F1E, 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4,
+plane 90 
+at 0x00
+  0x652E, 0x65B8, 0x6B18, 0x6B19, 0x6B17, 0x6B1A, 0x7062, 0x7226,
+  0x72AA, 0x77D8, 0x77D9, 0x7939, 0x7C69, 0x7C6B, 0x7CF6, 0x7E9A,
+  0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, 0x8647, 0x8648,
+  0x8979, 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, 0x8EA5,
+  0x8EA4, 0x8EA3, 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749,
+  0x9872, 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10,
+  0x9E0F, 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78,
+  0x9F7B, 0x9F7A, 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2,
+  0x8EA6, 0x91C3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9A60, 0x9C74,
+  0x9C73, 0x9C71, 0x9C75, 0x9E14, 0x9E13, 0x9EF6, 0x9F0A, 0x5995,
+  0x5B8A, 0x5C87, 0x5E0D, 0x5E8E, 0x5F7A, 0x6290, 0x629A, 0x653C,
+  0x653A, 0x6598, 0x6765, 0x79C2, 0x809E, 0x81EB, 0x8289, 0x8296,
+  0x8287, 0x8FC0, 0x8FC3, 0x9578, 0x9625, 0x4E75, 0x4E74, 0x4F99,
+  0x4F71, 0x5153, 0x51BF, 0x51C0, 0x51EE, 0x523D, 0x52BD, 0x530C,
+  0x9FA4, 0x7068, 0x7065, 0x7CF7, 0x866A, 0x883E, 0x883D, 0x883F,
+  0x8B9E, 0x8C9C, 0x8EA9, 0x8EC9, 0x974B, 0x9873, 0x9874, 0x98CC,
+  0x9961, 0x99AB, 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15, 0x9E17,
+  0x9F48, 0x6207, 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482, 0x9480,
+  0x9481, 0x9A69, 0x9A68, 0x9B2E, 0x9E19, 0x7229, 0x864B, 0x8B9F,
+  0x9483, 0x9C79, 0x9EB7, 0x7675, 0x9A6B, 0x9C7A, 0x9E1D, 0x7069,
+  0x706A, 0x9EA4, 0x9F7E, 0x9F49, 0x9F98, 0x7881, 0x92B9, 0x88CF,
+  0x58BB, 0x6052, 0x7CA7, 0x5AFA, 0x2554, 0x2566, 0x2557, 0x2560,
+  0x256C, 0x2563, 0x255A, 0x2569, 0x255D, 0x2552, 0x2564, 0x2555,
+  0x255E, 0x256A, 0x2561, 0x2558, 0x2567, 0x255B, 0x2553, 0x2565,
+  0x2556, 0x255F, 0x256B, 0x2562, 0x2559, 0x2568, 0x255C, 0x2551,
+  0x2550, 0x2554, 0x2557, 0x255A, 0x255D, 0x2588,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 91 
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0, 0x7F37, 0x53C0, 0x546E,
+  0x5483, 0x545E, 0x545D, 0x577E, 0x5779, 0x577A, 0x576C, 0x5787,
+  0x591D, 0x5946, 0x5943, 0x5B61, 0x5B66, 0x5B90, 0x5C29, 0x5CB2,
+  0x5CC0, 0x601F, 0x5FE2, 0x6616, 0x65F9, 0x6788, 0x679B, 0x676E,
+  0x679E, 0x6B24, 0x6B7D, 0x6CE6, 0x6CCB, 0x6CB5,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0, 0x7097, 0x709B, 0x726B, 0x72D5, 0x7543,
+  0x759C, 0x77E4, 0x7ACE, 0x8013, 0x80B7, 0x80B9, 0x81E4, 0x81FD,
+  0x820F, 0x82BF, 0x82CA, 0x82C1, 0x8FD0, 0x90AE, 0x9638, 0x4FBC,
+  0x4FE9, 0x4FBD, 0x4FE2, 0x5158, 0x52C6, 0x52C8, 0x5328, 0x5329,
+  0x57B4, 0x57A9, 0x5B68, 0x5F2B,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 92 
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0, 0x5F8D, 0x6018, 0x6057, 0x6048, 0x6038, 0x6071, 0x6312,
+  0x630A, 0x6323, 0x662A, 0x67E0, 0x67BE, 0x6B29, 0x6D43, 0x70A6,
+  0x70C0, 0x722F, 0x7271, 0x74EA, 0x7520, 0x75A9, 0x7685, 0x7706,
+  0x76F6, 0x7700, 0x7702, 0x8009, 0x82DA, 0x830A, 0x9655, 0x9652,
+  0x4E35, 0x5034,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 93 
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0, 0x5001,
+  0x500A, 0x5258, 0x532B, 0x54EC, 0x5515, 0x54FE, 0x54E3, 0x5516,
+  0x57D3, 0x5959, 0x5A27, 0x5A28, 0x5A10, 0x5A0E, 0x5BAF, 0x5BBA,
+  0x5BB1, 0x5CFC, 0x5CF2, 0x5CFE, 0x5DF8, 0x5F2C, 0x6082, 0x6091,
+  0x608F, 0x6547, 0x654C, 0x658A, 0x67E1, 0x684A, 0x683F, 0x67BD,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 94 
+at 0x00
+       0,      0,      0,      0,      0, 0x70C9, 0x73BA, 0x75C6,
+  0x75B7, 0x768C, 0x768D, 0x7717, 0x771C, 0x7714, 0x7B0C, 0x7D23,
+  0x7F98, 0x7F90, 0x803A, 0x8226, 0x832E, 0x8355, 0x831A, 0x833D,
+  0x8330, 0x8651, 0x8688, 0x898E, 0x898D, 0x8A09, 0x8A14, 0x9007,
+  0x9579, 0x9584, 0x9657, 0x96BA, 0x5067, 0x5318,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/CP1250.map
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/CP1250.map	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/CP1250.map	(revision 2000)
@@ -0,0 +1,254 @@
+// CP1250 code encoding table with glyph renaming
+// Petr Titera  P.Titera@sh.cvut.cz
+
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!13 U+0013 .notdef
+!14 U+0014 .notdef
+!15 U+0015 .notdef
+!16 U+0016 .notdef
+!17 U+0017 .notdef
+!18 U+0018 .notdef
+!19 U+0019 .notdef
+!1A U+001A .notdef
+!1B U+001B .notdef
+!1C U+001C .notdef
+!1D U+001D .notdef
+!1E U+001E .notdef
+!1F U+001F .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quote
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D minus
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+20AC .notdef
+!82 U+201A quotesinglbase
+!84 U+201E quotedblbase
+!85 U+2026 ellipsis
+!86 U+2020 dagger
+!87 U+2021 daggerdbl
+!89 U+2030 perthousand
+!8A U+0160 Scaron
+!8B U+2039 guilsinglleft
+!8C U+015A Sacute
+!8D U+0164 Tcaron
+!8E U+017D Zcaron
+!8F U+0179 Zacute
+!91 U+2018 quotesinglleft
+!92 U+2019 quotesinglright
+!93 U+201C quotedblleft
+!94 U+201D quotedblright
+!95 U+2022 bullet
+!96 U+2013 endash
+!97 U+2014 emdash
+!99 U+2122 trademark
+!9A U+0161 scaron
+!9B U+203A guilsinglright
+!9C U+015B sacute
+!9D U+0165 tcaron
+!9E U+017E zcaron
+!9F U+017A zacute
+!A0 U+00A0 nbspace
+!A1 U+02C7 caron
+!A2 U+02D8 breve
+!A3 U+0141 Lslash
+!A4 U+00A4 currency
+!A5 U+0104 Aogonek
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+00A8 dieresis
+!A9 U+00A9 copyright
+!AA U+015E Scedilla
+!AB U+00AB guillemotleft
+!AC U+00AC notsign
+!AD U+00AD hyphen
+!AE U+00AE registered
+!AF U+017B Zdotaccent
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+02DB ogonek
+!B3 U+0142 lslash
+!B4 U+00B4 acute
+!B5 U+00B5 mu
+!B6 U+00B6 paragraph
+!B7 U+2219 periodcentered
+!B8 U+00B8 cedilla
+!B9 U+0105 aogonek
+!BA U+015F scedilla
+!BB U+00BB guillemotright
+!BC U+013D Lcaron
+!BD U+02DD hungarumlaut
+!BE U+013E lcaron
+!BF U+017C zdotaccent
+!C0 U+0154 Racute
+!C1 U+00C1 Aacute
+!C2 U+00C2 Acircumflex
+!C3 U+0102 Abreve
+!C4 U+00C4 Adieresis
+!C5 U+0139 Lacute
+!C6 U+0106 Cacute
+!C7 U+00C7 Ccedilla
+!C8 U+010C Ccaron
+!C9 U+00C9 Eacute
+!CA U+0118 Eogonek
+!CB U+00CB Edieresis
+!CC U+011A Ecaron
+!CD U+00CD Iacute
+!CE U+00CE Icircumflex
+!CF U+010E Dcaron
+!D0 U+00D0 Eth
+!D1 U+0143 Nacute
+!D2 U+0147 Ncaron
+!D3 U+00D3 Oacute
+!D4 U+00D4 Ocircumflex
+!D5 U+0150 Ohungarumlaut
+!D6 U+00D6 Odieresis
+!D7 U+00D7 multiply
+!D8 U+0158 Rcaron
+!D9 U+016E Uring
+!DA U+00DA Uacute
+!DB U+0170 Uhungarumlaut
+!DC U+00DC Udieresis
+!DD U+00DD Yacute
+!DE U+0162 Tcedilla
+!DF U+00DF germandbls
+!E0 U+0155 racute
+!E1 U+00E1 aacute
+!E2 U+00E2 acircumflex
+!E3 U+0103 abreve
+!E4 U+00E4 adieresis
+!E5 U+013A lacute
+!E6 U+0107 cacute
+!E7 U+00E7 ccedilla
+!E8 U+010D ccaron
+!E9 U+00E9 eacute
+!EA U+0119 eogonek
+!EB U+00EB edieresis
+!EC U+011B ecaron
+!ED U+00ED iacute
+!EE U+00EE icircumflex
+!EF U+010F dcaron
+!F0 U+0111 eth
+!F1 U+0144 nacute
+!F2 U+0148 ncaron
+!F3 U+00F3 oacute
+!F4 U+00F4 ocircumflex
+!F5 U+0151 ohungarumlaut
+!F6 U+00F6 odieresis
+!F7 U+00F7 divide
+!F8 U+0159 rcaron
+!F9 U+016F uring
+!FA U+00FA uacute
+!FB U+0171 uhungarumlaut
+!FC U+00FC udieresis
+!FD U+00FD yacute
+!FE U+0163 tcedilla
+!FF U+02D9 dotaccent
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/CP1251.map
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/CP1251.map	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/CP1251.map	(revision 2000)
@@ -0,0 +1,245 @@
+// CP1251 encoding table
+// Zvezdan Petkovic <z.petkovic@computer.org>
+
+!00 U+0000 .notdef
+!01 U+0001 .notdef
+!02 U+0002 .notdef
+!03 U+0003 .notdef
+!04 U+0004 .notdef
+!05 U+0005 .notdef
+!06 U+0006 .notdef
+!07 U+0007 .notdef
+!08 U+0008 .notdef
+!09 U+0009 .notdef
+!0A U+000A .notdef
+!0B U+000B .notdef
+!0C U+000C .notdef
+!0D U+000D .notdef
+!0E U+000E .notdef
+!0F U+000F .notdef
+!10 U+0010 .notdef
+!11 U+0011 .notdef
+!12 U+0012 .notdef
+!20 U+0020 space
+!21 U+0021 exclam
+!22 U+0022 quotedbl
+!23 U+0023 numbersign
+!24 U+0024 dollar
+!25 U+0025 percent
+!26 U+0026 ampersand
+!27 U+0027 quote
+!28 U+0028 parenleft
+!29 U+0029 parenright
+!2A U+002A asterisk
+!2B U+002B plus
+!2C U+002C comma
+!2D U+002D minus
+!2E U+002E period
+!2F U+002F slash
+!30 U+0030 zero
+!31 U+0031 one
+!32 U+0032 two
+!33 U+0033 three
+!34 U+0034 four
+!35 U+0035 five
+!36 U+0036 six
+!37 U+0037 seven
+!38 U+0038 eight
+!39 U+0039 nine
+!3A U+003A colon
+!3B U+003B semicolon
+!3C U+003C less
+!3D U+003D equal
+!3E U+003E greater
+!3F U+003F question
+!40 U+0040 at
+!41 U+0041 A
+!42 U+0042 B
+!43 U+0043 C
+!44 U+0044 D
+!45 U+0045 E
+!46 U+0046 F
+!47 U+0047 G
+!48 U+0048 H
+!49 U+0049 I
+!4A U+004A J
+!4B U+004B K
+!4C U+004C L
+!4D U+004D M
+!4E U+004E N
+!4F U+004F O
+!50 U+0050 P
+!51 U+0051 Q
+!52 U+0052 R
+!53 U+0053 S
+!54 U+0054 T
+!55 U+0055 U
+!56 U+0056 V
+!57 U+0057 W
+!58 U+0058 X
+!59 U+0059 Y
+!5A U+005A Z
+!5B U+005B bracketleft
+!5C U+005C backslash
+!5D U+005D bracketright
+!5E U+005E asciicircum
+!5F U+005F underscore
+!60 U+0060 grave
+!61 U+0061 a
+!62 U+0062 b
+!63 U+0063 c
+!64 U+0064 d
+!65 U+0065 e
+!66 U+0066 f
+!67 U+0067 g
+!68 U+0068 h
+!69 U+0069 i
+!6A U+006A j
+!6B U+006B k
+!6C U+006C l
+!6D U+006D m
+!6E U+006E n
+!6F U+006F o
+!70 U+0070 p
+!71 U+0071 q
+!72 U+0072 r
+!73 U+0073 s
+!74 U+0074 t
+!75 U+0075 u
+!76 U+0076 v
+!77 U+0077 w
+!78 U+0078 x
+!79 U+0079 y
+!7A U+007A z
+!7B U+007B braceleft
+!7C U+007C bar
+!7D U+007D braceright
+!7E U+007E asciitilde
+!7F U+007F .notdef
+!80 U+0402 cyr_DJE
+!81 U+0403 cyr_GJE
+!82 U+201A quotesinglbase
+!83 U+0453 cyr_gje
+!84 U+201E quotedblbase
+!85 U+2026 ellipsis
+!86 U+2020 dagger
+!87 U+2021 daggerdbl
+!88 U+20AC Euro
+!89 U+2030 perthousand 
+!8A U+0409 cyr_LJE
+!8B U+2039 guilsinglleft
+!8C U+040A cyr_NJE
+!8D U+040C cyr_KJE
+!8E U+040B cyr_TSHE
+!8F U+040F cyr_DZHE
+!90 U+0452 cyr_dje
+!91 U+2018 quotesinglleft
+!92 U+2019 quotesinglright
+!93 U+201C quotedblleft
+!94 U+201D quotedblright 
+!95 U+2022 bullet
+!96 U+2013 endash
+!97 U+2014 emdash
+!99 U+2122 trademark
+!9A U+0459 cyr_lje
+!9B U+203A guilsinglright
+!9C U+045A cyr_nje
+!9D U+045C cyr_kje
+!9E U+045B cyr_tshe
+!9F U+045F cyr_dzhe
+!A0 U+00A0 nbspace 
+!A1 U+040E cyr_SHORT_U
+!A2 U+045E cyr_short_u
+!A3 U+0408 cyr_JE
+!A4 U+00A4 currency
+!A5 U+0490 cyr_GHE_UPTURN
+!A6 U+00A6 brokenbar
+!A7 U+00A7 section
+!A8 U+0401 cyr_IO
+!A9 U+00A9 copyright
+!AA U+0404 cyr_UKRAINIAN_IE
+!AB U+00AB guillemotleft
+!AC U+00AC notsign
+!AD U+00AD hyphen 
+!AE U+00AE registered
+!AF U+0407 cyr_YI
+!B0 U+00B0 degree
+!B1 U+00B1 plusminus
+!B2 U+0406 cyr_BYELORUSSIAN_UKRAINIAN_I
+!B3 U+0456 cyr_byelorussian_ukrainian_i
+!B4 U+0491 cyr_ghe_upturn
+!B5 U+00B5 mu
+!B6 U+00B6 paragraph
+!B7 U+00B7 periodcentered
+!B8 U+0451 cyr_io
+!B9 U+2116 numero
+!BA U+0454 cyr_ukrainian_ie
+!BB U+00BB guillemotright
+!BC U+0458 cyr_je
+!BD U+0405 cyr_DZE
+!BE U+0455 cyr_dze
+!BF U+0457 cyr_yi
+!C0 U+0410 cyr_A
+!C1 U+0411 cyr_BE
+!C2 U+0412 cyr_VE
+!C3 U+0413 cyr_GHE
+!C4 U+0414 cyr_DE
+!C5 U+0415 cyr_IE
+!C6 U+0416 cyr_ZHE
+!C7 U+0417 cyr_ZE
+!C8 U+0418 cyr_I
+!C9 U+0419 cyr_SHORT_I
+!CA U+041A cyr_KA
+!CB U+041B cyr_EL
+!CC U+041C cyr_EM
+!CD U+041D cyr_EN
+!CE U+041E cyr_O
+!CF U+041F cyr_PE
+!D0 U+0420 cyr_ER
+!D1 U+0421 cyr_ES
+!D2 U+0422 cyr_TE
+!D3 U+0423 cyr_U
+!D4 U+0424 cyr_EF
+!D5 U+0425 cyr_HA
+!D6 U+0426 cyr_TSE
+!D7 U+0427 cyr_CHE
+!D8 U+0428 cyr_SHA
+!D9 U+0429 cyr_SHCHA
+!DA U+042A cyr_HARD_SIGN
+!DB U+042B cyr_YERU
+!DC U+042C cyr_SOFT_SIGN
+!DD U+042D cyr_E
+!DE U+042E cyr_YU
+!DF U+042F cyr_YA
+!E0 U+0430 cyr_a
+!E1 U+0431 cyr_be
+!E2 U+0432 cyr_ve
+!E3 U+0433 cyr_ghe
+!E4 U+0434 cyr_de
+!E5 U+0435 cyr_ie
+!E6 U+0436 cyr_zhe
+!E7 U+0437 cyr_ze
+!E8 U+0438 cyr_i
+!E9 U+0439 cyr_short_i
+!EA U+043A cyr_ka
+!EB U+043B cyr_el
+!EC U+043C cyr_em
+!ED U+043D cyr_en
+!EE U+043E cyr_o
+!EF U+043F cyr_pe
+!F0 U+0440 cyr_er
+!F1 U+0441 cyr_es
+!F2 U+0442 cyr_te
+!F3 U+0443 cyr_u
+!F4 U+0444 cyr_ef
+!F5 U+0445 cyr_ha
+!F6 U+0446 cyr_tse
+!F7 U+0447 cyr_che
+!F8 U+0448 cyr_sha
+!F9 U+0449 cyr_shcha
+!FA U+044A cyr_hard_sign
+!FB U+044B cyr_yeru
+!FC U+044C cyr_soft_sign
+!FD U+044D cyr_e
+!FE U+044E cyr_yu
+!FF U+044F cyr_ya
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/cugbk.map
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/cugbk.map	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/cugbk.map	(revision 2000)
@@ -0,0 +1,3185 @@
+#
+# For Creating Unicode GBK encoding Chinese Type1
+# compact CJK fonts.
+#
+plane 01        
+at 0x00
+  0x4E02, 0x4E04, 0x4E05, 0x4E06, 0x4E0F, 0x4E12, 0x4E17, 0x4E1F,
+  0x4E20, 0x4E21, 0x4E23, 0x4E26, 0x4E29, 0x4E2E, 0x4E2F, 0x4E31,
+  0x4E33, 0x4E35, 0x4E37, 0x4E3C, 0x4E40, 0x4E41, 0x4E42, 0x4E44,
+  0x4E46, 0x4E4A, 0x4E51, 0x4E55, 0x4E57, 0x4E5A, 0x4E5B, 0x4E62,
+  0x4E63, 0x4E64, 0x4E65, 0x4E67, 0x4E68, 0x4E6A, 0x4E6B, 0x4E6C,
+  0x4E6D, 0x4E6E, 0x4E6F, 0x4E72, 0x4E74, 0x4E75, 0x4E76, 0x4E77,
+  0x4E78, 0x4E79, 0x4E7A, 0x4E7B, 0x4E7C, 0x4E7D, 0x4E7F, 0x4E80,
+  0x4E81, 0x4E82, 0x4E83, 0x4E84, 0x4E85, 0x4E87, 0x4E8A, 0x4E90,
+  0x4E96, 0x4E97, 0x4E99, 0x4E9C, 0x4E9D, 0x4E9E, 0x4EA3, 0x4EAA,
+  0x4EAF, 0x4EB0, 0x4EB1, 0x4EB4, 0x4EB6, 0x4EB7, 0x4EB8, 0x4EB9,
+  0x4EBC, 0x4EBD, 0x4EBE, 0x4EC8, 0x4ECC, 0x4ECF, 0x4ED0, 0x4ED2,
+  0x4EDA, 0x4EDB, 0x4EDC, 0x4EE0, 0x4EE2, 0x4EE6, 0x4EE7, 0x4EE9,
+  0x4EED, 0x4EEE, 0x4EEF, 0x4EF1, 0x4EF4, 0x4EF8, 0x4EF9, 0x4EFA,
+  0x4EFC, 0x4EFE, 0x4F00, 0x4F02, 0x4F03, 0x4F04, 0x4F05, 0x4F06,
+  0x4F07, 0x4F08, 0x4F0B, 0x4F0C, 0x4F12, 0x4F13, 0x4F14, 0x4F15,
+  0x4F16, 0x4F1C, 0x4F1D, 0x4F21, 0x4F23, 0x4F28, 0x4F29, 0x4F2C,
+  0x4F2D, 0x4F2E, 0x4F31, 0x4F33, 0x4F35, 0x4F37, 0x4F39, 0x4F3B,
+  0x4F3E, 0x4F3F, 0x4F40, 0x4F41, 0x4F42, 0x4F44, 0x4F45, 0x4F47,
+  0x4F48, 0x4F49, 0x4F4A, 0x4F4B, 0x4F4C, 0x4F52, 0x4F54, 0x4F56,
+  0x4F61, 0x4F62, 0x4F66, 0x4F68, 0x4F6A, 0x4F6B, 0x4F6D, 0x4F6E,
+  0x4F71, 0x4F72, 0x4F75, 0x4F77, 0x4F78, 0x4F79, 0x4F7A, 0x4F7D,
+  0x4F80, 0x4F81, 0x4F82, 0x4F85, 0x4F86, 0x4F87, 0x4F8A, 0x4F8C,
+  0x4F8E, 0x4F90, 0x4F92, 0x4F93, 0x4F95, 0x4F96, 0x4F98, 0x4F99,
+  0x4F9A, 0x4F9C, 0x4F9E, 0x4F9F, 0x4FA1, 0x4FA2, 0x4FA4, 0x4FAB,
+  0x4FAD, 0x4FB0, 0x4FB1, 0x4FB2, 0x4FB3, 0x4FB4, 0x4FB6, 0x4FB7,
+  0x4FB8, 0x4FB9, 0x4FBA, 0x4FBB, 0x4FBC, 0x4FBD, 0x4FBE, 0x4FC0,
+  0x4FC1, 0x4FC2, 0x4FC6, 0x4FC7, 0x4FC8, 0x4FC9, 0x4FCB, 0x4FCC,
+  0x4FCD, 0x4FD2, 0x4FD3, 0x4FD4, 0x4FD5, 0x4FD6, 0x4FD9, 0x4FDB,
+  0x4FE0, 0x4FE2, 0x4FE4, 0x4FE5, 0x4FE7, 0x4FEB, 0x4FEC, 0x4FF0,
+  0x4FF2, 0x4FF4, 0x4FF5, 0x4FF6, 0x4FF7, 0x4FF9, 0x4FFB, 0x4FFC,
+  0x4FFD, 0x4FFF, 0x5000, 0x5001, 0x5002, 0x5003, 0x5004, 0x5005,
+  0x5006, 0x5007, 0x5008, 0x5009, 0x500A, 0x500B, 0x500E, 0x5010,
+plane 02        
+at 0x00
+  0x5011, 0x5013, 0x5015, 0x5016, 0x5017, 0x501B, 0x501D, 0x501E,
+  0x5020, 0x5022, 0x5023, 0x5024, 0x5027, 0x502B, 0x502F, 0x5030,
+  0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036, 0x5037, 0x5038,
+  0x5039, 0x503B, 0x503D, 0x503F, 0x5040, 0x5041, 0x5042, 0x5044,
+  0x5045, 0x5046, 0x5049, 0x504A, 0x504B, 0x504D, 0x5050, 0x5051,
+  0x5052, 0x5053, 0x5054, 0x5056, 0x5057, 0x5058, 0x5059, 0x505B,
+  0x505D, 0x505E, 0x505F, 0x5060, 0x5061, 0x5062, 0x5063, 0x5064,
+  0x5066, 0x5067, 0x5068, 0x5069, 0x506A, 0x506B, 0x506D, 0x506E,
+  0x506F, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074, 0x5075, 0x5078,
+  0x5079, 0x507A, 0x507C, 0x507D, 0x5081, 0x5082, 0x5083, 0x5084,
+  0x5086, 0x5087, 0x5089, 0x508A, 0x508B, 0x508C, 0x508E, 0x508F,
+  0x5090, 0x5091, 0x5092, 0x5093, 0x5094, 0x5095, 0x5096, 0x5097,
+  0x5098, 0x5099, 0x509A, 0x509B, 0x509C, 0x509D, 0x509E, 0x509F,
+  0x50A0, 0x50A1, 0x50A2, 0x50A4, 0x50A6, 0x50AA, 0x50AB, 0x50AD,
+  0x50AE, 0x50AF, 0x50B0, 0x50B1, 0x50B3, 0x50B4, 0x50B5, 0x50B6,
+  0x50B7, 0x50B8, 0x50B9, 0x50BC, 0x50BD, 0x50BE, 0x50BF, 0x50C0,
+  0x50C1, 0x50C2, 0x50C3, 0x50C4, 0x50C5, 0x50C6, 0x50C7, 0x50C8,
+  0x50C9, 0x50CA, 0x50CB, 0x50CC, 0x50CD, 0x50CE, 0x50D0, 0x50D1,
+  0x50D2, 0x50D3, 0x50D4, 0x50D5, 0x50D7, 0x50D8, 0x50D9, 0x50DB,
+  0x50DC, 0x50DD, 0x50DE, 0x50DF, 0x50E0, 0x50E1, 0x50E2, 0x50E3,
+  0x50E4, 0x50E5, 0x50E8, 0x50E9, 0x50EA, 0x50EB, 0x50EF, 0x50F0,
+  0x50F1, 0x50F2, 0x50F4, 0x50F6, 0x50F7, 0x50F8, 0x50F9, 0x50FA,
+  0x50FC, 0x50FD, 0x50FE, 0x50FF, 0x5100, 0x5101, 0x5102, 0x5103,
+  0x5104, 0x5105, 0x5108, 0x5109, 0x510A, 0x510C, 0x510D, 0x510E,
+  0x510F, 0x5110, 0x5111, 0x5113, 0x5114, 0x5115, 0x5116, 0x5117,
+  0x5118, 0x5119, 0x511A, 0x511B, 0x511C, 0x511D, 0x511E, 0x511F,
+  0x5120, 0x5122, 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, 0x5128,
+  0x5129, 0x512A, 0x512B, 0x512C, 0x512D, 0x512E, 0x512F, 0x5130,
+  0x5131, 0x5132, 0x5133, 0x5134, 0x5135, 0x5136, 0x5137, 0x5138,
+  0x5139, 0x513A, 0x513B, 0x513C, 0x513D, 0x513E, 0x5142, 0x5147,
+  0x514A, 0x514C, 0x514E, 0x514F, 0x5150, 0x5152, 0x5153, 0x5157,
+  0x5158, 0x5159, 0x515B, 0x515D, 0x515E, 0x515F, 0x5160, 0x5161,
+plane 03        
+at 0x00
+  0x5163, 0x5164, 0x5166, 0x5167, 0x5169, 0x516A, 0x516F, 0x5172,
+  0x517A, 0x517E, 0x517F, 0x5183, 0x5184, 0x5186, 0x5187, 0x518A,
+  0x518B, 0x518E, 0x518F, 0x5190, 0x5191, 0x5193, 0x5194, 0x5198,
+  0x519A, 0x519D, 0x519E, 0x519F, 0x51A1, 0x51A3, 0x51A6, 0x51A7,
+  0x51A8, 0x51A9, 0x51AA, 0x51AD, 0x51AE, 0x51B4, 0x51B8, 0x51B9,
+  0x51BA, 0x51BE, 0x51BF, 0x51C1, 0x51C2, 0x51C3, 0x51C5, 0x51C8,
+  0x51CA, 0x51CD, 0x51CE, 0x51D0, 0x51D2, 0x51D3, 0x51D4, 0x51D5,
+  0x51D6, 0x51D7, 0x51D8, 0x51D9, 0x51DA, 0x51DC, 0x51DE, 0x51DF,
+  0x51E2, 0x51E3, 0x51E5, 0x51E6, 0x51E7, 0x51E8, 0x51E9, 0x51EA,
+  0x51EC, 0x51EE, 0x51F1, 0x51F2, 0x51F4, 0x51F7, 0x51FE, 0x5204,
+  0x5205, 0x5209, 0x520B, 0x520C, 0x520F, 0x5210, 0x5213, 0x5214,
+  0x5215, 0x521C, 0x521E, 0x521F, 0x5221, 0x5222, 0x5223, 0x5225,
+  0x5226, 0x5227, 0x522A, 0x522C, 0x522F, 0x5231, 0x5232, 0x5234,
+  0x5235, 0x523C, 0x523E, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248,
+  0x5249, 0x524B, 0x524E, 0x524F, 0x5252, 0x5253, 0x5255, 0x5257,
+  0x5258, 0x5259, 0x525A, 0x525B, 0x525D, 0x525F, 0x5260, 0x5262,
+  0x5263, 0x5264, 0x5266, 0x5268, 0x526B, 0x526C, 0x526D, 0x526E,
+  0x5270, 0x5271, 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278,
+  0x5279, 0x527A, 0x527B, 0x527C, 0x527E, 0x5280, 0x5283, 0x5284,
+  0x5285, 0x5286, 0x5287, 0x5289, 0x528A, 0x528B, 0x528C, 0x528D,
+  0x528E, 0x528F, 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297,
+  0x5298, 0x5299, 0x529A, 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7,
+  0x52AE, 0x52AF, 0x52B0, 0x52B4, 0x52B5, 0x52B6, 0x52B7, 0x52B8,
+  0x52B9, 0x52BA, 0x52BB, 0x52BC, 0x52BD, 0x52C0, 0x52C1, 0x52C2,
+  0x52C4, 0x52C5, 0x52C6, 0x52C8, 0x52CA, 0x52CC, 0x52CD, 0x52CE,
+  0x52CF, 0x52D1, 0x52D3, 0x52D4, 0x52D5, 0x52D7, 0x52D9, 0x52DA,
+  0x52DB, 0x52DC, 0x52DD, 0x52DE, 0x52E0, 0x52E1, 0x52E2, 0x52E3,
+  0x52E5, 0x52E6, 0x52E7, 0x52E8, 0x52E9, 0x52EA, 0x52EB, 0x52EC,
+  0x52ED, 0x52EE, 0x52EF, 0x52F1, 0x52F2, 0x52F3, 0x52F4, 0x52F5,
+  0x52F6, 0x52F7, 0x52F8, 0x52FB, 0x52FC, 0x52FD, 0x5301, 0x5302,
+  0x5303, 0x5304, 0x5307, 0x5309, 0x530A, 0x530B, 0x530C, 0x530E,
+  0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531B, 0x531C, 0x531E,
+plane 04        
+at 0x00
+  0x531F, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532B,
+  0x532C, 0x532D, 0x532F, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334,
+  0x5335, 0x5336, 0x5337, 0x5338, 0x533C, 0x533D, 0x5340, 0x5342,
+  0x5344, 0x5346, 0x534B, 0x534C, 0x534D, 0x5350, 0x5354, 0x5358,
+  0x5359, 0x535B, 0x535D, 0x5365, 0x5368, 0x536A, 0x536C, 0x536D,
+  0x5372, 0x5376, 0x5379, 0x537B, 0x537C, 0x537D, 0x537E, 0x5380,
+  0x5381, 0x5383, 0x5387, 0x5388, 0x538A, 0x538E, 0x538F, 0x5390,
+  0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399, 0x539B,
+  0x539C, 0x539E, 0x53A0, 0x53A1, 0x53A4, 0x53A7, 0x53AA, 0x53AB,
+  0x53AC, 0x53AD, 0x53AF, 0x53B0, 0x53B1, 0x53B2, 0x53B3, 0x53B4,
+  0x53B5, 0x53B7, 0x53B8, 0x53B9, 0x53BA, 0x53BC, 0x53BD, 0x53BE,
+  0x53C0, 0x53C3, 0x53C4, 0x53C5, 0x53C6, 0x53C7, 0x53CE, 0x53CF,
+  0x53D0, 0x53D2, 0x53D3, 0x53D5, 0x53DA, 0x53DC, 0x53DD, 0x53DE,
+  0x53E1, 0x53E2, 0x53E7, 0x53F4, 0x53FA, 0x53FE, 0x53FF, 0x5400,
+  0x5402, 0x5405, 0x5407, 0x540B, 0x5414, 0x5418, 0x5419, 0x541A,
+  0x541C, 0x5422, 0x5424, 0x5425, 0x542A, 0x5430, 0x5433, 0x5436,
+  0x5437, 0x543A, 0x543D, 0x543F, 0x5441, 0x5442, 0x5444, 0x5445,
+  0x5447, 0x5449, 0x544C, 0x544D, 0x544E, 0x544F, 0x5451, 0x545A,
+  0x545D, 0x545E, 0x545F, 0x5460, 0x5461, 0x5463, 0x5465, 0x5467,
+  0x5469, 0x546A, 0x546B, 0x546C, 0x546D, 0x546E, 0x546F, 0x5470,
+  0x5474, 0x5479, 0x547A, 0x547E, 0x547F, 0x5481, 0x5483, 0x5485,
+  0x5487, 0x5488, 0x5489, 0x548A, 0x548D, 0x5491, 0x5493, 0x5497,
+  0x5498, 0x549C, 0x549E, 0x549F, 0x54A0, 0x54A1, 0x54A2, 0x54A5,
+  0x54AE, 0x54B0, 0x54B2, 0x54B5, 0x54B6, 0x54B7, 0x54B9, 0x54BA,
+  0x54BC, 0x54BE, 0x54C3, 0x54C5, 0x54CA, 0x54CB, 0x54D6, 0x54D8,
+  0x54DB, 0x54E0, 0x54E1, 0x54E2, 0x54E3, 0x54E4, 0x54EB, 0x54EC,
+  0x54EF, 0x54F0, 0x54F1, 0x54F4, 0x54F5, 0x54F6, 0x54F7, 0x54F8,
+  0x54F9, 0x54FB, 0x54FE, 0x5500, 0x5502, 0x5503, 0x5504, 0x5505,
+  0x5508, 0x550A, 0x550B, 0x550C, 0x550D, 0x550E, 0x5512, 0x5513,
+  0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551A, 0x551C, 0x551D,
+  0x551E, 0x551F, 0x5521, 0x5525, 0x5526, 0x5528, 0x5529, 0x552B,
+  0x552D, 0x5532, 0x5534, 0x5535, 0x5536, 0x5538, 0x5539, 0x553A,
+plane 05        
+at 0x00
+  0x553B, 0x553D, 0x5540, 0x5542, 0x5545, 0x5547, 0x5548, 0x554B,
+  0x554C, 0x554D, 0x554E, 0x554F, 0x5551, 0x5552, 0x5553, 0x5554,
+  0x5557, 0x5558, 0x5559, 0x555A, 0x555B, 0x555D, 0x555E, 0x555F,
+  0x5560, 0x5562, 0x5563, 0x5568, 0x5569, 0x556B, 0x556F, 0x5570,
+  0x5571, 0x5572, 0x5573, 0x5574, 0x5579, 0x557A, 0x557D, 0x557F,
+  0x5585, 0x5586, 0x558C, 0x558D, 0x558E, 0x5590, 0x5592, 0x5593,
+  0x5595, 0x5596, 0x5597, 0x559A, 0x559B, 0x559E, 0x55A0, 0x55A1,
+  0x55A2, 0x55A3, 0x55A4, 0x55A5, 0x55A6, 0x55A8, 0x55A9, 0x55AA,
+  0x55AB, 0x55AC, 0x55AD, 0x55AE, 0x55AF, 0x55B0, 0x55B2, 0x55B4,
+  0x55B6, 0x55B8, 0x55BA, 0x55BC, 0x55BF, 0x55C0, 0x55C1, 0x55C2,
+  0x55C3, 0x55C6, 0x55C7, 0x55C8, 0x55CA, 0x55CB, 0x55CE, 0x55CF,
+  0x55D0, 0x55D5, 0x55D7, 0x55D8, 0x55D9, 0x55DA, 0x55DB, 0x55DE,
+  0x55E0, 0x55E2, 0x55E7, 0x55E9, 0x55ED, 0x55EE, 0x55F0, 0x55F1,
+  0x55F4, 0x55F6, 0x55F8, 0x55F9, 0x55FA, 0x55FB, 0x55FC, 0x55FF,
+  0x5602, 0x5603, 0x5604, 0x5605, 0x5606, 0x5607, 0x560A, 0x560B,
+  0x560D, 0x5610, 0x5611, 0x5612, 0x5613, 0x5614, 0x5615, 0x5616,
+  0x5617, 0x5619, 0x561A, 0x561C, 0x561D, 0x5620, 0x5621, 0x5622,
+  0x5625, 0x5626, 0x5628, 0x5629, 0x562A, 0x562B, 0x562E, 0x562F,
+  0x5630, 0x5633, 0x5635, 0x5637, 0x5638, 0x563A, 0x563C, 0x563D,
+  0x563E, 0x5640, 0x5641, 0x5642, 0x5643, 0x5644, 0x5645, 0x5646,
+  0x5647, 0x5648, 0x5649, 0x564A, 0x564B, 0x564F, 0x5650, 0x5651,
+  0x5652, 0x5653, 0x5655, 0x5656, 0x565A, 0x565B, 0x565D, 0x565E,
+  0x565F, 0x5660, 0x5661, 0x5663, 0x5665, 0x5666, 0x5667, 0x566D,
+  0x566E, 0x566F, 0x5670, 0x5672, 0x5673, 0x5674, 0x5675, 0x5677,
+  0x5678, 0x5679, 0x567A, 0x567D, 0x567E, 0x567F, 0x5680, 0x5681,
+  0x5682, 0x5683, 0x5684, 0x5687, 0x5688, 0x5689, 0x568A, 0x568B,
+  0x568C, 0x568D, 0x5690, 0x5691, 0x5692, 0x5694, 0x5695, 0x5696,
+  0x5697, 0x5698, 0x5699, 0x569A, 0x569B, 0x569C, 0x569D, 0x569E,
+  0x569F, 0x56A0, 0x56A1, 0x56A2, 0x56A4, 0x56A5, 0x56A6, 0x56A7,
+  0x56A8, 0x56A9, 0x56AA, 0x56AB, 0x56AC, 0x56AD, 0x56AE, 0x56B0,
+  0x56B1, 0x56B2, 0x56B3, 0x56B4, 0x56B5, 0x56B6, 0x56B8, 0x56B9,
+  0x56BA, 0x56BB, 0x56BD, 0x56BE, 0x56BF, 0x56C0, 0x56C1, 0x56C2,
+plane 06        
+at 0x00
+  0x56C3, 0x56C4, 0x56C5, 0x56C6, 0x56C7, 0x56C8, 0x56C9, 0x56CB,
+  0x56CC, 0x56CD, 0x56CE, 0x56CF, 0x56D0, 0x56D1, 0x56D2, 0x56D3,
+  0x56D5, 0x56D6, 0x56D8, 0x56D9, 0x56DC, 0x56E3, 0x56E5, 0x56E6,
+  0x56E7, 0x56E8, 0x56E9, 0x56EA, 0x56EC, 0x56EE, 0x56EF, 0x56F2,
+  0x56F3, 0x56F6, 0x56F7, 0x56F8, 0x56FB, 0x56FC, 0x5700, 0x5701,
+  0x5702, 0x5705, 0x5707, 0x570B, 0x570C, 0x570D, 0x570E, 0x570F,
+  0x5710, 0x5711, 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717,
+  0x5718, 0x5719, 0x571A, 0x571B, 0x571D, 0x571E, 0x5720, 0x5721,
+  0x5722, 0x5724, 0x5725, 0x5726, 0x5727, 0x572B, 0x5731, 0x5732,
+  0x5734, 0x5735, 0x5736, 0x5737, 0x5738, 0x573C, 0x573D, 0x573F,
+  0x5741, 0x5743, 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574B,
+  0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762,
+  0x5763, 0x5765, 0x5767, 0x576C, 0x576E, 0x5770, 0x5771, 0x5772,
+  0x5774, 0x5775, 0x5778, 0x5779, 0x577A, 0x577D, 0x577E, 0x577F,
+  0x5780, 0x5781, 0x5787, 0x5788, 0x5789, 0x578A, 0x578D, 0x578E,
+  0x578F, 0x5790, 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798,
+  0x5799, 0x579A, 0x579C, 0x579D, 0x579E, 0x579F, 0x57A5, 0x57A8,
+  0x57AA, 0x57AC, 0x57AF, 0x57B0, 0x57B1, 0x57B3, 0x57B5, 0x57B6,
+  0x57B7, 0x57B9, 0x57BA, 0x57BB, 0x57BC, 0x57BD, 0x57BE, 0x57BF,
+  0x57C0, 0x57C1, 0x57C4, 0x57C5, 0x57C6, 0x57C7, 0x57C8, 0x57C9,
+  0x57CA, 0x57CC, 0x57CD, 0x57D0, 0x57D1, 0x57D3, 0x57D6, 0x57D7,
+  0x57DB, 0x57DC, 0x57DE, 0x57E1, 0x57E2, 0x57E3, 0x57E5, 0x57E6,
+  0x57E7, 0x57E8, 0x57E9, 0x57EA, 0x57EB, 0x57EC, 0x57EE, 0x57F0,
+  0x57F1, 0x57F2, 0x57F3, 0x57F5, 0x57F6, 0x57F7, 0x57FB, 0x57FC,
+  0x57FE, 0x57FF, 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809,
+  0x580A, 0x580C, 0x580E, 0x580F, 0x5810, 0x5812, 0x5813, 0x5814,
+  0x5816, 0x5817, 0x5818, 0x581A, 0x581B, 0x581C, 0x581D, 0x581F,
+  0x5822, 0x5823, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582B,
+  0x582C, 0x582D, 0x582E, 0x582F, 0x5831, 0x5832, 0x5833, 0x5834,
+  0x5836, 0x5837, 0x5838, 0x5839, 0x583A, 0x583B, 0x583C, 0x583D,
+  0x583E, 0x583F, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846,
+  0x5847, 0x5848, 0x5849, 0x584A, 0x584B, 0x584E, 0x584F, 0x5850,
+plane 07        
+at 0x00
+  0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585A, 0x585B,
+  0x585C, 0x585D, 0x585F, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864,
+  0x5866, 0x5867, 0x5868, 0x5869, 0x586A, 0x586D, 0x586E, 0x586F,
+  0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877,
+  0x5878, 0x5879, 0x587A, 0x587B, 0x587C, 0x587D, 0x587F, 0x5882,
+  0x5884, 0x5886, 0x5887, 0x5888, 0x588A, 0x588B, 0x588C, 0x588D,
+  0x588E, 0x588F, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897,
+  0x5898, 0x589B, 0x589C, 0x589D, 0x58A0, 0x58A1, 0x58A2, 0x58A3,
+  0x58A4, 0x58A5, 0x58A6, 0x58A7, 0x58AA, 0x58AB, 0x58AC, 0x58AD,
+  0x58AE, 0x58AF, 0x58B0, 0x58B1, 0x58B2, 0x58B3, 0x58B4, 0x58B5,
+  0x58B6, 0x58B7, 0x58B8, 0x58B9, 0x58BA, 0x58BB, 0x58BD, 0x58BE,
+  0x58BF, 0x58C0, 0x58C2, 0x58C3, 0x58C4, 0x58C6, 0x58C7, 0x58C8,
+  0x58C9, 0x58CA, 0x58CB, 0x58CC, 0x58CD, 0x58CE, 0x58CF, 0x58D0,
+  0x58D2, 0x58D3, 0x58D4, 0x58D6, 0x58D7, 0x58D8, 0x58D9, 0x58DA,
+  0x58DB, 0x58DC, 0x58DD, 0x58DE, 0x58DF, 0x58E0, 0x58E1, 0x58E2,
+  0x58E3, 0x58E5, 0x58E6, 0x58E7, 0x58E8, 0x58E9, 0x58EA, 0x58ED,
+  0x58EF, 0x58F1, 0x58F2, 0x58F4, 0x58F5, 0x58F7, 0x58F8, 0x58FA,
+  0x58FB, 0x58FC, 0x58FD, 0x58FE, 0x58FF, 0x5900, 0x5901, 0x5903,
+  0x5905, 0x5906, 0x5908, 0x5909, 0x590A, 0x590B, 0x590C, 0x590E,
+  0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591B, 0x591D,
+  0x591E, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928, 0x592C,
+  0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593B, 0x593D, 0x593E,
+  0x593F, 0x5940, 0x5943, 0x5945, 0x5946, 0x594A, 0x594C, 0x594D,
+  0x5950, 0x5952, 0x5953, 0x5959, 0x595B, 0x595C, 0x595D, 0x595E,
+  0x595F, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967, 0x5968, 0x5969,
+  0x596A, 0x596B, 0x596C, 0x596D, 0x596E, 0x596F, 0x5970, 0x5971,
+  0x5972, 0x5975, 0x5977, 0x597A, 0x597B, 0x597C, 0x597E, 0x597F,
+  0x5980, 0x5985, 0x5989, 0x598B, 0x598C, 0x598E, 0x598F, 0x5990,
+  0x5991, 0x5994, 0x5995, 0x5998, 0x599A, 0x599B, 0x599C, 0x599D,
+  0x599F, 0x59A0, 0x59A1, 0x59A2, 0x59A6, 0x59A7, 0x59AC, 0x59AD,
+  0x59B0, 0x59B1, 0x59B3, 0x59B4, 0x59B5, 0x59B6, 0x59B7, 0x59B8,
+  0x59BA, 0x59BC, 0x59BD, 0x59BF, 0x59C0, 0x59C1, 0x59C2, 0x59C3,
+plane 08        
+at 0x00
+  0x59C4, 0x59C5, 0x59C7, 0x59C8, 0x59C9, 0x59CC, 0x59CD, 0x59CE,
+  0x59CF, 0x59D5, 0x59D6, 0x59D9, 0x59DB, 0x59DE, 0x59DF, 0x59E0,
+  0x59E1, 0x59E2, 0x59E4, 0x59E6, 0x59E7, 0x59E9, 0x59EA, 0x59EB,
+  0x59ED, 0x59EE, 0x59EF, 0x59F0, 0x59F1, 0x59F2, 0x59F3, 0x59F4,
+  0x59F5, 0x59F6, 0x59F7, 0x59F8, 0x59FA, 0x59FC, 0x59FD, 0x59FE,
+  0x5A00, 0x5A02, 0x5A0A, 0x5A0B, 0x5A0D, 0x5A0E, 0x5A0F, 0x5A10,
+  0x5A12, 0x5A14, 0x5A15, 0x5A16, 0x5A17, 0x5A19, 0x5A1A, 0x5A1B,
+  0x5A1D, 0x5A1E, 0x5A21, 0x5A22, 0x5A24, 0x5A26, 0x5A27, 0x5A28,
+  0x5A2A, 0x5A2B, 0x5A2C, 0x5A2D, 0x5A2E, 0x5A2F, 0x5A30, 0x5A33,
+  0x5A35, 0x5A37, 0x5A38, 0x5A39, 0x5A3A, 0x5A3B, 0x5A3D, 0x5A3E,
+  0x5A3F, 0x5A41, 0x5A42, 0x5A43, 0x5A44, 0x5A45, 0x5A47, 0x5A48,
+  0x5A4B, 0x5A4C, 0x5A4D, 0x5A4E, 0x5A4F, 0x5A50, 0x5A51, 0x5A52,
+  0x5A53, 0x5A54, 0x5A56, 0x5A57, 0x5A58, 0x5A59, 0x5A5B, 0x5A5C,
+  0x5A5D, 0x5A5E, 0x5A5F, 0x5A60, 0x5A61, 0x5A63, 0x5A64, 0x5A65,
+  0x5A66, 0x5A68, 0x5A69, 0x5A6B, 0x5A6C, 0x5A6D, 0x5A6E, 0x5A6F,
+  0x5A70, 0x5A71, 0x5A72, 0x5A73, 0x5A78, 0x5A79, 0x5A7B, 0x5A7C,
+  0x5A7D, 0x5A7E, 0x5A80, 0x5A81, 0x5A82, 0x5A83, 0x5A84, 0x5A85,
+  0x5A86, 0x5A87, 0x5A88, 0x5A89, 0x5A8A, 0x5A8B, 0x5A8C, 0x5A8D,
+  0x5A8E, 0x5A8F, 0x5A90, 0x5A91, 0x5A93, 0x5A94, 0x5A95, 0x5A96,
+  0x5A97, 0x5A98, 0x5A99, 0x5A9C, 0x5A9D, 0x5A9E, 0x5A9F, 0x5AA0,
+  0x5AA1, 0x5AA2, 0x5AA3, 0x5AA4, 0x5AA5, 0x5AA6, 0x5AA7, 0x5AA8,
+  0x5AA9, 0x5AAB, 0x5AAC, 0x5AAD, 0x5AAE, 0x5AAF, 0x5AB0, 0x5AB1,
+  0x5AB4, 0x5AB6, 0x5AB7, 0x5AB9, 0x5ABA, 0x5ABB, 0x5ABC, 0x5ABD,
+  0x5ABF, 0x5AC0, 0x5AC3, 0x5AC4, 0x5AC5, 0x5AC6, 0x5AC7, 0x5AC8,
+  0x5ACA, 0x5ACB, 0x5ACD, 0x5ACE, 0x5ACF, 0x5AD0, 0x5AD1, 0x5AD3,
+  0x5AD5, 0x5AD7, 0x5AD9, 0x5ADA, 0x5ADB, 0x5ADD, 0x5ADE, 0x5ADF,
+  0x5AE2, 0x5AE4, 0x5AE5, 0x5AE7, 0x5AE8, 0x5AEA, 0x5AEC, 0x5AED,
+  0x5AEE, 0x5AEF, 0x5AF0, 0x5AF2, 0x5AF3, 0x5AF4, 0x5AF5, 0x5AF6,
+  0x5AF7, 0x5AF8, 0x5AF9, 0x5AFA, 0x5AFB, 0x5AFC, 0x5AFD, 0x5AFE,
+  0x5AFF, 0x5B00, 0x5B01, 0x5B02, 0x5B03, 0x5B04, 0x5B05, 0x5B06,
+  0x5B07, 0x5B08, 0x5B0A, 0x5B0B, 0x5B0C, 0x5B0D, 0x5B0E, 0x5B0F,
+  0x5B10, 0x5B11, 0x5B12, 0x5B13, 0x5B14, 0x5B15, 0x5B18, 0x5B19,
+plane 09        
+at 0x00
+  0x5B1A, 0x5B1B, 0x5B1C, 0x5B1D, 0x5B1E, 0x5B1F, 0x5B20, 0x5B21,
+  0x5B22, 0x5B23, 0x5B24, 0x5B25, 0x5B26, 0x5B27, 0x5B28, 0x5B29,
+  0x5B2A, 0x5B2B, 0x5B2C, 0x5B2D, 0x5B2E, 0x5B2F, 0x5B30, 0x5B31,
+  0x5B33, 0x5B35, 0x5B36, 0x5B38, 0x5B39, 0x5B3A, 0x5B3B, 0x5B3C,
+  0x5B3D, 0x5B3E, 0x5B3F, 0x5B41, 0x5B42, 0x5B43, 0x5B44, 0x5B45,
+  0x5B46, 0x5B47, 0x5B48, 0x5B49, 0x5B4A, 0x5B4B, 0x5B4C, 0x5B4D,
+  0x5B4E, 0x5B4F, 0x5B52, 0x5B56, 0x5B5E, 0x5B60, 0x5B61, 0x5B67,
+  0x5B68, 0x5B6B, 0x5B6D, 0x5B6E, 0x5B6F, 0x5B72, 0x5B74, 0x5B76,
+  0x5B77, 0x5B78, 0x5B79, 0x5B7B, 0x5B7C, 0x5B7E, 0x5B7F, 0x5B82,
+  0x5B86, 0x5B8A, 0x5B8D, 0x5B8E, 0x5B90, 0x5B91, 0x5B92, 0x5B94,
+  0x5B96, 0x5B9F, 0x5BA7, 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD, 0x5BAE,
+  0x5BAF, 0x5BB1, 0x5BB2, 0x5BB7, 0x5BBA, 0x5BBB, 0x5BBC, 0x5BC0,
+  0x5BC1, 0x5BC3, 0x5BC8, 0x5BC9, 0x5BCA, 0x5BCB, 0x5BCD, 0x5BCE,
+  0x5BCF, 0x5BD1, 0x5BD4, 0x5BD5, 0x5BD6, 0x5BD7, 0x5BD8, 0x5BD9,
+  0x5BDA, 0x5BDB, 0x5BDC, 0x5BE0, 0x5BE2, 0x5BE3, 0x5BE6, 0x5BE7,
+  0x5BE9, 0x5BEA, 0x5BEB, 0x5BEC, 0x5BED, 0x5BEF, 0x5BF1, 0x5BF2,
+  0x5BF3, 0x5BF4, 0x5BF5, 0x5BF6, 0x5BF7, 0x5BFD, 0x5BFE, 0x5C00,
+  0x5C02, 0x5C03, 0x5C05, 0x5C07, 0x5C08, 0x5C0B, 0x5C0C, 0x5C0D,
+  0x5C0E, 0x5C10, 0x5C12, 0x5C13, 0x5C17, 0x5C19, 0x5C1B, 0x5C1E,
+  0x5C1F, 0x5C20, 0x5C21, 0x5C23, 0x5C26, 0x5C28, 0x5C29, 0x5C2A,
+  0x5C2B, 0x5C2D, 0x5C2E, 0x5C2F, 0x5C30, 0x5C32, 0x5C33, 0x5C35,
+  0x5C36, 0x5C37, 0x5C43, 0x5C44, 0x5C46, 0x5C47, 0x5C4C, 0x5C4D,
+  0x5C52, 0x5C53, 0x5C54, 0x5C56, 0x5C57, 0x5C58, 0x5C5A, 0x5C5B,
+  0x5C5C, 0x5C5D, 0x5C5F, 0x5C62, 0x5C64, 0x5C67, 0x5C68, 0x5C69,
+  0x5C6A, 0x5C6B, 0x5C6C, 0x5C6D, 0x5C70, 0x5C72, 0x5C73, 0x5C74,
+  0x5C75, 0x5C76, 0x5C77, 0x5C78, 0x5C7B, 0x5C7C, 0x5C7D, 0x5C7E,
+  0x5C80, 0x5C83, 0x5C84, 0x5C85, 0x5C86, 0x5C87, 0x5C89, 0x5C8A,
+  0x5C8B, 0x5C8E, 0x5C8F, 0x5C92, 0x5C93, 0x5C95, 0x5C9D, 0x5C9E,
+  0x5C9F, 0x5CA0, 0x5CA1, 0x5CA4, 0x5CA5, 0x5CA6, 0x5CA7, 0x5CA8,
+  0x5CAA, 0x5CAE, 0x5CAF, 0x5CB0, 0x5CB2, 0x5CB4, 0x5CB6, 0x5CB9,
+  0x5CBA, 0x5CBB, 0x5CBC, 0x5CBE, 0x5CC0, 0x5CC2, 0x5CC3, 0x5CC5,
+  0x5CC6, 0x5CC7, 0x5CC8, 0x5CC9, 0x5CCA, 0x5CCC, 0x5CCD, 0x5CCE,
+plane 10        
+at 0x00
+  0x5CCF, 0x5CD0, 0x5CD1, 0x5CD3, 0x5CD4, 0x5CD5, 0x5CD6, 0x5CD7,
+  0x5CD8, 0x5CDA, 0x5CDB, 0x5CDC, 0x5CDD, 0x5CDE, 0x5CDF, 0x5CE0,
+  0x5CE2, 0x5CE3, 0x5CE7, 0x5CE9, 0x5CEB, 0x5CEC, 0x5CEE, 0x5CEF,
+  0x5CF1, 0x5CF2, 0x5CF3, 0x5CF4, 0x5CF5, 0x5CF6, 0x5CF7, 0x5CF8,
+  0x5CF9, 0x5CFA, 0x5CFC, 0x5CFD, 0x5CFE, 0x5CFF, 0x5D00, 0x5D01,
+  0x5D04, 0x5D05, 0x5D08, 0x5D09, 0x5D0A, 0x5D0B, 0x5D0C, 0x5D0D,
+  0x5D0F, 0x5D10, 0x5D11, 0x5D12, 0x5D13, 0x5D15, 0x5D17, 0x5D18,
+  0x5D19, 0x5D1A, 0x5D1C, 0x5D1D, 0x5D1F, 0x5D20, 0x5D21, 0x5D22,
+  0x5D23, 0x5D25, 0x5D28, 0x5D2A, 0x5D2B, 0x5D2C, 0x5D2F, 0x5D30,
+  0x5D31, 0x5D32, 0x5D33, 0x5D35, 0x5D36, 0x5D37, 0x5D38, 0x5D39,
+  0x5D3A, 0x5D3B, 0x5D3C, 0x5D3F, 0x5D40, 0x5D41, 0x5D42, 0x5D43,
+  0x5D44, 0x5D45, 0x5D46, 0x5D48, 0x5D49, 0x5D4D, 0x5D4E, 0x5D4F,
+  0x5D50, 0x5D51, 0x5D52, 0x5D53, 0x5D54, 0x5D55, 0x5D56, 0x5D57,
+  0x5D59, 0x5D5A, 0x5D5C, 0x5D5E, 0x5D5F, 0x5D60, 0x5D61, 0x5D62,
+  0x5D63, 0x5D64, 0x5D65, 0x5D66, 0x5D67, 0x5D68, 0x5D6A, 0x5D6D,
+  0x5D6E, 0x5D70, 0x5D71, 0x5D72, 0x5D73, 0x5D75, 0x5D76, 0x5D77,
+  0x5D78, 0x5D79, 0x5D7A, 0x5D7B, 0x5D7C, 0x5D7D, 0x5D7E, 0x5D7F,
+  0x5D80, 0x5D81, 0x5D83, 0x5D84, 0x5D85, 0x5D86, 0x5D87, 0x5D88,
+  0x5D89, 0x5D8A, 0x5D8B, 0x5D8C, 0x5D8D, 0x5D8E, 0x5D8F, 0x5D90,
+  0x5D91, 0x5D92, 0x5D93, 0x5D94, 0x5D95, 0x5D96, 0x5D97, 0x5D98,
+  0x5D9A, 0x5D9B, 0x5D9C, 0x5D9E, 0x5D9F, 0x5DA0, 0x5DA1, 0x5DA2,
+  0x5DA3, 0x5DA4, 0x5DA5, 0x5DA6, 0x5DA7, 0x5DA8, 0x5DA9, 0x5DAA,
+  0x5DAB, 0x5DAC, 0x5DAD, 0x5DAE, 0x5DAF, 0x5DB0, 0x5DB1, 0x5DB2,
+  0x5DB3, 0x5DB4, 0x5DB5, 0x5DB6, 0x5DB8, 0x5DB9, 0x5DBA, 0x5DBB,
+  0x5DBC, 0x5DBD, 0x5DBE, 0x5DBF, 0x5DC0, 0x5DC1, 0x5DC2, 0x5DC3,
+  0x5DC4, 0x5DC6, 0x5DC7, 0x5DC8, 0x5DC9, 0x5DCA, 0x5DCB, 0x5DCC,
+  0x5DCE, 0x5DCF, 0x5DD0, 0x5DD1, 0x5DD2, 0x5DD3, 0x5DD4, 0x5DD5,
+  0x5DD6, 0x5DD7, 0x5DD8, 0x5DD9, 0x5DDA, 0x5DDC, 0x5DDF, 0x5DE0,
+  0x5DE3, 0x5DE4, 0x5DEA, 0x5DEC, 0x5DED, 0x5DF0, 0x5DF5, 0x5DF6,
+  0x5DF8, 0x5DF9, 0x5DFA, 0x5DFB, 0x5DFC, 0x5DFF, 0x5E00, 0x5E04,
+  0x5E07, 0x5E09, 0x5E0A, 0x5E0B, 0x5E0D, 0x5E0E, 0x5E12, 0x5E13,
+  0x5E17, 0x5E1E, 0x5E1F, 0x5E20, 0x5E21, 0x5E22, 0x5E23, 0x5E24,
+plane 11        
+at 0x00
+  0x5E25, 0x5E28, 0x5E29, 0x5E2A, 0x5E2B, 0x5E2C, 0x5E2F, 0x5E30,
+  0x5E32, 0x5E33, 0x5E34, 0x5E35, 0x5E36, 0x5E39, 0x5E3A, 0x5E3E,
+  0x5E3F, 0x5E40, 0x5E41, 0x5E43, 0x5E46, 0x5E47, 0x5E48, 0x5E49,
+  0x5E4A, 0x5E4B, 0x5E4D, 0x5E4E, 0x5E4F, 0x5E50, 0x5E51, 0x5E52,
+  0x5E53, 0x5E56, 0x5E57, 0x5E58, 0x5E59, 0x5E5A, 0x5E5C, 0x5E5D,
+  0x5E5F, 0x5E60, 0x5E63, 0x5E64, 0x5E65, 0x5E66, 0x5E67, 0x5E68,
+  0x5E69, 0x5E6A, 0x5E6B, 0x5E6C, 0x5E6D, 0x5E6E, 0x5E6F, 0x5E70,
+  0x5E71, 0x5E75, 0x5E77, 0x5E79, 0x5E7E, 0x5E81, 0x5E82, 0x5E83,
+  0x5E85, 0x5E88, 0x5E89, 0x5E8C, 0x5E8D, 0x5E8E, 0x5E92, 0x5E98,
+  0x5E9B, 0x5E9D, 0x5EA1, 0x5EA2, 0x5EA3, 0x5EA4, 0x5EA8, 0x5EA9,
+  0x5EAA, 0x5EAB, 0x5EAC, 0x5EAE, 0x5EAF, 0x5EB0, 0x5EB1, 0x5EB2,
+  0x5EB4, 0x5EBA, 0x5EBB, 0x5EBC, 0x5EBD, 0x5EBF, 0x5EC0, 0x5EC1,
+  0x5EC2, 0x5EC3, 0x5EC4, 0x5EC5, 0x5EC6, 0x5EC7, 0x5EC8, 0x5ECB,
+  0x5ECC, 0x5ECD, 0x5ECE, 0x5ECF, 0x5ED0, 0x5ED4, 0x5ED5, 0x5ED7,
+  0x5ED8, 0x5ED9, 0x5EDA, 0x5EDC, 0x5EDD, 0x5EDE, 0x5EDF, 0x5EE0,
+  0x5EE1, 0x5EE2, 0x5EE3, 0x5EE4, 0x5EE5, 0x5EE6, 0x5EE7, 0x5EE9,
+  0x5EEB, 0x5EEC, 0x5EED, 0x5EEE, 0x5EEF, 0x5EF0, 0x5EF1, 0x5EF2,
+  0x5EF3, 0x5EF5, 0x5EF8, 0x5EF9, 0x5EFB, 0x5EFC, 0x5EFD, 0x5F05,
+  0x5F06, 0x5F07, 0x5F09, 0x5F0C, 0x5F0D, 0x5F0E, 0x5F10, 0x5F12,
+  0x5F14, 0x5F16, 0x5F19, 0x5F1A, 0x5F1C, 0x5F1D, 0x5F1E, 0x5F21,
+  0x5F22, 0x5F23, 0x5F24, 0x5F28, 0x5F2B, 0x5F2C, 0x5F2E, 0x5F30,
+  0x5F32, 0x5F33, 0x5F34, 0x5F35, 0x5F36, 0x5F37, 0x5F38, 0x5F3B,
+  0x5F3D, 0x5F3E, 0x5F3F, 0x5F41, 0x5F42, 0x5F43, 0x5F44, 0x5F45,
+  0x5F46, 0x5F47, 0x5F48, 0x5F49, 0x5F4A, 0x5F4B, 0x5F4C, 0x5F4D,
+  0x5F4E, 0x5F4F, 0x5F51, 0x5F54, 0x5F59, 0x5F5A, 0x5F5B, 0x5F5C,
+  0x5F5E, 0x5F5F, 0x5F60, 0x5F63, 0x5F65, 0x5F67, 0x5F68, 0x5F6B,
+  0x5F6E, 0x5F6F, 0x5F72, 0x5F74, 0x5F75, 0x5F76, 0x5F78, 0x5F7A,
+  0x5F7D, 0x5F7E, 0x5F7F, 0x5F83, 0x5F86, 0x5F8D, 0x5F8E, 0x5F8F,
+  0x5F91, 0x5F93, 0x5F94, 0x5F96, 0x5F9A, 0x5F9B, 0x5F9D, 0x5F9E,
+  0x5F9F, 0x5FA0, 0x5FA2, 0x5FA3, 0x5FA4, 0x5FA5, 0x5FA6, 0x5FA7,
+  0x5FA9, 0x5FAB, 0x5FAC, 0x5FAF, 0x5FB0, 0x5FB1, 0x5FB2, 0x5FB3,
+  0x5FB4, 0x5FB6, 0x5FB8, 0x5FB9, 0x5FBA, 0x5FBB, 0x5FBE, 0x5FBF,
+plane 12        
+at 0x00
+  0x5FC0, 0x5FC1, 0x5FC2, 0x5FC7, 0x5FC8, 0x5FCA, 0x5FCB, 0x5FCE,
+  0x5FD3, 0x5FD4, 0x5FD5, 0x5FDA, 0x5FDB, 0x5FDC, 0x5FDE, 0x5FDF,
+  0x5FE2, 0x5FE3, 0x5FE5, 0x5FE6, 0x5FE8, 0x5FE9, 0x5FEC, 0x5FEF,
+  0x5FF0, 0x5FF2, 0x5FF3, 0x5FF4, 0x5FF6, 0x5FF7, 0x5FF9, 0x5FFA,
+  0x5FFC, 0x6007, 0x6008, 0x6009, 0x600B, 0x600C, 0x6010, 0x6011,
+  0x6013, 0x6017, 0x6018, 0x601A, 0x601E, 0x601F, 0x6022, 0x6023,
+  0x6024, 0x602C, 0x602D, 0x602E, 0x6030, 0x6031, 0x6032, 0x6033,
+  0x6034, 0x6036, 0x6037, 0x6038, 0x6039, 0x603A, 0x603D, 0x603E,
+  0x6040, 0x6044, 0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604A,
+  0x604C, 0x604E, 0x604F, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057,
+  0x6058, 0x605B, 0x605C, 0x605E, 0x605F, 0x6060, 0x6061, 0x6065,
+  0x6066, 0x606E, 0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607E,
+  0x6080, 0x6081, 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608A,
+  0x608B, 0x608E, 0x608F, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097,
+  0x6098, 0x6099, 0x609C, 0x609E, 0x60A1, 0x60A2, 0x60A4, 0x60A5,
+  0x60A7, 0x60A9, 0x60AA, 0x60AE, 0x60B0, 0x60B3, 0x60B5, 0x60B6,
+  0x60B7, 0x60B9, 0x60BA, 0x60BD, 0x60BE, 0x60BF, 0x60C0, 0x60C1,
+  0x60C2, 0x60C3, 0x60C4, 0x60C7, 0x60C8, 0x60C9, 0x60CC, 0x60CD,
+  0x60CE, 0x60CF, 0x60D0, 0x60D2, 0x60D3, 0x60D4, 0x60D6, 0x60D7,
+  0x60D9, 0x60DB, 0x60DE, 0x60E1, 0x60E2, 0x60E3, 0x60E4, 0x60E5,
+  0x60EA, 0x60F1, 0x60F2, 0x60F5, 0x60F7, 0x60F8, 0x60FB, 0x60FC,
+  0x60FD, 0x60FE, 0x60FF, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107,
+  0x610A, 0x610B, 0x610C, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114,
+  0x6116, 0x6117, 0x6118, 0x6119, 0x611B, 0x611C, 0x611D, 0x611E,
+  0x6121, 0x6122, 0x6125, 0x6128, 0x6129, 0x612A, 0x612C, 0x612D,
+  0x612E, 0x612F, 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135,
+  0x6136, 0x6137, 0x6138, 0x6139, 0x613A, 0x613B, 0x613C, 0x613D,
+  0x613E, 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146,
+  0x6147, 0x6149, 0x614B, 0x614D, 0x614F, 0x6150, 0x6152, 0x6153,
+  0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615A, 0x615B, 0x615C,
+  0x615E, 0x615F, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166,
+  0x6169, 0x616A, 0x616B, 0x616C, 0x616D, 0x616E, 0x616F, 0x6171,
+plane 13        
+at 0x00
+  0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617A, 0x617B,
+  0x617C, 0x617D, 0x617E, 0x617F, 0x6180, 0x6181, 0x6182, 0x6183,
+  0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618A, 0x618C,
+  0x618D, 0x618F, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195, 0x6196,
+  0x6197, 0x6198, 0x6199, 0x619A, 0x619B, 0x619C, 0x619E, 0x619F,
+  0x61A0, 0x61A1, 0x61A2, 0x61A3, 0x61A4, 0x61A5, 0x61A6, 0x61AA,
+  0x61AB, 0x61AD, 0x61AE, 0x61AF, 0x61B0, 0x61B1, 0x61B2, 0x61B3,
+  0x61B4, 0x61B5, 0x61B6, 0x61B8, 0x61B9, 0x61BA, 0x61BB, 0x61BC,
+  0x61BD, 0x61BF, 0x61C0, 0x61C1, 0x61C3, 0x61C4, 0x61C5, 0x61C6,
+  0x61C7, 0x61C9, 0x61CC, 0x61CD, 0x61CE, 0x61CF, 0x61D0, 0x61D3,
+  0x61D5, 0x61D6, 0x61D7, 0x61D8, 0x61D9, 0x61DA, 0x61DB, 0x61DC,
+  0x61DD, 0x61DE, 0x61DF, 0x61E0, 0x61E1, 0x61E2, 0x61E3, 0x61E4,
+  0x61E5, 0x61E7, 0x61E8, 0x61E9, 0x61EA, 0x61EB, 0x61EC, 0x61ED,
+  0x61EE, 0x61EF, 0x61F0, 0x61F1, 0x61F2, 0x61F3, 0x61F4, 0x61F6,
+  0x61F7, 0x61F8, 0x61F9, 0x61FA, 0x61FB, 0x61FC, 0x61FD, 0x61FE,
+  0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207, 0x6209,
+  0x6213, 0x6214, 0x6219, 0x621C, 0x621D, 0x621E, 0x6220, 0x6223,
+  0x6226, 0x6227, 0x6228, 0x6229, 0x622B, 0x622D, 0x622F, 0x6230,
+  0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623A, 0x623B,
+  0x623C, 0x6242, 0x6244, 0x6245, 0x6246, 0x624A, 0x624F, 0x6250,
+  0x6255, 0x6256, 0x6257, 0x6259, 0x625A, 0x625C, 0x625D, 0x625E,
+  0x625F, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265, 0x6268, 0x6271,
+  0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627A, 0x627B, 0x627D,
+  0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287, 0x6288, 0x628B,
+  0x628C, 0x628D, 0x628E, 0x628F, 0x6290, 0x6294, 0x6299, 0x629C,
+  0x629D, 0x629E, 0x62A3, 0x62A6, 0x62A7, 0x62A9, 0x62AA, 0x62AD,
+  0x62AE, 0x62AF, 0x62B0, 0x62B2, 0x62B3, 0x62B4, 0x62B6, 0x62B7,
+  0x62B8, 0x62BA, 0x62BE, 0x62C0, 0x62C1, 0x62C3, 0x62CB, 0x62CF,
+  0x62D1, 0x62D5, 0x62DD, 0x62DE, 0x62E0, 0x62E1, 0x62E4, 0x62EA,
+  0x62EB, 0x62F0, 0x62F2, 0x62F5, 0x62F8, 0x62F9, 0x62FA, 0x62FB,
+  0x6300, 0x6303, 0x6304, 0x6305, 0x6306, 0x630A, 0x630B, 0x630C,
+  0x630D, 0x630F, 0x6310, 0x6312, 0x6313, 0x6314, 0x6315, 0x6317,
+plane 14        
+at 0x00
+  0x6318, 0x6319, 0x631C, 0x6326, 0x6327, 0x6329, 0x632C, 0x632D,
+  0x632E, 0x6330, 0x6331, 0x6333, 0x6334, 0x6335, 0x6336, 0x6337,
+  0x6338, 0x633B, 0x633C, 0x633E, 0x633F, 0x6340, 0x6341, 0x6344,
+  0x6347, 0x6348, 0x634A, 0x6351, 0x6352, 0x6353, 0x6354, 0x6356,
+  0x6357, 0x6358, 0x6359, 0x635A, 0x635B, 0x635C, 0x635D, 0x6360,
+  0x6364, 0x6365, 0x6366, 0x6368, 0x636A, 0x636B, 0x636C, 0x636F,
+  0x6370, 0x6372, 0x6373, 0x6374, 0x6375, 0x6378, 0x6379, 0x637C,
+  0x637D, 0x637E, 0x637F, 0x6381, 0x6383, 0x6384, 0x6385, 0x6386,
+  0x638B, 0x638D, 0x6391, 0x6393, 0x6394, 0x6395, 0x6397, 0x6399,
+  0x639A, 0x639B, 0x639C, 0x639D, 0x639E, 0x639F, 0x63A1, 0x63A4,
+  0x63A6, 0x63AB, 0x63AF, 0x63B1, 0x63B2, 0x63B5, 0x63B6, 0x63B9,
+  0x63BB, 0x63BD, 0x63BF, 0x63C0, 0x63C1, 0x63C2, 0x63C3, 0x63C5,
+  0x63C7, 0x63C8, 0x63CA, 0x63CB, 0x63CC, 0x63D1, 0x63D3, 0x63D4,
+  0x63D5, 0x63D7, 0x63D8, 0x63D9, 0x63DA, 0x63DB, 0x63DC, 0x63DD,
+  0x63DF, 0x63E2, 0x63E4, 0x63E5, 0x63E6, 0x63E7, 0x63E8, 0x63EB,
+  0x63EC, 0x63EE, 0x63EF, 0x63F0, 0x63F1, 0x63F3, 0x63F5, 0x63F7,
+  0x63F9, 0x63FA, 0x63FB, 0x63FC, 0x63FE, 0x6403, 0x6404, 0x6406,
+  0x6407, 0x6408, 0x6409, 0x640A, 0x640D, 0x640E, 0x6411, 0x6412,
+  0x6415, 0x6416, 0x6417, 0x6418, 0x6419, 0x641A, 0x641D, 0x641F,
+  0x6422, 0x6423, 0x6424, 0x6425, 0x6427, 0x6428, 0x6429, 0x642B,
+  0x642E, 0x642F, 0x6430, 0x6431, 0x6432, 0x6433, 0x6435, 0x6436,
+  0x6437, 0x6438, 0x6439, 0x643B, 0x643C, 0x643E, 0x6440, 0x6442,
+  0x6443, 0x6449, 0x644B, 0x644C, 0x644D, 0x644E, 0x644F, 0x6450,
+  0x6451, 0x6453, 0x6455, 0x6456, 0x6457, 0x6459, 0x645A, 0x645B,
+  0x645C, 0x645D, 0x645F, 0x6460, 0x6461, 0x6462, 0x6463, 0x6464,
+  0x6465, 0x6466, 0x6468, 0x646A, 0x646B, 0x646C, 0x646E, 0x646F,
+  0x6470, 0x6471, 0x6472, 0x6473, 0x6474, 0x6475, 0x6476, 0x6477,
+  0x647B, 0x647C, 0x647D, 0x647E, 0x647F, 0x6480, 0x6481, 0x6483,
+  0x6486, 0x6488, 0x6489, 0x648A, 0x648B, 0x648C, 0x648D, 0x648E,
+  0x648F, 0x6490, 0x6493, 0x6494, 0x6497, 0x6498, 0x649A, 0x649B,
+  0x649C, 0x649D, 0x649F, 0x64A0, 0x64A1, 0x64A2, 0x64A3, 0x64A5,
+  0x64A6, 0x64A7, 0x64A8, 0x64AA, 0x64AB, 0x64AF, 0x64B1, 0x64B2,
+plane 15        
+at 0x00
+  0x64B3, 0x64B4, 0x64B6, 0x64B9, 0x64BB, 0x64BD, 0x64BE, 0x64BF,
+  0x64C1, 0x64C3, 0x64C4, 0x64C6, 0x64C7, 0x64C8, 0x64C9, 0x64CA,
+  0x64CB, 0x64CC, 0x64CF, 0x64D1, 0x64D3, 0x64D4, 0x64D5, 0x64D6,
+  0x64D9, 0x64DA, 0x64DB, 0x64DC, 0x64DD, 0x64DF, 0x64E0, 0x64E1,
+  0x64E3, 0x64E5, 0x64E7, 0x64E8, 0x64E9, 0x64EA, 0x64EB, 0x64EC,
+  0x64ED, 0x64EE, 0x64EF, 0x64F0, 0x64F1, 0x64F2, 0x64F3, 0x64F4,
+  0x64F5, 0x64F6, 0x64F7, 0x64F8, 0x64F9, 0x64FA, 0x64FB, 0x64FC,
+  0x64FD, 0x64FE, 0x64FF, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505,
+  0x6506, 0x6507, 0x6508, 0x650A, 0x650B, 0x650C, 0x650D, 0x650E,
+  0x650F, 0x6510, 0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517,
+  0x6519, 0x651A, 0x651B, 0x651C, 0x651D, 0x651E, 0x651F, 0x6520,
+  0x6521, 0x6522, 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529,
+  0x652A, 0x652C, 0x652D, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537,
+  0x653A, 0x653C, 0x653D, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544,
+  0x6546, 0x6547, 0x654A, 0x654B, 0x654D, 0x654E, 0x6550, 0x6552,
+  0x6553, 0x6554, 0x6557, 0x6558, 0x655A, 0x655C, 0x655F, 0x6560,
+  0x6561, 0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656A, 0x656D,
+  0x656E, 0x656F, 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579,
+  0x657A, 0x657B, 0x657C, 0x657D, 0x657E, 0x657F, 0x6580, 0x6581,
+  0x6582, 0x6583, 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658A,
+  0x658D, 0x658E, 0x658F, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598,
+  0x659A, 0x659D, 0x659E, 0x65A0, 0x65A2, 0x65A3, 0x65A6, 0x65A8,
+  0x65AA, 0x65AC, 0x65AE, 0x65B1, 0x65B2, 0x65B3, 0x65B4, 0x65B5,
+  0x65B6, 0x65B7, 0x65B8, 0x65BA, 0x65BB, 0x65BE, 0x65BF, 0x65C0,
+  0x65C2, 0x65C7, 0x65C8, 0x65C9, 0x65CA, 0x65CD, 0x65D0, 0x65D1,
+  0x65D3, 0x65D4, 0x65D5, 0x65D8, 0x65D9, 0x65DA, 0x65DB, 0x65DC,
+  0x65DD, 0x65DE, 0x65DF, 0x65E1, 0x65E3, 0x65E4, 0x65EA, 0x65EB,
+  0x65F2, 0x65F3, 0x65F4, 0x65F5, 0x65F8, 0x65F9, 0x65FB, 0x65FC,
+  0x65FD, 0x65FE, 0x65FF, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608,
+  0x6609, 0x660B, 0x660D, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617,
+  0x6618, 0x661A, 0x661B, 0x661C, 0x661E, 0x6621, 0x6622, 0x6623,
+  0x6624, 0x6626, 0x6629, 0x662A, 0x662B, 0x662C, 0x662E, 0x6630,
+plane 16        
+at 0x00
+  0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663A, 0x663B, 0x663D,
+  0x663F, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648,
+  0x6649, 0x664A, 0x664D, 0x664E, 0x6650, 0x6651, 0x6658, 0x6659,
+  0x665B, 0x665C, 0x665D, 0x665E, 0x6660, 0x6662, 0x6663, 0x6665,
+  0x6667, 0x6669, 0x666A, 0x666B, 0x666C, 0x666D, 0x6671, 0x6672,
+  0x6673, 0x6675, 0x6678, 0x6679, 0x667B, 0x667C, 0x667D, 0x667F,
+  0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689, 0x668A,
+  0x668B, 0x668D, 0x668E, 0x668F, 0x6690, 0x6692, 0x6693, 0x6694,
+  0x6695, 0x6698, 0x6699, 0x669A, 0x669B, 0x669C, 0x669E, 0x669F,
+  0x66A0, 0x66A1, 0x66A2, 0x66A3, 0x66A4, 0x66A5, 0x66A6, 0x66A9,
+  0x66AA, 0x66AB, 0x66AC, 0x66AD, 0x66AF, 0x66B0, 0x66B1, 0x66B2,
+  0x66B3, 0x66B5, 0x66B6, 0x66B7, 0x66B8, 0x66BA, 0x66BB, 0x66BC,
+  0x66BD, 0x66BF, 0x66C0, 0x66C1, 0x66C2, 0x66C3, 0x66C4, 0x66C5,
+  0x66C6, 0x66C7, 0x66C8, 0x66C9, 0x66CA, 0x66CB, 0x66CC, 0x66CD,
+  0x66CE, 0x66CF, 0x66D0, 0x66D1, 0x66D2, 0x66D3, 0x66D4, 0x66D5,
+  0x66D6, 0x66D7, 0x66D8, 0x66DA, 0x66DE, 0x66DF, 0x66E0, 0x66E1,
+  0x66E2, 0x66E3, 0x66E4, 0x66E5, 0x66E7, 0x66E8, 0x66EA, 0x66EB,
+  0x66EC, 0x66ED, 0x66EE, 0x66EF, 0x66F1, 0x66F5, 0x66F6, 0x66F8,
+  0x66FA, 0x66FB, 0x66FD, 0x6701, 0x6702, 0x6703, 0x6704, 0x6705,
+  0x6706, 0x6707, 0x670C, 0x670E, 0x670F, 0x6711, 0x6712, 0x6713,
+  0x6716, 0x6718, 0x6719, 0x671A, 0x671C, 0x671E, 0x6720, 0x6721,
+  0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729, 0x672E, 0x6730,
+  0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739, 0x673B, 0x673C,
+  0x673E, 0x673F, 0x6741, 0x6744, 0x6745, 0x6747, 0x674A, 0x674B,
+  0x674D, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758, 0x6759, 0x675A,
+  0x675B, 0x675D, 0x6762, 0x6763, 0x6764, 0x6766, 0x6767, 0x676B,
+  0x676C, 0x676E, 0x6771, 0x6774, 0x6776, 0x6778, 0x6779, 0x677A,
+  0x677B, 0x677D, 0x6780, 0x6782, 0x6783, 0x6785, 0x6786, 0x6788,
+  0x678A, 0x678C, 0x678D, 0x678E, 0x678F, 0x6791, 0x6792, 0x6793,
+  0x6794, 0x6796, 0x6799, 0x679B, 0x679F, 0x67A0, 0x67A1, 0x67A4,
+  0x67A6, 0x67A9, 0x67AC, 0x67AE, 0x67B1, 0x67B2, 0x67B4, 0x67B9,
+  0x67BA, 0x67BB, 0x67BC, 0x67BD, 0x67BE, 0x67BF, 0x67C0, 0x67C2,
+plane 17        
+at 0x00
+  0x67C5, 0x67C6, 0x67C7, 0x67C8, 0x67C9, 0x67CA, 0x67CB, 0x67CC,
+  0x67CD, 0x67CE, 0x67D5, 0x67D6, 0x67D7, 0x67DB, 0x67DF, 0x67E1,
+  0x67E3, 0x67E4, 0x67E6, 0x67E7, 0x67E8, 0x67EA, 0x67EB, 0x67ED,
+  0x67EE, 0x67F2, 0x67F5, 0x67F6, 0x67F7, 0x67F8, 0x67F9, 0x67FA,
+  0x67FB, 0x67FC, 0x67FE, 0x6801, 0x6802, 0x6803, 0x6804, 0x6806,
+  0x680D, 0x6810, 0x6812, 0x6814, 0x6815, 0x6818, 0x6819, 0x681A,
+  0x681B, 0x681C, 0x681E, 0x681F, 0x6820, 0x6822, 0x6823, 0x6824,
+  0x6825, 0x6826, 0x6827, 0x6828, 0x682B, 0x682C, 0x682D, 0x682E,
+  0x682F, 0x6830, 0x6831, 0x6834, 0x6835, 0x6836, 0x683A, 0x683B,
+  0x683F, 0x6847, 0x684B, 0x684D, 0x684F, 0x6852, 0x6856, 0x6857,
+  0x6858, 0x6859, 0x685A, 0x685B, 0x685C, 0x685D, 0x685E, 0x685F,
+  0x686A, 0x686C, 0x686D, 0x686E, 0x686F, 0x6870, 0x6871, 0x6872,
+  0x6873, 0x6875, 0x6878, 0x6879, 0x687A, 0x687B, 0x687C, 0x687D,
+  0x687E, 0x687F, 0x6880, 0x6882, 0x6884, 0x6887, 0x6888, 0x6889,
+  0x688A, 0x688B, 0x688C, 0x688D, 0x688E, 0x6890, 0x6891, 0x6892,
+  0x6894, 0x6895, 0x6896, 0x6898, 0x6899, 0x689A, 0x689B, 0x689C,
+  0x689D, 0x689E, 0x689F, 0x68A0, 0x68A1, 0x68A3, 0x68A4, 0x68A5,
+  0x68A9, 0x68AA, 0x68AB, 0x68AC, 0x68AE, 0x68B1, 0x68B2, 0x68B4,
+  0x68B6, 0x68B7, 0x68B8, 0x68B9, 0x68BA, 0x68BB, 0x68BC, 0x68BD,
+  0x68BE, 0x68BF, 0x68C1, 0x68C3, 0x68C4, 0x68C5, 0x68C6, 0x68C7,
+  0x68C8, 0x68CA, 0x68CC, 0x68CE, 0x68CF, 0x68D0, 0x68D1, 0x68D3,
+  0x68D4, 0x68D6, 0x68D7, 0x68D9, 0x68DB, 0x68DC, 0x68DD, 0x68DE,
+  0x68DF, 0x68E1, 0x68E2, 0x68E4, 0x68E5, 0x68E6, 0x68E7, 0x68E8,
+  0x68E9, 0x68EA, 0x68EB, 0x68EC, 0x68ED, 0x68EF, 0x68F2, 0x68F3,
+  0x68F4, 0x68F6, 0x68F7, 0x68F8, 0x68FB, 0x68FD, 0x68FE, 0x68FF,
+  0x6900, 0x6902, 0x6903, 0x6904, 0x6906, 0x6907, 0x6908, 0x6909,
+  0x690A, 0x690C, 0x690F, 0x6911, 0x6913, 0x6914, 0x6915, 0x6916,
+  0x6917, 0x6918, 0x6919, 0x691A, 0x691B, 0x691C, 0x691D, 0x691E,
+  0x6921, 0x6922, 0x6923, 0x6925, 0x6926, 0x6927, 0x6928, 0x6929,
+  0x692A, 0x692B, 0x692C, 0x692E, 0x692F, 0x6931, 0x6932, 0x6933,
+  0x6935, 0x6936, 0x6937, 0x6938, 0x693A, 0x693B, 0x693C, 0x693E,
+  0x6940, 0x6941, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, 0x6948,
+plane 18        
+at 0x00
+  0x6949, 0x694A, 0x694B, 0x694C, 0x694D, 0x694E, 0x694F, 0x6950,
+  0x6951, 0x6952, 0x6953, 0x6955, 0x6956, 0x6958, 0x6959, 0x695B,
+  0x695C, 0x695F, 0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968,
+  0x6969, 0x696A, 0x696C, 0x696D, 0x696F, 0x6970, 0x6972, 0x6973,
+  0x6974, 0x6975, 0x6976, 0x697A, 0x697B, 0x697D, 0x697E, 0x697F,
+  0x6981, 0x6983, 0x6985, 0x698A, 0x698B, 0x698C, 0x698E, 0x698F,
+  0x6990, 0x6991, 0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699A,
+  0x699D, 0x699E, 0x699F, 0x69A0, 0x69A1, 0x69A2, 0x69A3, 0x69A4,
+  0x69A5, 0x69A6, 0x69A9, 0x69AA, 0x69AC, 0x69AE, 0x69AF, 0x69B0,
+  0x69B2, 0x69B3, 0x69B5, 0x69B6, 0x69B8, 0x69B9, 0x69BA, 0x69BC,
+  0x69BD, 0x69BE, 0x69BF, 0x69C0, 0x69C2, 0x69C3, 0x69C4, 0x69C5,
+  0x69C6, 0x69C7, 0x69C8, 0x69C9, 0x69CB, 0x69CD, 0x69CF, 0x69D1,
+  0x69D2, 0x69D3, 0x69D5, 0x69D6, 0x69D7, 0x69D8, 0x69D9, 0x69DA,
+  0x69DC, 0x69DD, 0x69DE, 0x69E1, 0x69E2, 0x69E3, 0x69E4, 0x69E5,
+  0x69E6, 0x69E7, 0x69E8, 0x69E9, 0x69EA, 0x69EB, 0x69EC, 0x69EE,
+  0x69EF, 0x69F0, 0x69F1, 0x69F3, 0x69F4, 0x69F5, 0x69F6, 0x69F7,
+  0x69F8, 0x69F9, 0x69FA, 0x69FB, 0x69FC, 0x69FE, 0x6A00, 0x6A01,
+  0x6A02, 0x6A03, 0x6A04, 0x6A05, 0x6A06, 0x6A07, 0x6A08, 0x6A09,
+  0x6A0B, 0x6A0C, 0x6A0D, 0x6A0E, 0x6A0F, 0x6A10, 0x6A11, 0x6A12,
+  0x6A13, 0x6A14, 0x6A15, 0x6A16, 0x6A19, 0x6A1A, 0x6A1B, 0x6A1C,
+  0x6A1D, 0x6A1E, 0x6A20, 0x6A22, 0x6A23, 0x6A24, 0x6A25, 0x6A26,
+  0x6A27, 0x6A29, 0x6A2B, 0x6A2C, 0x6A2D, 0x6A2E, 0x6A30, 0x6A32,
+  0x6A33, 0x6A34, 0x6A36, 0x6A37, 0x6A38, 0x6A39, 0x6A3A, 0x6A3B,
+  0x6A3C, 0x6A3F, 0x6A40, 0x6A41, 0x6A42, 0x6A43, 0x6A45, 0x6A46,
+  0x6A48, 0x6A49, 0x6A4A, 0x6A4B, 0x6A4C, 0x6A4D, 0x6A4E, 0x6A4F,
+  0x6A51, 0x6A52, 0x6A53, 0x6A54, 0x6A55, 0x6A56, 0x6A57, 0x6A5A,
+  0x6A5C, 0x6A5D, 0x6A5E, 0x6A5F, 0x6A60, 0x6A62, 0x6A63, 0x6A64,
+  0x6A66, 0x6A67, 0x6A68, 0x6A69, 0x6A6A, 0x6A6B, 0x6A6C, 0x6A6D,
+  0x6A6E, 0x6A6F, 0x6A70, 0x6A72, 0x6A73, 0x6A74, 0x6A75, 0x6A76,
+  0x6A77, 0x6A78, 0x6A7A, 0x6A7B, 0x6A7D, 0x6A7E, 0x6A7F, 0x6A81,
+  0x6A82, 0x6A83, 0x6A85, 0x6A86, 0x6A87, 0x6A88, 0x6A89, 0x6A8A,
+  0x6A8B, 0x6A8C, 0x6A8D, 0x6A8F, 0x6A92, 0x6A93, 0x6A94, 0x6A95,
+plane 19        
+at 0x00
+  0x6A96, 0x6A98, 0x6A99, 0x6A9A, 0x6A9B, 0x6A9C, 0x6A9D, 0x6A9E,
+  0x6A9F, 0x6AA1, 0x6AA2, 0x6AA3, 0x6AA4, 0x6AA5, 0x6AA6, 0x6AA7,
+  0x6AA8, 0x6AAA, 0x6AAD, 0x6AAE, 0x6AAF, 0x6AB0, 0x6AB1, 0x6AB2,
+  0x6AB3, 0x6AB4, 0x6AB5, 0x6AB6, 0x6AB7, 0x6AB8, 0x6AB9, 0x6ABA,
+  0x6ABB, 0x6ABC, 0x6ABD, 0x6ABE, 0x6ABF, 0x6AC0, 0x6AC1, 0x6AC2,
+  0x6AC3, 0x6AC4, 0x6AC5, 0x6AC6, 0x6AC7, 0x6AC8, 0x6AC9, 0x6ACA,
+  0x6ACB, 0x6ACC, 0x6ACD, 0x6ACE, 0x6ACF, 0x6AD0, 0x6AD1, 0x6AD2,
+  0x6AD3, 0x6AD4, 0x6AD5, 0x6AD6, 0x6AD7, 0x6AD8, 0x6AD9, 0x6ADA,
+  0x6ADB, 0x6ADC, 0x6ADD, 0x6ADE, 0x6ADF, 0x6AE0, 0x6AE1, 0x6AE2,
+  0x6AE3, 0x6AE4, 0x6AE5, 0x6AE6, 0x6AE7, 0x6AE8, 0x6AE9, 0x6AEA,
+  0x6AEB, 0x6AEC, 0x6AED, 0x6AEE, 0x6AEF, 0x6AF0, 0x6AF1, 0x6AF2,
+  0x6AF3, 0x6AF4, 0x6AF5, 0x6AF6, 0x6AF7, 0x6AF8, 0x6AF9, 0x6AFA,
+  0x6AFB, 0x6AFC, 0x6AFD, 0x6AFE, 0x6AFF, 0x6B00, 0x6B01, 0x6B02,
+  0x6B03, 0x6B04, 0x6B05, 0x6B06, 0x6B07, 0x6B08, 0x6B09, 0x6B0A,
+  0x6B0B, 0x6B0C, 0x6B0D, 0x6B0E, 0x6B0F, 0x6B10, 0x6B11, 0x6B12,
+  0x6B13, 0x6B14, 0x6B15, 0x6B16, 0x6B17, 0x6B18, 0x6B19, 0x6B1A,
+  0x6B1B, 0x6B1C, 0x6B1D, 0x6B1E, 0x6B1F, 0x6B25, 0x6B26, 0x6B28,
+  0x6B29, 0x6B2A, 0x6B2B, 0x6B2C, 0x6B2D, 0x6B2E, 0x6B2F, 0x6B30,
+  0x6B31, 0x6B33, 0x6B34, 0x6B35, 0x6B36, 0x6B38, 0x6B3B, 0x6B3C,
+  0x6B3D, 0x6B3F, 0x6B40, 0x6B41, 0x6B42, 0x6B44, 0x6B45, 0x6B48,
+  0x6B4A, 0x6B4B, 0x6B4D, 0x6B4E, 0x6B4F, 0x6B50, 0x6B51, 0x6B52,
+  0x6B53, 0x6B54, 0x6B55, 0x6B56, 0x6B57, 0x6B58, 0x6B5A, 0x6B5B,
+  0x6B5C, 0x6B5D, 0x6B5E, 0x6B5F, 0x6B60, 0x6B61, 0x6B68, 0x6B69,
+  0x6B6B, 0x6B6C, 0x6B6D, 0x6B6E, 0x6B6F, 0x6B70, 0x6B71, 0x6B72,
+  0x6B73, 0x6B74, 0x6B75, 0x6B76, 0x6B77, 0x6B78, 0x6B7A, 0x6B7D,
+  0x6B7E, 0x6B7F, 0x6B80, 0x6B85, 0x6B88, 0x6B8C, 0x6B8E, 0x6B8F,
+  0x6B90, 0x6B91, 0x6B94, 0x6B95, 0x6B97, 0x6B98, 0x6B99, 0x6B9C,
+  0x6B9D, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BA2, 0x6BA3, 0x6BA4, 0x6BA5,
+  0x6BA6, 0x6BA7, 0x6BA8, 0x6BA9, 0x6BAB, 0x6BAC, 0x6BAD, 0x6BAE,
+  0x6BAF, 0x6BB0, 0x6BB1, 0x6BB2, 0x6BB6, 0x6BB8, 0x6BB9, 0x6BBA,
+  0x6BBB, 0x6BBC, 0x6BBD, 0x6BBE, 0x6BC0, 0x6BC3, 0x6BC4, 0x6BC6,
+  0x6BC7, 0x6BC8, 0x6BC9, 0x6BCA, 0x6BCC, 0x6BCE, 0x6BD0, 0x6BD1,
+plane 20        
+at 0x00
+  0x6BD8, 0x6BDA, 0x6BDC, 0x6BDD, 0x6BDE, 0x6BDF, 0x6BE0, 0x6BE2,
+  0x6BE3, 0x6BE4, 0x6BE5, 0x6BE6, 0x6BE7, 0x6BE8, 0x6BE9, 0x6BEC,
+  0x6BED, 0x6BEE, 0x6BF0, 0x6BF1, 0x6BF2, 0x6BF4, 0x6BF6, 0x6BF7,
+  0x6BF8, 0x6BFA, 0x6BFB, 0x6BFC, 0x6BFE, 0x6BFF, 0x6C00, 0x6C01,
+  0x6C02, 0x6C03, 0x6C04, 0x6C08, 0x6C09, 0x6C0A, 0x6C0B, 0x6C0C,
+  0x6C0E, 0x6C12, 0x6C17, 0x6C1C, 0x6C1D, 0x6C1E, 0x6C20, 0x6C23,
+  0x6C25, 0x6C2B, 0x6C2C, 0x6C2D, 0x6C31, 0x6C33, 0x6C36, 0x6C37,
+  0x6C39, 0x6C3A, 0x6C3B, 0x6C3C, 0x6C3E, 0x6C3F, 0x6C43, 0x6C44,
+  0x6C45, 0x6C48, 0x6C4B, 0x6C4C, 0x6C4D, 0x6C4E, 0x6C4F, 0x6C51,
+  0x6C52, 0x6C53, 0x6C56, 0x6C58, 0x6C59, 0x6C5A, 0x6C62, 0x6C63,
+  0x6C65, 0x6C66, 0x6C67, 0x6C6B, 0x6C6C, 0x6C6D, 0x6C6E, 0x6C6F,
+  0x6C71, 0x6C73, 0x6C75, 0x6C77, 0x6C78, 0x6C7A, 0x6C7B, 0x6C7C,
+  0x6C7F, 0x6C80, 0x6C84, 0x6C87, 0x6C8A, 0x6C8B, 0x6C8D, 0x6C8E,
+  0x6C91, 0x6C92, 0x6C95, 0x6C96, 0x6C97, 0x6C98, 0x6C9A, 0x6C9C,
+  0x6C9D, 0x6C9E, 0x6CA0, 0x6CA2, 0x6CA8, 0x6CAC, 0x6CAF, 0x6CB0,
+  0x6CB4, 0x6CB5, 0x6CB6, 0x6CB7, 0x6CBA, 0x6CC0, 0x6CC1, 0x6CC2,
+  0x6CC3, 0x6CC6, 0x6CC7, 0x6CC8, 0x6CCB, 0x6CCD, 0x6CCE, 0x6CCF,
+  0x6CD1, 0x6CD2, 0x6CD8, 0x6CD9, 0x6CDA, 0x6CDC, 0x6CDD, 0x6CDF,
+  0x6CE4, 0x6CE6, 0x6CE7, 0x6CE9, 0x6CEC, 0x6CED, 0x6CF2, 0x6CF4,
+  0x6CF9, 0x6CFF, 0x6D00, 0x6D02, 0x6D03, 0x6D05, 0x6D06, 0x6D08,
+  0x6D09, 0x6D0A, 0x6D0D, 0x6D0F, 0x6D10, 0x6D11, 0x6D13, 0x6D14,
+  0x6D15, 0x6D16, 0x6D18, 0x6D1C, 0x6D1D, 0x6D1F, 0x6D20, 0x6D21,
+  0x6D22, 0x6D23, 0x6D24, 0x6D26, 0x6D28, 0x6D29, 0x6D2C, 0x6D2D,
+  0x6D2F, 0x6D30, 0x6D34, 0x6D36, 0x6D37, 0x6D38, 0x6D3A, 0x6D3F,
+  0x6D40, 0x6D42, 0x6D44, 0x6D49, 0x6D4C, 0x6D50, 0x6D55, 0x6D56,
+  0x6D57, 0x6D58, 0x6D5B, 0x6D5D, 0x6D5F, 0x6D61, 0x6D62, 0x6D64,
+  0x6D65, 0x6D67, 0x6D68, 0x6D6B, 0x6D6C, 0x6D6D, 0x6D70, 0x6D71,
+  0x6D72, 0x6D73, 0x6D75, 0x6D76, 0x6D79, 0x6D7A, 0x6D7B, 0x6D7D,
+  0x6D7E, 0x6D7F, 0x6D80, 0x6D81, 0x6D83, 0x6D84, 0x6D86, 0x6D87,
+  0x6D8A, 0x6D8B, 0x6D8D, 0x6D8F, 0x6D90, 0x6D92, 0x6D96, 0x6D97,
+  0x6D98, 0x6D99, 0x6D9A, 0x6D9C, 0x6DA2, 0x6DA5, 0x6DAC, 0x6DAD,
+  0x6DB0, 0x6DB1, 0x6DB3, 0x6DB4, 0x6DB6, 0x6DB7, 0x6DB9, 0x6DBA,
+plane 21        
+at 0x00
+  0x6DBB, 0x6DBC, 0x6DBD, 0x6DBE, 0x6DC1, 0x6DC2, 0x6DC3, 0x6DC8,
+  0x6DC9, 0x6DCA, 0x6DCD, 0x6DCE, 0x6DCF, 0x6DD0, 0x6DD2, 0x6DD3,
+  0x6DD4, 0x6DD5, 0x6DD7, 0x6DDA, 0x6DDB, 0x6DDC, 0x6DDF, 0x6DE2,
+  0x6DE3, 0x6DE5, 0x6DE7, 0x6DE8, 0x6DE9, 0x6DEA, 0x6DED, 0x6DEF,
+  0x6DF0, 0x6DF2, 0x6DF4, 0x6DF5, 0x6DF6, 0x6DF8, 0x6DFA, 0x6DFD,
+  0x6DFE, 0x6DFF, 0x6E00, 0x6E01, 0x6E02, 0x6E03, 0x6E04, 0x6E06,
+  0x6E07, 0x6E08, 0x6E09, 0x6E0B, 0x6E0F, 0x6E12, 0x6E13, 0x6E15,
+  0x6E18, 0x6E19, 0x6E1B, 0x6E1C, 0x6E1E, 0x6E1F, 0x6E22, 0x6E26,
+  0x6E27, 0x6E28, 0x6E2A, 0x6E2C, 0x6E2E, 0x6E30, 0x6E31, 0x6E33,
+  0x6E35, 0x6E36, 0x6E37, 0x6E39, 0x6E3B, 0x6E3C, 0x6E3D, 0x6E3E,
+  0x6E3F, 0x6E40, 0x6E41, 0x6E42, 0x6E45, 0x6E46, 0x6E47, 0x6E48,
+  0x6E49, 0x6E4A, 0x6E4B, 0x6E4C, 0x6E4F, 0x6E50, 0x6E51, 0x6E52,
+  0x6E55, 0x6E57, 0x6E59, 0x6E5A, 0x6E5C, 0x6E5D, 0x6E5E, 0x6E60,
+  0x6E61, 0x6E62, 0x6E63, 0x6E64, 0x6E65, 0x6E66, 0x6E67, 0x6E68,
+  0x6E69, 0x6E6A, 0x6E6C, 0x6E6D, 0x6E6F, 0x6E70, 0x6E71, 0x6E72,
+  0x6E73, 0x6E74, 0x6E75, 0x6E76, 0x6E77, 0x6E78, 0x6E79, 0x6E7A,
+  0x6E7B, 0x6E7C, 0x6E7D, 0x6E80, 0x6E81, 0x6E82, 0x6E84, 0x6E87,
+  0x6E88, 0x6E8A, 0x6E8B, 0x6E8C, 0x6E8D, 0x6E8E, 0x6E91, 0x6E92,
+  0x6E93, 0x6E94, 0x6E95, 0x6E96, 0x6E97, 0x6E99, 0x6E9A, 0x6E9B,
+  0x6E9D, 0x6E9E, 0x6EA0, 0x6EA1, 0x6EA3, 0x6EA4, 0x6EA6, 0x6EA8,
+  0x6EA9, 0x6EAB, 0x6EAC, 0x6EAD, 0x6EAE, 0x6EB0, 0x6EB3, 0x6EB5,
+  0x6EB8, 0x6EB9, 0x6EBC, 0x6EBE, 0x6EBF, 0x6EC0, 0x6EC3, 0x6EC4,
+  0x6EC5, 0x6EC6, 0x6EC8, 0x6EC9, 0x6ECA, 0x6ECC, 0x6ECD, 0x6ECE,
+  0x6ED0, 0x6ED2, 0x6ED6, 0x6ED8, 0x6ED9, 0x6EDB, 0x6EDC, 0x6EDD,
+  0x6EE3, 0x6EE7, 0x6EEA, 0x6EEB, 0x6EEC, 0x6EED, 0x6EEE, 0x6EEF,
+  0x6EF0, 0x6EF1, 0x6EF2, 0x6EF3, 0x6EF5, 0x6EF6, 0x6EF7, 0x6EF8,
+  0x6EFA, 0x6EFB, 0x6EFC, 0x6EFD, 0x6EFE, 0x6EFF, 0x6F00, 0x6F01,
+  0x6F03, 0x6F04, 0x6F05, 0x6F07, 0x6F08, 0x6F0A, 0x6F0B, 0x6F0C,
+  0x6F0D, 0x6F0E, 0x6F10, 0x6F11, 0x6F12, 0x6F16, 0x6F17, 0x6F18,
+  0x6F19, 0x6F1A, 0x6F1B, 0x6F1C, 0x6F1D, 0x6F1E, 0x6F1F, 0x6F21,
+  0x6F22, 0x6F23, 0x6F25, 0x6F26, 0x6F27, 0x6F28, 0x6F2C, 0x6F2E,
+  0x6F30, 0x6F32, 0x6F34, 0x6F35, 0x6F37, 0x6F38, 0x6F39, 0x6F3A,
+plane 22        
+at 0x00
+  0x6F3B, 0x6F3C, 0x6F3D, 0x6F3F, 0x6F40, 0x6F41, 0x6F42, 0x6F43,
+  0x6F44, 0x6F45, 0x6F48, 0x6F49, 0x6F4A, 0x6F4C, 0x6F4E, 0x6F4F,
+  0x6F50, 0x6F51, 0x6F52, 0x6F53, 0x6F54, 0x6F55, 0x6F56, 0x6F57,
+  0x6F59, 0x6F5A, 0x6F5B, 0x6F5D, 0x6F5F, 0x6F60, 0x6F61, 0x6F63,
+  0x6F64, 0x6F65, 0x6F67, 0x6F68, 0x6F69, 0x6F6A, 0x6F6B, 0x6F6C,
+  0x6F6F, 0x6F70, 0x6F71, 0x6F73, 0x6F75, 0x6F76, 0x6F77, 0x6F79,
+  0x6F7B, 0x6F7D, 0x6F7E, 0x6F7F, 0x6F80, 0x6F81, 0x6F82, 0x6F83,
+  0x6F85, 0x6F86, 0x6F87, 0x6F8A, 0x6F8B, 0x6F8F, 0x6F90, 0x6F91,
+  0x6F92, 0x6F93, 0x6F94, 0x6F95, 0x6F96, 0x6F97, 0x6F98, 0x6F99,
+  0x6F9A, 0x6F9B, 0x6F9D, 0x6F9E, 0x6F9F, 0x6FA0, 0x6FA2, 0x6FA3,
+  0x6FA4, 0x6FA5, 0x6FA6, 0x6FA8, 0x6FA9, 0x6FAA, 0x6FAB, 0x6FAC,
+  0x6FAD, 0x6FAE, 0x6FAF, 0x6FB0, 0x6FB1, 0x6FB2, 0x6FB4, 0x6FB5,
+  0x6FB7, 0x6FB8, 0x6FBA, 0x6FBB, 0x6FBC, 0x6FBD, 0x6FBE, 0x6FBF,
+  0x6FC1, 0x6FC3, 0x6FC4, 0x6FC5, 0x6FC6, 0x6FC7, 0x6FC8, 0x6FCA,
+  0x6FCB, 0x6FCC, 0x6FCD, 0x6FCE, 0x6FCF, 0x6FD0, 0x6FD3, 0x6FD4,
+  0x6FD5, 0x6FD6, 0x6FD7, 0x6FD8, 0x6FD9, 0x6FDA, 0x6FDB, 0x6FDC,
+  0x6FDD, 0x6FDF, 0x6FE2, 0x6FE3, 0x6FE4, 0x6FE5, 0x6FE6, 0x6FE7,
+  0x6FE8, 0x6FE9, 0x6FEA, 0x6FEB, 0x6FEC, 0x6FED, 0x6FF0, 0x6FF1,
+  0x6FF2, 0x6FF3, 0x6FF4, 0x6FF5, 0x6FF6, 0x6FF7, 0x6FF8, 0x6FF9,
+  0x6FFA, 0x6FFB, 0x6FFC, 0x6FFD, 0x6FFE, 0x6FFF, 0x7000, 0x7001,
+  0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007, 0x7008, 0x7009,
+  0x700A, 0x700B, 0x700C, 0x700D, 0x700E, 0x700F, 0x7010, 0x7012,
+  0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018, 0x7019, 0x701C,
+  0x701D, 0x701E, 0x701F, 0x7020, 0x7021, 0x7022, 0x7024, 0x7025,
+  0x7026, 0x7027, 0x7028, 0x7029, 0x702A, 0x702B, 0x702C, 0x702D,
+  0x702E, 0x702F, 0x7030, 0x7031, 0x7032, 0x7033, 0x7034, 0x7036,
+  0x7037, 0x7038, 0x703A, 0x703B, 0x703C, 0x703D, 0x703E, 0x703F,
+  0x7040, 0x7041, 0x7042, 0x7043, 0x7044, 0x7045, 0x7046, 0x7047,
+  0x7048, 0x7049, 0x704A, 0x704B, 0x704D, 0x704E, 0x7050, 0x7051,
+  0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7057, 0x7058, 0x7059,
+  0x705A, 0x705B, 0x705C, 0x705D, 0x705F, 0x7060, 0x7061, 0x7062,
+  0x7063, 0x7064, 0x7065, 0x7066, 0x7067, 0x7068, 0x7069, 0x706A,
+plane 23        
+at 0x00
+  0x706E, 0x7071, 0x7072, 0x7073, 0x7074, 0x7077, 0x7079, 0x707A,
+  0x707B, 0x707D, 0x7081, 0x7082, 0x7083, 0x7084, 0x7086, 0x7087,
+  0x7088, 0x708B, 0x708C, 0x708D, 0x708F, 0x7090, 0x7091, 0x7093,
+  0x7097, 0x7098, 0x709A, 0x709B, 0x709E, 0x709F, 0x70A0, 0x70A1,
+  0x70A2, 0x70A3, 0x70A4, 0x70A5, 0x70A6, 0x70A7, 0x70A8, 0x70A9,
+  0x70AA, 0x70B0, 0x70B2, 0x70B4, 0x70B5, 0x70B6, 0x70BA, 0x70BE,
+  0x70BF, 0x70C4, 0x70C5, 0x70C6, 0x70C7, 0x70C9, 0x70CB, 0x70CC,
+  0x70CD, 0x70CE, 0x70CF, 0x70D0, 0x70D1, 0x70D2, 0x70D3, 0x70D4,
+  0x70D5, 0x70D6, 0x70D7, 0x70DA, 0x70DC, 0x70DD, 0x70DE, 0x70E0,
+  0x70E1, 0x70E2, 0x70E3, 0x70E5, 0x70EA, 0x70EE, 0x70F0, 0x70F1,
+  0x70F2, 0x70F3, 0x70F4, 0x70F5, 0x70F6, 0x70F8, 0x70FA, 0x70FB,
+  0x70FC, 0x70FE, 0x70FF, 0x7100, 0x7101, 0x7102, 0x7103, 0x7104,
+  0x7105, 0x7106, 0x7107, 0x7108, 0x710B, 0x710C, 0x710D, 0x710E,
+  0x710F, 0x7111, 0x7112, 0x7114, 0x7117, 0x711B, 0x711C, 0x711D,
+  0x711E, 0x711F, 0x7120, 0x7121, 0x7122, 0x7123, 0x7124, 0x7125,
+  0x7127, 0x7128, 0x7129, 0x712A, 0x712B, 0x712C, 0x712D, 0x712E,
+  0x7132, 0x7133, 0x7134, 0x7135, 0x7137, 0x7138, 0x7139, 0x713A,
+  0x713B, 0x713C, 0x713D, 0x713E, 0x713F, 0x7140, 0x7141, 0x7142,
+  0x7143, 0x7144, 0x7146, 0x7147, 0x7148, 0x7149, 0x714B, 0x714D,
+  0x714F, 0x7150, 0x7151, 0x7152, 0x7153, 0x7154, 0x7155, 0x7156,
+  0x7157, 0x7158, 0x7159, 0x715A, 0x715B, 0x715D, 0x715F, 0x7160,
+  0x7161, 0x7162, 0x7163, 0x7165, 0x7169, 0x716A, 0x716B, 0x716C,
+  0x716D, 0x716F, 0x7170, 0x7171, 0x7174, 0x7175, 0x7176, 0x7177,
+  0x7179, 0x717B, 0x717C, 0x717E, 0x717F, 0x7180, 0x7181, 0x7182,
+  0x7183, 0x7185, 0x7186, 0x7187, 0x7188, 0x7189, 0x718B, 0x718C,
+  0x718D, 0x718E, 0x7190, 0x7191, 0x7192, 0x7193, 0x7195, 0x7196,
+  0x7197, 0x719A, 0x719B, 0x719C, 0x719D, 0x719E, 0x71A1, 0x71A2,
+  0x71A3, 0x71A4, 0x71A5, 0x71A6, 0x71A7, 0x71A9, 0x71AA, 0x71AB,
+  0x71AD, 0x71AE, 0x71AF, 0x71B0, 0x71B1, 0x71B2, 0x71B4, 0x71B6,
+  0x71B7, 0x71B8, 0x71BA, 0x71BB, 0x71BC, 0x71BD, 0x71BE, 0x71BF,
+  0x71C0, 0x71C1, 0x71C2, 0x71C4, 0x71C5, 0x71C6, 0x71C7, 0x71C8,
+  0x71C9, 0x71CA, 0x71CB, 0x71CC, 0x71CD, 0x71CF, 0x71D0, 0x71D1,
+plane 24        
+at 0x00
+  0x71D2, 0x71D3, 0x71D6, 0x71D7, 0x71D8, 0x71D9, 0x71DA, 0x71DB,
+  0x71DC, 0x71DD, 0x71DE, 0x71DF, 0x71E1, 0x71E2, 0x71E3, 0x71E4,
+  0x71E6, 0x71E8, 0x71E9, 0x71EA, 0x71EB, 0x71EC, 0x71ED, 0x71EF,
+  0x71F0, 0x71F1, 0x71F2, 0x71F3, 0x71F4, 0x71F5, 0x71F6, 0x71F7,
+  0x71F8, 0x71FA, 0x71FB, 0x71FC, 0x71FD, 0x71FE, 0x71FF, 0x7200,
+  0x7201, 0x7202, 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209,
+  0x720A, 0x720B, 0x720C, 0x720D, 0x720E, 0x720F, 0x7210, 0x7211,
+  0x7212, 0x7213, 0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219,
+  0x721A, 0x721B, 0x721C, 0x721E, 0x721F, 0x7220, 0x7221, 0x7222,
+  0x7223, 0x7224, 0x7225, 0x7226, 0x7227, 0x7229, 0x722B, 0x722D,
+  0x722E, 0x722F, 0x7232, 0x7233, 0x7234, 0x723A, 0x723C, 0x723E,
+  0x7240, 0x7241, 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249,
+  0x724A, 0x724B, 0x724E, 0x724F, 0x7250, 0x7251, 0x7253, 0x7254,
+  0x7255, 0x7257, 0x7258, 0x725A, 0x725C, 0x725E, 0x7260, 0x7263,
+  0x7264, 0x7265, 0x7268, 0x726A, 0x726B, 0x726C, 0x726D, 0x7270,
+  0x7271, 0x7273, 0x7274, 0x7276, 0x7277, 0x7278, 0x727B, 0x727C,
+  0x727D, 0x7282, 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289,
+  0x728C, 0x728E, 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296,
+  0x7297, 0x7298, 0x7299, 0x729A, 0x729B, 0x729C, 0x729D, 0x729E,
+  0x72A0, 0x72A1, 0x72A2, 0x72A3, 0x72A4, 0x72A5, 0x72A6, 0x72A7,
+  0x72A8, 0x72A9, 0x72AA, 0x72AB, 0x72AE, 0x72B1, 0x72B2, 0x72B3,
+  0x72B5, 0x72BA, 0x72BB, 0x72BC, 0x72BD, 0x72BE, 0x72BF, 0x72C0,
+  0x72C5, 0x72C6, 0x72C7, 0x72C9, 0x72CA, 0x72CB, 0x72CC, 0x72CF,
+  0x72D1, 0x72D3, 0x72D4, 0x72D5, 0x72D6, 0x72D8, 0x72DA, 0x72DB,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 25        
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+  0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, 0x3003,
+  0x3005, 0x2014, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019, 0x201C,
+  0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C,
+  0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, 0x3011, 0x00B1,
+  0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, 0x222A,
+  0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 0x2312,
+  0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 0x221D,
+  0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 0x2234,
+  0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 0x00A4,
+  0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, 0x25CB,
+  0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2,
+  0x203B, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0, 0x2170, 0x2171,
+  0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179,
+       0,      0,      0,      0,      0,      0, 0x2488, 0x2489,
+  0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F, 0x2490, 0x2491,
+  0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, 0x2499,
+plane 26        
+at 0x00
+  0x249A, 0x249B, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479,
+  0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F, 0x2480, 0x2481,
+  0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2460, 0x2461,
+  0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
+       0,      0, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225,
+  0x3226, 0x3227, 0x3228, 0x3229,      0,      0, 0x2160, 0x2161,
+  0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169,
+  0x216A, 0x216B,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0, 0xFF01, 0xFF02, 0xFF03, 0xFFE5,
+  0xFF05, 0xFF06, 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C,
+  0xFF0D, 0xFF0E, 0xFF0F, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14,
+  0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C,
+  0xFF1D, 0xFF1E, 0xFF1F, 0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24,
+  0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C,
+  0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34,
+  0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C,
+  0xFF3D, 0xFF3E, 0xFF3F, 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44,
+  0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C,
+  0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54,
+  0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C,
+  0xFF5D, 0xFFE3,      0,      0,      0,      0,      0,      0,
+plane 27        
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
+  0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E,
+  0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
+  0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E,
+  0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066,
+  0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E,
+  0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
+  0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E,
+  0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086,
+  0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E,
+  0x308F, 0x3090, 0x3091, 0x3092, 0x3093,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 28        
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+  0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8,
+  0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0,
+  0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8,
+  0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0,
+  0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8,
+  0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0,
+  0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8,
+  0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0,
+  0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8,
+  0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0,
+  0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0, 0x0391, 0x0392,
+  0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A,
+  0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3,
+  0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9,      0,      0,
+       0,      0,      0,      0,      0,      0, 0x03B1, 0x03B2,
+  0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA,
+plane 29        
+at 0x00
+  0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3,
+  0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9,      0,      0,
+       0,      0,      0,      0,      0, 0xFE35, 0xFE36, 0xFE39,
+  0xFE3A, 0xFE3F, 0xFE40, 0xFE3D, 0xFE3E, 0xFE41, 0xFE42, 0xFE43,
+  0xFE44,      0,      0, 0xFE3B, 0xFE3C, 0xFE37, 0xFE38, 0xFE31,
+       0, 0xFE33, 0xFE34,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0, 0x0410, 0x0411, 0x0412, 0x0413,
+  0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A,
+  0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422,
+  0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A,
+  0x042B, 0x042C, 0x042D, 0x042E, 0x042F,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0, 0x0430, 0x0431, 0x0432, 0x0433,
+  0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A,
+  0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442,
+  0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A,
+  0x044B, 0x044C, 0x044D, 0x044E, 0x044F,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0, 0x02CA, 0x02CB, 0x02D9, 0x2013, 0x2015, 0x2025,
+  0x2035, 0x2105, 0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215,
+plane 30        
+at 0x00
+  0x221F, 0x2223, 0x2252, 0x2266, 0x2267, 0x22BF, 0x2550, 0x2551,
+  0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559,
+  0x255A, 0x255B, 0x255C, 0x255D, 0x255E, 0x255F, 0x2560, 0x2561,
+  0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569,
+  0x256A, 0x256B, 0x256C, 0x256D, 0x256E, 0x256F, 0x2570, 0x2571,
+  0x2572, 0x2573, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
+  0x2587, 0x2588, 0x2589, 0x258A, 0x258B, 0x258C, 0x258D, 0x258E,
+  0x258F, 0x2593, 0x2594, 0x2595, 0x25BC, 0x25BD, 0x25E2, 0x25E3,
+  0x25E4, 0x25E5, 0x2609, 0x2295, 0x3012, 0x301D, 0x301E,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9,
+  0x011B, 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3,
+  0x01D2, 0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8,
+  0x01DA, 0x01DC, 0x00FC, 0x00EA, 0x0251, 0xE7C7, 0x0144, 0x0148,
+  0xE7C8, 0x0261,      0,      0,      0,      0, 0x3105, 0x3106,
+  0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E,
+  0x310F, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116,
+  0x3117, 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E,
+  0x311F, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126,
+  0x3127, 0x3128, 0x3129,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+  0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028,
+  0x3029, 0x32A3, 0x338E, 0x338F, 0x339C, 0x339D, 0x339E, 0x33A1,
+  0x33C4, 0x33CE, 0x33D1, 0x33D2, 0x33D5, 0xFE30, 0xFFE2, 0xFFE4,
+       0, 0x2121, 0x3231,      0, 0x2010,      0,      0,      0,
+  0x30FC, 0x309B, 0x309C, 0x30FD, 0x30FE, 0x3006, 0x309D, 0x309E,
+  0xFE49, 0xFE4A, 0xFE4B, 0xFE4C, 0xFE4D, 0xFE4E, 0xFE4F, 0xFE50,
+  0xFE51, 0xFE52, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFE59, 0xFE5A,
+  0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0xFE5F, 0xFE60, 0xFE61, 0xFE62,
+  0xFE63, 0xFE64, 0xFE65, 0xFE66, 0xFE68, 0xFE69, 0xFE6A, 0xFE6B,
+  0xE7E7, 0xE7E8, 0xE7E9, 0xE7EA, 0xE7EB, 0xE7EC, 0xE7ED, 0xE7EE,
+plane 31        
+at 0x00
+  0xE7EF, 0xE7F0, 0xE7F1, 0xE7F2, 0xE7F3, 0x3007,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504,
+  0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, 0x250C,
+  0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514,
+  0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B, 0x251C,
+  0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524,
+  0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C,
+  0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
+  0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C,
+  0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544,
+  0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0, 0x72DC, 0x72DD,
+  0x72DF, 0x72E2, 0x72E3, 0x72E4, 0x72E5, 0x72E6, 0x72E7, 0x72EA,
+  0x72EB, 0x72F5, 0x72F6, 0x72F9, 0x72FD, 0x72FE, 0x72FF, 0x7300,
+  0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308, 0x7309, 0x730B,
+  0x730C, 0x730D, 0x730F, 0x7310, 0x7311, 0x7312, 0x7314, 0x7318,
+  0x7319, 0x731A, 0x731F, 0x7320, 0x7323, 0x7324, 0x7326, 0x7327,
+  0x7328, 0x732D, 0x732F, 0x7330, 0x7332, 0x7333, 0x7335, 0x7336,
+  0x733A, 0x733B, 0x733C, 0x733D, 0x7340, 0x7341, 0x7342, 0x7343,
+  0x7344, 0x7345, 0x7346, 0x7347, 0x7348, 0x7349, 0x734A, 0x734B,
+  0x734C, 0x734E, 0x734F, 0x7351, 0x7353, 0x7354, 0x7355, 0x7356,
+  0x7358, 0x7359, 0x735A, 0x735B, 0x735C, 0x735D, 0x735E, 0x735F,
+  0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366, 0x7367, 0x7368,
+  0x7369, 0x736A, 0x736B, 0x736E, 0x7370, 0x7371,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 32        
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0, 0x7372, 0x7373, 0x7374, 0x7375,
+  0x7376, 0x7377, 0x7378, 0x7379, 0x737A, 0x737B, 0x737C, 0x737D,
+  0x737F, 0x7380, 0x7381, 0x7382, 0x7383, 0x7385, 0x7386, 0x7388,
+  0x738A, 0x738C, 0x738D, 0x738F, 0x7390, 0x7392, 0x7393, 0x7394,
+  0x7395, 0x7397, 0x7398, 0x7399, 0x739A, 0x739C, 0x739D, 0x739E,
+  0x73A0, 0x73A1, 0x73A3, 0x73A4, 0x73A5, 0x73A6, 0x73A7, 0x73A8,
+  0x73AA, 0x73AC, 0x73AD, 0x73B1, 0x73B4, 0x73B5, 0x73B6, 0x73B8,
+  0x73B9, 0x73BC, 0x73BD, 0x73BE, 0x73BF, 0x73C1, 0x73C3, 0x73C4,
+  0x73C5, 0x73C6, 0x73C7, 0x73CB, 0x73CC, 0x73CE, 0x73D2, 0x73D3,
+  0x73D4, 0x73D5, 0x73D6, 0x73D7, 0x73D8, 0x73DA, 0x73DB, 0x73DC,
+  0x73DD, 0x73DF, 0x73E1, 0x73E2, 0x73E3, 0x73E4, 0x73E6, 0x73E8,
+  0x73EA, 0x73EB, 0x73EC, 0x73EE, 0x73EF, 0x73F0, 0x73F1, 0x73F3,
+  0x73F4, 0x73F5, 0x73F6, 0x73F7,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0, 0x73F8, 0x73F9, 0x73FA, 0x73FB, 0x73FC, 0x73FD,
+  0x73FE, 0x73FF, 0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408,
+  0x740B, 0x740C, 0x740D, 0x740E, 0x7411, 0x7412, 0x7413, 0x7414,
+plane 33        
+at 0x00
+  0x7415, 0x7416, 0x7417, 0x7418, 0x7419, 0x741C, 0x741D, 0x741E,
+  0x741F, 0x7420, 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742B,
+  0x742D, 0x742F, 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743A,
+  0x743B, 0x743D, 0x743E, 0x743F, 0x7440, 0x7442, 0x7443, 0x7444,
+  0x7445, 0x7446, 0x7447, 0x7448, 0x7449, 0x744A, 0x744B, 0x744C,
+  0x744D, 0x744E, 0x744F, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454,
+  0x7456, 0x7458, 0x745D, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464,
+  0x7465, 0x7466, 0x7467, 0x7468, 0x7469, 0x746A, 0x746B, 0x746C,
+  0x746E, 0x746F, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478,
+  0x7479, 0x747A,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+  0x747B, 0x747C, 0x747D, 0x747F, 0x7482, 0x7484, 0x7485, 0x7486,
+  0x7488, 0x7489, 0x748A, 0x748C, 0x748D, 0x748F, 0x7491, 0x7492,
+  0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749A,
+  0x749B, 0x749D, 0x749F, 0x74A0, 0x74A1, 0x74A2, 0x74A3, 0x74A4,
+  0x74A5, 0x74A6, 0x74AA, 0x74AB, 0x74AC, 0x74AD, 0x74AE, 0x74AF,
+  0x74B0, 0x74B1, 0x74B2, 0x74B3, 0x74B4, 0x74B5, 0x74B6, 0x74B7,
+  0x74B8, 0x74B9, 0x74BB, 0x74BC, 0x74BD, 0x74BE, 0x74BF, 0x74C0,
+  0x74C1, 0x74C2, 0x74C3, 0x74C4, 0x74C5, 0x74C6, 0x74C7, 0x74C8,
+  0x74C9, 0x74CA, 0x74CB, 0x74CC, 0x74CD, 0x74CE, 0x74CF, 0x74D0,
+  0x74D1, 0x74D3, 0x74D4, 0x74D5, 0x74D6, 0x74D7, 0x74D8, 0x74D9,
+  0x74DA, 0x74DB, 0x74DD, 0x74DF, 0x74E1, 0x74E5, 0x74E7, 0x74E8,
+plane 34        
+at 0x00
+  0x74E9, 0x74EA, 0x74EB, 0x74EC, 0x74ED, 0x74F0, 0x74F1, 0x74F2,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0, 0x74F3, 0x74F5,
+  0x74F8, 0x74F9, 0x74FA, 0x74FB, 0x74FC, 0x74FD, 0x74FE, 0x7500,
+  0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507, 0x7508, 0x7509,
+  0x750A, 0x750B, 0x750C, 0x750E, 0x7510, 0x7512, 0x7514, 0x7515,
+  0x7516, 0x7517, 0x751B, 0x751D, 0x751E, 0x7520, 0x7521, 0x7522,
+  0x7523, 0x7524, 0x7526, 0x7527, 0x752A, 0x752E, 0x7534, 0x7536,
+  0x7539, 0x753C, 0x753D, 0x753F, 0x7541, 0x7542, 0x7543, 0x7544,
+  0x7546, 0x7547, 0x7549, 0x754A, 0x754D, 0x7550, 0x7551, 0x7552,
+  0x7553, 0x7555, 0x7556, 0x7557, 0x7558, 0x755D, 0x755E, 0x755F,
+  0x7560, 0x7561, 0x7562, 0x7563, 0x7564, 0x7567, 0x7568, 0x7569,
+  0x756B, 0x756C, 0x756D, 0x756E, 0x756F, 0x7570, 0x7571, 0x7573,
+  0x7575, 0x7576, 0x7577, 0x757A, 0x757B, 0x757C, 0x757D, 0x757E,
+  0x7580, 0x7581, 0x7582, 0x7584, 0x7585, 0x7587,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 35        
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0, 0x7588, 0x7589, 0x758A, 0x758C,
+  0x758D, 0x758E, 0x7590, 0x7593, 0x7595, 0x7598, 0x759B, 0x759C,
+  0x759E, 0x75A2, 0x75A6, 0x75A7, 0x75A8, 0x75A9, 0x75AA, 0x75AD,
+  0x75B6, 0x75B7, 0x75BA, 0x75BB, 0x75BF, 0x75C0, 0x75C1, 0x75C6,
+  0x75CB, 0x75CC, 0x75CE, 0x75CF, 0x75D0, 0x75D1, 0x75D3, 0x75D7,
+  0x75D9, 0x75DA, 0x75DC, 0x75DD, 0x75DF, 0x75E0, 0x75E1, 0x75E5,
+  0x75E9, 0x75EC, 0x75ED, 0x75EE, 0x75EF, 0x75F2, 0x75F3, 0x75F5,
+  0x75F6, 0x75F7, 0x75F8, 0x75FA, 0x75FB, 0x75FD, 0x75FE, 0x7602,
+  0x7604, 0x7606, 0x7607, 0x7608, 0x7609, 0x760B, 0x760D, 0x760E,
+  0x760F, 0x7611, 0x7612, 0x7613, 0x7614, 0x7616, 0x761A, 0x761C,
+  0x761D, 0x761E, 0x7621, 0x7623, 0x7627, 0x7628, 0x762C, 0x762E,
+  0x762F, 0x7631, 0x7632, 0x7636, 0x7637, 0x7639, 0x763A, 0x763B,
+  0x763D, 0x7641, 0x7642, 0x7644,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0, 0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764A,
+  0x764B, 0x764E, 0x764F, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655,
+  0x7657, 0x7658, 0x7659, 0x765A, 0x765B, 0x765D, 0x765F, 0x7660,
+  0x7661, 0x7662, 0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669,
+plane 36        
+at 0x00
+  0x766A, 0x766C, 0x766D, 0x766E, 0x7670, 0x7671, 0x7672, 0x7673,
+  0x7674, 0x7675, 0x7676, 0x7677, 0x7679, 0x767A, 0x767C, 0x767F,
+  0x7680, 0x7681, 0x7683, 0x7685, 0x7689, 0x768A, 0x768C, 0x768D,
+  0x768F, 0x7690, 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769A,
+  0x769B, 0x769C, 0x769D, 0x769E, 0x769F, 0x76A0, 0x76A1, 0x76A2,
+  0x76A3, 0x76A5, 0x76A6, 0x76A7, 0x76A8, 0x76A9, 0x76AA, 0x76AB,
+  0x76AC, 0x76AD, 0x76AF, 0x76B0, 0x76B3, 0x76B5, 0x76B6, 0x76B7,
+  0x76B8, 0x76B9, 0x76BA, 0x76BB, 0x76BC, 0x76BD, 0x76BE, 0x76C0,
+  0x76C1, 0x76C3, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509,
+  0x54C0, 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231,
+  0x9698, 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8,
+  0x80FA, 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC,
+  0x7FF1, 0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C,
+  0x6252, 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4,
+  0x8DCB, 0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238,
+  0x767D, 0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17,
+  0x6591, 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248,
+  0x626E, 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6,
+  0x5E2E, 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C,
+  0x9551, 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265,
+  0x76C4, 0x76C7, 0x76C9, 0x76CB, 0x76CC, 0x76D3, 0x76D5, 0x76D9,
+  0x76DA, 0x76DC, 0x76DD, 0x76DE, 0x76E0, 0x76E1, 0x76E2, 0x76E3,
+  0x76E4, 0x76E6, 0x76E7, 0x76E8, 0x76E9, 0x76EA, 0x76EB, 0x76EC,
+  0x76ED, 0x76F0, 0x76F3, 0x76F5, 0x76F6, 0x76F7, 0x76FA, 0x76FB,
+  0x76FD, 0x76FF, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770A,
+  0x770C, 0x770E, 0x770F, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714,
+  0x7715, 0x7716, 0x7717, 0x7718, 0x771B, 0x771C, 0x771D, 0x771E,
+  0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772A, 0x772B, 0x772C,
+  0x772E, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, 0x773B,
+  0x773D, 0x773E, 0x773F, 0x7742, 0x7744, 0x7745, 0x7746, 0x7748,
+  0x7749, 0x774A, 0x774B, 0x774C, 0x774D, 0x774E, 0x774F, 0x7752,
+  0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759, 0x775C,
+plane 37        
+at 0x00
+  0x8584, 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1, 0x62A5,
+  0x66B4, 0x8C79, 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2, 0x5351,
+  0x5317, 0x8F88, 0x80CC, 0x8D1D, 0x94A1, 0x500D, 0x72C8, 0x5907,
+  0x60EB, 0x7119, 0x88AB, 0x5954, 0x82EF, 0x672C, 0x7B28, 0x5D29,
+  0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, 0x903C, 0x9F3B, 0x6BD4,
+  0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, 0x6BD5, 0x6BD9,
+  0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A, 0x5FC5,
+  0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9, 0x7F16,
+  0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9, 0x8FAB,
+  0x904D, 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B, 0x522B,
+  0x762A, 0x5F6C, 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, 0x5175,
+  0x51B0, 0x67C4, 0x4E19, 0x79C9, 0x997C, 0x70B3, 0x775D, 0x775E,
+  0x775F, 0x7760, 0x7764, 0x7767, 0x7769, 0x776A, 0x776D, 0x776E,
+  0x776F, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774, 0x7775, 0x7776,
+  0x7777, 0x7778, 0x777A, 0x777B, 0x777C, 0x7781, 0x7782, 0x7783,
+  0x7786, 0x7787, 0x7788, 0x7789, 0x778A, 0x778B, 0x778F, 0x7790,
+  0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798, 0x7799, 0x779A,
+  0x779B, 0x779C, 0x779D, 0x779E, 0x77A1, 0x77A3, 0x77A4, 0x77A6,
+  0x77A8, 0x77AB, 0x77AD, 0x77AE, 0x77AF, 0x77B1, 0x77B2, 0x77B4,
+  0x77B6, 0x77B7, 0x77B8, 0x77B9, 0x77BA, 0x77BC, 0x77BE, 0x77C0,
+  0x77C1, 0x77C2, 0x77C3, 0x77C4, 0x77C5, 0x77C6, 0x77C7, 0x77C8,
+  0x77C9, 0x77CA, 0x77CB, 0x77CC, 0x77CE, 0x77CF, 0x77D0, 0x77D1,
+  0x77D2, 0x77D3, 0x77D4, 0x77D5, 0x77D6, 0x77D8, 0x77D9, 0x77DA,
+  0x77DD, 0x77DE, 0x77DF, 0x77E0, 0x77E1, 0x77E4, 0x75C5, 0x5E76,
+  0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5, 0x6CE2, 0x535A, 0x52C3,
+  0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, 0x8236, 0x8116, 0x818A,
+  0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 0x54FA, 0x8865, 0x57E0,
+  0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 0x6016, 0x64E6, 0x731C,
+  0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, 0x8E29, 0x91C7, 0x5F69,
+  0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, 0x6B8B, 0x60ED, 0x60E8,
+  0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7, 0x85CF, 0x64CD, 0x7CD9,
+  0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56, 0x4FA7, 0x518C, 0x6D4B,
+plane 38        
+at 0x00
+  0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C, 0x8336, 0x67E5, 0x78B4,
+  0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7, 0x62C6, 0x67F4, 0x8C7A,
+  0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, 0x7F20, 0x94F2, 0x4EA7,
+  0x9610, 0x98A4, 0x660C, 0x7316, 0x77E6, 0x77E8, 0x77EA, 0x77EF,
+  0x77F0, 0x77F1, 0x77F2, 0x77F4, 0x77F5, 0x77F7, 0x77F9, 0x77FA,
+  0x77FB, 0x77FC, 0x7803, 0x7804, 0x7805, 0x7806, 0x7807, 0x7808,
+  0x780A, 0x780B, 0x780E, 0x780F, 0x7810, 0x7813, 0x7815, 0x7819,
+  0x781B, 0x781E, 0x7820, 0x7821, 0x7822, 0x7824, 0x7828, 0x782A,
+  0x782B, 0x782E, 0x782F, 0x7831, 0x7832, 0x7833, 0x7835, 0x7836,
+  0x783D, 0x783F, 0x7841, 0x7842, 0x7843, 0x7844, 0x7846, 0x7848,
+  0x7849, 0x784A, 0x784B, 0x784D, 0x784F, 0x7851, 0x7853, 0x7854,
+  0x7858, 0x7859, 0x785A, 0x785B, 0x785C, 0x785E, 0x785F, 0x7860,
+  0x7861, 0x7862, 0x7863, 0x7864, 0x7865, 0x7866, 0x7867, 0x7868,
+  0x7869, 0x786F, 0x7870, 0x7871, 0x7872, 0x7873, 0x7874, 0x7875,
+  0x7876, 0x7878, 0x7879, 0x787A, 0x787B, 0x787D, 0x787E, 0x787F,
+  0x7880, 0x7881, 0x7882, 0x7883, 0x573A, 0x5C1D, 0x5E38, 0x957F,
+  0x507F, 0x80A0, 0x5382, 0x655E, 0x7545, 0x5531, 0x5021, 0x8D85,
+  0x6284, 0x949E, 0x671D, 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092,
+  0x8F66, 0x626F, 0x64A4, 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3,
+  0x8FB0, 0x5C18, 0x6668, 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C,
+  0x6491, 0x79F0, 0x57CE, 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B,
+  0x60E9, 0x6F84, 0x8BDA, 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403,
+  0x75F4, 0x6301, 0x5319, 0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B,
+  0x9F7F, 0x4F88, 0x5C3A, 0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145,
+  0x51B2, 0x866B, 0x5D07, 0x5BA0, 0x62BD, 0x916C, 0x7574, 0x8E0C,
+  0x7A20, 0x6101, 0x7B79, 0x4EC7, 0x7EF8, 0x7785, 0x4E11, 0x81ED,
+  0x521D, 0x51FA, 0x6A71, 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1,
+  0x9664, 0x695A, 0x7884, 0x7885, 0x7886, 0x7888, 0x788A, 0x788B,
+  0x788F, 0x7890, 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789D,
+  0x789E, 0x78A0, 0x78A2, 0x78A4, 0x78A6, 0x78A8, 0x78A9, 0x78AA,
+  0x78AB, 0x78AC, 0x78AD, 0x78AE, 0x78AF, 0x78B5, 0x78B6, 0x78B7,
+  0x78B8, 0x78BA, 0x78BB, 0x78BC, 0x78BD, 0x78BF, 0x78C0, 0x78C2,
+plane 39        
+at 0x00
+  0x78C3, 0x78C4, 0x78C6, 0x78C7, 0x78C8, 0x78CC, 0x78CD, 0x78CE,
+  0x78CF, 0x78D1, 0x78D2, 0x78D3, 0x78D6, 0x78D7, 0x78D8, 0x78DA,
+  0x78DB, 0x78DC, 0x78DD, 0x78DE, 0x78DF, 0x78E0, 0x78E1, 0x78E2,
+  0x78E3, 0x78E4, 0x78E5, 0x78E6, 0x78E7, 0x78E9, 0x78EA, 0x78EB,
+  0x78ED, 0x78EE, 0x78EF, 0x78F0, 0x78F1, 0x78F3, 0x78F5, 0x78F6,
+  0x78F8, 0x78F9, 0x78FB, 0x78FC, 0x78FD, 0x78FE, 0x78FF, 0x7900,
+  0x7902, 0x7903, 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790A,
+  0x790B, 0x790C, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904,
+  0x63E3, 0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32,
+  0x75AE, 0x7A97, 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A,
+  0x6376, 0x9524, 0x5782, 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3,
+  0x7EAF, 0x8822, 0x6233, 0x7EF0, 0x75B5, 0x8328, 0x78C1, 0x96CC,
+  0x8F9E, 0x6148, 0x74F7, 0x8BCD, 0x6B64, 0x523A, 0x8D50, 0x6B21,
+  0x806A, 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, 0x51D1, 0x7C97,
+  0x918B, 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, 0x5D14,
+  0x50AC, 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58,
+  0x5BF8, 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D,
+  0x8FBE, 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3,
+  0x6234, 0x5E26, 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E,
+  0x790D, 0x790E, 0x790F, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915,
+  0x7916, 0x7917, 0x7918, 0x7919, 0x791A, 0x791B, 0x791C, 0x791D,
+  0x791F, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927,
+  0x7928, 0x7929, 0x792A, 0x792B, 0x792C, 0x792D, 0x792E, 0x792F,
+  0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938,
+  0x7939, 0x793D, 0x793F, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947,
+  0x794A, 0x794B, 0x794C, 0x794D, 0x794E, 0x794F, 0x7950, 0x7951,
+  0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963, 0x7964,
+  0x7966, 0x7969, 0x796A, 0x796B, 0x796C, 0x796E, 0x7970, 0x7971,
+  0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797B, 0x797C,
+  0x797D, 0x797E, 0x797F, 0x7982, 0x7983, 0x7986, 0x7987, 0x7988,
+  0x7989, 0x798B, 0x798C, 0x798D, 0x798E, 0x7990, 0x7991, 0x7992,
+  0x6020, 0x803D, 0x62C5, 0x4E39, 0x5355, 0x90F8, 0x63B8, 0x80C6,
+plane 40        
+at 0x00
+  0x65E6, 0x6C2E, 0x4F46, 0x60EE, 0x6DE1, 0x8BDE, 0x5F39, 0x86CB,
+  0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, 0x5200, 0x6363, 0x8E48,
+  0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, 0x60BC, 0x9053,
+  0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B, 0x7B49,
+  0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, 0x654C,
+  0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, 0x5730,
+  0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0, 0x6382,
+  0x6EC7, 0x7898, 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535, 0x4F43,
+  0x7538, 0x5E97, 0x60E6, 0x5960, 0x6DC0, 0x6BBF, 0x7889, 0x53FC,
+  0x96D5, 0x51CB, 0x5201, 0x6389, 0x540A, 0x9493, 0x8C03, 0x8DCC,
+  0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, 0x53E0, 0x7993, 0x7994,
+  0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799B, 0x799C, 0x799D,
+  0x799E, 0x799F, 0x79A0, 0x79A1, 0x79A2, 0x79A3, 0x79A4, 0x79A5,
+  0x79A6, 0x79A8, 0x79A9, 0x79AA, 0x79AB, 0x79AC, 0x79AD, 0x79AE,
+  0x79AF, 0x79B0, 0x79B1, 0x79B2, 0x79B4, 0x79B5, 0x79B6, 0x79B7,
+  0x79B8, 0x79BC, 0x79BF, 0x79C2, 0x79C4, 0x79C5, 0x79C7, 0x79C8,
+  0x79CA, 0x79CC, 0x79CE, 0x79CF, 0x79D0, 0x79D3, 0x79D4, 0x79D6,
+  0x79D7, 0x79D9, 0x79DA, 0x79DB, 0x79DC, 0x79DD, 0x79DE, 0x79E0,
+  0x79E1, 0x79E2, 0x79E5, 0x79E8, 0x79EA, 0x79EC, 0x79EE, 0x79F1,
+  0x79F2, 0x79F3, 0x79F4, 0x79F5, 0x79F6, 0x79F7, 0x79F9, 0x79FA,
+  0x79FC, 0x79FE, 0x79FF, 0x7A01, 0x7A04, 0x7A05, 0x7A07, 0x7A08,
+  0x7A09, 0x7A0A, 0x7A0C, 0x7A0F, 0x7A10, 0x7A11, 0x7A12, 0x7A13,
+  0x7A15, 0x7A16, 0x7A18, 0x7A19, 0x7A1B, 0x7A1C, 0x4E01, 0x76EF,
+  0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 0x5B9A, 0x8BA2, 0x4E22,
+  0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 0x680B, 0x4F97, 0x606B,
+  0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 0x9661, 0x8C46, 0x9017,
+  0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, 0x72EC, 0x8BFB, 0x5835,
+  0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A, 0x5EA6, 0x6E21, 0x5992,
+  0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD, 0x7F0E, 0x5806, 0x5151,
+  0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72, 0x6566, 0x987F, 0x56E4,
+  0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6, 0x591A, 0x593A, 0x579B,
+  0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, 0x60F0, 0x5815, 0x86FE,
+plane 41        
+at 0x00
+  0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 0x5A25, 0x6076, 0x5384,
+  0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 0x800C, 0x513F, 0x8033,
+  0x5C14, 0x9975, 0x6D31, 0x4E8C, 0x7A1D, 0x7A1F, 0x7A21, 0x7A22,
+  0x7A24, 0x7A25, 0x7A26, 0x7A27, 0x7A28, 0x7A29, 0x7A2A, 0x7A2B,
+  0x7A2C, 0x7A2D, 0x7A2E, 0x7A2F, 0x7A30, 0x7A31, 0x7A32, 0x7A34,
+  0x7A35, 0x7A36, 0x7A38, 0x7A3A, 0x7A3E, 0x7A40, 0x7A41, 0x7A42,
+  0x7A43, 0x7A44, 0x7A45, 0x7A47, 0x7A48, 0x7A49, 0x7A4A, 0x7A4B,
+  0x7A4C, 0x7A4D, 0x7A4E, 0x7A4F, 0x7A50, 0x7A52, 0x7A53, 0x7A54,
+  0x7A55, 0x7A56, 0x7A58, 0x7A59, 0x7A5A, 0x7A5B, 0x7A5C, 0x7A5D,
+  0x7A5E, 0x7A5F, 0x7A60, 0x7A61, 0x7A62, 0x7A63, 0x7A64, 0x7A65,
+  0x7A66, 0x7A67, 0x7A68, 0x7A69, 0x7A6A, 0x7A6B, 0x7A6C, 0x7A6D,
+  0x7A6E, 0x7A6F, 0x7A71, 0x7A72, 0x7A73, 0x7A75, 0x7A7B, 0x7A7C,
+  0x7A7D, 0x7A7E, 0x7A82, 0x7A85, 0x7A87, 0x7A89, 0x7A8A, 0x7A8B,
+  0x7A8C, 0x7A8E, 0x7A8F, 0x7A90, 0x7A93, 0x7A94, 0x7A99, 0x7A9A,
+  0x7A9B, 0x7A9E, 0x7AA1, 0x7AA2, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F,
+  0x4F10, 0x4E4F, 0x9600, 0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A,
+  0x7FFB, 0x6A0A, 0x77FE, 0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD,
+  0x8FD4, 0x8303, 0x8D29, 0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3,
+  0x65B9, 0x80AA, 0x623F, 0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA,
+  0x653E, 0x83F2, 0x975E, 0x5561, 0x98DE, 0x80A5, 0x532A, 0x8BFD,
+  0x5420, 0x80BA, 0x5E9F, 0x6CB8, 0x8D39, 0x82AC, 0x915A, 0x5429,
+  0x6C1B, 0x5206, 0x7EB7, 0x575F, 0x711A, 0x6C7E, 0x7C89, 0x594B,
+  0x4EFD, 0x5FFF, 0x6124, 0x7CAA, 0x4E30, 0x5C01, 0x67AB, 0x8702,
+  0x5CF0, 0x950B, 0x98CE, 0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D,
+  0x8BBD, 0x5949, 0x51E4, 0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4,
+  0x5B75, 0x6276, 0x62C2, 0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F,
+  0x4FD8, 0x670D, 0x7AA3, 0x7AA4, 0x7AA7, 0x7AA9, 0x7AAA, 0x7AAB,
+  0x7AAE, 0x7AAF, 0x7AB0, 0x7AB1, 0x7AB2, 0x7AB4, 0x7AB5, 0x7AB6,
+  0x7AB7, 0x7AB8, 0x7AB9, 0x7ABA, 0x7ABB, 0x7ABC, 0x7ABD, 0x7ABE,
+  0x7AC0, 0x7AC1, 0x7AC2, 0x7AC3, 0x7AC4, 0x7AC5, 0x7AC6, 0x7AC7,
+  0x7AC8, 0x7AC9, 0x7ACA, 0x7ACC, 0x7ACD, 0x7ACE, 0x7ACF, 0x7AD0,
+  0x7AD1, 0x7AD2, 0x7AD3, 0x7AD4, 0x7AD5, 0x7AD7, 0x7AD8, 0x7ADA,
+plane 42        
+at 0x00
+  0x7ADB, 0x7ADC, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE4, 0x7AE7, 0x7AE8,
+  0x7AE9, 0x7AEA, 0x7AEB, 0x7AEC, 0x7AEE, 0x7AF0, 0x7AF1, 0x7AF2,
+  0x7AF3, 0x7AF4, 0x7AF5, 0x7AF6, 0x7AF7, 0x7AF8, 0x7AFB, 0x7AFC,
+  0x7AFE, 0x7B00, 0x7B01, 0x7B02, 0x7B05, 0x7B07, 0x7B09, 0x7B0C,
+  0x7B0D, 0x7B0E, 0x7B10, 0x7B12, 0x7B13, 0x7B16, 0x7B17, 0x7B18,
+  0x7B1A, 0x7B1C, 0x7B1D, 0x7B1F, 0x7B21, 0x7B22, 0x7B23, 0x7B27,
+  0x7B29, 0x7B2D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B,
+  0x629A, 0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C,
+  0x8150, 0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, 0x5085, 0x4ED8,
+  0x961C, 0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, 0x9644, 0x5987,
+  0x7F1A, 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, 0x6982, 0x9499,
+  0x76D6, 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF, 0x809D,
+  0x8D76, 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2,
+  0x7F38, 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B,
+  0x9AD8, 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A,
+  0x54E5, 0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272,
+  0x9769, 0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A,
+  0x5404, 0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, 0x5E9A, 0x7FB9,
+  0x7B2F, 0x7B30, 0x7B32, 0x7B34, 0x7B35, 0x7B36, 0x7B37, 0x7B39,
+  0x7B3B, 0x7B3D, 0x7B3F, 0x7B40, 0x7B41, 0x7B42, 0x7B43, 0x7B44,
+  0x7B46, 0x7B48, 0x7B4A, 0x7B4D, 0x7B4E, 0x7B53, 0x7B55, 0x7B57,
+  0x7B59, 0x7B5C, 0x7B5E, 0x7B5F, 0x7B61, 0x7B63, 0x7B64, 0x7B65,
+  0x7B66, 0x7B67, 0x7B68, 0x7B69, 0x7B6A, 0x7B6B, 0x7B6C, 0x7B6D,
+  0x7B6F, 0x7B70, 0x7B73, 0x7B74, 0x7B76, 0x7B78, 0x7B7A, 0x7B7C,
+  0x7B7D, 0x7B7F, 0x7B81, 0x7B82, 0x7B83, 0x7B84, 0x7B86, 0x7B87,
+  0x7B88, 0x7B89, 0x7B8A, 0x7B8B, 0x7B8C, 0x7B8E, 0x7B8F, 0x7B91,
+  0x7B92, 0x7B93, 0x7B96, 0x7B98, 0x7B99, 0x7B9A, 0x7B9B, 0x7B9E,
+  0x7B9F, 0x7BA0, 0x7BA3, 0x7BA4, 0x7BA5, 0x7BAE, 0x7BAF, 0x7BB0,
+  0x7BB2, 0x7BB3, 0x7BB5, 0x7BB6, 0x7BB7, 0x7BB9, 0x7BBA, 0x7BBB,
+  0x7BBC, 0x7BBD, 0x7BBE, 0x7BBF, 0x7BC0, 0x7BC2, 0x7BC3, 0x7BC4,
+  0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D, 0x9F9A,
+  0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E, 0x62F1,
+plane 43        
+at 0x00
+  0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, 0x57A2,
+  0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, 0x4F30,
+  0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, 0x8C37,
+  0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, 0x5250,
+  0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, 0x5173,
+  0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF, 0x704C,
+  0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D, 0x7845,
+  0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678, 0x6842,
+  0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD, 0x9505,
+  0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8, 0x7BC5, 0x7BC8,
+  0x7BC9, 0x7BCA, 0x7BCB, 0x7BCD, 0x7BCE, 0x7BCF, 0x7BD0, 0x7BD2,
+  0x7BD4, 0x7BD5, 0x7BD6, 0x7BD7, 0x7BD8, 0x7BDB, 0x7BDC, 0x7BDE,
+  0x7BDF, 0x7BE0, 0x7BE2, 0x7BE3, 0x7BE4, 0x7BE7, 0x7BE8, 0x7BE9,
+  0x7BEB, 0x7BEC, 0x7BED, 0x7BEF, 0x7BF0, 0x7BF2, 0x7BF3, 0x7BF4,
+  0x7BF5, 0x7BF6, 0x7BF8, 0x7BF9, 0x7BFA, 0x7BFB, 0x7BFD, 0x7BFF,
+  0x7C00, 0x7C01, 0x7C02, 0x7C03, 0x7C04, 0x7C05, 0x7C06, 0x7C08,
+  0x7C09, 0x7C0A, 0x7C0D, 0x7C0E, 0x7C10, 0x7C11, 0x7C12, 0x7C13,
+  0x7C14, 0x7C15, 0x7C17, 0x7C18, 0x7C19, 0x7C1A, 0x7C1B, 0x7C1C,
+  0x7C1D, 0x7C1E, 0x7C20, 0x7C21, 0x7C22, 0x7C23, 0x7C24, 0x7C25,
+  0x7C28, 0x7C29, 0x7C2B, 0x7C2C, 0x7C2D, 0x7C2E, 0x7C2F, 0x7C30,
+  0x7C31, 0x7C32, 0x7C33, 0x7C34, 0x7C35, 0x7C36, 0x7C37, 0x7C39,
+  0x7C3A, 0x7C3B, 0x7C3C, 0x7C3D, 0x7C3E, 0x7C42, 0x9AB8, 0x5B69,
+  0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, 0x9163, 0x61A8, 0x90AF,
+  0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, 0x558A, 0x7F55, 0x7FF0,
+  0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D, 0x710A, 0x6C57, 0x6C49,
+  0x592F, 0x676D, 0x822A, 0x58D5, 0x568E, 0x8C6A, 0x6BEB, 0x90DD,
+  0x597D, 0x8017, 0x53F7, 0x6D69, 0x5475, 0x559D, 0x8377, 0x83CF,
+  0x6838, 0x79BE, 0x548C, 0x4F55, 0x5408, 0x76D2, 0x8C89, 0x9602,
+  0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64, 0x8D3A, 0x563F, 0x9ED1,
+  0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, 0x4EA8, 0x6A2A, 0x8861,
+  0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, 0x9E3F, 0x6D2A, 0x5B8F,
+  0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, 0x543C, 0x539A, 0x5019,
+plane 44        
+at 0x00
+  0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, 0x58F6, 0x846B, 0x80E1,
+  0x8774, 0x72D0, 0x7CCA, 0x6E56, 0x7C43, 0x7C44, 0x7C45, 0x7C46,
+  0x7C47, 0x7C48, 0x7C49, 0x7C4A, 0x7C4B, 0x7C4C, 0x7C4E, 0x7C4F,
+  0x7C50, 0x7C51, 0x7C52, 0x7C53, 0x7C54, 0x7C55, 0x7C56, 0x7C57,
+  0x7C58, 0x7C59, 0x7C5A, 0x7C5B, 0x7C5C, 0x7C5D, 0x7C5E, 0x7C5F,
+  0x7C60, 0x7C61, 0x7C62, 0x7C63, 0x7C64, 0x7C65, 0x7C66, 0x7C67,
+  0x7C68, 0x7C69, 0x7C6A, 0x7C6B, 0x7C6C, 0x7C6D, 0x7C6E, 0x7C6F,
+  0x7C70, 0x7C71, 0x7C72, 0x7C75, 0x7C76, 0x7C77, 0x7C78, 0x7C79,
+  0x7C7A, 0x7C7E, 0x7C7F, 0x7C80, 0x7C81, 0x7C82, 0x7C83, 0x7C84,
+  0x7C85, 0x7C86, 0x7C87, 0x7C88, 0x7C8A, 0x7C8B, 0x7C8C, 0x7C8D,
+  0x7C8E, 0x7C8F, 0x7C90, 0x7C93, 0x7C94, 0x7C96, 0x7C99, 0x7C9A,
+  0x7C9B, 0x7CA0, 0x7CA1, 0x7CA3, 0x7CA6, 0x7CA7, 0x7CA8, 0x7CA9,
+  0x7CAB, 0x7CAC, 0x7CAD, 0x7CAF, 0x7CB0, 0x7CB4, 0x7CB5, 0x7CB6,
+  0x7CB7, 0x7CB8, 0x7CBA, 0x7CBB, 0x5F27, 0x864E, 0x552C, 0x62A4,
+  0x4E92, 0x6CAA, 0x6237, 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1,
+  0x753B, 0x5212, 0x5316, 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE,
+  0x574F, 0x6B22, 0x73AF, 0x6853, 0x8FD8, 0x7F13, 0x6362, 0x60A3,
+  0x5524, 0x75EA, 0x8C62, 0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352,
+  0x614C, 0x9EC4, 0x78FA, 0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6,
+  0x714C, 0x6643, 0x5E4C, 0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89,
+  0x5FBD, 0x6062, 0x86D4, 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349,
+  0x60E0, 0x6666, 0x8D3F, 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3,
+  0x8BF2, 0x7ED8, 0x8364, 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7,
+  0x8C41, 0x6D3B, 0x4F19, 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D,
+  0x8D27, 0x7978, 0x51FB, 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D,
+  0x79EF, 0x7B95, 0x7CBF, 0x7CC0, 0x7CC2, 0x7CC3, 0x7CC4, 0x7CC6,
+  0x7CC9, 0x7CCB, 0x7CCE, 0x7CCF, 0x7CD0, 0x7CD1, 0x7CD2, 0x7CD3,
+  0x7CD4, 0x7CD8, 0x7CDA, 0x7CDB, 0x7CDD, 0x7CDE, 0x7CE1, 0x7CE2,
+  0x7CE3, 0x7CE4, 0x7CE5, 0x7CE6, 0x7CE7, 0x7CE9, 0x7CEA, 0x7CEB,
+  0x7CEC, 0x7CED, 0x7CEE, 0x7CF0, 0x7CF1, 0x7CF2, 0x7CF3, 0x7CF4,
+  0x7CF5, 0x7CF6, 0x7CF7, 0x7CF9, 0x7CFA, 0x7CFC, 0x7CFD, 0x7CFE,
+  0x7CFF, 0x7D00, 0x7D01, 0x7D02, 0x7D03, 0x7D04, 0x7D05, 0x7D06,
+plane 45        
+at 0x00
+  0x7D07, 0x7D08, 0x7D09, 0x7D0B, 0x7D0C, 0x7D0D, 0x7D0E, 0x7D0F,
+  0x7D10, 0x7D11, 0x7D12, 0x7D13, 0x7D14, 0x7D15, 0x7D16, 0x7D17,
+  0x7D18, 0x7D19, 0x7D1A, 0x7D1B, 0x7D1C, 0x7D1D, 0x7D1E, 0x7D1F,
+  0x7D21, 0x7D23, 0x7D24, 0x7D25, 0x7D26, 0x7D28, 0x7D29, 0x7D2A,
+  0x7D2C, 0x7D2D, 0x7D2E, 0x7D30, 0x7D31, 0x7D32, 0x7D33, 0x7D34,
+  0x7D35, 0x7D36, 0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21,
+  0x59EC, 0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D,
+  0x96C6, 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, 0x5AC9, 0x7EA7,
+  0x6324, 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, 0x5B63,
+  0x4F0E, 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1,
+  0x8BB0, 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609,
+  0x67B7, 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E,
+  0x7532, 0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1,
+  0x6B7C, 0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C,
+  0x80A9, 0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1,
+  0x7877, 0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350,
+  0x69DB, 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, 0x7BAD, 0x4EF6,
+  0x7D37, 0x7D38, 0x7D39, 0x7D3A, 0x7D3B, 0x7D3C, 0x7D3D, 0x7D3E,
+  0x7D3F, 0x7D40, 0x7D41, 0x7D42, 0x7D43, 0x7D44, 0x7D45, 0x7D46,
+  0x7D47, 0x7D48, 0x7D49, 0x7D4A, 0x7D4B, 0x7D4C, 0x7D4D, 0x7D4E,
+  0x7D4F, 0x7D50, 0x7D51, 0x7D52, 0x7D53, 0x7D54, 0x7D55, 0x7D56,
+  0x7D57, 0x7D58, 0x7D59, 0x7D5A, 0x7D5B, 0x7D5C, 0x7D5D, 0x7D5E,
+  0x7D5F, 0x7D60, 0x7D61, 0x7D62, 0x7D63, 0x7D64, 0x7D65, 0x7D66,
+  0x7D67, 0x7D68, 0x7D69, 0x7D6A, 0x7D6B, 0x7D6C, 0x7D6D, 0x7D6F,
+  0x7D70, 0x7D71, 0x7D72, 0x7D73, 0x7D74, 0x7D75, 0x7D76, 0x7D78,
+  0x7D79, 0x7D7A, 0x7D7B, 0x7D7C, 0x7D7D, 0x7D7E, 0x7D7F, 0x7D80,
+  0x7D81, 0x7D82, 0x7D83, 0x7D84, 0x7D85, 0x7D86, 0x7D87, 0x7D88,
+  0x7D89, 0x7D8A, 0x7D8B, 0x7D8C, 0x7D8D, 0x7D8E, 0x7D8F, 0x7D90,
+  0x7D91, 0x7D92, 0x7D93, 0x7D94, 0x7D95, 0x7D96, 0x7D97, 0x7D98,
+  0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, 0x5EFA,
+  0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, 0x6868,
+  0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, 0x7901,
+plane 46        
+at 0x00
+  0x7126, 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, 0x56BC,
+  0x6405, 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, 0x997A,
+  0x7F34, 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, 0x8F83, 0x53EB,
+  0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, 0x9636, 0x622A,
+  0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED, 0x6D01,
+  0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C, 0x501F,
+  0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, 0x91D1,
+  0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, 0x8FDB,
+  0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78, 0x7D99, 0x7D9A,
+  0x7D9B, 0x7D9C, 0x7D9D, 0x7D9E, 0x7D9F, 0x7DA0, 0x7DA1, 0x7DA2,
+  0x7DA3, 0x7DA4, 0x7DA5, 0x7DA7, 0x7DA8, 0x7DA9, 0x7DAA, 0x7DAB,
+  0x7DAC, 0x7DAD, 0x7DAF, 0x7DB0, 0x7DB1, 0x7DB2, 0x7DB3, 0x7DB4,
+  0x7DB5, 0x7DB6, 0x7DB7, 0x7DB8, 0x7DB9, 0x7DBA, 0x7DBB, 0x7DBC,
+  0x7DBD, 0x7DBE, 0x7DBF, 0x7DC0, 0x7DC1, 0x7DC2, 0x7DC3, 0x7DC4,
+  0x7DC5, 0x7DC6, 0x7DC7, 0x7DC8, 0x7DC9, 0x7DCA, 0x7DCB, 0x7DCC,
+  0x7DCD, 0x7DCE, 0x7DCF, 0x7DD0, 0x7DD1, 0x7DD2, 0x7DD3, 0x7DD4,
+  0x7DD5, 0x7DD6, 0x7DD7, 0x7DD8, 0x7DD9, 0x7DDA, 0x7DDB, 0x7DDC,
+  0x7DDD, 0x7DDE, 0x7DDF, 0x7DE0, 0x7DE1, 0x7DE2, 0x7DE3, 0x7DE4,
+  0x7DE5, 0x7DE6, 0x7DE7, 0x7DE8, 0x7DE9, 0x7DEA, 0x7DEB, 0x7DEC,
+  0x7DED, 0x7DEE, 0x7DEF, 0x7DF0, 0x7DF1, 0x7DF2, 0x7DF3, 0x7DF4,
+  0x7DF5, 0x7DF6, 0x7DF7, 0x7DF8, 0x7DF9, 0x7DFA, 0x5C3D, 0x52B2,
+  0x8346, 0x5162, 0x830E, 0x775B, 0x6676, 0x9CB8, 0x4EAC, 0x60CA,
+  0x7CBE, 0x7CB3, 0x7ECF, 0x4E95, 0x8B66, 0x666F, 0x9888, 0x9759,
+  0x5883, 0x656C, 0x955C, 0x5F84, 0x75C9, 0x9756, 0x7ADF, 0x7ADE,
+  0x51C0, 0x70AF, 0x7A98, 0x63EA, 0x7A76, 0x7EA0, 0x7396, 0x97ED,
+  0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9, 0x6551, 0x65E7, 0x81FC,
+  0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, 0x62D8, 0x72D9, 0x75BD,
+  0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480, 0x77E9, 0x4E3E, 0x6CAE,
+  0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177, 0x8DDD, 0x8E1E, 0x952F,
+  0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, 0x6350, 0x9E43, 0x5A1F,
+  0x5026, 0x7737, 0x5377, 0x7EE2, 0x6485, 0x652B, 0x6289, 0x6398,
+  0x5014, 0x7235, 0x89C9, 0x51B3, 0x8BC0, 0x7EDD, 0x5747, 0x83CC,
+plane 47        
+at 0x00
+  0x94A7, 0x519B, 0x541B, 0x5CFB, 0x7DFB, 0x7DFC, 0x7DFD, 0x7DFE,
+  0x7DFF, 0x7E00, 0x7E01, 0x7E02, 0x7E03, 0x7E04, 0x7E05, 0x7E06,
+  0x7E07, 0x7E08, 0x7E09, 0x7E0A, 0x7E0B, 0x7E0C, 0x7E0D, 0x7E0E,
+  0x7E0F, 0x7E10, 0x7E11, 0x7E12, 0x7E13, 0x7E14, 0x7E15, 0x7E16,
+  0x7E17, 0x7E18, 0x7E19, 0x7E1A, 0x7E1B, 0x7E1C, 0x7E1D, 0x7E1E,
+  0x7E1F, 0x7E20, 0x7E21, 0x7E22, 0x7E23, 0x7E24, 0x7E25, 0x7E26,
+  0x7E27, 0x7E28, 0x7E29, 0x7E2A, 0x7E2B, 0x7E2C, 0x7E2D, 0x7E2E,
+  0x7E2F, 0x7E30, 0x7E31, 0x7E32, 0x7E33, 0x7E34, 0x7E35, 0x7E36,
+  0x7E37, 0x7E38, 0x7E39, 0x7E3A, 0x7E3C, 0x7E3D, 0x7E3E, 0x7E3F,
+  0x7E40, 0x7E42, 0x7E43, 0x7E44, 0x7E45, 0x7E46, 0x7E48, 0x7E49,
+  0x7E4A, 0x7E4B, 0x7E4C, 0x7E4D, 0x7E4E, 0x7E4F, 0x7E50, 0x7E51,
+  0x7E52, 0x7E53, 0x7E54, 0x7E55, 0x7E56, 0x7E57, 0x7E58, 0x7E59,
+  0x7E5A, 0x7E5B, 0x7E5C, 0x7E5D, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1,
+  0x9A8F, 0x5580, 0x5496, 0x5361, 0x54AF, 0x5F00, 0x63E9, 0x6977,
+  0x51EF, 0x6168, 0x520A, 0x582A, 0x52D8, 0x574E, 0x780D, 0x770B,
+  0x5EB7, 0x6177, 0x7CE0, 0x625B, 0x6297, 0x4EA2, 0x7095, 0x8003,
+  0x62F7, 0x70E4, 0x9760, 0x5777, 0x82DB, 0x67EF, 0x68F5, 0x78D5,
+  0x9897, 0x79D1, 0x58F3, 0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B,
+  0x5BA2, 0x8BFE, 0x80AF, 0x5543, 0x57A6, 0x6073, 0x5751, 0x542D,
+  0x7A7A, 0x6050, 0x5B54, 0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7,
+  0x67AF, 0x54ED, 0x7A9F, 0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938,
+  0x57AE, 0x630E, 0x8DE8, 0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB,
+  0x5BBD, 0x6B3E, 0x5321, 0x7B50, 0x72C2, 0x6846, 0x77FF, 0x7736,
+  0x65F7, 0x51B5, 0x4E8F, 0x76D4, 0x5CBF, 0x7AA5, 0x8475, 0x594E,
+  0x9B41, 0x5080, 0x7E5E, 0x7E5F, 0x7E60, 0x7E61, 0x7E62, 0x7E63,
+  0x7E64, 0x7E65, 0x7E66, 0x7E67, 0x7E68, 0x7E69, 0x7E6A, 0x7E6B,
+  0x7E6C, 0x7E6D, 0x7E6E, 0x7E6F, 0x7E70, 0x7E71, 0x7E72, 0x7E73,
+  0x7E74, 0x7E75, 0x7E76, 0x7E77, 0x7E78, 0x7E79, 0x7E7A, 0x7E7B,
+  0x7E7C, 0x7E7D, 0x7E7E, 0x7E7F, 0x7E80, 0x7E81, 0x7E83, 0x7E84,
+  0x7E85, 0x7E86, 0x7E87, 0x7E88, 0x7E89, 0x7E8A, 0x7E8B, 0x7E8C,
+  0x7E8D, 0x7E8E, 0x7E8F, 0x7E90, 0x7E91, 0x7E92, 0x7E93, 0x7E94,
+  0x7E95, 0x7E96, 0x7E97, 0x7E98, 0x7E99, 0x7E9A, 0x7E9C, 0x7E9D,
+plane 48        
+at 0x00
+  0x7E9E, 0x7EAE, 0x7EB4, 0x7EBB, 0x7EBC, 0x7ED6, 0x7EE4, 0x7EEC,
+  0x7EF9, 0x7F0A, 0x7F10, 0x7F1E, 0x7F37, 0x7F39, 0x7F3B, 0x7F3C,
+  0x7F3D, 0x7F3E, 0x7F3F, 0x7F40, 0x7F41, 0x7F43, 0x7F46, 0x7F47,
+  0x7F48, 0x7F49, 0x7F4A, 0x7F4B, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F4F,
+  0x7F52, 0x7F53, 0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346,
+  0x56F0, 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587,
+  0x8721, 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD,
+  0x5A6A, 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30,
+  0x63FD, 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994,
+  0x72FC, 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262,
+  0x8001, 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50,
+  0x96F7, 0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2,
+  0x808B, 0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8,
+  0x7281, 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E,
+  0x91CC, 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D,
+  0x5389, 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0,
+  0x7F56, 0x7F59, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F5E, 0x7F60, 0x7F63,
+  0x7F64, 0x7F65, 0x7F66, 0x7F67, 0x7F6B, 0x7F6C, 0x7F6D, 0x7F6F,
+  0x7F70, 0x7F73, 0x7F75, 0x7F76, 0x7F77, 0x7F78, 0x7F7A, 0x7F7B,
+  0x7F7C, 0x7F7D, 0x7F7F, 0x7F80, 0x7F82, 0x7F83, 0x7F84, 0x7F85,
+  0x7F86, 0x7F87, 0x7F88, 0x7F89, 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90,
+  0x7F91, 0x7F92, 0x7F93, 0x7F95, 0x7F96, 0x7F97, 0x7F98, 0x7F99,
+  0x7F9B, 0x7F9C, 0x7FA0, 0x7FA2, 0x7FA3, 0x7FA5, 0x7FA6, 0x7FA8,
+  0x7FA9, 0x7FAA, 0x7FAB, 0x7FAC, 0x7FAD, 0x7FAE, 0x7FB1, 0x7FB3,
+  0x7FB4, 0x7FB5, 0x7FB6, 0x7FB7, 0x7FBA, 0x7FBB, 0x7FBE, 0x7FC0,
+  0x7FC2, 0x7FC3, 0x7FC4, 0x7FC6, 0x7FC7, 0x7FC8, 0x7FC9, 0x7FCB,
+  0x7FCD, 0x7FCF, 0x7FD0, 0x7FD1, 0x7FD2, 0x7FD3, 0x7FD6, 0x7FD7,
+  0x7FD9, 0x7FDA, 0x7FDB, 0x7FDC, 0x7FDD, 0x7FDE, 0x7FE2, 0x7FE3,
+  0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, 0x54E9,
+  0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, 0x6D9F,
+  0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, 0x7CAE,
+  0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, 0x91CF, 0x667E,
+plane 49        
+at 0x00
+  0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, 0x71CE, 0x5BE5,
+  0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, 0x6599, 0x5217,
+  0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, 0x78F7, 0x9716,
+  0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D, 0x62CE,
+  0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, 0x51CC,
+  0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, 0x7409,
+  0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, 0x67F3,
+  0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF, 0x7FE4, 0x7FE7,
+  0x7FE8, 0x7FEA, 0x7FEB, 0x7FEC, 0x7FED, 0x7FEF, 0x7FF2, 0x7FF4,
+  0x7FF5, 0x7FF6, 0x7FF7, 0x7FF8, 0x7FF9, 0x7FFA, 0x7FFD, 0x7FFE,
+  0x7FFF, 0x8002, 0x8007, 0x8008, 0x8009, 0x800A, 0x800E, 0x800F,
+  0x8011, 0x8013, 0x801A, 0x801B, 0x801D, 0x801E, 0x801F, 0x8021,
+  0x8023, 0x8024, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030,
+  0x8032, 0x8034, 0x8039, 0x803A, 0x803C, 0x803E, 0x8040, 0x8041,
+  0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804E, 0x804F, 0x8050,
+  0x8051, 0x8053, 0x8055, 0x8056, 0x8057, 0x8059, 0x805B, 0x805C,
+  0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063, 0x8064,
+  0x8065, 0x8066, 0x8067, 0x8068, 0x806B, 0x806C, 0x806D, 0x806E,
+  0x806F, 0x8070, 0x8072, 0x8073, 0x8074, 0x8075, 0x8076, 0x8077,
+  0x8078, 0x8079, 0x807A, 0x807B, 0x807C, 0x807D, 0x9686, 0x5784,
+  0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402, 0x7BD3, 0x6F0F, 0x964B,
+  0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089, 0x63B3, 0x5364, 0x864F,
+  0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, 0x8D42, 0x9E7F, 0x6F5E,
+  0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, 0x5415, 0x94DD, 0x4FA3,
+  0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, 0x6C2F, 0x5F8B, 0x7387,
+  0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, 0x6EE6, 0x5375, 0x4E71,
+  0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, 0x4ED1, 0x6CA6, 0x7EB6,
+  0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B, 0x9523, 0x7BA9, 0x9AA1,
+  0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC, 0x5988, 0x9EBB, 0x739B,
+  0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B, 0x5417, 0x57CB, 0x4E70,
+  0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792, 0x9992, 0x86EE, 0x6EE1,
+  0x8513, 0x66FC, 0x6162, 0x6F2B, 0x807E, 0x8081, 0x8082, 0x8085,
+plane 50        
+at 0x00
+  0x8088, 0x808A, 0x808D, 0x808E, 0x808F, 0x8090, 0x8091, 0x8092,
+  0x8094, 0x8095, 0x8097, 0x8099, 0x809E, 0x80A3, 0x80A6, 0x80A7,
+  0x80A8, 0x80AC, 0x80B0, 0x80B3, 0x80B5, 0x80B6, 0x80B8, 0x80B9,
+  0x80BB, 0x80C5, 0x80C7, 0x80C8, 0x80C9, 0x80CA, 0x80CB, 0x80CF,
+  0x80D0, 0x80D1, 0x80D2, 0x80D3, 0x80D4, 0x80D5, 0x80D8, 0x80DF,
+  0x80E0, 0x80E2, 0x80E3, 0x80E6, 0x80EE, 0x80F5, 0x80F7, 0x80F9,
+  0x80FB, 0x80FE, 0x80FF, 0x8100, 0x8101, 0x8103, 0x8104, 0x8105,
+  0x8107, 0x8108, 0x810B, 0x810C, 0x8115, 0x8117, 0x8119, 0x811B,
+  0x811C, 0x811D, 0x811F, 0x8120, 0x8121, 0x8122, 0x8123, 0x8124,
+  0x8125, 0x8126, 0x8127, 0x8128, 0x8129, 0x812A, 0x812B, 0x812D,
+  0x812E, 0x8130, 0x8133, 0x8134, 0x8135, 0x8137, 0x8139, 0x813A,
+  0x813B, 0x813C, 0x813D, 0x813F, 0x8C29, 0x8292, 0x832B, 0x76F2,
+  0x6C13, 0x5FD9, 0x83BD, 0x732B, 0x8305, 0x951A, 0x6BDB, 0x77DB,
+  0x94C6, 0x536F, 0x8302, 0x5192, 0x5E3D, 0x8C8C, 0x8D38, 0x4E48,
+  0x73AB, 0x679A, 0x6885, 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709,
+  0x5A92, 0x9541, 0x6BCF, 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A,
+  0x95E8, 0x95F7, 0x4EEC, 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530,
+  0x731B, 0x68A6, 0x5B5F, 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7,
+  0x8C1C, 0x5F25, 0x7C73, 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6,
+  0x5E42, 0x68C9, 0x7720, 0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29,
+  0x7F05, 0x9762, 0x82D7, 0x63CF, 0x7784, 0x85D0, 0x79D2, 0x6E3A,
+  0x5E99, 0x5999, 0x8511, 0x706D, 0x6C11, 0x62BF, 0x76BF, 0x654F,
+  0x60AF, 0x95FD, 0x660E, 0x879F, 0x9E23, 0x94ED, 0x540D, 0x547D,
+  0x8C2C, 0x6478, 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145,
+  0x8147, 0x8149, 0x814D, 0x814E, 0x814F, 0x8152, 0x8156, 0x8157,
+  0x8158, 0x815B, 0x815C, 0x815D, 0x815E, 0x815F, 0x8161, 0x8162,
+  0x8163, 0x8164, 0x8166, 0x8168, 0x816A, 0x816B, 0x816C, 0x816F,
+  0x8172, 0x8173, 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183,
+  0x8184, 0x8185, 0x8186, 0x8187, 0x8189, 0x818B, 0x818C, 0x818D,
+  0x818E, 0x8190, 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197,
+  0x8199, 0x819A, 0x819E, 0x819F, 0x81A0, 0x81A1, 0x81A2, 0x81A4,
+  0x81A5, 0x81A7, 0x81A9, 0x81AB, 0x81AC, 0x81AD, 0x81AE, 0x81AF,
+plane 51        
+at 0x00
+  0x81B0, 0x81B1, 0x81B2, 0x81B4, 0x81B5, 0x81B6, 0x81B7, 0x81B8,
+  0x81B9, 0x81BC, 0x81BD, 0x81BE, 0x81BF, 0x81C4, 0x81C5, 0x81C7,
+  0x81C8, 0x81C9, 0x81CB, 0x81CD, 0x81CE, 0x81CF, 0x81D0, 0x81D1,
+  0x81D2, 0x81D3, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469,
+  0x9B54, 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20,
+  0x5BDE, 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9,
+  0x59C6, 0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728,
+  0x76EE, 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0,
+  0x90A3, 0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, 0x8010, 0x5948,
+  0x5357, 0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, 0x607C, 0x95F9,
+  0x6DD6, 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, 0x59AE, 0x9713,
+  0x502A, 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, 0x9006,
+  0x6EBA, 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5,
+  0x5A18, 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E,
+  0x954A, 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81,
+  0x81D4, 0x81D5, 0x81D6, 0x81D7, 0x81D8, 0x81D9, 0x81DA, 0x81DB,
+  0x81DC, 0x81DD, 0x81DE, 0x81DF, 0x81E0, 0x81E1, 0x81E2, 0x81E4,
+  0x81E5, 0x81E6, 0x81E8, 0x81E9, 0x81EB, 0x81EE, 0x81EF, 0x81F0,
+  0x81F1, 0x81F2, 0x81F5, 0x81F6, 0x81F7, 0x81F8, 0x81F9, 0x81FA,
+  0x81FD, 0x81FF, 0x8203, 0x8207, 0x8208, 0x8209, 0x820A, 0x820B,
+  0x820E, 0x820F, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218,
+  0x8219, 0x821A, 0x821D, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227,
+  0x8229, 0x822E, 0x8232, 0x823A, 0x823C, 0x823D, 0x823F, 0x8240,
+  0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824A, 0x824C,
+  0x824D, 0x824E, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255,
+  0x8256, 0x8257, 0x8259, 0x825B, 0x825C, 0x825D, 0x825E, 0x8260,
+  0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, 0x8269,
+  0x62E7, 0x6CDE, 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113, 0x6D53,
+  0x519C, 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, 0x6696, 0x8650,
+  0x759F, 0x632A, 0x61E6, 0x7CEF, 0x8BFA, 0x54E6, 0x6B27, 0x9E25,
+  0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, 0x556A, 0x8DB4, 0x722C,
+  0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, 0x5F98, 0x6E43,
+plane 52        
+at 0x00
+  0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554, 0x5224,
+  0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B, 0x5486,
+  0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA, 0x57F9,
+  0x88F4, 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7, 0x76C6,
+  0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA, 0x787C,
+  0x7BF7, 0x81A8, 0x670B, 0x9E4F, 0x6367, 0x78B0, 0x576F, 0x7812,
+  0x9739, 0x6279, 0x62AB, 0x5288, 0x7435, 0x6BD7, 0x826A, 0x826B,
+  0x826C, 0x826D, 0x8271, 0x8275, 0x8276, 0x8277, 0x8278, 0x827B,
+  0x827C, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286, 0x8287, 0x8289,
+  0x828C, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296, 0x829A, 0x829B,
+  0x829E, 0x82A0, 0x82A2, 0x82A3, 0x82A7, 0x82B2, 0x82B5, 0x82B6,
+  0x82BA, 0x82BB, 0x82BC, 0x82BF, 0x82C0, 0x82C2, 0x82C3, 0x82C5,
+  0x82C6, 0x82C9, 0x82D0, 0x82D6, 0x82D9, 0x82DA, 0x82DD, 0x82E2,
+  0x82E7, 0x82E8, 0x82E9, 0x82EA, 0x82EC, 0x82ED, 0x82EE, 0x82F0,
+  0x82F2, 0x82F3, 0x82F5, 0x82F6, 0x82F8, 0x82FA, 0x82FC, 0x82FD,
+  0x82FE, 0x82FF, 0x8300, 0x830A, 0x830B, 0x830D, 0x8310, 0x8312,
+  0x8313, 0x8316, 0x8318, 0x8319, 0x831D, 0x831E, 0x831F, 0x8320,
+  0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326, 0x8329, 0x832A,
+  0x832E, 0x8330, 0x8332, 0x8337, 0x833B, 0x833D, 0x5564, 0x813E,
+  0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, 0x5C41, 0x8B6C, 0x7BC7,
+  0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, 0x74E2, 0x7968, 0x6487,
+  0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, 0x8058, 0x4E52, 0x576A,
+  0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6, 0x8BC4, 0x5C4F, 0x5761,
+  0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44, 0x8FEB, 0x7C95, 0x5256,
+  0x6251, 0x94FA, 0x4EC6, 0x8386, 0x8461, 0x83E9, 0x84B2, 0x57D4,
+  0x6734, 0x5703, 0x666E, 0x6D66, 0x8C31, 0x66DD, 0x7011, 0x671F,
+  0x6B3A, 0x6816, 0x621A, 0x59BB, 0x4E03, 0x51C4, 0x6F06, 0x67D2,
+  0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67, 0x7566, 0x5D0E, 0x8110,
+  0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91, 0x8D77, 0x5C82, 0x4E5E,
+  0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, 0x6C14, 0x8FC4, 0x5F03,
+  0x6C7D, 0x6CE3, 0x8BAB, 0x6390, 0x833E, 0x833F, 0x8341, 0x8342,
+  0x8344, 0x8345, 0x8348, 0x834A, 0x834B, 0x834C, 0x834D, 0x834E,
+plane 53        
+at 0x00
+  0x8353, 0x8355, 0x8356, 0x8357, 0x8358, 0x8359, 0x835D, 0x8362,
+  0x8370, 0x8371, 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8379,
+  0x837A, 0x837E, 0x837F, 0x8380, 0x8381, 0x8382, 0x8383, 0x8384,
+  0x8387, 0x8388, 0x838A, 0x838B, 0x838C, 0x838D, 0x838F, 0x8390,
+  0x8391, 0x8394, 0x8395, 0x8396, 0x8397, 0x8399, 0x839A, 0x839D,
+  0x839F, 0x83A1, 0x83A2, 0x83A3, 0x83A4, 0x83A5, 0x83A6, 0x83A7,
+  0x83AC, 0x83AD, 0x83AE, 0x83AF, 0x83B5, 0x83BB, 0x83BE, 0x83BF,
+  0x83C2, 0x83C3, 0x83C4, 0x83C6, 0x83C8, 0x83C9, 0x83CB, 0x83CD,
+  0x83CE, 0x83D0, 0x83D1, 0x83D2, 0x83D3, 0x83D5, 0x83D7, 0x83D9,
+  0x83DA, 0x83DB, 0x83DE, 0x83E2, 0x83E3, 0x83E4, 0x83E6, 0x83E7,
+  0x83E8, 0x83EB, 0x83EC, 0x83ED, 0x6070, 0x6D3D, 0x7275, 0x6266,
+  0x948E, 0x94C5, 0x5343, 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E,
+  0x9ED4, 0x94B1, 0x94B3, 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34,
+  0x5811, 0x5D4C, 0x6B20, 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C,
+  0x5899, 0x8537, 0x5F3A, 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084,
+  0x6865, 0x77A7, 0x4E54, 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8,
+  0x5CED, 0x4FCF, 0x7A8D, 0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83,
+  0x94A6, 0x4FB5, 0x4EB2, 0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2,
+  0x79BD, 0x5BDD, 0x6C81, 0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F,
+  0x6E05, 0x64CE, 0x6674, 0x6C30, 0x60C5, 0x9877, 0x8BF7, 0x5E86,
+  0x743C, 0x7A77, 0x79CB, 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA,
+  0x914B, 0x6CC5, 0x8D8B, 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48,
+  0x9A71, 0x6E20, 0x83EE, 0x83EF, 0x83F3, 0x83F4, 0x83F5, 0x83F6,
+  0x83F7, 0x83FA, 0x83FB, 0x83FC, 0x83FE, 0x83FF, 0x8400, 0x8402,
+  0x8405, 0x8407, 0x8408, 0x8409, 0x840A, 0x8410, 0x8412, 0x8413,
+  0x8414, 0x8415, 0x8416, 0x8417, 0x8419, 0x841A, 0x841B, 0x841E,
+  0x841F, 0x8420, 0x8421, 0x8422, 0x8423, 0x8429, 0x842A, 0x842B,
+  0x842C, 0x842D, 0x842E, 0x842F, 0x8430, 0x8432, 0x8433, 0x8434,
+  0x8435, 0x8436, 0x8437, 0x8439, 0x843A, 0x843B, 0x843E, 0x843F,
+  0x8440, 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448,
+  0x8449, 0x844A, 0x844B, 0x844C, 0x844D, 0x844E, 0x844F, 0x8450,
+  0x8452, 0x8453, 0x8454, 0x8455, 0x8456, 0x8458, 0x845D, 0x845E,
+plane 54        
+at 0x00
+  0x845F, 0x8460, 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468,
+  0x846A, 0x846E, 0x846F, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479,
+  0x847B, 0x847C, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708,
+  0x98A7, 0x6743, 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC,
+  0x5238, 0x529D, 0x7F3A, 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7,
+  0x786E, 0x96C0, 0x88D9, 0x7FA4, 0x7136, 0x71C3, 0x5189, 0x67D3,
+  0x74E4, 0x58E4, 0x6518, 0x56B7, 0x8BA9, 0x9976, 0x6270, 0x7ED5,
+  0x60F9, 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, 0x97E7, 0x4EFB,
+  0x8BA4, 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, 0x620E,
+  0x8338, 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2,
+  0x5197, 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A,
+  0x5982, 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E,
+  0x854A, 0x745E, 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492,
+  0x6D12, 0x8428, 0x816E, 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1,
+  0x847D, 0x847E, 0x847F, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485,
+  0x8486, 0x848A, 0x848D, 0x848F, 0x8490, 0x8491, 0x8492, 0x8493,
+  0x8494, 0x8495, 0x8496, 0x8498, 0x849A, 0x849B, 0x849D, 0x849E,
+  0x849F, 0x84A0, 0x84A2, 0x84A3, 0x84A4, 0x84A5, 0x84A6, 0x84A7,
+  0x84A8, 0x84A9, 0x84AA, 0x84AB, 0x84AC, 0x84AD, 0x84AE, 0x84B0,
+  0x84B1, 0x84B3, 0x84B5, 0x84B6, 0x84B7, 0x84BB, 0x84BC, 0x84BE,
+  0x84C0, 0x84C2, 0x84C3, 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x84CB,
+  0x84CC, 0x84CE, 0x84CF, 0x84D2, 0x84D4, 0x84D5, 0x84D7, 0x84D8,
+  0x84D9, 0x84DA, 0x84DB, 0x84DC, 0x84DE, 0x84E1, 0x84E2, 0x84E4,
+  0x84E7, 0x84E8, 0x84E9, 0x84EA, 0x84EB, 0x84ED, 0x84EE, 0x84EF,
+  0x84F1, 0x84F2, 0x84F3, 0x84F4, 0x84F5, 0x84F6, 0x84F7, 0x84F8,
+  0x84F9, 0x84FA, 0x84FB, 0x84FD, 0x84FE, 0x8500, 0x8501, 0x8502,
+  0x4F1E, 0x6563, 0x6851, 0x55D3, 0x4E27, 0x6414, 0x9A9A, 0x626B,
+  0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, 0x50E7, 0x838E, 0x7802,
+  0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, 0x715E, 0x7B5B,
+  0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D, 0x886B,
+  0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55, 0x6247,
+  0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A, 0x5C1A,
+plane 55        
+at 0x00
+  0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA, 0x97F6,
+  0x5C11, 0x54E8, 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7, 0x820C,
+  0x820D, 0x8D66, 0x6444, 0x5C04, 0x6151, 0x6D89, 0x793E, 0x8BBE,
+  0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, 0x5A20, 0x7EC5,
+  0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, 0x80BE, 0x614E, 0x6E17,
+  0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3, 0x8503, 0x8504,
+  0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850A, 0x850B, 0x850D,
+  0x850E, 0x850F, 0x8510, 0x8512, 0x8514, 0x8515, 0x8516, 0x8518,
+  0x8519, 0x851B, 0x851C, 0x851D, 0x851E, 0x8520, 0x8522, 0x8523,
+  0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529, 0x852A, 0x852D,
+  0x852E, 0x852F, 0x8530, 0x8531, 0x8532, 0x8533, 0x8534, 0x8535,
+  0x8536, 0x853E, 0x853F, 0x8540, 0x8541, 0x8542, 0x8544, 0x8545,
+  0x8546, 0x8547, 0x854B, 0x854C, 0x854D, 0x854E, 0x854F, 0x8550,
+  0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8557, 0x8558, 0x855A,
+  0x855B, 0x855C, 0x855D, 0x855F, 0x8560, 0x8561, 0x8562, 0x8563,
+  0x8565, 0x8566, 0x8567, 0x8569, 0x856A, 0x856B, 0x856C, 0x856D,
+  0x856E, 0x856F, 0x8570, 0x8571, 0x8573, 0x8575, 0x8576, 0x8577,
+  0x8578, 0x857C, 0x857D, 0x857F, 0x8580, 0x8581, 0x7701, 0x76DB,
+  0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, 0x72EE, 0x65BD, 0x6E7F,
+  0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, 0x62FE, 0x65F6, 0x4EC0,
+  0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, 0x77E2, 0x4F7F, 0x5C4E,
+  0x9A76, 0x59CB, 0x5F0F, 0x793A, 0x58EB, 0x4E16, 0x67FF, 0x4E8B,
+  0x62ED, 0x8A93, 0x901D, 0x52BF, 0x662F, 0x55DC, 0x566C, 0x9002,
+  0x4ED5, 0x4F8D, 0x91CA, 0x9970, 0x6C0F, 0x5E02, 0x6043, 0x5BA4,
+  0x89C6, 0x8BD5, 0x6536, 0x624B, 0x9996, 0x5B88, 0x5BFF, 0x6388,
+  0x552E, 0x53D7, 0x7626, 0x517D, 0x852C, 0x67A2, 0x68B3, 0x6B8A,
+  0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, 0x758F, 0x4E66, 0x8D4E,
+  0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, 0x7F72, 0x8700, 0x9ECD,
+  0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, 0x675F, 0x620D, 0x7AD6,
+  0x5885, 0x5EB6, 0x6570, 0x6F31, 0x8582, 0x8583, 0x8586, 0x8588,
+  0x8589, 0x858A, 0x858B, 0x858C, 0x858D, 0x858E, 0x8590, 0x8591,
+  0x8592, 0x8593, 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x8599,
+plane 56        
+at 0x00
+  0x859A, 0x859D, 0x859E, 0x859F, 0x85A0, 0x85A1, 0x85A2, 0x85A3,
+  0x85A5, 0x85A6, 0x85A7, 0x85A9, 0x85AB, 0x85AC, 0x85AD, 0x85B1,
+  0x85B2, 0x85B3, 0x85B4, 0x85B5, 0x85B6, 0x85B8, 0x85BA, 0x85BB,
+  0x85BC, 0x85BD, 0x85BE, 0x85BF, 0x85C0, 0x85C2, 0x85C3, 0x85C4,
+  0x85C5, 0x85C6, 0x85C7, 0x85C8, 0x85CA, 0x85CB, 0x85CC, 0x85CD,
+  0x85CE, 0x85D1, 0x85D2, 0x85D4, 0x85D6, 0x85D7, 0x85D8, 0x85D9,
+  0x85DA, 0x85DB, 0x85DD, 0x85DE, 0x85DF, 0x85E0, 0x85E1, 0x85E2,
+  0x85E3, 0x85E5, 0x85E6, 0x85E7, 0x85E8, 0x85EA, 0x85EB, 0x85EC,
+  0x85ED, 0x85EE, 0x85EF, 0x85F0, 0x85F1, 0x85F2, 0x85F3, 0x85F4,
+  0x85F5, 0x85F6, 0x85F7, 0x85F8, 0x6055, 0x5237, 0x800D, 0x6454,
+  0x8870, 0x7529, 0x5E05, 0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D,
+  0x8C01, 0x6C34, 0x7761, 0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C,
+  0x8BF4, 0x7855, 0x6714, 0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D,
+  0x79C1, 0x53F8, 0x4E1D, 0x6B7B, 0x8086, 0x5BFA, 0x55E3, 0x56DB,
+  0x4F3A, 0x4F3C, 0x9972, 0x5DF3, 0x677E, 0x8038, 0x6002, 0x9882,
+  0x9001, 0x5B8B, 0x8BBC, 0x8BF5, 0x641C, 0x8258, 0x64DE, 0x55FD,
+  0x82CF, 0x9165, 0x4FD7, 0x7D20, 0x901F, 0x7C9F, 0x50F3, 0x5851,
+  0x6EAF, 0x5BBF, 0x8BC9, 0x8083, 0x9178, 0x849C, 0x7B97, 0x867D,
+  0x968B, 0x968F, 0x7EE5, 0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042,
+  0x96A7, 0x795F, 0x5B59, 0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506,
+  0x7F29, 0x7410, 0x7D22, 0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83,
+  0x5979, 0x5854, 0x85F9, 0x85FA, 0x85FC, 0x85FD, 0x85FE, 0x8600,
+  0x8601, 0x8602, 0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609,
+  0x860A, 0x860B, 0x860C, 0x860D, 0x860E, 0x860F, 0x8610, 0x8612,
+  0x8613, 0x8614, 0x8615, 0x8617, 0x8618, 0x8619, 0x861A, 0x861B,
+  0x861C, 0x861D, 0x861E, 0x861F, 0x8620, 0x8621, 0x8622, 0x8623,
+  0x8624, 0x8625, 0x8626, 0x8628, 0x862A, 0x862B, 0x862C, 0x862D,
+  0x862E, 0x862F, 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635,
+  0x8636, 0x8637, 0x8639, 0x863A, 0x863B, 0x863D, 0x863E, 0x863F,
+  0x8640, 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647,
+  0x8648, 0x8649, 0x864A, 0x864B, 0x864C, 0x8652, 0x8653, 0x8655,
+  0x8656, 0x8657, 0x8658, 0x8659, 0x865B, 0x865C, 0x865D, 0x865F,
+plane 57        
+at 0x00
+  0x8660, 0x8661, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668,
+  0x8669, 0x866A, 0x736D, 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4,
+  0x62AC, 0x53F0, 0x6CF0, 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D,
+  0x644A, 0x8D2A, 0x762B, 0x6EE9, 0x575B, 0x6A80, 0x75F0, 0x6F6D,
+  0x8C2D, 0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, 0x63A2, 0x53F9,
+  0x70AD, 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B, 0x5510,
+  0x7CD6, 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B,
+  0x6ED4, 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8,
+  0x5957, 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254,
+  0x8E22, 0x9511, 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF,
+  0x568F, 0x60D5, 0x6D95, 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B,
+  0x7530, 0x751C, 0x606C, 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2,
+  0x773A, 0x8DF3, 0x8D34, 0x94C1, 0x5E16, 0x5385, 0x542C, 0x70C3,
+  0x866D, 0x866F, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676,
+  0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688,
+  0x8689, 0x868E, 0x868F, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696,
+  0x8697, 0x8698, 0x8699, 0x869A, 0x869B, 0x869E, 0x869F, 0x86A0,
+  0x86A1, 0x86A2, 0x86A5, 0x86A6, 0x86AB, 0x86AD, 0x86AE, 0x86B2,
+  0x86B3, 0x86B7, 0x86B8, 0x86B9, 0x86BB, 0x86BC, 0x86BD, 0x86BE,
+  0x86BF, 0x86C1, 0x86C2, 0x86C3, 0x86C5, 0x86C8, 0x86CC, 0x86CD,
+  0x86D2, 0x86D3, 0x86D5, 0x86D6, 0x86D7, 0x86DA, 0x86DC, 0x86DD,
+  0x86E0, 0x86E1, 0x86E2, 0x86E3, 0x86E5, 0x86E6, 0x86E7, 0x86E8,
+  0x86EA, 0x86EB, 0x86EC, 0x86EF, 0x86F5, 0x86F6, 0x86F7, 0x86FA,
+  0x86FB, 0x86FC, 0x86FD, 0x86FF, 0x8701, 0x8704, 0x8705, 0x8706,
+  0x870B, 0x870C, 0x870E, 0x870F, 0x8710, 0x8711, 0x8714, 0x8716,
+  0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247, 0x901A,
+  0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, 0x6876,
+  0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, 0x900F,
+  0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, 0x5C60,
+  0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, 0x817F,
+  0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, 0x6258,
+  0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, 0x59A5, 0x62D3,
+plane 58        
+at 0x00
+  0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6, 0x889C,
+  0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D, 0x4E38,
+  0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB, 0x5B9B,
+  0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, 0x7F51,
+  0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01, 0x8719, 0x871B,
+  0x871D, 0x871F, 0x8720, 0x8724, 0x8726, 0x8727, 0x8728, 0x872A,
+  0x872B, 0x872C, 0x872D, 0x872F, 0x8730, 0x8732, 0x8733, 0x8735,
+  0x8736, 0x8738, 0x8739, 0x873A, 0x873C, 0x873D, 0x8740, 0x8741,
+  0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874A, 0x874B, 0x874D,
+  0x874F, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755, 0x8756, 0x8758,
+  0x875A, 0x875B, 0x875C, 0x875D, 0x875E, 0x875F, 0x8761, 0x8762,
+  0x8766, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B, 0x876C, 0x876D,
+  0x876F, 0x8771, 0x8772, 0x8773, 0x8775, 0x8777, 0x8778, 0x8779,
+  0x877A, 0x877F, 0x8780, 0x8781, 0x8784, 0x8786, 0x8787, 0x8789,
+  0x878A, 0x878C, 0x878E, 0x878F, 0x8790, 0x8791, 0x8792, 0x8794,
+  0x8795, 0x8796, 0x8798, 0x8799, 0x879A, 0x879B, 0x879C, 0x879D,
+  0x879E, 0x87A0, 0x87A1, 0x87A2, 0x87A3, 0x87A4, 0x5DCD, 0x5FAE,
+  0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 0x552F, 0x60DF, 0x4E3A,
+  0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4, 0x4F1F, 0x4F2A, 0x5C3E,
+  0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F, 0x80C3, 0x5582, 0x9B4F,
+  0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170, 0x536B, 0x761F, 0x6E29,
+  0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B, 0x7A33, 0x7D0A, 0x95EE,
+  0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, 0x6DA1, 0x7A9D, 0x6211,
+  0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 0x545C, 0x94A8, 0x4E4C,
+  0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, 0x68A7, 0x543E, 0x5434,
+  0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 0x821E, 0x4F0D, 0x4FAE,
+  0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 0x52FF, 0x52A1, 0x609F,
+  0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F, 0x7852, 0x77FD, 0x6670,
+  0x563B, 0x5438, 0x9521, 0x727A, 0x87A5, 0x87A6, 0x87A7, 0x87A9,
+  0x87AA, 0x87AE, 0x87B0, 0x87B1, 0x87B2, 0x87B4, 0x87B6, 0x87B7,
+  0x87B8, 0x87B9, 0x87BB, 0x87BC, 0x87BE, 0x87BF, 0x87C1, 0x87C2,
+  0x87C3, 0x87C4, 0x87C5, 0x87C7, 0x87C8, 0x87C9, 0x87CC, 0x87CD,
+plane 59        
+at 0x00
+  0x87CE, 0x87CF, 0x87D0, 0x87D4, 0x87D5, 0x87D6, 0x87D7, 0x87D8,
+  0x87D9, 0x87DA, 0x87DC, 0x87DD, 0x87DE, 0x87DF, 0x87E1, 0x87E2,
+  0x87E3, 0x87E4, 0x87E6, 0x87E7, 0x87E8, 0x87E9, 0x87EB, 0x87EC,
+  0x87ED, 0x87EF, 0x87F0, 0x87F1, 0x87F2, 0x87F3, 0x87F4, 0x87F5,
+  0x87F6, 0x87F7, 0x87F8, 0x87FA, 0x87FB, 0x87FC, 0x87FD, 0x87FF,
+  0x8800, 0x8801, 0x8802, 0x8804, 0x8805, 0x8806, 0x8807, 0x8808,
+  0x8809, 0x880B, 0x880C, 0x880D, 0x880E, 0x880F, 0x8810, 0x8811,
+  0x8812, 0x8814, 0x8817, 0x8818, 0x8819, 0x881A, 0x881C, 0x881D,
+  0x881E, 0x881F, 0x8820, 0x8823, 0x7A00, 0x606F, 0x5E0C, 0x6089,
+  0x819D, 0x5915, 0x60DC, 0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280,
+  0x6A84, 0x88AD, 0x5E2D, 0x4E60, 0x5AB3, 0x559C, 0x94E3, 0x6D17,
+  0x7CFB, 0x9699, 0x620F, 0x7EC6, 0x778E, 0x867E, 0x5323, 0x971E,
+  0x8F96, 0x6687, 0x5CE1, 0x4FA0, 0x72ED, 0x4E0B, 0x53A6, 0x590F,
+  0x5413, 0x6380, 0x9528, 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, 0x54B8,
+  0x8D24, 0x8854, 0x8237, 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E,
+  0x9669, 0x73B0, 0x732E, 0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA,
+  0x9677, 0x9650, 0x7EBF, 0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1,
+  0x8944, 0x6E58, 0x4E61, 0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD,
+  0x4EAB, 0x9879, 0x5DF7, 0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427,
+  0x785D, 0x9704, 0x524A, 0x54EE, 0x56A3, 0x9500, 0x6D88, 0x5BB5,
+  0x6DC6, 0x6653, 0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829,
+  0x882A, 0x882B, 0x882C, 0x882D, 0x882E, 0x882F, 0x8830, 0x8831,
+  0x8833, 0x8834, 0x8835, 0x8836, 0x8837, 0x8838, 0x883A, 0x883B,
+  0x883D, 0x883E, 0x883F, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847,
+  0x8848, 0x8849, 0x884A, 0x884B, 0x884E, 0x884F, 0x8850, 0x8851,
+  0x8852, 0x8853, 0x8855, 0x8856, 0x8858, 0x885A, 0x885B, 0x885C,
+  0x885D, 0x885E, 0x885F, 0x8860, 0x8866, 0x8867, 0x886A, 0x886D,
+  0x886F, 0x8871, 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879,
+  0x887A, 0x887B, 0x887C, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889,
+  0x888A, 0x888C, 0x888E, 0x888F, 0x8890, 0x8891, 0x8893, 0x8894,
+  0x8895, 0x8897, 0x8898, 0x8899, 0x889A, 0x889B, 0x889D, 0x889E,
+  0x889F, 0x88A0, 0x88A1, 0x88A3, 0x88A5, 0x88A6, 0x88A7, 0x88A8,
+plane 60        
+at 0x00
+  0x88A9, 0x88AA, 0x5C0F, 0x5B5D, 0x6821, 0x8096, 0x5578, 0x7B11,
+  0x6548, 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, 0x534F, 0x631F,
+  0x643A, 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0, 0x5378,
+  0x87F9, 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF,
+  0x950C, 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845,
+  0x661F, 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62,
+  0x90A2, 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144,
+  0x51F6, 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE,
+  0x7F9E, 0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, 0x7EE3, 0x589F,
+  0x620C, 0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, 0x8BB8, 0x84C4,
+  0x9157, 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, 0x7D6E, 0x5A7F,
+  0x7EEA, 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB, 0x7384,
+  0x88AC, 0x88AE, 0x88AF, 0x88B0, 0x88B2, 0x88B3, 0x88B4, 0x88B5,
+  0x88B6, 0x88B8, 0x88B9, 0x88BA, 0x88BB, 0x88BD, 0x88BE, 0x88BF,
+  0x88C0, 0x88C3, 0x88C4, 0x88C7, 0x88C8, 0x88CA, 0x88CB, 0x88CC,
+  0x88CD, 0x88CF, 0x88D0, 0x88D1, 0x88D3, 0x88D6, 0x88D7, 0x88DA,
+  0x88DB, 0x88DC, 0x88DD, 0x88DE, 0x88E0, 0x88E1, 0x88E6, 0x88E7,
+  0x88E9, 0x88EA, 0x88EB, 0x88EC, 0x88ED, 0x88EE, 0x88EF, 0x88F2,
+  0x88F5, 0x88F6, 0x88F7, 0x88FA, 0x88FB, 0x88FD, 0x88FF, 0x8900,
+  0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908, 0x8909,
+  0x890B, 0x890C, 0x890D, 0x890E, 0x890F, 0x8911, 0x8914, 0x8915,
+  0x8916, 0x8917, 0x8918, 0x891C, 0x891D, 0x891E, 0x891F, 0x8920,
+  0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929, 0x892C,
+  0x892D, 0x892E, 0x892F, 0x8931, 0x8932, 0x8933, 0x8935, 0x8937,
+  0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66, 0x7A74,
+  0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2, 0x5BFB,
+  0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A, 0x8FC5,
+  0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD, 0x7259,
+  0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, 0x54D1, 0x4E9A, 0x8BB6,
+  0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, 0x76D0, 0x4E25, 0x7814,
+  0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, 0x960E, 0x708E, 0x6CBF,
+  0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, 0x5830, 0x71D5,
+plane 61        
+at 0x00
+  0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4, 0x8C1A,
+  0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C, 0x4F6F,
+  0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2, 0x517B,
+  0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476, 0x8938, 0x8939,
+  0x893A, 0x893B, 0x893C, 0x893D, 0x893E, 0x893F, 0x8940, 0x8942,
+  0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 0x894A, 0x894B,
+  0x894C, 0x894D, 0x894E, 0x894F, 0x8950, 0x8951, 0x8952, 0x8953,
+  0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0x895A, 0x895B,
+  0x895C, 0x895D, 0x8960, 0x8961, 0x8962, 0x8963, 0x8964, 0x8965,
+  0x8967, 0x8968, 0x8969, 0x896A, 0x896B, 0x896C, 0x896D, 0x896E,
+  0x896F, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0x8976,
+  0x8977, 0x8978, 0x8979, 0x897A, 0x897C, 0x897D, 0x897E, 0x8980,
+  0x8982, 0x8984, 0x8985, 0x8987, 0x8988, 0x8989, 0x898A, 0x898B,
+  0x898C, 0x898D, 0x898E, 0x898F, 0x8990, 0x8991, 0x8992, 0x8993,
+  0x8994, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999, 0x899A, 0x899B,
+  0x899C, 0x899D, 0x899E, 0x899F, 0x89A0, 0x89A1, 0x6447, 0x5C27,
+  0x9065, 0x7A91, 0x8C23, 0x59DA, 0x54AC, 0x8200, 0x836F, 0x8981,
+  0x8000, 0x6930, 0x564E, 0x8036, 0x7237, 0x91CE, 0x51B6, 0x4E5F,
+  0x9875, 0x6396, 0x4E1A, 0x53F6, 0x66F3, 0x814B, 0x591C, 0x6DB2,
+  0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1, 0x4F9D, 0x4F0A, 0x8863,
+  0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA, 0x80F0, 0x7591, 0x6C82,
+  0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681, 0x501A, 0x5DF2, 0x4E59,
+  0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613, 0x9091, 0x5C79, 0x4EBF,
+  0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, 0x4EA6, 0x88D4, 0x610F,
+  0x6BC5, 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, 0x8BE3, 0x8BAE, 0x8C0A,
+  0x8BD1, 0x5F02, 0x7FFC, 0x7FCC, 0x7ECE, 0x8335, 0x836B, 0x56E0,
+  0x6BB7, 0x97F3, 0x9634, 0x59FB, 0x541F, 0x94F6, 0x6DEB, 0x5BC5,
+  0x996E, 0x5C39, 0x5F15, 0x9690, 0x89A2, 0x89A3, 0x89A4, 0x89A5,
+  0x89A6, 0x89A7, 0x89A8, 0x89A9, 0x89AA, 0x89AB, 0x89AC, 0x89AD,
+  0x89AE, 0x89AF, 0x89B0, 0x89B1, 0x89B2, 0x89B3, 0x89B4, 0x89B5,
+  0x89B6, 0x89B7, 0x89B8, 0x89B9, 0x89BA, 0x89BB, 0x89BC, 0x89BD,
+  0x89BE, 0x89BF, 0x89C0, 0x89C3, 0x89CD, 0x89D3, 0x89D4, 0x89D5,
+plane 62        
+at 0x00
+  0x89D7, 0x89D8, 0x89D9, 0x89DB, 0x89DD, 0x89DF, 0x89E0, 0x89E1,
+  0x89E2, 0x89E4, 0x89E7, 0x89E8, 0x89E9, 0x89EA, 0x89EC, 0x89ED,
+  0x89EE, 0x89F0, 0x89F1, 0x89F2, 0x89F4, 0x89F5, 0x89F6, 0x89F7,
+  0x89F8, 0x89F9, 0x89FA, 0x89FB, 0x89FC, 0x89FD, 0x89FE, 0x89FF,
+  0x8A01, 0x8A02, 0x8A03, 0x8A04, 0x8A05, 0x8A06, 0x8A08, 0x8A09,
+  0x8A0A, 0x8A0B, 0x8A0C, 0x8A0D, 0x8A0E, 0x8A0F, 0x8A10, 0x8A11,
+  0x8A12, 0x8A13, 0x8A14, 0x8A15, 0x8A16, 0x8A17, 0x8A18, 0x8A19,
+  0x8A1A, 0x8A1B, 0x8A1C, 0x8A1D, 0x5370, 0x82F1, 0x6A31, 0x5A74,
+  0x9E70, 0x5E94, 0x7F28, 0x83B9, 0x8424, 0x8425, 0x8367, 0x8747,
+  0x8FCE, 0x8D62, 0x76C8, 0x5F71, 0x9896, 0x786C, 0x6620, 0x54DF,
+  0x62E5, 0x4F63, 0x81C3, 0x75C8, 0x5EB8, 0x96CD, 0x8E0A, 0x86F9,
+  0x548F, 0x6CF3, 0x6D8C, 0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D,
+  0x4F18, 0x60A0, 0x5FE7, 0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9,
+  0x6CB9, 0x6E38, 0x9149, 0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9,
+  0x8BF1, 0x53C8, 0x5E7C, 0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986,
+  0x865E, 0x611A, 0x8206, 0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109,
+  0x6E1D, 0x6E14, 0x9685, 0x4E88, 0x5A31, 0x96E8, 0x4E0E, 0x5C7F,
+  0x79B9, 0x5B87, 0x8BED, 0x7FBD, 0x7389, 0x57DF, 0x828B, 0x90C1,
+  0x5401, 0x9047, 0x55BB, 0x5CEA, 0x5FA1, 0x6108, 0x6B32, 0x72F1,
+  0x80B2, 0x8A89, 0x8A1E, 0x8A1F, 0x8A20, 0x8A21, 0x8A22, 0x8A23,
+  0x8A24, 0x8A25, 0x8A26, 0x8A27, 0x8A28, 0x8A29, 0x8A2A, 0x8A2B,
+  0x8A2C, 0x8A2D, 0x8A2E, 0x8A2F, 0x8A30, 0x8A31, 0x8A32, 0x8A33,
+  0x8A34, 0x8A35, 0x8A36, 0x8A37, 0x8A38, 0x8A39, 0x8A3A, 0x8A3B,
+  0x8A3C, 0x8A3D, 0x8A3F, 0x8A40, 0x8A41, 0x8A42, 0x8A43, 0x8A44,
+  0x8A45, 0x8A46, 0x8A47, 0x8A49, 0x8A4A, 0x8A4B, 0x8A4C, 0x8A4D,
+  0x8A4E, 0x8A4F, 0x8A50, 0x8A51, 0x8A52, 0x8A53, 0x8A54, 0x8A55,
+  0x8A56, 0x8A57, 0x8A58, 0x8A59, 0x8A5A, 0x8A5B, 0x8A5C, 0x8A5D,
+  0x8A5E, 0x8A5F, 0x8A60, 0x8A61, 0x8A62, 0x8A63, 0x8A64, 0x8A65,
+  0x8A66, 0x8A67, 0x8A68, 0x8A69, 0x8A6A, 0x8A6B, 0x8A6C, 0x8A6D,
+  0x8A6E, 0x8A6F, 0x8A70, 0x8A71, 0x8A72, 0x8A73, 0x8A74, 0x8A75,
+  0x8A76, 0x8A77, 0x8A78, 0x8A7A, 0x8A7B, 0x8A7C, 0x8A7D, 0x8A7E,
+  0x8A7F, 0x8A80, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, 0x9A6D,
+plane 63        
+at 0x00
+  0x9E33, 0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4,
+  0x8F95, 0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC,
+  0x82D1, 0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3,
+  0x94A5, 0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91,
+  0x90E7, 0x5300, 0x9668, 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655,
+  0x97F5, 0x5B55, 0x531D, 0x7838, 0x6742, 0x683D, 0x54C9, 0x707E,
+  0x5BB0, 0x8F7D, 0x518D, 0x5728, 0x54B1, 0x6512, 0x6682, 0x8D5E,
+  0x8D43, 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, 0x85FB, 0x67A3,
+  0x65E9, 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, 0x7076,
+  0x71E5, 0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E,
+  0x618E, 0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67,
+  0x8A81, 0x8A82, 0x8A83, 0x8A84, 0x8A85, 0x8A86, 0x8A87, 0x8A88,
+  0x8A8B, 0x8A8C, 0x8A8D, 0x8A8E, 0x8A8F, 0x8A90, 0x8A91, 0x8A92,
+  0x8A94, 0x8A95, 0x8A96, 0x8A97, 0x8A98, 0x8A99, 0x8A9A, 0x8A9B,
+  0x8A9C, 0x8A9D, 0x8A9E, 0x8A9F, 0x8AA0, 0x8AA1, 0x8AA2, 0x8AA3,
+  0x8AA4, 0x8AA5, 0x8AA6, 0x8AA7, 0x8AA8, 0x8AA9, 0x8AAA, 0x8AAB,
+  0x8AAC, 0x8AAD, 0x8AAE, 0x8AAF, 0x8AB0, 0x8AB1, 0x8AB2, 0x8AB3,
+  0x8AB4, 0x8AB5, 0x8AB6, 0x8AB7, 0x8AB8, 0x8AB9, 0x8ABA, 0x8ABB,
+  0x8ABC, 0x8ABD, 0x8ABE, 0x8ABF, 0x8AC0, 0x8AC1, 0x8AC2, 0x8AC3,
+  0x8AC4, 0x8AC5, 0x8AC6, 0x8AC7, 0x8AC8, 0x8AC9, 0x8ACA, 0x8ACB,
+  0x8ACC, 0x8ACD, 0x8ACE, 0x8ACF, 0x8AD0, 0x8AD1, 0x8AD2, 0x8AD3,
+  0x8AD4, 0x8AD5, 0x8AD6, 0x8AD7, 0x8AD8, 0x8AD9, 0x8ADA, 0x8ADB,
+  0x8ADC, 0x8ADD, 0x8ADE, 0x8ADF, 0x8AE0, 0x8AE1, 0x8AE2, 0x8AE3,
+  0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D, 0x70B8,
+  0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8, 0x77BB,
+  0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, 0x65A9, 0x8F97, 0x5D2D,
+  0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7AD9, 0x6E5B, 0x7EFD,
+  0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, 0x638C, 0x6DA8, 0x6756,
+  0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, 0x969C, 0x62DB,
+  0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146, 0x8087,
+  0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005, 0x9517,
+  0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504, 0x7827,
+plane 64        
+at 0x00
+  0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA, 0x9707,
+  0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81, 0x72F0,
+  0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, 0x653F, 0x8AE4, 0x8AE5,
+  0x8AE6, 0x8AE7, 0x8AE8, 0x8AE9, 0x8AEA, 0x8AEB, 0x8AEC, 0x8AED,
+  0x8AEE, 0x8AEF, 0x8AF0, 0x8AF1, 0x8AF2, 0x8AF3, 0x8AF4, 0x8AF5,
+  0x8AF6, 0x8AF7, 0x8AF8, 0x8AF9, 0x8AFA, 0x8AFB, 0x8AFC, 0x8AFD,
+  0x8AFE, 0x8AFF, 0x8B00, 0x8B01, 0x8B02, 0x8B03, 0x8B04, 0x8B05,
+  0x8B06, 0x8B08, 0x8B09, 0x8B0A, 0x8B0B, 0x8B0C, 0x8B0D, 0x8B0E,
+  0x8B0F, 0x8B10, 0x8B11, 0x8B12, 0x8B13, 0x8B14, 0x8B15, 0x8B16,
+  0x8B17, 0x8B18, 0x8B19, 0x8B1A, 0x8B1B, 0x8B1C, 0x8B1D, 0x8B1E,
+  0x8B1F, 0x8B20, 0x8B21, 0x8B22, 0x8B23, 0x8B24, 0x8B25, 0x8B27,
+  0x8B28, 0x8B29, 0x8B2A, 0x8B2B, 0x8B2C, 0x8B2D, 0x8B2E, 0x8B2F,
+  0x8B30, 0x8B31, 0x8B32, 0x8B33, 0x8B34, 0x8B35, 0x8B36, 0x8B37,
+  0x8B38, 0x8B39, 0x8B3A, 0x8B3B, 0x8B3C, 0x8B3D, 0x8B3E, 0x8B3F,
+  0x8B40, 0x8B41, 0x8B42, 0x8B43, 0x8B44, 0x8B45, 0x5E27, 0x75C7,
+  0x90D1, 0x8BC1, 0x829D, 0x679D, 0x652F, 0x5431, 0x8718, 0x77E5,
+  0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7, 0x804C, 0x76F4, 0x690D,
+  0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, 0x6307, 0x6B62, 0x8DBE,
+  0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A, 0x63B7, 0x81F3, 0x81F4,
+  0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A, 0x79E9, 0x7A1A, 0x8D28,
+  0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92, 0x4E2D, 0x76C5, 0x5FE0,
+  0x949F, 0x8877, 0x7EC8, 0x79CD, 0x80BF, 0x91CD, 0x4EF2, 0x4F17,
+  0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8BCC, 0x7CA5, 0x8F74, 0x8098,
+  0x5E1A, 0x5492, 0x76B1, 0x5B99, 0x663C, 0x9AA4, 0x73E0, 0x682A,
+  0x86DB, 0x6731, 0x732A, 0x8BF8, 0x8BDB, 0x9010, 0x7AF9, 0x70DB,
+  0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B, 0x8457, 0x67F1, 0x52A9,
+  0x86C0, 0x8D2E, 0x94F8, 0x7B51, 0x8B46, 0x8B47, 0x8B48, 0x8B49,
+  0x8B4A, 0x8B4B, 0x8B4C, 0x8B4D, 0x8B4E, 0x8B4F, 0x8B50, 0x8B51,
+  0x8B52, 0x8B53, 0x8B54, 0x8B55, 0x8B56, 0x8B57, 0x8B58, 0x8B59,
+  0x8B5A, 0x8B5B, 0x8B5C, 0x8B5D, 0x8B5E, 0x8B5F, 0x8B60, 0x8B61,
+  0x8B62, 0x8B63, 0x8B64, 0x8B65, 0x8B67, 0x8B68, 0x8B69, 0x8B6A,
+  0x8B6B, 0x8B6D, 0x8B6E, 0x8B6F, 0x8B70, 0x8B71, 0x8B72, 0x8B73,
+plane 65        
+at 0x00
+  0x8B74, 0x8B75, 0x8B76, 0x8B77, 0x8B78, 0x8B79, 0x8B7A, 0x8B7B,
+  0x8B7C, 0x8B7D, 0x8B7E, 0x8B7F, 0x8B80, 0x8B81, 0x8B82, 0x8B83,
+  0x8B84, 0x8B85, 0x8B86, 0x8B87, 0x8B88, 0x8B89, 0x8B8A, 0x8B8B,
+  0x8B8C, 0x8B8D, 0x8B8E, 0x8B8F, 0x8B90, 0x8B91, 0x8B92, 0x8B93,
+  0x8B94, 0x8B95, 0x8B96, 0x8B97, 0x8B98, 0x8B99, 0x8B9A, 0x8B9B,
+  0x8B9C, 0x8B9D, 0x8B9E, 0x8B9F, 0x8BAC, 0x8BB1, 0x8BBB, 0x8BC7,
+  0x8BD0, 0x8BEA, 0x8C09, 0x8C1E, 0x4F4F, 0x6CE8, 0x795D, 0x9A7B,
+  0x6293, 0x722A, 0x62FD, 0x4E13, 0x7816, 0x8F6C, 0x64B0, 0x8D5A,
+  0x7BC6, 0x6869, 0x5E84, 0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6,
+  0x690E, 0x9525, 0x8FFD, 0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6,
+  0x6349, 0x62D9, 0x5353, 0x684C, 0x7422, 0x8301, 0x914C, 0x5544,
+  0x7740, 0x707C, 0x6D4A, 0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB,
+  0x6DC4, 0x5B5C, 0x7D2B, 0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA,
+  0x6E0D, 0x5B57, 0x9B03, 0x68D5, 0x8E2A, 0x5B97, 0x7EFC, 0x603B,
+  0x7EB5, 0x90B9, 0x8D70, 0x594F, 0x63CD, 0x79DF, 0x8DB3, 0x5352,
+  0x65CF, 0x7956, 0x8BC5, 0x963B, 0x7EC4, 0x94BB, 0x7E82, 0x5634,
+  0x9189, 0x6700, 0x7F6A, 0x5C0A, 0x9075, 0x6628, 0x5DE6, 0x4F50,
+  0x67DE, 0x505A, 0x4F5C, 0x5750, 0x5EA7,      0,      0,      0,
+       0,      0, 0x8C38, 0x8C39, 0x8C3A, 0x8C3B, 0x8C3C, 0x8C3D,
+  0x8C3E, 0x8C3F, 0x8C40, 0x8C42, 0x8C43, 0x8C44, 0x8C45, 0x8C48,
+  0x8C4A, 0x8C4B, 0x8C4D, 0x8C4E, 0x8C4F, 0x8C50, 0x8C51, 0x8C52,
+  0x8C53, 0x8C54, 0x8C56, 0x8C57, 0x8C58, 0x8C59, 0x8C5B, 0x8C5C,
+  0x8C5D, 0x8C5E, 0x8C5F, 0x8C60, 0x8C63, 0x8C64, 0x8C65, 0x8C66,
+  0x8C67, 0x8C68, 0x8C69, 0x8C6C, 0x8C6D, 0x8C6E, 0x8C6F, 0x8C70,
+  0x8C71, 0x8C72, 0x8C74, 0x8C75, 0x8C76, 0x8C77, 0x8C7B, 0x8C7C,
+  0x8C7D, 0x8C7E, 0x8C7F, 0x8C80, 0x8C81, 0x8C83, 0x8C84, 0x8C86,
+  0x8C87, 0x8C88, 0x8C8B, 0x8C8D, 0x8C8E, 0x8C8F, 0x8C90, 0x8C91,
+  0x8C92, 0x8C93, 0x8C95, 0x8C96, 0x8C97, 0x8C99, 0x8C9A, 0x8C9B,
+  0x8C9C, 0x8C9D, 0x8C9E, 0x8C9F, 0x8CA0, 0x8CA1, 0x8CA2, 0x8CA3,
+  0x8CA4, 0x8CA5, 0x8CA6, 0x8CA7, 0x8CA8, 0x8CA9, 0x8CAA, 0x8CAB,
+  0x8CAC, 0x8CAD, 0x4E8D, 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345,
+  0x4E15, 0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA,
+plane 66        
+at 0x00
+  0x4E3F, 0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10, 0x56DF,
+  0x80E4, 0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10,
+  0x4E5C, 0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4,
+  0x538D, 0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A,
+  0x53F5, 0x5326, 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202,
+  0x5208, 0x520E, 0x522D, 0x5233, 0x523F, 0x5240, 0x524C, 0x525E,
+  0x5261, 0x525C, 0x84AF, 0x527D, 0x5282, 0x5281, 0x5290, 0x5293,
+  0x5182, 0x7F54, 0x4EBB, 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1,
+  0x4EEB, 0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x4F25,
+  0x4F27, 0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A, 0x4F5D,
+  0x8CAE, 0x8CAF, 0x8CB0, 0x8CB1, 0x8CB2, 0x8CB3, 0x8CB4, 0x8CB5,
+  0x8CB6, 0x8CB7, 0x8CB8, 0x8CB9, 0x8CBA, 0x8CBB, 0x8CBC, 0x8CBD,
+  0x8CBE, 0x8CBF, 0x8CC0, 0x8CC1, 0x8CC2, 0x8CC3, 0x8CC4, 0x8CC5,
+  0x8CC6, 0x8CC7, 0x8CC8, 0x8CC9, 0x8CCA, 0x8CCB, 0x8CCC, 0x8CCD,
+  0x8CCE, 0x8CCF, 0x8CD0, 0x8CD1, 0x8CD2, 0x8CD3, 0x8CD4, 0x8CD5,
+  0x8CD6, 0x8CD7, 0x8CD8, 0x8CD9, 0x8CDA, 0x8CDB, 0x8CDC, 0x8CDD,
+  0x8CDE, 0x8CDF, 0x8CE0, 0x8CE1, 0x8CE2, 0x8CE3, 0x8CE4, 0x8CE5,
+  0x8CE6, 0x8CE7, 0x8CE8, 0x8CE9, 0x8CEA, 0x8CEB, 0x8CEC, 0x8CED,
+  0x8CEE, 0x8CEF, 0x8CF0, 0x8CF1, 0x8CF2, 0x8CF3, 0x8CF4, 0x8CF5,
+  0x8CF6, 0x8CF7, 0x8CF8, 0x8CF9, 0x8CFA, 0x8CFB, 0x8CFC, 0x8CFD,
+  0x8CFE, 0x8CFF, 0x8D00, 0x8D01, 0x8D02, 0x8D03, 0x8D04, 0x8D05,
+  0x8D06, 0x8D07, 0x8D08, 0x8D09, 0x8D0A, 0x8D0B, 0x8D0C, 0x8D0D,
+  0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91, 0x4F89,
+  0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, 0x4F94,
+  0x4FE6, 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, 0x4FD1,
+  0x4FDF, 0x4FF8, 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F, 0x502E,
+  0x502D, 0x4FFE, 0x501C, 0x500C, 0x5025, 0x5028, 0x507E, 0x5043,
+  0x5055, 0x5048, 0x504E, 0x506C, 0x507B, 0x50A5, 0x50A7, 0x50A9,
+  0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, 0x50E6, 0x50EE, 0x5107,
+  0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, 0x9FA0, 0x6C46,
+  0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914, 0x52F9,
+  0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0, 0x5156,
+plane 67        
+at 0x00
+  0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980, 0x5B34,
+  0x8803, 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC, 0x8D0E, 0x8D0F,
+  0x8D10, 0x8D11, 0x8D12, 0x8D13, 0x8D14, 0x8D15, 0x8D16, 0x8D17,
+  0x8D18, 0x8D19, 0x8D1A, 0x8D1B, 0x8D1C, 0x8D20, 0x8D51, 0x8D52,
+  0x8D57, 0x8D5F, 0x8D65, 0x8D68, 0x8D69, 0x8D6A, 0x8D6C, 0x8D6E,
+  0x8D6F, 0x8D71, 0x8D72, 0x8D78, 0x8D79, 0x8D7A, 0x8D7B, 0x8D7C,
+  0x8D7D, 0x8D7E, 0x8D7F, 0x8D80, 0x8D82, 0x8D83, 0x8D86, 0x8D87,
+  0x8D88, 0x8D89, 0x8D8C, 0x8D8D, 0x8D8E, 0x8D8F, 0x8D90, 0x8D92,
+  0x8D93, 0x8D95, 0x8D96, 0x8D97, 0x8D98, 0x8D99, 0x8D9A, 0x8D9B,
+  0x8D9C, 0x8D9D, 0x8D9E, 0x8DA0, 0x8DA1, 0x8DA2, 0x8DA4, 0x8DA5,
+  0x8DA6, 0x8DA7, 0x8DA8, 0x8DA9, 0x8DAA, 0x8DAB, 0x8DAC, 0x8DAD,
+  0x8DAE, 0x8DAF, 0x8DB0, 0x8DB2, 0x8DB6, 0x8DB7, 0x8DB9, 0x8DBB,
+  0x8DBD, 0x8DC0, 0x8DC1, 0x8DC2, 0x8DC5, 0x8DC7, 0x8DC8, 0x8DC9,
+  0x8DCA, 0x8DCD, 0x8DD0, 0x8DD2, 0x8DD3, 0x8DD4, 0x51C7, 0x5196,
+  0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7, 0x8BAA, 0x8BB4, 0x8BB5,
+  0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF, 0x8BCE, 0x8BD2, 0x8BD3,
+  0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC, 0x8BDF, 0x8BE0, 0x8BE4,
+  0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, 0x8BF6, 0x8BF9, 0x8BFC,
+  0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, 0x8C0C, 0x8C0F, 0x8C11,
+  0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, 0x8C1B, 0x8C18, 0x8C1D,
+  0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, 0x8C2A, 0x8C2B, 0x8C2E,
+  0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, 0x5369, 0x537A, 0x961D,
+  0x9622, 0x9621, 0x9631, 0x962A, 0x963D, 0x963C, 0x9642, 0x9649,
+  0x9654, 0x965F, 0x9667, 0x966C, 0x9672, 0x9674, 0x9688, 0x968D,
+  0x9697, 0x96B0, 0x9097, 0x909B, 0x909D, 0x9099, 0x90AC, 0x90A1,
+  0x90B4, 0x90B3, 0x90B6, 0x90BA, 0x8DD5, 0x8DD8, 0x8DD9, 0x8DDC,
+  0x8DE0, 0x8DE1, 0x8DE2, 0x8DE5, 0x8DE6, 0x8DE7, 0x8DE9, 0x8DED,
+  0x8DEE, 0x8DF0, 0x8DF1, 0x8DF2, 0x8DF4, 0x8DF6, 0x8DFC, 0x8DFE,
+  0x8DFF, 0x8E00, 0x8E01, 0x8E02, 0x8E03, 0x8E04, 0x8E06, 0x8E07,
+  0x8E08, 0x8E0B, 0x8E0D, 0x8E0E, 0x8E10, 0x8E11, 0x8E12, 0x8E13,
+  0x8E15, 0x8E16, 0x8E17, 0x8E18, 0x8E19, 0x8E1A, 0x8E1B, 0x8E1C,
+  0x8E20, 0x8E21, 0x8E24, 0x8E25, 0x8E26, 0x8E27, 0x8E28, 0x8E2B,
+plane 68        
+at 0x00
+  0x8E2D, 0x8E30, 0x8E32, 0x8E33, 0x8E34, 0x8E36, 0x8E37, 0x8E38,
+  0x8E3B, 0x8E3C, 0x8E3E, 0x8E3F, 0x8E43, 0x8E45, 0x8E46, 0x8E4C,
+  0x8E4D, 0x8E4E, 0x8E4F, 0x8E50, 0x8E53, 0x8E54, 0x8E55, 0x8E56,
+  0x8E57, 0x8E58, 0x8E5A, 0x8E5B, 0x8E5C, 0x8E5D, 0x8E5E, 0x8E5F,
+  0x8E60, 0x8E61, 0x8E62, 0x8E63, 0x8E64, 0x8E65, 0x8E67, 0x8E68,
+  0x8E6A, 0x8E6B, 0x8E6E, 0x8E71, 0x90B8, 0x90B0, 0x90CF, 0x90C5,
+  0x90BE, 0x90D0, 0x90C4, 0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC,
+  0x90D7, 0x90DB, 0x90EB, 0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E,
+  0x9123, 0x9131, 0x912F, 0x9139, 0x9143, 0x9146, 0x520D, 0x5942,
+  0x52A2, 0x52AC, 0x52AD, 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0,
+  0x53DF, 0x71EE, 0x77CD, 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6,
+  0x5F01, 0x755A, 0x5DEF, 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC,
+  0x58C5, 0x58D1, 0x5729, 0x572C, 0x572A, 0x5733, 0x5739, 0x572E,
+  0x572F, 0x575C, 0x573B, 0x5742, 0x5769, 0x5785, 0x576B, 0x5786,
+  0x577C, 0x577B, 0x5768, 0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4,
+  0x578C, 0x57B2, 0x57CF, 0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5,
+  0x57D8, 0x57DA, 0x57D9, 0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8,
+  0x57E4, 0x57DD, 0x8E73, 0x8E75, 0x8E77, 0x8E78, 0x8E79, 0x8E7A,
+  0x8E7B, 0x8E7D, 0x8E7E, 0x8E80, 0x8E82, 0x8E83, 0x8E84, 0x8E86,
+  0x8E88, 0x8E89, 0x8E8A, 0x8E8B, 0x8E8C, 0x8E8D, 0x8E8E, 0x8E91,
+  0x8E92, 0x8E93, 0x8E95, 0x8E96, 0x8E97, 0x8E98, 0x8E99, 0x8E9A,
+  0x8E9B, 0x8E9D, 0x8E9F, 0x8EA0, 0x8EA1, 0x8EA2, 0x8EA3, 0x8EA4,
+  0x8EA5, 0x8EA6, 0x8EA7, 0x8EA8, 0x8EA9, 0x8EAA, 0x8EAD, 0x8EAE,
+  0x8EB0, 0x8EB1, 0x8EB3, 0x8EB4, 0x8EB5, 0x8EB6, 0x8EB7, 0x8EB8,
+  0x8EB9, 0x8EBB, 0x8EBC, 0x8EBD, 0x8EBE, 0x8EBF, 0x8EC0, 0x8EC1,
+  0x8EC2, 0x8EC3, 0x8EC4, 0x8EC5, 0x8EC6, 0x8EC7, 0x8EC8, 0x8EC9,
+  0x8ECA, 0x8ECB, 0x8ECC, 0x8ECD, 0x8ECF, 0x8ED0, 0x8ED1, 0x8ED2,
+  0x8ED3, 0x8ED4, 0x8ED5, 0x8ED6, 0x8ED7, 0x8ED8, 0x8ED9, 0x8EDA,
+  0x8EDB, 0x8EDC, 0x8EDD, 0x8EDE, 0x8EDF, 0x8EE0, 0x8EE1, 0x8EE2,
+  0x8EE3, 0x8EE4, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E,
+  0x5819, 0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A,
+  0x5880, 0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F,
+plane 69        
+at 0x00
+  0x828A, 0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB,
+  0x82B8, 0x82BE, 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7,
+  0x82AE, 0x82CB, 0x82CC, 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA,
+  0x829F, 0x82C4, 0x82CE, 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4,
+  0x830F, 0x8307, 0x82DC, 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB,
+  0x82D3, 0x8311, 0x831A, 0x8306, 0x8314, 0x8315, 0x82E0, 0x82D5,
+  0x831C, 0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, 0x8334,
+  0x8331, 0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F,
+  0x8340, 0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365,
+  0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0x8EE9, 0x8EEA, 0x8EEB, 0x8EEC,
+  0x8EED, 0x8EEE, 0x8EEF, 0x8EF0, 0x8EF1, 0x8EF2, 0x8EF3, 0x8EF4,
+  0x8EF5, 0x8EF6, 0x8EF7, 0x8EF8, 0x8EF9, 0x8EFA, 0x8EFB, 0x8EFC,
+  0x8EFD, 0x8EFE, 0x8EFF, 0x8F00, 0x8F01, 0x8F02, 0x8F03, 0x8F04,
+  0x8F05, 0x8F06, 0x8F07, 0x8F08, 0x8F09, 0x8F0A, 0x8F0B, 0x8F0C,
+  0x8F0D, 0x8F0E, 0x8F0F, 0x8F10, 0x8F11, 0x8F12, 0x8F13, 0x8F14,
+  0x8F15, 0x8F16, 0x8F17, 0x8F18, 0x8F19, 0x8F1A, 0x8F1B, 0x8F1C,
+  0x8F1D, 0x8F1E, 0x8F1F, 0x8F20, 0x8F21, 0x8F22, 0x8F23, 0x8F24,
+  0x8F25, 0x8F26, 0x8F27, 0x8F28, 0x8F29, 0x8F2A, 0x8F2B, 0x8F2C,
+  0x8F2D, 0x8F2E, 0x8F2F, 0x8F30, 0x8F31, 0x8F32, 0x8F33, 0x8F34,
+  0x8F35, 0x8F36, 0x8F37, 0x8F38, 0x8F39, 0x8F3A, 0x8F3B, 0x8F3C,
+  0x8F3D, 0x8F3E, 0x8F3F, 0x8F40, 0x8F41, 0x8F42, 0x8F43, 0x8F44,
+  0x8368, 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E, 0x83B0,
+  0x8378, 0x83B3, 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C, 0x8385,
+  0x837C, 0x83B6, 0x83A9, 0x837D, 0x83B8, 0x837B, 0x8398, 0x839E,
+  0x83A8, 0x83BA, 0x83BC, 0x83C1, 0x8401, 0x83E5, 0x83D8, 0x5807,
+  0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6, 0x841C, 0x8438, 0x8411,
+  0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8, 0x83F9, 0x83EA,
+  0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451, 0x845A,
+  0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478, 0x843C,
+  0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D, 0x84C1,
+  0x84CD, 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF, 0x84BA,
+  0x84E0, 0x84A1, 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3, 0x850C,
+plane 70        
+at 0x00
+  0x750D, 0x8538, 0x84F0, 0x8539, 0x851F, 0x853A, 0x8F45, 0x8F46,
+  0x8F47, 0x8F48, 0x8F49, 0x8F4A, 0x8F4B, 0x8F4C, 0x8F4D, 0x8F4E,
+  0x8F4F, 0x8F50, 0x8F51, 0x8F52, 0x8F53, 0x8F54, 0x8F55, 0x8F56,
+  0x8F57, 0x8F58, 0x8F59, 0x8F5A, 0x8F5B, 0x8F5C, 0x8F5D, 0x8F5E,
+  0x8F5F, 0x8F60, 0x8F61, 0x8F62, 0x8F63, 0x8F64, 0x8F65, 0x8F6A,
+  0x8F80, 0x8F8C, 0x8F92, 0x8F9D, 0x8FA0, 0x8FA1, 0x8FA2, 0x8FA4,
+  0x8FA5, 0x8FA6, 0x8FA7, 0x8FAA, 0x8FAC, 0x8FAD, 0x8FAE, 0x8FAF,
+  0x8FB2, 0x8FB3, 0x8FB4, 0x8FB5, 0x8FB7, 0x8FB8, 0x8FBA, 0x8FBB,
+  0x8FBC, 0x8FBF, 0x8FC0, 0x8FC3, 0x8FC6, 0x8FC9, 0x8FCA, 0x8FCB,
+  0x8FCC, 0x8FCD, 0x8FCF, 0x8FD2, 0x8FD6, 0x8FD7, 0x8FDA, 0x8FE0,
+  0x8FE1, 0x8FE3, 0x8FE7, 0x8FEC, 0x8FEF, 0x8FF1, 0x8FF2, 0x8FF4,
+  0x8FF5, 0x8FF6, 0x8FFA, 0x8FFB, 0x8FFC, 0x8FFE, 0x8FFF, 0x9007,
+  0x9008, 0x900C, 0x900E, 0x9013, 0x9015, 0x9018, 0x8556, 0x853B,
+  0x84FF, 0x84FC, 0x8559, 0x8548, 0x8568, 0x8564, 0x855E, 0x857A,
+  0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4, 0x85A8, 0x8587, 0x858F,
+  0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9, 0x85B7, 0x85B0, 0x85D3,
+  0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605, 0x8629, 0x8616, 0x863C,
+  0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037, 0x5955, 0x595A, 0x5958,
+  0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34, 0x624C, 0x626A, 0x629F,
+  0x62BB, 0x62CA, 0x62DA, 0x62D7, 0x62EE, 0x6322, 0x62F6, 0x6339,
+  0x634B, 0x6343, 0x63AD, 0x63F6, 0x6371, 0x637A, 0x638E, 0x63B4,
+  0x636D, 0x63AC, 0x638A, 0x6369, 0x63AE, 0x63BC, 0x63F2, 0x63F8,
+  0x63E0, 0x63FF, 0x63C4, 0x63DE, 0x63CE, 0x6452, 0x63C6, 0x63BE,
+  0x6445, 0x6441, 0x640B, 0x641B, 0x6420, 0x640C, 0x6426, 0x6421,
+  0x645E, 0x6484, 0x646D, 0x6496, 0x9019, 0x901C, 0x9023, 0x9024,
+  0x9025, 0x9027, 0x9028, 0x9029, 0x902A, 0x902B, 0x902C, 0x9030,
+  0x9031, 0x9032, 0x9033, 0x9034, 0x9037, 0x9039, 0x903A, 0x903D,
+  0x903F, 0x9040, 0x9043, 0x9045, 0x9046, 0x9048, 0x9049, 0x904A,
+  0x904B, 0x904C, 0x904E, 0x9054, 0x9055, 0x9056, 0x9059, 0x905A,
+  0x905C, 0x905D, 0x905E, 0x905F, 0x9060, 0x9061, 0x9064, 0x9066,
+  0x9067, 0x9069, 0x906A, 0x906B, 0x906C, 0x906F, 0x9070, 0x9071,
+  0x9072, 0x9073, 0x9076, 0x9077, 0x9078, 0x9079, 0x907A, 0x907B,
+plane 71        
+at 0x00
+  0x907C, 0x907E, 0x9081, 0x9084, 0x9085, 0x9086, 0x9087, 0x9089,
+  0x908A, 0x908C, 0x908D, 0x908E, 0x908F, 0x9090, 0x9092, 0x9094,
+  0x9096, 0x9098, 0x909A, 0x909C, 0x909E, 0x909F, 0x90A0, 0x90A4,
+  0x90A5, 0x90A7, 0x90A8, 0x90A9, 0x90AB, 0x90AD, 0x90B2, 0x90B7,
+  0x90BC, 0x90BD, 0x90BF, 0x90C0, 0x647A, 0x64B7, 0x64B8, 0x6499,
+  0x64BA, 0x64C0, 0x64D0, 0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525,
+  0x652E, 0x5F0B, 0x5FD2, 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD,
+  0x53E9, 0x53E8, 0x53FB, 0x5412, 0x5416, 0x5406, 0x544B, 0x5452,
+  0x5453, 0x5454, 0x5456, 0x5443, 0x5421, 0x5457, 0x5459, 0x5423,
+  0x5432, 0x5482, 0x5494, 0x5477, 0x5471, 0x5464, 0x549A, 0x549B,
+  0x5484, 0x5476, 0x5466, 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4,
+  0x54D2, 0x54A7, 0x54A6, 0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5,
+  0x54BB, 0x54BF, 0x54CC, 0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA,
+  0x54A4, 0x54DD, 0x54CF, 0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD,
+  0x5514, 0x54F3, 0x5522, 0x5523, 0x550F, 0x5511, 0x5527, 0x552A,
+  0x5567, 0x558F, 0x55B5, 0x5549, 0x556D, 0x5541, 0x5555, 0x553F,
+  0x5550, 0x553C, 0x90C2, 0x90C3, 0x90C6, 0x90C8, 0x90C9, 0x90CB,
+  0x90CC, 0x90CD, 0x90D2, 0x90D4, 0x90D5, 0x90D6, 0x90D8, 0x90D9,
+  0x90DA, 0x90DE, 0x90DF, 0x90E0, 0x90E3, 0x90E4, 0x90E5, 0x90E9,
+  0x90EA, 0x90EC, 0x90EE, 0x90F0, 0x90F1, 0x90F2, 0x90F3, 0x90F5,
+  0x90F6, 0x90F7, 0x90F9, 0x90FA, 0x90FB, 0x90FC, 0x90FF, 0x9100,
+  0x9101, 0x9103, 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910A,
+  0x910B, 0x910C, 0x910D, 0x910E, 0x910F, 0x9110, 0x9111, 0x9112,
+  0x9113, 0x9114, 0x9115, 0x9116, 0x9117, 0x9118, 0x911A, 0x911B,
+  0x911C, 0x911D, 0x911F, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126,
+  0x9127, 0x9128, 0x9129, 0x912A, 0x912B, 0x912C, 0x912D, 0x912E,
+  0x9130, 0x9132, 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138,
+  0x913A, 0x913B, 0x913C, 0x913D, 0x913E, 0x913F, 0x9140, 0x9141,
+  0x9142, 0x9144, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533,
+  0x5530, 0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588,
+  0x5581, 0x559F, 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD,
+  0x55BE, 0x5594, 0x5599, 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1,
+plane 72        
+at 0x00
+  0x55EB, 0x55EC, 0x55D4, 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5,
+  0x55F2, 0x55F3, 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94,
+  0x561E, 0x5608, 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600,
+  0x5627, 0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662,
+  0x5659, 0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B,
+  0x567B, 0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD,
+  0x56E1, 0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709,
+  0x571C, 0x5E0F, 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C,
+  0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156,
+  0x9158, 0x9159, 0x915B, 0x915C, 0x915F, 0x9160, 0x9166, 0x9167,
+  0x9168, 0x916B, 0x916D, 0x9173, 0x917A, 0x917B, 0x917C, 0x9180,
+  0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918A, 0x918E,
+  0x918F, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199,
+  0x919C, 0x919D, 0x919E, 0x919F, 0x91A0, 0x91A1, 0x91A4, 0x91A5,
+  0x91A6, 0x91A7, 0x91A8, 0x91A9, 0x91AB, 0x91AC, 0x91B0, 0x91B1,
+  0x91B2, 0x91B3, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BB, 0x91BC,
+  0x91BD, 0x91BE, 0x91BF, 0x91C0, 0x91C1, 0x91C2, 0x91C3, 0x91C4,
+  0x91C5, 0x91C6, 0x91C8, 0x91CB, 0x91D0, 0x91D2, 0x91D3, 0x91D4,
+  0x91D5, 0x91D6, 0x91D7, 0x91D8, 0x91D9, 0x91DA, 0x91DB, 0x91DD,
+  0x91DE, 0x91DF, 0x91E0, 0x91E1, 0x91E2, 0x91E3, 0x91E4, 0x91E5,
+  0x5E37, 0x5E44, 0x5E54, 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 0x5C7A,
+  0x5C8D, 0x5C90, 0x5C96, 0x5C88, 0x5C98, 0x5C99, 0x5C91, 0x5C9A,
+  0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1, 0x5CA3,
+  0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5, 0x5D02,
+  0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, 0x5D1B,
+  0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 0x5D5D,
+  0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99, 0x5D9D,
+  0x8C73, 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87, 0x5F89,
+  0x5F8C, 0x5F95, 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 0x5FBC,
+  0x8862, 0x5F61, 0x72AD, 0x72B0, 0x72B4, 0x72B7, 0x72B8, 0x72C3,
+  0x72C1, 0x72CE, 0x72CD, 0x72D2, 0x72E8, 0x72EF, 0x72E9, 0x72F2,
+  0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303, 0x72FA, 0x91E6, 0x91E7,
+plane 73        
+at 0x00
+  0x91E8, 0x91E9, 0x91EA, 0x91EB, 0x91EC, 0x91ED, 0x91EE, 0x91EF,
+  0x91F0, 0x91F1, 0x91F2, 0x91F3, 0x91F4, 0x91F5, 0x91F6, 0x91F7,
+  0x91F8, 0x91F9, 0x91FA, 0x91FB, 0x91FC, 0x91FD, 0x91FE, 0x91FF,
+  0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205, 0x9206, 0x9207,
+  0x9208, 0x9209, 0x920A, 0x920B, 0x920C, 0x920D, 0x920E, 0x920F,
+  0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215, 0x9216, 0x9217,
+  0x9218, 0x9219, 0x921A, 0x921B, 0x921C, 0x921D, 0x921E, 0x921F,
+  0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0x9225, 0x9226, 0x9227,
+  0x9228, 0x9229, 0x922A, 0x922B, 0x922C, 0x922D, 0x922E, 0x922F,
+  0x9230, 0x9231, 0x9232, 0x9233, 0x9234, 0x9235, 0x9236, 0x9237,
+  0x9238, 0x9239, 0x923A, 0x923B, 0x923C, 0x923D, 0x923E, 0x923F,
+  0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245, 0x72FB, 0x7317,
+  0x7313, 0x7321, 0x730A, 0x731E, 0x731D, 0x7315, 0x7322, 0x7339,
+  0x7325, 0x732C, 0x7338, 0x7331, 0x7350, 0x734D, 0x7357, 0x7360,
+  0x736C, 0x736F, 0x737E, 0x821B, 0x5925, 0x98E7, 0x5924, 0x5902,
+  0x9963, 0x9967, 0x9968, 0x9969, 0x996A, 0x996B, 0x996C, 0x9974,
+  0x9977, 0x997D, 0x9980, 0x9984, 0x9987, 0x998A, 0x998D, 0x9990,
+  0x9991, 0x9993, 0x9994, 0x9995, 0x5E80, 0x5E91, 0x5E8B, 0x5E96,
+  0x5EA5, 0x5EA0, 0x5EB9, 0x5EB5, 0x5EBE, 0x5EB3, 0x8D53, 0x5ED2,
+  0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, 0x81BA, 0x5FC4, 0x5FC9, 0x5FD6,
+  0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1, 0x5FE4, 0x5FFE, 0x6005,
+  0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019, 0x6035, 0x6026, 0x601B,
+  0x600F, 0x600D, 0x6029, 0x602B, 0x600A, 0x603F, 0x6021, 0x6078,
+  0x6079, 0x607B, 0x607A, 0x6042, 0x9246, 0x9247, 0x9248, 0x9249,
+  0x924A, 0x924B, 0x924C, 0x924D, 0x924E, 0x924F, 0x9250, 0x9251,
+  0x9252, 0x9253, 0x9254, 0x9255, 0x9256, 0x9257, 0x9258, 0x9259,
+  0x925A, 0x925B, 0x925C, 0x925D, 0x925E, 0x925F, 0x9260, 0x9261,
+  0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267, 0x9268, 0x9269,
+  0x926A, 0x926B, 0x926C, 0x926D, 0x926E, 0x926F, 0x9270, 0x9271,
+  0x9272, 0x9273, 0x9275, 0x9276, 0x9277, 0x9278, 0x9279, 0x927A,
+  0x927B, 0x927C, 0x927D, 0x927E, 0x927F, 0x9280, 0x9281, 0x9282,
+  0x9283, 0x9284, 0x9285, 0x9286, 0x9287, 0x9288, 0x9289, 0x928A,
+plane 74        
+at 0x00
+  0x928B, 0x928C, 0x928D, 0x928F, 0x9290, 0x9291, 0x9292, 0x9293,
+  0x9294, 0x9295, 0x9296, 0x9297, 0x9298, 0x9299, 0x929A, 0x929B,
+  0x929C, 0x929D, 0x929E, 0x929F, 0x92A0, 0x92A1, 0x92A2, 0x92A3,
+  0x92A4, 0x92A5, 0x92A6, 0x92A7, 0x606A, 0x607D, 0x6096, 0x609A,
+  0x60AD, 0x609D, 0x6083, 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB,
+  0x60B1, 0x60DD, 0x60D8, 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126,
+  0x6115, 0x6123, 0x60F4, 0x6100, 0x610E, 0x612B, 0x614A, 0x6175,
+  0x61AC, 0x6194, 0x61A7, 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3,
+  0x95E9, 0x95EB, 0x95F1, 0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE,
+  0x9603, 0x9604, 0x9606, 0x9608, 0x960A, 0x960B, 0x960C, 0x960D,
+  0x960F, 0x9612, 0x9615, 0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C,
+  0x723F, 0x6215, 0x6C35, 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85,
+  0x6C90, 0x6C94, 0x6C8C, 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86,
+  0x6CA9, 0x6CD0, 0x6CD4, 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7,
+  0x6CB2, 0x6CE0, 0x6CD6, 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3,
+  0x6CEF, 0x6CFE, 0x92A8, 0x92A9, 0x92AA, 0x92AB, 0x92AC, 0x92AD,
+  0x92AF, 0x92B0, 0x92B1, 0x92B2, 0x92B3, 0x92B4, 0x92B5, 0x92B6,
+  0x92B7, 0x92B8, 0x92B9, 0x92BA, 0x92BB, 0x92BC, 0x92BD, 0x92BE,
+  0x92BF, 0x92C0, 0x92C1, 0x92C2, 0x92C3, 0x92C4, 0x92C5, 0x92C6,
+  0x92C7, 0x92C9, 0x92CA, 0x92CB, 0x92CC, 0x92CD, 0x92CE, 0x92CF,
+  0x92D0, 0x92D1, 0x92D2, 0x92D3, 0x92D4, 0x92D5, 0x92D6, 0x92D7,
+  0x92D8, 0x92D9, 0x92DA, 0x92DB, 0x92DC, 0x92DD, 0x92DE, 0x92DF,
+  0x92E0, 0x92E1, 0x92E2, 0x92E3, 0x92E4, 0x92E5, 0x92E6, 0x92E7,
+  0x92E8, 0x92E9, 0x92EA, 0x92EB, 0x92EC, 0x92ED, 0x92EE, 0x92EF,
+  0x92F0, 0x92F1, 0x92F2, 0x92F3, 0x92F4, 0x92F5, 0x92F6, 0x92F7,
+  0x92F8, 0x92F9, 0x92FA, 0x92FB, 0x92FC, 0x92FD, 0x92FE, 0x92FF,
+  0x9300, 0x9301, 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307,
+  0x9308, 0x9309, 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07,
+  0x6D04, 0x6D19, 0x6D0E, 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A,
+  0x6D4F, 0x6D52, 0x6D54, 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0,
+  0x6D5E, 0x6D93, 0x6D94, 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A,
+  0x6DC7, 0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6,
+plane 75        
+at 0x00
+  0x6DDD, 0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E,
+  0x6E4E, 0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32,
+  0x6E25, 0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2,
+  0x6EA5, 0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF,
+  0x6E8F, 0x6EC2, 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15,
+  0x6EF9, 0x6F2F, 0x6F36, 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29,
+  0x6F89, 0x6F8D, 0x6F8C, 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1,
+  0x930A, 0x930B, 0x930C, 0x930D, 0x930E, 0x930F, 0x9310, 0x9311,
+  0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319,
+  0x931A, 0x931B, 0x931C, 0x931D, 0x931E, 0x931F, 0x9320, 0x9321,
+  0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329,
+  0x932A, 0x932B, 0x932C, 0x932D, 0x932E, 0x932F, 0x9330, 0x9331,
+  0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339,
+  0x933A, 0x933B, 0x933C, 0x933D, 0x933F, 0x9340, 0x9341, 0x9342,
+  0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x934A,
+  0x934B, 0x934C, 0x934D, 0x934E, 0x934F, 0x9350, 0x9351, 0x9352,
+  0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359, 0x935A,
+  0x935B, 0x935C, 0x935D, 0x935E, 0x935F, 0x9360, 0x9361, 0x9362,
+  0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, 0x936B,
+  0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, 0x6FDE,
+  0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, 0x7035, 0x704F,
+  0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, 0x752F,
+  0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 0x8B07,
+  0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, 0x8FE6,
+  0x8FF3, 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, 0x900D,
+  0x9016, 0x9021, 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, 0x9051,
+  0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9, 0x9074,
+  0x907D, 0x9082, 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57, 0x5F56,
+  0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63, 0x5C66,
+  0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, 0x5C6E,
+  0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3, 0x936C, 0x936D,
+  0x936E, 0x936F, 0x9370, 0x9371, 0x9372, 0x9373, 0x9374, 0x9375,
+plane 76        
+at 0x00
+  0x9376, 0x9377, 0x9378, 0x9379, 0x937A, 0x937B, 0x937C, 0x937D,
+  0x937E, 0x937F, 0x9380, 0x9381, 0x9382, 0x9383, 0x9384, 0x9385,
+  0x9386, 0x9387, 0x9388, 0x9389, 0x938A, 0x938B, 0x938C, 0x938D,
+  0x938E, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 0x9395, 0x9396,
+  0x9397, 0x9398, 0x9399, 0x939A, 0x939B, 0x939C, 0x939D, 0x939E,
+  0x939F, 0x93A0, 0x93A1, 0x93A2, 0x93A3, 0x93A4, 0x93A5, 0x93A6,
+  0x93A7, 0x93A8, 0x93A9, 0x93AA, 0x93AB, 0x93AC, 0x93AD, 0x93AE,
+  0x93AF, 0x93B0, 0x93B1, 0x93B2, 0x93B3, 0x93B4, 0x93B5, 0x93B6,
+  0x93B7, 0x93B8, 0x93B9, 0x93BA, 0x93BB, 0x93BC, 0x93BD, 0x93BE,
+  0x93BF, 0x93C0, 0x93C1, 0x93C2, 0x93C3, 0x93C4, 0x93C5, 0x93C6,
+  0x93C7, 0x93C8, 0x93C9, 0x93CB, 0x93CC, 0x93CD, 0x5997, 0x59CA,
+  0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, 0x59AF, 0x59D7, 0x59BE,
+  0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, 0x59D8, 0x59F9, 0x5A0C,
+  0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23, 0x5A13, 0x5A40, 0x5A67,
+  0x5A4A, 0x5A55, 0x5A3C, 0x5A62, 0x5A75, 0x80EC, 0x5AAA, 0x5A9B,
+  0x5A77, 0x5A7A, 0x5ABE, 0x5AEB, 0x5AB2, 0x5AD2, 0x5AD4, 0x5AB8,
+  0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, 0x5AE6, 0x5AD8, 0x5ADC, 0x5B09,
+  0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40, 0x5C15, 0x5C1C, 0x5B5A,
+  0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, 0x9A75, 0x9A77, 0x9A78,
+  0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, 0x9A85, 0x9A88, 0x9A8A,
+  0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, 0x9A9B, 0x9A9C, 0x9A9D,
+  0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, 0x9AA7, 0x7E9F, 0x7EA1,
+  0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9, 0x93CE, 0x93CF, 0x93D0, 0x93D1,
+  0x93D2, 0x93D3, 0x93D4, 0x93D5, 0x93D7, 0x93D8, 0x93D9, 0x93DA,
+  0x93DB, 0x93DC, 0x93DD, 0x93DE, 0x93DF, 0x93E0, 0x93E1, 0x93E2,
+  0x93E3, 0x93E4, 0x93E5, 0x93E6, 0x93E7, 0x93E8, 0x93E9, 0x93EA,
+  0x93EB, 0x93EC, 0x93ED, 0x93EE, 0x93EF, 0x93F0, 0x93F1, 0x93F2,
+  0x93F3, 0x93F4, 0x93F5, 0x93F6, 0x93F7, 0x93F8, 0x93F9, 0x93FA,
+  0x93FB, 0x93FC, 0x93FD, 0x93FE, 0x93FF, 0x9400, 0x9401, 0x9402,
+  0x9403, 0x9404, 0x9405, 0x9406, 0x9407, 0x9408, 0x9409, 0x940A,
+  0x940B, 0x940C, 0x940D, 0x940E, 0x940F, 0x9410, 0x9411, 0x9412,
+  0x9413, 0x9414, 0x9415, 0x9416, 0x9417, 0x9418, 0x9419, 0x941A,
+plane 77        
+at 0x00
+  0x941B, 0x941C, 0x941D, 0x941E, 0x941F, 0x9420, 0x9421, 0x9422,
+  0x9423, 0x9424, 0x9425, 0x9426, 0x9427, 0x9428, 0x9429, 0x942A,
+  0x942B, 0x942C, 0x942D, 0x942E, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0,
+  0x7EC1, 0x7EC2, 0x7EC9, 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7,
+  0x7EDB, 0x7EE0, 0x7EE1, 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1,
+  0x7EF2, 0x7F0D, 0x7EF6, 0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, 0x7F02,
+  0x7F03, 0x7F07, 0x7F08, 0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, 0x7F12,
+  0x7F17, 0x7F19, 0x7F1C, 0x7F1B, 0x7F1F, 0x7F21, 0x7F22, 0x7F23,
+  0x7F24, 0x7F25, 0x7F26, 0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D,
+  0x7F2F, 0x7F30, 0x7F31, 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F,
+  0x5DDB, 0x753E, 0x9095, 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F,
+  0x73CF, 0x73C2, 0x73D1, 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8,
+  0x73E5, 0x73D9, 0x987C, 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA,
+  0x73F2, 0x740F, 0x742A, 0x745B, 0x7426, 0x7425, 0x7428, 0x7430,
+  0x742E, 0x742C, 0x942F, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434,
+  0x9435, 0x9436, 0x9437, 0x9438, 0x9439, 0x943A, 0x943B, 0x943C,
+  0x943D, 0x943F, 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445,
+  0x9446, 0x9447, 0x9448, 0x9449, 0x944A, 0x944B, 0x944C, 0x944D,
+  0x944E, 0x944F, 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455,
+  0x9456, 0x9457, 0x9458, 0x9459, 0x945A, 0x945B, 0x945C, 0x945D,
+  0x945E, 0x945F, 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465,
+  0x9466, 0x9467, 0x9468, 0x9469, 0x946A, 0x946C, 0x946D, 0x946E,
+  0x946F, 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476,
+  0x9477, 0x9478, 0x9479, 0x947A, 0x947B, 0x947C, 0x947D, 0x947E,
+  0x947F, 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496,
+  0x9498, 0x94C7, 0x94CF, 0x94D3, 0x94D4, 0x94DA, 0x94E6, 0x94FB,
+  0x951C, 0x9520, 0x741B, 0x741A, 0x7441, 0x745C, 0x7457, 0x7455,
+  0x7459, 0x7477, 0x746D, 0x747E, 0x749C, 0x748E, 0x7480, 0x7481,
+  0x7487, 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, 0x74A7, 0x74D2,
+  0x74BA, 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, 0x6748,
+  0x6769, 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775,
+  0x67A8, 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809,
+plane 78        
+at 0x00
+  0x67D8, 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA,
+  0x67B3, 0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1,
+  0x67FD, 0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, 0x6844,
+  0x6864, 0x6883, 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840,
+  0x683E, 0x684A, 0x6849, 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877,
+  0x6893, 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, 0x6920, 0x68F9,
+  0x9527, 0x9533, 0x953D, 0x9543, 0x9548, 0x954B, 0x9555, 0x955A,
+  0x9560, 0x956E, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957A,
+  0x957B, 0x957C, 0x957D, 0x957E, 0x9580, 0x9581, 0x9582, 0x9583,
+  0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958A, 0x958B,
+  0x958C, 0x958D, 0x958E, 0x958F, 0x9590, 0x9591, 0x9592, 0x9593,
+  0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959A, 0x959B,
+  0x959C, 0x959D, 0x959E, 0x959F, 0x95A0, 0x95A1, 0x95A2, 0x95A3,
+  0x95A4, 0x95A5, 0x95A6, 0x95A7, 0x95A8, 0x95A9, 0x95AA, 0x95AB,
+  0x95AC, 0x95AD, 0x95AE, 0x95AF, 0x95B0, 0x95B1, 0x95B2, 0x95B3,
+  0x95B4, 0x95B5, 0x95B6, 0x95B7, 0x95B8, 0x95B9, 0x95BA, 0x95BB,
+  0x95BC, 0x95BD, 0x95BE, 0x95BF, 0x95C0, 0x95C1, 0x95C2, 0x95C3,
+  0x95C4, 0x95C5, 0x95C6, 0x95C7, 0x95C8, 0x95C9, 0x95CA, 0x95CB,
+  0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910, 0x6971,
+  0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980, 0x6998,
+  0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989, 0x6966,
+  0x6963, 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD, 0x69D4,
+  0x69B1, 0x69C1, 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D, 0x69FF,
+  0x6A2F, 0x69ED, 0x6A17, 0x6A18, 0x6A65, 0x69F2, 0x6A44, 0x6A3E,
+  0x6AA0, 0x6A50, 0x6A5B, 0x6A35, 0x6A8E, 0x6A79, 0x6A3D, 0x6A28,
+  0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, 0x6A97, 0x6AAB, 0x7337,
+  0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, 0x6B93, 0x6B8D,
+  0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, 0x8F72,
+  0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 0x8F7C,
+  0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B, 0x95CC, 0x95CD,
+  0x95CE, 0x95CF, 0x95D0, 0x95D1, 0x95D2, 0x95D3, 0x95D4, 0x95D5,
+  0x95D6, 0x95D7, 0x95D8, 0x95D9, 0x95DA, 0x95DB, 0x95DC, 0x95DD,
+plane 79        
+at 0x00
+  0x95DE, 0x95DF, 0x95E0, 0x95E1, 0x95E2, 0x95E3, 0x95E4, 0x95E5,
+  0x95E6, 0x95E7, 0x95EC, 0x95FF, 0x9607, 0x9613, 0x9618, 0x961B,
+  0x961E, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626, 0x9627, 0x9628,
+  0x9629, 0x962B, 0x962C, 0x962D, 0x962F, 0x9630, 0x9637, 0x9638,
+  0x9639, 0x963A, 0x963E, 0x9641, 0x9643, 0x964A, 0x964E, 0x964F,
+  0x9651, 0x9652, 0x9653, 0x9656, 0x9657, 0x9658, 0x9659, 0x965A,
+  0x965C, 0x965D, 0x965E, 0x9660, 0x9663, 0x9665, 0x9666, 0x966B,
+  0x966D, 0x966E, 0x966F, 0x9670, 0x9671, 0x9673, 0x9678, 0x9679,
+  0x967A, 0x967B, 0x967C, 0x967D, 0x967E, 0x967F, 0x9680, 0x9681,
+  0x9682, 0x9683, 0x9684, 0x9687, 0x9689, 0x968A, 0x8F8D, 0x8F8E,
+  0x8F8F, 0x8F98, 0x8F9A, 0x8ECE, 0x620B, 0x6217, 0x621B, 0x621F,
+  0x6222, 0x6221, 0x6225, 0x6224, 0x622C, 0x81E7, 0x74EF, 0x74F4,
+  0x74FF, 0x750F, 0x7511, 0x7513, 0x6534, 0x65EE, 0x65EF, 0x65F0,
+  0x660A, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600, 0x7085, 0x66F7,
+  0x661D, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006, 0x665F, 0x6654,
+  0x6641, 0x664F, 0x6656, 0x6661, 0x6657, 0x6677, 0x6684, 0x668C,
+  0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC, 0x66E6, 0x66E9, 0x8D32,
+  0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40, 0x8D45, 0x8D46, 0x8D48,
+  0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59, 0x89C7, 0x89CA, 0x89CB,
+  0x89CC, 0x89CE, 0x89CF, 0x89D0, 0x89D1, 0x726E, 0x729F, 0x725D,
+  0x7266, 0x726F, 0x727E, 0x727F, 0x7284, 0x728B, 0x728D, 0x728F,
+  0x7292, 0x6308, 0x6332, 0x63B0, 0x968C, 0x968E, 0x9691, 0x9692,
+  0x9693, 0x9695, 0x9696, 0x969A, 0x969B, 0x969D, 0x969E, 0x969F,
+  0x96A0, 0x96A1, 0x96A2, 0x96A3, 0x96A4, 0x96A5, 0x96A6, 0x96A8,
+  0x96A9, 0x96AA, 0x96AB, 0x96AC, 0x96AD, 0x96AE, 0x96AF, 0x96B1,
+  0x96B2, 0x96B4, 0x96B5, 0x96B7, 0x96B8, 0x96BA, 0x96BB, 0x96BF,
+  0x96C2, 0x96C3, 0x96C8, 0x96CA, 0x96CB, 0x96D0, 0x96D1, 0x96D3,
+  0x96D4, 0x96D6, 0x96D7, 0x96D8, 0x96D9, 0x96DA, 0x96DB, 0x96DC,
+  0x96DD, 0x96DE, 0x96DF, 0x96E1, 0x96E2, 0x96E3, 0x96E4, 0x96E5,
+  0x96E6, 0x96E7, 0x96EB, 0x96EC, 0x96ED, 0x96EE, 0x96F0, 0x96F1,
+  0x96F2, 0x96F4, 0x96F5, 0x96F8, 0x96FA, 0x96FB, 0x96FC, 0x96FD,
+  0x96FF, 0x9702, 0x9703, 0x9705, 0x970A, 0x970B, 0x970C, 0x9710,
+plane 80        
+at 0x00
+  0x9711, 0x9712, 0x9714, 0x9715, 0x9717, 0x9718, 0x9719, 0x971A,
+  0x971B, 0x971D, 0x971F, 0x9720, 0x643F, 0x64D8, 0x8004, 0x6BEA,
+  0x6BF3, 0x6BFD, 0x6BF5, 0x6BF9, 0x6C05, 0x6C07, 0x6C06, 0x6C0D,
+  0x6C15, 0x6C18, 0x6C19, 0x6C1A, 0x6C21, 0x6C29, 0x6C24, 0x6C2A,
+  0x6C32, 0x6535, 0x6555, 0x656B, 0x724D, 0x7252, 0x7256, 0x7230,
+  0x8662, 0x5216, 0x809F, 0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD,
+  0x80B1, 0x80AB, 0x80AD, 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9,
+  0x80EA, 0x80DB, 0x80C2, 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710,
+  0x80DD, 0x80EB, 0x80F1, 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2,
+  0x80FC, 0x6715, 0x8112, 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118,
+  0x8132, 0x8148, 0x814C, 0x8153, 0x8174, 0x8159, 0x815A, 0x8171,
+  0x8160, 0x8169, 0x817C, 0x817D, 0x816D, 0x8167, 0x584D, 0x5AB5,
+  0x8188, 0x8182, 0x8191, 0x6ED5, 0x81A3, 0x81AA, 0x81CC, 0x6726,
+  0x81CA, 0x81BB, 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726,
+  0x9727, 0x9728, 0x9729, 0x972B, 0x972C, 0x972E, 0x972F, 0x9731,
+  0x9733, 0x9734, 0x9735, 0x9736, 0x9737, 0x973A, 0x973B, 0x973C,
+  0x973D, 0x973F, 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745,
+  0x9746, 0x9747, 0x9748, 0x9749, 0x974A, 0x974B, 0x974C, 0x974D,
+  0x974E, 0x974F, 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758,
+  0x975A, 0x975C, 0x975D, 0x975F, 0x9763, 0x9764, 0x9766, 0x9767,
+  0x9768, 0x976A, 0x976B, 0x976C, 0x976D, 0x976E, 0x976F, 0x9770,
+  0x9771, 0x9772, 0x9775, 0x9777, 0x9778, 0x9779, 0x977A, 0x977B,
+  0x977D, 0x977E, 0x977F, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784,
+  0x9786, 0x9787, 0x9788, 0x9789, 0x978A, 0x978C, 0x978E, 0x978F,
+  0x9790, 0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979A, 0x979B,
+  0x979C, 0x979D, 0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43,
+  0x6B46, 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA,
+  0x6BB3, 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC,
+  0x65C6, 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080,
+  0x709C, 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1,
+  0x70E8, 0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173,
+  0x715C, 0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198,
+plane 81        
+at 0x00
+  0x71B3, 0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9,
+  0x721D, 0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D,
+  0x6243, 0x6248, 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B,
+  0x795C, 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, 0x7967,
+  0x797A, 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0,
+  0x979E, 0x979F, 0x97A1, 0x97A2, 0x97A4, 0x97A5, 0x97A6, 0x97A7,
+  0x97A8, 0x97A9, 0x97AA, 0x97AC, 0x97AE, 0x97B0, 0x97B1, 0x97B3,
+  0x97B5, 0x97B6, 0x97B7, 0x97B8, 0x97B9, 0x97BA, 0x97BB, 0x97BC,
+  0x97BD, 0x97BE, 0x97BF, 0x97C0, 0x97C1, 0x97C2, 0x97C3, 0x97C4,
+  0x97C5, 0x97C6, 0x97C7, 0x97C8, 0x97C9, 0x97CA, 0x97CB, 0x97CC,
+  0x97CD, 0x97CE, 0x97CF, 0x97D0, 0x97D1, 0x97D2, 0x97D3, 0x97D4,
+  0x97D5, 0x97D6, 0x97D7, 0x97D8, 0x97D9, 0x97DA, 0x97DB, 0x97DC,
+  0x97DD, 0x97DE, 0x97DF, 0x97E0, 0x97E1, 0x97E2, 0x97E3, 0x97E4,
+  0x97E5, 0x97E8, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2, 0x97F4,
+  0x97F7, 0x97F8, 0x97F9, 0x97FA, 0x97FB, 0x97FC, 0x97FD, 0x97FE,
+  0x97FF, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, 0x9806,
+  0x9807, 0x9808, 0x9809, 0x980A, 0x980B, 0x980C, 0x980D, 0x980E,
+  0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, 0x60AB,
+  0x6106, 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, 0x6206,
+  0x8080, 0x807F, 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, 0x7800,
+  0x7809, 0x7817, 0x7818, 0x7811, 0x65AB, 0x782D, 0x781C, 0x781D,
+  0x7839, 0x783A, 0x783B, 0x781F, 0x783C, 0x7825, 0x782C, 0x7823,
+  0x7829, 0x784E, 0x786D, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847,
+  0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, 0x789C, 0x78A1,
+  0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9, 0x78EC,
+  0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, 0x9F9B,
+  0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, 0x7707,
+  0x7708, 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, 0x7738,
+  0x7750, 0x7751, 0x7747, 0x7743, 0x775A, 0x7768, 0x980F, 0x9810,
+  0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816, 0x9817, 0x9818,
+  0x9819, 0x981A, 0x981B, 0x981C, 0x981D, 0x981E, 0x981F, 0x9820,
+  0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826, 0x9827, 0x9828,
+plane 82        
+at 0x00
+  0x9829, 0x982A, 0x982B, 0x982C, 0x982D, 0x982E, 0x982F, 0x9830,
+  0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836, 0x9837, 0x9838,
+  0x9839, 0x983A, 0x983B, 0x983C, 0x983D, 0x983E, 0x983F, 0x9840,
+  0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, 0x9848,
+  0x9849, 0x984A, 0x984B, 0x984C, 0x984D, 0x984E, 0x984F, 0x9850,
+  0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857, 0x9858,
+  0x9859, 0x985A, 0x985B, 0x985C, 0x985D, 0x985E, 0x985F, 0x9860,
+  0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868,
+  0x9869, 0x986A, 0x986B, 0x986C, 0x986D, 0x986E, 0x7762, 0x7765,
+  0x777F, 0x778D, 0x777D, 0x7780, 0x778C, 0x7791, 0x779F, 0x77A0,
+  0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540, 0x754E, 0x754B, 0x7548,
+  0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, 0x7F61, 0x7F5F, 0x8A48,
+  0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, 0x7F7E, 0x76CD, 0x76E5,
+  0x8832, 0x9485, 0x9486, 0x9487, 0x948B, 0x948A, 0x948C, 0x948D,
+  0x948F, 0x9490, 0x9494, 0x9497, 0x9495, 0x949A, 0x949B, 0x949C,
+  0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, 0x94AC, 0x94AF, 0x94B0,
+  0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BC,
+  0x94BD, 0x94BF, 0x94C4, 0x94C8, 0x94C9, 0x94CA, 0x94CB, 0x94CC,
+  0x94CD, 0x94CE, 0x94D0, 0x94D1, 0x94D2, 0x94D5, 0x94D6, 0x94D7,
+  0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF, 0x94E0, 0x94E2, 0x94E4,
+  0x94E5, 0x94E7, 0x94E8, 0x94EA, 0x986F, 0x9870, 0x9871, 0x9872,
+  0x9873, 0x9874, 0x988B, 0x988E, 0x9892, 0x9895, 0x9899, 0x98A3,
+  0x98A8, 0x98A9, 0x98AA, 0x98AB, 0x98AC, 0x98AD, 0x98AE, 0x98AF,
+  0x98B0, 0x98B1, 0x98B2, 0x98B3, 0x98B4, 0x98B5, 0x98B6, 0x98B7,
+  0x98B8, 0x98B9, 0x98BA, 0x98BB, 0x98BC, 0x98BD, 0x98BE, 0x98BF,
+  0x98C0, 0x98C1, 0x98C2, 0x98C3, 0x98C4, 0x98C5, 0x98C6, 0x98C7,
+  0x98C8, 0x98C9, 0x98CA, 0x98CB, 0x98CC, 0x98CD, 0x98CF, 0x98D0,
+  0x98D4, 0x98D6, 0x98D7, 0x98DB, 0x98DC, 0x98DD, 0x98E0, 0x98E1,
+  0x98E2, 0x98E3, 0x98E4, 0x98E5, 0x98E6, 0x98E9, 0x98EA, 0x98EB,
+  0x98EC, 0x98ED, 0x98EE, 0x98EF, 0x98F0, 0x98F1, 0x98F2, 0x98F3,
+  0x98F4, 0x98F5, 0x98F6, 0x98F7, 0x98F8, 0x98F9, 0x98FA, 0x98FB,
+  0x98FC, 0x98FD, 0x98FE, 0x98FF, 0x9900, 0x9901, 0x9902, 0x9903,
+plane 83        
+at 0x00
+  0x9904, 0x9905, 0x9906, 0x9907, 0x94E9, 0x94EB, 0x94EE, 0x94EF,
+  0x94F3, 0x94F4, 0x94F5, 0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF,
+  0x9503, 0x9502, 0x9506, 0x9507, 0x9509, 0x950A, 0x950D, 0x950E,
+  0x950F, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951B,
+  0x951D, 0x951E, 0x951F, 0x9522, 0x952A, 0x952B, 0x9529, 0x952C,
+  0x9531, 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953C, 0x953E,
+  0x953F, 0x9542, 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954C,
+  0x954E, 0x954F, 0x9552, 0x9553, 0x9554, 0x9556, 0x9557, 0x9558,
+  0x9559, 0x955B, 0x955E, 0x955F, 0x955D, 0x9561, 0x9562, 0x9564,
+  0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956A, 0x956B, 0x956C,
+  0x956F, 0x9571, 0x9572, 0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9,
+  0x79D5, 0x79ED, 0x79E3, 0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02,
+  0x7A1E, 0x7A14, 0x9908, 0x9909, 0x990A, 0x990B, 0x990C, 0x990E,
+  0x990F, 0x9911, 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917,
+  0x9918, 0x9919, 0x991A, 0x991B, 0x991C, 0x991D, 0x991E, 0x991F,
+  0x9920, 0x9921, 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927,
+  0x9928, 0x9929, 0x992A, 0x992B, 0x992C, 0x992D, 0x992F, 0x9930,
+  0x9931, 0x9932, 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938,
+  0x9939, 0x993A, 0x993B, 0x993C, 0x993D, 0x993E, 0x993F, 0x9940,
+  0x9941, 0x9942, 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948,
+  0x9949, 0x994A, 0x994B, 0x994C, 0x994D, 0x994E, 0x994F, 0x9950,
+  0x9951, 0x9952, 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995A,
+  0x995B, 0x995C, 0x995D, 0x995E, 0x995F, 0x9960, 0x9961, 0x9962,
+  0x9964, 0x9966, 0x9973, 0x9978, 0x9979, 0x997B, 0x997E, 0x9982,
+  0x9983, 0x9989, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70,
+  0x7688, 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C,
+  0x9E20, 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32,
+  0x9E31, 0x9E36, 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41,
+  0x9E42, 0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C,
+  0x9E4E, 0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E,
+  0x9E63, 0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C,
+  0x9E71, 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D,
+plane 84        
+at 0x00
+  0x75AC, 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0,
+  0x75C3, 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4,
+  0x75EB, 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600,
+  0x7605, 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619,
+  0x998C, 0x998E, 0x999A, 0x999B, 0x999C, 0x999D, 0x999E, 0x999F,
+  0x99A0, 0x99A1, 0x99A2, 0x99A3, 0x99A4, 0x99A6, 0x99A7, 0x99A9,
+  0x99AA, 0x99AB, 0x99AC, 0x99AD, 0x99AE, 0x99AF, 0x99B0, 0x99B1,
+  0x99B2, 0x99B3, 0x99B4, 0x99B5, 0x99B6, 0x99B7, 0x99B8, 0x99B9,
+  0x99BA, 0x99BB, 0x99BC, 0x99BD, 0x99BE, 0x99BF, 0x99C0, 0x99C1,
+  0x99C2, 0x99C3, 0x99C4, 0x99C5, 0x99C6, 0x99C7, 0x99C8, 0x99C9,
+  0x99CA, 0x99CB, 0x99CC, 0x99CD, 0x99CE, 0x99CF, 0x99D0, 0x99D1,
+  0x99D2, 0x99D3, 0x99D4, 0x99D5, 0x99D6, 0x99D7, 0x99D8, 0x99D9,
+  0x99DA, 0x99DB, 0x99DC, 0x99DD, 0x99DE, 0x99DF, 0x99E0, 0x99E1,
+  0x99E2, 0x99E3, 0x99E4, 0x99E5, 0x99E6, 0x99E7, 0x99E8, 0x99E9,
+  0x99EA, 0x99EB, 0x99EC, 0x99ED, 0x99EE, 0x99EF, 0x99F0, 0x99F1,
+  0x99F2, 0x99F3, 0x99F4, 0x99F5, 0x99F6, 0x99F7, 0x99F8, 0x99F9,
+  0x761B, 0x763C, 0x7622, 0x7620, 0x7640, 0x762D, 0x7630, 0x763F,
+  0x7635, 0x7643, 0x763E, 0x7633, 0x764D, 0x765E, 0x7654, 0x765C,
+  0x7656, 0x766B, 0x766F, 0x7FCA, 0x7AE6, 0x7A78, 0x7A79, 0x7A80,
+  0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0, 0x7AAC, 0x7AA8, 0x7AAD,
+  0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F, 0x8882, 0x88A2,
+  0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3, 0x88E5,
+  0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921, 0x8919,
+  0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941, 0x8966,
+  0x897B, 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012, 0x8014,
+  0x8016, 0x801C, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029,
+  0x8028, 0x8031, 0x800B, 0x8035, 0x8043, 0x8046, 0x804D, 0x8052,
+  0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883, 0x99FA, 0x99FB,
+  0x99FC, 0x99FD, 0x99FE, 0x99FF, 0x9A00, 0x9A01, 0x9A02, 0x9A03,
+  0x9A04, 0x9A05, 0x9A06, 0x9A07, 0x9A08, 0x9A09, 0x9A0A, 0x9A0B,
+  0x9A0C, 0x9A0D, 0x9A0E, 0x9A0F, 0x9A10, 0x9A11, 0x9A12, 0x9A13,
+  0x9A14, 0x9A15, 0x9A16, 0x9A17, 0x9A18, 0x9A19, 0x9A1A, 0x9A1B,
+plane 85        
+at 0x00
+  0x9A1C, 0x9A1D, 0x9A1E, 0x9A1F, 0x9A20, 0x9A21, 0x9A22, 0x9A23,
+  0x9A24, 0x9A25, 0x9A26, 0x9A27, 0x9A28, 0x9A29, 0x9A2A, 0x9A2B,
+  0x9A2C, 0x9A2D, 0x9A2E, 0x9A2F, 0x9A30, 0x9A31, 0x9A32, 0x9A33,
+  0x9A34, 0x9A35, 0x9A36, 0x9A37, 0x9A38, 0x9A39, 0x9A3A, 0x9A3B,
+  0x9A3C, 0x9A3D, 0x9A3E, 0x9A3F, 0x9A40, 0x9A41, 0x9A42, 0x9A43,
+  0x9A44, 0x9A45, 0x9A46, 0x9A47, 0x9A48, 0x9A49, 0x9A4A, 0x9A4B,
+  0x9A4C, 0x9A4D, 0x9A4E, 0x9A4F, 0x9A50, 0x9A51, 0x9A52, 0x9A53,
+  0x9A54, 0x9A55, 0x9A56, 0x9A57, 0x9A58, 0x9A59, 0x9889, 0x988C,
+  0x988D, 0x988F, 0x9894, 0x989A, 0x989B, 0x989E, 0x989F, 0x98A1,
+  0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654, 0x866C, 0x866E, 0x867F,
+  0x867A, 0x867C, 0x867B, 0x86A8, 0x868D, 0x868B, 0x86AC, 0x869D,
+  0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9, 0x86B6, 0x86C4, 0x86B5,
+  0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF, 0x86C9, 0x86CF, 0x86B4,
+  0x86E9, 0x86F1, 0x86F2, 0x86ED, 0x86F3, 0x86D0, 0x8713, 0x86DE,
+  0x86F4, 0x86DF, 0x86D8, 0x86D1, 0x8703, 0x8707, 0x86F8, 0x8708,
+  0x870A, 0x870D, 0x8709, 0x8723, 0x873B, 0x871E, 0x8725, 0x872E,
+  0x871A, 0x873E, 0x8748, 0x8734, 0x8731, 0x8729, 0x8737, 0x873F,
+  0x8782, 0x8722, 0x877D, 0x877E, 0x877B, 0x8760, 0x8770, 0x874C,
+  0x876E, 0x878B, 0x8753, 0x8763, 0x877C, 0x8764, 0x8759, 0x8765,
+  0x8793, 0x87AF, 0x87A8, 0x87D2, 0x9A5A, 0x9A5B, 0x9A5C, 0x9A5D,
+  0x9A5E, 0x9A5F, 0x9A60, 0x9A61, 0x9A62, 0x9A63, 0x9A64, 0x9A65,
+  0x9A66, 0x9A67, 0x9A68, 0x9A69, 0x9A6A, 0x9A6B, 0x9A72, 0x9A83,
+  0x9A89, 0x9A8D, 0x9A8E, 0x9A94, 0x9A95, 0x9A99, 0x9AA6, 0x9AA9,
+  0x9AAA, 0x9AAB, 0x9AAC, 0x9AAD, 0x9AAE, 0x9AAF, 0x9AB2, 0x9AB3,
+  0x9AB4, 0x9AB5, 0x9AB9, 0x9ABB, 0x9ABD, 0x9ABE, 0x9ABF, 0x9AC3,
+  0x9AC4, 0x9AC6, 0x9AC7, 0x9AC8, 0x9AC9, 0x9ACA, 0x9ACD, 0x9ACE,
+  0x9ACF, 0x9AD0, 0x9AD2, 0x9AD4, 0x9AD5, 0x9AD6, 0x9AD7, 0x9AD9,
+  0x9ADA, 0x9ADB, 0x9ADC, 0x9ADD, 0x9ADE, 0x9AE0, 0x9AE2, 0x9AE3,
+  0x9AE4, 0x9AE5, 0x9AE7, 0x9AE8, 0x9AE9, 0x9AEA, 0x9AEC, 0x9AEE,
+  0x9AF0, 0x9AF1, 0x9AF2, 0x9AF3, 0x9AF4, 0x9AF5, 0x9AF6, 0x9AF7,
+  0x9AF8, 0x9AFA, 0x9AFC, 0x9AFD, 0x9AFE, 0x9AFF, 0x9B00, 0x9B01,
+  0x9B02, 0x9B04, 0x9B05, 0x9B06, 0x87C6, 0x8788, 0x8785, 0x87AD,
+plane 86        
+at 0x00
+  0x8797, 0x8783, 0x87AB, 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB,
+  0x87D3, 0x87BD, 0x87D1, 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0,
+  0x87EE, 0x8816, 0x8813, 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839,
+  0x883C, 0x7F36, 0x7F42, 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD,
+  0x7B08, 0x7B03, 0x7B04, 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47,
+  0x7B38, 0x7B2A, 0x7B19, 0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24,
+  0x7B33, 0x7B3E, 0x7B1E, 0x7B58, 0x7B5A, 0x7B45, 0x7B75, 0x7B4C,
+  0x7B5D, 0x7B60, 0x7B6E, 0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90,
+  0x7BA6, 0x7BA7, 0x7BB8, 0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, 0x7BAA,
+  0x7B9C, 0x7BA2, 0x7BAB, 0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD,
+  0x7BDA, 0x7BE5, 0x7BE6, 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F,
+  0x7C16, 0x7C0B, 0x9B07, 0x9B09, 0x9B0A, 0x9B0B, 0x9B0C, 0x9B0D,
+  0x9B0E, 0x9B10, 0x9B11, 0x9B12, 0x9B14, 0x9B15, 0x9B16, 0x9B17,
+  0x9B18, 0x9B19, 0x9B1A, 0x9B1B, 0x9B1C, 0x9B1D, 0x9B1E, 0x9B20,
+  0x9B21, 0x9B22, 0x9B24, 0x9B25, 0x9B26, 0x9B27, 0x9B28, 0x9B29,
+  0x9B2A, 0x9B2B, 0x9B2C, 0x9B2D, 0x9B2E, 0x9B30, 0x9B31, 0x9B33,
+  0x9B34, 0x9B35, 0x9B36, 0x9B37, 0x9B38, 0x9B39, 0x9B3A, 0x9B3D,
+  0x9B3E, 0x9B3F, 0x9B40, 0x9B46, 0x9B4A, 0x9B4B, 0x9B4C, 0x9B4E,
+  0x9B50, 0x9B52, 0x9B53, 0x9B55, 0x9B56, 0x9B57, 0x9B58, 0x9B59,
+  0x9B5A, 0x9B5B, 0x9B5C, 0x9B5D, 0x9B5E, 0x9B5F, 0x9B60, 0x9B61,
+  0x9B62, 0x9B63, 0x9B64, 0x9B65, 0x9B66, 0x9B67, 0x9B68, 0x9B69,
+  0x9B6A, 0x9B6B, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B6F, 0x9B70, 0x9B71,
+  0x9B72, 0x9B73, 0x9B74, 0x9B75, 0x9B76, 0x9B77, 0x9B78, 0x9B79,
+  0x9B7A, 0x9B7B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40,
+  0x81FE, 0x8201, 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222,
+  0x8223, 0x822D, 0x822F, 0x8228, 0x822B, 0x8238, 0x823B, 0x8233,
+  0x8234, 0x823E, 0x8244, 0x8249, 0x824B, 0x824F, 0x825A, 0x825F,
+  0x8268, 0x887E, 0x8885, 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D,
+  0x7F9F, 0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91,
+  0x7C9D, 0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1,
+  0x7CC7, 0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E,
+  0x66A8, 0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9,
+plane 87        
+at 0x00
+  0x7FEE, 0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B,
+  0x9EB8, 0x9EB4, 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67,
+  0x8D6D, 0x8C47, 0x8C49, 0x914A, 0x9150, 0x914E, 0x914F, 0x9164,
+  0x9B7C, 0x9B7D, 0x9B7E, 0x9B7F, 0x9B80, 0x9B81, 0x9B82, 0x9B83,
+  0x9B84, 0x9B85, 0x9B86, 0x9B87, 0x9B88, 0x9B89, 0x9B8A, 0x9B8B,
+  0x9B8C, 0x9B8D, 0x9B8E, 0x9B8F, 0x9B90, 0x9B91, 0x9B92, 0x9B93,
+  0x9B94, 0x9B95, 0x9B96, 0x9B97, 0x9B98, 0x9B99, 0x9B9A, 0x9B9B,
+  0x9B9C, 0x9B9D, 0x9B9E, 0x9B9F, 0x9BA0, 0x9BA1, 0x9BA2, 0x9BA3,
+  0x9BA4, 0x9BA5, 0x9BA6, 0x9BA7, 0x9BA8, 0x9BA9, 0x9BAA, 0x9BAB,
+  0x9BAC, 0x9BAD, 0x9BAE, 0x9BAF, 0x9BB0, 0x9BB1, 0x9BB2, 0x9BB3,
+  0x9BB4, 0x9BB5, 0x9BB6, 0x9BB7, 0x9BB8, 0x9BB9, 0x9BBA, 0x9BBB,
+  0x9BBC, 0x9BBD, 0x9BBE, 0x9BBF, 0x9BC0, 0x9BC1, 0x9BC2, 0x9BC3,
+  0x9BC4, 0x9BC5, 0x9BC6, 0x9BC7, 0x9BC8, 0x9BC9, 0x9BCA, 0x9BCB,
+  0x9BCC, 0x9BCD, 0x9BCE, 0x9BCF, 0x9BD0, 0x9BD1, 0x9BD2, 0x9BD3,
+  0x9BD4, 0x9BD5, 0x9BD6, 0x9BD7, 0x9BD8, 0x9BD9, 0x9BDA, 0x9BDB,
+  0x9162, 0x9161, 0x9170, 0x9169, 0x916F, 0x917D, 0x917E, 0x9172,
+  0x9174, 0x9179, 0x918C, 0x9185, 0x9190, 0x918D, 0x9191, 0x91A2,
+  0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4, 0x91BA,
+  0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69, 0x8DB5,
+  0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, 0x8DDE,
+  0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, 0x8DE3,
+  0x8DF9, 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 0x8E1F,
+  0x8E2C, 0x8E2E, 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, 0x8E35,
+  0x8E3D, 0x8E31, 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52, 0x8E4A,
+  0x8E70, 0x8E76, 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F, 0x8E94,
+  0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85, 0x8C98,
+  0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC, 0x9BDC, 0x9BDD,
+  0x9BDE, 0x9BDF, 0x9BE0, 0x9BE1, 0x9BE2, 0x9BE3, 0x9BE4, 0x9BE5,
+  0x9BE6, 0x9BE7, 0x9BE8, 0x9BE9, 0x9BEA, 0x9BEB, 0x9BEC, 0x9BED,
+  0x9BEE, 0x9BEF, 0x9BF0, 0x9BF1, 0x9BF2, 0x9BF3, 0x9BF4, 0x9BF5,
+  0x9BF6, 0x9BF7, 0x9BF8, 0x9BF9, 0x9BFA, 0x9BFB, 0x9BFC, 0x9BFD,
+  0x9BFE, 0x9BFF, 0x9C00, 0x9C01, 0x9C02, 0x9C03, 0x9C04, 0x9C05,
+plane 88        
+at 0x00
+  0x9C06, 0x9C07, 0x9C08, 0x9C09, 0x9C0A, 0x9C0B, 0x9C0C, 0x9C0D,
+  0x9C0E, 0x9C0F, 0x9C10, 0x9C11, 0x9C12, 0x9C13, 0x9C14, 0x9C15,
+  0x9C16, 0x9C17, 0x9C18, 0x9C19, 0x9C1A, 0x9C1B, 0x9C1C, 0x9C1D,
+  0x9C1E, 0x9C1F, 0x9C20, 0x9C21, 0x9C22, 0x9C23, 0x9C24, 0x9C25,
+  0x9C26, 0x9C27, 0x9C28, 0x9C29, 0x9C2A, 0x9C2B, 0x9C2C, 0x9C2D,
+  0x9C2E, 0x9C2F, 0x9C30, 0x9C31, 0x9C32, 0x9C33, 0x9C34, 0x9C35,
+  0x9C36, 0x9C37, 0x9C38, 0x9C39, 0x9C3A, 0x9C3B, 0x89E5, 0x89EB,
+  0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9, 0x96F3, 0x96EF, 0x9706,
+  0x9701, 0x9708, 0x970F, 0x970E, 0x972A, 0x972D, 0x9730, 0x973E,
+  0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87, 0x9F88, 0x9F89, 0x9F8A,
+  0x9F8C, 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9, 0x96BC, 0x96BD, 0x96CE,
+  0x96D2, 0x77BF, 0x96E0, 0x928E, 0x92AE, 0x92C8, 0x933E, 0x936A,
+  0x93CA, 0x938F, 0x943E, 0x946B, 0x9C7F, 0x9C82, 0x9C85, 0x9C86,
+  0x9C87, 0x9C88, 0x7A23, 0x9C8B, 0x9C8E, 0x9C90, 0x9C91, 0x9C92,
+  0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E, 0x9C9F, 0x9CA0, 0x9CA1,
+  0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7, 0x9CA8, 0x9CA9, 0x9CAB,
+  0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2, 0x9CB3, 0x9CB4, 0x9CB5,
+  0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC, 0x9CBD, 0x9CC4, 0x9CC5,
+  0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB, 0x9C3C, 0x9C3D, 0x9C3E, 0x9C3F,
+  0x9C40, 0x9C41, 0x9C42, 0x9C43, 0x9C44, 0x9C45, 0x9C46, 0x9C47,
+  0x9C48, 0x9C49, 0x9C4A, 0x9C4B, 0x9C4C, 0x9C4D, 0x9C4E, 0x9C4F,
+  0x9C50, 0x9C51, 0x9C52, 0x9C53, 0x9C54, 0x9C55, 0x9C56, 0x9C57,
+  0x9C58, 0x9C59, 0x9C5A, 0x9C5B, 0x9C5C, 0x9C5D, 0x9C5E, 0x9C5F,
+  0x9C60, 0x9C61, 0x9C62, 0x9C63, 0x9C64, 0x9C65, 0x9C66, 0x9C67,
+  0x9C68, 0x9C69, 0x9C6A, 0x9C6B, 0x9C6C, 0x9C6D, 0x9C6E, 0x9C6F,
+  0x9C70, 0x9C71, 0x9C72, 0x9C73, 0x9C74, 0x9C75, 0x9C76, 0x9C77,
+  0x9C78, 0x9C79, 0x9C7A, 0x9C7B, 0x9C7D, 0x9C7E, 0x9C80, 0x9C83,
+  0x9C84, 0x9C89, 0x9C8A, 0x9C8C, 0x9C8F, 0x9C93, 0x9C96, 0x9C97,
+  0x9C98, 0x9C99, 0x9C9D, 0x9CAA, 0x9CAC, 0x9CAF, 0x9CB9, 0x9CBE,
+  0x9CBF, 0x9CC0, 0x9CC1, 0x9CC2, 0x9CC8, 0x9CC9, 0x9CD1, 0x9CD2,
+  0x9CDA, 0x9CDB, 0x9CE0, 0x9CE1, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF,
+  0x9CD0, 0x9CD3, 0x9CD4, 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC,
+plane 89        
+at 0x00
+  0x9CDD, 0x9CDF, 0x9CE2, 0x977C, 0x9785, 0x9791, 0x9792, 0x9794,
+  0x97AF, 0x97AB, 0x97A3, 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7,
+  0x9E58, 0x9AB6, 0x9ABA, 0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2,
+  0x9ACB, 0x9ACC, 0x9AD1, 0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48,
+  0x9B4D, 0x9B51, 0x98E8, 0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF,
+  0x9AE1, 0x9AE6, 0x9AEF, 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08,
+  0x9B0F, 0x9B13, 0x9B1F, 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82,
+  0x9E87, 0x9E88, 0x9E8B, 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB,
+  0x9EDC, 0x9EDD, 0x9EE0, 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5,
+  0x9EEA, 0x9EEF, 0x9F22, 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D,
+  0x9F3E, 0x9F44, 0x9CE3, 0x9CE4, 0x9CE5, 0x9CE6, 0x9CE7, 0x9CE8,
+  0x9CE9, 0x9CEA, 0x9CEB, 0x9CEC, 0x9CED, 0x9CEE, 0x9CEF, 0x9CF0,
+  0x9CF1, 0x9CF2, 0x9CF3, 0x9CF4, 0x9CF5, 0x9CF6, 0x9CF7, 0x9CF8,
+  0x9CF9, 0x9CFA, 0x9CFB, 0x9CFC, 0x9CFD, 0x9CFE, 0x9CFF, 0x9D00,
+  0x9D01, 0x9D02, 0x9D03, 0x9D04, 0x9D05, 0x9D06, 0x9D07, 0x9D08,
+  0x9D09, 0x9D0A, 0x9D0B, 0x9D0C, 0x9D0D, 0x9D0E, 0x9D0F, 0x9D10,
+  0x9D11, 0x9D12, 0x9D13, 0x9D14, 0x9D15, 0x9D16, 0x9D17, 0x9D18,
+  0x9D19, 0x9D1A, 0x9D1B, 0x9D1C, 0x9D1D, 0x9D1E, 0x9D1F, 0x9D20,
+  0x9D21, 0x9D22, 0x9D23, 0x9D24, 0x9D25, 0x9D26, 0x9D27, 0x9D28,
+  0x9D29, 0x9D2A, 0x9D2B, 0x9D2C, 0x9D2D, 0x9D2E, 0x9D2F, 0x9D30,
+  0x9D31, 0x9D32, 0x9D33, 0x9D34, 0x9D35, 0x9D36, 0x9D37, 0x9D38,
+  0x9D39, 0x9D3A, 0x9D3B, 0x9D3C, 0x9D3D, 0x9D3E, 0x9D3F, 0x9D40,
+  0x9D41, 0x9D42,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 90        
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+  0x9D43, 0x9D44, 0x9D45, 0x9D46, 0x9D47, 0x9D48, 0x9D49, 0x9D4A,
+  0x9D4B, 0x9D4C, 0x9D4D, 0x9D4E, 0x9D4F, 0x9D50, 0x9D51, 0x9D52,
+  0x9D53, 0x9D54, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0x9D5A,
+  0x9D5B, 0x9D5C, 0x9D5D, 0x9D5E, 0x9D5F, 0x9D60, 0x9D61, 0x9D62,
+  0x9D63, 0x9D64, 0x9D65, 0x9D66, 0x9D67, 0x9D68, 0x9D69, 0x9D6A,
+  0x9D6B, 0x9D6C, 0x9D6D, 0x9D6E, 0x9D6F, 0x9D70, 0x9D71, 0x9D72,
+  0x9D73, 0x9D74, 0x9D75, 0x9D76, 0x9D77, 0x9D78, 0x9D79, 0x9D7A,
+  0x9D7B, 0x9D7C, 0x9D7D, 0x9D7E, 0x9D7F, 0x9D80, 0x9D81, 0x9D82,
+  0x9D83, 0x9D84, 0x9D85, 0x9D86, 0x9D87, 0x9D88, 0x9D89, 0x9D8A,
+  0x9D8B, 0x9D8C, 0x9D8D, 0x9D8E, 0x9D8F, 0x9D90, 0x9D91, 0x9D92,
+  0x9D93, 0x9D94, 0x9D95, 0x9D96, 0x9D97, 0x9D98, 0x9D99, 0x9D9A,
+  0x9D9B, 0x9D9C, 0x9D9D, 0x9D9E, 0x9D9F, 0x9DA0, 0x9DA1, 0x9DA2,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0, 0x9DA3, 0x9DA4,
+  0x9DA5, 0x9DA6, 0x9DA7, 0x9DA8, 0x9DA9, 0x9DAA, 0x9DAB, 0x9DAC,
+  0x9DAD, 0x9DAE, 0x9DAF, 0x9DB0, 0x9DB1, 0x9DB2, 0x9DB3, 0x9DB4,
+  0x9DB5, 0x9DB6, 0x9DB7, 0x9DB8, 0x9DB9, 0x9DBA, 0x9DBB, 0x9DBC,
+  0x9DBD, 0x9DBE, 0x9DBF, 0x9DC0, 0x9DC1, 0x9DC2, 0x9DC3, 0x9DC4,
+  0x9DC5, 0x9DC6, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA, 0x9DCB, 0x9DCC,
+  0x9DCD, 0x9DCE, 0x9DCF, 0x9DD0, 0x9DD1, 0x9DD2, 0x9DD3, 0x9DD4,
+plane 91        
+at 0x00
+  0x9DD5, 0x9DD6, 0x9DD7, 0x9DD8, 0x9DD9, 0x9DDA, 0x9DDB, 0x9DDC,
+  0x9DDD, 0x9DDE, 0x9DDF, 0x9DE0, 0x9DE1, 0x9DE2, 0x9DE3, 0x9DE4,
+  0x9DE5, 0x9DE6, 0x9DE7, 0x9DE8, 0x9DE9, 0x9DEA, 0x9DEB, 0x9DEC,
+  0x9DED, 0x9DEE, 0x9DEF, 0x9DF0, 0x9DF1, 0x9DF2, 0x9DF3, 0x9DF4,
+  0x9DF5, 0x9DF6, 0x9DF7, 0x9DF8, 0x9DF9, 0x9DFA, 0x9DFB, 0x9DFC,
+  0x9DFD, 0x9DFE, 0x9DFF, 0x9E00, 0x9E01, 0x9E02,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0, 0x9E03, 0x9E04, 0x9E05, 0x9E06,
+  0x9E07, 0x9E08, 0x9E09, 0x9E0A, 0x9E0B, 0x9E0C, 0x9E0D, 0x9E0E,
+  0x9E0F, 0x9E10, 0x9E11, 0x9E12, 0x9E13, 0x9E14, 0x9E15, 0x9E16,
+  0x9E17, 0x9E18, 0x9E19, 0x9E1A, 0x9E1B, 0x9E1C, 0x9E1D, 0x9E1E,
+  0x9E24, 0x9E27, 0x9E2E, 0x9E30, 0x9E34, 0x9E3B, 0x9E3C, 0x9E40,
+  0x9E4D, 0x9E50, 0x9E52, 0x9E53, 0x9E54, 0x9E56, 0x9E59, 0x9E5D,
+  0x9E5F, 0x9E60, 0x9E61, 0x9E62, 0x9E65, 0x9E6E, 0x9E6F, 0x9E72,
+  0x9E74, 0x9E75, 0x9E76, 0x9E77, 0x9E78, 0x9E79, 0x9E7A, 0x9E7B,
+  0x9E7C, 0x9E7D, 0x9E80, 0x9E81, 0x9E83, 0x9E84, 0x9E85, 0x9E86,
+  0x9E89, 0x9E8A, 0x9E8C, 0x9E8D, 0x9E8E, 0x9E8F, 0x9E90, 0x9E91,
+  0x9E94, 0x9E95, 0x9E96, 0x9E97, 0x9E98, 0x9E99, 0x9E9A, 0x9E9B,
+  0x9E9C, 0x9E9E, 0x9EA0, 0x9EA1, 0x9EA2, 0x9EA3, 0x9EA4, 0x9EA5,
+  0x9EA7, 0x9EA8, 0x9EA9, 0x9EAA,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 92        
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0, 0x9EAB, 0x9EAC, 0x9EAD, 0x9EAE, 0x9EAF, 0x9EB0,
+  0x9EB1, 0x9EB2, 0x9EB3, 0x9EB5, 0x9EB6, 0x9EB7, 0x9EB9, 0x9EBA,
+  0x9EBC, 0x9EBF, 0x9EC0, 0x9EC1, 0x9EC2, 0x9EC3, 0x9EC5, 0x9EC6,
+  0x9EC7, 0x9EC8, 0x9ECA, 0x9ECB, 0x9ECC, 0x9ED0, 0x9ED2, 0x9ED3,
+  0x9ED5, 0x9ED6, 0x9ED7, 0x9ED9, 0x9EDA, 0x9EDE, 0x9EE1, 0x9EE3,
+  0x9EE4, 0x9EE6, 0x9EE8, 0x9EEB, 0x9EEC, 0x9EED, 0x9EEE, 0x9EF0,
+  0x9EF1, 0x9EF2, 0x9EF3, 0x9EF4, 0x9EF5, 0x9EF6, 0x9EF7, 0x9EF8,
+  0x9EFA, 0x9EFD, 0x9EFF, 0x9F00, 0x9F01, 0x9F02, 0x9F03, 0x9F04,
+  0x9F05, 0x9F06, 0x9F07, 0x9F08, 0x9F09, 0x9F0A, 0x9F0C, 0x9F0F,
+  0x9F11, 0x9F12, 0x9F14, 0x9F15, 0x9F16, 0x9F18, 0x9F1A, 0x9F1B,
+  0x9F1C, 0x9F1D, 0x9F1E, 0x9F1F, 0x9F21, 0x9F23, 0x9F24, 0x9F25,
+  0x9F26, 0x9F27, 0x9F28, 0x9F29, 0x9F2A, 0x9F2B, 0x9F2D, 0x9F2E,
+  0x9F30, 0x9F31,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 93        
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+  0x9F32, 0x9F33, 0x9F34, 0x9F35, 0x9F36, 0x9F38, 0x9F3A, 0x9F3C,
+  0x9F3F, 0x9F40, 0x9F41, 0x9F42, 0x9F43, 0x9F45, 0x9F46, 0x9F47,
+  0x9F48, 0x9F49, 0x9F4A, 0x9F4B, 0x9F4C, 0x9F4D, 0x9F4E, 0x9F4F,
+  0x9F52, 0x9F53, 0x9F54, 0x9F55, 0x9F56, 0x9F57, 0x9F58, 0x9F59,
+  0x9F5A, 0x9F5B, 0x9F5C, 0x9F5D, 0x9F5E, 0x9F5F, 0x9F60, 0x9F61,
+  0x9F62, 0x9F63, 0x9F64, 0x9F65, 0x9F66, 0x9F67, 0x9F68, 0x9F69,
+  0x9F6A, 0x9F6B, 0x9F6C, 0x9F6D, 0x9F6E, 0x9F6F, 0x9F70, 0x9F71,
+  0x9F72, 0x9F73, 0x9F74, 0x9F75, 0x9F76, 0x9F77, 0x9F78, 0x9F79,
+  0x9F7A, 0x9F7B, 0x9F7C, 0x9F7D, 0x9F7E, 0x9F81, 0x9F82, 0x9F8D,
+  0x9F8E, 0x9F8F, 0x9F90, 0x9F91, 0x9F92, 0x9F93, 0x9F94, 0x9F95,
+  0x9F96, 0x9F97, 0x9F98, 0x9F9C, 0x9F9D, 0x9F9E, 0x9FA1, 0x9FA2,
+  0x9FA3, 0x9FA4, 0x9FA5, 0xF92C, 0xF979, 0xF995, 0xF9E7, 0xF9F1,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0, 0xFA0C, 0xFA0D,
+  0xFA0E, 0xFA0F, 0xFA11, 0xFA13, 0xFA14, 0xFA18, 0xFA1F, 0xFA20,
+  0xFA21, 0xFA23, 0xFA24, 0xFA27, 0xFA28, 0xFA29, 0xE815, 0xE816,
+  0xE817, 0xE818, 0xE819, 0xE81A, 0xE81B, 0xE81C, 0xE81D, 0xE81E,
+  0xE81F, 0xE820, 0xE821, 0xE822, 0xE823, 0xE824, 0xE825, 0xE826,
+  0xE827, 0xE828, 0xE829, 0xE82A, 0xE82B, 0xE82C, 0xE82D, 0xE82E,
+  0xE82F, 0xE830, 0xE831, 0xE832, 0xE833, 0xE834, 0xE835, 0xE836,
+  0xE837, 0xE838, 0xE839, 0xE83A, 0xE83B, 0xE83C, 0xE83D, 0xE83E,
+plane 94        
+at 0x00
+  0xE83F, 0xE840, 0xE841, 0xE842, 0xE843, 0xE844, 0xE845, 0xE846,
+  0xE847, 0xE848, 0xE849, 0xE84A, 0xE84B, 0xE84C, 0xE84D, 0xE84E,
+  0xE84F, 0xE850, 0xE851, 0xE852, 0xE853, 0xE854, 0xE855, 0xE856,
+  0xE857, 0xE858, 0xE859, 0xE85A, 0xE85B, 0xE85C, 0xE85D, 0xE85E,
+  0xE85F, 0xE860, 0xE861, 0xE862, 0xE863, 0xE864,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/ubig5.map
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/ubig5.map	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/ubig5.map	(revision 2000)
@@ -0,0 +1,2184 @@
+# BIG5 --> Unicode conversion table:
+#     generated by Chen Xiangyang (chenxy@sun.ihep.ac.cn)
+#
+#     it contains 13703 characters of BIG5 character set, it also contains
+#     some unused codes in order to make the array easy to use.
+#          Code range: first byte:    0xa1 -- 0xFE           94
+#                      second byte:   0x40 -- 0x7F           64
+#                                     0xA1 -- 0xFF           96
+#                      code points:   94 x 160 = 15040
+#
+#     Usage:
+#
+#       unsigned short BIG5_code, unicode;
+#       int pos;
+#       if ((BIG5_code&0x00FF)<=0x7F)
+#           pos = ((BIG5_code>>8)-0xa1)*160 + ((BIG5_code&0x00FF)-0x40);
+#       else
+#           pos = ((BIG5_code>>8)-0xa1)*160 + ((BIG5_code&0x00FF)-0x60);
+#       unicode = big52uni[pos];
+#
+# Converted to ttf2pt1 map format by Sergey Babkin
+#
+plane a1
+at 0x40
+  0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2022, 0xFF1B, 0xFF1A, 
+  0xFF1F, 0xFF01, 0xFE30, 0x2026, 0x2025, 0xFE50, 0xFF64, 0xFE52, 
+  0x00B7, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2013, 0xFE31, 
+  0x2014, 0xFE33,      0, 0xFE34, 0xFE4F, 0xFF08, 0xFF09, 0xFE35, 
+  0xFE36, 0xFF5B, 0xFF5D, 0xFE37, 0xFE38, 0x3014, 0x3015, 0xFE39, 
+  0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C, 0x300A, 0x300B, 0xFE3D, 
+  0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C, 0x300D, 0xFE41, 
+  0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A,      0, 
+at 0xA0
+       0, 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C, 
+  0x201D, 0x301D, 0x301E, 0x2035, 0x2032, 0xFF03, 0xFF06, 0xFF0A, 
+  0x203B, 0x00A7, 0x3003, 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE, 
+  0x2606, 0x2605, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25BD, 0x25BC, 
+  0x32A3, 0x2105, 0x203E,      0, 0xFF3F,      0, 0xFE49, 0xFE4A, 
+  0xFE4D, 0xFE4E, 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, 0xFE61, 0xFF0B, 
+  0xFF0D, 0x00D7, 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, 0xFF1D, 
+  0x2266, 0x2267, 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63, 
+  0xFE64, 0xFE65, 0xFE66, 0x223C, 0x2229, 0x222A, 0x22A5, 0x2220, 
+  0x221F, 0x22BF, 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234, 
+  0x2640, 0x2642, 0x2641, 0x2609, 0x2191, 0x2193, 0x2190, 0x2192, 
+  0x2196, 0x2197, 0x2199, 0x2198, 0x2225, 0x2223,      0,      0, 
+plane a2
+at 0x40
+       0, 0xFF0F, 0xFF3C, 0xFF04, 0x00A5, 0x3012, 0x00A2, 0x00A3, 
+  0xFF05, 0xFF20, 0x2103, 0x2109, 0xFE69, 0xFE6A, 0xFE6B, 0x33D5, 
+  0x339C, 0x339D, 0x339E, 0x33CE, 0x33A1, 0x338E, 0x338F, 0x33C4, 
+  0x00B0, 0x5159, 0x515B, 0x515E, 0x515D, 0x5161, 0x5163, 0x55E7, 
+  0x74E9, 0x7CCE, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 
+  0x2587, 0x2588, 0x258F, 0x258E, 0x258D, 0x258C, 0x258B, 0x258A, 
+  0x2589, 0x253C, 0x2534, 0x252C, 0x2524, 0x251C, 0x2594, 0x2500, 
+  0x2502, 0x2595, 0x250C, 0x2510, 0x2514, 0x2518, 0x256D,      0, 
+at 0xA0
+       0, 0x256E, 0x2570, 0x256F, 0x2550, 0x255E, 0x256A, 0x2561, 
+  0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x2571, 0x2572, 0x2573, 0xFF10, 
+  0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 
+  0xFF19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 
+  0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 
+  0x3026, 0x3027, 0x3028, 0x3029,      0, 0x5344,      0, 0xFF21, 
+  0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 
+  0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 
+  0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 
+  0xFF3A, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 
+  0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 
+  0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56,      0, 
+plane a3
+at 0x40
+  0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x0391, 0x0392, 0x0393, 0x0394, 
+  0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 
+  0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 
+  0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 
+  0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 
+  0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 
+  0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x3105, 0x3106, 0x3107, 0x3108, 
+  0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F,      0, 
+at 0xA0
+       0, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 
+  0x3117, 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 
+  0x311F, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 
+  0x3127, 0x3128, 0x3129, 0x02D9, 0x02C9, 0x02CA, 0x02C7, 0x02CB, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane a4
+at 0x40
+  0x4E00, 0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, 0x4E8C, 
+  0x4EBA, 0x513F, 0x5165, 0x516B, 0x51E0, 0x5200, 0x5201, 0x529B, 
+  0x5315, 0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08, 0x4E0A, 
+  0x4E2B, 0x4E38, 0x51E1, 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, 0x4E8E, 
+  0x4EA1, 0x5140, 0x5203, 0x52FA, 0x5343, 0x53C9, 0x53E3, 0x571F, 
+  0x58EB, 0x5915, 0x5927, 0x5973, 0x5B50, 0x5B51, 0x5B53, 0x5BF8, 
+  0x5C0F, 0x5C22, 0x5C38, 0x5C71, 0x5DDD, 0x5DE5, 0x5DF1, 0x5DF2, 
+  0x5DF3, 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, 0x624D,      0, 
+at 0xA0
+       0, 0x4E11, 0x4E10, 0x4E0D, 0x4E2D, 0x4E30, 0x4E39, 0x4E4B, 
+  0x5C39, 0x4E88, 0x4E91, 0x4E95, 0x4E92, 0x4E94, 0x4EA2, 0x4EC1, 
+  0x4EC0, 0x4EC3, 0x4EC6, 0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB, 0x4EC4, 
+  0x5143, 0x5141, 0x5167, 0x516D, 0x516E, 0x516C, 0x5197, 0x51F6, 
+  0x5206, 0x5207, 0x5208, 0x52FB, 0x52FE, 0x52FF, 0x5316, 0x5339, 
+  0x5348, 0x5347, 0x5345, 0x535E, 0x5384, 0x53CB, 0x53CA, 0x53CD, 
+  0x58EC, 0x5929, 0x592B, 0x592A, 0x592D, 0x5B54, 0x5C11, 0x5C24, 
+  0x5C3A, 0x5C6F, 0x5DF4, 0x5E7B, 0x5EFF, 0x5F14, 0x5F15, 0x5FC3, 
+  0x6208, 0x6236, 0x624B, 0x624E, 0x652F, 0x6587, 0x6597, 0x65A4, 
+  0x65B9, 0x65E5, 0x66F0, 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79, 
+  0x6BCB, 0x6BD4, 0x6BDB, 0x6C0F, 0x6C34, 0x706B, 0x722A, 0x7236, 
+  0x723B, 0x7247, 0x7259, 0x725B, 0x72AC, 0x738B, 0x4E19,      0, 
+plane a5
+at 0x40
+  0x4E16, 0x4E15, 0x4E14, 0x4E18, 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E, 
+  0x4EE5, 0x4ED8, 0x4ED4, 0x4ED5, 0x4ED6, 0x4ED7, 0x4EE3, 0x4EE4, 
+  0x4ED9, 0x4EDE, 0x5145, 0x5144, 0x5189, 0x518A, 0x51AC, 0x51F9, 
+  0x51FA, 0x51F8, 0x520A, 0x52A0, 0x529F, 0x5305, 0x5306, 0x5317, 
+  0x531D, 0x4EDF, 0x534A, 0x5349, 0x5361, 0x5360, 0x536F, 0x536E, 
+  0x53BB, 0x53EF, 0x53E4, 0x53F3, 0x53EC, 0x53EE, 0x53E9, 0x53E8, 
+  0x53FC, 0x53F8, 0x53F5, 0x53EB, 0x53E6, 0x53EA, 0x53F2, 0x53F1, 
+  0x53F0, 0x53E5, 0x53ED, 0x53FB, 0x56DB, 0x56DA, 0x5916,      0, 
+at 0xA0
+       0, 0x592E, 0x5931, 0x5974, 0x5976, 0x5B55, 0x5B83, 0x5C3C, 
+  0x5DE8, 0x5DE7, 0x5DE6, 0x5E02, 0x5E03, 0x5E73, 0x5E7C, 0x5F01, 
+  0x5F18, 0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254, 0x6252, 0x6251, 
+  0x65A5, 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B, 0x672D, 0x6B63, 
+  0x6BCD, 0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40, 0x6C3E, 0x72AF, 
+  0x7384, 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, 0x7528, 0x7529, 
+  0x7530, 0x7531, 0x7532, 0x7533, 0x758B, 0x767D, 0x76AE, 0x76BF, 
+  0x76EE, 0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79BE, 0x7A74, 0x7ACB, 
+  0x4E1E, 0x4E1F, 0x4E52, 0x4E53, 0x4E69, 0x4E99, 0x4EA4, 0x4EA6, 
+  0x4EA5, 0x4EFF, 0x4F09, 0x4F19, 0x4F0A, 0x4F15, 0x4F0D, 0x4F10, 
+  0x4F11, 0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0, 0x4EF3, 0x4EFD, 
+  0x4F01, 0x4F0B, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,      0, 
+plane a6
+at 0x40
+  0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, 0x5212, 0x520E, 0x5216, 
+  0x52A3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540F, 
+  0x540C, 0x540A, 0x5410, 0x5401, 0x540B, 0x5404, 0x5411, 0x540D, 
+  0x5408, 0x5403, 0x540E, 0x5406, 0x5412, 0x56E0, 0x56DE, 0x56DD, 
+  0x5733, 0x5730, 0x5728, 0x572D, 0x572C, 0x572F, 0x5729, 0x5919, 
+  0x591A, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597D, 0x5979, 
+  0x5982, 0x5981, 0x5B57, 0x5B58, 0x5B87, 0x5B88, 0x5B85, 0x5B89, 
+  0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74,      0, 
+at 0xA0
+       0, 0x5F0F, 0x5F1B, 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D, 
+  0x6210, 0x6263, 0x625B, 0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC, 
+  0x65ED, 0x66F2, 0x66F3, 0x6709, 0x673D, 0x6734, 0x6731, 0x6735, 
+  0x6B21, 0x6B64, 0x6B7B, 0x6C16, 0x6C5D, 0x6C57, 0x6C59, 0x6C5F, 
+  0x6C60, 0x6C50, 0x6C55, 0x6C61, 0x6C5B, 0x6C4D, 0x6C4E, 0x7070, 
+  0x725F, 0x725D, 0x767E, 0x7AF9, 0x7C73, 0x7CF8, 0x7F36, 0x7F8A, 
+  0x7FBD, 0x8001, 0x8003, 0x800C, 0x8012, 0x8033, 0x807F, 0x8089, 
+  0x808B, 0x808C, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, 
+  0x821F, 0x826E, 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, 0x8863, 
+  0x897F, 0x9621, 0x4E32, 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57, 
+  0x4F5E, 0x4F34, 0x4F5B, 0x4F55, 0x4F30, 0x4F50, 0x4F51, 0x4F3D, 
+  0x4F3A, 0x4F38, 0x4F43, 0x4F54, 0x4F3C, 0x4F46, 0x4F63,      0, 
+plane a7
+at 0x40
+  0x4F5C, 0x4F60, 0x4F2F, 0x4F4E, 0x4F36, 0x4F59, 0x4F5D, 0x4F48, 
+  0x4F5A, 0x514C, 0x514B, 0x514D, 0x5175, 0x51B6, 0x51B7, 0x5225, 
+  0x5224, 0x5229, 0x522A, 0x5228, 0x52AB, 0x52A9, 0x52AA, 0x52AC, 
+  0x5323, 0x5373, 0x5375, 0x541D, 0x542D, 0x541E, 0x543E, 0x5426, 
+  0x544E, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541B, 
+  0x5429, 0x544A, 0x5439, 0x543B, 0x5438, 0x542E, 0x5435, 0x5436, 
+  0x5420, 0x543C, 0x5440, 0x5431, 0x542B, 0x541F, 0x542C, 0x56EA, 
+  0x56F0, 0x56E4, 0x56EB, 0x574A, 0x5751, 0x5740, 0x574D,      0, 
+at 0xA0
+       0, 0x5747, 0x574E, 0x573E, 0x5750, 0x574F, 0x573B, 0x58EF, 
+  0x593E, 0x599D, 0x5992, 0x59A8, 0x599E, 0x59A3, 0x5999, 0x5996, 
+  0x598D, 0x59A4, 0x5993, 0x598A, 0x59A5, 0x5B5D, 0x5B5C, 0x5B5A, 
+  0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, 0x5C2C, 0x5C40, 0x5C41, 0x5C3F, 
+  0x5C3E, 0x5C90, 0x5C91, 0x5C94, 0x5C8C, 0x5DEB, 0x5E0C, 0x5E8F, 
+  0x5E87, 0x5E8A, 0x5EF7, 0x5F04, 0x5F1F, 0x5F64, 0x5F62, 0x5F77, 
+  0x5F79, 0x5FD8, 0x5FCC, 0x5FD7, 0x5FCD, 0x5FF1, 0x5FEB, 0x5FF8, 
+  0x5FEA, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 
+  0x6289, 0x626D, 0x628A, 0x627C, 0x627E, 0x6279, 0x6273, 0x6292, 
+  0x626F, 0x6298, 0x626E, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 
+  0x653B, 0x6538, 0x65F1, 0x66F4, 0x675F, 0x674E, 0x674F, 0x6750, 
+  0x6751, 0x675C, 0x6756, 0x675E, 0x6749, 0x6746, 0x6760,      0, 
+plane a8
+at 0x40
+  0x6753, 0x6757, 0x6B65, 0x6BCF, 0x6C42, 0x6C5E, 0x6C99, 0x6C81, 
+  0x6C88, 0x6C89, 0x6C85, 0x6C9B, 0x6C6A, 0x6C7A, 0x6C90, 0x6C70, 
+  0x6C8C, 0x6C68, 0x6C96, 0x6C92, 0x6C7D, 0x6C83, 0x6C72, 0x6C7E, 
+  0x6C74, 0x6C86, 0x6C76, 0x6C8D, 0x6C94, 0x6C98, 0x6C82, 0x7076, 
+  0x707C, 0x707D, 0x7078, 0x7262, 0x7261, 0x7260, 0x72C4, 0x72C2, 
+  0x7396, 0x752C, 0x752B, 0x7537, 0x7538, 0x7682, 0x76EF, 0x77E3, 
+  0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, 0x7F55, 0x8096, 0x8093, 
+  0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, 0x826F, 0x8292,      0, 
+at 0xA0
+       0, 0x828B, 0x828D, 0x898B, 0x89D2, 0x8A00, 0x8C37, 0x8C46, 
+  0x8C55, 0x8C9D, 0x8D64, 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA, 0x8F9B, 
+  0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, 0x8FC4, 0x5DE1, 0x9091, 0x90A2, 
+  0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, 0x91CC, 0x9632, 0x962E, 
+  0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73, 0x4E8B, 0x4E9B, 
+  0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73, 0x4F7F, 
+  0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75, 0x4F88, 
+  0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A, 0x5154, 
+  0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD, 0x51FD, 
+  0x523B, 0x5238, 0x5237, 0x523A, 0x5230, 0x522E, 0x5236, 0x5241, 
+  0x52BE, 0x52BB, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 
+  0x5378, 0x5379, 0x53D6, 0x53D4, 0x53D7, 0x5473, 0x5475,      0, 
+plane a9
+at 0x40
+  0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, 0x5484, 0x5492, 
+  0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, 0x5462, 
+  0x5468, 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A, 
+  0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, 0x5949, 0x5947, 
+  0x5948, 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE, 
+  0x59D1, 0x59C6, 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF, 
+  0x59B3, 0x59D2, 0x59C5, 0x5B5F, 0x5B64, 0x5B63, 0x5B97, 0x5B9A, 
+  0x5B98, 0x5B9C, 0x5B99, 0x5B9B, 0x5C1A, 0x5C48, 0x5C45,      0, 
+at 0xA0
+       0, 0x5C46, 0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, 0x5CB1, 
+  0x5CB3, 0x5E18, 0x5E1A, 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78, 
+  0x5E9A, 0x5E97, 0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27, 
+  0x5F29, 0x5F80, 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD, 
+  0x5FF5, 0x5FFF, 0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A, 
+  0x6015, 0x6021, 0x6027, 0x6029, 0x602B, 0x601B, 0x6216, 0x6215, 
+  0x623F, 0x623E, 0x6240, 0x627F, 0x62C9, 0x62CC, 0x62C4, 0x62BF, 
+  0x62C2, 0x62B9, 0x62D2, 0x62DB, 0x62AB, 0x62D3, 0x62D4, 0x62CB, 
+  0x62C8, 0x62A8, 0x62BD, 0x62BC, 0x62D0, 0x62D9, 0x62C7, 0x62CD, 
+  0x62B5, 0x62DA, 0x62B1, 0x62D8, 0x62D6, 0x62D7, 0x62C6, 0x62AC, 
+  0x62CE, 0x653E, 0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C, 
+  0x6606, 0x6602, 0x660E, 0x6600, 0x660F, 0x6615, 0x660A,      0, 
+plane aa
+at 0x40
+  0x6607, 0x670D, 0x670B, 0x676D, 0x678B, 0x6795, 0x6771, 0x679C, 
+  0x6773, 0x6777, 0x6787, 0x679D, 0x6797, 0x676F, 0x6770, 0x677F, 
+  0x6789, 0x677E, 0x6790, 0x6775, 0x679A, 0x6793, 0x677C, 0x676A, 
+  0x6772, 0x6B23, 0x6B66, 0x6B67, 0x6B7F, 0x6C13, 0x6C1B, 0x6CE3, 
+  0x6CE8, 0x6CF3, 0x6CB1, 0x6CCC, 0x6CE5, 0x6CB3, 0x6CBD, 0x6CBE, 
+  0x6CBC, 0x6CE2, 0x6CAB, 0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4, 0x6CB9, 
+  0x6CC1, 0x6CAE, 0x6CD7, 0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1, 
+  0x6CDB, 0x6CCA, 0x6CAC, 0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0,      0, 
+at 0xA0
+       0, 0x7095, 0x708E, 0x7092, 0x708A, 0x7099, 0x722C, 0x722D, 
+  0x7238, 0x7248, 0x7267, 0x7269, 0x72C0, 0x72CE, 0x72D9, 0x72D7, 
+  0x72D0, 0x73A9, 0x73A8, 0x739F, 0x73AB, 0x73A5, 0x753D, 0x759D, 
+  0x7599, 0x759A, 0x7684, 0x76C2, 0x76F2, 0x76F4, 0x77E5, 0x77FD, 
+  0x793E, 0x7940, 0x7941, 0x79C9, 0x79C8, 0x7A7A, 0x7A79, 0x7AFA, 
+  0x7CFE, 0x7F54, 0x7F8C, 0x7F8B, 0x8005, 0x80BA, 0x80A5, 0x80A2, 
+  0x80B1, 0x80A1, 0x80AB, 0x80A9, 0x80B4, 0x80AA, 0x80AF, 0x81E5, 
+  0x81FE, 0x820D, 0x82B3, 0x829D, 0x8299, 0x82AD, 0x82BD, 0x829F, 
+  0x82B9, 0x82B1, 0x82AC, 0x82A5, 0x82AF, 0x82B8, 0x82A3, 0x82B0, 
+  0x82BE, 0x82B7, 0x864E, 0x8671, 0x521D, 0x8868, 0x8ECB, 0x8FCE, 
+  0x8FD4, 0x8FD1, 0x90B5, 0x90B8, 0x90B1, 0x90B6, 0x91C7, 0x91D1, 
+  0x9577, 0x9580, 0x961C, 0x9640, 0x963F, 0x963B, 0x9644,      0, 
+plane ab
+at 0x40
+  0x9642, 0x96B9, 0x96E8, 0x9752, 0x975E, 0x4E9F, 0x4EAD, 0x4EAE, 
+  0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, 0x4FE0, 0x4FD1, 0x4FCF, 0x4FDD, 
+  0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, 0x4FCA, 0x4FD7, 0x4FAE, 0x4FD0, 
+  0x4FC4, 0x4FC2, 0x4FDA, 0x4FCE, 0x4FDE, 0x4FB7, 0x5157, 0x5192, 
+  0x5191, 0x51A0, 0x524E, 0x5243, 0x524A, 0x524D, 0x524C, 0x524B, 
+  0x5247, 0x52C7, 0x52C9, 0x52C3, 0x52C1, 0x530D, 0x5357, 0x537B, 
+  0x539A, 0x53DB, 0x54AC, 0x54C0, 0x54A8, 0x54CE, 0x54C9, 0x54B8, 
+  0x54A6, 0x54B3, 0x54C7, 0x54C2, 0x54BD, 0x54AA, 0x54C1,      0, 
+at 0xA0
+       0, 0x54C4, 0x54C8, 0x54AF, 0x54AB, 0x54B1, 0x54BB, 0x54A9, 
+  0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B, 0x57A0, 0x57A3, 0x57A2, 
+  0x57CE, 0x57AE, 0x5793, 0x5955, 0x5951, 0x594F, 0x594E, 0x5950, 
+  0x59DC, 0x59D8, 0x59FF, 0x59E3, 0x59E8, 0x5A03, 0x59E5, 0x59EA, 
+  0x59DA, 0x59E6, 0x5A01, 0x59FB, 0x5B69, 0x5BA3, 0x5BA6, 0x5BA4, 
+  0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, 0x5C4F, 0x5C4D, 0x5C4B, 0x5CD9, 
+  0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F, 0x5E7D, 0x5EA0, 0x5EA6, 
+  0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88, 0x5F85, 0x5F8A, 0x5F8B, 
+  0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D, 0x6020, 0x6025, 0x600E, 
+  0x6028, 0x604D, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606C, 
+  0x606B, 0x606A, 0x6064, 0x6241, 0x62DC, 0x6316, 0x6309, 0x62FC, 
+  0x62ED, 0x6301, 0x62EE, 0x62FD, 0x6307, 0x62F1, 0x62F7,      0, 
+plane ac
+at 0x40
+  0x62EF, 0x62EC, 0x62FE, 0x62F4, 0x6311, 0x6302, 0x653F, 0x6545, 
+  0x65AB, 0x65BD, 0x65E2, 0x6625, 0x662D, 0x6620, 0x6627, 0x662F, 
+  0x661F, 0x6628, 0x6631, 0x6624, 0x66F7, 0x67FF, 0x67D3, 0x67F1, 
+  0x67D4, 0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5, 0x67E9, 0x67EF, 
+  0x67C4, 0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8, 0x67CF, 0x67DE, 
+  0x67F3, 0x67B0, 0x67D9, 0x67E2, 0x67DD, 0x67D2, 0x6B6A, 0x6B83, 
+  0x6B86, 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9, 0x6D0B, 0x6D32, 
+  0x6D2A, 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17,      0, 
+at 0xA0
+       0, 0x6D3B, 0x6D3D, 0x6D3E, 0x6D36, 0x6D1B, 0x6CF5, 0x6D39, 
+  0x6D27, 0x6D38, 0x6D29, 0x6D2E, 0x6D35, 0x6D0E, 0x6D2B, 0x70AB, 
+  0x70BA, 0x70B3, 0x70AC, 0x70AF, 0x70AD, 0x70B8, 0x70AE, 0x70A4, 
+  0x7230, 0x7272, 0x726F, 0x7274, 0x72E9, 0x72E0, 0x72E1, 0x73B7, 
+  0x73CA, 0x73BB, 0x73B2, 0x73CD, 0x73C0, 0x73B3, 0x751A, 0x752D, 
+  0x754F, 0x754C, 0x754E, 0x754B, 0x75AB, 0x75A4, 0x75A5, 0x75A2, 
+  0x75A3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76C8, 0x76C6, 0x76C3, 
+  0x76C5, 0x7701, 0x76F9, 0x76F8, 0x7709, 0x770B, 0x76FE, 0x76FC, 
+  0x7707, 0x77DC, 0x7802, 0x7814, 0x780C, 0x780D, 0x7946, 0x7949, 
+  0x7948, 0x7947, 0x79B9, 0x79BA, 0x79D1, 0x79D2, 0x79CB, 0x7A7F, 
+  0x7A81, 0x7AFF, 0x7AFD, 0x7C7D, 0x7D02, 0x7D05, 0x7D00, 0x7D09, 
+  0x7D07, 0x7D04, 0x7D06, 0x7F38, 0x7F8E, 0x7FBF, 0x8004,      0, 
+plane ad
+at 0x40
+  0x8010, 0x800D, 0x8011, 0x8036, 0x80D6, 0x80E5, 0x80DA, 0x80C3, 
+  0x80C4, 0x80CC, 0x80E1, 0x80DB, 0x80CE, 0x80DE, 0x80E4, 0x80DD, 
+  0x81F4, 0x8222, 0x82E7, 0x8303, 0x8305, 0x82E3, 0x82DB, 0x82E6, 
+  0x8304, 0x82E5, 0x8302, 0x8309, 0x82D2, 0x82D7, 0x82F1, 0x8301, 
+  0x82DC, 0x82D4, 0x82D1, 0x82DE, 0x82D3, 0x82DF, 0x82EF, 0x8306, 
+  0x8650, 0x8679, 0x867B, 0x867A, 0x884D, 0x886B, 0x8981, 0x89D4, 
+  0x8A08, 0x8A02, 0x8A03, 0x8C9E, 0x8CA0, 0x8D74, 0x8D73, 0x8DB4, 
+  0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, 0x8FE2, 0x8FEA, 0x8FE5,      0, 
+at 0xA0
+       0, 0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA, 0x90CE, 0x90C1, 
+  0x90C3, 0x914B, 0x914A, 0x91CD, 0x9582, 0x9650, 0x964B, 0x964C, 
+  0x964D, 0x9762, 0x9769, 0x97CB, 0x97ED, 0x97F3, 0x9801, 0x98A8, 
+  0x98DB, 0x98DF, 0x9996, 0x9999, 0x4E58, 0x4EB3, 0x500C, 0x500D, 
+  0x5023, 0x4FEF, 0x5026, 0x5025, 0x4FF8, 0x5029, 0x5016, 0x5006, 
+  0x503C, 0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA, 0x5000, 0x5014, 
+  0x5028, 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, 0x4FF3, 0x4FEE, 
+  0x502D, 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, 0x51A4, 0x51A5, 
+  0x51A2, 0x51CD, 0x51CC, 0x51C6, 0x51CB, 0x5256, 0x525C, 0x5254, 
+  0x525B, 0x525D, 0x532A, 0x537F, 0x539F, 0x539D, 0x53DF, 0x54E8, 
+  0x5510, 0x5501, 0x5537, 0x54FC, 0x54E5, 0x54F2, 0x5506, 0x54FA, 
+  0x5514, 0x54E9, 0x54ED, 0x54E1, 0x5509, 0x54EE, 0x54EA,      0, 
+plane ae
+at 0x40
+  0x54E6, 0x5527, 0x5507, 0x54FD, 0x550F, 0x5703, 0x5704, 0x57C2, 
+  0x57D4, 0x57CB, 0x57C3, 0x5809, 0x590F, 0x5957, 0x5958, 0x595A, 
+  0x5A11, 0x5A18, 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC, 0x5A20, 
+  0x5A23, 0x5A29, 0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, 0x5BB0, 
+  0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE, 0x5BB5, 0x5BB9, 0x5BB8, 0x5C04, 
+  0x5C51, 0x5C55, 0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA, 0x5CE8, 
+  0x5CF0, 0x5CF6, 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B, 0x5EAB, 
+  0x5EAD, 0x5EA7, 0x5F31, 0x5F92, 0x5F91, 0x5F90, 0x6059,      0, 
+at 0xA0
+       0, 0x6063, 0x6065, 0x6050, 0x6055, 0x606D, 0x6069, 0x606F, 
+  0x6084, 0x609F, 0x609A, 0x608D, 0x6094, 0x608C, 0x6085, 0x6096, 
+  0x6247, 0x62F3, 0x6308, 0x62FF, 0x634E, 0x633E, 0x632F, 0x6355, 
+  0x6342, 0x6346, 0x634F, 0x6349, 0x633A, 0x6350, 0x633D, 0x632A, 
+  0x632B, 0x6328, 0x634D, 0x634C, 0x6548, 0x6549, 0x6599, 0x65C1, 
+  0x65C5, 0x6642, 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, 0x6645, 
+  0x6641, 0x66F8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 
+  0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68B3, 0x6817, 
+  0x684C, 0x6851, 0x683D, 0x67F4, 0x6850, 0x6840, 0x683C, 0x6843, 
+  0x682A, 0x6845, 0x6813, 0x6818, 0x6841, 0x6B8A, 0x6B89, 0x6BB7, 
+  0x6C23, 0x6C27, 0x6C28, 0x6C26, 0x6C24, 0x6CF0, 0x6D6A, 0x6D95, 
+  0x6D88, 0x6D87, 0x6D66, 0x6D78, 0x6D77, 0x6D59, 0x6D93,      0, 
+plane af
+at 0x40
+  0x6D6C, 0x6D89, 0x6D6E, 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A, 
+  0x6D79, 0x6D85, 0x6D65, 0x6D94, 0x70CA, 0x70D8, 0x70E4, 0x70D9, 
+  0x70C8, 0x70CF, 0x7239, 0x7279, 0x72FC, 0x72F9, 0x72FD, 0x72F8, 
+  0x72F7, 0x7386, 0x73ED, 0x7409, 0x73EE, 0x73E0, 0x73EA, 0x73DE, 
+  0x7554, 0x755D, 0x755C, 0x755A, 0x7559, 0x75BE, 0x75C5, 0x75C7, 
+  0x75B2, 0x75B3, 0x75BD, 0x75BC, 0x75B9, 0x75C2, 0x75B8, 0x768B, 
+  0x76B0, 0x76CA, 0x76CD, 0x76CE, 0x7729, 0x771F, 0x7720, 0x7728, 
+  0x77E9, 0x7830, 0x7827, 0x7838, 0x781D, 0x7834, 0x7837,      0, 
+at 0xA0
+       0, 0x7825, 0x782D, 0x7820, 0x781F, 0x7832, 0x7955, 0x7950, 
+  0x7960, 0x795F, 0x7956, 0x795E, 0x795D, 0x7957, 0x795A, 0x79E4, 
+  0x79E3, 0x79E7, 0x79DF, 0x79E6, 0x79E9, 0x79D8, 0x7A84, 0x7A88, 
+  0x7AD9, 0x7B06, 0x7B11, 0x7C89, 0x7D21, 0x7D17, 0x7D0B, 0x7D0A, 
+  0x7D20, 0x7D22, 0x7D14, 0x7D10, 0x7D15, 0x7D1A, 0x7D1C, 0x7D0D, 
+  0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, 0x7F94, 0x7FC5, 0x7FC1, 0x8006, 
+  0x8018, 0x8015, 0x8019, 0x8017, 0x803D, 0x803F, 0x80F1, 0x8102, 
+  0x80F0, 0x8105, 0x80ED, 0x80F4, 0x8106, 0x80F8, 0x80F3, 0x8108, 
+  0x80FD, 0x810A, 0x80FC, 0x80EF, 0x81ED, 0x81EC, 0x8200, 0x8210, 
+  0x822A, 0x822B, 0x8228, 0x822C, 0x82BB, 0x832B, 0x8352, 0x8354, 
+  0x834A, 0x8338, 0x8350, 0x8349, 0x8335, 0x8334, 0x834F, 0x8332, 
+  0x8339, 0x8336, 0x8317, 0x8340, 0x8331, 0x8328, 0x8343,      0, 
+plane b0
+at 0x40
+  0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4, 0x86A9, 0x868C, 0x86A3, 
+  0x869C, 0x8870, 0x8877, 0x8881, 0x8882, 0x887D, 0x8879, 0x8A18, 
+  0x8A10, 0x8A0E, 0x8A0C, 0x8A15, 0x8A0A, 0x8A17, 0x8A13, 0x8A16, 
+  0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79, 0x8CA1, 0x8CA2, 0x8D77, 
+  0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1, 0x9001, 0x9006, 0x8FF7, 
+  0x9000, 0x8FFA, 0x8FF4, 0x9003, 0x8FFD, 0x9005, 0x8FF8, 0x9095, 
+  0x90E1, 0x90DD, 0x90E2, 0x9152, 0x914D, 0x914C, 0x91D8, 0x91DD, 
+  0x91D7, 0x91DC, 0x91D9, 0x9583, 0x9662, 0x9663, 0x9661,      0, 
+at 0xA0
+       0, 0x965B, 0x965D, 0x9664, 0x9658, 0x965E, 0x96BB, 0x98E2, 
+  0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, 0x9B3C, 0x4E7E, 0x507A, 
+  0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049, 0x5065, 
+  0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F, 0x500F, 
+  0x506F, 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F, 0x52D2, 
+  0x52D9, 0x52D8, 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F, 0x5340, 
+  0x533E, 0x53C3, 0x66FC, 0x5546, 0x556A, 0x5566, 0x5544, 0x555E, 
+  0x5561, 0x5543, 0x554A, 0x5531, 0x5556, 0x554F, 0x5555, 0x552F, 
+  0x5564, 0x5538, 0x552E, 0x555C, 0x552C, 0x5563, 0x5533, 0x5541, 
+  0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805, 0x580A, 0x5806, 
+  0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9, 0x5920, 
+  0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40,      0, 
+plane b1
+at 0x40
+  0x5A3C, 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5, 
+  0x5BC4, 0x5BC2, 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60, 
+  0x5C5C, 0x5C5D, 0x5D07, 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22, 
+  0x5D11, 0x5D29, 0x5D14, 0x5D19, 0x5D24, 0x5D27, 0x5D17, 0x5DE2, 
+  0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7, 0x5EB8, 0x5EB6, 0x5EB5, 
+  0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, 0x5F6B, 0x5F97, 
+  0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F, 0x60A3, 
+  0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD,      0, 
+at 0xA0
+       0, 0x60C5, 0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, 
+  0x60C6, 0x60DF, 0x60B8, 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248, 
+  0x63A0, 0x63A7, 0x6372, 0x6396, 0x63A2, 0x63A5, 0x6377, 0x6367, 
+  0x6398, 0x63AA, 0x6371, 0x63A9, 0x6389, 0x6383, 0x639B, 0x636B, 
+  0x63A8, 0x6384, 0x6388, 0x6399, 0x63A1, 0x63AC, 0x6392, 0x638F, 
+  0x6380, 0x637B, 0x6369, 0x6368, 0x637A, 0x655D, 0x6556, 0x6551, 
+  0x6559, 0x6557, 0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C, 
+  0x659B, 0x65AC, 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, 
+  0x6664, 0x6668, 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, 
+  0x68AF, 0x68A2, 0x6893, 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7, 
+  0x6897, 0x68B0, 0x6883, 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894, 
+  0x689D, 0x68A8, 0x689F, 0x68A1, 0x6882, 0x6B32, 0x6BBA,      0, 
+plane b2
+at 0x40
+  0x6BEB, 0x6BEC, 0x6C2B, 0x6D8E, 0x6DBC, 0x6DF3, 0x6DD9, 0x6DB2, 
+  0x6DE1, 0x6DCC, 0x6DE4, 0x6DFB, 0x6DFA, 0x6E05, 0x6DC7, 0x6DCB, 
+  0x6DAF, 0x6DD1, 0x6DAE, 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5, 
+  0x6DC5, 0x6DD2, 0x6E1A, 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, 
+  0x6DF1, 0x6DEE, 0x6DE8, 0x6DC6, 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, 
+  0x6DE6, 0x70F9, 0x7109, 0x710A, 0x70FD, 0x70EF, 0x723D, 0x727D, 
+  0x7281, 0x731C, 0x731B, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 
+  0x740A, 0x7403, 0x7406, 0x73FE, 0x740D, 0x74E0, 0x74F6,      0, 
+at 0xA0
+       0, 0x74F7, 0x751C, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 
+  0x758F, 0x75D4, 0x75D5, 0x75B5, 0x75CA, 0x75CD, 0x768E, 0x76D4, 
+  0x76D2, 0x76DB, 0x7737, 0x773E, 0x773C, 0x7736, 0x7738, 0x773A, 
+  0x786B, 0x7843, 0x784E, 0x7965, 0x7968, 0x796D, 0x79FB, 0x7A92, 
+  0x7A95, 0x7B20, 0x7B28, 0x7B1B, 0x7B2C, 0x7B26, 0x7B19, 0x7B1E, 
+  0x7B2E, 0x7C92, 0x7C97, 0x7C95, 0x7D46, 0x7D43, 0x7D71, 0x7D2E, 
+  0x7D39, 0x7D3C, 0x7D40, 0x7D30, 0x7D33, 0x7D44, 0x7D2F, 0x7D42, 
+  0x7D32, 0x7D31, 0x7F3D, 0x7F9E, 0x7F9A, 0x7FCC, 0x7FCE, 0x7FD2, 
+  0x801C, 0x804A, 0x8046, 0x812F, 0x8116, 0x8123, 0x812B, 0x8129, 
+  0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838E, 
+  0x839E, 0x8398, 0x8378, 0x83A2, 0x8396, 0x83BD, 0x83AB, 0x8392, 
+  0x838A, 0x8393, 0x8389, 0x83A0, 0x8377, 0x837B, 0x837C,      0, 
+plane b3
+at 0x40
+  0x8386, 0x83A7, 0x8655, 0x5F6A, 0x86C7, 0x86C0, 0x86B6, 0x86C4, 
+  0x86B5, 0x86C6, 0x86CB, 0x86B1, 0x86AF, 0x86C9, 0x8853, 0x889E, 
+  0x8888, 0x88AB, 0x8892, 0x8896, 0x888D, 0x888B, 0x8993, 0x898F, 
+  0x8A2A, 0x8A1D, 0x8A23, 0x8A25, 0x8A31, 0x8A2D, 0x8A1F, 0x8A1B, 
+  0x8A22, 0x8C49, 0x8C5A, 0x8CA9, 0x8CAC, 0x8CAB, 0x8CA8, 0x8CAA, 
+  0x8CA7, 0x8D67, 0x8D66, 0x8DBE, 0x8DBA, 0x8EDB, 0x8EDF, 0x9019, 
+  0x900D, 0x901A, 0x9017, 0x9023, 0x901F, 0x901D, 0x9010, 0x9015, 
+  0x901E, 0x9020, 0x900F, 0x9022, 0x9016, 0x901B, 0x9014,      0, 
+at 0xA0
+       0, 0x90E8, 0x90ED, 0x90FD, 0x9157, 0x91CE, 0x91F5, 0x91E6, 
+  0x91E3, 0x91E7, 0x91ED, 0x91E9, 0x9589, 0x966A, 0x9675, 0x9673, 
+  0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966C, 0x96C0, 0x96EA, 
+  0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803, 0x9B5A, 0x9CE5, 0x9E75, 
+  0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D, 0x5085, 0x5099, 0x5091, 
+  0x5080, 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, 0x5272, 0x5274, 
+  0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, 0x53A5, 0x557B, 
+  0x5580, 0x55A7, 0x557C, 0x558A, 0x559D, 0x5598, 0x5582, 0x559C, 
+  0x55AA, 0x5594, 0x5587, 0x558B, 0x5583, 0x55B3, 0x55AE, 0x559F, 
+  0x553E, 0x55B2, 0x559A, 0x55BB, 0x55AC, 0x55B1, 0x557E, 0x5589, 
+  0x55AB, 0x5599, 0x570D, 0x582F, 0x582A, 0x5834, 0x5824, 0x5830, 
+  0x5831, 0x5821, 0x581D, 0x5820, 0x58F9, 0x58FA, 0x5960,      0, 
+plane b4
+at 0x40
+  0x5A77, 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73, 0x5B71, 
+  0x5BD2, 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, 0x5D4C, 
+  0x5D50, 0x5D34, 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, 0x5E40, 0x5E43, 
+  0x5E7E, 0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C, 0x5F6D, 0x5FA9, 
+  0x5FAA, 0x5FA8, 0x60D1, 0x60E1, 0x60B2, 0x60B6, 0x60E0, 0x611C, 
+  0x6123, 0x60FA, 0x6115, 0x60F0, 0x60FB, 0x60F4, 0x6168, 0x60F1, 
+  0x610E, 0x60F6, 0x6109, 0x6100, 0x6112, 0x621F, 0x6249, 0x63A3, 
+  0x638C, 0x63CF, 0x63C0, 0x63E9, 0x63C9, 0x63C6, 0x63CD,      0, 
+at 0xA0
+       0, 0x63D2, 0x63E3, 0x63D0, 0x63E1, 0x63D6, 0x63ED, 0x63EE, 
+  0x6376, 0x63F4, 0x63EA, 0x63DB, 0x6452, 0x63DA, 0x63F9, 0x655E, 
+  0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65AF, 0x666E, 0x6670, 
+  0x6674, 0x6676, 0x666F, 0x6691, 0x667A, 0x667E, 0x6677, 0x66FE, 
+  0x66FF, 0x671F, 0x671D, 0x68FA, 0x68D5, 0x68E0, 0x68D8, 0x68D7, 
+  0x6905, 0x68DF, 0x68F5, 0x68EE, 0x68E7, 0x68F9, 0x68D2, 0x68F2, 
+  0x68E3, 0x68CB, 0x68CD, 0x690D, 0x6912, 0x690E, 0x68C9, 0x68DA, 
+  0x696E, 0x68FB, 0x6B3E, 0x6B3A, 0x6B3D, 0x6B98, 0x6B96, 0x6BBC, 
+  0x6BEF, 0x6C2E, 0x6C2F, 0x6C2C, 0x6E2F, 0x6E38, 0x6E54, 0x6E21, 
+  0x6E32, 0x6E67, 0x6E4A, 0x6E20, 0x6E25, 0x6E23, 0x6E1B, 0x6E5B, 
+  0x6E58, 0x6E24, 0x6E56, 0x6E6E, 0x6E2D, 0x6E26, 0x6E6F, 0x6E34, 
+  0x6E4D, 0x6E3A, 0x6E2C, 0x6E43, 0x6E1D, 0x6E3E, 0x6ECB,      0, 
+plane b5
+at 0x40
+  0x6E89, 0x6E19, 0x6E4E, 0x6E63, 0x6E44, 0x6E72, 0x6E69, 0x6E5F, 
+  0x7119, 0x711A, 0x7126, 0x7130, 0x7121, 0x7136, 0x716E, 0x711C, 
+  0x724C, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743A, 
+  0x742A, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742F, 
+  0x741B, 0x7426, 0x7428, 0x7525, 0x7526, 0x756B, 0x756A, 0x75E2, 
+  0x75DB, 0x75E3, 0x75D9, 0x75D8, 0x75DE, 0x75E0, 0x767B, 0x767C, 
+  0x7696, 0x7693, 0x76B4, 0x76DC, 0x774F, 0x77ED, 0x785D, 0x786C, 
+  0x786F, 0x7A0D, 0x7A08, 0x7A0B, 0x7A05, 0x7A00, 0x7A98,      0, 
+at 0xA0
+       0, 0x7A97, 0x7A96, 0x7AE5, 0x7AE3, 0x7B49, 0x7B56, 0x7B46, 
+  0x7B50, 0x7B52, 0x7B54, 0x7B4D, 0x7B4B, 0x7B4F, 0x7B51, 0x7C9F, 
+  0x7CA5, 0x7D5E, 0x7D50, 0x7D68, 0x7D55, 0x7D2B, 0x7D6E, 0x7D72, 
+  0x7D61, 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584, 0x7FD4, 0x7FD5, 
+  0x800B, 0x8052, 0x8085, 0x8155, 0x8154, 0x814B, 0x8151, 0x814E, 
+  0x8139, 0x8146, 0x813E, 0x814C, 0x8153, 0x8174, 0x8212, 0x821C, 
+  0x83E9, 0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5, 0x840B, 0x83C1, 
+  0x83EF, 0x83F1, 0x83F4, 0x8457, 0x840A, 0x83F0, 0x840C, 0x83CC, 
+  0x83FD, 0x83F2, 0x83CA, 0x8438, 0x840E, 0x8404, 0x83DC, 0x8407, 
+  0x83D4, 0x83DF, 0x865B, 0x86DF, 0x86D9, 0x86ED, 0x86D4, 0x86DB, 
+  0x86E4, 0x86D0, 0x86DE, 0x8857, 0x88C1, 0x88C2, 0x88B1, 0x8983, 
+  0x8996, 0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C, 0x8A41,      0, 
+plane b6
+at 0x40
+  0x8A54, 0x8A5B, 0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, 0x8A56, 
+  0x8C61, 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1, 0x8CBB, 
+  0x8CC0, 0x8CB4, 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, 0x8D85, 
+  0x8D81, 0x8DCE, 0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, 0x8DDB, 
+  0x8DC6, 0x8EFB, 0x8EF8, 0x8EFC, 0x8F9C, 0x902E, 0x9035, 0x9031, 
+  0x9038, 0x9032, 0x9036, 0x9102, 0x90F5, 0x9109, 0x90FE, 0x9163, 
+  0x9165, 0x91CF, 0x9214, 0x9215, 0x9223, 0x9209, 0x921E, 0x920D, 
+  0x9210, 0x9207, 0x9211, 0x9594, 0x958F, 0x958B, 0x9591,      0, 
+at 0xA0
+       0, 0x9593, 0x9592, 0x958E, 0x968A, 0x968E, 0x968B, 0x967D, 
+  0x9685, 0x9686, 0x968D, 0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4, 
+  0x96C6, 0x96C7, 0x96EF, 0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808, 
+  0x98E7, 0x98EA, 0x98EF, 0x98E9, 0x98F2, 0x98ED, 0x99AE, 0x99AD, 
+  0x9EC3, 0x9ECD, 0x9ED1, 0x4E82, 0x50AD, 0x50B5, 0x50B2, 0x50B3, 
+  0x50C5, 0x50BE, 0x50AC, 0x50B7, 0x50BB, 0x50AF, 0x50C7, 0x527F, 
+  0x5277, 0x527D, 0x52DF, 0x52E6, 0x52E4, 0x52E2, 0x52E3, 0x532F, 
+  0x55DF, 0x55E8, 0x55D3, 0x55E6, 0x55CE, 0x55DC, 0x55C7, 0x55D1, 
+  0x55E3, 0x55E4, 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5, 
+  0x55C9, 0x5712, 0x5713, 0x585E, 0x5851, 0x5858, 0x5857, 0x585A, 
+  0x5854, 0x586B, 0x584C, 0x586D, 0x584A, 0x5862, 0x5852, 0x584B, 
+  0x5967, 0x5AC1, 0x5AC9, 0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC,      0, 
+plane b7
+at 0x40
+  0x5AB3, 0x5AC2, 0x5AB2, 0x5D69, 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, 
+  0x5EC8, 0x5F12, 0x5F59, 0x5FAC, 0x5FAE, 0x611A, 0x610F, 0x6148, 
+  0x611F, 0x60F3, 0x611B, 0x60F9, 0x6101, 0x6108, 0x614E, 0x614C, 
+  0x6144, 0x614D, 0x613E, 0x6134, 0x6127, 0x610D, 0x6106, 0x6137, 
+  0x6221, 0x6222, 0x6413, 0x643E, 0x641E, 0x642A, 0x642D, 0x643D, 
+  0x642C, 0x640F, 0x641C, 0x6414, 0x640D, 0x6436, 0x6416, 0x6417, 
+  0x6406, 0x656C, 0x659F, 0x65B0, 0x6697, 0x6689, 0x6687, 0x6688, 
+  0x6696, 0x6684, 0x6698, 0x668D, 0x6703, 0x6994, 0x696D,      0, 
+at 0xA0
+       0, 0x695A, 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 
+  0x694A, 0x6968, 0x696B, 0x695E, 0x6953, 0x6979, 0x6986, 0x695D, 
+  0x6963, 0x695B, 0x6B47, 0x6B72, 0x6BC0, 0x6BBF, 0x6BD3, 0x6BFD, 
+  0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6, 0x6EC2, 0x6E90, 0x6E9D, 0x6EC7, 
+  0x6EC5, 0x6EA5, 0x6E98, 0x6EBC, 0x6EBA, 0x6EAB, 0x6ED1, 0x6E96, 
+  0x6E9C, 0x6EC4, 0x6ED4, 0x6EAA, 0x6EA7, 0x6EB4, 0x714E, 0x7159, 
+  0x7169, 0x7164, 0x7149, 0x7167, 0x715C, 0x716C, 0x7166, 0x714C, 
+  0x7165, 0x715E, 0x7146, 0x7168, 0x7156, 0x723A, 0x7252, 0x7337, 
+  0x7345, 0x733F, 0x733E, 0x746F, 0x745A, 0x7455, 0x745F, 0x745E, 
+  0x7441, 0x743F, 0x7459, 0x745B, 0x745C, 0x7576, 0x7578, 0x7600, 
+  0x75F0, 0x7601, 0x75F2, 0x75F1, 0x75FA, 0x75FF, 0x75F4, 0x75F3, 
+  0x76DE, 0x76DF, 0x775B, 0x776B, 0x7766, 0x775E, 0x7763,      0, 
+plane b8
+at 0x40
+  0x7779, 0x776A, 0x776C, 0x775C, 0x7765, 0x7768, 0x7762, 0x77EE, 
+  0x788E, 0x78B0, 0x7897, 0x7898, 0x788C, 0x7889, 0x787C, 0x7891, 
+  0x7893, 0x787F, 0x797A, 0x797F, 0x7981, 0x842C, 0x79BD, 0x7A1C, 
+  0x7A1A, 0x7A20, 0x7A14, 0x7A1F, 0x7A1E, 0x7A9F, 0x7AA0, 0x7B77, 
+  0x7BC0, 0x7B60, 0x7B6E, 0x7B67, 0x7CB1, 0x7CB3, 0x7CB5, 0x7D93, 
+  0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B, 0x7F6E, 0x7F69, 0x7F6A, 
+  0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056, 0x8058, 0x8086, 0x8084, 
+  0x8171, 0x8170, 0x8178, 0x8165, 0x816E, 0x8173, 0x816B,      0, 
+at 0xA0
+       0, 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 
+  0x843D, 0x8431, 0x8475, 0x8466, 0x846B, 0x8449, 0x846C, 0x845B, 
+  0x843C, 0x8435, 0x8461, 0x8463, 0x8469, 0x846D, 0x8446, 0x865E, 
+  0x865C, 0x865F, 0x86F9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86FE, 
+  0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, 0x8859, 0x88DF, 0x88D4, 
+  0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA, 0x88D5, 0x88D2, 
+  0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69, 0x8A70, 
+  0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D, 0x8A62, 
+  0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62, 0x8C8A, 
+  0x8C89, 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3, 0x8CC2, 
+  0x8CC5, 0x8DE1, 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA, 0x8DEA, 
+  0x8DE4, 0x8DE6, 0x8EB2, 0x8F03, 0x8F09, 0x8EFE, 0x8F0A,      0, 
+plane b9
+at 0x40
+  0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053, 0x9042, 0x9054, 0x903C, 
+  0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, 0x9051, 0x903E, 
+  0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, 0x9237, 
+  0x9257, 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264, 
+  0x9251, 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, 0x923F, 0x925A, 
+  0x9598, 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA, 
+  0x96F7, 0x96FB, 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810, 
+  0x9811, 0x9813, 0x980A, 0x9812, 0x980C, 0x98FC, 0x98F4,      0, 
+at 0xA0
+       0, 0x98FD, 0x98FE, 0x99B3, 0x99B1, 0x99B4, 0x9AE1, 0x9CE9, 
+  0x9E82, 0x9F0E, 0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5, 0x50D6, 
+  0x50ED, 0x50DA, 0x50D5, 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9, 
+  0x5162, 0x51F3, 0x5283, 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600, 
+  0x561B, 0x5617, 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E, 
+  0x55F7, 0x5616, 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716, 
+  0x5875, 0x587E, 0x5883, 0x5893, 0x588A, 0x5879, 0x5885, 0x587D, 
+  0x58FD, 0x5925, 0x5922, 0x5924, 0x596A, 0x5969, 0x5AE1, 0x5AE6, 
+  0x5AE9, 0x5AD7, 0x5AD6, 0x5AD8, 0x5AE3, 0x5B75, 0x5BDE, 0x5BE7, 
+  0x5BE1, 0x5BE5, 0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4, 0x5BDF, 0x5C0D, 
+  0x5C62, 0x5D84, 0x5D87, 0x5E5B, 0x5E63, 0x5E55, 0x5E57, 0x5E54, 
+  0x5ED3, 0x5ED6, 0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147,      0, 
+plane ba
+at 0x40
+  0x613F, 0x614B, 0x6177, 0x6162, 0x6163, 0x615F, 0x615A, 0x6158, 
+  0x6175, 0x622A, 0x6487, 0x6458, 0x6454, 0x64A4, 0x6478, 0x645F, 
+  0x647A, 0x6451, 0x6467, 0x6434, 0x646D, 0x647B, 0x6572, 0x65A1, 
+  0x65D7, 0x65D6, 0x66A2, 0x66A8, 0x669D, 0x699C, 0x69A8, 0x6995, 
+  0x69C1, 0x69AE, 0x69D3, 0x69CB, 0x699B, 0x69B7, 0x69BB, 0x69AB, 
+  0x69B4, 0x69D0, 0x69CD, 0x69AD, 0x69CC, 0x69A6, 0x69C3, 0x69A3, 
+  0x6B49, 0x6B4C, 0x6C33, 0x6F33, 0x6F14, 0x6EFE, 0x6F13, 0x6EF4, 
+  0x6F29, 0x6F3E, 0x6F20, 0x6F2C, 0x6F0F, 0x6F02, 0x6F22,      0, 
+at 0xA0
+       0, 0x6EFF, 0x6EEF, 0x6F06, 0x6F31, 0x6F38, 0x6F32, 0x6F23, 
+  0x6F15, 0x6F2B, 0x6F2F, 0x6F88, 0x6F2A, 0x6EEC, 0x6F01, 0x6EF2, 
+  0x6ECC, 0x6EF7, 0x7194, 0x7199, 0x717D, 0x718A, 0x7184, 0x7192, 
+  0x723E, 0x7292, 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746A, 
+  0x7470, 0x746D, 0x7504, 0x7591, 0x7627, 0x760D, 0x760B, 0x7609, 
+  0x7613, 0x76E1, 0x76E3, 0x7784, 0x777D, 0x777F, 0x7761, 0x78C1, 
+  0x789F, 0x78A7, 0x78B3, 0x78A9, 0x78A3, 0x798E, 0x798F, 0x798D, 
+  0x7A2E, 0x7A31, 0x7AAA, 0x7AA9, 0x7AED, 0x7AEF, 0x7BA1, 0x7B95, 
+  0x7B8B, 0x7B75, 0x7B97, 0x7B9D, 0x7B94, 0x7B8F, 0x7BB8, 0x7B87, 
+  0x7B84, 0x7CB9, 0x7CBD, 0x7CBE, 0x7DBB, 0x7DB0, 0x7D9C, 0x7DBD, 
+  0x7DBE, 0x7DA0, 0x7DCA, 0x7DB4, 0x7DB2, 0x7DB1, 0x7DBA, 0x7DA2, 
+  0x7DBF, 0x7DB5, 0x7DB8, 0x7DAD, 0x7DD2, 0x7DC7, 0x7DAC,      0, 
+plane bb
+at 0x40
+  0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, 0x805E, 0x805A, 0x8087, 0x8150, 
+  0x8180, 0x818F, 0x8188, 0x818A, 0x817F, 0x8182, 0x81E7, 0x81FA, 
+  0x8207, 0x8214, 0x821E, 0x824B, 0x84C9, 0x84BF, 0x84C6, 0x84C4, 
+  0x8499, 0x849E, 0x84B2, 0x849C, 0x84CB, 0x84B8, 0x84C0, 0x84D3, 
+  0x8490, 0x84BC, 0x84D1, 0x84CA, 0x873F, 0x871C, 0x873B, 0x8722, 
+  0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88F3, 0x8902, 
+  0x88F4, 0x88F9, 0x88F8, 0x88FD, 0x88E8, 0x891A, 0x88EF, 0x8AA6, 
+  0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, 0x8AA1, 0x8A93, 0x8AA4,      0, 
+at 0xA0
+       0, 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98, 0x8A91, 0x8A9A, 0x8AA7, 
+  0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1, 0x8CD2, 0x8D6B, 0x8D99, 
+  0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15, 0x8F13, 0x8FA3, 0x9060, 
+  0x9058, 0x905C, 0x9063, 0x9059, 0x905E, 0x9062, 0x905D, 0x905B, 
+  0x9119, 0x9118, 0x911E, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 
+  0x9280, 0x9285, 0x9298, 0x9296, 0x927B, 0x9293, 0x929C, 0x92A8, 
+  0x927C, 0x9291, 0x95A1, 0x95A8, 0x95A9, 0x95A3, 0x95A5, 0x95A4, 
+  0x9699, 0x969C, 0x969B, 0x96CC, 0x96D2, 0x9700, 0x977C, 0x9785, 
+  0x97F6, 0x9817, 0x9818, 0x98AF, 0x98B1, 0x9903, 0x9905, 0x990C, 
+  0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, 0x9B41, 0x9B42, 0x9CF4, 
+  0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, 0x5104, 0x5100, 0x50FB, 
+  0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51DC,      0, 
+plane bc
+at 0x40
+  0x5287, 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0, 0x53B2, 0x562E, 
+  0x563B, 0x5639, 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, 0x564E, 
+  0x5657, 0x5674, 0x5636, 0x562F, 0x5630, 0x5880, 0x589F, 0x589E, 
+  0x58B3, 0x589C, 0x58AE, 0x58A9, 0x58A6, 0x596D, 0x5B09, 0x5AFB, 
+  0x5B0B, 0x5AF5, 0x5B0C, 0x5B08, 0x5BEE, 0x5BEC, 0x5BE9, 0x5BEB, 
+  0x5C64, 0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F, 0x5E61, 0x5EE2, 
+  0x5EDA, 0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, 0x5F71, 0x5FB7, 
+  0x5FB5, 0x6176, 0x6167, 0x616E, 0x615D, 0x6155, 0x6182,      0, 
+at 0xA0
+       0, 0x617C, 0x6170, 0x616B, 0x617E, 0x61A7, 0x6190, 0x61AB, 
+  0x618E, 0x61AC, 0x619A, 0x61A4, 0x6194, 0x61AE, 0x622E, 0x6469, 
+  0x646F, 0x6479, 0x649E, 0x64B2, 0x6488, 0x6490, 0x64B0, 0x64A5, 
+  0x6493, 0x6495, 0x64A9, 0x6492, 0x64AE, 0x64AD, 0x64AB, 0x649A, 
+  0x64AC, 0x6499, 0x64A2, 0x64B3, 0x6575, 0x6577, 0x6578, 0x66AE, 
+  0x66AB, 0x66B4, 0x66B1, 0x6A23, 0x6A1F, 0x69E8, 0x6A01, 0x6A1E, 
+  0x6A19, 0x69FD, 0x6A21, 0x6A13, 0x6A0A, 0x69F3, 0x6A02, 0x6A05, 
+  0x69ED, 0x6A11, 0x6B50, 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F, 
+  0x6F7C, 0x6F84, 0x6F51, 0x6F66, 0x6F54, 0x6F86, 0x6F6D, 0x6F5B, 
+  0x6F78, 0x6F6E, 0x6F8E, 0x6F7A, 0x6F70, 0x6F64, 0x6F97, 0x6F58, 
+  0x6ED5, 0x6F6F, 0x6F60, 0x6F5F, 0x719F, 0x71AC, 0x71B1, 0x71A8, 
+  0x7256, 0x729B, 0x734E, 0x7357, 0x7469, 0x748B, 0x7483,      0, 
+plane bd
+at 0x40
+  0x747E, 0x7480, 0x757F, 0x7620, 0x7629, 0x761F, 0x7624, 0x7626, 
+  0x7621, 0x7622, 0x769A, 0x76BA, 0x76E4, 0x778E, 0x7787, 0x778C, 
+  0x7791, 0x778B, 0x78CB, 0x78C5, 0x78BA, 0x78CA, 0x78BE, 0x78D5, 
+  0x78BC, 0x78D0, 0x7A3F, 0x7A3C, 0x7A40, 0x7A3D, 0x7A37, 0x7A3B, 
+  0x7AAF, 0x7AAE, 0x7BAD, 0x7BB1, 0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7, 
+  0x7BC1, 0x7BA0, 0x7BCC, 0x7CCA, 0x7DE0, 0x7DF4, 0x7DEF, 0x7DFB, 
+  0x7DD8, 0x7DEC, 0x7DDD, 0x7DE8, 0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9, 
+  0x7D9E, 0x7DD9, 0x7DF2, 0x7DF9, 0x7F75, 0x7F77, 0x7FAF,      0, 
+at 0xA0
+       0, 0x7FE9, 0x8026, 0x819B, 0x819C, 0x819D, 0x81A0, 0x819A, 
+  0x8198, 0x8517, 0x853D, 0x851A, 0x84EE, 0x852C, 0x852D, 0x8513, 
+  0x8511, 0x8523, 0x8521, 0x8514, 0x84EC, 0x8525, 0x84FF, 0x8506, 
+  0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 
+  0x8757, 0x874C, 0x8753, 0x885B, 0x885D, 0x8910, 0x8907, 0x8912, 
+  0x8913, 0x8915, 0x890A, 0x8ABC, 0x8AD2, 0x8AC7, 0x8AC4, 0x8A95, 
+  0x8ACB, 0x8AF8, 0x8AB2, 0x8AC9, 0x8AC2, 0x8ABF, 0x8AB0, 0x8AD6, 
+  0x8ACD, 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, 0x8C4E, 0x8C6C, 0x8CE0, 
+  0x8CDE, 0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2, 0x8CE3, 0x8CDC, 
+  0x8CEA, 0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, 0x8E2B, 0x8E10, 0x8E1D, 
+  0x8E22, 0x8E0F, 0x8E29, 0x8E1F, 0x8E21, 0x8E1E, 0x8EBA, 0x8F1D, 
+  0x8F1B, 0x8F1F, 0x8F29, 0x8F26, 0x8F2A, 0x8F1C, 0x8F1E,      0, 
+plane be
+at 0x40
+  0x8F25, 0x9069, 0x906E, 0x9068, 0x906D, 0x9077, 0x9130, 0x912D, 
+  0x9127, 0x9131, 0x9187, 0x9189, 0x918B, 0x9183, 0x92C5, 0x92BB, 
+  0x92B7, 0x92EA, 0x92AC, 0x92E4, 0x92C1, 0x92B3, 0x92BC, 0x92D2, 
+  0x92C7, 0x92F0, 0x92B2, 0x95AD, 0x95B1, 0x9704, 0x9706, 0x9707, 
+  0x9709, 0x9760, 0x978D, 0x978B, 0x978F, 0x9821, 0x982B, 0x981C, 
+  0x98B3, 0x990A, 0x9913, 0x9912, 0x9918, 0x99DD, 0x99D0, 0x99DF, 
+  0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE, 0x9AEF, 
+  0x9B27, 0x9B45, 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09,      0, 
+at 0xA0
+       0, 0x9D03, 0x9EA9, 0x9EBE, 0x9ECE, 0x58A8, 0x9F52, 0x5112, 
+  0x5118, 0x5114, 0x5110, 0x5115, 0x5180, 0x51AA, 0x51DD, 0x5291, 
+  0x5293, 0x52F3, 0x5659, 0x566B, 0x5679, 0x5669, 0x5664, 0x5678, 
+  0x566A, 0x5668, 0x5665, 0x5671, 0x566F, 0x566C, 0x5662, 0x5676, 
+  0x58C1, 0x58BE, 0x58C7, 0x58C5, 0x596E, 0x5B1D, 0x5B34, 0x5B78, 
+  0x5BF0, 0x5C0E, 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD, 
+  0x61B6, 0x61BE, 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB, 
+  0x64BB, 0x64BC, 0x64DA, 0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF, 
+  0x64D2, 0x64D4, 0x64BE, 0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4, 
+  0x66C7, 0x66B8, 0x6A3D, 0x6A38, 0x6A3A, 0x6A59, 0x6A6B, 0x6A58, 
+  0x6A39, 0x6A44, 0x6A62, 0x6A61, 0x6A4B, 0x6A47, 0x6A35, 0x6A5F, 
+  0x6A48, 0x6B59, 0x6B77, 0x6C05, 0x6FC2, 0x6FB1, 0x6FA1,      0, 
+plane bf
+at 0x40
+  0x6FC3, 0x6FA4, 0x6FC1, 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6, 
+  0x6FA6, 0x6FA0, 0x6FB4, 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8, 
+  0x71D5, 0x71B9, 0x71CE, 0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368, 
+  0x749C, 0x74A3, 0x7498, 0x749F, 0x749E, 0x74E2, 0x750C, 0x750D, 
+  0x7634, 0x7638, 0x763A, 0x76E7, 0x76E5, 0x77A0, 0x779E, 0x779F, 
+  0x77A5, 0x78E8, 0x78DA, 0x78EC, 0x78E7, 0x79A6, 0x7A4D, 0x7A4E, 
+  0x7A46, 0x7A4C, 0x7A4B, 0x7ABA, 0x7BD9, 0x7C11, 0x7BC9, 0x7BE4, 
+  0x7BDB, 0x7BE1, 0x7BE9, 0x7BE6, 0x7CD5, 0x7CD6, 0x7E0A,      0, 
+at 0xA0
+       0, 0x7E11, 0x7E08, 0x7E1B, 0x7E23, 0x7E1E, 0x7E1D, 0x7E09, 
+  0x7E10, 0x7F79, 0x7FB2, 0x7FF0, 0x7FF1, 0x7FEE, 0x8028, 0x81B3, 
+  0x81A9, 0x81A8, 0x81FB, 0x8208, 0x8258, 0x8259, 0x854A, 0x8559, 
+  0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856D, 0x856A, 0x855E, 
+  0x8783, 0x879F, 0x879E, 0x87A2, 0x878D, 0x8861, 0x892A, 0x8932, 
+  0x8925, 0x892B, 0x8921, 0x89AA, 0x89A6, 0x8AE6, 0x8AFA, 0x8AEB, 
+  0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, 0x8AEE, 0x8AFE, 0x8B01, 0x8B02, 
+  0x8AF7, 0x8AED, 0x8AF3, 0x8AF6, 0x8AFC, 0x8C6B, 0x8C6D, 0x8C93, 
+  0x8CF4, 0x8E44, 0x8E31, 0x8E34, 0x8E42, 0x8E39, 0x8E35, 0x8F3B, 
+  0x8F2F, 0x8F38, 0x8F33, 0x8FA8, 0x8FA6, 0x9075, 0x9074, 0x9078, 
+  0x9072, 0x907C, 0x907A, 0x9134, 0x9192, 0x9320, 0x9336, 0x92F8, 
+  0x9333, 0x932F, 0x9322, 0x92FC, 0x932B, 0x9304, 0x931A,      0, 
+plane c0
+at 0x40
+  0x9310, 0x9326, 0x9321, 0x9315, 0x932E, 0x9319, 0x95BB, 0x96A7, 
+  0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711, 0x9716, 0x970D, 0x9713, 
+  0x970F, 0x975B, 0x975C, 0x9766, 0x9798, 0x9830, 0x9838, 0x983B, 
+  0x9837, 0x982D, 0x9839, 0x9824, 0x9910, 0x9928, 0x991E, 0x991B, 
+  0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1, 0x9AB8, 0x9ABC, 0x9AFB, 
+  0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23, 0x9D26, 0x9D28, 0x9D12, 
+  0x9D1B, 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, 0x512A, 0x511F, 0x5121, 
+  0x5132, 0x52F5, 0x568E, 0x5680, 0x5690, 0x5685, 0x5687,      0, 
+at 0xA0
+       0, 0x568F, 0x58D5, 0x58D3, 0x58D1, 0x58CE, 0x5B30, 0x5B2A, 
+  0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA, 0x5DBD, 0x5DB8, 
+  0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, 0x61C7, 0x61E6, 0x61CB, 
+  0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0, 0x64E6, 
+  0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9, 0x66D6, 
+  0x6A80, 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3, 0x6A7E, 
+  0x6A97, 0x6A90, 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08, 0x6FD8, 
+  0x6FF1, 0x6FDF, 0x6FE0, 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF, 0x6F80, 
+  0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, 0x6FEE, 0x6FF0, 0x71E7, 0x71DF, 
+  0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC, 0x71F4, 0x71E0, 0x7235, 
+  0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6, 0x74A8, 0x7646, 
+  0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC,      0, 
+plane c1
+at 0x40
+  0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901, 
+  0x79A7, 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7, 
+  0x7C0C, 0x7BE0, 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9, 
+  0x7CDD, 0x7E2E, 0x7E3E, 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B, 
+  0x7E3D, 0x7E31, 0x7E45, 0x7E41, 0x7E34, 0x7E39, 0x7E48, 0x7E35, 
+  0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, 0x8071, 0x8072, 0x8070, 
+  0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, 0x81C0, 0x81BF, 
+  0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA,      0, 
+at 0xA0
+       0, 0x8584, 0x857E, 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B, 
+  0x8587, 0x85A8, 0x858A, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2, 
+  0x87C6, 0x87AB, 0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936, 
+  0x8944, 0x8938, 0x893D, 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B, 
+  0x8B0A, 0x8B20, 0x8B1D, 0x8B04, 0x8B10, 0x8C41, 0x8C3F, 0x8C73, 
+  0x8CFA, 0x8CFD, 0x8CFC, 0x8CF8, 0x8CFB, 0x8DA8, 0x8E49, 0x8E4B, 
+  0x8E48, 0x8E4A, 0x8F44, 0x8F3E, 0x8F42, 0x8F45, 0x8F3F, 0x907F, 
+  0x907D, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91A3, 0x919E, 
+  0x919C, 0x934D, 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B, 
+  0x9318, 0x937E, 0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, 
+  0x95CB, 0x95CC, 0x95C8, 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C, 
+  0x971E, 0x97A0, 0x97D3, 0x9846, 0x98B6, 0x9935, 0x9A01,      0, 
+plane c2
+at 0x40
+  0x99FF, 0x9BAE, 0x9BAB, 0x9BAA, 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, 
+  0x9ECF, 0x9EDE, 0x9EDC, 0x9EDD, 0x9EDB, 0x9F3E, 0x9F4B, 0x53E2, 
+  0x5695, 0x56AE, 0x58D9, 0x58D8, 0x5B38, 0x5F5D, 0x61E3, 0x6233, 
+  0x64F4, 0x64F2, 0x64FE, 0x6506, 0x64FA, 0x64FB, 0x64F7, 0x65B7, 
+  0x66DC, 0x6726, 0x6AB3, 0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2, 
+  0x6AAE, 0x6AAF, 0x6B5F, 0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE, 
+  0x7006, 0x6FFA, 0x7011, 0x700F, 0x71FB, 0x71FC, 0x71FE, 0x71F8, 
+  0x7377, 0x7375, 0x74A7, 0x74BF, 0x7515, 0x7656, 0x7658,      0, 
+at 0xA0
+       0, 0x7652, 0x77BD, 0x77BF, 0x77BB, 0x77BC, 0x790E, 0x79AE, 
+  0x7A61, 0x7A62, 0x7A60, 0x7AC4, 0x7AC5, 0x7C2B, 0x7C27, 0x7C2A, 
+  0x7C1E, 0x7C23, 0x7C21, 0x7CE7, 0x7E54, 0x7E55, 0x7E5E, 0x7E5A, 
+  0x7E61, 0x7E52, 0x7E59, 0x7F48, 0x7FF9, 0x7FFB, 0x8077, 0x8076, 
+  0x81CD, 0x81CF, 0x820A, 0x85CF, 0x85A9, 0x85CD, 0x85D0, 0x85C9, 
+  0x85B0, 0x85BA, 0x85B9, 0x85A6, 0x87EF, 0x87EC, 0x87F2, 0x87E0, 
+  0x8986, 0x89B2, 0x89F4, 0x8B28, 0x8B39, 0x8B2C, 0x8B2B, 0x8C50, 
+  0x8D05, 0x8E59, 0x8E63, 0x8E66, 0x8E64, 0x8E5F, 0x8E55, 0x8EC0, 
+  0x8F49, 0x8F4D, 0x9087, 0x9083, 0x9088, 0x91AB, 0x91AC, 0x91D0, 
+  0x9394, 0x938A, 0x9396, 0x93A2, 0x93B3, 0x93AE, 0x93AC, 0x93B0, 
+  0x9398, 0x939A, 0x9397, 0x95D4, 0x95D6, 0x95D0, 0x95D5, 0x96E2, 
+  0x96DC, 0x96D9, 0x96DB, 0x96DE, 0x9724, 0x97A3, 0x97A6,      0, 
+plane c3
+at 0x40
+  0x97AD, 0x97F9, 0x984D, 0x984F, 0x984C, 0x984E, 0x9853, 0x98BA, 
+  0x993E, 0x993F, 0x993D, 0x992E, 0x99A5, 0x9A0E, 0x9AC1, 0x9B03, 
+  0x9B06, 0x9B4F, 0x9B4E, 0x9B4D, 0x9BCA, 0x9BC9, 0x9BFD, 0x9BC8, 
+  0x9BC0, 0x9D51, 0x9D5D, 0x9D60, 0x9EE0, 0x9F15, 0x9F2C, 0x5133, 
+  0x56A5, 0x58DE, 0x58DF, 0x58E2, 0x5BF5, 0x9F90, 0x5EEC, 0x61F2, 
+  0x61F7, 0x61F6, 0x61F5, 0x6500, 0x650F, 0x66E0, 0x66DD, 0x6AE5, 
+  0x6ADD, 0x6ADA, 0x6AD3, 0x701B, 0x701F, 0x7028, 0x701A, 0x701D, 
+  0x7015, 0x7018, 0x7206, 0x720D, 0x7258, 0x72A2, 0x7378,      0, 
+at 0xA0
+       0, 0x737A, 0x74BD, 0x74CA, 0x74E3, 0x7587, 0x7586, 0x765F, 
+  0x7661, 0x77C7, 0x7919, 0x79B1, 0x7A6B, 0x7A69, 0x7C3E, 0x7C3F, 
+  0x7C38, 0x7C3D, 0x7C37, 0x7C40, 0x7E6B, 0x7E6D, 0x7E79, 0x7E69, 
+  0x7E6A, 0x7F85, 0x7E73, 0x7FB6, 0x7FB9, 0x7FB8, 0x81D8, 0x85E9, 
+  0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5, 0x85F7, 0x87FB, 0x8805, 
+  0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F, 0x8956, 0x895E, 0x8B41, 
+  0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, 0x8B46, 0x8B59, 
+  0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, 0x8E6C, 0x8E7A, 
+  0x8E74, 0x8F54, 0x8F4E, 0x8FAD, 0x908A, 0x908B, 0x91B1, 0x91AE, 
+  0x93E1, 0x93D1, 0x93DF, 0x93C3, 0x93C8, 0x93DC, 0x93DD, 0x93D6, 
+  0x93E2, 0x93CD, 0x93D8, 0x93E4, 0x93D7, 0x93E8, 0x95DC, 0x96B4, 
+  0x96E3, 0x972A, 0x9727, 0x9761, 0x97DC, 0x97FB, 0x985E,      0, 
+plane c4
+at 0x40
+  0x9858, 0x985B, 0x98BC, 0x9945, 0x9949, 0x9A16, 0x9A19, 0x9B0D, 
+  0x9BE8, 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, 0x9D72, 0x9D6A, 
+  0x9D6C, 0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56A8, 0x56B7, 
+  0x56B6, 0x56B4, 0x56BC, 0x58E4, 0x5B40, 0x5B43, 0x5B7D, 0x5BF6, 
+  0x5DC9, 0x61F8, 0x61FA, 0x6518, 0x6514, 0x6519, 0x66E6, 0x6727, 
+  0x6AEC, 0x703E, 0x7030, 0x7032, 0x7210, 0x737B, 0x74CF, 0x7662, 
+  0x7665, 0x7926, 0x792A, 0x792C, 0x792B, 0x7AC7, 0x7AF6, 0x7C4C, 
+  0x7C43, 0x7C4D, 0x7CEF, 0x7CF0, 0x8FAE, 0x7E7D, 0x7E7C,      0, 
+at 0xA0
+       0, 0x7E82, 0x7F4C, 0x8000, 0x81DA, 0x8266, 0x85FB, 0x85F9, 
+  0x8611, 0x85FA, 0x8606, 0x860B, 0x8607, 0x860A, 0x8814, 0x8815, 
+  0x8964, 0x89BA, 0x89F8, 0x8B70, 0x8B6C, 0x8B66, 0x8B6F, 0x8B5F, 
+  0x8B6B, 0x8D0F, 0x8D0D, 0x8E89, 0x8E81, 0x8E85, 0x8E82, 0x91B4, 
+  0x91CB, 0x9418, 0x9403, 0x93FD, 0x95E1, 0x9730, 0x98C4, 0x9952, 
+  0x9951, 0x99A8, 0x9A2B, 0x9A30, 0x9A37, 0x9A35, 0x9C13, 0x9C0D, 
+  0x9E79, 0x9EB5, 0x9EE8, 0x9F2F, 0x9F5F, 0x9F63, 0x9F61, 0x5137, 
+  0x5138, 0x56C1, 0x56C0, 0x56C2, 0x5914, 0x5C6C, 0x5DCD, 0x61FC, 
+  0x61FE, 0x651D, 0x651C, 0x6595, 0x66E9, 0x6AFB, 0x6B04, 0x6AFA, 
+  0x6BB2, 0x704C, 0x721B, 0x72A7, 0x74D6, 0x74D4, 0x7669, 0x77D3, 
+  0x7C50, 0x7E8F, 0x7E8C, 0x7FBC, 0x8617, 0x862D, 0x861A, 0x8823, 
+  0x8822, 0x8821, 0x881F, 0x896A, 0x896C, 0x89BD, 0x8B74,      0, 
+plane c5
+at 0x40
+  0x8B77, 0x8B7D, 0x8D13, 0x8E8A, 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF, 
+  0x91BA, 0x942E, 0x9433, 0x9435, 0x943A, 0x9438, 0x9432, 0x942B, 
+  0x95E2, 0x9738, 0x9739, 0x9732, 0x97FF, 0x9867, 0x9865, 0x9957, 
+  0x9A45, 0x9A43, 0x9A40, 0x9A3E, 0x9ACF, 0x9B54, 0x9B51, 0x9C2D, 
+  0x9C25, 0x9DAF, 0x9DB4, 0x9DC2, 0x9DB8, 0x9E9D, 0x9EEF, 0x9F19, 
+  0x9F5C, 0x9F66, 0x9F67, 0x513C, 0x513B, 0x56C8, 0x56CA, 0x56C9, 
+  0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, 0x61FF, 0x6524, 0x6B0A, 0x6B61, 
+  0x7051, 0x7058, 0x7380, 0x74E4, 0x758A, 0x766E, 0x766C,      0, 
+at 0xA0
+       0, 0x79B3, 0x7C60, 0x7C5F, 0x807E, 0x807D, 0x81DF, 0x8972, 
+  0x896F, 0x89FC, 0x8B80, 0x8D16, 0x8D17, 0x8E91, 0x8E93, 0x8F61, 
+  0x9148, 0x9444, 0x9451, 0x9452, 0x973D, 0x973E, 0x97C3, 0x97C1, 
+  0x986B, 0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A, 0x9C49, 0x9C31, 
+  0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C, 0x9F6A, 0x9F94, 
+  0x56CC, 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, 0x66EC, 0x6B10, 
+  0x74DA, 0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, 0x7E96, 0x7E94, 
+  0x81E2, 0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090, 0x908F, 0x9463, 
+  0x9460, 0x9464, 0x9768, 0x986F, 0x995C, 0x9A5A, 0x9A5B, 0x9A57, 
+  0x9AD3, 0x9AD4, 0x9AD1, 0x9C54, 0x9C57, 0x9C56, 0x9DE5, 0x9E9F, 
+  0x9EF4, 0x56D1, 0x58E9, 0x652C, 0x705E, 0x7671, 0x7672, 0x77D7, 
+  0x7F50, 0x7F88, 0x8836, 0x8839, 0x8862, 0x8B93, 0x8B92,      0, 
+plane c6
+at 0x40
+  0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748, 0x9744, 
+  0x97C6, 0x9870, 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, 0x9DFA, 
+  0x9E7C, 0x9E7D, 0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16, 0x7063, 
+  0x7C6C, 0x7C6E, 0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472, 0x9470, 
+  0x9871, 0x995E, 0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA, 0x8B9A, 
+  0x9477, 0x97C9, 0x9A62, 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA, 0x91C5, 
+  0x947D, 0x947E, 0x947C, 0x9C77, 0x9C78, 0x9EF7, 0x8C54, 0x947F, 
+  0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B, 0x9E1E, 0x7C72,      0, 
+at 0xA0
+       0, 0x30FE, 0x309D, 0x309E, 0x3005, 0x3041, 0x3042, 0x3043, 
+  0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 
+  0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 
+  0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 
+  0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 
+  0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 
+  0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 
+  0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 
+  0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 
+  0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 
+  0x308C, 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 
+  0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7,      0, 
+plane c7
+at 0x40
+  0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 
+  0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 
+  0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 
+  0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 
+  0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 
+  0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 
+  0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 
+  0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6,      0, 
+at 0xA0
+       0, 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 
+  0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 
+  0x30F6, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 
+  0x041A, 0x041B, 0x041C, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 
+  0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 
+  0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 
+  0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 
+  0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 
+  0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 
+  0x044F, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 
+  0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 
+  0x2479, 0x247A, 0x247B, 0x247C, 0x247D,      0,      0,      0, 
+plane c8
+at 0x40
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+at 0xA0
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane c9
+at 0x40
+  0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, 0x4E47, 
+  0x4E8D, 0x56D7, 0xFA0C, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E, 
+  0x4E2E, 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C, 
+  0x53B9, 0x5720, 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3, 
+  0x6BCC, 0x6C14, 0x723F, 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9, 
+  0x4EE1, 0x4EDD, 0x4EDA, 0x520C, 0x531C, 0x534C, 0x5722, 0x5723, 
+  0x5917, 0x592F, 0x5B81, 0x5B84, 0x5C12, 0x5C3B, 0x5C74, 0x5C73, 
+  0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, 0x6250, 0x6C15,      0, 
+at 0xA0
+       0, 0x6C36, 0x6C43, 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A, 
+  0x79B8, 0x808A, 0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14, 
+  0x4EF1, 0x4F00, 0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22, 
+  0x4F13, 0x4F04, 0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5209, 0x5210, 
+  0x52A6, 0x5322, 0x531F, 0x534D, 0x538A, 0x5407, 0x56E1, 0x56DF, 
+  0x572E, 0x572A, 0x5734, 0x593C, 0x5980, 0x597C, 0x5985, 0x597B, 
+  0x597E, 0x5977, 0x597F, 0x5B56, 0x5C15, 0x5C25, 0x5C7C, 0x5C7A, 
+  0x5C7B, 0x5C7E, 0x5DDF, 0x5E75, 0x5E84, 0x5F02, 0x5F1A, 0x5F74, 
+  0x5FD5, 0x5FD4, 0x5FCF, 0x625C, 0x625E, 0x6264, 0x6261, 0x6266, 
+  0x6262, 0x6259, 0x6260, 0x625A, 0x6265, 0x65EF, 0x65EE, 0x673E, 
+  0x6739, 0x6738, 0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18, 
+  0x6C46, 0x6C52, 0x6C5C, 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B,      0, 
+plane ca
+at 0x40
+  0x6C4C, 0x7071, 0x725E, 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F, 
+  0x7A75, 0x7F51, 0x8278, 0x827C, 0x8280, 0x827D, 0x827F, 0x864D, 
+  0x897E, 0x9099, 0x9097, 0x9098, 0x909B, 0x9094, 0x9622, 0x9624, 
+  0x9620, 0x9623, 0x4F56, 0x4F3B, 0x4F62, 0x4F49, 0x4F53, 0x4F64, 
+  0x4F3E, 0x4F67, 0x4F52, 0x4F5F, 0x4F41, 0x4F58, 0x4F2D, 0x4F33, 
+  0x4F3F, 0x4F61, 0x518F, 0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD, 
+  0x52AE, 0x5309, 0x5363, 0x5372, 0x538E, 0x538F, 0x5430, 0x5437, 
+  0x542A, 0x5454, 0x5445, 0x5419, 0x541C, 0x5425, 0x5418,      0, 
+at 0xA0
+       0, 0x543D, 0x544F, 0x5441, 0x5428, 0x5424, 0x5447, 0x56EE, 
+  0x56E7, 0x56E5, 0x5741, 0x5745, 0x574C, 0x5749, 0x574B, 0x5752, 
+  0x5906, 0x5940, 0x59A6, 0x5998, 0x59A0, 0x5997, 0x598E, 0x59A2, 
+  0x5990, 0x598F, 0x59A7, 0x59A1, 0x5B8E, 0x5B92, 0x5C28, 0x5C2A, 
+  0x5C8D, 0x5C8F, 0x5C88, 0x5C8B, 0x5C89, 0x5C92, 0x5C8A, 0x5C86, 
+  0x5C93, 0x5C95, 0x5DE0, 0x5E0A, 0x5E0E, 0x5E8B, 0x5E89, 0x5E8C, 
+  0x5E88, 0x5E8D, 0x5F05, 0x5F1D, 0x5F78, 0x5F76, 0x5FD2, 0x5FD1, 
+  0x5FD0, 0x5FED, 0x5FE8, 0x5FEE, 0x5FF3, 0x5FE1, 0x5FE4, 0x5FE3, 
+  0x5FFA, 0x5FEF, 0x5FF7, 0x5FFB, 0x6000, 0x5FF4, 0x623A, 0x6283, 
+  0x628C, 0x628E, 0x628F, 0x6294, 0x6287, 0x6271, 0x627B, 0x627A, 
+  0x6270, 0x6281, 0x6288, 0x6277, 0x627D, 0x6272, 0x6274, 0x6537, 
+  0x65F0, 0x65F4, 0x65F3, 0x65F2, 0x65F5, 0x6745, 0x6747,      0, 
+plane cb
+at 0x40
+  0x6759, 0x6755, 0x674C, 0x6748, 0x675D, 0x674D, 0x675A, 0x674B, 
+  0x6BD0, 0x6C19, 0x6C1A, 0x6C78, 0x6C67, 0x6C6B, 0x6C84, 0x6C8B, 
+  0x6C8F, 0x6C71, 0x6C6F, 0x6C69, 0x6C9A, 0x6C6D, 0x6C87, 0x6C95, 
+  0x6C9C, 0x6C66, 0x6C73, 0x6C65, 0x6C7B, 0x6C8E, 0x7074, 0x707A, 
+  0x7263, 0x72BF, 0x72BD, 0x72C3, 0x72C6, 0x72C1, 0x72BA, 0x72C5, 
+  0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753A, 0x7539, 0x7594, 
+  0x7595, 0x7681, 0x793D, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092, 
+  0x809C, 0x8290, 0x828F, 0x8285, 0x828E, 0x8291, 0x8293,      0, 
+at 0xA0
+       0, 0x828A, 0x8283, 0x8284, 0x8C78, 0x8FC9, 0x8FBF, 0x909F, 
+  0x90A1, 0x90A5, 0x909E, 0x90A7, 0x90A0, 0x9630, 0x9628, 0x962F, 
+  0x962D, 0x4E33, 0x4F98, 0x4F7C, 0x4F85, 0x4F7D, 0x4F80, 0x4F87, 
+  0x4F76, 0x4F74, 0x4F89, 0x4F84, 0x4F77, 0x4F4C, 0x4F97, 0x4F6A, 
+  0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90, 0x4F9C, 0x4F94, 0x4F9E, 
+  0x4F92, 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, 0x519E, 0x51BC, 0x51BE, 
+  0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52BC, 0x530A, 0x530B, 
+  0x533C, 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, 0x5482, 
+  0x5488, 0x546B, 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, 0x5466, 
+  0x548D, 0x546F, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 
+  0x56F7, 0x56F9, 0x576F, 0x5772, 0x576D, 0x576B, 0x5771, 0x5770, 
+  0x5776, 0x5780, 0x5775, 0x577B, 0x5773, 0x5774, 0x5762,      0, 
+plane cc
+at 0x40
+  0x5768, 0x577D, 0x590C, 0x5945, 0x59B5, 0x59BA, 0x59CF, 0x59CE, 
+  0x59B2, 0x59CC, 0x59C1, 0x59B6, 0x59BC, 0x59C3, 0x59D6, 0x59B1, 
+  0x59BD, 0x59C0, 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65, 0x5B93, 
+  0x5B95, 0x5C44, 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF, 
+  0x5CA8, 0x5CAC, 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7, 
+  0x5C9D, 0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17, 0x5E14, 0x5E19, 
+  0x5F28, 0x5F22, 0x5F23, 0x5F24, 0x5F54, 0x5F82, 0x5F7E, 0x5F7D, 
+  0x5FDE, 0x5FE5, 0x602D, 0x6026, 0x6019, 0x6032, 0x600B,      0, 
+at 0xA0
+       0, 0x6034, 0x600A, 0x6017, 0x6033, 0x601A, 0x601E, 0x602C, 
+  0x6022, 0x600D, 0x6010, 0x602E, 0x6013, 0x6011, 0x600C, 0x6009, 
+  0x601C, 0x6214, 0x623D, 0x62AD, 0x62B4, 0x62D1, 0x62BE, 0x62AA, 
+  0x62B6, 0x62CA, 0x62AE, 0x62B3, 0x62AF, 0x62BB, 0x62A9, 0x62B0, 
+  0x62B8, 0x653D, 0x65A8, 0x65BB, 0x6609, 0x65FC, 0x6604, 0x6612, 
+  0x6608, 0x65FB, 0x6603, 0x660B, 0x660D, 0x6605, 0x65FD, 0x6611, 
+  0x6610, 0x66F6, 0x670A, 0x6785, 0x676C, 0x678E, 0x6792, 0x6776, 
+  0x677B, 0x6798, 0x6786, 0x6784, 0x6774, 0x678D, 0x678C, 0x677A, 
+  0x679F, 0x6791, 0x6799, 0x6783, 0x677D, 0x6781, 0x6778, 0x6779, 
+  0x6794, 0x6B25, 0x6B80, 0x6B7E, 0x6BDE, 0x6C1D, 0x6C93, 0x6CEC, 
+  0x6CEB, 0x6CEE, 0x6CD9, 0x6CB6, 0x6CD4, 0x6CAD, 0x6CE7, 0x6CB7, 
+  0x6CD0, 0x6CC2, 0x6CBA, 0x6CC3, 0x6CC6, 0x6CED, 0x6CF2,      0, 
+plane cd
+at 0x40
+  0x6CD2, 0x6CDD, 0x6CB4, 0x6C8A, 0x6C9D, 0x6C80, 0x6CDE, 0x6CC0, 
+  0x6D30, 0x6CCD, 0x6CC7, 0x6CB0, 0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1, 
+  0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096, 
+  0x7082, 0x709A, 0x7083, 0x726A, 0x72D6, 0x72CB, 0x72D8, 0x72C9, 
+  0x72DC, 0x72D2, 0x72D4, 0x72DA, 0x72CC, 0x72D1, 0x73A4, 0x73A1, 
+  0x73AD, 0x73A6, 0x73A2, 0x73A0, 0x73AC, 0x739D, 0x74DD, 0x74E8, 
+  0x753F, 0x7540, 0x753E, 0x758C, 0x7598, 0x76AF, 0x76F3, 0x76F1, 
+  0x76F0, 0x76F5, 0x77F8, 0x77FC, 0x77F9, 0x77FB, 0x77FA,      0, 
+at 0xA0
+       0, 0x77F7, 0x7942, 0x793F, 0x79C5, 0x7A78, 0x7A7B, 0x7AFB, 
+  0x7C75, 0x7CFD, 0x8035, 0x808F, 0x80AE, 0x80A3, 0x80B8, 0x80B5, 
+  0x80AD, 0x8220, 0x82A0, 0x82C0, 0x82AB, 0x829A, 0x8298, 0x829B, 
+  0x82B5, 0x82A7, 0x82AE, 0x82BC, 0x829E, 0x82BA, 0x82B4, 0x82A8, 
+  0x82A1, 0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6, 0x82A2, 0x8670, 
+  0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, 0x8FD3, 0x8FCD, 
+  0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, 0x90B3, 0x90B0, 
+  0x9639, 0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD, 0x4FC5, 0x4FD3, 
+  0x4FB2, 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC, 0x4FD9, 0x4FBB, 
+  0x4FB3, 0x4FDB, 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0, 0x4FB9, 0x4FEC, 
+  0x5244, 0x5249, 0x52C0, 0x52C2, 0x533D, 0x537C, 0x5397, 0x5396, 
+  0x5399, 0x5398, 0x54BA, 0x54A1, 0x54AD, 0x54A5, 0x54CF,      0, 
+plane ce
+at 0x40
+  0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6, 0x54C5, 0x54C6, 
+  0x54A0, 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE, 0x54B0, 
+  0x57B5, 0x579E, 0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, 0x579B, 
+  0x5794, 0x5798, 0x578F, 0x5799, 0x57A5, 0x579A, 0x5795, 0x58F4, 
+  0x590D, 0x5953, 0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1, 0x59DD, 
+  0x59FA, 0x59FD, 0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7, 0x59DB, 
+  0x59E9, 0x59F3, 0x59F5, 0x59E0, 0x59FE, 0x59F4, 0x59ED, 0x5BA8, 
+  0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC, 0x5CD7, 0x5CCB, 0x5CDB,      0, 
+at 0xA0
+       0, 0x5CDE, 0x5CDA, 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, 0x5CD3, 
+  0x5CD4, 0x5CCF, 0x5CC8, 0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9, 
+  0x5E21, 0x5E22, 0x5E23, 0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2, 
+  0x5E9B, 0x5EA3, 0x5EA5, 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037, 
+  0x6039, 0x6054, 0x6072, 0x605E, 0x6045, 0x6053, 0x6047, 0x6049, 
+  0x605B, 0x604C, 0x6040, 0x6042, 0x605F, 0x6024, 0x6044, 0x6058, 
+  0x6066, 0x606E, 0x6242, 0x6243, 0x62CF, 0x630D, 0x630B, 0x62F5, 
+  0x630E, 0x6303, 0x62EB, 0x62F9, 0x630F, 0x630C, 0x62F8, 0x62F6, 
+  0x6300, 0x6313, 0x6314, 0x62FA, 0x6315, 0x62FB, 0x62F0, 0x6541, 
+  0x6543, 0x65AA, 0x65BF, 0x6636, 0x6621, 0x6632, 0x6635, 0x661C, 
+  0x6626, 0x6622, 0x6633, 0x662B, 0x663A, 0x661D, 0x6634, 0x6639, 
+  0x662E, 0x670F, 0x6710, 0x67C1, 0x67F2, 0x67C8, 0x67BA,      0, 
+plane cf
+at 0x40
+  0x67DC, 0x67BB, 0x67F8, 0x67D8, 0x67C0, 0x67B7, 0x67C5, 0x67EB, 
+  0x67E4, 0x67DF, 0x67B5, 0x67CD, 0x67B3, 0x67F7, 0x67F6, 0x67EE, 
+  0x67E3, 0x67C2, 0x67B9, 0x67CE, 0x67E7, 0x67F0, 0x67B2, 0x67FC, 
+  0x67C6, 0x67ED, 0x67CC, 0x67AE, 0x67E6, 0x67DB, 0x67FA, 0x67C9, 
+  0x67CA, 0x67C3, 0x67EA, 0x67CB, 0x6B28, 0x6B82, 0x6B84, 0x6BB6, 
+  0x6BD6, 0x6BD8, 0x6BE0, 0x6C20, 0x6C21, 0x6D28, 0x6D34, 0x6D2D, 
+  0x6D1F, 0x6D3C, 0x6D3F, 0x6D12, 0x6D0A, 0x6CDA, 0x6D33, 0x6D04, 
+  0x6D19, 0x6D3A, 0x6D1A, 0x6D11, 0x6D00, 0x6D1D, 0x6D42,      0, 
+at 0xA0
+       0, 0x6D01, 0x6D18, 0x6D37, 0x6D03, 0x6D0F, 0x6D40, 0x6D07, 
+  0x6D20, 0x6D2C, 0x6D08, 0x6D22, 0x6D09, 0x6D10, 0x70B7, 0x709F, 
+  0x70BE, 0x70B1, 0x70B0, 0x70A1, 0x70B4, 0x70B5, 0x70A9, 0x7241, 
+  0x7249, 0x724A, 0x726C, 0x7270, 0x7273, 0x726E, 0x72CA, 0x72E4, 
+  0x72E8, 0x72EB, 0x72DF, 0x72EA, 0x72E6, 0x72E3, 0x7385, 0x73CC, 
+  0x73C2, 0x73C8, 0x73C5, 0x73B9, 0x73B6, 0x73B5, 0x73B4, 0x73EB, 
+  0x73BF, 0x73C7, 0x73BE, 0x73C3, 0x73C6, 0x73B8, 0x73CB, 0x74EC, 
+  0x74EE, 0x752E, 0x7547, 0x7548, 0x75A7, 0x75AA, 0x7679, 0x76C4, 
+  0x7708, 0x7703, 0x7704, 0x7705, 0x770A, 0x76F7, 0x76FB, 0x76FA, 
+  0x77E7, 0x77E8, 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780F, 
+  0x780E, 0x7809, 0x7803, 0x7813, 0x794A, 0x794C, 0x794B, 0x7945, 
+  0x7944, 0x79D5, 0x79CD, 0x79CF, 0x79D6, 0x79CE, 0x7A80,      0, 
+plane d0
+at 0x40
+  0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A, 0x7C78, 0x7C79, 0x7C7F, 
+  0x7C80, 0x7C81, 0x7D03, 0x7D08, 0x7D01, 0x7F58, 0x7F91, 0x7F8D, 
+  0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014, 0x8037, 0x80D8, 0x80C7, 
+  0x80E0, 0x80D1, 0x80C8, 0x80C2, 0x80D0, 0x80C5, 0x80E3, 0x80D9, 
+  0x80DC, 0x80CA, 0x80D5, 0x80C9, 0x80CF, 0x80D7, 0x80E6, 0x80CD, 
+  0x81FF, 0x8221, 0x8294, 0x82D9, 0x82FE, 0x82F9, 0x8307, 0x82E8, 
+  0x8300, 0x82D5, 0x833A, 0x82EB, 0x82D6, 0x82F4, 0x82EC, 0x82E1, 
+  0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6, 0x82F0, 0x82EA,      0, 
+at 0xA0
+       0, 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, 0x8677, 0x8674, 
+  0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869, 0x89D3, 
+  0x8A04, 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0, 0x90F1, 
+  0x90BD, 0x90BF, 0x90D5, 0x90C5, 0x90BE, 0x90C7, 0x90CB, 0x90C8, 
+  0x91D4, 0x91D3, 0x9654, 0x964F, 0x9651, 0x9653, 0x964A, 0x964E, 
+  0x501E, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501B, 0x4FF5, 
+  0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, 0x4FF7, 0x5017, 0x501C, 
+  0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, 0x515A, 0x5194, 
+  0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261, 0x525A, 
+  0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E, 0x539E, 
+  0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4, 0x551A, 
+  0x54FF, 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, 0x54F1,      0, 
+plane d1
+at 0x40
+  0x550A, 0x54FB, 0x54F7, 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B, 
+  0x5701, 0x5702, 0x57CC, 0x5832, 0x57D5, 0x57D2, 0x57BA, 0x57C6, 
+  0x57BD, 0x57BC, 0x57B8, 0x57B6, 0x57BF, 0x57C7, 0x57D0, 0x57B9, 
+  0x57C1, 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, 0x5A2E, 0x5A15, 
+  0x5A0F, 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, 0x5BAD, 
+  0x5BAC, 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1, 
+  0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, 0x5EAA, 
+  0x5EAC, 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067,      0, 
+at 0xA0
+       0, 0x6041, 0x60A2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609D, 
+  0x6083, 0x6095, 0x609B, 0x6097, 0x6087, 0x609C, 0x608E, 0x6219, 
+  0x6246, 0x62F2, 0x6310, 0x6356, 0x632C, 0x6344, 0x6345, 0x6336, 
+  0x6343, 0x63E4, 0x6339, 0x634B, 0x634A, 0x633C, 0x6329, 0x6341, 
+  0x6334, 0x6358, 0x6354, 0x6359, 0x632D, 0x6347, 0x6333, 0x635A, 
+  0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6, 
+  0x65C3, 0x65C4, 0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, 
+  0x6713, 0x681F, 0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, 
+  0x684F, 0x6816, 0x6831, 0x681C, 0x6835, 0x682B, 0x682D, 0x682F, 
+  0x684E, 0x6844, 0x6834, 0x681D, 0x6812, 0x6814, 0x6826, 0x6828, 
+  0x682E, 0x684D, 0x683A, 0x6825, 0x6820, 0x6B2C, 0x6B2F, 0x6B2D, 
+  0x6B31, 0x6B34, 0x6B6D, 0x8082, 0x6B88, 0x6BE6, 0x6BE4,      0, 
+plane d2
+at 0x40
+  0x6BE8, 0x6BE3, 0x6BE2, 0x6BE7, 0x6C25, 0x6D7A, 0x6D63, 0x6D64, 
+  0x6D76, 0x6D0D, 0x6D61, 0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, 
+  0x6D91, 0x6D8D, 0x6DEF, 0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60, 
+  0x6D97, 0x6D70, 0x6D7C, 0x6D5F, 0x6D82, 0x6D98, 0x6D2F, 0x6D68, 
+  0x6D8B, 0x6D7E, 0x6D80, 0x6D84, 0x6D16, 0x6D83, 0x6D7B, 0x6D7D, 
+  0x6D75, 0x6D90, 0x70DC, 0x70D3, 0x70D1, 0x70DD, 0x70CB, 0x7F39, 
+  0x70E2, 0x70D7, 0x70D2, 0x70DE, 0x70E0, 0x70D4, 0x70CD, 0x70C5, 
+  0x70C6, 0x70C7, 0x70DA, 0x70CE, 0x70E1, 0x7242, 0x7278,      0, 
+at 0xA0
+       0, 0x7277, 0x7276, 0x7300, 0x72FA, 0x72F4, 0x72FE, 0x72F6, 
+  0x72F3, 0x72FB, 0x7301, 0x73D3, 0x73D9, 0x73E5, 0x73D6, 0x73BC, 
+  0x73E7, 0x73E3, 0x73E9, 0x73DC, 0x73D2, 0x73DB, 0x73D4, 0x73DD, 
+  0x73DA, 0x73D7, 0x73D8, 0x73E8, 0x74DE, 0x74DF, 0x74F4, 0x74F5, 
+  0x7521, 0x755B, 0x755F, 0x75B0, 0x75C1, 0x75BB, 0x75C4, 0x75C0, 
+  0x75BF, 0x75B6, 0x75BA, 0x768A, 0x76C9, 0x771D, 0x771B, 0x7710, 
+  0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, 0x771A, 0x7722, 
+  0x7727, 0x7823, 0x782C, 0x7822, 0x7835, 0x782F, 0x7828, 0x782E, 
+  0x782B, 0x7821, 0x7829, 0x7833, 0x782A, 0x7831, 0x7954, 0x795B, 
+  0x794F, 0x795C, 0x7953, 0x7952, 0x7951, 0x79EB, 0x79EC, 0x79E0, 
+  0x79EE, 0x79ED, 0x79EA, 0x79DC, 0x79DE, 0x79DD, 0x7A86, 0x7A89, 
+  0x7A85, 0x7A8B, 0x7A8C, 0x7A8A, 0x7A87, 0x7AD8, 0x7B10,      0, 
+plane d3
+at 0x40
+  0x7B04, 0x7B13, 0x7B05, 0x7B0F, 0x7B08, 0x7B0A, 0x7B0E, 0x7B09, 
+  0x7B12, 0x7C84, 0x7C91, 0x7C8A, 0x7C8C, 0x7C88, 0x7C8D, 0x7C85, 
+  0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, 0x7D18, 0x7D16, 0x7D13, 0x7D1F, 
+  0x7D12, 0x7D0F, 0x7D0C, 0x7F5C, 0x7F61, 0x7F5E, 0x7F60, 0x7F5D, 
+  0x7F5B, 0x7F96, 0x7F92, 0x7FC3, 0x7FC2, 0x7FC0, 0x8016, 0x803E, 
+  0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5, 0x8101, 0x80FB, 0x8100, 
+  0x8201, 0x822F, 0x8225, 0x8333, 0x832D, 0x8344, 0x8319, 0x8351, 
+  0x8325, 0x8356, 0x833F, 0x8341, 0x8326, 0x831C, 0x8322,      0, 
+at 0xA0
+       0, 0x8342, 0x834E, 0x831B, 0x832A, 0x8308, 0x833C, 0x834D, 
+  0x8316, 0x8324, 0x8320, 0x8337, 0x832F, 0x8329, 0x8347, 0x8345, 
+  0x834C, 0x8353, 0x831E, 0x832C, 0x834B, 0x8327, 0x8348, 0x8653, 
+  0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D, 0x8691, 0x869E, 0x8687, 
+  0x8697, 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699, 0x86A1, 
+  0x86A7, 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, 0x8843, 
+  0x8844, 0x886D, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887F, 
+  0x886F, 0x8883, 0x887E, 0x8874, 0x887C, 0x8A12, 0x8C47, 0x8C57, 
+  0x8C7B, 0x8CA4, 0x8CA3, 0x8D76, 0x8D78, 0x8DB5, 0x8DB7, 0x8DB6, 
+  0x8ED1, 0x8ED3, 0x8FFE, 0x8FF5, 0x9002, 0x8FFF, 0x8FFB, 0x9004, 
+  0x8FFC, 0x8FF6, 0x90D6, 0x90E0, 0x90D9, 0x90DA, 0x90E3, 0x90DF, 
+  0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC, 0x90E4, 0x9150,      0, 
+plane d4
+at 0x40
+  0x914E, 0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC, 
+  0x98E3, 0x9ADF, 0x9B2F, 0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E, 
+  0x5060, 0x5053, 0x504B, 0x505D, 0x5072, 0x5048, 0x504D, 0x5041, 
+  0x505B, 0x504A, 0x5062, 0x5015, 0x5045, 0x505F, 0x5069, 0x506B, 
+  0x5063, 0x5064, 0x5046, 0x5040, 0x506E, 0x5073, 0x5057, 0x5051, 
+  0x51D0, 0x526B, 0x526D, 0x526C, 0x526E, 0x52D6, 0x52D3, 0x532D, 
+  0x539C, 0x5575, 0x5576, 0x553C, 0x554D, 0x5550, 0x5534, 0x552A, 
+  0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545,      0, 
+at 0xA0
+       0, 0x550C, 0x5532, 0x5565, 0x554E, 0x5539, 0x5548, 0x552D, 
+  0x553B, 0x5540, 0x554B, 0x570A, 0x5707, 0x57FB, 0x5814, 0x57E2, 
+  0x57F6, 0x57DC, 0x57F4, 0x5800, 0x57ED, 0x57FD, 0x5808, 0x57F8, 
+  0x580B, 0x57F3, 0x57CF, 0x5807, 0x57EE, 0x57E3, 0x57F2, 0x57E5, 
+  0x57EC, 0x57E1, 0x580E, 0x57FC, 0x5810, 0x57E7, 0x5801, 0x580C, 
+  0x57F1, 0x57E9, 0x57F0, 0x580D, 0x5804, 0x595C, 0x5A60, 0x5A58, 
+  0x5A55, 0x5A67, 0x5A5E, 0x5A38, 0x5A35, 0x5A6D, 0x5A50, 0x5A5F, 
+  0x5A65, 0x5A6C, 0x5A53, 0x5A64, 0x5A57, 0x5A43, 0x5A5D, 0x5A52, 
+  0x5A44, 0x5A5B, 0x5A48, 0x5A8E, 0x5A3E, 0x5A4D, 0x5A39, 0x5A4C, 
+  0x5A70, 0x5A69, 0x5A47, 0x5A51, 0x5A56, 0x5A42, 0x5A5C, 0x5B72, 
+  0x5B6E, 0x5BC1, 0x5BC0, 0x5C59, 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A, 
+  0x5D20, 0x5D0C, 0x5D28, 0x5D0D, 0x5D26, 0x5D25, 0x5D0F,      0, 
+plane d5
+at 0x40
+  0x5D30, 0x5D12, 0x5D23, 0x5D1F, 0x5D2E, 0x5E3E, 0x5E34, 0x5EB1, 
+  0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3, 0x5F36, 0x5F38, 0x5F9B, 0x5F96, 
+  0x5F9F, 0x608A, 0x6090, 0x6086, 0x60BE, 0x60B0, 0x60BA, 0x60D3, 
+  0x60D4, 0x60CF, 0x60E4, 0x60D9, 0x60DD, 0x60C8, 0x60B1, 0x60DB, 
+  0x60B7, 0x60CA, 0x60BF, 0x60C3, 0x60CD, 0x60C0, 0x6332, 0x6365, 
+  0x638A, 0x6382, 0x637D, 0x63BD, 0x639E, 0x63AD, 0x639D, 0x6397, 
+  0x63AB, 0x638E, 0x636F, 0x6387, 0x6390, 0x636E, 0x63AF, 0x6375, 
+  0x639C, 0x636D, 0x63AE, 0x637C, 0x63A4, 0x633B, 0x639F,      0, 
+at 0xA0
+       0, 0x6378, 0x6385, 0x6381, 0x6391, 0x638D, 0x6370, 0x6553, 
+  0x65CD, 0x6665, 0x6661, 0x665B, 0x6659, 0x665C, 0x6662, 0x6718, 
+  0x6879, 0x6887, 0x6890, 0x689C, 0x686D, 0x686E, 0x68AE, 0x68AB, 
+  0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875, 0x6874, 0x68B2, 
+  0x688F, 0x6877, 0x6892, 0x687C, 0x686B, 0x6872, 0x68AA, 0x6880, 
+  0x6871, 0x687E, 0x689B, 0x6896, 0x688B, 0x68A0, 0x6889, 0x68A4, 
+  0x6878, 0x687B, 0x6891, 0x688C, 0x688A, 0x687D, 0x6B36, 0x6B33, 
+  0x6B37, 0x6B38, 0x6B91, 0x6B8F, 0x6B8D, 0x6B8E, 0x6B8C, 0x6C2A, 
+  0x6DC0, 0x6DAB, 0x6DB4, 0x6DB3, 0x6E74, 0x6DAC, 0x6DE9, 0x6DE2, 
+  0x6DB7, 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0, 0x6DDF, 0x6DD6, 
+  0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4, 0x6DCA, 0x6DBD, 
+  0x6DED, 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF, 0x6DC9,      0, 
+plane d6
+at 0x40
+  0x6DD0, 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3, 0x6DBB, 
+  0x70FA, 0x710D, 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, 0x7104, 
+  0x70F3, 0x7110, 0x70FC, 0x70FF, 0x7106, 0x7113, 0x7100, 0x70F8, 
+  0x70F6, 0x710B, 0x7102, 0x710E, 0x727E, 0x727B, 0x727C, 0x727F, 
+  0x731D, 0x7317, 0x7307, 0x7311, 0x7318, 0x730A, 0x7308, 0x72FF, 
+  0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8, 0x73F5, 0x7404, 0x7401, 
+  0x73FD, 0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C, 0x740B, 
+  0x73F4, 0x7408, 0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF,      0, 
+at 0xA0
+       0, 0x75CB, 0x75CC, 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, 
+  0x7739, 0x772F, 0x772D, 0x7731, 0x7732, 0x7734, 0x7733, 0x773D, 
+  0x7725, 0x773B, 0x7735, 0x7848, 0x7852, 0x7849, 0x784D, 0x784A, 
+  0x784C, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796A, 
+  0x7963, 0x796B, 0x7961, 0x79BB, 0x79FA, 0x79F8, 0x79F6, 0x79F7, 
+  0x7A8F, 0x7A94, 0x7A90, 0x7B35, 0x7B47, 0x7B34, 0x7B25, 0x7B30, 
+  0x7B22, 0x7B24, 0x7B33, 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B, 
+  0x7B2D, 0x7B2F, 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98, 
+  0x7C96, 0x7CA3, 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, 
+  0x7D2C, 0x7D29, 0x7D41, 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, 
+  0x7D28, 0x7F63, 0x7F95, 0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB, 
+  0x7FCD, 0x7FD0, 0x7FD1, 0x7FC7, 0x7FCF, 0x7FC9, 0x801F,      0, 
+plane d7
+at 0x40
+  0x801E, 0x801B, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, 
+  0x811B, 0x812D, 0x811F, 0x812C, 0x811E, 0x8121, 0x8115, 0x8127, 
+  0x811D, 0x8122, 0x8211, 0x8238, 0x8233, 0x823A, 0x8234, 0x8232, 
+  0x8274, 0x8390, 0x83A3, 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4, 
+  0x8374, 0x838F, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83A9, 
+  0x837D, 0x8383, 0x838C, 0x839D, 0x839B, 0x83AA, 0x838B, 0x837E, 
+  0x83A5, 0x83AF, 0x8388, 0x8397, 0x83B0, 0x837F, 0x83A6, 0x8387, 
+  0x83AE, 0x8376, 0x839A, 0x8659, 0x8656, 0x86BF, 0x86B7,      0, 
+at 0xA0
+       0, 0x86C2, 0x86C1, 0x86C5, 0x86BA, 0x86B0, 0x86C8, 0x86B9, 
+  0x86B3, 0x86B8, 0x86CC, 0x86B4, 0x86BB, 0x86BC, 0x86C3, 0x86BD, 
+  0x86BE, 0x8852, 0x8889, 0x8895, 0x88A8, 0x88A2, 0x88AA, 0x889A, 
+  0x8891, 0x88A1, 0x889F, 0x8898, 0x88A7, 0x8899, 0x889B, 0x8897, 
+  0x88A4, 0x88AC, 0x888C, 0x8893, 0x888E, 0x8982, 0x89D6, 0x89D9, 
+  0x89D5, 0x8A30, 0x8A27, 0x8A2C, 0x8A1E, 0x8C39, 0x8C3B, 0x8C5C, 
+  0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D, 0x8D7B, 0x8D79, 0x8DBC, 0x8DC2, 
+  0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8, 0x8EDE, 0x8EDD, 0x8EDC, 0x8ED7, 
+  0x8EE0, 0x8EE1, 0x9024, 0x900B, 0x9011, 0x901C, 0x900C, 0x9021, 
+  0x90EF, 0x90EA, 0x90F0, 0x90F4, 0x90F2, 0x90F3, 0x90D4, 0x90EB, 
+  0x90EC, 0x90E9, 0x9156, 0x9158, 0x915A, 0x9153, 0x9155, 0x91EC, 
+  0x91F4, 0x91F1, 0x91F3, 0x91F8, 0x91E4, 0x91F9, 0x91EA,      0, 
+plane d8
+at 0x40
+  0x91EB, 0x91F7, 0x91E8, 0x91EE, 0x957A, 0x9586, 0x9588, 0x967C, 
+  0x966D, 0x966B, 0x9671, 0x966F, 0x96BF, 0x976A, 0x9804, 0x98E5, 
+  0x9997, 0x509B, 0x5095, 0x5094, 0x509E, 0x508B, 0x50A3, 0x5083, 
+  0x508C, 0x508E, 0x509D, 0x5068, 0x509C, 0x5092, 0x5082, 0x5087, 
+  0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4, 0x53A7, 0x5591, 0x55A8, 
+  0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2, 0x5593, 0x5588, 0x558F, 
+  0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, 0x557D, 0x558C, 0x55A6, 
+  0x557F, 0x5595, 0x55A1, 0x558E, 0x570C, 0x5829, 0x5837,      0, 
+at 0xA0
+       0, 0x5819, 0x581E, 0x5827, 0x5823, 0x5828, 0x57F5, 0x5848, 
+  0x5825, 0x581C, 0x581B, 0x5833, 0x583F, 0x5836, 0x582E, 0x5839, 
+  0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, 0x5A94, 0x5A9F, 
+  0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5, 0x5AAC, 
+  0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83, 0x5A8B, 
+  0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93, 0x5A9D, 
+  0x5BEA, 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE, 0x5C0C, 
+  0x5C30, 0x5D37, 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F, 0x5D35, 
+  0x5D51, 0x5D4E, 0x5D55, 0x5D33, 0x5D3A, 0x5D52, 0x5D3D, 0x5D31, 
+  0x5D59, 0x5D42, 0x5D39, 0x5D49, 0x5D38, 0x5D3C, 0x5D32, 0x5D36, 
+  0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58, 0x5FA6, 0x5FA5, 0x5FAB, 
+  0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4, 0x6114,      0, 
+plane d9
+at 0x40
+  0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC, 
+  0x60FE, 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104, 
+  0x610B, 0x624A, 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8, 
+  0x63EF, 0x63C3, 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5, 
+  0x63F2, 0x63F5, 0x6461, 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4, 
+  0x63D8, 0x63D3, 0x63C2, 0x63C7, 0x63CC, 0x63CB, 0x63C8, 0x63F0, 
+  0x63D7, 0x63D9, 0x6532, 0x6567, 0x656A, 0x6564, 0x655C, 0x6568, 
+  0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0, 0x65D2,      0, 
+at 0xA0
+       0, 0x667C, 0x666C, 0x667B, 0x6680, 0x6671, 0x6679, 0x666A, 
+  0x6672, 0x6701, 0x690C, 0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC, 
+  0x68EA, 0x68F1, 0x690F, 0x68D6, 0x68F7, 0x68EB, 0x68E4, 0x68F6, 
+  0x6913, 0x6910, 0x68F3, 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970, 
+  0x68B4, 0x6911, 0x68EF, 0x68C6, 0x6914, 0x68F8, 0x68D0, 0x68FD, 
+  0x68FC, 0x68E8, 0x690B, 0x690A, 0x6917, 0x68CE, 0x68C8, 0x68DD, 
+  0x68DE, 0x68E6, 0x68F4, 0x68D1, 0x6906, 0x68D4, 0x68E9, 0x6915, 
+  0x6925, 0x68C7, 0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, 0x6B97, 
+  0x6B99, 0x6B95, 0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC, 
+  0x6E46, 0x6E47, 0x6E1F, 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45, 
+  0x6E62, 0x6E2B, 0x6E3F, 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33, 
+  0x6E4B, 0x6E40, 0x6E51, 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E,      0, 
+plane da
+at 0x40
+  0x6E68, 0x6E5C, 0x6E61, 0x6E31, 0x6E28, 0x6E60, 0x6E71, 0x6E6B, 
+  0x6E39, 0x6E22, 0x6E30, 0x6E53, 0x6E65, 0x6E27, 0x6E78, 0x6E64, 
+  0x6E77, 0x6E55, 0x6E79, 0x6E52, 0x6E66, 0x6E35, 0x6E36, 0x6E5A, 
+  0x7120, 0x711E, 0x712F, 0x70FB, 0x712E, 0x7131, 0x7123, 0x7125, 
+  0x7122, 0x7132, 0x711F, 0x7128, 0x713A, 0x711B, 0x724B, 0x725A, 
+  0x7288, 0x7289, 0x7286, 0x7285, 0x728B, 0x7312, 0x730B, 0x7330, 
+  0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732D, 0x7326, 0x7323, 
+  0x7335, 0x730C, 0x742E, 0x742C, 0x7430, 0x742B, 0x7416,      0, 
+at 0xA0
+       0, 0x741A, 0x7421, 0x742D, 0x7431, 0x7424, 0x7423, 0x741D, 
+  0x7429, 0x7420, 0x7432, 0x74FB, 0x752F, 0x756F, 0x756C, 0x75E7, 
+  0x75DA, 0x75E1, 0x75E6, 0x75DD, 0x75DF, 0x75E4, 0x75D7, 0x7695, 
+  0x7692, 0x76DA, 0x7746, 0x7747, 0x7744, 0x774D, 0x7745, 0x774A, 
+  0x774E, 0x774B, 0x774C, 0x77DE, 0x77EC, 0x7860, 0x7864, 0x7865, 
+  0x785C, 0x786D, 0x7871, 0x786A, 0x786E, 0x7870, 0x7869, 0x7868, 
+  0x785E, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, 0x7A02, 0x7A0A, 
+  0x7A03, 0x7A0C, 0x7A04, 0x7A99, 0x7AE6, 0x7AE4, 0x7B4A, 0x7B3B, 
+  0x7B44, 0x7B48, 0x7B4C, 0x7B4E, 0x7B40, 0x7B58, 0x7B45, 0x7CA2, 
+  0x7C9E, 0x7CA8, 0x7CA1, 0x7D58, 0x7D6F, 0x7D63, 0x7D53, 0x7D56, 
+  0x7D67, 0x7D6A, 0x7D4F, 0x7D6D, 0x7D5C, 0x7D6B, 0x7D52, 0x7D54, 
+  0x7D69, 0x7D51, 0x7D5F, 0x7D4E, 0x7F3E, 0x7F3F, 0x7F65,      0, 
+plane db
+at 0x40
+  0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, 0x8051, 0x804F, 0x8050, 
+  0x80FE, 0x80D4, 0x8143, 0x814A, 0x8152, 0x814F, 0x8147, 0x813D, 
+  0x814D, 0x813A, 0x81E6, 0x81EE, 0x81F7, 0x81F8, 0x81F9, 0x8204, 
+  0x823C, 0x823D, 0x823F, 0x8275, 0x833B, 0x83CF, 0x83F9, 0x8423, 
+  0x83C0, 0x83E8, 0x8412, 0x83E7, 0x83E4, 0x83FC, 0x83F6, 0x8410, 
+  0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF, 0x8401, 0x83DD, 0x83E5, 
+  0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, 0x83D6, 0x83F5, 0x83C9, 
+  0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, 0x83C2, 0x83F3,      0, 
+at 0xA0
+       0, 0x83D5, 0x83FA, 0x83C7, 0x83D1, 0x83EA, 0x8413, 0x83C3, 
+  0x83EC, 0x83EE, 0x83C4, 0x83FB, 0x83D7, 0x83E2, 0x841B, 0x83DB, 
+  0x83FE, 0x86D8, 0x86E2, 0x86E6, 0x86D3, 0x86E3, 0x86DA, 0x86EA, 
+  0x86DD, 0x86EB, 0x86DC, 0x86EC, 0x86E9, 0x86D7, 0x86E8, 0x86D1, 
+  0x8848, 0x8856, 0x8855, 0x88BA, 0x88D7, 0x88B9, 0x88B8, 0x88C0, 
+  0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD, 0x88B2, 0x8901, 0x88C9, 
+  0x8995, 0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB, 0x8A4E, 0x8A4D, 
+  0x8A39, 0x8A59, 0x8A40, 0x8A57, 0x8A58, 0x8A44, 0x8A45, 0x8A52, 
+  0x8A48, 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81, 0x8C80, 
+  0x8CBA, 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, 0x8D89, 
+  0x8DD8, 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6, 0x8DDC, 0x8DCF, 0x8DD5, 
+  0x8DD9, 0x8DC8, 0x8DD7, 0x8DC5, 0x8EEF, 0x8EF7, 0x8EFA,      0, 
+plane dc
+at 0x40
+  0x8EF9, 0x8EE6, 0x8EEE, 0x8EE5, 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6, 
+  0x8EEB, 0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9, 0x902D, 0x9034, 0x902F, 
+  0x9106, 0x912C, 0x9104, 0x90FF, 0x90FC, 0x9108, 0x90F9, 0x90FB, 
+  0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915F, 
+  0x9162, 0x9160, 0x9201, 0x920A, 0x9225, 0x9203, 0x921A, 0x9226, 
+  0x920F, 0x920C, 0x9200, 0x9212, 0x91FF, 0x91FD, 0x9206, 0x9204, 
+  0x9227, 0x9202, 0x921C, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, 
+  0x957B, 0x958D, 0x958C, 0x9590, 0x9687, 0x967E, 0x9688,      0, 
+at 0xA0
+       0, 0x9689, 0x9683, 0x9680, 0x96C2, 0x96C8, 0x96C3, 0x96F1, 
+  0x96F0, 0x976C, 0x9770, 0x976E, 0x9807, 0x98A9, 0x98EB, 0x9CE6, 
+  0x9EF9, 0x4E83, 0x4E84, 0x4EB6, 0x50BD, 0x50BF, 0x50C6, 0x50AE, 
+  0x50C4, 0x50CA, 0x50B4, 0x50C8, 0x50C2, 0x50B0, 0x50C1, 0x50BA, 
+  0x50B1, 0x50CB, 0x50C9, 0x50B6, 0x50B8, 0x51D7, 0x527A, 0x5278, 
+  0x527B, 0x527C, 0x55C3, 0x55DB, 0x55CC, 0x55D0, 0x55CB, 0x55CA, 
+  0x55DD, 0x55C0, 0x55D4, 0x55C4, 0x55E9, 0x55BF, 0x55D2, 0x558D, 
+  0x55CF, 0x55D5, 0x55E2, 0x55D6, 0x55C8, 0x55F2, 0x55CD, 0x55D9, 
+  0x55C2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584F, 0x584D, 0x5849, 
+  0x586F, 0x5855, 0x584E, 0x585D, 0x5859, 0x5865, 0x585B, 0x583D, 
+  0x5863, 0x5871, 0x58FC, 0x5AC7, 0x5AC4, 0x5ACB, 0x5ABA, 0x5AB8, 
+  0x5AB1, 0x5AB5, 0x5AB0, 0x5ABF, 0x5AC8, 0x5ABB, 0x5AC6,      0, 
+plane dd
+at 0x40
+  0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, 0x5AB6, 0x5ACD, 0x5AB9, 0x5A90, 
+  0x5BD6, 0x5BD8, 0x5BD9, 0x5C1F, 0x5C33, 0x5D71, 0x5D63, 0x5D4A, 
+  0x5D65, 0x5D72, 0x5D6C, 0x5D5E, 0x5D68, 0x5D67, 0x5D62, 0x5DF0, 
+  0x5E4F, 0x5E4E, 0x5E4A, 0x5E4D, 0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6, 
+  0x5ECB, 0x5EC7, 0x5F40, 0x5FAF, 0x5FAD, 0x60F7, 0x6149, 0x614A, 
+  0x612B, 0x6145, 0x6136, 0x6132, 0x612E, 0x6146, 0x612F, 0x614F, 
+  0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63C5, 
+  0x63F1, 0x63EB, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424,      0, 
+at 0xA0
+       0, 0x6433, 0x6443, 0x641F, 0x6415, 0x6418, 0x6439, 0x6437, 
+  0x6422, 0x6423, 0x640C, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 
+  0x642F, 0x640A, 0x641A, 0x6440, 0x6425, 0x6427, 0x640B, 0x63E7, 
+  0x641B, 0x642E, 0x6421, 0x640E, 0x656F, 0x6592, 0x65D3, 0x6686, 
+  0x668C, 0x6695, 0x6690, 0x668B, 0x668A, 0x6699, 0x6694, 0x6678, 
+  0x6720, 0x6966, 0x695F, 0x6938, 0x694E, 0x6962, 0x6971, 0x693F, 
+  0x6945, 0x696A, 0x6939, 0x6942, 0x6957, 0x6959, 0x697A, 0x6948, 
+  0x6949, 0x6935, 0x696C, 0x6933, 0x693D, 0x6965, 0x68F0, 0x6978, 
+  0x6934, 0x6969, 0x6940, 0x696F, 0x6944, 0x6976, 0x6958, 0x6941, 
+  0x6974, 0x694C, 0x693B, 0x694B, 0x6937, 0x695C, 0x694F, 0x6951, 
+  0x6932, 0x6952, 0x692F, 0x697B, 0x693C, 0x6B46, 0x6B45, 0x6B43, 
+  0x6B42, 0x6B48, 0x6B41, 0x6B9B, 0xFA0D, 0x6BFB, 0x6BFC,      0, 
+plane de
+at 0x40
+  0x6BF9, 0x6BF7, 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, 0x6E8F, 0x6EC0, 
+  0x6E9F, 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6, 0x6ED2, 
+  0x6EBD, 0x6EC1, 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, 0x6EA6, 
+  0x6ECF, 0x6EB2, 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, 0x6E92, 
+  0x6E8E, 0x6E8D, 0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, 0x6ED0, 0x6ECA, 
+  0x6E97, 0x6EAE, 0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160, 
+  0x7141, 0x715D, 0x7162, 0x7172, 0x7178, 0x716A, 0x7161, 0x7142, 
+  0x7158, 0x7143, 0x714B, 0x7170, 0x715F, 0x7150, 0x7153,      0, 
+at 0xA0
+       0, 0x7144, 0x714D, 0x715A, 0x724F, 0x728D, 0x728C, 0x7291, 
+  0x7290, 0x728E, 0x733C, 0x7342, 0x733B, 0x733A, 0x7340, 0x734A, 
+  0x7349, 0x7444, 0x744A, 0x744B, 0x7452, 0x7451, 0x7457, 0x7440, 
+  0x744F, 0x7450, 0x744E, 0x7442, 0x7446, 0x744D, 0x7454, 0x74E1, 
+  0x74FF, 0x74FE, 0x74FD, 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF, 
+  0x760F, 0x7603, 0x75F7, 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610, 
+  0x75FB, 0x75F6, 0x75ED, 0x75F5, 0x75FD, 0x7699, 0x76B5, 0x76DD, 
+  0x7755, 0x775F, 0x7760, 0x7752, 0x7756, 0x775A, 0x7769, 0x7767, 
+  0x7754, 0x7759, 0x776D, 0x77E0, 0x7887, 0x789A, 0x7894, 0x788F, 
+  0x7884, 0x7895, 0x7885, 0x7886, 0x78A1, 0x7883, 0x7879, 0x7899, 
+  0x7880, 0x7896, 0x787B, 0x797C, 0x7982, 0x797D, 0x7979, 0x7A11, 
+  0x7A18, 0x7A19, 0x7A12, 0x7A17, 0x7A15, 0x7A22, 0x7A13,      0, 
+plane df
+at 0x40
+  0x7A1B, 0x7A10, 0x7AA3, 0x7AA2, 0x7A9E, 0x7AEB, 0x7B66, 0x7B64, 
+  0x7B6D, 0x7B74, 0x7B69, 0x7B72, 0x7B65, 0x7B73, 0x7B71, 0x7B70, 
+  0x7B61, 0x7B78, 0x7B76, 0x7B63, 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88, 
+  0x7D86, 0x7D80, 0x7D8D, 0x7D7F, 0x7D85, 0x7D7A, 0x7D8E, 0x7D7B, 
+  0x7D83, 0x7D7C, 0x7D8C, 0x7D94, 0x7D84, 0x7D7D, 0x7D92, 0x7F6D, 
+  0x7F6B, 0x7F67, 0x7F68, 0x7F6C, 0x7FA6, 0x7FA5, 0x7FA7, 0x7FDB, 
+  0x7FDC, 0x8021, 0x8164, 0x8160, 0x8177, 0x815C, 0x8169, 0x815B, 
+  0x8162, 0x8172, 0x6721, 0x815E, 0x8176, 0x8167, 0x816F,      0, 
+at 0xA0
+       0, 0x8144, 0x8161, 0x821D, 0x8249, 0x8244, 0x8240, 0x8242, 
+  0x8245, 0x84F1, 0x843F, 0x8456, 0x8476, 0x8479, 0x848F, 0x848D, 
+  0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, 0x844D, 0x847D, 
+  0x845A, 0x8459, 0x8474, 0x8473, 0x845D, 0x8507, 0x845E, 0x8437, 
+  0x843A, 0x8434, 0x847A, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 
+  0x83D9, 0x844B, 0x842F, 0x8442, 0x842D, 0x845F, 0x8470, 0x8439, 
+  0x844E, 0x844C, 0x8452, 0x846F, 0x84C5, 0x848E, 0x843B, 0x8447, 
+  0x8436, 0x8433, 0x8468, 0x847E, 0x8444, 0x842B, 0x8460, 0x8454, 
+  0x846E, 0x8450, 0x870B, 0x8704, 0x86F7, 0x870C, 0x86FA, 0x86D6, 
+  0x86F5, 0x874D, 0x86F8, 0x870E, 0x8709, 0x8701, 0x86F6, 0x870D, 
+  0x8705, 0x88D6, 0x88CB, 0x88CD, 0x88CE, 0x88DE, 0x88DB, 0x88DA, 
+  0x88CC, 0x88D0, 0x8985, 0x899B, 0x89DF, 0x89E5, 0x89E4,      0, 
+plane e0
+at 0x40
+  0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, 0x8A76, 0x8A86, 0x8A7F, 
+  0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84, 0x8A75, 0x8A83, 0x8A81, 
+  0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, 0x8C4A, 0x8C65, 0x8C64, 0x8C66, 
+  0x8C86, 0x8C84, 0x8C85, 0x8CCC, 0x8D68, 0x8D69, 0x8D91, 0x8D8C, 
+  0x8D8E, 0x8D8F, 0x8D8D, 0x8D93, 0x8D94, 0x8D90, 0x8D92, 0x8DF0, 
+  0x8DE0, 0x8DEC, 0x8DF1, 0x8DEE, 0x8DD0, 0x8DE9, 0x8DE3, 0x8DE2, 
+  0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, 0x8F06, 0x8EFF, 0x8F01, 0x8F00, 
+  0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B, 0x9052, 0x903F,      0, 
+at 0xA0
+       0, 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F, 0x9111, 
+  0x9116, 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, 0x9248, 0x9252, 
+  0x9230, 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283, 0x922E, 
+  0x924A, 0x9246, 0x926D, 0x926C, 0x924F, 0x9260, 0x9267, 0x926F, 
+  0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 
+  0x924E, 0x9253, 0x924C, 0x9256, 0x9232, 0x959F, 0x959C, 0x959E, 
+  0x959B, 0x9692, 0x9693, 0x9691, 0x9697, 0x96CE, 0x96FA, 0x96FD, 
+  0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980F, 0x980D, 
+  0x980E, 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0, 0x99B5, 
+  0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, 0x9E80, 0x9EFD, 
+  0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA, 0x50DD, 
+  0x50E4, 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0,      0, 
+plane e1
+at 0x40
+  0x51D8, 0x5280, 0x5281, 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627, 
+  0x5615, 0x560C, 0x5612, 0x55FC, 0x560F, 0x561C, 0x5601, 0x5613, 
+  0x5602, 0x55FA, 0x561D, 0x5604, 0x55FF, 0x55F9, 0x5889, 0x587C, 
+  0x5890, 0x5898, 0x5886, 0x5881, 0x587F, 0x5874, 0x588B, 0x587A, 
+  0x5887, 0x5891, 0x588E, 0x5876, 0x5882, 0x5888, 0x587B, 0x5894, 
+  0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA, 
+  0x5ADA, 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC, 
+  0x5ADE, 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0,      0, 
+at 0xA0
+       0, 0x5BE3, 0x5C63, 0x5D82, 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, 
+  0x5D81, 0x5D77, 0x5D8A, 0x5D89, 0x5D88, 0x5D7E, 0x5D7C, 0x5D8D, 
+  0x5D79, 0x5D7F, 0x5E58, 0x5E59, 0x5E53, 0x5ED8, 0x5ED1, 0x5ED7, 
+  0x5ECE, 0x5EDC, 0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44, 0x5F43, 
+  0x5F6F, 0x5FB6, 0x612C, 0x6128, 0x6141, 0x615E, 0x6171, 0x6173, 
+  0x6152, 0x6153, 0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A, 
+  0x615B, 0x6165, 0x613B, 0x616A, 0x6161, 0x6156, 0x6229, 0x6227, 
+  0x622B, 0x642B, 0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472, 
+  0x6473, 0x647D, 0x6475, 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E, 
+  0x645C, 0x644B, 0x6453, 0x6460, 0x6450, 0x647F, 0x643F, 0x646C, 
+  0x646B, 0x6459, 0x6465, 0x6477, 0x6573, 0x65A0, 0x66A1, 0x66A0, 
+  0x669F, 0x6705, 0x6704, 0x6722, 0x69B1, 0x69B6, 0x69C9,      0, 
+plane e2
+at 0x40
+  0x69A0, 0x69CE, 0x6996, 0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999, 
+  0x698E, 0x69A7, 0x698D, 0x69A9, 0x69BE, 0x69AF, 0x69BF, 0x69C4, 
+  0x69BD, 0x69A4, 0x69D4, 0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3, 
+  0x6993, 0x69AA, 0x69A1, 0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2, 
+  0x69B5, 0x69A5, 0x69C6, 0x6B4A, 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F, 
+  0x6BA0, 0x6BC3, 0x6BC4, 0x6BFE, 0x6ECE, 0x6EF5, 0x6EF1, 0x6F03, 
+  0x6F25, 0x6EF8, 0x6F37, 0x6EFB, 0x6F2E, 0x6F09, 0x6F4E, 0x6F19, 
+  0x6F1A, 0x6F27, 0x6F18, 0x6F3B, 0x6F12, 0x6EED, 0x6F0A,      0, 
+at 0xA0
+       0, 0x6F36, 0x6F73, 0x6EF9, 0x6EEE, 0x6F2D, 0x6F40, 0x6F30, 
+  0x6F3C, 0x6F35, 0x6EEB, 0x6F07, 0x6F0E, 0x6F43, 0x6F05, 0x6EFD, 
+  0x6EF6, 0x6F39, 0x6F1C, 0x6EFC, 0x6F3A, 0x6F1F, 0x6F0D, 0x6F1E, 
+  0x6F08, 0x6F21, 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 
+  0x718F, 0x717B, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 
+  0x7295, 0x7293, 0x7343, 0x734D, 0x7351, 0x734C, 0x7462, 0x7473, 
+  0x7471, 0x7475, 0x7472, 0x7467, 0x746E, 0x7500, 0x7502, 0x7503, 
+  0x757D, 0x7590, 0x7616, 0x7608, 0x760C, 0x7615, 0x7611, 0x760A, 
+  0x7614, 0x76B8, 0x7781, 0x777C, 0x7785, 0x7782, 0x776E, 0x7780, 
+  0x776F, 0x777E, 0x7783, 0x78B2, 0x78AA, 0x78B4, 0x78AD, 0x78A8, 
+  0x787E, 0x78AB, 0x789E, 0x78A5, 0x78A0, 0x78AC, 0x78A2, 0x78A4, 
+  0x7998, 0x798A, 0x798B, 0x7996, 0x7995, 0x7994, 0x7993,      0, 
+plane e3
+at 0x40
+  0x7997, 0x7988, 0x7992, 0x7990, 0x7A2B, 0x7A4A, 0x7A30, 0x7A2F, 
+  0x7A28, 0x7A26, 0x7AA8, 0x7AAB, 0x7AAC, 0x7AEE, 0x7B88, 0x7B9C, 
+  0x7B8A, 0x7B91, 0x7B90, 0x7B96, 0x7B8D, 0x7B8C, 0x7B9B, 0x7B8E, 
+  0x7B85, 0x7B98, 0x5284, 0x7B99, 0x7BA4, 0x7B82, 0x7CBB, 0x7CBF, 
+  0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, 0x7DC2, 0x7DA3, 0x7DAA, 0x7DC1, 
+  0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, 0x7DC4, 0x7DC6, 0x7DCB, 0x7DCC, 
+  0x7DAF, 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, 0x7DA6, 0x7DAE, 0x7DA9, 
+  0x7DA1, 0x7DC9, 0x7F73, 0x7FE2, 0x7FE3, 0x7FE5, 0x7FDE,      0, 
+at 0xA0
+       0, 0x8024, 0x805D, 0x805C, 0x8189, 0x8186, 0x8183, 0x8187, 
+  0x818D, 0x818C, 0x818B, 0x8215, 0x8497, 0x84A4, 0x84A1, 0x849F, 
+  0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE, 0x84AB, 0x84B9, 0x84B4, 
+  0x84C1, 0x84CD, 0x84AA, 0x849A, 0x84B1, 0x84D0, 0x849D, 0x84A7, 
+  0x84BB, 0x84A2, 0x8494, 0x84C7, 0x84CC, 0x849B, 0x84A9, 0x84AF, 
+  0x84A8, 0x84D6, 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7, 0x84D4, 
+  0x84D2, 0x84DB, 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 
+  0x876B, 0x8740, 0x872E, 0x871E, 0x8721, 0x8719, 0x871B, 0x8743, 
+  0x872C, 0x8741, 0x873E, 0x8746, 0x8720, 0x8732, 0x872A, 0x872D, 
+  0x873C, 0x8712, 0x873A, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 
+  0x8738, 0x8724, 0x871A, 0x8730, 0x8711, 0x88F7, 0x88E7, 0x88F1, 
+  0x88F2, 0x88FA, 0x88FE, 0x88EE, 0x88FC, 0x88F6, 0x88FB,      0, 
+plane e4
+at 0x40
+  0x88F0, 0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F, 0x899E, 0x89E9, 
+  0x89EB, 0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96, 
+  0x8C3D, 0x8C68, 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09, 
+  0x8E02, 0x8DFF, 0x8E0D, 0x8DFD, 0x8E0A, 0x8E03, 0x8E07, 0x8E06, 
+  0x8E05, 0x8DFE, 0x8E00, 0x8E04, 0x8F10, 0x8F11, 0x8F0E, 0x8F0D, 
+  0x9123, 0x911C, 0x9120, 0x9122, 0x911F, 0x911D, 0x911A, 0x9124, 
+  0x9121, 0x911B, 0x917A, 0x9172, 0x9179, 0x9173, 0x92A5, 0x92A4, 
+  0x9276, 0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA, 0x928D,      0, 
+at 0xA0
+       0, 0x92A6, 0x929A, 0x92AB, 0x9279, 0x9297, 0x927F, 0x92A3, 
+  0x92EE, 0x928E, 0x9282, 0x9295, 0x92A2, 0x927D, 0x9288, 0x92A1, 
+  0x928A, 0x9286, 0x928C, 0x9299, 0x92A7, 0x927E, 0x9287, 0x92A9, 
+  0x929D, 0x928B, 0x922D, 0x969E, 0x96A1, 0x96FF, 0x9758, 0x977D, 
+  0x977A, 0x977E, 0x9783, 0x9780, 0x9782, 0x977B, 0x9784, 0x9781, 
+  0x977F, 0x97CE, 0x97CD, 0x9816, 0x98AD, 0x98AE, 0x9902, 0x9900, 
+  0x9907, 0x999D, 0x999C, 0x99C3, 0x99B9, 0x99BB, 0x99BA, 0x99C2, 
+  0x99BD, 0x99C7, 0x9AB1, 0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F, 0x9B60, 
+  0x9B61, 0x9B5F, 0x9CF1, 0x9CF2, 0x9CF5, 0x9EA7, 0x50FF, 0x5103, 
+  0x5130, 0x50F8, 0x5106, 0x5107, 0x50F6, 0x50FE, 0x510B, 0x510C, 
+  0x50FD, 0x510A, 0x528B, 0x528C, 0x52F1, 0x52EF, 0x5648, 0x5642, 
+  0x564C, 0x5635, 0x5641, 0x564A, 0x5649, 0x5646, 0x5658,      0, 
+plane e5
+at 0x40
+  0x565A, 0x5640, 0x5633, 0x563D, 0x562C, 0x563E, 0x5638, 0x562A, 
+  0x563A, 0x571A, 0x58AB, 0x589D, 0x58B1, 0x58A0, 0x58A3, 0x58AF, 
+  0x58AC, 0x58A5, 0x58A1, 0x58FF, 0x5AFF, 0x5AF4, 0x5AFD, 0x5AF7, 
+  0x5AF6, 0x5B03, 0x5AF8, 0x5B02, 0x5AF9, 0x5B01, 0x5B07, 0x5B05, 
+  0x5B0F, 0x5C67, 0x5D99, 0x5D97, 0x5D9F, 0x5D92, 0x5DA2, 0x5D93, 
+  0x5D95, 0x5DA0, 0x5D9C, 0x5DA1, 0x5D9A, 0x5D9E, 0x5E69, 0x5E5D, 
+  0x5E60, 0x5E5C, 0x7DF3, 0x5EDB, 0x5EDE, 0x5EE1, 0x5F49, 0x5FB2, 
+  0x618B, 0x6183, 0x6179, 0x61B1, 0x61B0, 0x61A2, 0x6189,      0, 
+at 0xA0
+       0, 0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F, 0x6192, 0x61AA, 
+  0x61A1, 0x618D, 0x6166, 0x61B3, 0x622D, 0x646E, 0x6470, 0x6496, 
+  0x64A0, 0x6485, 0x6497, 0x649C, 0x648F, 0x648B, 0x648A, 0x648C, 
+  0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576, 0x657A, 0x6579, 
+  0x657B, 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, 0x66B2, 0x66B7, 
+  0x66AA, 0x66AF, 0x6A00, 0x6A06, 0x6A17, 0x69E5, 0x69F8, 0x6A15, 
+  0x69F1, 0x69E4, 0x6A20, 0x69FF, 0x69EC, 0x69E2, 0x6A1B, 0x6A1D, 
+  0x69FE, 0x6A27, 0x69F2, 0x69EE, 0x6A14, 0x69F7, 0x69E7, 0x6A40, 
+  0x6A08, 0x69E6, 0x69FB, 0x6A0D, 0x69FC, 0x69EB, 0x6A09, 0x6A04, 
+  0x6A18, 0x6A25, 0x6A0F, 0x69F6, 0x6A26, 0x6A07, 0x69F4, 0x6A16, 
+  0x6B51, 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, 0x6C01, 0x6C00, 0x6BFF, 
+  0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6, 0x6F92,      0, 
+plane e6
+at 0x40
+  0x6F8D, 0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, 0x6F96, 
+  0x6F76, 0x6F6C, 0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50, 0x6F57, 
+  0x6F94, 0x6F93, 0x6F5D, 0x6F00, 0x6F61, 0x6F6B, 0x6F7D, 0x6F67, 
+  0x6F90, 0x6F53, 0x6F8B, 0x6F69, 0x6F7F, 0x6F95, 0x6F63, 0x6F77, 
+  0x6F6A, 0x6F7B, 0x71B2, 0x71AF, 0x719B, 0x71B0, 0x71A0, 0x719A, 
+  0x71A9, 0x71B5, 0x719D, 0x71A5, 0x719E, 0x71A4, 0x71A1, 0x71AA, 
+  0x719C, 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358, 0x7352, 0x735E, 
+  0x735F, 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, 0x7359,      0, 
+at 0xA0
+       0, 0x7362, 0x7487, 0x7489, 0x748A, 0x7486, 0x7481, 0x747D, 
+  0x7485, 0x7488, 0x747C, 0x7479, 0x7508, 0x7507, 0x757E, 0x7625, 
+  0x761E, 0x7619, 0x761D, 0x761C, 0x7623, 0x761A, 0x7628, 0x761B, 
+  0x769C, 0x769D, 0x769E, 0x769B, 0x778D, 0x778F, 0x7789, 0x7788, 
+  0x78CD, 0x78BB, 0x78CF, 0x78CC, 0x78D1, 0x78CE, 0x78D4, 0x78C8, 
+  0x78C3, 0x78C4, 0x78C9, 0x799A, 0x79A1, 0x79A0, 0x799C, 0x79A2, 
+  0x799B, 0x6B76, 0x7A39, 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB, 
+  0x7BBE, 0x7BAC, 0x7BCE, 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, 
+  0x7CC8, 0x7CCC, 0x7CCB, 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7, 
+  0x7DE1, 0x7E03, 0x7DFA, 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, 
+  0x7DDF, 0x7F76, 0x7FAC, 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, 
+  0x7FEC, 0x7FE6, 0x7FE8, 0x8064, 0x8067, 0x81A3, 0x819F,      0, 
+plane e7
+at 0x40
+  0x819E, 0x8195, 0x81A2, 0x8199, 0x8197, 0x8216, 0x824F, 0x8253, 
+  0x8252, 0x8250, 0x824E, 0x8251, 0x8524, 0x853B, 0x850F, 0x8500, 
+  0x8529, 0x850E, 0x8509, 0x850D, 0x851F, 0x850A, 0x8527, 0x851C, 
+  0x84FB, 0x852B, 0x84FA, 0x8508, 0x850C, 0x84F4, 0x852A, 0x84F2, 
+  0x8515, 0x84F7, 0x84EB, 0x84F3, 0x84FC, 0x8512, 0x84EA, 0x84E9, 
+  0x8516, 0x84FE, 0x8528, 0x851D, 0x852E, 0x8502, 0x84FD, 0x851E, 
+  0x84F6, 0x8531, 0x8526, 0x84E7, 0x84E8, 0x84F0, 0x84EF, 0x84F9, 
+  0x8518, 0x8520, 0x8530, 0x850B, 0x8519, 0x852F, 0x8662,      0, 
+at 0xA0
+       0, 0x8756, 0x8763, 0x8764, 0x8777, 0x87E1, 0x8773, 0x8758, 
+  0x8754, 0x875B, 0x8752, 0x8761, 0x875A, 0x8751, 0x875E, 0x876D, 
+  0x876A, 0x8750, 0x874E, 0x875F, 0x875D, 0x876F, 0x876C, 0x877A, 
+  0x876E, 0x875C, 0x8765, 0x874F, 0x877B, 0x8775, 0x8762, 0x8767, 
+  0x8769, 0x885A, 0x8905, 0x890C, 0x8914, 0x890B, 0x8917, 0x8918, 
+  0x8919, 0x8906, 0x8916, 0x8911, 0x890E, 0x8909, 0x89A2, 0x89A4, 
+  0x89A3, 0x89ED, 0x89F0, 0x89EC, 0x8ACF, 0x8AC6, 0x8AB8, 0x8AD3, 
+  0x8AD1, 0x8AD4, 0x8AD5, 0x8ABB, 0x8AD7, 0x8ABE, 0x8AC0, 0x8AC5, 
+  0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD, 0x8AD9, 0x8C3E, 0x8C4D, 0x8C8F, 
+  0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8, 0x8CDA, 0x8CDD, 0x8CE7, 0x8DA0, 
+  0x8D9C, 0x8DA1, 0x8D9B, 0x8E20, 0x8E23, 0x8E25, 0x8E24, 0x8E2E, 
+  0x8E15, 0x8E1B, 0x8E16, 0x8E11, 0x8E19, 0x8E26, 0x8E27,      0, 
+plane e8
+at 0x40
+  0x8E14, 0x8E12, 0x8E18, 0x8E13, 0x8E1C, 0x8E17, 0x8E1A, 0x8F2C, 
+  0x8F24, 0x8F18, 0x8F1A, 0x8F20, 0x8F23, 0x8F16, 0x8F17, 0x9073, 
+  0x9070, 0x906F, 0x9067, 0x906B, 0x912F, 0x912B, 0x9129, 0x912A, 
+  0x9132, 0x9126, 0x912E, 0x9185, 0x9186, 0x918A, 0x9181, 0x9182, 
+  0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4, 0x92C0, 0x92D9, 0x92B6, 
+  0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9, 0x92D7, 0x92DD, 0x92CC, 
+  0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8, 0x92CE, 0x92E6, 0x92CD, 
+  0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7, 0x92D1, 0x92D3,      0, 
+at 0xA0
+       0, 0x92B5, 0x92E1, 0x92C6, 0x92B4, 0x957C, 0x95AC, 0x95AB, 
+  0x95AE, 0x95B0, 0x96A4, 0x96A2, 0x96D3, 0x9705, 0x9708, 0x9702, 
+  0x975A, 0x978A, 0x978E, 0x9788, 0x97D0, 0x97CF, 0x981E, 0x981D, 
+  0x9826, 0x9829, 0x9828, 0x9820, 0x981B, 0x9827, 0x98B2, 0x9908, 
+  0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99DC, 0x99CD, 
+  0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8, 0x99CB, 
+  0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2, 0x9AF1, 
+  0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76, 0x9B75, 
+  0x9B70, 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD, 0x9CFF, 
+  0x9CF7, 0x9D07, 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, 0x9D05, 0x9D04, 
+  0x9E83, 0x9ED3, 0x9F0F, 0x9F10, 0x511C, 0x5113, 0x5117, 0x511A, 
+  0x5111, 0x51DE, 0x5334, 0x53E1, 0x5670, 0x5660, 0x566E,      0, 
+plane e9
+at 0x40
+  0x5673, 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, 0x5677, 0x571C, 
+  0x571B, 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, 0x58BC, 
+  0x58C6, 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10, 
+  0x5B16, 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1, 
+  0x5DA9, 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2, 
+  0x5DAD, 0x5DAF, 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, 0x5EE9, 
+  0x5EE7, 0x5EE6, 0x5EE8, 0x5EE5, 0x5F4B, 0x5FBC, 0x619D, 0x61A8, 
+  0x6196, 0x61C5, 0x61B4, 0x61C6, 0x61C1, 0x61CC, 0x61BA,      0, 
+at 0xA0
+       0, 0x61BF, 0x61B8, 0x618C, 0x64D7, 0x64D6, 0x64D0, 0x64CF, 
+  0x64C9, 0x64BD, 0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9, 0x6533, 
+  0x657F, 0x657C, 0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB, 
+  0x66CF, 0x66BD, 0x66BB, 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66, 
+  0x6A49, 0x6A67, 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76, 
+  0x6A5B, 0x6A51, 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A, 
+  0x6A64, 0x6A50, 0x6A4F, 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, 
+  0x6A5E, 0x6A56, 0x6A55, 0x6A4D, 0x6A4E, 0x6A46, 0x6B55, 0x6B54, 
+  0x6B56, 0x6BA7, 0x6BAA, 0x6BAB, 0x6BC8, 0x6BC7, 0x6C04, 0x6C03, 
+  0x6C06, 0x6FAD, 0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC, 0x6FCE, 0x6FC8, 
+  0x6F5E, 0x6FC4, 0x6FBD, 0x6F9E, 0x6FCA, 0x6FA8, 0x7004, 0x6FA5, 
+  0x6FAE, 0x6FBA, 0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8,      0, 
+plane ea
+at 0x40
+  0x6FA2, 0x6FC9, 0x6FAB, 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, 
+  0x71C2, 0x71BF, 0x71B8, 0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4, 
+  0x71CA, 0x71C7, 0x71CF, 0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA, 
+  0x71DB, 0x729D, 0x729E, 0x7369, 0x7366, 0x7367, 0x736C, 0x7365, 
+  0x736B, 0x736A, 0x747F, 0x749A, 0x74A0, 0x7494, 0x7492, 0x7495, 
+  0x74A1, 0x750B, 0x7580, 0x762F, 0x762D, 0x7631, 0x763D, 0x7633, 
+  0x763C, 0x7635, 0x7632, 0x7630, 0x76BB, 0x76E6, 0x779A, 0x779D, 
+  0x77A1, 0x779C, 0x779B, 0x77A2, 0x77A3, 0x7795, 0x7799,      0, 
+at 0xA0
+       0, 0x7797, 0x78DD, 0x78E9, 0x78E5, 0x78EA, 0x78DE, 0x78E3, 
+  0x78DB, 0x78E1, 0x78E2, 0x78ED, 0x78DF, 0x78E0, 0x79A4, 0x7A44, 
+  0x7A48, 0x7A47, 0x7AB6, 0x7AB8, 0x7AB5, 0x7AB1, 0x7AB7, 0x7BDE, 
+  0x7BE3, 0x7BE7, 0x7BDD, 0x7BD5, 0x7BE5, 0x7BDA, 0x7BE8, 0x7BF9, 
+  0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, 0x7BEB, 0x7BD8, 0x7BDF, 0x7CD2, 
+  0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, 0x7E12, 0x7E21, 0x7E17, 0x7E0C, 
+  0x7E1F, 0x7E20, 0x7E13, 0x7E0E, 0x7E1C, 0x7E15, 0x7E1A, 0x7E22, 
+  0x7E0B, 0x7E0F, 0x7E16, 0x7E0D, 0x7E14, 0x7E25, 0x7E24, 0x7F43, 
+  0x7F7B, 0x7F7C, 0x7F7A, 0x7FB1, 0x7FEF, 0x802A, 0x8029, 0x806C, 
+  0x81B1, 0x81A6, 0x81AE, 0x81B9, 0x81B5, 0x81AB, 0x81B0, 0x81AC, 
+  0x81B4, 0x81B2, 0x81B7, 0x81A7, 0x81F2, 0x8255, 0x8256, 0x8257, 
+  0x8556, 0x8545, 0x856B, 0x854D, 0x8553, 0x8561, 0x8558,      0, 
+plane eb
+at 0x40
+  0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547, 
+  0x8563, 0x853E, 0x855B, 0x8571, 0x854E, 0x856E, 0x8575, 0x8555, 
+  0x8567, 0x8560, 0x858C, 0x8566, 0x855D, 0x8554, 0x8565, 0x856C, 
+  0x8663, 0x8665, 0x8664, 0x879B, 0x878F, 0x8797, 0x8793, 0x8792, 
+  0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87A3, 0x8785, 
+  0x8790, 0x8791, 0x879D, 0x8784, 0x8794, 0x879C, 0x879A, 0x8789, 
+  0x891E, 0x8926, 0x8930, 0x892D, 0x892E, 0x8927, 0x8931, 0x8922, 
+  0x8929, 0x8923, 0x892F, 0x892C, 0x891F, 0x89F1, 0x8AE0,      0, 
+at 0xA0
+       0, 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, 0x8ADD, 0x8B14, 0x8AE4, 
+  0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1, 0x8AE8, 0x8AFF, 0x8AEF, 
+  0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5, 0x8CEE, 0x8CF1, 0x8CF0, 
+  0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33, 0x8E3E, 0x8E38, 
+  0x8E40, 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30, 0x8E3F, 
+  0x8EBD, 0x8F36, 0x8F2E, 0x8F35, 0x8F32, 0x8F39, 0x8F37, 0x8F34, 
+  0x9076, 0x9079, 0x907B, 0x9086, 0x90FA, 0x9133, 0x9135, 0x9136, 
+  0x9193, 0x9190, 0x9191, 0x918D, 0x918F, 0x9327, 0x931E, 0x9308, 
+  0x931F, 0x9306, 0x930F, 0x937A, 0x9338, 0x933C, 0x931B, 0x9323, 
+  0x9312, 0x9301, 0x9346, 0x932D, 0x930E, 0x930D, 0x92CB, 0x931D, 
+  0x92FA, 0x9325, 0x9313, 0x92F9, 0x92F7, 0x9334, 0x9302, 0x9324, 
+  0x92FF, 0x9329, 0x9339, 0x9335, 0x932A, 0x9314, 0x930C,      0, 
+plane ec
+at 0x40
+  0x930B, 0x92FE, 0x9309, 0x9300, 0x92FB, 0x9316, 0x95BC, 0x95CD, 
+  0x95BE, 0x95B9, 0x95BA, 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9, 
+  0x96D4, 0x970B, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97F0, 
+  0x97F8, 0x9835, 0x982F, 0x9832, 0x9924, 0x991F, 0x9927, 0x9929, 
+  0x999E, 0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0, 0x99E3, 0x99EA, 
+  0x99E9, 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, 0x9AF6, 0x9AFA, 
+  0x9AF9, 0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87, 0x9B7C, 0x9B7E, 
+  0x9B7B, 0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A, 0x9B95,      0, 
+at 0xA0
+       0, 0x9B7D, 0x9B88, 0x9D25, 0x9D17, 0x9D20, 0x9D1E, 0x9D14, 
+  0x9D29, 0x9D1D, 0x9D18, 0x9D22, 0x9D10, 0x9D19, 0x9D1F, 0x9E88, 
+  0x9E86, 0x9E87, 0x9EAE, 0x9EAD, 0x9ED5, 0x9ED6, 0x9EFA, 0x9F12, 
+  0x9F3D, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52F4, 
+  0x5693, 0x568C, 0x568D, 0x5686, 0x5684, 0x5683, 0x567E, 0x5682, 
+  0x567F, 0x5681, 0x58D6, 0x58D4, 0x58CF, 0x58D2, 0x5B2D, 0x5B25, 
+  0x5B32, 0x5B23, 0x5B2C, 0x5B27, 0x5B26, 0x5B2F, 0x5B2E, 0x5B7B, 
+  0x5BF1, 0x5BF2, 0x5DB7, 0x5E6C, 0x5E6A, 0x5FBE, 0x5FBB, 0x61C3, 
+  0x61B5, 0x61BC, 0x61E7, 0x61E0, 0x61E5, 0x61E4, 0x61E8, 0x61DE, 
+  0x64EF, 0x64E9, 0x64E3, 0x64EB, 0x64E4, 0x64E8, 0x6581, 0x6580, 
+  0x65B6, 0x65DA, 0x66D2, 0x6A8D, 0x6A96, 0x6A81, 0x6AA5, 0x6A89, 
+  0x6A9F, 0x6A9B, 0x6AA1, 0x6A9E, 0x6A87, 0x6A93, 0x6A8E,      0, 
+plane ed
+at 0x40
+  0x6A95, 0x6A83, 0x6AA8, 0x6AA4, 0x6A91, 0x6A7F, 0x6AA6, 0x6A9A, 
+  0x6A85, 0x6A8C, 0x6A92, 0x6B5B, 0x6BAD, 0x6C09, 0x6FCC, 0x6FA9, 
+  0x6FF4, 0x6FD4, 0x6FE3, 0x6FDC, 0x6FED, 0x6FE7, 0x6FE6, 0x6FDE, 
+  0x6FF2, 0x6FDD, 0x6FE2, 0x6FE8, 0x71E1, 0x71F1, 0x71E8, 0x71F2, 
+  0x71E4, 0x71F0, 0x71E2, 0x7373, 0x736E, 0x736F, 0x7497, 0x74B2, 
+  0x74AB, 0x7490, 0x74AA, 0x74AD, 0x74B1, 0x74A5, 0x74AF, 0x7510, 
+  0x7511, 0x7512, 0x750F, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647, 
+  0x76A4, 0x76E9, 0x77B5, 0x77AB, 0x77B2, 0x77B7, 0x77B6,      0, 
+at 0xA0
+       0, 0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3, 0x78FD, 0x7902, 
+  0x78FB, 0x78FC, 0x78F2, 0x7905, 0x78F9, 0x78FE, 0x7904, 0x79AB, 
+  0x79A8, 0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54, 0x7A5A, 0x7ABE, 
+  0x7AC0, 0x7AC1, 0x7C05, 0x7C0F, 0x7BF2, 0x7C00, 0x7BFF, 0x7BFB, 
+  0x7C0E, 0x7BF4, 0x7C0B, 0x7BF3, 0x7C02, 0x7C09, 0x7C03, 0x7C01, 
+  0x7BF8, 0x7BFD, 0x7C06, 0x7BF0, 0x7BF1, 0x7C10, 0x7C0A, 0x7CE8, 
+  0x7E2D, 0x7E3C, 0x7E42, 0x7E33, 0x9848, 0x7E38, 0x7E2A, 0x7E49, 
+  0x7E40, 0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B, 0x7E36, 0x7E44, 
+  0x7E3A, 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, 0x7FF2, 0x802C, 
+  0x81BB, 0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7, 0x81BC, 0x81E9, 
+  0x825B, 0x825A, 0x825C, 0x8583, 0x8580, 0x858F, 0x85A7, 0x8595, 
+  0x85A0, 0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A, 0x859E,      0, 
+plane ee
+at 0x40
+  0x8577, 0x857C, 0x8589, 0x85A1, 0x857A, 0x8578, 0x8557, 0x858E, 
+  0x8596, 0x8586, 0x858D, 0x8599, 0x859D, 0x8581, 0x85A2, 0x8582, 
+  0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859F, 0x8668, 
+  0x87BE, 0x87AA, 0x87AD, 0x87C5, 0x87B0, 0x87AC, 0x87B9, 0x87B5, 
+  0x87BC, 0x87AE, 0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7, 0x87AF, 
+  0x87C4, 0x87CA, 0x87B4, 0x87B6, 0x87BF, 0x87B8, 0x87BD, 0x87DE, 
+  0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941, 0x8952, 0x8937, 
+  0x8942, 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E,      0, 
+at 0xA0
+       0, 0x8B18, 0x8B16, 0x8B11, 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, 
+  0x8B12, 0x8B15, 0x8B07, 0x8B0D, 0x8B08, 0x8B06, 0x8B1C, 0x8B13, 
+  0x8B1A, 0x8C4F, 0x8C70, 0x8C72, 0x8C71, 0x8C6F, 0x8C95, 0x8C94, 
+  0x8CF9, 0x8D6F, 0x8E4E, 0x8E4D, 0x8E53, 0x8E50, 0x8E4C, 0x8E47, 
+  0x8F43, 0x8F40, 0x9085, 0x907E, 0x9138, 0x919A, 0x91A2, 0x919B, 
+  0x9199, 0x919F, 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF, 
+  0x9364, 0x9356, 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349, 
+  0x9350, 0x9351, 0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379, 
+  0x9357, 0x9355, 0x9352, 0x934F, 0x9371, 0x9377, 0x937B, 0x9361, 
+  0x935E, 0x9363, 0x9367, 0x9380, 0x934E, 0x9359, 0x95C7, 0x95C0, 
+  0x95C9, 0x95C3, 0x95C5, 0x95B7, 0x96AE, 0x96B0, 0x96AC, 0x9720, 
+  0x971F, 0x9718, 0x971D, 0x9719, 0x979A, 0x97A1, 0x979C,      0, 
+plane ef
+at 0x40
+  0x979E, 0x979D, 0x97D5, 0x97D4, 0x97F1, 0x9841, 0x9844, 0x984A, 
+  0x9849, 0x9845, 0x9843, 0x9925, 0x992B, 0x992C, 0x992A, 0x9933, 
+  0x9932, 0x992F, 0x992D, 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1, 
+  0x9A02, 0x99FA, 0x99F4, 0x99F7, 0x99F9, 0x99F8, 0x99F6, 0x99FB, 
+  0x99FD, 0x99FE, 0x99FC, 0x9A03, 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01, 
+  0x9AFC, 0x9B48, 0x9B9A, 0x9BA8, 0x9B9E, 0x9B9B, 0x9BA6, 0x9BA1, 
+  0x9BA5, 0x9BA4, 0x9B86, 0x9BA2, 0x9BA0, 0x9BAF, 0x9D33, 0x9D41, 
+  0x9D67, 0x9D36, 0x9D2E, 0x9D2F, 0x9D31, 0x9D38, 0x9D30,      0, 
+at 0xA0
+       0, 0x9D45, 0x9D42, 0x9D43, 0x9D3E, 0x9D37, 0x9D40, 0x9D3D, 
+  0x7FF5, 0x9D2D, 0x9E8A, 0x9E89, 0x9E8D, 0x9EB0, 0x9EC8, 0x9EDA, 
+  0x9EFB, 0x9EFF, 0x9F24, 0x9F23, 0x9F22, 0x9F54, 0x9FA0, 0x5131, 
+  0x512D, 0x512E, 0x5698, 0x569C, 0x5697, 0x569A, 0x569D, 0x5699, 
+  0x5970, 0x5B3C, 0x5C69, 0x5C6A, 0x5DC0, 0x5E6D, 0x5E6E, 0x61D8, 
+  0x61DF, 0x61ED, 0x61EE, 0x61F1, 0x61EA, 0x61F0, 0x61EB, 0x61D6, 
+  0x61E9, 0x64FF, 0x6504, 0x64FD, 0x64F8, 0x6501, 0x6503, 0x64FC, 
+  0x6594, 0x65DB, 0x66DA, 0x66DB, 0x66D8, 0x6AC5, 0x6AB9, 0x6ABD, 
+  0x6AE1, 0x6AC6, 0x6ABA, 0x6AB6, 0x6AB7, 0x6AC7, 0x6AB4, 0x6AAD, 
+  0x6B5E, 0x6BC9, 0x6C0B, 0x7007, 0x700C, 0x700D, 0x7001, 0x7005, 
+  0x7014, 0x700E, 0x6FFF, 0x7000, 0x6FFB, 0x7026, 0x6FFC, 0x6FF7, 
+  0x700A, 0x7201, 0x71FF, 0x71F9, 0x7203, 0x71FD, 0x7376,      0, 
+plane f0
+at 0x40
+  0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE, 0x74B6, 0x74BB, 0x74C2, 
+  0x7514, 0x7513, 0x765C, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657, 
+  0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2, 0x77BA, 0x78FF, 0x790C, 
+  0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79AD, 0x79AC, 
+  0x7A5F, 0x7C1C, 0x7C29, 0x7C19, 0x7C20, 0x7C1F, 0x7C2D, 0x7C1D, 
+  0x7C26, 0x7C28, 0x7C22, 0x7C25, 0x7C30, 0x7E5C, 0x7E50, 0x7E56, 
+  0x7E63, 0x7E58, 0x7E62, 0x7E5F, 0x7E51, 0x7E60, 0x7E57, 0x7E53, 
+  0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, 0x8075, 0x81D1, 0x81D2,      0, 
+at 0xA0
+       0, 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0, 0x85C3, 
+  0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF, 0x85CB, 
+  0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, 0x8624, 0x85B8, 
+  0x85B7, 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, 0x87DB, 0x87EB, 
+  0x87EA, 0x87E5, 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC, 0x87D3, 
+  0x87ED, 0x87D8, 0x87E3, 0x87A4, 0x87D7, 0x87D9, 0x8801, 0x87F4, 
+  0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F, 0x894C, 0x8946, 0x8950, 
+  0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, 0x8B30, 0x8B35, 
+  0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37, 0x8B26, 
+  0x8B36, 0x8B2E, 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42, 0x8C75, 
+  0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04, 0x8D02, 0x8D00, 0x8E5C, 
+  0x8E62, 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67,      0, 
+plane f1
+at 0x40
+  0x8E5B, 0x8E5A, 0x8E61, 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47, 
+  0x8F48, 0x8F4B, 0x9128, 0x913A, 0x913B, 0x913E, 0x91A8, 0x91A5, 
+  0x91A7, 0x91AF, 0x91AA, 0x93B5, 0x938C, 0x9392, 0x93B7, 0x939B, 
+  0x939D, 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E, 0x93A6, 0x9395, 
+  0x9388, 0x9399, 0x939F, 0x938D, 0x93B1, 0x9391, 0x93B2, 0x93A4, 
+  0x93A8, 0x93B4, 0x93A3, 0x93A5, 0x95D2, 0x95D3, 0x95D1, 0x96B3, 
+  0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722, 
+  0x9725, 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA,      0, 
+at 0xA0
+       0, 0x97A2, 0x97A5, 0x97D7, 0x97D9, 0x97D6, 0x97D8, 0x97FA, 
+  0x9850, 0x9851, 0x9852, 0x98B8, 0x9941, 0x993C, 0x993A, 0x9A0F, 
+  0x9A0B, 0x9A09, 0x9A0D, 0x9A04, 0x9A11, 0x9A0A, 0x9A05, 0x9A07, 
+  0x9A06, 0x9AC0, 0x9ADC, 0x9B08, 0x9B04, 0x9B05, 0x9B29, 0x9B35, 
+  0x9B4A, 0x9B4C, 0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF, 0x9BC1, 
+  0x9BB5, 0x9BB8, 0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C, 
+  0x9D53, 0x9D4F, 0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C, 
+  0x9D57, 0x9D52, 0x9D54, 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C, 
+  0x9EDF, 0x9F01, 0x9F00, 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29, 
+  0x9F28, 0x9F4C, 0x9F55, 0x5134, 0x5135, 0x5296, 0x52F7, 0x53B4, 
+  0x56AB, 0x56AD, 0x56A6, 0x56A7, 0x56AA, 0x56AC, 0x58DA, 0x58DD, 
+  0x58DB, 0x5912, 0x5B3D, 0x5B3E, 0x5B3F, 0x5DC3, 0x5E70,      0, 
+plane f2
+at 0x40
+  0x5FBF, 0x61FB, 0x6507, 0x6510, 0x650D, 0x6509, 0x650C, 0x650E, 
+  0x6584, 0x65DE, 0x65DD, 0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1, 
+  0x6AD9, 0x6ACB, 0x6ADF, 0x6ADC, 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD, 
+  0x6ADE, 0x6B60, 0x6BB0, 0x6C0C, 0x7019, 0x7027, 0x7020, 0x7016, 
+  0x702B, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701C, 
+  0x702A, 0x720C, 0x720A, 0x7207, 0x7202, 0x7205, 0x72A5, 0x72A6, 
+  0x72A4, 0x72A3, 0x72A1, 0x74CB, 0x74C5, 0x74B7, 0x74C3, 0x7516, 
+  0x7660, 0x77C9, 0x77CA, 0x77C4, 0x77F1, 0x791D, 0x791B,      0, 
+at 0xA0
+       0, 0x7921, 0x791C, 0x7917, 0x791E, 0x79B0, 0x7A67, 0x7A68, 
+  0x7C33, 0x7C3C, 0x7C39, 0x7C2C, 0x7C3B, 0x7CEC, 0x7CEA, 0x7E76, 
+  0x7E75, 0x7E78, 0x7E70, 0x7E77, 0x7E6F, 0x7E7A, 0x7E72, 0x7E74, 
+  0x7E68, 0x7F4B, 0x7F4A, 0x7F83, 0x7F86, 0x7FB7, 0x7FFD, 0x7FFE, 
+  0x8078, 0x81D7, 0x81D5, 0x8264, 0x8261, 0x8263, 0x85EB, 0x85F1, 
+  0x85ED, 0x85D9, 0x85E1, 0x85E8, 0x85DA, 0x85D7, 0x85EC, 0x85F2, 
+  0x85F8, 0x85D8, 0x85DF, 0x85E3, 0x85DC, 0x85D1, 0x85F0, 0x85E6, 
+  0x85EF, 0x85DE, 0x85E2, 0x8800, 0x87FA, 0x8803, 0x87F6, 0x87F7, 
+  0x8809, 0x880C, 0x880B, 0x8806, 0x87FC, 0x8808, 0x87FF, 0x880A, 
+  0x8802, 0x8962, 0x895A, 0x895B, 0x8957, 0x8961, 0x895C, 0x8958, 
+  0x895D, 0x8959, 0x8988, 0x89B7, 0x89B6, 0x89F6, 0x8B50, 0x8B48, 
+  0x8B4A, 0x8B40, 0x8B53, 0x8B56, 0x8B54, 0x8B4B, 0x8B55,      0, 
+plane f3
+at 0x40
+  0x8B51, 0x8B42, 0x8B52, 0x8B57, 0x8C43, 0x8C77, 0x8C76, 0x8C9A, 
+  0x8D06, 0x8D07, 0x8D09, 0x8DAC, 0x8DAA, 0x8DAD, 0x8DAB, 0x8E6D, 
+  0x8E78, 0x8E73, 0x8E6A, 0x8E6F, 0x8E7B, 0x8EC2, 0x8F52, 0x8F51, 
+  0x8F4F, 0x8F50, 0x8F53, 0x8FB4, 0x9140, 0x913F, 0x91B0, 0x91AD, 
+  0x93DE, 0x93C7, 0x93CF, 0x93C2, 0x93DA, 0x93D0, 0x93F9, 0x93EC, 
+  0x93CC, 0x93D9, 0x93A9, 0x93E6, 0x93CA, 0x93D4, 0x93EE, 0x93E3, 
+  0x93D5, 0x93C4, 0x93CE, 0x93C0, 0x93D2, 0x93E7, 0x957D, 0x95DA, 
+  0x95DB, 0x96E1, 0x9729, 0x972B, 0x972C, 0x9728, 0x9726,      0, 
+at 0xA0
+       0, 0x97B3, 0x97B7, 0x97B6, 0x97DD, 0x97DE, 0x97DF, 0x985C, 
+  0x9859, 0x985D, 0x9857, 0x98BF, 0x98BD, 0x98BB, 0x98BE, 0x9948, 
+  0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A, 0x9A15, 0x9A25, 0x9A1D, 
+  0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27, 0x9A23, 0x9A1E, 0x9A1C, 
+  0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37, 0x9BEA, 
+  0x9BEB, 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, 0x9BD4, 
+  0x9BD7, 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5, 0x9BE1, 0x9BDA, 
+  0x9D77, 0x9D81, 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, 0x9D78, 
+  0x9D86, 0x9D8B, 0x9D8C, 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, 0x9D70, 
+  0x9D69, 0x9D85, 0x9D73, 0x9D7B, 0x9D82, 0x9D6F, 0x9D79, 0x9D7F, 
+  0x9D87, 0x9D68, 0x9E94, 0x9E91, 0x9EC0, 0x9EFC, 0x9F2D, 0x9F40, 
+  0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58, 0x5337, 0x56B2,      0, 
+plane f4
+at 0x40
+  0x56B5, 0x56B3, 0x58E3, 0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF, 
+  0x5FC0, 0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65DF, 
+  0x66E8, 0x66E3, 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9, 
+  0x6AF1, 0x6AEE, 0x6AEF, 0x703C, 0x7035, 0x702F, 0x7037, 0x7034, 
+  0x7031, 0x7042, 0x7038, 0x703F, 0x703A, 0x7039, 0x7040, 0x703B, 
+  0x7033, 0x7041, 0x7213, 0x7214, 0x72A8, 0x737D, 0x737C, 0x74BA, 
+  0x76AB, 0x76AA, 0x76BE, 0x76ED, 0x77CC, 0x77CE, 0x77CF, 0x77CD, 
+  0x77F2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929,      0, 
+at 0xA0
+       0, 0x79B2, 0x7A6E, 0x7A6C, 0x7A6D, 0x7AF7, 0x7C49, 0x7C48, 
+  0x7C4A, 0x7C47, 0x7C45, 0x7CEE, 0x7E7B, 0x7E7E, 0x7E81, 0x7E80, 
+  0x7FBA, 0x7FFF, 0x8079, 0x81DB, 0x81D9, 0x820B, 0x8268, 0x8269, 
+  0x8622, 0x85FF, 0x8601, 0x85FE, 0x861B, 0x8600, 0x85F6, 0x8604, 
+  0x8609, 0x8605, 0x860C, 0x85FD, 0x8819, 0x8810, 0x8811, 0x8817, 
+  0x8813, 0x8816, 0x8963, 0x8966, 0x89B9, 0x89F7, 0x8B60, 0x8B6A, 
+  0x8B5D, 0x8B68, 0x8B63, 0x8B65, 0x8B67, 0x8B6D, 0x8DAE, 0x8E86, 
+  0x8E88, 0x8E84, 0x8F59, 0x8F56, 0x8F57, 0x8F55, 0x8F58, 0x8F5A, 
+  0x908D, 0x9143, 0x9141, 0x91B7, 0x91B5, 0x91B2, 0x91B3, 0x940B, 
+  0x9413, 0x93FB, 0x9420, 0x940F, 0x9414, 0x93FE, 0x9415, 0x9410, 
+  0x9428, 0x9419, 0x940D, 0x93F5, 0x9400, 0x93F7, 0x9407, 0x940E, 
+  0x9416, 0x9412, 0x93FA, 0x9409, 0x93F8, 0x940A, 0x93FF,      0, 
+plane f5
+at 0x40
+  0x93FC, 0x940C, 0x93F6, 0x9411, 0x9406, 0x95DE, 0x95E0, 0x95DF, 
+  0x972E, 0x972F, 0x97B9, 0x97BB, 0x97FD, 0x97FE, 0x9860, 0x9862, 
+  0x9863, 0x985F, 0x98C1, 0x98C2, 0x9950, 0x994E, 0x9959, 0x994C, 
+  0x994B, 0x9953, 0x9A32, 0x9A34, 0x9A31, 0x9A2C, 0x9A2A, 0x9A36, 
+  0x9A29, 0x9A2E, 0x9A38, 0x9A2D, 0x9AC7, 0x9ACA, 0x9AC6, 0x9B10, 
+  0x9B12, 0x9B11, 0x9C0B, 0x9C08, 0x9BF7, 0x9C05, 0x9C12, 0x9BF8, 
+  0x9C40, 0x9C07, 0x9C0E, 0x9C06, 0x9C17, 0x9C14, 0x9C09, 0x9D9F, 
+  0x9D99, 0x9DA4, 0x9D9D, 0x9D92, 0x9D98, 0x9D90, 0x9D9B,      0, 
+at 0xA0
+       0, 0x9DA0, 0x9D94, 0x9D9C, 0x9DAA, 0x9D97, 0x9DA1, 0x9D9A, 
+  0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, 0x9DA9, 0x9D96, 0x9DA6, 
+  0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4, 0x9EE7, 0x9EE6, 
+  0x9F30, 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D, 0x9F59, 0x9F91, 
+  0x513A, 0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD, 0x56BE, 0x5B48, 
+  0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, 0x6B02, 0x6AFC, 
+  0x6B03, 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, 0x7048, 0x7049, 
+  0x7045, 0x7046, 0x721D, 0x721A, 0x7219, 0x737E, 0x7517, 0x766A, 
+  0x77D0, 0x792D, 0x7931, 0x792F, 0x7C54, 0x7C53, 0x7CF2, 0x7E8A, 
+  0x7E87, 0x7E88, 0x7E8B, 0x7E86, 0x7E8D, 0x7F4D, 0x7FBB, 0x8030, 
+  0x81DD, 0x8618, 0x862A, 0x8626, 0x861F, 0x8623, 0x861C, 0x8619, 
+  0x8627, 0x862E, 0x8621, 0x8620, 0x8629, 0x861E, 0x8625,      0, 
+plane f6
+at 0x40
+  0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, 0x882B, 0x884A, 
+  0x896D, 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, 0x8B45, 
+  0x8B7A, 0x8B7B, 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, 0x8F5E, 
+  0x8F5B, 0x8F5D, 0x9146, 0x9144, 0x9145, 0x91B9, 0x943F, 0x943B, 
+  0x9436, 0x9429, 0x943D, 0x943C, 0x9430, 0x9439, 0x942A, 0x9437, 
+  0x942C, 0x9440, 0x9431, 0x95E5, 0x95E4, 0x95E3, 0x9735, 0x973A, 
+  0x97BF, 0x97E1, 0x9864, 0x98C9, 0x98C6, 0x98C0, 0x9958, 0x9956, 
+  0x9A39, 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A,      0, 
+at 0xA0
+       0, 0x9A3F, 0x9ACD, 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, 
+  0x9B52, 0x9C2B, 0x9C1D, 0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29, 
+  0x9C24, 0x9C21, 0x9DB7, 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA, 
+  0x9DCF, 0x9DBE, 0x9DC5, 0x9DC3, 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9, 
+  0x9DBA, 0x9DAC, 0x9DC8, 0x9DB1, 0x9DAD, 0x9DCC, 0x9DB3, 0x9DCD, 
+  0x9DB2, 0x9E7A, 0x9E9C, 0x9EEB, 0x9EEE, 0x9EED, 0x9F1B, 0x9F18, 
+  0x9F1A, 0x9F31, 0x9F4E, 0x9F65, 0x9F64, 0x9F92, 0x4EB9, 0x56C6, 
+  0x56C5, 0x56CB, 0x5971, 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2, 
+  0x6521, 0x6520, 0x6526, 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, 
+  0x7055, 0x7056, 0x7057, 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F, 
+  0x74D8, 0x74D5, 0x74D9, 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4, 
+  0x7A70, 0x7A71, 0x7C57, 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A,      0, 
+plane f7
+at 0x40
+  0x7CF4, 0x7CF1, 0x7E91, 0x7F4F, 0x7F87, 0x81DE, 0x826B, 0x8634, 
+  0x8635, 0x8633, 0x862C, 0x8632, 0x8636, 0x882C, 0x8828, 0x8826, 
+  0x882A, 0x8825, 0x8971, 0x89BF, 0x89BE, 0x89FB, 0x8B7E, 0x8B84, 
+  0x8B82, 0x8B86, 0x8B85, 0x8B7F, 0x8D15, 0x8E95, 0x8E94, 0x8E9A, 
+  0x8E92, 0x8E90, 0x8E96, 0x8E97, 0x8F60, 0x8F62, 0x9147, 0x944C, 
+  0x9450, 0x944A, 0x944B, 0x944F, 0x9447, 0x9445, 0x9448, 0x9449, 
+  0x9446, 0x973F, 0x97E3, 0x986A, 0x9869, 0x98CB, 0x9954, 0x995B, 
+  0x9A4E, 0x9A53, 0x9A54, 0x9A4C, 0x9A4F, 0x9A48, 0x9A4A,      0, 
+at 0xA0
+       0, 0x9A49, 0x9A52, 0x9A50, 0x9AD0, 0x9B19, 0x9B2B, 0x9B3B, 
+  0x9B56, 0x9B55, 0x9C46, 0x9C48, 0x9C3F, 0x9C44, 0x9C39, 0x9C33, 
+  0x9C41, 0x9C3C, 0x9C37, 0x9C34, 0x9C32, 0x9C3D, 0x9C36, 0x9DDB, 
+  0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, 0x9DD0, 0x9DDC, 0x9DD1, 0x9DDF, 
+  0x9DE9, 0x9DD9, 0x9DD8, 0x9DD6, 0x9DF5, 0x9DD5, 0x9DDD, 0x9EB6, 
+  0x9EF0, 0x9F35, 0x9F33, 0x9F32, 0x9F42, 0x9F6B, 0x9F95, 0x9FA2, 
+  0x513D, 0x5299, 0x58E8, 0x58E7, 0x5972, 0x5B4D, 0x5DD8, 0x882F, 
+  0x5F4F, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66EB, 
+  0x6B11, 0x6B12, 0x6B0F, 0x6BCA, 0x705B, 0x705A, 0x7222, 0x7382, 
+  0x7381, 0x7383, 0x7670, 0x77D4, 0x7C67, 0x7C66, 0x7E95, 0x826C, 
+  0x863A, 0x8640, 0x8639, 0x863C, 0x8631, 0x863B, 0x863E, 0x8830, 
+  0x8832, 0x882E, 0x8833, 0x8976, 0x8974, 0x8973, 0x89FE,      0, 
+plane f8
+at 0x40
+  0x8B8C, 0x8B8E, 0x8B8B, 0x8B88, 0x8C45, 0x8D19, 0x8E98, 0x8F64, 
+  0x8F63, 0x91BC, 0x9462, 0x9455, 0x945D, 0x9457, 0x945E, 0x97C4, 
+  0x97C5, 0x9800, 0x9A56, 0x9A59, 0x9B1E, 0x9B1F, 0x9B20, 0x9C52, 
+  0x9C58, 0x9C50, 0x9C4A, 0x9C4D, 0x9C4B, 0x9C55, 0x9C59, 0x9C4C, 
+  0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, 0x9DE3, 0x9DEB, 0x9DF8, 0x9DE4, 
+  0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2, 0x9DF0, 0x9DE2, 0x9DEC, 
+  0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, 0x9ED0, 0x9EF2, 0x9EF3, 
+  0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36, 0x9F43, 0x9F4F,      0, 
+at 0xA0
+       0, 0x9F71, 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, 0x56CD, 0x5B4E, 
+  0x5C6D, 0x652D, 0x66ED, 0x66EE, 0x6B13, 0x705F, 0x7061, 0x705D, 
+  0x7060, 0x7223, 0x74DB, 0x74E5, 0x77D5, 0x7938, 0x79B7, 0x79B6, 
+  0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643, 0x8838, 0x8837, 0x8835, 
+  0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, 0x8E9D, 0x91BE, 
+  0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746, 0x9743, 
+  0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63, 0x9C67, 
+  0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07, 0x9E03, 
+  0x9E06, 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD, 0x9E04, 
+  0x9EA0, 0x9F1E, 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4, 0x652E, 
+  0x65B8, 0x6B18, 0x6B19, 0x6B17, 0x6B1A, 0x7062, 0x7226, 0x72AA, 
+  0x77D8, 0x77D9, 0x7939, 0x7C69, 0x7C6B, 0x7CF6, 0x7E9A,      0, 
+plane f9
+at 0x40
+  0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, 0x8647, 0x8648, 
+  0x8979, 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, 0x8EA5, 
+  0x8EA4, 0x8EA3, 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749, 
+  0x9872, 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10, 
+  0x9E0F, 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78, 
+  0x9F7B, 0x9F7A, 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2, 
+  0x8EA6, 0x91C3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9A60, 0x9C74, 
+  0x9C73, 0x9C71, 0x9C75, 0x9E14, 0x9E13, 0x9EF6, 0x9F0A,      0, 
+at 0xA0
+       0, 0x9FA4, 0x7068, 0x7065, 0x7CF7, 0x866A, 0x883E, 0x883D, 
+  0x883F, 0x8B9E, 0x8C9C, 0x8EA9, 0x8EC9, 0x974B, 0x9873, 0x9874, 
+  0x98CC, 0x9961, 0x99AB, 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15, 
+  0x9E17, 0x9F48, 0x6207, 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482, 
+  0x9480, 0x9481, 0x9A69, 0x9A68, 0x9B2E, 0x9E19, 0x7229, 0x864B, 
+  0x8B9F, 0x9483, 0x9C79, 0x9EB7, 0x7675, 0x9A6B, 0x9C7A, 0x9E1D, 
+  0x7069, 0x706A, 0x9EA4, 0x9F7E, 0x9F49, 0x9F98,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fa
+at 0x40
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+at 0xA0
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fb
+at 0x40
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+at 0xA0
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fc
+at 0x40
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+at 0xA0
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fd
+at 0x40
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+at 0xA0
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fe
+at 0x40
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+at 0xA0
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/T2A_compact.map
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/T2A_compact.map	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/T2A_compact.map	(revision 2000)
@@ -0,0 +1,111 @@
+// Map file to make PFA/PFB files with T2A encoding
+// from TTF using ttf2pt1 package. See package documentation for details.
+// The encoding is incomplete but some (many) glyphs do not exist in TTF.
+// Mikhail Umorin mikeumo@obebox.com
+//start at 0
+0x0060
+0x00B4
+0x02C6
+0x02DC
+0x00A8
+0x02DD
+0x02DA
+0x02C7
+0x02D8
+0x00AF
+0x02D9
+// at 0x000B (11)
+// will set more later
+0x00B8
+0x02DB
+0x0130
+0x2039
+0x203A
+0x201C
+0x201D
+0x0000
+0x0000
+0x0000
+0x2013
+0x2014
+0x0000
+0x0000
+0x0131
+0x0000
+0x0000
+0x0000
+0x0000
+0x0000
+0x0000
+// at 0x0020 (32)
+0x0020-0x005F
+// at 0x0060 (96)
+0x2018
+// at 0x0061 (97)
+0x0061-0x007E
+0x00AD
+//this ends the lower half of the table: 0x007F (127)
+// at 0x008F
+0x0490
+0x0000
+0x040B
+0x0402
+0x0000
+0x0000
+0x0000
+0x0409
+0x0407
+0x0000
+0x0000
+0x0000
+0x00C6
+0x0000
+0x0000
+0x0405
+0x0000
+0x00C7
+0x040E
+0x0000
+0x0000
+0x0000
+0x040F
+0x0000
+0x0000
+0x0404
+0x0000
+// at 155
+0x040A, 0x0401, 0x2116, 0x00A4, 0x00A7
+// at A0 (160)
+0x0491
+0x0000
+0x045B
+0x0452
+0x0000
+0x0000
+0x0000
+0x0459
+0x0457
+0x0000
+0x0000
+0x0000
+0x00E6
+0x0000
+0x0000
+0x0455
+0x0000
+0x00E7
+0x045E
+0x0000
+0x0000
+0x0000
+0x045F
+0x0000
+0x0000
+0x0454
+0x0000
+// at 187
+0x045A, 0x0451, 0x201E, 0x00AB, 0x00BB
+// at 192
+0x0410-0x044F
+// this concludes the upper half of the table
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/adobe-standard-encoding.map
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/adobe-standard-encoding.map	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/adobe-standard-encoding.map	(revision 2000)
@@ -0,0 +1,231 @@
+// Adobe Standard Encoding table for ttf2pt1
+// Thomas Henlich <Thomas.Henlich@mailbox.tu-dresden.de> 
+
+=20	U+0020	SPACE
+=21	U+0021	EXCLAMATION MARK
+=22	U+0022	QUOTATION MARK
+=23	U+0023	NUMBER SIGN
+=24	U+0024	DOLLAR SIGN
+=25	U+0025	PERCENT SIGN
+=26	U+0026	AMPERSAND
+=27	U+2019	RIGHT SINGLE QUOTATION MARK
+=28	U+0028	LEFT PARENTHESIS
+=29	U+0029	RIGHT PARENTHESIS
+=2A	U+002A	ASTERISK
+=2B	U+002B	PLUS SIGN
+=2C	U+002C	COMMA
+=2D	U+002D	HYPHEN-MINUS
+=2E	U+002E	FULL STOP
+=2F	U+002F	SOLIDUS
+=30	U+0030	DIGIT ZERO
+=31	U+0031	DIGIT ONE
+=32	U+0032	DIGIT TWO
+=33	U+0033	DIGIT THREE
+=34	U+0034	DIGIT FOUR
+=35	U+0035	DIGIT FIVE
+=36	U+0036	DIGIT SIX
+=37	U+0037	DIGIT SEVEN
+=38	U+0038	DIGIT EIGHT
+=39	U+0039	DIGIT NINE
+=3A	U+003A	COLON
+=3B	U+003B	SEMICOLON
+=3C	U+003C	LESS-THAN SIGN
+=3D	U+003D	EQUALS SIGN
+=3E	U+003E	GREATER-THAN SIGN
+=3F	U+003F	QUESTION MARK
+=40	U+0040	COMMERCIAL AT
+=41	U+0041	LATIN CAPITAL LETTER A
+=42	U+0042	LATIN CAPITAL LETTER B
+=43	U+0043	LATIN CAPITAL LETTER C
+=44	U+0044	LATIN CAPITAL LETTER D
+=45	U+0045	LATIN CAPITAL LETTER E
+=46	U+0046	LATIN CAPITAL LETTER F
+=47	U+0047	LATIN CAPITAL LETTER G
+=48	U+0048	LATIN CAPITAL LETTER H
+=49	U+0049	LATIN CAPITAL LETTER I
+=4A	U+004A	LATIN CAPITAL LETTER J
+=4B	U+004B	LATIN CAPITAL LETTER K
+=4C	U+004C	LATIN CAPITAL LETTER L
+=4D	U+004D	LATIN CAPITAL LETTER M
+=4E	U+004E	LATIN CAPITAL LETTER N
+=4F	U+004F	LATIN CAPITAL LETTER O
+=50	U+0050	LATIN CAPITAL LETTER P
+=51	U+0051	LATIN CAPITAL LETTER Q
+=52	U+0052	LATIN CAPITAL LETTER R
+=53	U+0053	LATIN CAPITAL LETTER S
+=54	U+0054	LATIN CAPITAL LETTER T
+=55	U+0055	LATIN CAPITAL LETTER U
+=56	U+0056	LATIN CAPITAL LETTER V
+=57	U+0057	LATIN CAPITAL LETTER W
+=58	U+0058	LATIN CAPITAL LETTER X
+=59	U+0059	LATIN CAPITAL LETTER Y
+=5A	U+005A	LATIN CAPITAL LETTER Z
+=5B	U+005B	LEFT SQUARE BRACKET
+=5C	U+005C	REVERSE SOLIDUS
+=5D	U+005D	RIGHT SQUARE BRACKET
+=5E	U+005E	CIRCUMFLEX ACCENT
+=5F	U+005F	LOW LINE
+=60	U+2018	LEFT SINGLE QUOTATION MARK
+=61	U+0061	LATIN SMALL LETTER A
+=62	U+0062	LATIN SMALL LETTER B
+=63	U+0063	LATIN SMALL LETTER C
+=64	U+0064	LATIN SMALL LETTER D
+=65	U+0065	LATIN SMALL LETTER E
+=66	U+0066	LATIN SMALL LETTER F
+=67	U+0067	LATIN SMALL LETTER G
+=68	U+0068	LATIN SMALL LETTER H
+=69	U+0069	LATIN SMALL LETTER I
+=6A	U+006A	LATIN SMALL LETTER J
+=6B	U+006B	LATIN SMALL LETTER K
+=6C	U+006C	LATIN SMALL LETTER L
+=6D	U+006D	LATIN SMALL LETTER M
+=6E	U+006E	LATIN SMALL LETTER N
+=6F	U+006F	LATIN SMALL LETTER O
+=70	U+0070	LATIN SMALL LETTER P
+=71	U+0071	LATIN SMALL LETTER Q
+=72	U+0072	LATIN SMALL LETTER R
+=73	U+0073	LATIN SMALL LETTER S
+=74	U+0074	LATIN SMALL LETTER T
+=75	U+0075	LATIN SMALL LETTER U
+=76	U+0076	LATIN SMALL LETTER V
+=77	U+0077	LATIN SMALL LETTER W
+=78	U+0078	LATIN SMALL LETTER X
+=79	U+0079	LATIN SMALL LETTER Y
+=7A	U+007A	LATIN SMALL LETTER Z
+=7B	U+007B	LEFT CURLY BRACKET
+=7C	U+007C	VERTICAL LINE
+=7D	U+007D	RIGHT CURLY BRACKET
+=7E	U+007E	TILDE
+=A1	U+00A1	INVERTED EXCLAMATION MARK
+=A2	U+00A2	CENT SIGN
+=A3	U+00A3	POUND SIGN
+=A4	U+2044	FRACTION SLASH
+=A5	U+00A5	YEN SIGN
+=A6	U+0192	LATIN SMALL LETTER F WITH HOOK
+=A7	U+00A7	SECTION SIGN
+=A8	U+00A4	CURRENCY SIGN
+=A9	U+0027	APOSTROPHE
+=AA	U+201C	LEFT DOUBLE QUOTATION MARK
+=AB	U+00AB	LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+=AC	U+2039	SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+=AD	U+203A	SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+=AE	U+FB01	LATIN SMALL LIGATURE FI
+=AF	U+FB02	LATIN SMALL LIGATURE FL
+=B1	U+2013	EN DASH
+=B2	U+2020	DAGGER
+=B3	U+2021	DOUBLE DAGGER
+=B4	U+00B7	MIDDLE DOT
+=B6	U+00B6	PILCROW SIGN
+=B7	U+2022	BULLET
+=B8	U+201A	SINGLE LOW-9 QUOTATION MARK
+=B9	U+201E	DOUBLE LOW-9 QUOTATION MARK
+=BA	U+201D	RIGHT DOUBLE QUOTATION MARK
+=BB	U+00BB	RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+=BC	U+2026	HORIZONTAL ELLIPSIS
+=BD	U+2030	PER MILLE SIGN
+=BF	U+00BF	INVERTED QUESTION MARK
+=C1	U+0060	GRAVE ACCENT
+=C2	U+00B4	ACUTE ACCENT
+=C3	U+02C6	MODIFIER LETTER CIRCUMFLEX ACCENT
+=C4	U+02DC	SMALL TILDE
+=C5	U+00AF	MACRON
+=C6	U+02D8	BREVE
+=C7	U+02D9	DOT ABOVE
+=C8	U+00A8	DIAERESIS
+=CA	U+02DA	RING ABOVE
+=CB	U+00B8	CEDILLA
+=CD	U+02DD	DOUBLE ACUTE ACCENT
+=CE	U+02DB	OGONEK
+=CF	U+02C7	CARON
+=D0	U+2014	EM DASH
+=E1	U+00C6	LATIN CAPITAL LETTER AE
+=E3	U+00AA	FEMININE ORDINAL INDICATOR
+=E8	U+0141	LATIN CAPITAL LETTER L WITH STROKE
+=E9	U+00D8	LATIN CAPITAL LETTER O WITH STROKE
+=EA	U+0152	LATIN CAPITAL LIGATURE OE
+=EB	U+00BA	MASCULINE ORDINAL INDICATOR
+=F1	U+00E6	LATIN SMALL LETTER AE
+=F5	U+0131	LATIN SMALL LETTER DOTLESS I
+=F8	U+0142	LATIN SMALL LETTER L WITH STROKE
+=F9	U+00F8	LATIN SMALL LETTER O WITH STROKE
+=FA	U+0153	LATIN SMALL LIGATURE OE
+=FB	U+00DF	LATIN SMALL LETTER SHARP S
+
+// unencoded characters:
+=100	U+00E7	LATIN SMALL LETTER C WITH CEDILLA
+=101	U+00FF	LATIN SMALL LETTER Y WITH DIAERESIS
+=102	U+00E3	LATIN SMALL LETTER A WITH TILDE
+=103	U+00EE	LATIN SMALL LETTER I WITH CIRCUMFLEX
+=104	U+00B3	SUPERSCRIPT THREE
+=105	U+00EA	LATIN SMALL LETTER E WITH CIRCUMFLEX
+=106	U+00FE	LATIN SMALL LETTER THORN
+=107	U+00E8	LATIN SMALL LETTER E WITH GRAVE
+=108	U+00B2	SUPERSCRIPT TWO
+=109	U+00E9	LATIN SMALL LETTER E WITH ACUTE
+=10A	U+00F5	LATIN SMALL LETTER O WITH TILDE
+=10B	U+00C1	LATIN CAPITAL LETTER A WITH ACUTE
+=10C	U+00F4	LATIN SMALL LETTER O WITH CIRCUMFLEX
+=10D	U+00FD	LATIN SMALL LETTER Y WITH ACUTE
+=10E	U+00FC	LATIN SMALL LETTER U WITH DIAERESIS
+=10F	U+00BE	VULGAR FRACTION THREE QUARTERS
+=110	U+00E2	LATIN SMALL LETTER A WITH CIRCUMFLEX
+=111	U+00D0	LATIN CAPITAL LETTER ETH
+=112	U+00EB	LATIN SMALL LETTER E WITH DIAERESIS
+=113	U+00F9	LATIN SMALL LETTER U WITH GRAVE
+=114	U+2122	TRADE MARK SIGN
+=115	U+00F2	LATIN SMALL LETTER O WITH GRAVE
+=116    U+0161  LATIN SMALL LETTER S WITH CARON
+=117	U+00CF	LATIN CAPITAL LETTER I WITH DIAERESIS
+=118	U+00FA	LATIN SMALL LETTER U WITH ACUTE
+=119	U+00E0	LATIN SMALL LETTER A WITH GRAVE
+=11A	U+00F1	LATIN SMALL LETTER N WITH TILDE
+=11B	U+00E5	LATIN SMALL LETTER A WITH RING ABOVE
+=11C    U+017E  LATIN SMALL LETTER Z WITH CARON
+=11D	U+00CE	LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+=11E	U+00D1	LATIN CAPITAL LETTER N WITH TILDE
+=11F	U+00FB	LATIN SMALL LETTER U WITH CIRCUMFLEX
+=120	U+00CA	LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+=121	U+00CD	LATIN CAPITAL LETTER I WITH ACUTE
+=122	U+00C7	LATIN CAPITAL LETTER C WITH CEDILLA
+=123	U+00D6	LATIN CAPITAL LETTER O WITH DIAERESIS
+=124    U+0160  LATIN CAPITAL LETTER S WITH CARON
+=125	U+00CC	LATIN CAPITAL LETTER I WITH GRAVE
+=126	U+00E4	LATIN SMALL LETTER A WITH DIAERESIS
+=127	U+00D2	LATIN CAPITAL LETTER O WITH GRAVE
+=128	U+00C8	LATIN CAPITAL LETTER E WITH GRAVE
+=129    U+0178  LATIN CAPITAL LETTER Y WITH DIAERESIS
+=12A	U+00AE	REGISTERED SIGN
+=12B	U+00D5	LATIN CAPITAL LETTER O WITH TILDE
+=12C	U+00BC	VULGAR FRACTION ONE QUARTER
+=12D	U+00D9	LATIN CAPITAL LETTER U WITH GRAVE
+=12E	U+00DB	LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+=12F	U+00DE	LATIN CAPITAL LETTER THORN
+=130	U+00F7	DIVISION SIGN
+=131	U+00C3	LATIN CAPITAL LETTER A WITH TILDE
+=132	U+00DA	LATIN CAPITAL LETTER U WITH ACUTE
+=133	U+00D4	LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+=134	U+00AC	NOT SIGN
+=135	U+00C5	LATIN CAPITAL LETTER A WITH RING ABOVE
+=136	U+00EF	LATIN SMALL LETTER I WITH DIAERESIS
+=137	U+00ED	LATIN SMALL LETTER I WITH ACUTE
+=138	U+00E1	LATIN SMALL LETTER A WITH ACUTE
+=139	U+00B1	PLUS-MINUS SIGN
+=13A	U+00D7	MULTIPLICATION SIGN
+=13B	U+00DC	LATIN CAPITAL LETTER U WITH DIAERESIS
+=13C	U+2212  MINUS SIGN
+=13D	U+00B9	SUPERSCRIPT ONE
+=13E	U+00C9	LATIN CAPITAL LETTER E WITH ACUTE
+=13F	U+00C2	LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+=140	U+00A9	COPYRIGHT SIGN
+=141	U+00C0	LATIN CAPITAL LETTER A WITH GRAVE
+=142	U+00F6	LATIN SMALL LETTER O WITH DIAERESIS
+=143	U+00F3	LATIN SMALL LETTER O WITH ACUTE
+=144	U+00B0	DEGREE SIGN
+=145	U+00EC	LATIN SMALL LETTER I WITH GRAVE
+=146	U+00B5	MICRO SIGN
+=147	U+00D3	LATIN CAPITAL LETTER O WITH ACUTE
+=148	U+00F0	LATIN SMALL LETTER ETH
+=149	U+00C4	LATIN CAPITAL LETTER A WITH DIAERESIS
+=14A	U+00DD	LATIN CAPITAL LETTER Y WITH ACUTE
+=14B	U+00A6	BROKEN BAR
+=14C	U+00BD	VULGAR FRACTION ONE HALF
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/ugb.map
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/ugb.map	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/ugb.map	(revision 2000)
@@ -0,0 +1,1236 @@
+#
+# GB 2312-80
+#
+
+plane a1
+at 0xa0
+       0, 0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, 
+  0x3003, 0x3005, 0x2015, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019, 
+  0x201C, 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 
+  0x300C, 0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, 0x3011, 
+  0x00B1, 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, 
+  0x222A, 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 
+  0x2312, 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 
+  0x221D, 0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 
+  0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 
+  0x00A4, 0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, 
+  0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 
+  0x25B2, 0x203B, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,      0, 
+plane a2
+at 0xa0
+       0, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 
+  0x2177, 0x2178, 0x2179,      0,      0,      0,      0,      0, 
+       0, 0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 
+  0x248F, 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 
+  0x2497, 0x2498, 0x2499, 0x249A, 0x249B, 0x2474, 0x2475, 0x2476, 
+  0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 
+  0x247F, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 
+  0x2487, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 
+  0x2467, 0x2468, 0x2469,      0,      0, 0x3220, 0x3221, 0x3222, 
+  0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229,      0, 
+       0, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 
+  0x2167, 0x2168, 0x2169, 0x216A, 0x216B,      0,      0,      0, 
+plane a3
+at 0xa0
+       0, 0xFF01, 0xFF02, 0xFF03, 0xFFE5, 0xFF05, 0xFF06, 0xFF07, 
+  0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, 
+  0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 
+  0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, 
+  0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 
+  0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 
+  0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 
+  0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E, 0xFF3F, 
+  0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 
+  0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 
+  0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 
+  0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3,      0, 
+plane a4
+at 0xa0
+       0, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 
+  0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 
+  0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 
+  0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 
+  0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 
+  0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 
+  0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 
+  0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 
+  0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 
+  0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 
+  0x3090, 0x3091, 0x3092, 0x3093,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane a5
+at 0xa0
+       0, 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 
+  0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 
+  0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 
+  0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 
+  0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 
+  0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 
+  0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 
+  0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 
+  0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 
+  0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 
+  0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane a6
+at 0xa0
+       0, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 
+  0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 
+  0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 
+  0x03A9,      0,      0,      0,      0,      0,      0,      0, 
+       0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 
+  0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 
+  0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 
+  0x03C9,      0,      0,      0,      0,      0,      0,      0, 
+  0xFE35, 0xFE36, 0xFE39, 0xFE3A, 0xFE3F, 0xFE40, 0xFE3D, 0xFE3E, 
+  0xFE41, 0xFE42, 0xFE43, 0xFE44,      0,      0, 0xFE3B, 0xFE3C, 
+  0xFE37, 0xFE38, 0xFE31,      0, 0xFE33, 0xFE34,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane a7
+at 0xa0
+       0, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 
+  0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 
+  0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 
+  0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 
+  0x042E, 0x042F,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 
+  0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 
+  0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 
+  0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 
+  0x044E, 0x044F,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane a8
+at 0xa0
+       0, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, 
+  0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 
+  0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 
+  0x01DC, 0x00FC, 0x00EA, 0x0251, 0xE7C7, 0x0144, 0x0148, 0xE7C8, 
+  0x0261,      0,      0,      0,      0, 0x3105, 0x3106, 0x3107, 
+  0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F, 
+  0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 
+  0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F, 
+  0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 
+  0x3128, 0x3129,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane a9
+at 0xa0
+       0,      0,      0,      0, 0x2500, 0x2501, 0x2502, 0x2503, 
+  0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, 
+  0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513, 
+  0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B, 
+  0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, 
+  0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 
+  0x252C, 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 
+  0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 
+  0x253C, 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 
+  0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane b0
+at 0xa0
+       0, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509, 0x54C0, 
+  0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, 0x9698, 
+  0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, 0x80FA, 
+  0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, 0x7FF1, 
+  0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, 0x6252, 
+  0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, 0x8DCB, 
+  0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238, 0x767D, 
+  0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17, 0x6591, 
+  0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248, 0x626E, 
+  0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6, 0x5E2E, 
+  0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, 0x9551, 
+  0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265,      0, 
+plane b1
+at 0xa0
+  0x775C, 0x8584, 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1, 
+  0x62A5, 0x66B4, 0x8C79, 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2, 
+  0x5351, 0x5317, 0x8F88, 0x80CC, 0x8D1D, 0x94A1, 0x500D, 0x72C8, 
+  0x5907, 0x60EB, 0x7119, 0x88AB, 0x5954, 0x82EF, 0x672C, 0x7B28, 
+  0x5D29, 0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, 0x903C, 0x9F3B, 
+  0x6BD4, 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, 0x6BD5, 
+  0x6BD9, 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A, 
+  0x5FC5, 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9, 
+  0x7F16, 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9, 
+  0x8FAB, 0x904D, 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B, 
+  0x522B, 0x762A, 0x5F6C, 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, 
+  0x5175, 0x51B0, 0x67C4, 0x4E19, 0x79C9, 0x997C, 0x70B3,      0, 
+plane b2
+at 0xa0
+  0x77E4, 0x75C5, 0x5E76, 0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5, 
+  0x6CE2, 0x535A, 0x52C3, 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, 
+  0x8236, 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 
+  0x54FA, 0x8865, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 
+  0x6016, 0x64E6, 0x731C, 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, 
+  0x8E29, 0x91C7, 0x5F69, 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, 
+  0x6B8B, 0x60ED, 0x60E8, 0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7, 
+  0x85CF, 0x64CD, 0x7CD9, 0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56, 
+  0x4FA7, 0x518C, 0x6D4B, 0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C, 
+  0x8336, 0x67E5, 0x78B4, 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7, 
+  0x62C6, 0x67F4, 0x8C7A, 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, 
+  0x7F20, 0x94F2, 0x4EA7, 0x9610, 0x98A4, 0x660C, 0x7316,      0, 
+plane b3
+at 0xa0
+  0x7883, 0x573A, 0x5C1D, 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382, 
+  0x655E, 0x7545, 0x5531, 0x5021, 0x8D85, 0x6284, 0x949E, 0x671D, 
+  0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092, 0x8F66, 0x626F, 0x64A4, 
+  0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, 0x8FB0, 0x5C18, 0x6668, 
+  0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, 0x6491, 0x79F0, 0x57CE, 
+  0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, 0x60E9, 0x6F84, 0x8BDA, 
+  0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319, 
+  0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A, 
+  0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07, 
+  0x5BA0, 0x62BD, 0x916C, 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79, 
+  0x4EC7, 0x7EF8, 0x7785, 0x4E11, 0x81ED, 0x521D, 0x51FA, 0x6A71, 
+  0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1, 0x9664, 0x695A,      0, 
+plane b4
+at 0xa0
+  0x790C, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904, 0x63E3, 
+  0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32, 0x75AE, 
+  0x7A97, 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A, 0x6376, 
+  0x9524, 0x5782, 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3, 0x7EAF, 
+  0x8822, 0x6233, 0x7EF0, 0x75B5, 0x8328, 0x78C1, 0x96CC, 0x8F9E, 
+  0x6148, 0x74F7, 0x8BCD, 0x6B64, 0x523A, 0x8D50, 0x6B21, 0x806A, 
+  0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, 0x51D1, 0x7C97, 0x918B, 
+  0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, 0x5D14, 0x50AC, 
+  0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58, 0x5BF8, 
+  0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D, 0x8FBE, 
+  0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3, 0x6234, 
+  0x5E26, 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E,      0, 
+plane b5
+at 0xa0
+  0x7992, 0x6020, 0x803D, 0x62C5, 0x4E39, 0x5355, 0x90F8, 0x63B8, 
+  0x80C6, 0x65E6, 0x6C2E, 0x4F46, 0x60EE, 0x6DE1, 0x8BDE, 0x5F39, 
+  0x86CB, 0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, 0x5200, 0x6363, 
+  0x8E48, 0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, 0x60BC, 
+  0x9053, 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B, 
+  0x7B49, 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, 
+  0x654C, 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, 
+  0x5730, 0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0, 
+  0x6382, 0x6EC7, 0x7898, 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535, 
+  0x4F43, 0x7538, 0x5E97, 0x60E6, 0x5960, 0x6DC0, 0x6BBF, 0x7889, 
+  0x53FC, 0x96D5, 0x51CB, 0x5201, 0x6389, 0x540A, 0x9493, 0x8C03, 
+  0x8DCC, 0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, 0x53E0,      0, 
+plane b6
+at 0xa0
+  0x7A1C, 0x4E01, 0x76EF, 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 
+  0x5B9A, 0x8BA2, 0x4E22, 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 
+  0x680B, 0x4F97, 0x606B, 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 
+  0x9661, 0x8C46, 0x9017, 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, 
+  0x72EC, 0x8BFB, 0x5835, 0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A, 
+  0x5EA6, 0x6E21, 0x5992, 0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD, 
+  0x7F0E, 0x5806, 0x5151, 0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72, 
+  0x6566, 0x987F, 0x56E4, 0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6, 
+  0x591A, 0x593A, 0x579B, 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, 
+  0x60F0, 0x5815, 0x86FE, 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 
+  0x5A25, 0x6076, 0x5384, 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 
+  0x800C, 0x513F, 0x8033, 0x5C14, 0x9975, 0x6D31, 0x4E8C,      0, 
+plane b7
+at 0xa0
+  0x7AA2, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F, 0x4F10, 0x4E4F, 0x9600, 
+  0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A, 0x7FFB, 0x6A0A, 0x77FE, 
+  0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD, 0x8FD4, 0x8303, 0x8D29, 
+  0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3, 0x65B9, 0x80AA, 0x623F, 
+  0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA, 0x653E, 0x83F2, 0x975E, 
+  0x5561, 0x98DE, 0x80A5, 0x532A, 0x8BFD, 0x5420, 0x80BA, 0x5E9F, 
+  0x6CB8, 0x8D39, 0x82AC, 0x915A, 0x5429, 0x6C1B, 0x5206, 0x7EB7, 
+  0x575F, 0x711A, 0x6C7E, 0x7C89, 0x594B, 0x4EFD, 0x5FFF, 0x6124, 
+  0x7CAA, 0x4E30, 0x5C01, 0x67AB, 0x8702, 0x5CF0, 0x950B, 0x98CE, 
+  0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D, 0x8BBD, 0x5949, 0x51E4, 
+  0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4, 0x5B75, 0x6276, 0x62C2, 
+  0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F, 0x4FD8, 0x670D,      0, 
+plane b8
+at 0xa0
+  0x7B2D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B, 0x629A, 
+  0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C, 0x8150, 
+  0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, 0x5085, 0x4ED8, 0x961C, 
+  0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, 0x9644, 0x5987, 0x7F1A, 
+  0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, 0x6982, 0x9499, 0x76D6, 
+  0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF, 0x809D, 0x8D76, 
+  0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2, 0x7F38, 
+  0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B, 0x9AD8, 
+  0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A, 0x54E5, 
+  0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272, 0x9769, 
+  0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A, 0x5404, 
+  0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, 0x5E9A, 0x7FB9,      0, 
+plane b9
+at 0xa0
+  0x7BC4, 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D, 
+  0x9F9A, 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E, 
+  0x62F1, 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, 
+  0x57A2, 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, 
+  0x4F30, 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, 
+  0x8C37, 0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, 
+  0x5250, 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, 
+  0x5173, 0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF, 
+  0x704C, 0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D, 
+  0x7845, 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678, 
+  0x6842, 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD, 
+  0x9505, 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8,      0, 
+plane ba
+at 0xa0
+  0x7C42, 0x9AB8, 0x5B69, 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, 
+  0x9163, 0x61A8, 0x90AF, 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, 
+  0x558A, 0x7F55, 0x7FF0, 0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D, 
+  0x710A, 0x6C57, 0x6C49, 0x592F, 0x676D, 0x822A, 0x58D5, 0x568E, 
+  0x8C6A, 0x6BEB, 0x90DD, 0x597D, 0x8017, 0x53F7, 0x6D69, 0x5475, 
+  0x559D, 0x8377, 0x83CF, 0x6838, 0x79BE, 0x548C, 0x4F55, 0x5408, 
+  0x76D2, 0x8C89, 0x9602, 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64, 
+  0x8D3A, 0x563F, 0x9ED1, 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, 
+  0x4EA8, 0x6A2A, 0x8861, 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, 
+  0x9E3F, 0x6D2A, 0x5B8F, 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, 
+  0x543C, 0x539A, 0x5019, 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, 
+  0x58F6, 0x846B, 0x80E1, 0x8774, 0x72D0, 0x7CCA, 0x6E56,      0, 
+plane bb
+at 0xa0
+  0x7CBB, 0x5F27, 0x864E, 0x552C, 0x62A4, 0x4E92, 0x6CAA, 0x6237, 
+  0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, 0x753B, 0x5212, 0x5316, 
+  0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, 0x574F, 0x6B22, 0x73AF, 
+  0x6853, 0x8FD8, 0x7F13, 0x6362, 0x60A3, 0x5524, 0x75EA, 0x8C62, 
+  0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352, 0x614C, 0x9EC4, 0x78FA, 
+  0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6, 0x714C, 0x6643, 0x5E4C, 
+  0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89, 0x5FBD, 0x6062, 0x86D4, 
+  0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, 0x60E0, 0x6666, 0x8D3F, 
+  0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, 0x8BF2, 0x7ED8, 0x8364, 
+  0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, 0x8C41, 0x6D3B, 0x4F19, 
+  0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, 0x8D27, 0x7978, 0x51FB, 
+  0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, 0x79EF, 0x7B95,      0, 
+plane bc
+at 0xa0
+  0x7D36, 0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, 0x59EC, 
+  0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D, 0x96C6, 
+  0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, 0x5AC9, 0x7EA7, 0x6324, 
+  0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, 0x5B63, 0x4F0E, 
+  0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1, 0x8BB0, 
+  0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, 0x67B7, 
+  0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, 0x7532, 
+  0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, 0x6B7C, 
+  0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, 0x80A9, 
+  0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1, 0x7877, 
+  0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350, 0x69DB, 
+  0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, 0x7BAD, 0x4EF6,      0, 
+plane bd
+at 0xa0
+  0x7D98, 0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, 
+  0x5EFA, 0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, 
+  0x6868, 0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, 
+  0x7901, 0x7126, 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, 
+  0x56BC, 0x6405, 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, 
+  0x997A, 0x7F34, 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, 0x8F83, 
+  0x53EB, 0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, 0x9636, 
+  0x622A, 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED, 
+  0x6D01, 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C, 
+  0x501F, 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, 
+  0x91D1, 0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, 
+  0x8FDB, 0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78,      0, 
+plane be
+at 0xa0
+  0x7DFA, 0x5C3D, 0x52B2, 0x8346, 0x5162, 0x830E, 0x775B, 0x6676, 
+  0x9CB8, 0x4EAC, 0x60CA, 0x7CBE, 0x7CB3, 0x7ECF, 0x4E95, 0x8B66, 
+  0x666F, 0x9888, 0x9759, 0x5883, 0x656C, 0x955C, 0x5F84, 0x75C9, 
+  0x9756, 0x7ADF, 0x7ADE, 0x51C0, 0x70AF, 0x7A98, 0x63EA, 0x7A76, 
+  0x7EA0, 0x7396, 0x97ED, 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9, 
+  0x6551, 0x65E7, 0x81FC, 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, 
+  0x62D8, 0x72D9, 0x75BD, 0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480, 
+  0x77E9, 0x4E3E, 0x6CAE, 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177, 
+  0x8DDD, 0x8E1E, 0x952F, 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, 
+  0x6350, 0x9E43, 0x5A1F, 0x5026, 0x7737, 0x5377, 0x7EE2, 0x6485, 
+  0x652B, 0x6289, 0x6398, 0x5014, 0x7235, 0x89C9, 0x51B3, 0x8BC0, 
+  0x7EDD, 0x5747, 0x83CC, 0x94A7, 0x519B, 0x541B, 0x5CFB,      0, 
+plane bf
+at 0xa0
+  0x7E5D, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496, 
+  0x5361, 0x54AF, 0x5F00, 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A, 
+  0x582A, 0x52D8, 0x574E, 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0, 
+  0x625B, 0x6297, 0x4EA2, 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760, 
+  0x5777, 0x82DB, 0x67EF, 0x68F5, 0x78D5, 0x9897, 0x79D1, 0x58F3, 
+  0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B, 0x5BA2, 0x8BFE, 0x80AF, 
+  0x5543, 0x57A6, 0x6073, 0x5751, 0x542D, 0x7A7A, 0x6050, 0x5B54, 
+  0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7, 0x67AF, 0x54ED, 0x7A9F, 
+  0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8, 
+  0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321, 
+  0x7B50, 0x72C2, 0x6846, 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F, 
+  0x76D4, 0x5CBF, 0x7AA5, 0x8475, 0x594E, 0x9B41, 0x5080,      0, 
+plane c0
+at 0xa0
+  0x7F53, 0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346, 0x56F0, 
+  0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587, 0x8721, 
+  0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD, 0x5A6A, 
+  0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, 0x63FD, 
+  0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, 0x72FC, 
+  0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, 0x8001, 
+  0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, 0x96F7, 
+  0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2, 0x808B, 
+  0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8, 0x7281, 
+  0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E, 0x91CC, 
+  0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D, 0x5389, 
+  0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0,      0, 
+plane c1
+at 0xa0
+  0x7FE3, 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, 
+  0x54E9, 0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, 
+  0x6D9F, 0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, 
+  0x7CAE, 0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, 0x91CF, 
+  0x667E, 0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, 0x71CE, 
+  0x5BE5, 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, 0x6599, 
+  0x5217, 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, 0x78F7, 
+  0x9716, 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D, 
+  0x62CE, 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, 
+  0x51CC, 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, 
+  0x7409, 0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, 
+  0x67F3, 0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF,      0, 
+plane c2
+at 0xa0
+  0x807D, 0x9686, 0x5784, 0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402, 
+  0x7BD3, 0x6F0F, 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089, 
+  0x63B3, 0x5364, 0x864F, 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, 
+  0x8D42, 0x9E7F, 0x6F5E, 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, 
+  0x5415, 0x94DD, 0x4FA3, 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, 
+  0x6C2F, 0x5F8B, 0x7387, 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, 
+  0x6EE6, 0x5375, 0x4E71, 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, 
+  0x4ED1, 0x6CA6, 0x7EB6, 0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B, 
+  0x9523, 0x7BA9, 0x9AA1, 0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC, 
+  0x5988, 0x9EBB, 0x739B, 0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B, 
+  0x5417, 0x57CB, 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792, 
+  0x9992, 0x86EE, 0x6EE1, 0x8513, 0x66FC, 0x6162, 0x6F2B,      0, 
+plane c3
+at 0xa0
+  0x813F, 0x8C29, 0x8292, 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD, 
+  0x732B, 0x8305, 0x951A, 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302, 
+  0x5192, 0x5E3D, 0x8C8C, 0x8D38, 0x4E48, 0x73AB, 0x679A, 0x6885, 
+  0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709, 0x5A92, 0x9541, 0x6BCF, 
+  0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, 0x95E8, 0x95F7, 0x4EEC, 
+  0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, 0x731B, 0x68A6, 0x5B5F, 
+  0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25, 0x7C73, 
+  0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720, 
+  0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7, 
+  0x63CF, 0x7784, 0x85D0, 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511, 
+  0x706D, 0x6C11, 0x62BF, 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E, 
+  0x879F, 0x9E23, 0x94ED, 0x540D, 0x547D, 0x8C2C, 0x6478,      0, 
+plane c4
+at 0xa0
+  0x81D3, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469, 0x9B54, 
+  0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20, 0x5BDE, 
+  0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9, 0x59C6, 
+  0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728, 0x76EE, 
+  0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0, 0x90A3, 
+  0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, 0x8010, 0x5948, 0x5357, 
+  0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, 0x607C, 0x95F9, 0x6DD6, 
+  0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, 0x59AE, 0x9713, 0x502A, 
+  0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, 0x9006, 0x6EBA, 
+  0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5, 0x5A18, 
+  0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E, 0x954A, 
+  0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81,      0, 
+plane c5
+at 0xa0
+  0x8269, 0x62E7, 0x6CDE, 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113, 
+  0x6D53, 0x519C, 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, 0x6696, 
+  0x8650, 0x759F, 0x632A, 0x61E6, 0x7CEF, 0x8BFA, 0x54E6, 0x6B27, 
+  0x9E25, 0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, 0x556A, 0x8DB4, 
+  0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, 0x5F98, 
+  0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554, 
+  0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B, 
+  0x5486, 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA, 
+  0x57F9, 0x88F4, 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7, 
+  0x76C6, 0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA, 
+  0x787C, 0x7BF7, 0x81A8, 0x670B, 0x9E4F, 0x6367, 0x78B0, 0x576F, 
+  0x7812, 0x9739, 0x6279, 0x62AB, 0x5288, 0x7435, 0x6BD7,      0, 
+plane c6
+at 0xa0
+  0x833D, 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, 
+  0x5C41, 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, 
+  0x74E2, 0x7968, 0x6487, 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, 
+  0x8058, 0x4E52, 0x576A, 0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6, 
+  0x8BC4, 0x5C4F, 0x5761, 0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44, 
+  0x8FEB, 0x7C95, 0x5256, 0x6251, 0x94FA, 0x4EC6, 0x8386, 0x8461, 
+  0x83E9, 0x84B2, 0x57D4, 0x6734, 0x5703, 0x666E, 0x6D66, 0x8C31, 
+  0x66DD, 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A, 0x59BB, 0x4E03, 
+  0x51C4, 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67, 
+  0x7566, 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91, 
+  0x8D77, 0x5C82, 0x4E5E, 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, 
+  0x6C14, 0x8FC4, 0x5F03, 0x6C7D, 0x6CE3, 0x8BAB, 0x6390,      0, 
+plane c7
+at 0xa0
+  0x83ED, 0x6070, 0x6D3D, 0x7275, 0x6266, 0x948E, 0x94C5, 0x5343, 
+  0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E, 0x9ED4, 0x94B1, 0x94B3, 
+  0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, 0x5811, 0x5D4C, 0x6B20, 
+  0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, 0x5899, 0x8537, 0x5F3A, 
+  0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77A7, 0x4E54, 
+  0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, 0x5CED, 0x4FCF, 0x7A8D, 
+  0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83, 0x94A6, 0x4FB5, 0x4EB2, 
+  0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2, 0x79BD, 0x5BDD, 0x6C81, 
+  0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F, 0x6E05, 0x64CE, 0x6674, 
+  0x6C30, 0x60C5, 0x9877, 0x8BF7, 0x5E86, 0x743C, 0x7A77, 0x79CB, 
+  0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA, 0x914B, 0x6CC5, 0x8D8B, 
+  0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, 0x9A71, 0x6E20,      0, 
+plane c8
+at 0xa0
+  0x847C, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708, 0x98A7, 
+  0x6743, 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC, 0x5238, 
+  0x529D, 0x7F3A, 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7, 0x786E, 
+  0x96C0, 0x88D9, 0x7FA4, 0x7136, 0x71C3, 0x5189, 0x67D3, 0x74E4, 
+  0x58E4, 0x6518, 0x56B7, 0x8BA9, 0x9976, 0x6270, 0x7ED5, 0x60F9, 
+  0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, 0x97E7, 0x4EFB, 0x8BA4, 
+  0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, 0x620E, 0x8338, 
+  0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2, 0x5197, 
+  0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A, 0x5982, 
+  0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E, 0x854A, 
+  0x745E, 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492, 0x6D12, 
+  0x8428, 0x816E, 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1,      0, 
+plane c9
+at 0xa0
+  0x8502, 0x4F1E, 0x6563, 0x6851, 0x55D3, 0x4E27, 0x6414, 0x9A9A, 
+  0x626B, 0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, 0x50E7, 0x838E, 
+  0x7802, 0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, 0x715E, 
+  0x7B5B, 0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D, 
+  0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55, 
+  0x6247, 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A, 
+  0x5C1A, 0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA, 
+  0x97F6, 0x5C11, 0x54E8, 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7, 
+  0x820C, 0x820D, 0x8D66, 0x6444, 0x5C04, 0x6151, 0x6D89, 0x793E, 
+  0x8BBE, 0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, 0x5A20, 
+  0x7EC5, 0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, 0x80BE, 0x614E, 
+  0x6E17, 0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3,      0, 
+plane ca
+at 0xa0
+  0x8581, 0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, 
+  0x72EE, 0x65BD, 0x6E7F, 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, 
+  0x62FE, 0x65F6, 0x4EC0, 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, 
+  0x77E2, 0x4F7F, 0x5C4E, 0x9A76, 0x59CB, 0x5F0F, 0x793A, 0x58EB, 
+  0x4E16, 0x67FF, 0x4E8B, 0x62ED, 0x8A93, 0x901D, 0x52BF, 0x662F, 
+  0x55DC, 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA, 0x9970, 0x6C0F, 
+  0x5E02, 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, 0x624B, 0x9996, 
+  0x5B88, 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C, 
+  0x67A2, 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, 
+  0x758F, 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, 
+  0x7F72, 0x8700, 0x9ECD, 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, 
+  0x675F, 0x620D, 0x7AD6, 0x5885, 0x5EB6, 0x6570, 0x6F31,      0, 
+plane cb
+at 0xa0
+  0x85F8, 0x6055, 0x5237, 0x800D, 0x6454, 0x8870, 0x7529, 0x5E05, 
+  0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D, 0x8C01, 0x6C34, 0x7761, 
+  0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714, 
+  0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D, 0x79C1, 0x53F8, 0x4E1D, 
+  0x6B7B, 0x8086, 0x5BFA, 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x9972, 
+  0x5DF3, 0x677E, 0x8038, 0x6002, 0x9882, 0x9001, 0x5B8B, 0x8BBC, 
+  0x8BF5, 0x641C, 0x8258, 0x64DE, 0x55FD, 0x82CF, 0x9165, 0x4FD7, 
+  0x7D20, 0x901F, 0x7C9F, 0x50F3, 0x5851, 0x6EAF, 0x5BBF, 0x8BC9, 
+  0x8083, 0x9178, 0x849C, 0x7B97, 0x867D, 0x968B, 0x968F, 0x7EE5, 
+  0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042, 0x96A7, 0x795F, 0x5B59, 
+  0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506, 0x7F29, 0x7410, 0x7D22, 
+  0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83, 0x5979, 0x5854,      0, 
+plane cc
+at 0xa0
+  0x866A, 0x736D, 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, 0x62AC, 
+  0x53F0, 0x6CF0, 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D, 0x644A, 
+  0x8D2A, 0x762B, 0x6EE9, 0x575B, 0x6A80, 0x75F0, 0x6F6D, 0x8C2D, 
+  0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, 0x63A2, 0x53F9, 0x70AD, 
+  0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B, 0x5510, 0x7CD6, 
+  0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B, 0x6ED4, 
+  0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, 0x5957, 
+  0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, 0x8E22, 
+  0x9511, 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, 0x568F, 
+  0x60D5, 0x6D95, 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, 0x7530, 
+  0x751C, 0x606C, 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2, 0x773A, 
+  0x8DF3, 0x8D34, 0x94C1, 0x5E16, 0x5385, 0x542C, 0x70C3,      0, 
+plane cd
+at 0xa0
+  0x8716, 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247, 
+  0x901A, 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, 
+  0x6876, 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, 
+  0x900F, 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, 
+  0x5C60, 0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, 
+  0x817F, 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, 
+  0x6258, 0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, 0x59A5, 
+  0x62D3, 0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6, 
+  0x889C, 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D, 
+  0x4E38, 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB, 
+  0x5B9B, 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, 
+  0x7F51, 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01,      0, 
+plane ce
+at 0xa0
+  0x87A4, 0x5DCD, 0x5FAE, 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 
+  0x552F, 0x60DF, 0x4E3A, 0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4, 
+  0x4F1F, 0x4F2A, 0x5C3E, 0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F, 
+  0x80C3, 0x5582, 0x9B4F, 0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170, 
+  0x536B, 0x761F, 0x6E29, 0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B, 
+  0x7A33, 0x7D0A, 0x95EE, 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, 
+  0x6DA1, 0x7A9D, 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 
+  0x545C, 0x94A8, 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, 
+  0x68A7, 0x543E, 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 
+  0x821E, 0x4F0D, 0x4FAE, 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 
+  0x52FF, 0x52A1, 0x609F, 0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F, 
+  0x7852, 0x77FD, 0x6670, 0x563B, 0x5438, 0x9521, 0x727A,      0, 
+plane cf
+at 0xa0
+  0x8823, 0x7A00, 0x606F, 0x5E0C, 0x6089, 0x819D, 0x5915, 0x60DC, 
+  0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280, 0x6A84, 0x88AD, 0x5E2D, 
+  0x4E60, 0x5AB3, 0x559C, 0x94E3, 0x6D17, 0x7CFB, 0x9699, 0x620F, 
+  0x7EC6, 0x778E, 0x867E, 0x5323, 0x971E, 0x8F96, 0x6687, 0x5CE1, 
+  0x4FA0, 0x72ED, 0x4E0B, 0x53A6, 0x590F, 0x5413, 0x6380, 0x9528, 
+  0x5148, 0x4ED9, 0x9C9C, 0x7EA4, 0x54B8, 0x8D24, 0x8854, 0x8237, 
+  0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E, 0x9669, 0x73B0, 0x732E, 
+  0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA, 0x9677, 0x9650, 0x7EBF, 
+  0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1, 0x8944, 0x6E58, 0x4E61, 
+  0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD, 0x4EAB, 0x9879, 0x5DF7, 
+  0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427, 0x785D, 0x9704, 0x524A, 
+  0x54EE, 0x56A3, 0x9500, 0x6D88, 0x5BB5, 0x6DC6, 0x6653,      0, 
+plane d0
+at 0xa0
+  0x88AA, 0x5C0F, 0x5B5D, 0x6821, 0x8096, 0x5578, 0x7B11, 0x6548, 
+  0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, 0x534F, 0x631F, 0x643A, 
+  0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0, 0x5378, 0x87F9, 
+  0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF, 0x950C, 
+  0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845, 0x661F, 
+  0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62, 0x90A2, 
+  0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144, 0x51F6, 
+  0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE, 0x7F9E, 
+  0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, 0x7EE3, 0x589F, 0x620C, 
+  0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, 0x8BB8, 0x84C4, 0x9157, 
+  0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, 0x7D6E, 0x5A7F, 0x7EEA, 
+  0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB, 0x7384,      0, 
+plane d1
+at 0xa0
+  0x8937, 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66, 
+  0x7A74, 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2, 
+  0x5BFB, 0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A, 
+  0x8FC5, 0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD, 
+  0x7259, 0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, 0x54D1, 0x4E9A, 
+  0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, 0x76D0, 0x4E25, 
+  0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, 0x960E, 0x708E, 
+  0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, 0x5830, 
+  0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4, 
+  0x8C1A, 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C, 
+  0x4F6F, 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2, 
+  0x517B, 0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476,      0, 
+plane d2
+at 0xa0
+  0x89A1, 0x6447, 0x5C27, 0x9065, 0x7A91, 0x8C23, 0x59DA, 0x54AC, 
+  0x8200, 0x836F, 0x8981, 0x8000, 0x6930, 0x564E, 0x8036, 0x7237, 
+  0x91CE, 0x51B6, 0x4E5F, 0x9875, 0x6396, 0x4E1A, 0x53F6, 0x66F3, 
+  0x814B, 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1, 
+  0x4F9D, 0x4F0A, 0x8863, 0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA, 
+  0x80F0, 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681, 
+  0x501A, 0x5DF2, 0x4E59, 0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613, 
+  0x9091, 0x5C79, 0x4EBF, 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, 
+  0x4EA6, 0x88D4, 0x610F, 0x6BC5, 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, 
+  0x8BE3, 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02, 0x7FFC, 0x7FCC, 0x7ECE, 
+  0x8335, 0x836B, 0x56E0, 0x6BB7, 0x97F3, 0x9634, 0x59FB, 0x541F, 
+  0x94F6, 0x6DEB, 0x5BC5, 0x996E, 0x5C39, 0x5F15, 0x9690,      0, 
+plane d3
+at 0xa0
+  0x8A1D, 0x5370, 0x82F1, 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28, 
+  0x83B9, 0x8424, 0x8425, 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8, 
+  0x5F71, 0x9896, 0x786C, 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3, 
+  0x75C8, 0x5EB8, 0x96CD, 0x8E0A, 0x86F9, 0x548F, 0x6CF3, 0x6D8C, 
+  0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D, 0x4F18, 0x60A0, 0x5FE7, 
+  0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9, 0x6CB9, 0x6E38, 0x9149, 
+  0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9, 0x8BF1, 0x53C8, 0x5E7C, 
+  0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206, 
+  0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685, 
+  0x4E88, 0x5A31, 0x96E8, 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED, 
+  0x7FBD, 0x7389, 0x57DF, 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB, 
+  0x5CEA, 0x5FA1, 0x6108, 0x6B32, 0x72F1, 0x80B2, 0x8A89,      0, 
+plane d4
+at 0xa0
+  0x8A80, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, 0x9A6D, 0x9E33, 
+  0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4, 0x8F95, 
+  0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC, 0x82D1, 
+  0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3, 0x94A5, 
+  0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91, 0x90E7, 
+  0x5300, 0x9668, 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655, 0x97F5, 
+  0x5B55, 0x531D, 0x7838, 0x6742, 0x683D, 0x54C9, 0x707E, 0x5BB0, 
+  0x8F7D, 0x518D, 0x5728, 0x54B1, 0x6512, 0x6682, 0x8D5E, 0x8D43, 
+  0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, 0x85FB, 0x67A3, 0x65E9, 
+  0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, 0x7076, 0x71E5, 
+  0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E, 0x618E, 
+  0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67,      0, 
+plane d5
+at 0xa0
+  0x8AE3, 0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D, 
+  0x70B8, 0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8, 
+  0x77BB, 0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, 0x65A9, 0x8F97, 
+  0x5D2D, 0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7AD9, 0x6E5B, 
+  0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, 0x638C, 0x6DA8, 
+  0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, 0x969C, 
+  0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146, 
+  0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005, 
+  0x9517, 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504, 
+  0x7827, 0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA, 
+  0x9707, 0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81, 
+  0x72F0, 0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, 0x653F,      0, 
+plane d6
+at 0xa0
+  0x8B45, 0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, 0x679D, 0x652F, 
+  0x5431, 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7, 
+  0x804C, 0x76F4, 0x690D, 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, 
+  0x6307, 0x6B62, 0x8DBE, 0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A, 
+  0x63B7, 0x81F3, 0x81F4, 0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A, 
+  0x79E9, 0x7A1A, 0x8D28, 0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92, 
+  0x4E2D, 0x76C5, 0x5FE0, 0x949F, 0x8877, 0x7EC8, 0x79CD, 0x80BF, 
+  0x91CD, 0x4EF2, 0x4F17, 0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8BCC, 
+  0x7CA5, 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1, 0x5B99, 0x663C, 
+  0x9AA4, 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, 0x8BF8, 0x8BDB, 
+  0x9010, 0x7AF9, 0x70DB, 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B, 
+  0x8457, 0x67F1, 0x52A9, 0x86C0, 0x8D2E, 0x94F8, 0x7B51,      0, 
+plane d7
+at 0xa0
+  0x8C1E, 0x4F4F, 0x6CE8, 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD, 
+  0x4E13, 0x7816, 0x8F6C, 0x64B0, 0x8D5A, 0x7BC6, 0x6869, 0x5E84, 
+  0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6, 0x690E, 0x9525, 0x8FFD, 
+  0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6, 0x6349, 0x62D9, 0x5353, 
+  0x684C, 0x7422, 0x8301, 0x914C, 0x5544, 0x7740, 0x707C, 0x6D4A, 
+  0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B, 
+  0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA, 0x6E0D, 0x5B57, 0x9B03, 
+  0x68D5, 0x8E2A, 0x5B97, 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70, 
+  0x594F, 0x63CD, 0x79DF, 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5, 
+  0x963B, 0x7EC4, 0x94BB, 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A, 
+  0x5C0A, 0x9075, 0x6628, 0x5DE6, 0x4F50, 0x67DE, 0x505A, 0x4F5C, 
+  0x5750, 0x5EA7,      0,      0,      0,      0,      0,      0, 
+plane d8
+at 0xa0
+  0x8CAD, 0x4E8D, 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345, 0x4E15, 
+  0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA, 0x4E3F, 
+  0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10, 0x56DF, 0x80E4, 
+  0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10, 0x4E5C, 
+  0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4, 0x538D, 
+  0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A, 0x53F5, 
+  0x5326, 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202, 0x5208, 
+  0x520E, 0x522D, 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, 0x5261, 
+  0x525C, 0x84AF, 0x527D, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 
+  0x7F54, 0x4EBB, 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB, 
+  0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x4F25, 0x4F27, 
+  0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A, 0x4F5D,      0, 
+plane d9
+at 0xa0
+  0x8D0D, 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91, 
+  0x4F89, 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, 
+  0x4F94, 0x4FE6, 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, 
+  0x4FD1, 0x4FDF, 0x4FF8, 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F, 
+  0x502E, 0x502D, 0x4FFE, 0x501C, 0x500C, 0x5025, 0x5028, 0x507E, 
+  0x5043, 0x5055, 0x5048, 0x504E, 0x506C, 0x507B, 0x50A5, 0x50A7, 
+  0x50A9, 0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, 0x50E6, 0x50EE, 
+  0x5107, 0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, 0x9FA0, 
+  0x6C46, 0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914, 
+  0x52F9, 0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0, 
+  0x5156, 0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980, 
+  0x5B34, 0x8803, 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC,      0, 
+plane da
+at 0xa0
+  0x8DD4, 0x51C7, 0x5196, 0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7, 
+  0x8BAA, 0x8BB4, 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF, 
+  0x8BCE, 0x8BD2, 0x8BD3, 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC, 
+  0x8BDF, 0x8BE0, 0x8BE4, 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, 
+  0x8BF6, 0x8BF9, 0x8BFC, 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, 
+  0x8C0C, 0x8C0F, 0x8C11, 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, 
+  0x8C1B, 0x8C18, 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, 
+  0x8C2A, 0x8C2B, 0x8C2E, 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, 
+  0x5369, 0x537A, 0x961D, 0x9622, 0x9621, 0x9631, 0x962A, 0x963D, 
+  0x963C, 0x9642, 0x9649, 0x9654, 0x965F, 0x9667, 0x966C, 0x9672, 
+  0x9674, 0x9688, 0x968D, 0x9697, 0x96B0, 0x9097, 0x909B, 0x909D, 
+  0x9099, 0x90AC, 0x90A1, 0x90B4, 0x90B3, 0x90B6, 0x90BA,      0, 
+plane db
+at 0xa0
+  0x8E71, 0x90B8, 0x90B0, 0x90CF, 0x90C5, 0x90BE, 0x90D0, 0x90C4, 
+  0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC, 0x90D7, 0x90DB, 0x90EB, 
+  0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E, 0x9123, 0x9131, 0x912F, 
+  0x9139, 0x9143, 0x9146, 0x520D, 0x5942, 0x52A2, 0x52AC, 0x52AD, 
+  0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, 0x53DF, 0x71EE, 0x77CD, 
+  0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, 0x5F01, 0x755A, 0x5DEF, 
+  0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, 0x58C5, 0x58D1, 0x5729, 
+  0x572C, 0x572A, 0x5733, 0x5739, 0x572E, 0x572F, 0x575C, 0x573B, 
+  0x5742, 0x5769, 0x5785, 0x576B, 0x5786, 0x577C, 0x577B, 0x5768, 
+  0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4, 0x578C, 0x57B2, 0x57CF, 
+  0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5, 0x57D8, 0x57DA, 0x57D9, 
+  0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8, 0x57E4, 0x57DD,      0, 
+plane dc
+at 0xa0
+  0x8EE4, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E, 0x5819, 
+  0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, 0x5880, 
+  0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, 0x828A, 
+  0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB, 0x82B8, 
+  0x82BE, 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE, 
+  0x82CB, 0x82CC, 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F, 
+  0x82C4, 0x82CE, 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x830F, 
+  0x8307, 0x82DC, 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB, 0x82D3, 
+  0x8311, 0x831A, 0x8306, 0x8314, 0x8315, 0x82E0, 0x82D5, 0x831C, 
+  0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, 0x8334, 0x8331, 
+  0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F, 0x8340, 
+  0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365,      0, 
+plane dd
+at 0xa0
+  0x8F44, 0x8368, 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E, 
+  0x83B0, 0x8378, 0x83B3, 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C, 
+  0x8385, 0x837C, 0x83B6, 0x83A9, 0x837D, 0x83B8, 0x837B, 0x8398, 
+  0x839E, 0x83A8, 0x83BA, 0x83BC, 0x83C1, 0x8401, 0x83E5, 0x83D8, 
+  0x5807, 0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6, 0x841C, 0x8438, 
+  0x8411, 0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8, 0x83F9, 
+  0x83EA, 0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451, 
+  0x845A, 0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478, 
+  0x843C, 0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D, 
+  0x84C1, 0x84CD, 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF, 
+  0x84BA, 0x84E0, 0x84A1, 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3, 
+  0x850C, 0x750D, 0x8538, 0x84F0, 0x8539, 0x851F, 0x853A,      0, 
+plane de
+at 0xa0
+  0x9018, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, 0x8548, 0x8568, 
+  0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4, 
+  0x85A8, 0x8587, 0x858F, 0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9, 
+  0x85B7, 0x85B0, 0x85D3, 0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605, 
+  0x8629, 0x8616, 0x863C, 0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037, 
+  0x5955, 0x595A, 0x5958, 0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34, 
+  0x624C, 0x626A, 0x629F, 0x62BB, 0x62CA, 0x62DA, 0x62D7, 0x62EE, 
+  0x6322, 0x62F6, 0x6339, 0x634B, 0x6343, 0x63AD, 0x63F6, 0x6371, 
+  0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A, 0x6369, 0x63AE, 
+  0x63BC, 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, 0x63DE, 0x63CE, 
+  0x6452, 0x63C6, 0x63BE, 0x6445, 0x6441, 0x640B, 0x641B, 0x6420, 
+  0x640C, 0x6426, 0x6421, 0x645E, 0x6484, 0x646D, 0x6496,      0, 
+plane df
+at 0xa0
+  0x90C0, 0x647A, 0x64B7, 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0, 
+  0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525, 0x652E, 0x5F0B, 0x5FD2, 
+  0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, 0x53E9, 0x53E8, 0x53FB, 
+  0x5412, 0x5416, 0x5406, 0x544B, 0x5452, 0x5453, 0x5454, 0x5456, 
+  0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 
+  0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484, 0x5476, 0x5466, 
+  0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7, 0x54A6, 
+  0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC, 
+  0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF, 
+  0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522, 
+  0x5523, 0x550F, 0x5511, 0x5527, 0x552A, 0x5567, 0x558F, 0x55B5, 
+  0x5549, 0x556D, 0x5541, 0x5555, 0x553F, 0x5550, 0x553C,      0, 
+plane e0
+at 0xa0
+  0x9144, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 
+  0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581, 
+  0x559F, 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE, 
+  0x5594, 0x5599, 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x55EB, 
+  0x55EC, 0x55D4, 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2, 
+  0x55F3, 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94, 0x561E, 
+  0x5608, 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600, 0x5627, 
+  0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, 0x5659, 
+  0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, 0x567B, 
+  0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1, 
+  0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C, 
+  0x5E0F, 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C,      0, 
+plane e1
+at 0xa0
+  0x91E5, 0x5E37, 0x5E44, 0x5E54, 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 
+  0x5C7A, 0x5C8D, 0x5C90, 0x5C96, 0x5C88, 0x5C98, 0x5C99, 0x5C91, 
+  0x5C9A, 0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1, 
+  0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5, 
+  0x5D02, 0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, 
+  0x5D1B, 0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 
+  0x5D5D, 0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99, 
+  0x5D9D, 0x8C73, 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87, 
+  0x5F89, 0x5F8C, 0x5F95, 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 
+  0x5FBC, 0x8862, 0x5F61, 0x72AD, 0x72B0, 0x72B4, 0x72B7, 0x72B8, 
+  0x72C3, 0x72C1, 0x72CE, 0x72CD, 0x72D2, 0x72E8, 0x72EF, 0x72E9, 
+  0x72F2, 0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303, 0x72FA,      0, 
+plane e2
+at 0xa0
+  0x9245, 0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, 0x731E, 0x731D, 
+  0x7315, 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, 0x7331, 0x7350, 
+  0x734D, 0x7357, 0x7360, 0x736C, 0x736F, 0x737E, 0x821B, 0x5925, 
+  0x98E7, 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996A, 
+  0x996B, 0x996C, 0x9974, 0x9977, 0x997D, 0x9980, 0x9984, 0x9987, 
+  0x998A, 0x998D, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5E80, 
+  0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, 0x5EB5, 0x5EBE, 
+  0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, 0x81BA, 
+  0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1, 
+  0x5FE4, 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019, 
+  0x6035, 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, 0x602B, 0x600A, 
+  0x603F, 0x6021, 0x6078, 0x6079, 0x607B, 0x607A, 0x6042,      0, 
+plane e3
+at 0xa0
+  0x92A7, 0x606A, 0x607D, 0x6096, 0x609A, 0x60AD, 0x609D, 0x6083, 
+  0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, 0x60B1, 0x60DD, 0x60D8, 
+  0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60F4, 
+  0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7, 
+  0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x95E9, 0x95EB, 0x95F1, 
+  0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603, 0x9604, 0x9606, 
+  0x9608, 0x960A, 0x960B, 0x960C, 0x960D, 0x960F, 0x9612, 0x9615, 
+  0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35, 
+  0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85, 0x6C90, 0x6C94, 0x6C8C, 
+  0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, 0x6CA9, 0x6CD0, 0x6CD4, 
+  0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2, 0x6CE0, 0x6CD6, 
+  0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE,      0, 
+plane e4
+at 0xa0
+  0x9309, 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04, 
+  0x6D19, 0x6D0E, 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F, 
+  0x6D52, 0x6D54, 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E, 
+  0x6D93, 0x6D94, 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7, 
+  0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6, 0x6DDD, 
+  0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E, 0x6E4E, 
+  0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, 0x6E25, 
+  0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5, 
+  0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F, 
+  0x6EC2, 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9, 
+  0x6F2F, 0x6F36, 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89, 
+  0x6F8D, 0x6F8C, 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1,      0, 
+plane e5
+at 0xa0
+  0x936B, 0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, 
+  0x6FDE, 0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, 0x7035, 
+  0x704F, 0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, 
+  0x752F, 0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 
+  0x8B07, 0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, 
+  0x8FE6, 0x8FF3, 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, 
+  0x900D, 0x9016, 0x9021, 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, 
+  0x9051, 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9, 
+  0x9074, 0x907D, 0x9082, 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57, 
+  0x5F56, 0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63, 
+  0x5C66, 0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, 
+  0x5C6E, 0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3,      0, 
+plane e6
+at 0xa0
+  0x93CD, 0x5997, 0x59CA, 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, 
+  0x59AF, 0x59D7, 0x59BE, 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, 
+  0x59D8, 0x59F9, 0x5A0C, 0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23, 
+  0x5A13, 0x5A40, 0x5A67, 0x5A4A, 0x5A55, 0x5A3C, 0x5A62, 0x5A75, 
+  0x80EC, 0x5AAA, 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE, 0x5AEB, 0x5AB2, 
+  0x5AD2, 0x5AD4, 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, 0x5AE6, 
+  0x5AD8, 0x5ADC, 0x5B09, 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40, 
+  0x5C15, 0x5C1C, 0x5B5A, 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, 
+  0x9A75, 0x9A77, 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, 
+  0x9A85, 0x9A88, 0x9A8A, 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, 
+  0x9A9B, 0x9A9C, 0x9A9D, 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, 
+  0x9AA7, 0x7E9F, 0x7EA1, 0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9,      0, 
+plane e7
+at 0xa0
+  0x942E, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, 0x7EC1, 0x7EC2, 0x7EC9, 
+  0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1, 
+  0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6, 
+  0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, 0x7F02, 0x7F03, 0x7F07, 0x7F08, 
+  0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, 0x7F12, 0x7F17, 0x7F19, 0x7F1C, 
+  0x7F1B, 0x7F1F, 0x7F21, 0x7F22, 0x7F23, 0x7F24, 0x7F25, 0x7F26, 
+  0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D, 0x7F2F, 0x7F30, 0x7F31, 
+  0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F, 0x5DDB, 0x753E, 0x9095, 
+  0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, 0x73CF, 0x73C2, 0x73D1, 
+  0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, 0x73E5, 0x73D9, 0x987C, 
+  0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA, 0x73F2, 0x740F, 0x742A, 
+  0x745B, 0x7426, 0x7425, 0x7428, 0x7430, 0x742E, 0x742C,      0, 
+plane e8
+at 0xa0
+  0x9520, 0x741B, 0x741A, 0x7441, 0x745C, 0x7457, 0x7455, 0x7459, 
+  0x7477, 0x746D, 0x747E, 0x749C, 0x748E, 0x7480, 0x7481, 0x7487, 
+  0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, 0x74A7, 0x74D2, 0x74BA, 
+  0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, 0x6748, 0x6769, 
+  0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775, 0x67A8, 
+  0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809, 0x67D8, 
+  0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA, 0x67B3, 
+  0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, 0x67FD, 
+  0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, 0x6864, 
+  0x6883, 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683E, 
+  0x684A, 0x6849, 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877, 0x6893, 
+  0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, 0x6920, 0x68F9,      0, 
+plane e9
+at 0xa0
+  0x95CB, 0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910, 
+  0x6971, 0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980, 
+  0x6998, 0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989, 
+  0x6966, 0x6963, 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD, 
+  0x69D4, 0x69B1, 0x69C1, 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D, 
+  0x69FF, 0x6A2F, 0x69ED, 0x6A17, 0x6A18, 0x6A65, 0x69F2, 0x6A44, 
+  0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, 0x6A35, 0x6A8E, 0x6A79, 0x6A3D, 
+  0x6A28, 0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, 0x6A97, 0x6AAB, 
+  0x7337, 0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, 0x6B93, 
+  0x6B8D, 0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, 
+  0x8F72, 0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 
+  0x8F7C, 0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B,      0, 
+plane ea
+at 0xa0
+  0x968A, 0x8F8D, 0x8F8E, 0x8F8F, 0x8F98, 0x8F9A, 0x8ECE, 0x620B, 
+  0x6217, 0x621B, 0x621F, 0x6222, 0x6221, 0x6225, 0x6224, 0x622C, 
+  0x81E7, 0x74EF, 0x74F4, 0x74FF, 0x750F, 0x7511, 0x7513, 0x6534, 
+  0x65EE, 0x65EF, 0x65F0, 0x660A, 0x6619, 0x6772, 0x6603, 0x6615, 
+  0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, 0x6636, 0x6635, 
+  0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656, 0x6661, 0x6657, 
+  0x6677, 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC, 
+  0x66E6, 0x66E9, 0x8D32, 0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40, 
+  0x8D45, 0x8D46, 0x8D48, 0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59, 
+  0x89C7, 0x89CA, 0x89CB, 0x89CC, 0x89CE, 0x89CF, 0x89D0, 0x89D1, 
+  0x726E, 0x729F, 0x725D, 0x7266, 0x726F, 0x727E, 0x727F, 0x7284, 
+  0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332, 0x63B0,      0, 
+plane eb
+at 0xa0
+  0x9720, 0x643F, 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5, 
+  0x6BF9, 0x6C05, 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19, 
+  0x6C1A, 0x6C21, 0x6C29, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555, 
+  0x656B, 0x724D, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809F, 
+  0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD, 0x80B1, 0x80AB, 0x80AD, 
+  0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9, 0x80EA, 0x80DB, 0x80C2, 
+  0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, 0x80DD, 0x80EB, 0x80F1, 
+  0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715, 0x8112, 
+  0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C, 
+  0x8153, 0x8174, 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C, 
+  0x817D, 0x816D, 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191, 
+  0x6ED5, 0x81A3, 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB,      0, 
+plane ec
+at 0xa0
+  0x979D, 0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43, 0x6B46, 
+  0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA, 0x6BB3, 
+  0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, 0x65C6, 
+  0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, 0x709C, 
+  0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, 0x70E8, 
+  0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, 0x715C, 
+  0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, 0x71B3, 
+  0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, 0x721D, 
+  0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D, 0x6243, 
+  0x6248, 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, 0x795C, 
+  0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, 0x7967, 0x797A, 
+  0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0,      0, 
+plane ed
+at 0xa0
+  0x980E, 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, 
+  0x60AB, 0x6106, 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, 
+  0x6206, 0x8080, 0x807F, 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, 
+  0x7800, 0x7809, 0x7817, 0x7818, 0x7811, 0x65AB, 0x782D, 0x781C, 
+  0x781D, 0x7839, 0x783A, 0x783B, 0x781F, 0x783C, 0x7825, 0x782C, 
+  0x7823, 0x7829, 0x784E, 0x786D, 0x7856, 0x7857, 0x7826, 0x7850, 
+  0x7847, 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, 0x789C, 
+  0x78A1, 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9, 
+  0x78EC, 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, 
+  0x9F9B, 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, 
+  0x7707, 0x7708, 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, 
+  0x7738, 0x7750, 0x7751, 0x7747, 0x7743, 0x775A, 0x7768,      0, 
+plane ee
+at 0xa0
+  0x986E, 0x7762, 0x7765, 0x777F, 0x778D, 0x777D, 0x7780, 0x778C, 
+  0x7791, 0x779F, 0x77A0, 0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540, 
+  0x754E, 0x754B, 0x7548, 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, 
+  0x7F61, 0x7F5F, 0x8A48, 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, 
+  0x7F7E, 0x76CD, 0x76E5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948B, 
+  0x948A, 0x948C, 0x948D, 0x948F, 0x9490, 0x9494, 0x9497, 0x9495, 
+  0x949A, 0x949B, 0x949C, 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, 
+  0x94AC, 0x94AF, 0x94B0, 0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8, 
+  0x94B9, 0x94BA, 0x94BC, 0x94BD, 0x94BF, 0x94C4, 0x94C8, 0x94C9, 
+  0x94CA, 0x94CB, 0x94CC, 0x94CD, 0x94CE, 0x94D0, 0x94D1, 0x94D2, 
+  0x94D5, 0x94D6, 0x94D7, 0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF, 
+  0x94E0, 0x94E2, 0x94E4, 0x94E5, 0x94E7, 0x94E8, 0x94EA,      0, 
+plane ef
+at 0xa0
+  0x9907, 0x94E9, 0x94EB, 0x94EE, 0x94EF, 0x94F3, 0x94F4, 0x94F5, 
+  0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF, 0x9503, 0x9502, 0x9506, 
+  0x9507, 0x9509, 0x950A, 0x950D, 0x950E, 0x950F, 0x9512, 0x9513, 
+  0x9514, 0x9515, 0x9516, 0x9518, 0x951B, 0x951D, 0x951E, 0x951F, 
+  0x9522, 0x952A, 0x952B, 0x9529, 0x952C, 0x9531, 0x9532, 0x9534, 
+  0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F, 0x9542, 0x9535, 
+  0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, 0x954F, 0x9552, 
+  0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955B, 0x955E, 
+  0x955F, 0x955D, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 
+  0x9568, 0x9569, 0x956A, 0x956B, 0x956C, 0x956F, 0x9571, 0x9572, 
+  0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9, 0x79D5, 0x79ED, 0x79E3, 
+  0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02, 0x7A1E, 0x7A14,      0, 
+plane f0
+at 0xa0
+  0x9989, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, 0x7688, 
+  0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, 0x9E20, 
+  0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, 0x9E31, 
+  0x9E36, 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, 0x9E42, 
+  0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, 0x9E4E, 
+  0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, 0x9E63, 
+  0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C, 0x9E71, 
+  0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D, 0x75AC, 
+  0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, 0x75C3, 
+  0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, 0x75EB, 
+  0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, 0x7605, 
+  0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619,      0, 
+plane f1
+at 0xa0
+  0x99F9, 0x761B, 0x763C, 0x7622, 0x7620, 0x7640, 0x762D, 0x7630, 
+  0x763F, 0x7635, 0x7643, 0x763E, 0x7633, 0x764D, 0x765E, 0x7654, 
+  0x765C, 0x7656, 0x766B, 0x766F, 0x7FCA, 0x7AE6, 0x7A78, 0x7A79, 
+  0x7A80, 0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0, 0x7AAC, 0x7AA8, 
+  0x7AAD, 0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F, 0x8882, 
+  0x88A2, 0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3, 
+  0x88E5, 0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921, 
+  0x8919, 0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941, 
+  0x8966, 0x897B, 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012, 
+  0x8014, 0x8016, 0x801C, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 
+  0x8029, 0x8028, 0x8031, 0x800B, 0x8035, 0x8043, 0x8046, 0x804D, 
+  0x8052, 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883,      0, 
+plane f2
+at 0xa0
+  0x9A59, 0x9889, 0x988C, 0x988D, 0x988F, 0x9894, 0x989A, 0x989B, 
+  0x989E, 0x989F, 0x98A1, 0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654, 
+  0x866C, 0x866E, 0x867F, 0x867A, 0x867C, 0x867B, 0x86A8, 0x868D, 
+  0x868B, 0x86AC, 0x869D, 0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9, 
+  0x86B6, 0x86C4, 0x86B5, 0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF, 
+  0x86C9, 0x86CF, 0x86B4, 0x86E9, 0x86F1, 0x86F2, 0x86ED, 0x86F3, 
+  0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF, 0x86D8, 0x86D1, 0x8703, 
+  0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, 0x8723, 0x873B, 
+  0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, 0x8734, 0x8731, 
+  0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, 0x877E, 0x877B, 
+  0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, 0x8763, 0x877C, 
+  0x8764, 0x8759, 0x8765, 0x8793, 0x87AF, 0x87A8, 0x87D2,      0, 
+plane f3
+at 0xa0
+  0x9B06, 0x87C6, 0x8788, 0x8785, 0x87AD, 0x8797, 0x8783, 0x87AB, 
+  0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB, 0x87D3, 0x87BD, 0x87D1, 
+  0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, 0x87EE, 0x8816, 0x8813, 
+  0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36, 0x7F42, 
+  0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7B03, 0x7B04, 
+  0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19, 
+  0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E, 0x7B1E, 
+  0x7B58, 0x7B5A, 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E, 
+  0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8, 
+  0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB, 
+  0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD, 0x7BDA, 0x7BE5, 0x7BE6, 
+  0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, 0x7C16, 0x7C0B,      0, 
+plane f4
+at 0xa0
+  0x9B7B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE, 
+  0x8201, 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223, 
+  0x822D, 0x822F, 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, 0x8234, 
+  0x823E, 0x8244, 0x8249, 0x824B, 0x824F, 0x825A, 0x825F, 0x8268, 
+  0x887E, 0x8885, 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D, 0x7F9F, 
+  0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91, 0x7C9D, 
+  0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1, 0x7CC7, 
+  0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, 0x66A8, 
+  0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE, 
+  0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8, 
+  0x9EB4, 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D, 
+  0x8C47, 0x8C49, 0x914A, 0x9150, 0x914E, 0x914F, 0x9164,      0, 
+plane f5
+at 0xa0
+  0x9BDB, 0x9162, 0x9161, 0x9170, 0x9169, 0x916F, 0x917D, 0x917E, 
+  0x9172, 0x9174, 0x9179, 0x918C, 0x9185, 0x9190, 0x918D, 0x9191, 
+  0x91A2, 0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4, 
+  0x91BA, 0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69, 
+  0x8DB5, 0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, 
+  0x8DDE, 0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, 
+  0x8DE3, 0x8DF9, 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 
+  0x8E1F, 0x8E2C, 0x8E2E, 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, 
+  0x8E35, 0x8E3D, 0x8E31, 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52, 
+  0x8E4A, 0x8E70, 0x8E76, 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F, 
+  0x8E94, 0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85, 
+  0x8C98, 0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC,      0, 
+plane f6
+at 0xa0
+  0x9C3B, 0x89E5, 0x89EB, 0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9, 
+  0x96F3, 0x96EF, 0x9706, 0x9701, 0x9708, 0x970F, 0x970E, 0x972A, 
+  0x972D, 0x9730, 0x973E, 0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87, 
+  0x9F88, 0x9F89, 0x9F8A, 0x9F8C, 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9, 
+  0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF, 0x96E0, 0x928E, 0x92AE, 
+  0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, 0x943E, 0x946B, 0x9C7F, 
+  0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x7A23, 0x9C8B, 0x9C8E, 
+  0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E, 
+  0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7, 
+  0x9CA8, 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2, 
+  0x9CB3, 0x9CB4, 0x9CB5, 0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC, 
+  0x9CBD, 0x9CC4, 0x9CC5, 0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB,      0, 
+plane f7
+at 0xa0
+  0x9CE1, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, 0x9CD3, 0x9CD4, 
+  0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, 0x9CDF, 0x9CE2, 
+  0x977C, 0x9785, 0x9791, 0x9792, 0x9794, 0x97AF, 0x97AB, 0x97A3, 
+  0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9E58, 0x9AB6, 0x9ABA, 
+  0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, 0x9ACB, 0x9ACC, 0x9AD1, 
+  0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48, 0x9B4D, 0x9B51, 0x98E8, 
+  0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF, 0x9AE1, 0x9AE6, 0x9AEF, 
+  0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, 0x9B0F, 0x9B13, 0x9B1F, 
+  0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, 0x9E87, 0x9E88, 0x9E8B, 
+  0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, 0x9EDD, 0x9EE0, 
+  0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, 0x9EEF, 0x9F22, 
+  0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, 0x9F44,      0, 
+plane f8
+at 0xa0
+  0x9D42,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane f9
+at 0xa0
+  0x9DA2,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fa
+at 0xa0
+  0x9E02,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fb
+at 0xa0
+  0x9EAA,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fc
+at 0xa0
+  0x9F31,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fd
+at 0xa0
+  0xF9F1,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+plane fe
+at 0xa0
+  0xE864,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
+       0,      0,      0,      0,      0,      0,      0,      0, 
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/cubig5.map
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/cubig5.map	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/cubig5.map	(revision 2000)
@@ -0,0 +1,1861 @@
+#
+# Creating compact CJK type1 fonts from Unicode 
+# Chinese Big5 encoding fonts.
+#
+plane 01 
+at 0x00
+  0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2027, 0xFF1B, 0xFF1A,
+  0xFF1F, 0xFF01, 0xFE30, 0x2026, 0x2025, 0xFE50, 0xFE51, 0xFE52,
+  0x00B7, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2013, 0xFE31,
+  0x2014, 0xFE33, 0x2574, 0xFE34, 0xFE4F, 0xFF08, 0xFF09, 0xFE35,
+  0xFE36, 0xFF5B, 0xFF5D, 0xFE37, 0xFE38, 0x3014, 0x3015, 0xFE39,
+  0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C, 0x300A, 0x300B, 0xFE3D,
+  0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C, 0x300D, 0xFE41,
+  0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A, 0xFE5B,
+  0xFE5C, 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C, 0x201D, 0x301D,
+  0x301E, 0x2035, 0x2032, 0xFF03, 0xFF06, 0xFF0A, 0x203B, 0x00A7,
+  0x3003, 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE, 0x2606, 0x2605,
+  0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25BD, 0x25BC, 0x32A3, 0x2105,
+  0x00AF, 0xFFE3, 0xFF3F, 0x02CD, 0xFE49, 0xFE4A, 0xFE4D, 0xFE4E,
+  0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, 0xFE61, 0xFF0B, 0xFF0D, 0x00D7,
+  0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, 0xFF1D, 0x2266, 0x2267,
+  0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63, 0xFE64, 0xFE65,
+  0xFE66, 0xFF5E, 0x2229, 0x222A, 0x22A5, 0x2220, 0x221F, 0x22BF,
+  0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234, 0x2640, 0x2642,
+  0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197,
+  0x2199, 0x2198, 0x2225, 0x2223, 0xFF0F, 0xFF3C, 0x2215, 0xFE68,
+  0xFF04, 0xFFE5, 0x3012, 0xFFE0, 0xFFE1, 0xFF05, 0xFF20, 0x2103,
+  0x2109, 0xFE69, 0xFE6A, 0xFE6B, 0x33D5, 0x339C, 0x339D, 0x339E,
+  0x33CE, 0x33A1, 0x338E, 0x338F, 0x33C4, 0x00B0, 0x5159, 0x515B,
+  0x515E, 0x515D, 0x5161, 0x5163, 0x55E7, 0x74E9, 0x7CCE, 0x2581,
+  0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588, 0x258F,
+  0x258E, 0x258D, 0x258C, 0x258B, 0x258A, 0x2589, 0x253C, 0x2534,
+  0x252C, 0x2524, 0x251C, 0x2594, 0x2500, 0x2502, 0x2595, 0x250C,
+  0x2510, 0x2514, 0x2518, 0x256D, 0x256E, 0x2570, 0x256F, 0x2550,
+  0x255E, 0x256A, 0x2561, 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x2571,
+  0x2572, 0x2573, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15,
+  0xFF16, 0xFF17, 0xFF18, 0xFF19, 0x2160, 0x2161, 0x2162, 0x2163,
+  0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x3021, 0x3022,
+plane 02 
+at 0x00
+  0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x5341,
+  0x5344, 0x5345, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26,
+  0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E,
+  0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36,
+  0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF41, 0xFF42, 0xFF43, 0xFF44,
+  0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C,
+  0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54,
+  0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x0391, 0x0392,
+  0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A,
+  0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3,
+  0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2,
+  0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA,
+  0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3,
+  0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x3105, 0x3106,
+  0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E,
+  0x310F, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116,
+  0x3117, 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E,
+  0x311F, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126,
+  0x3127, 0x3128, 0x3129, 0x02D9, 0x02C9, 0x02CA, 0x02C7, 0x02CB,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0, 0x20AC,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0, 0x4E00,
+  0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, 0x4E8C, 0x4EBA,
+  0x513F, 0x5165, 0x516B, 0x51E0, 0x5200, 0x5201, 0x529B, 0x5315,
+  0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08, 0x4E0A, 0x4E2B,
+  0x4E38, 0x51E1, 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, 0x4E8E, 0x4EA1,
+  0x5140, 0x5203, 0x52FA, 0x5343, 0x53C9, 0x53E3, 0x571F, 0x58EB,
+plane 03 
+at 0x00
+  0x5915, 0x5927, 0x5973, 0x5B50, 0x5B51, 0x5B53, 0x5BF8, 0x5C0F,
+  0x5C22, 0x5C38, 0x5C71, 0x5DDD, 0x5DE5, 0x5DF1, 0x5DF2, 0x5DF3,
+  0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, 0x624D, 0x4E11, 0x4E10,
+  0x4E0D, 0x4E2D, 0x4E30, 0x4E39, 0x4E4B, 0x5C39, 0x4E88, 0x4E91,
+  0x4E95, 0x4E92, 0x4E94, 0x4EA2, 0x4EC1, 0x4EC0, 0x4EC3, 0x4EC6,
+  0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB, 0x4EC4, 0x5143, 0x5141, 0x5167,
+  0x516D, 0x516E, 0x516C, 0x5197, 0x51F6, 0x5206, 0x5207, 0x5208,
+  0x52FB, 0x52FE, 0x52FF, 0x5316, 0x5339, 0x5348, 0x5347, 0x5345,
+  0x535E, 0x5384, 0x53CB, 0x53CA, 0x53CD, 0x58EC, 0x5929, 0x592B,
+  0x592A, 0x592D, 0x5B54, 0x5C11, 0x5C24, 0x5C3A, 0x5C6F, 0x5DF4,
+  0x5E7B, 0x5EFF, 0x5F14, 0x5F15, 0x5FC3, 0x6208, 0x6236, 0x624B,
+  0x624E, 0x652F, 0x6587, 0x6597, 0x65A4, 0x65B9, 0x65E5, 0x66F0,
+  0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79, 0x6BCB, 0x6BD4, 0x6BDB,
+  0x6C0F, 0x6C34, 0x706B, 0x722A, 0x7236, 0x723B, 0x7247, 0x7259,
+  0x725B, 0x72AC, 0x738B, 0x4E19, 0x4E16, 0x4E15, 0x4E14, 0x4E18,
+  0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E, 0x4EE5, 0x4ED8, 0x4ED4, 0x4ED5,
+  0x4ED6, 0x4ED7, 0x4EE3, 0x4EE4, 0x4ED9, 0x4EDE, 0x5145, 0x5144,
+  0x5189, 0x518A, 0x51AC, 0x51F9, 0x51FA, 0x51F8, 0x520A, 0x52A0,
+  0x529F, 0x5305, 0x5306, 0x5317, 0x531D, 0x4EDF, 0x534A, 0x5349,
+  0x5361, 0x5360, 0x536F, 0x536E, 0x53BB, 0x53EF, 0x53E4, 0x53F3,
+  0x53EC, 0x53EE, 0x53E9, 0x53E8, 0x53FC, 0x53F8, 0x53F5, 0x53EB,
+  0x53E6, 0x53EA, 0x53F2, 0x53F1, 0x53F0, 0x53E5, 0x53ED, 0x53FB,
+  0x56DB, 0x56DA, 0x5916, 0x592E, 0x5931, 0x5974, 0x5976, 0x5B55,
+  0x5B83, 0x5C3C, 0x5DE8, 0x5DE7, 0x5DE6, 0x5E02, 0x5E03, 0x5E73,
+  0x5E7C, 0x5F01, 0x5F18, 0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254,
+  0x6252, 0x6251, 0x65A5, 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B,
+  0x672D, 0x6B63, 0x6BCD, 0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40,
+  0x6C3E, 0x72AF, 0x7384, 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F,
+  0x7528, 0x7529, 0x7530, 0x7531, 0x7532, 0x7533, 0x758B, 0x767D,
+  0x76AE, 0x76BF, 0x76EE, 0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79BE,
+  0x7A74, 0x7ACB, 0x4E1E, 0x4E1F, 0x4E52, 0x4E53, 0x4E69, 0x4E99,
+  0x4EA4, 0x4EA6, 0x4EA5, 0x4EFF, 0x4F09, 0x4F19, 0x4F0A, 0x4F15,
+plane 04 
+at 0x00
+  0x4F0D, 0x4F10, 0x4F11, 0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0,
+  0x4EF3, 0x4EFD, 0x4F01, 0x4F0B, 0x5149, 0x5147, 0x5146, 0x5148,
+  0x5168, 0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, 0x5212, 0x520E,
+  0x5216, 0x52A3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409,
+  0x540F, 0x540C, 0x540A, 0x5410, 0x5401, 0x540B, 0x5404, 0x5411,
+  0x540D, 0x5408, 0x5403, 0x540E, 0x5406, 0x5412, 0x56E0, 0x56DE,
+  0x56DD, 0x5733, 0x5730, 0x5728, 0x572D, 0x572C, 0x572F, 0x5729,
+  0x5919, 0x591A, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597D,
+  0x5979, 0x5982, 0x5981, 0x5B57, 0x5B58, 0x5B87, 0x5B88, 0x5B85,
+  0x5B89, 0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74,
+  0x5F0F, 0x5F1B, 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D, 0x6210,
+  0x6263, 0x625B, 0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC, 0x65ED,
+  0x66F2, 0x66F3, 0x6709, 0x673D, 0x6734, 0x6731, 0x6735, 0x6B21,
+  0x6B64, 0x6B7B, 0x6C16, 0x6C5D, 0x6C57, 0x6C59, 0x6C5F, 0x6C60,
+  0x6C50, 0x6C55, 0x6C61, 0x6C5B, 0x6C4D, 0x6C4E, 0x7070, 0x725F,
+  0x725D, 0x767E, 0x7AF9, 0x7C73, 0x7CF8, 0x7F36, 0x7F8A, 0x7FBD,
+  0x8001, 0x8003, 0x800C, 0x8012, 0x8033, 0x807F, 0x8089, 0x808B,
+  0x808C, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, 0x821F,
+  0x826E, 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, 0x8863, 0x897F,
+  0x9621, 0x4E32, 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57, 0x4F5E,
+  0x4F34, 0x4F5B, 0x4F55, 0x4F30, 0x4F50, 0x4F51, 0x4F3D, 0x4F3A,
+  0x4F38, 0x4F43, 0x4F54, 0x4F3C, 0x4F46, 0x4F63, 0x4F5C, 0x4F60,
+  0x4F2F, 0x4F4E, 0x4F36, 0x4F59, 0x4F5D, 0x4F48, 0x4F5A, 0x514C,
+  0x514B, 0x514D, 0x5175, 0x51B6, 0x51B7, 0x5225, 0x5224, 0x5229,
+  0x522A, 0x5228, 0x52AB, 0x52A9, 0x52AA, 0x52AC, 0x5323, 0x5373,
+  0x5375, 0x541D, 0x542D, 0x541E, 0x543E, 0x5426, 0x544E, 0x5427,
+  0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541B, 0x5429, 0x544A,
+  0x5439, 0x543B, 0x5438, 0x542E, 0x5435, 0x5436, 0x5420, 0x543C,
+  0x5440, 0x5431, 0x542B, 0x541F, 0x542C, 0x56EA, 0x56F0, 0x56E4,
+  0x56EB, 0x574A, 0x5751, 0x5740, 0x574D, 0x5747, 0x574E, 0x573E,
+  0x5750, 0x574F, 0x573B, 0x58EF, 0x593E, 0x599D, 0x5992, 0x59A8,
+  0x599E, 0x59A3, 0x5999, 0x5996, 0x598D, 0x59A4, 0x5993, 0x598A,
+plane 05 
+at 0x00
+  0x59A5, 0x5B5D, 0x5B5C, 0x5B5A, 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F,
+  0x5C2C, 0x5C40, 0x5C41, 0x5C3F, 0x5C3E, 0x5C90, 0x5C91, 0x5C94,
+  0x5C8C, 0x5DEB, 0x5E0C, 0x5E8F, 0x5E87, 0x5E8A, 0x5EF7, 0x5F04,
+  0x5F1F, 0x5F64, 0x5F62, 0x5F77, 0x5F79, 0x5FD8, 0x5FCC, 0x5FD7,
+  0x5FCD, 0x5FF1, 0x5FEB, 0x5FF8, 0x5FEA, 0x6212, 0x6211, 0x6284,
+  0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626D, 0x628A, 0x627C,
+  0x627E, 0x6279, 0x6273, 0x6292, 0x626F, 0x6298, 0x626E, 0x6295,
+  0x6293, 0x6291, 0x6286, 0x6539, 0x653B, 0x6538, 0x65F1, 0x66F4,
+  0x675F, 0x674E, 0x674F, 0x6750, 0x6751, 0x675C, 0x6756, 0x675E,
+  0x6749, 0x6746, 0x6760, 0x6753, 0x6757, 0x6B65, 0x6BCF, 0x6C42,
+  0x6C5E, 0x6C99, 0x6C81, 0x6C88, 0x6C89, 0x6C85, 0x6C9B, 0x6C6A,
+  0x6C7A, 0x6C90, 0x6C70, 0x6C8C, 0x6C68, 0x6C96, 0x6C92, 0x6C7D,
+  0x6C83, 0x6C72, 0x6C7E, 0x6C74, 0x6C86, 0x6C76, 0x6C8D, 0x6C94,
+  0x6C98, 0x6C82, 0x7076, 0x707C, 0x707D, 0x7078, 0x7262, 0x7261,
+  0x7260, 0x72C4, 0x72C2, 0x7396, 0x752C, 0x752B, 0x7537, 0x7538,
+  0x7682, 0x76EF, 0x77E3, 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB,
+  0x7F55, 0x8096, 0x8093, 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2,
+  0x826F, 0x8292, 0x828B, 0x828D, 0x898B, 0x89D2, 0x8A00, 0x8C37,
+  0x8C46, 0x8C55, 0x8C9D, 0x8D64, 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA,
+  0x8F9B, 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, 0x8FC4, 0x5DE1, 0x9091,
+  0x90A2, 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, 0x91CC, 0x9632,
+  0x962E, 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73, 0x4E8B,
+  0x4E9B, 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73,
+  0x4F7F, 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75,
+  0x4F88, 0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A,
+  0x5154, 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD,
+  0x51FD, 0x523B, 0x5238, 0x5237, 0x523A, 0x5230, 0x522E, 0x5236,
+  0x5241, 0x52BE, 0x52BB, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366,
+  0x5377, 0x5378, 0x5379, 0x53D6, 0x53D4, 0x53D7, 0x5473, 0x5475,
+  0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, 0x5484, 0x5492,
+  0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, 0x5462,
+  0x5468, 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A,
+plane 06 
+at 0x00
+  0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, 0x5949, 0x5947,
+  0x5948, 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE,
+  0x59D1, 0x59C6, 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF,
+  0x59B3, 0x59D2, 0x59C5, 0x5B5F, 0x5B64, 0x5B63, 0x5B97, 0x5B9A,
+  0x5B98, 0x5B9C, 0x5B99, 0x5B9B, 0x5C1A, 0x5C48, 0x5C45, 0x5C46,
+  0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, 0x5CB1, 0x5CB3, 0x5E18,
+  0x5E1A, 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78, 0x5E9A, 0x5E97,
+  0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27, 0x5F29, 0x5F80,
+  0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD, 0x5FF5, 0x5FFF,
+  0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A, 0x6015, 0x6021,
+  0x6027, 0x6029, 0x602B, 0x601B, 0x6216, 0x6215, 0x623F, 0x623E,
+  0x6240, 0x627F, 0x62C9, 0x62CC, 0x62C4, 0x62BF, 0x62C2, 0x62B9,
+  0x62D2, 0x62DB, 0x62AB, 0x62D3, 0x62D4, 0x62CB, 0x62C8, 0x62A8,
+  0x62BD, 0x62BC, 0x62D0, 0x62D9, 0x62C7, 0x62CD, 0x62B5, 0x62DA,
+  0x62B1, 0x62D8, 0x62D6, 0x62D7, 0x62C6, 0x62AC, 0x62CE, 0x653E,
+  0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C, 0x6606, 0x6602,
+  0x660E, 0x6600, 0x660F, 0x6615, 0x660A, 0x6607, 0x670D, 0x670B,
+  0x676D, 0x678B, 0x6795, 0x6771, 0x679C, 0x6773, 0x6777, 0x6787,
+  0x679D, 0x6797, 0x676F, 0x6770, 0x677F, 0x6789, 0x677E, 0x6790,
+  0x6775, 0x679A, 0x6793, 0x677C, 0x676A, 0x6772, 0x6B23, 0x6B66,
+  0x6B67, 0x6B7F, 0x6C13, 0x6C1B, 0x6CE3, 0x6CE8, 0x6CF3, 0x6CB1,
+  0x6CCC, 0x6CE5, 0x6CB3, 0x6CBD, 0x6CBE, 0x6CBC, 0x6CE2, 0x6CAB,
+  0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4, 0x6CB9, 0x6CC1, 0x6CAE, 0x6CD7,
+  0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1, 0x6CDB, 0x6CCA, 0x6CAC,
+  0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0, 0x7095, 0x708E, 0x7092, 0x708A,
+  0x7099, 0x722C, 0x722D, 0x7238, 0x7248, 0x7267, 0x7269, 0x72C0,
+  0x72CE, 0x72D9, 0x72D7, 0x72D0, 0x73A9, 0x73A8, 0x739F, 0x73AB,
+  0x73A5, 0x753D, 0x759D, 0x7599, 0x759A, 0x7684, 0x76C2, 0x76F2,
+  0x76F4, 0x77E5, 0x77FD, 0x793E, 0x7940, 0x7941, 0x79C9, 0x79C8,
+  0x7A7A, 0x7A79, 0x7AFA, 0x7CFE, 0x7F54, 0x7F8C, 0x7F8B, 0x8005,
+  0x80BA, 0x80A5, 0x80A2, 0x80B1, 0x80A1, 0x80AB, 0x80A9, 0x80B4,
+  0x80AA, 0x80AF, 0x81E5, 0x81FE, 0x820D, 0x82B3, 0x829D, 0x8299,
+plane 07 
+at 0x00
+  0x82AD, 0x82BD, 0x829F, 0x82B9, 0x82B1, 0x82AC, 0x82A5, 0x82AF,
+  0x82B8, 0x82A3, 0x82B0, 0x82BE, 0x82B7, 0x864E, 0x8671, 0x521D,
+  0x8868, 0x8ECB, 0x8FCE, 0x8FD4, 0x8FD1, 0x90B5, 0x90B8, 0x90B1,
+  0x90B6, 0x91C7, 0x91D1, 0x9577, 0x9580, 0x961C, 0x9640, 0x963F,
+  0x963B, 0x9644, 0x9642, 0x96B9, 0x96E8, 0x9752, 0x975E, 0x4E9F,
+  0x4EAD, 0x4EAE, 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, 0x4FE0, 0x4FD1,
+  0x4FCF, 0x4FDD, 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, 0x4FCA, 0x4FD7,
+  0x4FAE, 0x4FD0, 0x4FC4, 0x4FC2, 0x4FDA, 0x4FCE, 0x4FDE, 0x4FB7,
+  0x5157, 0x5192, 0x5191, 0x51A0, 0x524E, 0x5243, 0x524A, 0x524D,
+  0x524C, 0x524B, 0x5247, 0x52C7, 0x52C9, 0x52C3, 0x52C1, 0x530D,
+  0x5357, 0x537B, 0x539A, 0x53DB, 0x54AC, 0x54C0, 0x54A8, 0x54CE,
+  0x54C9, 0x54B8, 0x54A6, 0x54B3, 0x54C7, 0x54C2, 0x54BD, 0x54AA,
+  0x54C1, 0x54C4, 0x54C8, 0x54AF, 0x54AB, 0x54B1, 0x54BB, 0x54A9,
+  0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B, 0x57A0, 0x57A3, 0x57A2,
+  0x57CE, 0x57AE, 0x5793, 0x5955, 0x5951, 0x594F, 0x594E, 0x5950,
+  0x59DC, 0x59D8, 0x59FF, 0x59E3, 0x59E8, 0x5A03, 0x59E5, 0x59EA,
+  0x59DA, 0x59E6, 0x5A01, 0x59FB, 0x5B69, 0x5BA3, 0x5BA6, 0x5BA4,
+  0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, 0x5C4F, 0x5C4D, 0x5C4B, 0x5CD9,
+  0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F, 0x5E7D, 0x5EA0, 0x5EA6,
+  0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88, 0x5F85, 0x5F8A, 0x5F8B,
+  0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D, 0x6020, 0x6025, 0x600E,
+  0x6028, 0x604D, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606C,
+  0x606B, 0x606A, 0x6064, 0x6241, 0x62DC, 0x6316, 0x6309, 0x62FC,
+  0x62ED, 0x6301, 0x62EE, 0x62FD, 0x6307, 0x62F1, 0x62F7, 0x62EF,
+  0x62EC, 0x62FE, 0x62F4, 0x6311, 0x6302, 0x653F, 0x6545, 0x65AB,
+  0x65BD, 0x65E2, 0x6625, 0x662D, 0x6620, 0x6627, 0x662F, 0x661F,
+  0x6628, 0x6631, 0x6624, 0x66F7, 0x67FF, 0x67D3, 0x67F1, 0x67D4,
+  0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5, 0x67E9, 0x67EF, 0x67C4,
+  0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8, 0x67CF, 0x67DE, 0x67F3,
+  0x67B0, 0x67D9, 0x67E2, 0x67DD, 0x67D2, 0x6B6A, 0x6B83, 0x6B86,
+  0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9, 0x6D0B, 0x6D32, 0x6D2A,
+  0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17, 0x6D3B, 0x6D3D,
+plane 08 
+at 0x00
+  0x6D3E, 0x6D36, 0x6D1B, 0x6CF5, 0x6D39, 0x6D27, 0x6D38, 0x6D29,
+  0x6D2E, 0x6D35, 0x6D0E, 0x6D2B, 0x70AB, 0x70BA, 0x70B3, 0x70AC,
+  0x70AF, 0x70AD, 0x70B8, 0x70AE, 0x70A4, 0x7230, 0x7272, 0x726F,
+  0x7274, 0x72E9, 0x72E0, 0x72E1, 0x73B7, 0x73CA, 0x73BB, 0x73B2,
+  0x73CD, 0x73C0, 0x73B3, 0x751A, 0x752D, 0x754F, 0x754C, 0x754E,
+  0x754B, 0x75AB, 0x75A4, 0x75A5, 0x75A2, 0x75A3, 0x7678, 0x7686,
+  0x7687, 0x7688, 0x76C8, 0x76C6, 0x76C3, 0x76C5, 0x7701, 0x76F9,
+  0x76F8, 0x7709, 0x770B, 0x76FE, 0x76FC, 0x7707, 0x77DC, 0x7802,
+  0x7814, 0x780C, 0x780D, 0x7946, 0x7949, 0x7948, 0x7947, 0x79B9,
+  0x79BA, 0x79D1, 0x79D2, 0x79CB, 0x7A7F, 0x7A81, 0x7AFF, 0x7AFD,
+  0x7C7D, 0x7D02, 0x7D05, 0x7D00, 0x7D09, 0x7D07, 0x7D04, 0x7D06,
+  0x7F38, 0x7F8E, 0x7FBF, 0x8004, 0x8010, 0x800D, 0x8011, 0x8036,
+  0x80D6, 0x80E5, 0x80DA, 0x80C3, 0x80C4, 0x80CC, 0x80E1, 0x80DB,
+  0x80CE, 0x80DE, 0x80E4, 0x80DD, 0x81F4, 0x8222, 0x82E7, 0x8303,
+  0x8305, 0x82E3, 0x82DB, 0x82E6, 0x8304, 0x82E5, 0x8302, 0x8309,
+  0x82D2, 0x82D7, 0x82F1, 0x8301, 0x82DC, 0x82D4, 0x82D1, 0x82DE,
+  0x82D3, 0x82DF, 0x82EF, 0x8306, 0x8650, 0x8679, 0x867B, 0x867A,
+  0x884D, 0x886B, 0x8981, 0x89D4, 0x8A08, 0x8A02, 0x8A03, 0x8C9E,
+  0x8CA0, 0x8D74, 0x8D73, 0x8DB4, 0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6,
+  0x8FE2, 0x8FEA, 0x8FE5, 0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA,
+  0x90CE, 0x90C1, 0x90C3, 0x914B, 0x914A, 0x91CD, 0x9582, 0x9650,
+  0x964B, 0x964C, 0x964D, 0x9762, 0x9769, 0x97CB, 0x97ED, 0x97F3,
+  0x9801, 0x98A8, 0x98DB, 0x98DF, 0x9996, 0x9999, 0x4E58, 0x4EB3,
+  0x500C, 0x500D, 0x5023, 0x4FEF, 0x5026, 0x5025, 0x4FF8, 0x5029,
+  0x5016, 0x5006, 0x503C, 0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA,
+  0x5000, 0x5014, 0x5028, 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018,
+  0x4FF3, 0x4FEE, 0x502D, 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C,
+  0x51A4, 0x51A5, 0x51A2, 0x51CD, 0x51CC, 0x51C6, 0x51CB, 0x5256,
+  0x525C, 0x5254, 0x525B, 0x525D, 0x532A, 0x537F, 0x539F, 0x539D,
+  0x53DF, 0x54E8, 0x5510, 0x5501, 0x5537, 0x54FC, 0x54E5, 0x54F2,
+  0x5506, 0x54FA, 0x5514, 0x54E9, 0x54ED, 0x54E1, 0x5509, 0x54EE,
+  0x54EA, 0x54E6, 0x5527, 0x5507, 0x54FD, 0x550F, 0x5703, 0x5704,
+plane 09 
+at 0x00
+  0x57C2, 0x57D4, 0x57CB, 0x57C3, 0x5809, 0x590F, 0x5957, 0x5958,
+  0x595A, 0x5A11, 0x5A18, 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC,
+  0x5A20, 0x5A23, 0x5A29, 0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58,
+  0x5BB0, 0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE, 0x5BB5, 0x5BB9, 0x5BB8,
+  0x5C04, 0x5C51, 0x5C55, 0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA,
+  0x5CE8, 0x5CF0, 0x5CF6, 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B,
+  0x5EAB, 0x5EAD, 0x5EA7, 0x5F31, 0x5F92, 0x5F91, 0x5F90, 0x6059,
+  0x6063, 0x6065, 0x6050, 0x6055, 0x606D, 0x6069, 0x606F, 0x6084,
+  0x609F, 0x609A, 0x608D, 0x6094, 0x608C, 0x6085, 0x6096, 0x6247,
+  0x62F3, 0x6308, 0x62FF, 0x634E, 0x633E, 0x632F, 0x6355, 0x6342,
+  0x6346, 0x634F, 0x6349, 0x633A, 0x6350, 0x633D, 0x632A, 0x632B,
+  0x6328, 0x634D, 0x634C, 0x6548, 0x6549, 0x6599, 0x65C1, 0x65C5,
+  0x6642, 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, 0x6645, 0x6641,
+  0x66F8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846,
+  0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68B3, 0x6817, 0x684C,
+  0x6851, 0x683D, 0x67F4, 0x6850, 0x6840, 0x683C, 0x6843, 0x682A,
+  0x6845, 0x6813, 0x6818, 0x6841, 0x6B8A, 0x6B89, 0x6BB7, 0x6C23,
+  0x6C27, 0x6C28, 0x6C26, 0x6C24, 0x6CF0, 0x6D6A, 0x6D95, 0x6D88,
+  0x6D87, 0x6D66, 0x6D78, 0x6D77, 0x6D59, 0x6D93, 0x6D6C, 0x6D89,
+  0x6D6E, 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A, 0x6D79, 0x6D85,
+  0x6D65, 0x6D94, 0x70CA, 0x70D8, 0x70E4, 0x70D9, 0x70C8, 0x70CF,
+  0x7239, 0x7279, 0x72FC, 0x72F9, 0x72FD, 0x72F8, 0x72F7, 0x7386,
+  0x73ED, 0x7409, 0x73EE, 0x73E0, 0x73EA, 0x73DE, 0x7554, 0x755D,
+  0x755C, 0x755A, 0x7559, 0x75BE, 0x75C5, 0x75C7, 0x75B2, 0x75B3,
+  0x75BD, 0x75BC, 0x75B9, 0x75C2, 0x75B8, 0x768B, 0x76B0, 0x76CA,
+  0x76CD, 0x76CE, 0x7729, 0x771F, 0x7720, 0x7728, 0x77E9, 0x7830,
+  0x7827, 0x7838, 0x781D, 0x7834, 0x7837, 0x7825, 0x782D, 0x7820,
+  0x781F, 0x7832, 0x7955, 0x7950, 0x7960, 0x795F, 0x7956, 0x795E,
+  0x795D, 0x7957, 0x795A, 0x79E4, 0x79E3, 0x79E7, 0x79DF, 0x79E6,
+  0x79E9, 0x79D8, 0x7A84, 0x7A88, 0x7AD9, 0x7B06, 0x7B11, 0x7C89,
+  0x7D21, 0x7D17, 0x7D0B, 0x7D0A, 0x7D20, 0x7D22, 0x7D14, 0x7D10,
+  0x7D15, 0x7D1A, 0x7D1C, 0x7D0D, 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F,
+plane 10 
+at 0x00
+  0x7F94, 0x7FC5, 0x7FC1, 0x8006, 0x8018, 0x8015, 0x8019, 0x8017,
+  0x803D, 0x803F, 0x80F1, 0x8102, 0x80F0, 0x8105, 0x80ED, 0x80F4,
+  0x8106, 0x80F8, 0x80F3, 0x8108, 0x80FD, 0x810A, 0x80FC, 0x80EF,
+  0x81ED, 0x81EC, 0x8200, 0x8210, 0x822A, 0x822B, 0x8228, 0x822C,
+  0x82BB, 0x832B, 0x8352, 0x8354, 0x834A, 0x8338, 0x8350, 0x8349,
+  0x8335, 0x8334, 0x834F, 0x8332, 0x8339, 0x8336, 0x8317, 0x8340,
+  0x8331, 0x8328, 0x8343, 0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4,
+  0x86A9, 0x868C, 0x86A3, 0x869C, 0x8870, 0x8877, 0x8881, 0x8882,
+  0x887D, 0x8879, 0x8A18, 0x8A10, 0x8A0E, 0x8A0C, 0x8A15, 0x8A0A,
+  0x8A17, 0x8A13, 0x8A16, 0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79,
+  0x8CA1, 0x8CA2, 0x8D77, 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1,
+  0x9001, 0x9006, 0x8FF7, 0x9000, 0x8FFA, 0x8FF4, 0x9003, 0x8FFD,
+  0x9005, 0x8FF8, 0x9095, 0x90E1, 0x90DD, 0x90E2, 0x9152, 0x914D,
+  0x914C, 0x91D8, 0x91DD, 0x91D7, 0x91DC, 0x91D9, 0x9583, 0x9662,
+  0x9663, 0x9661, 0x965B, 0x965D, 0x9664, 0x9658, 0x965E, 0x96BB,
+  0x98E2, 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, 0x9B3C, 0x4E7E,
+  0x507A, 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049,
+  0x5065, 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F,
+  0x500F, 0x506F, 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F,
+  0x52D2, 0x52D9, 0x52D8, 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F,
+  0x5340, 0x533E, 0x53C3, 0x66FC, 0x5546, 0x556A, 0x5566, 0x5544,
+  0x555E, 0x5561, 0x5543, 0x554A, 0x5531, 0x5556, 0x554F, 0x5555,
+  0x552F, 0x5564, 0x5538, 0x552E, 0x555C, 0x552C, 0x5563, 0x5533,
+  0x5541, 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805, 0x580A,
+  0x5806, 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9,
+  0x5920, 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40,
+  0x5A3C, 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5,
+  0x5BC4, 0x5BC2, 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60,
+  0x5C5C, 0x5C5D, 0x5D07, 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22,
+  0x5D11, 0x5D29, 0x5D14, 0x5D19, 0x5D24, 0x5D27, 0x5D17, 0x5DE2,
+  0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7, 0x5EB8, 0x5EB6, 0x5EB5,
+  0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, 0x5F6B, 0x5F97,
+plane 11 
+at 0x00
+  0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F, 0x60A3,
+  0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD, 0x60C5,
+  0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, 0x60C6, 0x60DF,
+  0x60B8, 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248, 0x63A0, 0x63A7,
+  0x6372, 0x6396, 0x63A2, 0x63A5, 0x6377, 0x6367, 0x6398, 0x63AA,
+  0x6371, 0x63A9, 0x6389, 0x6383, 0x639B, 0x636B, 0x63A8, 0x6384,
+  0x6388, 0x6399, 0x63A1, 0x63AC, 0x6392, 0x638F, 0x6380, 0x637B,
+  0x6369, 0x6368, 0x637A, 0x655D, 0x6556, 0x6551, 0x6559, 0x6557,
+  0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C, 0x659B, 0x65AC,
+  0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, 0x6664, 0x6668,
+  0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, 0x68AF, 0x68A2,
+  0x6893, 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7, 0x6897, 0x68B0,
+  0x6883, 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894, 0x689D, 0x68A8,
+  0x689F, 0x68A1, 0x6882, 0x6B32, 0x6BBA, 0x6BEB, 0x6BEC, 0x6C2B,
+  0x6D8E, 0x6DBC, 0x6DF3, 0x6DD9, 0x6DB2, 0x6DE1, 0x6DCC, 0x6DE4,
+  0x6DFB, 0x6DFA, 0x6E05, 0x6DC7, 0x6DCB, 0x6DAF, 0x6DD1, 0x6DAE,
+  0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5, 0x6DC5, 0x6DD2, 0x6E1A,
+  0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, 0x6DF1, 0x6DEE, 0x6DE8,
+  0x6DC6, 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, 0x6DE6, 0x70F9, 0x7109,
+  0x710A, 0x70FD, 0x70EF, 0x723D, 0x727D, 0x7281, 0x731C, 0x731B,
+  0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 0x740A, 0x7403, 0x7406,
+  0x73FE, 0x740D, 0x74E0, 0x74F6, 0x74F7, 0x751C, 0x7522, 0x7565,
+  0x7566, 0x7562, 0x7570, 0x758F, 0x75D4, 0x75D5, 0x75B5, 0x75CA,
+  0x75CD, 0x768E, 0x76D4, 0x76D2, 0x76DB, 0x7737, 0x773E, 0x773C,
+  0x7736, 0x7738, 0x773A, 0x786B, 0x7843, 0x784E, 0x7965, 0x7968,
+  0x796D, 0x79FB, 0x7A92, 0x7A95, 0x7B20, 0x7B28, 0x7B1B, 0x7B2C,
+  0x7B26, 0x7B19, 0x7B1E, 0x7B2E, 0x7C92, 0x7C97, 0x7C95, 0x7D46,
+  0x7D43, 0x7D71, 0x7D2E, 0x7D39, 0x7D3C, 0x7D40, 0x7D30, 0x7D33,
+  0x7D44, 0x7D2F, 0x7D42, 0x7D32, 0x7D31, 0x7F3D, 0x7F9E, 0x7F9A,
+  0x7FCC, 0x7FCE, 0x7FD2, 0x801C, 0x804A, 0x8046, 0x812F, 0x8116,
+  0x8123, 0x812B, 0x8129, 0x8130, 0x8124, 0x8202, 0x8235, 0x8237,
+  0x8236, 0x8239, 0x838E, 0x839E, 0x8398, 0x8378, 0x83A2, 0x8396,
+plane 12 
+at 0x00
+  0x83BD, 0x83AB, 0x8392, 0x838A, 0x8393, 0x8389, 0x83A0, 0x8377,
+  0x837B, 0x837C, 0x8386, 0x83A7, 0x8655, 0x5F6A, 0x86C7, 0x86C0,
+  0x86B6, 0x86C4, 0x86B5, 0x86C6, 0x86CB, 0x86B1, 0x86AF, 0x86C9,
+  0x8853, 0x889E, 0x8888, 0x88AB, 0x8892, 0x8896, 0x888D, 0x888B,
+  0x8993, 0x898F, 0x8A2A, 0x8A1D, 0x8A23, 0x8A25, 0x8A31, 0x8A2D,
+  0x8A1F, 0x8A1B, 0x8A22, 0x8C49, 0x8C5A, 0x8CA9, 0x8CAC, 0x8CAB,
+  0x8CA8, 0x8CAA, 0x8CA7, 0x8D67, 0x8D66, 0x8DBE, 0x8DBA, 0x8EDB,
+  0x8EDF, 0x9019, 0x900D, 0x901A, 0x9017, 0x9023, 0x901F, 0x901D,
+  0x9010, 0x9015, 0x901E, 0x9020, 0x900F, 0x9022, 0x9016, 0x901B,
+  0x9014, 0x90E8, 0x90ED, 0x90FD, 0x9157, 0x91CE, 0x91F5, 0x91E6,
+  0x91E3, 0x91E7, 0x91ED, 0x91E9, 0x9589, 0x966A, 0x9675, 0x9673,
+  0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966C, 0x96C0, 0x96EA,
+  0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803, 0x9B5A, 0x9CE5, 0x9E75,
+  0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D, 0x5085, 0x5099, 0x5091,
+  0x5080, 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, 0x5272, 0x5274,
+  0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, 0x53A5, 0x557B,
+  0x5580, 0x55A7, 0x557C, 0x558A, 0x559D, 0x5598, 0x5582, 0x559C,
+  0x55AA, 0x5594, 0x5587, 0x558B, 0x5583, 0x55B3, 0x55AE, 0x559F,
+  0x553E, 0x55B2, 0x559A, 0x55BB, 0x55AC, 0x55B1, 0x557E, 0x5589,
+  0x55AB, 0x5599, 0x570D, 0x582F, 0x582A, 0x5834, 0x5824, 0x5830,
+  0x5831, 0x5821, 0x581D, 0x5820, 0x58F9, 0x58FA, 0x5960, 0x5A77,
+  0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73, 0x5B71, 0x5BD2,
+  0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, 0x5D4C, 0x5D50,
+  0x5D34, 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, 0x5E40, 0x5E43, 0x5E7E,
+  0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C, 0x5F6D, 0x5FA9, 0x5FAA,
+  0x5FA8, 0x60D1, 0x60E1, 0x60B2, 0x60B6, 0x60E0, 0x611C, 0x6123,
+  0x60FA, 0x6115, 0x60F0, 0x60FB, 0x60F4, 0x6168, 0x60F1, 0x610E,
+  0x60F6, 0x6109, 0x6100, 0x6112, 0x621F, 0x6249, 0x63A3, 0x638C,
+  0x63CF, 0x63C0, 0x63E9, 0x63C9, 0x63C6, 0x63CD, 0x63D2, 0x63E3,
+  0x63D0, 0x63E1, 0x63D6, 0x63ED, 0x63EE, 0x6376, 0x63F4, 0x63EA,
+  0x63DB, 0x6452, 0x63DA, 0x63F9, 0x655E, 0x6566, 0x6562, 0x6563,
+  0x6591, 0x6590, 0x65AF, 0x666E, 0x6670, 0x6674, 0x6676, 0x666F,
+plane 13 
+at 0x00
+  0x6691, 0x667A, 0x667E, 0x6677, 0x66FE, 0x66FF, 0x671F, 0x671D,
+  0x68FA, 0x68D5, 0x68E0, 0x68D8, 0x68D7, 0x6905, 0x68DF, 0x68F5,
+  0x68EE, 0x68E7, 0x68F9, 0x68D2, 0x68F2, 0x68E3, 0x68CB, 0x68CD,
+  0x690D, 0x6912, 0x690E, 0x68C9, 0x68DA, 0x696E, 0x68FB, 0x6B3E,
+  0x6B3A, 0x6B3D, 0x6B98, 0x6B96, 0x6BBC, 0x6BEF, 0x6C2E, 0x6C2F,
+  0x6C2C, 0x6E2F, 0x6E38, 0x6E54, 0x6E21, 0x6E32, 0x6E67, 0x6E4A,
+  0x6E20, 0x6E25, 0x6E23, 0x6E1B, 0x6E5B, 0x6E58, 0x6E24, 0x6E56,
+  0x6E6E, 0x6E2D, 0x6E26, 0x6E6F, 0x6E34, 0x6E4D, 0x6E3A, 0x6E2C,
+  0x6E43, 0x6E1D, 0x6E3E, 0x6ECB, 0x6E89, 0x6E19, 0x6E4E, 0x6E63,
+  0x6E44, 0x6E72, 0x6E69, 0x6E5F, 0x7119, 0x711A, 0x7126, 0x7130,
+  0x7121, 0x7136, 0x716E, 0x711C, 0x724C, 0x7284, 0x7280, 0x7336,
+  0x7325, 0x7334, 0x7329, 0x743A, 0x742A, 0x7433, 0x7422, 0x7425,
+  0x7435, 0x7436, 0x7434, 0x742F, 0x741B, 0x7426, 0x7428, 0x7525,
+  0x7526, 0x756B, 0x756A, 0x75E2, 0x75DB, 0x75E3, 0x75D9, 0x75D8,
+  0x75DE, 0x75E0, 0x767B, 0x767C, 0x7696, 0x7693, 0x76B4, 0x76DC,
+  0x774F, 0x77ED, 0x785D, 0x786C, 0x786F, 0x7A0D, 0x7A08, 0x7A0B,
+  0x7A05, 0x7A00, 0x7A98, 0x7A97, 0x7A96, 0x7AE5, 0x7AE3, 0x7B49,
+  0x7B56, 0x7B46, 0x7B50, 0x7B52, 0x7B54, 0x7B4D, 0x7B4B, 0x7B4F,
+  0x7B51, 0x7C9F, 0x7CA5, 0x7D5E, 0x7D50, 0x7D68, 0x7D55, 0x7D2B,
+  0x7D6E, 0x7D72, 0x7D61, 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584,
+  0x7FD4, 0x7FD5, 0x800B, 0x8052, 0x8085, 0x8155, 0x8154, 0x814B,
+  0x8151, 0x814E, 0x8139, 0x8146, 0x813E, 0x814C, 0x8153, 0x8174,
+  0x8212, 0x821C, 0x83E9, 0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5,
+  0x840B, 0x83C1, 0x83EF, 0x83F1, 0x83F4, 0x8457, 0x840A, 0x83F0,
+  0x840C, 0x83CC, 0x83FD, 0x83F2, 0x83CA, 0x8438, 0x840E, 0x8404,
+  0x83DC, 0x8407, 0x83D4, 0x83DF, 0x865B, 0x86DF, 0x86D9, 0x86ED,
+  0x86D4, 0x86DB, 0x86E4, 0x86D0, 0x86DE, 0x8857, 0x88C1, 0x88C2,
+  0x88B1, 0x8983, 0x8996, 0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C,
+  0x8A41, 0x8A54, 0x8A5B, 0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36,
+  0x8A56, 0x8C61, 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1,
+  0x8CBB, 0x8CC0, 0x8CB4, 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A,
+  0x8D85, 0x8D81, 0x8DCE, 0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC,
+plane 14 
+at 0x00
+  0x8DDB, 0x8DC6, 0x8EFB, 0x8EF8, 0x8EFC, 0x8F9C, 0x902E, 0x9035,
+  0x9031, 0x9038, 0x9032, 0x9036, 0x9102, 0x90F5, 0x9109, 0x90FE,
+  0x9163, 0x9165, 0x91CF, 0x9214, 0x9215, 0x9223, 0x9209, 0x921E,
+  0x920D, 0x9210, 0x9207, 0x9211, 0x9594, 0x958F, 0x958B, 0x9591,
+  0x9593, 0x9592, 0x958E, 0x968A, 0x968E, 0x968B, 0x967D, 0x9685,
+  0x9686, 0x968D, 0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4, 0x96C6,
+  0x96C7, 0x96EF, 0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808, 0x98E7,
+  0x98EA, 0x98EF, 0x98E9, 0x98F2, 0x98ED, 0x99AE, 0x99AD, 0x9EC3,
+  0x9ECD, 0x9ED1, 0x4E82, 0x50AD, 0x50B5, 0x50B2, 0x50B3, 0x50C5,
+  0x50BE, 0x50AC, 0x50B7, 0x50BB, 0x50AF, 0x50C7, 0x527F, 0x5277,
+  0x527D, 0x52DF, 0x52E6, 0x52E4, 0x52E2, 0x52E3, 0x532F, 0x55DF,
+  0x55E8, 0x55D3, 0x55E6, 0x55CE, 0x55DC, 0x55C7, 0x55D1, 0x55E3,
+  0x55E4, 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5, 0x55C9,
+  0x5712, 0x5713, 0x585E, 0x5851, 0x5858, 0x5857, 0x585A, 0x5854,
+  0x586B, 0x584C, 0x586D, 0x584A, 0x5862, 0x5852, 0x584B, 0x5967,
+  0x5AC1, 0x5AC9, 0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC, 0x5AB3, 0x5AC2,
+  0x5AB2, 0x5D69, 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, 0x5EC8, 0x5F12,
+  0x5F59, 0x5FAC, 0x5FAE, 0x611A, 0x610F, 0x6148, 0x611F, 0x60F3,
+  0x611B, 0x60F9, 0x6101, 0x6108, 0x614E, 0x614C, 0x6144, 0x614D,
+  0x613E, 0x6134, 0x6127, 0x610D, 0x6106, 0x6137, 0x6221, 0x6222,
+  0x6413, 0x643E, 0x641E, 0x642A, 0x642D, 0x643D, 0x642C, 0x640F,
+  0x641C, 0x6414, 0x640D, 0x6436, 0x6416, 0x6417, 0x6406, 0x656C,
+  0x659F, 0x65B0, 0x6697, 0x6689, 0x6687, 0x6688, 0x6696, 0x6684,
+  0x6698, 0x668D, 0x6703, 0x6994, 0x696D, 0x695A, 0x6977, 0x6960,
+  0x6954, 0x6975, 0x6930, 0x6982, 0x694A, 0x6968, 0x696B, 0x695E,
+  0x6953, 0x6979, 0x6986, 0x695D, 0x6963, 0x695B, 0x6B47, 0x6B72,
+  0x6BC0, 0x6BBF, 0x6BD3, 0x6BFD, 0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6,
+  0x6EC2, 0x6E90, 0x6E9D, 0x6EC7, 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC,
+  0x6EBA, 0x6EAB, 0x6ED1, 0x6E96, 0x6E9C, 0x6EC4, 0x6ED4, 0x6EAA,
+  0x6EA7, 0x6EB4, 0x714E, 0x7159, 0x7169, 0x7164, 0x7149, 0x7167,
+  0x715C, 0x716C, 0x7166, 0x714C, 0x7165, 0x715E, 0x7146, 0x7168,
+  0x7156, 0x723A, 0x7252, 0x7337, 0x7345, 0x733F, 0x733E, 0x746F,
+plane 15 
+at 0x00
+  0x745A, 0x7455, 0x745F, 0x745E, 0x7441, 0x743F, 0x7459, 0x745B,
+  0x745C, 0x7576, 0x7578, 0x7600, 0x75F0, 0x7601, 0x75F2, 0x75F1,
+  0x75FA, 0x75FF, 0x75F4, 0x75F3, 0x76DE, 0x76DF, 0x775B, 0x776B,
+  0x7766, 0x775E, 0x7763, 0x7779, 0x776A, 0x776C, 0x775C, 0x7765,
+  0x7768, 0x7762, 0x77EE, 0x788E, 0x78B0, 0x7897, 0x7898, 0x788C,
+  0x7889, 0x787C, 0x7891, 0x7893, 0x787F, 0x797A, 0x797F, 0x7981,
+  0x842C, 0x79BD, 0x7A1C, 0x7A1A, 0x7A20, 0x7A14, 0x7A1F, 0x7A1E,
+  0x7A9F, 0x7AA0, 0x7B77, 0x7BC0, 0x7B60, 0x7B6E, 0x7B67, 0x7CB1,
+  0x7CB3, 0x7CB5, 0x7D93, 0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B,
+  0x7F6E, 0x7F69, 0x7F6A, 0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056,
+  0x8058, 0x8086, 0x8084, 0x8171, 0x8170, 0x8178, 0x8165, 0x816E,
+  0x8173, 0x816B, 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482,
+  0x8477, 0x843D, 0x8431, 0x8475, 0x8466, 0x846B, 0x8449, 0x846C,
+  0x845B, 0x843C, 0x8435, 0x8461, 0x8463, 0x8469, 0x846D, 0x8446,
+  0x865E, 0x865C, 0x865F, 0x86F9, 0x8713, 0x8708, 0x8707, 0x8700,
+  0x86FE, 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, 0x8859, 0x88DF,
+  0x88D4, 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA, 0x88D5,
+  0x88D2, 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69,
+  0x8A70, 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D,
+  0x8A62, 0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62,
+  0x8C8A, 0x8C89, 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3,
+  0x8CC2, 0x8CC5, 0x8DE1, 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA,
+  0x8DEA, 0x8DE4, 0x8DE6, 0x8EB2, 0x8F03, 0x8F09, 0x8EFE, 0x8F0A,
+  0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053, 0x9042, 0x9054, 0x903C,
+  0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, 0x9051, 0x903E,
+  0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, 0x9237,
+  0x9257, 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264,
+  0x9251, 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, 0x923F, 0x925A,
+  0x9598, 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA,
+  0x96F7, 0x96FB, 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810,
+  0x9811, 0x9813, 0x980A, 0x9812, 0x980C, 0x98FC, 0x98F4, 0x98FD,
+  0x98FE, 0x99B3, 0x99B1, 0x99B4, 0x9AE1, 0x9CE9, 0x9E82, 0x9F0E,
+plane 16 
+at 0x00
+  0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5, 0x50D6, 0x50ED, 0x50DA,
+  0x50D5, 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9, 0x5162, 0x51F3,
+  0x5283, 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600, 0x561B, 0x5617,
+  0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E, 0x55F7, 0x5616,
+  0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716, 0x5875, 0x587E,
+  0x5883, 0x5893, 0x588A, 0x5879, 0x5885, 0x587D, 0x58FD, 0x5925,
+  0x5922, 0x5924, 0x596A, 0x5969, 0x5AE1, 0x5AE6, 0x5AE9, 0x5AD7,
+  0x5AD6, 0x5AD8, 0x5AE3, 0x5B75, 0x5BDE, 0x5BE7, 0x5BE1, 0x5BE5,
+  0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4, 0x5BDF, 0x5C0D, 0x5C62, 0x5D84,
+  0x5D87, 0x5E5B, 0x5E63, 0x5E55, 0x5E57, 0x5E54, 0x5ED3, 0x5ED6,
+  0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147, 0x613F, 0x614B, 0x6177,
+  0x6162, 0x6163, 0x615F, 0x615A, 0x6158, 0x6175, 0x622A, 0x6487,
+  0x6458, 0x6454, 0x64A4, 0x6478, 0x645F, 0x647A, 0x6451, 0x6467,
+  0x6434, 0x646D, 0x647B, 0x6572, 0x65A1, 0x65D7, 0x65D6, 0x66A2,
+  0x66A8, 0x669D, 0x699C, 0x69A8, 0x6995, 0x69C1, 0x69AE, 0x69D3,
+  0x69CB, 0x699B, 0x69B7, 0x69BB, 0x69AB, 0x69B4, 0x69D0, 0x69CD,
+  0x69AD, 0x69CC, 0x69A6, 0x69C3, 0x69A3, 0x6B49, 0x6B4C, 0x6C33,
+  0x6F33, 0x6F14, 0x6EFE, 0x6F13, 0x6EF4, 0x6F29, 0x6F3E, 0x6F20,
+  0x6F2C, 0x6F0F, 0x6F02, 0x6F22, 0x6EFF, 0x6EEF, 0x6F06, 0x6F31,
+  0x6F38, 0x6F32, 0x6F23, 0x6F15, 0x6F2B, 0x6F2F, 0x6F88, 0x6F2A,
+  0x6EEC, 0x6F01, 0x6EF2, 0x6ECC, 0x6EF7, 0x7194, 0x7199, 0x717D,
+  0x718A, 0x7184, 0x7192, 0x723E, 0x7292, 0x7296, 0x7344, 0x7350,
+  0x7464, 0x7463, 0x746A, 0x7470, 0x746D, 0x7504, 0x7591, 0x7627,
+  0x760D, 0x760B, 0x7609, 0x7613, 0x76E1, 0x76E3, 0x7784, 0x777D,
+  0x777F, 0x7761, 0x78C1, 0x789F, 0x78A7, 0x78B3, 0x78A9, 0x78A3,
+  0x798E, 0x798F, 0x798D, 0x7A2E, 0x7A31, 0x7AAA, 0x7AA9, 0x7AED,
+  0x7AEF, 0x7BA1, 0x7B95, 0x7B8B, 0x7B75, 0x7B97, 0x7B9D, 0x7B94,
+  0x7B8F, 0x7BB8, 0x7B87, 0x7B84, 0x7CB9, 0x7CBD, 0x7CBE, 0x7DBB,
+  0x7DB0, 0x7D9C, 0x7DBD, 0x7DBE, 0x7DA0, 0x7DCA, 0x7DB4, 0x7DB2,
+  0x7DB1, 0x7DBA, 0x7DA2, 0x7DBF, 0x7DB5, 0x7DB8, 0x7DAD, 0x7DD2,
+  0x7DC7, 0x7DAC, 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, 0x805E, 0x805A,
+  0x8087, 0x8150, 0x8180, 0x818F, 0x8188, 0x818A, 0x817F, 0x8182,
+plane 17 
+at 0x00
+  0x81E7, 0x81FA, 0x8207, 0x8214, 0x821E, 0x824B, 0x84C9, 0x84BF,
+  0x84C6, 0x84C4, 0x8499, 0x849E, 0x84B2, 0x849C, 0x84CB, 0x84B8,
+  0x84C0, 0x84D3, 0x8490, 0x84BC, 0x84D1, 0x84CA, 0x873F, 0x871C,
+  0x873B, 0x8722, 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729,
+  0x88F3, 0x8902, 0x88F4, 0x88F9, 0x88F8, 0x88FD, 0x88E8, 0x891A,
+  0x88EF, 0x8AA6, 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, 0x8AA1, 0x8A93,
+  0x8AA4, 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98, 0x8A91, 0x8A9A, 0x8AA7,
+  0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1, 0x8CD2, 0x8D6B, 0x8D99,
+  0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15, 0x8F13, 0x8FA3, 0x9060,
+  0x9058, 0x905C, 0x9063, 0x9059, 0x905E, 0x9062, 0x905D, 0x905B,
+  0x9119, 0x9118, 0x911E, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278,
+  0x9280, 0x9285, 0x9298, 0x9296, 0x927B, 0x9293, 0x929C, 0x92A8,
+  0x927C, 0x9291, 0x95A1, 0x95A8, 0x95A9, 0x95A3, 0x95A5, 0x95A4,
+  0x9699, 0x969C, 0x969B, 0x96CC, 0x96D2, 0x9700, 0x977C, 0x9785,
+  0x97F6, 0x9817, 0x9818, 0x98AF, 0x98B1, 0x9903, 0x9905, 0x990C,
+  0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, 0x9B41, 0x9B42, 0x9CF4,
+  0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, 0x5104, 0x5100, 0x50FB,
+  0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51DC, 0x5287,
+  0x5288, 0x5289, 0x528D, 0x528A, 0x52F0, 0x53B2, 0x562E, 0x563B,
+  0x5639, 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, 0x564E, 0x5657,
+  0x5674, 0x5636, 0x562F, 0x5630, 0x5880, 0x589F, 0x589E, 0x58B3,
+  0x589C, 0x58AE, 0x58A9, 0x58A6, 0x596D, 0x5B09, 0x5AFB, 0x5B0B,
+  0x5AF5, 0x5B0C, 0x5B08, 0x5BEE, 0x5BEC, 0x5BE9, 0x5BEB, 0x5C64,
+  0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F, 0x5E61, 0x5EE2, 0x5EDA,
+  0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, 0x5F71, 0x5FB7, 0x5FB5,
+  0x6176, 0x6167, 0x616E, 0x615D, 0x6155, 0x6182, 0x617C, 0x6170,
+  0x616B, 0x617E, 0x61A7, 0x6190, 0x61AB, 0x618E, 0x61AC, 0x619A,
+  0x61A4, 0x6194, 0x61AE, 0x622E, 0x6469, 0x646F, 0x6479, 0x649E,
+  0x64B2, 0x6488, 0x6490, 0x64B0, 0x64A5, 0x6493, 0x6495, 0x64A9,
+  0x6492, 0x64AE, 0x64AD, 0x64AB, 0x649A, 0x64AC, 0x6499, 0x64A2,
+  0x64B3, 0x6575, 0x6577, 0x6578, 0x66AE, 0x66AB, 0x66B4, 0x66B1,
+  0x6A23, 0x6A1F, 0x69E8, 0x6A01, 0x6A1E, 0x6A19, 0x69FD, 0x6A21,
+plane 18 
+at 0x00
+  0x6A13, 0x6A0A, 0x69F3, 0x6A02, 0x6A05, 0x69ED, 0x6A11, 0x6B50,
+  0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F, 0x6F7C, 0x6F84, 0x6F51,
+  0x6F66, 0x6F54, 0x6F86, 0x6F6D, 0x6F5B, 0x6F78, 0x6F6E, 0x6F8E,
+  0x6F7A, 0x6F70, 0x6F64, 0x6F97, 0x6F58, 0x6ED5, 0x6F6F, 0x6F60,
+  0x6F5F, 0x719F, 0x71AC, 0x71B1, 0x71A8, 0x7256, 0x729B, 0x734E,
+  0x7357, 0x7469, 0x748B, 0x7483, 0x747E, 0x7480, 0x757F, 0x7620,
+  0x7629, 0x761F, 0x7624, 0x7626, 0x7621, 0x7622, 0x769A, 0x76BA,
+  0x76E4, 0x778E, 0x7787, 0x778C, 0x7791, 0x778B, 0x78CB, 0x78C5,
+  0x78BA, 0x78CA, 0x78BE, 0x78D5, 0x78BC, 0x78D0, 0x7A3F, 0x7A3C,
+  0x7A40, 0x7A3D, 0x7A37, 0x7A3B, 0x7AAF, 0x7AAE, 0x7BAD, 0x7BB1,
+  0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7, 0x7BC1, 0x7BA0, 0x7BCC, 0x7CCA,
+  0x7DE0, 0x7DF4, 0x7DEF, 0x7DFB, 0x7DD8, 0x7DEC, 0x7DDD, 0x7DE8,
+  0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9, 0x7D9E, 0x7DD9, 0x7DF2, 0x7DF9,
+  0x7F75, 0x7F77, 0x7FAF, 0x7FE9, 0x8026, 0x819B, 0x819C, 0x819D,
+  0x81A0, 0x819A, 0x8198, 0x8517, 0x853D, 0x851A, 0x84EE, 0x852C,
+  0x852D, 0x8513, 0x8511, 0x8523, 0x8521, 0x8514, 0x84EC, 0x8525,
+  0x84FF, 0x8506, 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778,
+  0x8768, 0x8759, 0x8757, 0x874C, 0x8753, 0x885B, 0x885D, 0x8910,
+  0x8907, 0x8912, 0x8913, 0x8915, 0x890A, 0x8ABC, 0x8AD2, 0x8AC7,
+  0x8AC4, 0x8A95, 0x8ACB, 0x8AF8, 0x8AB2, 0x8AC9, 0x8AC2, 0x8ABF,
+  0x8AB0, 0x8AD6, 0x8ACD, 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, 0x8C4E,
+  0x8C6C, 0x8CE0, 0x8CDE, 0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2,
+  0x8CE3, 0x8CDC, 0x8CEA, 0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, 0x8E2B,
+  0x8E10, 0x8E1D, 0x8E22, 0x8E0F, 0x8E29, 0x8E1F, 0x8E21, 0x8E1E,
+  0x8EBA, 0x8F1D, 0x8F1B, 0x8F1F, 0x8F29, 0x8F26, 0x8F2A, 0x8F1C,
+  0x8F1E, 0x8F25, 0x9069, 0x906E, 0x9068, 0x906D, 0x9077, 0x9130,
+  0x912D, 0x9127, 0x9131, 0x9187, 0x9189, 0x918B, 0x9183, 0x92C5,
+  0x92BB, 0x92B7, 0x92EA, 0x92AC, 0x92E4, 0x92C1, 0x92B3, 0x92BC,
+  0x92D2, 0x92C7, 0x92F0, 0x92B2, 0x95AD, 0x95B1, 0x9704, 0x9706,
+  0x9707, 0x9709, 0x9760, 0x978D, 0x978B, 0x978F, 0x9821, 0x982B,
+  0x981C, 0x98B3, 0x990A, 0x9913, 0x9912, 0x9918, 0x99DD, 0x99D0,
+  0x99DF, 0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE,
+plane 19 
+at 0x00
+  0x9AEF, 0x9B27, 0x9B45, 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09,
+  0x9D03, 0x9EA9, 0x9EBE, 0x9ECE, 0x58A8, 0x9F52, 0x5112, 0x5118,
+  0x5114, 0x5110, 0x5115, 0x5180, 0x51AA, 0x51DD, 0x5291, 0x5293,
+  0x52F3, 0x5659, 0x566B, 0x5679, 0x5669, 0x5664, 0x5678, 0x566A,
+  0x5668, 0x5665, 0x5671, 0x566F, 0x566C, 0x5662, 0x5676, 0x58C1,
+  0x58BE, 0x58C7, 0x58C5, 0x596E, 0x5B1D, 0x5B34, 0x5B78, 0x5BF0,
+  0x5C0E, 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD, 0x61B6,
+  0x61BE, 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB, 0x64BB,
+  0x64BC, 0x64DA, 0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF, 0x64D2,
+  0x64D4, 0x64BE, 0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4, 0x66C7,
+  0x66B8, 0x6A3D, 0x6A38, 0x6A3A, 0x6A59, 0x6A6B, 0x6A58, 0x6A39,
+  0x6A44, 0x6A62, 0x6A61, 0x6A4B, 0x6A47, 0x6A35, 0x6A5F, 0x6A48,
+  0x6B59, 0x6B77, 0x6C05, 0x6FC2, 0x6FB1, 0x6FA1, 0x6FC3, 0x6FA4,
+  0x6FC1, 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6, 0x6FA6, 0x6FA0,
+  0x6FB4, 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8, 0x71D5, 0x71B9,
+  0x71CE, 0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368, 0x749C, 0x74A3,
+  0x7498, 0x749F, 0x749E, 0x74E2, 0x750C, 0x750D, 0x7634, 0x7638,
+  0x763A, 0x76E7, 0x76E5, 0x77A0, 0x779E, 0x779F, 0x77A5, 0x78E8,
+  0x78DA, 0x78EC, 0x78E7, 0x79A6, 0x7A4D, 0x7A4E, 0x7A46, 0x7A4C,
+  0x7A4B, 0x7ABA, 0x7BD9, 0x7C11, 0x7BC9, 0x7BE4, 0x7BDB, 0x7BE1,
+  0x7BE9, 0x7BE6, 0x7CD5, 0x7CD6, 0x7E0A, 0x7E11, 0x7E08, 0x7E1B,
+  0x7E23, 0x7E1E, 0x7E1D, 0x7E09, 0x7E10, 0x7F79, 0x7FB2, 0x7FF0,
+  0x7FF1, 0x7FEE, 0x8028, 0x81B3, 0x81A9, 0x81A8, 0x81FB, 0x8208,
+  0x8258, 0x8259, 0x854A, 0x8559, 0x8548, 0x8568, 0x8569, 0x8543,
+  0x8549, 0x856D, 0x856A, 0x855E, 0x8783, 0x879F, 0x879E, 0x87A2,
+  0x878D, 0x8861, 0x892A, 0x8932, 0x8925, 0x892B, 0x8921, 0x89AA,
+  0x89A6, 0x8AE6, 0x8AFA, 0x8AEB, 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7,
+  0x8AEE, 0x8AFE, 0x8B01, 0x8B02, 0x8AF7, 0x8AED, 0x8AF3, 0x8AF6,
+  0x8AFC, 0x8C6B, 0x8C6D, 0x8C93, 0x8CF4, 0x8E44, 0x8E31, 0x8E34,
+  0x8E42, 0x8E39, 0x8E35, 0x8F3B, 0x8F2F, 0x8F38, 0x8F33, 0x8FA8,
+  0x8FA6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907C, 0x907A, 0x9134,
+  0x9192, 0x9320, 0x9336, 0x92F8, 0x9333, 0x932F, 0x9322, 0x92FC,
+plane 20 
+at 0x00
+  0x932B, 0x9304, 0x931A, 0x9310, 0x9326, 0x9321, 0x9315, 0x932E,
+  0x9319, 0x95BB, 0x96A7, 0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711,
+  0x9716, 0x970D, 0x9713, 0x970F, 0x975B, 0x975C, 0x9766, 0x9798,
+  0x9830, 0x9838, 0x983B, 0x9837, 0x982D, 0x9839, 0x9824, 0x9910,
+  0x9928, 0x991E, 0x991B, 0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1,
+  0x9AB8, 0x9ABC, 0x9AFB, 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23,
+  0x9D26, 0x9D28, 0x9D12, 0x9D1B, 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C,
+  0x512A, 0x511F, 0x5121, 0x5132, 0x52F5, 0x568E, 0x5680, 0x5690,
+  0x5685, 0x5687, 0x568F, 0x58D5, 0x58D3, 0x58D1, 0x58CE, 0x5B30,
+  0x5B2A, 0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA, 0x5DBD,
+  0x5DB8, 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, 0x61C7, 0x61E6,
+  0x61CB, 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0,
+  0x64E6, 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9,
+  0x66D6, 0x6A80, 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3,
+  0x6A7E, 0x6A97, 0x6A90, 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08,
+  0x6FD8, 0x6FF1, 0x6FDF, 0x6FE0, 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF,
+  0x6F80, 0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, 0x6FEE, 0x6FF0, 0x71E7,
+  0x71DF, 0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC, 0x71F4, 0x71E0,
+  0x7235, 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6, 0x74A8,
+  0x7646, 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC,
+  0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901,
+  0x79A7, 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7,
+  0x7C0C, 0x7BE0, 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9,
+  0x7CDD, 0x7E2E, 0x7E3E, 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B,
+  0x7E3D, 0x7E31, 0x7E45, 0x7E41, 0x7E34, 0x7E39, 0x7E48, 0x7E35,
+  0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, 0x8071, 0x8072, 0x8070,
+  0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, 0x81C0, 0x81BF,
+  0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA, 0x8584,
+  0x857E, 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B, 0x8587, 0x85A8,
+  0x858A, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2, 0x87C6, 0x87AB,
+  0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936, 0x8944, 0x8938,
+  0x893D, 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B, 0x8B0A, 0x8B20,
+plane 21 
+at 0x00
+  0x8B1D, 0x8B04, 0x8B10, 0x8C41, 0x8C3F, 0x8C73, 0x8CFA, 0x8CFD,
+  0x8CFC, 0x8CF8, 0x8CFB, 0x8DA8, 0x8E49, 0x8E4B, 0x8E48, 0x8E4A,
+  0x8F44, 0x8F3E, 0x8F42, 0x8F45, 0x8F3F, 0x907F, 0x907D, 0x9084,
+  0x9081, 0x9082, 0x9080, 0x9139, 0x91A3, 0x919E, 0x919C, 0x934D,
+  0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B, 0x9318, 0x937E,
+  0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, 0x95CB, 0x95CC,
+  0x95C8, 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C, 0x971E, 0x97A0,
+  0x97D3, 0x9846, 0x98B6, 0x9935, 0x9A01, 0x99FF, 0x9BAE, 0x9BAB,
+  0x9BAA, 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, 0x9ECF, 0x9EDE, 0x9EDC,
+  0x9EDD, 0x9EDB, 0x9F3E, 0x9F4B, 0x53E2, 0x5695, 0x56AE, 0x58D9,
+  0x58D8, 0x5B38, 0x5F5D, 0x61E3, 0x6233, 0x64F4, 0x64F2, 0x64FE,
+  0x6506, 0x64FA, 0x64FB, 0x64F7, 0x65B7, 0x66DC, 0x6726, 0x6AB3,
+  0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2, 0x6AAE, 0x6AAF, 0x6B5F,
+  0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE, 0x7006, 0x6FFA, 0x7011,
+  0x700F, 0x71FB, 0x71FC, 0x71FE, 0x71F8, 0x7377, 0x7375, 0x74A7,
+  0x74BF, 0x7515, 0x7656, 0x7658, 0x7652, 0x77BD, 0x77BF, 0x77BB,
+  0x77BC, 0x790E, 0x79AE, 0x7A61, 0x7A62, 0x7A60, 0x7AC4, 0x7AC5,
+  0x7C2B, 0x7C27, 0x7C2A, 0x7C1E, 0x7C23, 0x7C21, 0x7CE7, 0x7E54,
+  0x7E55, 0x7E5E, 0x7E5A, 0x7E61, 0x7E52, 0x7E59, 0x7F48, 0x7FF9,
+  0x7FFB, 0x8077, 0x8076, 0x81CD, 0x81CF, 0x820A, 0x85CF, 0x85A9,
+  0x85CD, 0x85D0, 0x85C9, 0x85B0, 0x85BA, 0x85B9, 0x85A6, 0x87EF,
+  0x87EC, 0x87F2, 0x87E0, 0x8986, 0x89B2, 0x89F4, 0x8B28, 0x8B39,
+  0x8B2C, 0x8B2B, 0x8C50, 0x8D05, 0x8E59, 0x8E63, 0x8E66, 0x8E64,
+  0x8E5F, 0x8E55, 0x8EC0, 0x8F49, 0x8F4D, 0x9087, 0x9083, 0x9088,
+  0x91AB, 0x91AC, 0x91D0, 0x9394, 0x938A, 0x9396, 0x93A2, 0x93B3,
+  0x93AE, 0x93AC, 0x93B0, 0x9398, 0x939A, 0x9397, 0x95D4, 0x95D6,
+  0x95D0, 0x95D5, 0x96E2, 0x96DC, 0x96D9, 0x96DB, 0x96DE, 0x9724,
+  0x97A3, 0x97A6, 0x97AD, 0x97F9, 0x984D, 0x984F, 0x984C, 0x984E,
+  0x9853, 0x98BA, 0x993E, 0x993F, 0x993D, 0x992E, 0x99A5, 0x9A0E,
+  0x9AC1, 0x9B03, 0x9B06, 0x9B4F, 0x9B4E, 0x9B4D, 0x9BCA, 0x9BC9,
+  0x9BFD, 0x9BC8, 0x9BC0, 0x9D51, 0x9D5D, 0x9D60, 0x9EE0, 0x9F15,
+  0x9F2C, 0x5133, 0x56A5, 0x58DE, 0x58DF, 0x58E2, 0x5BF5, 0x9F90,
+plane 22 
+at 0x00
+  0x5EEC, 0x61F2, 0x61F7, 0x61F6, 0x61F5, 0x6500, 0x650F, 0x66E0,
+  0x66DD, 0x6AE5, 0x6ADD, 0x6ADA, 0x6AD3, 0x701B, 0x701F, 0x7028,
+  0x701A, 0x701D, 0x7015, 0x7018, 0x7206, 0x720D, 0x7258, 0x72A2,
+  0x7378, 0x737A, 0x74BD, 0x74CA, 0x74E3, 0x7587, 0x7586, 0x765F,
+  0x7661, 0x77C7, 0x7919, 0x79B1, 0x7A6B, 0x7A69, 0x7C3E, 0x7C3F,
+  0x7C38, 0x7C3D, 0x7C37, 0x7C40, 0x7E6B, 0x7E6D, 0x7E79, 0x7E69,
+  0x7E6A, 0x7F85, 0x7E73, 0x7FB6, 0x7FB9, 0x7FB8, 0x81D8, 0x85E9,
+  0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5, 0x85F7, 0x87FB, 0x8805,
+  0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F, 0x8956, 0x895E, 0x8B41,
+  0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, 0x8B46, 0x8B59,
+  0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, 0x8E6C, 0x8E7A,
+  0x8E74, 0x8F54, 0x8F4E, 0x8FAD, 0x908A, 0x908B, 0x91B1, 0x91AE,
+  0x93E1, 0x93D1, 0x93DF, 0x93C3, 0x93C8, 0x93DC, 0x93DD, 0x93D6,
+  0x93E2, 0x93CD, 0x93D8, 0x93E4, 0x93D7, 0x93E8, 0x95DC, 0x96B4,
+  0x96E3, 0x972A, 0x9727, 0x9761, 0x97DC, 0x97FB, 0x985E, 0x9858,
+  0x985B, 0x98BC, 0x9945, 0x9949, 0x9A16, 0x9A19, 0x9B0D, 0x9BE8,
+  0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, 0x9D72, 0x9D6A, 0x9D6C,
+  0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56A8, 0x56B7, 0x56B6,
+  0x56B4, 0x56BC, 0x58E4, 0x5B40, 0x5B43, 0x5B7D, 0x5BF6, 0x5DC9,
+  0x61F8, 0x61FA, 0x6518, 0x6514, 0x6519, 0x66E6, 0x6727, 0x6AEC,
+  0x703E, 0x7030, 0x7032, 0x7210, 0x737B, 0x74CF, 0x7662, 0x7665,
+  0x7926, 0x792A, 0x792C, 0x792B, 0x7AC7, 0x7AF6, 0x7C4C, 0x7C43,
+  0x7C4D, 0x7CEF, 0x7CF0, 0x8FAE, 0x7E7D, 0x7E7C, 0x7E82, 0x7F4C,
+  0x8000, 0x81DA, 0x8266, 0x85FB, 0x85F9, 0x8611, 0x85FA, 0x8606,
+  0x860B, 0x8607, 0x860A, 0x8814, 0x8815, 0x8964, 0x89BA, 0x89F8,
+  0x8B70, 0x8B6C, 0x8B66, 0x8B6F, 0x8B5F, 0x8B6B, 0x8D0F, 0x8D0D,
+  0x8E89, 0x8E81, 0x8E85, 0x8E82, 0x91B4, 0x91CB, 0x9418, 0x9403,
+  0x93FD, 0x95E1, 0x9730, 0x98C4, 0x9952, 0x9951, 0x99A8, 0x9A2B,
+  0x9A30, 0x9A37, 0x9A35, 0x9C13, 0x9C0D, 0x9E79, 0x9EB5, 0x9EE8,
+  0x9F2F, 0x9F5F, 0x9F63, 0x9F61, 0x5137, 0x5138, 0x56C1, 0x56C0,
+  0x56C2, 0x5914, 0x5C6C, 0x5DCD, 0x61FC, 0x61FE, 0x651D, 0x651C,
+  0x6595, 0x66E9, 0x6AFB, 0x6B04, 0x6AFA, 0x6BB2, 0x704C, 0x721B,
+plane 23 
+at 0x00
+  0x72A7, 0x74D6, 0x74D4, 0x7669, 0x77D3, 0x7C50, 0x7E8F, 0x7E8C,
+  0x7FBC, 0x8617, 0x862D, 0x861A, 0x8823, 0x8822, 0x8821, 0x881F,
+  0x896A, 0x896C, 0x89BD, 0x8B74, 0x8B77, 0x8B7D, 0x8D13, 0x8E8A,
+  0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF, 0x91BA, 0x942E, 0x9433, 0x9435,
+  0x943A, 0x9438, 0x9432, 0x942B, 0x95E2, 0x9738, 0x9739, 0x9732,
+  0x97FF, 0x9867, 0x9865, 0x9957, 0x9A45, 0x9A43, 0x9A40, 0x9A3E,
+  0x9ACF, 0x9B54, 0x9B51, 0x9C2D, 0x9C25, 0x9DAF, 0x9DB4, 0x9DC2,
+  0x9DB8, 0x9E9D, 0x9EEF, 0x9F19, 0x9F5C, 0x9F66, 0x9F67, 0x513C,
+  0x513B, 0x56C8, 0x56CA, 0x56C9, 0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E,
+  0x61FF, 0x6524, 0x6B0A, 0x6B61, 0x7051, 0x7058, 0x7380, 0x74E4,
+  0x758A, 0x766E, 0x766C, 0x79B3, 0x7C60, 0x7C5F, 0x807E, 0x807D,
+  0x81DF, 0x8972, 0x896F, 0x89FC, 0x8B80, 0x8D16, 0x8D17, 0x8E91,
+  0x8E93, 0x8F61, 0x9148, 0x9444, 0x9451, 0x9452, 0x973D, 0x973E,
+  0x97C3, 0x97C1, 0x986B, 0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A,
+  0x9C49, 0x9C31, 0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C,
+  0x9F6A, 0x9F94, 0x56CC, 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A,
+  0x66EC, 0x6B10, 0x74DA, 0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93,
+  0x7E96, 0x7E94, 0x81E2, 0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090,
+  0x908F, 0x9463, 0x9460, 0x9464, 0x9768, 0x986F, 0x995C, 0x9A5A,
+  0x9A5B, 0x9A57, 0x9AD3, 0x9AD4, 0x9AD1, 0x9C54, 0x9C57, 0x9C56,
+  0x9DE5, 0x9E9F, 0x9EF4, 0x56D1, 0x58E9, 0x652C, 0x705E, 0x7671,
+  0x7672, 0x77D7, 0x7F50, 0x7F88, 0x8836, 0x8839, 0x8862, 0x8B93,
+  0x8B92, 0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748,
+  0x9744, 0x97C6, 0x9870, 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9,
+  0x9DFA, 0x9E7C, 0x9E7D, 0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16,
+  0x7063, 0x7C6C, 0x7C6E, 0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472,
+  0x9470, 0x9871, 0x995E, 0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA,
+  0x8B9A, 0x9477, 0x97C9, 0x9A62, 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA,
+  0x91C5, 0x947D, 0x947E, 0x947C, 0x9C77, 0x9C78, 0x9EF7, 0x8C54,
+  0x947F, 0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B, 0x9E1E, 0x7C72,
+  0xF6B1, 0xF6B2, 0xF6B3, 0xF6B4, 0xF6B5, 0xF6B6, 0xF6B7, 0xF6B8,
+  0xF6B9, 0xF6BA, 0xF6BB, 0xF6BC, 0xF6BD, 0xF6BE, 0xF6BF, 0xF6C0,
+plane 24 
+at 0x00
+  0xF6C1, 0xF6C2, 0xF6C3, 0xF6C4, 0xF6C5, 0xF6C6, 0xF6C7, 0xF6C8,
+  0xF6C9, 0xF6CA, 0xF6CB, 0xF6CC, 0xF6CD, 0xF6CE, 0xF6CF, 0xF6D0,
+  0xF6D1, 0xF6D2, 0xF6D3, 0xF6D4, 0xF6D5, 0xF6D6, 0xF6D7, 0xF6D8,
+  0xF6D9, 0xF6DA, 0xF6DB, 0xF6DC, 0xF6DD, 0xF6DE, 0xF6DF, 0xF6E0,
+  0xF6E1, 0xF6E2, 0xF6E3, 0xF6E4, 0xF6E5, 0xF6E6, 0xF6E7, 0xF6E8,
+  0xF6E9, 0xF6EA, 0xF6EB, 0xF6EC, 0xF6ED, 0xF6EE, 0xF6EF, 0xF6F0,
+  0xF6F1, 0xF6F2, 0xF6F3, 0xF6F4, 0xF6F5, 0xF6F6, 0xF6F7, 0xF6F8,
+  0xF6F9, 0xF6FA, 0xF6FB, 0xF6FC, 0xF6FD, 0xF6FE, 0xF6FF, 0xF700,
+  0xF701, 0xF702, 0xF703, 0xF704, 0xF705, 0xF706, 0xF707, 0xF708,
+  0xF709, 0xF70A, 0xF70B, 0xF70C, 0xF70D, 0xF70E, 0xF70F, 0xF710,
+  0xF711, 0xF712, 0xF713, 0xF714, 0xF715, 0xF716, 0xF717, 0xF718,
+  0xF719, 0xF71A, 0xF71B, 0xF71C, 0xF71D, 0xF71E, 0xF71F, 0xF720,
+  0xF721, 0xF722, 0xF723, 0xF724, 0xF725, 0xF726, 0xF727, 0xF728,
+  0xF729, 0xF72A, 0xF72B, 0xF72C, 0xF72D, 0xF72E, 0xF72F, 0xF730,
+  0xF731, 0xF732, 0xF733, 0xF734, 0xF735, 0xF736, 0xF737, 0xF738,
+  0xF739, 0xF73A, 0xF73B, 0xF73C, 0xF73D, 0xF73E, 0xF73F, 0xF740,
+  0xF741, 0xF742, 0xF743, 0xF744, 0xF745, 0xF746, 0xF747, 0xF748,
+  0xF749, 0xF74A, 0xF74B, 0xF74C, 0xF74D, 0xF74E, 0xF74F, 0xF750,
+  0xF751, 0xF752, 0xF753, 0xF754, 0xF755, 0xF756, 0xF757, 0xF758,
+  0xF759, 0xF75A, 0xF75B, 0xF75C, 0xF75D, 0xF75E, 0xF75F, 0xF760,
+  0xF761, 0xF762, 0xF763, 0xF764, 0xF765, 0xF766, 0xF767, 0xF768,
+  0xF769, 0xF76A, 0xF76B, 0xF76C, 0xF76D, 0xF76E, 0xF76F, 0xF770,
+  0xF771, 0xF772, 0xF773, 0xF774, 0xF775, 0xF776, 0xF777, 0xF778,
+  0xF779, 0xF77A, 0xF77B, 0xF77C, 0xF77D, 0xF77E, 0xF77F, 0xF780,
+  0xF781, 0xF782, 0xF783, 0xF784, 0xF785, 0xF786, 0xF787, 0xF788,
+  0xF789, 0xF78A, 0xF78B, 0xF78C, 0xF78D, 0xF78E, 0xF78F, 0xF790,
+  0xF791, 0xF792, 0xF793, 0xF794, 0xF795, 0xF796, 0xF797, 0xF798,
+  0xF799, 0xF79A, 0xF79B, 0xF79C, 0xF79D, 0xF79E, 0xF79F, 0xF7A0,
+  0xF7A1, 0xF7A2, 0xF7A3, 0xF7A4, 0xF7A5, 0xF7A6, 0xF7A7, 0xF7A8,
+  0xF7A9, 0xF7AA, 0xF7AB, 0xF7AC, 0xF7AD, 0xF7AE, 0xF7AF, 0xF7B0,
+  0xF7B1, 0xF7B2, 0xF7B3, 0xF7B4, 0xF7B5, 0xF7B6, 0xF7B7, 0xF7B8,
+  0xF7B9, 0xF7BA, 0xF7BB, 0xF7BC, 0xF7BD, 0xF7BE, 0xF7BF, 0xF7C0,
+plane 25 
+at 0x00
+  0xF7C1, 0xF7C2, 0xF7C3, 0xF7C4, 0xF7C5, 0xF7C6, 0xF7C7, 0xF7C8,
+  0xF7C9, 0xF7CA, 0xF7CB, 0xF7CC, 0xF7CD, 0xF7CE, 0xF7CF, 0xF7D0,
+  0xF7D1, 0xF7D2, 0xF7D3, 0xF7D4, 0xF7D5, 0xF7D6, 0xF7D7, 0xF7D8,
+  0xF7D9, 0xF7DA, 0xF7DB, 0xF7DC, 0xF7DD, 0xF7DE, 0xF7DF, 0xF7E0,
+  0xF7E1, 0xF7E2, 0xF7E3, 0xF7E4, 0xF7E5, 0xF7E6, 0xF7E7, 0xF7E8,
+  0xF7E9, 0xF7EA, 0xF7EB, 0xF7EC, 0xF7ED, 0xF7EE, 0xF7EF, 0xF7F0,
+  0xF7F1, 0xF7F2, 0xF7F3, 0xF7F4, 0xF7F5, 0xF7F6, 0xF7F7, 0xF7F8,
+  0xF7F9, 0xF7FA, 0xF7FB, 0xF7FC, 0xF7FD, 0xF7FE, 0xF7FF, 0xF800,
+  0xF801, 0xF802, 0xF803, 0xF804, 0xF805, 0xF806, 0xF807, 0xF808,
+  0xF809, 0xF80A, 0xF80B, 0xF80C, 0xF80D, 0xF80E, 0xF80F, 0xF810,
+  0xF811, 0xF812, 0xF813, 0xF814, 0xF815, 0xF816, 0xF817, 0xF818,
+  0xF819, 0xF81A, 0xF81B, 0xF81C, 0xF81D, 0xF81E, 0xF81F, 0xF820,
+  0xF821, 0xF822, 0xF823, 0xF824, 0xF825, 0xF826, 0xF827, 0xF828,
+  0xF829, 0xF82A, 0xF82B, 0xF82C, 0xF82D, 0xF82E, 0xF82F, 0xF830,
+  0xF831, 0xF832, 0xF833, 0xF834, 0xF835, 0xF836, 0xF837, 0xF838,
+  0xF839, 0xF83A, 0xF83B, 0xF83C, 0xF83D, 0xF83E, 0xF83F, 0xF840,
+  0xF841, 0xF842, 0xF843, 0xF844, 0xF845, 0xF846, 0xF847, 0xF848,
+  0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, 0x4E47,
+  0x4E8D, 0x56D7, 0xFA0C, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E,
+  0x4E2E, 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C,
+  0x53B9, 0x5720, 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3,
+  0x6BCC, 0x6C14, 0x723F, 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9,
+  0x4EE1, 0x4EDD, 0x4EDA, 0x520C, 0x531C, 0x534C, 0x5722, 0x5723,
+  0x5917, 0x592F, 0x5B81, 0x5B84, 0x5C12, 0x5C3B, 0x5C74, 0x5C73,
+  0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, 0x6250, 0x6C15, 0x6C36,
+  0x6C43, 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A, 0x79B8, 0x808A,
+  0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14, 0x4EF1, 0x4F00,
+  0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22, 0x4F13, 0x4F04,
+  0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5209, 0x5210, 0x52A6, 0x5322,
+  0x531F, 0x534D, 0x538A, 0x5407, 0x56E1, 0x56DF, 0x572E, 0x572A,
+  0x5734, 0x593C, 0x5980, 0x597C, 0x5985, 0x597B, 0x597E, 0x5977,
+  0x597F, 0x5B56, 0x5C15, 0x5C25, 0x5C7C, 0x5C7A, 0x5C7B, 0x5C7E,
+plane 26 
+at 0x00
+  0x5DDF, 0x5E75, 0x5E84, 0x5F02, 0x5F1A, 0x5F74, 0x5FD5, 0x5FD4,
+  0x5FCF, 0x625C, 0x625E, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259,
+  0x6260, 0x625A, 0x6265, 0x65EF, 0x65EE, 0x673E, 0x6739, 0x6738,
+  0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18, 0x6C46, 0x6C52,
+  0x6C5C, 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B, 0x6C4C, 0x7071, 0x725E,
+  0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F, 0x7A75, 0x7F51, 0x8278,
+  0x827C, 0x8280, 0x827D, 0x827F, 0x864D, 0x897E, 0x9099, 0x9097,
+  0x9098, 0x909B, 0x9094, 0x9622, 0x9624, 0x9620, 0x9623, 0x4F56,
+  0x4F3B, 0x4F62, 0x4F49, 0x4F53, 0x4F64, 0x4F3E, 0x4F67, 0x4F52,
+  0x4F5F, 0x4F41, 0x4F58, 0x4F2D, 0x4F33, 0x4F3F, 0x4F61, 0x518F,
+  0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD, 0x52AE, 0x5309, 0x5363,
+  0x5372, 0x538E, 0x538F, 0x5430, 0x5437, 0x542A, 0x5454, 0x5445,
+  0x5419, 0x541C, 0x5425, 0x5418, 0x543D, 0x544F, 0x5441, 0x5428,
+  0x5424, 0x5447, 0x56EE, 0x56E7, 0x56E5, 0x5741, 0x5745, 0x574C,
+  0x5749, 0x574B, 0x5752, 0x5906, 0x5940, 0x59A6, 0x5998, 0x59A0,
+  0x5997, 0x598E, 0x59A2, 0x5990, 0x598F, 0x59A7, 0x59A1, 0x5B8E,
+  0x5B92, 0x5C28, 0x5C2A, 0x5C8D, 0x5C8F, 0x5C88, 0x5C8B, 0x5C89,
+  0x5C92, 0x5C8A, 0x5C86, 0x5C93, 0x5C95, 0x5DE0, 0x5E0A, 0x5E0E,
+  0x5E8B, 0x5E89, 0x5E8C, 0x5E88, 0x5E8D, 0x5F05, 0x5F1D, 0x5F78,
+  0x5F76, 0x5FD2, 0x5FD1, 0x5FD0, 0x5FED, 0x5FE8, 0x5FEE, 0x5FF3,
+  0x5FE1, 0x5FE4, 0x5FE3, 0x5FFA, 0x5FEF, 0x5FF7, 0x5FFB, 0x6000,
+  0x5FF4, 0x623A, 0x6283, 0x628C, 0x628E, 0x628F, 0x6294, 0x6287,
+  0x6271, 0x627B, 0x627A, 0x6270, 0x6281, 0x6288, 0x6277, 0x627D,
+  0x6272, 0x6274, 0x6537, 0x65F0, 0x65F4, 0x65F3, 0x65F2, 0x65F5,
+  0x6745, 0x6747, 0x6759, 0x6755, 0x674C, 0x6748, 0x675D, 0x674D,
+  0x675A, 0x674B, 0x6BD0, 0x6C19, 0x6C1A, 0x6C78, 0x6C67, 0x6C6B,
+  0x6C84, 0x6C8B, 0x6C8F, 0x6C71, 0x6C6F, 0x6C69, 0x6C9A, 0x6C6D,
+  0x6C87, 0x6C95, 0x6C9C, 0x6C66, 0x6C73, 0x6C65, 0x6C7B, 0x6C8E,
+  0x7074, 0x707A, 0x7263, 0x72BF, 0x72BD, 0x72C3, 0x72C6, 0x72C1,
+  0x72BA, 0x72C5, 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753A,
+  0x7539, 0x7594, 0x7595, 0x7681, 0x793D, 0x8034, 0x8095, 0x8099,
+  0x8090, 0x8092, 0x809C, 0x8290, 0x828F, 0x8285, 0x828E, 0x8291,
+plane 27 
+at 0x00
+  0x8293, 0x828A, 0x8283, 0x8284, 0x8C78, 0x8FC9, 0x8FBF, 0x909F,
+  0x90A1, 0x90A5, 0x909E, 0x90A7, 0x90A0, 0x9630, 0x9628, 0x962F,
+  0x962D, 0x4E33, 0x4F98, 0x4F7C, 0x4F85, 0x4F7D, 0x4F80, 0x4F87,
+  0x4F76, 0x4F74, 0x4F89, 0x4F84, 0x4F77, 0x4F4C, 0x4F97, 0x4F6A,
+  0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90, 0x4F9C, 0x4F94, 0x4F9E,
+  0x4F92, 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, 0x519E, 0x51BC, 0x51BE,
+  0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52BC, 0x530A, 0x530B,
+  0x533C, 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, 0x5482,
+  0x5488, 0x546B, 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, 0x5466,
+  0x548D, 0x546F, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464,
+  0x56F7, 0x56F9, 0x576F, 0x5772, 0x576D, 0x576B, 0x5771, 0x5770,
+  0x5776, 0x5780, 0x5775, 0x577B, 0x5773, 0x5774, 0x5762, 0x5768,
+  0x577D, 0x590C, 0x5945, 0x59B5, 0x59BA, 0x59CF, 0x59CE, 0x59B2,
+  0x59CC, 0x59C1, 0x59B6, 0x59BC, 0x59C3, 0x59D6, 0x59B1, 0x59BD,
+  0x59C0, 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65, 0x5B93, 0x5B95,
+  0x5C44, 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF, 0x5CA8,
+  0x5CAC, 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7, 0x5C9D,
+  0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17, 0x5E14, 0x5E19, 0x5F28,
+  0x5F22, 0x5F23, 0x5F24, 0x5F54, 0x5F82, 0x5F7E, 0x5F7D, 0x5FDE,
+  0x5FE5, 0x602D, 0x6026, 0x6019, 0x6032, 0x600B, 0x6034, 0x600A,
+  0x6017, 0x6033, 0x601A, 0x601E, 0x602C, 0x6022, 0x600D, 0x6010,
+  0x602E, 0x6013, 0x6011, 0x600C, 0x6009, 0x601C, 0x6214, 0x623D,
+  0x62AD, 0x62B4, 0x62D1, 0x62BE, 0x62AA, 0x62B6, 0x62CA, 0x62AE,
+  0x62B3, 0x62AF, 0x62BB, 0x62A9, 0x62B0, 0x62B8, 0x653D, 0x65A8,
+  0x65BB, 0x6609, 0x65FC, 0x6604, 0x6612, 0x6608, 0x65FB, 0x6603,
+  0x660B, 0x660D, 0x6605, 0x65FD, 0x6611, 0x6610, 0x66F6, 0x670A,
+  0x6785, 0x676C, 0x678E, 0x6792, 0x6776, 0x677B, 0x6798, 0x6786,
+  0x6784, 0x6774, 0x678D, 0x678C, 0x677A, 0x679F, 0x6791, 0x6799,
+  0x6783, 0x677D, 0x6781, 0x6778, 0x6779, 0x6794, 0x6B25, 0x6B80,
+  0x6B7E, 0x6BDE, 0x6C1D, 0x6C93, 0x6CEC, 0x6CEB, 0x6CEE, 0x6CD9,
+  0x6CB6, 0x6CD4, 0x6CAD, 0x6CE7, 0x6CB7, 0x6CD0, 0x6CC2, 0x6CBA,
+  0x6CC3, 0x6CC6, 0x6CED, 0x6CF2, 0x6CD2, 0x6CDD, 0x6CB4, 0x6C8A,
+plane 28 
+at 0x00
+  0x6C9D, 0x6C80, 0x6CDE, 0x6CC0, 0x6D30, 0x6CCD, 0x6CC7, 0x6CB0,
+  0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1, 0x7094, 0x7098, 0x7085, 0x7093,
+  0x7086, 0x7084, 0x7091, 0x7096, 0x7082, 0x709A, 0x7083, 0x726A,
+  0x72D6, 0x72CB, 0x72D8, 0x72C9, 0x72DC, 0x72D2, 0x72D4, 0x72DA,
+  0x72CC, 0x72D1, 0x73A4, 0x73A1, 0x73AD, 0x73A6, 0x73A2, 0x73A0,
+  0x73AC, 0x739D, 0x74DD, 0x74E8, 0x753F, 0x7540, 0x753E, 0x758C,
+  0x7598, 0x76AF, 0x76F3, 0x76F1, 0x76F0, 0x76F5, 0x77F8, 0x77FC,
+  0x77F9, 0x77FB, 0x77FA, 0x77F7, 0x7942, 0x793F, 0x79C5, 0x7A78,
+  0x7A7B, 0x7AFB, 0x7C75, 0x7CFD, 0x8035, 0x808F, 0x80AE, 0x80A3,
+  0x80B8, 0x80B5, 0x80AD, 0x8220, 0x82A0, 0x82C0, 0x82AB, 0x829A,
+  0x8298, 0x829B, 0x82B5, 0x82A7, 0x82AE, 0x82BC, 0x829E, 0x82BA,
+  0x82B4, 0x82A8, 0x82A1, 0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6,
+  0x82A2, 0x8670, 0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB,
+  0x8FD3, 0x8FCD, 0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF,
+  0x90B3, 0x90B0, 0x9639, 0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD,
+  0x4FC5, 0x4FD3, 0x4FB2, 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC,
+  0x4FD9, 0x4FBB, 0x4FB3, 0x4FDB, 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0,
+  0x4FB9, 0x4FEC, 0x5244, 0x5249, 0x52C0, 0x52C2, 0x533D, 0x537C,
+  0x5397, 0x5396, 0x5399, 0x5398, 0x54BA, 0x54A1, 0x54AD, 0x54A5,
+  0x54CF, 0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6, 0x54C5,
+  0x54C6, 0x54A0, 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE,
+  0x54B0, 0x57B5, 0x579E, 0x579F, 0x57A4, 0x578C, 0x5797, 0x579D,
+  0x579B, 0x5794, 0x5798, 0x578F, 0x5799, 0x57A5, 0x579A, 0x5795,
+  0x58F4, 0x590D, 0x5953, 0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1,
+  0x59DD, 0x59FA, 0x59FD, 0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7,
+  0x59DB, 0x59E9, 0x59F3, 0x59F5, 0x59E0, 0x59FE, 0x59F4, 0x59ED,
+  0x5BA8, 0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC, 0x5CD7, 0x5CCB, 0x5CDB,
+  0x5CDE, 0x5CDA, 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, 0x5CD3, 0x5CD4,
+  0x5CCF, 0x5CC8, 0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9, 0x5E21,
+  0x5E22, 0x5E23, 0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2, 0x5E9B,
+  0x5EA3, 0x5EA5, 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037, 0x6039,
+  0x6054, 0x6072, 0x605E, 0x6045, 0x6053, 0x6047, 0x6049, 0x605B,
+plane 29 
+at 0x00
+  0x604C, 0x6040, 0x6042, 0x605F, 0x6024, 0x6044, 0x6058, 0x6066,
+  0x606E, 0x6242, 0x6243, 0x62CF, 0x630D, 0x630B, 0x62F5, 0x630E,
+  0x6303, 0x62EB, 0x62F9, 0x630F, 0x630C, 0x62F8, 0x62F6, 0x6300,
+  0x6313, 0x6314, 0x62FA, 0x6315, 0x62FB, 0x62F0, 0x6541, 0x6543,
+  0x65AA, 0x65BF, 0x6636, 0x6621, 0x6632, 0x6635, 0x661C, 0x6626,
+  0x6622, 0x6633, 0x662B, 0x663A, 0x661D, 0x6634, 0x6639, 0x662E,
+  0x670F, 0x6710, 0x67C1, 0x67F2, 0x67C8, 0x67BA, 0x67DC, 0x67BB,
+  0x67F8, 0x67D8, 0x67C0, 0x67B7, 0x67C5, 0x67EB, 0x67E4, 0x67DF,
+  0x67B5, 0x67CD, 0x67B3, 0x67F7, 0x67F6, 0x67EE, 0x67E3, 0x67C2,
+  0x67B9, 0x67CE, 0x67E7, 0x67F0, 0x67B2, 0x67FC, 0x67C6, 0x67ED,
+  0x67CC, 0x67AE, 0x67E6, 0x67DB, 0x67FA, 0x67C9, 0x67CA, 0x67C3,
+  0x67EA, 0x67CB, 0x6B28, 0x6B82, 0x6B84, 0x6BB6, 0x6BD6, 0x6BD8,
+  0x6BE0, 0x6C20, 0x6C21, 0x6D28, 0x6D34, 0x6D2D, 0x6D1F, 0x6D3C,
+  0x6D3F, 0x6D12, 0x6D0A, 0x6CDA, 0x6D33, 0x6D04, 0x6D19, 0x6D3A,
+  0x6D1A, 0x6D11, 0x6D00, 0x6D1D, 0x6D42, 0x6D01, 0x6D18, 0x6D37,
+  0x6D03, 0x6D0F, 0x6D40, 0x6D07, 0x6D20, 0x6D2C, 0x6D08, 0x6D22,
+  0x6D09, 0x6D10, 0x70B7, 0x709F, 0x70BE, 0x70B1, 0x70B0, 0x70A1,
+  0x70B4, 0x70B5, 0x70A9, 0x7241, 0x7249, 0x724A, 0x726C, 0x7270,
+  0x7273, 0x726E, 0x72CA, 0x72E4, 0x72E8, 0x72EB, 0x72DF, 0x72EA,
+  0x72E6, 0x72E3, 0x7385, 0x73CC, 0x73C2, 0x73C8, 0x73C5, 0x73B9,
+  0x73B6, 0x73B5, 0x73B4, 0x73EB, 0x73BF, 0x73C7, 0x73BE, 0x73C3,
+  0x73C6, 0x73B8, 0x73CB, 0x74EC, 0x74EE, 0x752E, 0x7547, 0x7548,
+  0x75A7, 0x75AA, 0x7679, 0x76C4, 0x7708, 0x7703, 0x7704, 0x7705,
+  0x770A, 0x76F7, 0x76FB, 0x76FA, 0x77E7, 0x77E8, 0x7806, 0x7811,
+  0x7812, 0x7805, 0x7810, 0x780F, 0x780E, 0x7809, 0x7803, 0x7813,
+  0x794A, 0x794C, 0x794B, 0x7945, 0x7944, 0x79D5, 0x79CD, 0x79CF,
+  0x79D6, 0x79CE, 0x7A80, 0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A,
+  0x7C78, 0x7C79, 0x7C7F, 0x7C80, 0x7C81, 0x7D03, 0x7D08, 0x7D01,
+  0x7F58, 0x7F91, 0x7F8D, 0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014,
+  0x8037, 0x80D8, 0x80C7, 0x80E0, 0x80D1, 0x80C8, 0x80C2, 0x80D0,
+  0x80C5, 0x80E3, 0x80D9, 0x80DC, 0x80CA, 0x80D5, 0x80C9, 0x80CF,
+  0x80D7, 0x80E6, 0x80CD, 0x81FF, 0x8221, 0x8294, 0x82D9, 0x82FE,
+plane 30 
+at 0x00
+  0x82F9, 0x8307, 0x82E8, 0x8300, 0x82D5, 0x833A, 0x82EB, 0x82D6,
+  0x82F4, 0x82EC, 0x82E1, 0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6,
+  0x82F0, 0x82EA, 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, 0x8677,
+  0x8674, 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869,
+  0x89D3, 0x8A04, 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0,
+  0x90F1, 0x90BD, 0x90BF, 0x90D5, 0x90C5, 0x90BE, 0x90C7, 0x90CB,
+  0x90C8, 0x91D4, 0x91D3, 0x9654, 0x964F, 0x9651, 0x9653, 0x964A,
+  0x964E, 0x501E, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501B,
+  0x4FF5, 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, 0x4FF7, 0x5017,
+  0x501C, 0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, 0x515A,
+  0x5194, 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261,
+  0x525A, 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E,
+  0x539E, 0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4,
+  0x551A, 0x54FF, 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, 0x54F1,
+  0x550A, 0x54FB, 0x54F7, 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B,
+  0x5701, 0x5702, 0x57CC, 0x5832, 0x57D5, 0x57D2, 0x57BA, 0x57C6,
+  0x57BD, 0x57BC, 0x57B8, 0x57B6, 0x57BF, 0x57C7, 0x57D0, 0x57B9,
+  0x57C1, 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, 0x5A2E, 0x5A15,
+  0x5A0F, 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, 0x5BAD,
+  0x5BAC, 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1,
+  0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, 0x5EAA,
+  0x5EAC, 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067, 0x6041,
+  0x60A2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609D, 0x6083, 0x6095,
+  0x609B, 0x6097, 0x6087, 0x609C, 0x608E, 0x6219, 0x6246, 0x62F2,
+  0x6310, 0x6356, 0x632C, 0x6344, 0x6345, 0x6336, 0x6343, 0x63E4,
+  0x6339, 0x634B, 0x634A, 0x633C, 0x6329, 0x6341, 0x6334, 0x6358,
+  0x6354, 0x6359, 0x632D, 0x6347, 0x6333, 0x635A, 0x6351, 0x6338,
+  0x6357, 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6, 0x65C3, 0x65C4,
+  0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, 0x6713, 0x681F,
+  0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, 0x684F, 0x6816,
+  0x6831, 0x681C, 0x6835, 0x682B, 0x682D, 0x682F, 0x684E, 0x6844,
+  0x6834, 0x681D, 0x6812, 0x6814, 0x6826, 0x6828, 0x682E, 0x684D,
+plane 31 
+at 0x00
+  0x683A, 0x6825, 0x6820, 0x6B2C, 0x6B2F, 0x6B2D, 0x6B31, 0x6B34,
+  0x6B6D, 0x8082, 0x6B88, 0x6BE6, 0x6BE4, 0x6BE8, 0x6BE3, 0x6BE2,
+  0x6BE7, 0x6C25, 0x6D7A, 0x6D63, 0x6D64, 0x6D76, 0x6D0D, 0x6D61,
+  0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, 0x6D91, 0x6D8D, 0x6DEF,
+  0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60, 0x6D97, 0x6D70, 0x6D7C,
+  0x6D5F, 0x6D82, 0x6D98, 0x6D2F, 0x6D68, 0x6D8B, 0x6D7E, 0x6D80,
+  0x6D84, 0x6D16, 0x6D83, 0x6D7B, 0x6D7D, 0x6D75, 0x6D90, 0x70DC,
+  0x70D3, 0x70D1, 0x70DD, 0x70CB, 0x7F39, 0x70E2, 0x70D7, 0x70D2,
+  0x70DE, 0x70E0, 0x70D4, 0x70CD, 0x70C5, 0x70C6, 0x70C7, 0x70DA,
+  0x70CE, 0x70E1, 0x7242, 0x7278, 0x7277, 0x7276, 0x7300, 0x72FA,
+  0x72F4, 0x72FE, 0x72F6, 0x72F3, 0x72FB, 0x7301, 0x73D3, 0x73D9,
+  0x73E5, 0x73D6, 0x73BC, 0x73E7, 0x73E3, 0x73E9, 0x73DC, 0x73D2,
+  0x73DB, 0x73D4, 0x73DD, 0x73DA, 0x73D7, 0x73D8, 0x73E8, 0x74DE,
+  0x74DF, 0x74F4, 0x74F5, 0x7521, 0x755B, 0x755F, 0x75B0, 0x75C1,
+  0x75BB, 0x75C4, 0x75C0, 0x75BF, 0x75B6, 0x75BA, 0x768A, 0x76C9,
+  0x771D, 0x771B, 0x7710, 0x7713, 0x7712, 0x7723, 0x7711, 0x7715,
+  0x7719, 0x771A, 0x7722, 0x7727, 0x7823, 0x782C, 0x7822, 0x7835,
+  0x782F, 0x7828, 0x782E, 0x782B, 0x7821, 0x7829, 0x7833, 0x782A,
+  0x7831, 0x7954, 0x795B, 0x794F, 0x795C, 0x7953, 0x7952, 0x7951,
+  0x79EB, 0x79EC, 0x79E0, 0x79EE, 0x79ED, 0x79EA, 0x79DC, 0x79DE,
+  0x79DD, 0x7A86, 0x7A89, 0x7A85, 0x7A8B, 0x7A8C, 0x7A8A, 0x7A87,
+  0x7AD8, 0x7B10, 0x7B04, 0x7B13, 0x7B05, 0x7B0F, 0x7B08, 0x7B0A,
+  0x7B0E, 0x7B09, 0x7B12, 0x7C84, 0x7C91, 0x7C8A, 0x7C8C, 0x7C88,
+  0x7C8D, 0x7C85, 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, 0x7D18, 0x7D16,
+  0x7D13, 0x7D1F, 0x7D12, 0x7D0F, 0x7D0C, 0x7F5C, 0x7F61, 0x7F5E,
+  0x7F60, 0x7F5D, 0x7F5B, 0x7F96, 0x7F92, 0x7FC3, 0x7FC2, 0x7FC0,
+  0x8016, 0x803E, 0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5, 0x8101,
+  0x80FB, 0x8100, 0x8201, 0x822F, 0x8225, 0x8333, 0x832D, 0x8344,
+  0x8319, 0x8351, 0x8325, 0x8356, 0x833F, 0x8341, 0x8326, 0x831C,
+  0x8322, 0x8342, 0x834E, 0x831B, 0x832A, 0x8308, 0x833C, 0x834D,
+  0x8316, 0x8324, 0x8320, 0x8337, 0x832F, 0x8329, 0x8347, 0x8345,
+  0x834C, 0x8353, 0x831E, 0x832C, 0x834B, 0x8327, 0x8348, 0x8653,
+plane 32 
+at 0x00
+  0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D, 0x8691, 0x869E, 0x8687,
+  0x8697, 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699, 0x86A1,
+  0x86A7, 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, 0x8843,
+  0x8844, 0x886D, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887F,
+  0x886F, 0x8883, 0x887E, 0x8874, 0x887C, 0x8A12, 0x8C47, 0x8C57,
+  0x8C7B, 0x8CA4, 0x8CA3, 0x8D76, 0x8D78, 0x8DB5, 0x8DB7, 0x8DB6,
+  0x8ED1, 0x8ED3, 0x8FFE, 0x8FF5, 0x9002, 0x8FFF, 0x8FFB, 0x9004,
+  0x8FFC, 0x8FF6, 0x90D6, 0x90E0, 0x90D9, 0x90DA, 0x90E3, 0x90DF,
+  0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC, 0x90E4, 0x9150, 0x914E,
+  0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC, 0x98E3,
+  0x9ADF, 0x9B2F, 0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E, 0x5060,
+  0x5053, 0x504B, 0x505D, 0x5072, 0x5048, 0x504D, 0x5041, 0x505B,
+  0x504A, 0x5062, 0x5015, 0x5045, 0x505F, 0x5069, 0x506B, 0x5063,
+  0x5064, 0x5046, 0x5040, 0x506E, 0x5073, 0x5057, 0x5051, 0x51D0,
+  0x526B, 0x526D, 0x526C, 0x526E, 0x52D6, 0x52D3, 0x532D, 0x539C,
+  0x5575, 0x5576, 0x553C, 0x554D, 0x5550, 0x5534, 0x552A, 0x5551,
+  0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550C, 0x5532,
+  0x5565, 0x554E, 0x5539, 0x5548, 0x552D, 0x553B, 0x5540, 0x554B,
+  0x570A, 0x5707, 0x57FB, 0x5814, 0x57E2, 0x57F6, 0x57DC, 0x57F4,
+  0x5800, 0x57ED, 0x57FD, 0x5808, 0x57F8, 0x580B, 0x57F3, 0x57CF,
+  0x5807, 0x57EE, 0x57E3, 0x57F2, 0x57E5, 0x57EC, 0x57E1, 0x580E,
+  0x57FC, 0x5810, 0x57E7, 0x5801, 0x580C, 0x57F1, 0x57E9, 0x57F0,
+  0x580D, 0x5804, 0x595C, 0x5A60, 0x5A58, 0x5A55, 0x5A67, 0x5A5E,
+  0x5A38, 0x5A35, 0x5A6D, 0x5A50, 0x5A5F, 0x5A65, 0x5A6C, 0x5A53,
+  0x5A64, 0x5A57, 0x5A43, 0x5A5D, 0x5A52, 0x5A44, 0x5A5B, 0x5A48,
+  0x5A8E, 0x5A3E, 0x5A4D, 0x5A39, 0x5A4C, 0x5A70, 0x5A69, 0x5A47,
+  0x5A51, 0x5A56, 0x5A42, 0x5A5C, 0x5B72, 0x5B6E, 0x5BC1, 0x5BC0,
+  0x5C59, 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A, 0x5D20, 0x5D0C, 0x5D28,
+  0x5D0D, 0x5D26, 0x5D25, 0x5D0F, 0x5D30, 0x5D12, 0x5D23, 0x5D1F,
+  0x5D2E, 0x5E3E, 0x5E34, 0x5EB1, 0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3,
+  0x5F36, 0x5F38, 0x5F9B, 0x5F96, 0x5F9F, 0x608A, 0x6090, 0x6086,
+  0x60BE, 0x60B0, 0x60BA, 0x60D3, 0x60D4, 0x60CF, 0x60E4, 0x60D9,
+plane 33 
+at 0x00
+  0x60DD, 0x60C8, 0x60B1, 0x60DB, 0x60B7, 0x60CA, 0x60BF, 0x60C3,
+  0x60CD, 0x60C0, 0x6332, 0x6365, 0x638A, 0x6382, 0x637D, 0x63BD,
+  0x639E, 0x63AD, 0x639D, 0x6397, 0x63AB, 0x638E, 0x636F, 0x6387,
+  0x6390, 0x636E, 0x63AF, 0x6375, 0x639C, 0x636D, 0x63AE, 0x637C,
+  0x63A4, 0x633B, 0x639F, 0x6378, 0x6385, 0x6381, 0x6391, 0x638D,
+  0x6370, 0x6553, 0x65CD, 0x6665, 0x6661, 0x665B, 0x6659, 0x665C,
+  0x6662, 0x6718, 0x6879, 0x6887, 0x6890, 0x689C, 0x686D, 0x686E,
+  0x68AE, 0x68AB, 0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875,
+  0x6874, 0x68B2, 0x688F, 0x6877, 0x6892, 0x687C, 0x686B, 0x6872,
+  0x68AA, 0x6880, 0x6871, 0x687E, 0x689B, 0x6896, 0x688B, 0x68A0,
+  0x6889, 0x68A4, 0x6878, 0x687B, 0x6891, 0x688C, 0x688A, 0x687D,
+  0x6B36, 0x6B33, 0x6B37, 0x6B38, 0x6B91, 0x6B8F, 0x6B8D, 0x6B8E,
+  0x6B8C, 0x6C2A, 0x6DC0, 0x6DAB, 0x6DB4, 0x6DB3, 0x6E74, 0x6DAC,
+  0x6DE9, 0x6DE2, 0x6DB7, 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0,
+  0x6DDF, 0x6DD6, 0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4,
+  0x6DCA, 0x6DBD, 0x6DED, 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF,
+  0x6DC9, 0x6DD0, 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3,
+  0x6DBB, 0x70FA, 0x710D, 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0,
+  0x7104, 0x70F3, 0x7110, 0x70FC, 0x70FF, 0x7106, 0x7113, 0x7100,
+  0x70F8, 0x70F6, 0x710B, 0x7102, 0x710E, 0x727E, 0x727B, 0x727C,
+  0x727F, 0x731D, 0x7317, 0x7307, 0x7311, 0x7318, 0x730A, 0x7308,
+  0x72FF, 0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8, 0x73F5, 0x7404,
+  0x7401, 0x73FD, 0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C,
+  0x740B, 0x73F4, 0x7408, 0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF,
+  0x75CB, 0x75CC, 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, 0x7739,
+  0x772F, 0x772D, 0x7731, 0x7732, 0x7734, 0x7733, 0x773D, 0x7725,
+  0x773B, 0x7735, 0x7848, 0x7852, 0x7849, 0x784D, 0x784A, 0x784C,
+  0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796A, 0x7963,
+  0x796B, 0x7961, 0x79BB, 0x79FA, 0x79F8, 0x79F6, 0x79F7, 0x7A8F,
+  0x7A94, 0x7A90, 0x7B35, 0x7B47, 0x7B34, 0x7B25, 0x7B30, 0x7B22,
+  0x7B24, 0x7B33, 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B, 0x7B2D,
+  0x7B2F, 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98, 0x7C96,
+plane 34 
+at 0x00
+  0x7CA3, 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, 0x7D2C,
+  0x7D29, 0x7D41, 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, 0x7D28,
+  0x7F63, 0x7F95, 0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB, 0x7FCD,
+  0x7FD0, 0x7FD1, 0x7FC7, 0x7FCF, 0x7FC9, 0x801F, 0x801E, 0x801B,
+  0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, 0x811B, 0x812D,
+  0x811F, 0x812C, 0x811E, 0x8121, 0x8115, 0x8127, 0x811D, 0x8122,
+  0x8211, 0x8238, 0x8233, 0x823A, 0x8234, 0x8232, 0x8274, 0x8390,
+  0x83A3, 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4, 0x8374, 0x838F,
+  0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83A9, 0x837D, 0x8383,
+  0x838C, 0x839D, 0x839B, 0x83AA, 0x838B, 0x837E, 0x83A5, 0x83AF,
+  0x8388, 0x8397, 0x83B0, 0x837F, 0x83A6, 0x8387, 0x83AE, 0x8376,
+  0x839A, 0x8659, 0x8656, 0x86BF, 0x86B7, 0x86C2, 0x86C1, 0x86C5,
+  0x86BA, 0x86B0, 0x86C8, 0x86B9, 0x86B3, 0x86B8, 0x86CC, 0x86B4,
+  0x86BB, 0x86BC, 0x86C3, 0x86BD, 0x86BE, 0x8852, 0x8889, 0x8895,
+  0x88A8, 0x88A2, 0x88AA, 0x889A, 0x8891, 0x88A1, 0x889F, 0x8898,
+  0x88A7, 0x8899, 0x889B, 0x8897, 0x88A4, 0x88AC, 0x888C, 0x8893,
+  0x888E, 0x8982, 0x89D6, 0x89D9, 0x89D5, 0x8A30, 0x8A27, 0x8A2C,
+  0x8A1E, 0x8C39, 0x8C3B, 0x8C5C, 0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D,
+  0x8D7B, 0x8D79, 0x8DBC, 0x8DC2, 0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8,
+  0x8EDE, 0x8EDD, 0x8EDC, 0x8ED7, 0x8EE0, 0x8EE1, 0x9024, 0x900B,
+  0x9011, 0x901C, 0x900C, 0x9021, 0x90EF, 0x90EA, 0x90F0, 0x90F4,
+  0x90F2, 0x90F3, 0x90D4, 0x90EB, 0x90EC, 0x90E9, 0x9156, 0x9158,
+  0x915A, 0x9153, 0x9155, 0x91EC, 0x91F4, 0x91F1, 0x91F3, 0x91F8,
+  0x91E4, 0x91F9, 0x91EA, 0x91EB, 0x91F7, 0x91E8, 0x91EE, 0x957A,
+  0x9586, 0x9588, 0x967C, 0x966D, 0x966B, 0x9671, 0x966F, 0x96BF,
+  0x976A, 0x9804, 0x98E5, 0x9997, 0x509B, 0x5095, 0x5094, 0x509E,
+  0x508B, 0x50A3, 0x5083, 0x508C, 0x508E, 0x509D, 0x5068, 0x509C,
+  0x5092, 0x5082, 0x5087, 0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4,
+  0x53A7, 0x5591, 0x55A8, 0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2,
+  0x5593, 0x5588, 0x558F, 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4,
+  0x557D, 0x558C, 0x55A6, 0x557F, 0x5595, 0x55A1, 0x558E, 0x570C,
+  0x5829, 0x5837, 0x5819, 0x581E, 0x5827, 0x5823, 0x5828, 0x57F5,
+plane 35 
+at 0x00
+  0x5848, 0x5825, 0x581C, 0x581B, 0x5833, 0x583F, 0x5836, 0x582E,
+  0x5839, 0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, 0x5A94,
+  0x5A9F, 0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5,
+  0x5AAC, 0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83,
+  0x5A8B, 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93,
+  0x5A9D, 0x5BEA, 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE,
+  0x5C0C, 0x5C30, 0x5D37, 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F,
+  0x5D35, 0x5D51, 0x5D4E, 0x5D55, 0x5D33, 0x5D3A, 0x5D52, 0x5D3D,
+  0x5D31, 0x5D59, 0x5D42, 0x5D39, 0x5D49, 0x5D38, 0x5D3C, 0x5D32,
+  0x5D36, 0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58, 0x5FA6, 0x5FA5,
+  0x5FAB, 0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4, 0x6114,
+  0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC,
+  0x60FE, 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104,
+  0x610B, 0x624A, 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8,
+  0x63EF, 0x63C3, 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5,
+  0x63F2, 0x63F5, 0x6461, 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4,
+  0x63D8, 0x63D3, 0x63C2, 0x63C7, 0x63CC, 0x63CB, 0x63C8, 0x63F0,
+  0x63D7, 0x63D9, 0x6532, 0x6567, 0x656A, 0x6564, 0x655C, 0x6568,
+  0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0, 0x65D2, 0x667C,
+  0x666C, 0x667B, 0x6680, 0x6671, 0x6679, 0x666A, 0x6672, 0x6701,
+  0x690C, 0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC, 0x68EA, 0x68F1,
+  0x690F, 0x68D6, 0x68F7, 0x68EB, 0x68E4, 0x68F6, 0x6913, 0x6910,
+  0x68F3, 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970, 0x68B4, 0x6911,
+  0x68EF, 0x68C6, 0x6914, 0x68F8, 0x68D0, 0x68FD, 0x68FC, 0x68E8,
+  0x690B, 0x690A, 0x6917, 0x68CE, 0x68C8, 0x68DD, 0x68DE, 0x68E6,
+  0x68F4, 0x68D1, 0x6906, 0x68D4, 0x68E9, 0x6915, 0x6925, 0x68C7,
+  0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, 0x6B97, 0x6B99, 0x6B95,
+  0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC, 0x6E46, 0x6E47,
+  0x6E1F, 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45, 0x6E62, 0x6E2B,
+  0x6E3F, 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33, 0x6E4B, 0x6E40,
+  0x6E51, 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E, 0x6E68, 0x6E5C, 0x6E61,
+  0x6E31, 0x6E28, 0x6E60, 0x6E71, 0x6E6B, 0x6E39, 0x6E22, 0x6E30,
+plane 36 
+at 0x00
+  0x6E53, 0x6E65, 0x6E27, 0x6E78, 0x6E64, 0x6E77, 0x6E55, 0x6E79,
+  0x6E52, 0x6E66, 0x6E35, 0x6E36, 0x6E5A, 0x7120, 0x711E, 0x712F,
+  0x70FB, 0x712E, 0x7131, 0x7123, 0x7125, 0x7122, 0x7132, 0x711F,
+  0x7128, 0x713A, 0x711B, 0x724B, 0x725A, 0x7288, 0x7289, 0x7286,
+  0x7285, 0x728B, 0x7312, 0x730B, 0x7330, 0x7322, 0x7331, 0x7333,
+  0x7327, 0x7332, 0x732D, 0x7326, 0x7323, 0x7335, 0x730C, 0x742E,
+  0x742C, 0x7430, 0x742B, 0x7416, 0x741A, 0x7421, 0x742D, 0x7431,
+  0x7424, 0x7423, 0x741D, 0x7429, 0x7420, 0x7432, 0x74FB, 0x752F,
+  0x756F, 0x756C, 0x75E7, 0x75DA, 0x75E1, 0x75E6, 0x75DD, 0x75DF,
+  0x75E4, 0x75D7, 0x7695, 0x7692, 0x76DA, 0x7746, 0x7747, 0x7744,
+  0x774D, 0x7745, 0x774A, 0x774E, 0x774B, 0x774C, 0x77DE, 0x77EC,
+  0x7860, 0x7864, 0x7865, 0x785C, 0x786D, 0x7871, 0x786A, 0x786E,
+  0x7870, 0x7869, 0x7868, 0x785E, 0x7862, 0x7974, 0x7973, 0x7972,
+  0x7970, 0x7A02, 0x7A0A, 0x7A03, 0x7A0C, 0x7A04, 0x7A99, 0x7AE6,
+  0x7AE4, 0x7B4A, 0x7B3B, 0x7B44, 0x7B48, 0x7B4C, 0x7B4E, 0x7B40,
+  0x7B58, 0x7B45, 0x7CA2, 0x7C9E, 0x7CA8, 0x7CA1, 0x7D58, 0x7D6F,
+  0x7D63, 0x7D53, 0x7D56, 0x7D67, 0x7D6A, 0x7D4F, 0x7D6D, 0x7D5C,
+  0x7D6B, 0x7D52, 0x7D54, 0x7D69, 0x7D51, 0x7D5F, 0x7D4E, 0x7F3E,
+  0x7F3F, 0x7F65, 0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, 0x8051,
+  0x804F, 0x8050, 0x80FE, 0x80D4, 0x8143, 0x814A, 0x8152, 0x814F,
+  0x8147, 0x813D, 0x814D, 0x813A, 0x81E6, 0x81EE, 0x81F7, 0x81F8,
+  0x81F9, 0x8204, 0x823C, 0x823D, 0x823F, 0x8275, 0x833B, 0x83CF,
+  0x83F9, 0x8423, 0x83C0, 0x83E8, 0x8412, 0x83E7, 0x83E4, 0x83FC,
+  0x83F6, 0x8410, 0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF, 0x8401,
+  0x83DD, 0x83E5, 0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, 0x83D6,
+  0x83F5, 0x83C9, 0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, 0x83C2,
+  0x83F3, 0x83D5, 0x83FA, 0x83C7, 0x83D1, 0x83EA, 0x8413, 0x83C3,
+  0x83EC, 0x83EE, 0x83C4, 0x83FB, 0x83D7, 0x83E2, 0x841B, 0x83DB,
+  0x83FE, 0x86D8, 0x86E2, 0x86E6, 0x86D3, 0x86E3, 0x86DA, 0x86EA,
+  0x86DD, 0x86EB, 0x86DC, 0x86EC, 0x86E9, 0x86D7, 0x86E8, 0x86D1,
+  0x8848, 0x8856, 0x8855, 0x88BA, 0x88D7, 0x88B9, 0x88B8, 0x88C0,
+  0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD, 0x88B2, 0x8901, 0x88C9,
+plane 37 
+at 0x00
+  0x8995, 0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB, 0x8A4E, 0x8A4D,
+  0x8A39, 0x8A59, 0x8A40, 0x8A57, 0x8A58, 0x8A44, 0x8A45, 0x8A52,
+  0x8A48, 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81, 0x8C80,
+  0x8CBA, 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, 0x8D89,
+  0x8DD8, 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6, 0x8DDC, 0x8DCF, 0x8DD5,
+  0x8DD9, 0x8DC8, 0x8DD7, 0x8DC5, 0x8EEF, 0x8EF7, 0x8EFA, 0x8EF9,
+  0x8EE6, 0x8EEE, 0x8EE5, 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6, 0x8EEB,
+  0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9, 0x902D, 0x9034, 0x902F, 0x9106,
+  0x912C, 0x9104, 0x90FF, 0x90FC, 0x9108, 0x90F9, 0x90FB, 0x9101,
+  0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915F, 0x9162,
+  0x9160, 0x9201, 0x920A, 0x9225, 0x9203, 0x921A, 0x9226, 0x920F,
+  0x920C, 0x9200, 0x9212, 0x91FF, 0x91FD, 0x9206, 0x9204, 0x9227,
+  0x9202, 0x921C, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, 0x957B,
+  0x958D, 0x958C, 0x9590, 0x9687, 0x967E, 0x9688, 0x9689, 0x9683,
+  0x9680, 0x96C2, 0x96C8, 0x96C3, 0x96F1, 0x96F0, 0x976C, 0x9770,
+  0x976E, 0x9807, 0x98A9, 0x98EB, 0x9CE6, 0x9EF9, 0x4E83, 0x4E84,
+  0x4EB6, 0x50BD, 0x50BF, 0x50C6, 0x50AE, 0x50C4, 0x50CA, 0x50B4,
+  0x50C8, 0x50C2, 0x50B0, 0x50C1, 0x50BA, 0x50B1, 0x50CB, 0x50C9,
+  0x50B6, 0x50B8, 0x51D7, 0x527A, 0x5278, 0x527B, 0x527C, 0x55C3,
+  0x55DB, 0x55CC, 0x55D0, 0x55CB, 0x55CA, 0x55DD, 0x55C0, 0x55D4,
+  0x55C4, 0x55E9, 0x55BF, 0x55D2, 0x558D, 0x55CF, 0x55D5, 0x55E2,
+  0x55D6, 0x55C8, 0x55F2, 0x55CD, 0x55D9, 0x55C2, 0x5714, 0x5853,
+  0x5868, 0x5864, 0x584F, 0x584D, 0x5849, 0x586F, 0x5855, 0x584E,
+  0x585D, 0x5859, 0x5865, 0x585B, 0x583D, 0x5863, 0x5871, 0x58FC,
+  0x5AC7, 0x5AC4, 0x5ACB, 0x5ABA, 0x5AB8, 0x5AB1, 0x5AB5, 0x5AB0,
+  0x5ABF, 0x5AC8, 0x5ABB, 0x5AC6, 0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4,
+  0x5AB6, 0x5ACD, 0x5AB9, 0x5A90, 0x5BD6, 0x5BD8, 0x5BD9, 0x5C1F,
+  0x5C33, 0x5D71, 0x5D63, 0x5D4A, 0x5D65, 0x5D72, 0x5D6C, 0x5D5E,
+  0x5D68, 0x5D67, 0x5D62, 0x5DF0, 0x5E4F, 0x5E4E, 0x5E4A, 0x5E4D,
+  0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6, 0x5ECB, 0x5EC7, 0x5F40, 0x5FAF,
+  0x5FAD, 0x60F7, 0x6149, 0x614A, 0x612B, 0x6145, 0x6136, 0x6132,
+  0x612E, 0x6146, 0x612F, 0x614F, 0x6129, 0x6140, 0x6220, 0x9168,
+plane 38 
+at 0x00
+  0x6223, 0x6225, 0x6224, 0x63C5, 0x63F1, 0x63EB, 0x6410, 0x6412,
+  0x6409, 0x6420, 0x6424, 0x6433, 0x6443, 0x641F, 0x6415, 0x6418,
+  0x6439, 0x6437, 0x6422, 0x6423, 0x640C, 0x6426, 0x6430, 0x6428,
+  0x6441, 0x6435, 0x642F, 0x640A, 0x641A, 0x6440, 0x6425, 0x6427,
+  0x640B, 0x63E7, 0x641B, 0x642E, 0x6421, 0x640E, 0x656F, 0x6592,
+  0x65D3, 0x6686, 0x668C, 0x6695, 0x6690, 0x668B, 0x668A, 0x6699,
+  0x6694, 0x6678, 0x6720, 0x6966, 0x695F, 0x6938, 0x694E, 0x6962,
+  0x6971, 0x693F, 0x6945, 0x696A, 0x6939, 0x6942, 0x6957, 0x6959,
+  0x697A, 0x6948, 0x6949, 0x6935, 0x696C, 0x6933, 0x693D, 0x6965,
+  0x68F0, 0x6978, 0x6934, 0x6969, 0x6940, 0x696F, 0x6944, 0x6976,
+  0x6958, 0x6941, 0x6974, 0x694C, 0x693B, 0x694B, 0x6937, 0x695C,
+  0x694F, 0x6951, 0x6932, 0x6952, 0x692F, 0x697B, 0x693C, 0x6B46,
+  0x6B45, 0x6B43, 0x6B42, 0x6B48, 0x6B41, 0x6B9B, 0xFA0D, 0x6BFB,
+  0x6BFC, 0x6BF9, 0x6BF7, 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, 0x6E8F,
+  0x6EC0, 0x6E9F, 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6,
+  0x6ED2, 0x6EBD, 0x6EC1, 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD,
+  0x6EA6, 0x6ECF, 0x6EB2, 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99,
+  0x6E92, 0x6E8E, 0x6E8D, 0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, 0x6ED0,
+  0x6ECA, 0x6E97, 0x6EAE, 0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163,
+  0x7160, 0x7141, 0x715D, 0x7162, 0x7172, 0x7178, 0x716A, 0x7161,
+  0x7142, 0x7158, 0x7143, 0x714B, 0x7170, 0x715F, 0x7150, 0x7153,
+  0x7144, 0x714D, 0x715A, 0x724F, 0x728D, 0x728C, 0x7291, 0x7290,
+  0x728E, 0x733C, 0x7342, 0x733B, 0x733A, 0x7340, 0x734A, 0x7349,
+  0x7444, 0x744A, 0x744B, 0x7452, 0x7451, 0x7457, 0x7440, 0x744F,
+  0x7450, 0x744E, 0x7442, 0x7446, 0x744D, 0x7454, 0x74E1, 0x74FF,
+  0x74FE, 0x74FD, 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF, 0x760F,
+  0x7603, 0x75F7, 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610, 0x75FB,
+  0x75F6, 0x75ED, 0x75F5, 0x75FD, 0x7699, 0x76B5, 0x76DD, 0x7755,
+  0x775F, 0x7760, 0x7752, 0x7756, 0x775A, 0x7769, 0x7767, 0x7754,
+  0x7759, 0x776D, 0x77E0, 0x7887, 0x789A, 0x7894, 0x788F, 0x7884,
+  0x7895, 0x7885, 0x7886, 0x78A1, 0x7883, 0x7879, 0x7899, 0x7880,
+  0x7896, 0x787B, 0x797C, 0x7982, 0x797D, 0x7979, 0x7A11, 0x7A18,
+plane 39 
+at 0x00
+  0x7A19, 0x7A12, 0x7A17, 0x7A15, 0x7A22, 0x7A13, 0x7A1B, 0x7A10,
+  0x7AA3, 0x7AA2, 0x7A9E, 0x7AEB, 0x7B66, 0x7B64, 0x7B6D, 0x7B74,
+  0x7B69, 0x7B72, 0x7B65, 0x7B73, 0x7B71, 0x7B70, 0x7B61, 0x7B78,
+  0x7B76, 0x7B63, 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88, 0x7D86, 0x7D80,
+  0x7D8D, 0x7D7F, 0x7D85, 0x7D7A, 0x7D8E, 0x7D7B, 0x7D83, 0x7D7C,
+  0x7D8C, 0x7D94, 0x7D84, 0x7D7D, 0x7D92, 0x7F6D, 0x7F6B, 0x7F67,
+  0x7F68, 0x7F6C, 0x7FA6, 0x7FA5, 0x7FA7, 0x7FDB, 0x7FDC, 0x8021,
+  0x8164, 0x8160, 0x8177, 0x815C, 0x8169, 0x815B, 0x8162, 0x8172,
+  0x6721, 0x815E, 0x8176, 0x8167, 0x816F, 0x8144, 0x8161, 0x821D,
+  0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84F1, 0x843F, 0x8456,
+  0x8476, 0x8479, 0x848F, 0x848D, 0x8465, 0x8451, 0x8440, 0x8486,
+  0x8467, 0x8430, 0x844D, 0x847D, 0x845A, 0x8459, 0x8474, 0x8473,
+  0x845D, 0x8507, 0x845E, 0x8437, 0x843A, 0x8434, 0x847A, 0x8443,
+  0x8478, 0x8432, 0x8445, 0x8429, 0x83D9, 0x844B, 0x842F, 0x8442,
+  0x842D, 0x845F, 0x8470, 0x8439, 0x844E, 0x844C, 0x8452, 0x846F,
+  0x84C5, 0x848E, 0x843B, 0x8447, 0x8436, 0x8433, 0x8468, 0x847E,
+  0x8444, 0x842B, 0x8460, 0x8454, 0x846E, 0x8450, 0x870B, 0x8704,
+  0x86F7, 0x870C, 0x86FA, 0x86D6, 0x86F5, 0x874D, 0x86F8, 0x870E,
+  0x8709, 0x8701, 0x86F6, 0x870D, 0x8705, 0x88D6, 0x88CB, 0x88CD,
+  0x88CE, 0x88DE, 0x88DB, 0x88DA, 0x88CC, 0x88D0, 0x8985, 0x899B,
+  0x89DF, 0x89E5, 0x89E4, 0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6,
+  0x8A76, 0x8A86, 0x8A7F, 0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84,
+  0x8A75, 0x8A83, 0x8A81, 0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, 0x8C4A,
+  0x8C65, 0x8C64, 0x8C66, 0x8C86, 0x8C84, 0x8C85, 0x8CCC, 0x8D68,
+  0x8D69, 0x8D91, 0x8D8C, 0x8D8E, 0x8D8F, 0x8D8D, 0x8D93, 0x8D94,
+  0x8D90, 0x8D92, 0x8DF0, 0x8DE0, 0x8DEC, 0x8DF1, 0x8DEE, 0x8DD0,
+  0x8DE9, 0x8DE3, 0x8DE2, 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, 0x8F06,
+  0x8EFF, 0x8F01, 0x8F00, 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B,
+  0x9052, 0x903F, 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F,
+  0x9111, 0x9116, 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, 0x9248,
+  0x9252, 0x9230, 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283,
+  0x922E, 0x924A, 0x9246, 0x926D, 0x926C, 0x924F, 0x9260, 0x9267,
+plane 40 
+at 0x00
+  0x926F, 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250,
+  0x9272, 0x924E, 0x9253, 0x924C, 0x9256, 0x9232, 0x959F, 0x959C,
+  0x959E, 0x959B, 0x9692, 0x9693, 0x9691, 0x9697, 0x96CE, 0x96FA,
+  0x96FD, 0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980F,
+  0x980D, 0x980E, 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0,
+  0x99B5, 0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, 0x9E80,
+  0x9EFD, 0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA,
+  0x50DD, 0x50E4, 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0,
+  0x51D8, 0x5280, 0x5281, 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627,
+  0x5615, 0x560C, 0x5612, 0x55FC, 0x560F, 0x561C, 0x5601, 0x5613,
+  0x5602, 0x55FA, 0x561D, 0x5604, 0x55FF, 0x55F9, 0x5889, 0x587C,
+  0x5890, 0x5898, 0x5886, 0x5881, 0x587F, 0x5874, 0x588B, 0x587A,
+  0x5887, 0x5891, 0x588E, 0x5876, 0x5882, 0x5888, 0x587B, 0x5894,
+  0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA,
+  0x5ADA, 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC,
+  0x5ADE, 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0, 0x5BE3,
+  0x5C63, 0x5D82, 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, 0x5D81, 0x5D77,
+  0x5D8A, 0x5D89, 0x5D88, 0x5D7E, 0x5D7C, 0x5D8D, 0x5D79, 0x5D7F,
+  0x5E58, 0x5E59, 0x5E53, 0x5ED8, 0x5ED1, 0x5ED7, 0x5ECE, 0x5EDC,
+  0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44, 0x5F43, 0x5F6F, 0x5FB6,
+  0x612C, 0x6128, 0x6141, 0x615E, 0x6171, 0x6173, 0x6152, 0x6153,
+  0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A, 0x615B, 0x6165,
+  0x613B, 0x616A, 0x6161, 0x6156, 0x6229, 0x6227, 0x622B, 0x642B,
+  0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472, 0x6473, 0x647D,
+  0x6475, 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E, 0x645C, 0x644B,
+  0x6453, 0x6460, 0x6450, 0x647F, 0x643F, 0x646C, 0x646B, 0x6459,
+  0x6465, 0x6477, 0x6573, 0x65A0, 0x66A1, 0x66A0, 0x669F, 0x6705,
+  0x6704, 0x6722, 0x69B1, 0x69B6, 0x69C9, 0x69A0, 0x69CE, 0x6996,
+  0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999, 0x698E, 0x69A7, 0x698D,
+  0x69A9, 0x69BE, 0x69AF, 0x69BF, 0x69C4, 0x69BD, 0x69A4, 0x69D4,
+  0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3, 0x6993, 0x69AA, 0x69A1,
+  0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2, 0x69B5, 0x69A5, 0x69C6,
+plane 41 
+at 0x00
+  0x6B4A, 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BC3, 0x6BC4,
+  0x6BFE, 0x6ECE, 0x6EF5, 0x6EF1, 0x6F03, 0x6F25, 0x6EF8, 0x6F37,
+  0x6EFB, 0x6F2E, 0x6F09, 0x6F4E, 0x6F19, 0x6F1A, 0x6F27, 0x6F18,
+  0x6F3B, 0x6F12, 0x6EED, 0x6F0A, 0x6F36, 0x6F73, 0x6EF9, 0x6EEE,
+  0x6F2D, 0x6F40, 0x6F30, 0x6F3C, 0x6F35, 0x6EEB, 0x6F07, 0x6F0E,
+  0x6F43, 0x6F05, 0x6EFD, 0x6EF6, 0x6F39, 0x6F1C, 0x6EFC, 0x6F3A,
+  0x6F1F, 0x6F0D, 0x6F1E, 0x6F08, 0x6F21, 0x7187, 0x7190, 0x7189,
+  0x7180, 0x7185, 0x7182, 0x718F, 0x717B, 0x7186, 0x7181, 0x7197,
+  0x7244, 0x7253, 0x7297, 0x7295, 0x7293, 0x7343, 0x734D, 0x7351,
+  0x734C, 0x7462, 0x7473, 0x7471, 0x7475, 0x7472, 0x7467, 0x746E,
+  0x7500, 0x7502, 0x7503, 0x757D, 0x7590, 0x7616, 0x7608, 0x760C,
+  0x7615, 0x7611, 0x760A, 0x7614, 0x76B8, 0x7781, 0x777C, 0x7785,
+  0x7782, 0x776E, 0x7780, 0x776F, 0x777E, 0x7783, 0x78B2, 0x78AA,
+  0x78B4, 0x78AD, 0x78A8, 0x787E, 0x78AB, 0x789E, 0x78A5, 0x78A0,
+  0x78AC, 0x78A2, 0x78A4, 0x7998, 0x798A, 0x798B, 0x7996, 0x7995,
+  0x7994, 0x7993, 0x7997, 0x7988, 0x7992, 0x7990, 0x7A2B, 0x7A4A,
+  0x7A30, 0x7A2F, 0x7A28, 0x7A26, 0x7AA8, 0x7AAB, 0x7AAC, 0x7AEE,
+  0x7B88, 0x7B9C, 0x7B8A, 0x7B91, 0x7B90, 0x7B96, 0x7B8D, 0x7B8C,
+  0x7B9B, 0x7B8E, 0x7B85, 0x7B98, 0x5284, 0x7B99, 0x7BA4, 0x7B82,
+  0x7CBB, 0x7CBF, 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, 0x7DC2, 0x7DA3,
+  0x7DAA, 0x7DC1, 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, 0x7DC4, 0x7DC6,
+  0x7DCB, 0x7DCC, 0x7DAF, 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, 0x7DA6,
+  0x7DAE, 0x7DA9, 0x7DA1, 0x7DC9, 0x7F73, 0x7FE2, 0x7FE3, 0x7FE5,
+  0x7FDE, 0x8024, 0x805D, 0x805C, 0x8189, 0x8186, 0x8183, 0x8187,
+  0x818D, 0x818C, 0x818B, 0x8215, 0x8497, 0x84A4, 0x84A1, 0x849F,
+  0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE, 0x84AB, 0x84B9, 0x84B4,
+  0x84C1, 0x84CD, 0x84AA, 0x849A, 0x84B1, 0x84D0, 0x849D, 0x84A7,
+  0x84BB, 0x84A2, 0x8494, 0x84C7, 0x84CC, 0x849B, 0x84A9, 0x84AF,
+  0x84A8, 0x84D6, 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7, 0x84D4,
+  0x84D2, 0x84DB, 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728,
+  0x876B, 0x8740, 0x872E, 0x871E, 0x8721, 0x8719, 0x871B, 0x8743,
+  0x872C, 0x8741, 0x873E, 0x8746, 0x8720, 0x8732, 0x872A, 0x872D,
+plane 42 
+at 0x00
+  0x873C, 0x8712, 0x873A, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727,
+  0x8738, 0x8724, 0x871A, 0x8730, 0x8711, 0x88F7, 0x88E7, 0x88F1,
+  0x88F2, 0x88FA, 0x88FE, 0x88EE, 0x88FC, 0x88F6, 0x88FB, 0x88F0,
+  0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F, 0x899E, 0x89E9, 0x89EB,
+  0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96, 0x8C3D,
+  0x8C68, 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09, 0x8E02,
+  0x8DFF, 0x8E0D, 0x8DFD, 0x8E0A, 0x8E03, 0x8E07, 0x8E06, 0x8E05,
+  0x8DFE, 0x8E00, 0x8E04, 0x8F10, 0x8F11, 0x8F0E, 0x8F0D, 0x9123,
+  0x911C, 0x9120, 0x9122, 0x911F, 0x911D, 0x911A, 0x9124, 0x9121,
+  0x911B, 0x917A, 0x9172, 0x9179, 0x9173, 0x92A5, 0x92A4, 0x9276,
+  0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA, 0x928D, 0x92A6, 0x929A,
+  0x92AB, 0x9279, 0x9297, 0x927F, 0x92A3, 0x92EE, 0x928E, 0x9282,
+  0x9295, 0x92A2, 0x927D, 0x9288, 0x92A1, 0x928A, 0x9286, 0x928C,
+  0x9299, 0x92A7, 0x927E, 0x9287, 0x92A9, 0x929D, 0x928B, 0x922D,
+  0x969E, 0x96A1, 0x96FF, 0x9758, 0x977D, 0x977A, 0x977E, 0x9783,
+  0x9780, 0x9782, 0x977B, 0x9784, 0x9781, 0x977F, 0x97CE, 0x97CD,
+  0x9816, 0x98AD, 0x98AE, 0x9902, 0x9900, 0x9907, 0x999D, 0x999C,
+  0x99C3, 0x99B9, 0x99BB, 0x99BA, 0x99C2, 0x99BD, 0x99C7, 0x9AB1,
+  0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F, 0x9B60, 0x9B61, 0x9B5F, 0x9CF1,
+  0x9CF2, 0x9CF5, 0x9EA7, 0x50FF, 0x5103, 0x5130, 0x50F8, 0x5106,
+  0x5107, 0x50F6, 0x50FE, 0x510B, 0x510C, 0x50FD, 0x510A, 0x528B,
+  0x528C, 0x52F1, 0x52EF, 0x5648, 0x5642, 0x564C, 0x5635, 0x5641,
+  0x564A, 0x5649, 0x5646, 0x5658, 0x565A, 0x5640, 0x5633, 0x563D,
+  0x562C, 0x563E, 0x5638, 0x562A, 0x563A, 0x571A, 0x58AB, 0x589D,
+  0x58B1, 0x58A0, 0x58A3, 0x58AF, 0x58AC, 0x58A5, 0x58A1, 0x58FF,
+  0x5AFF, 0x5AF4, 0x5AFD, 0x5AF7, 0x5AF6, 0x5B03, 0x5AF8, 0x5B02,
+  0x5AF9, 0x5B01, 0x5B07, 0x5B05, 0x5B0F, 0x5C67, 0x5D99, 0x5D97,
+  0x5D9F, 0x5D92, 0x5DA2, 0x5D93, 0x5D95, 0x5DA0, 0x5D9C, 0x5DA1,
+  0x5D9A, 0x5D9E, 0x5E69, 0x5E5D, 0x5E60, 0x5E5C, 0x7DF3, 0x5EDB,
+  0x5EDE, 0x5EE1, 0x5F49, 0x5FB2, 0x618B, 0x6183, 0x6179, 0x61B1,
+  0x61B0, 0x61A2, 0x6189, 0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F,
+  0x6192, 0x61AA, 0x61A1, 0x618D, 0x6166, 0x61B3, 0x622D, 0x646E,
+plane 43 
+at 0x00
+  0x6470, 0x6496, 0x64A0, 0x6485, 0x6497, 0x649C, 0x648F, 0x648B,
+  0x648A, 0x648C, 0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576,
+  0x657A, 0x6579, 0x657B, 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9,
+  0x66B2, 0x66B7, 0x66AA, 0x66AF, 0x6A00, 0x6A06, 0x6A17, 0x69E5,
+  0x69F8, 0x6A15, 0x69F1, 0x69E4, 0x6A20, 0x69FF, 0x69EC, 0x69E2,
+  0x6A1B, 0x6A1D, 0x69FE, 0x6A27, 0x69F2, 0x69EE, 0x6A14, 0x69F7,
+  0x69E7, 0x6A40, 0x6A08, 0x69E6, 0x69FB, 0x6A0D, 0x69FC, 0x69EB,
+  0x6A09, 0x6A04, 0x6A18, 0x6A25, 0x6A0F, 0x69F6, 0x6A26, 0x6A07,
+  0x69F4, 0x6A16, 0x6B51, 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, 0x6C01,
+  0x6C00, 0x6BFF, 0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6,
+  0x6F92, 0x6F8D, 0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A,
+  0x6F96, 0x6F76, 0x6F6C, 0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50,
+  0x6F57, 0x6F94, 0x6F93, 0x6F5D, 0x6F00, 0x6F61, 0x6F6B, 0x6F7D,
+  0x6F67, 0x6F90, 0x6F53, 0x6F8B, 0x6F69, 0x6F7F, 0x6F95, 0x6F63,
+  0x6F77, 0x6F6A, 0x6F7B, 0x71B2, 0x71AF, 0x719B, 0x71B0, 0x71A0,
+  0x719A, 0x71A9, 0x71B5, 0x719D, 0x71A5, 0x719E, 0x71A4, 0x71A1,
+  0x71AA, 0x719C, 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358, 0x7352,
+  0x735E, 0x735F, 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, 0x7359,
+  0x7362, 0x7487, 0x7489, 0x748A, 0x7486, 0x7481, 0x747D, 0x7485,
+  0x7488, 0x747C, 0x7479, 0x7508, 0x7507, 0x757E, 0x7625, 0x761E,
+  0x7619, 0x761D, 0x761C, 0x7623, 0x761A, 0x7628, 0x761B, 0x769C,
+  0x769D, 0x769E, 0x769B, 0x778D, 0x778F, 0x7789, 0x7788, 0x78CD,
+  0x78BB, 0x78CF, 0x78CC, 0x78D1, 0x78CE, 0x78D4, 0x78C8, 0x78C3,
+  0x78C4, 0x78C9, 0x799A, 0x79A1, 0x79A0, 0x799C, 0x79A2, 0x799B,
+  0x6B76, 0x7A39, 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB, 0x7BBE,
+  0x7BAC, 0x7BCE, 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, 0x7CC8,
+  0x7CCC, 0x7CCB, 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7, 0x7DE1,
+  0x7E03, 0x7DFA, 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, 0x7DDF,
+  0x7F76, 0x7FAC, 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, 0x7FEC,
+  0x7FE6, 0x7FE8, 0x8064, 0x8067, 0x81A3, 0x819F, 0x819E, 0x8195,
+  0x81A2, 0x8199, 0x8197, 0x8216, 0x824F, 0x8253, 0x8252, 0x8250,
+  0x824E, 0x8251, 0x8524, 0x853B, 0x850F, 0x8500, 0x8529, 0x850E,
+plane 44 
+at 0x00
+  0x8509, 0x850D, 0x851F, 0x850A, 0x8527, 0x851C, 0x84FB, 0x852B,
+  0x84FA, 0x8508, 0x850C, 0x84F4, 0x852A, 0x84F2, 0x8515, 0x84F7,
+  0x84EB, 0x84F3, 0x84FC, 0x8512, 0x84EA, 0x84E9, 0x8516, 0x84FE,
+  0x8528, 0x851D, 0x852E, 0x8502, 0x84FD, 0x851E, 0x84F6, 0x8531,
+  0x8526, 0x84E7, 0x84E8, 0x84F0, 0x84EF, 0x84F9, 0x8518, 0x8520,
+  0x8530, 0x850B, 0x8519, 0x852F, 0x8662, 0x8756, 0x8763, 0x8764,
+  0x8777, 0x87E1, 0x8773, 0x8758, 0x8754, 0x875B, 0x8752, 0x8761,
+  0x875A, 0x8751, 0x875E, 0x876D, 0x876A, 0x8750, 0x874E, 0x875F,
+  0x875D, 0x876F, 0x876C, 0x877A, 0x876E, 0x875C, 0x8765, 0x874F,
+  0x877B, 0x8775, 0x8762, 0x8767, 0x8769, 0x885A, 0x8905, 0x890C,
+  0x8914, 0x890B, 0x8917, 0x8918, 0x8919, 0x8906, 0x8916, 0x8911,
+  0x890E, 0x8909, 0x89A2, 0x89A4, 0x89A3, 0x89ED, 0x89F0, 0x89EC,
+  0x8ACF, 0x8AC6, 0x8AB8, 0x8AD3, 0x8AD1, 0x8AD4, 0x8AD5, 0x8ABB,
+  0x8AD7, 0x8ABE, 0x8AC0, 0x8AC5, 0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD,
+  0x8AD9, 0x8C3E, 0x8C4D, 0x8C8F, 0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8,
+  0x8CDA, 0x8CDD, 0x8CE7, 0x8DA0, 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20,
+  0x8E23, 0x8E25, 0x8E24, 0x8E2E, 0x8E15, 0x8E1B, 0x8E16, 0x8E11,
+  0x8E19, 0x8E26, 0x8E27, 0x8E14, 0x8E12, 0x8E18, 0x8E13, 0x8E1C,
+  0x8E17, 0x8E1A, 0x8F2C, 0x8F24, 0x8F18, 0x8F1A, 0x8F20, 0x8F23,
+  0x8F16, 0x8F17, 0x9073, 0x9070, 0x906F, 0x9067, 0x906B, 0x912F,
+  0x912B, 0x9129, 0x912A, 0x9132, 0x9126, 0x912E, 0x9185, 0x9186,
+  0x918A, 0x9181, 0x9182, 0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4,
+  0x92C0, 0x92D9, 0x92B6, 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9,
+  0x92D7, 0x92DD, 0x92CC, 0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8,
+  0x92CE, 0x92E6, 0x92CD, 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7,
+  0x92D1, 0x92D3, 0x92B5, 0x92E1, 0x92C6, 0x92B4, 0x957C, 0x95AC,
+  0x95AB, 0x95AE, 0x95B0, 0x96A4, 0x96A2, 0x96D3, 0x9705, 0x9708,
+  0x9702, 0x975A, 0x978A, 0x978E, 0x9788, 0x97D0, 0x97CF, 0x981E,
+  0x981D, 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, 0x9827, 0x98B2,
+  0x9908, 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99DC,
+  0x99CD, 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8,
+  0x99CB, 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2,
+plane 45 
+at 0x00
+  0x9AF1, 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76,
+  0x9B75, 0x9B70, 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD,
+  0x9CFF, 0x9CF7, 0x9D07, 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, 0x9D05,
+  0x9D04, 0x9E83, 0x9ED3, 0x9F0F, 0x9F10, 0x511C, 0x5113, 0x5117,
+  0x511A, 0x5111, 0x51DE, 0x5334, 0x53E1, 0x5670, 0x5660, 0x566E,
+  0x5673, 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, 0x5677, 0x571C,
+  0x571B, 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, 0x58BC,
+  0x58C6, 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10,
+  0x5B16, 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1,
+  0x5DA9, 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2,
+  0x5DAD, 0x5DAF, 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, 0x5EE9,
+  0x5EE7, 0x5EE6, 0x5EE8, 0x5EE5, 0x5F4B, 0x5FBC, 0x619D, 0x61A8,
+  0x6196, 0x61C5, 0x61B4, 0x61C6, 0x61C1, 0x61CC, 0x61BA, 0x61BF,
+  0x61B8, 0x618C, 0x64D7, 0x64D6, 0x64D0, 0x64CF, 0x64C9, 0x64BD,
+  0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9, 0x6533, 0x657F, 0x657C,
+  0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB, 0x66CF, 0x66BD,
+  0x66BB, 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66, 0x6A49, 0x6A67,
+  0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76, 0x6A5B, 0x6A51,
+  0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A, 0x6A64, 0x6A50,
+  0x6A4F, 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, 0x6A5E, 0x6A56,
+  0x6A55, 0x6A4D, 0x6A4E, 0x6A46, 0x6B55, 0x6B54, 0x6B56, 0x6BA7,
+  0x6BAA, 0x6BAB, 0x6BC8, 0x6BC7, 0x6C04, 0x6C03, 0x6C06, 0x6FAD,
+  0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC, 0x6FCE, 0x6FC8, 0x6F5E, 0x6FC4,
+  0x6FBD, 0x6F9E, 0x6FCA, 0x6FA8, 0x7004, 0x6FA5, 0x6FAE, 0x6FBA,
+  0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8, 0x6FA2, 0x6FC9, 0x6FAB,
+  0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, 0x71C2, 0x71BF, 0x71B8,
+  0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4, 0x71CA, 0x71C7, 0x71CF,
+  0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA, 0x71DB, 0x729D, 0x729E,
+  0x7369, 0x7366, 0x7367, 0x736C, 0x7365, 0x736B, 0x736A, 0x747F,
+  0x749A, 0x74A0, 0x7494, 0x7492, 0x7495, 0x74A1, 0x750B, 0x7580,
+  0x762F, 0x762D, 0x7631, 0x763D, 0x7633, 0x763C, 0x7635, 0x7632,
+  0x7630, 0x76BB, 0x76E6, 0x779A, 0x779D, 0x77A1, 0x779C, 0x779B,
+plane 46 
+at 0x00
+  0x77A2, 0x77A3, 0x7795, 0x7799, 0x7797, 0x78DD, 0x78E9, 0x78E5,
+  0x78EA, 0x78DE, 0x78E3, 0x78DB, 0x78E1, 0x78E2, 0x78ED, 0x78DF,
+  0x78E0, 0x79A4, 0x7A44, 0x7A48, 0x7A47, 0x7AB6, 0x7AB8, 0x7AB5,
+  0x7AB1, 0x7AB7, 0x7BDE, 0x7BE3, 0x7BE7, 0x7BDD, 0x7BD5, 0x7BE5,
+  0x7BDA, 0x7BE8, 0x7BF9, 0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, 0x7BEB,
+  0x7BD8, 0x7BDF, 0x7CD2, 0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, 0x7E12,
+  0x7E21, 0x7E17, 0x7E0C, 0x7E1F, 0x7E20, 0x7E13, 0x7E0E, 0x7E1C,
+  0x7E15, 0x7E1A, 0x7E22, 0x7E0B, 0x7E0F, 0x7E16, 0x7E0D, 0x7E14,
+  0x7E25, 0x7E24, 0x7F43, 0x7F7B, 0x7F7C, 0x7F7A, 0x7FB1, 0x7FEF,
+  0x802A, 0x8029, 0x806C, 0x81B1, 0x81A6, 0x81AE, 0x81B9, 0x81B5,
+  0x81AB, 0x81B0, 0x81AC, 0x81B4, 0x81B2, 0x81B7, 0x81A7, 0x81F2,
+  0x8255, 0x8256, 0x8257, 0x8556, 0x8545, 0x856B, 0x854D, 0x8553,
+  0x8561, 0x8558, 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544,
+  0x8551, 0x8547, 0x8563, 0x853E, 0x855B, 0x8571, 0x854E, 0x856E,
+  0x8575, 0x8555, 0x8567, 0x8560, 0x858C, 0x8566, 0x855D, 0x8554,
+  0x8565, 0x856C, 0x8663, 0x8665, 0x8664, 0x879B, 0x878F, 0x8797,
+  0x8793, 0x8792, 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787,
+  0x87A3, 0x8785, 0x8790, 0x8791, 0x879D, 0x8784, 0x8794, 0x879C,
+  0x879A, 0x8789, 0x891E, 0x8926, 0x8930, 0x892D, 0x892E, 0x8927,
+  0x8931, 0x8922, 0x8929, 0x8923, 0x892F, 0x892C, 0x891F, 0x89F1,
+  0x8AE0, 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, 0x8ADD, 0x8B14, 0x8AE4,
+  0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1, 0x8AE8, 0x8AFF, 0x8AEF,
+  0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5, 0x8CEE, 0x8CF1, 0x8CF0,
+  0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33, 0x8E3E, 0x8E38,
+  0x8E40, 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30, 0x8E3F,
+  0x8EBD, 0x8F36, 0x8F2E, 0x8F35, 0x8F32, 0x8F39, 0x8F37, 0x8F34,
+  0x9076, 0x9079, 0x907B, 0x9086, 0x90FA, 0x9133, 0x9135, 0x9136,
+  0x9193, 0x9190, 0x9191, 0x918D, 0x918F, 0x9327, 0x931E, 0x9308,
+  0x931F, 0x9306, 0x930F, 0x937A, 0x9338, 0x933C, 0x931B, 0x9323,
+  0x9312, 0x9301, 0x9346, 0x932D, 0x930E, 0x930D, 0x92CB, 0x931D,
+  0x92FA, 0x9325, 0x9313, 0x92F9, 0x92F7, 0x9334, 0x9302, 0x9324,
+  0x92FF, 0x9329, 0x9339, 0x9335, 0x932A, 0x9314, 0x930C, 0x930B,
+plane 47 
+at 0x00
+  0x92FE, 0x9309, 0x9300, 0x92FB, 0x9316, 0x95BC, 0x95CD, 0x95BE,
+  0x95B9, 0x95BA, 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9, 0x96D4,
+  0x970B, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97F0, 0x97F8,
+  0x9835, 0x982F, 0x9832, 0x9924, 0x991F, 0x9927, 0x9929, 0x999E,
+  0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0, 0x99E3, 0x99EA, 0x99E9,
+  0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, 0x9AF6, 0x9AFA, 0x9AF9,
+  0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87, 0x9B7C, 0x9B7E, 0x9B7B,
+  0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A, 0x9B95, 0x9B7D, 0x9B88,
+  0x9D25, 0x9D17, 0x9D20, 0x9D1E, 0x9D14, 0x9D29, 0x9D1D, 0x9D18,
+  0x9D22, 0x9D10, 0x9D19, 0x9D1F, 0x9E88, 0x9E86, 0x9E87, 0x9EAE,
+  0x9EAD, 0x9ED5, 0x9ED6, 0x9EFA, 0x9F12, 0x9F3D, 0x5126, 0x5125,
+  0x5122, 0x5124, 0x5120, 0x5129, 0x52F4, 0x5693, 0x568C, 0x568D,
+  0x5686, 0x5684, 0x5683, 0x567E, 0x5682, 0x567F, 0x5681, 0x58D6,
+  0x58D4, 0x58CF, 0x58D2, 0x5B2D, 0x5B25, 0x5B32, 0x5B23, 0x5B2C,
+  0x5B27, 0x5B26, 0x5B2F, 0x5B2E, 0x5B7B, 0x5BF1, 0x5BF2, 0x5DB7,
+  0x5E6C, 0x5E6A, 0x5FBE, 0x5FBB, 0x61C3, 0x61B5, 0x61BC, 0x61E7,
+  0x61E0, 0x61E5, 0x61E4, 0x61E8, 0x61DE, 0x64EF, 0x64E9, 0x64E3,
+  0x64EB, 0x64E4, 0x64E8, 0x6581, 0x6580, 0x65B6, 0x65DA, 0x66D2,
+  0x6A8D, 0x6A96, 0x6A81, 0x6AA5, 0x6A89, 0x6A9F, 0x6A9B, 0x6AA1,
+  0x6A9E, 0x6A87, 0x6A93, 0x6A8E, 0x6A95, 0x6A83, 0x6AA8, 0x6AA4,
+  0x6A91, 0x6A7F, 0x6AA6, 0x6A9A, 0x6A85, 0x6A8C, 0x6A92, 0x6B5B,
+  0x6BAD, 0x6C09, 0x6FCC, 0x6FA9, 0x6FF4, 0x6FD4, 0x6FE3, 0x6FDC,
+  0x6FED, 0x6FE7, 0x6FE6, 0x6FDE, 0x6FF2, 0x6FDD, 0x6FE2, 0x6FE8,
+  0x71E1, 0x71F1, 0x71E8, 0x71F2, 0x71E4, 0x71F0, 0x71E2, 0x7373,
+  0x736E, 0x736F, 0x7497, 0x74B2, 0x74AB, 0x7490, 0x74AA, 0x74AD,
+  0x74B1, 0x74A5, 0x74AF, 0x7510, 0x7511, 0x7512, 0x750F, 0x7584,
+  0x7643, 0x7648, 0x7649, 0x7647, 0x76A4, 0x76E9, 0x77B5, 0x77AB,
+  0x77B2, 0x77B7, 0x77B6, 0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3,
+  0x78FD, 0x7902, 0x78FB, 0x78FC, 0x78F2, 0x7905, 0x78F9, 0x78FE,
+  0x7904, 0x79AB, 0x79A8, 0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54,
+  0x7A5A, 0x7ABE, 0x7AC0, 0x7AC1, 0x7C05, 0x7C0F, 0x7BF2, 0x7C00,
+  0x7BFF, 0x7BFB, 0x7C0E, 0x7BF4, 0x7C0B, 0x7BF3, 0x7C02, 0x7C09,
+plane 48 
+at 0x00
+  0x7C03, 0x7C01, 0x7BF8, 0x7BFD, 0x7C06, 0x7BF0, 0x7BF1, 0x7C10,
+  0x7C0A, 0x7CE8, 0x7E2D, 0x7E3C, 0x7E42, 0x7E33, 0x9848, 0x7E38,
+  0x7E2A, 0x7E49, 0x7E40, 0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B,
+  0x7E36, 0x7E44, 0x7E3A, 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4,
+  0x7FF2, 0x802C, 0x81BB, 0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7,
+  0x81BC, 0x81E9, 0x825B, 0x825A, 0x825C, 0x8583, 0x8580, 0x858F,
+  0x85A7, 0x8595, 0x85A0, 0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A,
+  0x859E, 0x8577, 0x857C, 0x8589, 0x85A1, 0x857A, 0x8578, 0x8557,
+  0x858E, 0x8596, 0x8586, 0x858D, 0x8599, 0x859D, 0x8581, 0x85A2,
+  0x8582, 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859F,
+  0x8668, 0x87BE, 0x87AA, 0x87AD, 0x87C5, 0x87B0, 0x87AC, 0x87B9,
+  0x87B5, 0x87BC, 0x87AE, 0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7,
+  0x87AF, 0x87C4, 0x87CA, 0x87B4, 0x87B6, 0x87BF, 0x87B8, 0x87BD,
+  0x87DE, 0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941, 0x8952,
+  0x8937, 0x8942, 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E,
+  0x8B18, 0x8B16, 0x8B11, 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, 0x8B12,
+  0x8B15, 0x8B07, 0x8B0D, 0x8B08, 0x8B06, 0x8B1C, 0x8B13, 0x8B1A,
+  0x8C4F, 0x8C70, 0x8C72, 0x8C71, 0x8C6F, 0x8C95, 0x8C94, 0x8CF9,
+  0x8D6F, 0x8E4E, 0x8E4D, 0x8E53, 0x8E50, 0x8E4C, 0x8E47, 0x8F43,
+  0x8F40, 0x9085, 0x907E, 0x9138, 0x919A, 0x91A2, 0x919B, 0x9199,
+  0x919F, 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF, 0x9364,
+  0x9356, 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349, 0x9350,
+  0x9351, 0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379, 0x9357,
+  0x9355, 0x9352, 0x934F, 0x9371, 0x9377, 0x937B, 0x9361, 0x935E,
+  0x9363, 0x9367, 0x9380, 0x934E, 0x9359, 0x95C7, 0x95C0, 0x95C9,
+  0x95C3, 0x95C5, 0x95B7, 0x96AE, 0x96B0, 0x96AC, 0x9720, 0x971F,
+  0x9718, 0x971D, 0x9719, 0x979A, 0x97A1, 0x979C, 0x979E, 0x979D,
+  0x97D5, 0x97D4, 0x97F1, 0x9841, 0x9844, 0x984A, 0x9849, 0x9845,
+  0x9843, 0x9925, 0x992B, 0x992C, 0x992A, 0x9933, 0x9932, 0x992F,
+  0x992D, 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1, 0x9A02, 0x99FA,
+  0x99F4, 0x99F7, 0x99F9, 0x99F8, 0x99F6, 0x99FB, 0x99FD, 0x99FE,
+  0x99FC, 0x9A03, 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01, 0x9AFC, 0x9B48,
+plane 49 
+at 0x00
+  0x9B9A, 0x9BA8, 0x9B9E, 0x9B9B, 0x9BA6, 0x9BA1, 0x9BA5, 0x9BA4,
+  0x9B86, 0x9BA2, 0x9BA0, 0x9BAF, 0x9D33, 0x9D41, 0x9D67, 0x9D36,
+  0x9D2E, 0x9D2F, 0x9D31, 0x9D38, 0x9D30, 0x9D45, 0x9D42, 0x9D43,
+  0x9D3E, 0x9D37, 0x9D40, 0x9D3D, 0x7FF5, 0x9D2D, 0x9E8A, 0x9E89,
+  0x9E8D, 0x9EB0, 0x9EC8, 0x9EDA, 0x9EFB, 0x9EFF, 0x9F24, 0x9F23,
+  0x9F22, 0x9F54, 0x9FA0, 0x5131, 0x512D, 0x512E, 0x5698, 0x569C,
+  0x5697, 0x569A, 0x569D, 0x5699, 0x5970, 0x5B3C, 0x5C69, 0x5C6A,
+  0x5DC0, 0x5E6D, 0x5E6E, 0x61D8, 0x61DF, 0x61ED, 0x61EE, 0x61F1,
+  0x61EA, 0x61F0, 0x61EB, 0x61D6, 0x61E9, 0x64FF, 0x6504, 0x64FD,
+  0x64F8, 0x6501, 0x6503, 0x64FC, 0x6594, 0x65DB, 0x66DA, 0x66DB,
+  0x66D8, 0x6AC5, 0x6AB9, 0x6ABD, 0x6AE1, 0x6AC6, 0x6ABA, 0x6AB6,
+  0x6AB7, 0x6AC7, 0x6AB4, 0x6AAD, 0x6B5E, 0x6BC9, 0x6C0B, 0x7007,
+  0x700C, 0x700D, 0x7001, 0x7005, 0x7014, 0x700E, 0x6FFF, 0x7000,
+  0x6FFB, 0x7026, 0x6FFC, 0x6FF7, 0x700A, 0x7201, 0x71FF, 0x71F9,
+  0x7203, 0x71FD, 0x7376, 0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE,
+  0x74B6, 0x74BB, 0x74C2, 0x7514, 0x7513, 0x765C, 0x7664, 0x7659,
+  0x7650, 0x7653, 0x7657, 0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2,
+  0x77BA, 0x78FF, 0x790C, 0x7913, 0x7914, 0x7909, 0x7910, 0x7912,
+  0x7911, 0x79AD, 0x79AC, 0x7A5F, 0x7C1C, 0x7C29, 0x7C19, 0x7C20,
+  0x7C1F, 0x7C2D, 0x7C1D, 0x7C26, 0x7C28, 0x7C22, 0x7C25, 0x7C30,
+  0x7E5C, 0x7E50, 0x7E56, 0x7E63, 0x7E58, 0x7E62, 0x7E5F, 0x7E51,
+  0x7E60, 0x7E57, 0x7E53, 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, 0x8075,
+  0x81D1, 0x81D2, 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0,
+  0x85C3, 0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF,
+  0x85CB, 0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, 0x8624,
+  0x85B8, 0x85B7, 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, 0x87DB,
+  0x87EB, 0x87EA, 0x87E5, 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC,
+  0x87D3, 0x87ED, 0x87D8, 0x87E3, 0x87A4, 0x87D7, 0x87D9, 0x8801,
+  0x87F4, 0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F, 0x894C, 0x8946,
+  0x8950, 0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, 0x8B30,
+  0x8B35, 0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37,
+  0x8B26, 0x8B36, 0x8B2E, 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42,
+plane 50 
+at 0x00
+  0x8C75, 0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04, 0x8D02, 0x8D00,
+  0x8E5C, 0x8E62, 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67,
+  0x8E5B, 0x8E5A, 0x8E61, 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47,
+  0x8F48, 0x8F4B, 0x9128, 0x913A, 0x913B, 0x913E, 0x91A8, 0x91A5,
+  0x91A7, 0x91AF, 0x91AA, 0x93B5, 0x938C, 0x9392, 0x93B7, 0x939B,
+  0x939D, 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E, 0x93A6, 0x9395,
+  0x9388, 0x9399, 0x939F, 0x938D, 0x93B1, 0x9391, 0x93B2, 0x93A4,
+  0x93A8, 0x93B4, 0x93A3, 0x93A5, 0x95D2, 0x95D3, 0x95D1, 0x96B3,
+  0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722,
+  0x9725, 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA, 0x97A2,
+  0x97A5, 0x97D7, 0x97D9, 0x97D6, 0x97D8, 0x97FA, 0x9850, 0x9851,
+  0x9852, 0x98B8, 0x9941, 0x993C, 0x993A, 0x9A0F, 0x9A0B, 0x9A09,
+  0x9A0D, 0x9A04, 0x9A11, 0x9A0A, 0x9A05, 0x9A07, 0x9A06, 0x9AC0,
+  0x9ADC, 0x9B08, 0x9B04, 0x9B05, 0x9B29, 0x9B35, 0x9B4A, 0x9B4C,
+  0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF, 0x9BC1, 0x9BB5, 0x9BB8,
+  0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C, 0x9D53, 0x9D4F,
+  0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C, 0x9D57, 0x9D52,
+  0x9D54, 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C, 0x9EDF, 0x9F01,
+  0x9F00, 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29, 0x9F28, 0x9F4C,
+  0x9F55, 0x5134, 0x5135, 0x5296, 0x52F7, 0x53B4, 0x56AB, 0x56AD,
+  0x56A6, 0x56A7, 0x56AA, 0x56AC, 0x58DA, 0x58DD, 0x58DB, 0x5912,
+  0x5B3D, 0x5B3E, 0x5B3F, 0x5DC3, 0x5E70, 0x5FBF, 0x61FB, 0x6507,
+  0x6510, 0x650D, 0x6509, 0x650C, 0x650E, 0x6584, 0x65DE, 0x65DD,
+  0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1, 0x6AD9, 0x6ACB, 0x6ADF,
+  0x6ADC, 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD, 0x6ADE, 0x6B60, 0x6BB0,
+  0x6C0C, 0x7019, 0x7027, 0x7020, 0x7016, 0x702B, 0x7021, 0x7022,
+  0x7023, 0x7029, 0x7017, 0x7024, 0x701C, 0x702A, 0x720C, 0x720A,
+  0x7207, 0x7202, 0x7205, 0x72A5, 0x72A6, 0x72A4, 0x72A3, 0x72A1,
+  0x74CB, 0x74C5, 0x74B7, 0x74C3, 0x7516, 0x7660, 0x77C9, 0x77CA,
+  0x77C4, 0x77F1, 0x791D, 0x791B, 0x7921, 0x791C, 0x7917, 0x791E,
+  0x79B0, 0x7A67, 0x7A68, 0x7C33, 0x7C3C, 0x7C39, 0x7C2C, 0x7C3B,
+  0x7CEC, 0x7CEA, 0x7E76, 0x7E75, 0x7E78, 0x7E70, 0x7E77, 0x7E6F,
+plane 51 
+at 0x00
+  0x7E7A, 0x7E72, 0x7E74, 0x7E68, 0x7F4B, 0x7F4A, 0x7F83, 0x7F86,
+  0x7FB7, 0x7FFD, 0x7FFE, 0x8078, 0x81D7, 0x81D5, 0x8264, 0x8261,
+  0x8263, 0x85EB, 0x85F1, 0x85ED, 0x85D9, 0x85E1, 0x85E8, 0x85DA,
+  0x85D7, 0x85EC, 0x85F2, 0x85F8, 0x85D8, 0x85DF, 0x85E3, 0x85DC,
+  0x85D1, 0x85F0, 0x85E6, 0x85EF, 0x85DE, 0x85E2, 0x8800, 0x87FA,
+  0x8803, 0x87F6, 0x87F7, 0x8809, 0x880C, 0x880B, 0x8806, 0x87FC,
+  0x8808, 0x87FF, 0x880A, 0x8802, 0x8962, 0x895A, 0x895B, 0x8957,
+  0x8961, 0x895C, 0x8958, 0x895D, 0x8959, 0x8988, 0x89B7, 0x89B6,
+  0x89F6, 0x8B50, 0x8B48, 0x8B4A, 0x8B40, 0x8B53, 0x8B56, 0x8B54,
+  0x8B4B, 0x8B55, 0x8B51, 0x8B42, 0x8B52, 0x8B57, 0x8C43, 0x8C77,
+  0x8C76, 0x8C9A, 0x8D06, 0x8D07, 0x8D09, 0x8DAC, 0x8DAA, 0x8DAD,
+  0x8DAB, 0x8E6D, 0x8E78, 0x8E73, 0x8E6A, 0x8E6F, 0x8E7B, 0x8EC2,
+  0x8F52, 0x8F51, 0x8F4F, 0x8F50, 0x8F53, 0x8FB4, 0x9140, 0x913F,
+  0x91B0, 0x91AD, 0x93DE, 0x93C7, 0x93CF, 0x93C2, 0x93DA, 0x93D0,
+  0x93F9, 0x93EC, 0x93CC, 0x93D9, 0x93A9, 0x93E6, 0x93CA, 0x93D4,
+  0x93EE, 0x93E3, 0x93D5, 0x93C4, 0x93CE, 0x93C0, 0x93D2, 0x93E7,
+  0x957D, 0x95DA, 0x95DB, 0x96E1, 0x9729, 0x972B, 0x972C, 0x9728,
+  0x9726, 0x97B3, 0x97B7, 0x97B6, 0x97DD, 0x97DE, 0x97DF, 0x985C,
+  0x9859, 0x985D, 0x9857, 0x98BF, 0x98BD, 0x98BB, 0x98BE, 0x9948,
+  0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A, 0x9A15, 0x9A25, 0x9A1D,
+  0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27, 0x9A23, 0x9A1E, 0x9A1C,
+  0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37, 0x9BEA,
+  0x9BEB, 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, 0x9BD4,
+  0x9BD7, 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5, 0x9BE1, 0x9BDA,
+  0x9D77, 0x9D81, 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, 0x9D78,
+  0x9D86, 0x9D8B, 0x9D8C, 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, 0x9D70,
+  0x9D69, 0x9D85, 0x9D73, 0x9D7B, 0x9D82, 0x9D6F, 0x9D79, 0x9D7F,
+  0x9D87, 0x9D68, 0x9E94, 0x9E91, 0x9EC0, 0x9EFC, 0x9F2D, 0x9F40,
+  0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58, 0x5337, 0x56B2, 0x56B5,
+  0x56B3, 0x58E3, 0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF, 0x5FC0,
+  0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65DF, 0x66E8,
+  0x66E3, 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9, 0x6AF1,
+plane 52 
+at 0x00
+  0x6AEE, 0x6AEF, 0x703C, 0x7035, 0x702F, 0x7037, 0x7034, 0x7031,
+  0x7042, 0x7038, 0x703F, 0x703A, 0x7039, 0x7040, 0x703B, 0x7033,
+  0x7041, 0x7213, 0x7214, 0x72A8, 0x737D, 0x737C, 0x74BA, 0x76AB,
+  0x76AA, 0x76BE, 0x76ED, 0x77CC, 0x77CE, 0x77CF, 0x77CD, 0x77F2,
+  0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79B2, 0x7A6E,
+  0x7A6C, 0x7A6D, 0x7AF7, 0x7C49, 0x7C48, 0x7C4A, 0x7C47, 0x7C45,
+  0x7CEE, 0x7E7B, 0x7E7E, 0x7E81, 0x7E80, 0x7FBA, 0x7FFF, 0x8079,
+  0x81DB, 0x81D9, 0x820B, 0x8268, 0x8269, 0x8622, 0x85FF, 0x8601,
+  0x85FE, 0x861B, 0x8600, 0x85F6, 0x8604, 0x8609, 0x8605, 0x860C,
+  0x85FD, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816, 0x8963,
+  0x8966, 0x89B9, 0x89F7, 0x8B60, 0x8B6A, 0x8B5D, 0x8B68, 0x8B63,
+  0x8B65, 0x8B67, 0x8B6D, 0x8DAE, 0x8E86, 0x8E88, 0x8E84, 0x8F59,
+  0x8F56, 0x8F57, 0x8F55, 0x8F58, 0x8F5A, 0x908D, 0x9143, 0x9141,
+  0x91B7, 0x91B5, 0x91B2, 0x91B3, 0x940B, 0x9413, 0x93FB, 0x9420,
+  0x940F, 0x9414, 0x93FE, 0x9415, 0x9410, 0x9428, 0x9419, 0x940D,
+  0x93F5, 0x9400, 0x93F7, 0x9407, 0x940E, 0x9416, 0x9412, 0x93FA,
+  0x9409, 0x93F8, 0x940A, 0x93FF, 0x93FC, 0x940C, 0x93F6, 0x9411,
+  0x9406, 0x95DE, 0x95E0, 0x95DF, 0x972E, 0x972F, 0x97B9, 0x97BB,
+  0x97FD, 0x97FE, 0x9860, 0x9862, 0x9863, 0x985F, 0x98C1, 0x98C2,
+  0x9950, 0x994E, 0x9959, 0x994C, 0x994B, 0x9953, 0x9A32, 0x9A34,
+  0x9A31, 0x9A2C, 0x9A2A, 0x9A36, 0x9A29, 0x9A2E, 0x9A38, 0x9A2D,
+  0x9AC7, 0x9ACA, 0x9AC6, 0x9B10, 0x9B12, 0x9B11, 0x9C0B, 0x9C08,
+  0x9BF7, 0x9C05, 0x9C12, 0x9BF8, 0x9C40, 0x9C07, 0x9C0E, 0x9C06,
+  0x9C17, 0x9C14, 0x9C09, 0x9D9F, 0x9D99, 0x9DA4, 0x9D9D, 0x9D92,
+  0x9D98, 0x9D90, 0x9D9B, 0x9DA0, 0x9D94, 0x9D9C, 0x9DAA, 0x9D97,
+  0x9DA1, 0x9D9A, 0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, 0x9DA9,
+  0x9D96, 0x9DA6, 0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4,
+  0x9EE7, 0x9EE6, 0x9F30, 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D,
+  0x9F59, 0x9F91, 0x513A, 0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD,
+  0x56BE, 0x5B48, 0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B,
+  0x6B02, 0x6AFC, 0x6B03, 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A,
+  0x7048, 0x7049, 0x7045, 0x7046, 0x721D, 0x721A, 0x7219, 0x737E,
+plane 53 
+at 0x00
+  0x7517, 0x766A, 0x77D0, 0x792D, 0x7931, 0x792F, 0x7C54, 0x7C53,
+  0x7CF2, 0x7E8A, 0x7E87, 0x7E88, 0x7E8B, 0x7E86, 0x7E8D, 0x7F4D,
+  0x7FBB, 0x8030, 0x81DD, 0x8618, 0x862A, 0x8626, 0x861F, 0x8623,
+  0x861C, 0x8619, 0x8627, 0x862E, 0x8621, 0x8620, 0x8629, 0x861E,
+  0x8625, 0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, 0x882B,
+  0x884A, 0x896D, 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78,
+  0x8B45, 0x8B7A, 0x8B7B, 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C,
+  0x8F5E, 0x8F5B, 0x8F5D, 0x9146, 0x9144, 0x9145, 0x91B9, 0x943F,
+  0x943B, 0x9436, 0x9429, 0x943D, 0x943C, 0x9430, 0x9439, 0x942A,
+  0x9437, 0x942C, 0x9440, 0x9431, 0x95E5, 0x95E4, 0x95E3, 0x9735,
+  0x973A, 0x97BF, 0x97E1, 0x9864, 0x98C9, 0x98C6, 0x98C0, 0x9958,
+  0x9956, 0x9A39, 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A,
+  0x9A3F, 0x9ACD, 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, 0x9B52,
+  0x9C2B, 0x9C1D, 0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29, 0x9C24,
+  0x9C21, 0x9DB7, 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA, 0x9DCF,
+  0x9DBE, 0x9DC5, 0x9DC3, 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9, 0x9DBA,
+  0x9DAC, 0x9DC8, 0x9DB1, 0x9DAD, 0x9DCC, 0x9DB3, 0x9DCD, 0x9DB2,
+  0x9E7A, 0x9E9C, 0x9EEB, 0x9EEE, 0x9EED, 0x9F1B, 0x9F18, 0x9F1A,
+  0x9F31, 0x9F4E, 0x9F65, 0x9F64, 0x9F92, 0x4EB9, 0x56C6, 0x56C5,
+  0x56CB, 0x5971, 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2, 0x6521,
+  0x6520, 0x6526, 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, 0x7055,
+  0x7056, 0x7057, 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F, 0x74D8,
+  0x74D5, 0x74D9, 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4, 0x7A70,
+  0x7A71, 0x7C57, 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A, 0x7CF4, 0x7CF1,
+  0x7E91, 0x7F4F, 0x7F87, 0x81DE, 0x826B, 0x8634, 0x8635, 0x8633,
+  0x862C, 0x8632, 0x8636, 0x882C, 0x8828, 0x8826, 0x882A, 0x8825,
+  0x8971, 0x89BF, 0x89BE, 0x89FB, 0x8B7E, 0x8B84, 0x8B82, 0x8B86,
+  0x8B85, 0x8B7F, 0x8D15, 0x8E95, 0x8E94, 0x8E9A, 0x8E92, 0x8E90,
+  0x8E96, 0x8E97, 0x8F60, 0x8F62, 0x9147, 0x944C, 0x9450, 0x944A,
+  0x944B, 0x944F, 0x9447, 0x9445, 0x9448, 0x9449, 0x9446, 0x973F,
+  0x97E3, 0x986A, 0x9869, 0x98CB, 0x9954, 0x995B, 0x9A4E, 0x9A53,
+  0x9A54, 0x9A4C, 0x9A4F, 0x9A48, 0x9A4A, 0x9A49, 0x9A52, 0x9A50,
+plane 54 
+at 0x00
+  0x9AD0, 0x9B19, 0x9B2B, 0x9B3B, 0x9B56, 0x9B55, 0x9C46, 0x9C48,
+  0x9C3F, 0x9C44, 0x9C39, 0x9C33, 0x9C41, 0x9C3C, 0x9C37, 0x9C34,
+  0x9C32, 0x9C3D, 0x9C36, 0x9DDB, 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB,
+  0x9DD0, 0x9DDC, 0x9DD1, 0x9DDF, 0x9DE9, 0x9DD9, 0x9DD8, 0x9DD6,
+  0x9DF5, 0x9DD5, 0x9DDD, 0x9EB6, 0x9EF0, 0x9F35, 0x9F33, 0x9F32,
+  0x9F42, 0x9F6B, 0x9F95, 0x9FA2, 0x513D, 0x5299, 0x58E8, 0x58E7,
+  0x5972, 0x5B4D, 0x5DD8, 0x882F, 0x5F4F, 0x6201, 0x6203, 0x6204,
+  0x6529, 0x6525, 0x6596, 0x66EB, 0x6B11, 0x6B12, 0x6B0F, 0x6BCA,
+  0x705B, 0x705A, 0x7222, 0x7382, 0x7381, 0x7383, 0x7670, 0x77D4,
+  0x7C67, 0x7C66, 0x7E95, 0x826C, 0x863A, 0x8640, 0x8639, 0x863C,
+  0x8631, 0x863B, 0x863E, 0x8830, 0x8832, 0x882E, 0x8833, 0x8976,
+  0x8974, 0x8973, 0x89FE, 0x8B8C, 0x8B8E, 0x8B8B, 0x8B88, 0x8C45,
+  0x8D19, 0x8E98, 0x8F64, 0x8F63, 0x91BC, 0x9462, 0x9455, 0x945D,
+  0x9457, 0x945E, 0x97C4, 0x97C5, 0x9800, 0x9A56, 0x9A59, 0x9B1E,
+  0x9B1F, 0x9B20, 0x9C52, 0x9C58, 0x9C50, 0x9C4A, 0x9C4D, 0x9C4B,
+  0x9C55, 0x9C59, 0x9C4C, 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, 0x9DE3,
+  0x9DEB, 0x9DF8, 0x9DE4, 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2,
+  0x9DF0, 0x9DE2, 0x9DEC, 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2,
+  0x9ED0, 0x9EF2, 0x9EF3, 0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36,
+  0x9F43, 0x9F4F, 0x9F71, 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, 0x56CD,
+  0x5B4E, 0x5C6D, 0x652D, 0x66ED, 0x66EE, 0x6B13, 0x705F, 0x7061,
+  0x705D, 0x7060, 0x7223, 0x74DB, 0x74E5, 0x77D5, 0x7938, 0x79B7,
+  0x79B6, 0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643, 0x8838, 0x8837,
+  0x8835, 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, 0x8E9D,
+  0x91BE, 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746,
+  0x9743, 0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63,
+  0x9C67, 0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07,
+  0x9E03, 0x9E06, 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD,
+  0x9E04, 0x9EA0, 0x9F1E, 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4,
+  0x652E, 0x65B8, 0x6B18, 0x6B19, 0x6B17, 0x6B1A, 0x7062, 0x7226,
+  0x72AA, 0x77D8, 0x77D9, 0x7939, 0x7C69, 0x7C6B, 0x7CF6, 0x7E9A,
+  0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, 0x8647, 0x8648,
+plane 55 
+at 0x00
+  0x8979, 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, 0x8EA5,
+  0x8EA4, 0x8EA3, 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749,
+  0x9872, 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10,
+  0x9E0F, 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78,
+  0x9F7B, 0x9F7A, 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2,
+  0x8EA6, 0x91C3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9A60, 0x9C74,
+  0x9C73, 0x9C71, 0x9C75, 0x9E14, 0x9E13, 0x9EF6, 0x9F0A, 0x9FA4,
+  0x7068, 0x7065, 0x7CF7, 0x866A, 0x883E, 0x883D, 0x883F, 0x8B9E,
+  0x8C9C, 0x8EA9, 0x8EC9, 0x974B, 0x9873, 0x9874, 0x98CC, 0x9961,
+  0x99AB, 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15, 0x9E17, 0x9F48,
+  0x6207, 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482, 0x9480, 0x9481,
+  0x9A69, 0x9A68, 0x9B2E, 0x9E19, 0x7229, 0x864B, 0x8B9F, 0x9483,
+  0x9C79, 0x9EB7, 0x7675, 0x9A6B, 0x9C7A, 0x9E1D, 0x7069, 0x706A,
+  0x9EA4, 0x9F7E, 0x9F49, 0x9F98, 0x7881, 0x92B9, 0x88CF, 0x58BB,
+  0x6052, 0x7CA7, 0x5AFA, 0x2554, 0x2566, 0x2557, 0x2560, 0x256C,
+  0x2563, 0x255A, 0x2569, 0x255D, 0x2552, 0x2564, 0x2555, 0x255E,
+  0x256A, 0x2561, 0x2558, 0x2567, 0x255B, 0x2553, 0x2565, 0x2556,
+  0x255F, 0x256B, 0x2562, 0x2559, 0x2568, 0x255C, 0x2551, 0x2550,
+  0x256D, 0x256E, 0x2570, 0x256F, 0x2593,      0,      0,      0,
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/cugb.map
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/cugb.map	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/maps/cugb.map	(revision 2000)
@@ -0,0 +1,1181 @@
+#
+# For  Unicode GB 2312-80 Chinese font to create compact 
+# CJK fonts Type1 fonts. 
+#
+plane 01 
+at 0x00
+  0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, 0x3003,
+  0x3005, 0x2014, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019, 0x201C,
+  0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C,
+  0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, 0x3011, 0x00B1,
+  0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, 0x222A,
+  0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 0x2312,
+  0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 0x221D,
+  0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 0x2234,
+  0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 0x00A4,
+  0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, 0x25CB,
+  0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2,
+  0x203B, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0, 0x2488, 0x2489,
+  0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F, 0x2490, 0x2491,
+  0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, 0x2499,
+  0x249A, 0x249B, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479,
+  0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F, 0x2480, 0x2481,
+  0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2460, 0x2461,
+  0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
+       0,      0, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225,
+  0x3226, 0x3227, 0x3228, 0x3229,      0,      0, 0x2160, 0x2161,
+  0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169,
+  0x216A, 0x216B,      0,      0, 0xFF01, 0xFF02, 0xFF03, 0xFFE5,
+  0xFF05, 0xFF06, 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C,
+  0xFF0D, 0xFF0E, 0xFF0F, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14,
+  0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C,
+  0xFF1D, 0xFF1E, 0xFF1F, 0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24,
+  0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C,
+  0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34,
+  0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C,
+  0xFF3D, 0xFF3E, 0xFF3F, 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44,
+plane 02 
+at 0x00
+  0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C,
+  0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54,
+  0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C,
+  0xFF5D, 0xFFE3, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
+  0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E,
+  0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
+  0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E,
+  0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066,
+  0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E,
+  0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
+  0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E,
+  0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086,
+  0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E,
+  0x308F, 0x3090, 0x3091, 0x3092, 0x3093,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+  0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8,
+  0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0,
+  0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8,
+  0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0,
+  0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8,
+  0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0,
+  0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8,
+  0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0,
+  0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8,
+  0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0,
+  0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6,      0,      0,
+       0,      0,      0,      0,      0,      0, 0x0391, 0x0392,
+  0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A,
+  0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3,
+  0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9,      0,      0,
+       0,      0,      0,      0,      0,      0, 0x03B1, 0x03B2,
+  0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA,
+plane 03 
+at 0x00
+  0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3,
+  0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0, 0x0410, 0x0411, 0x0412, 0x0413,
+  0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A,
+  0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422,
+  0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A,
+  0x042B, 0x042C, 0x042D, 0x042E, 0x042F,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0, 0x0430, 0x0431, 0x0432, 0x0433,
+  0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A,
+  0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442,
+  0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A,
+  0x044B, 0x044C, 0x044D, 0x044E, 0x044F,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9,
+  0x011B, 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3,
+  0x01D2, 0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8,
+  0x01DA, 0x01DC, 0x00FC, 0x00EA,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0, 0x3105, 0x3106,
+  0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E,
+  0x310F, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116,
+  0x3117, 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E,
+  0x311F, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126,
+  0x3127, 0x3128, 0x3129,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504,
+  0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, 0x250C,
+plane 04 
+at 0x00
+  0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514,
+  0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B, 0x251C,
+  0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524,
+  0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C,
+  0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
+  0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C,
+  0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544,
+  0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 05 
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 06 
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509,
+  0x54C0, 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231,
+  0x9698, 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8,
+  0x80FA, 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC,
+  0x7FF1, 0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C,
+  0x6252, 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4,
+  0x8DCB, 0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238,
+  0x767D, 0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17,
+  0x6591, 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248,
+  0x626E, 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6,
+  0x5E2E, 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C,
+  0x9551, 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265,
+  0x8584, 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1, 0x62A5,
+  0x66B4, 0x8C79, 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2, 0x5351,
+  0x5317, 0x8F88, 0x80CC, 0x8D1D, 0x94A1, 0x500D, 0x72C8, 0x5907,
+  0x60EB, 0x7119, 0x88AB, 0x5954, 0x82EF, 0x672C, 0x7B28, 0x5D29,
+plane 07 
+at 0x00
+  0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, 0x903C, 0x9F3B, 0x6BD4,
+  0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, 0x6BD5, 0x6BD9,
+  0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A, 0x5FC5,
+  0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9, 0x7F16,
+  0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9, 0x8FAB,
+  0x904D, 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B, 0x522B,
+  0x762A, 0x5F6C, 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, 0x5175,
+  0x51B0, 0x67C4, 0x4E19, 0x79C9, 0x997C, 0x70B3, 0x75C5, 0x5E76,
+  0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5, 0x6CE2, 0x535A, 0x52C3,
+  0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, 0x8236, 0x8116, 0x818A,
+  0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 0x54FA, 0x8865, 0x57E0,
+  0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 0x6016, 0x64E6, 0x731C,
+  0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, 0x8E29, 0x91C7, 0x5F69,
+  0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, 0x6B8B, 0x60ED, 0x60E8,
+  0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7, 0x85CF, 0x64CD, 0x7CD9,
+  0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56, 0x4FA7, 0x518C, 0x6D4B,
+  0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C, 0x8336, 0x67E5, 0x78B4,
+  0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7, 0x62C6, 0x67F4, 0x8C7A,
+  0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, 0x7F20, 0x94F2, 0x4EA7,
+  0x9610, 0x98A4, 0x660C, 0x7316, 0x573A, 0x5C1D, 0x5E38, 0x957F,
+  0x507F, 0x80A0, 0x5382, 0x655E, 0x7545, 0x5531, 0x5021, 0x8D85,
+  0x6284, 0x949E, 0x671D, 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092,
+  0x8F66, 0x626F, 0x64A4, 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3,
+  0x8FB0, 0x5C18, 0x6668, 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C,
+  0x6491, 0x79F0, 0x57CE, 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B,
+  0x60E9, 0x6F84, 0x8BDA, 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403,
+  0x75F4, 0x6301, 0x5319, 0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B,
+  0x9F7F, 0x4F88, 0x5C3A, 0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145,
+  0x51B2, 0x866B, 0x5D07, 0x5BA0, 0x62BD, 0x916C, 0x7574, 0x8E0C,
+  0x7A20, 0x6101, 0x7B79, 0x4EC7, 0x7EF8, 0x7785, 0x4E11, 0x81ED,
+  0x521D, 0x51FA, 0x6A71, 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1,
+  0x9664, 0x695A, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904,
+plane 08 
+at 0x00
+  0x63E3, 0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32,
+  0x75AE, 0x7A97, 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A,
+  0x6376, 0x9524, 0x5782, 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3,
+  0x7EAF, 0x8822, 0x6233, 0x7EF0, 0x75B5, 0x8328, 0x78C1, 0x96CC,
+  0x8F9E, 0x6148, 0x74F7, 0x8BCD, 0x6B64, 0x523A, 0x8D50, 0x6B21,
+  0x806A, 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, 0x51D1, 0x7C97,
+  0x918B, 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, 0x5D14,
+  0x50AC, 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58,
+  0x5BF8, 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D,
+  0x8FBE, 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3,
+  0x6234, 0x5E26, 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E,
+  0x6020, 0x803D, 0x62C5, 0x4E39, 0x5355, 0x90F8, 0x63B8, 0x80C6,
+  0x65E6, 0x6C2E, 0x4F46, 0x60EE, 0x6DE1, 0x8BDE, 0x5F39, 0x86CB,
+  0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, 0x5200, 0x6363, 0x8E48,
+  0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, 0x60BC, 0x9053,
+  0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B, 0x7B49,
+  0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, 0x654C,
+  0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, 0x5730,
+  0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0, 0x6382,
+  0x6EC7, 0x7898, 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535, 0x4F43,
+  0x7538, 0x5E97, 0x60E6, 0x5960, 0x6DC0, 0x6BBF, 0x7889, 0x53FC,
+  0x96D5, 0x51CB, 0x5201, 0x6389, 0x540A, 0x9493, 0x8C03, 0x8DCC,
+  0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, 0x53E0, 0x4E01, 0x76EF,
+  0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 0x5B9A, 0x8BA2, 0x4E22,
+  0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 0x680B, 0x4F97, 0x606B,
+  0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 0x9661, 0x8C46, 0x9017,
+  0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, 0x72EC, 0x8BFB, 0x5835,
+  0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A, 0x5EA6, 0x6E21, 0x5992,
+  0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD, 0x7F0E, 0x5806, 0x5151,
+  0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72, 0x6566, 0x987F, 0x56E4,
+  0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6, 0x591A, 0x593A, 0x579B,
+  0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, 0x60F0, 0x5815, 0x86FE,
+plane 09 
+at 0x00
+  0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 0x5A25, 0x6076, 0x5384,
+  0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 0x800C, 0x513F, 0x8033,
+  0x5C14, 0x9975, 0x6D31, 0x4E8C, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F,
+  0x4F10, 0x4E4F, 0x9600, 0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A,
+  0x7FFB, 0x6A0A, 0x77FE, 0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD,
+  0x8FD4, 0x8303, 0x8D29, 0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3,
+  0x65B9, 0x80AA, 0x623F, 0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA,
+  0x653E, 0x83F2, 0x975E, 0x5561, 0x98DE, 0x80A5, 0x532A, 0x8BFD,
+  0x5420, 0x80BA, 0x5E9F, 0x6CB8, 0x8D39, 0x82AC, 0x915A, 0x5429,
+  0x6C1B, 0x5206, 0x7EB7, 0x575F, 0x711A, 0x6C7E, 0x7C89, 0x594B,
+  0x4EFD, 0x5FFF, 0x6124, 0x7CAA, 0x4E30, 0x5C01, 0x67AB, 0x8702,
+  0x5CF0, 0x950B, 0x98CE, 0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D,
+  0x8BBD, 0x5949, 0x51E4, 0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4,
+  0x5B75, 0x6276, 0x62C2, 0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F,
+  0x4FD8, 0x670D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B,
+  0x629A, 0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C,
+  0x8150, 0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, 0x5085, 0x4ED8,
+  0x961C, 0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, 0x9644, 0x5987,
+  0x7F1A, 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, 0x6982, 0x9499,
+  0x76D6, 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF, 0x809D,
+  0x8D76, 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2,
+  0x7F38, 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B,
+  0x9AD8, 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A,
+  0x54E5, 0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272,
+  0x9769, 0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A,
+  0x5404, 0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, 0x5E9A, 0x7FB9,
+  0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D, 0x9F9A,
+  0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E, 0x62F1,
+  0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, 0x57A2,
+  0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, 0x4F30,
+  0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, 0x8C37,
+  0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, 0x5250,
+plane 10 
+at 0x00
+  0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, 0x5173,
+  0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF, 0x704C,
+  0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D, 0x7845,
+  0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678, 0x6842,
+  0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD, 0x9505,
+  0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8, 0x9AB8, 0x5B69,
+  0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, 0x9163, 0x61A8, 0x90AF,
+  0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, 0x558A, 0x7F55, 0x7FF0,
+  0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D, 0x710A, 0x6C57, 0x6C49,
+  0x592F, 0x676D, 0x822A, 0x58D5, 0x568E, 0x8C6A, 0x6BEB, 0x90DD,
+  0x597D, 0x8017, 0x53F7, 0x6D69, 0x5475, 0x559D, 0x8377, 0x83CF,
+  0x6838, 0x79BE, 0x548C, 0x4F55, 0x5408, 0x76D2, 0x8C89, 0x9602,
+  0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64, 0x8D3A, 0x563F, 0x9ED1,
+  0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, 0x4EA8, 0x6A2A, 0x8861,
+  0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, 0x9E3F, 0x6D2A, 0x5B8F,
+  0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, 0x543C, 0x539A, 0x5019,
+  0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, 0x58F6, 0x846B, 0x80E1,
+  0x8774, 0x72D0, 0x7CCA, 0x6E56, 0x5F27, 0x864E, 0x552C, 0x62A4,
+  0x4E92, 0x6CAA, 0x6237, 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1,
+  0x753B, 0x5212, 0x5316, 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE,
+  0x574F, 0x6B22, 0x73AF, 0x6853, 0x8FD8, 0x7F13, 0x6362, 0x60A3,
+  0x5524, 0x75EA, 0x8C62, 0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352,
+  0x614C, 0x9EC4, 0x78FA, 0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6,
+  0x714C, 0x6643, 0x5E4C, 0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89,
+  0x5FBD, 0x6062, 0x86D4, 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349,
+  0x60E0, 0x6666, 0x8D3F, 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3,
+  0x8BF2, 0x7ED8, 0x8364, 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7,
+  0x8C41, 0x6D3B, 0x4F19, 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D,
+  0x8D27, 0x7978, 0x51FB, 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D,
+  0x79EF, 0x7B95, 0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21,
+  0x59EC, 0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D,
+  0x96C6, 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, 0x5AC9, 0x7EA7,
+plane 11 
+at 0x00
+  0x6324, 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, 0x5B63,
+  0x4F0E, 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1,
+  0x8BB0, 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609,
+  0x67B7, 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E,
+  0x7532, 0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1,
+  0x6B7C, 0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C,
+  0x80A9, 0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1,
+  0x7877, 0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350,
+  0x69DB, 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, 0x7BAD, 0x4EF6,
+  0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, 0x5EFA,
+  0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, 0x6868,
+  0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, 0x7901,
+  0x7126, 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, 0x56BC,
+  0x6405, 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, 0x997A,
+  0x7F34, 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, 0x8F83, 0x53EB,
+  0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, 0x9636, 0x622A,
+  0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED, 0x6D01,
+  0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C, 0x501F,
+  0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, 0x91D1,
+  0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, 0x8FDB,
+  0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78, 0x5C3D, 0x52B2,
+  0x8346, 0x5162, 0x830E, 0x775B, 0x6676, 0x9CB8, 0x4EAC, 0x60CA,
+  0x7CBE, 0x7CB3, 0x7ECF, 0x4E95, 0x8B66, 0x666F, 0x9888, 0x9759,
+  0x5883, 0x656C, 0x955C, 0x5F84, 0x75C9, 0x9756, 0x7ADF, 0x7ADE,
+  0x51C0, 0x70AF, 0x7A98, 0x63EA, 0x7A76, 0x7EA0, 0x7396, 0x97ED,
+  0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9, 0x6551, 0x65E7, 0x81FC,
+  0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, 0x62D8, 0x72D9, 0x75BD,
+  0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480, 0x77E9, 0x4E3E, 0x6CAE,
+  0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177, 0x8DDD, 0x8E1E, 0x952F,
+  0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, 0x6350, 0x9E43, 0x5A1F,
+  0x5026, 0x7737, 0x5377, 0x7EE2, 0x6485, 0x652B, 0x6289, 0x6398,
+  0x5014, 0x7235, 0x89C9, 0x51B3, 0x8BC0, 0x7EDD, 0x5747, 0x83CC,
+plane 12 
+at 0x00
+  0x94A7, 0x519B, 0x541B, 0x5CFB, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1,
+  0x9A8F, 0x5580, 0x5496, 0x5361, 0x54AF, 0x5F00, 0x63E9, 0x6977,
+  0x51EF, 0x6168, 0x520A, 0x582A, 0x52D8, 0x574E, 0x780D, 0x770B,
+  0x5EB7, 0x6177, 0x7CE0, 0x625B, 0x6297, 0x4EA2, 0x7095, 0x8003,
+  0x62F7, 0x70E4, 0x9760, 0x5777, 0x82DB, 0x67EF, 0x68F5, 0x78D5,
+  0x9897, 0x79D1, 0x58F3, 0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B,
+  0x5BA2, 0x8BFE, 0x80AF, 0x5543, 0x57A6, 0x6073, 0x5751, 0x542D,
+  0x7A7A, 0x6050, 0x5B54, 0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7,
+  0x67AF, 0x54ED, 0x7A9F, 0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938,
+  0x57AE, 0x630E, 0x8DE8, 0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB,
+  0x5BBD, 0x6B3E, 0x5321, 0x7B50, 0x72C2, 0x6846, 0x77FF, 0x7736,
+  0x65F7, 0x51B5, 0x4E8F, 0x76D4, 0x5CBF, 0x7AA5, 0x8475, 0x594E,
+  0x9B41, 0x5080, 0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346,
+  0x56F0, 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587,
+  0x8721, 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD,
+  0x5A6A, 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30,
+  0x63FD, 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994,
+  0x72FC, 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262,
+  0x8001, 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50,
+  0x96F7, 0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2,
+  0x808B, 0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8,
+  0x7281, 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E,
+  0x91CC, 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D,
+  0x5389, 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0,
+  0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, 0x54E9,
+  0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, 0x6D9F,
+  0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, 0x7CAE,
+  0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, 0x91CF, 0x667E,
+  0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, 0x71CE, 0x5BE5,
+  0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, 0x6599, 0x5217,
+  0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, 0x78F7, 0x9716,
+  0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D, 0x62CE,
+plane 13 
+at 0x00
+  0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, 0x51CC,
+  0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, 0x7409,
+  0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, 0x67F3,
+  0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF, 0x9686, 0x5784,
+  0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402, 0x7BD3, 0x6F0F, 0x964B,
+  0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089, 0x63B3, 0x5364, 0x864F,
+  0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, 0x8D42, 0x9E7F, 0x6F5E,
+  0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, 0x5415, 0x94DD, 0x4FA3,
+  0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, 0x6C2F, 0x5F8B, 0x7387,
+  0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, 0x6EE6, 0x5375, 0x4E71,
+  0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, 0x4ED1, 0x6CA6, 0x7EB6,
+  0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B, 0x9523, 0x7BA9, 0x9AA1,
+  0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC, 0x5988, 0x9EBB, 0x739B,
+  0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B, 0x5417, 0x57CB, 0x4E70,
+  0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792, 0x9992, 0x86EE, 0x6EE1,
+  0x8513, 0x66FC, 0x6162, 0x6F2B, 0x8C29, 0x8292, 0x832B, 0x76F2,
+  0x6C13, 0x5FD9, 0x83BD, 0x732B, 0x8305, 0x951A, 0x6BDB, 0x77DB,
+  0x94C6, 0x536F, 0x8302, 0x5192, 0x5E3D, 0x8C8C, 0x8D38, 0x4E48,
+  0x73AB, 0x679A, 0x6885, 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709,
+  0x5A92, 0x9541, 0x6BCF, 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A,
+  0x95E8, 0x95F7, 0x4EEC, 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530,
+  0x731B, 0x68A6, 0x5B5F, 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7,
+  0x8C1C, 0x5F25, 0x7C73, 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6,
+  0x5E42, 0x68C9, 0x7720, 0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29,
+  0x7F05, 0x9762, 0x82D7, 0x63CF, 0x7784, 0x85D0, 0x79D2, 0x6E3A,
+  0x5E99, 0x5999, 0x8511, 0x706D, 0x6C11, 0x62BF, 0x76BF, 0x654F,
+  0x60AF, 0x95FD, 0x660E, 0x879F, 0x9E23, 0x94ED, 0x540D, 0x547D,
+  0x8C2C, 0x6478, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469,
+  0x9B54, 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20,
+  0x5BDE, 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9,
+  0x59C6, 0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728,
+  0x76EE, 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0,
+plane 14 
+at 0x00
+  0x90A3, 0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, 0x8010, 0x5948,
+  0x5357, 0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, 0x607C, 0x95F9,
+  0x6DD6, 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, 0x59AE, 0x9713,
+  0x502A, 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, 0x9006,
+  0x6EBA, 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5,
+  0x5A18, 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E,
+  0x954A, 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81,
+  0x62E7, 0x6CDE, 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113, 0x6D53,
+  0x519C, 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, 0x6696, 0x8650,
+  0x759F, 0x632A, 0x61E6, 0x7CEF, 0x8BFA, 0x54E6, 0x6B27, 0x9E25,
+  0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, 0x556A, 0x8DB4, 0x722C,
+  0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, 0x5F98, 0x6E43,
+  0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554, 0x5224,
+  0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B, 0x5486,
+  0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA, 0x57F9,
+  0x88F4, 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7, 0x76C6,
+  0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA, 0x787C,
+  0x7BF7, 0x81A8, 0x670B, 0x9E4F, 0x6367, 0x78B0, 0x576F, 0x7812,
+  0x9739, 0x6279, 0x62AB, 0x5288, 0x7435, 0x6BD7, 0x5564, 0x813E,
+  0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, 0x5C41, 0x8B6C, 0x7BC7,
+  0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, 0x74E2, 0x7968, 0x6487,
+  0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, 0x8058, 0x4E52, 0x576A,
+  0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6, 0x8BC4, 0x5C4F, 0x5761,
+  0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44, 0x8FEB, 0x7C95, 0x5256,
+  0x6251, 0x94FA, 0x4EC6, 0x8386, 0x8461, 0x83E9, 0x84B2, 0x57D4,
+  0x6734, 0x5703, 0x666E, 0x6D66, 0x8C31, 0x66DD, 0x7011, 0x671F,
+  0x6B3A, 0x6816, 0x621A, 0x59BB, 0x4E03, 0x51C4, 0x6F06, 0x67D2,
+  0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67, 0x7566, 0x5D0E, 0x8110,
+  0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91, 0x8D77, 0x5C82, 0x4E5E,
+  0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, 0x6C14, 0x8FC4, 0x5F03,
+  0x6C7D, 0x6CE3, 0x8BAB, 0x6390, 0x6070, 0x6D3D, 0x7275, 0x6266,
+  0x948E, 0x94C5, 0x5343, 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E,
+plane 15 
+at 0x00
+  0x9ED4, 0x94B1, 0x94B3, 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34,
+  0x5811, 0x5D4C, 0x6B20, 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C,
+  0x5899, 0x8537, 0x5F3A, 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084,
+  0x6865, 0x77A7, 0x4E54, 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8,
+  0x5CED, 0x4FCF, 0x7A8D, 0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83,
+  0x94A6, 0x4FB5, 0x4EB2, 0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2,
+  0x79BD, 0x5BDD, 0x6C81, 0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F,
+  0x6E05, 0x64CE, 0x6674, 0x6C30, 0x60C5, 0x9877, 0x8BF7, 0x5E86,
+  0x743C, 0x7A77, 0x79CB, 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA,
+  0x914B, 0x6CC5, 0x8D8B, 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48,
+  0x9A71, 0x6E20, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708,
+  0x98A7, 0x6743, 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC,
+  0x5238, 0x529D, 0x7F3A, 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7,
+  0x786E, 0x96C0, 0x88D9, 0x7FA4, 0x7136, 0x71C3, 0x5189, 0x67D3,
+  0x74E4, 0x58E4, 0x6518, 0x56B7, 0x8BA9, 0x9976, 0x6270, 0x7ED5,
+  0x60F9, 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, 0x97E7, 0x4EFB,
+  0x8BA4, 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, 0x620E,
+  0x8338, 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2,
+  0x5197, 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A,
+  0x5982, 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E,
+  0x854A, 0x745E, 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492,
+  0x6D12, 0x8428, 0x816E, 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1,
+  0x4F1E, 0x6563, 0x6851, 0x55D3, 0x4E27, 0x6414, 0x9A9A, 0x626B,
+  0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, 0x50E7, 0x838E, 0x7802,
+  0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, 0x715E, 0x7B5B,
+  0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D, 0x886B,
+  0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55, 0x6247,
+  0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A, 0x5C1A,
+  0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA, 0x97F6,
+  0x5C11, 0x54E8, 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7, 0x820C,
+  0x820D, 0x8D66, 0x6444, 0x5C04, 0x6151, 0x6D89, 0x793E, 0x8BBE,
+  0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, 0x5A20, 0x7EC5,
+plane 16 
+at 0x00
+  0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, 0x80BE, 0x614E, 0x6E17,
+  0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3, 0x7701, 0x76DB,
+  0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, 0x72EE, 0x65BD, 0x6E7F,
+  0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, 0x62FE, 0x65F6, 0x4EC0,
+  0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, 0x77E2, 0x4F7F, 0x5C4E,
+  0x9A76, 0x59CB, 0x5F0F, 0x793A, 0x58EB, 0x4E16, 0x67FF, 0x4E8B,
+  0x62ED, 0x8A93, 0x901D, 0x52BF, 0x662F, 0x55DC, 0x566C, 0x9002,
+  0x4ED5, 0x4F8D, 0x91CA, 0x9970, 0x6C0F, 0x5E02, 0x6043, 0x5BA4,
+  0x89C6, 0x8BD5, 0x6536, 0x624B, 0x9996, 0x5B88, 0x5BFF, 0x6388,
+  0x552E, 0x53D7, 0x7626, 0x517D, 0x852C, 0x67A2, 0x68B3, 0x6B8A,
+  0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, 0x758F, 0x4E66, 0x8D4E,
+  0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, 0x7F72, 0x8700, 0x9ECD,
+  0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, 0x675F, 0x620D, 0x7AD6,
+  0x5885, 0x5EB6, 0x6570, 0x6F31, 0x6055, 0x5237, 0x800D, 0x6454,
+  0x8870, 0x7529, 0x5E05, 0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D,
+  0x8C01, 0x6C34, 0x7761, 0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C,
+  0x8BF4, 0x7855, 0x6714, 0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D,
+  0x79C1, 0x53F8, 0x4E1D, 0x6B7B, 0x8086, 0x5BFA, 0x55E3, 0x56DB,
+  0x4F3A, 0x4F3C, 0x9972, 0x5DF3, 0x677E, 0x8038, 0x6002, 0x9882,
+  0x9001, 0x5B8B, 0x8BBC, 0x8BF5, 0x641C, 0x8258, 0x64DE, 0x55FD,
+  0x82CF, 0x9165, 0x4FD7, 0x7D20, 0x901F, 0x7C9F, 0x50F3, 0x5851,
+  0x6EAF, 0x5BBF, 0x8BC9, 0x8083, 0x9178, 0x849C, 0x7B97, 0x867D,
+  0x968B, 0x968F, 0x7EE5, 0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042,
+  0x96A7, 0x795F, 0x5B59, 0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506,
+  0x7F29, 0x7410, 0x7D22, 0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83,
+  0x5979, 0x5854, 0x736D, 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4,
+  0x62AC, 0x53F0, 0x6CF0, 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D,
+  0x644A, 0x8D2A, 0x762B, 0x6EE9, 0x575B, 0x6A80, 0x75F0, 0x6F6D,
+  0x8C2D, 0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, 0x63A2, 0x53F9,
+  0x70AD, 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B, 0x5510,
+  0x7CD6, 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B,
+  0x6ED4, 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8,
+plane 17 
+at 0x00
+  0x5957, 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254,
+  0x8E22, 0x9511, 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF,
+  0x568F, 0x60D5, 0x6D95, 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B,
+  0x7530, 0x751C, 0x606C, 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2,
+  0x773A, 0x8DF3, 0x8D34, 0x94C1, 0x5E16, 0x5385, 0x542C, 0x70C3,
+  0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247, 0x901A,
+  0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, 0x6876,
+  0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, 0x900F,
+  0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, 0x5C60,
+  0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, 0x817F,
+  0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, 0x6258,
+  0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, 0x59A5, 0x62D3,
+  0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6, 0x889C,
+  0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D, 0x4E38,
+  0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB, 0x5B9B,
+  0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, 0x7F51,
+  0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01, 0x5DCD, 0x5FAE,
+  0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 0x552F, 0x60DF, 0x4E3A,
+  0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4, 0x4F1F, 0x4F2A, 0x5C3E,
+  0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F, 0x80C3, 0x5582, 0x9B4F,
+  0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170, 0x536B, 0x761F, 0x6E29,
+  0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B, 0x7A33, 0x7D0A, 0x95EE,
+  0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, 0x6DA1, 0x7A9D, 0x6211,
+  0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 0x545C, 0x94A8, 0x4E4C,
+  0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, 0x68A7, 0x543E, 0x5434,
+  0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 0x821E, 0x4F0D, 0x4FAE,
+  0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 0x52FF, 0x52A1, 0x609F,
+  0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F, 0x7852, 0x77FD, 0x6670,
+  0x563B, 0x5438, 0x9521, 0x727A, 0x7A00, 0x606F, 0x5E0C, 0x6089,
+  0x819D, 0x5915, 0x60DC, 0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280,
+  0x6A84, 0x88AD, 0x5E2D, 0x4E60, 0x5AB3, 0x559C, 0x94E3, 0x6D17,
+  0x7CFB, 0x9699, 0x620F, 0x7EC6, 0x778E, 0x867E, 0x5323, 0x971E,
+plane 18 
+at 0x00
+  0x8F96, 0x6687, 0x5CE1, 0x4FA0, 0x72ED, 0x4E0B, 0x53A6, 0x590F,
+  0x5413, 0x6380, 0x9528, 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, 0x54B8,
+  0x8D24, 0x8854, 0x8237, 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E,
+  0x9669, 0x73B0, 0x732E, 0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA,
+  0x9677, 0x9650, 0x7EBF, 0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1,
+  0x8944, 0x6E58, 0x4E61, 0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD,
+  0x4EAB, 0x9879, 0x5DF7, 0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427,
+  0x785D, 0x9704, 0x524A, 0x54EE, 0x56A3, 0x9500, 0x6D88, 0x5BB5,
+  0x6DC6, 0x6653, 0x5C0F, 0x5B5D, 0x6821, 0x8096, 0x5578, 0x7B11,
+  0x6548, 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, 0x534F, 0x631F,
+  0x643A, 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0, 0x5378,
+  0x87F9, 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF,
+  0x950C, 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845,
+  0x661F, 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62,
+  0x90A2, 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144,
+  0x51F6, 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE,
+  0x7F9E, 0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, 0x7EE3, 0x589F,
+  0x620C, 0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, 0x8BB8, 0x84C4,
+  0x9157, 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, 0x7D6E, 0x5A7F,
+  0x7EEA, 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB, 0x7384,
+  0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66, 0x7A74,
+  0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2, 0x5BFB,
+  0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A, 0x8FC5,
+  0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD, 0x7259,
+  0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, 0x54D1, 0x4E9A, 0x8BB6,
+  0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, 0x76D0, 0x4E25, 0x7814,
+  0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, 0x960E, 0x708E, 0x6CBF,
+  0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, 0x5830, 0x71D5,
+  0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4, 0x8C1A,
+  0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C, 0x4F6F,
+  0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2, 0x517B,
+  0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476, 0x6447, 0x5C27,
+plane 19 
+at 0x00
+  0x9065, 0x7A91, 0x8C23, 0x59DA, 0x54AC, 0x8200, 0x836F, 0x8981,
+  0x8000, 0x6930, 0x564E, 0x8036, 0x7237, 0x91CE, 0x51B6, 0x4E5F,
+  0x9875, 0x6396, 0x4E1A, 0x53F6, 0x66F3, 0x814B, 0x591C, 0x6DB2,
+  0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1, 0x4F9D, 0x4F0A, 0x8863,
+  0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA, 0x80F0, 0x7591, 0x6C82,
+  0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681, 0x501A, 0x5DF2, 0x4E59,
+  0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613, 0x9091, 0x5C79, 0x4EBF,
+  0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, 0x4EA6, 0x88D4, 0x610F,
+  0x6BC5, 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, 0x8BE3, 0x8BAE, 0x8C0A,
+  0x8BD1, 0x5F02, 0x7FFC, 0x7FCC, 0x7ECE, 0x8335, 0x836B, 0x56E0,
+  0x6BB7, 0x97F3, 0x9634, 0x59FB, 0x541F, 0x94F6, 0x6DEB, 0x5BC5,
+  0x996E, 0x5C39, 0x5F15, 0x9690, 0x5370, 0x82F1, 0x6A31, 0x5A74,
+  0x9E70, 0x5E94, 0x7F28, 0x83B9, 0x8424, 0x8425, 0x8367, 0x8747,
+  0x8FCE, 0x8D62, 0x76C8, 0x5F71, 0x9896, 0x786C, 0x6620, 0x54DF,
+  0x62E5, 0x4F63, 0x81C3, 0x75C8, 0x5EB8, 0x96CD, 0x8E0A, 0x86F9,
+  0x548F, 0x6CF3, 0x6D8C, 0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D,
+  0x4F18, 0x60A0, 0x5FE7, 0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9,
+  0x6CB9, 0x6E38, 0x9149, 0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9,
+  0x8BF1, 0x53C8, 0x5E7C, 0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986,
+  0x865E, 0x611A, 0x8206, 0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109,
+  0x6E1D, 0x6E14, 0x9685, 0x4E88, 0x5A31, 0x96E8, 0x4E0E, 0x5C7F,
+  0x79B9, 0x5B87, 0x8BED, 0x7FBD, 0x7389, 0x57DF, 0x828B, 0x90C1,
+  0x5401, 0x9047, 0x55BB, 0x5CEA, 0x5FA1, 0x6108, 0x6B32, 0x72F1,
+  0x80B2, 0x8A89, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, 0x9A6D,
+  0x9E33, 0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4,
+  0x8F95, 0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC,
+  0x82D1, 0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3,
+  0x94A5, 0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91,
+  0x90E7, 0x5300, 0x9668, 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655,
+  0x97F5, 0x5B55, 0x531D, 0x7838, 0x6742, 0x683D, 0x54C9, 0x707E,
+  0x5BB0, 0x8F7D, 0x518D, 0x5728, 0x54B1, 0x6512, 0x6682, 0x8D5E,
+  0x8D43, 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, 0x85FB, 0x67A3,
+plane 20 
+at 0x00
+  0x65E9, 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, 0x7076,
+  0x71E5, 0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E,
+  0x618E, 0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67,
+  0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D, 0x70B8,
+  0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8, 0x77BB,
+  0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, 0x65A9, 0x8F97, 0x5D2D,
+  0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7AD9, 0x6E5B, 0x7EFD,
+  0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, 0x638C, 0x6DA8, 0x6756,
+  0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, 0x969C, 0x62DB,
+  0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146, 0x8087,
+  0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005, 0x9517,
+  0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504, 0x7827,
+  0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA, 0x9707,
+  0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81, 0x72F0,
+  0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, 0x653F, 0x5E27, 0x75C7,
+  0x90D1, 0x8BC1, 0x829D, 0x679D, 0x652F, 0x5431, 0x8718, 0x77E5,
+  0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7, 0x804C, 0x76F4, 0x690D,
+  0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, 0x6307, 0x6B62, 0x8DBE,
+  0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A, 0x63B7, 0x81F3, 0x81F4,
+  0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A, 0x79E9, 0x7A1A, 0x8D28,
+  0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92, 0x4E2D, 0x76C5, 0x5FE0,
+  0x949F, 0x8877, 0x7EC8, 0x79CD, 0x80BF, 0x91CD, 0x4EF2, 0x4F17,
+  0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8BCC, 0x7CA5, 0x8F74, 0x8098,
+  0x5E1A, 0x5492, 0x76B1, 0x5B99, 0x663C, 0x9AA4, 0x73E0, 0x682A,
+  0x86DB, 0x6731, 0x732A, 0x8BF8, 0x8BDB, 0x9010, 0x7AF9, 0x70DB,
+  0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B, 0x8457, 0x67F1, 0x52A9,
+  0x86C0, 0x8D2E, 0x94F8, 0x7B51, 0x4F4F, 0x6CE8, 0x795D, 0x9A7B,
+  0x6293, 0x722A, 0x62FD, 0x4E13, 0x7816, 0x8F6C, 0x64B0, 0x8D5A,
+  0x7BC6, 0x6869, 0x5E84, 0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6,
+  0x690E, 0x9525, 0x8FFD, 0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6,
+  0x6349, 0x62D9, 0x5353, 0x684C, 0x7422, 0x8301, 0x914C, 0x5544,
+  0x7740, 0x707C, 0x6D4A, 0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB,
+plane 21 
+at 0x00
+  0x6DC4, 0x5B5C, 0x7D2B, 0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA,
+  0x6E0D, 0x5B57, 0x9B03, 0x68D5, 0x8E2A, 0x5B97, 0x7EFC, 0x603B,
+  0x7EB5, 0x90B9, 0x8D70, 0x594F, 0x63CD, 0x79DF, 0x8DB3, 0x5352,
+  0x65CF, 0x7956, 0x8BC5, 0x963B, 0x7EC4, 0x94BB, 0x7E82, 0x5634,
+  0x9189, 0x6700, 0x7F6A, 0x5C0A, 0x9075, 0x6628, 0x5DE6, 0x4F50,
+  0x67DE, 0x505A, 0x4F5C, 0x5750, 0x5EA7,      0,      0,      0,
+       0,      0, 0x4E8D, 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345,
+  0x4E15, 0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA,
+  0x4E3F, 0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10, 0x56DF,
+  0x80E4, 0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10,
+  0x4E5C, 0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4,
+  0x538D, 0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A,
+  0x53F5, 0x5326, 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202,
+  0x5208, 0x520E, 0x522D, 0x5233, 0x523F, 0x5240, 0x524C, 0x525E,
+  0x5261, 0x525C, 0x84AF, 0x527D, 0x5282, 0x5281, 0x5290, 0x5293,
+  0x5182, 0x7F54, 0x4EBB, 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1,
+  0x4EEB, 0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x4F25,
+  0x4F27, 0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A, 0x4F5D,
+  0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91, 0x4F89,
+  0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, 0x4F94,
+  0x4FE6, 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, 0x4FD1,
+  0x4FDF, 0x4FF8, 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F, 0x502E,
+  0x502D, 0x4FFE, 0x501C, 0x500C, 0x5025, 0x5028, 0x507E, 0x5043,
+  0x5055, 0x5048, 0x504E, 0x506C, 0x507B, 0x50A5, 0x50A7, 0x50A9,
+  0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, 0x50E6, 0x50EE, 0x5107,
+  0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, 0x9FA0, 0x6C46,
+  0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914, 0x52F9,
+  0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0, 0x5156,
+  0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980, 0x5B34,
+  0x8803, 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC, 0x51C7, 0x5196,
+  0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7, 0x8BAA, 0x8BB4, 0x8BB5,
+  0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF, 0x8BCE, 0x8BD2, 0x8BD3,
+plane 22 
+at 0x00
+  0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC, 0x8BDF, 0x8BE0, 0x8BE4,
+  0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, 0x8BF6, 0x8BF9, 0x8BFC,
+  0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, 0x8C0C, 0x8C0F, 0x8C11,
+  0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, 0x8C1B, 0x8C18, 0x8C1D,
+  0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, 0x8C2A, 0x8C2B, 0x8C2E,
+  0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, 0x5369, 0x537A, 0x961D,
+  0x9622, 0x9621, 0x9631, 0x962A, 0x963D, 0x963C, 0x9642, 0x9649,
+  0x9654, 0x965F, 0x9667, 0x966C, 0x9672, 0x9674, 0x9688, 0x968D,
+  0x9697, 0x96B0, 0x9097, 0x909B, 0x909D, 0x9099, 0x90AC, 0x90A1,
+  0x90B4, 0x90B3, 0x90B6, 0x90BA, 0x90B8, 0x90B0, 0x90CF, 0x90C5,
+  0x90BE, 0x90D0, 0x90C4, 0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC,
+  0x90D7, 0x90DB, 0x90EB, 0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E,
+  0x9123, 0x9131, 0x912F, 0x9139, 0x9143, 0x9146, 0x520D, 0x5942,
+  0x52A2, 0x52AC, 0x52AD, 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0,
+  0x53DF, 0x71EE, 0x77CD, 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6,
+  0x5F01, 0x755A, 0x5DEF, 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC,
+  0x58C5, 0x58D1, 0x5729, 0x572C, 0x572A, 0x5733, 0x5739, 0x572E,
+  0x572F, 0x575C, 0x573B, 0x5742, 0x5769, 0x5785, 0x576B, 0x5786,
+  0x577C, 0x577B, 0x5768, 0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4,
+  0x578C, 0x57B2, 0x57CF, 0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5,
+  0x57D8, 0x57DA, 0x57D9, 0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8,
+  0x57E4, 0x57DD, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E,
+  0x5819, 0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A,
+  0x5880, 0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F,
+  0x828A, 0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB,
+  0x82B8, 0x82BE, 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7,
+  0x82AE, 0x82CB, 0x82CC, 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA,
+  0x829F, 0x82C4, 0x82CE, 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4,
+  0x830F, 0x8307, 0x82DC, 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB,
+  0x82D3, 0x8311, 0x831A, 0x8306, 0x8314, 0x8315, 0x82E0, 0x82D5,
+  0x831C, 0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, 0x8334,
+  0x8331, 0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F,
+plane 23 
+at 0x00
+  0x8340, 0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365,
+  0x8368, 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E, 0x83B0,
+  0x8378, 0x83B3, 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C, 0x8385,
+  0x837C, 0x83B6, 0x83A9, 0x837D, 0x83B8, 0x837B, 0x8398, 0x839E,
+  0x83A8, 0x83BA, 0x83BC, 0x83C1, 0x8401, 0x83E5, 0x83D8, 0x5807,
+  0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6, 0x841C, 0x8438, 0x8411,
+  0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8, 0x83F9, 0x83EA,
+  0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451, 0x845A,
+  0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478, 0x843C,
+  0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D, 0x84C1,
+  0x84CD, 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF, 0x84BA,
+  0x84E0, 0x84A1, 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3, 0x850C,
+  0x750D, 0x8538, 0x84F0, 0x8539, 0x851F, 0x853A, 0x8556, 0x853B,
+  0x84FF, 0x84FC, 0x8559, 0x8548, 0x8568, 0x8564, 0x855E, 0x857A,
+  0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4, 0x85A8, 0x8587, 0x858F,
+  0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9, 0x85B7, 0x85B0, 0x85D3,
+  0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605, 0x8629, 0x8616, 0x863C,
+  0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037, 0x5955, 0x595A, 0x5958,
+  0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34, 0x624C, 0x626A, 0x629F,
+  0x62BB, 0x62CA, 0x62DA, 0x62D7, 0x62EE, 0x6322, 0x62F6, 0x6339,
+  0x634B, 0x6343, 0x63AD, 0x63F6, 0x6371, 0x637A, 0x638E, 0x63B4,
+  0x636D, 0x63AC, 0x638A, 0x6369, 0x63AE, 0x63BC, 0x63F2, 0x63F8,
+  0x63E0, 0x63FF, 0x63C4, 0x63DE, 0x63CE, 0x6452, 0x63C6, 0x63BE,
+  0x6445, 0x6441, 0x640B, 0x641B, 0x6420, 0x640C, 0x6426, 0x6421,
+  0x645E, 0x6484, 0x646D, 0x6496, 0x647A, 0x64B7, 0x64B8, 0x6499,
+  0x64BA, 0x64C0, 0x64D0, 0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525,
+  0x652E, 0x5F0B, 0x5FD2, 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD,
+  0x53E9, 0x53E8, 0x53FB, 0x5412, 0x5416, 0x5406, 0x544B, 0x5452,
+  0x5453, 0x5454, 0x5456, 0x5443, 0x5421, 0x5457, 0x5459, 0x5423,
+  0x5432, 0x5482, 0x5494, 0x5477, 0x5471, 0x5464, 0x549A, 0x549B,
+  0x5484, 0x5476, 0x5466, 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4,
+  0x54D2, 0x54A7, 0x54A6, 0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5,
+plane 24 
+at 0x00
+  0x54BB, 0x54BF, 0x54CC, 0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA,
+  0x54A4, 0x54DD, 0x54CF, 0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD,
+  0x5514, 0x54F3, 0x5522, 0x5523, 0x550F, 0x5511, 0x5527, 0x552A,
+  0x5567, 0x558F, 0x55B5, 0x5549, 0x556D, 0x5541, 0x5555, 0x553F,
+  0x5550, 0x553C, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533,
+  0x5530, 0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588,
+  0x5581, 0x559F, 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD,
+  0x55BE, 0x5594, 0x5599, 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1,
+  0x55EB, 0x55EC, 0x55D4, 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5,
+  0x55F2, 0x55F3, 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94,
+  0x561E, 0x5608, 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600,
+  0x5627, 0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662,
+  0x5659, 0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B,
+  0x567B, 0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD,
+  0x56E1, 0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709,
+  0x571C, 0x5E0F, 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C,
+  0x5E37, 0x5E44, 0x5E54, 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 0x5C7A,
+  0x5C8D, 0x5C90, 0x5C96, 0x5C88, 0x5C98, 0x5C99, 0x5C91, 0x5C9A,
+  0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1, 0x5CA3,
+  0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5, 0x5D02,
+  0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, 0x5D1B,
+  0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 0x5D5D,
+  0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99, 0x5D9D,
+  0x8C73, 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87, 0x5F89,
+  0x5F8C, 0x5F95, 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 0x5FBC,
+  0x8862, 0x5F61, 0x72AD, 0x72B0, 0x72B4, 0x72B7, 0x72B8, 0x72C3,
+  0x72C1, 0x72CE, 0x72CD, 0x72D2, 0x72E8, 0x72EF, 0x72E9, 0x72F2,
+  0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303, 0x72FA, 0x72FB, 0x7317,
+  0x7313, 0x7321, 0x730A, 0x731E, 0x731D, 0x7315, 0x7322, 0x7339,
+  0x7325, 0x732C, 0x7338, 0x7331, 0x7350, 0x734D, 0x7357, 0x7360,
+  0x736C, 0x736F, 0x737E, 0x821B, 0x5925, 0x98E7, 0x5924, 0x5902,
+  0x9963, 0x9967, 0x9968, 0x9969, 0x996A, 0x996B, 0x996C, 0x9974,
+plane 25 
+at 0x00
+  0x9977, 0x997D, 0x9980, 0x9984, 0x9987, 0x998A, 0x998D, 0x9990,
+  0x9991, 0x9993, 0x9994, 0x9995, 0x5E80, 0x5E91, 0x5E8B, 0x5E96,
+  0x5EA5, 0x5EA0, 0x5EB9, 0x5EB5, 0x5EBE, 0x5EB3, 0x8D53, 0x5ED2,
+  0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, 0x81BA, 0x5FC4, 0x5FC9, 0x5FD6,
+  0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1, 0x5FE4, 0x5FFE, 0x6005,
+  0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019, 0x6035, 0x6026, 0x601B,
+  0x600F, 0x600D, 0x6029, 0x602B, 0x600A, 0x603F, 0x6021, 0x6078,
+  0x6079, 0x607B, 0x607A, 0x6042, 0x606A, 0x607D, 0x6096, 0x609A,
+  0x60AD, 0x609D, 0x6083, 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB,
+  0x60B1, 0x60DD, 0x60D8, 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126,
+  0x6115, 0x6123, 0x60F4, 0x6100, 0x610E, 0x612B, 0x614A, 0x6175,
+  0x61AC, 0x6194, 0x61A7, 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3,
+  0x95E9, 0x95EB, 0x95F1, 0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE,
+  0x9603, 0x9604, 0x9606, 0x9608, 0x960A, 0x960B, 0x960C, 0x960D,
+  0x960F, 0x9612, 0x9615, 0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C,
+  0x723F, 0x6215, 0x6C35, 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85,
+  0x6C90, 0x6C94, 0x6C8C, 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86,
+  0x6CA9, 0x6CD0, 0x6CD4, 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7,
+  0x6CB2, 0x6CE0, 0x6CD6, 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3,
+  0x6CEF, 0x6CFE, 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07,
+  0x6D04, 0x6D19, 0x6D0E, 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A,
+  0x6D4F, 0x6D52, 0x6D54, 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0,
+  0x6D5E, 0x6D93, 0x6D94, 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A,
+  0x6DC7, 0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6,
+  0x6DDD, 0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E,
+  0x6E4E, 0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32,
+  0x6E25, 0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2,
+  0x6EA5, 0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF,
+  0x6E8F, 0x6EC2, 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15,
+  0x6EF9, 0x6F2F, 0x6F36, 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29,
+  0x6F89, 0x6F8D, 0x6F8C, 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1,
+  0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, 0x6FDE,
+plane 26 
+at 0x00
+  0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, 0x7035, 0x704F,
+  0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, 0x752F,
+  0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 0x8B07,
+  0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, 0x8FE6,
+  0x8FF3, 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, 0x900D,
+  0x9016, 0x9021, 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, 0x9051,
+  0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9, 0x9074,
+  0x907D, 0x9082, 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57, 0x5F56,
+  0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63, 0x5C66,
+  0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, 0x5C6E,
+  0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3, 0x5997, 0x59CA,
+  0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, 0x59AF, 0x59D7, 0x59BE,
+  0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, 0x59D8, 0x59F9, 0x5A0C,
+  0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23, 0x5A13, 0x5A40, 0x5A67,
+  0x5A4A, 0x5A55, 0x5A3C, 0x5A62, 0x5A75, 0x80EC, 0x5AAA, 0x5A9B,
+  0x5A77, 0x5A7A, 0x5ABE, 0x5AEB, 0x5AB2, 0x5AD2, 0x5AD4, 0x5AB8,
+  0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, 0x5AE6, 0x5AD8, 0x5ADC, 0x5B09,
+  0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40, 0x5C15, 0x5C1C, 0x5B5A,
+  0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, 0x9A75, 0x9A77, 0x9A78,
+  0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, 0x9A85, 0x9A88, 0x9A8A,
+  0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, 0x9A9B, 0x9A9C, 0x9A9D,
+  0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, 0x9AA7, 0x7E9F, 0x7EA1,
+  0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0,
+  0x7EC1, 0x7EC2, 0x7EC9, 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7,
+  0x7EDB, 0x7EE0, 0x7EE1, 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1,
+  0x7EF2, 0x7F0D, 0x7EF6, 0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, 0x7F02,
+  0x7F03, 0x7F07, 0x7F08, 0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, 0x7F12,
+  0x7F17, 0x7F19, 0x7F1C, 0x7F1B, 0x7F1F, 0x7F21, 0x7F22, 0x7F23,
+  0x7F24, 0x7F25, 0x7F26, 0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D,
+  0x7F2F, 0x7F30, 0x7F31, 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F,
+  0x5DDB, 0x753E, 0x9095, 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F,
+  0x73CF, 0x73C2, 0x73D1, 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8,
+plane 27 
+at 0x00
+  0x73E5, 0x73D9, 0x987C, 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA,
+  0x73F2, 0x740F, 0x742A, 0x745B, 0x7426, 0x7425, 0x7428, 0x7430,
+  0x742E, 0x742C, 0x741B, 0x741A, 0x7441, 0x745C, 0x7457, 0x7455,
+  0x7459, 0x7477, 0x746D, 0x747E, 0x749C, 0x748E, 0x7480, 0x7481,
+  0x7487, 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, 0x74A7, 0x74D2,
+  0x74BA, 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, 0x6748,
+  0x6769, 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775,
+  0x67A8, 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809,
+  0x67D8, 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA,
+  0x67B3, 0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1,
+  0x67FD, 0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, 0x6844,
+  0x6864, 0x6883, 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840,
+  0x683E, 0x684A, 0x6849, 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877,
+  0x6893, 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, 0x6920, 0x68F9,
+  0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910, 0x6971,
+  0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980, 0x6998,
+  0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989, 0x6966,
+  0x6963, 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD, 0x69D4,
+  0x69B1, 0x69C1, 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D, 0x69FF,
+  0x6A2F, 0x69ED, 0x6A17, 0x6A18, 0x6A65, 0x69F2, 0x6A44, 0x6A3E,
+  0x6AA0, 0x6A50, 0x6A5B, 0x6A35, 0x6A8E, 0x6A79, 0x6A3D, 0x6A28,
+  0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, 0x6A97, 0x6AAB, 0x7337,
+  0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, 0x6B93, 0x6B8D,
+  0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, 0x8F72,
+  0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 0x8F7C,
+  0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B, 0x8F8D, 0x8F8E,
+  0x8F8F, 0x8F98, 0x8F9A, 0x8ECE, 0x620B, 0x6217, 0x621B, 0x621F,
+  0x6222, 0x6221, 0x6225, 0x6224, 0x622C, 0x81E7, 0x74EF, 0x74F4,
+  0x74FF, 0x750F, 0x7511, 0x7513, 0x6534, 0x65EE, 0x65EF, 0x65F0,
+  0x660A, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600, 0x7085, 0x66F7,
+  0x661D, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006, 0x665F, 0x6654,
+  0x6641, 0x664F, 0x6656, 0x6661, 0x6657, 0x6677, 0x6684, 0x668C,
+plane 28 
+at 0x00
+  0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC, 0x66E6, 0x66E9, 0x8D32,
+  0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40, 0x8D45, 0x8D46, 0x8D48,
+  0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59, 0x89C7, 0x89CA, 0x89CB,
+  0x89CC, 0x89CE, 0x89CF, 0x89D0, 0x89D1, 0x726E, 0x729F, 0x725D,
+  0x7266, 0x726F, 0x727E, 0x727F, 0x7284, 0x728B, 0x728D, 0x728F,
+  0x7292, 0x6308, 0x6332, 0x63B0, 0x643F, 0x64D8, 0x8004, 0x6BEA,
+  0x6BF3, 0x6BFD, 0x6BF5, 0x6BF9, 0x6C05, 0x6C07, 0x6C06, 0x6C0D,
+  0x6C15, 0x6C18, 0x6C19, 0x6C1A, 0x6C21, 0x6C29, 0x6C24, 0x6C2A,
+  0x6C32, 0x6535, 0x6555, 0x656B, 0x724D, 0x7252, 0x7256, 0x7230,
+  0x8662, 0x5216, 0x809F, 0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD,
+  0x80B1, 0x80AB, 0x80AD, 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9,
+  0x80EA, 0x80DB, 0x80C2, 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710,
+  0x80DD, 0x80EB, 0x80F1, 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2,
+  0x80FC, 0x6715, 0x8112, 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118,
+  0x8132, 0x8148, 0x814C, 0x8153, 0x8174, 0x8159, 0x815A, 0x8171,
+  0x8160, 0x8169, 0x817C, 0x817D, 0x816D, 0x8167, 0x584D, 0x5AB5,
+  0x8188, 0x8182, 0x8191, 0x6ED5, 0x81A3, 0x81AA, 0x81CC, 0x6726,
+  0x81CA, 0x81BB, 0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43,
+  0x6B46, 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA,
+  0x6BB3, 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC,
+  0x65C6, 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080,
+  0x709C, 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1,
+  0x70E8, 0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173,
+  0x715C, 0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198,
+  0x71B3, 0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9,
+  0x721D, 0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D,
+  0x6243, 0x6248, 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B,
+  0x795C, 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, 0x7967,
+  0x797A, 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0,
+  0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, 0x60AB,
+  0x6106, 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, 0x6206,
+  0x8080, 0x807F, 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, 0x7800,
+plane 29 
+at 0x00
+  0x7809, 0x7817, 0x7818, 0x7811, 0x65AB, 0x782D, 0x781C, 0x781D,
+  0x7839, 0x783A, 0x783B, 0x781F, 0x783C, 0x7825, 0x782C, 0x7823,
+  0x7829, 0x784E, 0x786D, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847,
+  0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, 0x789C, 0x78A1,
+  0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9, 0x78EC,
+  0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, 0x9F9B,
+  0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, 0x7707,
+  0x7708, 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, 0x7738,
+  0x7750, 0x7751, 0x7747, 0x7743, 0x775A, 0x7768, 0x7762, 0x7765,
+  0x777F, 0x778D, 0x777D, 0x7780, 0x778C, 0x7791, 0x779F, 0x77A0,
+  0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540, 0x754E, 0x754B, 0x7548,
+  0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, 0x7F61, 0x7F5F, 0x8A48,
+  0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, 0x7F7E, 0x76CD, 0x76E5,
+  0x8832, 0x9485, 0x9486, 0x9487, 0x948B, 0x948A, 0x948C, 0x948D,
+  0x948F, 0x9490, 0x9494, 0x9497, 0x9495, 0x949A, 0x949B, 0x949C,
+  0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, 0x94AC, 0x94AF, 0x94B0,
+  0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BC,
+  0x94BD, 0x94BF, 0x94C4, 0x94C8, 0x94C9, 0x94CA, 0x94CB, 0x94CC,
+  0x94CD, 0x94CE, 0x94D0, 0x94D1, 0x94D2, 0x94D5, 0x94D6, 0x94D7,
+  0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF, 0x94E0, 0x94E2, 0x94E4,
+  0x94E5, 0x94E7, 0x94E8, 0x94EA, 0x94E9, 0x94EB, 0x94EE, 0x94EF,
+  0x94F3, 0x94F4, 0x94F5, 0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF,
+  0x9503, 0x9502, 0x9506, 0x9507, 0x9509, 0x950A, 0x950D, 0x950E,
+  0x950F, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951B,
+  0x951D, 0x951E, 0x951F, 0x9522, 0x952A, 0x952B, 0x9529, 0x952C,
+  0x9531, 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953C, 0x953E,
+  0x953F, 0x9542, 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954C,
+  0x954E, 0x954F, 0x9552, 0x9553, 0x9554, 0x9556, 0x9557, 0x9558,
+  0x9559, 0x955B, 0x955E, 0x955F, 0x955D, 0x9561, 0x9562, 0x9564,
+  0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956A, 0x956B, 0x956C,
+  0x956F, 0x9571, 0x9572, 0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9,
+  0x79D5, 0x79ED, 0x79E3, 0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02,
+plane 30 
+at 0x00
+  0x7A1E, 0x7A14, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70,
+  0x7688, 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C,
+  0x9E20, 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32,
+  0x9E31, 0x9E36, 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41,
+  0x9E42, 0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C,
+  0x9E4E, 0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E,
+  0x9E63, 0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C,
+  0x9E71, 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D,
+  0x75AC, 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0,
+  0x75C3, 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4,
+  0x75EB, 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600,
+  0x7605, 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619,
+  0x761B, 0x763C, 0x7622, 0x7620, 0x7640, 0x762D, 0x7630, 0x763F,
+  0x7635, 0x7643, 0x763E, 0x7633, 0x764D, 0x765E, 0x7654, 0x765C,
+  0x7656, 0x766B, 0x766F, 0x7FCA, 0x7AE6, 0x7A78, 0x7A79, 0x7A80,
+  0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0, 0x7AAC, 0x7AA8, 0x7AAD,
+  0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F, 0x8882, 0x88A2,
+  0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3, 0x88E5,
+  0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921, 0x8919,
+  0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941, 0x8966,
+  0x897B, 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012, 0x8014,
+  0x8016, 0x801C, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029,
+  0x8028, 0x8031, 0x800B, 0x8035, 0x8043, 0x8046, 0x804D, 0x8052,
+  0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883, 0x9889, 0x988C,
+  0x988D, 0x988F, 0x9894, 0x989A, 0x989B, 0x989E, 0x989F, 0x98A1,
+  0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654, 0x866C, 0x866E, 0x867F,
+  0x867A, 0x867C, 0x867B, 0x86A8, 0x868D, 0x868B, 0x86AC, 0x869D,
+  0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9, 0x86B6, 0x86C4, 0x86B5,
+  0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF, 0x86C9, 0x86CF, 0x86B4,
+  0x86E9, 0x86F1, 0x86F2, 0x86ED, 0x86F3, 0x86D0, 0x8713, 0x86DE,
+  0x86F4, 0x86DF, 0x86D8, 0x86D1, 0x8703, 0x8707, 0x86F8, 0x8708,
+  0x870A, 0x870D, 0x8709, 0x8723, 0x873B, 0x871E, 0x8725, 0x872E,
+plane 31 
+at 0x00
+  0x871A, 0x873E, 0x8748, 0x8734, 0x8731, 0x8729, 0x8737, 0x873F,
+  0x8782, 0x8722, 0x877D, 0x877E, 0x877B, 0x8760, 0x8770, 0x874C,
+  0x876E, 0x878B, 0x8753, 0x8763, 0x877C, 0x8764, 0x8759, 0x8765,
+  0x8793, 0x87AF, 0x87A8, 0x87D2, 0x87C6, 0x8788, 0x8785, 0x87AD,
+  0x8797, 0x8783, 0x87AB, 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB,
+  0x87D3, 0x87BD, 0x87D1, 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0,
+  0x87EE, 0x8816, 0x8813, 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839,
+  0x883C, 0x7F36, 0x7F42, 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD,
+  0x7B08, 0x7B03, 0x7B04, 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47,
+  0x7B38, 0x7B2A, 0x7B19, 0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24,
+  0x7B33, 0x7B3E, 0x7B1E, 0x7B58, 0x7B5A, 0x7B45, 0x7B75, 0x7B4C,
+  0x7B5D, 0x7B60, 0x7B6E, 0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90,
+  0x7BA6, 0x7BA7, 0x7BB8, 0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, 0x7BAA,
+  0x7B9C, 0x7BA2, 0x7BAB, 0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD,
+  0x7BDA, 0x7BE5, 0x7BE6, 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F,
+  0x7C16, 0x7C0B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40,
+  0x81FE, 0x8201, 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222,
+  0x8223, 0x822D, 0x822F, 0x8228, 0x822B, 0x8238, 0x823B, 0x8233,
+  0x8234, 0x823E, 0x8244, 0x8249, 0x824B, 0x824F, 0x825A, 0x825F,
+  0x8268, 0x887E, 0x8885, 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D,
+  0x7F9F, 0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91,
+  0x7C9D, 0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1,
+  0x7CC7, 0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E,
+  0x66A8, 0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9,
+  0x7FEE, 0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B,
+  0x9EB8, 0x9EB4, 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67,
+  0x8D6D, 0x8C47, 0x8C49, 0x914A, 0x9150, 0x914E, 0x914F, 0x9164,
+  0x9162, 0x9161, 0x9170, 0x9169, 0x916F, 0x917D, 0x917E, 0x9172,
+  0x9174, 0x9179, 0x918C, 0x9185, 0x9190, 0x918D, 0x9191, 0x91A2,
+  0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4, 0x91BA,
+  0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69, 0x8DB5,
+  0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, 0x8DDE,
+plane 32 
+at 0x00
+  0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, 0x8DE3,
+  0x8DF9, 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 0x8E1F,
+  0x8E2C, 0x8E2E, 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, 0x8E35,
+  0x8E3D, 0x8E31, 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52, 0x8E4A,
+  0x8E70, 0x8E76, 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F, 0x8E94,
+  0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85, 0x8C98,
+  0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC, 0x89E5, 0x89EB,
+  0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9, 0x96F3, 0x96EF, 0x9706,
+  0x9701, 0x9708, 0x970F, 0x970E, 0x972A, 0x972D, 0x9730, 0x973E,
+  0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87, 0x9F88, 0x9F89, 0x9F8A,
+  0x9F8C, 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9, 0x96BC, 0x96BD, 0x96CE,
+  0x96D2, 0x77BF, 0x96E0, 0x928E, 0x92AE, 0x92C8, 0x933E, 0x936A,
+  0x93CA, 0x938F, 0x943E, 0x946B, 0x9C7F, 0x9C82, 0x9C85, 0x9C86,
+  0x9C87, 0x9C88, 0x7A23, 0x9C8B, 0x9C8E, 0x9C90, 0x9C91, 0x9C92,
+  0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E, 0x9C9F, 0x9CA0, 0x9CA1,
+  0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7, 0x9CA8, 0x9CA9, 0x9CAB,
+  0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2, 0x9CB3, 0x9CB4, 0x9CB5,
+  0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC, 0x9CBD, 0x9CC4, 0x9CC5,
+  0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF,
+  0x9CD0, 0x9CD3, 0x9CD4, 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC,
+  0x9CDD, 0x9CDF, 0x9CE2, 0x977C, 0x9785, 0x9791, 0x9792, 0x9794,
+  0x97AF, 0x97AB, 0x97A3, 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7,
+  0x9E58, 0x9AB6, 0x9ABA, 0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2,
+  0x9ACB, 0x9ACC, 0x9AD1, 0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48,
+  0x9B4D, 0x9B51, 0x98E8, 0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF,
+  0x9AE1, 0x9AE6, 0x9AEF, 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08,
+  0x9B0F, 0x9B13, 0x9B1F, 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82,
+  0x9E87, 0x9E88, 0x9E8B, 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB,
+  0x9EDC, 0x9EDD, 0x9EE0, 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5,
+  0x9EEA, 0x9EEF, 0x9F22, 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D,
+  0x9F3E, 0x9F44,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 33 
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 34 
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+plane 35 
+at 0x00
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+       0,      0,      0,      0,      0,      0,      0,      0,
+  
+# # 
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf2pt1_convert.1
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf2pt1_convert.1	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf2pt1_convert.1	(revision 2000)
@@ -0,0 +1,506 @@
+.rn '' }`
+''' $RCSfile: ttf2pt1_convert.1,v $$Revision: 1.1 $$Date: 2008-03-12 06:35:44 $
+'''
+''' $Log: not supported by cvs2svn $
+'''
+.de Sh
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp
+.if t .sp .5v
+.if n .sp
+..
+.de Ip
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.de Vb
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve
+.ft R
+
+.fi
+..
+'''
+'''
+'''     Set up \*(-- to give an unbreakable dash;
+'''     string Tr holds user defined translation string.
+'''     Bell System Logo is used as a dummy character.
+'''
+.tr \(*W-|\(bv\*(Tr
+.ie n \{\
+.ds -- \(*W-
+.ds PI pi
+.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+.ds L" ""
+.ds R" ""
+'''   \*(M", \*(S", \*(N" and \*(T" are the equivalent of
+'''   \*(L" and \*(R", except that they are used on ".xx" lines,
+'''   such as .IP and .SH, which do another additional levels of
+'''   double-quote interpretation
+.ds M" """
+.ds S" """
+.ds N" """""
+.ds T" """""
+.ds L' '
+.ds R' '
+.ds M' '
+.ds S' '
+.ds N' '
+.ds T' '
+'br\}
+.el\{\
+.ds -- \(em\|
+.tr \*(Tr
+.ds L" ``
+.ds R" ''
+.ds M" ``
+.ds S" ''
+.ds N" ``
+.ds T" ''
+.ds L' `
+.ds R' '
+.ds M' `
+.ds S' '
+.ds N' `
+.ds T' '
+.ds PI \(*p
+'br\}
+.\"	If the F register is turned on, we'll generate
+.\"	index entries out stderr for the following things:
+.\"		TH	Title 
+.\"		SH	Header
+.\"		Sh	Subsection 
+.\"		Ip	Item
+.\"		X<>	Xref  (embedded
+.\"	Of course, you have to process the output yourself
+.\"	in some meaninful fashion.
+.if \nF \{
+.de IX
+.tm Index:\\$1\t\\n%\t"\\$2"
+..
+.nr % 0
+.rr F
+.\}
+.TH TTF2PT1_CONVERT 1 "version 3.4.4" "December 31, 2003" "TTF2PT1 Font Converter"
+.UC
+.if n .hy 0
+.if n .na
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.de CQ          \" put $1 in typewriter font
+.ft CW
+'if n "\c
+'if t \\&\\$1\c
+'if n \\&\\$1\c
+'if n \&"
+\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
+'.ft R
+..
+.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
+.	\" AM - accent mark definitions
+.bd B 3
+.	\" fudge factors for nroff and troff
+.if n \{\
+.	ds #H 0
+.	ds #V .8m
+.	ds #F .3m
+.	ds #[ \f1
+.	ds #] \fP
+.\}
+.if t \{\
+.	ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.	ds #V .6m
+.	ds #F 0
+.	ds #[ \&
+.	ds #] \&
+.\}
+.	\" simple accents for nroff and troff
+.if n \{\
+.	ds ' \&
+.	ds ` \&
+.	ds ^ \&
+.	ds , \&
+.	ds ~ ~
+.	ds ? ?
+.	ds ! !
+.	ds /
+.	ds q
+.\}
+.if t \{\
+.	ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.	ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.	ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.	ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.	ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.	ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
+.	ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
+.	ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.	ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
+.\}
+.	\" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
+.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
+.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
+.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.ds oe o\h'-(\w'o'u*4/10)'e
+.ds Oe O\h'-(\w'O'u*4/10)'E
+.	\" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.	\" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.	ds : e
+.	ds 8 ss
+.	ds v \h'-1'\o'\(aa\(ga'
+.	ds _ \h'-1'^
+.	ds . \h'-1'.
+.	ds 3 3
+.	ds o a
+.	ds d- d\h'-1'\(ga
+.	ds D- D\h'-1'\(hy
+.	ds th \o'bp'
+.	ds Th \o'LP'
+.	ds ae ae
+.	ds Ae AE
+.	ds oe oe
+.	ds Oe OE
+.\}
+.rm #[ #] #H #V #F C
+.SH "NAME"
+\fBttf2pt1_convert\fR \- convenience font conversion script
+.SH "SYNOPSIS"
+ttf2pt1_convert \fB[config-file]\fR
+.SH "DESCRIPTION"
+`\fBConvert\fR\*(R' is the master conversion script provided with ttf2pt1. 
+When installed into a public directory it's named `\fBttf2pt1_convert\fR\*(R' 
+to avoid name collisions with the other programs.
+.PP
+If the configuration file is not specified as an argument then the file
+`\f(CWconvert.cfg\fR\*(R' in the current directory is used. This file contains
+a set of configuration variables. The distribution contains a sample file
+file `\f(CWconvert.cfg.sample\fR\*(R'. Please copy it to `\f(CWconvert.cfg\fR\*(R',
+look inside it and change the configuration variables. The more stable
+configuration variables, such as the path names of the scripts and
+encoding files are located in `\f(CWconvert\fR\*(R' itself, they are
+automatically updated when installing \fBttf2pt1\fR.
+.PP
+Put all the TTF fonts you want to convert into some directory (this
+may be just the directory that already contains all the Windows
+fonts on a mounted FAT filesystem). If you have fonts in different
+source encoding then put the fonts in each of the encodings
+into a separate directory. Up to 10 source directories are
+supported. If you (in a rather unlikely case) have more source
+directories then you can make two separate runs of the converter,
+converting up to 10 directories at a time.
+.PP
+The variables in the configuration file are:
+.Ip "\(bu" 2
+\fB\f(CWSRCDIRS\fR\fR \- the list of directories (with absolute paths) with 
+\s-1TTF\s0 fonts. Each line contains at least 3 fields: the name of the directory,
+the language of the fonts in it (if you have fonts for different 
+languages you have to put them into the separate directories) and the
+encoding of the fonts. Again, if you have some of the \s-1TTF\s0 typefaces in 
+one encoding, and some in another (say, \s-1CP\s0\-1251 and \s-1KOI\s0\-8), you have 
+to put them into the separate source directories. Some lines may contain
+4 fields. Then the fourth field is the name of the external map to
+convert the Unicode fonts into the desirable encoding. This map is
+used instead of the built-in map for the specified language.
+.Sp
+*8*
+An interesting thing is that some languages have more than one
+widely used character encodings. For example, the widely used
+encodings for Russian are \s-1IBM\s0 \s-1CP\s0\-866 (\s-1MS\s0\-\s-1DOS\s0 and Unix), \s-1KOI\s0\-8
+(Unix and \s-1VAX\s0, also the standard Internet encoding), \s-1IBM\s0 \s-1CP\s0\-1251 (\s-1MS\s0 Windows).
+That's why I have provided the means to generate the converted fonts
+in more than one encoding. See the file encodings/\s-1README\s0 for 
+details about the encoding tables. Actually, if you plan to use
+these fonts with Netscape Navigator better use the aliases
+cp-866 instead of ibm-866 and windows-1251 instead of ibm-1251
+because that's what Netscape wants.
+.Ip "\(bu" 2
+\fB\f(CWDSTDIR\fR\fR \- directory for the resulting Type1 fonts. Be careful!
+This directory gets completely wiped out before conversion,
+so don't use any already existing directory for this purpose.
+.Ip "\(bu" 2
+\fB\f(CWDSTENC\fI{language}\fR\fR\fR \- the list of encodings in which the destination 
+fonts will be generated for each language. Each font of that 
+language will be generated in each of the specified
+encodings. If you don't want any translation, just specify both
+\f(CWSRCENC\fR and \f(CWDSTENC\fR as iso8859-1 (or if you want any other encoding
+specified in the fonts.dir, copy the description of 8859-1 with
+new name and use this new name for \f(CWSRCENC\fR and \f(CWDSTENC\fR).
+.Ip "\(bu" 2
+\fB\f(CWFOUNDRY\fR\fR \- the foundry name to be used in the fonts.dir file. I have
+set it to `fromttf\*(R' to avoid name conflicts with any existing font for
+sure. But this foundry name is not registered in X11 standards and
+if you want to get the full standard compliance or have a font server
+that enforces such a compliance, use `misc\*(R'.
+.PP
+The next few parameters control the general behavior of the converter.
+They default values are set to something reasonable.
+.Ip "\(bu" 2
+\fB\f(CWCORRECTWIDTH\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then use the 
+converter option \f(CW\fB-w\fR\fR, otherwise don't use it. See the description of 
+this option in the \s-1README\s0 file.
+.Ip "\(bu" 2
+\fB\f(CWREMOVET1A\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then after
+conversion remove the un-encoded \f(CW.t1a\fR font files and the 
+intermediate \f(CW.xpfa\fR font metric files.
+.Ip "\(bu" 2
+\fB\f(CWINSTALLFONTMAP\fR\fR \- a Ghostscript parameter, if the value is set to 
+\fB\f(CWYES\fR\fR then install the entries for the new fonts
+right into the main \f(CWFontmap\fR file. Otherwise just leave
+the file \f(CWFontmap.ttf\fR in the Ghostscript configuration
+directory.
+.Ip "\(bu" 2
+\fB\f(CWHINTSUBST\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR use the option
+\f(CW\fB-H\fR\fR, otherwise don't use it. This option enables the
+hint substitution technique. If you have not installed the X11 patch
+described above, use this option with great caution. See further 
+description of this option in the \s-1README\s0 file.
+.Ip "\(bu" 2
+\fB\f(CWENFORCEISO\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then
+disguise the resulting fonts as the fonts in ISOLatin1 encoding. Historically
+this was neccessary due to the way the installer scripts created the
+X11 font configuration files. It is not neccessary any more for this
+purpose. But if you plan to use these fonts with some other application
+that expects ISOLatin1 encoding then better enable this option.
+.Ip "\(bu" 2
+\fB\f(CWALLGLYPHS\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then
+include all the glyphs from the source fonts into the resulting fonts, even
+if these glyphs are inaccessible. If it's set to \fB\f(CWNO\fR\fR then
+include only the glyphs which have codes assigned to them. The glyphs
+without codes can not be used directly. But some clever programs,
+such as the Type 1 library from XFree86 3.9 and higher can change
+the encoding on the fly and use another set of glyphs. If you have not 
+installed the X11 patch described above, use this option with great 
+caution. See further description of the option option \f(CW\fB-a\fR\fR in the 
+\s-1README\s0 file.
+.Ip "\(bu" 2
+\fB\f(CWGENUID\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then use
+the option \f(CW\fB-uA\fR\fR of the converter to generate UniqueIDs for
+the converted fonts. The standard X11 Type 1 library does not use
+this \s-1ID\s0, so it may only be neccessary for the other applications.
+The script is clever enough to generate different UniqueID for the
+same font converted to multiple encodings. Also after conversion it
+checks all the fonts generacted during the session for duplicated
+UniqueID and shows those. Still, this does not quarantee that these
+UniqueIDs won't overlap with some other fonts. The UniqueIDs are
+generated as hash values from the font names, so it's guaranteed
+that if the `\f(CWconvert\fR\*(R' script runs multiple times it will
+generate the same UniqueIDs during each run. See further description 
+of this option in the \s-1README\s0 file.
+.Ip "\(bu" 2
+\fB\f(CWGENUID\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then create
+the \f(CW.pfb\fR files, otherwise the \f(CW.pfa\fR files. The \f(CW.pfb\fR
+files are more compact but contain binary data, so you may experience some
+troubles when transferring them through the network.
+.PP
+The following parameters are used to locate the other scripts and
+configuration files. By default the scripts do a bit of guessing for them:
+they search in the \fBttf2pt1\fR installation directory if \fBttf2pt1\fR
+was installed or otherwise suppose that you are running `\f(CWconvert\fR\*(R' with
+`\f(CWscripts\fR\*(R' subdirectory being the current directory.
+.Ip "\(bu" 2
+\fB\f(CWENCDIR\fR\fR \- directory containing the descriptions of encodings
+.Ip "\(bu" 2
+\fB\f(CWMAPDIR\fR\fR \- directory containing the external map files
+.PP
+Besides that a few parameters are built into the `\f(CWconvert\fR\*(R' script itself.
+You probably won't need to change them:
+.Ip "\(bu" 2
+\f(CW\fBT1ASM\fR\fR, \f(CW\fBTTF2PT1\fR\fR, \f(CW\fBTRANS\fR\fR, \f(CW\fBT1FDIR\fR\fR, \f(CW\fBFORCEISO\fR\fR \- paths to the other script
+.PP
+Also there are a few parameters controlling the installation of
+fonts for Ghostscript. Please look at their description in the 
+Ghostscript section of documentation or in the \fBttf2pt1_x2gs(1)\fR
+manual page before running `\f(CWconvert\fR\*(R'. If these parameters are
+set, `\f(CWconvert\fR\*(R' will call the `\f(CWx2gs\fR\*(R' script automatically
+to install the newly converted fonts in Ghostscript.
+.PP
+After creating the configuration file run the `\f(CWconvert\fR\*(R' script. Look at
+the result and the log file in \f(CWDSTDIR\fR.
+.PP
+Add the directory with newly converted fonts to the configuration
+of X server or font server. For most of the systems this step is
+very straightforward. For \s-1HP\s0\-\s-1UX\s0 it's rather tricky and poorly
+documented, so the file \s-1FONTS\s0.hpux gives a short description.
+.PP
+If you don't have the privileges of the root user, you still can
+configure your private font server. Just use some non-standard
+port number (see \s-1FONTS\s0.hpux for an example, exept that you won't
+need all the \s-1HP\s0\-related stuff on any other system).
+.SH "FILES"
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR/\s0scripts/convert.cfg.sample
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR/\s0scripts/*
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR/README\s0
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR/FONTS\s0
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR\s0/*
+.Ip "\(bu" 2
+\s-1TTF2PT1_BINDIR/\s0ttf2pt1
+.SH "SEE ALSO"
+.Ip "\(bu" 4
+the \fIttf2pt1(1)\fR manpage
+.Ip "\(bu" 4
+the \fIttf2pt1_x2gs(1)\fR manpage
+.Ip "\(bu" 4
+the \fIt1asm(1)\fR manpage
+.SH "BUGS"
+.Sh "Known problems"
+.Ip "\(bu" 4
+One catch is that the X11 Type 1 font library has a rather low limit
+on the font size. Because of this the fonts with  more complicated
+outlines and the enabled hint substitution may not fit into
+this limit. The same applies to the fonts with very complicated
+outlines or with very many glyphs (especially the fonts with
+over 256 glyphs). So you will need to excercise caution with
+these options if you plan using these fonts with X11. Some vendors 
+such as \s-1HP\s0 provide the Type 1 implementation licensed from Adobe 
+which should have no such problem.
+.Sp
+But there is a solution even for the generic X11. A patch located
+in the subdirectory `\f(CWapp/X11\fR\*(R' fixes this problem as well
+as some other minor problems. Its description is provided in
+app/X11/\s-1README\s0.
+.Sp
+To fix the X11 font library, you have to get the X11 sources. I
+can recommend the ftp sites of the XFree86 project ftp://ftp.xfree86.org
+or of the Open Group ftp://ftp.x.org. This patch was made on the sources
+of XFree86 so you may have better success with applying it to the
+XFree86 distribution. After you have got the sources, make sure
+that you can compile them. Then apply the patch as described.
+Make sure that it was applied properly. Compile the sources again
+(actually, you need only the fonts library, the fonts server, and
+possibly the X server). It would be prudent now to save your old
+font library, font server and, possibly, X server. Then install
+the new recently compiled versions of these files. Of course,
+if you know someone who already has compiled these files for the
+same \s-1OS\s0 as yours, you can just copy the binary fles from him.
+.Sp
+Alas, building the X11 system from the source code is not the
+easiest thing in the world and if you have no experience it
+can be quite difficult. In this case just avoid the aforementioned
+features or check each converted font to make sure that it
+works properly.
+.Ip "\(bu" 4
+The Type1 font library from the standard X11 distribution
+does not work on \s-1HP\s0\-\s-1UX\s0 (at least, up to 10.01). The font server
+supplied with \s-1HP\s0\-\s-1UX\s0 up to 10.01 is also broken. Starting from 
+\s-1HP\s0\-\s-1UX\s0 10.20 (I don't know about 10.10) they supply a proprietary font 
+library and the converted fonts work fine with it, provided that
+they are configured properly (see the file \s-1FONTS\s0.hpux).
+.Ip "\(bu" 4
+The \f(CWfonts.scale\fR files created by the older versions of the
+\f(CWttf2pt1\fR installation program (up to release 3.1) have conflicted 
+with the language definitions of the \f(CWXfsft\fR font server and
+parts of it included into XFree86. To overcome this incompatibility
+the never versions creats the \f(CWfonts.scale\fR file describing all the
+fonts as belonging to the \f(CWadobe-fontspecific\fR encoding and
+the \f(CWfonts.alias\fR file with the proper names. The drawback of
+this solution is that \f(CWxlsfonts\fR gives the list of twice more
+fonts. But as a side effect the option \f(CW\fBENFORCEISO\fR\fR in
+`\f(CWconvert.cfg\fR\*(R' is not required for X11 any more.
+.Ip "\(bu" 4
+The conversion script has no support for Eastern multi-plane fonts.
+Contribution of such a support would be welcome.
+
+.rn }` ''
+.IX Title "TTF2PT1_CONVERT 1"
+.IX Name "B<ttf2pt1_convert> - convenience font conversion script"
+
+.IX Header "NAME"
+
+.IX Header "SYNOPSIS"
+
+.IX Header "DESCRIPTION"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Header "FILES"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Header "SEE ALSO"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Header "BUGS"
+
+.IX Subsection "Known problems"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf2pt1_x2gs.1
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf2pt1_x2gs.1	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf2pt1_x2gs.1	(revision 2000)
@@ -0,0 +1,313 @@
+.rn '' }`
+''' $RCSfile: ttf2pt1_x2gs.1,v $$Revision: 1.1 $$Date: 2008-03-12 06:35:44 $
+'''
+''' $Log: not supported by cvs2svn $
+'''
+.de Sh
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp
+.if t .sp .5v
+.if n .sp
+..
+.de Ip
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.de Vb
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve
+.ft R
+
+.fi
+..
+'''
+'''
+'''     Set up \*(-- to give an unbreakable dash;
+'''     string Tr holds user defined translation string.
+'''     Bell System Logo is used as a dummy character.
+'''
+.tr \(*W-|\(bv\*(Tr
+.ie n \{\
+.ds -- \(*W-
+.ds PI pi
+.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+.ds L" ""
+.ds R" ""
+'''   \*(M", \*(S", \*(N" and \*(T" are the equivalent of
+'''   \*(L" and \*(R", except that they are used on ".xx" lines,
+'''   such as .IP and .SH, which do another additional levels of
+'''   double-quote interpretation
+.ds M" """
+.ds S" """
+.ds N" """""
+.ds T" """""
+.ds L' '
+.ds R' '
+.ds M' '
+.ds S' '
+.ds N' '
+.ds T' '
+'br\}
+.el\{\
+.ds -- \(em\|
+.tr \*(Tr
+.ds L" ``
+.ds R" ''
+.ds M" ``
+.ds S" ''
+.ds N" ``
+.ds T" ''
+.ds L' `
+.ds R' '
+.ds M' `
+.ds S' '
+.ds N' `
+.ds T' '
+.ds PI \(*p
+'br\}
+.\"	If the F register is turned on, we'll generate
+.\"	index entries out stderr for the following things:
+.\"		TH	Title 
+.\"		SH	Header
+.\"		Sh	Subsection 
+.\"		Ip	Item
+.\"		X<>	Xref  (embedded
+.\"	Of course, you have to process the output yourself
+.\"	in some meaninful fashion.
+.if \nF \{
+.de IX
+.tm Index:\\$1\t\\n%\t"\\$2"
+..
+.nr % 0
+.rr F
+.\}
+.TH TTF2PT1_X2GS 1 "version 3.4.4" "December 31, 2003" "TTF2PT1 Font Converter"
+.UC
+.if n .hy 0
+.if n .na
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.de CQ          \" put $1 in typewriter font
+.ft CW
+'if n "\c
+'if t \\&\\$1\c
+'if n \\&\\$1\c
+'if n \&"
+\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
+'.ft R
+..
+.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
+.	\" AM - accent mark definitions
+.bd B 3
+.	\" fudge factors for nroff and troff
+.if n \{\
+.	ds #H 0
+.	ds #V .8m
+.	ds #F .3m
+.	ds #[ \f1
+.	ds #] \fP
+.\}
+.if t \{\
+.	ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.	ds #V .6m
+.	ds #F 0
+.	ds #[ \&
+.	ds #] \&
+.\}
+.	\" simple accents for nroff and troff
+.if n \{\
+.	ds ' \&
+.	ds ` \&
+.	ds ^ \&
+.	ds , \&
+.	ds ~ ~
+.	ds ? ?
+.	ds ! !
+.	ds /
+.	ds q
+.\}
+.if t \{\
+.	ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.	ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.	ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.	ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.	ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.	ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
+.	ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
+.	ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.	ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
+.\}
+.	\" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
+.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
+.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
+.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.ds oe o\h'-(\w'o'u*4/10)'e
+.ds Oe O\h'-(\w'O'u*4/10)'E
+.	\" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.	\" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.	ds : e
+.	ds 8 ss
+.	ds v \h'-1'\o'\(aa\(ga'
+.	ds _ \h'-1'^
+.	ds . \h'-1'.
+.	ds 3 3
+.	ds o a
+.	ds d- d\h'-1'\(ga
+.	ds D- D\h'-1'\(hy
+.	ds th \o'bp'
+.	ds Th \o'LP'
+.	ds ae ae
+.	ds Ae AE
+.	ds oe oe
+.	ds Oe OE
+.\}
+.rm #[ #] #H #V #F C
+.SH "NAME"
+\fBttf2pt1_x2gs\fR \- font installer for Ghostscript
+.SH "SYNOPSIS"
+ttf2pt1_x2gs \fB[config-file]\fR
+.SH "DESCRIPTION"
+The fonts generated with \fBttf2pt1\fR work fine with Ghostscript by
+themselves. The script `\fBx2gs\fR\*(R' (or `\fBttf2pt1_x2gs\fR\*(R' when installed
+into a public directory, to avoid name conflicts with other
+programs) links the font files from the X11 direcotry into the Ghostscript 
+directory and automatically creates the description file (\f(CWFontmap\fR) 
+in Ghostscript format.
+.PP
+If the configuration file is not specified as an argument then the file
+`\f(CWconvert.cfg\fR\*(R' in the current directory is used, just like the
+`\f(CWconvert\fR\*(R' script does. Indeed, this configuration file is used for 
+both scripts.
+.PP
+The Ghostscript-related parameters in the configuration file are:
+.PP
+\fB\f(CWDSTDIR\fR\fR \- the X11 font directory used by `\f(CWx2gs\fR\*(R' as the
+source of the fonts. This parameter is common with the X11 
+configuration.
+.PP
+\fB\f(CWGSDIR\fR\fR \- the base directory of Ghostsript. If this
+parameter is set to an empty string then `\f(CWconvert\fR\*(R' won't
+call `\f(CWx2gs\fR\*(R'. So if you want to get only the X11 fonts
+installed then set this parameter to an empty string. This 
+directory may vary on various system, so please check your 
+system and set this value accordingly before running the script.
+.PP
+\fB\f(CWGSFONTDIR\fR\fR \- the font directory of Ghostscript. In the standard
+Ghostscript installation it's a subdirectory of \f(CWGSDIR\fR 
+but some systems may use completely different directories.
+.PP
+\fB\f(CWGSCONFDIR\fR\fR \- the configuration subdirectory of Ghostscript
+that contains the \f(CWFontmap\fR file.
+.PP
+\fB\f(CWINSTALLFONTMAP\fR\fR \- if the value is set to \fB\f(CWYES\fR\fR then 
+install the entries for the new fonts right into the main 
+\f(CWFontmap\fR file. Otherwise just leave the file \f(CWFontmap.ttf\fR 
+in the Ghostscript configuration directory.
+.PP
+After preparing the configuration file run the script. It symbolicaly links 
+all the font files and creates the description file \f(CWFontmap.ttf\fR in 
+\f(CWGSCONDFIR\fR. After that there are two choices. 
+.PP
+If the option \f(CWINSTALLFONTMAP\fR was set to \f(CWYES\fR then 
+the font descriptions are also automatically installed into the
+master \f(CWFontmap\fR file. The script is clever enough to
+detect if it was run multiple times with the same directories
+and if so it replaces the old \f(CWFontmap\fR entries with
+the new ones instead of just accumulating all of them. You
+may also run it multiple times for multiple X11 directories
+and all the results will be properly collected in the \f(CWFontmap\fR.
+But it's your responsibility to watch that the names of the
+font files don't overlap. If the X11 font directory gets
+renamed then you have to remove its font entries from the
+\f(CWFontmap\fR and only after that re-run `\f(CWx2gs\fR\*(R'
+for the new directory. 
+.PP
+On the other hand if the option \f(CWINSTALLFONTMAP\fR was set to 
+\f(CWNO\fR then go to the \f(CWGSCONFDIR\fR directory and insert the 
+contents of \f(CWFontmap.ttf\fR into the \f(CWFontmap\fR file
+manually. This step may be left manual to make the installation
+a little bit more safe. 
+.PP
+After that you may also want to redefine some of the aliases in 
+\f(CWFontmap\fR to refer to the newly installed fonts.
+But the redefinition of the aliases may be dangerous if the width of
+characters in the new font will be different from the old font.
+Alas, there is no visible solution of this problem yet.
+.SH "FILES"
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR/\s0scripts/convert.cfg.sample
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR/\s0scripts/*
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR/README\s0
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR/FONTS\s0
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR\s0/*
+.Ip "\(bu" 2
+\s-1TTF2PT1_BINDIR/\s0ttf2pt1
+.SH "SEE ALSO"
+.Ip "\(bu" 4
+the \fIttf2pt1(1)\fR manpage
+.Ip "\(bu" 4
+the \fIttf2pt1_convert(1)\fR manpage
+.Ip "\(bu" 4
+the \fIt1asm(1)\fR manpage
+
+.rn }` ''
+.IX Title "TTF2PT1_X2GS 1"
+.IX Name "B<ttf2pt1_x2gs> - font installer for Ghostscript"
+
+.IX Header "NAME"
+
+.IX Header "SYNOPSIS"
+
+.IX Header "DESCRIPTION"
+
+.IX Header "FILES"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Header "SEE ALSO"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/COPYRIGHT
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/COPYRIGHT	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/COPYRIGHT	(revision 2000)
@@ -0,0 +1,87 @@
+The following copyright notice applies to all the files provided
+in this distribution unless explicitly noted otherwise
+(the most notable exception being t1asm.c).
+
+  Copyright (c) 1997-2003 by the AUTHORS:
+   Andrew Weeks <ccsaw@bath.ac.uk> 
+   Frank M. Siegert <fms@this.net> 
+   Mark Heath <mheath@netspace.net.au> 
+   Thomas Henlich <thenlich@rcs.urz.tu-dresden.de>
+   Sergey Babkin <babkin@users.sourceforge.net>, <sab123@hotmail.com>
+   Turgut Uyar <uyar@cs.itu.edu.tr>
+   Rihardas Hepas <rch@WriteMe.Com>
+   Szalay Tamas <tomek@elender.hu>
+   Johan Vromans <jvromans@squirrel.nl>
+   Petr Titera <P.Titera@sh.cvut.cz>
+   Lei Wang <lwang@amath8.amt.ac.cn>
+   Chen Xiangyang <chenxy@sun.ihep.ac.cn>
+   Zvezdan Petkovic <z.petkovic@computer.org>
+   Rigel <rigel863@yahoo.com>
+  All rights reserved.
+ 
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+  3. All advertising materials mentioning features or use of this software
+     must display the following acknowledgement:
+       This product includes software developed by the TTF2PT1 Project
+       and its contributors.
+ 
+  THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  SUCH DAMAGE.
+
+For the approximate list of the AUTHORS' responsibilities see the
+project history.
+
+Other contributions to the project are:
+
+Turgut Uyar <uyar@cs.itu.edu.tr>
+ The Unicode translation table for the Turkish language.
+
+Rihardas Hepas <rch@WriteMe.Com>
+ The Unicode translation table for the Baltic languages.
+
+Szalay Tamas <tomek@elender.hu>
+ The Unicode translation table for the Central European languages.
+ 
+Johan Vromans <jvromans@squirrel.nl>
+ The RPM file.
+
+Petr Titera <P.Titera@sh.cvut.cz>
+ The Unicode map format with names, the forced Unicode option.
+
+Frank M. Siegert <frank@this.net>
+ Port to Windows
+
+Lei Wang <lwang@amath8.amt.ac.cn>
+Chen Xiangyang <chenxy@sun.ihep.ac.cn>
+ Translation maps for Chinese fonts.
+
+Zvezdan Petkovic <z.petkovic@computer.org>
+ The Unicode translation tables for the Cyrillic alphabet.
+
+Rigel <rigel863@yahoo.com>
+ Generation of the dvips encoding files, modification to the Chinese maps.
+
+I. Lee Hetherington <ilh@lcs.mit.edu>
+ The Type1 assembler (from the package 't1utils'), its full copyright
+ notice:
+  Copyright (c) 1992 by I. Lee Hetherington, all rights reserved.
+  Permission is hereby granted to use, modify, and distribute this program
+  for any purpose provided this copyright notice and the one below remain
+  intact.
+ 
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/README.html
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/README.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/README.html	(revision 2000)
@@ -0,0 +1,81 @@
+<HTML>
+<HEAD>
+<TITLE>
+The INSTALLATION GUIDE 
+</TITLE>
+</HEAD>
+<BODY>
+Sergey A. Babkin
+<br>
+<A HREF="mailto:babkin@bellatlantic.net">
+&lt;babkin@bellatlantic.net&gt;</A> or <A HREF="mailto:sab123@hotmail.com">&lt;sab123@hotmail.com&gt;</A>
+<p>
+<! 
+(Do not edit this file, it is generated from README.html!!!)
+>
+
+<H3>
+The Translation Tables
+</H3>
+<!
+----------------------
+>
+
+These translation tables are used to translate the Type 1 fonts between
+different encodings of the same language.
+<p>
+
+The file names are supposed to have the suffix <tt>.tbl</tt>. Each file
+describes one encoding, and all the tables for a given language
+are stored in the same directory.
+<p>
+
+The file format is quite simple: just a sequence of rows in
+format
+<p>
+
+<tt>
+&lt;name&gt; &lt;decimal code&gt;
+</tt>
+<p>
+
+The names do not have to conform to any standard, just the same
+glyph must have the same name in all the files for a given language.
+<p>
+
+Not all the codes need to be described in the tables, the codes that
+are not mentioned in the tables are left untranslated. So a file
+of zero length may be used in case when no translation is neccessary.
+<p>
+
+The translation changes only the encoding table of the font and does not 
+rename the glyphs in the font file.
+<p>
+
+<H3>
+Examples
+</H3>
+<!
+--------
+>
+
+The directory `russian' contains the tables for some encodings of the 
+Russian language: KOI-8, IBM CP-866, IBM CP-1251 and just for fun
+ISO-8859/5 (nobody uses it anyways). The tables describe both russian
+letters and table graphics characters (except for CP-1251 for which
+the table graphics is not defined, so the table graphics portion for
+it is just copied from KOI-8). 
+<p>
+
+The file for ISO-8859/1 is just a copy of file for KOI-8. It is neccessary
+because Netscape has rather weird ideas about the documents in
+KOI-8 encoding. The common way to fool Netscape is to set the KOI-8
+fonts for the ISO-8859/1 encoding and set the default encoding
+in Netscape to 8859/1.
+<p>
+
+The directory `latin1' contains an empty table for ISO-8859/1
+because it does not need any translation.
+<p>
+</BODY>
+</HTML>
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/encodings.alias
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/encodings.alias	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/encodings.alias	(revision 2000)
@@ -0,0 +1,4 @@
+# alias real-name
+iso8859-1 koi8-r
+windows-1251 ibm-1251
+cp-866 ibm-866
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/ibm-866.tbl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/ibm-866.tbl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/ibm-866.tbl	(revision 2000)
@@ -0,0 +1,128 @@
+cyr_A 128
+cyr_BE 129
+cyr_CHE 151
+cyr_DE 132
+cyr_E 157
+cyr_EF 148
+cyr_EL 139
+cyr_EM 140
+cyr_EN 141
+cyr_ER 144
+cyr_ES 145
+cyr_GHE 131
+cyr_HA 149
+cyr_HARD_SIGN 154
+cyr_I 136
+cyr_IE 133
+cyr_KA 138
+cyr_O 142
+cyr_PE 143
+cyr_SHA 152
+cyr_SHCHA 153
+cyr_SHORT_I 137
+cyr_SOFT_SIGN 156
+cyr_TE 146
+cyr_TSE 150
+cyr_U 147
+cyr_VE 130
+cyr_YA 159
+cyr_YERU 155
+cyr_IO 240
+cyr_YU 158
+cyr_ZE 135
+cyr_ZHE 134
+cyr_a 160
+cyr_be 161
+cyr_che 231
+cyr_de 164
+cyr_e 237
+cyr_ef 228
+cyr_el 171
+cyr_em 172
+cyr_en 173
+cyr_er 224
+cyr_es 225
+graphic_100pc 219
+graphic_25pc 178
+graphic_50pc 177
+graphic_75pc 176
+graphic_LD 187
+graphic_LR 205
+graphic_LRD 203
+graphic_LRT 202
+graphic_LRTD 206
+graphic_LRd 209
+graphic_LRt 207
+graphic_LRtd 216
+graphic_LT 188
+graphic_LTD 185
+graphic_Ld 184
+graphic_Lt 190
+graphic_Ltd 181
+graphic_RD 201
+graphic_RT 200
+graphic_RTD 204
+graphic_Rd 213
+graphic_Rt 212
+graphic_Rtd 198
+graphic_TD 186
+copyright 252
+degree 248
+graphic_dintegral 245
+graphic_divide 246
+graphic_equal 247
+graphic_fatdot 249
+graphic_ge 242
+graphic_lD 183
+graphic_lT 189
+graphic_lTD 182
+graphic_ld 191
+graphic_le 243
+graphic_leandot 250
+graphic_lefthalf 221
+graphic_lowerhalf 220
+graphic_lr 196
+graphic_lrD 210
+graphic_lrT 208
+graphic_lrTD 215
+graphic_lrd 194
+graphic_lrt 193
+graphic_lrtd 197
+graphic_lt 217
+graphic_ltd 180
+graphic_power2 253
+graphic_rD 214
+graphic_rT 211
+graphic_rTD 199
+graphic_rd 218
+graphic_righthalf 222
+graphic_root 251
+graphic_rt 192
+graphic_rtd 195
+nbspace 255
+graphic_square 254
+graphic_td 179
+graphic_tintegral 244
+graphic_upperhalf 223
+cyr_ghe 163
+cyr_ha 229
+cyr_hard_sign 234
+cyr_i 168
+cyr_ie 165
+cyr_ka 170
+cyr_o 174
+cyr_pe 175
+cyr_sha 232
+cyr_shcha 233
+cyr_short_i 169
+cyr_soft_sign 236
+cyr_te 226
+cyr_tse 230
+cyr_u 227
+cyr_ve 162
+cyr_ya 239
+cyr_yeru 235
+cyr_io 241
+cyr_yu 238
+cyr_ze 167
+cyr_zhe 166
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/koi8-r.tbl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/koi8-r.tbl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/koi8-r.tbl	(revision 2000)
@@ -0,0 +1,128 @@
+cyr_A 225
+cyr_BE 226
+cyr_CHE 254
+cyr_DE 228
+cyr_E 252
+cyr_EF 230
+cyr_EL 236
+cyr_EM 237
+cyr_EN 238
+cyr_ER 242
+cyr_ES 243
+cyr_GHE 231
+cyr_HA 232
+cyr_HARD_SIGN 255
+cyr_I 233
+cyr_IE 229
+cyr_KA 235
+cyr_O 239
+cyr_PE 240
+cyr_SHA 251
+cyr_SHCHA 253
+cyr_SHORT_I 234
+cyr_SOFT_SIGN 248
+cyr_TE 244
+cyr_TSE 227
+cyr_U 245
+cyr_VE 247
+cyr_YA 241
+cyr_YERU 249
+cyr_IO 179
+cyr_YU 224
+cyr_ZE 250
+cyr_ZHE 246
+cyr_a 193
+cyr_be 194
+cyr_che 222
+cyr_de 196
+cyr_e 220
+cyr_ef 198
+cyr_el 204
+cyr_em 205
+cyr_en 206
+cyr_er 210
+cyr_es 211
+graphic_100pc 141
+graphic_25pc 144
+graphic_50pc 145
+graphic_75pc 146
+graphic_LD 168
+graphic_LR 160
+graphic_LRD 184
+graphic_LRT 187
+graphic_LRTD 190
+graphic_LRd 182
+graphic_LRt 185
+graphic_LRtd 188
+graphic_LT 174
+graphic_LTD 181
+graphic_Ld 166
+graphic_Lt 172
+graphic_Ltd 178
+graphic_RD 165
+graphic_RT 171
+graphic_RTD 177
+graphic_Rd 162
+graphic_Rt 170
+graphic_Rtd 175
+graphic_TD 161
+copyright 191
+degree 156
+graphic_dintegral 155
+graphic_divide 159
+graphic_equal 151
+graphic_fatdot 149
+graphic_ge 153
+graphic_lD 167
+graphic_lT 173
+graphic_lTD 180
+graphic_ld 131
+graphic_le 152
+graphic_leandot 158
+graphic_lefthalf 142
+graphic_lowerhalf 140
+graphic_lr 128
+graphic_lrD 183
+graphic_lrT 186
+graphic_lrTD 189
+graphic_lrd 136
+graphic_lrt 137
+graphic_lrtd 138
+graphic_lt 133
+graphic_ltd 135
+graphic_power2 157
+graphic_rD 164
+graphic_rT 169
+graphic_rTD 176
+graphic_rd 130
+graphic_righthalf 143
+graphic_root 150
+graphic_rt 132
+graphic_rtd 134
+nbspace 154
+graphic_square 148
+graphic_td 129
+graphic_tintegral 147
+graphic_upperhalf 139
+cyr_ghe 199
+cyr_ha 200
+cyr_hard_sign 223
+cyr_i 201
+cyr_ie 197
+cyr_ka 203
+cyr_o 207
+cyr_pe 208
+cyr_sha 219
+cyr_shcha 221
+cyr_short_i 202
+cyr_soft_sign 216
+cyr_te 212
+cyr_tse 195
+cyr_u 213
+cyr_ve 215
+cyr_ya 209
+cyr_yeru 217
+cyr_io 163
+cyr_yu 192
+cyr_ze 218
+cyr_zhe 214
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/iso8859-5.tbl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/iso8859-5.tbl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/iso8859-5.tbl	(revision 2000)
@@ -0,0 +1,127 @@
+cyr_GHE_UPTURN 128
+cyr_ghe_upturn 129
+quotesinglbase 130
+currency 131
+quotedblbase 132
+ellipsis 133
+dagger 134
+daggerdbl 135
+Euro 136
+perthousand 137 
+brokenbar 138
+guilsinglleft 139
+copyright 140
+guillemotleft 141
+notsign 142
+registered 143
+degree 144
+quotesinglleft 145
+quotesinglright 146
+quotedblleft 147
+quotedblright 148
+bullet 149
+endash 150
+emdash 151
+trademark 153
+plusminus 154
+guilsinglright 155
+mu 156
+paragraph 157
+periodcentered 158
+guillemotright 159
+nbspace 160
+cyr_IO 161
+cyr_DJE 162
+cyr_GJE 163
+cyr_UKRAINIAN_IE 164
+cyr_DZE 165
+cyr_BYELORUSSIAN_UKRAINIAN_I 166
+cyr_YI 167
+cyr_JE 168
+cyr_LJE 169
+cyr_NJE 170
+cyr_TSHE 171
+cyr_KJE 172
+hyphen 173
+cyr_SHORT_U 174
+cyr_DZHE 175
+cyr_A 176
+cyr_BE 177
+cyr_VE 178
+cyr_GHE 179
+cyr_DE 180
+cyr_IE 181
+cyr_ZHE 182
+cyr_ZE 183
+cyr_I 184
+cyr_SHORT_I 185
+cyr_KA 186
+cyr_EL 187
+cyr_EM 188
+cyr_EN 189
+cyr_O 190
+cyr_PE 191
+cyr_ER 192
+cyr_ES 193
+cyr_TE 194
+cyr_U 195
+cyr_EF 196
+cyr_HA 197
+cyr_TSE 198
+cyr_CHE 199
+cyr_SHA 200
+cyr_SHCHA 201
+cyr_HARD_SIGN 202
+cyr_YERU 203
+cyr_SOFT_SIGN 204
+cyr_E 205
+cyr_YU 206
+cyr_YA 207
+cyr_a 208
+cyr_be 209
+cyr_ve 210
+cyr_ghe 211
+cyr_de 212
+cyr_ie 213
+cyr_zhe 214
+cyr_ze 215
+cyr_i 216
+cyr_short_i 217
+cyr_ka 218
+cyr_el 219
+cyr_em 220
+cyr_en 221
+cyr_o 222
+cyr_pe 223
+cyr_er 224
+cyr_es 225
+cyr_te 226
+cyr_u 227
+cyr_ef 228
+cyr_ha 229
+cyr_tse 230
+cyr_che 231
+cyr_sha 232
+cyr_shcha 233
+cyr_hard_sign 234
+cyr_yeru 235
+cyr_soft_sign 236
+cyr_e 237
+cyr_yu 238
+cyr_ya 239
+numero 240
+cyr_io 241
+cyr_dje 242
+cyr_gje 243
+cyr_ukrainian_ie 244
+cyr_dze 245
+cyr_byelorussian_ukrainian_i 246
+cyr_yi 247
+cyr_je 248
+cyr_lje 249
+cyr_nje 250
+cyr_tshe 251
+cyr_kje 252
+section 253
+cyr_short_u 254
+cyr_dzhe 255
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/README
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/README	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/README	(revision 2000)
@@ -0,0 +1,3 @@
+These files are copies of thos provided for the language "cyrillic"
+and are provided for compatibility purposes only, please
+use the language "cyrillic" instead.
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/ibm-1251.tbl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/ibm-1251.tbl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/bulgarian/ibm-1251.tbl	(revision 2000)
@@ -0,0 +1,127 @@
+cyr_DJE 128
+cyr_GJE 129
+quotesinglbase 130
+cyr_gje 131
+quotedblbase 132
+ellipsis 133
+dagger 134
+daggerdbl 135
+Euro 136
+perthousand 137 
+cyr_LJE 138
+guilsinglleft 139
+cyr_NJE 140
+cyr_KJE 141
+cyr_TSHE 142
+cyr_DZHE 143
+cyr_dje 144
+quotesinglleft 145
+quotesinglright 146
+quotedblleft 147
+quotedblright 148
+bullet 149
+endash 150
+emdash 151
+trademark 153
+cyr_lje 154
+guilsinglright 155
+cyr_nje 156
+cyr_kje 157
+cyr_tshe 158
+cyr_dzhe 159
+nbspace 160
+cyr_SHORT_U 161
+cyr_short_u 162
+cyr_JE 163
+currency 164
+cyr_GHE_UPTURN 165
+brokenbar 166
+section 167
+cyr_IO 168
+copyright 169
+cyr_UKRAINIAN_IE 170
+guillemotleft 171
+notsign 172
+hyphen 173
+registered 174
+cyr_YI 175
+degree 176
+plusminus 177
+cyr_BYELORUSSIAN_UKRAINIAN_I 178
+cyr_byelorussian_ukrainian_i 179
+cyr_ghe_upturn 180
+mu 181
+paragraph 182
+periodcentered 183
+cyr_io 184
+numero 185
+cyr_ukrainian_ie 186
+guillemotright 187
+cyr_je 188
+cyr_DZE 189
+cyr_dze 190
+cyr_yi 191
+cyr_A 192
+cyr_BE 193
+cyr_VE 194
+cyr_GHE 195
+cyr_DE 196
+cyr_IE 197
+cyr_ZHE 198
+cyr_ZE 199
+cyr_I 200
+cyr_SHORT_I 201
+cyr_KA 202
+cyr_EL 203
+cyr_EM 204
+cyr_EN 205
+cyr_O 206
+cyr_PE 207
+cyr_ER 208
+cyr_ES 209
+cyr_TE 210
+cyr_U 211
+cyr_EF 212
+cyr_HA 213
+cyr_TSE 214
+cyr_CHE 215
+cyr_SHA 216
+cyr_SHCHA 217
+cyr_HARD_SIGN 218
+cyr_YERU 219
+cyr_SOFT_SIGN 220
+cyr_E 221
+cyr_YU 222
+cyr_YA 223
+cyr_a 224
+cyr_be 225
+cyr_ve 226
+cyr_ghe 227
+cyr_de 228
+cyr_ie 229
+cyr_zhe 230
+cyr_ze 231
+cyr_i 232
+cyr_short_i 233
+cyr_ka 234
+cyr_el 235
+cyr_em 236
+cyr_en 237
+cyr_o 238
+cyr_pe 239
+cyr_er 240
+cyr_es 241
+cyr_te 242
+cyr_u 243
+cyr_ef 244
+cyr_ha 245
+cyr_tse 246
+cyr_che 247
+cyr_sha 248
+cyr_shcha 249
+cyr_hard_sign 250
+cyr_yeru 251
+cyr_soft_sign 252
+cyr_e 253
+cyr_yu 254
+cyr_ya 255
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/encodings.alias
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/encodings.alias	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/encodings.alias	(revision 2000)
@@ -0,0 +1,4 @@
+# alias real-name
+iso8859-1 koi8-r
+windows-1251 ibm-1251
+cp-866 ibm-866
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/ibm-866.tbl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/ibm-866.tbl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/ibm-866.tbl	(revision 2000)
@@ -0,0 +1,128 @@
+cyr_A 128
+cyr_BE 129
+cyr_CHE 151
+cyr_DE 132
+cyr_E 157
+cyr_EF 148
+cyr_EL 139
+cyr_EM 140
+cyr_EN 141
+cyr_ER 144
+cyr_ES 145
+cyr_GHE 131
+cyr_HA 149
+cyr_HARD_SIGN 154
+cyr_I 136
+cyr_IE 133
+cyr_KA 138
+cyr_O 142
+cyr_PE 143
+cyr_SHA 152
+cyr_SHCHA 153
+cyr_SHORT_I 137
+cyr_SOFT_SIGN 156
+cyr_TE 146
+cyr_TSE 150
+cyr_U 147
+cyr_VE 130
+cyr_YA 159
+cyr_YERU 155
+cyr_IO 240
+cyr_YU 158
+cyr_ZE 135
+cyr_ZHE 134
+cyr_a 160
+cyr_be 161
+cyr_che 231
+cyr_de 164
+cyr_e 237
+cyr_ef 228
+cyr_el 171
+cyr_em 172
+cyr_en 173
+cyr_er 224
+cyr_es 225
+graphic_100pc 219
+graphic_25pc 178
+graphic_50pc 177
+graphic_75pc 176
+graphic_LD 187
+graphic_LR 205
+graphic_LRD 203
+graphic_LRT 202
+graphic_LRTD 206
+graphic_LRd 209
+graphic_LRt 207
+graphic_LRtd 216
+graphic_LT 188
+graphic_LTD 185
+graphic_Ld 184
+graphic_Lt 190
+graphic_Ltd 181
+graphic_RD 201
+graphic_RT 200
+graphic_RTD 204
+graphic_Rd 213
+graphic_Rt 212
+graphic_Rtd 198
+graphic_TD 186
+copyright 252
+degree 248
+graphic_dintegral 245
+graphic_divide 246
+graphic_equal 247
+graphic_fatdot 249
+graphic_ge 242
+graphic_lD 183
+graphic_lT 189
+graphic_lTD 182
+graphic_ld 191
+graphic_le 243
+graphic_leandot 250
+graphic_lefthalf 221
+graphic_lowerhalf 220
+graphic_lr 196
+graphic_lrD 210
+graphic_lrT 208
+graphic_lrTD 215
+graphic_lrd 194
+graphic_lrt 193
+graphic_lrtd 197
+graphic_lt 217
+graphic_ltd 180
+graphic_power2 253
+graphic_rD 214
+graphic_rT 211
+graphic_rTD 199
+graphic_rd 218
+graphic_righthalf 222
+graphic_root 251
+graphic_rt 192
+graphic_rtd 195
+nbspace 255
+graphic_square 254
+graphic_td 179
+graphic_tintegral 244
+graphic_upperhalf 223
+cyr_ghe 163
+cyr_ha 229
+cyr_hard_sign 234
+cyr_i 168
+cyr_ie 165
+cyr_ka 170
+cyr_o 174
+cyr_pe 175
+cyr_sha 232
+cyr_shcha 233
+cyr_short_i 169
+cyr_soft_sign 236
+cyr_te 226
+cyr_tse 230
+cyr_u 227
+cyr_ve 162
+cyr_ya 239
+cyr_yeru 235
+cyr_io 241
+cyr_yu 238
+cyr_ze 167
+cyr_zhe 166
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/koi8-r.tbl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/koi8-r.tbl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/koi8-r.tbl	(revision 2000)
@@ -0,0 +1,128 @@
+cyr_A 225
+cyr_BE 226
+cyr_CHE 254
+cyr_DE 228
+cyr_E 252
+cyr_EF 230
+cyr_EL 236
+cyr_EM 237
+cyr_EN 238
+cyr_ER 242
+cyr_ES 243
+cyr_GHE 231
+cyr_HA 232
+cyr_HARD_SIGN 255
+cyr_I 233
+cyr_IE 229
+cyr_KA 235
+cyr_O 239
+cyr_PE 240
+cyr_SHA 251
+cyr_SHCHA 253
+cyr_SHORT_I 234
+cyr_SOFT_SIGN 248
+cyr_TE 244
+cyr_TSE 227
+cyr_U 245
+cyr_VE 247
+cyr_YA 241
+cyr_YERU 249
+cyr_IO 179
+cyr_YU 224
+cyr_ZE 250
+cyr_ZHE 246
+cyr_a 193
+cyr_be 194
+cyr_che 222
+cyr_de 196
+cyr_e 220
+cyr_ef 198
+cyr_el 204
+cyr_em 205
+cyr_en 206
+cyr_er 210
+cyr_es 211
+graphic_100pc 141
+graphic_25pc 144
+graphic_50pc 145
+graphic_75pc 146
+graphic_LD 168
+graphic_LR 160
+graphic_LRD 184
+graphic_LRT 187
+graphic_LRTD 190
+graphic_LRd 182
+graphic_LRt 185
+graphic_LRtd 188
+graphic_LT 174
+graphic_LTD 181
+graphic_Ld 166
+graphic_Lt 172
+graphic_Ltd 178
+graphic_RD 165
+graphic_RT 171
+graphic_RTD 177
+graphic_Rd 162
+graphic_Rt 170
+graphic_Rtd 175
+graphic_TD 161
+copyright 191
+degree 156
+graphic_dintegral 155
+graphic_divide 159
+graphic_equal 151
+graphic_fatdot 149
+graphic_ge 153
+graphic_lD 167
+graphic_lT 173
+graphic_lTD 180
+graphic_ld 131
+graphic_le 152
+graphic_leandot 158
+graphic_lefthalf 142
+graphic_lowerhalf 140
+graphic_lr 128
+graphic_lrD 183
+graphic_lrT 186
+graphic_lrTD 189
+graphic_lrd 136
+graphic_lrt 137
+graphic_lrtd 138
+graphic_lt 133
+graphic_ltd 135
+graphic_power2 157
+graphic_rD 164
+graphic_rT 169
+graphic_rTD 176
+graphic_rd 130
+graphic_righthalf 143
+graphic_root 150
+graphic_rt 132
+graphic_rtd 134
+nbspace 154
+graphic_square 148
+graphic_td 129
+graphic_tintegral 147
+graphic_upperhalf 139
+cyr_ghe 199
+cyr_ha 200
+cyr_hard_sign 223
+cyr_i 201
+cyr_ie 197
+cyr_ka 203
+cyr_o 207
+cyr_pe 208
+cyr_sha 219
+cyr_shcha 221
+cyr_short_i 202
+cyr_soft_sign 216
+cyr_te 212
+cyr_tse 195
+cyr_u 213
+cyr_ve 215
+cyr_ya 209
+cyr_yeru 217
+cyr_io 163
+cyr_yu 192
+cyr_ze 218
+cyr_zhe 214
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/iso8859-5.tbl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/iso8859-5.tbl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/iso8859-5.tbl	(revision 2000)
@@ -0,0 +1,127 @@
+cyr_GHE_UPTURN 128
+cyr_ghe_upturn 129
+quotesinglbase 130
+currency 131
+quotedblbase 132
+ellipsis 133
+dagger 134
+daggerdbl 135
+Euro 136
+perthousand 137 
+brokenbar 138
+guilsinglleft 139
+copyright 140
+guillemotleft 141
+notsign 142
+registered 143
+degree 144
+quotesinglleft 145
+quotesinglright 146
+quotedblleft 147
+quotedblright 148
+bullet 149
+endash 150
+emdash 151
+trademark 153
+plusminus 154
+guilsinglright 155
+mu 156
+paragraph 157
+periodcentered 158
+guillemotright 159
+nbspace 160
+cyr_IO 161
+cyr_DJE 162
+cyr_GJE 163
+cyr_UKRAINIAN_IE 164
+cyr_DZE 165
+cyr_BYELORUSSIAN_UKRAINIAN_I 166
+cyr_YI 167
+cyr_JE 168
+cyr_LJE 169
+cyr_NJE 170
+cyr_TSHE 171
+cyr_KJE 172
+hyphen 173
+cyr_SHORT_U 174
+cyr_DZHE 175
+cyr_A 176
+cyr_BE 177
+cyr_VE 178
+cyr_GHE 179
+cyr_DE 180
+cyr_IE 181
+cyr_ZHE 182
+cyr_ZE 183
+cyr_I 184
+cyr_SHORT_I 185
+cyr_KA 186
+cyr_EL 187
+cyr_EM 188
+cyr_EN 189
+cyr_O 190
+cyr_PE 191
+cyr_ER 192
+cyr_ES 193
+cyr_TE 194
+cyr_U 195
+cyr_EF 196
+cyr_HA 197
+cyr_TSE 198
+cyr_CHE 199
+cyr_SHA 200
+cyr_SHCHA 201
+cyr_HARD_SIGN 202
+cyr_YERU 203
+cyr_SOFT_SIGN 204
+cyr_E 205
+cyr_YU 206
+cyr_YA 207
+cyr_a 208
+cyr_be 209
+cyr_ve 210
+cyr_ghe 211
+cyr_de 212
+cyr_ie 213
+cyr_zhe 214
+cyr_ze 215
+cyr_i 216
+cyr_short_i 217
+cyr_ka 218
+cyr_el 219
+cyr_em 220
+cyr_en 221
+cyr_o 222
+cyr_pe 223
+cyr_er 224
+cyr_es 225
+cyr_te 226
+cyr_u 227
+cyr_ef 228
+cyr_ha 229
+cyr_tse 230
+cyr_che 231
+cyr_sha 232
+cyr_shcha 233
+cyr_hard_sign 234
+cyr_yeru 235
+cyr_soft_sign 236
+cyr_e 237
+cyr_yu 238
+cyr_ya 239
+numero 240
+cyr_io 241
+cyr_dje 242
+cyr_gje 243
+cyr_ukrainian_ie 244
+cyr_dze 245
+cyr_byelorussian_ukrainian_i 246
+cyr_yi 247
+cyr_je 248
+cyr_lje 249
+cyr_nje 250
+cyr_tshe 251
+cyr_kje 252
+section 253
+cyr_short_u 254
+cyr_dzhe 255
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/README
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/README	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/README	(revision 2000)
@@ -0,0 +1,3 @@
+These files are copies of thos provided for the language "cyrillic"
+and are provided for compatibility purposes only, please
+use the language "cyrillic" instead.
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/ibm-1251.tbl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/ibm-1251.tbl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/russian/ibm-1251.tbl	(revision 2000)
@@ -0,0 +1,127 @@
+cyr_DJE 128
+cyr_GJE 129
+quotesinglbase 130
+cyr_gje 131
+quotedblbase 132
+ellipsis 133
+dagger 134
+daggerdbl 135
+Euro 136
+perthousand 137 
+cyr_LJE 138
+guilsinglleft 139
+cyr_NJE 140
+cyr_KJE 141
+cyr_TSHE 142
+cyr_DZHE 143
+cyr_dje 144
+quotesinglleft 145
+quotesinglright 146
+quotedblleft 147
+quotedblright 148
+bullet 149
+endash 150
+emdash 151
+trademark 153
+cyr_lje 154
+guilsinglright 155
+cyr_nje 156
+cyr_kje 157
+cyr_tshe 158
+cyr_dzhe 159
+nbspace 160
+cyr_SHORT_U 161
+cyr_short_u 162
+cyr_JE 163
+currency 164
+cyr_GHE_UPTURN 165
+brokenbar 166
+section 167
+cyr_IO 168
+copyright 169
+cyr_UKRAINIAN_IE 170
+guillemotleft 171
+notsign 172
+hyphen 173
+registered 174
+cyr_YI 175
+degree 176
+plusminus 177
+cyr_BYELORUSSIAN_UKRAINIAN_I 178
+cyr_byelorussian_ukrainian_i 179
+cyr_ghe_upturn 180
+mu 181
+paragraph 182
+periodcentered 183
+cyr_io 184
+numero 185
+cyr_ukrainian_ie 186
+guillemotright 187
+cyr_je 188
+cyr_DZE 189
+cyr_dze 190
+cyr_yi 191
+cyr_A 192
+cyr_BE 193
+cyr_VE 194
+cyr_GHE 195
+cyr_DE 196
+cyr_IE 197
+cyr_ZHE 198
+cyr_ZE 199
+cyr_I 200
+cyr_SHORT_I 201
+cyr_KA 202
+cyr_EL 203
+cyr_EM 204
+cyr_EN 205
+cyr_O 206
+cyr_PE 207
+cyr_ER 208
+cyr_ES 209
+cyr_TE 210
+cyr_U 211
+cyr_EF 212
+cyr_HA 213
+cyr_TSE 214
+cyr_CHE 215
+cyr_SHA 216
+cyr_SHCHA 217
+cyr_HARD_SIGN 218
+cyr_YERU 219
+cyr_SOFT_SIGN 220
+cyr_E 221
+cyr_YU 222
+cyr_YA 223
+cyr_a 224
+cyr_be 225
+cyr_ve 226
+cyr_ghe 227
+cyr_de 228
+cyr_ie 229
+cyr_zhe 230
+cyr_ze 231
+cyr_i 232
+cyr_short_i 233
+cyr_ka 234
+cyr_el 235
+cyr_em 236
+cyr_en 237
+cyr_o 238
+cyr_pe 239
+cyr_er 240
+cyr_es 241
+cyr_te 242
+cyr_u 243
+cyr_ef 244
+cyr_ha 245
+cyr_tse 246
+cyr_che 247
+cyr_sha 248
+cyr_shcha 249
+cyr_hard_sign 250
+cyr_yeru 251
+cyr_soft_sign 252
+cyr_e 253
+cyr_yu 254
+cyr_ya 255
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/encodings.alias
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/encodings.alias	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/encodings.alias	(revision 2000)
@@ -0,0 +1,4 @@
+# alias real-name
+iso8859-1 koi8-r
+windows-1251 ibm-1251
+cp-866 ibm-866
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/ibm-866.tbl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/ibm-866.tbl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/ibm-866.tbl	(revision 2000)
@@ -0,0 +1,128 @@
+cyr_A 128
+cyr_BE 129
+cyr_CHE 151
+cyr_DE 132
+cyr_E 157
+cyr_EF 148
+cyr_EL 139
+cyr_EM 140
+cyr_EN 141
+cyr_ER 144
+cyr_ES 145
+cyr_GHE 131
+cyr_HA 149
+cyr_HARD_SIGN 154
+cyr_I 136
+cyr_IE 133
+cyr_KA 138
+cyr_O 142
+cyr_PE 143
+cyr_SHA 152
+cyr_SHCHA 153
+cyr_SHORT_I 137
+cyr_SOFT_SIGN 156
+cyr_TE 146
+cyr_TSE 150
+cyr_U 147
+cyr_VE 130
+cyr_YA 159
+cyr_YERU 155
+cyr_IO 240
+cyr_YU 158
+cyr_ZE 135
+cyr_ZHE 134
+cyr_a 160
+cyr_be 161
+cyr_che 231
+cyr_de 164
+cyr_e 237
+cyr_ef 228
+cyr_el 171
+cyr_em 172
+cyr_en 173
+cyr_er 224
+cyr_es 225
+graphic_100pc 219
+graphic_25pc 178
+graphic_50pc 177
+graphic_75pc 176
+graphic_LD 187
+graphic_LR 205
+graphic_LRD 203
+graphic_LRT 202
+graphic_LRTD 206
+graphic_LRd 209
+graphic_LRt 207
+graphic_LRtd 216
+graphic_LT 188
+graphic_LTD 185
+graphic_Ld 184
+graphic_Lt 190
+graphic_Ltd 181
+graphic_RD 201
+graphic_RT 200
+graphic_RTD 204
+graphic_Rd 213
+graphic_Rt 212
+graphic_Rtd 198
+graphic_TD 186
+copyright 252
+degree 248
+graphic_dintegral 245
+graphic_divide 246
+graphic_equal 247
+graphic_fatdot 249
+graphic_ge 242
+graphic_lD 183
+graphic_lT 189
+graphic_lTD 182
+graphic_ld 191
+graphic_le 243
+graphic_leandot 250
+graphic_lefthalf 221
+graphic_lowerhalf 220
+graphic_lr 196
+graphic_lrD 210
+graphic_lrT 208
+graphic_lrTD 215
+graphic_lrd 194
+graphic_lrt 193
+graphic_lrtd 197
+graphic_lt 217
+graphic_ltd 180
+graphic_power2 253
+graphic_rD 214
+graphic_rT 211
+graphic_rTD 199
+graphic_rd 218
+graphic_righthalf 222
+graphic_root 251
+graphic_rt 192
+graphic_rtd 195
+nbspace 255
+graphic_square 254
+graphic_td 179
+graphic_tintegral 244
+graphic_upperhalf 223
+cyr_ghe 163
+cyr_ha 229
+cyr_hard_sign 234
+cyr_i 168
+cyr_ie 165
+cyr_ka 170
+cyr_o 174
+cyr_pe 175
+cyr_sha 232
+cyr_shcha 233
+cyr_short_i 169
+cyr_soft_sign 236
+cyr_te 226
+cyr_tse 230
+cyr_u 227
+cyr_ve 162
+cyr_ya 239
+cyr_yeru 235
+cyr_io 241
+cyr_yu 238
+cyr_ze 167
+cyr_zhe 166
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/koi8-r.tbl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/koi8-r.tbl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/koi8-r.tbl	(revision 2000)
@@ -0,0 +1,128 @@
+cyr_A 225
+cyr_BE 226
+cyr_CHE 254
+cyr_DE 228
+cyr_E 252
+cyr_EF 230
+cyr_EL 236
+cyr_EM 237
+cyr_EN 238
+cyr_ER 242
+cyr_ES 243
+cyr_GHE 231
+cyr_HA 232
+cyr_HARD_SIGN 255
+cyr_I 233
+cyr_IE 229
+cyr_KA 235
+cyr_O 239
+cyr_PE 240
+cyr_SHA 251
+cyr_SHCHA 253
+cyr_SHORT_I 234
+cyr_SOFT_SIGN 248
+cyr_TE 244
+cyr_TSE 227
+cyr_U 245
+cyr_VE 247
+cyr_YA 241
+cyr_YERU 249
+cyr_IO 179
+cyr_YU 224
+cyr_ZE 250
+cyr_ZHE 246
+cyr_a 193
+cyr_be 194
+cyr_che 222
+cyr_de 196
+cyr_e 220
+cyr_ef 198
+cyr_el 204
+cyr_em 205
+cyr_en 206
+cyr_er 210
+cyr_es 211
+graphic_100pc 141
+graphic_25pc 144
+graphic_50pc 145
+graphic_75pc 146
+graphic_LD 168
+graphic_LR 160
+graphic_LRD 184
+graphic_LRT 187
+graphic_LRTD 190
+graphic_LRd 182
+graphic_LRt 185
+graphic_LRtd 188
+graphic_LT 174
+graphic_LTD 181
+graphic_Ld 166
+graphic_Lt 172
+graphic_Ltd 178
+graphic_RD 165
+graphic_RT 171
+graphic_RTD 177
+graphic_Rd 162
+graphic_Rt 170
+graphic_Rtd 175
+graphic_TD 161
+copyright 191
+degree 156
+graphic_dintegral 155
+graphic_divide 159
+graphic_equal 151
+graphic_fatdot 149
+graphic_ge 153
+graphic_lD 167
+graphic_lT 173
+graphic_lTD 180
+graphic_ld 131
+graphic_le 152
+graphic_leandot 158
+graphic_lefthalf 142
+graphic_lowerhalf 140
+graphic_lr 128
+graphic_lrD 183
+graphic_lrT 186
+graphic_lrTD 189
+graphic_lrd 136
+graphic_lrt 137
+graphic_lrtd 138
+graphic_lt 133
+graphic_ltd 135
+graphic_power2 157
+graphic_rD 164
+graphic_rT 169
+graphic_rTD 176
+graphic_rd 130
+graphic_righthalf 143
+graphic_root 150
+graphic_rt 132
+graphic_rtd 134
+nbspace 154
+graphic_square 148
+graphic_td 129
+graphic_tintegral 147
+graphic_upperhalf 139
+cyr_ghe 199
+cyr_ha 200
+cyr_hard_sign 223
+cyr_i 201
+cyr_ie 197
+cyr_ka 203
+cyr_o 207
+cyr_pe 208
+cyr_sha 219
+cyr_shcha 221
+cyr_short_i 202
+cyr_soft_sign 216
+cyr_te 212
+cyr_tse 195
+cyr_u 213
+cyr_ve 215
+cyr_ya 209
+cyr_yeru 217
+cyr_io 163
+cyr_yu 192
+cyr_ze 218
+cyr_zhe 214
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/iso8859-5.tbl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/iso8859-5.tbl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/iso8859-5.tbl	(revision 2000)
@@ -0,0 +1,127 @@
+cyr_GHE_UPTURN 128
+cyr_ghe_upturn 129
+quotesinglbase 130
+currency 131
+quotedblbase 132
+ellipsis 133
+dagger 134
+daggerdbl 135
+Euro 136
+perthousand 137 
+brokenbar 138
+guilsinglleft 139
+copyright 140
+guillemotleft 141
+notsign 142
+registered 143
+degree 144
+quotesinglleft 145
+quotesinglright 146
+quotedblleft 147
+quotedblright 148
+bullet 149
+endash 150
+emdash 151
+trademark 153
+plusminus 154
+guilsinglright 155
+mu 156
+paragraph 157
+periodcentered 158
+guillemotright 159
+nbspace 160
+cyr_IO 161
+cyr_DJE 162
+cyr_GJE 163
+cyr_UKRAINIAN_IE 164
+cyr_DZE 165
+cyr_BYELORUSSIAN_UKRAINIAN_I 166
+cyr_YI 167
+cyr_JE 168
+cyr_LJE 169
+cyr_NJE 170
+cyr_TSHE 171
+cyr_KJE 172
+hyphen 173
+cyr_SHORT_U 174
+cyr_DZHE 175
+cyr_A 176
+cyr_BE 177
+cyr_VE 178
+cyr_GHE 179
+cyr_DE 180
+cyr_IE 181
+cyr_ZHE 182
+cyr_ZE 183
+cyr_I 184
+cyr_SHORT_I 185
+cyr_KA 186
+cyr_EL 187
+cyr_EM 188
+cyr_EN 189
+cyr_O 190
+cyr_PE 191
+cyr_ER 192
+cyr_ES 193
+cyr_TE 194
+cyr_U 195
+cyr_EF 196
+cyr_HA 197
+cyr_TSE 198
+cyr_CHE 199
+cyr_SHA 200
+cyr_SHCHA 201
+cyr_HARD_SIGN 202
+cyr_YERU 203
+cyr_SOFT_SIGN 204
+cyr_E 205
+cyr_YU 206
+cyr_YA 207
+cyr_a 208
+cyr_be 209
+cyr_ve 210
+cyr_ghe 211
+cyr_de 212
+cyr_ie 213
+cyr_zhe 214
+cyr_ze 215
+cyr_i 216
+cyr_short_i 217
+cyr_ka 218
+cyr_el 219
+cyr_em 220
+cyr_en 221
+cyr_o 222
+cyr_pe 223
+cyr_er 224
+cyr_es 225
+cyr_te 226
+cyr_u 227
+cyr_ef 228
+cyr_ha 229
+cyr_tse 230
+cyr_che 231
+cyr_sha 232
+cyr_shcha 233
+cyr_hard_sign 234
+cyr_yeru 235
+cyr_soft_sign 236
+cyr_e 237
+cyr_yu 238
+cyr_ya 239
+numero 240
+cyr_io 241
+cyr_dje 242
+cyr_gje 243
+cyr_ukrainian_ie 244
+cyr_dze 245
+cyr_byelorussian_ukrainian_i 246
+cyr_yi 247
+cyr_je 248
+cyr_lje 249
+cyr_nje 250
+cyr_tshe 251
+cyr_kje 252
+section 253
+cyr_short_u 254
+cyr_dzhe 255
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/ibm-1251.tbl
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/ibm-1251.tbl	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/cyrillic/ibm-1251.tbl	(revision 2000)
@@ -0,0 +1,127 @@
+cyr_DJE 128
+cyr_GJE 129
+quotesinglbase 130
+cyr_gje 131
+quotedblbase 132
+ellipsis 133
+dagger 134
+daggerdbl 135
+Euro 136
+perthousand 137 
+cyr_LJE 138
+guilsinglleft 139
+cyr_NJE 140
+cyr_KJE 141
+cyr_TSHE 142
+cyr_DZHE 143
+cyr_dje 144
+quotesinglleft 145
+quotesinglright 146
+quotedblleft 147
+quotedblright 148
+bullet 149
+endash 150
+emdash 151
+trademark 153
+cyr_lje 154
+guilsinglright 155
+cyr_nje 156
+cyr_kje 157
+cyr_tshe 158
+cyr_dzhe 159
+nbspace 160
+cyr_SHORT_U 161
+cyr_short_u 162
+cyr_JE 163
+currency 164
+cyr_GHE_UPTURN 165
+brokenbar 166
+section 167
+cyr_IO 168
+copyright 169
+cyr_UKRAINIAN_IE 170
+guillemotleft 171
+notsign 172
+hyphen 173
+registered 174
+cyr_YI 175
+degree 176
+plusminus 177
+cyr_BYELORUSSIAN_UKRAINIAN_I 178
+cyr_byelorussian_ukrainian_i 179
+cyr_ghe_upturn 180
+mu 181
+paragraph 182
+periodcentered 183
+cyr_io 184
+numero 185
+cyr_ukrainian_ie 186
+guillemotright 187
+cyr_je 188
+cyr_DZE 189
+cyr_dze 190
+cyr_yi 191
+cyr_A 192
+cyr_BE 193
+cyr_VE 194
+cyr_GHE 195
+cyr_DE 196
+cyr_IE 197
+cyr_ZHE 198
+cyr_ZE 199
+cyr_I 200
+cyr_SHORT_I 201
+cyr_KA 202
+cyr_EL 203
+cyr_EM 204
+cyr_EN 205
+cyr_O 206
+cyr_PE 207
+cyr_ER 208
+cyr_ES 209
+cyr_TE 210
+cyr_U 211
+cyr_EF 212
+cyr_HA 213
+cyr_TSE 214
+cyr_CHE 215
+cyr_SHA 216
+cyr_SHCHA 217
+cyr_HARD_SIGN 218
+cyr_YERU 219
+cyr_SOFT_SIGN 220
+cyr_E 221
+cyr_YU 222
+cyr_YA 223
+cyr_a 224
+cyr_be 225
+cyr_ve 226
+cyr_ghe 227
+cyr_de 228
+cyr_ie 229
+cyr_zhe 230
+cyr_ze 231
+cyr_i 232
+cyr_short_i 233
+cyr_ka 234
+cyr_el 235
+cyr_em 236
+cyr_en 237
+cyr_o 238
+cyr_pe 239
+cyr_er 240
+cyr_es 241
+cyr_te 242
+cyr_u 243
+cyr_ef 244
+cyr_ha 245
+cyr_tse 246
+cyr_che 247
+cyr_sha 248
+cyr_shcha 249
+cyr_hard_sign 250
+cyr_yeru 251
+cyr_soft_sign 252
+cyr_e 253
+cyr_yu 254
+cyr_ya 255
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/README
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/README	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/encodings/README	(revision 2000)
@@ -0,0 +1,47 @@
+Sergey A. Babkin
+<babkin@bellatlantic.net> or <sab123@hotmail.com>
+(Do not edit this file, it is generated from README.html!!!)
+
+The Translation Tables
+----------------------
+
+These translation tables are used to translate the Type 1 fonts between
+different encodings of the same language.
+
+The file names are supposed to have the suffix .tbl. Each file
+describes one encoding, and all the tables for a given language
+are stored in the same directory.
+
+The file format is quite simple: just a sequence of rows in
+format
+
+<name> <decimal code>
+
+The names do not have to conform to any standard, just the same
+glyph must have the same name in all the files for a given language.
+
+Not all the codes need to be described in the tables, the codes that
+are not mentioned in the tables are left untranslated. So a file
+of zero length may be used in case when no translation is neccessary.
+
+The translation changes only the encoding table of the font and does not 
+rename the glyphs in the font file.
+
+Examples
+--------
+
+The directory `russian' contains the tables for some encodings of the 
+Russian language: KOI-8, IBM CP-866, IBM CP-1251 and just for fun
+ISO-8859/5 (nobody uses it anyways). The tables describe both russian
+letters and table graphics characters (except for CP-1251 for which
+the table graphics is not defined, so the table graphics portion for
+it is just copied from KOI-8). 
+
+The file for ISO-8859/1 is just a copy of file for KOI-8. It is neccessary
+because Netscape has rather weird ideas about the documents in
+KOI-8 encoding. The common way to fool Netscape is to set the KOI-8
+fonts for the ISO-8859/1 encoding and set the default encoding
+in Netscape to 8859/1.
+
+The directory `latin1' contains an empty table for ISO-8859/1
+because it does not need any translation.
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/Makefile
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/Makefile	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/Makefile	(revision 2000)
@@ -0,0 +1,279 @@
+
+# This file should be configured before running `make'.
+# Uncomment or change the values that are relevant for your OS.
+
+# The preferred C compiler (by default use the OS-specific default value).
+# For BSD/OS, FreeBSD, Linux (all flavors), NetBSD, OpenBSD the default
+# compiler is GNU C. 
+# (Note please the politically correct ordering by alphabet ! :-)
+#
+# Use GNU C even if it's not the default compiler
+#
+#CC=gcc
+#
+# Use the standard ANSI C compiler on HP-UX even if it's not default
+#
+#CC=c89
+
+#
+# The system-dependent flags for the C compiler
+#
+# Default
+
+CFLAGS_SYS= -g
+
+# For GNU C
+#
+#CFLAGS_SYS= -O2
+#
+# For GNU C with long options support library (Linux etc.)
+#
+#CFLAGS_SYS= -O2 -D_GNU_SOURCE
+#
+# For GNU C on HP-UX/PA-RISC 1.1
+#
+#CFLAGS_SYS= -O2 -Wa,-w
+#
+# For the standard ANSI C on HP-UX
+#
+#CFLAGS_SYS= +O2 -D_HPUX_SOURCE
+
+#
+# The system-dependent libraries
+#
+# Defalut (for the BSD-style OSes)
+
+LIBS_SYS= -lm
+
+# For SystemV (such as SCO, UnixWare, Solaris, but _NOT_ Linux or HP-UX)
+#
+#LIBS_SYS= -lm -lsocket
+
+#
+# The flags for C compiler for the FreeType-2 library (disabled by default). 
+# This WON'T BUILD with FT2-beta8, use the FreeType release 2.0.4
+# http://download.sourceforge.net/freetype/freetype-2.0.4.tar.gz
+
+#CFLAGS_FT= 
+
+# To enable use of the FreeType-2 library
+# (if the include and lib directory do not match your installation,
+# modify them), also uncomment LIBS_FT
+#
+CFLAGS_FT = -DUSE_FREETYPE -I/usr/include/freetype2 -I/usr/include
+
+# 
+# The FreeType-2 library flags (disabled by default)
+
+#LIBS_FT=
+
+# To enable use of the FreeType-2 library
+# (if the include and lib directory do not match your installation,
+# modify them), also uncomment CFLAGS_FT
+#
+LIBS_FT= -L/usr/lib -lfreetype
+
+#
+# The flags for C compiler for the Autotrace library (disabled by default). 
+# USE OF THIS FEATURE IS STRONGLY DISCOURAGED, THE BUILT-IN TRACING
+# (AKA VECTORIZATION) PROVIDES MUCH BETTER RESULTS.
+# The tested version is 0.29a (and the fonts produced with it are
+# absolutely not usable).
+# http://download.sourceforge.net/autotrace/autotrace-0.29.tar.gz
+
+CFLAGS_AT= 
+
+# To enable use of the Autotrace library
+# (if the include and lib directory do not match your installation,
+# modify them), also uncomment LIBS_AT
+#
+#CFLAGS_AT = -DUSE_AUTOTRACE -I/usr/local/include
+
+# 
+# The Autotrace library flags (disabled by default)
+
+LIBS_AT=
+
+# To enable use of the Autotrace library
+# (if the include and lib directory do not match your installation,
+# modify them), also uncomment CFLAGS_AT
+#
+#LIBS_AT= -L/usr/local/lib -lautotrace
+
+#
+# Preference of front-ends if multiple parsers match a file
+# (by default the build-in front-end takes preference over FreeType)
+
+CFLAGS_PREF=
+
+# To prefer FreeType (if enabled):
+#
+#CFLAGS_PREF= -DPREFER_FREETYPE
+
+# Uncomment the second line to not compile t1asm into ttf2pt1
+CFLAGS_EXTT1ASM=
+#CFLAGS_EXTT1ASM= -DEXTERNAL_T1ASM
+
+CFLAGS= $(CFLAGS_SYS) $(CFLAGS_FT) $(CFLAGS_AT) $(CFLAGS_PREF)
+LIBS= $(LIBS_SYS) $(LIBS_FT) $(LIBS_AT)
+
+# Installation-related stuff
+# 
+# The base dir for installation and subdirs in it
+INSTDIR = /usr/local
+# for binaries
+BINDIR = $(INSTDIR)/bin
+# for binaries of little general interest
+LIBXDIR = $(INSTDIR)/libexec/ttf2pt1
+# for scripts, maps/encodings etc.
+SHAREDIR = $(INSTDIR)/share/ttf2pt1
+MANDIR = $(INSTDIR)/man
+
+# owner and group of installed files
+OWNER = root
+GROUP = bin
+
+# After you have configured the Makefile, comment out the following
+# definition:
+warning: docs
+	@echo >&2
+	@echo "  You have to configure the Makefile before running make!" >&2
+	@echo "(or if you are lazy and hope that it will work as is run \`make all')">&2
+	@echo >&2
+
+DOCS=CHANGES README FONTS FONTS.hpux encodings/README other/README \
+	app/X11/README app/netscape/README app/TeX/README
+
+SUBDIRS = app encodings maps scripts other
+TXTFILES = README* FONTS* CHANGES* COPYRIGHT
+
+MANS1=ttf2pt1.1 ttf2pt1_convert.1 ttf2pt1_x2gs.1
+MANS=$(MANS1) $(MANS5)
+
+all:	t1asm ttf2pt1 docs mans rpm
+
+docs: $(DOCS)
+
+mans: $(MANS) 
+
+clean:
+	rm -f t1asm ttf2pt1 *.o app/RPM/Makefile app/RPM/*.spec *.core core.* core
+	( cd other && make clean; )
+	( cd app/netscape && make clean; )
+
+veryclean: clean
+	rm -f $(DOCS) $(MANS)
+
+rpm: app/RPM/Makefile app/RPM/ttf2pt1.spec
+
+ttf2pt1.1: README.html
+	scripts/html2man . . <README.html
+
+ttf2pt1_convert.1 ttf2pt1_x2gs.1: FONTS.html
+	scripts/html2man . . <FONTS.html
+
+app/RPM/Makefile: Makefile
+	sed 's/^CFLAGS_SYS.*=.*$$/CFLAGS_SYS= -O2 -D_GNU_SOURCE/;/warning:/,/^$$/s/^/#/' <Makefile >app/RPM/Makefile
+
+app/RPM/ttf2pt1.spec: app/RPM/ttf2pt1.spec.src version.h
+	sed 's/^Version:.*/Version: '`grep TTF2PT1_VERSION version.h| cut -d\" -f2`'/' <app/RPM/ttf2pt1.spec.src  >$@
+
+t1asm: t1asm.c
+	$(CC) $(CFLAGS) -o t1asm -DSTANDALONE t1asm.c $(LIBS)
+
+ttf2pt1.o: ttf2pt1.c ttf.h pt1.h global.h version.h
+	$(CC) $(CFLAGS) -c ttf2pt1.c
+
+pt1.o: pt1.c ttf.h pt1.h global.h
+	$(CC) $(CFLAGS) -c pt1.c
+
+ttf.o: ttf.c ttf.h pt1.h global.h
+	$(CC) $(CFLAGS) -c ttf.c
+
+ft.o: ft.c pt1.h global.h
+	$(CC) $(CFLAGS) -c ft.c
+
+bdf.o: bdf.c pt1.h global.h
+	$(CC) $(CFLAGS) -c bdf.c
+
+bitmap.o: bitmap.c pt1.h global.h
+	$(CC) $(CFLAGS) -c bitmap.c
+
+runt1asm.o: runt1asm.c global.h
+	$(CC) $(CFLAGS) $(CFLAGS_EXTT1ASM) -c runt1asm.c
+
+ttf2pt1:	ttf2pt1.o pt1.o runt1asm.o ttf.o ft.o bdf.o bitmap.o
+	$(CC) $(CFLAGS) -o ttf2pt1 ttf2pt1.o pt1.o runt1asm.o ttf.o ft.o bdf.o bitmap.o $(LIBS)
+
+CHANGES: CHANGES.html
+	scripts/unhtml <CHANGES.html >CHANGES
+
+README: README.html
+	scripts/unhtml <README.html >README
+
+encodings/README: encodings/README.html
+	scripts/unhtml <encodings/README.html >encodings/README
+
+other/README: other/README.html
+	scripts/unhtml <other/README.html >other/README
+
+app/X11/README: app/X11/README.html
+	scripts/unhtml <app/X11/README.html >app/X11/README
+
+app/netscape/README: app/netscape/README.html
+	scripts/unhtml <app/netscape/README.html >app/netscape/README
+
+app/TeX/README: app/TeX/README.html
+	scripts/unhtml <app/TeX/README.html >app/TeX/README
+
+FONTS: FONTS.html
+	scripts/unhtml <FONTS.html >FONTS
+
+FONTS.hpux: FONTS.hpux.html
+	scripts/unhtml <FONTS.hpux.html >FONTS.hpux
+
+install: all
+	scripts/inst_dir $(BINDIR) $(OWNER) $(GROUP) 0755
+	scripts/inst_dir $(LIBXDIR) $(OWNER) $(GROUP) 0755
+	scripts/inst_dir $(SHAREDIR) $(OWNER) $(GROUP) 0755
+	scripts/inst_dir $(MANDIR)/man1 $(OWNER) $(GROUP) 0755
+	scripts/inst_dir $(MANDIR)/man5 $(OWNER) $(GROUP) 0755
+	cp -R $(TXTFILES) $(SUBDIRS) $(SHAREDIR)
+	chown -R $(OWNER) $(SHAREDIR)
+	chgrp -R $(GROUP) $(SHAREDIR)
+	chmod -R go-w $(SHAREDIR)
+	scripts/inst_file ttf2pt1 $(BINDIR)/ttf2pt1 $(OWNER) $(GROUP) 0755
+	[ -f $(BINDIR)/t1asm ] || scripts/inst_file t1asm $(LIBXDIR)/t1asm $(OWNER) $(GROUP) 0755
+	sed -e 's|^TTF2PT1_BINDIR=$$|TTF2PT1_BINDIR=$(BINDIR)|;' \
+		-e 's|^TTF2PT1_LIBXDIR=$$|TTF2PT1_LIBXDIR=$(LIBXDIR)|;' \
+		-e 's|^TTF2PT1_SHAREDIR=$$|TTF2PT1_SHAREDIR=$(SHAREDIR)|;' <scripts/convert >cvt.tmp
+	scripts/inst_file cvt.tmp $(BINDIR)/ttf2pt1_convert $(OWNER) $(GROUP) 0755
+	scripts/inst_file cvt.tmp $(SHAREDIR)/scripts/convert $(OWNER) $(GROUP) 0755
+	rm cvt.tmp
+	scripts/inst_file scripts/x2gs $(BINDIR)/ttf2pt1_x2gs $(OWNER) $(GROUP) 0755
+	for i in $(MANS1); do { \
+		sed -e 's|TTF2PT1_BINDIR|$(BINDIR)|;' \
+			-e 's|TTF2PT1_LIBXDIR|$(LIBXDIR)|;' \
+			-e 's|TTF2PT1_SHAREDIR|$(SHAREDIR)|;' <$$i >$(MANDIR)/man1/$$i \
+		&& chown $(OWNER) $(MANDIR)/man1/$$i \
+		&& chgrp $(GROUP) $(MANDIR)/man1/$$i \
+		&& chmod 0644 $(MANDIR)/man1/$$i \
+		|| exit 1; \
+	} done
+
+uninstall:
+	rm -f $(BINDIR)/ttf2pt1 $(BINDIR)/ttf2pt1_convert $(BINDIR)/ttf2pt1_x2gs
+	rm -rf $(LIBXDIR)
+	rm -rf $(SHAREDIR)
+	for i in $(MANS1); do { \
+		rm -f $(MANDIR)/man1/$$i $(MANDIR)/man1/$$i.gz; \
+	} done
+
+
+# targets for automatic generation of releases and snapshots
+
+snapshot:
+	scripts/mkrel snapshot
+
+release:
+	scripts/mkrel release
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf.c
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf.c	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf.c	(revision 2000)
@@ -0,0 +1,1502 @@
+/*
+ * True Type Font to Adobe Type 1 font converter 
+ * By Mark Heath <mheath@netspace.net.au> 
+ * Based on ttf2pfa by Andrew Weeks <ccsaw@bath.ac.uk> 
+ * With help from Frank M. Siegert <fms@this.net> 
+ *
+ * see COPYRIGHT
+ *
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <time.h>
+#include <ctype.h>
+#include <math.h>
+
+#ifndef WINDOWS
+#	include <unistd.h>
+#	include <netinet/in.h>
+#else
+#	include "windows.h"
+#endif
+
+#include "ttf.h"
+#include "pt1.h"
+#include "global.h"
+
+/* prototypes of call entries */
+static void openfont(char *fname, char *arg);
+static void closefont( void);
+static int getnglyphs ( void);
+static int glnames( GLYPH *glyph_list);
+static void glmetrics( GLYPH *glyph_list);
+static int glenc( GLYPH *glyph_list, int *encoding, int *unimap);
+static void fnmetrics( struct font_metrics *fm);
+static void glpath( int glyphno, GLYPH *glyph_list);
+static void kerning( GLYPH *glyph_list);
+
+/* globals */
+
+/* front-end descriptor */
+struct frontsw ttf_sw = {
+	/*name*/       "ttf",
+	/*descr*/      "built-in TTF support",
+	/*suffix*/     { "ttf" },
+	/*open*/       openfont,
+	/*close*/      closefont,
+	/*nglyphs*/    getnglyphs,
+	/*glnames*/    glnames,
+	/*glmetrics*/  glmetrics,
+	/*glenc*/      glenc,
+	/*fnmetrics*/  fnmetrics,
+	/*glpath*/     glpath,
+	/*kerning*/    kerning,
+};
+
+/* statics */
+
+static FILE    *ttf_file;
+static int      ttf_nglyphs, long_offsets;
+
+static TTF_DIRECTORY *directory;
+static TTF_DIR_ENTRY *dir_entry;
+static char    *filebuffer;
+static char    *filebuffer_end;
+static TTF_NAME *name_table = NULL;
+static TTF_NAME_REC *name_record;
+static TTF_HEAD *head_table = NULL;
+static TTF_HHEA *hhea_table = NULL;
+static TTF_KERN *kern_table = NULL;
+static TTF_CMAP *cmap_table = NULL;
+static LONGHORMETRIC *hmtx_table = NULL;
+static TTF_GLYF *glyf_table;
+static BYTE    *glyf_start = NULL;
+static TTF_MAXP *maxp_table = NULL;
+static TTF_POST_HEAD *post_table = NULL;
+static union {
+	USHORT *sp;
+	ULONG  *lp;
+} loca_table;
+#define short_loca_table	loca_table.sp
+#define long_loca_table		loca_table.lp
+
+static short    cmap_n_segs;
+static USHORT  *cmap_seg_start, *cmap_seg_end;
+static short   *cmap_idDelta, *cmap_idRangeOffset;
+static TTF_CMAP_FMT0  *encoding0;
+static int             enc_type;
+
+static char    *name_fields[8];
+
+static int enc_found_ms, enc_found_mac;
+
+static char    *mac_glyph_names[258] = {
+	".notdef", ".null", "CR",
+	"space", "exclam", "quotedbl", "numbersign",
+	"dollar", "percent", "ampersand", "quotesingle",
+	"parenleft", "parenright", "asterisk", "plus",
+	"comma", "hyphen", "period", "slash",
+	"zero", "one", "two", "three",
+	"four", "five", "six", "seven",
+	"eight", "nine", "colon", "semicolon",
+	"less", "equal", "greater", "question",
+	"at", "A", "B", "C",
+	"D", "E", "F", "G",
+	"H", "I", "J", "K",
+	"L", "M", "N", "O",
+	"P", "Q", "R", "S",
+	"T", "U", "V", "W",
+	"X", "Y", "Z", "bracketleft",
+	"backslash", "bracketright", "asciicircum", "underscore",
+	"grave", "a", "b", "c",
+	"d", "e", "f", "g",
+	"h", "i", "j", "k",
+	"l", "m", "n", "o",
+	"p", "q", "r", "s",
+	"t", "u", "v", "w",
+	"x", "y", "z", "braceleft",
+	"bar", "braceright", "asciitilde", "Adieresis",
+	"Aring", "Ccedilla", "Eacute", "Ntilde",
+	"Odieresis", "Udieresis", "aacute", "agrave",
+	"acircumflex", "adieresis", "atilde", "aring",
+	"ccedilla", "eacute", "egrave", "ecircumflex",
+	"edieresis", "iacute", "igrave", "icircumflex",
+	"idieresis", "ntilde", "oacute", "ograve",
+	"ocircumflex", "odieresis", "otilde", "uacute",
+	"ugrave", "ucircumflex", "udieresis", "dagger",
+	"degree", "cent", "sterling", "section",
+	"bullet", "paragraph", "germandbls", "registered",
+	"copyright", "trademark", "acute", "dieresis",
+	"notequal", "AE", "Oslash", "infinity",
+	"plusminus", "lessequal", "greaterequal", "yen",
+	"mu", "partialdiff", "summation", "product",
+	"pi", "integral", "ordfeminine", "ordmasculine",
+	"Omega", "ae", "oslash", "questiondown",
+	"exclamdown", "logicalnot", "radical", "florin",
+	"approxequal", "increment", "guillemotleft", "guillemotright",
+	"ellipsis", "nbspace", "Agrave", "Atilde",
+	"Otilde", "OE", "oe", "endash",
+	"emdash", "quotedblleft", "quotedblright", "quoteleft",
+	"quoteright", "divide", "lozenge", "ydieresis",
+	"Ydieresis", "fraction", "currency", "guilsinglleft",
+	"guilsinglright", "fi", "fl", "daggerdbl",
+	"periodcentered", "quotesinglbase", "quotedblbase", "perthousand",
+	"Acircumflex", "Ecircumflex", "Aacute", "Edieresis",
+	"Egrave", "Iacute", "Icircumflex", "Idieresis",
+	"Igrave", "Oacute", "Ocircumflex", "applelogo",
+	"Ograve", "Uacute", "Ucircumflex", "Ugrave",
+	"dotlessi", "circumflex", "tilde", "macron",
+	"breve", "dotaccent", "ring", "cedilla",
+	"hungarumlaut", "ogonek", "caron", "Lslash",
+	"lslash", "Scaron", "scaron", "Zcaron",
+	"zcaron", "brokenbar", "Eth", "eth",
+	"Yacute", "yacute", "Thorn", "thorn",
+	"minus", "multiply", "onesuperior", "twosuperior",
+	"threesuperior", "onehalf", "onequarter", "threequarters",
+	"franc", "Gbreve", "gbreve", "Idot",
+	"Scedilla", "scedilla", "Cacute", "cacute",
+	"Ccaron", "ccaron", "dmacron"
+};
+
+/* other prototypes */
+static void draw_composite_glyf( GLYPH *g, GLYPH *glyph_list, int glyphno, 
+	double *matrix, int level);
+static void draw_simple_glyf( GLYPH *g, GLYPH *glyph_list, int glyphno, 
+	double *matrix);
+static double f2dot14( short x);
+
+/* get the TTF description table address and length for this index */
+
+static void
+get_glyf_table(
+	int glyphno,
+	TTF_GLYF **tab,
+	int *len
+)
+{
+	if(tab!=NULL) {
+		if (long_offsets) {
+			*tab = (TTF_GLYF *) (glyf_start + ntohl(long_loca_table[glyphno]));
+		} else {
+			*tab = (TTF_GLYF *) (glyf_start + (ntohs(short_loca_table[glyphno]) << 1));
+		}
+	}
+	if(len!=NULL) {
+		if (long_offsets) {
+			*len = ntohl(long_loca_table[glyphno + 1]) - ntohl(long_loca_table[glyphno]);
+		} else {
+			*len = (ntohs(short_loca_table[glyphno + 1]) - ntohs(short_loca_table[glyphno])) << 1;
+		}
+	}
+}
+
+static void
+handle_name(void)
+{
+	int             j, k, lang, len, platform;
+	char           *p, *string_area;
+	int             found3 = 0;
+
+	string_area = (char *) name_table + ntohs(name_table->offset);
+	name_record = &(name_table->nameRecords);
+
+	for (j = 0; j < 8; j++) {
+		name_fields[j] = ""; 
+	}
+
+	for (j = 0; j < ntohs(name_table->numberOfNameRecords); j++) {
+
+		platform = ntohs(name_record->platformID);
+
+		if (platform == 3) {
+
+			found3 = 1;
+			lang = ntohs(name_record->languageID) & 0xff;
+			len = ntohs(name_record->stringLength);
+			if (lang == 0 || lang == 9) {
+				k = ntohs(name_record->nameID);
+				if (k < 8) {
+					p = string_area + ntohs(name_record->stringOffset);
+					name_fields[k] = dupcnstring(p, len);
+				}
+			}
+		}
+		name_record++;
+	}
+
+	string_area = (char *) name_table + ntohs(name_table->offset);
+	name_record = &(name_table->nameRecords);
+
+	if (!found3) {
+		for (j = 0; j < ntohs(name_table->numberOfNameRecords); j++) {
+
+			platform = ntohs(name_record->platformID);
+
+			if (platform == 1) {
+
+				found3 = 1;
+				lang = ntohs(name_record->languageID) & 0xff;
+				len = ntohs(name_record->stringLength);
+				if (lang == 0 || lang == 9) {
+					k = ntohs(name_record->nameID);
+					if (k < 8) {
+						p = string_area + ntohs(name_record->stringOffset);
+						name_fields[k] = dupcnstring(p, len);
+					}
+				}
+			}
+			name_record++;
+		}
+	}
+	if (!found3) {
+		fprintf(stderr, "**** Cannot decode font name fields ****\n");
+		exit(1);
+	}
+	if (name_fields[4][0] == 0) { /* Full Name empty, use Family Name */
+		name_fields[4] = name_fields[1];
+	}
+	if (name_fields[6][0] == 0) { /* Font Name empty, use Full Name */
+		name_fields[6] = name_fields[4];
+		if (name_fields[6][0] == 0) { /* oops, empty again */
+			WARNING_1 fprintf(stderr, "Font name is unknown, setting to \"Unknown\"\n");
+			name_fields[6] = "Unknown";
+		}
+	}
+	p = name_fields[6];
+	/* must not start with a digit */
+	if(isdigit(*p))
+		*p+= 'A'-'0'; /* change to a letter */
+	while (*p != '\0') {
+		if (!isalnum(*p) || *p=='_') {
+			*p = '-';
+		}
+		p++;
+	}
+}
+
+static void
+handle_head(void)
+{
+	long_offsets = ntohs(head_table->indexToLocFormat);
+	if (long_offsets != 0 && long_offsets != 1) {
+		fprintf(stderr, "**** indexToLocFormat wrong ****\n");
+		exit(1);
+	}
+}
+
+/* limit the recursion level to avoid cycles */
+#define MAX_COMPOSITE_LEVEL 20
+
+static void
+draw_composite_glyf(
+	GLYPH *g,
+	GLYPH *glyph_list,
+	int glyphno,
+	double *orgmatrix,
+	int level
+)
+{
+	int len;
+	short           ncontours;
+	USHORT          flagbyte, glyphindex;
+	double          arg1, arg2;
+	BYTE           *ptr;
+	char           *bptr;
+	SHORT          *sptr;
+	double          matrix[6], newmatrix[6];
+
+	get_glyf_table(glyphno, &glyf_table, &len);
+
+	if(len<=0) /* nothing to do */
+		return;
+
+	ncontours = ntohs(glyf_table->numberOfContours);
+	if (ncontours >= 0) { /* simple case */
+		draw_simple_glyf(g, glyph_list, glyphno, orgmatrix);
+		return;
+	}
+
+	if(ISDBG(COMPOSITE) && level ==0)
+		fprintf(stderr, "* %s [ %.2f %.2f %.2f %.2f %.2f %.2f ]\n", g->name,
+			orgmatrix[0], orgmatrix[1], orgmatrix[2], orgmatrix[3],
+			orgmatrix[4], orgmatrix[5]);
+
+	/* complex case */
+	if(level >= MAX_COMPOSITE_LEVEL) {
+		WARNING_1 fprintf(stderr, 
+			"*** Glyph %s: stopped (possibly infinite) recursion at depth %d\n",
+			g->name, level);
+		return;
+	}
+
+	ptr = ((BYTE *) glyf_table + sizeof(TTF_GLYF));
+	sptr = (SHORT *) ptr;
+	do {
+		flagbyte = ntohs(*sptr);
+		sptr++;
+		glyphindex = ntohs(*sptr);
+		sptr++;
+
+		if (flagbyte & ARG_1_AND_2_ARE_WORDS) {
+			arg1 = (short)ntohs(*sptr);
+			sptr++;
+			arg2 = (short)ntohs(*sptr);
+			sptr++;
+		} else {
+			bptr = (char *) sptr;
+			arg1 = (signed char) bptr[0];
+			arg2 = (signed char) bptr[1];
+			sptr++;
+		}
+		matrix[1] = matrix[2] = 0.0;
+
+		if (flagbyte & WE_HAVE_A_SCALE) {
+			matrix[0] = matrix[3] = f2dot14(*sptr);
+			sptr++;
+		} else if (flagbyte & WE_HAVE_AN_X_AND_Y_SCALE) {
+			matrix[0] = f2dot14(*sptr);
+			sptr++;
+			matrix[3] = f2dot14(*sptr);
+			sptr++;
+		} else if (flagbyte & WE_HAVE_A_TWO_BY_TWO) {
+			matrix[0] = f2dot14(*sptr);
+			sptr++;
+			matrix[2] = f2dot14(*sptr);
+			sptr++;
+			matrix[1] = f2dot14(*sptr);
+			sptr++;
+			matrix[3] = f2dot14(*sptr);
+			sptr++;
+		} else {
+			matrix[0] = matrix[3] = 1.0;
+		}
+
+		/*
+		 * See *
+		 * http://fonts.apple.com/TTRefMan/RM06/Chap6g
+		 * lyf.html * matrix[0,1,2,3,4,5]=a,b,c,d,m,n
+		 */
+
+		if (fabs(matrix[0]) > fabs(matrix[1]))
+			matrix[4] = fabs(matrix[0]);
+		else
+			matrix[4] = fabs(matrix[1]);
+		if (fabs(fabs(matrix[0]) - fabs(matrix[2])) <= 33. / 65536.)
+			matrix[4] *= 2.0;
+
+		if (fabs(matrix[2]) > fabs(matrix[3]))
+			matrix[5] = fabs(matrix[2]);
+		else
+			matrix[5] = fabs(matrix[3]);
+		if (fabs(fabs(matrix[2]) - fabs(matrix[3])) <= 33. / 65536.)
+			matrix[5] *= 2.0;
+
+		/*
+		 * fprintf (stderr,"Matrix Opp %hd
+		 * %hd\n",arg1,arg2);
+		 */
+#if 0
+		fprintf(stderr, "Matrix: %f %f %f %f %f %f\n",
+		 matrix[0], matrix[1], matrix[2], matrix[3],
+			matrix[4], matrix[5]);
+		fprintf(stderr, "Offset: %f %f (%s)\n",
+			arg1, arg2,
+			((flagbyte & ARGS_ARE_XY_VALUES) ? "XY" : "index"));
+#endif
+
+		if (flagbyte & ARGS_ARE_XY_VALUES) {
+			matrix[4] *= arg1;
+			matrix[5] *= arg2;
+		} else {
+			WARNING_1 fprintf(stderr, 
+				"*** Glyph %s: reusing scale from another glyph is unsupported\n",
+				g->name);
+			/*
+			 * must extract values from a glyph
+			 * but it seems to be too much pain
+			 * and it's not clear now that it
+			 * would be really used in any
+			 * interesting font
+			 */
+		}
+
+		/* at this point arg1,arg2 contain what logically should be matrix[4,5] */
+
+		/* combine matrices */
+
+		newmatrix[0] = orgmatrix[0]*matrix[0] + orgmatrix[2]*matrix[1];
+		newmatrix[1] = orgmatrix[0]*matrix[2] + orgmatrix[2]*matrix[3];
+
+		newmatrix[2] = orgmatrix[1]*matrix[0] + orgmatrix[3]*matrix[1];
+		newmatrix[3] = orgmatrix[1]*matrix[2] + orgmatrix[3]*matrix[3];
+
+		newmatrix[4] = orgmatrix[0]*matrix[4] + orgmatrix[2]*matrix[5] + orgmatrix[4];
+		newmatrix[5] = orgmatrix[1]*matrix[4] + orgmatrix[3]*matrix[5] + orgmatrix[5];
+
+		if(ISDBG(COMPOSITE)) {
+			fprintf(stderr, "%*c+-> %2d %s [ %.2f %.2f %.2f %.2f %.2f %.2f ]\n",
+				level+1, ' ', level, glyph_list[glyphindex].name,
+				matrix[0], matrix[1], matrix[2], matrix[3],
+				matrix[4], matrix[5]);
+			fprintf(stderr, "%*c        = [ %.2f %.2f %.2f %.2f %.2f %.2f ]\n",
+				level+1, ' ',
+				newmatrix[0], newmatrix[1], newmatrix[2], newmatrix[3],
+				newmatrix[4], newmatrix[5]);
+		}
+		draw_composite_glyf(g, glyph_list, glyphindex, newmatrix, level+1);
+
+	} while (flagbyte & MORE_COMPONENTS);
+}
+
+static void
+draw_simple_glyf(
+	GLYPH *g,
+	GLYPH *glyph_list,
+	int glyphno,
+	double *matrix
+)
+{
+	int             i, j, k, k1, len, first, cs, ce;
+	/* We assume that hsbw always sets to(0, 0) */
+	double          xlast = 0, ylast = 0;
+	int             finished, nguide, contour_start, contour_end;
+	short           ncontours, n_inst, last_point;
+	USHORT         *contour_end_pt;
+	BYTE           *ptr;
+#define GLYFSZ	2000
+	short           xabs[GLYFSZ], yabs[GLYFSZ], xrel[GLYFSZ], yrel[GLYFSZ];
+	double          xcoord[GLYFSZ], ycoord[GLYFSZ];
+	BYTE            flags[GLYFSZ];
+	double          tx, ty;
+	int             needreverse = 0;	/* transformation may require
+						 * that */
+	GENTRY         *lge;
+
+	lge = g->lastentry;
+
+	get_glyf_table(glyphno, &glyf_table, &len);
+
+	if (len <= 0) {
+		WARNING_1 fprintf(stderr,
+			"**** Composite glyph %s refers to non-existent glyph %s, ignored\n",
+			g->name,
+			glyph_list[glyphno].name);
+		return;
+	}
+	ncontours = ntohs(glyf_table->numberOfContours);
+	if (ncontours < 0) {
+		WARNING_1 fprintf(stderr,
+			"**** Composite glyph %s refers to composite glyph %s, ignored\n",
+			g->name,
+			glyph_list[glyphno].name);
+		return;
+	}
+	contour_end_pt = (USHORT *) ((char *) glyf_table + sizeof(TTF_GLYF));
+
+	last_point = ntohs(contour_end_pt[ncontours - 1]);
+	n_inst = ntohs(contour_end_pt[ncontours]);
+
+	ptr = ((BYTE *) contour_end_pt) + (ncontours << 1) + n_inst + 2;
+	j = k = 0;
+	while (k <= last_point) {
+		flags[k] = ptr[j];
+
+		if (ptr[j] & REPEAT) {
+			for (k1 = 0; k1 < ptr[j + 1]; k1++) {
+				k++;
+				flags[k] = ptr[j];
+			}
+			j++;
+		}
+		j++;
+		k++;
+	}
+
+	for (k = 0; k <= last_point; k++) {
+		if (flags[k] & XSHORT) {
+			if (flags[k] & XSAME) {
+				xrel[k] = ptr[j];
+			} else {
+				xrel[k] = -ptr[j];
+			}
+			j++;
+		} else if (flags[k] & XSAME) {
+			xrel[k] = 0.0;
+		} else {
+			xrel[k] = (short)( ptr[j] * 256 + ptr[j + 1] );
+			j += 2;
+		}
+		if (k == 0) {
+			xabs[k] = xrel[k];
+		} else {
+			xabs[k] = xrel[k] + xabs[k - 1];
+		}
+
+	}
+
+	for (k = 0; k <= last_point; k++) {
+		if (flags[k] & YSHORT) {
+			if (flags[k] & YSAME) {
+				yrel[k] = ptr[j];
+			} else {
+				yrel[k] = -ptr[j];
+			}
+			j++;
+		} else if (flags[k] & YSAME) {
+			yrel[k] = 0;
+		} else {
+			yrel[k] = ptr[j] * 256 + ptr[j + 1];
+			j += 2;
+		}
+		if (k == 0) {
+			yabs[k] = yrel[k];
+		} else {
+			yabs[k] = yrel[k] + yabs[k - 1];
+		}
+	}
+
+	if (matrix) {
+		for (i = 0; i <= last_point; i++) {
+			tx = xabs[i];
+			ty = yabs[i];
+			xcoord[i] = fscale(matrix[0] * tx + matrix[2] * ty + matrix[4]);
+			ycoord[i] = fscale(matrix[1] * tx + matrix[3] * ty + matrix[5]);
+		}
+	} else {
+		for (i = 0; i <= last_point; i++) {
+			xcoord[i] = fscale(xabs[i]);
+			ycoord[i] = fscale(yabs[i]);
+		}
+	}
+
+	i = j = 0;
+	first = 1;
+
+	while (i <= ntohs(contour_end_pt[ncontours - 1])) {
+		contour_end = ntohs(contour_end_pt[j]);
+
+		if (first) {
+			fg_rmoveto(g, xcoord[i], ycoord[i]);
+			xlast = xcoord[i];
+			ylast = ycoord[i];
+			contour_start = i;
+			first = 0;
+		} else if (flags[i] & ONOROFF) {
+			fg_rlineto(g, xcoord[i], ycoord[i]);
+			xlast = xcoord[i];
+			ylast = ycoord[i];
+		} else {
+			cs = i - 1;
+			finished = nguide = 0;
+			while (!finished) {
+				if (i == contour_end + 1) {
+					ce = contour_start;
+					finished = 1;
+				} else if (flags[i] & ONOROFF) {
+					ce = i;
+					finished = 1;
+				} else {
+					i++;
+					nguide++;
+				}
+			}
+
+			switch (nguide) {
+			case 0:
+				fg_rlineto(g, xcoord[ce], ycoord[ce]);
+				xlast = xcoord[ce];
+				ylast = ycoord[ce];
+				break;
+
+			case 1:
+				fg_rrcurveto(g,
+				      (xcoord[cs] + 2.0 * xcoord[cs + 1]) / 3.0,
+				      (ycoord[cs] + 2.0 * ycoord[cs + 1]) / 3.0,
+				      (2.0 * xcoord[cs + 1] + xcoord[ce]) / 3.0,
+				      (2.0 * ycoord[cs + 1] + ycoord[ce]) / 3.0,
+					    xcoord[ce],
+					    ycoord[ce]
+					);
+				xlast = xcoord[ce];
+				ylast = ycoord[ce];
+
+				break;
+
+			case 2:
+				fg_rrcurveto(g,
+				     (-xcoord[cs] + 4.0 * xcoord[cs + 1]) / 3.0,
+				     (-ycoord[cs] + 4.0 * ycoord[cs + 1]) / 3.0,
+				      (4.0 * xcoord[cs + 2] - xcoord[ce]) / 3.0,
+				      (4.0 * ycoord[cs + 2] - ycoord[ce]) / 3.0,
+					    xcoord[ce],
+					    ycoord[ce]
+					);
+				xlast = xcoord[ce];
+				ylast = ycoord[ce];
+				break;
+
+			case 3:
+				fg_rrcurveto(g,
+				      (xcoord[cs] + 2.0 * xcoord[cs + 1]) / 3.0,
+				      (ycoord[cs] + 2.0 * ycoord[cs + 1]) / 3.0,
+				  (5.0 * xcoord[cs + 1] + xcoord[cs + 2]) / 6.0,
+				  (5.0 * ycoord[cs + 1] + ycoord[cs + 2]) / 6.0,
+				      (xcoord[cs + 1] + xcoord[cs + 2]) / 2.0,
+				      (ycoord[cs + 1] + ycoord[cs + 2]) / 2.0
+					);
+
+				fg_rrcurveto(g,
+				  (xcoord[cs + 1] + 5.0 * xcoord[cs + 2]) / 6.0,
+				  (ycoord[cs + 1] + 5.0 * ycoord[cs + 2]) / 6.0,
+				  (5.0 * xcoord[cs + 2] + xcoord[cs + 3]) / 6.0,
+				  (5.0 * ycoord[cs + 2] + ycoord[cs + 3]) / 6.0,
+				      (xcoord[cs + 3] + xcoord[cs + 2]) / 2.0,
+				      (ycoord[cs + 3] + ycoord[cs + 2]) / 2.0
+					);
+
+				fg_rrcurveto(g,
+				  (xcoord[cs + 2] + 5.0 * xcoord[cs + 3]) / 6.0,
+				  (ycoord[cs + 2] + 5.0 * ycoord[cs + 3]) / 6.0,
+				      (2.0 * xcoord[cs + 3] + xcoord[ce]) / 3.0,
+				      (2.0 * ycoord[cs + 3] + ycoord[ce]) / 3.0,
+					    xcoord[ce],
+					    ycoord[ce]
+					);
+				ylast = ycoord[ce];
+				xlast = xcoord[ce];
+
+				break;
+
+			default:
+				k1 = cs + nguide;
+				fg_rrcurveto(g,
+				      (xcoord[cs] + 2.0 * xcoord[cs + 1]) / 3.0,
+				      (ycoord[cs] + 2.0 * ycoord[cs + 1]) / 3.0,
+				  (5.0 * xcoord[cs + 1] + xcoord[cs + 2]) / 6.0,
+				  (5.0 * ycoord[cs + 1] + ycoord[cs + 2]) / 6.0,
+				      (xcoord[cs + 1] + xcoord[cs + 2]) / 2.0,
+				      (ycoord[cs + 1] + ycoord[cs + 2]) / 2.0
+					);
+
+				for (k = cs + 2; k <= k1 - 1; k++) {
+					fg_rrcurveto(g,
+					(xcoord[k - 1] + 5.0 * xcoord[k]) / 6.0,
+					(ycoord[k - 1] + 5.0 * ycoord[k]) / 6.0,
+					(5.0 * xcoord[k] + xcoord[k + 1]) / 6.0,
+					(5.0 * ycoord[k] + ycoord[k + 1]) / 6.0,
+					    (xcoord[k] + xcoord[k + 1]) / 2.0,
+					     (ycoord[k] + ycoord[k + 1]) / 2.0
+						);
+
+				}
+
+				fg_rrcurveto(g,
+				      (xcoord[k1 - 1] + 5.0 * xcoord[k1]) / 6.0,
+				      (ycoord[k1 - 1] + 5.0 * ycoord[k1]) / 6.0,
+					  (2.0 * xcoord[k1] + xcoord[ce]) / 3.0,
+					  (2.0 * ycoord[k1] + ycoord[ce]) / 3.0,
+					    xcoord[ce],
+					    ycoord[ce]
+					);
+				xlast = xcoord[ce];
+				ylast = ycoord[ce];
+
+				break;
+			}
+		}
+		if (i >= contour_end) {
+			g_closepath(g);
+			first = 1;
+			i = contour_end + 1;
+			j++;
+		} else {
+			i++;
+		}
+	}
+
+	if (matrix) {
+		/* guess whether do we need to reverse the results */
+
+		double             x[3], y[3];
+		int                max = 0, from, to;
+
+		/* transform a triangle going in proper direction */
+		/*
+		 * the origin of triangle is in (0,0) so we know it in
+		 * advance
+		 */
+
+		x[0] = y[0] = 0;
+		x[1] = matrix[0] * 0 + matrix[2] * 300;
+		y[1] = matrix[1] * 0 + matrix[3] * 300;
+		x[2] = matrix[0] * 300 + matrix[2] * 0;
+		y[2] = matrix[1] * 300 + matrix[3] * 0;
+
+		/* then find the topmost point */
+		for (i = 0; i < 3; i++)
+			if (y[i] > y[max])
+				max = i;
+		from = (max + 3 - 1) % 3;
+		to = (max + 1) % 3;
+
+		needreverse = 0;
+
+		/* special cases for horizontal lines */
+		if (y[max] == y[from]) {
+			if (x[max] < y[from])
+				needreverse = 1;
+		} else if (y[to] == y[from]) {
+			if (x[to] < x[max])
+				needreverse = 1;
+		} else {	/* generic case */
+			if ((x[to] - x[max]) * (y[max] - y[from])
+			    > (x[max] - x[from]) * (y[to] - y[max]))
+				needreverse = 1;
+		}
+
+		if (needreverse) {
+			if (lge) {
+				assertpath(lge->next, __FILE__, __LINE__, g->name);
+				reversepathsfromto(lge->next, NULL);
+			} else {
+				assertpath(g->entries, __FILE__, __LINE__, g->name);
+				reversepaths(g);
+			}
+		}
+	}
+}
+
+static double
+f2dot14(
+	short x
+)
+{
+	short           y = ntohs(x);
+	return (y >> 14) + ((y & 0x3fff) / 16384.0);
+}
+
+
+/* check that the pointer points within the file */
+/* returns 0 if pointer is good, 1 if bad */
+static int
+badpointer(
+	void *ptr
+)
+{
+	return (ptr < (void *)filebuffer || ptr >= (void *)filebuffer_end);
+}
+
+/*
+ * Externally accessible methods
+ */
+
+/*
+ * Open font and prepare to return information to the main driver.
+ * May print error and warning messages.
+ * Exit on error.
+ */
+
+static void
+openfont(
+	char *fname,
+	char *arg /* unused now */
+)
+{
+	int             i, j;
+	struct stat     statbuf;
+	static struct {
+		void **tbpp; /* pointer to pointer to the table */
+		char name[5]; /* table name */
+		char optional; /* flag: table may be missing */
+	} tables[] = {
+		{ (void **)&name_table, "name", 0 },
+		{ (void **)&head_table, "head", 0 },
+		{ (void **)&hhea_table, "hhea", 0 },
+		{ (void **)&post_table, "post", 0 },
+		{ (void **)&glyf_start, "glyf", 0 },
+		{ (void **)&cmap_table, "cmap", 0 },
+		{ (void **)&kern_table, "kern", 1 },
+		{ (void **)&maxp_table, "maxp", 0 },
+		{ (void **)&hmtx_table, "hmtx", 0 },
+		{ (void **)&long_loca_table, "loca", 0 },
+		{ NULL, "", 0 } /* end of table */
+	};
+
+	if (stat(fname, &statbuf) == -1) {
+		fprintf(stderr, "**** Cannot access %s ****\n", fname);
+		exit(1);
+	}
+	if ((filebuffer = malloc(statbuf.st_size)) == NULL) {
+		fprintf(stderr, "**** Cannot malloc space for file ****\n");
+		exit(1);
+	}
+
+	filebuffer_end = filebuffer + statbuf.st_size;
+
+	if ((ttf_file = fopen(fname, "rb")) == NULL) {
+		fprintf(stderr, "**** Cannot open file '%s'\n", fname);
+		exit(1);
+	} else {
+		WARNING_2 fprintf(stderr, "Processing file %s\n", fname);
+	}
+
+	if (fread(filebuffer, 1, statbuf.st_size, ttf_file) != statbuf.st_size) {
+		fprintf(stderr, "**** Could not read whole file \n");
+		exit(1);
+	}
+	fclose(ttf_file);
+
+	directory = (TTF_DIRECTORY *) filebuffer;
+
+	if (ntohl(directory->sfntVersion) != 0x00010000) {
+		fprintf(stderr,
+			"**** Unknown File Version number [%x], or not a TrueType file\n",
+			directory->sfntVersion);
+		exit(1);
+	}
+
+	/* clear the tables */
+	for(j=0; tables[j].tbpp != NULL; j++)
+		*(tables[j].tbpp) = NULL;
+
+	dir_entry = &(directory->list);
+
+	for (i = 0; i < ntohs(directory->numTables); i++) {
+
+		for(j=0; tables[j].tbpp != NULL; j++)
+			if (memcmp(dir_entry->tag, tables[j].name, 4) == 0) {
+				*(tables[j].tbpp) = (void *) (filebuffer + ntohl(dir_entry->offset));
+				break;
+			}
+
+		if (memcmp(dir_entry->tag, "EBDT", 4) == 0 ||
+			   memcmp(dir_entry->tag, "EBLC", 4) == 0 ||
+			   memcmp(dir_entry->tag, "EBSC", 4) == 0) {
+			WARNING_1 fprintf(stderr, "Font contains bitmaps\n");
+		}
+		dir_entry++;
+	}
+
+	for(j=0; tables[j].tbpp != NULL; j++)
+		if(!tables[j].optional && badpointer( *(tables[j].tbpp) )) {
+			fprintf(stderr, "**** File contains no required table '%s'\n", tables[j].name);
+			exit(1);
+		}
+
+	handle_name();
+
+	handle_head();
+
+	ttf_nglyphs = ntohs(maxp_table->numGlyphs);
+
+	enc_found_ms = enc_found_mac = 0;
+}
+
+/*
+ * Close font.
+ * Exit on error.
+ */
+
+static void
+closefont(
+	void
+)
+{
+	return; /* empty operation */
+}
+
+/*
+ * Get the number of glyphs in font.
+ */
+
+static int
+getnglyphs (
+	void
+)
+{
+	return ttf_nglyphs;
+}
+
+/*
+ * Get the names of the glyphs.
+ * Returns 0 if the names were assigned, non-zero if the font
+ * provides no glyph names.
+ */
+
+static int
+glnames(
+	GLYPH *glyph_list
+)
+{
+	int             i, len, n, npost;
+	unsigned int    format;
+	USHORT         *name_index;
+	char           *ptr, *p;
+	char          **ps_name_ptr = (char **) malloc(ttf_nglyphs * sizeof(char *));
+	int             n_ps_names;
+	int             ps_fmt_3 = 0;
+
+	format = ntohl(post_table->formatType);
+
+	if (format == 0x00010000) {
+		for (i = 0; i < 258 && i < ttf_nglyphs; i++) {
+			glyph_list[i].name = mac_glyph_names[i];
+		}
+	} else if (format == 0x00020000) {
+                npost = ntohs(post_table->numGlyphs);
+                if (ttf_nglyphs != npost) {
+                        /* This is an error in the font, but we can now cope */
+                        WARNING_1 fprintf(stderr, "**** Postscript table size mismatch %d/%d ****\n",
+                                npost, ttf_nglyphs);
+                }
+                n_ps_names = 0;
+                name_index = &(post_table->glyphNameIndex);
+
+                /* This checks the integrity of the post table */       
+                for (i=0; i<npost; i++) {
+                    n = ntohs(name_index[i]);
+                    if (n > n_ps_names + 257) {
+                        n_ps_names = n - 257;
+                    }
+                }
+
+                ptr = (char *) post_table + 34 + (ttf_nglyphs << 1);
+                i = 0;
+                while (*ptr > 0 && i < n_ps_names) {
+                        len = *ptr;
+                        /* previously the program wrote nulls into the table. If the table
+                           was corrupt, this could put zeroes anywhere, leading to obscure bugs,
+                           so now I malloc space for the names. Yes it is much less efficient */
+                           
+                        if ((p = malloc(len+1)) == NULL) {
+                            fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+                            exit(255);
+                        }
+                        
+                        ps_name_ptr[i] = p;
+                        strncpy(p, ptr+1, len);
+                        p[len] = '\0';
+                        i ++;
+                        ptr += len + 1;
+                }
+        
+                if (i != n_ps_names)
+                {
+                    WARNING_2 fprintf (stderr, "** Postscript Name mismatch %d != %d **\n",
+                             i, n_ps_names);
+                    n_ps_names = i;
+                }
+
+                /*
+                 * for (i=0; i<n_ps_names; i++) { fprintf(stderr, "i=%d,
+                 * len=%d, name=%s\n", i, ps_name_len[i], ps_name_ptr[i]); }
+                 */
+
+                for (i = 0; i < npost; i++) {
+                        n = ntohs(name_index[i]);
+                        if (n < 258) {
+                                glyph_list[i].name = mac_glyph_names[n];
+                        } else if (n < 258 + n_ps_names) {
+                                glyph_list[i].name = ps_name_ptr[n - 258];
+                        } else {
+                                glyph_list[i].name = malloc(16);
+                                sprintf(glyph_list[i].name, "_g_%d", i);
+                                WARNING_2 fprintf(stderr,
+                                        "Glyph No. %d has no postscript name, becomes %s\n",
+                                        i, glyph_list[i].name);
+                        }
+                }
+                /* Now fake postscript names for all those beyond the end of the table */
+                if (npost < ttf_nglyphs) {
+                    for (i=npost; i<ttf_nglyphs; i++) {
+                        if ((glyph_list[i].name = malloc(16)) == NULL)
+                        {
+                            fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+                            exit(255);
+                        }
+                        sprintf(glyph_list[i].name, "_g_%d", i);
+                        WARNING_2 fprintf(stderr,
+                                "Glyph No. %d has no postscript name, becomes %s\n",
+                                i, glyph_list[i].name);
+                    }
+                }
+	} else if (format == 0x00030000) {
+		WARNING_3 fputs("No postscript table, using default\n", stderr);
+		ps_fmt_3 = 1;
+	} else if (format == 0x00028000) {
+		ptr = (char *) &(post_table->numGlyphs);
+		for (i = 0; i < ttf_nglyphs; i++) {
+			glyph_list[i].name = mac_glyph_names[i + ptr[i]];
+		}
+	} else {
+		fprintf(stderr,
+			"**** Postscript table in wrong format %x ****\n",
+			format);
+		exit(1);
+	}
+
+	return ps_fmt_3;
+}
+
+/*
+ * Get the metrics of the glyphs.
+ */
+
+static void
+glmetrics(
+	GLYPH *glyph_list
+)
+{
+	int             i;
+	int             n_hmetrics = ntohs(hhea_table->numberOfHMetrics);
+	GLYPH          *g;
+	LONGHORMETRIC  *hmtx_entry = hmtx_table;
+	FWORD          *lsblist;
+
+	for (i = 0; i < n_hmetrics; i++) {
+		g = &(glyph_list[i]);
+		g->width = ntohs(hmtx_entry->advanceWidth);
+		g->lsb = ntohs(hmtx_entry->lsb);
+		hmtx_entry++;
+	}
+
+	lsblist = (FWORD *) hmtx_entry;
+	hmtx_entry--;
+
+	for (i = n_hmetrics; i < ttf_nglyphs; i++) {
+		g = &(glyph_list[i]);
+		g->width = ntohs(hmtx_entry->advanceWidth);
+		g->lsb = ntohs(lsblist[i - n_hmetrics]);
+	}
+
+	for (i = 0; i < ttf_nglyphs; i++) {
+		g = &(glyph_list[i]);
+		get_glyf_table(i, &glyf_table, &g->ttf_pathlen);
+
+		g->xMin = (short)ntohs(glyf_table->xMin);
+		g->xMax = (short)ntohs(glyf_table->xMax);
+		g->yMin = (short)ntohs(glyf_table->yMin);
+		g->yMax = (short)ntohs(glyf_table->yMax);
+	}
+
+}
+
+
+static void
+handle_ms_encoding(
+	GLYPH *glyph_list,
+	int *encoding,
+	int *unimap
+)
+{
+	int             i, j, k, kk, set_ok;
+	USHORT          start, end, ro;
+	short           delta, n;
+
+	for (j = 0; j < cmap_n_segs - 1; j++) {
+		start = ntohs(cmap_seg_start[j]);
+		end = ntohs(cmap_seg_end[j]);
+		delta = ntohs(cmap_idDelta[j]);
+		ro = ntohs(cmap_idRangeOffset[j]);
+
+		for (k = start; k <= end; k++) {
+			if (ro == 0) {
+				n = k + delta;
+			} else {
+				n = ntohs(*((ro >> 1) + (k - start) +
+				 &(cmap_idRangeOffset[j])));
+				if (delta != 0)
+				{
+					/*  Not exactly sure how to deal with this circumstance,
+						I suspect it never occurs */
+					n += delta;
+					fprintf (stderr,
+						 "rangeoffset and delta both non-zero - %d/%d",
+						 ro, delta);
+				}
+			}
+			if(n<0 || n>=ttf_nglyphs) {
+				WARNING_1 fprintf(stderr, "Font contains a broken glyph code mapping, ignored\n");
+				continue;
+			}
+
+            // Find the first available orig_code slot
+            for (i = 0; i < GLYPH_MAX_ENCODINGS; i++ ) {
+
+              if ( glyph_list[n].orig_code[i] == -1 )
+                break;
+
+            }
+
+            if ( i == GLYPH_MAX_ENCODINGS ) {
+              //#if 0
+				if (strcmp(glyph_list[n].name, ".notdef") != 0) {
+					WARNING_2 fprintf(stderr,
+						"Glyph %s has >= %d encodings (A), %4.4x & %4.4x\n",
+                                      GLYPH_MAX_ENCODINGS,
+                                      glyph_list[n].name,
+                                      glyph_list[n].orig_code[0],
+                                      k);
+				}
+                //#endif
+				set_ok = 0;
+                break;
+			} else {
+				set_ok = 1;
+			}
+			if (enc_type==1 || forcemap) {
+				kk = unicode_rev_lookup(k);
+				if(ISDBG(UNICODE))
+					fprintf(stderr, "Unicode %s - 0x%04x\n",glyph_list[n].name,k);
+				if (set_ok) {
+					glyph_list[n].orig_code[i] = k;
+					/* glyph_list[n].char_no = kk; */
+				}
+				if (kk >= 0 && kk < ENCTABSZ && encoding[kk] == -1)
+					encoding[kk] = n;
+			} else {
+				if ((k & 0xff00) == 0xf000) {
+					if( encoding[k & 0x00ff] == -1 ) {
+						encoding[k & 0x00ff] = n;
+						if (set_ok) {
+							/* glyph_list[n].char_no = k & 0x00ff; */
+							glyph_list[n].orig_code[i] = k;
+						}
+					}
+				} else {
+					if (set_ok) {
+						/* glyph_list[n].char_no = k; */
+						glyph_list[n].orig_code[i] = k;
+					}
+					WARNING_2 fprintf(stderr,
+						"Glyph %s has non-symbol encoding %4.4x\n",
+					 glyph_list[n].name,
+						k & 0xffff);
+					/*
+					 * just use the code
+					 * as it is
+					 */
+					if ((k & ~0xff) == 0 && encoding[k] == -1 )
+						encoding[k] = n;
+				}
+			}
+		}
+	}
+}
+
+static void
+handle_mac_encoding(
+	GLYPH *glyph_list,
+	int *encoding,
+	int *unimap
+)
+{
+	short           n;
+	int             j, size;
+
+	size = ntohs(encoding0->length) - 6;
+	for (j = 0; j < size; j++) {
+		n = encoding0->glyphIdArray[j];
+		if (glyph_list[n].char_no != -1) {
+			WARNING_2 fprintf(stderr,
+				"Glyph %s has >= two encodings (B), %4.4x & %4.4x\n",
+				glyph_list[n].name,
+				  glyph_list[n].char_no,
+				j);
+		} else {
+			if (j < ENCTABSZ) {
+				if(encoding[j] == -1) {
+					glyph_list[n].char_no = j;
+					encoding[j] = n;
+				}
+			}
+		}
+	}
+}
+
+/*
+ * Get the original encoding of the font. 
+ * Returns 1 for if the original encoding is Unicode, 2 if the
+ * original encoding is other 16-bit, 0 if 8-bit.
+ */
+
+static int
+glenc(
+	GLYPH *glyph_list,
+	int *encoding,
+	int *unimap
+)
+{
+	int             num_tables = ntohs(cmap_table->numberOfEncodingTables);
+	BYTE           *ptr;
+	int             i, format, offset, seg_c2, found;
+	int             platform, encoding_id;
+	TTF_CMAP_ENTRY *table_entry;
+	TTF_CMAP_FMT4  *encoding4;
+
+	if(enc_found_ms) {
+		handle_ms_encoding(glyph_list, encoding, unimap);
+		return enc_type;
+	} else if(enc_found_mac) {
+		handle_mac_encoding(glyph_list, encoding, unimap);
+		return 0;
+	}
+
+	enc_type = 0;
+	found = 0;
+
+	for (i = 0; i < num_tables && !found; i++) {
+		table_entry = &(cmap_table->encodingTable[i]);
+		offset = ntohl(table_entry->offset);
+		encoding4 = (TTF_CMAP_FMT4 *) ((BYTE *) cmap_table + offset);
+		format = ntohs(encoding4->format);
+		platform = ntohs(table_entry->platformID);
+		encoding_id = ntohs(table_entry->encodingID);
+
+		if (format != 4)
+			continue;
+
+		if(force_pid != -1) {
+			if(force_pid != platform || encoding_id != force_eid)
+				continue;
+			WARNING_1 fprintf(stderr, "Found Encoding PID=%d/EID=%d\n", 
+				force_pid, force_eid);
+			enc_type = 1;
+		} else {
+			if (platform == 3 ) {
+				switch (encoding_id) {
+				case 0:
+					WARNING_1 fputs("Found Symbol Encoding\n", stderr);
+					break;
+				case 1:
+					WARNING_1 fputs("Found Unicode Encoding\n", stderr);
+					enc_type = 1;
+					break;
+				default:
+					WARNING_1 {
+						fprintf(stderr,
+						"****MS Encoding ID %d not supported****\n",
+							encoding_id);
+						fputs("Treating it like Symbol encoding\n", stderr);
+					}
+					break;
+				}
+			} else
+				continue;
+		}
+
+		found = 1;
+		seg_c2 = ntohs(encoding4->segCountX2);
+		cmap_n_segs = seg_c2 >> 1;
+		ptr = (BYTE *) encoding4 + 14;
+		cmap_seg_end = (USHORT *) ptr;
+		cmap_seg_start = (USHORT *) (ptr + seg_c2 + 2);
+		cmap_idDelta = (short *) (ptr + (seg_c2 * 2) + 2);
+		cmap_idRangeOffset = (short *) (ptr + (seg_c2 * 3) + 2);
+		enc_found_ms = 1;
+
+		handle_ms_encoding(glyph_list, encoding, unimap);
+	}
+
+	if (!found && force_pid == -1) {
+		WARNING_1 fputs("No Microsoft encoding, looking for MAC encoding\n", stderr);
+		for (i = 0; i < num_tables && !found; i++) {
+			table_entry = &(cmap_table->encodingTable[i]);
+			offset = ntohl(table_entry->offset);
+			encoding0 = (TTF_CMAP_FMT0 *) ((BYTE *) cmap_table + offset);
+			format = ntohs(encoding0->format);
+			platform = ntohs(table_entry->platformID);
+			encoding_id = ntohs(table_entry->encodingID);
+
+			if (format == 0) {
+				found = 1;
+				enc_found_mac = 1;
+
+				handle_mac_encoding(glyph_list, encoding, unimap);
+			}
+		}
+	}
+
+	if (!found && force_pid == -1) {
+		WARNING_1 fputs("No MAC encoding either, looking for any format 4 encoding\n", stderr);
+		for (i = 0; i < num_tables && !found; i++) {
+			table_entry = &(cmap_table->encodingTable[i]);
+			offset = ntohl(table_entry->offset);
+			encoding4 = (TTF_CMAP_FMT4 *) ((BYTE *) cmap_table + offset);
+			format = ntohs(encoding4->format);
+			platform = ntohs(table_entry->platformID);
+			encoding_id = ntohs(table_entry->encodingID);
+
+			if (format != 4)
+				continue;
+
+			WARNING_1 fprintf(stderr, "Found a last ditch encoding PID=%d/EID=%d, treating it as Unicode.\n", 
+				platform, encoding_id);
+			found = 1;
+			enc_type = 1;
+			seg_c2 = ntohs(encoding4->segCountX2);
+			cmap_n_segs = seg_c2 >> 1;
+			ptr = (BYTE *) encoding4 + 14;
+			cmap_seg_end = (USHORT *) ptr;
+			cmap_seg_start = (USHORT *) (ptr + seg_c2 + 2);
+			cmap_idDelta = (short *) (ptr + (seg_c2 * 2) + 2);
+			cmap_idRangeOffset = (short *) (ptr + (seg_c2 * 3) + 2);
+			enc_found_ms = 1;
+
+			handle_ms_encoding(glyph_list, encoding, unimap);
+		
+		}
+	}
+
+	if (!found) {
+		if(force_pid != -1) {
+			fprintf(stderr, "*** TTF encoding table PID=%d/EID=%d not found\n", 
+				force_pid, force_eid);
+		}
+		fprintf(stderr, "**** No Recognised Encoding Table ****\n");
+		if(warnlevel >= 2) {
+			fprintf(stderr, "Font contains the following unsupported encoding tables:\n");
+			for (i = 0; i < num_tables && !found; i++) {
+				table_entry = &(cmap_table->encodingTable[i]);
+				offset = ntohl(table_entry->offset);
+				encoding0 = (TTF_CMAP_FMT0 *) ((BYTE *) cmap_table + offset);
+				format = ntohs(encoding0->format);
+				platform = ntohs(table_entry->platformID);
+				encoding_id = ntohs(table_entry->encodingID);
+
+				fprintf(stderr, "  format=%d platform=%d encoding_id=%d\n",
+					format, platform, encoding_id);
+			}
+		}
+		exit(1);
+	}
+
+	return enc_type;
+}
+
+/*
+ * Get the font metrics
+ */
+static void 
+fnmetrics(
+	struct font_metrics *fm
+)
+{
+	char *str;
+	static int fieldstocheck[]= {2,4,6};
+	int i, j, len;
+
+	fm->italic_angle = (short) (ntohs(post_table->italicAngle.upper)) +
+		((short) ntohs(post_table->italicAngle.lower) / 65536.0);
+	fm->underline_position = (short) ntohs(post_table->underlinePosition);
+	fm->underline_thickness = (short) ntohs(post_table->underlineThickness);
+	fm->is_fixed_pitch = ntohl(post_table->isFixedPitch);
+
+	fm->ascender = (short)ntohs(hhea_table->ascender);
+	fm->descender = (short)ntohs(hhea_table->descender);
+
+	fm->units_per_em =  ntohs(head_table->unitsPerEm);
+
+	fm->bbox[0] = (short) ntohs(head_table->xMin);
+	fm->bbox[1] = (short) ntohs(head_table->yMin);
+	fm->bbox[2] = (short) ntohs(head_table->xMax);
+	fm->bbox[3] = (short) ntohs(head_table->yMax);
+
+	fm->name_copyright = name_fields[0];
+	fm->name_family = name_fields[1];
+	fm->name_style = name_fields[2];
+	fm->name_full = name_fields[4];
+	fm->name_version = name_fields[5];
+	fm->name_ps = name_fields[6];
+
+	/* guess the boldness from the font names */
+	fm->force_bold=0;
+
+	for(i=0; !fm->force_bold && i<sizeof fieldstocheck /sizeof(int); i++) {
+		str = name_fields[fieldstocheck[i]];
+		len = strlen(str);
+		for(j=0; j<len; j++) {
+			if( (str[j]=='B'
+				|| str[j]=='b' 
+					&& ( j==0 || !isalpha(str[j-1]) )
+				)
+			&& !strncmp("old",&str[j+1],3)
+			&& (j+4 >= len || !islower(str[j+4]))
+			) {
+				fm->force_bold=1;
+				break;
+			}
+		}
+	}
+}
+
+/*
+ * Get the path of contrours for a glyph.
+ */
+
+static void
+glpath(
+	int glyphno,
+	GLYPH *glyf_list
+)
+{
+	double          matrix[6];
+	GLYPH          *g;
+
+	g = &glyph_list[glyphno];
+
+	matrix[0] = matrix[3] = 1.0;
+	matrix[1] = matrix[2] = matrix[4] = matrix[5] = 0.0;
+	draw_composite_glyf(g, glyf_list, glyphno, matrix, 0 /*level*/);
+}
+
+/*
+ * Get the kerning data.
+ */
+
+static void
+kerning(
+	GLYPH *glyph_list
+)
+{
+	TTF_KERN_SUB   *subtable;
+	TTF_KERN_ENTRY *kern_entry;
+	int             i, j;
+	int             ntables;
+	int             npairs;
+	char           *ptr;
+
+	if(kern_table == NULL) {
+        WARNING_1 fputs("No Kerning data\n", stderr);
+		return;
+	}
+	if(badpointer(kern_table)) {
+        fputs("**** Defective Kerning table, ignored\n", stderr);
+		return;
+	}
+
+	ntables = ntohs(kern_table->nTables);
+	ptr = (char *) kern_table + 4;
+
+	for (i = 0; i < ntables; i++) {
+		subtable = (TTF_KERN_SUB *) ptr;
+		if ((ntohs(subtable->coverage) & 0xff00) == 0) {
+			npairs = (short) ntohs(subtable->nPairs);
+			kern_entry = (TTF_KERN_ENTRY *) (ptr + sizeof(TTF_KERN_SUB));
+
+			kern_entry = (TTF_KERN_ENTRY *) (ptr + sizeof(TTF_KERN_SUB));
+			for (j = 0; j < npairs; j++) {
+				if( kern_entry->value != 0)
+					addkernpair(ntohs(kern_entry->left), 
+						ntohs(kern_entry->right), (short)ntohs(kern_entry->value));
+				kern_entry++;
+			}
+		}
+		ptr += subtable->length;
+	}
+}
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/FONTS.hpux.html
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/FONTS.hpux.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/FONTS.hpux.html	(revision 2000)
@@ -0,0 +1,197 @@
+<HTML>
+<HEAD>
+<TITLE>
+How to install new Type1 fonts on an HP-UX 10.20 machine
+</TITLE>
+</HEAD>
+<BODY>
+Sergey A. Babkin
+<br>
+<A HREF="mailto:babkin@bellatlantic.net">
+&lt;babkin@bellatlantic.net&gt;</A> or <A HREF="mailto:sab123@hotmail.com">&lt;sab123@hotmail.com&gt;</A>
+<p>
+<! 
+(Do not edit this file, it is generated from FONTS.hpux.html!!!)
+>
+
+<H3>
+How to install new Type1 fonts on an HP-UX 10.20 machine
+</H3>
+<!
+--------------------------------------------------------
+>
+
+1. Add the font files to <tt>/usr/lib/X11/fonts/type1.st/typefaces</tt>.
+<p>
+
+2. Add the font descriptions to 
+<tt>/usr/lib/X11/fonts/type1.st/typefaces/fonts.scale</tt>. Run `mkfontdir'
+in <tt>/usr/lib/X11/fonts/type1.st/typefaces</tt>. In the descriptions
+you have to specify the font manufacturer as `misc', like:
+<p>
+
+<tt>
+&nbsp;&nbsp;-misc-courier-...
+</tt>
+<p>
+
+3. Copy <tt>/usr/lib/X11/fonts/type1.st/typefaces/fonts.dir</tt> to
+<tt>/usr/lib/X11/fonts/type1.st/licenses/STSYSTEM/DISPLAYS/fonts.dir</tt>.
+Better yet, create a symbolic link.
+<p>
+
+4. For each font encoding you are going to use create a description
+file in <tt>/usr/lib/X11/fonts/stadmin/type1/charsets</tt>. Of course, if you
+are going to use the same fonts in several encodings, the best way
+would be to create fair descriptions of charsets and really store
+only one encoding in typefaces, all the others will be produced
+automatically. That's not difficult at all. 
+But the simplest way is to just copy the file <tt>cp.iso8859-1</tt> 
+to <tt>cp.<i>&lt;your-encoding-name&gt;</i></tt>, like <tt>cp.koi8-r</tt>.
+<p>
+
+5. Restart you X server and/or font server.
+<p>
+
+<H4>
+What if you don't have the `root' privileges ?
+</H4>
+<!
+----------------------------------------------
+>
+
+You still can run the font server and configure your X server
+to get the fonts from it. 
+<p>
+
+Further let's suppose that the name on which you are going
+to run the font server is named `somehost'. Login to it
+and configure the font server.
+<p>
+
+First, choose some unused port. Numbers around 9000 are a good
+choice. Verify that this port is not used by somebody else
+by entering
+<p>
+
+<blockquote><tt>
+	netstat -naf inet |grep 9000
+</tt></blockquote>
+
+and look what happens. If you get nothing, that's good, this
+port is unused. If you get some lines of data, try abother port.
+<p>
+
+Go to you home directory <tt>$HOME</tt> and create some directory for
+your font server, say, <tt>$HOME/fs</tt>. Copy the directory structure
+of <tt>/usr/lib/X11/fonts/type1.st</tt> into <tt>$HOME/fs</tt>, so that in result
+you get <tt>$HOME/fs/type1.st/<i>&lt;whatever was there&gt;</i></tt>. Copy the directory 
+structure of <tt>/usr/lib/X11/fonts/stadmin/type1/charsets</tt> into <tt>$HOME/fs</tt>, 
+so that in result you get <tt>$HOME/fs/charsets/<i>&lt;whatever was there&gt;</i></tt>.
+Install the new fonts in these directorues as described above.
+<p>
+
+Then create the fontserver configuration file, say, <tt>$HOME/fs/xfs.cfg</tt>.
+The sample contents (supposing that my <tt>$HOME</tt> is equal to <tt>/home/babkin</tt>) 
+is:
+<p>
+
+<!
+--------------8&lt;----------- cut here -----------------------------
+>
+<hr>
+<tt>
+# font server configuration file                                    
+<br>
+# $XConsortium: config.cpp,v 1.7 91/08/22 11:39:59 rws Exp $        
+<br>
+                                                                    
+<br>
+rasterizers = /usr/lib/X11/fs/ufstrast.sl,/usr/lib/X11/fs/iforast.sl
+<br>
+                                                                    
+<br>
+clone-self = off                                                    
+<br>
+use-syslog = off                                                    
+<br>
+catalogue = /home/babkin/fs/type1.st              
+<br>
+# in decipoints                                                     
+<br>
+default-point-size = 120                                            
+<br>
+default-resolutions = 100,100,75,75
+<br>
+port=9000                                                           
+<br>
+error-file=/home/babkin/fs/fs.err                 
+</tt>
+<hr>
+<!
+--------------8&lt;----------- cut here -----------------------------
+>
+<p>
+
+Then create the script to start your font server, say, <tt>$HOME/fs/runme</tt>:
+<p>
+
+<!
+--------------8&lt;----------- cut here -----------------------------
+>
+<hr>
+<tt>
+TYPE1_CODEPAGE_DIR=$HOME/fs/charsets                                         
+<br>
+export TYPE1_CODEPAGE_DIR                                                 
+<br>
+kill `ps -ef | grep $HOME/\[f\]s/xfs.cfg | awk '{print $2}'`; 
+<br>
+nohup xfs -config $HOME/fs/xfs.cfg &
+</tt>
+<hr>
+<!
+--------------8&lt;----------- cut here -----------------------------
+>
+<p>
+
+Don't forget to make <tt>$HOME/fs/runme</tt> executable. Then you can
+execute it manually or from you .profile.
+<p>
+
+After you get your font server running, just execute the following
+command (with proper host name and port number) in your X session
+<p>
+
+<blockquote><tt>
+	xset fp+ tcp/somehost:9000
+</tt></blockquote>
+
+to get the access to your private font server. You can add this
+information to the configuration data of your X server or just
+put it also into your .profile. In the latter case the best way
+to do that would be like:
+<p>
+
+<!
+--------------8&lt;----------- cut here -----------------------------
+>
+<hr>
+<tt>
+...
+<br>
+$HOME/fs/runme
+<br>
+sleep 2 # give it some time to start
+<br>
+xset fp+ tcp/somehost:9000
+<br>
+...
+</tt>
+<hr>
+<!
+--------------8&lt;----------- cut here -----------------------------
+>
+<p>
+</BODY>
+</HTML>
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/windows.h
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/windows.h	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/windows.h	(revision 2000)
@@ -0,0 +1,93 @@
+/*
+ * Implementation of things missing in Windows
+ */
+
+#ifndef M_PI
+#define M_PI  3.14159265358979323846
+#endif
+
+#undef ntohs
+#undef ntohl
+#undef htonl
+
+#ifdef WINDOWS_FUNCTIONS
+/* byte order */
+
+static unsigned short StoM(unsigned short inv) {
+    union iconv {
+        unsigned short    ui;
+        unsigned char   uc[2];
+    } *inp, outv;
+
+    inp = (union iconv *)&inv;
+
+    outv.uc[0] = inp->uc[1];
+    outv.uc[1] = inp->uc[0];
+ 
+    return (outv.ui);
+}
+
+static unsigned int ItoM(unsigned int inv) {
+    union iconv {
+        unsigned int    ui;
+        unsigned char   uc[4];
+    } *inp, outv;
+
+    inp = (union iconv *)&inv;
+
+    outv.uc[0] = inp->uc[3];
+    outv.uc[1] = inp->uc[2];
+    outv.uc[2] = inp->uc[1];
+    outv.uc[3] = inp->uc[0];
+
+    return (outv.ui);
+}
+
+unsigned short ntohs(unsigned short inv) { return StoM(inv); }
+unsigned long ntohl(unsigned long inv) { return ItoM(inv); }
+unsigned long htonl(unsigned long inv) { return ItoM(inv); }
+
+char *optarg;
+int optind=1;
+
+char getopt(int argc, char **argv, char *args) {
+	int n,nlen=strlen(args),nLen=0;
+	char nCmd;
+	
+	if (argv[optind] && *argv[optind]=='-') {
+		nCmd=*((argv[optind]+1));
+
+		for (n=0;n<nlen;n++) {
+			if (args[n] == ':') continue;
+			if (args[n] == nCmd) {
+				if (args[n+1]==':') {
+					char retVal;
+					retVal=*(argv[optind]+1);
+					optarg=argv[optind+1];
+					if (!optarg) optarg="";
+					optind+=2;
+					return retVal;
+				} else {
+					char retVal;
+					retVal=*(argv[optind]+1);
+					optarg=NULL;
+					optind+=1;
+					return retVal;
+				}
+			}
+		}	
+	}
+	return -1;
+}
+
+#else
+
+unsigned short ntohs(unsigned short inv);
+unsigned long ntohl(unsigned long inv);
+unsigned long htonl(unsigned long inv);
+
+extern char *optarg;
+extern int optind;
+
+char getopt(int argc, char **argv, char *args);
+#endif
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/winbuild.bat
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/winbuild.bat	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/winbuild.bat	(revision 2000)
@@ -0,0 +1,11 @@
+rem file to build ttf2pt1 with Visual C++
+
+cl -DWINDOWS -c bdf.c
+cl -DWINDOWS -c ttf2pt1.c
+cl -DWINDOWS -c pt1.c
+cl -DWINDOWS -c ttf.c
+cl -DWINDOWS -c t1asm.c
+cl -DWINDOWS -c bitmap.c
+cl -o ttf2ufm ttf2pt1.obj pt1.obj t1asm.obj ttf.obj bdf.obj bitmap.obj
+cl -o t1asm -DWINDOWS -DSTANDALONE t1asm.c
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/README.FIRST
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/README.FIRST	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/README.FIRST	(revision 2000)
@@ -0,0 +1,4 @@
+To get the plain-text README and installation guides run:  
+  
+  make docs
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf.h
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf.h	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf.h	(revision 2000)
@@ -0,0 +1,172 @@
+/*
+ * see COPYRIGHT
+ */
+
+/*	these definitions are mostly taken from Microsoft's True Type
+	documentation.
+*/
+
+#define BYTE unsigned char
+#define CHAR signed char
+#define USHORT unsigned short
+#define SHORT signed short
+#define ULONG unsigned int
+#define LONG signed int
+#define FWORD SHORT
+#define UFWORD USHORT
+
+#define ONOROFF	0x01
+#define XSHORT	0x02
+#define YSHORT	0x04
+#define REPEAT	0x08
+#define XSAME	0x10
+#define YSAME	0x20
+
+#define ARG_1_AND_2_ARE_WORDS		0x0001
+#define ARGS_ARE_XY_VALUES 			0x0002
+#define XY_BOUND_TO_GRID			0x0004
+#define WE_HAVE_A_SCALE		 		0x0008
+#define MORE_COMPONENTS				0x0020
+#define WE_HAVE_AN_X_AND_Y_SCALE	0x0040
+#define WE_HAVE_A_TWO_BY_TWO		0x0080
+#define WE_HAVE_INSTRUCTIONS		0x0100
+#define USE_MY_METRICS				0x0200
+
+typedef struct short_2 {
+	SHORT	upper;
+	USHORT	lower;
+} FIXED ;
+
+typedef struct longhormetric {
+	UFWORD	advanceWidth;
+	FWORD	lsb;
+} LONGHORMETRIC;
+
+typedef struct ttf_hhea {
+	BYTE	version[4];
+	SHORT	ascender, descender, lineGap;
+	USHORT	advnaceWidthMax;
+	SHORT	minLSB, minRSB, xMaxExtent;
+	SHORT	caretSlopeRise, caretSlopeRun;
+	SHORT	reserved[5];
+	SHORT	metricDataFormat;
+	USHORT	numberOfHMetrics;
+} TTF_HHEA;
+
+typedef struct ttf_dir_entry {
+	char	tag[4];
+	ULONG	checksum;
+	ULONG	offset;
+	ULONG	length;
+} TTF_DIR_ENTRY ;
+
+typedef struct ttf_directory {
+	ULONG			sfntVersion;
+	USHORT			numTables;
+	USHORT			searchRange;
+	USHORT			entrySelector;
+	USHORT			rangeShift;
+	TTF_DIR_ENTRY	list;
+} TTF_DIRECTORY ;
+
+typedef struct ttf_name_rec {
+	USHORT	platformID;
+	USHORT	encodingID;
+	USHORT	languageID;
+	USHORT	nameID;
+	USHORT	stringLength;
+	USHORT	stringOffset;
+} TTF_NAME_REC;
+
+typedef struct ttf_name {
+	USHORT			format;
+	USHORT			numberOfNameRecords;
+	USHORT			offset;
+	TTF_NAME_REC	nameRecords;
+} TTF_NAME ;
+
+typedef struct ttf_head {
+	ULONG	version;
+	ULONG	fontRevision;
+	ULONG	checksumAdjust;
+	ULONG	magicNo;
+	USHORT	flags;
+	USHORT	unitsPerEm;
+	BYTE	created[8];
+	BYTE	modified[8];
+	FWORD	xMin, yMin, xMax, yMax;
+	USHORT	macStyle, lowestRecPPEM;
+	SHORT	fontDirection, indexToLocFormat, glyphDataFormat;
+} TTF_HEAD ;
+
+typedef struct ttf_kern {
+	USHORT	version, nTables;
+} TTF_KERN ;
+
+typedef struct ttf_kern_sub {
+	USHORT version, length, coverage;
+	USHORT nPairs, searchRange, entrySelector, rangeShift;
+} TTF_KERN_SUB;
+
+typedef struct ttf_kern_entry {
+	USHORT	left, right;
+	FWORD	value;
+} TTF_KERN_ENTRY;
+
+typedef struct ttf_cmap_fmt0 {
+	USHORT	format;
+	USHORT	length;
+	USHORT	version;
+	BYTE	glyphIdArray[256];
+} TTF_CMAP_FMT0;
+
+typedef struct ttf_cmap_fmt4 {
+	USHORT	format;
+	USHORT	length;
+	USHORT	version;
+	USHORT	segCountX2;
+	USHORT	searchRange;
+	USHORT	entrySelector;
+	USHORT	rangeShift;
+} TTF_CMAP_FMT4;
+
+typedef struct ttf_cmap_entry {
+	USHORT	platformID;
+	USHORT	encodingID;
+	ULONG	offset;
+} TTF_CMAP_ENTRY;
+
+typedef struct ttf_cmap {
+	USHORT			version;
+	USHORT			numberOfEncodingTables;
+	TTF_CMAP_ENTRY	encodingTable[1];
+} TTF_CMAP ;
+
+typedef struct ttf_glyf {
+	SHORT	numberOfContours;
+	FWORD	xMin, yMin, xMax, yMax;
+} TTF_GLYF ;
+
+typedef struct ttf_maxp {
+	ULONG	version;
+	USHORT	numGlyphs, maxPoints, maxContours;
+	USHORT	maxCompositePoints, maxCompositeContours;
+	USHORT	maxZones, maxTwilightPoints, maxStorage;
+	USHORT	maxFunctionDefs, maxInstructionsDefs;
+	USHORT	maxSizeOfInstructions, maxComponentElements;
+	USHORT	maxComponentDepth;
+} TTF_MAXP ;
+
+typedef struct ttf_post_head {
+	ULONG	formatType;
+	FIXED	italicAngle;
+	FWORD	underlinePosition;
+	FWORD	underlineThickness;
+	ULONG	isFixedPitch;
+	ULONG	minMemType42;
+	ULONG	maxMemType42;
+	ULONG	minMemType1;
+	ULONG	maxMemType1;
+	USHORT	numGlyphs;
+	USHORT	glyphNameIndex;
+} TTF_POST_HEAD ;
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/pt1.c
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/pt1.c	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/pt1.c	(revision 2000)
@@ -0,0 +1,7390 @@
+/*
+ * see COPYRIGHT
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <time.h>
+#include <ctype.h>
+#include <math.h>
+
+#ifndef WINDOWS
+#	include <netinet/in.h>
+#	include <unistd.h>
+#else
+#	include "windows.h"
+#endif
+
+#include "ttf.h"
+#include "pt1.h"
+#include "global.h"
+
+/* big and small values for comparisons */
+#define FBIGVAL	(1e20)
+#define FEPS	(100000./FBIGVAL)
+
+/* names of the axes */
+#define X	0
+#define	Y	1
+
+/* the GENTRY extension structure used in fforceconcise() */
+
+struct gex_con {
+	double d[2 /*X, Y*/]; /* sizes of curve */
+	double sin2; /* squared sinus of the angle to the next gentry */
+	double len2; /* squared distance between the endpoints */
+
+/* number of reference dots taken from each curve */
+#define NREFDOTS	3
+
+	double dots[NREFDOTS][2]; /* reference dots */
+
+	int flags; /* flags for gentry and tits joint to the next gentry */
+/* a vertical or horizontal line may be in 2 quadrants at once */
+#define GEXF_QUL	0x00000001 /* in up-left quadrant */
+#define GEXF_QUR	0x00000002 /* in up-right quadrant */
+#define GEXF_QDR	0x00000004 /* in down-right quadrant */
+#define GEXF_QDL	0x00000008 /* in down-left quadrant */
+#define GEXF_QMASK	0x0000000F /* quadrant mask */
+
+/* if a line is nearly vertical or horizontal, we remember that idealized quartant too */
+#define GEXF_QTO_IDEAL(f)	(((f)&0xF)<<4)
+#define GEXF_QFROM_IDEAL(f)	(((f)&0xF0)>>4)
+#define GEXF_IDQ_L	0x00000090 /* left */
+#define GEXF_IDQ_R	0x00000060 /* right */
+#define GEXF_IDQ_U	0x00000030 /* up */
+#define GEXF_IDQ_D	0x000000C0 /* down */
+
+/* possibly can be joined with conditions: 
+ * (in order of increasing preference, the numeric order is important) 
+ */
+#define GEXF_JLINE	0x00000100 /* into one line */
+#define GEXF_JIGN	0x00000200 /* if one entry's tangent angle is ignored */
+#define GEXF_JID	0x00000400 /* if one entry is idealized to hor/vert */
+#define GEXF_JFLAT	0x00000800 /* if one entry is flattened */
+#define GEXF_JGOOD	0x00001000 /* perfectly, no additional maodifications */
+
+#define GEXF_JMASK	0x00001F00 /* the mask of all above */
+#define GEXF_JCVMASK	0x00001E00 /* the mask of all above except JLINE */
+
+/* which entry needs to be modified for conditional joining */
+#define GEXF_JIGN1	0x00002000
+#define GEXF_JIGN2	0x00004000
+#define GEXF_JIGNDIR(dir)	(GEXF_JIGN1<<(dir))
+#define GEXF_JID1	0x00008000
+#define GEXF_JID2	0x00010000
+#define GEXF_JIDDIR(dir)	(GEXF_JID1<<(dir))
+#define GEXF_JFLAT1	0x00020000
+#define GEXF_JFLAT2	0x00040000
+#define GEXF_JFLATDIR(dir)	(GEXF_JFLAT1<<(dir))
+
+#define GEXF_VERT	0x00100000 /* is nearly vertical */
+#define GEXF_HOR	0x00200000 /* is nearly horizontal */
+#define GEXF_FLAT	0x00400000 /* is nearly flat */
+
+#define GEXF_VDOTS	0x01000000 /* the dots are valid */
+
+	signed char isd[2 /*X,Y*/]; /* signs of the sizes */
+};
+typedef struct gex_con GEX_CON;
+
+/* convenience macros */
+#define	X_CON(ge)	((GEX_CON *)((ge)->ext))
+#define X_CON_D(ge)	(X_CON(ge)->d)
+#define X_CON_DX(ge)	(X_CON(ge)->d[0])
+#define X_CON_DY(ge)	(X_CON(ge)->d[1])
+#define X_CON_ISD(ge)	(X_CON(ge)->isd)
+#define X_CON_ISDX(ge)	(X_CON(ge)->isd[0])
+#define X_CON_ISDY(ge)	(X_CON(ge)->isd[1])
+#define X_CON_SIN2(ge)	(X_CON(ge)->sin2)
+#define X_CON_LEN2(ge)	(X_CON(ge)->len2)
+#define X_CON_F(ge)	(X_CON(ge)->flags)
+
+/* performance statistics about guessing the concise curves */
+static int ggoodcv=0, ggoodcvdots=0, gbadcv=0, gbadcvdots=0;
+
+int      stdhw, stdvw;	/* dominant stems widths */
+int      stemsnaph[12], stemsnapv[12];	/* most typical stem width */
+
+int      bluevalues[14];
+int      nblues;
+int      otherblues[10];
+int      notherb;
+int      bbox[4];	/* the FontBBox array */
+double   italic_angle;
+
+GLYPH   *glyph_list;
+int    encoding[ENCTABSZ];	/* inverse of glyph[].char_no */
+int    kerning_pairs = 0;
+
+/* prototypes */
+static void fixcvdir( GENTRY * ge, int dir);
+static void fixcvends( GENTRY * ge);
+static int fgetcvdir( GENTRY * ge);
+static int igetcvdir( GENTRY * ge);
+static int fiszigzag( GENTRY *ge);
+static int iiszigzag( GENTRY *ge);
+static GENTRY * freethisge( GENTRY *ge);
+static void addgeafter( GENTRY *oge, GENTRY *nge );
+static GENTRY * newgentry( int flags);
+static void debugstems( char *name, STEM * hstems, int nhs, STEM * vstems, int nvs);
+static int addbluestems( STEM *s, int n);
+static void sortstems( STEM * s, int n);
+static int stemoverlap( STEM * s1, STEM * s2);
+static int steminblue( STEM *s);
+static void markbluestems( STEM *s, int nold);
+static int joinmainstems( STEM * s, int nold, int useblues);
+static void joinsubstems( STEM * s, short *pairs, int nold, int useblues);
+static void fixendpath( GENTRY *ge);
+static void fdelsmall( GLYPH *g, double minlen);
+static void alloc_gex_con( GENTRY *ge);
+static double fjointsin2( GENTRY *ge1, GENTRY *ge2);
+static double fcvarea( GENTRY *ge);
+static double fcvval( GENTRY *ge, int axis, double t);
+static void fsampledots( GENTRY *ge, double dots[][2], int ndots);
+static void fnormalizege( GENTRY *ge);
+static void fanalyzege( GENTRY *ge);
+static void fanalyzejoint( GENTRY *ge);
+static void fconcisecontour( GLYPH *g, GENTRY *ge);
+static double fclosegap( GENTRY *from, GENTRY *to, int axis,
+	double gap, double *ret);
+
+int
+isign(
+     int x
+)
+{
+	if (x > 0)
+		return 1;
+	else if (x < 0)
+		return -1;
+	else
+		return 0;
+}
+
+int
+fsign(
+     double x
+)
+{
+	if (x > 0.0)
+		return 1;
+	else if (x < 0.0)
+		return -1;
+	else
+		return 0;
+}
+
+static GENTRY *
+newgentry(
+	int flags
+)
+{
+	GENTRY         *ge;
+
+	ge = calloc(1, sizeof(GENTRY));
+
+	if (ge == 0) {
+		fprintf(stderr, "***** Memory allocation error *****\n");
+		exit(255);
+	}
+	ge->stemid = -1;
+	ge->flags = flags;
+	/* the rest is set to 0 by calloc() */
+	return ge;
+}
+
+/*
+ * Routines to print out Postscript functions with optimization
+ */
+
+void
+rmoveto(
+	int dx,
+	int dy
+)
+{
+	if (optimize && dx == 0)
+		fprintf(pfa_file, "%d vmoveto\n", dy);
+	else if (optimize && dy == 0)
+		fprintf(pfa_file, "%d hmoveto\n", dx);
+	else
+		fprintf(pfa_file, "%d %d rmoveto\n", dx, dy);
+}
+
+void
+rlineto(
+	int dx,
+	int dy
+)
+{
+	if (optimize && dx == 0 && dy == 0)	/* for special pathologic
+						 * case */
+		return;
+	else if (optimize && dx == 0)
+		fprintf(pfa_file, "%d vlineto\n", dy);
+	else if (optimize && dy == 0)
+		fprintf(pfa_file, "%d hlineto\n", dx);
+	else
+		fprintf(pfa_file, "%d %d rlineto\n", dx, dy);
+}
+
+void
+rrcurveto(
+	  int dx1,
+	  int dy1,
+	  int dx2,
+	  int dy2,
+	  int dx3,
+	  int dy3
+)
+{
+	/* first two ifs are for crazy cases that occur surprisingly often */
+	if (optimize && dx1 == 0 && dx2 == 0 && dx3 == 0)
+		rlineto(0, dy1 + dy2 + dy3);
+	else if (optimize && dy1 == 0 && dy2 == 0 && dy3 == 0)
+		rlineto(dx1 + dx2 + dx3, 0);
+	else if (optimize && dy1 == 0 && dx3 == 0)
+		fprintf(pfa_file, "%d %d %d %d hvcurveto\n",
+			dx1, dx2, dy2, dy3);
+	else if (optimize && dx1 == 0 && dy3 == 0)
+		fprintf(pfa_file, "%d %d %d %d vhcurveto\n",
+			dy1, dx2, dy2, dx3);
+	else
+		fprintf(pfa_file, "%d %d %d %d %d %d rrcurveto\n",
+			dx1, dy1, dx2, dy2, dx3, dy3);
+}
+
+void
+closepath(void)
+{
+	fprintf(pfa_file, "closepath\n");
+}
+
+/*
+ * Many of the path processing routines exist (or will exist) in
+ * both floating-point and integer version. Fimally most of the
+ * processing will go in floating point and the integer processing
+ * will become legacy.
+ * The names of floating routines start with f, names of integer 
+ * routines start with i, and those old routines existing in one 
+ * version only have no such prefix at all.
+ */
+
+/*
+** Routine that checks integrity of the path, for debugging
+*/
+
+void
+assertpath(
+	   GENTRY * from,
+	   char *file,
+	   int line,
+	   char *name
+)
+{
+	GENTRY         *first, *pe, *ge;
+	int	isfloat;
+
+	if(from==0)
+		return;
+	isfloat = (from->flags & GEF_FLOAT);
+	pe = from->prev;
+	for (ge = from; ge != 0; pe = ge, ge = ge->next) {
+		if( (ge->flags & GEF_FLOAT) ^ isfloat ) {
+			fprintf(stderr, "**! assertpath: called from %s line %d (%s) ****\n", file, line, name);
+			fprintf(stderr, "float flag changes from %s to %s at 0x%p (type %c, prev type %c)\n",
+				(isfloat ? "TRUE" : "FALSE"), (isfloat ? "FALSE" : "TRUE"), ge, ge->type, pe->type);
+			abort();
+		}
+		if (pe != ge->prev) {
+			fprintf(stderr, "**! assertpath: called from %s line %d (%s) ****\n", file, line, name);
+			fprintf(stderr, "unidirectional chain 0x%x -next-> 0x%x -prev-> 0x%x \n",
+				pe, ge, ge->prev);
+			abort();
+		}
+
+		switch(ge->type) {
+		case GE_MOVE:
+			break;
+		case GE_PATH:
+			if (ge->prev == 0) {
+				fprintf(stderr, "**! assertpath: called from %s line %d (%s) ****\n", file, line, name);
+				fprintf(stderr, "empty path at 0x%x \n", ge);
+				abort();
+			}
+			break;
+		case GE_LINE:
+		case GE_CURVE:
+			if(ge->frwd->bkwd != ge) {
+				fprintf(stderr, "**! assertpath: called from %s line %d (%s) ****\n", file, line, name);
+				fprintf(stderr, "unidirectional chain 0x%x -frwd-> 0x%x -bkwd-> 0x%x \n",
+					ge, ge->frwd, ge->frwd->bkwd);
+				abort();
+			}
+			if(ge->prev->type == GE_MOVE) {
+				first = ge;
+				if(ge->bkwd->next->type != GE_PATH) {
+					fprintf(stderr, "**! assertpath: called from %s line %d (%s) ****\n", file, line, name);
+					fprintf(stderr, "broken first backlink 0x%x -bkwd-> 0x%x -next-> 0x%x \n",
+						ge, ge->bkwd, ge->bkwd->next);
+					abort();
+				}
+			}
+			if(ge->next->type == GE_PATH) {
+				if(ge->frwd != first) {
+					fprintf(stderr, "**! assertpath: called from %s line %d (%s) ****\n", file, line, name);
+					fprintf(stderr, "broken loop 0x%x -...-> 0x%x -frwd-> 0x%x \n",
+						first, ge, ge->frwd);
+					abort();
+				}
+			}
+			break;
+		}
+
+	}
+}
+
+void
+assertisfloat(
+	GLYPH *g,
+	char *msg
+)
+{
+	if( !(g->flags & GF_FLOAT) ) {
+		fprintf(stderr, "**! Glyph %s is not float: %s\n", g->name, msg);
+		abort();
+	}
+	if(g->lastentry) {
+		if( !(g->lastentry->flags & GEF_FLOAT) ) {
+			fprintf(stderr, "**! Glyphs %s last entry is int: %s\n", g->name, msg);
+			abort();
+		}
+	}
+}
+
+void
+assertisint(
+	GLYPH *g,
+	char *msg
+)
+{
+	if( (g->flags & GF_FLOAT) ) {
+		fprintf(stderr, "**! Glyph %s is not int: %s\n", g->name, msg);
+		abort();
+	}
+	if(g->lastentry) {
+		if( (g->lastentry->flags & GEF_FLOAT) ) {
+			fprintf(stderr, "**! Glyphs %s last entry is float: %s\n", g->name, msg);
+			abort();
+		}
+	}
+}
+
+
+/*
+ * Routines to save the generated data about glyph
+ */
+
+void
+fg_rmoveto(
+	  GLYPH * g,
+	  double x,
+	  double y)
+{
+	GENTRY         *oge;
+
+	if (ISDBG(BUILDG))
+		fprintf(stderr, "%s: f rmoveto(%g, %g)\n", g->name, x, y);
+
+	assertisfloat(g, "adding float MOVE");
+
+	if ((oge = g->lastentry) != 0) {
+		if (oge->type == GE_MOVE) {	/* just eat up the first move */
+			oge->fx3 = x;
+			oge->fy3 = y;
+		} else if (oge->type == GE_LINE || oge->type == GE_CURVE) {
+			fprintf(stderr, "Glyph %s: MOVE in middle of path\n", g->name);
+		} else {
+			GENTRY         *nge;
+
+			nge = newgentry(GEF_FLOAT);
+			nge->type = GE_MOVE;
+			nge->fx3 = x;
+			nge->fy3 = y;
+
+			oge->next = nge;
+			nge->prev = oge;
+			g->lastentry = nge;
+		}
+	} else {
+		GENTRY         *nge;
+
+		nge = newgentry(GEF_FLOAT);
+		nge->type = GE_MOVE;
+		nge->fx3 = x;
+		nge->fy3 = y;
+		nge->bkwd = (GENTRY*)&g->entries;
+		g->entries = g->lastentry = nge;
+	}
+
+	if (0 && ISDBG(BUILDG))
+		dumppaths(g, NULL, NULL);
+}
+
+void
+ig_rmoveto(
+	  GLYPH * g,
+	  int x,
+	  int y)
+{
+	GENTRY         *oge;
+
+	if (ISDBG(BUILDG))
+		fprintf(stderr, "%s: i rmoveto(%d, %d)\n", g->name, x, y);
+
+	assertisint(g, "adding int MOVE");
+
+	if ((oge = g->lastentry) != 0) {
+		if (oge->type == GE_MOVE) {	/* just eat up the first move */
+			oge->ix3 = x;
+			oge->iy3 = y;
+		} else if (oge->type == GE_LINE || oge->type == GE_CURVE) {
+			fprintf(stderr, "Glyph %s: MOVE in middle of path, ignored\n", g->name);
+		} else {
+			GENTRY         *nge;
+
+			nge = newgentry(0);
+			nge->type = GE_MOVE;
+			nge->ix3 = x;
+			nge->iy3 = y;
+
+			oge->next = nge;
+			nge->prev = oge;
+			g->lastentry = nge;
+		}
+	} else {
+		GENTRY         *nge;
+
+		nge = newgentry(0);
+		nge->type = GE_MOVE;
+		nge->ix3 = x;
+		nge->iy3 = y;
+		nge->bkwd = (GENTRY*)&g->entries;
+		g->entries = g->lastentry = nge;
+	}
+
+}
+
+void
+fg_rlineto(
+	  GLYPH * g,
+	  double x,
+	  double y)
+{
+	GENTRY         *oge, *nge;
+
+	if (ISDBG(BUILDG))
+		fprintf(stderr, "%s: f rlineto(%g, %g)\n", g->name, x, y);
+
+	assertisfloat(g, "adding float LINE");
+
+	nge = newgentry(GEF_FLOAT);
+	nge->type = GE_LINE;
+	nge->fx3 = x;
+	nge->fy3 = y;
+
+	if ((oge = g->lastentry) != 0) {
+		if (x == oge->fx3 && y == oge->fy3) {	/* empty line */
+			/* ignore it or we will get in troubles later */
+			free(nge);
+			return;
+		}
+		if (g->path == 0) {
+			g->path = nge;
+			nge->bkwd = nge->frwd = nge;
+		} else {
+			oge->frwd = nge;
+			nge->bkwd = oge;
+			g->path->bkwd = nge;
+			nge->frwd = g->path;
+		}
+
+		oge->next = nge;
+		nge->prev = oge;
+		g->lastentry = nge;
+	} else {
+		WARNING_1 fprintf(stderr, "Glyph %s: LINE outside of path\n", g->name);
+		free(nge);
+	}
+
+	if (0 && ISDBG(BUILDG))
+		dumppaths(g, NULL, NULL);
+}
+
+void
+ig_rlineto(
+	  GLYPH * g,
+	  int x,
+	  int y)
+{
+	GENTRY         *oge, *nge;
+
+	if (ISDBG(BUILDG))
+		fprintf(stderr, "%s: i rlineto(%d, %d)\n", g->name, x, y);
+
+	assertisint(g, "adding int LINE");
+
+	nge = newgentry(0);
+	nge->type = GE_LINE;
+	nge->ix3 = x;
+	nge->iy3 = y;
+
+	if ((oge = g->lastentry) != 0) {
+		if (x == oge->ix3 && y == oge->iy3) {	/* empty line */
+			/* ignore it or we will get in troubles later */
+			free(nge);
+			return;
+		}
+		if (g->path == 0) {
+			g->path = nge;
+			nge->bkwd = nge->frwd = nge;
+		} else {
+			oge->frwd = nge;
+			nge->bkwd = oge;
+			g->path->bkwd = nge;
+			nge->frwd = g->path;
+		}
+
+		oge->next = nge;
+		nge->prev = oge;
+		g->lastentry = nge;
+	} else {
+		WARNING_1 fprintf(stderr, "Glyph %s: LINE outside of path\n", g->name);
+		free(nge);
+	}
+
+}
+
+void
+fg_rrcurveto(
+	    GLYPH * g,
+	    double x1,
+	    double y1,
+	    double x2,
+	    double y2,
+	    double x3,
+	    double y3)
+{
+	GENTRY         *oge, *nge;
+
+	oge = g->lastentry;
+
+	if (ISDBG(BUILDG))
+		fprintf(stderr, "%s: f rrcurveto(%g, %g, %g, %g, %g, %g)\n"
+			,g->name, x1, y1, x2, y2, x3, y3);
+
+	assertisfloat(g, "adding float CURVE");
+
+	if (oge && oge->fx3 == x1 && x1 == x2 && x2 == x3)	/* check if it's
+								 * actually a line */
+		fg_rlineto(g, x1, y3);
+	else if (oge && oge->fy3 == y1 && y1 == y2 && y2 == y3)
+		fg_rlineto(g, x3, y1);
+	else {
+		nge = newgentry(GEF_FLOAT);
+		nge->type = GE_CURVE;
+		nge->fx1 = x1;
+		nge->fy1 = y1;
+		nge->fx2 = x2;
+		nge->fy2 = y2;
+		nge->fx3 = x3;
+		nge->fy3 = y3;
+
+		if (oge != 0) {
+			if (x3 == oge->fx3 && y3 == oge->fy3) {
+				free(nge);	/* consider this curve empty */
+				/* ignore it or we will get in troubles later */
+				return;
+			}
+			if (g->path == 0) {
+				g->path = nge;
+				nge->bkwd = nge->frwd = nge;
+			} else {
+				oge->frwd = nge;
+				nge->bkwd = oge;
+				g->path->bkwd = nge;
+				nge->frwd = g->path;
+			}
+
+			oge->next = nge;
+			nge->prev = oge;
+			g->lastentry = nge;
+		} else {
+			WARNING_1 fprintf(stderr, "Glyph %s: CURVE outside of path\n", g->name);
+			free(nge);
+		}
+	}
+
+	if (0 && ISDBG(BUILDG))
+		dumppaths(g, NULL, NULL);
+}
+
+void
+ig_rrcurveto(
+	    GLYPH * g,
+	    int x1,
+	    int y1,
+	    int x2,
+	    int y2,
+	    int x3,
+	    int y3)
+{
+	GENTRY         *oge, *nge;
+
+	oge = g->lastentry;
+
+	if (ISDBG(BUILDG))
+		fprintf(stderr, "%s: i rrcurveto(%d, %d, %d, %d, %d, %d)\n"
+			,g->name, x1, y1, x2, y2, x3, y3);
+
+	assertisint(g, "adding int CURVE");
+
+	if (oge && oge->ix3 == x1 && x1 == x2 && x2 == x3)	/* check if it's
+								 * actually a line */
+		ig_rlineto(g, x1, y3);
+	else if (oge && oge->iy3 == y1 && y1 == y2 && y2 == y3)
+		ig_rlineto(g, x3, y1);
+	else {
+		nge = newgentry(0);
+		nge->type = GE_CURVE;
+		nge->ix1 = x1;
+		nge->iy1 = y1;
+		nge->ix2 = x2;
+		nge->iy2 = y2;
+		nge->ix3 = x3;
+		nge->iy3 = y3;
+
+		if (oge != 0) {
+			if (x3 == oge->ix3 && y3 == oge->iy3) {
+				free(nge);	/* consider this curve empty */
+				/* ignore it or we will get in troubles later */
+				return;
+			}
+			if (g->path == 0) {
+				g->path = nge;
+				nge->bkwd = nge->frwd = nge;
+			} else {
+				oge->frwd = nge;
+				nge->bkwd = oge;
+				g->path->bkwd = nge;
+				nge->frwd = g->path;
+			}
+
+			oge->next = nge;
+			nge->prev = oge;
+			g->lastentry = nge;
+		} else {
+			WARNING_1 fprintf(stderr, "Glyph %s: CURVE outside of path\n", g->name);
+			free(nge);
+		}
+	}
+}
+
+void
+g_closepath(
+	    GLYPH * g
+)
+{
+	GENTRY         *oge, *nge;
+
+	if (ISDBG(BUILDG))
+		fprintf(stderr, "%s: closepath\n", g->name);
+
+	oge = g->lastentry;
+
+	if (g->path == 0) {
+		WARNING_1 fprintf(stderr, "Warning: **** closepath on empty path in glyph \"%s\" ****\n",
+			g->name);
+		if (oge == 0) {
+			WARNING_1 fprintf(stderr, "No previois entry\n");
+		} else {
+			WARNING_1 fprintf(stderr, "Previous entry type: %c\n", oge->type);
+			if (oge->type == GE_MOVE) {
+				g->lastentry = oge->prev;
+				if (oge->prev == 0)
+					g->entries = 0;
+				else
+					g->lastentry->next = 0;
+				free(oge);
+			}
+		}
+		return;
+	}
+
+	nge = newgentry(oge->flags & GEF_FLOAT); /* keep the same type */
+	nge->type = GE_PATH;
+
+	g->path = 0;
+
+	oge->next = nge;
+	nge->prev = oge;
+	g->lastentry = nge;
+
+	if (0 && ISDBG(BUILDG))
+		dumppaths(g, NULL, NULL);
+}
+
+/*
+ * * SB * Routines to smooth and fix the glyphs
+ */
+
+/*
+** we don't want to see the curves with coinciding middle and
+** outer points
+*/
+
+static void
+fixcvends(
+	  GENTRY * ge
+)
+{
+	int             dx, dy;
+	int             x0, y0, x1, y1, x2, y2, x3, y3;
+
+	if (ge->type != GE_CURVE)
+		return;
+
+	if(ge->flags & GEF_FLOAT) {
+		fprintf(stderr, "**! fixcvends(0x%x) on floating entry, ABORT\n", ge);
+		abort(); /* dump core */
+	}
+
+	x0 = ge->prev->ix3;
+	y0 = ge->prev->iy3;
+	x1 = ge->ix1;
+	y1 = ge->iy1;
+	x2 = ge->ix2;
+	y2 = ge->iy2;
+	x3 = ge->ix3;
+	y3 = ge->iy3;
+
+
+	/* look at the start of the curve */
+	if (x1 == x0 && y1 == y0) {
+		dx = x2 - x1;
+		dy = y2 - y1;
+
+		if (dx == 0 && dy == 0
+		    || x2 == x3 && y2 == y3) {
+			/* Oops, we actually have a straight line */
+			/*
+			 * if it's small, we hope that it will get optimized
+			 * later
+			 */
+			if (abs(x3 - x0) <= 2 || abs(y3 - y0) <= 2) {
+				ge->ix1 = x3;
+				ge->iy1 = y3;
+				ge->ix2 = x0;
+				ge->iy2 = y0;
+			} else {/* just make it a line */
+				ge->type = GE_LINE;
+			}
+		} else {
+			if (abs(dx) < 4 && abs(dy) < 4) {	/* consider it very
+								 * small */
+				ge->ix1 = x2;
+				ge->iy1 = y2;
+			} else if (abs(dx) < 8 && abs(dy) < 8) {	/* consider it small */
+				ge->ix1 += dx / 2;
+				ge->iy1 += dy / 2;
+			} else {
+				ge->ix1 += dx / 4;
+				ge->iy1 += dy / 4;
+			}
+			/* make sure that it's still on the same side */
+			if (abs(x3 - x0) * abs(dy) < abs(y3 - y0) * abs(dx)) {
+				if (abs(x3 - x0) * abs(ge->iy1 - y0) > abs(y3 - y0) * abs(ge->ix1 - x0))
+					ge->ix1 += isign(dx);
+			} else {
+				if (abs(x3 - x0) * abs(ge->iy1 - y0) < abs(y3 - y0) * abs(ge->ix1 - x0))
+					ge->iy1 += isign(dy);
+			}
+
+			ge->ix2 += (x3 - x2) / 8;
+			ge->iy2 += (y3 - y2) / 8;
+			/* make sure that it's still on the same side */
+			if (abs(x3 - x0) * abs(y3 - y2) < abs(y3 - y0) * abs(x3 - x2)) {
+				if (abs(x3 - x0) * abs(y3 - ge->iy2) > abs(y3 - y0) * abs(x3 - ge->ix2))
+					ge->iy1 -= isign(y3 - y2);
+			} else {
+				if (abs(x3 - x0) * abs(y3 - ge->iy2) < abs(y3 - y0) * abs(x3 - ge->ix2))
+					ge->ix1 -= isign(x3 - x2);
+			}
+
+		}
+	} else if (x2 == x3 && y2 == y3) {
+		dx = x1 - x2;
+		dy = y1 - y2;
+
+		if (dx == 0 && dy == 0) {
+			/* Oops, we actually have a straight line */
+			/*
+			 * if it's small, we hope that it will get optimized
+			 * later
+			 */
+			if (abs(x3 - x0) <= 2 || abs(y3 - y0) <= 2) {
+				ge->ix1 = x3;
+				ge->iy1 = y3;
+				ge->ix2 = x0;
+				ge->iy2 = y0;
+			} else {/* just make it a line */
+				ge->type = GE_LINE;
+			}
+		} else {
+			if (abs(dx) < 4 && abs(dy) < 4) {	/* consider it very
+								 * small */
+				ge->ix2 = x1;
+				ge->iy2 = y1;
+			} else if (abs(dx) < 8 && abs(dy) < 8) {	/* consider it small */
+				ge->ix2 += dx / 2;
+				ge->iy2 += dy / 2;
+			} else {
+				ge->ix2 += dx / 4;
+				ge->iy2 += dy / 4;
+			}
+			/* make sure that it's still on the same side */
+			if (abs(x3 - x0) * abs(dy) < abs(y3 - y0) * abs(dx)) {
+				if (abs(x3 - x0) * abs(ge->iy2 - y3) > abs(y3 - y0) * abs(ge->ix2 - x3))
+					ge->ix2 += isign(dx);
+			} else {
+				if (abs(x3 - x0) * abs(ge->iy2 - y3) < abs(y3 - y0) * abs(ge->ix2 - x3))
+					ge->iy2 += isign(dy);
+			}
+
+			ge->ix1 += (x0 - x1) / 8;
+			ge->iy1 += (y0 - y1) / 8;
+			/* make sure that it's still on the same side */
+			if (abs(x3 - x0) * abs(y0 - y1) < abs(y3 - y0) * abs(x0 - x1)) {
+				if (abs(x3 - x0) * abs(y0 - ge->iy1) > abs(y3 - y0) * abs(x0 - ge->ix1))
+					ge->iy1 -= isign(y0 - y1);
+			} else {
+				if (abs(x3 - x0) * abs(y0 - ge->iy1) < abs(y3 - y0) * abs(x0 - ge->ix1))
+					ge->ix1 -= isign(x0 - x1);
+			}
+
+		}
+	}
+}
+
+/*
+** After transformations we want to make sure that the resulting
+** curve is going in the same quadrant as the original one,
+** because rounding errors introduced during transformations
+** may make the result completeley wrong.
+**
+** `dir' argument describes the direction of the original curve,
+** it is the superposition of two values for the front and
+** rear ends of curve:
+**
+** >EQUAL - goes over the line connecting the ends
+** =EQUAL - coincides with the line connecting the ends
+** <EQUAL - goes under the line connecting the ends
+**
+** See CVDIR_* for exact definitions.
+*/
+
+static void
+fixcvdir(
+	 GENTRY * ge,
+	 int dir
+)
+{
+	int             a, b, c, d;
+	double          kk, kk1, kk2;
+	int             changed;
+	int             fdir, rdir;
+
+	if(ge->flags & GEF_FLOAT) {
+		fprintf(stderr, "**! fixcvdir(0x%x) on floating entry, ABORT\n", ge);
+		abort(); /* dump core */
+	}
+
+	fdir = (dir & CVDIR_FRONT) - CVDIR_FEQUAL;
+	if ((dir & CVDIR_REAR) == CVDIR_RSAME)
+		rdir = fdir; /* we need only isign, exact value doesn't matter */
+	else
+		rdir = (dir & CVDIR_REAR) - CVDIR_REQUAL;
+
+	fixcvends(ge);
+
+	c = isign(ge->ix3 - ge->prev->ix3);	/* note the direction of
+						 * curve */
+	d = isign(ge->iy3 - ge->prev->iy3);
+
+	a = ge->iy3 - ge->prev->iy3;
+	b = ge->ix3 - ge->prev->ix3;
+	kk = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a));
+	a = ge->iy1 - ge->prev->iy3;
+	b = ge->ix1 - ge->prev->ix3;
+	kk1 = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a));
+	a = ge->iy3 - ge->iy2;
+	b = ge->ix3 - ge->ix2;
+	kk2 = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a));
+
+	changed = 1;
+	while (changed) {
+		if (ISDBG(FIXCVDIR)) {
+			/* for debugging */
+			fprintf(stderr, "fixcvdir %d %d (%d %d %d %d %d %d) %f %f %f\n",
+				fdir, rdir,
+				ge->ix1 - ge->prev->ix3,
+				ge->iy1 - ge->prev->iy3,
+				ge->ix2 - ge->ix1,
+				ge->iy2 - ge->iy1,
+				ge->ix3 - ge->ix2,
+				ge->iy3 - ge->iy2,
+				kk1, kk, kk2);
+		}
+		changed = 0;
+
+		if (fdir > 0) {
+			if (kk1 > kk) {	/* the front end has problems */
+				if (c * (ge->ix1 - ge->prev->ix3) > 0) {
+					ge->ix1 -= c;
+					changed = 1;
+				} if (d * (ge->iy2 - ge->iy1) > 0) {
+					ge->iy1 += d;
+					changed = 1;
+				}
+				/* recalculate the coefficients */
+				a = ge->iy3 - ge->prev->iy3;
+				b = ge->ix3 - ge->prev->ix3;
+				kk = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a));
+				a = ge->iy1 - ge->prev->iy3;
+				b = ge->ix1 - ge->prev->ix3;
+				kk1 = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a));
+			}
+		} else if (fdir < 0) {
+			if (kk1 < kk) {	/* the front end has problems */
+				if (c * (ge->ix2 - ge->ix1) > 0) {
+					ge->ix1 += c;
+					changed = 1;
+				} if (d * (ge->iy1 - ge->prev->iy3) > 0) {
+					ge->iy1 -= d;
+					changed = 1;
+				}
+				/* recalculate the coefficients */
+				a = ge->iy1 - ge->prev->iy3;
+				b = ge->ix1 - ge->prev->ix3;
+				kk1 = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a));
+				a = ge->iy3 - ge->prev->iy3;
+				b = ge->ix3 - ge->prev->ix3;
+				kk = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a));
+			}
+		}
+		if (rdir > 0) {
+			if (kk2 < kk) {	/* the rear end has problems */
+				if (c * (ge->ix2 - ge->ix1) > 0) {
+					ge->ix2 -= c;
+					changed = 1;
+				} if (d * (ge->iy3 - ge->iy2) > 0) {
+					ge->iy2 += d;
+					changed = 1;
+				}
+				/* recalculate the coefficients */
+				a = ge->iy3 - ge->prev->iy3;
+				b = ge->ix3 - ge->prev->ix3;
+				kk = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a));
+				a = ge->iy3 - ge->iy2;
+				b = ge->ix3 - ge->ix2;
+				kk2 = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a));
+			}
+		} else if (rdir < 0) {
+			if (kk2 > kk) {	/* the rear end has problems */
+				if (c * (ge->ix3 - ge->ix2) > 0) {
+					ge->ix2 += c;
+					changed = 1;
+				} if (d * (ge->iy2 - ge->iy1) > 0) {
+					ge->iy2 -= d;
+					changed = 1;
+				}
+				/* recalculate the coefficients */
+				a = ge->iy3 - ge->prev->iy3;
+				b = ge->ix3 - ge->prev->ix3;
+				kk = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a));
+				a = ge->iy3 - ge->iy2;
+				b = ge->ix3 - ge->ix2;
+				kk2 = fabs(a == 0 ? (b == 0 ? 1. : 100000.) : ((double) b / (double) a));
+			}
+		}
+	}
+	fixcvends(ge);
+}
+
+/* Get the directions of ends of curve for further usage */
+
+/* expects that the previous element is also float */
+
+static int
+fgetcvdir(
+	 GENTRY * ge
+)
+{
+	double          a, b;
+	double          k, k1, k2;
+	int             dir = 0;
+
+	if( !(ge->flags & GEF_FLOAT) ) {
+		fprintf(stderr, "**! fgetcvdir(0x%x) on int entry, ABORT\n", ge);
+		abort(); /* dump core */
+	}
+
+	a = fabs(ge->fy3 - ge->prev->fy3);
+	b = fabs(ge->fx3 - ge->prev->fx3);
+	k = a < FEPS ? (b < FEPS ? 1. : 100000.) : ( b / a);
+
+	a = fabs(ge->fy1 - ge->prev->fy3);
+	b = fabs(ge->fx1 - ge->prev->fx3);
+	if(a < FEPS) {
+		if(b < FEPS) {
+			a = fabs(ge->fy2 - ge->prev->fy3);
+			b = fabs(ge->fx2 - ge->prev->fx3);
+			k1 = a < FEPS ? (b < FEPS ? k : 100000.) : ( b / a);
+		} else
+			k1 = FBIGVAL;
+	} else
+		k1 = b / a;
+
+	a = fabs(ge->fy3 - ge->fy2);
+	b = fabs(ge->fx3 - ge->fx2);
+	if(a < FEPS) {
+		if(b < FEPS) {
+			a = fabs(ge->fy3 - ge->fy1);
+			b = fabs(ge->fx3 - ge->fx1);
+			k2 = a < FEPS ? (b < FEPS ? k : 100000.) : ( b / a);
+		} else
+			k2 = FBIGVAL;
+	} else
+		k2 = b / a;
+
+	if(fabs(k1-k) < 0.0001)
+		dir |= CVDIR_FEQUAL;
+	else if (k1 < k)
+		dir |= CVDIR_FUP;
+	else
+		dir |= CVDIR_FDOWN;
+
+	if(fabs(k2-k) < 0.0001)
+		dir |= CVDIR_REQUAL;
+	else if (k2 > k)
+		dir |= CVDIR_RUP;
+	else
+		dir |= CVDIR_RDOWN;
+
+	return dir;
+}
+
+
+/* expects that the previous element is also int */
+
+static int
+igetcvdir(
+	 GENTRY * ge
+)
+{
+	int             a, b;
+	double          k, k1, k2;
+	int             dir = 0;
+
+	if(ge->flags & GEF_FLOAT) {
+		fprintf(stderr, "**! igetcvdir(0x%x) on floating entry, ABORT\n", ge);
+		abort(); /* dump core */
+	}
+
+	a = ge->iy3 - ge->prev->iy3;
+	b = ge->ix3 - ge->prev->ix3;
+	k = (a == 0) ? (b == 0 ? 1. : 100000.) : fabs((double) b / (double) a);
+
+	a = ge->iy1 - ge->prev->iy3;
+	b = ge->ix1 - ge->prev->ix3;
+	if(a == 0) {
+		if(b == 0) {
+			a = ge->iy2 - ge->prev->iy3;
+			b = ge->ix2 - ge->prev->ix3;
+			k1 = (a == 0) ? (b == 0 ? k : 100000.) : fabs((double) b / (double) a);
+		} else
+			k1 = FBIGVAL;
+	} else
+		k1 = fabs((double) b / (double) a);
+
+	a = ge->iy3 - ge->iy2;
+	b = ge->ix3 - ge->ix2;
+	if(a == 0) {
+		if(b == 0) {
+			a = ge->iy3 - ge->iy1;
+			b = ge->ix3 - ge->ix1;
+			k2 = (a == 0) ? (b == 0 ? k : 100000.) : fabs((double) b / (double) a);
+		} else
+			k2 = FBIGVAL;
+	} else
+		k2 = fabs((double) b / (double) a);
+
+	if(fabs(k1-k) < 0.0001)
+		dir |= CVDIR_FEQUAL;
+	else if (k1 < k)
+		dir |= CVDIR_FUP;
+	else
+		dir |= CVDIR_FDOWN;
+
+	if(fabs(k2-k) < 0.0001)
+		dir |= CVDIR_REQUAL;
+	else if (k2 > k)
+		dir |= CVDIR_RUP;
+	else
+		dir |= CVDIR_RDOWN;
+
+	return dir;
+}
+
+#if 0
+/* a function just to test the work of fixcvdir() */
+static void
+testfixcvdir(
+	     GLYPH * g
+)
+{
+	GENTRY         *ge;
+	int             dir;
+
+	for (ge = g->entries; ge != 0; ge = ge->next) {
+		if (ge->type == GE_CURVE) {
+			dir = igetcvdir(ge);
+			fixcvdir(ge, dir);
+		}
+	}
+}
+#endif
+
+static int
+iround(
+	double val
+)
+{
+	return (int) (val > 0 ? val + 0.5 : val - 0.5);
+}
+	
+/* for debugging - dump the glyph
+ * mark with a star the entries from start to end inclusive
+ * (start == NULL means don't mark any, end == NULL means to the last)
+ */
+
+void
+dumppaths(
+	GLYPH *g,
+	GENTRY *start,
+	GENTRY *end
+)
+{
+	GENTRY *ge;
+	int i;
+	char mark=' ';
+
+	fprintf(stderr, "Glyph %s:\n", g->name);
+
+	/* now do the conversion */
+	for(ge = g->entries; ge != 0; ge = ge->next) {
+		if(ge == start)
+			mark = '*';
+		fprintf(stderr, " %c %8x", mark, ge);
+		switch(ge->type) {
+		case GE_MOVE:
+		case GE_LINE:
+			if(ge->flags & GEF_FLOAT)
+				fprintf(stderr," %c float (%g, %g)\n", ge->type, ge->fx3, ge->fy3);
+			else
+				fprintf(stderr," %c int (%d, %d)\n", ge->type, ge->ix3, ge->iy3);
+			break;
+		case GE_CURVE:
+			if(ge->flags & GEF_FLOAT) {
+				fprintf(stderr," C float ");
+				for(i=0; i<3; i++)
+					fprintf(stderr,"(%g, %g) ", ge->fxn[i], ge->fyn[i]);
+				fprintf(stderr,"\n");
+			} else {
+				fprintf(stderr," C int ");
+				for(i=0; i<3; i++)
+					fprintf(stderr,"(%d, %d) ", ge->ixn[i], ge->iyn[i]);
+				fprintf(stderr,"\n");
+			}
+			break;
+		default:
+			fprintf(stderr, " %c\n", ge->type);
+			break;
+		}
+		if(ge == end)
+			mark = ' ';
+	}
+}
+
+/*
+ * Routine that converts all entries in the path from float to int
+ */
+
+void
+pathtoint(
+	GLYPH *g
+)
+{
+	GENTRY *ge;
+	int x[3], y[3];
+	int i;
+
+
+	if(ISDBG(TOINT))
+		fprintf(stderr, "TOINT: glyph %s\n", g->name);
+	assertisfloat(g, "converting path to int\n");
+
+	fdelsmall(g, 1.0); /* get rid of sub-pixel contours */
+	assertpath(g->entries, __FILE__, __LINE__, g->name);
+
+	/* 1st pass, collect the directions of the curves: have
+	 * to do that in advance, while everyting is float
+	 */
+	for(ge = g->entries; ge != 0; ge = ge->next) {
+		if( !(ge->flags & GEF_FLOAT) ) {
+			fprintf(stderr, "**! glyphs %s has int entry, found in conversion to int\n",
+				g->name);
+			exit(1);
+		}
+		if(ge->type == GE_CURVE) {
+			ge->dir = fgetcvdir(ge);
+		}
+	}
+
+	/* now do the conversion */
+	for(ge = g->entries; ge != 0; ge = ge->next) {
+		switch(ge->type) {
+		case GE_MOVE:
+		case GE_LINE:
+			if(ISDBG(TOINT))
+				fprintf(stderr," %c float x=%g y=%g\n", ge->type, ge->fx3, ge->fy3);
+			x[0] = iround(ge->fx3);
+			y[0] = iround(ge->fy3);
+			for(i=0; i<3; i++) { /* put some valid values everywhere, for convenience */
+				ge->ixn[i] = x[0];
+				ge->iyn[i] = y[0];
+			}
+			if(ISDBG(TOINT))
+				fprintf(stderr,"   int   x=%d y=%d\n", ge->ix3, ge->iy3);
+			break;
+		case GE_CURVE:
+			if(ISDBG(TOINT))
+				fprintf(stderr," %c float ", ge->type);
+
+			for(i=0; i<3; i++) {
+				if(ISDBG(TOINT))
+					fprintf(stderr,"(%g, %g) ", ge->fxn[i], ge->fyn[i]);
+				x[i] = iround(ge->fxn[i]);
+				y[i] = iround(ge->fyn[i]);
+			}
+
+			if(ISDBG(TOINT))
+				fprintf(stderr,"\n   int   ");
+
+			for(i=0; i<3; i++) {
+				ge->ixn[i] = x[i];
+				ge->iyn[i] = y[i];
+				if(ISDBG(TOINT))
+					fprintf(stderr,"(%d, %d) ", ge->ixn[i], ge->iyn[i]);
+			}
+			ge->flags &= ~GEF_FLOAT; /* for fixcvdir */
+			fixcvdir(ge, ge->dir);
+
+			if(ISDBG(TOINT)) {
+				fprintf(stderr,"\n   fixed ");
+				for(i=0; i<3; i++)
+					fprintf(stderr,"(%d, %d) ", ge->ixn[i], ge->iyn[i]);
+				fprintf(stderr,"\n");
+			}
+
+			break;
+		}
+		ge->flags &= ~GEF_FLOAT;
+	}
+	g->flags &= ~GF_FLOAT;
+}
+
+
+/* check whether we can fix up the curve to change its size by (dx,dy) */
+/* 0 means NO, 1 means YES */
+
+/* for float: if scaling would be under 10% */
+
+int
+fcheckcv(
+	GENTRY * ge,
+	double dx,
+	double dy
+)
+{
+	if( !(ge->flags & GEF_FLOAT) ) {
+		fprintf(stderr, "**! fcheckcv(0x%x) on int entry, ABORT\n", ge);
+		abort(); /* dump core */
+	}
+
+	if (ge->type != GE_CURVE)
+		return 0;
+
+	if( fabs(ge->fx3 - ge->prev->fx3) < fabs(dx) * 10 )
+		return 0;
+
+	if( fabs(ge->fy3 - ge->prev->fy3) < fabs(dy) * 10 )
+		return 0;
+
+	return 1;
+}
+
+/* for int: if won't create new zigzags at the ends */
+
+int
+icheckcv(
+	GENTRY * ge,
+	int dx,
+	int dy
+)
+{
+	int             xdep, ydep;
+
+	if(ge->flags & GEF_FLOAT) {
+		fprintf(stderr, "**! icheckcv(0x%x) on floating entry, ABORT\n", ge);
+		abort(); /* dump core */
+	}
+
+	if (ge->type != GE_CURVE)
+		return 0;
+
+	xdep = ge->ix3 - ge->prev->ix3;
+	ydep = ge->iy3 - ge->prev->iy3;
+
+	if (ge->type == GE_CURVE
+	    && (xdep * (xdep + dx)) > 0
+	    && (ydep * (ydep + dy)) > 0) {
+		return 1;
+	} else
+		return 0;
+}
+
+/* float connect the ends of open contours */
+
+void
+fclosepaths(
+	   GLYPH * g
+)
+{
+	GENTRY         *ge, *fge, *xge, *nge;
+	int             i;
+
+	assertisfloat(g, "fclosepaths float\n");
+
+	for (xge = g->entries; xge != 0; xge = xge->next) {
+		if( xge->type != GE_PATH )
+			continue;
+
+		ge = xge->prev;
+		if(ge == 0 || ge->type != GE_LINE && ge->type!= GE_CURVE) {
+			fprintf(stderr, "**! Glyph %s got empty path\n",
+				g->name);
+			exit(1);
+		}
+
+		fge = ge->frwd;
+		if (fge->prev == 0 || fge->prev->type != GE_MOVE) {
+			fprintf(stderr, "**! Glyph %s got strange beginning of path\n",
+				g->name);
+			exit(1);
+		}
+		fge = fge->prev;
+		if (fge->fx3 != ge->fx3 || fge->fy3 != ge->fy3) {
+			/* we have to fix this open path */
+
+			WARNING_4 fprintf(stderr, "Glyph %s got path open by dx=%g dy=%g\n",
+			g->name, fge->fx3 - ge->fx3, fge->fy3 - ge->fy3);
+
+
+			/* add a new line */
+			nge = newgentry(GEF_FLOAT);
+			(*nge) = (*ge);
+			nge->fx3 = fge->fx3;
+			nge->fy3 = fge->fy3;
+			nge->type = GE_LINE;
+
+			addgeafter(ge, nge);
+
+			if (fabs(ge->fx3 - fge->fx3) <= 2 && fabs(ge->fy3 - fge->fy3) <= 2) {
+				/*
+				 * small change, try to get rid of the new entry
+				 */
+
+				double df[2];
+
+				for(i=0; i<2; i++) {
+					df[i] = ge->fpoints[i][2] - fge->fpoints[i][2];
+					df[i] = fclosegap(nge, nge, i, df[i], NULL);
+				}
+
+				if(df[0] == 0. && df[1] == 0.) {
+					/* closed gap successfully, remove the added entry */
+					freethisge(nge);
+				}
+			}
+		}
+	}
+}
+
+void
+smoothjoints(
+	     GLYPH * g
+)
+{
+	GENTRY         *ge, *ne;
+	int             dx1, dy1, dx2, dy2, k;
+	int             dir;
+
+	return; /* this stuff seems to create problems */
+
+	assertisint(g, "smoothjoints int");
+
+	if (g->entries == 0)	/* nothing to do */
+		return;
+
+	for (ge = g->entries->next; ge != 0; ge = ge->next) {
+		ne = ge->frwd;
+
+		/*
+		 * although there should be no one-line path * and any path
+		 * must end with CLOSEPATH, * nobody can say for sure
+		 */
+
+		if (ge == ne || ne == 0)
+			continue;
+
+		/* now handle various joints */
+
+		if (ge->type == GE_LINE && ne->type == GE_LINE) {
+			dx1 = ge->ix3 - ge->prev->ix3;
+			dy1 = ge->iy3 - ge->prev->iy3;
+			dx2 = ne->ix3 - ge->ix3;
+			dy2 = ne->iy3 - ge->iy3;
+
+			/* check whether they have the same direction */
+			/* and the same slope */
+			/* then we can join them into one line */
+
+			if (dx1 * dx2 >= 0 && dy1 * dy2 >= 0 && dx1 * dy2 == dy1 * dx2) {
+				/* extend the previous line */
+				ge->ix3 = ne->ix3;
+				ge->iy3 = ne->iy3;
+
+				/* and get rid of the next line */
+				freethisge(ne);
+			}
+		} else if (ge->type == GE_LINE && ne->type == GE_CURVE) {
+			fixcvends(ne);
+
+			dx1 = ge->ix3 - ge->prev->ix3;
+			dy1 = ge->iy3 - ge->prev->iy3;
+			dx2 = ne->ix1 - ge->ix3;
+			dy2 = ne->iy1 - ge->iy3;
+
+			/* if the line is nearly horizontal and we can fix it */
+			if (dx1 != 0 && 5 * abs(dy1) / abs(dx1) == 0
+			    && icheckcv(ne, 0, -dy1)
+			    && abs(dy1) <= 4) {
+				dir = igetcvdir(ne);
+				ge->iy3 -= dy1;
+				ne->iy1 -= dy1;
+				fixcvdir(ne, dir);
+				if (ge->next != ne)
+					ne->prev->iy3 -= dy1;
+				dy1 = 0;
+			} else if (dy1 != 0 && 5 * abs(dx1) / abs(dy1) == 0
+				   && icheckcv(ne, -dx1, 0)
+				   && abs(dx1) <= 4) {
+				/* the same but vertical */
+				dir = igetcvdir(ne);
+				ge->ix3 -= dx1;
+				ne->ix1 -= dx1;
+				fixcvdir(ne, dir);
+				if (ge->next != ne)
+					ne->prev->ix3 -= dx1;
+				dx1 = 0;
+			}
+			/*
+			 * if line is horizontal and curve begins nearly
+			 * horizontally
+			 */
+			if (dy1 == 0 && dx2 != 0 && 5 * abs(dy2) / abs(dx2) == 0) {
+				dir = igetcvdir(ne);
+				ne->iy1 -= dy2;
+				fixcvdir(ne, dir);
+				dy2 = 0;
+			} else if (dx1 == 0 && dy2 != 0 && 5 * abs(dx2) / abs(dy2) == 0) {
+				/* the same but vertical */
+				dir = igetcvdir(ne);
+				ne->ix1 -= dx2;
+				fixcvdir(ne, dir);
+				dx2 = 0;
+			}
+		} else if (ge->type == GE_CURVE && ne->type == GE_LINE) {
+			fixcvends(ge);
+
+			dx1 = ge->ix3 - ge->ix2;
+			dy1 = ge->iy3 - ge->iy2;
+			dx2 = ne->ix3 - ge->ix3;
+			dy2 = ne->iy3 - ge->iy3;
+
+			/* if the line is nearly horizontal and we can fix it */
+			if (dx2 != 0 && 5 * abs(dy2) / abs(dx2) == 0
+			    && icheckcv(ge, 0, dy2)
+			    && abs(dy2) <= 4) {
+				dir = igetcvdir(ge);
+				ge->iy3 += dy2;
+				ge->iy2 += dy2;
+				fixcvdir(ge, dir);
+				if (ge->next != ne)
+					ne->prev->iy3 += dy2;
+				dy2 = 0;
+			} else if (dy2 != 0 && 5 * abs(dx2) / abs(dy2) == 0
+				   && icheckcv(ge, dx2, 0)
+				   && abs(dx2) <= 4) {
+				/* the same but vertical */
+				dir = igetcvdir(ge);
+				ge->ix3 += dx2;
+				ge->ix2 += dx2;
+				fixcvdir(ge, dir);
+				if (ge->next != ne)
+					ne->prev->ix3 += dx2;
+				dx2 = 0;
+			}
+			/*
+			 * if line is horizontal and curve ends nearly
+			 * horizontally
+			 */
+			if (dy2 == 0 && dx1 != 0 && 5 * abs(dy1) / abs(dx1) == 0) {
+				dir = igetcvdir(ge);
+				ge->iy2 += dy1;
+				fixcvdir(ge, dir);
+				dy1 = 0;
+			} else if (dx2 == 0 && dy1 != 0 && 5 * abs(dx1) / abs(dy1) == 0) {
+				/* the same but vertical */
+				dir = igetcvdir(ge);
+				ge->ix2 += dx1;
+				fixcvdir(ge, dir);
+				dx1 = 0;
+			}
+		} else if (ge->type == GE_CURVE && ne->type == GE_CURVE) {
+			fixcvends(ge);
+			fixcvends(ne);
+
+			dx1 = ge->ix3 - ge->ix2;
+			dy1 = ge->iy3 - ge->iy2;
+			dx2 = ne->ix1 - ge->ix3;
+			dy2 = ne->iy1 - ge->iy3;
+
+			/*
+			 * check if we have a rather smooth joint at extremal
+			 * point
+			 */
+			/* left or right extremal point */
+			if (abs(dx1) <= 4 && abs(dx2) <= 4
+			    && dy1 != 0 && 5 * abs(dx1) / abs(dy1) == 0
+			    && dy2 != 0 && 5 * abs(dx2) / abs(dy2) == 0
+			    && (ge->iy3 < ge->prev->iy3 && ne->iy3 < ge->iy3
+				|| ge->iy3 > ge->prev->iy3 && ne->iy3 > ge->iy3)
+			  && (ge->ix3 - ge->prev->ix3) * (ne->ix3 - ge->ix3) < 0
+				) {
+				dir = igetcvdir(ge);
+				ge->ix2 += dx1;
+				dx1 = 0;
+				fixcvdir(ge, dir);
+				dir = igetcvdir(ne);
+				ne->ix1 -= dx2;
+				dx2 = 0;
+				fixcvdir(ne, dir);
+			}
+			/* top or down extremal point */
+			else if (abs(dy1) <= 4 && abs(dy2) <= 4
+				 && dx1 != 0 && 5 * abs(dy1) / abs(dx1) == 0
+				 && dx2 != 0 && 5 * abs(dy2) / abs(dx2) == 0
+				 && (ge->ix3 < ge->prev->ix3 && ne->ix3 < ge->ix3
+				|| ge->ix3 > ge->prev->ix3 && ne->ix3 > ge->ix3)
+				 && (ge->iy3 - ge->prev->iy3) * (ne->iy3 - ge->iy3) < 0
+				) {
+				dir = igetcvdir(ge);
+				ge->iy2 += dy1;
+				dy1 = 0;
+				fixcvdir(ge, dir);
+				dir = igetcvdir(ne);
+				ne->iy1 -= dy2;
+				dy2 = 0;
+				fixcvdir(ne, dir);
+			}
+			/* or may be we just have a smooth junction */
+			else if (dx1 * dx2 >= 0 && dy1 * dy2 >= 0
+				 && 10 * abs(k = abs(dx1 * dy2) - abs(dy1 * dx2)) < (abs(dx1 * dy2) + abs(dy1 * dx2))) {
+				int             tries[6][4];
+				int             results[6];
+				int             i, b;
+
+				/* build array of changes we are going to try */
+				/* uninitalized entries are 0 */
+				if (k > 0) {
+					static int      t1[6][4] = {
+						{0, 0, 0, 0},
+						{-1, 0, 1, 0},
+						{-1, 0, 0, 1},
+						{0, -1, 1, 0},
+						{0, -1, 0, 1},
+					{-1, -1, 1, 1}};
+					memcpy(tries, t1, sizeof tries);
+				} else {
+					static int      t1[6][4] = {
+						{0, 0, 0, 0},
+						{1, 0, -1, 0},
+						{1, 0, 0, -1},
+						{0, 1, -1, 0},
+						{0, 1, 0, -1},
+					{1, 1, -1, -1}};
+					memcpy(tries, t1, sizeof tries);
+				}
+
+				/* now try the changes */
+				results[0] = abs(k);
+				for (i = 1; i < 6; i++) {
+					results[i] = abs((abs(dx1) + tries[i][0]) * (abs(dy2) + tries[i][1]) -
+							 (abs(dy1) + tries[i][2]) * (abs(dx2) + tries[i][3]));
+				}
+
+				/* and find the best try */
+				k = abs(k);
+				b = 0;
+				for (i = 1; i < 6; i++)
+					if (results[i] < k) {
+						k = results[i];
+						b = i;
+					}
+				/* and finally apply it */
+				if (dx1 < 0)
+					tries[b][0] = -tries[b][0];
+				if (dy2 < 0)
+					tries[b][1] = -tries[b][1];
+				if (dy1 < 0)
+					tries[b][2] = -tries[b][2];
+				if (dx2 < 0)
+					tries[b][3] = -tries[b][3];
+
+				dir = igetcvdir(ge);
+				ge->ix2 -= tries[b][0];
+				ge->iy2 -= tries[b][2];
+				fixcvdir(ge, dir);
+				dir = igetcvdir(ne);
+				ne->ix1 += tries[b][3];
+				ne->iy1 += tries[b][1];
+				fixcvdir(ne, dir);
+			}
+		}
+	}
+}
+
+/* debugging: print out stems of a glyph */
+static void
+debugstems(
+	   char *name,
+	   STEM * hstems,
+	   int nhs,
+	   STEM * vstems,
+	   int nvs
+)
+{
+	int             i;
+
+	fprintf(pfa_file, "%% %s\n", name);
+	fprintf(pfa_file, "%% %d horizontal stems:\n", nhs);
+	for (i = 0; i < nhs; i++)
+		fprintf(pfa_file, "%% %3d    %d (%d...%d) %c %c%c%c%c\n", i, hstems[i].value,
+			hstems[i].from, hstems[i].to,
+			((hstems[i].flags & ST_UP) ? 'U' : 'D'),
+			((hstems[i].flags & ST_END) ? 'E' : '-'),
+			((hstems[i].flags & ST_FLAT) ? 'F' : '-'),
+			((hstems[i].flags & ST_ZONE) ? 'Z' : ' '),
+			((hstems[i].flags & ST_TOPZONE) ? 'T' : ' '));
+	fprintf(pfa_file, "%% %d vertical stems:\n", nvs);
+	for (i = 0; i < nvs; i++)
+		fprintf(pfa_file, "%% %3d    %d (%d...%d) %c %c%c\n", i, vstems[i].value,
+			vstems[i].from, vstems[i].to,
+			((vstems[i].flags & ST_UP) ? 'U' : 'D'),
+			((vstems[i].flags & ST_END) ? 'E' : '-'),
+			((vstems[i].flags & ST_FLAT) ? 'F' : '-'));
+}
+
+/* add pseudo-stems for the limits of the Blue zones to the stem array */
+static int
+addbluestems(
+	STEM *s,
+	int n
+)
+{
+	int i;
+
+	for(i=0; i<nblues && i<2; i+=2) { /* baseline */
+		s[n].value=bluevalues[i];
+		s[n].flags=ST_UP|ST_ZONE;
+		/* don't overlap with anything */
+		s[n].origin=s[n].from=s[n].to= -10000+i;
+		n++;
+		s[n].value=bluevalues[i+1];
+		s[n].flags=ST_ZONE;
+		/* don't overlap with anything */
+		s[n].origin=s[n].from=s[n].to= -10000+i+1;
+		n++;
+	}
+	for(i=2; i<nblues; i+=2) { /* top zones */
+		s[n].value=bluevalues[i];
+		s[n].flags=ST_UP|ST_ZONE|ST_TOPZONE;
+		/* don't overlap with anything */
+		s[n].origin=s[n].from=s[n].to= -10000+i;
+		n++;
+		s[n].value=bluevalues[i+1];
+		s[n].flags=ST_ZONE|ST_TOPZONE;
+		/* don't overlap with anything */
+		s[n].origin=s[n].from=s[n].to= -10000+i+1;
+		n++;
+	}
+	for(i=0; i<notherb; i+=2) { /* bottom zones */
+		s[n].value=otherblues[i];
+		s[n].flags=ST_UP|ST_ZONE;
+		/* don't overlap with anything */
+		s[n].origin=s[n].from=s[n].to= -10000+i+nblues;
+		n++;
+		s[n].value=otherblues[i+1];
+		s[n].flags=ST_ZONE;
+		/* don't overlap with anything */
+		s[n].origin=s[n].from=s[n].to= -10000+i+1+nblues;
+		n++;
+	}
+	return n;
+}
+
+/* sort stems in array */
+static void
+sortstems(
+	  STEM * s,
+	  int n
+)
+{
+	int             i, j;
+	STEM            x;
+
+
+	/* a simple sorting */
+	/* hm, the ordering criteria are not quite simple :-) 
+	 * if the values are tied
+	 * ST_UP always goes under not ST_UP
+	 * ST_ZONE goes on the most outer side
+	 * ST_END goes towards inner side after ST_ZONE
+	 * ST_FLAT goes on the inner side
+	 */
+
+	for (i = 0; i < n; i++)
+		for (j = i + 1; j < n; j++) {
+			if(s[i].value < s[j].value)
+				continue;
+			if(s[i].value == s[j].value) {
+				if( (s[i].flags & ST_UP) < (s[j].flags & ST_UP) )
+					continue;
+				if( (s[i].flags & ST_UP) == (s[j].flags & ST_UP) ) {
+					if( s[i].flags & ST_UP ) {
+						if(
+						(s[i].flags & (ST_ZONE|ST_FLAT|ST_END) ^ ST_FLAT)
+							>
+						(s[j].flags & (ST_ZONE|ST_FLAT|ST_END) ^ ST_FLAT)
+						)
+							continue;
+					} else {
+						if(
+						(s[i].flags & (ST_ZONE|ST_FLAT|ST_END) ^ ST_FLAT)
+							<
+						(s[j].flags & (ST_ZONE|ST_FLAT|ST_END) ^ ST_FLAT)
+						)
+							continue;
+					}
+				}
+			}
+			x = s[j];
+			s[j] = s[i];
+			s[i] = x;
+		}
+}
+
+/* check whether two stem borders overlap */
+
+static int
+stemoverlap(
+	    STEM * s1,
+	    STEM * s2
+)
+{
+	int             result;
+
+	if (s1->from <= s2->from && s1->to >= s2->from
+	    || s2->from <= s1->from && s2->to >= s1->from)
+		result = 1;
+	else
+		result = 0;
+
+	if (ISDBG(STEMOVERLAP))
+		fprintf(pfa_file, "%% overlap %d(%d..%d)x%d(%d..%d)=%d\n",
+			s1->value, s1->from, s1->to, s2->value, s2->from, s2->to, result);
+	return result;
+}
+
+/* 
+ * check if the stem [border] is in an appropriate blue zone
+ * (currently not used)
+ */
+
+static int
+steminblue(
+	STEM *s
+)
+{
+	int i, val;
+
+	val=s->value;
+	if(s->flags & ST_UP) {
+		/* painted size up, look at lower zones */
+		if(nblues>=2 && val>=bluevalues[0] && val<=bluevalues[1] )
+			return 1;
+		for(i=0; i<notherb; i++) {
+			if( val>=otherblues[i] && val<=otherblues[i+1] )
+				return 1;
+		}
+	} else {
+		/* painted side down, look at upper zones */
+		for(i=2; i<nblues; i++) {
+			if( val>=bluevalues[i] && val<=bluevalues[i+1] )
+				return 1;
+		}
+	}
+
+	return 0;
+}
+
+/* mark the outermost stem [borders] in the blue zones */
+
+static void
+markbluestems(
+	STEM *s,
+	int nold
+)
+{
+	int i, j, a, b, c;
+	/*
+	 * traverse the list of Blue Values, mark the lowest upper
+	 * stem in each bottom zone and the topmost lower stem in
+	 * each top zone with ST_BLUE
+	 */
+
+	/* top zones */
+	for(i=2; i<nblues; i+=2) {
+		a=bluevalues[i]; b=bluevalues[i+1];
+		if(ISDBG(BLUESTEMS))
+			fprintf(pfa_file, "%% looking at blue zone %d...%d\n", a, b);
+		for(j=nold-1; j>=0; j--) {
+			if( s[j].flags & (ST_ZONE|ST_UP|ST_END) )
+				continue;
+			c=s[j].value;
+			if(c<a) /* too low */
+				break;
+			if(c<=b) { /* found the topmost stem border */
+				/* mark all the stems with the same value */
+				if(ISDBG(BLUESTEMS))
+					fprintf(pfa_file, "%% found D BLUE at %d\n", s[j].value);
+				/* include ST_END values */
+				while( s[j+1].value==c && (s[j+1].flags & ST_ZONE)==0 )
+					j++;
+				s[j].flags |= ST_BLUE;
+				for(j--; j>=0 && s[j].value==c 
+						&& (s[j].flags & (ST_UP|ST_ZONE))==0 ; j--)
+					s[j].flags |= ST_BLUE;
+				break;
+			}
+		}
+	}
+	/* baseline */
+	if(nblues>=2) {
+		a=bluevalues[0]; b=bluevalues[1];
+		for(j=0; j<nold; j++) {
+			if( (s[j].flags & (ST_ZONE|ST_UP|ST_END))!=ST_UP )
+				continue;
+			c=s[j].value;
+			if(c>b) /* too high */
+				break;
+			if(c>=a) { /* found the lowest stem border */
+				/* mark all the stems with the same value */
+				if(ISDBG(BLUESTEMS))
+					fprintf(pfa_file, "%% found U BLUE at %d\n", s[j].value);
+				/* include ST_END values */
+				while( s[j-1].value==c && (s[j-1].flags & ST_ZONE)==0 )
+					j--;
+				s[j].flags |= ST_BLUE;
+				for(j++; j<nold && s[j].value==c
+						&& (s[j].flags & (ST_UP|ST_ZONE))==ST_UP ; j++)
+					s[j].flags |= ST_BLUE;
+				break;
+			}
+		}
+	}
+	/* bottom zones: the logic is the same as for baseline */
+	for(i=0; i<notherb; i+=2) {
+		a=otherblues[i]; b=otherblues[i+1];
+		for(j=0; j<nold; j++) {
+			if( (s[j].flags & (ST_UP|ST_ZONE|ST_END))!=ST_UP )
+				continue;
+			c=s[j].value;
+			if(c>b) /* too high */
+				break;
+			if(c>=a) { /* found the lowest stem border */
+				/* mark all the stems with the same value */
+				if(ISDBG(BLUESTEMS))
+					fprintf(pfa_file, "%% found U BLUE at %d\n", s[j].value);
+				/* include ST_END values */
+				while( s[j-1].value==c && (s[j-1].flags & ST_ZONE)==0 )
+					j--;
+				s[j].flags |= ST_BLUE;
+				for(j++; j<nold && s[j].value==c
+						&& (s[j].flags & (ST_UP|ST_ZONE))==ST_UP ; j++)
+					s[j].flags |= ST_BLUE;
+				break;
+			}
+		}
+	}
+}
+
+/* Eliminate invalid stems, join equivalent lines and remove nested stems
+ * to build the main (non-substituted) set of stems.
+ * XXX add consideration of the italic angle
+ */
+static int
+joinmainstems(
+	  STEM * s,
+	  int nold,
+	  int useblues /* do we use the blue values ? */
+)
+{
+#define MAX_STACK	1000
+	STEM            stack[MAX_STACK];
+	int             nstack = 0;
+	int             sbottom = 0;
+	int             nnew;
+	int             i, j, k;
+	int             a, b, c, w1, w2, w3;
+	int             fw, fd;
+	/*
+	 * priority of the last found stem: 
+	 * 0 - nothing found yet 
+	 * 1 - has ST_END in it (one or more) 
+	 * 2 - has no ST_END and no ST_FLAT, can override only one stem 
+	 *     with priority 1 
+	 * 3 - has no ST_END and at least one ST_FLAT, can override one 
+	 *     stem with priority 2 or any number of stems with priority 1
+	 * 4 (handled separately) - has ST_BLUE, can override anything
+	 */
+	int             readystem = 0;
+	int             pri;
+	int             nlps = 0;	/* number of non-committed
+					 * lowest-priority stems */
+
+
+	for (i = 0, nnew = 0; i < nold; i++) {
+		if (s[i].flags & (ST_UP|ST_ZONE)) {
+			if(s[i].flags & ST_BLUE) {
+				/* we just HAVE to use this value */
+				if (readystem)
+					nnew += 2;
+				readystem=0;
+
+				/* remember the list of Blue zone stems with the same value */
+				for(a=i, i++; i<nold && s[a].value==s[i].value
+					&& (s[i].flags & ST_BLUE); i++)
+					{}
+				b=i; /* our range is a <= i < b */
+				c= -1; /* index of our best guess up to now */
+				pri=0;
+				/* try to find a match, don't cross blue zones */
+				for(; i<nold && (s[i].flags & ST_BLUE)==0; i++) {
+					if(s[i].flags & ST_UP) {
+						if(s[i].flags & ST_TOPZONE)
+							break;
+						else
+							continue;
+					}
+					for(j=a; j<b; j++) {
+						if(!stemoverlap(&s[j], &s[i]) )
+							continue;
+						/* consider priorities */
+						if( ( (s[j].flags|s[i].flags) & (ST_FLAT|ST_END) )==ST_FLAT ) {
+							c=i;
+							goto bluematch;
+						}
+						if( ((s[j].flags|s[i].flags) & ST_END)==0 )  {
+							if(pri < 2) {
+								c=i; pri=2;
+							}
+						} else {
+							if(pri == 0) {
+								c=i; pri=1;
+							}
+						}
+					}
+				}
+			bluematch:
+				/* clean up the stack */
+				nstack=sbottom=0;
+				readystem=0;
+				/* add this stem */
+				s[nnew++]=s[a];
+				if(c<0) { /* make one-dot-wide stem */
+					if(nnew>=b) { /* have no free space */
+						for(j=nold; j>=b; j--) /* make free space */
+							s[j]=s[j-1];
+						b++;
+						nold++;
+					}
+					s[nnew]=s[a];
+					s[nnew].flags &= ~(ST_UP|ST_BLUE);
+					nnew++;
+					i=b-1;
+				} else {
+					s[nnew++]=s[c];
+					i=c; /* skip up to this point */
+				}
+				if (ISDBG(MAINSTEMS))
+					fprintf(pfa_file, "%% +stem %d...%d U BLUE\n",
+						s[nnew-2].value, s[nnew-1].value);
+			} else {
+				if (nstack >= MAX_STACK) {
+					WARNING_1 fprintf(stderr, "Warning: **** converter's stem stack overflow ****\n");
+					nstack = 0;
+				}
+				stack[nstack++] = s[i];
+			}
+		} else if(s[i].flags & ST_BLUE) {
+			/* again, we just HAVE to use this value */
+			if (readystem)
+				nnew += 2;
+			readystem=0;
+
+			/* remember the list of Blue zone stems with the same value */
+			for(a=i, i++; i<nold && s[a].value==s[i].value
+				&& (s[i].flags & ST_BLUE); i++)
+				{}
+			b=i; /* our range is a <= i < b */
+			c= -1; /* index of our best guess up to now */
+			pri=0;
+			/* try to find a match */
+			for (i = nstack - 1; i >= 0; i--) {
+				if( (stack[i].flags & ST_UP)==0 ) {
+					if( (stack[i].flags & (ST_ZONE|ST_TOPZONE))==ST_ZONE )
+						break;
+					else
+						continue;
+				}
+				for(j=a; j<b; j++) {
+					if(!stemoverlap(&s[j], &stack[i]) )
+						continue;
+					/* consider priorities */
+					if( ( (s[j].flags|stack[i].flags) & (ST_FLAT|ST_END) )==ST_FLAT ) {
+						c=i;
+						goto bluedownmatch;
+					}
+					if( ((s[j].flags|stack[i].flags) & ST_END)==0 )  {
+						if(pri < 2) {
+							c=i; pri=2;
+						}
+					} else {
+						if(pri == 0) {
+							c=i; pri=1;
+						}
+					}
+				}
+			}
+		bluedownmatch:
+			/* if found no match make a one-dot-wide stem */
+			if(c<0) {
+				c=0;
+				stack[0]=s[b-1];
+				stack[0].flags |= ST_UP;
+				stack[0].flags &= ~ST_BLUE;
+			}
+			/* remove all the stems conflicting with this one */
+			readystem=0;
+			for(j=nnew-2; j>=0; j-=2) {
+				if (ISDBG(MAINSTEMS))
+					fprintf(pfa_file, "%% ?stem %d...%d -- %d\n",
+						s[j].value, s[j+1].value, stack[c].value);
+				if(s[j+1].value < stack[c].value) /* no conflict */
+					break;
+				if(s[j].flags & ST_BLUE) {
+					/* oops, we don't want to spoil other blue zones */
+					stack[c].value=s[j+1].value+1;
+					break;
+				}
+				if( (s[j].flags|s[j+1].flags) & ST_END ) {
+					if (ISDBG(MAINSTEMS))
+						fprintf(pfa_file, "%% -stem %d...%d p=1\n",
+							s[j].value, s[j+1].value);
+					continue; /* pri==1, silently discard it */
+				}
+				/* we want to discard no nore than 2 stems of pri>=2 */
+				if( ++readystem > 2 ) {
+					/* change our stem to not conflict */
+					stack[c].value=s[j+1].value+1;
+					break;
+				} else {
+					if (ISDBG(MAINSTEMS))
+						fprintf(pfa_file, "%% -stem %d...%d p>=2\n",
+							s[j].value, s[j+1].value);
+					continue;
+				}
+			}
+			nnew=j+2;
+			/* add this stem */
+			if(nnew>=b-1) { /* have no free space */
+				for(j=nold; j>=b-1; j--) /* make free space */
+					s[j]=s[j-1];
+				b++;
+				nold++;
+			}
+			s[nnew++]=stack[c];
+			s[nnew++]=s[b-1];
+			/* clean up the stack */
+			nstack=sbottom=0;
+			readystem=0;
+			/* set the next position to search */
+			i=b-1;
+			if (ISDBG(MAINSTEMS))
+				fprintf(pfa_file, "%% +stem %d...%d D BLUE\n",
+					s[nnew-2].value, s[nnew-1].value);
+		} else if (nstack > 0) {
+
+			/*
+			 * check whether our stem overlaps with anything in
+			 * stack
+			 */
+			for (j = nstack - 1; j >= sbottom; j--) {
+				if (s[i].value <= stack[j].value)
+					break;
+				if (stack[j].flags & ST_ZONE)
+					continue;
+
+				if ((s[i].flags & ST_END)
+				    || (stack[j].flags & ST_END))
+					pri = 1;
+				else if ((s[i].flags & ST_FLAT)
+					 || (stack[j].flags & ST_FLAT))
+					pri = 3;
+				else
+					pri = 2;
+
+				if (pri < readystem && s[nnew + 1].value >= stack[j].value
+				    || !stemoverlap(&stack[j], &s[i]))
+					continue;
+
+				if (readystem > 1 && s[nnew + 1].value < stack[j].value) {
+					nnew += 2;
+					readystem = 0;
+					nlps = 0;
+				}
+				/*
+				 * width of the previous stem (if it's
+				 * present)
+				 */
+				w1 = s[nnew + 1].value - s[nnew].value;
+
+				/* width of this stem */
+				w2 = s[i].value - stack[j].value;
+
+				if (readystem == 0) {
+					/* nothing yet, just add a new stem */
+					s[nnew] = stack[j];
+					s[nnew + 1] = s[i];
+					readystem = pri;
+					if (pri == 1)
+						nlps = 1;
+					else if (pri == 2)
+						sbottom = j;
+					else {
+						sbottom = j + 1;
+						while (sbottom < nstack
+						       && stack[sbottom].value <= stack[j].value)
+							sbottom++;
+					}
+					if (ISDBG(MAINSTEMS))
+						fprintf(pfa_file, "%% +stem %d...%d p=%d n=%d\n",
+							stack[j].value, s[i].value, pri, nlps);
+				} else if (pri == 1) {
+					if (stack[j].value > s[nnew + 1].value) {
+						/*
+						 * doesn't overlap with the
+						 * previous one
+						 */
+						nnew += 2;
+						nlps++;
+						s[nnew] = stack[j];
+						s[nnew + 1] = s[i];
+						if (ISDBG(MAINSTEMS))
+							fprintf(pfa_file, "%% +stem %d...%d p=%d n=%d\n",
+								stack[j].value, s[i].value, pri, nlps);
+					} else if (w2 < w1) {
+						/* is narrower */
+						s[nnew] = stack[j];
+						s[nnew + 1] = s[i];
+						if (ISDBG(MAINSTEMS))
+							fprintf(pfa_file, "%% /stem %d...%d p=%d n=%d %d->%d\n",
+								stack[j].value, s[i].value, pri, nlps, w1, w2);
+					}
+				} else if (pri == 2) {
+					if (readystem == 2) {
+						/* choose the narrower stem */
+						if (w1 > w2) {
+							s[nnew] = stack[j];
+							s[nnew + 1] = s[i];
+							sbottom = j;
+							if (ISDBG(MAINSTEMS))
+								fprintf(pfa_file, "%% /stem %d...%d p=%d n=%d\n",
+									stack[j].value, s[i].value, pri, nlps);
+						}
+						/* else readystem==1 */
+					} else if (stack[j].value > s[nnew + 1].value) {
+						/*
+						 * value doesn't overlap with
+						 * the previous one
+						 */
+						nnew += 2;
+						nlps = 0;
+						s[nnew] = stack[j];
+						s[nnew + 1] = s[i];
+						sbottom = j;
+						readystem = pri;
+						if (ISDBG(MAINSTEMS))
+							fprintf(pfa_file, "%% +stem %d...%d p=%d n=%d\n",
+								stack[j].value, s[i].value, pri, nlps);
+					} else if (nlps == 1
+						   || stack[j].value > s[nnew - 1].value) {
+						/*
+						 * we can replace the top
+						 * stem
+						 */
+						nlps = 0;
+						s[nnew] = stack[j];
+						s[nnew + 1] = s[i];
+						readystem = pri;
+						sbottom = j;
+						if (ISDBG(MAINSTEMS))
+							fprintf(pfa_file, "%% /stem %d...%d p=%d n=%d\n",
+								stack[j].value, s[i].value, pri, nlps);
+					}
+				} else if (readystem == 3) {	/* that means also
+								 * pri==3 */
+					/* choose the narrower stem */
+					if (w1 > w2) {
+						s[nnew] = stack[j];
+						s[nnew + 1] = s[i];
+						sbottom = j + 1;
+						while (sbottom < nstack
+						       && stack[sbottom].value <= stack[j].value)
+							sbottom++;
+						if (ISDBG(MAINSTEMS))
+							fprintf(pfa_file, "%% /stem %d...%d p=%d n=%d\n",
+								stack[j].value, s[i].value, pri, nlps);
+					}
+				} else if (pri == 3) {
+					/*
+					 * we can replace as many stems as
+					 * neccessary
+					 */
+					nnew += 2;
+					while (nnew > 0 && s[nnew - 1].value >= stack[j].value) {
+						nnew -= 2;
+						if (ISDBG(MAINSTEMS))
+							fprintf(pfa_file, "%% -stem %d..%d\n",
+								s[nnew].value, s[nnew + 1].value);
+					}
+					nlps = 0;
+					s[nnew] = stack[j];
+					s[nnew + 1] = s[i];
+					readystem = pri;
+					sbottom = j + 1;
+					while (sbottom < nstack
+					       && stack[sbottom].value <= stack[j].value)
+						sbottom++;
+					if (ISDBG(MAINSTEMS))
+						fprintf(pfa_file, "%% +stem %d...%d p=%d n=%d\n",
+							stack[j].value, s[i].value, pri, nlps);
+				}
+			}
+		}
+	}
+	if (readystem)
+		nnew += 2;
+
+	/* change the 1-pixel-wide stems to 20-pixel-wide stems if possible 
+	 * the constant 20 is recommended in the Type1 manual 
+	 */
+	if(useblues) {
+		for(i=0; i<nnew; i+=2) {
+			if(s[i].value != s[i+1].value)
+				continue;
+			if( ((s[i].flags ^ s[i+1].flags) & ST_BLUE)==0 )
+				continue;
+			if( s[i].flags & ST_BLUE ) {
+				if(nnew>i+2 && s[i+2].value<s[i].value+22)
+					s[i+1].value=s[i+2].value-2; /* compensate for fuzziness */
+				else
+					s[i+1].value+=20;
+			} else {
+				if(i>0 && s[i-1].value>s[i].value-22)
+					s[i].value=s[i-1].value+2; /* compensate for fuzziness */
+				else
+					s[i].value-=20;
+			}
+		}
+	}
+	/* make sure that no stem it stretched between
+	 * a top zone and a bottom zone
+	 */
+	if(useblues) {
+		for(i=0; i<nnew; i+=2) {
+			a=10000; /* lowest border of top zone crosing the stem */
+			b= -10000; /* highest border of bottom zone crossing the stem */
+
+			for(j=2; j<nblues; j++) {
+				c=bluevalues[j];
+				if( c>=s[i].value && c<=s[i+1].value && c<a )
+					a=c;
+			}
+			if(nblues>=2) {
+				c=bluevalues[1];
+				if( c>=s[i].value && c<=s[i+1].value && c>b )
+					b=c;
+			}
+			for(j=1; j<notherb; j++) {
+				c=otherblues[j];
+				if( c>=s[i].value && c<=s[i+1].value && c>b )
+					b=c;
+			}
+			if( a!=10000 && b!= -10000 ) { /* it is stretched */
+				/* split the stem into 2 ghost stems */
+				for(j=nnew+1; j>i+1; j--) /* make free space */
+					s[j]=s[j-2];
+				nnew+=2;
+
+				if(s[i].value+22 >= a)
+					s[i+1].value=a-2; /* leave space for fuzziness */
+				else
+					s[i+1].value=s[i].value+20;
+
+				if(s[i+3].value-22 <= b)
+					s[i+2].value=b+2; /* leave space for fuzziness */
+				else
+					s[i+2].value=s[i+3].value-20;
+
+				i+=2;
+			}
+		}
+	}
+	/* look for triple stems */
+	for (i = 0; i < nnew; i += 2) {
+		if (nnew - i >= 6) {
+			a = s[i].value + s[i + 1].value;
+			b = s[i + 2].value + s[i + 3].value;
+			c = s[i + 4].value + s[i + 5].value;
+
+			w1 = s[i + 1].value - s[i].value;
+			w2 = s[i + 3].value - s[i + 2].value;
+			w3 = s[i + 5].value - s[i + 4].value;
+
+			fw = w3 - w1;	/* fuzz in width */
+			fd = ((c - b) - (b - a));	/* fuzz in distance
+							 * (doubled) */
+
+			/* we are able to handle some fuzz */
+			/*
+			 * it doesn't hurt if the declared stem is a bit
+			 * narrower than actual unless it's an edge in
+			 * a blue zone
+			 */
+			if (abs(abs(fd) - abs(fw)) * 5 < w2
+			    && abs(fw) * 20 < (w1 + w3)) {	/* width dirrerence <10% */
+
+				if(useblues) { /* check that we don't disturb any blue stems */
+					j=c; k=a;
+					if (fw > 0) {
+						if (fd > 0) {
+							if( s[i+5].flags & ST_BLUE )
+								continue;
+							j -= fw;
+						} else {
+							if( s[i+4].flags & ST_BLUE )
+								continue;
+							j += fw;
+						}
+					} else if(fw < 0) {
+						if (fd > 0) {
+							if( s[i+1].flags & ST_BLUE )
+								continue;
+							k -= fw;
+						} else {
+							if( s[i].flags & ST_BLUE )
+								continue;
+							k += fw;
+						}
+					}
+					pri = ((j - b) - (b - k));
+
+					if (pri > 0) {
+						if( s[i+2].flags & ST_BLUE )
+							continue;
+					} else if(pri < 0) {
+						if( s[i+3].flags & ST_BLUE )
+							continue;
+					}
+				}
+
+				/*
+				 * first fix up the width of 1st and 3rd
+				 * stems
+				 */
+				if (fw > 0) {
+					if (fd > 0) {
+						s[i + 5].value -= fw;
+						c -= fw;
+					} else {
+						s[i + 4].value += fw;
+						c += fw;
+					}
+				} else {
+					if (fd > 0) {
+						s[i + 1].value -= fw;
+						a -= fw;
+					} else {
+						s[i].value += fw;
+						a += fw;
+					}
+				}
+				fd = ((c - b) - (b - a));
+
+				if (fd > 0) {
+					s[i + 2].value += abs(fd) / 2;
+				} else {
+					s[i + 3].value -= abs(fd) / 2;
+				}
+
+				s[i].flags |= ST_3;
+				i += 4;
+			}
+		}
+	}
+
+	return (nnew & ~1);	/* number of lines must be always even */
+}
+
+/*
+ * these macros and function allow to set the base stem,
+ * check that it's not empty and subtract another stem
+ * from the base stem (possibly dividing it into multiple parts)
+ */
+
+/* pairs for pieces of the base stem */
+static short xbstem[MAX_STEMS*2]; 
+/* index of the last point */
+static int xblast= -1; 
+
+#define setbasestem(from, to) \
+	(xbstem[0]=from, xbstem[1]=to, xblast=1)
+#define isbaseempty()	(xblast<=0)
+
+/* returns 1 if was overlapping, 0 otherwise */
+static int
+subfrombase(
+	int from,
+	int to
+) 
+{
+	int a, b;
+	int i, j;
+
+	if(isbaseempty())
+		return 0;
+
+	/* handle the simple case simply */
+	if(from > xbstem[xblast] || to < xbstem[0])
+		return 0;
+
+	/* the binary search may be more efficient */
+	/* but for now the linear search is OK */
+	for(b=1; from > xbstem[b]; b+=2) {} /* result: from <= xbstem[b] */
+	for(a=xblast-1; to < xbstem[a]; a-=2) {} /* result: to >= xbstem[a] */
+
+	/* now the interesting examples are:
+	 * (it was hard for me to understand, so I looked at the examples)
+	 * 1
+	 *     a|-----|          |-----|b   |-----|     |-----|
+	 *              f|-----|t
+	 * 2
+	 *     a|-----|b         |-----|    |-----|     |-----|
+	 *      f|--|t
+	 * 3
+	 *     a|-----|b         |-----|    |-----|     |-----|
+	 *           f|-----|t
+	 * 4
+	 *      |-----|b        a|-----|    |-----|     |-----|
+	 *          f|------------|t
+	 * 5
+	 *      |-----|          |-----|b   |-----|    a|-----|
+	 *                   f|-----------------------------|t
+	 * 6
+	 *      |-----|b         |-----|    |-----|    a|-----|
+	 *   f|--------------------------------------------------|t
+	 * 7
+	 *      |-----|b         |-----|   a|-----|     |-----|
+	 *          f|--------------------------|t
+	 */
+
+	if(a < b-1) /* hits a gap  - example 1 */
+		return 0;
+
+	/* now the subtraction itself */
+
+	if(a==b-1 && from > xbstem[a] && to < xbstem[b]) {
+		/* overlaps with only one subrange and splits it - example 2 */
+		j=xblast; i=(xblast+=2);
+		while(j>=b)
+			xbstem[i--]=xbstem[j--];
+		xbstem[b]=from-1;
+		xbstem[b+1]=to+1;
+		return 1;
+	/* becomes
+	 * 2a
+	 *     a|b   ||          |-----|    |-----|     |-----|
+	 *      f|--|t
+	 */
+	}
+
+	if(xbstem[b-1] < from) {
+		/* cuts the back of this subrange - examples 3, 4, 7 */
+		xbstem[b] = from-1;
+		b+=2;
+	/* becomes
+	 * 3a
+	 *     a|----|           |-----|b   |-----|     |-----|
+	 *           f|-----|t
+	 * 4a
+	 *      |---|           a|-----|b   |-----|     |-----|
+	 *          f|------------|t
+	 * 7a
+	 *      |---|            |-----|b  a|-----|     |-----|
+	 *          f|--------------------------|t
+	 */
+	}
+
+	if(xbstem[a+1] > to) {
+		/* cuts the front of this subrange - examples 4a, 5, 7a */
+		xbstem[a] = to+1;
+		a-=2;
+	/* becomes
+	 * 4b
+	 *     a|---|              |---|b   |-----|     |-----|
+	 *          f|------------|t
+	 * 5b
+	 *      |-----|          |-----|b  a|-----|          ||
+	 *                   f|-----------------------------|t
+	 * 7b
+	 *      |---|           a|-----|b        ||     |-----|
+	 *          f|--------------------------|t
+	 */
+	}
+
+	if(a < b-1) /* now after modification it hits a gap - examples 3a, 4b */
+		return 1; /* because we have removed something */
+
+	/* now remove the subranges completely covered by the new stem */
+	/* examples 5b, 6, 7b */
+	i=b-1; j=a+2;
+	/* positioned as:
+	 * 5b                    i                           j
+	 *      |-----|          |-----|b  a|-----|          ||
+	 *                   f|-----------------------------|t
+	 * 6    i                                             xblast  j
+	 *      |-----|b         |-----|    |-----|    a|-----|
+	 *   f|--------------------------------------------------|t
+	 * 7b                    i               j
+	 *      |---|           a|-----|b        ||     |-----|
+	 *          f|--------------------------|t
+	 */
+	while(j <= xblast)
+		xbstem[i++]=xbstem[j++];
+	xblast=i-1;
+	return 1;
+}
+
+/* for debugging */
+static void
+printbasestem(void)
+{
+	int i;
+
+	printf("( ");
+	for(i=0; i<xblast; i+=2)
+		printf("%d-%d ", xbstem[i], xbstem[i+1]);
+	printf(") %d\n", xblast);
+}
+
+/*
+ * Join the stem borders to build the sets of substituted stems
+ * XXX add consideration of the italic angle
+ */
+static void
+joinsubstems(
+	  STEM * s,
+	  short *pairs,
+	  int nold,
+	  int useblues /* do we use the blue values ? */
+)
+{
+	int i, j, x;
+	static unsigned char mx[MAX_STEMS][MAX_STEMS];
+
+	/* we do the substituted groups of stems first
+	 * and it looks like it's going to be REALLY SLOW 
+	 * AND PAINFUL but let's bother about it later
+	 */
+
+	/* for the substituted stems we don't bother about [hv]stem3 -
+	 * anyway the X11R6 rasterizer does not bother about hstem3
+	 * at all and is able to handle only one global vstem3
+	 * per glyph 
+	 */
+
+	/* clean the used part of matrix */
+	for(i=0; i<nold; i++)
+		for(j=0; j<nold; j++)
+			mx[i][j]=0;
+
+	/* build the matrix of stem pairs */
+	for(i=0; i<nold; i++) {
+		if( s[i].flags & ST_ZONE )
+			continue;
+		if(s[i].flags & ST_BLUE)
+			mx[i][i]=1; /* allow to pair with itself if no better pair */
+		if(s[i].flags & ST_UP) { /* the down-stems are already matched */
+			setbasestem(s[i].from, s[i].to);
+			for(j=i+1; j<nold; j++) {
+				if(s[i].value==s[j].value
+				|| s[j].flags & ST_ZONE ) {
+					continue;
+				}
+				x=subfrombase(s[j].from, s[j].to);
+
+				if(s[j].flags & ST_UP) /* match only up+down pairs */
+					continue;
+
+				mx[i][j]=mx[j][i]=x;
+
+				if(isbaseempty()) /* nothing else to do */
+					break;
+			}
+		}
+	}
+
+	if(ISDBG(SUBSTEMS)) {
+		fprintf(pfa_file, "%%     ");
+		for(j=0; j<nold; j++)
+			putc( j%10==0 ? '0'+(j/10)%10 : ' ', pfa_file);
+		fprintf(pfa_file, "\n%%     ");
+		for(j=0; j<nold; j++)
+			putc('0'+j%10, pfa_file);
+		putc('\n', pfa_file);
+		for(i=0; i<nold; i++) {
+			fprintf(pfa_file, "%% %3d ",i);
+			for(j=0; j<nold; j++)
+				putc( mx[i][j] ? 'X' : '.', pfa_file);
+			putc('\n', pfa_file);
+		}
+	}
+
+	/* now use the matrix to find the best pair for each stem */
+	for(i=0; i<nold; i++) {
+		int pri, lastpri, v, f;
+
+		x= -1; /* best pair: none */
+		lastpri=0;
+
+		v=s[i].value;
+		f=s[i].flags;
+
+		if(f & ST_ZONE) {
+			pairs[i]= -1;
+			continue;
+		}
+
+		if(f & ST_UP) {
+			for(j=i+1; j<nold; j++) {
+				if(mx[i][j]==0)
+					continue;
+
+				if( (f | s[j].flags) & ST_END )
+					pri=1;
+				else if( (f | s[j].flags) & ST_FLAT )
+					pri=3;
+				else
+					pri=2;
+
+				if(lastpri==0
+				|| pri > lastpri  
+				&& ( lastpri==1 || s[j].value-v<20 || (s[x].value-v)*2 >= s[j].value-v ) ) {
+					lastpri=pri;
+					x=j;
+				}
+			}
+		} else {
+			for(j=i-1; j>=0; j--) {
+				if(mx[i][j]==0)
+					continue;
+
+				if( (f | s[j].flags) & ST_END )
+					pri=1;
+				else if( (f | s[j].flags) & ST_FLAT )
+					pri=3;
+				else
+					pri=2;
+
+				if(lastpri==0
+				|| pri > lastpri  
+				&& ( lastpri==1 || v-s[j].value<20 || (v-s[x].value)*2 >= v-s[j].value ) ) {
+					lastpri=pri;
+					x=j;
+				}
+			}
+		}
+		if(x== -1 && mx[i][i])
+			pairs[i]=i; /* a special case */
+		else
+			pairs[i]=x;
+	}
+
+	if(ISDBG(SUBSTEMS)) {
+		for(i=0; i<nold; i++) {
+			j=pairs[i];
+			if(j>0)
+				fprintf(pfa_file, "%% %d...%d  (%d x %d)\n", s[i].value, s[j].value, i, j);
+		}
+	}
+}
+
+/*
+ * Make all the stems originating at the same value get the
+ * same width. Without this the rasterizer may move the dots
+ * randomly up or down by one pixel, and that looks bad.
+ * The prioritisation is the same as in findstemat().
+ */
+static void
+uniformstems(
+	  STEM * s,
+	  short *pairs,
+	  int ns
+)
+{
+	int i, j, from, to, val, dir;
+	int pri, prevpri[2], wd, prevwd[2], prevbest[2];
+
+	for(from=0; from<ns; from=to) {
+		prevpri[0] = prevpri[1] = 0;
+		prevwd[0] = prevwd[1] = 0;
+		prevbest[0] = prevbest[1] = -1;
+		val = s[from].value;
+
+		for(to = from; to<ns && s[to].value == val; to++) {
+			dir = ((s[to].flags & ST_UP)!=0);
+
+			i=pairs[to]; /* the other side of this stem */
+			if(i<0 || i==to)
+				continue; /* oops, no other side */
+			wd=abs(s[i].value-val);
+			if(wd == 0)
+				continue;
+			pri=1;
+			if( (s[to].flags | s[i].flags) & ST_END )
+				pri=0;
+			if( prevbest[dir] == -1 || pri > prevpri[dir] || wd<prevwd[dir] ) {
+				prevbest[dir]=i;
+				prevpri[dir]=pri;
+				prevwd[dir]=wd;
+			}
+		}
+
+		for(i=from; i<to; i++) {
+			dir = ((s[i].flags & ST_UP)!=0);
+			if(prevbest[dir] >= 0) {
+				if(ISDBG(SUBSTEMS)) {
+					fprintf(stderr, "at %d (%s %d) pair %d->%d(%d)\n", i, 
+						(dir ? "UP":"DOWN"), s[i].value, pairs[i], prevbest[dir],
+						s[prevbest[dir]].value);
+				}
+				pairs[i] = prevbest[dir];
+			}
+		}
+	}
+}
+
+/* 
+ * Find the best stem in the array at the specified (value, origin),
+ * related to the entry ge.
+ * Returns its index in the array sp, -1 means "none".
+ * prevbest is the result for the other end of the line, we must 
+ * find something better than it or leave it as it is.
+ */
+static int
+findstemat(
+	int value,
+	int origin,
+	GENTRY *ge,
+	STEM *sp,
+	short *pairs,
+	int ns,
+	int prevbest /* -1 means "none" */
+)
+{
+	int i, min, max;
+	int v, si;
+	int pri, prevpri; /* priority, 0 = has ST_END, 1 = no ST_END */
+	int wd, prevwd; /* stem width */
+
+	si= -1; /* nothing yet */
+
+	/* stems are ordered by value, binary search */
+	min=0; max=ns; /* min <= i < max */
+	while( min < max ) {
+		i=(min+max)/2;
+		v=sp[i].value;
+		if(v<value)
+			min=i+1;
+		else if(v>value)
+			max=i;
+		else {
+			si=i; /* temporary value */
+			break;
+		}
+	}
+
+	if( si < 0 ) /* found nothing this time */
+		return prevbest;
+
+	/* find the priority of the prevbest */
+	/* we expect that prevbest has a pair */
+	if(prevbest>=0) {
+		i=pairs[prevbest];
+		prevpri=1;
+		if( (sp[prevbest].flags | sp[i].flags) & ST_END )
+			prevpri=0; 
+		prevwd=abs(sp[i].value-value);
+	}
+
+	/* stems are not ordered by origin, so now do the linear search */
+
+	while( si>0 && sp[si-1].value==value ) /* find the first one */
+		si--;
+
+	for(; si<ns && sp[si].value==value; si++) {
+		if(sp[si].origin != origin) 
+			continue;
+		if(sp[si].ge != ge) {
+			if(ISDBG(SUBSTEMS)) {
+				fprintf(stderr, 
+					"dbg: possible self-intersection at v=%d o=%d exp_ge=0x%x ge=0x%x\n",
+					value, origin, ge, sp[si].ge);
+			}
+			continue;
+		}
+		i=pairs[si]; /* the other side of this stem */
+		if(i<0)
+			continue; /* oops, no other side */
+		pri=1;
+		if( (sp[si].flags | sp[i].flags) & ST_END )
+			pri=0;
+		wd=abs(sp[i].value-value);
+		if( prevbest == -1 || pri >prevpri 
+		|| pri==prevpri && prevwd==0 || wd!=0 && wd<prevwd ) {
+			prevbest=si;
+			prevpri=pri;
+			prevwd=wd;
+			continue;
+		}
+	}
+
+	return prevbest;
+}
+
+/* add the substems for one glyph entry 
+ * (called from groupsubstems())
+ * returns 0 if all OK, 1 if too many groups
+ */
+
+static int gssentry_lastgrp=0; /* reset to 0 for each new glyph */
+
+static int
+gssentry( /* crazy number of parameters */
+	GENTRY *ge,
+	STEM *hs, /* horizontal stems, sorted by value */
+	short *hpairs,
+	int nhs,
+	STEM *vs, /* vertical stems, sorted by value */
+	short *vpairs,
+	int nvs,
+	STEMBOUNDS *s,
+	short *egp,
+	int *nextvsi, 
+	int *nexthsi /* -2 means "check by yourself" */
+) {
+	enum {
+		SI_VP,	/* vertical primary */
+		SI_HP,	/* horizontal primary */
+		SI_SIZE /* size of the array */
+	};
+	int si[SI_SIZE]; /* indexes of relevant stems */
+
+	/* the bounds of the existing relevant stems */
+	STEMBOUNDS r[ sizeof(si) / sizeof(si[0]) * 2 ];
+	char rexpand; /* by how much we need to expand the group */
+	int nr; /* and the number of them */
+
+	/* yet more temporary storage */
+	short lb, hb, isvert;
+	int conflict, grp;
+	int i, j, x, y;
+
+
+	/* for each line or curve we try to find a horizontal and
+	 * a vertical stem corresponding to its first point
+	 * (corresponding to the last point of the previous
+	 * glyph entry), because the directions of the lines
+	 * will be eventually reversed and it will then become the last
+	 * point. And the T1 rasterizer applies the hints to 
+	 * the last point.
+	 *
+	 */
+
+	/* start with the common part, the first point */
+	x=ge->prev->ix3;
+	y=ge->prev->iy3;
+
+	if(*nextvsi == -2)
+		si[SI_VP]=findstemat(x, y, ge, vs, vpairs, nvs, -1);
+	else {
+		si[SI_VP]= *nextvsi; *nextvsi= -2;
+	}
+	if(*nexthsi == -2)
+		si[SI_HP]=findstemat(y, x, ge, hs, hpairs, nhs, -1);
+	else {
+		si[SI_HP]= *nexthsi; *nexthsi= -2;
+	}
+
+	/*
+	 * For the horizontal lines we make sure that both
+	 * ends of the line have the same horizontal stem,
+	 * and the same thing for vertical lines and stems.
+	 * In both cases we enforce the stem for the next entry.
+	 * Otherwise unpleasant effects may arise.
+	 */
+
+	if(ge->type==GE_LINE) {
+		if(ge->ix3==x) { /* vertical line */
+			*nextvsi=si[SI_VP]=findstemat(x, ge->iy3, ge->frwd, vs, vpairs, nvs, si[SI_VP]);
+		} else if(ge->iy3==y) { /* horizontal line */
+			*nexthsi=si[SI_HP]=findstemat(y, ge->ix3, ge->frwd, hs, hpairs, nhs, si[SI_HP]);
+		}
+	}
+
+	if(si[SI_VP]+si[SI_HP] == -2) /* no stems, leave it alone */
+		return 0;
+
+	/* build the array of relevant bounds */
+	nr=0;
+	for(i=0; i< sizeof(si) / sizeof(si[0]); i++) {
+		STEM *sp;
+		short *pairs;
+		int step;
+		int f;
+		int nzones, firstzone, binzone, einzone;
+		int btype, etype;
+
+		if(si[i] < 0)
+			continue;
+
+		if(i<SI_HP) {
+			r[nr].isvert=1; sp=vs; pairs=vpairs;
+		} else {
+			r[nr].isvert=0; sp=hs; pairs=hpairs;
+		}
+
+		r[nr].low=sp[ si[i] ].value;
+		r[nr].high=sp[ pairs[ si[i] ] ].value;
+
+		if(r[nr].low > r[nr].high) {
+			j=r[nr].low; r[nr].low=r[nr].high; r[nr].high=j;
+			step= -1;
+		} else {
+			step=1;
+		}
+
+		/* handle the interaction with Blue Zones */
+
+		if(i>=SI_HP) { /* only for horizontal stems */
+			if(si[i]==pairs[si[i]]) {
+				/* special case, the outermost stem in the
+				 * Blue Zone without a pair, simulate it to 20-pixel
+				 */
+				if(sp[ si[i] ].flags & ST_UP) {
+					r[nr].high+=20;
+					for(j=si[i]+1; j<nhs; j++)
+						if( (sp[j].flags & (ST_ZONE|ST_TOPZONE))
+						== (ST_ZONE|ST_TOPZONE) ) {
+							if(r[nr].high > sp[j].value-2)
+								r[nr].high=sp[j].value-2;
+							break;
+						}
+				} else {
+					r[nr].low-=20;
+					for(j=si[i]-1; j>=0; j--)
+						if( (sp[j].flags & (ST_ZONE|ST_TOPZONE))
+						== (ST_ZONE) ) {
+							if(r[nr].low < sp[j].value+2)
+								r[nr].low=sp[j].value+2;
+							break;
+						}
+				}
+			}
+
+			/* check that the stem borders don't end up in
+			 * different Blue Zones */
+			f=sp[ si[i] ].flags;
+			nzones=0; einzone=binzone=0;
+			for(j=si[i]; j!=pairs[ si[i] ]; j+=step) {
+				if( (sp[j].flags & ST_ZONE)==0 )
+					continue;
+				/* if see a zone border going in the same direction */
+				if( ((f ^ sp[j].flags) & ST_UP)==0 ) {
+					if( ++nzones == 1 ) {
+						firstzone=sp[j].value; /* remember the first one */
+						etype=sp[j].flags & ST_TOPZONE;
+					}
+					einzone=1;
+
+				} else { /* the opposite direction */
+					if(nzones==0) { /* beginning is in a blue zone */
+						binzone=1;
+						btype=sp[j].flags & ST_TOPZONE;
+					}
+					einzone=0;
+				}
+			}
+
+			/* beginning and end are in Blue Zones of different types */
+			if( binzone && einzone && (btype ^ etype)!=0 ) {
+				if( sp[si[i]].flags & ST_UP ) {
+					if(firstzone > r[nr].low+22)
+						r[nr].high=r[nr].low+20;
+					else
+						r[nr].high=firstzone-2;
+				} else {
+					if(firstzone < r[nr].high-22)
+						r[nr].low=r[nr].high-20;
+					else
+						r[nr].low=firstzone+2;
+				}
+			}
+		}
+
+		if(ISDBG(SUBSTEMS))
+			fprintf(pfa_file, "%%  at(%d,%d)[%d,%d] %d..%d %c (%d x %d)\n", x, y, i, nr,
+				r[nr].low, r[nr].high, r[nr].isvert ? 'v' : 'h',
+				si[i], pairs[si[i]]);
+
+		nr++;
+	}
+
+	/* now try to find a group */
+	conflict=0; /* no conflicts found yet */
+	for(j=0; j<nr; j++)
+		r[j].already=0;
+
+	/* check if it fits into the last group */
+	grp = gssentry_lastgrp;
+	i = (grp==0)? 0 : egp[grp-1];
+	for(; i<egp[grp]; i++) {
+		lb=s[i].low; hb=s[i].high; isvert=s[i].isvert;
+		for(j=0; j<nr; j++)
+			if( r[j].isvert==isvert  /* intersects */
+			&& r[j].low <= hb && r[j].high >= lb ) {
+				if( r[j].low == lb && r[j].high == hb ) /* coincides */
+					r[j].already=1;
+				else
+					conflict=1;
+			}
+
+		if(conflict) 
+			break;
+	}
+
+	if(conflict) { /* nope, check all the groups */
+		for(j=0; j<nr; j++)
+			r[j].already=0;
+
+		for(i=0, grp=0; i<egp[NSTEMGRP-1]; i++) {
+			if(i == egp[grp]) { /* checked all stems in a group */
+				if(conflict) {
+					grp++; conflict=0; /* check the next group */
+					for(j=0; j<nr; j++)
+						r[j].already=0;
+				} else
+					break; /* insert into this group */
+			}
+
+			lb=s[i].low; hb=s[i].high; isvert=s[i].isvert;
+			for(j=0; j<nr; j++)
+				if( r[j].isvert==isvert  /* intersects */
+				&& r[j].low <= hb && r[j].high >= lb ) {
+					if( r[j].low == lb && r[j].high == hb ) /* coincides */
+						r[j].already=1;
+					else
+						conflict=1;
+				}
+
+			if(conflict) 
+				i=egp[grp]-1; /* fast forward to the next group */
+		}
+	}
+
+	/* do we have any empty group ? */
+	if(conflict && grp < NSTEMGRP-1) {
+		grp++; conflict=0;
+		for(j=0; j<nr; j++)
+			r[j].already=0;
+	}
+
+	if(conflict) { /* oops, can't find any group to fit */
+		return 1;
+	}
+
+	/* OK, add stems to this group */
+
+	rexpand = nr;
+	for(j=0; j<nr; j++)
+		rexpand -= r[j].already;
+
+	if(rexpand > 0) {
+		for(i=egp[NSTEMGRP-1]-1; i>=egp[grp]; i--)
+			s[i+rexpand]=s[i];
+		for(i=0; i<nr; i++)
+			if(!r[i].already)
+				s[egp[grp]++]=r[i];
+		for(i=grp+1; i<NSTEMGRP; i++)
+			egp[i]+=rexpand;
+	}
+
+	ge->stemid = gssentry_lastgrp = grp;
+	return 0;
+}
+
+/*
+ * Create the groups of substituted stems from the list.
+ * Each group will be represented by a subroutine in the Subs
+ * array.
+ */
+
+static void
+groupsubstems(
+	GLYPH *g,
+	STEM *hs, /* horizontal stems, sorted by value */
+	short *hpairs,
+	int nhs,
+	STEM *vs, /* vertical stems, sorted by value */
+	short *vpairs,
+	int nvs
+)
+{
+	GENTRY *ge;
+	int i, j;
+
+	/* temporary storage */
+	STEMBOUNDS s[MAX_STEMS*2];
+	/* indexes in there, pointing past the end each stem group */
+	short egp[NSTEMGRP]; 
+
+	int nextvsi, nexthsi; /* -2 means "check by yourself" */
+
+	for(i=0; i<NSTEMGRP; i++)
+		egp[i]=0;
+
+	nextvsi=nexthsi= -2; /* processed no horiz/vert line */
+
+	gssentry_lastgrp = 0; /* reset the last group for new glyph */
+
+	for (ge = g->entries; ge != 0; ge = ge->next) {
+		if(ge->type!=GE_LINE && ge->type!=GE_CURVE) {
+			nextvsi=nexthsi= -2; /* next path is independent */
+			continue;
+		}
+
+		if( gssentry(ge, hs, hpairs, nhs, vs, vpairs, nvs, s, egp, &nextvsi, &nexthsi) ) {
+			WARNING_2 fprintf(stderr, "*** glyph %s requires over %d hint subroutines, ignored them\n",
+				g->name, NSTEMGRP);
+			/* it's better to have no substituted hints at all than have only part */
+			for (ge = g->entries; ge != 0; ge = ge->next)
+				ge->stemid= -1;
+			g->nsg=0; /* just to be safe, already is 0 by initialization */
+			return;
+		}
+
+		/*
+		 * handle the last vert/horiz line of the path specially,
+		 * correct the hint for the first entry of the path
+		 */
+		if(ge->frwd != ge->next && (nextvsi != -2 || nexthsi != -2) ) {
+			if( gssentry(ge->frwd, hs, hpairs, nhs, vs, vpairs, nvs, s, egp, &nextvsi, &nexthsi) ) {
+				WARNING_2 fprintf(stderr, "*** glyph %s requires over %d hint subroutines, ignored them\n",
+					g->name, NSTEMGRP);
+				/* it's better to have no substituted hints at all than have only part */
+				for (ge = g->entries; ge != 0; ge = ge->next)
+					ge->stemid= -1;
+				g->nsg=0; /* just to be safe, already is 0 by initialization */
+				return;
+			}
+		}
+
+	}
+
+	/* find the index of the first empty group - same as the number of groups */
+	if(egp[0]>0) {
+		for(i=1; i<NSTEMGRP && egp[i]!=egp[i-1]; i++)
+			{}
+		g->nsg=i;
+	} else
+		g->nsg=0;
+
+	if(ISDBG(SUBSTEMS)) {
+		fprintf(pfa_file, "%% %d substem groups (%d %d %d)\n", g->nsg,
+			g->nsg>1 ? egp[g->nsg-2] : -1,
+			g->nsg>0 ? egp[g->nsg-1] : -1,
+			g->nsg<NSTEMGRP ? egp[g->nsg] : -1 );
+		j=0;
+		for(i=0; i<g->nsg; i++) {
+			fprintf(pfa_file, "%% grp %3d:      ", i);
+			for(; j<egp[i]; j++) {
+				fprintf(pfa_file, " %4d...%-4d %c  ", s[j].low, s[j].high,
+					s[j].isvert ? 'v' : 'h');
+			}
+			fprintf(pfa_file, "\n");
+		}
+	}
+
+	if(g->nsg==1) { /* it would be the same as the main stems */
+		/* so erase it */
+		for (ge = g->entries; ge != 0; ge = ge->next)
+			ge->stemid= -1;
+		g->nsg=0;
+	}
+
+	if(g->nsg>0) {
+		if( (g->nsbs=malloc(g->nsg * sizeof (egp[0]))) == 0 ) {
+			fprintf(stderr, "**** not enough memory for substituted hints ****\n");
+			exit(255);
+		}
+		memmove(g->nsbs, egp, g->nsg * sizeof(short));
+		if( (g->sbstems=malloc(egp[g->nsg-1] * sizeof (s[0]))) == 0 ) {
+			fprintf(stderr, "**** not enough memory for substituted hints ****\n");
+			exit(255);
+		}
+		memmove(g->sbstems, s, egp[g->nsg-1] * sizeof(s[0]));
+	}
+}
+
+void
+buildstems(
+	   GLYPH * g
+)
+{
+	STEM            hs[MAX_STEMS], vs[MAX_STEMS];	/* temporary working
+							 * storage */
+	short	hs_pairs[MAX_STEMS], vs_pairs[MAX_STEMS]; /* best pairs for these stems */
+	STEM           *sp;
+	GENTRY         *ge, *nge, *pge;
+	int             nx, ny;
+	int ovalue;
+	int totals, grp, lastgrp;
+
+	assertisint(g, "buildstems int");
+
+	g->nhs = g->nvs = 0;
+	memset(hs, 0, sizeof hs);
+	memset(vs, 0, sizeof vs);
+
+	/* first search the whole character for possible stem points */
+
+	for (ge = g->entries; ge != 0; ge = ge->next) {
+		if (ge->type == GE_CURVE) {
+
+			/*
+			 * SURPRISE! 
+			 * We consider the stems bound by the
+			 * H/V ends of the curves as flat ones.
+			 *
+			 * But we don't include the point on the
+			 * other end into the range.
+			 */
+
+			/* first check the beginning of curve */
+			/* if it is horizontal, add a hstem */
+			if (ge->iy1 == ge->prev->iy3) {
+				hs[g->nhs].value = ge->iy1;
+
+				if (ge->ix1 < ge->prev->ix3)
+					hs[g->nhs].flags = ST_FLAT | ST_UP;
+				else
+					hs[g->nhs].flags = ST_FLAT;
+
+				hs[g->nhs].origin = ge->prev->ix3;
+				hs[g->nhs].ge = ge;
+
+				if (ge->ix1 < ge->prev->ix3) {
+					hs[g->nhs].from = ge->ix1+1;
+					hs[g->nhs].to = ge->prev->ix3;
+					if(hs[g->nhs].from > hs[g->nhs].to)
+						hs[g->nhs].from--;
+				} else {
+					hs[g->nhs].from = ge->prev->ix3;
+					hs[g->nhs].to = ge->ix1-1;
+					if(hs[g->nhs].from > hs[g->nhs].to)
+						hs[g->nhs].to++;
+				}
+				if (ge->ix1 != ge->prev->ix3)
+					g->nhs++;
+			}
+			/* if it is vertical, add a vstem */
+			else if (ge->ix1 == ge->prev->ix3) {
+				vs[g->nvs].value = ge->ix1;
+
+				if (ge->iy1 > ge->prev->iy3)
+					vs[g->nvs].flags = ST_FLAT | ST_UP;
+				else
+					vs[g->nvs].flags = ST_FLAT;
+
+				vs[g->nvs].origin = ge->prev->iy3;
+				vs[g->nvs].ge = ge;
+
+				if (ge->iy1 < ge->prev->iy3) {
+					vs[g->nvs].from = ge->iy1+1;
+					vs[g->nvs].to = ge->prev->iy3;
+					if(vs[g->nvs].from > vs[g->nvs].to)
+						vs[g->nvs].from--;
+				} else {
+					vs[g->nvs].from = ge->prev->iy3;
+					vs[g->nvs].to = ge->iy1-1;
+					if(vs[g->nvs].from > vs[g->nvs].to)
+						vs[g->nvs].to++;
+				}
+
+				if (ge->iy1 != ge->prev->iy3)
+					g->nvs++;
+			}
+			/* then check the end of curve */
+			/* if it is horizontal, add a hstem */
+			if (ge->iy3 == ge->iy2) {
+				hs[g->nhs].value = ge->iy3;
+
+				if (ge->ix3 < ge->ix2)
+					hs[g->nhs].flags = ST_FLAT | ST_UP;
+				else
+					hs[g->nhs].flags = ST_FLAT;
+
+				hs[g->nhs].origin = ge->ix3;
+				hs[g->nhs].ge = ge->frwd;
+
+				if (ge->ix3 < ge->ix2) {
+					hs[g->nhs].from = ge->ix3;
+					hs[g->nhs].to = ge->ix2-1;
+					if( hs[g->nhs].from > hs[g->nhs].to )
+						hs[g->nhs].to++;
+				} else {
+					hs[g->nhs].from = ge->ix2+1;
+					hs[g->nhs].to = ge->ix3;
+					if( hs[g->nhs].from > hs[g->nhs].to )
+						hs[g->nhs].from--;
+				}
+
+				if (ge->ix3 != ge->ix2)
+					g->nhs++;
+			}
+			/* if it is vertical, add a vstem */
+			else if (ge->ix3 == ge->ix2) {
+				vs[g->nvs].value = ge->ix3;
+
+				if (ge->iy3 > ge->iy2)
+					vs[g->nvs].flags = ST_FLAT | ST_UP;
+				else
+					vs[g->nvs].flags = ST_FLAT;
+
+				vs[g->nvs].origin = ge->iy3;
+				vs[g->nvs].ge = ge->frwd;
+
+				if (ge->iy3 < ge->iy2) {
+					vs[g->nvs].from = ge->iy3;
+					vs[g->nvs].to = ge->iy2-1;
+					if( vs[g->nvs].from > vs[g->nvs].to )
+						vs[g->nvs].to++;
+				} else {
+					vs[g->nvs].from = ge->iy2+1;
+					vs[g->nvs].to = ge->iy3;
+					if( vs[g->nvs].from > vs[g->nvs].to )
+						vs[g->nvs].from--;
+				}
+
+				if (ge->iy3 != ge->iy2)
+					g->nvs++;
+			} else {
+
+				/*
+				 * check the end of curve for a not smooth
+				 * local extremum
+				 */
+				nge = ge->frwd;
+
+				if (nge == 0)
+					continue;
+				else if (nge->type == GE_LINE) {
+					nx = nge->ix3;
+					ny = nge->iy3;
+				} else if (nge->type == GE_CURVE) {
+					nx = nge->ix1;
+					ny = nge->iy1;
+				} else
+					continue;
+
+				/* check for vertical extremums */
+				if (ge->iy3 > ge->iy2 && ge->iy3 > ny
+				|| ge->iy3 < ge->iy2 && ge->iy3 < ny) {
+					hs[g->nhs].value = ge->iy3;
+					hs[g->nhs].from
+						= hs[g->nhs].to
+						= hs[g->nhs].origin = ge->ix3;
+					hs[g->nhs].ge = ge->frwd;
+
+					if (ge->ix3 < ge->ix2
+					    || nx < ge->ix3)
+						hs[g->nhs].flags = ST_UP;
+					else
+						hs[g->nhs].flags = 0;
+
+					if (ge->ix3 != ge->ix2 || nx != ge->ix3)
+						g->nhs++;
+				}
+				/*
+				 * the same point may be both horizontal and
+				 * vertical extremum
+				 */
+				/* check for horizontal extremums */
+				if (ge->ix3 > ge->ix2 && ge->ix3 > nx
+				|| ge->ix3 < ge->ix2 && ge->ix3 < nx) {
+					vs[g->nvs].value = ge->ix3;
+					vs[g->nvs].from
+						= vs[g->nvs].to
+						= vs[g->nvs].origin = ge->iy3;
+					vs[g->nvs].ge = ge->frwd;
+
+					if (ge->iy3 > ge->iy2
+					    || ny > ge->iy3)
+						vs[g->nvs].flags = ST_UP;
+					else
+						vs[g->nvs].flags = 0;
+
+					if (ge->iy3 != ge->iy2 || ny != ge->iy3)
+						g->nvs++;
+				}
+			}
+
+		} else if (ge->type == GE_LINE) {
+			nge = ge->frwd;
+
+			/* if it is horizontal, add a hstem */
+			/* and the ends as vstems if they brace the line */
+			if (ge->iy3 == ge->prev->iy3
+			&& ge->ix3 != ge->prev->ix3) {
+				hs[g->nhs].value = ge->iy3;
+				if (ge->ix3 < ge->prev->ix3) {
+					hs[g->nhs].flags = ST_FLAT | ST_UP;
+					hs[g->nhs].from = ge->ix3;
+					hs[g->nhs].to = ge->prev->ix3;
+				} else {
+					hs[g->nhs].flags = ST_FLAT;
+					hs[g->nhs].from = ge->prev->ix3;
+					hs[g->nhs].to = ge->ix3;
+				}
+				hs[g->nhs].origin = ge->ix3;
+				hs[g->nhs].ge = ge->frwd;
+
+				pge = ge->bkwd;
+
+				/* add beginning as vstem */
+				vs[g->nvs].value = pge->ix3;
+				vs[g->nvs].origin
+					= vs[g->nvs].from
+					= vs[g->nvs].to = pge->iy3;
+				vs[g->nvs].ge = ge;
+
+				if(pge->type==GE_CURVE)
+					ovalue=pge->iy2;
+				else
+					ovalue=pge->prev->iy3;
+
+				if (pge->iy3 > ovalue)
+					vs[g->nvs].flags = ST_UP | ST_END;
+				else if (pge->iy3 < ovalue)
+					vs[g->nvs].flags = ST_END;
+				else
+					vs[g->nvs].flags = 0;
+
+				if( vs[g->nvs].flags != 0 )
+					g->nvs++;
+
+				/* add end as vstem */
+				vs[g->nvs].value = ge->ix3;
+				vs[g->nvs].origin
+					= vs[g->nvs].from
+					= vs[g->nvs].to = ge->iy3;
+				vs[g->nvs].ge = ge->frwd;
+
+				if(nge->type==GE_CURVE)
+					ovalue=nge->iy1;
+				else
+					ovalue=nge->iy3;
+
+				if (ovalue > ge->iy3)
+					vs[g->nvs].flags = ST_UP | ST_END;
+				else if (ovalue < ge->iy3)
+					vs[g->nvs].flags = ST_END;
+				else
+					vs[g->nvs].flags = 0;
+
+				if( vs[g->nvs].flags != 0 )
+					g->nvs++;
+
+				g->nhs++;
+			}
+			/* if it is vertical, add a vstem */
+			/* and the ends as hstems if they brace the line  */
+			else if (ge->ix3 == ge->prev->ix3 
+			&& ge->iy3 != ge->prev->iy3) {
+				vs[g->nvs].value = ge->ix3;
+				if (ge->iy3 > ge->prev->iy3) {
+					vs[g->nvs].flags = ST_FLAT | ST_UP;
+					vs[g->nvs].from = ge->prev->iy3;
+					vs[g->nvs].to = ge->iy3;
+				} else {
+					vs[g->nvs].flags = ST_FLAT;
+					vs[g->nvs].from = ge->iy3;
+					vs[g->nvs].to = ge->prev->iy3;
+				}
+				vs[g->nvs].origin = ge->iy3;
+				vs[g->nvs].ge = ge->frwd;
+
+				pge = ge->bkwd;
+
+				/* add beginning as hstem */
+				hs[g->nhs].value = pge->iy3;
+				hs[g->nhs].origin
+					= hs[g->nhs].from
+					= hs[g->nhs].to = pge->ix3;
+				hs[g->nhs].ge = ge;
+
+				if(pge->type==GE_CURVE)
+					ovalue=pge->ix2;
+				else
+					ovalue=pge->prev->ix3;
+
+				if (pge->ix3 < ovalue)
+					hs[g->nhs].flags = ST_UP | ST_END;
+				else if (pge->ix3 > ovalue)
+					hs[g->nhs].flags = ST_END;
+				else
+					hs[g->nhs].flags = 0;
+
+				if( hs[g->nhs].flags != 0 )
+					g->nhs++;
+
+				/* add end as hstem */
+				hs[g->nhs].value = ge->iy3;
+				hs[g->nhs].origin
+					= hs[g->nhs].from
+					= hs[g->nhs].to = ge->ix3;
+				hs[g->nhs].ge = ge->frwd;
+
+				if(nge->type==GE_CURVE)
+					ovalue=nge->ix1;
+				else
+					ovalue=nge->ix3;
+
+				if (ovalue < ge->ix3)
+					hs[g->nhs].flags = ST_UP | ST_END;
+				else if (ovalue > ge->ix3)
+					hs[g->nhs].flags = ST_END;
+				else
+					hs[g->nhs].flags = 0;
+
+				if( hs[g->nhs].flags != 0 )
+					g->nhs++;
+
+				g->nvs++;
+			}
+			/*
+			 * check the end of line for a not smooth local
+			 * extremum
+			 */
+			nge = ge->frwd;
+
+			if (nge == 0)
+				continue;
+			else if (nge->type == GE_LINE) {
+				nx = nge->ix3;
+				ny = nge->iy3;
+			} else if (nge->type == GE_CURVE) {
+				nx = nge->ix1;
+				ny = nge->iy1;
+			} else
+				continue;
+
+			/* check for vertical extremums */
+			if (ge->iy3 > ge->prev->iy3 && ge->iy3 > ny
+			|| ge->iy3 < ge->prev->iy3 && ge->iy3 < ny) {
+				hs[g->nhs].value = ge->iy3;
+				hs[g->nhs].from
+					= hs[g->nhs].to
+					= hs[g->nhs].origin = ge->ix3;
+				hs[g->nhs].ge = ge->frwd;
+
+				if (ge->ix3 < ge->prev->ix3
+				    || nx < ge->ix3)
+					hs[g->nhs].flags = ST_UP;
+				else
+					hs[g->nhs].flags = 0;
+
+				if (ge->ix3 != ge->prev->ix3 || nx != ge->ix3)
+					g->nhs++;
+			}
+			/*
+			 * the same point may be both horizontal and vertical
+			 * extremum
+			 */
+			/* check for horizontal extremums */
+			if (ge->ix3 > ge->prev->ix3 && ge->ix3 > nx
+			|| ge->ix3 < ge->prev->ix3 && ge->ix3 < nx) {
+				vs[g->nvs].value = ge->ix3;
+				vs[g->nvs].from
+					= vs[g->nvs].to
+					= vs[g->nvs].origin = ge->iy3;
+				vs[g->nvs].ge = ge->frwd;
+
+				if (ge->iy3 > ge->prev->iy3
+				    || ny > ge->iy3)
+					vs[g->nvs].flags = ST_UP;
+				else
+					vs[g->nvs].flags = 0;
+
+				if (ge->iy3 != ge->prev->iy3 || ny != ge->iy3)
+					g->nvs++;
+			}
+		}
+	}
+
+	g->nhs=addbluestems(hs, g->nhs);
+	sortstems(hs, g->nhs);
+	sortstems(vs, g->nvs);
+
+	if (ISDBG(STEMS))
+		debugstems(g->name, hs, g->nhs, vs, g->nvs);
+
+	/* find the stems interacting with the Blue Zones */
+	markbluestems(hs, g->nhs);
+
+	if(subhints) {
+		if (ISDBG(SUBSTEMS))
+			fprintf(pfa_file, "%% %s: joining subst horizontal stems\n", g->name);
+		joinsubstems(hs, hs_pairs, g->nhs, 1);
+		uniformstems(hs, hs_pairs, g->nhs);
+
+		if (ISDBG(SUBSTEMS))
+			fprintf(pfa_file, "%% %s: joining subst vertical stems\n", g->name);
+		joinsubstems(vs, vs_pairs, g->nvs, 0);
+
+		groupsubstems(g, hs, hs_pairs, g->nhs, vs, vs_pairs, g->nvs);
+	}
+
+	if (ISDBG(MAINSTEMS))
+		fprintf(pfa_file, "%% %s: joining main horizontal stems\n", g->name);
+	g->nhs = joinmainstems(hs, g->nhs, 1);
+	if (ISDBG(MAINSTEMS))
+		fprintf(pfa_file, "%% %s: joining main vertical stems\n", g->name);
+	g->nvs = joinmainstems(vs, g->nvs, 0);
+
+	if (ISDBG(MAINSTEMS))
+		debugstems(g->name, hs, g->nhs, vs, g->nvs);
+
+	if(g->nhs > 0) {
+		if ((sp = malloc(sizeof(STEM) * g->nhs)) == 0) {
+			fprintf(stderr, "**** not enough memory for hints ****\n");
+			exit(255);
+		}
+		g->hstems = sp;
+		memcpy(sp, hs, sizeof(STEM) * g->nhs);
+	} else
+		g->hstems = 0;
+
+	if(g->nvs > 0) {
+		if ((sp = malloc(sizeof(STEM) * g->nvs)) == 0) {
+			fprintf(stderr, "**** not enough memory for hints ****\n");
+			exit(255);
+		}
+		g->vstems = sp;
+		memcpy(sp, vs, sizeof(STEM) * g->nvs);
+	} else
+		g->vstems = 0;
+
+	/* now check that the stems won't overflow the interpreter's stem stack:
+	 * some interpreters (like X11) push the stems on each change into
+	 * stack and pop them only after the whole glyphs is completed.
+	 */
+
+	totals = (g->nhs+g->nvs) / 2; /* we count whole stems, not halves */
+	lastgrp = -1;
+
+	for (ge = g->entries; ge != 0; ge = ge->next) {
+		grp=ge->stemid;
+		if(grp >= 0 && grp != lastgrp)  {
+			if(grp==0)
+				totals += g->nsbs[0];
+			else
+				totals += g->nsbs[grp] - g->nsbs[grp-1];
+
+			lastgrp = grp;
+		}
+	}
+
+	/* be on the safe side, check for >= , not > */
+	if(totals >= max_stemdepth) {  /* oops, too deep */
+		WARNING_2 {
+			fprintf(stderr, "Warning: glyph %s needs hint stack depth %d\n", g->name, totals);
+			fprintf(stderr, "  (limit %d): removed the substituted hints from it\n", max_stemdepth);
+		}
+		if(g->nsg > 0) {
+			for (ge = g->entries; ge != 0; ge = ge->next)
+				ge->stemid = -1;
+			free(g->sbstems); g->sbstems = 0;
+			free(g->nsbs); g->nsbs = 0;
+			g->nsg = 0;
+		}
+	}
+
+	/* now check if there are too many main stems */
+	totals = (g->nhs+g->nvs) / 2; /* we count whole stems, not halves */
+	if(totals >= max_stemdepth) { 
+		/* even worse, too much of non-substituted stems */
+		WARNING_2 {
+			fprintf(stderr, "Warning: glyph %s has %d main hints\n", g->name, totals);
+			fprintf(stderr, "  (limit %d): removed the hints from it\n", max_stemdepth);
+		}
+		if(g->vstems) {
+			free(g->vstems); g->vstems = 0; g->nvs = 0;
+		}
+		if(g->hstems) {
+			free(g->hstems); g->hstems = 0; g->nhs = 0;
+		}
+	}
+}
+
+/* convert weird curves that are close to lines into lines.
+*/
+
+void
+fstraighten(
+	   GLYPH * g
+)
+{
+	GENTRY         *ge, *pge, *nge, *ige;
+	double          df;
+	int             dir;
+	double          iln, oln;
+	int             svdir, i, o;
+
+	for (ige = g->entries; ige != 0; ige = ige->next) {
+		if (ige->type != GE_CURVE)
+			continue;
+
+		ge = ige;
+		pge = ge->bkwd;
+		nge = ge->frwd;
+
+		df = 0.;
+
+		/* look for vertical then horizontal */
+		for(i=0; i<2; i++) {
+			o = !i; /* other axis */
+
+			iln = fabs(ge->fpoints[i][2] - pge->fpoints[i][2]);
+			oln = fabs(ge->fpoints[o][2] - pge->fpoints[o][2]);
+			/*
+			 * if current curve is almost a vertical line, and it
+			 * doesn't begin or end horizontally (and the prev/next
+			 * line doesn't join smoothly ?)
+			 */
+			if( oln < 1.
+			|| ge->fpoints[o][2] == ge->fpoints[o][1] 
+			|| ge->fpoints[o][0] == pge->fpoints[o][2]
+			|| iln > 2.
+			|| iln > 1.  && iln/oln > 0.1 )
+				continue;
+
+
+			if(ISDBG(STRAIGHTEN)) 
+				fprintf(stderr,"** straighten almost %s\n", (i? "horizontal":"vertical"));
+
+			df = ge->fpoints[i][2] - pge->fpoints[i][2];
+			dir = fsign(ge->fpoints[o][2] - pge->fpoints[o][2]);
+			ge->type = GE_LINE;
+
+			/*
+			 * suck in all the sequence of such almost lines
+			 * going in the same direction but not deviating
+			 * too far from vertical
+			 */
+			iln = fabs(nge->fpoints[i][2] - ge->fpoints[i][2]);
+			oln = nge->fpoints[o][2] - ge->fpoints[o][2];
+
+			while (fabs(df) <= 5 && nge->type == GE_CURVE
+			&& dir == fsign(oln) /* that also gives oln != 0 */
+			&& iln <= 2.
+			&& ( iln <= 1.  || iln/fabs(oln) <= 0.1 ) ) {
+				ge->fx3 = nge->fx3;
+				ge->fy3 = nge->fy3;
+
+				if(ISDBG(STRAIGHTEN))
+					fprintf(stderr,"** straighten collapsing %s\n", (i? "horizontal":"vertical"));
+				freethisge(nge);
+				fixendpath(ge);
+				pge = ge->bkwd;
+				nge = ge->frwd;
+
+				df = ge->fpoints[i][2] - pge->fpoints[i][2];
+
+				iln = fabs(nge->fpoints[i][2] - ge->fpoints[i][2]);
+				oln = nge->fpoints[o][2] - ge->fpoints[o][2];
+			}
+
+			/* now check what do we have as previous/next line */
+
+			if(ge != pge) { 
+				if( pge->type == GE_LINE && pge->fpoints[i][2] == pge->prev->fpoints[i][2]
+				&& fabs(pge->fpoints[o][2] != pge->prev->fpoints[o][2]) ) {
+					if(ISDBG(STRAIGHTEN)) fprintf(stderr,"** straighten join with previous 0x%x 0x%x\n", pge, ge);
+					/* join the previous line with current */
+					pge->fx3 = ge->fx3;
+					pge->fy3 = ge->fy3;
+
+					ige = freethisge(ge)->prev; /* keep the iterator valid */
+					ge = pge;
+					fixendpath(ge);
+					pge = ge->bkwd;
+				}
+			}
+
+			if(ge != nge) { 
+				if (nge->type == GE_LINE && nge->fpoints[i][2] == ge->fpoints[i][2]
+				&& fabs(nge->fpoints[o][2] != ge->fpoints[o][2]) ) {
+					if(ISDBG(STRAIGHTEN)) fprintf(stderr,"** straighten join with next 0x%x 0x%x\n", ge, nge);
+					/* join the next line with current */
+					ge->fx3 = nge->fx3;
+					ge->fy3 = nge->fy3;
+
+					freethisge(nge);
+					fixendpath(ge);
+					pge = ge->bkwd;
+					nge = ge->frwd;
+
+				}
+			}
+
+			if(ge != pge) { 
+				/* try to align the lines if neccessary */
+				if(df != 0.)
+					fclosegap(ge, ge, i, df, NULL);
+			} else {
+				/* contour consists of only one line, get rid of it */
+				ige = freethisge(ge); /* keep the iterator valid */
+				if(ige == 0) /* this was the last contour */
+					return;
+				ige = ige->prev;
+			}
+
+			break; /* don't bother looking at the other axis */
+		}
+	}
+}
+
+/* solve a square equation,
+ * returns the number of solutions found, the solutions
+ * are stored in res which should point to array of two doubles.
+ * min and max limit the area for solutions
+ */
+
+static int
+fsqequation(
+	double a,
+	double b,
+	double c,
+	double *res,
+	double min,
+	double max
+)
+{
+	double D;
+	int n;
+
+	if(ISDBG(SQEQ)) fprintf(stderr, "sqeq(%g,%g,%g) [%g;%g]\n", a, b, c, min, max);
+
+	if(fabs(a) < 0.000001) { /* if a linear equation */
+		n=0;
+		if(fabs(b) < 0.000001) /* not an equation at all */
+			return 0;
+		res[0] = -c/b;
+		if(ISDBG(SQEQ)) fprintf(stderr, "sqeq: linear t=%g\n", res[0]);
+		if(res[0] >= min && res[0] <= max)
+			n++;
+		return n;
+	}
+
+	D = b*b - 4.0*a*c;
+	if(ISDBG(SQEQ)) fprintf(stderr, "sqeq: D=%g\n", D);
+	if(D<0)
+		return 0;
+
+	D = sqrt(D);
+
+	n=0;
+	res[0] = (-b+D) / (2*a);
+	if(ISDBG(SQEQ)) fprintf(stderr, "sqeq: t1=%g\n", res[0]);
+	if(res[0] >= min && res[0] <= max)
+		n++;
+
+	res[n] = (-b-D) / (2*a);
+	if(ISDBG(SQEQ)) fprintf(stderr, "sqeq: t2=%g\n", res[n]);
+	if(res[n] >= min && res[n] <= max)
+		n++;
+
+	/* return 2nd solution only if it's different enough */
+	if(n==2 && fabs(res[0]-res[1])<0.000001)
+		n=1;
+
+	return n;
+}
+
+/* check that the curves don't cross quadrant boundary */
+/* (float) */
+
+/*
+  Here we make sure that the curve does not continue past
+  horizontal or vertical extremums. The horizontal points are
+  explained, vertical points are by analogy.
+
+  The horizontal points are where the derivative
+  dy/dx is equal to 0. But the Bezier curves are defined by
+  parametric formulas
+   x=fx(t)
+   y=fy(t)
+  so finding this derivative is complicated.
+  Also even if we find some point (x,y) splitting at this point
+  is far not obvious. Fortunately we can use dy/dt = 0 instead,
+  this gets to a rather simple square equation and splitting
+  at a known value of t is simple.
+
+  The formulas are:
+
+  y = A*(1-t)^3 + 3*B*(1-t)^2*t + 3*C*(1-t)*t^2 + D*t^3
+  y = (-A+3*B-3*C+D)*t^3 + (3*A-6*B+3*C)*t^2 + (-3*A+3*B)*t + A
+  dy/dt = 3*(-A+3*B-3*C+D)*t^2 + 2*(3*A-6*B+3*C)*t + (-3*A+3*B)
+ */
+
+void
+ffixquadrants(
+	GLYPH *g
+)
+{
+	GENTRY         *ge, *nge;
+	int	i, j, np, oldnp;
+	double	sp[5]; /* split points, last one empty */
+	char dir[5]; /* for debugging, direction by which split happened */
+	double a, b, *pts; /* points of a curve */
+
+	for (ge = g->entries; ge != 0; ge = ge->next) {
+		if (ge->type != GE_CURVE)
+			continue;
+		
+	doagain:
+		np = 0; /* no split points yet */
+		if(ISDBG(QUAD)) {
+			fprintf(stderr, "%s: trying 0x%x (%g %g) (%g %g) (%g %g) (%g %g)\n  ", g->name,
+				ge,  ge->prev->fx3, ge->prev->fy3, ge->fx1, ge->fy1, ge->fx2, ge->fy2,
+				ge->fx3, ge->fy3);
+		}
+		for(i=0; i<2; i++) { /* first for x then for y */
+			/* find the cooridnates of control points */
+			a = ge->prev->fpoints[i][2];
+			pts = &ge->fpoints[i][0];
+
+			oldnp = np;
+			np += fsqequation(
+				3.0*(-a + 3.0*pts[0] - 3.0*pts[1] + pts[2]),
+				6.0*(a - 2.0*pts[0] + pts[1]),
+				3.0*(-a + pts[0]),
+				&sp[np],
+				0.0, 1.0); /* XXX range is [0;1] */
+
+			if(np == oldnp)
+				continue;
+
+			if(ISDBG(QUAD))
+				fprintf(stderr, "%s: 0x%x: %d pts(%c): ", 
+					g->name, ge, np-oldnp, i? 'y':'x');
+
+			/* remove points that are too close to the ends 
+			 * because hor/vert ends are permitted, also
+			 * if the split point is VERY close to the ends
+			 * but not exactly then just flatten it and check again.
+			 */
+			for(j = oldnp; j<np; j++) {
+				dir[j] = i;
+				if(ISDBG(QUAD))
+					fprintf(stderr, "%g ", sp[j]);
+				if(sp[j] < 0.03) { /* front end of curve */
+					if(ge->fpoints[i][0] != ge->prev->fpoints[i][2]) {
+						ge->fpoints[i][0] = ge->prev->fpoints[i][2];
+						if(ISDBG(QUAD)) fprintf(stderr, "flattened at front\n");
+						goto doagain;
+					}
+					if( ge->fpoints[i][1] != ge->fpoints[i][0]
+					&& fsign(ge->fpoints[i][2] - ge->fpoints[i][1])
+							!= fsign(ge->fpoints[i][1] - ge->fpoints[i][0]) ) {
+						ge->fpoints[i][1] = ge->fpoints[i][0];
+						if(ISDBG(QUAD)) fprintf(stderr, "flattened zigzag at front\n");
+						goto doagain;
+					}
+					sp[j] = sp[j+1]; np--; j--;
+					if(ISDBG(QUAD)) fprintf(stderr, "(front flat)  ");
+				} else if(sp[j] > 0.97) { /* rear end of curve */
+					if(ge->fpoints[i][1] != ge->fpoints[i][2]) {
+						ge->fpoints[i][1] = ge->fpoints[i][2];
+						if(ISDBG(QUAD)) fprintf(stderr, "flattened at rear\n");
+						goto doagain;
+					}
+					if( ge->fpoints[i][0] != ge->fpoints[i][1]
+					&& fsign(ge->prev->fpoints[i][2] - ge->fpoints[i][0])
+							!= fsign(ge->fpoints[i][0] - ge->fpoints[i][1]) ) {
+						ge->fpoints[i][0] = ge->fpoints[i][1];
+						if(ISDBG(QUAD)) fprintf(stderr, "flattened zigzag at rear\n");
+						goto doagain;
+					}
+					sp[j] = sp[j+1]; np--; j--;
+					if(ISDBG(QUAD)) fprintf(stderr, "(rear flat)  ");
+				} 
+			}
+			if(ISDBG(QUAD)) fprintf(stderr, "\n");
+		}
+
+		if(np==0) /* no split points, leave it alone */
+			continue;
+
+		if(ISDBG(QUAD)) {
+			fprintf(stderr, "%s: splitting 0x%x (%g %g) (%g %g) (%g %g) (%g %g) at %d points\n  ", g->name,
+				ge,  ge->prev->fx3, ge->prev->fy3, ge->fx1, ge->fy1, ge->fx2, ge->fy2,
+				ge->fx3, ge->fy3, np);
+			for(i=0; i<np; i++)
+				fprintf(stderr, "%g(%c) ", sp[i], dir[i] ? 'y':'x');
+			fprintf(stderr, "\n");
+		}
+
+		/* sort the points ascending */
+		for(i=0; i<np; i++)
+			for(j=i+1; j<np; j++)
+				if(sp[i] > sp[j]) {
+					a = sp[i]; sp[i] = sp[j]; sp[j] = a;
+				}
+
+		/* now finally do the split on each point */
+		for(j=0; j<np; j++) {
+			double k1, k2, c;
+
+			k1 = sp[j];
+			k2 = 1 - k1;
+
+			if(ISDBG(QUAD)) fprintf(stderr, "   0x%x %g/%g\n", ge, k1, k2);
+
+			nge = newgentry(GEF_FLOAT);
+			(*nge) = (*ge);
+
+#define SPLIT(pt1, pt2)	( (pt1) + k1*((pt2)-(pt1)) ) /* order is important! */
+			for(i=0; i<2; i++) { /* for x and y */
+				a = ge->fpoints[i][0]; /* get the middle points */
+				b = ge->fpoints[i][1];
+
+				/* calculate new internal points */
+				c = SPLIT(a, b);
+
+				ge->fpoints[i][0] = SPLIT(ge->prev->fpoints[i][2], a);
+				ge->fpoints[i][1] = SPLIT(ge->fpoints[i][0], c);
+
+				nge->fpoints[i][1] = SPLIT(b, nge->fpoints[i][2]);
+				nge->fpoints[i][0] = SPLIT(c, nge->fpoints[i][1]);
+
+				ge->fpoints[i][2] = SPLIT(ge->fpoints[i][1],
+					+ nge->fpoints[i][0]);
+			}
+#undef SPLIT
+
+			addgeafter(ge, nge);
+
+			/* go to the next part, adjust remaining points */
+			ge = nge;
+			for(i=j+1; i<np; i++)
+				sp[i] = (sp[i]-k1) / k2;
+		}
+	}
+
+}
+
+/* check if a curve is a zigzag */
+
+static int
+iiszigzag(
+	GENTRY *ge
+) 
+{
+	double          k, k1, k2;
+	int             a, b;
+
+	if (ge->type != GE_CURVE)
+		return 0;
+
+	a = ge->iy2 - ge->iy1;
+	b = ge->ix2 - ge->ix1;
+	if(a == 0) {
+		if(b == 0) {
+			return 0;
+		} else
+			k = FBIGVAL;
+	} else
+		k = fabs((double) b / (double) a);
+
+	a = ge->iy1 - ge->prev->iy3;
+	b = ge->ix1 - ge->prev->ix3;
+	if(a == 0) {
+		if(b == 0) {
+			return 0;
+		} else
+			k1 = FBIGVAL;
+	} else
+		k1 = fabs((double) b / (double) a);
+
+	a = ge->iy3 - ge->iy2;
+	b = ge->ix3 - ge->ix2;
+	if(a == 0) {
+		if(b == 0) {
+			return 0;
+		} else
+			k2 = FBIGVAL;
+	} else
+		k2 = fabs((double) b / (double) a);
+
+	/* if the curve is not a zigzag */
+	if (k1+0.0001 >= k && k2 <= k+0.0001 || k1 <= k+0.0001 && k2+0.0001 >= k)
+		return 0;
+	else
+		return 1;
+}
+
+/* check if a curve is a zigzag - floating */
+
+static int
+fiszigzag(
+	GENTRY *ge
+) 
+{
+	double          k, k1, k2;
+	double          a, b;
+
+	if (ge->type != GE_CURVE)
+		return 0;
+
+	a = fabs(ge->fy2 - ge->fy1);
+	b = fabs(ge->fx2 - ge->fx1);
+	if(a < FEPS) {
+		if(b < FEPS) {
+			return 0;
+		} else
+			k = FBIGVAL;
+	} else
+		k = b / a;
+
+	a = fabs(ge->fy1 - ge->prev->fy3);
+	b = fabs(ge->fx1 - ge->prev->fx3);
+	if(a < FEPS) {
+		if(b < FEPS) {
+			return 0;
+		} else
+			k1 = FBIGVAL;
+	} else
+		k1 = b / a;
+
+	a = fabs(ge->fy3 - ge->fy2);
+	b = fabs(ge->fx3 - ge->fx2);
+	if(a < FEPS) {
+		if(b < FEPS) {
+			return 0;
+		} else
+			k2 = FBIGVAL;
+	} else
+		k2 = b / a;
+
+	/* if the curve is not a zigzag */
+	if (k1+0.0001 >= k && k2 <= k+0.0001 || k1 <= k+0.0001 && k2+0.0001 >= k)
+		return 0;
+	else
+		return 1;
+}
+
+/* split the zigzag-like curves into two parts */
+
+void
+fsplitzigzags(
+	     GLYPH * g
+)
+{
+	GENTRY         *ge, *nge;
+	double          a, b, c, d;
+
+	assertisfloat(g, "splitting zigzags");
+	for (ge = g->entries; ge != 0; ge = ge->next) {
+		if (ge->type != GE_CURVE)
+			continue;
+
+		/* if the curve is not a zigzag */
+		if ( !fiszigzag(ge) ) {
+			continue;
+		}
+
+		if(ISDBG(FCONCISE)) {
+			double maxsc1, maxsc2; 
+			fprintf(stderr, "split a zigzag ");
+			fnormalizege(ge);
+			if( fcrossraysge(ge, ge, &maxsc1, &maxsc2, NULL) ) {
+				fprintf(stderr, "sc1=%g sc2=%g\n", maxsc1, maxsc2);
+			} else {
+				fprintf(stderr, "(rays don't cross)\n");
+			}
+		}
+		/* split the curve by t=0.5 */
+		nge = newgentry(GEF_FLOAT);
+		(*nge) = (*ge);
+		nge->type = GE_CURVE;
+
+		a = ge->prev->fx3;
+		b = ge->fx1;
+		c = ge->fx2;
+		d = ge->fx3;
+		nge->fx3 = d;
+		nge->fx2 = (c + d) / 2.;
+		nge->fx1 = (b + 2. * c + d) / 4.;
+		ge->fx3 = (a + b * 3. + c * 3. + d) / 8.;
+		ge->fx2 = (a + 2. * b + c) / 4.;
+		ge->fx1 = (a + b) / 2.;
+
+		a = ge->prev->fy3;
+		b = ge->fy1;
+		c = ge->fy2;
+		d = ge->fy3;
+		nge->fy3 = d;
+		nge->fy2 = (c + d) / 2.;
+		nge->fy1 = (b + 2. * c + d) / 4.;
+		ge->fy3 = (a + b * 3. + c * 3. + d) / 8.;
+		ge->fy2 = (a + 2. * b + c) / 4.;
+		ge->fy1 = (a + b) / 2.;
+
+		addgeafter(ge, nge);
+
+		if(ISDBG(FCONCISE)) {
+			dumppaths(g, ge, nge);
+		}
+	}
+}
+
+/* free this GENTRY, returns what was ge->next
+ * (ge must be of type GE_LINE or GE_CURVE)
+ * works on both float and int entries
+ */
+
+static GENTRY *
+freethisge(
+	GENTRY *ge
+)
+{
+	GENTRY *xge;
+
+	if (ge->bkwd != ge->prev) {
+		/* at beginning of the contour */
+
+		xge = ge->bkwd;
+		if(xge == ge) { /* was the only line in contour */
+			/* remove the contour completely */
+			/* prev is GE_MOVE, next is GE_PATH, remove them all */
+
+			/* may be the first contour, then ->bkwd points to ge->entries */
+			if(ge->prev->prev == 0)
+				*(GENTRY **)(ge->prev->bkwd) = ge->next->next;
+			else
+				ge->prev->prev->next = ge->next->next;
+
+			if(ge->next->next) {
+				ge->next->next->prev = ge->prev->prev;
+				ge->next->next->bkwd = ge->prev->bkwd;
+			}
+
+			xge = ge->next->next;
+			free(ge->prev); free(ge->next); free(ge);
+			return xge;
+		}
+
+		/* move the start point of the contour */
+		if(ge->flags & GEF_FLOAT) {
+			ge->prev->fx3 = xge->fx3;
+			ge->prev->fy3 = xge->fy3;
+		} else {
+			ge->prev->ix3 = xge->ix3;
+			ge->prev->iy3 = xge->iy3;
+		}
+	} else if(ge->frwd != ge->next) {
+		/* at end of the contour */
+
+		xge = ge->frwd->prev;
+		/* move the start point of the contour */
+		if(ge->flags & GEF_FLOAT) {
+			xge->fx3 = ge->bkwd->fx3;
+			xge->fy3 = ge->bkwd->fy3;
+		} else {
+			xge->ix3 = ge->bkwd->ix3;
+			xge->iy3 = ge->bkwd->iy3;
+		}
+	}
+
+	ge->prev->next = ge->next;
+	ge->next->prev = ge->prev;
+	ge->bkwd->frwd = ge->frwd;
+	ge->frwd->bkwd = ge->bkwd;
+
+	xge = ge->next;
+	free(ge);
+	return xge;
+}
+
+/* inserts a new gentry (LINE or CURVE) after another (MOVE
+ * or LINE or CURVE)
+ * corrects the first GE_MOVE if neccessary
+ */
+
+static void
+addgeafter(
+	GENTRY *oge, /* after this */
+	GENTRY *nge /* insert this */
+)
+{
+	if(oge->type == GE_MOVE) {
+		/* insert before next */
+		if(oge->next->type == GE_PATH) {
+			/* first and only GENTRY in path */
+			nge->frwd = nge->bkwd = nge;
+		} else {
+			nge->frwd = oge->next;
+			nge->bkwd = oge->next->bkwd;
+			oge->next->bkwd->frwd = nge;
+			oge->next->bkwd = nge;
+		}
+	} else {
+		nge->frwd = oge->frwd;
+		nge->bkwd = oge;
+		oge->frwd->bkwd = nge;
+		oge->frwd = nge;
+	}
+
+	nge->next = oge->next;
+	nge->prev = oge;
+	oge->next->prev = nge;
+	oge->next = nge;
+
+	if(nge->frwd->prev->type == GE_MOVE) {
+		/* fix up the GE_MOVE entry */
+		if(nge->flags & GEF_FLOAT) {
+			nge->frwd->prev->fx3 = nge->fx3;
+			nge->frwd->prev->fy3 = nge->fy3;
+		} else {
+			nge->frwd->prev->ix3 = nge->ix3;
+			nge->frwd->prev->iy3 = nge->iy3;
+		}
+	}
+}
+
+/*
+ * Check if this GENTRY happens to be at the end of path
+ * and fix the first MOVETO accordingly
+ * handles both int and float
+ */
+
+static void
+fixendpath(
+	GENTRY *ge
+)
+{
+	GENTRY *mge;
+
+	mge = ge->frwd->prev;
+	if(mge->type == GE_MOVE) {
+		if(ge->flags & GEF_FLOAT) {
+			mge->fx3 = ge->fx3;
+			mge->fy3 = ge->fy3;
+		} else {
+			mge->ix3 = ge->ix3;
+			mge->iy3 = ge->iy3;
+		}
+	}
+}
+
+/*
+ * This function adjusts the rest of path (the part from...to is NOT changed)
+ * to cover the specified gap by the specified axis (0 - X, 1 - Y).
+ * Gap is counted in direction (end_of_to - beginning_of_from).
+ * Returns by how much the gap was not closed (0.0 if it was fully closed).
+ * Ret contains by how much the first and last points of [from...to]
+ * were moved to bring them in consistence to the rest of the path.
+ * If ret==NULL then this info is not returned.
+ */
+
+static double
+fclosegap(
+	GENTRY *from,
+	GENTRY *to,
+	int axis,
+	double gap,
+	double *ret
+)
+{
+#define TIMESLARGER 10.	/* how many times larger must be a curve to not change too much */
+	double rm[2];
+	double oldpos[2];
+	double times, limit, df, dx;
+	int j, k;
+	GENTRY *xge, *pge, *nge, *bge[2];
+
+	/* remember the old points to calculate ret */
+	oldpos[0] = from->prev->fpoints[axis][2];
+	oldpos[1] = to->fpoints[axis][2];
+
+	rm[0] = rm[1] = gap / 2. ;
+
+	bge[0] = from; /* this is convenient for iterations */
+	bge[1] = to;
+
+	/* first try to modify large curves but if have none then settle for small */
+	for(times = (TIMESLARGER-1); times > 0.1; times /= 2. ) {
+
+		if(rm[0]+rm[1] == 0.)
+			break;
+
+		/* iterate in both directions, backwards then forwards */
+		for(j = 0; j<2; j++) {
+
+			if(rm[j] == 0.) /* if this direction is exhausted */
+				continue;
+
+			limit = fabs(rm[j]) * (1.+times);
+
+			for(xge = bge[j]->cntr[j]; xge != bge[!j]; xge = xge->cntr[j]) {
+				dx = xge->fpoints[axis][2] - xge->prev->fpoints[axis][2];
+				df = fabs(dx) - limit;
+				if( df <= FEPS ) /* curve is too small to change */
+					continue;
+
+				if( df >= fabs(rm[j]) )
+					df = rm[j];
+				else 
+					df *= fsign(rm[j]); /* we may cover this part of rm */
+
+				rm[j] -= df;
+				limit = fabs(rm[j]) * (1.+times);
+
+				if(xge->type == GE_CURVE) { /* correct internal points */
+					double scale = ((dx+df) / dx) - 1.;
+					double base;
+
+					if(j)
+						base = xge->fpoints[axis][2];
+					else
+						base = xge->prev->fpoints[axis][2];
+
+					for(k = 0; k<2; k++)
+						xge->fpoints[axis][k] += scale * 
+							(xge->fpoints[axis][k] - base);
+				}
+
+				/* move all the intermediate lines */
+				if(j) {
+					df = -df; /* absolute direction */
+					pge = bge[1]->bkwd;
+					nge = xge->bkwd;
+				} else {
+					xge->fpoints[axis][2] += df;
+					pge = bge[0];
+					nge = xge->frwd;
+				}
+				while(nge != pge) {
+					if(nge->type == GE_CURVE) {
+						nge->fpoints[axis][0] +=df;
+						nge->fpoints[axis][1] +=df;
+					}
+					nge->fpoints[axis][2] += df;
+					if(nge->next != nge->frwd) { /* last entry of contour */
+						nge->frwd->prev->fpoints[axis][2] += df;
+					}
+					nge = nge->cntr[!j];
+				}
+
+				if(rm[j] == 0.)
+					break;
+			}
+		}
+	}
+
+	/* find the difference */
+	oldpos[0] -= from->prev->fpoints[axis][2];
+	oldpos[1] -= to->fpoints[axis][2];
+
+	if(ret) {
+		ret[0] = oldpos[0] - from->prev->fpoints[axis][2];
+		ret[1] = oldpos[1] - to->fpoints[axis][2];
+	}
+
+#if 0
+	if( rm[0]+rm[1] != gap - oldpos[1] + oldpos[0]) {
+		fprintf(stderr, "** gap=%g rm[0]=%g rm[1]=%g o[0]=%g o[1]=%g rg=%g og=%g\n",
+			gap, rm[0], rm[1], oldpos[0], oldpos[1], rm[0]+rm[1], 
+			gap - oldpos[1] + oldpos[0]);
+	}
+#endif
+
+	return rm[0]+rm[1];
+#undef TIMESLARGER
+}
+
+/* remove the lines or curves smaller or equal to the size limit */
+
+static void
+fdelsmall(
+	GLYPH *g,
+	double minlen
+)
+{
+	GENTRY  *ge, *nge, *pge, *xge, *next;
+	int i, k;
+	double dx, dy, d2, d2m;
+	double minlen2;
+#define TIMESLARGER 10.	/* how much larger must be a curve to not change too much */
+
+	minlen2 = minlen*minlen;
+
+	for (ge = g->entries; ge != 0; ge = next) {
+		next = ge->next;
+
+		if (ge->type != GE_CURVE && ge->type != GE_LINE)
+			continue;
+
+		d2m = 0;
+		for(i= (ge->type==GE_CURVE? 0: 2); i<3; i++) {
+			dx = ge->fxn[i] - ge->prev->fx3;
+			dy = ge->fyn[i] - ge->prev->fy3;
+			d2 = dx*dx + dy*dy;
+			if(d2m < d2)
+				d2m = d2;
+		}
+
+		if( d2m > minlen2 ) { /* line is not too small */
+			/* XXX add more normalization here */
+			continue;
+		}
+
+		/* if the line is too small */
+
+		/* check forwards if we have a whole sequence of them */
+		nge = ge;
+		for(xge = ge->frwd; xge != ge; xge = xge->frwd) {
+			d2m = 0;
+			for(i= (xge->type==GE_CURVE? 0: 2); i<3; i++) {
+				dx = xge->fxn[i] - xge->prev->fx3;
+				dy = xge->fyn[i] - xge->prev->fy3;
+				d2 = dx*dx + dy*dy;
+				if(d2m < d2)
+					d2m = d2;
+			}
+			if( d2m > minlen2 ) /* line is not too small */
+				break;
+			nge = xge;
+			if(next == nge) /* move the next step past this sequence */
+				next = next->next;
+		}
+
+		/* check backwards if we have a whole sequence of them */
+		pge = ge;
+		for(xge = ge->bkwd; xge != ge; xge = xge->bkwd) {
+			d2m = 0;
+			for(i= (xge->type==GE_CURVE? 0: 2); i<3; i++) {
+				dx = xge->fxn[i] - xge->prev->fx3;
+				dy = xge->fyn[i] - xge->prev->fy3;
+				d2 = dx*dx + dy*dy;
+				if(d2m < d2)
+					d2m = d2;
+			}
+			if( d2m > minlen2 ) /* line is not too small */
+				break;
+			pge = xge;
+		}
+
+		/* now we have a sequence of small fragments in pge...nge (inclusive) */
+
+		if(ISDBG(FCONCISE))  {
+			fprintf(stderr, "glyph %s has very small fragments(%x..%x..%x)\n", 
+			g->name, pge, ge, nge);
+			dumppaths(g, pge, nge);
+		}
+
+		/* reduce whole sequence to one part and remember the middle point */
+		if(pge != nge) {
+			while(1) {
+				xge = pge->frwd;
+				if(xge == nge) {
+					pge->fx1 = pge->fx2 = pge->fx3;
+					pge->fx3 = nge->fx3;
+					pge->fy1 = pge->fy2 = pge->fy3;
+					pge->fy3 = nge->fy3;
+					pge->type = GE_CURVE;
+					freethisge(nge);
+					break;
+				}
+				if(xge == nge->bkwd) {
+					pge->fx1 = pge->fx2 = (pge->fx3+xge->fx3)/2.;
+					pge->fx3 = nge->fx3;
+					pge->fy1 = pge->fy2 = (pge->fy3+xge->fy3)/2.;
+					pge->fy3 = nge->fy3;
+					pge->type = GE_CURVE;
+					freethisge(nge);
+					freethisge(xge);
+					break;
+				}
+				freethisge(pge); pge = xge;
+				xge = nge->bkwd; freethisge(nge); nge = xge;
+			}
+		}
+		ge = pge;
+
+		/* check if the whole sequence is small */
+		dx = ge->fx3 - ge->prev->fx3;
+		dy = ge->fy3 - ge->prev->fy3;
+		d2 = dx*dx + dy*dy;
+
+		if( d2 > minlen2 ) { /* no, it is not */
+			double b, d;
+
+			WARNING_3 fprintf(stderr, "glyph %s had a sequence of fragments < %g points each, reduced to one curve\n",
+				g->name, minlen);
+
+			/* check that we did not create a monstrosity spanning quadrants */
+			if(fsign(ge->fx1 - ge->prev->fx1) * fsign(ge->fx3 - ge->fx1) < 0
+			|| fsign(ge->fy1 - ge->prev->fy1) * fsign(ge->fy3 - ge->fy1) < 0 ) { 
+				/* yes, we did; are both parts of this thing big enough ? */
+				dx = ge->fx1 - ge->prev->fx3;
+				dy = ge->fy1 - ge->prev->fy3;
+				d2 = dx*dx + dy*dy;
+
+				dx = ge->fx3 - ge->fx1;
+				dy = ge->fy3 - ge->fy1;
+				d2m = dx*dx + dy*dy;
+
+				if(d2 > minlen2 && d2m > minlen2) { /* make two straights */
+					nge = newgentry(GEF_FLOAT);
+					*nge = *ge;
+					
+					for(i=0; i<2; i++) {
+						ge->fpoints[i][2] = ge->fpoints[i][0];
+						b = nge->fpoints[i][0];
+						d = nge->fpoints[i][2] - b;
+						nge->fpoints[i][0] = b + 0.1*d;
+						nge->fpoints[i][1] = b + 0.9*d;
+					}
+				}
+				for(i=0; i<2; i++) { /* make one straight or first of two straights */
+					b = ge->prev->fpoints[i][2];
+					d = ge->fpoints[i][2] - b;
+					ge->fpoints[i][0] = b + 0.1*d;
+					ge->fpoints[i][1] = b + 0.9*d;
+				}
+			}
+			continue; 
+		}
+
+		if(ge->frwd == ge) { /* points to itself, just remove the path completely */
+			WARNING_3 fprintf(stderr, "glyph %s had a path made of fragments < %g points each, removed\n",
+				g->name, minlen);
+
+			next = freethisge(ge);
+			continue;
+		} 
+
+		/* now close the gap by x and y */
+		for(i=0; i<2; i++) {
+			double gap;
+
+			gap = ge->fpoints[i][2] - ge->prev->fpoints[i][2];
+			if( fclosegap(ge, ge, i, gap, NULL) != 0.0 ) {
+				double scale, base;
+
+				/* not good, as the last resort just scale the next line */
+				gap = ge->fpoints[i][2] - ge->prev->fpoints[i][2];
+
+				if(ISDBG(FCONCISE)) 
+					fprintf(stderr, "    last resort on %c: closing next by %g\n",
+					(i==0 ? 'x' : 'y'), gap);
+
+				nge = ge->frwd;
+				base = nge->fpoints[i][2];
+				dx = ge->fpoints[i][2] - base;
+				if(fabs(dx) < FEPS)
+					continue;
+
+				scale = ((dx-gap) / dx);
+
+				if(nge->type == GE_CURVE)
+					for(k = 0; k<2; k++)
+						nge->fpoints[i][k] = base + 
+							scale * (nge->fpoints[i][k] - base);
+
+				ge->fpoints[i][2] -= gap;
+			}
+		}
+
+		/* OK, the gap is closed - remove this useless GENTRY */
+		freethisge(ge);
+	}
+#undef TIMESLARGER
+}
+
+/* find the point where two rays continuing vectors cross
+ * returns 1 if they cross, 0 if they don't
+ * If they cross optionally (if the pointers are not NULL) returns 
+ * the maximal scales for both vectors and also optionally the point 
+ * where the rays cross (twice).
+ * Expects that the curves are normalized.
+ *
+ * For convenience there are 2 front-end functions taking
+ * arguments in different formats
+ */
+
+struct ray {
+	double x1, y1, x2, y2;
+	int isvert;
+	double k, b; /* lines are represented as y = k*x + b */
+	double *maxp;
+};
+static struct ray ray[3];
+
+/* the back-end doing the actual work
+ * the rays are defined in the static array ray[]
+ */
+
+static int
+fcrossraysxx(
+	double crossdot[2][2]
+)
+{
+	double x, y, max;
+	int i;
+
+	for(i=0; i<2; i++) {
+		if(ray[i].x1 == ray[i].x2) 
+			ray[i].isvert = 1;
+		else {
+			ray[i].isvert = 0;
+			ray[i].k = (ray[i].y2 - ray[i].y1) / (ray[i].x2 - ray[i].x1);
+			ray[i].b = ray[i].y2 - ray[i].k * ray[i].x2;
+		}
+	}
+
+	if(ray[0].isvert && ray[1].isvert) {
+		if(ISDBG(FCONCISE)) fprintf(stderr, "crossrays: both vertical\n");
+		return 0; /* both vertical, don't cross */
+	}
+
+	if(ray[1].isvert) {
+		ray[2] = ray[0]; /* exchange them */
+		ray[0] = ray[1];
+		ray[1] = ray[2];
+	}
+
+	if(ray[0].isvert) {
+		x = ray[0].x1;
+	} else {
+		if( fabs(ray[0].k - ray[1].k) < FEPS) {
+			if(ISDBG(FCONCISE)) fprintf(stderr, "crossrays: parallel lines, k = %g, %g\n",
+				ray[0].k, ray[1].k);
+			return 0; /* parallel lines */
+		}
+		x = (ray[1].b - ray[0].b) / (ray[0].k - ray[1].k) ;
+	}
+	y = ray[1].k * x + ray[1].b;
+
+	for(i=0; i<2; i++) {
+		if(ray[i].isvert)
+			max = (y - ray[i].y1) / (ray[i].y2 - ray[i].y1);
+		else
+			max = (x - ray[i].x1) / (ray[i].x2 - ray[i].x1);
+		/* check if wrong sides of rays cross */
+		if( max < 0 ) {
+			if(ISDBG(FCONCISE)) fprintf(stderr, "crossrays: %c scale=%g @(%g,%g) (%g,%g)<-(%g,%g)\n",
+				(i?'Y':'X'), max, x, y, ray[i].x2, ray[i].y2, ray[i].x1, ray[i].y1);
+			return 0;
+		}
+		if(ray[i].maxp)
+			*ray[i].maxp = max;
+	}
+	if(crossdot != 0) {
+		crossdot[0][0] = crossdot[1][0] = x;
+		crossdot[0][1] = crossdot[1][1] = y;
+	}
+	return 1;
+}
+
+/* the front-end getting the arguments from 4 dots defining
+ * a curve in the same format as for fapproxcurve():
+ * rays are defined as beginning and end of the curve,
+ * the crossdot is inserted as the two middle dots of the curve
+ */
+
+int
+fcrossrayscv(
+	double curve[4][2 /*X,Y*/],
+	double *max1,
+	double *max2
+)
+{
+	ray[0].x1 = curve[0][X];
+	ray[0].y1 = curve[0][Y];
+	ray[0].x2 = curve[1][X];
+	ray[0].y2 = curve[1][Y];
+	ray[0].maxp = max1;
+
+	ray[1].x1 = curve[2][X];
+	ray[1].y1 = curve[2][Y];
+	ray[1].x2 = curve[3][X];
+	ray[1].y2 = curve[3][Y];
+	ray[1].maxp = max2;
+
+	return fcrossraysxx(&curve[1]);
+}
+
+/* the front-end getting the arguments from gentries:
+ * rays are defined as beginning of curve1 and end of curve 2
+ */
+
+int
+fcrossraysge(
+	GENTRY *ge1,
+	GENTRY *ge2,
+	double *max1,
+	double *max2,
+	double crossdot[2][2]
+)
+{
+	ray[0].x1 = ge1->prev->fx3;
+	ray[0].y1 = ge1->prev->fy3;
+	ray[0].x2 = ge1->fpoints[X][ge1->ftg];
+	ray[0].y2 = ge1->fpoints[Y][ge1->ftg];
+	ray[0].maxp = max1;
+
+	ray[1].x1 = ge2->fx3;
+	ray[1].y1 = ge2->fy3;
+	if(ge2->rtg < 0) {
+		ray[1].x2 = ge2->prev->fx3;
+		ray[1].y2 = ge2->prev->fy3;
+	} else {
+		ray[1].x2 = ge2->fpoints[X][ge2->rtg];
+		ray[1].y2 = ge2->fpoints[Y][ge2->rtg];
+	}
+	ray[1].maxp = max2;
+
+	return fcrossraysxx(crossdot);
+}
+
+/* debugging printout functions */
+
+#if defined(DEBUG_DOTSEG) || defined(DEBUG_DOTCURVE) || defined(DEBUG_APPROXCV)
+
+/* for debugging */
+static
+printdot(
+	double dot[2]
+)
+{
+	fprintf(stderr, "(%g,%g)", dot[0], dot[1]);
+}
+
+static
+printseg(
+	double seg[2][2]
+)
+{
+	putc('[', stderr);
+	printdot(seg[0]);
+	putc(' ', stderr);
+	printdot(seg[1]);
+	putc(']', stderr);
+}
+
+#endif /* DEBUG_* */
+
+/*
+ * Find squared distance from a dot to a line segment
+ */
+
+double
+fdotsegdist2(
+	double seg[2][2 /*X,Y*/],
+	double dot[2 /*X,Y*/]
+)
+{
+#define x1	seg[0][X]
+#define y1	seg[0][Y]
+#define x2	seg[1][X]
+#define y2	seg[1][Y]
+#define xdot	dot[X]
+#define ydot	dot[Y]
+
+	double dx, dy; /* segment dimensions */
+	double kline, bline; /* segment line formula is y=k*x+b */
+	double kperp, bperp; /* perpendicular from the dot to the line */
+	double xcross, ycross; /* where the perpendicular crosses the segment */
+
+/* handle the situation where the nearest point of the segment is its end */
+#define HANDLE_LIMITS(less12, lesscr1, lesscr2)	\
+	if( less12 ) { \
+		if( lesscr1 ) { \
+			xcross = x1; \
+			ycross = y1; \
+		} else if( !(lesscr2) ) { \
+			xcross = x2; \
+			ycross = y2; \
+		} \
+	} else { \
+		if( !(lesscr1) ) { \
+			xcross = x1; \
+			ycross = y1; \
+		} else if( lesscr2 ) { \
+			xcross = x2; \
+			ycross = y2; \
+		} \
+	} \
+	/* end of macro */
+
+
+	dx = x2 - x1;
+	dy = y2 - y1;
+
+	if(fabs(dx) < FEPS) {
+		/* special case - vertical line */
+#ifdef DEBUG_DOTSEG
+		printf("vertical line!\n");
+#endif
+		xcross = x1;
+		ycross = ydot;
+		HANDLE_LIMITS( y1 < y2, ycross < y1, ycross < y2);
+	} else if(fabs(dy) < FEPS) {
+		/* special case - horizontal line */
+#ifdef DEBUG_DOTSEG
+		printf("horizontal line!\n");
+#endif
+		xcross = xdot;
+		ycross = y1;
+		HANDLE_LIMITS( x1 < x2, xcross < x1, xcross < x2)
+	} else {
+		kline = dy/dx;
+		bline = y1 - x1*kline;
+		kperp = -1./kline;
+		bperp = ydot - xdot*kperp;
+
+		xcross = (bline-bperp) / (kperp-kline);
+		ycross = kline*xcross + bline;
+
+		HANDLE_LIMITS( x1 < x2, xcross < x1, xcross < x2)
+	}
+#ifdef DEBUG_DOTSEG
+	printf("crossover at (%g,%g)\n", xcross, ycross);
+#endif
+
+	dx = xdot-xcross;
+	dy = ydot-ycross;
+	return dx*dx+dy*dy;
+#undef x1
+#undef y1
+#undef x2
+#undef y2
+#undef xdot
+#undef ydot
+#undef HANDLE_LIMITS
+}
+
+/* find the weighted quadratic average for the distance of a set
+ * of dots from the curve; also fills out the individual distances
+ * for each dot; if maxp!=NULL then returns the maximal squared
+ * distance in there
+ */
+
+double
+fdotcurvdist2(
+	double curve[4][2 /*X,Y*/ ],
+	struct dot_dist *dots,
+	int ndots, /* number of entries in dots */
+	double *maxp
+)
+{
+	/* a curve is approximated by this many straight segments */
+#define NAPSECT	16
+	/* a curve is divided into this many sections with equal weight each */
+#define NWSECT	4
+	/* table of coefficients for finding the dots on the curve */
+	/* tt[0] is left unused */
+	static double tt[NAPSECT][4];
+	static int havett = 0; /* flag: tt is initialized */
+	/* dots on the curve */
+	double cvd[NAPSECT+1][2 /*X,Y*/];
+	/* sums by sections */
+	double sum[NWSECT];
+	/* counts by sections */
+	double count[NWSECT];
+	int d, i, j;
+	int id1, id2;
+	double dist1, dist2, dist3, dx, dy, x, y;
+	double max = 0.;
+
+	if(!havett) {
+		double t, nt, t2, nt2, step;
+
+		havett++;
+		step = 1. / NAPSECT;
+		t = 0;
+		for(i=1; i<NAPSECT; i++) {
+			t += step;
+			nt = 1 - t;
+			t2 = t*t;
+			nt2 = nt*nt;
+			tt[i][0] = nt2*nt; /* (1-t)^3 */
+			tt[i][1] = 3*nt2*t; /* 3*(1-t)^2*t */
+			tt[i][2] = 3*nt*t2; /* 3*(1-t)*t^2 */
+			tt[i][3] = t2*t; /* t^3 */
+		}
+	}
+
+	for(i=0; i<NWSECT; i++) {
+		sum[i] = 0.;
+		count[i] = 0;
+	}
+
+	/* split the curve into segments */
+	for(d=0; d<2; d++) { /* X and Y */
+		cvd[0][d] = curve[0][d]; /* endpoints */
+		cvd[NAPSECT][d] = curve[3][d];
+		for(i=1; i<NAPSECT; i++) {
+			cvd[i][d] = curve[0][d] * tt[i][0]
+				+ curve[1][d] * tt[i][1]
+				+ curve[2][d] * tt[i][2]
+				+ curve[3][d] * tt[i][3];
+		}
+	}
+
+	for(d=0; d<ndots; d++) {
+#ifdef DEBUG_DOTCURVE
+		printf("dot %d ", d); printdot(dots[d].p); printf(":\n");
+
+		/* for debugging */
+		for(i=0; i< NAPSECT; i++) {
+			dist1 = fdotsegdist2(&cvd[i], dots[d].p);
+			printf("  seg %d ",i); printseg(&cvd[i]); printf(" dist=%g\n", sqrt(dist1));
+		}
+#endif
+
+		x = dots[d].p[X];
+		y = dots[d].p[Y];
+
+		/* find the nearest dot on the curve
+		 * there may be up to 2 local minimums - so we start from the
+		 * ends of curve and go to the center
+		 */
+
+		id1 = 0;
+		dx = x - cvd[0][X];
+		dy = y - cvd[0][Y];
+		dist1 = dx*dx + dy*dy;
+#ifdef DEBUG_DOTCURVE
+		printf("  dot 0 "); printdot(cvd[id1]); printf(" dist=%g\n", sqrt(dist1));
+#endif
+		for(i = 1; i<=NAPSECT; i++) {
+			dx = x - cvd[i][X];
+			dy = y - cvd[i][Y];
+			dist3 = dx*dx + dy*dy;
+#ifdef DEBUG_DOTCURVE
+			printf("  dot %d ",i); printdot(cvd[i]); printf(" dist=%g\n", sqrt(dist3));
+#endif
+			if(dist3 < dist1) {
+				dist1 = dist3;
+				id1 = i;
+			} else
+				break;
+		}
+
+		if(id1 < NAPSECT-1) {
+			id2 = NAPSECT;
+			dx = x - cvd[NAPSECT][X];
+			dy = y - cvd[NAPSECT][Y];
+			dist2 = dx*dx + dy*dy;
+#ifdef DEBUG_DOTCURVE
+			printf("  +dot %d ", id2); printdot(cvd[id2]); printf(" dist=%g\n", sqrt(dist2));
+#endif
+			for(i = NAPSECT-1; i>id1+1; i--) {
+				dx = x - cvd[i][X];
+				dy = y - cvd[i][Y];
+				dist3 = dx*dx + dy*dy;
+#ifdef DEBUG_DOTCURVE
+				printf("  dot %d ",i); printdot(cvd[i]); printf(" dist=%g\n", sqrt(dist3));
+#endif
+				if(dist3 < dist2) {
+					dist2 = dist3;
+					id2 = i;
+				} else
+					break;
+			}
+
+			/* now find which of the local minimums is smaller */
+			if(dist2 < dist1) {
+				id1 = id2;
+			}
+		}
+
+		/* the nearest segment must include the nearest dot */
+		if(id1==0) {
+			dots[d].seg = 0;
+			dots[d].dist2 = fdotsegdist2(&cvd[0], dots[d].p);
+		} else if(id1==NAPSECT) {
+			dots[d].seg = NAPSECT-1;
+			dots[d].dist2 = fdotsegdist2(&cvd[NAPSECT-1], dots[d].p);
+		} else {
+			dist1 = fdotsegdist2(&cvd[id1], dots[d].p);
+			dist2 = fdotsegdist2(&cvd[id1-1], dots[d].p);
+			if(dist2 < dist1) {
+				dots[d].seg = id1-1;
+				dots[d].dist2 = dist2;
+			} else {
+				dots[d].seg = id1;
+				dots[d].dist2 = dist1;
+			}
+		}
+
+		i = dots[d].seg % NWSECT;
+		sum[i] += dots[d].dist2;
+		if(dots[d].dist2 > max)
+			max = dots[d].dist2;
+		count[i]++;
+#ifdef DEBUG_DOTCURVE
+		printf(" best seg %d sect %d dist=%g\n", dots[d].seg, i, sqrt(dots[d].dist2));
+#endif
+	}
+
+	/* calculate the weighted average */
+	id1=0;
+	dist1=0.;
+	for(i=0; i<NWSECT; i++) {
+		if(count[i]==0)
+			continue;
+		id1++;
+		dist1 += sum[i]/count[i];
+	}
+	if(maxp)
+		*maxp = max;
+	if(id1==0) /* no dots, strange */
+		return 0.;
+	else 
+		return dist1/id1; /* to get the average distance apply sqrt() */
+}
+	
+/*
+ * Approximate a curve matching the giving set of points and with
+ * middle reference points going along the given segments (and no farther
+ * than these segments).
+ */
+
+void
+fapproxcurve(
+	double cv[4][2 /*X,Y*/ ], /* points 0-3 are passed in, points 1,2 - out */
+	struct dot_dist *dots, /* the dots to approximate - distances returned 
+		* there may be invalid */
+	int ndots
+)
+{
+	/* b and c are the middle control points */
+#define	B	0
+#define	C	1
+	/* maximal number of sections on each axis - used for the first step */
+#define MAXSECT	2
+	/* number of sections used for the other steps */
+#define NORMSECT 2
+	/* when the steps become less than this many points, it's time to stop */
+#define STEPEPS	1.
+	double from[2 /*B,C*/], to[2 /*B,C*/];
+	double middf[2 /*B,C*/][2 /*X,Y*/], df;
+	double coef[2 /*B,C*/][MAXSECT]; 
+	double res[MAXSECT][MAXSECT], thisres, bestres, goodres;
+	int ncoef[2 /*B,C*/], best[2 /*B,C*/], good[2 /*B,C*/];
+	int i, j, k, keepsym;
+	char bc[]="BC";
+	char xy[]="XY";
+
+#ifdef DEBUG_APPROXCV
+	fprintf(stderr, "Curve points:");
+	for(i=0; i<4; i++) {
+		fprintf(stderr, " ");
+		printdot(cv[i]); 
+	}
+	fprintf(stderr, "\nDots:");
+	for(i=0; i<ndots; i++) {
+		fprintf(stderr, " ");
+		printdot(dots[i].p); 
+	}
+	fprintf(stderr, "\n");
+#endif
+
+	/* load the endpoints and calculate differences */
+	for(i=0; i<2; i++) {
+		/* i is X, Y */
+		middf[B][i] = cv[1][i]-cv[0][i];
+		middf[C][i] = cv[2][i]-cv[3][i];
+
+		/* i is B, C */
+		from[i] = 0.;
+		to[i] = 1.;
+		ncoef[i] = MAXSECT;
+	}
+
+	while(ncoef[B] != 1 || ncoef[C] != 1) {
+		/* prepare the values of coefficients */
+		for(i=0; i<2; i++) { /*B,C*/
+#ifdef DEBUG_APPROXCV
+			fprintf(stderr, "Coefficients by %c(%g,%g):", bc[i], from[i], to[i]);
+#endif
+			df = (to[i]-from[i]) / (ncoef[i]*2);
+			for(j=0; j<ncoef[i]; j++) {
+				coef[i][j] = from[i] + df*(2*j+1);
+#ifdef DEBUG_APPROXCV
+				fprintf(stderr, " %g", coef[i][j]);
+#endif
+			}
+#ifdef DEBUG_APPROXCV
+			fprintf(stderr, "\n");
+#endif
+		}
+		bestres = FBIGVAL;
+		best[B] = best[C] = 0;
+		/* i iterates by ncoef[B], j iterates by ncoef[C] */
+		for(i=0; i<ncoef[B]; i++) {
+			for(j=0; j<ncoef[C]; j++) {
+				for(k=0; k<2; k++) { /*X, Y*/
+					cv[1][k] = cv[0][k] + middf[B][k]*coef[B][i];
+					cv[2][k] = cv[3][k] + middf[C][k]*coef[C][j];
+				}
+				res[i][j] = thisres = fdotcurvdist2(cv, dots, ndots, NULL);
+				if(thisres < bestres) {
+					goodres = bestres;
+					good[B] = best[B];
+					good[C] = best[C];
+					bestres = thisres;
+					best[B] = i;
+					best[C] = j;
+				} else if(thisres < goodres) {
+					goodres = thisres;
+					good[B] = i;
+					good[C] = j;
+				}
+#ifdef DEBUG_APPROXCV
+				fprintf(stderr, " at (%g,%g) dist=%g %s\n", coef[B][i], coef[C][j], sqrt(thisres),
+					(best[B]==i && best[C]==j)? "(BEST)":"");
+#endif
+			}
+		}
+#ifdef DEBUG_APPROXCV
+		fprintf(stderr, " best: at (%g, %g) dist=%g\n",
+			coef[B][best[B]], coef[C][best[C]], sqrt(bestres));
+		fprintf(stderr, " B:%d,%d C:%d,%d -- 2nd best: at (%g, %g) dist=%g\n",
+			best[B], good[B], best[C], good[C], coef[B][good[B]], coef[C][good[C]], sqrt(goodres));
+#endif
+
+		if(bestres < (0.1*0.1)) { /* consider it close enough */
+			/* calculate the coordinates to return */
+			for(k=0; k<2; k++) { /*X, Y*/
+				cv[1][k] = cv[0][k] + middf[B][k]*coef[B][best[B]];
+				cv[2][k] = cv[3][k] + middf[C][k]*coef[C][best[C]];
+			}
+#ifdef DEBUG_APPROXCV
+			fprintf(stderr, "quick approximated middle points "); printdot(cv[1]); 
+			fprintf(stderr, " "); printdot(cv[2]); fprintf(stderr, "\n");
+#endif
+			return;
+		}
+		keepsym = 0;
+		if(best[B] != best[C] && best[B]-best[C] == good[C]-good[B]) {
+			keepsym = 1;
+#ifdef DEBUG_APPROXCV
+			fprintf(stderr, "keeping symmetry!\n");
+#endif
+		}
+		for(i=0; i<2; i++) { /*B,C*/
+			if(ncoef[i]==1)
+				continue;
+			if(keepsym) {
+				/* try to keep the symmetry */
+				if(best[i] < good[i]) {
+					from[i] = coef[i][best[i]];
+					to[i] = coef[i][good[i]];
+				} else {
+					from[i] = coef[i][good[i]];
+					to[i] = coef[i][best[i]];
+				}
+			} else {
+				df = (to[i]-from[i]) / ncoef[i];
+				from[i] += df*best[i];
+				to[i] = from[i] + df;
+			}
+			if( fabs(df*middf[i][0]) < STEPEPS && fabs(df*middf[i][1]) < STEPEPS) {
+				/* this side has converged */
+				from[i] = to[i] = (from[i]+to[i]) / 2.;
+				ncoef[i] = 1;
+			} else 
+				ncoef[i] = NORMSECT;
+		}
+
+	}
+	/* calculate the coordinates to return */
+	for(k=0; k<2; k++) { /*X, Y*/
+		cv[1][k] = cv[0][k] + middf[B][k]*from[B];
+		cv[2][k] = cv[3][k] + middf[C][k]*from[C];
+	}
+#ifdef DEBUG_APPROXCV
+	fprintf(stderr, "approximated middle points "); printdot(cv[1]); 
+	fprintf(stderr, " "); printdot(cv[2]); fprintf(stderr, "\n");
+#endif
+#undef B
+#undef C
+#undef MAXSECT
+#undef NORMSECT
+#undef STEPEPS
+}
+
+/*
+ * Find the squared value of the sinus of the angle between the
+ * end of ge1 and the beginning of ge2
+ * The curve must be normalized.
+ */
+
+static double
+fjointsin2(
+	GENTRY *ge1,
+	GENTRY *ge2
+)
+{
+	double d[3][2 /*X,Y*/];
+	double scale1, scale2, len1, len2;
+	int axis;
+	
+	if(ge1->rtg < 0) {
+		d[1][X] = ge1->fx3 - ge1->prev->fx3;
+		d[1][Y] = ge1->fy3 - ge1->prev->fy3;
+	} else {
+		d[1][X] = ge1->fx3 - ge1->fpoints[X][ge1->rtg];
+		d[1][Y] = ge1->fy3 - ge1->fpoints[Y][ge1->rtg];
+	}
+	d[2][X] = ge2->fpoints[X][ge2->ftg] - ge2->prev->fx3;
+	d[2][Y] = ge2->fpoints[Y][ge2->ftg] - ge2->prev->fy3;
+
+	len1 = sqrt( d[1][X]*d[1][X] + d[1][Y]*d[1][Y] );
+	len2 = sqrt( d[2][X]*d[2][X] + d[2][Y]*d[2][Y] );
+	/* scale the 2nd segment to the length of 1
+	 * and to make sure that the 1st segment is longer scale it to
+	 * the length of 2 and extend to the same distance backwards
+	 */
+	scale1 = 2./len1;
+	scale2 = 1./len2;
+
+	for(axis=0; axis <2; axis++) {
+		d[0][axis] = -( d[1][axis] *= scale1 );
+		d[2][axis] *= scale2;
+	}
+	return fdotsegdist2(d, d[2]);
+}
+
+#if 0
+/* find the area covered by the curve
+ * (limited by the projections to the X axis)
+ */
+
+static double
+fcvarea(
+	GENTRY *ge
+)
+{
+	double Ly, My, Ny, Py, Qx, Rx, Sx;
+	double area;
+
+	/* y = Ly*t^3 + My*t^2 + Ny*t + Py */
+	Ly = -ge->prev->fy3 + 3*(ge->fy1 - ge->fy2) + ge->fy3;
+	My = 3*ge->prev->fy3 - 6*ge->fy1 + 3*ge->fy2;
+	Ny = 3*(-ge->prev->fy3 + ge->fy1);
+	Py = ge->prev->fy3;
+
+	/* dx/dt = Qx*t^2 + Rx*t + Sx */
+	Qx = 3*(-ge->prev->fx3 + 3*(ge->fx1 - ge->fx2) + ge->fx3);
+	Rx = 6*(ge->prev->fx3 - 2*ge->fx1 + ge->fx2);
+	Sx = 3*(-ge->prev->fx3 + ge->fx1);
+
+	/* area is integral[from 0 to 1]( y(t) * dx(t)/dt *dt) */
+	area = 1./6.*(Ly*Qx) + 1./5.*(Ly*Rx + My*Qx) 
+		+ 1./4.*(Ly*Sx + My*Rx + Ny*Qx) + 1./3.*(My*Sx + Ny*Rx + Py*Qx)
+		+ 1./2.*(Ny*Sx + Py*Rx) + Py*Sx;
+
+	return area;
+}
+#endif
+
+/* find the value of point on the curve at the given parameter t,
+ * along the given axis (0 - X, 1 - Y).
+ */
+
+static double
+fcvval(
+	GENTRY *ge,
+	int axis,
+	double t
+)
+{
+	double t2, mt, mt2;
+
+	/* val = A*(1-t)^3 + 3*B*(1-t)^2*t + 3*C*(1-t)*t^2 + D*t^3 */
+	t2 = t*t;
+	mt = 1-t;
+	mt2 = mt*mt;
+	
+	return ge->prev->fpoints[axis][2]*mt2*mt 
+		+ 3*(ge->fpoints[axis][0]*mt2*t + ge->fpoints[axis][1]*mt*t2)
+		+ ge->fpoints[axis][2]*t*t2;
+}
+
+/*
+ * Find ndots equally spaced dots on a curve or line and fill 
+ * their coordinates into the dots array
+ */
+
+static void
+fsampledots(
+	GENTRY *ge, 
+	double dots[][2], /* the dots to fill */
+	int ndots
+)
+{
+	int i, axis;
+	double t, nf, dx, d[2];
+
+	nf = ndots+1;
+	if(ge->type == GE_CURVE) {
+		for(i=0; i<ndots; i++) {
+			t = (i+1)/nf;
+			for(axis=0; axis<2; axis++)
+				dots[i][axis] = fcvval(ge, axis, t);
+		}
+	} else { /* line */
+		d[0] = ge->fx3 - ge->prev->fx3;
+		d[1] = ge->fy3 - ge->prev->fy3;
+		for(i=0; i<ndots; i++) {
+			t = (i+1)/nf;
+			for(axis=0; axis<2; axis++)
+				dots[i][axis] = ge->prev->fpoints[axis][2] 
+					+ t*d[axis];
+		}
+	}
+}
+
+/*
+ * Allocate a structure gex_con
+ */
+
+static void
+alloc_gex_con(
+	GENTRY *ge
+)
+{
+	ge->ext = (void*)calloc(1, sizeof(GEX_CON));
+	if(ge->ext == 0) {
+		fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+		exit(255);
+	}
+}
+
+/*
+ * Normalize a gentry for fforceconcise() : find the points that
+ * can be used to calculate the tangents.
+ */
+
+static void
+fnormalizege(
+	GENTRY *ge
+)
+{
+	int midsame, frontsame, rearsame;
+
+	if(ge->type == GE_LINE) {
+		ge->ftg = 2;
+		ge->rtg = -1;
+	} else { /* assume it's a curve */
+		midsame = (fabs(ge->fx1-ge->fx2)<FEPS && fabs(ge->fy1-ge->fy2)<FEPS);
+		frontsame = (fabs(ge->fx1-ge->prev->fx3)<FEPS && fabs(ge->fy1-ge->prev->fy3)<FEPS);
+		rearsame = (fabs(ge->fx3-ge->fx2)<FEPS && fabs(ge->fy3-ge->fy2)<FEPS);
+
+		if(midsame && (frontsame || rearsame) ) {
+			/* essentially a line */
+			ge->ftg = 2;
+			ge->rtg = -1;
+		} else { 
+			if(frontsame) {
+				ge->ftg = 1;
+			} else {
+				ge->ftg = 0;
+			}
+			if(rearsame) {
+				ge->rtg = 0;
+			} else {
+				ge->rtg = 1;
+			}
+		}
+	}
+}
+
+/* various definition for the processing of outlines */
+
+/* maximal average quadratic distance from the original curve
+ * (in dots) to consider the joined curve good
+ */
+#define CVEPS	1.5
+#define CVEPS2	(CVEPS*CVEPS)
+/* squared sinus of the maximal angle that we consider a smooth joint */
+#define SMOOTHSIN2 0.25 /* 0.25==sin(30 degrees)^2 */
+/* squared line length that we consider small */
+#define SMALL_LINE2 (15.*15.)
+/* how many times a curve must be bigger than a line to join, squared */
+#define TIMES_LINE2 (3.*3.)
+
+/*
+ * Normalize and analyse a gentry for fforceconcise() and fill out the gex_con
+ * structure
+ */
+
+static void
+fanalyzege(
+	GENTRY *ge
+)
+{
+	int i, ix, iy;
+	double avsd2, dots[3][2 /*X,Y*/];
+	GEX_CON *gex;
+
+	gex = X_CON(ge);
+	memset(gex, 0, sizeof *gex);
+
+	gex->len2 = 0;
+	for(i=0; i<2; i++) {
+		avsd2 = gex->d[i] = ge->fpoints[i][2] - ge->prev->fpoints[i][2];
+		gex->len2 += avsd2*avsd2;
+	}
+	gex->sin2 = fjointsin2(ge, ge->frwd);
+	if(ge->type == GE_CURVE) {
+		ge->dir = fgetcvdir(ge);
+		for(i=0; i<2; i++) {
+			dots[0][i] = ge->prev->fpoints[i][2];
+			dots[1][i] = ge->fpoints[i][2];
+			dots[2][i] = fcvval(ge, i, 0.5);
+		}
+		avsd2 = fdotsegdist2(dots, dots[2]);
+		if(avsd2 <= CVEPS2) {
+			gex->flags |= GEXF_FLAT;
+		}
+	} else {
+		ge->dir = CVDIR_FEQUAL|CVDIR_REQUAL;
+		gex->flags |= GEXF_FLAT;
+	}
+	if(gex->flags & GEXF_FLAT) {
+		if( fabs(gex->d[X]) > FEPS && fabs(gex->d[Y]) < 5.
+		&& fabs(gex->d[Y] / gex->d[X]) < 0.2)
+			gex->flags |= GEXF_HOR;
+		else if( fabs(gex->d[Y]) > FEPS && fabs(gex->d[X]) < 5.
+		&& fabs(gex->d[X] / gex->d[Y]) < 0.2)
+			gex->flags |= GEXF_VERT;
+	}
+	ix = gex->isd[X] = fsign(gex->d[X]);
+	iy = gex->isd[Y] = fsign(gex->d[Y]);
+	if(ix <= 0) {
+		if(iy <= 0) 
+			gex->flags |= GEXF_QDL;
+		if(iy >= 0) 
+			gex->flags |= GEXF_QUL;
+		if(gex->flags & GEXF_HOR)
+			gex->flags |= GEXF_IDQ_L;
+	}
+	if(ix >= 0) {
+		if(iy <= 0) 
+			gex->flags |= GEXF_QDR;
+		if(iy >= 0) 
+			gex->flags |= GEXF_QUR;
+		if(gex->flags & GEXF_HOR)
+			gex->flags |= GEXF_IDQ_R;
+	}
+	if(gex->flags & GEXF_VERT) {
+		if(iy <= 0) {
+			gex->flags |= GEXF_IDQ_U;
+		} else { /* supposedly there is no 0-sized entry */
+			gex->flags |= GEXF_IDQ_D;
+		}
+	}
+}
+
+/*
+ * Analyse a joint between this and following gentry for fforceconcise() 
+ * and fill out the corresponding parts of the gex_con structure
+ * Bothe entries must be analyzed first.
+ */
+
+static void
+fanalyzejoint(
+	GENTRY *ge
+)
+{
+	GENTRY *nge = ge->frwd;
+	GENTRY tge;
+	GEX_CON *gex, *ngex;
+	double avsd2, dots[3][2 /*X,Y*/];
+	int i;
+
+	gex = X_CON(ge); ngex = X_CON(nge);
+
+	/* look if they can be joined honestly */
+
+	/* if any is flat, they should join smoothly */
+	if( (gex->flags & GEXF_FLAT || ngex->flags & GEXF_FLAT)
+	&& gex->sin2 > SMOOTHSIN2)
+		goto try_flatboth;
+
+	if(ge->type == GE_LINE) {
+		if(nge->type == GE_LINE) {
+			if(gex->len2 > SMALL_LINE2 || ngex->len2 > SMALL_LINE2)
+				goto try_flatboth;
+		} else {
+			if(gex->len2*TIMES_LINE2 > ngex->len2)
+				goto try_flatboth;
+		}
+	} else if(nge->type == GE_LINE) {
+		if(ngex->len2*TIMES_LINE2 > gex->len2)
+			goto try_flatboth;
+	}
+
+	/* if curve changes direction */
+	if( gex->isd[X]*ngex->isd[X]<0 || gex->isd[Y]*ngex->isd[Y]<0)
+		goto try_idealone;
+
+	/* if would create a zigzag */
+	if( ((ge->dir&CVDIR_FRONT)-CVDIR_FEQUAL) * ((nge->dir&CVDIR_REAR)-CVDIR_REQUAL) < 0 )
+		goto try_flatone;
+
+	if( fcrossraysge(ge, nge, NULL, NULL, NULL) )
+		gex->flags |= GEXF_JGOOD;
+
+try_flatone:
+	/* look if they can be joined by flatting out one of the entries */
+
+	/* at this point we know that the general direction of the
+	 * gentries is OK
+	 */
+
+	if( gex->flags & GEXF_FLAT ) {
+		tge = *ge;
+		tge.fx1 = tge.fx3;
+		tge.fy1 = tge.fy3;
+		fnormalizege(&tge);
+		if( fcrossraysge(&tge, nge, NULL, NULL, NULL) )
+			gex->flags |= GEXF_JFLAT|GEXF_JFLAT1;
+	}
+	if( ngex->flags & GEXF_FLAT ) {
+		tge = *nge;
+		tge.fx2 = ge->fx3;
+		tge.fy2 = ge->fy3;
+		fnormalizege(&tge);
+		if( fcrossraysge(ge, &tge, NULL, NULL, NULL) )
+			gex->flags |= GEXF_JFLAT|GEXF_JFLAT2;
+	}
+
+try_idealone:
+	/* look if one of the entries can be brought to an idealized
+	 * horizontal or vertical position and then joined
+	 */
+	if( gex->flags & GEXF_HOR && gex->isd[X]*ngex->isd[X]>=0 ) {
+		tge = *ge;
+		tge.fx1 = tge.fx3;
+		tge.fy1 = ge->prev->fy3; /* force horizontal */
+		fnormalizege(&tge);
+		if( fcrossraysge(&tge, nge, NULL, NULL, NULL) )
+			gex->flags |= GEXF_JID|GEXF_JID1;
+	} else if( gex->flags & GEXF_VERT && gex->isd[Y]*ngex->isd[Y]>=0 ) {
+		tge = *ge;
+		tge.fx1 = ge->prev->fx3; /* force vertical */
+		tge.fy1 = tge.fy3;
+		fnormalizege(&tge);
+		if( fcrossraysge(&tge, nge, NULL, NULL, NULL) )
+			gex->flags |= GEXF_JID|GEXF_JID1;
+	}
+	if( ngex->flags & GEXF_HOR && gex->isd[X]*ngex->isd[X]>=0 ) {
+		tge = *nge;
+		tge.fx2 = ge->fx3;
+		tge.fy2 = nge->fy3; /* force horizontal */
+		fnormalizege(&tge);
+		if( fcrossraysge(ge, &tge, NULL, NULL, NULL) )
+			gex->flags |= GEXF_JID|GEXF_JID2;
+	} else if( ngex->flags & GEXF_VERT && gex->isd[Y]*ngex->isd[Y]>=0 ) {
+		tge = *nge;
+		tge.fx2 = nge->fx3; /* force vertical */
+		tge.fy2 = ge->fy3;
+		fnormalizege(&tge);
+		if( fcrossraysge(ge, &tge, NULL, NULL, NULL) )
+			gex->flags |= GEXF_JID|GEXF_JID2;
+	}
+
+try_flatboth:
+	/* look if we can change them to one line */
+	if(gex->flags & GEXF_FLAT && ngex->flags & GEXF_FLAT) {
+		for(i=0; i<2; i++) {
+			dots[0][i] = ge->prev->fpoints[i][2];
+			dots[1][i] = nge->fpoints[i][2];
+			dots[2][i] = ge->fpoints[i][2];
+		}
+		if( fdotsegdist2(dots, dots[2]) <= CVEPS2)
+			gex->flags |= GEXF_JLINE;
+	}
+}
+
+/*
+ * Force conciseness of one contour in the glyph,
+ * the contour is indicated by one entry from it.
+ */
+
+static void
+fconcisecontour(
+	GLYPH *g,
+	GENTRY *startge
+)
+{
+/* initial maximal number of dots to be used as reference */
+#define MAXDOTS	((NREFDOTS+1)*12)
+
+	GENTRY *ge, *pge, *nge, *ige;
+	GEX_CON *gex, *pgex, *ngex, *nngex;
+	GENTRY tpge, tnge;
+	int quad, qq, i, j, ndots, maxdots;
+	int found[2];
+	int joinmask, pflag, nflag;
+	struct dot_dist *dots;
+	double avsd2, maxd2, eps2;
+	double apcv[4][2];
+
+	if(startge == 0) {
+		fprintf(stderr, "WARNING: assertion in %s line %d, please report it to the ttf2pt1 project\n",
+			__FILE__, __LINE__);
+		fprintf(stderr, "Strange contour in glyph %s\n", g->name);
+		dumppaths(g, NULL, NULL);
+		return;
+	}
+
+	if(startge->type != GE_CURVE && startge->type != GE_LINE)
+		return; /* probably a degenerate contour */
+
+	if(ISDBG(FCONCISE))
+		fprintf(stderr, "processing contour 0x%p of glyph %s\n", startge, g->name);
+
+	maxdots = MAXDOTS;
+	dots = (struct dot_dist *)malloc(sizeof(*dots)*maxdots);
+	if(dots == NULL) {
+		fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+		exit(255);
+	}
+
+	ge = startge;
+	joinmask = GEXF_JGOOD;
+	while(1) {
+	restart:
+		gex = X_CON(ge);
+		if((gex->flags & GEXF_JMASK) > ((joinmask<<1)-1)) {
+			if(ISDBG(FCONCISE))
+				fprintf(stderr, "found higher flag (%x>%x) at 0x%p\n", 
+					gex->flags & GEXF_JMASK, ((joinmask<<1)-1), ge);
+			joinmask <<= 1;
+			startge = ge; /* have to redo the pass */
+			continue;
+		}
+		if(( gex->flags & joinmask )==0)
+			goto next;
+
+		/* if we happen to be in the middle of a string of
+		 * joinable entries, find its beginning
+		 */
+		if( gex->flags & (GEXF_JCVMASK^GEXF_JID) )
+			quad = gex->flags & X_CON_F(ge->frwd) & GEXF_QMASK;
+		else if( gex->flags & GEXF_JID2 )
+			quad = gex->flags & GEXF_QFROM_IDEAL(X_CON_F(ge->frwd)) & GEXF_QMASK;
+		else /* must be GEXF_JID1 */
+			quad = GEXF_QFROM_IDEAL(gex->flags) & X_CON_F(ge->frwd) & GEXF_QMASK;
+
+		pge = ge;
+		pgex = X_CON(pge->bkwd);
+
+		if(ISDBG(FCONCISE))
+			fprintf(stderr, "ge %p prev -> 0x%p ", ge, pge);
+
+		while(pgex->flags & GEXF_JCVMASK) {
+			if( !(pgex->flags & ((GEXF_JCVMASK^GEXF_JID)|GEXF_JID2)) )
+				qq = GEXF_QFROM_IDEAL(pgex->flags);
+			else 
+				qq = pgex->flags & GEXF_QMASK;
+
+			if(ISDBG(FCONCISE))
+				fprintf(stderr, "(%x?%x)", quad, qq);
+
+			if( !(quad & qq) ) {
+				if( !(X_CON_F(pge) & (GEXF_JCVMASK^GEXF_JID))
+				&& pgex->flags & (GEXF_JCVMASK^GEXF_JID) ) {
+					/* the previos entry is definitely a better match */
+					if(pge == ge) {
+						if(ISDBG(FCONCISE))
+							fprintf(stderr, "\nprev is a better match at %p\n", pge);
+						startge = ge;
+						goto next;
+					} else
+						pge = pge->frwd;
+				}
+				break;
+			}
+
+			quad &= qq;
+			pge = pge->bkwd;
+			pgex = X_CON(pge->bkwd);
+			if(ISDBG(FCONCISE))
+				fprintf(stderr, "0x%p ", pge);
+		}
+
+		/* collect as many entries for joining as possible */
+		nge = ge->frwd;
+		ngex = X_CON(nge); 
+		nngex = X_CON(nge->frwd); 
+
+		if(ISDBG(FCONCISE))
+			fprintf(stderr, ": 0x%x\nnext -> 0x%p ", pge, nge);
+
+		while(ngex->flags & GEXF_JCVMASK) {
+			if( !(ngex->flags & ((GEXF_JCVMASK^GEXF_JID)|GEXF_JID1)) )
+				qq = GEXF_QFROM_IDEAL(nngex->flags);
+			else 
+				qq = nngex->flags & GEXF_QMASK;
+
+			if(ISDBG(FCONCISE))
+				fprintf(stderr, "(%x?%x)", quad, qq);
+			if( !(quad & qq) ) {
+				if( !(X_CON_F(nge->bkwd) & (GEXF_JCVMASK^GEXF_JID))
+				&& ngex->flags & (GEXF_JCVMASK^GEXF_JID) ) {
+					/* the next-next entry is definitely a better match */
+					if(nge == ge->frwd) {
+						if(ISDBG(FCONCISE))
+							fprintf(stderr, "\nnext %x is a better match than %x at %p (jmask %x)\n", 
+								ngex->flags & GEXF_JCVMASK, gex->flags & GEXF_JCVMASK, nge, joinmask);
+						goto next;
+					} else
+						nge = nge->bkwd;
+				}
+				break;
+			}
+
+			quad &= qq;
+			nge = nge->frwd;
+			ngex = nngex; 
+			nngex = X_CON(nge->frwd);
+			if(ISDBG(FCONCISE))
+				fprintf(stderr, "0x%p ", nge);
+		}
+
+		if(ISDBG(FCONCISE))
+			fprintf(stderr, ": 0x%x\n", nge);
+
+		/* XXX add splitting of last entries if neccessary */
+
+		/* make sure that all the reference dots are valid */
+		for(ige = pge; ige != nge->frwd; ige = ige->frwd) {
+			nngex = X_CON(ige);
+			if( !(nngex->flags & GEXF_VDOTS) ) {
+				fsampledots(ige, nngex->dots, NREFDOTS);
+				nngex->flags |= GEXF_VDOTS;
+			}
+		}
+
+		/* do the actual joining */
+		while(1) {
+			pgex = X_CON(pge);
+			ngex = X_CON(nge->bkwd);
+			/* now the segments to be joined are pge...nge */
+
+			ndots = 0;
+			for(ige = pge; ige != nge->frwd; ige = ige->frwd) {
+				if(maxdots < ndots+(NREFDOTS+1)) {
+					maxdots += MAXDOTS;
+					dots = (struct dot_dist *)realloc((void *)dots, sizeof(*dots)*maxdots);
+					if(dots == NULL) {
+						fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+						exit(255);
+					}
+				}
+				nngex = X_CON(ige);
+				for(i=0; i<NREFDOTS; i++) {
+					for(j=0; j<2; j++)
+						dots[ndots].p[j] = nngex->dots[i][j];
+					ndots++;
+				}
+				for(j=0; j<2; j++)
+					dots[ndots].p[j] = ige->fpoints[j][2];
+				ndots++;
+			}
+			ndots--; /* the last point is not interesting */
+
+			tpge = *pge;
+			pflag = pgex->flags;
+			if(pflag & (GEXF_JGOOD|GEXF_JFLAT2|GEXF_JID2)) {
+				/* nothing */
+			} else if(pflag & GEXF_JFLAT) {
+				tpge.fx1 = tpge.fx3;
+				tpge.fy1 = tpge.fy3;
+			} else if(pflag & GEXF_JID) {
+				if(pflag & GEXF_HOR)
+					tpge.fy1 = tpge.bkwd->fy3;
+				else
+					tpge.fx1 = tpge.bkwd->fx3;
+			}
+
+			tnge = *nge;
+			nflag = ngex->flags;
+			if(nflag & (GEXF_JGOOD|GEXF_JFLAT1|GEXF_JID)
+			&& !(nflag & GEXF_JID2)) {
+				/* nothing */
+			} else if(nflag & GEXF_JFLAT) {
+				tnge.fx2 = tnge.bkwd->fx3;
+				tnge.fy2 = tnge.bkwd->fy3;
+			} else if(nflag & GEXF_JID) {
+				if(X_CON_F(nge) & GEXF_HOR)
+					tnge.fy2 = tnge.fy3;
+				else
+					tnge.fx2 = tnge.fx3;
+			}
+
+			fnormalizege(&tpge);
+			fnormalizege(&tnge);
+			if( fcrossraysge(&tpge, &tnge, NULL, NULL, &apcv[1]) ) {
+				apcv[0][X] = tpge.bkwd->fx3;
+				apcv[0][Y] = tpge.bkwd->fy3;
+				/* apcv[1] and apcv[2] were filled by fcrossraysge() */
+				apcv[3][X] = tnge.fx3;
+				apcv[3][Y] = tnge.fy3;
+
+				/* calculate the precision depending on the smaller dimension of the curve */
+				maxd2 = apcv[3][X]-apcv[0][X];
+				maxd2 *= maxd2;
+				eps2 = apcv[3][Y]-apcv[0][Y];
+				eps2 *= eps2;
+				if(maxd2 < eps2)
+					eps2 = maxd2;
+				eps2 *= (CVEPS2*4.) / (400.*400.);
+				if(eps2 < CVEPS2)
+					eps2 = CVEPS2;
+				else if(eps2 > CVEPS2*4.)
+					eps2 = CVEPS2*4.;
+
+				fapproxcurve(apcv, dots, ndots);
+
+				avsd2 = fdotcurvdist2(apcv, dots, ndots, &maxd2); 
+				if(ISDBG(FCONCISE))
+					fprintf(stderr, "avsd = %g, maxd = %g, ", sqrt(avsd2), sqrt(maxd2));
+				if(avsd2 <= eps2 && maxd2 <= eps2*2.) {
+					/* we've guessed a curve that is close enough */
+					ggoodcv++; ggoodcvdots += ndots;
+
+					if(ISDBG(FCONCISE)) {
+						fprintf(stderr, "in %s joined %p-%p to ", g->name, pge, nge);
+						for(i=0; i<4; i++) {
+							fprintf(stderr, " (%g, %g)", apcv[i][X], apcv[i][Y]);
+						}
+						fprintf(stderr, " from\n");
+						dumppaths(g, pge, nge);
+					}
+					for(i=0; i<3; i++) {
+						pge->fxn[i] = apcv[i+1][X];
+						pge->fyn[i] = apcv[i+1][Y];
+					}
+					pge->type = GE_CURVE;
+					ge = pge;
+					for(ige = pge->frwd; ; ige = pge->frwd) {
+						if(ige == pge) {
+							fprintf(stderr, "WARNING: assertion in %s line %d, please report it to the ttf2pt1 project\n",
+								__FILE__, __LINE__);
+							free(dots);
+							return;
+						}
+						if(startge == ige)
+							startge = pge;
+						free(ige->ext);
+						freethisge(ige);
+						if(ige == nge)
+							break;
+					}
+					fnormalizege(ge);
+					if(ISDBG(FCONCISE)) {
+						fprintf(stderr, "normalized ");
+						for(i=0; i<3; i++) {
+							fprintf(stderr, " (%g, %g)", ge->fpoints[X][i], ge->fpoints[Y][i]);
+						}
+						fprintf(stderr, "\n");
+					}
+					fanalyzege(ge);
+					fanalyzejoint(ge);
+					fanalyzege(ge->bkwd);
+					fanalyzejoint(ge->bkwd);
+
+					/* the results of this join will have to be reconsidered */
+					startge = ge = ge->frwd;
+					goto restart;
+				} else {
+					gbadcv++; gbadcvdots += ndots;
+				}
+			}
+
+			/* if we're down to 2 entries then the join has failed */
+			if(pge->frwd == nge) {
+				pgex->flags &= ~joinmask;
+				if(ISDBG(FCONCISE))
+					fprintf(stderr, "no match\n");
+				goto next;
+			}
+
+			/* reduce the number of entries by dropping one at some end,
+			 * should never drop the original ge from the range
+			 */
+
+			if(nge->bkwd == ge 
+			|| pge != ge && (pgex->flags & GEXF_JCVMASK) <= (ngex->flags & GEXF_JCVMASK) ) {
+				pge = pge->frwd;
+			} else {
+				nge = nge->bkwd;
+			}
+			if(ISDBG(FCONCISE))
+				fprintf(stderr, "next try: %p to %p\n", pge, nge);
+		}
+
+next:
+		ge = ge->frwd;
+		if(ge == startge) {
+			joinmask = (joinmask >> 1) & GEXF_JCVMASK;
+			if(joinmask == 0)
+				break;
+		}
+	}
+
+	/* join flat segments into lines */
+	/* here ge==startge */
+	while(1) {
+		gex = X_CON(ge);
+		if( !(gex->flags & GEXF_JLINE) )
+			goto next2;
+
+		ndots = 0;
+		dots[ndots].p[X] = ge->fx3;
+		dots[ndots].p[Y] = ge->fy3;
+		ndots++;
+
+		pge = ge->bkwd;
+		nge = ge->frwd;
+
+		if(ISDBG(FCONCISE))
+			fprintf(stderr, "joining LINE from %p-%p\n", ge, nge);
+
+		while(pge!=nge) {
+			pgex = X_CON(pge);
+			ngex = X_CON(nge); 
+			if(ISDBG(FCONCISE))
+				fprintf(stderr, "(p=%p/%x n=0x%x/%x) ", pge, pgex->flags & GEXF_JLINE, 
+					nge, ngex->flags & GEXF_JLINE);
+			if( !((pgex->flags | ngex->flags) & GEXF_JLINE) ) {
+				if(ISDBG(FCONCISE))
+					fprintf(stderr, "(end p=%p n=%p) ", pge, nge);
+				break;
+			}
+
+			if(maxdots < ndots+2) {
+				maxdots += MAXDOTS;
+				dots = (struct dot_dist *)realloc((void *)dots, sizeof(*dots)*maxdots);
+				if(dots == NULL) {
+					fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+					exit(255);
+				}
+			}
+			if( pgex->flags & GEXF_JLINE ) {
+				for(i=0; i<2; i++) {
+					apcv[0][i] = pge->bkwd->fpoints[i][2];
+					apcv[1][i] = nge->fpoints[i][2];
+					dots[ndots].p[i] = pge->fpoints[i][2];
+				}
+				ndots++;
+				for(i=0; i<ndots; i++) {
+					avsd2 = fdotsegdist2(apcv, dots[i].p);
+					if(avsd2 > CVEPS2)
+						break;
+				}
+				if(i<ndots) { /* failed to join */
+					if(ISDBG(FCONCISE))
+						fprintf(stderr, "failed to join prev %p ", pge);
+					ndots--;
+					pgex->flags &= ~GEXF_JLINE;
+				} else {
+					pge = pge->bkwd;
+					if(pge == nge) {
+						if(ISDBG(FCONCISE))
+							fprintf(stderr, "intersected at prev %p ", pge);
+						break; /* oops, tried to self-intersect */
+					}
+				}
+			} else if(ISDBG(FCONCISE))
+				fprintf(stderr, "(p=%p) ", pge);
+
+			if( ngex->flags & GEXF_JLINE ) {
+				for(i=0; i<2; i++) {
+					apcv[0][i] = pge->fpoints[i][2]; /* pge points before the 1st segment */
+					apcv[1][i] = nge->frwd->fpoints[i][2];
+					dots[ndots].p[i] = nge->fpoints[i][2];
+				}
+				ndots++;
+				for(i=0; i<ndots; i++) {
+					avsd2 = fdotsegdist2(apcv, dots[i].p);
+					if(avsd2 > CVEPS2)
+						break;
+				}
+				if(i<ndots) { /* failed to join */
+					if(ISDBG(FCONCISE))
+						fprintf(stderr, "failed to join next %p ", nge->frwd);
+					ndots--;
+					ngex->flags &= ~GEXF_JLINE;
+				} else {
+					nge = nge->frwd;
+				}
+			} else if(ISDBG(FCONCISE))
+				fprintf(stderr, "(n=%p) ", nge);
+		}
+
+		pge = pge->frwd;  /* now the limits are pge...nge inclusive */
+		if(pge == nge) /* a deeply perversive contour */
+			break;
+
+		if(ISDBG(FCONCISE)) {
+			fprintf(stderr, "\nin %s joined LINE %p-%p from\n", g->name, pge, nge);
+			dumppaths(g, pge, nge);
+		}
+		pge->type = GE_LINE;
+		for(i=0; i<2; i++) {
+			pge->fpoints[i][2] = nge->fpoints[i][2];
+		}
+		fnormalizege(pge);
+		X_CON_F(pge) &= ~GEXF_JLINE;
+
+		ge = pge;
+		for(ige = pge->frwd; ; ige = pge->frwd) {
+			if(ige == pge) {
+				fprintf(stderr, "WARNING: assertion in %s line %d, please report it to the ttf2pt1 project\n",
+					__FILE__, __LINE__);
+				free(dots);
+				return;
+			}
+			if(startge == ige)
+				startge = pge;
+			free(ige->ext);
+			freethisge(ige);
+			if(ige == nge)
+				break;
+		}
+next2:
+		ge = ge->frwd;
+		if(ge == startge)
+			break;
+	}
+
+	free(dots);
+}
+
+/* force conciseness: substitute 2 or more curves going in the
+** same quadrant with one curve
+** in floating point
+*/
+
+void
+fforceconcise(
+	     GLYPH * g
+)
+{
+
+	GENTRY         *ge, *nge, *endge, *xge;
+
+	assertisfloat(g, "enforcing conciseness");
+
+	fdelsmall(g, 0.05);
+	assertpath(g->entries, __FILE__, __LINE__, g->name);
+
+	if(ISDBG(FCONCISE))
+		dumppaths(g, NULL, NULL);
+
+	/* collect more information about each gentry and their joints */
+	for (ge = g->entries; ge != 0; ge = ge->next)
+		if (ge->type == GE_CURVE || ge->type == GE_LINE)
+			fnormalizege(ge);
+
+	for (ge = g->entries; ge != 0; ge = ge->next)
+		if (ge->type == GE_CURVE || ge->type == GE_LINE) {
+			alloc_gex_con(ge);
+			fanalyzege(ge);
+		}
+
+	/* see what we can do about joining */
+	for (ge = g->entries; ge != 0; ge = ge->next)
+		if (ge->type == GE_CURVE || ge->type == GE_LINE)
+			fanalyzejoint(ge);
+
+	/* now do the joining */
+	for (ge = g->entries; ge != 0; ge = ge->next)
+		if(ge->type == GE_MOVE)
+			fconcisecontour(g, ge->next);
+
+	for (ge = g->entries; ge != 0; ge = ge->next)
+		if (ge->type == GE_CURVE || ge->type == GE_LINE)
+			free(ge->ext);
+}
+
+void
+print_glyph(
+	   int glyphno
+)
+{
+	GLYPH          *g;
+	GENTRY         *ge;
+	int             x = 0, y = 0;
+	int             i;
+	int             grp, lastgrp= -1;
+
+	if(ISDBG(FCONCISE) && glyphno == 0) {
+		fprintf(stderr, "Guessed curves: bad %d/%d good %d/%d\n",
+			gbadcv, gbadcvdots, ggoodcv, ggoodcvdots);
+	}
+
+	g = &glyph_list[glyphno];
+
+	fprintf(pfa_file, "/%s { \n", g->name);
+
+	/* consider widths >MAXLEGALWIDTH as bugs */
+	if( g->scaledwidth <= MAXLEGALWIDTH ) {
+		fprintf(pfa_file, "0 %d hsbw\n", g->scaledwidth);
+	} else {
+		fprintf(pfa_file, "0 1000 hsbw\n");
+		WARNING_2 fprintf(stderr, "glyph %s: width %d seems to be buggy, set to 1000\n",
+			g->name, g->scaledwidth);
+	}
+
+#if 0
+	fprintf(pfa_file, "%% contours: ");
+	for (i = 0; i < g->ncontours; i++)
+		fprintf(pfa_file, "%s(%d,%d) ", (g->contours[i].direction == DIR_OUTER ? "out" : "in"),
+			g->contours[i].xofmin, g->contours[i].ymin);
+	fprintf(pfa_file, "\n");
+
+	if (g->rymin < 5000)
+		fprintf(pfa_file, "%d lower%s\n", g->rymin, (g->flatymin ? "flat" : "curve"));
+	if (g->rymax > -5000)
+		fprintf(pfa_file, "%d upper%s\n", g->rymax, (g->flatymax ? "flat" : "curve"));
+#endif
+
+	if (g->hstems)
+		for (i = 0; i < g->nhs; i += 2) {
+			if (g->hstems[i].flags & ST_3) {
+				fprintf(pfa_file, "%d %d %d %d %d %d hstem3\n",
+					g->hstems[i].value,
+				g->hstems[i + 1].value - g->hstems[i].value,
+					g->hstems[i + 2].value,
+					g->hstems[i + 3].value - g->hstems[i + 2].value,
+					g->hstems[i + 4].value,
+					g->hstems[i + 5].value - g->hstems[i + 4].value
+					);
+				i += 4;
+			} else {
+				fprintf(pfa_file, "%d %d hstem\n", g->hstems[i].value,
+				g->hstems[i + 1].value - g->hstems[i].value);
+			}
+		}
+
+	if (g->vstems)
+		for (i = 0; i < g->nvs; i += 2) {
+			if (g->vstems[i].flags & ST_3) {
+				fprintf(pfa_file, "%d %d %d %d %d %d vstem3\n",
+					g->vstems[i].value,
+				g->vstems[i + 1].value - g->vstems[i].value,
+					g->vstems[i + 2].value,
+					g->vstems[i + 3].value - g->vstems[i + 2].value,
+					g->vstems[i + 4].value,
+					g->vstems[i + 5].value - g->vstems[i + 4].value
+					);
+				i += 4;
+			} else {
+				fprintf(pfa_file, "%d %d vstem\n", g->vstems[i].value,
+				g->vstems[i + 1].value - g->vstems[i].value);
+			}
+		}
+
+	for (ge = g->entries; ge != 0; ge = ge->next) {
+		if(g->nsg>0) {
+			grp=ge->stemid;
+			if(grp >= 0 && grp != lastgrp)  {
+				fprintf(pfa_file, "%d 4 callsubr\n", grp+g->firstsubr);
+				lastgrp=grp;
+			}
+		}
+
+		switch (ge->type) {
+		case GE_MOVE:
+			if (absolute)
+				fprintf(pfa_file, "%d %d amoveto\n", ge->ix3, ge->iy3);
+			else
+				rmoveto(ge->ix3 - x, ge->iy3 - y);
+			if (0)
+				fprintf(stderr, "Glyph %s: print moveto(%d, %d)\n",
+					g->name, ge->ix3, ge->iy3);
+			x = ge->ix3;
+			y = ge->iy3;
+			break;
+		case GE_LINE:
+			if (absolute)
+				fprintf(pfa_file, "%d %d alineto\n", ge->ix3, ge->iy3);
+			else
+				rlineto(ge->ix3 - x, ge->iy3 - y);
+			x = ge->ix3;
+			y = ge->iy3;
+			break;
+		case GE_CURVE:
+			if (absolute)
+				fprintf(pfa_file, "%d %d %d %d %d %d arcurveto\n",
+					ge->ix1, ge->iy1, ge->ix2, ge->iy2, ge->ix3, ge->iy3);
+			else
+				rrcurveto(ge->ix1 - x, ge->iy1 - y,
+					  ge->ix2 - ge->ix1, ge->iy2 - ge->iy1,
+					  ge->ix3 - ge->ix2, ge->iy3 - ge->iy2);
+			x = ge->ix3;
+			y = ge->iy3;
+			break;
+		case GE_PATH:
+			closepath();
+			break;
+		default:
+			WARNING_1 fprintf(stderr, "**** Glyph %s: unknown entry type '%c'\n",
+				g->name, ge->type);
+			break;
+		}
+	}
+
+	fprintf(pfa_file, "endchar } ND\n");
+}
+
+/* print the subroutines for this glyph, returns the number of them */
+int
+print_glyph_subs(
+	   int glyphno,
+	   int startid /* start numbering subroutines from this id */
+)
+{
+	GLYPH *g;
+	int i, grp;
+
+	g = &glyph_list[glyphno];
+
+	if(!hints || !subhints || g->nsg<1)
+		return 0;
+
+	g->firstsubr=startid;
+
+#if 0
+	fprintf(pfa_file, "%% %s %d\n", g->name, g->nsg);
+#endif
+	for(grp=0; grp<g->nsg; grp++) {
+		fprintf(pfa_file, "dup %d {\n", startid++);
+		for(i= (grp==0)? 0 : g->nsbs[grp-1]; i<g->nsbs[grp]; i++)
+			fprintf(pfa_file, "\t%d %d %cstem\n", g->sbstems[i].low, 
+				g->sbstems[i].high-g->sbstems[i].low,
+				g->sbstems[i].isvert ? 'v' : 'h');
+		fprintf(pfa_file, "\treturn\n\t} NP\n");
+	}
+
+	return g->nsg;
+}
+
+void
+print_glyph_metrics(
+     FILE *afm_file,
+	   int code,
+	   int glyphno
+)
+{
+	GLYPH *g;
+
+	g = &glyph_list[glyphno];
+
+	if(transform)
+	  fprintf(afm_file, "C %d ; WX %d ; N %s ; B %d %d %d %d ;\n",
+		  code, g->scaledwidth, g->name,
+		  iscale(g->xMin), iscale(g->yMin), iscale(g->xMax), iscale(g->yMax));
+	else
+	  fprintf(afm_file, "C %d ; WX %d ; N %s ; B %d %d %d %d ;\n",
+		  code, g->scaledwidth, g->name,
+		  g->xMin, g->yMin, g->xMax, g->yMax);
+
+}
+
+void
+print_glyph_metrics_ufm(
+     FILE *ufm_file,
+	   int code,
+	   int glyphno
+)
+{
+	GLYPH *g;
+
+	g = &glyph_list[glyphno];
+
+  // OAR - added bounding box for Unicode glyphs
+  fprintf(ufm_file, "U %d ; WX %d ; N %s ; G %d ; B %d %d %d %d ;\n",
+	  code, g->scaledwidth, g->name, glyphno, g->xMin, g->yMin, g->xMax, g->yMax);
+}
+/*
+ SB:
+ An important note about the BlueValues.
+
+ The Adobe documentation says that the maximal width of a Blue zone
+ is connected to the value of BlueScale, which is by default 0.039625.
+ The BlueScale value defines, at which point size the overshoot
+ suppression be disabled.
+
+ The formula for it that is given in the manual is:
+
+  BlueScale=point_size/240, for a 300dpi device
+
+ that makes us wonder what is this 240 standing for. Incidentally
+ 240=72*1000/300, where 72 is the relation between inches and points,
+ 1000 is the size of the glyph matrix, and 300dpi is the resolution of
+ the output device. Knowing that we can recalculate the formula for
+ the font size in pixels rather than points:
+
+  BlueScale=pixel_size/1000
+
+ That looks a lot simpler than the original formula, does not it ?
+ And the limitation about the maximal width of zone also looks
+ a lot simpler after the transformation:
+
+  max_width < 1000/pixel_size
+
+ that ensures that even at the maximal pixel size when the overshoot
+ suppression is disabled the zone width will be less than one pixel.
+ This is important, failure to comply to this limit will result in
+ really ugly fonts (been there, done that). But knowing the formula
+ for the pixel width, we see that in fact we can use the maximal width
+ of 24, not 23 as specified in the manual.
+
+*/
+
+#define MAXBLUEWIDTH (24)
+
+/*
+ * Find the indexes of the most frequent values
+ * in the hystogram, sort them in ascending order, and save which one
+ * was the best one (if asked).
+ * Returns the number of values found (may be less than maximal because
+ * we ignore the zero values)
+ */
+
+#define MAXHYST	(2000)		/* size of the hystogram */
+#define HYSTBASE 500
+
+static int
+besthyst(
+	 int *hyst,		/* the hystogram */
+	 int base,		/* the base point of the hystogram */
+	 int *best,		/* the array for indexes of best values */
+	 int nbest,		/* its allocated size */
+	 int width,		/* minimal difference between indexes */
+	 int *bestindp		/* returned top point */
+)
+{
+	unsigned char   hused[MAXHYST / 8 + 1];
+	int             i, max, j, w, last = 0;
+	int             nf = 0;
+
+	width--;
+
+	memset(hused, 0 , sizeof hused);
+
+	max = 1;
+	for (i = 0; i < nbest && max != 0; i++) {
+		best[i] = 0;
+		max = 0;
+		for (j = 1; j < MAXHYST - 1; j++) {
+			w = hyst[j];
+
+			if (w > max && (hused[j>>3] & (1 << (j & 0x07))) == 0) {
+				best[i] = j;
+				max = w;
+			}
+		}
+		if (max != 0) {
+			if (max < last/2) {
+				/* do not pick the too low values */
+				break;
+			}
+			for (j = best[i] - width; j <= best[i] + width; j++) {
+				if (j >= 0 && j < MAXHYST)
+					hused[j >> 3] |= (1 << (j & 0x07));
+			}
+			last = max;
+			best[i] -= base;
+			nf = i + 1;
+		}
+	}
+
+	if (bestindp)
+		*bestindp = best[0];
+
+	/* sort the indexes in ascending order */
+	for (i = 0; i < nf; i++) {
+		for (j = i + 1; j < nf; j++)
+			if (best[j] < best[i]) {
+				w = best[i];
+				best[i] = best[j];
+				best[j] = w;
+			}
+	}
+
+	return nf;
+}
+
+/*
+ * Find the next best Blue zone in the hystogram.
+ * Return the weight of the found zone.
+ */
+
+static int
+bestblue(
+	 short *zhyst,		/* the zones hystogram */
+	 short *physt,		/* the points hystogram */
+	 short *ozhyst,		/* the other zones hystogram */
+	 int *bluetab		/* where to put the found zone */
+)
+{
+	int             i, j, w, max, ind, first, last;
+
+	/* find the highest point in the zones hystogram */
+	/* if we have a plateau, take its center */
+	/* if we have multiple peaks, take the first one */
+
+	max = -1;
+	first = last = -10;
+	for (i = 0; i <= MAXHYST - MAXBLUEWIDTH; i++) {
+		w = zhyst[i];
+		if (w > max) {
+			first = last = i;
+			max = w;
+		} else if (w == max) {
+			if (last == i - 1)
+				last = i;
+		}
+	}
+	ind = (first + last) / 2;
+
+	if (max == 0)		/* no zones left */
+		return 0;
+
+	/* now we reuse `first' and `last' as inclusive borders of the zone */
+	first = ind;
+	last = ind + (MAXBLUEWIDTH - 1);
+
+	/* our maximal width is far too big, so we try to make it narrower */
+	w = max;
+	j = (w & 1);		/* a pseudo-random bit */
+	while (1) {
+		while (physt[first] == 0)
+			first++;
+		while (physt[last] == 0)
+			last--;
+		if (last - first < (MAXBLUEWIDTH * 2 / 3) || (max - w) * 10 > max)
+			break;
+
+		if (physt[first] < physt[last]
+		    || physt[first] == physt[last] && j) {
+			if (physt[first] * 20 > w)	/* if weight is >5%,
+							 * stop */
+				break;
+			w -= physt[first];
+			first++;
+			j = 0;
+		} else {
+			if (physt[last] * 20 > w)	/* if weight is >5%,
+							 * stop */
+				break;
+			w -= physt[last];
+			last--;
+			j = 1;
+		}
+	}
+
+	/* save our zone */
+	bluetab[0] = first - HYSTBASE;
+	bluetab[1] = last - HYSTBASE;
+
+	/* invalidate all the zones overlapping with this one */
+	/* the constant of 2 is determined by the default value of BlueFuzz */
+	for (i = first - (MAXBLUEWIDTH - 1) - 2; i <= last + 2; i++)
+		if (i >= 0 && i < MAXHYST) {
+			zhyst[i] = 0;
+			ozhyst[i] = 0;
+		}
+	return w;
+}
+
+/*
+ * Try to find the Blue Values, bounding box and italic angle
+ */
+
+void
+findblues(void)
+{
+	/* hystograms for upper and lower zones */
+	short           hystl[MAXHYST];
+	short           hystu[MAXHYST];
+	short           zuhyst[MAXHYST];
+	short           zlhyst[MAXHYST];
+	int             nchars;
+	int             i, j, k, w, max;
+	GENTRY         *ge;
+	GLYPH          *g;
+	double          ang;
+
+	/* find the lowest and highest points of glyphs */
+	/* and by the way build the values for FontBBox */
+	/* and build the hystogram for the ItalicAngle */
+
+	/* re-use hystl for the hystogram of italic angle */
+
+	bbox[0] = bbox[1] = 5000;
+	bbox[2] = bbox[3] = -5000;
+
+	for (i = 0; i < MAXHYST; i++)
+		hystl[i] = 0;
+
+	nchars = 0;
+
+	for (i = 0, g = glyph_list; i < numglyphs; i++, g++) {
+		if (g->flags & GF_USED) {
+			nchars++;
+
+			g->rymin = 5000;
+			g->rymax = -5000;
+			for (ge = g->entries; ge != 0; ge = ge->next) {
+				if (ge->type == GE_LINE) {
+
+					j = ge->iy3 - ge->prev->iy3;
+					k = ge->ix3 - ge->prev->ix3;
+					if (j > 0)
+						ang = atan2(-k, j) * 180.0 / M_PI;
+					else
+						ang = atan2(k, -j) * 180.0 / M_PI;
+
+					k /= 100;
+					j /= 100;
+					if (ang > -45.0 && ang < 45.0) {
+						/*
+						 * be careful to not overflow
+						 * the counter
+						 */
+						hystl[HYSTBASE + (int) (ang * 10.0)] += (k * k + j * j) / 4;
+					}
+					if (ge->iy3 == ge->prev->iy3) {
+						if (ge->iy3 <= g->rymin) {
+							g->rymin = ge->iy3;
+							g->flatymin = 1;
+						}
+						if (ge->iy3 >= g->rymax) {
+							g->rymax = ge->iy3;
+							g->flatymax = 1;
+						}
+					} else {
+						if (ge->iy3 < g->rymin) {
+							g->rymin = ge->iy3;
+							g->flatymin = 0;
+						}
+						if (ge->iy3 > g->rymax) {
+							g->rymax = ge->iy3;
+							g->flatymax = 0;
+						}
+					}
+				} else if (ge->type == GE_CURVE) {
+					if (ge->iy3 < g->rymin) {
+						g->rymin = ge->iy3;
+						g->flatymin = 0;
+					}
+					if (ge->iy3 > g->rymax) {
+						g->rymax = ge->iy3;
+						g->flatymax = 0;
+					}
+				}
+				if (ge->type == GE_LINE || ge->type == GE_CURVE) {
+					if (ge->ix3 < bbox[0])
+						bbox[0] = ge->ix3;
+					if (ge->ix3 > bbox[2])
+						bbox[2] = ge->ix3;
+					if (ge->iy3 < bbox[1])
+						bbox[1] = ge->iy3;
+					if (ge->iy3 > bbox[3])
+						bbox[3] = ge->iy3;
+				}
+			}
+		}
+	}
+
+	/* get the most popular angle */
+	max = 0;
+	w = 0;
+	for (i = 0; i < MAXHYST; i++) {
+		if (hystl[i] > w) {
+			w = hystl[i];
+			max = i;
+		}
+	}
+	ang = (double) (max - HYSTBASE) / 10.0;
+	WARNING_2 fprintf(stderr, "Guessed italic angle: %f\n", ang);
+	if (italic_angle == 0.0)
+		italic_angle = ang;
+
+	/* build the hystogram of the lower points */
+	for (i = 0; i < MAXHYST; i++)
+		hystl[i] = 0;
+
+	for (i = 0, g = glyph_list; i < numglyphs; i++, g++) {
+		if ((g->flags & GF_USED)
+		    && g->rymin + HYSTBASE >= 0 && g->rymin < MAXHYST - HYSTBASE) {
+			hystl[g->rymin + HYSTBASE]++;
+		}
+	}
+
+	/* build the hystogram of the upper points */
+	for (i = 0; i < MAXHYST; i++)
+		hystu[i] = 0;
+
+	for (i = 0, g = glyph_list; i < numglyphs; i++, g++) {
+		if ((g->flags & GF_USED)
+		    && g->rymax + HYSTBASE >= 0 && g->rymax < MAXHYST - HYSTBASE) {
+			hystu[g->rymax + HYSTBASE]++;
+		}
+	}
+
+	/* build the hystogram of all the possible lower zones with max width */
+	for (i = 0; i < MAXHYST; i++)
+		zlhyst[i] = 0;
+
+	for (i = 0; i <= MAXHYST - MAXBLUEWIDTH; i++) {
+		for (j = 0; j < MAXBLUEWIDTH; j++)
+			zlhyst[i] += hystl[i + j];
+	}
+
+	/* build the hystogram of all the possible upper zones with max width */
+	for (i = 0; i < MAXHYST; i++)
+		zuhyst[i] = 0;
+
+	for (i = 0; i <= MAXHYST - MAXBLUEWIDTH; i++) {
+		for (j = 0; j < MAXBLUEWIDTH; j++)
+			zuhyst[i] += hystu[i + j];
+	}
+
+	/* find the baseline */
+	w = bestblue(zlhyst, hystl, zuhyst, &bluevalues[0]);
+	if (0)
+		fprintf(stderr, "BaselineBlue zone %d%% %d...%d\n", w * 100 / nchars,
+				bluevalues[0], bluevalues[1]);
+
+	if (w == 0)		/* no baseline, something weird */
+		return;
+
+	/* find the upper zones */
+	for (nblues = 2; nblues < 14; nblues += 2) {
+		w = bestblue(zuhyst, hystu, zlhyst, &bluevalues[nblues]);
+
+		if (0)
+			fprintf(stderr, "Blue zone %d%% %d...%d\n", w * 100 / nchars, 
+				bluevalues[nblues], bluevalues[nblues+1]);
+
+		if (w * 20 < nchars)
+			break;	/* don't save this zone */
+	}
+
+	/* find the lower zones */
+	for (notherb = 0; notherb < 10; notherb += 2) {
+		w = bestblue(zlhyst, hystl, zuhyst, &otherblues[notherb]);
+
+		if (0)
+			fprintf(stderr, "OtherBlue zone %d%% %d...%d\n", w * 100 / nchars,
+				otherblues[notherb], otherblues[notherb+1]);
+
+
+		if (w * 20 < nchars)
+			break;	/* don't save this zone */
+	}
+
+}
+
+/*
+ * Find the actual width of the glyph and modify the
+ * description to reflect it. Not guaranteed to do
+ * any good, may make character spacing too wide.
+ */
+
+void
+docorrectwidth(void)
+{
+	int             i;
+	GENTRY         *ge;
+	GLYPH          *g;
+	int             xmin, xmax;
+	int             maxwidth, minsp;
+
+	/* enforce this minimal spacing,
+	 * we limit the amount of the enforced spacing to avoid
+	 * spacing the bold wonts too widely
+	 */
+	minsp = (stdhw>60 || stdhw<10)? 60 : stdhw;
+
+	for (i = 0, g = glyph_list; i < numglyphs; i++, g++) {
+		g->oldwidth=g->scaledwidth; /* save the old width, will need for AFM */
+
+		if (correctwidth && g->flags & GF_USED) {
+			xmin = 5000;
+			xmax = -5000;
+			for (ge = g->entries; ge != 0; ge = ge->next) {
+				if (ge->type != GE_LINE && ge->type != GE_CURVE) 
+					continue;
+
+				if (ge->ix3 <= xmin) {
+					xmin = ge->ix3;
+				}
+				if (ge->ix3 >= xmax) {
+					xmax = ge->ix3;
+				}
+			}
+
+			maxwidth=xmax+minsp;
+			if( g->scaledwidth < maxwidth ) {
+				g->scaledwidth = maxwidth;
+				WARNING_3 fprintf(stderr, "glyph %s: extended from %d to %d\n",
+					g->name, g->oldwidth, g->scaledwidth );
+			}
+		}
+	}
+
+}
+
+/*
+ * Try to find the typical stem widths
+ */
+
+void
+stemstatistics(void)
+{
+#define MINDIST	10 /* minimal distance between the widths */
+	int             hyst[MAXHYST+MINDIST*2];
+	int             best[12];
+	int             i, j, k, w;
+	int             nchars;
+	int             ns;
+	STEM           *s;
+	GLYPH          *g;
+
+	/* start with typical stem width */
+
+	nchars=0;
+
+	/* build the hystogram of horizontal stem widths */
+	memset(hyst, 0, sizeof hyst);
+
+	for (i = 0, g = glyph_list; i < numglyphs; i++, g++) {
+		if (g->flags & GF_USED) {
+			nchars++;
+			s = g->hstems;
+			for (j = 0; j < g->nhs; j += 2) {
+				if ((s[j].flags | s[j + 1].flags) & ST_END)
+					continue;
+				w = s[j + 1].value - s[j].value+1;
+				if(w==20) /* split stems should not be counted */
+					continue;
+				if (w > 0 && w < MAXHYST - 1) {
+					/*
+					 * handle some fuzz present in
+					 * converted fonts
+					 */
+					hyst[w+MINDIST] += MINDIST-1;
+					for(k=1; k<MINDIST-1; k++) {
+						hyst[w+MINDIST + k] += MINDIST-1-k;
+						hyst[w+MINDIST - k] += MINDIST-1-k;
+					}
+				}
+			}
+		}
+	}
+
+	/* find 12 most frequent values */
+	ns = besthyst(hyst+MINDIST, 0, best, 12, MINDIST, &stdhw);
+
+	/* store data in stemsnaph */
+	for (i = 0; i < ns; i++)
+		stemsnaph[i] = best[i];
+	if (ns < 12)
+		stemsnaph[ns] = 0;
+
+	/* build the hystogram of vertical stem widths */
+	memset(hyst, 0, sizeof hyst);
+
+	for (i = 0, g = glyph_list; i < numglyphs; i++, g++) {
+		if (g->flags & GF_USED) {
+			s = g->vstems;
+			for (j = 0; j < g->nvs; j += 2) {
+				if ((s[j].flags | s[j + 1].flags) & ST_END)
+					continue;
+				w = s[j + 1].value - s[j].value+1;
+				if (w > 0 && w < MAXHYST - 1) {
+					/*
+					 * handle some fuzz present in
+					 * converted fonts
+					 */
+					hyst[w+MINDIST] += MINDIST-1;
+					for(k=1; k<MINDIST-1; k++) {
+						hyst[w+MINDIST + k] += MINDIST-1-k;
+						hyst[w+MINDIST - k] += MINDIST-1-k;
+					}
+				}
+			}
+		}
+	}
+
+	/* find 12 most frequent values */
+	ns = besthyst(hyst+MINDIST, 0, best, 12, MINDIST, &stdvw);
+
+	/* store data in stemsnaph */
+	for (i = 0; i < ns; i++)
+		stemsnapv[i] = best[i];
+	if (ns < 12)
+		stemsnapv[ns] = 0;
+
+#undef MINDIST
+}
+
+/*
+ * SB
+ * A funny thing: TTF paths are going in reverse direction compared
+ * to Type1. So after all (because the rest of logic uses TTF
+ * path directions) we have to reverse the paths.
+ *
+ * It was a big headache to discover that.
+ */
+
+/* works on both int and float paths */
+
+void
+reversepathsfromto(
+		   GENTRY * from,
+		   GENTRY * to
+)
+{
+	GENTRY         *ge, *nge, *pge;
+	GENTRY         *cur, *next;
+	int i, n, ilast[2];
+	double flast[2], f;
+
+	for (ge = from; ge != 0 && ge != to; ge = ge->next) {
+		if(ge->type == GE_LINE || ge->type == GE_CURVE) {
+			if (ISDBG(REVERSAL))
+				fprintf(stderr, "reverse path 0x%x <- 0x%x, 0x%x\n", ge, ge->prev, ge->bkwd);
+
+			/* cut out the path itself */
+			pge = ge->prev; /* GE_MOVE */
+			if (pge == 0) {
+				fprintf(stderr, "**! No MOVE before line !!! Fatal. ****\n");
+				exit(1);
+			}
+			nge = ge->bkwd->next; /* GE_PATH */
+			pge->next = nge;
+			nge->prev = pge;
+			ge->bkwd->next = 0; /* mark end of chain */
+
+			/* remember the starting point */
+			if(ge->flags & GEF_FLOAT) {
+				flast[0] = pge->fx3;
+				flast[1] = pge->fy3;
+			} else {
+				ilast[0] = pge->ix3;
+				ilast[1] = pge->iy3;
+			}
+
+			/* then reinsert them in backwards order */
+			for(cur = ge; cur != 0; cur = next ) {
+				next = cur->next; /* or addgeafter() will screw it up */
+				if(cur->flags & GEF_FLOAT) {
+					for(i=0; i<2; i++) {
+						/* reverse the direction of path element */
+						f = cur->fpoints[i][0];
+						cur->fpoints[i][0] = cur->fpoints[i][1];
+						cur->fpoints[i][1] = f;
+						f = flast[i];
+						flast[i] = cur->fpoints[i][2];
+						cur->fpoints[i][2] = f;
+					}
+				} else {
+					for(i=0; i<2; i++) {
+						/* reverse the direction of path element */
+						n = cur->ipoints[i][0];
+						cur->ipoints[i][0] = cur->ipoints[i][1];
+						cur->ipoints[i][1] = n;
+						n = ilast[i];
+						ilast[i] = cur->ipoints[i][2];
+						cur->ipoints[i][2] = n;
+					}
+				}
+				addgeafter(pge, cur);
+			}
+
+			/* restore the starting point */
+			if(ge->flags & GEF_FLOAT) {
+				pge->fx3 = flast[0];
+				pge->fy3 = flast[1];
+			} else {
+				pge->ix3 = ilast[0];
+				pge->iy3 = ilast[1];
+			}
+
+			ge = nge;
+		}
+
+	}
+}
+
+void
+reversepaths(
+	     GLYPH * g
+)
+{
+	reversepathsfromto(g->entries, NULL);
+}
+
+/* add a kerning pair information, scales the value */
+
+void
+addkernpair(
+	unsigned id1,
+	unsigned id2,
+	int unscval
+)
+{
+	static unsigned char *bits = 0;
+	static int lastid;
+	GLYPH *g = &glyph_list[id1];
+	int i, n;
+	struct kern *p;
+
+	if(unscval == 0 || id1 >= numglyphs || id2 >= numglyphs)
+		return;
+
+	if( (glyph_list[id1].flags & GF_USED)==0
+	|| (glyph_list[id2].flags & GF_USED)==0 )
+		return;
+
+	if(bits == 0) {
+		bits = calloc( BITMAP_BYTES(numglyphs), 1);
+		if (bits == NULL) {
+			fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+			exit(255);
+		}
+		lastid = id1;
+	}
+
+	if(lastid != id1) {
+		/* refill the bitmap cache */
+		memset(bits, 0,BITMAP_BYTES(numglyphs));
+		p = g->kern;
+		for(i=g->kerncount; i>0; i--) {
+			n = (p++)->id;
+			SET_BITMAP(bits, n);
+		}
+		lastid = id1;
+	}
+
+	if(IS_BITMAP(bits, id2))
+		return; /* duplicate */
+
+	if(g->kerncount <= g->kernalloc) {
+		g->kernalloc += 8;
+		p = realloc(g->kern, sizeof(struct kern) * g->kernalloc);
+		if(p == 0) {
+			fprintf (stderr, "** realloc failed, kerning data will be incomplete\n");
+		}
+		g->kern = p;
+	}
+
+	SET_BITMAP(bits, id2);
+	p = &g->kern[g->kerncount];
+	p->id = id2;
+	p->val = iscale(unscval) - (g->scaledwidth - g->oldwidth);
+	g->kerncount++;
+	kerning_pairs++;
+}
+
+/* print out the kerning information */
+
+void
+print_kerning(
+	FILE *afm_file
+)
+{
+	int	i, j, n;
+	GLYPH *g;
+	struct kern *p;
+
+	if( kerning_pairs == 0 ) 
+		return;
+
+	fprintf(afm_file, "StartKernData\n");
+	fprintf(afm_file, "StartKernPairs %hd\n", kerning_pairs);
+
+	for(i=0; i<numglyphs; i++)  {
+		g = &glyph_list[i];
+		if( (g->flags & GF_USED) ==0)
+			continue;
+		p = g->kern;
+		for(j=g->kerncount; j>0; j--, p++) {
+			fprintf(afm_file, "KPX %s %s %d\n", g->name, 
+				glyph_list[ p->id ].name, p->val );
+		}
+	}
+
+	fprintf(afm_file, "EndKernPairs\n");
+	fprintf(afm_file, "EndKernData\n");
+}
+
+
+#if 0
+
+/*
+** This function is commented out because the information
+** collected by it is not used anywhere else yet. Now
+** it only collects the directions of contours. And the
+** direction of contours gets fixed already in draw_glyf().
+**
+***********************************************
+**
+** Here we expect that the paths are already closed.
+** We also expect that the contours do not intersect
+** and that curves doesn't cross any border of quadrant.
+**
+** Find which contours go inside which and what is
+** their proper direction. Then fix the direction
+** to make it right.
+**
+*/
+
+#define MAXCONT	1000
+
+void
+fixcontours(
+	    GLYPH * g
+)
+{
+	CONTOUR         cont[MAXCONT];
+	short           ymax[MAXCONT];	/* the highest point */
+	short           xofmax[MAXCONT];	/* X-coordinate of any point
+						 * at ymax */
+	short           ymin[MAXCONT];	/* the lowest point */
+	short           xofmin[MAXCONT];	/* X-coordinate of any point
+						 * at ymin */
+	short           count[MAXCONT];	/* count of lines */
+	char            dir[MAXCONT];	/* in which direction they must go */
+	GENTRY         *start[MAXCONT], *minptr[MAXCONT], *maxptr[MAXCONT];
+	int             ncont;
+	int             i;
+	int             dx1, dy1, dx2, dy2;
+	GENTRY         *ge, *nge;
+
+	/* find the contours and their most upper/lower points */
+	ncont = 0;
+	ymax[0] = -5000;
+	ymin[0] = 5000;
+	for (ge = g->entries; ge != 0; ge = ge->next) {
+		if (ge->type == GE_LINE || ge->type == GE_CURVE) {
+			if (ge->iy3 > ymax[ncont]) {
+				ymax[ncont] = ge->iy3;
+				xofmax[ncont] = ge->ix3;
+				maxptr[ncont] = ge;
+			}
+			if (ge->iy3 < ymin[ncont]) {
+				ymin[ncont] = ge->iy3;
+				xofmin[ncont] = ge->ix3;
+				minptr[ncont] = ge;
+			}
+		}
+		if (ge->frwd != ge->next) {
+			start[ncont++] = ge->frwd;
+			ymax[ncont] = -5000;
+			ymin[ncont] = 5000;
+		}
+	}
+
+	/* determine the directions of contours */
+	for (i = 0; i < ncont; i++) {
+		ge = minptr[i];
+		nge = ge->frwd;
+
+		if (ge->type == GE_CURVE) {
+			dx1 = ge->ix3 - ge->ix2;
+			dy1 = ge->iy3 - ge->iy2;
+
+			if (dx1 == 0 && dy1 == 0) {	/* a pathological case */
+				dx1 = ge->ix3 - ge->ix1;
+				dy1 = ge->iy3 - ge->iy1;
+			}
+			if (dx1 == 0 && dy1 == 0) {	/* a more pathological
+							 * case */
+				dx1 = ge->ix3 - ge->prev->ix3;
+				dy1 = ge->iy3 - ge->prev->iy3;
+			}
+		} else {
+			dx1 = ge->ix3 - ge->prev->ix3;
+			dy1 = ge->iy3 - ge->prev->iy3;
+		}
+		if (nge->type == GE_CURVE) {
+			dx2 = ge->ix3 - nge->ix1;
+			dy2 = ge->iy3 - nge->iy1;
+			if (dx1 == 0 && dy1 == 0) {	/* a pathological case */
+				dx2 = ge->ix3 - nge->ix2;
+				dy2 = ge->iy3 - nge->iy2;
+			}
+			if (dx1 == 0 && dy1 == 0) {	/* a more pathological
+							 * case */
+				dx2 = ge->ix3 - nge->ix3;
+				dy2 = ge->iy3 - nge->iy3;
+			}
+		} else {
+			dx2 = ge->ix3 - nge->ix3;
+			dy2 = ge->iy3 - nge->iy3;
+		}
+
+		/* compare angles */
+		cont[i].direction = DIR_INNER;
+		if (dy1 == 0) {
+			if (dx1 < 0)
+				cont[i].direction = DIR_OUTER;
+		} else if (dy2 == 0) {
+			if (dx2 > 0)
+				cont[i].direction = DIR_OUTER;
+		} else if (dx2 * dy1 < dx1 * dy2)
+			cont[i].direction = DIR_OUTER;
+
+		cont[i].ymin = ymin[i];
+		cont[i].xofmin = xofmin[i];
+	}
+
+	/* save the information that may be needed further */
+	g->ncontours = ncont;
+	if (ncont > 0) {
+		g->contours = malloc(sizeof(CONTOUR) * ncont);
+		if (g->contours == 0) {
+			fprintf(stderr, "***** Memory allocation error *****\n");
+			exit(255);
+		}
+		memcpy(g->contours, cont, sizeof(CONTOUR) * ncont);
+	}
+}
+
+#endif
+
+/*
+ *
+ */
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf2pt1.c
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf2pt1.c	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf2pt1.c	(revision 2000)
@@ -0,0 +1,2694 @@
+/*
+ * True Type Font to Adobe Type 1 font converter 
+ * By Mark Heath <mheath@netspace.net.au> 
+ * Based on ttf2pfa by Andrew Weeks <ccsaw@bath.ac.uk> 
+ * With help from Frank M. Siegert <fms@this.net> 
+ *
+ * see COPYRIGHT for full copyright notice
+ *
+***********************************************************************
+ *
+ * Orion Richardson <orionr@yahoo.com>
+ *
+ * Added bounding box calculations for Unicode glyphs in the .ufm file
+ *
+***********************************************************************
+ *
+ * Steven Wittens <steven@acko.net>
+ *
+ * Added generation of .ufm file
+ *
+***********************************************************************
+ *
+ * Sergey Babkin <babkin@users.sourceforge.net>, <sab123@hotmail.com>
+ *
+ * Added post-processing of resulting outline to correct the errors
+ * both introduced during conversion and present in the original font,
+ * autogeneration of hints (has yet to be improved though) and BlueValues,
+ * scaling to 1000x1000 matrix, option to print the result on STDOUT,
+ * support of Unicode to CP1251 conversion, optimization  of the
+ * resulting font code by space (that improves the speed too). Excluded
+ * the glyphs that are unaccessible through the encoding table from
+ * the output file. Added the built-in Type1 assembler (taken from
+ * the `t1utils' package).
+ *
+***********************************************************************
+ *
+ * Thomas Henlich <thenlich@rcs.urz.tu-dresden.de>
+ *
+ * Added generation of .afm file (font metrics)
+ * Read encoding information from encoding description file
+ * Fixed bug in error message about unknown language ('-l' option)
+ * Added `:' after %%!PS-AdobeFont-1.0
+ * changed unused entries in ISOLatin1Encoding[] from .notdef to c127,c128...
+ *
+***********************************************************************
+ *
+ * Thomas Henlich <thenlich@rcs.urz.tu-dresden.de>
+ *
+ * Added generation of .afm file (font metrics)
+ *
+***********************************************************************
+ *
+ * Bug Fixes: 
+************************************************************************
+ *
+ * Sun, 21 Jun 1998 Thomas Henlich <thenlich@Rcs1.urz.tu-dresden.de> 
+ * 1. "width" should be "short int" because otherwise: 
+ *     characters with negative widths (e.g. -4) become *very* wide (65532) 
+ * 2. the number of /CharStrings is numglyphs and not numglyphs+1 
+ *
+***********************************************************************
+ *
+ *
+ *
+ * The resultant font file produced by this program still needs to be ran
+ * through t1asm (from the t1utils archive) to produce a completely valid
+ * font. 
+ *
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <time.h>
+#include <ctype.h>
+#include <math.h>
+
+#ifdef _GNU_SOURCE
+#include <getopt.h>
+#endif
+
+#ifndef WINDOWS
+#  include <unistd.h>
+#  include <netinet/in.h>
+#  define BITBUCKET "/dev/null"
+#  include <sys/wait.h>
+#else
+#  define WINDOWS_FUNCTIONS /* ask to define functions - in one file only */
+#  include "windows.h"
+#  define BITBUCKET "NUL"
+#  define snprintf _snprintf
+#endif
+
+#include "pt1.h"
+#include "global.h"
+#include "version.h"
+
+/* globals */
+
+/* table of front-ends */
+
+extern struct frontsw ttf_sw;
+extern struct frontsw bdf_sw;
+#if defined(USE_FREETYPE)
+  extern struct frontsw freetype_sw;
+#endif
+
+struct frontsw *frontswtab[] = {
+  &bdf_sw,
+#if defined(USE_FREETYPE) && defined(PREFER_FREETYPE)
+  &freetype_sw,
+#endif
+  &ttf_sw,
+#if defined(USE_FREETYPE) && !defined(PREFER_FREETYPE)
+  &freetype_sw,
+#endif
+  NULL /* end of table */
+};
+
+struct frontsw *cursw=0; /* the active front end */
+char *front_arg=""; /* optional argument */
+
+/* options */
+int      encode = 0;  /* encode the resulting file */
+int      pfbflag = 0;  /* produce compressed file */
+int      wantafm=0;  /* want to see .afm instead of .t1a on stdout */
+int      correctvsize=0;  /* try to correct the vertical size of characters */
+int      wantuid = 0;  /* user wants UniqueID entry in the font */
+int      allglyphs = 0;  /* convert all glyphs, not only 256 of them */
+int      warnlevel = 3;  /* the level of permitted warnings */
+int      forcemap = 0; /* do mapping even on non-Unicode fonts */
+/* options - maximal limits */
+int      max_stemdepth = 128;  /* maximal depth of stem stack in interpreter (128 - limit from X11) */
+/* options - debugging */
+int      absolute = 0;  /* print out in absolute values */
+int      reverse = 1;  /* reverse font to Type1 path directions */
+/* options - suboptions of Outline Processing, defaults are set in table */
+int      optimize;  /* enables space optimization */
+int      smooth;  /* enable smoothing of outlines */
+int      transform;  /* enables transformation to 1000x1000 matrix */
+int      hints;  /* enables autogeneration of hints */
+int      subhints;  /* enables autogeneration of substituted hints */
+int      trybold;  /* try to guess whether the font is bold */
+int      correctwidth;  /* try to correct the character width */
+int      vectorize;  /* vectorize the bitmaps */
+int      use_autotrace;  /* use the autotrace library on bitmap */
+/* options - suboptions of File Generation, defaults are set in table */
+int      gen_pfa;  /* generate the font file */
+int      gen_afm;  /* generate the metrics file */
+int      gen_ufm;  /* generate the unicode metrics file */
+int      gen_dvienc;  /* generate the dvips encoding file */
+
+/* not quite options to select a particular source encoding */
+int      force_pid = -1; /* specific platform id */
+int      force_eid = -1; /* specific encoding id */
+
+/* structure to define the sub-option lists controlled by the
+ * case: uppercase enables them, lowercase disables
+ */
+struct subo_case {
+  char disbl; /* character to disable - enforced lowercase */
+  char enbl;  /* character to enable - auto-set as toupper(disbl) */
+  int *valp; /* pointer to the actual variable containing value */
+  int  dflt; /* default value */
+  char *descr; /* description */
+};
+
+int      debug = DEBUG;  /* debugging flag */
+
+FILE    *null_file, *pfa_file, *afm_file, *ufm_file, *dvienc_file;
+int      numglyphs;
+struct font_metrics fontm;
+
+/* non-globals */
+static char    *strUID = 0;  /* user-supplied UniqueID */
+static unsigned long numUID;  /* auto-generated UniqueID */
+
+static int      ps_fmt_3 = 0;
+static double   scale_factor, original_scale_factor;
+
+static char  *glyph_rename[ENCTABSZ];
+
+/* the names assigned if the original font
+ * does not specify any
+ */
+
+static char    *Fmt3Encoding[256] = {
+  "c0", "c1", "c2", "c3",
+  "c4", "c5", "c6", "c7",
+  "c8", "c9", "c10", "c11",
+  "c12", "CR", "c14", "c15",
+  "c16", "c17", "c18", "c19",
+  "c20", "c21", "c22", "c23",
+  "c24", "c25", "c26", "c27",
+  "c28", "c29", "c30", "c31",
+  "space", "exclam", "quotedbl", "numbersign",
+  "dollar", "percent", "ampersand", "quotesingle",
+  "parenleft", "parenright", "asterisk", "plus",
+  "comma", "hyphen", "period", "slash",
+  "zero", "one", "two", "three",
+  "four", "five", "six", "seven",
+  "eight", "nine", "colon", "semicolon",
+  "less", "equal", "greater", "question",
+  "at", "A", "B", "C",
+  "D", "E", "F", "G",
+  "H", "I", "J", "K",
+  "L", "M", "N", "O",
+  "P", "Q", "R", "S",
+  "T", "U", "V", "W",
+  "X", "Y", "Z", "bracketleft",
+  "backslash", "bracketright", "asciicircum", "underscore",
+  "grave", "a", "b", "c",
+  "d", "e", "f", "g",
+  "h", "i", "j", "k",
+  "l", "m", "n", "o",
+  "p", "q", "r", "s",
+  "t", "u", "v", "w",
+  "x", "y", "z", "braceleft",
+  "bar", "braceright", "asciitilde", "c127",
+  "c128", "c129", "quotesinglbase", "florin",
+  "quotedblbase", "ellipsis", "dagger", "daggerdbl",
+  "circumflex", "perthousand", "Scaron", "guilsinglleft",
+  "OE", "c141", "c142", "c143",
+  "c144", "quoteleft", "quoteright", "quotedblleft",
+  "quotedblright", "bullet", "endash", "emdash",
+  "tilde", "trademark", "scaron", "guilsinglright",
+  "oe", "c157", "c158", "Ydieresis",
+  "nbspace", "exclamdown", "cent", "sterling",
+  "currency", "yen", "brokenbar", "section",
+  "dieresis", "copyright", "ordfeminine", "guillemotleft",
+  "logicalnot", "sfthyphen", "registered", "macron",
+  "degree", "plusminus", "twosuperior", "threesuperior",
+  "acute", "mu", "paragraph", "periodcentered",
+  "cedilla", "onesuperior", "ordmasculine", "guillemotright",
+  "onequarter", "onehalf", "threequarters", "questiondown",
+  "Agrave", "Aacute", "Acircumflex", "Atilde",
+  "Adieresis", "Aring", "AE", "Ccedilla",
+  "Egrave", "Eacute", "Ecircumflex", "Edieresis",
+  "Igrave", "Iacute", "Icircumflex", "Idieresis",
+  "Eth", "Ntilde", "Ograve", "Oacute",
+  "Ocircumflex", "Otilde", "Odieresis", "multiply",
+  "Oslash", "Ugrave", "Uacute", "Ucircumflex",
+  "Udieresis", "Yacute", "Thorn", "germandbls",
+  "agrave", "aacute", "acircumflex", "atilde",
+  "adieresis", "aring", "ae", "ccedilla",
+  "egrave", "eacute", "ecircumflex", "edieresis",
+  "igrave", "iacute", "icircumflex", "idieresis",
+  "eth", "ntilde", "ograve", "oacute",
+  "ocircumflex", "otilde", "odieresis", "divide",
+  "oslash", "ugrave", "uacute", "ucircumflex",
+  "udieresis", "yacute", "thorn", "ydieresis"
+};
+
+#ifdef notdef /* { */
+/* This table is not used anywhere in the code
+ * so it's ifdef-ed out by default but left in
+ * the source code for reference purposes (and
+ * possibly for future use)
+ */
+
+static char    *ISOLatin1Encoding[256] = {
+  ".null", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", "CR", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  "space", "exclam", "quotedbl", "numbersign",
+  "dollar", "percent", "ampersand", "quoteright",
+  "parenleft", "parenright", "asterisk", "plus",
+  "comma", "hyphen", "period", "slash",
+  "zero", "one", "two", "three",
+  "four", "five", "six", "seven",
+  "eight", "nine", "colon", "semicolon",
+  "less", "equal", "greater", "question",
+  "at", "A", "B", "C",
+  "D", "E", "F", "G",
+  "H", "I", "J", "K",
+  "L", "M", "N", "O",
+  "P", "Q", "R", "S",
+  "T", "U", "V", "W",
+  "X", "Y", "Z", "bracketleft",
+  "backslash", "bracketright", "asciicircum", "underscore",
+  "grave", "a", "b", "c",
+  "d", "e", "f", "g",
+  "h", "i", "j", "k",
+  "l", "m", "n", "o",
+  "p", "q", "r", "s",
+  "t", "u", "v", "w",
+  "x", "y", "z", "braceleft",
+  "bar", "braceright", "asciitilde", "c127",
+  "c128", "c129", "quotesinglbase", "florin",
+  "quotedblbase", "ellipsis", "dagger", "daggerdbl",
+  "circumflex", "perthousand", "Scaron", "guilsinglleft",
+  "OE", "c141", "c142", "c143",
+  "c144", "quoteleft", "quoteright", "quotedblleft",
+  "quotedblright", "bullet", "endash", "emdash",
+  "tilde", "trademark", "scaron", "guilsinglright",
+  "oe", "c157", "c158", "Ydieresis",
+  "nbspace", "exclamdown", "cent", "sterling",
+  "currency", "yen", "brokenbar", "section",
+  "dieresis", "copyright", "ordfeminine", "guillemotleft",
+  "logicalnot", "sfthyphen", "registered", "macron",
+  "degree", "plusminus", "twosuperior", "threesuperior",
+  "acute", "mu", "paragraph", "periodcentered",
+  "cedilla", "onesuperior", "ordmasculine", "guillemotright",
+  "onequarter", "onehalf", "threequarters", "questiondown",
+  "Agrave", "Aacute", "Acircumflex", "Atilde",
+  "Adieresis", "Aring", "AE", "Ccedilla",
+  "Egrave", "Eacute", "Ecircumflex", "Edieresis",
+  "Igrave", "Iacute", "Icircumflex", "Idieresis",
+  "Eth", "Ntilde", "Ograve", "Oacute",
+  "Ocircumflex", "Otilde", "Odieresis", "multiply",
+  "Oslash", "Ugrave", "Uacute", "Ucircumflex",
+  "Udieresis", "Yacute", "Thorn", "germandbls",
+  "agrave", "aacute", "acircumflex", "atilde",
+  "adieresis", "aring", "ae", "ccedilla",
+  "egrave", "eacute", "ecircumflex", "edieresis",
+  "igrave", "iacute", "icircumflex", "idieresis",
+  "eth", "ntilde", "ograve", "oacute",
+  "ocircumflex", "otilde", "odieresis", "divide",
+  "oslash", "ugrave", "uacute", "ucircumflex",
+  "udieresis", "yacute", "thorn", "ydieresis"
+};
+
+#endif /* } notdef */
+
+static char    *adobe_StandardEncoding[256] = {
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  "space", "exclam", "quotedbl", "numbersign",
+  "dollar", "percent", "ampersand", "quoteright",
+  "parenleft", "parenright", "asterisk", "plus",
+  "comma", "hyphen", "period", "slash",
+  "zero", "one", "two", "three",
+  "four", "five", "six", "seven",
+  "eight", "nine", "colon", "semicolon",
+  "less", "equal", "greater", "question",
+  "at", "A", "B", "C", "D", "E", "F", "G",
+  "H", "I", "J", "K", "L", "M", "N", "O",
+  "P", "Q", "R", "S", "T", "U", "V", "W",
+  "X", "Y", "Z", "bracketleft",
+  "backslash", "bracketright", "asciicircum", "underscore",
+  "quoteleft", "a", "b", "c", "d", "e", "f", "g",
+  "h", "i", "j", "k", "l", "m", "n", "o",
+  "p", "q", "r", "s", "t", "u", "v", "w",
+  "x", "y", "z", "braceleft",
+  "bar", "braceright", "asciitilde", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", "exclamdown", "cent", "sterling",
+  "fraction", "yen", "florin", "section",
+  "currency", "quotesingle", "quotedblleft", "guillemotleft",
+  "guilsinglleft", "guilsinglright", "fi", "fl",
+  ".notdef", "endash", "dagger", "daggerdbl",
+  "periodcentered", ".notdef", "paragraph", "bullet",
+  "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright",
+  "ellipsis", "perthousand", ".notdef", "questiondown",
+  ".notdef", "grave", "acute", "circumflex",
+  "tilde", "macron", "breve", "dotaccent",
+  "dieresis", ".notdef", "ring", "cedilla",
+  ".notdef", "hungarumlaut", "ogonek", "caron",
+  "emdash", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", "AE", ".notdef", "ordfeminine",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  "Lslash", "Oslash", "OE", "ordmasculine",
+  ".notdef", ".notdef", ".notdef", ".notdef",
+  ".notdef", "ae", ".notdef", ".notdef",
+  ".notdef", "dotlessi", ".notdef", ".notdef",
+  "lslash", "oslash", "oe", "germandbls",
+  ".notdef", ".notdef", ".notdef", ".notdef"
+};
+
+/*
+ * Decription of the supported conversions from Unicode
+ *
+ * SB
+ * Yes, I know that the compiled-in conversion is stupid but
+ * it is simple to implement and allows not to worry about the
+ * filesystem context. After all, the source is always available
+ * and adding another language to it is easy.
+ *
+ * The language name is expected to be the same as the subdirectory name 
+ * in the `encodings' directory (for possible future extensions). 
+ * The primary use of the aliases is for guessing based on the current 
+ * locale.
+ */
+
+#define MAXUNIALIAS 10
+#define MAXUNITABLES 3
+
+/* the character used as the language argument separator */
+#define LANG_ARG_SEP '+'
+
+
+/*
+ * Types of language-related routines. Arguments are:
+ * name is the glyph name
+ * arg is the user-specified language-dependent argument
+ *   which can for example select the subfont plane for Eastern fonts.
+ *   If none is supplied by user then an empty string ("") is passed.
+ *   If no language is specified by user and auto-guessing happens
+ *   then NULL is passed.
+ * when shows if the conversion by name was called before conversion by
+ *   map or after (it's called twice)
+ */
+
+/* type of the Unicode map initialization routine */
+typedef void uni_init_t(char *arg);
+
+/* type of Unicode converter-by-name function
+ * it's called for each glyph twice: one time for each glyph
+ * before doing conversion by map and one time after
+ */
+typedef int uni_conv_t(char *name, char *arg, int when);
+#define UNICONV_BYNAME_BEFORE 0
+#define UNICONV_BYNAME_AFTER 1
+
+struct uni_language {
+  uni_init_t  *init[MAXUNITABLES]; /* map initialization routines */
+  uni_conv_t  *convbyname; /* the name-based conversion function */
+  char *name; /* the language name */
+  char *descr; /* description */
+  char *alias[MAXUNIALIAS]; /* aliases of the language name */
+  int sample_upper; /* code of some uppercase character for correctvsize() */
+};
+
+/* the converter routines have an option of adding this suffix to the font name */
+static char *uni_font_name_suffix = ""; /* empty by default */
+/* this buffer may be used to store the suffix */
+#define UNI_MAX_SUFFIX_LEN  100
+static char uni_suffix_buf[UNI_MAX_SUFFIX_LEN+1];
+
+/*
+ * Prototypes of the conversion routines
+ */
+
+static uni_init_t unicode_latin1;
+static uni_init_t unicode_latin2;
+static uni_init_t unicode_latin4;
+static uni_init_t unicode_latin5;
+static uni_init_t unicode_cyrillic;
+static uni_init_t unicode_adobestd;
+static uni_init_t unicode_plane;
+static uni_conv_t unicode_adobestd_byname;
+
+static uni_init_t unicode_init_user;
+
+/*
+ * The order of descriptions is important: if we can't guess the
+ * language we just call all the conversion routines in order until
+ * we find one that understands this glyph.
+ */
+static struct uni_language uni_lang[]= {
+  /* pseudo-language for all the languages using Latin1 */
+  {
+    { unicode_latin1 },
+    0, /* no name-based mapping */
+    "latin1",
+    "works for most of the Western languages",
+    { "en_", "de_", "fr_", "nl_", "no_", "da_", "it_" },
+    'A'
+  },
+  { /* by Szalay Tamas <tomek@elender.hu> */
+    { unicode_latin2 },
+    0, /* no name-based mapping */
+    "latin2",
+    "works for Central European languages",
+    { "hu_","pl_","cz_","si_","sk_" },
+    'A'
+  },
+  { /* by Rièardas Èepas <rch@WriteMe.Com> */
+    { unicode_latin4 }, 
+    0, /* no name-based mapping */
+    "latin4",
+    "works for Baltic languages",
+    { "lt_", "lv_" }, /* doubt about ee_ */
+    'A'
+  },
+  { /* by Turgut Uyar <uyar@cs.itu.edu.tr> */
+    { unicode_latin5 }, 
+    0, /* no name-based mapping */
+    "latin5",
+    "for Turkish",
+    { "tr_" },
+    'A'
+  },
+  { /* by Zvezdan Petkovic <z.petkovic@computer.org> */
+    { unicode_cyrillic, unicode_latin1 },
+    0, /* no name-based mapping */
+    "cyrillic",
+    "in Windows encoding",
+    { "bg_", "be_", "mk_", "ru_", "sr_", "su_", "uk_" },
+    'A'
+  },
+  {
+    { unicode_cyrillic, unicode_latin1 },
+    0, /* no name-based mapping */
+    "russian",
+    "obsolete, use cyrillic instead",
+    { 0 },
+    'A'
+  },
+  {
+    { unicode_cyrillic, unicode_latin1 },
+    0, /* no name-based mapping */
+    "bulgarian",
+    "obsolete, use cyrillic instead",
+    { 0 },
+    'A'
+  },
+  {
+    { unicode_adobestd },
+    unicode_adobestd_byname,
+    "adobestd",
+    "Adobe Standard, expected by TeX",
+    { NULL },
+    'A'
+  },
+  {
+    { unicode_plane },
+    0, /* no name-based mapping */
+    "plane",
+    "one plane of Unicode or other multi-byte encoding as is",
+    { NULL },
+    0 /* no easy way to predict the capital letters */
+  },
+};
+
+static struct uni_language uni_lang_user = {
+  { unicode_init_user }, 
+  0, /* no name-based mapping */
+  0, /* no name */
+  0, /* no description */
+  { 0 },
+  0 /* no sample */
+};
+
+static struct uni_language *uni_lang_selected=0; /* 0 means "unknown, try all" */
+static int uni_sample='A'; /* sample of an uppercase character */
+static char *uni_lang_arg=""; /* user-supplied language-dependent argument */
+
+extern int      runt1asm(int);
+
+/*
+ * user-defined loadable maps
+ */
+
+
+/* The idea begind buckets is to avoid comparing every code with all ENCTABSZ codes in table.
+ * All the 16-bit unicode space is divided between a number of equal-sized buckets.
+ * Initially all the buckets are marked with 0. Then if any code in the bucket is
+ * used it's marked with 1. Later during translation we check the code's bucket first
+ * and it it's 0 then return failure right away. This may be useful for
+ * Chinese fonts with many thousands of glyphs.
+ */
+
+#define BUCKET_ID_BITS  11
+#define MARK_UNI_BUCKET(unicode) SET_BITMAP(uni_user_buckets, (unicode)>>(16-BUCKET_ID_BITS))
+#define IS_UNI_BUCKET(unicode) IS_BITMAP(uni_user_buckets, (unicode)>>(16-BUCKET_ID_BITS))
+
+static DEF_BITMAP(uni_user_buckets, 1<<BUCKET_ID_BITS);
+
+static unsigned int unicode_map[ENCTABSZ]; /* font-encoding to unicode map */
+static int enctabsz = 256; /* actual number of codes used */
+
+static void
+unicode_init_user(
+     char *path
+)
+{
+  FILE           *unicode_map_file;
+#define UNIBFSZ  256
+  char            buffer[UNIBFSZ];
+  unsigned        code, unicode, curpos, unicode2;
+  char           *arg, *p;
+  int             enabled, found, sawplane;
+  int             lineno, cnt, n, nchars;
+  char            next;
+  int             pid, eid, overid=0;
+
+  /* check if we have an argument (plane name) */
+  arg = strrchr(path, LANG_ARG_SEP);
+  if(arg != 0) {
+    *arg++ = 0;
+    if( sscanf(arg, "pid=%d,eid=%d%n", &pid, &eid, &nchars) == 2 ) {
+      force_pid = pid; force_eid = eid; overid = 1;
+      WARNING_1 fprintf(stderr, "User override of the source encoding: pid=%d eid=%d\n", pid, eid);
+      forcemap = 1;
+      arg += nchars;
+      if(*arg == ',')
+        arg++;
+    }
+    if( *arg == 0 || strlen(arg) > UNI_MAX_SUFFIX_LEN-1) 
+      arg = NULL;
+    else {
+      sprintf(uni_suffix_buf, "-%s", arg);
+      uni_font_name_suffix = uni_suffix_buf;
+    }
+  } 
+
+  /* now read in the encoding description file, if requested */
+  if ((unicode_map_file = fopen(path, "r")) == NULL) {
+    fprintf(stderr, "**** Cannot access map file '%s' ****\n", path);
+    exit(1);
+  }
+
+  sawplane = 0;
+  if(arg==NULL)
+    enabled = found = 1;
+  else
+    enabled = found = 0;
+
+  lineno=0; curpos=0;
+  while (fgets (buffer, UNIBFSZ, unicode_map_file) != NULL) {
+    char name[UNIBFSZ];
+
+    lineno++;
+
+    if(sscanf(buffer, "plane %s", name)==1) {
+      sawplane = 1;
+      if(arg == 0) {
+        fprintf(stderr, "**** map file '%s' requires plane name\n", path);
+        fprintf(stderr, "for example:\n");
+        fprintf(stderr, "  ttf2pt1 -L %s%c[pid=N,eid=N,]%s ...\n", 
+          path, LANG_ARG_SEP, name);
+        fprintf(stderr, "to select plane '%s'\n", name);
+        exit(1);
+      }
+      if( !strcmp(arg, name) ) {
+        enabled = found = 1; 
+        curpos = 0;
+      } else {
+        enabled = 0;
+        if(found) /* no need to read further */
+          break;
+      }
+      continue;
+    }
+
+    if(sscanf(buffer, "id %d %d", pid, eid)==2) {
+      if( !overid /* only if the user has not overriden */
+      && (enabled || !sawplane) ) { 
+        force_pid = pid; force_eid = eid;
+        forcemap = 1;
+      }
+      continue;
+    }
+
+    if( !enabled )
+      continue; /* skip to the next plane */
+
+    if( sscanf(buffer, "at %i", &curpos) == 1 ) {
+      if(curpos > 255) {
+        fprintf(stderr, "**** map file '%s' line %d: code over 255\n", path, lineno);
+        exit(1);
+      }
+      if(ISDBG(EXTMAP)) fprintf(stderr, "=== at 0x%x\n", curpos);
+      continue;
+    }
+
+    /* try the format of Roman Czyborra's files */
+    if ( sscanf (buffer, " =%x U+%4x", &code, &unicode) == 2
+    /* try the format of Linux locale charmap file */
+    || sscanf (buffer, " <%*s /x%x <U%4x>", &code, &unicode) == 2 ) {
+      if (code < ENCTABSZ) {
+        if(code >= enctabsz) enctabsz=code+1;
+        unicode_map[code] = unicode;
+        glyph_rename[code] = NULL;
+      }
+    }
+    /* try the format with glyph renaming */
+    else if (sscanf (buffer, " !%x U+%4x %128s", &code,
+      &unicode, name) == 3) {
+      if (code < ENCTABSZ) {
+        if(code >= enctabsz) enctabsz=code+1;
+        unicode_map[code] = unicode;
+        glyph_rename[code] = strdup(name);
+      }
+    }
+    /* try the compact sequence format */
+    else if( (n=sscanf(buffer, " %i%n", &unicode, &cnt)) == 1 ) {
+      p = buffer;
+      do {
+        if(curpos > 255) {
+          fprintf(stderr, "**** map file '%s' line %d: code over 255 for unicode 0x%x\n", 
+            path, lineno, unicode);
+          exit(1);
+        }
+        if(ISDBG(EXTMAP)) fprintf(stderr, "=== 0x%d -> 0x%x\n", curpos, unicode);
+        unicode_map[curpos++] = unicode;
+        p += cnt;
+        if( sscanf(p, " %[,-]%n", &next,&cnt) == 1 ) {
+          if(ISDBG(EXTMAP)) fprintf(stderr, "=== next: '%c'\n", next);
+          p += cnt;
+          if( next == '-' ) { /* range */
+            if ( sscanf(p, " %i%n", &unicode2, &cnt) != 1 ) {
+              fprintf(stderr, "**** map file '%s' line %d: missing end of range\n", path, lineno);
+              exit(1);
+            }
+            p += cnt;
+            if(ISDBG(EXTMAP)) fprintf(stderr, "=== range 0x%x to 0x%x\n", unicode, unicode2);
+            for(unicode++; unicode <= unicode2; unicode++) {
+              if(curpos > 255) {
+                fprintf(stderr, "**** map file '%s' line %d: code over 255 in unicode range ...-0x%x\n", 
+                  path, lineno, unicode2);
+                exit(1);
+              }
+              if(ISDBG(EXTMAP)) fprintf(stderr, "=== 0x%x -> 0x%x\n", curpos, unicode);
+              unicode_map[curpos++] = unicode;
+            }
+          }
+        }
+      } while ( sscanf(p, " %i%n", &unicode, &cnt) == 1 );
+    }
+
+  }
+
+  fclose (unicode_map_file);
+
+  if( !found ) {
+    fprintf(stderr, "**** map file '%s' has no plane '%s'\n", path, arg);
+    exit(1);
+  }
+
+  if(unicode_map['A'] == 'A')
+    uni_sample = 'A'; /* seems to be compatible with Latin */
+  else
+    uni_sample = 0; /* don't make any assumptions */
+}
+
+/*
+ * by Zvezdan Petkovic <z.petkovic@computer.org> 
+ */
+static void
+unicode_cyrillic(
+     char *arg
+)
+{
+  int i;
+  static unsigned int cyrillic_unicode_map[] = {
+    0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,  /* 80 */
+    0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f,  /* 88 */
+    0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,  /* 90 */
+    0x02dc, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f,  /* 98 */
+    0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,  /* A0 */
+    0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,  /* A8 */
+    0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,  /* B0 */
+    0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,  /* B8 */
+  };
+
+  for(i=0; i<=0x7F; i++)
+    unicode_map[i] = i;
+
+  for(i=0x80; i<=0xBF; i++)
+    unicode_map[i] = cyrillic_unicode_map[i-0x80];
+
+  for(i=0xC0; i<=0xFF; i++)
+    unicode_map[i] = i+0x350;
+
+}
+
+static void
+unicode_latin1(
+     char *arg
+)
+{
+  int i;
+  static unsigned int latin1_unicode_map[] = {
+    0x20ac,     -1, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,  /* 80 */
+    0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x017d, 0x008f,  /* 88 */
+    0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,  /* 90 */
+    0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x017e, 0x0178,  /* 98 */
+  };
+
+  for(i=0; i<=0x7F; i++)
+    unicode_map[i] = i;
+
+  for(i=0x80; i<=0x9F; i++)
+    unicode_map[i] = latin1_unicode_map[i-0x80];
+
+  for(i=0xA0; i<=0xFF; i++)
+    unicode_map[i] = i;
+}
+
+static void
+unicode_adobestd(
+     char *arg
+)
+{
+  int i;
+  static unsigned int adobestd_unicode_map[] = {
+      -1, 0x00a1, 0x00a2, 0x00a3, 0x2215, 0x00a5, 0x0192, 0x00a7,  /* A0 */
+    0x00a4, 0x0027, 0x201c, 0x00ab, 0x2039, 0x203a, 0xfb01, 0xfb02,  /* A8 */
+      -1, 0x2013, 0x2020, 0x2021, 0x2219,     -1, 0x00b6, 0x2022,  /* B0 */
+    0x201a, 0x201e, 0x201d, 0x00bb, 0x2026, 0x2030,     -1, 0x00bf,  /* B8 */
+      -1, 0x0060, 0x00b4, 0x02c6, 0x02dc, 0x02c9, 0x02d8, 0x02d9,  /* C0 */
+    0x00a8,     -1, 0x02da, 0x00b8,     -1, 0x02dd, 0x02db, 0x02c7,  /* C8 */
+    0x2014,     -1,     -1,     -1,     -1,     -1,     -1,     -1,  /* D0 */
+      -1,     -1,     -1,     -1,     -1,     -1,     -1,     -1,  /* D8 */
+      -1, 0x00c6,     -1, 0x00aa,     -1,     -1,     -1,     -1,  /* E0 */
+    0x0141, 0x00d8, 0x0152, 0x00ba,     -1,     -1,     -1,     -1,  /* E8 */
+      -1, 0x00e6,     -1,     -1,     -1, 0x0131,     -1,     -1,  /* F0 */
+    0x0142, 0x00f8, 0x0153, 0x00df,     -1,     -1,     -1,     -1,  /* F8 */
+  };
+
+  for(i=0; i<=0x7F; i++)
+    unicode_map[i] = i;
+
+  unicode_map[0x27] = 0x2019;
+  unicode_map[0x60] = -1;
+
+  /* 0x80 to 0x9F is a hole */
+
+  for(i=0xA0; i<=0xFF; i++)
+    unicode_map[i] = adobestd_unicode_map[i-0xA0];
+}
+
+/*
+ * Not all of the Adobe glyphs are in the Unicode
+ * standard maps, so the font creators have
+ * different ideas about their codes. Because
+ * of this we try to map based on the glyph
+ * names instead of Unicode codes. If there are
+ * no glyph names (ps_fmt_3!=0) we fall back
+ * to the code-based scheme.
+ */
+
+static int
+unicode_adobestd_byname(
+     char *name,
+     char *arg,
+     int where
+)
+{
+  int i;
+
+  /* names always take precedence over codes */
+  if(where == UNICONV_BYNAME_AFTER)
+    return -1;
+
+  for(i=32; i<256; i++) {
+    if(!strcmp(name, adobe_StandardEncoding[i]))
+      return i;
+  }
+  return -1;
+
+}
+
+static void
+unicode_latin2(
+     char *arg
+)
+{
+  int i;
+  static unsigned int latin2_unicode_map[] = {
+    0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,  /* A0 */
+    0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,  /* A8 */
+    0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,  /* B0 */
+    0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,  /* B8 */
+    0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,  /* C0 */
+    0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,  /* C8 */
+    0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,  /* D0 */
+    0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,  /* D8 */
+    0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,  /* E0 */
+    0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,  /* E8 */
+    0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,  /* F0 */
+    0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9,  /* F8 */
+  };
+
+  for(i=0; i<=0x7E; i++)
+    unicode_map[i] = i;
+
+  /* 7F-9F are unused */
+
+  for(i=0xA0; i<=0xFF; i++)
+    unicode_map[i] = latin2_unicode_map[i-0xA0];
+}
+
+static void
+unicode_latin4(
+     char *arg
+)
+{
+  int i;
+  static unsigned int latin4_unicode_map[] = {
+    0x0080, 0x0081, 0x201a, 0x0192,     -1, 0x2026, 0x2020, 0x2021,  /* 80 */
+    0x02c6, 0x2030,     -1, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,  /* 88 */
+    0x201e, 0x201c, 0x2019,     -1, 0x201d, 0x2022, 0x2013, 0x2014,  /* 90 */
+    0x02dc, 0x2122,     -1, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,  /* 98 */
+    0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7,  /* A0 */
+    0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af,  /* A8 */
+    0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7,  /* B0 */
+    0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b,  /* B8 */
+    0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,  /* C0 */
+    0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a,  /* C8 */
+    0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7,  /* D0 */
+    0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df,  /* D8 */
+    0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,  /* E0 */
+    0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b,  /* E8 */
+    0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7,  /* F0 */
+    0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9,  /* F8 */
+  };
+
+  for(i=0; i<=0x7F; i++)
+    unicode_map[i] = i;
+
+  for(i=0x80; i<=0xFF; i++)
+    unicode_map[i] = latin4_unicode_map[i-0x80];
+
+#if 0 /* for documentation purposes only */
+  case 0x201e: return 0x90; /* these two quotes are a hack only */
+  case 0x201c: return 0x91; /* these two quotes are a hack only */
+  case 0x00A0: return 0xA0; /*  NO-BREAK SPACE */
+  case 0x0104: return 0xA1; /*  LATIN CAPITAL LETTER A WITH OGONEK */
+  case 0x0138: return 0xA2; /*  LATIN SMALL LETTER KRA */
+  case 0x0156: return 0xA3; /*  LATIN CAPITAL LETTER R WITH CEDILLA */
+  case 0x00A4: return 0xA4; /*  CURRENCY SIGN */
+  case 0x0128: return 0xA5; /*  LATIN CAPITAL LETTER I WITH TILDE */
+  case 0x013B: return 0xA6; /*  LATIN CAPITAL LETTER L WITH CEDILLA */
+  case 0x00A7: return 0xA7; /*  SECTION SIGN */
+  case 0x00A8: return 0xA8; /*  DIAERESIS */
+  case 0x0160: return 0xA9; /*  LATIN CAPITAL LETTER S WITH CARON */
+  case 0x0112: return 0xAA; /*  LATIN CAPITAL LETTER E WITH MACRON */
+  case 0x0122: return 0xAB; /*  LATIN CAPITAL LETTER G WITH CEDILLA */
+  case 0x0166: return 0xAC; /*  LATIN CAPITAL LETTER T WITH STROKE */
+  case 0x00AD: return 0xAD; /*  SOFT HYPHEN */
+  case 0x017D: return 0xAE; /*  LATIN CAPITAL LETTER Z WITH CARON */
+  case 0x00AF: return 0xAF; /*  MACRON */
+  case 0x00B0: return 0xB0; /*  DEGREE SIGN */
+  case 0x0105: return 0xB1; /*  LATIN SMALL LETTER A WITH OGONEK */
+  case 0x02DB: return 0xB2; /*  OGONEK */
+  case 0x0157: return 0xB3; /*  LATIN SMALL LETTER R WITH CEDILLA */
+  case 0x00B4: return 0xB4; /*  ACUTE ACCENT */
+  case 0x0129: return 0xB5; /*  LATIN SMALL LETTER I WITH TILDE */
+  case 0x013C: return 0xB6; /*  LATIN SMALL LETTER L WITH CEDILLA */
+  case 0x02C7: return 0xB7; /*  CARON */
+  case 0x00B8: return 0xB8; /*  CEDILLA */
+  case 0x0161: return 0xB9; /*  LATIN SMALL LETTER S WITH CARON */
+  case 0x0113: return 0xBA; /*  LATIN SMALL LETTER E WITH MACRON */
+  case 0x0123: return 0xBB; /*  LATIN SMALL LETTER G WITH CEDILLA */
+  case 0x0167: return 0xBC; /*  LATIN SMALL LETTER T WITH STROKE */
+  case 0x014A: return 0xBD; /*  LATIN CAPITAL LETTER ENG */
+  case 0x017E: return 0xBE; /*  LATIN SMALL LETTER Z WITH CARON */
+  case 0x014B: return 0xBF; /*  LATIN SMALL LETTER ENG */
+  case 0x0100: return 0xC0; /*  LATIN CAPITAL LETTER A WITH MACRON */
+  case 0x00C1: return 0xC1; /*  LATIN CAPITAL LETTER A WITH ACUTE */
+  case 0x00C2: return 0xC2; /*  LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
+  case 0x00C3: return 0xC3; /*  LATIN CAPITAL LETTER A WITH TILDE */
+  case 0x00C4: return 0xC4; /*  LATIN CAPITAL LETTER A WITH DIAERESIS */
+  case 0x00C5: return 0xC5; /*  LATIN CAPITAL LETTER A WITH RING ABOVE */
+  case 0x00C6: return 0xC6; /*  LATIN CAPITAL LIGATURE AE */
+  case 0x012E: return 0xC7; /*  LATIN CAPITAL LETTER I WITH OGONEK */
+  case 0x010C: return 0xC8; /*  LATIN CAPITAL LETTER C WITH CARON */
+  case 0x00C9: return 0xC9; /*  LATIN CAPITAL LETTER E WITH ACUTE */
+  case 0x0118: return 0xCA; /*  LATIN CAPITAL LETTER E WITH OGONEK */
+  case 0x00CB: return 0xCB; /*  LATIN CAPITAL LETTER E WITH DIAERESIS */
+  case 0x0116: return 0xCC; /*  LATIN CAPITAL LETTER E WITH DOT ABOVE */
+  case 0x00CD: return 0xCD; /*  LATIN CAPITAL LETTER I WITH ACUTE */
+  case 0x00CE: return 0xCE; /*  LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
+  case 0x012A: return 0xCF; /*  LATIN CAPITAL LETTER I WITH MACRON */
+  case 0x0110: return 0xD0; /*  LATIN CAPITAL LETTER D WITH STROKE */
+  case 0x0145: return 0xD1; /*  LATIN CAPITAL LETTER N WITH CEDILLA */
+  case 0x014C: return 0xD2; /*  LATIN CAPITAL LETTER O WITH MACRON */
+  case 0x0136: return 0xD3; /*  LATIN CAPITAL LETTER K WITH CEDILLA */
+  case 0x00D4: return 0xD4; /*  LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
+  case 0x00D5: return 0xD5; /*  LATIN CAPITAL LETTER O WITH TILDE */
+  case 0x00D6: return 0xD6; /*  LATIN CAPITAL LETTER O WITH DIAERESIS */
+  case 0x00D7: return 0xD7; /*  MULTIPLICATION SIGN */
+  case 0x00D8: return 0xD8; /*  LATIN CAPITAL LETTER O WITH STROKE */
+  case 0x0172: return 0xD9; /*  LATIN CAPITAL LETTER U WITH OGONEK */
+  case 0x00DA: return 0xDA; /*  LATIN CAPITAL LETTER U WITH ACUTE */
+  case 0x00DB: return 0xDB; /*  LATIN CAPITAL LETTER U WITH CIRCUMFLEX */
+  case 0x00DC: return 0xDC; /*  LATIN CAPITAL LETTER U WITH DIAERESIS */
+  case 0x0168: return 0xDD; /*  LATIN CAPITAL LETTER U WITH TILDE */
+  case 0x016A: return 0xDE; /*  LATIN CAPITAL LETTER U WITH MACRON */
+  case 0x00DF: return 0xDF; /*  LATIN SMALL LETTER SHARP S */
+  case 0x0101: return 0xE0; /*  LATIN SMALL LETTER A WITH MACRON */
+  case 0x00E1: return 0xE1; /*  LATIN SMALL LETTER A WITH ACUTE */
+  case 0x00E2: return 0xE2; /*  LATIN SMALL LETTER A WITH CIRCUMFLEX */
+  case 0x00E3: return 0xE3; /*  LATIN SMALL LETTER A WITH TILDE */
+  case 0x00E4: return 0xE4; /*  LATIN SMALL LETTER A WITH DIAERESIS */
+  case 0x00E5: return 0xE5; /*  LATIN SMALL LETTER A WITH RING ABOVE */
+  case 0x00E6: return 0xE6; /*  LATIN SMALL LIGATURE AE */
+  case 0x012F: return 0xE7; /*  LATIN SMALL LETTER I WITH OGONEK */
+  case 0x010D: return 0xE8; /*  LATIN SMALL LETTER C WITH CARON */
+  case 0x00E9: return 0xE9; /*  LATIN SMALL LETTER E WITH ACUTE */
+  case 0x0119: return 0xEA; /*  LATIN SMALL LETTER E WITH OGONEK */
+  case 0x00EB: return 0xEB; /*  LATIN SMALL LETTER E WITH DIAERESIS */
+  case 0x0117: return 0xEC; /*  LATIN SMALL LETTER E WITH DOT ABOVE */
+  case 0x00ED: return 0xED; /*  LATIN SMALL LETTER I WITH ACUTE */
+  case 0x00EE: return 0xEE; /*  LATIN SMALL LETTER I WITH CIRCUMFLEX */
+  case 0x012B: return 0xEF; /*  LATIN SMALL LETTER I WITH MACRON */
+  case 0x0111: return 0xF0; /*  LATIN SMALL LETTER D WITH STROKE */
+  case 0x0146: return 0xF1; /*  LATIN SMALL LETTER N WITH CEDILLA */
+  case 0x014D: return 0xF2; /*  LATIN SMALL LETTER O WITH MACRON */
+  case 0x0137: return 0xF3; /*  LATIN SMALL LETTER K WITH CEDILLA */
+  case 0x00F4: return 0xF4; /*  LATIN SMALL LETTER O WITH CIRCUMFLEX */
+  case 0x00F5: return 0xF5; /*  LATIN SMALL LETTER O WITH TILDE */
+  case 0x00F6: return 0xF6; /*  LATIN SMALL LETTER O WITH DIAERESIS */
+  case 0x00F7: return 0xF7; /*  DIVISION SIGN */
+  case 0x00F8: return 0xF8; /*  LATIN SMALL LETTER O WITH STROKE */
+  case 0x0173: return 0xF9; /*  LATIN SMALL LETTER U WITH OGONEK */
+  case 0x00FA: return 0xFA; /*  LATIN SMALL LETTER U WITH ACUTE */
+  case 0x00FB: return 0xFB; /*  LATIN SMALL LETTER U WITH CIRCUMFLEX */
+  case 0x00FC: return 0xFC; /*  LATIN SMALL LETTER U WITH DIAERESIS */
+  case 0x0169: return 0xFD; /*  LATIN SMALL LETTER U WITH TILDE */
+  case 0x016B: return 0xFE; /*  LATIN SMALL LETTER U WITH MACRON */
+  case 0x02D9: return 0xFF; /*  DOT ABOVE */
+#endif
+}
+
+static void
+unicode_latin5(
+     char *arg
+)
+{
+  int i;
+  static unsigned int latin5_unicode_map1[] = {
+    0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,  /* 80 */
+    0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,  /* 88 */
+    0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,  /* 90 */
+    0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,  /* 98 */
+  };
+  static unsigned int latin5_unicode_map2[] = {
+    0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,  /* D0 */
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,  /* D8 */
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,  /* E0 direct */
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,  /* E8 direct */
+    0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,  /* F0 */
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,  /* F8 */
+  };
+
+  for(i=0; i<=0x7F; i++)
+    unicode_map[i] = i;
+
+  for(i=0x80; i<=0x9F; i++)
+    unicode_map[i] = latin5_unicode_map1[i-0x80];
+
+  for(i=0xA0; i<=0xCF; i++)
+    unicode_map[i] = i;
+
+  for(i=0xD0; i<=0xFF; i++)
+    unicode_map[i] = latin5_unicode_map2[i-0xD0];
+}
+
+/* a way to select one 256-character plane from Unicode 
+ * or other multi-byte encoding
+ */
+
+static void
+unicode_plane(
+     char *arg
+)
+{
+  static unsigned plane;
+  int nchars;
+  int c1, c2, i;
+
+  if(uni_lang_selected == 0)
+    return; /* don't participate in auto-guessing */
+
+  plane = 0; force_pid = force_eid = -1;
+
+  c1 = sscanf(arg, "pid=%d,eid=%d%n", &force_pid, &force_eid, &nchars);
+  if(c1 == 2) {
+    arg += nchars;
+    if(*arg == ',')
+      arg++;
+  }
+  if(arg[0] == '0' && (arg[1]=='x' || arg[1]=='X') ) {
+    arg += 2;
+    c2 = sscanf(arg, "%x", &plane);
+  } else {
+    c2 = sscanf(arg, "%d", &plane);
+  }
+
+  if( (c1!=2 && c1!=0) || (c1==0 && c2==0) ) {
+    fprintf(stderr, "**** option -l plane expects one of the following formats:\n");
+    fprintf(stderr, "  -l plane+0xNN - select hexadecimal number of plane of Unicode\n");
+    fprintf(stderr, "  -l plane+NN - select decimal number of plane of Unicode\n");
+    fprintf(stderr, "  -l plane+pid=N,eid=N - select plane 0 of specified encoding\n");
+    fprintf(stderr, "  -l plane+pid=N,eid=N,0xNN - select hex plane of TTF encoding with this PID/EID\n");
+    fprintf(stderr, "  -l plane+pid=N,eid=N,NN - select decimal plane of TTF encoding with this PID/EID\n");
+    exit(1);
+  }
+
+  if(c2!=0) {
+    if(strlen(arg) > sizeof(uni_suffix_buf)-2) {
+      fprintf(stderr, "**** plane number is too large\n");
+    }
+
+    sprintf(uni_suffix_buf, "-%s", arg);
+    uni_font_name_suffix = uni_suffix_buf;
+  } else {
+    uni_font_name_suffix = "";
+  }
+
+  plane <<= 8;
+  for(i=0; i<=0xFF; i++)
+    unicode_map[i] = plane | i;
+}
+
+/* look up the 8-bit code by unicode */
+
+int
+unicode_rev_lookup(
+     int unival
+)
+{
+  int res;
+
+  if( ! IS_UNI_BUCKET(unival) )
+    return -1;
+
+  for (res = 0; res < enctabsz; res++)
+    if (unicode_map[res] == unival)
+      return res;
+  return -1;
+}
+
+/* mark the buckets for quick lookup */
+
+static void
+unicode_prepare_buckets(
+  void
+)
+{
+  int i;
+
+  memset(uni_user_buckets, 0, sizeof uni_user_buckets);
+  for(i=0; i<enctabsz; i++) {
+    if(unicode_map[i] != (unsigned) -1)
+      MARK_UNI_BUCKET(unicode_map[i]);
+  }
+}
+
+/*
+ * When we print errors about bad names we want to print these names in
+ * some decent-looking form
+ */
+
+static char *
+nametoprint(
+  unsigned char *s
+)
+{
+  static char res[50];
+  int c, i;
+
+  for(i=0; ( c =* s )!=0 && i<sizeof(res)-8; s++) {
+    if(c < ' ' || c > 126) {
+      sprintf(res+i, "\\x%02X", c);
+      i+=4;
+    } else {
+      res[i++] = c;
+    }
+  }
+  if(*s != 0) {
+    res[i++] = '.';
+    res[i++] = '.';
+    res[i++] = '.';
+  }
+  res[i++] = 0;
+  return res;
+}
+
+/*
+ * Scale the values according to the scale_factor
+ */
+
+double
+fscale(
+      double val
+)
+{
+  return scale_factor * val;
+}
+
+int
+iscale(
+      int val
+)
+{
+  return (int) (val > 0 ? scale_factor * val + 0.5
+          : scale_factor * val - 0.5);
+}
+
+/*
+ * Try to force fixed width of characters
+ */
+
+static void
+alignwidths(void)
+{
+  int             i;
+  int             n = 0, avg, max = 0, min = 3000, sum = 0, x;
+
+  for (i = 0; i < numglyphs; i++) {
+    if (glyph_list[i].flags & GF_USED) {
+      x = glyph_list[i].width;
+
+      if (x != 0) {
+        if (x < min)
+          min = x;
+        if (x > max)
+          max = x;
+
+        sum += x;
+        n++;
+      }
+    }
+  }
+
+  if (n == 0)
+    return;
+
+  avg = sum / n;
+
+  WARNING_3 fprintf(stderr, "widths: max=%d avg=%d min=%d\n", max, avg, min);
+
+  /* if less than 5% variation from average */
+  /* force fixed width */
+  if (20 * (avg - min) < avg && 20 * (max - avg) < avg) {
+    for (i = 0; i < numglyphs; i++) {
+      if (glyph_list[i].flags & GF_USED)
+        glyph_list[i].width = avg;
+    }
+    fontm.is_fixed_pitch = 1;
+  }
+}
+
+static void
+convert_glyf(
+  int  glyphno
+)
+{
+  GLYPH          *g;
+  int ncurves;
+
+  g = &glyph_list[glyphno];
+
+
+  g->scaledwidth = iscale(g->width);
+
+  g->entries = 0;
+  g->lastentry = 0;
+  g->path = 0;
+  if (g->ttf_pathlen != 0) {
+    cursw->glpath(glyphno, glyph_list);
+    g->lastentry = 0;
+
+    if(ISDBG(BUILDG))
+      dumppaths(g, NULL, NULL);
+
+    assertpath(g->entries, __FILE__, __LINE__, g->name);
+
+    fclosepaths(g);
+    assertpath(g->entries, __FILE__, __LINE__, g->name);
+
+    /* float processing */
+    if(smooth) {
+      ffixquadrants(g);
+      assertpath(g->entries, __FILE__, __LINE__, g->name);
+
+      fsplitzigzags(g);
+      assertpath(g->entries, __FILE__, __LINE__, g->name);
+
+      fforceconcise(g);
+      assertpath(g->entries, __FILE__, __LINE__, g->name);
+
+      fstraighten(g);
+      assertpath(g->entries, __FILE__, __LINE__, g->name);
+    }
+
+    pathtoint(g); 
+    /* all processing past this point expects integer path */
+    assertpath(g->entries, __FILE__, __LINE__, g->name);
+
+#if 0
+    fixcontours(g);
+    testfixcvdir(g);
+#endif
+
+    /* int processing */
+    if (smooth) {
+      smoothjoints(g);
+      assertpath(g->entries, __FILE__, __LINE__, g->name);
+    }
+
+    ncurves = 0;
+    {
+      GENTRY *ge;
+      for(ge = g->entries; ge; ge = ge->next)
+        ncurves++;
+    }
+    if (ncurves > 200) {
+      WARNING_3 fprintf(stderr,
+      "** Glyph %s is too long, may display incorrectly\n",
+        g->name);
+    }
+  } else {
+    /* for buildstems */
+    g->flags &= ~GF_FLOAT;
+  }
+}
+
+static void
+handle_gnames(void)
+{
+  int             i, n, found, c, type;
+
+  /* get the names from the font file */
+  ps_fmt_3 = cursw->glnames(glyph_list);
+
+  /* check for names with wrong characters */
+  for (n = 0; n < numglyphs; n++) {
+    int             c;
+    for (i = 0; (c = glyph_list[n].name[i]) != 0; i++) {
+      if (!(isalnum(c) || c == '.' || c == '_' || c == '-') 
+      || i==0 && isdigit(c)) { /* must not start with a digit */
+        WARNING_3 fprintf(stderr, "Glyph %d %s (%s), ",
+          n, isdigit(c) ? "name starts with a digit" : 
+            "has bad characters in name",
+          nametoprint(glyph_list[n].name));
+        glyph_list[n].name = malloc(16);
+        sprintf(glyph_list[n].name, "_b_%d", n);
+        WARNING_3 fprintf(stderr, "changing to %s\n", glyph_list[n].name);
+        break;
+      }
+    }
+  }
+
+  if( !ps_fmt_3 ) {
+    /* check for duplicate names */
+    for (n = 0; n < numglyphs; n++) {
+      found = 0;
+      for (i = 0; i < n && !found; i++) {
+        if (strcmp(glyph_list[i].name, glyph_list[n].name) == 0) {
+          if (( glyph_list[n].name = malloc(16) )==0) {
+            fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+            exit(255);
+          }
+          sprintf(glyph_list[n].name, "_d_%d", n);
+
+          /* if the font has no names in it (what the native parser
+           * recognises as ps_fmt_3), FreeType returns all the 
+           * names as .notdef, so don't complain in this case
+           */
+          if(strcmp(glyph_list[i].name, ".notdef")) {
+            WARNING_3 fprintf(stderr,
+              "Glyph %d has the same name as %d: (%s), changing to %s\n",
+              n, i,
+              glyph_list[i].name,
+              glyph_list[n].name);
+          }
+          found = 1;
+        }
+      }
+    }
+
+  }
+
+  /* start the encoding stuff */
+  for (i = 0; i < ENCTABSZ; i++) {
+    encoding[i] = -1;
+  }
+
+  /* do the 1st round of encoding by name */
+  if(!ps_fmt_3 && uni_lang_selected && uni_lang_selected->convbyname) {
+    for (n = 0; n < numglyphs; n++) {
+      c = uni_lang_selected->convbyname(glyph_list[n].name, 
+        uni_lang_arg, UNICONV_BYNAME_BEFORE);
+      if(c>=0 && c<ENCTABSZ && encoding[c] == -1)
+        encoding[c] = n;
+    }
+  }
+
+  /* now do the encoding by table */
+  if(uni_lang_selected) {
+    for(i=0; i < MAXUNITABLES && uni_lang_selected->init[i]; i++) {
+      for (n = 0; n < ENCTABSZ; n++)
+        unicode_map[n] = -1;
+      uni_lang_selected->init[i](uni_lang_arg);
+      unicode_prepare_buckets();
+      type = cursw->glenc(glyph_list, encoding, unicode_map);
+      if( type == 0 )
+        /* if we have an 8-bit encoding we don't need more tries */
+        break;
+    }
+  } else {
+    /* language is unknown, try the first table of each */
+    for(i=0; i < sizeof uni_lang/(sizeof uni_lang[0]); i++) {
+      if(uni_lang[i].init[0] == NULL)
+        continue;
+      for (n = 0; n < ENCTABSZ; n++)
+        unicode_map[n] = -1;
+      uni_lang[i].init[0](uni_lang_arg);
+      unicode_prepare_buckets();
+      type = cursw->glenc(glyph_list, encoding, unicode_map);
+      if( type == 0 )
+        /* if we have an 8-bit encoding we don't need more tries */
+        break;
+    }
+  }
+
+  if (ps_fmt_3) {
+    /* get rid of the old names, they are all "UNKNOWN" anyawy */
+    for (i = 0; i < numglyphs; i++) {
+      glyph_list[i].name = 0;
+    }
+    if(type == 0) { 
+      /* 8-bit - give 8859/1 names to the first 256 glyphs */
+      for (i = 0; i < 256; i++) { /* here 256, not ENCTABSZ */
+        if (encoding[i] > 0) {
+          glyph_list[encoding[i]].name = Fmt3Encoding[i];
+        }
+      }
+    } else if(type == 1) {
+      /* Unicode - give 8859/1 names to the first 256 glyphs of Unicode */
+      for (n = 0; n < 256; n++) { /* here 256, not ENCTABSZ */
+        i = unicode_rev_lookup(n);
+        if (i>=0 && encoding[i] > 0) {
+          glyph_list[encoding[i]].name = Fmt3Encoding[i];
+        }
+      }
+    } /* for other types of encodings just give generated names */
+    /* assign unique names to the rest of the glyphs */
+    for (i = 0; i < numglyphs; i++) {
+      if (glyph_list[i].name == 0) {
+        if (( glyph_list[i].name = malloc(16) )==0) {
+          fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+          exit(255);
+        }
+        sprintf(glyph_list[i].name, "_d_%d", i);
+      }
+    }
+  }
+
+  /* do the 2nd round of encoding by name */
+  if(uni_lang_selected && uni_lang_selected->convbyname) {
+    for (n = 0; n < numglyphs; n++) {
+      c = uni_lang_selected->convbyname(glyph_list[n].name, 
+        uni_lang_arg, UNICONV_BYNAME_AFTER);
+      if(c>=0 && c<ENCTABSZ && encoding[c] == -1)
+        encoding[c] = n;
+    }
+  }
+  /* all the encoding things are done */
+
+  for (i = 0; i < ENCTABSZ; i++)
+    if(encoding[i] == -1) {
+      /* check whether this character might be a duplicate 
+       * (in which case it would be missed by unicode_rev_lookup())
+       */
+      c = unicode_map[i];
+      if((type != 0 || forcemap) && c != -1) {
+        for(n = 0; n < i; n++) {
+          if(unicode_map[n] == c) {
+            encoding[i] = encoding[n];
+          }
+        }
+      }
+      if(encoding[i] == -1) /* still not found, defaults to .notdef */
+        encoding[i] = 0;
+    }
+
+  for (i = 0; i < 256; i++) /* here 256, not ENCTABSZ */
+    glyph_list[encoding[i]].char_no = i;
+
+  /* enforce two special cases defined in TTF manual */
+  if(numglyphs > 0)
+    glyph_list[0].name = ".notdef";
+  if(numglyphs > 1)
+    glyph_list[1].name = ".null";
+
+   for (i = 0; i < ENCTABSZ; i++) {
+     if ((encoding[i] != 0) && glyph_rename[i]) {
+         glyph_list[encoding[i]].name = glyph_rename[i];
+     }
+   }
+   
+}
+
+/* duplicate a string with counter to a 0-terminated string,
+ * and by the way filter out the characters that won't look good
+ * in the Postscript strings or comments; limit the length
+ * to a reasonable amount.
+ */
+
+char *
+dupcnstring(
+  unsigned char *s,
+  int len
+)
+{
+  char *res, *out;
+  int i, c;
+  static int warned=0;
+
+  if(len > 255) {
+    WARNING_1 fprintf(stderr, "Some font name strings are longer than 255 characters, cut down\n");
+    len = 255;
+  }
+
+  if(( res = malloc(len+1) )==NULL) {
+    fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+    exit(255);
+  }
+
+  out = res;
+  for(i=0; i<len; i++) {
+    c = s[i];
+    if( c>=' ' && c!=127) {
+      /* translate the inconvenient chacracters */
+      if( c== '(' )
+        c = '[';
+      else if( c== ')' )
+        c = ']';
+      *out++ = c;
+    } else if( c=='\n' || c=='\r' ) {
+      WARNING_1 fprintf(stderr, "Some font name strings contain end of line or Unicode, cut down\n");
+      *out = 0;
+      return res;
+    } else if(!warned) {
+      warned=1;
+      WARNING_1 fprintf(stderr, "Some font name strings are in Unicode, may not show properly\n");
+    }
+  }
+  *out = 0;
+  return res;
+}
+
+static void
+usage(void)
+{
+
+#ifdef _GNU_SOURCE
+#  define fplop(txt)  fputs(txt, stderr);
+#else
+#  define fplop(txt)
+#endif
+
+  fputs("Use:\n", stderr);
+  fputs("ttf2pt1 [-<opts>] [-l language | -L file] <ttf-file> [<fontname>]\n", stderr);
+  fputs("  or\n", stderr);
+  fputs("ttf2pt1 [-<opts>] [-l language | -L file] <ttf-file> -\n", stderr);
+  fputs("  or\n", stderr);
+  fputs("ttf2pt1 [-<opts>] [-l language | -L file] <ttf-file> - | t1asm > <pfa-file>\n", stderr);
+
+  fplop("\n");
+  fplop("This build supports both short and long option names,\n");
+  fplop("the long options are listed before corresponding short ones\n");
+
+  fplop(" --all-glyphs\n");
+  fputs("  -a - include all glyphs, even those not in the encoding table\n", stderr);
+  fplop(" --pfb\n");
+  fputs("  -b - produce a compressed .pfb file\n", stderr);
+  fplop(" --debug dbg_suboptions\n");
+  fputs("  -d dbg_suboptions - debugging options, run ttf2pt1 -d? for help\n", stderr);
+  fplop(" --encode\n");
+  fputs("  -e - produce a fully encoded .pfa file\n", stderr);
+  fplop(" --force-unicode\n");
+  fputs("  -F - force use of Unicode encoding even if other MS encoding detected\n", stderr); 
+  fplop(" --generate suboptions\n");
+  fputs("  -G suboptions - control the file generation, run ttf2pt1 -G? for help\n", stderr);
+  fplop(" --language language\n");
+  fputs("  -l language - convert Unicode to specified language, run ttf2pt1 -l? for list\n", stderr);
+  fplop(" --language-map file\n");
+  fputs("  -L file - convert Unicode according to encoding description file\n", stderr);
+  fplop(" --limit <type>=<value>\n");
+  fputs("  -m <type>=<value> - set maximal limit of given type to value, types:\n", stderr);
+  fputs("      h - maximal hint stack depth in the PostScript interpreter\n", stderr);
+  fplop(" --processing suboptions\n");
+  fputs("  -O suboptions - control outline processing, run ttf2pt1 -O? for help\n", stderr);
+  fplop(" --parser name\n");
+  fputs("  -p name - use specific front-end parser, run ttf2pt1 -p? for list\n", stderr);
+  fplop(" --uid id\n");
+  fputs("  -u id - use this UniqueID, -u A means autogeneration\n", stderr);
+  fplop(" --vertical-autoscale size\n");
+  fputs("  -v size - scale the font to make uppercase letters >size/1000 high\n", stderr);
+  fplop(" --version\n");
+  fputs("  -V - print ttf2pt1 version number\n", stderr);
+  fplop(" --warning number\n");
+  fputs("  -W number - set the level of permitted warnings (0 - disable)\n", stderr);
+  fputs("Obsolete options (will be removed in future releases):\n", stderr);
+  fplop(" --afm\n");
+  fputs("  -A - write the .afm file to STDOUT instead of the font, now -GA\n", stderr);
+  fputs("  -f - don't try to guess the value of the ForceBold hint, now -Ob\n", stderr);
+  fputs("  -h - disable autogeneration of hints, now -Oh\n", stderr);
+  fputs("  -H - disable hint substitution, now -Ou\n", stderr);
+  fputs("  -o - disable outline optimization, now -Oo\n", stderr);
+  fputs("  -s - disable outline smoothing, now -Os\n", stderr);
+  fputs("  -t - disable auto-scaling to 1000x1000 standard matrix, now -Ot\n", stderr);
+  fputs("  -w - correct the glyph widths (use only for buggy fonts), now -OW\n", stderr);
+  fputs("With no <fontname>, write to <ttf-file> with suffix replaced.\n", stderr);
+  fputs("The last '-' means 'use STDOUT'.\n", stderr);
+
+#undef fplop
+
+}
+
+static void
+printversion(void)
+{
+  fprintf(stderr, "ttf2pt1 %s\n", TTF2PT1_VERSION);
+}
+
+/* initialize a table of suboptions */
+static void
+init_subo_tbl(
+  struct subo_case *tbl
+)
+{
+  int i;
+
+  for(i=0; tbl[i].disbl != 0; i++) {
+    tbl[i].disbl = tolower(tbl[i].disbl);
+    tbl[i].enbl = toupper(tbl[i].disbl);
+    *(tbl[i].valp) = tbl[i].dflt;
+  }
+}
+  
+/* print the default value of the suboptions */
+static void
+print_subo_dflt(
+  FILE *f,
+  struct subo_case *tbl
+)
+{
+  int i;
+
+  for(i=0; tbl[i].disbl != 0; i++) {
+    if(tbl[i].dflt)
+      putc(tbl[i].enbl, f);
+    else
+      putc(tbl[i].disbl, f);
+  }
+}
+  
+/* print the usage message for the suboptions */
+static void
+print_subo_usage(
+  FILE *f,
+  struct subo_case *tbl
+)
+{
+  int i;
+
+  fprintf(f,"The lowercase suboptions disable features, corresponding\n");
+  fprintf(f,"uppercase suboptions enable them. The supported suboptions,\n");
+  fprintf(f,"their default states and the features they control are:\n");
+  for(i=0; tbl[i].disbl != 0; i++) {
+    fprintf(f,"   %c/%c - [%s] %s\n", tbl[i].disbl, tbl[i].enbl,
+      tbl[i].dflt ? "enabled" : "disabled", tbl[i].descr);
+  }
+}
+
+/* find and set the entry according to suboption,
+ * return the found entry (or if not found return NULL)
+ */
+struct subo_case *
+set_subo(
+  struct subo_case *tbl,
+  int subopt
+)
+{
+  int i;
+
+  for(i=0; tbl[i].disbl != 0; i++) {
+    if(subopt == tbl[i].disbl) {
+      *(tbl[i].valp) = 0;
+      return &tbl[i];
+    } else if(subopt == tbl[i].enbl) {
+      *(tbl[i].valp) = 1;
+      return &tbl[i];
+    } 
+  }
+  return NULL;
+}
+
+  
+int
+main(
+     int argc,
+     char **argv
+)
+{
+  int             i, j;
+  time_t          now;
+  char            filename[4096];
+  int             c,nchars,nmetrics;
+  int             ws;
+  int             forcebold= -1; /* -1 means "don't know" */
+  char           *lang;
+  int             oc;
+  int             subid;
+  char           *cmdline;
+#ifdef _GNU_SOURCE
+#  define ttf2pt1_getopt(a, b, c, d, e)  getopt_long(a, b, c, d, e)
+  static struct option longopts[] = {
+    { "afm", 0, NULL, 'A' },
+    { "all-glyphs", 0, NULL, 'a' },
+    { "pfb", 0, NULL, 'b' },
+    { "debug", 1, NULL, 'd' },
+    { "encode", 0, NULL, 'e' },
+    { "force-unicode", 0, NULL, 'F' },
+    { "generate", 1, NULL, 'G' },
+    { "language", 1, NULL, 'l' },
+    { "language-map", 1, NULL, 'L' },
+    { "limit", 1, NULL, 'm' },
+    { "processing", 1, NULL, 'O' },
+    { "parser", 1, NULL, 'p' },
+    { "uid", 1, NULL, 'u' },
+    { "vertical-autoscale", 1, NULL, 'v' },
+    { "version", 0, NULL, 'V' },
+    { "warning", 1, NULL, 'W' },
+    { NULL, 0, NULL, 0 }
+  };
+#else
+#  define ttf2pt1_getopt(a, b, c, d, e)  getopt(a, b, c)
+#endif
+  /* table of Outline Processing (may think also as Optimization) options */
+  static struct subo_case opotbl[] = {
+    { 'b', 0/*auto-set*/, &trybold, 1, "guessing of the ForceBold hint" },
+    { 'h', 0/*auto-set*/, &hints, 1, "autogeneration of hints" },
+    { 'u', 0/*auto-set*/, &subhints, 1, "hint substitution technique" },
+    { 'o', 0/*auto-set*/, &optimize, 1, "space optimization of font files" },
+    { 's', 0/*auto-set*/, &smooth, 1, "smoothing and repair of outlines" },
+    { 't', 0/*auto-set*/, &transform, 1, "auto-scaling to the standard matrix 1000x1000" },
+    { 'w', 0/*auto-set*/, &correctwidth, 0, "correct the glyph widths (use only for buggy fonts)" },
+    { 'v', 0/*auto-set*/, &vectorize, 0, "vectorize (trace) the bitmaps" },
+#ifdef USE_AUTOTRACE
+    { 'z', 0/*auto-set*/, &use_autotrace, 0, "use the autotrace library on bitmaps (works badly)" },
+#endif /*USE_AUTOTRACE*/
+    { 0, 0, 0, 0, 0} /* terminator */
+  };
+  /* table of the File Generation options */
+  static struct subo_case fgotbl[] = {
+    { 'f', 0/*auto-set*/, &gen_pfa, 1, "generate the font file (.t1a, .pfa or .pfb)" },
+    { 'a', 0/*auto-set*/, &gen_afm, 1, "generate the Adobe metrics file (.afm)" },
+    { 'u', 0/*auto-set*/, &gen_ufm, 1, "generate the Unicode metrics file (.ufm)" },
+    { 'e', 0/*auto-set*/, &gen_dvienc, 0, "generate the dvips encoding file (.enc)" },
+    { 0, 0, 0, 0, 0} /* terminator */
+  };
+  int *genlast = NULL;
+
+
+  init_subo_tbl(opotbl); /* initialize sub-options of -O */
+  init_subo_tbl(fgotbl); /* initialize sub-options of -G */
+
+  /* save the command line for the record 
+   * (we don't bother about escaping the shell special characters)
+   */
+
+  j = 0;
+  for(i=1; i<argc; i++) {
+    j += strlen(argv[i])+1;
+  }
+  if ((cmdline = malloc(j+1)) == NULL) {
+    fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+    exit(255);
+  }
+  cmdline[0] = 0;
+  for(i=1; i<argc; i++) {
+    strcat(cmdline, argv[i]);
+    strcat(cmdline, " ");
+  }
+  for(i=0; (j=cmdline[i])!=0; i++)
+    if(j == '\n')
+      cmdline[i] = ' ';
+
+
+  while(( oc=ttf2pt1_getopt(argc, argv, "FaoebAsthHfwVv:p:l:d:u:L:m:W:O:G:",
+      longopts, NULL) )!= -1) {
+    switch(oc) {
+    case 'W':
+      if(sscanf(optarg, "%d", &warnlevel) < 1 || warnlevel < 0) {
+        fprintf(stderr, "**** warning level must be a positive number\n");
+        exit(1);
+      }
+      break;
+    case 'F':
+      forcemap = 1;
+      break;
+    case 'o':
+      fputs("Warning: option -o is obsolete, use -Oo instead\n", stderr);
+      optimize = 0;
+      break;
+    case 'e':
+      encode = 1;
+      break;
+    case 'b':
+      encode = pfbflag = 1;
+      break;
+    case 'A':
+      fputs("Warning: option -A is obsolete, use -GA instead\n", stderr);
+      wantafm = 1;
+      break;
+    case 'a':
+      allglyphs = 1;
+      break;
+    case 's':
+      fputs("Warning: option -s is obsolete, use -Os instead\n", stderr);
+      smooth = 0;
+      break;
+    case 't':
+      fputs("Warning: option -t is obsolete, use -Ot instead\n", stderr);
+      transform = 0;
+      break;
+    case 'd':
+      for(i=0; optarg[i]!=0; i++)
+        switch(optarg[i]) {
+        case 'a':
+          absolute = 1;
+          break;
+        case 'r':
+          reverse = 0;
+          break;
+        default:
+          if (optarg[i] != '?')
+            fprintf(stderr, "**** Unknown debugging option '%c' ****\n", optarg[i]);
+          fputs("The recognized debugging options are:\n", stderr);
+          fputs("  a - enable absolute coordinates\n", stderr);
+          fputs("  r - do not reverse font outlines directions\n", stderr);
+          exit(1);
+          break;
+        };
+      break;
+    case 'm':
+    {
+      char subopt;
+      int val;
+
+      if(sscanf(optarg, "%c=%d", &subopt, &val) !=2) {
+        fprintf(stderr, "**** Misformatted maximal limit ****\n");
+        fprintf(stderr, "spaces around the equal sign are not allowed\n");
+        fprintf(stderr, "good examples: -mh=100 -m h=100\n");
+        fprintf(stderr, "bad examples: -mh = 100 -mh= 100\n");
+        exit(1);
+        break;
+      }
+      switch(subopt) {
+      case 'h':
+        max_stemdepth = val;
+        break;
+      default:
+        if (subopt != '?')
+          fprintf(stderr, "**** Unknown limit type '%c' ****\n", subopt);
+        fputs("The recognized limit types are:\n", stderr);
+        fputs("  h - maximal hint stack depth in the PostScript interpreter\n", stderr);
+        exit(1);
+        break;
+      }
+      break;
+    }
+    case 'O':
+    {
+      char *p;
+      for(p=optarg; *p != 0; p++) {
+        if(set_subo(opotbl, *p) == NULL) { /* found no match */
+          if (*p != '?')
+            fprintf(stderr, "**** Unknown outline processing suboption '%c' ****\n", *p);
+          fprintf(stderr,"The general form of the outline processing option is:\n");
+          fprintf(stderr,"   -O suboptions\n");
+          fprintf(stderr,"(To remember easily -O may be also thought of as \"optimization\").\n");
+          print_subo_usage(stderr, opotbl);
+          fprintf(stderr, "The default state corresponds to the option -O ");
+          print_subo_dflt(stderr, opotbl);
+          fprintf(stderr, "\n");
+          exit(1);
+        }
+      }
+      break;
+    }
+    case 'G':
+    {
+      char *p;
+      struct subo_case *s;
+
+      for(p=optarg; *p != 0; p++) {
+        if(( s = set_subo(fgotbl, *p) )==NULL) { /* found no match */
+          if (*p != '?')
+            fprintf(stderr, "**** Unknown outline processing suboption '%c' ****\n", *p);
+          fprintf(stderr,"The general form of the file generation option is:\n");
+          fprintf(stderr,"   -G suboptions\n");
+          print_subo_usage(stderr, fgotbl);
+          fprintf(stderr, "The default state corresponds to the option -G ");
+          print_subo_dflt(stderr, fgotbl);
+          fprintf(stderr, "\n");
+          fprintf(stderr, "If the result is written to STDOUT, the last specified enabling suboption of -G\n");
+          fprintf(stderr, "selects the file to be written to STDOUT (the font file by default).\n");
+          exit(1);
+        }
+        if( *(s->valp) )
+          genlast = s->valp;
+      }
+      break;
+    }
+    case 'h':
+      fputs("Warning: option -h is obsolete, use -Oh instead\n", stderr);
+      hints = 0;
+      break;
+    case 'H':
+      fputs("Warning: meaning of option -H has been changed to its opposite\n", stderr);
+      fputs("Warning: option -H is obsolete, use -Ou instead\n", stderr);
+      subhints = 0;
+      break;
+    case 'f':
+      fputs("Warning: option -f is obsolete, use -Ob instead\n", stderr);
+      trybold = 0;
+      break;
+    case 'w':
+      fputs("Warning: option -w is obsolete, use -OW instead\n", stderr);
+      correctwidth = 1;
+      break;
+    case 'u':
+      if(wantuid) {
+        fprintf(stderr, "**** UniqueID may be specified only once ****\n");
+        exit(1);
+      }
+      wantuid = 1; 
+      if(optarg[0]=='A' && optarg[1]==0)
+        strUID=0; /* will be generated automatically */
+      else {
+        strUID=optarg;
+        for(i=0; optarg[i]!=0; i++)
+          if( !isdigit(optarg[i]) ) {
+            fprintf(stderr, "**** UniqueID must be numeric or A for automatic ****\n");
+            exit(1);
+          }
+      }
+      break;
+    case 'v':
+      correctvsize = atoi(optarg);
+      if(correctvsize <= 0 && correctvsize > 1000) {
+        fprintf(stderr, "**** wrong vsize '%d', ignored ****\n", correctvsize);
+        correctvsize=0;
+      }
+      break;
+    case 'p':
+      if(cursw!=0) {
+        fprintf(stderr, "**** only one front-end parser be used ****\n");
+        exit(1);
+      }
+
+      { /* separate parser from parser-specific argument */
+        char *p = strchr(optarg, LANG_ARG_SEP);
+        if(p != 0) {
+          *p = 0;
+          front_arg = p+1;
+        } else
+          front_arg = "";
+      }
+      for(i=0; frontswtab[i] != NULL; i++)
+        if( !strcmp(frontswtab[i]->name, optarg) ) {
+          cursw = frontswtab[i];
+          break;
+        }
+
+      if(cursw==0) {
+        if (strcmp(optarg, "?"))
+          fprintf(stderr, "**** unknown front-end parser '%s' ****\n", optarg);
+        fputs("the following front-ends are supported now:\n", stderr);
+        for(i=0; frontswtab[i] != NULL; i++) {
+          fprintf(stderr,"  %s (%s)\n   file suffixes: ", 
+            frontswtab[i]->name,
+            frontswtab[i]->descr ? frontswtab[i]->descr : "no description"
+          );
+          for(j=0; j<MAXSUFFIX; j++)
+            if(frontswtab[i]->suffix[j])
+              fprintf(stderr, "%s ", frontswtab[i]->suffix[j]);
+          fprintf(stderr, "\n");
+        }
+        exit(1);
+      }
+      break;
+    case 'l':
+      if(uni_lang_selected!=0) {
+        fprintf(stderr, "**** only one language option may be used ****\n");
+        exit(1);
+      }
+
+      { /* separate language from language-specific argument */
+        char *p = strchr(optarg, LANG_ARG_SEP);
+        if(p != 0) {
+          *p = 0;
+          uni_lang_arg = p+1;
+        } else
+          uni_lang_arg = "";
+      }
+      for(i=0; i < sizeof uni_lang/(sizeof uni_lang[0]); i++)
+        if( !strcmp(uni_lang[i].name, optarg) ) {
+          uni_lang_selected = &uni_lang[i];
+          uni_sample = uni_lang[i].sample_upper;
+          break;
+        }
+
+      if(uni_lang_selected==0) {
+        if (strcmp(optarg, "?"))
+          fprintf(stderr, "**** unknown language '%s' ****\n", optarg);
+        fputs("       the following languages are supported now:\n", stderr);
+        for(i=0; i < sizeof uni_lang/(sizeof uni_lang[0]); i++)
+          fprintf(stderr,"         %s (%s)\n", 
+            uni_lang[i].name,
+            uni_lang[i].descr ? uni_lang[i].descr : "no description"
+          );
+        exit(1);
+      }
+      break;
+    case 'L':
+      if(uni_lang_selected!=0) {
+        fprintf(stderr, "**** only one language option may be used ****\n");
+        exit(1);
+      }
+      uni_lang_selected = &uni_lang_user;
+      uni_lang_arg = optarg;
+      break;
+    case 'V':
+      printversion();
+      exit(0);
+      break;
+    default:
+      usage();
+      exit(1);
+      break;
+    }
+  }
+  argc-=optind-1; /* the rest of code counts from argv[0] */
+  argv+=optind-1;
+
+  if (absolute && encode) {
+    fprintf(stderr, "**** options -a and -e are incompatible ****\n");
+    exit(1);
+  }
+        if ((argc != 2) && (argc != 3)) {
+    usage();
+    exit(1);
+  }
+
+  /* try to guess the language by the locale used */
+  if(uni_lang_selected==0 && (lang=getenv("LANG"))!=0 ) {
+    for(i=0; i < sizeof uni_lang/sizeof(struct uni_language); i++) {
+      if( !strncmp(uni_lang[i].name, lang, strlen(uni_lang[i].name)) ) {
+        uni_lang_selected = &uni_lang[i];
+        goto got_a_language;
+      }
+    }
+    /* no full name ? try aliases */
+    for(i=0; i < sizeof uni_lang/sizeof(struct uni_language); i++) {
+      for(c=0; c<MAXUNIALIAS; c++)
+        if( uni_lang[i].alias[c]!=0
+        && !strncmp(uni_lang[i].alias[c], lang, strlen(uni_lang[i].alias[c])) ) {
+          uni_lang_selected = &uni_lang[i];
+          goto got_a_language;
+        }
+    }
+  got_a_language:
+    if(uni_lang_selected!=0) {
+      WARNING_1 fprintf(stderr, "Using language '%s' for Unicode fonts\n", uni_lang[i].name);
+      uni_sample = uni_lang[i].sample_upper;
+    }
+  }
+
+  /* try to guess the front-end parser by the file name suffix */
+  if(cursw==0) {
+    char *p = strrchr(argv[1], '.');
+    char *s;
+
+    if(p!=0 && (s = strdup(p+1))!=0) {
+      for(p=s; *p; p++)
+        *p = tolower(*p);
+      p = s;
+
+      for(i=0; frontswtab[i] != 0 && cursw == 0; i++) {
+        for(j=0; j<MAXSUFFIX; j++)
+          if(frontswtab[i]->suffix[j]
+          && !strcmp(p, frontswtab[i]->suffix[j]) ) {
+            cursw = frontswtab[i];
+            WARNING_1 fprintf(stderr, "Auto-detected front-end parser '%s'\n",
+              cursw->name);
+            WARNING_1 fprintf(stderr, " (use ttf2pt1 -p? to get the full list of available front-ends)\n");
+            break;
+          }
+      }
+      free(s);
+    }
+
+    if(cursw==0) {
+      cursw = frontswtab[0];
+      WARNING_1 fprintf(stderr, "Can't detect front-end parser, using '%s' by default\n", 
+        cursw->name);
+      WARNING_1 fprintf(stderr, " (use ttf2pt1 -p? to get the full list of available front-ends)\n");
+    }
+  }
+
+  /* open the input file */
+  cursw->open(argv[1], front_arg);
+
+  /* Get base name of output file (if not specified)
+   * by removing (known) suffixes
+   */
+  if (argc == 2) {
+    char *p;
+    argv[2] = strdup (argv[1]);
+    p = strrchr(argv[2], '.');
+    if (p != NULL)
+      for (j = 0; (j < MAXSUFFIX) && (cursw->suffix[j]); j++)
+        if (!strcmp(p+1, cursw->suffix[j])) {
+          *p = '\0';
+          break;
+        }
+  }
+
+  if ((null_file = fopen(BITBUCKET, "w")) == NULL) {
+    fprintf(stderr, "**** Cannot open %s ****\n",
+      BITBUCKET);
+    exit(1);
+  }
+
+  if (argv[2][0] == '-' && argv[2][1] == 0) {
+#ifdef WINDOWS
+    if(encode) {
+      fprintf(stderr, "**** can't write encoded file to stdout ***\n");
+      exit(1);
+    }
+#endif /* WINDOWS */
+    pfa_file = ufm_file = afm_file = dvienc_file = null_file;
+
+    if(wantafm || genlast == &gen_afm) { /* print .afm instead of .pfa */
+      afm_file=stdout;
+    } else if(genlast == &gen_dvienc) { /* print .enc instead of .pfa */
+      dvienc_file=stdout;
+    } else {
+      pfa_file=stdout;
+    }
+  } else {
+#ifndef WINDOWS
+    snprintf(filename, sizeof filename, "%s.%s", argv[2], encode ? (pfbflag ? "pfb" : "pfa") : "t1a" );
+#else /* WINDOWS */
+    snprintf(filename, sizeof filename, "%s.t1a", argv[2]);
+#endif /* WINDOWS */
+    if(gen_pfa) {
+      if ((pfa_file = fopen(filename, "w+b")) == NULL) {
+        fprintf(stderr, "**** Cannot create %s ****\n", filename);
+        exit(1);
+      } else {
+        WARNING_2 fprintf(stderr, "Creating file %s\n", filename);
+      }
+    } else
+      pfa_file = null_file;
+
+    if(gen_ufm) {
+      snprintf(filename, sizeof filename, "%s.ufm", argv[2]) ;
+      if ((ufm_file = fopen(filename, "w+")) == NULL) {
+        fprintf(stderr, "**** Cannot create %s ****\n", filename);
+        exit(1);
+      }
+    } else
+      ufm_file = null_file;
+
+    if(gen_afm) {
+      snprintf(filename, sizeof filename, "%s.afm", argv[2]) ;
+      if ((afm_file = fopen(filename, "w+")) == NULL) {
+        fprintf(stderr, "**** Cannot create %s ****\n", filename);
+        exit(1);
+      }
+    } else
+      afm_file = null_file;
+
+    if(gen_dvienc) {
+      snprintf(filename, sizeof filename, "%s.enc", argv[2]) ;
+      if ((dvienc_file = fopen(filename, "w+")) == NULL) {
+        fprintf(stderr, "**** Cannot create %s ****\n", filename);
+        exit(1);
+      }
+    } else
+      dvienc_file = null_file;
+  }
+
+  /*
+   * Now check whether we want a fully encoded .pfa file
+   */
+#ifndef WINDOWS
+  if (encode && pfa_file != null_file) {
+    int             p[2];
+    extern FILE    *ifp, *ofp;  /* from t1asm.c */
+
+    ifp=stdin;
+    ofp=stdout;
+
+    if (pipe(p) < 0) {
+      perror("**** Cannot create pipe ****\n");
+      exit(1);
+    }
+    ofp = pfa_file;
+    ifp = fdopen(p[0], "r");
+    if (ifp == NULL) {
+      perror("**** Cannot use pipe for reading ****\n");
+      exit(1);
+    }
+    pfa_file = fdopen(p[1], "w");
+    if (pfa_file == NULL) {
+      perror("**** Cannot use pipe for writing ****\n");
+      exit(1);
+    }
+    switch (fork()) {
+    case -1:
+      perror("**** Cannot fork the assembler process ****\n");
+      exit(1);
+    case 0:  /* child */
+      fclose(pfa_file);
+      exit(runt1asm(pfbflag));
+    default: /* parent */
+      fclose(ifp); fclose(ofp);
+    }
+  }
+#endif /* WINDOWS */
+
+  numglyphs = cursw->nglyphs();
+
+  WARNING_3 fprintf(stderr, "numglyphs = %d\n", numglyphs);
+
+  glyph_list = (GLYPH *) calloc(numglyphs,  sizeof(GLYPH));
+
+  /* initialize non-0 fields */
+  for (i = 0; i < numglyphs; i++) {
+    int j;
+    GLYPH *g;
+
+    g = &glyph_list[i];
+    g->char_no = -1;
+    for (j = 0; j < GLYPH_MAX_ENCODINGS; j++ ) {
+      g->orig_code[j] = -1;
+    }
+    g->name = "UNKNOWN";
+    g->flags = GF_FLOAT; /* we start with float representation */
+  }
+
+  handle_gnames();
+
+  cursw->glmetrics(glyph_list);
+  cursw->fnmetrics(&fontm);
+ 
+  original_scale_factor = 1000.0 / (double) fontm.units_per_em;
+
+  if(transform == 0)
+    scale_factor = 1.0; /* don't transform */
+  else
+    scale_factor = original_scale_factor;
+
+  if(correctvsize && uni_sample!=0) { /* only for known languages */
+    /* try to adjust the scale factor to make a typical
+     * uppercase character of hight at least (correctvsize), this
+     * may improve the appearance of the font but also
+     * make it weird, use with caution
+     */
+    int ysz;
+
+    ysz = iscale(glyph_list[encoding[uni_sample]].yMax);
+    if( ysz<correctvsize ) {
+      scale_factor *= (double)correctvsize / ysz;
+    }
+  }
+
+  if(allglyphs) {
+    for (i = 0; i < numglyphs; i++) {
+      glyph_list[i].flags |= GF_USED;
+    }
+  } else {
+    for (i = 0; i < ENCTABSZ; i++) {
+      glyph_list[encoding[i]].flags |= GF_USED;
+    }
+
+    /* also always include .notdef */
+    for (i = 0; i < numglyphs; i++) 
+      if(!strcmp(glyph_list[i].name, ".notdef")) {
+        glyph_list[i].flags |= GF_USED;
+        break;
+      }
+  }
+
+  for (i = 0; i < numglyphs; i++) {
+    if (glyph_list[i].flags & GF_USED) {
+      DBG_TO_GLYPH(&glyph_list[i]);
+      convert_glyf(i);
+      DBG_FROM_GLYPH(&glyph_list[i]);
+    }
+  }
+
+  italic_angle = fontm.italic_angle;
+
+  if (italic_angle > 45.0 || italic_angle < -45.0)
+    italic_angle = 0.0;  /* consider buggy */
+
+  if (hints) {
+    findblues();
+    for (i = 0; i < numglyphs; i++) {
+      if (glyph_list[i].flags & GF_USED) {
+        DBG_TO_GLYPH(&glyph_list[i]);
+        buildstems(&glyph_list[i]);
+        assertpath(glyph_list[i].entries, __FILE__, __LINE__, glyph_list[i].name);
+        DBG_FROM_GLYPH(&glyph_list[i]);
+      }
+    }
+    stemstatistics();
+  } else {
+    for(i=0; i<4; i++)
+      bbox[i] = iscale(fontm.bbox[i]);
+  }
+  /* don't touch the width of fixed width fonts */
+  if( fontm.is_fixed_pitch )
+    correctwidth=0;
+  docorrectwidth(); /* checks correctwidth inside */
+  if (reverse)
+    for (i = 0; i < numglyphs; i++) {
+      if (glyph_list[i].flags & GF_USED) {
+        DBG_TO_GLYPH(&glyph_list[i]);
+        reversepaths(&glyph_list[i]);
+        assertpath(glyph_list[i].entries, __FILE__, __LINE__, glyph_list[i].name);
+        DBG_FROM_GLYPH(&glyph_list[i]);
+      }
+    }
+
+
+#if 0
+  /*
+  ** It seems to bring troubles. The problem is that some
+  ** styles of the font may be recognized as fixed-width
+  ** while other styles of the same font as proportional.
+  ** So it's better to be commented out yet.
+  */
+  if (tryfixed) 
+    alignwidths();
+#endif
+
+  if(trybold) {
+    forcebold = fontm.force_bold;
+  }
+
+  fprintf(pfa_file, "%%!PS-AdobeFont-1.0: %s %s\n", fontm.name_ps, fontm.name_copyright);
+  time(&now);
+  fprintf(pfa_file, "%%%%CreationDate: %s", ctime(&now));
+  fprintf(pfa_file, "%% Converted by ttf2pt1 %s/%s\n", TTF2PT1_VERSION, cursw->name);
+  fprintf(pfa_file, "%% Args: %s\n", cmdline);
+  fprintf(pfa_file, "%%%%EndComments\n");
+  fprintf(pfa_file, "12 dict begin\n/FontInfo 9 dict dup begin\n");
+
+  WARNING_3 fprintf(stderr, "FontName %s%s\n", fontm.name_ps, uni_font_name_suffix);
+
+
+  fprintf(pfa_file, "/version (%s) readonly def\n", fontm.name_version);
+
+  fprintf(pfa_file, "/Notice (%s) readonly def\n", fontm.name_copyright);
+
+  fprintf(pfa_file, "/FullName (%s) readonly def\n", fontm.name_full);
+  fprintf(pfa_file, "/FamilyName (%s) readonly def\n", fontm.name_family);
+
+  if(wantuid) {
+    if(strUID)
+      fprintf(pfa_file, "/UniqueID %s def\n", strUID);
+    else {
+      numUID=0;
+      for(i=0; fontm.name_full[i]!=0; i++) {
+        numUID *= 37; /* magic number, good for hash */
+        numUID += fontm.name_full[i]-' ';
+        /* if the name is long the first chars
+         * may be lost forever, so re-insert
+         * them thus making kind of CRC
+         */
+        numUID += (numUID>>24) & 0xFF;
+      }
+      /* the range for private UIDs is 4 000 000 - 4 999 999 */
+      fprintf(pfa_file, "/UniqueID %lu def\n", numUID%1000000+4000000);
+    }
+  }
+
+  fprintf(pfa_file, "/Weight (%s) readonly def\n", fontm.name_style);
+
+  fprintf(pfa_file, "/ItalicAngle %f def\n", italic_angle);
+  fprintf(pfa_file, "/isFixedPitch %s def\n",
+    fontm.is_fixed_pitch ? "true" : "false");
+
+  /* we don't print out the unused glyphs */
+  nchars = 0;
+  for (i = 0; i < numglyphs; i++) {
+    if (glyph_list[i].flags & GF_USED) {
+      nchars++;
+    }
+  }
+
+    fprintf(afm_file, "StartFontMetrics 4.1\n");
+    fprintf(afm_file, "FontName %s%s\n", fontm.name_ps, uni_font_name_suffix);
+    fprintf(afm_file, "FullName %s\n", fontm.name_full);
+    fprintf(afm_file, "Notice %s\n", fontm.name_copyright);
+    fprintf(afm_file, "EncodingScheme FontSpecific\n");
+    fprintf(afm_file, "FamilyName %s\n", fontm.name_family);
+    fprintf(afm_file, "Weight %s\n", fontm.name_style);
+    fprintf(afm_file, "Version %s\n", fontm.name_version);
+    fprintf(afm_file, "Characters %d\n", nchars);
+    fprintf(afm_file, "ItalicAngle %.1f\n", italic_angle);
+
+    fprintf(afm_file, "Ascender %d\n", iscale(fontm.ascender));
+    fprintf(afm_file, "Descender %d\n", iscale(fontm.descender));
+
+    fprintf(ufm_file, "StartFontMetrics 4.1\n");
+    fprintf(ufm_file, "FontName %s%s\n", fontm.name_ps, uni_font_name_suffix);
+    fprintf(ufm_file, "FullName %s\n", fontm.name_full);
+    fprintf(ufm_file, "Notice %s\n", fontm.name_copyright);
+    fprintf(ufm_file, "EncodingScheme FontSpecific\n");
+    fprintf(ufm_file, "FamilyName %s\n", fontm.name_family);
+    fprintf(ufm_file, "Weight %s\n", fontm.name_style);
+    fprintf(ufm_file, "Version %s\n", fontm.name_version);
+    fprintf(ufm_file, "Characters %d\n", nchars);
+    fprintf(ufm_file, "ItalicAngle %.1f\n", italic_angle);
+
+    fprintf(ufm_file, "Ascender %d\n", iscale(fontm.ascender));
+    fprintf(ufm_file, "Descender %d\n", iscale(fontm.descender));
+
+  fprintf(pfa_file, "/UnderlinePosition %d def\n",
+    iscale(fontm.underline_position));
+
+  fprintf(pfa_file, "/UnderlineThickness %hd def\nend readonly def\n",
+    iscale(fontm.underline_thickness));
+
+  fprintf(afm_file, "UnderlineThickness %d\n",
+    iscale(fontm.underline_thickness));
+
+  fprintf(afm_file, "UnderlinePosition %d\n",
+    iscale(fontm.underline_position));
+
+    fprintf(afm_file, "IsFixedPitch %s\n",
+    fontm.is_fixed_pitch ? "true" : "false");
+    fprintf(afm_file, "FontBBox %d %d %d %d\n",
+    bbox[0], bbox[1], bbox[2], bbox[3]);
+
+  fprintf(ufm_file, "UnderlineThickness %d\n",
+    iscale(fontm.underline_thickness));
+
+  fprintf(ufm_file, "UnderlinePosition %d\n",
+    iscale(fontm.underline_position));
+
+    fprintf(ufm_file, "IsFixedPitch %s\n",
+    fontm.is_fixed_pitch ? "true" : "false");
+    fprintf(ufm_file, "FontBBox %d %d %d %d\n",
+    bbox[0], bbox[1], bbox[2], bbox[3]);
+
+  fprintf(pfa_file, "/FontName /%s%s def\n", fontm.name_ps, uni_font_name_suffix);
+  fprintf(pfa_file, "/PaintType 0 def\n/StrokeWidth 0 def\n");
+  /* I'm not sure if these are fixed */
+  fprintf(pfa_file, "/FontType 1 def\n");
+
+  if (transform) {
+    fprintf(pfa_file, "/FontMatrix [0.001 0 0 0.001 0 0] def\n");
+  } else {
+    fprintf(pfa_file, "/FontMatrix [%9.7f 0 0 %9.7f 0 0] def\n",
+      original_scale_factor / 1000.0, original_scale_factor / 1000.0);
+  }
+
+  fprintf(pfa_file, "/FontBBox {%d %d %d %d} readonly def\n",
+    bbox[0], bbox[1], bbox[2], bbox[3]);
+
+  fprintf(pfa_file, "/Encoding 256 array\n");
+  /* determine number of elements for metrics table */
+  nmetrics = 256;
+   for (i = 0; i < numglyphs; i++) {
+    if( glyph_list[i].flags & GF_USED 
+    && glyph_list[i].char_no == -1 ) {
+      nmetrics++;
+    }
+  }
+  fprintf(afm_file, "StartCharMetrics %d\n", nmetrics);
+  fprintf(ufm_file, "StartCharMetrics %d\n", nmetrics);
+
+  fprintf(dvienc_file, "/%s%sEncoding [\n",
+    fontm.name_ps, uni_font_name_suffix);
+
+   for (i = 0; i < 256; i++) { /* here 256, not ENCTABSZ */
+    fprintf(pfa_file,
+      "dup %d /%s put\n", i, glyph_list[encoding[i]].name);
+    if( glyph_list[encoding[i]].flags & GF_USED )  {
+      int j = 0;
+      print_glyph_metrics(afm_file, i, encoding[i]);
+      while ( glyph_list[encoding[i]].orig_code[j] != -1 ) {
+        //print_glyph_metrics_ufm(ufm_file, glyph_list[encoding[i]].orig_code, encoding[i]);
+        //print_glyph_metrics_ufm(ufm_file, i, encoding[i]);
+        print_glyph_metrics_ufm(ufm_file, glyph_list[encoding[i]].orig_code[j], encoding[i]);
+        j++;
+      }
+    }
+    if (encoding[i])
+      fprintf (dvienc_file, "/index0x%04X\n", encoding[i]);
+    else
+      fprintf (dvienc_file, "/.notdef\n");
+   }
+
+  /* print the metrics for glyphs not in encoding table */
+  for(i=0; i<numglyphs; i++) {
+    if( (glyph_list[i].flags & GF_USED)
+        && glyph_list[i].char_no == -1 ) {
+      int j = 0;
+      print_glyph_metrics(afm_file, -1, i);
+      while ( glyph_list[i].orig_code[j] != -1 ) {
+        //print_glyph_metrics_ufm(ufm_file, glyph_list[i].orig_code, i);
+        print_glyph_metrics_ufm(ufm_file, glyph_list[i].orig_code[j], i);
+        j++;
+      }
+    }
+  }
+
+/*   for (i=0; i < ENCTABSZ; i++) { */
+/*     print_glyph_metrics_ufm(ufm_file, i, encoding[i]); */
+/*   } */
+
+  fprintf(pfa_file, "readonly def\ncurrentdict end\ncurrentfile eexec\n");
+  fprintf(pfa_file, "dup /Private 16 dict dup begin\n");
+
+  fprintf(pfa_file, "/RD{string currentfile exch readstring pop}executeonly def\n");
+  fprintf(pfa_file, "/ND{noaccess def}executeonly def\n");
+  fprintf(pfa_file, "/NP{noaccess put}executeonly def\n");
+
+  /* UniqueID must be shown twice, in both font and Private dictionary */
+  if(wantuid) {
+    if(strUID)
+      fprintf(pfa_file, "/UniqueID %s def\n", strUID);
+    else
+      /* the range for private UIDs is 4 000 000 - 4 999 999 */
+      fprintf(pfa_file, "/UniqueID %lu def\n", numUID%1000000+4000000);
+  }
+
+  if(forcebold==0)
+    fprintf(pfa_file, "/ForceBold false def\n");
+  else if(forcebold==1)
+    fprintf(pfa_file, "/ForceBold true def\n");
+
+  fprintf(pfa_file, "/BlueValues [ ");
+  for (i = 0; i < nblues; i++)
+    fprintf(pfa_file, "%d ", bluevalues[i]);
+  fprintf(pfa_file, "] def\n");
+
+  fprintf(pfa_file, "/OtherBlues [ ");
+  for (i = 0; i < notherb; i++)
+    fprintf(pfa_file, "%d ", otherblues[i]);
+  fprintf(pfa_file, "] def\n");
+
+  if (stdhw != 0)
+    fprintf(pfa_file, "/StdHW [ %d ] def\n", stdhw);
+  if (stdvw != 0)
+    fprintf(pfa_file, "/StdVW [ %d ] def\n", stdvw);
+  fprintf(pfa_file, "/StemSnapH [ ");
+  for (i = 0; i < 12 && stemsnaph[i] != 0; i++)
+    fprintf(pfa_file, "%d ", stemsnaph[i]);
+  fprintf(pfa_file, "] def\n");
+  fprintf(pfa_file, "/StemSnapV [ ");
+  for (i = 0; i < 12 && stemsnapv[i] != 0; i++)
+    fprintf(pfa_file, "%d ", stemsnapv[i]);
+  fprintf(pfa_file, "] def\n");
+
+  fprintf(pfa_file, "/MinFeature {16 16} def\n");
+  /* Are these fixed also ? */
+  fprintf(pfa_file, "/password 5839 def\n");
+
+  /* calculate the number of subroutines */
+
+  subid=5;
+  for (i = 0; i < numglyphs; i++) {
+    if (glyph_list[i].flags & GF_USED) {
+      subid+=glyph_list[i].nsg;
+    }
+  }
+
+  fprintf(pfa_file, "/Subrs %d array\n", subid);
+  /* standard subroutines */
+  fprintf(pfa_file, "dup 0 {\n\t3 0 callothersubr pop pop setcurrentpoint return\n\t} NP\n");
+  fprintf(pfa_file, "dup 1 {\n\t0 1 callothersubr return\n\t} NP\n");
+  fprintf(pfa_file, "dup 2 {\n\t0 2 callothersubr return\n\t} NP\n");
+  fprintf(pfa_file, "dup 3 {\n\treturn\n\t} NP\n");
+  /* our sub to make the hint substitution code shorter */
+  fprintf(pfa_file, "dup 4 {\n\t1 3 callothersubr pop callsubr return\n\t} NP\n");
+
+  if(pfa_file != null_file) { /* save time if the output would be wasted */
+    /* print the hinting subroutines */
+    subid=5;
+    for (i = 0; i < numglyphs; i++) {
+      if (glyph_list[i].flags & GF_USED) {
+        subid+=print_glyph_subs(i, subid);
+      }
+    }
+
+    fprintf(pfa_file, "ND\n");
+
+    fprintf(pfa_file, "2 index /CharStrings %d dict dup begin\n", nchars);
+
+    for (i = 0; i < numglyphs; i++) {
+      if (glyph_list[i].flags & GF_USED) {
+        print_glyph(i);
+      }
+    }
+  }
+
+
+  fprintf(pfa_file, "end\nend\nreadonly put\n");
+  fprintf(pfa_file, "noaccess put\n");
+  fprintf(pfa_file, "dup/FontName get exch definefont pop\n");
+  fprintf(pfa_file, "mark currentfile closefile\n");
+  fprintf(pfa_file, "cleartomark\n");
+  if(pfa_file != null_file)
+    fclose(pfa_file);
+
+    fprintf(afm_file, "EndCharMetrics\n");
+    fprintf(ufm_file, "EndCharMetrics\n");
+
+  if(afm_file != null_file) { /* save time if the output would be wasted */
+    /* print the kerning data if present */
+    cursw->kerning(glyph_list);
+    print_kerning(afm_file);
+  }
+  if(ufm_file != null_file) { /* save time if the output would be wasted */
+    /* print the kerning data if present */
+    cursw->kerning(glyph_list);
+    print_kerning(ufm_file);
+  }
+
+    fprintf(afm_file, "EndFontMetrics\n");
+  if(afm_file != null_file)
+    fclose(afm_file);
+
+    fprintf(ufm_file, "EndFontMetrics\n");
+  if(ufm_file != null_file)
+    fclose(ufm_file);
+
+  fprintf(dvienc_file, "] def\n");
+  if(dvienc_file != null_file)
+    fclose(dvienc_file);
+
+  WARNING_1 fprintf(stderr, "Finished - font files created\n");
+
+  cursw->close();
+
+#ifndef WINDOWS
+  while (wait(&ws) > 0) {
+  }
+#else 
+  if (encode && pfa_file != null_file) {
+    extern FILE    *ifp, *ofp;  /* from t1asm.c */
+
+    snprintf(filename, sizeof filename, "%s.%s", argv[2], pfbflag ? "pfb" : "pfa" );
+
+    if ((ofp = fopen(filename, "w+b")) == NULL) {
+      fprintf(stderr, "**** Cannot create %s ****\n", filename);
+      exit(1);
+    } else {
+      WARNING_2 fprintf(stderr, "Creating file %s\n", filename);
+    }
+
+    snprintf(filename, sizeof filename, "%s.t1a", argv[2]);
+
+    if ((ifp = fopen(filename, "rb")) == NULL) {
+      fprintf(stderr, "**** Cannot read %s ****\n", filename);
+      exit(1);
+    } else {
+      WARNING_2 fprintf(stderr, "Converting file %s\n", filename);
+    }
+
+    runt1asm(pfbflag);
+
+    WARNING_2 fprintf(stderr, "Removing file %s\n", filename);
+    if(unlink(filename) < 0) 
+      WARNING_1 fprintf(stderr, "Unable to remove file %s\n", filename);
+  }
+#endif /* WINDOWS */
+
+  fclose(null_file);
+  return 0;
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/global.h
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/global.h	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/global.h	(revision 2000)
@@ -0,0 +1,173 @@
+/*
+ * see COPYRIGHT
+ */
+
+
+/* options */
+
+extern int      encode;	/* encode the resulting file */
+extern int      pfbflag;	/* produce compressed file */
+extern int      wantafm;	/* want to see .afm instead of .t1a on stdout */
+extern int      correctvsize;	/* try to correct the vertical size of characters */
+extern int      wantuid;	/* user wants UniqueID entry in the font */
+extern int      allglyphs;	/* convert all glyphs, not only 256 of them */
+extern int      warnlevel;	/* the level of permitted warnings */
+extern int      forcemap; /* do mapping even on non-Unicode fonts */
+/* options - maximal limits */
+extern int      max_stemdepth;	/* maximal depth of stem stack in interpreter */
+/* options - debugging */
+extern int      absolute;	/* print out in absolute values */
+extern int      reverse;	/* reverse font to Type1 path directions */
+/* options - suboptions of Outline Processing */
+extern int      optimize;	/* enables space optimization */
+extern int      smooth;	/* enable smoothing of outlines */
+extern int      transform;	/* enables transformation to 1000x1000 matrix */
+extern int      hints;	/* enables autogeneration of hints */
+extern int      subhints;	/* enables autogeneration of substituted hints */
+extern int      trybold;	/* try to guess whether the font is bold */
+extern int      correctwidth;	/* try to correct the character width */
+extern int      vectorize;	/* vectorize the bitmaps */
+extern int      use_autotrace;	/* use the autotrace library on bitmap */
+/* options - suboptions of File Generation */
+extern int      gen_pfa;	/* generate the font file */
+extern int      gen_afm;	/* generate the metrics file */
+extern int      gen_dvienc;	/* generate the dvips encoding file */
+
+/* not quite options to select a particular source encoding */
+extern int      force_pid; /* specific platform id */
+extern int      force_eid; /* specific encoding id */
+
+/* other globals */
+extern FILE    *null_file, *pfa_file, *afm_file, *ufm_file, *dvienc_file;
+extern int      numglyphs;
+
+/* warnings */
+
+#define WARNING_1	if(warnlevel >= 1)
+#define WARNING_2	if(warnlevel >= 2)
+#define WARNING_3	if(warnlevel >= 3)
+#define WARNING_4	if(warnlevel >= 4)
+
+/*
+ * Bitmap control macros
+ */
+
+#define BITMAP_BYTES(size)	(((size)+7)>>3)
+#define DEF_BITMAP(name, size)	unsigned char name[BITMAP_BYTES(size)]
+#define SET_BITMAP(name, bit)	( name[(bit)>>3] |= (1<<((bit)&7)) )
+#define CLR_BITMAP(name, bit)	( name[(bit)>>3] &= ~(1<<((bit)&7)) )
+#define IS_BITMAP(name, bit)	( name[(bit)>>3] & (1<<((bit)&7)) )
+
+/* debugging */
+
+/* debug flags */
+#define DEBUG_UNICODE	0x00000001 /* unicode to 8-bit code conversion */
+#define DEBUG_MAINSTEMS	0x00000002 /* glyph-wide main stem generation */
+#define DEBUG_SUBSTEMS	0x00000004 /* substituted stem generation */
+#define DEBUG_STEMS	(DEBUG_MAINSTEMS|DEBUG_SUBSTEMS)
+#define DEBUG_REVERSAL	0x00000008 /* reversal of the paths */
+#define DEBUG_FIXCVDIR	0x00000010 /* fixcvdir() */
+#define DEBUG_STEMOVERLAP	0x00000020 /* stemoverlap() */
+#define DEBUG_BLUESTEMS	0x00000040 /* markbluestems() */
+#define DEBUG_STRAIGHTEN	0x00000080 /* markbluestems() */
+#define DEBUG_EXTMAP	0x00000100 /* parsing of external map */
+#define DEBUG_TOINT	0x00000200 /* conversion of path to integer */
+#define DEBUG_BUILDG	0x00000400 /* building of glyph path */
+#define DEBUG_QUAD	0x00000800 /* splitting curves by quadrants */
+#define DEBUG_SQEQ	0x00001000 /* square equation solver */
+#define DEBUG_COMPOSITE	0x00002000 /* handling of composite glyphs */
+#define DEBUG_FCONCISE	0x00004000 /* normalization of curves */
+#define DEBUG_FT		0x00008000 /* FreeType front-end */
+#define DEBUG_BITMAP	0x00010000 /* conversion from bitmap */
+#define DEBUG_DISABLED	0x80000000 /* special flag: temporary disable debugging */
+
+/* at what we want to look now */
+#ifndef DEBUG
+#	define DEBUG (0)
+#endif
+
+/* uncomment the next line if debugging data is wanted for one glyph only */
+/* #define DBG_GLYPH	"C118"  /* */
+
+#if DEBUG==0
+#	define ISDBG(name)	(0)
+#	define ENABLEDBG(condition) (0)
+#	define DISABLEDBG(condition) (0)
+#else
+	extern int debug; /* collection of the flags */
+/* this ISDBG will only work on ANSI C, not K&R */
+#	define ISDBG(name)	( (debug & DEBUG_DISABLED) ? 0 : (debug & (DEBUG_##name)) )
+#	define ENABLEDBG(condition) ( (condition) ? (debug&=~DEBUG_DISABLED) : 0 )
+#	define DISABLEDBG(condition) ( (condition) ? (debug|=DEBUG_DISABLED) : 0 )
+#endif
+
+#ifdef DBG_GLYPH
+#	define DBG_TO_GLYPH(g) DISABLEDBG( strcmp( (g)->name, DBG_GLYPH ) )
+#	define DBG_FROM_GLYPH(g) ENABLEDBG(1)
+#else
+#	define DBG_TO_GLYPH(g) (0)
+#	define DBG_FROM_GLYPH(g) (0)
+#endif
+
+/* prototypes */
+int iscale( int val);
+double fscale( double val);
+int unicode_rev_lookup( int unival);
+void bmp_outline( GLYPH *g, int scale, char *bmap,
+	int xsz, int ysz, int xoff, int yoff);
+int isign( int x);
+int fsign( double x);
+char *dupcnstring( unsigned char *s, int len);
+
+/* global metrics for a font */
+
+struct font_metrics {
+	/* post */
+	double	italic_angle;
+	short	underline_position;
+	short	underline_thickness;
+	short	is_fixed_pitch;
+
+	/* hhea */
+	short	ascender; 
+	short	descender;
+
+	/* head */
+	unsigned short	units_per_em;
+	short   bbox[4];
+
+	/* name */
+	char	*name_copyright;
+	char	*name_family;
+	char	*name_style;
+	char	*name_full;
+	char	*name_version;
+	char	*name_ps;
+
+	/* other */
+	int		force_bold;
+};
+
+/* size of the encoding table - glyphs beyond 255 are actually unnumbered */
+
+#define ENCTABSZ	1024
+
+/* switch table structure for front-ends */
+
+#define MAXSUFFIX	10
+
+struct frontsw {
+	char  *name; /* name of the front end */
+	char  *descr; /* description of the front end */
+	char  *suffix[MAXSUFFIX]; /* possible file name suffixes */
+
+	void  (*open)(char *fname, char *arg); /* open font file */
+	void  (*close)(void); /* close font file */
+	int   (*nglyphs)(void); /* get the number of glyphs */
+	int   (*glnames)(GLYPH *glyphs); /* get the names of glyphs */
+	void  (*glmetrics)(GLYPH *glyphs); /* get the metrics of glyphs */
+	int   (*glenc)(GLYPH *glyphs, int *enc, int *unimap); /* get the encoding */
+	void  (*fnmetrics)(struct font_metrics *fm); /* get the font metrics */
+	void  (*glpath)(int glyphno, GLYPH *glyphs); /* get the glyph path */
+	void  (*kerning)(GLYPH *glyph_list); /* extract the kerning data */
+};
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/FONTS
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/FONTS	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/FONTS	(revision 2000)
@@ -0,0 +1,462 @@
+Sergey A. Babkin
+<babkin@bellatlantic.net> or <sab123@hotmail.com>
+(Do not edit this file, it is generated from FONTS.html!!!)
+
+THE FONT INSTALLATION GUIDE 
+for the TTF to Type1 converter and fonts generated by it
+========================================================
+
+There is historically a number of problems with the support of the 8-bit
+character encodings. This installation guide pays a lot of attention
+to the 8-bit issues, because these issues are responsible for the
+most of troubles during the installation of fonts. But they are
+not the only things covered in this guide, so it's worth reading
+even if all you need is plain ASCII. For convenience of reading
+I have marked the paragraphs dealing solely with 8-bit problems
+with characters *8*.
+
+To simplify this installation the distribution package of the
+converter contains a number of scripts written in shell and
+Perl. So, to run them you will need a shell interpreter (Bourne-shell,
+POSIX-shell, Korn-shell are OK, ba-shell is probably also OK but not 
+tested yet). The Perl scripts were tested with Perl5 but probably
+should work with Perl4 too. All the scripts are located in the
+`scripts' subdirectory.
+
+This guide considers the following issues of installation of the 
+fonts:
+
+- X11
+- Ghostscript
+- MS Windows
+- Netscape Navigator/Communicator
+- Linux RPM package
+- FrameMaker
+- StarOffice
+
+X11
+===
+
+To simplify the conversion a set of scripts is provided with ttf2pt1.
+They are collected in the `scripts' subdirectory. 
+
+`Convert' is the master conversion script provided with ttf2pt1. 
+When installed into a public directory it's named `ttf2pt1_convert' 
+to avoid name collisions with the other programs.
+
+It's called as:
+
+  convert [config-file]
+
+If the configuration file is not specified as an argument then the file
+`convert.cfg' in the current directory is used. This file contains
+a set of configuration variables. The distribution contains a sample file
+file `convert.cfg.sample'. Please copy it to `convert.cfg',
+look inside it and change the configuration variables. The more stable
+configuration variables, such as the path names of the scripts and
+encoding files are located in `convert' itself, they are
+automatically updated when installing ttf2pt1.
+
+Put all the TTF fonts you want to convert into some directory (this
+may be just the directory that already contains all the Windows
+fonts on a mounted FAT filesystem). If you have fonts in different
+source encoding then put the fonts in each of the encodings
+into a separate directory. Up to 10 source directories are
+supported. If you (in a rather unlikely case) have more source
+directories then you can make two separate runs of the converter,
+converting up to 10 directories at a time.
+
+The variables in the configuration file are:
+
+SRCDIRS - the list of directories (with absolute paths) with 
+  TTF fonts. Each line contains at least 3 fields: the name of the directory,
+  the language of the fonts in it (if you have fonts for different 
+  languages you have to put them into the separate directories) and the
+  encoding of the fonts. Again, if you have some of the TTF typefaces in 
+  one encoding, and some in another (say, CP-1251 and KOI-8), you have 
+  to put them into the separate source directories. Some lines may contain
+  4 fields. Then the fourth field is the name of the external map to
+  convert the Unicode fonts into the desirable encoding. This map is
+  used instead of the built-in map for the specified language.
+
+*8*
+An interesting thing is that some languages have more than one
+widely used character encodings. For example, the widely used
+encodings for Russian are IBM CP-866 (MS-DOS and Unix), KOI-8
+(Unix and VAX, also the standard Internet encoding), IBM CP-1251 (MS Windows).
+That's why I have provided the means to generate the converted fonts
+in more than one encoding. See the file encodings/README for 
+details about the encoding tables. Actually, if you plan to use
+these fonts with Netscape Navigator better use the aliases
+cp-866 instead of ibm-866 and windows-1251 instead of ibm-1251
+because that's what Netscape wants.
+
+DSTDIR - directory for the resulting Type1 fonts. Be careful!
+  This directory gets completely wiped out before conversion,
+  so don't use any already existing directory for this purpose.
+
+DSTENC{language} - the list of encodings in which the destination 
+  fonts will be generated for each language. Each font of that 
+  language will be generated in each of the specified
+  encodings. If you don't want any translation, just specify both
+  SRCENC and DSTENC as iso8859-1 (or if you want any other encoding
+  specified in the fonts.dir, copy the description of 8859-1 with
+  new name and use this new name for SRCENC and DSTENC).
+
+FOUNDRY - the foundry name to be used in the fonts.dir file. I have
+  set it to `fromttf' to avoid name conflicts with any existing font for
+  sure. But this foundry name is not registered in X11 standards and
+  if you want to get the full standard compliance or have a font server
+  that enforces such a compliance, use `misc'.
+
+The next few parameters control the general behavior of the converter.
+They default values are set to something reasonable.
+
+CORRECTWIDTH - if the value is set to YES then use the 
+  converter option -w, otherwise don't use it. See the description of 
+  this option in the README file.
+
+REMOVET1A - if the value is set to YES then after
+  conversion remove the un-encoded .t1a font files and the 
+  intermediate .xpfa font metric files.
+
+INSTALLFONTMAP - a Ghostscript parameter, if the value is set to 
+  YES then install the entries for the new fonts
+  right into the main Fontmap file. Otherwise just leave
+  the file Fontmap.ttf in the Ghostscript configuration
+  directory.
+
+HINTSUBST - if the value is set to YES use the option
+  -H, otherwise don't use it. This option enables the
+  hint substitution technique. If you have not installed the X11 patch
+  described above, use this option with great caution. See further 
+  description of this option in the README file.
+
+ENFORCEISO - if the value is set to YES then
+  disguise the resulting fonts as the fonts in ISOLatin1 encoding. Historically
+  this was neccessary due to the way the installer scripts created the
+  X11 font configuration files. It is not neccessary any more for this
+  purpose. But if you plan to use these fonts with some other application
+  that expects ISOLatin1 encoding then better enable this option.
+
+ALLGLYPHS - if the value is set to YES then
+  include all the glyphs from the source fonts into the resulting fonts, even
+  if these glyphs are inaccessible. If it's set to NO then
+  include only the glyphs which have codes assigned to them. The glyphs
+  without codes can not be used directly. But some clever programs,
+  such as the Type 1 library from XFree86 3.9 and higher can change
+  the encoding on the fly and use another set of glyphs. If you have not 
+  installed the X11 patch described above, use this option with great 
+  caution. See further description of the option option -a in the 
+  README file.
+
+GENUID - if the value is set to YES then use
+  the option -uA of the converter to generate UniqueIDs for
+  the converted fonts. The standard X11 Type 1 library does not use
+  this ID, so it may only be neccessary for the other applications.
+  The script is clever enough to generate different UniqueID for the
+  same font converted to multiple encodings. Also after conversion it
+  checks all the fonts generacted during the session for duplicated
+  UniqueID and shows those. Still, this does not quarantee that these
+  UniqueIDs won't overlap with some other fonts. The UniqueIDs are
+  generated as hash values from the font names, so it's guaranteed
+  that if the `convert' script runs multiple times it will
+  generate the same UniqueIDs during each run. See further description 
+  of this option in the README file.
+
+GENUID - if the value is set to YES then create
+  the .pfb files, otherwise the .pfa files. The .pfb
+  files are more compact but contain binary data, so you may experience some
+  troubles when transferring them through the network.
+
+The following parameters are used to locate the other scripts and
+configuration files. By default the scripts do a bit of guessing for them:
+they search in the ttf2pt1 installation directory if ttf2pt1
+was installed or otherwise suppose that you are running `convert' with
+`scripts' subdirectory being the current directory.
+
+ENCDIR - directory containing the descriptions of encodings
+MAPDIR - directory containing the external map files
+
+Besides that a few parameters are built into the `convert' script itself.
+You probably won't need to change them:
+
+T1ASM, TTF2PT1, TRANS, T1FDIR, FORCEISO - paths to the other script
+
+Also there are a few parameters controlling the installation of
+fonts for Ghostscript. Please look at their description in the 
+Ghostscript section of documentation or in the ttf2pt1_x2gs(1)
+manual page before running `convert'. If these parameters are
+set, `convert' will call the `x2gs' script automatically
+to install the newly converted fonts in Ghostscript.
+
+After creating the configuration file run the `convert' script. Look at
+the result and the log file in DSTDIR.
+
+Add the directory with newly converted fonts to the configuration
+of X server or font server. For most of the systems this step is
+very straightforward. For HP-UX it's rather tricky and poorly
+documented, so the file FONTS.hpux gives a short description.
+
+If you don't have the privileges of the root user, you still can
+configure your private font server. Just use some non-standard
+port number (see FONTS.hpux for an example, exept that you won't
+need all the HP-related stuff on any other system).
+
+Known Problems
+--------------
+
+- One catch is that the X11 Type 1 font library has a rather low limit
+  on the font size. Because of this the fonts with  more complicated
+  outlines and the enabled hint substitution may not fit into
+  this limit. The same applies to the fonts with very complicated
+  outlines or with very many glyphs (especially the fonts with
+  over 256 glyphs). So you will need to excercise caution with
+  these options if you plan using these fonts with X11. Some vendors 
+  such as HP provide the Type 1 implementation licensed from Adobe 
+  which should have no such problem.
+
+  But there is a solution even for the generic X11. A patch located
+  in the subdirectory `app/X11' fixes this problem as well
+  as some other minor problems. Its description is provided in
+  app/X11/README.
+
+  To fix the X11 font library, you have to get the X11 sources. I
+  can recommend the ftp sites of the XFree86 project ftp://ftp.xfree86.org
+  or of the Open Group ftp://ftp.x.org. This patch was made on the sources
+  of XFree86 so you may have better success with applying it to the
+  XFree86 distribution. After you have got the sources, make sure
+  that you can compile them. Then apply the patch as described.
+  Make sure that it was applied properly. Compile the sources again
+  (actually, you need only the fonts library, the fonts server, and
+  possibly the X server). It would be prudent now to save your old
+  font library, font server and, possibly, X server. Then install
+  the new recently compiled versions of these files. Of course,
+  if you know someone who already has compiled these files for the
+  same OS as yours, you can just copy the binary fles from him.
+
+  Alas, building the X11 system from the source code is not the
+  easiest thing in the world and if you have no experience it
+  can be quite difficult. In this case just avoid the aforementioned
+  features or check each converted font to make sure that it
+  works properly.
+
+- The Type1 font library from the standard X11 distribution
+  does not work on HP-UX (at least, up to 10.01). The font server
+  supplied with HP-UX up to 10.01 is also broken. Starting from 
+  HP-UX 10.20 (I don't know about 10.10) they supply a proprietary font 
+  library and the converted fonts work fine with it, provided that
+  they are configured properly (see the file FONTS.hpux).
+
+- The fonts.scale files created by the older versions of the
+  ttf2pt1 installation program (up to release 3.1) have conflicted 
+  with the language definitions of the Xfsft font server and
+  parts of it included into XFree86. To overcome this incompatibility
+  the never versions creats the fonts.scale file describing all the
+  fonts as belonging to the adobe-fontspecific encoding and
+  the fonts.alias file with the proper names. The drawback of
+  this solution is that xlsfonts gives the list of twice more
+  fonts. But as a side effect the option ENFORCEISO in
+  `convert.cfg' is not required for X11 any more.
+
+- The conversion script has no support for Eastern multi-plane fonts.
+  Contribution of such a support would be welcome.
+
+Ghostscript
+===========
+
+The fonts generated with ttf2pt1 work fine with Ghostscript by
+themselves. The script `x2gs' (or `ttf2pt1_x2gs' when installed
+into a public directory, to avoid name conflicts with other
+programs) links the font files from the X11 direcotry into the Ghostscript 
+directory and automatically creates the description file (Fontmap) 
+in Ghostscript format.
+
+It's called as:
+
+  x2gs [config-file]
+
+If the configuration file is not specified as an argument then the file
+`convert.cfg' in the current directory is used, just like the
+`convert' script does. Indeed, this configuration file is used for 
+both scripts.
+
+The Ghostscript-related parameters in the configuration file are:
+
+DSTDIR - the X11 font directory used by `x2gs' as the
+  source of the fonts. This parameter is common with the X11 
+  configuration.
+
+GSDIR - the base directory of Ghostsript. If this
+  parameter is set to an empty string then `convert' won't
+  call `x2gs'. So if you want to get only the X11 fonts
+  installed then set this parameter to an empty string. This 
+  directory may vary on various system, so please check your 
+  system and set this value accordingly before running the script.
+
+GSFONTDIR - the font directory of Ghostscript. In the standard
+  Ghostscript installation it's a subdirectory of GSDIR
+  but some systems may use completely different directories.
+
+GSCONFDIR - the configuration subdirectory of Ghostscript
+  that contains the Fontmap file.
+
+INSTALLFONTMAP - if the value is set to YES then 
+  install the entries for the new fonts right into the main 
+  Fontmap file. Otherwise just leave the file Fontmap.ttf
+  in the Ghostscript configuration directory.
+
+
+After preparing the configuration file run the script. It symbolicaly links 
+all the font files and creates the description file Fontmap.ttf in 
+GSCONDFIR. After that there are two choices. 
+
+If the option INSTALLFONTMAP was set to YES then 
+the font descriptions are also automatically installed into the
+master Fontmap file. The script is clever enough to
+detect if it was run multiple times with the same directories
+and if so it replaces the old Fontmap entries with
+the new ones instead of just accumulating all of them. You
+may also run it multiple times for multiple X11 directories
+and all the results will be properly collected in the Fontmap.
+But it's your responsibility to watch that the names of the
+font files don't overlap. If the X11 font directory gets
+renamed then you have to remove its font entries from the
+Fontmap and only after that re-run `x2gs'
+for the new directory. 
+
+On the other hand if the option INSTALLFONTMAP was set to 
+NO then go to the GSCONFDIR directory and insert the 
+contents of Fontmap.ttf into the Fontmap file
+manually. This step may be left manual to make the installation
+a little bit more safe. 
+
+After that you may also want to redefine some of the aliases in 
+Fontmap to refer to the newly installed fonts.
+But the redefinition of the aliases may be dangerous if the width of
+characters in the new font will be different from the old font.
+Alas, there is no visible solution of this problem yet.
+
+MS Windows
+===========
+
+Ttf2pt1 can be built on Windows either with native compiler or in
+POSIX emulation mode.
+
+Native MS Windows compilers require a different way to build the converter 
+instead of the Makefile (their make programs commonly are quite weird
+and limited in capabilities). An example of batch file winbuild.bat
+is provided for MS Visual C/C++. Probably it can be easily adapted for other 
+32-bit Windows and DOS compilers. The important part is to define the 
+preprocessor symbol WINDOWS during compilation.
+
+Cygnus make almost supports full Makefiles but not quite. Seems
+like its POSIX support is also of the same quality "almost but not quite".
+So another command file cygbuild.sh is provided for Cygnus GNU C, also 
+with the preprocessor symbol WINDOWS defined. It is intended to be run from
+the Cygnus BASH shell. To run the programs produced by the Cygnus compiler 
+the Cygnus library file CYGWIN1.DLL should be copied first into 
+C:\WINDOWS.
+
+To run the accompanying scripts Perl for Windows will be required as well as 
+other tools from the Cygnus set.
+
+The Windows support was not particularly tested, so in case of problems with
+building or running the converter please let us know.
+
+The pre-built code (possibly of an older version) of ttf2pt1 for MS Windows is
+available from the GnuWin32 project from
+
+http://gnuwin32.sourceforge.net/packages/ttf2pt1.htm
+
+Netscape Navigator/Communicator
+===============================
+
+Basically, the biggest problem with Netscape Navigator is that
+it has built-in fixed PostScript font names and built-in fixed 
+glyph tables for them. Oh, no, that's two! Let's start over: 
+basically the two biggest problems of Netscape Navigator are 
+that (one)it has built-in fixed PostScript font names and (two)
+built-in fixed glyph tables for them and (three) it always
+assumes that the fonts have ISOLatin1 encoding. OK, let's
+start over again: basically the three biggest problems of Netscape 
+Navigator are that (one) it has built-in fixed PostScript font names, 
+(two) built-in fixed glyph tables for them and (three) it always
+assumes that the fonts have ISOLatin1 encoding and (four) it
+does not remember the scaled font size between the sessions.
+You did not expect such a Spanish Inquisition, did you ? (*)
+
+Luckily, we have solutions for all of these problems. They are
+located in the subdirectory `app/netscape' and described
+in app/netscape/README.
+
+  -------
+  *) See Monty Python's Flying Circus, episode 15
+
+*8*
+Netscape and cyrillic fonts
+---------------------------
+(courtesy of Zvezdan Petkovic)
+
+If you use TrueType fonts in your X, as I do, and you always get
+KOI8-R encoded pages, then your Netscape does not recognise windows-1251
+encoding.  Microsoft TrueType fonts simply declare all encodings they
+can support including KOI8-R.  For some reason, KOI8-R always wins over
+ISO-8859-5 in Netscape under X.  If you are reading other cyrillic
+languages besides Russian, you might want to either erase KOI8-R entries
+from the fonts.dir and fonts.scale files, or alternatively fix Netscape.
+I put this line in my .Xdefaults.
+
+    Netscape*documentFonts.charset*koi8-r:               iso-8859-5
+
+Notice that you can still read Russian sites without trouble because
+Netscape translates KOI8-R to ISO-8859-5 on the fly. I read both Russian
+and Serbian sites with no trouble.
+
+Note: If anybody knows the way to tell Netscape under Unix how to 
+recognise {windows,ibm,cp}-1251 encoded fonts, I'd like to hear about that.
+
+Linux RPM package
+=================
+
+The spec file for the creation of a Linux RPM package is located in 
+app/RPM. It has been contributed by Johan Vromans.  When 
+make all is ran in the main directory it among the other 
+things creates the version of itself adapted to Linux in app/RPM,
+you may want to copy that version back to the main directory.
+
+Warning: Please note that the install section is incomplete, and 
+the installed scripts won't work until the paths inside them
+are corrected.
+
+FrameMaker
+==========
+
+The fonts and AFM files generated by the version 3.2 and higher 
+should work with Framemaker without problems. The AFM files 
+generated by the previous versions of the converter require a 
+line added to them:
+
+  EncodingScheme FontSpecific
+
+And the underscores in the font names of the font and AFM files 
+generated by the older versions may need to be changed to dashes.
+
+NOTE by Jason Baietto: Ignore the directions in the Frame on-line docs 
+that say to put a "serverdict begin 0 exitserver" line in the pfa files.  
+Doing this caused both my printer and ghostscript to choke on the resulting
+output from FrameMaker, so I would not advise doing this (though your
+mileage may vary).
+
+StarOffice
+==========
+
+StarOffice 5.1x has been reported to crash if the .afm file contains
+spaces in the values of such statements as Version, Weight etc.
+These spaces are permitted by the Adobe spec, so this is a problem of
+StarOffice. The easiest way to fix these .afm files for StarOffice
+is to remove spaces in these strings or remove these strings (in case if
+they are optional) at all. This can be done automatically with a sed
+script. It seems that StarOffice 5.2 has this problem fixed, so we decided to
+spend no efforts on providing workarounds for 5.1 with ttf2pt1.
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ft.c
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ft.c	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ft.c	(revision 2000)
@@ -0,0 +1,649 @@
+/*
+ * The font parser using the FreeType library version 2.
+ *
+ * see COPYRIGHT
+ *
+ */
+
+#ifdef USE_FREETYPE
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <sys/types.h>
+#include <freetype/config/ftheader.h>
+#include <freetype/freetype.h>
+#include <freetype/ftglyph.h>
+#include <freetype/ftsnames.h>
+#include <freetype/ttnameid.h>
+#include <freetype/ftoutln.h>
+#include "pt1.h"
+#include "global.h"
+
+/* prototypes of call entries */
+static void openfont(char *fname, char *arg);
+static void closefont( void);
+static int getnglyphs ( void);
+static int glnames( GLYPH *glyph_list);
+static void glmetrics( GLYPH *glyph_list);
+static int glenc( GLYPH *glyph_list, int *encoding, int *unimap);
+static void fnmetrics( struct font_metrics *fm);
+static void glpath( int glyphno, GLYPH *glyph_list);
+static void kerning( GLYPH *glyph_list);
+
+/* globals */
+
+/* front-end descriptor */
+struct frontsw freetype_sw = {
+	/*name*/       "ft",
+	/*descr*/      "based on the FreeType library",
+	/*suffix*/     { "ttf", "otf", "pfa", "pfb" },
+	/*open*/       openfont,
+	/*close*/      closefont,
+	/*nglyphs*/    getnglyphs,
+	/*glnames*/    glnames,
+	/*glmetrics*/  glmetrics,
+	/*glenc*/      glenc,
+	/*fnmetrics*/  fnmetrics,
+	/*glpath*/     glpath,
+	/*kerning*/    kerning,
+};
+
+/* statics */
+
+static FT_Library library;
+static FT_Face face;
+
+static int enc_type, enc_found;
+
+/* SFNT functions do not seem to be included by default in FT2beta8 */
+#define ENABLE_SFNT
+
+/*
+ * Open font and prepare to return information to the main driver.
+ * May print error and warning messages.
+ * Exit on error.
+ */
+
+static void
+openfont(
+	char *fname,
+	char *arg /* unused now */
+)
+{
+	FT_Error error;
+
+	if( FT_Init_FreeType( &library ) ) {
+		fprintf(stderr, "** FreeType initialization failed\n");
+		exit(1);
+	}
+
+	if( error = FT_New_Face( library, fname, 0, &face ) ) {
+		if ( error == FT_Err_Unknown_File_Format )
+			fprintf(stderr, "**** %s has format unknown to FreeType\n", fname);
+		else
+			fprintf(stderr, "**** Cannot access %s ****\n", fname);
+		exit(1);
+	}
+
+	if(FT_HAS_FIXED_SIZES(face)) {
+		WARNING_1 fprintf(stderr, "Font contains bitmaps\n");
+	}
+	if(FT_HAS_MULTIPLE_MASTERS(face)) {
+		WARNING_1 fprintf(stderr, "Font contains multiple masters, using default\n");
+	}
+
+	if(ISDBG(FT)) fprintf(stderr," %d units per EM\n", face->units_per_EM);
+
+	enc_found = 0;
+}
+
+/*
+ * Close font.
+ * Exit on error.
+ */
+
+static void
+closefont(
+	void
+)
+{
+	if( FT_Done_Face(face) ) {
+		WARNING_1 fprintf(stderr, "Errors when closing the font file, ignored\n");
+	}
+	if( FT_Done_FreeType(library) ) {
+		WARNING_1 fprintf(stderr, "Errors when stopping FreeType, ignored\n");
+	}
+}
+
+/*
+ * Get the number of glyphs in font.
+ */
+
+static int
+getnglyphs (
+	void
+)
+{
+	if(ISDBG(FT)) fprintf(stderr, "%d glyphs in font\n", face->num_glyphs);
+	return (int)face->num_glyphs;
+}
+
+/*
+ * Get the names of the glyphs.
+ * Returns 0 if the names were assigned, non-zero if the font
+ * provides no glyph names.
+ */
+
+static int
+glnames(
+	GLYPH *glyph_list
+)
+{
+#define MAX_NAMELEN	1024
+	unsigned char bf[1024];
+	int i;
+
+	if( ! FT_HAS_GLYPH_NAMES(face) ) {
+		WARNING_1 fprintf(stderr, "Font has no glyph names\n");
+		return 1;
+	}
+
+	for(i=0; i < face->num_glyphs; i++) {
+		if( FT_Get_Glyph_Name(face, i, bf, MAX_NAMELEN) || bf[0]==0 ) {
+			sprintf(bf, "_g_%d", i);
+			WARNING_2 fprintf(stderr,
+				"Glyph No. %d has no postscript name, becomes %s\n", i, bf);
+		}
+		glyph_list[i].name = strdup(bf);
+		if(ISDBG(FT)) fprintf(stderr, "%d has name %s\n", i, bf);
+		if (glyph_list[i].name == NULL) {
+			fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+			exit(255);
+		}
+	}
+	return 0;
+}
+
+/*
+ * Get the metrics of the glyphs.
+ */
+
+static void
+glmetrics(
+	GLYPH *glyph_list
+)
+{
+	GLYPH          *g;
+	int i;
+	FT_Glyph_Metrics *met;
+	FT_BBox bbox;
+	FT_Glyph gly;
+    FT_ULong charcode;
+    FT_UInt  index;
+
+	for(i=0; i < face->num_glyphs; i++) {
+		g = &(glyph_list[i]);
+
+		if( FT_Load_Glyph(face, i, FT_LOAD_NO_BITMAP|FT_LOAD_NO_SCALE) ) {
+			fprintf(stderr, "Can't load glyph %s, skipped\n", g->name);
+			continue;
+		}
+
+		met = &face->glyph->metrics;
+
+		if(FT_HAS_HORIZONTAL(face)) {
+			g->width = met->horiAdvance;
+			g->lsb = met->horiBearingX;
+		} else {
+			WARNING_2 fprintf(stderr, "Glyph %s has no horizontal metrics, guessed them\n", g->name);
+			g->width = met->width;
+			g->lsb = 0;
+		}
+
+		if( FT_Get_Glyph(face->glyph, &gly) ) {
+			fprintf(stderr, "Can't access glyph %s bbox, skipped\n", g->name);
+			continue;
+		}
+
+		FT_Glyph_Get_CBox(gly, ft_glyph_bbox_unscaled, &bbox);
+		g->xMin = bbox.xMin;
+		g->yMin = bbox.yMin;
+		g->xMax = bbox.xMax;
+		g->yMax = bbox.yMax;
+
+		g->ttf_pathlen = face->glyph->outline.n_points;
+
+	}
+
+    charcode = FT_Get_First_Char(face, &index);
+    while ( index != 0 ) {
+      if ( index >= face->num_glyphs ) {
+        break;
+      }
+      for ( i = 0; i < GLYPH_MAX_ENCODINGS; i++ ) {
+        if ( glyph_list[index].orig_code[i] == -1 )
+          break;
+      }
+
+      if ( i == GLYPH_MAX_ENCODINGS ) {
+        if (strcmp(glyph_list[index].name, ".notdef") != 0) {
+          WARNING_2 fprintf(stderr,
+                            "Glyph %s has >= %d encodings (A), %4.4x & %4.4x\n",
+                            GLYPH_MAX_ENCODINGS,
+                            glyph_list[index].name,
+                            glyph_list[index].orig_code[i],
+                            charcode);
+        }
+      } else {
+        glyph_list[index].orig_code[i] = charcode;
+      }
+
+      charcode = FT_Get_Next_Char(face, charcode, &index);
+    }
+}
+
+/*
+ * Get the original encoding of the font. 
+ * Returns 1 for if the original encoding is Unicode, 2 if the
+ * original encoding is other 16-bit, 0 if 8-bit.
+ */
+
+static int
+glenc(
+	GLYPH *glyph_list,
+	int *encoding,
+	int *unimap
+)
+{
+	int i, e;
+	unsigned code, index;
+
+	if(ISDBG(FT)) 
+		for(e=0; e < face->num_charmaps; e++) {
+			fprintf(stderr, "found encoding pid=%d eid=%d\n", 
+				face->charmaps[e]->platform_id,
+				face->charmaps[e]->encoding_id);
+		}
+
+	if(enc_found)
+		goto populate_map;
+
+	enc_type = 0;
+
+	/* first check for an explicit PID/EID */
+
+	if(force_pid != -1) {
+		for(e=0; e < face->num_charmaps; e++) {
+			if(face->charmaps[e]->platform_id == force_pid
+			&& face->charmaps[e]->encoding_id == force_eid) {
+				WARNING_1 fprintf(stderr, "Found Encoding PID=%d/EID=%d\n", 
+					force_pid, force_eid);
+				if( !face->charmaps || FT_Set_Charmap(face, face->charmaps[e]) ) {
+					fprintf(stderr, "**** Cannot set charmap in FreeType ****\n");
+					exit(1);
+				}
+				enc_type = 1;
+				goto populate_map;
+			}
+		}
+		fprintf(stderr, "*** TTF encoding table PID=%d/EID=%d not found\n", 
+			force_pid, force_eid);
+		exit(1);
+	}
+
+	/* next check for a direct Adobe mapping */
+
+	if(!forcemap) {
+		for(e=0; e < face->num_charmaps; e++) {
+			if(face->charmaps[e]->encoding == ft_encoding_adobe_custom) {
+				WARNING_1 fputs("Found Adobe Custom Encoding\n", stderr);
+				if( FT_Set_Charmap(face, face->charmaps[e]) ) {
+					fprintf(stderr, "**** Cannot set charmap in FreeType ****\n");
+					exit(1);
+				}
+				goto populate_map;
+			}
+		}
+	}
+
+	for(e=0; e < face->num_charmaps; e++) {
+		if(face->charmaps[e]->platform_id == 3) {
+			switch(face->charmaps[e]->encoding_id) {
+			case 0:
+				WARNING_1 fputs("Found Symbol Encoding\n", stderr);
+				break;
+			case 1:
+				WARNING_1 fputs("Found Unicode Encoding\n", stderr);
+				enc_type = 1;
+				break;
+			default:
+				WARNING_1 {
+					fprintf(stderr,
+					"****MS Encoding ID %d not supported****\n",
+						face->charmaps[e]->encoding_id);
+					fputs("Treating it like Symbol encoding\n", stderr);
+				}
+				break;
+			}
+			break;
+		}
+	}
+	if(e >= face->num_charmaps) {
+		WARNING_1 fputs("No Microsoft encoding, using first encoding available\n", stderr);
+		e = 0;
+	}
+	
+	if( FT_Set_Charmap(face, face->charmaps[e]) ) {
+		fprintf(stderr, "**** Cannot set charmap in FreeType ****\n");
+		exit(1);
+	}
+
+populate_map:
+	enc_found = 1;
+
+	for(i=0; i<ENCTABSZ; i++) {
+		if(encoding[i] != -1)
+			continue;
+		if(enc_type == 1 || forcemap) {
+			code = unimap[i];
+			if(code == (unsigned) -1)
+				continue;
+		} else
+			code = i;
+
+		code = FT_Get_Char_Index(face, code);
+		if(0 && ISDBG(FT)) fprintf(stderr, "code of %3d is %3d\n", i, code);
+		if(code == 0)
+			continue; /* .notdef */
+		encoding[i] = code;
+	}
+
+	return enc_type;
+}
+
+/*
+ * Get the font metrics
+ */
+static void 
+fnmetrics(
+	struct font_metrics *fm
+)
+{
+	char *str;
+	static char *fieldstocheck[3];
+#ifdef ENABLE_SFNT
+	FT_SfntName sn;
+#endif /* ENABLE_SFNT */
+	int i, j, len;
+
+	fm->italic_angle = 0.0; /* FreeType hides the angle */
+	fm->underline_position = face->underline_position;
+	fm->underline_thickness = face->underline_thickness;
+	fm->is_fixed_pitch = FT_IS_FIXED_WIDTH(face);
+
+	fm->ascender = face->ascender;
+	fm->descender = face->descender;
+
+	fm->units_per_em =  face->units_per_EM;
+
+	fm->bbox[0] = face->bbox.xMin;
+	fm->bbox[1] = face->bbox.yMin;
+	fm->bbox[2] = face->bbox.xMax;
+	fm->bbox[3] = face->bbox.yMax;
+
+#ifdef ENABLE_SFNT
+	if( FT_Get_Sfnt_Name(face, TT_NAME_ID_COPYRIGHT, &sn) )
+#endif /* ENABLE_SFNT */
+		fm->name_copyright = "";
+#ifdef ENABLE_SFNT
+	else
+		fm->name_copyright = dupcnstring(sn.string, sn.string_len);
+#endif /* ENABLE_SFNT */
+
+	fm->name_family = face->family_name;
+
+	fm->name_style = face->style_name;
+	if(fm->name_style == NULL)
+		fm->name_style = "";
+
+#ifdef ENABLE_SFNT
+	if( FT_Get_Sfnt_Name(face, TT_NAME_ID_FULL_NAME, &sn) ) 
+#endif /* ENABLE_SFNT */
+	{
+		int len;
+
+		len = strlen(fm->name_family) + strlen(fm->name_style) + 2;
+		if(( fm->name_full = malloc(len) )==NULL) {
+			fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+			exit(255);
+		}
+		strcpy(fm->name_full, fm->name_family);
+		if(strlen(fm->name_style) != 0) {
+			strcat(fm->name_full, " ");
+			strcat(fm->name_full, fm->name_style);
+		}
+	} 
+#ifdef ENABLE_SFNT
+	else
+		fm->name_full = dupcnstring(sn.string, sn.string_len);
+#endif /* ENABLE_SFNT */
+
+#ifdef ENABLE_SFNT
+	if( FT_Get_Sfnt_Name(face, TT_NAME_ID_VERSION_STRING, &sn) )
+#endif /* ENABLE_SFNT */
+		fm->name_version = "1.0";
+#ifdef ENABLE_SFNT
+	else
+		fm->name_version = dupcnstring(sn.string, sn.string_len);
+#endif /* ENABLE_SFNT */
+
+#ifdef ENABLE_SFNT
+	if( FT_Get_Sfnt_Name(face, TT_NAME_ID_PS_NAME , &sn) ) {
+#endif /* ENABLE_SFNT */
+		if(( fm->name_ps = strdup(fm->name_full) )==NULL) {
+			fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+			exit(255);
+		}
+#ifdef ENABLE_SFNT
+	} else
+		fm->name_ps = dupcnstring(sn.string, sn.string_len);
+#endif /* ENABLE_SFNT */
+	for(i=0; fm->name_ps[i]!=0; i++)
+		if(fm->name_ps[i] == ' ')
+			fm->name_ps[i] = '_'; /* no spaces in the Postscript name *m
+
+	/* guess the boldness from the font names */
+	fm->force_bold=0;
+
+	fieldstocheck[0] = fm->name_style;
+	fieldstocheck[1] = fm->name_full;
+	fieldstocheck[2] = fm->name_ps;
+
+	for(i=0; !fm->force_bold && i<sizeof fieldstocheck /sizeof(fieldstocheck[0]); i++) {
+		str=fieldstocheck[i];
+		len = strlen(str);
+		for(j=0; j<len; j++) {
+			if( (str[j]=='B'
+				|| str[j]=='b' 
+					&& ( j==0 || !isalpha(str[j-1]) )
+				)
+			&& !strncmp("old",&str[j+1],3)
+			&& (j+4 >= len || !islower(str[j+4]))
+			) {
+				fm->force_bold=1;
+				break;
+			}
+		}
+	}
+}
+
+/*
+ * Functions to decompose the outlines
+ */
+
+static GLYPH *curg;
+static double lastx, lasty;
+
+static int
+outl_moveto(
+	FT_Vector *to,
+	void *unused
+)
+{
+	double tox, toy;
+
+	tox = fscale((double)to->x); toy = fscale((double)to->y);
+
+	/* FreeType does not do explicit closepath() */
+	if(curg->lastentry) {
+		g_closepath(curg);
+	}
+	fg_rmoveto(curg, tox, toy);
+	lastx = tox; lasty = toy;
+
+	return 0;
+}
+
+static int
+outl_lineto(
+	FT_Vector *to,
+	void *unused
+)
+{
+	double tox, toy;
+
+	tox = fscale((double)to->x); toy = fscale((double)to->y);
+
+	fg_rlineto(curg, tox, toy);
+	lastx = tox; lasty = toy;
+
+	return 0;
+}
+
+static int
+outl_conicto(
+	FT_Vector *control1,
+	FT_Vector *to,
+	void *unused
+)
+{
+	double c1x, c1y, tox, toy;
+
+	c1x = fscale((double)control1->x); c1y = fscale((double)control1->y);
+	tox = fscale((double)to->x); toy = fscale((double)to->y);
+
+	fg_rrcurveto(curg,
+		(lastx + 2.0 * c1x) / 3.0, (lasty + 2.0 * c1y) / 3.0,
+		(2.0 * c1x + tox) / 3.0, (2.0 * c1y + toy) / 3.0,
+		tox, toy );
+	lastx = tox; lasty = toy;
+
+	return 0;
+}
+
+static int
+outl_cubicto(
+	FT_Vector *control1,
+	FT_Vector *control2,
+	FT_Vector *to,
+	void *unused
+)
+{
+	double c1x, c1y, c2x, c2y, tox, toy;
+
+	c1x = fscale((double)control1->x); c1y = fscale((double)control1->y);
+	c2x = fscale((double)control2->x); c2y = fscale((double)control2->y);
+	tox = fscale((double)to->x); toy = fscale((double)to->y);
+
+	fg_rrcurveto(curg, c1x, c1y, c2x, c2y, tox, toy);
+	lastx = tox; lasty = toy;
+
+	return 0;
+}
+
+static FT_Outline_Funcs ft_outl_funcs = {
+	outl_moveto,
+	outl_lineto,
+	outl_conicto,
+	outl_cubicto,
+	0,
+	0
+};
+
+/*
+ * Get the path of contrours for a glyph.
+ */
+
+static void
+glpath(
+	int glyphno,
+	GLYPH *glyf_list
+)
+{
+	FT_Outline *ol;
+
+	curg = &glyf_list[glyphno];
+
+	if( FT_Load_Glyph(face, glyphno, FT_LOAD_NO_BITMAP|FT_LOAD_NO_SCALE|FT_LOAD_NO_HINTING) 
+	|| face->glyph->format != ft_glyph_format_outline ) {
+		fprintf(stderr, "Can't load glyph %s, skipped\n", curg->name);
+		return;
+	}
+
+	ol = &face->glyph->outline;
+	lastx = 0.0; lasty = 0.0;
+
+	if( FT_Outline_Decompose(ol, &ft_outl_funcs, NULL) ) {
+		fprintf(stderr, "Can't decompose outline of glyph %s, skipped\n", curg->name);
+		return;
+	}
+
+	/* FreeType does not do explicit closepath() */
+	if(curg->lastentry) {
+		g_closepath(curg);
+	}
+
+	if(ol->flags & ft_outline_reverse_fill) {
+		assertpath(curg->entries, __FILE__, __LINE__, curg->name);
+		reversepaths(curg);
+	}
+}
+
+/*
+ * Get the kerning data.
+ */
+
+static void
+kerning(
+	GLYPH *glyph_list
+)
+{
+	int	i, j, n;
+	int	nglyphs = face->num_glyphs;
+	FT_Vector k;
+	GLYPH *gl;
+
+	if( nglyphs == 0 || !FT_HAS_KERNING(face) ) {
+        WARNING_1 fputs("No Kerning data\n", stderr);
+		return;
+	}
+
+	for(i=0; i<nglyphs; i++)  {
+		if( (glyph_list[i].flags & GF_USED) ==0)
+			continue;
+		for(j=0; j<nglyphs; j++) {
+			if( (glyph_list[j].flags & GF_USED) ==0)
+				continue;
+			if( FT_Get_Kerning(face, i, j, ft_kerning_unscaled, &k) )
+				continue;
+			if( k.x == 0 )
+				continue;
+
+			addkernpair(i, j, k.x);
+		}
+	}
+}
+
+#endif
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/pt1.h
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/pt1.h	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/pt1.h	(revision 2000)
@@ -0,0 +1,262 @@
+/*
+ * see COPYRIGHT
+ */
+
+
+/* glyph entry, one drawing command */
+typedef struct gentry {
+	/* this list links all GENTRYs of a GLYPH sequentially */
+	struct gentry  *next;	/* double linked list */
+	struct gentry  *prev;
+
+	/* this list links all GENTRYs of one contour - 
+	 * of types GE_LINE and GE_CURVE only
+	 * bkwd is also reused: in the very first entry (normally
+	 * of type GE_MOVE) it points to g->entries
+	 */
+	struct gentry  *cntr[2]; /* double-linked circular list */
+/* convenience handles */
+#define bkwd cntr[0]
+#define frwd cntr[1]
+
+	/* various extended structures used at some stage of transformation */
+	void *ext; 
+
+	union {
+		struct {
+			int  val[2][3];	/* integer values */
+		} i;
+		struct {
+			double  val[2][3];	/* floating values */
+		} f;
+	} points; /* absolute values, NOT deltas */
+/* convenience handles */
+#define ipoints	points.i.val
+#define fpoints	points.f.val
+#define ixn ipoints[0]
+#define iyn ipoints[1]
+#define fxn fpoints[0]
+#define fyn fpoints[1]
+#define ix1	ixn[0]
+#define ix2 ixn[1]
+#define ix3 ixn[2]
+#define iy1	iyn[0]
+#define iy2 iyn[1]
+#define iy3 iyn[2]
+#define fx1	fxn[0]
+#define fx2 fxn[1]
+#define fx3 fxn[2]
+#define fy1	fyn[0]
+#define fy2 fyn[1]
+#define fy3 fyn[2]
+
+	char            flags; 
+#define GEF_FLOAT	0x02 /* entry contains floating point data */
+#define GEF_LINE	0x04 /* entry looks like a line even if it's a curve */
+
+	unsigned char	dir; /* used to temporarily store the values for
+				* the directions of the ends of curves */
+/* front end */
+#define CVDIR_FUP	0x02	/* goes over the line connecting the ends */
+#define CVDIR_FEQUAL	0x01	/* coincides with the line connecting the
+				 * ends */
+#define CVDIR_FDOWN	0x00	/* goes under the line connecting the ends */
+#define CVDIR_FRONT	0x0F	/* mask of all front directions */
+/* rear end */
+#define CVDIR_RSAME	0x30	/* is the same as for the front end */
+#define CVDIR_RUP	0x20	/* goes over the line connecting the ends */
+#define CVDIR_REQUAL	0x10	/* coincides with the line connecting the
+				 * ends */
+#define CVDIR_RDOWN	0x00	/* goes under the line connecting the ends */
+#define CVDIR_REAR	0xF0	/* mask of all rear directions */
+
+	signed char     stemid; /* connection to the substituted stem group */
+	char            type;
+#define GE_HSBW	'B'
+#define GE_MOVE 'M'
+#define GE_LINE 'L'
+#define GE_CURVE 'C'
+#define GE_PATH 'P'
+
+	/* indexes of the points to be used for calculation of the tangents */
+	signed char     ftg; /* front tangent */
+	signed char     rtg; /* rear tangent, -1 means "idx 2 of the previous entry" */
+}               GENTRY;
+
+/* stem structure, describes one [hv]stem  */
+/* acually, it describes one border of a stem */
+/* the whole stem is a pair of these structures */
+
+typedef struct stem {
+	short           value;	/* value of X or Y coordinate */
+	short           origin;	/* point of origin for curve stems */
+	GENTRY         *ge; /* entry that has (value, origin) as its first dot */
+		/* also for all the stems the couple (value, origin)
+		 * is used to determine whether a stem is relevant for a
+		 * line, it's considered revelant if this tuple is
+		 * equal to any of the ends of the line.
+		 * ge is also used to resolve ambiguity if there is more than
+		 * one line going through certain pointi, it is used to 
+		 * distinguish these lines.
+		 */
+	 
+	short           from, to;	/* values of other coordinate between
+					 * which this stem is valid */
+
+	short           flags;
+	/* ordering of ST_END, ST_FLAT, ST_ZONE is IMPORTANT for sorting */
+#define ST_END		0x01	/* end of line, lowest priority */
+#define ST_FLAT		0x02	/* stem is defined by a flat line, not a
+				 * curve */
+#define ST_ZONE		0x04	/* pseudo-stem, the limit of a blue zone */
+#define ST_UP		0x08	/* the black area is to up or right from
+				 * value */
+#define ST_3		0x20	/* first stem of [hv]stem3 */
+#define ST_BLUE		0x40	/* stem is in blue zone */
+#define ST_TOPZONE	0x80	/* 1 - top zone, 0 - bottom zone */
+#define ST_VERT     0x100	/* vertical stem (used in substitutions) */
+}               STEM;
+
+#define MAX_STEMS	2000	/* we can't have more stems than path
+				 * elements (or hope so) */
+#define NSTEMGRP	50	/* maximal number of the substituted stem groups */
+
+/* structure for economical representation of the
+ * substituted stems
+ */
+
+typedef struct stembounds {
+	short low; /* low bound */
+	short high; /* high bound */
+	char isvert; /* 1 - vertical, 0 - horizontal */
+	char already; /* temp. flag: is aleready included */
+} STEMBOUNDS;
+
+struct kern {
+	unsigned id; /* ID of the second glyph */
+	int val; /* kerning value */
+};
+
+typedef struct contour {
+	short           ymin, xofmin;
+	short           inside;	/* inside which contour */
+	char            direction;
+#define DIR_OUTER 1
+#define DIR_INNER 0
+}               CONTOUR;
+
+/* becnjcarson: allow glyphs to have multiple character codes.  This isn't 100%
+   perfect, but should be enough for most normal fonts. */
+#define GLYPH_MAX_ENCODINGS  (4)
+
+typedef struct glyph {
+	int             char_no;/* Encoding of glyph */
+	int             orig_code[GLYPH_MAX_ENCODINGS]; /* code(s) of glyph in the font's original encoding */
+	char           *name;	/* Postscript name of glyph */
+	int             xMin, yMin, xMax, yMax;	/* values from TTF dictionary */
+	int             lsb; /* left sidebearing */
+	int             ttf_pathlen; /* total length of TTF paths */
+	short           width;
+	short           flags;
+#define GF_USED	0x0001		/* whether is this glyph used in T1 font */
+#define GF_FLOAT 0x0002		/* thys glyph contains floating point entries */
+
+	GENTRY         *entries;/* doube linked list of entries */
+	GENTRY         *lastentry;	/* the last inserted entry */
+	GENTRY         *path;	/* beggining of the last path */
+	int             oldwidth; /* actually also scaled */
+	int             scaledwidth;
+#define	MAXLEGALWIDTH	10000 
+
+	struct kern    *kern; /* kerning data */
+	int             kerncount; /* number of kerning pairs */
+	int             kernalloc; /* for how many pairs we have space */
+
+	STEM           *hstems; /* global horiz. and vert. stems */
+	STEM           *vstems;
+	int             nhs, nvs;	/* numbers of stems */
+
+	STEMBOUNDS     *sbstems; /* substituted stems for all the groups */
+	short          *nsbs; /* indexes of the group ends in the common array */
+	int             nsg; /* actual number of the stem groups */
+	int             firstsubr; /* first substistuted stems subroutine number */
+
+	CONTOUR        *contours;	/* it is not used now */
+	int             ncontours;
+
+	int             rymin, rymax;	/* real values */
+	/* do we have flat surfaces on top/bottom */
+	char            flatymin, flatymax;
+
+}               GLYPH;
+
+/* description of a dot for calculation of its distance to a curve */
+
+struct dot_dist {
+	double p[2 /*X,Y*/]; /* coordinates of a dot */
+	double dist2; /* squared distance from the dot to the curve */
+	short seg; /* the closest segment of the curve */
+};
+
+extern int      stdhw, stdvw;	/* dominant stems widths */
+extern int      stemsnaph[12], stemsnapv[12];	/* most typical stem width */
+
+extern int      bluevalues[14];
+extern int      nblues;
+extern int      otherblues[10];
+extern int      notherb;
+extern int      bbox[4];	/* the FontBBox array */
+extern double   italic_angle;
+
+extern GLYPH   *glyph_list;
+extern int    encoding[];	/* inverse of glyph[].char_no */
+
+/* prototypes of functions */
+void rmoveto( int dx, int dy);
+void rlineto( int dx, int dy);
+void rrcurveto( int dx1, int dy1, int dx2, int dy2, int dx3, int dy3);
+void assertpath( GENTRY * from, char *file, int line, char *name);
+
+void fg_rmoveto( GLYPH * g, double x, double y);
+void ig_rmoveto( GLYPH * g, int x, int y);
+void fg_rlineto( GLYPH * g, double x, double y);
+void ig_rlineto( GLYPH * g, int x, int y);
+void fg_rrcurveto( GLYPH * g, double x1, double y1,
+	double x2, double y2, double x3, double y3);
+void ig_rrcurveto( GLYPH * g, int x1, int y1,
+	int x2, int y2, int x3, int y3);
+void g_closepath( GLYPH * g);
+
+void pathtoint( GLYPH *g);
+void ffixquadrants( GLYPH *g);
+void flattencurves( GLYPH * g);
+int checkcv( GENTRY * ge, int dx, int dy);
+void iclosepaths( GLYPH * g);
+void fclosepaths( GLYPH * g);
+void smoothjoints( GLYPH * g);
+void buildstems( GLYPH * g);
+void fstraighten( GLYPH * g);
+void istraighten( GLYPH * g, int zigonly);
+void isplitzigzags( GLYPH * g);
+void fsplitzigzags( GLYPH * g);
+void fforceconcise( GLYPH * g);
+void iforceconcise( GLYPH * g);
+void reversepathsfromto( GENTRY * from, GENTRY * to);
+void reversepaths( GLYPH * g);
+void dumppaths( GLYPH * g, GENTRY *start, GENTRY *end);
+void print_glyph( int glyphno);
+int print_glyph_subs( int glyphno, int startid);
+void print_glyph_metrics( FILE *afm_file, int code, int glyphno);
+void print_glyph_metrics_ufm( FILE *ufm_file, int code, int glyphno);
+void findblues(void);
+void stemstatistics(void);
+void docorrectwidth(void);
+void addkernpair( unsigned id1, unsigned id2, int unscval);
+void print_kerning( FILE *afm_file);
+
+int fcrossrayscv( double curve[4][2], double *max1, double *max2);
+int fcrossraysge( GENTRY *ge1, GENTRY *ge2, double *max1, double *max2,
+	double crossdot[2][2]);
+double fdotsegdist2( double seg[2][2], double dot[2]);
+double fdotcurvdist2( double curve[4][2], struct dot_dist *dots, int ndots, double *maxp);
+void fapproxcurve( double cv[4][2], struct dot_dist *dots, int ndots);
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/FONTS.html
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/FONTS.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/FONTS.html	(revision 2000)
@@ -0,0 +1,708 @@
+<HTML>
+<HEAD>
+<TITLE>
+The ttf2pt1 font installation guide 
+</TITLE>
+</HEAD>
+<BODY>
+Sergey A. Babkin
+<br>
+<A HREF="mailto:babkin@users.sourceforge.net">
+&lt;babkin@bellatlantic.net&gt;</A> or <A HREF="mailto:sab123@hotmail.com">&lt;sab123@hotmail.com&gt;</A>
+<p>
+<! 
+(Do not edit this file, it is generated from FONTS.html!!!)
+>
+
+<!-- =defdoc cv ttf2pt1_convert 1 -->
+<!-- =defdoc gs ttf2pt1_x2gs 1 -->
+<H2>
+THE FONT INSTALLATION GUIDE 
+<br>
+for the TTF to Type1 converter and fonts generated by it
+</H2>
+<!
+========================================================
+>
+
+There is historically a number of problems with the support of the 8-bit
+character encodings. This installation guide pays a lot of attention
+to the 8-bit issues, because these issues are responsible for the
+most of troubles during the installation of fonts. But they are
+not the only things covered in this guide, so it's worth reading
+even if all you need is plain ASCII. For convenience of reading
+I have marked the paragraphs dealing solely with 8-bit problems
+with characters <FONT COLOR="#3333FF"><FONT SIZE=-1>*8*</FONT></FONT>.
+<p>
+
+To simplify this installation the distribution package of the
+converter contains a number of scripts written in shell and
+Perl. So, to run them you will need a shell interpreter (Bourne-shell,
+POSIX-shell, Korn-shell are OK, ba-shell is probably also OK but not 
+tested yet). The Perl scripts were tested with Perl5 but probably
+should work with Perl4 too. All the scripts are located in the
+`scripts' subdirectory.
+<p>
+
+This guide considers the following issues of installation of the 
+fonts:
+<p>
+
+<b>
+<ul>
+<li> <A HREF="#X11">X11</A><br>
+<li> <A HREF="#gs">Ghostscript</A><br>
+<li> <A HREF="#win">MS Windows</A><br>
+<li> <A HREF="#netscape">Netscape Navigator/Communicator</A><br>
+<li> <A HREF="#rpm">Linux RPM package</A><br>
+<li> <A HREF="#framemaker">FrameMaker</A><br>
+<li> <A HREF="#soffice">StarOffice</A><br>
+</ul>
+</b><p>
+
+<A NAME="X11"></A>
+<H3>
+X11
+</H3>
+<!
+===
+>
+
+<!-- =section cv NAME -->
+<!-- =text B&lt;ttf2pt1_convert&gt; - convenience font conversion script -->
+<!-- =stop -->
+To simplify the conversion a set of scripts is provided with <b>ttf2pt1</b>.
+They are collected in the `<TT>scripts</TT>' subdirectory. 
+<p>
+
+<!-- =section cv DESCRIPTION -->
+`<b>Convert</b>' is the master conversion script provided with ttf2pt1. 
+When installed into a public directory it's named `<b>ttf2pt1_convert</b>' 
+to avoid name collisions with the other programs.
+<p>
+<!-- =stop -->
+
+It's called as:
+<p>
+
+<!-- =section cv SYNOPSIS -->
+<!-- =text ttf2pt1_convert B&lt;[config-file]&gt; -->
+<!-- =stop -->
+<blockquote>
+  convert <i>[config-file]</i>
+</blockquote>
+
+<!-- =section cv DESCRIPTION -->
+If the configuration file is not specified as an argument then the file
+`<TT>convert.cfg</TT>' in the current directory is used. This file contains
+a set of configuration variables. The distribution contains a sample file
+file `<TT>convert.cfg.sample</TT>'. Please copy it to `<TT>convert.cfg</TT>',
+look inside it and change the configuration variables. The more stable
+configuration variables, such as the path names of the scripts and
+encoding files are located in `<TT>convert</TT>' itself, they are
+automatically updated when installing <b>ttf2pt1</b>.
+<p>
+
+Put all the TTF fonts you want to convert into some directory (this
+may be just the directory that already contains all the Windows
+fonts on a mounted FAT filesystem). If you have fonts in different
+source encoding then put the fonts in each of the encodings
+into a separate directory. Up to 10 source directories are
+supported. If you (in a rather unlikely case) have more source
+directories then you can make two separate runs of the converter,
+converting up to 10 directories at a time.
+<p>
+
+The variables in the configuration file are:
+<p>
+
+<!-- ==over 2 -->
+<!-- ==item * -->
+<B><tt>SRCDIRS</tt></B> - the list of directories (with absolute paths) with 
+  TTF fonts. Each line contains at least 3 fields: the name of the directory,
+  the language of the fonts in it (if you have fonts for different 
+  languages you have to put them into the separate directories) and the
+  encoding of the fonts. Again, if you have some of the TTF typefaces in 
+  one encoding, and some in another (say, CP-1251 and KOI-8), you have 
+  to put them into the separate source directories. Some lines may contain
+  4 fields. Then the fourth field is the name of the external map to
+  convert the Unicode fonts into the desirable encoding. This map is
+  used instead of the built-in map for the specified language.
+<p>
+
+<FONT COLOR="#3333FF"><FONT SIZE=-1>*8*</FONT></FONT>
+An interesting thing is that some languages have more than one
+widely used character encodings. For example, the widely used
+encodings for Russian are IBM CP-866 (MS-DOS and Unix), KOI-8
+(Unix and VAX, also the standard Internet encoding), IBM CP-1251 (MS Windows).
+That's why I have provided the means to generate the converted fonts
+in more than one encoding. See the file <A HREF="encodings/README.html">encodings/README</A> for 
+details about the encoding tables. Actually, if you plan to use
+these fonts with Netscape Navigator better use the aliases
+cp-866 instead of ibm-866 and windows-1251 instead of ibm-1251
+because that's what Netscape wants.
+<p>
+
+<!-- ==item * -->
+<b><tt>DSTDIR</tt></b> - directory for the resulting Type1 fonts. Be careful!
+  This directory gets completely wiped out before conversion,
+  so don't use any already existing directory for this purpose.
+<p>
+
+<!-- ==item * -->
+<b><tt>DSTENC<i>{language}</i></tt></b> - the list of encodings in which the destination 
+  fonts will be generated for each language. Each font of that 
+  language will be generated in each of the specified
+  encodings. If you don't want any translation, just specify both
+  <tt>SRCENC</tt> and <tt>DSTENC</tt> as iso8859-1 (or if you want any other encoding
+  specified in the fonts.dir, copy the description of 8859-1 with
+  new name and use this new name for <tt>SRCENC</tt> and <tt>DSTENC</tt>).
+<p>
+
+<!-- ==item * -->
+<b><tt>FOUNDRY</tt></b> - the foundry name to be used in the fonts.dir file. I have
+  set it to `fromttf' to avoid name conflicts with any existing font for
+  sure. But this foundry name is not registered in X11 standards and
+  if you want to get the full standard compliance or have a font server
+  that enforces such a compliance, use `misc'.
+<p>
+<!-- ==back -->
+
+The next few parameters control the general behavior of the converter.
+They default values are set to something reasonable.
+<p>
+
+<!-- ==over 2 -->
+<!-- ==item * -->
+<b><tt>CORRECTWIDTH</tt></b> - if the value is set to <b><tt>YES</tt></b> then use the 
+  converter option <tt><b>-w</b></tt>, otherwise don't use it. See the description of 
+  this option in the <A HREF="README.html">README</A> file.
+<p>
+
+<!-- ==item * -->
+<b><tt>REMOVET1A</tt></b> - if the value is set to <b><tt>YES</tt></b> then after
+  conversion remove the un-encoded <tt>.t1a</tt> font files and the 
+  intermediate <tt>.xpfa</tt> font metric files.
+<p>
+
+<!-- ==item * -->
+<b><tt>INSTALLFONTMAP</tt></b> - a Ghostscript parameter, if the value is set to 
+  <b><tt>YES</tt></b> then install the entries for the new fonts
+  right into the main <tt>Fontmap</tt> file. Otherwise just leave
+  the file <tt>Fontmap.ttf</tt> in the Ghostscript configuration
+  directory.
+<p>
+
+<!-- ==item * -->
+<b><tt>HINTSUBST</tt></b> - if the value is set to <b><tt>YES</tt></b> use the option
+  <tt><b>-H</b></tt>, otherwise don't use it. This option enables the
+  hint substitution technique. If you have not installed the X11 patch
+  described above, use this option with great caution. See further 
+  description of this option in the <A HREF="README.html">README</A> file.
+<p>
+
+<!-- ==item * -->
+<b><tt>ENFORCEISO</tt></b> - if the value is set to <b><tt>YES</tt></b> then
+  disguise the resulting fonts as the fonts in ISOLatin1 encoding. Historically
+  this was neccessary due to the way the installer scripts created the
+  X11 font configuration files. It is not neccessary any more for this
+  purpose. But if you plan to use these fonts with some other application
+  that expects ISOLatin1 encoding then better enable this option.
+<p>
+
+<!-- ==item * -->
+<b><tt>ALLGLYPHS</tt></b> - if the value is set to <b><tt>YES</tt></b> then
+  include all the glyphs from the source fonts into the resulting fonts, even
+  if these glyphs are inaccessible. If it's set to <b><tt>NO</tt></b> then
+  include only the glyphs which have codes assigned to them. The glyphs
+  without codes can not be used directly. But some clever programs,
+  such as the Type 1 library from XFree86 3.9 and higher can change
+  the encoding on the fly and use another set of glyphs. If you have not 
+  installed the X11 patch described above, use this option with great 
+  caution. See further description of the option option <tt><b>-a</b></tt> in the 
+  <A HREF="README.html">README</A> file.
+<p>
+
+<!-- ==item * -->
+<b><tt>GENUID</tt></b> - if the value is set to <b><tt>YES</tt></b> then use
+  the option <tt><b>-uA</b></tt> of the converter to generate UniqueIDs for
+  the converted fonts. The standard X11 Type 1 library does not use
+  this ID, so it may only be neccessary for the other applications.
+  The script is clever enough to generate different UniqueID for the
+  same font converted to multiple encodings. Also after conversion it
+  checks all the fonts generacted during the session for duplicated
+  UniqueID and shows those. Still, this does not quarantee that these
+  UniqueIDs won't overlap with some other fonts. The UniqueIDs are
+  generated as hash values from the font names, so it's guaranteed
+  that if the `<tt>convert</tt>' script runs multiple times it will
+  generate the same UniqueIDs during each run. See further description 
+  of this option in the <A HREF="README.html">README</A> file.
+<p>
+
+<!-- ==item * -->
+<b><tt>GENUID</tt></b> - if the value is set to <b><tt>YES</tt></b> then create
+  the <tt>.pfb</tt> files, otherwise the <tt>.pfa</tt> files. The <tt>.pfb</tt>
+  files are more compact but contain binary data, so you may experience some
+  troubles when transferring them through the network.
+<p>
+<!-- ==back -->
+
+The following parameters are used to locate the other scripts and
+configuration files. By default the scripts do a bit of guessing for them:
+they search in the <b>ttf2pt1</b> installation directory if <b>ttf2pt1</b>
+was installed or otherwise suppose that you are running `<tt>convert</tt>' with
+`<tt>scripts</tt>' subdirectory being the current directory.
+<p>
+
+<!-- ==over 2 -->
+<!-- ==item * -->
+<b><tt>ENCDIR</tt></b> - directory containing the descriptions of encodings
+<br>
+<!-- ==item * -->
+<b><tt>MAPDIR</tt></b> - directory containing the external map files
+<p>
+<!-- ==back -->
+
+Besides that a few parameters are built into the `<tt>convert</tt>' script itself.
+You probably won't need to change them:
+<p>
+
+<!-- ==over 2 -->
+<!-- ==item * -->
+<tt><b>T1ASM</b></tt>, <tt><b>TTF2PT1</b></tt>, <tt><b>TRANS</b></tt>, <tt><b>T1FDIR</b></tt>, <tt><b>FORCEISO</b></tt> - paths to the other script
+<p>
+<!-- ==back -->
+
+Also there are a few parameters controlling the installation of
+fonts for Ghostscript. Please look at their description in the 
+<A HREF="#gs">Ghostscript</a> section of documentation or in the <b>ttf2pt1_x2gs(1)</b>
+manual page before running `<tt>convert</tt>'. If these parameters are
+set, `<tt>convert</tt>' will call the `<tt>x2gs</tt>' script automatically
+to install the newly converted fonts in Ghostscript.
+<p>
+
+After creating the configuration file run the `<tt>convert</tt>' script. Look at
+the result and the log file in <tt>DSTDIR</tt>.
+<p>
+
+Add the directory with newly converted fonts to the configuration
+of X server or font server. For most of the systems this step is
+very straightforward. For HP-UX it's rather tricky and poorly
+documented, so the file <A HREF="FONTS.hpux.html">FONTS.hpux</A> gives a short description.
+<p>
+
+If you don't have the privileges of the root user, you still can
+configure your private font server. Just use some non-standard
+port number (see <A HREF="FONTS.hpux.html">FONTS.hpux</A> for an example, exept that you won't
+need all the HP-related stuff on any other system).
+<p>
+<!-- =stop -->
+
+<H4>
+Known Problems
+</H4>
+<!
+--------------
+>
+<!-- =section cv BUGS -->
+<!-- ==head2 Known problems -->
+
+<ul>
+<li> One catch is that the X11 Type 1 font library has a rather low limit
+  on the font size. Because of this the fonts with  more complicated
+  outlines and the enabled hint substitution may not fit into
+  this limit. The same applies to the fonts with very complicated
+  outlines or with very many glyphs (especially the fonts with
+  over 256 glyphs). So you will need to excercise caution with
+  these options if you plan using these fonts with X11. Some vendors 
+  such as HP provide the Type 1 implementation licensed from Adobe 
+  which should have no such problem.
+<p>
+
+  But there is a solution even for the generic X11. A patch located
+  in the subdirectory `<tt>app/X11</tt>' fixes this problem as well
+  as some other minor problems. Its description is provided in
+  <A HREF="app/X11/README.html">app/X11/README</A>.
+<p>
+
+  To fix the X11 font library, you have to get the X11 sources. I
+  can recommend the ftp sites of the XFree86 project <A HREF="ftp://ftp.xfree86.org">ftp://ftp.xfree86.org</A>
+  or of the Open Group <A HREF="ftp://ftp.x.org">ftp://ftp.x.org</A>. This patch was made on the sources
+  of XFree86 so you may have better success with applying it to the
+  XFree86 distribution. After you have got the sources, make sure
+  that you can compile them. Then apply the patch as described.
+  Make sure that it was applied properly. Compile the sources again
+  (actually, you need only the fonts library, the fonts server, and
+  possibly the X server). It would be prudent now to save your old
+  font library, font server and, possibly, X server. Then install
+  the new recently compiled versions of these files. Of course,
+  if you know someone who already has compiled these files for the
+  same OS as yours, you can just copy the binary fles from him.
+<p>
+
+  Alas, building the X11 system from the source code is not the
+  easiest thing in the world and if you have no experience it
+  can be quite difficult. In this case just avoid the aforementioned
+  features or check each converted font to make sure that it
+  works properly.
+<p>
+
+<li> The Type1 font library from the standard X11 distribution
+  does not work on HP-UX (at least, up to 10.01). The font server
+  supplied with HP-UX up to 10.01 is also broken. Starting from 
+  HP-UX 10.20 (I don't know about 10.10) they supply a proprietary font 
+  library and the converted fonts work fine with it, provided that
+  they are configured properly (see the file <A HREF="FONTS.hpux.html">FONTS.hpux</A>).
+<p>
+
+<li> The <tt>fonts.scale</tt> files created by the older versions of the
+  <tt>ttf2pt1</tt> installation program (up to release 3.1) have conflicted 
+  with the language definitions of the <tt>Xfsft</tt> font server and
+  parts of it included into XFree86. To overcome this incompatibility
+  the never versions creats the <tt>fonts.scale</tt> file describing all the
+  fonts as belonging to the <tt>adobe-fontspecific</tt> encoding and
+  the <tt>fonts.alias</tt> file with the proper names. The drawback of
+  this solution is that <tt>xlsfonts</tt> gives the list of twice more
+  fonts. But as a side effect the option <tt><b>ENFORCEISO</b></tt> in
+  `<tt>convert.cfg</tt>' is not required for X11 any more.
+<p>
+
+<li> The conversion script has no support for Eastern multi-plane fonts.
+  Contribution of such a support would be welcome.
+<p>
+</ul>
+<!-- =stop -->
+<!-- =section cv FILES -->
+<!-- ==over 2 -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/scripts/convert.cfg.sample -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/scripts/* -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/README -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/FONTS -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/* -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_BINDIR/ttf2pt1 -->
+<!-- ==back -->
+<!-- =stop -->
+<!-- =section cv SEE ALSO -->
+<!-- ==over 4 -->
+<!-- ==item * -->
+<!-- =text L&lt;ttf2pt1(1)&gt; -->
+<!-- ==item * -->
+<!-- =text L&lt;ttf2pt1_x2gs(1)&gt; -->
+<!-- ==item * -->
+<!-- =text L&lt;t1asm(1)&gt; -->
+<!-- ==back -->
+<!-- =stop -->
+
+<A NAME="gs"></A>
+<H3>
+Ghostscript
+</H3>
+<!
+===========
+>
+<!-- =section gs NAME -->
+<!-- =text B&lt;ttf2pt1_x2gs&gt; - font installer for Ghostscript -->
+<!-- =stop -->
+
+<!-- =section gs DESCRIPTION -->
+The fonts generated with <b>ttf2pt1</b> work fine with Ghostscript by
+themselves. The script `<b>x2gs</b>' (or `<b>ttf2pt1_x2gs</b>' when installed
+into a public directory, to avoid name conflicts with other
+programs) links the font files from the X11 direcotry into the Ghostscript 
+directory and automatically creates the description file (<tt>Fontmap</tt>) 
+in Ghostscript format.
+<!-- =stop -->
+
+It's called as:
+<p>
+
+<!-- =section gs SYNOPSIS -->
+<!-- =text ttf2pt1_x2gs B&lt;[config-file]&gt; -->
+<!-- =stop -->
+<blockquote>
+  x2gs <i>[config-file]</i>
+</blockquote>
+
+<!-- =section gs DESCRIPTION -->
+If the configuration file is not specified as an argument then the file
+`<TT>convert.cfg</TT>' in the current directory is used, just like the
+`<tt>convert</tt>' script does. Indeed, this configuration file is used for 
+both scripts.
+<p>
+
+The Ghostscript-related parameters in the configuration file are:
+<p>
+
+<b><tt>DSTDIR</tt></b> - the X11 font directory used by `<tt>x2gs</tt>' as the
+  source of the fonts. This parameter is common with the X11 
+  configuration.
+<p>
+
+<b><tt>GSDIR</tt></b> - the base directory of Ghostsript. If this
+  parameter is set to an empty string then `<tt>convert</tt>' won't
+  call `<tt>x2gs</tt>'. So if you want to get only the X11 fonts
+  installed then set this parameter to an empty string. This 
+  directory may vary on various system, so please check your 
+  system and set this value accordingly before running the script.
+<p>
+
+<b><tt>GSFONTDIR</tt></b> - the font directory of Ghostscript. In the standard
+  Ghostscript installation it's a subdirectory of <tt>GSDIR</tt> 
+  but some systems may use completely different directories.
+<p>
+
+<b><tt>GSCONFDIR</tt></b> - the configuration subdirectory of Ghostscript
+  that contains the <tt>Fontmap</tt> file.
+<p>
+
+<b><tt>INSTALLFONTMAP</tt></b> - if the value is set to <b><tt>YES</tt></b> then 
+  install the entries for the new fonts right into the main 
+  <tt>Fontmap</tt> file. Otherwise just leave the file <tt>Fontmap.ttf</tt> 
+  in the Ghostscript configuration directory.
+<p>
+
+
+After preparing the configuration file run the script. It symbolicaly links 
+all the font files and creates the description file <tt>Fontmap.ttf</tt> in 
+<tt>GSCONDFIR</tt>. After that there are two choices. 
+<p>
+
+If the option <tt>INSTALLFONTMAP</tt> was set to <tt>YES</tt> then 
+the font descriptions are also automatically installed into the
+master <tt>Fontmap</tt> file. The script is clever enough to
+detect if it was run multiple times with the same directories
+and if so it replaces the old <tt>Fontmap</tt> entries with
+the new ones instead of just accumulating all of them. You
+may also run it multiple times for multiple X11 directories
+and all the results will be properly collected in the <tt>Fontmap</tt>.
+But it's your responsibility to watch that the names of the
+font files don't overlap. If the X11 font directory gets
+renamed then you have to remove its font entries from the
+<tt>Fontmap</tt> and only after that re-run `<tt>x2gs</tt>'
+for the new directory. 
+<p>
+
+On the other hand if the option <tt>INSTALLFONTMAP</tt> was set to 
+<tt>NO</tt> then go to the <tt>GSCONFDIR</tt> directory and insert the 
+contents of <tt>Fontmap.ttf</tt> into the <tt>Fontmap</tt> file
+manually. This step may be left manual to make the installation
+a little bit more safe. 
+<p>
+
+After that you may also want to redefine some of the aliases in 
+<tt>Fontmap</tt> to refer to the newly installed fonts.
+But the redefinition of the aliases may be dangerous if the width of
+characters in the new font will be different from the old font.
+Alas, there is no visible solution of this problem yet.
+<p>
+<!-- =stop -->
+<!-- =section gs FILES -->
+<!-- ==over 2 -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/scripts/convert.cfg.sample -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/scripts/* -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/README -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/FONTS -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/* -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_BINDIR/ttf2pt1 -->
+<!-- ==back -->
+<!-- =stop -->
+<!-- =section gs SEE ALSO -->
+<!-- ==over 4 -->
+<!-- ==item * -->
+<!-- =text L&lt;ttf2pt1(1)&gt; -->
+<!-- ==item * -->
+<!-- =text L&lt;ttf2pt1_convert(1)&gt; -->
+<!-- ==item * -->
+<!-- =text L&lt;t1asm(1)&gt; -->
+<!-- ==back -->
+<!-- =stop -->
+
+<A NAME="win"></A>
+<H3>
+MS Windows
+</H3>
+<!
+===========
+>
+
+<b>Ttf2pt1</b> can be built on Windows either with native compiler or in
+POSIX emulation mode.
+<p>
+
+Native MS Windows compilers require a different way to build the converter 
+instead of the Makefile (their <tt>make</tt> programs commonly are quite weird
+and limited in capabilities). An example of batch file <tt>winbuild.bat</tt> 
+is provided for MS Visual C/C++. Probably it can be easily adapted for other 
+32-bit Windows and DOS compilers. The important part is to define the 
+preprocessor symbol WINDOWS during compilation.
+<p>
+
+Cygnus <tt>make</tt> almost supports full Makefiles but not quite. Seems
+like its POSIX support is also of the same quality "almost but not quite".
+So another command file <tt>cygbuild.sh</tt> is provided for Cygnus GNU C, also 
+with the preprocessor symbol WINDOWS defined. It is intended to be run from
+the Cygnus BASH shell. To run the programs produced by the Cygnus compiler 
+the Cygnus library file <tt>CYGWIN1.DLL</tt> should be copied first into 
+<tt>C:\WINDOWS</tt>.
+<p>
+
+To run the accompanying scripts Perl for Windows will be required as well as 
+other tools from the Cygnus set.
+<p>
+
+The Windows support was not particularly tested, so in case of problems with
+building or running the converter please let us know.
+<p>
+
+The pre-built code (possibly of an older version) of ttf2pt1 for MS Windows is
+available from the GnuWin32 project from
+
+<A HREF="http://gnuwin32.sourceforge.net/packages/ttf2pt1.htm">http://gnuwin32.sourceforge.net/packages/ttf2pt1.htm</A>
+<p>
+
+<A NAME="netscape"></a>
+<H3>
+Netscape Navigator/Communicator
+</H3>
+<!
+===============================
+>
+
+Basically, the biggest problem with Netscape Navigator is that
+it has built-in fixed PostScript font names and built-in fixed 
+glyph tables for them. Oh, no, that's two! Let's start over: 
+basically the two biggest problems of Netscape Navigator are 
+that (one)it has built-in fixed PostScript font names and (two)
+built-in fixed glyph tables for them and (three) it always
+assumes that the fonts have ISOLatin1 encoding. OK, let's
+start over again: basically the three biggest problems of Netscape 
+Navigator are that (one) it has built-in fixed PostScript font names, 
+(two) built-in fixed glyph tables for them and (three) it always
+assumes that the fonts have ISOLatin1 encoding and (four) it
+does not remember the scaled font size between the sessions.
+You did not expect such a Spanish Inquisition, did you ? (<A HREF="#nsfn1">*</a>)
+<p>
+
+Luckily, we have solutions for all of these problems. They are
+located in the subdirectory `<tt>app/netscape</tt>' and described
+in <A HREF="app/netscape/README.html">app/netscape/README</a>.
+<p>
+
+<A NAME="nsfn1"></a>
+&nbsp;&nbsp;-------<br>
+&nbsp;&nbsp;<FONT SIZE=-1>*) See Monty Python's Flying Circus, episode 15</FONT></FONT>
+<p>
+
+<FONT COLOR="#3333FF"><FONT SIZE=-1>*8*</FONT></FONT>
+<H4>
+Netscape and cyrillic fonts<br>
+<!
+---------------------------
+>
+(courtesy of Zvezdan Petkovic)
+</H4>
+
+If you use TrueType fonts in your X, as I do, and you always get
+KOI8-R encoded pages, then your Netscape does not recognise windows-1251
+encoding.  Microsoft TrueType fonts simply declare all encodings they
+can support including KOI8-R.  For some reason, KOI8-R always wins over
+ISO-8859-5 in Netscape under X.  If you are reading other cyrillic
+languages besides Russian, you might want to either erase KOI8-R entries
+from the fonts.dir and fonts.scale files, or alternatively fix Netscape.
+I put this line in my .Xdefaults.
+<p>
+
+<blockquote><tt>
+    Netscape*documentFonts.charset*koi8-r:               iso-8859-5
+</tt></blockquote>
+<p>
+
+Notice that you can still read Russian sites without trouble because
+Netscape translates KOI8-R to ISO-8859-5 on the fly. I read both Russian
+and Serbian sites with no trouble.
+<p>
+
+<b>Note:</b> <i>If anybody knows the way to tell Netscape under Unix how to 
+recognise {windows,ibm,cp}-1251 encoded fonts, I'd like to hear about that.</i>
+<p>
+
+<A NAME="rpm"></a>
+<H3>
+Linux RPM package
+</H3>
+<!
+=================
+>
+
+The spec file for the creation of a Linux RPM package is located in 
+<tt>app/RPM</tt>. It has been contributed by Johan Vromans.  When 
+<tt>make all</tt> is ran in the main directory it among the other 
+things creates the version of itself adapted to Linux in <tt>app/RPM</tt>,
+you may want to copy that version back to the main directory.
+<p>
+
+<B>Warning:</B> Please note that the install section is incomplete, and 
+the installed scripts won't work until the paths inside them
+are corrected.
+<p>
+
+<A NAME="framemaker"></a>
+<H3>
+FrameMaker
+</H3>
+<!
+==========
+>
+
+The fonts and AFM files generated by the version 3.2 and higher 
+should work with Framemaker without problems. The AFM files 
+generated by the previous versions of the converter require a 
+line added to them:
+<p>
+
+&nbsp;&nbsp;<tt>EncodingScheme FontSpecific</tt>
+<p>
+
+And the underscores in the font names of the font and AFM files 
+generated by the older versions may need to be changed to dashes.
+<p>
+
+<B>NOTE by Jason Baietto:</B> Ignore the directions in the Frame on-line docs 
+that say to put a "serverdict begin 0 exitserver" line in the pfa files.  
+Doing this caused both my printer and ghostscript to choke on the resulting
+output from FrameMaker, so I would not advise doing this (though your
+mileage may vary).
+<p>
+
+<A NAME="soffice"></a>
+<H3>
+StarOffice
+</H3>
+<!
+==========
+>
+
+StarOffice 5.1x has been reported to crash if the <tt>.afm</tt> file contains
+spaces in the values of such statements as <b>Version</b>, <b>Weight</b> etc.
+These spaces are permitted by the Adobe spec, so this is a problem of
+StarOffice. The easiest way to fix these <tt>.afm</tt> files for StarOffice
+is to remove spaces in these strings or remove these strings (in case if
+they are optional) at all. This can be done automatically with a <tt>sed</tt>
+script. It seems that StarOffice 5.2 has this problem fixed, so we decided to
+spend no efforts on providing workarounds for 5.1 with <tt>ttf2pt1</tt>.
+<p>
+
+</BODY>
+</HTML>
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/bitmap.c
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/bitmap.c	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/bitmap.c	(revision 2000)
@@ -0,0 +1,2633 @@
+/*
+ * Handling of the bitmapped glyphs
+ *
+ * Copyright (c) 2001 by the TTF2PT1 project
+ * Copyright (c) 2001 by Sergey Babkin
+ *
+ * see COPYRIGHT for the full copyright notice
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "pt1.h"
+#include "global.h"
+
+/* possible values of limits */
+#define L_NONE	0 /* nothing here */
+#define L_ON	1 /* black is on up/right */
+#define L_OFF	2 /* black is on down/left */
+
+static int warnedhints = 0;
+
+
+#ifdef USE_AUTOTRACE
+#include <autotrace/autotrace.h>
+
+/*
+ * Produce an autotraced outline from a bitmap.
+ * scale - factor to scale the sizes
+ * bmap - array of dots by lines, xsz * ysz
+ * xoff, yoff - offset of the bitmap's lower left corner
+ *              from the logical position (0,0)
+ */
+
+static void
+autotraced_bmp_outline(
+	GLYPH *g,
+	int scale,
+	char *bmap,
+	int xsz,
+	int ysz,
+	int xoff,
+	int yoff
+)
+{
+	at_bitmap_type atb;
+	at_splines_type *atsp;
+	at_fitting_opts_type *atoptsp;
+	at_spline_list_type *slp;
+	at_spline_type *sp;
+	int i, j, k;
+	double lastx, lasty;
+	double fscale;
+	char *xbmap;
+
+	fscale = (double)scale;
+
+	/* provide a white margin around the bitmap */
+	xbmap = malloc((ysz+2)*(xsz+2));
+	if(xbmap == 0)  {
+		fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+		exit(255);
+	}
+	memset(xbmap, 0, xsz+2);  /* top margin */
+	for(i=0, j=xsz+2; i<ysz; i++, j+=xsz+2) {
+		xbmap[j] = 0; /* left margin */
+		memcpy(&xbmap[j+1], &bmap[xsz*(ysz-1-i)], xsz); /* a line of bitmap */
+		xbmap[j+xsz+1] = 0; /* right margin */
+	}
+	memset(xbmap+j, 0, xsz+2);  /* bottom margin */
+	xoff--; yoff-=2; /* compensate for the margins */
+
+	atoptsp = at_fitting_opts_new();
+
+	atb.width = xsz+2;
+	atb.height = ysz+2;
+	atb.np = 1;
+	atb.bitmap = xbmap;
+
+	atsp = at_splines_new(&atb, atoptsp);
+
+	lastx = lasty = -1.;
+	for(i=0; i<atsp->length; i++) {
+		slp = &atsp->data[i];
+#if 0
+		fprintf(stderr, "%s: contour %d: %d entries clockwise=%d color=%02X%02X%02X\n",
+			g->name, i, slp->length, slp->clockwise, slp->color.r, slp->color.g, slp->color.b);
+#endif
+		if(slp->length == 0)
+			continue;
+#if 0
+		if(slp->color.r + slp->color.g + slp->color.b == 0)
+			continue;
+#endif
+		fg_rmoveto(g, fscale*(slp->data[0].v[0].x+xoff), fscale*(slp->data[0].v[0].y+yoff));
+		for(j=0; j<slp->length; j++) {
+#if 0
+			fprintf(stderr, "  ");
+			for(k=0; k<4; k++)
+				fprintf(stderr, "(%g %g) ", 
+					fscale*(slp->data[j].v[k].x+xoff), 
+					fscale*(ysz-slp->data[j].v[k].y+yoff)
+					);
+			fprintf(stderr, "\n");
+#endif
+			fg_rrcurveto(g,
+				fscale*(slp->data[j].v[1].x+xoff), fscale*(slp->data[j].v[1].y+yoff),
+				fscale*(slp->data[j].v[2].x+xoff), fscale*(slp->data[j].v[2].y+yoff),
+				fscale*(slp->data[j].v[3].x+xoff), fscale*(slp->data[j].v[3].y+yoff) );
+		}
+		g_closepath(g);
+	}
+
+	at_splines_free(atsp);
+	at_fitting_opts_free(atoptsp);
+	free(xbmap);
+}
+
+#endif /*USE_AUTOTRACE*/
+
+/* an extension of gentry for description of the fragments */
+typedef struct gex_frag GEX_FRAG;
+struct gex_frag {
+	/* indexes to len, the exact values and order are important */
+#define GEXFI_NONE	-1
+#define GEXFI_CONVEX	0
+#define GEXFI_CONCAVE	1
+#define GEXFI_LINE	2 /* a line with steps varying by +-1 pixel */
+#define GEXFI_EXACTLINE	3 /* a line with exactly the same steps */
+#define GEXFI_SERIF	4 /* small serifs at the ends of stemsi - must be last */
+#define GEXFI_COUNT	5 /* maximal index + 1 */
+	unsigned short len[GEXFI_COUNT]; /* length of various fragment types starting here */
+	unsigned short lenback[GEXFI_COUNT]; /* length back to the start of curve */
+
+	signed char ixstart; /* index of the frag type that starts here */
+	signed char ixcont; /* index of the frag type that continues here */
+
+	short flags;
+#define GEXFF_HLINE	0x0001 /* the exact line is longer in "horizontal" dimension */
+#define GEXFF_EXTR	0x0002 /* this gentry is an extremum in some direction */
+#define GEXFF_CIRC	0x0004 /* the joint at this gentry is for a circular curve */
+#define GEXFF_DRAWCURVE	0x0008 /* vect[] describes a curve to draw */
+#define GEXFF_DRAWLINE	0x0010 /* vect[] describes a line to draw */
+#define GEXFF_SPLIT	0x0020 /* is a result of splitting a line */
+#define GEXFF_SYMNEXT	0x0040 /* this subfrag is symmetric with next one */
+#define GEXFF_DONE	0x0080 /* this subfrag has been vectorized */
+#define GEXFF_LONG	0x0100 /* this gentry is longer than 1 pixel */
+
+	unsigned short aidx; /* index of gentry in the array representing the contour */
+	
+	unsigned short vectlen; /* number of gentries represented by vect[] */
+
+	/* coordinates for vectored replacement of this fragment */
+	/* (already scaled because it's needed for curve approximation) */
+	double vect[4 /*ref.points*/][2 /*X,Y*/];
+
+	double bbox[2 /*X,Y*/]; /* absolute sizes of bounding box of a subfragment */
+
+	/* used when splitting the curved frags into subfrags */
+	GENTRY *prevsub;  /* to gentries describing neighboring subfrags */
+	GENTRY *nextsub;
+	GENTRY *ordersub; /* single-linked list describing the order of calculation */
+
+	int sublen; /* length of this subfrag */
+	/* the symmetry across the subfrags */
+	int symaxis; /* the symmetry axis, with next subfrag */
+	int symxlen; /* min length of adjacent symmetric frags */
+	/* the symmetry within this subfrag (the axis is always diagonal) */
+	GENTRY *symge; /* symge->i{x,y}3 is the symmetry point of symge==0 if none */
+
+};
+#define	X_FRAG(ge)	((GEX_FRAG *)((ge)->ext))
+
+/* various interesting tables related to GEX_FRAG */
+static char *gxf_name[GEXFI_COUNT] = {"Convex", "Concave", "Line", "ExLine", "Serif"};
+static int gxf_cvk[2] = {-1, 1}; /* coefficients of concaveness */
+
+/*
+ * Dump the contents of X_EXT()->len and ->lenback for a contour
+ */
+static void
+gex_dump_contour(
+	GENTRY *ge,
+	int clen
+)
+{
+	int i, j;
+
+	for(j = 0; j < GEXFI_COUNT; j++) {
+		fprintf(stderr, "%-8s", gxf_name[j]);
+		for(i = 0; i < clen; i++, ge = ge->frwd)
+			fprintf(stderr, " %2d", X_FRAG(ge)->len[j]);
+		fprintf(stderr, " %p\n (back) ", ge);
+		for(i = 0; i < clen; i++, ge = ge->frwd)
+			fprintf(stderr, " %2d", X_FRAG(ge)->lenback[j]);
+		fprintf(stderr, "\n");
+	}
+}
+
+/*
+ * Calculate values of X_EXT()->lenback[] for all entries in
+ * a contour. The contour is identified by:
+ *  ge - any gentry of the contour
+ *  clen - contour length
+ */
+
+static void
+gex_calc_lenback(
+	GENTRY *ge,
+	int clen
+)
+{
+	int i, j;
+	int end;
+	GEX_FRAG *f;
+	int len[GEXFI_COUNT]; /* length of the most recent fragment */
+	int count[GEXFI_COUNT]; /* steps since beginning of the fragment */
+
+	for(j = 0; j < GEXFI_COUNT; j++)
+		len[j] = count[j] = 0;
+
+	end = clen;
+	for(i = 0; i < end; i++, ge = ge->frwd) {
+		f = X_FRAG(ge);
+		for(j = 0; j < GEXFI_COUNT; j++) {
+			if(len[j] != count[j]) {
+				f->lenback[j] = count[j]++;
+			} else
+				f->lenback[j] = 0;
+			if(f->len[j] != 0) {
+				len[j] = f->len[j];
+				count[j] = 1; /* start with the next gentry */
+				/* if the fragment will wrap over the start, process to its end */
+				if(i < clen && i + len[j] > end) 
+					end = i + len[j];
+			}
+		}
+	}
+	gex_dump_contour(ge, clen);
+}
+
+/* Limit a curve to not exceed the given coordinates
+ * at its given side
+ */
+
+static void
+limcurve(
+	double curve[4][2 /*X,Y*/],
+	double lim[2 /*X,Y*/],
+	int where /* 0 - start, 3 - end */
+)
+{
+	int other = 3-where; /* the other end */
+	int sgn[2 /*X,Y*/]; /* sign for comparison */
+	double t, from, to, nt, t2, nt2, tt[4];
+	double val[2 /*X,Y*/];
+	int i;
+
+	for(i=0; i<2; i++)
+		sgn[i] = fsign(curve[other][i] - curve[where][i]);
+
+#if 0
+	fprintf(stderr, "     limit (%g,%g)-(%g,%g) at %d by (%g,%g), sgn(%d,%d)\n",
+		curve[0][0], curve[0][1], curve[3][0], curve[3][1],
+		where, lim[0], lim[1], sgn[0], sgn[1]);
+#endif
+	/* a common special case */
+	if( sgn[0]*(curve[where][0] - lim[0]) >= 0.
+	&& sgn[1]*(curve[where][1] - lim[1]) >= 0. )
+		return; /* nothing to do */
+
+	if(other==0) {
+		from = 0.;
+		to = 1.;
+	} else {
+		from = 1.;
+		to = 0.;
+	}
+#if 0
+	fprintf(stderr, "t=");
+#endif
+	while( fabs(from-to) > 0.00001 ) {
+		t = 0.5 * (from+to);
+		t2 = t*t;
+		nt = 1.-t;
+		nt2 = nt*nt;
+		tt[0] = nt2*nt;
+		tt[1] = 3*nt2*t;
+		tt[2] = 3*nt*t2;
+		tt[3] = t*t2;
+		for(i=0; i<2; i++)
+			val[i] = curve[0][i]*tt[0] + curve[1][i]*tt[1]
+				+ curve[2][i]*tt[2] + curve[3][i]*tt[3];
+#if 0
+		fprintf(stderr, "%g(%g,%g) ", t, val[0], val[1]);
+#endif
+		if(fabs(val[0] - lim[0]) < 0.1
+		|| fabs(val[1] - lim[1]) < 0.1)
+			break;
+
+		if(sgn[0] * (val[0] - lim[0]) < 0.
+		|| sgn[1] * (val[1] - lim[1]) < 0.)
+			to = t;
+		else
+			from = t;
+	}
+	/* now t is the point of splitting */
+#define SPLIT(pt1, pt2)	( (pt1) + t*((pt2)-(pt1)) ) /* order is important! */
+	for(i=0; i<2; i++) {
+		double v11, v12, v13, v21, v22, v31; /* intermediate points */
+
+		v11 = SPLIT(curve[0][i], curve[1][i]);
+		v12 = SPLIT(curve[1][i], curve[2][i]);
+		v13 = SPLIT(curve[2][i], curve[3][i]);
+		v21 = SPLIT(v11, v12);
+		v22 = SPLIT(v12, v13);
+		v31 = SPLIT(v21, v22);
+		if(other==0) {
+			curve[1][i] = v11;
+			curve[2][i] = v21;
+			curve[3][i] = fabs(v31 - lim[i]) < 0.1 ? lim[i] : v31;
+		} else {
+			curve[0][i] = fabs(v31 - lim[i]) < 0.1 ? lim[i] : v31;
+			curve[1][i] = v22;
+			curve[2][i] = v13;
+		}
+	}
+#undef SPLIT
+#if 0
+	fprintf(stderr, "\n");
+#endif
+}
+
+/*
+ * Vectorize a subfragment of a curve fragment. All the data has been already
+ * collected by this time
+ */
+
+static void
+dosubfrag(
+	GLYPH *g,
+	int fti, /* fragment type index */
+	GENTRY *firstge, /* first gentry of fragment */
+	GENTRY *ge, /* first gentry of subfragment */
+	double fscale
+) 
+{
+	GENTRY *gel, *gei; /* last gentry of this subfrag */
+	GEX_FRAG *f, *ff, *lf, *pf, *xf;
+	/* maximal amount of space that can be used at the beginning and the end */
+	double fixfront[2], fixend[2]; /* fixed points - used to show direction */
+	double mvfront[2], mvend[2]; /* movable points */
+	double limfront[2], limend[2]; /* limit of movement for movabel points */
+	double sympt;
+	int outfront, outend; /* the beginning/end is going outwards */
+	int symfront, symend; /* a ready symmetric fragment is present at front/end */
+	int drnd[2 /*X,Y*/]; /* size of the round part */
+	int i, j, a1, a2, ndots;
+	double avg2, max2; /* squared distances */
+	struct dot_dist *dots, *usedots;
+
+	ff = X_FRAG(firstge);
+	f = X_FRAG(ge);
+	gel = f->nextsub;
+	lf = X_FRAG(gel);
+	if(f->prevsub != 0)
+		pf = X_FRAG(f->prevsub);
+	else
+		pf = 0;
+
+	for(i=0; i<2; i++)
+		drnd[i] = gel->bkwd->ipoints[i][2] - ge->ipoints[i][2];
+
+	if(f->prevsub==0 && f->ixcont == GEXFI_NONE) {
+		/* nothing to join with : may use the whole length */
+		for(i = 0; i < 2; i++)
+			limfront[i] = ge->bkwd->ipoints[i][2];
+	} else {
+		/* limit to a half */
+		for(i = 0; i < 2; i++)
+			limfront[i] = 0.5 * (ge->ipoints[i][2] + ge->bkwd->ipoints[i][2]);
+	}
+	if( (ge->ix3 == ge->bkwd->ix3) /* vert */
+	^ (isign(ge->bkwd->ix3 - ge->frwd->ix3)==isign(ge->bkwd->iy3 - ge->frwd->iy3))
+	^ (fti == GEXFI_CONCAVE) /* counter-clockwise */ ) {
+		/* the beginning is not a flat 90-degree end */
+		outfront = 1;
+		for(i = 0; i < 2; i++)
+			fixfront[i] = ge->frwd->ipoints[i][2];
+	} else {
+		outfront = 0;
+		for(i = 0; i < 2; i++)
+			fixfront[i] = ge->ipoints[i][2];
+	}
+
+	if(lf->nextsub==0 && lf->ixstart == GEXFI_NONE) {
+		/* nothing to join with : may use the whole length */
+		for(i = 0; i < 2; i++)
+			limend[i] = gel->ipoints[i][2];
+	} else {
+		/* limit to a half */
+		for(i = 0; i < 2; i++)
+			limend[i] = 0.5 * (gel->ipoints[i][2] + gel->bkwd->ipoints[i][2]);
+	}
+	gei = gel->bkwd->bkwd;
+	if( (gel->ix3 == gel->bkwd->ix3) /* vert */
+	^ (isign(gel->ix3 - gei->ix3)==isign(gel->iy3 - gei->iy3))
+	^ (fti == GEXFI_CONVEX) /* clockwise */ ) {
+		/* the end is not a flat 90-degree end */
+		outend = 1;
+		for(i = 0; i < 2; i++)
+			fixend[i] = gel->bkwd->bkwd->ipoints[i][2];
+	} else {
+		outend = 0;
+		for(i = 0; i < 2; i++)
+			fixend[i] = gel->bkwd->ipoints[i][2];
+	}
+
+	for(i = 0; i < 2; i++) {
+		fixfront[i] *= fscale;
+		limfront[i] *= fscale;
+		fixend[i] *= fscale;
+		limend[i] *= fscale;
+	}
+
+	fprintf(stderr, "    %d out(%d[%d %d %d],%d[%d %d %d]) drnd(%d, %d)\n", 
+		fti,
+		outfront, 
+			(ge->ix3 == ge->bkwd->ix3),
+			(isign(ge->bkwd->ix3 - ge->frwd->ix3)==isign(ge->bkwd->iy3 - ge->frwd->iy3)),
+			(fti == GEXFI_CONCAVE),
+		outend,
+			(gel->ix3 == gel->bkwd->ix3),
+			(isign(gel->ix3 - gei->ix3)==isign(gel->iy3 - gei->iy3)),
+			(fti == GEXFI_CONVEX),
+		drnd[0], drnd[1]);
+
+	/* prepare to calculate the distances */
+	ndots = f->sublen - 1;
+	dots = malloc(sizeof(*dots) * ndots);
+	if(dots == 0) {
+		fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+		exit(255);
+	}
+	for(i = 0, gei = ge; i < ndots; i++, gei = gei->frwd) {
+		for(a1 = 0; a1 < 2; a1++)
+			dots[i].p[a1] = fscale * gei->ipoints[a1][2];
+	}
+
+	/* see if we can mirror a ready symmetric curve */
+
+	/* check symmetry with the fragment before this */
+	symfront = (pf != 0 && (pf->flags & GEXFF_SYMNEXT) && (pf->flags & GEXFF_DONE)
+		&& ( outend && f->sublen <= pf->sublen
+			|| ( pf->sublen == f->sublen 
+				&& (lf->sublen == 0
+					|| ( abs(limfront[0]-limend[0]) >= abs(pf->vect[0][0]-pf->vect[3][0])
+						&& abs(limfront[1]-limend[1]) >= abs(pf->vect[0][1]-pf->vect[3][1]) ))
+			)
+		)
+	);
+	/* check symmetry with the fragment after this */
+	symend = ( (f->flags & GEXFF_SYMNEXT) && (lf->flags & GEXFF_DONE)
+		&& ( outfront && f->sublen <= lf->sublen
+			|| ( lf->sublen == f->sublen 
+				&& (pf == 0 
+					|| ( abs(limfront[0]-limend[0]) >= abs(lf->vect[0][0]-lf->vect[3][0])
+						&& abs(limfront[1]-limend[1]) >= abs(lf->vect[0][1]-lf->vect[3][1]) )) 
+			)
+		)
+	);
+	if(symfront || symend) {
+		/* mirror the symmetric neighbour subfrag */
+		if(symfront) {
+			a1 = (ge->ix3 != ge->bkwd->ix3); /* the symmetry axis */
+			a2 = !a1; /* the other axis (goes along the extremum gentry) */
+
+			/* the symmetry point on a2 */
+			sympt = fscale * 0.5 * (ge->ipoints[a2][2] + ge->bkwd->ipoints[a2][2]);
+			xf = pf; /* the symmetric fragment */
+		} else {
+			a1 = (gel->ix3 != gel->bkwd->ix3); /* the symmetry axis */
+			a2 = !a1; /* the other axis (goes along the extremum gentry) */
+
+			/* the symmetry point on a2 */
+			sympt = fscale * 0.5 * (gel->ipoints[a2][2] + gel->bkwd->ipoints[a2][2]);
+			xf = lf; /* the symmetric fragment */
+		}
+		fprintf(stderr, "     sym with %p f=%d(%p) e=%d(%p) a1=%c a2=%c sympt=%g\n",
+			xf, symfront, pf, symend, lf,
+			a1 ? 'Y': 'X', a2 ? 'Y': 'X', sympt
+		);
+		for(i=0; i<4; i++) {
+			f->vect[3-i][a1] = xf->vect[i][a1];
+			f->vect[3-i][a2] = sympt - (xf->vect[i][a2]-sympt);
+		}
+		if(symfront) {
+			if(outend || lf->sublen==0)
+				limcurve(f->vect, limend, 3);
+		} else {
+			if(outfront || pf == 0)
+				limcurve(f->vect, limfront, 0);
+		}
+		avg2 = fdotcurvdist2(f->vect, dots, ndots, &max2);
+		fprintf(stderr, "     avg=%g max=%g fscale=%g\n", sqrt(avg2), sqrt(max2), fscale);
+		if(max2 <= fscale*fscale) {
+			f->flags |= (GEXFF_DONE | GEXFF_DRAWCURVE);
+			f->vectlen = f->sublen;
+			free(dots);
+			return;
+		}
+	}
+
+	if( !outfront && !outend && f->symge != 0) {
+		/* a special case: try a circle segment as an approximation */
+		double lenfront, lenend, len, maxlen;
+
+		/* coefficient for a Bezier approximation of a circle */
+#define CIRCLE_FRAC	0.55
+
+		a1 = (ge->ix3 == ge->bkwd->ix3); /* get the axis along the front */
+		a2 = !a1; /* axis along the end */
+
+		lenfront = fixfront[a1] - limfront[a1];
+		lenend = fixend[a2] - limend[a2];
+		if(fabs(lenfront) < fabs(lenend))
+			len = fabs(lenfront);
+		else
+			len = fabs(lenend);
+
+		/* make it go close to the round shape */
+		switch(f->sublen) {
+		case 2:
+			maxlen = fscale;
+			break;
+		case 4:
+		case 6:
+			maxlen = fscale * 2.;
+			break;
+		default:
+			maxlen = fscale * abs(ge->frwd->frwd->ipoints[a1][2] 
+				- ge->ipoints[a1][2]);
+			break;
+		}
+		if(len > maxlen)
+			len = maxlen;
+
+		mvfront[a1] = fixfront[a1] - fsign(lenfront) * len;
+		mvfront[a2] = limfront[a2];
+		mvend[a2] = fixend[a2] - fsign(lenend) * len;
+		mvend[a1] = limend[a1];
+
+		for(i=0; i<2; i++) {
+			f->vect[0][i] = mvfront[i];
+			f->vect[3][i] = mvend[i];
+		}
+		f->vect[1][a1] = mvfront[a1] + CIRCLE_FRAC*(mvend[a1]-mvfront[a1]);
+		f->vect[1][a2] = mvfront[a2];
+		f->vect[2][a1] = mvend[a1];
+		f->vect[2][a2] = mvend[a2] + CIRCLE_FRAC*(mvfront[a2]-mvend[a2]);
+
+		avg2 = fdotcurvdist2(f->vect, dots, ndots, &max2);
+		fprintf(stderr, "     avg=%g max=%g fscale=%g\n", sqrt(avg2), sqrt(max2), fscale);
+		if(max2 <= fscale*fscale) {
+			f->flags |= (GEXFF_DONE | GEXFF_DRAWCURVE);
+			f->vectlen = f->sublen;
+			free(dots);
+			return;
+		}
+#undef CIRCLE_FRAC
+	}
+	for(i=0; i<2; i++) {
+		f->vect[0][i] = limfront[i];
+		f->vect[1][i] = fixfront[i];
+		f->vect[2][i] = fixend[i];
+		f->vect[3][i] = limend[i];
+	}
+	usedots = dots;
+	if(outfront) {
+		usedots++; ndots--;
+	}
+	if(outend)
+		ndots--;
+	if( fcrossrayscv(f->vect, NULL, NULL) == 0) {
+		fprintf(stderr, "**** Internal error: rays must cross but don't at %p-%p\n",
+			ge, gel);
+		fprintf(stderr, "  (%g, %g) (%g, %g) (%g, %g) (%g, %g)\n", 
+			limfront[0], limfront[1],
+			fixfront[0], fixfront[1],
+			fixend[0], fixend[1],
+			limend[0], limend[1]
+		);
+		dumppaths(g, NULL, NULL);
+		exit(1);
+	} else {
+		if(ndots != 0)
+			fapproxcurve(f->vect, usedots, ndots);
+		f->flags |= (GEXFF_DONE | GEXFF_DRAWCURVE);
+		f->vectlen = f->sublen;
+	}
+	free(dots);
+}
+
+/*
+ * Subtract a list of gentries (covered by a fragment of higher
+ * priority) from the set of fragments of a given
+ * type.
+ *
+ * An example is subtraction of the long exact line fragments
+ * from the curve fragments which get overridden.
+ */
+
+static void
+frag_subtract(
+	GLYPH *g,
+	GENTRY **age, /* array of gentries for this contour */
+	int clen, /* length of the contour */
+	GENTRY *ge, /* first gentry to be subtracted */
+	int slen, /* number of gentries in the list to be subtracted */
+	int d /* type of fragments from which to subtract, as in GEXFI_... */
+)
+{
+	GENTRY *pge;
+	GEX_FRAG *f, *pf;
+	int len, i, j;
+
+	f = X_FRAG(ge);
+	len = slen; 
+
+	/* check if we overlap the end of some fragment */
+	if(f->lenback[d]) {
+		/* chop off the end of conflicting fragment */
+		len = f->lenback[d];
+		pge = age[(f->aidx + clen - len)%clen];
+		pf = X_FRAG(pge);
+		if(pf->len[d] == clen+1 && pf->flags & GEXFF_CIRC) {
+			/* the conflicting fragment is self-connected */
+
+			pf->len[d] = 0;
+			/* calculate the new value for lenback */
+			len = clen+1 - slen;
+			for(pge = ge; len > 0; pge = pge->bkwd, len--)
+				X_FRAG(pge)->lenback[d] = len;
+			/* now pge points to the last entry of the line,
+			 * which is also the new first entry of the curve
+			 */
+			X_FRAG(pge)->len[d] = clen+2 - slen;
+			/* clean lenback of gentries covered by the line */
+			for(pge = ge->frwd, j = slen-1; j > 0; pge = pge->frwd, j--)
+				X_FRAG(pge)->lenback[d] = 0;
+			fprintf(stderr, "    cut %s circular frag to %p-%p\n", 
+				gxf_name[d], pge, ge);
+			gex_dump_contour(ge, clen);
+		} else {
+			/* when we chop off a piece of fragment, we leave the remaining
+			 * piece(s) overlapping with the beginning and possibly the end 
+			 * of the line fragment under consideration
+			 */
+			fprintf(stderr, "    cut %s frag at %p from len=%d to len=%d (end %p)\n", 
+				gxf_name[d], pge, pf->len[d], len+1, ge);
+			j = pf->len[d] - len - 1; /* how many gentries are chopped off */
+			pf->len[d] = len + 1;
+			i = slen - 1;
+			for(pge = ge->frwd; j > 0 && i > 0; j--, i--, pge = pge->frwd)
+				X_FRAG(pge)->lenback[d] = 0;
+			gex_dump_contour(ge, clen);
+
+			if(j != 0) {
+				/* the conflicting fragment is split in two by this line
+				 * fragment, fix up its tail
+				 */
+
+				fprintf(stderr, "    end of %s frag len=%d %p-", 
+					gxf_name[d], j+1, pge->bkwd);
+				X_FRAG(pge->bkwd)->len[d] = j+1; /* the overlapping */
+				for(i = 1; j > 0; j--, i++, pge = pge->frwd)
+					X_FRAG(pge)->lenback[d] = i;
+				fprintf(stderr, "%p\n", pge->bkwd);
+				gex_dump_contour(ge, clen);
+			}
+		}
+	}
+	/* check if we overlap the beginning of some fragments */
+	i = slen-1; /* getntries remaining to consider */
+	j = 0; /* gentries remaining in the overlapping fragment */
+	for(pge = ge; i > 0; i--, pge = pge->frwd) {
+		if(j > 0) {
+			X_FRAG(pge)->lenback[d] = 0;
+			j--;
+		} 
+		/* the beginning of one fragment may be the end of another
+		 * fragment, in this case if j-- above results in 0, that will 
+		 * cause it to check the same gentry for the beginning
+		 */
+		if(j == 0) {
+			pf = X_FRAG(pge);
+			j = pf->len[d]; 
+			if(j != 0) {
+				fprintf(stderr, "    removed %s frag at %p len=%d\n", 
+					gxf_name[d], pge, j);
+				gex_dump_contour(ge, clen);
+				pf->len[d] = 0;
+				j--;
+			}
+		}
+	}
+	/* pge points at the last gentry of the line fragment */
+	if(j > 1) { /* we have the tail of a fragment left */
+		fprintf(stderr, "    end of %s frag len=%d %p-", 
+			gxf_name[d], j, pge);
+		X_FRAG(pge)->len[d] = j; /* the overlapping */
+		for(i = 0; j > 0; j--, i++, pge = pge->frwd)
+			X_FRAG(pge)->lenback[d] = i;
+		fprintf(stderr, "%p\n", pge->bkwd);
+		gex_dump_contour(ge, clen);
+	} else if(j == 1) {
+		X_FRAG(pge)->lenback[d] = 0;
+	}
+}
+
+/*
+ * Produce an outline from a bitmap.
+ * scale - factor to scale the sizes
+ * bmap - array of dots by lines, xsz * ysz
+ * xoff, yoff - offset of the bitmap's lower left corner
+ *              from the logical position (0,0)
+ */
+
+void
+bmp_outline(
+	GLYPH *g,
+	int scale,
+	char *bmap,
+	int xsz,
+	int ysz,
+	int xoff,
+	int yoff
+)
+{
+	char *hlm, *vlm; /* arrays of the limits of outlines */
+	char *amp; /* map of ambiguous points */
+	int x, y;
+	char *ip, *op;
+	double fscale;
+
+	if(xsz==0 || ysz==0)
+		return;
+
+#ifdef USE_AUTOTRACE
+	if(use_autotrace) {
+		autotraced_bmp_outline(g, scale, bmap, xsz, ysz, xoff, yoff);
+		return;
+	}
+#endif /*USE_AUTOTRACE*/
+
+	fscale = (double)scale;
+	g->flags &= ~GF_FLOAT; /* build it as int first */
+
+	if(!warnedhints) {
+		warnedhints = 1;
+		if(hints && subhints) {
+			WARNING_2 fprintf(stderr, 
+				"Use of hint substitution on bitmap fonts is not recommended\n");
+		}
+	}
+
+#if 0
+	printbmap(bmap, xsz, ysz, xoff, yoff);
+#endif
+
+	/* now find the outlines */
+	hlm=calloc( xsz, ysz+1 ); /* horizontal limits */
+	vlm=calloc( xsz+1, ysz ); /* vertical limits */
+	amp=calloc( xsz, ysz ); /* ambiguous points */
+
+	if(hlm==0 || vlm==0 || amp==0)  {
+		fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+		exit(255);
+	}
+
+	/*
+	 * hlm and vlm represent a grid of horisontal and
+	 * vertical lines. Each pixel is surrounded by the grid
+	 * from all the sides. The values of [hv]lm mark the
+	 * parts of grid where the pixel value switches from white
+	 * to black and back.
+	 */
+
+	/* find the horizontal limits */
+	ip=bmap; op=hlm;
+	/* 1st row */
+	for(x=0; x<xsz; x++) {
+		if(ip[x])
+			op[x]=L_ON;
+	}
+	ip+=xsz; op+=xsz;
+	/* internal rows */
+	for(y=1; y<ysz; y++) {
+		for(x=0; x<xsz; x++) {
+			if(ip[x]) {
+				if(!ip[x-xsz])
+					op[x]=L_ON;
+			} else {
+				if(ip[x-xsz])
+					op[x]=L_OFF;
+			}
+		}
+		ip+=xsz; op+=xsz;
+	}
+
+	/* last row */
+	ip-=xsz;
+	for(x=0; x<xsz; x++) {
+		if(ip[x])
+			op[x]=L_OFF;
+	}
+
+	/* find the vertical limits */
+	ip=bmap; op=vlm;
+	for(y=0; y<ysz; y++) {
+		if(ip[0])
+			op[0]=L_ON;
+		for(x=1; x<xsz; x++) {
+			if(ip[x]) {
+				if(!ip[x-1])
+					op[x]=L_ON;
+			} else {
+				if(ip[x-1])
+					op[x]=L_OFF;
+			}
+		}
+		if(ip[xsz-1])
+			op[xsz]=L_OFF;
+		ip+=xsz; op+=xsz+1; 
+	}
+
+	/*
+	 * Ambiguous points are the nodes of the grids
+	 * that are between two white and two black pixels
+	 * located in a checkerboard style. Actually
+	 * there are only two patterns that may be
+	 * around an ambiguous point:
+	 *
+	 *    X|.    .|X
+	 *    -*-    -*-
+	 *    .|X    X|.
+	 *
+	 * where "|" and "-" represent the grid (respectively members
+	 * of vlm and hlm), "*" represents an ambiguous point
+	 * and "X" and "." represent black and white pixels.
+	 *
+	 * If these sample pattern occur in the lower left corner
+	 * of the bitmap then this ambiguous point will be
+	 * located at amp[1][1] or in other words amp[1*xsz+1].
+	 *
+	 * These points are named "ambiguous" because it's
+	 * not easy to guess what did the font creator mean
+	 * at these points. So we are going to treat them 
+	 * specially, doing no aggressive smoothing.
+	 */
+
+	/* find the ambiguous points */
+	for(y=ysz-1; y>0; y--)
+		for(x=xsz-1; x>0; x--) {
+			if(bmap[y*xsz+x]) {
+				if( !bmap[y*xsz+x-1] && !bmap[y*xsz-xsz+x] && bmap[y*xsz-xsz+x-1] )
+					amp[y*xsz+x]=1;
+			} else {
+				if( bmap[y*xsz+x-1] && bmap[y*xsz-xsz+x] && !bmap[y*xsz-xsz+x-1] )
+					amp[y*xsz+x]=1;
+			}
+		}
+
+#if 0
+	printlimits(hlm, vlm, amp, xsz, ysz);
+#endif
+
+	/* generate the vectored (stepping) outline */
+
+	while(1) {
+		int found = 0;
+		int outer; /* flag: this is an outer contour */
+		int hor, newhor; /* flag: the current contour direction is horizontal */
+		int dir; /* previous direction of the coordinate, 1 - L_ON, 0 - L_OFF */
+		int startx, starty; /* start of a contour */
+		int firstx, firsty; /* start of the current line */
+		int newx, newy; /* new coordinates to try */
+		char *lm, val;
+		int maxx, maxy, xor;
+
+		for(y=ysz; !found &&  y>0; y--) 
+			for(x=0; x<xsz; x++) 
+				if(hlm[y*xsz+x] > L_NONE) 
+					goto foundcontour;
+		break; /* have no contours left */
+
+	foundcontour:
+		ig_rmoveto(g, x+xoff, y+yoff); /* intermediate as int */
+
+		startx = firstx = x;
+		starty = firsty = y;
+
+		if(hlm[y*xsz+x] == L_OFF) {
+			outer = 1; dir = 0;
+			hlm[y*xsz+x] = -hlm[y*xsz+x]; /* mark as seen */
+			hor = 1; x++;
+		} else {
+			outer = 0; dir = 0;
+			hor = 0; y--;
+			vlm[y*(xsz+1)+x] = -vlm[y*(xsz+1)+x]; /* mark as seen */
+		}
+
+		while(x!=startx || y!=starty) {
+#if 0
+			printf("trace (%d, %d) outer=%d hor=%d dir=%d\n", x, y, outer, hor, dir);
+#endif
+
+			/* initialization common for try1 and try2 */
+			if(hor) {
+				lm = vlm; maxx = xsz+1; maxy = ysz; newhor = 0;
+			} else {
+				lm = hlm; maxx = xsz; maxy = ysz+1; newhor = 1;
+			}
+			xor = (outer ^ hor ^ dir);
+
+		try1:
+			/* first we try to change axis, to keep the
+			 * contour as long as possible
+			 */
+
+			newx = x; newy = y;
+			if(!hor && (!outer ^ dir))
+				newx--;
+			if(hor && (!outer ^ dir))
+				newy--;
+
+			if(newx < 0 || newx >= maxx || newy < 0 || newy >= maxy)
+				goto try2;
+
+			if(!xor)
+				val = L_ON;
+			else
+				val = L_OFF;
+#if 0
+			printf("try 1, want %d have %d at %c(%d, %d)\n", val, lm[newy*maxx + newx],
+				(newhor ? 'h':'v'), newx, newy);
+#endif
+			if( lm[newy*maxx + newx] == val )
+				goto gotit;
+
+		try2:
+			/* try to change the axis anyway */
+
+			newx = x; newy = y;
+			if(!hor && (outer ^ dir))
+				newx--;
+			if(hor && (outer ^ dir))
+				newy--;
+
+			if(newx < 0 || newx >= maxx || newy < 0 || newy >= maxy)
+				goto try3;
+
+			if(xor)
+				val = L_ON;
+			else
+				val = L_OFF;
+#if 0
+			printf("try 2, want %d have %d at %c(%d, %d)\n", val, lm[newy*maxx + newx],
+				(newhor ? 'h':'v'), newx, newy);
+#endif
+			if( lm[newy*maxx + newx] == val )
+				goto gotit;
+
+		try3:
+			/* try to continue in the old direction */
+
+			if(hor) {
+				lm = hlm; maxx = xsz; maxy = ysz+1;
+			} else {
+				lm = vlm; maxx = xsz+1; maxy = ysz;
+			}
+			newhor = hor;
+			newx = x; newy = y;
+			if(hor && dir)
+				newx--;
+			if(!hor && !dir)
+				newy--;
+
+			if(newx < 0 || newx >= maxx || newy < 0 || newy >= maxy)
+				goto badtry;
+
+			if(dir)
+				val = L_ON;
+			else
+				val = L_OFF;
+#if 0
+			printf("try 3, want %d have %d at %c(%d, %d)\n", val, lm[newy*maxx + newx],
+				(newhor ? 'h':'v'), newx, newy);
+#endif
+			if( lm[newy*maxx + newx] == val )
+				goto gotit;
+
+		badtry:
+			fprintf(stderr, "**** Internal error in the contour detection code at (%d, %d)\n", x, y);
+			fprintf(stderr, "glyph='%s' outer=%d hor=%d dir=%d\n", g->name, outer, hor, dir);
+			fflush(stdout);
+			exit(1);
+
+		gotit:
+			if(hor != newhor) { /* changed direction, end the previous line */
+				ig_rlineto(g, x+xoff, y+yoff); /* intermediate as int */
+				firstx = x; firsty = y;
+			}
+			lm[newy*maxx + newx] = -lm[newy*maxx + newx];
+			hor = newhor;
+			dir = (val == L_ON);
+			if(newhor)
+				x -= (dir<<1)-1;
+			else
+				y += (dir<<1)-1;
+		}
+#if 0
+		printf("trace (%d, %d) outer=%d hor=%d dir=%d\n", x, y, outer, hor, dir);
+#endif
+		ig_rlineto(g, x+xoff, y+yoff); /* intermediate as int */
+		g_closepath(g);
+	}
+
+
+	/* try to vectorize the curves and sloped lines in the bitmap */
+	if(vectorize) { 
+		GENTRY *ge, *pge, *cge, *loopge;
+		int i;
+		int skip;
+
+		dumppaths(g, NULL, NULL);
+
+		/* allocate the extensions */
+		for(cge=g->entries; cge!=0; cge=cge->next) {
+			cge->ext = calloc(1, sizeof(GEX_FRAG) );
+			if(cge->ext == 0)  {
+				fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+				exit(255);
+			}
+		}
+
+		for(cge=g->entries; cge!=0; cge=cge->next) {
+			if(cge->type != GE_MOVE)
+				continue;
+
+			/* we've found the beginning of a contour */
+			{
+				int d, vert, count, stepmore, delaystop;
+				int vdir, hdir, fullvdir, fullhdir, len;
+				int dx, dy, lastdx, lastdy; 
+				int k1, k2, reversal, smooth, good;
+				int line[2 /*H,V*/], maxlen[2 /*H,V*/], minlen[2 /*H,V*/];
+				GENTRY **age; /* array of gentries in a contour */
+				int clen; /* contour length, size of ths array */
+				int i, j;
+				GEX_FRAG *f;
+
+				/* we know that all the contours start at the top-left corner,
+				 * so at most it might be before/after the last element of
+				 * the last/first fragment
+				 */
+
+				ge = cge->next;
+				pge = ge->bkwd;
+				if(ge->ix3 == pge->ix3) { /* a vertical line */
+					/* we want to start always from a horizontal line because
+					 * then we always start from top and that is quaranteed to be a 
+					 * fragment boundary, so move the start point of the contour
+					 */
+					pge->prev->next = pge->next;
+					pge->next->prev = pge->prev;
+					cge->next = pge;
+					pge->prev = cge;
+					pge->next = ge;
+					ge->prev = pge;
+					ge = pge; pge = ge->bkwd;
+					cge->ix3 = pge->ix3; cge->iy3 = pge->iy3;
+				}
+
+				/* fill the array of gentries */
+				clen = 1;
+				for(ge = cge->next->frwd; ge != cge->next; ge = ge->frwd)
+					clen++;
+				age = (GENTRY **)malloc(sizeof(*age) * clen);
+				ge = cge->next;
+				count = 0;
+				do {
+					age[count] = ge;
+					X_FRAG(ge)->aidx = count++;
+
+					/* and by the way find the extremums */
+					for(i=0; i<2; i++) {
+						if( isign(ge->frwd->ipoints[i][2] - ge->ipoints[i][2])
+						* isign(ge->bkwd->bkwd->ipoints[i][2] - ge->bkwd->ipoints[i][2]) == 1) {
+							X_FRAG(ge)->flags |= GEXFF_EXTR;
+							fprintf(stderr, "  %s extremum at %p\n", (i?"vert":"hor"), ge);
+						}
+						if(abs(ge->ipoints[i][2] - ge->bkwd->ipoints[i][2]) > 1)
+							X_FRAG(ge)->flags |= GEXFF_LONG;
+					}
+
+					ge = ge->frwd;
+				} while(ge != cge->next);
+
+				/* Find the serif fragments, looking as either of:
+				 *           -+              |
+				 *            |              |        
+				 *          +-+            +-+        
+				 *          |              |          
+				 *          +--...         +--...
+				 * with the thickness of serifs being 1 pixel. We make no
+				 * difference between serifs on vertical and horizontal stems.
+				 */
+
+				ge = cge->next;
+				do {
+					GENTRY *nge;
+					int pdx, pdy, ndx, ndy;
+
+					/* two gentries of length 1 mean a potential serif */
+					pge = ge->bkwd;
+					nge = ge->frwd;
+
+					dx = nge->ix3 - pge->ix3;
+					dy = nge->iy3 - pge->iy3;
+
+					if(abs(dx) != 1 || abs(dy) != 1) /* 2 small ones */
+						continue;
+
+					if( 
+						(!(X_FRAG(ge)->flags & GEXFF_EXTR) 
+							|| !(X_FRAG(ge->bkwd)->flags & GEXFF_EXTR))
+						&& (!(X_FRAG(ge->frwd)->flags & GEXFF_EXTR) 
+							|| !(X_FRAG(ge->frwd->frwd)->flags & GEXFF_EXTR))
+					)
+						continue; /* either side must be a couple of extremums */
+
+					pdx = pge->ix3 - pge->bkwd->ix3;
+					pdy = pge->iy3 - pge->bkwd->iy3;
+					ndx = nge->frwd->ix3 - nge->ix3;
+					ndy = nge->frwd->iy3 - nge->iy3;
+
+					if(pdx*dx + pdy*dy > 0 && ndx*dx + ndy*dy > 0) 
+						continue; /* definitely not a serif but a round corner */
+
+					if(abs(pdx) + abs(pdy) == 1 || abs(ndx) + abs(ndy) == 1)
+						continue;
+
+					/* we've found a serif including this and next gentry */
+					X_FRAG(ge)->len[GEXFI_SERIF] = 2;
+
+				} while( (ge = ge->frwd) != cge->next );
+
+
+				/* Find the convex and concave fragments, defined as:
+				 * convex (clockwise): dy/dx <= dy0/dx0, 
+				 *  or a reversal: dy/dx == - dy0/dx0 && abs(dxthis) == 1 && dy/dx > 0
+				 * concave (counter-clockwise): dy/dx >= dy0/dx0, 
+				 *  or a reversal: dy/dx == - dy0/dx0 && abs(dxthis) == 1 && dy/dx < 0
+				 *
+				 * Where dx and dy are measured between the end of this gentry
+				 * and the start of the previous one (dx0 and dy0 are the same
+				 * thing calculated for the previous gentry and its previous one),
+				 * dxthis is between the end and begginning of this gentry.
+				 *
+				 * A reversal is a situation when the curve changes its direction
+				 * along the x axis, so it passes through a momentary vertical
+				 * direction.
+				 */
+				for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) {
+					ge = cge->next;
+					pge = ge->bkwd; /* the beginning of the fragment */
+					count = 1;
+					lastdx = pge->ix3 - pge->bkwd->bkwd->ix3;
+					lastdy = pge->iy3 - pge->bkwd->bkwd->iy3;
+
+#define CHKCURVCONN(ge, msg)	do { \
+		dx = (ge)->ix3 - (ge)->bkwd->bkwd->ix3; \
+		dy = (ge)->iy3 - (ge)->bkwd->bkwd->iy3; \
+		if(0 && msg) { \
+			fprintf(stderr, "  %p: dx=%d dy=%d dx0=%d dy0=%d ", \
+				(ge), dx, dy, lastdx, lastdy); \
+		} \
+		k1 = X_FRAG(ge)->flags; \
+		k2 = X_FRAG((ge)->bkwd)->flags; \
+		if(0 && msg) { \
+			fprintf(stderr, "fl=%c%c%c%c ", \
+				(k1 & GEXFF_EXTR) ? 'X' : '-', \
+				(k1 & GEXFF_LONG) ? 'L' : '-', \
+				(k2 & GEXFF_EXTR) ? 'X' : '-', \
+				(k2 & GEXFF_LONG) ? 'L' : '-' \
+			); \
+		} \
+		if( (k1 & GEXFF_EXTR) && (k2 & GEXFF_LONG) \
+		|| (k2 & GEXFF_EXTR) && (k1 & GEXFF_LONG) ) { \
+			smooth = 0; \
+			good = reversal = -1; /* for debugging */ \
+		} else { \
+			k1 = dy * lastdx; \
+			k2 = lastdy * dx; \
+			smooth = (abs(dx)==1 || abs(dy)==1); \
+			good = (k1 - k2)*gxf_cvk[d] >= 0; \
+			if(smooth && !good) { \
+				reversal = (k1 == -k2 && abs((ge)->ix3 - (ge)->bkwd->ix3)==1  \
+					&& dy*dx*gxf_cvk[d] < 0); \
+			} else \
+				reversal = 0; \
+		} \
+		if(0 && msg) { \
+			fprintf(stderr, "k1=%d k2=%d pge=%p count=%d %s good=%d rev=%d\n", \
+				k1, k2, pge, count, gxf_name[d], good, reversal); \
+		} \
+	} while(0)
+
+					do {
+						CHKCURVCONN(ge, 1);
+
+						if(smooth && (good || reversal) )
+							count++;
+						else {
+							/* can't continue */
+#if 0
+							if(count >= 4) { /* worth remembering */
+								fprintf(stderr, " %s frag %p-%p count=%d\n", gxf_name[d], pge, ge->bkwd, count);
+							}
+#endif
+							X_FRAG(pge)->len[d] = count;
+							if(smooth) {
+								pge = ge->bkwd;
+								count = 2;
+							} else {
+								pge = ge;
+								count = 1;
+							}
+						}
+						lastdx = dx; lastdy = dy;
+						ge = ge->frwd;
+					} while(ge != cge->next);
+
+					/* see if we can connect the last fragment to the first */
+					CHKCURVCONN(ge, 1);
+
+					if(smooth && (good || reversal) ) {
+						/* -1 to avoid ge->bkwd being counted twice */
+						if( X_FRAG(ge->bkwd)->len[d] >= 2 )
+							count += X_FRAG(ge->bkwd)->len[d] - 1;
+						else if(count == clen+1) {
+							/* we are joining a circular (closed) curve, check whether it
+							 * can be joined at any point or whether it has a discontinuity
+							 * at the point where we join it now
+							 */
+							lastdx = dx; lastdy = dy;
+							CHKCURVCONN(ge->frwd, 0);
+
+							if(smooth && (good || reversal) ) {
+								/* yes, the curve is truly a circular one and can be 
+								 * joined at any point
+								 */
+
+#if 0
+								fprintf(stderr, " found a circular joint point at %p\n", pge);
+#endif
+								/* make sure that in a circular fragment we start from an extremum */
+								while( ! (X_FRAG(pge)->flags & GEXFF_EXTR) )
+									pge = pge->frwd;
+								X_FRAG(pge)->flags |= GEXFF_CIRC;
+							}
+						}
+#if 0
+						fprintf(stderr, " %s joined %p to %p count=%d bk_count=%d\n", gxf_name[d], pge, ge->bkwd, 
+							count, X_FRAG(ge->bkwd)->len[d] );
+#endif
+						X_FRAG(ge->bkwd)->len[d] = 0;
+					} 
+					X_FRAG(pge)->len[d] = count;
+#if 0
+					if(count >= 4) { /* worth remembering */
+						fprintf(stderr, " %s last frag %p-%p count=%d\n", gxf_name[d], pge, ge->bkwd, count);
+					}
+#endif
+#undef CHKCURVCONN
+
+					/* do postprocessing */
+					ge = cge->next;
+					do {
+						f = X_FRAG(ge);
+						len = f->len[d];
+#if 0
+						fprintf(stderr, "   %p %s len=%d clen=%d\n", ge, gxf_name[d], len, clen);
+#endif
+						if(len < 3) /* get rid of the fragments that are too short */
+							f->len[d] = 0;
+						else if(len == 3) {
+							/*                                                    _
+							 * drop the |_| - shaped fragments, leave alone the _|  - shaped
+							 * (and even those only if not too short in pixels),
+							 * those left alone are further filtered later
+							 */
+							k1 = (ge->ix3 == ge->bkwd->ix3); /* axis of the start */
+							if(isign(ge->ipoints[k1][2] - ge->bkwd->ipoints[k1][2])
+								!= isign(ge->frwd->ipoints[k1][2] - ge->frwd->frwd->ipoints[k1][2])
+							&& abs(ge->frwd->frwd->ipoints[k1][2] - ge->bkwd->ipoints[k1][2]) > 2) {
+#if 0
+								fprintf(stderr, " %s frag %p count=%d good shape\n", 
+									gxf_name[d], ge, count);
+#endif
+							} else
+								f->len[d] = 0;
+						} else if(len == clen+1)
+							break;  /* a closed fragment, nothing else interesting */
+						else { /* only for open fragments */
+							GENTRY *gem, *gex, *gei, *ges;
+
+							ges = ge; /* the start entry */
+							gem = age[(f->aidx + f->len[d])%clen]; /* entry past the end of the fragment */
+
+							gei = ge->frwd;
+							if( (ge->ix3 == ge->bkwd->ix3) /* vert */
+							^ (isign(ge->bkwd->ix3 - gei->ix3)==isign(ge->bkwd->iy3 - gei->iy3))
+							^ !(d == GEXFI_CONVEX) /* counter-clockwise */ ) {
+
+#if 0
+								fprintf(stderr, " %p: %s potential spurious start\n", ge, gxf_name[d]);
+#endif
+								/* the beginning may be a spurious entry */
+
+								gex = 0; /* the extremum closest to the beginning - to be found */
+								for(gei = ge->frwd; gei != gem; gei = gei->frwd) {
+									if(X_FRAG(gei)->flags & GEXFF_EXTR) {
+										gex = gei;
+										break;
+									}
+								}
+								if(gex == 0)
+									gex = gem->bkwd; 
+
+								/* A special case: ignore the spurious ends on small curves that
+								 * either enclose an 1-pixel-wide extremum or are 1-pixel deep.
+								 * Any 5-or-less-pixel-long curve with extremum 2 steps away
+								 * qualifies for that.
+								 */
+
+								if(len <= 5 && gex == ge->frwd->frwd) {
+									good = 0;
+#if 0
+									fprintf(stderr, " E");
+#endif
+								} else {
+									good = 1; /* assume that ge is not spurious */
+
+									/* gei goes backwards, gex goes forwards from the extremum */
+									gei = gex;
+									/* i is the symmetry axis, j is the other axis (X=0 Y=1) */
+									i = (gex->ix3 != gex->bkwd->ix3);
+									j = !i;
+									for( ; gei!=ge && gex!=gem; gei=gei->bkwd, gex=gex->frwd) {
+										if( gei->bkwd->ipoints[i][2] != gex->ipoints[i][2]
+										|| gei->bkwd->ipoints[j][2] - gei->ipoints[j][2]
+											!= gex->bkwd->ipoints[j][2] - gex->ipoints[j][2] 
+										) {
+											good = 0; /* no symmetry - must be spurious */
+#if 0
+											fprintf(stderr, " M(%p,%p)(%d %d,%d)(%d %d,%d)",
+												gei, gex,
+												i, gei->bkwd->ipoints[i][2], gex->ipoints[i][2],
+												j, gei->bkwd->ipoints[j][2] - gei->ipoints[j][2],
+												gex->bkwd->ipoints[j][2] - gex->ipoints[j][2] );
+#endif
+											break;
+										}
+									}
+									if(gex == gem) { /* oops, the other side is too short */
+										good = 0;
+#if 0
+										fprintf(stderr, " X");
+#endif
+									}
+									if(good && gei == ge) {
+										if( isign(gei->bkwd->ipoints[j][2] - gei->ipoints[j][2])
+										!= isign(gex->bkwd->ipoints[j][2] - gex->ipoints[j][2]) ) {
+											good = 0; /* oops, goes into another direction */
+#if 0
+											fprintf(stderr, " D");
+#endif
+										}
+									}
+								}
+								if(!good) { /* it is spurious, drop it */
+#if 0
+									fprintf(stderr, " %p: %s spurious start\n", ge, gxf_name[d]);
+#endif
+									f->len[d] = 0;
+									ges = ge->frwd;
+									len--;
+									X_FRAG(ges)->len[d] = len;
+								}
+							}
+
+							gei = gem->bkwd->bkwd->bkwd;
+							if( (gem->ix3 != gem->bkwd->ix3) /* gem->bkwd is vert */
+							^ (isign(gem->bkwd->ix3 - gei->ix3)==isign(gem->bkwd->iy3 - gei->iy3))
+							^ (d == GEXFI_CONVEX) /* clockwise */ ) {
+								
+#if 0
+								fprintf(stderr, " %p: %s potential spurious end\n", gem->bkwd, gxf_name[d]);
+#endif
+								/* the end may be a spurious entry */
+
+								gex = 0; /* the extremum closest to the end - to be found */
+								for(gei = gem->bkwd->bkwd; gei != ges->bkwd; gei = gei->bkwd) {
+									if(X_FRAG(gei)->flags & GEXFF_EXTR) {
+										gex = gei;
+										break;
+									}
+								}
+								if(gex == 0)
+									gex = ges; 
+
+								good = 1; /* assume that gem->bkwd is not spurious */
+								/* gei goes backwards, gex goes forwards from the extremum */
+								gei = gex;
+								/* i is the symmetry axis, j is the other axis (X=0 Y=1) */
+								i = (gex->ix3 != gex->bkwd->ix3);
+								j = !i;
+								for( ; gei!=ges->bkwd && gex!=gem->bkwd; gei=gei->bkwd, gex=gex->frwd) {
+									if( gei->bkwd->ipoints[i][2] != gex->ipoints[i][2]
+									|| gei->bkwd->ipoints[j][2] - gei->ipoints[j][2]
+										!= gex->bkwd->ipoints[j][2] - gex->ipoints[j][2] 
+									) {
+										good = 0; /* no symmetry - must be spurious */
+#if 0
+										fprintf(stderr, " M(%p,%p)(%d %d,%d)(%d %d,%d)",
+											gei, gex,
+											i, gei->bkwd->ipoints[i][2], gex->ipoints[i][2],
+											j, gei->bkwd->ipoints[j][2] - gei->ipoints[j][2],
+											gex->bkwd->ipoints[j][2] - gex->ipoints[j][2] );
+#endif
+										break;
+									}
+								}
+								if(gei == ges->bkwd) { /* oops, the other side is too short */
+									good = 0;
+#if 0
+									fprintf(stderr, " X");
+#endif
+								}
+								if(good && gex == gem->bkwd) {
+									if( isign(gei->bkwd->ipoints[j][2] - gei->ipoints[j][2])
+									!= isign(gex->bkwd->ipoints[j][2] - gex->ipoints[j][2]) ) {
+										good = 0; /* oops, goes into another direction */
+#if 0
+										fprintf(stderr, " D");
+#endif
+									}
+								}
+								if(!good) { /* it is spurious, drop it */
+#if 0
+									fprintf(stderr, " %p: %s spurious end\n", gem->bkwd, gxf_name[d]);
+#endif
+									X_FRAG(ges)->len[d] = --len;
+								}
+							}
+							if(len < 4) {
+								X_FRAG(ges)->len[d] = 0;
+#if 0
+								fprintf(stderr, " %p: %s frag discarded, too small now\n", ge, gxf_name[d]);
+#endif
+							}
+							if(ges != ge) {
+								if(ges == cge->next)
+									break; /* went around the loop */
+								else {
+									ge = ges->frwd; /* don't look at this fragment twice */
+									continue;
+								}
+							}
+						}
+
+						ge = ge->frwd;
+					} while(ge != cge->next);
+				}
+
+				/* Find the straight line fragments.
+				 * Even though the lines are sloped, they are called
+				 * "vertical" or "horizontal" according to their longer
+				 * dimension. All the steps in the shother dimension must 
+				 * be 1 pixel long, all the steps in the longer dimension
+				 * must be within the difference of 1 pixel.
+				 */
+				for(d = GEXFI_LINE; d<= GEXFI_EXACTLINE; d++) {
+					ge = cge->next;
+					pge = ge->bkwd; /* the beginning of the fragment */
+					count = 1;
+					delaystop = 0;
+					do {
+						int h;
+
+						stepmore = 0;
+						hdir = isign(ge->ix3 - ge->bkwd->ix3);
+						vdir = isign(ge->iy3 - ge->bkwd->iy3);
+						vert = (hdir == 0);
+						if(count==1) {
+							/* at this point pge==ge->bkwd */
+							/* account for the previous gentry, which was !vert */
+							if(!vert) { /* prev was vertical */
+								maxlen[0] = minlen[0] = 0;
+								maxlen[1] = minlen[1] = abs(pge->iy3 - pge->bkwd->iy3);
+								line[0] = (maxlen[1] == 1);
+								line[1] = 1;
+								fullhdir = hdir;
+								fullvdir = isign(pge->iy3 - pge->bkwd->iy3);
+							} else {
+								maxlen[0] = minlen[0] = abs(pge->ix3 - pge->bkwd->ix3);
+								maxlen[1] = minlen[1] = 0;
+								line[0] = 1;
+								line[1] = (maxlen[0] == 1);
+								fullhdir = isign(pge->ix3 - pge->bkwd->ix3);
+								fullvdir = vdir;
+							}
+						}
+						h = line[0]; /* remember the prevalent direction */
+#if 0
+						fprintf(stderr, "  %p: v=%d(%d) h=%d(%d) vl(%d,%d,%d) hl=(%d,%d,%d) %s count=%d ",
+							ge, vdir, fullvdir, hdir, fullhdir, 
+							line[1], minlen[1], maxlen[1],
+							line[0], minlen[0], maxlen[0],
+							gxf_name[d], count);
+#endif
+						if(vert) {
+							if(vdir != fullvdir)
+								line[0] = line[1] = 0;
+							len = abs(ge->iy3 - ge->bkwd->iy3);
+						} else {
+							if(hdir != fullhdir)
+								line[0] = line[1] = 0;
+							len = abs(ge->ix3 - ge->bkwd->ix3);
+						}
+#if 0
+						fprintf(stderr, "len=%d\n", len);
+#endif
+						if(len != 1) /* this is not a continuation in the short dimension */
+							line[!vert] = 0;
+
+						/* can it be a continuation in the long dimension ? */
+						if( line[vert] ) {
+							if(maxlen[vert]==0)
+								maxlen[vert] = minlen[vert] = len;
+							else if(maxlen[vert]==minlen[vert]) {
+								if(d == GEXFI_EXACTLINE) {
+									if(len != maxlen[vert])
+										line[vert] = 0; /* it can't */
+								} else if(len < maxlen[vert]) {
+									if(len < minlen[vert]-1)
+										line[vert] = 0; /* it can't */
+									else
+										minlen[vert] = len;
+								} else {
+									if(len > maxlen[vert]+1)
+										line[vert] = 0; /* it can't */
+									else
+										maxlen[vert] = len;
+								}
+							} else if(len < minlen[vert] || len > maxlen[vert])
+								line[vert] = 0; /* it can't */
+						}
+
+						if(line[0] == 0 && line[1] == 0) {
+#if 0
+							if(count >= 3)
+								fprintf(stderr, " %s frag %p-%p count=%d\n", gxf_name[d], pge, ge->bkwd, count);
+#endif
+							X_FRAG(pge)->len[d] = count;
+							if(d == GEXFI_EXACTLINE && h) {
+								X_FRAG(pge)->flags |= GEXFF_HLINE;
+							}
+							if(count == 1)
+								pge = ge;
+							else {
+								stepmore = 1; /* may reconsider the 1st gentry */
+								pge = ge = ge->bkwd;
+								count = 1;
+							}
+						} else
+							count++;
+
+						ge = ge->frwd;
+						if(ge == cge->next && !stepmore)
+							delaystop = 1; /* consider the first gentry again */
+					} while(stepmore || ge != cge->next ^ delaystop);
+					/* see if there is an unfinished line left */
+					if(count != 1) {
+#if 0
+						if(count >= 3)
+							fprintf(stderr, " %s frag %p-%p count=%d\n", gxf_name[d], pge, ge->bkwd, count);
+#endif
+						X_FRAG(ge->bkwd->bkwd)->len[d] = 0;
+						X_FRAG(pge)->len[d] = count;
+					}
+				}
+
+				/* do postprocessing of the lines */
+#if 0
+				fprintf(stderr, "Line postprocessing\n");
+				gex_dump_contour(cge->next, clen);
+#endif
+
+				/* the non-exact line frags are related to exact line frags sort 
+				 * of like to individual gentries: two kinds of exact frags
+				 * must be interleaved, with one kind having the size of 3
+				 * and the other kind having the size varying within +-2.
+				 */
+
+				ge = cge->next;
+				do {
+					GEX_FRAG *pf, *lastf1, *lastf2;
+					int len1, len2, fraglen;
+
+					f = X_FRAG(ge);
+
+					fraglen = f->len[GEXFI_LINE];
+					if(fraglen >= 4) {
+
+						vert = 0; /* vert is a pseudo-directon */
+						line[0] = line[1] = 1;
+						maxlen[0] = minlen[0] = maxlen[1] = minlen[1] = 0;
+						lastf2 = lastf1 = f;
+						len2 = len1 = 0;
+						for(pge = ge, i = 1; i < fraglen; i++, pge=pge->frwd) {
+							pf = X_FRAG(pge);
+							len = pf->len[GEXFI_EXACTLINE];
+#if 0
+							fprintf(stderr, "      pge=%p i=%d of %d ge=%p exLen=%d\n", pge, i, 
+								f->len[GEXFI_LINE], ge, len);
+#endif
+							len1++; len2++;
+							if(len==0) {
+								continue;
+							}
+							vert = !vert; /* alternate the pseudo-direction */
+							if(len > 3)
+								line[!vert] = 0;
+							if(maxlen[vert] == 0)
+								maxlen[vert] = minlen[vert] = len;
+							else if(maxlen[vert]-2 >= len && minlen[vert]+2 <= len) {
+								if(len > maxlen[vert])
+									maxlen[vert] = len;
+								else if(len < minlen[vert])
+									minlen[vert] = len;
+							} else
+								line[vert] = 0;
+							if(line[0] == 0 && line[1] == 0) {
+#if 0
+								fprintf(stderr, "  Line breaks at %p %c(%d, %d) %c(%d, %d) len=%d fl=%d l2=%d l1=%d\n",
+									pge, (!vert)?'*':' ', minlen[0], maxlen[0], 
+									vert?'*':' ', minlen[1], maxlen[1], len, fraglen, len2, len1);
+#endif
+								if(lastf2 != lastf1) {
+									lastf2->len[GEXFI_LINE] = len2-len1;
+								}
+								lastf1->len[GEXFI_LINE] = len1+1;
+								pf->len[GEXFI_LINE] = fraglen+1 - i;
+#if 0
+								gex_dump_contour(pge, clen);
+#endif
+
+								/* continue with the line */
+								vert = 0; /* vert is a pseudo-directon */
+								line[0] = line[1] = 1;
+								maxlen[0] = minlen[0] = maxlen[1] = minlen[1] = 0;
+								lastf2 = lastf1 = f;
+								len2 = len1 = 0;
+							} else {
+								lastf1 = pf;
+								len1 = 0;
+							}
+						}
+					}
+
+					ge = ge->frwd;
+				} while(ge != cge->next);
+#if 0
+				fprintf(stderr, "Line postprocessing part 2\n");
+				gex_dump_contour(cge->next, clen);
+#endif
+
+				ge = cge->next;
+				do {
+					f = X_FRAG(ge);
+
+					if(f->len[GEXFI_LINE] >= 4) {
+						len = f->len[GEXFI_EXACTLINE];
+						/* if a non-exact line covers precisely two exact lines,
+						 * split it
+						 */
+						if(len > 0 && f->len[GEXFI_LINE] >= len+1) {
+							GEX_FRAG *pf;
+							pge = age[(f->aidx + len - 1)%clen]; /* last gentry of exact line */
+							pf = X_FRAG(pge);
+							if(f->len[GEXFI_LINE] + 1 == len + pf->len[GEXFI_EXACTLINE]) {
+								f->len[GEXFI_LINE] = len;
+								f->flags |= GEXFF_SPLIT;
+								pf->len[GEXFI_LINE] = pf->len[GEXFI_EXACTLINE];
+								pf->flags |= GEXFF_SPLIT;
+							}
+						}
+					}
+
+					ge = ge->frwd;
+				} while(ge != cge->next);
+#if 0
+				fprintf(stderr, "Line postprocessing part 2a\n");
+				gex_dump_contour(cge->next, clen);
+#endif
+				ge = cge->next;
+				do {
+					f = X_FRAG(ge);
+
+					/* too small lines are of no interest */
+					if( (f->flags & GEXFF_SPLIT)==0 && f->len[GEXFI_LINE] < 4)
+						f->len[GEXFI_LINE] = 0;
+
+					len = f->len[GEXFI_EXACTLINE];
+					/* too small exact lines are of no interest */
+					if(len < 3) /* exact lines may be shorter */
+						f->len[GEXFI_EXACTLINE] = 0;
+					/* get rid of inexact additions to the end of the exact lines */
+					else if(f->len[GEXFI_LINE] == len+1)
+						f->len[GEXFI_LINE] = len;
+					/* same at the beginning */
+					else {
+						int diff = X_FRAG(ge->bkwd)->len[GEXFI_LINE] - len;
+
+						if(diff == 1 || diff == 2) {
+							X_FRAG(ge->bkwd)->len[GEXFI_LINE] = 0;
+							f->len[GEXFI_LINE] = len;
+						}
+					}
+
+					ge = ge->frwd;
+				} while(ge != cge->next);
+#if 0
+				fprintf(stderr, "Line postprocessing is completed\n");
+				gex_dump_contour(cge->next, clen);
+#endif
+
+				gex_calc_lenback(cge->next, clen); /* prepare data */
+
+				/* resolve conflicts between lines and curves */
+
+				/*
+				 * the short (3-gentry) curve frags must have one of the ends
+				 * coinciding with another curve frag of the same type
+				 */
+
+				for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) {
+					ge = cge->next;
+					do {
+						f = X_FRAG(ge);
+
+						if(f->len[d] == 3) {
+							pge = age[(f->aidx + 2)%clen]; /* last gentry of this frag */
+							if(f->lenback[d] == 0 && X_FRAG(pge)->len[d] == 0) {
+								fprintf(stderr, "    discarded small %s at %p-%p\n", gxf_name[d], ge, pge);
+								f->len[d] = 0;
+								X_FRAG(ge->frwd)->lenback[d] = 0;
+								X_FRAG(ge->frwd->frwd)->lenback[d] = 0;
+							}
+						}
+						ge = ge->frwd;
+					} while(ge != cge->next);
+				}
+
+				/* the serifs take priority over everything else */
+				ge = cge->next;
+				do {
+					f = X_FRAG(ge);
+
+					len = f->len[GEXFI_SERIF];
+					if(len == 0)
+						continue;
+
+					if(len != 2) { /* this is used in the code below */
+						fprintf(stderr, "Internal error at %s line %d: serif frags len is %d\n",
+							__FILE__, __LINE__, len);
+						exit(1);
+					}
+
+					for(d = 0; d < GEXFI_SERIF; d++) {
+						/* serifs may not have common ends with the other fragments,
+						 * this is expressed as extending them by 1 gentry on each side
+						 */
+						frag_subtract(g, age, clen, ge->bkwd, len+2, d);
+					}
+				} while( (ge = ge->frwd) != cge->next);
+
+				/*
+				 * longer exact lines take priority over curves; shorter lines
+				 * and inexact lines are resolved with convex/concave conflicts
+				 */
+				ge = cge->next;
+				do {
+					f = X_FRAG(ge);
+
+					len = f->len[GEXFI_EXACTLINE]; 
+
+					if(len < 6) { /* line is short */
+						ge = ge->frwd;
+						continue;
+					}
+
+					fprintf(stderr, "   line at %p len=%d\n", ge, f->len[GEXFI_EXACTLINE]);
+					for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) {
+						frag_subtract(g, age, clen, ge, len, d);
+					}
+
+					ge = ge->frwd;
+				} while(ge != cge->next);
+
+				/*
+				 * The exact lines take priority over curves that coincide
+				 * with them or extend by only one gentry on either side
+				 * (but not both sides). By this time it applies only to the
+				 * small exact lines.
+				 *
+				 * An interesting general case is when a curve matches more
+				 * than one exact line going diamond-like.
+				 */
+
+				ge = cge->next;
+				do {
+					int done, len2;
+					int sharpness;
+					GEX_FRAG *pf;
+
+					f = X_FRAG(ge);
+
+					/* "sharpness" shows how a group of exact line frags is connected: if the gentries 
+					 * of some of them overlap, the curve matching requirement is loosened: it may
+					 * extend up to 1 gentry beyond each end of the group of exact line frags
+					 * (sharpness=2); otherwise it may extend to only one end (sharpness=1)
+					 */
+					sharpness = 1;
+
+					len = f->len[GEXFI_EXACTLINE];
+					if(len >= 4) {
+						while(len < clen) {
+							done = 0;
+							pf = X_FRAG(ge->bkwd);
+							for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) {
+								if(f->len[d] == len || f->len[d] == len+1) {
+
+									fprintf(stderr, "    removed %s frag at %p len=%d linelen=%d\n", 
+										gxf_name[d], ge, f->len[d], len);
+									pge = ge->frwd;
+									for(i = f->len[d]; i > 1; i--, pge = pge->frwd)
+										X_FRAG(pge)->lenback[d] = 0;
+									f->len[d] = 0;
+									gex_dump_contour(ge, clen);
+									done = 1;
+								} else if(pf->len[d] == len+1 || pf->len[d] == len+sharpness) {
+									fprintf(stderr, "    removed %s frag at %p len=%d next linelen=%d\n", 
+										gxf_name[d], ge->bkwd, pf->len[d], len);
+									pge = ge;
+									for(i = pf->len[d]; i > 1; i--, pge = pge->frwd)
+										X_FRAG(pge)->lenback[d] = 0;
+									pf->len[d] = 0;
+									gex_dump_contour(ge, clen);
+									done = 1;
+								}
+							}
+							if(done)
+								break;
+
+							/* is there any chance to match a sequence of exect lines ? */
+							if(f->len[GEXFI_CONVEX] < len && f->len[GEXFI_CONCAVE] < len
+							&& pf->len[GEXFI_CONVEX] < len && pf->len[GEXFI_CONCAVE] < len)
+								break;
+
+							done = 1;
+							/* check whether the line is connected to another exact line at an extremum */
+							pge = age[(f->aidx + len - 1)%clen]; /* last gentry of exact line */
+							len2 = X_FRAG(pge)->len[GEXFI_EXACTLINE];
+							if(len2 > 0) {
+								if( len2 >= 4 && (X_FRAG(pge)->flags & GEXFF_EXTR) ) {
+									len += len2 - 1;
+									sharpness = 2;
+									done = 0;
+								}
+							} else {
+								/* see if the extremum is between two exact lines */
+								pge = pge->frwd;
+								if(X_FRAG(pge)->flags & GEXFF_EXTR) {
+									pge = pge->frwd;
+									len2 = X_FRAG(pge)->len[GEXFI_EXACTLINE];
+									if(len2 >= 4) {
+										len += len2 + 1;
+										done = 0;
+									}
+								}
+							}
+							if(done)
+								break;
+						}
+					}
+
+					ge = ge->frwd;
+				} while(ge != cge->next);
+
+				/* 
+				 * The lines may cover only whole curves (or otherwise empty space),
+				 * so cut them where they overlap parts of the curves. If 2 or less
+				 * gentries are left in the line, remove the line.
+				 * If a line and a curve fully coincide, remove the line.  Otherwise 
+				 * remove the curves that are completely covered by the lines.
+				 */
+
+				ge = cge->next;
+				do {
+					f = X_FRAG(ge);
+
+				reconsider_line:
+					len = f->len[GEXFI_LINE];
+
+					if(len == 0) {
+						ge = ge->frwd;
+						continue;
+					}
+
+					if(f->len[GEXFI_CONVEX] >= len 
+					|| f->len[GEXFI_CONCAVE] >= len) {
+				line_completely_covered:
+						fprintf(stderr, "    removed covered Line frag at %p len=%d\n", 
+							ge, len);
+						f->len[GEXFI_LINE] = 0;
+						for(pge = ge->frwd; len > 1; len--, pge = pge->frwd)
+							X_FRAG(pge)->lenback[GEXFI_LINE] = 0;
+						gex_dump_contour(ge, clen);
+						ge = ge->frwd;
+						continue;
+					}
+					
+					k1 = 0; /* how much to cut at the front */
+					for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) {
+						if(f->lenback[d]) {
+							pge = age[(f->aidx + clen - f->lenback[d])%clen];
+							i = X_FRAG(pge)->len[d] - f->lenback[d] - 1;
+							if(i > k1)
+								k1 = i;
+						}
+					}
+
+					k2 = 0; /* how much to cut at the end */
+					pge = age[(f->aidx + len)%clen]; /* gentry after the end */
+					for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) {
+						i = X_FRAG(pge)->lenback[d] - 1;
+						if(i > k2)
+							k2 = i;
+					}
+
+					if(k1+k2 > 0 && k1+k2 >= len-3) {
+						fprintf(stderr, "    k1=%d k2=%d\n", k1, k2);
+						goto line_completely_covered;
+					}
+
+
+					if(k2 != 0) { /* cut the end */
+						len -= k2;
+						f->len[GEXFI_LINE] = len;
+						/* pge still points after the end */
+						for(i = k2, pge = pge->bkwd; i > 0; i--, pge = pge->bkwd)
+							X_FRAG(pge)->lenback[GEXFI_LINE] = 0;
+					}
+					if(k1 != 0) { /* cut the beginning */
+						len -= k1;
+						f->len[GEXFI_LINE] = 0;
+						for(i = 1, pge = ge->frwd; i < k1; i++, pge = pge->frwd)
+							X_FRAG(pge)->lenback[GEXFI_LINE] = 0;
+						X_FRAG(pge)->len[GEXFI_LINE] = len;
+						for(i = 0; i < len; i++, pge = pge->frwd)
+							X_FRAG(pge)->lenback[GEXFI_LINE] = i;
+					}
+					if(k1 != 0 || k2 != 0) {
+						fprintf(stderr, "    cut Line frag at %p by (%d,%d) to len=%d\n", 
+							ge, k1, k2, len);
+						gex_dump_contour(ge, clen);
+
+						goto reconsider_line; /* the line may have to be cut again */
+					}
+					pge = age[(f->aidx + k1)%clen]; /* new beginning */
+					good = 1; /* flag: no need do do a debugging dump */
+					for(i=1; i<len; i++, pge = pge->frwd)
+						for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) {
+							if(X_FRAG(pge)->len[d]) {
+								fprintf(stderr, "    removed %s frag at %p len=%d covered by line\n", 
+									gxf_name[d], pge, X_FRAG(pge)->len[d], len);
+								good = 0;
+							}
+							X_FRAG(pge)->len[d] = 0;
+						}
+					pge = age[(f->aidx + k1 + 1)%clen]; /* next after new beginning */
+					for(i=1; i<len; i++, pge = pge->frwd)
+						for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++)
+							X_FRAG(pge)->lenback[d] = 0;
+					if(!good)
+						gex_dump_contour(ge, clen);
+
+					ge = ge->frwd;
+				} while(ge != cge->next);
+
+				/* Resolve conflicts between curves */
+				for(d = GEXFI_CONVEX; d<= GEXFI_CONCAVE; d++) {
+					dx = (GEXFI_CONVEX + GEXFI_CONCAVE) - d; /* the other type */
+					ge = cge->next;
+					do {
+						GENTRY *sge;
+
+						f = X_FRAG(ge);
+						len = f->len[d];
+						if(len < 2) {
+							ge = ge->frwd;
+							continue;
+						}
+						sge = ge; /* the start of fragment */
+
+						i = f->len[dx];
+						if(i != 0) { /* two curved frags starting here */
+							/* should be i!=len because otherwise they would be
+							 * covered by an exact line
+							 */
+							if(i > len) {
+							curve_completely_covered:
+								/* remove the convex frag */
+								fprintf(stderr, "    removed %s frag at %p len=%d covered by %s\n", 
+									gxf_name[d], ge, len, gxf_name[dx]);
+								f->len[d] = 0;
+								for(pge = ge->frwd, j = 1; j < len; j++, pge = pge->frwd)
+									X_FRAG(pge)->lenback[d] = 0;
+								gex_dump_contour(ge, clen);
+
+								ge = ge->frwd; /* the frag is gone, nothing more to do */
+								continue;
+							} else {
+								/* remove the concave frag */
+								fprintf(stderr, "    removed %s frag at %p len=%d covered by %s\n", 
+									gxf_name[dx], ge, i, gxf_name[d]);
+								f->len[dx] = 0;
+								for(pge = ge->frwd, j = 1; j < i; j++, pge = pge->frwd)
+									X_FRAG(pge)->lenback[dx] = 0;
+								gex_dump_contour(ge, clen);
+							}
+						}
+
+
+						k1 = X_FRAG(ge->frwd)->lenback[dx];
+						if(k1 != 0) { /* conflict at the front */
+							GENTRY *gels, *gele, *gei;
+
+							pge = age[(f->aidx + clen - (k1-1))%clen]; /* first gentry of concave frag */
+							k2 = X_FRAG(pge)->len[dx]; /* its length */
+							
+							i = k2 - (k1-1); /* amount of overlap */
+							if(i > len)
+								i = len;
+							/* i >= 2 by definition */
+							if(i >= k2-1) { /* covers the other frag - maybe with 1 gentry showing */
+								fprintf(stderr, "    removed %s frag at %p len=%d covered by %s\n", 
+									gxf_name[dx], pge, k2, gxf_name[d]);
+								X_FRAG(pge)->len[dx] = 0;
+								for(pge = pge->frwd, j = 1; j < k2; j++, pge = pge->frwd)
+									X_FRAG(pge)->lenback[dx] = 0;
+								if(i >= len-1) { /* covers our frag too - maybe with 1 gentry showing */
+									/* our frag will be removed as well, prepare a line to replace it */
+									gels = ge;
+									gele = age[(f->aidx + i - 1)%clen];
+									fprintf(stderr, "    new Line frag at %p-%p len=%d\n", gels, gele, i);
+									X_FRAG(gels)->len[GEXFI_LINE] = i;
+									for(gei = gels->frwd, j = 1; j < i; gei = gei->frwd, j++)
+										X_FRAG(gei)->lenback[GEXFI_LINE] = j;
+								} else {
+									gex_dump_contour(ge, clen);
+									ge = ge->frwd;
+									continue;
+								}
+							}
+							if(i >= len-1) /* covers our frag - maybe with 1 gentry showing */
+								goto curve_completely_covered;
+
+							/* XXX need to do something better for the case when a curve frag
+							 * is actually nothing but an artifact of two other curves of
+							 * the opposite type touching each other, like on the back of "3"
+							 */
+
+							/* change the overlapping part to a line */
+							gels = ge;
+							gele = age[(f->aidx + i - 1)%clen];
+							/* give preference to local extremums */
+							if(X_FRAG(gels)->flags & GEXFF_EXTR) {
+								gels = gels->frwd;
+								i--;
+							}
+							if(X_FRAG(gele)->flags & GEXFF_EXTR) {
+								gele = gele->bkwd;
+								i--;
+							}
+							if(gels->bkwd == gele) { 
+								/* Oops the line became negative.  Probably should 
+								 * never happen but I can't think of any formal reasoning
+								 * leading to that, so check just in case. Restore
+								 * the previous state.
+								 */
+								gels = gele; gele = gels->frwd; i = 2;
+							}
+
+							j = X_FRAG(gels)->lenback[dx] + 1; /* new length */
+							if(j != k2) {
+								X_FRAG(pge)->len[dx] = j;
+								fprintf(stderr, "    cut %s frag at %p len=%d to %p len=%d end overlap with %s\n", 
+									gxf_name[dx], pge, k2, gels, j, gxf_name[d]);
+								for(gei = gels->frwd; j < k2; gei = gei->frwd, j++)
+									X_FRAG(gei)->lenback[dx] = 0;
+							}
+
+							if(gele != ge) {
+								sge = gele;
+								f->len[d] = 0;
+								fprintf(stderr, "    cut %s frag at %p len=%d ", gxf_name[d], ge, len);
+								len--;
+								for(gei = ge->frwd; gei != gele; gei = gei->frwd, len--)
+									X_FRAG(gei)->lenback[d] = 0;
+								X_FRAG(gele)->len[d] = len;
+								X_FRAG(gele)->lenback[d] = 0;
+								fprintf(stderr, "to %p len=%d start overlap with %s\n", 
+									sge, len, gxf_name[dx]);
+								for(gei = gei->frwd, j = 1; j < len; gei = gei->frwd, j++)
+									X_FRAG(gei)->lenback[d] = j;
+
+							}
+							if(i > 1) {
+								fprintf(stderr, "    new Line frag at %p-%p len=%d\n", gels, gele, i);
+								X_FRAG(gels)->len[GEXFI_LINE] = i;
+								for(gei = gels->frwd, j = 1; j < i; gei = gei->frwd, j++)
+									X_FRAG(gei)->lenback[GEXFI_LINE] = j;
+							}
+							gex_dump_contour(ge, clen);
+						}
+
+						ge = ge->frwd;
+					} while(ge != cge->next);
+				}
+
+				/* 
+				 * Assert that there are no conflicts any more and
+				 * for each gentry find the fragment types that start
+				 * and continue here.
+				 */
+				ge = cge->next;
+				do {
+					f = X_FRAG(ge);
+					dx = GEXFI_NONE; /* type that starts here */
+					dy = GEXFI_NONE; /* type that goes through here */
+					/* GEXFI_EXACTLINE and GEXFI_SERIF are auxiliary and don't
+					 * generate any actual lines/curves in the result
+					 */
+					for(d = GEXFI_CONVEX; d<= GEXFI_LINE; d++) {
+						if(f->len[d]) {
+							if(dx >= 0) {
+								fprintf(stderr, "**** Internal error in vectorization\n");
+								fprintf(stderr, "CONFLICT in %s at %p between %s and %s\n",
+									g->name, ge, gxf_name[dx], gxf_name[d]);
+								dumppaths(g, cge->next, cge->next->bkwd);
+								gex_dump_contour(ge, clen);
+								exit(1);
+							}
+							dx = d;
+						}
+						if(f->lenback[d]) {
+							if(dy >= 0) {
+								fprintf(stderr, "**** Internal error in vectorization\n");
+								fprintf(stderr, "CONFLICT in %s at %p between %s and %s\n",
+									g->name, ge, gxf_name[dy], gxf_name[d]);
+								dumppaths(g, cge->next, cge->next->bkwd);
+								gex_dump_contour(ge, clen);
+								exit(1);
+							}
+							dy = d;
+						}
+					}
+					f->ixstart = dx;
+					f->ixcont = dy;
+					ge = ge->frwd;
+				} while(ge != cge->next);
+
+				/*
+				 * make sure that the contour does not start in the
+				 * middle of a fragment
+				 */
+				ge = cge->next; /* old start of the contour */
+				f = X_FRAG(ge);
+				if(f->ixstart == GEXFI_NONE && f->ixcont != GEXFI_NONE) {
+					/* oops, it's mid-fragment, move the start */
+					GENTRY *xge;
+
+					xge = ge->bkwd->next; /* entry following the contour */
+
+					/* find the first gentry of this frag */
+					pge = age[(f->aidx + clen - f->lenback[f->ixcont])%clen]; 
+
+					ge->prev = ge->bkwd; 
+					ge->bkwd->next = ge;
+
+					cge->next = pge;
+					pge->prev = cge;
+
+					pge->bkwd->next = xge;
+					if(xge) 
+						xge->prev = pge->bkwd;
+
+					cge->ix3 = pge->bkwd->ix3; cge->iy3 = pge->bkwd->iy3;
+				}
+
+				/* vectorize each fragment separately 
+				 * make 2 passes: first handle the straight lines, then
+				 * the curves to allow the curver to be connected smoothly
+				 * to the straights
+				 */
+				ge = cge->next;
+				do { /* pass 1 */
+					f = X_FRAG(ge);
+					switch(f->ixstart) {
+					case GEXFI_LINE:
+						len = f->len[GEXFI_LINE];
+						pge = age[(f->aidx + len - 1)%clen]; /* last gentry */
+
+						if(ge->iy3 == ge->bkwd->iy3) { /* frag starts and ends horizontally */
+							k1 = 1/*Y*/ ; /* across the direction of start */
+							k2 = 0/*X*/ ; /* along the direction of start */
+						} else { /* frag starts and ends vertically */
+							k1 = 0/*X*/ ; /* across the direction of start */
+							k2 = 1/*Y*/ ; /* along the direction of start */
+						}
+
+						if(len % 2) {
+							/* odd number of entries in the frag */
+							double halfstep, halfend;
+
+							f->vect[0][k1] = fscale * ge->ipoints[k1][2];
+							f->vect[3][k1] = fscale * pge->ipoints[k1][2];
+
+							halfstep = (pge->ipoints[k2][2] - ge->bkwd->ipoints[k2][2]) 
+								* 0.5 / ((len+1)/2);
+							if(f->ixcont != GEXFI_NONE) {
+								halfend = (ge->ipoints[k2][2] - ge->bkwd->ipoints[k2][2]) * 0.5;
+								if(fabs(halfstep) < fabs(halfend)) /* must be at least half gentry away */
+									halfstep = halfend;
+							}
+							if(X_FRAG(pge)->ixstart != GEXFI_NONE) {
+								halfend = (pge->ipoints[k2][2] - pge->bkwd->ipoints[k2][2]) * 0.5;
+								if(fabs(halfstep) < fabs(halfend)) /* must be at least half gentry away */
+									halfstep = halfend;
+							}
+							f->vect[0][k2] = fscale * (ge->bkwd->ipoints[k2][2] + halfstep);
+							f->vect[3][k2] = fscale * (pge->ipoints[k2][2] - halfstep);
+						} else {
+							/* even number of entries */
+							double halfstep, halfend;
+
+							f->vect[0][k1] = fscale * ge->ipoints[k1][2];
+							halfstep = (pge->ipoints[k2][2] - ge->bkwd->ipoints[k2][2]) 
+								* 0.5 / (len/2);
+							if(f->ixcont != GEXFI_NONE) {
+								halfend = (ge->ipoints[k2][2] - ge->bkwd->ipoints[k2][2]) * 0.5;
+								if(fabs(halfstep) < fabs(halfend)) /* must be at least half gentry away */
+									halfstep = halfend;
+							}
+							f->vect[0][k2] = fscale * (ge->bkwd->ipoints[k2][2] + halfstep);
+
+							halfstep = (pge->ipoints[k1][2] - ge->bkwd->ipoints[k1][2]) 
+								* 0.5 / (len/2);
+							if(X_FRAG(pge)->ixstart != GEXFI_NONE) {
+								halfend = (pge->ipoints[k1][2] - pge->bkwd->ipoints[k1][2]) * 0.5;
+								if(fabs(halfstep) < fabs(halfend)) /* must be at least half gentry away */
+									halfstep = halfend;
+							}
+							f->vect[3][k1] = fscale * (pge->ipoints[k1][2] - halfstep);
+							f->vect[3][k2] = fscale * pge->ipoints[k2][2];
+						}
+						f->vectlen = len;
+						f->flags |= GEXFF_DRAWLINE;
+						break;
+					}
+				} while((ge = ge->frwd) != cge->next);
+
+				ge = cge->next;
+				do { /* pass 2 */
+					/* data for curves */
+					GENTRY *firstge, *lastge, *gef, *gel, *gei, *gex;
+					GENTRY *ordhd; /* head of the order list */
+					GENTRY **ordlast;
+					int nsub; /* number of subfrags */
+					GEX_FRAG *ff, *lf, *xf;
+
+					f = X_FRAG(ge);
+					switch(f->ixstart) {
+					case GEXFI_CONVEX:
+					case GEXFI_CONCAVE:
+						len = f->len[f->ixstart];
+						firstge = ge;
+						lastge = age[(f->aidx + len - 1)%clen]; /* last gentry */
+
+						nsub = 0;
+						gex = firstge;
+						xf = X_FRAG(gex);
+						xf->prevsub = 0;
+						xf->sublen = 1;
+						xf->flags &= ~GEXFF_DONE;
+						for(gei = firstge->frwd; gei != lastge; gei = gei->frwd) {
+							xf->sublen++;
+							if(X_FRAG(gei)->flags & GEXFF_EXTR) {
+									xf->nextsub = gei;
+									for(i=0; i<2; i++)
+										xf->bbox[i] = abs(gei->ipoints[i][2] - gex->bkwd->ipoints[i][2]);
+									nsub++;
+									xf = X_FRAG(gei);
+									xf->prevsub = gex;
+									xf->sublen = 1;
+									xf->flags &= ~GEXFF_DONE;
+									gex = gei;
+								}
+						}
+						xf->sublen++;
+						xf->nextsub = gei;
+						for(i=0; i<2; i++)
+							xf->bbox[i] = abs(gei->ipoints[i][2] - gex->bkwd->ipoints[i][2]);
+						nsub++;
+						ff = xf; /* remember the beginning of the last subfrag */
+						xf = X_FRAG(gei);
+						xf->prevsub = gex;
+						if(firstge != lastge) {
+							xf->nextsub = 0;
+							xf->sublen = 0;
+
+							/* correct the bounding box of the last and first subfrags for
+							 * intersections with other fragments 
+							 */
+							if(xf->ixstart != GEXFI_NONE) {
+								/* ff points to the beginning of the last subfrag */
+								for(i=0; i<2; i++)
+									ff->bbox[i] -= 0.5 * abs(lastge->ipoints[i][2] - lastge->bkwd->ipoints[i][2]);
+							}
+							ff = X_FRAG(firstge);
+							if(ff->ixcont != GEXFI_NONE) {
+								for(i=0; i<2; i++)
+									ff->bbox[i] -= 0.5 * abs(firstge->ipoints[i][2] - firstge->bkwd->ipoints[i][2]);
+							}
+						}
+
+						fprintf(stderr, " %s frag %p%s nsub=%d\n", gxf_name[f->ixstart],
+							ge, (f->flags&GEXFF_CIRC)?" circular":"", nsub);
+
+						/* find the symmetry between the subfragments */
+						for(gef = firstge, count=0; count < nsub; gef = ff->nextsub, count++) {
+							ff = X_FRAG(gef);
+							gex = ff->nextsub;
+							xf = X_FRAG(gex);
+							gel = xf->nextsub;
+							if(gel == 0) {
+								ff->flags &= ~GEXFF_SYMNEXT;
+								break; /* not a circular frag */
+							}
+							good = 1; /* assume that we have symmetry */
+							/* gei goes backwards, gex goes forwards from the extremum */
+							gei = gex;
+							/* i is the symmetry axis, j is the other axis (X=0 Y=1) */
+							ff->symaxis = i = (gex->ix3 != gex->bkwd->ix3);
+							j = !i;
+							for( ; gei!=gef && gex!=gel; gei=gei->bkwd, gex=gex->frwd) {
+								if( gei->bkwd->ipoints[i][2] != gex->ipoints[i][2]
+								|| gei->bkwd->ipoints[j][2] - gei->ipoints[j][2]
+									!= gex->bkwd->ipoints[j][2] - gex->ipoints[j][2] 
+								) {
+									good = 0; /* no symmetry */
+									break;
+								}
+							}
+							if(good) {
+								if( isign(gei->bkwd->ipoints[j][2] - gei->ipoints[j][2])
+								!= isign(gex->bkwd->ipoints[j][2] - gex->ipoints[j][2]) ) {
+									good = 0; /* oops, goes into another direction */
+								}
+							}
+							if(good)
+								ff->flags |= GEXFF_SYMNEXT;
+							else
+								ff->flags &= ~GEXFF_SYMNEXT;
+						}
+
+						for(gef = firstge, count=0; count < nsub; gef = ff->nextsub, count++) {
+							ff = X_FRAG(gef);
+							if((ff->flags & GEXFF_SYMNEXT)==0) {
+								ff->symxlen = 0;
+								continue;
+							}
+							gex = ff->prevsub;
+							if(gex == 0 || (X_FRAG(gex)->flags & GEXFF_SYMNEXT)==0) {
+								ff->symxlen = 0;
+								continue;
+							}
+							ff->symxlen = X_FRAG(gex)->sublen;
+							xf = X_FRAG(ff->nextsub);
+							if(xf->sublen < ff->symxlen)
+								ff->symxlen = xf->sublen;
+						}
+
+						/* find the symmetry inside the subfragments */
+						for(gef = firstge, count=0; count < nsub; gef = ff->nextsub, count++) {
+							ff = X_FRAG(gef);
+
+							if(ff->sublen % 2) {
+								/* we must have an even number of gentries for diagonal symmetry */
+								ff->symge = 0;
+								continue;
+							}
+
+							/* gei goes forwards from the front */
+							gei = gef->frwd;
+							/* gex goes backwards from the back */
+							gex = ff->nextsub->bkwd;
+
+							/* i is the direction of gei, j is the direction of gex */
+							i = (gei->iy3 != gei->bkwd->iy3);
+							j = !i;
+							for( ; gei->bkwd != gex; gei=gei->frwd, gex=gex->bkwd) {
+								if( abs(gei->bkwd->ipoints[i][2] - gei->ipoints[i][2])
+								!= abs(gex->bkwd->ipoints[j][2] - gex->ipoints[j][2]) )
+									break; /* no symmetry */
+								i = j;
+								j = !j;
+							}
+							if(gei->bkwd == gex)
+								ff->symge = gex;
+							else
+								ff->symge = 0; /* no symmetry */
+						}
+
+						/* find the order of calculation:
+						 * prefer to start from long fragments that have the longest
+						 * neighbours symmetric with them, with all being equal prefer
+						 * the fragments that have smaller physical size
+						 */
+						ordhd = 0;
+						for(gef = firstge, count=0; count < nsub; gef = ff->nextsub, count++) {
+							ff = X_FRAG(gef);
+
+							for(ordlast = &ordhd; *ordlast != 0; ordlast = &xf->ordersub) {
+								xf = X_FRAG(*ordlast);
+								if(ff->sublen > xf->sublen)
+									break;
+								if(ff->sublen < xf->sublen)
+									continue;
+								if(ff->symxlen > xf->symxlen)
+									break;
+								if(ff->symxlen < xf->symxlen)
+									continue;
+								if(ff->bbox[0] < xf->bbox[0] || ff->bbox[1] < xf->bbox[1])
+									break;
+							}
+
+							ff->ordersub = *ordlast;
+							*ordlast = gef;
+						}
+
+						/* vectorize the subfragments */
+						for(gef = ordhd; gef != 0; gef = ff->ordersub) {
+
+							/* debugging stuff */
+							ff = X_FRAG(gef);
+							fprintf(stderr, "   %p-%p bbox[%g,%g] sym=%p %s len=%d xlen=%d\n",
+								gef, ff->nextsub, ff->bbox[0], ff->bbox[1], ff->symge, 
+								(ff->flags & GEXFF_SYMNEXT) ? "symnext" : "",
+								ff->sublen, ff->symxlen);
+
+							dosubfrag(g, f->ixstart, firstge, gef, fscale);
+						}
+
+						break;
+					}
+				} while((ge = ge->frwd) != cge->next);
+
+				free(age);
+
+			}
+
+		}
+
+		/* all the fragments are found, extract the vectorization */
+		pge = g->entries;
+		g->entries = g->lastentry = 0;
+		g->flags |= GF_FLOAT;
+		loopge = 0;
+		skip = 0;
+
+		for(ge = pge; ge != 0; ge = ge->next) {
+			GEX_FRAG *f, *pf;
+
+			switch(ge->type) {
+			case GE_LINE:
+				f = X_FRAG(ge);
+				if(skip == 0) {
+					if(f->flags & (GEXFF_DRAWLINE|GEXFF_DRAWCURVE)) {
+						/* draw a line to the start point */
+						fg_rlineto(g, f->vect[0][0], f->vect[0][1]);
+						/* draw the fragment */
+						if(f->flags & GEXFF_DRAWCURVE)
+							fg_rrcurveto(g, 
+								f->vect[1][0], f->vect[1][1],
+								f->vect[2][0], f->vect[2][1],
+								f->vect[3][0], f->vect[3][1]);
+						else
+							fg_rlineto(g, f->vect[3][0], f->vect[3][1]);
+						skip = f->vectlen - 2;
+					} else {
+						fg_rlineto(g, fscale * ge->ix3, fscale * ge->iy3);
+					}
+				} else
+					skip--;
+				break;
+			case GE_MOVE:
+				fg_rmoveto(g, -1e6, -1e6); /* will be fixed by GE_PATH */
+				skip = 0;
+				/* remember the reference to update it later */
+				loopge = g->lastentry;
+				break;
+			case GE_PATH:
+				/* update the first MOVE of this contour */
+				if(loopge) {
+					loopge->fx3 = g->lastentry->fx3;
+					loopge->fy3 = g->lastentry->fy3;
+					loopge = 0;
+				}
+				g_closepath(g);
+				break;
+			}
+		}
+		for(ge = pge; ge != 0; ge = cge) {
+			cge = ge->next;
+			free(ge->ext);
+			free(ge);
+		}
+		dumppaths(g, NULL, NULL);
+		
+		/* end of vectorization logic */
+	} else {
+		/* convert the data to float */
+		GENTRY *ge;
+		double x, y;
+
+		for(ge = g->entries; ge != 0; ge = ge->next) {
+			ge->flags |= GEF_FLOAT;
+			if(ge->type != GE_MOVE && ge->type != GE_LINE) 
+				continue;
+
+			x = fscale * ge->ix3;
+			y = fscale * ge->iy3;
+
+			ge->fx3 = x;
+			ge->fy3 = y;
+		}
+		g->flags |= GF_FLOAT;
+	}
+
+	free(hlm); free(vlm); free(amp);
+}
+
+#if 0
+/* print out the bitmap */
+printbmap(bmap, xsz, ysz, xoff, yoff)
+	char *bmap;
+	int xsz, ysz, xoff, yoff;
+{
+	int x, y;
+
+	for(y=ysz-1; y>=0; y--) {
+		putchar( (y%10==0) ? y/10+'0' : ' ' );
+		putchar( y%10+'0' );
+		for(x=0; x<xsz; x++)
+			putchar( bmap[y*xsz+x] ? 'X' : '.' );
+		if(-yoff==y)
+			putchar('_'); /* mark the baseline */
+		putchar('\n');
+	}
+	putchar(' '); putchar(' ');
+	for(x=0; x<xsz; x++)
+		putchar( x%10+'0' );
+	putchar('\n'); putchar(' '); putchar(' ');
+	for(x=0; x<xsz; x++)
+		putchar( (x%10==0) ? x/10+'0' : ' ' );
+	putchar('\n');
+}
+
+/* print out the limits of outlines */
+printlimits(hlm, vlm, amp, xsz, ysz)
+	char *hlm, *vlm, *amp;
+	int xsz, ysz;
+{
+	int x, y;
+	static char h_char[]={ ' ', '~', '^' };
+	static char v_char[]={ ' ', '(', ')' };
+
+	for(y=ysz-1; y>=0; y--) {
+		for(x=0; x<xsz; x++) {
+			if(amp[y*xsz+x])
+				putchar('!'); /* ambigouos point is always on a limit */
+			else
+				putchar(v_char[ vlm[y*(xsz+1)+x] & (L_ON|L_OFF) ]);
+			putchar(h_char[ hlm[(y+1)*xsz+x] & (L_ON|L_OFF) ]);
+		}
+		putchar(v_char[ vlm[y*(xsz+1)+x] & (L_ON|L_OFF) ]);
+		putchar('\n');
+	}
+	/* last line */
+	for(x=0; x<xsz; x++) {
+		putchar(' ');
+		putchar(h_char[ hlm[x] & (L_ON|L_OFF) ]);
+	}
+	putchar(' ');
+	putchar('\n');
+}
+#endif /* 0 */
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/README
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/README	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/README	(revision 2000)
@@ -0,0 +1,814 @@
+TTF2PT1 - A True Type to PostScript Type 1 Font Converter 
+
+(Do not edit this file, it is generated from README.html!!!)
+[
+  Based on ttf2pfa by Andrew Weeks, and help from Frank Siegert.
+  Modification by Mark Heath.
+  Further modification by Sergey Babkin.
+  The Type1 assembler by I. Lee Hetherington with modifications by 
+  Kai-Uwe Herbing.
+]
+
+Ever wanted to install a particular font on your XServer but only could find 
+the font you are after in True Type Format?
+
+Ever asked comp.fonts for a True Type to Type 1 converter and got a List 
+of Commercial software that doesn't run on your Operating System?
+
+Well, this program should be the answer.  This program is written in C (so it
+should be portable)  and therefore should run on any OS.  The only limitation
+is that the program requires some method of converting Big endian integers into
+local host integers so the network functions ntohs and ntohl are used. These 
+can be replaced by macros if your platform doesn't have them. 
+Of course the target platform requires a C compiler and command line ability.
+
+Ttf2pt1 is a font converter from the True Type format (and some other formats
+supported by the FreeType library as well) to the Adobe Type1 format.
+
+The versions 3.0 and later got rather extensive post-processing algorithm that 
+brings the converted fonts to the requirements of the Type1 standard, tries to
+correct the rounding errors introduced during conversions and some simple
+kinds of bugs that are typical for the public domain TTF fonts. It
+also generates the hints that enable much better rendering of fonts in
+small sizes that are typical for the computer displays. But everything
+has its price, and some of the optimizations may not work well for certain
+fonts. That's why the options were added to the converter, to control
+the performed optimizations.
+
+The converter is simple to run, just:
+
+	ttf2pt1 [-options] ttffont.ttf [Fontname]
+or
+	ttf2pt1 [-options] ttffont.ttf -
+
+The first variant creates the file Fontname.pfa (or Fontname.pfb if the 
+option '-b' was used) with the converted font and Fontname.afm with the 
+font metrics, the second one prints the font or another file (if the option
+'-G' was used) on the standard output from where it can be immediately
+piped through some filter. If no Fontname is specified for the first
+variant, the name is generated from ttffont by replacing the .ttf
+filename suffix.
+
+Most of the time no options are neccessary (with a possible exception
+of '-e'). But if there are some troubles with the resulting font, they 
+may be used to control the conversion.
+The options are:
+
+-a - Include all the glyphs from the source file into the converted
+   file. If this option is not specified then only the glyphs that have
+   been assigned some encoding are included, because the rest of glyphs
+   would be inaccessible anyway and would only consume the disk space. 
+   But some applications are clever enough to change the encoding on
+   the fly and thus use the other glyphs, in this case they could
+   benefit from using this option. But there is a catch: the X11 library
+   has rather low limit for the font size. Including more glyphs increases
+   the file size and thus increases the chance of hitting this limit.
+   See app/X11/README for the description of a 
+   patch to X11 which fixes this problem.
+
+-b - Encode the resulting font to produce a ready .pfb file.
+
+-d suboptions - Debugging options. The suboptions are:
+
+   a - Print out the absolute coordinates of dots in outlines. Such
+   a font can not be used by any program (that's why this option is
+   incompatible with '-e') but it has proven to be a valuable debuging 
+   information.
+
+   r - Do not reverse the direction of outlines. The TTF fonts have
+   the standard direction of outlines opposite to the Type1 fonts. So
+   they should be reversed during proper conversion. This option
+   may be used for debugging or to handle a TTF font with wrong
+   direction of outlines (possibly, converted in a broken way from
+   a Type1 font). The first signs of the wrong direction are the
+   letters like "P" or "B" without the unpainted "holes" inside.
+
+-e - Assemble the resulting font to produce a ready .pfa file.
+   [ S.B.: Personally I don't think that this option is particularly useful.
+   The same result may be achieved by piping the unassembled data
+   through t1asm, the Type 1 assembler. And, anyways, it's good to
+   have the t1utils package handy. But Mark and many users think that 
+   this functionality is good and it took not much time to add this option. ]
+
+-F - Force the Unicode encoding: any type of MS encoding specified
+   in the font is ignored and the font is treated like it has Unicode
+   encoding. WARNING: this option is intended for buggy fonts
+   which actually are in Unicode but are marked as something else. The
+   effect on the other fonts is unpredictable.
+
+-G suboptions - File generation options. The suboptions may be lowercase 
+   or uppercase, the lowercase ones disable the generation of particular 
+   files, the corresponding uppercase suboptions enable the generation of the 
+   same kind of files. If the result of ttf2pt1 is requested to be printed on
+   the standard output, the last enabling suboption of -G determines
+   which file will be written to the standard output and the rest of files
+   will be discarded. For example, -G A will request the AFM file.
+   The suboptions to disable/enable the generation of the files are:
+
+   f/F - The font file. Depending on the other options this file
+   will have one of the suffixes .t1a, .pfa or .pfb. If the conversion result
+   is requested on the standard output ('-' is used as the output file name)
+   then the font file will also be written there by default, if not overwritten
+   by another suboption of -G.
+   Default: enabled
+
+   a/A - The Adobe font metrics file (.afm).
+   Default: enabled
+
+   e/E - The dvips encoding file (.enc).
+   Default: disabled
+
+
+-l language[+argument] - Extract the fonts for the specified language from a
+   multi-language Unicode font. If this option is not used the converter
+   tries to guess the language by the values of the shell variable LANG.
+   If it is not able to guess the language by LANG it tries all the
+   languages in the order they are listed. 
+
+   After the plus sign an optional argument for the language extractor
+   may be specified. The format of the argument is absolutely up to
+   the particular language converter. The primary purpose of the
+   argument is to support selection of planes for the multi-plane
+   Eastern encodings but it can also be used in any other way. The 
+   language extractor may decide to add the plane name in some form
+   to the name of the resulting font. None of the currently supported 
+   languages make any use of the argument yet.
+
+   As of now the following languages are supported:
+     latin1 - for all the languages using the Latin-1 encoding
+     latin2 - for the Central European languages
+     latin4 - for the Baltic languages
+     latin5 - for the Turkish language
+     cyrillic - for the languages with Cyrillic alphabet
+     russian - historic synonym for cyrillic
+     bulgarian - historic synonym for cyrillic
+     adobestd - for the AdobeStandard encoding used by TeX
+     plane+argument - to select one plane from a multi-byte encoding
+
+   The argument of the "plane" language may be in one of three forms:
+     plane+pid=<pid>,eid=<eid>
+     plane+pid=<pid>,eid=<eid>,<plane_number>
+     plane+<plane_number>
+
+   Pid (TTF platform id) and eid (TTF encoding id) select a particular 
+   TTF encoding table in the original font. They are specified as decimal
+   numbers. If this particular encoding table is not present in the font
+   file then the conversion fails. The native ("ttf") front-end parser supports
+   only pid=3 (Windows platform), the FreeType-based ("ft") front-end supports 
+   any platform. If pid/eid is not specified then the TTF encoding table is 
+   determined as usual: Unicode encoding if it's first or an 8-bit encoding
+   if not (and for an 8-bit encoding the plane number is silently ignored). 
+   To prevent the converter from falling back to an 8-bit encoding, specify
+   the Unicode pid/eid value explicitly.
+
+   Plane_number is a hexadecimal (if starts with "0x") or decimal number.
+   It gives the values of upper bytes for which 256 characters will be 
+   selected. If not specified, defaults to 0. It is also used as a font
+   name suffix (the leading "0x" is not included into the suffix).
+
+   NOTE:
+   It seems that many Eastern fonts use features of the TTF format that are 
+   not supported by the ttf2pt1's built-in front-end parser. Because of
+   this for now we recommend using the FreeType-based parser (option
+   '-p ft') with the "plane" language.
+
+   NOTE:
+   You may notice that the language names are not uniform: some are the
+   names of particular languages and some are names of encodings. This
+   is because of the different approaches. The original idea was to
+   implement a conversion from Unicode to the appropriate Windows
+   encoding for a given language. And then use the translation tables
+   to generate the fonts in whatever final encodings are needed. This
+   would allow to pile together the Unicode fonts and the non-Unicode
+   Windows fonts for that language and let the program to sort them out
+   automatically. And then generate fonts in all the possible encodings
+   for that language. An example of this approach is the Russian language
+   support. But if there is no multiplicity of encodings used for some 
+   languages and if the non-Unicode fonts are not considered important 
+   by the users, another way would be simpler to implement: just provide
+   only one table for extraction of the target encoding from Unicode
+   and don't bother with the translation tables. The latin* "languages"
+   are examples of this approach. If somebody feels that he needs the
+   Type1 fonts both in Latin-* and Windows encodings he or she is absolutely
+   welcome to submit the code to implement it.
+
+   WARNING:
+   Some of the glyphs included into the AdobeStandard encoding are not
+   included into the Unicode standard. The most typical examples of such
+   glyphs are ligatures like 'fi', 'fl' etc. Because of this the font 
+   designers may place them at various places. The converter tries to
+   do its best, if the glyphs have honest Adobe names and/or are
+   placed at the same codes as in the Microsoft fonts they will be
+   picked up. Otherwise a possible solution is to use the option '-L'
+   with an external map. 
+
+-L file[+[pid=<pid>,eid=<eid>,][plane]] - Extract the fonts for the specified 
+   language from a multi-language font using the map from this file. This is
+   rather like the option '-l' but the encoding map is not 
+   compiled into the program, it's taken from that file, so it's
+   easy to edit. Examples of such files are provided in 
+   maps/adobe-standard-encoding.map, CP1250.map. (NOTE:
+   the 'standard encoding' map does not include all the glyphs of the 
+   AdobeStandard encoding, it's provided only as an example.) The 
+   description of the supported map formats is in the file 
+   maps/unicode-sample.map.
+
+   Likewise to '-l', an argument may be specified after the map file
+   name. But in this case the argument has fixed meaning: it selects the 
+   original TTF encoding table (the syntax is the same as in '-l plane')
+   and/or a plane of the map file. The plane name also gets added after dash 
+   to the font name. The plane is a concept used in the Eastern fonts with big 
+   number of glyphs: one TTF font gets divided into multiple Type1 fonts, 
+   each containing one plane of up to 256 glyphs. But with a little 
+   creativity this concept may be used for other purposes of combining 
+   multiple translation maps into one file.  To extract multiple planes 
+   from a TTF font ttf2pt1 must be run multiple times, each time with 
+   a different plane name specified.
+
+   The default original TTF encoding table used for the option '-L' is
+   Unicode. The map files may include directives to specify different original 
+   TTF encodings. However if the pid/eid pair is specified with
+   it overrides any original encoding specified in the map file.
+
+-m type=value - Set maximal or minimal limits of resources.
+   These limits control the the font generation by limiting the resources
+   that the font is permitted to require from the PostScript interpreter.
+   The currently supported types of limits are:
+
+   h - the maximal hint stack depth for the substituted hints. 
+   The default value is 128, according to the limitation in X11. This seems to
+   be the lowest (and thus the safest) widespread value. To display the
+   hint stack depth required by each glyph in a .t1a file use the script
+   scripts/cntstems.pl.
+
+-O suboptions - Outline processing options. The suboptions
+   may be lowercase or uppercase, the lowercase ones disable the features,
+   the corresponding uppercase suboptions enable the same features.
+   The suboptions to disable/enable features are:
+
+   b/B - Guessing of the ForceBold parameter. This parameter helps
+   the Type1 engine to rasterize the bold fonts properly at small sizes.
+   But the algorithm used to guess the proper value of this flag makes
+   that guess based solely on the font name. In rare cases that may cause
+   errors, in these cases you may want to disable this guessing. 
+   Default: enabled
+
+   h/H - Autogeneration of hints. The really complex outlines
+   may confuse the algorithm, so theoretically it may be useful
+   sometimes to disable them. Although up to now it seems that
+   even bad hints are better than no hints at all.
+   Default: enabled
+
+   u/U - Hint substitution. Hint substitution is a technique 
+   permitting generation of more detailed hints for the rasterizer. It allows 
+   to use different sets of hints for different parts of a glyph and change 
+   these sets as neccessary during rasterization (that's why "substituted").  
+   So it should improve the quality of the fonts rendered at small sizes.  
+   But there are two catches: First, the X11 library has rather low limit for 
+   the font size. More detailed hints increase the file size and thus increase 
+   the chance of hitting this limit (that does not mean that you shall hit it
+   but you may if your fonts are particularly big). This is especially 
+   probable for Unicode fonts converted with option '-a', so you may want to 
+   use '-a' together with '-Ou'. See app/X11/README for the description of 
+   a patch to X11 which fixes this problem. Second, some rasterizers (again,
+   X11 is the typical example) have a limitation for total number of hints
+   used when drawing a glyph (also known as the hint stack depth). If that
+   stack overflows the glyph is ignored. Starting from version 3.22 ttf2pt1
+   uses algorithms to minimizing this depth, with the trade-off of slightly
+   bigger font files. The glyphs which still exceed the limit set by option
+   '-mh' have all the substituted hints removed and only base hints left.
+   The algorithms seem to have been refined far enough to make the fonts with
+   substituted hints look better than the fonts without them or at least the 
+   same. Still if the original fonts are not well-designed the detailed 
+   hinting may emphasize the defects of the design, such as non-even thickness 
+   of lines. So provided that you are not afraid of the X11 bug the best idea 
+   would be to generate a font with this feature and without it, then compare 
+   the results using the program other/cmpf (see the description 
+   in other/README) and decide which one looks better.
+   Default: enabled
+
+   o/O - Space optimization of the outlines' code. This kind of optimization
+   never hurts, and the only reason to disable this feature is for comparison 
+   of the generated fonts with the fonts generated by the previous versions of 
+   converter. Well, it _almost_ never hurts. As it turned out there exist
+   some brain-damaged printers which don't understand it. Actually this
+   feature does not change the outlines at all. The Type 1 font manual 
+   provides a set of redundant operators that make font description shorter,
+   such as '10 hlineto' instead of '0 10 rlineto' to describe a horizontal
+   line. This feature enables use of these operators.
+   Default: enabled
+
+   s/S - Smoothing of outlines. If the font is broken in some
+   way (even the ones that are not easily noticeable), such smoothing 
+   may break it further. So disabling this feature is the first thing to be 
+   tried if some font looks odd. But with smoothing off the hint generation
+   algorithms may not work properly too.
+   Default: enabled
+
+   t/T - Auto-scaling to the 1000x1000 Type1 standard matrix. The
+   TTF fonts are described in terms of an arbitrary matrix up to
+   4000x4000. The converted fonts must be scaled to conform to
+   the Type1 standard. But the scaling introduces additional rounding
+   errors, so it may be curious sometimes to look at the font in its
+   original scale.
+   Default: enabled
+
+   v/V - Do vectorization on the bitmap fonts. Functionally
+   "vectorization" is the same thing as "autotracing", a different word is
+   used purely to differentiate it from the Autotrace library. It tries to
+   produce nice smooth outlines from bitmaps. This feature is still a work
+   in progress though the results are already mostly decent.
+   Default: disabled
+
+   w/W - Glyphs' width corection. This option is designed to be
+   used on broken fonts which specify too narrow widths for the 
+   letters. You can tell that a font can benefit from this option
+   if you see that the characters are smashed together without
+   any whitespace between them. This option causes the converter
+   to set the character widths to the actual width of this character
+   plus the width of a typical vertical stem. But on the other hand
+   the well-designed fonts may have characters that look better if
+   their widths are set slightly narrower. Such well-designed fonts
+   will benefit from disabling this feature. You may want to convert
+   a font with and without this feature, compare the results and
+   select the better one. This feature may be used only on proportional
+   fonts, it has no effect on the fixed-width fonts.
+   Default: disabled
+
+   z/Z - Use the Autotrace library on the bitmap fonts. The results 
+   are horrible and the use of this option is not recommended. This option is 
+   present for experimental purposes. It may change or be removed in the
+   future. The working tracing can be achieved with option -OV.
+   Default: disabled
+
+-p parser_name - Use the specified front-end parser to read the font file.
+   If this option is not used, ttf2pt1 selects the parser automatically based
+   on the suffix of the font file name, it uses the first parser in its
+   list that supports this font type. Now two parsers are supported:
+
+     ttf - built-in parser for the ttf files (suffix .ttf)
+     bdf - built-in parser for the BDF files (suffix .bdf)
+     ft - parser based on the FreeType-2 library (suffixes .ttf,
+       .otf, .pfa, .pfb)
+
+   The parser ft is NOT linked in by default. See Makefile
+   for instructions how to enable it. We do no support this parser on
+   Windows: probably it will work but nobody tried and nobody knows how
+   to build it. 
+
+   The conversion of the bitmap fonts (such as BDF) is simplistic yet,
+   producing jagged outlines.  When converting such fonts, it might be 
+   a good idea to turn off the hint substitution (using option -Ou) 
+   because the hints produced will be huge but not adding much to the
+   quality of the fonts.
+
+-u number - Mark the font with this value as its
+   UniqueID. The UniqueID is used by the printers with the hard disks
+   to cache the rasterized characters and thus significantly
+   speed-up the printing. Some of those printers just can't
+   store the fonts without UniqueID on their disk.The problem
+   is that the ID is supposed to be unique, as it name says. And
+   there is no easy way to create a guaranteed unique ID. Adobe specifies
+   the range 4000000-4999999 for private IDs but still it's difficult
+   to guarantee the uniqueness within it. So if you don't really need the 
+   UniqueID don't use it, it's optional. Luckily there are a few millions of 
+   possible IDs, so the chances of collision are rather low. 
+   If instead of the number a special value 'A' is given
+   then the converter generates the value of UniqueID automatically,
+   as a hash of the font name. (NOTE:  in the version 3.22 the
+   algorithm for autogeneration of UniqueID was changed to fit the values
+   into the Adobe-spacified range. This means that if UniqueIDs were used 
+   then the printer's cache may need to be flushed before replacing the 
+   fonts converted by an old version with fonts converted by a newer version).
+   A simple way to find if any of the fonts in a given directory have
+   duplicated UniqueIDs is to use the command:
+
+     cat *.pf[ab] | grep UniqueID | sort | uniq -c | grep -v ' 1 '
+
+   Or if you use scripts/convert it will do that for you automatically 
+   plus it will also give the exact list of files with duplicate UIDs.
+
+-v size - Re-scale the font to get the size of a typical uppercase
+   letter somewhere around the specified size. Actually, it re-scales
+   the whole font to get the size of one language-dependent letter to be
+   at least of the specified size. Now this letter is "A" in all the
+   supported languages. The size is specified in the points of the
+   Type 1 coordinate grids, the maximal value is 1000. This is an
+   experimental option and should be used with caution. It tries to
+   increase the visible font size for a given point size and thus make
+   the font more readable. But if overused it may cause the fonts to
+   look out of scale. As of now the interesting values of size for
+   this option seem to be located mostly between 600 and 850. This
+   re-scaling may be quite useful but needs more experience to
+   understand the balance of its effects.
+
+-W level - Select the verbosity level of the warnings.
+   Currently the levels from 0 to 4 are supported. Level 0 means no warnings
+   at all, level 4 means all the possible warnings. The default level is 3.
+   Other levels may be added in the future, so using the level number 99 is
+   recommended to get all the possible warnings. Going below level 2 is
+   not generally recommended because you may miss valuable information about
+   the problems with the fonts being converted.
+
+Obsolete option:
+-A - Print the font metrics (.afm file) instead of the font on STDOUT.
+   Use -GA instead.
+
+Very obsolete option:
+   The algorithm that implemented the forced fixed width had major
+   flaws, so it was disabled. The code is still in the program and
+   some day it will be refined and returned back. Meanwhile the 
+   option name '-f' was reused for another option. The old version was:
+-f - Don't try to force the fixed width of font. Normally the converter
+   considers the fonts in which the glyph width deviates by not more
+   than 5% as buggy fixed width fonts and forces them to have really
+   fixed width. If this is undesirable, it can be disabled by this option.
+
+The .pfa font format supposes that the description of the characters
+is binary encoded and encrypted. This converter does not encode or
+encrypt the data by default, you have to specify the option '-e'
+or use the t1asm program to assemble (that means, encode and
+encrypt) the font program. The t1asm program that is included with
+the converter is actually a part of the t1utils package, rather old
+version of which may be obtained from
+
+	http://ttf2pt1.sourceforge.net/t1utils.tar.gz
+
+Note that t1asm from the old version of that package won't work properly
+with the files generated by ttf2pt1 version 3.20 and later. Please use
+t1asm packaged with ttf2pt1 or from the new version t1utils
+instead. For a newer version of t1utils please look at
+
+	http://www.lcdf.org/~eddietwo/type/
+
+So, the following command lines:
+
+	ttf2pt1 -e ttffont.ttf t1font
+	ttf2pt1 ttffont.ttf - | t1asm >t1font.pfa
+
+represent two ways to get a working font. The benefit of the second form 
+is that other filters may be applied to the font between the converter
+and assembler.
+
+Installation and deinstallation of the converter
+------------------------------------------------
+
+The converter may be easily installed systemwide with
+
+	make install
+
+and uninstalled with
+
+	make uninstall
+
+By default the Makefile is configured to install in the hierarchy
+of directory /usr/local. This destination directory as well as
+the structure of the hierarchy may be changed by editing the Makefile.
+
+Installation of the fonts
+-------------------------
+
+Running the converter manually becomes somewhat boring if it has to 
+be applied to a few hundreds of fonts and then you have to generate the 
+fonts.scale and/or Fontmap files. The FONTS file describes how to use 
+the supplied scripts to handle such cases easily. It also discusses
+the installation of the fonts for a few widespread programs.
+
+Other utilities
+---------------
+
+A few other small interesting programs that allow a cloase look at
+the fonts are located in the subdirectory 'other'. They
+are described shortly in others/README.
+
+Optional packages
+-----------------
+
+Some auxiliary files are not needed by everyone and are big enough that
+moving them to a separate package speeds up the downloads of the main
+package significantly. As of now we have one such optional package:
+
+  ttf2pt1-chinese - contains the Chinese conversion maps
+
+The general versioning policy for the optional packages is the following:
+These packages may have no direct dependency on the ttf2pt1 version.
+But they may be updated in future, as well as some versions of optional
+packages may have dependencies on certain versions of ttf2pt1.
+To avoid unneccessary extra releases on one hand and keep the updates in 
+sync with the ttf2pt1 itself on the other hand, a new version of an optional 
+package will be released only if there are any changes to it and it will be 
+given the same version number as ttf2pt1 released at the same time. So not 
+every release of ttf2pt1 would have a corresponding release of all optional 
+packages. For example, to get the correct version of optional packages for an 
+imaginary release 8.3.4 of ttf2pt1 you would need to look for optional 
+packages of the highest version not higher than (but possibly equal to) 8.3.4.
+
+TO DO:
+------
+
+- Improve hinting.
+- Improve the auto-tracing of bitmaps.
+- Implement the family-level hints.
+- Add generation of CID-fonts.
+- Handle the composite glyphs with relative base points.
+- Preserve the relative width of stems during scaling to 1000x1000 matrix.
+- Add support for bitmap TTF fonts.
+- Implement better support of Asian encodings.
+- Implement automatic creation of ligatures.
+
+TROUBLESHOOTING AND BUG REPORTS
+-------------------------------
+
+Have problems with conversion of some font ? The converter dumps core ? Or your
+printer refuses to understand the converted fonts ? Or some characters are 
+missing ? Or some characters look strange ?
+
+Send the bug reports to the ttf2pt1 development mailing list at
+ttf2pt1-devel@lists.sourceforge.net.
+
+Try to collect more information about the problem and include it into
+the bug report. (Of course, even better if you would provide a ready
+fix, but just a detailed bug report is also good). Provide detailed
+information about your problem, this will speed up the response greatly.
+Don't just write "this font looks strange after conversion" but describe
+what's exactly wrong with it: for example, what characters look wrong
+and what exactly is wrong about their look. Providing a link to the
+original font file would be also a good idea. Try to do a little
+troublehooting and report its result. This not only would help with
+the fix but may also give you a temporary work-around for the bug.
+
+First, enable full warnings with option '-W99', save them to
+a file and read carefully. Sometimes the prolem is with a not implemented
+feature which is reported in the warnings. Still, reporting about such
+problems may be a good idea: some features were missed to cut corners,
+in hope that no real font is using them. So a report about a font using
+such a feature may motivate someone to implement it. Of course, you
+may be the most motivated person: after all, you are the one wishing
+to convert that font. ;-) Seriously, the philosophy "scrath your own itch"
+seems to be the strongest moving force behind the Open Source software.
+
+The next step is playing with the options. This serves a dual purpose:
+on one hand, it helps to localize the bug, on the other hand you may be
+able to get a working version of the font for the meantime while the
+bug is being fixed. The typical options to try out are: first '-Ou', if
+it does not help then '-Os', then '-Oh', then '-Oo'.
+They are described in a bit more detail above. Try them one by one
+and in combinations. See if with them the resulting fonts look better.
+
+On some fonts ttf2pt1 just crashes. Commonly that happens because the
+font being converted is highly defective (although sometimes the bug
+is in ttf2pt1 itself). In any case it should not crash, so the reports
+about such cases will help to handle these defects properly in future.
+
+We try to respond to the bug reports in a timely fashion but alas, this 
+may not always be possible, especially if the problem is complex.
+This is a volunteer project and its resources are limited. Because
+of this we would appreciate bug reports as detailed as possible,
+and we would appreciate the ready fixes and contributions even more.
+
+CONTACTS
+--------
+
+ttf2pt1-announce@lists.sourceforge.net
+  The mailing list with announcements about ttf2pt1. It is a moderated mailing
+  with extremely low traffic. Everyone is encouraged to subscribe to keep in 
+  touch with the current status of project. To subscribe use the Web interface
+  at http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-announce.
+  If you have only e-mail access to the Net then send a subscribe request to 
+  the development mailing list ttf2pt1-devel@lists.sourceforge.net and somebody
+  will help you with subscription.
+
+ttf2pt1-devel@lists.sourceforge.net
+ttf2pt1-users@lists.sourceforge.net
+  The ttf2pt1 mailing lists for development and users issues. They have not
+  that much traffic either. To subscribe use the Web interface at
+  http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-devel
+  and http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-users.
+  If you have only e-mail access to the Net then send a subscribe request to 
+  the development mailing list ttf2pt1-devel@lists.sourceforge.net and somebody
+  will help you with subscription.
+
+mheath@netspace.net.au
+  Mark Heath
+
+A.Weeks@mcc.ac.uk
+  Andrew Weeks
+
+babkin@users.sourceforge.net (preferred)
+sab123@hotmail.com
+http://members.bellatlantic.net/~babkin
+  Sergey Babkin
+
+SEE ALSO
+--------
+
+http://ttf2pt1.sourceforge.net
+  The main page of the project.
+
+http://www.netspace.net.au/~mheath/ttf2pt1/
+  The old main page of the project.
+
+http://sourceforge.net/projects/gnuwin32
+  Precompiled binaries for Windows.
+
+http://www.lcdf.org/~eddietwo/type/
+  The home page of the Type 1 utilities package.
+
+http://www.rightbrain.com/pages/books.html
+  The first book about PostScript on the Web, "Thinking in PostScript".
+
+http://fonts.apple.com/TTRefMan/index.html
+  The True Type reference manual.
+
+http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf
+  Adobe PostScript reference manual.
+
+http://partners.adobe.com/asn/developer/PDFS/TN/T1_SPEC.PDF
+  Specification of the Type 1 font format.
+
+http://partners.adobe.com/asn/developer/PDFS/TN/5015.Type1_Supp.pdf
+  The Type 1 font format supplement.
+
+http://partners.adobe.com/asn/developer/PDFS/TN/5004.AFM_Spec.pdf
+  Specification of the Adobe font metrics file format.
+
+http://www.cs.wpi.edu/~matt/courses/cs563/talks/surface/bez_surf.html
+http://www.cs.wpi.edu/~matt/courses/cs563/talks/curves.html
+  Information about the Bezier curves.
+
+http://www.neuroinformatik.ruhr-uni-bochum.de/ini/PEOPLE/rmz/t1lib/t1lib.html
+  A stand-alone library supporting the Type1 fonts. Is neccessary
+  to compile the programs other/cmpf and other/dmpf.
+
+http://www.freetype.org
+  A library supporting the TTF fonts. Also many useful TTF programs
+  are included with it.
+
+http://heliotrope.homestead.com/files/printsoft.html
+  Moses Gold's collection of links to printing software.
+
+http://linuxartist.org/fonts/
+  Collection of font-related links.
+
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+
+Following is the Readme of ttf2pfa (true type to type 3 font converter) It 
+covers other issues regarding the use of this software. Please note that
+although ttf2pfa is a public domain software, ttf2pt1
+is instead covered by an Open Source license. See the COPYRIGHT
+file for details.
+
+Please note also that ttf2pfa has not been maintained for a long time.
+All of its functionality has been integrated into ttf2pt1 and all the
+development moved to ttf2pt1, including Andrew Weeks, the author of
+ttf2pfa. Ttf2pfa is provided for historical reasons only. Please use
+ttf2pt1 instead.
+
+----------------------------------------------------------------------
+
+True Type to Postscript Font converter
+--------------------------------------
+
+My mind is still reeling from the discovery that I was able to write
+this program. What it does is it reads a Microsoft TrueType font and
+creates a Postscript font. '_A_ postscript font', that is, not necessarily
+the same font, you understand, but a fair imitation.
+
+Run it like this:
+
+	ttf2pfa fontfile.ttf fontname
+
+The first parameter is the truetype filename, the second is a stem for
+the output file names. The program will create a fontname.pfa containing
+the Postscript font and a fontname.afm containing the metrics.
+
+The motivation behind this is that in Linux if you do not have a
+Postscript printer, but only some other printer, you can only print
+Postscript by using Ghostscript. But the fonts that come with
+Ghostscript are very poor (they are converted from bitmaps and look
+rather lumpy). This is rather frustrating as the PC running Linux
+probably has MS-Windows as well and will therefore have truetype fonts,
+but which are quite useless with Linux, X or Ghostscript.
+
+The program has been tested on over a hundred different TrueType fonts
+from various sources, and seems to work fairly well. The converted
+characters look OK, and the program doesn't seem to crash any more. I'm
+not sure about the AFM files though, as I have no means to test them.
+
+The fonts generated will not work with X, as the font rasterizer that
+comes with X only copes with Type 1 fonts. If I have the time I may
+modify ttf2pfa to generate Type 1s.
+
+Copyright issues
+----------------
+
+I am putting this program into the public domain, so don't bother
+sending me any money, I'd only have to declare it for income tax.
+
+Copyright on fonts, however, is a difficult legal question. Any
+copyright statements found in a font will be preserved in the output.
+Whether you are entitled to translate them at all I don't know.
+
+If you have a license to run a software package, like say MS-Windows, on
+your PC, then you probably have a right to use any part of it, including
+fonts, on that PC, even if not using that package for its intended
+purpose.
+
+I am not a lawyer, however, so this is not a legal opinion, and may be
+garbage.
+
+There shouldn't be a any problem with public domain fonts.
+
+About the Program
+-----------------
+
+It was written in C on a IBM PC running Linux.
+
+The TrueType format was originally developed by Apple for the MAC, which
+has opposite endianness to the PC, so to ensure compatibility 16 and 32
+bit fields are the wrong way round from the PC's point of view. This is
+the reason for all the 'ntohs' and 'ntohl' calls. Doing it this way
+means the program will also work on big-endian machines like Suns.
+
+I doubt whether it will work on a DOS-based PC though.
+
+The program produces what technically are Type 3 rather than Type 1
+fonts. They are not compressed or encrypted and are plain text. This is
+so I (and you) can see what's going on, and (if you're a Postscript guru
+and really want to) can alter the outlines.
+
+I only translate the outlines, not the 'instructions' that come with
+them. This latter task is probably virtually impossible anyway. TrueType
+outlines are B-splines rather than the Bezier curves that Postscript
+uses. I believe that my conversion algorithm is reasonably correct, if
+nothing else because the characters look right.
+
+Problems that may occur
+-----------------------
+
+Most seriously, very complex characters (with lots of outline segments)
+can make Ghostscript releases 2.x.x fail with a 'limitcheck' error. It
+is possible that this may happen with some older Postscript printers as
+well. Such characters will be flagged by the program and there are
+basically two things you can do. First is to edit the .pfa file to
+simplify or remove the offending character. This is not really
+recommended. The second is to use Ghostscript release 3, if you can get
+it. This has much larger limits and does not seem to have any problems
+with complex characters.
+
+Then there are buggy fonts (yes, a font can have bugs). I try to deal
+with these in as sane a manner as possible, but it's not always
+possible.
+
+Encodings
+---------
+
+A postscript font must have a 256 element array, called an encoding,
+each element of which is a name, which is also the name of a procedure
+contained within the font. The 'BuildChar' command takes a byte and uses
+it to index the encoding array to find a character name, and then looks
+that up in the font's procedure table find the commands to draw the
+glyph. However, not all characters need be in the encoding array. Those
+that are not cannot be drawn (at least not using 'show'), however it is
+possible to 're-encode' the font to enable these characters. There are
+several standard encodings: Adobe's original, ISO-Latin1 and Symbol
+being the most commonly encountered.
+
+TrueType fonts are organised differently. As well as the glyph
+descriptions there are a number of tables. One of these is a mapping
+from a character set into the glyph array, and another is a mapping from
+the glyph array into a set of Postscript character names. The problems
+are:
+	1)	Microsoft uses Unicode, a 16-bit system, to encode the font.
+	2)	that more than one glyph is given the same Postscript name.
+
+I deal with (1) by assuming a Latin1 encoding. The MS-Windows and
+Unicode character sets are both supersets of ISO-8859-1. This usually
+means that most characters will be properly encoded, but you should be
+warned that some software may assume that fonts have an Adobe encoding.
+Symbol, or Dingbat, fonts are in fact less of a problem, as they have
+private encodings starting at 0xF000. It is easy to just lose the top
+byte.
+
+Postscript fonts can be re-encoded, either manually, or by software.
+Groff, for example, generates postscript that re-encodes fonts with the
+Adobe encoding. The problem here is that not all characters in the Adobe
+set are in the MS-Windows set. In particular there are no fi and fl
+ligatures. This means that conversions of the versions of
+Times-New-Roman and Arial that come with MS-Windows cannot be used
+blindly as replacements for Adobe Times-Roman and Helvetica. You can get
+expanded versions of MS fonts from Microsoft's web site which do contain
+these ligatures (and a lot else besides).
+
+I deal with (2) by creating new character names. This can be error-prone
+because I do not know which of them is the correct glyph to give the
+name to. Some (buggy) fonts have large numbers of blank glyphs, all with
+the same name.
+
+(almost every TrueType font has three glyphs called .notdef, one of them
+is usually an empty square shape, one has no outline and has zero width,
+and one has no outline and a positive width. This example is not really
+a problem with well formed fonts since the .notdef characters are only
+used for unprintable characters, which shouldn't occur in your documents
+anyway).
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/README.html
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/README.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/README.html	(revision 2000)
@@ -0,0 +1,1182 @@
+<HTML>
+<HEAD>
+<TITLE>
+TTF2PT1 - A True Type to PostScript Type 1 Converter 
+</TITLE>
+</HEAD>
+<BODY>
+<!-- =defdoc t1 ttf2pt1 1 -->
+<H2>
+<!-- =section t1 NAME -->
+TTF2PT1 - A True Type to PostScript Type 1 Font Converter 
+<!-- =stop -->
+</H2>
+
+<! 
+(Do not edit this file, it is generated from README.html!!!)
+>
+<TT>
+[
+<blockquote>
+<!-- =section t1 HISTORY -->
+  Based on ttf2pfa by Andrew Weeks, and help from Frank Siegert.
+<BR>
+  Modification by Mark Heath.
+<BR>
+  Further modification by Sergey Babkin.
+<BR>
+  The Type1 assembler by I. Lee Hetherington with modifications by 
+  Kai-Uwe Herbing.
+<!-- =stop -->
+</blockquote>
+]
+</TT>
+<p>
+
+Ever wanted to install a particular font on your XServer but only could find 
+the font you are after in True Type Format?
+<p>
+
+Ever asked <TT>comp.fonts</TT> for a True Type to Type 1 converter and got a List 
+of Commercial software that doesn't run on your Operating System?
+<p>
+
+Well, this program should be the answer.  This program is written in C (so it
+should be portable)  and therefore should run on any OS.  The only limitation
+is that the program requires some method of converting Big endian integers into
+local host integers so the network functions ntohs and ntohl are used. These 
+can be replaced by macros if your platform doesn't have them. 
+Of course the target platform requires a C compiler and command line ability.
+<p>
+
+<!-- =section t1 DESCRIPTION -->
+Ttf2pt1 is a font converter from the True Type format (and some other formats
+supported by the FreeType library as well) to the Adobe Type1 format.
+<p>
+
+The versions 3.0 and later got rather extensive post-processing algorithm that 
+brings the converted fonts to the requirements of the Type1 standard, tries to
+correct the rounding errors introduced during conversions and some simple
+kinds of bugs that are typical for the public domain TTF fonts. It
+also generates the hints that enable much better rendering of fonts in
+small sizes that are typical for the computer displays. But everything
+has its price, and some of the optimizations may not work well for certain
+fonts. That's why the options were added to the converter, to control
+the performed optimizations.
+<p>
+<!-- =stop -->
+
+The converter is simple to run, just:
+<p>
+
+<!-- =section t1 SYNOPSIS -->
+<blockquote>
+	<tt>ttf2pt1 <i>[-options] ttffont.ttf [Fontname]</i></tt>
+</blockquote>
+or
+<blockquote>
+	<tt>ttf2pt1 <i>[-options] ttffont.ttf -</i></tt>
+</blockquote>
+<!-- =stop -->
+<p>
+
+<!-- =section t1 OPTIONS -->
+The first variant creates the file <tt>Fontname.pfa</tt> (or <tt>Fontname.pfb</tt> if the 
+option '<b>-b</b>' was used) with the converted font and <tt>Fontname.afm</tt> with the 
+font metrics, the second one prints the font or another file (if the option
+'<b>-G</b>' was used) on the standard output from where it can be immediately
+piped through some filter. If no <tt>Fontname</tt> is specified for the first
+variant, the name is generated from <tt>ttffont</tt> by replacing the <tt>.ttf</tt>
+filename suffix.
+<p>
+
+Most of the time no options are neccessary (with a possible exception
+of '<b>-e</b>'). But if there are some troubles with the resulting font, they 
+may be used to control the conversion.
+The <B>options</B> are:
+<p>
+
+<!-- ==over 2 -->
+<!-- ==item * -->
+<TT><B>-a</TT></B> - Include all the glyphs from the source file into the converted
+   file. If this option is not specified then only the glyphs that have
+   been assigned some encoding are included, because the rest of glyphs
+   would be inaccessible anyway and would only consume the disk space. 
+   But some applications are clever enough to change the encoding on
+   the fly and thus use the other glyphs, in this case they could
+   benefit from using this option. But there is a catch: the X11 library
+   has rather low limit for the font size. Including more glyphs increases
+   the file size and thus increases the chance of hitting this limit.
+   See <A HREF="app/X11/README.html"><tt>app/X11/README</tt></A> for the description of a 
+   patch to X11 which fixes this problem.
+<p>
+
+<!-- ==item * -->
+<TT><B>-b</TT></B> - Encode the resulting font to produce a ready <tt>.pfb</tt> file.
+<p>
+
+<!-- ==item * -->
+<TT><B>-d <i>suboptions</i></TT></B> - Debugging options. The suboptions are:
+<p>
+
+<blockquote>
+   <TT><B>a</TT></B> - Print out the absolute coordinates of dots in outlines. Such
+   a font can not be used by any program (that's why this option is
+   incompatible with '<b>-e</b>') but it has proven to be a valuable debuging 
+   information.
+<p>
+
+   <TT><B>r</TT></B> - Do not reverse the direction of outlines. The TTF fonts have
+   the standard direction of outlines opposite to the Type1 fonts. So
+   they should be reversed during proper conversion. This option
+   may be used for debugging or to handle a TTF font with wrong
+   direction of outlines (possibly, converted in a broken way from
+   a Type1 font). The first signs of the wrong direction are the
+   letters like "P" or "B" without the unpainted "holes" inside.
+<p>
+</blockquote>
+
+<!-- ==item * -->
+<TT><B>-e</TT></B> - Assemble the resulting font to produce a ready <tt>.pfa</tt> file.
+<I>
+   [ </I>S.B.<I>: Personally I don't think that this option is particularly useful.
+   The same result may be achieved by piping the unassembled data
+   through t1asm, the Type 1 assembler. And, anyways, it's good to
+   have the t1utils package handy. But Mark and many users think that 
+   this functionality is good and it took not much time to add this option. ]
+</I>
+<p>
+
+<!-- ==item * -->
+<TT><B>-F</TT></B> - Force the Unicode encoding: any type of MS encoding specified
+   in the font is ignored and the font is treated like it has Unicode
+   encoding. <B>WARNING:</B> <I>this option is intended for buggy fonts
+   which actually are in Unicode but are marked as something else. The
+   effect on the other fonts is unpredictable.</I>
+<p>
+
+<!-- ==item * -->
+<TT><B>-G <i>suboptions</i></TT></B> - File generation options. The suboptions may be lowercase 
+   or uppercase, the lowercase ones disable the generation of particular 
+   files, the corresponding uppercase suboptions enable the generation of the 
+   same kind of files. If the result of ttf2pt1 is requested to be printed on
+   the standard output, the last enabling suboption of <b>-G</b> determines
+   which file will be written to the standard output and the rest of files
+   will be discarded. For example, <b>-G A</b> will request the AFM file.
+   The suboptions to disable/enable the generation of the files are:
+<p>
+
+<blockquote>
+   <TT><B>f/F</TT></B> - The font file. Depending on the other options this file
+   will have one of the suffixes <tt>.t1a</tt>, <tt>.pfa</tt> or <tt>.pfb</tt>. If the conversion result
+   is requested on the standard output ('<tt>-</tt>' is used as the output file name)
+   then the font file will also be written there by default, if not overwritten
+   by another suboption of <b>-G</b>.
+   <b>Default: enabled</b>
+<p>
+
+   <TT><B>a/A</TT></B> - The Adobe font metrics file (<tt>.afm</tt>).
+   <b>Default: enabled</b>
+<p>
+
+   <TT><B>e/E</TT></B> - The dvips encoding file (<tt>.enc</tt>).
+   <b>Default: disabled</b>
+<p>
+
+</blockquote>
+
+<!-- ==item * -->
+<TT><B>-l <I>language</I>[+<I>argument</I>]</TT></B> - Extract the fonts for the specified language from a
+   multi-language Unicode font. If this option is not used the converter
+   tries to guess the language by the values of the shell variable LANG.
+   If it is not able to guess the language by LANG it tries all the
+   languages in the order they are listed. 
+<p>
+
+   After the plus sign an optional argument for the language extractor
+   may be specified. The format of the argument is absolutely up to
+   the particular language converter. The primary purpose of the
+   argument is to support selection of planes for the multi-plane
+   Eastern encodings but it can also be used in any other way. The 
+   language extractor may decide to add the plane name in some form
+   to the name of the resulting font. None of the currently supported 
+   languages make any use of the argument yet.
+<p>
+
+   As of now the following languages are supported:
+<br>
+   &nbsp;&nbsp;<TT>latin1</TT> - for all the languages using the Latin-1 encoding
+<br>
+   &nbsp;&nbsp;<TT>latin2</TT> - for the Central European languages
+<br>
+   &nbsp;&nbsp;<TT>latin4</TT> - for the Baltic languages
+<br>
+   &nbsp;&nbsp;<TT>latin5</TT> - for the Turkish language
+<br>
+   &nbsp;&nbsp;<TT>cyrillic</TT> - for the languages with Cyrillic alphabet
+<br>
+   &nbsp;&nbsp;<TT>russian</TT> - historic synonym for cyrillic
+<br>
+   &nbsp;&nbsp;<TT>bulgarian</TT> - historic synonym for cyrillic
+<br>
+   &nbsp;&nbsp;<TT>adobestd</TT> - for the AdobeStandard encoding used by TeX
+<br>
+   &nbsp;&nbsp;<TT>plane+<i>argument</i></TT> - to select one plane from a multi-byte encoding
+<p>
+
+   The argument of the "<tt>plane</tt>" language may be in one of three forms:
+<p>
+   &nbsp;&nbsp;<tt>plane+<b>pid=</b><i>&lt;pid&gt;</i><b>,eid=</b><i>&lt;eid&gt;</i></tt>
+<br>
+   &nbsp;&nbsp;<tt>plane+<b>pid=</b><i>&lt;pid&gt;</i><b>,eid=</b><i>&lt;eid&gt;</i><b>,</b><i>&lt;plane_number&gt;</i></tt>
+<br>
+   &nbsp;&nbsp;<tt>plane+<i>&lt;plane_number&gt;</i></tt>
+<p>
+
+   Pid (TTF platform id) and eid (TTF encoding id) select a particular 
+   TTF encoding table in the original font. They are specified as decimal
+   numbers. If this particular encoding table is not present in the font
+   file then the conversion fails. The native ("ttf") front-end parser supports
+   only pid=3 (Windows platform), the FreeType-based ("ft") front-end supports 
+   any platform. If pid/eid is not specified then the TTF encoding table is 
+   determined as usual: Unicode encoding if it's first or an 8-bit encoding
+   if not (and for an 8-bit encoding the plane number is silently ignored). 
+   To prevent the converter from falling back to an 8-bit encoding, specify
+   the Unicode pid/eid value explicitly.
+<p>
+
+   Plane_number is a hexadecimal (if starts with "<b>0x</b>") or decimal number.
+   It gives the values of upper bytes for which 256 characters will be 
+   selected. If not specified, defaults to 0. It is also used as a font
+   name suffix (the leading "0x" is not included into the suffix).
+<p>
+
+<!-- =stop -->
+   <B>NOTE:</B>
+<!-- =section t1 BUGS -->
+   It seems that many Eastern fonts use features of the TTF format that are 
+   not supported by the ttf2pt1's built-in front-end parser. Because of
+   this for now we recommend using the FreeType-based parser (option
+   '<b>-p ft</b>') with the "<tt>plane</tt>" language.
+<p>
+<!-- =stop -->
+
+<!-- =section t1 OPTIONS -->
+<I>
+   <B>NOTE:</B>
+   You may notice that the language names are not uniform: some are the
+   names of particular languages and some are names of encodings. This
+   is because of the different approaches. The original idea was to
+   implement a conversion from Unicode to the appropriate Windows
+   encoding for a given language. And then use the translation tables
+   to generate the fonts in whatever final encodings are needed. This
+   would allow to pile together the Unicode fonts and the non-Unicode
+   Windows fonts for that language and let the program to sort them out
+   automatically. And then generate fonts in all the possible encodings
+   for that language. An example of this approach is the Russian language
+   support. But if there is no multiplicity of encodings used for some 
+   languages and if the non-Unicode fonts are not considered important 
+   by the users, another way would be simpler to implement: just provide
+   only one table for extraction of the target encoding from Unicode
+   and don't bother with the translation tables. The </I>latin*<I> "languages"
+   are examples of this approach. If somebody feels that he needs the
+   Type1 fonts both in Latin-* and Windows encodings he or she is absolutely
+   welcome to submit the code to implement it.
+</I><p>
+
+   <B>WARNING:</B>
+   Some of the glyphs included into the AdobeStandard encoding are not
+   included into the Unicode standard. The most typical examples of such
+   glyphs are ligatures like 'fi', 'fl' etc. Because of this the font 
+   designers may place them at various places. The converter tries to
+   do its best, if the glyphs have honest Adobe names and/or are
+   placed at the same codes as in the Microsoft fonts they will be
+   picked up. Otherwise a possible solution is to use the option '<b>-L</b>'
+   with an external map. 
+<p>
+
+<!-- ==item * -->
+<TT><B>-L <I>file</I>[+[pid=<I>&lt;pid&gt;</I>,eid=<I>&lt;eid&gt;</I>,][<I>plane</I>]]</TT></B> - Extract the fonts for the specified 
+   language from a multi-language font using the map from this file. This is
+   rather like the option '<b>-l</b>' but the encoding map is not 
+   compiled into the program, it's taken from that file, so it's
+   easy to edit. Examples of such files are provided in 
+   <tt>maps/adobe-standard-encoding.map</tt>, <tt>CP1250.map</tt>. (<b>NOTE:</b>
+   <I>the 'standard encoding' map does not include all the glyphs of the 
+   AdobeStandard encoding, it's provided only as an example</I>.) The 
+   description of the supported map formats is in the file 
+   <tt>maps/unicode-sample.map</tt>.
+<p>
+
+   Likewise to '<b>-l</b>', an argument may be specified after the map file
+   name. But in this case the argument has fixed meaning: it selects the 
+   original TTF encoding table (the syntax is the same as in '<b>-l plane</b>')
+   and/or a plane of the map file. The plane name also gets added after dash 
+   to the font name. The plane is a concept used in the Eastern fonts with big 
+   number of glyphs: one TTF font gets divided into multiple Type1 fonts, 
+   each containing one plane of up to 256 glyphs. But with a little 
+   creativity this concept may be used for other purposes of combining 
+   multiple translation maps into one file.  To extract multiple planes 
+   from a TTF font <tt>ttf2pt1</tt> must be run multiple times, each time with 
+   a different plane name specified.
+<p>
+
+   The default original TTF encoding table used for the option '<b>-L</b>' is
+   Unicode. The map files may include directives to specify different original 
+   TTF encodings. However if the pid/eid pair is specified with
+   it overrides any original encoding specified in the map file.
+<p>
+
+<!-- ==item * -->
+<TT><B>-m <i>type</i>=<i>value</i></TT></B> - Set maximal or minimal limits of resources.
+   These limits control the the font generation by limiting the resources
+   that the font is permitted to require from the PostScript interpreter.
+   The currently supported types of limits are:
+<p>
+
+<blockquote>
+   <TT><B>h</TT></B> - the maximal hint stack depth for the substituted hints. 
+   The default value is 128, according to the limitation in X11. This seems to
+   be the lowest (and thus the safest) widespread value. To display the
+   hint stack depth required by each glyph in a <tt>.t1a</tt> file use the script
+   <tt>scripts/cntstems.pl</tt>.
+<p>
+</blockquote>
+
+<!-- ==item * -->
+<TT><B>-O <i>suboptions</i></TT></B> - Outline processing options. The suboptions
+   may be lowercase or uppercase, the lowercase ones disable the features,
+   the corresponding uppercase suboptions enable the same features.
+   The suboptions to disable/enable features are:
+<p>
+
+<blockquote>
+   <TT><B>b/B</TT></B> - Guessing of the ForceBold parameter. This parameter helps
+   the Type1 engine to rasterize the bold fonts properly at small sizes.
+   But the algorithm used to guess the proper value of this flag makes
+   that guess based solely on the font name. In rare cases that may cause
+   errors, in these cases you may want to disable this guessing. 
+   <b>Default: enabled</b>
+<p>
+
+   <TT><B>h/H</TT></B> - Autogeneration of hints. The really complex outlines
+   may confuse the algorithm, so theoretically it may be useful
+   sometimes to disable them. Although up to now it seems that
+   even bad hints are better than no hints at all.
+   <b>Default: enabled</b>
+<p>
+
+   <TT><B>u/U</TT></B> - Hint substitution. Hint substitution is a technique 
+   permitting generation of more detailed hints for the rasterizer. It allows 
+   to use different sets of hints for different parts of a glyph and change 
+   these sets as neccessary during rasterization (that's why "substituted").  
+   So it should improve the quality of the fonts rendered at small sizes.  
+   But there are two catches: First, the X11 library has rather low limit for 
+   the font size. More detailed hints increase the file size and thus increase 
+   the chance of hitting this limit (that does not mean that you shall hit it
+   but you may if your fonts are particularly big). This is especially 
+   probable for Unicode fonts converted with option '<b>-a</b>', so you may want to 
+   use '<b>-a</b>' together with '<b>-Ou</b>'. See <A HREF="app/X11/README.html"><tt>app/X11/README</tt></A> for the description of 
+   a patch to X11 which fixes this problem. Second, some rasterizers (again,
+   X11 is the typical example) have a limitation for total number of hints
+   used when drawing a glyph (also known as the hint stack depth). If that
+   stack overflows the glyph is ignored. Starting from version 3.22 <tt>ttf2pt1</tt>
+   uses algorithms to minimizing this depth, with the trade-off of slightly
+   bigger font files. The glyphs which still exceed the limit set by option
+   '<b>-mh</b>' have all the substituted hints removed and only base hints left.
+   The algorithms seem to have been refined far enough to make the fonts with
+   substituted hints look better than the fonts without them or at least the 
+   same. Still if the original fonts are not well-designed the detailed 
+   hinting may emphasize the defects of the design, such as non-even thickness 
+   of lines. So provided that you are not afraid of the X11 bug the best idea 
+   would be to generate a font with this feature and without it, then compare 
+   the results using the program <tt>other/cmpf</tt> (see the description 
+   in <A HREF="other/README.html"><tt>other/README</tt></A>) and decide which one looks better.
+   <b>Default: enabled</b>
+<p>
+
+   <TT><B>o/O</TT></B> - Space optimization of the outlines' code. This kind of optimization
+   never hurts, and the only reason to disable this feature is for comparison 
+   of the generated fonts with the fonts generated by the previous versions of 
+   converter. Well, it _almost_ never hurts. As it turned out there exist
+   some brain-damaged printers which don't understand it. Actually this
+   feature does not change the outlines at all. The Type 1 font manual 
+   provides a set of redundant operators that make font description shorter,
+   such as '10 hlineto' instead of '0 10 rlineto' to describe a horizontal
+   line. This feature enables use of these operators.
+   <b>Default: enabled</b>
+<p>
+
+   <TT><B>s/S</TT></B> - Smoothing of outlines. If the font is broken in some
+   way (even the ones that are not easily noticeable), such smoothing 
+   may break it further. So disabling this feature is the first thing to be 
+   tried if some font looks odd. But with smoothing off the hint generation
+   algorithms may not work properly too.
+   <b>Default: enabled</b>
+<p>
+
+   <TT><B>t/T</TT></B> - Auto-scaling to the 1000x1000 Type1 standard matrix. The
+   TTF fonts are described in terms of an arbitrary matrix up to
+   4000x4000. The converted fonts must be scaled to conform to
+   the Type1 standard. But the scaling introduces additional rounding
+   errors, so it may be curious sometimes to look at the font in its
+   original scale.
+   <b>Default: enabled</b>
+<p>
+
+   <TT><B>v/V</TT></B> - Do vectorization on the bitmap fonts. Functionally
+   "vectorization" is the same thing as "autotracing", a different word is
+   used purely to differentiate it from the Autotrace library. It tries to
+   produce nice smooth outlines from bitmaps. This feature is still a work
+   in progress though the results are already mostly decent.
+   <b>Default: disabled</b>
+<p>
+
+   <TT><B>w/W</TT></B> - Glyphs' width corection. This option is designed to be
+   used on broken fonts which specify too narrow widths for the 
+   letters. You can tell that a font can benefit from this option
+   if you see that the characters are smashed together without
+   any whitespace between them. This option causes the converter
+   to set the character widths to the actual width of this character
+   plus the width of a typical vertical stem. But on the other hand
+   the well-designed fonts may have characters that look better if
+   their widths are set slightly narrower. Such well-designed fonts
+   will benefit from disabling this feature. You may want to convert
+   a font with and without this feature, compare the results and
+   select the better one. This feature may be used only on proportional
+   fonts, it has no effect on the fixed-width fonts.
+   <b>Default: disabled</b>
+<p>
+
+   <TT><B>z/Z</TT></B> - Use the Autotrace library on the bitmap fonts. The results 
+   are horrible and <b>the use of this option is not recommended</b>. This option is 
+   present for experimental purposes. It may change or be removed in the
+   future. The working tracing can be achieved with option <tt><b>-OV</b></tt>.
+   <b>Default: disabled</b>
+<p>
+</blockquote>
+
+<!-- ==item * -->
+<TT><B>-p <I>parser_name</I></TT></B> - Use the specified front-end parser to read the font file.
+   If this option is not used, ttf2pt1 selects the parser automatically based
+   on the suffix of the font file name, it uses the first parser in its
+   list that supports this font type. Now two parsers are supported:
+<p>
+
+   &nbsp;&nbsp;<TT>ttf</TT> - built-in parser for the ttf files (suffix <tt>.ttf</tt>)
+<br>
+   &nbsp;&nbsp;<TT>bdf</TT> - built-in parser for the BDF files (suffix <tt>.bdf</tt>)
+<br>
+   &nbsp;&nbsp;<TT>ft</TT> - parser based on the FreeType-2 library (suffixes <tt>.ttf</tt>,
+       <tt>.otf</tt>, <tt>.pfa</tt>, <tt>.pfb</tt>)
+<p>
+
+   The parser <tt>ft</tt> is <b>NOT</b> linked in by default. See <tt>Makefile</tt>
+   for instructions how to enable it. We do no support this parser on
+   Windows: probably it will work but nobody tried and nobody knows how
+   to build it. 
+<p>
+
+   The conversion of the bitmap fonts (such as BDF) is simplistic yet,
+   producing jagged outlines.  When converting such fonts, it might be 
+   a good idea to turn off the hint substitution (using option <b>-Ou</b>) 
+   because the hints produced will be huge but not adding much to the
+   quality of the fonts.
+<p>
+
+<!-- ==item * -->
+<TT><B>-u <I>number</I></TT></B> - Mark the font with this value as its
+   UniqueID. The UniqueID is used by the printers with the hard disks
+   to cache the rasterized characters and thus significantly
+   speed-up the printing. Some of those printers just can't
+   store the fonts without UniqueID on their disk.The problem
+   is that the ID is supposed to be unique, as it name says. And
+   there is no easy way to create a guaranteed unique ID. Adobe specifies
+   the range 4000000-4999999 for private IDs but still it's difficult
+   to guarantee the uniqueness within it. So if you don't really need the 
+   UniqueID don't use it, it's optional. Luckily there are a few millions of 
+   possible IDs, so the chances of collision are rather low. 
+   If instead of the number a special value '<tt><b>A</b></tt>' is given
+   then the converter generates the value of UniqueID automatically,
+   as a hash of the font name. (<b>NOTE:</b> <i> in the version 3.22 the
+   algorithm for autogeneration of UniqueID was changed to fit the values
+   into the Adobe-spacified range. This means that if UniqueIDs were used 
+   then the printer's cache may need to be flushed before replacing the 
+   fonts converted by an old version with fonts converted by a newer version</i>).
+   A simple way to find if any of the fonts in a given directory have
+   duplicated UniqueIDs is to use the command:
+<p>
+
+   <tt>&nbsp;&nbsp;cat *.pf[ab] | grep UniqueID | sort | uniq -c | grep -v ' 1 '</tt>
+<p>
+
+   Or if you use <tt>scripts/convert</tt> it will do that for you automatically 
+   plus it will also give the exact list of files with duplicate UIDs.
+<p>
+
+<!-- ==item * -->
+<TT><B>-v <I>size</I></TT></B> - Re-scale the font to get the size of a typical uppercase
+   letter somewhere around the specified size. Actually, it re-scales
+   the whole font to get the size of one language-dependent letter to be
+   at least of the specified size. Now this letter is "A" in all the
+   supported languages. The size is specified in the points of the
+   Type 1 coordinate grids, the maximal value is 1000. This is an
+   experimental option and should be used with caution. It tries to
+   increase the visible font size for a given point size and thus make
+   the font more readable. But if overused it may cause the fonts to
+   look out of scale. As of now the interesting values of size for
+   this option seem to be located mostly between 600 and 850. This
+   re-scaling may be quite useful but needs more experience to
+   understand the balance of its effects.
+<p>
+
+<!-- ==item * -->
+<TT><B>-W <i>level</i></TT></B> - Select the verbosity level of the warnings.
+   Currently the levels from 0 to 4 are supported. Level 0 means no warnings
+   at all, level 4 means all the possible warnings. The default level is 3.
+   Other levels may be added in the future, so using the level number 99 is
+   recommended to get all the possible warnings. Going below level 2 is
+   not generally recommended because you may miss valuable information about
+   the problems with the fonts being converted.
+<p>
+
+<!-- ==item * -->
+<B>Obsolete option:</B>
+<TT><B>-A</TT></B> - Print the font metrics (.afm file) instead of the font on STDOUT.
+   Use <b>-GA</b> instead.
+<p>
+
+<!-- ==item * -->
+<B>Very obsolete option:</B>
+<br>
+   The algorithm that implemented the forced fixed width had major
+   flaws, so it was disabled. The code is still in the program and
+   some day it will be refined and returned back. Meanwhile the 
+   option name '<b>-f</b>' was reused for another option. The old version was:
+<br>
+<TT><B>-f</TT></B> - Don't try to force the fixed width of font. Normally the converter
+   considers the fonts in which the glyph width deviates by not more
+   than 5% as buggy fixed width fonts and forces them to have really
+   fixed width. If this is undesirable, it can be disabled by this option.
+<p>
+<!-- ==back -->
+
+The <tt>.pfa</tt> font format supposes that the description of the characters
+is binary encoded and encrypted. This converter does not encode or
+encrypt the data by default, you have to specify the option '<b>-e</b>'
+or use the <tt>t1asm</tt> program to assemble (that means, encode and
+encrypt) the font program. The <tt>t1asm</tt> program that is included with
+the converter is actually a part of the <tt>t1utils</tt> package, rather old
+version of which may be obtained from
+<p>
+
+<blockquote>
+<A HREF="http://ttf2pt1.sourceforge.net/t1utils.tar.gz">
+	http://ttf2pt1.sourceforge.net/t1utils.tar.gz
+</A>
+</blockquote>
+<p>
+
+Note that <tt>t1asm</tt> from the old version of that package won't work properly
+with the files generated by <tt>ttf2pt1</tt> version 3.20 and later. Please use
+<tt>t1asm</tt> packaged with <tt>ttf2pt1</tt> or from the new version <tt>t1utils</tt>
+instead. For a newer version of <tt>t1utils</tt> please look at
+<p>
+
+<blockquote>
+<A HREF="http://www.lcdf.org/~eddietwo/type/">
+	http://www.lcdf.org/~eddietwo/type/
+</A>
+</blockquote>
+<p>
+<!-- =stop -->
+
+<!-- =section t1 EXAMPLES -->
+So, the following command lines:
+<p>
+
+<blockquote>
+	<tt>ttf2pt1 -e ttffont.ttf t1font</tt>
+<br>
+	<tt>ttf2pt1 ttffont.ttf - | t1asm &gt;t1font.pfa</tt>
+</blockquote>
+<p>
+
+represent two ways to get a working font. The benefit of the second form 
+is that other filters may be applied to the font between the converter
+and assembler.
+<p>
+<!-- =stop -->
+
+<H4>
+Installation and deinstallation of the converter
+</H4>
+<!
+------------------------------------------------
+>
+
+The converter may be easily installed systemwide with
+
+<blockquote>
+	<tt>make install</tt>
+</blockquote>
+
+and uninstalled with
+
+<blockquote>
+	<tt>make uninstall</tt>
+</blockquote>
+
+By default the <tt>Makefile</tt> is configured to install in the hierarchy
+of directory <tt>/usr/local</tt>. This destination directory as well as
+the structure of the hierarchy may be changed by editing the <tt>Makefile</tt>.
+
+<H4>
+Installation of the fonts
+</H4>
+<!
+-------------------------
+>
+
+Running the converter manually becomes somewhat boring if it has to 
+be applied to a few hundreds of fonts and then you have to generate the 
+<tt>fonts.scale</tt> and/or <tt>Fontmap</tt> files. The <A HREF="FONTS.html"><tt>FONTS</tt></A> file describes how to use 
+the supplied scripts to handle such cases easily. It also discusses
+the installation of the fonts for a few widespread programs.
+<p>
+
+<H4>
+Other utilities
+</H4>
+<!
+---------------
+>
+
+A few other small interesting programs that allow a cloase look at
+the fonts are located in the subdirectory '<tt>other</tt>'. They
+are described shortly in <A HREF="other/README.html">others/README</a>.
+<p>
+
+<H4>
+Optional packages
+</H4>
+<!
+-----------------
+>
+
+Some auxiliary files are not needed by everyone and are big enough that
+moving them to a separate package speeds up the downloads of the main
+package significantly. As of now we have one such optional package:
+<p>
+
+&nbsp;&nbsp;<b>ttf2pt1-chinese</b> - contains the Chinese conversion maps
+<p>
+
+The general versioning policy for the optional packages is the following:
+These packages may have no direct dependency on the ttf2pt1 version.
+But they may be updated in future, as well as some versions of optional
+packages may have dependencies on certain versions of ttf2pt1.
+To avoid unneccessary extra releases on one hand and keep the updates in 
+sync with the ttf2pt1 itself on the other hand, a new version of an optional 
+package will be released only if there are any changes to it and it will be 
+given the same version number as ttf2pt1 released at the same time. So not 
+every release of ttf2pt1 would have a corresponding release of all optional 
+packages. For example, to get the correct version of optional packages for an 
+imaginary release 8.3.4 of ttf2pt1 you would need to look for optional 
+packages of the highest version not higher than (but possibly equal to) 8.3.4.
+<p>
+
+<H4>
+TO DO:
+</H4>
+<!
+------
+>
+
+<ul>
+<li> Improve hinting.
+<li> Improve the auto-tracing of bitmaps.
+<li> Implement the family-level hints.
+<li> Add generation of CID-fonts.
+<li> Handle the composite glyphs with relative base points.
+<li> Preserve the relative width of stems during scaling to 1000x1000 matrix.
+<li> Add support for bitmap TTF fonts.
+<li> Implement better support of Asian encodings.
+<li> Implement automatic creation of ligatures.
+</ul>
+
+<H4>
+TROUBLESHOOTING AND BUG REPORTS
+</H4>
+<!
+-------------------------------
+>
+<!-- =section t1 BUGS -->
+<!-- ==head2 Troubleshooting and bug reports -->
+
+Have problems with conversion of some font ? The converter dumps core ? Or your
+printer refuses to understand the converted fonts ? Or some characters are 
+missing ? Or some characters look strange ?
+<p>
+
+Send the bug reports to the ttf2pt1 development mailing list at
+<A HREF="mailto:ttf2pt1-devel@lists.sourceforge.net">ttf2pt1-devel@lists.sourceforge.net</A>.
+<p>
+
+Try to collect more information about the problem and include it into
+the bug report. (Of course, even better if you would provide a ready
+fix, but just a detailed bug report is also good). Provide detailed
+information about your problem, this will speed up the response greatly.
+Don't just write "this font looks strange after conversion" but describe
+what's exactly wrong with it: for example, what characters look wrong
+and what exactly is wrong about their look. Providing a link to the
+original font file would be also a good idea. Try to do a little
+troublehooting and report its result. This not only would help with
+the fix but may also give you a temporary work-around for the bug.
+<p>
+
+First, enable full warnings with option '<b>-W99</b>', save them to
+a file and read carefully. Sometimes the prolem is with a not implemented
+feature which is reported in the warnings. Still, reporting about such
+problems may be a good idea: some features were missed to cut corners,
+in hope that no real font is using them. So a report about a font using
+such a feature may motivate someone to implement it. Of course, you
+may be the most motivated person: after all, you are the one wishing
+to convert that font. ;-) Seriously, the philosophy "scrath your own itch"
+seems to be the strongest moving force behind the Open Source software.
+<p>
+
+The next step is playing with the options. This serves a dual purpose:
+on one hand, it helps to localize the bug, on the other hand you may be
+able to get a working version of the font for the meantime while the
+bug is being fixed. The typical options to try out are: first '<b>-Ou</b>', if
+it does not help then '<b>-Os</b>', then '<b>-Oh</b>', then '<b>-Oo</b>'.
+They are described in a bit more detail above. Try them one by one
+and in combinations. See if with them the resulting fonts look better.
+<p>
+
+On some fonts ttf2pt1 just crashes. Commonly that happens because the
+font being converted is highly defective (although sometimes the bug
+is in ttf2pt1 itself). In any case it should not crash, so the reports
+about such cases will help to handle these defects properly in future.
+<p>
+
+We try to respond to the bug reports in a timely fashion but alas, this 
+may not always be possible, especially if the problem is complex.
+This is a volunteer project and its resources are limited. Because
+of this we would appreciate bug reports as detailed as possible,
+and we would appreciate the ready fixes and contributions even more.
+<p>
+<!-- =stop -->
+<!-- =section t1 FILES -->
+<!-- ==over 2 -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_LIBXDIR/t1asm -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/* -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/scripts/* -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/other/* -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/README -->
+<!-- ==item * -->
+<!-- =text TTF2PT1_SHAREDIR/FONTS -->
+<!-- ==back -->
+<!-- =stop -->
+
+<H4>
+CONTACTS
+</H4>
+<!
+--------
+>
+<!-- =section t1 SEE ALSO -->
+<!-- ==over 4 -->
+<!-- ==item * -->
+<!-- =text L&lt;ttf2pt1_convert(1)&gt; -->
+<!-- ==item * -->
+<!-- =text L&lt;ttf2pt1_x2gs(1)&gt; -->
+<!-- ==item * -->
+<!-- =text L&lt;t1asm(1)&gt; -->
+
+<!-- ==item * -->
+<A HREF="http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-announce">
+ttf2pt1-announce@lists.sourceforge.net
+</A><br>
+  The mailing list with announcements about ttf2pt1. It is a moderated mailing
+  with extremely low traffic. Everyone is encouraged to subscribe to keep in 
+  touch with the current status of project. To subscribe use the Web interface
+  at <A HREF="http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-announce">http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-announce</A>.
+  If you have only e-mail access to the Net then send a subscribe request to 
+  the development mailing list ttf2pt1-devel@lists.sourceforge.net and somebody
+  will help you with subscription.
+<p>
+
+<!-- ==item * -->
+<A HREF="mailto:ttf2pt1-devel@lists.sourceforge.net">
+ttf2pt1-devel@lists.sourceforge.net
+</A><br>
+<A HREF="mailto:ttf2pt1-users@lists.sourceforge.net">
+ttf2pt1-users@lists.sourceforge.net
+</A><br>
+  The ttf2pt1 mailing lists for development and users issues. They have not
+  that much traffic either. To subscribe use the Web interface at
+  <A HREF="http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-devel">http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-devel</A>
+  and <A HREF="http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-users">http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-users</A>.
+  If you have only e-mail access to the Net then send a subscribe request to 
+  the development mailing list ttf2pt1-devel@lists.sourceforge.net and somebody
+  will help you with subscription.
+<p>
+
+<!-- =stop -->
+<A HREF="mailto:mheath@netspace.net.au">
+mheath@netspace.net.au
+</A><br>
+  Mark Heath
+<p>
+
+<A HREF="mailto:A.Weeks@mcc.ac.uk">
+A.Weeks@mcc.ac.uk
+</A><br>
+  Andrew Weeks
+<p>
+
+<A HREF="mailto:babkin@users.sourceforge.net">
+babkin@users.sourceforge.net</A> (preferred)<br>
+<A HREF="mailto:sab123@hotmail.com">
+sab123@hotmail.com
+</A><br>
+<A HREF="http://members.bellatlantic.net/~babkin">
+http://members.bellatlantic.net/~babkin
+</A><br>
+  Sergey Babkin
+<p>
+
+<H4>
+SEE ALSO
+</H4>
+<!
+--------
+>
+
+<!-- =section t1 SEE ALSO -->
+<!-- ==item * -->
+<A HREF="http://ttf2pt1.sourceforge.net">
+http://ttf2pt1.sourceforge.net
+</A><br>
+  The main page of the project.
+<p>
+
+<A HREF="http://www.netspace.net.au/~mheath/ttf2pt1/">
+http://www.netspace.net.au/~mheath/ttf2pt1/
+</A><br>
+  The old main page of the project.
+<p>
+<!-- ==back -->
+<!-- =stop -->
+
+<A HREF="http://sourceforge.net/projects/gnuwin32">
+http://sourceforge.net/projects/gnuwin32
+</A><br>
+  Precompiled binaries for Windows.
+<p>
+
+<A HREF="http://www.lcdf.org/~eddietwo/type/">
+http://www.lcdf.org/~eddietwo/type/
+</a><br>
+  The home page of the Type 1 utilities package.
+<p>
+
+<A HREF="http://www.rightbrain.com/pages/books.html">
+http://www.rightbrain.com/pages/books.html
+</a><br>
+  The first book about PostScript on the Web, "Thinking in PostScript".
+<p>
+
+<A HREF="http://fonts.apple.com/TTRefMan/index.html">
+http://fonts.apple.com/TTRefMan/index.html
+</a><br>
+  The True Type reference manual.
+<p>
+
+<A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
+http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf
+</a><br>
+  Adobe PostScript reference manual.
+<p>
+
+<A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/T1_SPEC.PDF">
+http://partners.adobe.com/asn/developer/PDFS/TN/T1_SPEC.PDF
+</a><br>
+  Specification of the Type 1 font format.
+<p>
+
+<A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5015.Type1_Supp.pdf">
+http://partners.adobe.com/asn/developer/PDFS/TN/5015.Type1_Supp.pdf
+</a><br>
+  The Type 1 font format supplement.
+<p>
+
+<A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5004.AFM_Spec.pdf">
+http://partners.adobe.com/asn/developer/PDFS/TN/5004.AFM_Spec.pdf
+</A><BR>
+  Specification of the Adobe font metrics file format.
+<p>
+
+<A HREF="http://www.cs.wpi.edu/~matt/courses/cs563/talks/surface/bez_surf.html">
+http://www.cs.wpi.edu/~matt/courses/cs563/talks/surface/bez_surf.html
+</A><BR>
+<A HREF="http://www.cs.wpi.edu/~matt/courses/cs563/talks/curves.html">
+http://www.cs.wpi.edu/~matt/courses/cs563/talks/curves.html
+</A><BR>
+  Information about the Bezier curves.
+<p>
+
+<A HREF="http://www.neuroinformatik.ruhr-uni-bochum.de/ini/PEOPLE/rmz/t1lib/t1lib.html">
+http://www.neuroinformatik.ruhr-uni-bochum.de/ini/PEOPLE/rmz/t1lib/t1lib.html
+</A><br>
+  A stand-alone library supporting the Type1 fonts. Is neccessary
+  to compile the programs <tt>other/cmpf</tt> and <tt>other/dmpf</tt>.
+<p>
+
+<A HREF="http://www.freetype.org">
+http://www.freetype.org
+</A><br>
+  A library supporting the TTF fonts. Also many useful TTF programs
+  are included with it.
+<p>
+
+<A HREF="http://heliotrope.homestead.com/files/printsoft.html">
+http://heliotrope.homestead.com/files/printsoft.html
+</A><br>
+  Moses Gold's collection of links to printing software.
+<p>
+
+<A HREF="http://linuxartist.org/fonts/">
+http://linuxartist.org/fonts/
+</A><br>
+  Collection of font-related links.
+<p>
+
+<HR>
+<HR>
+<!
+----------------------------------------------------------------------
+----------------------------------------------------------------------
+>
+
+Following is the Readme of <tt>ttf2pfa</tt> (true type to type 3 font converter) It 
+covers other issues regarding the use of this software. Please note that
+although <tt>ttf2pfa</tt> is a public domain software, <tt>ttf2pt1</tt>
+is instead covered by an Open Source license. See the <tt>COPYRIGHT</tt>
+file for details.
+<p>
+
+Please note also that <tt>ttf2pfa</tt> has not been maintained for a long time.
+All of its functionality has been integrated into <tt>ttf2pt1</tt> and all the
+development moved to <tt>ttf2pt1</tt>, including Andrew Weeks, the author of
+<tt>ttf2pfa</tt>. <tt>Ttf2pfa</tt> is provided for historical reasons only. Please use
+<tt>ttf2pt1</tt> instead.
+
+<HR>
+<!
+----------------------------------------------------------------------
+>
+
+<H3>
+True Type to Postscript Font converter
+</H3>
+<!
+--------------------------------------
+>
+
+My mind is still reeling from the discovery that I was able to write
+this program. What it does is it reads a Microsoft TrueType font and
+creates a Postscript font. '<I>_A_</I> postscript font', that is, not necessarily
+the same font, you understand, but a fair imitation.
+<p>
+
+Run it like this:
+<p>
+
+<blockquote><tt>
+	ttf2pfa fontfile.ttf fontname
+</tt></blockquote>
+<p>
+
+The first parameter is the truetype filename, the second is a stem for
+the output file names. The program will create a <tt>fontname.pfa</tt> containing
+the Postscript font and a <tt>fontname.afm</tt> containing the metrics.
+<p>
+
+The motivation behind this is that in Linux if you do not have a
+Postscript printer, but only some other printer, you can only print
+Postscript by using Ghostscript. But the fonts that come with
+Ghostscript are very poor (they are converted from bitmaps and look
+rather lumpy). This is rather frustrating as the PC running Linux
+probably has MS-Windows as well and will therefore have truetype fonts,
+but which are quite useless with Linux, X or Ghostscript.
+<p>
+
+The program has been tested on over a hundred different TrueType fonts
+from various sources, and seems to work fairly well. The converted
+characters look OK, and the program doesn't seem to crash any more. I'm
+not sure about the AFM files though, as I have no means to test them.
+<p>
+
+The fonts generated will not work with X, as the font rasterizer that
+comes with X only copes with Type 1 fonts. If I have the time I may
+modify ttf2pfa to generate Type 1s.
+<p>
+
+<H4>
+Copyright issues
+</H4>
+<!
+----------------
+>
+
+I am putting this program into the public domain, so don't bother
+sending me any money, I'd only have to declare it for income tax.
+<p>
+
+Copyright on fonts, however, is a difficult legal question. Any
+copyright statements found in a font will be preserved in the output.
+Whether you are entitled to translate them at all I don't know.
+<p>
+
+If you have a license to run a software package, like say MS-Windows, on
+your PC, then you probably have a right to use any part of it, including
+fonts, on that PC, even if not using that package for its intended
+purpose.
+<p>
+
+I am not a lawyer, however, so this is not a legal opinion, and may be
+garbage.
+<p>
+
+There shouldn't be a any problem with public domain fonts.
+<p>
+
+<H4>
+About the Program
+</H4>
+<!
+-----------------
+>
+
+It was written in C on a IBM PC running Linux.
+<p>
+
+The TrueType format was originally developed by Apple for the MAC, which
+has opposite endianness to the PC, so to ensure compatibility 16 and 32
+bit fields are the wrong way round from the PC's point of view. This is
+the reason for all the 'ntohs' and 'ntohl' calls. Doing it this way
+means the program will also work on big-endian machines like Suns.
+<p>
+
+I doubt whether it will work on a DOS-based PC though.
+<p>
+
+The program produces what technically are Type 3 rather than Type 1
+fonts. They are not compressed or encrypted and are plain text. This is
+so I (and you) can see what's going on, and (if you're a Postscript guru
+and really want to) can alter the outlines.
+<p>
+
+I only translate the outlines, not the 'instructions' that come with
+them. This latter task is probably virtually impossible anyway. TrueType
+outlines are B-splines rather than the Bezier curves that Postscript
+uses. I believe that my conversion algorithm is reasonably correct, if
+nothing else because the characters look right.
+<p>
+
+<H4>
+Problems that may occur
+</H4>
+<!
+-----------------------
+>
+
+Most seriously, very complex characters (with lots of outline segments)
+can make Ghostscript releases 2.x.x fail with a 'limitcheck' error. It
+is possible that this may happen with some older Postscript printers as
+well. Such characters will be flagged by the program and there are
+basically two things you can do. First is to edit the <tt>.pfa</tt> file to
+simplify or remove the offending character. This is not really
+recommended. The second is to use Ghostscript release 3, if you can get
+it. This has much larger limits and does not seem to have any problems
+with complex characters.
+<p>
+
+Then there are buggy fonts (yes, a font can have bugs). I try to deal
+with these in as sane a manner as possible, but it's not always
+possible.
+<p>
+
+<H4>
+Encodings
+</H4>
+<!
+---------
+>
+
+A postscript font must have a 256 element array, called an encoding,
+each element of which is a name, which is also the name of a procedure
+contained within the font. The 'BuildChar' command takes a byte and uses
+it to index the encoding array to find a character name, and then looks
+that up in the font's procedure table find the commands to draw the
+glyph. However, not all characters need be in the encoding array. Those
+that are not cannot be drawn (at least not using 'show'), however it is
+possible to 're-encode' the font to enable these characters. There are
+several standard encodings: Adobe's original, ISO-Latin1 and Symbol
+being the most commonly encountered.
+<p>
+
+TrueType fonts are organised differently. As well as the glyph
+descriptions there are a number of tables. One of these is a mapping
+from a character set into the glyph array, and another is a mapping from
+the glyph array into a set of Postscript character names. The problems
+are:
+<p>
+	1)	Microsoft uses Unicode, a 16-bit system, to encode the font.
+<br>
+	2)	that more than one glyph is given the same Postscript name.
+<p>
+
+I deal with (1) by assuming a Latin1 encoding. The MS-Windows and
+Unicode character sets are both supersets of ISO-8859-1. This usually
+means that most characters will be properly encoded, but you should be
+warned that some software may assume that fonts have an Adobe encoding.
+Symbol, or Dingbat, fonts are in fact less of a problem, as they have
+private encodings starting at 0xF000. It is easy to just lose the top
+byte.
+<p>
+
+Postscript fonts can be re-encoded, either manually, or by software.
+Groff, for example, generates postscript that re-encodes fonts with the
+Adobe encoding. The problem here is that not all characters in the Adobe
+set are in the MS-Windows set. In particular there are no fi and fl
+ligatures. This means that conversions of the versions of
+Times-New-Roman and Arial that come with MS-Windows cannot be used
+blindly as replacements for Adobe Times-Roman and Helvetica. You can get
+expanded versions of MS fonts from Microsoft's web site which do contain
+these ligatures (and a lot else besides).
+<p>
+
+I deal with (2) by creating new character names. This can be error-prone
+because I do not know which of them is the correct glyph to give the
+name to. Some (buggy) fonts have large numbers of blank glyphs, all with
+the same name.
+<p>
+
+(almost every TrueType font has three glyphs called <tt>.notdef</tt>, one of them
+is usually an empty square shape, one has no outline and has zero width,
+and one has no outline and a positive width. This example is not really
+a problem with well formed fonts since the <tt>.notdef</tt> characters are only
+used for unprintable characters, which shouldn't occur in your documents
+anyway).
+<p>
+</BODY>
+</HTML>
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf2pt1.1
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf2pt1.1	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/ttf2pt1.1	(revision 2000)
@@ -0,0 +1,822 @@
+.rn '' }`
+''' $RCSfile: ttf2pt1.1,v $$Revision: 1.1 $$Date: 2008-03-12 06:35:44 $
+'''
+''' $Log: not supported by cvs2svn $
+'''
+.de Sh
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp
+.if t .sp .5v
+.if n .sp
+..
+.de Ip
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.de Vb
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve
+.ft R
+
+.fi
+..
+'''
+'''
+'''     Set up \*(-- to give an unbreakable dash;
+'''     string Tr holds user defined translation string.
+'''     Bell System Logo is used as a dummy character.
+'''
+.tr \(*W-|\(bv\*(Tr
+.ie n \{\
+.ds -- \(*W-
+.ds PI pi
+.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+.ds L" ""
+.ds R" ""
+'''   \*(M", \*(S", \*(N" and \*(T" are the equivalent of
+'''   \*(L" and \*(R", except that they are used on ".xx" lines,
+'''   such as .IP and .SH, which do another additional levels of
+'''   double-quote interpretation
+.ds M" """
+.ds S" """
+.ds N" """""
+.ds T" """""
+.ds L' '
+.ds R' '
+.ds M' '
+.ds S' '
+.ds N' '
+.ds T' '
+'br\}
+.el\{\
+.ds -- \(em\|
+.tr \*(Tr
+.ds L" ``
+.ds R" ''
+.ds M" ``
+.ds S" ''
+.ds N" ``
+.ds T" ''
+.ds L' `
+.ds R' '
+.ds M' `
+.ds S' '
+.ds N' `
+.ds T' '
+.ds PI \(*p
+'br\}
+.\"	If the F register is turned on, we'll generate
+.\"	index entries out stderr for the following things:
+.\"		TH	Title 
+.\"		SH	Header
+.\"		Sh	Subsection 
+.\"		Ip	Item
+.\"		X<>	Xref  (embedded
+.\"	Of course, you have to process the output yourself
+.\"	in some meaninful fashion.
+.if \nF \{
+.de IX
+.tm Index:\\$1\t\\n%\t"\\$2"
+..
+.nr % 0
+.rr F
+.\}
+.TH TTF2PT1 1 "version 3.4.4" "December 31, 2003" "TTF2PT1 Font Converter"
+.UC
+.if n .hy 0
+.if n .na
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.de CQ          \" put $1 in typewriter font
+.ft CW
+'if n "\c
+'if t \\&\\$1\c
+'if n \\&\\$1\c
+'if n \&"
+\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
+'.ft R
+..
+.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
+.	\" AM - accent mark definitions
+.bd B 3
+.	\" fudge factors for nroff and troff
+.if n \{\
+.	ds #H 0
+.	ds #V .8m
+.	ds #F .3m
+.	ds #[ \f1
+.	ds #] \fP
+.\}
+.if t \{\
+.	ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.	ds #V .6m
+.	ds #F 0
+.	ds #[ \&
+.	ds #] \&
+.\}
+.	\" simple accents for nroff and troff
+.if n \{\
+.	ds ' \&
+.	ds ` \&
+.	ds ^ \&
+.	ds , \&
+.	ds ~ ~
+.	ds ? ?
+.	ds ! !
+.	ds /
+.	ds q
+.\}
+.if t \{\
+.	ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.	ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.	ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.	ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.	ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.	ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
+.	ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
+.	ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.	ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
+.\}
+.	\" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
+.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
+.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
+.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.ds oe o\h'-(\w'o'u*4/10)'e
+.ds Oe O\h'-(\w'O'u*4/10)'E
+.	\" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.	\" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.	ds : e
+.	ds 8 ss
+.	ds v \h'-1'\o'\(aa\(ga'
+.	ds _ \h'-1'^
+.	ds . \h'-1'.
+.	ds 3 3
+.	ds o a
+.	ds d- d\h'-1'\(ga
+.	ds D- D\h'-1'\(hy
+.	ds th \o'bp'
+.	ds Th \o'LP'
+.	ds ae ae
+.	ds Ae AE
+.	ds oe oe
+.	ds Oe OE
+.\}
+.rm #[ #] #H #V #F C
+.SH "NAME"
+TTF2PT1 \- A True Type to PostScript Type 1 Font Converter 
+.SH "SYNOPSIS"
+\f(CWttf2pt1 \fI[-options] ttffont.ttf [Fontname]\fR\fR
+.PP
+or
+.PP
+\f(CWttf2pt1 \fI[-options] ttffont.ttf -\fR\fR
+.SH "DESCRIPTION"
+Ttf2pt1 is a font converter from the True Type format (and some other formats
+supported by the FreeType library as well) to the Adobe Type1 format.
+.PP
+The versions 3.0 and later got rather extensive post-processing algorithm that 
+brings the converted fonts to the requirements of the Type1 standard, tries to
+correct the rounding errors introduced during conversions and some simple
+kinds of bugs that are typical for the public domain TTF fonts. It
+also generates the hints that enable much better rendering of fonts in
+small sizes that are typical for the computer displays. But everything
+has its price, and some of the optimizations may not work well for certain
+fonts. That's why the options were added to the converter, to control
+the performed optimizations.
+.SH "OPTIONS"
+The first variant creates the file \f(CWFontname.pfa\fR (or \f(CWFontname.pfb\fR if the 
+option \*(L'\fB\-b\fR\*(R' was used) with the converted font and \f(CWFontname.afm\fR with the 
+font metrics, the second one prints the font or another file (if the option
+\&\*(R'\fB\-G\fR\*(R' was used) on the standard output from where it can be immediately
+piped through some filter. If no \f(CWFontname\fR is specified for the first
+variant, the name is generated from \f(CWttffont\fR by replacing the \f(CW.ttf\fR
+filename suffix.
+.PP
+Most of the time no options are neccessary (with a possible exception
+of \*(L'\fB\-e\fR'). But if there are some troubles with the resulting font, they 
+may be used to control the conversion.
+The \fBoptions\fR are:
+.Ip "\(bu" 2
+\f(CW\fB-a\fR\fR \- Include all the glyphs from the source file into the converted
+file. If this option is not specified then only the glyphs that have
+been assigned some encoding are included, because the rest of glyphs
+would be inaccessible anyway and would only consume the disk space. 
+But some applications are clever enough to change the encoding on
+the fly and thus use the other glyphs, in this case they could
+benefit from using this option. But there is a catch: the X11 library
+has rather low limit for the font size. Including more glyphs increases
+the file size and thus increases the chance of hitting this limit.
+See \f(CWapp/X11/README\fR for the description of a 
+patch to X11 which fixes this problem.
+.Ip "\(bu" 2
+\f(CW\fB-b\fR\fR \- Encode the resulting font to produce a ready \f(CW.pfb\fR file.
+.Ip "\(bu" 2
+\f(CW\fB-d \fIsuboptions\fR\fR\fR \- Debugging options. The suboptions are:
+.Sp
+\f(CW\fBa\fR\fR \- Print out the absolute coordinates of dots in outlines. Such
+a font can not be used by any program (that's why this option is
+incompatible with \*(L'\fB\-e\fR') but it has proven to be a valuable debuging 
+information.
+.Sp
+\f(CW\fBr\fR\fR \- Do not reverse the direction of outlines. The \s-1TTF\s0 fonts have
+the standard direction of outlines opposite to the Type1 fonts. So
+they should be reversed during proper conversion. This option
+may be used for debugging or to handle a \s-1TTF\s0 font with wrong
+direction of outlines (possibly, converted in a broken way from
+a Type1 font). The first signs of the wrong direction are the
+letters like \*(L"P\*(R" or \*(L"B\*(R" without the unpainted \*(L"holes\*(R" inside.
+.Ip "\(bu" 2
+\f(CW\fB-e\fR\fR \- Assemble the resulting font to produce a ready \f(CW.pfa\fR file.
+.Sp
+[ S.B.: Personally I don't think that this option is particularly useful.
+The same result may be achieved by piping the unassembled data
+through t1asm, the Type 1 assembler. And, anyways, it's good to
+have the t1utils package handy. But Mark and many users think that 
+this functionality is good and it took not much time to add this option. ]
+.Ip "\(bu" 2
+\f(CW\fB-F\fR\fR \- Force the Unicode encoding: any type of \s-1MS\s0 encoding specified
+in the font is ignored and the font is treated like it has Unicode
+encoding. \fB\s-1WARNING\s0:\fR this option is intended for buggy fonts
+which actually are in Unicode but are marked as something else. The
+effect on the other fonts is unpredictable.
+.Ip "\(bu" 2
+\f(CW\fB-G \fIsuboptions\fR\fR\fR \- File generation options. The suboptions may be lowercase 
+or uppercase, the lowercase ones disable the generation of particular 
+files, the corresponding uppercase suboptions enable the generation of the 
+same kind of files. If the result of ttf2pt1 is requested to be printed on
+the standard output, the last enabling suboption of \fB\-G\fR determines
+which file will be written to the standard output and the rest of files
+will be discarded. For example, \fB\-G A\fR will request the \s-1AFM\s0 file.
+The suboptions to disable/enable the generation of the files are:
+.Sp
+\f(CW\fBf/F\fR\fR \- The font file. Depending on the other options this file
+will have one of the suffixes \f(CW.t1a\fR, \f(CW.pfa\fR or \f(CW.pfb\fR. If the conversion result
+is requested on the standard output ('\f(CW-\fR\*(R' is used as the output file name)
+then the font file will also be written there by default, if not overwritten
+by another suboption of \fB\-G\fR.
+\fBDefault: enabled\fR
+.Sp
+\f(CW\fBa/A\fR\fR \- The Adobe font metrics file (\f(CW.afm\fR).
+\fBDefault: enabled\fR
+.Sp
+\f(CW\fBe/E\fR\fR \- The dvips encoding file (\f(CW.enc\fR).
+\fBDefault: disabled\fR
+.Ip "\(bu" 2
+\f(CW\fB-l \fIlanguage\fR[+\fIargument\fR]\fR\fR \- Extract the fonts for the specified language from a
+multi-language Unicode font. If this option is not used the converter
+tries to guess the language by the values of the shell variable \s-1LANG\s0.
+If it is not able to guess the language by \s-1LANG\s0 it tries all the
+languages in the order they are listed. 
+.Sp
+After the plus sign an optional argument for the language extractor
+may be specified. The format of the argument is absolutely up to
+the particular language converter. The primary purpose of the
+argument is to support selection of planes for the multi-plane
+Eastern encodings but it can also be used in any other way. The 
+language extractor may decide to add the plane name in some form
+to the name of the resulting font. None of the currently supported 
+languages make any use of the argument yet.
+.Sp
+As of now the following languages are supported:
+.Sp
+\ \ \f(CWlatin1\fR \- for all the languages using the Latin-1 encoding
+.Sp
+\ \ \f(CWlatin2\fR \- for the Central European languages
+.Sp
+\ \ \f(CWlatin4\fR \- for the Baltic languages
+.Sp
+\ \ \f(CWlatin5\fR \- for the Turkish language
+.Sp
+\ \ \f(CWcyrillic\fR \- for the languages with Cyrillic alphabet
+.Sp
+\ \ \f(CWrussian\fR \- historic synonym for cyrillic
+.Sp
+\ \ \f(CWbulgarian\fR \- historic synonym for cyrillic
+.Sp
+\ \ \f(CWadobestd\fR \- for the AdobeStandard encoding used by TeX
+.Sp
+\ \ \f(CWplane+\fIargument\fR\fR \- to select one plane from a multi-byte encoding
+.Sp
+The argument of the \*(L"\f(CWplane\fR\*(R" language may be in one of three forms:
+.Sp
+\ \ \f(CWplane+\fBpid=\fR\fI<pid>\fR\fB,eid=\fR\fI<eid>\fR\fR
+.Sp
+\ \ \f(CWplane+\fBpid=\fR\fI<pid>\fR\fB,eid=\fR\fI<eid>\fR\fB,\fR\fI<plane_number>\fR\fR
+.Sp
+\ \ \f(CWplane+\fI<plane_number>\fR\fR
+.Sp
+Pid (\s-1TTF\s0 platform id) and eid (\s-1TTF\s0 encoding id) select a particular 
+\s-1TTF\s0 encoding table in the original font. They are specified as decimal
+numbers. If this particular encoding table is not present in the font
+file then the conversion fails. The native ("ttf") front-end parser supports
+only pid=3 (Windows platform), the FreeType-based ("ft") front-end supports 
+any platform. If pid/eid is not specified then the \s-1TTF\s0 encoding table is 
+determined as usual: Unicode encoding if it's first or an 8-bit encoding
+if not (and for an 8-bit encoding the plane number is silently ignored). 
+To prevent the converter from falling back to an 8-bit encoding, specify
+the Unicode pid/eid value explicitly.
+.Sp
+Plane_number is a hexadecimal (if starts with \*(L"\fB0x\fR") or decimal number.
+It gives the values of upper bytes for which 256 characters will be 
+selected. If not specified, defaults to 0. It is also used as a font
+name suffix (the leading \*(L"0x\*(R" is not included into the suffix).
+.Sp
+\fB\s-1NOTE\s0:\fR
+You may notice that the language names are not uniform: some are the
+names of particular languages and some are names of encodings. This
+is because of the different approaches. The original idea was to
+implement a conversion from Unicode to the appropriate Windows
+encoding for a given language. And then use the translation tables
+to generate the fonts in whatever final encodings are needed. This
+would allow to pile together the Unicode fonts and the non-Unicode
+Windows fonts for that language and let the program to sort them out
+automatically. And then generate fonts in all the possible encodings
+for that language. An example of this approach is the Russian language
+support. But if there is no multiplicity of encodings used for some 
+languages and if the non-Unicode fonts are not considered important 
+by the users, another way would be simpler to implement: just provide
+only one table for extraction of the target encoding from Unicode
+and don't bother with the translation tables. The latin* \*(L"languages\*(R"
+are examples of this approach. If somebody feels that he needs the
+Type1 fonts both in Latin-* and Windows encodings he or she is absolutely
+welcome to submit the code to implement it.
+.Sp
+\fB\s-1WARNING\s0:\fR
+Some of the glyphs included into the AdobeStandard encoding are not
+included into the Unicode standard. The most typical examples of such
+glyphs are ligatures like \*(L'fi\*(R', \*(L'fl\*(R' etc. Because of this the font 
+designers may place them at various places. The converter tries to
+do its best, if the glyphs have honest Adobe names and/or are
+placed at the same codes as in the Microsoft fonts they will be
+picked up. Otherwise a possible solution is to use the option \*(L'\fB\-L\fR\*(R'
+with an external map. 
+.Ip "\(bu" 2
+\f(CW\fB-L \fIfile\fR[+[pid=\fI<pid>\fR,eid=\fI<eid>\fR,][\fIplane\fR]]\fR\fR \- Extract the fonts for the specified 
+language from a multi-language font using the map from this file. This is
+rather like the option \*(L'\fB\-l\fR\*(R' but the encoding map is not 
+compiled into the program, it's taken from that file, so it's
+easy to edit. Examples of such files are provided in 
+\f(CWmaps/adobe-standard-encoding.map\fR, \f(CWCP1250.map\fR. (\fB\s-1NOTE\s0:\fR
+the \*(L'standard encoding\*(R' map does not include all the glyphs of the 
+AdobeStandard encoding, it's provided only as an example.) The 
+description of the supported map formats is in the file 
+\f(CWmaps/unicode-sample.map\fR.
+.Sp
+Likewise to \*(L'\fB\-l\fR\*(R', an argument may be specified after the map file
+name. But in this case the argument has fixed meaning: it selects the 
+original \s-1TTF\s0 encoding table (the syntax is the same as in \*(L'\fB\-l plane\fR')
+and/or a plane of the map file. The plane name also gets added after dash 
+to the font name. The plane is a concept used in the Eastern fonts with big 
+number of glyphs: one \s-1TTF\s0 font gets divided into multiple Type1 fonts, 
+each containing one plane of up to 256 glyphs. But with a little 
+creativity this concept may be used for other purposes of combining 
+multiple translation maps into one file.  To extract multiple planes 
+from a \s-1TTF\s0 font \f(CWttf2pt1\fR must be run multiple times, each time with 
+a different plane name specified.
+.Sp
+The default original \s-1TTF\s0 encoding table used for the option \*(L'\fB\-L\fR\*(R' is
+Unicode. The map files may include directives to specify different original 
+\s-1TTF\s0 encodings. However if the pid/eid pair is specified with
+it overrides any original encoding specified in the map file.
+.Ip "\(bu" 2
+\f(CW\fB-m \fItype\fR=\fIvalue\fR\fR\fR \- Set maximal or minimal limits of resources.
+These limits control the the font generation by limiting the resources
+that the font is permitted to require from the PostScript interpreter.
+The currently supported types of limits are:
+.Sp
+\f(CW\fBh\fR\fR \- the maximal hint stack depth for the substituted hints. 
+The default value is 128, according to the limitation in X11. This seems to
+be the lowest (and thus the safest) widespread value. To display the
+hint stack depth required by each glyph in a \f(CW.t1a\fR file use the script
+\f(CWscripts/cntstems.pl\fR.
+.Ip "\(bu" 2
+\f(CW\fB-O \fIsuboptions\fR\fR\fR \- Outline processing options. The suboptions
+may be lowercase or uppercase, the lowercase ones disable the features,
+the corresponding uppercase suboptions enable the same features.
+The suboptions to disable/enable features are:
+.Sp
+\f(CW\fBb/B\fR\fR \- Guessing of the ForceBold parameter. This parameter helps
+the Type1 engine to rasterize the bold fonts properly at small sizes.
+But the algorithm used to guess the proper value of this flag makes
+that guess based solely on the font name. In rare cases that may cause
+errors, in these cases you may want to disable this guessing. 
+\fBDefault: enabled\fR
+.Sp
+\f(CW\fBh/H\fR\fR \- Autogeneration of hints. The really complex outlines
+may confuse the algorithm, so theoretically it may be useful
+sometimes to disable them. Although up to now it seems that
+even bad hints are better than no hints at all.
+\fBDefault: enabled\fR
+.Sp
+\f(CW\fBu/U\fR\fR \- Hint substitution. Hint substitution is a technique 
+permitting generation of more detailed hints for the rasterizer. It allows 
+to use different sets of hints for different parts of a glyph and change 
+these sets as neccessary during rasterization (that's why \*(L"substituted").  
+So it should improve the quality of the fonts rendered at small sizes.  
+But there are two catches: First, the X11 library has rather low limit for 
+the font size. More detailed hints increase the file size and thus increase 
+the chance of hitting this limit (that does not mean that you shall hit it
+but you may if your fonts are particularly big). This is especially 
+probable for Unicode fonts converted with option \*(L'\fB\-a\fR\*(R', so you may want to 
+use \*(L'\fB\-a\fR\*(R' together with \*(L'\fB\-Ou\fR\*(R'. See \f(CWapp/X11/README\fR for the description of 
+a patch to X11 which fixes this problem. Second, some rasterizers (again,
+X11 is the typical example) have a limitation for total number of hints
+used when drawing a glyph (also known as the hint stack depth). If that
+stack overflows the glyph is ignored. Starting from version 3.22 \f(CWttf2pt1\fR
+uses algorithms to minimizing this depth, with the trade-off of slightly
+bigger font files. The glyphs which still exceed the limit set by option
+\&\*(R'\fB\-mh\fR\*(R' have all the substituted hints removed and only base hints left.
+The algorithms seem to have been refined far enough to make the fonts with
+substituted hints look better than the fonts without them or at least the 
+same. Still if the original fonts are not well-designed the detailed 
+hinting may emphasize the defects of the design, such as non-even thickness 
+of lines. So provided that you are not afraid of the X11 bug the best idea 
+would be to generate a font with this feature and without it, then compare 
+the results using the program \f(CWother/cmpf\fR (see the description 
+in \f(CWother/README\fR) and decide which one looks better.
+\fBDefault: enabled\fR
+.Sp
+\f(CW\fBo/O\fR\fR \- Space optimization of the outlines\*(R' code. This kind of optimization
+never hurts, and the only reason to disable this feature is for comparison 
+of the generated fonts with the fonts generated by the previous versions of 
+converter. Well, it _almost_ never hurts. As it turned out there exist
+some brain-damaged printers which don't understand it. Actually this
+feature does not change the outlines at all. The Type 1 font manual 
+provides a set of redundant operators that make font description shorter,
+such as \*(L'10 hlineto\*(R' instead of \*(L'0 10 rlineto\*(R' to describe a horizontal
+line. This feature enables use of these operators.
+\fBDefault: enabled\fR
+.Sp
+\f(CW\fBs/S\fR\fR \- Smoothing of outlines. If the font is broken in some
+way (even the ones that are not easily noticeable), such smoothing 
+may break it further. So disabling this feature is the first thing to be 
+tried if some font looks odd. But with smoothing off the hint generation
+algorithms may not work properly too.
+\fBDefault: enabled\fR
+.Sp
+\f(CW\fBt/T\fR\fR \- Auto-scaling to the 1000x1000 Type1 standard matrix. The
+\s-1TTF\s0 fonts are described in terms of an arbitrary matrix up to
+4000x4000. The converted fonts must be scaled to conform to
+the Type1 standard. But the scaling introduces additional rounding
+errors, so it may be curious sometimes to look at the font in its
+original scale.
+\fBDefault: enabled\fR
+.Sp
+\f(CW\fBv/V\fR\fR \- Do vectorization on the bitmap fonts. Functionally
+\*(L"vectorization\*(R" is the same thing as \*(L"autotracing\*(R", a different word is
+used purely to differentiate it from the Autotrace library. It tries to
+produce nice smooth outlines from bitmaps. This feature is still a work
+in progress though the results are already mostly decent.
+\fBDefault: disabled\fR
+.Sp
+\f(CW\fBw/W\fR\fR \- Glyphs\*(R' width corection. This option is designed to be
+used on broken fonts which specify too narrow widths for the 
+letters. You can tell that a font can benefit from this option
+if you see that the characters are smashed together without
+any whitespace between them. This option causes the converter
+to set the character widths to the actual width of this character
+plus the width of a typical vertical stem. But on the other hand
+the well-designed fonts may have characters that look better if
+their widths are set slightly narrower. Such well-designed fonts
+will benefit from disabling this feature. You may want to convert
+a font with and without this feature, compare the results and
+select the better one. This feature may be used only on proportional
+fonts, it has no effect on the fixed-width fonts.
+\fBDefault: disabled\fR
+.Sp
+\f(CW\fBz/Z\fR\fR \- Use the Autotrace library on the bitmap fonts. The results 
+are horrible and \fBthe use of this option is not recommended\fR. This option is 
+present for experimental purposes. It may change or be removed in the
+future. The working tracing can be achieved with option \f(CW\fB-OV\fR\fR.
+\fBDefault: disabled\fR
+.Ip "\(bu" 2
+\f(CW\fB-p \fIparser_name\fR\fR\fR \- Use the specified front-end parser to read the font file.
+If this option is not used, ttf2pt1 selects the parser automatically based
+on the suffix of the font file name, it uses the first parser in its
+list that supports this font type. Now two parsers are supported:
+.Sp
+\ \ \f(CWttf\fR \- built-in parser for the ttf files (suffix \f(CW.ttf\fR)
+.Sp
+\ \ \f(CWbdf\fR \- built-in parser for the \s-1BDF\s0 files (suffix \f(CW.bdf\fR)
+.Sp
+\ \ \f(CWft\fR \- parser based on the FreeType-2 library (suffixes \f(CW.ttf\fR,
+\&\f(CW.otf\fR, \f(CW.pfa\fR, \f(CW.pfb\fR)
+.Sp
+The parser \f(CWft\fR is \fB\s-1NOT\s0\fR linked in by default. See \f(CWMakefile\fR
+for instructions how to enable it. We do no support this parser on
+Windows: probably it will work but nobody tried and nobody knows how
+to build it. 
+.Sp
+The conversion of the bitmap fonts (such as \s-1BDF\s0) is simplistic yet,
+producing jagged outlines.  When converting such fonts, it might be 
+a good idea to turn off the hint substitution (using option \fB\-Ou\fR) 
+because the hints produced will be huge but not adding much to the
+quality of the fonts.
+.Ip "\(bu" 2
+\f(CW\fB-u \fInumber\fR\fR\fR \- Mark the font with this value as its
+UniqueID. The UniqueID is used by the printers with the hard disks
+to cache the rasterized characters and thus significantly
+speed-up the printing. Some of those printers just can't
+store the fonts without UniqueID on their disk.The problem
+is that the \s-1ID\s0 is supposed to be unique, as it name says. And
+there is no easy way to create a guaranteed unique \s-1ID\s0. Adobe specifies
+the range 4000000-4999999 for private IDs but still it's difficult
+to guarantee the uniqueness within it. So if you don't really need the 
+UniqueID don't use it, it's optional. Luckily there are a few millions of 
+possible IDs, so the chances of collision are rather low. 
+If instead of the number a special value \*(L'\f(CW\fBA\fR\fR\*(R' is given
+then the converter generates the value of UniqueID automatically,
+as a hash of the font name. (\fB\s-1NOTE\s0:\fR  in the version 3.22 the
+algorithm for autogeneration of UniqueID was changed to fit the values
+into the Adobe-spacified range. This means that if UniqueIDs were used 
+then the printer's cache may need to be flushed before replacing the 
+fonts converted by an old version with fonts converted by a newer version).
+A simple way to find if any of the fonts in a given directory have
+duplicated UniqueIDs is to use the command:
+.Sp
+\f(CW\ \ cat *.pf[ab] | grep UniqueID | sort | uniq -c | grep -v ' 1 '\fR
+.Sp
+Or if you use \f(CWscripts/convert\fR it will do that for you automatically 
+plus it will also give the exact list of files with duplicate UIDs.
+.Ip "\(bu" 2
+\f(CW\fB-v \fIsize\fR\fR\fR \- Re-scale the font to get the size of a typical uppercase
+letter somewhere around the specified size. Actually, it re-scales
+the whole font to get the size of one language-dependent letter to be
+at least of the specified size. Now this letter is \*(L"A\*(R" in all the
+supported languages. The size is specified in the points of the
+Type 1 coordinate grids, the maximal value is 1000. This is an
+experimental option and should be used with caution. It tries to
+increase the visible font size for a given point size and thus make
+the font more readable. But if overused it may cause the fonts to
+look out of scale. As of now the interesting values of size for
+this option seem to be located mostly between 600 and 850. This
+re-scaling may be quite useful but needs more experience to
+understand the balance of its effects.
+.Ip "\(bu" 2
+\f(CW\fB-W \fIlevel\fR\fR\fR \- Select the verbosity level of the warnings.
+Currently the levels from 0 to 4 are supported. Level 0 means no warnings
+at all, level 4 means all the possible warnings. The default level is 3.
+Other levels may be added in the future, so using the level number 99 is
+recommended to get all the possible warnings. Going below level 2 is
+not generally recommended because you may miss valuable information about
+the problems with the fonts being converted.
+.Ip "\(bu" 2
+\fBObsolete option:\fR
+\f(CW\fB-A\fR\fR \- Print the font metrics (.afm file) instead of the font on \s-1STDOUT\s0.
+Use \fB\-\s-1GA\s0\fR instead.
+.Ip "\(bu" 2
+\fBVery obsolete option:\fR
+.Sp
+The algorithm that implemented the forced fixed width had major
+flaws, so it was disabled. The code is still in the program and
+some day it will be refined and returned back. Meanwhile the 
+option name \*(L'\fB\-f\fR\*(R' was reused for another option. The old version was:
+.Sp
+\f(CW\fB-f\fR\fR \- Don't try to force the fixed width of font. Normally the converter
+considers the fonts in which the glyph width deviates by not more
+than 5% as buggy fixed width fonts and forces them to have really
+fixed width. If this is undesirable, it can be disabled by this option.
+.PP
+The \f(CW.pfa\fR font format supposes that the description of the characters
+is binary encoded and encrypted. This converter does not encode or
+encrypt the data by default, you have to specify the option \*(L'\fB\-e\fR\*(R'
+or use the \f(CWt1asm\fR program to assemble (that means, encode and
+encrypt) the font program. The \f(CWt1asm\fR program that is included with
+the converter is actually a part of the \f(CWt1utils\fR package, rather old
+version of which may be obtained from
+.PP
+http://ttf2pt1.sourceforge.net/t1utils.tar.gz
+.PP
+Note that \f(CWt1asm\fR from the old version of that package won't work properly
+with the files generated by \f(CWttf2pt1\fR version 3.20 and later. Please use
+\f(CWt1asm\fR packaged with \f(CWttf2pt1\fR or from the new version \f(CWt1utils\fR
+instead. For a newer version of \f(CWt1utils\fR please look at
+.PP
+http://www.lcdf.org/~eddietwo/type/
+.SH "EXAMPLES"
+So, the following command lines:
+.PP
+\f(CWttf2pt1 -e ttffont.ttf t1font\fR
+.PP
+\f(CWttf2pt1 ttffont.ttf - | t1asm >t1font.pfa\fR
+.PP
+represent two ways to get a working font. The benefit of the second form 
+is that other filters may be applied to the font between the converter
+and assembler.
+.SH "FILES"
+.Ip "\(bu" 2
+\s-1TTF2PT1_LIBXDIR/\s0t1asm
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR\s0/*
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR/\s0scripts/*
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR/\s0other/*
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR/README\s0
+.Ip "\(bu" 2
+\s-1TTF2PT1_SHAREDIR/FONTS\s0
+.SH "SEE ALSO"
+.Ip "\(bu" 4
+the \fIttf2pt1_convert(1)\fR manpage
+.Ip "\(bu" 4
+the \fIttf2pt1_x2gs(1)\fR manpage
+.Ip "\(bu" 4
+the \fIt1asm(1)\fR manpage
+.Ip "\(bu" 4
+ttf2pt1-announce@lists.sourceforge.net
+.Sp
+The mailing list with announcements about ttf2pt1. It is a moderated mailing
+with extremely low traffic. Everyone is encouraged to subscribe to keep in 
+touch with the current status of project. To subscribe use the Web interface
+at http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-announce.
+If you have only e-mail access to the Net then send a subscribe request to 
+the development mailing list ttf2pt1-devel@lists.sourceforge.net and somebody
+will help you with subscription.
+.Ip "\(bu" 4
+ttf2pt1-devel@lists.sourceforge.net
+.Sp
+ttf2pt1-users@lists.sourceforge.net
+.Sp
+The ttf2pt1 mailing lists for development and users issues. They have not
+that much traffic either. To subscribe use the Web interface at
+http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-devel
+and http://lists.sourceforge.net/mailman/listinfo/ttf2pt1-users.
+If you have only e-mail access to the Net then send a subscribe request to 
+the development mailing list ttf2pt1-devel@lists.sourceforge.net and somebody
+will help you with subscription.
+.Ip "\(bu" 4
+http://ttf2pt1.sourceforge.net
+.Sp
+The main page of the project.
+.Sp
+http://www.netspace.net.au/~mheath/ttf2pt1/
+.Sp
+The old main page of the project.
+.SH "BUGS"
+It seems that many Eastern fonts use features of the TTF format that are 
+not supported by the ttf2pt1's built-in front-end parser. Because of
+this for now we recommend using the FreeType-based parser (option
+\&\*(R'\fB\-p ft\fR') with the \*(L"\f(CWplane\fR\*(R" language.
+.Sh "Troubleshooting and bug reports"
+Have problems with conversion of some font ? The converter dumps core ? Or your
+printer refuses to understand the converted fonts ? Or some characters are 
+missing ? Or some characters look strange ?
+.PP
+Send the bug reports to the ttf2pt1 development mailing list at
+ttf2pt1-devel@lists.sourceforge.net.
+.PP
+Try to collect more information about the problem and include it into
+the bug report. (Of course, even better if you would provide a ready
+fix, but just a detailed bug report is also good). Provide detailed
+information about your problem, this will speed up the response greatly.
+Don't just write \*(L"this font looks strange after conversion\*(R" but describe
+what's exactly wrong with it: for example, what characters look wrong
+and what exactly is wrong about their look. Providing a link to the
+original font file would be also a good idea. Try to do a little
+troublehooting and report its result. This not only would help with
+the fix but may also give you a temporary work-around for the bug.
+.PP
+First, enable full warnings with option \*(L'\fB\-W99\fR\*(R', save them to
+a file and read carefully. Sometimes the prolem is with a not implemented
+feature which is reported in the warnings. Still, reporting about such
+problems may be a good idea: some features were missed to cut corners,
+in hope that no real font is using them. So a report about a font using
+such a feature may motivate someone to implement it. Of course, you
+may be the most motivated person: after all, you are the one wishing
+to convert that font. ;\-) Seriously, the philosophy \*(L"scrath your own itch\*(R"
+seems to be the strongest moving force behind the Open Source software.
+.PP
+The next step is playing with the options. This serves a dual purpose:
+on one hand, it helps to localize the bug, on the other hand you may be
+able to get a working version of the font for the meantime while the
+bug is being fixed. The typical options to try out are: first \*(L'\fB\-Ou\fR\*(R', if
+it does not help then \*(L'\fB\-Os\fR\*(R', then \*(L'\fB\-Oh\fR\*(R', then \*(L'\fB\-Oo\fR\*(R'.
+They are described in a bit more detail above. Try them one by one
+and in combinations. See if with them the resulting fonts look better.
+.PP
+On some fonts ttf2pt1 just crashes. Commonly that happens because the
+font being converted is highly defective (although sometimes the bug
+is in ttf2pt1 itself). In any case it should not crash, so the reports
+about such cases will help to handle these defects properly in future.
+.PP
+We try to respond to the bug reports in a timely fashion but alas, this 
+may not always be possible, especially if the problem is complex.
+This is a volunteer project and its resources are limited. Because
+of this we would appreciate bug reports as detailed as possible,
+and we would appreciate the ready fixes and contributions even more.
+.SH "HISTORY"
+Based on ttf2pfa by Andrew Weeks, and help from Frank Siegert.
+.PP
+Modification by Mark Heath.
+.PP
+Further modification by Sergey Babkin.
+.PP
+The Type1 assembler by I. Lee Hetherington with modifications by 
+Kai-Uwe Herbing.
+
+.rn }` ''
+.IX Title "TTF2PT1 1"
+.IX Name "TTF2PT1 - A True Type to PostScript Type 1 Font Converter"
+
+.IX Header "NAME"
+
+.IX Header "SYNOPSIS"
+
+.IX Header "DESCRIPTION"
+
+.IX Header "OPTIONS"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Header "EXAMPLES"
+
+.IX Header "FILES"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Header "SEE ALSO"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Item "\(bu"
+
+.IX Header "BUGS"
+
+.IX Subsection "Troubleshooting and bug reports"
+
+.IX Header "HISTORY"
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/t1asm.c
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/t1asm.c	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/t1asm.c	(revision 2000)
@@ -0,0 +1,604 @@
+/* t1asm
+ *
+ * This program `assembles' Adobe Type-1 font programs in pseudo-PostScript
+ * form into either PFB or PFA format.  The human readable/editable input is
+ * charstring- and eexec-encrypted as specified in the `Adobe Type 1 Font
+ * Format' version 1.1 (the `black book').  There is a companion program,
+ * t1disasm, which `disassembles' PFB and PFA files into a pseudo-PostScript
+ * file.
+ *
+ * Copyright (c) 1992 by I. Lee Hetherington, all rights reserved.
+ *
+ * Permission is hereby granted to use, modify, and distribute this program
+ * for any purpose provided this copyright notice and the one below remain
+ * intact.
+ *
+ * I. Lee Hetherington (ilh@lcs.mit.edu)
+ *
+ * Revision 1.2  92/05/22  11:54:45  ilh
+ * Fixed bug where integers larger than 32000 could not be encoded in
+ * charstrings.  Now integer range is correct for four-byte
+ * twos-complement integers: -(1<<31) <= i <= (1<<31)-1.  Bug detected by
+ * Piet Tutelaers (rcpt@urc.tue.nl).
+ *
+ * Revision 1.1  92/05/22  11:48:46  ilh
+ * initial version
+ *
+ * Ported to Microsoft C/C++ Compiler and MS-DOS operating system by
+ * Kai-Uwe Herbing (herbing@netmbx.netmbx.de) on June 12, 1992. Code
+ * specific to the MS-DOS version is encapsulated with #ifdef _MSDOS
+ * ... #endif, where _MSDOS is an identifier, which is automatically
+ * defined, if you compile with the Microsoft C/C++ Compiler.
+ *
+ */
+
+#ifndef lint
+static char copyright[] =
+  "@(#) Copyright (c) 1992 by I. Lee Hetherington, all rights reserved.";
+#ifdef _MSDOS
+static char portnotice[] =
+  "@(#) Ported to MS-DOS by Kai-Uwe Herbing (herbing@netmbx.netmbx.de).";
+#endif
+#endif
+
+/* Note: this is ANSI C. */
+
+#ifdef _MSDOS
+  #include <fcntl.h>
+  #include <getopt.h>
+  #include <io.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <limits.h>
+
+#ifdef WINDOWS
+#	ifdef STANDALONE
+#		define WINDOWS_FUNCTIONS
+#		include "windows.h"
+#	endif
+#endif
+
+/* int32 must be at least 32-bit and uint16 must be at least 16-bit */
+#if INT_MAX >= 0x7FFFFFFFUL
+typedef int int32;
+#else
+typedef long int32;
+#endif
+#if USHRT_MAX >= 0xFFFFUL
+typedef unsigned short uint16;
+#else
+typedef unsigned int uint16;
+#endif
+
+#define LINESIZE 256
+
+#define MAXBLOCKLEN ((1L<<17)-6)
+#define MINBLOCKLEN ((1L<<8)-6)
+
+#define MARKER   128
+#define ASCII    1
+#define BINARY   2
+#define DONE     3
+
+typedef unsigned char byte;
+
+/* must be visible from outside */
+FILE *ifp;
+FILE *ofp;
+
+/* flags */
+static int pfb = 0;
+static int active = 0;
+static int start_charstring = 0;
+static int in_eexec = 0;
+
+static char line[LINESIZE];
+
+/* lenIV and charstring start command */
+static int lenIV = 4;
+static char cs_start[10];
+
+/* for charstring buffering */
+static byte charstring_buf[65535];
+static byte *charstring_bp;
+
+/* for PFB block buffering */
+static byte blockbuf[MAXBLOCKLEN];
+static int32 blocklen = MAXBLOCKLEN;
+static int32 blockpos = -1;
+static int blocktyp = ASCII;
+
+/* decryption stuff */
+static uint16 er, cr;
+static uint16 c1 = 52845, c2 = 22719;
+
+/* table of charstring commands */
+static struct command {
+  char *name;
+  int one, two;
+} command_table[] = {
+  { "callothersubr", 12, 16 },
+  { "callsubr", 10, -1 },
+  { "closepath", 9, -1 },
+  { "div", 12, 12 },
+  { "dotsection", 12, 0 },
+  { "endchar", 14, -1 },
+  { "hlineto", 6, -1 },
+  { "hmoveto", 22, -1 },
+  { "hsbw", 13, -1 },
+  { "hstem", 1, -1 },
+  { "hstem3", 12, 2 },
+  { "hvcurveto", 31, -1 },
+  { "pop", 12, 17 },
+  { "return", 11, -1 },
+  { "rlineto", 5, -1 },
+  { "rmoveto", 21, -1 },
+  { "rrcurveto", 8, -1 },
+  { "sbw", 12, 7 },
+  { "seac", 12, 6 },
+  { "setcurrentpoint", 12, 33 },
+  { "vhcurveto", 30, -1 },
+  { "vlineto", 7, -1 },
+  { "vmoveto", 4, -1 },
+  { "vstem", 3, -1 },
+  { "vstem3", 12, 1 },
+};                                                /* alphabetical */
+
+/* Two separate encryption functions because eexec and charstring encryption
+   must proceed in parallel. */
+
+static byte eencrypt(byte plain)
+{
+  byte cipher;
+
+  cipher = (byte) (plain ^ (er >> 8));
+  er = (uint16) ((cipher + er) * c1 + c2);
+  return cipher;
+}
+
+static byte cencrypt(byte plain)
+{
+  byte cipher;
+
+  cipher = (byte) (plain ^ (cr >> 8));
+  cr = (uint16) ((cipher + cr) * c1 + c2);
+  return cipher;
+}
+
+/* This function flushes a buffered PFB block. */
+
+static void output_block()
+{
+  int32 i;
+
+  /* output four-byte block length */
+  fputc((int) (blockpos & 0xff), ofp);
+  fputc((int) ((blockpos >> 8) & 0xff), ofp);
+  fputc((int) ((blockpos >> 16) & 0xff), ofp);
+  fputc((int) ((blockpos >> 24) & 0xff), ofp);
+
+  /* output block data */
+  for (i = 0; i < blockpos; i++)
+    fputc(blockbuf[i], ofp);
+
+  /* mark block buffer empty and uninitialized */
+  blockpos =  -1;
+}
+
+/* This function outputs a single byte.  If output is in PFB format then output
+   is buffered through blockbuf[].  If output is in PFA format, then output
+   will be hexadecimal if in_eexec is set, ASCII otherwise. */
+
+static void output_byte(byte b)
+{
+  static char *hexchar = "0123456789ABCDEF";
+  static int hexcol = 0;
+
+  if (pfb) {
+    /* PFB */
+    if (blockpos < 0) {
+      fputc(MARKER, ofp);
+      fputc(blocktyp, ofp);
+      blockpos = 0;
+    }
+    blockbuf[blockpos++] = b;
+    if (blockpos == blocklen)
+      output_block();
+  } else {
+    /* PFA */
+    if (in_eexec) {
+      /* trim hexadecimal lines to 64 columns */
+      if (hexcol >= 64) {
+        fputc('\n', ofp);
+        hexcol = 0;
+      }
+      fputc(hexchar[(b >> 4) & 0xf], ofp);
+      fputc(hexchar[b & 0xf], ofp);
+      hexcol += 2;
+    } else {
+      fputc(b, ofp);
+    }
+  }
+}
+
+/* This function outputs a byte through possible eexec encryption. */
+
+static void eexec_byte(byte b)
+{
+  if (in_eexec)
+    output_byte(eencrypt(b));
+  else
+    output_byte(b);
+}
+
+/* This function outputs a null-terminated string through possible eexec
+   encryption. */
+
+static void eexec_string(char *string)
+{
+  while (*string)
+    eexec_byte((byte) *string++);
+}
+
+/* This function gets ready for the eexec-encrypted data.  If output is in
+   PFB format then flush current ASCII block and get ready for binary block.
+   We start encryption with four random (zero) bytes. */
+
+static void eexec_start()
+{
+  eexec_string(line);
+  if (pfb) {
+    output_block();
+    blocktyp = BINARY;
+  }
+
+  in_eexec = 1;
+  er = 55665;
+  eexec_byte(0);
+  eexec_byte(0);
+  eexec_byte(0);
+  eexec_byte(0);
+}
+
+/* This function wraps-up the eexec-encrypted data.
+   If output is in PFB format then this entails flushing binary block and
+   starting an ASCII block. */
+
+static void eexec_end()
+{
+  int i, j;
+
+  if (pfb) {
+    output_block();
+    blocktyp = ASCII;
+  } else {
+    fputc('\n', ofp);
+  }
+  in_eexec = 0;
+  for (i = 0; i < 8; i++) {
+    for (j = 0; j < 64; j++)
+      eexec_byte('0');
+    eexec_byte('\n');
+  }
+#if 0
+  eexec_string("cleartomark\n");
+#endif
+}
+
+/* This function writes ASCII trailer.
+   If output is in PFB format then this entails flushing binary block and
+   starting an ASCII block. */
+
+static void file_end()
+{
+  if (pfb) {
+    output_block();
+    fputc(MARKER, ofp);
+    fputc(DONE, ofp);
+  }
+}
+/* This function returns an input line of characters.  A line is terminated by
+   length (including terminating null) greater than LINESIZE, a newline \n, or
+   when active (looking for charstrings) by '{'.  When terminated by a newline
+   the newline is put into line[].  When terminated by '{', the '{' is not put
+   into line[], and the flag start_charstring is set to 1. */
+
+static void t1asm_getline()
+{
+  int c;
+  char *p = line;
+  int comment = 0;
+
+  start_charstring = 0;
+  while (p < line + LINESIZE) {
+    c = fgetc(ifp);
+    if (c == EOF)
+      break;
+    if (c == '%')
+      comment = 1;
+    if (active && !comment && c == '{') {
+      start_charstring = 1;
+      break;
+    }
+    *p++ = (char) c;
+    if (c == '\n')
+      break;
+  }
+  *p = '\0';
+}
+
+/* This function is used by the binary search, bsearch(), for command names in
+   the command table. */
+
+static int command_compare(const void *key, const void *item)
+{
+  return strcmp((char *) key, ((struct command *) item)->name);
+}
+
+/* This function returns 1 if the string is an integer and 0 otherwise. */
+
+static int is_integer(char *string)
+{
+  if (isdigit(string[0]) || string[0] == '-' || string[0] == '+') {
+    while (*++string && isdigit(*string))
+      ;                                           /* deliberately empty */
+    if (!*string)
+      return 1;
+  }
+  return 0;
+}
+
+/* This function initializes charstring encryption.  Note that this is called
+   at the beginning of every charstring. */
+
+static void charstring_start()
+{
+  int i;
+
+  charstring_bp = charstring_buf;
+  cr = 4330;
+  for (i = 0; i < lenIV; i++)
+    *charstring_bp++ = cencrypt((byte) 0);
+}
+
+/* This function encrypts and buffers a single byte of charstring data. */
+
+static void charstring_byte(int v)
+{
+  byte b = (byte) (v & 0xff);
+
+  if (charstring_bp - charstring_buf > sizeof(charstring_buf)) {
+    fprintf(stderr, "error: charstring_buf full (%d bytes)\n",
+            sizeof(charstring_buf));
+    exit(1);
+  }
+  *charstring_bp++ = cencrypt(b);
+}
+
+/* This function outputs buffered, encrypted charstring data through possible
+   eexec encryption. */
+
+static void charstring_end()
+{
+  byte *bp;
+
+  sprintf(line, "%d ", charstring_bp - charstring_buf);
+  eexec_string(line);
+  sprintf(line, "%s ", cs_start);
+  eexec_string(line);
+  for (bp = charstring_buf; bp < charstring_bp; bp++)
+    eexec_byte(*bp);
+}
+
+/* This function generates the charstring representation of an integer. */
+
+static void charstring_int(int num)
+{
+  int x;
+
+  if (num >= -107 && num <= 107) {
+    charstring_byte(num + 139);
+  } else if (num >= 108 && num <= 1131) {
+    x = num - 108;
+    charstring_byte(x / 256 + 247);
+    charstring_byte(x % 256);
+  } else if (num >= -1131 && num <= -108) {
+    x = abs(num) - 108;
+    charstring_byte(x / 256 + 251);
+    charstring_byte(x % 256);
+  } else if (num >= (-2147483647-1) && num <= 2147483647) {
+    charstring_byte(255);
+    charstring_byte(num >> 24);
+    charstring_byte(num >> 16);
+    charstring_byte(num >> 8);
+    charstring_byte(num);
+  } else {
+    fprintf(stderr,
+            "error: cannot format the integer %d, too large\n", num);
+    exit(1);
+  }
+}
+
+/* This function parses an entire charstring into integers and commands,
+   outputting bytes through the charstring buffer. */
+
+static void parse_charstring()
+{
+  struct command *cp;
+
+  charstring_start();
+  while (fscanf(ifp, "%s", line) == 1) {
+    if (line[0] == '%') {
+      /* eat comment to end of line */
+      while (fgetc(ifp) != '\n' && !feof(ifp))
+        ;                                         /* deliberately empty */
+      continue;
+    }
+    if (line[0] == '}')
+      break;
+    if (is_integer(line)) {
+      charstring_int(atoi(line));
+    } else {
+      cp = (struct command *)
+        bsearch((void *) line, (void *) command_table,
+                sizeof(command_table) / sizeof(struct command),
+                sizeof(struct command),
+                command_compare);
+      if (cp) {
+        charstring_byte(cp->one);
+        if (cp->two >= 0)
+          charstring_byte(cp->two);
+      } else {
+        fprintf(stderr, "error: cannot use `%s' in charstring\n",line);
+        exit(1);
+      }
+    }
+  }
+  charstring_end();
+}
+
+static void usage()
+{
+  fprintf(stderr,
+          "usage: t1asm [-b] [-l block-length] [input [output]]\n");
+  fprintf(stderr,
+          "\n-b means output in PFB format, otherwise PFA format.\n");
+  fprintf(stderr,
+          "The block length applies to the length of blocks in the\n");
+  fprintf(stderr,
+          "PFB output file; the default is to use the largest possible.\n");
+  exit(1);
+}
+
+static void print_banner()
+{
+  static char rcs_revision[] = ""; /* removed RCS */
+  static char revision[20];
+
+  if (sscanf(rcs_revision, "$Revision: %19s", revision) != 1)
+    revision[0] = '\0';
+  fprintf(stderr, "This is t1asm %s.\n", revision);
+}
+
+#ifdef STANDALONE
+int main(int argc, char **argv)
+{
+  char *p, *q, *r;
+  int c;
+
+  extern char *optarg;
+  extern int optind;
+
+  ifp = stdin;
+  ofp = stdout;
+
+  print_banner();
+
+  /* interpret command line arguments using getopt */
+  while ((c = getopt(argc, argv, "bl:")) != -1)
+    switch (c) {
+    case 'b':
+      pfb = 1;
+      break;
+    case 'l':
+      blocklen = atoi(optarg);
+      if (blocklen < MINBLOCKLEN) {
+        blocklen = MINBLOCKLEN;
+        fprintf(stderr,
+                "warning: using minimum block length of %d\n",
+                blocklen);
+      } else if (blocklen > MAXBLOCKLEN) {
+        blocklen = MAXBLOCKLEN;
+        fprintf(stderr,
+                "warning: using maximum block length of %d\n",
+                blocklen);
+      }
+      break;
+    default:
+      usage();
+      break;
+    }
+  if (argc - optind > 2)
+    usage();
+
+  /* possibly open input & output files */
+  if (argc - optind >= 1) {
+    ifp = fopen(argv[optind], "r");
+    if (!ifp) {
+      fprintf(stderr, "error: cannot open %s for reading\n", argv[1]);
+      exit(1);
+    }
+  }
+  if (argc - optind >= 2) {
+    ofp = fopen(argv[optind + 1], "w");
+    if (!ofp) {
+      fprintf(stderr, "error: cannot open %s for writing\n", argv[2]);
+      exit(1);
+    }
+  }
+
+#else
+int runt1asm(int pfbflag)
+{
+  char *p, *q, *r;
+
+  pfb = pfbflag;
+#endif
+
+  #ifdef _MSDOS
+    /* If we are processing a PFB (binary) output */
+    /* file, we must set its file mode to binary. */
+    if (pfb)
+      _setmode(_fileno(ofp), _O_BINARY);
+  #endif
+
+  /* Finally, we loop until no more input.  Some special things to look for
+     are the `currentfile eexec' line, the beginning of the `/Subrs'
+     definition, the definition of `/lenIV', and the definition of the
+     charstring start command which has `...string currentfile...' in it. */
+
+  while (!feof(ifp) && !ferror(ifp)) {
+    t1asm_getline();
+    if (strcmp(line, "currentfile eexec\n") == 0) {
+      eexec_start();
+      continue;
+    } else if (strstr(line, "/Subrs") && isspace(line[6])) {
+      active = 1;
+    } else if ((p = strstr(line, "/lenIV"))) {
+      sscanf(p, "%*s %d", &lenIV);
+    } else if ((p = strstr(line, "string currentfile"))) {
+      /* locate the name of the charstring start command */
+      *p = '\0';                                  /* damage line[] */
+      q = strrchr(line, '/');
+      if (q) {
+        r = cs_start;
+        ++q;
+        while (!isspace(*q) && *q != '{')
+          *r++ = *q++;
+        *r = '\0';
+      }
+      *p = 's';                                   /* repair line[] */
+    }
+    /* output line data */
+    eexec_string(line);
+	if ((p = strstr(line, "currentfile closefile"))) {
+		eexec_end();
+	}
+    if (start_charstring) {
+      if (!cs_start[0]) {
+        fprintf(stderr, "error: couldn't find charstring start command\n");
+        exit(1);
+      }
+      parse_charstring();
+    }
+  }
+  file_end();
+
+  fclose(ifp);
+  fclose(ofp);
+
+  return 0;
+}
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/CHANGES.html
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/CHANGES.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/CHANGES.html	(revision 2000)
@@ -0,0 +1,815 @@
+<HTML>
+<HEAD>
+<TITLE>
+TTF2PT1 -  CHANGES history
+</TITLE>
+</HEAD>
+<BODY>
+<H2>
+TTF2PT1 -  CHANGES history
+</H2>
+
+<! 
+(Do not edit this file, it is generated from CHANGES.html!!!)
+>
+
+<H4>
+3.4.4 -- December 31, 2003
+</H4>
+<!
+-------
+>
+
+<b>New features:</b>
+<ul>
+<li> Improved the auto-vectoring (-OV) alrogithm.
+<li> Allow use of any encoding table of format 4 in the ttf parser.
+<li> Take the first available format 4 encoding table if no known
+  table is found in the ttf parser.
+<li> The ttf parser lists the available encodings if no supported
+  encoding table is found. This can be used to list the encodings in
+  any font by specifying a bogus explicit PID/EID, such as
+  with option <b>-l plane+pid=50,eid=50</b>.
+</ul>
+
+<b>Bug fixes:</b>
+<ul>
+<li> Fix to build all the features on Windows MS C++, by Tomoo Amano.
+<li> Fix for a null pointer in the encodings, bad inner loop variable.
+<li> Unified the parsing of font name strings and improved the checks 
+  against invalid characters.
+</ul>
+
+<H4>
+3.4.3 -- December 2, 2002
+</H4>
+<!
+-------
+>
+
+<b>New features:</b>
+<ul>
+<li> <tt>scripts/forceiso</tt> got an optional argument to select the
+  format of the names for glyphs without standard Latin-1 names.
+</ul>
+
+<b>Bug fixes:</b>
+<ul>
+<li> Changed the glyph names in scripts/forceiso to match those in ttf2pt1.
+<li> Included the missing directory app/TeX.
+</ul>
+
+<H4>
+3.4.2 -- August 30, 2002
+</H4>
+<!
+-------
+>
+
+<b>New features:</b>
+<ul>
+<li> New map for T2A_compat encoding (for Cyrillic LaTeX) by Mikhail
+  Umorin.
+<li> Scripts supporting font conversion for CJK-LaTeX, by Mike Fabian
+  from SuSE.
+</ul>
+
+<b>Bug fixes:</b>
+<ul>
+<li> Explicit owner/group/permissions are used to install directories.
+<li> In scripts/convert fixed the addition of encoding name to the font 
+  name for the external encoding maps, was missing "/" at the start.
+<li> Fixed the divergence between two copies of UniqueID.
+<li> Fixed the recovery after defective empty contours.
+</ul>
+
+<H4>
+3.4.1 -- June 13, 2002
+</H4>
+<!
+-------
+>
+
+<b>New features:</b>
+<ul>
+<li> Added Autotrace support for the bitmap fonts (-OZ). It's horrible.
+<li> Added vectorization of bitmap fonts (-OV) - functionally the same thing as 
+  autotrace but home-grown. Works mostly decently but still with large
+  space for impprovement.
+<li> Relaxed the conditions for warnings about long glyphs.
+</ul>
+
+<b>Bug fixes:</b>
+<ul>
+<li> Fix by Rob Kolstad for a crash in the new outline smoothing
+  code (on small thin contours) and diagnostic for another crash.
+<li> Fix by Holger Huesing for a crash on degenerate contours.
+<li> Fix for bitmaps of zero dimensions.
+<li> The BDF reader does not fail on redefintion of the properties.
+<li> Fix for reading of BDF glyphs with 0 size.
+<li> Fix for a hang when guessing the boldness of some fonts.
+<li> Fix by Adriano Konzen for scaling coefficients in composite glyphs.
+</ul>
+
+<H4>
+3.4.0 -- November 24, 2001
+</H4>
+<!
+-------
+>
+
+<b>New features:</b>
+<ul>
+<li> Parser for the BDF bitmap fonts.
+<li> Vastly improved the smoothing of the outlines.
+<li> The options are saved as a comment in the output file.
+<li> New script <tt>other/showdf</tt> for visual comparison of the fonts.
+<li> New option <b>-G</b> to select the file types to generate.
+<li> Creation of the dvips encoding files (by Rigel).
+<li> More glyphs in the Chinese maps (by Rigel).
+<li> Made the assignment of ISO8859/1 glyph names to the glyphs in the
+  fonts without PostScript names in them dependent on the original
+  encoding: no change for the 8-bit encodings, for the Unicode encoding
+  the names are assigned to the glyph with the codes 0-255 in Unicode,
+  and for the other 16-bit encodings the 8859/1 names are not assigned
+  at all.
+</ul>
+
+<b>Bug fixes:</b>
+<ul>
+<li> Added a check for spaces in the PostScript font name in the FreeType
+  parser.
+<li> Made "-" a valid character in the glyph names.
+<li> Fixed handling of the Unicode names returned by FreeType, though
+  not perfectly.
+<li> Changed the build for FreeType-2.0.4.
+<li> Fixed the handling and printing of bad glyph names.
+<li> Fixed the bug with duplicated glyph names when more than 256 glyphs are 
+  extracted from a font that has no PostScript glyph names defined.
+<li> Added ability to map a glyph to more than one code when unisng the
+  native parser (-pttf).
+</ul>
+
+<H4>
+3.3.5 -- September 12, 2001
+</H4>
+<!
+-------
+>
+
+Packaged by Sergey Babkin.
+<p>
+
+<b>Bug fixes:</b>
+<ul>
+<li> Fixed the scaling of Ascender and Descender in the AFM file.
+<li> Fixed the brekage of "-l adobestd".
+</ul>
+
+<H4>
+3.3.4 -- June 4, 2001
+</H4>
+<!
+-------
+>
+
+Packaged by Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Cyrillic (full set of glyphs) language tables (by Zvezdan Petkovic).
+  Now the languages "russian" and "bulgarian" are provided for compatibility
+  only, use the common language "cyrillic" instead.
+<li> More information in <a href="FONTS.html">FONTS</a> on using Cyrillic fonts with 
+  Netscape (by Zvezdan Petkovic)
+<li> In the Netscape print filter added removal of the clipping path command:
+  otherwise Netscape tends to cut off a large piece of the rightmost column
+  of the tables.
+<li> One more script for printing from Netscape (by Zvezdan Petkovic).
+<li> Added selection of the base TTF encoding by pid/eid in the external maps.
+<li> Improved the recognition of substituted stems for intersecting contours.
+<li> Improved the substituted hints to make the horizontal positioning of
+  the points at the same height more uniform at small pixel sizes.
+<li> Made the algorithm for calculation of standard stem widths more
+  selective.
+<li> Added link to the GnuWin32 project.
+</ul>
+
+<b>Bug fixes:</b>
+<ul>
+<li> TH: Print out metrics of un-encoded glyphs even without "-a" option.
+<li> Added missing "/" in Fontmap generation in convert (by Zvezdan Petkovic).
+<li> Removed unneccessary "\n" in messages in x2gs.
+<li> Removed the broken overoptimisation of "0 0 rmoveto".
+<li> Removed the useless warnings about multiple codes for a glyph.
+<li> Changed the FreeType2 include directory in the Makefile to match the
+  FreeType's default.
+</ul>
+
+<H4>
+3.3.3 -- March 4, 2001
+</H4>
+<!
+-------
+>
+
+Packaged by Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> TH: Added printing of front-end parser in the header of the font file.
+<li> Tested build with FreeType 2.0 Release.
+</ul>
+
+<b>Bug fixes:</b>
+<ul>
+<li> Changed the installation script which on some versions of bash
+  copied all files into the share directory.
+<li> Fixed the close sequences of html2man comments in the HTML files, 
+  now they should display correctly with <tt>lynx</tt>.
+<li> Restored the ability to include un-encoded characters into the
+  customised maps (those with codes over 255).
+<li> Fixed the Unicode mapping of the Cyrillic letters "YO" and  "yo" 
+  (by Yuri Shemanin).
+<li> Fixed the spurious aborts when the conversion-by-plane function
+  gets called for auto-guessing of encoding.
+</ul>
+
+<H4>
+3.3.2 -- November 20, 2000
+</H4>
+<!
+--------------------------
+>
+
+Packaged by Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Added generation of man pages.
+<li> Added "make install" and "make uninstall".
+<li> Added language option "-l plane".
+<li> In <tt>other/showg</tt> added better support of comparison files:
+<ul>
+  <li> printing of the comparison file legend;
+  <li> guessing of missing glyph names in a comparison file by code;
+  <li> bounding boxes of all comparison files are used for page layout.
+</ul>
+<li> Added ability to use external t1asm instead of compiling it in.
+<li> Renamed the fonts installation guide from INSTALL*html to FONTS*html
+  to avoid confusion with installation of ttf2pt1 itself.
+</ul>
+
+<b>Bug fixes:</b>
+<ul>
+<li> Removed erroneous extra fclose(pfa_file).
+<li> Fixed random memory corruption that manifested with crash on Linux
+  when converting fonts not containing glyph names.
+<li> Removed from the output file the comments that confused dvips. Changed 
+  <tt>other/showg</tt> to work without them.
+<li> In <tt>other/showg</tt> added better checks for missing glyphs, now it
+  gives warnings about them and the output file does not crash PostScript.
+</ul>
+
+<b>Other:</b>
+<ul>
+<li> <tt>ttf2pfa</tt> is no longer included, people interested in history 
+  should look for it in the older versions. 
+</ul>
+
+<H4>
+3.3.1 -- October 22, 2000
+</H4>
+<!
+-------------------------
+>
+
+Packaged by Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Added front-end parser based on the FreeType-2 library. See Makefile
+for build instructions.
+<li> Changed the handling of encodings to accomodate the FreeType model.
+<li> Further cleaned up the front-end parser interface.
+</ul>
+
+<b>Bug fixes:</b>
+<ul>
+<li> Fixed a bug that caused core dump on Alpha machines.
+<li> Fixed a bug in the outline smoothing that occasionally caused core dump.
+<li> Cleaned up warnings from picky compilers
+<li> Fixed more bugs in the Windows port (by Stefan Bauer).
+<li> Fixed the RPM spec file (suggested by Brian Armstrong).
+</ul>
+<p>
+
+<H4>
+3.3.0 -- September 22, 2000
+</H4>
+<!
+---------------------------
+>
+
+Packaged by Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Converted most of the outlines' processing to floating point
+arithmetic.
+<li> Added splitting of curves crossing the quadrant boundaries (no gross 
+damage is done any more to the Marvosym font and others like it).
+<li> Added modular interface for front-end font parsers and option to control
+their selection at run time.
+<li> Grouped the outline processing control options into one to reduce the
+options namespace pollution.
+<li> Thomas moved the Chinese maps into a separate module, chinese-maps.
+<li> Thomas added option -V to print version number. In addition, the version
+number is put in the header of the font file.
+<li> Added long option names (suggested by Thomas).
+<li> Added support for multi-level composite glyphs.
+<li> TH: Made &lt;fontname&gt; command-line argument optional; default to &lt;ttf-file&gt;
+with suffix replaced.
+<li> In <tt>other/showg</tt> added more ways to specify glyphs and the comparison option.
+</ul>
+
+<b>Bug fixes:</b>
+<ul>
+<li> Fixed the VC++ batch file, added batch file for Cygnus GCC on Windows.
+<li> Removed parentheses from the Version string in AFM files because it does
+not help StarOffice anyway. StarOffice 5.2 has been reported to have this
+bug fixed. Added paragraph on StarOffice in FONTS.html.
+<li> Made messages on the '?' option parameter more meaningful (by Johan Vromans).
+<li> Changed the latin1 encoding table to include the Euro sign, Z and z with
+caron (by Thomas Henlich).
+<li> Improved the smoothing code which occasionally had problems with
+joining curves. Also fixed a few minor bugs in it.
+</ul>
+
+<H4>
+3.22 -- May 23, 2000
+</H4>
+<!
+--------------------
+>
+
+Packaged by Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Included windows support by Frank Siegert (somewhat amended)
+<li> Added control over verbosity of warnings.
+<li> Added arguments and initialization functions to the language
+translation routines.
+<li> Added support of planes determined by arguments to the external
+maps.
+<li> Added compact external maps format (primarily for Eastern fonts).
+<li> Added external maps for Chinese GBK and Big5 encodings (converted
+from ttf2pfb) as well as maps for other Chinese encodings by Wang Lei.
+<li> Added the idea of buckets to speed up the search in external maps.
+<li> Changed the grouping algorithm for substituted hints: now it creates
+a bit bigger files but requires smaller hint stack when being rendered.
+<li> Added maximal limit of hint stack depth, glyphs requiring bigger 
+stack get generation of substituted hints disabled. This makes substituted 
+hints safe to use, no more lost glyphs due to hint stack overflow.
+<li> Added the font dump program <tt>other/dumpf</tt>.
+<li> Changed the testing HTML generator <tt>other/lst.pl</tt> to use tables.
+<li> Added debugging script <tt>other/cntstems.pl</tt> to count required hint
+stack depth for the glyphs.
+</ul>
+
+<b>Bug fixes:</b>
+<ul>
+<li> Fixed printing of UID in script/trans. Changed the auto-generated UID to
+be in range 4000000-4999999 which is reserved by Adobe for private use.
+<li> Fixed handling of "cleartomark" in built-in t1asm.
+<li> Added handling of "can't happen" case in straighten() routine
+which actually happened on strange fonts and caused failure on assertion.
+<li> Made it always include the glyph .notdef in the resulting font.
+<li> Placed the version string in AFM file in parentheses, hopefully
+that would fix the problem with StarOffice.
+<li> Improved the smoothing code which occasionally had problems with
+joining curves.
+</ul>
+
+<H4>
+3.21 -- March 1, 2000
+</H4>
+<!
+---------------------
+>
+
+Sergey Babkin: committed the changes by Petr Titera and
+my bugfixes.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> New Unicode map format with glyph names, by Petr Titera.
+<li> Option to force the Unicode encoding by Petr Titera
+ (I changed it to work on any MS encoding, not only Symbol).
+<li> Slightly tweaked the calculation of hints, should be better now.
+</ul>
+
+<b>Bug fixes:</b>
+<ul>
+<li> The unicode-sample.map with description of the map formats
+ was lost in the release process, restored and enhanced.
+<li> Renamed the table ISOLatin1Encoding to Fmt3Encoding to reflect
+ the way it is used. Saved the original one for reference
+ purposes. In the new table renamed "quoteright" to "quotesingle"
+ as Thomas Henlich suggested (and he were right).
+<li> In the ISOLatinEncoding table renamed the glyph "grave"
+ at octal 0140 to "quoteleft", "quotesingle" at octal 047 to
+ "quoteright" to conform to the standard as suggested by 
+ Martin Trautner).
+<li> Fixed bug in scripts/trans that corrupted the UniqueID record
+ in the translated fonts.
+<li> Fixed bug in interaction of substituted hints with BlueZones.
+ Now the fonts with hint substitution seem to be always at least
+ not worse than without it (well, when they fit in the X11
+ file size limit).
+</ul>
+
+
+<H4>
+3.2 -- January 15, 2000
+</H4>
+<!
+-----------------------
+>
+
+Sergey Babkin: combined my changes with the changes by
+Thomas Henlich. The result deserves a not-so-minor version
+increase.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Support of the external Unicode re-encoding maps
+  (by Thomas).
+<li> Support for inclusion of all the glyphs from the
+  source file into the resulting file (inspired by
+  Thomas but I re-implemented it to remove the limitation
+  of his implementation: not more than 1024 glyphs).
+<li> The hints substitution. It's an experimental feature
+  yet and needs further work.
+<li> Support for UniqueID and its auto-generation.
+<li> Support for the name-based conversions from Unicode
+  in general and the adobestd "language" in particular.
+<li> Started the split of the source code into multiple
+  files. This needs more work to do it in a cleaner
+  way.
+<li> Better framework for the debugging printout
+  in the converter.
+<li> Utilities to install the fonts in Netscape 
+  Navigator/Communicator 4.x.
+<li> Patches for bigger font files in the X11 rasterizer.
+<li> Linux RPM spec-file (by Johan Vromans).
+<li> Added the COPYRIGHT file (BSD-style, as we discussed
+  on the mailing list earlier) and the CHANGES file.
+<li> Creation of the <tt>.pfb</tt> files from the <tt>convert</tt>
+  script.
+<li> Changed the <tt>.notdef</tt>-s in the built-in
+  ISOLatin1Encoding table to some valid names (by Thomas).
+  Thomas also suggested replacing `<tt>quoteright</tt>' by
+  `<tt>quotesingle</tt>' but this seems to be against the
+  Adobe ISOLatin1 table.
+<li> New aliases <tt>windows-1251</tt> and <tt>cp-866</tt> for
+  the Russian encodings: those are expected by Netscape
+  navigator.
+<li> The font comparison program <tt>other/cmpf</tt>.
+<li> The "magnifying glass" program for glyph outlines:
+  <tt>other/showg</tt>.
+<li> Other updates of the tools in the `<tt>other</tt>' subdirectory.
+<li> Added a link to T1LIB in README.
+<li> A few new options in <tt>convert.cfg</tt>.
+</ul>
+
+<b>Bux fixes:</b>
+<ul>
+<li> A bug in the outline smoothing code that corrupted some
+  of the fonts (for example, Microsoft Verdana).
+<li> Added explicit `<tt>cleartomark</tt>' to the end of file,
+  this seems to be compatible with both old and new version
+  of <tt>t1asm</tt> (suggested by Thomas).
+<li> Added the <tt>FontEncoding</tt> statement to the AFM files
+  (techincally this was not a bug because this statement
+  is optional but some programs want it).
+<li> A coredump when the converter tried to print a warning
+  (rather ironically) about a weird glyph width.
+<li> Changed the underscores in the font names to dashes (this
+  has been proposed long time ago by Johan Vromans).
+<li> No more glyph names of font names staring with a digit.
+<li> The names of the fonts in font and AFM files are now the
+  same as in the generated Ghostscript <tt>Fontmap</tt> file.<br>
+  <b>Warning:</b> the names in <tt>Fontmap</tt> have been
+  changed.
+<li> The <tt>forceiso</tt> script does not corrupt the character
+  and kerning pairs counts any more, and is optional at all.
+<li> Fix for a loop going to 254 instead of 255 (by Thomas).
+<li> Added ':' in the font header (by Thomas).
+<li> A coredump when wrong language name is given (this was
+  also fixed by Thomas but I noticed it too late, after
+  I already fixed it by myself).
+<li> Fixed the links to the Adobe documents in README.
+</ul>
+
+
+<H4>
+3.13 -- October 18, 1999
+</H4>
+<!
+------------------------
+>
+
+Packaged by Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> New option -v for automatic re-scaling based on the vertical size of the font 
+<li> Changed the code to use getopt() instead of a home-made version of it.
+<li> Latin2 language support by Szalay Tamas. 
+</ul>
+
+<b>Bux fixes:</b>
+<ul>
+<li> Fix for the bug that made possible calls of malloc(0). 
+<li> Refinement of the option -w to prevent extra wide spacing 
+</ul>
+
+<H4>
+3.12 -- October 2, 1999
+</H4>
+<!
+-----------------------
+>
+
+Packaged by Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Added support for the Bulgarian language (actually, for now just an alias
+of Russian).                                                                    
+<li> Added option -w that tries to make sure that the character widths are not
+too narrow.                                                                     
+<li> Added the concept of aliased encodings.
+<li> Now the conversion scripts create and install the .afm files too.
+<li> The conversion script removes the intermediate files after installation.
+<li> Added tunables to the conversion script.
+<li> Installation of the Ghostscript fonts can now be done automatically
+together with the X11 fonts.
+</ul>
+
+<b>Bux fixes:</b>
+<ul>
+<li> (FINALLY!!!) A correct fix for the infamous Red Hat 6.0 stdio "feature".
+<li> A number of little bugs discovered by a picky SGI compiler (well, maybe
+some day I'll try to run it through the UnixWare lint and see what happens).    
+<li> A diagnostic message about the empty encodings in the convert script was
+made less cryptic and a bug in the awk sub-script was fixed.                    
+<li> The .afm creation code now considers the option -t. 
+</ul>
+
+<H4>
+3.11 -- May 24, 1999
+</H4>
+<!
+--------------------
+>
+
+Packaged by Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> It includes the Turkish (Latin5, ISO8859/9) 
+language support by Turgut Uyar and Baltic (ISO8859/4) languages support by
+Rihardas Hepas. 
+<li> Also the installation script got updated: the configuration parameters 
+are moved to a separate file and the generated fonts.dir files should now be
+compatible with Xfsft.
+</ul>
+
+<H4>
+3.1 -- March 28, 1999
+</H4>
+<!
+---------------------
+>
+
+Packaged by Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Improved the interaction of the character-level hints and font-level hints
+</ul>
+
+
+<H4>
+3.0 -- March 6, 1999
+</H4>
+<!
+--------------------
+>
+
+Packaged by Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Added HTML documents.
+</ul>
+
+<H4>
+3.0beta2 -- February 14, 1999
+</H4>
+<!
+-----------------------------
+>
+
+Packaged by Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Added ability to print the .afm file instead of the font to STDOUT.
+<li> Added the guessing of the /ForceBold parameter that proved to be useful.
+</ul>
+
+<b>Bux fixes:</b>
+<ul>
+<li> Removed the force-fixed option that proved to be troublesome.
+</ul>
+
+<H4>
+3.0beta1 -- December 11, 1998
+</H4>
+<!
+-----------------------------
+>
+
+By Andrew Weeks.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Added option (passed to t1asm) to create a compressed binary
+version of the font (A PFB file).
+</ul>
+
+<b>Bux fixes:</b>
+<ul>
+<li> Versions of handle_post and handle_cmap that deal with some
+problems with buggy fonts.
+<li> Minor Bug Fixes.
+</ul>
+
+<H4>
+3.0beta-afm -- December 5, 1998
+</H4>
+<!
+-------------------------------
+>
+
+By Thomas Henlich.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Integration of AFM file creation.
+</ul>
+
+<H4>
+3.0beta -- November 15, 1998
+</H4>
+<!
+----------------------------
+>
+
+By Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Added the auto-calculation of the italic angle.
+</ul>
+
+<b>Bux fixes:</b>
+<ul>
+<li> Fixed a couple of bugs.
+</ul>
+
+<H4>
+3.0alpha -- October 19, 1998
+</H4>
+<!
+----------------------------
+>
+
+By Sergey Babkin.
+<p>
+
+<b>New features:</b>
+<ul>
+<li> Improved (although still not perfect) handling of
+scaling in composite glyphs
+<li> Automatic correction of outlines to make them more
+smooth (to correct both rounding errors introduced
+during conversion and present in the original font)
+<li> Automatic generation of hints (still has lots of
+space for improvement)
+<li> Automatic generation of BlueValues etc.
+</ul>
+
+<b>Bux fixes:</b>
+<ul>
+<li> Scaling of fonts to 1000x1000 M-square required by
+Type1 standard
+<li> Printing out the contours in reverse direction, because
+TTF directions are different from Type1 ones (that was
+the major reason why the fonts generated by
+version 2.2 were rendered so badly in small sizes)
+</ul>
+
+<H4>
+June 22, 1998 (AKA 2.2)
+</H4>
+<!
+-------------
+>
+
+By Thomas Henlich.
+<p>
+
+<b>Bux fixes:</b>
+<ul>
+<li> "width" should be "short int" because otherwise:
+characters with negative widths (e.g. -4) become *very* wide (65532)
+<li> The number of /CharStrings is numglyphs and not numglyphs+1
+</ul>
+
+<H4>
+February 13, 1998
+</H4>
+<!
+-----------------
+>
+
+By Mark Heath.
+<p>
+
+<b>Bux fixes:</b>
+<ul>
+<li> An original Bug Reported by Frank, which was just incorrect syntax in the 
+Type 1 header, managed to creep back into the Feb 04 Version. This has been
+Fixed in the Feb 13 Version.
+</ul>
+
+<H4>
+February 4, 1998
+</H4>
+<!
+----------------
+>
+
+By Mark Heath.
+<p>
+
+<b>Bux fixes:</b>
+<ul>
+<li> A workaround was implemented in ttf2pfa by altering the matrix. I suspect 
+I will have to calculate the correct values, as matrix ops are probably not
+allowed in Type 1 format.
+</ul>
+
+<!
+---------------------------------------------
+>
+<H4>
+The older history seems to be lost.
+</H4>
+
+<I>
+(S.B.: The story how we got the version numbers is rather funny. Initially
+there were no version umbers, the releases were marked by dates. The version
+from June 22 1998 untarred itself into a directory "<tt>ttf2pt1-22</tt>". When I
+made my changes to it I assumed that this was the version number meaning
+version 2.2. Since Mark asked me to send him a complete archive I supposed 
+that I have to bump the version number. And I bumped it to 3.0 because the
+changes were rather extensive. Mark silently agreed and released the new
+version as 3.0. And that's the end of the story about how we got this
+Microsoft-like high version number.)
+</I>
+
+</BODY>
+</HTML>
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/cygbuild.sh
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/cygbuild.sh	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/cygbuild.sh	(revision 2000)
@@ -0,0 +1,8 @@
+:
+# this file should be run from Cygnus BASH
+# file to build ttf2pt1 with Cygnus GCC on Windows
+# don't forget to copy CYGWIN1.DLL into C:\WINDOWS
+
+gcc -o ttf2pt1 -DWINDOWS ttf2pt1.c pt1.c t1asm.c ttf.c -lm
+gcc -o t1asm -DWINDOWS -DSTANDALONE t1asm.c
+
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/version.h
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/version.h	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/version.h	(revision 2000)
@@ -0,0 +1,7 @@
+/*
+ * see COPYRIGHT
+ */
+
+
+/* version number */
+#define TTF2PT1_VERSION "3.4.4"
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/FONTS.hpux
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/FONTS.hpux	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/FONTS.hpux	(revision 2000)
@@ -0,0 +1,107 @@
+Sergey A. Babkin
+<babkin@bellatlantic.net> or <sab123@hotmail.com>
+(Do not edit this file, it is generated from FONTS.hpux.html!!!)
+
+How to install new Type1 fonts on an HP-UX 10.20 machine
+--------------------------------------------------------
+
+1. Add the font files to /usr/lib/X11/fonts/type1.st/typefaces.
+
+2. Add the font descriptions to 
+/usr/lib/X11/fonts/type1.st/typefaces/fonts.scale. Run `mkfontdir'
+in /usr/lib/X11/fonts/type1.st/typefaces. In the descriptions
+you have to specify the font manufacturer as `misc', like:
+
+  -misc-courier-...
+
+3. Copy /usr/lib/X11/fonts/type1.st/typefaces/fonts.dir to
+/usr/lib/X11/fonts/type1.st/licenses/STSYSTEM/DISPLAYS/fonts.dir.
+Better yet, create a symbolic link.
+
+4. For each font encoding you are going to use create a description
+file in /usr/lib/X11/fonts/stadmin/type1/charsets. Of course, if you
+are going to use the same fonts in several encodings, the best way
+would be to create fair descriptions of charsets and really store
+only one encoding in typefaces, all the others will be produced
+automatically. That's not difficult at all. 
+But the simplest way is to just copy the file cp.iso8859-1
+to cp.<your-encoding-name>, like cp.koi8-r.
+
+5. Restart you X server and/or font server.
+
+What if you don't have the `root' privileges ?
+----------------------------------------------
+
+You still can run the font server and configure your X server
+to get the fonts from it. 
+
+Further let's suppose that the name on which you are going
+to run the font server is named `somehost'. Login to it
+and configure the font server.
+
+First, choose some unused port. Numbers around 9000 are a good
+choice. Verify that this port is not used by somebody else
+by entering
+
+	netstat -naf inet |grep 9000
+
+and look what happens. If you get nothing, that's good, this
+port is unused. If you get some lines of data, try abother port.
+
+Go to you home directory $HOME and create some directory for
+your font server, say, $HOME/fs. Copy the directory structure
+of /usr/lib/X11/fonts/type1.st into $HOME/fs, so that in result
+you get $HOME/fs/type1.st/<whatever was there>. Copy the directory 
+structure of /usr/lib/X11/fonts/stadmin/type1/charsets into $HOME/fs, 
+so that in result you get $HOME/fs/charsets/<whatever was there>.
+Install the new fonts in these directorues as described above.
+
+Then create the fontserver configuration file, say, $HOME/fs/xfs.cfg.
+The sample contents (supposing that my $HOME is equal to /home/babkin) 
+is:
+
+--------------8<----------- cut here -----------------------------
+# font server configuration file                                    
+# $XConsortium: config.cpp,v 1.7 91/08/22 11:39:59 rws Exp $        
+                                                                    
+rasterizers = /usr/lib/X11/fs/ufstrast.sl,/usr/lib/X11/fs/iforast.sl
+                                                                    
+clone-self = off                                                    
+use-syslog = off                                                    
+catalogue = /home/babkin/fs/type1.st              
+# in decipoints                                                     
+default-point-size = 120                                            
+default-resolutions = 100,100,75,75
+port=9000                                                           
+error-file=/home/babkin/fs/fs.err                 
+--------------8<----------- cut here -----------------------------
+
+Then create the script to start your font server, say, $HOME/fs/runme:
+
+--------------8<----------- cut here -----------------------------
+TYPE1_CODEPAGE_DIR=$HOME/fs/charsets                                         
+export TYPE1_CODEPAGE_DIR                                                 
+kill `ps -ef | grep $HOME/\[f\]s/xfs.cfg | awk '{print $2}'`; 
+nohup xfs -config $HOME/fs/xfs.cfg &
+--------------8<----------- cut here -----------------------------
+
+Don't forget to make $HOME/fs/runme executable. Then you can
+execute it manually or from you .profile.
+
+After you get your font server running, just execute the following
+command (with proper host name and port number) in your X session
+
+	xset fp+ tcp/somehost:9000
+
+to get the access to your private font server. You can add this
+information to the configuration data of your X server or just
+put it also into your .profile. In the latter case the best way
+to do that would be like:
+
+--------------8<----------- cut here -----------------------------
+...
+$HOME/fs/runme
+sleep 2 # give it some time to start
+xset fp+ tcp/somehost:9000
+...
+--------------8<----------- cut here -----------------------------
Index: /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/bdf.c
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/bdf.c	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/bdf.c	(revision 2000)
@@ -0,0 +1,661 @@
+/*
+ * The font parser for the BDF files
+ *
+ * Copyright (c) 2001 by the TTF2PT1 project
+ * Copyright (c) 2001 by Sergey Babkin
+ *
+ * see COPYRIGHT for the full copyright notice
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include "pt1.h"
+#include "global.h"
+
+/* prototypes of call entries */
+static void openfont(char *fname, char *arg);
+static void closefont( void);
+static int getnglyphs ( void);
+static int glnames( GLYPH *glyph_list);
+static void readglyphs( GLYPH *glyph_list);
+static int glenc( GLYPH *glyph_list, int *encoding, int *unimap);
+static void fnmetrics( struct font_metrics *fm);
+static void glpath( int glyphno, GLYPH *glyph_list);
+static void kerning( GLYPH *glyph_list);
+
+/* globals */
+
+/* front-end descriptor */
+struct frontsw bdf_sw = {
+	/*name*/       "bdf",
+	/*descr*/      "BDF bitmapped fonts",
+	/*suffix*/     { "bdf" },
+	/*open*/       openfont,
+	/*close*/      closefont,
+	/*nglyphs*/    getnglyphs,
+	/*glnames*/    glnames,
+	/*glmetrics*/  readglyphs,
+	/*glenc*/      glenc,
+	/*fnmetrics*/  fnmetrics,
+	/*glpath*/     glpath,
+	/*kerning*/    kerning,
+};
+
+/* statics */
+
+#define MAXLINE	10240 /* maximal line length in the input file */
+
+static int lineno; /* line number */
+
+#define GETLEN(s)	s, (sizeof(s)-1)
+#define LENCMP(str, txt)	strncmp(str, txt, sizeof(txt)-1)
+
+static FILE *bdf_file;
+static int nglyphs;
+static struct font_metrics fmet;
+
+/* many BDF fonts are of small pixel size, so we better try
+ * to scale them by an integer to keep the dimensions in
+ * whole pixels. However if the size is too big and a non-
+ * integer scaling is needed, we use the standard ttf2pt1's
+ * scaling abilities.
+ */
+static int pixel_size;
+static int scale;
+static int scale_external;
+
+static char *slant;
+static char xlfdname[201];
+static char *spacing;
+static char *charset_reg;
+static char *charset_enc;
+static char *fnwidth;
+static int is_unicode = 0;
+
+/* tempoary storage for returning data to ttf2pt1 later on request */
+static int maxenc = 0;
+static int *fontenc;
+static GENTRY **glpaths;
+
+static int got_glyphs = 0;
+static GLYPH *glyphs;
+static int curgl;
+
+static int readfile(FILE *f, int (*strfunc)(int len, char *str));
+
+/*
+ * Read the file and parse each string with strfunc(),
+ * until strfunc() returns !=0 or the end of file happens.
+ * Returns -1 on EOF or strfunc() returning <0, else 0
+ */
+
+static int
+readfile(
+	FILE *f,
+	int (*strfunc)(int len, char *str)
+)
+{
+	static char str[MAXLINE]; /* input line, maybe should be dynamic ? */
+	char *s;
+	int len, c, res;
+
+	len=0;
+	while(( c=getc(f) )!=EOF) {
+		if(c=='\n') {
+			str[len]=0;
+
+			res = strfunc(len, str);
+			lineno++;
+			if(res<0)
+				return -1;
+			else if(res!=0)
+				return 0;
+
+			len=0;
+		} else if(len<MAXLINE-1) {
+			if(c!='\r')
+				str[len++]=c;
+		} else {
+			fprintf(stderr, "**** bdf: line %d is too long (>%d)\n", lineno, MAXLINE-1);
+			exit(1);
+		}
+	}
+	return -1; /* EOF */
+}
+
+/*
+ * Parse the header of the font file. 
+ * Stop after the line CHARS is encountered. Ignore the unknown lines.
+ */
+
+struct line {
+	char *name; /* property name with trailing space */
+	int namelen; /* length of the name string */
+	enum {
+		ALLOW_REPEAT = 0x01, /* this property may be repeated in multiple lines */
+		IS_SEEN = 0x02, /* this property has been seen already */
+		MUST_SEE = 0x04, /* this property must be seen */
+		IS_LAST = 0x08 /* this is the last property to be read */
+	} flags;
+	char *fmt; /* format string for the arguments, NULL means a string arg */
+	int nvals; /* number of values to be read by sscanf */
+	void *vp[4]; /* pointers to values to be read */
+};
+		
+static struct line header[] = {
+	{ GETLEN("FONT "), 0, " %200s", 1, {&xlfdname} },
+	{ GETLEN("SIZE "), MUST_SEE, " %d", 1, {&pixel_size} },
+	{ GETLEN("FONTBOUNDINGBOX "), MUST_SEE, " %hd %hd %hd %hd", 4, 
+		{&fmet.bbox[2], &fmet.bbox[3], &fmet.bbox[0], &fmet.bbox[1]} },
+	{ GETLEN("FAMILY_NAME "), MUST_SEE, NULL, 1, {&fmet.name_family} },
+	{ GETLEN("WEIGHT_NAME "), MUST_SEE, NULL, 1, {&fmet.name_style} },
+	{ GETLEN("COPYRIGHT "), 0, NULL, 1, {&fmet.name_copyright} },
+	{ GETLEN("SLANT "), MUST_SEE, NULL, 1, {&slant} },
+	{ GETLEN("SPACING "), 0, NULL, 1, {&spacing} },
+	{ GETLEN("SETWIDTH_NAME "), 0, NULL, 1, {&fnwidth} },
+	{ GETLEN("CHARSET_REGISTRY "), 0, NULL, 1, {&charset_reg} },
+	{ GETLEN("CHARSET_ENCODING "), 0, NULL, 1, {&charset_enc} },
+	{ GETLEN("FONT_ASCENT "), 0, " %hd", 1, {&fmet.ascender} },
+	{ GETLEN("FONT_DESCENT "), 0, " %hd", 1, {&fmet.descender} },
+
+	/* these 2 must go in this order for post-processing */
+	{ GETLEN("UNDERLINE_THICKNESS "), 0, " %hd", 1, {&fmet.underline_thickness} },
+	{ GETLEN("UNDERLINE_POSITION "), 0, " %hd", 1, {&fmet.underline_position} },
+
+	{ GETLEN("CHARS "), MUST_SEE|IS_LAST, " %d", 1, {&nglyphs} },
+	{ NULL, 0, 0 } /* end mark: name==NULL */
+};
+
+static int
+handle_header(
+	int len,
+	char *str
+)
+{
+	struct line *cl;
+	char *s, *p;
+	char bf[2000];
+	int c;
+
+#if 0
+	fprintf(stderr, "line: %s\n", str);
+#endif
+	for(cl = header; cl->name != 0; cl++) {
+		if(strncmp(str, cl->name, cl->namelen))
+			continue;
+#if 0
+		fprintf(stderr, "match: %s\n", cl->name);
+#endif
+		if(cl->flags & IS_SEEN) {
+			if(cl->flags & ALLOW_REPEAT)
+				continue;
+			
+			fprintf(stderr, "**** input line %d redefines the property %s\n", lineno, cl->name);
+			exit(1);
+		}
+		cl->flags |= IS_SEEN;
+		if(cl->fmt == 0) {
+			if(len - cl->namelen + 1 > sizeof bf)
+				len = sizeof bf; /* cut it down */
+
+			s = bf; /* a temporary buffer to extract the value */
+
+			/* skip until a quote */
+			for(p = str+cl->namelen; len!=0 && (c = *p)!=0; p++, len--) {
+				if(c == '"') {
+					p++;
+					break;
+				}
+			}
+			for(; len!=0 && (c = *p)!=0; p++, len--) {
+				if(c == '"') {
+					c = *++p;
+					if(c == '"')
+						*s++ = c;
+					else
+						break;
+				} else
+					*s++ = c;
+			}
+			*s = 0; /* end of line */
+
+			*((char **)(cl->vp[0])) = dupcnstring(bf, s-bf);
+		} else {
+			c = sscanf(str+cl->namelen, cl->fmt, cl->vp[0], cl->vp[1], cl->vp[2], cl->vp[3]);
+			if(c != cl->nvals) {
+				fprintf(stderr, "**** property %s at input line %d must have %d arguments\n", 
+					cl->name, lineno, cl->nvals);
+				exit(1);
+			}
+		}
+		if(cl->flags & IS_LAST)
+			return 1;
+		else
+			return 0;
+	}
+	return 0;
+}
+
+/*
+ * Parse the description of the glyphs
+ */
+
+static int
+handle_glyphs(
+	int len,
+	char *str
+)
+{
+	static int inbmap=0;
+	static char *bmap;
+	static int xsz, ysz, xoff, yoff;
+	static int curln;
+	int i, c;
+	char *p, *plim, *psz;
+
+	if(!LENCMP(str, "ENDFONT")) {
+		if(curgl < nglyphs) {
+			fprintf(stderr, "**** unexpected end of font file after %d glyphs\n", curgl);
+			exit(1);
+		} else
+			return 1;
+	}
+	if(curgl >= nglyphs) {
+		fprintf(stderr, "**** file contains more glyphs than advertised (%d)\n", nglyphs);
+		exit(1);
+	}
+	if(!LENCMP(str, "STARTCHAR")) {
+		/* sizeof will count \0 instead of ' ' */
+		for(i=sizeof("STARTCHAR"); str[i] == ' '; i++) 
+			{}
+
+		glyphs[curgl].name = strdup(str + i);
+		if(glyphs[curgl].name == 0) {
+			fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+			exit(255);
+		}
+	} else if(!LENCMP(str, "ENCODING")) {
+		if(sscanf(str, "ENCODING %d", &fontenc[curgl])!=1) {
+			fprintf(stderr,"**** weird ENCODING statement at line %d\n", lineno);
+			exit(1);
+		}
+		if(fontenc[curgl] == -1)  /* compatibility format */
+			sscanf(str, "ENCODING -1 %d", &fontenc[curgl]);
+		if(fontenc[curgl] > maxenc)
+			maxenc = fontenc[curgl];
+	} else if(!LENCMP(str, "DWIDTH")) {
+		if(sscanf(str, "DWIDTH %d %d", &xsz, &ysz)!=2) {
+			fprintf(stderr,"**** weird DWIDTH statement at line %d\n", lineno);
+			exit(1);
+		}
+		glyphs[curgl].width = xsz*scale;
+	} else if(!LENCMP(str, "BBX")) {
+		if(sscanf(str, "BBX %d %d %d %d", &xsz, &ysz, &xoff, &yoff)!=4) {
+			fprintf(stderr,"**** weird BBX statement at line %d\n", lineno);
+			exit(1);
+		}
+		bmap=malloc(xsz*ysz);
+		if(bmap==0) {
+			fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+			exit(255);
+		}
+		glyphs[curgl].lsb = -xoff*scale;
+		glyphs[curgl].xMin = -xoff*scale;
+		glyphs[curgl].xMax = (xsz-xoff)*scale;
+		glyphs[curgl].yMin = -yoff*scale;
+		glyphs[curgl].yMax = (ysz-xoff)*scale;
+	} else if(!LENCMP(str, "BITMAP")) {
+		inbmap=1; 
+		curln=ysz-1; /* the lowest line has index 0 */
+	} else if(!LENCMP(str, "ENDCHAR")) {
+		inbmap=0;
+		if(bmap) {
+			glyphs[curgl].lastentry = 0;
+			glyphs[curgl].path = 0;
+			glyphs[curgl].entries = 0;
+			bmp_outline(&glyphs[curgl], scale, bmap, xsz, ysz, xoff, yoff);
+			free(bmap);
+			/* remember in a static table or it will be erased */
+			glpaths[curgl] = glyphs[curgl].entries;
+			glyphs[curgl].entries = 0;
+
+			if(glpaths[curgl])
+				glyphs[curgl].ttf_pathlen = 1;
+			else
+				glyphs[curgl].ttf_pathlen = 0;
+		}
+		curgl++;
+	} else if(inbmap) {
+		if(curln<0) {
+			fprintf(stderr,"**** bitmap is longer than %d lines at line %d\n", ysz, lineno);
+			exit(1);
+		}
+
+		i=0;
+		p=&bmap[curln*xsz]; psz=p+xsz;
+		while(i<len) {
+			c=str[i++];
+			if(!isxdigit(c)) {
+				fprintf(stderr,"**** non-hex digit in bitmap at line %d\n", lineno);
+				exit(1);
+			}
+			if(c<='9')
+				c-='0';
+			else 
+				c= tolower(c)-'a'+10;
+
+			for(plim=p+4; p<psz && p<plim; c<<=1) 
+				*p++ = (( c & 0x08 )!=0);
+		}
+		if(p<psz) {
+			fprintf(stderr,"**** bitmap line is too short at line %d\n", lineno);
+			exit(1);
+		}
+		curln--;
+	}
+	return 0;
+}
+
+/*
+ * Read all the possible information about the glyphs
+ */
+
+static void
+readglyphs(
+	GLYPH *glyph_list
+)
+{
+	int i;
+	GLYPH *g;
+
+	if(got_glyphs)
+		return;
+
+	/* pass them to handle_glyphs() through statics */
+	glyphs = glyph_list;
+	curgl = 2; /* skip the empty glyph and .notdef */
+
+	/* initialize the empty glyph and .notdef */
+
+	for(i=0; i<2; i++) {
+		g = &glyphs[i];
+		g->lsb = 0;
+		g->width = fmet.bbox[2];
+		g->xMin = 0;
+		g->yMin = 0;
+	}
+	g = &glyphs[0];
+	g->name = ".notdef";
+	g->xMax = fmet.bbox[2]*4/5;
+	g->yMax = fmet.bbox[3]*4/5;
+	g->entries = g->path = g->lastentry = 0;
+	/* make it look as a black square */
+	fg_rmoveto(g, 0.0, 0.0);
+	fg_rlineto(g, 0.0, (double)g->yMax);
+	fg_rlineto(g, (double)g->xMax, (double)g->yMax);
+	fg_rlineto(g, (double)g->xMax, 0.0);
+	fg_rlineto(g, 0.0, 0.0);
+	g_closepath(g);
+	glpaths[0] = g->entries;
+	g->entries = 0;
+	g->ttf_pathlen = 4;
+
+	g = &glyphs[1];
+	g->name = ".null";
+	g->xMax = g->yMax = 0;
+	g->ttf_pathlen = 0;
+
+	if(readfile(bdf_file, handle_glyphs) < 0) {
+		fprintf(stderr, "**** file does not contain the ENDFONT line\n");
+		exit(1);
+	}
+	got_glyphs = 1;
+}
+
+/*
+ * Open font and prepare to return information to the main driver.
+ * May print error and warning messages.
+ * Exit on error.
+ */
+
+static void
+openfont(
+	char *fname,
+	char *arg /* unused now */
+)
+{
+	struct line *cl;
+	int i, l;
+
+	if ((bdf_file = fopen(fname, "r")) == NULL) {
+		fprintf(stderr, "**** Cannot open file '%s'\n", fname);
+		exit(1);
+	} else {
+		WARNING_2 fprintf(stderr, "Processing file %s\n", fname);
+	}
+
+	lineno = 1;
+
+	for(cl = header; cl->name != 0; cl++)
+		cl->flags &= ~IS_SEEN;
+	if(readfile(bdf_file, handle_header) < 0) {
+		fprintf(stderr, "**** file does not contain the CHARS definition\n");
+		exit(1);
+	}
+	for(cl = header; cl->name != 0; cl++) {
+		if( (cl->flags & MUST_SEE) && !(cl->flags & IS_SEEN) ) {
+			fprintf(stderr, "**** mandatory property %sis not found in the input line\n", 
+				cl->name); /* cl->name has a space at the end */
+			exit(1);
+		}
+
+		/* set a few defaults */
+		if( !(cl->flags & IS_SEEN) ) {
+			if(cl->vp[0] == &fmet.underline_thickness) {
+				fmet.underline_thickness = 1;
+			} else if(cl->vp[0] == &fmet.underline_position) {
+				fmet.underline_position = fmet.bbox[1] + fmet.underline_thickness
+					- (pixel_size - fmet.bbox[3]);
+			} else if(cl->vp[0] == &fmet.ascender) {
+				fmet.ascender = fmet.bbox[2] + fmet.bbox[0];
+			} else if(cl->vp[0] == &fmet.descender) {
+				fmet.descender = fmet.bbox[0];
+			}
+		}
+	}
+
+	nglyphs += 2; /* add empty glyph and .notdef */
+
+	/* postprocessing to compensate for the differences in the metric formats */
+	fmet.bbox[2] += fmet.bbox[0];
+	fmet.bbox[3] += fmet.bbox[1];
+
+	scale = 1000/pixel_size; /* XXX ? */
+	if(scale*pixel_size < 950) {
+		scale = 1;
+		scale_external = 1;
+		fmet.units_per_em = pixel_size;
+	} else {
+		scale_external = 0;
+		fmet.units_per_em = scale*pixel_size;
+
+		fmet.underline_position *= scale;
+		fmet.underline_thickness *= scale;
+		fmet.ascender *= scale;
+		fmet.descender *= scale;
+		for(i=0; i<4; i++)
+			fmet.bbox[i] *= scale;
+	}
+
+	fmet.italic_angle = 0.0;
+	if(spacing == 0 /* possibly an old font */ 
+	|| toupper(spacing[0]) != 'P') /* or anything non-proportional */
+		fmet.is_fixed_pitch = 1;
+	else
+		fmet.is_fixed_pitch = 0;
+
+	if(fmet.name_copyright==NULL)
+		fmet.name_copyright = "";
+	
+	/* create the full name */
+	l = strlen(fmet.name_family) 
+		+ (fmet.name_style? strlen(fmet.name_style) : 0)
+		+ (fnwidth? strlen(fnwidth) : 0)
+		+ strlen("Oblique") + 1;
+
+	if(( fmet.name_full = malloc(l) )==NULL) {
+		fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+		exit(255);
+	}
+	strcpy(fmet.name_full, fmet.name_family);
+	if(fnwidth && strcmp(fnwidth, "Normal")) {
+		strcat(fmet.name_full, fnwidth);
+	}
+	if(fmet.name_style && strcmp(fmet.name_style, "Medium")) {
+		strcat(fmet.name_full, fmet.name_style);
+	}
+	switch(toupper(slant[0])) {
+	case 'O':
+		strcat(fmet.name_full, "Oblique");
+		break;
+	case 'I':
+		strcat(fmet.name_full, "Italic");
+		break;
+	}
+
+	fmet.name_ps = fmet.name_full;
+	fmet.name_version = "1.0";
+
+	if(charset_reg && charset_enc
+	&& !strcmp(charset_reg, "iso10646") && !strcmp(charset_enc, "1"))
+		is_unicode = 1;
+
+	if(( fontenc = calloc(nglyphs, sizeof *fontenc) )==NULL) {
+		fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+		exit(255);
+	}
+	for(i=0; i<nglyphs; i++)
+		fontenc[i] = -1;
+	if(( glpaths = calloc(nglyphs, sizeof *glpaths) )==NULL) {
+		fprintf (stderr, "****malloc failed %s line %d\n", __FILE__, __LINE__);
+		exit(255);
+	}
+}
+
+/*
+ * Close font.
+ * Exit on error.
+ */
+
+static void
+closefont(
+	void
+)
+{
+	if(fclose(bdf_file) < 0) {
+		WARNING_1 fprintf(stderr, "Errors when closing the font file, ignored\n");
+	}
+}
+
+/*
+ * Get the number of glyphs in font.
+ */
+
+static int
+getnglyphs (
+	void
+)
+{
+	return nglyphs;
+}
+
+/*
+ * Get the names of the glyphs.
+ * Returns 0 if the names were assigned, non-zero if the font
+ * provides no glyph names.
+ */
+
+static int
+glnames(
+	GLYPH *glyph_list
+)
+{
+	readglyphs(glyph_list);
+	return 0;
+}
+
+/*
+ * Get the original encoding of the font. 
+ * Returns 1 for if the original encoding is Unicode, 2 if the
+ * original encoding is other 16-bit, 0 if 8-bit.
+ */
+
+static int
+glenc(
+	GLYPH *glyph_list,
+	int *encoding,
+	int *unimap
+)
+{
+	int i, douni, e;
+
+	if(is_unicode || forcemap)
+		douni = 1;
+	else
+		douni = 0;
+
+	for(i=0; i<nglyphs; i++) {
+		e = fontenc[i];
+		if(douni)
+			e = unicode_rev_lookup(e);
+		if(e>=0 && e<ENCTABSZ && encoding[e] == -1)
+			encoding[e] = i;
+	}
+
+	if(is_unicode)
+		return 1;
+	else if(maxenc > 255)
+		return 2;
+	else
+		return 0;
+}
+	
+/*
+ * Get the font metrics
+ */
+static void 
+fnmetrics(
+	struct font_metrics *fm
+)
+{
+	*fm = fmet;
+}
+
+/*
+ * Get the path of contrours for a glyph.
+ */
+
+static void
+glpath(
+	int glyphno,
+	GLYPH *glyf_list
+)
+{
+	readglyphs(glyf_list);
+	glyf_list[glyphno].entries = glpaths[glyphno];
+	glpaths[glyphno] = 0;
+}
+
+/*
+ * Get the kerning data.
+ */
+
+static void
+kerning(
+	GLYPH *glyph_list
+)
+{
+	return; /* no kerning in BDF */
+}
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Zapf-Dingbats.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Zapf-Dingbats.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Zapf-Dingbats.ufm	(revision 2000)
@@ -0,0 +1,289 @@
+StartFontMetrics 4.1
+FontName Dingbats_Regular
+FullName Dingbats Regular
+Notice 
+EncodingScheme FontSpecific
+FamilyName Dingbats
+Weight Regular
+Version 1.0
+Characters 203
+ItalicAngle 0.0
+Ascender 819
+Descender -143
+UnderlineThickness 36
+UnderlinePosition -72
+IsFixedPitch false
+FontBBox -1 -143 981 819
+StartCharMetrics 270
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N space ; G 202 ; B 0 0 0 0 ;
+U -1 ; WX 974 ; N .null ; G 1 ; B 35 71 939 617 ;
+U -1 ; WX 961 ; N a2 ; G 2 ; B 35 81 927 611 ;
+U -1 ; WX 974 ; N a202 ; G 3 ; B 35 69 939 615 ;
+U -1 ; WX 980 ; N a3 ; G 4 ; B 35 0 945 691 ;
+U -1 ; WX 719 ; N a4 ; G 5 ; B 34 138 685 566 ;
+U -1 ; WX 789 ; N a5 ; G 6 ; B 35 -13 755 707 ;
+U -1 ; WX 790 ; N a119 ; G 7 ; B 35 -14 755 706 ;
+U -1 ; WX 791 ; N a118 ; G 8 ; B 35 -13 761 705 ;
+U -1 ; WX 690 ; N a117 ; G 9 ; B 35 137 655 556 ;
+U -1 ; WX 960 ; N a11 ; G 10 ; B 35 122 925 568 ;
+U -1 ; WX 939 ; N a12 ; G 11 ; B 35 133 904 559 ;
+U -1 ; WX 549 ; N a13 ; G 12 ; B 29 -10 516 706 ;
+U -1 ; WX 855 ; N a14 ; G 13 ; B 33 59 820 632 ;
+U -1 ; WX 911 ; N a15 ; G 14 ; B 35 51 876 641 ;
+U -1 ; WX 933 ; N a16 ; G 15 ; B 35 141 899 550 ;
+U -1 ; WX 911 ; N a105 ; G 16 ; B 35 49 876 636 ;
+U -1 ; WX 945 ; N a17 ; G 17 ; B 35 139 909 550 ;
+U -1 ; WX 974 ; N a18 ; G 18 ; B 35 103 938 588 ;
+U -1 ; WX 755 ; N a19 ; G 19 ; B 34 -14 721 706 ;
+U -1 ; WX 846 ; N a20 ; G 20 ; B 36 -14 811 706 ;
+U -1 ; WX 762 ; N a21 ; G 21 ; B 35 0 727 692 ;
+U -1 ; WX 761 ; N a22 ; G 22 ; B 35 0 727 692 ;
+U -1 ; WX 593 ; N a23 ; G 23 ; B -1 -69 572 660 ;
+U -1 ; WX 677 ; N a24 ; G 24 ; B 36 -14 642 705 ;
+U -1 ; WX 763 ; N a25 ; G 25 ; B 35 0 728 694 ;
+U -1 ; WX 760 ; N a26 ; G 26 ; B 35 0 726 691 ;
+U -1 ; WX 759 ; N a27 ; G 27 ; B 35 0 725 690 ;
+U -1 ; WX 754 ; N a28 ; G 28 ; B 35 0 720 685 ;
+U -1 ; WX 494 ; N a6 ; G 29 ; B 35 0 460 691 ;
+U -1 ; WX 552 ; N a7 ; G 30 ; B 35 0 517 691 ;
+U -1 ; WX 537 ; N a8 ; G 31 ; B 35 0 503 691 ;
+U -1 ; WX 577 ; N a9 ; G 32 ; B 35 96 542 595 ;
+U -1 ; WX 692 ; N a10 ; G 33 ; B 35 -14 657 702 ;
+U -1 ; WX 786 ; N a29 ; G 34 ; B 35 -13 751 705 ;
+U -1 ; WX 788 ; N a30 ; G 35 ; B 35 -14 752 703 ;
+U -1 ; WX 788 ; N a31 ; G 36 ; B 35 -14 753 705 ;
+U -1 ; WX 790 ; N a32 ; G 37 ; B 35 -14 756 707 ;
+U -1 ; WX 793 ; N a33 ; G 38 ; B 35 -13 759 705 ;
+U -1 ; WX 794 ; N a34 ; G 39 ; B 35 -14 759 705 ;
+U -1 ; WX 816 ; N a35 ; G 40 ; B 35 -13 782 707 ;
+U -1 ; WX 823 ; N a36 ; G 41 ; B 35 2 787 719 ;
+U -1 ; WX 789 ; N a37 ; G 42 ; B 35 -13 754 706 ;
+U -1 ; WX 841 ; N a38 ; G 43 ; B 35 -14 807 706 ;
+U -1 ; WX 823 ; N a39 ; G 44 ; B 35 -12 789 706 ;
+U -1 ; WX 833 ; N a40 ; G 45 ; B 35 -14 798 706 ;
+U -1 ; WX 816 ; N a41 ; G 46 ; B 35 -13 782 705 ;
+U -1 ; WX 831 ; N a42 ; G 47 ; B 35 -13 796 707 ;
+U -1 ; WX 923 ; N a43 ; G 48 ; B 35 -13 888 706 ;
+U -1 ; WX 744 ; N a44 ; G 49 ; B 35 0 710 691 ;
+U -1 ; WX 723 ; N a45 ; G 50 ; B 35 0 688 691 ;
+U -1 ; WX 749 ; N a46 ; G 51 ; B 35 0 714 691 ;
+U -1 ; WX 790 ; N a47 ; G 52 ; B 34 -15 756 706 ;
+U -1 ; WX 792 ; N a48 ; G 53 ; B 35 -14 758 705 ;
+U -1 ; WX 695 ; N a49 ; G 54 ; B 35 -16 661 706 ;
+U -1 ; WX 776 ; N a50 ; G 55 ; B 35 -7 741 698 ;
+U -1 ; WX 768 ; N a51 ; G 56 ; B 35 -7 734 699 ;
+U -1 ; WX 792 ; N a52 ; G 57 ; B 35 -1 757 720 ;
+U -1 ; WX 759 ; N a53 ; G 58 ; B 35 0 725 693 ;
+U -1 ; WX 707 ; N a54 ; G 59 ; B 35 -11 672 704 ;
+U -1 ; WX 708 ; N a55 ; G 60 ; B 35 -14 672 704 ;
+U -1 ; WX 682 ; N a56 ; G 61 ; B 35 -3 647 694 ;
+U -1 ; WX 701 ; N a57 ; G 62 ; B 35 -13 666 708 ;
+U -1 ; WX 826 ; N a58 ; G 63 ; B 35 -18 791 716 ;
+U -1 ; WX 815 ; N a59 ; G 64 ; B 35 -16 780 705 ;
+U -1 ; WX 789 ; N a60 ; G 65 ; B 35 -14 754 704 ;
+U -1 ; WX 789 ; N a61 ; G 66 ; B 35 -14 754 704 ;
+U -1 ; WX 707 ; N a62 ; G 67 ; B 33 0 674 717 ;
+U -1 ; WX 687 ; N a63 ; G 68 ; B 36 0 651 688 ;
+U -1 ; WX 696 ; N a64 ; G 69 ; B 35 0 661 693 ;
+U -1 ; WX 689 ; N a65 ; G 70 ; B 35 0 655 681 ;
+U -1 ; WX 786 ; N a66 ; G 71 ; B 34 -14 751 703 ;
+U -1 ; WX 787 ; N a67 ; G 72 ; B 35 -15 752 704 ;
+U -1 ; WX 713 ; N a68 ; G 73 ; B 35 -13 678 709 ;
+U -1 ; WX 791 ; N a69 ; G 74 ; B 35 -14 756 707 ;
+U -1 ; WX 785 ; N a70 ; G 75 ; B 36 -14 751 701 ;
+U -1 ; WX 791 ; N a71 ; G 76 ; B 35 -14 757 708 ;
+U -1 ; WX 873 ; N a72 ; G 77 ; B 35 -13 838 705 ;
+U -1 ; WX 761 ; N a73 ; G 78 ; B 35 0 726 691 ;
+U -1 ; WX 762 ; N a74 ; G 79 ; B 35 0 727 691 ;
+U -1 ; WX 762 ; N a203 ; G 80 ; B 35 0 727 691 ;
+U -1 ; WX 759 ; N a75 ; G 81 ; B 35 0 725 691 ;
+U -1 ; WX 759 ; N a204 ; G 82 ; B 35 0 725 691 ;
+U -1 ; WX 892 ; N a76 ; G 83 ; B 35 0 858 706 ;
+U -1 ; WX 892 ; N a77 ; G 84 ; B 35 -14 858 691 ;
+U -1 ; WX 788 ; N a78 ; G 85 ; B 35 -14 754 705 ;
+U -1 ; WX 784 ; N a79 ; G 86 ; B 35 -14 749 705 ;
+U -1 ; WX 438 ; N a81 ; G 87 ; B 35 -14 403 705 ;
+U -1 ; WX 138 ; N a82 ; G 88 ; B 35 0 104 691 ;
+U -1 ; WX 277 ; N a83 ; G 89 ; B 35 0 242 691 ;
+U -1 ; WX 415 ; N a84 ; G 90 ; B 35 0 380 691 ;
+U -1 ; WX 392 ; N a97 ; G 91 ; B 35 263 357 705 ;
+U -1 ; WX 392 ; N a98 ; G 92 ; B 34 262 357 705 ;
+U -1 ; WX 668 ; N a99 ; G 93 ; B 35 263 633 707 ;
+U -1 ; WX 668 ; N a100 ; G 94 ; B 36 261 634 705 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 732 ; N a101 ; G 109 ; B 35 -143 697 805 ;
+U -1 ; WX 544 ; N a102 ; G 110 ; B 56 -14 488 705 ;
+U -1 ; WX 544 ; N a103 ; G 111 ; B 34 -14 508 704 ;
+U -1 ; WX 910 ; N a104 ; G 112 ; B 35 40 875 651 ;
+U -1 ; WX 667 ; N a106 ; G 113 ; B 35 -13 633 706 ;
+U -1 ; WX 760 ; N a107 ; G 114 ; B 35 -13 726 705 ;
+U -1 ; WX 779 ; N a108 ; G 115 ; B 0 121 758 570 ;
+U -1 ; WX 776 ; N a112 ; G 116 ; B 35 0 741 705 ;
+U -1 ; WX 595 ; N a111 ; G 117 ; B 34 -14 560 705 ;
+U -1 ; WX 694 ; N a110 ; G 118 ; B 35 -14 659 704 ;
+U -1 ; WX 626 ; N a109 ; G 119 ; B 34 0 591 705 ;
+U -1 ; WX 788 ; N a120 ; G 120 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a121 ; G 121 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a122 ; G 122 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a123 ; G 123 ; B 35 -14 754 705 ;
+U -1 ; WX 788 ; N a124 ; G 124 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a125 ; G 125 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a126 ; G 126 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a127 ; G 127 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a128 ; G 128 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a129 ; G 129 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a130 ; G 130 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a131 ; G 131 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a132 ; G 132 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a133 ; G 133 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a134 ; G 134 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a135 ; G 135 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a136 ; G 136 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a137 ; G 137 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a138 ; G 138 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a139 ; G 139 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a140 ; G 140 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a141 ; G 141 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a142 ; G 142 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a143 ; G 143 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a144 ; G 144 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a145 ; G 145 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a146 ; G 146 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a147 ; G 147 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a148 ; G 148 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a149 ; G 149 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a150 ; G 150 ; B 35 -13 755 706 ;
+U -1 ; WX 788 ; N a151 ; G 151 ; B 34 -13 754 706 ;
+U -1 ; WX 788 ; N a152 ; G 152 ; B 34 -13 754 706 ;
+U -1 ; WX 788 ; N a153 ; G 153 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a154 ; G 154 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a155 ; G 155 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a156 ; G 156 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a157 ; G 157 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a158 ; G 158 ; B 35 -13 754 706 ;
+U -1 ; WX 788 ; N a159 ; G 159 ; B 35 -13 754 706 ;
+U -1 ; WX 894 ; N a160 ; G 160 ; B 35 58 860 634 ;
+U -1 ; WX 838 ; N a161 ; G 161 ; B 35 151 803 537 ;
+U -1 ; WX 1016 ; N a163 ; G 162 ; B 34 151 981 537 ;
+U -1 ; WX 458 ; N a164 ; G 163 ; B 35 -128 422 819 ;
+U -1 ; WX 748 ; N a196 ; G 164 ; B 35 94 698 597 ;
+U -1 ; WX 924 ; N a165 ; G 165 ; B 35 140 890 551 ;
+U -1 ; WX 748 ; N a192 ; G 166 ; B 35 94 698 597 ;
+U -1 ; WX 918 ; N a166 ; G 167 ; B 35 167 884 526 ;
+U -1 ; WX 927 ; N a167 ; G 168 ; B 35 28 892 664 ;
+U -1 ; WX 928 ; N a168 ; G 169 ; B 35 129 891 562 ;
+U -1 ; WX 928 ; N a169 ; G 170 ; B 35 129 893 561 ;
+U -1 ; WX 834 ; N a170 ; G 171 ; B 35 154 799 537 ;
+U -1 ; WX 873 ; N a171 ; G 172 ; B 35 97 838 594 ;
+U -1 ; WX 828 ; N a172 ; G 173 ; B 35 104 791 588 ;
+U -1 ; WX 924 ; N a173 ; G 174 ; B 35 82 889 610 ;
+U -1 ; WX 924 ; N a162 ; G 175 ; B 35 82 889 610 ;
+U -1 ; WX 917 ; N a174 ; G 176 ; B 35 4 882 688 ;
+U -1 ; WX 930 ; N a175 ; G 177 ; B 35 83 896 608 ;
+U -1 ; WX 931 ; N a176 ; G 178 ; B 35 84 896 608 ;
+U -1 ; WX 463 ; N a177 ; G 179 ; B 35 -100 429 790 ;
+U -1 ; WX 883 ; N a178 ; G 180 ; B 35 70 848 621 ;
+U -1 ; WX 836 ; N a179 ; G 181 ; B 35 43 802 648 ;
+U -1 ; WX 836 ; N a193 ; G 182 ; B 35 43 802 648 ;
+U -1 ; WX 867 ; N a180 ; G 183 ; B 35 101 832 589 ;
+U -1 ; WX 867 ; N a199 ; G 184 ; B 35 101 832 591 ;
+U -1 ; WX 696 ; N a181 ; G 185 ; B 35 44 661 651 ;
+U -1 ; WX 696 ; N a200 ; G 186 ; B 35 44 661 646 ;
+U -1 ; WX 874 ; N a182 ; G 187 ; B 35 75 840 613 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 874 ; N a201 ; G 188 ; B 35 75 840 613 ;
+U -1 ; WX 760 ; N a183 ; G 189 ; B 35 1 725 690 ;
+U -1 ; WX 946 ; N a184 ; G 190 ; B 35 159 911 532 ;
+U -1 ; WX 771 ; N a197 ; G 191 ; B 34 36 736 655 ;
+U -1 ; WX 865 ; N a185 ; G 192 ; B 35 209 830 483 ;
+U -1 ; WX 771 ; N a194 ; G 193 ; B 34 36 736 655 ;
+U -1 ; WX 888 ; N a198 ; G 194 ; B 34 -18 853 711 ;
+U -1 ; WX 967 ; N a186 ; G 195 ; B 35 123 932 568 ;
+U -1 ; WX 888 ; N a195 ; G 196 ; B 34 -20 853 710 ;
+U -1 ; WX 831 ; N a187 ; G 197 ; B 35 113 796 578 ;
+U -1 ; WX 873 ; N a188 ; G 198 ; B 36 116 838 576 ;
+U -1 ; WX 927 ; N a189 ; G 199 ; B 35 149 891 542 ;
+U -1 ; WX 970 ; N a190 ; G 200 ; B 35 75 931 615 ;
+U -1 ; WX 918 ; N a191 ; G 201 ; B 34 99 884 592 ;
+U -1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 390 ; N a89 ; G 95 ; B 35 -14 356 705 ;
+U -1 ; WX 390 ; N a90 ; G 96 ; B 35 -14 355 705 ;
+U -1 ; WX 317 ; N a93 ; G 97 ; B 35 0 283 691 ;
+U -1 ; WX 317 ; N a94 ; G 98 ; B 35 0 283 691 ;
+U -1 ; WX 276 ; N a91 ; G 99 ; B 35 0 242 691 ;
+U -1 ; WX 276 ; N a92 ; G 100 ; B 35 0 242 691 ;
+U -1 ; WX 509 ; N a205 ; G 101 ; B 35 0 475 691 ;
+U -1 ; WX 509 ; N a85 ; G 102 ; B 35 0 475 691 ;
+U -1 ; WX 410 ; N a206 ; G 103 ; B 35 0 375 691 ;
+U -1 ; WX 410 ; N a86 ; G 104 ; B 35 0 375 691 ;
+U -1 ; WX 234 ; N a87 ; G 105 ; B 35 -14 199 705 ;
+U -1 ; WX 234 ; N a88 ; G 106 ; B 35 -14 199 705 ;
+U -1 ; WX 334 ; N a95 ; G 107 ; B 35 0 299 691 ;
+U -1 ; WX 334 ; N a96 ; G 108 ; B 35 0 299 691 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Times-Roman.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Times-Roman.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Times-Roman.ufm	(revision 2000)
@@ -0,0 +1,719 @@
+StartFontMetrics 4.1
+FontName Nimbus_Roman_No9_L_Regular
+FullName Nimbus Roman No9 L Regular
+Notice 
+EncodingScheme FontSpecific
+FamilyName Nimbus Roman No9 L
+Weight Regular
+Version 1.0
+Characters 661
+ItalicAngle 0.0
+Ascender 1098
+Descender -281
+UnderlineThickness 50
+UnderlinePosition -100
+IsFixedPitch false
+FontBBox -168 -281 1031 1098
+StartCharMetrics 700
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .null ; G 1 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N exclam ; G 2 ; B 130 -9 237 676 ;
+U -1 ; WX 408 ; N quotedbl ; G 3 ; B 77 431 331 676 ;
+U -1 ; WX 533 ; N numbersign ; G 4 ; B 5 0 496 662 ;
+U -1 ; WX 500 ; N dollar ; G 5 ; B 44 -87 457 727 ;
+U -1 ; WX 833 ; N percent ; G 6 ; B 61 -13 772 676 ;
+U -1 ; WX 787 ; N ampersand ; G 7 ; B 42 -13 750 676 ;
+U -1 ; WX 180 ; N quotesingle ; G 104 ; B 48 431 133 676 ;
+U -1 ; WX 341 ; N parenleft ; G 9 ; B 48 -177 304 676 ;
+U -1 ; WX 333 ; N parenright ; G 10 ; B 29 -177 285 676 ;
+U -1 ; WX 500 ; N asterisk ; G 11 ; B 69 265 432 676 ;
+U -1 ; WX 571 ; N plus ; G 12 ; B 30 0 534 506 ;
+U -1 ; WX 250 ; N comma ; G 13 ; B 56 -141 195 102 ;
+U -1 ; WX 333 ; N hyphen ; G 14 ; B 39 194 285 257 ;
+U -1 ; WX 250 ; N period ; G 15 ; B 70 -11 181 100 ;
+U -1 ; WX 324 ; N slash ; G 16 ; B -9 -14 287 676 ;
+U -1 ; WX 513 ; N zero ; G 17 ; B 24 -14 476 676 ;
+U -1 ; WX 500 ; N one ; G 18 ; B 111 0 394 676 ;
+U -1 ; WX 512 ; N two ; G 19 ; B 30 0 475 676 ;
+U -1 ; WX 500 ; N three ; G 20 ; B 43 -14 432 676 ;
+U -1 ; WX 509 ; N four ; G 21 ; B 12 0 472 676 ;
+U -1 ; WX 500 ; N five ; G 22 ; B 32 -14 438 688 ;
+U -1 ; WX 505 ; N six ; G 23 ; B 34 -14 468 684 ;
+U -1 ; WX 500 ; N seven ; G 24 ; B 20 -8 449 662 ;
+U -1 ; WX 500 ; N eight ; G 25 ; B 56 -14 445 676 ;
+U -1 ; WX 500 ; N nine ; G 26 ; B 30 -22 459 676 ;
+U -1 ; WX 278 ; N colon ; G 27 ; B 81 -11 192 459 ;
+U -1 ; WX 278 ; N semicolon ; G 28 ; B 80 -141 219 459 ;
+U -1 ; WX 573 ; N less ; G 29 ; B 28 -10 536 516 ;
+U -1 ; WX 571 ; N equal ; G 30 ; B 30 120 534 386 ;
+U -1 ; WX 573 ; N greater ; G 31 ; B 28 -10 536 516 ;
+U -1 ; WX 451 ; N question ; G 32 ; B 68 -8 414 676 ;
+U -1 ; WX 921 ; N at ; G 33 ; B 116 -14 809 676 ;
+U -1 ; WX 743 ; N A ; G 34 ; B 15 0 706 674 ;
+U -1 ; WX 667 ; N B ; G 35 ; B 17 0 593 662 ;
+U -1 ; WX 670 ; N C ; G 36 ; B 28 -14 633 676 ;
+U -1 ; WX 722 ; N D ; G 37 ; B 16 0 685 662 ;
+U -1 ; WX 634 ; N E ; G 38 ; B 12 0 597 662 ;
+U -1 ; WX 583 ; N F ; G 39 ; B 12 0 546 662 ;
+U -1 ; WX 746 ; N G ; G 40 ; B 32 -14 709 676 ;
+U -1 ; WX 739 ; N H ; G 41 ; B 19 0 702 662 ;
+U -1 ; WX 352 ; N I ; G 42 ; B 18 0 315 662 ;
+U -1 ; WX 407 ; N J ; G 43 ; B 10 -14 370 662 ;
+U -1 ; WX 760 ; N K ; G 44 ; B 34 0 723 662 ;
+U -1 ; WX 635 ; N L ; G 45 ; B 12 0 598 662 ;
+U -1 ; WX 900 ; N M ; G 46 ; B 12 0 863 662 ;
+U -1 ; WX 744 ; N N ; G 47 ; B 12 -11 707 662 ;
+U -1 ; WX 725 ; N O ; G 48 ; B 34 -14 688 676 ;
+U -1 ; WX 579 ; N P ; G 49 ; B 16 0 542 662 ;
+U -1 ; WX 738 ; N Q ; G 50 ; B 34 -178 701 676 ;
+U -1 ; WX 696 ; N R ; G 51 ; B 17 0 659 662 ;
+U -1 ; WX 556 ; N S ; G 52 ; B 42 -14 491 676 ;
+U -1 ; WX 630 ; N T ; G 53 ; B 17 0 593 662 ;
+U -1 ; WX 742 ; N U ; G 54 ; B 14 -14 705 662 ;
+U -1 ; WX 734 ; N V ; G 55 ; B 16 -11 697 662 ;
+U -1 ; WX 969 ; N W ; G 56 ; B 5 -11 932 662 ;
+U -1 ; WX 741 ; N X ; G 57 ; B 10 0 704 662 ;
+U -1 ; WX 740 ; N Y ; G 58 ; B 22 0 703 662 ;
+U -1 ; WX 634 ; N Z ; G 59 ; B 9 0 597 662 ;
+U -1 ; WX 336 ; N bracketleft ; G 60 ; B 88 -156 299 662 ;
+U -1 ; WX 324 ; N backslash ; G 61 ; B -9 -14 287 676 ;
+U -1 ; WX 333 ; N bracketright ; G 62 ; B 34 -156 245 662 ;
+U -1 ; WX 483 ; N asciicircum ; G 63 ; B 24 297 446 662 ;
+U -1 ; WX 537 ; N underscore ; G 64 ; B 0 -125 500 -75 ;
+U -1 ; WX 333 ; N grave ; G 124 ; B 19 507 242 678 ;
+U -1 ; WX 479 ; N a ; G 66 ; B 37 -10 442 460 ;
+U -1 ; WX 505 ; N b ; G 67 ; B 3 -10 468 683 ;
+U -1 ; WX 449 ; N c ; G 68 ; B 25 -10 412 460 ;
+U -1 ; WX 528 ; N d ; G 69 ; B 27 -10 491 683 ;
+U -1 ; WX 461 ; N e ; G 70 ; B 25 -10 424 460 ;
+U -1 ; WX 420 ; N f ; G 71 ; B 20 0 383 683 ;
+U -1 ; WX 507 ; N g ; G 72 ; B 28 -218 470 460 ;
+U -1 ; WX 524 ; N h ; G 73 ; B 9 0 487 683 ;
+U -1 ; WX 290 ; N i ; G 74 ; B 16 0 253 683 ;
+U -1 ; WX 278 ; N j ; G 75 ; B -70 -218 194 683 ;
+U -1 ; WX 542 ; N k ; G 76 ; B 7 0 505 683 ;
+U -1 ; WX 294 ; N l ; G 77 ; B 19 0 257 683 ;
+U -1 ; WX 812 ; N m ; G 78 ; B 16 0 775 460 ;
+U -1 ; WX 522 ; N n ; G 79 ; B 16 0 485 460 ;
+U -1 ; WX 507 ; N o ; G 80 ; B 29 -10 470 460 ;
+U -1 ; WX 507 ; N p ; G 81 ; B 5 -217 470 460 ;
+U -1 ; WX 525 ; N q ; G 82 ; B 24 -217 488 461 ;
+U -1 ; WX 372 ; N r ; G 83 ; B 5 0 335 460 ;
+U -1 ; WX 389 ; N s ; G 84 ; B 51 -10 348 459 ;
+U -1 ; WX 316 ; N t ; G 85 ; B 13 -10 279 579 ;
+U -1 ; WX 516 ; N u ; G 86 ; B 9 -10 479 450 ;
+U -1 ; WX 514 ; N v ; G 87 ; B 19 -14 477 450 ;
+U -1 ; WX 731 ; N w ; G 88 ; B 21 -14 694 450 ;
+U -1 ; WX 516 ; N x ; G 89 ; B 17 0 479 450 ;
+U -1 ; WX 512 ; N y ; G 90 ; B 14 -218 475 450 ;
+U -1 ; WX 455 ; N z ; G 91 ; B 27 0 418 450 ;
+U -1 ; WX 480 ; N braceleft ; G 92 ; B 100 -181 350 680 ;
+U -1 ; WX 200 ; N bar ; G 93 ; B 67 -14 133 676 ;
+U -1 ; WX 480 ; N braceright ; G 94 ; B 130 -181 380 680 ;
+U -1 ; WX 541 ; N asciitilde ; G 95 ; B 40 186 502 320 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 514 ; N Euro ; G 289 ; B -16 -14 477 674 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N quotesinglbase ; G 117 ; B 79 -141 218 102 ;
+U -1 ; WX 527 ; N florin ; G 101 ; B 7 -189 490 676 ;
+U -1 ; WX 453 ; N quotedblbase ; G 118 ; B 45 -141 416 102 ;
+U -1 ; WX 1000 ; N ellipsis ; G 121 ; B 111 -11 888 100 ;
+U -1 ; WX 500 ; N dagger ; G 112 ; B 59 -149 443 676 ;
+U -1 ; WX 500 ; N daggerdbl ; G 113 ; B 58 -153 442 676 ;
+U -1 ; WX 359 ; N circumflex ; G 126 ; B 11 507 322 674 ;
+U -1 ; WX 1031 ; N perthousand ; G 122 ; B 7 -19 994 706 ;
+U -1 ; WX 556 ; N Scaron ; G 189 ; B 42 -14 491 886 ;
+U -1 ; WX 333 ; N guilsinglleft ; G 107 ; B 63 33 285 416 ;
+U -1 ; WX 922 ; N OE ; G 142 ; B 30 -6 885 668 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 634 ; N Zcaron ; G 200 ; B 9 0 597 886 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N quoteleft ; G 65 ; B 115 433 254 676 ;
+U -1 ; WX 333 ; N quoteright ; G 8 ; B 79 433 218 676 ;
+U -1 ; WX 451 ; N quotedblleft ; G 105 ; B 43 433 414 676 ;
+U -1 ; WX 444 ; N quotedblright ; G 119 ; B 30 433 401 676 ;
+U -1 ; WX 350 ; N bullet ; G 116 ; B 40 196 310 466 ;
+U -1 ; WX 537 ; N endash ; G 111 ; B 0 201 500 250 ;
+U -1 ; WX 1037 ; N emdash ; G 137 ; B 0 201 1000 250 ;
+U -1 ; WX 368 ; N tilde ; G 127 ; B 1 532 331 638 ;
+U -1 ; WX 994 ; N trademark ; G 297 ; B 30 256 957 662 ;
+U -1 ; WX 389 ; N scaron ; G 253 ; B 39 -10 350 674 ;
+U -1 ; WX 333 ; N guilsinglright ; G 108 ; B 48 33 270 416 ;
+U -1 ; WX 727 ; N oe ; G 148 ; B 30 -10 690 460 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 455 ; N zcaron ; G 264 ; B 27 0 418 674 ;
+U -1 ; WX 740 ; N Ydieresis ; G 204 ; B 22 0 703 834 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N exclamdown ; G 96 ; B 97 -218 204 469 ;
+U -1 ; WX 500 ; N cent ; G 97 ; B 53 -138 448 579 ;
+U -1 ; WX 527 ; N sterling ; G 98 ; B 12 -8 490 676 ;
+U -1 ; WX 559 ; N currency ; G 103 ; B -22 58 522 602 ;
+U -1 ; WX 549 ; N yen ; G 100 ; B -53 0 512 662 ;
+U -1 ; WX 200 ; N brokenbar ; G 314 ; B 67 -14 133 676 ;
+U -1 ; WX 500 ; N section ; G 102 ; B 70 -148 426 676 ;
+U -1 ; WX 353 ; N dieresis ; G 131 ; B 18 523 316 622 ;
+U -1 ; WX 760 ; N copyright ; G 303 ; B 38 -14 722 676 ;
+U -1 ; WX 307 ; N ordfeminine ; G 139 ; B 4 394 270 676 ;
+U -1 ; WX 500 ; N guillemotleft ; G 106 ; B 42 33 456 416 ;
+U -1 ; WX 571 ; N logicalnot ; G 311 ; B 30 108 534 386 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 760 ; N registered ; G 304 ; B 38 -14 722 676 ;
+U -1 ; WX 359 ; N macron ; G 128 ; B 11 547 322 601 ;
+U -1 ; WX 400 ; N degree ; G 293 ; B 57 390 343 676 ;
+U -1 ; WX 571 ; N plusminus ; G 298 ; B 30 0 534 568 ;
+U -1 ; WX 333 ; N twosuperior ; G 291 ; B 1 270 296 676 ;
+U -1 ; WX 328 ; N threesuperior ; G 292 ; B 14 262 291 676 ;
+U -1 ; WX 354 ; N acute ; G 125 ; B 93 507 317 678 ;
+U -1 ; WX 549 ; N mu ; G 315 ; B 36 -218 512 450 ;
+U -1 ; WX 487 ; N paragraph ; G 115 ; B -22 -154 450 662 ;
+U -1 ; WX 250 ; N periodcentered ; G 114 ; B 70 199 181 310 ;
+U -1 ; WX 333 ; N cedilla ; G 133 ; B 52 -215 261 0 ;
+U -1 ; WX 300 ; N onesuperior ; G 290 ; B 57 270 248 676 ;
+U -1 ; WX 341 ; N ordmasculine ; G 143 ; B 6 394 304 676 ;
+U -1 ; WX 500 ; N guillemotright ; G 120 ; B 44 33 458 416 ;
+U -1 ; WX 755 ; N onequarter ; G 300 ; B 37 -14 718 676 ;
+U -1 ; WX 783 ; N onehalf ; G 299 ; B 31 -14 746 676 ;
+U -1 ; WX 755 ; N threequarters ; G 301 ; B 15 -14 718 676 ;
+U -1 ; WX 444 ; N questiondown ; G 123 ; B 30 -218 376 468 ;
+U -1 ; WX 743 ; N Agrave ; G 152 ; B 15 0 706 890 ;
+U -1 ; WX 743 ; N Aacute ; G 151 ; B 15 0 706 890 ;
+U -1 ; WX 743 ; N Acircumflex ; G 153 ; B 15 0 706 886 ;
+U -1 ; WX 743 ; N Atilde ; G 155 ; B 15 0 706 850 ;
+U -1 ; WX 743 ; N Adieresis ; G 150 ; B 15 0 706 834 ;
+U -1 ; WX 743 ; N Aring ; G 156 ; B 15 0 706 915 ;
+U -1 ; WX 900 ; N AE ; G 138 ; B 0 0 863 662 ;
+U -1 ; WX 670 ; N Ccedilla ; G 158 ; B 28 -215 633 676 ;
+U -1 ; WX 634 ; N Egrave ; G 164 ; B 12 0 597 890 ;
+U -1 ; WX 634 ; N Eacute ; G 163 ; B 12 0 597 890 ;
+U -1 ; WX 634 ; N Ecircumflex ; G 165 ; B 12 0 597 886 ;
+U -1 ; WX 634 ; N Edieresis ; G 162 ; B 12 0 597 834 ;
+U -1 ; WX 352 ; N Igrave ; G 172 ; B 18 0 315 890 ;
+U -1 ; WX 354 ; N Iacute ; G 171 ; B 18 0 317 890 ;
+U -1 ; WX 359 ; N Icircumflex ; G 173 ; B 11 0 322 886 ;
+U -1 ; WX 353 ; N Idieresis ; G 170 ; B 18 0 316 834 ;
+U -1 ; WX 722 ; N Eth ; G 283 ; B 16 0 685 662 ;
+U -1 ; WX 744 ; N Ntilde ; G 179 ; B 12 -11 707 850 ;
+U -1 ; WX 725 ; N Ograve ; G 182 ; B 34 -14 688 890 ;
+U -1 ; WX 725 ; N Oacute ; G 181 ; B 34 -14 688 890 ;
+U -1 ; WX 725 ; N Ocircumflex ; G 183 ; B 34 -14 688 886 ;
+U -1 ; WX 725 ; N Otilde ; G 184 ; B 34 -14 688 850 ;
+U -1 ; WX 725 ; N Odieresis ; G 180 ; B 34 -14 688 834 ;
+U -1 ; WX 564 ; N multiply ; G 295 ; B 38 8 527 497 ;
+U -1 ; WX 725 ; N Oslash ; G 141 ; B 34 -80 688 734 ;
+U -1 ; WX 742 ; N Ugrave ; G 194 ; B 14 -14 705 890 ;
+U -1 ; WX 742 ; N Uacute ; G 193 ; B 14 -14 705 890 ;
+U -1 ; WX 742 ; N Ucircumflex ; G 195 ; B 14 -14 705 886 ;
+U -1 ; WX 742 ; N Udieresis ; G 192 ; B 14 -14 705 834 ;
+U -1 ; WX 740 ; N Yacute ; G 198 ; B 22 0 703 890 ;
+U -1 ; WX 579 ; N Thorn ; G 285 ; B 16 0 542 662 ;
+U -1 ; WX 505 ; N germandbls ; G 149 ; B 12 -9 468 683 ;
+U -1 ; WX 479 ; N agrave ; G 218 ; B 37 -10 442 678 ;
+U -1 ; WX 479 ; N aacute ; G 217 ; B 37 -10 442 678 ;
+U -1 ; WX 479 ; N acircumflex ; G 219 ; B 37 -10 442 674 ;
+U -1 ; WX 479 ; N atilde ; G 221 ; B 37 -10 442 638 ;
+U -1 ; WX 479 ; N adieresis ; G 216 ; B 37 -10 442 622 ;
+U -1 ; WX 479 ; N aring ; G 222 ; B 37 -10 442 721 ;
+U -1 ; WX 669 ; N ae ; G 144 ; B 38 -10 632 460 ;
+U -1 ; WX 449 ; N ccedilla ; G 226 ; B 25 -215 412 460 ;
+U -1 ; WX 461 ; N egrave ; G 230 ; B 25 -10 424 678 ;
+U -1 ; WX 461 ; N eacute ; G 229 ; B 25 -10 424 678 ;
+U -1 ; WX 461 ; N ecircumflex ; G 231 ; B 25 -10 424 674 ;
+U -1 ; WX 461 ; N edieresis ; G 228 ; B 25 -10 424 622 ;
+U -1 ; WX 290 ; N igrave ; G 238 ; B -8 0 253 678 ;
+U -1 ; WX 327 ; N iacute ; G 237 ; B 16 0 290 678 ;
+U -1 ; WX 332 ; N icircumflex ; G 239 ; B -16 0 295 674 ;
+U -1 ; WX 306 ; N idieresis ; G 236 ; B 11 0 269 622 ;
+U -1 ; WX 508 ; N eth ; G 287 ; B 29 -10 471 686 ;
+U -1 ; WX 522 ; N ntilde ; G 244 ; B 16 0 485 638 ;
+U -1 ; WX 507 ; N ograve ; G 247 ; B 29 -10 470 678 ;
+U -1 ; WX 507 ; N oacute ; G 246 ; B 29 -10 470 678 ;
+U -1 ; WX 507 ; N ocircumflex ; G 248 ; B 29 -10 470 674 ;
+U -1 ; WX 507 ; N otilde ; G 249 ; B 29 -10 470 638 ;
+U -1 ; WX 507 ; N odieresis ; G 245 ; B 29 -10 470 622 ;
+U -1 ; WX 571 ; N divide ; G 296 ; B 30 -10 534 516 ;
+U -1 ; WX 507 ; N oslash ; G 147 ; B 29 -112 470 551 ;
+U -1 ; WX 516 ; N ugrave ; G 258 ; B 9 -10 479 678 ;
+U -1 ; WX 516 ; N uacute ; G 257 ; B 9 -10 479 678 ;
+U -1 ; WX 516 ; N ucircumflex ; G 259 ; B 9 -10 479 674 ;
+U -1 ; WX 516 ; N udieresis ; G 256 ; B 9 -10 479 622 ;
+U -1 ; WX 512 ; N yacute ; G 262 ; B 14 -218 475 678 ;
+U -1 ; WX 507 ; N thorn ; G 288 ; B 5 -217 470 683 ;
+U -1 ; WX 512 ; N ydieresis ; G 266 ; B 14 -218 475 622 ;
+U -1 ; WX 368 ; N fraction ; G 99 ; B -168 -14 331 676 ;
+U -1 ; WX 558 ; N fi ; G 109 ; B 31 0 521 683 ;
+U -1 ; WX 558 ; N fl ; G 110 ; B 32 0 521 683 ;
+U -1 ; WX 344 ; N breve ; G 129 ; B 26 507 307 664 ;
+U -1 ; WX 333 ; N dotaccent ; G 130 ; B 118 523 217 622 ;
+U -1 ; WX 333 ; N ring ; G 132 ; B 67 512 266 711 ;
+U -1 ; WX 414 ; N hungarumlaut ; G 134 ; B -3 507 377 678 ;
+U -1 ; WX 333 ; N ogonek ; G 135 ; B 64 -165 249 0 ;
+U -1 ; WX 359 ; N caron ; G 136 ; B 11 507 322 674 ;
+U -1 ; WX 635 ; N Lslash ; G 140 ; B 12 0 598 662 ;
+U -1 ; WX 290 ; N dotlessi ; G 145 ; B 16 0 253 460 ;
+U -1 ; WX 296 ; N lslash ; G 146 ; B 19 0 259 683 ;
+U -1 ; WX 743 ; N Abreve ; G 154 ; B 15 0 706 876 ;
+U -1 ; WX 823 ; N Aogonek ; G 157 ; B 15 -165 786 674 ;
+U -1 ; WX 670 ; N Cacute ; G 159 ; B 28 -14 633 890 ;
+U -1 ; WX 670 ; N Ccaron ; G 160 ; B 28 -14 633 886 ;
+U -1 ; WX 722 ; N Dcaron ; G 161 ; B 16 0 685 886 ;
+U -1 ; WX 634 ; N Ecaron ; G 166 ; B 12 0 597 886 ;
+U -1 ; WX 634 ; N Edotaccent ; G 167 ; B 12 0 597 834 ;
+U -1 ; WX 648 ; N Eogonek ; G 168 ; B 12 -165 611 662 ;
+U -1 ; WX 746 ; N Gbreve ; G 169 ; B 32 -14 709 876 ;
+U -1 ; WX 352 ; N Idotaccent ; G 174 ; B 18 0 315 834 ;
+U -1 ; WX 635 ; N Lacute ; G 175 ; B 12 0 598 890 ;
+U -1 ; WX 635 ; N Lcaron ; G 176 ; B 12 0 598 676 ;
+U -1 ; WX 744 ; N Nacute ; G 177 ; B 12 -11 707 890 ;
+U -1 ; WX 744 ; N Ncaron ; G 178 ; B 12 -11 707 886 ;
+U -1 ; WX 725 ; N Ohungarumlaut ; G 185 ; B 34 -14 688 890 ;
+U -1 ; WX 696 ; N Racute ; G 186 ; B 17 0 659 890 ;
+U -1 ; WX 696 ; N Rcaron ; G 187 ; B 17 0 659 886 ;
+U -1 ; WX 556 ; N Sacute ; G 188 ; B 42 -14 491 890 ;
+U -1 ; WX 556 ; N Scedilla ; G 190 ; B 42 -215 491 676 ;
+U -1 ; WX 630 ; N Tcaron ; G 191 ; B 17 0 593 886 ;
+U -1 ; WX 742 ; N Uring ; G 196 ; B 14 -14 705 923 ;
+U -1 ; WX 742 ; N Uhungarumlaut ; G 197 ; B 14 -14 705 890 ;
+U -1 ; WX 634 ; N Zacute ; G 199 ; B 9 0 597 890 ;
+U -1 ; WX 634 ; N Zdotaccent ; G 201 ; B 9 0 597 834 ;
+U -1 ; WX 743 ; N Amacron ; G 202 ; B 15 0 706 813 ;
+U -1 ; WX 630 ; N Tcommaaccent ; G 203 ; B 17 -281 593 662 ;
+U -1 ; WX 634 ; N Emacron ; G 205 ; B 12 0 597 813 ;
+U -1 ; WX 359 ; N Imacron ; G 206 ; B 11 0 322 813 ;
+U -1 ; WX 434 ; N Iogonek ; G 207 ; B 18 -165 397 662 ;
+U -1 ; WX 760 ; N Kcommaaccent ; G 208 ; B 34 -281 723 662 ;
+U -1 ; WX 635 ; N Lcommaaccent ; G 209 ; B 12 -281 598 662 ;
+U -1 ; WX 744 ; N Ncommaaccent ; G 210 ; B 12 -281 707 662 ;
+U -1 ; WX 725 ; N Omacron ; G 211 ; B 34 -14 688 813 ;
+U -1 ; WX 696 ; N Rcommaaccent ; G 212 ; B 17 -281 659 662 ;
+U -1 ; WX 746 ; N Gcommaaccent ; G 213 ; B 32 -281 709 676 ;
+U -1 ; WX 742 ; N Umacron ; G 214 ; B 14 -14 705 813 ;
+U -1 ; WX 742 ; N Uogonek ; G 215 ; B 14 -165 705 662 ;
+U -1 ; WX 479 ; N abreve ; G 220 ; B 37 -10 442 664 ;
+U -1 ; WX 481 ; N aogonek ; G 223 ; B 37 -165 444 460 ;
+U -1 ; WX 449 ; N cacute ; G 224 ; B 25 -10 412 678 ;
+U -1 ; WX 449 ; N ccaron ; G 225 ; B 25 -10 412 674 ;
+U -1 ; WX 636 ; N dcaron ; G 227 ; B 27 -10 599 683 ;
+U -1 ; WX 461 ; N ecaron ; G 232 ; B 25 -10 424 674 ;
+U -1 ; WX 461 ; N edotaccent ; G 233 ; B 25 -10 424 622 ;
+U -1 ; WX 461 ; N eogonek ; G 234 ; B 25 -165 424 460 ;
+U -1 ; WX 507 ; N gbreve ; G 235 ; B 28 -218 470 664 ;
+U -1 ; WX 327 ; N lacute ; G 240 ; B 19 0 290 890 ;
+U -1 ; WX 385 ; N lcaron ; G 241 ; B 19 0 348 683 ;
+U -1 ; WX 522 ; N nacute ; G 242 ; B 16 0 485 678 ;
+U -1 ; WX 522 ; N ncaron ; G 243 ; B 16 0 485 674 ;
+U -1 ; WX 507 ; N ohungarumlaut ; G 250 ; B 29 -10 470 678 ;
+U -1 ; WX 372 ; N racute ; G 251 ; B 5 0 335 678 ;
+U -1 ; WX 402 ; N sacute ; G 252 ; B 51 -10 365 678 ;
+U -1 ; WX 389 ; N scommaaccent ; G 254 ; B 51 -281 348 459 ;
+U -1 ; WX 337 ; N tcaron ; G 255 ; B 13 -10 300 676 ;
+U -1 ; WX 516 ; N uring ; G 260 ; B 9 -10 479 711 ;
+U -1 ; WX 516 ; N uhungarumlaut ; G 261 ; B 9 -10 479 678 ;
+U -1 ; WX 455 ; N zacute ; G 263 ; B 27 0 418 678 ;
+U -1 ; WX 455 ; N zdotaccent ; G 265 ; B 27 0 418 622 ;
+U -1 ; WX 316 ; N tcommaaccent ; G 267 ; B 13 -281 279 579 ;
+U -1 ; WX 479 ; N amacron ; G 268 ; B 37 -10 442 601 ;
+U -1 ; WX 461 ; N emacron ; G 269 ; B 25 -10 424 601 ;
+U -1 ; WX 329 ; N imacron ; G 270 ; B -16 0 292 601 ;
+U -1 ; WX 542 ; N kcommaaccent ; G 271 ; B 7 -281 505 683 ;
+U -1 ; WX 294 ; N lcommaaccent ; G 272 ; B 19 -281 257 683 ;
+U -1 ; WX 522 ; N ncommaaccent ; G 273 ; B 16 -281 485 460 ;
+U -1 ; WX 507 ; N omacron ; G 274 ; B 29 -10 470 601 ;
+U -1 ; WX 372 ; N rcommaaccent ; G 275 ; B 5 -281 335 460 ;
+U -1 ; WX 516 ; N umacron ; G 276 ; B 9 -10 479 601 ;
+U -1 ; WX 537 ; N uogonek ; G 277 ; B 9 -165 500 450 ;
+U -1 ; WX 372 ; N rcaron ; G 278 ; B 5 0 335 674 ;
+U -1 ; WX 389 ; N scedilla ; G 279 ; B 51 -215 348 459 ;
+U -1 ; WX 507 ; N gcommaaccent ; G 280 ; B 28 -218 470 736 ;
+U -1 ; WX 315 ; N iogonek ; G 281 ; B 16 -165 278 683 ;
+U -1 ; WX 556 ; N Scommaaccent ; G 282 ; B 42 -281 491 676 ;
+U -1 ; WX 722 ; N Dcroat ; G 284 ; B 16 0 685 662 ;
+U -1 ; WX 537 ; N dcroat ; G 286 ; B 27 -10 500 683 ;
+U -1 ; WX 571 ; N minus ; G 294 ; B 30 220 534 286 ;
+U -1 ; WX 333 ; N commaaccent ; G 302 ; B 97 -281 236 -38 ;
+U -1 ; WX 503 ; N lozenge ; G 305 ; B 18 0 466 740 ;
+U -1 ; WX 645 ; N Delta ; G 306 ; B 6 0 608 688 ;
+U -1 ; WX 571 ; N notequal ; G 307 ; B 30 -3 534 509 ;
+U -1 ; WX 563 ; N radical ; G 308 ; B -2 -65 526 924 ;
+U -1 ; WX 573 ; N lessequal ; G 309 ; B 28 0 536 628 ;
+U -1 ; WX 573 ; N greaterequal ; G 310 ; B 28 0 536 628 ;
+U -1 ; WX 732 ; N summation ; G 312 ; B 14 -123 695 752 ;
+U -1 ; WX 499 ; N partialdiff ; G 313 ; B 26 -10 462 753 ;
+U -1 ; WX 743 ; N afii10017 ; G 316 ; B 15 0 706 674 ;
+U -1 ; WX 650 ; N afii10018 ; G 317 ; B 12 0 588 662 ;
+U -1 ; WX 625 ; N afii10019 ; G 318 ; B 12 0 588 662 ;
+U -1 ; WX 563 ; N afii10020 ; G 319 ; B 12 0 526 662 ;
+U -1 ; WX 681 ; N afii10021 ; G 320 ; B 23 -170 644 662 ;
+U -1 ; WX 634 ; N afii10022 ; G 321 ; B 12 0 597 662 ;
+U -1 ; WX 634 ; N afii10023 ; G 322 ; B 12 0 597 833 ;
+U -1 ; WX 964 ; N afii10024 ; G 323 ; B 11 0 927 668 ;
+U -1 ; WX 516 ; N afii10025 ; G 324 ; B 10 -14 479 675 ;
+U -1 ; WX 732 ; N afii10026 ; G 325 ; B 12 0 695 662 ;
+U -1 ; WX 732 ; N afii10027 ; G 326 ; B 12 0 695 875 ;
+U -1 ; WX 690 ; N afii10028 ; G 327 ; B 12 0 651 668 ;
+U -1 ; WX 719 ; N afii10029 ; G 328 ; B 26 -13 682 662 ;
+U -1 ; WX 900 ; N afii10030 ; G 329 ; B 12 0 863 662 ;
+U -1 ; WX 732 ; N afii10031 ; G 330 ; B 12 0 695 662 ;
+U -1 ; WX 725 ; N afii10032 ; G 331 ; B 34 -14 688 676 ;
+U -1 ; WX 732 ; N afii10033 ; G 332 ; B 12 0 695 662 ;
+U -1 ; WX 575 ; N afii10034 ; G 333 ; B 12 0 538 662 ;
+U -1 ; WX 670 ; N afii10035 ; G 334 ; B 28 -14 633 676 ;
+U -1 ; WX 630 ; N afii10036 ; G 335 ; B 17 0 593 662 ;
+U -1 ; WX 723 ; N afii10037 ; G 336 ; B 20 -12 686 662 ;
+U -1 ; WX 759 ; N afii10038 ; G 337 ; B 10 0 722 662 ;
+U -1 ; WX 741 ; N afii10039 ; G 338 ; B 10 0 704 662 ;
+U -1 ; WX 720 ; N afii10040 ; G 339 ; B 12 -170 683 662 ;
+U -1 ; WX 718 ; N afii10041 ; G 340 ; B 19 0 681 662 ;
+U -1 ; WX 989 ; N afii10042 ; G 341 ; B 12 0 952 662 ;
+U -1 ; WX 997 ; N afii10043 ; G 342 ; B 12 -170 960 662 ;
+U -1 ; WX 733 ; N afii10044 ; G 343 ; B 17 0 696 662 ;
+U -1 ; WX 872 ; N afii10045 ; G 344 ; B 12 0 835 662 ;
+U -1 ; WX 579 ; N afii10046 ; G 345 ; B 16 0 542 662 ;
+U -1 ; WX 652 ; N afii10047 ; G 346 ; B 10 -14 615 676 ;
+U -1 ; WX 961 ; N afii10048 ; G 347 ; B 12 -14 924 676 ;
+U -1 ; WX 696 ; N afii10049 ; G 348 ; B 17 0 659 662 ;
+U -1 ; WX 479 ; N afii10065 ; G 349 ; B 37 -10 442 460 ;
+U -1 ; WX 507 ; N afii10066 ; G 350 ; B 28 -10 470 689 ;
+U -1 ; WX 474 ; N afii10067 ; G 351 ; B 15 0 437 450 ;
+U -1 ; WX 404 ; N afii10068 ; G 352 ; B 15 0 367 450 ;
+U -1 ; WX 537 ; N afii10069 ; G 353 ; B 36 -125 500 450 ;
+U -1 ; WX 461 ; N afii10070 ; G 354 ; B 25 -10 424 460 ;
+U -1 ; WX 461 ; N afii10071 ; G 355 ; B 25 -10 424 622 ;
+U -1 ; WX 693 ; N afii10072 ; G 356 ; B 14 0 656 460 ;
+U -1 ; WX 390 ; N afii10073 ; G 357 ; B 34 -10 353 459 ;
+U -1 ; WX 534 ; N afii10074 ; G 358 ; B 15 0 497 450 ;
+U -1 ; WX 534 ; N afii10075 ; G 359 ; B 15 0 497 667 ;
+U -1 ; WX 535 ; N afii10076 ; G 360 ; B 15 0 498 460 ;
+U -1 ; WX 517 ; N afii10077 ; G 361 ; B 14 -9 480 450 ;
+U -1 ; WX 648 ; N afii10078 ; G 362 ; B 15 -14 611 450 ;
+U -1 ; WX 519 ; N afii10079 ; G 363 ; B 15 0 482 450 ;
+U -1 ; WX 507 ; N afii10080 ; G 364 ; B 29 -10 470 460 ;
+U -1 ; WX 539 ; N afii10081 ; G 365 ; B 15 0 502 450 ;
+U -1 ; WX 507 ; N afii10082 ; G 366 ; B 5 -217 470 460 ;
+U -1 ; WX 449 ; N afii10083 ; G 367 ; B 25 -10 412 460 ;
+U -1 ; WX 462 ; N afii10084 ; G 368 ; B 31 0 425 450 ;
+U -1 ; WX 512 ; N afii10085 ; G 369 ; B 14 -218 475 450 ;
+U -1 ; WX 716 ; N afii10086 ; G 370 ; B 27 -217 679 683 ;
+U -1 ; WX 516 ; N afii10087 ; G 371 ; B 17 0 479 450 ;
+U -1 ; WX 522 ; N afii10088 ; G 372 ; B 15 -125 485 450 ;
+U -1 ; WX 502 ; N afii10089 ; G 373 ; B 13 0 465 450 ;
+U -1 ; WX 720 ; N afii10090 ; G 374 ; B 15 0 683 450 ;
+U -1 ; WX 723 ; N afii10091 ; G 375 ; B 15 -122 686 450 ;
+U -1 ; WX 517 ; N afii10092 ; G 376 ; B 14 0 480 450 ;
+U -1 ; WX 642 ; N afii10093 ; G 377 ; B 15 0 605 450 ;
+U -1 ; WX 441 ; N afii10094 ; G 378 ; B 15 0 404 450 ;
+U -1 ; WX 453 ; N afii10095 ; G 379 ; B 28 -9 416 460 ;
+U -1 ; WX 674 ; N afii10096 ; G 380 ; B 15 -10 637 460 ;
+U -1 ; WX 521 ; N afii10097 ; G 381 ; B 13 0 484 450 ;
+U -1 ; WX 634 ; N uni0400 ; G 382 ; B 12 0 597 883 ;
+U -1 ; WX 768 ; N afii10051 ; G 383 ; B 17 -146 711 662 ;
+U -1 ; WX 583 ; N afii10052 ; G 384 ; B 12 0 546 883 ;
+U -1 ; WX 670 ; N afii10053 ; G 385 ; B 28 -14 633 676 ;
+U -1 ; WX 556 ; N afii10054 ; G 386 ; B 42 -14 491 676 ;
+U -1 ; WX 346 ; N afii10055 ; G 387 ; B 12 0 309 662 ;
+U -1 ; WX 347 ; N afii10056 ; G 388 ; B 12 0 310 811 ;
+U -1 ; WX 407 ; N afii10057 ; G 389 ; B 10 -14 370 662 ;
+U -1 ; WX 985 ; N afii10058 ; G 390 ; B 26 -13 948 662 ;
+U -1 ; WX 985 ; N afii10059 ; G 391 ; B 19 0 948 662 ;
+U -1 ; WX 886 ; N afii10060 ; G 392 ; B 17 0 849 662 ;
+U -1 ; WX 722 ; N afii10061 ; G 393 ; B 34 0 673 883 ;
+U -1 ; WX 739 ; N uni040D ; G 394 ; B 19 0 702 883 ;
+U -1 ; WX 764 ; N afii10062 ; G 395 ; B 20 -12 727 869 ;
+U -1 ; WX 739 ; N afii10145 ; G 396 ; B 19 -183 702 662 ;
+U -1 ; WX 461 ; N uni0450 ; G 397 ; B 25 -10 424 681 ;
+U -1 ; WX 548 ; N afii10099 ; G 398 ; B 9 -217 473 683 ;
+U -1 ; WX 404 ; N afii10100 ; G 399 ; B 15 0 367 681 ;
+U -1 ; WX 449 ; N afii10101 ; G 400 ; B 25 -10 412 460 ;
+U -1 ; WX 389 ; N afii10102 ; G 401 ; B 51 -10 348 459 ;
+U -1 ; WX 290 ; N afii10103 ; G 402 ; B 16 0 253 683 ;
+U -1 ; WX 321 ; N afii10104 ; G 403 ; B -14 0 284 599 ;
+U -1 ; WX 278 ; N afii10105 ; G 404 ; B -70 -218 194 683 ;
+U -1 ; WX 735 ; N afii10106 ; G 405 ; B 14 -9 698 450 ;
+U -1 ; WX 725 ; N afii10107 ; G 406 ; B 18 0 688 450 ;
+U -1 ; WX 572 ; N afii10108 ; G 407 ; B 9 0 535 683 ;
+U -1 ; WX 535 ; N afii10109 ; G 408 ; B 15 0 498 681 ;
+U -1 ; WX 534 ; N uni045D ; G 409 ; B 15 0 497 681 ;
+U -1 ; WX 512 ; N afii10110 ; G 410 ; B 14 -218 475 667 ;
+U -1 ; WX 522 ; N afii10193 ; G 411 ; B 18 -130 485 450 ;
+U -1 ; WX 579 ; N uni048C ; G 412 ; B 16 0 542 662 ;
+U -1 ; WX 504 ; N uni048D ; G 413 ; B 15 0 426 450 ;
+U -1 ; WX 584 ; N uni048E ; G 414 ; B 16 0 547 662 ;
+U -1 ; WX 523 ; N uni048F ; G 415 ; B 5 -217 486 460 ;
+U -1 ; WX 583 ; N afii10050 ; G 416 ; B 12 0 546 767 ;
+U -1 ; WX 422 ; N afii10098 ; G 417 ; B 18 0 385 538 ;
+U -1 ; WX 583 ; N uni0492 ; G 418 ; B 12 0 546 662 ;
+U -1 ; WX 422 ; N uni0493 ; G 419 ; B 18 0 385 450 ;
+U -1 ; WX 618 ; N uni0494 ; G 420 ; B 12 -218 581 662 ;
+U -1 ; WX 477 ; N uni0495 ; G 421 ; B 18 -218 440 450 ;
+U -1 ; WX 1068 ; N uni0496 ; G 422 ; B 36 -129 1031 668 ;
+U -1 ; WX 777 ; N uni0497 ; G 423 ; B 25 -108 740 460 ;
+U -1 ; WX 556 ; N uni0498 ; G 424 ; B 14 -219 491 676 ;
+U -1 ; WX 392 ; N uni0499 ; G 425 ; B 29 -215 355 459 ;
+U -1 ; WX 728 ; N uni049A ; G 426 ; B 34 -129 691 668 ;
+U -1 ; WX 530 ; N uni049B ; G 427 ; B 7 -108 493 460 ;
+U -1 ; WX 722 ; N uni049C ; G 428 ; B 34 0 673 668 ;
+U -1 ; WX 527 ; N uni049D ; G 429 ; B 7 0 490 460 ;
+U -1 ; WX 722 ; N uni049E ; G 430 ; B 34 0 673 668 ;
+U -1 ; WX 527 ; N uni049F ; G 431 ; B 7 0 490 460 ;
+U -1 ; WX 852 ; N uni04A0 ; G 432 ; B 17 0 803 668 ;
+U -1 ; WX 671 ; N uni04A1 ; G 433 ; B 7 0 585 460 ;
+U -1 ; WX 747 ; N uni04A2 ; G 434 ; B 19 -129 710 662 ;
+U -1 ; WX 527 ; N uni04A3 ; G 435 ; B 18 -108 490 450 ;
+U -1 ; WX 995 ; N uni04A4 ; G 436 ; B 19 0 958 662 ;
+U -1 ; WX 681 ; N uni04A5 ; G 437 ; B 18 0 644 450 ;
+U -1 ; WX 1031 ; N uni04A6 ; G 438 ; B 19 -218 994 662 ;
+U -1 ; WX 736 ; N uni04A7 ; G 439 ; B 18 -218 699 450 ;
+U -1 ; WX 670 ; N uni04A8 ; G 440 ; B 28 -14 633 676 ;
+U -1 ; WX 449 ; N uni04A9 ; G 441 ; B 25 -10 412 460 ;
+U -1 ; WX 670 ; N uni04AA ; G 442 ; B 28 -215 633 676 ;
+U -1 ; WX 448 ; N uni04AB ; G 443 ; B 24 -215 411 460 ;
+U -1 ; WX 630 ; N uni04AC ; G 444 ; B 17 -129 593 662 ;
+U -1 ; WX 492 ; N uni04AD ; G 445 ; B 31 -108 455 450 ;
+U -1 ; WX 740 ; N uni04AE ; G 446 ; B 22 0 703 662 ;
+U -1 ; WX 514 ; N uni04AF ; G 447 ; B 19 -196 477 450 ;
+U -1 ; WX 740 ; N uni04B0 ; G 448 ; B 22 0 703 662 ;
+U -1 ; WX 514 ; N uni04B1 ; G 449 ; B 19 -196 477 450 ;
+U -1 ; WX 747 ; N uni04B2 ; G 450 ; B 10 -129 710 662 ;
+U -1 ; WX 529 ; N uni04B3 ; G 451 ; B 17 -108 492 450 ;
+U -1 ; WX 992 ; N uni04B4 ; G 452 ; B 17 -129 955 662 ;
+U -1 ; WX 731 ; N uni04B5 ; G 453 ; B 31 -108 694 450 ;
+U -1 ; WX 747 ; N uni04B6 ; G 454 ; B 19 -129 710 662 ;
+U -1 ; WX 512 ; N uni04B7 ; G 455 ; B 18 -108 475 450 ;
+U -1 ; WX 739 ; N uni04B8 ; G 456 ; B 19 1 702 663 ;
+U -1 ; WX 507 ; N uni04B9 ; G 457 ; B 18 -1 470 450 ;
+U -1 ; WX 739 ; N uni04BA ; G 458 ; B 19 0 702 662 ;
+U -1 ; WX 507 ; N uni04BB ; G 459 ; B 18 0 470 450 ;
+U -1 ; WX 719 ; N uni04BC ; G 460 ; B 25 -10 682 692 ;
+U -1 ; WX 461 ; N uni04BD ; G 461 ; B 25 -10 424 460 ;
+U -1 ; WX 719 ; N uni04BE ; G 462 ; B 25 -10 682 692 ;
+U -1 ; WX 461 ; N uni04BF ; G 463 ; B 25 -10 424 460 ;
+U -1 ; WX 346 ; N uni04C0 ; G 464 ; B 12 0 309 662 ;
+U -1 ; WX 964 ; N uni04C1 ; G 465 ; B 11 0 927 879 ;
+U -1 ; WX 693 ; N uni04C2 ; G 466 ; B 14 0 656 667 ;
+U -1 ; WX 722 ; N uni04C3 ; G 467 ; B 34 -218 655 668 ;
+U -1 ; WX 504 ; N uni04C4 ; G 468 ; B 7 -226 468 460 ;
+U -1 ; WX 739 ; N uni04C7 ; G 469 ; B 19 -177 702 662 ;
+U -1 ; WX 522 ; N uni04C8 ; G 470 ; B 18 -218 485 450 ;
+U -1 ; WX 739 ; N uni04CB ; G 471 ; B 19 -129 702 662 ;
+U -1 ; WX 507 ; N uni04CC ; G 472 ; B 18 -108 470 450 ;
+U -1 ; WX 743 ; N uni04D0 ; G 473 ; B 15 0 706 869 ;
+U -1 ; WX 479 ; N uni04D1 ; G 474 ; B 37 -10 442 657 ;
+U -1 ; WX 743 ; N uni04D2 ; G 475 ; B 15 0 706 811 ;
+U -1 ; WX 479 ; N uni04D3 ; G 476 ; B 37 -10 442 599 ;
+U -1 ; WX 900 ; N uni04D4 ; G 477 ; B 0 0 863 662 ;
+U -1 ; WX 669 ; N uni04D5 ; G 478 ; B 38 -10 632 460 ;
+U -1 ; WX 634 ; N uni04D6 ; G 479 ; B 12 0 597 869 ;
+U -1 ; WX 461 ; N uni04D7 ; G 480 ; B 25 -10 424 657 ;
+U -1 ; WX 719 ; N uni04D8 ; G 481 ; B 25 -10 682 692 ;
+U -1 ; WX 461 ; N afii10846 ; G 482 ; B 25 -10 424 460 ;
+U -1 ; WX 719 ; N uni04DA ; G 483 ; B 25 -10 682 851 ;
+U -1 ; WX 460 ; N uni04DB ; G 484 ; B 24 -10 423 599 ;
+U -1 ; WX 964 ; N uni04DC ; G 485 ; B 11 0 927 821 ;
+U -1 ; WX 693 ; N uni04DD ; G 486 ; B 14 0 656 609 ;
+U -1 ; WX 516 ; N uni04DE ; G 487 ; B 10 -14 479 821 ;
+U -1 ; WX 390 ; N uni04DF ; G 488 ; B 34 -10 353 609 ;
+U -1 ; WX 556 ; N uni04E0 ; G 489 ; B 14 -14 496 676 ;
+U -1 ; WX 391 ; N uni04E1 ; G 490 ; B 28 -10 354 450 ;
+U -1 ; WX 732 ; N uni04E2 ; G 491 ; B 12 0 695 776 ;
+U -1 ; WX 534 ; N uni04E3 ; G 492 ; B 15 0 497 564 ;
+U -1 ; WX 732 ; N uni04E4 ; G 493 ; B 12 0 695 821 ;
+U -1 ; WX 534 ; N uni04E5 ; G 494 ; B 15 0 497 609 ;
+U -1 ; WX 725 ; N uni04E6 ; G 495 ; B 34 -14 688 821 ;
+U -1 ; WX 507 ; N uni04E7 ; G 496 ; B 29 -10 470 609 ;
+U -1 ; WX 725 ; N uni04E8 ; G 497 ; B 34 -14 688 676 ;
+U -1 ; WX 507 ; N uni04E9 ; G 498 ; B 29 -10 470 460 ;
+U -1 ; WX 725 ; N uni04EA ; G 499 ; B 34 -14 688 811 ;
+U -1 ; WX 507 ; N uni04EB ; G 500 ; B 29 -10 470 599 ;
+U -1 ; WX 652 ; N uni04EC ; G 501 ; B 10 -14 615 821 ;
+U -1 ; WX 453 ; N uni04ED ; G 502 ; B 28 -9 416 610 ;
+U -1 ; WX 723 ; N uni04EE ; G 503 ; B 20 -12 686 776 ;
+U -1 ; WX 512 ; N uni04EF ; G 504 ; B 14 -218 475 564 ;
+U -1 ; WX 723 ; N uni04F0 ; G 505 ; B 20 -12 686 821 ;
+U -1 ; WX 512 ; N uni04F1 ; G 506 ; B 14 -218 475 609 ;
+U -1 ; WX 723 ; N uni04F2 ; G 507 ; B 20 -12 686 893 ;
+U -1 ; WX 512 ; N uni04F3 ; G 508 ; B 14 -218 475 681 ;
+U -1 ; WX 718 ; N uni04F4 ; G 509 ; B 19 0 681 821 ;
+U -1 ; WX 502 ; N uni04F5 ; G 510 ; B 13 0 465 609 ;
+U -1 ; WX 872 ; N uni04F8 ; G 511 ; B 12 0 835 821 ;
+U -1 ; WX 642 ; N uni04F9 ; G 512 ; B 15 0 605 609 ;
+U -1 ; WX 404 ; N uniF6C4 ; G 513 ; B 15 0 367 450 ;
+U -1 ; WX 507 ; N uniF6C5 ; G 514 ; B 12 -10 470 689 ;
+U -1 ; WX 537 ; N uniF6C6 ; G 515 ; B 36 -125 500 450 ;
+U -1 ; WX 539 ; N uniF6C7 ; G 516 ; B 15 0 502 450 ;
+U -1 ; WX 462 ; N uniF6C8 ; G 517 ; B 31 0 425 450 ;
+U -1 ; WX 670 ; N Ccircumflex ; G 518 ; B 28 -14 633 879 ;
+U -1 ; WX 449 ; N ccircumflex ; G 519 ; B 25 -10 412 667 ;
+U -1 ; WX 670 ; N Cdotaccent ; G 520 ; B 28 -14 633 811 ;
+U -1 ; WX 449 ; N cdotaccent ; G 521 ; B 25 -10 412 599 ;
+U -1 ; WX 634 ; N Ebreve ; G 522 ; B 12 0 597 869 ;
+U -1 ; WX 461 ; N ebreve ; G 523 ; B 25 -10 424 657 ;
+U -1 ; WX 746 ; N Gcircumflex ; G 524 ; B 32 -14 709 879 ;
+U -1 ; WX 507 ; N gcircumflex ; G 525 ; B 28 -218 470 667 ;
+U -1 ; WX 746 ; N Gdotaccent ; G 526 ; B 32 -14 709 811 ;
+U -1 ; WX 507 ; N gdotaccent ; G 527 ; B 28 -218 470 599 ;
+U -1 ; WX 732 ; N Hcircumflex ; G 528 ; B 12 0 695 879 ;
+U -1 ; WX 524 ; N hcircumflex ; G 529 ; B 8 0 487 890 ;
+U -1 ; WX 748 ; N Hbar ; G 530 ; B 10 0 711 662 ;
+U -1 ; WX 572 ; N hbar ; G 531 ; B 9 0 535 683 ;
+U -1 ; WX 363 ; N Itilde ; G 532 ; B -4 0 326 818 ;
+U -1 ; WX 337 ; N itilde ; G 533 ; B -30 0 300 606 ;
+U -1 ; WX 346 ; N Ibreve ; G 534 ; B 12 0 309 869 ;
+U -1 ; WX 312 ; N ibreve ; G 535 ; B -6 0 275 657 ;
+U -1 ; WX 710 ; N IJ ; G 536 ; B 12 -14 673 662 ;
+U -1 ; WX 417 ; N ij ; G 537 ; B 16 -214 380 687 ;
+U -1 ; WX 407 ; N Jcircumflex ; G 538 ; B 10 -14 370 879 ;
+U -1 ; WX 332 ; N jcircumflex ; G 539 ; B -70 -218 295 723 ;
+U -1 ; WX 527 ; N kgreenlandic ; G 540 ; B 7 0 490 460 ;
+U -1 ; WX 635 ; N Ldot ; G 541 ; B 12 0 598 662 ;
+U -1 ; WX 416 ; N ldot ; G 542 ; B 19 0 365 683 ;
+U -1 ; WX 619 ; N napostrophe ; G 543 ; B 23 0 582 599 ;
+U -1 ; WX 744 ; N Eng ; G 544 ; B 12 -218 707 662 ;
+U -1 ; WX 500 ; N eng ; G 545 ; B 16 -218 424 460 ;
+U -1 ; WX 725 ; N Obreve ; G 546 ; B 34 -14 688 869 ;
+U -1 ; WX 507 ; N obreve ; G 547 ; B 29 -10 470 657 ;
+U -1 ; WX 556 ; N Scircumflex ; G 548 ; B 42 -14 491 879 ;
+U -1 ; WX 392 ; N scircumflex ; G 549 ; B 44 -10 355 667 ;
+U -1 ; WX 630 ; N _d_550 ; G 550 ; B 17 -215 593 662 ;
+U -1 ; WX 316 ; N _d_551 ; G 551 ; B 13 -225 279 579 ;
+U -1 ; WX 630 ; N Tbar ; G 552 ; B 17 0 593 662 ;
+U -1 ; WX 316 ; N tbar ; G 553 ; B 3 -10 279 579 ;
+U -1 ; WX 742 ; N Utilde ; G 554 ; B 14 -14 705 818 ;
+U -1 ; WX 516 ; N utilde ; G 555 ; B 9 -10 479 606 ;
+U -1 ; WX 742 ; N Ubreve ; G 556 ; B 14 -14 705 869 ;
+U -1 ; WX 516 ; N ubreve ; G 557 ; B 9 -10 479 657 ;
+U -1 ; WX 969 ; N Wcircumflex ; G 558 ; B 5 -11 932 879 ;
+U -1 ; WX 731 ; N wcircumflex ; G 559 ; B 21 -14 694 667 ;
+U -1 ; WX 740 ; N Ycircumflex ; G 560 ; B 22 0 703 879 ;
+U -1 ; WX 512 ; N ycircumflex ; G 561 ; B 14 -218 475 667 ;
+U -1 ; WX 420 ; N longs ; G 562 ; B 20 0 383 683 ;
+U -1 ; WX 960 ; N afii61352 ; G 563 ; B 8 -15 923 669 ;
+U -1 ; WX 690 ; N infinity ; G 564 ; B 25 53 653 434 ;
+U -1 ; WX 740 ; N uni1EF6 ; G 565 ; B 22 0 703 923 ;
+U -1 ; WX 512 ; N uni1EF7 ; G 566 ; B 14 -218 475 719 ;
+U -1 ; WX 740 ; N uni1EF4 ; G 567 ; B 22 -207 703 662 ;
+U -1 ; WX 512 ; N uni1EF5 ; G 568 ; B 14 -218 475 450 ;
+U -1 ; WX 743 ; N uni1EA2 ; G 569 ; B 15 0 706 923 ;
+U -1 ; WX 743 ; N uni1EA0 ; G 570 ; B 15 -207 706 674 ;
+U -1 ; WX 743 ; N uni1EA6 ; G 571 ; B 15 0 706 1095 ;
+U -1 ; WX 743 ; N uni1EA4 ; G 572 ; B 15 0 706 1095 ;
+U -1 ; WX 743 ; N uni1EAA ; G 573 ; B 15 0 706 1053 ;
+U -1 ; WX 743 ; N uni1EA8 ; G 574 ; B 15 0 706 1048 ;
+U -1 ; WX 743 ; N uni1EAC ; G 575 ; B 15 -207 706 902 ;
+U -1 ; WX 743 ; N uni1EB0 ; G 576 ; B 15 0 706 1098 ;
+U -1 ; WX 743 ; N uni1EAE ; G 577 ; B 15 0 706 1098 ;
+U -1 ; WX 743 ; N uni1EB4 ; G 578 ; B 15 0 706 1055 ;
+U -1 ; WX 743 ; N uni1EB2 ; G 579 ; B 15 0 706 1093 ;
+U -1 ; WX 743 ; N uni1EB6 ; G 580 ; B 15 -207 706 900 ;
+U -1 ; WX 634 ; N uni1EBC ; G 581 ; B 12 0 597 873 ;
+U -1 ; WX 634 ; N uni1EBA ; G 582 ; B 12 0 597 923 ;
+U -1 ; WX 634 ; N uni1EB8 ; G 583 ; B 12 -207 597 662 ;
+U -1 ; WX 634 ; N uni1EC0 ; G 584 ; B 12 0 597 1095 ;
+U -1 ; WX 634 ; N uni1EBE ; G 585 ; B 12 0 597 1095 ;
+U -1 ; WX 634 ; N uni1EC4 ; G 586 ; B 12 0 597 1053 ;
+U -1 ; WX 634 ; N uni1EC2 ; G 587 ; B 12 0 597 1048 ;
+U -1 ; WX 634 ; N uni1EC6 ; G 588 ; B 12 -207 597 902 ;
+U -1 ; WX 352 ; N uni1EC8 ; G 589 ; B 18 0 315 923 ;
+U -1 ; WX 479 ; N uni1EA3 ; G 590 ; B 37 -10 442 719 ;
+U -1 ; WX 479 ; N uni1EA1 ; G 591 ; B 37 -207 442 460 ;
+U -1 ; WX 479 ; N uni1EA7 ; G 592 ; B 37 -10 442 891 ;
+U -1 ; WX 479 ; N uni1EA5 ; G 593 ; B 37 -10 442 891 ;
+U -1 ; WX 479 ; N uni1EAB ; G 594 ; B 37 -10 442 849 ;
+U -1 ; WX 493 ; N uni1EA9 ; G 595 ; B 37 -10 456 844 ;
+U -1 ; WX 479 ; N uni1EAD ; G 596 ; B 37 -207 442 698 ;
+U -1 ; WX 479 ; N uni1EB1 ; G 597 ; B 37 -10 442 895 ;
+U -1 ; WX 479 ; N uni1EAF ; G 598 ; B 37 -10 442 895 ;
+U -1 ; WX 479 ; N uni1EB5 ; G 599 ; B 37 -10 442 852 ;
+U -1 ; WX 479 ; N uni1EB3 ; G 600 ; B 37 -10 442 890 ;
+U -1 ; WX 479 ; N uni1EB7 ; G 601 ; B 37 -207 442 697 ;
+U -1 ; WX 461 ; N uni1EBD ; G 602 ; B 25 -10 424 673 ;
+U -1 ; WX 461 ; N uni1EBB ; G 603 ; B 25 -10 424 719 ;
+U -1 ; WX 461 ; N uni1EB9 ; G 604 ; B 25 -207 424 460 ;
+U -1 ; WX 461 ; N uni1EC1 ; G 605 ; B 25 -10 424 891 ;
+U -1 ; WX 461 ; N uni1EBF ; G 606 ; B 25 -10 424 891 ;
+U -1 ; WX 461 ; N uni1EC5 ; G 607 ; B 25 -10 424 849 ;
+U -1 ; WX 493 ; N uni1EC3 ; G 608 ; B 25 -10 456 844 ;
+U -1 ; WX 461 ; N uni1EC7 ; G 609 ; B 25 -207 424 698 ;
+U -1 ; WX 290 ; N uni1EC9 ; G 610 ; B 16 0 253 719 ;
+U -1 ; WX 352 ; N uni1ECA ; G 611 ; B 18 -207 315 662 ;
+U -1 ; WX 725 ; N uni1ECE ; G 612 ; B 34 -14 688 923 ;
+U -1 ; WX 725 ; N uni1ECC ; G 613 ; B 34 -207 688 676 ;
+U -1 ; WX 725 ; N uni1ED2 ; G 614 ; B 34 -14 688 1095 ;
+U -1 ; WX 725 ; N uni1ED0 ; G 615 ; B 34 -14 688 1095 ;
+U -1 ; WX 725 ; N uni1ED6 ; G 616 ; B 34 -14 688 1053 ;
+U -1 ; WX 725 ; N uni1ED4 ; G 617 ; B 34 -14 688 1048 ;
+U -1 ; WX 725 ; N uni1ED8 ; G 618 ; B 34 -207 688 902 ;
+U -1 ; WX 725 ; N Ohorn ; G 619 ; B 34 -14 688 777 ;
+U -1 ; WX 725 ; N uni1EDC ; G 620 ; B 34 -14 688 955 ;
+U -1 ; WX 725 ; N uni1EDA ; G 621 ; B 34 -14 688 922 ;
+U -1 ; WX 725 ; N uni1EE0 ; G 622 ; B 34 -14 688 894 ;
+U -1 ; WX 725 ; N uni1EDE ; G 623 ; B 34 -14 688 938 ;
+U -1 ; WX 725 ; N uni1EE2 ; G 624 ; B 34 -207 688 777 ;
+U -1 ; WX 742 ; N _d_625 ; G 625 ; B 14 -14 705 842 ;
+U -1 ; WX 742 ; N uni1EE6 ; G 626 ; B 14 -14 705 923 ;
+U -1 ; WX 742 ; N uni1EE4 ; G 627 ; B 14 -207 705 662 ;
+U -1 ; WX 743 ; N Uhorn ; G 628 ; B 14 -14 715 777 ;
+U -1 ; WX 743 ; N uni1EEA ; G 629 ; B 14 -14 715 955 ;
+U -1 ; WX 743 ; N uni1EE8 ; G 630 ; B 14 -14 715 922 ;
+U -1 ; WX 743 ; N uni1EEE ; G 631 ; B 14 -14 715 894 ;
+U -1 ; WX 743 ; N uni1EEC ; G 632 ; B 14 -14 715 938 ;
+U -1 ; WX 743 ; N uni1EF0 ; G 633 ; B 14 -207 715 777 ;
+U -1 ; WX 740 ; N Ygrave ; G 634 ; B 22 0 703 914 ;
+U -1 ; WX 740 ; N uni1EF8 ; G 635 ; B 22 0 703 873 ;
+U -1 ; WX 290 ; N uni1ECB ; G 636 ; B 16 -207 253 683 ;
+U -1 ; WX 507 ; N uni1ECF ; G 637 ; B 29 -10 470 719 ;
+U -1 ; WX 507 ; N uni1ECD ; G 638 ; B 29 -207 470 460 ;
+U -1 ; WX 507 ; N uni1ED3 ; G 639 ; B 29 -10 470 891 ;
+U -1 ; WX 507 ; N uni1ED1 ; G 640 ; B 29 -10 470 891 ;
+U -1 ; WX 507 ; N uni1ED7 ; G 641 ; B 29 -10 470 849 ;
+U -1 ; WX 521 ; N uni1ED5 ; G 642 ; B 29 -10 484 844 ;
+U -1 ; WX 507 ; N uni1ED9 ; G 643 ; B 29 -207 470 698 ;
+U -1 ; WX 507 ; N ohorn ; G 644 ; B 29 -10 470 565 ;
+U -1 ; WX 507 ; N uni1EDD ; G 645 ; B 29 -10 470 756 ;
+U -1 ; WX 507 ; N uni1EDB ; G 646 ; B 29 -10 470 720 ;
+U -1 ; WX 507 ; N uni1EE1 ; G 647 ; B 29 -10 470 696 ;
+U -1 ; WX 507 ; N uni1EDF ; G 648 ; B 29 -10 470 735 ;
+U -1 ; WX 507 ; N uni1EE3 ; G 649 ; B 29 -207 470 565 ;
+U -1 ; WX 516 ; N _d_650 ; G 650 ; B 9 -10 479 626 ;
+U -1 ; WX 516 ; N uni1EE7 ; G 651 ; B 9 -10 479 719 ;
+U -1 ; WX 516 ; N uni1EE5 ; G 652 ; B 9 -207 479 450 ;
+U -1 ; WX 550 ; N uhorn ; G 653 ; B 9 -10 522 566 ;
+U -1 ; WX 550 ; N uni1EEB ; G 654 ; B 9 -10 522 756 ;
+U -1 ; WX 550 ; N uni1EE9 ; G 655 ; B 9 -10 522 720 ;
+U -1 ; WX 550 ; N uni1EEF ; G 656 ; B 9 -10 522 696 ;
+U -1 ; WX 550 ; N uni1EED ; G 657 ; B 9 -10 522 735 ;
+U -1 ; WX 550 ; N uni1EF1 ; G 658 ; B 9 -207 522 566 ;
+U -1 ; WX 512 ; N ygrave ; G 659 ; B 14 -218 475 711 ;
+U -1 ; WX 512 ; N uni1EF9 ; G 660 ; B 14 -218 475 673 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/dompdf_font_family_cache
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/dompdf_font_family_cache	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/dompdf_font_family_cache	(revision 2000)
@@ -0,0 +1,135 @@
+array (
+  'sans-serif' => 
+  array (
+    'normal' => DOMPDF_FONT_DIR . 'Helvetica',
+    'bold' => DOMPDF_FONT_DIR . 'Helvetica-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Helvetica-BoldOblique',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Helvetica-BoldOblique',   
+  ),
+  'times' =>
+  array (
+    'normal' => DOMPDF_FONT_DIR . 'Times-Roman',
+    'bold' => DOMPDF_FONT_DIR . 'Times-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic',
+  ),
+  'times-roman' =>
+  array (
+    'normal' => DOMPDF_FONT_DIR . 'Times-Roman',
+    'bold' => DOMPDF_FONT_DIR . 'Times-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic',
+  ),
+  'courier' =>
+  array (
+    'normal' => DOMPDF_FONT_DIR . 'Courier',
+    'bold' => DOMPDF_FONT_DIR . 'Courier-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique',
+  ),
+  'helvetica' =>
+  array (
+    'normal' => DOMPDF_FONT_DIR . 'Helvetica',
+    'bold' => DOMPDF_FONT_DIR . 'Helvetica-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Helvetica-BoldOblique',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Helvetica-BoldOblique',   
+  ),
+  'zapfdingbats' =>
+  array (
+    'normal' => DOMPDF_FONT_DIR . 'ZapfDingbats',
+    'bold' => DOMPDF_FONT_DIR . 'ZapfDingbats',
+    'italic' => DOMPDF_FONT_DIR . 'ZapfDingbats',
+    'bold_italic' => DOMPDF_FONT_DIR . 'ZapfDingbats',   
+  ),
+  'serif' => 
+  array (
+    'normal' => DOMPDF_FONT_DIR . 'Times-Roman',
+    'bold' => DOMPDF_FONT_DIR . 'Times-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Times-Italic',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic',
+  ),
+  'monospace' => 
+  array (
+    'normal' => DOMPDF_FONT_DIR . 'Courier',
+    'bold' => DOMPDF_FONT_DIR . 'Courier-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique',
+  ),
+  'fixed' => 
+  array (
+    'normal' => DOMPDF_FONT_DIR . 'Courier',
+    'bold' => DOMPDF_FONT_DIR . 'Courier-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique',
+  ),
+//  'arial' => 
+//  array (
+//    'normal' => DOMPDF_FONT_DIR . 'Arial',
+//    'bold' => DOMPDF_FONT_DIR . 'Arial_Bold',
+//    'italic' => DOMPDF_FONT_DIR . 'Arial_Italic',
+//    'bold_italic' => DOMPDF_FONT_DIR . 'Arial_Bold_Italic',
+//  ),
+//  'comic sans' =>
+//  array (
+//    'normal' => DOMPDF_FONT_DIR . 'Comic_Sans_MS.ttf',
+//    'bold' => DOMPDF_FONT_DIR . 'Comic_Sans_MS_Bold.ttf',
+//    'italic' => DOMPDF_FONT_DIR . 'Comic_Sans_MS.ttf',
+//    'bold_italic' => DOMPDF_FONT_DIR . 'Comic_Sans_MS.ttf',
+//  ),
+//  'georgia' => 
+//  array (
+//    'normal' => DOMPDF_FONT_DIR . 'Georgia',
+//    'bold' => DOMPDF_FONT_DIR . 'Georgia_Bold',
+//    'italic' => DOMPDF_FONT_DIR . 'Georgia_Italic',
+//    'bold_italic' => DOMPDF_FONT_DIR . 'Georgia_Bold_Italic',
+//  ),
+//  'lucida console' => 
+//  array (
+//    'normal' => DOMPDF_FONT_DIR . 'lucon',
+//    'bold' => DOMPDF_FONT_DIR . 'lucon',
+//    'italic' => DOMPDF_FONT_DIR . 'lucon',
+//    'bold_italic' => DOMPDF_FONT_DIR . 'lucon',
+//  ),
+//  'times new roman' => 
+//  array (
+//    'normal' => DOMPDF_FONT_DIR . 'Times_New_Roman',
+//    'bold' => DOMPDF_FONT_DIR . 'Times_New_Roman_Bold',
+//    'italic' => DOMPDF_FONT_DIR . 'Times_New_Roman_Italic',
+//    'bold_italic' => DOMPDF_FONT_DIR . 'Times_New_Roman_Bold_Italic',
+//  ),
+//  'trebuchet' => 
+//  array (
+//    'normal' => DOMPDF_FONT_DIR . 'Trebuchet_MS',
+//    'bold' => DOMPDF_FONT_DIR . 'Trebuchet_MS_Bold',
+//    'italic' => DOMPDF_FONT_DIR . 'Trebuchet_MS_Italic',
+//    'bold_italic' => DOMPDF_FONT_DIR . 'Trebuchet_MS_Bold_Italic',
+//  ),
+//  'trebuchet ms' => 
+//  array (
+//    'normal' => DOMPDF_FONT_DIR . 'Trebuchet_MS',
+//    'bold' => DOMPDF_FONT_DIR . 'Trebuchet_MS_Bold',
+//    'italic' => DOMPDF_FONT_DIR . 'Trebuchet_MS_Italic',
+//    'bold_italic' => DOMPDF_FONT_DIR . 'Trebuchet_MS_Bold_Italic',
+//  ),
+//  'silkscreen' => 
+//  array (
+//    'normal' => DOMPDF_FONT_DIR . 'slkscr',
+//    'bold' => DOMPDF_FONT_DIR . 'slkscrb',
+//    'italic' => DOMPDF_FONT_DIR . 'slkscr',
+//    'bold_italic' => DOMPDF_FONT_DIR . 'slkscr',
+//  ),
+//  'silkscreen expanded' => 
+//  array (
+//    'normal' => DOMPDF_FONT_DIR . 'slkscre',
+//    'bold' => DOMPDF_FONT_DIR . 'slkscreb',
+//    'italic' => DOMPDF_FONT_DIR . 'slkscre',
+//    'bold_italic' => DOMPDF_FONT_DIR . 'slkscre',
+//  ),
+//  'verdana' => 
+//  array (
+//    'normal' => DOMPDF_FONT_DIR . 'Verdana',
+//    'bold' => DOMPDF_FONT_DIR . 'Verdana_Bold',
+//    'italic' => DOMPDF_FONT_DIR . 'Verdana_Italic',
+//    'bold_italic' => DOMPDF_FONT_DIR . 'Verdana_Bold_Italic',
+//  ),
+)
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-Bold.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-Bold.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-Bold.afm	(revision 2000)
@@ -0,0 +1,2827 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+Comment Creation Date: Thu May  1 12:43:52 1997
+Comment UniqueID 43052
+Comment VMusage 37169 48194
+FontName Helvetica-Bold
+FullName Helvetica Bold
+FamilyName Helvetica
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+CharacterSet ExtendedRoman
+FontBBox -170 -228 1003 962 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 002.000
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 718
+XHeight 532
+Ascender 718
+Descender -207
+StdHW 118
+StdVW 140
+StartCharMetrics 315
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 90 0 244 718 ;
+C 34 ; WX 474 ; N quotedbl ; B 98 447 376 718 ;
+C 35 ; WX 556 ; N numbersign ; B 18 0 538 698 ;
+C 36 ; WX 556 ; N dollar ; B 30 -115 523 775 ;
+C 37 ; WX 889 ; N percent ; B 28 -19 861 710 ;
+C 38 ; WX 722 ; N ampersand ; B 54 -19 701 718 ;
+C 39 ; WX 278 ; N quoteright ; B 69 445 209 718 ;
+C 40 ; WX 333 ; N parenleft ; B 35 -208 314 734 ;
+C 41 ; WX 333 ; N parenright ; B 19 -208 298 734 ;
+C 42 ; WX 389 ; N asterisk ; B 27 387 362 718 ;
+C 43 ; WX 584 ; N plus ; B 40 0 544 506 ;
+C 44 ; WX 278 ; N comma ; B 64 -168 214 146 ;
+C 45 ; WX 333 ; N hyphen ; B 27 215 306 345 ;
+C 46 ; WX 278 ; N period ; B 64 0 214 146 ;
+C 47 ; WX 278 ; N slash ; B -33 -19 311 737 ;
+C 48 ; WX 556 ; N zero ; B 32 -19 524 710 ;
+C 49 ; WX 556 ; N one ; B 69 0 378 710 ;
+C 50 ; WX 556 ; N two ; B 26 0 511 710 ;
+C 51 ; WX 556 ; N three ; B 27 -19 516 710 ;
+C 52 ; WX 556 ; N four ; B 27 0 526 710 ;
+C 53 ; WX 556 ; N five ; B 27 -19 516 698 ;
+C 54 ; WX 556 ; N six ; B 31 -19 520 710 ;
+C 55 ; WX 556 ; N seven ; B 25 0 528 698 ;
+C 56 ; WX 556 ; N eight ; B 32 -19 524 710 ;
+C 57 ; WX 556 ; N nine ; B 30 -19 522 710 ;
+C 58 ; WX 333 ; N colon ; B 92 0 242 512 ;
+C 59 ; WX 333 ; N semicolon ; B 92 -168 242 512 ;
+C 60 ; WX 584 ; N less ; B 38 -8 546 514 ;
+C 61 ; WX 584 ; N equal ; B 40 87 544 419 ;
+C 62 ; WX 584 ; N greater ; B 38 -8 546 514 ;
+C 63 ; WX 611 ; N question ; B 60 0 556 727 ;
+C 64 ; WX 975 ; N at ; B 118 -19 856 737 ;
+C 65 ; WX 722 ; N A ; B 20 0 702 718 ;
+C 66 ; WX 722 ; N B ; B 76 0 669 718 ;
+C 67 ; WX 722 ; N C ; B 44 -19 684 737 ;
+C 68 ; WX 722 ; N D ; B 76 0 685 718 ;
+C 69 ; WX 667 ; N E ; B 76 0 621 718 ;
+C 70 ; WX 611 ; N F ; B 76 0 587 718 ;
+C 71 ; WX 778 ; N G ; B 44 -19 713 737 ;
+C 72 ; WX 722 ; N H ; B 71 0 651 718 ;
+C 73 ; WX 278 ; N I ; B 64 0 214 718 ;
+C 74 ; WX 556 ; N J ; B 22 -18 484 718 ;
+C 75 ; WX 722 ; N K ; B 87 0 722 718 ;
+C 76 ; WX 611 ; N L ; B 76 0 583 718 ;
+C 77 ; WX 833 ; N M ; B 69 0 765 718 ;
+C 78 ; WX 722 ; N N ; B 69 0 654 718 ;
+C 79 ; WX 778 ; N O ; B 44 -19 734 737 ;
+C 80 ; WX 667 ; N P ; B 76 0 627 718 ;
+C 81 ; WX 778 ; N Q ; B 44 -52 737 737 ;
+C 82 ; WX 722 ; N R ; B 76 0 677 718 ;
+C 83 ; WX 667 ; N S ; B 39 -19 629 737 ;
+C 84 ; WX 611 ; N T ; B 14 0 598 718 ;
+C 85 ; WX 722 ; N U ; B 72 -19 651 718 ;
+C 86 ; WX 667 ; N V ; B 19 0 648 718 ;
+C 87 ; WX 944 ; N W ; B 16 0 929 718 ;
+C 88 ; WX 667 ; N X ; B 14 0 653 718 ;
+C 89 ; WX 667 ; N Y ; B 15 0 653 718 ;
+C 90 ; WX 611 ; N Z ; B 25 0 586 718 ;
+C 91 ; WX 333 ; N bracketleft ; B 63 -196 309 722 ;
+C 92 ; WX 278 ; N backslash ; B -33 -19 311 737 ;
+C 93 ; WX 333 ; N bracketright ; B 24 -196 270 722 ;
+C 94 ; WX 584 ; N asciicircum ; B 62 323 522 698 ;
+C 95 ; WX 556 ; N underscore ; B 0 -125 556 -75 ;
+C 96 ; WX 278 ; N quoteleft ; B 69 454 209 727 ;
+C 97 ; WX 556 ; N a ; B 29 -14 527 546 ;
+C 98 ; WX 611 ; N b ; B 61 -14 578 718 ;
+C 99 ; WX 556 ; N c ; B 34 -14 524 546 ;
+C 100 ; WX 611 ; N d ; B 34 -14 551 718 ;
+C 101 ; WX 556 ; N e ; B 23 -14 528 546 ;
+C 102 ; WX 333 ; N f ; B 10 0 318 727 ; L i fi ; L l fl ;
+C 103 ; WX 611 ; N g ; B 40 -217 553 546 ;
+C 104 ; WX 611 ; N h ; B 65 0 546 718 ;
+C 105 ; WX 278 ; N i ; B 69 0 209 725 ;
+C 106 ; WX 278 ; N j ; B 3 -214 209 725 ;
+C 107 ; WX 556 ; N k ; B 69 0 562 718 ;
+C 108 ; WX 278 ; N l ; B 69 0 209 718 ;
+C 109 ; WX 889 ; N m ; B 64 0 826 546 ;
+C 110 ; WX 611 ; N n ; B 65 0 546 546 ;
+C 111 ; WX 611 ; N o ; B 34 -14 578 546 ;
+C 112 ; WX 611 ; N p ; B 62 -207 578 546 ;
+C 113 ; WX 611 ; N q ; B 34 -207 552 546 ;
+C 114 ; WX 389 ; N r ; B 64 0 373 546 ;
+C 115 ; WX 556 ; N s ; B 30 -14 519 546 ;
+C 116 ; WX 333 ; N t ; B 10 -6 309 676 ;
+C 117 ; WX 611 ; N u ; B 66 -14 545 532 ;
+C 118 ; WX 556 ; N v ; B 13 0 543 532 ;
+C 119 ; WX 778 ; N w ; B 10 0 769 532 ;
+C 120 ; WX 556 ; N x ; B 15 0 541 532 ;
+C 121 ; WX 556 ; N y ; B 10 -214 539 532 ;
+C 122 ; WX 500 ; N z ; B 20 0 480 532 ;
+C 123 ; WX 389 ; N braceleft ; B 48 -196 365 722 ;
+C 124 ; WX 280 ; N bar ; B 84 -225 196 775 ;
+C 125 ; WX 389 ; N braceright ; B 24 -196 341 722 ;
+C 126 ; WX 584 ; N asciitilde ; B 61 163 523 343 ;
+C 161 ; WX 333 ; N exclamdown ; B 90 -186 244 532 ;
+C 162 ; WX 556 ; N cent ; B 34 -118 524 628 ;
+C 163 ; WX 556 ; N sterling ; B 28 -16 541 718 ;
+C 164 ; WX 167 ; N fraction ; B -170 -19 336 710 ;
+C 165 ; WX 556 ; N yen ; B -9 0 565 698 ;
+C 166 ; WX 556 ; N florin ; B -10 -210 516 737 ;
+C 167 ; WX 556 ; N section ; B 34 -184 522 727 ;
+C 168 ; WX 556 ; N currency ; B -3 76 559 636 ;
+C 169 ; WX 238 ; N quotesingle ; B 70 447 168 718 ;
+C 170 ; WX 500 ; N quotedblleft ; B 64 454 436 727 ;
+C 171 ; WX 556 ; N guillemotleft ; B 88 76 468 484 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 83 76 250 484 ;
+C 173 ; WX 333 ; N guilsinglright ; B 83 76 250 484 ;
+C 174 ; WX 611 ; N fi ; B 10 0 542 727 ;
+C 175 ; WX 611 ; N fl ; B 10 0 542 727 ;
+C 177 ; WX 556 ; N endash ; B 0 227 556 333 ;
+C 178 ; WX 556 ; N dagger ; B 36 -171 520 718 ;
+C 179 ; WX 556 ; N daggerdbl ; B 36 -171 520 718 ;
+C 180 ; WX 278 ; N periodcentered ; B 58 172 220 334 ;
+C 182 ; WX 556 ; N paragraph ; B -8 -191 539 700 ;
+C 183 ; WX 350 ; N bullet ; B 10 194 340 524 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 69 -146 209 127 ;
+C 185 ; WX 500 ; N quotedblbase ; B 64 -146 436 127 ;
+C 186 ; WX 500 ; N quotedblright ; B 64 445 436 718 ;
+C 187 ; WX 556 ; N guillemotright ; B 88 76 468 484 ;
+C 188 ; WX 1000 ; N ellipsis ; B 92 0 908 146 ;
+C 189 ; WX 1000 ; N perthousand ; B -3 -19 1003 710 ;
+C 191 ; WX 611 ; N questiondown ; B 55 -195 551 532 ;
+C 193 ; WX 333 ; N grave ; B -23 604 225 750 ;
+C 194 ; WX 333 ; N acute ; B 108 604 356 750 ;
+C 195 ; WX 333 ; N circumflex ; B -10 604 343 750 ;
+C 196 ; WX 333 ; N tilde ; B -17 610 350 737 ;
+C 197 ; WX 333 ; N macron ; B -6 604 339 678 ;
+C 198 ; WX 333 ; N breve ; B -2 604 335 750 ;
+C 199 ; WX 333 ; N dotaccent ; B 104 614 230 729 ;
+C 200 ; WX 333 ; N dieresis ; B 6 614 327 729 ;
+C 202 ; WX 333 ; N ring ; B 59 568 275 776 ;
+C 203 ; WX 333 ; N cedilla ; B 6 -228 245 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 9 604 486 750 ;
+C 206 ; WX 333 ; N ogonek ; B 71 -228 304 0 ;
+C 207 ; WX 333 ; N caron ; B -10 604 343 750 ;
+C 208 ; WX 1000 ; N emdash ; B 0 227 1000 333 ;
+C 225 ; WX 1000 ; N AE ; B 5 0 954 718 ;
+C 227 ; WX 370 ; N ordfeminine ; B 22 401 347 737 ;
+C 232 ; WX 611 ; N Lslash ; B -20 0 583 718 ;
+C 233 ; WX 778 ; N Oslash ; B 33 -27 744 745 ;
+C 234 ; WX 1000 ; N OE ; B 37 -19 961 737 ;
+C 235 ; WX 365 ; N ordmasculine ; B 6 401 360 737 ;
+C 241 ; WX 889 ; N ae ; B 29 -14 858 546 ;
+C 245 ; WX 278 ; N dotlessi ; B 69 0 209 532 ;
+C 248 ; WX 278 ; N lslash ; B -18 0 296 718 ;
+C 249 ; WX 611 ; N oslash ; B 22 -29 589 560 ;
+C 250 ; WX 944 ; N oe ; B 34 -14 912 546 ;
+C 251 ; WX 611 ; N germandbls ; B 69 -14 579 731 ;
+C -1 ; WX 278 ; N Idieresis ; B -21 0 300 915 ;
+C -1 ; WX 556 ; N eacute ; B 23 -14 528 750 ;
+C -1 ; WX 556 ; N abreve ; B 29 -14 527 750 ;
+C -1 ; WX 611 ; N uhungarumlaut ; B 66 -14 625 750 ;
+C -1 ; WX 556 ; N ecaron ; B 23 -14 528 750 ;
+C -1 ; WX 667 ; N Ydieresis ; B 15 0 653 915 ;
+C -1 ; WX 584 ; N divide ; B 40 -42 544 548 ;
+C -1 ; WX 667 ; N Yacute ; B 15 0 653 936 ;
+C -1 ; WX 722 ; N Acircumflex ; B 20 0 702 936 ;
+C -1 ; WX 556 ; N aacute ; B 29 -14 527 750 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 72 -19 651 936 ;
+C -1 ; WX 556 ; N yacute ; B 10 -214 539 750 ;
+C -1 ; WX 556 ; N scommaaccent ; B 30 -228 519 546 ;
+C -1 ; WX 556 ; N ecircumflex ; B 23 -14 528 750 ;
+C -1 ; WX 722 ; N Uring ; B 72 -19 651 962 ;
+C -1 ; WX 722 ; N Udieresis ; B 72 -19 651 915 ;
+C -1 ; WX 556 ; N aogonek ; B 29 -224 545 546 ;
+C -1 ; WX 722 ; N Uacute ; B 72 -19 651 936 ;
+C -1 ; WX 611 ; N uogonek ; B 66 -228 545 532 ;
+C -1 ; WX 667 ; N Edieresis ; B 76 0 621 915 ;
+C -1 ; WX 722 ; N Dcroat ; B -5 0 685 718 ;
+C -1 ; WX 250 ; N commaaccent ; B 64 -228 199 -50 ;
+C -1 ; WX 737 ; N copyright ; B -11 -19 749 737 ;
+C -1 ; WX 667 ; N Emacron ; B 76 0 621 864 ;
+C -1 ; WX 556 ; N ccaron ; B 34 -14 524 750 ;
+C -1 ; WX 556 ; N aring ; B 29 -14 527 776 ;
+C -1 ; WX 722 ; N Ncommaaccent ; B 69 -228 654 718 ;
+C -1 ; WX 278 ; N lacute ; B 69 0 329 936 ;
+C -1 ; WX 556 ; N agrave ; B 29 -14 527 750 ;
+C -1 ; WX 611 ; N Tcommaaccent ; B 14 -228 598 718 ;
+C -1 ; WX 722 ; N Cacute ; B 44 -19 684 936 ;
+C -1 ; WX 556 ; N atilde ; B 29 -14 527 737 ;
+C -1 ; WX 667 ; N Edotaccent ; B 76 0 621 915 ;
+C -1 ; WX 556 ; N scaron ; B 30 -14 519 750 ;
+C -1 ; WX 556 ; N scedilla ; B 30 -228 519 546 ;
+C -1 ; WX 278 ; N iacute ; B 69 0 329 750 ;
+C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ;
+C -1 ; WX 722 ; N Rcaron ; B 76 0 677 936 ;
+C -1 ; WX 778 ; N Gcommaaccent ; B 44 -228 713 737 ;
+C -1 ; WX 611 ; N ucircumflex ; B 66 -14 545 750 ;
+C -1 ; WX 556 ; N acircumflex ; B 29 -14 527 750 ;
+C -1 ; WX 722 ; N Amacron ; B 20 0 702 864 ;
+C -1 ; WX 389 ; N rcaron ; B 18 0 373 750 ;
+C -1 ; WX 556 ; N ccedilla ; B 34 -228 524 546 ;
+C -1 ; WX 611 ; N Zdotaccent ; B 25 0 586 915 ;
+C -1 ; WX 667 ; N Thorn ; B 76 0 627 718 ;
+C -1 ; WX 778 ; N Omacron ; B 44 -19 734 864 ;
+C -1 ; WX 722 ; N Racute ; B 76 0 677 936 ;
+C -1 ; WX 667 ; N Sacute ; B 39 -19 629 936 ;
+C -1 ; WX 743 ; N dcaron ; B 34 -14 750 718 ;
+C -1 ; WX 722 ; N Umacron ; B 72 -19 651 864 ;
+C -1 ; WX 611 ; N uring ; B 66 -14 545 776 ;
+C -1 ; WX 333 ; N threesuperior ; B 8 271 326 710 ;
+C -1 ; WX 778 ; N Ograve ; B 44 -19 734 936 ;
+C -1 ; WX 722 ; N Agrave ; B 20 0 702 936 ;
+C -1 ; WX 722 ; N Abreve ; B 20 0 702 936 ;
+C -1 ; WX 584 ; N multiply ; B 40 1 545 505 ;
+C -1 ; WX 611 ; N uacute ; B 66 -14 545 750 ;
+C -1 ; WX 611 ; N Tcaron ; B 14 0 598 936 ;
+C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ;
+C -1 ; WX 556 ; N ydieresis ; B 10 -214 539 729 ;
+C -1 ; WX 722 ; N Nacute ; B 69 0 654 936 ;
+C -1 ; WX 278 ; N icircumflex ; B -37 0 316 750 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 76 0 621 936 ;
+C -1 ; WX 556 ; N adieresis ; B 29 -14 527 729 ;
+C -1 ; WX 556 ; N edieresis ; B 23 -14 528 729 ;
+C -1 ; WX 556 ; N cacute ; B 34 -14 524 750 ;
+C -1 ; WX 611 ; N nacute ; B 65 0 546 750 ;
+C -1 ; WX 611 ; N umacron ; B 66 -14 545 678 ;
+C -1 ; WX 722 ; N Ncaron ; B 69 0 654 936 ;
+C -1 ; WX 278 ; N Iacute ; B 64 0 329 936 ;
+C -1 ; WX 584 ; N plusminus ; B 40 0 544 506 ;
+C -1 ; WX 280 ; N brokenbar ; B 84 -150 196 700 ;
+C -1 ; WX 737 ; N registered ; B -11 -19 748 737 ;
+C -1 ; WX 778 ; N Gbreve ; B 44 -19 713 936 ;
+C -1 ; WX 278 ; N Idotaccent ; B 64 0 214 915 ;
+C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ;
+C -1 ; WX 667 ; N Egrave ; B 76 0 621 936 ;
+C -1 ; WX 389 ; N racute ; B 64 0 384 750 ;
+C -1 ; WX 611 ; N omacron ; B 34 -14 578 678 ;
+C -1 ; WX 611 ; N Zacute ; B 25 0 586 936 ;
+C -1 ; WX 611 ; N Zcaron ; B 25 0 586 936 ;
+C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ;
+C -1 ; WX 722 ; N Eth ; B -5 0 685 718 ;
+C -1 ; WX 722 ; N Ccedilla ; B 44 -228 684 737 ;
+C -1 ; WX 278 ; N lcommaaccent ; B 69 -228 213 718 ;
+C -1 ; WX 389 ; N tcaron ; B 10 -6 421 878 ;
+C -1 ; WX 556 ; N eogonek ; B 23 -228 528 546 ;
+C -1 ; WX 722 ; N Uogonek ; B 72 -228 651 718 ;
+C -1 ; WX 722 ; N Aacute ; B 20 0 702 936 ;
+C -1 ; WX 722 ; N Adieresis ; B 20 0 702 915 ;
+C -1 ; WX 556 ; N egrave ; B 23 -14 528 750 ;
+C -1 ; WX 500 ; N zacute ; B 20 0 480 750 ;
+C -1 ; WX 278 ; N iogonek ; B 16 -224 249 725 ;
+C -1 ; WX 778 ; N Oacute ; B 44 -19 734 936 ;
+C -1 ; WX 611 ; N oacute ; B 34 -14 578 750 ;
+C -1 ; WX 556 ; N amacron ; B 29 -14 527 678 ;
+C -1 ; WX 556 ; N sacute ; B 30 -14 519 750 ;
+C -1 ; WX 278 ; N idieresis ; B -21 0 300 729 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 44 -19 734 936 ;
+C -1 ; WX 722 ; N Ugrave ; B 72 -19 651 936 ;
+C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
+C -1 ; WX 611 ; N thorn ; B 62 -208 578 718 ;
+C -1 ; WX 333 ; N twosuperior ; B 9 283 324 710 ;
+C -1 ; WX 778 ; N Odieresis ; B 44 -19 734 915 ;
+C -1 ; WX 611 ; N mu ; B 66 -207 545 532 ;
+C -1 ; WX 278 ; N igrave ; B -50 0 209 750 ;
+C -1 ; WX 611 ; N ohungarumlaut ; B 34 -14 625 750 ;
+C -1 ; WX 667 ; N Eogonek ; B 76 -224 639 718 ;
+C -1 ; WX 611 ; N dcroat ; B 34 -14 650 718 ;
+C -1 ; WX 834 ; N threequarters ; B 16 -19 799 710 ;
+C -1 ; WX 667 ; N Scedilla ; B 39 -228 629 737 ;
+C -1 ; WX 400 ; N lcaron ; B 69 0 408 718 ;
+C -1 ; WX 722 ; N Kcommaaccent ; B 87 -228 722 718 ;
+C -1 ; WX 611 ; N Lacute ; B 76 0 583 936 ;
+C -1 ; WX 1000 ; N trademark ; B 44 306 956 718 ;
+C -1 ; WX 556 ; N edotaccent ; B 23 -14 528 729 ;
+C -1 ; WX 278 ; N Igrave ; B -50 0 214 936 ;
+C -1 ; WX 278 ; N Imacron ; B -33 0 312 864 ;
+C -1 ; WX 611 ; N Lcaron ; B 76 0 583 718 ;
+C -1 ; WX 834 ; N onehalf ; B 26 -19 794 710 ;
+C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ;
+C -1 ; WX 611 ; N ocircumflex ; B 34 -14 578 750 ;
+C -1 ; WX 611 ; N ntilde ; B 65 0 546 737 ;
+C -1 ; WX 722 ; N Uhungarumlaut ; B 72 -19 681 936 ;
+C -1 ; WX 667 ; N Eacute ; B 76 0 621 936 ;
+C -1 ; WX 556 ; N emacron ; B 23 -14 528 678 ;
+C -1 ; WX 611 ; N gbreve ; B 40 -217 553 750 ;
+C -1 ; WX 834 ; N onequarter ; B 26 -19 766 710 ;
+C -1 ; WX 667 ; N Scaron ; B 39 -19 629 936 ;
+C -1 ; WX 667 ; N Scommaaccent ; B 39 -228 629 737 ;
+C -1 ; WX 778 ; N Ohungarumlaut ; B 44 -19 734 936 ;
+C -1 ; WX 400 ; N degree ; B 57 426 343 712 ;
+C -1 ; WX 611 ; N ograve ; B 34 -14 578 750 ;
+C -1 ; WX 722 ; N Ccaron ; B 44 -19 684 936 ;
+C -1 ; WX 611 ; N ugrave ; B 66 -14 545 750 ;
+C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ;
+C -1 ; WX 722 ; N Dcaron ; B 76 0 685 936 ;
+C -1 ; WX 389 ; N rcommaaccent ; B 64 -228 373 546 ;
+C -1 ; WX 722 ; N Ntilde ; B 69 0 654 923 ;
+C -1 ; WX 611 ; N otilde ; B 34 -14 578 737 ;
+C -1 ; WX 722 ; N Rcommaaccent ; B 76 -228 677 718 ;
+C -1 ; WX 611 ; N Lcommaaccent ; B 76 -228 583 718 ;
+C -1 ; WX 722 ; N Atilde ; B 20 0 702 923 ;
+C -1 ; WX 722 ; N Aogonek ; B 20 -224 742 718 ;
+C -1 ; WX 722 ; N Aring ; B 20 0 702 962 ;
+C -1 ; WX 778 ; N Otilde ; B 44 -19 734 923 ;
+C -1 ; WX 500 ; N zdotaccent ; B 20 0 480 729 ;
+C -1 ; WX 667 ; N Ecaron ; B 76 0 621 936 ;
+C -1 ; WX 278 ; N Iogonek ; B -11 -228 222 718 ;
+C -1 ; WX 556 ; N kcommaaccent ; B 69 -228 562 718 ;
+C -1 ; WX 584 ; N minus ; B 40 197 544 309 ;
+C -1 ; WX 278 ; N Icircumflex ; B -37 0 316 936 ;
+C -1 ; WX 611 ; N ncaron ; B 65 0 546 750 ;
+C -1 ; WX 333 ; N tcommaaccent ; B 10 -228 309 676 ;
+C -1 ; WX 584 ; N logicalnot ; B 40 108 544 419 ;
+C -1 ; WX 611 ; N odieresis ; B 34 -14 578 729 ;
+C -1 ; WX 611 ; N udieresis ; B 66 -14 545 729 ;
+C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ;
+C -1 ; WX 611 ; N gcommaaccent ; B 40 -217 553 850 ;
+C -1 ; WX 611 ; N eth ; B 34 -14 578 737 ;
+C -1 ; WX 500 ; N zcaron ; B 20 0 480 750 ;
+C -1 ; WX 611 ; N ncommaaccent ; B 65 -228 546 546 ;
+C -1 ; WX 333 ; N onesuperior ; B 26 283 237 710 ;
+C -1 ; WX 278 ; N imacron ; B -8 0 285 678 ;
+C -1 ; WX 556 ; N Euro ; B 0 0 0 0 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 2481
+KPX A C -40
+KPX A Cacute -40
+KPX A Ccaron -40
+KPX A Ccedilla -40
+KPX A G -50
+KPX A Gbreve -50
+KPX A Gcommaaccent -50
+KPX A O -40
+KPX A Oacute -40
+KPX A Ocircumflex -40
+KPX A Odieresis -40
+KPX A Ograve -40
+KPX A Ohungarumlaut -40
+KPX A Omacron -40
+KPX A Oslash -40
+KPX A Otilde -40
+KPX A Q -40
+KPX A T -90
+KPX A Tcaron -90
+KPX A Tcommaaccent -90
+KPX A U -50
+KPX A Uacute -50
+KPX A Ucircumflex -50
+KPX A Udieresis -50
+KPX A Ugrave -50
+KPX A Uhungarumlaut -50
+KPX A Umacron -50
+KPX A Uogonek -50
+KPX A Uring -50
+KPX A V -80
+KPX A W -60
+KPX A Y -110
+KPX A Yacute -110
+KPX A Ydieresis -110
+KPX A u -30
+KPX A uacute -30
+KPX A ucircumflex -30
+KPX A udieresis -30
+KPX A ugrave -30
+KPX A uhungarumlaut -30
+KPX A umacron -30
+KPX A uogonek -30
+KPX A uring -30
+KPX A v -40
+KPX A w -30
+KPX A y -30
+KPX A yacute -30
+KPX A ydieresis -30
+KPX Aacute C -40
+KPX Aacute Cacute -40
+KPX Aacute Ccaron -40
+KPX Aacute Ccedilla -40
+KPX Aacute G -50
+KPX Aacute Gbreve -50
+KPX Aacute Gcommaaccent -50
+KPX Aacute O -40
+KPX Aacute Oacute -40
+KPX Aacute Ocircumflex -40
+KPX Aacute Odieresis -40
+KPX Aacute Ograve -40
+KPX Aacute Ohungarumlaut -40
+KPX Aacute Omacron -40
+KPX Aacute Oslash -40
+KPX Aacute Otilde -40
+KPX Aacute Q -40
+KPX Aacute T -90
+KPX Aacute Tcaron -90
+KPX Aacute Tcommaaccent -90
+KPX Aacute U -50
+KPX Aacute Uacute -50
+KPX Aacute Ucircumflex -50
+KPX Aacute Udieresis -50
+KPX Aacute Ugrave -50
+KPX Aacute Uhungarumlaut -50
+KPX Aacute Umacron -50
+KPX Aacute Uogonek -50
+KPX Aacute Uring -50
+KPX Aacute V -80
+KPX Aacute W -60
+KPX Aacute Y -110
+KPX Aacute Yacute -110
+KPX Aacute Ydieresis -110
+KPX Aacute u -30
+KPX Aacute uacute -30
+KPX Aacute ucircumflex -30
+KPX Aacute udieresis -30
+KPX Aacute ugrave -30
+KPX Aacute uhungarumlaut -30
+KPX Aacute umacron -30
+KPX Aacute uogonek -30
+KPX Aacute uring -30
+KPX Aacute v -40
+KPX Aacute w -30
+KPX Aacute y -30
+KPX Aacute yacute -30
+KPX Aacute ydieresis -30
+KPX Abreve C -40
+KPX Abreve Cacute -40
+KPX Abreve Ccaron -40
+KPX Abreve Ccedilla -40
+KPX Abreve G -50
+KPX Abreve Gbreve -50
+KPX Abreve Gcommaaccent -50
+KPX Abreve O -40
+KPX Abreve Oacute -40
+KPX Abreve Ocircumflex -40
+KPX Abreve Odieresis -40
+KPX Abreve Ograve -40
+KPX Abreve Ohungarumlaut -40
+KPX Abreve Omacron -40
+KPX Abreve Oslash -40
+KPX Abreve Otilde -40
+KPX Abreve Q -40
+KPX Abreve T -90
+KPX Abreve Tcaron -90
+KPX Abreve Tcommaaccent -90
+KPX Abreve U -50
+KPX Abreve Uacute -50
+KPX Abreve Ucircumflex -50
+KPX Abreve Udieresis -50
+KPX Abreve Ugrave -50
+KPX Abreve Uhungarumlaut -50
+KPX Abreve Umacron -50
+KPX Abreve Uogonek -50
+KPX Abreve Uring -50
+KPX Abreve V -80
+KPX Abreve W -60
+KPX Abreve Y -110
+KPX Abreve Yacute -110
+KPX Abreve Ydieresis -110
+KPX Abreve u -30
+KPX Abreve uacute -30
+KPX Abreve ucircumflex -30
+KPX Abreve udieresis -30
+KPX Abreve ugrave -30
+KPX Abreve uhungarumlaut -30
+KPX Abreve umacron -30
+KPX Abreve uogonek -30
+KPX Abreve uring -30
+KPX Abreve v -40
+KPX Abreve w -30
+KPX Abreve y -30
+KPX Abreve yacute -30
+KPX Abreve ydieresis -30
+KPX Acircumflex C -40
+KPX Acircumflex Cacute -40
+KPX Acircumflex Ccaron -40
+KPX Acircumflex Ccedilla -40
+KPX Acircumflex G -50
+KPX Acircumflex Gbreve -50
+KPX Acircumflex Gcommaaccent -50
+KPX Acircumflex O -40
+KPX Acircumflex Oacute -40
+KPX Acircumflex Ocircumflex -40
+KPX Acircumflex Odieresis -40
+KPX Acircumflex Ograve -40
+KPX Acircumflex Ohungarumlaut -40
+KPX Acircumflex Omacron -40
+KPX Acircumflex Oslash -40
+KPX Acircumflex Otilde -40
+KPX Acircumflex Q -40
+KPX Acircumflex T -90
+KPX Acircumflex Tcaron -90
+KPX Acircumflex Tcommaaccent -90
+KPX Acircumflex U -50
+KPX Acircumflex Uacute -50
+KPX Acircumflex Ucircumflex -50
+KPX Acircumflex Udieresis -50
+KPX Acircumflex Ugrave -50
+KPX Acircumflex Uhungarumlaut -50
+KPX Acircumflex Umacron -50
+KPX Acircumflex Uogonek -50
+KPX Acircumflex Uring -50
+KPX Acircumflex V -80
+KPX Acircumflex W -60
+KPX Acircumflex Y -110
+KPX Acircumflex Yacute -110
+KPX Acircumflex Ydieresis -110
+KPX Acircumflex u -30
+KPX Acircumflex uacute -30
+KPX Acircumflex ucircumflex -30
+KPX Acircumflex udieresis -30
+KPX Acircumflex ugrave -30
+KPX Acircumflex uhungarumlaut -30
+KPX Acircumflex umacron -30
+KPX Acircumflex uogonek -30
+KPX Acircumflex uring -30
+KPX Acircumflex v -40
+KPX Acircumflex w -30
+KPX Acircumflex y -30
+KPX Acircumflex yacute -30
+KPX Acircumflex ydieresis -30
+KPX Adieresis C -40
+KPX Adieresis Cacute -40
+KPX Adieresis Ccaron -40
+KPX Adieresis Ccedilla -40
+KPX Adieresis G -50
+KPX Adieresis Gbreve -50
+KPX Adieresis Gcommaaccent -50
+KPX Adieresis O -40
+KPX Adieresis Oacute -40
+KPX Adieresis Ocircumflex -40
+KPX Adieresis Odieresis -40
+KPX Adieresis Ograve -40
+KPX Adieresis Ohungarumlaut -40
+KPX Adieresis Omacron -40
+KPX Adieresis Oslash -40
+KPX Adieresis Otilde -40
+KPX Adieresis Q -40
+KPX Adieresis T -90
+KPX Adieresis Tcaron -90
+KPX Adieresis Tcommaaccent -90
+KPX Adieresis U -50
+KPX Adieresis Uacute -50
+KPX Adieresis Ucircumflex -50
+KPX Adieresis Udieresis -50
+KPX Adieresis Ugrave -50
+KPX Adieresis Uhungarumlaut -50
+KPX Adieresis Umacron -50
+KPX Adieresis Uogonek -50
+KPX Adieresis Uring -50
+KPX Adieresis V -80
+KPX Adieresis W -60
+KPX Adieresis Y -110
+KPX Adieresis Yacute -110
+KPX Adieresis Ydieresis -110
+KPX Adieresis u -30
+KPX Adieresis uacute -30
+KPX Adieresis ucircumflex -30
+KPX Adieresis udieresis -30
+KPX Adieresis ugrave -30
+KPX Adieresis uhungarumlaut -30
+KPX Adieresis umacron -30
+KPX Adieresis uogonek -30
+KPX Adieresis uring -30
+KPX Adieresis v -40
+KPX Adieresis w -30
+KPX Adieresis y -30
+KPX Adieresis yacute -30
+KPX Adieresis ydieresis -30
+KPX Agrave C -40
+KPX Agrave Cacute -40
+KPX Agrave Ccaron -40
+KPX Agrave Ccedilla -40
+KPX Agrave G -50
+KPX Agrave Gbreve -50
+KPX Agrave Gcommaaccent -50
+KPX Agrave O -40
+KPX Agrave Oacute -40
+KPX Agrave Ocircumflex -40
+KPX Agrave Odieresis -40
+KPX Agrave Ograve -40
+KPX Agrave Ohungarumlaut -40
+KPX Agrave Omacron -40
+KPX Agrave Oslash -40
+KPX Agrave Otilde -40
+KPX Agrave Q -40
+KPX Agrave T -90
+KPX Agrave Tcaron -90
+KPX Agrave Tcommaaccent -90
+KPX Agrave U -50
+KPX Agrave Uacute -50
+KPX Agrave Ucircumflex -50
+KPX Agrave Udieresis -50
+KPX Agrave Ugrave -50
+KPX Agrave Uhungarumlaut -50
+KPX Agrave Umacron -50
+KPX Agrave Uogonek -50
+KPX Agrave Uring -50
+KPX Agrave V -80
+KPX Agrave W -60
+KPX Agrave Y -110
+KPX Agrave Yacute -110
+KPX Agrave Ydieresis -110
+KPX Agrave u -30
+KPX Agrave uacute -30
+KPX Agrave ucircumflex -30
+KPX Agrave udieresis -30
+KPX Agrave ugrave -30
+KPX Agrave uhungarumlaut -30
+KPX Agrave umacron -30
+KPX Agrave uogonek -30
+KPX Agrave uring -30
+KPX Agrave v -40
+KPX Agrave w -30
+KPX Agrave y -30
+KPX Agrave yacute -30
+KPX Agrave ydieresis -30
+KPX Amacron C -40
+KPX Amacron Cacute -40
+KPX Amacron Ccaron -40
+KPX Amacron Ccedilla -40
+KPX Amacron G -50
+KPX Amacron Gbreve -50
+KPX Amacron Gcommaaccent -50
+KPX Amacron O -40
+KPX Amacron Oacute -40
+KPX Amacron Ocircumflex -40
+KPX Amacron Odieresis -40
+KPX Amacron Ograve -40
+KPX Amacron Ohungarumlaut -40
+KPX Amacron Omacron -40
+KPX Amacron Oslash -40
+KPX Amacron Otilde -40
+KPX Amacron Q -40
+KPX Amacron T -90
+KPX Amacron Tcaron -90
+KPX Amacron Tcommaaccent -90
+KPX Amacron U -50
+KPX Amacron Uacute -50
+KPX Amacron Ucircumflex -50
+KPX Amacron Udieresis -50
+KPX Amacron Ugrave -50
+KPX Amacron Uhungarumlaut -50
+KPX Amacron Umacron -50
+KPX Amacron Uogonek -50
+KPX Amacron Uring -50
+KPX Amacron V -80
+KPX Amacron W -60
+KPX Amacron Y -110
+KPX Amacron Yacute -110
+KPX Amacron Ydieresis -110
+KPX Amacron u -30
+KPX Amacron uacute -30
+KPX Amacron ucircumflex -30
+KPX Amacron udieresis -30
+KPX Amacron ugrave -30
+KPX Amacron uhungarumlaut -30
+KPX Amacron umacron -30
+KPX Amacron uogonek -30
+KPX Amacron uring -30
+KPX Amacron v -40
+KPX Amacron w -30
+KPX Amacron y -30
+KPX Amacron yacute -30
+KPX Amacron ydieresis -30
+KPX Aogonek C -40
+KPX Aogonek Cacute -40
+KPX Aogonek Ccaron -40
+KPX Aogonek Ccedilla -40
+KPX Aogonek G -50
+KPX Aogonek Gbreve -50
+KPX Aogonek Gcommaaccent -50
+KPX Aogonek O -40
+KPX Aogonek Oacute -40
+KPX Aogonek Ocircumflex -40
+KPX Aogonek Odieresis -40
+KPX Aogonek Ograve -40
+KPX Aogonek Ohungarumlaut -40
+KPX Aogonek Omacron -40
+KPX Aogonek Oslash -40
+KPX Aogonek Otilde -40
+KPX Aogonek Q -40
+KPX Aogonek T -90
+KPX Aogonek Tcaron -90
+KPX Aogonek Tcommaaccent -90
+KPX Aogonek U -50
+KPX Aogonek Uacute -50
+KPX Aogonek Ucircumflex -50
+KPX Aogonek Udieresis -50
+KPX Aogonek Ugrave -50
+KPX Aogonek Uhungarumlaut -50
+KPX Aogonek Umacron -50
+KPX Aogonek Uogonek -50
+KPX Aogonek Uring -50
+KPX Aogonek V -80
+KPX Aogonek W -60
+KPX Aogonek Y -110
+KPX Aogonek Yacute -110
+KPX Aogonek Ydieresis -110
+KPX Aogonek u -30
+KPX Aogonek uacute -30
+KPX Aogonek ucircumflex -30
+KPX Aogonek udieresis -30
+KPX Aogonek ugrave -30
+KPX Aogonek uhungarumlaut -30
+KPX Aogonek umacron -30
+KPX Aogonek uogonek -30
+KPX Aogonek uring -30
+KPX Aogonek v -40
+KPX Aogonek w -30
+KPX Aogonek y -30
+KPX Aogonek yacute -30
+KPX Aogonek ydieresis -30
+KPX Aring C -40
+KPX Aring Cacute -40
+KPX Aring Ccaron -40
+KPX Aring Ccedilla -40
+KPX Aring G -50
+KPX Aring Gbreve -50
+KPX Aring Gcommaaccent -50
+KPX Aring O -40
+KPX Aring Oacute -40
+KPX Aring Ocircumflex -40
+KPX Aring Odieresis -40
+KPX Aring Ograve -40
+KPX Aring Ohungarumlaut -40
+KPX Aring Omacron -40
+KPX Aring Oslash -40
+KPX Aring Otilde -40
+KPX Aring Q -40
+KPX Aring T -90
+KPX Aring Tcaron -90
+KPX Aring Tcommaaccent -90
+KPX Aring U -50
+KPX Aring Uacute -50
+KPX Aring Ucircumflex -50
+KPX Aring Udieresis -50
+KPX Aring Ugrave -50
+KPX Aring Uhungarumlaut -50
+KPX Aring Umacron -50
+KPX Aring Uogonek -50
+KPX Aring Uring -50
+KPX Aring V -80
+KPX Aring W -60
+KPX Aring Y -110
+KPX Aring Yacute -110
+KPX Aring Ydieresis -110
+KPX Aring u -30
+KPX Aring uacute -30
+KPX Aring ucircumflex -30
+KPX Aring udieresis -30
+KPX Aring ugrave -30
+KPX Aring uhungarumlaut -30
+KPX Aring umacron -30
+KPX Aring uogonek -30
+KPX Aring uring -30
+KPX Aring v -40
+KPX Aring w -30
+KPX Aring y -30
+KPX Aring yacute -30
+KPX Aring ydieresis -30
+KPX Atilde C -40
+KPX Atilde Cacute -40
+KPX Atilde Ccaron -40
+KPX Atilde Ccedilla -40
+KPX Atilde G -50
+KPX Atilde Gbreve -50
+KPX Atilde Gcommaaccent -50
+KPX Atilde O -40
+KPX Atilde Oacute -40
+KPX Atilde Ocircumflex -40
+KPX Atilde Odieresis -40
+KPX Atilde Ograve -40
+KPX Atilde Ohungarumlaut -40
+KPX Atilde Omacron -40
+KPX Atilde Oslash -40
+KPX Atilde Otilde -40
+KPX Atilde Q -40
+KPX Atilde T -90
+KPX Atilde Tcaron -90
+KPX Atilde Tcommaaccent -90
+KPX Atilde U -50
+KPX Atilde Uacute -50
+KPX Atilde Ucircumflex -50
+KPX Atilde Udieresis -50
+KPX Atilde Ugrave -50
+KPX Atilde Uhungarumlaut -50
+KPX Atilde Umacron -50
+KPX Atilde Uogonek -50
+KPX Atilde Uring -50
+KPX Atilde V -80
+KPX Atilde W -60
+KPX Atilde Y -110
+KPX Atilde Yacute -110
+KPX Atilde Ydieresis -110
+KPX Atilde u -30
+KPX Atilde uacute -30
+KPX Atilde ucircumflex -30
+KPX Atilde udieresis -30
+KPX Atilde ugrave -30
+KPX Atilde uhungarumlaut -30
+KPX Atilde umacron -30
+KPX Atilde uogonek -30
+KPX Atilde uring -30
+KPX Atilde v -40
+KPX Atilde w -30
+KPX Atilde y -30
+KPX Atilde yacute -30
+KPX Atilde ydieresis -30
+KPX B A -30
+KPX B Aacute -30
+KPX B Abreve -30
+KPX B Acircumflex -30
+KPX B Adieresis -30
+KPX B Agrave -30
+KPX B Amacron -30
+KPX B Aogonek -30
+KPX B Aring -30
+KPX B Atilde -30
+KPX B U -10
+KPX B Uacute -10
+KPX B Ucircumflex -10
+KPX B Udieresis -10
+KPX B Ugrave -10
+KPX B Uhungarumlaut -10
+KPX B Umacron -10
+KPX B Uogonek -10
+KPX B Uring -10
+KPX D A -40
+KPX D Aacute -40
+KPX D Abreve -40
+KPX D Acircumflex -40
+KPX D Adieresis -40
+KPX D Agrave -40
+KPX D Amacron -40
+KPX D Aogonek -40
+KPX D Aring -40
+KPX D Atilde -40
+KPX D V -40
+KPX D W -40
+KPX D Y -70
+KPX D Yacute -70
+KPX D Ydieresis -70
+KPX D comma -30
+KPX D period -30
+KPX Dcaron A -40
+KPX Dcaron Aacute -40
+KPX Dcaron Abreve -40
+KPX Dcaron Acircumflex -40
+KPX Dcaron Adieresis -40
+KPX Dcaron Agrave -40
+KPX Dcaron Amacron -40
+KPX Dcaron Aogonek -40
+KPX Dcaron Aring -40
+KPX Dcaron Atilde -40
+KPX Dcaron V -40
+KPX Dcaron W -40
+KPX Dcaron Y -70
+KPX Dcaron Yacute -70
+KPX Dcaron Ydieresis -70
+KPX Dcaron comma -30
+KPX Dcaron period -30
+KPX Dcroat A -40
+KPX Dcroat Aacute -40
+KPX Dcroat Abreve -40
+KPX Dcroat Acircumflex -40
+KPX Dcroat Adieresis -40
+KPX Dcroat Agrave -40
+KPX Dcroat Amacron -40
+KPX Dcroat Aogonek -40
+KPX Dcroat Aring -40
+KPX Dcroat Atilde -40
+KPX Dcroat V -40
+KPX Dcroat W -40
+KPX Dcroat Y -70
+KPX Dcroat Yacute -70
+KPX Dcroat Ydieresis -70
+KPX Dcroat comma -30
+KPX Dcroat period -30
+KPX F A -80
+KPX F Aacute -80
+KPX F Abreve -80
+KPX F Acircumflex -80
+KPX F Adieresis -80
+KPX F Agrave -80
+KPX F Amacron -80
+KPX F Aogonek -80
+KPX F Aring -80
+KPX F Atilde -80
+KPX F a -20
+KPX F aacute -20
+KPX F abreve -20
+KPX F acircumflex -20
+KPX F adieresis -20
+KPX F agrave -20
+KPX F amacron -20
+KPX F aogonek -20
+KPX F aring -20
+KPX F atilde -20
+KPX F comma -100
+KPX F period -100
+KPX J A -20
+KPX J Aacute -20
+KPX J Abreve -20
+KPX J Acircumflex -20
+KPX J Adieresis -20
+KPX J Agrave -20
+KPX J Amacron -20
+KPX J Aogonek -20
+KPX J Aring -20
+KPX J Atilde -20
+KPX J comma -20
+KPX J period -20
+KPX J u -20
+KPX J uacute -20
+KPX J ucircumflex -20
+KPX J udieresis -20
+KPX J ugrave -20
+KPX J uhungarumlaut -20
+KPX J umacron -20
+KPX J uogonek -20
+KPX J uring -20
+KPX K O -30
+KPX K Oacute -30
+KPX K Ocircumflex -30
+KPX K Odieresis -30
+KPX K Ograve -30
+KPX K Ohungarumlaut -30
+KPX K Omacron -30
+KPX K Oslash -30
+KPX K Otilde -30
+KPX K e -15
+KPX K eacute -15
+KPX K ecaron -15
+KPX K ecircumflex -15
+KPX K edieresis -15
+KPX K edotaccent -15
+KPX K egrave -15
+KPX K emacron -15
+KPX K eogonek -15
+KPX K o -35
+KPX K oacute -35
+KPX K ocircumflex -35
+KPX K odieresis -35
+KPX K ograve -35
+KPX K ohungarumlaut -35
+KPX K omacron -35
+KPX K oslash -35
+KPX K otilde -35
+KPX K u -30
+KPX K uacute -30
+KPX K ucircumflex -30
+KPX K udieresis -30
+KPX K ugrave -30
+KPX K uhungarumlaut -30
+KPX K umacron -30
+KPX K uogonek -30
+KPX K uring -30
+KPX K y -40
+KPX K yacute -40
+KPX K ydieresis -40
+KPX Kcommaaccent O -30
+KPX Kcommaaccent Oacute -30
+KPX Kcommaaccent Ocircumflex -30
+KPX Kcommaaccent Odieresis -30
+KPX Kcommaaccent Ograve -30
+KPX Kcommaaccent Ohungarumlaut -30
+KPX Kcommaaccent Omacron -30
+KPX Kcommaaccent Oslash -30
+KPX Kcommaaccent Otilde -30
+KPX Kcommaaccent e -15
+KPX Kcommaaccent eacute -15
+KPX Kcommaaccent ecaron -15
+KPX Kcommaaccent ecircumflex -15
+KPX Kcommaaccent edieresis -15
+KPX Kcommaaccent edotaccent -15
+KPX Kcommaaccent egrave -15
+KPX Kcommaaccent emacron -15
+KPX Kcommaaccent eogonek -15
+KPX Kcommaaccent o -35
+KPX Kcommaaccent oacute -35
+KPX Kcommaaccent ocircumflex -35
+KPX Kcommaaccent odieresis -35
+KPX Kcommaaccent ograve -35
+KPX Kcommaaccent ohungarumlaut -35
+KPX Kcommaaccent omacron -35
+KPX Kcommaaccent oslash -35
+KPX Kcommaaccent otilde -35
+KPX Kcommaaccent u -30
+KPX Kcommaaccent uacute -30
+KPX Kcommaaccent ucircumflex -30
+KPX Kcommaaccent udieresis -30
+KPX Kcommaaccent ugrave -30
+KPX Kcommaaccent uhungarumlaut -30
+KPX Kcommaaccent umacron -30
+KPX Kcommaaccent uogonek -30
+KPX Kcommaaccent uring -30
+KPX Kcommaaccent y -40
+KPX Kcommaaccent yacute -40
+KPX Kcommaaccent ydieresis -40
+KPX L T -90
+KPX L Tcaron -90
+KPX L Tcommaaccent -90
+KPX L V -110
+KPX L W -80
+KPX L Y -120
+KPX L Yacute -120
+KPX L Ydieresis -120
+KPX L quotedblright -140
+KPX L quoteright -140
+KPX L y -30
+KPX L yacute -30
+KPX L ydieresis -30
+KPX Lacute T -90
+KPX Lacute Tcaron -90
+KPX Lacute Tcommaaccent -90
+KPX Lacute V -110
+KPX Lacute W -80
+KPX Lacute Y -120
+KPX Lacute Yacute -120
+KPX Lacute Ydieresis -120
+KPX Lacute quotedblright -140
+KPX Lacute quoteright -140
+KPX Lacute y -30
+KPX Lacute yacute -30
+KPX Lacute ydieresis -30
+KPX Lcommaaccent T -90
+KPX Lcommaaccent Tcaron -90
+KPX Lcommaaccent Tcommaaccent -90
+KPX Lcommaaccent V -110
+KPX Lcommaaccent W -80
+KPX Lcommaaccent Y -120
+KPX Lcommaaccent Yacute -120
+KPX Lcommaaccent Ydieresis -120
+KPX Lcommaaccent quotedblright -140
+KPX Lcommaaccent quoteright -140
+KPX Lcommaaccent y -30
+KPX Lcommaaccent yacute -30
+KPX Lcommaaccent ydieresis -30
+KPX Lslash T -90
+KPX Lslash Tcaron -90
+KPX Lslash Tcommaaccent -90
+KPX Lslash V -110
+KPX Lslash W -80
+KPX Lslash Y -120
+KPX Lslash Yacute -120
+KPX Lslash Ydieresis -120
+KPX Lslash quotedblright -140
+KPX Lslash quoteright -140
+KPX Lslash y -30
+KPX Lslash yacute -30
+KPX Lslash ydieresis -30
+KPX O A -50
+KPX O Aacute -50
+KPX O Abreve -50
+KPX O Acircumflex -50
+KPX O Adieresis -50
+KPX O Agrave -50
+KPX O Amacron -50
+KPX O Aogonek -50
+KPX O Aring -50
+KPX O Atilde -50
+KPX O T -40
+KPX O Tcaron -40
+KPX O Tcommaaccent -40
+KPX O V -50
+KPX O W -50
+KPX O X -50
+KPX O Y -70
+KPX O Yacute -70
+KPX O Ydieresis -70
+KPX O comma -40
+KPX O period -40
+KPX Oacute A -50
+KPX Oacute Aacute -50
+KPX Oacute Abreve -50
+KPX Oacute Acircumflex -50
+KPX Oacute Adieresis -50
+KPX Oacute Agrave -50
+KPX Oacute Amacron -50
+KPX Oacute Aogonek -50
+KPX Oacute Aring -50
+KPX Oacute Atilde -50
+KPX Oacute T -40
+KPX Oacute Tcaron -40
+KPX Oacute Tcommaaccent -40
+KPX Oacute V -50
+KPX Oacute W -50
+KPX Oacute X -50
+KPX Oacute Y -70
+KPX Oacute Yacute -70
+KPX Oacute Ydieresis -70
+KPX Oacute comma -40
+KPX Oacute period -40
+KPX Ocircumflex A -50
+KPX Ocircumflex Aacute -50
+KPX Ocircumflex Abreve -50
+KPX Ocircumflex Acircumflex -50
+KPX Ocircumflex Adieresis -50
+KPX Ocircumflex Agrave -50
+KPX Ocircumflex Amacron -50
+KPX Ocircumflex Aogonek -50
+KPX Ocircumflex Aring -50
+KPX Ocircumflex Atilde -50
+KPX Ocircumflex T -40
+KPX Ocircumflex Tcaron -40
+KPX Ocircumflex Tcommaaccent -40
+KPX Ocircumflex V -50
+KPX Ocircumflex W -50
+KPX Ocircumflex X -50
+KPX Ocircumflex Y -70
+KPX Ocircumflex Yacute -70
+KPX Ocircumflex Ydieresis -70
+KPX Ocircumflex comma -40
+KPX Ocircumflex period -40
+KPX Odieresis A -50
+KPX Odieresis Aacute -50
+KPX Odieresis Abreve -50
+KPX Odieresis Acircumflex -50
+KPX Odieresis Adieresis -50
+KPX Odieresis Agrave -50
+KPX Odieresis Amacron -50
+KPX Odieresis Aogonek -50
+KPX Odieresis Aring -50
+KPX Odieresis Atilde -50
+KPX Odieresis T -40
+KPX Odieresis Tcaron -40
+KPX Odieresis Tcommaaccent -40
+KPX Odieresis V -50
+KPX Odieresis W -50
+KPX Odieresis X -50
+KPX Odieresis Y -70
+KPX Odieresis Yacute -70
+KPX Odieresis Ydieresis -70
+KPX Odieresis comma -40
+KPX Odieresis period -40
+KPX Ograve A -50
+KPX Ograve Aacute -50
+KPX Ograve Abreve -50
+KPX Ograve Acircumflex -50
+KPX Ograve Adieresis -50
+KPX Ograve Agrave -50
+KPX Ograve Amacron -50
+KPX Ograve Aogonek -50
+KPX Ograve Aring -50
+KPX Ograve Atilde -50
+KPX Ograve T -40
+KPX Ograve Tcaron -40
+KPX Ograve Tcommaaccent -40
+KPX Ograve V -50
+KPX Ograve W -50
+KPX Ograve X -50
+KPX Ograve Y -70
+KPX Ograve Yacute -70
+KPX Ograve Ydieresis -70
+KPX Ograve comma -40
+KPX Ograve period -40
+KPX Ohungarumlaut A -50
+KPX Ohungarumlaut Aacute -50
+KPX Ohungarumlaut Abreve -50
+KPX Ohungarumlaut Acircumflex -50
+KPX Ohungarumlaut Adieresis -50
+KPX Ohungarumlaut Agrave -50
+KPX Ohungarumlaut Amacron -50
+KPX Ohungarumlaut Aogonek -50
+KPX Ohungarumlaut Aring -50
+KPX Ohungarumlaut Atilde -50
+KPX Ohungarumlaut T -40
+KPX Ohungarumlaut Tcaron -40
+KPX Ohungarumlaut Tcommaaccent -40
+KPX Ohungarumlaut V -50
+KPX Ohungarumlaut W -50
+KPX Ohungarumlaut X -50
+KPX Ohungarumlaut Y -70
+KPX Ohungarumlaut Yacute -70
+KPX Ohungarumlaut Ydieresis -70
+KPX Ohungarumlaut comma -40
+KPX Ohungarumlaut period -40
+KPX Omacron A -50
+KPX Omacron Aacute -50
+KPX Omacron Abreve -50
+KPX Omacron Acircumflex -50
+KPX Omacron Adieresis -50
+KPX Omacron Agrave -50
+KPX Omacron Amacron -50
+KPX Omacron Aogonek -50
+KPX Omacron Aring -50
+KPX Omacron Atilde -50
+KPX Omacron T -40
+KPX Omacron Tcaron -40
+KPX Omacron Tcommaaccent -40
+KPX Omacron V -50
+KPX Omacron W -50
+KPX Omacron X -50
+KPX Omacron Y -70
+KPX Omacron Yacute -70
+KPX Omacron Ydieresis -70
+KPX Omacron comma -40
+KPX Omacron period -40
+KPX Oslash A -50
+KPX Oslash Aacute -50
+KPX Oslash Abreve -50
+KPX Oslash Acircumflex -50
+KPX Oslash Adieresis -50
+KPX Oslash Agrave -50
+KPX Oslash Amacron -50
+KPX Oslash Aogonek -50
+KPX Oslash Aring -50
+KPX Oslash Atilde -50
+KPX Oslash T -40
+KPX Oslash Tcaron -40
+KPX Oslash Tcommaaccent -40
+KPX Oslash V -50
+KPX Oslash W -50
+KPX Oslash X -50
+KPX Oslash Y -70
+KPX Oslash Yacute -70
+KPX Oslash Ydieresis -70
+KPX Oslash comma -40
+KPX Oslash period -40
+KPX Otilde A -50
+KPX Otilde Aacute -50
+KPX Otilde Abreve -50
+KPX Otilde Acircumflex -50
+KPX Otilde Adieresis -50
+KPX Otilde Agrave -50
+KPX Otilde Amacron -50
+KPX Otilde Aogonek -50
+KPX Otilde Aring -50
+KPX Otilde Atilde -50
+KPX Otilde T -40
+KPX Otilde Tcaron -40
+KPX Otilde Tcommaaccent -40
+KPX Otilde V -50
+KPX Otilde W -50
+KPX Otilde X -50
+KPX Otilde Y -70
+KPX Otilde Yacute -70
+KPX Otilde Ydieresis -70
+KPX Otilde comma -40
+KPX Otilde period -40
+KPX P A -100
+KPX P Aacute -100
+KPX P Abreve -100
+KPX P Acircumflex -100
+KPX P Adieresis -100
+KPX P Agrave -100
+KPX P Amacron -100
+KPX P Aogonek -100
+KPX P Aring -100
+KPX P Atilde -100
+KPX P a -30
+KPX P aacute -30
+KPX P abreve -30
+KPX P acircumflex -30
+KPX P adieresis -30
+KPX P agrave -30
+KPX P amacron -30
+KPX P aogonek -30
+KPX P aring -30
+KPX P atilde -30
+KPX P comma -120
+KPX P e -30
+KPX P eacute -30
+KPX P ecaron -30
+KPX P ecircumflex -30
+KPX P edieresis -30
+KPX P edotaccent -30
+KPX P egrave -30
+KPX P emacron -30
+KPX P eogonek -30
+KPX P o -40
+KPX P oacute -40
+KPX P ocircumflex -40
+KPX P odieresis -40
+KPX P ograve -40
+KPX P ohungarumlaut -40
+KPX P omacron -40
+KPX P oslash -40
+KPX P otilde -40
+KPX P period -120
+KPX Q U -10
+KPX Q Uacute -10
+KPX Q Ucircumflex -10
+KPX Q Udieresis -10
+KPX Q Ugrave -10
+KPX Q Uhungarumlaut -10
+KPX Q Umacron -10
+KPX Q Uogonek -10
+KPX Q Uring -10
+KPX Q comma 20
+KPX Q period 20
+KPX R O -20
+KPX R Oacute -20
+KPX R Ocircumflex -20
+KPX R Odieresis -20
+KPX R Ograve -20
+KPX R Ohungarumlaut -20
+KPX R Omacron -20
+KPX R Oslash -20
+KPX R Otilde -20
+KPX R T -20
+KPX R Tcaron -20
+KPX R Tcommaaccent -20
+KPX R U -20
+KPX R Uacute -20
+KPX R Ucircumflex -20
+KPX R Udieresis -20
+KPX R Ugrave -20
+KPX R Uhungarumlaut -20
+KPX R Umacron -20
+KPX R Uogonek -20
+KPX R Uring -20
+KPX R V -50
+KPX R W -40
+KPX R Y -50
+KPX R Yacute -50
+KPX R Ydieresis -50
+KPX Racute O -20
+KPX Racute Oacute -20
+KPX Racute Ocircumflex -20
+KPX Racute Odieresis -20
+KPX Racute Ograve -20
+KPX Racute Ohungarumlaut -20
+KPX Racute Omacron -20
+KPX Racute Oslash -20
+KPX Racute Otilde -20
+KPX Racute T -20
+KPX Racute Tcaron -20
+KPX Racute Tcommaaccent -20
+KPX Racute U -20
+KPX Racute Uacute -20
+KPX Racute Ucircumflex -20
+KPX Racute Udieresis -20
+KPX Racute Ugrave -20
+KPX Racute Uhungarumlaut -20
+KPX Racute Umacron -20
+KPX Racute Uogonek -20
+KPX Racute Uring -20
+KPX Racute V -50
+KPX Racute W -40
+KPX Racute Y -50
+KPX Racute Yacute -50
+KPX Racute Ydieresis -50
+KPX Rcaron O -20
+KPX Rcaron Oacute -20
+KPX Rcaron Ocircumflex -20
+KPX Rcaron Odieresis -20
+KPX Rcaron Ograve -20
+KPX Rcaron Ohungarumlaut -20
+KPX Rcaron Omacron -20
+KPX Rcaron Oslash -20
+KPX Rcaron Otilde -20
+KPX Rcaron T -20
+KPX Rcaron Tcaron -20
+KPX Rcaron Tcommaaccent -20
+KPX Rcaron U -20
+KPX Rcaron Uacute -20
+KPX Rcaron Ucircumflex -20
+KPX Rcaron Udieresis -20
+KPX Rcaron Ugrave -20
+KPX Rcaron Uhungarumlaut -20
+KPX Rcaron Umacron -20
+KPX Rcaron Uogonek -20
+KPX Rcaron Uring -20
+KPX Rcaron V -50
+KPX Rcaron W -40
+KPX Rcaron Y -50
+KPX Rcaron Yacute -50
+KPX Rcaron Ydieresis -50
+KPX Rcommaaccent O -20
+KPX Rcommaaccent Oacute -20
+KPX Rcommaaccent Ocircumflex -20
+KPX Rcommaaccent Odieresis -20
+KPX Rcommaaccent Ograve -20
+KPX Rcommaaccent Ohungarumlaut -20
+KPX Rcommaaccent Omacron -20
+KPX Rcommaaccent Oslash -20
+KPX Rcommaaccent Otilde -20
+KPX Rcommaaccent T -20
+KPX Rcommaaccent Tcaron -20
+KPX Rcommaaccent Tcommaaccent -20
+KPX Rcommaaccent U -20
+KPX Rcommaaccent Uacute -20
+KPX Rcommaaccent Ucircumflex -20
+KPX Rcommaaccent Udieresis -20
+KPX Rcommaaccent Ugrave -20
+KPX Rcommaaccent Uhungarumlaut -20
+KPX Rcommaaccent Umacron -20
+KPX Rcommaaccent Uogonek -20
+KPX Rcommaaccent Uring -20
+KPX Rcommaaccent V -50
+KPX Rcommaaccent W -40
+KPX Rcommaaccent Y -50
+KPX Rcommaaccent Yacute -50
+KPX Rcommaaccent Ydieresis -50
+KPX T A -90
+KPX T Aacute -90
+KPX T Abreve -90
+KPX T Acircumflex -90
+KPX T Adieresis -90
+KPX T Agrave -90
+KPX T Amacron -90
+KPX T Aogonek -90
+KPX T Aring -90
+KPX T Atilde -90
+KPX T O -40
+KPX T Oacute -40
+KPX T Ocircumflex -40
+KPX T Odieresis -40
+KPX T Ograve -40
+KPX T Ohungarumlaut -40
+KPX T Omacron -40
+KPX T Oslash -40
+KPX T Otilde -40
+KPX T a -80
+KPX T aacute -80
+KPX T abreve -80
+KPX T acircumflex -80
+KPX T adieresis -80
+KPX T agrave -80
+KPX T amacron -80
+KPX T aogonek -80
+KPX T aring -80
+KPX T atilde -80
+KPX T colon -40
+KPX T comma -80
+KPX T e -60
+KPX T eacute -60
+KPX T ecaron -60
+KPX T ecircumflex -60
+KPX T edieresis -60
+KPX T edotaccent -60
+KPX T egrave -60
+KPX T emacron -60
+KPX T eogonek -60
+KPX T hyphen -120
+KPX T o -80
+KPX T oacute -80
+KPX T ocircumflex -80
+KPX T odieresis -80
+KPX T ograve -80
+KPX T ohungarumlaut -80
+KPX T omacron -80
+KPX T oslash -80
+KPX T otilde -80
+KPX T period -80
+KPX T r -80
+KPX T racute -80
+KPX T rcommaaccent -80
+KPX T semicolon -40
+KPX T u -90
+KPX T uacute -90
+KPX T ucircumflex -90
+KPX T udieresis -90
+KPX T ugrave -90
+KPX T uhungarumlaut -90
+KPX T umacron -90
+KPX T uogonek -90
+KPX T uring -90
+KPX T w -60
+KPX T y -60
+KPX T yacute -60
+KPX T ydieresis -60
+KPX Tcaron A -90
+KPX Tcaron Aacute -90
+KPX Tcaron Abreve -90
+KPX Tcaron Acircumflex -90
+KPX Tcaron Adieresis -90
+KPX Tcaron Agrave -90
+KPX Tcaron Amacron -90
+KPX Tcaron Aogonek -90
+KPX Tcaron Aring -90
+KPX Tcaron Atilde -90
+KPX Tcaron O -40
+KPX Tcaron Oacute -40
+KPX Tcaron Ocircumflex -40
+KPX Tcaron Odieresis -40
+KPX Tcaron Ograve -40
+KPX Tcaron Ohungarumlaut -40
+KPX Tcaron Omacron -40
+KPX Tcaron Oslash -40
+KPX Tcaron Otilde -40
+KPX Tcaron a -80
+KPX Tcaron aacute -80
+KPX Tcaron abreve -80
+KPX Tcaron acircumflex -80
+KPX Tcaron adieresis -80
+KPX Tcaron agrave -80
+KPX Tcaron amacron -80
+KPX Tcaron aogonek -80
+KPX Tcaron aring -80
+KPX Tcaron atilde -80
+KPX Tcaron colon -40
+KPX Tcaron comma -80
+KPX Tcaron e -60
+KPX Tcaron eacute -60
+KPX Tcaron ecaron -60
+KPX Tcaron ecircumflex -60
+KPX Tcaron edieresis -60
+KPX Tcaron edotaccent -60
+KPX Tcaron egrave -60
+KPX Tcaron emacron -60
+KPX Tcaron eogonek -60
+KPX Tcaron hyphen -120
+KPX Tcaron o -80
+KPX Tcaron oacute -80
+KPX Tcaron ocircumflex -80
+KPX Tcaron odieresis -80
+KPX Tcaron ograve -80
+KPX Tcaron ohungarumlaut -80
+KPX Tcaron omacron -80
+KPX Tcaron oslash -80
+KPX Tcaron otilde -80
+KPX Tcaron period -80
+KPX Tcaron r -80
+KPX Tcaron racute -80
+KPX Tcaron rcommaaccent -80
+KPX Tcaron semicolon -40
+KPX Tcaron u -90
+KPX Tcaron uacute -90
+KPX Tcaron ucircumflex -90
+KPX Tcaron udieresis -90
+KPX Tcaron ugrave -90
+KPX Tcaron uhungarumlaut -90
+KPX Tcaron umacron -90
+KPX Tcaron uogonek -90
+KPX Tcaron uring -90
+KPX Tcaron w -60
+KPX Tcaron y -60
+KPX Tcaron yacute -60
+KPX Tcaron ydieresis -60
+KPX Tcommaaccent A -90
+KPX Tcommaaccent Aacute -90
+KPX Tcommaaccent Abreve -90
+KPX Tcommaaccent Acircumflex -90
+KPX Tcommaaccent Adieresis -90
+KPX Tcommaaccent Agrave -90
+KPX Tcommaaccent Amacron -90
+KPX Tcommaaccent Aogonek -90
+KPX Tcommaaccent Aring -90
+KPX Tcommaaccent Atilde -90
+KPX Tcommaaccent O -40
+KPX Tcommaaccent Oacute -40
+KPX Tcommaaccent Ocircumflex -40
+KPX Tcommaaccent Odieresis -40
+KPX Tcommaaccent Ograve -40
+KPX Tcommaaccent Ohungarumlaut -40
+KPX Tcommaaccent Omacron -40
+KPX Tcommaaccent Oslash -40
+KPX Tcommaaccent Otilde -40
+KPX Tcommaaccent a -80
+KPX Tcommaaccent aacute -80
+KPX Tcommaaccent abreve -80
+KPX Tcommaaccent acircumflex -80
+KPX Tcommaaccent adieresis -80
+KPX Tcommaaccent agrave -80
+KPX Tcommaaccent amacron -80
+KPX Tcommaaccent aogonek -80
+KPX Tcommaaccent aring -80
+KPX Tcommaaccent atilde -80
+KPX Tcommaaccent colon -40
+KPX Tcommaaccent comma -80
+KPX Tcommaaccent e -60
+KPX Tcommaaccent eacute -60
+KPX Tcommaaccent ecaron -60
+KPX Tcommaaccent ecircumflex -60
+KPX Tcommaaccent edieresis -60
+KPX Tcommaaccent edotaccent -60
+KPX Tcommaaccent egrave -60
+KPX Tcommaaccent emacron -60
+KPX Tcommaaccent eogonek -60
+KPX Tcommaaccent hyphen -120
+KPX Tcommaaccent o -80
+KPX Tcommaaccent oacute -80
+KPX Tcommaaccent ocircumflex -80
+KPX Tcommaaccent odieresis -80
+KPX Tcommaaccent ograve -80
+KPX Tcommaaccent ohungarumlaut -80
+KPX Tcommaaccent omacron -80
+KPX Tcommaaccent oslash -80
+KPX Tcommaaccent otilde -80
+KPX Tcommaaccent period -80
+KPX Tcommaaccent r -80
+KPX Tcommaaccent racute -80
+KPX Tcommaaccent rcommaaccent -80
+KPX Tcommaaccent semicolon -40
+KPX Tcommaaccent u -90
+KPX Tcommaaccent uacute -90
+KPX Tcommaaccent ucircumflex -90
+KPX Tcommaaccent udieresis -90
+KPX Tcommaaccent ugrave -90
+KPX Tcommaaccent uhungarumlaut -90
+KPX Tcommaaccent umacron -90
+KPX Tcommaaccent uogonek -90
+KPX Tcommaaccent uring -90
+KPX Tcommaaccent w -60
+KPX Tcommaaccent y -60
+KPX Tcommaaccent yacute -60
+KPX Tcommaaccent ydieresis -60
+KPX U A -50
+KPX U Aacute -50
+KPX U Abreve -50
+KPX U Acircumflex -50
+KPX U Adieresis -50
+KPX U Agrave -50
+KPX U Amacron -50
+KPX U Aogonek -50
+KPX U Aring -50
+KPX U Atilde -50
+KPX U comma -30
+KPX U period -30
+KPX Uacute A -50
+KPX Uacute Aacute -50
+KPX Uacute Abreve -50
+KPX Uacute Acircumflex -50
+KPX Uacute Adieresis -50
+KPX Uacute Agrave -50
+KPX Uacute Amacron -50
+KPX Uacute Aogonek -50
+KPX Uacute Aring -50
+KPX Uacute Atilde -50
+KPX Uacute comma -30
+KPX Uacute period -30
+KPX Ucircumflex A -50
+KPX Ucircumflex Aacute -50
+KPX Ucircumflex Abreve -50
+KPX Ucircumflex Acircumflex -50
+KPX Ucircumflex Adieresis -50
+KPX Ucircumflex Agrave -50
+KPX Ucircumflex Amacron -50
+KPX Ucircumflex Aogonek -50
+KPX Ucircumflex Aring -50
+KPX Ucircumflex Atilde -50
+KPX Ucircumflex comma -30
+KPX Ucircumflex period -30
+KPX Udieresis A -50
+KPX Udieresis Aacute -50
+KPX Udieresis Abreve -50
+KPX Udieresis Acircumflex -50
+KPX Udieresis Adieresis -50
+KPX Udieresis Agrave -50
+KPX Udieresis Amacron -50
+KPX Udieresis Aogonek -50
+KPX Udieresis Aring -50
+KPX Udieresis Atilde -50
+KPX Udieresis comma -30
+KPX Udieresis period -30
+KPX Ugrave A -50
+KPX Ugrave Aacute -50
+KPX Ugrave Abreve -50
+KPX Ugrave Acircumflex -50
+KPX Ugrave Adieresis -50
+KPX Ugrave Agrave -50
+KPX Ugrave Amacron -50
+KPX Ugrave Aogonek -50
+KPX Ugrave Aring -50
+KPX Ugrave Atilde -50
+KPX Ugrave comma -30
+KPX Ugrave period -30
+KPX Uhungarumlaut A -50
+KPX Uhungarumlaut Aacute -50
+KPX Uhungarumlaut Abreve -50
+KPX Uhungarumlaut Acircumflex -50
+KPX Uhungarumlaut Adieresis -50
+KPX Uhungarumlaut Agrave -50
+KPX Uhungarumlaut Amacron -50
+KPX Uhungarumlaut Aogonek -50
+KPX Uhungarumlaut Aring -50
+KPX Uhungarumlaut Atilde -50
+KPX Uhungarumlaut comma -30
+KPX Uhungarumlaut period -30
+KPX Umacron A -50
+KPX Umacron Aacute -50
+KPX Umacron Abreve -50
+KPX Umacron Acircumflex -50
+KPX Umacron Adieresis -50
+KPX Umacron Agrave -50
+KPX Umacron Amacron -50
+KPX Umacron Aogonek -50
+KPX Umacron Aring -50
+KPX Umacron Atilde -50
+KPX Umacron comma -30
+KPX Umacron period -30
+KPX Uogonek A -50
+KPX Uogonek Aacute -50
+KPX Uogonek Abreve -50
+KPX Uogonek Acircumflex -50
+KPX Uogonek Adieresis -50
+KPX Uogonek Agrave -50
+KPX Uogonek Amacron -50
+KPX Uogonek Aogonek -50
+KPX Uogonek Aring -50
+KPX Uogonek Atilde -50
+KPX Uogonek comma -30
+KPX Uogonek period -30
+KPX Uring A -50
+KPX Uring Aacute -50
+KPX Uring Abreve -50
+KPX Uring Acircumflex -50
+KPX Uring Adieresis -50
+KPX Uring Agrave -50
+KPX Uring Amacron -50
+KPX Uring Aogonek -50
+KPX Uring Aring -50
+KPX Uring Atilde -50
+KPX Uring comma -30
+KPX Uring period -30
+KPX V A -80
+KPX V Aacute -80
+KPX V Abreve -80
+KPX V Acircumflex -80
+KPX V Adieresis -80
+KPX V Agrave -80
+KPX V Amacron -80
+KPX V Aogonek -80
+KPX V Aring -80
+KPX V Atilde -80
+KPX V G -50
+KPX V Gbreve -50
+KPX V Gcommaaccent -50
+KPX V O -50
+KPX V Oacute -50
+KPX V Ocircumflex -50
+KPX V Odieresis -50
+KPX V Ograve -50
+KPX V Ohungarumlaut -50
+KPX V Omacron -50
+KPX V Oslash -50
+KPX V Otilde -50
+KPX V a -60
+KPX V aacute -60
+KPX V abreve -60
+KPX V acircumflex -60
+KPX V adieresis -60
+KPX V agrave -60
+KPX V amacron -60
+KPX V aogonek -60
+KPX V aring -60
+KPX V atilde -60
+KPX V colon -40
+KPX V comma -120
+KPX V e -50
+KPX V eacute -50
+KPX V ecaron -50
+KPX V ecircumflex -50
+KPX V edieresis -50
+KPX V edotaccent -50
+KPX V egrave -50
+KPX V emacron -50
+KPX V eogonek -50
+KPX V hyphen -80
+KPX V o -90
+KPX V oacute -90
+KPX V ocircumflex -90
+KPX V odieresis -90
+KPX V ograve -90
+KPX V ohungarumlaut -90
+KPX V omacron -90
+KPX V oslash -90
+KPX V otilde -90
+KPX V period -120
+KPX V semicolon -40
+KPX V u -60
+KPX V uacute -60
+KPX V ucircumflex -60
+KPX V udieresis -60
+KPX V ugrave -60
+KPX V uhungarumlaut -60
+KPX V umacron -60
+KPX V uogonek -60
+KPX V uring -60
+KPX W A -60
+KPX W Aacute -60
+KPX W Abreve -60
+KPX W Acircumflex -60
+KPX W Adieresis -60
+KPX W Agrave -60
+KPX W Amacron -60
+KPX W Aogonek -60
+KPX W Aring -60
+KPX W Atilde -60
+KPX W O -20
+KPX W Oacute -20
+KPX W Ocircumflex -20
+KPX W Odieresis -20
+KPX W Ograve -20
+KPX W Ohungarumlaut -20
+KPX W Omacron -20
+KPX W Oslash -20
+KPX W Otilde -20
+KPX W a -40
+KPX W aacute -40
+KPX W abreve -40
+KPX W acircumflex -40
+KPX W adieresis -40
+KPX W agrave -40
+KPX W amacron -40
+KPX W aogonek -40
+KPX W aring -40
+KPX W atilde -40
+KPX W colon -10
+KPX W comma -80
+KPX W e -35
+KPX W eacute -35
+KPX W ecaron -35
+KPX W ecircumflex -35
+KPX W edieresis -35
+KPX W edotaccent -35
+KPX W egrave -35
+KPX W emacron -35
+KPX W eogonek -35
+KPX W hyphen -40
+KPX W o -60
+KPX W oacute -60
+KPX W ocircumflex -60
+KPX W odieresis -60
+KPX W ograve -60
+KPX W ohungarumlaut -60
+KPX W omacron -60
+KPX W oslash -60
+KPX W otilde -60
+KPX W period -80
+KPX W semicolon -10
+KPX W u -45
+KPX W uacute -45
+KPX W ucircumflex -45
+KPX W udieresis -45
+KPX W ugrave -45
+KPX W uhungarumlaut -45
+KPX W umacron -45
+KPX W uogonek -45
+KPX W uring -45
+KPX W y -20
+KPX W yacute -20
+KPX W ydieresis -20
+KPX Y A -110
+KPX Y Aacute -110
+KPX Y Abreve -110
+KPX Y Acircumflex -110
+KPX Y Adieresis -110
+KPX Y Agrave -110
+KPX Y Amacron -110
+KPX Y Aogonek -110
+KPX Y Aring -110
+KPX Y Atilde -110
+KPX Y O -70
+KPX Y Oacute -70
+KPX Y Ocircumflex -70
+KPX Y Odieresis -70
+KPX Y Ograve -70
+KPX Y Ohungarumlaut -70
+KPX Y Omacron -70
+KPX Y Oslash -70
+KPX Y Otilde -70
+KPX Y a -90
+KPX Y aacute -90
+KPX Y abreve -90
+KPX Y acircumflex -90
+KPX Y adieresis -90
+KPX Y agrave -90
+KPX Y amacron -90
+KPX Y aogonek -90
+KPX Y aring -90
+KPX Y atilde -90
+KPX Y colon -50
+KPX Y comma -100
+KPX Y e -80
+KPX Y eacute -80
+KPX Y ecaron -80
+KPX Y ecircumflex -80
+KPX Y edieresis -80
+KPX Y edotaccent -80
+KPX Y egrave -80
+KPX Y emacron -80
+KPX Y eogonek -80
+KPX Y o -100
+KPX Y oacute -100
+KPX Y ocircumflex -100
+KPX Y odieresis -100
+KPX Y ograve -100
+KPX Y ohungarumlaut -100
+KPX Y omacron -100
+KPX Y oslash -100
+KPX Y otilde -100
+KPX Y period -100
+KPX Y semicolon -50
+KPX Y u -100
+KPX Y uacute -100
+KPX Y ucircumflex -100
+KPX Y udieresis -100
+KPX Y ugrave -100
+KPX Y uhungarumlaut -100
+KPX Y umacron -100
+KPX Y uogonek -100
+KPX Y uring -100
+KPX Yacute A -110
+KPX Yacute Aacute -110
+KPX Yacute Abreve -110
+KPX Yacute Acircumflex -110
+KPX Yacute Adieresis -110
+KPX Yacute Agrave -110
+KPX Yacute Amacron -110
+KPX Yacute Aogonek -110
+KPX Yacute Aring -110
+KPX Yacute Atilde -110
+KPX Yacute O -70
+KPX Yacute Oacute -70
+KPX Yacute Ocircumflex -70
+KPX Yacute Odieresis -70
+KPX Yacute Ograve -70
+KPX Yacute Ohungarumlaut -70
+KPX Yacute Omacron -70
+KPX Yacute Oslash -70
+KPX Yacute Otilde -70
+KPX Yacute a -90
+KPX Yacute aacute -90
+KPX Yacute abreve -90
+KPX Yacute acircumflex -90
+KPX Yacute adieresis -90
+KPX Yacute agrave -90
+KPX Yacute amacron -90
+KPX Yacute aogonek -90
+KPX Yacute aring -90
+KPX Yacute atilde -90
+KPX Yacute colon -50
+KPX Yacute comma -100
+KPX Yacute e -80
+KPX Yacute eacute -80
+KPX Yacute ecaron -80
+KPX Yacute ecircumflex -80
+KPX Yacute edieresis -80
+KPX Yacute edotaccent -80
+KPX Yacute egrave -80
+KPX Yacute emacron -80
+KPX Yacute eogonek -80
+KPX Yacute o -100
+KPX Yacute oacute -100
+KPX Yacute ocircumflex -100
+KPX Yacute odieresis -100
+KPX Yacute ograve -100
+KPX Yacute ohungarumlaut -100
+KPX Yacute omacron -100
+KPX Yacute oslash -100
+KPX Yacute otilde -100
+KPX Yacute period -100
+KPX Yacute semicolon -50
+KPX Yacute u -100
+KPX Yacute uacute -100
+KPX Yacute ucircumflex -100
+KPX Yacute udieresis -100
+KPX Yacute ugrave -100
+KPX Yacute uhungarumlaut -100
+KPX Yacute umacron -100
+KPX Yacute uogonek -100
+KPX Yacute uring -100
+KPX Ydieresis A -110
+KPX Ydieresis Aacute -110
+KPX Ydieresis Abreve -110
+KPX Ydieresis Acircumflex -110
+KPX Ydieresis Adieresis -110
+KPX Ydieresis Agrave -110
+KPX Ydieresis Amacron -110
+KPX Ydieresis Aogonek -110
+KPX Ydieresis Aring -110
+KPX Ydieresis Atilde -110
+KPX Ydieresis O -70
+KPX Ydieresis Oacute -70
+KPX Ydieresis Ocircumflex -70
+KPX Ydieresis Odieresis -70
+KPX Ydieresis Ograve -70
+KPX Ydieresis Ohungarumlaut -70
+KPX Ydieresis Omacron -70
+KPX Ydieresis Oslash -70
+KPX Ydieresis Otilde -70
+KPX Ydieresis a -90
+KPX Ydieresis aacute -90
+KPX Ydieresis abreve -90
+KPX Ydieresis acircumflex -90
+KPX Ydieresis adieresis -90
+KPX Ydieresis agrave -90
+KPX Ydieresis amacron -90
+KPX Ydieresis aogonek -90
+KPX Ydieresis aring -90
+KPX Ydieresis atilde -90
+KPX Ydieresis colon -50
+KPX Ydieresis comma -100
+KPX Ydieresis e -80
+KPX Ydieresis eacute -80
+KPX Ydieresis ecaron -80
+KPX Ydieresis ecircumflex -80
+KPX Ydieresis edieresis -80
+KPX Ydieresis edotaccent -80
+KPX Ydieresis egrave -80
+KPX Ydieresis emacron -80
+KPX Ydieresis eogonek -80
+KPX Ydieresis o -100
+KPX Ydieresis oacute -100
+KPX Ydieresis ocircumflex -100
+KPX Ydieresis odieresis -100
+KPX Ydieresis ograve -100
+KPX Ydieresis ohungarumlaut -100
+KPX Ydieresis omacron -100
+KPX Ydieresis oslash -100
+KPX Ydieresis otilde -100
+KPX Ydieresis period -100
+KPX Ydieresis semicolon -50
+KPX Ydieresis u -100
+KPX Ydieresis uacute -100
+KPX Ydieresis ucircumflex -100
+KPX Ydieresis udieresis -100
+KPX Ydieresis ugrave -100
+KPX Ydieresis uhungarumlaut -100
+KPX Ydieresis umacron -100
+KPX Ydieresis uogonek -100
+KPX Ydieresis uring -100
+KPX a g -10
+KPX a gbreve -10
+KPX a gcommaaccent -10
+KPX a v -15
+KPX a w -15
+KPX a y -20
+KPX a yacute -20
+KPX a ydieresis -20
+KPX aacute g -10
+KPX aacute gbreve -10
+KPX aacute gcommaaccent -10
+KPX aacute v -15
+KPX aacute w -15
+KPX aacute y -20
+KPX aacute yacute -20
+KPX aacute ydieresis -20
+KPX abreve g -10
+KPX abreve gbreve -10
+KPX abreve gcommaaccent -10
+KPX abreve v -15
+KPX abreve w -15
+KPX abreve y -20
+KPX abreve yacute -20
+KPX abreve ydieresis -20
+KPX acircumflex g -10
+KPX acircumflex gbreve -10
+KPX acircumflex gcommaaccent -10
+KPX acircumflex v -15
+KPX acircumflex w -15
+KPX acircumflex y -20
+KPX acircumflex yacute -20
+KPX acircumflex ydieresis -20
+KPX adieresis g -10
+KPX adieresis gbreve -10
+KPX adieresis gcommaaccent -10
+KPX adieresis v -15
+KPX adieresis w -15
+KPX adieresis y -20
+KPX adieresis yacute -20
+KPX adieresis ydieresis -20
+KPX agrave g -10
+KPX agrave gbreve -10
+KPX agrave gcommaaccent -10
+KPX agrave v -15
+KPX agrave w -15
+KPX agrave y -20
+KPX agrave yacute -20
+KPX agrave ydieresis -20
+KPX amacron g -10
+KPX amacron gbreve -10
+KPX amacron gcommaaccent -10
+KPX amacron v -15
+KPX amacron w -15
+KPX amacron y -20
+KPX amacron yacute -20
+KPX amacron ydieresis -20
+KPX aogonek g -10
+KPX aogonek gbreve -10
+KPX aogonek gcommaaccent -10
+KPX aogonek v -15
+KPX aogonek w -15
+KPX aogonek y -20
+KPX aogonek yacute -20
+KPX aogonek ydieresis -20
+KPX aring g -10
+KPX aring gbreve -10
+KPX aring gcommaaccent -10
+KPX aring v -15
+KPX aring w -15
+KPX aring y -20
+KPX aring yacute -20
+KPX aring ydieresis -20
+KPX atilde g -10
+KPX atilde gbreve -10
+KPX atilde gcommaaccent -10
+KPX atilde v -15
+KPX atilde w -15
+KPX atilde y -20
+KPX atilde yacute -20
+KPX atilde ydieresis -20
+KPX b l -10
+KPX b lacute -10
+KPX b lcommaaccent -10
+KPX b lslash -10
+KPX b u -20
+KPX b uacute -20
+KPX b ucircumflex -20
+KPX b udieresis -20
+KPX b ugrave -20
+KPX b uhungarumlaut -20
+KPX b umacron -20
+KPX b uogonek -20
+KPX b uring -20
+KPX b v -20
+KPX b y -20
+KPX b yacute -20
+KPX b ydieresis -20
+KPX c h -10
+KPX c k -20
+KPX c kcommaaccent -20
+KPX c l -20
+KPX c lacute -20
+KPX c lcommaaccent -20
+KPX c lslash -20
+KPX c y -10
+KPX c yacute -10
+KPX c ydieresis -10
+KPX cacute h -10
+KPX cacute k -20
+KPX cacute kcommaaccent -20
+KPX cacute l -20
+KPX cacute lacute -20
+KPX cacute lcommaaccent -20
+KPX cacute lslash -20
+KPX cacute y -10
+KPX cacute yacute -10
+KPX cacute ydieresis -10
+KPX ccaron h -10
+KPX ccaron k -20
+KPX ccaron kcommaaccent -20
+KPX ccaron l -20
+KPX ccaron lacute -20
+KPX ccaron lcommaaccent -20
+KPX ccaron lslash -20
+KPX ccaron y -10
+KPX ccaron yacute -10
+KPX ccaron ydieresis -10
+KPX ccedilla h -10
+KPX ccedilla k -20
+KPX ccedilla kcommaaccent -20
+KPX ccedilla l -20
+KPX ccedilla lacute -20
+KPX ccedilla lcommaaccent -20
+KPX ccedilla lslash -20
+KPX ccedilla y -10
+KPX ccedilla yacute -10
+KPX ccedilla ydieresis -10
+KPX colon space -40
+KPX comma quotedblright -120
+KPX comma quoteright -120
+KPX comma space -40
+KPX d d -10
+KPX d dcroat -10
+KPX d v -15
+KPX d w -15
+KPX d y -15
+KPX d yacute -15
+KPX d ydieresis -15
+KPX dcroat d -10
+KPX dcroat dcroat -10
+KPX dcroat v -15
+KPX dcroat w -15
+KPX dcroat y -15
+KPX dcroat yacute -15
+KPX dcroat ydieresis -15
+KPX e comma 10
+KPX e period 20
+KPX e v -15
+KPX e w -15
+KPX e x -15
+KPX e y -15
+KPX e yacute -15
+KPX e ydieresis -15
+KPX eacute comma 10
+KPX eacute period 20
+KPX eacute v -15
+KPX eacute w -15
+KPX eacute x -15
+KPX eacute y -15
+KPX eacute yacute -15
+KPX eacute ydieresis -15
+KPX ecaron comma 10
+KPX ecaron period 20
+KPX ecaron v -15
+KPX ecaron w -15
+KPX ecaron x -15
+KPX ecaron y -15
+KPX ecaron yacute -15
+KPX ecaron ydieresis -15
+KPX ecircumflex comma 10
+KPX ecircumflex period 20
+KPX ecircumflex v -15
+KPX ecircumflex w -15
+KPX ecircumflex x -15
+KPX ecircumflex y -15
+KPX ecircumflex yacute -15
+KPX ecircumflex ydieresis -15
+KPX edieresis comma 10
+KPX edieresis period 20
+KPX edieresis v -15
+KPX edieresis w -15
+KPX edieresis x -15
+KPX edieresis y -15
+KPX edieresis yacute -15
+KPX edieresis ydieresis -15
+KPX edotaccent comma 10
+KPX edotaccent period 20
+KPX edotaccent v -15
+KPX edotaccent w -15
+KPX edotaccent x -15
+KPX edotaccent y -15
+KPX edotaccent yacute -15
+KPX edotaccent ydieresis -15
+KPX egrave comma 10
+KPX egrave period 20
+KPX egrave v -15
+KPX egrave w -15
+KPX egrave x -15
+KPX egrave y -15
+KPX egrave yacute -15
+KPX egrave ydieresis -15
+KPX emacron comma 10
+KPX emacron period 20
+KPX emacron v -15
+KPX emacron w -15
+KPX emacron x -15
+KPX emacron y -15
+KPX emacron yacute -15
+KPX emacron ydieresis -15
+KPX eogonek comma 10
+KPX eogonek period 20
+KPX eogonek v -15
+KPX eogonek w -15
+KPX eogonek x -15
+KPX eogonek y -15
+KPX eogonek yacute -15
+KPX eogonek ydieresis -15
+KPX f comma -10
+KPX f e -10
+KPX f eacute -10
+KPX f ecaron -10
+KPX f ecircumflex -10
+KPX f edieresis -10
+KPX f edotaccent -10
+KPX f egrave -10
+KPX f emacron -10
+KPX f eogonek -10
+KPX f o -20
+KPX f oacute -20
+KPX f ocircumflex -20
+KPX f odieresis -20
+KPX f ograve -20
+KPX f ohungarumlaut -20
+KPX f omacron -20
+KPX f oslash -20
+KPX f otilde -20
+KPX f period -10
+KPX f quotedblright 30
+KPX f quoteright 30
+KPX g e 10
+KPX g eacute 10
+KPX g ecaron 10
+KPX g ecircumflex 10
+KPX g edieresis 10
+KPX g edotaccent 10
+KPX g egrave 10
+KPX g emacron 10
+KPX g eogonek 10
+KPX g g -10
+KPX g gbreve -10
+KPX g gcommaaccent -10
+KPX gbreve e 10
+KPX gbreve eacute 10
+KPX gbreve ecaron 10
+KPX gbreve ecircumflex 10
+KPX gbreve edieresis 10
+KPX gbreve edotaccent 10
+KPX gbreve egrave 10
+KPX gbreve emacron 10
+KPX gbreve eogonek 10
+KPX gbreve g -10
+KPX gbreve gbreve -10
+KPX gbreve gcommaaccent -10
+KPX gcommaaccent e 10
+KPX gcommaaccent eacute 10
+KPX gcommaaccent ecaron 10
+KPX gcommaaccent ecircumflex 10
+KPX gcommaaccent edieresis 10
+KPX gcommaaccent edotaccent 10
+KPX gcommaaccent egrave 10
+KPX gcommaaccent emacron 10
+KPX gcommaaccent eogonek 10
+KPX gcommaaccent g -10
+KPX gcommaaccent gbreve -10
+KPX gcommaaccent gcommaaccent -10
+KPX h y -20
+KPX h yacute -20
+KPX h ydieresis -20
+KPX k o -15
+KPX k oacute -15
+KPX k ocircumflex -15
+KPX k odieresis -15
+KPX k ograve -15
+KPX k ohungarumlaut -15
+KPX k omacron -15
+KPX k oslash -15
+KPX k otilde -15
+KPX kcommaaccent o -15
+KPX kcommaaccent oacute -15
+KPX kcommaaccent ocircumflex -15
+KPX kcommaaccent odieresis -15
+KPX kcommaaccent ograve -15
+KPX kcommaaccent ohungarumlaut -15
+KPX kcommaaccent omacron -15
+KPX kcommaaccent oslash -15
+KPX kcommaaccent otilde -15
+KPX l w -15
+KPX l y -15
+KPX l yacute -15
+KPX l ydieresis -15
+KPX lacute w -15
+KPX lacute y -15
+KPX lacute yacute -15
+KPX lacute ydieresis -15
+KPX lcommaaccent w -15
+KPX lcommaaccent y -15
+KPX lcommaaccent yacute -15
+KPX lcommaaccent ydieresis -15
+KPX lslash w -15
+KPX lslash y -15
+KPX lslash yacute -15
+KPX lslash ydieresis -15
+KPX m u -20
+KPX m uacute -20
+KPX m ucircumflex -20
+KPX m udieresis -20
+KPX m ugrave -20
+KPX m uhungarumlaut -20
+KPX m umacron -20
+KPX m uogonek -20
+KPX m uring -20
+KPX m y -30
+KPX m yacute -30
+KPX m ydieresis -30
+KPX n u -10
+KPX n uacute -10
+KPX n ucircumflex -10
+KPX n udieresis -10
+KPX n ugrave -10
+KPX n uhungarumlaut -10
+KPX n umacron -10
+KPX n uogonek -10
+KPX n uring -10
+KPX n v -40
+KPX n y -20
+KPX n yacute -20
+KPX n ydieresis -20
+KPX nacute u -10
+KPX nacute uacute -10
+KPX nacute ucircumflex -10
+KPX nacute udieresis -10
+KPX nacute ugrave -10
+KPX nacute uhungarumlaut -10
+KPX nacute umacron -10
+KPX nacute uogonek -10
+KPX nacute uring -10
+KPX nacute v -40
+KPX nacute y -20
+KPX nacute yacute -20
+KPX nacute ydieresis -20
+KPX ncaron u -10
+KPX ncaron uacute -10
+KPX ncaron ucircumflex -10
+KPX ncaron udieresis -10
+KPX ncaron ugrave -10
+KPX ncaron uhungarumlaut -10
+KPX ncaron umacron -10
+KPX ncaron uogonek -10
+KPX ncaron uring -10
+KPX ncaron v -40
+KPX ncaron y -20
+KPX ncaron yacute -20
+KPX ncaron ydieresis -20
+KPX ncommaaccent u -10
+KPX ncommaaccent uacute -10
+KPX ncommaaccent ucircumflex -10
+KPX ncommaaccent udieresis -10
+KPX ncommaaccent ugrave -10
+KPX ncommaaccent uhungarumlaut -10
+KPX ncommaaccent umacron -10
+KPX ncommaaccent uogonek -10
+KPX ncommaaccent uring -10
+KPX ncommaaccent v -40
+KPX ncommaaccent y -20
+KPX ncommaaccent yacute -20
+KPX ncommaaccent ydieresis -20
+KPX ntilde u -10
+KPX ntilde uacute -10
+KPX ntilde ucircumflex -10
+KPX ntilde udieresis -10
+KPX ntilde ugrave -10
+KPX ntilde uhungarumlaut -10
+KPX ntilde umacron -10
+KPX ntilde uogonek -10
+KPX ntilde uring -10
+KPX ntilde v -40
+KPX ntilde y -20
+KPX ntilde yacute -20
+KPX ntilde ydieresis -20
+KPX o v -20
+KPX o w -15
+KPX o x -30
+KPX o y -20
+KPX o yacute -20
+KPX o ydieresis -20
+KPX oacute v -20
+KPX oacute w -15
+KPX oacute x -30
+KPX oacute y -20
+KPX oacute yacute -20
+KPX oacute ydieresis -20
+KPX ocircumflex v -20
+KPX ocircumflex w -15
+KPX ocircumflex x -30
+KPX ocircumflex y -20
+KPX ocircumflex yacute -20
+KPX ocircumflex ydieresis -20
+KPX odieresis v -20
+KPX odieresis w -15
+KPX odieresis x -30
+KPX odieresis y -20
+KPX odieresis yacute -20
+KPX odieresis ydieresis -20
+KPX ograve v -20
+KPX ograve w -15
+KPX ograve x -30
+KPX ograve y -20
+KPX ograve yacute -20
+KPX ograve ydieresis -20
+KPX ohungarumlaut v -20
+KPX ohungarumlaut w -15
+KPX ohungarumlaut x -30
+KPX ohungarumlaut y -20
+KPX ohungarumlaut yacute -20
+KPX ohungarumlaut ydieresis -20
+KPX omacron v -20
+KPX omacron w -15
+KPX omacron x -30
+KPX omacron y -20
+KPX omacron yacute -20
+KPX omacron ydieresis -20
+KPX oslash v -20
+KPX oslash w -15
+KPX oslash x -30
+KPX oslash y -20
+KPX oslash yacute -20
+KPX oslash ydieresis -20
+KPX otilde v -20
+KPX otilde w -15
+KPX otilde x -30
+KPX otilde y -20
+KPX otilde yacute -20
+KPX otilde ydieresis -20
+KPX p y -15
+KPX p yacute -15
+KPX p ydieresis -15
+KPX period quotedblright -120
+KPX period quoteright -120
+KPX period space -40
+KPX quotedblright space -80
+KPX quoteleft quoteleft -46
+KPX quoteright d -80
+KPX quoteright dcroat -80
+KPX quoteright l -20
+KPX quoteright lacute -20
+KPX quoteright lcommaaccent -20
+KPX quoteright lslash -20
+KPX quoteright quoteright -46
+KPX quoteright r -40
+KPX quoteright racute -40
+KPX quoteright rcaron -40
+KPX quoteright rcommaaccent -40
+KPX quoteright s -60
+KPX quoteright sacute -60
+KPX quoteright scaron -60
+KPX quoteright scedilla -60
+KPX quoteright scommaaccent -60
+KPX quoteright space -80
+KPX quoteright v -20
+KPX r c -20
+KPX r cacute -20
+KPX r ccaron -20
+KPX r ccedilla -20
+KPX r comma -60
+KPX r d -20
+KPX r dcroat -20
+KPX r g -15
+KPX r gbreve -15
+KPX r gcommaaccent -15
+KPX r hyphen -20
+KPX r o -20
+KPX r oacute -20
+KPX r ocircumflex -20
+KPX r odieresis -20
+KPX r ograve -20
+KPX r ohungarumlaut -20
+KPX r omacron -20
+KPX r oslash -20
+KPX r otilde -20
+KPX r period -60
+KPX r q -20
+KPX r s -15
+KPX r sacute -15
+KPX r scaron -15
+KPX r scedilla -15
+KPX r scommaaccent -15
+KPX r t 20
+KPX r tcommaaccent 20
+KPX r v 10
+KPX r y 10
+KPX r yacute 10
+KPX r ydieresis 10
+KPX racute c -20
+KPX racute cacute -20
+KPX racute ccaron -20
+KPX racute ccedilla -20
+KPX racute comma -60
+KPX racute d -20
+KPX racute dcroat -20
+KPX racute g -15
+KPX racute gbreve -15
+KPX racute gcommaaccent -15
+KPX racute hyphen -20
+KPX racute o -20
+KPX racute oacute -20
+KPX racute ocircumflex -20
+KPX racute odieresis -20
+KPX racute ograve -20
+KPX racute ohungarumlaut -20
+KPX racute omacron -20
+KPX racute oslash -20
+KPX racute otilde -20
+KPX racute period -60
+KPX racute q -20
+KPX racute s -15
+KPX racute sacute -15
+KPX racute scaron -15
+KPX racute scedilla -15
+KPX racute scommaaccent -15
+KPX racute t 20
+KPX racute tcommaaccent 20
+KPX racute v 10
+KPX racute y 10
+KPX racute yacute 10
+KPX racute ydieresis 10
+KPX rcaron c -20
+KPX rcaron cacute -20
+KPX rcaron ccaron -20
+KPX rcaron ccedilla -20
+KPX rcaron comma -60
+KPX rcaron d -20
+KPX rcaron dcroat -20
+KPX rcaron g -15
+KPX rcaron gbreve -15
+KPX rcaron gcommaaccent -15
+KPX rcaron hyphen -20
+KPX rcaron o -20
+KPX rcaron oacute -20
+KPX rcaron ocircumflex -20
+KPX rcaron odieresis -20
+KPX rcaron ograve -20
+KPX rcaron ohungarumlaut -20
+KPX rcaron omacron -20
+KPX rcaron oslash -20
+KPX rcaron otilde -20
+KPX rcaron period -60
+KPX rcaron q -20
+KPX rcaron s -15
+KPX rcaron sacute -15
+KPX rcaron scaron -15
+KPX rcaron scedilla -15
+KPX rcaron scommaaccent -15
+KPX rcaron t 20
+KPX rcaron tcommaaccent 20
+KPX rcaron v 10
+KPX rcaron y 10
+KPX rcaron yacute 10
+KPX rcaron ydieresis 10
+KPX rcommaaccent c -20
+KPX rcommaaccent cacute -20
+KPX rcommaaccent ccaron -20
+KPX rcommaaccent ccedilla -20
+KPX rcommaaccent comma -60
+KPX rcommaaccent d -20
+KPX rcommaaccent dcroat -20
+KPX rcommaaccent g -15
+KPX rcommaaccent gbreve -15
+KPX rcommaaccent gcommaaccent -15
+KPX rcommaaccent hyphen -20
+KPX rcommaaccent o -20
+KPX rcommaaccent oacute -20
+KPX rcommaaccent ocircumflex -20
+KPX rcommaaccent odieresis -20
+KPX rcommaaccent ograve -20
+KPX rcommaaccent ohungarumlaut -20
+KPX rcommaaccent omacron -20
+KPX rcommaaccent oslash -20
+KPX rcommaaccent otilde -20
+KPX rcommaaccent period -60
+KPX rcommaaccent q -20
+KPX rcommaaccent s -15
+KPX rcommaaccent sacute -15
+KPX rcommaaccent scaron -15
+KPX rcommaaccent scedilla -15
+KPX rcommaaccent scommaaccent -15
+KPX rcommaaccent t 20
+KPX rcommaaccent tcommaaccent 20
+KPX rcommaaccent v 10
+KPX rcommaaccent y 10
+KPX rcommaaccent yacute 10
+KPX rcommaaccent ydieresis 10
+KPX s w -15
+KPX sacute w -15
+KPX scaron w -15
+KPX scedilla w -15
+KPX scommaaccent w -15
+KPX semicolon space -40
+KPX space T -100
+KPX space Tcaron -100
+KPX space Tcommaaccent -100
+KPX space V -80
+KPX space W -80
+KPX space Y -120
+KPX space Yacute -120
+KPX space Ydieresis -120
+KPX space quotedblleft -80
+KPX space quoteleft -60
+KPX v a -20
+KPX v aacute -20
+KPX v abreve -20
+KPX v acircumflex -20
+KPX v adieresis -20
+KPX v agrave -20
+KPX v amacron -20
+KPX v aogonek -20
+KPX v aring -20
+KPX v atilde -20
+KPX v comma -80
+KPX v o -30
+KPX v oacute -30
+KPX v ocircumflex -30
+KPX v odieresis -30
+KPX v ograve -30
+KPX v ohungarumlaut -30
+KPX v omacron -30
+KPX v oslash -30
+KPX v otilde -30
+KPX v period -80
+KPX w comma -40
+KPX w o -20
+KPX w oacute -20
+KPX w ocircumflex -20
+KPX w odieresis -20
+KPX w ograve -20
+KPX w ohungarumlaut -20
+KPX w omacron -20
+KPX w oslash -20
+KPX w otilde -20
+KPX w period -40
+KPX x e -10
+KPX x eacute -10
+KPX x ecaron -10
+KPX x ecircumflex -10
+KPX x edieresis -10
+KPX x edotaccent -10
+KPX x egrave -10
+KPX x emacron -10
+KPX x eogonek -10
+KPX y a -30
+KPX y aacute -30
+KPX y abreve -30
+KPX y acircumflex -30
+KPX y adieresis -30
+KPX y agrave -30
+KPX y amacron -30
+KPX y aogonek -30
+KPX y aring -30
+KPX y atilde -30
+KPX y comma -80
+KPX y e -10
+KPX y eacute -10
+KPX y ecaron -10
+KPX y ecircumflex -10
+KPX y edieresis -10
+KPX y edotaccent -10
+KPX y egrave -10
+KPX y emacron -10
+KPX y eogonek -10
+KPX y o -25
+KPX y oacute -25
+KPX y ocircumflex -25
+KPX y odieresis -25
+KPX y ograve -25
+KPX y ohungarumlaut -25
+KPX y omacron -25
+KPX y oslash -25
+KPX y otilde -25
+KPX y period -80
+KPX yacute a -30
+KPX yacute aacute -30
+KPX yacute abreve -30
+KPX yacute acircumflex -30
+KPX yacute adieresis -30
+KPX yacute agrave -30
+KPX yacute amacron -30
+KPX yacute aogonek -30
+KPX yacute aring -30
+KPX yacute atilde -30
+KPX yacute comma -80
+KPX yacute e -10
+KPX yacute eacute -10
+KPX yacute ecaron -10
+KPX yacute ecircumflex -10
+KPX yacute edieresis -10
+KPX yacute edotaccent -10
+KPX yacute egrave -10
+KPX yacute emacron -10
+KPX yacute eogonek -10
+KPX yacute o -25
+KPX yacute oacute -25
+KPX yacute ocircumflex -25
+KPX yacute odieresis -25
+KPX yacute ograve -25
+KPX yacute ohungarumlaut -25
+KPX yacute omacron -25
+KPX yacute oslash -25
+KPX yacute otilde -25
+KPX yacute period -80
+KPX ydieresis a -30
+KPX ydieresis aacute -30
+KPX ydieresis abreve -30
+KPX ydieresis acircumflex -30
+KPX ydieresis adieresis -30
+KPX ydieresis agrave -30
+KPX ydieresis amacron -30
+KPX ydieresis aogonek -30
+KPX ydieresis aring -30
+KPX ydieresis atilde -30
+KPX ydieresis comma -80
+KPX ydieresis e -10
+KPX ydieresis eacute -10
+KPX ydieresis ecaron -10
+KPX ydieresis ecircumflex -10
+KPX ydieresis edieresis -10
+KPX ydieresis edotaccent -10
+KPX ydieresis egrave -10
+KPX ydieresis emacron -10
+KPX ydieresis eogonek -10
+KPX ydieresis o -25
+KPX ydieresis oacute -25
+KPX ydieresis ocircumflex -25
+KPX ydieresis odieresis -25
+KPX ydieresis ograve -25
+KPX ydieresis ohungarumlaut -25
+KPX ydieresis omacron -25
+KPX ydieresis oslash -25
+KPX ydieresis otilde -25
+KPX ydieresis period -80
+KPX z e 10
+KPX z eacute 10
+KPX z ecaron 10
+KPX z ecircumflex 10
+KPX z edieresis 10
+KPX z edotaccent 10
+KPX z egrave 10
+KPX z emacron 10
+KPX z eogonek 10
+KPX zacute e 10
+KPX zacute eacute 10
+KPX zacute ecaron 10
+KPX zacute ecircumflex 10
+KPX zacute edieresis 10
+KPX zacute edotaccent 10
+KPX zacute egrave 10
+KPX zacute emacron 10
+KPX zacute eogonek 10
+KPX zcaron e 10
+KPX zcaron eacute 10
+KPX zcaron ecaron 10
+KPX zcaron ecircumflex 10
+KPX zcaron edieresis 10
+KPX zcaron edotaccent 10
+KPX zcaron egrave 10
+KPX zcaron emacron 10
+KPX zcaron eogonek 10
+KPX zdotaccent e 10
+KPX zdotaccent eacute 10
+KPX zdotaccent ecaron 10
+KPX zdotaccent ecircumflex 10
+KPX zdotaccent edieresis 10
+KPX zdotaccent edotaccent 10
+KPX zdotaccent egrave 10
+KPX zdotaccent emacron 10
+KPX zdotaccent eogonek 10
+EndKernPairs
+EndKernData
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/dompdf_font_family_cache.dist
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/dompdf_font_family_cache.dist	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/dompdf_font_family_cache.dist	(revision 2000)
@@ -0,0 +1,91 @@
+array (
+  'sans-serif' => array (
+    'normal' => DOMPDF_FONT_DIR . 'Helvetica',
+    'bold' => DOMPDF_FONT_DIR . 'Helvetica-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Helvetica-BoldOblique',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Helvetica-BoldOblique'
+  ),
+  'times' => array (
+    'normal' => DOMPDF_FONT_DIR . 'Times-Roman',
+    'bold' => DOMPDF_FONT_DIR . 'Times-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic'
+  ),
+  'times-roman' => array (
+    'normal' => DOMPDF_FONT_DIR . 'Times-Roman',
+    'bold' => DOMPDF_FONT_DIR . 'Times-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic'
+  ),
+  'courier' => array (
+    'normal' => DOMPDF_FONT_DIR . 'Courier',
+    'bold' => DOMPDF_FONT_DIR . 'Courier-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique'
+  ),
+  'helvetica' => array (
+    'normal' => DOMPDF_FONT_DIR . 'Helvetica',
+    'bold' => DOMPDF_FONT_DIR . 'Helvetica-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Helvetica-BoldOblique',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Helvetica-BoldOblique'
+  ),
+  'zapfdingbats' => array (
+    'normal' => DOMPDF_FONT_DIR . 'ZapfDingbats',
+    'bold' => DOMPDF_FONT_DIR . 'ZapfDingbats',
+    'italic' => DOMPDF_FONT_DIR . 'ZapfDingbats',
+    'bold_italic' => DOMPDF_FONT_DIR . 'ZapfDingbats'
+  ),
+  'symbol' => array (
+    'normal' => DOMPDF_FONT_DIR . 'Symbol',
+    'bold' => DOMPDF_FONT_DIR . 'Symbol',
+    'italic' => DOMPDF_FONT_DIR . 'Symbol',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Symbol'
+  ),
+  'serif' => array (
+    'normal' => DOMPDF_FONT_DIR . 'Times-Roman',
+    'bold' => DOMPDF_FONT_DIR . 'Times-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Times-Italic',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic'
+  ),
+  'monospace' => array (
+    'normal' => DOMPDF_FONT_DIR . 'Courier',
+    'bold' => DOMPDF_FONT_DIR . 'Courier-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique'
+  ),
+  'fixed' => array (
+    'normal' => DOMPDF_FONT_DIR . 'Courier',
+    'bold' => DOMPDF_FONT_DIR . 'Courier-Bold',
+    'italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique',
+    'bold_italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique'
+  )
+)
+
+/* The proper way for web browser environment independent font handling in html/css is,
+ * to defining a font search path ending in serif, sans-serif, or monospace, e.g.:
+ * <style>body {font-family: Verdana,Arial,Helvetica,sans-serif;}</style>
+ *
+ * For more satisfying results on html files without proper font search path,
+ * popular fonts which are candidates for further font aliases similar to
+ * 'sans-serif' and 'helvetica' above might be:
+ *
+ * See
+ * http://www.codestyle.org/css/font-family/index.shtml
+ * http://mondaybynoon.com/2007/04/02/linux-font-equivalents-to-popular-web-typefaces/
+ * C:\Windows\Fonts
+ *
+ * Times:
+ * serif, times, times-roman, times, times new roman, georgia, garamond, ms reference serif,
+ * palatino, palatino linotype, dejavu serif, freeserif, liberation serif, luxi serif, 
+ * century schoolbook, new century schoolbook
+ *
+ * Helvetica:
+ * sans-serif, helvetica, helvetica, microsoft sans serif, verdana, arial, tahoma, 
+ * trebuchet ms, lucida sans, ms reference sans serif, lucida grande, freesans, 
+ * liberation sans, dejavu sans, luxi sans, lucida
+ *
+ * Courier:
+ * monospace, fixed, courier, courier new, lucida console, lucida sans typewriter, freeMono, 
+ * fixed, terminal, dejavu sans mono, liberation mono, luxi mono
+ */
+
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Times-Italic.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Times-Italic.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Times-Italic.afm	(revision 2000)
@@ -0,0 +1,2667 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+Comment Creation Date: Thu May  1 12:56:55 1997
+Comment UniqueID 43067
+Comment VMusage 47727 58752
+FontName Times-Italic
+FullName Times Italic
+FamilyName Times
+Weight Medium
+ItalicAngle -15.5
+IsFixedPitch false
+CharacterSet ExtendedRoman
+FontBBox -169 -217 1010 883 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 002.000
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 653
+XHeight 441
+Ascender 683
+Descender -217
+StdHW 32
+StdVW 76
+StartCharMetrics 315
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 39 -11 302 667 ;
+C 34 ; WX 420 ; N quotedbl ; B 144 421 432 666 ;
+C 35 ; WX 500 ; N numbersign ; B 2 0 540 676 ;
+C 36 ; WX 500 ; N dollar ; B 31 -89 497 731 ;
+C 37 ; WX 833 ; N percent ; B 79 -13 790 676 ;
+C 38 ; WX 778 ; N ampersand ; B 76 -18 723 666 ;
+C 39 ; WX 333 ; N quoteright ; B 151 436 290 666 ;
+C 40 ; WX 333 ; N parenleft ; B 42 -181 315 669 ;
+C 41 ; WX 333 ; N parenright ; B 16 -180 289 669 ;
+C 42 ; WX 500 ; N asterisk ; B 128 255 492 666 ;
+C 43 ; WX 675 ; N plus ; B 86 0 590 506 ;
+C 44 ; WX 250 ; N comma ; B -4 -129 135 101 ;
+C 45 ; WX 333 ; N hyphen ; B 49 192 282 255 ;
+C 46 ; WX 250 ; N period ; B 27 -11 138 100 ;
+C 47 ; WX 278 ; N slash ; B -65 -18 386 666 ;
+C 48 ; WX 500 ; N zero ; B 32 -7 497 676 ;
+C 49 ; WX 500 ; N one ; B 49 0 409 676 ;
+C 50 ; WX 500 ; N two ; B 12 0 452 676 ;
+C 51 ; WX 500 ; N three ; B 15 -7 465 676 ;
+C 52 ; WX 500 ; N four ; B 1 0 479 676 ;
+C 53 ; WX 500 ; N five ; B 15 -7 491 666 ;
+C 54 ; WX 500 ; N six ; B 30 -7 521 686 ;
+C 55 ; WX 500 ; N seven ; B 75 -8 537 666 ;
+C 56 ; WX 500 ; N eight ; B 30 -7 493 676 ;
+C 57 ; WX 500 ; N nine ; B 23 -17 492 676 ;
+C 58 ; WX 333 ; N colon ; B 50 -11 261 441 ;
+C 59 ; WX 333 ; N semicolon ; B 27 -129 261 441 ;
+C 60 ; WX 675 ; N less ; B 84 -8 592 514 ;
+C 61 ; WX 675 ; N equal ; B 86 120 590 386 ;
+C 62 ; WX 675 ; N greater ; B 84 -8 592 514 ;
+C 63 ; WX 500 ; N question ; B 132 -12 472 664 ;
+C 64 ; WX 920 ; N at ; B 118 -18 806 666 ;
+C 65 ; WX 611 ; N A ; B -51 0 564 668 ;
+C 66 ; WX 611 ; N B ; B -8 0 588 653 ;
+C 67 ; WX 667 ; N C ; B 66 -18 689 666 ;
+C 68 ; WX 722 ; N D ; B -8 0 700 653 ;
+C 69 ; WX 611 ; N E ; B -1 0 634 653 ;
+C 70 ; WX 611 ; N F ; B 8 0 645 653 ;
+C 71 ; WX 722 ; N G ; B 52 -18 722 666 ;
+C 72 ; WX 722 ; N H ; B -8 0 767 653 ;
+C 73 ; WX 333 ; N I ; B -8 0 384 653 ;
+C 74 ; WX 444 ; N J ; B -6 -18 491 653 ;
+C 75 ; WX 667 ; N K ; B 7 0 722 653 ;
+C 76 ; WX 556 ; N L ; B -8 0 559 653 ;
+C 77 ; WX 833 ; N M ; B -18 0 873 653 ;
+C 78 ; WX 667 ; N N ; B -20 -15 727 653 ;
+C 79 ; WX 722 ; N O ; B 60 -18 699 666 ;
+C 80 ; WX 611 ; N P ; B 0 0 605 653 ;
+C 81 ; WX 722 ; N Q ; B 59 -182 699 666 ;
+C 82 ; WX 611 ; N R ; B -13 0 588 653 ;
+C 83 ; WX 500 ; N S ; B 17 -18 508 667 ;
+C 84 ; WX 556 ; N T ; B 59 0 633 653 ;
+C 85 ; WX 722 ; N U ; B 102 -18 765 653 ;
+C 86 ; WX 611 ; N V ; B 76 -18 688 653 ;
+C 87 ; WX 833 ; N W ; B 71 -18 906 653 ;
+C 88 ; WX 611 ; N X ; B -29 0 655 653 ;
+C 89 ; WX 556 ; N Y ; B 78 0 633 653 ;
+C 90 ; WX 556 ; N Z ; B -6 0 606 653 ;
+C 91 ; WX 389 ; N bracketleft ; B 21 -153 391 663 ;
+C 92 ; WX 278 ; N backslash ; B -41 -18 319 666 ;
+C 93 ; WX 389 ; N bracketright ; B 12 -153 382 663 ;
+C 94 ; WX 422 ; N asciicircum ; B 0 301 422 666 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 333 ; N quoteleft ; B 171 436 310 666 ;
+C 97 ; WX 500 ; N a ; B 17 -11 476 441 ;
+C 98 ; WX 500 ; N b ; B 23 -11 473 683 ;
+C 99 ; WX 444 ; N c ; B 30 -11 425 441 ;
+C 100 ; WX 500 ; N d ; B 15 -13 527 683 ;
+C 101 ; WX 444 ; N e ; B 31 -11 412 441 ;
+C 102 ; WX 278 ; N f ; B -147 -207 424 678 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 8 -206 472 441 ;
+C 104 ; WX 500 ; N h ; B 19 -9 478 683 ;
+C 105 ; WX 278 ; N i ; B 49 -11 264 654 ;
+C 106 ; WX 278 ; N j ; B -124 -207 276 654 ;
+C 107 ; WX 444 ; N k ; B 14 -11 461 683 ;
+C 108 ; WX 278 ; N l ; B 41 -11 279 683 ;
+C 109 ; WX 722 ; N m ; B 12 -9 704 441 ;
+C 110 ; WX 500 ; N n ; B 14 -9 474 441 ;
+C 111 ; WX 500 ; N o ; B 27 -11 468 441 ;
+C 112 ; WX 500 ; N p ; B -75 -205 469 441 ;
+C 113 ; WX 500 ; N q ; B 25 -209 483 441 ;
+C 114 ; WX 389 ; N r ; B 45 0 412 441 ;
+C 115 ; WX 389 ; N s ; B 16 -13 366 442 ;
+C 116 ; WX 278 ; N t ; B 37 -11 296 546 ;
+C 117 ; WX 500 ; N u ; B 42 -11 475 441 ;
+C 118 ; WX 444 ; N v ; B 21 -18 426 441 ;
+C 119 ; WX 667 ; N w ; B 16 -18 648 441 ;
+C 120 ; WX 444 ; N x ; B -27 -11 447 441 ;
+C 121 ; WX 444 ; N y ; B -24 -206 426 441 ;
+C 122 ; WX 389 ; N z ; B -2 -81 380 428 ;
+C 123 ; WX 400 ; N braceleft ; B 51 -177 407 687 ;
+C 124 ; WX 275 ; N bar ; B 105 -217 171 783 ;
+C 125 ; WX 400 ; N braceright ; B -7 -177 349 687 ;
+C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ;
+C 161 ; WX 389 ; N exclamdown ; B 59 -205 322 473 ;
+C 162 ; WX 500 ; N cent ; B 77 -143 472 560 ;
+C 163 ; WX 500 ; N sterling ; B 10 -6 517 670 ;
+C 164 ; WX 167 ; N fraction ; B -169 -10 337 676 ;
+C 165 ; WX 500 ; N yen ; B 27 0 603 653 ;
+C 166 ; WX 500 ; N florin ; B 25 -182 507 682 ;
+C 167 ; WX 500 ; N section ; B 53 -162 461 666 ;
+C 168 ; WX 500 ; N currency ; B -22 53 522 597 ;
+C 169 ; WX 214 ; N quotesingle ; B 132 421 241 666 ;
+C 170 ; WX 556 ; N quotedblleft ; B 166 436 514 666 ;
+C 171 ; WX 500 ; N guillemotleft ; B 53 37 445 403 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 51 37 281 403 ;
+C 173 ; WX 333 ; N guilsinglright ; B 52 37 282 403 ;
+C 174 ; WX 500 ; N fi ; B -141 -207 481 681 ;
+C 175 ; WX 500 ; N fl ; B -141 -204 518 682 ;
+C 177 ; WX 500 ; N endash ; B -6 197 505 243 ;
+C 178 ; WX 500 ; N dagger ; B 101 -159 488 666 ;
+C 179 ; WX 500 ; N daggerdbl ; B 22 -143 491 666 ;
+C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ;
+C 182 ; WX 523 ; N paragraph ; B 55 -123 616 653 ;
+C 183 ; WX 350 ; N bullet ; B 40 191 310 461 ;
+C 184 ; WX 333 ; N quotesinglbase ; B 44 -129 183 101 ;
+C 185 ; WX 556 ; N quotedblbase ; B 57 -129 405 101 ;
+C 186 ; WX 556 ; N quotedblright ; B 151 436 499 666 ;
+C 187 ; WX 500 ; N guillemotright ; B 55 37 447 403 ;
+C 188 ; WX 889 ; N ellipsis ; B 57 -11 762 100 ;
+C 189 ; WX 1000 ; N perthousand ; B 25 -19 1010 706 ;
+C 191 ; WX 500 ; N questiondown ; B 28 -205 368 471 ;
+C 193 ; WX 333 ; N grave ; B 121 492 311 664 ;
+C 194 ; WX 333 ; N acute ; B 180 494 403 664 ;
+C 195 ; WX 333 ; N circumflex ; B 91 492 385 661 ;
+C 196 ; WX 333 ; N tilde ; B 100 517 427 624 ;
+C 197 ; WX 333 ; N macron ; B 99 532 411 583 ;
+C 198 ; WX 333 ; N breve ; B 117 492 418 650 ;
+C 199 ; WX 333 ; N dotaccent ; B 207 548 305 646 ;
+C 200 ; WX 333 ; N dieresis ; B 107 548 405 646 ;
+C 202 ; WX 333 ; N ring ; B 155 492 355 691 ;
+C 203 ; WX 333 ; N cedilla ; B -30 -217 182 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 93 494 486 664 ;
+C 206 ; WX 333 ; N ogonek ; B 20 -169 203 40 ;
+C 207 ; WX 333 ; N caron ; B 121 492 426 661 ;
+C 208 ; WX 889 ; N emdash ; B -6 197 894 243 ;
+C 225 ; WX 889 ; N AE ; B -27 0 911 653 ;
+C 227 ; WX 276 ; N ordfeminine ; B 42 406 352 676 ;
+C 232 ; WX 556 ; N Lslash ; B -8 0 559 653 ;
+C 233 ; WX 722 ; N Oslash ; B 60 -105 699 722 ;
+C 234 ; WX 944 ; N OE ; B 49 -8 964 666 ;
+C 235 ; WX 310 ; N ordmasculine ; B 67 406 362 676 ;
+C 241 ; WX 667 ; N ae ; B 23 -11 640 441 ;
+C 245 ; WX 278 ; N dotlessi ; B 49 -11 235 441 ;
+C 248 ; WX 278 ; N lslash ; B 41 -11 312 683 ;
+C 249 ; WX 500 ; N oslash ; B 28 -135 469 554 ;
+C 250 ; WX 667 ; N oe ; B 20 -12 646 441 ;
+C 251 ; WX 500 ; N germandbls ; B -168 -207 493 679 ;
+C -1 ; WX 333 ; N Idieresis ; B -8 0 435 818 ;
+C -1 ; WX 444 ; N eacute ; B 31 -11 459 664 ;
+C -1 ; WX 500 ; N abreve ; B 17 -11 502 650 ;
+C -1 ; WX 500 ; N uhungarumlaut ; B 42 -11 580 664 ;
+C -1 ; WX 444 ; N ecaron ; B 31 -11 482 661 ;
+C -1 ; WX 556 ; N Ydieresis ; B 78 0 633 818 ;
+C -1 ; WX 675 ; N divide ; B 86 -11 590 517 ;
+C -1 ; WX 556 ; N Yacute ; B 78 0 633 876 ;
+C -1 ; WX 611 ; N Acircumflex ; B -51 0 564 873 ;
+C -1 ; WX 500 ; N aacute ; B 17 -11 487 664 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 102 -18 765 873 ;
+C -1 ; WX 444 ; N yacute ; B -24 -206 459 664 ;
+C -1 ; WX 389 ; N scommaaccent ; B 16 -217 366 442 ;
+C -1 ; WX 444 ; N ecircumflex ; B 31 -11 441 661 ;
+C -1 ; WX 722 ; N Uring ; B 102 -18 765 883 ;
+C -1 ; WX 722 ; N Udieresis ; B 102 -18 765 818 ;
+C -1 ; WX 500 ; N aogonek ; B 17 -169 476 441 ;
+C -1 ; WX 722 ; N Uacute ; B 102 -18 765 876 ;
+C -1 ; WX 500 ; N uogonek ; B 42 -169 477 441 ;
+C -1 ; WX 611 ; N Edieresis ; B -1 0 634 818 ;
+C -1 ; WX 722 ; N Dcroat ; B -8 0 700 653 ;
+C -1 ; WX 250 ; N commaaccent ; B 8 -217 133 -50 ;
+C -1 ; WX 760 ; N copyright ; B 41 -18 719 666 ;
+C -1 ; WX 611 ; N Emacron ; B -1 0 634 795 ;
+C -1 ; WX 444 ; N ccaron ; B 30 -11 482 661 ;
+C -1 ; WX 500 ; N aring ; B 17 -11 476 691 ;
+C -1 ; WX 667 ; N Ncommaaccent ; B -20 -187 727 653 ;
+C -1 ; WX 278 ; N lacute ; B 41 -11 395 876 ;
+C -1 ; WX 500 ; N agrave ; B 17 -11 476 664 ;
+C -1 ; WX 556 ; N Tcommaaccent ; B 59 -217 633 653 ;
+C -1 ; WX 667 ; N Cacute ; B 66 -18 690 876 ;
+C -1 ; WX 500 ; N atilde ; B 17 -11 511 624 ;
+C -1 ; WX 611 ; N Edotaccent ; B -1 0 634 818 ;
+C -1 ; WX 389 ; N scaron ; B 16 -13 454 661 ;
+C -1 ; WX 389 ; N scedilla ; B 16 -217 366 442 ;
+C -1 ; WX 278 ; N iacute ; B 49 -11 355 664 ;
+C -1 ; WX 471 ; N lozenge ; B 13 0 459 724 ;
+C -1 ; WX 611 ; N Rcaron ; B -13 0 588 873 ;
+C -1 ; WX 722 ; N Gcommaaccent ; B 52 -217 722 666 ;
+C -1 ; WX 500 ; N ucircumflex ; B 42 -11 475 661 ;
+C -1 ; WX 500 ; N acircumflex ; B 17 -11 476 661 ;
+C -1 ; WX 611 ; N Amacron ; B -51 0 564 795 ;
+C -1 ; WX 389 ; N rcaron ; B 45 0 434 661 ;
+C -1 ; WX 444 ; N ccedilla ; B 30 -217 425 441 ;
+C -1 ; WX 556 ; N Zdotaccent ; B -6 0 606 818 ;
+C -1 ; WX 611 ; N Thorn ; B 0 0 569 653 ;
+C -1 ; WX 722 ; N Omacron ; B 60 -18 699 795 ;
+C -1 ; WX 611 ; N Racute ; B -13 0 588 876 ;
+C -1 ; WX 500 ; N Sacute ; B 17 -18 508 876 ;
+C -1 ; WX 544 ; N dcaron ; B 15 -13 658 683 ;
+C -1 ; WX 722 ; N Umacron ; B 102 -18 765 795 ;
+C -1 ; WX 500 ; N uring ; B 42 -11 475 691 ;
+C -1 ; WX 300 ; N threesuperior ; B 43 268 339 676 ;
+C -1 ; WX 722 ; N Ograve ; B 60 -18 699 876 ;
+C -1 ; WX 611 ; N Agrave ; B -51 0 564 876 ;
+C -1 ; WX 611 ; N Abreve ; B -51 0 564 862 ;
+C -1 ; WX 675 ; N multiply ; B 93 8 582 497 ;
+C -1 ; WX 500 ; N uacute ; B 42 -11 477 664 ;
+C -1 ; WX 556 ; N Tcaron ; B 59 0 633 873 ;
+C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ;
+C -1 ; WX 444 ; N ydieresis ; B -24 -206 441 606 ;
+C -1 ; WX 667 ; N Nacute ; B -20 -15 727 876 ;
+C -1 ; WX 278 ; N icircumflex ; B 33 -11 327 661 ;
+C -1 ; WX 611 ; N Ecircumflex ; B -1 0 634 873 ;
+C -1 ; WX 500 ; N adieresis ; B 17 -11 489 606 ;
+C -1 ; WX 444 ; N edieresis ; B 31 -11 451 606 ;
+C -1 ; WX 444 ; N cacute ; B 30 -11 459 664 ;
+C -1 ; WX 500 ; N nacute ; B 14 -9 477 664 ;
+C -1 ; WX 500 ; N umacron ; B 42 -11 485 583 ;
+C -1 ; WX 667 ; N Ncaron ; B -20 -15 727 873 ;
+C -1 ; WX 333 ; N Iacute ; B -8 0 433 876 ;
+C -1 ; WX 675 ; N plusminus ; B 86 0 590 506 ;
+C -1 ; WX 275 ; N brokenbar ; B 105 -142 171 708 ;
+C -1 ; WX 760 ; N registered ; B 41 -18 719 666 ;
+C -1 ; WX 722 ; N Gbreve ; B 52 -18 722 862 ;
+C -1 ; WX 333 ; N Idotaccent ; B -8 0 384 818 ;
+C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ;
+C -1 ; WX 611 ; N Egrave ; B -1 0 634 876 ;
+C -1 ; WX 389 ; N racute ; B 45 0 431 664 ;
+C -1 ; WX 500 ; N omacron ; B 27 -11 495 583 ;
+C -1 ; WX 556 ; N Zacute ; B -6 0 606 876 ;
+C -1 ; WX 556 ; N Zcaron ; B -6 0 606 873 ;
+C -1 ; WX 549 ; N greaterequal ; B 26 0 523 658 ;
+C -1 ; WX 722 ; N Eth ; B -8 0 700 653 ;
+C -1 ; WX 667 ; N Ccedilla ; B 66 -217 689 666 ;
+C -1 ; WX 278 ; N lcommaaccent ; B 22 -217 279 683 ;
+C -1 ; WX 300 ; N tcaron ; B 37 -11 407 681 ;
+C -1 ; WX 444 ; N eogonek ; B 31 -169 412 441 ;
+C -1 ; WX 722 ; N Uogonek ; B 102 -184 765 653 ;
+C -1 ; WX 611 ; N Aacute ; B -51 0 564 876 ;
+C -1 ; WX 611 ; N Adieresis ; B -51 0 564 818 ;
+C -1 ; WX 444 ; N egrave ; B 31 -11 412 664 ;
+C -1 ; WX 389 ; N zacute ; B -2 -81 431 664 ;
+C -1 ; WX 278 ; N iogonek ; B 49 -169 264 654 ;
+C -1 ; WX 722 ; N Oacute ; B 60 -18 699 876 ;
+C -1 ; WX 500 ; N oacute ; B 27 -11 487 664 ;
+C -1 ; WX 500 ; N amacron ; B 17 -11 495 583 ;
+C -1 ; WX 389 ; N sacute ; B 16 -13 431 664 ;
+C -1 ; WX 278 ; N idieresis ; B 49 -11 352 606 ;
+C -1 ; WX 722 ; N Ocircumflex ; B 60 -18 699 873 ;
+C -1 ; WX 722 ; N Ugrave ; B 102 -18 765 876 ;
+C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
+C -1 ; WX 500 ; N thorn ; B -75 -205 469 683 ;
+C -1 ; WX 300 ; N twosuperior ; B 33 271 324 676 ;
+C -1 ; WX 722 ; N Odieresis ; B 60 -18 699 818 ;
+C -1 ; WX 500 ; N mu ; B -30 -209 497 428 ;
+C -1 ; WX 278 ; N igrave ; B 49 -11 284 664 ;
+C -1 ; WX 500 ; N ohungarumlaut ; B 27 -11 590 664 ;
+C -1 ; WX 611 ; N Eogonek ; B -1 -169 634 653 ;
+C -1 ; WX 500 ; N dcroat ; B 15 -13 572 683 ;
+C -1 ; WX 750 ; N threequarters ; B 23 -10 736 676 ;
+C -1 ; WX 500 ; N Scedilla ; B 17 -217 508 667 ;
+C -1 ; WX 300 ; N lcaron ; B 41 -11 407 683 ;
+C -1 ; WX 667 ; N Kcommaaccent ; B 7 -217 722 653 ;
+C -1 ; WX 556 ; N Lacute ; B -8 0 559 876 ;
+C -1 ; WX 980 ; N trademark ; B 30 247 957 653 ;
+C -1 ; WX 444 ; N edotaccent ; B 31 -11 412 606 ;
+C -1 ; WX 333 ; N Igrave ; B -8 0 384 876 ;
+C -1 ; WX 333 ; N Imacron ; B -8 0 441 795 ;
+C -1 ; WX 611 ; N Lcaron ; B -8 0 586 653 ;
+C -1 ; WX 750 ; N onehalf ; B 34 -10 749 676 ;
+C -1 ; WX 549 ; N lessequal ; B 26 0 523 658 ;
+C -1 ; WX 500 ; N ocircumflex ; B 27 -11 468 661 ;
+C -1 ; WX 500 ; N ntilde ; B 14 -9 476 624 ;
+C -1 ; WX 722 ; N Uhungarumlaut ; B 102 -18 765 876 ;
+C -1 ; WX 611 ; N Eacute ; B -1 0 634 876 ;
+C -1 ; WX 444 ; N emacron ; B 31 -11 457 583 ;
+C -1 ; WX 500 ; N gbreve ; B 8 -206 487 650 ;
+C -1 ; WX 750 ; N onequarter ; B 33 -10 736 676 ;
+C -1 ; WX 500 ; N Scaron ; B 17 -18 520 873 ;
+C -1 ; WX 500 ; N Scommaaccent ; B 17 -217 508 667 ;
+C -1 ; WX 722 ; N Ohungarumlaut ; B 60 -18 699 876 ;
+C -1 ; WX 400 ; N degree ; B 101 390 387 676 ;
+C -1 ; WX 500 ; N ograve ; B 27 -11 468 664 ;
+C -1 ; WX 667 ; N Ccaron ; B 66 -18 689 873 ;
+C -1 ; WX 500 ; N ugrave ; B 42 -11 475 664 ;
+C -1 ; WX 453 ; N radical ; B 2 -60 452 768 ;
+C -1 ; WX 722 ; N Dcaron ; B -8 0 700 873 ;
+C -1 ; WX 389 ; N rcommaaccent ; B -3 -217 412 441 ;
+C -1 ; WX 667 ; N Ntilde ; B -20 -15 727 836 ;
+C -1 ; WX 500 ; N otilde ; B 27 -11 496 624 ;
+C -1 ; WX 611 ; N Rcommaaccent ; B -13 -187 588 653 ;
+C -1 ; WX 556 ; N Lcommaaccent ; B -8 -217 559 653 ;
+C -1 ; WX 611 ; N Atilde ; B -51 0 566 836 ;
+C -1 ; WX 611 ; N Aogonek ; B -51 -169 566 668 ;
+C -1 ; WX 611 ; N Aring ; B -51 0 564 883 ;
+C -1 ; WX 722 ; N Otilde ; B 60 -18 699 836 ;
+C -1 ; WX 389 ; N zdotaccent ; B -2 -81 380 606 ;
+C -1 ; WX 611 ; N Ecaron ; B -1 0 634 873 ;
+C -1 ; WX 333 ; N Iogonek ; B -8 -169 384 653 ;
+C -1 ; WX 444 ; N kcommaaccent ; B 14 -187 461 683 ;
+C -1 ; WX 675 ; N minus ; B 86 220 590 286 ;
+C -1 ; WX 333 ; N Icircumflex ; B -8 0 425 873 ;
+C -1 ; WX 500 ; N ncaron ; B 14 -9 510 661 ;
+C -1 ; WX 278 ; N tcommaaccent ; B 2 -217 296 546 ;
+C -1 ; WX 675 ; N logicalnot ; B 86 108 590 386 ;
+C -1 ; WX 500 ; N odieresis ; B 27 -11 489 606 ;
+C -1 ; WX 500 ; N udieresis ; B 42 -11 479 606 ;
+C -1 ; WX 549 ; N notequal ; B 12 -29 537 541 ;
+C -1 ; WX 500 ; N gcommaaccent ; B 8 -206 472 706 ;
+C -1 ; WX 500 ; N eth ; B 27 -11 482 683 ;
+C -1 ; WX 389 ; N zcaron ; B -2 -81 434 661 ;
+C -1 ; WX 500 ; N ncommaaccent ; B 14 -187 474 441 ;
+C -1 ; WX 300 ; N onesuperior ; B 43 271 284 676 ;
+C -1 ; WX 278 ; N imacron ; B 46 -11 311 583 ;
+C -1 ; WX 500 ; N Euro ; B 0 0 0 0 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 2321
+KPX A C -30
+KPX A Cacute -30
+KPX A Ccaron -30
+KPX A Ccedilla -30
+KPX A G -35
+KPX A Gbreve -35
+KPX A Gcommaaccent -35
+KPX A O -40
+KPX A Oacute -40
+KPX A Ocircumflex -40
+KPX A Odieresis -40
+KPX A Ograve -40
+KPX A Ohungarumlaut -40
+KPX A Omacron -40
+KPX A Oslash -40
+KPX A Otilde -40
+KPX A Q -40
+KPX A T -37
+KPX A Tcaron -37
+KPX A Tcommaaccent -37
+KPX A U -50
+KPX A Uacute -50
+KPX A Ucircumflex -50
+KPX A Udieresis -50
+KPX A Ugrave -50
+KPX A Uhungarumlaut -50
+KPX A Umacron -50
+KPX A Uogonek -50
+KPX A Uring -50
+KPX A V -105
+KPX A W -95
+KPX A Y -55
+KPX A Yacute -55
+KPX A Ydieresis -55
+KPX A quoteright -37
+KPX A u -20
+KPX A uacute -20
+KPX A ucircumflex -20
+KPX A udieresis -20
+KPX A ugrave -20
+KPX A uhungarumlaut -20
+KPX A umacron -20
+KPX A uogonek -20
+KPX A uring -20
+KPX A v -55
+KPX A w -55
+KPX A y -55
+KPX A yacute -55
+KPX A ydieresis -55
+KPX Aacute C -30
+KPX Aacute Cacute -30
+KPX Aacute Ccaron -30
+KPX Aacute Ccedilla -30
+KPX Aacute G -35
+KPX Aacute Gbreve -35
+KPX Aacute Gcommaaccent -35
+KPX Aacute O -40
+KPX Aacute Oacute -40
+KPX Aacute Ocircumflex -40
+KPX Aacute Odieresis -40
+KPX Aacute Ograve -40
+KPX Aacute Ohungarumlaut -40
+KPX Aacute Omacron -40
+KPX Aacute Oslash -40
+KPX Aacute Otilde -40
+KPX Aacute Q -40
+KPX Aacute T -37
+KPX Aacute Tcaron -37
+KPX Aacute Tcommaaccent -37
+KPX Aacute U -50
+KPX Aacute Uacute -50
+KPX Aacute Ucircumflex -50
+KPX Aacute Udieresis -50
+KPX Aacute Ugrave -50
+KPX Aacute Uhungarumlaut -50
+KPX Aacute Umacron -50
+KPX Aacute Uogonek -50
+KPX Aacute Uring -50
+KPX Aacute V -105
+KPX Aacute W -95
+KPX Aacute Y -55
+KPX Aacute Yacute -55
+KPX Aacute Ydieresis -55
+KPX Aacute quoteright -37
+KPX Aacute u -20
+KPX Aacute uacute -20
+KPX Aacute ucircumflex -20
+KPX Aacute udieresis -20
+KPX Aacute ugrave -20
+KPX Aacute uhungarumlaut -20
+KPX Aacute umacron -20
+KPX Aacute uogonek -20
+KPX Aacute uring -20
+KPX Aacute v -55
+KPX Aacute w -55
+KPX Aacute y -55
+KPX Aacute yacute -55
+KPX Aacute ydieresis -55
+KPX Abreve C -30
+KPX Abreve Cacute -30
+KPX Abreve Ccaron -30
+KPX Abreve Ccedilla -30
+KPX Abreve G -35
+KPX Abreve Gbreve -35
+KPX Abreve Gcommaaccent -35
+KPX Abreve O -40
+KPX Abreve Oacute -40
+KPX Abreve Ocircumflex -40
+KPX Abreve Odieresis -40
+KPX Abreve Ograve -40
+KPX Abreve Ohungarumlaut -40
+KPX Abreve Omacron -40
+KPX Abreve Oslash -40
+KPX Abreve Otilde -40
+KPX Abreve Q -40
+KPX Abreve T -37
+KPX Abreve Tcaron -37
+KPX Abreve Tcommaaccent -37
+KPX Abreve U -50
+KPX Abreve Uacute -50
+KPX Abreve Ucircumflex -50
+KPX Abreve Udieresis -50
+KPX Abreve Ugrave -50
+KPX Abreve Uhungarumlaut -50
+KPX Abreve Umacron -50
+KPX Abreve Uogonek -50
+KPX Abreve Uring -50
+KPX Abreve V -105
+KPX Abreve W -95
+KPX Abreve Y -55
+KPX Abreve Yacute -55
+KPX Abreve Ydieresis -55
+KPX Abreve quoteright -37
+KPX Abreve u -20
+KPX Abreve uacute -20
+KPX Abreve ucircumflex -20
+KPX Abreve udieresis -20
+KPX Abreve ugrave -20
+KPX Abreve uhungarumlaut -20
+KPX Abreve umacron -20
+KPX Abreve uogonek -20
+KPX Abreve uring -20
+KPX Abreve v -55
+KPX Abreve w -55
+KPX Abreve y -55
+KPX Abreve yacute -55
+KPX Abreve ydieresis -55
+KPX Acircumflex C -30
+KPX Acircumflex Cacute -30
+KPX Acircumflex Ccaron -30
+KPX Acircumflex Ccedilla -30
+KPX Acircumflex G -35
+KPX Acircumflex Gbreve -35
+KPX Acircumflex Gcommaaccent -35
+KPX Acircumflex O -40
+KPX Acircumflex Oacute -40
+KPX Acircumflex Ocircumflex -40
+KPX Acircumflex Odieresis -40
+KPX Acircumflex Ograve -40
+KPX Acircumflex Ohungarumlaut -40
+KPX Acircumflex Omacron -40
+KPX Acircumflex Oslash -40
+KPX Acircumflex Otilde -40
+KPX Acircumflex Q -40
+KPX Acircumflex T -37
+KPX Acircumflex Tcaron -37
+KPX Acircumflex Tcommaaccent -37
+KPX Acircumflex U -50
+KPX Acircumflex Uacute -50
+KPX Acircumflex Ucircumflex -50
+KPX Acircumflex Udieresis -50
+KPX Acircumflex Ugrave -50
+KPX Acircumflex Uhungarumlaut -50
+KPX Acircumflex Umacron -50
+KPX Acircumflex Uogonek -50
+KPX Acircumflex Uring -50
+KPX Acircumflex V -105
+KPX Acircumflex W -95
+KPX Acircumflex Y -55
+KPX Acircumflex Yacute -55
+KPX Acircumflex Ydieresis -55
+KPX Acircumflex quoteright -37
+KPX Acircumflex u -20
+KPX Acircumflex uacute -20
+KPX Acircumflex ucircumflex -20
+KPX Acircumflex udieresis -20
+KPX Acircumflex ugrave -20
+KPX Acircumflex uhungarumlaut -20
+KPX Acircumflex umacron -20
+KPX Acircumflex uogonek -20
+KPX Acircumflex uring -20
+KPX Acircumflex v -55
+KPX Acircumflex w -55
+KPX Acircumflex y -55
+KPX Acircumflex yacute -55
+KPX Acircumflex ydieresis -55
+KPX Adieresis C -30
+KPX Adieresis Cacute -30
+KPX Adieresis Ccaron -30
+KPX Adieresis Ccedilla -30
+KPX Adieresis G -35
+KPX Adieresis Gbreve -35
+KPX Adieresis Gcommaaccent -35
+KPX Adieresis O -40
+KPX Adieresis Oacute -40
+KPX Adieresis Ocircumflex -40
+KPX Adieresis Odieresis -40
+KPX Adieresis Ograve -40
+KPX Adieresis Ohungarumlaut -40
+KPX Adieresis Omacron -40
+KPX Adieresis Oslash -40
+KPX Adieresis Otilde -40
+KPX Adieresis Q -40
+KPX Adieresis T -37
+KPX Adieresis Tcaron -37
+KPX Adieresis Tcommaaccent -37
+KPX Adieresis U -50
+KPX Adieresis Uacute -50
+KPX Adieresis Ucircumflex -50
+KPX Adieresis Udieresis -50
+KPX Adieresis Ugrave -50
+KPX Adieresis Uhungarumlaut -50
+KPX Adieresis Umacron -50
+KPX Adieresis Uogonek -50
+KPX Adieresis Uring -50
+KPX Adieresis V -105
+KPX Adieresis W -95
+KPX Adieresis Y -55
+KPX Adieresis Yacute -55
+KPX Adieresis Ydieresis -55
+KPX Adieresis quoteright -37
+KPX Adieresis u -20
+KPX Adieresis uacute -20
+KPX Adieresis ucircumflex -20
+KPX Adieresis udieresis -20
+KPX Adieresis ugrave -20
+KPX Adieresis uhungarumlaut -20
+KPX Adieresis umacron -20
+KPX Adieresis uogonek -20
+KPX Adieresis uring -20
+KPX Adieresis v -55
+KPX Adieresis w -55
+KPX Adieresis y -55
+KPX Adieresis yacute -55
+KPX Adieresis ydieresis -55
+KPX Agrave C -30
+KPX Agrave Cacute -30
+KPX Agrave Ccaron -30
+KPX Agrave Ccedilla -30
+KPX Agrave G -35
+KPX Agrave Gbreve -35
+KPX Agrave Gcommaaccent -35
+KPX Agrave O -40
+KPX Agrave Oacute -40
+KPX Agrave Ocircumflex -40
+KPX Agrave Odieresis -40
+KPX Agrave Ograve -40
+KPX Agrave Ohungarumlaut -40
+KPX Agrave Omacron -40
+KPX Agrave Oslash -40
+KPX Agrave Otilde -40
+KPX Agrave Q -40
+KPX Agrave T -37
+KPX Agrave Tcaron -37
+KPX Agrave Tcommaaccent -37
+KPX Agrave U -50
+KPX Agrave Uacute -50
+KPX Agrave Ucircumflex -50
+KPX Agrave Udieresis -50
+KPX Agrave Ugrave -50
+KPX Agrave Uhungarumlaut -50
+KPX Agrave Umacron -50
+KPX Agrave Uogonek -50
+KPX Agrave Uring -50
+KPX Agrave V -105
+KPX Agrave W -95
+KPX Agrave Y -55
+KPX Agrave Yacute -55
+KPX Agrave Ydieresis -55
+KPX Agrave quoteright -37
+KPX Agrave u -20
+KPX Agrave uacute -20
+KPX Agrave ucircumflex -20
+KPX Agrave udieresis -20
+KPX Agrave ugrave -20
+KPX Agrave uhungarumlaut -20
+KPX Agrave umacron -20
+KPX Agrave uogonek -20
+KPX Agrave uring -20
+KPX Agrave v -55
+KPX Agrave w -55
+KPX Agrave y -55
+KPX Agrave yacute -55
+KPX Agrave ydieresis -55
+KPX Amacron C -30
+KPX Amacron Cacute -30
+KPX Amacron Ccaron -30
+KPX Amacron Ccedilla -30
+KPX Amacron G -35
+KPX Amacron Gbreve -35
+KPX Amacron Gcommaaccent -35
+KPX Amacron O -40
+KPX Amacron Oacute -40
+KPX Amacron Ocircumflex -40
+KPX Amacron Odieresis -40
+KPX Amacron Ograve -40
+KPX Amacron Ohungarumlaut -40
+KPX Amacron Omacron -40
+KPX Amacron Oslash -40
+KPX Amacron Otilde -40
+KPX Amacron Q -40
+KPX Amacron T -37
+KPX Amacron Tcaron -37
+KPX Amacron Tcommaaccent -37
+KPX Amacron U -50
+KPX Amacron Uacute -50
+KPX Amacron Ucircumflex -50
+KPX Amacron Udieresis -50
+KPX Amacron Ugrave -50
+KPX Amacron Uhungarumlaut -50
+KPX Amacron Umacron -50
+KPX Amacron Uogonek -50
+KPX Amacron Uring -50
+KPX Amacron V -105
+KPX Amacron W -95
+KPX Amacron Y -55
+KPX Amacron Yacute -55
+KPX Amacron Ydieresis -55
+KPX Amacron quoteright -37
+KPX Amacron u -20
+KPX Amacron uacute -20
+KPX Amacron ucircumflex -20
+KPX Amacron udieresis -20
+KPX Amacron ugrave -20
+KPX Amacron uhungarumlaut -20
+KPX Amacron umacron -20
+KPX Amacron uogonek -20
+KPX Amacron uring -20
+KPX Amacron v -55
+KPX Amacron w -55
+KPX Amacron y -55
+KPX Amacron yacute -55
+KPX Amacron ydieresis -55
+KPX Aogonek C -30
+KPX Aogonek Cacute -30
+KPX Aogonek Ccaron -30
+KPX Aogonek Ccedilla -30
+KPX Aogonek G -35
+KPX Aogonek Gbreve -35
+KPX Aogonek Gcommaaccent -35
+KPX Aogonek O -40
+KPX Aogonek Oacute -40
+KPX Aogonek Ocircumflex -40
+KPX Aogonek Odieresis -40
+KPX Aogonek Ograve -40
+KPX Aogonek Ohungarumlaut -40
+KPX Aogonek Omacron -40
+KPX Aogonek Oslash -40
+KPX Aogonek Otilde -40
+KPX Aogonek Q -40
+KPX Aogonek T -37
+KPX Aogonek Tcaron -37
+KPX Aogonek Tcommaaccent -37
+KPX Aogonek U -50
+KPX Aogonek Uacute -50
+KPX Aogonek Ucircumflex -50
+KPX Aogonek Udieresis -50
+KPX Aogonek Ugrave -50
+KPX Aogonek Uhungarumlaut -50
+KPX Aogonek Umacron -50
+KPX Aogonek Uogonek -50
+KPX Aogonek Uring -50
+KPX Aogonek V -105
+KPX Aogonek W -95
+KPX Aogonek Y -55
+KPX Aogonek Yacute -55
+KPX Aogonek Ydieresis -55
+KPX Aogonek quoteright -37
+KPX Aogonek u -20
+KPX Aogonek uacute -20
+KPX Aogonek ucircumflex -20
+KPX Aogonek udieresis -20
+KPX Aogonek ugrave -20
+KPX Aogonek uhungarumlaut -20
+KPX Aogonek umacron -20
+KPX Aogonek uogonek -20
+KPX Aogonek uring -20
+KPX Aogonek v -55
+KPX Aogonek w -55
+KPX Aogonek y -55
+KPX Aogonek yacute -55
+KPX Aogonek ydieresis -55
+KPX Aring C -30
+KPX Aring Cacute -30
+KPX Aring Ccaron -30
+KPX Aring Ccedilla -30
+KPX Aring G -35
+KPX Aring Gbreve -35
+KPX Aring Gcommaaccent -35
+KPX Aring O -40
+KPX Aring Oacute -40
+KPX Aring Ocircumflex -40
+KPX Aring Odieresis -40
+KPX Aring Ograve -40
+KPX Aring Ohungarumlaut -40
+KPX Aring Omacron -40
+KPX Aring Oslash -40
+KPX Aring Otilde -40
+KPX Aring Q -40
+KPX Aring T -37
+KPX Aring Tcaron -37
+KPX Aring Tcommaaccent -37
+KPX Aring U -50
+KPX Aring Uacute -50
+KPX Aring Ucircumflex -50
+KPX Aring Udieresis -50
+KPX Aring Ugrave -50
+KPX Aring Uhungarumlaut -50
+KPX Aring Umacron -50
+KPX Aring Uogonek -50
+KPX Aring Uring -50
+KPX Aring V -105
+KPX Aring W -95
+KPX Aring Y -55
+KPX Aring Yacute -55
+KPX Aring Ydieresis -55
+KPX Aring quoteright -37
+KPX Aring u -20
+KPX Aring uacute -20
+KPX Aring ucircumflex -20
+KPX Aring udieresis -20
+KPX Aring ugrave -20
+KPX Aring uhungarumlaut -20
+KPX Aring umacron -20
+KPX Aring uogonek -20
+KPX Aring uring -20
+KPX Aring v -55
+KPX Aring w -55
+KPX Aring y -55
+KPX Aring yacute -55
+KPX Aring ydieresis -55
+KPX Atilde C -30
+KPX Atilde Cacute -30
+KPX Atilde Ccaron -30
+KPX Atilde Ccedilla -30
+KPX Atilde G -35
+KPX Atilde Gbreve -35
+KPX Atilde Gcommaaccent -35
+KPX Atilde O -40
+KPX Atilde Oacute -40
+KPX Atilde Ocircumflex -40
+KPX Atilde Odieresis -40
+KPX Atilde Ograve -40
+KPX Atilde Ohungarumlaut -40
+KPX Atilde Omacron -40
+KPX Atilde Oslash -40
+KPX Atilde Otilde -40
+KPX Atilde Q -40
+KPX Atilde T -37
+KPX Atilde Tcaron -37
+KPX Atilde Tcommaaccent -37
+KPX Atilde U -50
+KPX Atilde Uacute -50
+KPX Atilde Ucircumflex -50
+KPX Atilde Udieresis -50
+KPX Atilde Ugrave -50
+KPX Atilde Uhungarumlaut -50
+KPX Atilde Umacron -50
+KPX Atilde Uogonek -50
+KPX Atilde Uring -50
+KPX Atilde V -105
+KPX Atilde W -95
+KPX Atilde Y -55
+KPX Atilde Yacute -55
+KPX Atilde Ydieresis -55
+KPX Atilde quoteright -37
+KPX Atilde u -20
+KPX Atilde uacute -20
+KPX Atilde ucircumflex -20
+KPX Atilde udieresis -20
+KPX Atilde ugrave -20
+KPX Atilde uhungarumlaut -20
+KPX Atilde umacron -20
+KPX Atilde uogonek -20
+KPX Atilde uring -20
+KPX Atilde v -55
+KPX Atilde w -55
+KPX Atilde y -55
+KPX Atilde yacute -55
+KPX Atilde ydieresis -55
+KPX B A -25
+KPX B Aacute -25
+KPX B Abreve -25
+KPX B Acircumflex -25
+KPX B Adieresis -25
+KPX B Agrave -25
+KPX B Amacron -25
+KPX B Aogonek -25
+KPX B Aring -25
+KPX B Atilde -25
+KPX B U -10
+KPX B Uacute -10
+KPX B Ucircumflex -10
+KPX B Udieresis -10
+KPX B Ugrave -10
+KPX B Uhungarumlaut -10
+KPX B Umacron -10
+KPX B Uogonek -10
+KPX B Uring -10
+KPX D A -35
+KPX D Aacute -35
+KPX D Abreve -35
+KPX D Acircumflex -35
+KPX D Adieresis -35
+KPX D Agrave -35
+KPX D Amacron -35
+KPX D Aogonek -35
+KPX D Aring -35
+KPX D Atilde -35
+KPX D V -40
+KPX D W -40
+KPX D Y -40
+KPX D Yacute -40
+KPX D Ydieresis -40
+KPX Dcaron A -35
+KPX Dcaron Aacute -35
+KPX Dcaron Abreve -35
+KPX Dcaron Acircumflex -35
+KPX Dcaron Adieresis -35
+KPX Dcaron Agrave -35
+KPX Dcaron Amacron -35
+KPX Dcaron Aogonek -35
+KPX Dcaron Aring -35
+KPX Dcaron Atilde -35
+KPX Dcaron V -40
+KPX Dcaron W -40
+KPX Dcaron Y -40
+KPX Dcaron Yacute -40
+KPX Dcaron Ydieresis -40
+KPX Dcroat A -35
+KPX Dcroat Aacute -35
+KPX Dcroat Abreve -35
+KPX Dcroat Acircumflex -35
+KPX Dcroat Adieresis -35
+KPX Dcroat Agrave -35
+KPX Dcroat Amacron -35
+KPX Dcroat Aogonek -35
+KPX Dcroat Aring -35
+KPX Dcroat Atilde -35
+KPX Dcroat V -40
+KPX Dcroat W -40
+KPX Dcroat Y -40
+KPX Dcroat Yacute -40
+KPX Dcroat Ydieresis -40
+KPX F A -115
+KPX F Aacute -115
+KPX F Abreve -115
+KPX F Acircumflex -115
+KPX F Adieresis -115
+KPX F Agrave -115
+KPX F Amacron -115
+KPX F Aogonek -115
+KPX F Aring -115
+KPX F Atilde -115
+KPX F a -75
+KPX F aacute -75
+KPX F abreve -75
+KPX F acircumflex -75
+KPX F adieresis -75
+KPX F agrave -75
+KPX F amacron -75
+KPX F aogonek -75
+KPX F aring -75
+KPX F atilde -75
+KPX F comma -135
+KPX F e -75
+KPX F eacute -75
+KPX F ecaron -75
+KPX F ecircumflex -75
+KPX F edieresis -75
+KPX F edotaccent -75
+KPX F egrave -75
+KPX F emacron -75
+KPX F eogonek -75
+KPX F i -45
+KPX F iacute -45
+KPX F icircumflex -45
+KPX F idieresis -45
+KPX F igrave -45
+KPX F imacron -45
+KPX F iogonek -45
+KPX F o -105
+KPX F oacute -105
+KPX F ocircumflex -105
+KPX F odieresis -105
+KPX F ograve -105
+KPX F ohungarumlaut -105
+KPX F omacron -105
+KPX F oslash -105
+KPX F otilde -105
+KPX F period -135
+KPX F r -55
+KPX F racute -55
+KPX F rcaron -55
+KPX F rcommaaccent -55
+KPX J A -40
+KPX J Aacute -40
+KPX J Abreve -40
+KPX J Acircumflex -40
+KPX J Adieresis -40
+KPX J Agrave -40
+KPX J Amacron -40
+KPX J Aogonek -40
+KPX J Aring -40
+KPX J Atilde -40
+KPX J a -35
+KPX J aacute -35
+KPX J abreve -35
+KPX J acircumflex -35
+KPX J adieresis -35
+KPX J agrave -35
+KPX J amacron -35
+KPX J aogonek -35
+KPX J aring -35
+KPX J atilde -35
+KPX J comma -25
+KPX J e -25
+KPX J eacute -25
+KPX J ecaron -25
+KPX J ecircumflex -25
+KPX J edieresis -25
+KPX J edotaccent -25
+KPX J egrave -25
+KPX J emacron -25
+KPX J eogonek -25
+KPX J o -25
+KPX J oacute -25
+KPX J ocircumflex -25
+KPX J odieresis -25
+KPX J ograve -25
+KPX J ohungarumlaut -25
+KPX J omacron -25
+KPX J oslash -25
+KPX J otilde -25
+KPX J period -25
+KPX J u -35
+KPX J uacute -35
+KPX J ucircumflex -35
+KPX J udieresis -35
+KPX J ugrave -35
+KPX J uhungarumlaut -35
+KPX J umacron -35
+KPX J uogonek -35
+KPX J uring -35
+KPX K O -50
+KPX K Oacute -50
+KPX K Ocircumflex -50
+KPX K Odieresis -50
+KPX K Ograve -50
+KPX K Ohungarumlaut -50
+KPX K Omacron -50
+KPX K Oslash -50
+KPX K Otilde -50
+KPX K e -35
+KPX K eacute -35
+KPX K ecaron -35
+KPX K ecircumflex -35
+KPX K edieresis -35
+KPX K edotaccent -35
+KPX K egrave -35
+KPX K emacron -35
+KPX K eogonek -35
+KPX K o -40
+KPX K oacute -40
+KPX K ocircumflex -40
+KPX K odieresis -40
+KPX K ograve -40
+KPX K ohungarumlaut -40
+KPX K omacron -40
+KPX K oslash -40
+KPX K otilde -40
+KPX K u -40
+KPX K uacute -40
+KPX K ucircumflex -40
+KPX K udieresis -40
+KPX K ugrave -40
+KPX K uhungarumlaut -40
+KPX K umacron -40
+KPX K uogonek -40
+KPX K uring -40
+KPX K y -40
+KPX K yacute -40
+KPX K ydieresis -40
+KPX Kcommaaccent O -50
+KPX Kcommaaccent Oacute -50
+KPX Kcommaaccent Ocircumflex -50
+KPX Kcommaaccent Odieresis -50
+KPX Kcommaaccent Ograve -50
+KPX Kcommaaccent Ohungarumlaut -50
+KPX Kcommaaccent Omacron -50
+KPX Kcommaaccent Oslash -50
+KPX Kcommaaccent Otilde -50
+KPX Kcommaaccent e -35
+KPX Kcommaaccent eacute -35
+KPX Kcommaaccent ecaron -35
+KPX Kcommaaccent ecircumflex -35
+KPX Kcommaaccent edieresis -35
+KPX Kcommaaccent edotaccent -35
+KPX Kcommaaccent egrave -35
+KPX Kcommaaccent emacron -35
+KPX Kcommaaccent eogonek -35
+KPX Kcommaaccent o -40
+KPX Kcommaaccent oacute -40
+KPX Kcommaaccent ocircumflex -40
+KPX Kcommaaccent odieresis -40
+KPX Kcommaaccent ograve -40
+KPX Kcommaaccent ohungarumlaut -40
+KPX Kcommaaccent omacron -40
+KPX Kcommaaccent oslash -40
+KPX Kcommaaccent otilde -40
+KPX Kcommaaccent u -40
+KPX Kcommaaccent uacute -40
+KPX Kcommaaccent ucircumflex -40
+KPX Kcommaaccent udieresis -40
+KPX Kcommaaccent ugrave -40
+KPX Kcommaaccent uhungarumlaut -40
+KPX Kcommaaccent umacron -40
+KPX Kcommaaccent uogonek -40
+KPX Kcommaaccent uring -40
+KPX Kcommaaccent y -40
+KPX Kcommaaccent yacute -40
+KPX Kcommaaccent ydieresis -40
+KPX L T -20
+KPX L Tcaron -20
+KPX L Tcommaaccent -20
+KPX L V -55
+KPX L W -55
+KPX L Y -20
+KPX L Yacute -20
+KPX L Ydieresis -20
+KPX L quoteright -37
+KPX L y -30
+KPX L yacute -30
+KPX L ydieresis -30
+KPX Lacute T -20
+KPX Lacute Tcaron -20
+KPX Lacute Tcommaaccent -20
+KPX Lacute V -55
+KPX Lacute W -55
+KPX Lacute Y -20
+KPX Lacute Yacute -20
+KPX Lacute Ydieresis -20
+KPX Lacute quoteright -37
+KPX Lacute y -30
+KPX Lacute yacute -30
+KPX Lacute ydieresis -30
+KPX Lcommaaccent T -20
+KPX Lcommaaccent Tcaron -20
+KPX Lcommaaccent Tcommaaccent -20
+KPX Lcommaaccent V -55
+KPX Lcommaaccent W -55
+KPX Lcommaaccent Y -20
+KPX Lcommaaccent Yacute -20
+KPX Lcommaaccent Ydieresis -20
+KPX Lcommaaccent quoteright -37
+KPX Lcommaaccent y -30
+KPX Lcommaaccent yacute -30
+KPX Lcommaaccent ydieresis -30
+KPX Lslash T -20
+KPX Lslash Tcaron -20
+KPX Lslash Tcommaaccent -20
+KPX Lslash V -55
+KPX Lslash W -55
+KPX Lslash Y -20
+KPX Lslash Yacute -20
+KPX Lslash Ydieresis -20
+KPX Lslash quoteright -37
+KPX Lslash y -30
+KPX Lslash yacute -30
+KPX Lslash ydieresis -30
+KPX N A -27
+KPX N Aacute -27
+KPX N Abreve -27
+KPX N Acircumflex -27
+KPX N Adieresis -27
+KPX N Agrave -27
+KPX N Amacron -27
+KPX N Aogonek -27
+KPX N Aring -27
+KPX N Atilde -27
+KPX Nacute A -27
+KPX Nacute Aacute -27
+KPX Nacute Abreve -27
+KPX Nacute Acircumflex -27
+KPX Nacute Adieresis -27
+KPX Nacute Agrave -27
+KPX Nacute Amacron -27
+KPX Nacute Aogonek -27
+KPX Nacute Aring -27
+KPX Nacute Atilde -27
+KPX Ncaron A -27
+KPX Ncaron Aacute -27
+KPX Ncaron Abreve -27
+KPX Ncaron Acircumflex -27
+KPX Ncaron Adieresis -27
+KPX Ncaron Agrave -27
+KPX Ncaron Amacron -27
+KPX Ncaron Aogonek -27
+KPX Ncaron Aring -27
+KPX Ncaron Atilde -27
+KPX Ncommaaccent A -27
+KPX Ncommaaccent Aacute -27
+KPX Ncommaaccent Abreve -27
+KPX Ncommaaccent Acircumflex -27
+KPX Ncommaaccent Adieresis -27
+KPX Ncommaaccent Agrave -27
+KPX Ncommaaccent Amacron -27
+KPX Ncommaaccent Aogonek -27
+KPX Ncommaaccent Aring -27
+KPX Ncommaaccent Atilde -27
+KPX Ntilde A -27
+KPX Ntilde Aacute -27
+KPX Ntilde Abreve -27
+KPX Ntilde Acircumflex -27
+KPX Ntilde Adieresis -27
+KPX Ntilde Agrave -27
+KPX Ntilde Amacron -27
+KPX Ntilde Aogonek -27
+KPX Ntilde Aring -27
+KPX Ntilde Atilde -27
+KPX O A -55
+KPX O Aacute -55
+KPX O Abreve -55
+KPX O Acircumflex -55
+KPX O Adieresis -55
+KPX O Agrave -55
+KPX O Amacron -55
+KPX O Aogonek -55
+KPX O Aring -55
+KPX O Atilde -55
+KPX O T -40
+KPX O Tcaron -40
+KPX O Tcommaaccent -40
+KPX O V -50
+KPX O W -50
+KPX O X -40
+KPX O Y -50
+KPX O Yacute -50
+KPX O Ydieresis -50
+KPX Oacute A -55
+KPX Oacute Aacute -55
+KPX Oacute Abreve -55
+KPX Oacute Acircumflex -55
+KPX Oacute Adieresis -55
+KPX Oacute Agrave -55
+KPX Oacute Amacron -55
+KPX Oacute Aogonek -55
+KPX Oacute Aring -55
+KPX Oacute Atilde -55
+KPX Oacute T -40
+KPX Oacute Tcaron -40
+KPX Oacute Tcommaaccent -40
+KPX Oacute V -50
+KPX Oacute W -50
+KPX Oacute X -40
+KPX Oacute Y -50
+KPX Oacute Yacute -50
+KPX Oacute Ydieresis -50
+KPX Ocircumflex A -55
+KPX Ocircumflex Aacute -55
+KPX Ocircumflex Abreve -55
+KPX Ocircumflex Acircumflex -55
+KPX Ocircumflex Adieresis -55
+KPX Ocircumflex Agrave -55
+KPX Ocircumflex Amacron -55
+KPX Ocircumflex Aogonek -55
+KPX Ocircumflex Aring -55
+KPX Ocircumflex Atilde -55
+KPX Ocircumflex T -40
+KPX Ocircumflex Tcaron -40
+KPX Ocircumflex Tcommaaccent -40
+KPX Ocircumflex V -50
+KPX Ocircumflex W -50
+KPX Ocircumflex X -40
+KPX Ocircumflex Y -50
+KPX Ocircumflex Yacute -50
+KPX Ocircumflex Ydieresis -50
+KPX Odieresis A -55
+KPX Odieresis Aacute -55
+KPX Odieresis Abreve -55
+KPX Odieresis Acircumflex -55
+KPX Odieresis Adieresis -55
+KPX Odieresis Agrave -55
+KPX Odieresis Amacron -55
+KPX Odieresis Aogonek -55
+KPX Odieresis Aring -55
+KPX Odieresis Atilde -55
+KPX Odieresis T -40
+KPX Odieresis Tcaron -40
+KPX Odieresis Tcommaaccent -40
+KPX Odieresis V -50
+KPX Odieresis W -50
+KPX Odieresis X -40
+KPX Odieresis Y -50
+KPX Odieresis Yacute -50
+KPX Odieresis Ydieresis -50
+KPX Ograve A -55
+KPX Ograve Aacute -55
+KPX Ograve Abreve -55
+KPX Ograve Acircumflex -55
+KPX Ograve Adieresis -55
+KPX Ograve Agrave -55
+KPX Ograve Amacron -55
+KPX Ograve Aogonek -55
+KPX Ograve Aring -55
+KPX Ograve Atilde -55
+KPX Ograve T -40
+KPX Ograve Tcaron -40
+KPX Ograve Tcommaaccent -40
+KPX Ograve V -50
+KPX Ograve W -50
+KPX Ograve X -40
+KPX Ograve Y -50
+KPX Ograve Yacute -50
+KPX Ograve Ydieresis -50
+KPX Ohungarumlaut A -55
+KPX Ohungarumlaut Aacute -55
+KPX Ohungarumlaut Abreve -55
+KPX Ohungarumlaut Acircumflex -55
+KPX Ohungarumlaut Adieresis -55
+KPX Ohungarumlaut Agrave -55
+KPX Ohungarumlaut Amacron -55
+KPX Ohungarumlaut Aogonek -55
+KPX Ohungarumlaut Aring -55
+KPX Ohungarumlaut Atilde -55
+KPX Ohungarumlaut T -40
+KPX Ohungarumlaut Tcaron -40
+KPX Ohungarumlaut Tcommaaccent -40
+KPX Ohungarumlaut V -50
+KPX Ohungarumlaut W -50
+KPX Ohungarumlaut X -40
+KPX Ohungarumlaut Y -50
+KPX Ohungarumlaut Yacute -50
+KPX Ohungarumlaut Ydieresis -50
+KPX Omacron A -55
+KPX Omacron Aacute -55
+KPX Omacron Abreve -55
+KPX Omacron Acircumflex -55
+KPX Omacron Adieresis -55
+KPX Omacron Agrave -55
+KPX Omacron Amacron -55
+KPX Omacron Aogonek -55
+KPX Omacron Aring -55
+KPX Omacron Atilde -55
+KPX Omacron T -40
+KPX Omacron Tcaron -40
+KPX Omacron Tcommaaccent -40
+KPX Omacron V -50
+KPX Omacron W -50
+KPX Omacron X -40
+KPX Omacron Y -50
+KPX Omacron Yacute -50
+KPX Omacron Ydieresis -50
+KPX Oslash A -55
+KPX Oslash Aacute -55
+KPX Oslash Abreve -55
+KPX Oslash Acircumflex -55
+KPX Oslash Adieresis -55
+KPX Oslash Agrave -55
+KPX Oslash Amacron -55
+KPX Oslash Aogonek -55
+KPX Oslash Aring -55
+KPX Oslash Atilde -55
+KPX Oslash T -40
+KPX Oslash Tcaron -40
+KPX Oslash Tcommaaccent -40
+KPX Oslash V -50
+KPX Oslash W -50
+KPX Oslash X -40
+KPX Oslash Y -50
+KPX Oslash Yacute -50
+KPX Oslash Ydieresis -50
+KPX Otilde A -55
+KPX Otilde Aacute -55
+KPX Otilde Abreve -55
+KPX Otilde Acircumflex -55
+KPX Otilde Adieresis -55
+KPX Otilde Agrave -55
+KPX Otilde Amacron -55
+KPX Otilde Aogonek -55
+KPX Otilde Aring -55
+KPX Otilde Atilde -55
+KPX Otilde T -40
+KPX Otilde Tcaron -40
+KPX Otilde Tcommaaccent -40
+KPX Otilde V -50
+KPX Otilde W -50
+KPX Otilde X -40
+KPX Otilde Y -50
+KPX Otilde Yacute -50
+KPX Otilde Ydieresis -50
+KPX P A -90
+KPX P Aacute -90
+KPX P Abreve -90
+KPX P Acircumflex -90
+KPX P Adieresis -90
+KPX P Agrave -90
+KPX P Amacron -90
+KPX P Aogonek -90
+KPX P Aring -90
+KPX P Atilde -90
+KPX P a -80
+KPX P aacute -80
+KPX P abreve -80
+KPX P acircumflex -80
+KPX P adieresis -80
+KPX P agrave -80
+KPX P amacron -80
+KPX P aogonek -80
+KPX P aring -80
+KPX P atilde -80
+KPX P comma -135
+KPX P e -80
+KPX P eacute -80
+KPX P ecaron -80
+KPX P ecircumflex -80
+KPX P edieresis -80
+KPX P edotaccent -80
+KPX P egrave -80
+KPX P emacron -80
+KPX P eogonek -80
+KPX P o -80
+KPX P oacute -80
+KPX P ocircumflex -80
+KPX P odieresis -80
+KPX P ograve -80
+KPX P ohungarumlaut -80
+KPX P omacron -80
+KPX P oslash -80
+KPX P otilde -80
+KPX P period -135
+KPX Q U -10
+KPX Q Uacute -10
+KPX Q Ucircumflex -10
+KPX Q Udieresis -10
+KPX Q Ugrave -10
+KPX Q Uhungarumlaut -10
+KPX Q Umacron -10
+KPX Q Uogonek -10
+KPX Q Uring -10
+KPX R O -40
+KPX R Oacute -40
+KPX R Ocircumflex -40
+KPX R Odieresis -40
+KPX R Ograve -40
+KPX R Ohungarumlaut -40
+KPX R Omacron -40
+KPX R Oslash -40
+KPX R Otilde -40
+KPX R U -40
+KPX R Uacute -40
+KPX R Ucircumflex -40
+KPX R Udieresis -40
+KPX R Ugrave -40
+KPX R Uhungarumlaut -40
+KPX R Umacron -40
+KPX R Uogonek -40
+KPX R Uring -40
+KPX R V -18
+KPX R W -18
+KPX R Y -18
+KPX R Yacute -18
+KPX R Ydieresis -18
+KPX Racute O -40
+KPX Racute Oacute -40
+KPX Racute Ocircumflex -40
+KPX Racute Odieresis -40
+KPX Racute Ograve -40
+KPX Racute Ohungarumlaut -40
+KPX Racute Omacron -40
+KPX Racute Oslash -40
+KPX Racute Otilde -40
+KPX Racute U -40
+KPX Racute Uacute -40
+KPX Racute Ucircumflex -40
+KPX Racute Udieresis -40
+KPX Racute Ugrave -40
+KPX Racute Uhungarumlaut -40
+KPX Racute Umacron -40
+KPX Racute Uogonek -40
+KPX Racute Uring -40
+KPX Racute V -18
+KPX Racute W -18
+KPX Racute Y -18
+KPX Racute Yacute -18
+KPX Racute Ydieresis -18
+KPX Rcaron O -40
+KPX Rcaron Oacute -40
+KPX Rcaron Ocircumflex -40
+KPX Rcaron Odieresis -40
+KPX Rcaron Ograve -40
+KPX Rcaron Ohungarumlaut -40
+KPX Rcaron Omacron -40
+KPX Rcaron Oslash -40
+KPX Rcaron Otilde -40
+KPX Rcaron U -40
+KPX Rcaron Uacute -40
+KPX Rcaron Ucircumflex -40
+KPX Rcaron Udieresis -40
+KPX Rcaron Ugrave -40
+KPX Rcaron Uhungarumlaut -40
+KPX Rcaron Umacron -40
+KPX Rcaron Uogonek -40
+KPX Rcaron Uring -40
+KPX Rcaron V -18
+KPX Rcaron W -18
+KPX Rcaron Y -18
+KPX Rcaron Yacute -18
+KPX Rcaron Ydieresis -18
+KPX Rcommaaccent O -40
+KPX Rcommaaccent Oacute -40
+KPX Rcommaaccent Ocircumflex -40
+KPX Rcommaaccent Odieresis -40
+KPX Rcommaaccent Ograve -40
+KPX Rcommaaccent Ohungarumlaut -40
+KPX Rcommaaccent Omacron -40
+KPX Rcommaaccent Oslash -40
+KPX Rcommaaccent Otilde -40
+KPX Rcommaaccent U -40
+KPX Rcommaaccent Uacute -40
+KPX Rcommaaccent Ucircumflex -40
+KPX Rcommaaccent Udieresis -40
+KPX Rcommaaccent Ugrave -40
+KPX Rcommaaccent Uhungarumlaut -40
+KPX Rcommaaccent Umacron -40
+KPX Rcommaaccent Uogonek -40
+KPX Rcommaaccent Uring -40
+KPX Rcommaaccent V -18
+KPX Rcommaaccent W -18
+KPX Rcommaaccent Y -18
+KPX Rcommaaccent Yacute -18
+KPX Rcommaaccent Ydieresis -18
+KPX T A -50
+KPX T Aacute -50
+KPX T Abreve -50
+KPX T Acircumflex -50
+KPX T Adieresis -50
+KPX T Agrave -50
+KPX T Amacron -50
+KPX T Aogonek -50
+KPX T Aring -50
+KPX T Atilde -50
+KPX T O -18
+KPX T Oacute -18
+KPX T Ocircumflex -18
+KPX T Odieresis -18
+KPX T Ograve -18
+KPX T Ohungarumlaut -18
+KPX T Omacron -18
+KPX T Oslash -18
+KPX T Otilde -18
+KPX T a -92
+KPX T aacute -92
+KPX T abreve -92
+KPX T acircumflex -92
+KPX T adieresis -92
+KPX T agrave -92
+KPX T amacron -92
+KPX T aogonek -92
+KPX T aring -92
+KPX T atilde -92
+KPX T colon -55
+KPX T comma -74
+KPX T e -92
+KPX T eacute -92
+KPX T ecaron -92
+KPX T ecircumflex -52
+KPX T edieresis -52
+KPX T edotaccent -92
+KPX T egrave -52
+KPX T emacron -52
+KPX T eogonek -92
+KPX T hyphen -74
+KPX T i -55
+KPX T iacute -55
+KPX T iogonek -55
+KPX T o -92
+KPX T oacute -92
+KPX T ocircumflex -92
+KPX T odieresis -92
+KPX T ograve -92
+KPX T ohungarumlaut -92
+KPX T omacron -92
+KPX T oslash -92
+KPX T otilde -92
+KPX T period -74
+KPX T r -55
+KPX T racute -55
+KPX T rcaron -55
+KPX T rcommaaccent -55
+KPX T semicolon -65
+KPX T u -55
+KPX T uacute -55
+KPX T ucircumflex -55
+KPX T udieresis -55
+KPX T ugrave -55
+KPX T uhungarumlaut -55
+KPX T umacron -55
+KPX T uogonek -55
+KPX T uring -55
+KPX T w -74
+KPX T y -74
+KPX T yacute -74
+KPX T ydieresis -34
+KPX Tcaron A -50
+KPX Tcaron Aacute -50
+KPX Tcaron Abreve -50
+KPX Tcaron Acircumflex -50
+KPX Tcaron Adieresis -50
+KPX Tcaron Agrave -50
+KPX Tcaron Amacron -50
+KPX Tcaron Aogonek -50
+KPX Tcaron Aring -50
+KPX Tcaron Atilde -50
+KPX Tcaron O -18
+KPX Tcaron Oacute -18
+KPX Tcaron Ocircumflex -18
+KPX Tcaron Odieresis -18
+KPX Tcaron Ograve -18
+KPX Tcaron Ohungarumlaut -18
+KPX Tcaron Omacron -18
+KPX Tcaron Oslash -18
+KPX Tcaron Otilde -18
+KPX Tcaron a -92
+KPX Tcaron aacute -92
+KPX Tcaron abreve -92
+KPX Tcaron acircumflex -92
+KPX Tcaron adieresis -92
+KPX Tcaron agrave -92
+KPX Tcaron amacron -92
+KPX Tcaron aogonek -92
+KPX Tcaron aring -92
+KPX Tcaron atilde -92
+KPX Tcaron colon -55
+KPX Tcaron comma -74
+KPX Tcaron e -92
+KPX Tcaron eacute -92
+KPX Tcaron ecaron -92
+KPX Tcaron ecircumflex -52
+KPX Tcaron edieresis -52
+KPX Tcaron edotaccent -92
+KPX Tcaron egrave -52
+KPX Tcaron emacron -52
+KPX Tcaron eogonek -92
+KPX Tcaron hyphen -74
+KPX Tcaron i -55
+KPX Tcaron iacute -55
+KPX Tcaron iogonek -55
+KPX Tcaron o -92
+KPX Tcaron oacute -92
+KPX Tcaron ocircumflex -92
+KPX Tcaron odieresis -92
+KPX Tcaron ograve -92
+KPX Tcaron ohungarumlaut -92
+KPX Tcaron omacron -92
+KPX Tcaron oslash -92
+KPX Tcaron otilde -92
+KPX Tcaron period -74
+KPX Tcaron r -55
+KPX Tcaron racute -55
+KPX Tcaron rcaron -55
+KPX Tcaron rcommaaccent -55
+KPX Tcaron semicolon -65
+KPX Tcaron u -55
+KPX Tcaron uacute -55
+KPX Tcaron ucircumflex -55
+KPX Tcaron udieresis -55
+KPX Tcaron ugrave -55
+KPX Tcaron uhungarumlaut -55
+KPX Tcaron umacron -55
+KPX Tcaron uogonek -55
+KPX Tcaron uring -55
+KPX Tcaron w -74
+KPX Tcaron y -74
+KPX Tcaron yacute -74
+KPX Tcaron ydieresis -34
+KPX Tcommaaccent A -50
+KPX Tcommaaccent Aacute -50
+KPX Tcommaaccent Abreve -50
+KPX Tcommaaccent Acircumflex -50
+KPX Tcommaaccent Adieresis -50
+KPX Tcommaaccent Agrave -50
+KPX Tcommaaccent Amacron -50
+KPX Tcommaaccent Aogonek -50
+KPX Tcommaaccent Aring -50
+KPX Tcommaaccent Atilde -50
+KPX Tcommaaccent O -18
+KPX Tcommaaccent Oacute -18
+KPX Tcommaaccent Ocircumflex -18
+KPX Tcommaaccent Odieresis -18
+KPX Tcommaaccent Ograve -18
+KPX Tcommaaccent Ohungarumlaut -18
+KPX Tcommaaccent Omacron -18
+KPX Tcommaaccent Oslash -18
+KPX Tcommaaccent Otilde -18
+KPX Tcommaaccent a -92
+KPX Tcommaaccent aacute -92
+KPX Tcommaaccent abreve -92
+KPX Tcommaaccent acircumflex -92
+KPX Tcommaaccent adieresis -92
+KPX Tcommaaccent agrave -92
+KPX Tcommaaccent amacron -92
+KPX Tcommaaccent aogonek -92
+KPX Tcommaaccent aring -92
+KPX Tcommaaccent atilde -92
+KPX Tcommaaccent colon -55
+KPX Tcommaaccent comma -74
+KPX Tcommaaccent e -92
+KPX Tcommaaccent eacute -92
+KPX Tcommaaccent ecaron -92
+KPX Tcommaaccent ecircumflex -52
+KPX Tcommaaccent edieresis -52
+KPX Tcommaaccent edotaccent -92
+KPX Tcommaaccent egrave -52
+KPX Tcommaaccent emacron -52
+KPX Tcommaaccent eogonek -92
+KPX Tcommaaccent hyphen -74
+KPX Tcommaaccent i -55
+KPX Tcommaaccent iacute -55
+KPX Tcommaaccent iogonek -55
+KPX Tcommaaccent o -92
+KPX Tcommaaccent oacute -92
+KPX Tcommaaccent ocircumflex -92
+KPX Tcommaaccent odieresis -92
+KPX Tcommaaccent ograve -92
+KPX Tcommaaccent ohungarumlaut -92
+KPX Tcommaaccent omacron -92
+KPX Tcommaaccent oslash -92
+KPX Tcommaaccent otilde -92
+KPX Tcommaaccent period -74
+KPX Tcommaaccent r -55
+KPX Tcommaaccent racute -55
+KPX Tcommaaccent rcaron -55
+KPX Tcommaaccent rcommaaccent -55
+KPX Tcommaaccent semicolon -65
+KPX Tcommaaccent u -55
+KPX Tcommaaccent uacute -55
+KPX Tcommaaccent ucircumflex -55
+KPX Tcommaaccent udieresis -55
+KPX Tcommaaccent ugrave -55
+KPX Tcommaaccent uhungarumlaut -55
+KPX Tcommaaccent umacron -55
+KPX Tcommaaccent uogonek -55
+KPX Tcommaaccent uring -55
+KPX Tcommaaccent w -74
+KPX Tcommaaccent y -74
+KPX Tcommaaccent yacute -74
+KPX Tcommaaccent ydieresis -34
+KPX U A -40
+KPX U Aacute -40
+KPX U Abreve -40
+KPX U Acircumflex -40
+KPX U Adieresis -40
+KPX U Agrave -40
+KPX U Amacron -40
+KPX U Aogonek -40
+KPX U Aring -40
+KPX U Atilde -40
+KPX U comma -25
+KPX U period -25
+KPX Uacute A -40
+KPX Uacute Aacute -40
+KPX Uacute Abreve -40
+KPX Uacute Acircumflex -40
+KPX Uacute Adieresis -40
+KPX Uacute Agrave -40
+KPX Uacute Amacron -40
+KPX Uacute Aogonek -40
+KPX Uacute Aring -40
+KPX Uacute Atilde -40
+KPX Uacute comma -25
+KPX Uacute period -25
+KPX Ucircumflex A -40
+KPX Ucircumflex Aacute -40
+KPX Ucircumflex Abreve -40
+KPX Ucircumflex Acircumflex -40
+KPX Ucircumflex Adieresis -40
+KPX Ucircumflex Agrave -40
+KPX Ucircumflex Amacron -40
+KPX Ucircumflex Aogonek -40
+KPX Ucircumflex Aring -40
+KPX Ucircumflex Atilde -40
+KPX Ucircumflex comma -25
+KPX Ucircumflex period -25
+KPX Udieresis A -40
+KPX Udieresis Aacute -40
+KPX Udieresis Abreve -40
+KPX Udieresis Acircumflex -40
+KPX Udieresis Adieresis -40
+KPX Udieresis Agrave -40
+KPX Udieresis Amacron -40
+KPX Udieresis Aogonek -40
+KPX Udieresis Aring -40
+KPX Udieresis Atilde -40
+KPX Udieresis comma -25
+KPX Udieresis period -25
+KPX Ugrave A -40
+KPX Ugrave Aacute -40
+KPX Ugrave Abreve -40
+KPX Ugrave Acircumflex -40
+KPX Ugrave Adieresis -40
+KPX Ugrave Agrave -40
+KPX Ugrave Amacron -40
+KPX Ugrave Aogonek -40
+KPX Ugrave Aring -40
+KPX Ugrave Atilde -40
+KPX Ugrave comma -25
+KPX Ugrave period -25
+KPX Uhungarumlaut A -40
+KPX Uhungarumlaut Aacute -40
+KPX Uhungarumlaut Abreve -40
+KPX Uhungarumlaut Acircumflex -40
+KPX Uhungarumlaut Adieresis -40
+KPX Uhungarumlaut Agrave -40
+KPX Uhungarumlaut Amacron -40
+KPX Uhungarumlaut Aogonek -40
+KPX Uhungarumlaut Aring -40
+KPX Uhungarumlaut Atilde -40
+KPX Uhungarumlaut comma -25
+KPX Uhungarumlaut period -25
+KPX Umacron A -40
+KPX Umacron Aacute -40
+KPX Umacron Abreve -40
+KPX Umacron Acircumflex -40
+KPX Umacron Adieresis -40
+KPX Umacron Agrave -40
+KPX Umacron Amacron -40
+KPX Umacron Aogonek -40
+KPX Umacron Aring -40
+KPX Umacron Atilde -40
+KPX Umacron comma -25
+KPX Umacron period -25
+KPX Uogonek A -40
+KPX Uogonek Aacute -40
+KPX Uogonek Abreve -40
+KPX Uogonek Acircumflex -40
+KPX Uogonek Adieresis -40
+KPX Uogonek Agrave -40
+KPX Uogonek Amacron -40
+KPX Uogonek Aogonek -40
+KPX Uogonek Aring -40
+KPX Uogonek Atilde -40
+KPX Uogonek comma -25
+KPX Uogonek period -25
+KPX Uring A -40
+KPX Uring Aacute -40
+KPX Uring Abreve -40
+KPX Uring Acircumflex -40
+KPX Uring Adieresis -40
+KPX Uring Agrave -40
+KPX Uring Amacron -40
+KPX Uring Aogonek -40
+KPX Uring Aring -40
+KPX Uring Atilde -40
+KPX Uring comma -25
+KPX Uring period -25
+KPX V A -60
+KPX V Aacute -60
+KPX V Abreve -60
+KPX V Acircumflex -60
+KPX V Adieresis -60
+KPX V Agrave -60
+KPX V Amacron -60
+KPX V Aogonek -60
+KPX V Aring -60
+KPX V Atilde -60
+KPX V O -30
+KPX V Oacute -30
+KPX V Ocircumflex -30
+KPX V Odieresis -30
+KPX V Ograve -30
+KPX V Ohungarumlaut -30
+KPX V Omacron -30
+KPX V Oslash -30
+KPX V Otilde -30
+KPX V a -111
+KPX V aacute -111
+KPX V abreve -111
+KPX V acircumflex -111
+KPX V adieresis -111
+KPX V agrave -111
+KPX V amacron -111
+KPX V aogonek -111
+KPX V aring -111
+KPX V atilde -111
+KPX V colon -65
+KPX V comma -129
+KPX V e -111
+KPX V eacute -111
+KPX V ecaron -111
+KPX V ecircumflex -111
+KPX V edieresis -71
+KPX V edotaccent -111
+KPX V egrave -71
+KPX V emacron -71
+KPX V eogonek -111
+KPX V hyphen -55
+KPX V i -74
+KPX V iacute -74
+KPX V icircumflex -34
+KPX V idieresis -34
+KPX V igrave -34
+KPX V imacron -34
+KPX V iogonek -74
+KPX V o -111
+KPX V oacute -111
+KPX V ocircumflex -111
+KPX V odieresis -111
+KPX V ograve -111
+KPX V ohungarumlaut -111
+KPX V omacron -111
+KPX V oslash -111
+KPX V otilde -111
+KPX V period -129
+KPX V semicolon -74
+KPX V u -74
+KPX V uacute -74
+KPX V ucircumflex -74
+KPX V udieresis -74
+KPX V ugrave -74
+KPX V uhungarumlaut -74
+KPX V umacron -74
+KPX V uogonek -74
+KPX V uring -74
+KPX W A -60
+KPX W Aacute -60
+KPX W Abreve -60
+KPX W Acircumflex -60
+KPX W Adieresis -60
+KPX W Agrave -60
+KPX W Amacron -60
+KPX W Aogonek -60
+KPX W Aring -60
+KPX W Atilde -60
+KPX W O -25
+KPX W Oacute -25
+KPX W Ocircumflex -25
+KPX W Odieresis -25
+KPX W Ograve -25
+KPX W Ohungarumlaut -25
+KPX W Omacron -25
+KPX W Oslash -25
+KPX W Otilde -25
+KPX W a -92
+KPX W aacute -92
+KPX W abreve -92
+KPX W acircumflex -92
+KPX W adieresis -92
+KPX W agrave -92
+KPX W amacron -92
+KPX W aogonek -92
+KPX W aring -92
+KPX W atilde -92
+KPX W colon -65
+KPX W comma -92
+KPX W e -92
+KPX W eacute -92
+KPX W ecaron -92
+KPX W ecircumflex -92
+KPX W edieresis -52
+KPX W edotaccent -92
+KPX W egrave -52
+KPX W emacron -52
+KPX W eogonek -92
+KPX W hyphen -37
+KPX W i -55
+KPX W iacute -55
+KPX W iogonek -55
+KPX W o -92
+KPX W oacute -92
+KPX W ocircumflex -92
+KPX W odieresis -92
+KPX W ograve -92
+KPX W ohungarumlaut -92
+KPX W omacron -92
+KPX W oslash -92
+KPX W otilde -92
+KPX W period -92
+KPX W semicolon -65
+KPX W u -55
+KPX W uacute -55
+KPX W ucircumflex -55
+KPX W udieresis -55
+KPX W ugrave -55
+KPX W uhungarumlaut -55
+KPX W umacron -55
+KPX W uogonek -55
+KPX W uring -55
+KPX W y -70
+KPX W yacute -70
+KPX W ydieresis -70
+KPX Y A -50
+KPX Y Aacute -50
+KPX Y Abreve -50
+KPX Y Acircumflex -50
+KPX Y Adieresis -50
+KPX Y Agrave -50
+KPX Y Amacron -50
+KPX Y Aogonek -50
+KPX Y Aring -50
+KPX Y Atilde -50
+KPX Y O -15
+KPX Y Oacute -15
+KPX Y Ocircumflex -15
+KPX Y Odieresis -15
+KPX Y Ograve -15
+KPX Y Ohungarumlaut -15
+KPX Y Omacron -15
+KPX Y Oslash -15
+KPX Y Otilde -15
+KPX Y a -92
+KPX Y aacute -92
+KPX Y abreve -92
+KPX Y acircumflex -92
+KPX Y adieresis -92
+KPX Y agrave -92
+KPX Y amacron -92
+KPX Y aogonek -92
+KPX Y aring -92
+KPX Y atilde -92
+KPX Y colon -65
+KPX Y comma -92
+KPX Y e -92
+KPX Y eacute -92
+KPX Y ecaron -92
+KPX Y ecircumflex -92
+KPX Y edieresis -52
+KPX Y edotaccent -92
+KPX Y egrave -52
+KPX Y emacron -52
+KPX Y eogonek -92
+KPX Y hyphen -74
+KPX Y i -74
+KPX Y iacute -74
+KPX Y icircumflex -34
+KPX Y idieresis -34
+KPX Y igrave -34
+KPX Y imacron -34
+KPX Y iogonek -74
+KPX Y o -92
+KPX Y oacute -92
+KPX Y ocircumflex -92
+KPX Y odieresis -92
+KPX Y ograve -92
+KPX Y ohungarumlaut -92
+KPX Y omacron -92
+KPX Y oslash -92
+KPX Y otilde -92
+KPX Y period -92
+KPX Y semicolon -65
+KPX Y u -92
+KPX Y uacute -92
+KPX Y ucircumflex -92
+KPX Y udieresis -92
+KPX Y ugrave -92
+KPX Y uhungarumlaut -92
+KPX Y umacron -92
+KPX Y uogonek -92
+KPX Y uring -92
+KPX Yacute A -50
+KPX Yacute Aacute -50
+KPX Yacute Abreve -50
+KPX Yacute Acircumflex -50
+KPX Yacute Adieresis -50
+KPX Yacute Agrave -50
+KPX Yacute Amacron -50
+KPX Yacute Aogonek -50
+KPX Yacute Aring -50
+KPX Yacute Atilde -50
+KPX Yacute O -15
+KPX Yacute Oacute -15
+KPX Yacute Ocircumflex -15
+KPX Yacute Odieresis -15
+KPX Yacute Ograve -15
+KPX Yacute Ohungarumlaut -15
+KPX Yacute Omacron -15
+KPX Yacute Oslash -15
+KPX Yacute Otilde -15
+KPX Yacute a -92
+KPX Yacute aacute -92
+KPX Yacute abreve -92
+KPX Yacute acircumflex -92
+KPX Yacute adieresis -92
+KPX Yacute agrave -92
+KPX Yacute amacron -92
+KPX Yacute aogonek -92
+KPX Yacute aring -92
+KPX Yacute atilde -92
+KPX Yacute colon -65
+KPX Yacute comma -92
+KPX Yacute e -92
+KPX Yacute eacute -92
+KPX Yacute ecaron -92
+KPX Yacute ecircumflex -92
+KPX Yacute edieresis -52
+KPX Yacute edotaccent -92
+KPX Yacute egrave -52
+KPX Yacute emacron -52
+KPX Yacute eogonek -92
+KPX Yacute hyphen -74
+KPX Yacute i -74
+KPX Yacute iacute -74
+KPX Yacute icircumflex -34
+KPX Yacute idieresis -34
+KPX Yacute igrave -34
+KPX Yacute imacron -34
+KPX Yacute iogonek -74
+KPX Yacute o -92
+KPX Yacute oacute -92
+KPX Yacute ocircumflex -92
+KPX Yacute odieresis -92
+KPX Yacute ograve -92
+KPX Yacute ohungarumlaut -92
+KPX Yacute omacron -92
+KPX Yacute oslash -92
+KPX Yacute otilde -92
+KPX Yacute period -92
+KPX Yacute semicolon -65
+KPX Yacute u -92
+KPX Yacute uacute -92
+KPX Yacute ucircumflex -92
+KPX Yacute udieresis -92
+KPX Yacute ugrave -92
+KPX Yacute uhungarumlaut -92
+KPX Yacute umacron -92
+KPX Yacute uogonek -92
+KPX Yacute uring -92
+KPX Ydieresis A -50
+KPX Ydieresis Aacute -50
+KPX Ydieresis Abreve -50
+KPX Ydieresis Acircumflex -50
+KPX Ydieresis Adieresis -50
+KPX Ydieresis Agrave -50
+KPX Ydieresis Amacron -50
+KPX Ydieresis Aogonek -50
+KPX Ydieresis Aring -50
+KPX Ydieresis Atilde -50
+KPX Ydieresis O -15
+KPX Ydieresis Oacute -15
+KPX Ydieresis Ocircumflex -15
+KPX Ydieresis Odieresis -15
+KPX Ydieresis Ograve -15
+KPX Ydieresis Ohungarumlaut -15
+KPX Ydieresis Omacron -15
+KPX Ydieresis Oslash -15
+KPX Ydieresis Otilde -15
+KPX Ydieresis a -92
+KPX Ydieresis aacute -92
+KPX Ydieresis abreve -92
+KPX Ydieresis acircumflex -92
+KPX Ydieresis adieresis -92
+KPX Ydieresis agrave -92
+KPX Ydieresis amacron -92
+KPX Ydieresis aogonek -92
+KPX Ydieresis aring -92
+KPX Ydieresis atilde -92
+KPX Ydieresis colon -65
+KPX Ydieresis comma -92
+KPX Ydieresis e -92
+KPX Ydieresis eacute -92
+KPX Ydieresis ecaron -92
+KPX Ydieresis ecircumflex -92
+KPX Ydieresis edieresis -52
+KPX Ydieresis edotaccent -92
+KPX Ydieresis egrave -52
+KPX Ydieresis emacron -52
+KPX Ydieresis eogonek -92
+KPX Ydieresis hyphen -74
+KPX Ydieresis i -74
+KPX Ydieresis iacute -74
+KPX Ydieresis icircumflex -34
+KPX Ydieresis idieresis -34
+KPX Ydieresis igrave -34
+KPX Ydieresis imacron -34
+KPX Ydieresis iogonek -74
+KPX Ydieresis o -92
+KPX Ydieresis oacute -92
+KPX Ydieresis ocircumflex -92
+KPX Ydieresis odieresis -92
+KPX Ydieresis ograve -92
+KPX Ydieresis ohungarumlaut -92
+KPX Ydieresis omacron -92
+KPX Ydieresis oslash -92
+KPX Ydieresis otilde -92
+KPX Ydieresis period -92
+KPX Ydieresis semicolon -65
+KPX Ydieresis u -92
+KPX Ydieresis uacute -92
+KPX Ydieresis ucircumflex -92
+KPX Ydieresis udieresis -92
+KPX Ydieresis ugrave -92
+KPX Ydieresis uhungarumlaut -92
+KPX Ydieresis umacron -92
+KPX Ydieresis uogonek -92
+KPX Ydieresis uring -92
+KPX a g -10
+KPX a gbreve -10
+KPX a gcommaaccent -10
+KPX aacute g -10
+KPX aacute gbreve -10
+KPX aacute gcommaaccent -10
+KPX abreve g -10
+KPX abreve gbreve -10
+KPX abreve gcommaaccent -10
+KPX acircumflex g -10
+KPX acircumflex gbreve -10
+KPX acircumflex gcommaaccent -10
+KPX adieresis g -10
+KPX adieresis gbreve -10
+KPX adieresis gcommaaccent -10
+KPX agrave g -10
+KPX agrave gbreve -10
+KPX agrave gcommaaccent -10
+KPX amacron g -10
+KPX amacron gbreve -10
+KPX amacron gcommaaccent -10
+KPX aogonek g -10
+KPX aogonek gbreve -10
+KPX aogonek gcommaaccent -10
+KPX aring g -10
+KPX aring gbreve -10
+KPX aring gcommaaccent -10
+KPX atilde g -10
+KPX atilde gbreve -10
+KPX atilde gcommaaccent -10
+KPX b period -40
+KPX b u -20
+KPX b uacute -20
+KPX b ucircumflex -20
+KPX b udieresis -20
+KPX b ugrave -20
+KPX b uhungarumlaut -20
+KPX b umacron -20
+KPX b uogonek -20
+KPX b uring -20
+KPX c h -15
+KPX c k -20
+KPX c kcommaaccent -20
+KPX cacute h -15
+KPX cacute k -20
+KPX cacute kcommaaccent -20
+KPX ccaron h -15
+KPX ccaron k -20
+KPX ccaron kcommaaccent -20
+KPX ccedilla h -15
+KPX ccedilla k -20
+KPX ccedilla kcommaaccent -20
+KPX comma quotedblright -140
+KPX comma quoteright -140
+KPX e comma -10
+KPX e g -40
+KPX e gbreve -40
+KPX e gcommaaccent -40
+KPX e period -15
+KPX e v -15
+KPX e w -15
+KPX e x -20
+KPX e y -30
+KPX e yacute -30
+KPX e ydieresis -30
+KPX eacute comma -10
+KPX eacute g -40
+KPX eacute gbreve -40
+KPX eacute gcommaaccent -40
+KPX eacute period -15
+KPX eacute v -15
+KPX eacute w -15
+KPX eacute x -20
+KPX eacute y -30
+KPX eacute yacute -30
+KPX eacute ydieresis -30
+KPX ecaron comma -10
+KPX ecaron g -40
+KPX ecaron gbreve -40
+KPX ecaron gcommaaccent -40
+KPX ecaron period -15
+KPX ecaron v -15
+KPX ecaron w -15
+KPX ecaron x -20
+KPX ecaron y -30
+KPX ecaron yacute -30
+KPX ecaron ydieresis -30
+KPX ecircumflex comma -10
+KPX ecircumflex g -40
+KPX ecircumflex gbreve -40
+KPX ecircumflex gcommaaccent -40
+KPX ecircumflex period -15
+KPX ecircumflex v -15
+KPX ecircumflex w -15
+KPX ecircumflex x -20
+KPX ecircumflex y -30
+KPX ecircumflex yacute -30
+KPX ecircumflex ydieresis -30
+KPX edieresis comma -10
+KPX edieresis g -40
+KPX edieresis gbreve -40
+KPX edieresis gcommaaccent -40
+KPX edieresis period -15
+KPX edieresis v -15
+KPX edieresis w -15
+KPX edieresis x -20
+KPX edieresis y -30
+KPX edieresis yacute -30
+KPX edieresis ydieresis -30
+KPX edotaccent comma -10
+KPX edotaccent g -40
+KPX edotaccent gbreve -40
+KPX edotaccent gcommaaccent -40
+KPX edotaccent period -15
+KPX edotaccent v -15
+KPX edotaccent w -15
+KPX edotaccent x -20
+KPX edotaccent y -30
+KPX edotaccent yacute -30
+KPX edotaccent ydieresis -30
+KPX egrave comma -10
+KPX egrave g -40
+KPX egrave gbreve -40
+KPX egrave gcommaaccent -40
+KPX egrave period -15
+KPX egrave v -15
+KPX egrave w -15
+KPX egrave x -20
+KPX egrave y -30
+KPX egrave yacute -30
+KPX egrave ydieresis -30
+KPX emacron comma -10
+KPX emacron g -40
+KPX emacron gbreve -40
+KPX emacron gcommaaccent -40
+KPX emacron period -15
+KPX emacron v -15
+KPX emacron w -15
+KPX emacron x -20
+KPX emacron y -30
+KPX emacron yacute -30
+KPX emacron ydieresis -30
+KPX eogonek comma -10
+KPX eogonek g -40
+KPX eogonek gbreve -40
+KPX eogonek gcommaaccent -40
+KPX eogonek period -15
+KPX eogonek v -15
+KPX eogonek w -15
+KPX eogonek x -20
+KPX eogonek y -30
+KPX eogonek yacute -30
+KPX eogonek ydieresis -30
+KPX f comma -10
+KPX f dotlessi -60
+KPX f f -18
+KPX f i -20
+KPX f iogonek -20
+KPX f period -15
+KPX f quoteright 92
+KPX g comma -10
+KPX g e -10
+KPX g eacute -10
+KPX g ecaron -10
+KPX g ecircumflex -10
+KPX g edieresis -10
+KPX g edotaccent -10
+KPX g egrave -10
+KPX g emacron -10
+KPX g eogonek -10
+KPX g g -10
+KPX g gbreve -10
+KPX g gcommaaccent -10
+KPX g period -15
+KPX gbreve comma -10
+KPX gbreve e -10
+KPX gbreve eacute -10
+KPX gbreve ecaron -10
+KPX gbreve ecircumflex -10
+KPX gbreve edieresis -10
+KPX gbreve edotaccent -10
+KPX gbreve egrave -10
+KPX gbreve emacron -10
+KPX gbreve eogonek -10
+KPX gbreve g -10
+KPX gbreve gbreve -10
+KPX gbreve gcommaaccent -10
+KPX gbreve period -15
+KPX gcommaaccent comma -10
+KPX gcommaaccent e -10
+KPX gcommaaccent eacute -10
+KPX gcommaaccent ecaron -10
+KPX gcommaaccent ecircumflex -10
+KPX gcommaaccent edieresis -10
+KPX gcommaaccent edotaccent -10
+KPX gcommaaccent egrave -10
+KPX gcommaaccent emacron -10
+KPX gcommaaccent eogonek -10
+KPX gcommaaccent g -10
+KPX gcommaaccent gbreve -10
+KPX gcommaaccent gcommaaccent -10
+KPX gcommaaccent period -15
+KPX k e -10
+KPX k eacute -10
+KPX k ecaron -10
+KPX k ecircumflex -10
+KPX k edieresis -10
+KPX k edotaccent -10
+KPX k egrave -10
+KPX k emacron -10
+KPX k eogonek -10
+KPX k o -10
+KPX k oacute -10
+KPX k ocircumflex -10
+KPX k odieresis -10
+KPX k ograve -10
+KPX k ohungarumlaut -10
+KPX k omacron -10
+KPX k oslash -10
+KPX k otilde -10
+KPX k y -10
+KPX k yacute -10
+KPX k ydieresis -10
+KPX kcommaaccent e -10
+KPX kcommaaccent eacute -10
+KPX kcommaaccent ecaron -10
+KPX kcommaaccent ecircumflex -10
+KPX kcommaaccent edieresis -10
+KPX kcommaaccent edotaccent -10
+KPX kcommaaccent egrave -10
+KPX kcommaaccent emacron -10
+KPX kcommaaccent eogonek -10
+KPX kcommaaccent o -10
+KPX kcommaaccent oacute -10
+KPX kcommaaccent ocircumflex -10
+KPX kcommaaccent odieresis -10
+KPX kcommaaccent ograve -10
+KPX kcommaaccent ohungarumlaut -10
+KPX kcommaaccent omacron -10
+KPX kcommaaccent oslash -10
+KPX kcommaaccent otilde -10
+KPX kcommaaccent y -10
+KPX kcommaaccent yacute -10
+KPX kcommaaccent ydieresis -10
+KPX n v -40
+KPX nacute v -40
+KPX ncaron v -40
+KPX ncommaaccent v -40
+KPX ntilde v -40
+KPX o g -10
+KPX o gbreve -10
+KPX o gcommaaccent -10
+KPX o v -10
+KPX oacute g -10
+KPX oacute gbreve -10
+KPX oacute gcommaaccent -10
+KPX oacute v -10
+KPX ocircumflex g -10
+KPX ocircumflex gbreve -10
+KPX ocircumflex gcommaaccent -10
+KPX ocircumflex v -10
+KPX odieresis g -10
+KPX odieresis gbreve -10
+KPX odieresis gcommaaccent -10
+KPX odieresis v -10
+KPX ograve g -10
+KPX ograve gbreve -10
+KPX ograve gcommaaccent -10
+KPX ograve v -10
+KPX ohungarumlaut g -10
+KPX ohungarumlaut gbreve -10
+KPX ohungarumlaut gcommaaccent -10
+KPX ohungarumlaut v -10
+KPX omacron g -10
+KPX omacron gbreve -10
+KPX omacron gcommaaccent -10
+KPX omacron v -10
+KPX oslash g -10
+KPX oslash gbreve -10
+KPX oslash gcommaaccent -10
+KPX oslash v -10
+KPX otilde g -10
+KPX otilde gbreve -10
+KPX otilde gcommaaccent -10
+KPX otilde v -10
+KPX period quotedblright -140
+KPX period quoteright -140
+KPX quoteleft quoteleft -111
+KPX quoteright d -25
+KPX quoteright dcroat -25
+KPX quoteright quoteright -111
+KPX quoteright r -25
+KPX quoteright racute -25
+KPX quoteright rcaron -25
+KPX quoteright rcommaaccent -25
+KPX quoteright s -40
+KPX quoteright sacute -40
+KPX quoteright scaron -40
+KPX quoteright scedilla -40
+KPX quoteright scommaaccent -40
+KPX quoteright space -111
+KPX quoteright t -30
+KPX quoteright tcommaaccent -30
+KPX quoteright v -10
+KPX r a -15
+KPX r aacute -15
+KPX r abreve -15
+KPX r acircumflex -15
+KPX r adieresis -15
+KPX r agrave -15
+KPX r amacron -15
+KPX r aogonek -15
+KPX r aring -15
+KPX r atilde -15
+KPX r c -37
+KPX r cacute -37
+KPX r ccaron -37
+KPX r ccedilla -37
+KPX r comma -111
+KPX r d -37
+KPX r dcroat -37
+KPX r e -37
+KPX r eacute -37
+KPX r ecaron -37
+KPX r ecircumflex -37
+KPX r edieresis -37
+KPX r edotaccent -37
+KPX r egrave -37
+KPX r emacron -37
+KPX r eogonek -37
+KPX r g -37
+KPX r gbreve -37
+KPX r gcommaaccent -37
+KPX r hyphen -20
+KPX r o -45
+KPX r oacute -45
+KPX r ocircumflex -45
+KPX r odieresis -45
+KPX r ograve -45
+KPX r ohungarumlaut -45
+KPX r omacron -45
+KPX r oslash -45
+KPX r otilde -45
+KPX r period -111
+KPX r q -37
+KPX r s -10
+KPX r sacute -10
+KPX r scaron -10
+KPX r scedilla -10
+KPX r scommaaccent -10
+KPX racute a -15
+KPX racute aacute -15
+KPX racute abreve -15
+KPX racute acircumflex -15
+KPX racute adieresis -15
+KPX racute agrave -15
+KPX racute amacron -15
+KPX racute aogonek -15
+KPX racute aring -15
+KPX racute atilde -15
+KPX racute c -37
+KPX racute cacute -37
+KPX racute ccaron -37
+KPX racute ccedilla -37
+KPX racute comma -111
+KPX racute d -37
+KPX racute dcroat -37
+KPX racute e -37
+KPX racute eacute -37
+KPX racute ecaron -37
+KPX racute ecircumflex -37
+KPX racute edieresis -37
+KPX racute edotaccent -37
+KPX racute egrave -37
+KPX racute emacron -37
+KPX racute eogonek -37
+KPX racute g -37
+KPX racute gbreve -37
+KPX racute gcommaaccent -37
+KPX racute hyphen -20
+KPX racute o -45
+KPX racute oacute -45
+KPX racute ocircumflex -45
+KPX racute odieresis -45
+KPX racute ograve -45
+KPX racute ohungarumlaut -45
+KPX racute omacron -45
+KPX racute oslash -45
+KPX racute otilde -45
+KPX racute period -111
+KPX racute q -37
+KPX racute s -10
+KPX racute sacute -10
+KPX racute scaron -10
+KPX racute scedilla -10
+KPX racute scommaaccent -10
+KPX rcaron a -15
+KPX rcaron aacute -15
+KPX rcaron abreve -15
+KPX rcaron acircumflex -15
+KPX rcaron adieresis -15
+KPX rcaron agrave -15
+KPX rcaron amacron -15
+KPX rcaron aogonek -15
+KPX rcaron aring -15
+KPX rcaron atilde -15
+KPX rcaron c -37
+KPX rcaron cacute -37
+KPX rcaron ccaron -37
+KPX rcaron ccedilla -37
+KPX rcaron comma -111
+KPX rcaron d -37
+KPX rcaron dcroat -37
+KPX rcaron e -37
+KPX rcaron eacute -37
+KPX rcaron ecaron -37
+KPX rcaron ecircumflex -37
+KPX rcaron edieresis -37
+KPX rcaron edotaccent -37
+KPX rcaron egrave -37
+KPX rcaron emacron -37
+KPX rcaron eogonek -37
+KPX rcaron g -37
+KPX rcaron gbreve -37
+KPX rcaron gcommaaccent -37
+KPX rcaron hyphen -20
+KPX rcaron o -45
+KPX rcaron oacute -45
+KPX rcaron ocircumflex -45
+KPX rcaron odieresis -45
+KPX rcaron ograve -45
+KPX rcaron ohungarumlaut -45
+KPX rcaron omacron -45
+KPX rcaron oslash -45
+KPX rcaron otilde -45
+KPX rcaron period -111
+KPX rcaron q -37
+KPX rcaron s -10
+KPX rcaron sacute -10
+KPX rcaron scaron -10
+KPX rcaron scedilla -10
+KPX rcaron scommaaccent -10
+KPX rcommaaccent a -15
+KPX rcommaaccent aacute -15
+KPX rcommaaccent abreve -15
+KPX rcommaaccent acircumflex -15
+KPX rcommaaccent adieresis -15
+KPX rcommaaccent agrave -15
+KPX rcommaaccent amacron -15
+KPX rcommaaccent aogonek -15
+KPX rcommaaccent aring -15
+KPX rcommaaccent atilde -15
+KPX rcommaaccent c -37
+KPX rcommaaccent cacute -37
+KPX rcommaaccent ccaron -37
+KPX rcommaaccent ccedilla -37
+KPX rcommaaccent comma -111
+KPX rcommaaccent d -37
+KPX rcommaaccent dcroat -37
+KPX rcommaaccent e -37
+KPX rcommaaccent eacute -37
+KPX rcommaaccent ecaron -37
+KPX rcommaaccent ecircumflex -37
+KPX rcommaaccent edieresis -37
+KPX rcommaaccent edotaccent -37
+KPX rcommaaccent egrave -37
+KPX rcommaaccent emacron -37
+KPX rcommaaccent eogonek -37
+KPX rcommaaccent g -37
+KPX rcommaaccent gbreve -37
+KPX rcommaaccent gcommaaccent -37
+KPX rcommaaccent hyphen -20
+KPX rcommaaccent o -45
+KPX rcommaaccent oacute -45
+KPX rcommaaccent ocircumflex -45
+KPX rcommaaccent odieresis -45
+KPX rcommaaccent ograve -45
+KPX rcommaaccent ohungarumlaut -45
+KPX rcommaaccent omacron -45
+KPX rcommaaccent oslash -45
+KPX rcommaaccent otilde -45
+KPX rcommaaccent period -111
+KPX rcommaaccent q -37
+KPX rcommaaccent s -10
+KPX rcommaaccent sacute -10
+KPX rcommaaccent scaron -10
+KPX rcommaaccent scedilla -10
+KPX rcommaaccent scommaaccent -10
+KPX space A -18
+KPX space Aacute -18
+KPX space Abreve -18
+KPX space Acircumflex -18
+KPX space Adieresis -18
+KPX space Agrave -18
+KPX space Amacron -18
+KPX space Aogonek -18
+KPX space Aring -18
+KPX space Atilde -18
+KPX space T -18
+KPX space Tcaron -18
+KPX space Tcommaaccent -18
+KPX space V -35
+KPX space W -40
+KPX space Y -75
+KPX space Yacute -75
+KPX space Ydieresis -75
+KPX v comma -74
+KPX v period -74
+KPX w comma -74
+KPX w period -74
+KPX y comma -55
+KPX y period -55
+KPX yacute comma -55
+KPX yacute period -55
+KPX ydieresis comma -55
+KPX ydieresis period -55
+EndKernPairs
+EndKernData
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/mustRead.html
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/mustRead.html	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/mustRead.html	(revision 2000)
@@ -0,0 +1,17 @@
+<html>
+	<head>
+		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+		<meta name="generator" content="Adobe GoLive 4">
+		<title>Core 14 AFM Files - ReadMe</title>
+	</head>
+	<body bgcolor="white">
+		<font color="white">or</font>
+		<table border="0" cellpadding="0" cellspacing="2">
+			<tr>
+				<td width="40"></td>
+				<td width="300">This file and the 14 PostScript(R) AFM files it accompanies may be used, copied, and distributed for any purpose and without charge, with or without modification, provided that all copyright notices are retained; that the AFM files are not distributed without this file; that all modifications to this file or any of the AFM files are prominently noted in the modified file(s); and that this paragraph is not modified. Adobe Systems has no responsibility or obligation to support the use of the AFM files. <font color="white">Col</font></td>
+			</tr>
+		</table>
+		<p>Source <a href="http://www.adobe.com/devnet/font/#pcfi">http://www.adobe.com/devnet/font/#pcfi</a></p>
+</body>
+</html>
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Times-BoldItalic.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Times-BoldItalic.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Times-BoldItalic.afm	(revision 2000)
@@ -0,0 +1,2384 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+Comment Creation Date: Thu May  1 13:04:06 1997
+Comment UniqueID 43066
+Comment VMusage 45874 56899
+FontName Times-BoldItalic
+FullName Times Bold Italic
+FamilyName Times
+Weight Bold
+ItalicAngle -15
+IsFixedPitch false
+CharacterSet ExtendedRoman
+FontBBox -200 -218 996 921 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 002.000
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 669
+XHeight 462
+Ascender 683
+Descender -217
+StdHW 42
+StdVW 121
+StartCharMetrics 315
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 389 ; N exclam ; B 67 -13 370 684 ;
+C 34 ; WX 555 ; N quotedbl ; B 136 398 536 685 ;
+C 35 ; WX 500 ; N numbersign ; B -33 0 533 700 ;
+C 36 ; WX 500 ; N dollar ; B -20 -100 497 733 ;
+C 37 ; WX 833 ; N percent ; B 39 -10 793 692 ;
+C 38 ; WX 778 ; N ampersand ; B 5 -19 699 682 ;
+C 39 ; WX 333 ; N quoteright ; B 98 369 302 685 ;
+C 40 ; WX 333 ; N parenleft ; B 28 -179 344 685 ;
+C 41 ; WX 333 ; N parenright ; B -44 -179 271 685 ;
+C 42 ; WX 500 ; N asterisk ; B 65 249 456 685 ;
+C 43 ; WX 570 ; N plus ; B 33 0 537 506 ;
+C 44 ; WX 250 ; N comma ; B -60 -182 144 134 ;
+C 45 ; WX 333 ; N hyphen ; B 2 166 271 282 ;
+C 46 ; WX 250 ; N period ; B -9 -13 139 135 ;
+C 47 ; WX 278 ; N slash ; B -64 -18 342 685 ;
+C 48 ; WX 500 ; N zero ; B 17 -14 477 683 ;
+C 49 ; WX 500 ; N one ; B 5 0 419 683 ;
+C 50 ; WX 500 ; N two ; B -27 0 446 683 ;
+C 51 ; WX 500 ; N three ; B -15 -13 450 683 ;
+C 52 ; WX 500 ; N four ; B -15 0 503 683 ;
+C 53 ; WX 500 ; N five ; B -11 -13 487 669 ;
+C 54 ; WX 500 ; N six ; B 23 -15 509 679 ;
+C 55 ; WX 500 ; N seven ; B 52 0 525 669 ;
+C 56 ; WX 500 ; N eight ; B 3 -13 476 683 ;
+C 57 ; WX 500 ; N nine ; B -12 -10 475 683 ;
+C 58 ; WX 333 ; N colon ; B 23 -13 264 459 ;
+C 59 ; WX 333 ; N semicolon ; B -25 -183 264 459 ;
+C 60 ; WX 570 ; N less ; B 31 -8 539 514 ;
+C 61 ; WX 570 ; N equal ; B 33 107 537 399 ;
+C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ;
+C 63 ; WX 500 ; N question ; B 79 -13 470 684 ;
+C 64 ; WX 832 ; N at ; B 63 -18 770 685 ;
+C 65 ; WX 667 ; N A ; B -67 0 593 683 ;
+C 66 ; WX 667 ; N B ; B -24 0 624 669 ;
+C 67 ; WX 667 ; N C ; B 32 -18 677 685 ;
+C 68 ; WX 722 ; N D ; B -46 0 685 669 ;
+C 69 ; WX 667 ; N E ; B -27 0 653 669 ;
+C 70 ; WX 667 ; N F ; B -13 0 660 669 ;
+C 71 ; WX 722 ; N G ; B 21 -18 706 685 ;
+C 72 ; WX 778 ; N H ; B -24 0 799 669 ;
+C 73 ; WX 389 ; N I ; B -32 0 406 669 ;
+C 74 ; WX 500 ; N J ; B -46 -99 524 669 ;
+C 75 ; WX 667 ; N K ; B -21 0 702 669 ;
+C 76 ; WX 611 ; N L ; B -22 0 590 669 ;
+C 77 ; WX 889 ; N M ; B -29 -12 917 669 ;
+C 78 ; WX 722 ; N N ; B -27 -15 748 669 ;
+C 79 ; WX 722 ; N O ; B 27 -18 691 685 ;
+C 80 ; WX 611 ; N P ; B -27 0 613 669 ;
+C 81 ; WX 722 ; N Q ; B 27 -208 691 685 ;
+C 82 ; WX 667 ; N R ; B -29 0 623 669 ;
+C 83 ; WX 556 ; N S ; B 2 -18 526 685 ;
+C 84 ; WX 611 ; N T ; B 50 0 650 669 ;
+C 85 ; WX 722 ; N U ; B 67 -18 744 669 ;
+C 86 ; WX 667 ; N V ; B 65 -18 715 669 ;
+C 87 ; WX 889 ; N W ; B 65 -18 940 669 ;
+C 88 ; WX 667 ; N X ; B -24 0 694 669 ;
+C 89 ; WX 611 ; N Y ; B 73 0 659 669 ;
+C 90 ; WX 611 ; N Z ; B -11 0 590 669 ;
+C 91 ; WX 333 ; N bracketleft ; B -37 -159 362 674 ;
+C 92 ; WX 278 ; N backslash ; B -1 -18 279 685 ;
+C 93 ; WX 333 ; N bracketright ; B -56 -157 343 674 ;
+C 94 ; WX 570 ; N asciicircum ; B 67 304 503 669 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 333 ; N quoteleft ; B 128 369 332 685 ;
+C 97 ; WX 500 ; N a ; B -21 -14 455 462 ;
+C 98 ; WX 500 ; N b ; B -14 -13 444 699 ;
+C 99 ; WX 444 ; N c ; B -5 -13 392 462 ;
+C 100 ; WX 500 ; N d ; B -21 -13 517 699 ;
+C 101 ; WX 444 ; N e ; B 5 -13 398 462 ;
+C 102 ; WX 333 ; N f ; B -169 -205 446 698 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B -52 -203 478 462 ;
+C 104 ; WX 556 ; N h ; B -13 -9 498 699 ;
+C 105 ; WX 278 ; N i ; B 2 -9 263 684 ;
+C 106 ; WX 278 ; N j ; B -189 -207 279 684 ;
+C 107 ; WX 500 ; N k ; B -23 -8 483 699 ;
+C 108 ; WX 278 ; N l ; B 2 -9 290 699 ;
+C 109 ; WX 778 ; N m ; B -14 -9 722 462 ;
+C 110 ; WX 556 ; N n ; B -6 -9 493 462 ;
+C 111 ; WX 500 ; N o ; B -3 -13 441 462 ;
+C 112 ; WX 500 ; N p ; B -120 -205 446 462 ;
+C 113 ; WX 500 ; N q ; B 1 -205 471 462 ;
+C 114 ; WX 389 ; N r ; B -21 0 389 462 ;
+C 115 ; WX 389 ; N s ; B -19 -13 333 462 ;
+C 116 ; WX 278 ; N t ; B -11 -9 281 594 ;
+C 117 ; WX 556 ; N u ; B 15 -9 492 462 ;
+C 118 ; WX 444 ; N v ; B 16 -13 401 462 ;
+C 119 ; WX 667 ; N w ; B 16 -13 614 462 ;
+C 120 ; WX 500 ; N x ; B -46 -13 469 462 ;
+C 121 ; WX 444 ; N y ; B -94 -205 392 462 ;
+C 122 ; WX 389 ; N z ; B -43 -78 368 449 ;
+C 123 ; WX 348 ; N braceleft ; B 5 -187 436 686 ;
+C 124 ; WX 220 ; N bar ; B 66 -218 154 782 ;
+C 125 ; WX 348 ; N braceright ; B -129 -187 302 686 ;
+C 126 ; WX 570 ; N asciitilde ; B 54 173 516 333 ;
+C 161 ; WX 389 ; N exclamdown ; B 19 -205 322 492 ;
+C 162 ; WX 500 ; N cent ; B 42 -143 439 576 ;
+C 163 ; WX 500 ; N sterling ; B -32 -12 510 683 ;
+C 164 ; WX 167 ; N fraction ; B -169 -14 324 683 ;
+C 165 ; WX 500 ; N yen ; B 33 0 628 669 ;
+C 166 ; WX 500 ; N florin ; B -87 -156 537 707 ;
+C 167 ; WX 500 ; N section ; B 36 -143 459 685 ;
+C 168 ; WX 500 ; N currency ; B -26 34 526 586 ;
+C 169 ; WX 278 ; N quotesingle ; B 128 398 268 685 ;
+C 170 ; WX 500 ; N quotedblleft ; B 53 369 513 685 ;
+C 171 ; WX 500 ; N guillemotleft ; B 12 32 468 415 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 32 32 303 415 ;
+C 173 ; WX 333 ; N guilsinglright ; B 10 32 281 415 ;
+C 174 ; WX 556 ; N fi ; B -188 -205 514 703 ;
+C 175 ; WX 556 ; N fl ; B -186 -205 553 704 ;
+C 177 ; WX 500 ; N endash ; B -40 178 477 269 ;
+C 178 ; WX 500 ; N dagger ; B 91 -145 494 685 ;
+C 179 ; WX 500 ; N daggerdbl ; B 10 -139 493 685 ;
+C 180 ; WX 250 ; N periodcentered ; B 51 257 199 405 ;
+C 182 ; WX 500 ; N paragraph ; B -57 -193 562 669 ;
+C 183 ; WX 350 ; N bullet ; B 0 175 350 525 ;
+C 184 ; WX 333 ; N quotesinglbase ; B -5 -182 199 134 ;
+C 185 ; WX 500 ; N quotedblbase ; B -57 -182 403 134 ;
+C 186 ; WX 500 ; N quotedblright ; B 53 369 513 685 ;
+C 187 ; WX 500 ; N guillemotright ; B 12 32 468 415 ;
+C 188 ; WX 1000 ; N ellipsis ; B 40 -13 852 135 ;
+C 189 ; WX 1000 ; N perthousand ; B 7 -29 996 706 ;
+C 191 ; WX 500 ; N questiondown ; B 30 -205 421 492 ;
+C 193 ; WX 333 ; N grave ; B 85 516 297 697 ;
+C 194 ; WX 333 ; N acute ; B 139 516 379 697 ;
+C 195 ; WX 333 ; N circumflex ; B 40 516 367 690 ;
+C 196 ; WX 333 ; N tilde ; B 48 536 407 655 ;
+C 197 ; WX 333 ; N macron ; B 51 553 393 623 ;
+C 198 ; WX 333 ; N breve ; B 71 516 387 678 ;
+C 199 ; WX 333 ; N dotaccent ; B 163 550 298 684 ;
+C 200 ; WX 333 ; N dieresis ; B 55 550 402 684 ;
+C 202 ; WX 333 ; N ring ; B 127 516 340 729 ;
+C 203 ; WX 333 ; N cedilla ; B -80 -218 156 5 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 69 516 498 697 ;
+C 206 ; WX 333 ; N ogonek ; B 15 -183 244 34 ;
+C 207 ; WX 333 ; N caron ; B 79 516 411 690 ;
+C 208 ; WX 1000 ; N emdash ; B -40 178 977 269 ;
+C 225 ; WX 944 ; N AE ; B -64 0 918 669 ;
+C 227 ; WX 266 ; N ordfeminine ; B 16 399 330 685 ;
+C 232 ; WX 611 ; N Lslash ; B -22 0 590 669 ;
+C 233 ; WX 722 ; N Oslash ; B 27 -125 691 764 ;
+C 234 ; WX 944 ; N OE ; B 23 -8 946 677 ;
+C 235 ; WX 300 ; N ordmasculine ; B 56 400 347 685 ;
+C 241 ; WX 722 ; N ae ; B -5 -13 673 462 ;
+C 245 ; WX 278 ; N dotlessi ; B 2 -9 238 462 ;
+C 248 ; WX 278 ; N lslash ; B -7 -9 307 699 ;
+C 249 ; WX 500 ; N oslash ; B -3 -119 441 560 ;
+C 250 ; WX 722 ; N oe ; B 6 -13 674 462 ;
+C 251 ; WX 500 ; N germandbls ; B -200 -200 473 705 ;
+C -1 ; WX 389 ; N Idieresis ; B -32 0 450 862 ;
+C -1 ; WX 444 ; N eacute ; B 5 -13 435 697 ;
+C -1 ; WX 500 ; N abreve ; B -21 -14 471 678 ;
+C -1 ; WX 556 ; N uhungarumlaut ; B 15 -9 610 697 ;
+C -1 ; WX 444 ; N ecaron ; B 5 -13 467 690 ;
+C -1 ; WX 611 ; N Ydieresis ; B 73 0 659 862 ;
+C -1 ; WX 570 ; N divide ; B 33 -29 537 535 ;
+C -1 ; WX 611 ; N Yacute ; B 73 0 659 904 ;
+C -1 ; WX 667 ; N Acircumflex ; B -67 0 593 897 ;
+C -1 ; WX 500 ; N aacute ; B -21 -14 463 697 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 67 -18 744 897 ;
+C -1 ; WX 444 ; N yacute ; B -94 -205 435 697 ;
+C -1 ; WX 389 ; N scommaaccent ; B -19 -218 333 462 ;
+C -1 ; WX 444 ; N ecircumflex ; B 5 -13 423 690 ;
+C -1 ; WX 722 ; N Uring ; B 67 -18 744 921 ;
+C -1 ; WX 722 ; N Udieresis ; B 67 -18 744 862 ;
+C -1 ; WX 500 ; N aogonek ; B -21 -183 455 462 ;
+C -1 ; WX 722 ; N Uacute ; B 67 -18 744 904 ;
+C -1 ; WX 556 ; N uogonek ; B 15 -183 492 462 ;
+C -1 ; WX 667 ; N Edieresis ; B -27 0 653 862 ;
+C -1 ; WX 722 ; N Dcroat ; B -31 0 700 669 ;
+C -1 ; WX 250 ; N commaaccent ; B -36 -218 131 -50 ;
+C -1 ; WX 747 ; N copyright ; B 30 -18 718 685 ;
+C -1 ; WX 667 ; N Emacron ; B -27 0 653 830 ;
+C -1 ; WX 444 ; N ccaron ; B -5 -13 467 690 ;
+C -1 ; WX 500 ; N aring ; B -21 -14 455 729 ;
+C -1 ; WX 722 ; N Ncommaaccent ; B -27 -218 748 669 ;
+C -1 ; WX 278 ; N lacute ; B 2 -9 392 904 ;
+C -1 ; WX 500 ; N agrave ; B -21 -14 455 697 ;
+C -1 ; WX 611 ; N Tcommaaccent ; B 50 -218 650 669 ;
+C -1 ; WX 667 ; N Cacute ; B 32 -18 677 904 ;
+C -1 ; WX 500 ; N atilde ; B -21 -14 491 655 ;
+C -1 ; WX 667 ; N Edotaccent ; B -27 0 653 862 ;
+C -1 ; WX 389 ; N scaron ; B -19 -13 424 690 ;
+C -1 ; WX 389 ; N scedilla ; B -19 -218 333 462 ;
+C -1 ; WX 278 ; N iacute ; B 2 -9 352 697 ;
+C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ;
+C -1 ; WX 667 ; N Rcaron ; B -29 0 623 897 ;
+C -1 ; WX 722 ; N Gcommaaccent ; B 21 -218 706 685 ;
+C -1 ; WX 556 ; N ucircumflex ; B 15 -9 492 690 ;
+C -1 ; WX 500 ; N acircumflex ; B -21 -14 455 690 ;
+C -1 ; WX 667 ; N Amacron ; B -67 0 593 830 ;
+C -1 ; WX 389 ; N rcaron ; B -21 0 424 690 ;
+C -1 ; WX 444 ; N ccedilla ; B -5 -218 392 462 ;
+C -1 ; WX 611 ; N Zdotaccent ; B -11 0 590 862 ;
+C -1 ; WX 611 ; N Thorn ; B -27 0 573 669 ;
+C -1 ; WX 722 ; N Omacron ; B 27 -18 691 830 ;
+C -1 ; WX 667 ; N Racute ; B -29 0 623 904 ;
+C -1 ; WX 556 ; N Sacute ; B 2 -18 531 904 ;
+C -1 ; WX 608 ; N dcaron ; B -21 -13 675 708 ;
+C -1 ; WX 722 ; N Umacron ; B 67 -18 744 830 ;
+C -1 ; WX 556 ; N uring ; B 15 -9 492 729 ;
+C -1 ; WX 300 ; N threesuperior ; B 17 265 321 683 ;
+C -1 ; WX 722 ; N Ograve ; B 27 -18 691 904 ;
+C -1 ; WX 667 ; N Agrave ; B -67 0 593 904 ;
+C -1 ; WX 667 ; N Abreve ; B -67 0 593 885 ;
+C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ;
+C -1 ; WX 556 ; N uacute ; B 15 -9 492 697 ;
+C -1 ; WX 611 ; N Tcaron ; B 50 0 650 897 ;
+C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ;
+C -1 ; WX 444 ; N ydieresis ; B -94 -205 443 655 ;
+C -1 ; WX 722 ; N Nacute ; B -27 -15 748 904 ;
+C -1 ; WX 278 ; N icircumflex ; B -3 -9 324 690 ;
+C -1 ; WX 667 ; N Ecircumflex ; B -27 0 653 897 ;
+C -1 ; WX 500 ; N adieresis ; B -21 -14 476 655 ;
+C -1 ; WX 444 ; N edieresis ; B 5 -13 448 655 ;
+C -1 ; WX 444 ; N cacute ; B -5 -13 435 697 ;
+C -1 ; WX 556 ; N nacute ; B -6 -9 493 697 ;
+C -1 ; WX 556 ; N umacron ; B 15 -9 492 623 ;
+C -1 ; WX 722 ; N Ncaron ; B -27 -15 748 897 ;
+C -1 ; WX 389 ; N Iacute ; B -32 0 432 904 ;
+C -1 ; WX 570 ; N plusminus ; B 33 0 537 506 ;
+C -1 ; WX 220 ; N brokenbar ; B 66 -143 154 707 ;
+C -1 ; WX 747 ; N registered ; B 30 -18 718 685 ;
+C -1 ; WX 722 ; N Gbreve ; B 21 -18 706 885 ;
+C -1 ; WX 389 ; N Idotaccent ; B -32 0 406 862 ;
+C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ;
+C -1 ; WX 667 ; N Egrave ; B -27 0 653 904 ;
+C -1 ; WX 389 ; N racute ; B -21 0 407 697 ;
+C -1 ; WX 500 ; N omacron ; B -3 -13 462 623 ;
+C -1 ; WX 611 ; N Zacute ; B -11 0 590 904 ;
+C -1 ; WX 611 ; N Zcaron ; B -11 0 590 897 ;
+C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ;
+C -1 ; WX 722 ; N Eth ; B -31 0 700 669 ;
+C -1 ; WX 667 ; N Ccedilla ; B 32 -218 677 685 ;
+C -1 ; WX 278 ; N lcommaaccent ; B -42 -218 290 699 ;
+C -1 ; WX 366 ; N tcaron ; B -11 -9 434 754 ;
+C -1 ; WX 444 ; N eogonek ; B 5 -183 398 462 ;
+C -1 ; WX 722 ; N Uogonek ; B 67 -183 744 669 ;
+C -1 ; WX 667 ; N Aacute ; B -67 0 593 904 ;
+C -1 ; WX 667 ; N Adieresis ; B -67 0 593 862 ;
+C -1 ; WX 444 ; N egrave ; B 5 -13 398 697 ;
+C -1 ; WX 389 ; N zacute ; B -43 -78 407 697 ;
+C -1 ; WX 278 ; N iogonek ; B -20 -183 263 684 ;
+C -1 ; WX 722 ; N Oacute ; B 27 -18 691 904 ;
+C -1 ; WX 500 ; N oacute ; B -3 -13 463 697 ;
+C -1 ; WX 500 ; N amacron ; B -21 -14 467 623 ;
+C -1 ; WX 389 ; N sacute ; B -19 -13 407 697 ;
+C -1 ; WX 278 ; N idieresis ; B 2 -9 364 655 ;
+C -1 ; WX 722 ; N Ocircumflex ; B 27 -18 691 897 ;
+C -1 ; WX 722 ; N Ugrave ; B 67 -18 744 904 ;
+C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
+C -1 ; WX 500 ; N thorn ; B -120 -205 446 699 ;
+C -1 ; WX 300 ; N twosuperior ; B 2 274 313 683 ;
+C -1 ; WX 722 ; N Odieresis ; B 27 -18 691 862 ;
+C -1 ; WX 576 ; N mu ; B -60 -207 516 449 ;
+C -1 ; WX 278 ; N igrave ; B 2 -9 259 697 ;
+C -1 ; WX 500 ; N ohungarumlaut ; B -3 -13 582 697 ;
+C -1 ; WX 667 ; N Eogonek ; B -27 -183 653 669 ;
+C -1 ; WX 500 ; N dcroat ; B -21 -13 552 699 ;
+C -1 ; WX 750 ; N threequarters ; B 7 -14 726 683 ;
+C -1 ; WX 556 ; N Scedilla ; B 2 -218 526 685 ;
+C -1 ; WX 382 ; N lcaron ; B 2 -9 448 708 ;
+C -1 ; WX 667 ; N Kcommaaccent ; B -21 -218 702 669 ;
+C -1 ; WX 611 ; N Lacute ; B -22 0 590 904 ;
+C -1 ; WX 1000 ; N trademark ; B 32 263 968 669 ;
+C -1 ; WX 444 ; N edotaccent ; B 5 -13 398 655 ;
+C -1 ; WX 389 ; N Igrave ; B -32 0 406 904 ;
+C -1 ; WX 389 ; N Imacron ; B -32 0 461 830 ;
+C -1 ; WX 611 ; N Lcaron ; B -22 0 671 718 ;
+C -1 ; WX 750 ; N onehalf ; B -9 -14 723 683 ;
+C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ;
+C -1 ; WX 500 ; N ocircumflex ; B -3 -13 451 690 ;
+C -1 ; WX 556 ; N ntilde ; B -6 -9 504 655 ;
+C -1 ; WX 722 ; N Uhungarumlaut ; B 67 -18 744 904 ;
+C -1 ; WX 667 ; N Eacute ; B -27 0 653 904 ;
+C -1 ; WX 444 ; N emacron ; B 5 -13 439 623 ;
+C -1 ; WX 500 ; N gbreve ; B -52 -203 478 678 ;
+C -1 ; WX 750 ; N onequarter ; B 7 -14 721 683 ;
+C -1 ; WX 556 ; N Scaron ; B 2 -18 553 897 ;
+C -1 ; WX 556 ; N Scommaaccent ; B 2 -218 526 685 ;
+C -1 ; WX 722 ; N Ohungarumlaut ; B 27 -18 723 904 ;
+C -1 ; WX 400 ; N degree ; B 83 397 369 683 ;
+C -1 ; WX 500 ; N ograve ; B -3 -13 441 697 ;
+C -1 ; WX 667 ; N Ccaron ; B 32 -18 677 897 ;
+C -1 ; WX 556 ; N ugrave ; B 15 -9 492 697 ;
+C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ;
+C -1 ; WX 722 ; N Dcaron ; B -46 0 685 897 ;
+C -1 ; WX 389 ; N rcommaaccent ; B -67 -218 389 462 ;
+C -1 ; WX 722 ; N Ntilde ; B -27 -15 748 862 ;
+C -1 ; WX 500 ; N otilde ; B -3 -13 491 655 ;
+C -1 ; WX 667 ; N Rcommaaccent ; B -29 -218 623 669 ;
+C -1 ; WX 611 ; N Lcommaaccent ; B -22 -218 590 669 ;
+C -1 ; WX 667 ; N Atilde ; B -67 0 593 862 ;
+C -1 ; WX 667 ; N Aogonek ; B -67 -183 604 683 ;
+C -1 ; WX 667 ; N Aring ; B -67 0 593 921 ;
+C -1 ; WX 722 ; N Otilde ; B 27 -18 691 862 ;
+C -1 ; WX 389 ; N zdotaccent ; B -43 -78 368 655 ;
+C -1 ; WX 667 ; N Ecaron ; B -27 0 653 897 ;
+C -1 ; WX 389 ; N Iogonek ; B -32 -183 406 669 ;
+C -1 ; WX 500 ; N kcommaaccent ; B -23 -218 483 699 ;
+C -1 ; WX 606 ; N minus ; B 51 209 555 297 ;
+C -1 ; WX 389 ; N Icircumflex ; B -32 0 450 897 ;
+C -1 ; WX 556 ; N ncaron ; B -6 -9 523 690 ;
+C -1 ; WX 278 ; N tcommaaccent ; B -62 -218 281 594 ;
+C -1 ; WX 606 ; N logicalnot ; B 51 108 555 399 ;
+C -1 ; WX 500 ; N odieresis ; B -3 -13 471 655 ;
+C -1 ; WX 556 ; N udieresis ; B 15 -9 499 655 ;
+C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ;
+C -1 ; WX 500 ; N gcommaaccent ; B -52 -203 478 767 ;
+C -1 ; WX 500 ; N eth ; B -3 -13 454 699 ;
+C -1 ; WX 389 ; N zcaron ; B -43 -78 424 690 ;
+C -1 ; WX 556 ; N ncommaaccent ; B -6 -218 493 462 ;
+C -1 ; WX 300 ; N onesuperior ; B 30 274 301 683 ;
+C -1 ; WX 278 ; N imacron ; B 2 -9 294 623 ;
+C -1 ; WX 500 ; N Euro ; B 0 0 0 0 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 2038
+KPX A C -65
+KPX A Cacute -65
+KPX A Ccaron -65
+KPX A Ccedilla -65
+KPX A G -60
+KPX A Gbreve -60
+KPX A Gcommaaccent -60
+KPX A O -50
+KPX A Oacute -50
+KPX A Ocircumflex -50
+KPX A Odieresis -50
+KPX A Ograve -50
+KPX A Ohungarumlaut -50
+KPX A Omacron -50
+KPX A Oslash -50
+KPX A Otilde -50
+KPX A Q -55
+KPX A T -55
+KPX A Tcaron -55
+KPX A Tcommaaccent -55
+KPX A U -50
+KPX A Uacute -50
+KPX A Ucircumflex -50
+KPX A Udieresis -50
+KPX A Ugrave -50
+KPX A Uhungarumlaut -50
+KPX A Umacron -50
+KPX A Uogonek -50
+KPX A Uring -50
+KPX A V -95
+KPX A W -100
+KPX A Y -70
+KPX A Yacute -70
+KPX A Ydieresis -70
+KPX A quoteright -74
+KPX A u -30
+KPX A uacute -30
+KPX A ucircumflex -30
+KPX A udieresis -30
+KPX A ugrave -30
+KPX A uhungarumlaut -30
+KPX A umacron -30
+KPX A uogonek -30
+KPX A uring -30
+KPX A v -74
+KPX A w -74
+KPX A y -74
+KPX A yacute -74
+KPX A ydieresis -74
+KPX Aacute C -65
+KPX Aacute Cacute -65
+KPX Aacute Ccaron -65
+KPX Aacute Ccedilla -65
+KPX Aacute G -60
+KPX Aacute Gbreve -60
+KPX Aacute Gcommaaccent -60
+KPX Aacute O -50
+KPX Aacute Oacute -50
+KPX Aacute Ocircumflex -50
+KPX Aacute Odieresis -50
+KPX Aacute Ograve -50
+KPX Aacute Ohungarumlaut -50
+KPX Aacute Omacron -50
+KPX Aacute Oslash -50
+KPX Aacute Otilde -50
+KPX Aacute Q -55
+KPX Aacute T -55
+KPX Aacute Tcaron -55
+KPX Aacute Tcommaaccent -55
+KPX Aacute U -50
+KPX Aacute Uacute -50
+KPX Aacute Ucircumflex -50
+KPX Aacute Udieresis -50
+KPX Aacute Ugrave -50
+KPX Aacute Uhungarumlaut -50
+KPX Aacute Umacron -50
+KPX Aacute Uogonek -50
+KPX Aacute Uring -50
+KPX Aacute V -95
+KPX Aacute W -100
+KPX Aacute Y -70
+KPX Aacute Yacute -70
+KPX Aacute Ydieresis -70
+KPX Aacute quoteright -74
+KPX Aacute u -30
+KPX Aacute uacute -30
+KPX Aacute ucircumflex -30
+KPX Aacute udieresis -30
+KPX Aacute ugrave -30
+KPX Aacute uhungarumlaut -30
+KPX Aacute umacron -30
+KPX Aacute uogonek -30
+KPX Aacute uring -30
+KPX Aacute v -74
+KPX Aacute w -74
+KPX Aacute y -74
+KPX Aacute yacute -74
+KPX Aacute ydieresis -74
+KPX Abreve C -65
+KPX Abreve Cacute -65
+KPX Abreve Ccaron -65
+KPX Abreve Ccedilla -65
+KPX Abreve G -60
+KPX Abreve Gbreve -60
+KPX Abreve Gcommaaccent -60
+KPX Abreve O -50
+KPX Abreve Oacute -50
+KPX Abreve Ocircumflex -50
+KPX Abreve Odieresis -50
+KPX Abreve Ograve -50
+KPX Abreve Ohungarumlaut -50
+KPX Abreve Omacron -50
+KPX Abreve Oslash -50
+KPX Abreve Otilde -50
+KPX Abreve Q -55
+KPX Abreve T -55
+KPX Abreve Tcaron -55
+KPX Abreve Tcommaaccent -55
+KPX Abreve U -50
+KPX Abreve Uacute -50
+KPX Abreve Ucircumflex -50
+KPX Abreve Udieresis -50
+KPX Abreve Ugrave -50
+KPX Abreve Uhungarumlaut -50
+KPX Abreve Umacron -50
+KPX Abreve Uogonek -50
+KPX Abreve Uring -50
+KPX Abreve V -95
+KPX Abreve W -100
+KPX Abreve Y -70
+KPX Abreve Yacute -70
+KPX Abreve Ydieresis -70
+KPX Abreve quoteright -74
+KPX Abreve u -30
+KPX Abreve uacute -30
+KPX Abreve ucircumflex -30
+KPX Abreve udieresis -30
+KPX Abreve ugrave -30
+KPX Abreve uhungarumlaut -30
+KPX Abreve umacron -30
+KPX Abreve uogonek -30
+KPX Abreve uring -30
+KPX Abreve v -74
+KPX Abreve w -74
+KPX Abreve y -74
+KPX Abreve yacute -74
+KPX Abreve ydieresis -74
+KPX Acircumflex C -65
+KPX Acircumflex Cacute -65
+KPX Acircumflex Ccaron -65
+KPX Acircumflex Ccedilla -65
+KPX Acircumflex G -60
+KPX Acircumflex Gbreve -60
+KPX Acircumflex Gcommaaccent -60
+KPX Acircumflex O -50
+KPX Acircumflex Oacute -50
+KPX Acircumflex Ocircumflex -50
+KPX Acircumflex Odieresis -50
+KPX Acircumflex Ograve -50
+KPX Acircumflex Ohungarumlaut -50
+KPX Acircumflex Omacron -50
+KPX Acircumflex Oslash -50
+KPX Acircumflex Otilde -50
+KPX Acircumflex Q -55
+KPX Acircumflex T -55
+KPX Acircumflex Tcaron -55
+KPX Acircumflex Tcommaaccent -55
+KPX Acircumflex U -50
+KPX Acircumflex Uacute -50
+KPX Acircumflex Ucircumflex -50
+KPX Acircumflex Udieresis -50
+KPX Acircumflex Ugrave -50
+KPX Acircumflex Uhungarumlaut -50
+KPX Acircumflex Umacron -50
+KPX Acircumflex Uogonek -50
+KPX Acircumflex Uring -50
+KPX Acircumflex V -95
+KPX Acircumflex W -100
+KPX Acircumflex Y -70
+KPX Acircumflex Yacute -70
+KPX Acircumflex Ydieresis -70
+KPX Acircumflex quoteright -74
+KPX Acircumflex u -30
+KPX Acircumflex uacute -30
+KPX Acircumflex ucircumflex -30
+KPX Acircumflex udieresis -30
+KPX Acircumflex ugrave -30
+KPX Acircumflex uhungarumlaut -30
+KPX Acircumflex umacron -30
+KPX Acircumflex uogonek -30
+KPX Acircumflex uring -30
+KPX Acircumflex v -74
+KPX Acircumflex w -74
+KPX Acircumflex y -74
+KPX Acircumflex yacute -74
+KPX Acircumflex ydieresis -74
+KPX Adieresis C -65
+KPX Adieresis Cacute -65
+KPX Adieresis Ccaron -65
+KPX Adieresis Ccedilla -65
+KPX Adieresis G -60
+KPX Adieresis Gbreve -60
+KPX Adieresis Gcommaaccent -60
+KPX Adieresis O -50
+KPX Adieresis Oacute -50
+KPX Adieresis Ocircumflex -50
+KPX Adieresis Odieresis -50
+KPX Adieresis Ograve -50
+KPX Adieresis Ohungarumlaut -50
+KPX Adieresis Omacron -50
+KPX Adieresis Oslash -50
+KPX Adieresis Otilde -50
+KPX Adieresis Q -55
+KPX Adieresis T -55
+KPX Adieresis Tcaron -55
+KPX Adieresis Tcommaaccent -55
+KPX Adieresis U -50
+KPX Adieresis Uacute -50
+KPX Adieresis Ucircumflex -50
+KPX Adieresis Udieresis -50
+KPX Adieresis Ugrave -50
+KPX Adieresis Uhungarumlaut -50
+KPX Adieresis Umacron -50
+KPX Adieresis Uogonek -50
+KPX Adieresis Uring -50
+KPX Adieresis V -95
+KPX Adieresis W -100
+KPX Adieresis Y -70
+KPX Adieresis Yacute -70
+KPX Adieresis Ydieresis -70
+KPX Adieresis quoteright -74
+KPX Adieresis u -30
+KPX Adieresis uacute -30
+KPX Adieresis ucircumflex -30
+KPX Adieresis udieresis -30
+KPX Adieresis ugrave -30
+KPX Adieresis uhungarumlaut -30
+KPX Adieresis umacron -30
+KPX Adieresis uogonek -30
+KPX Adieresis uring -30
+KPX Adieresis v -74
+KPX Adieresis w -74
+KPX Adieresis y -74
+KPX Adieresis yacute -74
+KPX Adieresis ydieresis -74
+KPX Agrave C -65
+KPX Agrave Cacute -65
+KPX Agrave Ccaron -65
+KPX Agrave Ccedilla -65
+KPX Agrave G -60
+KPX Agrave Gbreve -60
+KPX Agrave Gcommaaccent -60
+KPX Agrave O -50
+KPX Agrave Oacute -50
+KPX Agrave Ocircumflex -50
+KPX Agrave Odieresis -50
+KPX Agrave Ograve -50
+KPX Agrave Ohungarumlaut -50
+KPX Agrave Omacron -50
+KPX Agrave Oslash -50
+KPX Agrave Otilde -50
+KPX Agrave Q -55
+KPX Agrave T -55
+KPX Agrave Tcaron -55
+KPX Agrave Tcommaaccent -55
+KPX Agrave U -50
+KPX Agrave Uacute -50
+KPX Agrave Ucircumflex -50
+KPX Agrave Udieresis -50
+KPX Agrave Ugrave -50
+KPX Agrave Uhungarumlaut -50
+KPX Agrave Umacron -50
+KPX Agrave Uogonek -50
+KPX Agrave Uring -50
+KPX Agrave V -95
+KPX Agrave W -100
+KPX Agrave Y -70
+KPX Agrave Yacute -70
+KPX Agrave Ydieresis -70
+KPX Agrave quoteright -74
+KPX Agrave u -30
+KPX Agrave uacute -30
+KPX Agrave ucircumflex -30
+KPX Agrave udieresis -30
+KPX Agrave ugrave -30
+KPX Agrave uhungarumlaut -30
+KPX Agrave umacron -30
+KPX Agrave uogonek -30
+KPX Agrave uring -30
+KPX Agrave v -74
+KPX Agrave w -74
+KPX Agrave y -74
+KPX Agrave yacute -74
+KPX Agrave ydieresis -74
+KPX Amacron C -65
+KPX Amacron Cacute -65
+KPX Amacron Ccaron -65
+KPX Amacron Ccedilla -65
+KPX Amacron G -60
+KPX Amacron Gbreve -60
+KPX Amacron Gcommaaccent -60
+KPX Amacron O -50
+KPX Amacron Oacute -50
+KPX Amacron Ocircumflex -50
+KPX Amacron Odieresis -50
+KPX Amacron Ograve -50
+KPX Amacron Ohungarumlaut -50
+KPX Amacron Omacron -50
+KPX Amacron Oslash -50
+KPX Amacron Otilde -50
+KPX Amacron Q -55
+KPX Amacron T -55
+KPX Amacron Tcaron -55
+KPX Amacron Tcommaaccent -55
+KPX Amacron U -50
+KPX Amacron Uacute -50
+KPX Amacron Ucircumflex -50
+KPX Amacron Udieresis -50
+KPX Amacron Ugrave -50
+KPX Amacron Uhungarumlaut -50
+KPX Amacron Umacron -50
+KPX Amacron Uogonek -50
+KPX Amacron Uring -50
+KPX Amacron V -95
+KPX Amacron W -100
+KPX Amacron Y -70
+KPX Amacron Yacute -70
+KPX Amacron Ydieresis -70
+KPX Amacron quoteright -74
+KPX Amacron u -30
+KPX Amacron uacute -30
+KPX Amacron ucircumflex -30
+KPX Amacron udieresis -30
+KPX Amacron ugrave -30
+KPX Amacron uhungarumlaut -30
+KPX Amacron umacron -30
+KPX Amacron uogonek -30
+KPX Amacron uring -30
+KPX Amacron v -74
+KPX Amacron w -74
+KPX Amacron y -74
+KPX Amacron yacute -74
+KPX Amacron ydieresis -74
+KPX Aogonek C -65
+KPX Aogonek Cacute -65
+KPX Aogonek Ccaron -65
+KPX Aogonek Ccedilla -65
+KPX Aogonek G -60
+KPX Aogonek Gbreve -60
+KPX Aogonek Gcommaaccent -60
+KPX Aogonek O -50
+KPX Aogonek Oacute -50
+KPX Aogonek Ocircumflex -50
+KPX Aogonek Odieresis -50
+KPX Aogonek Ograve -50
+KPX Aogonek Ohungarumlaut -50
+KPX Aogonek Omacron -50
+KPX Aogonek Oslash -50
+KPX Aogonek Otilde -50
+KPX Aogonek Q -55
+KPX Aogonek T -55
+KPX Aogonek Tcaron -55
+KPX Aogonek Tcommaaccent -55
+KPX Aogonek U -50
+KPX Aogonek Uacute -50
+KPX Aogonek Ucircumflex -50
+KPX Aogonek Udieresis -50
+KPX Aogonek Ugrave -50
+KPX Aogonek Uhungarumlaut -50
+KPX Aogonek Umacron -50
+KPX Aogonek Uogonek -50
+KPX Aogonek Uring -50
+KPX Aogonek V -95
+KPX Aogonek W -100
+KPX Aogonek Y -70
+KPX Aogonek Yacute -70
+KPX Aogonek Ydieresis -70
+KPX Aogonek quoteright -74
+KPX Aogonek u -30
+KPX Aogonek uacute -30
+KPX Aogonek ucircumflex -30
+KPX Aogonek udieresis -30
+KPX Aogonek ugrave -30
+KPX Aogonek uhungarumlaut -30
+KPX Aogonek umacron -30
+KPX Aogonek uogonek -30
+KPX Aogonek uring -30
+KPX Aogonek v -74
+KPX Aogonek w -74
+KPX Aogonek y -34
+KPX Aogonek yacute -34
+KPX Aogonek ydieresis -34
+KPX Aring C -65
+KPX Aring Cacute -65
+KPX Aring Ccaron -65
+KPX Aring Ccedilla -65
+KPX Aring G -60
+KPX Aring Gbreve -60
+KPX Aring Gcommaaccent -60
+KPX Aring O -50
+KPX Aring Oacute -50
+KPX Aring Ocircumflex -50
+KPX Aring Odieresis -50
+KPX Aring Ograve -50
+KPX Aring Ohungarumlaut -50
+KPX Aring Omacron -50
+KPX Aring Oslash -50
+KPX Aring Otilde -50
+KPX Aring Q -55
+KPX Aring T -55
+KPX Aring Tcaron -55
+KPX Aring Tcommaaccent -55
+KPX Aring U -50
+KPX Aring Uacute -50
+KPX Aring Ucircumflex -50
+KPX Aring Udieresis -50
+KPX Aring Ugrave -50
+KPX Aring Uhungarumlaut -50
+KPX Aring Umacron -50
+KPX Aring Uogonek -50
+KPX Aring Uring -50
+KPX Aring V -95
+KPX Aring W -100
+KPX Aring Y -70
+KPX Aring Yacute -70
+KPX Aring Ydieresis -70
+KPX Aring quoteright -74
+KPX Aring u -30
+KPX Aring uacute -30
+KPX Aring ucircumflex -30
+KPX Aring udieresis -30
+KPX Aring ugrave -30
+KPX Aring uhungarumlaut -30
+KPX Aring umacron -30
+KPX Aring uogonek -30
+KPX Aring uring -30
+KPX Aring v -74
+KPX Aring w -74
+KPX Aring y -74
+KPX Aring yacute -74
+KPX Aring ydieresis -74
+KPX Atilde C -65
+KPX Atilde Cacute -65
+KPX Atilde Ccaron -65
+KPX Atilde Ccedilla -65
+KPX Atilde G -60
+KPX Atilde Gbreve -60
+KPX Atilde Gcommaaccent -60
+KPX Atilde O -50
+KPX Atilde Oacute -50
+KPX Atilde Ocircumflex -50
+KPX Atilde Odieresis -50
+KPX Atilde Ograve -50
+KPX Atilde Ohungarumlaut -50
+KPX Atilde Omacron -50
+KPX Atilde Oslash -50
+KPX Atilde Otilde -50
+KPX Atilde Q -55
+KPX Atilde T -55
+KPX Atilde Tcaron -55
+KPX Atilde Tcommaaccent -55
+KPX Atilde U -50
+KPX Atilde Uacute -50
+KPX Atilde Ucircumflex -50
+KPX Atilde Udieresis -50
+KPX Atilde Ugrave -50
+KPX Atilde Uhungarumlaut -50
+KPX Atilde Umacron -50
+KPX Atilde Uogonek -50
+KPX Atilde Uring -50
+KPX Atilde V -95
+KPX Atilde W -100
+KPX Atilde Y -70
+KPX Atilde Yacute -70
+KPX Atilde Ydieresis -70
+KPX Atilde quoteright -74
+KPX Atilde u -30
+KPX Atilde uacute -30
+KPX Atilde ucircumflex -30
+KPX Atilde udieresis -30
+KPX Atilde ugrave -30
+KPX Atilde uhungarumlaut -30
+KPX Atilde umacron -30
+KPX Atilde uogonek -30
+KPX Atilde uring -30
+KPX Atilde v -74
+KPX Atilde w -74
+KPX Atilde y -74
+KPX Atilde yacute -74
+KPX Atilde ydieresis -74
+KPX B A -25
+KPX B Aacute -25
+KPX B Abreve -25
+KPX B Acircumflex -25
+KPX B Adieresis -25
+KPX B Agrave -25
+KPX B Amacron -25
+KPX B Aogonek -25
+KPX B Aring -25
+KPX B Atilde -25
+KPX B U -10
+KPX B Uacute -10
+KPX B Ucircumflex -10
+KPX B Udieresis -10
+KPX B Ugrave -10
+KPX B Uhungarumlaut -10
+KPX B Umacron -10
+KPX B Uogonek -10
+KPX B Uring -10
+KPX D A -25
+KPX D Aacute -25
+KPX D Abreve -25
+KPX D Acircumflex -25
+KPX D Adieresis -25
+KPX D Agrave -25
+KPX D Amacron -25
+KPX D Aogonek -25
+KPX D Aring -25
+KPX D Atilde -25
+KPX D V -50
+KPX D W -40
+KPX D Y -50
+KPX D Yacute -50
+KPX D Ydieresis -50
+KPX Dcaron A -25
+KPX Dcaron Aacute -25
+KPX Dcaron Abreve -25
+KPX Dcaron Acircumflex -25
+KPX Dcaron Adieresis -25
+KPX Dcaron Agrave -25
+KPX Dcaron Amacron -25
+KPX Dcaron Aogonek -25
+KPX Dcaron Aring -25
+KPX Dcaron Atilde -25
+KPX Dcaron V -50
+KPX Dcaron W -40
+KPX Dcaron Y -50
+KPX Dcaron Yacute -50
+KPX Dcaron Ydieresis -50
+KPX Dcroat A -25
+KPX Dcroat Aacute -25
+KPX Dcroat Abreve -25
+KPX Dcroat Acircumflex -25
+KPX Dcroat Adieresis -25
+KPX Dcroat Agrave -25
+KPX Dcroat Amacron -25
+KPX Dcroat Aogonek -25
+KPX Dcroat Aring -25
+KPX Dcroat Atilde -25
+KPX Dcroat V -50
+KPX Dcroat W -40
+KPX Dcroat Y -50
+KPX Dcroat Yacute -50
+KPX Dcroat Ydieresis -50
+KPX F A -100
+KPX F Aacute -100
+KPX F Abreve -100
+KPX F Acircumflex -100
+KPX F Adieresis -100
+KPX F Agrave -100
+KPX F Amacron -100
+KPX F Aogonek -100
+KPX F Aring -100
+KPX F Atilde -100
+KPX F a -95
+KPX F aacute -95
+KPX F abreve -95
+KPX F acircumflex -95
+KPX F adieresis -95
+KPX F agrave -95
+KPX F amacron -95
+KPX F aogonek -95
+KPX F aring -95
+KPX F atilde -95
+KPX F comma -129
+KPX F e -100
+KPX F eacute -100
+KPX F ecaron -100
+KPX F ecircumflex -100
+KPX F edieresis -100
+KPX F edotaccent -100
+KPX F egrave -100
+KPX F emacron -100
+KPX F eogonek -100
+KPX F i -40
+KPX F iacute -40
+KPX F icircumflex -40
+KPX F idieresis -40
+KPX F igrave -40
+KPX F imacron -40
+KPX F iogonek -40
+KPX F o -70
+KPX F oacute -70
+KPX F ocircumflex -70
+KPX F odieresis -70
+KPX F ograve -70
+KPX F ohungarumlaut -70
+KPX F omacron -70
+KPX F oslash -70
+KPX F otilde -70
+KPX F period -129
+KPX F r -50
+KPX F racute -50
+KPX F rcaron -50
+KPX F rcommaaccent -50
+KPX J A -25
+KPX J Aacute -25
+KPX J Abreve -25
+KPX J Acircumflex -25
+KPX J Adieresis -25
+KPX J Agrave -25
+KPX J Amacron -25
+KPX J Aogonek -25
+KPX J Aring -25
+KPX J Atilde -25
+KPX J a -40
+KPX J aacute -40
+KPX J abreve -40
+KPX J acircumflex -40
+KPX J adieresis -40
+KPX J agrave -40
+KPX J amacron -40
+KPX J aogonek -40
+KPX J aring -40
+KPX J atilde -40
+KPX J comma -10
+KPX J e -40
+KPX J eacute -40
+KPX J ecaron -40
+KPX J ecircumflex -40
+KPX J edieresis -40
+KPX J edotaccent -40
+KPX J egrave -40
+KPX J emacron -40
+KPX J eogonek -40
+KPX J o -40
+KPX J oacute -40
+KPX J ocircumflex -40
+KPX J odieresis -40
+KPX J ograve -40
+KPX J ohungarumlaut -40
+KPX J omacron -40
+KPX J oslash -40
+KPX J otilde -40
+KPX J period -10
+KPX J u -40
+KPX J uacute -40
+KPX J ucircumflex -40
+KPX J udieresis -40
+KPX J ugrave -40
+KPX J uhungarumlaut -40
+KPX J umacron -40
+KPX J uogonek -40
+KPX J uring -40
+KPX K O -30
+KPX K Oacute -30
+KPX K Ocircumflex -30
+KPX K Odieresis -30
+KPX K Ograve -30
+KPX K Ohungarumlaut -30
+KPX K Omacron -30
+KPX K Oslash -30
+KPX K Otilde -30
+KPX K e -25
+KPX K eacute -25
+KPX K ecaron -25
+KPX K ecircumflex -25
+KPX K edieresis -25
+KPX K edotaccent -25
+KPX K egrave -25
+KPX K emacron -25
+KPX K eogonek -25
+KPX K o -25
+KPX K oacute -25
+KPX K ocircumflex -25
+KPX K odieresis -25
+KPX K ograve -25
+KPX K ohungarumlaut -25
+KPX K omacron -25
+KPX K oslash -25
+KPX K otilde -25
+KPX K u -20
+KPX K uacute -20
+KPX K ucircumflex -20
+KPX K udieresis -20
+KPX K ugrave -20
+KPX K uhungarumlaut -20
+KPX K umacron -20
+KPX K uogonek -20
+KPX K uring -20
+KPX K y -20
+KPX K yacute -20
+KPX K ydieresis -20
+KPX Kcommaaccent O -30
+KPX Kcommaaccent Oacute -30
+KPX Kcommaaccent Ocircumflex -30
+KPX Kcommaaccent Odieresis -30
+KPX Kcommaaccent Ograve -30
+KPX Kcommaaccent Ohungarumlaut -30
+KPX Kcommaaccent Omacron -30
+KPX Kcommaaccent Oslash -30
+KPX Kcommaaccent Otilde -30
+KPX Kcommaaccent e -25
+KPX Kcommaaccent eacute -25
+KPX Kcommaaccent ecaron -25
+KPX Kcommaaccent ecircumflex -25
+KPX Kcommaaccent edieresis -25
+KPX Kcommaaccent edotaccent -25
+KPX Kcommaaccent egrave -25
+KPX Kcommaaccent emacron -25
+KPX Kcommaaccent eogonek -25
+KPX Kcommaaccent o -25
+KPX Kcommaaccent oacute -25
+KPX Kcommaaccent ocircumflex -25
+KPX Kcommaaccent odieresis -25
+KPX Kcommaaccent ograve -25
+KPX Kcommaaccent ohungarumlaut -25
+KPX Kcommaaccent omacron -25
+KPX Kcommaaccent oslash -25
+KPX Kcommaaccent otilde -25
+KPX Kcommaaccent u -20
+KPX Kcommaaccent uacute -20
+KPX Kcommaaccent ucircumflex -20
+KPX Kcommaaccent udieresis -20
+KPX Kcommaaccent ugrave -20
+KPX Kcommaaccent uhungarumlaut -20
+KPX Kcommaaccent umacron -20
+KPX Kcommaaccent uogonek -20
+KPX Kcommaaccent uring -20
+KPX Kcommaaccent y -20
+KPX Kcommaaccent yacute -20
+KPX Kcommaaccent ydieresis -20
+KPX L T -18
+KPX L Tcaron -18
+KPX L Tcommaaccent -18
+KPX L V -37
+KPX L W -37
+KPX L Y -37
+KPX L Yacute -37
+KPX L Ydieresis -37
+KPX L quoteright -55
+KPX L y -37
+KPX L yacute -37
+KPX L ydieresis -37
+KPX Lacute T -18
+KPX Lacute Tcaron -18
+KPX Lacute Tcommaaccent -18
+KPX Lacute V -37
+KPX Lacute W -37
+KPX Lacute Y -37
+KPX Lacute Yacute -37
+KPX Lacute Ydieresis -37
+KPX Lacute quoteright -55
+KPX Lacute y -37
+KPX Lacute yacute -37
+KPX Lacute ydieresis -37
+KPX Lcommaaccent T -18
+KPX Lcommaaccent Tcaron -18
+KPX Lcommaaccent Tcommaaccent -18
+KPX Lcommaaccent V -37
+KPX Lcommaaccent W -37
+KPX Lcommaaccent Y -37
+KPX Lcommaaccent Yacute -37
+KPX Lcommaaccent Ydieresis -37
+KPX Lcommaaccent quoteright -55
+KPX Lcommaaccent y -37
+KPX Lcommaaccent yacute -37
+KPX Lcommaaccent ydieresis -37
+KPX Lslash T -18
+KPX Lslash Tcaron -18
+KPX Lslash Tcommaaccent -18
+KPX Lslash V -37
+KPX Lslash W -37
+KPX Lslash Y -37
+KPX Lslash Yacute -37
+KPX Lslash Ydieresis -37
+KPX Lslash quoteright -55
+KPX Lslash y -37
+KPX Lslash yacute -37
+KPX Lslash ydieresis -37
+KPX N A -30
+KPX N Aacute -30
+KPX N Abreve -30
+KPX N Acircumflex -30
+KPX N Adieresis -30
+KPX N Agrave -30
+KPX N Amacron -30
+KPX N Aogonek -30
+KPX N Aring -30
+KPX N Atilde -30
+KPX Nacute A -30
+KPX Nacute Aacute -30
+KPX Nacute Abreve -30
+KPX Nacute Acircumflex -30
+KPX Nacute Adieresis -30
+KPX Nacute Agrave -30
+KPX Nacute Amacron -30
+KPX Nacute Aogonek -30
+KPX Nacute Aring -30
+KPX Nacute Atilde -30
+KPX Ncaron A -30
+KPX Ncaron Aacute -30
+KPX Ncaron Abreve -30
+KPX Ncaron Acircumflex -30
+KPX Ncaron Adieresis -30
+KPX Ncaron Agrave -30
+KPX Ncaron Amacron -30
+KPX Ncaron Aogonek -30
+KPX Ncaron Aring -30
+KPX Ncaron Atilde -30
+KPX Ncommaaccent A -30
+KPX Ncommaaccent Aacute -30
+KPX Ncommaaccent Abreve -30
+KPX Ncommaaccent Acircumflex -30
+KPX Ncommaaccent Adieresis -30
+KPX Ncommaaccent Agrave -30
+KPX Ncommaaccent Amacron -30
+KPX Ncommaaccent Aogonek -30
+KPX Ncommaaccent Aring -30
+KPX Ncommaaccent Atilde -30
+KPX Ntilde A -30
+KPX Ntilde Aacute -30
+KPX Ntilde Abreve -30
+KPX Ntilde Acircumflex -30
+KPX Ntilde Adieresis -30
+KPX Ntilde Agrave -30
+KPX Ntilde Amacron -30
+KPX Ntilde Aogonek -30
+KPX Ntilde Aring -30
+KPX Ntilde Atilde -30
+KPX O A -40
+KPX O Aacute -40
+KPX O Abreve -40
+KPX O Acircumflex -40
+KPX O Adieresis -40
+KPX O Agrave -40
+KPX O Amacron -40
+KPX O Aogonek -40
+KPX O Aring -40
+KPX O Atilde -40
+KPX O T -40
+KPX O Tcaron -40
+KPX O Tcommaaccent -40
+KPX O V -50
+KPX O W -50
+KPX O X -40
+KPX O Y -50
+KPX O Yacute -50
+KPX O Ydieresis -50
+KPX Oacute A -40
+KPX Oacute Aacute -40
+KPX Oacute Abreve -40
+KPX Oacute Acircumflex -40
+KPX Oacute Adieresis -40
+KPX Oacute Agrave -40
+KPX Oacute Amacron -40
+KPX Oacute Aogonek -40
+KPX Oacute Aring -40
+KPX Oacute Atilde -40
+KPX Oacute T -40
+KPX Oacute Tcaron -40
+KPX Oacute Tcommaaccent -40
+KPX Oacute V -50
+KPX Oacute W -50
+KPX Oacute X -40
+KPX Oacute Y -50
+KPX Oacute Yacute -50
+KPX Oacute Ydieresis -50
+KPX Ocircumflex A -40
+KPX Ocircumflex Aacute -40
+KPX Ocircumflex Abreve -40
+KPX Ocircumflex Acircumflex -40
+KPX Ocircumflex Adieresis -40
+KPX Ocircumflex Agrave -40
+KPX Ocircumflex Amacron -40
+KPX Ocircumflex Aogonek -40
+KPX Ocircumflex Aring -40
+KPX Ocircumflex Atilde -40
+KPX Ocircumflex T -40
+KPX Ocircumflex Tcaron -40
+KPX Ocircumflex Tcommaaccent -40
+KPX Ocircumflex V -50
+KPX Ocircumflex W -50
+KPX Ocircumflex X -40
+KPX Ocircumflex Y -50
+KPX Ocircumflex Yacute -50
+KPX Ocircumflex Ydieresis -50
+KPX Odieresis A -40
+KPX Odieresis Aacute -40
+KPX Odieresis Abreve -40
+KPX Odieresis Acircumflex -40
+KPX Odieresis Adieresis -40
+KPX Odieresis Agrave -40
+KPX Odieresis Amacron -40
+KPX Odieresis Aogonek -40
+KPX Odieresis Aring -40
+KPX Odieresis Atilde -40
+KPX Odieresis T -40
+KPX Odieresis Tcaron -40
+KPX Odieresis Tcommaaccent -40
+KPX Odieresis V -50
+KPX Odieresis W -50
+KPX Odieresis X -40
+KPX Odieresis Y -50
+KPX Odieresis Yacute -50
+KPX Odieresis Ydieresis -50
+KPX Ograve A -40
+KPX Ograve Aacute -40
+KPX Ograve Abreve -40
+KPX Ograve Acircumflex -40
+KPX Ograve Adieresis -40
+KPX Ograve Agrave -40
+KPX Ograve Amacron -40
+KPX Ograve Aogonek -40
+KPX Ograve Aring -40
+KPX Ograve Atilde -40
+KPX Ograve T -40
+KPX Ograve Tcaron -40
+KPX Ograve Tcommaaccent -40
+KPX Ograve V -50
+KPX Ograve W -50
+KPX Ograve X -40
+KPX Ograve Y -50
+KPX Ograve Yacute -50
+KPX Ograve Ydieresis -50
+KPX Ohungarumlaut A -40
+KPX Ohungarumlaut Aacute -40
+KPX Ohungarumlaut Abreve -40
+KPX Ohungarumlaut Acircumflex -40
+KPX Ohungarumlaut Adieresis -40
+KPX Ohungarumlaut Agrave -40
+KPX Ohungarumlaut Amacron -40
+KPX Ohungarumlaut Aogonek -40
+KPX Ohungarumlaut Aring -40
+KPX Ohungarumlaut Atilde -40
+KPX Ohungarumlaut T -40
+KPX Ohungarumlaut Tcaron -40
+KPX Ohungarumlaut Tcommaaccent -40
+KPX Ohungarumlaut V -50
+KPX Ohungarumlaut W -50
+KPX Ohungarumlaut X -40
+KPX Ohungarumlaut Y -50
+KPX Ohungarumlaut Yacute -50
+KPX Ohungarumlaut Ydieresis -50
+KPX Omacron A -40
+KPX Omacron Aacute -40
+KPX Omacron Abreve -40
+KPX Omacron Acircumflex -40
+KPX Omacron Adieresis -40
+KPX Omacron Agrave -40
+KPX Omacron Amacron -40
+KPX Omacron Aogonek -40
+KPX Omacron Aring -40
+KPX Omacron Atilde -40
+KPX Omacron T -40
+KPX Omacron Tcaron -40
+KPX Omacron Tcommaaccent -40
+KPX Omacron V -50
+KPX Omacron W -50
+KPX Omacron X -40
+KPX Omacron Y -50
+KPX Omacron Yacute -50
+KPX Omacron Ydieresis -50
+KPX Oslash A -40
+KPX Oslash Aacute -40
+KPX Oslash Abreve -40
+KPX Oslash Acircumflex -40
+KPX Oslash Adieresis -40
+KPX Oslash Agrave -40
+KPX Oslash Amacron -40
+KPX Oslash Aogonek -40
+KPX Oslash Aring -40
+KPX Oslash Atilde -40
+KPX Oslash T -40
+KPX Oslash Tcaron -40
+KPX Oslash Tcommaaccent -40
+KPX Oslash V -50
+KPX Oslash W -50
+KPX Oslash X -40
+KPX Oslash Y -50
+KPX Oslash Yacute -50
+KPX Oslash Ydieresis -50
+KPX Otilde A -40
+KPX Otilde Aacute -40
+KPX Otilde Abreve -40
+KPX Otilde Acircumflex -40
+KPX Otilde Adieresis -40
+KPX Otilde Agrave -40
+KPX Otilde Amacron -40
+KPX Otilde Aogonek -40
+KPX Otilde Aring -40
+KPX Otilde Atilde -40
+KPX Otilde T -40
+KPX Otilde Tcaron -40
+KPX Otilde Tcommaaccent -40
+KPX Otilde V -50
+KPX Otilde W -50
+KPX Otilde X -40
+KPX Otilde Y -50
+KPX Otilde Yacute -50
+KPX Otilde Ydieresis -50
+KPX P A -85
+KPX P Aacute -85
+KPX P Abreve -85
+KPX P Acircumflex -85
+KPX P Adieresis -85
+KPX P Agrave -85
+KPX P Amacron -85
+KPX P Aogonek -85
+KPX P Aring -85
+KPX P Atilde -85
+KPX P a -40
+KPX P aacute -40
+KPX P abreve -40
+KPX P acircumflex -40
+KPX P adieresis -40
+KPX P agrave -40
+KPX P amacron -40
+KPX P aogonek -40
+KPX P aring -40
+KPX P atilde -40
+KPX P comma -129
+KPX P e -50
+KPX P eacute -50
+KPX P ecaron -50
+KPX P ecircumflex -50
+KPX P edieresis -50
+KPX P edotaccent -50
+KPX P egrave -50
+KPX P emacron -50
+KPX P eogonek -50
+KPX P o -55
+KPX P oacute -55
+KPX P ocircumflex -55
+KPX P odieresis -55
+KPX P ograve -55
+KPX P ohungarumlaut -55
+KPX P omacron -55
+KPX P oslash -55
+KPX P otilde -55
+KPX P period -129
+KPX Q U -10
+KPX Q Uacute -10
+KPX Q Ucircumflex -10
+KPX Q Udieresis -10
+KPX Q Ugrave -10
+KPX Q Uhungarumlaut -10
+KPX Q Umacron -10
+KPX Q Uogonek -10
+KPX Q Uring -10
+KPX R O -40
+KPX R Oacute -40
+KPX R Ocircumflex -40
+KPX R Odieresis -40
+KPX R Ograve -40
+KPX R Ohungarumlaut -40
+KPX R Omacron -40
+KPX R Oslash -40
+KPX R Otilde -40
+KPX R T -30
+KPX R Tcaron -30
+KPX R Tcommaaccent -30
+KPX R U -40
+KPX R Uacute -40
+KPX R Ucircumflex -40
+KPX R Udieresis -40
+KPX R Ugrave -40
+KPX R Uhungarumlaut -40
+KPX R Umacron -40
+KPX R Uogonek -40
+KPX R Uring -40
+KPX R V -18
+KPX R W -18
+KPX R Y -18
+KPX R Yacute -18
+KPX R Ydieresis -18
+KPX Racute O -40
+KPX Racute Oacute -40
+KPX Racute Ocircumflex -40
+KPX Racute Odieresis -40
+KPX Racute Ograve -40
+KPX Racute Ohungarumlaut -40
+KPX Racute Omacron -40
+KPX Racute Oslash -40
+KPX Racute Otilde -40
+KPX Racute T -30
+KPX Racute Tcaron -30
+KPX Racute Tcommaaccent -30
+KPX Racute U -40
+KPX Racute Uacute -40
+KPX Racute Ucircumflex -40
+KPX Racute Udieresis -40
+KPX Racute Ugrave -40
+KPX Racute Uhungarumlaut -40
+KPX Racute Umacron -40
+KPX Racute Uogonek -40
+KPX Racute Uring -40
+KPX Racute V -18
+KPX Racute W -18
+KPX Racute Y -18
+KPX Racute Yacute -18
+KPX Racute Ydieresis -18
+KPX Rcaron O -40
+KPX Rcaron Oacute -40
+KPX Rcaron Ocircumflex -40
+KPX Rcaron Odieresis -40
+KPX Rcaron Ograve -40
+KPX Rcaron Ohungarumlaut -40
+KPX Rcaron Omacron -40
+KPX Rcaron Oslash -40
+KPX Rcaron Otilde -40
+KPX Rcaron T -30
+KPX Rcaron Tcaron -30
+KPX Rcaron Tcommaaccent -30
+KPX Rcaron U -40
+KPX Rcaron Uacute -40
+KPX Rcaron Ucircumflex -40
+KPX Rcaron Udieresis -40
+KPX Rcaron Ugrave -40
+KPX Rcaron Uhungarumlaut -40
+KPX Rcaron Umacron -40
+KPX Rcaron Uogonek -40
+KPX Rcaron Uring -40
+KPX Rcaron V -18
+KPX Rcaron W -18
+KPX Rcaron Y -18
+KPX Rcaron Yacute -18
+KPX Rcaron Ydieresis -18
+KPX Rcommaaccent O -40
+KPX Rcommaaccent Oacute -40
+KPX Rcommaaccent Ocircumflex -40
+KPX Rcommaaccent Odieresis -40
+KPX Rcommaaccent Ograve -40
+KPX Rcommaaccent Ohungarumlaut -40
+KPX Rcommaaccent Omacron -40
+KPX Rcommaaccent Oslash -40
+KPX Rcommaaccent Otilde -40
+KPX Rcommaaccent T -30
+KPX Rcommaaccent Tcaron -30
+KPX Rcommaaccent Tcommaaccent -30
+KPX Rcommaaccent U -40
+KPX Rcommaaccent Uacute -40
+KPX Rcommaaccent Ucircumflex -40
+KPX Rcommaaccent Udieresis -40
+KPX Rcommaaccent Ugrave -40
+KPX Rcommaaccent Uhungarumlaut -40
+KPX Rcommaaccent Umacron -40
+KPX Rcommaaccent Uogonek -40
+KPX Rcommaaccent Uring -40
+KPX Rcommaaccent V -18
+KPX Rcommaaccent W -18
+KPX Rcommaaccent Y -18
+KPX Rcommaaccent Yacute -18
+KPX Rcommaaccent Ydieresis -18
+KPX T A -55
+KPX T Aacute -55
+KPX T Abreve -55
+KPX T Acircumflex -55
+KPX T Adieresis -55
+KPX T Agrave -55
+KPX T Amacron -55
+KPX T Aogonek -55
+KPX T Aring -55
+KPX T Atilde -55
+KPX T O -18
+KPX T Oacute -18
+KPX T Ocircumflex -18
+KPX T Odieresis -18
+KPX T Ograve -18
+KPX T Ohungarumlaut -18
+KPX T Omacron -18
+KPX T Oslash -18
+KPX T Otilde -18
+KPX T a -92
+KPX T aacute -92
+KPX T abreve -92
+KPX T acircumflex -92
+KPX T adieresis -92
+KPX T agrave -92
+KPX T amacron -92
+KPX T aogonek -92
+KPX T aring -92
+KPX T atilde -92
+KPX T colon -74
+KPX T comma -92
+KPX T e -92
+KPX T eacute -92
+KPX T ecaron -92
+KPX T ecircumflex -92
+KPX T edieresis -52
+KPX T edotaccent -92
+KPX T egrave -52
+KPX T emacron -52
+KPX T eogonek -92
+KPX T hyphen -92
+KPX T i -37
+KPX T iacute -37
+KPX T iogonek -37
+KPX T o -95
+KPX T oacute -95
+KPX T ocircumflex -95
+KPX T odieresis -95
+KPX T ograve -95
+KPX T ohungarumlaut -95
+KPX T omacron -95
+KPX T oslash -95
+KPX T otilde -95
+KPX T period -92
+KPX T r -37
+KPX T racute -37
+KPX T rcaron -37
+KPX T rcommaaccent -37
+KPX T semicolon -74
+KPX T u -37
+KPX T uacute -37
+KPX T ucircumflex -37
+KPX T udieresis -37
+KPX T ugrave -37
+KPX T uhungarumlaut -37
+KPX T umacron -37
+KPX T uogonek -37
+KPX T uring -37
+KPX T w -37
+KPX T y -37
+KPX T yacute -37
+KPX T ydieresis -37
+KPX Tcaron A -55
+KPX Tcaron Aacute -55
+KPX Tcaron Abreve -55
+KPX Tcaron Acircumflex -55
+KPX Tcaron Adieresis -55
+KPX Tcaron Agrave -55
+KPX Tcaron Amacron -55
+KPX Tcaron Aogonek -55
+KPX Tcaron Aring -55
+KPX Tcaron Atilde -55
+KPX Tcaron O -18
+KPX Tcaron Oacute -18
+KPX Tcaron Ocircumflex -18
+KPX Tcaron Odieresis -18
+KPX Tcaron Ograve -18
+KPX Tcaron Ohungarumlaut -18
+KPX Tcaron Omacron -18
+KPX Tcaron Oslash -18
+KPX Tcaron Otilde -18
+KPX Tcaron a -92
+KPX Tcaron aacute -92
+KPX Tcaron abreve -92
+KPX Tcaron acircumflex -92
+KPX Tcaron adieresis -92
+KPX Tcaron agrave -92
+KPX Tcaron amacron -92
+KPX Tcaron aogonek -92
+KPX Tcaron aring -92
+KPX Tcaron atilde -92
+KPX Tcaron colon -74
+KPX Tcaron comma -92
+KPX Tcaron e -92
+KPX Tcaron eacute -92
+KPX Tcaron ecaron -92
+KPX Tcaron ecircumflex -92
+KPX Tcaron edieresis -52
+KPX Tcaron edotaccent -92
+KPX Tcaron egrave -52
+KPX Tcaron emacron -52
+KPX Tcaron eogonek -92
+KPX Tcaron hyphen -92
+KPX Tcaron i -37
+KPX Tcaron iacute -37
+KPX Tcaron iogonek -37
+KPX Tcaron o -95
+KPX Tcaron oacute -95
+KPX Tcaron ocircumflex -95
+KPX Tcaron odieresis -95
+KPX Tcaron ograve -95
+KPX Tcaron ohungarumlaut -95
+KPX Tcaron omacron -95
+KPX Tcaron oslash -95
+KPX Tcaron otilde -95
+KPX Tcaron period -92
+KPX Tcaron r -37
+KPX Tcaron racute -37
+KPX Tcaron rcaron -37
+KPX Tcaron rcommaaccent -37
+KPX Tcaron semicolon -74
+KPX Tcaron u -37
+KPX Tcaron uacute -37
+KPX Tcaron ucircumflex -37
+KPX Tcaron udieresis -37
+KPX Tcaron ugrave -37
+KPX Tcaron uhungarumlaut -37
+KPX Tcaron umacron -37
+KPX Tcaron uogonek -37
+KPX Tcaron uring -37
+KPX Tcaron w -37
+KPX Tcaron y -37
+KPX Tcaron yacute -37
+KPX Tcaron ydieresis -37
+KPX Tcommaaccent A -55
+KPX Tcommaaccent Aacute -55
+KPX Tcommaaccent Abreve -55
+KPX Tcommaaccent Acircumflex -55
+KPX Tcommaaccent Adieresis -55
+KPX Tcommaaccent Agrave -55
+KPX Tcommaaccent Amacron -55
+KPX Tcommaaccent Aogonek -55
+KPX Tcommaaccent Aring -55
+KPX Tcommaaccent Atilde -55
+KPX Tcommaaccent O -18
+KPX Tcommaaccent Oacute -18
+KPX Tcommaaccent Ocircumflex -18
+KPX Tcommaaccent Odieresis -18
+KPX Tcommaaccent Ograve -18
+KPX Tcommaaccent Ohungarumlaut -18
+KPX Tcommaaccent Omacron -18
+KPX Tcommaaccent Oslash -18
+KPX Tcommaaccent Otilde -18
+KPX Tcommaaccent a -92
+KPX Tcommaaccent aacute -92
+KPX Tcommaaccent abreve -92
+KPX Tcommaaccent acircumflex -92
+KPX Tcommaaccent adieresis -92
+KPX Tcommaaccent agrave -92
+KPX Tcommaaccent amacron -92
+KPX Tcommaaccent aogonek -92
+KPX Tcommaaccent aring -92
+KPX Tcommaaccent atilde -92
+KPX Tcommaaccent colon -74
+KPX Tcommaaccent comma -92
+KPX Tcommaaccent e -92
+KPX Tcommaaccent eacute -92
+KPX Tcommaaccent ecaron -92
+KPX Tcommaaccent ecircumflex -92
+KPX Tcommaaccent edieresis -52
+KPX Tcommaaccent edotaccent -92
+KPX Tcommaaccent egrave -52
+KPX Tcommaaccent emacron -52
+KPX Tcommaaccent eogonek -92
+KPX Tcommaaccent hyphen -92
+KPX Tcommaaccent i -37
+KPX Tcommaaccent iacute -37
+KPX Tcommaaccent iogonek -37
+KPX Tcommaaccent o -95
+KPX Tcommaaccent oacute -95
+KPX Tcommaaccent ocircumflex -95
+KPX Tcommaaccent odieresis -95
+KPX Tcommaaccent ograve -95
+KPX Tcommaaccent ohungarumlaut -95
+KPX Tcommaaccent omacron -95
+KPX Tcommaaccent oslash -95
+KPX Tcommaaccent otilde -95
+KPX Tcommaaccent period -92
+KPX Tcommaaccent r -37
+KPX Tcommaaccent racute -37
+KPX Tcommaaccent rcaron -37
+KPX Tcommaaccent rcommaaccent -37
+KPX Tcommaaccent semicolon -74
+KPX Tcommaaccent u -37
+KPX Tcommaaccent uacute -37
+KPX Tcommaaccent ucircumflex -37
+KPX Tcommaaccent udieresis -37
+KPX Tcommaaccent ugrave -37
+KPX Tcommaaccent uhungarumlaut -37
+KPX Tcommaaccent umacron -37
+KPX Tcommaaccent uogonek -37
+KPX Tcommaaccent uring -37
+KPX Tcommaaccent w -37
+KPX Tcommaaccent y -37
+KPX Tcommaaccent yacute -37
+KPX Tcommaaccent ydieresis -37
+KPX U A -45
+KPX U Aacute -45
+KPX U Abreve -45
+KPX U Acircumflex -45
+KPX U Adieresis -45
+KPX U Agrave -45
+KPX U Amacron -45
+KPX U Aogonek -45
+KPX U Aring -45
+KPX U Atilde -45
+KPX Uacute A -45
+KPX Uacute Aacute -45
+KPX Uacute Abreve -45
+KPX Uacute Acircumflex -45
+KPX Uacute Adieresis -45
+KPX Uacute Agrave -45
+KPX Uacute Amacron -45
+KPX Uacute Aogonek -45
+KPX Uacute Aring -45
+KPX Uacute Atilde -45
+KPX Ucircumflex A -45
+KPX Ucircumflex Aacute -45
+KPX Ucircumflex Abreve -45
+KPX Ucircumflex Acircumflex -45
+KPX Ucircumflex Adieresis -45
+KPX Ucircumflex Agrave -45
+KPX Ucircumflex Amacron -45
+KPX Ucircumflex Aogonek -45
+KPX Ucircumflex Aring -45
+KPX Ucircumflex Atilde -45
+KPX Udieresis A -45
+KPX Udieresis Aacute -45
+KPX Udieresis Abreve -45
+KPX Udieresis Acircumflex -45
+KPX Udieresis Adieresis -45
+KPX Udieresis Agrave -45
+KPX Udieresis Amacron -45
+KPX Udieresis Aogonek -45
+KPX Udieresis Aring -45
+KPX Udieresis Atilde -45
+KPX Ugrave A -45
+KPX Ugrave Aacute -45
+KPX Ugrave Abreve -45
+KPX Ugrave Acircumflex -45
+KPX Ugrave Adieresis -45
+KPX Ugrave Agrave -45
+KPX Ugrave Amacron -45
+KPX Ugrave Aogonek -45
+KPX Ugrave Aring -45
+KPX Ugrave Atilde -45
+KPX Uhungarumlaut A -45
+KPX Uhungarumlaut Aacute -45
+KPX Uhungarumlaut Abreve -45
+KPX Uhungarumlaut Acircumflex -45
+KPX Uhungarumlaut Adieresis -45
+KPX Uhungarumlaut Agrave -45
+KPX Uhungarumlaut Amacron -45
+KPX Uhungarumlaut Aogonek -45
+KPX Uhungarumlaut Aring -45
+KPX Uhungarumlaut Atilde -45
+KPX Umacron A -45
+KPX Umacron Aacute -45
+KPX Umacron Abreve -45
+KPX Umacron Acircumflex -45
+KPX Umacron Adieresis -45
+KPX Umacron Agrave -45
+KPX Umacron Amacron -45
+KPX Umacron Aogonek -45
+KPX Umacron Aring -45
+KPX Umacron Atilde -45
+KPX Uogonek A -45
+KPX Uogonek Aacute -45
+KPX Uogonek Abreve -45
+KPX Uogonek Acircumflex -45
+KPX Uogonek Adieresis -45
+KPX Uogonek Agrave -45
+KPX Uogonek Amacron -45
+KPX Uogonek Aogonek -45
+KPX Uogonek Aring -45
+KPX Uogonek Atilde -45
+KPX Uring A -45
+KPX Uring Aacute -45
+KPX Uring Abreve -45
+KPX Uring Acircumflex -45
+KPX Uring Adieresis -45
+KPX Uring Agrave -45
+KPX Uring Amacron -45
+KPX Uring Aogonek -45
+KPX Uring Aring -45
+KPX Uring Atilde -45
+KPX V A -85
+KPX V Aacute -85
+KPX V Abreve -85
+KPX V Acircumflex -85
+KPX V Adieresis -85
+KPX V Agrave -85
+KPX V Amacron -85
+KPX V Aogonek -85
+KPX V Aring -85
+KPX V Atilde -85
+KPX V G -10
+KPX V Gbreve -10
+KPX V Gcommaaccent -10
+KPX V O -30
+KPX V Oacute -30
+KPX V Ocircumflex -30
+KPX V Odieresis -30
+KPX V Ograve -30
+KPX V Ohungarumlaut -30
+KPX V Omacron -30
+KPX V Oslash -30
+KPX V Otilde -30
+KPX V a -111
+KPX V aacute -111
+KPX V abreve -111
+KPX V acircumflex -111
+KPX V adieresis -111
+KPX V agrave -111
+KPX V amacron -111
+KPX V aogonek -111
+KPX V aring -111
+KPX V atilde -111
+KPX V colon -74
+KPX V comma -129
+KPX V e -111
+KPX V eacute -111
+KPX V ecaron -111
+KPX V ecircumflex -111
+KPX V edieresis -71
+KPX V edotaccent -111
+KPX V egrave -71
+KPX V emacron -71
+KPX V eogonek -111
+KPX V hyphen -70
+KPX V i -55
+KPX V iacute -55
+KPX V iogonek -55
+KPX V o -111
+KPX V oacute -111
+KPX V ocircumflex -111
+KPX V odieresis -111
+KPX V ograve -111
+KPX V ohungarumlaut -111
+KPX V omacron -111
+KPX V oslash -111
+KPX V otilde -111
+KPX V period -129
+KPX V semicolon -74
+KPX V u -55
+KPX V uacute -55
+KPX V ucircumflex -55
+KPX V udieresis -55
+KPX V ugrave -55
+KPX V uhungarumlaut -55
+KPX V umacron -55
+KPX V uogonek -55
+KPX V uring -55
+KPX W A -74
+KPX W Aacute -74
+KPX W Abreve -74
+KPX W Acircumflex -74
+KPX W Adieresis -74
+KPX W Agrave -74
+KPX W Amacron -74
+KPX W Aogonek -74
+KPX W Aring -74
+KPX W Atilde -74
+KPX W O -15
+KPX W Oacute -15
+KPX W Ocircumflex -15
+KPX W Odieresis -15
+KPX W Ograve -15
+KPX W Ohungarumlaut -15
+KPX W Omacron -15
+KPX W Oslash -15
+KPX W Otilde -15
+KPX W a -85
+KPX W aacute -85
+KPX W abreve -85
+KPX W acircumflex -85
+KPX W adieresis -85
+KPX W agrave -85
+KPX W amacron -85
+KPX W aogonek -85
+KPX W aring -85
+KPX W atilde -85
+KPX W colon -55
+KPX W comma -74
+KPX W e -90
+KPX W eacute -90
+KPX W ecaron -90
+KPX W ecircumflex -90
+KPX W edieresis -50
+KPX W edotaccent -90
+KPX W egrave -50
+KPX W emacron -50
+KPX W eogonek -90
+KPX W hyphen -50
+KPX W i -37
+KPX W iacute -37
+KPX W iogonek -37
+KPX W o -80
+KPX W oacute -80
+KPX W ocircumflex -80
+KPX W odieresis -80
+KPX W ograve -80
+KPX W ohungarumlaut -80
+KPX W omacron -80
+KPX W oslash -80
+KPX W otilde -80
+KPX W period -74
+KPX W semicolon -55
+KPX W u -55
+KPX W uacute -55
+KPX W ucircumflex -55
+KPX W udieresis -55
+KPX W ugrave -55
+KPX W uhungarumlaut -55
+KPX W umacron -55
+KPX W uogonek -55
+KPX W uring -55
+KPX W y -55
+KPX W yacute -55
+KPX W ydieresis -55
+KPX Y A -74
+KPX Y Aacute -74
+KPX Y Abreve -74
+KPX Y Acircumflex -74
+KPX Y Adieresis -74
+KPX Y Agrave -74
+KPX Y Amacron -74
+KPX Y Aogonek -74
+KPX Y Aring -74
+KPX Y Atilde -74
+KPX Y O -25
+KPX Y Oacute -25
+KPX Y Ocircumflex -25
+KPX Y Odieresis -25
+KPX Y Ograve -25
+KPX Y Ohungarumlaut -25
+KPX Y Omacron -25
+KPX Y Oslash -25
+KPX Y Otilde -25
+KPX Y a -92
+KPX Y aacute -92
+KPX Y abreve -92
+KPX Y acircumflex -92
+KPX Y adieresis -92
+KPX Y agrave -92
+KPX Y amacron -92
+KPX Y aogonek -92
+KPX Y aring -92
+KPX Y atilde -92
+KPX Y colon -92
+KPX Y comma -92
+KPX Y e -111
+KPX Y eacute -111
+KPX Y ecaron -111
+KPX Y ecircumflex -71
+KPX Y edieresis -71
+KPX Y edotaccent -111
+KPX Y egrave -71
+KPX Y emacron -71
+KPX Y eogonek -111
+KPX Y hyphen -92
+KPX Y i -55
+KPX Y iacute -55
+KPX Y iogonek -55
+KPX Y o -111
+KPX Y oacute -111
+KPX Y ocircumflex -111
+KPX Y odieresis -111
+KPX Y ograve -111
+KPX Y ohungarumlaut -111
+KPX Y omacron -111
+KPX Y oslash -111
+KPX Y otilde -111
+KPX Y period -74
+KPX Y semicolon -92
+KPX Y u -92
+KPX Y uacute -92
+KPX Y ucircumflex -92
+KPX Y udieresis -92
+KPX Y ugrave -92
+KPX Y uhungarumlaut -92
+KPX Y umacron -92
+KPX Y uogonek -92
+KPX Y uring -92
+KPX Yacute A -74
+KPX Yacute Aacute -74
+KPX Yacute Abreve -74
+KPX Yacute Acircumflex -74
+KPX Yacute Adieresis -74
+KPX Yacute Agrave -74
+KPX Yacute Amacron -74
+KPX Yacute Aogonek -74
+KPX Yacute Aring -74
+KPX Yacute Atilde -74
+KPX Yacute O -25
+KPX Yacute Oacute -25
+KPX Yacute Ocircumflex -25
+KPX Yacute Odieresis -25
+KPX Yacute Ograve -25
+KPX Yacute Ohungarumlaut -25
+KPX Yacute Omacron -25
+KPX Yacute Oslash -25
+KPX Yacute Otilde -25
+KPX Yacute a -92
+KPX Yacute aacute -92
+KPX Yacute abreve -92
+KPX Yacute acircumflex -92
+KPX Yacute adieresis -92
+KPX Yacute agrave -92
+KPX Yacute amacron -92
+KPX Yacute aogonek -92
+KPX Yacute aring -92
+KPX Yacute atilde -92
+KPX Yacute colon -92
+KPX Yacute comma -92
+KPX Yacute e -111
+KPX Yacute eacute -111
+KPX Yacute ecaron -111
+KPX Yacute ecircumflex -71
+KPX Yacute edieresis -71
+KPX Yacute edotaccent -111
+KPX Yacute egrave -71
+KPX Yacute emacron -71
+KPX Yacute eogonek -111
+KPX Yacute hyphen -92
+KPX Yacute i -55
+KPX Yacute iacute -55
+KPX Yacute iogonek -55
+KPX Yacute o -111
+KPX Yacute oacute -111
+KPX Yacute ocircumflex -111
+KPX Yacute odieresis -111
+KPX Yacute ograve -111
+KPX Yacute ohungarumlaut -111
+KPX Yacute omacron -111
+KPX Yacute oslash -111
+KPX Yacute otilde -111
+KPX Yacute period -74
+KPX Yacute semicolon -92
+KPX Yacute u -92
+KPX Yacute uacute -92
+KPX Yacute ucircumflex -92
+KPX Yacute udieresis -92
+KPX Yacute ugrave -92
+KPX Yacute uhungarumlaut -92
+KPX Yacute umacron -92
+KPX Yacute uogonek -92
+KPX Yacute uring -92
+KPX Ydieresis A -74
+KPX Ydieresis Aacute -74
+KPX Ydieresis Abreve -74
+KPX Ydieresis Acircumflex -74
+KPX Ydieresis Adieresis -74
+KPX Ydieresis Agrave -74
+KPX Ydieresis Amacron -74
+KPX Ydieresis Aogonek -74
+KPX Ydieresis Aring -74
+KPX Ydieresis Atilde -74
+KPX Ydieresis O -25
+KPX Ydieresis Oacute -25
+KPX Ydieresis Ocircumflex -25
+KPX Ydieresis Odieresis -25
+KPX Ydieresis Ograve -25
+KPX Ydieresis Ohungarumlaut -25
+KPX Ydieresis Omacron -25
+KPX Ydieresis Oslash -25
+KPX Ydieresis Otilde -25
+KPX Ydieresis a -92
+KPX Ydieresis aacute -92
+KPX Ydieresis abreve -92
+KPX Ydieresis acircumflex -92
+KPX Ydieresis adieresis -92
+KPX Ydieresis agrave -92
+KPX Ydieresis amacron -92
+KPX Ydieresis aogonek -92
+KPX Ydieresis aring -92
+KPX Ydieresis atilde -92
+KPX Ydieresis colon -92
+KPX Ydieresis comma -92
+KPX Ydieresis e -111
+KPX Ydieresis eacute -111
+KPX Ydieresis ecaron -111
+KPX Ydieresis ecircumflex -71
+KPX Ydieresis edieresis -71
+KPX Ydieresis edotaccent -111
+KPX Ydieresis egrave -71
+KPX Ydieresis emacron -71
+KPX Ydieresis eogonek -111
+KPX Ydieresis hyphen -92
+KPX Ydieresis i -55
+KPX Ydieresis iacute -55
+KPX Ydieresis iogonek -55
+KPX Ydieresis o -111
+KPX Ydieresis oacute -111
+KPX Ydieresis ocircumflex -111
+KPX Ydieresis odieresis -111
+KPX Ydieresis ograve -111
+KPX Ydieresis ohungarumlaut -111
+KPX Ydieresis omacron -111
+KPX Ydieresis oslash -111
+KPX Ydieresis otilde -111
+KPX Ydieresis period -74
+KPX Ydieresis semicolon -92
+KPX Ydieresis u -92
+KPX Ydieresis uacute -92
+KPX Ydieresis ucircumflex -92
+KPX Ydieresis udieresis -92
+KPX Ydieresis ugrave -92
+KPX Ydieresis uhungarumlaut -92
+KPX Ydieresis umacron -92
+KPX Ydieresis uogonek -92
+KPX Ydieresis uring -92
+KPX b b -10
+KPX b period -40
+KPX b u -20
+KPX b uacute -20
+KPX b ucircumflex -20
+KPX b udieresis -20
+KPX b ugrave -20
+KPX b uhungarumlaut -20
+KPX b umacron -20
+KPX b uogonek -20
+KPX b uring -20
+KPX c h -10
+KPX c k -10
+KPX c kcommaaccent -10
+KPX cacute h -10
+KPX cacute k -10
+KPX cacute kcommaaccent -10
+KPX ccaron h -10
+KPX ccaron k -10
+KPX ccaron kcommaaccent -10
+KPX ccedilla h -10
+KPX ccedilla k -10
+KPX ccedilla kcommaaccent -10
+KPX comma quotedblright -95
+KPX comma quoteright -95
+KPX e b -10
+KPX eacute b -10
+KPX ecaron b -10
+KPX ecircumflex b -10
+KPX edieresis b -10
+KPX edotaccent b -10
+KPX egrave b -10
+KPX emacron b -10
+KPX eogonek b -10
+KPX f comma -10
+KPX f dotlessi -30
+KPX f e -10
+KPX f eacute -10
+KPX f edotaccent -10
+KPX f eogonek -10
+KPX f f -18
+KPX f o -10
+KPX f oacute -10
+KPX f ocircumflex -10
+KPX f ograve -10
+KPX f ohungarumlaut -10
+KPX f oslash -10
+KPX f otilde -10
+KPX f period -10
+KPX f quoteright 55
+KPX k e -30
+KPX k eacute -30
+KPX k ecaron -30
+KPX k ecircumflex -30
+KPX k edieresis -30
+KPX k edotaccent -30
+KPX k egrave -30
+KPX k emacron -30
+KPX k eogonek -30
+KPX k o -10
+KPX k oacute -10
+KPX k ocircumflex -10
+KPX k odieresis -10
+KPX k ograve -10
+KPX k ohungarumlaut -10
+KPX k omacron -10
+KPX k oslash -10
+KPX k otilde -10
+KPX kcommaaccent e -30
+KPX kcommaaccent eacute -30
+KPX kcommaaccent ecaron -30
+KPX kcommaaccent ecircumflex -30
+KPX kcommaaccent edieresis -30
+KPX kcommaaccent edotaccent -30
+KPX kcommaaccent egrave -30
+KPX kcommaaccent emacron -30
+KPX kcommaaccent eogonek -30
+KPX kcommaaccent o -10
+KPX kcommaaccent oacute -10
+KPX kcommaaccent ocircumflex -10
+KPX kcommaaccent odieresis -10
+KPX kcommaaccent ograve -10
+KPX kcommaaccent ohungarumlaut -10
+KPX kcommaaccent omacron -10
+KPX kcommaaccent oslash -10
+KPX kcommaaccent otilde -10
+KPX n v -40
+KPX nacute v -40
+KPX ncaron v -40
+KPX ncommaaccent v -40
+KPX ntilde v -40
+KPX o v -15
+KPX o w -25
+KPX o x -10
+KPX o y -10
+KPX o yacute -10
+KPX o ydieresis -10
+KPX oacute v -15
+KPX oacute w -25
+KPX oacute x -10
+KPX oacute y -10
+KPX oacute yacute -10
+KPX oacute ydieresis -10
+KPX ocircumflex v -15
+KPX ocircumflex w -25
+KPX ocircumflex x -10
+KPX ocircumflex y -10
+KPX ocircumflex yacute -10
+KPX ocircumflex ydieresis -10
+KPX odieresis v -15
+KPX odieresis w -25
+KPX odieresis x -10
+KPX odieresis y -10
+KPX odieresis yacute -10
+KPX odieresis ydieresis -10
+KPX ograve v -15
+KPX ograve w -25
+KPX ograve x -10
+KPX ograve y -10
+KPX ograve yacute -10
+KPX ograve ydieresis -10
+KPX ohungarumlaut v -15
+KPX ohungarumlaut w -25
+KPX ohungarumlaut x -10
+KPX ohungarumlaut y -10
+KPX ohungarumlaut yacute -10
+KPX ohungarumlaut ydieresis -10
+KPX omacron v -15
+KPX omacron w -25
+KPX omacron x -10
+KPX omacron y -10
+KPX omacron yacute -10
+KPX omacron ydieresis -10
+KPX oslash v -15
+KPX oslash w -25
+KPX oslash x -10
+KPX oslash y -10
+KPX oslash yacute -10
+KPX oslash ydieresis -10
+KPX otilde v -15
+KPX otilde w -25
+KPX otilde x -10
+KPX otilde y -10
+KPX otilde yacute -10
+KPX otilde ydieresis -10
+KPX period quotedblright -95
+KPX period quoteright -95
+KPX quoteleft quoteleft -74
+KPX quoteright d -15
+KPX quoteright dcroat -15
+KPX quoteright quoteright -74
+KPX quoteright r -15
+KPX quoteright racute -15
+KPX quoteright rcaron -15
+KPX quoteright rcommaaccent -15
+KPX quoteright s -74
+KPX quoteright sacute -74
+KPX quoteright scaron -74
+KPX quoteright scedilla -74
+KPX quoteright scommaaccent -74
+KPX quoteright space -74
+KPX quoteright t -37
+KPX quoteright tcommaaccent -37
+KPX quoteright v -15
+KPX r comma -65
+KPX r period -65
+KPX racute comma -65
+KPX racute period -65
+KPX rcaron comma -65
+KPX rcaron period -65
+KPX rcommaaccent comma -65
+KPX rcommaaccent period -65
+KPX space A -37
+KPX space Aacute -37
+KPX space Abreve -37
+KPX space Acircumflex -37
+KPX space Adieresis -37
+KPX space Agrave -37
+KPX space Amacron -37
+KPX space Aogonek -37
+KPX space Aring -37
+KPX space Atilde -37
+KPX space V -70
+KPX space W -70
+KPX space Y -70
+KPX space Yacute -70
+KPX space Ydieresis -70
+KPX v comma -37
+KPX v e -15
+KPX v eacute -15
+KPX v ecaron -15
+KPX v ecircumflex -15
+KPX v edieresis -15
+KPX v edotaccent -15
+KPX v egrave -15
+KPX v emacron -15
+KPX v eogonek -15
+KPX v o -15
+KPX v oacute -15
+KPX v ocircumflex -15
+KPX v odieresis -15
+KPX v ograve -15
+KPX v ohungarumlaut -15
+KPX v omacron -15
+KPX v oslash -15
+KPX v otilde -15
+KPX v period -37
+KPX w a -10
+KPX w aacute -10
+KPX w abreve -10
+KPX w acircumflex -10
+KPX w adieresis -10
+KPX w agrave -10
+KPX w amacron -10
+KPX w aogonek -10
+KPX w aring -10
+KPX w atilde -10
+KPX w comma -37
+KPX w e -10
+KPX w eacute -10
+KPX w ecaron -10
+KPX w ecircumflex -10
+KPX w edieresis -10
+KPX w edotaccent -10
+KPX w egrave -10
+KPX w emacron -10
+KPX w eogonek -10
+KPX w o -15
+KPX w oacute -15
+KPX w ocircumflex -15
+KPX w odieresis -15
+KPX w ograve -15
+KPX w ohungarumlaut -15
+KPX w omacron -15
+KPX w oslash -15
+KPX w otilde -15
+KPX w period -37
+KPX x e -10
+KPX x eacute -10
+KPX x ecaron -10
+KPX x ecircumflex -10
+KPX x edieresis -10
+KPX x edotaccent -10
+KPX x egrave -10
+KPX x emacron -10
+KPX x eogonek -10
+KPX y comma -37
+KPX y period -37
+KPX yacute comma -37
+KPX yacute period -37
+KPX ydieresis comma -37
+KPX ydieresis period -37
+EndKernPairs
+EndKernData
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Courier-Bold.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Courier-Bold.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Courier-Bold.afm	(revision 2000)
@@ -0,0 +1,342 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+Comment Creation Date: Mon Jun 23 16:28:00 1997
+Comment UniqueID 43048
+Comment VMusage 41139 52164
+FontName Courier-Bold
+FullName Courier Bold
+FamilyName Courier
+Weight Bold
+ItalicAngle 0
+IsFixedPitch true
+CharacterSet ExtendedRoman
+FontBBox -113 -250 749 801 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 003.000
+Notice Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+EncodingScheme AdobeStandardEncoding
+CapHeight 562
+XHeight 439
+Ascender 629
+Descender -157
+StdHW 84
+StdVW 106
+StartCharMetrics 315
+C 32 ; WX 600 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 600 ; N exclam ; B 202 -15 398 572 ;
+C 34 ; WX 600 ; N quotedbl ; B 135 277 465 562 ;
+C 35 ; WX 600 ; N numbersign ; B 56 -45 544 651 ;
+C 36 ; WX 600 ; N dollar ; B 82 -126 519 666 ;
+C 37 ; WX 600 ; N percent ; B 5 -15 595 616 ;
+C 38 ; WX 600 ; N ampersand ; B 36 -15 546 543 ;
+C 39 ; WX 600 ; N quoteright ; B 171 277 423 562 ;
+C 40 ; WX 600 ; N parenleft ; B 219 -102 461 616 ;
+C 41 ; WX 600 ; N parenright ; B 139 -102 381 616 ;
+C 42 ; WX 600 ; N asterisk ; B 91 219 509 601 ;
+C 43 ; WX 600 ; N plus ; B 71 39 529 478 ;
+C 44 ; WX 600 ; N comma ; B 123 -111 393 174 ;
+C 45 ; WX 600 ; N hyphen ; B 100 203 500 313 ;
+C 46 ; WX 600 ; N period ; B 192 -15 408 171 ;
+C 47 ; WX 600 ; N slash ; B 98 -77 502 626 ;
+C 48 ; WX 600 ; N zero ; B 87 -15 513 616 ;
+C 49 ; WX 600 ; N one ; B 81 0 539 616 ;
+C 50 ; WX 600 ; N two ; B 61 0 499 616 ;
+C 51 ; WX 600 ; N three ; B 63 -15 501 616 ;
+C 52 ; WX 600 ; N four ; B 53 0 507 616 ;
+C 53 ; WX 600 ; N five ; B 70 -15 521 601 ;
+C 54 ; WX 600 ; N six ; B 90 -15 521 616 ;
+C 55 ; WX 600 ; N seven ; B 55 0 494 601 ;
+C 56 ; WX 600 ; N eight ; B 83 -15 517 616 ;
+C 57 ; WX 600 ; N nine ; B 79 -15 510 616 ;
+C 58 ; WX 600 ; N colon ; B 191 -15 407 425 ;
+C 59 ; WX 600 ; N semicolon ; B 123 -111 408 425 ;
+C 60 ; WX 600 ; N less ; B 66 15 523 501 ;
+C 61 ; WX 600 ; N equal ; B 71 118 529 398 ;
+C 62 ; WX 600 ; N greater ; B 77 15 534 501 ;
+C 63 ; WX 600 ; N question ; B 98 -14 501 580 ;
+C 64 ; WX 600 ; N at ; B 16 -15 584 616 ;
+C 65 ; WX 600 ; N A ; B -9 0 609 562 ;
+C 66 ; WX 600 ; N B ; B 30 0 573 562 ;
+C 67 ; WX 600 ; N C ; B 22 -18 560 580 ;
+C 68 ; WX 600 ; N D ; B 30 0 594 562 ;
+C 69 ; WX 600 ; N E ; B 25 0 560 562 ;
+C 70 ; WX 600 ; N F ; B 39 0 570 562 ;
+C 71 ; WX 600 ; N G ; B 22 -18 594 580 ;
+C 72 ; WX 600 ; N H ; B 20 0 580 562 ;
+C 73 ; WX 600 ; N I ; B 77 0 523 562 ;
+C 74 ; WX 600 ; N J ; B 37 -18 601 562 ;
+C 75 ; WX 600 ; N K ; B 21 0 599 562 ;
+C 76 ; WX 600 ; N L ; B 39 0 578 562 ;
+C 77 ; WX 600 ; N M ; B -2 0 602 562 ;
+C 78 ; WX 600 ; N N ; B 8 -12 610 562 ;
+C 79 ; WX 600 ; N O ; B 22 -18 578 580 ;
+C 80 ; WX 600 ; N P ; B 48 0 559 562 ;
+C 81 ; WX 600 ; N Q ; B 32 -138 578 580 ;
+C 82 ; WX 600 ; N R ; B 24 0 599 562 ;
+C 83 ; WX 600 ; N S ; B 47 -22 553 582 ;
+C 84 ; WX 600 ; N T ; B 21 0 579 562 ;
+C 85 ; WX 600 ; N U ; B 4 -18 596 562 ;
+C 86 ; WX 600 ; N V ; B -13 0 613 562 ;
+C 87 ; WX 600 ; N W ; B -18 0 618 562 ;
+C 88 ; WX 600 ; N X ; B 12 0 588 562 ;
+C 89 ; WX 600 ; N Y ; B 12 0 589 562 ;
+C 90 ; WX 600 ; N Z ; B 62 0 539 562 ;
+C 91 ; WX 600 ; N bracketleft ; B 245 -102 475 616 ;
+C 92 ; WX 600 ; N backslash ; B 99 -77 503 626 ;
+C 93 ; WX 600 ; N bracketright ; B 125 -102 355 616 ;
+C 94 ; WX 600 ; N asciicircum ; B 108 250 492 616 ;
+C 95 ; WX 600 ; N underscore ; B 0 -125 600 -75 ;
+C 96 ; WX 600 ; N quoteleft ; B 178 277 428 562 ;
+C 97 ; WX 600 ; N a ; B 35 -15 570 454 ;
+C 98 ; WX 600 ; N b ; B 0 -15 584 626 ;
+C 99 ; WX 600 ; N c ; B 40 -15 545 459 ;
+C 100 ; WX 600 ; N d ; B 20 -15 591 626 ;
+C 101 ; WX 600 ; N e ; B 40 -15 563 454 ;
+C 102 ; WX 600 ; N f ; B 83 0 547 626 ; L i fi ; L l fl ;
+C 103 ; WX 600 ; N g ; B 30 -146 580 454 ;
+C 104 ; WX 600 ; N h ; B 5 0 592 626 ;
+C 105 ; WX 600 ; N i ; B 77 0 523 658 ;
+C 106 ; WX 600 ; N j ; B 63 -146 440 658 ;
+C 107 ; WX 600 ; N k ; B 20 0 585 626 ;
+C 108 ; WX 600 ; N l ; B 77 0 523 626 ;
+C 109 ; WX 600 ; N m ; B -22 0 626 454 ;
+C 110 ; WX 600 ; N n ; B 18 0 592 454 ;
+C 111 ; WX 600 ; N o ; B 30 -15 570 454 ;
+C 112 ; WX 600 ; N p ; B -1 -142 570 454 ;
+C 113 ; WX 600 ; N q ; B 20 -142 591 454 ;
+C 114 ; WX 600 ; N r ; B 47 0 580 454 ;
+C 115 ; WX 600 ; N s ; B 68 -17 535 459 ;
+C 116 ; WX 600 ; N t ; B 47 -15 532 562 ;
+C 117 ; WX 600 ; N u ; B -1 -15 569 439 ;
+C 118 ; WX 600 ; N v ; B -1 0 601 439 ;
+C 119 ; WX 600 ; N w ; B -18 0 618 439 ;
+C 120 ; WX 600 ; N x ; B 6 0 594 439 ;
+C 121 ; WX 600 ; N y ; B -4 -142 601 439 ;
+C 122 ; WX 600 ; N z ; B 81 0 520 439 ;
+C 123 ; WX 600 ; N braceleft ; B 160 -102 464 616 ;
+C 124 ; WX 600 ; N bar ; B 255 -250 345 750 ;
+C 125 ; WX 600 ; N braceright ; B 136 -102 440 616 ;
+C 126 ; WX 600 ; N asciitilde ; B 71 153 530 356 ;
+C 161 ; WX 600 ; N exclamdown ; B 202 -146 398 449 ;
+C 162 ; WX 600 ; N cent ; B 66 -49 518 614 ;
+C 163 ; WX 600 ; N sterling ; B 72 -28 558 611 ;
+C 164 ; WX 600 ; N fraction ; B 25 -60 576 661 ;
+C 165 ; WX 600 ; N yen ; B 10 0 590 562 ;
+C 166 ; WX 600 ; N florin ; B -30 -131 572 616 ;
+C 167 ; WX 600 ; N section ; B 83 -70 517 580 ;
+C 168 ; WX 600 ; N currency ; B 54 49 546 517 ;
+C 169 ; WX 600 ; N quotesingle ; B 227 277 373 562 ;
+C 170 ; WX 600 ; N quotedblleft ; B 71 277 535 562 ;
+C 171 ; WX 600 ; N guillemotleft ; B 8 70 553 446 ;
+C 172 ; WX 600 ; N guilsinglleft ; B 141 70 459 446 ;
+C 173 ; WX 600 ; N guilsinglright ; B 141 70 459 446 ;
+C 174 ; WX 600 ; N fi ; B 12 0 593 626 ;
+C 175 ; WX 600 ; N fl ; B 12 0 593 626 ;
+C 177 ; WX 600 ; N endash ; B 65 203 535 313 ;
+C 178 ; WX 600 ; N dagger ; B 106 -70 494 580 ;
+C 179 ; WX 600 ; N daggerdbl ; B 106 -70 494 580 ;
+C 180 ; WX 600 ; N periodcentered ; B 196 165 404 351 ;
+C 182 ; WX 600 ; N paragraph ; B 6 -70 576 580 ;
+C 183 ; WX 600 ; N bullet ; B 140 132 460 430 ;
+C 184 ; WX 600 ; N quotesinglbase ; B 175 -142 427 143 ;
+C 185 ; WX 600 ; N quotedblbase ; B 65 -142 529 143 ;
+C 186 ; WX 600 ; N quotedblright ; B 61 277 525 562 ;
+C 187 ; WX 600 ; N guillemotright ; B 47 70 592 446 ;
+C 188 ; WX 600 ; N ellipsis ; B 26 -15 574 116 ;
+C 189 ; WX 600 ; N perthousand ; B -113 -15 713 616 ;
+C 191 ; WX 600 ; N questiondown ; B 99 -146 502 449 ;
+C 193 ; WX 600 ; N grave ; B 132 508 395 661 ;
+C 194 ; WX 600 ; N acute ; B 205 508 468 661 ;
+C 195 ; WX 600 ; N circumflex ; B 103 483 497 657 ;
+C 196 ; WX 600 ; N tilde ; B 89 493 512 636 ;
+C 197 ; WX 600 ; N macron ; B 88 505 512 585 ;
+C 198 ; WX 600 ; N breve ; B 83 468 517 631 ;
+C 199 ; WX 600 ; N dotaccent ; B 230 498 370 638 ;
+C 200 ; WX 600 ; N dieresis ; B 128 498 472 638 ;
+C 202 ; WX 600 ; N ring ; B 198 481 402 678 ;
+C 203 ; WX 600 ; N cedilla ; B 205 -206 387 0 ;
+C 205 ; WX 600 ; N hungarumlaut ; B 68 488 588 661 ;
+C 206 ; WX 600 ; N ogonek ; B 169 -199 400 0 ;
+C 207 ; WX 600 ; N caron ; B 103 493 497 667 ;
+C 208 ; WX 600 ; N emdash ; B -10 203 610 313 ;
+C 225 ; WX 600 ; N AE ; B -29 0 602 562 ;
+C 227 ; WX 600 ; N ordfeminine ; B 147 196 453 580 ;
+C 232 ; WX 600 ; N Lslash ; B 39 0 578 562 ;
+C 233 ; WX 600 ; N Oslash ; B 22 -22 578 584 ;
+C 234 ; WX 600 ; N OE ; B -25 0 595 562 ;
+C 235 ; WX 600 ; N ordmasculine ; B 147 196 453 580 ;
+C 241 ; WX 600 ; N ae ; B -4 -15 601 454 ;
+C 245 ; WX 600 ; N dotlessi ; B 77 0 523 439 ;
+C 248 ; WX 600 ; N lslash ; B 77 0 523 626 ;
+C 249 ; WX 600 ; N oslash ; B 30 -24 570 463 ;
+C 250 ; WX 600 ; N oe ; B -18 -15 611 454 ;
+C 251 ; WX 600 ; N germandbls ; B 22 -15 596 626 ;
+C -1 ; WX 600 ; N Idieresis ; B 77 0 523 761 ;
+C -1 ; WX 600 ; N eacute ; B 40 -15 563 661 ;
+C -1 ; WX 600 ; N abreve ; B 35 -15 570 661 ;
+C -1 ; WX 600 ; N uhungarumlaut ; B -1 -15 628 661 ;
+C -1 ; WX 600 ; N ecaron ; B 40 -15 563 667 ;
+C -1 ; WX 600 ; N Ydieresis ; B 12 0 589 761 ;
+C -1 ; WX 600 ; N divide ; B 71 16 529 500 ;
+C -1 ; WX 600 ; N Yacute ; B 12 0 589 784 ;
+C -1 ; WX 600 ; N Acircumflex ; B -9 0 609 780 ;
+C -1 ; WX 600 ; N aacute ; B 35 -15 570 661 ;
+C -1 ; WX 600 ; N Ucircumflex ; B 4 -18 596 780 ;
+C -1 ; WX 600 ; N yacute ; B -4 -142 601 661 ;
+C -1 ; WX 600 ; N scommaaccent ; B 68 -250 535 459 ;
+C -1 ; WX 600 ; N ecircumflex ; B 40 -15 563 657 ;
+C -1 ; WX 600 ; N Uring ; B 4 -18 596 801 ;
+C -1 ; WX 600 ; N Udieresis ; B 4 -18 596 761 ;
+C -1 ; WX 600 ; N aogonek ; B 35 -199 586 454 ;
+C -1 ; WX 600 ; N Uacute ; B 4 -18 596 784 ;
+C -1 ; WX 600 ; N uogonek ; B -1 -199 585 439 ;
+C -1 ; WX 600 ; N Edieresis ; B 25 0 560 761 ;
+C -1 ; WX 600 ; N Dcroat ; B 30 0 594 562 ;
+C -1 ; WX 600 ; N commaaccent ; B 205 -250 397 -57 ;
+C -1 ; WX 600 ; N copyright ; B 0 -18 600 580 ;
+C -1 ; WX 600 ; N Emacron ; B 25 0 560 708 ;
+C -1 ; WX 600 ; N ccaron ; B 40 -15 545 667 ;
+C -1 ; WX 600 ; N aring ; B 35 -15 570 678 ;
+C -1 ; WX 600 ; N Ncommaaccent ; B 8 -250 610 562 ;
+C -1 ; WX 600 ; N lacute ; B 77 0 523 801 ;
+C -1 ; WX 600 ; N agrave ; B 35 -15 570 661 ;
+C -1 ; WX 600 ; N Tcommaaccent ; B 21 -250 579 562 ;
+C -1 ; WX 600 ; N Cacute ; B 22 -18 560 784 ;
+C -1 ; WX 600 ; N atilde ; B 35 -15 570 636 ;
+C -1 ; WX 600 ; N Edotaccent ; B 25 0 560 761 ;
+C -1 ; WX 600 ; N scaron ; B 68 -17 535 667 ;
+C -1 ; WX 600 ; N scedilla ; B 68 -206 535 459 ;
+C -1 ; WX 600 ; N iacute ; B 77 0 523 661 ;
+C -1 ; WX 600 ; N lozenge ; B 66 0 534 740 ;
+C -1 ; WX 600 ; N Rcaron ; B 24 0 599 790 ;
+C -1 ; WX 600 ; N Gcommaaccent ; B 22 -250 594 580 ;
+C -1 ; WX 600 ; N ucircumflex ; B -1 -15 569 657 ;
+C -1 ; WX 600 ; N acircumflex ; B 35 -15 570 657 ;
+C -1 ; WX 600 ; N Amacron ; B -9 0 609 708 ;
+C -1 ; WX 600 ; N rcaron ; B 47 0 580 667 ;
+C -1 ; WX 600 ; N ccedilla ; B 40 -206 545 459 ;
+C -1 ; WX 600 ; N Zdotaccent ; B 62 0 539 761 ;
+C -1 ; WX 600 ; N Thorn ; B 48 0 557 562 ;
+C -1 ; WX 600 ; N Omacron ; B 22 -18 578 708 ;
+C -1 ; WX 600 ; N Racute ; B 24 0 599 784 ;
+C -1 ; WX 600 ; N Sacute ; B 47 -22 553 784 ;
+C -1 ; WX 600 ; N dcaron ; B 20 -15 727 626 ;
+C -1 ; WX 600 ; N Umacron ; B 4 -18 596 708 ;
+C -1 ; WX 600 ; N uring ; B -1 -15 569 678 ;
+C -1 ; WX 600 ; N threesuperior ; B 138 222 433 616 ;
+C -1 ; WX 600 ; N Ograve ; B 22 -18 578 784 ;
+C -1 ; WX 600 ; N Agrave ; B -9 0 609 784 ;
+C -1 ; WX 600 ; N Abreve ; B -9 0 609 784 ;
+C -1 ; WX 600 ; N multiply ; B 81 39 520 478 ;
+C -1 ; WX 600 ; N uacute ; B -1 -15 569 661 ;
+C -1 ; WX 600 ; N Tcaron ; B 21 0 579 790 ;
+C -1 ; WX 600 ; N partialdiff ; B 63 -38 537 728 ;
+C -1 ; WX 600 ; N ydieresis ; B -4 -142 601 638 ;
+C -1 ; WX 600 ; N Nacute ; B 8 -12 610 784 ;
+C -1 ; WX 600 ; N icircumflex ; B 73 0 523 657 ;
+C -1 ; WX 600 ; N Ecircumflex ; B 25 0 560 780 ;
+C -1 ; WX 600 ; N adieresis ; B 35 -15 570 638 ;
+C -1 ; WX 600 ; N edieresis ; B 40 -15 563 638 ;
+C -1 ; WX 600 ; N cacute ; B 40 -15 545 661 ;
+C -1 ; WX 600 ; N nacute ; B 18 0 592 661 ;
+C -1 ; WX 600 ; N umacron ; B -1 -15 569 585 ;
+C -1 ; WX 600 ; N Ncaron ; B 8 -12 610 790 ;
+C -1 ; WX 600 ; N Iacute ; B 77 0 523 784 ;
+C -1 ; WX 600 ; N plusminus ; B 71 24 529 515 ;
+C -1 ; WX 600 ; N brokenbar ; B 255 -175 345 675 ;
+C -1 ; WX 600 ; N registered ; B 0 -18 600 580 ;
+C -1 ; WX 600 ; N Gbreve ; B 22 -18 594 784 ;
+C -1 ; WX 600 ; N Idotaccent ; B 77 0 523 761 ;
+C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ;
+C -1 ; WX 600 ; N Egrave ; B 25 0 560 784 ;
+C -1 ; WX 600 ; N racute ; B 47 0 580 661 ;
+C -1 ; WX 600 ; N omacron ; B 30 -15 570 585 ;
+C -1 ; WX 600 ; N Zacute ; B 62 0 539 784 ;
+C -1 ; WX 600 ; N Zcaron ; B 62 0 539 790 ;
+C -1 ; WX 600 ; N greaterequal ; B 26 0 523 696 ;
+C -1 ; WX 600 ; N Eth ; B 30 0 594 562 ;
+C -1 ; WX 600 ; N Ccedilla ; B 22 -206 560 580 ;
+C -1 ; WX 600 ; N lcommaaccent ; B 77 -250 523 626 ;
+C -1 ; WX 600 ; N tcaron ; B 47 -15 532 703 ;
+C -1 ; WX 600 ; N eogonek ; B 40 -199 563 454 ;
+C -1 ; WX 600 ; N Uogonek ; B 4 -199 596 562 ;
+C -1 ; WX 600 ; N Aacute ; B -9 0 609 784 ;
+C -1 ; WX 600 ; N Adieresis ; B -9 0 609 761 ;
+C -1 ; WX 600 ; N egrave ; B 40 -15 563 661 ;
+C -1 ; WX 600 ; N zacute ; B 81 0 520 661 ;
+C -1 ; WX 600 ; N iogonek ; B 77 -199 523 658 ;
+C -1 ; WX 600 ; N Oacute ; B 22 -18 578 784 ;
+C -1 ; WX 600 ; N oacute ; B 30 -15 570 661 ;
+C -1 ; WX 600 ; N amacron ; B 35 -15 570 585 ;
+C -1 ; WX 600 ; N sacute ; B 68 -17 535 661 ;
+C -1 ; WX 600 ; N idieresis ; B 77 0 523 618 ;
+C -1 ; WX 600 ; N Ocircumflex ; B 22 -18 578 780 ;
+C -1 ; WX 600 ; N Ugrave ; B 4 -18 596 784 ;
+C -1 ; WX 600 ; N Delta ; B 6 0 594 688 ;
+C -1 ; WX 600 ; N thorn ; B -14 -142 570 626 ;
+C -1 ; WX 600 ; N twosuperior ; B 143 230 436 616 ;
+C -1 ; WX 600 ; N Odieresis ; B 22 -18 578 761 ;
+C -1 ; WX 600 ; N mu ; B -1 -142 569 439 ;
+C -1 ; WX 600 ; N igrave ; B 77 0 523 661 ;
+C -1 ; WX 600 ; N ohungarumlaut ; B 30 -15 668 661 ;
+C -1 ; WX 600 ; N Eogonek ; B 25 -199 576 562 ;
+C -1 ; WX 600 ; N dcroat ; B 20 -15 591 626 ;
+C -1 ; WX 600 ; N threequarters ; B -47 -60 648 661 ;
+C -1 ; WX 600 ; N Scedilla ; B 47 -206 553 582 ;
+C -1 ; WX 600 ; N lcaron ; B 77 0 597 626 ;
+C -1 ; WX 600 ; N Kcommaaccent ; B 21 -250 599 562 ;
+C -1 ; WX 600 ; N Lacute ; B 39 0 578 784 ;
+C -1 ; WX 600 ; N trademark ; B -9 230 749 562 ;
+C -1 ; WX 600 ; N edotaccent ; B 40 -15 563 638 ;
+C -1 ; WX 600 ; N Igrave ; B 77 0 523 784 ;
+C -1 ; WX 600 ; N Imacron ; B 77 0 523 708 ;
+C -1 ; WX 600 ; N Lcaron ; B 39 0 637 562 ;
+C -1 ; WX 600 ; N onehalf ; B -47 -60 648 661 ;
+C -1 ; WX 600 ; N lessequal ; B 26 0 523 696 ;
+C -1 ; WX 600 ; N ocircumflex ; B 30 -15 570 657 ;
+C -1 ; WX 600 ; N ntilde ; B 18 0 592 636 ;
+C -1 ; WX 600 ; N Uhungarumlaut ; B 4 -18 638 784 ;
+C -1 ; WX 600 ; N Eacute ; B 25 0 560 784 ;
+C -1 ; WX 600 ; N emacron ; B 40 -15 563 585 ;
+C -1 ; WX 600 ; N gbreve ; B 30 -146 580 661 ;
+C -1 ; WX 600 ; N onequarter ; B -56 -60 656 661 ;
+C -1 ; WX 600 ; N Scaron ; B 47 -22 553 790 ;
+C -1 ; WX 600 ; N Scommaaccent ; B 47 -250 553 582 ;
+C -1 ; WX 600 ; N Ohungarumlaut ; B 22 -18 628 784 ;
+C -1 ; WX 600 ; N degree ; B 86 243 474 616 ;
+C -1 ; WX 600 ; N ograve ; B 30 -15 570 661 ;
+C -1 ; WX 600 ; N Ccaron ; B 22 -18 560 790 ;
+C -1 ; WX 600 ; N ugrave ; B -1 -15 569 661 ;
+C -1 ; WX 600 ; N radical ; B -19 -104 473 778 ;
+C -1 ; WX 600 ; N Dcaron ; B 30 0 594 790 ;
+C -1 ; WX 600 ; N rcommaaccent ; B 47 -250 580 454 ;
+C -1 ; WX 600 ; N Ntilde ; B 8 -12 610 759 ;
+C -1 ; WX 600 ; N otilde ; B 30 -15 570 636 ;
+C -1 ; WX 600 ; N Rcommaaccent ; B 24 -250 599 562 ;
+C -1 ; WX 600 ; N Lcommaaccent ; B 39 -250 578 562 ;
+C -1 ; WX 600 ; N Atilde ; B -9 0 609 759 ;
+C -1 ; WX 600 ; N Aogonek ; B -9 -199 625 562 ;
+C -1 ; WX 600 ; N Aring ; B -9 0 609 801 ;
+C -1 ; WX 600 ; N Otilde ; B 22 -18 578 759 ;
+C -1 ; WX 600 ; N zdotaccent ; B 81 0 520 638 ;
+C -1 ; WX 600 ; N Ecaron ; B 25 0 560 790 ;
+C -1 ; WX 600 ; N Iogonek ; B 77 -199 523 562 ;
+C -1 ; WX 600 ; N kcommaaccent ; B 20 -250 585 626 ;
+C -1 ; WX 600 ; N minus ; B 71 203 529 313 ;
+C -1 ; WX 600 ; N Icircumflex ; B 77 0 523 780 ;
+C -1 ; WX 600 ; N ncaron ; B 18 0 592 667 ;
+C -1 ; WX 600 ; N tcommaaccent ; B 47 -250 532 562 ;
+C -1 ; WX 600 ; N logicalnot ; B 71 103 529 413 ;
+C -1 ; WX 600 ; N odieresis ; B 30 -15 570 638 ;
+C -1 ; WX 600 ; N udieresis ; B -1 -15 569 638 ;
+C -1 ; WX 600 ; N notequal ; B 12 -47 537 563 ;
+C -1 ; WX 600 ; N gcommaaccent ; B 30 -146 580 714 ;
+C -1 ; WX 600 ; N eth ; B 58 -27 543 626 ;
+C -1 ; WX 600 ; N zcaron ; B 81 0 520 667 ;
+C -1 ; WX 600 ; N ncommaaccent ; B 18 -250 592 454 ;
+C -1 ; WX 600 ; N onesuperior ; B 153 230 447 616 ;
+C -1 ; WX 600 ; N imacron ; B 77 0 523 585 ;
+C -1 ; WX 600 ; N Euro ; B 0 0 0 0 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-BoldOblique.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-BoldOblique.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-BoldOblique.ufm	(revision 2000)
@@ -0,0 +1,719 @@
+StartFontMetrics 4.1
+FontName Nimbus_Sans_L_Bold_Italic
+FullName Nimbus Sans L Bold Italic
+Notice 
+EncodingScheme FontSpecific
+FamilyName Nimbus Sans L
+Weight Bold Italic
+Version 1.0
+Characters 661
+ItalicAngle -12.0
+Ascender 1193
+Descender -309
+UnderlineThickness 69
+UnderlinePosition -111
+IsFixedPitch false
+FontBBox -177 -309 1199 1193
+StartCharMetrics 700
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .null ; G 1 ; B 0 0 0 0 ;
+U -1 ; WX 477 ; N exclam ; G 2 ; B 112 0 417 726 ;
+U -1 ; WX 639 ; N quotedbl ; G 3 ; B 177 470 579 729 ;
+U -1 ; WX 720 ; N numbersign ; G 4 ; B 33 -32 660 697 ;
+U -1 ; WX 688 ; N dollar ; G 5 ; B 59 -126 628 763 ;
+U -1 ; WX 963 ; N percent ; G 6 ; B 129 -20 903 709 ;
+U -1 ; WX 780 ; N ampersand ; G 7 ; B 89 -23 720 723 ;
+U -1 ; WX 403 ; N quotesingle ; G 104 ; B 177 470 343 729 ;
+U -1 ; WX 518 ; N parenleft ; G 9 ; B 84 -200 458 729 ;
+U -1 ; WX 416 ; N parenright ; G 10 ; B -21 -200 356 729 ;
+U -1 ; WX 538 ; N asterisk ; G 11 ; B 145 407 478 729 ;
+U -1 ; WX 656 ; N plus ; G 12 ; B 87 -10 596 473 ;
+U -1 ; WX 305 ; N comma ; G 13 ; B 27 -174 245 146 ;
+U -1 ; WX 431 ; N hyphen ; G 14 ; B 70 207 371 342 ;
+U -1 ; WX 305 ; N period ; G 15 ; B 64 0 245 146 ;
+U -1 ; WX 487 ; N slash ; G 16 ; B -1 -14 427 714 ;
+U -1 ; WX 674 ; N zero ; G 17 ; B 81 -23 614 724 ;
+U -1 ; WX 589 ; N one ; G 18 ; B 172 0 529 709 ;
+U -1 ; WX 688 ; N two ; G 19 ; B 30 0 628 724 ;
+U -1 ; WX 673 ; N three ; G 20 ; B 67 -23 613 724 ;
+U -1 ; WX 659 ; N four ; G 21 ; B 57 0 599 709 ;
+U -1 ; WX 701 ; N five ; G 22 ; B 59 -23 641 709 ;
+U -1 ; WX 685 ; N six ; G 23 ; B 85 -23 625 724 ;
+U -1 ; WX 739 ; N seven ; G 24 ; B 131 0 679 709 ;
+U -1 ; WX 680 ; N eight ; G 25 ; B 60 -23 620 724 ;
+U -1 ; WX 671 ; N nine ; G 26 ; B 68 -23 611 724 ;
+U -1 ; WX 434 ; N colon ; G 27 ; B 113 0 374 520 ;
+U -1 ; WX 434 ; N semicolon ; G 28 ; B 76 -174 374 520 ;
+U -1 ; WX 690 ; N less ; G 29 ; B 77 -10 630 474 ;
+U -1 ; WX 682 ; N equal ; G 30 ; B 61 52 622 412 ;
+U -1 ; WX 651 ; N greater ; G 31 ; B 38 -10 591 474 ;
+U -1 ; WX 732 ; N question ; G 32 ; B 168 0 672 744 ;
+U -1 ; WX 1092 ; N at ; G 33 ; B 73 -137 1032 745 ;
+U -1 ; WX 763 ; N A ; G 34 ; B 26 0 703 729 ;
+U -1 ; WX 822 ; N B ; G 35 ; B 82 0 762 729 ;
+U -1 ; WX 853 ; N C ; G 36 ; B 107 -23 793 741 ;
+U -1 ; WX 836 ; N D ; G 37 ; B 77 0 776 729 ;
+U -1 ; WX 822 ; N E ; G 38 ; B 79 0 762 729 ;
+U -1 ; WX 801 ; N F ; G 39 ; B 74 0 741 729 ;
+U -1 ; WX 878 ; N G ; G 40 ; B 107 -23 819 741 ;
+U -1 ; WX 872 ; N H ; G 41 ; B 68 0 812 729 ;
+U -1 ; WX 428 ; N I ; G 42 ; B 63 0 368 729 ;
+U -1 ; WX 701 ; N J ; G 43 ; B 59 -23 641 729 ;
+U -1 ; WX 903 ; N K ; G 44 ; B 74 0 843 729 ;
+U -1 ; WX 666 ; N L ; G 45 ; B 80 0 606 729 ;
+U -1 ; WX 991 ; N M ; G 46 ; B 66 0 931 729 ;
+U -1 ; WX 876 ; N N ; G 47 ; B 68 0 816 729 ;
+U -1 ; WX 888 ; N O ; G 48 ; B 106 -23 828 741 ;
+U -1 ; WX 807 ; N P ; G 49 ; B 76 0 747 729 ;
+U -1 ; WX 891 ; N Q ; G 50 ; B 109 -54 831 741 ;
+U -1 ; WX 845 ; N R ; G 51 ; B 80 0 785 729 ;
+U -1 ; WX 785 ; N S ; G 52 ; B 76 -23 725 741 ;
+U -1 ; WX 813 ; N T ; G 53 ; B 142 0 753 729 ;
+U -1 ; WX 869 ; N U ; G 54 ; B 119 -23 809 729 ;
+U -1 ; WX 862 ; N V ; G 55 ; B 179 0 802 729 ;
+U -1 ; WX 1147 ; N W ; G 56 ; B 168 0 1087 729 ;
+U -1 ; WX 862 ; N X ; G 57 ; B 22 0 802 729 ;
+U -1 ; WX 865 ; N Y ; G 58 ; B 182 0 805 729 ;
+U -1 ; WX 793 ; N Z ; G 59 ; B 30 0 733 729 ;
+U -1 ; WX 523 ; N bracketleft ; G 60 ; B 23 -200 463 729 ;
+U -1 ; WX 345 ; N backslash ; G 61 ; B 138 -23 285 709 ;
+U -1 ; WX 475 ; N bracketright ; G 62 ; B -25 -200 415 729 ;
+U -1 ; WX 640 ; N asciicircum ; G 63 ; B 119 270 580 695 ;
+U -1 ; WX 610 ; N underscore ; G 64 ; B -65 -145 550 -76 ;
+U -1 ; WX 399 ; N grave ; G 124 ; B 175 607 339 757 ;
+U -1 ; WX 638 ; N a ; G 66 ; B 50 -23 578 549 ;
+U -1 ; WX 700 ; N b ; G 67 ; B 59 -23 640 729 ;
+U -1 ; WX 657 ; N c ; G 68 ; B 77 -23 597 549 ;
+U -1 ; WX 760 ; N d ; G 69 ; B 79 -23 700 729 ;
+U -1 ; WX 651 ; N e ; G 70 ; B 64 -23 591 549 ;
+U -1 ; WX 524 ; N f ; G 71 ; B 90 0 464 729 ;
+U -1 ; WX 716 ; N g ; G 72 ; B 26 -218 656 549 ;
+U -1 ; WX 689 ; N h ; G 73 ; B 67 0 629 729 ;
+U -1 ; WX 422 ; N i ; G 74 ; B 67 0 362 729 ;
+U -1 ; WX 425 ; N j ; G 75 ; B -43 -218 365 729 ;
+U -1 ; WX 711 ; N k ; G 76 ; B 59 0 651 729 ;
+U -1 ; WX 422 ; N l ; G 77 ; B 67 0 362 729 ;
+U -1 ; WX 971 ; N m ; G 78 ; B 60 0 911 549 ;
+U -1 ; WX 689 ; N n ; G 79 ; B 63 0 629 549 ;
+U -1 ; WX 694 ; N o ; G 80 ; B 82 -23 634 549 ;
+U -1 ; WX 697 ; N p ; G 81 ; B 11 -218 637 549 ;
+U -1 ; WX 719 ; N q ; G 82 ; B 72 -218 659 549 ;
+U -1 ; WX 547 ; N r ; G 83 ; B 63 0 487 549 ;
+U -1 ; WX 649 ; N s ; G 84 ; B 60 -23 589 549 ;
+U -1 ; WX 474 ; N t ; G 85 ; B 101 -23 414 674 ;
+U -1 ; WX 716 ; N u ; G 86 ; B 88 -23 656 540 ;
+U -1 ; WX 711 ; N v ; G 87 ; B 129 0 651 540 ;
+U -1 ; WX 941 ; N w ; G 88 ; B 120 0 881 540 ;
+U -1 ; WX 708 ; N x ; G 89 ; B 16 0 648 540 ;
+U -1 ; WX 713 ; N y ; G 90 ; B 37 -219 653 540 ;
+U -1 ; WX 635 ; N z ; G 91 ; B 21 0 575 540 ;
+U -1 ; WX 532 ; N braceleft ; G 92 ; B 84 -200 472 729 ;
+U -1 ; WX 395 ; N bar ; G 93 ; B 57 -200 335 729 ;
+U -1 ; WX 479 ; N braceright ; G 94 ; B 29 -200 419 729 ;
+U -1 ; WX 641 ; N asciitilde ; G 95 ; B 97 142 581 314 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 708 ; N Euro ; G 289 ; B 21 -23 648 724 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 288 ; N quotesinglbase ; G 117 ; B 37 -135 228 125 ;
+U -1 ; WX 750 ; N florin ; G 101 ; B -21 -220 690 744 ;
+U -1 ; WX 522 ; N quotedblbase ; G 118 ; B 37 -135 462 125 ;
+U -1 ; WX 1000 ; N ellipsis ; G 121 ; B 92 0 939 146 ;
+U -1 ; WX 686 ; N dagger ; G 112 ; B 109 -194 626 709 ;
+U -1 ; WX 683 ; N daggerdbl ; G 113 ; B 35 -194 623 709 ;
+U -1 ; WX 513 ; N circumflex ; G 126 ; B 135 610 453 757 ;
+U -1 ; WX 1081 ; N perthousand ; G 122 ; B 72 -21 1021 739 ;
+U -1 ; WX 785 ; N Scaron ; G 189 ; B 76 -23 725 936 ;
+U -1 ; WX 411 ; N guilsinglleft ; G 107 ; B 128 72 351 481 ;
+U -1 ; WX 1167 ; N OE ; G 142 ; B 90 -23 1107 741 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 793 ; N Zcaron ; G 200 ; B 30 0 733 936 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 417 ; N quoteleft ; G 65 ; B 167 469 357 729 ;
+U -1 ; WX 416 ; N quoteright ; G 8 ; B 165 469 356 729 ;
+U -1 ; WX 648 ; N quotedblleft ; G 105 ; B 171 469 588 729 ;
+U -1 ; WX 655 ; N quotedblright ; G 119 ; B 173 469 595 729 ;
+U -1 ; WX 427 ; N bullet ; G 116 ; B 111 175 367 425 ;
+U -1 ; WX 684 ; N endash ; G 111 ; B 35 207 624 311 ;
+U -1 ; WX 1130 ; N emdash ; G 137 ; B 37 207 1070 311 ;
+U -1 ; WX 560 ; N tilde ; G 127 ; B 117 622 500 744 ;
+U -1 ; WX 1147 ; N trademark ; G 297 ; B 213 273 1087 729 ;
+U -1 ; WX 657 ; N scaron ; G 253 ; B 60 -23 597 757 ;
+U -1 ; WX 379 ; N guilsinglright ; G 108 ; B 96 72 319 481 ;
+U -1 ; WX 1046 ; N oe ; G 148 ; B 71 -23 986 549 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 635 ; N zcaron ; G 264 ; B 21 0 575 757 ;
+U -1 ; WX 865 ; N Ydieresis ; G 204 ; B 182 0 805 920 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 391 ; N exclamdown ; G 96 ; B 26 -186 331 540 ;
+U -1 ; WX 658 ; N cent ; G 97 ; B 79 -124 598 634 ;
+U -1 ; WX 689 ; N sterling ; G 98 ; B 49 -23 629 715 ;
+U -1 ; WX 704 ; N currency ; G 103 ; B 66 100 644 604 ;
+U -1 ; WX 762 ; N yen ; G 100 ; B 107 0 702 704 ;
+U -1 ; WX 395 ; N brokenbar ; G 314 ; B 57 -200 335 729 ;
+U -1 ; WX 656 ; N section ; G 102 ; B 56 -201 596 723 ;
+U -1 ; WX 529 ; N dieresis ; G 131 ; B 147 621 469 741 ;
+U -1 ; WX 897 ; N copyright ; G 303 ; B 54 -22 837 743 ;
+U -1 ; WX 511 ; N ordfeminine ; G 139 ; B 96 262 451 729 ;
+U -1 ; WX 631 ; N guillemotleft ; G 106 ; B 135 72 571 481 ;
+U -1 ; WX 692 ; N logicalnot ; G 311 ; B 103 86 632 376 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 897 ; N registered ; G 304 ; B 55 -22 837 743 ;
+U -1 ; WX 527 ; N macron ; G 128 ; B 150 642 467 722 ;
+U -1 ; WX 606 ; N degree ; G 293 ; B 240 383 543 686 ;
+U -1 ; WX 690 ; N plusminus ; G 298 ; B 50 0 630 633 ;
+U -1 ; WX 559 ; N twosuperior ; G 291 ; B 124 284 499 718 ;
+U -1 ; WX 550 ; N threesuperior ; G 292 ; B 147 271 490 718 ;
+U -1 ; WX 535 ; N acute ; G 125 ; B 247 607 475 757 ;
+U -1 ; WX 715 ; N mu ; G 315 ; B 11 -220 655 540 ;
+U -1 ; WX 744 ; N paragraph ; G 115 ; B 121 -191 684 729 ;
+U -1 ; WX 330 ; N periodcentered ; G 114 ; B 143 182 270 282 ;
+U -1 ; WX 333 ; N cedilla ; G 133 ; B -13 -220 270 0 ;
+U -1 ; WX 498 ; N onesuperior ; G 290 ; B 210 284 438 709 ;
+U -1 ; WX 531 ; N ordmasculine ; G 143 ; B 92 262 471 729 ;
+U -1 ; WX 593 ; N guillemotright ; G 120 ; B 103 72 533 481 ;
+U -1 ; WX 1092 ; N onequarter ; G 300 ; B 210 -20 1032 715 ;
+U -1 ; WX 1110 ; N onehalf ; G 299 ; B 210 -20 1050 715 ;
+U -1 ; WX 1092 ; N threequarters ; G 301 ; B 147 -20 1032 718 ;
+U -1 ; WX 616 ; N questiondown ; G 123 ; B 52 -204 556 540 ;
+U -1 ; WX 763 ; N Agrave ; G 152 ; B 26 0 703 936 ;
+U -1 ; WX 774 ; N Aacute ; G 151 ; B 26 0 714 936 ;
+U -1 ; WX 763 ; N Acircumflex ; G 153 ; B 26 0 703 936 ;
+U -1 ; WX 799 ; N Atilde ; G 155 ; B 26 0 739 923 ;
+U -1 ; WX 768 ; N Adieresis ; G 150 ; B 26 0 708 920 ;
+U -1 ; WX 763 ; N Aring ; G 156 ; B 26 0 703 953 ;
+U -1 ; WX 1164 ; N AE ; G 138 ; B 1 0 1104 729 ;
+U -1 ; WX 853 ; N Ccedilla ; G 158 ; B 107 -220 793 741 ;
+U -1 ; WX 822 ; N Egrave ; G 164 ; B 79 0 762 936 ;
+U -1 ; WX 822 ; N Eacute ; G 163 ; B 79 0 762 936 ;
+U -1 ; WX 822 ; N Ecircumflex ; G 165 ; B 79 0 762 936 ;
+U -1 ; WX 822 ; N Edieresis ; G 162 ; B 79 0 762 920 ;
+U -1 ; WX 428 ; N Igrave ; G 172 ; B 63 0 368 936 ;
+U -1 ; WX 549 ; N Iacute ; G 171 ; B 63 0 489 936 ;
+U -1 ; WX 527 ; N Icircumflex ; G 173 ; B 63 0 467 936 ;
+U -1 ; WX 543 ; N Idieresis ; G 170 ; B 63 0 483 920 ;
+U -1 ; WX 836 ; N Eth ; G 283 ; B 73 0 776 729 ;
+U -1 ; WX 876 ; N Ntilde ; G 179 ; B 68 0 816 923 ;
+U -1 ; WX 888 ; N Ograve ; G 182 ; B 106 -23 828 936 ;
+U -1 ; WX 888 ; N Oacute ; G 181 ; B 106 -23 828 936 ;
+U -1 ; WX 888 ; N Ocircumflex ; G 183 ; B 106 -23 828 936 ;
+U -1 ; WX 888 ; N Otilde ; G 184 ; B 106 -23 828 923 ;
+U -1 ; WX 888 ; N Odieresis ; G 180 ; B 106 -23 828 920 ;
+U -1 ; WX 642 ; N multiply ; G 295 ; B 102 18 582 444 ;
+U -1 ; WX 966 ; N Oslash ; G 141 ; B 34 -39 906 749 ;
+U -1 ; WX 869 ; N Ugrave ; G 194 ; B 119 -23 809 936 ;
+U -1 ; WX 869 ; N Uacute ; G 193 ; B 119 -23 809 936 ;
+U -1 ; WX 869 ; N Ucircumflex ; G 195 ; B 119 -23 809 936 ;
+U -1 ; WX 869 ; N Udieresis ; G 192 ; B 119 -23 809 920 ;
+U -1 ; WX 865 ; N Yacute ; G 198 ; B 182 0 805 936 ;
+U -1 ; WX 781 ; N Thorn ; G 285 ; B 76 0 721 729 ;
+U -1 ; WX 714 ; N germandbls ; G 149 ; B 67 -23 654 729 ;
+U -1 ; WX 638 ; N agrave ; G 218 ; B 50 -23 578 757 ;
+U -1 ; WX 647 ; N aacute ; G 217 ; B 50 -23 587 757 ;
+U -1 ; WX 638 ; N acircumflex ; G 219 ; B 50 -23 578 757 ;
+U -1 ; WX 672 ; N atilde ; G 221 ; B 50 -23 612 744 ;
+U -1 ; WX 641 ; N adieresis ; G 216 ; B 50 -23 581 741 ;
+U -1 ; WX 638 ; N aring ; G 222 ; B 50 -23 578 773 ;
+U -1 ; WX 987 ; N ae ; G 144 ; B 54 -23 927 549 ;
+U -1 ; WX 657 ; N ccedilla ; G 226 ; B 77 -220 597 549 ;
+U -1 ; WX 651 ; N egrave ; G 230 ; B 64 -23 591 757 ;
+U -1 ; WX 651 ; N eacute ; G 229 ; B 64 -23 591 757 ;
+U -1 ; WX 651 ; N ecircumflex ; G 231 ; B 64 -23 591 757 ;
+U -1 ; WX 651 ; N edieresis ; G 228 ; B 64 -23 591 741 ;
+U -1 ; WX 382 ; N igrave ; G 238 ; B 67 0 322 757 ;
+U -1 ; WX 508 ; N iacute ; G 237 ; B 67 0 448 757 ;
+U -1 ; WX 486 ; N icircumflex ; G 239 ; B 67 0 426 757 ;
+U -1 ; WX 502 ; N idieresis ; G 236 ; B 67 0 442 741 ;
+U -1 ; WX 693 ; N eth ; G 287 ; B 83 -23 633 744 ;
+U -1 ; WX 706 ; N ntilde ; G 244 ; B 63 0 646 744 ;
+U -1 ; WX 694 ; N ograve ; G 247 ; B 82 -23 634 757 ;
+U -1 ; WX 694 ; N oacute ; G 246 ; B 82 -23 634 757 ;
+U -1 ; WX 694 ; N ocircumflex ; G 248 ; B 82 -23 634 757 ;
+U -1 ; WX 699 ; N otilde ; G 249 ; B 82 -23 639 744 ;
+U -1 ; WX 694 ; N odieresis ; G 245 ; B 82 -23 634 741 ;
+U -1 ; WX 666 ; N divide ; G 296 ; B 77 0 606 462 ;
+U -1 ; WX 769 ; N oslash ; G 147 ; B 12 -38 709 557 ;
+U -1 ; WX 716 ; N ugrave ; G 258 ; B 88 -23 656 757 ;
+U -1 ; WX 716 ; N uacute ; G 257 ; B 88 -23 656 757 ;
+U -1 ; WX 716 ; N ucircumflex ; G 259 ; B 88 -23 656 757 ;
+U -1 ; WX 716 ; N udieresis ; G 256 ; B 88 -23 656 741 ;
+U -1 ; WX 713 ; N yacute ; G 262 ; B 37 -219 653 757 ;
+U -1 ; WX 697 ; N thorn ; G 288 ; B 11 -218 637 729 ;
+U -1 ; WX 713 ; N ydieresis ; G 266 ; B 37 -219 653 741 ;
+U -1 ; WX 549 ; N fraction ; G 99 ; B -177 -20 489 715 ;
+U -1 ; WX 763 ; N fi ; G 109 ; B 85 0 703 729 ;
+U -1 ; WX 761 ; N fl ; G 110 ; B 88 0 701 729 ;
+U -1 ; WX 515 ; N breve ; G 129 ; B 188 611 455 754 ;
+U -1 ; WX 437 ; N dotaccent ; G 130 ; B 241 621 377 741 ;
+U -1 ; WX 458 ; N ring ; G 132 ; B 214 593 398 773 ;
+U -1 ; WX 558 ; N hungarumlaut ; G 134 ; B 82 610 498 757 ;
+U -1 ; WX 333 ; N ogonek ; G 135 ; B 23 -233 248 0 ;
+U -1 ; WX 545 ; N caron ; G 136 ; B 167 610 485 757 ;
+U -1 ; WX 684 ; N Lslash ; G 140 ; B 54 0 624 729 ;
+U -1 ; WX 382 ; N dotlessi ; G 145 ; B 67 0 322 540 ;
+U -1 ; WX 432 ; N lslash ; G 146 ; B 50 0 372 729 ;
+U -1 ; WX 763 ; N Abreve ; G 154 ; B 26 0 703 934 ;
+U -1 ; WX 763 ; N Aogonek ; G 157 ; B 26 -233 703 729 ;
+U -1 ; WX 853 ; N Cacute ; G 159 ; B 107 -23 793 936 ;
+U -1 ; WX 853 ; N Ccaron ; G 160 ; B 107 -23 793 936 ;
+U -1 ; WX 836 ; N Dcaron ; G 161 ; B 77 0 776 936 ;
+U -1 ; WX 822 ; N Ecaron ; G 166 ; B 79 0 762 936 ;
+U -1 ; WX 822 ; N Edotaccent ; G 167 ; B 79 0 762 918 ;
+U -1 ; WX 822 ; N Eogonek ; G 168 ; B 79 -233 762 729 ;
+U -1 ; WX 878 ; N Gbreve ; G 169 ; B 107 -23 819 934 ;
+U -1 ; WX 448 ; N Idotaccent ; G 174 ; B 63 0 388 918 ;
+U -1 ; WX 666 ; N Lacute ; G 175 ; B 80 0 606 936 ;
+U -1 ; WX 667 ; N Lcaron ; G 176 ; B 80 0 607 729 ;
+U -1 ; WX 876 ; N Nacute ; G 177 ; B 68 0 816 936 ;
+U -1 ; WX 876 ; N Ncaron ; G 178 ; B 68 0 816 936 ;
+U -1 ; WX 901 ; N Ohungarumlaut ; G 185 ; B 106 -23 841 936 ;
+U -1 ; WX 845 ; N Racute ; G 186 ; B 80 0 785 936 ;
+U -1 ; WX 845 ; N Rcaron ; G 187 ; B 80 0 785 936 ;
+U -1 ; WX 785 ; N Sacute ; G 188 ; B 76 -23 725 936 ;
+U -1 ; WX 785 ; N Scedilla ; G 190 ; B 76 -220 725 741 ;
+U -1 ; WX 813 ; N Tcaron ; G 191 ; B 142 0 753 936 ;
+U -1 ; WX 869 ; N Uring ; G 196 ; B 119 -23 809 953 ;
+U -1 ; WX 869 ; N Uhungarumlaut ; G 197 ; B 119 -23 809 936 ;
+U -1 ; WX 793 ; N Zacute ; G 199 ; B 30 0 733 936 ;
+U -1 ; WX 793 ; N Zdotaccent ; G 201 ; B 30 0 733 918 ;
+U -1 ; WX 766 ; N Amacron ; G 202 ; B 26 0 706 901 ;
+U -1 ; WX 813 ; N Tcommaaccent ; G 203 ; B 142 -307 753 729 ;
+U -1 ; WX 822 ; N Emacron ; G 205 ; B 79 0 762 901 ;
+U -1 ; WX 526 ; N Imacron ; G 206 ; B 63 0 466 901 ;
+U -1 ; WX 428 ; N Iogonek ; G 207 ; B 7 -233 368 729 ;
+U -1 ; WX 903 ; N Kcommaaccent ; G 208 ; B 74 -307 843 729 ;
+U -1 ; WX 666 ; N Lcommaaccent ; G 209 ; B 80 -309 606 729 ;
+U -1 ; WX 876 ; N Ncommaaccent ; G 210 ; B 68 -307 816 729 ;
+U -1 ; WX 888 ; N Omacron ; G 211 ; B 106 -23 828 901 ;
+U -1 ; WX 845 ; N Rcommaaccent ; G 212 ; B 80 -307 785 729 ;
+U -1 ; WX 878 ; N Gcommaaccent ; G 213 ; B 107 -307 819 741 ;
+U -1 ; WX 869 ; N Umacron ; G 214 ; B 119 -23 809 901 ;
+U -1 ; WX 869 ; N Uogonek ; G 215 ; B 119 -233 809 729 ;
+U -1 ; WX 638 ; N abreve ; G 220 ; B 50 -23 578 754 ;
+U -1 ; WX 638 ; N aogonek ; G 223 ; B 50 -233 578 549 ;
+U -1 ; WX 657 ; N cacute ; G 224 ; B 77 -23 597 757 ;
+U -1 ; WX 667 ; N ccaron ; G 225 ; B 77 -23 607 757 ;
+U -1 ; WX 942 ; N dcaron ; G 227 ; B 79 -23 882 729 ;
+U -1 ; WX 653 ; N ecaron ; G 232 ; B 64 -23 593 757 ;
+U -1 ; WX 651 ; N edotaccent ; G 233 ; B 64 -23 591 741 ;
+U -1 ; WX 651 ; N eogonek ; G 234 ; B 64 -233 591 549 ;
+U -1 ; WX 716 ; N gbreve ; G 235 ; B 26 -218 656 754 ;
+U -1 ; WX 534 ; N lacute ; G 240 ; B 67 0 474 936 ;
+U -1 ; WX 604 ; N lcaron ; G 241 ; B 67 0 544 729 ;
+U -1 ; WX 689 ; N nacute ; G 242 ; B 63 0 629 757 ;
+U -1 ; WX 689 ; N ncaron ; G 243 ; B 63 0 629 757 ;
+U -1 ; WX 770 ; N ohungarumlaut ; G 250 ; B 82 -23 710 757 ;
+U -1 ; WX 560 ; N racute ; G 251 ; B 63 0 500 757 ;
+U -1 ; WX 649 ; N sacute ; G 252 ; B 60 -23 589 757 ;
+U -1 ; WX 649 ; N scommaaccent ; G 254 ; B 60 -307 589 549 ;
+U -1 ; WX 638 ; N tcaron ; G 255 ; B 101 -23 578 829 ;
+U -1 ; WX 716 ; N uring ; G 260 ; B 88 -23 656 773 ;
+U -1 ; WX 757 ; N uhungarumlaut ; G 261 ; B 88 -23 697 757 ;
+U -1 ; WX 635 ; N zacute ; G 263 ; B 21 0 575 757 ;
+U -1 ; WX 635 ; N zdotaccent ; G 265 ; B 21 0 575 741 ;
+U -1 ; WX 474 ; N tcommaaccent ; G 267 ; B 62 -307 414 674 ;
+U -1 ; WX 639 ; N amacron ; G 268 ; B 50 -23 579 722 ;
+U -1 ; WX 651 ; N emacron ; G 269 ; B 64 -23 591 722 ;
+U -1 ; WX 484 ; N imacron ; G 270 ; B 67 0 424 722 ;
+U -1 ; WX 711 ; N kcommaaccent ; G 271 ; B 59 -307 651 729 ;
+U -1 ; WX 422 ; N lcommaaccent ; G 272 ; B 11 -307 362 729 ;
+U -1 ; WX 689 ; N ncommaaccent ; G 273 ; B 63 -307 629 549 ;
+U -1 ; WX 694 ; N omacron ; G 274 ; B 82 -23 634 722 ;
+U -1 ; WX 547 ; N rcommaaccent ; G 275 ; B 8 -307 487 549 ;
+U -1 ; WX 716 ; N umacron ; G 276 ; B 88 -23 656 722 ;
+U -1 ; WX 716 ; N uogonek ; G 277 ; B 88 -233 656 540 ;
+U -1 ; WX 593 ; N rcaron ; G 278 ; B 63 0 533 757 ;
+U -1 ; WX 649 ; N scedilla ; G 279 ; B 60 -220 589 549 ;
+U -1 ; WX 716 ; N gcommaaccent ; G 280 ; B 26 -218 656 854 ;
+U -1 ; WX 411 ; N iogonek ; G 281 ; B 0 -233 351 729 ;
+U -1 ; WX 785 ; N Scommaaccent ; G 282 ; B 76 -307 725 741 ;
+U -1 ; WX 836 ; N Dcroat ; G 284 ; B 73 0 776 729 ;
+U -1 ; WX 806 ; N dcroat ; G 286 ; B 79 -23 746 729 ;
+U -1 ; WX 666 ; N minus ; G 294 ; B 77 172 606 292 ;
+U -1 ; WX 333 ; N commaaccent ; G 302 ; B 43 -307 217 -60 ;
+U -1 ; WX 601 ; N lozenge ; G 305 ; B 95 0 541 744 ;
+U -1 ; WX 781 ; N Delta ; G 306 ; B 8 0 721 729 ;
+U -1 ; WX 682 ; N notequal ; G 307 ; B 61 -74 622 544 ;
+U -1 ; WX 765 ; N radical ; G 308 ; B 102 -36 705 913 ;
+U -1 ; WX 717 ; N lessequal ; G 309 ; B 35 0 657 624 ;
+U -1 ; WX 687 ; N greaterequal ; G 310 ; B 44 0 627 624 ;
+U -1 ; WX 820 ; N summation ; G 312 ; B -18 -97 760 760 ;
+U -1 ; WX 518 ; N partialdiff ; G 313 ; B 22 -15 458 750 ;
+U -1 ; WX 763 ; N afii10017 ; G 316 ; B 26 0 703 729 ;
+U -1 ; WX 809 ; N afii10018 ; G 317 ; B 82 0 749 729 ;
+U -1 ; WX 823 ; N afii10019 ; G 318 ; B 82 0 763 729 ;
+U -1 ; WX 801 ; N afii10020 ; G 319 ; B 74 0 741 729 ;
+U -1 ; WX 918 ; N afii10021 ; G 320 ; B -50 -150 851 729 ;
+U -1 ; WX 821 ; N afii10022 ; G 321 ; B 79 0 761 729 ;
+U -1 ; WX 821 ; N afii10023 ; G 322 ; B 79 0 761 922 ;
+U -1 ; WX 1249 ; N afii10024 ; G 323 ; B 22 0 1189 729 ;
+U -1 ; WX 776 ; N afii10025 ; G 324 ; B 67 -23 716 741 ;
+U -1 ; WX 876 ; N afii10026 ; G 325 ; B 68 0 816 729 ;
+U -1 ; WX 876 ; N afii10027 ; G 326 ; B 68 0 816 944 ;
+U -1 ; WX 901 ; N afii10028 ; G 327 ; B 74 0 841 729 ;
+U -1 ; WX 794 ; N afii10029 ; G 328 ; B -31 0 734 729 ;
+U -1 ; WX 993 ; N afii10030 ; G 329 ; B 68 0 933 729 ;
+U -1 ; WX 872 ; N afii10031 ; G 330 ; B 68 0 812 729 ;
+U -1 ; WX 889 ; N afii10032 ; G 331 ; B 106 -23 829 741 ;
+U -1 ; WX 872 ; N afii10033 ; G 332 ; B 68 0 812 729 ;
+U -1 ; WX 799 ; N afii10034 ; G 333 ; B 68 0 739 729 ;
+U -1 ; WX 847 ; N afii10035 ; G 334 ; B 106 -23 787 741 ;
+U -1 ; WX 813 ; N afii10036 ; G 335 ; B 142 0 753 729 ;
+U -1 ; WX 893 ; N afii10037 ; G 336 ; B 136 0 833 729 ;
+U -1 ; WX 933 ; N afii10038 ; G 337 ; B 23 0 873 729 ;
+U -1 ; WX 834 ; N afii10039 ; G 338 ; B 22 0 774 729 ;
+U -1 ; WX 880 ; N afii10040 ; G 339 ; B 68 -150 820 729 ;
+U -1 ; WX 821 ; N afii10041 ; G 340 ; B 161 0 761 729 ;
+U -1 ; WX 1251 ; N afii10042 ; G 341 ; B 68 0 1191 729 ;
+U -1 ; WX 1259 ; N afii10043 ; G 342 ; B 68 -150 1199 729 ;
+U -1 ; WX 916 ; N afii10044 ; G 343 ; B 142 0 856 729 ;
+U -1 ; WX 1097 ; N afii10045 ; G 344 ; B 66 0 1037 729 ;
+U -1 ; WX 739 ; N afii10046 ; G 345 ; B 66 0 679 729 ;
+U -1 ; WX 847 ; N afii10047 ; G 346 ; B 106 -23 787 741 ;
+U -1 ; WX 1198 ; N afii10048 ; G 347 ; B 66 -23 1138 741 ;
+U -1 ; WX 848 ; N afii10049 ; G 348 ; B 22 0 788 729 ;
+U -1 ; WX 636 ; N afii10065 ; G 349 ; B 51 -23 576 549 ;
+U -1 ; WX 747 ; N afii10066 ; G 350 ; B 76 -23 687 777 ;
+U -1 ; WX 662 ; N afii10067 ; G 351 ; B 60 0 602 540 ;
+U -1 ; WX 583 ; N afii10068 ; G 352 ; B 60 0 523 540 ;
+U -1 ; WX 804 ; N afii10069 ; G 353 ; B -22 -125 732 540 ;
+U -1 ; WX 647 ; N afii10070 ; G 354 ; B 64 -23 587 549 ;
+U -1 ; WX 647 ; N afii10071 ; G 355 ; B 64 -23 587 729 ;
+U -1 ; WX 927 ; N afii10072 ; G 356 ; B 16 0 867 540 ;
+U -1 ; WX 640 ; N afii10073 ; G 357 ; B 56 -23 580 549 ;
+U -1 ; WX 718 ; N afii10074 ; G 358 ; B 60 0 658 540 ;
+U -1 ; WX 718 ; N afii10075 ; G 359 ; B 60 0 658 754 ;
+U -1 ; WX 684 ; N afii10076 ; G 360 ; B 59 0 624 540 ;
+U -1 ; WX 660 ; N afii10077 ; G 361 ; B -28 0 600 540 ;
+U -1 ; WX 779 ; N afii10078 ; G 362 ; B 60 0 719 540 ;
+U -1 ; WX 718 ; N afii10079 ; G 363 ; B 60 0 658 540 ;
+U -1 ; WX 695 ; N afii10080 ; G 364 ; B 82 -23 635 549 ;
+U -1 ; WX 718 ; N afii10081 ; G 365 ; B 60 0 658 540 ;
+U -1 ; WX 664 ; N afii10082 ; G 366 ; B -24 -218 604 549 ;
+U -1 ; WX 655 ; N afii10083 ; G 367 ; B 77 -23 595 549 ;
+U -1 ; WX 595 ; N afii10084 ; G 368 ; B 101 0 535 540 ;
+U -1 ; WX 699 ; N afii10085 ; G 369 ; B 37 -219 639 540 ;
+U -1 ; WX 1042 ; N afii10086 ; G 370 ; B 72 -218 982 719 ;
+U -1 ; WX 701 ; N afii10087 ; G 371 ; B 16 0 641 540 ;
+U -1 ; WX 744 ; N afii10088 ; G 372 ; B 60 -125 684 540 ;
+U -1 ; WX 688 ; N afii10089 ; G 373 ; B 127 0 628 540 ;
+U -1 ; WX 1016 ; N afii10090 ; G 374 ; B 60 0 956 540 ;
+U -1 ; WX 1042 ; N afii10091 ; G 375 ; B 60 -125 982 540 ;
+U -1 ; WX 744 ; N afii10092 ; G 376 ; B 100 0 684 540 ;
+U -1 ; WX 896 ; N afii10093 ; G 377 ; B 60 0 836 540 ;
+U -1 ; WX 627 ; N afii10094 ; G 378 ; B 60 0 567 540 ;
+U -1 ; WX 657 ; N afii10095 ; G 379 ; B 82 -23 597 549 ;
+U -1 ; WX 971 ; N afii10096 ; G 380 ; B 60 -23 911 549 ;
+U -1 ; WX 718 ; N afii10097 ; G 381 ; B 37 0 658 540 ;
+U -1 ; WX 821 ; N uni0400 ; G 382 ; B 79 0 761 951 ;
+U -1 ; WX 874 ; N afii10051 ; G 383 ; B 142 -166 814 729 ;
+U -1 ; WX 801 ; N afii10052 ; G 384 ; B 74 0 741 951 ;
+U -1 ; WX 847 ; N afii10053 ; G 385 ; B 106 -23 787 741 ;
+U -1 ; WX 706 ; N afii10054 ; G 386 ; B -22 -23 653 741 ;
+U -1 ; WX 350 ; N afii10055 ; G 387 ; B -14 0 290 729 ;
+U -1 ; WX 464 ; N afii10056 ; G 388 ; B -14 0 404 921 ;
+U -1 ; WX 626 ; N afii10057 ; G 389 ; B -25 -23 566 729 ;
+U -1 ; WX 1103 ; N afii10058 ; G 390 ; B -31 0 1043 729 ;
+U -1 ; WX 1103 ; N afii10059 ; G 391 ; B -9 0 1043 729 ;
+U -1 ; WX 854 ; N afii10060 ; G 392 ; B 142 0 794 729 ;
+U -1 ; WX 901 ; N afii10061 ; G 393 ; B 74 0 841 951 ;
+U -1 ; WX 876 ; N uni040D ; G 394 ; B 68 0 816 951 ;
+U -1 ; WX 893 ; N afii10062 ; G 395 ; B 136 0 833 944 ;
+U -1 ; WX 811 ; N afii10145 ; G 396 ; B 6 -150 751 729 ;
+U -1 ; WX 647 ; N uni0450 ; G 397 ; B 64 -23 587 759 ;
+U -1 ; WX 685 ; N afii10099 ; G 398 ; B 67 -132 625 729 ;
+U -1 ; WX 617 ; N afii10100 ; G 399 ; B 60 0 557 759 ;
+U -1 ; WX 656 ; N afii10101 ; G 400 ; B 82 -23 597 549 ;
+U -1 ; WX 591 ; N afii10102 ; G 401 ; B -15 -23 549 549 ;
+U -1 ; WX 422 ; N afii10103 ; G 402 ; B 67 0 362 729 ;
+U -1 ; WX 501 ; N afii10104 ; G 403 ; B 67 0 441 729 ;
+U -1 ; WX 425 ; N afii10105 ; G 404 ; B -43 -218 365 729 ;
+U -1 ; WX 923 ; N afii10106 ; G 405 ; B -28 0 863 540 ;
+U -1 ; WX 900 ; N afii10107 ; G 406 ; B 6 0 840 540 ;
+U -1 ; WX 685 ; N afii10108 ; G 407 ; B 67 0 625 729 ;
+U -1 ; WX 684 ; N afii10109 ; G 408 ; B 59 0 624 759 ;
+U -1 ; WX 718 ; N uni045D ; G 409 ; B 60 0 658 759 ;
+U -1 ; WX 699 ; N afii10110 ; G 410 ; B 37 -219 639 752 ;
+U -1 ; WX 675 ; N afii10193 ; G 411 ; B 16 -125 615 540 ;
+U -1 ; WX 739 ; N uni048C ; G 412 ; B 66 0 679 729 ;
+U -1 ; WX 619 ; N uni048D ; G 413 ; B 60 0 552 540 ;
+U -1 ; WX 799 ; N uni048E ; G 414 ; B 68 0 763 729 ;
+U -1 ; WX 664 ; N uni048F ; G 415 ; B -24 -218 611 549 ;
+U -1 ; WX 738 ; N afii10050 ; G 416 ; B -18 0 678 864 ;
+U -1 ; WX 543 ; N afii10098 ; G 417 ; B -7 0 483 666 ;
+U -1 ; WX 801 ; N uni0492 ; G 418 ; B 74 0 741 729 ;
+U -1 ; WX 583 ; N uni0493 ; G 419 ; B 34 0 523 540 ;
+U -1 ; WX 801 ; N uni0494 ; G 420 ; B 74 -166 741 729 ;
+U -1 ; WX 583 ; N uni0495 ; G 421 ; B 60 -132 523 540 ;
+U -1 ; WX 1249 ; N uni0496 ; G 422 ; B 22 -150 1189 729 ;
+U -1 ; WX 927 ; N uni0497 ; G 423 ; B 16 -125 867 540 ;
+U -1 ; WX 776 ; N uni0498 ; G 424 ; B 67 -233 716 741 ;
+U -1 ; WX 640 ; N uni0499 ; G 425 ; B 56 -233 580 549 ;
+U -1 ; WX 901 ; N uni049A ; G 426 ; B 74 -150 841 729 ;
+U -1 ; WX 684 ; N uni049B ; G 427 ; B 59 -125 624 540 ;
+U -1 ; WX 901 ; N uni049C ; G 428 ; B 74 0 841 729 ;
+U -1 ; WX 684 ; N uni049D ; G 429 ; B 59 0 624 540 ;
+U -1 ; WX 901 ; N uni049E ; G 430 ; B 74 0 841 729 ;
+U -1 ; WX 684 ; N uni049F ; G 431 ; B 59 0 624 540 ;
+U -1 ; WX 1070 ; N uni04A0 ; G 432 ; B 142 0 1010 729 ;
+U -1 ; WX 805 ; N uni04A1 ; G 433 ; B 100 0 745 540 ;
+U -1 ; WX 872 ; N uni04A2 ; G 434 ; B 68 -150 812 729 ;
+U -1 ; WX 734 ; N uni04A3 ; G 435 ; B 60 -125 674 540 ;
+U -1 ; WX 1182 ; N uni04A4 ; G 436 ; B 68 0 1122 729 ;
+U -1 ; WX 915 ; N uni04A5 ; G 437 ; B 60 0 855 540 ;
+U -1 ; WX 1167 ; N uni04A6 ; G 438 ; B 68 -166 1107 729 ;
+U -1 ; WX 922 ; N uni04A7 ; G 439 ; B 60 -132 862 540 ;
+U -1 ; WX 847 ; N uni04A8 ; G 440 ; B 106 -23 787 741 ;
+U -1 ; WX 655 ; N uni04A9 ; G 441 ; B 77 -23 595 549 ;
+U -1 ; WX 847 ; N uni04AA ; G 442 ; B 106 -233 787 741 ;
+U -1 ; WX 655 ; N uni04AB ; G 443 ; B 77 -233 595 549 ;
+U -1 ; WX 813 ; N uni04AC ; G 444 ; B 142 -150 753 729 ;
+U -1 ; WX 595 ; N uni04AD ; G 445 ; B 101 -125 535 540 ;
+U -1 ; WX 865 ; N uni04AE ; G 446 ; B 182 0 805 729 ;
+U -1 ; WX 783 ; N uni04AF ; G 447 ; B 160 -189 723 540 ;
+U -1 ; WX 865 ; N uni04B0 ; G 448 ; B 102 0 805 729 ;
+U -1 ; WX 783 ; N uni04B1 ; G 449 ; B 94 -189 723 540 ;
+U -1 ; WX 859 ; N uni04B2 ; G 450 ; B 22 -150 799 729 ;
+U -1 ; WX 706 ; N uni04B3 ; G 451 ; B 16 -125 646 540 ;
+U -1 ; WX 1014 ; N uni04B4 ; G 452 ; B 142 -150 954 729 ;
+U -1 ; WX 809 ; N uni04B5 ; G 453 ; B 101 -125 749 540 ;
+U -1 ; WX 829 ; N uni04B6 ; G 454 ; B 161 -150 769 729 ;
+U -1 ; WX 714 ; N uni04B7 ; G 455 ; B 127 -125 654 540 ;
+U -1 ; WX 821 ; N uni04B8 ; G 456 ; B 161 0 761 729 ;
+U -1 ; WX 688 ; N uni04B9 ; G 457 ; B 127 0 628 540 ;
+U -1 ; WX 821 ; N uni04BA ; G 458 ; B 161 0 761 729 ;
+U -1 ; WX 688 ; N uni04BB ; G 459 ; B 127 0 628 540 ;
+U -1 ; WX 847 ; N uni04BC ; G 460 ; B -79 -23 787 758 ;
+U -1 ; WX 647 ; N uni04BD ; G 461 ; B -62 -23 587 549 ;
+U -1 ; WX 847 ; N uni04BE ; G 462 ; B -79 -233 787 758 ;
+U -1 ; WX 647 ; N uni04BF ; G 463 ; B -62 -233 587 549 ;
+U -1 ; WX 428 ; N uni04C0 ; G 464 ; B 63 0 368 729 ;
+U -1 ; WX 1249 ; N uni04C1 ; G 465 ; B 22 0 1189 944 ;
+U -1 ; WX 927 ; N uni04C2 ; G 466 ; B 16 0 867 752 ;
+U -1 ; WX 901 ; N uni04C3 ; G 467 ; B 74 -163 841 729 ;
+U -1 ; WX 684 ; N uni04C4 ; G 468 ; B 59 -132 624 540 ;
+U -1 ; WX 872 ; N uni04C7 ; G 469 ; B 68 -166 812 729 ;
+U -1 ; WX 718 ; N uni04C8 ; G 470 ; B 60 -132 658 540 ;
+U -1 ; WX 821 ; N uni04CB ; G 471 ; B 161 -150 761 729 ;
+U -1 ; WX 688 ; N uni04CC ; G 472 ; B 127 -125 628 540 ;
+U -1 ; WX 763 ; N uni04D0 ; G 473 ; B 26 0 703 944 ;
+U -1 ; WX 636 ; N uni04D1 ; G 474 ; B 51 -23 576 752 ;
+U -1 ; WX 772 ; N uni04D2 ; G 475 ; B 26 0 712 921 ;
+U -1 ; WX 636 ; N uni04D3 ; G 476 ; B 51 -23 576 729 ;
+U -1 ; WX 1164 ; N uni04D4 ; G 477 ; B 1 0 1104 729 ;
+U -1 ; WX 987 ; N uni04D5 ; G 478 ; B 54 -23 927 549 ;
+U -1 ; WX 821 ; N uni04D6 ; G 479 ; B 79 0 761 944 ;
+U -1 ; WX 647 ; N uni04D7 ; G 480 ; B 64 -23 587 752 ;
+U -1 ; WX 847 ; N uni04D8 ; G 481 ; B 101 -23 787 741 ;
+U -1 ; WX 647 ; N afii10846 ; G 482 ; B 64 -23 587 549 ;
+U -1 ; WX 847 ; N uni04DA ; G 483 ; B 101 -23 787 921 ;
+U -1 ; WX 647 ; N uni04DB ; G 484 ; B 64 -23 587 729 ;
+U -1 ; WX 1249 ; N uni04DC ; G 485 ; B 22 0 1189 921 ;
+U -1 ; WX 927 ; N uni04DD ; G 486 ; B 16 0 867 729 ;
+U -1 ; WX 776 ; N uni04DE ; G 487 ; B 67 -23 716 921 ;
+U -1 ; WX 644 ; N uni04DF ; G 488 ; B 56 -23 584 729 ;
+U -1 ; WX 776 ; N uni04E0 ; G 489 ; B 67 -23 716 741 ;
+U -1 ; WX 640 ; N uni04E1 ; G 490 ; B 56 -23 580 549 ;
+U -1 ; WX 876 ; N uni04E2 ; G 491 ; B 68 0 816 881 ;
+U -1 ; WX 718 ; N uni04E3 ; G 492 ; B 60 0 658 689 ;
+U -1 ; WX 876 ; N uni04E4 ; G 493 ; B 68 0 816 921 ;
+U -1 ; WX 718 ; N uni04E5 ; G 494 ; B 60 0 658 729 ;
+U -1 ; WX 889 ; N uni04E6 ; G 495 ; B 106 -23 829 921 ;
+U -1 ; WX 695 ; N uni04E7 ; G 496 ; B 82 -23 635 729 ;
+U -1 ; WX 889 ; N uni04E8 ; G 497 ; B 93 -23 842 741 ;
+U -1 ; WX 695 ; N uni04E9 ; G 498 ; B 54 -23 663 549 ;
+U -1 ; WX 889 ; N uni04EA ; G 499 ; B 93 -23 842 921 ;
+U -1 ; WX 695 ; N uni04EB ; G 500 ; B 54 -23 663 729 ;
+U -1 ; WX 847 ; N uni04EC ; G 501 ; B 106 -23 787 921 ;
+U -1 ; WX 657 ; N uni04ED ; G 502 ; B 82 -23 597 729 ;
+U -1 ; WX 893 ; N uni04EE ; G 503 ; B 136 0 833 881 ;
+U -1 ; WX 699 ; N uni04EF ; G 504 ; B 37 -219 639 689 ;
+U -1 ; WX 893 ; N uni04F0 ; G 505 ; B 136 0 833 921 ;
+U -1 ; WX 699 ; N uni04F1 ; G 506 ; B 37 -219 639 729 ;
+U -1 ; WX 893 ; N uni04F2 ; G 507 ; B 136 0 833 948 ;
+U -1 ; WX 746 ; N uni04F3 ; G 508 ; B 37 -219 686 756 ;
+U -1 ; WX 821 ; N uni04F4 ; G 509 ; B 161 0 761 921 ;
+U -1 ; WX 688 ; N uni04F5 ; G 510 ; B 127 0 628 729 ;
+U -1 ; WX 1097 ; N uni04F8 ; G 511 ; B 66 0 1037 921 ;
+U -1 ; WX 896 ; N uni04F9 ; G 512 ; B 60 0 836 729 ;
+U -1 ; WX 583 ; N uniF6C4 ; G 513 ; B 60 0 523 540 ;
+U -1 ; WX 747 ; N uniF6C5 ; G 514 ; B 76 -23 687 777 ;
+U -1 ; WX 804 ; N uniF6C6 ; G 515 ; B -22 -125 732 540 ;
+U -1 ; WX 718 ; N uniF6C7 ; G 516 ; B 60 0 658 540 ;
+U -1 ; WX 595 ; N uniF6C8 ; G 517 ; B 101 0 535 540 ;
+U -1 ; WX 853 ; N Ccircumflex ; G 518 ; B 107 -23 793 948 ;
+U -1 ; WX 657 ; N ccircumflex ; G 519 ; B 77 -23 597 756 ;
+U -1 ; WX 853 ; N Cdotaccent ; G 520 ; B 107 -23 793 921 ;
+U -1 ; WX 657 ; N cdotaccent ; G 521 ; B 77 -23 597 729 ;
+U -1 ; WX 822 ; N Ebreve ; G 522 ; B 79 0 762 944 ;
+U -1 ; WX 651 ; N ebreve ; G 523 ; B 64 -23 591 752 ;
+U -1 ; WX 878 ; N Gcircumflex ; G 524 ; B 107 -23 819 948 ;
+U -1 ; WX 716 ; N gcircumflex ; G 525 ; B 26 -218 656 756 ;
+U -1 ; WX 878 ; N Gdotaccent ; G 526 ; B 107 -23 819 921 ;
+U -1 ; WX 716 ; N gdotaccent ; G 527 ; B 26 -218 656 729 ;
+U -1 ; WX 872 ; N Hcircumflex ; G 528 ; B 68 0 812 948 ;
+U -1 ; WX 693 ; N hcircumflex ; G 529 ; B 67 0 633 936 ;
+U -1 ; WX 942 ; N Hbar ; G 530 ; B 88 0 882 729 ;
+U -1 ; WX 689 ; N hbar ; G 531 ; B 67 0 629 729 ;
+U -1 ; WX 573 ; N Itilde ; G 532 ; B 63 0 513 923 ;
+U -1 ; WX 532 ; N itilde ; G 533 ; B 67 0 472 731 ;
+U -1 ; WX 529 ; N Ibreve ; G 534 ; B 63 0 469 944 ;
+U -1 ; WX 488 ; N ibreve ; G 535 ; B 67 0 428 752 ;
+U -1 ; WX 936 ; N IJ ; G 536 ; B 63 -23 876 729 ;
+U -1 ; WX 635 ; N ij ; G 537 ; B 67 -218 575 729 ;
+U -1 ; WX 801 ; N Jcircumflex ; G 538 ; B 59 -23 741 948 ;
+U -1 ; WX 502 ; N jcircumflex ; G 539 ; B -43 -218 442 862 ;
+U -1 ; WX 684 ; N kgreenlandic ; G 540 ; B 59 0 624 540 ;
+U -1 ; WX 666 ; N Ldot ; G 541 ; B 80 0 606 729 ;
+U -1 ; WX 578 ; N ldot ; G 542 ; B 67 0 518 729 ;
+U -1 ; WX 689 ; N napostrophe ; G 543 ; B 63 0 629 840 ;
+U -1 ; WX 876 ; N Eng ; G 544 ; B 68 -166 816 729 ;
+U -1 ; WX 689 ; N eng ; G 545 ; B 63 -132 629 549 ;
+U -1 ; WX 888 ; N Obreve ; G 546 ; B 106 -23 828 944 ;
+U -1 ; WX 694 ; N obreve ; G 547 ; B 82 -23 634 752 ;
+U -1 ; WX 785 ; N Scircumflex ; G 548 ; B 76 -23 725 948 ;
+U -1 ; WX 649 ; N scircumflex ; G 549 ; B 60 -23 589 756 ;
+U -1 ; WX 813 ; N _d_550 ; G 550 ; B 120 -220 753 729 ;
+U -1 ; WX 474 ; N _d_551 ; G 551 ; B 22 -240 414 674 ;
+U -1 ; WX 813 ; N Tbar ; G 552 ; B 142 0 753 729 ;
+U -1 ; WX 474 ; N tbar ; G 553 ; B 66 -23 414 674 ;
+U -1 ; WX 869 ; N Utilde ; G 554 ; B 119 -23 809 923 ;
+U -1 ; WX 716 ; N utilde ; G 555 ; B 88 -23 656 731 ;
+U -1 ; WX 869 ; N Ubreve ; G 556 ; B 119 -23 809 944 ;
+U -1 ; WX 716 ; N ubreve ; G 557 ; B 88 -23 656 752 ;
+U -1 ; WX 1147 ; N Wcircumflex ; G 558 ; B 168 0 1087 948 ;
+U -1 ; WX 941 ; N wcircumflex ; G 559 ; B 120 0 881 756 ;
+U -1 ; WX 865 ; N Ycircumflex ; G 560 ; B 182 0 805 948 ;
+U -1 ; WX 713 ; N ycircumflex ; G 561 ; B 37 -219 653 756 ;
+U -1 ; WX 524 ; N longs ; G 562 ; B 90 0 464 729 ;
+U -1 ; WX 1199 ; N afii61352 ; G 563 ; B 68 0 1139 729 ;
+U -1 ; WX 1000 ; N infinity ; G 564 ; B 92 105 940 579 ;
+U -1 ; WX 865 ; N uni1EF6 ; G 565 ; B 182 0 805 1043 ;
+U -1 ; WX 713 ; N uni1EF7 ; G 566 ; B 37 -219 653 864 ;
+U -1 ; WX 865 ; N uni1EF4 ; G 567 ; B 182 -252 805 729 ;
+U -1 ; WX 713 ; N uni1EF5 ; G 568 ; B 37 -252 653 540 ;
+U -1 ; WX 772 ; N uni1EA2 ; G 569 ; B 26 0 712 1043 ;
+U -1 ; WX 763 ; N uni1EA0 ; G 570 ; B 26 -252 703 729 ;
+U -1 ; WX 801 ; N uni1EA6 ; G 571 ; B 26 0 741 1144 ;
+U -1 ; WX 764 ; N uni1EA4 ; G 572 ; B 26 0 704 1144 ;
+U -1 ; WX 907 ; N uni1EAA ; G 573 ; B 26 0 847 1142 ;
+U -1 ; WX 958 ; N uni1EA8 ; G 574 ; B 26 0 898 1153 ;
+U -1 ; WX 764 ; N uni1EAC ; G 575 ; B 26 -252 704 965 ;
+U -1 ; WX 763 ; N uni1EB0 ; G 576 ; B 26 0 703 1154 ;
+U -1 ; WX 794 ; N uni1EAE ; G 577 ; B 26 0 734 1154 ;
+U -1 ; WX 813 ; N uni1EB4 ; G 578 ; B 26 0 753 1162 ;
+U -1 ; WX 763 ; N uni1EB2 ; G 579 ; B 26 0 703 1193 ;
+U -1 ; WX 763 ; N uni1EB6 ; G 580 ; B 26 -252 703 971 ;
+U -1 ; WX 822 ; N uni1EBC ; G 581 ; B 79 0 762 980 ;
+U -1 ; WX 822 ; N uni1EBA ; G 582 ; B 79 0 762 1043 ;
+U -1 ; WX 822 ; N uni1EB8 ; G 583 ; B 79 -252 762 729 ;
+U -1 ; WX 822 ; N uni1EC0 ; G 584 ; B 79 0 762 1144 ;
+U -1 ; WX 822 ; N uni1EBE ; G 585 ; B 79 0 762 1144 ;
+U -1 ; WX 868 ; N uni1EC4 ; G 586 ; B 79 0 808 1142 ;
+U -1 ; WX 919 ; N uni1EC2 ; G 587 ; B 79 0 859 1153 ;
+U -1 ; WX 822 ; N uni1EC6 ; G 588 ; B 79 -252 762 965 ;
+U -1 ; WX 519 ; N uni1EC8 ; G 589 ; B 63 0 459 1043 ;
+U -1 ; WX 640 ; N uni1EA3 ; G 590 ; B 50 -23 580 864 ;
+U -1 ; WX 638 ; N uni1EA1 ; G 591 ; B 50 -252 578 549 ;
+U -1 ; WX 669 ; N uni1EA7 ; G 592 ; B 50 -23 609 965 ;
+U -1 ; WX 638 ; N uni1EA5 ; G 593 ; B 50 -23 578 965 ;
+U -1 ; WX 775 ; N uni1EAB ; G 594 ; B 50 -23 715 963 ;
+U -1 ; WX 826 ; N uni1EA9 ; G 595 ; B 50 -23 766 974 ;
+U -1 ; WX 638 ; N uni1EAD ; G 596 ; B 50 -252 578 786 ;
+U -1 ; WX 638 ; N uni1EB1 ; G 597 ; B 50 -23 578 976 ;
+U -1 ; WX 703 ; N uni1EAF ; G 598 ; B 50 -23 643 976 ;
+U -1 ; WX 722 ; N uni1EB5 ; G 599 ; B 50 -23 662 984 ;
+U -1 ; WX 663 ; N uni1EB3 ; G 600 ; B 50 -23 603 1015 ;
+U -1 ; WX 638 ; N uni1EB7 ; G 601 ; B 50 -252 578 793 ;
+U -1 ; WX 671 ; N uni1EBD ; G 602 ; B 64 -23 611 794 ;
+U -1 ; WX 651 ; N uni1EBB ; G 603 ; B 64 -23 591 864 ;
+U -1 ; WX 651 ; N uni1EB9 ; G 604 ; B 64 -252 591 549 ;
+U -1 ; WX 669 ; N uni1EC1 ; G 605 ; B 64 -23 609 965 ;
+U -1 ; WX 651 ; N uni1EBF ; G 606 ; B 64 -23 591 965 ;
+U -1 ; WX 775 ; N uni1EC5 ; G 607 ; B 64 -23 715 963 ;
+U -1 ; WX 826 ; N uni1EC3 ; G 608 ; B 64 -23 766 974 ;
+U -1 ; WX 651 ; N uni1EC7 ; G 609 ; B 64 -252 591 786 ;
+U -1 ; WX 501 ; N uni1EC9 ; G 610 ; B 67 0 441 864 ;
+U -1 ; WX 428 ; N uni1ECA ; G 611 ; B 36 -252 368 729 ;
+U -1 ; WX 888 ; N uni1ECE ; G 612 ; B 106 -23 828 1043 ;
+U -1 ; WX 888 ; N uni1ECC ; G 613 ; B 106 -252 828 741 ;
+U -1 ; WX 888 ; N uni1ED2 ; G 614 ; B 106 -23 828 1144 ;
+U -1 ; WX 888 ; N uni1ED0 ; G 615 ; B 106 -23 828 1144 ;
+U -1 ; WX 923 ; N uni1ED6 ; G 616 ; B 106 -23 863 1142 ;
+U -1 ; WX 974 ; N uni1ED4 ; G 617 ; B 106 -23 914 1153 ;
+U -1 ; WX 888 ; N uni1ED8 ; G 618 ; B 106 -252 828 965 ;
+U -1 ; WX 959 ; N Ohorn ; G 619 ; B 106 -23 899 854 ;
+U -1 ; WX 959 ; N uni1EDC ; G 620 ; B 106 -23 899 1008 ;
+U -1 ; WX 959 ; N uni1EDA ; G 621 ; B 106 -23 899 988 ;
+U -1 ; WX 959 ; N uni1EE0 ; G 622 ; B 106 -23 899 1006 ;
+U -1 ; WX 959 ; N uni1EDE ; G 623 ; B 106 -23 899 1061 ;
+U -1 ; WX 959 ; N uni1EE2 ; G 624 ; B 106 -252 899 854 ;
+U -1 ; WX 869 ; N _d_625 ; G 625 ; B 119 -23 809 923 ;
+U -1 ; WX 869 ; N uni1EE6 ; G 626 ; B 119 -23 809 1043 ;
+U -1 ; WX 869 ; N uni1EE4 ; G 627 ; B 119 -252 809 729 ;
+U -1 ; WX 1047 ; N Uhorn ; G 628 ; B 119 -23 987 854 ;
+U -1 ; WX 1047 ; N uni1EEA ; G 629 ; B 119 -23 987 1008 ;
+U -1 ; WX 1047 ; N uni1EE8 ; G 630 ; B 119 -23 987 988 ;
+U -1 ; WX 1047 ; N uni1EEE ; G 631 ; B 119 -23 987 1006 ;
+U -1 ; WX 1047 ; N uni1EEC ; G 632 ; B 119 -23 987 1061 ;
+U -1 ; WX 1047 ; N uni1EF0 ; G 633 ; B 119 -252 987 854 ;
+U -1 ; WX 865 ; N Ygrave ; G 634 ; B 182 0 805 978 ;
+U -1 ; WX 865 ; N uni1EF8 ; G 635 ; B 182 0 805 980 ;
+U -1 ; WX 422 ; N uni1ECB ; G 636 ; B 17 -252 362 729 ;
+U -1 ; WX 694 ; N uni1ECF ; G 637 ; B 82 -23 634 864 ;
+U -1 ; WX 694 ; N uni1ECD ; G 638 ; B 82 -252 634 549 ;
+U -1 ; WX 697 ; N uni1ED3 ; G 639 ; B 82 -23 637 965 ;
+U -1 ; WX 694 ; N uni1ED1 ; G 640 ; B 82 -23 634 965 ;
+U -1 ; WX 803 ; N uni1ED7 ; G 641 ; B 82 -23 743 963 ;
+U -1 ; WX 854 ; N uni1ED5 ; G 642 ; B 82 -23 794 974 ;
+U -1 ; WX 694 ; N uni1ED9 ; G 643 ; B 82 -252 634 786 ;
+U -1 ; WX 806 ; N ohorn ; G 644 ; B 82 -23 746 665 ;
+U -1 ; WX 806 ; N uni1EDD ; G 645 ; B 82 -23 746 855 ;
+U -1 ; WX 806 ; N uni1EDB ; G 646 ; B 82 -23 746 811 ;
+U -1 ; WX 806 ; N uni1EE1 ; G 647 ; B 82 -23 746 820 ;
+U -1 ; WX 806 ; N uni1EDF ; G 648 ; B 82 -23 746 884 ;
+U -1 ; WX 806 ; N uni1EE3 ; G 649 ; B 82 -252 746 665 ;
+U -1 ; WX 716 ; N _d_650 ; G 650 ; B 88 -23 656 731 ;
+U -1 ; WX 716 ; N uni1EE7 ; G 651 ; B 88 -23 656 864 ;
+U -1 ; WX 716 ; N uni1EE5 ; G 652 ; B 88 -252 656 540 ;
+U -1 ; WX 893 ; N uhorn ; G 653 ; B 88 -23 833 665 ;
+U -1 ; WX 893 ; N uni1EEB ; G 654 ; B 88 -23 833 855 ;
+U -1 ; WX 893 ; N uni1EE9 ; G 655 ; B 88 -23 833 811 ;
+U -1 ; WX 893 ; N uni1EEF ; G 656 ; B 88 -23 833 820 ;
+U -1 ; WX 893 ; N uni1EED ; G 657 ; B 88 -23 833 884 ;
+U -1 ; WX 893 ; N uni1EF1 ; G 658 ; B 88 -252 833 665 ;
+U -1 ; WX 713 ; N ygrave ; G 659 ; B 37 -219 653 800 ;
+U -1 ; WX 713 ; N uni1EF9 ; G 660 ; B 37 -219 653 794 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica.ufm	(revision 2000)
@@ -0,0 +1,715 @@
+StartFontMetrics 4.1
+FontName Nimbus_Sans_L_Regular
+FullName Nimbus Sans L Regular
+Notice 
+EncodingScheme FontSpecific
+FamilyName Nimbus Sans L
+Weight Regular
+Version 1.0
+Characters 657
+ItalicAngle 0.0
+Ascender 1196
+Descender -285
+UnderlineThickness 50
+UnderlinePosition -151
+IsFixedPitch false
+FontBBox -174 -284 1022 1196
+StartCharMetrics 696
+U 0 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 1 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 2 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 3 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 4 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 5 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 6 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 7 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 8 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 9 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 10 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 11 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 12 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 13 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 14 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 15 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 16 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 17 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 18 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 19 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 20 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 21 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 22 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 23 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 24 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 25 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 26 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 27 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 28 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 29 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 30 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 31 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 32 ; WX 278 ; N .null ; G 1 ; B 0 0 0 0 ;
+U 33 ; WX 278 ; N exclam ; G 2 ; B 124 0 208 729 ;
+U 34 ; WX 355 ; N quotedbl ; G 3 ; B 52 464 305 709 ;
+U 35 ; WX 556 ; N numbersign ; G 4 ; B 14 -20 542 697 ;
+U 36 ; WX 556 ; N dollar ; G 5 ; B 26 -126 518 770 ;
+U 37 ; WX 889 ; N percent ; G 6 ; B 29 -20 859 709 ;
+U 38 ; WX 667 ; N ampersand ; G 7 ; B 52 -23 637 709 ;
+U 39 ; WX 191 ; N quotesingle ; G 104 ; B 48 464 142 709 ;
+U 40 ; WX 333 ; N parenleft ; G 9 ; B 73 -212 291 729 ;
+U 41 ; WX 333 ; N parenright ; G 10 ; B 38 -212 256 729 ;
+U 42 ; WX 389 ; N asterisk ; G 11 ; B 40 441 343 729 ;
+U 43 ; WX 584 ; N plus ; G 12 ; B 50 -10 534 474 ;
+U 44 ; WX 278 ; N comma ; G 13 ; B 87 -147 192 104 ;
+U 45 ; WX 333 ; N hyphen ; G 14 ; B 46 240 284 312 ;
+U 46 ; WX 278 ; N period ; G 15 ; B 87 0 191 104 ;
+U 47 ; WX 278 ; N slash ; G 16 ; B -8 -20 284 729 ;
+U 48 ; WX 556 ; N zero ; G 17 ; B 43 -23 507 709 ;
+U 49 ; WX 556 ; N one ; G 18 ; B 102 0 347 709 ;
+U 50 ; WX 556 ; N two ; G 19 ; B 34 0 511 709 ;
+U 51 ; WX 556 ; N three ; G 20 ; B 32 -23 506 709 ;
+U 52 ; WX 556 ; N four ; G 21 ; B 28 0 520 709 ;
+U 53 ; WX 556 ; N five ; G 22 ; B 35 -23 513 709 ;
+U 54 ; WX 556 ; N six ; G 23 ; B 43 -23 513 709 ;
+U 55 ; WX 556 ; N seven ; G 24 ; B 46 0 520 709 ;
+U 56 ; WX 556 ; N eight ; G 25 ; B 37 -23 513 709 ;
+U 57 ; WX 556 ; N nine ; G 26 ; B 38 -23 509 709 ;
+U 58 ; WX 278 ; N colon ; G 27 ; B 110 0 214 524 ;
+U 59 ; WX 278 ; N semicolon ; G 28 ; B 110 -147 215 524 ;
+U 60 ; WX 584 ; N less ; G 29 ; B 45 -9 534 474 ;
+U 61 ; WX 584 ; N equal ; G 30 ; B 50 111 534 353 ;
+U 62 ; WX 584 ; N greater ; G 31 ; B 50 -9 539 474 ;
+U 63 ; WX 556 ; N question ; G 32 ; B 77 0 509 741 ;
+U 64 ; WX 1015 ; N at ; G 33 ; B 34 -142 951 741 ;
+U 65 ; WX 667 ; N A ; G 34 ; B 17 0 653 729 ;
+U 66 ; WX 667 ; N B ; G 35 ; B 79 0 623 729 ;
+U 67 ; WX 722 ; N C ; G 36 ; B 48 -23 677 741 ;
+U 68 ; WX 722 ; N D ; G 37 ; B 89 0 667 729 ;
+U 69 ; WX 667 ; N E ; G 38 ; B 90 0 613 729 ;
+U 70 ; WX 611 ; N F ; G 39 ; B 90 0 579 729 ;
+U 71 ; WX 778 ; N G ; G 40 ; B 44 -23 709 741 ;
+U 72 ; WX 722 ; N H ; G 41 ; B 83 0 644 729 ;
+U 73 ; WX 278 ; N I ; G 42 ; B 100 0 194 729 ;
+U 74 ; WX 500 ; N J ; G 43 ; B 17 -23 426 729 ;
+U 75 ; WX 667 ; N K ; G 44 ; B 79 0 658 729 ;
+U 76 ; WX 556 ; N L ; G 45 ; B 80 0 533 729 ;
+U 77 ; WX 833 ; N M ; G 46 ; B 75 0 761 729 ;
+U 78 ; WX 722 ; N N ; G 47 ; B 76 0 646 729 ;
+U 79 ; WX 778 ; N O ; G 48 ; B 38 -23 742 741 ;
+U 80 ; WX 667 ; N P ; G 49 ; B 91 0 617 729 ;
+U 81 ; WX 778 ; N Q ; G 50 ; B 38 -59 742 741 ;
+U 82 ; WX 722 ; N R ; G 51 ; B 93 0 679 729 ;
+U 83 ; WX 667 ; N S ; G 52 ; B 48 -23 621 741 ;
+U 84 ; WX 611 ; N T ; G 53 ; B 21 0 593 729 ;
+U 85 ; WX 722 ; N U ; G 54 ; B 85 -23 645 729 ;
+U 86 ; WX 667 ; N V ; G 55 ; B 30 0 645 729 ;
+U 87 ; WX 944 ; N W ; G 56 ; B 22 0 929 729 ;
+U 88 ; WX 667 ; N X ; G 57 ; B 22 0 649 729 ;
+U 89 ; WX 667 ; N Y ; G 58 ; B 13 0 661 729 ;
+U 90 ; WX 611 ; N Z ; G 59 ; B 28 0 583 729 ;
+U 91 ; WX 278 ; N bracketleft ; G 60 ; B 64 -212 250 729 ;
+U 92 ; WX 278 ; N backslash ; G 61 ; B -8 -20 284 729 ;
+U 93 ; WX 278 ; N bracketright ; G 62 ; B 23 -212 209 729 ;
+U 94 ; WX 469 ; N asciicircum ; G 63 ; B 44 329 425 709 ;
+U 95 ; WX 556 ; N underscore ; G 64 ; B -22 -176 578 -126 ;
+U 96 ; WX 333 ; N grave ; G 124 ; B 22 592 231 740 ;
+U 97 ; WX 556 ; N a ; G 66 ; B 42 -23 535 539 ;
+U 98 ; WX 556 ; N b ; G 67 ; B 54 -23 523 729 ;
+U 99 ; WX 500 ; N c ; G 68 ; B 31 -23 477 539 ;
+U 100 ; WX 556 ; N d ; G 69 ; B 26 -23 495 729 ;
+U 101 ; WX 556 ; N e ; G 70 ; B 40 -23 513 539 ;
+U 102 ; WX 278 ; N f ; G 71 ; B 18 0 258 732 ;
+U 103 ; WX 556 ; N g ; G 72 ; B 29 -218 489 539 ;
+U 104 ; WX 556 ; N h ; G 73 ; B 70 0 486 729 ;
+U 105 ; WX 222 ; N i ; G 74 ; B 66 0 150 729 ;
+U 106 ; WX 222 ; N j ; G 75 ; B -18 -218 153 729 ;
+U 107 ; WX 500 ; N k ; G 76 ; B 58 0 502 729 ;
+U 108 ; WX 222 ; N l ; G 77 ; B 68 0 152 729 ;
+U 109 ; WX 833 ; N m ; G 78 ; B 70 0 762 539 ;
+U 110 ; WX 556 ; N n ; G 79 ; B 70 0 487 539 ;
+U 111 ; WX 556 ; N o ; G 80 ; B 36 -23 510 539 ;
+U 112 ; WX 556 ; N p ; G 81 ; B 54 -218 523 539 ;
+U 113 ; WX 556 ; N q ; G 82 ; B 26 -218 495 539 ;
+U 114 ; WX 333 ; N r ; G 83 ; B 69 0 321 539 ;
+U 115 ; WX 500 ; N s ; G 84 ; B 34 -23 459 539 ;
+U 116 ; WX 278 ; N t ; G 85 ; B 14 -23 254 668 ;
+U 117 ; WX 556 ; N u ; G 86 ; B 65 -23 482 524 ;
+U 118 ; WX 500 ; N v ; G 87 ; B 10 0 486 524 ;
+U 119 ; WX 722 ; N w ; G 88 ; B 6 0 708 524 ;
+U 120 ; WX 500 ; N x ; G 89 ; B 17 0 473 524 ;
+U 121 ; WX 500 ; N y ; G 90 ; B 20 -218 478 524 ;
+U 122 ; WX 500 ; N z ; G 91 ; B 31 0 457 524 ;
+U 123 ; WX 334 ; N braceleft ; G 92 ; B 43 -212 276 729 ;
+U 124 ; WX 260 ; N bar ; G 93 ; B 100 -212 160 729 ;
+U 125 ; WX 334 ; N braceright ; G 94 ; B 29 -212 262 729 ;
+U 126 ; WX 584 ; N asciitilde ; G 95 ; B 75 268 508 438 ;
+U 127 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 128 ; WX 556 ; N Euro ; G 289 ; B 2 -23 543 709 ;
+U 129 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 130 ; WX 222 ; N quotesinglbase ; G 117 ; B 64 -128 158 104 ;
+U 131 ; WX 556 ; N florin ; G 101 ; B 11 -212 542 738 ;
+U 132 ; WX 333 ; N quotedblbase ; G 118 ; B 47 -128 300 104 ;
+U 133 ; WX 1000 ; N ellipsis ; G 121 ; B 115 0 885 104 ;
+U 134 ; WX 556 ; N dagger ; G 112 ; B 38 -177 513 709 ;
+U 135 ; WX 556 ; N daggerdbl ; G 113 ; B 38 -177 513 709 ;
+U 136 ; WX 333 ; N circumflex ; G 126 ; B 20 591 307 741 ;
+U 137 ; WX 1000 ; N perthousand ; G 122 ; B 9 -22 993 738 ;
+U 138 ; WX 667 ; N Scaron ; G 189 ; B 48 -23 621 940 ;
+U 139 ; WX 333 ; N guilsinglleft ; G 107 ; B 91 106 243 438 ;
+U 140 ; WX 1000 ; N OE ; G 142 ; B 43 -20 959 741 ;
+U 141 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 142 ; WX 611 ; N Zcaron ; G 200 ; B 28 0 583 940 ;
+U 143 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 144 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 145 ; WX 222 ; N quoteleft ; G 65 ; B 65 477 158 709 ;
+U 146 ; WX 221 ; N quoteright ; G 8 ; B 64 497 157 729 ;
+U 147 ; WX 333 ; N quotedblleft ; G 105 ; B 48 477 299 709 ;
+U 148 ; WX 333 ; N quotedblright ; G 119 ; B 49 477 302 709 ;
+U 149 ; WX 350 ; N bullet ; G 116 ; B 50 220 300 470 ;
+U 150 ; WX 556 ; N endash ; G 111 ; B -5 240 561 312 ;
+U 151 ; WX 1000 ; N emdash ; G 137 ; B -9 240 1001 312 ;
+U 152 ; WX 333 ; N tilde ; G 127 ; B 5 613 319 717 ;
+U 153 ; WX 1000 ; N trademark ; G 297 ; B 63 292 938 729 ;
+U 154 ; WX 500 ; N scaron ; G 253 ; B 34 -23 459 741 ;
+U 155 ; WX 333 ; N guilsinglright ; G 108 ; B 85 106 239 438 ;
+U 156 ; WX 944 ; N oe ; G 148 ; B 40 -23 899 539 ;
+U 157 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 158 ; WX 500 ; N zcaron ; G 264 ; B 31 0 457 741 ;
+U 159 ; WX 667 ; N Ydieresis ; G 204 ; B 13 0 661 914 ;
+U 160 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 161 ; WX 333 ; N exclamdown ; G 96 ; B 121 -205 205 524 ;
+U 162 ; WX 556 ; N cent ; G 97 ; B 52 -120 510 628 ;
+U 163 ; WX 556 ; N sterling ; G 98 ; B 26 -23 535 729 ;
+U 164 ; WX 556 ; N currency ; G 103 ; B 67 133 489 551 ;
+U 165 ; WX 556 ; N yen ; G 100 ; B 11 0 545 709 ;
+U 166 ; WX 260 ; N brokenbar ; G 314 ; B 100 -212 160 729 ;
+U 167 ; WX 556 ; N section ; G 102 ; B 43 -213 506 729 ;
+U 168 ; WX 333 ; N dieresis ; G 131 ; B 30 612 296 715 ;
+U 169 ; WX 737 ; N copyright ; G 303 ; B -13 -22 751 742 ;
+U 170 ; WX 370 ; N ordfeminine ; G 139 ; B 37 303 333 742 ;
+U 171 ; WX 556 ; N guillemotleft ; G 106 ; B 98 106 455 438 ;
+U 172 ; WX 584 ; N logicalnot ; G 311 ; B 40 86 544 375 ;
+U 173 ; WX 278 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U 174 ; WX 737 ; N registered ; G 304 ; B -13 -22 751 742 ;
+U 175 ; WX 333 ; N macron ; G 128 ; B 28 631 302 701 ;
+U 176 ; WX 606 ; N degree ; G 293 ; B 151 383 454 686 ;
+U 177 ; WX 584 ; N plusminus ; G 298 ; B 50 -11 534 623 ;
+U 178 ; WX 351 ; N twosuperior ; G 291 ; B 19 284 326 709 ;
+U 179 ; WX 351 ; N threesuperior ; G 292 ; B 16 270 322 709 ;
+U 180 ; WX 333 ; N acute ; G 125 ; B 92 592 301 740 ;
+U 181 ; WX 556 ; N mu ; G 315 ; B 65 -220 544 524 ;
+U 182 ; WX 537 ; N paragraph ; G 115 ; B 48 -177 522 729 ;
+U 183 ; WX 278 ; N periodcentered ; G 114 ; B 87 302 211 427 ;
+U 184 ; WX 333 ; N cedilla ; G 133 ; B 39 -214 287 0 ;
+U 185 ; WX 351 ; N onesuperior ; G 290 ; B 61 284 222 709 ;
+U 186 ; WX 365 ; N ordmasculine ; G 143 ; B 40 303 324 742 ;
+U 187 ; WX 556 ; N guillemotright ; G 120 ; B 98 106 451 438 ;
+U 188 ; WX 869 ; N onequarter ; G 300 ; B 61 -20 849 709 ;
+U 189 ; WX 869 ; N onehalf ; G 299 ; B 61 -20 844 709 ;
+U 190 ; WX 869 ; N threequarters ; G 301 ; B 16 -20 849 709 ;
+U 191 ; WX 611 ; N questiondown ; G 123 ; B 95 -217 528 524 ;
+U 192 ; WX 667 ; N Agrave ; G 152 ; B 17 0 653 939 ;
+U 193 ; WX 667 ; N Aacute ; G 151 ; B 17 0 653 939 ;
+U 194 ; WX 667 ; N Acircumflex ; G 153 ; B 17 0 653 940 ;
+U 195 ; WX 667 ; N Atilde ; G 155 ; B 17 0 653 916 ;
+U 196 ; WX 667 ; N Adieresis ; G 150 ; B 17 0 653 914 ;
+U 197 ; WX 667 ; N Aring ; G 156 ; B 17 0 653 953 ;
+U 198 ; WX 1000 ; N AE ; G 138 ; B 11 0 950 729 ;
+U 199 ; WX 722 ; N Ccedilla ; G 158 ; B 48 -214 677 741 ;
+U 200 ; WX 667 ; N Egrave ; G 164 ; B 90 0 613 939 ;
+U 201 ; WX 667 ; N Eacute ; G 163 ; B 90 0 613 939 ;
+U 202 ; WX 667 ; N Ecircumflex ; G 165 ; B 90 0 613 940 ;
+U 203 ; WX 667 ; N Edieresis ; G 162 ; B 90 0 613 914 ;
+U 204 ; WX 278 ; N Igrave ; G 172 ; B 1 0 210 939 ;
+U 205 ; WX 278 ; N Iacute ; G 171 ; B 71 0 280 939 ;
+U 206 ; WX 278 ; N Icircumflex ; G 173 ; B -1 0 286 940 ;
+U 207 ; WX 278 ; N Idieresis ; G 170 ; B 9 0 275 907 ;
+U 208 ; WX 722 ; N Eth ; G 283 ; B 20 0 667 729 ;
+U 209 ; WX 722 ; N Ntilde ; G 179 ; B 76 0 646 916 ;
+U 210 ; WX 778 ; N Ograve ; G 182 ; B 38 -23 742 939 ;
+U 211 ; WX 778 ; N Oacute ; G 181 ; B 38 -23 742 939 ;
+U 212 ; WX 778 ; N Ocircumflex ; G 183 ; B 38 -23 742 940 ;
+U 213 ; WX 778 ; N Otilde ; G 184 ; B 38 -23 742 916 ;
+U 214 ; WX 778 ; N Odieresis ; G 180 ; B 38 -23 742 914 ;
+U 215 ; WX 584 ; N multiply ; G 295 ; B 95 34 488 427 ;
+U 216 ; WX 778 ; N Oslash ; G 141 ; B 30 -23 744 755 ;
+U 217 ; WX 722 ; N Ugrave ; G 194 ; B 85 -23 645 939 ;
+U 218 ; WX 722 ; N Uacute ; G 193 ; B 85 -23 645 939 ;
+U 219 ; WX 722 ; N Ucircumflex ; G 195 ; B 85 -23 645 940 ;
+U 220 ; WX 722 ; N Udieresis ; G 192 ; B 85 -23 645 914 ;
+U 221 ; WX 666 ; N Yacute ; G 198 ; B 13 0 661 939 ;
+U 222 ; WX 666 ; N Thorn ; G 285 ; B 91 0 616 729 ;
+U 223 ; WX 611 ; N germandbls ; G 149 ; B 126 -20 566 729 ;
+U 224 ; WX 556 ; N agrave ; G 218 ; B 42 -23 535 740 ;
+U 225 ; WX 556 ; N aacute ; G 217 ; B 42 -23 535 740 ;
+U 226 ; WX 556 ; N acircumflex ; G 219 ; B 42 -23 535 741 ;
+U 227 ; WX 556 ; N atilde ; G 221 ; B 42 -23 535 717 ;
+U 228 ; WX 556 ; N adieresis ; G 216 ; B 42 -23 535 715 ;
+U 229 ; WX 556 ; N aring ; G 222 ; B 42 -23 535 754 ;
+U 230 ; WX 889 ; N ae ; G 144 ; B 34 -23 845 539 ;
+U 231 ; WX 500 ; N ccedilla ; G 226 ; B 31 -214 477 539 ;
+U 232 ; WX 556 ; N egrave ; G 230 ; B 40 -23 513 740 ;
+U 233 ; WX 556 ; N eacute ; G 229 ; B 40 -23 513 740 ;
+U 234 ; WX 556 ; N ecircumflex ; G 231 ; B 40 -23 513 741 ;
+U 235 ; WX 556 ; N edieresis ; G 228 ; B 40 -23 513 715 ;
+U 236 ; WX 278 ; N igrave ; G 238 ; B -5 0 204 740 ;
+U 237 ; WX 278 ; N iacute ; G 237 ; B 65 0 274 740 ;
+U 238 ; WX 278 ; N icircumflex ; G 239 ; B -7 0 280 741 ;
+U 239 ; WX 278 ; N idieresis ; G 236 ; B 3 0 269 708 ;
+U 240 ; WX 556 ; N eth ; G 287 ; B 36 -23 510 743 ;
+U 241 ; WX 556 ; N ntilde ; G 244 ; B 70 0 487 717 ;
+U 242 ; WX 556 ; N ograve ; G 247 ; B 36 -23 510 740 ;
+U 243 ; WX 556 ; N oacute ; G 246 ; B 36 -23 510 740 ;
+U 244 ; WX 556 ; N ocircumflex ; G 248 ; B 36 -23 510 741 ;
+U 245 ; WX 556 ; N otilde ; G 249 ; B 36 -23 510 717 ;
+U 246 ; WX 556 ; N odieresis ; G 245 ; B 36 -23 510 715 ;
+U 247 ; WX 584 ; N divide ; G 296 ; B 50 0 534 472 ;
+U 248 ; WX 611 ; N oslash ; G 147 ; B 18 -30 529 539 ;
+U 249 ; WX 556 ; N ugrave ; G 258 ; B 65 -23 482 740 ;
+U 250 ; WX 556 ; N uacute ; G 257 ; B 65 -23 482 740 ;
+U 251 ; WX 556 ; N ucircumflex ; G 259 ; B 65 -23 482 741 ;
+U 252 ; WX 556 ; N udieresis ; G 256 ; B 65 -23 482 715 ;
+U 253 ; WX 500 ; N yacute ; G 262 ; B 20 -218 478 740 ;
+U 254 ; WX 555 ; N thorn ; G 288 ; B 54 -218 522 714 ;
+U 255 ; WX 500 ; N ydieresis ; G 266 ; B 20 -218 478 715 ;
+U 8260 ; WX 167 ; N fraction ; G 99 ; B -174 -20 336 709 ;
+U 64257 ; WX 500 ; N fi ; G 109 ; B 12 0 436 732 ;
+U 64258 ; WX 500 ; N fl ; G 110 ; B 17 0 430 732 ;
+U 728 ; WX 333 ; N breve ; G 129 ; B 15 597 316 732 ;
+U 729 ; WX 333 ; N dotaccent ; G 130 ; B 115 612 219 716 ;
+U 730 ; WX 333 ; N ring ; G 132 ; B 79 579 255 754 ;
+U 733 ; WX 333 ; N hungarumlaut ; G 134 ; B -35 590 348 740 ;
+U 731 ; WX 333 ; N ogonek ; G 135 ; B 57 -205 265 0 ;
+U 711 ; WX 333 ; N caron ; G 136 ; B 19 591 306 741 ;
+U 321 ; WX 556 ; N Lslash ; G 140 ; B 0 0 552 729 ;
+U 305 ; WX 278 ; N dotlessi ; G 145 ; B 94 0 178 524 ;
+U 322 ; WX 222 ; N lslash ; G 146 ; B 0 0 212 729 ;
+U 258 ; WX 667 ; N Abreve ; G 154 ; B 17 0 653 931 ;
+U 260 ; WX 667 ; N Aogonek ; G 157 ; B 17 -205 692 729 ;
+U 262 ; WX 722 ; N Cacute ; G 159 ; B 48 -23 677 939 ;
+U 268 ; WX 722 ; N Ccaron ; G 160 ; B 48 -23 677 940 ;
+U 270 ; WX 722 ; N Dcaron ; G 161 ; B 89 0 667 940 ;
+U 282 ; WX 667 ; N Ecaron ; G 166 ; B 90 0 613 940 ;
+U 278 ; WX 667 ; N Edotaccent ; G 167 ; B 90 0 613 915 ;
+U 280 ; WX 667 ; N Eogonek ; G 168 ; B 90 -205 652 729 ;
+U 286 ; WX 778 ; N Gbreve ; G 169 ; B 44 -23 709 931 ;
+U 304 ; WX 278 ; N Idotaccent ; G 174 ; B 92 0 196 915 ;
+U 313 ; WX 556 ; N Lacute ; G 175 ; B 70 0 533 939 ;
+U 317 ; WX 556 ; N Lcaron ; G 176 ; B 80 0 533 729 ;
+U 323 ; WX 722 ; N Nacute ; G 177 ; B 76 0 646 939 ;
+U 327 ; WX 722 ; N Ncaron ; G 178 ; B 76 0 646 940 ;
+U 336 ; WX 778 ; N Ohungarumlaut ; G 185 ; B 38 -23 742 939 ;
+U 340 ; WX 722 ; N Racute ; G 186 ; B 93 0 679 939 ;
+U 344 ; WX 722 ; N Rcaron ; G 187 ; B 93 0 679 940 ;
+U 346 ; WX 667 ; N Sacute ; G 188 ; B 48 -23 621 939 ;
+U 350 ; WX 667 ; N Scedilla ; G 190 ; B 45 -214 621 741 ;
+U 356 ; WX 611 ; N Tcaron ; G 191 ; B 21 0 593 940 ;
+U 366 ; WX 722 ; N Uring ; G 196 ; B 85 -23 645 953 ;
+U 368 ; WX 722 ; N Uhungarumlaut ; G 197 ; B 85 -23 645 939 ;
+U 377 ; WX 611 ; N Zacute ; G 199 ; B 28 0 583 939 ;
+U 379 ; WX 611 ; N Zdotaccent ; G 201 ; B 28 0 583 915 ;
+U 256 ; WX 667 ; N Amacron ; G 202 ; B 17 0 653 900 ;
+U 354 ; WX 611 ; N Tcommaaccent ; G 203 ; B 21 -285 593 729 ;
+U 274 ; WX 667 ; N Emacron ; G 205 ; B 90 0 613 900 ;
+U 298 ; WX 278 ; N Imacron ; G 206 ; B 20 0 274 900 ;
+U 302 ; WX 278 ; N Iogonek ; G 207 ; B 66 -204 234 729 ;
+U 310 ; WX 667 ; N Kcommaaccent ; G 208 ; B 79 -285 658 729 ;
+U 315 ; WX 556 ; N Lcommaaccent ; G 209 ; B 80 -285 533 729 ;
+U 325 ; WX 722 ; N Ncommaaccent ; G 210 ; B 76 -285 646 729 ;
+U 332 ; WX 778 ; N Omacron ; G 211 ; B 38 -23 742 900 ;
+U 342 ; WX 722 ; N Rcommaaccent ; G 212 ; B 93 -285 679 729 ;
+U 290 ; WX 778 ; N Gcommaaccent ; G 213 ; B 44 -285 709 741 ;
+U 362 ; WX 722 ; N Umacron ; G 214 ; B 85 -23 645 900 ;
+U 370 ; WX 722 ; N Uogonek ; G 215 ; B 85 -205 645 729 ;
+U 259 ; WX 556 ; N abreve ; G 220 ; B 42 -23 535 732 ;
+U 261 ; WX 556 ; N aogonek ; G 223 ; B 43 -205 596 539 ;
+U 263 ; WX 500 ; N cacute ; G 224 ; B 31 -23 477 740 ;
+U 269 ; WX 500 ; N ccaron ; G 225 ; B 31 -23 477 741 ;
+U 271 ; WX 635 ; N dcaron ; G 227 ; B 26 -23 648 729 ;
+U 283 ; WX 556 ; N ecaron ; G 232 ; B 40 -23 513 741 ;
+U 279 ; WX 556 ; N edotaccent ; G 233 ; B 40 -23 513 716 ;
+U 281 ; WX 556 ; N eogonek ; G 234 ; B 40 -204 514 539 ;
+U 287 ; WX 556 ; N gbreve ; G 235 ; B 29 -218 489 732 ;
+U 314 ; WX 222 ; N lacute ; G 240 ; B 63 0 272 939 ;
+U 318 ; WX 292 ; N lcaron ; G 241 ; B 68 0 305 729 ;
+U 324 ; WX 556 ; N nacute ; G 242 ; B 70 0 487 740 ;
+U 328 ; WX 556 ; N ncaron ; G 243 ; B 70 0 487 741 ;
+U 337 ; WX 556 ; N ohungarumlaut ; G 250 ; B 36 -23 526 740 ;
+U 341 ; WX 333 ; N racute ; G 251 ; B 69 0 331 740 ;
+U 347 ; WX 500 ; N sacute ; G 252 ; B 34 -23 459 740 ;
+U 537 ; WX 500 ; N scommaaccent ; G 254 ; B 34 -285 459 539 ;
+U 357 ; WX 308 ; N tcaron ; G 255 ; B 14 -23 321 800 ;
+U 367 ; WX 556 ; N uring ; G 260 ; B 65 -23 482 754 ;
+U 369 ; WX 556 ; N uhungarumlaut ; G 261 ; B 65 -23 530 740 ;
+U 378 ; WX 500 ; N zacute ; G 263 ; B 31 0 457 740 ;
+U 380 ; WX 500 ; N zdotaccent ; G 265 ; B 31 0 457 716 ;
+U 355 ; WX 278 ; N tcommaaccent ; G 267 ; B 14 -285 254 668 ;
+U 257 ; WX 556 ; N amacron ; G 268 ; B 42 -23 535 701 ;
+U 275 ; WX 556 ; N emacron ; G 269 ; B 40 -23 513 701 ;
+U 299 ; WX 222 ; N imacron ; G 270 ; B -16 0 231 701 ;
+U 311 ; WX 500 ; N kcommaaccent ; G 271 ; B 58 -285 502 729 ;
+U 316 ; WX 222 ; N lcommaaccent ; G 272 ; B 63 -285 163 729 ;
+U 326 ; WX 556 ; N ncommaaccent ; G 273 ; B 70 -285 487 539 ;
+U 333 ; WX 556 ; N omacron ; G 274 ; B 36 -23 510 701 ;
+U 343 ; WX 333 ; N rcommaaccent ; G 275 ; B 65 -285 321 539 ;
+U 363 ; WX 556 ; N umacron ; G 276 ; B 65 -23 482 701 ;
+U 371 ; WX 556 ; N uogonek ; G 277 ; B 65 -204 521 524 ;
+U 345 ; WX 333 ; N rcaron ; G 278 ; B 48 0 335 741 ;
+U 351 ; WX 500 ; N scedilla ; G 279 ; B 34 -214 459 539 ;
+U 291 ; WX 556 ; N gcommaaccent ; G 280 ; B 29 -218 489 817 ;
+U 303 ; WX 222 ; N iogonek ; G 281 ; B 25 -204 190 729 ;
+U 536 ; WX 667 ; N Scommaaccent ; G 282 ; B 48 -285 621 741 ;
+U 272 ; WX 722 ; N Dcroat ; G 284 ; B 20 0 667 729 ;
+U 273 ; WX 556 ; N dcroat ; G 286 ; B 26 -23 557 729 ;
+U 8722 ; WX 584 ; N minus ; G 294 ; B 40 197 544 267 ;
+U 63171 ; WX 333 ; N commaaccent ; G 302 ; B 116 -285 216 -60 ;
+U 9674 ; WX 489 ; N lozenge ; G 305 ; B 16 0 462 744 ;
+U 8710 ; WX 711 ; N Delta ; G 306 ; B 10 0 701 729 ;
+U 8800 ; WX 548 ; N notequal ; G 307 ; B 32 -25 516 486 ;
+U 8730 ; WX 542 ; N radical ; G 308 ; B 7 -36 512 913 ;
+U 8804 ; WX 584 ; N lessequal ; G 309 ; B 45 -11 534 639 ;
+U 8805 ; WX 584 ; N greaterequal ; G 310 ; B 45 -11 534 639 ;
+U 8721 ; WX 711 ; N summation ; G 312 ; B 17 -97 694 760 ;
+U 8706 ; WX 490 ; N partialdiff ; G 313 ; B 22 -15 458 750 ;
+U 1040 ; WX 667 ; N afii10017 ; G 316 ; B 17 0 653 729 ;
+U 1041 ; WX 667 ; N afii10018 ; G 317 ; B 79 0 623 729 ;
+U 1042 ; WX 667 ; N afii10019 ; G 318 ; B 79 0 623 729 ;
+U 1043 ; WX 611 ; N afii10020 ; G 319 ; B 79 0 568 729 ;
+U 1044 ; WX 812 ; N afii10021 ; G 320 ; B 34 -135 778 729 ;
+U 1045 ; WX 667 ; N afii10022 ; G 321 ; B 79 0 602 729 ;
+U 1025 ; WX 667 ; N afii10023 ; G 322 ; B 79 0 602 914 ;
+U 1046 ; WX 1023 ; N afii10024 ; G 323 ; B 63 0 948 729 ;
+U 1047 ; WX 667 ; N afii10025 ; G 324 ; B 48 -23 621 741 ;
+U 1048 ; WX 728 ; N afii10026 ; G 325 ; B 79 0 649 729 ;
+U 1049 ; WX 728 ; N afii10027 ; G 326 ; B 79 0 649 924 ;
+U 1050 ; WX 667 ; N afii10028 ; G 327 ; B 79 0 621 729 ;
+U 1051 ; WX 673 ; N afii10029 ; G 328 ; B 33 -10 594 729 ;
+U 1052 ; WX 844 ; N afii10030 ; G 329 ; B 79 0 765 729 ;
+U 1053 ; WX 719 ; N afii10031 ; G 330 ; B 79 0 640 729 ;
+U 1054 ; WX 778 ; N afii10032 ; G 331 ; B 38 -23 742 741 ;
+U 1055 ; WX 719 ; N afii10033 ; G 332 ; B 79 0 640 729 ;
+U 1056 ; WX 667 ; N afii10034 ; G 333 ; B 79 0 605 729 ;
+U 1057 ; WX 722 ; N afii10035 ; G 334 ; B 48 -23 677 741 ;
+U 1058 ; WX 611 ; N afii10036 ; G 335 ; B 21 0 593 729 ;
+U 1059 ; WX 650 ; N afii10037 ; G 336 ; B 26 0 619 729 ;
+U 1060 ; WX 936 ; N afii10038 ; G 337 ; B 64 0 829 729 ;
+U 1061 ; WX 667 ; N afii10039 ; G 338 ; B 22 0 641 729 ;
+U 1062 ; WX 741 ; N afii10040 ; G 339 ; B 79 -135 707 729 ;
+U 1063 ; WX 648 ; N afii10041 ; G 340 ; B 79 0 569 729 ;
+U 1064 ; WX 828 ; N afii10042 ; G 341 ; B 79 0 749 729 ;
+U 1065 ; WX 850 ; N afii10043 ; G 342 ; B 79 -135 816 729 ;
+U 1066 ; WX 897 ; N afii10044 ; G 343 ; B 81 0 856 729 ;
+U 1067 ; WX 872 ; N afii10045 ; G 344 ; B 79 0 793 729 ;
+U 1068 ; WX 667 ; N afii10046 ; G 345 ; B 79 0 623 729 ;
+U 1069 ; WX 722 ; N afii10047 ; G 346 ; B 48 -23 677 741 ;
+U 1070 ; WX 1032 ; N afii10048 ; G 347 ; B 83 -23 958 741 ;
+U 1071 ; WX 702 ; N afii10049 ; G 348 ; B 32 0 623 729 ;
+U 1072 ; WX 556 ; N afii10065 ; G 349 ; B 42 -23 535 539 ;
+U 1073 ; WX 556 ; N afii10066 ; G 350 ; B 36 -23 510 775 ;
+U 1074 ; WX 522 ; N afii10067 ; G 351 ; B 70 0 468 524 ;
+U 1075 ; WX 430 ; N afii10068 ; G 352 ; B 70 0 380 524 ;
+U 1076 ; WX 602 ; N afii10069 ; G 353 ; B 30 -120 572 524 ;
+U 1077 ; WX 556 ; N afii10070 ; G 354 ; B 40 -23 513 539 ;
+U 1105 ; WX 556 ; N afii10071 ; G 355 ; B 40 -23 513 716 ;
+U 1078 ; WX 837 ; N afii10072 ; G 356 ; B 44 0 789 524 ;
+U 1079 ; WX 500 ; N afii10073 ; G 357 ; B 34 -23 459 539 ;
+U 1080 ; WX 567 ; N afii10074 ; G 358 ; B 70 0 497 524 ;
+U 1081 ; WX 567 ; N afii10075 ; G 359 ; B 70 0 497 699 ;
+U 1082 ; WX 510 ; N afii10076 ; G 360 ; B 70 0 484 524 ;
+U 1083 ; WX 557 ; N afii10077 ; G 361 ; B 70 -10 487 524 ;
+U 1084 ; WX 618 ; N afii10078 ; G 362 ; B 70 0 548 524 ;
+U 1085 ; WX 558 ; N afii10079 ; G 363 ; B 70 0 488 524 ;
+U 1086 ; WX 556 ; N afii10080 ; G 364 ; B 36 -23 510 539 ;
+U 1087 ; WX 557 ; N afii10081 ; G 365 ; B 70 0 487 524 ;
+U 1088 ; WX 576 ; N afii10082 ; G 366 ; B 54 -218 523 539 ;
+U 1089 ; WX 500 ; N afii10083 ; G 367 ; B 31 -23 477 539 ;
+U 1090 ; WX 496 ; N afii10084 ; G 368 ; B 60 0 432 524 ;
+U 1091 ; WX 500 ; N afii10085 ; G 369 ; B 20 -218 478 524 ;
+U 1092 ; WX 912 ; N afii10086 ; G 370 ; B 61 -218 850 674 ;
+U 1093 ; WX 500 ; N afii10087 ; G 371 ; B 17 0 473 524 ;
+U 1094 ; WX 578 ; N afii10088 ; G 372 ; B 70 -120 548 524 ;
+U 1095 ; WX 520 ; N afii10089 ; G 373 ; B 70 0 450 524 ;
+U 1096 ; WX 692 ; N afii10090 ; G 374 ; B 70 0 622 524 ;
+U 1097 ; WX 712 ; N afii10091 ; G 375 ; B 70 -120 682 524 ;
+U 1098 ; WX 734 ; N afii10092 ; G 376 ; B 57 0 653 524 ;
+U 1099 ; WX 690 ; N afii10093 ; G 377 ; B 70 0 620 524 ;
+U 1100 ; WX 552 ; N afii10094 ; G 378 ; B 70 0 483 524 ;
+U 1101 ; WX 500 ; N afii10095 ; G 379 ; B 31 -23 477 539 ;
+U 1102 ; WX 758 ; N afii10096 ; G 380 ; B 70 -23 721 539 ;
+U 1103 ; WX 543 ; N afii10097 ; G 381 ; B 14 0 473 524 ;
+U 1024 ; WX 667 ; N uni0400 ; G 382 ; B 90 0 613 917 ;
+U 1026 ; WX 738 ; N afii10051 ; G 383 ; B 21 -174 701 729 ;
+U 1027 ; WX 611 ; N afii10052 ; G 384 ; B 90 0 579 917 ;
+U 1028 ; WX 722 ; N afii10053 ; G 385 ; B 48 -23 677 741 ;
+U 1029 ; WX 667 ; N afii10054 ; G 386 ; B 48 -23 621 741 ;
+U 1030 ; WX 278 ; N afii10055 ; G 387 ; B 100 0 194 729 ;
+U 1031 ; WX 278 ; N afii10056 ; G 388 ; B 8 0 274 908 ;
+U 1032 ; WX 500 ; N afii10057 ; G 389 ; B 17 -23 426 729 ;
+U 1033 ; WX 1080 ; N afii10058 ; G 390 ; B 83 0 1022 729 ;
+U 1034 ; WX 1014 ; N afii10059 ; G 391 ; B 83 0 972 729 ;
+U 1035 ; WX 748 ; N afii10060 ; G 392 ; B 21 0 711 729 ;
+U 1036 ; WX 667 ; N afii10061 ; G 393 ; B 79 0 658 917 ;
+U 1037 ; WX 722 ; N uni040D ; G 394 ; B 76 0 646 917 ;
+U 1038 ; WX 650 ; N afii10062 ; G 395 ; B 26 0 619 904 ;
+U 1039 ; WX 722 ; N afii10145 ; G 396 ; B 83 -135 645 729 ;
+U 1104 ; WX 556 ; N uni0450 ; G 397 ; B 40 -23 513 740 ;
+U 1106 ; WX 582 ; N afii10099 ; G 398 ; B 15 -143 512 729 ;
+U 1107 ; WX 430 ; N afii10100 ; G 399 ; B 70 0 365 712 ;
+U 1108 ; WX 500 ; N afii10101 ; G 400 ; B 31 -23 477 539 ;
+U 1109 ; WX 500 ; N afii10102 ; G 401 ; B 34 -23 459 539 ;
+U 1110 ; WX 222 ; N afii10103 ; G 402 ; B 66 0 150 729 ;
+U 1111 ; WX 278 ; N afii10104 ; G 403 ; B 3 0 269 708 ;
+U 1112 ; WX 222 ; N afii10105 ; G 404 ; B -18 -218 153 729 ;
+U 1113 ; WX 884 ; N afii10106 ; G 405 ; B 70 0 815 524 ;
+U 1114 ; WX 885 ; N afii10107 ; G 406 ; B 70 0 816 524 ;
+U 1115 ; WX 582 ; N afii10108 ; G 407 ; B 15 0 512 729 ;
+U 1116 ; WX 500 ; N afii10109 ; G 408 ; B 58 0 502 712 ;
+U 1117 ; WX 556 ; N uni045D ; G 409 ; B 70 0 487 712 ;
+U 1118 ; WX 500 ; N afii10110 ; G 410 ; B 20 -218 478 699 ;
+U 1119 ; WX 556 ; N afii10193 ; G 411 ; B 70 -120 488 524 ;
+U 1164 ; WX 667 ; N uni048C ; G 412 ; B -10 0 623 729 ;
+U 1165 ; WX 552 ; N uni048D ; G 413 ; B 8 0 488 524 ;
+U 1166 ; WX 667 ; N uni048E ; G 414 ; B 91 0 617 729 ;
+U 1167 ; WX 556 ; N uni048F ; G 415 ; B 54 -218 524 539 ;
+U 1168 ; WX 611 ; N afii10050 ; G 416 ; B 90 0 579 825 ;
+U 1169 ; WX 430 ; N afii10098 ; G 417 ; B 70 0 365 629 ;
+U 1170 ; WX 611 ; N uni0492 ; G 418 ; B 4 0 568 729 ;
+U 1171 ; WX 430 ; N uni0493 ; G 419 ; B 8 0 380 524 ;
+U 1172 ; WX 611 ; N uni0494 ; G 420 ; B 90 -174 579 729 ;
+U 1173 ; WX 490 ; N uni0495 ; G 421 ; B 70 -143 427 524 ;
+U 1174 ; WX 1023 ; N uni0496 ; G 422 ; B 63 -135 948 729 ;
+U 1175 ; WX 837 ; N uni0497 ; G 423 ; B 14 -120 819 524 ;
+U 1176 ; WX 667 ; N uni0498 ; G 424 ; B 48 -205 621 741 ;
+U 1177 ; WX 500 ; N uni0499 ; G 425 ; B 34 -205 459 539 ;
+U 1178 ; WX 667 ; N uni049A ; G 426 ; B 79 -135 621 729 ;
+U 1179 ; WX 510 ; N uni049B ; G 427 ; B 70 -120 484 524 ;
+U 1180 ; WX 667 ; N uni049C ; G 428 ; B 79 0 664 729 ;
+U 1181 ; WX 500 ; N uni049D ; G 429 ; B 58 0 502 524 ;
+U 1182 ; WX 667 ; N uni049E ; G 430 ; B -6 0 658 729 ;
+U 1183 ; WX 500 ; N uni049F ; G 431 ; B -2 0 502 524 ;
+U 1184 ; WX 900 ; N uni04A0 ; G 432 ; B 81 0 891 729 ;
+U 1185 ; WX 683 ; N uni04A1 ; G 433 ; B 57 0 685 524 ;
+U 1186 ; WX 722 ; N uni04A2 ; G 434 ; B 83 -135 711 729 ;
+U 1187 ; WX 556 ; N uni04A3 ; G 435 ; B 70 -120 548 524 ;
+U 1188 ; WX 1000 ; N uni04A4 ; G 436 ; B 83 0 968 729 ;
+U 1189 ; WX 764 ; N uni04A5 ; G 437 ; B 70 0 699 524 ;
+U 1190 ; WX 1061 ; N uni04A6 ; G 438 ; B 83 -174 1001 729 ;
+U 1191 ; WX 826 ; N uni04A7 ; G 439 ; B 70 -143 760 524 ;
+U 1192 ; WX 722 ; N uni04A8 ; G 440 ; B 48 -23 677 741 ;
+U 1193 ; WX 500 ; N uni04A9 ; G 441 ; B 31 -23 477 539 ;
+U 1194 ; WX 722 ; N uni04AA ; G 442 ; B 48 -205 677 741 ;
+U 1195 ; WX 500 ; N uni04AB ; G 443 ; B 31 -205 477 539 ;
+U 1196 ; WX 611 ; N uni04AC ; G 444 ; B 21 -135 593 729 ;
+U 1197 ; WX 496 ; N uni04AD ; G 445 ; B 60 -120 432 524 ;
+U 1198 ; WX 667 ; N uni04AE ; G 446 ; B 13 0 661 729 ;
+U 1199 ; WX 667 ; N uni04AF ; G 447 ; B 53 -200 621 524 ;
+U 1200 ; WX 667 ; N uni04B0 ; G 448 ; B 13 0 661 729 ;
+U 1201 ; WX 667 ; N uni04B1 ; G 449 ; B 53 -200 621 524 ;
+U 1202 ; WX 667 ; N uni04B2 ; G 450 ; B 22 -135 649 729 ;
+U 1203 ; WX 500 ; N uni04B3 ; G 451 ; B 17 -120 473 524 ;
+U 1204 ; WX 942 ; N uni04B4 ; G 452 ; B 21 -135 904 729 ;
+U 1205 ; WX 732 ; N uni04B5 ; G 453 ; B 60 -120 692 524 ;
+U 1206 ; WX 648 ; N uni04B6 ; G 454 ; B 79 -135 636 729 ;
+U 1207 ; WX 520 ; N uni04B7 ; G 455 ; B 70 -120 511 524 ;
+U 1208 ; WX 648 ; N uni04B8 ; G 456 ; B 79 0 569 729 ;
+U 1209 ; WX 520 ; N uni04B9 ; G 457 ; B 70 0 450 524 ;
+U 1210 ; WX 648 ; N uni04BA ; G 458 ; B 79 0 569 729 ;
+U 1211 ; WX 520 ; N uni04BB ; G 459 ; B 70 0 450 524 ;
+U 1212 ; WX 927 ; N uni04BC ; G 460 ; B 47 -23 882 757 ;
+U 1213 ; WX 716 ; N uni04BD ; G 461 ; B 42 -23 673 539 ;
+U 1214 ; WX 927 ; N uni04BE ; G 462 ; B 47 -205 882 757 ;
+U 1215 ; WX 716 ; N uni04BF ; G 463 ; B 42 -205 673 539 ;
+U 1216 ; WX 278 ; N uni04C0 ; G 464 ; B 100 0 194 729 ;
+U 1217 ; WX 1023 ; N uni04C1 ; G 465 ; B 63 0 948 904 ;
+U 1218 ; WX 837 ; N uni04C2 ; G 466 ; B 14 0 819 699 ;
+U 1219 ; WX 667 ; N uni04C3 ; G 467 ; B 79 -174 655 729 ;
+U 1220 ; WX 500 ; N uni04C4 ; G 468 ; B 58 -143 470 524 ;
+U 1223 ; WX 722 ; N uni04C7 ; G 469 ; B 83 -174 644 729 ;
+U 1224 ; WX 556 ; N uni04C8 ; G 470 ; B 70 -143 488 524 ;
+U 1227 ; WX 648 ; N uni04CB ; G 471 ; B 79 -135 569 729 ;
+U 1228 ; WX 520 ; N uni04CC ; G 472 ; B 70 -120 450 524 ;
+U 1232 ; WX 667 ; N uni04D0 ; G 473 ; B 17 0 653 904 ;
+U 1233 ; WX 556 ; N uni04D1 ; G 474 ; B 42 -23 535 699 ;
+U 1234 ; WX 667 ; N uni04D2 ; G 475 ; B 17 0 653 872 ;
+U 1235 ; WX 556 ; N uni04D3 ; G 476 ; B 42 -23 535 667 ;
+U 1236 ; WX 1000 ; N uni04D4 ; G 477 ; B 11 0 950 729 ;
+U 1237 ; WX 889 ; N uni04D5 ; G 478 ; B 34 -23 845 539 ;
+U 1238 ; WX 667 ; N uni04D6 ; G 479 ; B 90 0 613 904 ;
+U 1239 ; WX 556 ; N uni04D7 ; G 480 ; B 40 -23 513 699 ;
+U 1240 ; WX 722 ; N uni04D8 ; G 481 ; B 47 -23 677 741 ;
+U 1241 ; WX 556 ; N afii10846 ; G 482 ; B 40 -23 513 539 ;
+U 1242 ; WX 722 ; N uni04DA ; G 483 ; B 47 -23 677 904 ;
+U 1243 ; WX 556 ; N uni04DB ; G 484 ; B 40 -23 513 702 ;
+U 1244 ; WX 1023 ; N uni04DC ; G 485 ; B 63 0 948 872 ;
+U 1245 ; WX 837 ; N uni04DD ; G 486 ; B 14 0 819 667 ;
+U 1246 ; WX 667 ; N uni04DE ; G 487 ; B 48 -23 621 872 ;
+U 1247 ; WX 500 ; N uni04DF ; G 488 ; B 34 -23 459 667 ;
+U 1248 ; WX 667 ; N uni04E0 ; G 489 ; B 48 -23 621 741 ;
+U 1249 ; WX 500 ; N uni04E1 ; G 490 ; B 34 -23 459 539 ;
+U 1250 ; WX 722 ; N uni04E2 ; G 491 ; B 76 0 646 839 ;
+U 1251 ; WX 556 ; N uni04E3 ; G 492 ; B 70 0 487 634 ;
+U 1252 ; WX 722 ; N uni04E4 ; G 493 ; B 76 0 646 872 ;
+U 1253 ; WX 556 ; N uni04E5 ; G 494 ; B 70 0 487 667 ;
+U 1254 ; WX 778 ; N uni04E6 ; G 495 ; B 38 -23 742 872 ;
+U 1255 ; WX 556 ; N uni04E7 ; G 496 ; B 36 -23 510 667 ;
+U 1256 ; WX 778 ; N uni04E8 ; G 497 ; B 38 -23 742 741 ;
+U 1257 ; WX 556 ; N uni04E9 ; G 498 ; B 36 -23 510 539 ;
+U 1258 ; WX 778 ; N uni04EA ; G 499 ; B 38 -23 742 872 ;
+U 1259 ; WX 556 ; N uni04EB ; G 500 ; B 36 -23 510 667 ;
+U 1260 ; WX 722 ; N uni04EC ; G 501 ; B 48 -23 677 872 ;
+U 1261 ; WX 500 ; N uni04ED ; G 502 ; B 31 -23 477 667 ;
+U 1262 ; WX 650 ; N uni04EE ; G 503 ; B 26 0 619 839 ;
+U 1263 ; WX 500 ; N uni04EF ; G 504 ; B 20 -218 478 634 ;
+U 1264 ; WX 650 ; N uni04F0 ; G 505 ; B 26 0 619 872 ;
+U 1265 ; WX 500 ; N uni04F1 ; G 506 ; B 20 -218 478 667 ;
+U 1266 ; WX 650 ; N uni04F2 ; G 507 ; B 26 0 619 919 ;
+U 1267 ; WX 500 ; N uni04F3 ; G 508 ; B 20 -218 478 714 ;
+U 1268 ; WX 648 ; N uni04F4 ; G 509 ; B 79 0 569 904 ;
+U 1269 ; WX 520 ; N uni04F5 ; G 510 ; B 70 0 450 702 ;
+U 1272 ; WX 886 ; N uni04F8 ; G 511 ; B 79 0 804 872 ;
+U 1273 ; WX 748 ; N uni04F9 ; G 512 ; B 70 0 661 667 ;
+U 63172 ; WX 430 ; N uniF6C4 ; G 513 ; B 70 0 380 524 ;
+U 63173 ; WX 556 ; N uniF6C5 ; G 514 ; B 20 -23 510 775 ;
+U 63174 ; WX 602 ; N uniF6C6 ; G 515 ; B 30 -120 572 524 ;
+U 63175 ; WX 557 ; N uniF6C7 ; G 516 ; B 70 0 487 524 ;
+U 63176 ; WX 496 ; N uniF6C8 ; G 517 ; B 60 0 432 524 ;
+U 264 ; WX 722 ; N Ccircumflex ; G 518 ; B 48 -23 677 929 ;
+U 265 ; WX 500 ; N ccircumflex ; G 519 ; B 31 -23 477 714 ;
+U 266 ; WX 722 ; N Cdotaccent ; G 520 ; B 48 -23 677 893 ;
+U 267 ; WX 500 ; N cdotaccent ; G 521 ; B 31 -23 477 668 ;
+U 276 ; WX 667 ; N Ebreve ; G 522 ; B 90 0 613 904 ;
+U 277 ; WX 556 ; N ebreve ; G 523 ; B 40 -23 513 699 ;
+U 284 ; WX 778 ; N Gcircumflex ; G 524 ; B 44 -23 709 939 ;
+U 285 ; WX 556 ; N gcircumflex ; G 525 ; B 29 -218 489 734 ;
+U 288 ; WX 778 ; N Gdotaccent ; G 526 ; B 44 -23 709 893 ;
+U 289 ; WX 556 ; N gdotaccent ; G 527 ; B 29 -218 489 698 ;
+U 292 ; WX 722 ; N Hcircumflex ; G 528 ; B 83 0 644 919 ;
+U 293 ; WX 556 ; N hcircumflex ; G 529 ; B -32 0 486 919 ;
+U 294 ; WX 785 ; N Hbar ; G 530 ; B 38 0 752 729 ;
+U 295 ; WX 556 ; N hbar ; G 531 ; B 22 0 486 729 ;
+U 296 ; WX 278 ; N Itilde ; G 532 ; B -10 0 304 873 ;
+U 297 ; WX 278 ; N itilde ; G 533 ; B -21 0 293 668 ;
+U 300 ; WX 278 ; N Ibreve ; G 534 ; B -4 0 297 904 ;
+U 301 ; WX 278 ; N ibreve ; G 535 ; B -14 0 287 699 ;
+U 306 ; WX 700 ; N IJ ; G 536 ; B 100 -23 626 729 ;
+U 307 ; WX 374 ; N ij ; G 537 ; B 66 -218 305 729 ;
+U 308 ; WX 500 ; N Jcircumflex ; G 538 ; B 17 -23 523 919 ;
+U 309 ; WX 222 ; N jcircumflex ; G 539 ; B -32 -218 255 785 ;
+U 312 ; WX 500 ; N kgreenlandic ; G 540 ; B 58 0 502 524 ;
+U 319 ; WX 556 ; N Ldot ; G 541 ; B 80 0 533 729 ;
+U 320 ; WX 404 ; N ldot ; G 542 ; B 68 0 357 729 ;
+U 329 ; WX 556 ; N napostrophe ; G 543 ; B 64 0 487 789 ;
+U 330 ; WX 722 ; N Eng ; G 544 ; B 76 -174 646 729 ;
+U 331 ; WX 556 ; N eng ; G 545 ; B 70 -143 487 539 ;
+U 334 ; WX 778 ; N Obreve ; G 546 ; B 38 -23 742 904 ;
+U 335 ; WX 556 ; N obreve ; G 547 ; B 36 -23 510 699 ;
+U 348 ; WX 667 ; N Scircumflex ; G 548 ; B 48 -23 621 919 ;
+U 349 ; WX 500 ; N scircumflex ; G 549 ; B 34 -23 459 714 ;
+U 358 ; WX 611 ; N Tbar ; G 550 ; B 21 0 593 729 ;
+U 359 ; WX 278 ; N tbar ; G 551 ; B 13 -23 253 668 ;
+U 360 ; WX 722 ; N Utilde ; G 552 ; B 85 -23 645 873 ;
+U 361 ; WX 556 ; N utilde ; G 553 ; B 65 -23 482 668 ;
+U 364 ; WX 722 ; N Ubreve ; G 554 ; B 85 -23 645 904 ;
+U 365 ; WX 556 ; N ubreve ; G 555 ; B 65 -23 482 699 ;
+U 372 ; WX 944 ; N Wcircumflex ; G 556 ; B 22 0 929 919 ;
+U 373 ; WX 722 ; N wcircumflex ; G 557 ; B 6 0 708 714 ;
+U 374 ; WX 667 ; N Ycircumflex ; G 558 ; B 13 0 661 919 ;
+U 375 ; WX 500 ; N ycircumflex ; G 559 ; B 20 -218 478 714 ;
+U 383 ; WX 278 ; N longs ; G 560 ; B 18 0 258 732 ;
+U 8470 ; WX 1008 ; N afii61352 ; G 561 ; B 76 0 978 729 ;
+U 8734 ; WX 756 ; N infinity ; G 562 ; B 38 114 710 500 ;
+U 7926 ; WX 667 ; N uni1EF6 ; G 563 ; B 13 0 661 1043 ;
+U 7927 ; WX 500 ; N uni1EF7 ; G 564 ; B 20 -218 478 847 ;
+U 7924 ; WX 667 ; N uni1EF4 ; G 565 ; B 13 -224 661 729 ;
+U 7925 ; WX 500 ; N uni1EF5 ; G 566 ; B 20 -224 478 524 ;
+U 7842 ; WX 667 ; N uni1EA2 ; G 567 ; B 17 0 653 1043 ;
+U 7840 ; WX 667 ; N uni1EA0 ; G 568 ; B 17 -224 653 729 ;
+U 7846 ; WX 667 ; N uni1EA6 ; G 569 ; B 17 0 653 1129 ;
+U 7844 ; WX 667 ; N uni1EA4 ; G 570 ; B 17 0 653 1129 ;
+U 7850 ; WX 667 ; N uni1EAA ; G 571 ; B 17 0 653 1114 ;
+U 7848 ; WX 667 ; N uni1EA8 ; G 572 ; B 17 0 653 1155 ;
+U 7852 ; WX 667 ; N uni1EAC ; G 573 ; B 17 -224 653 960 ;
+U 7856 ; WX 667 ; N uni1EB0 ; G 574 ; B 17 0 653 1132 ;
+U 7854 ; WX 667 ; N uni1EAE ; G 575 ; B 17 0 653 1132 ;
+U 7860 ; WX 667 ; N uni1EB4 ; G 576 ; B 17 0 653 1109 ;
+U 7858 ; WX 667 ; N uni1EB2 ; G 577 ; B 17 0 653 1196 ;
+U 7862 ; WX 667 ; N uni1EB6 ; G 578 ; B 17 -224 653 954 ;
+U 7868 ; WX 667 ; N uni1EBC ; G 579 ; B 90 0 613 950 ;
+U 7866 ; WX 667 ; N uni1EBA ; G 580 ; B 90 0 613 1043 ;
+U 7864 ; WX 667 ; N uni1EB8 ; G 581 ; B 90 -224 613 729 ;
+U 7872 ; WX 667 ; N uni1EC0 ; G 582 ; B 90 0 613 1129 ;
+U 7870 ; WX 667 ; N uni1EBE ; G 583 ; B 90 0 613 1129 ;
+U 7876 ; WX 667 ; N uni1EC4 ; G 584 ; B 90 0 613 1114 ;
+U 7874 ; WX 667 ; N uni1EC2 ; G 585 ; B 90 0 613 1155 ;
+U 7878 ; WX 667 ; N uni1EC6 ; G 586 ; B 90 -224 613 960 ;
+U 7880 ; WX 278 ; N uni1EC8 ; G 587 ; B 26 0 252 1043 ;
+U 7843 ; WX 556 ; N uni1EA3 ; G 588 ; B 42 -23 535 847 ;
+U 7841 ; WX 556 ; N uni1EA1 ; G 589 ; B 42 -224 535 539 ;
+U 7847 ; WX 556 ; N uni1EA7 ; G 590 ; B 42 -23 535 933 ;
+U 7845 ; WX 556 ; N uni1EA5 ; G 591 ; B 42 -23 535 933 ;
+U 7851 ; WX 556 ; N uni1EAB ; G 592 ; B 42 -23 535 918 ;
+U 7849 ; WX 556 ; N uni1EA9 ; G 593 ; B 42 -23 535 959 ;
+U 7853 ; WX 556 ; N uni1EAD ; G 594 ; B 42 -224 535 764 ;
+U 7857 ; WX 556 ; N uni1EB1 ; G 595 ; B 42 -23 535 937 ;
+U 7855 ; WX 556 ; N uni1EAF ; G 596 ; B 42 -23 535 937 ;
+U 7861 ; WX 556 ; N uni1EB5 ; G 597 ; B 42 -23 535 914 ;
+U 7859 ; WX 556 ; N uni1EB3 ; G 598 ; B 42 -23 535 1001 ;
+U 7863 ; WX 556 ; N uni1EB7 ; G 599 ; B 42 -224 535 759 ;
+U 7869 ; WX 556 ; N uni1EBD ; G 600 ; B 40 -23 513 748 ;
+U 7867 ; WX 556 ; N uni1EBB ; G 601 ; B 40 -23 513 847 ;
+U 7865 ; WX 556 ; N uni1EB9 ; G 602 ; B 40 -224 513 539 ;
+U 7873 ; WX 556 ; N uni1EC1 ; G 603 ; B 40 -23 513 933 ;
+U 7871 ; WX 556 ; N uni1EBF ; G 604 ; B 40 -23 513 933 ;
+U 7877 ; WX 556 ; N uni1EC5 ; G 605 ; B 40 -23 513 918 ;
+U 7875 ; WX 556 ; N uni1EC3 ; G 606 ; B 40 -23 526 959 ;
+U 7879 ; WX 556 ; N uni1EC7 ; G 607 ; B 40 -224 513 764 ;
+U 7881 ; WX 278 ; N uni1EC9 ; G 608 ; B -2 0 224 847 ;
+U 7882 ; WX 278 ; N uni1ECA ; G 609 ; B 87 -224 194 729 ;
+U 7886 ; WX 778 ; N uni1ECE ; G 610 ; B 38 -23 742 1043 ;
+U 7884 ; WX 778 ; N uni1ECC ; G 611 ; B 38 -224 742 741 ;
+U 7890 ; WX 778 ; N uni1ED2 ; G 612 ; B 38 -23 742 1129 ;
+U 7888 ; WX 778 ; N uni1ED0 ; G 613 ; B 38 -23 742 1129 ;
+U 7894 ; WX 778 ; N uni1ED6 ; G 614 ; B 38 -23 742 1114 ;
+U 7892 ; WX 778 ; N uni1ED4 ; G 615 ; B 38 -23 742 1155 ;
+U 7896 ; WX 778 ; N uni1ED8 ; G 616 ; B 38 -224 742 960 ;
+U 416 ; WX 778 ; N Ohorn ; G 617 ; B 38 -23 742 833 ;
+U 7900 ; WX 778 ; N uni1EDC ; G 618 ; B 38 -23 742 994 ;
+U 7898 ; WX 778 ; N uni1EDA ; G 619 ; B 38 -23 742 976 ;
+U 7904 ; WX 778 ; N uni1EE0 ; G 620 ; B 38 -23 742 973 ;
+U 7902 ; WX 778 ; N uni1EDE ; G 621 ; B 38 -23 742 1059 ;
+U 7906 ; WX 778 ; N uni1EE2 ; G 622 ; B 38 -224 742 833 ;
+U 7910 ; WX 722 ; N uni1EE6 ; G 623 ; B 85 -23 645 1043 ;
+U 7908 ; WX 722 ; N uni1EE4 ; G 624 ; B 85 -224 645 729 ;
+U 431 ; WX 722 ; N Uhorn ; G 625 ; B 85 -23 748 833 ;
+U 7914 ; WX 722 ; N uni1EEA ; G 626 ; B 85 -23 748 994 ;
+U 7912 ; WX 722 ; N uni1EE8 ; G 627 ; B 85 -23 748 976 ;
+U 7918 ; WX 722 ; N uni1EEE ; G 628 ; B 85 -23 748 973 ;
+U 7916 ; WX 722 ; N uni1EEC ; G 629 ; B 85 -23 748 1059 ;
+U 7920 ; WX 722 ; N uni1EF0 ; G 630 ; B 85 -224 748 833 ;
+U 7922 ; WX 667 ; N Ygrave ; G 631 ; B 13 0 661 967 ;
+U 7928 ; WX 667 ; N uni1EF8 ; G 632 ; B 13 0 661 950 ;
+U 7883 ; WX 222 ; N uni1ECB ; G 633 ; B 59 -224 163 729 ;
+U 7887 ; WX 556 ; N uni1ECF ; G 634 ; B 36 -23 510 847 ;
+U 7885 ; WX 556 ; N uni1ECD ; G 635 ; B 36 -224 510 539 ;
+U 7891 ; WX 556 ; N uni1ED3 ; G 636 ; B 36 -23 510 933 ;
+U 7889 ; WX 556 ; N uni1ED1 ; G 637 ; B 36 -23 510 933 ;
+U 7895 ; WX 556 ; N uni1ED7 ; G 638 ; B 36 -23 510 918 ;
+U 7893 ; WX 556 ; N uni1ED5 ; G 639 ; B 36 -23 526 959 ;
+U 7897 ; WX 556 ; N uni1ED9 ; G 640 ; B 36 -224 510 764 ;
+U 417 ; WX 556 ; N ohorn ; G 641 ; B 36 -23 520 628 ;
+U 7901 ; WX 556 ; N uni1EDD ; G 642 ; B 36 -23 520 822 ;
+U 7899 ; WX 556 ; N uni1EDB ; G 643 ; B 36 -23 520 782 ;
+U 7905 ; WX 556 ; N uni1EE1 ; G 644 ; B 36 -23 520 772 ;
+U 7903 ; WX 556 ; N uni1EDF ; G 645 ; B 36 -23 520 865 ;
+U 7907 ; WX 556 ; N uni1EE3 ; G 646 ; B 36 -224 520 628 ;
+U 7911 ; WX 556 ; N uni1EE7 ; G 647 ; B 65 -23 482 847 ;
+U 7909 ; WX 556 ; N uni1EE5 ; G 648 ; B 65 -224 482 524 ;
+U 432 ; WX 556 ; N uhorn ; G 649 ; B 65 -23 585 628 ;
+U 7915 ; WX 556 ; N uni1EEB ; G 650 ; B 65 -23 585 822 ;
+U 7913 ; WX 556 ; N uni1EE9 ; G 651 ; B 65 -23 585 782 ;
+U 7919 ; WX 556 ; N uni1EEF ; G 652 ; B 65 -23 585 772 ;
+U 7917 ; WX 556 ; N uni1EED ; G 653 ; B 65 -23 585 865 ;
+U 7921 ; WX 556 ; N uni1EF1 ; G 654 ; B 65 -224 585 628 ;
+U 7923 ; WX 500 ; N ygrave ; G 655 ; B 20 -218 478 772 ;
+U 7929 ; WX 500 ; N uni1EF9 ; G 656 ; B 20 -218 478 748 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Symbol.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Symbol.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Symbol.ufm	(revision 2000)
@@ -0,0 +1,275 @@
+StartFontMetrics 4.1
+FontName Standard_Symbols_L_Regular
+FullName Standard Symbols L Regular
+Notice 
+EncodingScheme FontSpecific
+FamilyName Standard Symbols L
+Weight Regular
+Version 1.0
+Characters 190
+ItalicAngle 0.0
+Ascender 1010
+Descender -293
+UnderlineThickness 46
+UnderlinePosition -229
+IsFixedPitch false
+FontBBox -180 -293 1090 1010
+StartCharMetrics 256
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N space ; G 189 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N .null ; G 1 ; B 128 -13 240 686 ;
+U -1 ; WX 713 ; N universal ; G 2 ; B 31 0 681 673 ;
+U -1 ; WX 502 ; N numbersign ; G 3 ; B 20 0 481 631 ;
+U -1 ; WX 549 ; N existential ; G 4 ; B 25 0 478 673 ;
+U -1 ; WX 833 ; N percent ; G 5 ; B 63 -7 771 673 ;
+U -1 ; WX 778 ; N ampersand ; G 6 ; B 41 -13 750 675 ;
+U -1 ; WX 439 ; N suchthat ; G 7 ; B 48 -13 414 503 ;
+U -1 ; WX 333 ; N parenleft ; G 8 ; B 53 -172 300 680 ;
+U -1 ; WX 333 ; N parenright ; G 9 ; B 30 -172 277 680 ;
+U -1 ; WX 500 ; N asteriskmath ; G 10 ; B 65 127 427 546 ;
+U -1 ; WX 560 ; N plus ; G 11 ; B 10 0 539 533 ;
+U -1 ; WX 250 ; N comma ; G 12 ; B 56 -120 194 102 ;
+U -1 ; WX 556 ; N minus ; G 13 ; B 11 239 535 294 ;
+U -1 ; WX 250 ; N period ; G 14 ; B 69 -13 181 100 ;
+U -1 ; WX 278 ; N slash ; G 15 ; B 0 0 254 673 ;
+U -1 ; WX 500 ; N zero ; G 16 ; B 23 -13 471 686 ;
+U -1 ; WX 500 ; N one ; G 17 ; B 117 0 390 673 ;
+U -1 ; WX 500 ; N two ; G 18 ; B 25 0 475 686 ;
+U -1 ; WX 500 ; N three ; G 19 ; B 39 -13 435 686 ;
+U -1 ; WX 500 ; N four ; G 20 ; B 16 0 469 680 ;
+U -1 ; WX 500 ; N five ; G 21 ; B 29 -13 443 699 ;
+U -1 ; WX 500 ; N six ; G 22 ; B 36 -13 468 685 ;
+U -1 ; WX 500 ; N seven ; G 23 ; B 24 -7 448 673 ;
+U -1 ; WX 500 ; N eight ; G 24 ; B 54 -13 440 686 ;
+U -1 ; WX 500 ; N nine ; G 25 ; B 31 -13 460 686 ;
+U -1 ; WX 278 ; N colon ; G 26 ; B 81 -13 193 463 ;
+U -1 ; WX 278 ; N semicolon ; G 27 ; B 83 -120 221 463 ;
+U -1 ; WX 549 ; N less ; G 28 ; B 26 0 523 522 ;
+U -1 ; WX 558 ; N equal ; G 29 ; B 11 142 537 391 ;
+U -1 ; WX 549 ; N greater ; G 30 ; B 26 0 523 522 ;
+U -1 ; WX 444 ; N question ; G 31 ; B 70 -13 412 686 ;
+U -1 ; WX 558 ; N congruent ; G 32 ; B 11 0 537 475 ;
+U -1 ; WX 722 ; N Alpha ; G 33 ; B 4 0 684 673 ;
+U -1 ; WX 667 ; N Beta ; G 34 ; B 29 0 592 673 ;
+U -1 ; WX 725 ; N Chi ; G 35 ; B -9 0 704 673 ;
+U -1 ; WX 629 ; N Delta ; G 36 ; B 6 0 608 688 ;
+U -1 ; WX 638 ; N Epsilon ; G 37 ; B 32 0 617 673 ;
+U -1 ; WX 763 ; N Phi ; G 38 ; B 26 0 741 673 ;
+U -1 ; WX 630 ; N Gamma ; G 39 ; B 24 0 609 673 ;
+U -1 ; WX 750 ; N Eta ; G 40 ; B 39 0 729 673 ;
+U -1 ; WX 337 ; N Iota ; G 41 ; B 32 0 316 673 ;
+U -1 ; WX 644 ; N theta1 ; G 42 ; B 18 -13 623 686 ;
+U -1 ; WX 743 ; N Kappa ; G 43 ; B 35 0 722 673 ;
+U -1 ; WX 701 ; N Lambda ; G 44 ; B 6 0 680 688 ;
+U -1 ; WX 908 ; N Mu ; G 45 ; B 28 0 887 673 ;
+U -1 ; WX 741 ; N Nu ; G 46 ; B 29 0 720 673 ;
+U -1 ; WX 736 ; N Omicron ; G 47 ; B 41 -13 715 686 ;
+U -1 ; WX 768 ; N Pi ; G 48 ; B 25 0 745 673 ;
+U -1 ; WX 741 ; N Theta ; G 49 ; B 41 -13 715 686 ;
+U -1 ; WX 584 ; N Rho ; G 50 ; B 28 0 563 673 ;
+U -1 ; WX 610 ; N Sigma ; G 51 ; B 5 0 589 673 ;
+U -1 ; WX 628 ; N Tau ; G 52 ; B 33 0 607 673 ;
+U -1 ; WX 715 ; N Upsilon ; G 53 ; B -8 0 694 673 ;
+U -1 ; WX 457 ; N sigma1 ; G 54 ; B 40 -222 436 513 ;
+U -1 ; WX 768 ; N Omega ; G 55 ; B 34 0 736 686 ;
+U -1 ; WX 645 ; N Xi ; G 56 ; B 40 0 599 673 ;
+U -1 ; WX 802 ; N Psi ; G 57 ; B 15 0 781 686 ;
+U -1 ; WX 657 ; N Zeta ; G 58 ; B 44 0 636 673 ;
+U -1 ; WX 333 ; N bracketleft ; G 59 ; B 86 -165 299 673 ;
+U -1 ; WX 863 ; N therefore ; G 60 ; B 163 -13 701 433 ;
+U -1 ; WX 333 ; N bracketright ; G 61 ; B 33 -165 246 673 ;
+U -1 ; WX 673 ; N perpendicular ; G 62 ; B 15 0 652 673 ;
+U -1 ; WX 523 ; N underscore ; G 63 ; B -2 -252 502 -206 ;
+U -1 ; WX 1111 ; N radicalex ; G 64 ; B 480 857 1090 913 ;
+U -1 ; WX 643 ; N alpha ; G 65 ; B 41 -13 622 513 ;
+U -1 ; WX 549 ; N beta ; G 66 ; B 61 -222 515 740 ;
+U -1 ; WX 549 ; N chi ; G 67 ; B 12 -210 522 513 ;
+U -1 ; WX 502 ; N delta ; G 68 ; B 40 -13 481 740 ;
+U -1 ; WX 448 ; N epsilon ; G 69 ; B 22 -13 427 513 ;
+U -1 ; WX 521 ; N phi ; G 70 ; B 27 -222 490 686 ;
+U -1 ; WX 505 ; N gamma ; G 71 ; B 5 -219 484 513 ;
+U -1 ; WX 603 ; N eta ; G 72 ; B 0 -222 527 513 ;
+U -1 ; WX 329 ; N iota ; G 73 ; B 0 -13 301 513 ;
+U -1 ; WX 608 ; N phi1 ; G 74 ; B 36 -222 587 513 ;
+U -1 ; WX 579 ; N kappa ; G 75 ; B 33 0 558 513 ;
+U -1 ; WX 569 ; N lambda ; G 76 ; B 24 -13 548 740 ;
+U -1 ; WX 588 ; N mu ; G 77 ; B 33 -219 567 500 ;
+U -1 ; WX 521 ; N nu ; G 78 ; B -9 -13 475 513 ;
+U -1 ; WX 549 ; N omicron ; G 79 ; B 35 -13 501 513 ;
+U -1 ; WX 551 ; N pi ; G 80 ; B 10 -13 530 500 ;
+U -1 ; WX 521 ; N theta ; G 81 ; B 43 -13 485 686 ;
+U -1 ; WX 549 ; N rho ; G 82 ; B 50 -220 490 513 ;
+U -1 ; WX 609 ; N sigma ; G 83 ; B 30 -13 588 500 ;
+U -1 ; WX 439 ; N tau ; G 84 ; B 10 -13 418 500 ;
+U -1 ; WX 576 ; N upsilon ; G 85 ; B 7 -13 535 513 ;
+U -1 ; WX 713 ; N omega1 ; G 86 ; B 12 -13 671 583 ;
+U -1 ; WX 705 ; N omega ; G 87 ; B 42 -13 684 513 ;
+U -1 ; WX 493 ; N xi ; G 88 ; B 27 -222 469 766 ;
+U -1 ; WX 722 ; N psi ; G 89 ; B 12 -222 701 513 ;
+U -1 ; WX 494 ; N zeta ; G 90 ; B 60 -222 467 756 ;
+U -1 ; WX 480 ; N braceleft ; G 91 ; B 58 -165 397 673 ;
+U -1 ; WX 200 ; N bar ; G 92 ; B 65 -177 135 673 ;
+U -1 ; WX 480 ; N braceright ; G 93 ; B 79 -165 418 673 ;
+U -1 ; WX 550 ; N similar ; G 94 ; B 17 196 529 325 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 762 ; N Euro ; G 96 ; B 53 -4 722 671 ;
+U -1 ; WX 631 ; N Upsilon1 ; G 95 ; B -2 0 610 687 ;
+U -1 ; WX 249 ; N minute ; G 97 ; B 27 476 228 735 ;
+U -1 ; WX 549 ; N lessequal ; G 98 ; B 29 0 526 639 ;
+U -1 ; WX 361 ; N fraction ; G 99 ; B -180 0 340 673 ;
+U -1 ; WX 713 ; N infinity ; G 100 ; B 26 115 688 414 ;
+U -1 ; WX 515 ; N florin ; G 101 ; B 2 -174 494 687 ;
+U -1 ; WX 753 ; N club ; G 102 ; B 86 -26 660 544 ;
+U -1 ; WX 753 ; N diamond ; G 103 ; B 142 -36 600 550 ;
+U -1 ; WX 753 ; N heart ; G 104 ; B 117 -33 631 528 ;
+U -1 ; WX 753 ; N spade ; G 105 ; B 113 -36 629 591 ;
+U -1 ; WX 1045 ; N arrowboth ; G 106 ; B 24 -16 1024 512 ;
+U -1 ; WX 987 ; N arrowleft ; G 107 ; B 32 -15 942 511 ;
+U -1 ; WX 603 ; N arrowup ; G 108 ; B 45 0 571 910 ;
+U -1 ; WX 987 ; N arrowright ; G 109 ; B 49 -15 959 511 ;
+U -1 ; WX 603 ; N arrowdown ; G 110 ; B 45 -22 571 888 ;
+U -1 ; WX 400 ; N degree ; G 111 ; B 50 380 350 686 ;
+U -1 ; WX 560 ; N plusminus ; G 112 ; B 10 0 539 662 ;
+U -1 ; WX 434 ; N second ; G 113 ; B 20 476 413 735 ;
+U -1 ; WX 549 ; N greaterequal ; G 114 ; B 29 0 526 639 ;
+U -1 ; WX 554 ; N multiply ; G 115 ; B 17 9 533 525 ;
+U -1 ; WX 713 ; N proportional ; G 116 ; B 27 114 639 416 ;
+U -1 ; WX 494 ; N partialdiff ; G 117 ; B 26 -10 462 753 ;
+U -1 ; WX 460 ; N bullet ; G 118 ; B 50 155 410 518 ;
+U -1 ; WX 557 ; N divide ; G 119 ; B 10 2 536 525 ;
+U -1 ; WX 561 ; N notequal ; G 120 ; B 15 -25 540 549 ;
+U -1 ; WX 559 ; N equivalence ; G 121 ; B 14 87 538 446 ;
+U -1 ; WX 549 ; N approxequal ; G 122 ; B 14 121 527 408 ;
+U -1 ; WX 1000 ; N ellipsis ; G 123 ; B 111 -13 889 100 ;
+U -1 ; WX 603 ; N arrowvertex ; G 124 ; B 280 -120 336 1010 ;
+U -1 ; WX 1071 ; N arrowhorizex ; G 125 ; B -60 220 1050 276 ;
+U -1 ; WX 658 ; N carriagereturn ; G 126 ; B 15 -16 602 629 ;
+U -1 ; WX 823 ; N aleph ; G 127 ; B 175 0 662 689 ;
+U -1 ; WX 686 ; N Ifraktur ; G 128 ; B 10 -54 578 736 ;
+U -1 ; WX 795 ; N Rfraktur ; G 129 ; B 26 -16 759 730 ;
+U -1 ; WX 987 ; N weierstrass ; G 130 ; B 159 -211 870 574 ;
+U -1 ; WX 768 ; N circlemultiply ; G 131 ; B 43 0 733 691 ;
+U -1 ; WX 768 ; N circleplus ; G 132 ; B 43 0 733 689 ;
+U -1 ; WX 823 ; N emptyset ; G 133 ; B 39 -24 781 718 ;
+U -1 ; WX 768 ; N intersection ; G 134 ; B 40 0 732 507 ;
+U -1 ; WX 768 ; N union ; G 135 ; B 40 -18 732 489 ;
+U -1 ; WX 713 ; N propersuperset ; G 136 ; B 20 0 673 470 ;
+U -1 ; WX 713 ; N reflexsuperset ; G 137 ; B 20 -125 673 470 ;
+U -1 ; WX 713 ; N notsubset ; G 138 ; B 36 -70 690 540 ;
+U -1 ; WX 713 ; N propersubset ; G 139 ; B 37 0 690 470 ;
+U -1 ; WX 713 ; N reflexsubset ; G 140 ; B 37 -125 690 470 ;
+U -1 ; WX 713 ; N element ; G 141 ; B 45 0 505 470 ;
+U -1 ; WX 713 ; N notelement ; G 142 ; B 45 -58 505 555 ;
+U -1 ; WX 768 ; N angle ; G 143 ; B 26 -1 738 672 ;
+U -1 ; WX 713 ; N gradient ; G 144 ; B 36 0 681 687 ;
+U -1 ; WX 790 ; N registerserif ; G 145 ; B 50 -13 740 690 ;
+U -1 ; WX 790 ; N copyrightserif ; G 146 ; B 51 -13 741 690 ;
+U -1 ; WX 890 ; N trademarkserif ; G 147 ; B 18 269 855 673 ;
+U -1 ; WX 824 ; N product ; G 148 ; B 25 -124 803 751 ;
+U -1 ; WX 549 ; N radical ; G 149 ; B 10 -35 515 913 ;
+U -1 ; WX 250 ; N dotmath ; G 150 ; B 69 209 169 311 ;
+U -1 ; WX 713 ; N logicalnot ; G 151 ; B 15 40 680 367 ;
+U -1 ; WX 604 ; N logicaland ; G 152 ; B 23 -1 583 476 ;
+U -1 ; WX 603 ; N logicalor ; G 153 ; B 30 -1 578 476 ;
+U -1 ; WX 1044 ; N arrowdblboth ; G 154 ; B 27 -19 1023 506 ;
+U -1 ; WX 987 ; N arrowdblleft ; G 155 ; B 30 -19 939 506 ;
+U -1 ; WX 603 ; N arrowdblup ; G 156 ; B 39 0 567 909 ;
+U -1 ; WX 987 ; N arrowdblright ; G 157 ; B 45 -19 954 506 ;
+U -1 ; WX 603 ; N arrowdbldown ; G 158 ; B 44 0 572 909 ;
+U -1 ; WX 494 ; N lozenge ; G 159 ; B 18 -1 466 740 ;
+U -1 ; WX 329 ; N angleleft ; G 160 ; B 25 -152 306 757 ;
+U -1 ; WX 790 ; N registersans ; G 161 ; B 50 -12 740 679 ;
+U -1 ; WX 790 ; N copyrightsans ; G 162 ; B 49 -12 739 679 ;
+U -1 ; WX 786 ; N trademarksans ; G 163 ; B 5 277 725 673 ;
+U -1 ; WX 716 ; N summation ; G 164 ; B 14 -123 695 752 ;
+U -1 ; WX 457 ; N parenlefttp ; G 165 ; B 40 -293 436 926 ;
+U -1 ; WX 384 ; N parenleftex ; G 166 ; B 40 -79 92 925 ;
+U -1 ; WX 457 ; N parenleftbt ; G 167 ; B 40 -293 436 926 ;
+U -1 ; WX 384 ; N bracketlefttp ; G 168 ; B 0 -80 341 926 ;
+U -1 ; WX 384 ; N bracketleftex ; G 169 ; B 0 -85 55 925 ;
+U -1 ; WX 384 ; N bracketleftbt ; G 170 ; B 0 -80 340 926 ;
+U -1 ; WX 494 ; N bracelefttp ; G 171 ; B 201 -75 439 926 ;
+U -1 ; WX 494 ; N braceleftmid ; G 172 ; B 14 -85 255 935 ;
+U -1 ; WX 494 ; N braceleftbt ; G 173 ; B 201 -70 439 926 ;
+U -1 ; WX 494 ; N braceex ; G 174 ; B 201 -79 255 925 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 329 ; N angleright ; G 175 ; B 21 -152 302 757 ;
+U -1 ; WX 312 ; N integral ; G 176 ; B 2 -107 291 916 ;
+U -1 ; WX 736 ; N integraltp ; G 177 ; B 332 -83 715 922 ;
+U -1 ; WX 686 ; N integralex ; G 178 ; B 332 -88 415 975 ;
+U -1 ; WX 686 ; N integralbt ; G 179 ; B 39 -81 415 921 ;
+U -1 ; WX 471 ; N parenrighttp ; G 180 ; B 54 -293 450 926 ;
+U -1 ; WX 471 ; N parenrightex ; G 181 ; B 398 -70 450 935 ;
+U -1 ; WX 471 ; N parenrightbt ; G 182 ; B 54 -293 450 926 ;
+U -1 ; WX 384 ; N bracketrighttp ; G 183 ; B 22 -80 360 926 ;
+U -1 ; WX 384 ; N bracketrightex ; G 184 ; B 305 -85 360 925 ;
+U -1 ; WX 384 ; N bracketrightbt ; G 185 ; B 20 -80 360 926 ;
+U -1 ; WX 494 ; N bracerighttp ; G 186 ; B 17 -75 255 926 ;
+U -1 ; WX 494 ; N bracerightmid ; G 187 ; B 201 -85 442 935 ;
+U -1 ; WX 494 ; N bracerightbt ; G 188 ; B 17 -70 255 926 ;
+U -1 ; WX 250 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Courier-BoldOblique.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Courier-BoldOblique.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Courier-BoldOblique.ufm	(revision 2000)
@@ -0,0 +1,719 @@
+StartFontMetrics 4.1
+FontName Nimbus_Mono_L_Bold_Oblique
+FullName Nimbus Mono L Bold Oblique
+Notice 
+EncodingScheme FontSpecific
+FamilyName Nimbus Mono L
+Weight Bold Oblique
+Version 1.0
+Characters 661
+ItalicAngle -11.9
+Ascender 1085
+Descender -278
+UnderlineThickness 50
+UnderlinePosition -100
+IsFixedPitch false
+FontBBox -124 -278 840 1085
+StartCharMetrics 700
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .null ; G 1 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N exclam ; G 2 ; B 234 -15 501 638 ;
+U -1 ; WX 652 ; N quotedbl ; G 3 ; B 243 312 592 602 ;
+U -1 ; WX 683 ; N numbersign ; G 4 ; B 101 -92 623 675 ;
+U -1 ; WX 670 ; N dollar ; G 5 ; B 100 -123 610 684 ;
+U -1 ; WX 659 ; N percent ; G 6 ; B 131 -15 599 617 ;
+U -1 ; WX 617 ; N ampersand ; G 7 ; B 102 -14 557 550 ;
+U -1 ; WX 600 ; N quotesingle ; G 104 ; B 343 312 492 602 ;
+U -1 ; WX 673 ; N parenleft ; G 9 ; B 304 -153 613 632 ;
+U -1 ; WX 600 ; N parenright ; G 10 ; B 94 -153 403 632 ;
+U -1 ; WX 674 ; N asterisk ; G 11 ; B 178 208 614 622 ;
+U -1 ; WX 679 ; N plus ; G 12 ; B 101 0 619 560 ;
+U -1 ; WX 600 ; N comma ; G 13 ; B 118 -158 379 134 ;
+U -1 ; WX 679 ; N hyphen ; G 14 ; B 101 229 619 329 ;
+U -1 ; WX 600 ; N period ; G 15 ; B 234 -15 387 117 ;
+U -1 ; WX 716 ; N slash ; G 16 ; B 69 -113 656 695 ;
+U -1 ; WX 662 ; N zero ; G 17 ; B 130 -15 602 638 ;
+U -1 ; WX 600 ; N one ; G 18 ; B 93 0 529 638 ;
+U -1 ; WX 662 ; N two ; G 19 ; B 54 0 602 638 ;
+U -1 ; WX 669 ; N three ; G 20 ; B 80 -15 609 638 ;
+U -1 ; WX 639 ; N four ; G 21 ; B 104 0 579 622 ;
+U -1 ; WX 670 ; N five ; G 22 ; B 83 -15 610 622 ;
+U -1 ; WX 723 ; N six ; G 23 ; B 154 -15 663 638 ;
+U -1 ; WX 700 ; N seven ; G 24 ; B 184 -1 640 622 ;
+U -1 ; WX 668 ; N eight ; G 25 ; B 114 -15 608 638 ;
+U -1 ; WX 684 ; N nine ; G 26 ; B 115 -15 624 638 ;
+U -1 ; WX 600 ; N colon ; G 27 ; B 234 -15 455 437 ;
+U -1 ; WX 600 ; N semicolon ; G 28 ; B 118 -158 431 437 ;
+U -1 ; WX 702 ; N less ; G 29 ; B 102 54 642 501 ;
+U -1 ; WX 698 ; N equal ; G 30 ; B 81 138 638 422 ;
+U -1 ; WX 676 ; N greater ; G 31 ; B 76 53 616 500 ;
+U -1 ; WX 668 ; N question ; G 32 ; B 197 -15 608 598 ;
+U -1 ; WX 642 ; N at ; G 33 ; B 98 -152 582 620 ;
+U -1 ; WX 693 ; N A ; G 34 ; B -11 0 633 583 ;
+U -1 ; WX 680 ; N B ; G 35 ; B 22 0 620 583 ;
+U -1 ; WX 723 ; N C ; G 36 ; B 80 -14 663 597 ;
+U -1 ; WX 682 ; N D ; G 37 ; B 23 0 622 583 ;
+U -1 ; WX 712 ; N E ; G 38 ; B 23 0 652 583 ;
+U -1 ; WX 734 ; N F ; G 39 ; B 23 0 674 583 ;
+U -1 ; WX 727 ; N G ; G 40 ; B 79 -14 667 597 ;
+U -1 ; WX 735 ; N H ; G 41 ; B 32 0 675 583 ;
+U -1 ; WX 692 ; N I ; G 42 ; B 93 0 632 583 ;
+U -1 ; WX 787 ; N J ; G 43 ; B 64 -14 727 583 ;
+U -1 ; WX 747 ; N K ; G 44 ; B 22 0 687 583 ;
+U -1 ; WX 676 ; N L ; G 45 ; B 42 0 616 583 ;
+U -1 ; WX 788 ; N M ; G 46 ; B -10 0 728 583 ;
+U -1 ; WX 766 ; N N ; G 47 ; B 21 0 706 583 ;
+U -1 ; WX 709 ; N O ; G 48 ; B 75 -14 649 597 ;
+U -1 ; WX 677 ; N P ; G 49 ; B 23 0 617 583 ;
+U -1 ; WX 709 ; N Q ; G 50 ; B 75 -145 649 597 ;
+U -1 ; WX 691 ; N R ; G 51 ; B 23 0 631 583 ;
+U -1 ; WX 694 ; N S ; G 52 ; B 72 -14 634 597 ;
+U -1 ; WX 742 ; N T ; G 53 ; B 121 0 682 583 ;
+U -1 ; WX 765 ; N U ; G 54 ; B 110 -14 705 583 ;
+U -1 ; WX 795 ; N V ; G 55 ; B 91 0 735 583 ;
+U -1 ; WX 785 ; N W ; G 56 ; B 98 0 725 583 ;
+U -1 ; WX 752 ; N X ; G 57 ; B 19 0 692 583 ;
+U -1 ; WX 754 ; N Y ; G 58 ; B 128 0 694 583 ;
+U -1 ; WX 688 ; N Z ; G 59 ; B 73 0 628 583 ;
+U -1 ; WX 658 ; N bracketleft ; G 60 ; B 219 -148 598 627 ;
+U -1 ; WX 600 ; N backslash ; G 61 ; B 219 -113 504 695 ;
+U -1 ; WX 600 ; N bracketright ; G 62 ; B 104 -148 483 627 ;
+U -1 ; WX 658 ; N asciicircum ; G 63 ; B 161 325 598 652 ;
+U -1 ; WX 624 ; N underscore ; G 64 ; B -61 -125 564 -75 ;
+U -1 ; WX 600 ; N grave ; G 124 ; B 264 496 464 696 ;
+U -1 ; WX 643 ; N a ; G 66 ; B 65 -16 583 450 ;
+U -1 ; WX 683 ; N b ; G 67 ; B 2 -14 623 624 ;
+U -1 ; WX 686 ; N c ; G 68 ; B 93 -16 626 450 ;
+U -1 ; WX 724 ; N d ; G 69 ; B 74 -14 664 624 ;
+U -1 ; WX 660 ; N e ; G 70 ; B 74 -16 600 450 ;
+U -1 ; WX 751 ; N f ; G 71 ; B 84 0 691 623 ;
+U -1 ; WX 735 ; N g ; G 72 ; B 73 -205 675 451 ;
+U -1 ; WX 653 ; N h ; G 73 ; B 33 0 593 624 ;
+U -1 ; WX 610 ; N i ; G 74 ; B 72 0 550 623 ;
+U -1 ; WX 641 ; N j ; G 75 ; B 83 -205 581 623 ;
+U -1 ; WX 666 ; N k ; G 76 ; B 42 0 606 624 ;
+U -1 ; WX 610 ; N l ; G 77 ; B 72 0 550 624 ;
+U -1 ; WX 695 ; N m ; G 78 ; B -9 0 635 450 ;
+U -1 ; WX 643 ; N n ; G 79 ; B 33 0 583 450 ;
+U -1 ; WX 669 ; N o ; G 80 ; B 84 -16 609 450 ;
+U -1 ; WX 683 ; N p ; G 81 ; B -42 -205 623 450 ;
+U -1 ; WX 756 ; N q ; G 82 ; B 75 -205 696 450 ;
+U -1 ; WX 710 ; N r ; G 83 ; B 64 0 650 449 ;
+U -1 ; WX 652 ; N s ; G 84 ; B 83 -16 592 450 ;
+U -1 ; WX 607 ; N t ; G 85 ; B 94 -16 547 591 ;
+U -1 ; WX 663 ; N u ; G 86 ; B 94 -13 603 437 ;
+U -1 ; WX 743 ; N v ; G 87 ; B 81 0 683 437 ;
+U -1 ; WX 744 ; N w ; G 88 ; B 82 0 684 437 ;
+U -1 ; WX 701 ; N x ; G 89 ; B 30 0 641 437 ;
+U -1 ; WX 722 ; N y ; G 90 ; B -13 -205 662 437 ;
+U -1 ; WX 659 ; N z ; G 91 ; B 85 0 599 437 ;
+U -1 ; WX 616 ; N braceleft ; G 92 ; B 217 -153 556 623 ;
+U -1 ; WX 600 ; N bar ; G 93 ; B 227 -153 472 622 ;
+U -1 ; WX 600 ; N braceright ; G 94 ; B 144 -153 483 623 ;
+U -1 ; WX 666 ; N asciitilde ; G 95 ; B 114 179 606 385 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 699 ; N Euro ; G 289 ; B 54 -14 639 597 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N quotesinglbase ; G 117 ; B 118 -158 379 134 ;
+U -1 ; WX 732 ; N florin ; G 101 ; B 43 -123 672 638 ;
+U -1 ; WX 600 ; N quotedblbase ; G 118 ; B 66 -120 519 134 ;
+U -1 ; WX 647 ; N ellipsis ; G 121 ; B 34 -15 587 117 ;
+U -1 ; WX 649 ; N dagger ; G 112 ; B 175 -92 589 622 ;
+U -1 ; WX 649 ; N daggerdbl ; G 113 ; B 123 -92 589 622 ;
+U -1 ; WX 650 ; N circumflex ; G 126 ; B 237 497 590 696 ;
+U -1 ; WX 687 ; N perthousand ; G 122 ; B 104 0 627 618 ;
+U -1 ; WX 717 ; N Scaron ; G 189 ; B 72 -14 657 839 ;
+U -1 ; WX 600 ; N guilsinglleft ; G 107 ; B 80 20 425 415 ;
+U -1 ; WX 777 ; N OE ; G 142 ; B 34 0 717 583 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 704 ; N Zcaron ; G 200 ; B 73 0 644 839 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N quoteleft ; G 65 ; B 377 348 534 602 ;
+U -1 ; WX 600 ; N quoteright ; G 8 ; B 222 331 483 623 ;
+U -1 ; WX 643 ; N quotedblleft ; G 105 ; B 226 348 583 602 ;
+U -1 ; WX 679 ; N quotedblright ; G 119 ; B 166 348 619 602 ;
+U -1 ; WX 600 ; N bullet ; G 116 ; B 211 154 517 453 ;
+U -1 ; WX 679 ; N endash ; G 111 ; B 101 229 619 329 ;
+U -1 ; WX 750 ; N emdash ; G 137 ; B 30 229 690 329 ;
+U -1 ; WX 679 ; N tilde ; G 127 ; B 233 523 619 656 ;
+U -1 ; WX 792 ; N trademark ; G 297 ; B 60 220 732 583 ;
+U -1 ; WX 687 ; N scaron ; G 253 ; B 83 -16 627 696 ;
+U -1 ; WX 677 ; N guilsinglright ; G 108 ; B 273 20 617 415 ;
+U -1 ; WX 726 ; N oe ; G 148 ; B 28 -16 666 450 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 679 ; N zcaron ; G 264 ; B 85 0 619 696 ;
+U -1 ; WX 754 ; N Ydieresis ; G 204 ; B 128 0 694 800 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N exclamdown ; G 96 ; B 186 -227 453 426 ;
+U -1 ; WX 653 ; N cent ; G 97 ; B 144 -44 593 661 ;
+U -1 ; WX 631 ; N sterling ; G 98 ; B 64 0 571 598 ;
+U -1 ; WX 686 ; N currency ; G 103 ; B 96 64 626 519 ;
+U -1 ; WX 753 ; N yen ; G 100 ; B 133 0 693 580 ;
+U -1 ; WX 600 ; N brokenbar ; G 314 ; B 227 -153 472 622 ;
+U -1 ; WX 703 ; N section ; G 102 ; B 45 -170 643 583 ;
+U -1 ; WX 652 ; N dieresis ; G 131 ; B 261 534 592 654 ;
+U -1 ; WX 735 ; N copyright ; G 303 ; B 48 -15 675 598 ;
+U -1 ; WX 619 ; N ordfeminine ; G 139 ; B 170 182 559 595 ;
+U -1 ; WX 714 ; N guillemotleft ; G 106 ; B 80 20 654 415 ;
+U -1 ; WX 620 ; N logicalnot ; G 311 ; B 125 115 560 445 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 735 ; N registered ; G 304 ; B 48 -15 675 598 ;
+U -1 ; WX 660 ; N macron ; G 128 ; B 249 546 600 626 ;
+U -1 ; WX 628 ; N degree ; G 293 ; B 210 243 568 596 ;
+U -1 ; WX 700 ; N plusminus ; G 298 ; B 52 0 640 624 ;
+U -1 ; WX 600 ; N twosuperior ; G 291 ; B 202 247 538 637 ;
+U -1 ; WX 603 ; N threesuperior ; G 292 ; B 218 238 543 637 ;
+U -1 ; WX 676 ; N acute ; G 125 ; B 362 496 616 696 ;
+U -1 ; WX 663 ; N mu ; G 315 ; B 72 -153 603 440 ;
+U -1 ; WX 732 ; N paragraph ; G 115 ; B 108 -174 672 583 ;
+U -1 ; WX 600 ; N periodcentered ; G 114 ; B 283 214 436 346 ;
+U -1 ; WX 600 ; N cedilla ; G 133 ; B 143 -229 381 0 ;
+U -1 ; WX 600 ; N onesuperior ; G 290 ; B 224 247 494 638 ;
+U -1 ; WX 626 ; N ordmasculine ; G 143 ; B 168 182 566 595 ;
+U -1 ; WX 677 ; N guillemotright ; G 120 ; B 43 20 617 415 ;
+U -1 ; WX 733 ; N onequarter ; G 300 ; B 25 0 673 638 ;
+U -1 ; WX 745 ; N onehalf ; G 299 ; B 25 0 685 638 ;
+U -1 ; WX 733 ; N threequarters ; G 301 ; B 18 0 673 637 ;
+U -1 ; WX 600 ; N questiondown ; G 123 ; B 70 -227 481 386 ;
+U -1 ; WX 693 ; N Agrave ; G 152 ; B -11 0 633 839 ;
+U -1 ; WX 693 ; N Aacute ; G 151 ; B -11 0 633 839 ;
+U -1 ; WX 693 ; N Acircumflex ; G 153 ; B -11 0 633 839 ;
+U -1 ; WX 693 ; N Atilde ; G 155 ; B -11 0 633 799 ;
+U -1 ; WX 693 ; N Adieresis ; G 150 ; B -11 0 633 800 ;
+U -1 ; WX 693 ; N Aring ; G 156 ; B -11 0 633 871 ;
+U -1 ; WX 777 ; N AE ; G 138 ; B -10 0 717 583 ;
+U -1 ; WX 723 ; N Ccedilla ; G 158 ; B 80 -229 663 597 ;
+U -1 ; WX 712 ; N Egrave ; G 164 ; B 23 0 652 839 ;
+U -1 ; WX 712 ; N Eacute ; G 163 ; B 23 0 652 839 ;
+U -1 ; WX 712 ; N Ecircumflex ; G 165 ; B 23 0 652 839 ;
+U -1 ; WX 712 ; N Edieresis ; G 162 ; B 23 0 652 800 ;
+U -1 ; WX 692 ; N Igrave ; G 172 ; B 93 0 632 839 ;
+U -1 ; WX 692 ; N Iacute ; G 171 ; B 93 0 632 839 ;
+U -1 ; WX 692 ; N Icircumflex ; G 173 ; B 93 0 632 839 ;
+U -1 ; WX 692 ; N Idieresis ; G 170 ; B 93 0 632 800 ;
+U -1 ; WX 682 ; N Eth ; G 283 ; B 23 0 622 583 ;
+U -1 ; WX 766 ; N Ntilde ; G 179 ; B 21 0 706 799 ;
+U -1 ; WX 709 ; N Ograve ; G 182 ; B 75 -14 649 839 ;
+U -1 ; WX 709 ; N Oacute ; G 181 ; B 75 -14 649 839 ;
+U -1 ; WX 709 ; N Ocircumflex ; G 183 ; B 75 -14 649 839 ;
+U -1 ; WX 716 ; N Otilde ; G 184 ; B 75 -14 656 799 ;
+U -1 ; WX 709 ; N Odieresis ; G 180 ; B 75 -14 649 800 ;
+U -1 ; WX 652 ; N multiply ; G 295 ; B 126 80 592 480 ;
+U -1 ; WX 777 ; N Oslash ; G 141 ; B 4 -70 717 638 ;
+U -1 ; WX 765 ; N Ugrave ; G 194 ; B 110 -14 705 839 ;
+U -1 ; WX 765 ; N Uacute ; G 193 ; B 110 -14 705 839 ;
+U -1 ; WX 765 ; N Ucircumflex ; G 195 ; B 110 -14 705 839 ;
+U -1 ; WX 765 ; N Udieresis ; G 192 ; B 110 -14 705 800 ;
+U -1 ; WX 754 ; N Yacute ; G 198 ; B 128 0 694 839 ;
+U -1 ; WX 648 ; N Thorn ; G 285 ; B 23 0 588 583 ;
+U -1 ; WX 629 ; N germandbls ; G 149 ; B 22 -16 569 623 ;
+U -1 ; WX 643 ; N agrave ; G 218 ; B 65 -16 583 696 ;
+U -1 ; WX 644 ; N aacute ; G 217 ; B 66 -16 584 696 ;
+U -1 ; WX 643 ; N acircumflex ; G 219 ; B 65 -16 583 696 ;
+U -1 ; WX 672 ; N atilde ; G 221 ; B 65 -16 612 656 ;
+U -1 ; WX 643 ; N adieresis ; G 216 ; B 65 -16 583 654 ;
+U -1 ; WX 643 ; N aring ; G 222 ; B 65 -16 583 727 ;
+U -1 ; WX 725 ; N ae ; G 144 ; B 14 -16 665 450 ;
+U -1 ; WX 686 ; N ccedilla ; G 226 ; B 92 -229 626 450 ;
+U -1 ; WX 660 ; N egrave ; G 230 ; B 74 -16 600 696 ;
+U -1 ; WX 660 ; N eacute ; G 229 ; B 74 -16 600 696 ;
+U -1 ; WX 660 ; N ecircumflex ; G 231 ; B 74 -16 600 696 ;
+U -1 ; WX 660 ; N edieresis ; G 228 ; B 74 -16 600 654 ;
+U -1 ; WX 610 ; N igrave ; G 238 ; B 72 0 550 696 ;
+U -1 ; WX 634 ; N iacute ; G 237 ; B 71 0 574 696 ;
+U -1 ; WX 633 ; N icircumflex ; G 239 ; B 72 0 573 696 ;
+U -1 ; WX 635 ; N idieresis ; G 236 ; B 72 0 575 656 ;
+U -1 ; WX 677 ; N eth ; G 287 ; B 83 -16 617 646 ;
+U -1 ; WX 673 ; N ntilde ; G 244 ; B 33 0 613 656 ;
+U -1 ; WX 669 ; N ograve ; G 247 ; B 84 -16 609 696 ;
+U -1 ; WX 669 ; N oacute ; G 246 ; B 84 -16 609 696 ;
+U -1 ; WX 669 ; N ocircumflex ; G 248 ; B 84 -16 609 696 ;
+U -1 ; WX 686 ; N otilde ; G 249 ; B 84 -16 626 656 ;
+U -1 ; WX 669 ; N odieresis ; G 245 ; B 84 -16 609 654 ;
+U -1 ; WX 679 ; N divide ; G 296 ; B 101 28 619 532 ;
+U -1 ; WX 729 ; N oslash ; G 147 ; B 17 -70 669 494 ;
+U -1 ; WX 663 ; N ugrave ; G 258 ; B 94 -13 603 696 ;
+U -1 ; WX 663 ; N uacute ; G 257 ; B 94 -13 603 696 ;
+U -1 ; WX 663 ; N ucircumflex ; G 259 ; B 94 -13 603 696 ;
+U -1 ; WX 663 ; N udieresis ; G 256 ; B 94 -13 603 654 ;
+U -1 ; WX 722 ; N yacute ; G 262 ; B -13 -205 662 696 ;
+U -1 ; WX 683 ; N thorn ; G 288 ; B -42 -205 623 624 ;
+U -1 ; WX 722 ; N ydieresis ; G 266 ; B -13 -205 662 654 ;
+U -1 ; WX 736 ; N fraction ; G 99 ; B 52 102 676 500 ;
+U -1 ; WX 693 ; N fi ; G 109 ; B -4 0 633 624 ;
+U -1 ; WX 705 ; N fl ; G 110 ; B -8 0 645 623 ;
+U -1 ; WX 674 ; N breve ; G 129 ; B 261 503 614 687 ;
+U -1 ; WX 600 ; N dotaccent ; G 130 ; B 365 534 488 654 ;
+U -1 ; WX 614 ; N ring ; G 132 ; B 303 486 554 727 ;
+U -1 ; WX 676 ; N hungarumlaut ; G 134 ; B 237 496 616 694 ;
+U -1 ; WX 600 ; N ogonek ; G 135 ; B 222 -208 433 0 ;
+U -1 ; WX 677 ; N caron ; G 136 ; B 264 497 617 696 ;
+U -1 ; WX 676 ; N Lslash ; G 140 ; B 43 0 616 583 ;
+U -1 ; WX 610 ; N dotlessi ; G 145 ; B 72 0 550 437 ;
+U -1 ; WX 617 ; N lslash ; G 146 ; B 72 0 557 624 ;
+U -1 ; WX 693 ; N Abreve ; G 154 ; B -11 0 633 831 ;
+U -1 ; WX 693 ; N Aogonek ; G 157 ; B -11 -208 633 583 ;
+U -1 ; WX 723 ; N Cacute ; G 159 ; B 80 -14 663 839 ;
+U -1 ; WX 723 ; N Ccaron ; G 160 ; B 80 -14 663 839 ;
+U -1 ; WX 682 ; N Dcaron ; G 161 ; B 23 0 622 839 ;
+U -1 ; WX 712 ; N Ecaron ; G 166 ; B 23 0 652 839 ;
+U -1 ; WX 712 ; N Edotaccent ; G 167 ; B 23 0 652 793 ;
+U -1 ; WX 712 ; N Eogonek ; G 168 ; B 23 -208 652 583 ;
+U -1 ; WX 727 ; N Gbreve ; G 169 ; B 79 -14 667 831 ;
+U -1 ; WX 692 ; N Idotaccent ; G 174 ; B 93 0 632 793 ;
+U -1 ; WX 676 ; N Lacute ; G 175 ; B 42 0 616 839 ;
+U -1 ; WX 740 ; N Lcaron ; G 176 ; B 42 0 680 598 ;
+U -1 ; WX 766 ; N Nacute ; G 177 ; B 21 0 706 839 ;
+U -1 ; WX 766 ; N Ncaron ; G 178 ; B 21 0 706 839 ;
+U -1 ; WX 740 ; N Ohungarumlaut ; G 185 ; B 75 -14 680 837 ;
+U -1 ; WX 691 ; N Racute ; G 186 ; B 23 0 631 839 ;
+U -1 ; WX 691 ; N Rcaron ; G 187 ; B 23 0 631 839 ;
+U -1 ; WX 694 ; N Sacute ; G 188 ; B 72 -14 634 839 ;
+U -1 ; WX 694 ; N Scedilla ; G 190 ; B 72 -229 634 597 ;
+U -1 ; WX 742 ; N Tcaron ; G 191 ; B 121 0 682 839 ;
+U -1 ; WX 765 ; N Uring ; G 196 ; B 110 -14 705 871 ;
+U -1 ; WX 765 ; N Uhungarumlaut ; G 197 ; B 110 -14 705 837 ;
+U -1 ; WX 688 ; N Zacute ; G 199 ; B 73 0 628 839 ;
+U -1 ; WX 688 ; N Zdotaccent ; G 201 ; B 73 0 628 793 ;
+U -1 ; WX 693 ; N Amacron ; G 202 ; B -11 0 633 776 ;
+U -1 ; WX 742 ; N Tcommaaccent ; G 203 ; B 121 -278 682 583 ;
+U -1 ; WX 712 ; N Emacron ; G 205 ; B 23 0 652 776 ;
+U -1 ; WX 692 ; N Imacron ; G 206 ; B 93 0 632 776 ;
+U -1 ; WX 692 ; N Iogonek ; G 207 ; B 93 -208 632 583 ;
+U -1 ; WX 747 ; N Kcommaaccent ; G 208 ; B 22 -278 687 583 ;
+U -1 ; WX 676 ; N Lcommaaccent ; G 209 ; B 42 -278 616 583 ;
+U -1 ; WX 766 ; N Ncommaaccent ; G 210 ; B 21 -278 706 583 ;
+U -1 ; WX 709 ; N Omacron ; G 211 ; B 75 -14 649 776 ;
+U -1 ; WX 691 ; N Rcommaaccent ; G 212 ; B 23 -278 631 583 ;
+U -1 ; WX 727 ; N Gcommaaccent ; G 213 ; B 79 -278 667 597 ;
+U -1 ; WX 765 ; N Umacron ; G 214 ; B 110 -14 705 776 ;
+U -1 ; WX 765 ; N Uogonek ; G 215 ; B 110 -208 705 583 ;
+U -1 ; WX 674 ; N abreve ; G 220 ; B 65 -16 614 687 ;
+U -1 ; WX 643 ; N aogonek ; G 223 ; B 65 -208 583 450 ;
+U -1 ; WX 686 ; N cacute ; G 224 ; B 93 -16 626 696 ;
+U -1 ; WX 687 ; N ccaron ; G 225 ; B 93 -16 627 696 ;
+U -1 ; WX 900 ; N dcaron ; G 227 ; B 74 -14 840 639 ;
+U -1 ; WX 677 ; N ecaron ; G 232 ; B 74 -16 617 696 ;
+U -1 ; WX 660 ; N edotaccent ; G 233 ; B 74 -16 600 654 ;
+U -1 ; WX 660 ; N eogonek ; G 234 ; B 74 -208 600 450 ;
+U -1 ; WX 735 ; N gbreve ; G 235 ; B 73 -205 675 687 ;
+U -1 ; WX 660 ; N lacute ; G 240 ; B 72 0 600 839 ;
+U -1 ; WX 760 ; N lcaron ; G 241 ; B 72 0 700 639 ;
+U -1 ; WX 676 ; N nacute ; G 242 ; B 33 0 616 696 ;
+U -1 ; WX 677 ; N ncaron ; G 243 ; B 33 0 617 696 ;
+U -1 ; WX 676 ; N ohungarumlaut ; G 250 ; B 84 -16 616 694 ;
+U -1 ; WX 710 ; N racute ; G 251 ; B 64 0 650 696 ;
+U -1 ; WX 676 ; N sacute ; G 252 ; B 83 -16 616 696 ;
+U -1 ; WX 652 ; N scommaaccent ; G 254 ; B 83 -278 592 450 ;
+U -1 ; WX 760 ; N tcaron ; G 255 ; B 94 -16 700 639 ;
+U -1 ; WX 663 ; N uring ; G 260 ; B 94 -13 603 727 ;
+U -1 ; WX 676 ; N uhungarumlaut ; G 261 ; B 94 -13 616 694 ;
+U -1 ; WX 676 ; N zacute ; G 263 ; B 85 0 616 696 ;
+U -1 ; WX 659 ; N zdotaccent ; G 265 ; B 85 0 599 654 ;
+U -1 ; WX 607 ; N tcommaaccent ; G 267 ; B 94 -278 547 591 ;
+U -1 ; WX 660 ; N amacron ; G 268 ; B 65 -16 600 626 ;
+U -1 ; WX 660 ; N emacron ; G 269 ; B 74 -16 600 626 ;
+U -1 ; WX 660 ; N imacron ; G 270 ; B 72 0 600 626 ;
+U -1 ; WX 666 ; N kcommaaccent ; G 271 ; B 42 -278 606 624 ;
+U -1 ; WX 610 ; N lcommaaccent ; G 272 ; B 72 -278 550 624 ;
+U -1 ; WX 643 ; N ncommaaccent ; G 273 ; B 33 -278 583 450 ;
+U -1 ; WX 669 ; N omacron ; G 274 ; B 84 -16 609 626 ;
+U -1 ; WX 710 ; N rcommaaccent ; G 275 ; B 64 -278 650 449 ;
+U -1 ; WX 663 ; N umacron ; G 276 ; B 94 -13 603 626 ;
+U -1 ; WX 663 ; N uogonek ; G 277 ; B 94 -208 603 437 ;
+U -1 ; WX 710 ; N rcaron ; G 278 ; B 64 0 650 696 ;
+U -1 ; WX 652 ; N scedilla ; G 279 ; B 83 -229 592 450 ;
+U -1 ; WX 735 ; N gcommaaccent ; G 280 ; B 73 -205 675 722 ;
+U -1 ; WX 610 ; N iogonek ; G 281 ; B 72 -208 550 623 ;
+U -1 ; WX 694 ; N Scommaaccent ; G 282 ; B 72 -278 634 597 ;
+U -1 ; WX 682 ; N Dcroat ; G 284 ; B 23 0 622 583 ;
+U -1 ; WX 772 ; N dcroat ; G 286 ; B 74 -14 712 624 ;
+U -1 ; WX 679 ; N minus ; G 294 ; B 101 230 619 330 ;
+U -1 ; WX 600 ; N commaaccent ; G 302 ; B 147 -278 342 -59 ;
+U -1 ; WX 650 ; N lozenge ; G 305 ; B 133 -19 590 593 ;
+U -1 ; WX 645 ; N Delta ; G 306 ; B 15 0 585 583 ;
+U -1 ; WX 698 ; N notequal ; G 307 ; B 81 22 638 525 ;
+U -1 ; WX 842 ; N radical ; G 308 ; B 74 -60 782 697 ;
+U -1 ; WX 726 ; N lessequal ; G 309 ; B 50 0 666 591 ;
+U -1 ; WX 720 ; N greaterequal ; G 310 ; B 52 0 660 591 ;
+U -1 ; WX 728 ; N summation ; G 312 ; B 32 -97 668 671 ;
+U -1 ; WX 639 ; N partialdiff ; G 313 ; B 138 -16 579 590 ;
+U -1 ; WX 673 ; N afii10017 ; G 316 ; B -11 0 613 565 ;
+U -1 ; WX 676 ; N afii10018 ; G 317 ; B -17 0 616 565 ;
+U -1 ; WX 661 ; N afii10019 ; G 318 ; B 22 0 601 565 ;
+U -1 ; WX 680 ; N afii10020 ; G 319 ; B -15 0 620 565 ;
+U -1 ; WX 655 ; N afii10021 ; G 320 ; B -62 -136 598 565 ;
+U -1 ; WX 692 ; N afii10022 ; G 321 ; B 22 0 632 565 ;
+U -1 ; WX 692 ; N afii10023 ; G 322 ; B 22 0 632 720 ;
+U -1 ; WX 764 ; N afii10024 ; G 323 ; B -31 0 704 565 ;
+U -1 ; WX 612 ; N afii10025 ; G 324 ; B 24 -15 567 578 ;
+U -1 ; WX 662 ; N afii10026 ; G 325 ; B -23 0 604 565 ;
+U -1 ; WX 662 ; N afii10027 ; G 326 ; B -23 0 604 782 ;
+U -1 ; WX 673 ; N afii10028 ; G 327 ; B -34 0 615 565 ;
+U -1 ; WX 660 ; N afii10029 ; G 328 ; B -37 0 604 565 ;
+U -1 ; WX 765 ; N afii10030 ; G 329 ; B -9 0 705 565 ;
+U -1 ; WX 714 ; N afii10031 ; G 330 ; B 31 0 654 565 ;
+U -1 ; WX 689 ; N afii10032 ; G 331 ; B 73 -15 629 578 ;
+U -1 ; WX 662 ; N afii10033 ; G 332 ; B -23 0 604 565 ;
+U -1 ; WX 658 ; N afii10034 ; G 333 ; B 22 0 598 565 ;
+U -1 ; WX 702 ; N afii10035 ; G 334 ; B 78 -15 642 578 ;
+U -1 ; WX 720 ; N afii10036 ; G 335 ; B 117 0 660 565 ;
+U -1 ; WX 626 ; N afii10037 ; G 336 ; B 15 0 567 565 ;
+U -1 ; WX 678 ; N afii10038 ; G 337 ; B 4 0 648 565 ;
+U -1 ; WX 730 ; N afii10039 ; G 338 ; B 19 0 670 565 ;
+U -1 ; WX 662 ; N afii10040 ; G 339 ; B -23 -136 604 565 ;
+U -1 ; WX 596 ; N afii10041 ; G 340 ; B 28 0 538 565 ;
+U -1 ; WX 768 ; N afii10042 ; G 341 ; B -33 0 708 565 ;
+U -1 ; WX 768 ; N afii10043 ; G 342 ; B -33 -136 708 565 ;
+U -1 ; WX 691 ; N afii10044 ; G 343 ; B 19 0 636 565 ;
+U -1 ; WX 764 ; N afii10045 ; G 344 ; B -33 0 704 565 ;
+U -1 ; WX 639 ; N afii10046 ; G 345 ; B 43 0 585 565 ;
+U -1 ; WX 632 ; N afii10047 ; G 346 ; B 5 -15 598 578 ;
+U -1 ; WX 768 ; N afii10048 ; G 347 ; B -34 -15 728 578 ;
+U -1 ; WX 720 ; N afii10049 ; G 348 ; B -31 0 663 565 ;
+U -1 ; WX 625 ; N afii10065 ; G 349 ; B 64 -16 565 436 ;
+U -1 ; WX 613 ; N afii10066 ; G 350 ; B 2 -15 554 621 ;
+U -1 ; WX 585 ; N afii10067 ; G 351 ; B 51 -2 546 423 ;
+U -1 ; WX 587 ; N afii10068 ; G 352 ; B 50 -2 527 423 ;
+U -1 ; WX 652 ; N afii10069 ; G 353 ; B -12 -89 598 423 ;
+U -1 ; WX 641 ; N afii10070 ; G 354 ; B 71 -16 581 436 ;
+U -1 ; WX 641 ; N afii10071 ; G 355 ; B 71 -16 581 591 ;
+U -1 ; WX 735 ; N afii10072 ; G 356 ; B -17 0 675 423 ;
+U -1 ; WX 588 ; N afii10073 ; G 357 ; B 51 -16 542 436 ;
+U -1 ; WX 646 ; N afii10074 ; G 358 ; B -11 -2 591 425 ;
+U -1 ; WX 646 ; N afii10075 ; G 359 ; B -11 -2 591 640 ;
+U -1 ; WX 624 ; N afii10076 ; G 360 ; B 12 0 566 423 ;
+U -1 ; WX 659 ; N afii10077 ; G 361 ; B -38 -2 605 423 ;
+U -1 ; WX 763 ; N afii10078 ; G 362 ; B -35 0 709 423 ;
+U -1 ; WX 674 ; N afii10079 ; G 363 ; B 16 -2 620 425 ;
+U -1 ; WX 650 ; N afii10080 ; G 364 ; B 81 -16 590 436 ;
+U -1 ; WX 646 ; N afii10081 ; G 365 ; B -11 -2 591 423 ;
+U -1 ; WX 664 ; N afii10082 ; G 366 ; B -40 -198 604 436 ;
+U -1 ; WX 665 ; N afii10083 ; G 367 ; B 90 -16 606 436 ;
+U -1 ; WX 596 ; N afii10084 ; G 368 ; B 43 -2 536 425 ;
+U -1 ; WX 700 ; N afii10085 ; G 369 ; B -12 -198 640 423 ;
+U -1 ; WX 681 ; N afii10086 ; G 370 ; B -60 -198 642 628 ;
+U -1 ; WX 681 ; N afii10087 ; G 371 ; B 29 0 621 423 ;
+U -1 ; WX 638 ; N afii10088 ; G 372 ; B -2 -89 584 423 ;
+U -1 ; WX 595 ; N afii10089 ; G 373 ; B 40 -2 539 425 ;
+U -1 ; WX 762 ; N afii10090 ; G 374 ; B -35 0 708 423 ;
+U -1 ; WX 762 ; N afii10091 ; G 375 ; B -35 -89 708 423 ;
+U -1 ; WX 627 ; N afii10092 ; G 376 ; B 54 0 572 423 ;
+U -1 ; WX 736 ; N afii10093 ; G 377 ; B -43 0 682 423 ;
+U -1 ; WX 579 ; N afii10094 ; G 378 ; B 64 0 530 423 ;
+U -1 ; WX 614 ; N afii10095 ; G 379 ; B 23 -16 577 436 ;
+U -1 ; WX 647 ; N afii10096 ; G 380 ; B -39 -16 604 436 ;
+U -1 ; WX 627 ; N afii10097 ; G 381 ; B 12 0 573 423 ;
+U -1 ; WX 692 ; N uni0400 ; G 382 ; B 22 0 632 798 ;
+U -1 ; WX 654 ; N afii10051 ; G 383 ; B 6 -125 594 565 ;
+U -1 ; WX 680 ; N afii10052 ; G 384 ; B -15 0 620 797 ;
+U -1 ; WX 633 ; N afii10053 ; G 385 ; B -17 -15 574 578 ;
+U -1 ; WX 672 ; N afii10054 ; G 386 ; B 70 -15 613 578 ;
+U -1 ; WX 672 ; N afii10055 ; G 387 ; B 90 0 612 565 ;
+U -1 ; WX 672 ; N afii10056 ; G 388 ; B 90 0 612 720 ;
+U -1 ; WX 764 ; N afii10057 ; G 389 ; B 62 -15 704 565 ;
+U -1 ; WX 753 ; N afii10058 ; G 390 ; B -47 0 693 565 ;
+U -1 ; WX 705 ; N afii10059 ; G 391 ; B -124 0 645 565 ;
+U -1 ; WX 635 ; N afii10060 ; G 392 ; B 2 0 575 565 ;
+U -1 ; WX 673 ; N afii10061 ; G 393 ; B -34 0 615 797 ;
+U -1 ; WX 662 ; N uni040D ; G 394 ; B -23 0 604 797 ;
+U -1 ; WX 626 ; N afii10062 ; G 395 ; B 15 0 567 782 ;
+U -1 ; WX 662 ; N afii10145 ; G 396 ; B -21 -136 602 565 ;
+U -1 ; WX 641 ; N uni0450 ; G 397 ; B 71 -16 581 669 ;
+U -1 ; WX 601 ; N afii10099 ; G 398 ; B 32 -113 541 604 ;
+U -1 ; WX 587 ; N afii10100 ; G 399 ; B 50 -2 527 656 ;
+U -1 ; WX 609 ; N afii10101 ; G 400 ; B 24 -16 555 436 ;
+U -1 ; WX 634 ; N afii10102 ; G 401 ; B 81 -16 574 436 ;
+U -1 ; WX 593 ; N afii10103 ; G 402 ; B 70 0 533 604 ;
+U -1 ; WX 622 ; N afii10104 ; G 403 ; B 70 0 562 579 ;
+U -1 ; WX 623 ; N afii10105 ; G 404 ; B 81 -198 563 604 ;
+U -1 ; WX 704 ; N afii10106 ; G 405 ; B -38 0 644 423 ;
+U -1 ; WX 661 ; N afii10107 ; G 406 ; B -65 0 601 423 ;
+U -1 ; WX 634 ; N afii10108 ; G 407 ; B 32 0 574 604 ;
+U -1 ; WX 624 ; N afii10109 ; G 408 ; B 12 0 566 656 ;
+U -1 ; WX 646 ; N uni045D ; G 409 ; B -11 -2 591 656 ;
+U -1 ; WX 700 ; N afii10110 ; G 410 ; B -12 -198 640 642 ;
+U -1 ; WX 646 ; N afii10193 ; G 411 ; B -11 -89 591 427 ;
+U -1 ; WX 639 ; N uni048C ; G 412 ; B 43 0 585 565 ;
+U -1 ; WX 579 ; N uni048D ; G 413 ; B 64 0 530 423 ;
+U -1 ; WX 658 ; N uni048E ; G 414 ; B 22 0 598 565 ;
+U -1 ; WX 664 ; N uni048F ; G 415 ; B -40 -198 604 436 ;
+U -1 ; WX 673 ; N afii10050 ; G 416 ; B -34 0 615 678 ;
+U -1 ; WX 592 ; N afii10098 ; G 417 ; B 45 -2 533 512 ;
+U -1 ; WX 680 ; N uni0492 ; G 418 ; B -15 0 620 565 ;
+U -1 ; WX 600 ; N uni0493 ; G 419 ; B 50 -2 527 423 ;
+U -1 ; WX 680 ; N uni0494 ; G 420 ; B -15 0 620 565 ;
+U -1 ; WX 587 ; N uni0495 ; G 421 ; B 50 -2 527 423 ;
+U -1 ; WX 786 ; N uni0496 ; G 422 ; B -31 -141 726 583 ;
+U -1 ; WX 756 ; N uni0497 ; G 423 ; B -18 -92 697 437 ;
+U -1 ; WX 612 ; N uni0498 ; G 424 ; B 24 -15 567 578 ;
+U -1 ; WX 588 ; N uni0499 ; G 425 ; B 51 -16 542 436 ;
+U -1 ; WX 673 ; N uni049A ; G 426 ; B -34 -136 615 565 ;
+U -1 ; WX 624 ; N uni049B ; G 427 ; B 12 -89 566 423 ;
+U -1 ; WX 673 ; N uni049C ; G 428 ; B -34 0 615 565 ;
+U -1 ; WX 624 ; N uni049D ; G 429 ; B 12 0 566 423 ;
+U -1 ; WX 673 ; N uni049E ; G 430 ; B -34 0 615 565 ;
+U -1 ; WX 624 ; N uni049F ; G 431 ; B 12 0 566 423 ;
+U -1 ; WX 673 ; N uni04A0 ; G 432 ; B -34 0 615 565 ;
+U -1 ; WX 624 ; N uni04A1 ; G 433 ; B 12 0 566 423 ;
+U -1 ; WX 735 ; N uni04A2 ; G 434 ; B 32 -141 675 583 ;
+U -1 ; WX 693 ; N uni04A3 ; G 435 ; B 17 -92 639 439 ;
+U -1 ; WX 714 ; N uni04A4 ; G 436 ; B 31 0 654 565 ;
+U -1 ; WX 674 ; N uni04A5 ; G 437 ; B 16 -2 620 425 ;
+U -1 ; WX 662 ; N uni04A6 ; G 438 ; B -23 0 604 565 ;
+U -1 ; WX 646 ; N uni04A7 ; G 439 ; B -11 -2 591 423 ;
+U -1 ; WX 702 ; N uni04A8 ; G 440 ; B 78 -15 642 578 ;
+U -1 ; WX 665 ; N uni04A9 ; G 441 ; B 90 -16 606 436 ;
+U -1 ; WX 702 ; N uni04AA ; G 442 ; B 78 -15 642 578 ;
+U -1 ; WX 665 ; N uni04AB ; G 443 ; B 90 -16 606 436 ;
+U -1 ; WX 742 ; N uni04AC ; G 444 ; B 121 -141 682 583 ;
+U -1 ; WX 614 ; N uni04AD ; G 445 ; B 45 -92 554 437 ;
+U -1 ; WX 733 ; N uni04AE ; G 446 ; B 123 0 673 565 ;
+U -1 ; WX 723 ; N uni04AF ; G 447 ; B 97 -146 663 437 ;
+U -1 ; WX 754 ; N uni04B0 ; G 448 ; B 128 0 694 583 ;
+U -1 ; WX 723 ; N uni04B1 ; G 449 ; B 97 -146 663 437 ;
+U -1 ; WX 730 ; N uni04B2 ; G 450 ; B 19 -136 670 565 ;
+U -1 ; WX 681 ; N uni04B3 ; G 451 ; B 29 -89 621 423 ;
+U -1 ; WX 662 ; N uni04B4 ; G 452 ; B -23 -136 604 565 ;
+U -1 ; WX 638 ; N uni04B5 ; G 453 ; B -2 -89 584 423 ;
+U -1 ; WX 613 ; N uni04B6 ; G 454 ; B 29 -141 555 583 ;
+U -1 ; WX 612 ; N uni04B7 ; G 455 ; B 42 -92 557 439 ;
+U -1 ; WX 596 ; N uni04B8 ; G 456 ; B 28 0 538 565 ;
+U -1 ; WX 595 ; N uni04B9 ; G 457 ; B 40 -2 539 425 ;
+U -1 ; WX 596 ; N uni04BA ; G 458 ; B 43 0 554 565 ;
+U -1 ; WX 595 ; N uni04BB ; G 459 ; B 40 -2 541 427 ;
+U -1 ; WX 702 ; N uni04BC ; G 460 ; B 78 -15 642 578 ;
+U -1 ; WX 665 ; N uni04BD ; G 461 ; B 90 -16 606 436 ;
+U -1 ; WX 702 ; N uni04BE ; G 462 ; B 78 -15 642 578 ;
+U -1 ; WX 665 ; N uni04BF ; G 463 ; B 90 -16 606 436 ;
+U -1 ; WX 672 ; N uni04C0 ; G 464 ; B 90 0 612 565 ;
+U -1 ; WX 764 ; N uni04C1 ; G 465 ; B -31 0 704 782 ;
+U -1 ; WX 735 ; N uni04C2 ; G 466 ; B -17 0 675 640 ;
+U -1 ; WX 673 ; N uni04C3 ; G 467 ; B -34 0 615 565 ;
+U -1 ; WX 624 ; N uni04C4 ; G 468 ; B 12 0 566 423 ;
+U -1 ; WX 714 ; N uni04C7 ; G 469 ; B 31 0 654 565 ;
+U -1 ; WX 674 ; N uni04C8 ; G 470 ; B 16 -2 620 425 ;
+U -1 ; WX 596 ; N uni04CB ; G 471 ; B 28 0 538 565 ;
+U -1 ; WX 595 ; N uni04CC ; G 472 ; B 40 -2 539 425 ;
+U -1 ; WX 679 ; N uni04D0 ; G 473 ; B -11 0 619 782 ;
+U -1 ; WX 656 ; N uni04D1 ; G 474 ; B 64 -16 596 642 ;
+U -1 ; WX 673 ; N uni04D2 ; G 475 ; B -11 0 613 720 ;
+U -1 ; WX 629 ; N uni04D3 ; G 476 ; B 64 -16 569 579 ;
+U -1 ; WX 754 ; N uni04D4 ; G 477 ; B -9 0 694 565 ;
+U -1 ; WX 704 ; N uni04D5 ; G 478 ; B 15 -16 644 436 ;
+U -1 ; WX 692 ; N uni04D6 ; G 479 ; B 22 0 632 782 ;
+U -1 ; WX 644 ; N uni04D7 ; G 480 ; B 71 -16 584 642 ;
+U -1 ; WX 702 ; N uni04D8 ; G 481 ; B 78 -15 642 578 ;
+U -1 ; WX 666 ; N afii10846 ; G 482 ; B 90 -16 606 436 ;
+U -1 ; WX 702 ; N uni04DA ; G 483 ; B 78 -15 642 720 ;
+U -1 ; WX 666 ; N uni04DB ; G 484 ; B 90 -16 606 578 ;
+U -1 ; WX 764 ; N uni04DC ; G 485 ; B -31 0 704 720 ;
+U -1 ; WX 735 ; N uni04DD ; G 486 ; B -17 0 675 578 ;
+U -1 ; WX 612 ; N uni04DE ; G 487 ; B 24 -15 567 720 ;
+U -1 ; WX 594 ; N uni04DF ; G 488 ; B 51 -16 542 578 ;
+U -1 ; WX 612 ; N uni04E0 ; G 489 ; B 24 -15 567 578 ;
+U -1 ; WX 588 ; N uni04E1 ; G 490 ; B 51 -16 542 436 ;
+U -1 ; WX 662 ; N uni04E2 ; G 491 ; B -23 0 604 681 ;
+U -1 ; WX 646 ; N uni04E3 ; G 492 ; B -11 -2 591 539 ;
+U -1 ; WX 662 ; N uni04E4 ; G 493 ; B -23 0 604 720 ;
+U -1 ; WX 646 ; N uni04E5 ; G 494 ; B -11 -2 591 578 ;
+U -1 ; WX 689 ; N uni04E6 ; G 495 ; B 73 -15 629 720 ;
+U -1 ; WX 650 ; N uni04E7 ; G 496 ; B 81 -16 590 579 ;
+U -1 ; WX 629 ; N uni04E8 ; G 497 ; B -15 -15 580 578 ;
+U -1 ; WX 650 ; N uni04E9 ; G 498 ; B 81 -16 590 436 ;
+U -1 ; WX 629 ; N uni04EA ; G 499 ; B -15 -15 580 720 ;
+U -1 ; WX 650 ; N uni04EB ; G 500 ; B 81 -16 590 578 ;
+U -1 ; WX 632 ; N uni04EC ; G 501 ; B 5 -15 598 720 ;
+U -1 ; WX 614 ; N uni04ED ; G 502 ; B 23 -16 577 578 ;
+U -1 ; WX 626 ; N uni04EE ; G 503 ; B 15 0 567 681 ;
+U -1 ; WX 700 ; N uni04EF ; G 504 ; B -12 -198 640 539 ;
+U -1 ; WX 626 ; N uni04F0 ; G 505 ; B 15 0 567 720 ;
+U -1 ; WX 700 ; N uni04F1 ; G 506 ; B -12 -198 640 579 ;
+U -1 ; WX 626 ; N uni04F2 ; G 507 ; B 15 0 567 797 ;
+U -1 ; WX 700 ; N uni04F3 ; G 508 ; B -12 -198 640 654 ;
+U -1 ; WX 596 ; N uni04F4 ; G 509 ; B 28 0 538 720 ;
+U -1 ; WX 595 ; N uni04F5 ; G 510 ; B 40 -2 539 578 ;
+U -1 ; WX 764 ; N uni04F8 ; G 511 ; B -33 0 704 720 ;
+U -1 ; WX 736 ; N uni04F9 ; G 512 ; B -43 0 682 578 ;
+U -1 ; WX 587 ; N uniF6C4 ; G 513 ; B 50 -2 527 423 ;
+U -1 ; WX 629 ; N uniF6C5 ; G 514 ; B -1 -14 570 658 ;
+U -1 ; WX 652 ; N uniF6C6 ; G 515 ; B -12 -89 598 423 ;
+U -1 ; WX 646 ; N uniF6C7 ; G 516 ; B -11 -2 591 423 ;
+U -1 ; WX 596 ; N uniF6C8 ; G 517 ; B 43 -2 536 425 ;
+U -1 ; WX 702 ; N Ccircumflex ; G 518 ; B 78 -15 642 797 ;
+U -1 ; WX 665 ; N ccircumflex ; G 519 ; B 90 -16 606 656 ;
+U -1 ; WX 702 ; N Cdotaccent ; G 520 ; B 78 -15 642 720 ;
+U -1 ; WX 665 ; N cdotaccent ; G 521 ; B 90 -16 606 579 ;
+U -1 ; WX 692 ; N Ebreve ; G 522 ; B 22 0 632 782 ;
+U -1 ; WX 644 ; N ebreve ; G 523 ; B 71 -16 584 642 ;
+U -1 ; WX 706 ; N Gcircumflex ; G 524 ; B 77 -15 646 797 ;
+U -1 ; WX 714 ; N gcircumflex ; G 525 ; B 71 -198 654 656 ;
+U -1 ; WX 706 ; N Gdotaccent ; G 526 ; B 77 -15 646 720 ;
+U -1 ; WX 714 ; N gdotaccent ; G 527 ; B 71 -198 654 579 ;
+U -1 ; WX 714 ; N Hcircumflex ; G 528 ; B 31 0 654 797 ;
+U -1 ; WX 664 ; N hcircumflex ; G 529 ; B 32 0 604 837 ;
+U -1 ; WX 714 ; N Hbar ; G 530 ; B 31 0 654 565 ;
+U -1 ; WX 634 ; N hbar ; G 531 ; B 32 0 574 604 ;
+U -1 ; WX 682 ; N Itilde ; G 532 ; B 90 0 622 733 ;
+U -1 ; WX 651 ; N itilde ; G 533 ; B 70 0 591 591 ;
+U -1 ; WX 679 ; N Ibreve ; G 534 ; B 90 0 619 782 ;
+U -1 ; WX 650 ; N ibreve ; G 535 ; B 70 0 590 642 ;
+U -1 ; WX 764 ; N IJ ; G 536 ; B 2 -15 704 565 ;
+U -1 ; WX 706 ; N ij ; G 537 ; B 19 -198 646 604 ;
+U -1 ; WX 764 ; N Jcircumflex ; G 538 ; B 62 -15 704 797 ;
+U -1 ; WX 700 ; N jcircumflex ; G 539 ; B 81 -198 640 732 ;
+U -1 ; WX 624 ; N kgreenlandic ; G 540 ; B 12 0 566 423 ;
+U -1 ; WX 658 ; N Ldot ; G 541 ; B 40 0 598 565 ;
+U -1 ; WX 662 ; N ldot ; G 542 ; B 70 0 602 604 ;
+U -1 ; WX 625 ; N napostrophe ; G 543 ; B 32 0 565 436 ;
+U -1 ; WX 744 ; N Eng ; G 544 ; B 20 0 684 565 ;
+U -1 ; WX 625 ; N eng ; G 545 ; B 32 0 565 436 ;
+U -1 ; WX 689 ; N Obreve ; G 546 ; B 73 -15 629 782 ;
+U -1 ; WX 650 ; N obreve ; G 547 ; B 81 -16 590 642 ;
+U -1 ; WX 672 ; N Scircumflex ; G 548 ; B 70 -15 613 797 ;
+U -1 ; WX 634 ; N scircumflex ; G 549 ; B 81 -16 574 656 ;
+U -1 ; WX 720 ; N _d_550 ; G 550 ; B 117 -222 660 565 ;
+U -1 ; WX 590 ; N _d_551 ; G 551 ; B 90 -238 530 573 ;
+U -1 ; WX 720 ; N Tbar ; G 552 ; B 117 0 660 565 ;
+U -1 ; WX 590 ; N tbar ; G 553 ; B 90 -16 530 573 ;
+U -1 ; WX 743 ; N Utilde ; G 554 ; B 107 -15 683 733 ;
+U -1 ; WX 644 ; N utilde ; G 555 ; B 90 -12 584 591 ;
+U -1 ; WX 743 ; N Ubreve ; G 556 ; B 107 -15 683 782 ;
+U -1 ; WX 644 ; N ubreve ; G 557 ; B 90 -12 584 642 ;
+U -1 ; WX 762 ; N Wcircumflex ; G 558 ; B 95 0 702 797 ;
+U -1 ; WX 723 ; N wcircumflex ; G 559 ; B 81 0 663 656 ;
+U -1 ; WX 733 ; N Ycircumflex ; G 560 ; B 123 0 673 797 ;
+U -1 ; WX 700 ; N ycircumflex ; G 561 ; B -12 -198 640 656 ;
+U -1 ; WX 730 ; N longs ; G 562 ; B 81 0 670 604 ;
+U -1 ; WX 673 ; N afii61352 ; G 563 ; B -43 -8 620 574 ;
+U -1 ; WX 644 ; N infinity ; G 564 ; B -22 120 601 484 ;
+U -1 ; WX 754 ; N uni1EF6 ; G 565 ; B 128 0 694 896 ;
+U -1 ; WX 722 ; N uni1EF7 ; G 566 ; B -13 -205 662 758 ;
+U -1 ; WX 754 ; N uni1EF4 ; G 567 ; B 128 -230 694 583 ;
+U -1 ; WX 722 ; N uni1EF5 ; G 568 ; B -13 -230 662 437 ;
+U -1 ; WX 693 ; N uni1EA2 ; G 569 ; B -11 0 633 896 ;
+U -1 ; WX 693 ; N uni1EA0 ; G 570 ; B -11 -230 633 583 ;
+U -1 ; WX 721 ; N uni1EA6 ; G 571 ; B -11 0 661 1083 ;
+U -1 ; WX 693 ; N uni1EA4 ; G 572 ; B -11 0 633 1083 ;
+U -1 ; WX 790 ; N uni1EAA ; G 573 ; B -11 0 730 1036 ;
+U -1 ; WX 832 ; N uni1EA8 ; G 574 ; B -11 0 772 1045 ;
+U -1 ; WX 693 ; N uni1EAC ; G 575 ; B -11 -230 633 857 ;
+U -1 ; WX 693 ; N uni1EB0 ; G 576 ; B -11 0 633 1078 ;
+U -1 ; WX 698 ; N uni1EAE ; G 577 ; B -11 0 638 1078 ;
+U -1 ; WX 716 ; N uni1EB4 ; G 578 ; B -11 0 656 1042 ;
+U -1 ; WX 693 ; N uni1EB2 ; G 579 ; B -11 0 633 1085 ;
+U -1 ; WX 693 ; N uni1EB6 ; G 580 ; B -11 -230 633 850 ;
+U -1 ; WX 730 ; N uni1EBC ; G 581 ; B 23 0 670 824 ;
+U -1 ; WX 712 ; N uni1EBA ; G 582 ; B 23 0 652 896 ;
+U -1 ; WX 712 ; N uni1EB8 ; G 583 ; B 23 -230 652 583 ;
+U -1 ; WX 721 ; N uni1EC0 ; G 584 ; B 23 0 661 1083 ;
+U -1 ; WX 712 ; N uni1EBE ; G 585 ; B 23 0 652 1083 ;
+U -1 ; WX 790 ; N uni1EC4 ; G 586 ; B 23 0 730 1036 ;
+U -1 ; WX 832 ; N uni1EC2 ; G 587 ; B 23 0 772 1045 ;
+U -1 ; WX 712 ; N uni1EC6 ; G 588 ; B 23 -230 652 857 ;
+U -1 ; WX 692 ; N uni1EC8 ; G 589 ; B 93 0 632 896 ;
+U -1 ; WX 648 ; N uni1EA3 ; G 590 ; B 65 -16 588 758 ;
+U -1 ; WX 643 ; N uni1EA1 ; G 591 ; B 65 -230 583 450 ;
+U -1 ; WX 692 ; N uni1EA7 ; G 592 ; B 65 -16 632 945 ;
+U -1 ; WX 645 ; N uni1EA5 ; G 593 ; B 65 -16 585 945 ;
+U -1 ; WX 761 ; N uni1EAB ; G 594 ; B 65 -16 701 898 ;
+U -1 ; WX 803 ; N uni1EA9 ; G 595 ; B 65 -16 743 907 ;
+U -1 ; WX 645 ; N uni1EAD ; G 596 ; B 65 -230 585 719 ;
+U -1 ; WX 659 ; N uni1EB1 ; G 597 ; B 65 -16 599 941 ;
+U -1 ; WX 693 ; N uni1EAF ; G 598 ; B 65 -16 633 941 ;
+U -1 ; WX 711 ; N uni1EB5 ; G 599 ; B 65 -16 651 905 ;
+U -1 ; WX 659 ; N uni1EB3 ; G 600 ; B 65 -16 599 948 ;
+U -1 ; WX 659 ; N uni1EB7 ; G 601 ; B 65 -230 599 713 ;
+U -1 ; WX 668 ; N uni1EBD ; G 602 ; B 74 -16 608 680 ;
+U -1 ; WX 660 ; N uni1EBB ; G 603 ; B 74 -16 600 758 ;
+U -1 ; WX 660 ; N uni1EB9 ; G 604 ; B 74 -230 600 450 ;
+U -1 ; WX 692 ; N uni1EC1 ; G 605 ; B 74 -16 632 945 ;
+U -1 ; WX 660 ; N uni1EBF ; G 606 ; B 74 -16 600 945 ;
+U -1 ; WX 761 ; N uni1EC5 ; G 607 ; B 74 -16 701 898 ;
+U -1 ; WX 803 ; N uni1EC3 ; G 608 ; B 74 -16 743 907 ;
+U -1 ; WX 660 ; N uni1EC7 ; G 609 ; B 74 -230 600 719 ;
+U -1 ; WX 610 ; N uni1EC9 ; G 610 ; B 72 0 550 758 ;
+U -1 ; WX 692 ; N uni1ECA ; G 611 ; B 93 -230 632 583 ;
+U -1 ; WX 709 ; N uni1ECE ; G 612 ; B 75 -14 649 896 ;
+U -1 ; WX 709 ; N uni1ECC ; G 613 ; B 75 -230 649 597 ;
+U -1 ; WX 736 ; N uni1ED2 ; G 614 ; B 75 -14 676 1083 ;
+U -1 ; WX 709 ; N uni1ED0 ; G 615 ; B 75 -14 649 1083 ;
+U -1 ; WX 805 ; N uni1ED6 ; G 616 ; B 75 -14 745 1036 ;
+U -1 ; WX 847 ; N uni1ED4 ; G 617 ; B 75 -14 787 1045 ;
+U -1 ; WX 709 ; N uni1ED8 ; G 618 ; B 75 -230 649 857 ;
+U -1 ; WX 751 ; N Ohorn ; G 619 ; B 75 -14 697 681 ;
+U -1 ; WX 751 ; N uni1EDC ; G 620 ; B 75 -14 697 891 ;
+U -1 ; WX 751 ; N uni1EDA ; G 621 ; B 75 -14 697 874 ;
+U -1 ; WX 751 ; N uni1EE0 ; G 622 ; B 75 -14 697 846 ;
+U -1 ; WX 751 ; N uni1EDE ; G 623 ; B 75 -14 697 911 ;
+U -1 ; WX 751 ; N uni1EE2 ; G 624 ; B 75 -230 697 681 ;
+U -1 ; WX 765 ; N _d_625 ; G 625 ; B 110 -14 705 790 ;
+U -1 ; WX 765 ; N uni1EE6 ; G 626 ; B 110 -14 705 896 ;
+U -1 ; WX 765 ; N uni1EE4 ; G 627 ; B 110 -230 705 583 ;
+U -1 ; WX 853 ; N Uhorn ; G 628 ; B 110 -14 799 681 ;
+U -1 ; WX 853 ; N uni1EEA ; G 629 ; B 110 -14 799 891 ;
+U -1 ; WX 853 ; N uni1EE8 ; G 630 ; B 110 -14 799 874 ;
+U -1 ; WX 853 ; N uni1EEE ; G 631 ; B 110 -14 799 846 ;
+U -1 ; WX 853 ; N uni1EEC ; G 632 ; B 110 -14 799 911 ;
+U -1 ; WX 853 ; N uni1EF0 ; G 633 ; B 110 -230 799 681 ;
+U -1 ; WX 754 ; N Ygrave ; G 634 ; B 128 0 694 866 ;
+U -1 ; WX 754 ; N uni1EF8 ; G 635 ; B 128 0 694 824 ;
+U -1 ; WX 610 ; N uni1ECB ; G 636 ; B 72 -230 550 623 ;
+U -1 ; WX 669 ; N uni1ECF ; G 637 ; B 84 -16 609 758 ;
+U -1 ; WX 669 ; N uni1ECD ; G 638 ; B 84 -230 609 450 ;
+U -1 ; WX 692 ; N uni1ED3 ; G 639 ; B 84 -16 632 945 ;
+U -1 ; WX 669 ; N uni1ED1 ; G 640 ; B 84 -16 609 945 ;
+U -1 ; WX 761 ; N uni1ED7 ; G 641 ; B 84 -16 701 898 ;
+U -1 ; WX 803 ; N uni1ED5 ; G 642 ; B 84 -16 743 907 ;
+U -1 ; WX 669 ; N uni1ED9 ; G 643 ; B 84 -230 609 719 ;
+U -1 ; WX 745 ; N ohorn ; G 644 ; B 84 -16 691 522 ;
+U -1 ; WX 745 ; N uni1EDD ; G 645 ; B 84 -16 691 775 ;
+U -1 ; WX 745 ; N uni1EDB ; G 646 ; B 84 -16 691 738 ;
+U -1 ; WX 745 ; N uni1EE1 ; G 647 ; B 84 -16 691 702 ;
+U -1 ; WX 745 ; N uni1EDF ; G 648 ; B 84 -16 691 775 ;
+U -1 ; WX 745 ; N uni1EE3 ; G 649 ; B 84 -230 691 522 ;
+U -1 ; WX 671 ; N _d_650 ; G 650 ; B 94 -13 611 643 ;
+U -1 ; WX 663 ; N uni1EE7 ; G 651 ; B 94 -13 603 758 ;
+U -1 ; WX 663 ; N uni1EE5 ; G 652 ; B 94 -230 603 437 ;
+U -1 ; WX 803 ; N uhorn ; G 653 ; B 94 -13 749 535 ;
+U -1 ; WX 803 ; N uni1EEB ; G 654 ; B 94 -13 749 775 ;
+U -1 ; WX 803 ; N uni1EE9 ; G 655 ; B 94 -13 749 738 ;
+U -1 ; WX 803 ; N uni1EEF ; G 656 ; B 94 -13 749 702 ;
+U -1 ; WX 803 ; N uni1EED ; G 657 ; B 94 -13 749 775 ;
+U -1 ; WX 803 ; N uni1EF1 ; G 658 ; B 94 -230 749 535 ;
+U -1 ; WX 722 ; N ygrave ; G 659 ; B -13 -205 662 729 ;
+U -1 ; WX 722 ; N uni1EF9 ; G 660 ; B -13 -205 662 680 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Courier.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Courier.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Courier.ufm	(revision 2000)
@@ -0,0 +1,715 @@
+StartFontMetrics 4.1
+FontName Nimbus_Mono_L_Regular
+FullName Nimbus Mono L Regular
+Notice 
+EncodingScheme FontSpecific
+FamilyName Nimbus Mono L
+Weight Regular
+Version 1.0
+Characters 657
+ItalicAngle 0.0
+Ascender 959
+Descender -274
+UnderlineThickness 50
+UnderlinePosition -100
+IsFixedPitch true
+FontBBox -46 -274 650 959
+StartCharMetrics 696
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .null ; G 1 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N exclam ; G 2 ; B 240 -15 360 618 ;
+U -1 ; WX 600 ; N quotedbl ; G 3 ; B 146 315 454 604 ;
+U -1 ; WX 600 ; N numbersign ; G 4 ; B 92 -62 508 647 ;
+U -1 ; WX 600 ; N dollar ; G 5 ; B 113 -92 487 655 ;
+U -1 ; WX 600 ; N percent ; G 6 ; B 87 -12 513 611 ;
+U -1 ; WX 600 ; N ampersand ; G 7 ; B 105 -16 478 519 ;
+U -1 ; WX 600 ; N quotesingle ; G 104 ; B 236 315 364 604 ;
+U -1 ; WX 600 ; N parenleft ; G 9 ; B 294 -124 458 604 ;
+U -1 ; WX 600 ; N parenright ; G 10 ; B 147 -124 311 604 ;
+U -1 ; WX 600 ; N asterisk ; G 11 ; B 113 250 487 604 ;
+U -1 ; WX 600 ; N plus ; G 12 ; B 72 32 528 530 ;
+U -1 ; WX 600 ; N comma ; G 13 ; B 135 -145 340 145 ;
+U -1 ; WX 600 ; N hyphen ; G 14 ; B 72 258 528 299 ;
+U -1 ; WX 600 ; N period ; G 15 ; B 226 -15 374 116 ;
+U -1 ; WX 600 ; N slash ; G 16 ; B 113 -81 487 668 ;
+U -1 ; WX 600 ; N zero ; G 17 ; B 113 -15 487 618 ;
+U -1 ; WX 600 ; N one ; G 18 ; B 113 0 487 612 ;
+U -1 ; WX 600 ; N two ; G 19 ; B 84 0 478 618 ;
+U -1 ; WX 600 ; N three ; G 20 ; B 96 -15 499 618 ;
+U -1 ; WX 600 ; N four ; G 21 ; B 105 0 478 604 ;
+U -1 ; WX 600 ; N five ; G 22 ; B 96 -15 499 604 ;
+U -1 ; WX 600 ; N six ; G 23 ; B 136 -15 510 618 ;
+U -1 ; WX 600 ; N seven ; G 24 ; B 105 -1 478 604 ;
+U -1 ; WX 600 ; N eight ; G 25 ; B 113 -15 487 618 ;
+U -1 ; WX 600 ; N nine ; G 26 ; B 136 -15 510 618 ;
+U -1 ; WX 600 ; N colon ; G 27 ; B 226 -15 374 417 ;
+U -1 ; WX 600 ; N semicolon ; G 28 ; B 139 -145 350 417 ;
+U -1 ; WX 600 ; N less ; G 29 ; B 72 44 522 518 ;
+U -1 ; WX 600 ; N equal ; G 30 ; B 51 190 549 375 ;
+U -1 ; WX 600 ; N greater ; G 31 ; B 78 44 528 518 ;
+U -1 ; WX 600 ; N question ; G 32 ; B 134 -15 487 577 ;
+U -1 ; WX 600 ; N at ; G 33 ; B 105 -62 478 624 ;
+U -1 ; WX 600 ; N A ; G 34 ; B 9 0 591 563 ;
+U -1 ; WX 600 ; N B ; G 35 ; B 43 0 541 563 ;
+U -1 ; WX 600 ; N C ; G 36 ; B 63 -16 534 576 ;
+U -1 ; WX 600 ; N D ; G 37 ; B 43 0 520 563 ;
+U -1 ; WX 600 ; N E ; G 38 ; B 43 0 520 563 ;
+U -1 ; WX 600 ; N F ; G 39 ; B 43 0 520 563 ;
+U -1 ; WX 600 ; N G ; G 40 ; B 63 -16 562 576 ;
+U -1 ; WX 600 ; N H ; G 41 ; B 53 0 551 563 ;
+U -1 ; WX 600 ; N I ; G 42 ; B 113 0 487 563 ;
+U -1 ; WX 600 ; N J ; G 43 ; B 84 -16 583 563 ;
+U -1 ; WX 600 ; N K ; G 44 ; B 43 0 572 563 ;
+U -1 ; WX 600 ; N L ; G 45 ; B 63 0 541 563 ;
+U -1 ; WX 600 ; N M ; G 46 ; B 11 0 593 563 ;
+U -1 ; WX 600 ; N N ; G 47 ; B 22 0 562 563 ;
+U -1 ; WX 600 ; N O ; G 48 ; B 51 -16 549 576 ;
+U -1 ; WX 600 ; N P ; G 49 ; B 43 0 499 563 ;
+U -1 ; WX 600 ; N Q ; G 50 ; B 51 -115 549 576 ;
+U -1 ; WX 600 ; N R ; G 51 ; B 43 0 589 563 ;
+U -1 ; WX 600 ; N S ; G 52 ; B 92 -16 508 576 ;
+U -1 ; WX 600 ; N T ; G 53 ; B 72 0 528 563 ;
+U -1 ; WX 600 ; N U ; G 54 ; B 40 -16 560 563 ;
+U -1 ; WX 600 ; N V ; G 55 ; B 9 0 591 563 ;
+U -1 ; WX 600 ; N W ; G 56 ; B 20 0 580 563 ;
+U -1 ; WX 600 ; N X ; G 57 ; B 40 0 560 563 ;
+U -1 ; WX 600 ; N Y ; G 58 ; B 51 0 549 563 ;
+U -1 ; WX 600 ; N Z ; G 59 ; B 103 0 497 563 ;
+U -1 ; WX 600 ; N bracketleft ; G 60 ; B 280 -124 445 604 ;
+U -1 ; WX 600 ; N backslash ; G 61 ; B 113 -81 487 668 ;
+U -1 ; WX 600 ; N bracketright ; G 62 ; B 155 -124 320 604 ;
+U -1 ; WX 600 ; N asciicircum ; G 63 ; B 113 354 487 615 ;
+U -1 ; WX 600 ; N underscore ; G 64 ; B -12 -125 612 -75 ;
+U -1 ; WX 600 ; N grave ; G 124 ; B 155 490 320 639 ;
+U -1 ; WX 600 ; N a ; G 66 ; B 72 -16 541 431 ;
+U -1 ; WX 600 ; N b ; G 67 ; B 22 -16 541 604 ;
+U -1 ; WX 600 ; N c ; G 68 ; B 84 -16 535 431 ;
+U -1 ; WX 600 ; N d ; G 69 ; B 63 -16 583 604 ;
+U -1 ; WX 600 ; N e ; G 70 ; B 63 -16 520 431 ;
+U -1 ; WX 600 ; N f ; G 71 ; B 105 0 541 604 ;
+U -1 ; WX 600 ; N g ; G 72 ; B 63 -186 562 431 ;
+U -1 ; WX 600 ; N h ; G 73 ; B 43 0 551 604 ;
+U -1 ; WX 600 ; N i ; G 74 ; B 92 0 508 624 ;
+U -1 ; WX 600 ; N j ; G 75 ; B 147 -186 458 624 ;
+U -1 ; WX 600 ; N k ; G 76 ; B 63 0 541 604 ;
+U -1 ; WX 600 ; N l ; G 77 ; B 92 0 508 604 ;
+U -1 ; WX 600 ; N m ; G 78 ; B 11 0 593 431 ;
+U -1 ; WX 600 ; N n ; G 79 ; B 53 0 541 431 ;
+U -1 ; WX 600 ; N o ; G 80 ; B 72 -16 528 431 ;
+U -1 ; WX 600 ; N p ; G 81 ; B 22 -186 541 431 ;
+U -1 ; WX 600 ; N q ; G 82 ; B 63 -186 583 431 ;
+U -1 ; WX 600 ; N r ; G 83 ; B 84 0 541 427 ;
+U -1 ; WX 600 ; N s ; G 84 ; B 103 -16 497 431 ;
+U -1 ; WX 600 ; N t ; G 85 ; B 43 -16 499 563 ;
+U -1 ; WX 600 ; N u ; G 86 ; B 43 -16 541 417 ;
+U -1 ; WX 600 ; N v ; G 87 ; B 30 0 570 417 ;
+U -1 ; WX 600 ; N w ; G 88 ; B 30 0 570 417 ;
+U -1 ; WX 600 ; N x ; G 89 ; B 51 0 549 417 ;
+U -1 ; WX 600 ; N y ; G 90 ; B 51 -186 549 417 ;
+U -1 ; WX 600 ; N z ; G 91 ; B 115 0 489 417 ;
+U -1 ; WX 600 ; N braceleft ; G 92 ; B 197 -124 403 604 ;
+U -1 ; WX 600 ; N bar ; G 93 ; B 280 -124 320 604 ;
+U -1 ; WX 600 ; N braceright ; G 94 ; B 197 -124 403 604 ;
+U -1 ; WX 600 ; N asciitilde ; G 95 ; B 92 212 508 348 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N Euro ; G 289 ; B 11 -16 534 576 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N quotesinglbase ; G 117 ; B 135 -145 340 145 ;
+U -1 ; WX 600 ; N florin ; G 101 ; B 87 -93 518 618 ;
+U -1 ; WX 600 ; N quotedblbase ; G 118 ; B 93 -116 507 145 ;
+U -1 ; WX 600 ; N ellipsis ; G 121 ; B 51 -15 549 84 ;
+U -1 ; WX 600 ; N dagger ; G 112 ; B 124 -63 476 604 ;
+U -1 ; WX 600 ; N daggerdbl ; G 113 ; B 124 -62 476 604 ;
+U -1 ; WX 600 ; N circumflex ; G 126 ; B 155 490 445 639 ;
+U -1 ; WX 600 ; N perthousand ; G 122 ; B 34 -9 564 614 ;
+U -1 ; WX 600 ; N Scaron ; G 189 ; B 92 -16 508 789 ;
+U -1 ; WX 600 ; N guilsinglleft ; G 107 ; B 63 0 312 417 ;
+U -1 ; WX 600 ; N OE ; G 142 ; B 10 0 590 563 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N Zcaron ; G 200 ; B 103 0 497 789 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N quoteleft ; G 65 ; B 260 343 465 604 ;
+U -1 ; WX 600 ; N quoteright ; G 8 ; B 135 314 340 604 ;
+U -1 ; WX 600 ; N quotedblleft ; G 105 ; B 93 343 507 604 ;
+U -1 ; WX 600 ; N quotedblright ; G 119 ; B 93 343 507 604 ;
+U -1 ; WX 600 ; N bullet ; G 116 ; B 202 141 398 337 ;
+U -1 ; WX 600 ; N endash ; G 111 ; B 72 261 528 302 ;
+U -1 ; WX 600 ; N emdash ; G 137 ; B 1 261 599 302 ;
+U -1 ; WX 600 ; N tilde ; G 127 ; B 145 516 455 605 ;
+U -1 ; WX 600 ; N trademark ; G 297 ; B 4 243 598 563 ;
+U -1 ; WX 600 ; N scaron ; G 253 ; B 103 -16 497 639 ;
+U -1 ; WX 600 ; N guilsinglright ; G 108 ; B 293 0 541 417 ;
+U -1 ; WX 600 ; N oe ; G 148 ; B 12 -16 578 431 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N zcaron ; G 264 ; B 115 0 489 639 ;
+U -1 ; WX 600 ; N Ydieresis ; G 204 ; B 51 0 549 761 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N exclamdown ; G 96 ; B 240 -216 360 417 ;
+U -1 ; WX 600 ; N cent ; G 97 ; B 113 -13 469 630 ;
+U -1 ; WX 600 ; N sterling ; G 98 ; B 63 0 520 578 ;
+U -1 ; WX 600 ; N currency ; G 103 ; B 103 95 497 489 ;
+U -1 ; WX 600 ; N yen ; G 100 ; B 51 0 549 563 ;
+U -1 ; WX 600 ; N brokenbar ; G 314 ; B 280 -124 320 604 ;
+U -1 ; WX 600 ; N section ; G 102 ; B 66 -62 534 603 ;
+U -1 ; WX 600 ; N dieresis ; G 131 ; B 140 511 461 611 ;
+U -1 ; WX 600 ; N copyright ; G 303 ; B 3 -15 596 578 ;
+U -1 ; WX 600 ; N ordfeminine ; G 139 ; B 155 279 447 574 ;
+U -1 ; WX 600 ; N guillemotleft ; G 106 ; B 63 0 541 417 ;
+U -1 ; WX 600 ; N logicalnot ; G 311 ; B 72 168 528 438 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N registered ; G 304 ; B 3 -15 596 578 ;
+U -1 ; WX 600 ; N macron ; G 128 ; B 155 536 445 576 ;
+U -1 ; WX 600 ; N degree ; G 293 ; B 155 346 445 636 ;
+U -1 ; WX 600 ; N plusminus ; G 298 ; B 72 0 528 529 ;
+U -1 ; WX 600 ; N twosuperior ; G 291 ; B 175 259 405 612 ;
+U -1 ; WX 600 ; N threesuperior ; G 292 ; B 181 251 416 612 ;
+U -1 ; WX 600 ; N acute ; G 125 ; B 280 490 445 639 ;
+U -1 ; WX 600 ; N mu ; G 315 ; B 43 -200 541 417 ;
+U -1 ; WX 600 ; N paragraph ; G 115 ; B 79 -62 525 604 ;
+U -1 ; WX 600 ; N periodcentered ; G 114 ; B 226 217 374 348 ;
+U -1 ; WX 600 ; N cedilla ; G 133 ; B 210 -173 377 0 ;
+U -1 ; WX 600 ; N onesuperior ; G 290 ; B 191 259 410 612 ;
+U -1 ; WX 600 ; N ordmasculine ; G 143 ; B 154 284 448 577 ;
+U -1 ; WX 600 ; N guillemotright ; G 120 ; B 63 0 541 417 ;
+U -1 ; WX 600 ; N onequarter ; G 300 ; B 16 0 580 612 ;
+U -1 ; WX 600 ; N onehalf ; G 299 ; B 23 0 573 612 ;
+U -1 ; WX 600 ; N threequarters ; G 301 ; B 6 0 580 612 ;
+U -1 ; WX 600 ; N questiondown ; G 123 ; B 113 -175 466 417 ;
+U -1 ; WX 600 ; N Agrave ; G 152 ; B 9 0 591 789 ;
+U -1 ; WX 600 ; N Aacute ; G 151 ; B 9 0 591 789 ;
+U -1 ; WX 600 ; N Acircumflex ; G 153 ; B 9 0 591 789 ;
+U -1 ; WX 600 ; N Atilde ; G 155 ; B 9 0 591 755 ;
+U -1 ; WX 600 ; N Adieresis ; G 150 ; B 9 0 591 761 ;
+U -1 ; WX 600 ; N Aring ; G 156 ; B 9 0 591 811 ;
+U -1 ; WX 600 ; N AE ; G 138 ; B 10 0 590 563 ;
+U -1 ; WX 600 ; N Ccedilla ; G 158 ; B 63 -173 534 576 ;
+U -1 ; WX 600 ; N Egrave ; G 164 ; B 43 0 520 789 ;
+U -1 ; WX 600 ; N Eacute ; G 163 ; B 43 0 520 789 ;
+U -1 ; WX 600 ; N Ecircumflex ; G 165 ; B 43 0 520 789 ;
+U -1 ; WX 600 ; N Edieresis ; G 162 ; B 43 0 520 761 ;
+U -1 ; WX 600 ; N Igrave ; G 172 ; B 113 0 487 789 ;
+U -1 ; WX 600 ; N Iacute ; G 171 ; B 113 0 487 789 ;
+U -1 ; WX 600 ; N Icircumflex ; G 173 ; B 113 0 487 789 ;
+U -1 ; WX 600 ; N Idieresis ; G 170 ; B 113 0 487 761 ;
+U -1 ; WX 600 ; N Eth ; G 283 ; B 0 0 520 563 ;
+U -1 ; WX 600 ; N Ntilde ; G 179 ; B 22 0 562 755 ;
+U -1 ; WX 600 ; N Ograve ; G 182 ; B 51 -16 549 789 ;
+U -1 ; WX 600 ; N Oacute ; G 181 ; B 51 -16 549 789 ;
+U -1 ; WX 600 ; N Ocircumflex ; G 183 ; B 51 -16 549 789 ;
+U -1 ; WX 600 ; N Otilde ; G 184 ; B 51 -16 549 755 ;
+U -1 ; WX 600 ; N Odieresis ; G 180 ; B 51 -16 549 761 ;
+U -1 ; WX 600 ; N multiply ; G 295 ; B 118 100 482 464 ;
+U -1 ; WX 600 ; N Oslash ; G 141 ; B 40 -43 560 605 ;
+U -1 ; WX 600 ; N Ugrave ; G 194 ; B 40 -16 560 789 ;
+U -1 ; WX 600 ; N Uacute ; G 193 ; B 40 -16 560 789 ;
+U -1 ; WX 600 ; N Ucircumflex ; G 195 ; B 40 -16 560 789 ;
+U -1 ; WX 600 ; N Udieresis ; G 192 ; B 40 -16 560 761 ;
+U -1 ; WX 600 ; N Yacute ; G 198 ; B 51 0 549 789 ;
+U -1 ; WX 600 ; N Thorn ; G 285 ; B 43 0 499 563 ;
+U -1 ; WX 600 ; N germandbls ; G 149 ; B 43 -16 499 604 ;
+U -1 ; WX 600 ; N agrave ; G 218 ; B 72 -16 541 639 ;
+U -1 ; WX 600 ; N aacute ; G 217 ; B 72 -16 541 639 ;
+U -1 ; WX 600 ; N acircumflex ; G 219 ; B 72 -16 541 639 ;
+U -1 ; WX 600 ; N atilde ; G 221 ; B 72 -16 541 605 ;
+U -1 ; WX 600 ; N adieresis ; G 216 ; B 72 -16 541 611 ;
+U -1 ; WX 600 ; N aring ; G 222 ; B 72 -16 541 661 ;
+U -1 ; WX 600 ; N ae ; G 144 ; B 12 -16 578 431 ;
+U -1 ; WX 600 ; N ccedilla ; G 226 ; B 84 -173 535 431 ;
+U -1 ; WX 600 ; N egrave ; G 230 ; B 63 -16 520 639 ;
+U -1 ; WX 600 ; N eacute ; G 229 ; B 63 -16 520 639 ;
+U -1 ; WX 600 ; N ecircumflex ; G 231 ; B 63 -16 520 639 ;
+U -1 ; WX 600 ; N edieresis ; G 228 ; B 63 -16 520 611 ;
+U -1 ; WX 600 ; N igrave ; G 238 ; B 92 0 508 639 ;
+U -1 ; WX 600 ; N iacute ; G 237 ; B 92 0 508 639 ;
+U -1 ; WX 600 ; N icircumflex ; G 239 ; B 92 0 508 639 ;
+U -1 ; WX 600 ; N idieresis ; G 236 ; B 92 0 508 611 ;
+U -1 ; WX 600 ; N eth ; G 287 ; B 72 -17 528 620 ;
+U -1 ; WX 600 ; N ntilde ; G 244 ; B 53 0 541 605 ;
+U -1 ; WX 600 ; N ograve ; G 247 ; B 72 -16 528 639 ;
+U -1 ; WX 600 ; N oacute ; G 246 ; B 72 -16 528 639 ;
+U -1 ; WX 600 ; N ocircumflex ; G 248 ; B 72 -16 528 639 ;
+U -1 ; WX 600 ; N otilde ; G 249 ; B 72 -16 528 605 ;
+U -1 ; WX 600 ; N odieresis ; G 245 ; B 72 -16 528 611 ;
+U -1 ; WX 600 ; N divide ; G 296 ; B 72 25 528 540 ;
+U -1 ; WX 600 ; N oslash ; G 147 ; B 53 -43 543 458 ;
+U -1 ; WX 600 ; N ugrave ; G 258 ; B 43 -16 541 639 ;
+U -1 ; WX 600 ; N uacute ; G 257 ; B 43 -16 541 639 ;
+U -1 ; WX 600 ; N ucircumflex ; G 259 ; B 43 -16 541 639 ;
+U -1 ; WX 600 ; N udieresis ; G 256 ; B 43 -16 541 611 ;
+U -1 ; WX 600 ; N yacute ; G 262 ; B 51 -186 549 639 ;
+U -1 ; WX 600 ; N thorn ; G 288 ; B 22 -186 541 590 ;
+U -1 ; WX 600 ; N ydieresis ; G 266 ; B 51 -186 549 611 ;
+U -1 ; WX 600 ; N fraction ; G 99 ; B 50 138 549 470 ;
+U -1 ; WX 600 ; N fi ; G 109 ; B 10 0 585 624 ;
+U -1 ; WX 600 ; N fl ; G 110 ; B 10 0 587 604 ;
+U -1 ; WX 600 ; N breve ; G 129 ; B 155 490 445 620 ;
+U -1 ; WX 600 ; N dotaccent ; G 130 ; B 250 511 350 611 ;
+U -1 ; WX 600 ; N ring ; G 132 ; B 207 480 393 661 ;
+U -1 ; WX 600 ; N hungarumlaut ; G 134 ; B 155 490 445 633 ;
+U -1 ; WX 600 ; N ogonek ; G 135 ; B 280 -155 433 0 ;
+U -1 ; WX 600 ; N caron ; G 136 ; B 155 490 445 639 ;
+U -1 ; WX 600 ; N Lslash ; G 140 ; B 43 0 541 563 ;
+U -1 ; WX 600 ; N dotlessi ; G 145 ; B 92 0 508 417 ;
+U -1 ; WX 600 ; N lslash ; G 146 ; B 92 0 508 604 ;
+U -1 ; WX 600 ; N Abreve ; G 154 ; B 9 0 591 770 ;
+U -1 ; WX 600 ; N Aogonek ; G 157 ; B 9 -155 600 563 ;
+U -1 ; WX 600 ; N Cacute ; G 159 ; B 63 -16 534 789 ;
+U -1 ; WX 600 ; N Ccaron ; G 160 ; B 63 -16 534 789 ;
+U -1 ; WX 600 ; N Dcaron ; G 161 ; B 43 0 520 789 ;
+U -1 ; WX 600 ; N Ecaron ; G 166 ; B 43 0 520 789 ;
+U -1 ; WX 600 ; N Edotaccent ; G 167 ; B 43 0 520 761 ;
+U -1 ; WX 600 ; N Eogonek ; G 168 ; B 43 -155 549 563 ;
+U -1 ; WX 600 ; N Gbreve ; G 169 ; B 63 -16 562 770 ;
+U -1 ; WX 600 ; N Idotaccent ; G 174 ; B 113 0 487 761 ;
+U -1 ; WX 600 ; N Lacute ; G 175 ; B 63 0 541 789 ;
+U -1 ; WX 600 ; N Lcaron ; G 176 ; B 63 0 541 566 ;
+U -1 ; WX 600 ; N Nacute ; G 177 ; B 22 0 562 789 ;
+U -1 ; WX 600 ; N Ncaron ; G 178 ; B 22 0 562 789 ;
+U -1 ; WX 600 ; N Ohungarumlaut ; G 185 ; B 51 -16 549 783 ;
+U -1 ; WX 600 ; N Racute ; G 186 ; B 43 0 589 789 ;
+U -1 ; WX 600 ; N Rcaron ; G 187 ; B 43 0 589 789 ;
+U -1 ; WX 600 ; N Sacute ; G 188 ; B 92 -16 508 789 ;
+U -1 ; WX 600 ; N Scedilla ; G 190 ; B 92 -173 508 576 ;
+U -1 ; WX 600 ; N Tcaron ; G 191 ; B 72 0 528 789 ;
+U -1 ; WX 600 ; N Uring ; G 196 ; B 40 -16 560 811 ;
+U -1 ; WX 600 ; N Uhungarumlaut ; G 197 ; B 40 -16 560 783 ;
+U -1 ; WX 600 ; N Zacute ; G 199 ; B 103 0 497 789 ;
+U -1 ; WX 600 ; N Zdotaccent ; G 201 ; B 103 0 497 761 ;
+U -1 ; WX 600 ; N Amacron ; G 202 ; B 9 0 591 726 ;
+U -1 ; WX 600 ; N Tcommaaccent ; G 203 ; B 72 -237 528 563 ;
+U -1 ; WX 600 ; N Emacron ; G 205 ; B 43 0 520 726 ;
+U -1 ; WX 600 ; N Imacron ; G 206 ; B 113 0 487 726 ;
+U -1 ; WX 600 ; N Iogonek ; G 207 ; B 113 -155 500 563 ;
+U -1 ; WX 600 ; N Kcommaaccent ; G 208 ; B 43 -237 572 563 ;
+U -1 ; WX 600 ; N Lcommaaccent ; G 209 ; B 63 -237 541 563 ;
+U -1 ; WX 600 ; N Ncommaaccent ; G 210 ; B 22 -237 562 563 ;
+U -1 ; WX 600 ; N Omacron ; G 211 ; B 51 -16 549 726 ;
+U -1 ; WX 600 ; N Rcommaaccent ; G 212 ; B 43 -237 589 563 ;
+U -1 ; WX 600 ; N Gcommaaccent ; G 213 ; B 63 -237 562 576 ;
+U -1 ; WX 600 ; N Umacron ; G 214 ; B 40 -16 560 726 ;
+U -1 ; WX 600 ; N Uogonek ; G 215 ; B 40 -155 560 563 ;
+U -1 ; WX 600 ; N abreve ; G 220 ; B 72 -16 541 620 ;
+U -1 ; WX 600 ; N aogonek ; G 223 ; B 72 -155 556 431 ;
+U -1 ; WX 600 ; N cacute ; G 224 ; B 84 -16 535 639 ;
+U -1 ; WX 600 ; N ccaron ; G 225 ; B 84 -16 535 639 ;
+U -1 ; WX 600 ; N dcaron ; G 227 ; B 63 -16 650 616 ;
+U -1 ; WX 600 ; N ecaron ; G 232 ; B 63 -16 520 639 ;
+U -1 ; WX 600 ; N edotaccent ; G 233 ; B 63 -16 520 611 ;
+U -1 ; WX 600 ; N eogonek ; G 234 ; B 63 -155 520 431 ;
+U -1 ; WX 600 ; N gbreve ; G 235 ; B 63 -186 562 620 ;
+U -1 ; WX 600 ; N lacute ; G 240 ; B 92 0 508 789 ;
+U -1 ; WX 600 ; N lcaron ; G 241 ; B 92 0 508 616 ;
+U -1 ; WX 600 ; N nacute ; G 242 ; B 53 0 541 639 ;
+U -1 ; WX 600 ; N ncaron ; G 243 ; B 53 0 541 639 ;
+U -1 ; WX 600 ; N ohungarumlaut ; G 250 ; B 72 -16 528 633 ;
+U -1 ; WX 600 ; N racute ; G 251 ; B 84 0 541 639 ;
+U -1 ; WX 600 ; N sacute ; G 252 ; B 103 -16 497 639 ;
+U -1 ; WX 600 ; N scommaaccent ; G 254 ; B 103 -237 497 431 ;
+U -1 ; WX 600 ; N tcaron ; G 255 ; B 43 -16 508 616 ;
+U -1 ; WX 600 ; N uring ; G 260 ; B 43 -16 541 661 ;
+U -1 ; WX 600 ; N uhungarumlaut ; G 261 ; B 43 -16 541 633 ;
+U -1 ; WX 600 ; N zacute ; G 263 ; B 115 0 489 639 ;
+U -1 ; WX 600 ; N zdotaccent ; G 265 ; B 115 0 489 611 ;
+U -1 ; WX 600 ; N tcommaaccent ; G 267 ; B 43 -237 499 563 ;
+U -1 ; WX 600 ; N amacron ; G 268 ; B 72 -16 541 576 ;
+U -1 ; WX 600 ; N emacron ; G 269 ; B 63 -16 520 576 ;
+U -1 ; WX 600 ; N imacron ; G 270 ; B 92 0 508 576 ;
+U -1 ; WX 600 ; N kcommaaccent ; G 271 ; B 63 -237 541 604 ;
+U -1 ; WX 600 ; N lcommaaccent ; G 272 ; B 92 -237 508 604 ;
+U -1 ; WX 600 ; N ncommaaccent ; G 273 ; B 53 -237 541 431 ;
+U -1 ; WX 600 ; N omacron ; G 274 ; B 72 -16 528 576 ;
+U -1 ; WX 600 ; N rcommaaccent ; G 275 ; B 84 -237 541 427 ;
+U -1 ; WX 600 ; N umacron ; G 276 ; B 43 -16 541 576 ;
+U -1 ; WX 600 ; N uogonek ; G 277 ; B 43 -155 556 417 ;
+U -1 ; WX 600 ; N rcaron ; G 278 ; B 84 0 541 639 ;
+U -1 ; WX 600 ; N scedilla ; G 279 ; B 103 -173 497 431 ;
+U -1 ; WX 600 ; N gcommaaccent ; G 280 ; B 63 -186 562 666 ;
+U -1 ; WX 600 ; N iogonek ; G 281 ; B 92 -155 520 624 ;
+U -1 ; WX 600 ; N Scommaaccent ; G 282 ; B 92 -237 508 576 ;
+U -1 ; WX 600 ; N Dcroat ; G 284 ; B 0 0 520 563 ;
+U -1 ; WX 600 ; N dcroat ; G 286 ; B 63 -16 583 604 ;
+U -1 ; WX 600 ; N minus ; G 294 ; B 72 261 528 302 ;
+U -1 ; WX 600 ; N commaaccent ; G 302 ; B 234 -237 367 -60 ;
+U -1 ; WX 600 ; N lozenge ; G 305 ; B 89 -11 511 575 ;
+U -1 ; WX 600 ; N Delta ; G 306 ; B 43 0 557 563 ;
+U -1 ; WX 600 ; N notequal ; G 307 ; B 51 94 549 464 ;
+U -1 ; WX 600 ; N radical ; G 308 ; B 27 0 628 699 ;
+U -1 ; WX 600 ; N lessequal ; G 309 ; B 53 0 525 535 ;
+U -1 ; WX 600 ; N greaterequal ; G 310 ; B 59 0 531 535 ;
+U -1 ; WX 600 ; N summation ; G 312 ; B 113 -127 507 563 ;
+U -1 ; WX 600 ; N partialdiff ; G 313 ; B 71 -17 529 582 ;
+U -1 ; WX 600 ; N afii10017 ; G 316 ; B 8 0 592 563 ;
+U -1 ; WX 600 ; N afii10018 ; G 317 ; B 52 0 549 563 ;
+U -1 ; WX 600 ; N afii10019 ; G 318 ; B 50 0 549 563 ;
+U -1 ; WX 600 ; N afii10020 ; G 319 ; B 62 0 539 563 ;
+U -1 ; WX 600 ; N afii10021 ; G 320 ; B 32 -126 567 563 ;
+U -1 ; WX 600 ; N afii10022 ; G 321 ; B 62 0 539 563 ;
+U -1 ; WX 600 ; N afii10023 ; G 322 ; B 62 0 539 751 ;
+U -1 ; WX 600 ; N afii10024 ; G 323 ; B 8 0 592 563 ;
+U -1 ; WX 600 ; N afii10025 ; G 324 ; B 92 -16 508 577 ;
+U -1 ; WX 600 ; N afii10026 ; G 325 ; B 50 0 550 563 ;
+U -1 ; WX 600 ; N afii10027 ; G 326 ; B 50 0 550 770 ;
+U -1 ; WX 600 ; N afii10028 ; G 327 ; B 36 0 564 563 ;
+U -1 ; WX 600 ; N afii10029 ; G 328 ; B 54 0 546 563 ;
+U -1 ; WX 600 ; N afii10030 ; G 329 ; B 8 0 592 563 ;
+U -1 ; WX 600 ; N afii10031 ; G 330 ; B 50 0 550 563 ;
+U -1 ; WX 600 ; N afii10032 ; G 331 ; B 50 -16 549 577 ;
+U -1 ; WX 600 ; N afii10033 ; G 332 ; B 50 0 550 563 ;
+U -1 ; WX 600 ; N afii10034 ; G 333 ; B 54 0 547 563 ;
+U -1 ; WX 600 ; N afii10035 ; G 334 ; B 64 -16 536 577 ;
+U -1 ; WX 600 ; N afii10036 ; G 335 ; B 72 0 527 563 ;
+U -1 ; WX 600 ; N afii10037 ; G 336 ; B 50 0 549 563 ;
+U -1 ; WX 600 ; N afii10038 ; G 337 ; B 14 0 585 563 ;
+U -1 ; WX 600 ; N afii10039 ; G 338 ; B 40 0 560 563 ;
+U -1 ; WX 600 ; N afii10040 ; G 339 ; B 50 -126 550 563 ;
+U -1 ; WX 600 ; N afii10041 ; G 340 ; B 60 0 540 563 ;
+U -1 ; WX 600 ; N afii10042 ; G 341 ; B -46 0 646 563 ;
+U -1 ; WX 600 ; N afii10043 ; G 342 ; B 6 -126 595 563 ;
+U -1 ; WX 600 ; N afii10044 ; G 343 ; B 34 0 567 563 ;
+U -1 ; WX 600 ; N afii10045 ; G 344 ; B 8 0 592 563 ;
+U -1 ; WX 600 ; N afii10046 ; G 345 ; B 54 -2 547 561 ;
+U -1 ; WX 600 ; N afii10047 ; G 346 ; B 64 -16 536 577 ;
+U -1 ; WX 600 ; N afii10048 ; G 347 ; B 4 -16 597 577 ;
+U -1 ; WX 600 ; N afii10049 ; G 348 ; B 26 0 574 563 ;
+U -1 ; WX 600 ; N afii10065 ; G 349 ; B 66 -16 535 431 ;
+U -1 ; WX 600 ; N afii10066 ; G 350 ; B 82 -17 519 626 ;
+U -1 ; WX 600 ; N afii10067 ; G 351 ; B 108 0 493 418 ;
+U -1 ; WX 600 ; N afii10068 ; G 352 ; B 114 0 485 418 ;
+U -1 ; WX 600 ; N afii10069 ; G 353 ; B 52 -118 549 418 ;
+U -1 ; WX 600 ; N afii10070 ; G 354 ; B 72 -16 528 431 ;
+U -1 ; WX 600 ; N afii10071 ; G 355 ; B 72 -16 528 627 ;
+U -1 ; WX 600 ; N afii10072 ; G 356 ; B 12 0 588 418 ;
+U -1 ; WX 600 ; N afii10073 ; G 357 ; B 104 -16 496 431 ;
+U -1 ; WX 600 ; N afii10074 ; G 358 ; B 66 0 534 418 ;
+U -1 ; WX 600 ; N afii10075 ; G 359 ; B 66 0 534 646 ;
+U -1 ; WX 600 ; N afii10076 ; G 360 ; B 70 0 530 418 ;
+U -1 ; WX 600 ; N afii10077 ; G 361 ; B 88 -2 512 418 ;
+U -1 ; WX 600 ; N afii10078 ; G 362 ; B 52 0 548 418 ;
+U -1 ; WX 600 ; N afii10079 ; G 363 ; B 62 0 538 418 ;
+U -1 ; WX 600 ; N afii10080 ; G 364 ; B 72 -16 527 431 ;
+U -1 ; WX 600 ; N afii10081 ; G 365 ; B 64 0 536 418 ;
+U -1 ; WX 600 ; N afii10082 ; G 366 ; B 40 -186 559 431 ;
+U -1 ; WX 600 ; N afii10083 ; G 367 ; B 74 -16 526 431 ;
+U -1 ; WX 600 ; N afii10084 ; G 368 ; B 102 -2 497 418 ;
+U -1 ; WX 600 ; N afii10085 ; G 369 ; B 50 -186 550 418 ;
+U -1 ; WX 600 ; N afii10086 ; G 370 ; B 2 -186 597 572 ;
+U -1 ; WX 600 ; N afii10087 ; G 371 ; B 50 0 550 418 ;
+U -1 ; WX 600 ; N afii10088 ; G 372 ; B 58 -118 542 418 ;
+U -1 ; WX 600 ; N afii10089 ; G 373 ; B 96 0 504 418 ;
+U -1 ; WX 600 ; N afii10090 ; G 374 ; B 8 0 592 418 ;
+U -1 ; WX 600 ; N afii10091 ; G 375 ; B 10 -118 591 418 ;
+U -1 ; WX 600 ; N afii10092 ; G 376 ; B 62 0 537 418 ;
+U -1 ; WX 600 ; N afii10093 ; G 377 ; B 10 0 590 418 ;
+U -1 ; WX 600 ; N afii10094 ; G 378 ; B 108 0 493 418 ;
+U -1 ; WX 600 ; N afii10095 ; G 379 ; B 74 -16 526 431 ;
+U -1 ; WX 600 ; N afii10096 ; G 380 ; B 2 -16 597 431 ;
+U -1 ; WX 600 ; N afii10097 ; G 381 ; B 88 0 512 418 ;
+U -1 ; WX 600 ; N uni0400 ; G 382 ; B 62 0 539 780 ;
+U -1 ; WX 600 ; N afii10051 ; G 383 ; B 27 -103 563 563 ;
+U -1 ; WX 600 ; N afii10052 ; G 384 ; B 62 0 539 753 ;
+U -1 ; WX 600 ; N afii10053 ; G 385 ; B 64 -16 536 577 ;
+U -1 ; WX 600 ; N afii10054 ; G 386 ; B 92 -16 508 577 ;
+U -1 ; WX 600 ; N afii10055 ; G 387 ; B 114 0 486 563 ;
+U -1 ; WX 600 ; N afii10056 ; G 388 ; B 114 0 486 720 ;
+U -1 ; WX 600 ; N afii10057 ; G 389 ; B 50 -16 550 563 ;
+U -1 ; WX 600 ; N afii10058 ; G 390 ; B 12 0 589 563 ;
+U -1 ; WX 600 ; N afii10059 ; G 391 ; B 14 0 587 563 ;
+U -1 ; WX 600 ; N afii10060 ; G 392 ; B 27 0 614 563 ;
+U -1 ; WX 600 ; N afii10061 ; G 393 ; B 36 0 564 753 ;
+U -1 ; WX 600 ; N uni040D ; G 394 ; B 50 0 550 753 ;
+U -1 ; WX 600 ; N afii10062 ; G 395 ; B 50 0 549 733 ;
+U -1 ; WX 600 ; N afii10145 ; G 396 ; B 50 -126 550 563 ;
+U -1 ; WX 600 ; N uni0450 ; G 397 ; B 72 -16 528 648 ;
+U -1 ; WX 600 ; N afii10099 ; G 398 ; B 46 -99 483 604 ;
+U -1 ; WX 600 ; N afii10100 ; G 399 ; B 114 0 485 605 ;
+U -1 ; WX 600 ; N afii10101 ; G 400 ; B 74 -16 526 431 ;
+U -1 ; WX 600 ; N afii10102 ; G 401 ; B 104 -16 496 431 ;
+U -1 ; WX 600 ; N afii10103 ; G 402 ; B 92 0 508 627 ;
+U -1 ; WX 600 ; N afii10104 ; G 403 ; B 92 0 508 574 ;
+U -1 ; WX 600 ; N afii10105 ; G 404 ; B 144 -186 456 627 ;
+U -1 ; WX 600 ; N afii10106 ; G 405 ; B 34 -2 566 418 ;
+U -1 ; WX 600 ; N afii10107 ; G 406 ; B 28 0 572 418 ;
+U -1 ; WX 600 ; N afii10108 ; G 407 ; B 45 0 554 604 ;
+U -1 ; WX 600 ; N afii10109 ; G 408 ; B 70 0 530 605 ;
+U -1 ; WX 600 ; N uni045D ; G 409 ; B 62 0 538 605 ;
+U -1 ; WX 600 ; N afii10110 ; G 410 ; B 50 -186 550 613 ;
+U -1 ; WX 600 ; N afii10193 ; G 411 ; B 62 -118 538 418 ;
+U -1 ; WX 600 ; N uni048C ; G 412 ; B 72 0 529 563 ;
+U -1 ; WX 600 ; N uni048D ; G 413 ; B 108 0 493 418 ;
+U -1 ; WX 600 ; N uni048E ; G 414 ; B 71 0 532 563 ;
+U -1 ; WX 600 ; N uni048F ; G 415 ; B 40 -186 562 431 ;
+U -1 ; WX 600 ; N afii10050 ; G 416 ; B 62 0 539 689 ;
+U -1 ; WX 600 ; N afii10098 ; G 417 ; B 114 0 485 535 ;
+U -1 ; WX 600 ; N uni0492 ; G 418 ; B 62 0 539 563 ;
+U -1 ; WX 600 ; N uni0493 ; G 419 ; B 114 0 485 418 ;
+U -1 ; WX 600 ; N uni0494 ; G 420 ; B 62 -103 539 563 ;
+U -1 ; WX 600 ; N uni0495 ; G 421 ; B 114 0 485 418 ;
+U -1 ; WX 600 ; N uni0496 ; G 422 ; B 8 -125 592 563 ;
+U -1 ; WX 600 ; N uni0497 ; G 423 ; B 12 -118 589 417 ;
+U -1 ; WX 600 ; N uni0498 ; G 424 ; B 92 -16 508 577 ;
+U -1 ; WX 600 ; N uni0499 ; G 425 ; B 104 -16 496 431 ;
+U -1 ; WX 600 ; N uni049A ; G 426 ; B 36 -126 564 563 ;
+U -1 ; WX 600 ; N uni049B ; G 427 ; B 70 -118 530 418 ;
+U -1 ; WX 600 ; N uni049C ; G 428 ; B 36 0 564 563 ;
+U -1 ; WX 600 ; N uni049D ; G 429 ; B 70 0 530 418 ;
+U -1 ; WX 600 ; N uni049E ; G 430 ; B 36 0 564 563 ;
+U -1 ; WX 600 ; N uni049F ; G 431 ; B 70 0 530 418 ;
+U -1 ; WX 600 ; N uni04A0 ; G 432 ; B 36 0 564 563 ;
+U -1 ; WX 600 ; N uni04A1 ; G 433 ; B 70 0 530 418 ;
+U -1 ; WX 600 ; N uni04A2 ; G 434 ; B 53 -125 551 563 ;
+U -1 ; WX 600 ; N uni04A3 ; G 435 ; B 65 -118 543 417 ;
+U -1 ; WX 600 ; N uni04A4 ; G 436 ; B 50 0 550 563 ;
+U -1 ; WX 600 ; N uni04A5 ; G 437 ; B 62 0 538 418 ;
+U -1 ; WX 600 ; N uni04A6 ; G 438 ; B 50 0 550 563 ;
+U -1 ; WX 600 ; N uni04A7 ; G 439 ; B 64 0 536 418 ;
+U -1 ; WX 600 ; N uni04A8 ; G 440 ; B 64 -16 536 577 ;
+U -1 ; WX 600 ; N uni04A9 ; G 441 ; B 74 -16 526 431 ;
+U -1 ; WX 600 ; N uni04AA ; G 442 ; B 64 -16 536 577 ;
+U -1 ; WX 600 ; N uni04AB ; G 443 ; B 74 -16 526 431 ;
+U -1 ; WX 600 ; N uni04AC ; G 444 ; B 72 -125 528 563 ;
+U -1 ; WX 600 ; N uni04AD ; G 445 ; B 122 -118 478 417 ;
+U -1 ; WX 600 ; N uni04AE ; G 446 ; B 50 0 549 563 ;
+U -1 ; WX 600 ; N uni04AF ; G 447 ; B 30 -274 570 418 ;
+U -1 ; WX 600 ; N uni04B0 ; G 448 ; B 50 0 549 563 ;
+U -1 ; WX 600 ; N uni04B1 ; G 449 ; B 30 -274 570 418 ;
+U -1 ; WX 600 ; N uni04B2 ; G 450 ; B 40 -126 560 563 ;
+U -1 ; WX 600 ; N uni04B3 ; G 451 ; B 50 -118 550 418 ;
+U -1 ; WX 600 ; N uni04B4 ; G 452 ; B 50 -146 550 563 ;
+U -1 ; WX 600 ; N uni04B5 ; G 453 ; B 58 -118 542 418 ;
+U -1 ; WX 600 ; N uni04B6 ; G 454 ; B 74 -125 526 563 ;
+U -1 ; WX 600 ; N uni04B7 ; G 455 ; B 96 -118 506 417 ;
+U -1 ; WX 600 ; N uni04B8 ; G 456 ; B 74 0 526 563 ;
+U -1 ; WX 600 ; N uni04B9 ; G 457 ; B 96 0 504 418 ;
+U -1 ; WX 600 ; N uni04BA ; G 458 ; B 74 0 526 563 ;
+U -1 ; WX 600 ; N uni04BB ; G 459 ; B 96 0 504 418 ;
+U -1 ; WX 600 ; N uni04BC ; G 460 ; B 64 -16 536 577 ;
+U -1 ; WX 600 ; N uni04BD ; G 461 ; B 74 -16 526 431 ;
+U -1 ; WX 600 ; N uni04BE ; G 462 ; B 64 -16 536 577 ;
+U -1 ; WX 600 ; N uni04BF ; G 463 ; B 74 -16 526 431 ;
+U -1 ; WX 600 ; N uni04C0 ; G 464 ; B 114 0 486 563 ;
+U -1 ; WX 600 ; N uni04C1 ; G 465 ; B 8 0 592 733 ;
+U -1 ; WX 600 ; N uni04C2 ; G 466 ; B 12 0 588 588 ;
+U -1 ; WX 600 ; N uni04C3 ; G 467 ; B 36 0 564 563 ;
+U -1 ; WX 600 ; N uni04C4 ; G 468 ; B 70 0 530 418 ;
+U -1 ; WX 600 ; N uni04C7 ; G 469 ; B 50 0 550 563 ;
+U -1 ; WX 600 ; N uni04C8 ; G 470 ; B 62 0 538 418 ;
+U -1 ; WX 600 ; N uni04CB ; G 471 ; B 74 0 526 563 ;
+U -1 ; WX 600 ; N uni04CC ; G 472 ; B 96 0 504 418 ;
+U -1 ; WX 600 ; N uni04D0 ; G 473 ; B 8 0 592 759 ;
+U -1 ; WX 600 ; N uni04D1 ; G 474 ; B 66 -16 535 627 ;
+U -1 ; WX 600 ; N uni04D2 ; G 475 ; B 8 0 592 720 ;
+U -1 ; WX 600 ; N uni04D3 ; G 476 ; B 66 -16 535 588 ;
+U -1 ; WX 600 ; N uni04D4 ; G 477 ; B 10 0 591 563 ;
+U -1 ; WX 600 ; N uni04D5 ; G 478 ; B 18 -16 582 431 ;
+U -1 ; WX 600 ; N uni04D6 ; G 479 ; B 62 0 539 759 ;
+U -1 ; WX 600 ; N uni04D7 ; G 480 ; B 72 -16 528 627 ;
+U -1 ; WX 600 ; N uni04D8 ; G 481 ; B 58 -16 543 577 ;
+U -1 ; WX 600 ; N afii10846 ; G 482 ; B 70 -16 530 431 ;
+U -1 ; WX 600 ; N uni04DA ; G 483 ; B 58 -16 543 720 ;
+U -1 ; WX 600 ; N uni04DB ; G 484 ; B 70 -16 530 574 ;
+U -1 ; WX 600 ; N uni04DC ; G 485 ; B 8 0 592 703 ;
+U -1 ; WX 600 ; N uni04DD ; G 486 ; B 12 0 588 557 ;
+U -1 ; WX 600 ; N uni04DE ; G 487 ; B 92 -16 508 715 ;
+U -1 ; WX 600 ; N uni04DF ; G 488 ; B 104 -16 496 572 ;
+U -1 ; WX 600 ; N uni04E0 ; G 489 ; B 92 -16 508 577 ;
+U -1 ; WX 600 ; N uni04E1 ; G 490 ; B 104 -16 496 431 ;
+U -1 ; WX 600 ; N uni04E2 ; G 491 ; B 50 0 550 643 ;
+U -1 ; WX 600 ; N uni04E3 ; G 492 ; B 62 0 538 497 ;
+U -1 ; WX 600 ; N uni04E4 ; G 493 ; B 50 0 550 703 ;
+U -1 ; WX 600 ; N uni04E5 ; G 494 ; B 62 0 538 557 ;
+U -1 ; WX 600 ; N uni04E6 ; G 495 ; B 50 -16 549 732 ;
+U -1 ; WX 600 ; N uni04E7 ; G 496 ; B 72 -16 527 588 ;
+U -1 ; WX 600 ; N uni04E8 ; G 497 ; B 50 -16 550 577 ;
+U -1 ; WX 600 ; N uni04E9 ; G 498 ; B 72 -16 528 431 ;
+U -1 ; WX 600 ; N uni04EA ; G 499 ; B 50 -16 550 720 ;
+U -1 ; WX 600 ; N uni04EB ; G 500 ; B 72 -16 528 574 ;
+U -1 ; WX 600 ; N uni04EC ; G 501 ; B 64 -16 536 720 ;
+U -1 ; WX 600 ; N uni04ED ; G 502 ; B 74 -16 526 574 ;
+U -1 ; WX 600 ; N uni04EE ; G 503 ; B 50 0 549 662 ;
+U -1 ; WX 600 ; N uni04EF ; G 504 ; B 50 -186 550 515 ;
+U -1 ; WX 600 ; N uni04F0 ; G 505 ; B 50 0 549 720 ;
+U -1 ; WX 600 ; N uni04F1 ; G 506 ; B 50 -186 550 574 ;
+U -1 ; WX 600 ; N uni04F2 ; G 507 ; B 50 0 549 772 ;
+U -1 ; WX 600 ; N uni04F3 ; G 508 ; B 50 -186 550 626 ;
+U -1 ; WX 600 ; N uni04F4 ; G 509 ; B 60 0 540 720 ;
+U -1 ; WX 600 ; N uni04F5 ; G 510 ; B 96 0 504 574 ;
+U -1 ; WX 600 ; N uni04F8 ; G 511 ; B 8 0 592 720 ;
+U -1 ; WX 600 ; N uni04F9 ; G 512 ; B 10 0 590 574 ;
+U -1 ; WX 600 ; N uniF6C4 ; G 513 ; B 114 0 485 418 ;
+U -1 ; WX 600 ; N uniF6C5 ; G 514 ; B 81 -17 519 626 ;
+U -1 ; WX 600 ; N uniF6C6 ; G 515 ; B 52 -118 549 418 ;
+U -1 ; WX 600 ; N uniF6C7 ; G 516 ; B 64 0 536 418 ;
+U -1 ; WX 600 ; N uniF6C8 ; G 517 ; B 102 -2 497 418 ;
+U -1 ; WX 600 ; N Ccircumflex ; G 518 ; B 64 -16 536 780 ;
+U -1 ; WX 600 ; N ccircumflex ; G 519 ; B 74 -16 526 634 ;
+U -1 ; WX 600 ; N Cdotaccent ; G 520 ; B 64 -16 536 720 ;
+U -1 ; WX 600 ; N cdotaccent ; G 521 ; B 74 -16 526 574 ;
+U -1 ; WX 600 ; N Ebreve ; G 522 ; B 62 0 539 759 ;
+U -1 ; WX 600 ; N ebreve ; G 523 ; B 72 -16 528 613 ;
+U -1 ; WX 600 ; N Gcircumflex ; G 524 ; B 50 -16 550 780 ;
+U -1 ; WX 600 ; N gcircumflex ; G 525 ; B 50 -186 549 634 ;
+U -1 ; WX 600 ; N Gdotaccent ; G 526 ; B 50 -16 550 720 ;
+U -1 ; WX 600 ; N gdotaccent ; G 527 ; B 50 -186 549 574 ;
+U -1 ; WX 600 ; N Hcircumflex ; G 528 ; B 50 0 550 780 ;
+U -1 ; WX 600 ; N hcircumflex ; G 529 ; B 46 0 554 821 ;
+U -1 ; WX 600 ; N Hbar ; G 530 ; B 52 0 548 563 ;
+U -1 ; WX 600 ; N hbar ; G 531 ; B 46 0 554 604 ;
+U -1 ; WX 600 ; N Itilde ; G 532 ; B 114 0 486 715 ;
+U -1 ; WX 600 ; N itilde ; G 533 ; B 92 0 508 567 ;
+U -1 ; WX 600 ; N Ibreve ; G 534 ; B 114 0 486 759 ;
+U -1 ; WX 600 ; N ibreve ; G 535 ; B 92 0 508 613 ;
+U -1 ; WX 600 ; N IJ ; G 536 ; B 30 -16 570 563 ;
+U -1 ; WX 600 ; N ij ; G 537 ; B 120 -186 480 624 ;
+U -1 ; WX 600 ; N Jcircumflex ; G 538 ; B 50 -16 550 780 ;
+U -1 ; WX 600 ; N jcircumflex ; G 539 ; B 144 -186 457 725 ;
+U -1 ; WX 600 ; N kgreenlandic ; G 540 ; B 70 0 530 418 ;
+U -1 ; WX 600 ; N Ldot ; G 541 ; B 70 0 530 563 ;
+U -1 ; WX 600 ; N ldot ; G 542 ; B 80 0 521 604 ;
+U -1 ; WX 600 ; N napostrophe ; G 543 ; B 56 0 544 431 ;
+U -1 ; WX 600 ; N Eng ; G 544 ; B 30 0 570 563 ;
+U -1 ; WX 600 ; N eng ; G 545 ; B 56 0 544 431 ;
+U -1 ; WX 600 ; N Obreve ; G 546 ; B 50 -16 549 759 ;
+U -1 ; WX 600 ; N obreve ; G 547 ; B 8 -125 592 563 ;
+U -1 ; WX 600 ; N Scircumflex ; G 548 ; B 92 -16 508 780 ;
+U -1 ; WX 600 ; N scircumflex ; G 549 ; B 104 -16 496 634 ;
+U -1 ; WX 600 ; N Tbar ; G 550 ; B 72 0 527 563 ;
+U -1 ; WX 600 ; N tbar ; G 551 ; B 72 -16 528 563 ;
+U -1 ; WX 600 ; N Utilde ; G 552 ; B 40 -16 560 715 ;
+U -1 ; WX 600 ; N utilde ; G 553 ; B 50 -16 550 567 ;
+U -1 ; WX 600 ; N Ubreve ; G 554 ; B 40 -16 560 759 ;
+U -1 ; WX 600 ; N ubreve ; G 555 ; B 50 -16 550 613 ;
+U -1 ; WX 600 ; N Wcircumflex ; G 556 ; B 14 0 586 780 ;
+U -1 ; WX 600 ; N wcircumflex ; G 557 ; B 30 0 571 634 ;
+U -1 ; WX 600 ; N Ycircumflex ; G 558 ; B 40 0 559 780 ;
+U -1 ; WX 600 ; N ycircumflex ; G 559 ; B 50 -186 550 634 ;
+U -1 ; WX 600 ; N longs ; G 560 ; B 82 0 518 604 ;
+U -1 ; WX 600 ; N afii61352 ; G 561 ; B 12 -9 589 577 ;
+U -1 ; WX 600 ; N infinity ; G 562 ; B 34 192 566 432 ;
+U -1 ; WX 600 ; N uni1EF6 ; G 563 ; B 51 0 549 812 ;
+U -1 ; WX 600 ; N uni1EF7 ; G 564 ; B 51 -186 549 674 ;
+U -1 ; WX 600 ; N uni1EF4 ; G 565 ; B 51 -207 549 563 ;
+U -1 ; WX 600 ; N uni1EF5 ; G 566 ; B 51 -207 549 417 ;
+U -1 ; WX 600 ; N uni1EA2 ; G 567 ; B 9 0 591 812 ;
+U -1 ; WX 600 ; N uni1EA0 ; G 568 ; B 9 -207 591 563 ;
+U -1 ; WX 600 ; N uni1EA6 ; G 569 ; B 9 0 591 959 ;
+U -1 ; WX 600 ; N uni1EA4 ; G 570 ; B 9 0 591 959 ;
+U -1 ; WX 600 ; N uni1EAA ; G 571 ; B 9 0 591 918 ;
+U -1 ; WX 600 ; N uni1EA8 ; G 572 ; B 9 0 591 924 ;
+U -1 ; WX 600 ; N uni1EAC ; G 573 ; B 9 -207 591 784 ;
+U -1 ; WX 600 ; N uni1EB0 ; G 574 ; B 9 0 591 949 ;
+U -1 ; WX 600 ; N uni1EAE ; G 575 ; B 9 0 591 949 ;
+U -1 ; WX 600 ; N uni1EB4 ; G 576 ; B 9 0 591 919 ;
+U -1 ; WX 600 ; N uni1EB2 ; G 577 ; B 9 0 591 947 ;
+U -1 ; WX 600 ; N uni1EB6 ; G 578 ; B 9 -207 591 773 ;
+U -1 ; WX 600 ; N uni1EBC ; G 579 ; B 43 0 520 756 ;
+U -1 ; WX 600 ; N uni1EBA ; G 580 ; B 43 0 520 812 ;
+U -1 ; WX 600 ; N uni1EB8 ; G 581 ; B 43 -207 520 563 ;
+U -1 ; WX 600 ; N uni1EC0 ; G 582 ; B 43 0 520 959 ;
+U -1 ; WX 600 ; N uni1EBE ; G 583 ; B 43 0 520 959 ;
+U -1 ; WX 600 ; N uni1EC4 ; G 584 ; B 43 0 520 918 ;
+U -1 ; WX 600 ; N uni1EC2 ; G 585 ; B 43 0 540 924 ;
+U -1 ; WX 600 ; N uni1EC6 ; G 586 ; B 43 -207 520 784 ;
+U -1 ; WX 600 ; N uni1EC8 ; G 587 ; B 113 0 487 812 ;
+U -1 ; WX 600 ; N uni1EA3 ; G 588 ; B 72 -16 541 674 ;
+U -1 ; WX 600 ; N uni1EA1 ; G 589 ; B 72 -207 541 431 ;
+U -1 ; WX 600 ; N uni1EA7 ; G 590 ; B 72 -16 541 821 ;
+U -1 ; WX 600 ; N uni1EA5 ; G 591 ; B 72 -16 541 821 ;
+U -1 ; WX 600 ; N uni1EAB ; G 592 ; B 72 -16 541 780 ;
+U -1 ; WX 600 ; N uni1EA9 ; G 593 ; B 72 -16 541 786 ;
+U -1 ; WX 600 ; N uni1EAD ; G 594 ; B 72 -207 541 646 ;
+U -1 ; WX 600 ; N uni1EB1 ; G 595 ; B 72 -16 541 812 ;
+U -1 ; WX 600 ; N uni1EAF ; G 596 ; B 72 -16 541 812 ;
+U -1 ; WX 600 ; N uni1EB5 ; G 597 ; B 72 -16 541 782 ;
+U -1 ; WX 600 ; N uni1EB3 ; G 598 ; B 72 -16 541 810 ;
+U -1 ; WX 600 ; N uni1EB7 ; G 599 ; B 72 -207 541 636 ;
+U -1 ; WX 600 ; N uni1EBD ; G 600 ; B 63 -16 520 613 ;
+U -1 ; WX 600 ; N uni1EBB ; G 601 ; B 63 -16 520 674 ;
+U -1 ; WX 600 ; N uni1EB9 ; G 602 ; B 63 -207 520 431 ;
+U -1 ; WX 600 ; N uni1EC1 ; G 603 ; B 63 -16 520 821 ;
+U -1 ; WX 600 ; N uni1EBF ; G 604 ; B 63 -16 520 821 ;
+U -1 ; WX 600 ; N uni1EC5 ; G 605 ; B 63 -16 520 780 ;
+U -1 ; WX 600 ; N uni1EC3 ; G 606 ; B 63 -16 540 786 ;
+U -1 ; WX 600 ; N uni1EC7 ; G 607 ; B 63 -207 520 646 ;
+U -1 ; WX 600 ; N uni1EC9 ; G 608 ; B 92 0 508 674 ;
+U -1 ; WX 600 ; N uni1ECA ; G 609 ; B 113 -207 487 563 ;
+U -1 ; WX 600 ; N uni1ECE ; G 610 ; B 51 -16 549 812 ;
+U -1 ; WX 600 ; N uni1ECC ; G 611 ; B 51 -207 549 576 ;
+U -1 ; WX 600 ; N uni1ED2 ; G 612 ; B 51 -16 549 959 ;
+U -1 ; WX 600 ; N uni1ED0 ; G 613 ; B 51 -16 549 959 ;
+U -1 ; WX 600 ; N uni1ED6 ; G 614 ; B 51 -16 549 918 ;
+U -1 ; WX 600 ; N uni1ED4 ; G 615 ; B 51 -16 555 924 ;
+U -1 ; WX 600 ; N uni1ED8 ; G 616 ; B 51 -207 549 784 ;
+U -1 ; WX 600 ; N Ohorn ; G 617 ; B 51 -16 549 621 ;
+U -1 ; WX 600 ; N uni1EDC ; G 618 ; B 51 -16 549 816 ;
+U -1 ; WX 600 ; N uni1EDA ; G 619 ; B 51 -16 549 800 ;
+U -1 ; WX 600 ; N uni1EE0 ; G 620 ; B 51 -16 549 777 ;
+U -1 ; WX 600 ; N uni1EDE ; G 621 ; B 51 -16 549 826 ;
+U -1 ; WX 600 ; N uni1EE2 ; G 622 ; B 51 -207 549 621 ;
+U -1 ; WX 600 ; N uni1EE6 ; G 623 ; B 40 -16 560 812 ;
+U -1 ; WX 600 ; N uni1EE4 ; G 624 ; B 40 -207 560 563 ;
+U -1 ; WX 600 ; N Uhorn ; G 625 ; B 40 -16 578 621 ;
+U -1 ; WX 600 ; N uni1EEA ; G 626 ; B 40 -16 578 816 ;
+U -1 ; WX 600 ; N uni1EE8 ; G 627 ; B 40 -16 578 800 ;
+U -1 ; WX 600 ; N uni1EEE ; G 628 ; B 40 -16 578 777 ;
+U -1 ; WX 600 ; N uni1EEC ; G 629 ; B 40 -16 578 826 ;
+U -1 ; WX 600 ; N uni1EF0 ; G 630 ; B 40 -207 578 621 ;
+U -1 ; WX 600 ; N Ygrave ; G 631 ; B 51 0 549 792 ;
+U -1 ; WX 600 ; N uni1EF8 ; G 632 ; B 51 0 549 756 ;
+U -1 ; WX 600 ; N uni1ECB ; G 633 ; B 92 -207 508 624 ;
+U -1 ; WX 600 ; N uni1ECF ; G 634 ; B 72 -16 528 674 ;
+U -1 ; WX 600 ; N uni1ECD ; G 635 ; B 72 -207 528 431 ;
+U -1 ; WX 600 ; N uni1ED3 ; G 636 ; B 72 -16 528 821 ;
+U -1 ; WX 600 ; N uni1ED1 ; G 637 ; B 72 -16 528 821 ;
+U -1 ; WX 600 ; N uni1ED7 ; G 638 ; B 72 -16 528 780 ;
+U -1 ; WX 600 ; N uni1ED5 ; G 639 ; B 72 -16 540 786 ;
+U -1 ; WX 600 ; N uni1ED9 ; G 640 ; B 72 -207 528 646 ;
+U -1 ; WX 600 ; N ohorn ; G 641 ; B 72 -16 528 475 ;
+U -1 ; WX 600 ; N uni1EDD ; G 642 ; B 72 -16 528 700 ;
+U -1 ; WX 600 ; N uni1EDB ; G 643 ; B 72 -16 528 664 ;
+U -1 ; WX 600 ; N uni1EE1 ; G 644 ; B 72 -16 528 634 ;
+U -1 ; WX 600 ; N uni1EDF ; G 645 ; B 72 -16 528 690 ;
+U -1 ; WX 600 ; N uni1EE3 ; G 646 ; B 72 -207 528 475 ;
+U -1 ; WX 600 ; N uni1EE7 ; G 647 ; B 43 -16 541 674 ;
+U -1 ; WX 600 ; N uni1EE5 ; G 648 ; B 43 -207 541 417 ;
+U -1 ; WX 600 ; N uhorn ; G 649 ; B 43 -16 559 475 ;
+U -1 ; WX 600 ; N uni1EEB ; G 650 ; B 43 -16 559 700 ;
+U -1 ; WX 600 ; N uni1EE9 ; G 651 ; B 43 -16 559 664 ;
+U -1 ; WX 600 ; N uni1EEF ; G 652 ; B 43 -16 559 634 ;
+U -1 ; WX 600 ; N uni1EED ; G 653 ; B 43 -16 559 690 ;
+U -1 ; WX 600 ; N uni1EF1 ; G 654 ; B 43 -207 559 475 ;
+U -1 ; WX 600 ; N ygrave ; G 655 ; B 51 -186 549 655 ;
+U -1 ; WX 600 ; N uni1EF9 ; G 656 ; B 51 -186 549 613 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Times-Bold.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Times-Bold.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Times-Bold.afm	(revision 2000)
@@ -0,0 +1,2588 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+Comment Creation Date: Thu May  1 12:52:56 1997
+Comment UniqueID 43065
+Comment VMusage 41636 52661
+FontName Times-Bold
+FullName Times Bold
+FamilyName Times
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+CharacterSet ExtendedRoman
+FontBBox -168 -218 1000 935 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 002.000
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 676
+XHeight 461
+Ascender 683
+Descender -217
+StdHW 44
+StdVW 139
+StartCharMetrics 315
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 81 -13 251 691 ;
+C 34 ; WX 555 ; N quotedbl ; B 83 404 472 691 ;
+C 35 ; WX 500 ; N numbersign ; B 4 0 496 700 ;
+C 36 ; WX 500 ; N dollar ; B 29 -99 472 750 ;
+C 37 ; WX 1000 ; N percent ; B 124 -14 877 692 ;
+C 38 ; WX 833 ; N ampersand ; B 62 -16 787 691 ;
+C 39 ; WX 333 ; N quoteright ; B 79 356 263 691 ;
+C 40 ; WX 333 ; N parenleft ; B 46 -168 306 694 ;
+C 41 ; WX 333 ; N parenright ; B 27 -168 287 694 ;
+C 42 ; WX 500 ; N asterisk ; B 56 255 447 691 ;
+C 43 ; WX 570 ; N plus ; B 33 0 537 506 ;
+C 44 ; WX 250 ; N comma ; B 39 -180 223 155 ;
+C 45 ; WX 333 ; N hyphen ; B 44 171 287 287 ;
+C 46 ; WX 250 ; N period ; B 41 -13 210 156 ;
+C 47 ; WX 278 ; N slash ; B -24 -19 302 691 ;
+C 48 ; WX 500 ; N zero ; B 24 -13 476 688 ;
+C 49 ; WX 500 ; N one ; B 65 0 442 688 ;
+C 50 ; WX 500 ; N two ; B 17 0 478 688 ;
+C 51 ; WX 500 ; N three ; B 16 -14 468 688 ;
+C 52 ; WX 500 ; N four ; B 19 0 475 688 ;
+C 53 ; WX 500 ; N five ; B 22 -8 470 676 ;
+C 54 ; WX 500 ; N six ; B 28 -13 475 688 ;
+C 55 ; WX 500 ; N seven ; B 17 0 477 676 ;
+C 56 ; WX 500 ; N eight ; B 28 -13 472 688 ;
+C 57 ; WX 500 ; N nine ; B 26 -13 473 688 ;
+C 58 ; WX 333 ; N colon ; B 82 -13 251 472 ;
+C 59 ; WX 333 ; N semicolon ; B 82 -180 266 472 ;
+C 60 ; WX 570 ; N less ; B 31 -8 539 514 ;
+C 61 ; WX 570 ; N equal ; B 33 107 537 399 ;
+C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ;
+C 63 ; WX 500 ; N question ; B 57 -13 445 689 ;
+C 64 ; WX 930 ; N at ; B 108 -19 822 691 ;
+C 65 ; WX 722 ; N A ; B 9 0 689 690 ;
+C 66 ; WX 667 ; N B ; B 16 0 619 676 ;
+C 67 ; WX 722 ; N C ; B 49 -19 687 691 ;
+C 68 ; WX 722 ; N D ; B 14 0 690 676 ;
+C 69 ; WX 667 ; N E ; B 16 0 641 676 ;
+C 70 ; WX 611 ; N F ; B 16 0 583 676 ;
+C 71 ; WX 778 ; N G ; B 37 -19 755 691 ;
+C 72 ; WX 778 ; N H ; B 21 0 759 676 ;
+C 73 ; WX 389 ; N I ; B 20 0 370 676 ;
+C 74 ; WX 500 ; N J ; B 3 -96 479 676 ;
+C 75 ; WX 778 ; N K ; B 30 0 769 676 ;
+C 76 ; WX 667 ; N L ; B 19 0 638 676 ;
+C 77 ; WX 944 ; N M ; B 14 0 921 676 ;
+C 78 ; WX 722 ; N N ; B 16 -18 701 676 ;
+C 79 ; WX 778 ; N O ; B 35 -19 743 691 ;
+C 80 ; WX 611 ; N P ; B 16 0 600 676 ;
+C 81 ; WX 778 ; N Q ; B 35 -176 743 691 ;
+C 82 ; WX 722 ; N R ; B 26 0 715 676 ;
+C 83 ; WX 556 ; N S ; B 35 -19 513 692 ;
+C 84 ; WX 667 ; N T ; B 31 0 636 676 ;
+C 85 ; WX 722 ; N U ; B 16 -19 701 676 ;
+C 86 ; WX 722 ; N V ; B 16 -18 701 676 ;
+C 87 ; WX 1000 ; N W ; B 19 -15 981 676 ;
+C 88 ; WX 722 ; N X ; B 16 0 699 676 ;
+C 89 ; WX 722 ; N Y ; B 15 0 699 676 ;
+C 90 ; WX 667 ; N Z ; B 28 0 634 676 ;
+C 91 ; WX 333 ; N bracketleft ; B 67 -149 301 678 ;
+C 92 ; WX 278 ; N backslash ; B -25 -19 303 691 ;
+C 93 ; WX 333 ; N bracketright ; B 32 -149 266 678 ;
+C 94 ; WX 581 ; N asciicircum ; B 73 311 509 676 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 333 ; N quoteleft ; B 70 356 254 691 ;
+C 97 ; WX 500 ; N a ; B 25 -14 488 473 ;
+C 98 ; WX 556 ; N b ; B 17 -14 521 676 ;
+C 99 ; WX 444 ; N c ; B 25 -14 430 473 ;
+C 100 ; WX 556 ; N d ; B 25 -14 534 676 ;
+C 101 ; WX 444 ; N e ; B 25 -14 426 473 ;
+C 102 ; WX 333 ; N f ; B 14 0 389 691 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 28 -206 483 473 ;
+C 104 ; WX 556 ; N h ; B 16 0 534 676 ;
+C 105 ; WX 278 ; N i ; B 16 0 255 691 ;
+C 106 ; WX 333 ; N j ; B -57 -203 263 691 ;
+C 107 ; WX 556 ; N k ; B 22 0 543 676 ;
+C 108 ; WX 278 ; N l ; B 16 0 255 676 ;
+C 109 ; WX 833 ; N m ; B 16 0 814 473 ;
+C 110 ; WX 556 ; N n ; B 21 0 539 473 ;
+C 111 ; WX 500 ; N o ; B 25 -14 476 473 ;
+C 112 ; WX 556 ; N p ; B 19 -205 524 473 ;
+C 113 ; WX 556 ; N q ; B 34 -205 536 473 ;
+C 114 ; WX 444 ; N r ; B 29 0 434 473 ;
+C 115 ; WX 389 ; N s ; B 25 -14 361 473 ;
+C 116 ; WX 333 ; N t ; B 20 -12 332 630 ;
+C 117 ; WX 556 ; N u ; B 16 -14 537 461 ;
+C 118 ; WX 500 ; N v ; B 21 -14 485 461 ;
+C 119 ; WX 722 ; N w ; B 23 -14 707 461 ;
+C 120 ; WX 500 ; N x ; B 12 0 484 461 ;
+C 121 ; WX 500 ; N y ; B 16 -205 480 461 ;
+C 122 ; WX 444 ; N z ; B 21 0 420 461 ;
+C 123 ; WX 394 ; N braceleft ; B 22 -175 340 698 ;
+C 124 ; WX 220 ; N bar ; B 66 -218 154 782 ;
+C 125 ; WX 394 ; N braceright ; B 54 -175 372 698 ;
+C 126 ; WX 520 ; N asciitilde ; B 29 173 491 333 ;
+C 161 ; WX 333 ; N exclamdown ; B 82 -203 252 501 ;
+C 162 ; WX 500 ; N cent ; B 53 -140 458 588 ;
+C 163 ; WX 500 ; N sterling ; B 21 -14 477 684 ;
+C 164 ; WX 167 ; N fraction ; B -168 -12 329 688 ;
+C 165 ; WX 500 ; N yen ; B -64 0 547 676 ;
+C 166 ; WX 500 ; N florin ; B 0 -155 498 706 ;
+C 167 ; WX 500 ; N section ; B 57 -132 443 691 ;
+C 168 ; WX 500 ; N currency ; B -26 61 526 613 ;
+C 169 ; WX 278 ; N quotesingle ; B 75 404 204 691 ;
+C 170 ; WX 500 ; N quotedblleft ; B 32 356 486 691 ;
+C 171 ; WX 500 ; N guillemotleft ; B 23 36 473 415 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 51 36 305 415 ;
+C 173 ; WX 333 ; N guilsinglright ; B 28 36 282 415 ;
+C 174 ; WX 556 ; N fi ; B 14 0 536 691 ;
+C 175 ; WX 556 ; N fl ; B 14 0 536 691 ;
+C 177 ; WX 500 ; N endash ; B 0 181 500 271 ;
+C 178 ; WX 500 ; N dagger ; B 47 -134 453 691 ;
+C 179 ; WX 500 ; N daggerdbl ; B 45 -132 456 691 ;
+C 180 ; WX 250 ; N periodcentered ; B 41 248 210 417 ;
+C 182 ; WX 540 ; N paragraph ; B 0 -186 519 676 ;
+C 183 ; WX 350 ; N bullet ; B 35 198 315 478 ;
+C 184 ; WX 333 ; N quotesinglbase ; B 79 -180 263 155 ;
+C 185 ; WX 500 ; N quotedblbase ; B 14 -180 468 155 ;
+C 186 ; WX 500 ; N quotedblright ; B 14 356 468 691 ;
+C 187 ; WX 500 ; N guillemotright ; B 27 36 477 415 ;
+C 188 ; WX 1000 ; N ellipsis ; B 82 -13 917 156 ;
+C 189 ; WX 1000 ; N perthousand ; B 7 -29 995 706 ;
+C 191 ; WX 500 ; N questiondown ; B 55 -201 443 501 ;
+C 193 ; WX 333 ; N grave ; B 8 528 246 713 ;
+C 194 ; WX 333 ; N acute ; B 86 528 324 713 ;
+C 195 ; WX 333 ; N circumflex ; B -2 528 335 704 ;
+C 196 ; WX 333 ; N tilde ; B -16 547 349 674 ;
+C 197 ; WX 333 ; N macron ; B 1 565 331 637 ;
+C 198 ; WX 333 ; N breve ; B 15 528 318 691 ;
+C 199 ; WX 333 ; N dotaccent ; B 103 536 258 691 ;
+C 200 ; WX 333 ; N dieresis ; B -2 537 335 667 ;
+C 202 ; WX 333 ; N ring ; B 60 527 273 740 ;
+C 203 ; WX 333 ; N cedilla ; B 68 -218 294 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -13 528 425 713 ;
+C 206 ; WX 333 ; N ogonek ; B 90 -193 319 24 ;
+C 207 ; WX 333 ; N caron ; B -2 528 335 704 ;
+C 208 ; WX 1000 ; N emdash ; B 0 181 1000 271 ;
+C 225 ; WX 1000 ; N AE ; B 4 0 951 676 ;
+C 227 ; WX 300 ; N ordfeminine ; B -1 397 301 688 ;
+C 232 ; WX 667 ; N Lslash ; B 19 0 638 676 ;
+C 233 ; WX 778 ; N Oslash ; B 35 -74 743 737 ;
+C 234 ; WX 1000 ; N OE ; B 22 -5 981 684 ;
+C 235 ; WX 330 ; N ordmasculine ; B 18 397 312 688 ;
+C 241 ; WX 722 ; N ae ; B 33 -14 693 473 ;
+C 245 ; WX 278 ; N dotlessi ; B 16 0 255 461 ;
+C 248 ; WX 278 ; N lslash ; B -22 0 303 676 ;
+C 249 ; WX 500 ; N oslash ; B 25 -92 476 549 ;
+C 250 ; WX 722 ; N oe ; B 22 -14 696 473 ;
+C 251 ; WX 556 ; N germandbls ; B 19 -12 517 691 ;
+C -1 ; WX 389 ; N Idieresis ; B 20 0 370 877 ;
+C -1 ; WX 444 ; N eacute ; B 25 -14 426 713 ;
+C -1 ; WX 500 ; N abreve ; B 25 -14 488 691 ;
+C -1 ; WX 556 ; N uhungarumlaut ; B 16 -14 557 713 ;
+C -1 ; WX 444 ; N ecaron ; B 25 -14 426 704 ;
+C -1 ; WX 722 ; N Ydieresis ; B 15 0 699 877 ;
+C -1 ; WX 570 ; N divide ; B 33 -31 537 537 ;
+C -1 ; WX 722 ; N Yacute ; B 15 0 699 923 ;
+C -1 ; WX 722 ; N Acircumflex ; B 9 0 689 914 ;
+C -1 ; WX 500 ; N aacute ; B 25 -14 488 713 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 16 -19 701 914 ;
+C -1 ; WX 500 ; N yacute ; B 16 -205 480 713 ;
+C -1 ; WX 389 ; N scommaaccent ; B 25 -218 361 473 ;
+C -1 ; WX 444 ; N ecircumflex ; B 25 -14 426 704 ;
+C -1 ; WX 722 ; N Uring ; B 16 -19 701 935 ;
+C -1 ; WX 722 ; N Udieresis ; B 16 -19 701 877 ;
+C -1 ; WX 500 ; N aogonek ; B 25 -193 504 473 ;
+C -1 ; WX 722 ; N Uacute ; B 16 -19 701 923 ;
+C -1 ; WX 556 ; N uogonek ; B 16 -193 539 461 ;
+C -1 ; WX 667 ; N Edieresis ; B 16 0 641 877 ;
+C -1 ; WX 722 ; N Dcroat ; B 6 0 690 676 ;
+C -1 ; WX 250 ; N commaaccent ; B 47 -218 203 -50 ;
+C -1 ; WX 747 ; N copyright ; B 26 -19 721 691 ;
+C -1 ; WX 667 ; N Emacron ; B 16 0 641 847 ;
+C -1 ; WX 444 ; N ccaron ; B 25 -14 430 704 ;
+C -1 ; WX 500 ; N aring ; B 25 -14 488 740 ;
+C -1 ; WX 722 ; N Ncommaaccent ; B 16 -188 701 676 ;
+C -1 ; WX 278 ; N lacute ; B 16 0 297 923 ;
+C -1 ; WX 500 ; N agrave ; B 25 -14 488 713 ;
+C -1 ; WX 667 ; N Tcommaaccent ; B 31 -218 636 676 ;
+C -1 ; WX 722 ; N Cacute ; B 49 -19 687 923 ;
+C -1 ; WX 500 ; N atilde ; B 25 -14 488 674 ;
+C -1 ; WX 667 ; N Edotaccent ; B 16 0 641 901 ;
+C -1 ; WX 389 ; N scaron ; B 25 -14 363 704 ;
+C -1 ; WX 389 ; N scedilla ; B 25 -218 361 473 ;
+C -1 ; WX 278 ; N iacute ; B 16 0 289 713 ;
+C -1 ; WX 494 ; N lozenge ; B 10 0 484 745 ;
+C -1 ; WX 722 ; N Rcaron ; B 26 0 715 914 ;
+C -1 ; WX 778 ; N Gcommaaccent ; B 37 -218 755 691 ;
+C -1 ; WX 556 ; N ucircumflex ; B 16 -14 537 704 ;
+C -1 ; WX 500 ; N acircumflex ; B 25 -14 488 704 ;
+C -1 ; WX 722 ; N Amacron ; B 9 0 689 847 ;
+C -1 ; WX 444 ; N rcaron ; B 29 0 434 704 ;
+C -1 ; WX 444 ; N ccedilla ; B 25 -218 430 473 ;
+C -1 ; WX 667 ; N Zdotaccent ; B 28 0 634 901 ;
+C -1 ; WX 611 ; N Thorn ; B 16 0 600 676 ;
+C -1 ; WX 778 ; N Omacron ; B 35 -19 743 847 ;
+C -1 ; WX 722 ; N Racute ; B 26 0 715 923 ;
+C -1 ; WX 556 ; N Sacute ; B 35 -19 513 923 ;
+C -1 ; WX 672 ; N dcaron ; B 25 -14 681 682 ;
+C -1 ; WX 722 ; N Umacron ; B 16 -19 701 847 ;
+C -1 ; WX 556 ; N uring ; B 16 -14 537 740 ;
+C -1 ; WX 300 ; N threesuperior ; B 3 268 297 688 ;
+C -1 ; WX 778 ; N Ograve ; B 35 -19 743 923 ;
+C -1 ; WX 722 ; N Agrave ; B 9 0 689 923 ;
+C -1 ; WX 722 ; N Abreve ; B 9 0 689 901 ;
+C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ;
+C -1 ; WX 556 ; N uacute ; B 16 -14 537 713 ;
+C -1 ; WX 667 ; N Tcaron ; B 31 0 636 914 ;
+C -1 ; WX 494 ; N partialdiff ; B 11 -21 494 750 ;
+C -1 ; WX 500 ; N ydieresis ; B 16 -205 480 667 ;
+C -1 ; WX 722 ; N Nacute ; B 16 -18 701 923 ;
+C -1 ; WX 278 ; N icircumflex ; B -37 0 300 704 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 16 0 641 914 ;
+C -1 ; WX 500 ; N adieresis ; B 25 -14 488 667 ;
+C -1 ; WX 444 ; N edieresis ; B 25 -14 426 667 ;
+C -1 ; WX 444 ; N cacute ; B 25 -14 430 713 ;
+C -1 ; WX 556 ; N nacute ; B 21 0 539 713 ;
+C -1 ; WX 556 ; N umacron ; B 16 -14 537 637 ;
+C -1 ; WX 722 ; N Ncaron ; B 16 -18 701 914 ;
+C -1 ; WX 389 ; N Iacute ; B 20 0 370 923 ;
+C -1 ; WX 570 ; N plusminus ; B 33 0 537 506 ;
+C -1 ; WX 220 ; N brokenbar ; B 66 -143 154 707 ;
+C -1 ; WX 747 ; N registered ; B 26 -19 721 691 ;
+C -1 ; WX 778 ; N Gbreve ; B 37 -19 755 901 ;
+C -1 ; WX 389 ; N Idotaccent ; B 20 0 370 901 ;
+C -1 ; WX 600 ; N summation ; B 14 -10 585 706 ;
+C -1 ; WX 667 ; N Egrave ; B 16 0 641 923 ;
+C -1 ; WX 444 ; N racute ; B 29 0 434 713 ;
+C -1 ; WX 500 ; N omacron ; B 25 -14 476 637 ;
+C -1 ; WX 667 ; N Zacute ; B 28 0 634 923 ;
+C -1 ; WX 667 ; N Zcaron ; B 28 0 634 914 ;
+C -1 ; WX 549 ; N greaterequal ; B 26 0 523 704 ;
+C -1 ; WX 722 ; N Eth ; B 6 0 690 676 ;
+C -1 ; WX 722 ; N Ccedilla ; B 49 -218 687 691 ;
+C -1 ; WX 278 ; N lcommaaccent ; B 16 -218 255 676 ;
+C -1 ; WX 416 ; N tcaron ; B 20 -12 425 815 ;
+C -1 ; WX 444 ; N eogonek ; B 25 -193 426 473 ;
+C -1 ; WX 722 ; N Uogonek ; B 16 -193 701 676 ;
+C -1 ; WX 722 ; N Aacute ; B 9 0 689 923 ;
+C -1 ; WX 722 ; N Adieresis ; B 9 0 689 877 ;
+C -1 ; WX 444 ; N egrave ; B 25 -14 426 713 ;
+C -1 ; WX 444 ; N zacute ; B 21 0 420 713 ;
+C -1 ; WX 278 ; N iogonek ; B 16 -193 274 691 ;
+C -1 ; WX 778 ; N Oacute ; B 35 -19 743 923 ;
+C -1 ; WX 500 ; N oacute ; B 25 -14 476 713 ;
+C -1 ; WX 500 ; N amacron ; B 25 -14 488 637 ;
+C -1 ; WX 389 ; N sacute ; B 25 -14 361 713 ;
+C -1 ; WX 278 ; N idieresis ; B -37 0 300 667 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 35 -19 743 914 ;
+C -1 ; WX 722 ; N Ugrave ; B 16 -19 701 923 ;
+C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
+C -1 ; WX 556 ; N thorn ; B 19 -205 524 676 ;
+C -1 ; WX 300 ; N twosuperior ; B 0 275 300 688 ;
+C -1 ; WX 778 ; N Odieresis ; B 35 -19 743 877 ;
+C -1 ; WX 556 ; N mu ; B 33 -206 536 461 ;
+C -1 ; WX 278 ; N igrave ; B -27 0 255 713 ;
+C -1 ; WX 500 ; N ohungarumlaut ; B 25 -14 529 713 ;
+C -1 ; WX 667 ; N Eogonek ; B 16 -193 644 676 ;
+C -1 ; WX 556 ; N dcroat ; B 25 -14 534 676 ;
+C -1 ; WX 750 ; N threequarters ; B 23 -12 733 688 ;
+C -1 ; WX 556 ; N Scedilla ; B 35 -218 513 692 ;
+C -1 ; WX 394 ; N lcaron ; B 16 0 412 682 ;
+C -1 ; WX 778 ; N Kcommaaccent ; B 30 -218 769 676 ;
+C -1 ; WX 667 ; N Lacute ; B 19 0 638 923 ;
+C -1 ; WX 1000 ; N trademark ; B 24 271 977 676 ;
+C -1 ; WX 444 ; N edotaccent ; B 25 -14 426 691 ;
+C -1 ; WX 389 ; N Igrave ; B 20 0 370 923 ;
+C -1 ; WX 389 ; N Imacron ; B 20 0 370 847 ;
+C -1 ; WX 667 ; N Lcaron ; B 19 0 652 682 ;
+C -1 ; WX 750 ; N onehalf ; B -7 -12 775 688 ;
+C -1 ; WX 549 ; N lessequal ; B 29 0 526 704 ;
+C -1 ; WX 500 ; N ocircumflex ; B 25 -14 476 704 ;
+C -1 ; WX 556 ; N ntilde ; B 21 0 539 674 ;
+C -1 ; WX 722 ; N Uhungarumlaut ; B 16 -19 701 923 ;
+C -1 ; WX 667 ; N Eacute ; B 16 0 641 923 ;
+C -1 ; WX 444 ; N emacron ; B 25 -14 426 637 ;
+C -1 ; WX 500 ; N gbreve ; B 28 -206 483 691 ;
+C -1 ; WX 750 ; N onequarter ; B 28 -12 743 688 ;
+C -1 ; WX 556 ; N Scaron ; B 35 -19 513 914 ;
+C -1 ; WX 556 ; N Scommaaccent ; B 35 -218 513 692 ;
+C -1 ; WX 778 ; N Ohungarumlaut ; B 35 -19 743 923 ;
+C -1 ; WX 400 ; N degree ; B 57 402 343 688 ;
+C -1 ; WX 500 ; N ograve ; B 25 -14 476 713 ;
+C -1 ; WX 722 ; N Ccaron ; B 49 -19 687 914 ;
+C -1 ; WX 556 ; N ugrave ; B 16 -14 537 713 ;
+C -1 ; WX 549 ; N radical ; B 10 -46 512 850 ;
+C -1 ; WX 722 ; N Dcaron ; B 14 0 690 914 ;
+C -1 ; WX 444 ; N rcommaaccent ; B 29 -218 434 473 ;
+C -1 ; WX 722 ; N Ntilde ; B 16 -18 701 884 ;
+C -1 ; WX 500 ; N otilde ; B 25 -14 476 674 ;
+C -1 ; WX 722 ; N Rcommaaccent ; B 26 -218 715 676 ;
+C -1 ; WX 667 ; N Lcommaaccent ; B 19 -218 638 676 ;
+C -1 ; WX 722 ; N Atilde ; B 9 0 689 884 ;
+C -1 ; WX 722 ; N Aogonek ; B 9 -193 699 690 ;
+C -1 ; WX 722 ; N Aring ; B 9 0 689 935 ;
+C -1 ; WX 778 ; N Otilde ; B 35 -19 743 884 ;
+C -1 ; WX 444 ; N zdotaccent ; B 21 0 420 691 ;
+C -1 ; WX 667 ; N Ecaron ; B 16 0 641 914 ;
+C -1 ; WX 389 ; N Iogonek ; B 20 -193 370 676 ;
+C -1 ; WX 556 ; N kcommaaccent ; B 22 -218 543 676 ;
+C -1 ; WX 570 ; N minus ; B 33 209 537 297 ;
+C -1 ; WX 389 ; N Icircumflex ; B 20 0 370 914 ;
+C -1 ; WX 556 ; N ncaron ; B 21 0 539 704 ;
+C -1 ; WX 333 ; N tcommaaccent ; B 20 -218 332 630 ;
+C -1 ; WX 570 ; N logicalnot ; B 33 108 537 399 ;
+C -1 ; WX 500 ; N odieresis ; B 25 -14 476 667 ;
+C -1 ; WX 556 ; N udieresis ; B 16 -14 537 667 ;
+C -1 ; WX 549 ; N notequal ; B 15 -49 540 570 ;
+C -1 ; WX 500 ; N gcommaaccent ; B 28 -206 483 829 ;
+C -1 ; WX 500 ; N eth ; B 25 -14 476 691 ;
+C -1 ; WX 444 ; N zcaron ; B 21 0 420 704 ;
+C -1 ; WX 556 ; N ncommaaccent ; B 21 -218 539 473 ;
+C -1 ; WX 300 ; N onesuperior ; B 28 275 273 688 ;
+C -1 ; WX 278 ; N imacron ; B -8 0 272 637 ;
+C -1 ; WX 500 ; N Euro ; B 0 0 0 0 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 2242
+KPX A C -55
+KPX A Cacute -55
+KPX A Ccaron -55
+KPX A Ccedilla -55
+KPX A G -55
+KPX A Gbreve -55
+KPX A Gcommaaccent -55
+KPX A O -45
+KPX A Oacute -45
+KPX A Ocircumflex -45
+KPX A Odieresis -45
+KPX A Ograve -45
+KPX A Ohungarumlaut -45
+KPX A Omacron -45
+KPX A Oslash -45
+KPX A Otilde -45
+KPX A Q -45
+KPX A T -95
+KPX A Tcaron -95
+KPX A Tcommaaccent -95
+KPX A U -50
+KPX A Uacute -50
+KPX A Ucircumflex -50
+KPX A Udieresis -50
+KPX A Ugrave -50
+KPX A Uhungarumlaut -50
+KPX A Umacron -50
+KPX A Uogonek -50
+KPX A Uring -50
+KPX A V -145
+KPX A W -130
+KPX A Y -100
+KPX A Yacute -100
+KPX A Ydieresis -100
+KPX A p -25
+KPX A quoteright -74
+KPX A u -50
+KPX A uacute -50
+KPX A ucircumflex -50
+KPX A udieresis -50
+KPX A ugrave -50
+KPX A uhungarumlaut -50
+KPX A umacron -50
+KPX A uogonek -50
+KPX A uring -50
+KPX A v -100
+KPX A w -90
+KPX A y -74
+KPX A yacute -74
+KPX A ydieresis -74
+KPX Aacute C -55
+KPX Aacute Cacute -55
+KPX Aacute Ccaron -55
+KPX Aacute Ccedilla -55
+KPX Aacute G -55
+KPX Aacute Gbreve -55
+KPX Aacute Gcommaaccent -55
+KPX Aacute O -45
+KPX Aacute Oacute -45
+KPX Aacute Ocircumflex -45
+KPX Aacute Odieresis -45
+KPX Aacute Ograve -45
+KPX Aacute Ohungarumlaut -45
+KPX Aacute Omacron -45
+KPX Aacute Oslash -45
+KPX Aacute Otilde -45
+KPX Aacute Q -45
+KPX Aacute T -95
+KPX Aacute Tcaron -95
+KPX Aacute Tcommaaccent -95
+KPX Aacute U -50
+KPX Aacute Uacute -50
+KPX Aacute Ucircumflex -50
+KPX Aacute Udieresis -50
+KPX Aacute Ugrave -50
+KPX Aacute Uhungarumlaut -50
+KPX Aacute Umacron -50
+KPX Aacute Uogonek -50
+KPX Aacute Uring -50
+KPX Aacute V -145
+KPX Aacute W -130
+KPX Aacute Y -100
+KPX Aacute Yacute -100
+KPX Aacute Ydieresis -100
+KPX Aacute p -25
+KPX Aacute quoteright -74
+KPX Aacute u -50
+KPX Aacute uacute -50
+KPX Aacute ucircumflex -50
+KPX Aacute udieresis -50
+KPX Aacute ugrave -50
+KPX Aacute uhungarumlaut -50
+KPX Aacute umacron -50
+KPX Aacute uogonek -50
+KPX Aacute uring -50
+KPX Aacute v -100
+KPX Aacute w -90
+KPX Aacute y -74
+KPX Aacute yacute -74
+KPX Aacute ydieresis -74
+KPX Abreve C -55
+KPX Abreve Cacute -55
+KPX Abreve Ccaron -55
+KPX Abreve Ccedilla -55
+KPX Abreve G -55
+KPX Abreve Gbreve -55
+KPX Abreve Gcommaaccent -55
+KPX Abreve O -45
+KPX Abreve Oacute -45
+KPX Abreve Ocircumflex -45
+KPX Abreve Odieresis -45
+KPX Abreve Ograve -45
+KPX Abreve Ohungarumlaut -45
+KPX Abreve Omacron -45
+KPX Abreve Oslash -45
+KPX Abreve Otilde -45
+KPX Abreve Q -45
+KPX Abreve T -95
+KPX Abreve Tcaron -95
+KPX Abreve Tcommaaccent -95
+KPX Abreve U -50
+KPX Abreve Uacute -50
+KPX Abreve Ucircumflex -50
+KPX Abreve Udieresis -50
+KPX Abreve Ugrave -50
+KPX Abreve Uhungarumlaut -50
+KPX Abreve Umacron -50
+KPX Abreve Uogonek -50
+KPX Abreve Uring -50
+KPX Abreve V -145
+KPX Abreve W -130
+KPX Abreve Y -100
+KPX Abreve Yacute -100
+KPX Abreve Ydieresis -100
+KPX Abreve p -25
+KPX Abreve quoteright -74
+KPX Abreve u -50
+KPX Abreve uacute -50
+KPX Abreve ucircumflex -50
+KPX Abreve udieresis -50
+KPX Abreve ugrave -50
+KPX Abreve uhungarumlaut -50
+KPX Abreve umacron -50
+KPX Abreve uogonek -50
+KPX Abreve uring -50
+KPX Abreve v -100
+KPX Abreve w -90
+KPX Abreve y -74
+KPX Abreve yacute -74
+KPX Abreve ydieresis -74
+KPX Acircumflex C -55
+KPX Acircumflex Cacute -55
+KPX Acircumflex Ccaron -55
+KPX Acircumflex Ccedilla -55
+KPX Acircumflex G -55
+KPX Acircumflex Gbreve -55
+KPX Acircumflex Gcommaaccent -55
+KPX Acircumflex O -45
+KPX Acircumflex Oacute -45
+KPX Acircumflex Ocircumflex -45
+KPX Acircumflex Odieresis -45
+KPX Acircumflex Ograve -45
+KPX Acircumflex Ohungarumlaut -45
+KPX Acircumflex Omacron -45
+KPX Acircumflex Oslash -45
+KPX Acircumflex Otilde -45
+KPX Acircumflex Q -45
+KPX Acircumflex T -95
+KPX Acircumflex Tcaron -95
+KPX Acircumflex Tcommaaccent -95
+KPX Acircumflex U -50
+KPX Acircumflex Uacute -50
+KPX Acircumflex Ucircumflex -50
+KPX Acircumflex Udieresis -50
+KPX Acircumflex Ugrave -50
+KPX Acircumflex Uhungarumlaut -50
+KPX Acircumflex Umacron -50
+KPX Acircumflex Uogonek -50
+KPX Acircumflex Uring -50
+KPX Acircumflex V -145
+KPX Acircumflex W -130
+KPX Acircumflex Y -100
+KPX Acircumflex Yacute -100
+KPX Acircumflex Ydieresis -100
+KPX Acircumflex p -25
+KPX Acircumflex quoteright -74
+KPX Acircumflex u -50
+KPX Acircumflex uacute -50
+KPX Acircumflex ucircumflex -50
+KPX Acircumflex udieresis -50
+KPX Acircumflex ugrave -50
+KPX Acircumflex uhungarumlaut -50
+KPX Acircumflex umacron -50
+KPX Acircumflex uogonek -50
+KPX Acircumflex uring -50
+KPX Acircumflex v -100
+KPX Acircumflex w -90
+KPX Acircumflex y -74
+KPX Acircumflex yacute -74
+KPX Acircumflex ydieresis -74
+KPX Adieresis C -55
+KPX Adieresis Cacute -55
+KPX Adieresis Ccaron -55
+KPX Adieresis Ccedilla -55
+KPX Adieresis G -55
+KPX Adieresis Gbreve -55
+KPX Adieresis Gcommaaccent -55
+KPX Adieresis O -45
+KPX Adieresis Oacute -45
+KPX Adieresis Ocircumflex -45
+KPX Adieresis Odieresis -45
+KPX Adieresis Ograve -45
+KPX Adieresis Ohungarumlaut -45
+KPX Adieresis Omacron -45
+KPX Adieresis Oslash -45
+KPX Adieresis Otilde -45
+KPX Adieresis Q -45
+KPX Adieresis T -95
+KPX Adieresis Tcaron -95
+KPX Adieresis Tcommaaccent -95
+KPX Adieresis U -50
+KPX Adieresis Uacute -50
+KPX Adieresis Ucircumflex -50
+KPX Adieresis Udieresis -50
+KPX Adieresis Ugrave -50
+KPX Adieresis Uhungarumlaut -50
+KPX Adieresis Umacron -50
+KPX Adieresis Uogonek -50
+KPX Adieresis Uring -50
+KPX Adieresis V -145
+KPX Adieresis W -130
+KPX Adieresis Y -100
+KPX Adieresis Yacute -100
+KPX Adieresis Ydieresis -100
+KPX Adieresis p -25
+KPX Adieresis quoteright -74
+KPX Adieresis u -50
+KPX Adieresis uacute -50
+KPX Adieresis ucircumflex -50
+KPX Adieresis udieresis -50
+KPX Adieresis ugrave -50
+KPX Adieresis uhungarumlaut -50
+KPX Adieresis umacron -50
+KPX Adieresis uogonek -50
+KPX Adieresis uring -50
+KPX Adieresis v -100
+KPX Adieresis w -90
+KPX Adieresis y -74
+KPX Adieresis yacute -74
+KPX Adieresis ydieresis -74
+KPX Agrave C -55
+KPX Agrave Cacute -55
+KPX Agrave Ccaron -55
+KPX Agrave Ccedilla -55
+KPX Agrave G -55
+KPX Agrave Gbreve -55
+KPX Agrave Gcommaaccent -55
+KPX Agrave O -45
+KPX Agrave Oacute -45
+KPX Agrave Ocircumflex -45
+KPX Agrave Odieresis -45
+KPX Agrave Ograve -45
+KPX Agrave Ohungarumlaut -45
+KPX Agrave Omacron -45
+KPX Agrave Oslash -45
+KPX Agrave Otilde -45
+KPX Agrave Q -45
+KPX Agrave T -95
+KPX Agrave Tcaron -95
+KPX Agrave Tcommaaccent -95
+KPX Agrave U -50
+KPX Agrave Uacute -50
+KPX Agrave Ucircumflex -50
+KPX Agrave Udieresis -50
+KPX Agrave Ugrave -50
+KPX Agrave Uhungarumlaut -50
+KPX Agrave Umacron -50
+KPX Agrave Uogonek -50
+KPX Agrave Uring -50
+KPX Agrave V -145
+KPX Agrave W -130
+KPX Agrave Y -100
+KPX Agrave Yacute -100
+KPX Agrave Ydieresis -100
+KPX Agrave p -25
+KPX Agrave quoteright -74
+KPX Agrave u -50
+KPX Agrave uacute -50
+KPX Agrave ucircumflex -50
+KPX Agrave udieresis -50
+KPX Agrave ugrave -50
+KPX Agrave uhungarumlaut -50
+KPX Agrave umacron -50
+KPX Agrave uogonek -50
+KPX Agrave uring -50
+KPX Agrave v -100
+KPX Agrave w -90
+KPX Agrave y -74
+KPX Agrave yacute -74
+KPX Agrave ydieresis -74
+KPX Amacron C -55
+KPX Amacron Cacute -55
+KPX Amacron Ccaron -55
+KPX Amacron Ccedilla -55
+KPX Amacron G -55
+KPX Amacron Gbreve -55
+KPX Amacron Gcommaaccent -55
+KPX Amacron O -45
+KPX Amacron Oacute -45
+KPX Amacron Ocircumflex -45
+KPX Amacron Odieresis -45
+KPX Amacron Ograve -45
+KPX Amacron Ohungarumlaut -45
+KPX Amacron Omacron -45
+KPX Amacron Oslash -45
+KPX Amacron Otilde -45
+KPX Amacron Q -45
+KPX Amacron T -95
+KPX Amacron Tcaron -95
+KPX Amacron Tcommaaccent -95
+KPX Amacron U -50
+KPX Amacron Uacute -50
+KPX Amacron Ucircumflex -50
+KPX Amacron Udieresis -50
+KPX Amacron Ugrave -50
+KPX Amacron Uhungarumlaut -50
+KPX Amacron Umacron -50
+KPX Amacron Uogonek -50
+KPX Amacron Uring -50
+KPX Amacron V -145
+KPX Amacron W -130
+KPX Amacron Y -100
+KPX Amacron Yacute -100
+KPX Amacron Ydieresis -100
+KPX Amacron p -25
+KPX Amacron quoteright -74
+KPX Amacron u -50
+KPX Amacron uacute -50
+KPX Amacron ucircumflex -50
+KPX Amacron udieresis -50
+KPX Amacron ugrave -50
+KPX Amacron uhungarumlaut -50
+KPX Amacron umacron -50
+KPX Amacron uogonek -50
+KPX Amacron uring -50
+KPX Amacron v -100
+KPX Amacron w -90
+KPX Amacron y -74
+KPX Amacron yacute -74
+KPX Amacron ydieresis -74
+KPX Aogonek C -55
+KPX Aogonek Cacute -55
+KPX Aogonek Ccaron -55
+KPX Aogonek Ccedilla -55
+KPX Aogonek G -55
+KPX Aogonek Gbreve -55
+KPX Aogonek Gcommaaccent -55
+KPX Aogonek O -45
+KPX Aogonek Oacute -45
+KPX Aogonek Ocircumflex -45
+KPX Aogonek Odieresis -45
+KPX Aogonek Ograve -45
+KPX Aogonek Ohungarumlaut -45
+KPX Aogonek Omacron -45
+KPX Aogonek Oslash -45
+KPX Aogonek Otilde -45
+KPX Aogonek Q -45
+KPX Aogonek T -95
+KPX Aogonek Tcaron -95
+KPX Aogonek Tcommaaccent -95
+KPX Aogonek U -50
+KPX Aogonek Uacute -50
+KPX Aogonek Ucircumflex -50
+KPX Aogonek Udieresis -50
+KPX Aogonek Ugrave -50
+KPX Aogonek Uhungarumlaut -50
+KPX Aogonek Umacron -50
+KPX Aogonek Uogonek -50
+KPX Aogonek Uring -50
+KPX Aogonek V -145
+KPX Aogonek W -130
+KPX Aogonek Y -100
+KPX Aogonek Yacute -100
+KPX Aogonek Ydieresis -100
+KPX Aogonek p -25
+KPX Aogonek quoteright -74
+KPX Aogonek u -50
+KPX Aogonek uacute -50
+KPX Aogonek ucircumflex -50
+KPX Aogonek udieresis -50
+KPX Aogonek ugrave -50
+KPX Aogonek uhungarumlaut -50
+KPX Aogonek umacron -50
+KPX Aogonek uogonek -50
+KPX Aogonek uring -50
+KPX Aogonek v -100
+KPX Aogonek w -90
+KPX Aogonek y -34
+KPX Aogonek yacute -34
+KPX Aogonek ydieresis -34
+KPX Aring C -55
+KPX Aring Cacute -55
+KPX Aring Ccaron -55
+KPX Aring Ccedilla -55
+KPX Aring G -55
+KPX Aring Gbreve -55
+KPX Aring Gcommaaccent -55
+KPX Aring O -45
+KPX Aring Oacute -45
+KPX Aring Ocircumflex -45
+KPX Aring Odieresis -45
+KPX Aring Ograve -45
+KPX Aring Ohungarumlaut -45
+KPX Aring Omacron -45
+KPX Aring Oslash -45
+KPX Aring Otilde -45
+KPX Aring Q -45
+KPX Aring T -95
+KPX Aring Tcaron -95
+KPX Aring Tcommaaccent -95
+KPX Aring U -50
+KPX Aring Uacute -50
+KPX Aring Ucircumflex -50
+KPX Aring Udieresis -50
+KPX Aring Ugrave -50
+KPX Aring Uhungarumlaut -50
+KPX Aring Umacron -50
+KPX Aring Uogonek -50
+KPX Aring Uring -50
+KPX Aring V -145
+KPX Aring W -130
+KPX Aring Y -100
+KPX Aring Yacute -100
+KPX Aring Ydieresis -100
+KPX Aring p -25
+KPX Aring quoteright -74
+KPX Aring u -50
+KPX Aring uacute -50
+KPX Aring ucircumflex -50
+KPX Aring udieresis -50
+KPX Aring ugrave -50
+KPX Aring uhungarumlaut -50
+KPX Aring umacron -50
+KPX Aring uogonek -50
+KPX Aring uring -50
+KPX Aring v -100
+KPX Aring w -90
+KPX Aring y -74
+KPX Aring yacute -74
+KPX Aring ydieresis -74
+KPX Atilde C -55
+KPX Atilde Cacute -55
+KPX Atilde Ccaron -55
+KPX Atilde Ccedilla -55
+KPX Atilde G -55
+KPX Atilde Gbreve -55
+KPX Atilde Gcommaaccent -55
+KPX Atilde O -45
+KPX Atilde Oacute -45
+KPX Atilde Ocircumflex -45
+KPX Atilde Odieresis -45
+KPX Atilde Ograve -45
+KPX Atilde Ohungarumlaut -45
+KPX Atilde Omacron -45
+KPX Atilde Oslash -45
+KPX Atilde Otilde -45
+KPX Atilde Q -45
+KPX Atilde T -95
+KPX Atilde Tcaron -95
+KPX Atilde Tcommaaccent -95
+KPX Atilde U -50
+KPX Atilde Uacute -50
+KPX Atilde Ucircumflex -50
+KPX Atilde Udieresis -50
+KPX Atilde Ugrave -50
+KPX Atilde Uhungarumlaut -50
+KPX Atilde Umacron -50
+KPX Atilde Uogonek -50
+KPX Atilde Uring -50
+KPX Atilde V -145
+KPX Atilde W -130
+KPX Atilde Y -100
+KPX Atilde Yacute -100
+KPX Atilde Ydieresis -100
+KPX Atilde p -25
+KPX Atilde quoteright -74
+KPX Atilde u -50
+KPX Atilde uacute -50
+KPX Atilde ucircumflex -50
+KPX Atilde udieresis -50
+KPX Atilde ugrave -50
+KPX Atilde uhungarumlaut -50
+KPX Atilde umacron -50
+KPX Atilde uogonek -50
+KPX Atilde uring -50
+KPX Atilde v -100
+KPX Atilde w -90
+KPX Atilde y -74
+KPX Atilde yacute -74
+KPX Atilde ydieresis -74
+KPX B A -30
+KPX B Aacute -30
+KPX B Abreve -30
+KPX B Acircumflex -30
+KPX B Adieresis -30
+KPX B Agrave -30
+KPX B Amacron -30
+KPX B Aogonek -30
+KPX B Aring -30
+KPX B Atilde -30
+KPX B U -10
+KPX B Uacute -10
+KPX B Ucircumflex -10
+KPX B Udieresis -10
+KPX B Ugrave -10
+KPX B Uhungarumlaut -10
+KPX B Umacron -10
+KPX B Uogonek -10
+KPX B Uring -10
+KPX D A -35
+KPX D Aacute -35
+KPX D Abreve -35
+KPX D Acircumflex -35
+KPX D Adieresis -35
+KPX D Agrave -35
+KPX D Amacron -35
+KPX D Aogonek -35
+KPX D Aring -35
+KPX D Atilde -35
+KPX D V -40
+KPX D W -40
+KPX D Y -40
+KPX D Yacute -40
+KPX D Ydieresis -40
+KPX D period -20
+KPX Dcaron A -35
+KPX Dcaron Aacute -35
+KPX Dcaron Abreve -35
+KPX Dcaron Acircumflex -35
+KPX Dcaron Adieresis -35
+KPX Dcaron Agrave -35
+KPX Dcaron Amacron -35
+KPX Dcaron Aogonek -35
+KPX Dcaron Aring -35
+KPX Dcaron Atilde -35
+KPX Dcaron V -40
+KPX Dcaron W -40
+KPX Dcaron Y -40
+KPX Dcaron Yacute -40
+KPX Dcaron Ydieresis -40
+KPX Dcaron period -20
+KPX Dcroat A -35
+KPX Dcroat Aacute -35
+KPX Dcroat Abreve -35
+KPX Dcroat Acircumflex -35
+KPX Dcroat Adieresis -35
+KPX Dcroat Agrave -35
+KPX Dcroat Amacron -35
+KPX Dcroat Aogonek -35
+KPX Dcroat Aring -35
+KPX Dcroat Atilde -35
+KPX Dcroat V -40
+KPX Dcroat W -40
+KPX Dcroat Y -40
+KPX Dcroat Yacute -40
+KPX Dcroat Ydieresis -40
+KPX Dcroat period -20
+KPX F A -90
+KPX F Aacute -90
+KPX F Abreve -90
+KPX F Acircumflex -90
+KPX F Adieresis -90
+KPX F Agrave -90
+KPX F Amacron -90
+KPX F Aogonek -90
+KPX F Aring -90
+KPX F Atilde -90
+KPX F a -25
+KPX F aacute -25
+KPX F abreve -25
+KPX F acircumflex -25
+KPX F adieresis -25
+KPX F agrave -25
+KPX F amacron -25
+KPX F aogonek -25
+KPX F aring -25
+KPX F atilde -25
+KPX F comma -92
+KPX F e -25
+KPX F eacute -25
+KPX F ecaron -25
+KPX F ecircumflex -25
+KPX F edieresis -25
+KPX F edotaccent -25
+KPX F egrave -25
+KPX F emacron -25
+KPX F eogonek -25
+KPX F o -25
+KPX F oacute -25
+KPX F ocircumflex -25
+KPX F odieresis -25
+KPX F ograve -25
+KPX F ohungarumlaut -25
+KPX F omacron -25
+KPX F oslash -25
+KPX F otilde -25
+KPX F period -110
+KPX J A -30
+KPX J Aacute -30
+KPX J Abreve -30
+KPX J Acircumflex -30
+KPX J Adieresis -30
+KPX J Agrave -30
+KPX J Amacron -30
+KPX J Aogonek -30
+KPX J Aring -30
+KPX J Atilde -30
+KPX J a -15
+KPX J aacute -15
+KPX J abreve -15
+KPX J acircumflex -15
+KPX J adieresis -15
+KPX J agrave -15
+KPX J amacron -15
+KPX J aogonek -15
+KPX J aring -15
+KPX J atilde -15
+KPX J e -15
+KPX J eacute -15
+KPX J ecaron -15
+KPX J ecircumflex -15
+KPX J edieresis -15
+KPX J edotaccent -15
+KPX J egrave -15
+KPX J emacron -15
+KPX J eogonek -15
+KPX J o -15
+KPX J oacute -15
+KPX J ocircumflex -15
+KPX J odieresis -15
+KPX J ograve -15
+KPX J ohungarumlaut -15
+KPX J omacron -15
+KPX J oslash -15
+KPX J otilde -15
+KPX J period -20
+KPX J u -15
+KPX J uacute -15
+KPX J ucircumflex -15
+KPX J udieresis -15
+KPX J ugrave -15
+KPX J uhungarumlaut -15
+KPX J umacron -15
+KPX J uogonek -15
+KPX J uring -15
+KPX K O -30
+KPX K Oacute -30
+KPX K Ocircumflex -30
+KPX K Odieresis -30
+KPX K Ograve -30
+KPX K Ohungarumlaut -30
+KPX K Omacron -30
+KPX K Oslash -30
+KPX K Otilde -30
+KPX K e -25
+KPX K eacute -25
+KPX K ecaron -25
+KPX K ecircumflex -25
+KPX K edieresis -25
+KPX K edotaccent -25
+KPX K egrave -25
+KPX K emacron -25
+KPX K eogonek -25
+KPX K o -25
+KPX K oacute -25
+KPX K ocircumflex -25
+KPX K odieresis -25
+KPX K ograve -25
+KPX K ohungarumlaut -25
+KPX K omacron -25
+KPX K oslash -25
+KPX K otilde -25
+KPX K u -15
+KPX K uacute -15
+KPX K ucircumflex -15
+KPX K udieresis -15
+KPX K ugrave -15
+KPX K uhungarumlaut -15
+KPX K umacron -15
+KPX K uogonek -15
+KPX K uring -15
+KPX K y -45
+KPX K yacute -45
+KPX K ydieresis -45
+KPX Kcommaaccent O -30
+KPX Kcommaaccent Oacute -30
+KPX Kcommaaccent Ocircumflex -30
+KPX Kcommaaccent Odieresis -30
+KPX Kcommaaccent Ograve -30
+KPX Kcommaaccent Ohungarumlaut -30
+KPX Kcommaaccent Omacron -30
+KPX Kcommaaccent Oslash -30
+KPX Kcommaaccent Otilde -30
+KPX Kcommaaccent e -25
+KPX Kcommaaccent eacute -25
+KPX Kcommaaccent ecaron -25
+KPX Kcommaaccent ecircumflex -25
+KPX Kcommaaccent edieresis -25
+KPX Kcommaaccent edotaccent -25
+KPX Kcommaaccent egrave -25
+KPX Kcommaaccent emacron -25
+KPX Kcommaaccent eogonek -25
+KPX Kcommaaccent o -25
+KPX Kcommaaccent oacute -25
+KPX Kcommaaccent ocircumflex -25
+KPX Kcommaaccent odieresis -25
+KPX Kcommaaccent ograve -25
+KPX Kcommaaccent ohungarumlaut -25
+KPX Kcommaaccent omacron -25
+KPX Kcommaaccent oslash -25
+KPX Kcommaaccent otilde -25
+KPX Kcommaaccent u -15
+KPX Kcommaaccent uacute -15
+KPX Kcommaaccent ucircumflex -15
+KPX Kcommaaccent udieresis -15
+KPX Kcommaaccent ugrave -15
+KPX Kcommaaccent uhungarumlaut -15
+KPX Kcommaaccent umacron -15
+KPX Kcommaaccent uogonek -15
+KPX Kcommaaccent uring -15
+KPX Kcommaaccent y -45
+KPX Kcommaaccent yacute -45
+KPX Kcommaaccent ydieresis -45
+KPX L T -92
+KPX L Tcaron -92
+KPX L Tcommaaccent -92
+KPX L V -92
+KPX L W -92
+KPX L Y -92
+KPX L Yacute -92
+KPX L Ydieresis -92
+KPX L quotedblright -20
+KPX L quoteright -110
+KPX L y -55
+KPX L yacute -55
+KPX L ydieresis -55
+KPX Lacute T -92
+KPX Lacute Tcaron -92
+KPX Lacute Tcommaaccent -92
+KPX Lacute V -92
+KPX Lacute W -92
+KPX Lacute Y -92
+KPX Lacute Yacute -92
+KPX Lacute Ydieresis -92
+KPX Lacute quotedblright -20
+KPX Lacute quoteright -110
+KPX Lacute y -55
+KPX Lacute yacute -55
+KPX Lacute ydieresis -55
+KPX Lcommaaccent T -92
+KPX Lcommaaccent Tcaron -92
+KPX Lcommaaccent Tcommaaccent -92
+KPX Lcommaaccent V -92
+KPX Lcommaaccent W -92
+KPX Lcommaaccent Y -92
+KPX Lcommaaccent Yacute -92
+KPX Lcommaaccent Ydieresis -92
+KPX Lcommaaccent quotedblright -20
+KPX Lcommaaccent quoteright -110
+KPX Lcommaaccent y -55
+KPX Lcommaaccent yacute -55
+KPX Lcommaaccent ydieresis -55
+KPX Lslash T -92
+KPX Lslash Tcaron -92
+KPX Lslash Tcommaaccent -92
+KPX Lslash V -92
+KPX Lslash W -92
+KPX Lslash Y -92
+KPX Lslash Yacute -92
+KPX Lslash Ydieresis -92
+KPX Lslash quotedblright -20
+KPX Lslash quoteright -110
+KPX Lslash y -55
+KPX Lslash yacute -55
+KPX Lslash ydieresis -55
+KPX N A -20
+KPX N Aacute -20
+KPX N Abreve -20
+KPX N Acircumflex -20
+KPX N Adieresis -20
+KPX N Agrave -20
+KPX N Amacron -20
+KPX N Aogonek -20
+KPX N Aring -20
+KPX N Atilde -20
+KPX Nacute A -20
+KPX Nacute Aacute -20
+KPX Nacute Abreve -20
+KPX Nacute Acircumflex -20
+KPX Nacute Adieresis -20
+KPX Nacute Agrave -20
+KPX Nacute Amacron -20
+KPX Nacute Aogonek -20
+KPX Nacute Aring -20
+KPX Nacute Atilde -20
+KPX Ncaron A -20
+KPX Ncaron Aacute -20
+KPX Ncaron Abreve -20
+KPX Ncaron Acircumflex -20
+KPX Ncaron Adieresis -20
+KPX Ncaron Agrave -20
+KPX Ncaron Amacron -20
+KPX Ncaron Aogonek -20
+KPX Ncaron Aring -20
+KPX Ncaron Atilde -20
+KPX Ncommaaccent A -20
+KPX Ncommaaccent Aacute -20
+KPX Ncommaaccent Abreve -20
+KPX Ncommaaccent Acircumflex -20
+KPX Ncommaaccent Adieresis -20
+KPX Ncommaaccent Agrave -20
+KPX Ncommaaccent Amacron -20
+KPX Ncommaaccent Aogonek -20
+KPX Ncommaaccent Aring -20
+KPX Ncommaaccent Atilde -20
+KPX Ntilde A -20
+KPX Ntilde Aacute -20
+KPX Ntilde Abreve -20
+KPX Ntilde Acircumflex -20
+KPX Ntilde Adieresis -20
+KPX Ntilde Agrave -20
+KPX Ntilde Amacron -20
+KPX Ntilde Aogonek -20
+KPX Ntilde Aring -20
+KPX Ntilde Atilde -20
+KPX O A -40
+KPX O Aacute -40
+KPX O Abreve -40
+KPX O Acircumflex -40
+KPX O Adieresis -40
+KPX O Agrave -40
+KPX O Amacron -40
+KPX O Aogonek -40
+KPX O Aring -40
+KPX O Atilde -40
+KPX O T -40
+KPX O Tcaron -40
+KPX O Tcommaaccent -40
+KPX O V -50
+KPX O W -50
+KPX O X -40
+KPX O Y -50
+KPX O Yacute -50
+KPX O Ydieresis -50
+KPX Oacute A -40
+KPX Oacute Aacute -40
+KPX Oacute Abreve -40
+KPX Oacute Acircumflex -40
+KPX Oacute Adieresis -40
+KPX Oacute Agrave -40
+KPX Oacute Amacron -40
+KPX Oacute Aogonek -40
+KPX Oacute Aring -40
+KPX Oacute Atilde -40
+KPX Oacute T -40
+KPX Oacute Tcaron -40
+KPX Oacute Tcommaaccent -40
+KPX Oacute V -50
+KPX Oacute W -50
+KPX Oacute X -40
+KPX Oacute Y -50
+KPX Oacute Yacute -50
+KPX Oacute Ydieresis -50
+KPX Ocircumflex A -40
+KPX Ocircumflex Aacute -40
+KPX Ocircumflex Abreve -40
+KPX Ocircumflex Acircumflex -40
+KPX Ocircumflex Adieresis -40
+KPX Ocircumflex Agrave -40
+KPX Ocircumflex Amacron -40
+KPX Ocircumflex Aogonek -40
+KPX Ocircumflex Aring -40
+KPX Ocircumflex Atilde -40
+KPX Ocircumflex T -40
+KPX Ocircumflex Tcaron -40
+KPX Ocircumflex Tcommaaccent -40
+KPX Ocircumflex V -50
+KPX Ocircumflex W -50
+KPX Ocircumflex X -40
+KPX Ocircumflex Y -50
+KPX Ocircumflex Yacute -50
+KPX Ocircumflex Ydieresis -50
+KPX Odieresis A -40
+KPX Odieresis Aacute -40
+KPX Odieresis Abreve -40
+KPX Odieresis Acircumflex -40
+KPX Odieresis Adieresis -40
+KPX Odieresis Agrave -40
+KPX Odieresis Amacron -40
+KPX Odieresis Aogonek -40
+KPX Odieresis Aring -40
+KPX Odieresis Atilde -40
+KPX Odieresis T -40
+KPX Odieresis Tcaron -40
+KPX Odieresis Tcommaaccent -40
+KPX Odieresis V -50
+KPX Odieresis W -50
+KPX Odieresis X -40
+KPX Odieresis Y -50
+KPX Odieresis Yacute -50
+KPX Odieresis Ydieresis -50
+KPX Ograve A -40
+KPX Ograve Aacute -40
+KPX Ograve Abreve -40
+KPX Ograve Acircumflex -40
+KPX Ograve Adieresis -40
+KPX Ograve Agrave -40
+KPX Ograve Amacron -40
+KPX Ograve Aogonek -40
+KPX Ograve Aring -40
+KPX Ograve Atilde -40
+KPX Ograve T -40
+KPX Ograve Tcaron -40
+KPX Ograve Tcommaaccent -40
+KPX Ograve V -50
+KPX Ograve W -50
+KPX Ograve X -40
+KPX Ograve Y -50
+KPX Ograve Yacute -50
+KPX Ograve Ydieresis -50
+KPX Ohungarumlaut A -40
+KPX Ohungarumlaut Aacute -40
+KPX Ohungarumlaut Abreve -40
+KPX Ohungarumlaut Acircumflex -40
+KPX Ohungarumlaut Adieresis -40
+KPX Ohungarumlaut Agrave -40
+KPX Ohungarumlaut Amacron -40
+KPX Ohungarumlaut Aogonek -40
+KPX Ohungarumlaut Aring -40
+KPX Ohungarumlaut Atilde -40
+KPX Ohungarumlaut T -40
+KPX Ohungarumlaut Tcaron -40
+KPX Ohungarumlaut Tcommaaccent -40
+KPX Ohungarumlaut V -50
+KPX Ohungarumlaut W -50
+KPX Ohungarumlaut X -40
+KPX Ohungarumlaut Y -50
+KPX Ohungarumlaut Yacute -50
+KPX Ohungarumlaut Ydieresis -50
+KPX Omacron A -40
+KPX Omacron Aacute -40
+KPX Omacron Abreve -40
+KPX Omacron Acircumflex -40
+KPX Omacron Adieresis -40
+KPX Omacron Agrave -40
+KPX Omacron Amacron -40
+KPX Omacron Aogonek -40
+KPX Omacron Aring -40
+KPX Omacron Atilde -40
+KPX Omacron T -40
+KPX Omacron Tcaron -40
+KPX Omacron Tcommaaccent -40
+KPX Omacron V -50
+KPX Omacron W -50
+KPX Omacron X -40
+KPX Omacron Y -50
+KPX Omacron Yacute -50
+KPX Omacron Ydieresis -50
+KPX Oslash A -40
+KPX Oslash Aacute -40
+KPX Oslash Abreve -40
+KPX Oslash Acircumflex -40
+KPX Oslash Adieresis -40
+KPX Oslash Agrave -40
+KPX Oslash Amacron -40
+KPX Oslash Aogonek -40
+KPX Oslash Aring -40
+KPX Oslash Atilde -40
+KPX Oslash T -40
+KPX Oslash Tcaron -40
+KPX Oslash Tcommaaccent -40
+KPX Oslash V -50
+KPX Oslash W -50
+KPX Oslash X -40
+KPX Oslash Y -50
+KPX Oslash Yacute -50
+KPX Oslash Ydieresis -50
+KPX Otilde A -40
+KPX Otilde Aacute -40
+KPX Otilde Abreve -40
+KPX Otilde Acircumflex -40
+KPX Otilde Adieresis -40
+KPX Otilde Agrave -40
+KPX Otilde Amacron -40
+KPX Otilde Aogonek -40
+KPX Otilde Aring -40
+KPX Otilde Atilde -40
+KPX Otilde T -40
+KPX Otilde Tcaron -40
+KPX Otilde Tcommaaccent -40
+KPX Otilde V -50
+KPX Otilde W -50
+KPX Otilde X -40
+KPX Otilde Y -50
+KPX Otilde Yacute -50
+KPX Otilde Ydieresis -50
+KPX P A -74
+KPX P Aacute -74
+KPX P Abreve -74
+KPX P Acircumflex -74
+KPX P Adieresis -74
+KPX P Agrave -74
+KPX P Amacron -74
+KPX P Aogonek -74
+KPX P Aring -74
+KPX P Atilde -74
+KPX P a -10
+KPX P aacute -10
+KPX P abreve -10
+KPX P acircumflex -10
+KPX P adieresis -10
+KPX P agrave -10
+KPX P amacron -10
+KPX P aogonek -10
+KPX P aring -10
+KPX P atilde -10
+KPX P comma -92
+KPX P e -20
+KPX P eacute -20
+KPX P ecaron -20
+KPX P ecircumflex -20
+KPX P edieresis -20
+KPX P edotaccent -20
+KPX P egrave -20
+KPX P emacron -20
+KPX P eogonek -20
+KPX P o -20
+KPX P oacute -20
+KPX P ocircumflex -20
+KPX P odieresis -20
+KPX P ograve -20
+KPX P ohungarumlaut -20
+KPX P omacron -20
+KPX P oslash -20
+KPX P otilde -20
+KPX P period -110
+KPX Q U -10
+KPX Q Uacute -10
+KPX Q Ucircumflex -10
+KPX Q Udieresis -10
+KPX Q Ugrave -10
+KPX Q Uhungarumlaut -10
+KPX Q Umacron -10
+KPX Q Uogonek -10
+KPX Q Uring -10
+KPX Q period -20
+KPX R O -30
+KPX R Oacute -30
+KPX R Ocircumflex -30
+KPX R Odieresis -30
+KPX R Ograve -30
+KPX R Ohungarumlaut -30
+KPX R Omacron -30
+KPX R Oslash -30
+KPX R Otilde -30
+KPX R T -40
+KPX R Tcaron -40
+KPX R Tcommaaccent -40
+KPX R U -30
+KPX R Uacute -30
+KPX R Ucircumflex -30
+KPX R Udieresis -30
+KPX R Ugrave -30
+KPX R Uhungarumlaut -30
+KPX R Umacron -30
+KPX R Uogonek -30
+KPX R Uring -30
+KPX R V -55
+KPX R W -35
+KPX R Y -35
+KPX R Yacute -35
+KPX R Ydieresis -35
+KPX Racute O -30
+KPX Racute Oacute -30
+KPX Racute Ocircumflex -30
+KPX Racute Odieresis -30
+KPX Racute Ograve -30
+KPX Racute Ohungarumlaut -30
+KPX Racute Omacron -30
+KPX Racute Oslash -30
+KPX Racute Otilde -30
+KPX Racute T -40
+KPX Racute Tcaron -40
+KPX Racute Tcommaaccent -40
+KPX Racute U -30
+KPX Racute Uacute -30
+KPX Racute Ucircumflex -30
+KPX Racute Udieresis -30
+KPX Racute Ugrave -30
+KPX Racute Uhungarumlaut -30
+KPX Racute Umacron -30
+KPX Racute Uogonek -30
+KPX Racute Uring -30
+KPX Racute V -55
+KPX Racute W -35
+KPX Racute Y -35
+KPX Racute Yacute -35
+KPX Racute Ydieresis -35
+KPX Rcaron O -30
+KPX Rcaron Oacute -30
+KPX Rcaron Ocircumflex -30
+KPX Rcaron Odieresis -30
+KPX Rcaron Ograve -30
+KPX Rcaron Ohungarumlaut -30
+KPX Rcaron Omacron -30
+KPX Rcaron Oslash -30
+KPX Rcaron Otilde -30
+KPX Rcaron T -40
+KPX Rcaron Tcaron -40
+KPX Rcaron Tcommaaccent -40
+KPX Rcaron U -30
+KPX Rcaron Uacute -30
+KPX Rcaron Ucircumflex -30
+KPX Rcaron Udieresis -30
+KPX Rcaron Ugrave -30
+KPX Rcaron Uhungarumlaut -30
+KPX Rcaron Umacron -30
+KPX Rcaron Uogonek -30
+KPX Rcaron Uring -30
+KPX Rcaron V -55
+KPX Rcaron W -35
+KPX Rcaron Y -35
+KPX Rcaron Yacute -35
+KPX Rcaron Ydieresis -35
+KPX Rcommaaccent O -30
+KPX Rcommaaccent Oacute -30
+KPX Rcommaaccent Ocircumflex -30
+KPX Rcommaaccent Odieresis -30
+KPX Rcommaaccent Ograve -30
+KPX Rcommaaccent Ohungarumlaut -30
+KPX Rcommaaccent Omacron -30
+KPX Rcommaaccent Oslash -30
+KPX Rcommaaccent Otilde -30
+KPX Rcommaaccent T -40
+KPX Rcommaaccent Tcaron -40
+KPX Rcommaaccent Tcommaaccent -40
+KPX Rcommaaccent U -30
+KPX Rcommaaccent Uacute -30
+KPX Rcommaaccent Ucircumflex -30
+KPX Rcommaaccent Udieresis -30
+KPX Rcommaaccent Ugrave -30
+KPX Rcommaaccent Uhungarumlaut -30
+KPX Rcommaaccent Umacron -30
+KPX Rcommaaccent Uogonek -30
+KPX Rcommaaccent Uring -30
+KPX Rcommaaccent V -55
+KPX Rcommaaccent W -35
+KPX Rcommaaccent Y -35
+KPX Rcommaaccent Yacute -35
+KPX Rcommaaccent Ydieresis -35
+KPX T A -90
+KPX T Aacute -90
+KPX T Abreve -90
+KPX T Acircumflex -90
+KPX T Adieresis -90
+KPX T Agrave -90
+KPX T Amacron -90
+KPX T Aogonek -90
+KPX T Aring -90
+KPX T Atilde -90
+KPX T O -18
+KPX T Oacute -18
+KPX T Ocircumflex -18
+KPX T Odieresis -18
+KPX T Ograve -18
+KPX T Ohungarumlaut -18
+KPX T Omacron -18
+KPX T Oslash -18
+KPX T Otilde -18
+KPX T a -92
+KPX T aacute -92
+KPX T abreve -52
+KPX T acircumflex -52
+KPX T adieresis -52
+KPX T agrave -52
+KPX T amacron -52
+KPX T aogonek -92
+KPX T aring -92
+KPX T atilde -52
+KPX T colon -74
+KPX T comma -74
+KPX T e -92
+KPX T eacute -92
+KPX T ecaron -92
+KPX T ecircumflex -92
+KPX T edieresis -52
+KPX T edotaccent -92
+KPX T egrave -52
+KPX T emacron -52
+KPX T eogonek -92
+KPX T hyphen -92
+KPX T i -18
+KPX T iacute -18
+KPX T iogonek -18
+KPX T o -92
+KPX T oacute -92
+KPX T ocircumflex -92
+KPX T odieresis -92
+KPX T ograve -92
+KPX T ohungarumlaut -92
+KPX T omacron -92
+KPX T oslash -92
+KPX T otilde -92
+KPX T period -90
+KPX T r -74
+KPX T racute -74
+KPX T rcaron -74
+KPX T rcommaaccent -74
+KPX T semicolon -74
+KPX T u -92
+KPX T uacute -92
+KPX T ucircumflex -92
+KPX T udieresis -92
+KPX T ugrave -92
+KPX T uhungarumlaut -92
+KPX T umacron -92
+KPX T uogonek -92
+KPX T uring -92
+KPX T w -74
+KPX T y -34
+KPX T yacute -34
+KPX T ydieresis -34
+KPX Tcaron A -90
+KPX Tcaron Aacute -90
+KPX Tcaron Abreve -90
+KPX Tcaron Acircumflex -90
+KPX Tcaron Adieresis -90
+KPX Tcaron Agrave -90
+KPX Tcaron Amacron -90
+KPX Tcaron Aogonek -90
+KPX Tcaron Aring -90
+KPX Tcaron Atilde -90
+KPX Tcaron O -18
+KPX Tcaron Oacute -18
+KPX Tcaron Ocircumflex -18
+KPX Tcaron Odieresis -18
+KPX Tcaron Ograve -18
+KPX Tcaron Ohungarumlaut -18
+KPX Tcaron Omacron -18
+KPX Tcaron Oslash -18
+KPX Tcaron Otilde -18
+KPX Tcaron a -92
+KPX Tcaron aacute -92
+KPX Tcaron abreve -52
+KPX Tcaron acircumflex -52
+KPX Tcaron adieresis -52
+KPX Tcaron agrave -52
+KPX Tcaron amacron -52
+KPX Tcaron aogonek -92
+KPX Tcaron aring -92
+KPX Tcaron atilde -52
+KPX Tcaron colon -74
+KPX Tcaron comma -74
+KPX Tcaron e -92
+KPX Tcaron eacute -92
+KPX Tcaron ecaron -92
+KPX Tcaron ecircumflex -92
+KPX Tcaron edieresis -52
+KPX Tcaron edotaccent -92
+KPX Tcaron egrave -52
+KPX Tcaron emacron -52
+KPX Tcaron eogonek -92
+KPX Tcaron hyphen -92
+KPX Tcaron i -18
+KPX Tcaron iacute -18
+KPX Tcaron iogonek -18
+KPX Tcaron o -92
+KPX Tcaron oacute -92
+KPX Tcaron ocircumflex -92
+KPX Tcaron odieresis -92
+KPX Tcaron ograve -92
+KPX Tcaron ohungarumlaut -92
+KPX Tcaron omacron -92
+KPX Tcaron oslash -92
+KPX Tcaron otilde -92
+KPX Tcaron period -90
+KPX Tcaron r -74
+KPX Tcaron racute -74
+KPX Tcaron rcaron -74
+KPX Tcaron rcommaaccent -74
+KPX Tcaron semicolon -74
+KPX Tcaron u -92
+KPX Tcaron uacute -92
+KPX Tcaron ucircumflex -92
+KPX Tcaron udieresis -92
+KPX Tcaron ugrave -92
+KPX Tcaron uhungarumlaut -92
+KPX Tcaron umacron -92
+KPX Tcaron uogonek -92
+KPX Tcaron uring -92
+KPX Tcaron w -74
+KPX Tcaron y -34
+KPX Tcaron yacute -34
+KPX Tcaron ydieresis -34
+KPX Tcommaaccent A -90
+KPX Tcommaaccent Aacute -90
+KPX Tcommaaccent Abreve -90
+KPX Tcommaaccent Acircumflex -90
+KPX Tcommaaccent Adieresis -90
+KPX Tcommaaccent Agrave -90
+KPX Tcommaaccent Amacron -90
+KPX Tcommaaccent Aogonek -90
+KPX Tcommaaccent Aring -90
+KPX Tcommaaccent Atilde -90
+KPX Tcommaaccent O -18
+KPX Tcommaaccent Oacute -18
+KPX Tcommaaccent Ocircumflex -18
+KPX Tcommaaccent Odieresis -18
+KPX Tcommaaccent Ograve -18
+KPX Tcommaaccent Ohungarumlaut -18
+KPX Tcommaaccent Omacron -18
+KPX Tcommaaccent Oslash -18
+KPX Tcommaaccent Otilde -18
+KPX Tcommaaccent a -92
+KPX Tcommaaccent aacute -92
+KPX Tcommaaccent abreve -52
+KPX Tcommaaccent acircumflex -52
+KPX Tcommaaccent adieresis -52
+KPX Tcommaaccent agrave -52
+KPX Tcommaaccent amacron -52
+KPX Tcommaaccent aogonek -92
+KPX Tcommaaccent aring -92
+KPX Tcommaaccent atilde -52
+KPX Tcommaaccent colon -74
+KPX Tcommaaccent comma -74
+KPX Tcommaaccent e -92
+KPX Tcommaaccent eacute -92
+KPX Tcommaaccent ecaron -92
+KPX Tcommaaccent ecircumflex -92
+KPX Tcommaaccent edieresis -52
+KPX Tcommaaccent edotaccent -92
+KPX Tcommaaccent egrave -52
+KPX Tcommaaccent emacron -52
+KPX Tcommaaccent eogonek -92
+KPX Tcommaaccent hyphen -92
+KPX Tcommaaccent i -18
+KPX Tcommaaccent iacute -18
+KPX Tcommaaccent iogonek -18
+KPX Tcommaaccent o -92
+KPX Tcommaaccent oacute -92
+KPX Tcommaaccent ocircumflex -92
+KPX Tcommaaccent odieresis -92
+KPX Tcommaaccent ograve -92
+KPX Tcommaaccent ohungarumlaut -92
+KPX Tcommaaccent omacron -92
+KPX Tcommaaccent oslash -92
+KPX Tcommaaccent otilde -92
+KPX Tcommaaccent period -90
+KPX Tcommaaccent r -74
+KPX Tcommaaccent racute -74
+KPX Tcommaaccent rcaron -74
+KPX Tcommaaccent rcommaaccent -74
+KPX Tcommaaccent semicolon -74
+KPX Tcommaaccent u -92
+KPX Tcommaaccent uacute -92
+KPX Tcommaaccent ucircumflex -92
+KPX Tcommaaccent udieresis -92
+KPX Tcommaaccent ugrave -92
+KPX Tcommaaccent uhungarumlaut -92
+KPX Tcommaaccent umacron -92
+KPX Tcommaaccent uogonek -92
+KPX Tcommaaccent uring -92
+KPX Tcommaaccent w -74
+KPX Tcommaaccent y -34
+KPX Tcommaaccent yacute -34
+KPX Tcommaaccent ydieresis -34
+KPX U A -60
+KPX U Aacute -60
+KPX U Abreve -60
+KPX U Acircumflex -60
+KPX U Adieresis -60
+KPX U Agrave -60
+KPX U Amacron -60
+KPX U Aogonek -60
+KPX U Aring -60
+KPX U Atilde -60
+KPX U comma -50
+KPX U period -50
+KPX Uacute A -60
+KPX Uacute Aacute -60
+KPX Uacute Abreve -60
+KPX Uacute Acircumflex -60
+KPX Uacute Adieresis -60
+KPX Uacute Agrave -60
+KPX Uacute Amacron -60
+KPX Uacute Aogonek -60
+KPX Uacute Aring -60
+KPX Uacute Atilde -60
+KPX Uacute comma -50
+KPX Uacute period -50
+KPX Ucircumflex A -60
+KPX Ucircumflex Aacute -60
+KPX Ucircumflex Abreve -60
+KPX Ucircumflex Acircumflex -60
+KPX Ucircumflex Adieresis -60
+KPX Ucircumflex Agrave -60
+KPX Ucircumflex Amacron -60
+KPX Ucircumflex Aogonek -60
+KPX Ucircumflex Aring -60
+KPX Ucircumflex Atilde -60
+KPX Ucircumflex comma -50
+KPX Ucircumflex period -50
+KPX Udieresis A -60
+KPX Udieresis Aacute -60
+KPX Udieresis Abreve -60
+KPX Udieresis Acircumflex -60
+KPX Udieresis Adieresis -60
+KPX Udieresis Agrave -60
+KPX Udieresis Amacron -60
+KPX Udieresis Aogonek -60
+KPX Udieresis Aring -60
+KPX Udieresis Atilde -60
+KPX Udieresis comma -50
+KPX Udieresis period -50
+KPX Ugrave A -60
+KPX Ugrave Aacute -60
+KPX Ugrave Abreve -60
+KPX Ugrave Acircumflex -60
+KPX Ugrave Adieresis -60
+KPX Ugrave Agrave -60
+KPX Ugrave Amacron -60
+KPX Ugrave Aogonek -60
+KPX Ugrave Aring -60
+KPX Ugrave Atilde -60
+KPX Ugrave comma -50
+KPX Ugrave period -50
+KPX Uhungarumlaut A -60
+KPX Uhungarumlaut Aacute -60
+KPX Uhungarumlaut Abreve -60
+KPX Uhungarumlaut Acircumflex -60
+KPX Uhungarumlaut Adieresis -60
+KPX Uhungarumlaut Agrave -60
+KPX Uhungarumlaut Amacron -60
+KPX Uhungarumlaut Aogonek -60
+KPX Uhungarumlaut Aring -60
+KPX Uhungarumlaut Atilde -60
+KPX Uhungarumlaut comma -50
+KPX Uhungarumlaut period -50
+KPX Umacron A -60
+KPX Umacron Aacute -60
+KPX Umacron Abreve -60
+KPX Umacron Acircumflex -60
+KPX Umacron Adieresis -60
+KPX Umacron Agrave -60
+KPX Umacron Amacron -60
+KPX Umacron Aogonek -60
+KPX Umacron Aring -60
+KPX Umacron Atilde -60
+KPX Umacron comma -50
+KPX Umacron period -50
+KPX Uogonek A -60
+KPX Uogonek Aacute -60
+KPX Uogonek Abreve -60
+KPX Uogonek Acircumflex -60
+KPX Uogonek Adieresis -60
+KPX Uogonek Agrave -60
+KPX Uogonek Amacron -60
+KPX Uogonek Aogonek -60
+KPX Uogonek Aring -60
+KPX Uogonek Atilde -60
+KPX Uogonek comma -50
+KPX Uogonek period -50
+KPX Uring A -60
+KPX Uring Aacute -60
+KPX Uring Abreve -60
+KPX Uring Acircumflex -60
+KPX Uring Adieresis -60
+KPX Uring Agrave -60
+KPX Uring Amacron -60
+KPX Uring Aogonek -60
+KPX Uring Aring -60
+KPX Uring Atilde -60
+KPX Uring comma -50
+KPX Uring period -50
+KPX V A -135
+KPX V Aacute -135
+KPX V Abreve -135
+KPX V Acircumflex -135
+KPX V Adieresis -135
+KPX V Agrave -135
+KPX V Amacron -135
+KPX V Aogonek -135
+KPX V Aring -135
+KPX V Atilde -135
+KPX V G -30
+KPX V Gbreve -30
+KPX V Gcommaaccent -30
+KPX V O -45
+KPX V Oacute -45
+KPX V Ocircumflex -45
+KPX V Odieresis -45
+KPX V Ograve -45
+KPX V Ohungarumlaut -45
+KPX V Omacron -45
+KPX V Oslash -45
+KPX V Otilde -45
+KPX V a -92
+KPX V aacute -92
+KPX V abreve -92
+KPX V acircumflex -92
+KPX V adieresis -92
+KPX V agrave -92
+KPX V amacron -92
+KPX V aogonek -92
+KPX V aring -92
+KPX V atilde -92
+KPX V colon -92
+KPX V comma -129
+KPX V e -100
+KPX V eacute -100
+KPX V ecaron -100
+KPX V ecircumflex -100
+KPX V edieresis -100
+KPX V edotaccent -100
+KPX V egrave -100
+KPX V emacron -100
+KPX V eogonek -100
+KPX V hyphen -74
+KPX V i -37
+KPX V iacute -37
+KPX V icircumflex -37
+KPX V idieresis -37
+KPX V igrave -37
+KPX V imacron -37
+KPX V iogonek -37
+KPX V o -100
+KPX V oacute -100
+KPX V ocircumflex -100
+KPX V odieresis -100
+KPX V ograve -100
+KPX V ohungarumlaut -100
+KPX V omacron -100
+KPX V oslash -100
+KPX V otilde -100
+KPX V period -145
+KPX V semicolon -92
+KPX V u -92
+KPX V uacute -92
+KPX V ucircumflex -92
+KPX V udieresis -92
+KPX V ugrave -92
+KPX V uhungarumlaut -92
+KPX V umacron -92
+KPX V uogonek -92
+KPX V uring -92
+KPX W A -120
+KPX W Aacute -120
+KPX W Abreve -120
+KPX W Acircumflex -120
+KPX W Adieresis -120
+KPX W Agrave -120
+KPX W Amacron -120
+KPX W Aogonek -120
+KPX W Aring -120
+KPX W Atilde -120
+KPX W O -10
+KPX W Oacute -10
+KPX W Ocircumflex -10
+KPX W Odieresis -10
+KPX W Ograve -10
+KPX W Ohungarumlaut -10
+KPX W Omacron -10
+KPX W Oslash -10
+KPX W Otilde -10
+KPX W a -65
+KPX W aacute -65
+KPX W abreve -65
+KPX W acircumflex -65
+KPX W adieresis -65
+KPX W agrave -65
+KPX W amacron -65
+KPX W aogonek -65
+KPX W aring -65
+KPX W atilde -65
+KPX W colon -55
+KPX W comma -92
+KPX W e -65
+KPX W eacute -65
+KPX W ecaron -65
+KPX W ecircumflex -65
+KPX W edieresis -65
+KPX W edotaccent -65
+KPX W egrave -65
+KPX W emacron -65
+KPX W eogonek -65
+KPX W hyphen -37
+KPX W i -18
+KPX W iacute -18
+KPX W iogonek -18
+KPX W o -75
+KPX W oacute -75
+KPX W ocircumflex -75
+KPX W odieresis -75
+KPX W ograve -75
+KPX W ohungarumlaut -75
+KPX W omacron -75
+KPX W oslash -75
+KPX W otilde -75
+KPX W period -92
+KPX W semicolon -55
+KPX W u -50
+KPX W uacute -50
+KPX W ucircumflex -50
+KPX W udieresis -50
+KPX W ugrave -50
+KPX W uhungarumlaut -50
+KPX W umacron -50
+KPX W uogonek -50
+KPX W uring -50
+KPX W y -60
+KPX W yacute -60
+KPX W ydieresis -60
+KPX Y A -110
+KPX Y Aacute -110
+KPX Y Abreve -110
+KPX Y Acircumflex -110
+KPX Y Adieresis -110
+KPX Y Agrave -110
+KPX Y Amacron -110
+KPX Y Aogonek -110
+KPX Y Aring -110
+KPX Y Atilde -110
+KPX Y O -35
+KPX Y Oacute -35
+KPX Y Ocircumflex -35
+KPX Y Odieresis -35
+KPX Y Ograve -35
+KPX Y Ohungarumlaut -35
+KPX Y Omacron -35
+KPX Y Oslash -35
+KPX Y Otilde -35
+KPX Y a -85
+KPX Y aacute -85
+KPX Y abreve -85
+KPX Y acircumflex -85
+KPX Y adieresis -85
+KPX Y agrave -85
+KPX Y amacron -85
+KPX Y aogonek -85
+KPX Y aring -85
+KPX Y atilde -85
+KPX Y colon -92
+KPX Y comma -92
+KPX Y e -111
+KPX Y eacute -111
+KPX Y ecaron -111
+KPX Y ecircumflex -111
+KPX Y edieresis -71
+KPX Y edotaccent -111
+KPX Y egrave -71
+KPX Y emacron -71
+KPX Y eogonek -111
+KPX Y hyphen -92
+KPX Y i -37
+KPX Y iacute -37
+KPX Y iogonek -37
+KPX Y o -111
+KPX Y oacute -111
+KPX Y ocircumflex -111
+KPX Y odieresis -111
+KPX Y ograve -111
+KPX Y ohungarumlaut -111
+KPX Y omacron -111
+KPX Y oslash -111
+KPX Y otilde -111
+KPX Y period -92
+KPX Y semicolon -92
+KPX Y u -92
+KPX Y uacute -92
+KPX Y ucircumflex -92
+KPX Y udieresis -92
+KPX Y ugrave -92
+KPX Y uhungarumlaut -92
+KPX Y umacron -92
+KPX Y uogonek -92
+KPX Y uring -92
+KPX Yacute A -110
+KPX Yacute Aacute -110
+KPX Yacute Abreve -110
+KPX Yacute Acircumflex -110
+KPX Yacute Adieresis -110
+KPX Yacute Agrave -110
+KPX Yacute Amacron -110
+KPX Yacute Aogonek -110
+KPX Yacute Aring -110
+KPX Yacute Atilde -110
+KPX Yacute O -35
+KPX Yacute Oacute -35
+KPX Yacute Ocircumflex -35
+KPX Yacute Odieresis -35
+KPX Yacute Ograve -35
+KPX Yacute Ohungarumlaut -35
+KPX Yacute Omacron -35
+KPX Yacute Oslash -35
+KPX Yacute Otilde -35
+KPX Yacute a -85
+KPX Yacute aacute -85
+KPX Yacute abreve -85
+KPX Yacute acircumflex -85
+KPX Yacute adieresis -85
+KPX Yacute agrave -85
+KPX Yacute amacron -85
+KPX Yacute aogonek -85
+KPX Yacute aring -85
+KPX Yacute atilde -85
+KPX Yacute colon -92
+KPX Yacute comma -92
+KPX Yacute e -111
+KPX Yacute eacute -111
+KPX Yacute ecaron -111
+KPX Yacute ecircumflex -111
+KPX Yacute edieresis -71
+KPX Yacute edotaccent -111
+KPX Yacute egrave -71
+KPX Yacute emacron -71
+KPX Yacute eogonek -111
+KPX Yacute hyphen -92
+KPX Yacute i -37
+KPX Yacute iacute -37
+KPX Yacute iogonek -37
+KPX Yacute o -111
+KPX Yacute oacute -111
+KPX Yacute ocircumflex -111
+KPX Yacute odieresis -111
+KPX Yacute ograve -111
+KPX Yacute ohungarumlaut -111
+KPX Yacute omacron -111
+KPX Yacute oslash -111
+KPX Yacute otilde -111
+KPX Yacute period -92
+KPX Yacute semicolon -92
+KPX Yacute u -92
+KPX Yacute uacute -92
+KPX Yacute ucircumflex -92
+KPX Yacute udieresis -92
+KPX Yacute ugrave -92
+KPX Yacute uhungarumlaut -92
+KPX Yacute umacron -92
+KPX Yacute uogonek -92
+KPX Yacute uring -92
+KPX Ydieresis A -110
+KPX Ydieresis Aacute -110
+KPX Ydieresis Abreve -110
+KPX Ydieresis Acircumflex -110
+KPX Ydieresis Adieresis -110
+KPX Ydieresis Agrave -110
+KPX Ydieresis Amacron -110
+KPX Ydieresis Aogonek -110
+KPX Ydieresis Aring -110
+KPX Ydieresis Atilde -110
+KPX Ydieresis O -35
+KPX Ydieresis Oacute -35
+KPX Ydieresis Ocircumflex -35
+KPX Ydieresis Odieresis -35
+KPX Ydieresis Ograve -35
+KPX Ydieresis Ohungarumlaut -35
+KPX Ydieresis Omacron -35
+KPX Ydieresis Oslash -35
+KPX Ydieresis Otilde -35
+KPX Ydieresis a -85
+KPX Ydieresis aacute -85
+KPX Ydieresis abreve -85
+KPX Ydieresis acircumflex -85
+KPX Ydieresis adieresis -85
+KPX Ydieresis agrave -85
+KPX Ydieresis amacron -85
+KPX Ydieresis aogonek -85
+KPX Ydieresis aring -85
+KPX Ydieresis atilde -85
+KPX Ydieresis colon -92
+KPX Ydieresis comma -92
+KPX Ydieresis e -111
+KPX Ydieresis eacute -111
+KPX Ydieresis ecaron -111
+KPX Ydieresis ecircumflex -111
+KPX Ydieresis edieresis -71
+KPX Ydieresis edotaccent -111
+KPX Ydieresis egrave -71
+KPX Ydieresis emacron -71
+KPX Ydieresis eogonek -111
+KPX Ydieresis hyphen -92
+KPX Ydieresis i -37
+KPX Ydieresis iacute -37
+KPX Ydieresis iogonek -37
+KPX Ydieresis o -111
+KPX Ydieresis oacute -111
+KPX Ydieresis ocircumflex -111
+KPX Ydieresis odieresis -111
+KPX Ydieresis ograve -111
+KPX Ydieresis ohungarumlaut -111
+KPX Ydieresis omacron -111
+KPX Ydieresis oslash -111
+KPX Ydieresis otilde -111
+KPX Ydieresis period -92
+KPX Ydieresis semicolon -92
+KPX Ydieresis u -92
+KPX Ydieresis uacute -92
+KPX Ydieresis ucircumflex -92
+KPX Ydieresis udieresis -92
+KPX Ydieresis ugrave -92
+KPX Ydieresis uhungarumlaut -92
+KPX Ydieresis umacron -92
+KPX Ydieresis uogonek -92
+KPX Ydieresis uring -92
+KPX a v -25
+KPX aacute v -25
+KPX abreve v -25
+KPX acircumflex v -25
+KPX adieresis v -25
+KPX agrave v -25
+KPX amacron v -25
+KPX aogonek v -25
+KPX aring v -25
+KPX atilde v -25
+KPX b b -10
+KPX b period -40
+KPX b u -20
+KPX b uacute -20
+KPX b ucircumflex -20
+KPX b udieresis -20
+KPX b ugrave -20
+KPX b uhungarumlaut -20
+KPX b umacron -20
+KPX b uogonek -20
+KPX b uring -20
+KPX b v -15
+KPX comma quotedblright -45
+KPX comma quoteright -55
+KPX d w -15
+KPX dcroat w -15
+KPX e v -15
+KPX eacute v -15
+KPX ecaron v -15
+KPX ecircumflex v -15
+KPX edieresis v -15
+KPX edotaccent v -15
+KPX egrave v -15
+KPX emacron v -15
+KPX eogonek v -15
+KPX f comma -15
+KPX f dotlessi -35
+KPX f i -25
+KPX f o -25
+KPX f oacute -25
+KPX f ocircumflex -25
+KPX f odieresis -25
+KPX f ograve -25
+KPX f ohungarumlaut -25
+KPX f omacron -25
+KPX f oslash -25
+KPX f otilde -25
+KPX f period -15
+KPX f quotedblright 50
+KPX f quoteright 55
+KPX g period -15
+KPX gbreve period -15
+KPX gcommaaccent period -15
+KPX h y -15
+KPX h yacute -15
+KPX h ydieresis -15
+KPX i v -10
+KPX iacute v -10
+KPX icircumflex v -10
+KPX idieresis v -10
+KPX igrave v -10
+KPX imacron v -10
+KPX iogonek v -10
+KPX k e -10
+KPX k eacute -10
+KPX k ecaron -10
+KPX k ecircumflex -10
+KPX k edieresis -10
+KPX k edotaccent -10
+KPX k egrave -10
+KPX k emacron -10
+KPX k eogonek -10
+KPX k o -15
+KPX k oacute -15
+KPX k ocircumflex -15
+KPX k odieresis -15
+KPX k ograve -15
+KPX k ohungarumlaut -15
+KPX k omacron -15
+KPX k oslash -15
+KPX k otilde -15
+KPX k y -15
+KPX k yacute -15
+KPX k ydieresis -15
+KPX kcommaaccent e -10
+KPX kcommaaccent eacute -10
+KPX kcommaaccent ecaron -10
+KPX kcommaaccent ecircumflex -10
+KPX kcommaaccent edieresis -10
+KPX kcommaaccent edotaccent -10
+KPX kcommaaccent egrave -10
+KPX kcommaaccent emacron -10
+KPX kcommaaccent eogonek -10
+KPX kcommaaccent o -15
+KPX kcommaaccent oacute -15
+KPX kcommaaccent ocircumflex -15
+KPX kcommaaccent odieresis -15
+KPX kcommaaccent ograve -15
+KPX kcommaaccent ohungarumlaut -15
+KPX kcommaaccent omacron -15
+KPX kcommaaccent oslash -15
+KPX kcommaaccent otilde -15
+KPX kcommaaccent y -15
+KPX kcommaaccent yacute -15
+KPX kcommaaccent ydieresis -15
+KPX n v -40
+KPX nacute v -40
+KPX ncaron v -40
+KPX ncommaaccent v -40
+KPX ntilde v -40
+KPX o v -10
+KPX o w -10
+KPX oacute v -10
+KPX oacute w -10
+KPX ocircumflex v -10
+KPX ocircumflex w -10
+KPX odieresis v -10
+KPX odieresis w -10
+KPX ograve v -10
+KPX ograve w -10
+KPX ohungarumlaut v -10
+KPX ohungarumlaut w -10
+KPX omacron v -10
+KPX omacron w -10
+KPX oslash v -10
+KPX oslash w -10
+KPX otilde v -10
+KPX otilde w -10
+KPX period quotedblright -55
+KPX period quoteright -55
+KPX quotedblleft A -10
+KPX quotedblleft Aacute -10
+KPX quotedblleft Abreve -10
+KPX quotedblleft Acircumflex -10
+KPX quotedblleft Adieresis -10
+KPX quotedblleft Agrave -10
+KPX quotedblleft Amacron -10
+KPX quotedblleft Aogonek -10
+KPX quotedblleft Aring -10
+KPX quotedblleft Atilde -10
+KPX quoteleft A -10
+KPX quoteleft Aacute -10
+KPX quoteleft Abreve -10
+KPX quoteleft Acircumflex -10
+KPX quoteleft Adieresis -10
+KPX quoteleft Agrave -10
+KPX quoteleft Amacron -10
+KPX quoteleft Aogonek -10
+KPX quoteleft Aring -10
+KPX quoteleft Atilde -10
+KPX quoteleft quoteleft -63
+KPX quoteright d -20
+KPX quoteright dcroat -20
+KPX quoteright quoteright -63
+KPX quoteright r -20
+KPX quoteright racute -20
+KPX quoteright rcaron -20
+KPX quoteright rcommaaccent -20
+KPX quoteright s -37
+KPX quoteright sacute -37
+KPX quoteright scaron -37
+KPX quoteright scedilla -37
+KPX quoteright scommaaccent -37
+KPX quoteright space -74
+KPX quoteright v -20
+KPX r c -18
+KPX r cacute -18
+KPX r ccaron -18
+KPX r ccedilla -18
+KPX r comma -92
+KPX r e -18
+KPX r eacute -18
+KPX r ecaron -18
+KPX r ecircumflex -18
+KPX r edieresis -18
+KPX r edotaccent -18
+KPX r egrave -18
+KPX r emacron -18
+KPX r eogonek -18
+KPX r g -10
+KPX r gbreve -10
+KPX r gcommaaccent -10
+KPX r hyphen -37
+KPX r n -15
+KPX r nacute -15
+KPX r ncaron -15
+KPX r ncommaaccent -15
+KPX r ntilde -15
+KPX r o -18
+KPX r oacute -18
+KPX r ocircumflex -18
+KPX r odieresis -18
+KPX r ograve -18
+KPX r ohungarumlaut -18
+KPX r omacron -18
+KPX r oslash -18
+KPX r otilde -18
+KPX r p -10
+KPX r period -100
+KPX r q -18
+KPX r v -10
+KPX racute c -18
+KPX racute cacute -18
+KPX racute ccaron -18
+KPX racute ccedilla -18
+KPX racute comma -92
+KPX racute e -18
+KPX racute eacute -18
+KPX racute ecaron -18
+KPX racute ecircumflex -18
+KPX racute edieresis -18
+KPX racute edotaccent -18
+KPX racute egrave -18
+KPX racute emacron -18
+KPX racute eogonek -18
+KPX racute g -10
+KPX racute gbreve -10
+KPX racute gcommaaccent -10
+KPX racute hyphen -37
+KPX racute n -15
+KPX racute nacute -15
+KPX racute ncaron -15
+KPX racute ncommaaccent -15
+KPX racute ntilde -15
+KPX racute o -18
+KPX racute oacute -18
+KPX racute ocircumflex -18
+KPX racute odieresis -18
+KPX racute ograve -18
+KPX racute ohungarumlaut -18
+KPX racute omacron -18
+KPX racute oslash -18
+KPX racute otilde -18
+KPX racute p -10
+KPX racute period -100
+KPX racute q -18
+KPX racute v -10
+KPX rcaron c -18
+KPX rcaron cacute -18
+KPX rcaron ccaron -18
+KPX rcaron ccedilla -18
+KPX rcaron comma -92
+KPX rcaron e -18
+KPX rcaron eacute -18
+KPX rcaron ecaron -18
+KPX rcaron ecircumflex -18
+KPX rcaron edieresis -18
+KPX rcaron edotaccent -18
+KPX rcaron egrave -18
+KPX rcaron emacron -18
+KPX rcaron eogonek -18
+KPX rcaron g -10
+KPX rcaron gbreve -10
+KPX rcaron gcommaaccent -10
+KPX rcaron hyphen -37
+KPX rcaron n -15
+KPX rcaron nacute -15
+KPX rcaron ncaron -15
+KPX rcaron ncommaaccent -15
+KPX rcaron ntilde -15
+KPX rcaron o -18
+KPX rcaron oacute -18
+KPX rcaron ocircumflex -18
+KPX rcaron odieresis -18
+KPX rcaron ograve -18
+KPX rcaron ohungarumlaut -18
+KPX rcaron omacron -18
+KPX rcaron oslash -18
+KPX rcaron otilde -18
+KPX rcaron p -10
+KPX rcaron period -100
+KPX rcaron q -18
+KPX rcaron v -10
+KPX rcommaaccent c -18
+KPX rcommaaccent cacute -18
+KPX rcommaaccent ccaron -18
+KPX rcommaaccent ccedilla -18
+KPX rcommaaccent comma -92
+KPX rcommaaccent e -18
+KPX rcommaaccent eacute -18
+KPX rcommaaccent ecaron -18
+KPX rcommaaccent ecircumflex -18
+KPX rcommaaccent edieresis -18
+KPX rcommaaccent edotaccent -18
+KPX rcommaaccent egrave -18
+KPX rcommaaccent emacron -18
+KPX rcommaaccent eogonek -18
+KPX rcommaaccent g -10
+KPX rcommaaccent gbreve -10
+KPX rcommaaccent gcommaaccent -10
+KPX rcommaaccent hyphen -37
+KPX rcommaaccent n -15
+KPX rcommaaccent nacute -15
+KPX rcommaaccent ncaron -15
+KPX rcommaaccent ncommaaccent -15
+KPX rcommaaccent ntilde -15
+KPX rcommaaccent o -18
+KPX rcommaaccent oacute -18
+KPX rcommaaccent ocircumflex -18
+KPX rcommaaccent odieresis -18
+KPX rcommaaccent ograve -18
+KPX rcommaaccent ohungarumlaut -18
+KPX rcommaaccent omacron -18
+KPX rcommaaccent oslash -18
+KPX rcommaaccent otilde -18
+KPX rcommaaccent p -10
+KPX rcommaaccent period -100
+KPX rcommaaccent q -18
+KPX rcommaaccent v -10
+KPX space A -55
+KPX space Aacute -55
+KPX space Abreve -55
+KPX space Acircumflex -55
+KPX space Adieresis -55
+KPX space Agrave -55
+KPX space Amacron -55
+KPX space Aogonek -55
+KPX space Aring -55
+KPX space Atilde -55
+KPX space T -30
+KPX space Tcaron -30
+KPX space Tcommaaccent -30
+KPX space V -45
+KPX space W -30
+KPX space Y -55
+KPX space Yacute -55
+KPX space Ydieresis -55
+KPX v a -10
+KPX v aacute -10
+KPX v abreve -10
+KPX v acircumflex -10
+KPX v adieresis -10
+KPX v agrave -10
+KPX v amacron -10
+KPX v aogonek -10
+KPX v aring -10
+KPX v atilde -10
+KPX v comma -55
+KPX v e -10
+KPX v eacute -10
+KPX v ecaron -10
+KPX v ecircumflex -10
+KPX v edieresis -10
+KPX v edotaccent -10
+KPX v egrave -10
+KPX v emacron -10
+KPX v eogonek -10
+KPX v o -10
+KPX v oacute -10
+KPX v ocircumflex -10
+KPX v odieresis -10
+KPX v ograve -10
+KPX v ohungarumlaut -10
+KPX v omacron -10
+KPX v oslash -10
+KPX v otilde -10
+KPX v period -70
+KPX w comma -55
+KPX w o -10
+KPX w oacute -10
+KPX w ocircumflex -10
+KPX w odieresis -10
+KPX w ograve -10
+KPX w ohungarumlaut -10
+KPX w omacron -10
+KPX w oslash -10
+KPX w otilde -10
+KPX w period -70
+KPX y comma -55
+KPX y e -10
+KPX y eacute -10
+KPX y ecaron -10
+KPX y ecircumflex -10
+KPX y edieresis -10
+KPX y edotaccent -10
+KPX y egrave -10
+KPX y emacron -10
+KPX y eogonek -10
+KPX y o -25
+KPX y oacute -25
+KPX y ocircumflex -25
+KPX y odieresis -25
+KPX y ograve -25
+KPX y ohungarumlaut -25
+KPX y omacron -25
+KPX y oslash -25
+KPX y otilde -25
+KPX y period -70
+KPX yacute comma -55
+KPX yacute e -10
+KPX yacute eacute -10
+KPX yacute ecaron -10
+KPX yacute ecircumflex -10
+KPX yacute edieresis -10
+KPX yacute edotaccent -10
+KPX yacute egrave -10
+KPX yacute emacron -10
+KPX yacute eogonek -10
+KPX yacute o -25
+KPX yacute oacute -25
+KPX yacute ocircumflex -25
+KPX yacute odieresis -25
+KPX yacute ograve -25
+KPX yacute ohungarumlaut -25
+KPX yacute omacron -25
+KPX yacute oslash -25
+KPX yacute otilde -25
+KPX yacute period -70
+KPX ydieresis comma -55
+KPX ydieresis e -10
+KPX ydieresis eacute -10
+KPX ydieresis ecaron -10
+KPX ydieresis ecircumflex -10
+KPX ydieresis edieresis -10
+KPX ydieresis edotaccent -10
+KPX ydieresis egrave -10
+KPX ydieresis emacron -10
+KPX ydieresis eogonek -10
+KPX ydieresis o -25
+KPX ydieresis oacute -25
+KPX ydieresis ocircumflex -25
+KPX ydieresis odieresis -25
+KPX ydieresis ograve -25
+KPX ydieresis ohungarumlaut -25
+KPX ydieresis omacron -25
+KPX ydieresis oslash -25
+KPX ydieresis otilde -25
+KPX ydieresis period -70
+EndKernPairs
+EndKernData
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-Oblique.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-Oblique.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-Oblique.afm	(revision 2000)
@@ -0,0 +1,3051 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+Comment Creation Date: Thu May  1 12:44:31 1997
+Comment UniqueID 43055
+Comment VMusage 14960 69346
+FontName Helvetica-Oblique
+FullName Helvetica Oblique
+FamilyName Helvetica
+Weight Medium
+ItalicAngle -12
+IsFixedPitch false
+CharacterSet ExtendedRoman
+FontBBox -170 -225 1116 931 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 002.000
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 718
+XHeight 523
+Ascender 718
+Descender -207
+StdHW 76
+StdVW 88
+StartCharMetrics 315
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 90 0 340 718 ;
+C 34 ; WX 355 ; N quotedbl ; B 168 463 438 718 ;
+C 35 ; WX 556 ; N numbersign ; B 73 0 631 688 ;
+C 36 ; WX 556 ; N dollar ; B 69 -115 617 775 ;
+C 37 ; WX 889 ; N percent ; B 147 -19 889 703 ;
+C 38 ; WX 667 ; N ampersand ; B 77 -15 647 718 ;
+C 39 ; WX 222 ; N quoteright ; B 151 463 310 718 ;
+C 40 ; WX 333 ; N parenleft ; B 108 -207 454 733 ;
+C 41 ; WX 333 ; N parenright ; B -9 -207 337 733 ;
+C 42 ; WX 389 ; N asterisk ; B 165 431 475 718 ;
+C 43 ; WX 584 ; N plus ; B 85 0 606 505 ;
+C 44 ; WX 278 ; N comma ; B 56 -147 214 106 ;
+C 45 ; WX 333 ; N hyphen ; B 93 232 357 322 ;
+C 46 ; WX 278 ; N period ; B 87 0 214 106 ;
+C 47 ; WX 278 ; N slash ; B -21 -19 452 737 ;
+C 48 ; WX 556 ; N zero ; B 93 -19 608 703 ;
+C 49 ; WX 556 ; N one ; B 207 0 508 703 ;
+C 50 ; WX 556 ; N two ; B 26 0 617 703 ;
+C 51 ; WX 556 ; N three ; B 75 -19 610 703 ;
+C 52 ; WX 556 ; N four ; B 61 0 576 703 ;
+C 53 ; WX 556 ; N five ; B 68 -19 621 688 ;
+C 54 ; WX 556 ; N six ; B 91 -19 615 703 ;
+C 55 ; WX 556 ; N seven ; B 137 0 669 688 ;
+C 56 ; WX 556 ; N eight ; B 74 -19 607 703 ;
+C 57 ; WX 556 ; N nine ; B 82 -19 609 703 ;
+C 58 ; WX 278 ; N colon ; B 87 0 301 516 ;
+C 59 ; WX 278 ; N semicolon ; B 56 -147 301 516 ;
+C 60 ; WX 584 ; N less ; B 94 11 641 495 ;
+C 61 ; WX 584 ; N equal ; B 63 115 628 390 ;
+C 62 ; WX 584 ; N greater ; B 50 11 597 495 ;
+C 63 ; WX 556 ; N question ; B 161 0 610 727 ;
+C 64 ; WX 1015 ; N at ; B 215 -19 965 737 ;
+C 65 ; WX 667 ; N A ; B 14 0 654 718 ;
+C 66 ; WX 667 ; N B ; B 74 0 712 718 ;
+C 67 ; WX 722 ; N C ; B 108 -19 782 737 ;
+C 68 ; WX 722 ; N D ; B 81 0 764 718 ;
+C 69 ; WX 667 ; N E ; B 86 0 762 718 ;
+C 70 ; WX 611 ; N F ; B 86 0 736 718 ;
+C 71 ; WX 778 ; N G ; B 111 -19 799 737 ;
+C 72 ; WX 722 ; N H ; B 77 0 799 718 ;
+C 73 ; WX 278 ; N I ; B 91 0 341 718 ;
+C 74 ; WX 500 ; N J ; B 47 -19 581 718 ;
+C 75 ; WX 667 ; N K ; B 76 0 808 718 ;
+C 76 ; WX 556 ; N L ; B 76 0 555 718 ;
+C 77 ; WX 833 ; N M ; B 73 0 914 718 ;
+C 78 ; WX 722 ; N N ; B 76 0 799 718 ;
+C 79 ; WX 778 ; N O ; B 105 -19 826 737 ;
+C 80 ; WX 667 ; N P ; B 86 0 737 718 ;
+C 81 ; WX 778 ; N Q ; B 105 -56 826 737 ;
+C 82 ; WX 722 ; N R ; B 88 0 773 718 ;
+C 83 ; WX 667 ; N S ; B 90 -19 713 737 ;
+C 84 ; WX 611 ; N T ; B 148 0 750 718 ;
+C 85 ; WX 722 ; N U ; B 123 -19 797 718 ;
+C 86 ; WX 667 ; N V ; B 173 0 800 718 ;
+C 87 ; WX 944 ; N W ; B 169 0 1081 718 ;
+C 88 ; WX 667 ; N X ; B 19 0 790 718 ;
+C 89 ; WX 667 ; N Y ; B 167 0 806 718 ;
+C 90 ; WX 611 ; N Z ; B 23 0 741 718 ;
+C 91 ; WX 278 ; N bracketleft ; B 21 -196 403 722 ;
+C 92 ; WX 278 ; N backslash ; B 140 -19 291 737 ;
+C 93 ; WX 278 ; N bracketright ; B -14 -196 368 722 ;
+C 94 ; WX 469 ; N asciicircum ; B 42 264 539 688 ;
+C 95 ; WX 556 ; N underscore ; B -27 -125 540 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 165 470 323 725 ;
+C 97 ; WX 556 ; N a ; B 61 -15 559 538 ;
+C 98 ; WX 556 ; N b ; B 58 -15 584 718 ;
+C 99 ; WX 500 ; N c ; B 74 -15 553 538 ;
+C 100 ; WX 556 ; N d ; B 84 -15 652 718 ;
+C 101 ; WX 556 ; N e ; B 84 -15 578 538 ;
+C 102 ; WX 278 ; N f ; B 86 0 416 728 ; L i fi ; L l fl ;
+C 103 ; WX 556 ; N g ; B 42 -220 610 538 ;
+C 104 ; WX 556 ; N h ; B 65 0 573 718 ;
+C 105 ; WX 222 ; N i ; B 67 0 308 718 ;
+C 106 ; WX 222 ; N j ; B -60 -210 308 718 ;
+C 107 ; WX 500 ; N k ; B 67 0 600 718 ;
+C 108 ; WX 222 ; N l ; B 67 0 308 718 ;
+C 109 ; WX 833 ; N m ; B 65 0 852 538 ;
+C 110 ; WX 556 ; N n ; B 65 0 573 538 ;
+C 111 ; WX 556 ; N o ; B 83 -14 585 538 ;
+C 112 ; WX 556 ; N p ; B 14 -207 584 538 ;
+C 113 ; WX 556 ; N q ; B 84 -207 605 538 ;
+C 114 ; WX 333 ; N r ; B 77 0 446 538 ;
+C 115 ; WX 500 ; N s ; B 63 -15 529 538 ;
+C 116 ; WX 278 ; N t ; B 102 -7 368 669 ;
+C 117 ; WX 556 ; N u ; B 94 -15 600 523 ;
+C 118 ; WX 500 ; N v ; B 119 0 603 523 ;
+C 119 ; WX 722 ; N w ; B 125 0 820 523 ;
+C 120 ; WX 500 ; N x ; B 11 0 594 523 ;
+C 121 ; WX 500 ; N y ; B 15 -214 600 523 ;
+C 122 ; WX 500 ; N z ; B 31 0 571 523 ;
+C 123 ; WX 334 ; N braceleft ; B 92 -196 445 722 ;
+C 124 ; WX 260 ; N bar ; B 46 -225 332 775 ;
+C 125 ; WX 334 ; N braceright ; B 0 -196 354 722 ;
+C 126 ; WX 584 ; N asciitilde ; B 111 180 580 326 ;
+C 161 ; WX 333 ; N exclamdown ; B 77 -195 326 523 ;
+C 162 ; WX 556 ; N cent ; B 95 -115 584 623 ;
+C 163 ; WX 556 ; N sterling ; B 49 -16 634 718 ;
+C 164 ; WX 167 ; N fraction ; B -170 -19 482 703 ;
+C 165 ; WX 556 ; N yen ; B 81 0 699 688 ;
+C 166 ; WX 556 ; N florin ; B -52 -207 654 737 ;
+C 167 ; WX 556 ; N section ; B 76 -191 584 737 ;
+C 168 ; WX 556 ; N currency ; B 60 99 646 603 ;
+C 169 ; WX 191 ; N quotesingle ; B 157 463 285 718 ;
+C 170 ; WX 333 ; N quotedblleft ; B 138 470 461 725 ;
+C 171 ; WX 556 ; N guillemotleft ; B 146 108 554 446 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 137 108 340 446 ;
+C 173 ; WX 333 ; N guilsinglright ; B 111 108 314 446 ;
+C 174 ; WX 500 ; N fi ; B 86 0 587 728 ;
+C 175 ; WX 500 ; N fl ; B 86 0 585 728 ;
+C 177 ; WX 556 ; N endash ; B 51 240 623 313 ;
+C 178 ; WX 556 ; N dagger ; B 135 -159 622 718 ;
+C 179 ; WX 556 ; N daggerdbl ; B 52 -159 623 718 ;
+C 180 ; WX 278 ; N periodcentered ; B 129 190 257 315 ;
+C 182 ; WX 537 ; N paragraph ; B 126 -173 650 718 ;
+C 183 ; WX 350 ; N bullet ; B 91 202 413 517 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 21 -149 180 106 ;
+C 185 ; WX 333 ; N quotedblbase ; B -6 -149 318 106 ;
+C 186 ; WX 333 ; N quotedblright ; B 124 463 448 718 ;
+C 187 ; WX 556 ; N guillemotright ; B 120 108 528 446 ;
+C 188 ; WX 1000 ; N ellipsis ; B 115 0 908 106 ;
+C 189 ; WX 1000 ; N perthousand ; B 88 -19 1029 703 ;
+C 191 ; WX 611 ; N questiondown ; B 85 -201 534 525 ;
+C 193 ; WX 333 ; N grave ; B 170 593 337 734 ;
+C 194 ; WX 333 ; N acute ; B 248 593 475 734 ;
+C 195 ; WX 333 ; N circumflex ; B 147 593 438 734 ;
+C 196 ; WX 333 ; N tilde ; B 125 606 490 722 ;
+C 197 ; WX 333 ; N macron ; B 143 627 468 684 ;
+C 198 ; WX 333 ; N breve ; B 167 595 476 731 ;
+C 199 ; WX 333 ; N dotaccent ; B 249 604 362 706 ;
+C 200 ; WX 333 ; N dieresis ; B 168 604 443 706 ;
+C 202 ; WX 333 ; N ring ; B 214 572 402 756 ;
+C 203 ; WX 333 ; N cedilla ; B 2 -225 232 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 157 593 565 734 ;
+C 206 ; WX 333 ; N ogonek ; B 43 -225 249 0 ;
+C 207 ; WX 333 ; N caron ; B 177 593 468 734 ;
+C 208 ; WX 1000 ; N emdash ; B 51 240 1067 313 ;
+C 225 ; WX 1000 ; N AE ; B 8 0 1097 718 ;
+C 227 ; WX 370 ; N ordfeminine ; B 127 405 449 737 ;
+C 232 ; WX 556 ; N Lslash ; B 41 0 555 718 ;
+C 233 ; WX 778 ; N Oslash ; B 43 -19 890 737 ;
+C 234 ; WX 1000 ; N OE ; B 98 -19 1116 737 ;
+C 235 ; WX 365 ; N ordmasculine ; B 141 405 468 737 ;
+C 241 ; WX 889 ; N ae ; B 61 -15 909 538 ;
+C 245 ; WX 278 ; N dotlessi ; B 95 0 294 523 ;
+C 248 ; WX 222 ; N lslash ; B 41 0 347 718 ;
+C 249 ; WX 611 ; N oslash ; B 29 -22 647 545 ;
+C 250 ; WX 944 ; N oe ; B 83 -15 964 538 ;
+C 251 ; WX 611 ; N germandbls ; B 67 -15 658 728 ;
+C -1 ; WX 278 ; N Idieresis ; B 91 0 458 901 ;
+C -1 ; WX 556 ; N eacute ; B 84 -15 587 734 ;
+C -1 ; WX 556 ; N abreve ; B 61 -15 578 731 ;
+C -1 ; WX 556 ; N uhungarumlaut ; B 94 -15 677 734 ;
+C -1 ; WX 556 ; N ecaron ; B 84 -15 580 734 ;
+C -1 ; WX 667 ; N Ydieresis ; B 167 0 806 901 ;
+C -1 ; WX 584 ; N divide ; B 85 -19 606 524 ;
+C -1 ; WX 667 ; N Yacute ; B 167 0 806 929 ;
+C -1 ; WX 667 ; N Acircumflex ; B 14 0 654 929 ;
+C -1 ; WX 556 ; N aacute ; B 61 -15 587 734 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 123 -19 797 929 ;
+C -1 ; WX 500 ; N yacute ; B 15 -214 600 734 ;
+C -1 ; WX 500 ; N scommaaccent ; B 63 -225 529 538 ;
+C -1 ; WX 556 ; N ecircumflex ; B 84 -15 578 734 ;
+C -1 ; WX 722 ; N Uring ; B 123 -19 797 931 ;
+C -1 ; WX 722 ; N Udieresis ; B 123 -19 797 901 ;
+C -1 ; WX 556 ; N aogonek ; B 61 -220 559 538 ;
+C -1 ; WX 722 ; N Uacute ; B 123 -19 797 929 ;
+C -1 ; WX 556 ; N uogonek ; B 94 -225 600 523 ;
+C -1 ; WX 667 ; N Edieresis ; B 86 0 762 901 ;
+C -1 ; WX 722 ; N Dcroat ; B 69 0 764 718 ;
+C -1 ; WX 250 ; N commaaccent ; B 39 -225 172 -40 ;
+C -1 ; WX 737 ; N copyright ; B 54 -19 837 737 ;
+C -1 ; WX 667 ; N Emacron ; B 86 0 762 879 ;
+C -1 ; WX 500 ; N ccaron ; B 74 -15 553 734 ;
+C -1 ; WX 556 ; N aring ; B 61 -15 559 756 ;
+C -1 ; WX 722 ; N Ncommaaccent ; B 76 -225 799 718 ;
+C -1 ; WX 222 ; N lacute ; B 67 0 461 929 ;
+C -1 ; WX 556 ; N agrave ; B 61 -15 559 734 ;
+C -1 ; WX 611 ; N Tcommaaccent ; B 148 -225 750 718 ;
+C -1 ; WX 722 ; N Cacute ; B 108 -19 782 929 ;
+C -1 ; WX 556 ; N atilde ; B 61 -15 592 722 ;
+C -1 ; WX 667 ; N Edotaccent ; B 86 0 762 901 ;
+C -1 ; WX 500 ; N scaron ; B 63 -15 552 734 ;
+C -1 ; WX 500 ; N scedilla ; B 63 -225 529 538 ;
+C -1 ; WX 278 ; N iacute ; B 95 0 448 734 ;
+C -1 ; WX 471 ; N lozenge ; B 88 0 540 728 ;
+C -1 ; WX 722 ; N Rcaron ; B 88 0 773 929 ;
+C -1 ; WX 778 ; N Gcommaaccent ; B 111 -225 799 737 ;
+C -1 ; WX 556 ; N ucircumflex ; B 94 -15 600 734 ;
+C -1 ; WX 556 ; N acircumflex ; B 61 -15 559 734 ;
+C -1 ; WX 667 ; N Amacron ; B 14 0 677 879 ;
+C -1 ; WX 333 ; N rcaron ; B 77 0 508 734 ;
+C -1 ; WX 500 ; N ccedilla ; B 74 -225 553 538 ;
+C -1 ; WX 611 ; N Zdotaccent ; B 23 0 741 901 ;
+C -1 ; WX 667 ; N Thorn ; B 86 0 712 718 ;
+C -1 ; WX 778 ; N Omacron ; B 105 -19 826 879 ;
+C -1 ; WX 722 ; N Racute ; B 88 0 773 929 ;
+C -1 ; WX 667 ; N Sacute ; B 90 -19 713 929 ;
+C -1 ; WX 643 ; N dcaron ; B 84 -15 808 718 ;
+C -1 ; WX 722 ; N Umacron ; B 123 -19 797 879 ;
+C -1 ; WX 556 ; N uring ; B 94 -15 600 756 ;
+C -1 ; WX 333 ; N threesuperior ; B 90 270 436 703 ;
+C -1 ; WX 778 ; N Ograve ; B 105 -19 826 929 ;
+C -1 ; WX 667 ; N Agrave ; B 14 0 654 929 ;
+C -1 ; WX 667 ; N Abreve ; B 14 0 685 926 ;
+C -1 ; WX 584 ; N multiply ; B 50 0 642 506 ;
+C -1 ; WX 556 ; N uacute ; B 94 -15 600 734 ;
+C -1 ; WX 611 ; N Tcaron ; B 148 0 750 929 ;
+C -1 ; WX 476 ; N partialdiff ; B 41 -38 550 714 ;
+C -1 ; WX 500 ; N ydieresis ; B 15 -214 600 706 ;
+C -1 ; WX 722 ; N Nacute ; B 76 0 799 929 ;
+C -1 ; WX 278 ; N icircumflex ; B 95 0 411 734 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 86 0 762 929 ;
+C -1 ; WX 556 ; N adieresis ; B 61 -15 559 706 ;
+C -1 ; WX 556 ; N edieresis ; B 84 -15 578 706 ;
+C -1 ; WX 500 ; N cacute ; B 74 -15 559 734 ;
+C -1 ; WX 556 ; N nacute ; B 65 0 587 734 ;
+C -1 ; WX 556 ; N umacron ; B 94 -15 600 684 ;
+C -1 ; WX 722 ; N Ncaron ; B 76 0 799 929 ;
+C -1 ; WX 278 ; N Iacute ; B 91 0 489 929 ;
+C -1 ; WX 584 ; N plusminus ; B 39 0 618 506 ;
+C -1 ; WX 260 ; N brokenbar ; B 62 -150 316 700 ;
+C -1 ; WX 737 ; N registered ; B 54 -19 837 737 ;
+C -1 ; WX 778 ; N Gbreve ; B 111 -19 799 926 ;
+C -1 ; WX 278 ; N Idotaccent ; B 91 0 377 901 ;
+C -1 ; WX 600 ; N summation ; B 15 -10 671 706 ;
+C -1 ; WX 667 ; N Egrave ; B 86 0 762 929 ;
+C -1 ; WX 333 ; N racute ; B 77 0 475 734 ;
+C -1 ; WX 556 ; N omacron ; B 83 -14 585 684 ;
+C -1 ; WX 611 ; N Zacute ; B 23 0 741 929 ;
+C -1 ; WX 611 ; N Zcaron ; B 23 0 741 929 ;
+C -1 ; WX 549 ; N greaterequal ; B 26 0 620 674 ;
+C -1 ; WX 722 ; N Eth ; B 69 0 764 718 ;
+C -1 ; WX 722 ; N Ccedilla ; B 108 -225 782 737 ;
+C -1 ; WX 222 ; N lcommaaccent ; B 25 -225 308 718 ;
+C -1 ; WX 317 ; N tcaron ; B 102 -7 501 808 ;
+C -1 ; WX 556 ; N eogonek ; B 84 -225 578 538 ;
+C -1 ; WX 722 ; N Uogonek ; B 123 -225 797 718 ;
+C -1 ; WX 667 ; N Aacute ; B 14 0 683 929 ;
+C -1 ; WX 667 ; N Adieresis ; B 14 0 654 901 ;
+C -1 ; WX 556 ; N egrave ; B 84 -15 578 734 ;
+C -1 ; WX 500 ; N zacute ; B 31 0 571 734 ;
+C -1 ; WX 222 ; N iogonek ; B -61 -225 308 718 ;
+C -1 ; WX 778 ; N Oacute ; B 105 -19 826 929 ;
+C -1 ; WX 556 ; N oacute ; B 83 -14 587 734 ;
+C -1 ; WX 556 ; N amacron ; B 61 -15 580 684 ;
+C -1 ; WX 500 ; N sacute ; B 63 -15 559 734 ;
+C -1 ; WX 278 ; N idieresis ; B 95 0 416 706 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 105 -19 826 929 ;
+C -1 ; WX 722 ; N Ugrave ; B 123 -19 797 929 ;
+C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
+C -1 ; WX 556 ; N thorn ; B 14 -207 584 718 ;
+C -1 ; WX 333 ; N twosuperior ; B 64 281 449 703 ;
+C -1 ; WX 778 ; N Odieresis ; B 105 -19 826 901 ;
+C -1 ; WX 556 ; N mu ; B 24 -207 600 523 ;
+C -1 ; WX 278 ; N igrave ; B 95 0 310 734 ;
+C -1 ; WX 556 ; N ohungarumlaut ; B 83 -14 677 734 ;
+C -1 ; WX 667 ; N Eogonek ; B 86 -220 762 718 ;
+C -1 ; WX 556 ; N dcroat ; B 84 -15 689 718 ;
+C -1 ; WX 834 ; N threequarters ; B 130 -19 861 703 ;
+C -1 ; WX 667 ; N Scedilla ; B 90 -225 713 737 ;
+C -1 ; WX 299 ; N lcaron ; B 67 0 464 718 ;
+C -1 ; WX 667 ; N Kcommaaccent ; B 76 -225 808 718 ;
+C -1 ; WX 556 ; N Lacute ; B 76 0 555 929 ;
+C -1 ; WX 1000 ; N trademark ; B 186 306 1056 718 ;
+C -1 ; WX 556 ; N edotaccent ; B 84 -15 578 706 ;
+C -1 ; WX 278 ; N Igrave ; B 91 0 351 929 ;
+C -1 ; WX 278 ; N Imacron ; B 91 0 483 879 ;
+C -1 ; WX 556 ; N Lcaron ; B 76 0 570 718 ;
+C -1 ; WX 834 ; N onehalf ; B 114 -19 839 703 ;
+C -1 ; WX 549 ; N lessequal ; B 26 0 666 674 ;
+C -1 ; WX 556 ; N ocircumflex ; B 83 -14 585 734 ;
+C -1 ; WX 556 ; N ntilde ; B 65 0 592 722 ;
+C -1 ; WX 722 ; N Uhungarumlaut ; B 123 -19 801 929 ;
+C -1 ; WX 667 ; N Eacute ; B 86 0 762 929 ;
+C -1 ; WX 556 ; N emacron ; B 84 -15 580 684 ;
+C -1 ; WX 556 ; N gbreve ; B 42 -220 610 731 ;
+C -1 ; WX 834 ; N onequarter ; B 150 -19 802 703 ;
+C -1 ; WX 667 ; N Scaron ; B 90 -19 713 929 ;
+C -1 ; WX 667 ; N Scommaaccent ; B 90 -225 713 737 ;
+C -1 ; WX 778 ; N Ohungarumlaut ; B 105 -19 829 929 ;
+C -1 ; WX 400 ; N degree ; B 169 411 468 703 ;
+C -1 ; WX 556 ; N ograve ; B 83 -14 585 734 ;
+C -1 ; WX 722 ; N Ccaron ; B 108 -19 782 929 ;
+C -1 ; WX 556 ; N ugrave ; B 94 -15 600 734 ;
+C -1 ; WX 453 ; N radical ; B 79 -80 617 762 ;
+C -1 ; WX 722 ; N Dcaron ; B 81 0 764 929 ;
+C -1 ; WX 333 ; N rcommaaccent ; B 30 -225 446 538 ;
+C -1 ; WX 722 ; N Ntilde ; B 76 0 799 917 ;
+C -1 ; WX 556 ; N otilde ; B 83 -14 602 722 ;
+C -1 ; WX 722 ; N Rcommaaccent ; B 88 -225 773 718 ;
+C -1 ; WX 556 ; N Lcommaaccent ; B 76 -225 555 718 ;
+C -1 ; WX 667 ; N Atilde ; B 14 0 699 917 ;
+C -1 ; WX 667 ; N Aogonek ; B 14 -225 654 718 ;
+C -1 ; WX 667 ; N Aring ; B 14 0 654 931 ;
+C -1 ; WX 778 ; N Otilde ; B 105 -19 826 917 ;
+C -1 ; WX 500 ; N zdotaccent ; B 31 0 571 706 ;
+C -1 ; WX 667 ; N Ecaron ; B 86 0 762 929 ;
+C -1 ; WX 278 ; N Iogonek ; B -33 -225 341 718 ;
+C -1 ; WX 500 ; N kcommaaccent ; B 67 -225 600 718 ;
+C -1 ; WX 584 ; N minus ; B 85 216 606 289 ;
+C -1 ; WX 278 ; N Icircumflex ; B 91 0 452 929 ;
+C -1 ; WX 556 ; N ncaron ; B 65 0 580 734 ;
+C -1 ; WX 278 ; N tcommaaccent ; B 63 -225 368 669 ;
+C -1 ; WX 584 ; N logicalnot ; B 106 108 628 390 ;
+C -1 ; WX 556 ; N odieresis ; B 83 -14 585 706 ;
+C -1 ; WX 556 ; N udieresis ; B 94 -15 600 706 ;
+C -1 ; WX 549 ; N notequal ; B 34 -35 623 551 ;
+C -1 ; WX 556 ; N gcommaaccent ; B 42 -220 610 822 ;
+C -1 ; WX 556 ; N eth ; B 81 -15 617 737 ;
+C -1 ; WX 500 ; N zcaron ; B 31 0 571 734 ;
+C -1 ; WX 556 ; N ncommaaccent ; B 65 -225 573 538 ;
+C -1 ; WX 333 ; N onesuperior ; B 166 281 371 703 ;
+C -1 ; WX 278 ; N imacron ; B 95 0 417 684 ;
+C -1 ; WX 556 ; N Euro ; B 0 0 0 0 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 2705
+KPX A C -30
+KPX A Cacute -30
+KPX A Ccaron -30
+KPX A Ccedilla -30
+KPX A G -30
+KPX A Gbreve -30
+KPX A Gcommaaccent -30
+KPX A O -30
+KPX A Oacute -30
+KPX A Ocircumflex -30
+KPX A Odieresis -30
+KPX A Ograve -30
+KPX A Ohungarumlaut -30
+KPX A Omacron -30
+KPX A Oslash -30
+KPX A Otilde -30
+KPX A Q -30
+KPX A T -120
+KPX A Tcaron -120
+KPX A Tcommaaccent -120
+KPX A U -50
+KPX A Uacute -50
+KPX A Ucircumflex -50
+KPX A Udieresis -50
+KPX A Ugrave -50
+KPX A Uhungarumlaut -50
+KPX A Umacron -50
+KPX A Uogonek -50
+KPX A Uring -50
+KPX A V -70
+KPX A W -50
+KPX A Y -100
+KPX A Yacute -100
+KPX A Ydieresis -100
+KPX A u -30
+KPX A uacute -30
+KPX A ucircumflex -30
+KPX A udieresis -30
+KPX A ugrave -30
+KPX A uhungarumlaut -30
+KPX A umacron -30
+KPX A uogonek -30
+KPX A uring -30
+KPX A v -40
+KPX A w -40
+KPX A y -40
+KPX A yacute -40
+KPX A ydieresis -40
+KPX Aacute C -30
+KPX Aacute Cacute -30
+KPX Aacute Ccaron -30
+KPX Aacute Ccedilla -30
+KPX Aacute G -30
+KPX Aacute Gbreve -30
+KPX Aacute Gcommaaccent -30
+KPX Aacute O -30
+KPX Aacute Oacute -30
+KPX Aacute Ocircumflex -30
+KPX Aacute Odieresis -30
+KPX Aacute Ograve -30
+KPX Aacute Ohungarumlaut -30
+KPX Aacute Omacron -30
+KPX Aacute Oslash -30
+KPX Aacute Otilde -30
+KPX Aacute Q -30
+KPX Aacute T -120
+KPX Aacute Tcaron -120
+KPX Aacute Tcommaaccent -120
+KPX Aacute U -50
+KPX Aacute Uacute -50
+KPX Aacute Ucircumflex -50
+KPX Aacute Udieresis -50
+KPX Aacute Ugrave -50
+KPX Aacute Uhungarumlaut -50
+KPX Aacute Umacron -50
+KPX Aacute Uogonek -50
+KPX Aacute Uring -50
+KPX Aacute V -70
+KPX Aacute W -50
+KPX Aacute Y -100
+KPX Aacute Yacute -100
+KPX Aacute Ydieresis -100
+KPX Aacute u -30
+KPX Aacute uacute -30
+KPX Aacute ucircumflex -30
+KPX Aacute udieresis -30
+KPX Aacute ugrave -30
+KPX Aacute uhungarumlaut -30
+KPX Aacute umacron -30
+KPX Aacute uogonek -30
+KPX Aacute uring -30
+KPX Aacute v -40
+KPX Aacute w -40
+KPX Aacute y -40
+KPX Aacute yacute -40
+KPX Aacute ydieresis -40
+KPX Abreve C -30
+KPX Abreve Cacute -30
+KPX Abreve Ccaron -30
+KPX Abreve Ccedilla -30
+KPX Abreve G -30
+KPX Abreve Gbreve -30
+KPX Abreve Gcommaaccent -30
+KPX Abreve O -30
+KPX Abreve Oacute -30
+KPX Abreve Ocircumflex -30
+KPX Abreve Odieresis -30
+KPX Abreve Ograve -30
+KPX Abreve Ohungarumlaut -30
+KPX Abreve Omacron -30
+KPX Abreve Oslash -30
+KPX Abreve Otilde -30
+KPX Abreve Q -30
+KPX Abreve T -120
+KPX Abreve Tcaron -120
+KPX Abreve Tcommaaccent -120
+KPX Abreve U -50
+KPX Abreve Uacute -50
+KPX Abreve Ucircumflex -50
+KPX Abreve Udieresis -50
+KPX Abreve Ugrave -50
+KPX Abreve Uhungarumlaut -50
+KPX Abreve Umacron -50
+KPX Abreve Uogonek -50
+KPX Abreve Uring -50
+KPX Abreve V -70
+KPX Abreve W -50
+KPX Abreve Y -100
+KPX Abreve Yacute -100
+KPX Abreve Ydieresis -100
+KPX Abreve u -30
+KPX Abreve uacute -30
+KPX Abreve ucircumflex -30
+KPX Abreve udieresis -30
+KPX Abreve ugrave -30
+KPX Abreve uhungarumlaut -30
+KPX Abreve umacron -30
+KPX Abreve uogonek -30
+KPX Abreve uring -30
+KPX Abreve v -40
+KPX Abreve w -40
+KPX Abreve y -40
+KPX Abreve yacute -40
+KPX Abreve ydieresis -40
+KPX Acircumflex C -30
+KPX Acircumflex Cacute -30
+KPX Acircumflex Ccaron -30
+KPX Acircumflex Ccedilla -30
+KPX Acircumflex G -30
+KPX Acircumflex Gbreve -30
+KPX Acircumflex Gcommaaccent -30
+KPX Acircumflex O -30
+KPX Acircumflex Oacute -30
+KPX Acircumflex Ocircumflex -30
+KPX Acircumflex Odieresis -30
+KPX Acircumflex Ograve -30
+KPX Acircumflex Ohungarumlaut -30
+KPX Acircumflex Omacron -30
+KPX Acircumflex Oslash -30
+KPX Acircumflex Otilde -30
+KPX Acircumflex Q -30
+KPX Acircumflex T -120
+KPX Acircumflex Tcaron -120
+KPX Acircumflex Tcommaaccent -120
+KPX Acircumflex U -50
+KPX Acircumflex Uacute -50
+KPX Acircumflex Ucircumflex -50
+KPX Acircumflex Udieresis -50
+KPX Acircumflex Ugrave -50
+KPX Acircumflex Uhungarumlaut -50
+KPX Acircumflex Umacron -50
+KPX Acircumflex Uogonek -50
+KPX Acircumflex Uring -50
+KPX Acircumflex V -70
+KPX Acircumflex W -50
+KPX Acircumflex Y -100
+KPX Acircumflex Yacute -100
+KPX Acircumflex Ydieresis -100
+KPX Acircumflex u -30
+KPX Acircumflex uacute -30
+KPX Acircumflex ucircumflex -30
+KPX Acircumflex udieresis -30
+KPX Acircumflex ugrave -30
+KPX Acircumflex uhungarumlaut -30
+KPX Acircumflex umacron -30
+KPX Acircumflex uogonek -30
+KPX Acircumflex uring -30
+KPX Acircumflex v -40
+KPX Acircumflex w -40
+KPX Acircumflex y -40
+KPX Acircumflex yacute -40
+KPX Acircumflex ydieresis -40
+KPX Adieresis C -30
+KPX Adieresis Cacute -30
+KPX Adieresis Ccaron -30
+KPX Adieresis Ccedilla -30
+KPX Adieresis G -30
+KPX Adieresis Gbreve -30
+KPX Adieresis Gcommaaccent -30
+KPX Adieresis O -30
+KPX Adieresis Oacute -30
+KPX Adieresis Ocircumflex -30
+KPX Adieresis Odieresis -30
+KPX Adieresis Ograve -30
+KPX Adieresis Ohungarumlaut -30
+KPX Adieresis Omacron -30
+KPX Adieresis Oslash -30
+KPX Adieresis Otilde -30
+KPX Adieresis Q -30
+KPX Adieresis T -120
+KPX Adieresis Tcaron -120
+KPX Adieresis Tcommaaccent -120
+KPX Adieresis U -50
+KPX Adieresis Uacute -50
+KPX Adieresis Ucircumflex -50
+KPX Adieresis Udieresis -50
+KPX Adieresis Ugrave -50
+KPX Adieresis Uhungarumlaut -50
+KPX Adieresis Umacron -50
+KPX Adieresis Uogonek -50
+KPX Adieresis Uring -50
+KPX Adieresis V -70
+KPX Adieresis W -50
+KPX Adieresis Y -100
+KPX Adieresis Yacute -100
+KPX Adieresis Ydieresis -100
+KPX Adieresis u -30
+KPX Adieresis uacute -30
+KPX Adieresis ucircumflex -30
+KPX Adieresis udieresis -30
+KPX Adieresis ugrave -30
+KPX Adieresis uhungarumlaut -30
+KPX Adieresis umacron -30
+KPX Adieresis uogonek -30
+KPX Adieresis uring -30
+KPX Adieresis v -40
+KPX Adieresis w -40
+KPX Adieresis y -40
+KPX Adieresis yacute -40
+KPX Adieresis ydieresis -40
+KPX Agrave C -30
+KPX Agrave Cacute -30
+KPX Agrave Ccaron -30
+KPX Agrave Ccedilla -30
+KPX Agrave G -30
+KPX Agrave Gbreve -30
+KPX Agrave Gcommaaccent -30
+KPX Agrave O -30
+KPX Agrave Oacute -30
+KPX Agrave Ocircumflex -30
+KPX Agrave Odieresis -30
+KPX Agrave Ograve -30
+KPX Agrave Ohungarumlaut -30
+KPX Agrave Omacron -30
+KPX Agrave Oslash -30
+KPX Agrave Otilde -30
+KPX Agrave Q -30
+KPX Agrave T -120
+KPX Agrave Tcaron -120
+KPX Agrave Tcommaaccent -120
+KPX Agrave U -50
+KPX Agrave Uacute -50
+KPX Agrave Ucircumflex -50
+KPX Agrave Udieresis -50
+KPX Agrave Ugrave -50
+KPX Agrave Uhungarumlaut -50
+KPX Agrave Umacron -50
+KPX Agrave Uogonek -50
+KPX Agrave Uring -50
+KPX Agrave V -70
+KPX Agrave W -50
+KPX Agrave Y -100
+KPX Agrave Yacute -100
+KPX Agrave Ydieresis -100
+KPX Agrave u -30
+KPX Agrave uacute -30
+KPX Agrave ucircumflex -30
+KPX Agrave udieresis -30
+KPX Agrave ugrave -30
+KPX Agrave uhungarumlaut -30
+KPX Agrave umacron -30
+KPX Agrave uogonek -30
+KPX Agrave uring -30
+KPX Agrave v -40
+KPX Agrave w -40
+KPX Agrave y -40
+KPX Agrave yacute -40
+KPX Agrave ydieresis -40
+KPX Amacron C -30
+KPX Amacron Cacute -30
+KPX Amacron Ccaron -30
+KPX Amacron Ccedilla -30
+KPX Amacron G -30
+KPX Amacron Gbreve -30
+KPX Amacron Gcommaaccent -30
+KPX Amacron O -30
+KPX Amacron Oacute -30
+KPX Amacron Ocircumflex -30
+KPX Amacron Odieresis -30
+KPX Amacron Ograve -30
+KPX Amacron Ohungarumlaut -30
+KPX Amacron Omacron -30
+KPX Amacron Oslash -30
+KPX Amacron Otilde -30
+KPX Amacron Q -30
+KPX Amacron T -120
+KPX Amacron Tcaron -120
+KPX Amacron Tcommaaccent -120
+KPX Amacron U -50
+KPX Amacron Uacute -50
+KPX Amacron Ucircumflex -50
+KPX Amacron Udieresis -50
+KPX Amacron Ugrave -50
+KPX Amacron Uhungarumlaut -50
+KPX Amacron Umacron -50
+KPX Amacron Uogonek -50
+KPX Amacron Uring -50
+KPX Amacron V -70
+KPX Amacron W -50
+KPX Amacron Y -100
+KPX Amacron Yacute -100
+KPX Amacron Ydieresis -100
+KPX Amacron u -30
+KPX Amacron uacute -30
+KPX Amacron ucircumflex -30
+KPX Amacron udieresis -30
+KPX Amacron ugrave -30
+KPX Amacron uhungarumlaut -30
+KPX Amacron umacron -30
+KPX Amacron uogonek -30
+KPX Amacron uring -30
+KPX Amacron v -40
+KPX Amacron w -40
+KPX Amacron y -40
+KPX Amacron yacute -40
+KPX Amacron ydieresis -40
+KPX Aogonek C -30
+KPX Aogonek Cacute -30
+KPX Aogonek Ccaron -30
+KPX Aogonek Ccedilla -30
+KPX Aogonek G -30
+KPX Aogonek Gbreve -30
+KPX Aogonek Gcommaaccent -30
+KPX Aogonek O -30
+KPX Aogonek Oacute -30
+KPX Aogonek Ocircumflex -30
+KPX Aogonek Odieresis -30
+KPX Aogonek Ograve -30
+KPX Aogonek Ohungarumlaut -30
+KPX Aogonek Omacron -30
+KPX Aogonek Oslash -30
+KPX Aogonek Otilde -30
+KPX Aogonek Q -30
+KPX Aogonek T -120
+KPX Aogonek Tcaron -120
+KPX Aogonek Tcommaaccent -120
+KPX Aogonek U -50
+KPX Aogonek Uacute -50
+KPX Aogonek Ucircumflex -50
+KPX Aogonek Udieresis -50
+KPX Aogonek Ugrave -50
+KPX Aogonek Uhungarumlaut -50
+KPX Aogonek Umacron -50
+KPX Aogonek Uogonek -50
+KPX Aogonek Uring -50
+KPX Aogonek V -70
+KPX Aogonek W -50
+KPX Aogonek Y -100
+KPX Aogonek Yacute -100
+KPX Aogonek Ydieresis -100
+KPX Aogonek u -30
+KPX Aogonek uacute -30
+KPX Aogonek ucircumflex -30
+KPX Aogonek udieresis -30
+KPX Aogonek ugrave -30
+KPX Aogonek uhungarumlaut -30
+KPX Aogonek umacron -30
+KPX Aogonek uogonek -30
+KPX Aogonek uring -30
+KPX Aogonek v -40
+KPX Aogonek w -40
+KPX Aogonek y -40
+KPX Aogonek yacute -40
+KPX Aogonek ydieresis -40
+KPX Aring C -30
+KPX Aring Cacute -30
+KPX Aring Ccaron -30
+KPX Aring Ccedilla -30
+KPX Aring G -30
+KPX Aring Gbreve -30
+KPX Aring Gcommaaccent -30
+KPX Aring O -30
+KPX Aring Oacute -30
+KPX Aring Ocircumflex -30
+KPX Aring Odieresis -30
+KPX Aring Ograve -30
+KPX Aring Ohungarumlaut -30
+KPX Aring Omacron -30
+KPX Aring Oslash -30
+KPX Aring Otilde -30
+KPX Aring Q -30
+KPX Aring T -120
+KPX Aring Tcaron -120
+KPX Aring Tcommaaccent -120
+KPX Aring U -50
+KPX Aring Uacute -50
+KPX Aring Ucircumflex -50
+KPX Aring Udieresis -50
+KPX Aring Ugrave -50
+KPX Aring Uhungarumlaut -50
+KPX Aring Umacron -50
+KPX Aring Uogonek -50
+KPX Aring Uring -50
+KPX Aring V -70
+KPX Aring W -50
+KPX Aring Y -100
+KPX Aring Yacute -100
+KPX Aring Ydieresis -100
+KPX Aring u -30
+KPX Aring uacute -30
+KPX Aring ucircumflex -30
+KPX Aring udieresis -30
+KPX Aring ugrave -30
+KPX Aring uhungarumlaut -30
+KPX Aring umacron -30
+KPX Aring uogonek -30
+KPX Aring uring -30
+KPX Aring v -40
+KPX Aring w -40
+KPX Aring y -40
+KPX Aring yacute -40
+KPX Aring ydieresis -40
+KPX Atilde C -30
+KPX Atilde Cacute -30
+KPX Atilde Ccaron -30
+KPX Atilde Ccedilla -30
+KPX Atilde G -30
+KPX Atilde Gbreve -30
+KPX Atilde Gcommaaccent -30
+KPX Atilde O -30
+KPX Atilde Oacute -30
+KPX Atilde Ocircumflex -30
+KPX Atilde Odieresis -30
+KPX Atilde Ograve -30
+KPX Atilde Ohungarumlaut -30
+KPX Atilde Omacron -30
+KPX Atilde Oslash -30
+KPX Atilde Otilde -30
+KPX Atilde Q -30
+KPX Atilde T -120
+KPX Atilde Tcaron -120
+KPX Atilde Tcommaaccent -120
+KPX Atilde U -50
+KPX Atilde Uacute -50
+KPX Atilde Ucircumflex -50
+KPX Atilde Udieresis -50
+KPX Atilde Ugrave -50
+KPX Atilde Uhungarumlaut -50
+KPX Atilde Umacron -50
+KPX Atilde Uogonek -50
+KPX Atilde Uring -50
+KPX Atilde V -70
+KPX Atilde W -50
+KPX Atilde Y -100
+KPX Atilde Yacute -100
+KPX Atilde Ydieresis -100
+KPX Atilde u -30
+KPX Atilde uacute -30
+KPX Atilde ucircumflex -30
+KPX Atilde udieresis -30
+KPX Atilde ugrave -30
+KPX Atilde uhungarumlaut -30
+KPX Atilde umacron -30
+KPX Atilde uogonek -30
+KPX Atilde uring -30
+KPX Atilde v -40
+KPX Atilde w -40
+KPX Atilde y -40
+KPX Atilde yacute -40
+KPX Atilde ydieresis -40
+KPX B U -10
+KPX B Uacute -10
+KPX B Ucircumflex -10
+KPX B Udieresis -10
+KPX B Ugrave -10
+KPX B Uhungarumlaut -10
+KPX B Umacron -10
+KPX B Uogonek -10
+KPX B Uring -10
+KPX B comma -20
+KPX B period -20
+KPX C comma -30
+KPX C period -30
+KPX Cacute comma -30
+KPX Cacute period -30
+KPX Ccaron comma -30
+KPX Ccaron period -30
+KPX Ccedilla comma -30
+KPX Ccedilla period -30
+KPX D A -40
+KPX D Aacute -40
+KPX D Abreve -40
+KPX D Acircumflex -40
+KPX D Adieresis -40
+KPX D Agrave -40
+KPX D Amacron -40
+KPX D Aogonek -40
+KPX D Aring -40
+KPX D Atilde -40
+KPX D V -70
+KPX D W -40
+KPX D Y -90
+KPX D Yacute -90
+KPX D Ydieresis -90
+KPX D comma -70
+KPX D period -70
+KPX Dcaron A -40
+KPX Dcaron Aacute -40
+KPX Dcaron Abreve -40
+KPX Dcaron Acircumflex -40
+KPX Dcaron Adieresis -40
+KPX Dcaron Agrave -40
+KPX Dcaron Amacron -40
+KPX Dcaron Aogonek -40
+KPX Dcaron Aring -40
+KPX Dcaron Atilde -40
+KPX Dcaron V -70
+KPX Dcaron W -40
+KPX Dcaron Y -90
+KPX Dcaron Yacute -90
+KPX Dcaron Ydieresis -90
+KPX Dcaron comma -70
+KPX Dcaron period -70
+KPX Dcroat A -40
+KPX Dcroat Aacute -40
+KPX Dcroat Abreve -40
+KPX Dcroat Acircumflex -40
+KPX Dcroat Adieresis -40
+KPX Dcroat Agrave -40
+KPX Dcroat Amacron -40
+KPX Dcroat Aogonek -40
+KPX Dcroat Aring -40
+KPX Dcroat Atilde -40
+KPX Dcroat V -70
+KPX Dcroat W -40
+KPX Dcroat Y -90
+KPX Dcroat Yacute -90
+KPX Dcroat Ydieresis -90
+KPX Dcroat comma -70
+KPX Dcroat period -70
+KPX F A -80
+KPX F Aacute -80
+KPX F Abreve -80
+KPX F Acircumflex -80
+KPX F Adieresis -80
+KPX F Agrave -80
+KPX F Amacron -80
+KPX F Aogonek -80
+KPX F Aring -80
+KPX F Atilde -80
+KPX F a -50
+KPX F aacute -50
+KPX F abreve -50
+KPX F acircumflex -50
+KPX F adieresis -50
+KPX F agrave -50
+KPX F amacron -50
+KPX F aogonek -50
+KPX F aring -50
+KPX F atilde -50
+KPX F comma -150
+KPX F e -30
+KPX F eacute -30
+KPX F ecaron -30
+KPX F ecircumflex -30
+KPX F edieresis -30
+KPX F edotaccent -30
+KPX F egrave -30
+KPX F emacron -30
+KPX F eogonek -30
+KPX F o -30
+KPX F oacute -30
+KPX F ocircumflex -30
+KPX F odieresis -30
+KPX F ograve -30
+KPX F ohungarumlaut -30
+KPX F omacron -30
+KPX F oslash -30
+KPX F otilde -30
+KPX F period -150
+KPX F r -45
+KPX F racute -45
+KPX F rcaron -45
+KPX F rcommaaccent -45
+KPX J A -20
+KPX J Aacute -20
+KPX J Abreve -20
+KPX J Acircumflex -20
+KPX J Adieresis -20
+KPX J Agrave -20
+KPX J Amacron -20
+KPX J Aogonek -20
+KPX J Aring -20
+KPX J Atilde -20
+KPX J a -20
+KPX J aacute -20
+KPX J abreve -20
+KPX J acircumflex -20
+KPX J adieresis -20
+KPX J agrave -20
+KPX J amacron -20
+KPX J aogonek -20
+KPX J aring -20
+KPX J atilde -20
+KPX J comma -30
+KPX J period -30
+KPX J u -20
+KPX J uacute -20
+KPX J ucircumflex -20
+KPX J udieresis -20
+KPX J ugrave -20
+KPX J uhungarumlaut -20
+KPX J umacron -20
+KPX J uogonek -20
+KPX J uring -20
+KPX K O -50
+KPX K Oacute -50
+KPX K Ocircumflex -50
+KPX K Odieresis -50
+KPX K Ograve -50
+KPX K Ohungarumlaut -50
+KPX K Omacron -50
+KPX K Oslash -50
+KPX K Otilde -50
+KPX K e -40
+KPX K eacute -40
+KPX K ecaron -40
+KPX K ecircumflex -40
+KPX K edieresis -40
+KPX K edotaccent -40
+KPX K egrave -40
+KPX K emacron -40
+KPX K eogonek -40
+KPX K o -40
+KPX K oacute -40
+KPX K ocircumflex -40
+KPX K odieresis -40
+KPX K ograve -40
+KPX K ohungarumlaut -40
+KPX K omacron -40
+KPX K oslash -40
+KPX K otilde -40
+KPX K u -30
+KPX K uacute -30
+KPX K ucircumflex -30
+KPX K udieresis -30
+KPX K ugrave -30
+KPX K uhungarumlaut -30
+KPX K umacron -30
+KPX K uogonek -30
+KPX K uring -30
+KPX K y -50
+KPX K yacute -50
+KPX K ydieresis -50
+KPX Kcommaaccent O -50
+KPX Kcommaaccent Oacute -50
+KPX Kcommaaccent Ocircumflex -50
+KPX Kcommaaccent Odieresis -50
+KPX Kcommaaccent Ograve -50
+KPX Kcommaaccent Ohungarumlaut -50
+KPX Kcommaaccent Omacron -50
+KPX Kcommaaccent Oslash -50
+KPX Kcommaaccent Otilde -50
+KPX Kcommaaccent e -40
+KPX Kcommaaccent eacute -40
+KPX Kcommaaccent ecaron -40
+KPX Kcommaaccent ecircumflex -40
+KPX Kcommaaccent edieresis -40
+KPX Kcommaaccent edotaccent -40
+KPX Kcommaaccent egrave -40
+KPX Kcommaaccent emacron -40
+KPX Kcommaaccent eogonek -40
+KPX Kcommaaccent o -40
+KPX Kcommaaccent oacute -40
+KPX Kcommaaccent ocircumflex -40
+KPX Kcommaaccent odieresis -40
+KPX Kcommaaccent ograve -40
+KPX Kcommaaccent ohungarumlaut -40
+KPX Kcommaaccent omacron -40
+KPX Kcommaaccent oslash -40
+KPX Kcommaaccent otilde -40
+KPX Kcommaaccent u -30
+KPX Kcommaaccent uacute -30
+KPX Kcommaaccent ucircumflex -30
+KPX Kcommaaccent udieresis -30
+KPX Kcommaaccent ugrave -30
+KPX Kcommaaccent uhungarumlaut -30
+KPX Kcommaaccent umacron -30
+KPX Kcommaaccent uogonek -30
+KPX Kcommaaccent uring -30
+KPX Kcommaaccent y -50
+KPX Kcommaaccent yacute -50
+KPX Kcommaaccent ydieresis -50
+KPX L T -110
+KPX L Tcaron -110
+KPX L Tcommaaccent -110
+KPX L V -110
+KPX L W -70
+KPX L Y -140
+KPX L Yacute -140
+KPX L Ydieresis -140
+KPX L quotedblright -140
+KPX L quoteright -160
+KPX L y -30
+KPX L yacute -30
+KPX L ydieresis -30
+KPX Lacute T -110
+KPX Lacute Tcaron -110
+KPX Lacute Tcommaaccent -110
+KPX Lacute V -110
+KPX Lacute W -70
+KPX Lacute Y -140
+KPX Lacute Yacute -140
+KPX Lacute Ydieresis -140
+KPX Lacute quotedblright -140
+KPX Lacute quoteright -160
+KPX Lacute y -30
+KPX Lacute yacute -30
+KPX Lacute ydieresis -30
+KPX Lcaron T -110
+KPX Lcaron Tcaron -110
+KPX Lcaron Tcommaaccent -110
+KPX Lcaron V -110
+KPX Lcaron W -70
+KPX Lcaron Y -140
+KPX Lcaron Yacute -140
+KPX Lcaron Ydieresis -140
+KPX Lcaron quotedblright -140
+KPX Lcaron quoteright -160
+KPX Lcaron y -30
+KPX Lcaron yacute -30
+KPX Lcaron ydieresis -30
+KPX Lcommaaccent T -110
+KPX Lcommaaccent Tcaron -110
+KPX Lcommaaccent Tcommaaccent -110
+KPX Lcommaaccent V -110
+KPX Lcommaaccent W -70
+KPX Lcommaaccent Y -140
+KPX Lcommaaccent Yacute -140
+KPX Lcommaaccent Ydieresis -140
+KPX Lcommaaccent quotedblright -140
+KPX Lcommaaccent quoteright -160
+KPX Lcommaaccent y -30
+KPX Lcommaaccent yacute -30
+KPX Lcommaaccent ydieresis -30
+KPX Lslash T -110
+KPX Lslash Tcaron -110
+KPX Lslash Tcommaaccent -110
+KPX Lslash V -110
+KPX Lslash W -70
+KPX Lslash Y -140
+KPX Lslash Yacute -140
+KPX Lslash Ydieresis -140
+KPX Lslash quotedblright -140
+KPX Lslash quoteright -160
+KPX Lslash y -30
+KPX Lslash yacute -30
+KPX Lslash ydieresis -30
+KPX O A -20
+KPX O Aacute -20
+KPX O Abreve -20
+KPX O Acircumflex -20
+KPX O Adieresis -20
+KPX O Agrave -20
+KPX O Amacron -20
+KPX O Aogonek -20
+KPX O Aring -20
+KPX O Atilde -20
+KPX O T -40
+KPX O Tcaron -40
+KPX O Tcommaaccent -40
+KPX O V -50
+KPX O W -30
+KPX O X -60
+KPX O Y -70
+KPX O Yacute -70
+KPX O Ydieresis -70
+KPX O comma -40
+KPX O period -40
+KPX Oacute A -20
+KPX Oacute Aacute -20
+KPX Oacute Abreve -20
+KPX Oacute Acircumflex -20
+KPX Oacute Adieresis -20
+KPX Oacute Agrave -20
+KPX Oacute Amacron -20
+KPX Oacute Aogonek -20
+KPX Oacute Aring -20
+KPX Oacute Atilde -20
+KPX Oacute T -40
+KPX Oacute Tcaron -40
+KPX Oacute Tcommaaccent -40
+KPX Oacute V -50
+KPX Oacute W -30
+KPX Oacute X -60
+KPX Oacute Y -70
+KPX Oacute Yacute -70
+KPX Oacute Ydieresis -70
+KPX Oacute comma -40
+KPX Oacute period -40
+KPX Ocircumflex A -20
+KPX Ocircumflex Aacute -20
+KPX Ocircumflex Abreve -20
+KPX Ocircumflex Acircumflex -20
+KPX Ocircumflex Adieresis -20
+KPX Ocircumflex Agrave -20
+KPX Ocircumflex Amacron -20
+KPX Ocircumflex Aogonek -20
+KPX Ocircumflex Aring -20
+KPX Ocircumflex Atilde -20
+KPX Ocircumflex T -40
+KPX Ocircumflex Tcaron -40
+KPX Ocircumflex Tcommaaccent -40
+KPX Ocircumflex V -50
+KPX Ocircumflex W -30
+KPX Ocircumflex X -60
+KPX Ocircumflex Y -70
+KPX Ocircumflex Yacute -70
+KPX Ocircumflex Ydieresis -70
+KPX Ocircumflex comma -40
+KPX Ocircumflex period -40
+KPX Odieresis A -20
+KPX Odieresis Aacute -20
+KPX Odieresis Abreve -20
+KPX Odieresis Acircumflex -20
+KPX Odieresis Adieresis -20
+KPX Odieresis Agrave -20
+KPX Odieresis Amacron -20
+KPX Odieresis Aogonek -20
+KPX Odieresis Aring -20
+KPX Odieresis Atilde -20
+KPX Odieresis T -40
+KPX Odieresis Tcaron -40
+KPX Odieresis Tcommaaccent -40
+KPX Odieresis V -50
+KPX Odieresis W -30
+KPX Odieresis X -60
+KPX Odieresis Y -70
+KPX Odieresis Yacute -70
+KPX Odieresis Ydieresis -70
+KPX Odieresis comma -40
+KPX Odieresis period -40
+KPX Ograve A -20
+KPX Ograve Aacute -20
+KPX Ograve Abreve -20
+KPX Ograve Acircumflex -20
+KPX Ograve Adieresis -20
+KPX Ograve Agrave -20
+KPX Ograve Amacron -20
+KPX Ograve Aogonek -20
+KPX Ograve Aring -20
+KPX Ograve Atilde -20
+KPX Ograve T -40
+KPX Ograve Tcaron -40
+KPX Ograve Tcommaaccent -40
+KPX Ograve V -50
+KPX Ograve W -30
+KPX Ograve X -60
+KPX Ograve Y -70
+KPX Ograve Yacute -70
+KPX Ograve Ydieresis -70
+KPX Ograve comma -40
+KPX Ograve period -40
+KPX Ohungarumlaut A -20
+KPX Ohungarumlaut Aacute -20
+KPX Ohungarumlaut Abreve -20
+KPX Ohungarumlaut Acircumflex -20
+KPX Ohungarumlaut Adieresis -20
+KPX Ohungarumlaut Agrave -20
+KPX Ohungarumlaut Amacron -20
+KPX Ohungarumlaut Aogonek -20
+KPX Ohungarumlaut Aring -20
+KPX Ohungarumlaut Atilde -20
+KPX Ohungarumlaut T -40
+KPX Ohungarumlaut Tcaron -40
+KPX Ohungarumlaut Tcommaaccent -40
+KPX Ohungarumlaut V -50
+KPX Ohungarumlaut W -30
+KPX Ohungarumlaut X -60
+KPX Ohungarumlaut Y -70
+KPX Ohungarumlaut Yacute -70
+KPX Ohungarumlaut Ydieresis -70
+KPX Ohungarumlaut comma -40
+KPX Ohungarumlaut period -40
+KPX Omacron A -20
+KPX Omacron Aacute -20
+KPX Omacron Abreve -20
+KPX Omacron Acircumflex -20
+KPX Omacron Adieresis -20
+KPX Omacron Agrave -20
+KPX Omacron Amacron -20
+KPX Omacron Aogonek -20
+KPX Omacron Aring -20
+KPX Omacron Atilde -20
+KPX Omacron T -40
+KPX Omacron Tcaron -40
+KPX Omacron Tcommaaccent -40
+KPX Omacron V -50
+KPX Omacron W -30
+KPX Omacron X -60
+KPX Omacron Y -70
+KPX Omacron Yacute -70
+KPX Omacron Ydieresis -70
+KPX Omacron comma -40
+KPX Omacron period -40
+KPX Oslash A -20
+KPX Oslash Aacute -20
+KPX Oslash Abreve -20
+KPX Oslash Acircumflex -20
+KPX Oslash Adieresis -20
+KPX Oslash Agrave -20
+KPX Oslash Amacron -20
+KPX Oslash Aogonek -20
+KPX Oslash Aring -20
+KPX Oslash Atilde -20
+KPX Oslash T -40
+KPX Oslash Tcaron -40
+KPX Oslash Tcommaaccent -40
+KPX Oslash V -50
+KPX Oslash W -30
+KPX Oslash X -60
+KPX Oslash Y -70
+KPX Oslash Yacute -70
+KPX Oslash Ydieresis -70
+KPX Oslash comma -40
+KPX Oslash period -40
+KPX Otilde A -20
+KPX Otilde Aacute -20
+KPX Otilde Abreve -20
+KPX Otilde Acircumflex -20
+KPX Otilde Adieresis -20
+KPX Otilde Agrave -20
+KPX Otilde Amacron -20
+KPX Otilde Aogonek -20
+KPX Otilde Aring -20
+KPX Otilde Atilde -20
+KPX Otilde T -40
+KPX Otilde Tcaron -40
+KPX Otilde Tcommaaccent -40
+KPX Otilde V -50
+KPX Otilde W -30
+KPX Otilde X -60
+KPX Otilde Y -70
+KPX Otilde Yacute -70
+KPX Otilde Ydieresis -70
+KPX Otilde comma -40
+KPX Otilde period -40
+KPX P A -120
+KPX P Aacute -120
+KPX P Abreve -120
+KPX P Acircumflex -120
+KPX P Adieresis -120
+KPX P Agrave -120
+KPX P Amacron -120
+KPX P Aogonek -120
+KPX P Aring -120
+KPX P Atilde -120
+KPX P a -40
+KPX P aacute -40
+KPX P abreve -40
+KPX P acircumflex -40
+KPX P adieresis -40
+KPX P agrave -40
+KPX P amacron -40
+KPX P aogonek -40
+KPX P aring -40
+KPX P atilde -40
+KPX P comma -180
+KPX P e -50
+KPX P eacute -50
+KPX P ecaron -50
+KPX P ecircumflex -50
+KPX P edieresis -50
+KPX P edotaccent -50
+KPX P egrave -50
+KPX P emacron -50
+KPX P eogonek -50
+KPX P o -50
+KPX P oacute -50
+KPX P ocircumflex -50
+KPX P odieresis -50
+KPX P ograve -50
+KPX P ohungarumlaut -50
+KPX P omacron -50
+KPX P oslash -50
+KPX P otilde -50
+KPX P period -180
+KPX Q U -10
+KPX Q Uacute -10
+KPX Q Ucircumflex -10
+KPX Q Udieresis -10
+KPX Q Ugrave -10
+KPX Q Uhungarumlaut -10
+KPX Q Umacron -10
+KPX Q Uogonek -10
+KPX Q Uring -10
+KPX R O -20
+KPX R Oacute -20
+KPX R Ocircumflex -20
+KPX R Odieresis -20
+KPX R Ograve -20
+KPX R Ohungarumlaut -20
+KPX R Omacron -20
+KPX R Oslash -20
+KPX R Otilde -20
+KPX R T -30
+KPX R Tcaron -30
+KPX R Tcommaaccent -30
+KPX R U -40
+KPX R Uacute -40
+KPX R Ucircumflex -40
+KPX R Udieresis -40
+KPX R Ugrave -40
+KPX R Uhungarumlaut -40
+KPX R Umacron -40
+KPX R Uogonek -40
+KPX R Uring -40
+KPX R V -50
+KPX R W -30
+KPX R Y -50
+KPX R Yacute -50
+KPX R Ydieresis -50
+KPX Racute O -20
+KPX Racute Oacute -20
+KPX Racute Ocircumflex -20
+KPX Racute Odieresis -20
+KPX Racute Ograve -20
+KPX Racute Ohungarumlaut -20
+KPX Racute Omacron -20
+KPX Racute Oslash -20
+KPX Racute Otilde -20
+KPX Racute T -30
+KPX Racute Tcaron -30
+KPX Racute Tcommaaccent -30
+KPX Racute U -40
+KPX Racute Uacute -40
+KPX Racute Ucircumflex -40
+KPX Racute Udieresis -40
+KPX Racute Ugrave -40
+KPX Racute Uhungarumlaut -40
+KPX Racute Umacron -40
+KPX Racute Uogonek -40
+KPX Racute Uring -40
+KPX Racute V -50
+KPX Racute W -30
+KPX Racute Y -50
+KPX Racute Yacute -50
+KPX Racute Ydieresis -50
+KPX Rcaron O -20
+KPX Rcaron Oacute -20
+KPX Rcaron Ocircumflex -20
+KPX Rcaron Odieresis -20
+KPX Rcaron Ograve -20
+KPX Rcaron Ohungarumlaut -20
+KPX Rcaron Omacron -20
+KPX Rcaron Oslash -20
+KPX Rcaron Otilde -20
+KPX Rcaron T -30
+KPX Rcaron Tcaron -30
+KPX Rcaron Tcommaaccent -30
+KPX Rcaron U -40
+KPX Rcaron Uacute -40
+KPX Rcaron Ucircumflex -40
+KPX Rcaron Udieresis -40
+KPX Rcaron Ugrave -40
+KPX Rcaron Uhungarumlaut -40
+KPX Rcaron Umacron -40
+KPX Rcaron Uogonek -40
+KPX Rcaron Uring -40
+KPX Rcaron V -50
+KPX Rcaron W -30
+KPX Rcaron Y -50
+KPX Rcaron Yacute -50
+KPX Rcaron Ydieresis -50
+KPX Rcommaaccent O -20
+KPX Rcommaaccent Oacute -20
+KPX Rcommaaccent Ocircumflex -20
+KPX Rcommaaccent Odieresis -20
+KPX Rcommaaccent Ograve -20
+KPX Rcommaaccent Ohungarumlaut -20
+KPX Rcommaaccent Omacron -20
+KPX Rcommaaccent Oslash -20
+KPX Rcommaaccent Otilde -20
+KPX Rcommaaccent T -30
+KPX Rcommaaccent Tcaron -30
+KPX Rcommaaccent Tcommaaccent -30
+KPX Rcommaaccent U -40
+KPX Rcommaaccent Uacute -40
+KPX Rcommaaccent Ucircumflex -40
+KPX Rcommaaccent Udieresis -40
+KPX Rcommaaccent Ugrave -40
+KPX Rcommaaccent Uhungarumlaut -40
+KPX Rcommaaccent Umacron -40
+KPX Rcommaaccent Uogonek -40
+KPX Rcommaaccent Uring -40
+KPX Rcommaaccent V -50
+KPX Rcommaaccent W -30
+KPX Rcommaaccent Y -50
+KPX Rcommaaccent Yacute -50
+KPX Rcommaaccent Ydieresis -50
+KPX S comma -20
+KPX S period -20
+KPX Sacute comma -20
+KPX Sacute period -20
+KPX Scaron comma -20
+KPX Scaron period -20
+KPX Scedilla comma -20
+KPX Scedilla period -20
+KPX Scommaaccent comma -20
+KPX Scommaaccent period -20
+KPX T A -120
+KPX T Aacute -120
+KPX T Abreve -120
+KPX T Acircumflex -120
+KPX T Adieresis -120
+KPX T Agrave -120
+KPX T Amacron -120
+KPX T Aogonek -120
+KPX T Aring -120
+KPX T Atilde -120
+KPX T O -40
+KPX T Oacute -40
+KPX T Ocircumflex -40
+KPX T Odieresis -40
+KPX T Ograve -40
+KPX T Ohungarumlaut -40
+KPX T Omacron -40
+KPX T Oslash -40
+KPX T Otilde -40
+KPX T a -120
+KPX T aacute -120
+KPX T abreve -60
+KPX T acircumflex -120
+KPX T adieresis -120
+KPX T agrave -120
+KPX T amacron -60
+KPX T aogonek -120
+KPX T aring -120
+KPX T atilde -60
+KPX T colon -20
+KPX T comma -120
+KPX T e -120
+KPX T eacute -120
+KPX T ecaron -120
+KPX T ecircumflex -120
+KPX T edieresis -120
+KPX T edotaccent -120
+KPX T egrave -60
+KPX T emacron -60
+KPX T eogonek -120
+KPX T hyphen -140
+KPX T o -120
+KPX T oacute -120
+KPX T ocircumflex -120
+KPX T odieresis -120
+KPX T ograve -120
+KPX T ohungarumlaut -120
+KPX T omacron -60
+KPX T oslash -120
+KPX T otilde -60
+KPX T period -120
+KPX T r -120
+KPX T racute -120
+KPX T rcaron -120
+KPX T rcommaaccent -120
+KPX T semicolon -20
+KPX T u -120
+KPX T uacute -120
+KPX T ucircumflex -120
+KPX T udieresis -120
+KPX T ugrave -120
+KPX T uhungarumlaut -120
+KPX T umacron -60
+KPX T uogonek -120
+KPX T uring -120
+KPX T w -120
+KPX T y -120
+KPX T yacute -120
+KPX T ydieresis -60
+KPX Tcaron A -120
+KPX Tcaron Aacute -120
+KPX Tcaron Abreve -120
+KPX Tcaron Acircumflex -120
+KPX Tcaron Adieresis -120
+KPX Tcaron Agrave -120
+KPX Tcaron Amacron -120
+KPX Tcaron Aogonek -120
+KPX Tcaron Aring -120
+KPX Tcaron Atilde -120
+KPX Tcaron O -40
+KPX Tcaron Oacute -40
+KPX Tcaron Ocircumflex -40
+KPX Tcaron Odieresis -40
+KPX Tcaron Ograve -40
+KPX Tcaron Ohungarumlaut -40
+KPX Tcaron Omacron -40
+KPX Tcaron Oslash -40
+KPX Tcaron Otilde -40
+KPX Tcaron a -120
+KPX Tcaron aacute -120
+KPX Tcaron abreve -60
+KPX Tcaron acircumflex -120
+KPX Tcaron adieresis -120
+KPX Tcaron agrave -120
+KPX Tcaron amacron -60
+KPX Tcaron aogonek -120
+KPX Tcaron aring -120
+KPX Tcaron atilde -60
+KPX Tcaron colon -20
+KPX Tcaron comma -120
+KPX Tcaron e -120
+KPX Tcaron eacute -120
+KPX Tcaron ecaron -120
+KPX Tcaron ecircumflex -120
+KPX Tcaron edieresis -120
+KPX Tcaron edotaccent -120
+KPX Tcaron egrave -60
+KPX Tcaron emacron -60
+KPX Tcaron eogonek -120
+KPX Tcaron hyphen -140
+KPX Tcaron o -120
+KPX Tcaron oacute -120
+KPX Tcaron ocircumflex -120
+KPX Tcaron odieresis -120
+KPX Tcaron ograve -120
+KPX Tcaron ohungarumlaut -120
+KPX Tcaron omacron -60
+KPX Tcaron oslash -120
+KPX Tcaron otilde -60
+KPX Tcaron period -120
+KPX Tcaron r -120
+KPX Tcaron racute -120
+KPX Tcaron rcaron -120
+KPX Tcaron rcommaaccent -120
+KPX Tcaron semicolon -20
+KPX Tcaron u -120
+KPX Tcaron uacute -120
+KPX Tcaron ucircumflex -120
+KPX Tcaron udieresis -120
+KPX Tcaron ugrave -120
+KPX Tcaron uhungarumlaut -120
+KPX Tcaron umacron -60
+KPX Tcaron uogonek -120
+KPX Tcaron uring -120
+KPX Tcaron w -120
+KPX Tcaron y -120
+KPX Tcaron yacute -120
+KPX Tcaron ydieresis -60
+KPX Tcommaaccent A -120
+KPX Tcommaaccent Aacute -120
+KPX Tcommaaccent Abreve -120
+KPX Tcommaaccent Acircumflex -120
+KPX Tcommaaccent Adieresis -120
+KPX Tcommaaccent Agrave -120
+KPX Tcommaaccent Amacron -120
+KPX Tcommaaccent Aogonek -120
+KPX Tcommaaccent Aring -120
+KPX Tcommaaccent Atilde -120
+KPX Tcommaaccent O -40
+KPX Tcommaaccent Oacute -40
+KPX Tcommaaccent Ocircumflex -40
+KPX Tcommaaccent Odieresis -40
+KPX Tcommaaccent Ograve -40
+KPX Tcommaaccent Ohungarumlaut -40
+KPX Tcommaaccent Omacron -40
+KPX Tcommaaccent Oslash -40
+KPX Tcommaaccent Otilde -40
+KPX Tcommaaccent a -120
+KPX Tcommaaccent aacute -120
+KPX Tcommaaccent abreve -60
+KPX Tcommaaccent acircumflex -120
+KPX Tcommaaccent adieresis -120
+KPX Tcommaaccent agrave -120
+KPX Tcommaaccent amacron -60
+KPX Tcommaaccent aogonek -120
+KPX Tcommaaccent aring -120
+KPX Tcommaaccent atilde -60
+KPX Tcommaaccent colon -20
+KPX Tcommaaccent comma -120
+KPX Tcommaaccent e -120
+KPX Tcommaaccent eacute -120
+KPX Tcommaaccent ecaron -120
+KPX Tcommaaccent ecircumflex -120
+KPX Tcommaaccent edieresis -120
+KPX Tcommaaccent edotaccent -120
+KPX Tcommaaccent egrave -60
+KPX Tcommaaccent emacron -60
+KPX Tcommaaccent eogonek -120
+KPX Tcommaaccent hyphen -140
+KPX Tcommaaccent o -120
+KPX Tcommaaccent oacute -120
+KPX Tcommaaccent ocircumflex -120
+KPX Tcommaaccent odieresis -120
+KPX Tcommaaccent ograve -120
+KPX Tcommaaccent ohungarumlaut -120
+KPX Tcommaaccent omacron -60
+KPX Tcommaaccent oslash -120
+KPX Tcommaaccent otilde -60
+KPX Tcommaaccent period -120
+KPX Tcommaaccent r -120
+KPX Tcommaaccent racute -120
+KPX Tcommaaccent rcaron -120
+KPX Tcommaaccent rcommaaccent -120
+KPX Tcommaaccent semicolon -20
+KPX Tcommaaccent u -120
+KPX Tcommaaccent uacute -120
+KPX Tcommaaccent ucircumflex -120
+KPX Tcommaaccent udieresis -120
+KPX Tcommaaccent ugrave -120
+KPX Tcommaaccent uhungarumlaut -120
+KPX Tcommaaccent umacron -60
+KPX Tcommaaccent uogonek -120
+KPX Tcommaaccent uring -120
+KPX Tcommaaccent w -120
+KPX Tcommaaccent y -120
+KPX Tcommaaccent yacute -120
+KPX Tcommaaccent ydieresis -60
+KPX U A -40
+KPX U Aacute -40
+KPX U Abreve -40
+KPX U Acircumflex -40
+KPX U Adieresis -40
+KPX U Agrave -40
+KPX U Amacron -40
+KPX U Aogonek -40
+KPX U Aring -40
+KPX U Atilde -40
+KPX U comma -40
+KPX U period -40
+KPX Uacute A -40
+KPX Uacute Aacute -40
+KPX Uacute Abreve -40
+KPX Uacute Acircumflex -40
+KPX Uacute Adieresis -40
+KPX Uacute Agrave -40
+KPX Uacute Amacron -40
+KPX Uacute Aogonek -40
+KPX Uacute Aring -40
+KPX Uacute Atilde -40
+KPX Uacute comma -40
+KPX Uacute period -40
+KPX Ucircumflex A -40
+KPX Ucircumflex Aacute -40
+KPX Ucircumflex Abreve -40
+KPX Ucircumflex Acircumflex -40
+KPX Ucircumflex Adieresis -40
+KPX Ucircumflex Agrave -40
+KPX Ucircumflex Amacron -40
+KPX Ucircumflex Aogonek -40
+KPX Ucircumflex Aring -40
+KPX Ucircumflex Atilde -40
+KPX Ucircumflex comma -40
+KPX Ucircumflex period -40
+KPX Udieresis A -40
+KPX Udieresis Aacute -40
+KPX Udieresis Abreve -40
+KPX Udieresis Acircumflex -40
+KPX Udieresis Adieresis -40
+KPX Udieresis Agrave -40
+KPX Udieresis Amacron -40
+KPX Udieresis Aogonek -40
+KPX Udieresis Aring -40
+KPX Udieresis Atilde -40
+KPX Udieresis comma -40
+KPX Udieresis period -40
+KPX Ugrave A -40
+KPX Ugrave Aacute -40
+KPX Ugrave Abreve -40
+KPX Ugrave Acircumflex -40
+KPX Ugrave Adieresis -40
+KPX Ugrave Agrave -40
+KPX Ugrave Amacron -40
+KPX Ugrave Aogonek -40
+KPX Ugrave Aring -40
+KPX Ugrave Atilde -40
+KPX Ugrave comma -40
+KPX Ugrave period -40
+KPX Uhungarumlaut A -40
+KPX Uhungarumlaut Aacute -40
+KPX Uhungarumlaut Abreve -40
+KPX Uhungarumlaut Acircumflex -40
+KPX Uhungarumlaut Adieresis -40
+KPX Uhungarumlaut Agrave -40
+KPX Uhungarumlaut Amacron -40
+KPX Uhungarumlaut Aogonek -40
+KPX Uhungarumlaut Aring -40
+KPX Uhungarumlaut Atilde -40
+KPX Uhungarumlaut comma -40
+KPX Uhungarumlaut period -40
+KPX Umacron A -40
+KPX Umacron Aacute -40
+KPX Umacron Abreve -40
+KPX Umacron Acircumflex -40
+KPX Umacron Adieresis -40
+KPX Umacron Agrave -40
+KPX Umacron Amacron -40
+KPX Umacron Aogonek -40
+KPX Umacron Aring -40
+KPX Umacron Atilde -40
+KPX Umacron comma -40
+KPX Umacron period -40
+KPX Uogonek A -40
+KPX Uogonek Aacute -40
+KPX Uogonek Abreve -40
+KPX Uogonek Acircumflex -40
+KPX Uogonek Adieresis -40
+KPX Uogonek Agrave -40
+KPX Uogonek Amacron -40
+KPX Uogonek Aogonek -40
+KPX Uogonek Aring -40
+KPX Uogonek Atilde -40
+KPX Uogonek comma -40
+KPX Uogonek period -40
+KPX Uring A -40
+KPX Uring Aacute -40
+KPX Uring Abreve -40
+KPX Uring Acircumflex -40
+KPX Uring Adieresis -40
+KPX Uring Agrave -40
+KPX Uring Amacron -40
+KPX Uring Aogonek -40
+KPX Uring Aring -40
+KPX Uring Atilde -40
+KPX Uring comma -40
+KPX Uring period -40
+KPX V A -80
+KPX V Aacute -80
+KPX V Abreve -80
+KPX V Acircumflex -80
+KPX V Adieresis -80
+KPX V Agrave -80
+KPX V Amacron -80
+KPX V Aogonek -80
+KPX V Aring -80
+KPX V Atilde -80
+KPX V G -40
+KPX V Gbreve -40
+KPX V Gcommaaccent -40
+KPX V O -40
+KPX V Oacute -40
+KPX V Ocircumflex -40
+KPX V Odieresis -40
+KPX V Ograve -40
+KPX V Ohungarumlaut -40
+KPX V Omacron -40
+KPX V Oslash -40
+KPX V Otilde -40
+KPX V a -70
+KPX V aacute -70
+KPX V abreve -70
+KPX V acircumflex -70
+KPX V adieresis -70
+KPX V agrave -70
+KPX V amacron -70
+KPX V aogonek -70
+KPX V aring -70
+KPX V atilde -70
+KPX V colon -40
+KPX V comma -125
+KPX V e -80
+KPX V eacute -80
+KPX V ecaron -80
+KPX V ecircumflex -80
+KPX V edieresis -80
+KPX V edotaccent -80
+KPX V egrave -80
+KPX V emacron -80
+KPX V eogonek -80
+KPX V hyphen -80
+KPX V o -80
+KPX V oacute -80
+KPX V ocircumflex -80
+KPX V odieresis -80
+KPX V ograve -80
+KPX V ohungarumlaut -80
+KPX V omacron -80
+KPX V oslash -80
+KPX V otilde -80
+KPX V period -125
+KPX V semicolon -40
+KPX V u -70
+KPX V uacute -70
+KPX V ucircumflex -70
+KPX V udieresis -70
+KPX V ugrave -70
+KPX V uhungarumlaut -70
+KPX V umacron -70
+KPX V uogonek -70
+KPX V uring -70
+KPX W A -50
+KPX W Aacute -50
+KPX W Abreve -50
+KPX W Acircumflex -50
+KPX W Adieresis -50
+KPX W Agrave -50
+KPX W Amacron -50
+KPX W Aogonek -50
+KPX W Aring -50
+KPX W Atilde -50
+KPX W O -20
+KPX W Oacute -20
+KPX W Ocircumflex -20
+KPX W Odieresis -20
+KPX W Ograve -20
+KPX W Ohungarumlaut -20
+KPX W Omacron -20
+KPX W Oslash -20
+KPX W Otilde -20
+KPX W a -40
+KPX W aacute -40
+KPX W abreve -40
+KPX W acircumflex -40
+KPX W adieresis -40
+KPX W agrave -40
+KPX W amacron -40
+KPX W aogonek -40
+KPX W aring -40
+KPX W atilde -40
+KPX W comma -80
+KPX W e -30
+KPX W eacute -30
+KPX W ecaron -30
+KPX W ecircumflex -30
+KPX W edieresis -30
+KPX W edotaccent -30
+KPX W egrave -30
+KPX W emacron -30
+KPX W eogonek -30
+KPX W hyphen -40
+KPX W o -30
+KPX W oacute -30
+KPX W ocircumflex -30
+KPX W odieresis -30
+KPX W ograve -30
+KPX W ohungarumlaut -30
+KPX W omacron -30
+KPX W oslash -30
+KPX W otilde -30
+KPX W period -80
+KPX W u -30
+KPX W uacute -30
+KPX W ucircumflex -30
+KPX W udieresis -30
+KPX W ugrave -30
+KPX W uhungarumlaut -30
+KPX W umacron -30
+KPX W uogonek -30
+KPX W uring -30
+KPX W y -20
+KPX W yacute -20
+KPX W ydieresis -20
+KPX Y A -110
+KPX Y Aacute -110
+KPX Y Abreve -110
+KPX Y Acircumflex -110
+KPX Y Adieresis -110
+KPX Y Agrave -110
+KPX Y Amacron -110
+KPX Y Aogonek -110
+KPX Y Aring -110
+KPX Y Atilde -110
+KPX Y O -85
+KPX Y Oacute -85
+KPX Y Ocircumflex -85
+KPX Y Odieresis -85
+KPX Y Ograve -85
+KPX Y Ohungarumlaut -85
+KPX Y Omacron -85
+KPX Y Oslash -85
+KPX Y Otilde -85
+KPX Y a -140
+KPX Y aacute -140
+KPX Y abreve -70
+KPX Y acircumflex -140
+KPX Y adieresis -140
+KPX Y agrave -140
+KPX Y amacron -70
+KPX Y aogonek -140
+KPX Y aring -140
+KPX Y atilde -140
+KPX Y colon -60
+KPX Y comma -140
+KPX Y e -140
+KPX Y eacute -140
+KPX Y ecaron -140
+KPX Y ecircumflex -140
+KPX Y edieresis -140
+KPX Y edotaccent -140
+KPX Y egrave -140
+KPX Y emacron -70
+KPX Y eogonek -140
+KPX Y hyphen -140
+KPX Y i -20
+KPX Y iacute -20
+KPX Y iogonek -20
+KPX Y o -140
+KPX Y oacute -140
+KPX Y ocircumflex -140
+KPX Y odieresis -140
+KPX Y ograve -140
+KPX Y ohungarumlaut -140
+KPX Y omacron -140
+KPX Y oslash -140
+KPX Y otilde -140
+KPX Y period -140
+KPX Y semicolon -60
+KPX Y u -110
+KPX Y uacute -110
+KPX Y ucircumflex -110
+KPX Y udieresis -110
+KPX Y ugrave -110
+KPX Y uhungarumlaut -110
+KPX Y umacron -110
+KPX Y uogonek -110
+KPX Y uring -110
+KPX Yacute A -110
+KPX Yacute Aacute -110
+KPX Yacute Abreve -110
+KPX Yacute Acircumflex -110
+KPX Yacute Adieresis -110
+KPX Yacute Agrave -110
+KPX Yacute Amacron -110
+KPX Yacute Aogonek -110
+KPX Yacute Aring -110
+KPX Yacute Atilde -110
+KPX Yacute O -85
+KPX Yacute Oacute -85
+KPX Yacute Ocircumflex -85
+KPX Yacute Odieresis -85
+KPX Yacute Ograve -85
+KPX Yacute Ohungarumlaut -85
+KPX Yacute Omacron -85
+KPX Yacute Oslash -85
+KPX Yacute Otilde -85
+KPX Yacute a -140
+KPX Yacute aacute -140
+KPX Yacute abreve -70
+KPX Yacute acircumflex -140
+KPX Yacute adieresis -140
+KPX Yacute agrave -140
+KPX Yacute amacron -70
+KPX Yacute aogonek -140
+KPX Yacute aring -140
+KPX Yacute atilde -70
+KPX Yacute colon -60
+KPX Yacute comma -140
+KPX Yacute e -140
+KPX Yacute eacute -140
+KPX Yacute ecaron -140
+KPX Yacute ecircumflex -140
+KPX Yacute edieresis -140
+KPX Yacute edotaccent -140
+KPX Yacute egrave -140
+KPX Yacute emacron -70
+KPX Yacute eogonek -140
+KPX Yacute hyphen -140
+KPX Yacute i -20
+KPX Yacute iacute -20
+KPX Yacute iogonek -20
+KPX Yacute o -140
+KPX Yacute oacute -140
+KPX Yacute ocircumflex -140
+KPX Yacute odieresis -140
+KPX Yacute ograve -140
+KPX Yacute ohungarumlaut -140
+KPX Yacute omacron -70
+KPX Yacute oslash -140
+KPX Yacute otilde -140
+KPX Yacute period -140
+KPX Yacute semicolon -60
+KPX Yacute u -110
+KPX Yacute uacute -110
+KPX Yacute ucircumflex -110
+KPX Yacute udieresis -110
+KPX Yacute ugrave -110
+KPX Yacute uhungarumlaut -110
+KPX Yacute umacron -110
+KPX Yacute uogonek -110
+KPX Yacute uring -110
+KPX Ydieresis A -110
+KPX Ydieresis Aacute -110
+KPX Ydieresis Abreve -110
+KPX Ydieresis Acircumflex -110
+KPX Ydieresis Adieresis -110
+KPX Ydieresis Agrave -110
+KPX Ydieresis Amacron -110
+KPX Ydieresis Aogonek -110
+KPX Ydieresis Aring -110
+KPX Ydieresis Atilde -110
+KPX Ydieresis O -85
+KPX Ydieresis Oacute -85
+KPX Ydieresis Ocircumflex -85
+KPX Ydieresis Odieresis -85
+KPX Ydieresis Ograve -85
+KPX Ydieresis Ohungarumlaut -85
+KPX Ydieresis Omacron -85
+KPX Ydieresis Oslash -85
+KPX Ydieresis Otilde -85
+KPX Ydieresis a -140
+KPX Ydieresis aacute -140
+KPX Ydieresis abreve -70
+KPX Ydieresis acircumflex -140
+KPX Ydieresis adieresis -140
+KPX Ydieresis agrave -140
+KPX Ydieresis amacron -70
+KPX Ydieresis aogonek -140
+KPX Ydieresis aring -140
+KPX Ydieresis atilde -70
+KPX Ydieresis colon -60
+KPX Ydieresis comma -140
+KPX Ydieresis e -140
+KPX Ydieresis eacute -140
+KPX Ydieresis ecaron -140
+KPX Ydieresis ecircumflex -140
+KPX Ydieresis edieresis -140
+KPX Ydieresis edotaccent -140
+KPX Ydieresis egrave -140
+KPX Ydieresis emacron -70
+KPX Ydieresis eogonek -140
+KPX Ydieresis hyphen -140
+KPX Ydieresis i -20
+KPX Ydieresis iacute -20
+KPX Ydieresis iogonek -20
+KPX Ydieresis o -140
+KPX Ydieresis oacute -140
+KPX Ydieresis ocircumflex -140
+KPX Ydieresis odieresis -140
+KPX Ydieresis ograve -140
+KPX Ydieresis ohungarumlaut -140
+KPX Ydieresis omacron -140
+KPX Ydieresis oslash -140
+KPX Ydieresis otilde -140
+KPX Ydieresis period -140
+KPX Ydieresis semicolon -60
+KPX Ydieresis u -110
+KPX Ydieresis uacute -110
+KPX Ydieresis ucircumflex -110
+KPX Ydieresis udieresis -110
+KPX Ydieresis ugrave -110
+KPX Ydieresis uhungarumlaut -110
+KPX Ydieresis umacron -110
+KPX Ydieresis uogonek -110
+KPX Ydieresis uring -110
+KPX a v -20
+KPX a w -20
+KPX a y -30
+KPX a yacute -30
+KPX a ydieresis -30
+KPX aacute v -20
+KPX aacute w -20
+KPX aacute y -30
+KPX aacute yacute -30
+KPX aacute ydieresis -30
+KPX abreve v -20
+KPX abreve w -20
+KPX abreve y -30
+KPX abreve yacute -30
+KPX abreve ydieresis -30
+KPX acircumflex v -20
+KPX acircumflex w -20
+KPX acircumflex y -30
+KPX acircumflex yacute -30
+KPX acircumflex ydieresis -30
+KPX adieresis v -20
+KPX adieresis w -20
+KPX adieresis y -30
+KPX adieresis yacute -30
+KPX adieresis ydieresis -30
+KPX agrave v -20
+KPX agrave w -20
+KPX agrave y -30
+KPX agrave yacute -30
+KPX agrave ydieresis -30
+KPX amacron v -20
+KPX amacron w -20
+KPX amacron y -30
+KPX amacron yacute -30
+KPX amacron ydieresis -30
+KPX aogonek v -20
+KPX aogonek w -20
+KPX aogonek y -30
+KPX aogonek yacute -30
+KPX aogonek ydieresis -30
+KPX aring v -20
+KPX aring w -20
+KPX aring y -30
+KPX aring yacute -30
+KPX aring ydieresis -30
+KPX atilde v -20
+KPX atilde w -20
+KPX atilde y -30
+KPX atilde yacute -30
+KPX atilde ydieresis -30
+KPX b b -10
+KPX b comma -40
+KPX b l -20
+KPX b lacute -20
+KPX b lcommaaccent -20
+KPX b lslash -20
+KPX b period -40
+KPX b u -20
+KPX b uacute -20
+KPX b ucircumflex -20
+KPX b udieresis -20
+KPX b ugrave -20
+KPX b uhungarumlaut -20
+KPX b umacron -20
+KPX b uogonek -20
+KPX b uring -20
+KPX b v -20
+KPX b y -20
+KPX b yacute -20
+KPX b ydieresis -20
+KPX c comma -15
+KPX c k -20
+KPX c kcommaaccent -20
+KPX cacute comma -15
+KPX cacute k -20
+KPX cacute kcommaaccent -20
+KPX ccaron comma -15
+KPX ccaron k -20
+KPX ccaron kcommaaccent -20
+KPX ccedilla comma -15
+KPX ccedilla k -20
+KPX ccedilla kcommaaccent -20
+KPX colon space -50
+KPX comma quotedblright -100
+KPX comma quoteright -100
+KPX e comma -15
+KPX e period -15
+KPX e v -30
+KPX e w -20
+KPX e x -30
+KPX e y -20
+KPX e yacute -20
+KPX e ydieresis -20
+KPX eacute comma -15
+KPX eacute period -15
+KPX eacute v -30
+KPX eacute w -20
+KPX eacute x -30
+KPX eacute y -20
+KPX eacute yacute -20
+KPX eacute ydieresis -20
+KPX ecaron comma -15
+KPX ecaron period -15
+KPX ecaron v -30
+KPX ecaron w -20
+KPX ecaron x -30
+KPX ecaron y -20
+KPX ecaron yacute -20
+KPX ecaron ydieresis -20
+KPX ecircumflex comma -15
+KPX ecircumflex period -15
+KPX ecircumflex v -30
+KPX ecircumflex w -20
+KPX ecircumflex x -30
+KPX ecircumflex y -20
+KPX ecircumflex yacute -20
+KPX ecircumflex ydieresis -20
+KPX edieresis comma -15
+KPX edieresis period -15
+KPX edieresis v -30
+KPX edieresis w -20
+KPX edieresis x -30
+KPX edieresis y -20
+KPX edieresis yacute -20
+KPX edieresis ydieresis -20
+KPX edotaccent comma -15
+KPX edotaccent period -15
+KPX edotaccent v -30
+KPX edotaccent w -20
+KPX edotaccent x -30
+KPX edotaccent y -20
+KPX edotaccent yacute -20
+KPX edotaccent ydieresis -20
+KPX egrave comma -15
+KPX egrave period -15
+KPX egrave v -30
+KPX egrave w -20
+KPX egrave x -30
+KPX egrave y -20
+KPX egrave yacute -20
+KPX egrave ydieresis -20
+KPX emacron comma -15
+KPX emacron period -15
+KPX emacron v -30
+KPX emacron w -20
+KPX emacron x -30
+KPX emacron y -20
+KPX emacron yacute -20
+KPX emacron ydieresis -20
+KPX eogonek comma -15
+KPX eogonek period -15
+KPX eogonek v -30
+KPX eogonek w -20
+KPX eogonek x -30
+KPX eogonek y -20
+KPX eogonek yacute -20
+KPX eogonek ydieresis -20
+KPX f a -30
+KPX f aacute -30
+KPX f abreve -30
+KPX f acircumflex -30
+KPX f adieresis -30
+KPX f agrave -30
+KPX f amacron -30
+KPX f aogonek -30
+KPX f aring -30
+KPX f atilde -30
+KPX f comma -30
+KPX f dotlessi -28
+KPX f e -30
+KPX f eacute -30
+KPX f ecaron -30
+KPX f ecircumflex -30
+KPX f edieresis -30
+KPX f edotaccent -30
+KPX f egrave -30
+KPX f emacron -30
+KPX f eogonek -30
+KPX f o -30
+KPX f oacute -30
+KPX f ocircumflex -30
+KPX f odieresis -30
+KPX f ograve -30
+KPX f ohungarumlaut -30
+KPX f omacron -30
+KPX f oslash -30
+KPX f otilde -30
+KPX f period -30
+KPX f quotedblright 60
+KPX f quoteright 50
+KPX g r -10
+KPX g racute -10
+KPX g rcaron -10
+KPX g rcommaaccent -10
+KPX gbreve r -10
+KPX gbreve racute -10
+KPX gbreve rcaron -10
+KPX gbreve rcommaaccent -10
+KPX gcommaaccent r -10
+KPX gcommaaccent racute -10
+KPX gcommaaccent rcaron -10
+KPX gcommaaccent rcommaaccent -10
+KPX h y -30
+KPX h yacute -30
+KPX h ydieresis -30
+KPX k e -20
+KPX k eacute -20
+KPX k ecaron -20
+KPX k ecircumflex -20
+KPX k edieresis -20
+KPX k edotaccent -20
+KPX k egrave -20
+KPX k emacron -20
+KPX k eogonek -20
+KPX k o -20
+KPX k oacute -20
+KPX k ocircumflex -20
+KPX k odieresis -20
+KPX k ograve -20
+KPX k ohungarumlaut -20
+KPX k omacron -20
+KPX k oslash -20
+KPX k otilde -20
+KPX kcommaaccent e -20
+KPX kcommaaccent eacute -20
+KPX kcommaaccent ecaron -20
+KPX kcommaaccent ecircumflex -20
+KPX kcommaaccent edieresis -20
+KPX kcommaaccent edotaccent -20
+KPX kcommaaccent egrave -20
+KPX kcommaaccent emacron -20
+KPX kcommaaccent eogonek -20
+KPX kcommaaccent o -20
+KPX kcommaaccent oacute -20
+KPX kcommaaccent ocircumflex -20
+KPX kcommaaccent odieresis -20
+KPX kcommaaccent ograve -20
+KPX kcommaaccent ohungarumlaut -20
+KPX kcommaaccent omacron -20
+KPX kcommaaccent oslash -20
+KPX kcommaaccent otilde -20
+KPX m u -10
+KPX m uacute -10
+KPX m ucircumflex -10
+KPX m udieresis -10
+KPX m ugrave -10
+KPX m uhungarumlaut -10
+KPX m umacron -10
+KPX m uogonek -10
+KPX m uring -10
+KPX m y -15
+KPX m yacute -15
+KPX m ydieresis -15
+KPX n u -10
+KPX n uacute -10
+KPX n ucircumflex -10
+KPX n udieresis -10
+KPX n ugrave -10
+KPX n uhungarumlaut -10
+KPX n umacron -10
+KPX n uogonek -10
+KPX n uring -10
+KPX n v -20
+KPX n y -15
+KPX n yacute -15
+KPX n ydieresis -15
+KPX nacute u -10
+KPX nacute uacute -10
+KPX nacute ucircumflex -10
+KPX nacute udieresis -10
+KPX nacute ugrave -10
+KPX nacute uhungarumlaut -10
+KPX nacute umacron -10
+KPX nacute uogonek -10
+KPX nacute uring -10
+KPX nacute v -20
+KPX nacute y -15
+KPX nacute yacute -15
+KPX nacute ydieresis -15
+KPX ncaron u -10
+KPX ncaron uacute -10
+KPX ncaron ucircumflex -10
+KPX ncaron udieresis -10
+KPX ncaron ugrave -10
+KPX ncaron uhungarumlaut -10
+KPX ncaron umacron -10
+KPX ncaron uogonek -10
+KPX ncaron uring -10
+KPX ncaron v -20
+KPX ncaron y -15
+KPX ncaron yacute -15
+KPX ncaron ydieresis -15
+KPX ncommaaccent u -10
+KPX ncommaaccent uacute -10
+KPX ncommaaccent ucircumflex -10
+KPX ncommaaccent udieresis -10
+KPX ncommaaccent ugrave -10
+KPX ncommaaccent uhungarumlaut -10
+KPX ncommaaccent umacron -10
+KPX ncommaaccent uogonek -10
+KPX ncommaaccent uring -10
+KPX ncommaaccent v -20
+KPX ncommaaccent y -15
+KPX ncommaaccent yacute -15
+KPX ncommaaccent ydieresis -15
+KPX ntilde u -10
+KPX ntilde uacute -10
+KPX ntilde ucircumflex -10
+KPX ntilde udieresis -10
+KPX ntilde ugrave -10
+KPX ntilde uhungarumlaut -10
+KPX ntilde umacron -10
+KPX ntilde uogonek -10
+KPX ntilde uring -10
+KPX ntilde v -20
+KPX ntilde y -15
+KPX ntilde yacute -15
+KPX ntilde ydieresis -15
+KPX o comma -40
+KPX o period -40
+KPX o v -15
+KPX o w -15
+KPX o x -30
+KPX o y -30
+KPX o yacute -30
+KPX o ydieresis -30
+KPX oacute comma -40
+KPX oacute period -40
+KPX oacute v -15
+KPX oacute w -15
+KPX oacute x -30
+KPX oacute y -30
+KPX oacute yacute -30
+KPX oacute ydieresis -30
+KPX ocircumflex comma -40
+KPX ocircumflex period -40
+KPX ocircumflex v -15
+KPX ocircumflex w -15
+KPX ocircumflex x -30
+KPX ocircumflex y -30
+KPX ocircumflex yacute -30
+KPX ocircumflex ydieresis -30
+KPX odieresis comma -40
+KPX odieresis period -40
+KPX odieresis v -15
+KPX odieresis w -15
+KPX odieresis x -30
+KPX odieresis y -30
+KPX odieresis yacute -30
+KPX odieresis ydieresis -30
+KPX ograve comma -40
+KPX ograve period -40
+KPX ograve v -15
+KPX ograve w -15
+KPX ograve x -30
+KPX ograve y -30
+KPX ograve yacute -30
+KPX ograve ydieresis -30
+KPX ohungarumlaut comma -40
+KPX ohungarumlaut period -40
+KPX ohungarumlaut v -15
+KPX ohungarumlaut w -15
+KPX ohungarumlaut x -30
+KPX ohungarumlaut y -30
+KPX ohungarumlaut yacute -30
+KPX ohungarumlaut ydieresis -30
+KPX omacron comma -40
+KPX omacron period -40
+KPX omacron v -15
+KPX omacron w -15
+KPX omacron x -30
+KPX omacron y -30
+KPX omacron yacute -30
+KPX omacron ydieresis -30
+KPX oslash a -55
+KPX oslash aacute -55
+KPX oslash abreve -55
+KPX oslash acircumflex -55
+KPX oslash adieresis -55
+KPX oslash agrave -55
+KPX oslash amacron -55
+KPX oslash aogonek -55
+KPX oslash aring -55
+KPX oslash atilde -55
+KPX oslash b -55
+KPX oslash c -55
+KPX oslash cacute -55
+KPX oslash ccaron -55
+KPX oslash ccedilla -55
+KPX oslash comma -95
+KPX oslash d -55
+KPX oslash dcroat -55
+KPX oslash e -55
+KPX oslash eacute -55
+KPX oslash ecaron -55
+KPX oslash ecircumflex -55
+KPX oslash edieresis -55
+KPX oslash edotaccent -55
+KPX oslash egrave -55
+KPX oslash emacron -55
+KPX oslash eogonek -55
+KPX oslash f -55
+KPX oslash g -55
+KPX oslash gbreve -55
+KPX oslash gcommaaccent -55
+KPX oslash h -55
+KPX oslash i -55
+KPX oslash iacute -55
+KPX oslash icircumflex -55
+KPX oslash idieresis -55
+KPX oslash igrave -55
+KPX oslash imacron -55
+KPX oslash iogonek -55
+KPX oslash j -55
+KPX oslash k -55
+KPX oslash kcommaaccent -55
+KPX oslash l -55
+KPX oslash lacute -55
+KPX oslash lcommaaccent -55
+KPX oslash lslash -55
+KPX oslash m -55
+KPX oslash n -55
+KPX oslash nacute -55
+KPX oslash ncaron -55
+KPX oslash ncommaaccent -55
+KPX oslash ntilde -55
+KPX oslash o -55
+KPX oslash oacute -55
+KPX oslash ocircumflex -55
+KPX oslash odieresis -55
+KPX oslash ograve -55
+KPX oslash ohungarumlaut -55
+KPX oslash omacron -55
+KPX oslash oslash -55
+KPX oslash otilde -55
+KPX oslash p -55
+KPX oslash period -95
+KPX oslash q -55
+KPX oslash r -55
+KPX oslash racute -55
+KPX oslash rcaron -55
+KPX oslash rcommaaccent -55
+KPX oslash s -55
+KPX oslash sacute -55
+KPX oslash scaron -55
+KPX oslash scedilla -55
+KPX oslash scommaaccent -55
+KPX oslash t -55
+KPX oslash tcommaaccent -55
+KPX oslash u -55
+KPX oslash uacute -55
+KPX oslash ucircumflex -55
+KPX oslash udieresis -55
+KPX oslash ugrave -55
+KPX oslash uhungarumlaut -55
+KPX oslash umacron -55
+KPX oslash uogonek -55
+KPX oslash uring -55
+KPX oslash v -70
+KPX oslash w -70
+KPX oslash x -85
+KPX oslash y -70
+KPX oslash yacute -70
+KPX oslash ydieresis -70
+KPX oslash z -55
+KPX oslash zacute -55
+KPX oslash zcaron -55
+KPX oslash zdotaccent -55
+KPX otilde comma -40
+KPX otilde period -40
+KPX otilde v -15
+KPX otilde w -15
+KPX otilde x -30
+KPX otilde y -30
+KPX otilde yacute -30
+KPX otilde ydieresis -30
+KPX p comma -35
+KPX p period -35
+KPX p y -30
+KPX p yacute -30
+KPX p ydieresis -30
+KPX period quotedblright -100
+KPX period quoteright -100
+KPX period space -60
+KPX quotedblright space -40
+KPX quoteleft quoteleft -57
+KPX quoteright d -50
+KPX quoteright dcroat -50
+KPX quoteright quoteright -57
+KPX quoteright r -50
+KPX quoteright racute -50
+KPX quoteright rcaron -50
+KPX quoteright rcommaaccent -50
+KPX quoteright s -50
+KPX quoteright sacute -50
+KPX quoteright scaron -50
+KPX quoteright scedilla -50
+KPX quoteright scommaaccent -50
+KPX quoteright space -70
+KPX r a -10
+KPX r aacute -10
+KPX r abreve -10
+KPX r acircumflex -10
+KPX r adieresis -10
+KPX r agrave -10
+KPX r amacron -10
+KPX r aogonek -10
+KPX r aring -10
+KPX r atilde -10
+KPX r colon 30
+KPX r comma -50
+KPX r i 15
+KPX r iacute 15
+KPX r icircumflex 15
+KPX r idieresis 15
+KPX r igrave 15
+KPX r imacron 15
+KPX r iogonek 15
+KPX r k 15
+KPX r kcommaaccent 15
+KPX r l 15
+KPX r lacute 15
+KPX r lcommaaccent 15
+KPX r lslash 15
+KPX r m 25
+KPX r n 25
+KPX r nacute 25
+KPX r ncaron 25
+KPX r ncommaaccent 25
+KPX r ntilde 25
+KPX r p 30
+KPX r period -50
+KPX r semicolon 30
+KPX r t 40
+KPX r tcommaaccent 40
+KPX r u 15
+KPX r uacute 15
+KPX r ucircumflex 15
+KPX r udieresis 15
+KPX r ugrave 15
+KPX r uhungarumlaut 15
+KPX r umacron 15
+KPX r uogonek 15
+KPX r uring 15
+KPX r v 30
+KPX r y 30
+KPX r yacute 30
+KPX r ydieresis 30
+KPX racute a -10
+KPX racute aacute -10
+KPX racute abreve -10
+KPX racute acircumflex -10
+KPX racute adieresis -10
+KPX racute agrave -10
+KPX racute amacron -10
+KPX racute aogonek -10
+KPX racute aring -10
+KPX racute atilde -10
+KPX racute colon 30
+KPX racute comma -50
+KPX racute i 15
+KPX racute iacute 15
+KPX racute icircumflex 15
+KPX racute idieresis 15
+KPX racute igrave 15
+KPX racute imacron 15
+KPX racute iogonek 15
+KPX racute k 15
+KPX racute kcommaaccent 15
+KPX racute l 15
+KPX racute lacute 15
+KPX racute lcommaaccent 15
+KPX racute lslash 15
+KPX racute m 25
+KPX racute n 25
+KPX racute nacute 25
+KPX racute ncaron 25
+KPX racute ncommaaccent 25
+KPX racute ntilde 25
+KPX racute p 30
+KPX racute period -50
+KPX racute semicolon 30
+KPX racute t 40
+KPX racute tcommaaccent 40
+KPX racute u 15
+KPX racute uacute 15
+KPX racute ucircumflex 15
+KPX racute udieresis 15
+KPX racute ugrave 15
+KPX racute uhungarumlaut 15
+KPX racute umacron 15
+KPX racute uogonek 15
+KPX racute uring 15
+KPX racute v 30
+KPX racute y 30
+KPX racute yacute 30
+KPX racute ydieresis 30
+KPX rcaron a -10
+KPX rcaron aacute -10
+KPX rcaron abreve -10
+KPX rcaron acircumflex -10
+KPX rcaron adieresis -10
+KPX rcaron agrave -10
+KPX rcaron amacron -10
+KPX rcaron aogonek -10
+KPX rcaron aring -10
+KPX rcaron atilde -10
+KPX rcaron colon 30
+KPX rcaron comma -50
+KPX rcaron i 15
+KPX rcaron iacute 15
+KPX rcaron icircumflex 15
+KPX rcaron idieresis 15
+KPX rcaron igrave 15
+KPX rcaron imacron 15
+KPX rcaron iogonek 15
+KPX rcaron k 15
+KPX rcaron kcommaaccent 15
+KPX rcaron l 15
+KPX rcaron lacute 15
+KPX rcaron lcommaaccent 15
+KPX rcaron lslash 15
+KPX rcaron m 25
+KPX rcaron n 25
+KPX rcaron nacute 25
+KPX rcaron ncaron 25
+KPX rcaron ncommaaccent 25
+KPX rcaron ntilde 25
+KPX rcaron p 30
+KPX rcaron period -50
+KPX rcaron semicolon 30
+KPX rcaron t 40
+KPX rcaron tcommaaccent 40
+KPX rcaron u 15
+KPX rcaron uacute 15
+KPX rcaron ucircumflex 15
+KPX rcaron udieresis 15
+KPX rcaron ugrave 15
+KPX rcaron uhungarumlaut 15
+KPX rcaron umacron 15
+KPX rcaron uogonek 15
+KPX rcaron uring 15
+KPX rcaron v 30
+KPX rcaron y 30
+KPX rcaron yacute 30
+KPX rcaron ydieresis 30
+KPX rcommaaccent a -10
+KPX rcommaaccent aacute -10
+KPX rcommaaccent abreve -10
+KPX rcommaaccent acircumflex -10
+KPX rcommaaccent adieresis -10
+KPX rcommaaccent agrave -10
+KPX rcommaaccent amacron -10
+KPX rcommaaccent aogonek -10
+KPX rcommaaccent aring -10
+KPX rcommaaccent atilde -10
+KPX rcommaaccent colon 30
+KPX rcommaaccent comma -50
+KPX rcommaaccent i 15
+KPX rcommaaccent iacute 15
+KPX rcommaaccent icircumflex 15
+KPX rcommaaccent idieresis 15
+KPX rcommaaccent igrave 15
+KPX rcommaaccent imacron 15
+KPX rcommaaccent iogonek 15
+KPX rcommaaccent k 15
+KPX rcommaaccent kcommaaccent 15
+KPX rcommaaccent l 15
+KPX rcommaaccent lacute 15
+KPX rcommaaccent lcommaaccent 15
+KPX rcommaaccent lslash 15
+KPX rcommaaccent m 25
+KPX rcommaaccent n 25
+KPX rcommaaccent nacute 25
+KPX rcommaaccent ncaron 25
+KPX rcommaaccent ncommaaccent 25
+KPX rcommaaccent ntilde 25
+KPX rcommaaccent p 30
+KPX rcommaaccent period -50
+KPX rcommaaccent semicolon 30
+KPX rcommaaccent t 40
+KPX rcommaaccent tcommaaccent 40
+KPX rcommaaccent u 15
+KPX rcommaaccent uacute 15
+KPX rcommaaccent ucircumflex 15
+KPX rcommaaccent udieresis 15
+KPX rcommaaccent ugrave 15
+KPX rcommaaccent uhungarumlaut 15
+KPX rcommaaccent umacron 15
+KPX rcommaaccent uogonek 15
+KPX rcommaaccent uring 15
+KPX rcommaaccent v 30
+KPX rcommaaccent y 30
+KPX rcommaaccent yacute 30
+KPX rcommaaccent ydieresis 30
+KPX s comma -15
+KPX s period -15
+KPX s w -30
+KPX sacute comma -15
+KPX sacute period -15
+KPX sacute w -30
+KPX scaron comma -15
+KPX scaron period -15
+KPX scaron w -30
+KPX scedilla comma -15
+KPX scedilla period -15
+KPX scedilla w -30
+KPX scommaaccent comma -15
+KPX scommaaccent period -15
+KPX scommaaccent w -30
+KPX semicolon space -50
+KPX space T -50
+KPX space Tcaron -50
+KPX space Tcommaaccent -50
+KPX space V -50
+KPX space W -40
+KPX space Y -90
+KPX space Yacute -90
+KPX space Ydieresis -90
+KPX space quotedblleft -30
+KPX space quoteleft -60
+KPX v a -25
+KPX v aacute -25
+KPX v abreve -25
+KPX v acircumflex -25
+KPX v adieresis -25
+KPX v agrave -25
+KPX v amacron -25
+KPX v aogonek -25
+KPX v aring -25
+KPX v atilde -25
+KPX v comma -80
+KPX v e -25
+KPX v eacute -25
+KPX v ecaron -25
+KPX v ecircumflex -25
+KPX v edieresis -25
+KPX v edotaccent -25
+KPX v egrave -25
+KPX v emacron -25
+KPX v eogonek -25
+KPX v o -25
+KPX v oacute -25
+KPX v ocircumflex -25
+KPX v odieresis -25
+KPX v ograve -25
+KPX v ohungarumlaut -25
+KPX v omacron -25
+KPX v oslash -25
+KPX v otilde -25
+KPX v period -80
+KPX w a -15
+KPX w aacute -15
+KPX w abreve -15
+KPX w acircumflex -15
+KPX w adieresis -15
+KPX w agrave -15
+KPX w amacron -15
+KPX w aogonek -15
+KPX w aring -15
+KPX w atilde -15
+KPX w comma -60
+KPX w e -10
+KPX w eacute -10
+KPX w ecaron -10
+KPX w ecircumflex -10
+KPX w edieresis -10
+KPX w edotaccent -10
+KPX w egrave -10
+KPX w emacron -10
+KPX w eogonek -10
+KPX w o -10
+KPX w oacute -10
+KPX w ocircumflex -10
+KPX w odieresis -10
+KPX w ograve -10
+KPX w ohungarumlaut -10
+KPX w omacron -10
+KPX w oslash -10
+KPX w otilde -10
+KPX w period -60
+KPX x e -30
+KPX x eacute -30
+KPX x ecaron -30
+KPX x ecircumflex -30
+KPX x edieresis -30
+KPX x edotaccent -30
+KPX x egrave -30
+KPX x emacron -30
+KPX x eogonek -30
+KPX y a -20
+KPX y aacute -20
+KPX y abreve -20
+KPX y acircumflex -20
+KPX y adieresis -20
+KPX y agrave -20
+KPX y amacron -20
+KPX y aogonek -20
+KPX y aring -20
+KPX y atilde -20
+KPX y comma -100
+KPX y e -20
+KPX y eacute -20
+KPX y ecaron -20
+KPX y ecircumflex -20
+KPX y edieresis -20
+KPX y edotaccent -20
+KPX y egrave -20
+KPX y emacron -20
+KPX y eogonek -20
+KPX y o -20
+KPX y oacute -20
+KPX y ocircumflex -20
+KPX y odieresis -20
+KPX y ograve -20
+KPX y ohungarumlaut -20
+KPX y omacron -20
+KPX y oslash -20
+KPX y otilde -20
+KPX y period -100
+KPX yacute a -20
+KPX yacute aacute -20
+KPX yacute abreve -20
+KPX yacute acircumflex -20
+KPX yacute adieresis -20
+KPX yacute agrave -20
+KPX yacute amacron -20
+KPX yacute aogonek -20
+KPX yacute aring -20
+KPX yacute atilde -20
+KPX yacute comma -100
+KPX yacute e -20
+KPX yacute eacute -20
+KPX yacute ecaron -20
+KPX yacute ecircumflex -20
+KPX yacute edieresis -20
+KPX yacute edotaccent -20
+KPX yacute egrave -20
+KPX yacute emacron -20
+KPX yacute eogonek -20
+KPX yacute o -20
+KPX yacute oacute -20
+KPX yacute ocircumflex -20
+KPX yacute odieresis -20
+KPX yacute ograve -20
+KPX yacute ohungarumlaut -20
+KPX yacute omacron -20
+KPX yacute oslash -20
+KPX yacute otilde -20
+KPX yacute period -100
+KPX ydieresis a -20
+KPX ydieresis aacute -20
+KPX ydieresis abreve -20
+KPX ydieresis acircumflex -20
+KPX ydieresis adieresis -20
+KPX ydieresis agrave -20
+KPX ydieresis amacron -20
+KPX ydieresis aogonek -20
+KPX ydieresis aring -20
+KPX ydieresis atilde -20
+KPX ydieresis comma -100
+KPX ydieresis e -20
+KPX ydieresis eacute -20
+KPX ydieresis ecaron -20
+KPX ydieresis ecircumflex -20
+KPX ydieresis edieresis -20
+KPX ydieresis edotaccent -20
+KPX ydieresis egrave -20
+KPX ydieresis emacron -20
+KPX ydieresis eogonek -20
+KPX ydieresis o -20
+KPX ydieresis oacute -20
+KPX ydieresis ocircumflex -20
+KPX ydieresis odieresis -20
+KPX ydieresis ograve -20
+KPX ydieresis ohungarumlaut -20
+KPX ydieresis omacron -20
+KPX ydieresis oslash -20
+KPX ydieresis otilde -20
+KPX ydieresis period -100
+KPX z e -15
+KPX z eacute -15
+KPX z ecaron -15
+KPX z ecircumflex -15
+KPX z edieresis -15
+KPX z edotaccent -15
+KPX z egrave -15
+KPX z emacron -15
+KPX z eogonek -15
+KPX z o -15
+KPX z oacute -15
+KPX z ocircumflex -15
+KPX z odieresis -15
+KPX z ograve -15
+KPX z ohungarumlaut -15
+KPX z omacron -15
+KPX z oslash -15
+KPX z otilde -15
+KPX zacute e -15
+KPX zacute eacute -15
+KPX zacute ecaron -15
+KPX zacute ecircumflex -15
+KPX zacute edieresis -15
+KPX zacute edotaccent -15
+KPX zacute egrave -15
+KPX zacute emacron -15
+KPX zacute eogonek -15
+KPX zacute o -15
+KPX zacute oacute -15
+KPX zacute ocircumflex -15
+KPX zacute odieresis -15
+KPX zacute ograve -15
+KPX zacute ohungarumlaut -15
+KPX zacute omacron -15
+KPX zacute oslash -15
+KPX zacute otilde -15
+KPX zcaron e -15
+KPX zcaron eacute -15
+KPX zcaron ecaron -15
+KPX zcaron ecircumflex -15
+KPX zcaron edieresis -15
+KPX zcaron edotaccent -15
+KPX zcaron egrave -15
+KPX zcaron emacron -15
+KPX zcaron eogonek -15
+KPX zcaron o -15
+KPX zcaron oacute -15
+KPX zcaron ocircumflex -15
+KPX zcaron odieresis -15
+KPX zcaron ograve -15
+KPX zcaron ohungarumlaut -15
+KPX zcaron omacron -15
+KPX zcaron oslash -15
+KPX zcaron otilde -15
+KPX zdotaccent e -15
+KPX zdotaccent eacute -15
+KPX zdotaccent ecaron -15
+KPX zdotaccent ecircumflex -15
+KPX zdotaccent edieresis -15
+KPX zdotaccent edotaccent -15
+KPX zdotaccent egrave -15
+KPX zdotaccent emacron -15
+KPX zdotaccent eogonek -15
+KPX zdotaccent o -15
+KPX zdotaccent oacute -15
+KPX zdotaccent ocircumflex -15
+KPX zdotaccent odieresis -15
+KPX zdotaccent ograve -15
+KPX zdotaccent ohungarumlaut -15
+KPX zdotaccent omacron -15
+KPX zdotaccent oslash -15
+KPX zdotaccent otilde -15
+EndKernPairs
+EndKernData
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-Bold.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-Bold.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-Bold.ufm	(revision 2000)
@@ -0,0 +1,719 @@
+StartFontMetrics 4.1
+FontName Nimbus_Sans_L_Bold
+FullName Nimbus Sans L Bold
+Notice 
+EncodingScheme FontSpecific
+FamilyName Nimbus Sans L
+Weight Bold
+Version 1.0
+Characters 661
+ItalicAngle 0.0
+Ascender 1199
+Descender -307
+UnderlineThickness 69
+UnderlinePosition -155
+IsFixedPitch false
+FontBBox -173 -307 1097 1199
+StartCharMetrics 700
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .null ; G 1 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N exclam ; G 2 ; B 112 0 262 726 ;
+U -1 ; WX 484 ; N quotedbl ; G 3 ; B 50 470 424 729 ;
+U -1 ; WX 613 ; N numbersign ; G 4 ; B 3 -32 553 697 ;
+U -1 ; WX 587 ; N dollar ; G 5 ; B 22 -126 527 763 ;
+U -1 ; WX 923 ; N percent ; G 6 ; B 22 -20 863 709 ;
+U -1 ; WX 754 ; N ampersand ; G 7 ; B 55 -23 694 723 ;
+U -1 ; WX 248 ; N quotesingle ; G 104 ; B 50 470 188 729 ;
+U -1 ; WX 363 ; N parenleft ; G 9 ; B 40 -200 303 729 ;
+U -1 ; WX 345 ; N parenright ; G 10 ; B 22 -200 285 729 ;
+U -1 ; WX 417 ; N asterisk ; G 11 ; B 23 407 357 729 ;
+U -1 ; WX 593 ; N plus ; G 12 ; B 50 -10 533 473 ;
+U -1 ; WX 278 ; N comma ; G 13 ; B 64 -174 214 146 ;
+U -1 ; WX 358 ; N hyphen ; G 14 ; B 26 207 298 342 ;
+U -1 ; WX 278 ; N period ; G 15 ; B 64 0 214 146 ;
+U -1 ; WX 335 ; N slash ; G 16 ; B 2 -14 275 714 ;
+U -1 ; WX 577 ; N zero ; G 17 ; B 29 -23 517 724 ;
+U -1 ; WX 556 ; N one ; G 18 ; B 68 0 378 709 ;
+U -1 ; WX 575 ; N two ; G 19 ; B 30 0 515 724 ;
+U -1 ; WX 576 ; N three ; G 20 ; B 29 -23 516 724 ;
+U -1 ; WX 582 ; N four ; G 21 ; B 24 0 522 709 ;
+U -1 ; WX 577 ; N five ; G 22 ; B 27 -23 517 709 ;
+U -1 ; WX 579 ; N six ; G 23 ; B 32 -23 519 724 ;
+U -1 ; WX 588 ; N seven ; G 24 ; B 29 0 528 709 ;
+U -1 ; WX 585 ; N eight ; G 25 ; B 22 -23 525 724 ;
+U -1 ; WX 576 ; N nine ; G 26 ; B 28 -24 516 724 ;
+U -1 ; WX 333 ; N colon ; G 27 ; B 113 0 263 520 ;
+U -1 ; WX 333 ; N semicolon ; G 28 ; B 113 -174 263 520 ;
+U -1 ; WX 589 ; N less ; G 29 ; B 40 -10 529 474 ;
+U -1 ; WX 594 ; N equal ; G 30 ; B 50 52 534 411 ;
+U -1 ; WX 589 ; N greater ; G 31 ; B 40 -10 529 474 ;
+U -1 ; WX 616 ; N question ; G 32 ; B 64 0 556 744 ;
+U -1 ; WX 1007 ; N at ; G 33 ; B 27 -138 947 745 ;
+U -1 ; WX 763 ; N A ; G 34 ; B 26 0 703 729 ;
+U -1 ; WX 726 ; N B ; G 35 ; B 82 0 666 729 ;
+U -1 ; WX 745 ; N C ; G 36 ; B 44 -23 685 741 ;
+U -1 ; WX 741 ; N D ; G 37 ; B 77 0 681 729 ;
+U -1 ; WX 684 ; N E ; G 38 ; B 79 0 624 729 ;
+U -1 ; WX 646 ; N F ; G 39 ; B 74 0 586 729 ;
+U -1 ; WX 778 ; N G ; G 40 ; B 42 -23 711 741 ;
+U -1 ; WX 722 ; N H ; G 41 ; B 68 0 657 729 ;
+U -1 ; WX 278 ; N I ; G 42 ; B 63 0 213 729 ;
+U -1 ; WX 556 ; N J ; G 43 ; B 24 -23 486 729 ;
+U -1 ; WX 777 ; N K ; G 44 ; B 74 0 717 729 ;
+U -1 ; WX 639 ; N L ; G 45 ; B 80 0 579 729 ;
+U -1 ; WX 836 ; N M ; G 46 ; B 66 0 776 729 ;
+U -1 ; WX 722 ; N N ; G 47 ; B 68 0 661 729 ;
+U -1 ; WX 802 ; N O ; G 48 ; B 40 -23 742 741 ;
+U -1 ; WX 693 ; N P ; G 49 ; B 76 0 633 729 ;
+U -1 ; WX 805 ; N Q ; G 50 ; B 43 -54 745 741 ;
+U -1 ; WX 737 ; N R ; G 51 ; B 80 0 677 729 ;
+U -1 ; WX 693 ; N S ; G 52 ; B 32 -23 633 741 ;
+U -1 ; WX 658 ; N T ; G 53 ; B 14 0 598 729 ;
+U -1 ; WX 722 ; N U ; G 54 ; B 76 -23 654 729 ;
+U -1 ; WX 707 ; N V ; G 55 ; B 24 0 647 729 ;
+U -1 ; WX 992 ; N W ; G 56 ; B 13 0 932 729 ;
+U -1 ; WX 713 ; N X ; G 57 ; B 22 0 653 729 ;
+U -1 ; WX 710 ; N Y ; G 58 ; B 27 0 650 729 ;
+U -1 ; WX 638 ; N Z ; G 59 ; B 30 0 578 729 ;
+U -1 ; WX 368 ; N bracketleft ; G 60 ; B 66 -200 308 729 ;
+U -1 ; WX 349 ; N backslash ; G 61 ; B -12 -14 289 714 ;
+U -1 ; WX 333 ; N bracketright ; G 62 ; B 18 -200 260 729 ;
+U -1 ; WX 584 ; N asciicircum ; G 63 ; B 61 270 522 695 ;
+U -1 ; WX 638 ; N underscore ; G 64 ; B -22 -189 578 -120 ;
+U -1 ; WX 333 ; N grave ; G 124 ; B 17 607 213 757 ;
+U -1 ; WX 584 ; N a ; G 66 ; B 28 -23 524 549 ;
+U -1 ; WX 635 ; N b ; G 67 ; B 59 -23 575 729 ;
+U -1 ; WX 582 ; N c ; G 68 ; B 34 -23 522 549 ;
+U -1 ; WX 611 ; N d ; G 69 ; B 29 -23 545 729 ;
+U -1 ; WX 584 ; N e ; G 70 ; B 22 -23 525 549 ;
+U -1 ; WX 373 ; N f ; G 71 ; B 14 0 313 729 ;
+U -1 ; WX 611 ; N g ; G 72 ; B 34 -218 541 549 ;
+U -1 ; WX 611 ; N h ; G 73 ; B 67 0 541 729 ;
+U -1 ; WX 278 ; N i ; G 74 ; B 67 0 207 729 ;
+U -1 ; WX 278 ; N j ; G 75 ; B 4 -218 210 729 ;
+U -1 ; WX 608 ; N k ; G 76 ; B 59 0 548 729 ;
+U -1 ; WX 278 ; N l ; G 77 ; B 67 0 207 729 ;
+U -1 ; WX 889 ; N m ; G 78 ; B 60 0 824 549 ;
+U -1 ; WX 611 ; N n ; G 79 ; B 63 0 546 549 ;
+U -1 ; WX 629 ; N o ; G 80 ; B 35 -23 569 549 ;
+U -1 ; WX 634 ; N p ; G 81 ; B 58 -218 574 549 ;
+U -1 ; WX 611 ; N q ; G 82 ; B 28 -218 544 549 ;
+U -1 ; WX 430 ; N r ; G 83 ; B 63 0 370 549 ;
+U -1 ; WX 580 ; N s ; G 84 ; B 29 -23 520 549 ;
+U -1 ; WX 361 ; N t ; G 85 ; B 14 -23 301 674 ;
+U -1 ; WX 611 ; N u ; G 86 ; B 58 -23 541 540 ;
+U -1 ; WX 596 ; N v ; G 87 ; B 14 0 536 540 ;
+U -1 ; WX 826 ; N w ; G 88 ; B 5 0 766 540 ;
+U -1 ; WX 595 ; N x ; G 89 ; B 16 0 535 540 ;
+U -1 ; WX 598 ; N y ; G 90 ; B 9 -219 538 540 ;
+U -1 ; WX 528 ; N z ; G 91 ; B 21 0 468 540 ;
+U -1 ; WX 389 ; N braceleft ; G 92 ; B 37 -200 317 729 ;
+U -1 ; WX 280 ; N bar ; G 93 ; B 100 -200 180 729 ;
+U -1 ; WX 412 ; N braceright ; G 94 ; B 72 -200 352 729 ;
+U -1 ; WX 584 ; N asciitilde ; G 95 ; B 60 142 519 314 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 606 ; N Euro ; G 289 ; B 6 -23 546 724 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N quotesinglbase ; G 117 ; B 66 -135 201 125 ;
+U -1 ; WX 595 ; N florin ; G 101 ; B 21 -220 535 744 ;
+U -1 ; WX 500 ; N quotedblbase ; G 118 ; B 72 -135 432 125 ;
+U -1 ; WX 1000 ; N ellipsis ; G 121 ; B 92 0 908 146 ;
+U -1 ; WX 583 ; N dagger ; G 112 ; B 31 -194 523 709 ;
+U -1 ; WX 580 ; N daggerdbl ; G 113 ; B 28 -194 520 709 ;
+U -1 ; WX 386 ; N circumflex ; G 126 ; B 8 607 326 757 ;
+U -1 ; WX 1050 ; N perthousand ; G 122 ; B 11 -22 990 739 ;
+U -1 ; WX 693 ; N Scaron ; G 189 ; B 32 -23 633 936 ;
+U -1 ; WX 333 ; N guilsinglleft ; G 107 ; B 83 72 250 481 ;
+U -1 ; WX 1030 ; N OE ; G 142 ; B 28 -23 970 741 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 638 ; N Zcaron ; G 200 ; B 30 0 578 936 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N quoteleft ; G 65 ; B 67 469 202 729 ;
+U -1 ; WX 278 ; N quoteright ; G 8 ; B 66 469 201 729 ;
+U -1 ; WX 500 ; N quotedblleft ; G 105 ; B 71 469 433 729 ;
+U -1 ; WX 500 ; N quotedblright ; G 119 ; B 73 469 440 729 ;
+U -1 ; WX 360 ; N bullet ; G 116 ; B 50 175 300 425 ;
+U -1 ; WX 617 ; N endash ; G 111 ; B -9 207 557 311 ;
+U -1 ; WX 1063 ; N emdash ; G 137 ; B -7 207 1003 311 ;
+U -1 ; WX 405 ; N tilde ; G 127 ; B -9 621 345 749 ;
+U -1 ; WX 1000 ; N trademark ; G 297 ; B 71 273 929 729 ;
+U -1 ; WX 580 ; N scaron ; G 253 ; B 29 -23 520 757 ;
+U -1 ; WX 333 ; N guilsinglright ; G 108 ; B 80 72 247 481 ;
+U -1 ; WX 979 ; N oe ; G 148 ; B 23 -23 920 549 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 528 ; N zcaron ; G 264 ; B 21 0 468 757 ;
+U -1 ; WX 710 ; N Ydieresis ; G 204 ; B 27 0 650 922 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N exclamdown ; G 96 ; B 66 -186 216 540 ;
+U -1 ; WX 582 ; N cent ; G 97 ; B 36 -124 522 634 ;
+U -1 ; WX 597 ; N sterling ; G 98 ; B 31 -23 537 715 ;
+U -1 ; WX 590 ; N currency ; G 103 ; B 26 100 530 604 ;
+U -1 ; WX 612 ; N yen ; G 100 ; B 5 0 552 704 ;
+U -1 ; WX 280 ; N brokenbar ; G 314 ; B 100 -200 180 729 ;
+U -1 ; WX 578 ; N section ; G 102 ; B 33 -201 518 723 ;
+U -1 ; WX 374 ; N dieresis ; G 131 ; B 18 621 314 743 ;
+U -1 ; WX 811 ; N copyright ; G 303 ; B -14 -22 751 743 ;
+U -1 ; WX 389 ; N ordfeminine ; G 139 ; B 31 262 329 729 ;
+U -1 ; WX 556 ; N guillemotleft ; G 106 ; B 88 72 468 481 ;
+U -1 ; WX 604 ; N logicalnot ; G 311 ; B 40 86 544 375 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 811 ; N registered ; G 304 ; B -14 -22 751 743 ;
+U -1 ; WX 375 ; N macron ; G 128 ; B 16 640 315 719 ;
+U -1 ; WX 606 ; N degree ; G 293 ; B 151 383 454 686 ;
+U -1 ; WX 587 ; N plusminus ; G 298 ; B 56 -16 527 608 ;
+U -1 ; WX 388 ; N twosuperior ; G 291 ; B 16 284 328 718 ;
+U -1 ; WX 389 ; N threesuperior ; G 292 ; B 15 271 329 718 ;
+U -1 ; WX 377 ; N acute ; G 125 ; B 121 607 317 757 ;
+U -1 ; WX 633 ; N mu ; G 315 ; B 58 -220 573 540 ;
+U -1 ; WX 589 ; N paragraph ; G 115 ; B 19 -191 529 729 ;
+U -1 ; WX 278 ; N periodcentered ; G 114 ; B 64 169 188 292 ;
+U -1 ; WX 354 ; N cedilla ; G 133 ; B 27 -220 294 0 ;
+U -1 ; WX 351 ; N onesuperior ; G 290 ; B 40 284 242 709 ;
+U -1 ; WX 403 ; N ordmasculine ; G 143 ; B 23 262 343 729 ;
+U -1 ; WX 556 ; N guillemotright ; G 120 ; B 88 72 462 481 ;
+U -1 ; WX 910 ; N onequarter ; G 300 ; B 40 -20 850 715 ;
+U -1 ; WX 906 ; N onehalf ; G 299 ; B 40 -20 846 715 ;
+U -1 ; WX 910 ; N threequarters ; G 301 ; B 15 -20 850 718 ;
+U -1 ; WX 611 ; N questiondown ; G 123 ; B 51 -204 544 540 ;
+U -1 ; WX 763 ; N Agrave ; G 152 ; B 26 0 703 936 ;
+U -1 ; WX 763 ; N Aacute ; G 151 ; B 26 0 703 936 ;
+U -1 ; WX 763 ; N Acircumflex ; G 153 ; B 26 0 703 936 ;
+U -1 ; WX 763 ; N Atilde ; G 155 ; B 26 0 703 928 ;
+U -1 ; WX 763 ; N Adieresis ; G 150 ; B 26 0 703 922 ;
+U -1 ; WX 763 ; N Aring ; G 156 ; B 26 0 703 949 ;
+U -1 ; WX 1026 ; N AE ; G 138 ; B 1 0 966 729 ;
+U -1 ; WX 745 ; N Ccedilla ; G 158 ; B 44 -220 685 741 ;
+U -1 ; WX 684 ; N Egrave ; G 164 ; B 79 0 624 936 ;
+U -1 ; WX 684 ; N Eacute ; G 163 ; B 79 0 624 936 ;
+U -1 ; WX 684 ; N Ecircumflex ; G 165 ; B 79 0 624 936 ;
+U -1 ; WX 684 ; N Edieresis ; G 162 ; B 79 0 624 922 ;
+U -1 ; WX 278 ; N Igrave ; G 172 ; B -10 0 213 936 ;
+U -1 ; WX 350 ; N Iacute ; G 171 ; B 63 0 290 936 ;
+U -1 ; WX 359 ; N Icircumflex ; G 173 ; B -19 0 299 936 ;
+U -1 ; WX 347 ; N Idieresis ; G 170 ; B -9 0 287 922 ;
+U -1 ; WX 741 ; N Eth ; G 283 ; B 0 0 681 729 ;
+U -1 ; WX 722 ; N Ntilde ; G 179 ; B 68 0 661 928 ;
+U -1 ; WX 802 ; N Ograve ; G 182 ; B 40 -23 742 936 ;
+U -1 ; WX 802 ; N Oacute ; G 181 ; B 40 -23 742 936 ;
+U -1 ; WX 802 ; N Ocircumflex ; G 183 ; B 40 -23 742 936 ;
+U -1 ; WX 802 ; N Otilde ; G 184 ; B 40 -23 742 928 ;
+U -1 ; WX 802 ; N Odieresis ; G 180 ; B 40 -23 742 922 ;
+U -1 ; WX 584 ; N multiply ; G 295 ; B 79 18 505 444 ;
+U -1 ; WX 815 ; N Oslash ; G 141 ; B 31 -39 755 749 ;
+U -1 ; WX 722 ; N Ugrave ; G 194 ; B 76 -23 654 936 ;
+U -1 ; WX 722 ; N Uacute ; G 193 ; B 76 -23 654 936 ;
+U -1 ; WX 722 ; N Ucircumflex ; G 195 ; B 76 -23 654 936 ;
+U -1 ; WX 722 ; N Udieresis ; G 192 ; B 76 -23 654 922 ;
+U -1 ; WX 710 ; N Yacute ; G 198 ; B 27 0 650 936 ;
+U -1 ; WX 693 ; N Thorn ; G 285 ; B 76 0 633 729 ;
+U -1 ; WX 635 ; N germandbls ; G 149 ; B 67 -17 575 729 ;
+U -1 ; WX 584 ; N agrave ; G 218 ; B 28 -23 524 757 ;
+U -1 ; WX 584 ; N aacute ; G 217 ; B 28 -23 524 757 ;
+U -1 ; WX 584 ; N acircumflex ; G 219 ; B 28 -23 524 757 ;
+U -1 ; WX 584 ; N atilde ; G 221 ; B 28 -23 524 749 ;
+U -1 ; WX 584 ; N adieresis ; G 216 ; B 28 -23 524 743 ;
+U -1 ; WX 584 ; N aring ; G 222 ; B 28 -23 524 770 ;
+U -1 ; WX 916 ; N ae ; G 144 ; B 27 -24 857 549 ;
+U -1 ; WX 582 ; N ccedilla ; G 226 ; B 34 -220 522 549 ;
+U -1 ; WX 584 ; N egrave ; G 230 ; B 22 -23 525 757 ;
+U -1 ; WX 584 ; N eacute ; G 229 ; B 22 -23 525 757 ;
+U -1 ; WX 584 ; N ecircumflex ; G 231 ; B 22 -23 525 757 ;
+U -1 ; WX 584 ; N edieresis ; G 228 ; B 22 -23 525 743 ;
+U -1 ; WX 278 ; N igrave ; G 238 ; B -10 0 207 757 ;
+U -1 ; WX 350 ; N iacute ; G 237 ; B 67 0 290 757 ;
+U -1 ; WX 359 ; N icircumflex ; G 239 ; B -19 0 299 757 ;
+U -1 ; WX 347 ; N idieresis ; G 236 ; B -9 0 287 743 ;
+U -1 ; WX 629 ; N eth ; G 287 ; B 35 -23 569 744 ;
+U -1 ; WX 611 ; N ntilde ; G 244 ; B 63 0 546 749 ;
+U -1 ; WX 629 ; N ograve ; G 247 ; B 35 -23 569 757 ;
+U -1 ; WX 629 ; N oacute ; G 246 ; B 35 -23 569 757 ;
+U -1 ; WX 629 ; N ocircumflex ; G 248 ; B 35 -23 569 757 ;
+U -1 ; WX 629 ; N otilde ; G 249 ; B 35 -23 569 749 ;
+U -1 ; WX 629 ; N odieresis ; G 245 ; B 35 -23 569 743 ;
+U -1 ; WX 594 ; N divide ; G 296 ; B 50 -11 534 474 ;
+U -1 ; WX 658 ; N oslash ; G 147 ; B 11 -38 598 557 ;
+U -1 ; WX 611 ; N ugrave ; G 258 ; B 58 -23 541 757 ;
+U -1 ; WX 611 ; N uacute ; G 257 ; B 58 -23 541 757 ;
+U -1 ; WX 611 ; N ucircumflex ; G 259 ; B 58 -23 541 757 ;
+U -1 ; WX 611 ; N udieresis ; G 256 ; B 58 -23 541 743 ;
+U -1 ; WX 598 ; N yacute ; G 262 ; B 9 -219 538 757 ;
+U -1 ; WX 634 ; N thorn ; G 288 ; B 58 -218 574 729 ;
+U -1 ; WX 598 ; N ydieresis ; G 266 ; B 9 -219 538 743 ;
+U -1 ; WX 397 ; N fraction ; G 99 ; B -173 -20 337 715 ;
+U -1 ; WX 611 ; N fi ; G 109 ; B 9 0 548 729 ;
+U -1 ; WX 611 ; N fl ; G 110 ; B 12 0 546 729 ;
+U -1 ; WX 359 ; N breve ; G 129 ; B 35 605 299 748 ;
+U -1 ; WX 333 ; N dotaccent ; G 130 ; B 112 621 222 743 ;
+U -1 ; WX 333 ; N ring ; G 132 ; B 77 590 257 770 ;
+U -1 ; WX 400 ; N hungarumlaut ; G 134 ; B -44 610 340 757 ;
+U -1 ; WX 333 ; N ogonek ; G 135 ; B 45 -234 268 0 ;
+U -1 ; WX 387 ; N caron ; G 136 ; B 9 607 327 757 ;
+U -1 ; WX 657 ; N Lslash ; G 140 ; B 0 0 597 729 ;
+U -1 ; WX 278 ; N dotlessi ; G 145 ; B 67 0 207 540 ;
+U -1 ; WX 312 ; N lslash ; G 146 ; B 0 0 252 729 ;
+U -1 ; WX 763 ; N Abreve ; G 154 ; B 26 0 703 927 ;
+U -1 ; WX 783 ; N Aogonek ; G 157 ; B 26 -233 723 729 ;
+U -1 ; WX 745 ; N Cacute ; G 159 ; B 44 -23 685 936 ;
+U -1 ; WX 745 ; N Ccaron ; G 160 ; B 44 -23 685 936 ;
+U -1 ; WX 741 ; N Dcaron ; G 161 ; B 77 0 681 936 ;
+U -1 ; WX 684 ; N Ecaron ; G 166 ; B 79 0 624 936 ;
+U -1 ; WX 684 ; N Edotaccent ; G 167 ; B 79 0 624 922 ;
+U -1 ; WX 708 ; N Eogonek ; G 168 ; B 79 -233 648 729 ;
+U -1 ; WX 778 ; N Gbreve ; G 169 ; B 42 -23 711 927 ;
+U -1 ; WX 278 ; N Idotaccent ; G 174 ; B 63 0 213 922 ;
+U -1 ; WX 639 ; N Lacute ; G 175 ; B 80 0 579 936 ;
+U -1 ; WX 639 ; N Lcaron ; G 176 ; B 80 0 579 729 ;
+U -1 ; WX 722 ; N Nacute ; G 177 ; B 68 0 661 936 ;
+U -1 ; WX 722 ; N Ncaron ; G 178 ; B 68 0 661 936 ;
+U -1 ; WX 802 ; N Ohungarumlaut ; G 185 ; B 40 -23 742 936 ;
+U -1 ; WX 737 ; N Racute ; G 186 ; B 80 0 677 936 ;
+U -1 ; WX 737 ; N Rcaron ; G 187 ; B 80 0 677 936 ;
+U -1 ; WX 693 ; N Sacute ; G 188 ; B 32 -23 633 936 ;
+U -1 ; WX 693 ; N Scedilla ; G 190 ; B 32 -220 633 741 ;
+U -1 ; WX 658 ; N Tcaron ; G 191 ; B 14 0 598 936 ;
+U -1 ; WX 722 ; N Uring ; G 196 ; B 76 -23 654 949 ;
+U -1 ; WX 722 ; N Uhungarumlaut ; G 197 ; B 76 -23 654 936 ;
+U -1 ; WX 638 ; N Zacute ; G 199 ; B 30 0 578 936 ;
+U -1 ; WX 638 ; N Zdotaccent ; G 201 ; B 30 0 578 922 ;
+U -1 ; WX 763 ; N Amacron ; G 202 ; B 26 0 703 898 ;
+U -1 ; WX 658 ; N Tcommaaccent ; G 203 ; B 14 -307 598 729 ;
+U -1 ; WX 684 ; N Emacron ; G 205 ; B 79 0 624 898 ;
+U -1 ; WX 334 ; N Imacron ; G 206 ; B 2 0 274 898 ;
+U -1 ; WX 297 ; N Iogonek ; G 207 ; B 34 -233 237 729 ;
+U -1 ; WX 777 ; N Kcommaaccent ; G 208 ; B 74 -307 717 729 ;
+U -1 ; WX 639 ; N Lcommaaccent ; G 209 ; B 80 -307 579 729 ;
+U -1 ; WX 722 ; N Ncommaaccent ; G 210 ; B 68 -307 661 729 ;
+U -1 ; WX 802 ; N Omacron ; G 211 ; B 40 -23 742 898 ;
+U -1 ; WX 737 ; N Rcommaaccent ; G 212 ; B 80 -307 677 729 ;
+U -1 ; WX 778 ; N Gcommaaccent ; G 213 ; B 42 -307 711 741 ;
+U -1 ; WX 722 ; N Umacron ; G 214 ; B 76 -23 654 898 ;
+U -1 ; WX 722 ; N Uogonek ; G 215 ; B 76 -234 654 729 ;
+U -1 ; WX 584 ; N abreve ; G 220 ; B 28 -23 524 748 ;
+U -1 ; WX 608 ; N aogonek ; G 223 ; B 28 -233 548 549 ;
+U -1 ; WX 582 ; N cacute ; G 224 ; B 34 -23 522 757 ;
+U -1 ; WX 582 ; N ccaron ; G 225 ; B 34 -23 522 757 ;
+U -1 ; WX 780 ; N dcaron ; G 227 ; B 29 -23 720 729 ;
+U -1 ; WX 584 ; N ecaron ; G 232 ; B 22 -23 525 757 ;
+U -1 ; WX 584 ; N edotaccent ; G 233 ; B 22 -23 525 743 ;
+U -1 ; WX 584 ; N eogonek ; G 234 ; B 21 -234 525 549 ;
+U -1 ; WX 611 ; N gbreve ; G 235 ; B 34 -218 541 748 ;
+U -1 ; WX 338 ; N lacute ; G 240 ; B 67 0 278 936 ;
+U -1 ; WX 442 ; N lcaron ; G 241 ; B 67 0 382 729 ;
+U -1 ; WX 611 ; N nacute ; G 242 ; B 63 0 546 757 ;
+U -1 ; WX 611 ; N ncaron ; G 243 ; B 63 0 546 757 ;
+U -1 ; WX 629 ; N ohungarumlaut ; G 250 ; B 35 -23 569 757 ;
+U -1 ; WX 430 ; N racute ; G 251 ; B 63 0 370 757 ;
+U -1 ; WX 580 ; N sacute ; G 252 ; B 29 -23 520 757 ;
+U -1 ; WX 580 ; N scommaaccent ; G 254 ; B 29 -307 520 549 ;
+U -1 ; WX 458 ; N tcaron ; G 255 ; B 14 -23 398 829 ;
+U -1 ; WX 611 ; N uring ; G 260 ; B 58 -23 541 770 ;
+U -1 ; WX 619 ; N uhungarumlaut ; G 261 ; B 58 -23 559 757 ;
+U -1 ; WX 528 ; N zacute ; G 263 ; B 21 0 468 757 ;
+U -1 ; WX 528 ; N zdotaccent ; G 265 ; B 21 0 468 743 ;
+U -1 ; WX 361 ; N tcommaaccent ; G 267 ; B 14 -307 301 674 ;
+U -1 ; WX 584 ; N amacron ; G 268 ; B 28 -23 524 719 ;
+U -1 ; WX 584 ; N emacron ; G 269 ; B 22 -23 525 719 ;
+U -1 ; WX 326 ; N imacron ; G 270 ; B 7 0 266 719 ;
+U -1 ; WX 608 ; N kcommaaccent ; G 271 ; B 59 -307 548 729 ;
+U -1 ; WX 278 ; N lcommaaccent ; G 272 ; B 67 -307 207 729 ;
+U -1 ; WX 611 ; N ncommaaccent ; G 273 ; B 63 -307 546 549 ;
+U -1 ; WX 629 ; N omacron ; G 274 ; B 35 -23 569 719 ;
+U -1 ; WX 430 ; N rcommaaccent ; G 275 ; B 63 -307 370 549 ;
+U -1 ; WX 611 ; N umacron ; G 276 ; B 58 -23 541 719 ;
+U -1 ; WX 624 ; N uogonek ; G 277 ; B 58 -233 564 540 ;
+U -1 ; WX 432 ; N rcaron ; G 278 ; B 54 0 372 757 ;
+U -1 ; WX 580 ; N scedilla ; G 279 ; B 29 -220 520 549 ;
+U -1 ; WX 611 ; N gcommaaccent ; G 280 ; B 34 -218 541 853 ;
+U -1 ; WX 291 ; N iogonek ; G 281 ; B 34 -233 231 729 ;
+U -1 ; WX 693 ; N Scommaaccent ; G 282 ; B 32 -307 633 741 ;
+U -1 ; WX 741 ; N Dcroat ; G 284 ; B 0 0 681 729 ;
+U -1 ; WX 665 ; N dcroat ; G 286 ; B 29 -23 605 729 ;
+U -1 ; WX 604 ; N minus ; G 294 ; B 40 172 544 291 ;
+U -1 ; WX 333 ; N commaaccent ; G 302 ; B 112 -307 234 -60 ;
+U -1 ; WX 522 ; N lozenge ; G 305 ; B 16 0 462 744 ;
+U -1 ; WX 781 ; N Delta ; G 306 ; B 8 0 721 729 ;
+U -1 ; WX 594 ; N notequal ; G 307 ; B 50 -69 534 528 ;
+U -1 ; WX 572 ; N radical ; G 308 ; B 7 -36 512 913 ;
+U -1 ; WX 594 ; N lessequal ; G 309 ; B 45 -10 534 639 ;
+U -1 ; WX 594 ; N greaterequal ; G 310 ; B 45 -10 534 639 ;
+U -1 ; WX 754 ; N summation ; G 312 ; B 17 -96 694 760 ;
+U -1 ; WX 518 ; N partialdiff ; G 313 ; B 22 -15 458 750 ;
+U -1 ; WX 763 ; N afii10017 ; G 316 ; B 26 0 703 729 ;
+U -1 ; WX 726 ; N afii10018 ; G 317 ; B 82 0 666 729 ;
+U -1 ; WX 726 ; N afii10019 ; G 318 ; B 82 0 666 729 ;
+U -1 ; WX 654 ; N afii10020 ; G 319 ; B 82 0 594 729 ;
+U -1 ; WX 925 ; N afii10021 ; G 320 ; B 35 -150 865 729 ;
+U -1 ; WX 709 ; N afii10022 ; G 321 ; B 82 0 627 729 ;
+U -1 ; WX 709 ; N afii10023 ; G 322 ; B 82 0 627 922 ;
+U -1 ; WX 1138 ; N afii10024 ; G 323 ; B 22 0 1078 729 ;
+U -1 ; WX 693 ; N afii10025 ; G 324 ; B 32 -23 633 741 ;
+U -1 ; WX 757 ; N afii10026 ; G 325 ; B 82 0 675 729 ;
+U -1 ; WX 757 ; N afii10027 ; G 326 ; B 82 0 675 927 ;
+U -1 ; WX 785 ; N afii10028 ; G 327 ; B 82 0 725 729 ;
+U -1 ; WX 729 ; N afii10029 ; G 328 ; B 36 -12 647 729 ;
+U -1 ; WX 874 ; N afii10030 ; G 329 ; B 82 0 792 729 ;
+U -1 ; WX 753 ; N afii10031 ; G 330 ; B 82 0 671 729 ;
+U -1 ; WX 802 ; N afii10032 ; G 331 ; B 40 -23 742 741 ;
+U -1 ; WX 753 ; N afii10033 ; G 332 ; B 82 0 671 729 ;
+U -1 ; WX 699 ; N afii10034 ; G 333 ; B 82 0 639 729 ;
+U -1 ; WX 745 ; N afii10035 ; G 334 ; B 44 -23 685 741 ;
+U -1 ; WX 658 ; N afii10036 ; G 335 ; B 14 0 598 729 ;
+U -1 ; WX 756 ; N afii10037 ; G 336 ; B 15 0 696 729 ;
+U -1 ; WX 922 ; N afii10038 ; G 337 ; B 30 0 862 729 ;
+U -1 ; WX 714 ; N afii10039 ; G 338 ; B 22 0 654 729 ;
+U -1 ; WX 841 ; N afii10040 ; G 339 ; B 82 -150 781 729 ;
+U -1 ; WX 685 ; N afii10041 ; G 340 ; B 68 0 624 729 ;
+U -1 ; WX 1057 ; N afii10042 ; G 341 ; B 68 0 967 729 ;
+U -1 ; WX 1183 ; N afii10043 ; G 342 ; B 68 -150 1097 729 ;
+U -1 ; WX 861 ; N afii10044 ; G 343 ; B 14 0 801 729 ;
+U -1 ; WX 949 ; N afii10045 ; G 344 ; B 68 0 884 729 ;
+U -1 ; WX 693 ; N afii10046 ; G 345 ; B 76 0 633 729 ;
+U -1 ; WX 745 ; N afii10047 ; G 346 ; B 44 -23 685 741 ;
+U -1 ; WX 1099 ; N afii10048 ; G 347 ; B 68 -23 1033 741 ;
+U -1 ; WX 698 ; N afii10049 ; G 348 ; B 22 0 633 729 ;
+U -1 ; WX 584 ; N afii10065 ; G 349 ; B 28 -23 524 549 ;
+U -1 ; WX 625 ; N afii10066 ; G 350 ; B 50 -23 565 777 ;
+U -1 ; WX 578 ; N afii10067 ; G 351 ; B 60 0 518 540 ;
+U -1 ; WX 468 ; N afii10068 ; G 352 ; B 60 0 408 540 ;
+U -1 ; WX 722 ; N afii10069 ; G 353 ; B 23 -125 662 540 ;
+U -1 ; WX 584 ; N afii10070 ; G 354 ; B 22 -23 525 549 ;
+U -1 ; WX 584 ; N afii10071 ; G 355 ; B 22 -23 525 743 ;
+U -1 ; WX 848 ; N afii10072 ; G 356 ; B 16 0 788 540 ;
+U -1 ; WX 580 ; N afii10073 ; G 357 ; B 29 -23 520 549 ;
+U -1 ; WX 615 ; N afii10074 ; G 358 ; B 60 0 555 540 ;
+U -1 ; WX 615 ; N afii10075 ; G 359 ; B 60 0 555 723 ;
+U -1 ; WX 609 ; N afii10076 ; G 360 ; B 60 0 549 540 ;
+U -1 ; WX 577 ; N afii10077 ; G 361 ; B 29 -10 517 540 ;
+U -1 ; WX 666 ; N afii10078 ; G 362 ; B 60 0 606 540 ;
+U -1 ; WX 603 ; N afii10079 ; G 363 ; B 60 0 543 540 ;
+U -1 ; WX 629 ; N afii10080 ; G 364 ; B 35 -23 569 549 ;
+U -1 ; WX 603 ; N afii10081 ; G 365 ; B 60 0 543 540 ;
+U -1 ; WX 634 ; N afii10082 ; G 366 ; B 58 -218 574 549 ;
+U -1 ; WX 582 ; N afii10083 ; G 367 ; B 34 -23 522 549 ;
+U -1 ; WX 491 ; N afii10084 ; G 368 ; B 21 0 431 540 ;
+U -1 ; WX 598 ; N afii10085 ; G 369 ; B 9 -219 538 540 ;
+U -1 ; WX 980 ; N afii10086 ; G 370 ; B 28 -218 920 719 ;
+U -1 ; WX 595 ; N afii10087 ; G 371 ; B 16 0 535 540 ;
+U -1 ; WX 689 ; N afii10088 ; G 372 ; B 60 -125 629 540 ;
+U -1 ; WX 578 ; N afii10089 ; G 373 ; B 60 0 518 540 ;
+U -1 ; WX 886 ; N afii10090 ; G 374 ; B 60 0 826 540 ;
+U -1 ; WX 1005 ; N afii10091 ; G 375 ; B 60 -125 945 540 ;
+U -1 ; WX 723 ; N afii10092 ; G 376 ; B 20 0 663 540 ;
+U -1 ; WX 811 ; N afii10093 ; G 377 ; B 60 0 718 540 ;
+U -1 ; WX 592 ; N afii10094 ; G 378 ; B 60 0 532 540 ;
+U -1 ; WX 582 ; N afii10095 ; G 379 ; B 34 -23 522 549 ;
+U -1 ; WX 888 ; N afii10096 ; G 380 ; B 60 -23 792 549 ;
+U -1 ; WX 596 ; N afii10097 ; G 381 ; B 25 0 531 540 ;
+U -1 ; WX 709 ; N uni0400 ; G 382 ; B 82 0 627 951 ;
+U -1 ; WX 780 ; N afii10051 ; G 383 ; B 14 -172 720 729 ;
+U -1 ; WX 654 ; N afii10052 ; G 384 ; B 82 0 594 951 ;
+U -1 ; WX 745 ; N afii10053 ; G 385 ; B 44 -23 685 741 ;
+U -1 ; WX 693 ; N afii10054 ; G 386 ; B 32 -23 633 741 ;
+U -1 ; WX 278 ; N afii10055 ; G 387 ; B 63 0 213 729 ;
+U -1 ; WX 347 ; N afii10056 ; G 388 ; B -9 0 287 922 ;
+U -1 ; WX 556 ; N afii10057 ; G 389 ; B 24 -23 486 729 ;
+U -1 ; WX 1124 ; N afii10058 ; G 390 ; B 46 0 1064 729 ;
+U -1 ; WX 1124 ; N afii10059 ; G 391 ; B 68 0 1064 729 ;
+U -1 ; WX 780 ; N afii10060 ; G 392 ; B 14 0 720 729 ;
+U -1 ; WX 785 ; N afii10061 ; G 393 ; B 82 0 725 951 ;
+U -1 ; WX 757 ; N uni040D ; G 394 ; B 82 0 675 951 ;
+U -1 ; WX 756 ; N afii10062 ; G 395 ; B 15 0 696 944 ;
+U -1 ; WX 722 ; N afii10145 ; G 396 ; B 68 -150 658 729 ;
+U -1 ; WX 584 ; N uni0450 ; G 397 ; B 22 -23 525 759 ;
+U -1 ; WX 611 ; N afii10099 ; G 398 ; B 12 -187 541 729 ;
+U -1 ; WX 468 ; N afii10100 ; G 399 ; B 60 0 408 759 ;
+U -1 ; WX 582 ; N afii10101 ; G 400 ; B 34 -23 522 549 ;
+U -1 ; WX 580 ; N afii10102 ; G 401 ; B 29 -23 520 549 ;
+U -1 ; WX 278 ; N afii10103 ; G 402 ; B 67 0 207 729 ;
+U -1 ; WX 347 ; N afii10104 ; G 403 ; B -9 0 287 743 ;
+U -1 ; WX 278 ; N afii10105 ; G 404 ; B 4 -218 210 729 ;
+U -1 ; WX 935 ; N afii10106 ; G 405 ; B 29 0 875 540 ;
+U -1 ; WX 938 ; N afii10107 ; G 406 ; B 63 0 878 540 ;
+U -1 ; WX 611 ; N afii10108 ; G 407 ; B 12 0 541 729 ;
+U -1 ; WX 609 ; N afii10109 ; G 408 ; B 60 0 549 759 ;
+U -1 ; WX 615 ; N uni045D ; G 409 ; B 60 0 555 759 ;
+U -1 ; WX 598 ; N afii10110 ; G 410 ; B 9 -219 538 752 ;
+U -1 ; WX 608 ; N afii10193 ; G 411 ; B 60 -125 544 540 ;
+U -1 ; WX 693 ; N uni048C ; G 412 ; B 6 0 633 729 ;
+U -1 ; WX 600 ; N uni048D ; G 413 ; B -20 0 540 540 ;
+U -1 ; WX 693 ; N uni048E ; G 414 ; B 76 0 633 729 ;
+U -1 ; WX 634 ; N uni048F ; G 415 ; B 58 -218 574 549 ;
+U -1 ; WX 646 ; N afii10050 ; G 416 ; B 74 0 586 864 ;
+U -1 ; WX 472 ; N afii10098 ; G 417 ; B 64 0 412 666 ;
+U -1 ; WX 654 ; N uni0492 ; G 418 ; B 4 0 594 729 ;
+U -1 ; WX 468 ; N uni0493 ; G 419 ; B -6 0 408 540 ;
+U -1 ; WX 659 ; N uni0494 ; G 420 ; B 74 -172 599 729 ;
+U -1 ; WX 594 ; N uni0495 ; G 421 ; B 60 -187 534 540 ;
+U -1 ; WX 1138 ; N uni0496 ; G 422 ; B 22 -150 1078 729 ;
+U -1 ; WX 848 ; N uni0497 ; G 423 ; B 16 -125 788 540 ;
+U -1 ; WX 693 ; N uni0498 ; G 424 ; B 32 -234 633 741 ;
+U -1 ; WX 580 ; N uni0499 ; G 425 ; B 29 -234 520 549 ;
+U -1 ; WX 785 ; N uni049A ; G 426 ; B 82 -150 725 729 ;
+U -1 ; WX 609 ; N uni049B ; G 427 ; B 60 -125 549 540 ;
+U -1 ; WX 785 ; N uni049C ; G 428 ; B 82 0 725 729 ;
+U -1 ; WX 609 ; N uni049D ; G 429 ; B 60 0 549 540 ;
+U -1 ; WX 784 ; N uni049E ; G 430 ; B 2 0 724 729 ;
+U -1 ; WX 608 ; N uni049F ; G 431 ; B 8 0 548 540 ;
+U -1 ; WX 947 ; N uni04A0 ; G 432 ; B 14 0 887 729 ;
+U -1 ; WX 740 ; N uni04A1 ; G 433 ; B 20 0 680 540 ;
+U -1 ; WX 851 ; N uni04A2 ; G 434 ; B 82 -150 791 729 ;
+U -1 ; WX 689 ; N uni04A3 ; G 435 ; B 60 -125 629 540 ;
+U -1 ; WX 1028 ; N uni04A4 ; G 436 ; B 68 0 968 729 ;
+U -1 ; WX 801 ; N uni04A5 ; G 437 ; B 60 0 741 540 ;
+U -1 ; WX 1092 ; N uni04A6 ; G 438 ; B 68 -172 1032 729 ;
+U -1 ; WX 937 ; N uni04A7 ; G 439 ; B 60 -187 877 540 ;
+U -1 ; WX 745 ; N uni04A8 ; G 440 ; B 44 -23 685 741 ;
+U -1 ; WX 582 ; N uni04A9 ; G 441 ; B 34 -23 522 549 ;
+U -1 ; WX 745 ; N uni04AA ; G 442 ; B 44 -234 685 741 ;
+U -1 ; WX 582 ; N uni04AB ; G 443 ; B 34 -234 522 549 ;
+U -1 ; WX 658 ; N uni04AC ; G 444 ; B 14 -150 598 729 ;
+U -1 ; WX 491 ; N uni04AD ; G 445 ; B 21 -125 431 540 ;
+U -1 ; WX 710 ; N uni04AE ; G 446 ; B 27 0 650 729 ;
+U -1 ; WX 680 ; N uni04AF ; G 447 ; B 57 -189 620 540 ;
+U -1 ; WX 710 ; N uni04B0 ; G 448 ; B 27 0 650 729 ;
+U -1 ; WX 680 ; N uni04B1 ; G 449 ; B 57 -189 620 540 ;
+U -1 ; WX 713 ; N uni04B2 ; G 450 ; B 22 -150 653 729 ;
+U -1 ; WX 595 ; N uni04B3 ; G 451 ; B 16 -125 535 540 ;
+U -1 ; WX 964 ; N uni04B4 ; G 452 ; B 14 -150 904 729 ;
+U -1 ; WX 775 ; N uni04B5 ; G 453 ; B 21 -125 715 540 ;
+U -1 ; WX 794 ; N uni04B6 ; G 454 ; B 68 -150 734 729 ;
+U -1 ; WX 664 ; N uni04B7 ; G 455 ; B 60 -125 604 540 ;
+U -1 ; WX 685 ; N uni04B8 ; G 456 ; B 68 0 624 729 ;
+U -1 ; WX 578 ; N uni04B9 ; G 457 ; B 60 0 518 540 ;
+U -1 ; WX 685 ; N uni04BA ; G 458 ; B 68 0 624 729 ;
+U -1 ; WX 578 ; N uni04BB ; G 459 ; B 60 0 518 540 ;
+U -1 ; WX 980 ; N uni04BC ; G 460 ; B 25 -23 920 745 ;
+U -1 ; WX 742 ; N uni04BD ; G 461 ; B 20 -23 682 549 ;
+U -1 ; WX 980 ; N uni04BE ; G 462 ; B 25 -234 920 745 ;
+U -1 ; WX 742 ; N uni04BF ; G 463 ; B 20 -234 682 549 ;
+U -1 ; WX 278 ; N uni04C0 ; G 464 ; B 63 0 213 729 ;
+U -1 ; WX 1138 ; N uni04C1 ; G 465 ; B 22 0 1078 944 ;
+U -1 ; WX 848 ; N uni04C2 ; G 466 ; B 16 0 788 752 ;
+U -1 ; WX 754 ; N uni04C3 ; G 467 ; B 82 -172 694 729 ;
+U -1 ; WX 573 ; N uni04C4 ; G 468 ; B 60 -188 510 540 ;
+U -1 ; WX 722 ; N uni04C7 ; G 469 ; B 68 -172 657 729 ;
+U -1 ; WX 608 ; N uni04C8 ; G 470 ; B 60 -187 543 540 ;
+U -1 ; WX 685 ; N uni04CB ; G 471 ; B 68 -150 624 729 ;
+U -1 ; WX 578 ; N uni04CC ; G 472 ; B 60 -125 518 540 ;
+U -1 ; WX 763 ; N uni04D0 ; G 473 ; B 26 0 703 944 ;
+U -1 ; WX 584 ; N uni04D1 ; G 474 ; B 28 -23 524 752 ;
+U -1 ; WX 763 ; N uni04D2 ; G 475 ; B 26 0 703 923 ;
+U -1 ; WX 584 ; N uni04D3 ; G 476 ; B 28 -23 524 731 ;
+U -1 ; WX 1026 ; N uni04D4 ; G 477 ; B 1 0 966 729 ;
+U -1 ; WX 916 ; N uni04D5 ; G 478 ; B 27 -24 857 549 ;
+U -1 ; WX 709 ; N uni04D6 ; G 479 ; B 82 0 627 944 ;
+U -1 ; WX 584 ; N uni04D7 ; G 480 ; B 22 -23 525 752 ;
+U -1 ; WX 745 ; N uni04D8 ; G 481 ; B 44 -23 685 741 ;
+U -1 ; WX 582 ; N afii10846 ; G 482 ; B 34 -23 522 549 ;
+U -1 ; WX 745 ; N uni04DA ; G 483 ; B 44 -23 685 923 ;
+U -1 ; WX 582 ; N uni04DB ; G 484 ; B 34 -23 522 731 ;
+U -1 ; WX 1138 ; N uni04DC ; G 485 ; B 22 0 1078 923 ;
+U -1 ; WX 848 ; N uni04DD ; G 486 ; B 16 0 788 731 ;
+U -1 ; WX 693 ; N uni04DE ; G 487 ; B 32 -23 633 923 ;
+U -1 ; WX 580 ; N uni04DF ; G 488 ; B 29 -23 520 731 ;
+U -1 ; WX 693 ; N uni04E0 ; G 489 ; B 32 -23 633 741 ;
+U -1 ; WX 580 ; N uni04E1 ; G 490 ; B 29 -23 520 549 ;
+U -1 ; WX 757 ; N uni04E2 ; G 491 ; B 82 0 675 880 ;
+U -1 ; WX 615 ; N uni04E3 ; G 492 ; B 60 0 555 688 ;
+U -1 ; WX 757 ; N uni04E4 ; G 493 ; B 82 0 675 923 ;
+U -1 ; WX 615 ; N uni04E5 ; G 494 ; B 60 0 555 731 ;
+U -1 ; WX 802 ; N uni04E6 ; G 495 ; B 40 -23 742 923 ;
+U -1 ; WX 629 ; N uni04E7 ; G 496 ; B 35 -23 569 731 ;
+U -1 ; WX 802 ; N uni04E8 ; G 497 ; B 40 -23 742 741 ;
+U -1 ; WX 629 ; N uni04E9 ; G 498 ; B 35 -23 569 549 ;
+U -1 ; WX 802 ; N uni04EA ; G 499 ; B 40 -23 742 923 ;
+U -1 ; WX 629 ; N uni04EB ; G 500 ; B 35 -23 569 731 ;
+U -1 ; WX 745 ; N uni04EC ; G 501 ; B 44 -23 685 923 ;
+U -1 ; WX 582 ; N uni04ED ; G 502 ; B 34 -23 522 731 ;
+U -1 ; WX 756 ; N uni04EE ; G 503 ; B 15 0 696 880 ;
+U -1 ; WX 598 ; N uni04EF ; G 504 ; B 9 -219 538 688 ;
+U -1 ; WX 756 ; N uni04F0 ; G 505 ; B 15 0 696 923 ;
+U -1 ; WX 598 ; N uni04F1 ; G 506 ; B 9 -219 538 731 ;
+U -1 ; WX 756 ; N uni04F2 ; G 507 ; B 15 0 696 948 ;
+U -1 ; WX 598 ; N uni04F3 ; G 508 ; B 9 -219 538 756 ;
+U -1 ; WX 685 ; N uni04F4 ; G 509 ; B 68 0 624 923 ;
+U -1 ; WX 578 ; N uni04F5 ; G 510 ; B 60 0 518 731 ;
+U -1 ; WX 949 ; N uni04F8 ; G 511 ; B 68 0 884 923 ;
+U -1 ; WX 811 ; N uni04F9 ; G 512 ; B 60 0 718 731 ;
+U -1 ; WX 468 ; N uniF6C4 ; G 513 ; B 60 0 408 540 ;
+U -1 ; WX 685 ; N uniF6C5 ; G 514 ; B 110 -23 625 777 ;
+U -1 ; WX 722 ; N uniF6C6 ; G 515 ; B 23 -125 662 540 ;
+U -1 ; WX 603 ; N uniF6C7 ; G 516 ; B 60 0 543 540 ;
+U -1 ; WX 491 ; N uniF6C8 ; G 517 ; B 21 0 431 540 ;
+U -1 ; WX 745 ; N Ccircumflex ; G 518 ; B 44 -23 685 979 ;
+U -1 ; WX 582 ; N ccircumflex ; G 519 ; B 34 -23 522 790 ;
+U -1 ; WX 745 ; N Cdotaccent ; G 520 ; B 44 -23 685 951 ;
+U -1 ; WX 582 ; N cdotaccent ; G 521 ; B 34 -23 522 762 ;
+U -1 ; WX 684 ; N Ebreve ; G 522 ; B 79 0 624 972 ;
+U -1 ; WX 584 ; N ebreve ; G 523 ; B 22 -23 525 783 ;
+U -1 ; WX 778 ; N Gcircumflex ; G 524 ; B 42 -23 711 979 ;
+U -1 ; WX 611 ; N gcircumflex ; G 525 ; B 34 -218 541 790 ;
+U -1 ; WX 778 ; N Gdotaccent ; G 526 ; B 42 -23 711 951 ;
+U -1 ; WX 611 ; N gdotaccent ; G 527 ; B 34 -218 541 762 ;
+U -1 ; WX 722 ; N Hcircumflex ; G 528 ; B 68 0 657 979 ;
+U -1 ; WX 611 ; N hcircumflex ; G 529 ; B 67 0 541 979 ;
+U -1 ; WX 786 ; N Hbar ; G 530 ; B 26 0 726 729 ;
+U -1 ; WX 611 ; N hbar ; G 531 ; B 16 0 541 729 ;
+U -1 ; WX 375 ; N Itilde ; G 532 ; B -39 0 315 957 ;
+U -1 ; WX 374 ; N itilde ; G 533 ; B -40 0 314 768 ;
+U -1 ; WX 330 ; N Ibreve ; G 534 ; B 6 0 270 972 ;
+U -1 ; WX 329 ; N ibreve ; G 535 ; B 5 0 269 783 ;
+U -1 ; WX 808 ; N IJ ; G 536 ; B 63 -23 740 729 ;
+U -1 ; WX 492 ; N ij ; G 537 ; B 67 -218 418 729 ;
+U -1 ; WX 630 ; N Jcircumflex ; G 538 ; B 24 -23 570 979 ;
+U -1 ; WX 359 ; N jcircumflex ; G 539 ; B -19 -218 299 783 ;
+U -1 ; WX 608 ; N kgreenlandic ; G 540 ; B 59 0 548 540 ;
+U -1 ; WX 639 ; N Ldot ; G 541 ; B 80 0 579 729 ;
+U -1 ; WX 556 ; N ldot ; G 542 ; B 67 0 444 729 ;
+U -1 ; WX 611 ; N napostrophe ; G 543 ; B 63 0 546 849 ;
+U -1 ; WX 722 ; N Eng ; G 544 ; B 68 -172 661 729 ;
+U -1 ; WX 611 ; N eng ; G 545 ; B 63 -187 546 549 ;
+U -1 ; WX 802 ; N Obreve ; G 546 ; B 40 -23 742 972 ;
+U -1 ; WX 629 ; N obreve ; G 547 ; B 35 -23 569 783 ;
+U -1 ; WX 693 ; N Scircumflex ; G 548 ; B 32 -23 633 979 ;
+U -1 ; WX 580 ; N scircumflex ; G 549 ; B 29 -23 520 790 ;
+U -1 ; WX 658 ; N _d_550 ; G 550 ; B 14 -220 598 729 ;
+U -1 ; WX 385 ; N _d_551 ; G 551 ; B 14 -243 325 674 ;
+U -1 ; WX 658 ; N Tbar ; G 552 ; B 14 0 598 729 ;
+U -1 ; WX 362 ; N tbar ; G 553 ; B 14 -23 302 674 ;
+U -1 ; WX 722 ; N Utilde ; G 554 ; B 76 -23 654 957 ;
+U -1 ; WX 611 ; N utilde ; G 555 ; B 58 -23 541 768 ;
+U -1 ; WX 722 ; N Ubreve ; G 556 ; B 76 -23 654 972 ;
+U -1 ; WX 611 ; N ubreve ; G 557 ; B 58 -23 541 783 ;
+U -1 ; WX 992 ; N Wcircumflex ; G 558 ; B 13 0 932 979 ;
+U -1 ; WX 826 ; N wcircumflex ; G 559 ; B 5 0 766 790 ;
+U -1 ; WX 710 ; N Ycircumflex ; G 560 ; B 27 0 650 979 ;
+U -1 ; WX 598 ; N ycircumflex ; G 561 ; B 9 -219 538 790 ;
+U -1 ; WX 368 ; N longs ; G 562 ; B 14 0 308 729 ;
+U -1 ; WX 1086 ; N afii61352 ; G 563 ; B 68 0 1026 729 ;
+U -1 ; WX 907 ; N infinity ; G 564 ; B 29 109 847 592 ;
+U -1 ; WX 710 ; N uni1EF6 ; G 565 ; B 27 0 650 1043 ;
+U -1 ; WX 598 ; N uni1EF7 ; G 566 ; B 9 -219 538 864 ;
+U -1 ; WX 710 ; N uni1EF4 ; G 567 ; B 27 -254 650 729 ;
+U -1 ; WX 598 ; N uni1EF5 ; G 568 ; B 9 -254 538 540 ;
+U -1 ; WX 763 ; N uni1EA2 ; G 569 ; B 26 0 703 1043 ;
+U -1 ; WX 763 ; N uni1EA0 ; G 570 ; B 26 -254 703 729 ;
+U -1 ; WX 763 ; N uni1EA6 ; G 571 ; B 26 0 703 1147 ;
+U -1 ; WX 763 ; N uni1EA4 ; G 572 ; B 26 0 703 1147 ;
+U -1 ; WX 763 ; N uni1EAA ; G 573 ; B 26 0 703 1151 ;
+U -1 ; WX 763 ; N uni1EA8 ; G 574 ; B 26 0 703 1155 ;
+U -1 ; WX 763 ; N uni1EAC ; G 575 ; B 26 -254 703 968 ;
+U -1 ; WX 763 ; N uni1EB0 ; G 576 ; B 26 0 703 1154 ;
+U -1 ; WX 763 ; N uni1EAE ; G 577 ; B 26 0 703 1154 ;
+U -1 ; WX 763 ; N uni1EB4 ; G 578 ; B 26 0 703 1162 ;
+U -1 ; WX 763 ; N uni1EB2 ; G 579 ; B 26 0 703 1199 ;
+U -1 ; WX 763 ; N uni1EB6 ; G 580 ; B 26 -254 703 971 ;
+U -1 ; WX 684 ; N uni1EBC ; G 581 ; B 79 0 624 986 ;
+U -1 ; WX 684 ; N uni1EBA ; G 582 ; B 79 0 624 1043 ;
+U -1 ; WX 684 ; N uni1EB8 ; G 583 ; B 79 -254 624 729 ;
+U -1 ; WX 684 ; N uni1EC0 ; G 584 ; B 79 0 624 1147 ;
+U -1 ; WX 684 ; N uni1EBE ; G 585 ; B 79 0 624 1147 ;
+U -1 ; WX 684 ; N uni1EC4 ; G 586 ; B 79 0 624 1151 ;
+U -1 ; WX 684 ; N uni1EC2 ; G 587 ; B 79 0 624 1155 ;
+U -1 ; WX 684 ; N uni1EC6 ; G 588 ; B 79 -254 624 968 ;
+U -1 ; WX 324 ; N uni1EC8 ; G 589 ; B 14 0 264 1043 ;
+U -1 ; WX 584 ; N uni1EA3 ; G 590 ; B 28 -23 524 864 ;
+U -1 ; WX 584 ; N uni1EA1 ; G 591 ; B 28 -254 524 549 ;
+U -1 ; WX 584 ; N uni1EA7 ; G 592 ; B 28 -23 524 968 ;
+U -1 ; WX 584 ; N uni1EA5 ; G 593 ; B 28 -23 524 968 ;
+U -1 ; WX 584 ; N uni1EAB ; G 594 ; B 28 -23 524 972 ;
+U -1 ; WX 620 ; N uni1EA9 ; G 595 ; B 28 -23 560 976 ;
+U -1 ; WX 584 ; N uni1EAD ; G 596 ; B 28 -254 524 789 ;
+U -1 ; WX 584 ; N uni1EB1 ; G 597 ; B 28 -23 524 976 ;
+U -1 ; WX 584 ; N uni1EAF ; G 598 ; B 28 -23 524 976 ;
+U -1 ; WX 584 ; N uni1EB5 ; G 599 ; B 28 -23 524 984 ;
+U -1 ; WX 584 ; N uni1EB3 ; G 600 ; B 28 -23 524 1021 ;
+U -1 ; WX 584 ; N uni1EB7 ; G 601 ; B 28 -254 524 793 ;
+U -1 ; WX 584 ; N uni1EBD ; G 602 ; B 22 -23 525 800 ;
+U -1 ; WX 584 ; N uni1EBB ; G 603 ; B 22 -23 525 864 ;
+U -1 ; WX 584 ; N uni1EB9 ; G 604 ; B 22 -254 525 549 ;
+U -1 ; WX 584 ; N uni1EC1 ; G 605 ; B 22 -23 525 968 ;
+U -1 ; WX 584 ; N uni1EBF ; G 606 ; B 22 -23 525 968 ;
+U -1 ; WX 584 ; N uni1EC5 ; G 607 ; B 22 -23 525 972 ;
+U -1 ; WX 620 ; N uni1EC3 ; G 608 ; B 22 -23 560 976 ;
+U -1 ; WX 584 ; N uni1EC7 ; G 609 ; B 22 -254 525 789 ;
+U -1 ; WX 324 ; N uni1EC9 ; G 610 ; B 14 0 264 864 ;
+U -1 ; WX 278 ; N uni1ECA ; G 611 ; B 63 -254 213 729 ;
+U -1 ; WX 802 ; N uni1ECE ; G 612 ; B 40 -23 742 1043 ;
+U -1 ; WX 802 ; N uni1ECC ; G 613 ; B 40 -254 742 741 ;
+U -1 ; WX 802 ; N uni1ED2 ; G 614 ; B 40 -23 742 1147 ;
+U -1 ; WX 802 ; N uni1ED0 ; G 615 ; B 40 -23 742 1147 ;
+U -1 ; WX 802 ; N uni1ED6 ; G 616 ; B 40 -23 742 1151 ;
+U -1 ; WX 802 ; N uni1ED4 ; G 617 ; B 40 -23 742 1155 ;
+U -1 ; WX 802 ; N uni1ED8 ; G 618 ; B 40 -254 742 968 ;
+U -1 ; WX 802 ; N Ohorn ; G 619 ; B 40 -23 742 854 ;
+U -1 ; WX 802 ; N uni1EDC ; G 620 ; B 40 -23 742 1008 ;
+U -1 ; WX 802 ; N uni1EDA ; G 621 ; B 40 -23 742 988 ;
+U -1 ; WX 802 ; N uni1EE0 ; G 622 ; B 40 -23 742 1012 ;
+U -1 ; WX 802 ; N uni1EDE ; G 623 ; B 40 -23 742 1061 ;
+U -1 ; WX 802 ; N uni1EE2 ; G 624 ; B 40 -254 742 854 ;
+U -1 ; WX 722 ; N _d_625 ; G 625 ; B 76 -23 654 929 ;
+U -1 ; WX 722 ; N uni1EE6 ; G 626 ; B 76 -23 654 1043 ;
+U -1 ; WX 722 ; N uni1EE4 ; G 627 ; B 76 -254 654 729 ;
+U -1 ; WX 864 ; N Uhorn ; G 628 ; B 76 -23 804 854 ;
+U -1 ; WX 864 ; N uni1EEA ; G 629 ; B 76 -23 804 1008 ;
+U -1 ; WX 864 ; N uni1EE8 ; G 630 ; B 76 -23 804 988 ;
+U -1 ; WX 864 ; N uni1EEE ; G 631 ; B 76 -23 804 1012 ;
+U -1 ; WX 864 ; N uni1EEC ; G 632 ; B 76 -23 804 1061 ;
+U -1 ; WX 864 ; N uni1EF0 ; G 633 ; B 76 -254 804 854 ;
+U -1 ; WX 710 ; N Ygrave ; G 634 ; B 27 0 650 978 ;
+U -1 ; WX 710 ; N uni1EF8 ; G 635 ; B 27 0 650 986 ;
+U -1 ; WX 278 ; N uni1ECB ; G 636 ; B 67 -254 207 729 ;
+U -1 ; WX 629 ; N uni1ECF ; G 637 ; B 35 -23 569 864 ;
+U -1 ; WX 629 ; N uni1ECD ; G 638 ; B 35 -254 569 549 ;
+U -1 ; WX 629 ; N uni1ED3 ; G 639 ; B 35 -23 569 968 ;
+U -1 ; WX 629 ; N uni1ED1 ; G 640 ; B 35 -23 569 968 ;
+U -1 ; WX 629 ; N uni1ED7 ; G 641 ; B 35 -23 569 972 ;
+U -1 ; WX 648 ; N uni1ED5 ; G 642 ; B 35 -23 588 976 ;
+U -1 ; WX 629 ; N uni1ED9 ; G 643 ; B 35 -254 569 789 ;
+U -1 ; WX 678 ; N ohorn ; G 644 ; B 35 -23 618 665 ;
+U -1 ; WX 678 ; N uni1EDD ; G 645 ; B 35 -23 618 855 ;
+U -1 ; WX 678 ; N uni1EDB ; G 646 ; B 35 -23 618 811 ;
+U -1 ; WX 678 ; N uni1EE1 ; G 647 ; B 35 -23 618 826 ;
+U -1 ; WX 678 ; N uni1EDF ; G 648 ; B 35 -23 618 884 ;
+U -1 ; WX 678 ; N uni1EE3 ; G 649 ; B 35 -254 618 665 ;
+U -1 ; WX 611 ; N _d_650 ; G 650 ; B 58 -23 541 737 ;
+U -1 ; WX 611 ; N uni1EE7 ; G 651 ; B 58 -23 541 864 ;
+U -1 ; WX 611 ; N uni1EE5 ; G 652 ; B 58 -254 541 540 ;
+U -1 ; WX 751 ; N uhorn ; G 653 ; B 58 -23 691 665 ;
+U -1 ; WX 751 ; N uni1EEB ; G 654 ; B 58 -23 691 855 ;
+U -1 ; WX 751 ; N uni1EE9 ; G 655 ; B 58 -23 691 811 ;
+U -1 ; WX 751 ; N uni1EEF ; G 656 ; B 58 -23 691 826 ;
+U -1 ; WX 751 ; N uni1EED ; G 657 ; B 58 -23 691 884 ;
+U -1 ; WX 751 ; N uni1EF1 ; G 658 ; B 58 -254 691 665 ;
+U -1 ; WX 598 ; N ygrave ; G 659 ; B 9 -219 538 800 ;
+U -1 ; WX 598 ; N uni1EF9 ; G 660 ; B 9 -219 538 800 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Courier-Oblique.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Courier-Oblique.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Courier-Oblique.afm	(revision 2000)
@@ -0,0 +1,342 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+Comment Creation Date: Thu May  1 17:37:52 1997
+Comment UniqueID 43051
+Comment VMusage 16248 75829
+FontName Courier-Oblique
+FullName Courier Oblique
+FamilyName Courier
+Weight Medium
+ItalicAngle -12
+IsFixedPitch true
+CharacterSet ExtendedRoman
+FontBBox -27 -250 849 805 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 003.000
+Notice Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+EncodingScheme AdobeStandardEncoding
+CapHeight 562
+XHeight 426
+Ascender 629
+Descender -157
+StdHW 51
+StdVW 51
+StartCharMetrics 315
+C 32 ; WX 600 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 600 ; N exclam ; B 243 -15 464 572 ;
+C 34 ; WX 600 ; N quotedbl ; B 273 328 532 562 ;
+C 35 ; WX 600 ; N numbersign ; B 133 -32 596 639 ;
+C 36 ; WX 600 ; N dollar ; B 108 -126 596 662 ;
+C 37 ; WX 600 ; N percent ; B 134 -15 599 622 ;
+C 38 ; WX 600 ; N ampersand ; B 87 -15 580 543 ;
+C 39 ; WX 600 ; N quoteright ; B 283 328 495 562 ;
+C 40 ; WX 600 ; N parenleft ; B 313 -108 572 622 ;
+C 41 ; WX 600 ; N parenright ; B 137 -108 396 622 ;
+C 42 ; WX 600 ; N asterisk ; B 212 257 580 607 ;
+C 43 ; WX 600 ; N plus ; B 129 44 580 470 ;
+C 44 ; WX 600 ; N comma ; B 157 -112 370 122 ;
+C 45 ; WX 600 ; N hyphen ; B 152 231 558 285 ;
+C 46 ; WX 600 ; N period ; B 238 -15 382 109 ;
+C 47 ; WX 600 ; N slash ; B 112 -80 604 629 ;
+C 48 ; WX 600 ; N zero ; B 154 -15 575 622 ;
+C 49 ; WX 600 ; N one ; B 98 0 515 622 ;
+C 50 ; WX 600 ; N two ; B 70 0 568 622 ;
+C 51 ; WX 600 ; N three ; B 82 -15 538 622 ;
+C 52 ; WX 600 ; N four ; B 108 0 541 622 ;
+C 53 ; WX 600 ; N five ; B 99 -15 589 607 ;
+C 54 ; WX 600 ; N six ; B 155 -15 629 622 ;
+C 55 ; WX 600 ; N seven ; B 182 0 612 607 ;
+C 56 ; WX 600 ; N eight ; B 132 -15 588 622 ;
+C 57 ; WX 600 ; N nine ; B 93 -15 574 622 ;
+C 58 ; WX 600 ; N colon ; B 238 -15 441 385 ;
+C 59 ; WX 600 ; N semicolon ; B 157 -112 441 385 ;
+C 60 ; WX 600 ; N less ; B 96 42 610 472 ;
+C 61 ; WX 600 ; N equal ; B 109 138 600 376 ;
+C 62 ; WX 600 ; N greater ; B 85 42 599 472 ;
+C 63 ; WX 600 ; N question ; B 222 -15 583 572 ;
+C 64 ; WX 600 ; N at ; B 127 -15 582 622 ;
+C 65 ; WX 600 ; N A ; B 3 0 607 562 ;
+C 66 ; WX 600 ; N B ; B 43 0 616 562 ;
+C 67 ; WX 600 ; N C ; B 93 -18 655 580 ;
+C 68 ; WX 600 ; N D ; B 43 0 645 562 ;
+C 69 ; WX 600 ; N E ; B 53 0 660 562 ;
+C 70 ; WX 600 ; N F ; B 53 0 660 562 ;
+C 71 ; WX 600 ; N G ; B 83 -18 645 580 ;
+C 72 ; WX 600 ; N H ; B 32 0 687 562 ;
+C 73 ; WX 600 ; N I ; B 96 0 623 562 ;
+C 74 ; WX 600 ; N J ; B 52 -18 685 562 ;
+C 75 ; WX 600 ; N K ; B 38 0 671 562 ;
+C 76 ; WX 600 ; N L ; B 47 0 607 562 ;
+C 77 ; WX 600 ; N M ; B 4 0 715 562 ;
+C 78 ; WX 600 ; N N ; B 7 -13 712 562 ;
+C 79 ; WX 600 ; N O ; B 94 -18 625 580 ;
+C 80 ; WX 600 ; N P ; B 79 0 644 562 ;
+C 81 ; WX 600 ; N Q ; B 95 -138 625 580 ;
+C 82 ; WX 600 ; N R ; B 38 0 598 562 ;
+C 83 ; WX 600 ; N S ; B 76 -20 650 580 ;
+C 84 ; WX 600 ; N T ; B 108 0 665 562 ;
+C 85 ; WX 600 ; N U ; B 125 -18 702 562 ;
+C 86 ; WX 600 ; N V ; B 105 -13 723 562 ;
+C 87 ; WX 600 ; N W ; B 106 -13 722 562 ;
+C 88 ; WX 600 ; N X ; B 23 0 675 562 ;
+C 89 ; WX 600 ; N Y ; B 133 0 695 562 ;
+C 90 ; WX 600 ; N Z ; B 86 0 610 562 ;
+C 91 ; WX 600 ; N bracketleft ; B 246 -108 574 622 ;
+C 92 ; WX 600 ; N backslash ; B 249 -80 468 629 ;
+C 93 ; WX 600 ; N bracketright ; B 135 -108 463 622 ;
+C 94 ; WX 600 ; N asciicircum ; B 175 354 587 622 ;
+C 95 ; WX 600 ; N underscore ; B -27 -125 584 -75 ;
+C 96 ; WX 600 ; N quoteleft ; B 343 328 457 562 ;
+C 97 ; WX 600 ; N a ; B 76 -15 569 441 ;
+C 98 ; WX 600 ; N b ; B 29 -15 625 629 ;
+C 99 ; WX 600 ; N c ; B 106 -15 608 441 ;
+C 100 ; WX 600 ; N d ; B 85 -15 640 629 ;
+C 101 ; WX 600 ; N e ; B 106 -15 598 441 ;
+C 102 ; WX 600 ; N f ; B 114 0 662 629 ; L i fi ; L l fl ;
+C 103 ; WX 600 ; N g ; B 61 -157 657 441 ;
+C 104 ; WX 600 ; N h ; B 33 0 592 629 ;
+C 105 ; WX 600 ; N i ; B 95 0 515 657 ;
+C 106 ; WX 600 ; N j ; B 52 -157 550 657 ;
+C 107 ; WX 600 ; N k ; B 58 0 633 629 ;
+C 108 ; WX 600 ; N l ; B 95 0 515 629 ;
+C 109 ; WX 600 ; N m ; B -5 0 615 441 ;
+C 110 ; WX 600 ; N n ; B 26 0 585 441 ;
+C 111 ; WX 600 ; N o ; B 102 -15 588 441 ;
+C 112 ; WX 600 ; N p ; B -24 -157 605 441 ;
+C 113 ; WX 600 ; N q ; B 85 -157 682 441 ;
+C 114 ; WX 600 ; N r ; B 60 0 636 441 ;
+C 115 ; WX 600 ; N s ; B 78 -15 584 441 ;
+C 116 ; WX 600 ; N t ; B 167 -15 561 561 ;
+C 117 ; WX 600 ; N u ; B 101 -15 572 426 ;
+C 118 ; WX 600 ; N v ; B 90 -10 681 426 ;
+C 119 ; WX 600 ; N w ; B 76 -10 695 426 ;
+C 120 ; WX 600 ; N x ; B 20 0 655 426 ;
+C 121 ; WX 600 ; N y ; B -4 -157 683 426 ;
+C 122 ; WX 600 ; N z ; B 99 0 593 426 ;
+C 123 ; WX 600 ; N braceleft ; B 233 -108 569 622 ;
+C 124 ; WX 600 ; N bar ; B 222 -250 485 750 ;
+C 125 ; WX 600 ; N braceright ; B 140 -108 477 622 ;
+C 126 ; WX 600 ; N asciitilde ; B 116 197 600 320 ;
+C 161 ; WX 600 ; N exclamdown ; B 225 -157 445 430 ;
+C 162 ; WX 600 ; N cent ; B 151 -49 588 614 ;
+C 163 ; WX 600 ; N sterling ; B 124 -21 621 611 ;
+C 164 ; WX 600 ; N fraction ; B 84 -57 646 665 ;
+C 165 ; WX 600 ; N yen ; B 120 0 693 562 ;
+C 166 ; WX 600 ; N florin ; B -26 -143 671 622 ;
+C 167 ; WX 600 ; N section ; B 104 -78 590 580 ;
+C 168 ; WX 600 ; N currency ; B 94 58 628 506 ;
+C 169 ; WX 600 ; N quotesingle ; B 345 328 460 562 ;
+C 170 ; WX 600 ; N quotedblleft ; B 262 328 541 562 ;
+C 171 ; WX 600 ; N guillemotleft ; B 92 70 652 446 ;
+C 172 ; WX 600 ; N guilsinglleft ; B 204 70 540 446 ;
+C 173 ; WX 600 ; N guilsinglright ; B 170 70 506 446 ;
+C 174 ; WX 600 ; N fi ; B 3 0 619 629 ;
+C 175 ; WX 600 ; N fl ; B 3 0 619 629 ;
+C 177 ; WX 600 ; N endash ; B 124 231 586 285 ;
+C 178 ; WX 600 ; N dagger ; B 217 -78 546 580 ;
+C 179 ; WX 600 ; N daggerdbl ; B 163 -78 546 580 ;
+C 180 ; WX 600 ; N periodcentered ; B 275 189 434 327 ;
+C 182 ; WX 600 ; N paragraph ; B 100 -78 630 562 ;
+C 183 ; WX 600 ; N bullet ; B 224 130 485 383 ;
+C 184 ; WX 600 ; N quotesinglbase ; B 185 -134 397 100 ;
+C 185 ; WX 600 ; N quotedblbase ; B 115 -134 478 100 ;
+C 186 ; WX 600 ; N quotedblright ; B 213 328 576 562 ;
+C 187 ; WX 600 ; N guillemotright ; B 58 70 618 446 ;
+C 188 ; WX 600 ; N ellipsis ; B 46 -15 575 111 ;
+C 189 ; WX 600 ; N perthousand ; B 59 -15 627 622 ;
+C 191 ; WX 600 ; N questiondown ; B 105 -157 466 430 ;
+C 193 ; WX 600 ; N grave ; B 294 497 484 672 ;
+C 194 ; WX 600 ; N acute ; B 348 497 612 672 ;
+C 195 ; WX 600 ; N circumflex ; B 229 477 581 654 ;
+C 196 ; WX 600 ; N tilde ; B 212 489 629 606 ;
+C 197 ; WX 600 ; N macron ; B 232 525 600 565 ;
+C 198 ; WX 600 ; N breve ; B 279 501 576 609 ;
+C 199 ; WX 600 ; N dotaccent ; B 373 537 478 640 ;
+C 200 ; WX 600 ; N dieresis ; B 272 537 579 640 ;
+C 202 ; WX 600 ; N ring ; B 332 463 500 627 ;
+C 203 ; WX 600 ; N cedilla ; B 197 -151 344 10 ;
+C 205 ; WX 600 ; N hungarumlaut ; B 239 497 683 672 ;
+C 206 ; WX 600 ; N ogonek ; B 189 -172 377 4 ;
+C 207 ; WX 600 ; N caron ; B 262 492 614 669 ;
+C 208 ; WX 600 ; N emdash ; B 49 231 661 285 ;
+C 225 ; WX 600 ; N AE ; B 3 0 655 562 ;
+C 227 ; WX 600 ; N ordfeminine ; B 209 249 512 580 ;
+C 232 ; WX 600 ; N Lslash ; B 47 0 607 562 ;
+C 233 ; WX 600 ; N Oslash ; B 94 -80 625 629 ;
+C 234 ; WX 600 ; N OE ; B 59 0 672 562 ;
+C 235 ; WX 600 ; N ordmasculine ; B 210 249 535 580 ;
+C 241 ; WX 600 ; N ae ; B 41 -15 626 441 ;
+C 245 ; WX 600 ; N dotlessi ; B 95 0 515 426 ;
+C 248 ; WX 600 ; N lslash ; B 95 0 587 629 ;
+C 249 ; WX 600 ; N oslash ; B 102 -80 588 506 ;
+C 250 ; WX 600 ; N oe ; B 54 -15 615 441 ;
+C 251 ; WX 600 ; N germandbls ; B 48 -15 617 629 ;
+C -1 ; WX 600 ; N Idieresis ; B 96 0 623 753 ;
+C -1 ; WX 600 ; N eacute ; B 106 -15 612 672 ;
+C -1 ; WX 600 ; N abreve ; B 76 -15 576 609 ;
+C -1 ; WX 600 ; N uhungarumlaut ; B 101 -15 723 672 ;
+C -1 ; WX 600 ; N ecaron ; B 106 -15 614 669 ;
+C -1 ; WX 600 ; N Ydieresis ; B 133 0 695 753 ;
+C -1 ; WX 600 ; N divide ; B 136 48 573 467 ;
+C -1 ; WX 600 ; N Yacute ; B 133 0 695 805 ;
+C -1 ; WX 600 ; N Acircumflex ; B 3 0 607 787 ;
+C -1 ; WX 600 ; N aacute ; B 76 -15 612 672 ;
+C -1 ; WX 600 ; N Ucircumflex ; B 125 -18 702 787 ;
+C -1 ; WX 600 ; N yacute ; B -4 -157 683 672 ;
+C -1 ; WX 600 ; N scommaaccent ; B 78 -250 584 441 ;
+C -1 ; WX 600 ; N ecircumflex ; B 106 -15 598 654 ;
+C -1 ; WX 600 ; N Uring ; B 125 -18 702 760 ;
+C -1 ; WX 600 ; N Udieresis ; B 125 -18 702 753 ;
+C -1 ; WX 600 ; N aogonek ; B 76 -172 569 441 ;
+C -1 ; WX 600 ; N Uacute ; B 125 -18 702 805 ;
+C -1 ; WX 600 ; N uogonek ; B 101 -172 572 426 ;
+C -1 ; WX 600 ; N Edieresis ; B 53 0 660 753 ;
+C -1 ; WX 600 ; N Dcroat ; B 43 0 645 562 ;
+C -1 ; WX 600 ; N commaaccent ; B 145 -250 323 -58 ;
+C -1 ; WX 600 ; N copyright ; B 53 -18 667 580 ;
+C -1 ; WX 600 ; N Emacron ; B 53 0 660 698 ;
+C -1 ; WX 600 ; N ccaron ; B 106 -15 614 669 ;
+C -1 ; WX 600 ; N aring ; B 76 -15 569 627 ;
+C -1 ; WX 600 ; N Ncommaaccent ; B 7 -250 712 562 ;
+C -1 ; WX 600 ; N lacute ; B 95 0 640 805 ;
+C -1 ; WX 600 ; N agrave ; B 76 -15 569 672 ;
+C -1 ; WX 600 ; N Tcommaaccent ; B 108 -250 665 562 ;
+C -1 ; WX 600 ; N Cacute ; B 93 -18 655 805 ;
+C -1 ; WX 600 ; N atilde ; B 76 -15 629 606 ;
+C -1 ; WX 600 ; N Edotaccent ; B 53 0 660 753 ;
+C -1 ; WX 600 ; N scaron ; B 78 -15 614 669 ;
+C -1 ; WX 600 ; N scedilla ; B 78 -151 584 441 ;
+C -1 ; WX 600 ; N iacute ; B 95 0 612 672 ;
+C -1 ; WX 600 ; N lozenge ; B 94 0 519 706 ;
+C -1 ; WX 600 ; N Rcaron ; B 38 0 642 802 ;
+C -1 ; WX 600 ; N Gcommaaccent ; B 83 -250 645 580 ;
+C -1 ; WX 600 ; N ucircumflex ; B 101 -15 572 654 ;
+C -1 ; WX 600 ; N acircumflex ; B 76 -15 581 654 ;
+C -1 ; WX 600 ; N Amacron ; B 3 0 607 698 ;
+C -1 ; WX 600 ; N rcaron ; B 60 0 636 669 ;
+C -1 ; WX 600 ; N ccedilla ; B 106 -151 614 441 ;
+C -1 ; WX 600 ; N Zdotaccent ; B 86 0 610 753 ;
+C -1 ; WX 600 ; N Thorn ; B 79 0 606 562 ;
+C -1 ; WX 600 ; N Omacron ; B 94 -18 628 698 ;
+C -1 ; WX 600 ; N Racute ; B 38 0 670 805 ;
+C -1 ; WX 600 ; N Sacute ; B 76 -20 650 805 ;
+C -1 ; WX 600 ; N dcaron ; B 85 -15 849 629 ;
+C -1 ; WX 600 ; N Umacron ; B 125 -18 702 698 ;
+C -1 ; WX 600 ; N uring ; B 101 -15 572 627 ;
+C -1 ; WX 600 ; N threesuperior ; B 213 240 501 622 ;
+C -1 ; WX 600 ; N Ograve ; B 94 -18 625 805 ;
+C -1 ; WX 600 ; N Agrave ; B 3 0 607 805 ;
+C -1 ; WX 600 ; N Abreve ; B 3 0 607 732 ;
+C -1 ; WX 600 ; N multiply ; B 103 43 607 470 ;
+C -1 ; WX 600 ; N uacute ; B 101 -15 602 672 ;
+C -1 ; WX 600 ; N Tcaron ; B 108 0 665 802 ;
+C -1 ; WX 600 ; N partialdiff ; B 45 -38 546 710 ;
+C -1 ; WX 600 ; N ydieresis ; B -4 -157 683 620 ;
+C -1 ; WX 600 ; N Nacute ; B 7 -13 712 805 ;
+C -1 ; WX 600 ; N icircumflex ; B 95 0 551 654 ;
+C -1 ; WX 600 ; N Ecircumflex ; B 53 0 660 787 ;
+C -1 ; WX 600 ; N adieresis ; B 76 -15 575 620 ;
+C -1 ; WX 600 ; N edieresis ; B 106 -15 598 620 ;
+C -1 ; WX 600 ; N cacute ; B 106 -15 612 672 ;
+C -1 ; WX 600 ; N nacute ; B 26 0 602 672 ;
+C -1 ; WX 600 ; N umacron ; B 101 -15 600 565 ;
+C -1 ; WX 600 ; N Ncaron ; B 7 -13 712 802 ;
+C -1 ; WX 600 ; N Iacute ; B 96 0 640 805 ;
+C -1 ; WX 600 ; N plusminus ; B 96 44 594 558 ;
+C -1 ; WX 600 ; N brokenbar ; B 238 -175 469 675 ;
+C -1 ; WX 600 ; N registered ; B 53 -18 667 580 ;
+C -1 ; WX 600 ; N Gbreve ; B 83 -18 645 732 ;
+C -1 ; WX 600 ; N Idotaccent ; B 96 0 623 753 ;
+C -1 ; WX 600 ; N summation ; B 15 -10 670 706 ;
+C -1 ; WX 600 ; N Egrave ; B 53 0 660 805 ;
+C -1 ; WX 600 ; N racute ; B 60 0 636 672 ;
+C -1 ; WX 600 ; N omacron ; B 102 -15 600 565 ;
+C -1 ; WX 600 ; N Zacute ; B 86 0 670 805 ;
+C -1 ; WX 600 ; N Zcaron ; B 86 0 642 802 ;
+C -1 ; WX 600 ; N greaterequal ; B 98 0 594 710 ;
+C -1 ; WX 600 ; N Eth ; B 43 0 645 562 ;
+C -1 ; WX 600 ; N Ccedilla ; B 93 -151 658 580 ;
+C -1 ; WX 600 ; N lcommaaccent ; B 95 -250 515 629 ;
+C -1 ; WX 600 ; N tcaron ; B 167 -15 587 717 ;
+C -1 ; WX 600 ; N eogonek ; B 106 -172 598 441 ;
+C -1 ; WX 600 ; N Uogonek ; B 124 -172 702 562 ;
+C -1 ; WX 600 ; N Aacute ; B 3 0 660 805 ;
+C -1 ; WX 600 ; N Adieresis ; B 3 0 607 753 ;
+C -1 ; WX 600 ; N egrave ; B 106 -15 598 672 ;
+C -1 ; WX 600 ; N zacute ; B 99 0 612 672 ;
+C -1 ; WX 600 ; N iogonek ; B 95 -172 515 657 ;
+C -1 ; WX 600 ; N Oacute ; B 94 -18 640 805 ;
+C -1 ; WX 600 ; N oacute ; B 102 -15 612 672 ;
+C -1 ; WX 600 ; N amacron ; B 76 -15 600 565 ;
+C -1 ; WX 600 ; N sacute ; B 78 -15 612 672 ;
+C -1 ; WX 600 ; N idieresis ; B 95 0 545 620 ;
+C -1 ; WX 600 ; N Ocircumflex ; B 94 -18 625 787 ;
+C -1 ; WX 600 ; N Ugrave ; B 125 -18 702 805 ;
+C -1 ; WX 600 ; N Delta ; B 6 0 598 688 ;
+C -1 ; WX 600 ; N thorn ; B -24 -157 605 629 ;
+C -1 ; WX 600 ; N twosuperior ; B 230 249 535 622 ;
+C -1 ; WX 600 ; N Odieresis ; B 94 -18 625 753 ;
+C -1 ; WX 600 ; N mu ; B 72 -157 572 426 ;
+C -1 ; WX 600 ; N igrave ; B 95 0 515 672 ;
+C -1 ; WX 600 ; N ohungarumlaut ; B 102 -15 723 672 ;
+C -1 ; WX 600 ; N Eogonek ; B 53 -172 660 562 ;
+C -1 ; WX 600 ; N dcroat ; B 85 -15 704 629 ;
+C -1 ; WX 600 ; N threequarters ; B 73 -56 659 666 ;
+C -1 ; WX 600 ; N Scedilla ; B 76 -151 650 580 ;
+C -1 ; WX 600 ; N lcaron ; B 95 0 667 629 ;
+C -1 ; WX 600 ; N Kcommaaccent ; B 38 -250 671 562 ;
+C -1 ; WX 600 ; N Lacute ; B 47 0 607 805 ;
+C -1 ; WX 600 ; N trademark ; B 75 263 742 562 ;
+C -1 ; WX 600 ; N edotaccent ; B 106 -15 598 620 ;
+C -1 ; WX 600 ; N Igrave ; B 96 0 623 805 ;
+C -1 ; WX 600 ; N Imacron ; B 96 0 628 698 ;
+C -1 ; WX 600 ; N Lcaron ; B 47 0 632 562 ;
+C -1 ; WX 600 ; N onehalf ; B 65 -57 669 665 ;
+C -1 ; WX 600 ; N lessequal ; B 98 0 645 710 ;
+C -1 ; WX 600 ; N ocircumflex ; B 102 -15 588 654 ;
+C -1 ; WX 600 ; N ntilde ; B 26 0 629 606 ;
+C -1 ; WX 600 ; N Uhungarumlaut ; B 125 -18 761 805 ;
+C -1 ; WX 600 ; N Eacute ; B 53 0 670 805 ;
+C -1 ; WX 600 ; N emacron ; B 106 -15 600 565 ;
+C -1 ; WX 600 ; N gbreve ; B 61 -157 657 609 ;
+C -1 ; WX 600 ; N onequarter ; B 65 -57 674 665 ;
+C -1 ; WX 600 ; N Scaron ; B 76 -20 672 802 ;
+C -1 ; WX 600 ; N Scommaaccent ; B 76 -250 650 580 ;
+C -1 ; WX 600 ; N Ohungarumlaut ; B 94 -18 751 805 ;
+C -1 ; WX 600 ; N degree ; B 214 269 576 622 ;
+C -1 ; WX 600 ; N ograve ; B 102 -15 588 672 ;
+C -1 ; WX 600 ; N Ccaron ; B 93 -18 672 802 ;
+C -1 ; WX 600 ; N ugrave ; B 101 -15 572 672 ;
+C -1 ; WX 600 ; N radical ; B 85 -15 765 792 ;
+C -1 ; WX 600 ; N Dcaron ; B 43 0 645 802 ;
+C -1 ; WX 600 ; N rcommaaccent ; B 60 -250 636 441 ;
+C -1 ; WX 600 ; N Ntilde ; B 7 -13 712 729 ;
+C -1 ; WX 600 ; N otilde ; B 102 -15 629 606 ;
+C -1 ; WX 600 ; N Rcommaaccent ; B 38 -250 598 562 ;
+C -1 ; WX 600 ; N Lcommaaccent ; B 47 -250 607 562 ;
+C -1 ; WX 600 ; N Atilde ; B 3 0 655 729 ;
+C -1 ; WX 600 ; N Aogonek ; B 3 -172 607 562 ;
+C -1 ; WX 600 ; N Aring ; B 3 0 607 750 ;
+C -1 ; WX 600 ; N Otilde ; B 94 -18 655 729 ;
+C -1 ; WX 600 ; N zdotaccent ; B 99 0 593 620 ;
+C -1 ; WX 600 ; N Ecaron ; B 53 0 660 802 ;
+C -1 ; WX 600 ; N Iogonek ; B 96 -172 623 562 ;
+C -1 ; WX 600 ; N kcommaaccent ; B 58 -250 633 629 ;
+C -1 ; WX 600 ; N minus ; B 129 232 580 283 ;
+C -1 ; WX 600 ; N Icircumflex ; B 96 0 623 787 ;
+C -1 ; WX 600 ; N ncaron ; B 26 0 614 669 ;
+C -1 ; WX 600 ; N tcommaaccent ; B 165 -250 561 561 ;
+C -1 ; WX 600 ; N logicalnot ; B 155 108 591 369 ;
+C -1 ; WX 600 ; N odieresis ; B 102 -15 588 620 ;
+C -1 ; WX 600 ; N udieresis ; B 101 -15 575 620 ;
+C -1 ; WX 600 ; N notequal ; B 43 -16 621 529 ;
+C -1 ; WX 600 ; N gcommaaccent ; B 61 -157 657 708 ;
+C -1 ; WX 600 ; N eth ; B 102 -15 639 629 ;
+C -1 ; WX 600 ; N zcaron ; B 99 0 624 669 ;
+C -1 ; WX 600 ; N ncommaaccent ; B 26 -250 585 441 ;
+C -1 ; WX 600 ; N onesuperior ; B 231 249 491 622 ;
+C -1 ; WX 600 ; N imacron ; B 95 0 543 565 ;
+C -1 ; WX 600 ; N Euro ; B 0 0 0 0 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Times-Italic.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Times-Italic.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Times-Italic.ufm	(revision 2000)
@@ -0,0 +1,719 @@
+StartFontMetrics 4.1
+FontName Nimbus_Roman_No9_L_Regular_Italic
+FullName Nimbus Roman No9 L Regular Italic
+Notice 
+EncodingScheme FontSpecific
+FamilyName Nimbus Roman No9 L
+Weight Regular Italic
+Version 1.0
+Characters 661
+ItalicAngle -15.5
+Ascender 1128
+Descender -270
+UnderlineThickness 50
+UnderlinePosition -100
+IsFixedPitch false
+FontBBox -169 -270 1112 1128
+StartCharMetrics 700
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .null ; G 1 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N exclam ; G 2 ; B 39 -11 302 667 ;
+U -1 ; WX 453 ; N quotedbl ; G 3 ; B 144 421 432 666 ;
+U -1 ; WX 561 ; N numbersign ; G 4 ; B 2 0 540 676 ;
+U -1 ; WX 518 ; N dollar ; G 5 ; B 31 -89 497 731 ;
+U -1 ; WX 833 ; N percent ; G 6 ; B 79 -13 790 676 ;
+U -1 ; WX 778 ; N ampersand ; G 7 ; B 76 -18 723 666 ;
+U -1 ; WX 262 ; N quotesingle ; G 104 ; B 132 421 241 666 ;
+U -1 ; WX 336 ; N parenleft ; G 9 ; B 42 -181 315 669 ;
+U -1 ; WX 333 ; N parenright ; G 10 ; B 16 -180 289 669 ;
+U -1 ; WX 513 ; N asterisk ; G 11 ; B 128 255 492 666 ;
+U -1 ; WX 675 ; N plus ; G 12 ; B 86 0 590 506 ;
+U -1 ; WX 250 ; N comma ; G 13 ; B -4 -129 135 101 ;
+U -1 ; WX 333 ; N hyphen ; G 14 ; B 49 192 282 255 ;
+U -1 ; WX 250 ; N period ; G 15 ; B 27 -11 138 100 ;
+U -1 ; WX 407 ; N slash ; G 16 ; B -65 -18 386 666 ;
+U -1 ; WX 518 ; N zero ; G 17 ; B 32 -7 497 676 ;
+U -1 ; WX 500 ; N one ; G 18 ; B 49 0 409 676 ;
+U -1 ; WX 500 ; N two ; G 19 ; B 12 0 452 676 ;
+U -1 ; WX 500 ; N three ; G 20 ; B 15 -7 466 676 ;
+U -1 ; WX 500 ; N four ; G 21 ; B 1 0 479 676 ;
+U -1 ; WX 512 ; N five ; G 22 ; B 15 -7 491 666 ;
+U -1 ; WX 542 ; N six ; G 23 ; B 30 -7 521 686 ;
+U -1 ; WX 558 ; N seven ; G 24 ; B 75 -8 537 666 ;
+U -1 ; WX 514 ; N eight ; G 25 ; B 30 -7 493 676 ;
+U -1 ; WX 513 ; N nine ; G 26 ; B 23 -17 492 676 ;
+U -1 ; WX 333 ; N colon ; G 27 ; B 50 -11 261 441 ;
+U -1 ; WX 333 ; N semicolon ; G 28 ; B 27 -129 261 441 ;
+U -1 ; WX 675 ; N less ; G 29 ; B 84 -10 592 516 ;
+U -1 ; WX 675 ; N equal ; G 30 ; B 86 120 590 386 ;
+U -1 ; WX 675 ; N greater ; G 31 ; B 84 -10 592 516 ;
+U -1 ; WX 500 ; N question ; G 32 ; B 132 -12 472 664 ;
+U -1 ; WX 920 ; N at ; G 33 ; B 118 -18 806 666 ;
+U -1 ; WX 611 ; N A ; G 34 ; B -51 0 564 668 ;
+U -1 ; WX 611 ; N B ; G 35 ; B -8 0 588 653 ;
+U -1 ; WX 710 ; N C ; G 36 ; B 66 -18 689 666 ;
+U -1 ; WX 722 ; N D ; G 37 ; B -8 0 700 653 ;
+U -1 ; WX 655 ; N E ; G 38 ; B -1 0 634 653 ;
+U -1 ; WX 666 ; N F ; G 39 ; B 8 0 645 653 ;
+U -1 ; WX 743 ; N G ; G 40 ; B 52 -18 722 666 ;
+U -1 ; WX 788 ; N H ; G 41 ; B -8 0 767 653 ;
+U -1 ; WX 405 ; N I ; G 42 ; B -8 0 384 653 ;
+U -1 ; WX 512 ; N J ; G 43 ; B -6 -18 491 653 ;
+U -1 ; WX 743 ; N K ; G 44 ; B 7 0 722 653 ;
+U -1 ; WX 580 ; N L ; G 45 ; B -8 0 559 653 ;
+U -1 ; WX 894 ; N M ; G 46 ; B -18 0 873 653 ;
+U -1 ; WX 748 ; N N ; G 47 ; B -20 -15 727 653 ;
+U -1 ; WX 722 ; N O ; G 48 ; B 60 -18 706 666 ;
+U -1 ; WX 626 ; N P ; G 49 ; B 0 0 605 653 ;
+U -1 ; WX 722 ; N Q ; G 50 ; B 59 -183 699 666 ;
+U -1 ; WX 611 ; N R ; G 51 ; B -13 0 588 653 ;
+U -1 ; WX 529 ; N S ; G 52 ; B 17 -18 508 667 ;
+U -1 ; WX 654 ; N T ; G 53 ; B 59 0 633 653 ;
+U -1 ; WX 786 ; N U ; G 54 ; B 102 -18 765 653 ;
+U -1 ; WX 709 ; N V ; G 55 ; B 76 -18 688 653 ;
+U -1 ; WX 927 ; N W ; G 56 ; B 71 -18 906 653 ;
+U -1 ; WX 676 ; N X ; G 57 ; B -29 0 655 653 ;
+U -1 ; WX 654 ; N Y ; G 58 ; B 78 0 633 653 ;
+U -1 ; WX 627 ; N Z ; G 59 ; B -6 0 606 653 ;
+U -1 ; WX 412 ; N bracketleft ; G 60 ; B 21 -153 391 663 ;
+U -1 ; WX 340 ; N backslash ; G 61 ; B -41 -18 319 666 ;
+U -1 ; WX 403 ; N bracketright ; G 62 ; B 12 -153 382 663 ;
+U -1 ; WX 443 ; N asciicircum ; G 63 ; B 0 301 422 666 ;
+U -1 ; WX 521 ; N underscore ; G 64 ; B 0 -125 500 -75 ;
+U -1 ; WX 333 ; N grave ; G 124 ; B 121 492 311 664 ;
+U -1 ; WX 500 ; N a ; G 66 ; B 17 -11 476 441 ;
+U -1 ; WX 500 ; N b ; G 67 ; B 23 -11 473 683 ;
+U -1 ; WX 446 ; N c ; G 68 ; B 30 -11 425 441 ;
+U -1 ; WX 548 ; N d ; G 69 ; B 15 -13 527 683 ;
+U -1 ; WX 444 ; N e ; G 70 ; B 31 -11 412 441 ;
+U -1 ; WX 445 ; N f ; G 71 ; B -147 -207 424 678 ;
+U -1 ; WX 500 ; N g ; G 72 ; B 8 -206 472 441 ;
+U -1 ; WX 500 ; N h ; G 73 ; B 19 -9 478 683 ;
+U -1 ; WX 285 ; N i ; G 74 ; B 49 -11 264 654 ;
+U -1 ; WX 297 ; N j ; G 75 ; B -124 -207 276 654 ;
+U -1 ; WX 482 ; N k ; G 76 ; B 14 -11 461 683 ;
+U -1 ; WX 300 ; N l ; G 77 ; B 40 -11 279 683 ;
+U -1 ; WX 725 ; N m ; G 78 ; B 12 -9 704 441 ;
+U -1 ; WX 500 ; N n ; G 79 ; B 14 -9 474 441 ;
+U -1 ; WX 500 ; N o ; G 80 ; B 27 -11 468 441 ;
+U -1 ; WX 500 ; N p ; G 81 ; B -75 -205 469 442 ;
+U -1 ; WX 504 ; N q ; G 82 ; B 25 -209 483 441 ;
+U -1 ; WX 433 ; N r ; G 83 ; B 45 0 412 441 ;
+U -1 ; WX 389 ; N s ; G 84 ; B 16 -13 366 442 ;
+U -1 ; WX 317 ; N t ; G 85 ; B 37 -11 296 546 ;
+U -1 ; WX 500 ; N u ; G 86 ; B 42 -11 475 441 ;
+U -1 ; WX 447 ; N v ; G 87 ; B 21 -18 426 441 ;
+U -1 ; WX 669 ; N w ; G 88 ; B 16 -18 648 441 ;
+U -1 ; WX 468 ; N x ; G 89 ; B -27 -11 447 441 ;
+U -1 ; WX 447 ; N y ; G 90 ; B -24 -206 426 441 ;
+U -1 ; WX 401 ; N z ; G 91 ; B -2 -81 380 428 ;
+U -1 ; WX 428 ; N braceleft ; G 92 ; B 51 -177 407 687 ;
+U -1 ; WX 275 ; N bar ; G 93 ; B 105 -18 171 666 ;
+U -1 ; WX 400 ; N braceright ; G 94 ; B -7 -177 349 687 ;
+U -1 ; WX 541 ; N asciitilde ; G 95 ; B 40 186 502 320 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 689 ; N Euro ; G 289 ; B 57 0 668 693 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N quotesinglbase ; G 117 ; B 44 -129 183 101 ;
+U -1 ; WX 528 ; N florin ; G 101 ; B 25 -182 507 682 ;
+U -1 ; WX 556 ; N quotedblbase ; G 118 ; B 57 -129 405 101 ;
+U -1 ; WX 889 ; N ellipsis ; G 121 ; B 57 -11 762 100 ;
+U -1 ; WX 509 ; N dagger ; G 112 ; B 101 -159 488 666 ;
+U -1 ; WX 512 ; N daggerdbl ; G 113 ; B 22 -143 491 666 ;
+U -1 ; WX 406 ; N circumflex ; G 126 ; B 91 492 385 661 ;
+U -1 ; WX 1031 ; N perthousand ; G 122 ; B 25 -19 1010 706 ;
+U -1 ; WX 541 ; N Scaron ; G 189 ; B 17 -18 520 873 ;
+U -1 ; WX 333 ; N guilsinglleft ; G 107 ; B 51 37 281 403 ;
+U -1 ; WX 985 ; N OE ; G 142 ; B 49 -8 964 666 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 627 ; N Zcaron ; G 200 ; B -6 0 606 873 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N quoteleft ; G 65 ; B 171 436 310 666 ;
+U -1 ; WX 333 ; N quoteright ; G 8 ; B 151 436 290 666 ;
+U -1 ; WX 556 ; N quotedblleft ; G 105 ; B 166 436 514 666 ;
+U -1 ; WX 556 ; N quotedblright ; G 119 ; B 151 436 499 666 ;
+U -1 ; WX 350 ; N bullet ; G 116 ; B 40 191 310 461 ;
+U -1 ; WX 526 ; N endash ; G 111 ; B -6 197 505 243 ;
+U -1 ; WX 915 ; N emdash ; G 137 ; B -6 197 894 243 ;
+U -1 ; WX 448 ; N tilde ; G 127 ; B 100 517 427 624 ;
+U -1 ; WX 980 ; N trademark ; G 297 ; B 30 247 957 653 ;
+U -1 ; WX 475 ; N scaron ; G 253 ; B 16 -13 454 661 ;
+U -1 ; WX 333 ; N guilsinglright ; G 108 ; B 52 37 282 403 ;
+U -1 ; WX 667 ; N oe ; G 148 ; B 20 -12 646 441 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 455 ; N zcaron ; G 264 ; B -2 -81 434 661 ;
+U -1 ; WX 654 ; N Ydieresis ; G 204 ; B 78 0 633 818 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 389 ; N exclamdown ; G 96 ; B 59 -205 321 474 ;
+U -1 ; WX 500 ; N cent ; G 97 ; B 77 -143 472 560 ;
+U -1 ; WX 538 ; N sterling ; G 98 ; B 10 -6 517 670 ;
+U -1 ; WX 543 ; N currency ; G 103 ; B -22 53 522 597 ;
+U -1 ; WX 624 ; N yen ; G 100 ; B 27 0 603 653 ;
+U -1 ; WX 275 ; N brokenbar ; G 314 ; B 105 -18 171 666 ;
+U -1 ; WX 500 ; N section ; G 102 ; B 53 -162 461 666 ;
+U -1 ; WX 426 ; N dieresis ; G 131 ; B 107 508 405 606 ;
+U -1 ; WX 760 ; N copyright ; G 303 ; B 41 -18 719 666 ;
+U -1 ; WX 373 ; N ordfeminine ; G 139 ; B 42 406 352 676 ;
+U -1 ; WX 500 ; N guillemotleft ; G 106 ; B 53 37 445 403 ;
+U -1 ; WX 675 ; N logicalnot ; G 311 ; B 86 108 590 386 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 760 ; N registered ; G 304 ; B 41 -18 719 666 ;
+U -1 ; WX 432 ; N macron ; G 128 ; B 99 532 411 583 ;
+U -1 ; WX 408 ; N degree ; G 293 ; B 101 390 387 676 ;
+U -1 ; WX 675 ; N plusminus ; G 298 ; B 86 0 590 568 ;
+U -1 ; WX 345 ; N twosuperior ; G 291 ; B 33 271 324 676 ;
+U -1 ; WX 360 ; N threesuperior ; G 292 ; B 43 268 339 676 ;
+U -1 ; WX 424 ; N acute ; G 125 ; B 180 494 403 664 ;
+U -1 ; WX 518 ; N mu ; G 315 ; B -30 -209 497 428 ;
+U -1 ; WX 637 ; N paragraph ; G 115 ; B 55 -123 616 653 ;
+U -1 ; WX 250 ; N periodcentered ; G 114 ; B 70 199 181 310 ;
+U -1 ; WX 333 ; N cedilla ; G 133 ; B -30 -217 182 0 ;
+U -1 ; WX 305 ; N onesuperior ; G 290 ; B 43 271 284 676 ;
+U -1 ; WX 383 ; N ordmasculine ; G 143 ; B 67 406 362 676 ;
+U -1 ; WX 500 ; N guillemotright ; G 120 ; B 55 37 447 403 ;
+U -1 ; WX 757 ; N onequarter ; G 300 ; B 33 -10 736 676 ;
+U -1 ; WX 770 ; N onehalf ; G 299 ; B 34 -10 749 676 ;
+U -1 ; WX 757 ; N threequarters ; G 301 ; B 23 -10 736 676 ;
+U -1 ; WX 500 ; N questiondown ; G 123 ; B 28 -205 367 473 ;
+U -1 ; WX 611 ; N Agrave ; G 152 ; B -51 0 564 876 ;
+U -1 ; WX 611 ; N Aacute ; G 151 ; B -51 0 564 876 ;
+U -1 ; WX 611 ; N Acircumflex ; G 153 ; B -51 0 564 873 ;
+U -1 ; WX 611 ; N Atilde ; G 155 ; B -51 0 566 836 ;
+U -1 ; WX 611 ; N Adieresis ; G 150 ; B -51 0 564 818 ;
+U -1 ; WX 611 ; N Aring ; G 156 ; B -51 0 564 904 ;
+U -1 ; WX 932 ; N AE ; G 138 ; B -27 0 911 653 ;
+U -1 ; WX 710 ; N Ccedilla ; G 158 ; B 66 -217 689 666 ;
+U -1 ; WX 655 ; N Egrave ; G 164 ; B -1 0 634 876 ;
+U -1 ; WX 655 ; N Eacute ; G 163 ; B -1 0 634 876 ;
+U -1 ; WX 655 ; N Ecircumflex ; G 165 ; B -1 0 634 873 ;
+U -1 ; WX 655 ; N Edieresis ; G 162 ; B -1 0 634 818 ;
+U -1 ; WX 405 ; N Igrave ; G 172 ; B -8 0 384 876 ;
+U -1 ; WX 424 ; N Iacute ; G 171 ; B -8 0 403 876 ;
+U -1 ; WX 446 ; N Icircumflex ; G 173 ; B -8 0 425 873 ;
+U -1 ; WX 456 ; N Idieresis ; G 170 ; B -8 0 435 818 ;
+U -1 ; WX 722 ; N Eth ; G 283 ; B -8 0 700 653 ;
+U -1 ; WX 748 ; N Ntilde ; G 179 ; B -20 -15 727 836 ;
+U -1 ; WX 722 ; N Ograve ; G 182 ; B 60 -18 706 876 ;
+U -1 ; WX 722 ; N Oacute ; G 181 ; B 60 -18 706 876 ;
+U -1 ; WX 722 ; N Ocircumflex ; G 183 ; B 60 -18 706 873 ;
+U -1 ; WX 722 ; N Otilde ; G 184 ; B 60 -18 706 836 ;
+U -1 ; WX 722 ; N Odieresis ; G 180 ; B 60 -18 706 818 ;
+U -1 ; WX 675 ; N multiply ; G 295 ; B 93 8 582 497 ;
+U -1 ; WX 722 ; N Oslash ; G 141 ; B 60 -105 699 722 ;
+U -1 ; WX 786 ; N Ugrave ; G 194 ; B 102 -18 765 876 ;
+U -1 ; WX 786 ; N Uacute ; G 193 ; B 102 -18 765 876 ;
+U -1 ; WX 786 ; N Ucircumflex ; G 195 ; B 102 -18 765 873 ;
+U -1 ; WX 786 ; N Udieresis ; G 192 ; B 102 -18 765 818 ;
+U -1 ; WX 654 ; N Yacute ; G 198 ; B 78 0 633 876 ;
+U -1 ; WX 611 ; N Thorn ; G 285 ; B 0 0 569 653 ;
+U -1 ; WX 514 ; N germandbls ; G 149 ; B -168 -207 493 679 ;
+U -1 ; WX 500 ; N agrave ; G 218 ; B 17 -11 476 664 ;
+U -1 ; WX 508 ; N aacute ; G 217 ; B 17 -11 487 664 ;
+U -1 ; WX 500 ; N acircumflex ; G 219 ; B 17 -11 476 661 ;
+U -1 ; WX 532 ; N atilde ; G 221 ; B 17 -11 511 624 ;
+U -1 ; WX 510 ; N adieresis ; G 216 ; B 17 -11 489 606 ;
+U -1 ; WX 500 ; N aring ; G 222 ; B 17 -11 476 707 ;
+U -1 ; WX 667 ; N ae ; G 144 ; B 23 -11 640 441 ;
+U -1 ; WX 446 ; N ccedilla ; G 226 ; B 26 -217 425 441 ;
+U -1 ; WX 444 ; N egrave ; G 230 ; B 31 -11 412 664 ;
+U -1 ; WX 480 ; N eacute ; G 229 ; B 31 -11 459 664 ;
+U -1 ; WX 462 ; N ecircumflex ; G 231 ; B 31 -11 441 661 ;
+U -1 ; WX 472 ; N edieresis ; G 228 ; B 31 -11 451 606 ;
+U -1 ; WX 305 ; N igrave ; G 238 ; B 49 -11 284 664 ;
+U -1 ; WX 377 ; N iacute ; G 237 ; B 49 -11 356 664 ;
+U -1 ; WX 349 ; N icircumflex ; G 239 ; B 34 -11 328 661 ;
+U -1 ; WX 374 ; N idieresis ; G 236 ; B 49 -11 353 606 ;
+U -1 ; WX 503 ; N eth ; G 287 ; B 27 -11 482 683 ;
+U -1 ; WX 500 ; N ntilde ; G 244 ; B 14 -9 476 624 ;
+U -1 ; WX 500 ; N ograve ; G 247 ; B 27 -11 468 664 ;
+U -1 ; WX 508 ; N oacute ; G 246 ; B 27 -11 487 664 ;
+U -1 ; WX 500 ; N ocircumflex ; G 248 ; B 27 -11 468 661 ;
+U -1 ; WX 517 ; N otilde ; G 249 ; B 27 -11 496 624 ;
+U -1 ; WX 510 ; N odieresis ; G 245 ; B 27 -11 489 606 ;
+U -1 ; WX 675 ; N divide ; G 296 ; B 86 -11 590 517 ;
+U -1 ; WX 500 ; N oslash ; G 147 ; B 28 -135 469 554 ;
+U -1 ; WX 500 ; N ugrave ; G 258 ; B 42 -11 475 664 ;
+U -1 ; WX 500 ; N uacute ; G 257 ; B 42 -11 477 664 ;
+U -1 ; WX 500 ; N ucircumflex ; G 259 ; B 42 -11 475 661 ;
+U -1 ; WX 500 ; N udieresis ; G 256 ; B 42 -11 479 606 ;
+U -1 ; WX 480 ; N yacute ; G 262 ; B -24 -206 459 664 ;
+U -1 ; WX 500 ; N thorn ; G 288 ; B -75 -205 469 683 ;
+U -1 ; WX 462 ; N ydieresis ; G 266 ; B -24 -206 441 606 ;
+U -1 ; WX 358 ; N fraction ; G 99 ; B -169 -10 337 676 ;
+U -1 ; WX 502 ; N fi ; G 109 ; B -141 -207 481 681 ;
+U -1 ; WX 539 ; N fl ; G 110 ; B -141 -204 518 682 ;
+U -1 ; WX 439 ; N breve ; G 129 ; B 117 492 418 650 ;
+U -1 ; WX 333 ; N dotaccent ; G 130 ; B 207 508 305 606 ;
+U -1 ; WX 376 ; N ring ; G 132 ; B 155 508 355 707 ;
+U -1 ; WX 507 ; N hungarumlaut ; G 134 ; B 93 494 486 664 ;
+U -1 ; WX 333 ; N ogonek ; G 135 ; B -20 -169 200 40 ;
+U -1 ; WX 447 ; N caron ; G 136 ; B 121 492 426 661 ;
+U -1 ; WX 580 ; N Lslash ; G 140 ; B -8 0 559 653 ;
+U -1 ; WX 278 ; N dotlessi ; G 145 ; B 49 -11 235 441 ;
+U -1 ; WX 328 ; N lslash ; G 146 ; B 37 -11 307 683 ;
+U -1 ; WX 611 ; N Abreve ; G 154 ; B -51 0 564 862 ;
+U -1 ; WX 728 ; N Aogonek ; G 157 ; B -51 -169 707 668 ;
+U -1 ; WX 710 ; N Cacute ; G 159 ; B 66 -18 689 876 ;
+U -1 ; WX 710 ; N Ccaron ; G 160 ; B 66 -18 689 873 ;
+U -1 ; WX 722 ; N Dcaron ; G 161 ; B -8 0 700 873 ;
+U -1 ; WX 655 ; N Ecaron ; G 166 ; B -1 0 634 873 ;
+U -1 ; WX 655 ; N Edotaccent ; G 167 ; B -1 0 634 818 ;
+U -1 ; WX 672 ; N Eogonek ; G 168 ; B -1 -169 651 653 ;
+U -1 ; WX 743 ; N Gbreve ; G 169 ; B 52 -18 722 862 ;
+U -1 ; WX 405 ; N Idotaccent ; G 174 ; B -8 0 384 818 ;
+U -1 ; WX 580 ; N Lacute ; G 175 ; B -8 0 559 876 ;
+U -1 ; WX 617 ; N Lcaron ; G 176 ; B -8 0 596 666 ;
+U -1 ; WX 748 ; N Nacute ; G 177 ; B -20 -15 727 876 ;
+U -1 ; WX 748 ; N Ncaron ; G 178 ; B -20 -15 727 873 ;
+U -1 ; WX 722 ; N Ohungarumlaut ; G 185 ; B 60 -18 706 876 ;
+U -1 ; WX 611 ; N Racute ; G 186 ; B -13 0 588 876 ;
+U -1 ; WX 611 ; N Rcaron ; G 187 ; B -13 0 588 873 ;
+U -1 ; WX 529 ; N Sacute ; G 188 ; B 17 -18 508 876 ;
+U -1 ; WX 529 ; N Scedilla ; G 190 ; B 17 -217 508 667 ;
+U -1 ; WX 654 ; N Tcaron ; G 191 ; B 59 0 633 873 ;
+U -1 ; WX 786 ; N Uring ; G 196 ; B 102 -18 765 919 ;
+U -1 ; WX 786 ; N Uhungarumlaut ; G 197 ; B 102 -18 765 876 ;
+U -1 ; WX 627 ; N Zacute ; G 199 ; B -6 0 606 876 ;
+U -1 ; WX 627 ; N Zdotaccent ; G 201 ; B -6 0 606 818 ;
+U -1 ; WX 611 ; N Amacron ; G 202 ; B -51 0 564 795 ;
+U -1 ; WX 654 ; N Tcommaaccent ; G 203 ; B 59 -270 633 653 ;
+U -1 ; WX 655 ; N Emacron ; G 205 ; B -1 0 634 795 ;
+U -1 ; WX 462 ; N Imacron ; G 206 ; B -8 0 441 795 ;
+U -1 ; WX 405 ; N Iogonek ; G 207 ; B -8 -169 384 653 ;
+U -1 ; WX 743 ; N Kcommaaccent ; G 208 ; B 7 -270 722 653 ;
+U -1 ; WX 580 ; N Lcommaaccent ; G 209 ; B -8 -270 559 653 ;
+U -1 ; WX 748 ; N Ncommaaccent ; G 210 ; B -20 -270 727 653 ;
+U -1 ; WX 722 ; N Omacron ; G 211 ; B 60 -18 706 795 ;
+U -1 ; WX 611 ; N Rcommaaccent ; G 212 ; B -13 -270 588 653 ;
+U -1 ; WX 743 ; N Gcommaaccent ; G 213 ; B 52 -270 722 666 ;
+U -1 ; WX 786 ; N Umacron ; G 214 ; B 102 -18 765 795 ;
+U -1 ; WX 786 ; N Uogonek ; G 215 ; B 102 -169 765 653 ;
+U -1 ; WX 523 ; N abreve ; G 220 ; B 17 -11 502 650 ;
+U -1 ; WX 521 ; N aogonek ; G 223 ; B 17 -169 500 441 ;
+U -1 ; WX 479 ; N cacute ; G 224 ; B 30 -11 458 664 ;
+U -1 ; WX 505 ; N ccaron ; G 225 ; B 30 -11 484 661 ;
+U -1 ; WX 662 ; N dcaron ; G 227 ; B 15 -13 641 683 ;
+U -1 ; WX 503 ; N ecaron ; G 232 ; B 31 -11 482 661 ;
+U -1 ; WX 444 ; N edotaccent ; G 233 ; B 31 -11 412 606 ;
+U -1 ; WX 465 ; N eogonek ; G 234 ; B 31 -169 444 441 ;
+U -1 ; WX 523 ; N gbreve ; G 235 ; B 8 -206 502 650 ;
+U -1 ; WX 397 ; N lacute ; G 240 ; B 40 -11 376 876 ;
+U -1 ; WX 416 ; N lcaron ; G 241 ; B 40 -11 395 683 ;
+U -1 ; WX 508 ; N nacute ; G 242 ; B 14 -9 487 664 ;
+U -1 ; WX 531 ; N ncaron ; G 243 ; B 14 -9 510 661 ;
+U -1 ; WX 591 ; N ohungarumlaut ; G 250 ; B 27 -11 570 664 ;
+U -1 ; WX 452 ; N racute ; G 251 ; B 45 0 431 664 ;
+U -1 ; WX 452 ; N sacute ; G 252 ; B 16 -13 431 664 ;
+U -1 ; WX 389 ; N scommaaccent ; G 254 ; B 16 -270 366 442 ;
+U -1 ; WX 399 ; N tcaron ; G 255 ; B 37 -11 378 666 ;
+U -1 ; WX 500 ; N uring ; G 260 ; B 42 -11 475 707 ;
+U -1 ; WX 591 ; N uhungarumlaut ; G 261 ; B 42 -11 570 664 ;
+U -1 ; WX 452 ; N zacute ; G 263 ; B -2 -81 431 664 ;
+U -1 ; WX 401 ; N zdotaccent ; G 265 ; B -2 -81 380 606 ;
+U -1 ; WX 317 ; N tcommaaccent ; G 267 ; B -21 -270 296 546 ;
+U -1 ; WX 516 ; N amacron ; G 268 ; B 17 -11 495 583 ;
+U -1 ; WX 488 ; N emacron ; G 269 ; B 31 -11 467 583 ;
+U -1 ; WX 405 ; N imacron ; G 270 ; B 49 -11 384 583 ;
+U -1 ; WX 482 ; N kcommaaccent ; G 271 ; B 14 -270 461 683 ;
+U -1 ; WX 300 ; N lcommaaccent ; G 272 ; B -21 -270 279 683 ;
+U -1 ; WX 500 ; N ncommaaccent ; G 273 ; B 14 -270 474 441 ;
+U -1 ; WX 516 ; N omacron ; G 274 ; B 27 -11 495 583 ;
+U -1 ; WX 433 ; N rcommaaccent ; G 275 ; B 35 -270 412 441 ;
+U -1 ; WX 516 ; N umacron ; G 276 ; B 42 -11 495 583 ;
+U -1 ; WX 521 ; N uogonek ; G 277 ; B 42 -169 500 441 ;
+U -1 ; WX 475 ; N rcaron ; G 278 ; B 45 0 454 661 ;
+U -1 ; WX 389 ; N scedilla ; G 279 ; B -2 -217 366 442 ;
+U -1 ; WX 500 ; N gcommaaccent ; G 280 ; B 8 -206 472 706 ;
+U -1 ; WX 299 ; N iogonek ; G 281 ; B 49 -169 278 654 ;
+U -1 ; WX 529 ; N Scommaaccent ; G 282 ; B 17 -270 508 667 ;
+U -1 ; WX 722 ; N Dcroat ; G 284 ; B -8 0 700 653 ;
+U -1 ; WX 579 ; N dcroat ; G 286 ; B 15 -13 558 683 ;
+U -1 ; WX 675 ; N minus ; G 294 ; B 86 220 590 286 ;
+U -1 ; WX 333 ; N commaaccent ; G 302 ; B 7 -270 146 -40 ;
+U -1 ; WX 494 ; N lozenge ; G 305 ; B 18 0 466 740 ;
+U -1 ; WX 629 ; N Delta ; G 306 ; B 6 0 608 688 ;
+U -1 ; WX 564 ; N notequal ; G 307 ; B 30 -3 534 509 ;
+U -1 ; WX 549 ; N radical ; G 308 ; B -2 -65 526 924 ;
+U -1 ; WX 675 ; N lessequal ; G 309 ; B 84 0 592 628 ;
+U -1 ; WX 675 ; N greaterequal ; G 310 ; B 84 0 592 628 ;
+U -1 ; WX 716 ; N summation ; G 312 ; B 14 -123 695 752 ;
+U -1 ; WX 494 ; N partialdiff ; G 313 ; B 26 -10 462 753 ;
+U -1 ; WX 611 ; N afii10017 ; G 316 ; B -51 0 564 668 ;
+U -1 ; WX 735 ; N afii10018 ; G 317 ; B -8 0 714 653 ;
+U -1 ; WX 611 ; N afii10019 ; G 318 ; B -8 0 588 653 ;
+U -1 ; WX 693 ; N afii10020 ; G 319 ; B -8 0 672 662 ;
+U -1 ; WX 806 ; N afii10021 ; G 320 ; B -40 -129 785 653 ;
+U -1 ; WX 648 ; N afii10022 ; G 321 ; B -8 0 627 653 ;
+U -1 ; WX 648 ; N afii10023 ; G 322 ; B -8 0 627 801 ;
+U -1 ; WX 1133 ; N afii10024 ; G 323 ; B -29 0 1124 668 ;
+U -1 ; WX 575 ; N afii10025 ; G 324 ; B -30 -14 548 676 ;
+U -1 ; WX 873 ; N afii10026 ; G 325 ; B -8 0 852 653 ;
+U -1 ; WX 873 ; N afii10027 ; G 326 ; B -8 0 852 861 ;
+U -1 ; WX 804 ; N afii10028 ; G 327 ; B -8 0 795 668 ;
+U -1 ; WX 814 ; N afii10029 ; G 328 ; B -60 -13 793 653 ;
+U -1 ; WX 894 ; N afii10030 ; G 329 ; B -18 0 873 653 ;
+U -1 ; WX 788 ; N afii10031 ; G 330 ; B -8 0 767 653 ;
+U -1 ; WX 722 ; N afii10032 ; G 331 ; B 60 -18 706 666 ;
+U -1 ; WX 871 ; N afii10033 ; G 332 ; B -8 0 850 653 ;
+U -1 ; WX 618 ; N afii10034 ; G 333 ; B -8 0 597 653 ;
+U -1 ; WX 710 ; N afii10035 ; G 334 ; B 66 -18 689 666 ;
+U -1 ; WX 654 ; N afii10036 ; G 335 ; B 59 0 633 653 ;
+U -1 ; WX 786 ; N afii10037 ; G 336 ; B -32 -12 765 653 ;
+U -1 ; WX 804 ; N afii10038 ; G 337 ; B 4 0 828 653 ;
+U -1 ; WX 676 ; N afii10039 ; G 338 ; B -29 0 655 653 ;
+U -1 ; WX 872 ; N afii10040 ; G 339 ; B -8 -129 851 653 ;
+U -1 ; WX 837 ; N afii10041 ; G 340 ; B 114 0 816 653 ;
+U -1 ; WX 1129 ; N afii10042 ; G 341 ; B -8 0 1108 653 ;
+U -1 ; WX 1130 ; N afii10043 ; G 342 ; B -8 -129 1109 653 ;
+U -1 ; WX 731 ; N afii10044 ; G 343 ; B 59 0 673 653 ;
+U -1 ; WX 1027 ; N afii10045 ; G 344 ; B -8 0 1006 653 ;
+U -1 ; WX 645 ; N afii10046 ; G 345 ; B -8 0 587 653 ;
+U -1 ; WX 671 ; N afii10047 ; G 346 ; B -32 -14 662 676 ;
+U -1 ; WX 1191 ; N afii10048 ; G 347 ; B -8 -14 1089 676 ;
+U -1 ; WX 812 ; N afii10049 ; G 348 ; B -28 0 791 653 ;
+U -1 ; WX 500 ; N afii10065 ; G 349 ; B 17 -11 476 441 ;
+U -1 ; WX 611 ; N afii10066 ; G 350 ; B 30 -10 590 689 ;
+U -1 ; WX 429 ; N afii10067 ; G 351 ; B 31 -11 397 450 ;
+U -1 ; WX 355 ; N afii10068 ; G 352 ; B 18 -11 334 441 ;
+U -1 ; WX 552 ; N afii10069 ; G 353 ; B 27 -11 531 675 ;
+U -1 ; WX 444 ; N afii10070 ; G 354 ; B 31 -11 412 441 ;
+U -1 ; WX 490 ; N afii10071 ; G 355 ; B 31 -11 469 589 ;
+U -1 ; WX 1060 ; N afii10072 ; G 356 ; B 13 -11 1039 441 ;
+U -1 ; WX 396 ; N afii10073 ; G 357 ; B 5 -10 391 459 ;
+U -1 ; WX 500 ; N afii10074 ; G 358 ; B 42 -11 475 441 ;
+U -1 ; WX 546 ; N afii10075 ; G 359 ; B 42 -11 525 649 ;
+U -1 ; WX 524 ; N afii10076 ; G 360 ; B 14 0 506 460 ;
+U -1 ; WX 538 ; N afii10077 ; G 361 ; B 5 -9 513 432 ;
+U -1 ; WX 731 ; N afii10078 ; G 362 ; B 5 -18 706 432 ;
+U -1 ; WX 500 ; N afii10079 ; G 363 ; B 14 -9 474 441 ;
+U -1 ; WX 500 ; N afii10080 ; G 364 ; B 27 -11 468 441 ;
+U -1 ; WX 500 ; N afii10081 ; G 365 ; B 14 -9 474 441 ;
+U -1 ; WX 500 ; N afii10082 ; G 366 ; B -75 -205 469 442 ;
+U -1 ; WX 446 ; N afii10083 ; G 367 ; B 30 -11 425 441 ;
+U -1 ; WX 725 ; N afii10084 ; G 368 ; B 12 -9 704 441 ;
+U -1 ; WX 447 ; N afii10085 ; G 369 ; B -24 -206 426 441 ;
+U -1 ; WX 771 ; N afii10086 ; G 370 ; B 25 -205 740 678 ;
+U -1 ; WX 468 ; N afii10087 ; G 371 ; B -27 -11 447 441 ;
+U -1 ; WX 500 ; N afii10088 ; G 372 ; B 42 -119 475 441 ;
+U -1 ; WX 500 ; N afii10089 ; G 373 ; B 58 -9 475 441 ;
+U -1 ; WX 750 ; N afii10090 ; G 374 ; B 42 -11 725 441 ;
+U -1 ; WX 750 ; N afii10091 ; G 375 ; B 42 -119 725 441 ;
+U -1 ; WX 495 ; N afii10092 ; G 376 ; B 42 -11 475 452 ;
+U -1 ; WX 684 ; N afii10093 ; G 377 ; B 32 -12 659 441 ;
+U -1 ; WX 423 ; N afii10094 ; G 378 ; B 42 -12 408 441 ;
+U -1 ; WX 457 ; N afii10095 ; G 379 ; B 30 -11 425 441 ;
+U -1 ; WX 700 ; N afii10096 ; G 380 ; B 14 -11 668 441 ;
+U -1 ; WX 560 ; N afii10097 ; G 381 ; B 17 -9 512 432 ;
+U -1 ; WX 648 ; N uni0400 ; G 382 ; B -8 0 627 875 ;
+U -1 ; WX 713 ; N afii10051 ; G 383 ; B 59 -146 713 653 ;
+U -1 ; WX 693 ; N afii10052 ; G 384 ; B -8 0 672 873 ;
+U -1 ; WX 728 ; N afii10053 ; G 385 ; B 1 -14 707 676 ;
+U -1 ; WX 529 ; N afii10054 ; G 386 ; B 17 -18 508 667 ;
+U -1 ; WX 405 ; N afii10055 ; G 387 ; B -8 0 384 653 ;
+U -1 ; WX 456 ; N afii10056 ; G 388 ; B -8 0 435 818 ;
+U -1 ; WX 512 ; N afii10057 ; G 389 ; B -6 -18 491 653 ;
+U -1 ; WX 943 ; N afii10058 ; G 390 ; B -48 -13 922 653 ;
+U -1 ; WX 959 ; N afii10059 ; G 391 ; B -8 0 938 653 ;
+U -1 ; WX 763 ; N afii10060 ; G 392 ; B 59 0 758 653 ;
+U -1 ; WX 819 ; N afii10061 ; G 393 ; B 7 0 810 873 ;
+U -1 ; WX 873 ; N uni040D ; G 394 ; B -8 0 852 875 ;
+U -1 ; WX 786 ; N afii10062 ; G 395 ; B -32 -12 765 861 ;
+U -1 ; WX 872 ; N afii10145 ; G 396 ; B -7 -129 851 653 ;
+U -1 ; WX 444 ; N uni0450 ; G 397 ; B 31 -11 420 663 ;
+U -1 ; WX 500 ; N afii10099 ; G 398 ; B 19 -203 427 683 ;
+U -1 ; WX 511 ; N afii10100 ; G 399 ; B 17 0 490 661 ;
+U -1 ; WX 458 ; N afii10101 ; G 400 ; B -14 -10 450 460 ;
+U -1 ; WX 389 ; N afii10102 ; G 401 ; B 16 -13 366 442 ;
+U -1 ; WX 285 ; N afii10103 ; G 402 ; B 49 -11 264 654 ;
+U -1 ; WX 398 ; N afii10104 ; G 403 ; B 49 -11 377 589 ;
+U -1 ; WX 297 ; N afii10105 ; G 404 ; B -124 -207 276 654 ;
+U -1 ; WX 721 ; N afii10106 ; G 405 ; B 5 -11 700 432 ;
+U -1 ; WX 682 ; N afii10107 ; G 406 ; B 14 -11 661 441 ;
+U -1 ; WX 500 ; N afii10108 ; G 407 ; B 19 -9 478 683 ;
+U -1 ; WX 524 ; N afii10109 ; G 408 ; B 14 0 506 680 ;
+U -1 ; WX 500 ; N uni045D ; G 409 ; B 42 -11 475 664 ;
+U -1 ; WX 461 ; N afii10110 ; G 410 ; B -24 -206 440 649 ;
+U -1 ; WX 500 ; N afii10193 ; G 411 ; B 42 -119 475 441 ;
+U -1 ; WX 645 ; N uni048C ; G 412 ; B -8 0 587 653 ;
+U -1 ; WX 423 ; N uni048D ; G 413 ; B 25 -12 408 441 ;
+U -1 ; WX 618 ; N uni048E ; G 414 ; B -8 0 597 653 ;
+U -1 ; WX 500 ; N uni048F ; G 415 ; B -75 -205 469 442 ;
+U -1 ; WX 673 ; N afii10050 ; G 416 ; B -94 0 652 767 ;
+U -1 ; WX 481 ; N afii10098 ; G 417 ; B -57 0 460 538 ;
+U -1 ; WX 693 ; N uni0492 ; G 418 ; B -8 0 672 662 ;
+U -1 ; WX 355 ; N uni0493 ; G 419 ; B -3 -11 352 441 ;
+U -1 ; WX 693 ; N uni0494 ; G 420 ; B -8 -242 672 662 ;
+U -1 ; WX 497 ; N uni0495 ; G 421 ; B 17 0 476 450 ;
+U -1 ; WX 1133 ; N uni0496 ; G 422 ; B -29 -129 1124 668 ;
+U -1 ; WX 1060 ; N uni0497 ; G 423 ; B 13 -119 1039 441 ;
+U -1 ; WX 575 ; N uni0498 ; G 424 ; B -30 -14 548 676 ;
+U -1 ; WX 396 ; N uni0499 ; G 425 ; B 5 -10 391 459 ;
+U -1 ; WX 819 ; N uni049A ; G 426 ; B 7 -129 810 668 ;
+U -1 ; WX 524 ; N uni049B ; G 427 ; B 14 -119 506 460 ;
+U -1 ; WX 819 ; N uni049C ; G 428 ; B 7 0 810 668 ;
+U -1 ; WX 524 ; N uni049D ; G 429 ; B 14 0 506 460 ;
+U -1 ; WX 819 ; N uni049E ; G 430 ; B 7 0 810 668 ;
+U -1 ; WX 524 ; N uni049F ; G 431 ; B 14 0 506 460 ;
+U -1 ; WX 819 ; N uni04A0 ; G 432 ; B 7 0 810 668 ;
+U -1 ; WX 524 ; N uni04A1 ; G 433 ; B 14 0 506 460 ;
+U -1 ; WX 788 ; N uni04A2 ; G 434 ; B -8 -129 767 653 ;
+U -1 ; WX 500 ; N uni04A3 ; G 435 ; B 14 -119 474 441 ;
+U -1 ; WX 788 ; N uni04A4 ; G 436 ; B -8 0 767 653 ;
+U -1 ; WX 500 ; N uni04A5 ; G 437 ; B 14 -9 474 441 ;
+U -1 ; WX 1029 ; N uni04A6 ; G 438 ; B -7 -242 1012 653 ;
+U -1 ; WX 500 ; N uni04A7 ; G 439 ; B 14 -9 474 441 ;
+U -1 ; WX 710 ; N uni04A8 ; G 440 ; B 66 -18 689 666 ;
+U -1 ; WX 446 ; N uni04A9 ; G 441 ; B 30 -11 425 441 ;
+U -1 ; WX 710 ; N uni04AA ; G 442 ; B 66 -18 689 666 ;
+U -1 ; WX 446 ; N uni04AB ; G 443 ; B 30 -11 425 441 ;
+U -1 ; WX 654 ; N uni04AC ; G 444 ; B 59 -129 633 653 ;
+U -1 ; WX 534 ; N uni04AD ; G 445 ; B 59 -119 513 450 ;
+U -1 ; WX 654 ; N uni04AE ; G 446 ; B 78 0 633 653 ;
+U -1 ; WX 556 ; N uni04AF ; G 447 ; B 66 -214 514 324 ;
+U -1 ; WX 654 ; N uni04B0 ; G 448 ; B 78 0 633 653 ;
+U -1 ; WX 565 ; N uni04B1 ; G 449 ; B 96 -106 544 432 ;
+U -1 ; WX 676 ; N uni04B2 ; G 450 ; B -29 -129 655 653 ;
+U -1 ; WX 468 ; N uni04B3 ; G 451 ; B -27 -119 447 441 ;
+U -1 ; WX 872 ; N uni04B4 ; G 452 ; B -8 -129 851 653 ;
+U -1 ; WX 500 ; N uni04B5 ; G 453 ; B 42 -119 475 441 ;
+U -1 ; WX 837 ; N uni04B6 ; G 454 ; B 114 -129 816 653 ;
+U -1 ; WX 500 ; N uni04B7 ; G 455 ; B 58 -119 475 441 ;
+U -1 ; WX 837 ; N uni04B8 ; G 456 ; B 114 0 816 653 ;
+U -1 ; WX 500 ; N uni04B9 ; G 457 ; B 58 -9 475 441 ;
+U -1 ; WX 727 ; N uni04BA ; G 458 ; B 23 0 725 653 ;
+U -1 ; WX 500 ; N uni04BB ; G 459 ; B 19 -9 478 683 ;
+U -1 ; WX 699 ; N uni04BC ; G 460 ; B 31 -12 678 675 ;
+U -1 ; WX 444 ; N uni04BD ; G 461 ; B 31 -11 412 441 ;
+U -1 ; WX 699 ; N uni04BE ; G 462 ; B 31 -12 678 675 ;
+U -1 ; WX 444 ; N uni04BF ; G 463 ; B 31 -11 412 441 ;
+U -1 ; WX 405 ; N uni04C0 ; G 464 ; B -8 0 384 653 ;
+U -1 ; WX 1133 ; N uni04C1 ; G 465 ; B -29 0 1124 861 ;
+U -1 ; WX 1060 ; N uni04C2 ; G 466 ; B 13 -11 1039 649 ;
+U -1 ; WX 819 ; N uni04C3 ; G 467 ; B 7 0 810 668 ;
+U -1 ; WX 524 ; N uni04C4 ; G 468 ; B 14 0 506 460 ;
+U -1 ; WX 788 ; N uni04C7 ; G 469 ; B -8 0 767 653 ;
+U -1 ; WX 500 ; N uni04C8 ; G 470 ; B 14 -9 474 441 ;
+U -1 ; WX 837 ; N uni04CB ; G 471 ; B 114 0 816 653 ;
+U -1 ; WX 500 ; N uni04CC ; G 472 ; B 58 -9 475 441 ;
+U -1 ; WX 611 ; N uni04D0 ; G 473 ; B -51 0 564 862 ;
+U -1 ; WX 523 ; N uni04D1 ; G 474 ; B 17 -11 502 650 ;
+U -1 ; WX 611 ; N uni04D2 ; G 475 ; B -51 0 564 818 ;
+U -1 ; WX 510 ; N uni04D3 ; G 476 ; B 17 -11 489 606 ;
+U -1 ; WX 932 ; N uni04D4 ; G 477 ; B -27 0 911 653 ;
+U -1 ; WX 667 ; N uni04D5 ; G 478 ; B 23 -11 640 441 ;
+U -1 ; WX 648 ; N uni04D6 ; G 479 ; B -8 0 627 861 ;
+U -1 ; WX 521 ; N uni04D7 ; G 480 ; B 31 -11 500 649 ;
+U -1 ; WX 699 ; N uni04D8 ; G 481 ; B 31 -10 678 677 ;
+U -1 ; WX 444 ; N afii10846 ; G 482 ; B 31 -11 412 441 ;
+U -1 ; WX 699 ; N uni04DA ; G 483 ; B 31 -10 678 831 ;
+U -1 ; WX 490 ; N uni04DB ; G 484 ; B 30 -11 469 589 ;
+U -1 ; WX 1133 ; N uni04DC ; G 485 ; B -29 0 1124 801 ;
+U -1 ; WX 1060 ; N uni04DD ; G 486 ; B 13 -11 1039 589 ;
+U -1 ; WX 575 ; N uni04DE ; G 487 ; B -30 -14 548 831 ;
+U -1 ; WX 459 ; N uni04DF ; G 488 ; B 5 -10 438 607 ;
+U -1 ; WX 575 ; N uni04E0 ; G 489 ; B -30 -14 548 676 ;
+U -1 ; WX 396 ; N uni04E1 ; G 490 ; B 5 -10 391 459 ;
+U -1 ; WX 873 ; N uni04E2 ; G 491 ; B -8 0 852 754 ;
+U -1 ; WX 515 ; N uni04E3 ; G 492 ; B 42 -11 494 542 ;
+U -1 ; WX 873 ; N uni04E4 ; G 493 ; B -8 0 852 801 ;
+U -1 ; WX 514 ; N uni04E5 ; G 494 ; B 42 -11 493 589 ;
+U -1 ; WX 722 ; N uni04E6 ; G 495 ; B 60 -18 706 818 ;
+U -1 ; WX 510 ; N uni04E7 ; G 496 ; B 27 -11 489 606 ;
+U -1 ; WX 722 ; N uni04E8 ; G 497 ; B 60 -18 706 666 ;
+U -1 ; WX 500 ; N uni04E9 ; G 498 ; B 27 -11 468 441 ;
+U -1 ; WX 722 ; N uni04EA ; G 499 ; B 60 -18 706 801 ;
+U -1 ; WX 508 ; N uni04EB ; G 500 ; B 27 -11 487 589 ;
+U -1 ; WX 671 ; N uni04EC ; G 501 ; B -32 -14 662 831 ;
+U -1 ; WX 491 ; N uni04ED ; G 502 ; B 30 -11 470 589 ;
+U -1 ; WX 786 ; N uni04EE ; G 503 ; B -32 -12 765 754 ;
+U -1 ; WX 447 ; N uni04EF ; G 504 ; B -24 -206 426 542 ;
+U -1 ; WX 786 ; N uni04F0 ; G 505 ; B -32 -12 765 801 ;
+U -1 ; WX 447 ; N uni04F1 ; G 506 ; B -24 -206 426 589 ;
+U -1 ; WX 786 ; N uni04F2 ; G 507 ; B -32 -12 765 873 ;
+U -1 ; WX 482 ; N uni04F3 ; G 508 ; B -24 -206 461 661 ;
+U -1 ; WX 837 ; N uni04F4 ; G 509 ; B 114 0 816 801 ;
+U -1 ; WX 514 ; N uni04F5 ; G 510 ; B 58 -9 493 589 ;
+U -1 ; WX 1087 ; N uni04F8 ; G 511 ; B -8 0 1066 801 ;
+U -1 ; WX 684 ; N uni04F9 ; G 512 ; B 32 -12 659 589 ;
+U -1 ; WX 370 ; N uniF6C4 ; G 513 ; B 18 -11 349 533 ;
+U -1 ; WX 611 ; N uniF6C5 ; G 514 ; B 23 -10 590 689 ;
+U -1 ; WX 504 ; N uniF6C6 ; G 515 ; B -19 -232 483 441 ;
+U -1 ; WX 500 ; N uniF6C7 ; G 516 ; B 42 -11 475 533 ;
+U -1 ; WX 761 ; N uniF6C8 ; G 517 ; B 42 -11 740 533 ;
+U -1 ; WX 710 ; N Ccircumflex ; G 518 ; B 66 -18 689 872 ;
+U -1 ; WX 470 ; N ccircumflex ; G 519 ; B 30 -11 449 660 ;
+U -1 ; WX 710 ; N Cdotaccent ; G 520 ; B 66 -18 689 801 ;
+U -1 ; WX 446 ; N cdotaccent ; G 521 ; B 30 -11 425 589 ;
+U -1 ; WX 648 ; N Ebreve ; G 522 ; B -8 0 627 861 ;
+U -1 ; WX 521 ; N ebreve ; G 523 ; B 31 -11 500 649 ;
+U -1 ; WX 743 ; N Gcircumflex ; G 524 ; B 52 -18 722 872 ;
+U -1 ; WX 516 ; N gcircumflex ; G 525 ; B 8 -206 495 660 ;
+U -1 ; WX 743 ; N Gdotaccent ; G 526 ; B 52 -18 722 801 ;
+U -1 ; WX 500 ; N gdotaccent ; G 527 ; B 8 -206 472 589 ;
+U -1 ; WX 788 ; N Hcircumflex ; G 528 ; B -8 0 767 872 ;
+U -1 ; WX 500 ; N hcircumflex ; G 529 ; B 19 -9 478 902 ;
+U -1 ; WX 788 ; N Hbar ; G 530 ; B -8 0 767 653 ;
+U -1 ; WX 500 ; N hbar ; G 531 ; B 19 -9 478 683 ;
+U -1 ; WX 491 ; N Itilde ; G 532 ; B -8 0 470 810 ;
+U -1 ; WX 414 ; N itilde ; G 533 ; B 49 -11 393 598 ;
+U -1 ; WX 506 ; N Ibreve ; G 534 ; B -8 0 485 861 ;
+U -1 ; WX 430 ; N ibreve ; G 535 ; B 49 -11 409 649 ;
+U -1 ; WX 775 ; N IJ ; G 536 ; B -8 -18 754 653 ;
+U -1 ; WX 483 ; N ij ; G 537 ; B 49 -207 462 654 ;
+U -1 ; WX 512 ; N Jcircumflex ; G 538 ; B -6 -18 491 872 ;
+U -1 ; WX 378 ; N jcircumflex ; G 539 ; B -124 -207 357 714 ;
+U -1 ; WX 524 ; N kgreenlandic ; G 540 ; B 14 0 506 460 ;
+U -1 ; WX 580 ; N Ldot ; G 541 ; B -8 0 559 653 ;
+U -1 ; WX 528 ; N ldot ; G 542 ; B 40 -11 459 683 ;
+U -1 ; WX 500 ; N napostrophe ; G 543 ; B 14 -9 474 441 ;
+U -1 ; WX 750 ; N Eng ; G 544 ; B -18 -15 729 653 ;
+U -1 ; WX 500 ; N eng ; G 545 ; B 14 -9 474 441 ;
+U -1 ; WX 722 ; N Obreve ; G 546 ; B 60 -18 706 861 ;
+U -1 ; WX 540 ; N obreve ; G 547 ; B 27 -11 519 649 ;
+U -1 ; WX 550 ; N Scircumflex ; G 548 ; B 17 -18 529 872 ;
+U -1 ; WX 438 ; N scircumflex ; G 549 ; B 16 -13 417 660 ;
+U -1 ; WX 654 ; N _d_550 ; G 550 ; B 59 -217 633 653 ;
+U -1 ; WX 317 ; N _d_551 ; G 551 ; B -44 -228 296 546 ;
+U -1 ; WX 654 ; N Tbar ; G 552 ; B 59 0 633 653 ;
+U -1 ; WX 317 ; N tbar ; G 553 ; B 13 -11 296 546 ;
+U -1 ; WX 786 ; N Utilde ; G 554 ; B 102 -18 765 810 ;
+U -1 ; WX 530 ; N utilde ; G 555 ; B 42 -11 509 598 ;
+U -1 ; WX 786 ; N Ubreve ; G 556 ; B 102 -18 765 861 ;
+U -1 ; WX 546 ; N ubreve ; G 557 ; B 42 -11 525 649 ;
+U -1 ; WX 927 ; N Wcircumflex ; G 558 ; B 71 -18 906 872 ;
+U -1 ; WX 669 ; N wcircumflex ; G 559 ; B 16 -18 648 660 ;
+U -1 ; WX 654 ; N Ycircumflex ; G 560 ; B 78 0 633 872 ;
+U -1 ; WX 447 ; N ycircumflex ; G 561 ; B -24 -206 426 660 ;
+U -1 ; WX 445 ; N longs ; G 562 ; B -147 -207 424 678 ;
+U -1 ; WX 1028 ; N afii61352 ; G 563 ; B 3 -15 1023 669 ;
+U -1 ; WX 683 ; N infinity ; G 564 ; B 12 53 669 434 ;
+U -1 ; WX 654 ; N uni1EF6 ; G 565 ; B 78 0 633 958 ;
+U -1 ; WX 450 ; N uni1EF7 ; G 566 ; B -24 -206 431 745 ;
+U -1 ; WX 654 ; N uni1EF4 ; G 567 ; B 78 -202 633 653 ;
+U -1 ; WX 447 ; N uni1EF5 ; G 568 ; B -24 -206 426 441 ;
+U -1 ; WX 611 ; N uni1EA2 ; G 569 ; B -51 0 564 958 ;
+U -1 ; WX 611 ; N uni1EA0 ; G 570 ; B -51 -202 564 668 ;
+U -1 ; WX 611 ; N uni1EA6 ; G 571 ; B -51 0 582 1086 ;
+U -1 ; WX 611 ; N uni1EA4 ; G 572 ; B -51 0 564 1084 ;
+U -1 ; WX 650 ; N uni1EAA ; G 573 ; B -51 0 629 1043 ;
+U -1 ; WX 710 ; N uni1EA8 ; G 574 ; B -51 0 691 1085 ;
+U -1 ; WX 611 ; N uni1EAC ; G 575 ; B -51 -202 564 892 ;
+U -1 ; WX 611 ; N uni1EB0 ; G 576 ; B -51 0 574 1087 ;
+U -1 ; WX 612 ; N uni1EAE ; G 577 ; B -51 0 591 1085 ;
+U -1 ; WX 634 ; N uni1EB4 ; G 578 ; B -51 0 613 1044 ;
+U -1 ; WX 611 ; N uni1EB2 ; G 579 ; B -51 0 574 1128 ;
+U -1 ; WX 611 ; N uni1EB6 ; G 580 ; B -51 -202 574 889 ;
+U -1 ; WX 655 ; N uni1EBC ; G 581 ; B -1 0 634 861 ;
+U -1 ; WX 655 ; N uni1EBA ; G 582 ; B -1 0 634 958 ;
+U -1 ; WX 655 ; N uni1EB8 ; G 583 ; B -1 -202 634 653 ;
+U -1 ; WX 655 ; N uni1EC0 ; G 584 ; B -1 0 634 1086 ;
+U -1 ; WX 655 ; N uni1EBE ; G 585 ; B -1 0 634 1084 ;
+U -1 ; WX 691 ; N uni1EC4 ; G 586 ; B -1 0 670 1043 ;
+U -1 ; WX 751 ; N uni1EC2 ; G 587 ; B -1 0 732 1085 ;
+U -1 ; WX 655 ; N uni1EC6 ; G 588 ; B -1 -202 634 892 ;
+U -1 ; WX 452 ; N uni1EC8 ; G 589 ; B -8 0 433 958 ;
+U -1 ; WX 507 ; N uni1EA3 ; G 590 ; B 17 -11 488 745 ;
+U -1 ; WX 500 ; N uni1EA1 ; G 591 ; B 17 -202 476 441 ;
+U -1 ; WX 545 ; N uni1EA7 ; G 592 ; B 17 -11 524 873 ;
+U -1 ; WX 509 ; N uni1EA5 ; G 593 ; B 17 -11 488 871 ;
+U -1 ; WX 592 ; N uni1EAB ; G 594 ; B 17 -11 571 830 ;
+U -1 ; WX 652 ; N uni1EA9 ; G 595 ; B 17 -11 633 872 ;
+U -1 ; WX 509 ; N uni1EAD ; G 596 ; B 17 -202 488 679 ;
+U -1 ; WX 530 ; N uni1EB1 ; G 597 ; B 17 -11 509 875 ;
+U -1 ; WX 547 ; N uni1EAF ; G 598 ; B 17 -11 526 873 ;
+U -1 ; WX 569 ; N uni1EB5 ; G 599 ; B 17 -11 548 832 ;
+U -1 ; WX 530 ; N uni1EB3 ; G 600 ; B 17 -11 509 916 ;
+U -1 ; WX 530 ; N uni1EB7 ; G 601 ; B 17 -202 509 677 ;
+U -1 ; WX 522 ; N uni1EBD ; G 602 ; B 31 -11 501 652 ;
+U -1 ; WX 479 ; N uni1EBB ; G 603 ; B 31 -11 460 745 ;
+U -1 ; WX 444 ; N uni1EB9 ; G 604 ; B 31 -202 412 441 ;
+U -1 ; WX 517 ; N uni1EC1 ; G 605 ; B 31 -11 496 873 ;
+U -1 ; WX 481 ; N uni1EBF ; G 606 ; B 31 -11 460 871 ;
+U -1 ; WX 564 ; N uni1EC5 ; G 607 ; B 31 -11 543 830 ;
+U -1 ; WX 624 ; N uni1EC3 ; G 608 ; B 31 -11 605 872 ;
+U -1 ; WX 481 ; N uni1EC7 ; G 609 ; B 31 -202 460 679 ;
+U -1 ; WX 367 ; N uni1EC9 ; G 610 ; B 49 -11 348 745 ;
+U -1 ; WX 405 ; N uni1ECA ; G 611 ; B -8 -202 384 653 ;
+U -1 ; WX 722 ; N uni1ECE ; G 612 ; B 60 -18 706 958 ;
+U -1 ; WX 722 ; N uni1ECC ; G 613 ; B 60 -202 706 666 ;
+U -1 ; WX 722 ; N uni1ED2 ; G 614 ; B 60 -18 706 1086 ;
+U -1 ; WX 722 ; N uni1ED0 ; G 615 ; B 60 -18 706 1084 ;
+U -1 ; WX 746 ; N uni1ED6 ; G 616 ; B 60 -18 725 1043 ;
+U -1 ; WX 806 ; N uni1ED4 ; G 617 ; B 60 -18 787 1085 ;
+U -1 ; WX 722 ; N uni1ED8 ; G 618 ; B 60 -202 706 892 ;
+U -1 ; WX 722 ; N Ohorn ; G 619 ; B 60 -18 703 749 ;
+U -1 ; WX 722 ; N uni1EDC ; G 620 ; B 60 -18 703 942 ;
+U -1 ; WX 722 ; N uni1EDA ; G 621 ; B 60 -18 703 909 ;
+U -1 ; WX 722 ; N uni1EE0 ; G 622 ; B 60 -18 703 881 ;
+U -1 ; WX 722 ; N uni1EDE ; G 623 ; B 60 -18 703 972 ;
+U -1 ; WX 722 ; N uni1EE2 ; G 624 ; B 60 -202 703 749 ;
+U -1 ; WX 786 ; N _d_625 ; G 625 ; B 102 -18 765 833 ;
+U -1 ; WX 786 ; N uni1EE6 ; G 626 ; B 102 -18 765 958 ;
+U -1 ; WX 786 ; N uni1EE4 ; G 627 ; B 102 -202 765 653 ;
+U -1 ; WX 829 ; N Uhorn ; G 628 ; B 102 -18 816 750 ;
+U -1 ; WX 829 ; N uni1EEA ; G 629 ; B 102 -18 816 942 ;
+U -1 ; WX 829 ; N uni1EE8 ; G 630 ; B 102 -18 816 909 ;
+U -1 ; WX 829 ; N uni1EEE ; G 631 ; B 102 -18 816 881 ;
+U -1 ; WX 829 ; N uni1EEC ; G 632 ; B 102 -18 816 972 ;
+U -1 ; WX 829 ; N uni1EF0 ; G 633 ; B 102 -202 816 750 ;
+U -1 ; WX 654 ; N Ygrave ; G 634 ; B 78 0 633 903 ;
+U -1 ; WX 654 ; N uni1EF8 ; G 635 ; B 78 0 633 861 ;
+U -1 ; WX 285 ; N uni1ECB ; G 636 ; B 21 -202 264 654 ;
+U -1 ; WX 507 ; N uni1ECF ; G 637 ; B 27 -11 488 745 ;
+U -1 ; WX 500 ; N uni1ECD ; G 638 ; B 27 -202 468 441 ;
+U -1 ; WX 545 ; N uni1ED3 ; G 639 ; B 27 -11 524 873 ;
+U -1 ; WX 509 ; N uni1ED1 ; G 640 ; B 27 -11 488 871 ;
+U -1 ; WX 592 ; N uni1ED7 ; G 641 ; B 27 -11 571 830 ;
+U -1 ; WX 652 ; N uni1ED5 ; G 642 ; B 27 -11 633 872 ;
+U -1 ; WX 509 ; N uni1ED9 ; G 643 ; B 27 -202 488 679 ;
+U -1 ; WX 541 ; N ohorn ; G 644 ; B 27 -11 528 526 ;
+U -1 ; WX 541 ; N uni1EDD ; G 645 ; B 27 -11 528 735 ;
+U -1 ; WX 541 ; N uni1EDB ; G 646 ; B 27 -11 528 698 ;
+U -1 ; WX 541 ; N uni1EE1 ; G 647 ; B 27 -11 528 675 ;
+U -1 ; WX 541 ; N uni1EDF ; G 648 ; B 27 -11 528 761 ;
+U -1 ; WX 541 ; N uni1EE3 ; G 649 ; B 27 -202 528 526 ;
+U -1 ; WX 500 ; N _d_650 ; G 650 ; B 42 -11 475 608 ;
+U -1 ; WX 500 ; N uni1EE7 ; G 651 ; B 42 -11 475 745 ;
+U -1 ; WX 500 ; N uni1EE5 ; G 652 ; B 42 -202 475 441 ;
+U -1 ; WX 592 ; N uhorn ; G 653 ; B 42 -11 579 528 ;
+U -1 ; WX 592 ; N uni1EEB ; G 654 ; B 42 -11 579 735 ;
+U -1 ; WX 592 ; N uni1EE9 ; G 655 ; B 42 -11 579 698 ;
+U -1 ; WX 592 ; N uni1EEF ; G 656 ; B 42 -11 579 675 ;
+U -1 ; WX 592 ; N uni1EED ; G 657 ; B 42 -11 579 761 ;
+U -1 ; WX 592 ; N uni1EF1 ; G 658 ; B 42 -202 579 528 ;
+U -1 ; WX 447 ; N ygrave ; G 659 ; B -24 -206 426 691 ;
+U -1 ; WX 493 ; N uni1EF9 ; G 660 ; B -24 -206 472 652 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Times-BoldItalic.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Times-BoldItalic.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Times-BoldItalic.ufm	(revision 2000)
@@ -0,0 +1,719 @@
+StartFontMetrics 4.1
+FontName Nimbus_Roman_No9_L_Medium_Italic
+FullName Nimbus Roman No9 L Medium Italic
+Notice 
+EncodingScheme FontSpecific
+FamilyName Nimbus Roman No9 L
+Weight Medium Italic
+Version 1.0
+Characters 661
+ItalicAngle -15.3
+Ascender 1146
+Descender -324
+UnderlineThickness 50
+UnderlinePosition -100
+IsFixedPitch false
+FontBBox -200 -324 1230 1146
+StartCharMetrics 700
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .null ; G 1 ; B 0 0 0 0 ;
+U -1 ; WX 405 ; N exclam ; G 2 ; B 67 -13 370 684 ;
+U -1 ; WX 571 ; N quotedbl ; G 3 ; B 136 398 536 685 ;
+U -1 ; WX 568 ; N numbersign ; G 4 ; B -33 0 533 700 ;
+U -1 ; WX 532 ; N dollar ; G 5 ; B -20 -100 497 733 ;
+U -1 ; WX 833 ; N percent ; G 6 ; B 39 -10 793 692 ;
+U -1 ; WX 778 ; N ampersand ; G 7 ; B 5 -19 699 682 ;
+U -1 ; WX 303 ; N quotesingle ; G 104 ; B 128 398 268 685 ;
+U -1 ; WX 379 ; N parenleft ; G 9 ; B 28 -179 344 685 ;
+U -1 ; WX 333 ; N parenright ; G 10 ; B -44 -179 271 685 ;
+U -1 ; WX 500 ; N asterisk ; G 11 ; B 65 252 456 685 ;
+U -1 ; WX 572 ; N plus ; G 12 ; B 33 0 537 506 ;
+U -1 ; WX 250 ; N comma ; G 13 ; B -60 -182 144 134 ;
+U -1 ; WX 333 ; N hyphen ; G 14 ; B 2 166 271 282 ;
+U -1 ; WX 250 ; N period ; G 15 ; B -9 -13 139 135 ;
+U -1 ; WX 377 ; N slash ; G 16 ; B -64 -18 342 685 ;
+U -1 ; WX 512 ; N zero ; G 17 ; B 17 -14 477 683 ;
+U -1 ; WX 500 ; N one ; G 18 ; B 5 0 419 683 ;
+U -1 ; WX 500 ; N two ; G 19 ; B -27 0 446 683 ;
+U -1 ; WX 500 ; N three ; G 20 ; B -15 -13 450 683 ;
+U -1 ; WX 538 ; N four ; G 21 ; B -15 0 503 683 ;
+U -1 ; WX 522 ; N five ; G 22 ; B -11 -13 487 669 ;
+U -1 ; WX 544 ; N six ; G 23 ; B 23 -15 509 679 ;
+U -1 ; WX 560 ; N seven ; G 24 ; B 52 0 525 669 ;
+U -1 ; WX 511 ; N eight ; G 25 ; B 3 -13 476 683 ;
+U -1 ; WX 510 ; N nine ; G 26 ; B -12 -10 475 683 ;
+U -1 ; WX 333 ; N colon ; G 27 ; B 23 -13 264 459 ;
+U -1 ; WX 333 ; N semicolon ; G 28 ; B -25 -183 264 459 ;
+U -1 ; WX 574 ; N less ; G 29 ; B 31 -12 539 518 ;
+U -1 ; WX 572 ; N equal ; G 30 ; B 33 107 537 399 ;
+U -1 ; WX 574 ; N greater ; G 31 ; B 31 -12 539 518 ;
+U -1 ; WX 505 ; N question ; G 32 ; B 79 -13 470 684 ;
+U -1 ; WX 832 ; N at ; G 33 ; B 63 -18 770 685 ;
+U -1 ; WX 667 ; N A ; G 34 ; B -67 0 593 683 ;
+U -1 ; WX 667 ; N B ; G 35 ; B -24 0 624 669 ;
+U -1 ; WX 712 ; N C ; G 36 ; B 32 -18 677 685 ;
+U -1 ; WX 722 ; N D ; G 37 ; B -46 0 685 669 ;
+U -1 ; WX 688 ; N E ; G 38 ; B -27 0 653 669 ;
+U -1 ; WX 695 ; N F ; G 39 ; B -13 0 660 669 ;
+U -1 ; WX 741 ; N G ; G 40 ; B 21 -18 706 685 ;
+U -1 ; WX 834 ; N H ; G 41 ; B -24 0 799 669 ;
+U -1 ; WX 441 ; N I ; G 42 ; B -32 0 406 669 ;
+U -1 ; WX 559 ; N J ; G 43 ; B -46 -99 524 669 ;
+U -1 ; WX 737 ; N K ; G 44 ; B -21 0 702 669 ;
+U -1 ; WX 625 ; N L ; G 45 ; B -22 0 590 669 ;
+U -1 ; WX 952 ; N M ; G 46 ; B -29 -12 917 669 ;
+U -1 ; WX 783 ; N N ; G 47 ; B -27 -15 748 669 ;
+U -1 ; WX 726 ; N O ; G 48 ; B 27 -18 691 685 ;
+U -1 ; WX 648 ; N P ; G 49 ; B -27 0 613 669 ;
+U -1 ; WX 726 ; N Q ; G 50 ; B 27 -208 691 685 ;
+U -1 ; WX 667 ; N R ; G 51 ; B -29 0 623 669 ;
+U -1 ; WX 561 ; N S ; G 52 ; B 2 -18 526 685 ;
+U -1 ; WX 685 ; N T ; G 53 ; B 50 0 650 669 ;
+U -1 ; WX 779 ; N U ; G 54 ; B 67 -18 744 669 ;
+U -1 ; WX 750 ; N V ; G 55 ; B 65 -18 715 669 ;
+U -1 ; WX 975 ; N W ; G 56 ; B 65 -18 940 669 ;
+U -1 ; WX 729 ; N X ; G 57 ; B -24 0 694 669 ;
+U -1 ; WX 694 ; N Y ; G 58 ; B 73 0 659 669 ;
+U -1 ; WX 625 ; N Z ; G 59 ; B -11 0 590 669 ;
+U -1 ; WX 397 ; N bracketleft ; G 60 ; B -37 -159 362 674 ;
+U -1 ; WX 314 ; N backslash ; G 61 ; B -1 -18 279 685 ;
+U -1 ; WX 378 ; N bracketright ; G 62 ; B -56 -157 343 674 ;
+U -1 ; WX 570 ; N asciicircum ; G 63 ; B 67 304 503 669 ;
+U -1 ; WX 535 ; N underscore ; G 64 ; B 0 -125 500 -75 ;
+U -1 ; WX 333 ; N grave ; G 124 ; B 85 516 297 697 ;
+U -1 ; WX 500 ; N a ; G 66 ; B -21 -14 455 462 ;
+U -1 ; WX 500 ; N b ; G 67 ; B -14 -13 444 699 ;
+U -1 ; WX 444 ; N c ; G 68 ; B -5 -13 392 462 ;
+U -1 ; WX 552 ; N d ; G 69 ; B -21 -13 517 699 ;
+U -1 ; WX 444 ; N e ; G 70 ; B 5 -13 398 462 ;
+U -1 ; WX 481 ; N f ; G 71 ; B -169 -205 446 698 ;
+U -1 ; WX 513 ; N g ; G 72 ; B -52 -203 478 462 ;
+U -1 ; WX 556 ; N h ; G 73 ; B -13 -9 498 699 ;
+U -1 ; WX 298 ; N i ; G 74 ; B 2 -9 263 685 ;
+U -1 ; WX 314 ; N j ; G 75 ; B -189 -207 279 685 ;
+U -1 ; WX 518 ; N k ; G 76 ; B -23 -8 483 699 ;
+U -1 ; WX 325 ; N l ; G 77 ; B 2 -9 290 699 ;
+U -1 ; WX 778 ; N m ; G 78 ; B -14 -9 722 462 ;
+U -1 ; WX 556 ; N n ; G 79 ; B -6 -9 493 462 ;
+U -1 ; WX 500 ; N o ; G 80 ; B -3 -13 441 462 ;
+U -1 ; WX 500 ; N p ; G 81 ; B -120 -205 446 462 ;
+U -1 ; WX 506 ; N q ; G 82 ; B 1 -205 471 462 ;
+U -1 ; WX 424 ; N r ; G 83 ; B -21 0 389 462 ;
+U -1 ; WX 389 ; N s ; G 84 ; B -19 -13 333 462 ;
+U -1 ; WX 316 ; N t ; G 85 ; B -11 -9 281 594 ;
+U -1 ; WX 556 ; N u ; G 86 ; B 15 -9 492 462 ;
+U -1 ; WX 444 ; N v ; G 87 ; B 16 -13 401 462 ;
+U -1 ; WX 667 ; N w ; G 88 ; B 16 -13 614 462 ;
+U -1 ; WX 504 ; N x ; G 89 ; B -46 -13 469 462 ;
+U -1 ; WX 444 ; N y ; G 90 ; B -94 -205 392 462 ;
+U -1 ; WX 403 ; N z ; G 91 ; B -43 -78 368 449 ;
+U -1 ; WX 471 ; N braceleft ; G 92 ; B 5 -187 436 686 ;
+U -1 ; WX 220 ; N bar ; G 93 ; B 66 -18 154 685 ;
+U -1 ; WX 348 ; N braceright ; G 94 ; B -129 -187 302 686 ;
+U -1 ; WX 570 ; N asciitilde ; G 95 ; B 54 175 516 331 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 701 ; N Euro ; G 289 ; B 53 -5 666 689 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N quotesinglbase ; G 117 ; B -5 -182 199 134 ;
+U -1 ; WX 572 ; N florin ; G 101 ; B -87 -156 537 707 ;
+U -1 ; WX 500 ; N quotedblbase ; G 118 ; B -57 -182 403 134 ;
+U -1 ; WX 1000 ; N ellipsis ; G 121 ; B 40 -13 852 135 ;
+U -1 ; WX 529 ; N dagger ; G 112 ; B 91 -145 494 685 ;
+U -1 ; WX 528 ; N daggerdbl ; G 113 ; B 10 -139 493 685 ;
+U -1 ; WX 402 ; N circumflex ; G 126 ; B 40 516 367 690 ;
+U -1 ; WX 1031 ; N perthousand ; G 122 ; B 7 -29 996 706 ;
+U -1 ; WX 561 ; N Scaron ; G 189 ; B 2 -18 526 897 ;
+U -1 ; WX 338 ; N guilsinglleft ; G 107 ; B 32 32 303 415 ;
+U -1 ; WX 981 ; N OE ; G 142 ; B 23 -9 946 677 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 625 ; N Zcaron ; G 200 ; B -11 0 590 897 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 367 ; N quoteleft ; G 65 ; B 128 369 332 685 ;
+U -1 ; WX 337 ; N quoteright ; G 8 ; B 98 369 302 685 ;
+U -1 ; WX 548 ; N quotedblleft ; G 105 ; B 53 369 513 685 ;
+U -1 ; WX 548 ; N quotedblright ; G 119 ; B 53 369 513 685 ;
+U -1 ; WX 385 ; N bullet ; G 116 ; B 0 175 350 525 ;
+U -1 ; WX 512 ; N endash ; G 111 ; B -40 178 477 269 ;
+U -1 ; WX 1012 ; N emdash ; G 137 ; B -40 178 977 269 ;
+U -1 ; WX 442 ; N tilde ; G 127 ; B 48 536 407 655 ;
+U -1 ; WX 1003 ; N trademark ; G 297 ; B 32 263 968 669 ;
+U -1 ; WX 474 ; N scaron ; G 253 ; B -19 -13 439 690 ;
+U -1 ; WX 333 ; N guilsinglright ; G 108 ; B 10 32 281 415 ;
+U -1 ; WX 722 ; N oe ; G 148 ; B 6 -13 674 462 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 459 ; N zcaron ; G 264 ; B -43 -78 424 690 ;
+U -1 ; WX 694 ; N Ydieresis ; G 204 ; B 73 0 659 862 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 389 ; N exclamdown ; G 96 ; B 19 -205 320 494 ;
+U -1 ; WX 500 ; N cent ; G 97 ; B 42 -143 439 576 ;
+U -1 ; WX 545 ; N sterling ; G 98 ; B -32 -12 510 683 ;
+U -1 ; WX 561 ; N currency ; G 103 ; B -26 34 526 586 ;
+U -1 ; WX 663 ; N yen ; G 100 ; B 33 0 628 669 ;
+U -1 ; WX 220 ; N brokenbar ; G 314 ; B 66 -18 154 685 ;
+U -1 ; WX 500 ; N section ; G 102 ; B 36 -143 459 685 ;
+U -1 ; WX 432 ; N dieresis ; G 131 ; B 55 525 397 655 ;
+U -1 ; WX 753 ; N copyright ; G 303 ; B 30 -18 718 685 ;
+U -1 ; WX 365 ; N ordfeminine ; G 139 ; B 16 399 330 685 ;
+U -1 ; WX 503 ; N guillemotleft ; G 106 ; B 12 32 468 415 ;
+U -1 ; WX 606 ; N logicalnot ; G 311 ; B 51 108 555 399 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 753 ; N registered ; G 304 ; B 30 -18 718 685 ;
+U -1 ; WX 428 ; N macron ; G 128 ; B 51 553 393 623 ;
+U -1 ; WX 404 ; N degree ; G 293 ; B 83 397 369 683 ;
+U -1 ; WX 572 ; N plusminus ; G 298 ; B 33 0 537 568 ;
+U -1 ; WX 348 ; N twosuperior ; G 291 ; B 2 274 313 683 ;
+U -1 ; WX 356 ; N threesuperior ; G 292 ; B 17 265 321 683 ;
+U -1 ; WX 414 ; N acute ; G 125 ; B 139 516 379 697 ;
+U -1 ; WX 576 ; N mu ; G 315 ; B -60 -207 516 449 ;
+U -1 ; WX 597 ; N paragraph ; G 115 ; B -57 -193 562 669 ;
+U -1 ; WX 250 ; N periodcentered ; G 114 ; B 51 257 199 405 ;
+U -1 ; WX 333 ; N cedilla ; G 133 ; B -80 -218 156 5 ;
+U -1 ; WX 336 ; N onesuperior ; G 290 ; B 30 274 301 683 ;
+U -1 ; WX 382 ; N ordmasculine ; G 143 ; B 56 400 350 685 ;
+U -1 ; WX 503 ; N guillemotright ; G 120 ; B 12 32 468 415 ;
+U -1 ; WX 756 ; N onequarter ; G 300 ; B 7 -14 721 683 ;
+U -1 ; WX 758 ; N onehalf ; G 299 ; B -9 -14 723 683 ;
+U -1 ; WX 761 ; N threequarters ; G 301 ; B 7 -14 726 683 ;
+U -1 ; WX 500 ; N questiondown ; G 123 ; B 30 -205 421 492 ;
+U -1 ; WX 667 ; N Agrave ; G 152 ; B -67 0 593 904 ;
+U -1 ; WX 667 ; N Aacute ; G 151 ; B -67 0 593 904 ;
+U -1 ; WX 667 ; N Acircumflex ; G 153 ; B -67 0 593 897 ;
+U -1 ; WX 667 ; N Atilde ; G 155 ; B -67 0 593 862 ;
+U -1 ; WX 667 ; N Adieresis ; G 150 ; B -67 0 593 862 ;
+U -1 ; WX 667 ; N Aring ; G 156 ; B -67 0 593 950 ;
+U -1 ; WX 953 ; N AE ; G 138 ; B -64 0 918 669 ;
+U -1 ; WX 712 ; N Ccedilla ; G 158 ; B 32 -218 677 685 ;
+U -1 ; WX 688 ; N Egrave ; G 164 ; B -27 0 653 904 ;
+U -1 ; WX 688 ; N Eacute ; G 163 ; B -27 0 653 904 ;
+U -1 ; WX 688 ; N Ecircumflex ; G 165 ; B -27 0 653 897 ;
+U -1 ; WX 688 ; N Edieresis ; G 162 ; B -27 0 653 862 ;
+U -1 ; WX 441 ; N Igrave ; G 172 ; B -32 0 406 904 ;
+U -1 ; WX 442 ; N Iacute ; G 171 ; B -32 0 407 907 ;
+U -1 ; WX 455 ; N Icircumflex ; G 173 ; B -32 0 420 897 ;
+U -1 ; WX 480 ; N Idieresis ; G 170 ; B -32 0 445 862 ;
+U -1 ; WX 735 ; N Eth ; G 283 ; B -31 0 700 669 ;
+U -1 ; WX 783 ; N Ntilde ; G 179 ; B -27 -15 748 862 ;
+U -1 ; WX 726 ; N Ograve ; G 182 ; B 27 -18 691 904 ;
+U -1 ; WX 726 ; N Oacute ; G 181 ; B 27 -18 691 904 ;
+U -1 ; WX 726 ; N Ocircumflex ; G 183 ; B 27 -18 691 897 ;
+U -1 ; WX 726 ; N Otilde ; G 184 ; B 27 -18 691 862 ;
+U -1 ; WX 726 ; N Odieresis ; G 180 ; B 27 -18 691 862 ;
+U -1 ; WX 570 ; N multiply ; G 295 ; B 48 16 522 490 ;
+U -1 ; WX 726 ; N Oslash ; G 141 ; B 27 -125 691 764 ;
+U -1 ; WX 779 ; N Ugrave ; G 194 ; B 67 -18 744 904 ;
+U -1 ; WX 779 ; N Uacute ; G 193 ; B 67 -18 744 904 ;
+U -1 ; WX 779 ; N Ucircumflex ; G 195 ; B 67 -18 744 897 ;
+U -1 ; WX 779 ; N Udieresis ; G 192 ; B 67 -18 744 862 ;
+U -1 ; WX 694 ; N Yacute ; G 198 ; B 73 0 659 904 ;
+U -1 ; WX 611 ; N Thorn ; G 285 ; B -27 0 574 669 ;
+U -1 ; WX 508 ; N germandbls ; G 149 ; B -200 -200 473 705 ;
+U -1 ; WX 500 ; N agrave ; G 218 ; B -21 -14 455 697 ;
+U -1 ; WX 500 ; N aacute ; G 217 ; B -21 -14 463 697 ;
+U -1 ; WX 500 ; N acircumflex ; G 219 ; B -21 -14 455 690 ;
+U -1 ; WX 526 ; N atilde ; G 221 ; B -21 -14 491 655 ;
+U -1 ; WX 506 ; N adieresis ; G 216 ; B -21 -14 471 655 ;
+U -1 ; WX 500 ; N aring ; G 222 ; B -21 -14 455 754 ;
+U -1 ; WX 722 ; N ae ; G 144 ; B -5 -13 673 462 ;
+U -1 ; WX 444 ; N ccedilla ; G 226 ; B -24 -218 392 462 ;
+U -1 ; WX 444 ; N egrave ; G 230 ; B 5 -13 398 697 ;
+U -1 ; WX 470 ; N eacute ; G 229 ; B 5 -13 435 697 ;
+U -1 ; WX 458 ; N ecircumflex ; G 231 ; B 5 -13 423 690 ;
+U -1 ; WX 478 ; N edieresis ; G 228 ; B 5 -13 443 655 ;
+U -1 ; WX 295 ; N igrave ; G 238 ; B 2 -9 260 697 ;
+U -1 ; WX 387 ; N iacute ; G 237 ; B 2 -9 352 697 ;
+U -1 ; WX 360 ; N icircumflex ; G 239 ; B -2 -9 325 690 ;
+U -1 ; WX 395 ; N idieresis ; G 236 ; B 2 -9 360 655 ;
+U -1 ; WX 500 ; N eth ; G 287 ; B -3 -13 454 699 ;
+U -1 ; WX 556 ; N ntilde ; G 244 ; B -6 -9 504 655 ;
+U -1 ; WX 500 ; N ograve ; G 247 ; B -3 -13 441 697 ;
+U -1 ; WX 500 ; N oacute ; G 246 ; B -3 -13 463 697 ;
+U -1 ; WX 500 ; N ocircumflex ; G 248 ; B -3 -13 451 690 ;
+U -1 ; WX 526 ; N otilde ; G 249 ; B -3 -13 491 655 ;
+U -1 ; WX 501 ; N odieresis ; G 245 ; B -3 -13 466 655 ;
+U -1 ; WX 572 ; N divide ; G 296 ; B 33 -29 537 535 ;
+U -1 ; WX 500 ; N oslash ; G 147 ; B -3 -119 441 560 ;
+U -1 ; WX 556 ; N ugrave ; G 258 ; B 15 -9 492 697 ;
+U -1 ; WX 556 ; N uacute ; G 257 ; B 15 -9 492 697 ;
+U -1 ; WX 556 ; N ucircumflex ; G 259 ; B 15 -9 492 690 ;
+U -1 ; WX 556 ; N udieresis ; G 256 ; B 15 -9 494 655 ;
+U -1 ; WX 470 ; N yacute ; G 262 ; B -94 -205 435 697 ;
+U -1 ; WX 500 ; N thorn ; G 288 ; B -120 -205 446 699 ;
+U -1 ; WX 473 ; N ydieresis ; G 266 ; B -94 -205 438 655 ;
+U -1 ; WX 359 ; N fraction ; G 99 ; B -169 -14 324 683 ;
+U -1 ; WX 556 ; N fi ; G 109 ; B -188 -205 514 703 ;
+U -1 ; WX 588 ; N fl ; G 110 ; B -186 -205 553 704 ;
+U -1 ; WX 422 ; N breve ; G 129 ; B 71 516 387 678 ;
+U -1 ; WX 333 ; N dotaccent ; G 130 ; B 163 525 293 655 ;
+U -1 ; WX 375 ; N ring ; G 132 ; B 127 540 340 754 ;
+U -1 ; WX 533 ; N hungarumlaut ; G 134 ; B 69 516 498 697 ;
+U -1 ; WX 333 ; N ogonek ; G 135 ; B -40 -173 189 44 ;
+U -1 ; WX 446 ; N caron ; G 136 ; B 79 516 411 690 ;
+U -1 ; WX 625 ; N Lslash ; G 140 ; B -22 0 590 669 ;
+U -1 ; WX 278 ; N dotlessi ; G 145 ; B 2 -9 238 462 ;
+U -1 ; WX 336 ; N lslash ; G 146 ; B -13 -9 301 699 ;
+U -1 ; WX 667 ; N Abreve ; G 154 ; B -67 0 593 888 ;
+U -1 ; WX 764 ; N Aogonek ; G 157 ; B -67 -173 729 683 ;
+U -1 ; WX 712 ; N Cacute ; G 159 ; B 32 -18 677 907 ;
+U -1 ; WX 712 ; N Ccaron ; G 160 ; B 32 -18 677 900 ;
+U -1 ; WX 722 ; N Dcaron ; G 161 ; B -46 0 685 900 ;
+U -1 ; WX 688 ; N Ecaron ; G 166 ; B -27 0 653 900 ;
+U -1 ; WX 688 ; N Edotaccent ; G 167 ; B -27 0 653 865 ;
+U -1 ; WX 702 ; N Eogonek ; G 168 ; B -27 -173 667 669 ;
+U -1 ; WX 741 ; N Gbreve ; G 169 ; B 21 -18 706 888 ;
+U -1 ; WX 441 ; N Idotaccent ; G 174 ; B -32 0 406 865 ;
+U -1 ; WX 625 ; N Lacute ; G 175 ; B -22 0 590 907 ;
+U -1 ; WX 686 ; N Lcaron ; G 176 ; B -22 0 651 685 ;
+U -1 ; WX 783 ; N Nacute ; G 177 ; B -27 -15 748 907 ;
+U -1 ; WX 783 ; N Ncaron ; G 178 ; B -27 -15 748 900 ;
+U -1 ; WX 728 ; N Ohungarumlaut ; G 185 ; B 27 -18 693 907 ;
+U -1 ; WX 667 ; N Racute ; G 186 ; B -29 0 623 907 ;
+U -1 ; WX 667 ; N Rcaron ; G 187 ; B -29 0 623 900 ;
+U -1 ; WX 561 ; N Sacute ; G 188 ; B 2 -18 526 907 ;
+U -1 ; WX 561 ; N Scedilla ; G 190 ; B 2 -218 526 685 ;
+U -1 ; WX 685 ; N Tcaron ; G 191 ; B 50 0 650 900 ;
+U -1 ; WX 779 ; N Uring ; G 196 ; B 67 -18 744 964 ;
+U -1 ; WX 779 ; N Uhungarumlaut ; G 197 ; B 67 -18 744 907 ;
+U -1 ; WX 625 ; N Zacute ; G 199 ; B -11 0 590 907 ;
+U -1 ; WX 625 ; N Zdotaccent ; G 201 ; B -11 0 590 865 ;
+U -1 ; WX 667 ; N Amacron ; G 202 ; B -67 0 593 833 ;
+U -1 ; WX 685 ; N Tcommaaccent ; G 203 ; B 50 -324 650 669 ;
+U -1 ; WX 688 ; N Emacron ; G 205 ; B -27 0 653 833 ;
+U -1 ; WX 496 ; N Imacron ; G 206 ; B -32 0 461 833 ;
+U -1 ; WX 441 ; N Iogonek ; G 207 ; B -32 -173 406 669 ;
+U -1 ; WX 737 ; N Kcommaaccent ; G 208 ; B -21 -324 702 669 ;
+U -1 ; WX 625 ; N Lcommaaccent ; G 209 ; B -22 -324 590 669 ;
+U -1 ; WX 783 ; N Ncommaaccent ; G 210 ; B -27 -324 748 669 ;
+U -1 ; WX 726 ; N Omacron ; G 211 ; B 27 -18 691 833 ;
+U -1 ; WX 667 ; N Rcommaaccent ; G 212 ; B -29 -324 623 669 ;
+U -1 ; WX 741 ; N Gcommaaccent ; G 213 ; B 21 -324 706 685 ;
+U -1 ; WX 779 ; N Umacron ; G 214 ; B 67 -18 744 833 ;
+U -1 ; WX 779 ; N Uogonek ; G 215 ; B 67 -173 744 669 ;
+U -1 ; WX 505 ; N abreve ; G 220 ; B -21 -14 470 678 ;
+U -1 ; WX 535 ; N aogonek ; G 223 ; B -21 -173 500 462 ;
+U -1 ; WX 479 ; N cacute ; G 224 ; B -5 -13 444 697 ;
+U -1 ; WX 503 ; N ccaron ; G 225 ; B -5 -13 468 690 ;
+U -1 ; WX 699 ; N dcaron ; G 227 ; B -21 -13 664 699 ;
+U -1 ; WX 502 ; N ecaron ; G 232 ; B 5 -13 467 690 ;
+U -1 ; WX 444 ; N edotaccent ; G 233 ; B 5 -13 398 655 ;
+U -1 ; WX 444 ; N eogonek ; G 234 ; B 5 -173 404 462 ;
+U -1 ; WX 513 ; N gbreve ; G 235 ; B -52 -203 478 678 ;
+U -1 ; WX 427 ; N lacute ; G 240 ; B 2 -9 392 907 ;
+U -1 ; WX 481 ; N lcaron ; G 241 ; B 2 -9 446 699 ;
+U -1 ; WX 556 ; N nacute ; G 242 ; B -6 -9 493 697 ;
+U -1 ; WX 558 ; N ncaron ; G 243 ; B -6 -9 523 690 ;
+U -1 ; WX 617 ; N ohungarumlaut ; G 250 ; B -3 -13 582 697 ;
+U -1 ; WX 442 ; N racute ; G 251 ; B -21 0 407 697 ;
+U -1 ; WX 442 ; N sacute ; G 252 ; B -19 -13 407 697 ;
+U -1 ; WX 389 ; N scommaaccent ; G 254 ; B -26 -324 333 462 ;
+U -1 ; WX 444 ; N tcaron ; G 255 ; B -11 -9 409 685 ;
+U -1 ; WX 556 ; N uring ; G 260 ; B 15 -9 492 754 ;
+U -1 ; WX 645 ; N uhungarumlaut ; G 261 ; B 15 -9 610 697 ;
+U -1 ; WX 442 ; N zacute ; G 263 ; B -43 -78 407 697 ;
+U -1 ; WX 403 ; N zdotaccent ; G 265 ; B -43 -78 368 655 ;
+U -1 ; WX 316 ; N tcommaaccent ; G 267 ; B -81 -324 281 594 ;
+U -1 ; WX 512 ; N amacron ; G 268 ; B -21 -14 477 623 ;
+U -1 ; WX 484 ; N emacron ; G 269 ; B 5 -13 449 623 ;
+U -1 ; WX 401 ; N imacron ; G 270 ; B 2 -9 366 623 ;
+U -1 ; WX 518 ; N kcommaaccent ; G 271 ; B -23 -324 483 699 ;
+U -1 ; WX 325 ; N lcommaaccent ; G 272 ; B -81 -324 290 699 ;
+U -1 ; WX 556 ; N ncommaaccent ; G 273 ; B -6 -324 493 462 ;
+U -1 ; WX 512 ; N omacron ; G 274 ; B -3 -13 477 623 ;
+U -1 ; WX 424 ; N rcommaaccent ; G 275 ; B -80 -324 389 462 ;
+U -1 ; WX 556 ; N umacron ; G 276 ; B 15 -9 505 623 ;
+U -1 ; WX 591 ; N uogonek ; G 277 ; B 15 -173 556 462 ;
+U -1 ; WX 474 ; N rcaron ; G 278 ; B -21 0 439 690 ;
+U -1 ; WX 389 ; N scedilla ; G 279 ; B -40 -218 333 462 ;
+U -1 ; WX 513 ; N gcommaaccent ; G 280 ; B -52 -203 478 765 ;
+U -1 ; WX 313 ; N iogonek ; G 281 ; B 2 -173 278 685 ;
+U -1 ; WX 561 ; N Scommaaccent ; G 282 ; B 2 -324 526 685 ;
+U -1 ; WX 735 ; N Dcroat ; G 284 ; B -31 0 700 669 ;
+U -1 ; WX 575 ; N dcroat ; G 286 ; B -21 -13 540 699 ;
+U -1 ; WX 606 ; N minus ; G 294 ; B 51 209 555 297 ;
+U -1 ; WX 333 ; N commaaccent ; G 302 ; B -54 -324 130 -40 ;
+U -1 ; WX 501 ; N lozenge ; G 305 ; B 18 0 466 740 ;
+U -1 ; WX 643 ; N Delta ; G 306 ; B 6 0 608 688 ;
+U -1 ; WX 572 ; N notequal ; G 307 ; B 33 -13 537 519 ;
+U -1 ; WX 570 ; N radical ; G 308 ; B -17 -35 535 916 ;
+U -1 ; WX 574 ; N lessequal ; G 309 ; B 31 0 539 642 ;
+U -1 ; WX 574 ; N greaterequal ; G 310 ; B 31 0 539 642 ;
+U -1 ; WX 730 ; N summation ; G 312 ; B 14 -123 695 752 ;
+U -1 ; WX 507 ; N partialdiff ; G 313 ; B 16 -20 472 743 ;
+U -1 ; WX 667 ; N afii10017 ; G 316 ; B -67 0 593 683 ;
+U -1 ; WX 761 ; N afii10018 ; G 317 ; B -24 0 726 669 ;
+U -1 ; WX 667 ; N afii10019 ; G 318 ; B -24 0 624 669 ;
+U -1 ; WX 684 ; N afii10020 ; G 319 ; B -24 0 649 669 ;
+U -1 ; WX 920 ; N afii10021 ; G 320 ; B -74 -167 885 669 ;
+U -1 ; WX 691 ; N afii10022 ; G 321 ; B -24 0 656 669 ;
+U -1 ; WX 691 ; N afii10023 ; G 322 ; B -24 0 656 862 ;
+U -1 ; WX 1167 ; N afii10024 ; G 323 ; B -24 0 1142 686 ;
+U -1 ; WX 657 ; N afii10025 ; G 324 ; B -18 -19 614 692 ;
+U -1 ; WX 926 ; N afii10026 ; G 325 ; B -24 0 891 669 ;
+U -1 ; WX 926 ; N afii10027 ; G 326 ; B -24 0 891 888 ;
+U -1 ; WX 831 ; N afii10028 ; G 327 ; B -24 0 806 686 ;
+U -1 ; WX 911 ; N afii10029 ; G 328 ; B -42 -14 876 669 ;
+U -1 ; WX 952 ; N afii10030 ; G 329 ; B -29 -12 917 669 ;
+U -1 ; WX 834 ; N afii10031 ; G 330 ; B -24 0 799 669 ;
+U -1 ; WX 726 ; N afii10032 ; G 331 ; B 27 -18 691 685 ;
+U -1 ; WX 925 ; N afii10033 ; G 332 ; B -24 0 890 669 ;
+U -1 ; WX 651 ; N afii10034 ; G 333 ; B -24 0 616 669 ;
+U -1 ; WX 712 ; N afii10035 ; G 334 ; B 32 -18 677 685 ;
+U -1 ; WX 685 ; N afii10036 ; G 335 ; B 50 0 650 669 ;
+U -1 ; WX 828 ; N afii10037 ; G 336 ; B -1 -14 793 669 ;
+U -1 ; WX 848 ; N afii10038 ; G 337 ; B -28 0 865 669 ;
+U -1 ; WX 729 ; N afii10039 ; G 338 ; B -24 0 694 669 ;
+U -1 ; WX 925 ; N afii10040 ; G 339 ; B -24 -167 890 669 ;
+U -1 ; WX 879 ; N afii10041 ; G 340 ; B 86 0 844 669 ;
+U -1 ; WX 1264 ; N afii10042 ; G 341 ; B -24 0 1229 669 ;
+U -1 ; WX 1265 ; N afii10043 ; G 342 ; B -24 -167 1230 669 ;
+U -1 ; WX 796 ; N afii10044 ; G 343 ; B 50 0 714 669 ;
+U -1 ; WX 1116 ; N afii10045 ; G 344 ; B -24 0 1081 670 ;
+U -1 ; WX 712 ; N afii10046 ; G 345 ; B -24 0 616 669 ;
+U -1 ; WX 736 ; N afii10047 ; G 346 ; B -8 -19 742 691 ;
+U -1 ; WX 1195 ; N afii10048 ; G 347 ; B -24 -18 1086 685 ;
+U -1 ; WX 877 ; N afii10049 ; G 348 ; B -24 0 842 669 ;
+U -1 ; WX 500 ; N afii10065 ; G 349 ; B -21 -14 455 462 ;
+U -1 ; WX 591 ; N afii10066 ; G 350 ; B -44 -14 556 690 ;
+U -1 ; WX 444 ; N afii10067 ; G 351 ; B 0 -13 388 462 ;
+U -1 ; WX 389 ; N afii10068 ; G 352 ; B -21 -13 373 462 ;
+U -1 ; WX 549 ; N afii10069 ; G 353 ; B -31 -14 583 675 ;
+U -1 ; WX 444 ; N afii10070 ; G 354 ; B 5 -13 398 462 ;
+U -1 ; WX 478 ; N afii10071 ; G 355 ; B 5 -13 443 655 ;
+U -1 ; WX 1051 ; N afii10072 ; G 356 ; B 3 -13 999 462 ;
+U -1 ; WX 439 ; N afii10073 ; G 357 ; B -12 -14 400 473 ;
+U -1 ; WX 556 ; N afii10074 ; G 358 ; B 15 -9 492 462 ;
+U -1 ; WX 556 ; N afii10075 ; G 359 ; B 15 -9 501 678 ;
+U -1 ; WX 549 ; N afii10076 ; G 360 ; B -6 0 514 470 ;
+U -1 ; WX 637 ; N afii10077 ; G 361 ; B -3 -10 573 449 ;
+U -1 ; WX 859 ; N afii10078 ; G 362 ; B -3 -18 795 449 ;
+U -1 ; WX 560 ; N afii10079 ; G 363 ; B -6 -9 496 461 ;
+U -1 ; WX 500 ; N afii10080 ; G 364 ; B -3 -13 441 462 ;
+U -1 ; WX 556 ; N afii10081 ; G 365 ; B -6 -9 493 462 ;
+U -1 ; WX 500 ; N afii10082 ; G 366 ; B -120 -205 446 462 ;
+U -1 ; WX 444 ; N afii10083 ; G 367 ; B -5 -13 392 462 ;
+U -1 ; WX 778 ; N afii10084 ; G 368 ; B -14 -9 722 462 ;
+U -1 ; WX 444 ; N afii10085 ; G 369 ; B -94 -205 392 462 ;
+U -1 ; WX 764 ; N afii10086 ; G 370 ; B 1 -205 710 698 ;
+U -1 ; WX 504 ; N afii10087 ; G 371 ; B -46 -13 469 462 ;
+U -1 ; WX 556 ; N afii10088 ; G 372 ; B 15 -122 492 462 ;
+U -1 ; WX 556 ; N afii10089 ; G 373 ; B 34 -9 492 462 ;
+U -1 ; WX 806 ; N afii10090 ; G 374 ; B 15 -9 742 462 ;
+U -1 ; WX 806 ; N afii10091 ; G 375 ; B 15 -122 742 462 ;
+U -1 ; WX 591 ; N afii10092 ; G 376 ; B 19 -13 544 504 ;
+U -1 ; WX 744 ; N afii10093 ; G 377 ; B -28 -13 680 462 ;
+U -1 ; WX 444 ; N afii10094 ; G 378 ; B 15 -13 395 461 ;
+U -1 ; WX 451 ; N afii10095 ; G 379 ; B -5 -13 392 462 ;
+U -1 ; WX 765 ; N afii10096 ; G 380 ; B -6 -13 706 462 ;
+U -1 ; WX 594 ; N afii10097 ; G 381 ; B -3 -10 530 449 ;
+U -1 ; WX 691 ; N uni0400 ; G 382 ; B -24 0 656 900 ;
+U -1 ; WX 793 ; N afii10051 ; G 383 ; B 50 -148 788 669 ;
+U -1 ; WX 695 ; N afii10052 ; G 384 ; B -13 0 660 937 ;
+U -1 ; WX 800 ; N afii10053 ; G 385 ; B -8 -19 765 691 ;
+U -1 ; WX 561 ; N afii10054 ; G 386 ; B 2 -18 526 685 ;
+U -1 ; WX 449 ; N afii10055 ; G 387 ; B -24 0 414 669 ;
+U -1 ; WX 488 ; N afii10056 ; G 388 ; B -24 0 453 862 ;
+U -1 ; WX 559 ; N afii10057 ; G 389 ; B -46 -99 524 669 ;
+U -1 ; WX 1032 ; N afii10058 ; G 390 ; B -42 -14 997 669 ;
+U -1 ; WX 961 ; N afii10059 ; G 391 ; B -24 0 926 669 ;
+U -1 ; WX 806 ; N afii10060 ; G 392 ; B 50 0 789 669 ;
+U -1 ; WX 791 ; N afii10061 ; G 393 ; B -64 0 766 937 ;
+U -1 ; WX 926 ; N uni040D ; G 394 ; B -24 0 891 900 ;
+U -1 ; WX 843 ; N afii10062 ; G 395 ; B -1 -14 808 888 ;
+U -1 ; WX 925 ; N afii10145 ; G 396 ; B -24 -228 890 669 ;
+U -1 ; WX 444 ; N uni0450 ; G 397 ; B 5 -13 405 693 ;
+U -1 ; WX 512 ; N afii10099 ; G 398 ; B -13 -203 494 699 ;
+U -1 ; WX 521 ; N afii10100 ; G 399 ; B -42 0 486 697 ;
+U -1 ; WX 491 ; N afii10101 ; G 400 ; B -15 -14 469 473 ;
+U -1 ; WX 389 ; N afii10102 ; G 401 ; B -19 -13 333 462 ;
+U -1 ; WX 298 ; N afii10103 ; G 402 ; B 2 -9 263 685 ;
+U -1 ; WX 417 ; N afii10104 ; G 403 ; B 2 -9 382 642 ;
+U -1 ; WX 314 ; N afii10105 ; G 404 ; B -189 -207 279 685 ;
+U -1 ; WX 785 ; N afii10106 ; G 405 ; B -3 -13 750 449 ;
+U -1 ; WX 706 ; N afii10107 ; G 406 ; B -6 -13 671 461 ;
+U -1 ; WX 556 ; N afii10108 ; G 407 ; B -13 -9 498 699 ;
+U -1 ; WX 558 ; N afii10109 ; G 408 ; B -6 0 514 697 ;
+U -1 ; WX 556 ; N uni045D ; G 409 ; B 15 -9 492 693 ;
+U -1 ; WX 473 ; N afii10110 ; G 410 ; B -94 -205 438 678 ;
+U -1 ; WX 556 ; N afii10193 ; G 411 ; B 15 -122 492 462 ;
+U -1 ; WX 712 ; N uni048C ; G 412 ; B -24 0 630 669 ;
+U -1 ; WX 444 ; N uni048D ; G 413 ; B -28 -13 395 461 ;
+U -1 ; WX 651 ; N uni048E ; G 414 ; B -24 0 616 669 ;
+U -1 ; WX 500 ; N uni048F ; G 415 ; B -120 -205 446 462 ;
+U -1 ; WX 733 ; N afii10050 ; G 416 ; B -99 0 698 842 ;
+U -1 ; WX 543 ; N afii10098 ; G 417 ; B -57 0 508 571 ;
+U -1 ; WX 695 ; N uni0492 ; G 418 ; B -13 0 660 669 ;
+U -1 ; WX 389 ; N uni0493 ; G 419 ; B -21 -13 373 462 ;
+U -1 ; WX 697 ; N uni0494 ; G 420 ; B -13 -165 662 669 ;
+U -1 ; WX 521 ; N uni0495 ; G 421 ; B -42 0 486 461 ;
+U -1 ; WX 1167 ; N uni0496 ; G 422 ; B -24 -167 1142 686 ;
+U -1 ; WX 1051 ; N uni0497 ; G 423 ; B 3 -122 999 462 ;
+U -1 ; WX 657 ; N uni0498 ; G 424 ; B -18 -19 614 692 ;
+U -1 ; WX 439 ; N uni0499 ; G 425 ; B -12 -14 400 473 ;
+U -1 ; WX 831 ; N uni049A ; G 426 ; B -24 -167 806 686 ;
+U -1 ; WX 549 ; N uni049B ; G 427 ; B -6 -122 514 470 ;
+U -1 ; WX 831 ; N uni049C ; G 428 ; B -24 0 806 686 ;
+U -1 ; WX 549 ; N uni049D ; G 429 ; B -6 0 514 470 ;
+U -1 ; WX 831 ; N uni049E ; G 430 ; B -24 0 806 686 ;
+U -1 ; WX 549 ; N uni049F ; G 431 ; B -6 0 514 470 ;
+U -1 ; WX 831 ; N uni04A0 ; G 432 ; B -24 0 806 686 ;
+U -1 ; WX 549 ; N uni04A1 ; G 433 ; B -6 0 514 470 ;
+U -1 ; WX 834 ; N uni04A2 ; G 434 ; B -24 -167 799 669 ;
+U -1 ; WX 560 ; N uni04A3 ; G 435 ; B -6 -122 496 461 ;
+U -1 ; WX 834 ; N uni04A4 ; G 436 ; B -24 0 799 669 ;
+U -1 ; WX 560 ; N uni04A5 ; G 437 ; B -6 -9 496 461 ;
+U -1 ; WX 1134 ; N uni04A6 ; G 438 ; B -24 -165 1099 669 ;
+U -1 ; WX 556 ; N uni04A7 ; G 439 ; B -6 -9 493 462 ;
+U -1 ; WX 712 ; N uni04A8 ; G 440 ; B 32 -18 677 685 ;
+U -1 ; WX 444 ; N uni04A9 ; G 441 ; B -5 -13 392 462 ;
+U -1 ; WX 712 ; N uni04AA ; G 442 ; B 32 -18 677 685 ;
+U -1 ; WX 444 ; N uni04AB ; G 443 ; B -5 -13 392 462 ;
+U -1 ; WX 685 ; N uni04AC ; G 444 ; B 50 -167 650 669 ;
+U -1 ; WX 566 ; N uni04AD ; G 445 ; B 36 -122 531 461 ;
+U -1 ; WX 694 ; N uni04AE ; G 446 ; B 73 0 659 669 ;
+U -1 ; WX 634 ; N uni04AF ; G 447 ; B 13 -220 599 449 ;
+U -1 ; WX 694 ; N uni04B0 ; G 448 ; B 71 0 659 669 ;
+U -1 ; WX 634 ; N uni04B1 ; G 449 ; B 10 -220 599 449 ;
+U -1 ; WX 729 ; N uni04B2 ; G 450 ; B -24 -167 694 669 ;
+U -1 ; WX 504 ; N uni04B3 ; G 451 ; B -46 -122 469 462 ;
+U -1 ; WX 925 ; N uni04B4 ; G 452 ; B -24 -167 890 669 ;
+U -1 ; WX 556 ; N uni04B5 ; G 453 ; B 15 -122 492 462 ;
+U -1 ; WX 879 ; N uni04B6 ; G 454 ; B 86 -167 844 669 ;
+U -1 ; WX 556 ; N uni04B7 ; G 455 ; B 34 -122 492 462 ;
+U -1 ; WX 879 ; N uni04B8 ; G 456 ; B 86 0 844 669 ;
+U -1 ; WX 556 ; N uni04B9 ; G 457 ; B 34 -9 492 462 ;
+U -1 ; WX 879 ; N uni04BA ; G 458 ; B 104 0 862 669 ;
+U -1 ; WX 556 ; N uni04BB ; G 459 ; B 34 -9 492 462 ;
+U -1 ; WX 620 ; N uni04BC ; G 460 ; B 5 -13 584 722 ;
+U -1 ; WX 444 ; N uni04BD ; G 461 ; B 5 -13 398 462 ;
+U -1 ; WX 620 ; N uni04BE ; G 462 ; B 5 -13 584 722 ;
+U -1 ; WX 444 ; N uni04BF ; G 463 ; B 5 -13 398 462 ;
+U -1 ; WX 449 ; N uni04C0 ; G 464 ; B -24 0 414 669 ;
+U -1 ; WX 1167 ; N uni04C1 ; G 465 ; B -24 0 1142 871 ;
+U -1 ; WX 1051 ; N uni04C2 ; G 466 ; B 3 -13 999 664 ;
+U -1 ; WX 831 ; N uni04C3 ; G 467 ; B -24 0 806 686 ;
+U -1 ; WX 549 ; N uni04C4 ; G 468 ; B -6 0 514 470 ;
+U -1 ; WX 834 ; N uni04C7 ; G 469 ; B -24 0 799 669 ;
+U -1 ; WX 560 ; N uni04C8 ; G 470 ; B -6 -9 496 461 ;
+U -1 ; WX 879 ; N uni04CB ; G 471 ; B 86 0 844 669 ;
+U -1 ; WX 556 ; N uni04CC ; G 472 ; B 34 -9 492 462 ;
+U -1 ; WX 667 ; N uni04D0 ; G 473 ; B -67 0 593 888 ;
+U -1 ; WX 505 ; N uni04D1 ; G 474 ; B -21 -14 470 678 ;
+U -1 ; WX 667 ; N uni04D2 ; G 475 ; B -67 0 593 862 ;
+U -1 ; WX 506 ; N uni04D3 ; G 476 ; B -21 -14 471 655 ;
+U -1 ; WX 953 ; N uni04D4 ; G 477 ; B -64 0 918 669 ;
+U -1 ; WX 722 ; N uni04D5 ; G 478 ; B -5 -13 673 462 ;
+U -1 ; WX 691 ; N uni04D6 ; G 479 ; B -24 0 656 881 ;
+U -1 ; WX 518 ; N uni04D7 ; G 480 ; B 5 -13 483 674 ;
+U -1 ; WX 620 ; N uni04D8 ; G 481 ; B 5 -13 584 722 ;
+U -1 ; WX 444 ; N afii10846 ; G 482 ; B 5 -13 398 462 ;
+U -1 ; WX 628 ; N uni04DA ; G 483 ; B 5 -13 593 892 ;
+U -1 ; WX 501 ; N uni04DB ; G 484 ; B 5 -13 466 632 ;
+U -1 ; WX 1167 ; N uni04DC ; G 485 ; B -24 0 1142 839 ;
+U -1 ; WX 1051 ; N uni04DD ; G 486 ; B 3 -13 999 632 ;
+U -1 ; WX 662 ; N uni04DE ; G 487 ; B -18 -19 627 869 ;
+U -1 ; WX 500 ; N uni04DF ; G 488 ; B -12 -14 465 632 ;
+U -1 ; WX 657 ; N uni04E0 ; G 489 ; B -18 -19 614 692 ;
+U -1 ; WX 439 ; N uni04E1 ; G 490 ; B -12 -14 400 473 ;
+U -1 ; WX 926 ; N uni04E2 ; G 491 ; B -24 0 891 779 ;
+U -1 ; WX 556 ; N uni04E3 ; G 492 ; B 15 -9 505 572 ;
+U -1 ; WX 926 ; N uni04E4 ; G 493 ; B -24 0 891 839 ;
+U -1 ; WX 556 ; N uni04E5 ; G 494 ; B 15 -9 513 632 ;
+U -1 ; WX 726 ; N uni04E6 ; G 495 ; B 27 -18 691 839 ;
+U -1 ; WX 519 ; N uni04E7 ; G 496 ; B -3 -13 484 632 ;
+U -1 ; WX 726 ; N uni04E8 ; G 497 ; B 27 -18 691 685 ;
+U -1 ; WX 500 ; N uni04E9 ; G 498 ; B -3 -13 441 462 ;
+U -1 ; WX 726 ; N uni04EA ; G 499 ; B 27 -18 691 839 ;
+U -1 ; WX 519 ; N uni04EB ; G 500 ; B -3 -13 484 632 ;
+U -1 ; WX 736 ; N uni04EC ; G 501 ; B -8 -19 742 869 ;
+U -1 ; WX 490 ; N uni04ED ; G 502 ; B -5 -13 455 632 ;
+U -1 ; WX 828 ; N uni04EE ; G 503 ; B -1 -14 793 779 ;
+U -1 ; WX 444 ; N uni04EF ; G 504 ; B -94 -205 409 582 ;
+U -1 ; WX 828 ; N uni04F0 ; G 505 ; B -1 -14 793 839 ;
+U -1 ; WX 450 ; N uni04F1 ; G 506 ; B -94 -205 415 632 ;
+U -1 ; WX 828 ; N uni04F2 ; G 507 ; B -1 -14 793 890 ;
+U -1 ; WX 494 ; N uni04F3 ; G 508 ; B -94 -205 459 683 ;
+U -1 ; WX 879 ; N uni04F4 ; G 509 ; B 86 0 844 839 ;
+U -1 ; WX 556 ; N uni04F5 ; G 510 ; B 34 -9 513 632 ;
+U -1 ; WX 1116 ; N uni04F8 ; G 511 ; B -24 0 1081 839 ;
+U -1 ; WX 744 ; N uni04F9 ; G 512 ; B -28 -13 680 632 ;
+U -1 ; WX 475 ; N uniF6C4 ; G 513 ; B -21 -13 440 624 ;
+U -1 ; WX 591 ; N uniF6C5 ; G 514 ; B -4 -14 556 690 ;
+U -1 ; WX 506 ; N uniF6C6 ; G 515 ; B -68 -231 471 462 ;
+U -1 ; WX 556 ; N uniF6C7 ; G 516 ; B 15 -9 510 624 ;
+U -1 ; WX 806 ; N uniF6C8 ; G 517 ; B 15 -9 770 624 ;
+U -1 ; WX 712 ; N Ccircumflex ; G 518 ; B 32 -18 677 893 ;
+U -1 ; WX 474 ; N ccircumflex ; G 519 ; B -5 -13 439 686 ;
+U -1 ; WX 712 ; N Cdotaccent ; G 520 ; B 32 -18 677 849 ;
+U -1 ; WX 444 ; N cdotaccent ; G 521 ; B -5 -13 392 642 ;
+U -1 ; WX 691 ; N Ebreve ; G 522 ; B -24 0 656 881 ;
+U -1 ; WX 518 ; N ebreve ; G 523 ; B 5 -13 483 674 ;
+U -1 ; WX 741 ; N Gcircumflex ; G 524 ; B 21 -18 706 893 ;
+U -1 ; WX 513 ; N gcircumflex ; G 525 ; B -52 -203 478 686 ;
+U -1 ; WX 741 ; N Gdotaccent ; G 526 ; B 21 -18 706 849 ;
+U -1 ; WX 513 ; N gdotaccent ; G 527 ; B -52 -203 478 642 ;
+U -1 ; WX 834 ; N Hcircumflex ; G 528 ; B -24 0 799 893 ;
+U -1 ; WX 556 ; N hcircumflex ; G 529 ; B -13 -9 498 923 ;
+U -1 ; WX 834 ; N Hbar ; G 530 ; B -24 0 799 669 ;
+U -1 ; WX 556 ; N hbar ; G 531 ; B -13 -9 498 699 ;
+U -1 ; WX 530 ; N Itilde ; G 532 ; B -24 0 495 838 ;
+U -1 ; WX 424 ; N itilde ; G 533 ; B 2 -9 389 631 ;
+U -1 ; WX 537 ; N Ibreve ; G 534 ; B -24 0 502 881 ;
+U -1 ; WX 430 ; N ibreve ; G 535 ; B 2 -9 395 674 ;
+U -1 ; WX 893 ; N IJ ; G 536 ; B -24 -99 858 669 ;
+U -1 ; WX 554 ; N ij ; G 537 ; B 2 -207 519 685 ;
+U -1 ; WX 559 ; N Jcircumflex ; G 538 ; B -46 -99 524 893 ;
+U -1 ; WX 378 ; N jcircumflex ; G 539 ; B -189 -207 343 769 ;
+U -1 ; WX 549 ; N kgreenlandic ; G 540 ; B -6 0 514 470 ;
+U -1 ; WX 623 ; N Ldot ; G 541 ; B -24 0 588 669 ;
+U -1 ; WX 528 ; N ldot ; G 542 ; B 2 -9 477 699 ;
+U -1 ; WX 556 ; N napostrophe ; G 543 ; B -6 -9 493 462 ;
+U -1 ; WX 783 ; N Eng ; G 544 ; B -27 -15 748 669 ;
+U -1 ; WX 556 ; N eng ; G 545 ; B -6 -9 493 462 ;
+U -1 ; WX 726 ; N Obreve ; G 546 ; B 27 -18 691 881 ;
+U -1 ; WX 536 ; N obreve ; G 547 ; B -3 -13 501 674 ;
+U -1 ; WX 588 ; N Scircumflex ; G 548 ; B 2 -18 553 893 ;
+U -1 ; WX 440 ; N scircumflex ; G 549 ; B -19 -13 405 686 ;
+U -1 ; WX 685 ; N _d_550 ; G 550 ; B 36 -223 650 669 ;
+U -1 ; WX 316 ; N _d_551 ; G 551 ; B -116 -232 281 594 ;
+U -1 ; WX 685 ; N Tbar ; G 552 ; B 50 0 650 669 ;
+U -1 ; WX 316 ; N tbar ; G 553 ; B -15 -9 281 594 ;
+U -1 ; WX 779 ; N Utilde ; G 554 ; B 67 -18 744 838 ;
+U -1 ; WX 558 ; N utilde ; G 555 ; B 15 -9 523 631 ;
+U -1 ; WX 779 ; N Ubreve ; G 556 ; B 67 -18 744 881 ;
+U -1 ; WX 565 ; N ubreve ; G 557 ; B 15 -9 530 674 ;
+U -1 ; WX 975 ; N Wcircumflex ; G 558 ; B 65 -18 940 893 ;
+U -1 ; WX 667 ; N wcircumflex ; G 559 ; B 16 -13 614 686 ;
+U -1 ; WX 694 ; N Ycircumflex ; G 560 ; B 73 0 659 893 ;
+U -1 ; WX 444 ; N ycircumflex ; G 561 ; B -94 -205 392 686 ;
+U -1 ; WX 481 ; N longs ; G 562 ; B -169 -205 446 698 ;
+U -1 ; WX 1044 ; N afii61352 ; G 563 ; B 4 -25 1012 681 ;
+U -1 ; WX 768 ; N infinity ; G 564 ; B -10 42 760 456 ;
+U -1 ; WX 694 ; N uni1EF6 ; G 565 ; B 73 0 659 976 ;
+U -1 ; WX 470 ; N uni1EF7 ; G 566 ; B -94 -205 435 765 ;
+U -1 ; WX 694 ; N uni1EF4 ; G 567 ; B 73 -246 659 669 ;
+U -1 ; WX 444 ; N uni1EF5 ; G 568 ; B -94 -246 392 462 ;
+U -1 ; WX 667 ; N uni1EA2 ; G 569 ; B -67 0 593 976 ;
+U -1 ; WX 667 ; N uni1EA0 ; G 570 ; B -67 -246 593 683 ;
+U -1 ; WX 667 ; N uni1EA6 ; G 571 ; B -67 0 613 1132 ;
+U -1 ; WX 667 ; N uni1EA4 ; G 572 ; B -67 0 593 1132 ;
+U -1 ; WX 696 ; N uni1EAA ; G 573 ; B -67 0 661 1089 ;
+U -1 ; WX 778 ; N uni1EA8 ; G 574 ; B -67 0 743 1106 ;
+U -1 ; WX 667 ; N uni1EAC ; G 575 ; B -67 -246 593 921 ;
+U -1 ; WX 667 ; N uni1EB0 ; G 576 ; B -67 0 593 1128 ;
+U -1 ; WX 667 ; N uni1EAE ; G 577 ; B -67 0 605 1128 ;
+U -1 ; WX 667 ; N uni1EB4 ; G 578 ; B -67 0 631 1096 ;
+U -1 ; WX 667 ; N uni1EB2 ; G 579 ; B -67 0 593 1146 ;
+U -1 ; WX 667 ; N uni1EB6 ; G 580 ; B -67 -246 593 918 ;
+U -1 ; WX 688 ; N uni1EBC ; G 581 ; B -27 0 653 901 ;
+U -1 ; WX 688 ; N uni1EBA ; G 582 ; B -27 0 653 976 ;
+U -1 ; WX 688 ; N uni1EB8 ; G 583 ; B -27 -246 653 669 ;
+U -1 ; WX 688 ; N uni1EC0 ; G 584 ; B -27 0 653 1132 ;
+U -1 ; WX 688 ; N uni1EBE ; G 585 ; B -27 0 653 1132 ;
+U -1 ; WX 735 ; N uni1EC4 ; G 586 ; B -27 0 700 1089 ;
+U -1 ; WX 817 ; N uni1EC2 ; G 587 ; B -27 0 782 1106 ;
+U -1 ; WX 688 ; N uni1EC6 ; G 588 ; B -27 -246 653 921 ;
+U -1 ; WX 499 ; N uni1EC8 ; G 589 ; B -32 0 464 976 ;
+U -1 ; WX 537 ; N uni1EA3 ; G 590 ; B -21 -14 502 765 ;
+U -1 ; WX 500 ; N uni1EA1 ; G 591 ; B -21 -246 455 462 ;
+U -1 ; WX 566 ; N uni1EA7 ; G 592 ; B -21 -14 531 921 ;
+U -1 ; WX 532 ; N uni1EA5 ; G 593 ; B -21 -14 497 921 ;
+U -1 ; WX 614 ; N uni1EAB ; G 594 ; B -21 -14 579 878 ;
+U -1 ; WX 696 ; N uni1EA9 ; G 595 ; B -21 -14 661 895 ;
+U -1 ; WX 532 ; N uni1EAD ; G 596 ; B -21 -246 497 710 ;
+U -1 ; WX 549 ; N uni1EB1 ; G 597 ; B -21 -14 514 918 ;
+U -1 ; WX 564 ; N uni1EAF ; G 598 ; B -21 -14 529 918 ;
+U -1 ; WX 590 ; N uni1EB5 ; G 599 ; B -21 -14 555 886 ;
+U -1 ; WX 549 ; N uni1EB3 ; G 600 ; B -21 -14 514 936 ;
+U -1 ; WX 549 ; N uni1EB7 ; G 601 ; B -21 -246 514 708 ;
+U -1 ; WX 550 ; N uni1EBD ; G 602 ; B 5 -13 515 694 ;
+U -1 ; WX 509 ; N uni1EBB ; G 603 ; B 5 -13 474 765 ;
+U -1 ; WX 444 ; N uni1EB9 ; G 604 ; B 5 -246 398 462 ;
+U -1 ; WX 538 ; N uni1EC1 ; G 605 ; B 5 -13 503 921 ;
+U -1 ; WX 504 ; N uni1EBF ; G 606 ; B 5 -13 469 921 ;
+U -1 ; WX 586 ; N uni1EC5 ; G 607 ; B 5 -13 551 878 ;
+U -1 ; WX 668 ; N uni1EC3 ; G 608 ; B 5 -13 633 895 ;
+U -1 ; WX 504 ; N uni1EC7 ; G 609 ; B 5 -246 469 710 ;
+U -1 ; WX 387 ; N uni1EC9 ; G 610 ; B 2 -9 352 765 ;
+U -1 ; WX 441 ; N uni1ECA ; G 611 ; B -32 -246 406 669 ;
+U -1 ; WX 726 ; N uni1ECE ; G 612 ; B 27 -18 691 976 ;
+U -1 ; WX 726 ; N uni1ECC ; G 613 ; B 27 -246 691 685 ;
+U -1 ; WX 726 ; N uni1ED2 ; G 614 ; B 27 -18 691 1132 ;
+U -1 ; WX 726 ; N uni1ED0 ; G 615 ; B 27 -18 691 1132 ;
+U -1 ; WX 762 ; N uni1ED6 ; G 616 ; B 27 -18 727 1089 ;
+U -1 ; WX 844 ; N uni1ED4 ; G 617 ; B 27 -18 809 1106 ;
+U -1 ; WX 726 ; N uni1ED8 ; G 618 ; B 27 -246 691 921 ;
+U -1 ; WX 748 ; N Ohorn ; G 619 ; B 27 -18 724 810 ;
+U -1 ; WX 748 ; N uni1EDC ; G 620 ; B 27 -18 724 981 ;
+U -1 ; WX 748 ; N uni1EDA ; G 621 ; B 27 -18 724 946 ;
+U -1 ; WX 748 ; N uni1EE0 ; G 622 ; B 27 -18 724 924 ;
+U -1 ; WX 748 ; N uni1EDE ; G 623 ; B 27 -18 724 992 ;
+U -1 ; WX 748 ; N uni1EE2 ; G 624 ; B 27 -246 724 810 ;
+U -1 ; WX 779 ; N _d_625 ; G 625 ; B 67 -18 744 864 ;
+U -1 ; WX 779 ; N uni1EE6 ; G 626 ; B 67 -18 744 976 ;
+U -1 ; WX 779 ; N uni1EE4 ; G 627 ; B 67 -246 744 669 ;
+U -1 ; WX 864 ; N Uhorn ; G 628 ; B 67 -18 840 810 ;
+U -1 ; WX 864 ; N uni1EEA ; G 629 ; B 67 -18 840 981 ;
+U -1 ; WX 864 ; N uni1EE8 ; G 630 ; B 67 -18 840 946 ;
+U -1 ; WX 864 ; N uni1EEE ; G 631 ; B 67 -18 840 924 ;
+U -1 ; WX 864 ; N uni1EEC ; G 632 ; B 67 -18 840 992 ;
+U -1 ; WX 864 ; N uni1EF0 ; G 633 ; B 67 -246 840 810 ;
+U -1 ; WX 694 ; N Ygrave ; G 634 ; B 73 0 659 937 ;
+U -1 ; WX 694 ; N uni1EF8 ; G 635 ; B 73 0 659 901 ;
+U -1 ; WX 298 ; N uni1ECB ; G 636 ; B -12 -246 263 685 ;
+U -1 ; WX 537 ; N uni1ECF ; G 637 ; B -3 -13 502 765 ;
+U -1 ; WX 500 ; N uni1ECD ; G 638 ; B -3 -246 441 462 ;
+U -1 ; WX 566 ; N uni1ED3 ; G 639 ; B -3 -13 531 921 ;
+U -1 ; WX 532 ; N uni1ED1 ; G 640 ; B -3 -13 497 921 ;
+U -1 ; WX 614 ; N uni1ED7 ; G 641 ; B -3 -13 579 878 ;
+U -1 ; WX 696 ; N uni1ED5 ; G 642 ; B -3 -13 661 895 ;
+U -1 ; WX 532 ; N uni1ED9 ; G 643 ; B -3 -246 497 710 ;
+U -1 ; WX 562 ; N ohorn ; G 644 ; B -3 -13 538 585 ;
+U -1 ; WX 562 ; N uni1EDD ; G 645 ; B -3 -13 538 776 ;
+U -1 ; WX 562 ; N uni1EDB ; G 646 ; B -3 -13 538 737 ;
+U -1 ; WX 562 ; N uni1EE1 ; G 647 ; B -3 -13 538 719 ;
+U -1 ; WX 562 ; N uni1EDF ; G 648 ; B -3 -13 538 782 ;
+U -1 ; WX 562 ; N uni1EE3 ; G 649 ; B -3 -246 538 585 ;
+U -1 ; WX 556 ; N _d_650 ; G 650 ; B 15 -9 492 641 ;
+U -1 ; WX 556 ; N uni1EE7 ; G 651 ; B 15 -9 492 765 ;
+U -1 ; WX 556 ; N uni1EE5 ; G 652 ; B 15 -246 492 462 ;
+U -1 ; WX 664 ; N uhorn ; G 653 ; B 15 -9 640 585 ;
+U -1 ; WX 664 ; N uni1EEB ; G 654 ; B 15 -9 640 776 ;
+U -1 ; WX 664 ; N uni1EE9 ; G 655 ; B 15 -9 640 737 ;
+U -1 ; WX 664 ; N uni1EEF ; G 656 ; B 15 -9 640 719 ;
+U -1 ; WX 664 ; N uni1EED ; G 657 ; B 15 -9 640 782 ;
+U -1 ; WX 664 ; N uni1EF1 ; G 658 ; B 15 -246 640 585 ;
+U -1 ; WX 444 ; N ygrave ; G 659 ; B -94 -205 392 727 ;
+U -1 ; WX 511 ; N uni1EF9 ; G 660 ; B -94 -205 476 694 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Courier-Bold.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Courier-Bold.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Courier-Bold.ufm	(revision 2000)
@@ -0,0 +1,719 @@
+StartFontMetrics 4.1
+FontName Nimbus_Mono_L_Bold
+FullName Nimbus Mono L Bold
+Notice 
+EncodingScheme FontSpecific
+FamilyName Nimbus Mono L
+Weight Bold
+Version 1.0
+Characters 661
+ItalicAngle 0.0
+Ascender 1086
+Descender -278
+UnderlineThickness 50
+UnderlinePosition -100
+IsFixedPitch false
+FontBBox -107 -278 691 1086
+StartCharMetrics 700
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .null ; G 1 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N exclam ; G 2 ; B 220 -15 381 638 ;
+U -1 ; WX 600 ; N quotedbl ; G 3 ; B 136 312 464 602 ;
+U -1 ; WX 600 ; N numbersign ; G 4 ; B 62 -92 538 675 ;
+U -1 ; WX 600 ; N dollar ; G 5 ; B 83 -123 517 684 ;
+U -1 ; WX 600 ; N percent ; G 6 ; B 80 -15 521 617 ;
+U -1 ; WX 600 ; N ampersand ; G 7 ; B 75 -14 508 550 ;
+U -1 ; WX 600 ; N quotesingle ; G 104 ; B 236 312 364 602 ;
+U -1 ; WX 600 ; N parenleft ; G 9 ; B 264 -153 488 632 ;
+U -1 ; WX 600 ; N parenright ; G 10 ; B 117 -153 341 632 ;
+U -1 ; WX 600 ; N asterisk ; G 11 ; B 83 208 517 622 ;
+U -1 ; WX 618 ; N plus ; G 12 ; B 42 0 558 560 ;
+U -1 ; WX 600 ; N comma ; G 13 ; B 147 -158 351 134 ;
+U -1 ; WX 618 ; N hyphen ; G 14 ; B 42 229 558 329 ;
+U -1 ; WX 600 ; N period ; G 15 ; B 225 -15 375 117 ;
+U -1 ; WX 600 ; N slash ; G 16 ; B 83 -113 517 695 ;
+U -1 ; WX 600 ; N zero ; G 17 ; B 83 -15 517 638 ;
+U -1 ; WX 600 ; N one ; G 18 ; B 83 0 517 638 ;
+U -1 ; WX 600 ; N two ; G 19 ; B 54 0 508 638 ;
+U -1 ; WX 600 ; N three ; G 20 ; B 66 -15 529 638 ;
+U -1 ; WX 600 ; N four ; G 21 ; B 75 0 508 622 ;
+U -1 ; WX 600 ; N five ; G 22 ; B 66 -15 529 622 ;
+U -1 ; WX 600 ; N six ; G 23 ; B 105 -15 540 638 ;
+U -1 ; WX 600 ; N seven ; G 24 ; B 75 -1 508 622 ;
+U -1 ; WX 600 ; N eight ; G 25 ; B 83 -15 517 638 ;
+U -1 ; WX 601 ; N nine ; G 26 ; B 106 -15 541 638 ;
+U -1 ; WX 600 ; N colon ; G 27 ; B 225 -15 375 437 ;
+U -1 ; WX 600 ; N semicolon ; G 28 ; B 147 -158 351 437 ;
+U -1 ; WX 604 ; N less ; G 29 ; B 42 54 544 501 ;
+U -1 ; WX 618 ; N equal ; G 30 ; B 42 138 558 422 ;
+U -1 ; WX 618 ; N greater ; G 31 ; B 56 53 558 500 ;
+U -1 ; WX 600 ; N question ; G 32 ; B 104 -15 517 598 ;
+U -1 ; WX 600 ; N at ; G 33 ; B 76 -152 509 620 ;
+U -1 ; WX 681 ; N A ; G 34 ; B -21 0 621 583 ;
+U -1 ; WX 631 ; N B ; G 35 ; B 13 0 571 583 ;
+U -1 ; WX 624 ; N C ; G 36 ; B 33 -14 564 597 ;
+U -1 ; WX 610 ; N D ; G 37 ; B 13 0 550 583 ;
+U -1 ; WX 610 ; N E ; G 38 ; B 13 0 550 583 ;
+U -1 ; WX 610 ; N F ; G 39 ; B 13 0 550 583 ;
+U -1 ; WX 652 ; N G ; G 40 ; B 33 -14 592 597 ;
+U -1 ; WX 641 ; N H ; G 41 ; B 23 0 581 583 ;
+U -1 ; WX 600 ; N I ; G 42 ; B 83 0 517 583 ;
+U -1 ; WX 673 ; N J ; G 43 ; B 54 -14 613 583 ;
+U -1 ; WX 662 ; N K ; G 44 ; B 13 0 602 583 ;
+U -1 ; WX 631 ; N L ; G 45 ; B 33 0 571 583 ;
+U -1 ; WX 683 ; N M ; G 46 ; B -19 0 623 584 ;
+U -1 ; WX 652 ; N N ; G 47 ; B -8 0 592 583 ;
+U -1 ; WX 639 ; N O ; G 48 ; B 21 -14 579 597 ;
+U -1 ; WX 600 ; N P ; G 49 ; B 13 0 529 583 ;
+U -1 ; WX 639 ; N Q ; G 50 ; B 21 -145 579 597 ;
+U -1 ; WX 679 ; N R ; G 51 ; B 13 0 619 583 ;
+U -1 ; WX 600 ; N S ; G 52 ; B 62 -14 538 597 ;
+U -1 ; WX 618 ; N T ; G 53 ; B 42 0 558 583 ;
+U -1 ; WX 650 ; N U ; G 54 ; B 10 -14 590 583 ;
+U -1 ; WX 681 ; N V ; G 55 ; B -21 0 621 583 ;
+U -1 ; WX 670 ; N W ; G 56 ; B -10 0 610 583 ;
+U -1 ; WX 650 ; N X ; G 57 ; B 10 0 590 583 ;
+U -1 ; WX 639 ; N Y ; G 58 ; B 21 0 579 583 ;
+U -1 ; WX 600 ; N Z ; G 59 ; B 73 0 527 583 ;
+U -1 ; WX 600 ; N bracketleft ; G 60 ; B 250 -148 475 627 ;
+U -1 ; WX 600 ; N backslash ; G 61 ; B 83 -113 517 695 ;
+U -1 ; WX 600 ; N bracketright ; G 62 ; B 125 -148 350 627 ;
+U -1 ; WX 600 ; N asciicircum ; G 63 ; B 83 325 517 652 ;
+U -1 ; WX 672 ; N underscore ; G 64 ; B -12 -125 612 -75 ;
+U -1 ; WX 600 ; N grave ; G 124 ; B 125 496 350 696 ;
+U -1 ; WX 631 ; N a ; G 66 ; B 42 -16 571 450 ;
+U -1 ; WX 631 ; N b ; G 67 ; B -8 -14 571 624 ;
+U -1 ; WX 625 ; N c ; G 68 ; B 54 -16 565 450 ;
+U -1 ; WX 673 ; N d ; G 69 ; B 33 -14 613 624 ;
+U -1 ; WX 610 ; N e ; G 70 ; B 33 -16 550 450 ;
+U -1 ; WX 631 ; N f ; G 71 ; B 75 0 571 623 ;
+U -1 ; WX 652 ; N g ; G 72 ; B 33 -205 592 451 ;
+U -1 ; WX 641 ; N h ; G 73 ; B 13 0 581 624 ;
+U -1 ; WX 600 ; N i ; G 74 ; B 62 0 538 623 ;
+U -1 ; WX 600 ; N j ; G 75 ; B 117 -205 488 623 ;
+U -1 ; WX 631 ; N k ; G 76 ; B 33 0 571 624 ;
+U -1 ; WX 600 ; N l ; G 77 ; B 62 0 538 624 ;
+U -1 ; WX 683 ; N m ; G 78 ; B -19 0 623 450 ;
+U -1 ; WX 631 ; N n ; G 79 ; B 23 0 571 450 ;
+U -1 ; WX 618 ; N o ; G 80 ; B 42 -16 558 450 ;
+U -1 ; WX 631 ; N p ; G 81 ; B -8 -205 571 450 ;
+U -1 ; WX 673 ; N q ; G 82 ; B 33 -205 613 450 ;
+U -1 ; WX 631 ; N r ; G 83 ; B 54 0 571 449 ;
+U -1 ; WX 600 ; N s ; G 84 ; B 73 -16 527 450 ;
+U -1 ; WX 600 ; N t ; G 85 ; B 13 -16 529 591 ;
+U -1 ; WX 631 ; N u ; G 86 ; B 13 -13 571 437 ;
+U -1 ; WX 660 ; N v ; G 87 ; B 0 0 600 437 ;
+U -1 ; WX 660 ; N w ; G 88 ; B 0 0 600 437 ;
+U -1 ; WX 639 ; N x ; G 89 ; B 21 0 579 437 ;
+U -1 ; WX 639 ; N y ; G 90 ; B 21 -205 579 437 ;
+U -1 ; WX 600 ; N z ; G 91 ; B 85 0 519 437 ;
+U -1 ; WX 600 ; N braceleft ; G 92 ; B 167 -153 433 623 ;
+U -1 ; WX 600 ; N bar ; G 93 ; B 250 -153 350 622 ;
+U -1 ; WX 600 ; N braceright ; G 94 ; B 167 -153 433 623 ;
+U -1 ; WX 600 ; N asciitilde ; G 95 ; B 62 179 538 385 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N Euro ; G 289 ; B 4 -14 538 597 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N quotesinglbase ; G 117 ; B 147 -158 351 134 ;
+U -1 ; WX 608 ; N florin ; G 101 ; B 57 -123 548 638 ;
+U -1 ; WX 600 ; N quotedblbase ; G 118 ; B 87 -120 491 134 ;
+U -1 ; WX 635 ; N ellipsis ; G 121 ; B 25 -15 575 117 ;
+U -1 ; WX 600 ; N dagger ; G 112 ; B 94 -92 506 622 ;
+U -1 ; WX 600 ; N daggerdbl ; G 113 ; B 94 -92 506 622 ;
+U -1 ; WX 600 ; N circumflex ; G 126 ; B 125 497 476 696 ;
+U -1 ; WX 660 ; N perthousand ; G 122 ; B 0 0 600 618 ;
+U -1 ; WX 600 ; N Scaron ; G 189 ; B 62 -14 538 839 ;
+U -1 ; WX 600 ; N guilsinglleft ; G 107 ; B 33 20 342 415 ;
+U -1 ; WX 672 ; N OE ; G 142 ; B -20 0 612 583 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N Zcaron ; G 200 ; B 73 0 527 839 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N quoteleft ; G 65 ; B 249 348 453 602 ;
+U -1 ; WX 600 ; N quoteright ; G 8 ; B 147 331 351 623 ;
+U -1 ; WX 600 ; N quotedblleft ; G 105 ; B 98 348 502 602 ;
+U -1 ; WX 600 ; N quotedblright ; G 119 ; B 87 348 491 602 ;
+U -1 ; WX 600 ; N bullet ; G 116 ; B 150 154 449 453 ;
+U -1 ; WX 618 ; N endash ; G 111 ; B 42 229 558 329 ;
+U -1 ; WX 689 ; N emdash ; G 137 ; B -29 229 629 329 ;
+U -1 ; WX 600 ; N tilde ; G 127 ; B 115 523 485 656 ;
+U -1 ; WX 680 ; N trademark ; G 297 ; B -33 220 620 583 ;
+U -1 ; WX 600 ; N scaron ; G 253 ; B 73 -16 527 696 ;
+U -1 ; WX 631 ; N guilsinglright ; G 108 ; B 263 20 571 415 ;
+U -1 ; WX 673 ; N oe ; G 148 ; B -11 -16 613 450 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N zcaron ; G 264 ; B 85 0 519 696 ;
+U -1 ; WX 639 ; N Ydieresis ; G 204 ; B 21 0 579 798 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N exclamdown ; G 96 ; B 220 -227 381 426 ;
+U -1 ; WX 600 ; N cent ; G 97 ; B 83 -44 499 661 ;
+U -1 ; WX 610 ; N sterling ; G 98 ; B 33 0 550 598 ;
+U -1 ; WX 600 ; N currency ; G 103 ; B 73 64 527 519 ;
+U -1 ; WX 639 ; N yen ; G 100 ; B 21 0 579 580 ;
+U -1 ; WX 600 ; N brokenbar ; G 314 ; B 250 -153 350 622 ;
+U -1 ; WX 624 ; N section ; G 102 ; B 36 -170 564 583 ;
+U -1 ; WX 600 ; N dieresis ; G 131 ; B 136 534 464 654 ;
+U -1 ; WX 666 ; N copyright ; G 303 ; B -7 -15 606 598 ;
+U -1 ; WX 600 ; N ordfeminine ; G 139 ; B 118 182 489 595 ;
+U -1 ; WX 631 ; N guillemotleft ; G 106 ; B 33 20 571 415 ;
+U -1 ; WX 600 ; N logicalnot ; G 311 ; B 42 115 465 445 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 666 ; N registered ; G 304 ; B -7 -15 606 598 ;
+U -1 ; WX 600 ; N macron ; G 128 ; B 125 546 475 626 ;
+U -1 ; WX 600 ; N degree ; G 293 ; B 125 243 475 596 ;
+U -1 ; WX 618 ; N plusminus ; G 298 ; B 42 0 558 624 ;
+U -1 ; WX 600 ; N twosuperior ; G 291 ; B 149 247 429 637 ;
+U -1 ; WX 600 ; N threesuperior ; G 292 ; B 157 238 442 637 ;
+U -1 ; WX 600 ; N acute ; G 125 ; B 250 496 475 696 ;
+U -1 ; WX 631 ; N mu ; G 315 ; B 13 -153 571 437 ;
+U -1 ; WX 618 ; N paragraph ; G 115 ; B 49 -174 558 583 ;
+U -1 ; WX 600 ; N periodcentered ; G 114 ; B 225 214 375 346 ;
+U -1 ; WX 600 ; N cedilla ; G 133 ; B 180 -229 407 0 ;
+U -1 ; WX 600 ; N onesuperior ; G 290 ; B 166 247 434 638 ;
+U -1 ; WX 600 ; N ordmasculine ; G 143 ; B 122 182 480 595 ;
+U -1 ; WX 631 ; N guillemotright ; G 120 ; B 33 20 571 415 ;
+U -1 ; WX 689 ; N onequarter ; G 300 ; B -34 0 629 638 ;
+U -1 ; WX 689 ; N onehalf ; G 299 ; B -34 0 629 638 ;
+U -1 ; WX 690 ; N threequarters ; G 301 ; B -43 0 630 637 ;
+U -1 ; WX 600 ; N questiondown ; G 123 ; B 83 -227 496 386 ;
+U -1 ; WX 681 ; N Agrave ; G 152 ; B -21 0 621 839 ;
+U -1 ; WX 681 ; N Aacute ; G 151 ; B -21 0 621 839 ;
+U -1 ; WX 681 ; N Acircumflex ; G 153 ; B -21 0 621 839 ;
+U -1 ; WX 681 ; N Atilde ; G 155 ; B -21 0 621 799 ;
+U -1 ; WX 681 ; N Adieresis ; G 150 ; B -21 0 621 798 ;
+U -1 ; WX 681 ; N Aring ; G 156 ; B -21 0 621 871 ;
+U -1 ; WX 674 ; N AE ; G 138 ; B -20 0 614 583 ;
+U -1 ; WX 624 ; N Ccedilla ; G 158 ; B 33 -229 564 597 ;
+U -1 ; WX 610 ; N Egrave ; G 164 ; B 13 0 550 839 ;
+U -1 ; WX 610 ; N Eacute ; G 163 ; B 13 0 550 839 ;
+U -1 ; WX 610 ; N Ecircumflex ; G 165 ; B 13 0 550 839 ;
+U -1 ; WX 610 ; N Edieresis ; G 162 ; B 13 0 550 798 ;
+U -1 ; WX 600 ; N Igrave ; G 172 ; B 83 0 517 839 ;
+U -1 ; WX 600 ; N Iacute ; G 171 ; B 83 0 517 839 ;
+U -1 ; WX 600 ; N Icircumflex ; G 173 ; B 83 0 517 839 ;
+U -1 ; WX 600 ; N Idieresis ; G 170 ; B 83 0 517 798 ;
+U -1 ; WX 610 ; N Eth ; G 283 ; B 0 0 550 583 ;
+U -1 ; WX 652 ; N Ntilde ; G 179 ; B -8 0 592 799 ;
+U -1 ; WX 639 ; N Ograve ; G 182 ; B 21 -14 579 839 ;
+U -1 ; WX 639 ; N Oacute ; G 181 ; B 21 -14 579 839 ;
+U -1 ; WX 639 ; N Ocircumflex ; G 183 ; B 21 -14 579 839 ;
+U -1 ; WX 639 ; N Otilde ; G 184 ; B 21 -14 579 799 ;
+U -1 ; WX 639 ; N Odieresis ; G 180 ; B 21 -14 579 798 ;
+U -1 ; WX 600 ; N multiply ; G 295 ; B 100 80 500 480 ;
+U -1 ; WX 650 ; N Oslash ; G 141 ; B 9 -70 590 638 ;
+U -1 ; WX 650 ; N Ugrave ; G 194 ; B 10 -14 590 839 ;
+U -1 ; WX 650 ; N Uacute ; G 193 ; B 10 -14 590 839 ;
+U -1 ; WX 650 ; N Ucircumflex ; G 195 ; B 10 -14 590 839 ;
+U -1 ; WX 650 ; N Udieresis ; G 192 ; B 10 -14 590 798 ;
+U -1 ; WX 639 ; N Yacute ; G 198 ; B 21 0 579 839 ;
+U -1 ; WX 600 ; N Thorn ; G 285 ; B 14 0 523 583 ;
+U -1 ; WX 600 ; N germandbls ; G 149 ; B 13 -16 529 623 ;
+U -1 ; WX 631 ; N agrave ; G 218 ; B 42 -16 571 696 ;
+U -1 ; WX 631 ; N aacute ; G 217 ; B 42 -16 571 696 ;
+U -1 ; WX 631 ; N acircumflex ; G 219 ; B 42 -16 571 696 ;
+U -1 ; WX 631 ; N atilde ; G 221 ; B 42 -16 571 656 ;
+U -1 ; WX 631 ; N adieresis ; G 216 ; B 42 -16 571 654 ;
+U -1 ; WX 631 ; N aring ; G 222 ; B 42 -16 571 727 ;
+U -1 ; WX 672 ; N ae ; G 144 ; B -13 -16 612 450 ;
+U -1 ; WX 625 ; N ccedilla ; G 226 ; B 54 -229 565 450 ;
+U -1 ; WX 610 ; N egrave ; G 230 ; B 33 -16 550 696 ;
+U -1 ; WX 610 ; N eacute ; G 229 ; B 33 -16 550 696 ;
+U -1 ; WX 610 ; N ecircumflex ; G 231 ; B 33 -16 550 696 ;
+U -1 ; WX 610 ; N edieresis ; G 228 ; B 33 -16 550 654 ;
+U -1 ; WX 600 ; N igrave ; G 238 ; B 62 0 538 696 ;
+U -1 ; WX 600 ; N iacute ; G 237 ; B 62 0 538 696 ;
+U -1 ; WX 600 ; N icircumflex ; G 239 ; B 62 0 538 696 ;
+U -1 ; WX 600 ; N idieresis ; G 236 ; B 62 0 538 654 ;
+U -1 ; WX 618 ; N eth ; G 287 ; B 42 -16 558 646 ;
+U -1 ; WX 631 ; N ntilde ; G 244 ; B 23 0 571 656 ;
+U -1 ; WX 618 ; N ograve ; G 247 ; B 42 -16 558 696 ;
+U -1 ; WX 618 ; N oacute ; G 246 ; B 42 -16 558 696 ;
+U -1 ; WX 618 ; N ocircumflex ; G 248 ; B 42 -16 558 696 ;
+U -1 ; WX 618 ; N otilde ; G 249 ; B 42 -16 558 656 ;
+U -1 ; WX 618 ; N odieresis ; G 245 ; B 42 -16 558 654 ;
+U -1 ; WX 618 ; N divide ; G 296 ; B 42 28 558 532 ;
+U -1 ; WX 633 ; N oslash ; G 147 ; B 23 -70 573 494 ;
+U -1 ; WX 631 ; N ugrave ; G 258 ; B 13 -13 571 696 ;
+U -1 ; WX 631 ; N uacute ; G 257 ; B 13 -13 571 696 ;
+U -1 ; WX 631 ; N ucircumflex ; G 259 ; B 13 -13 571 696 ;
+U -1 ; WX 631 ; N udieresis ; G 256 ; B 13 -13 571 654 ;
+U -1 ; WX 639 ; N yacute ; G 262 ; B 21 -205 579 696 ;
+U -1 ; WX 631 ; N thorn ; G 288 ; B -8 -205 571 624 ;
+U -1 ; WX 639 ; N ydieresis ; G 266 ; B 21 -205 579 654 ;
+U -1 ; WX 640 ; N fraction ; G 99 ; B 21 102 580 500 ;
+U -1 ; WX 679 ; N fi ; G 109 ; B -14 0 619 624 ;
+U -1 ; WX 677 ; N fl ; G 110 ; B -17 0 617 623 ;
+U -1 ; WX 600 ; N breve ; G 129 ; B 125 503 475 687 ;
+U -1 ; WX 600 ; N dotaccent ; G 130 ; B 240 534 360 654 ;
+U -1 ; WX 600 ; N ring ; G 132 ; B 177 486 423 727 ;
+U -1 ; WX 600 ; N hungarumlaut ; G 134 ; B 125 496 475 694 ;
+U -1 ; WX 600 ; N ogonek ; G 135 ; B 250 -208 463 0 ;
+U -1 ; WX 600 ; N caron ; G 136 ; B 125 497 476 696 ;
+U -1 ; WX 631 ; N Lslash ; G 140 ; B 12 0 571 583 ;
+U -1 ; WX 600 ; N dotlessi ; G 145 ; B 62 0 538 437 ;
+U -1 ; WX 600 ; N lslash ; G 146 ; B 62 0 538 624 ;
+U -1 ; WX 681 ; N Abreve ; G 154 ; B -21 0 621 831 ;
+U -1 ; WX 681 ; N Aogonek ; G 157 ; B -21 -208 621 583 ;
+U -1 ; WX 624 ; N Cacute ; G 159 ; B 33 -14 564 839 ;
+U -1 ; WX 624 ; N Ccaron ; G 160 ; B 33 -14 564 839 ;
+U -1 ; WX 610 ; N Dcaron ; G 161 ; B 13 0 550 839 ;
+U -1 ; WX 610 ; N Ecaron ; G 166 ; B 13 0 550 839 ;
+U -1 ; WX 610 ; N Edotaccent ; G 167 ; B 13 0 550 798 ;
+U -1 ; WX 647 ; N Eogonek ; G 168 ; B 13 -208 587 583 ;
+U -1 ; WX 652 ; N Gbreve ; G 169 ; B 33 -14 592 831 ;
+U -1 ; WX 600 ; N Idotaccent ; G 174 ; B 83 0 517 798 ;
+U -1 ; WX 631 ; N Lacute ; G 175 ; B 33 0 571 839 ;
+U -1 ; WX 631 ; N Lcaron ; G 176 ; B 33 0 571 598 ;
+U -1 ; WX 652 ; N Nacute ; G 177 ; B -8 0 592 839 ;
+U -1 ; WX 652 ; N Ncaron ; G 178 ; B -8 0 592 839 ;
+U -1 ; WX 639 ; N Ohungarumlaut ; G 185 ; B 21 -14 579 838 ;
+U -1 ; WX 679 ; N Racute ; G 186 ; B 13 0 619 839 ;
+U -1 ; WX 679 ; N Rcaron ; G 187 ; B 13 0 619 839 ;
+U -1 ; WX 600 ; N Sacute ; G 188 ; B 62 -14 538 839 ;
+U -1 ; WX 600 ; N Scedilla ; G 190 ; B 62 -229 538 597 ;
+U -1 ; WX 618 ; N Tcaron ; G 191 ; B 42 0 558 839 ;
+U -1 ; WX 650 ; N Uring ; G 196 ; B 10 -14 590 871 ;
+U -1 ; WX 650 ; N Uhungarumlaut ; G 197 ; B 10 -14 590 838 ;
+U -1 ; WX 600 ; N Zacute ; G 199 ; B 73 0 527 839 ;
+U -1 ; WX 600 ; N Zdotaccent ; G 201 ; B 73 0 527 798 ;
+U -1 ; WX 681 ; N Amacron ; G 202 ; B -21 0 621 769 ;
+U -1 ; WX 618 ; N Tcommaaccent ; G 203 ; B 42 -278 558 583 ;
+U -1 ; WX 610 ; N Emacron ; G 205 ; B 13 0 550 769 ;
+U -1 ; WX 600 ; N Imacron ; G 206 ; B 83 0 517 769 ;
+U -1 ; WX 600 ; N Iogonek ; G 207 ; B 83 -208 517 583 ;
+U -1 ; WX 662 ; N Kcommaaccent ; G 208 ; B 13 -278 602 583 ;
+U -1 ; WX 631 ; N Lcommaaccent ; G 209 ; B 33 -278 571 583 ;
+U -1 ; WX 652 ; N Ncommaaccent ; G 210 ; B -8 -278 592 583 ;
+U -1 ; WX 639 ; N Omacron ; G 211 ; B 21 -14 579 769 ;
+U -1 ; WX 679 ; N Rcommaaccent ; G 212 ; B 13 -278 619 583 ;
+U -1 ; WX 652 ; N Gcommaaccent ; G 213 ; B 33 -278 592 597 ;
+U -1 ; WX 650 ; N Umacron ; G 214 ; B 10 -14 590 769 ;
+U -1 ; WX 650 ; N Uogonek ; G 215 ; B 10 -208 590 583 ;
+U -1 ; WX 631 ; N abreve ; G 220 ; B 42 -16 571 687 ;
+U -1 ; WX 640 ; N aogonek ; G 223 ; B 42 -208 580 450 ;
+U -1 ; WX 625 ; N cacute ; G 224 ; B 54 -16 565 696 ;
+U -1 ; WX 625 ; N ccaron ; G 225 ; B 54 -16 565 696 ;
+U -1 ; WX 741 ; N dcaron ; G 227 ; B 33 -14 681 637 ;
+U -1 ; WX 610 ; N ecaron ; G 232 ; B 33 -16 550 696 ;
+U -1 ; WX 610 ; N edotaccent ; G 233 ; B 33 -16 550 654 ;
+U -1 ; WX 610 ; N eogonek ; G 234 ; B 33 -208 550 450 ;
+U -1 ; WX 652 ; N gbreve ; G 235 ; B 33 -205 592 687 ;
+U -1 ; WX 600 ; N lacute ; G 240 ; B 62 0 538 840 ;
+U -1 ; WX 600 ; N lcaron ; G 241 ; B 62 0 538 637 ;
+U -1 ; WX 631 ; N nacute ; G 242 ; B 23 0 571 696 ;
+U -1 ; WX 631 ; N ncaron ; G 243 ; B 23 0 571 696 ;
+U -1 ; WX 618 ; N ohungarumlaut ; G 250 ; B 42 -16 558 694 ;
+U -1 ; WX 631 ; N racute ; G 251 ; B 54 0 571 696 ;
+U -1 ; WX 600 ; N sacute ; G 252 ; B 73 -16 527 696 ;
+U -1 ; WX 600 ; N scommaaccent ; G 254 ; B 73 -278 527 450 ;
+U -1 ; WX 600 ; N tcaron ; G 255 ; B 13 -16 530 637 ;
+U -1 ; WX 631 ; N uring ; G 260 ; B 13 -13 571 727 ;
+U -1 ; WX 631 ; N uhungarumlaut ; G 261 ; B 13 -13 571 694 ;
+U -1 ; WX 600 ; N zacute ; G 263 ; B 85 0 519 696 ;
+U -1 ; WX 600 ; N zdotaccent ; G 265 ; B 85 0 519 654 ;
+U -1 ; WX 600 ; N tcommaaccent ; G 267 ; B 13 -278 529 591 ;
+U -1 ; WX 631 ; N amacron ; G 268 ; B 42 -16 571 626 ;
+U -1 ; WX 610 ; N emacron ; G 269 ; B 33 -16 550 626 ;
+U -1 ; WX 600 ; N imacron ; G 270 ; B 62 0 538 626 ;
+U -1 ; WX 631 ; N kcommaaccent ; G 271 ; B 33 -278 571 624 ;
+U -1 ; WX 600 ; N lcommaaccent ; G 272 ; B 62 -278 538 624 ;
+U -1 ; WX 631 ; N ncommaaccent ; G 273 ; B 23 -278 571 450 ;
+U -1 ; WX 618 ; N omacron ; G 274 ; B 42 -16 558 626 ;
+U -1 ; WX 631 ; N rcommaaccent ; G 275 ; B 54 -278 571 449 ;
+U -1 ; WX 631 ; N umacron ; G 276 ; B 13 -13 571 626 ;
+U -1 ; WX 631 ; N uogonek ; G 277 ; B 13 -208 571 437 ;
+U -1 ; WX 631 ; N rcaron ; G 278 ; B 54 0 571 696 ;
+U -1 ; WX 600 ; N scedilla ; G 279 ; B 73 -229 527 450 ;
+U -1 ; WX 652 ; N gcommaaccent ; G 280 ; B 33 -205 592 721 ;
+U -1 ; WX 600 ; N iogonek ; G 281 ; B 62 -208 540 623 ;
+U -1 ; WX 600 ; N Scommaaccent ; G 282 ; B 62 -278 538 597 ;
+U -1 ; WX 610 ; N Dcroat ; G 284 ; B 0 0 550 583 ;
+U -1 ; WX 673 ; N dcroat ; G 286 ; B 33 -16 613 624 ;
+U -1 ; WX 618 ; N minus ; G 294 ; B 42 230 558 330 ;
+U -1 ; WX 600 ; N commaaccent ; G 302 ; B 183 -278 351 -59 ;
+U -1 ; WX 600 ; N lozenge ; G 305 ; B 72 -19 529 593 ;
+U -1 ; WX 645 ; N Delta ; G 306 ; B 15 0 585 583 ;
+U -1 ; WX 618 ; N notequal ; G 307 ; B 42 22 558 525 ;
+U -1 ; WX 702 ; N radical ; G 308 ; B 12 -60 642 697 ;
+U -1 ; WX 609 ; N lessequal ; G 309 ; B 3 0 549 591 ;
+U -1 ; WX 642 ; N greaterequal ; G 310 ; B 35 0 582 591 ;
+U -1 ; WX 600 ; N summation ; G 312 ; B 45 -97 538 671 ;
+U -1 ; WX 600 ; N partialdiff ; G 313 ; B 102 -16 524 590 ;
+U -1 ; WX 661 ; N afii10017 ; G 316 ; B -20 0 601 565 ;
+U -1 ; WX 621 ; N afii10018 ; G 317 ; B 20 0 561 565 ;
+U -1 ; WX 614 ; N afii10019 ; G 318 ; B 12 0 554 565 ;
+U -1 ; WX 610 ; N afii10020 ; G 319 ; B 31 0 550 565 ;
+U -1 ; WX 641 ; N afii10021 ; G 320 ; B 5 -136 581 565 ;
+U -1 ; WX 593 ; N afii10022 ; G 321 ; B 12 0 533 565 ;
+U -1 ; WX 593 ; N afii10023 ; G 322 ; B 12 0 533 720 ;
+U -1 ; WX 664 ; N afii10024 ; G 323 ; B -23 0 604 565 ;
+U -1 ; WX 581 ; N afii10025 ; G 324 ; B 60 -15 521 578 ;
+U -1 ; WX 621 ; N afii10026 ; G 325 ; B 20 0 561 565 ;
+U -1 ; WX 621 ; N afii10027 ; G 326 ; B 20 0 561 782 ;
+U -1 ; WX 634 ; N afii10028 ; G 327 ; B 6 0 574 565 ;
+U -1 ; WX 629 ; N afii10029 ; G 328 ; B 12 0 569 565 ;
+U -1 ; WX 664 ; N afii10030 ; G 329 ; B -19 0 604 566 ;
+U -1 ; WX 623 ; N afii10031 ; G 330 ; B 22 0 563 565 ;
+U -1 ; WX 621 ; N afii10032 ; G 331 ; B 20 -15 561 578 ;
+U -1 ; WX 621 ; N afii10033 ; G 332 ; B 20 0 561 565 ;
+U -1 ; WX 578 ; N afii10034 ; G 333 ; B 12 0 512 565 ;
+U -1 ; WX 606 ; N afii10035 ; G 334 ; B 32 -15 546 578 ;
+U -1 ; WX 601 ; N afii10036 ; G 335 ; B 40 0 541 565 ;
+U -1 ; WX 622 ; N afii10037 ; G 336 ; B 19 0 562 565 ;
+U -1 ; WX 637 ; N afii10038 ; G 337 ; B 4 0 577 565 ;
+U -1 ; WX 632 ; N afii10039 ; G 338 ; B 9 0 572 565 ;
+U -1 ; WX 634 ; N afii10040 ; G 339 ; B 6 -136 574 565 ;
+U -1 ; WX 604 ; N afii10041 ; G 340 ; B 37 0 544 565 ;
+U -1 ; WX 664 ; N afii10042 ; G 341 ; B -22 0 604 565 ;
+U -1 ; WX 638 ; N afii10043 ; G 342 ; B 2 -136 578 565 ;
+U -1 ; WX 638 ; N afii10044 ; G 343 ; B 8 0 578 565 ;
+U -1 ; WX 638 ; N afii10045 ; G 344 ; B 1 0 578 565 ;
+U -1 ; WX 578 ; N afii10046 ; G 345 ; B 12 0 512 565 ;
+U -1 ; WX 609 ; N afii10047 ; G 346 ; B 33 -15 549 578 ;
+U -1 ; WX 640 ; N afii10048 ; G 347 ; B 4 -15 580 580 ;
+U -1 ; WX 630 ; N afii10049 ; G 348 ; B 2 0 570 565 ;
+U -1 ; WX 614 ; N afii10065 ; G 349 ; B 40 -16 554 436 ;
+U -1 ; WX 592 ; N afii10066 ; G 350 ; B 50 -15 532 621 ;
+U -1 ; WX 578 ; N afii10067 ; G 351 ; B 81 -2 500 423 ;
+U -1 ; WX 578 ; N afii10068 ; G 352 ; B 95 -2 487 423 ;
+U -1 ; WX 606 ; N afii10069 ; G 353 ; B 34 -89 549 423 ;
+U -1 ; WX 593 ; N afii10070 ; G 354 ; B 32 -16 533 436 ;
+U -1 ; WX 593 ; N afii10071 ; G 355 ; B 32 -16 533 591 ;
+U -1 ; WX 661 ; N afii10072 ; G 356 ; B -20 0 601 423 ;
+U -1 ; WX 578 ; N afii10073 ; G 357 ; B 71 -16 511 436 ;
+U -1 ; WX 610 ; N afii10074 ; G 358 ; B 31 -2 551 425 ;
+U -1 ; WX 610 ; N afii10075 ; G 359 ; B 31 -2 551 666 ;
+U -1 ; WX 592 ; N afii10076 ; G 360 ; B 50 0 532 423 ;
+U -1 ; WX 625 ; N afii10077 ; G 361 ; B 16 -2 566 423 ;
+U -1 ; WX 637 ; N afii10078 ; G 362 ; B 8 0 577 423 ;
+U -1 ; WX 592 ; N afii10079 ; G 363 ; B 50 -2 533 425 ;
+U -1 ; WX 601 ; N afii10080 ; G 364 ; B 40 -16 541 436 ;
+U -1 ; WX 596 ; N afii10081 ; G 365 ; B 45 -2 538 423 ;
+U -1 ; WX 614 ; N afii10082 ; G 366 ; B -8 -198 554 436 ;
+U -1 ; WX 609 ; N afii10083 ; G 367 ; B 51 -16 549 436 ;
+U -1 ; WX 581 ; N afii10084 ; G 368 ; B 60 -2 521 425 ;
+U -1 ; WX 621 ; N afii10085 ; G 369 ; B 20 -198 561 423 ;
+U -1 ; WX 629 ; N afii10086 ; G 370 ; B 15 -198 569 628 ;
+U -1 ; WX 621 ; N afii10087 ; G 371 ; B 20 0 561 423 ;
+U -1 ; WX 611 ; N afii10088 ; G 372 ; B 29 -89 551 423 ;
+U -1 ; WX 594 ; N afii10089 ; G 373 ; B 47 -2 535 425 ;
+U -1 ; WX 653 ; N afii10090 ; G 374 ; B -12 0 594 423 ;
+U -1 ; WX 638 ; N afii10091 ; G 375 ; B 2 -89 580 423 ;
+U -1 ; WX 621 ; N afii10092 ; G 376 ; B 20 0 562 423 ;
+U -1 ; WX 649 ; N afii10093 ; G 377 ; B -8 0 590 425 ;
+U -1 ; WX 578 ; N afii10094 ; G 378 ; B 81 0 500 423 ;
+U -1 ; WX 599 ; N afii10095 ; G 379 ; B 43 -16 539 436 ;
+U -1 ; WX 640 ; N afii10096 ; G 380 ; B 2 -16 580 436 ;
+U -1 ; WX 592 ; N afii10097 ; G 381 ; B 50 0 532 423 ;
+U -1 ; WX 593 ; N uni0400 ; G 382 ; B 12 0 533 798 ;
+U -1 ; WX 639 ; N afii10051 ; G 383 ; B 0 -145 579 565 ;
+U -1 ; WX 610 ; N afii10052 ; G 384 ; B 31 0 550 797 ;
+U -1 ; WX 609 ; N afii10053 ; G 385 ; B 33 -15 549 578 ;
+U -1 ; WX 581 ; N afii10054 ; G 386 ; B 60 -15 521 578 ;
+U -1 ; WX 578 ; N afii10055 ; G 387 ; B 81 0 501 565 ;
+U -1 ; WX 578 ; N afii10056 ; G 388 ; B 81 0 501 720 ;
+U -1 ; WX 578 ; N afii10057 ; G 389 ; B 81 0 501 720 ;
+U -1 ; WX 714 ; N afii10058 ; G 390 ; B -42 0 654 565 ;
+U -1 ; WX 690 ; N afii10059 ; G 391 ; B -107 0 630 565 ;
+U -1 ; WX 659 ; N afii10060 ; G 392 ; B 0 0 599 565 ;
+U -1 ; WX 634 ; N afii10061 ; G 393 ; B 6 0 574 797 ;
+U -1 ; WX 621 ; N uni040D ; G 394 ; B 20 0 561 797 ;
+U -1 ; WX 622 ; N afii10062 ; G 395 ; B 19 0 562 782 ;
+U -1 ; WX 621 ; N afii10145 ; G 396 ; B 20 -136 561 565 ;
+U -1 ; WX 593 ; N uni0450 ; G 397 ; B 32 -16 533 669 ;
+U -1 ; WX 578 ; N afii10099 ; G 398 ; B 12 -117 492 604 ;
+U -1 ; WX 578 ; N afii10100 ; G 399 ; B 95 -2 487 656 ;
+U -1 ; WX 599 ; N afii10101 ; G 400 ; B 43 -16 539 436 ;
+U -1 ; WX 578 ; N afii10102 ; G 401 ; B 71 -16 511 436 ;
+U -1 ; WX 581 ; N afii10103 ; G 402 ; B 60 0 521 604 ;
+U -1 ; WX 581 ; N afii10104 ; G 403 ; B 60 0 521 579 ;
+U -1 ; WX 578 ; N afii10105 ; G 404 ; B 113 -198 473 604 ;
+U -1 ; WX 751 ; N afii10106 ; G 405 ; B 16 0 691 423 ;
+U -1 ; WX 664 ; N afii10107 ; G 406 ; B -43 -2 604 425 ;
+U -1 ; WX 623 ; N afii10108 ; G 407 ; B 12 0 563 604 ;
+U -1 ; WX 592 ; N afii10109 ; G 408 ; B 50 0 532 656 ;
+U -1 ; WX 610 ; N uni045D ; G 409 ; B 31 -2 551 656 ;
+U -1 ; WX 621 ; N afii10110 ; G 410 ; B 20 -198 561 642 ;
+U -1 ; WX 611 ; N afii10193 ; G 411 ; B 31 -89 551 427 ;
+U -1 ; WX 578 ; N uni048C ; G 412 ; B 12 0 512 565 ;
+U -1 ; WX 578 ; N uni048D ; G 413 ; B 81 0 500 423 ;
+U -1 ; WX 578 ; N uni048E ; G 414 ; B 12 0 514 565 ;
+U -1 ; WX 614 ; N uni048F ; G 415 ; B -8 -198 554 436 ;
+U -1 ; WX 610 ; N afii10050 ; G 416 ; B 31 0 550 678 ;
+U -1 ; WX 578 ; N afii10098 ; G 417 ; B 95 -2 487 512 ;
+U -1 ; WX 610 ; N uni0492 ; G 418 ; B 31 0 550 565 ;
+U -1 ; WX 578 ; N uni0493 ; G 419 ; B 77 -2 487 423 ;
+U -1 ; WX 610 ; N uni0494 ; G 420 ; B 31 -145 550 565 ;
+U -1 ; WX 578 ; N uni0495 ; G 421 ; B 95 -2 487 423 ;
+U -1 ; WX 683 ; N uni0496 ; G 422 ; B -24 -141 623 583 ;
+U -1 ; WX 680 ; N uni0497 ; G 423 ; B -21 -92 620 437 ;
+U -1 ; WX 581 ; N uni0498 ; G 424 ; B 60 -15 521 578 ;
+U -1 ; WX 578 ; N uni0499 ; G 425 ; B 71 -16 511 436 ;
+U -1 ; WX 634 ; N uni049A ; G 426 ; B 6 -136 574 565 ;
+U -1 ; WX 600 ; N uni049B ; G 427 ; B 50 -89 532 423 ;
+U -1 ; WX 634 ; N uni049C ; G 428 ; B 6 0 574 565 ;
+U -1 ; WX 592 ; N uni049D ; G 429 ; B 50 0 532 423 ;
+U -1 ; WX 634 ; N uni049E ; G 430 ; B 6 0 574 565 ;
+U -1 ; WX 592 ; N uni049F ; G 431 ; B 50 0 532 423 ;
+U -1 ; WX 634 ; N uni04A0 ; G 432 ; B 6 0 574 565 ;
+U -1 ; WX 592 ; N uni04A1 ; G 433 ; B 50 0 532 423 ;
+U -1 ; WX 641 ; N uni04A2 ; G 434 ; B 23 -141 581 583 ;
+U -1 ; WX 628 ; N uni04A3 ; G 435 ; B 31 -92 569 439 ;
+U -1 ; WX 623 ; N uni04A4 ; G 436 ; B 22 0 563 565 ;
+U -1 ; WX 610 ; N uni04A5 ; G 437 ; B 31 -2 551 425 ;
+U -1 ; WX 690 ; N uni04A6 ; G 438 ; B -60 -145 630 565 ;
+U -1 ; WX 610 ; N uni04A7 ; G 439 ; B 31 -2 551 423 ;
+U -1 ; WX 606 ; N uni04A8 ; G 440 ; B 32 -15 546 578 ;
+U -1 ; WX 609 ; N uni04A9 ; G 441 ; B 51 -16 549 436 ;
+U -1 ; WX 606 ; N uni04AA ; G 442 ; B 32 -15 546 578 ;
+U -1 ; WX 609 ; N uni04AB ; G 443 ; B 51 -16 549 436 ;
+U -1 ; WX 618 ; N uni04AC ; G 444 ; B 42 -141 558 583 ;
+U -1 ; WX 600 ; N uni04AD ; G 445 ; B 62 -92 538 437 ;
+U -1 ; WX 621 ; N uni04AE ; G 446 ; B 20 0 561 565 ;
+U -1 ; WX 639 ; N uni04AF ; G 447 ; B 21 -146 579 437 ;
+U -1 ; WX 639 ; N uni04B0 ; G 448 ; B 21 0 579 583 ;
+U -1 ; WX 639 ; N uni04B1 ; G 449 ; B 21 -146 579 437 ;
+U -1 ; WX 632 ; N uni04B2 ; G 450 ; B 9 -136 572 565 ;
+U -1 ; WX 621 ; N uni04B3 ; G 451 ; B 20 -89 561 423 ;
+U -1 ; WX 634 ; N uni04B4 ; G 452 ; B 6 -136 574 565 ;
+U -1 ; WX 618 ; N uni04B5 ; G 453 ; B 22 -89 558 423 ;
+U -1 ; WX 622 ; N uni04B6 ; G 454 ; B 38 -141 562 583 ;
+U -1 ; WX 611 ; N uni04B7 ; G 455 ; B 49 -92 552 439 ;
+U -1 ; WX 604 ; N uni04B8 ; G 456 ; B 37 0 544 565 ;
+U -1 ; WX 594 ; N uni04B9 ; G 457 ; B 47 -2 535 425 ;
+U -1 ; WX 604 ; N uni04BA ; G 458 ; B 37 0 544 565 ;
+U -1 ; WX 594 ; N uni04BB ; G 459 ; B 46 -2 534 425 ;
+U -1 ; WX 606 ; N uni04BC ; G 460 ; B 32 -15 546 578 ;
+U -1 ; WX 609 ; N uni04BD ; G 461 ; B 51 -16 549 436 ;
+U -1 ; WX 606 ; N uni04BE ; G 462 ; B 32 -15 546 578 ;
+U -1 ; WX 609 ; N uni04BF ; G 463 ; B 51 -16 549 436 ;
+U -1 ; WX 578 ; N uni04C0 ; G 464 ; B 81 0 501 565 ;
+U -1 ; WX 664 ; N uni04C1 ; G 465 ; B -23 0 604 782 ;
+U -1 ; WX 661 ; N uni04C2 ; G 466 ; B -20 0 601 640 ;
+U -1 ; WX 634 ; N uni04C3 ; G 467 ; B 6 0 574 565 ;
+U -1 ; WX 592 ; N uni04C4 ; G 468 ; B 50 0 532 423 ;
+U -1 ; WX 623 ; N uni04C7 ; G 469 ; B 22 0 563 565 ;
+U -1 ; WX 610 ; N uni04C8 ; G 470 ; B 31 -2 551 425 ;
+U -1 ; WX 604 ; N uni04CB ; G 471 ; B 37 0 544 565 ;
+U -1 ; WX 594 ; N uni04CC ; G 472 ; B 47 -2 535 425 ;
+U -1 ; WX 661 ; N uni04D0 ; G 473 ; B -20 0 601 782 ;
+U -1 ; WX 614 ; N uni04D1 ; G 474 ; B 40 -16 554 642 ;
+U -1 ; WX 661 ; N uni04D2 ; G 475 ; B -20 0 601 720 ;
+U -1 ; WX 614 ; N uni04D3 ; G 476 ; B 40 -16 554 579 ;
+U -1 ; WX 655 ; N uni04D4 ; G 477 ; B -19 0 595 565 ;
+U -1 ; WX 653 ; N uni04D5 ; G 478 ; B -12 -16 593 436 ;
+U -1 ; WX 593 ; N uni04D6 ; G 479 ; B 12 0 533 782 ;
+U -1 ; WX 593 ; N uni04D7 ; G 480 ; B 32 -16 533 642 ;
+U -1 ; WX 609 ; N uni04D8 ; G 481 ; B 33 -15 549 578 ;
+U -1 ; WX 599 ; N afii10846 ; G 482 ; B 43 -16 539 436 ;
+U -1 ; WX 609 ; N uni04DA ; G 483 ; B 33 -15 549 720 ;
+U -1 ; WX 599 ; N uni04DB ; G 484 ; B 43 -16 539 579 ;
+U -1 ; WX 664 ; N uni04DC ; G 485 ; B -23 0 604 720 ;
+U -1 ; WX 661 ; N uni04DD ; G 486 ; B -20 0 601 579 ;
+U -1 ; WX 581 ; N uni04DE ; G 487 ; B 60 -15 521 720 ;
+U -1 ; WX 578 ; N uni04DF ; G 488 ; B 71 -16 511 579 ;
+U -1 ; WX 581 ; N uni04E0 ; G 489 ; B 60 -15 521 578 ;
+U -1 ; WX 578 ; N uni04E1 ; G 490 ; B 71 -16 511 436 ;
+U -1 ; WX 621 ; N uni04E2 ; G 491 ; B 20 0 561 680 ;
+U -1 ; WX 610 ; N uni04E3 ; G 492 ; B 31 -2 551 539 ;
+U -1 ; WX 621 ; N uni04E4 ; G 493 ; B 20 0 561 720 ;
+U -1 ; WX 610 ; N uni04E5 ; G 494 ; B 31 -2 551 579 ;
+U -1 ; WX 621 ; N uni04E6 ; G 495 ; B 20 -15 561 720 ;
+U -1 ; WX 601 ; N uni04E7 ; G 496 ; B 40 -16 541 579 ;
+U -1 ; WX 621 ; N uni04E8 ; G 497 ; B 20 -15 561 578 ;
+U -1 ; WX 601 ; N uni04E9 ; G 498 ; B 40 -16 541 436 ;
+U -1 ; WX 621 ; N uni04EA ; G 499 ; B 20 -15 561 720 ;
+U -1 ; WX 601 ; N uni04EB ; G 500 ; B 40 -16 541 579 ;
+U -1 ; WX 609 ; N uni04EC ; G 501 ; B 33 -15 549 720 ;
+U -1 ; WX 599 ; N uni04ED ; G 502 ; B 43 -16 539 579 ;
+U -1 ; WX 622 ; N uni04EE ; G 503 ; B 19 0 562 680 ;
+U -1 ; WX 621 ; N uni04EF ; G 504 ; B 20 -198 561 539 ;
+U -1 ; WX 622 ; N uni04F0 ; G 505 ; B 19 0 562 720 ;
+U -1 ; WX 621 ; N uni04F1 ; G 506 ; B 20 -198 561 579 ;
+U -1 ; WX 622 ; N uni04F2 ; G 507 ; B 19 0 562 796 ;
+U -1 ; WX 621 ; N uni04F3 ; G 508 ; B 20 -198 561 654 ;
+U -1 ; WX 604 ; N uni04F4 ; G 509 ; B 37 0 544 720 ;
+U -1 ; WX 594 ; N uni04F5 ; G 510 ; B 47 -2 535 579 ;
+U -1 ; WX 638 ; N uni04F8 ; G 511 ; B 1 0 578 720 ;
+U -1 ; WX 649 ; N uni04F9 ; G 512 ; B -8 0 590 579 ;
+U -1 ; WX 578 ; N uniF6C4 ; G 513 ; B 95 -2 487 423 ;
+U -1 ; WX 608 ; N uniF6C5 ; G 514 ; B 52 -14 548 658 ;
+U -1 ; WX 606 ; N uniF6C6 ; G 515 ; B 34 -89 549 423 ;
+U -1 ; WX 596 ; N uniF6C7 ; G 516 ; B 45 -2 538 423 ;
+U -1 ; WX 581 ; N uniF6C8 ; G 517 ; B 60 -2 521 425 ;
+U -1 ; WX 606 ; N Ccircumflex ; G 518 ; B 32 -15 546 797 ;
+U -1 ; WX 609 ; N ccircumflex ; G 519 ; B 51 -16 549 656 ;
+U -1 ; WX 606 ; N Cdotaccent ; G 520 ; B 32 -15 546 720 ;
+U -1 ; WX 609 ; N cdotaccent ; G 521 ; B 51 -16 549 579 ;
+U -1 ; WX 593 ; N Ebreve ; G 522 ; B 12 0 533 782 ;
+U -1 ; WX 593 ; N ebreve ; G 523 ; B 32 -16 533 642 ;
+U -1 ; WX 634 ; N Gcircumflex ; G 524 ; B 32 -15 574 797 ;
+U -1 ; WX 634 ; N gcircumflex ; G 525 ; B 32 -198 574 656 ;
+U -1 ; WX 634 ; N Gdotaccent ; G 526 ; B 32 -15 574 720 ;
+U -1 ; WX 634 ; N gdotaccent ; G 527 ; B 32 -198 574 579 ;
+U -1 ; WX 623 ; N Hcircumflex ; G 528 ; B 22 0 563 797 ;
+U -1 ; WX 623 ; N hcircumflex ; G 529 ; B 12 0 563 837 ;
+U -1 ; WX 623 ; N Hbar ; G 530 ; B 22 0 563 565 ;
+U -1 ; WX 623 ; N hbar ; G 531 ; B 12 0 563 604 ;
+U -1 ; WX 578 ; N Itilde ; G 532 ; B 81 0 501 733 ;
+U -1 ; WX 581 ; N itilde ; G 533 ; B 60 0 521 591 ;
+U -1 ; WX 578 ; N Ibreve ; G 534 ; B 81 0 501 782 ;
+U -1 ; WX 581 ; N ibreve ; G 535 ; B 60 0 521 642 ;
+U -1 ; WX 578 ; N IJ ; G 536 ; B 81 0 501 565 ;
+U -1 ; WX 578 ; N ij ; G 537 ; B 113 -198 473 604 ;
+U -1 ; WX 654 ; N Jcircumflex ; G 538 ; B 51 -15 594 797 ;
+U -1 ; WX 578 ; N jcircumflex ; G 539 ; B 113 -198 473 772 ;
+U -1 ; WX 592 ; N kgreenlandic ; G 540 ; B 50 0 532 423 ;
+U -1 ; WX 614 ; N Ldot ; G 541 ; B 32 0 554 565 ;
+U -1 ; WX 594 ; N ldot ; G 542 ; B 60 0 534 604 ;
+U -1 ; WX 614 ; N napostrophe ; G 543 ; B 22 0 554 436 ;
+U -1 ; WX 634 ; N Eng ; G 544 ; B -8 0 574 565 ;
+U -1 ; WX 614 ; N eng ; G 545 ; B 22 0 554 436 ;
+U -1 ; WX 621 ; N Obreve ; G 546 ; B 20 -15 561 782 ;
+U -1 ; WX 601 ; N obreve ; G 547 ; B 40 -16 541 642 ;
+U -1 ; WX 581 ; N Scircumflex ; G 548 ; B 60 -15 521 797 ;
+U -1 ; WX 578 ; N scircumflex ; G 549 ; B 71 -16 511 656 ;
+U -1 ; WX 601 ; N _d_550 ; G 550 ; B 40 -222 541 565 ;
+U -1 ; WX 578 ; N _d_551 ; G 551 ; B 12 -238 512 573 ;
+U -1 ; WX 601 ; N Tbar ; G 552 ; B 40 0 541 565 ;
+U -1 ; WX 578 ; N tbar ; G 553 ; B 12 -16 512 573 ;
+U -1 ; WX 632 ; N Utilde ; G 554 ; B 9 -15 572 733 ;
+U -1 ; WX 614 ; N utilde ; G 555 ; B 12 -12 554 591 ;
+U -1 ; WX 632 ; N Ubreve ; G 556 ; B 9 -15 572 782 ;
+U -1 ; WX 614 ; N ubreve ; G 557 ; B 12 -12 554 642 ;
+U -1 ; WX 651 ; N Wcircumflex ; G 558 ; B -9 0 591 797 ;
+U -1 ; WX 641 ; N wcircumflex ; G 559 ; B 0 0 581 656 ;
+U -1 ; WX 621 ; N Ycircumflex ; G 560 ; B 20 0 561 797 ;
+U -1 ; WX 621 ; N ycircumflex ; G 561 ; B 20 -198 561 656 ;
+U -1 ; WX 614 ; N longs ; G 562 ; B 73 0 554 604 ;
+U -1 ; WX 746 ; N afii61352 ; G 563 ; B -15 -11 686 578 ;
+U -1 ; WX 638 ; N infinity ; G 564 ; B 2 120 578 484 ;
+U -1 ; WX 639 ; N uni1EF6 ; G 565 ; B 21 0 579 896 ;
+U -1 ; WX 639 ; N uni1EF7 ; G 566 ; B 21 -205 579 758 ;
+U -1 ; WX 639 ; N uni1EF4 ; G 567 ; B 21 -230 579 583 ;
+U -1 ; WX 639 ; N uni1EF5 ; G 568 ; B 21 -230 579 437 ;
+U -1 ; WX 681 ; N uni1EA2 ; G 569 ; B -21 0 621 896 ;
+U -1 ; WX 681 ; N uni1EA0 ; G 570 ; B -21 -230 621 583 ;
+U -1 ; WX 681 ; N uni1EA6 ; G 571 ; B -21 0 621 1083 ;
+U -1 ; WX 681 ; N uni1EA4 ; G 572 ; B -21 0 621 1083 ;
+U -1 ; WX 681 ; N uni1EAA ; G 573 ; B -21 0 621 1036 ;
+U -1 ; WX 681 ; N uni1EA8 ; G 574 ; B -21 0 621 1045 ;
+U -1 ; WX 681 ; N uni1EAC ; G 575 ; B -21 -230 621 857 ;
+U -1 ; WX 681 ; N uni1EB0 ; G 576 ; B -21 0 621 1078 ;
+U -1 ; WX 681 ; N uni1EAE ; G 577 ; B -21 0 621 1078 ;
+U -1 ; WX 681 ; N uni1EB4 ; G 578 ; B -21 0 621 1041 ;
+U -1 ; WX 681 ; N uni1EB2 ; G 579 ; B -21 0 621 1086 ;
+U -1 ; WX 681 ; N uni1EB6 ; G 580 ; B -21 -230 621 850 ;
+U -1 ; WX 610 ; N uni1EBC ; G 581 ; B 13 0 550 824 ;
+U -1 ; WX 610 ; N uni1EBA ; G 582 ; B 13 0 550 896 ;
+U -1 ; WX 610 ; N uni1EB8 ; G 583 ; B 13 -230 550 583 ;
+U -1 ; WX 610 ; N uni1EC0 ; G 584 ; B 13 0 550 1083 ;
+U -1 ; WX 610 ; N uni1EBE ; G 585 ; B 13 0 550 1083 ;
+U -1 ; WX 610 ; N uni1EC4 ; G 586 ; B 13 0 550 1036 ;
+U -1 ; WX 646 ; N uni1EC2 ; G 587 ; B 13 0 586 1045 ;
+U -1 ; WX 610 ; N uni1EC6 ; G 588 ; B 13 -230 550 857 ;
+U -1 ; WX 600 ; N uni1EC8 ; G 589 ; B 83 0 517 896 ;
+U -1 ; WX 631 ; N uni1EA3 ; G 590 ; B 42 -16 571 758 ;
+U -1 ; WX 631 ; N uni1EA1 ; G 591 ; B 42 -230 571 450 ;
+U -1 ; WX 631 ; N uni1EA7 ; G 592 ; B 42 -16 571 945 ;
+U -1 ; WX 631 ; N uni1EA5 ; G 593 ; B 42 -16 571 945 ;
+U -1 ; WX 631 ; N uni1EAB ; G 594 ; B 42 -16 571 898 ;
+U -1 ; WX 646 ; N uni1EA9 ; G 595 ; B 42 -16 586 907 ;
+U -1 ; WX 631 ; N uni1EAD ; G 596 ; B 42 -230 571 719 ;
+U -1 ; WX 631 ; N uni1EB1 ; G 597 ; B 42 -16 571 941 ;
+U -1 ; WX 631 ; N uni1EAF ; G 598 ; B 42 -16 571 941 ;
+U -1 ; WX 631 ; N uni1EB5 ; G 599 ; B 42 -16 571 904 ;
+U -1 ; WX 631 ; N uni1EB3 ; G 600 ; B 42 -16 571 949 ;
+U -1 ; WX 631 ; N uni1EB7 ; G 601 ; B 42 -230 571 713 ;
+U -1 ; WX 610 ; N uni1EBD ; G 602 ; B 33 -16 550 680 ;
+U -1 ; WX 610 ; N uni1EBB ; G 603 ; B 33 -16 550 758 ;
+U -1 ; WX 610 ; N uni1EB9 ; G 604 ; B 33 -230 550 450 ;
+U -1 ; WX 610 ; N uni1EC1 ; G 605 ; B 33 -16 550 945 ;
+U -1 ; WX 610 ; N uni1EBF ; G 606 ; B 33 -16 550 945 ;
+U -1 ; WX 610 ; N uni1EC5 ; G 607 ; B 33 -16 550 898 ;
+U -1 ; WX 646 ; N uni1EC3 ; G 608 ; B 33 -16 586 907 ;
+U -1 ; WX 610 ; N uni1EC7 ; G 609 ; B 33 -230 550 719 ;
+U -1 ; WX 600 ; N uni1EC9 ; G 610 ; B 62 0 538 758 ;
+U -1 ; WX 600 ; N uni1ECA ; G 611 ; B 83 -230 517 583 ;
+U -1 ; WX 639 ; N uni1ECE ; G 612 ; B 21 -14 579 896 ;
+U -1 ; WX 639 ; N uni1ECC ; G 613 ; B 21 -230 579 597 ;
+U -1 ; WX 639 ; N uni1ED2 ; G 614 ; B 21 -14 579 1083 ;
+U -1 ; WX 639 ; N uni1ED0 ; G 615 ; B 21 -14 579 1083 ;
+U -1 ; WX 639 ; N uni1ED6 ; G 616 ; B 21 -14 579 1036 ;
+U -1 ; WX 661 ; N uni1ED4 ; G 617 ; B 21 -14 601 1045 ;
+U -1 ; WX 639 ; N uni1ED8 ; G 618 ; B 21 -230 579 857 ;
+U -1 ; WX 639 ; N Ohorn ; G 619 ; B 21 -14 579 681 ;
+U -1 ; WX 639 ; N uni1EDC ; G 620 ; B 21 -14 579 891 ;
+U -1 ; WX 639 ; N uni1EDA ; G 621 ; B 21 -14 579 874 ;
+U -1 ; WX 639 ; N uni1EE0 ; G 622 ; B 21 -14 579 846 ;
+U -1 ; WX 639 ; N uni1EDE ; G 623 ; B 21 -14 579 911 ;
+U -1 ; WX 639 ; N uni1EE2 ; G 624 ; B 21 -230 579 681 ;
+U -1 ; WX 650 ; N _d_625 ; G 625 ; B 10 -14 590 790 ;
+U -1 ; WX 650 ; N uni1EE6 ; G 626 ; B 10 -14 590 896 ;
+U -1 ; WX 650 ; N uni1EE4 ; G 627 ; B 10 -230 590 583 ;
+U -1 ; WX 724 ; N Uhorn ; G 628 ; B 10 -14 664 681 ;
+U -1 ; WX 724 ; N uni1EEA ; G 629 ; B 10 -14 664 891 ;
+U -1 ; WX 724 ; N uni1EE8 ; G 630 ; B 10 -14 664 874 ;
+U -1 ; WX 724 ; N uni1EEE ; G 631 ; B 10 -14 664 846 ;
+U -1 ; WX 724 ; N uni1EEC ; G 632 ; B 10 -14 664 911 ;
+U -1 ; WX 724 ; N uni1EF0 ; G 633 ; B 10 -230 664 681 ;
+U -1 ; WX 639 ; N Ygrave ; G 634 ; B 21 0 579 866 ;
+U -1 ; WX 639 ; N uni1EF8 ; G 635 ; B 21 0 579 824 ;
+U -1 ; WX 600 ; N uni1ECB ; G 636 ; B 62 -230 538 623 ;
+U -1 ; WX 618 ; N uni1ECF ; G 637 ; B 42 -16 558 758 ;
+U -1 ; WX 618 ; N uni1ECD ; G 638 ; B 42 -230 558 450 ;
+U -1 ; WX 618 ; N uni1ED3 ; G 639 ; B 42 -16 558 945 ;
+U -1 ; WX 618 ; N uni1ED1 ; G 640 ; B 42 -16 558 945 ;
+U -1 ; WX 618 ; N uni1ED7 ; G 641 ; B 42 -16 558 898 ;
+U -1 ; WX 646 ; N uni1ED5 ; G 642 ; B 42 -16 586 907 ;
+U -1 ; WX 618 ; N uni1ED9 ; G 643 ; B 42 -230 558 719 ;
+U -1 ; WX 645 ; N ohorn ; G 644 ; B 42 -16 585 535 ;
+U -1 ; WX 645 ; N uni1EDD ; G 645 ; B 42 -16 585 775 ;
+U -1 ; WX 645 ; N uni1EDB ; G 646 ; B 42 -16 585 738 ;
+U -1 ; WX 645 ; N uni1EE1 ; G 647 ; B 42 -16 585 702 ;
+U -1 ; WX 645 ; N uni1EDF ; G 648 ; B 42 -16 585 775 ;
+U -1 ; WX 645 ; N uni1EE3 ; G 649 ; B 42 -230 585 535 ;
+U -1 ; WX 631 ; N _d_650 ; G 650 ; B 13 -13 571 643 ;
+U -1 ; WX 631 ; N uni1EE7 ; G 651 ; B 13 -13 571 758 ;
+U -1 ; WX 631 ; N uni1EE5 ; G 652 ; B 13 -230 571 437 ;
+U -1 ; WX 705 ; N uhorn ; G 653 ; B 13 -13 645 535 ;
+U -1 ; WX 705 ; N uni1EEB ; G 654 ; B 13 -13 645 775 ;
+U -1 ; WX 705 ; N uni1EE9 ; G 655 ; B 13 -13 645 738 ;
+U -1 ; WX 705 ; N uni1EEF ; G 656 ; B 13 -13 645 702 ;
+U -1 ; WX 705 ; N uni1EED ; G 657 ; B 13 -13 645 775 ;
+U -1 ; WX 705 ; N uni1EF1 ; G 658 ; B 13 -230 645 535 ;
+U -1 ; WX 639 ; N ygrave ; G 659 ; B 21 -205 579 729 ;
+U -1 ; WX 639 ; N uni1EF9 ; G 660 ; B 21 -205 579 680 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/ZapfDingbats.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/ZapfDingbats.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/ZapfDingbats.afm	(revision 2000)
@@ -0,0 +1,225 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu May  1 15:14:13 1997
+Comment UniqueID 43082
+Comment VMusage 45775 55535
+FontName ZapfDingbats
+FullName ITC Zapf Dingbats
+FamilyName ZapfDingbats
+Weight Medium
+ItalicAngle 0
+IsFixedPitch false
+CharacterSet Special
+FontBBox -1 -143 981 820 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 002.000
+Notice Copyright (c) 1985, 1987, 1988, 1989, 1997 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Dingbats is a registered trademark of International Typeface Corporation.
+EncodingScheme FontSpecific
+StdHW 28
+StdVW 90
+StartCharMetrics 202
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 974 ; N a1 ; B 35 72 939 621 ;
+C 34 ; WX 961 ; N a2 ; B 35 81 927 611 ;
+C 35 ; WX 974 ; N a202 ; B 35 72 939 621 ;
+C 36 ; WX 980 ; N a3 ; B 35 0 945 692 ;
+C 37 ; WX 719 ; N a4 ; B 34 139 685 566 ;
+C 38 ; WX 789 ; N a5 ; B 35 -14 755 705 ;
+C 39 ; WX 790 ; N a119 ; B 35 -14 755 705 ;
+C 40 ; WX 791 ; N a118 ; B 35 -13 761 705 ;
+C 41 ; WX 690 ; N a117 ; B 34 138 655 553 ;
+C 42 ; WX 960 ; N a11 ; B 35 123 925 568 ;
+C 43 ; WX 939 ; N a12 ; B 35 134 904 559 ;
+C 44 ; WX 549 ; N a13 ; B 29 -11 516 705 ;
+C 45 ; WX 855 ; N a14 ; B 34 59 820 632 ;
+C 46 ; WX 911 ; N a15 ; B 35 50 876 642 ;
+C 47 ; WX 933 ; N a16 ; B 35 139 899 550 ;
+C 48 ; WX 911 ; N a105 ; B 35 50 876 642 ;
+C 49 ; WX 945 ; N a17 ; B 35 139 909 553 ;
+C 50 ; WX 974 ; N a18 ; B 35 104 938 587 ;
+C 51 ; WX 755 ; N a19 ; B 34 -13 721 705 ;
+C 52 ; WX 846 ; N a20 ; B 36 -14 811 705 ;
+C 53 ; WX 762 ; N a21 ; B 35 0 727 692 ;
+C 54 ; WX 761 ; N a22 ; B 35 0 727 692 ;
+C 55 ; WX 571 ; N a23 ; B -1 -68 571 661 ;
+C 56 ; WX 677 ; N a24 ; B 36 -13 642 705 ;
+C 57 ; WX 763 ; N a25 ; B 35 0 728 692 ;
+C 58 ; WX 760 ; N a26 ; B 35 0 726 692 ;
+C 59 ; WX 759 ; N a27 ; B 35 0 725 692 ;
+C 60 ; WX 754 ; N a28 ; B 35 0 720 692 ;
+C 61 ; WX 494 ; N a6 ; B 35 0 460 692 ;
+C 62 ; WX 552 ; N a7 ; B 35 0 517 692 ;
+C 63 ; WX 537 ; N a8 ; B 35 0 503 692 ;
+C 64 ; WX 577 ; N a9 ; B 35 96 542 596 ;
+C 65 ; WX 692 ; N a10 ; B 35 -14 657 705 ;
+C 66 ; WX 786 ; N a29 ; B 35 -14 751 705 ;
+C 67 ; WX 788 ; N a30 ; B 35 -14 752 705 ;
+C 68 ; WX 788 ; N a31 ; B 35 -14 753 705 ;
+C 69 ; WX 790 ; N a32 ; B 35 -14 756 705 ;
+C 70 ; WX 793 ; N a33 ; B 35 -13 759 705 ;
+C 71 ; WX 794 ; N a34 ; B 35 -13 759 705 ;
+C 72 ; WX 816 ; N a35 ; B 35 -14 782 705 ;
+C 73 ; WX 823 ; N a36 ; B 35 -14 787 705 ;
+C 74 ; WX 789 ; N a37 ; B 35 -14 754 705 ;
+C 75 ; WX 841 ; N a38 ; B 35 -14 807 705 ;
+C 76 ; WX 823 ; N a39 ; B 35 -14 789 705 ;
+C 77 ; WX 833 ; N a40 ; B 35 -14 798 705 ;
+C 78 ; WX 816 ; N a41 ; B 35 -13 782 705 ;
+C 79 ; WX 831 ; N a42 ; B 35 -14 796 705 ;
+C 80 ; WX 923 ; N a43 ; B 35 -14 888 705 ;
+C 81 ; WX 744 ; N a44 ; B 35 0 710 692 ;
+C 82 ; WX 723 ; N a45 ; B 35 0 688 692 ;
+C 83 ; WX 749 ; N a46 ; B 35 0 714 692 ;
+C 84 ; WX 790 ; N a47 ; B 34 -14 756 705 ;
+C 85 ; WX 792 ; N a48 ; B 35 -14 758 705 ;
+C 86 ; WX 695 ; N a49 ; B 35 -14 661 706 ;
+C 87 ; WX 776 ; N a50 ; B 35 -6 741 699 ;
+C 88 ; WX 768 ; N a51 ; B 35 -7 734 699 ;
+C 89 ; WX 792 ; N a52 ; B 35 -14 757 705 ;
+C 90 ; WX 759 ; N a53 ; B 35 0 725 692 ;
+C 91 ; WX 707 ; N a54 ; B 35 -13 672 704 ;
+C 92 ; WX 708 ; N a55 ; B 35 -14 672 705 ;
+C 93 ; WX 682 ; N a56 ; B 35 -14 647 705 ;
+C 94 ; WX 701 ; N a57 ; B 35 -14 666 705 ;
+C 95 ; WX 826 ; N a58 ; B 35 -14 791 705 ;
+C 96 ; WX 815 ; N a59 ; B 35 -14 780 705 ;
+C 97 ; WX 789 ; N a60 ; B 35 -14 754 705 ;
+C 98 ; WX 789 ; N a61 ; B 35 -14 754 705 ;
+C 99 ; WX 707 ; N a62 ; B 34 -14 673 705 ;
+C 100 ; WX 687 ; N a63 ; B 36 0 651 692 ;
+C 101 ; WX 696 ; N a64 ; B 35 0 661 691 ;
+C 102 ; WX 689 ; N a65 ; B 35 0 655 692 ;
+C 103 ; WX 786 ; N a66 ; B 34 -14 751 705 ;
+C 104 ; WX 787 ; N a67 ; B 35 -14 752 705 ;
+C 105 ; WX 713 ; N a68 ; B 35 -14 678 705 ;
+C 106 ; WX 791 ; N a69 ; B 35 -14 756 705 ;
+C 107 ; WX 785 ; N a70 ; B 36 -14 751 705 ;
+C 108 ; WX 791 ; N a71 ; B 35 -14 757 705 ;
+C 109 ; WX 873 ; N a72 ; B 35 -14 838 705 ;
+C 110 ; WX 761 ; N a73 ; B 35 0 726 692 ;
+C 111 ; WX 762 ; N a74 ; B 35 0 727 692 ;
+C 112 ; WX 762 ; N a203 ; B 35 0 727 692 ;
+C 113 ; WX 759 ; N a75 ; B 35 0 725 692 ;
+C 114 ; WX 759 ; N a204 ; B 35 0 725 692 ;
+C 115 ; WX 892 ; N a76 ; B 35 0 858 705 ;
+C 116 ; WX 892 ; N a77 ; B 35 -14 858 692 ;
+C 117 ; WX 788 ; N a78 ; B 35 -14 754 705 ;
+C 118 ; WX 784 ; N a79 ; B 35 -14 749 705 ;
+C 119 ; WX 438 ; N a81 ; B 35 -14 403 705 ;
+C 120 ; WX 138 ; N a82 ; B 35 0 104 692 ;
+C 121 ; WX 277 ; N a83 ; B 35 0 242 692 ;
+C 122 ; WX 415 ; N a84 ; B 35 0 380 692 ;
+C 123 ; WX 392 ; N a97 ; B 35 263 357 705 ;
+C 124 ; WX 392 ; N a98 ; B 34 263 357 705 ;
+C 125 ; WX 668 ; N a99 ; B 35 263 633 705 ;
+C 126 ; WX 668 ; N a100 ; B 36 263 634 705 ;
+C 128 ; WX 390 ; N a89 ; B 35 -14 356 705 ;
+C 129 ; WX 390 ; N a90 ; B 35 -14 355 705 ;
+C 130 ; WX 317 ; N a93 ; B 35 0 283 692 ;
+C 131 ; WX 317 ; N a94 ; B 35 0 283 692 ;
+C 132 ; WX 276 ; N a91 ; B 35 0 242 692 ;
+C 133 ; WX 276 ; N a92 ; B 35 0 242 692 ;
+C 134 ; WX 509 ; N a205 ; B 35 0 475 692 ;
+C 135 ; WX 509 ; N a85 ; B 35 0 475 692 ;
+C 136 ; WX 410 ; N a206 ; B 35 0 375 692 ;
+C 137 ; WX 410 ; N a86 ; B 35 0 375 692 ;
+C 138 ; WX 234 ; N a87 ; B 35 -14 199 705 ;
+C 139 ; WX 234 ; N a88 ; B 35 -14 199 705 ;
+C 140 ; WX 334 ; N a95 ; B 35 0 299 692 ;
+C 141 ; WX 334 ; N a96 ; B 35 0 299 692 ;
+C 161 ; WX 732 ; N a101 ; B 35 -143 697 806 ;
+C 162 ; WX 544 ; N a102 ; B 56 -14 488 706 ;
+C 163 ; WX 544 ; N a103 ; B 34 -14 508 705 ;
+C 164 ; WX 910 ; N a104 ; B 35 40 875 651 ;
+C 165 ; WX 667 ; N a106 ; B 35 -14 633 705 ;
+C 166 ; WX 760 ; N a107 ; B 35 -14 726 705 ;
+C 167 ; WX 760 ; N a108 ; B 0 121 758 569 ;
+C 168 ; WX 776 ; N a112 ; B 35 0 741 705 ;
+C 169 ; WX 595 ; N a111 ; B 34 -14 560 705 ;
+C 170 ; WX 694 ; N a110 ; B 35 -14 659 705 ;
+C 171 ; WX 626 ; N a109 ; B 34 0 591 705 ;
+C 172 ; WX 788 ; N a120 ; B 35 -14 754 705 ;
+C 173 ; WX 788 ; N a121 ; B 35 -14 754 705 ;
+C 174 ; WX 788 ; N a122 ; B 35 -14 754 705 ;
+C 175 ; WX 788 ; N a123 ; B 35 -14 754 705 ;
+C 176 ; WX 788 ; N a124 ; B 35 -14 754 705 ;
+C 177 ; WX 788 ; N a125 ; B 35 -14 754 705 ;
+C 178 ; WX 788 ; N a126 ; B 35 -14 754 705 ;
+C 179 ; WX 788 ; N a127 ; B 35 -14 754 705 ;
+C 180 ; WX 788 ; N a128 ; B 35 -14 754 705 ;
+C 181 ; WX 788 ; N a129 ; B 35 -14 754 705 ;
+C 182 ; WX 788 ; N a130 ; B 35 -14 754 705 ;
+C 183 ; WX 788 ; N a131 ; B 35 -14 754 705 ;
+C 184 ; WX 788 ; N a132 ; B 35 -14 754 705 ;
+C 185 ; WX 788 ; N a133 ; B 35 -14 754 705 ;
+C 186 ; WX 788 ; N a134 ; B 35 -14 754 705 ;
+C 187 ; WX 788 ; N a135 ; B 35 -14 754 705 ;
+C 188 ; WX 788 ; N a136 ; B 35 -14 754 705 ;
+C 189 ; WX 788 ; N a137 ; B 35 -14 754 705 ;
+C 190 ; WX 788 ; N a138 ; B 35 -14 754 705 ;
+C 191 ; WX 788 ; N a139 ; B 35 -14 754 705 ;
+C 192 ; WX 788 ; N a140 ; B 35 -14 754 705 ;
+C 193 ; WX 788 ; N a141 ; B 35 -14 754 705 ;
+C 194 ; WX 788 ; N a142 ; B 35 -14 754 705 ;
+C 195 ; WX 788 ; N a143 ; B 35 -14 754 705 ;
+C 196 ; WX 788 ; N a144 ; B 35 -14 754 705 ;
+C 197 ; WX 788 ; N a145 ; B 35 -14 754 705 ;
+C 198 ; WX 788 ; N a146 ; B 35 -14 754 705 ;
+C 199 ; WX 788 ; N a147 ; B 35 -14 754 705 ;
+C 200 ; WX 788 ; N a148 ; B 35 -14 754 705 ;
+C 201 ; WX 788 ; N a149 ; B 35 -14 754 705 ;
+C 202 ; WX 788 ; N a150 ; B 35 -14 754 705 ;
+C 203 ; WX 788 ; N a151 ; B 35 -14 754 705 ;
+C 204 ; WX 788 ; N a152 ; B 35 -14 754 705 ;
+C 205 ; WX 788 ; N a153 ; B 35 -14 754 705 ;
+C 206 ; WX 788 ; N a154 ; B 35 -14 754 705 ;
+C 207 ; WX 788 ; N a155 ; B 35 -14 754 705 ;
+C 208 ; WX 788 ; N a156 ; B 35 -14 754 705 ;
+C 209 ; WX 788 ; N a157 ; B 35 -14 754 705 ;
+C 210 ; WX 788 ; N a158 ; B 35 -14 754 705 ;
+C 211 ; WX 788 ; N a159 ; B 35 -14 754 705 ;
+C 212 ; WX 894 ; N a160 ; B 35 58 860 634 ;
+C 213 ; WX 838 ; N a161 ; B 35 152 803 540 ;
+C 214 ; WX 1016 ; N a163 ; B 34 152 981 540 ;
+C 215 ; WX 458 ; N a164 ; B 35 -127 422 820 ;
+C 216 ; WX 748 ; N a196 ; B 35 94 698 597 ;
+C 217 ; WX 924 ; N a165 ; B 35 140 890 552 ;
+C 218 ; WX 748 ; N a192 ; B 35 94 698 597 ;
+C 219 ; WX 918 ; N a166 ; B 35 166 884 526 ;
+C 220 ; WX 927 ; N a167 ; B 35 32 892 660 ;
+C 221 ; WX 928 ; N a168 ; B 35 129 891 562 ;
+C 222 ; WX 928 ; N a169 ; B 35 128 893 563 ;
+C 223 ; WX 834 ; N a170 ; B 35 155 799 537 ;
+C 224 ; WX 873 ; N a171 ; B 35 93 838 599 ;
+C 225 ; WX 828 ; N a172 ; B 35 104 791 588 ;
+C 226 ; WX 924 ; N a173 ; B 35 98 889 594 ;
+C 227 ; WX 924 ; N a162 ; B 35 98 889 594 ;
+C 228 ; WX 917 ; N a174 ; B 35 0 882 692 ;
+C 229 ; WX 930 ; N a175 ; B 35 84 896 608 ;
+C 230 ; WX 931 ; N a176 ; B 35 84 896 608 ;
+C 231 ; WX 463 ; N a177 ; B 35 -99 429 791 ;
+C 232 ; WX 883 ; N a178 ; B 35 71 848 623 ;
+C 233 ; WX 836 ; N a179 ; B 35 44 802 648 ;
+C 234 ; WX 836 ; N a193 ; B 35 44 802 648 ;
+C 235 ; WX 867 ; N a180 ; B 35 101 832 591 ;
+C 236 ; WX 867 ; N a199 ; B 35 101 832 591 ;
+C 237 ; WX 696 ; N a181 ; B 35 44 661 648 ;
+C 238 ; WX 696 ; N a200 ; B 35 44 661 648 ;
+C 239 ; WX 874 ; N a182 ; B 35 77 840 619 ;
+C 241 ; WX 874 ; N a201 ; B 35 73 840 615 ;
+C 242 ; WX 760 ; N a183 ; B 35 0 725 692 ;
+C 243 ; WX 946 ; N a184 ; B 35 160 911 533 ;
+C 244 ; WX 771 ; N a197 ; B 34 37 736 655 ;
+C 245 ; WX 865 ; N a185 ; B 35 207 830 481 ;
+C 246 ; WX 771 ; N a194 ; B 34 37 736 655 ;
+C 247 ; WX 888 ; N a198 ; B 34 -19 853 712 ;
+C 248 ; WX 967 ; N a186 ; B 35 124 932 568 ;
+C 249 ; WX 888 ; N a195 ; B 34 -19 853 712 ;
+C 250 ; WX 831 ; N a187 ; B 35 113 796 579 ;
+C 251 ; WX 873 ; N a188 ; B 36 118 838 578 ;
+C 252 ; WX 927 ; N a189 ; B 35 150 891 542 ;
+C 253 ; WX 970 ; N a190 ; B 35 76 931 616 ;
+C 254 ; WX 918 ; N a191 ; B 34 99 884 593 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Times-Bold.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Times-Bold.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Times-Bold.ufm	(revision 2000)
@@ -0,0 +1,719 @@
+StartFontMetrics 4.1
+FontName Nimbus_Roman_No9_L_Medium
+FullName Nimbus Roman No9 L Medium
+Notice 
+EncodingScheme FontSpecific
+FamilyName Nimbus Roman No9 L
+Weight Medium
+Version 1.0
+Characters 661
+ItalicAngle 0.0
+Ascender 1158
+Descender -341
+UnderlineThickness 50
+UnderlinePosition -100
+IsFixedPitch false
+FontBBox -168 -341 1093 1158
+StartCharMetrics 700
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 250 ; N .null ; G 1 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N exclam ; G 2 ; B 81 -13 251 691 ;
+U -1 ; WX 555 ; N quotedbl ; G 3 ; B 83 404 472 691 ;
+U -1 ; WX 529 ; N numbersign ; G 4 ; B 4 0 496 700 ;
+U -1 ; WX 505 ; N dollar ; G 5 ; B 29 -99 472 750 ;
+U -1 ; WX 1000 ; N percent ; G 6 ; B 124 -14 877 692 ;
+U -1 ; WX 833 ; N ampersand ; G 7 ; B 62 -16 787 691 ;
+U -1 ; WX 278 ; N quotesingle ; G 104 ; B 75 404 204 691 ;
+U -1 ; WX 339 ; N parenleft ; G 9 ; B 46 -168 306 694 ;
+U -1 ; WX 333 ; N parenright ; G 10 ; B 27 -168 287 694 ;
+U -1 ; WX 500 ; N asterisk ; G 11 ; B 56 255 447 691 ;
+U -1 ; WX 570 ; N plus ; G 12 ; B 33 0 537 506 ;
+U -1 ; WX 256 ; N comma ; G 13 ; B 39 -180 223 155 ;
+U -1 ; WX 333 ; N hyphen ; G 14 ; B 44 171 287 287 ;
+U -1 ; WX 250 ; N period ; G 15 ; B 41 -13 210 156 ;
+U -1 ; WX 335 ; N slash ; G 16 ; B -24 -19 302 691 ;
+U -1 ; WX 509 ; N zero ; G 17 ; B 24 -13 476 688 ;
+U -1 ; WX 500 ; N one ; G 18 ; B 65 0 442 688 ;
+U -1 ; WX 511 ; N two ; G 19 ; B 17 0 478 688 ;
+U -1 ; WX 501 ; N three ; G 20 ; B 16 -14 468 688 ;
+U -1 ; WX 508 ; N four ; G 21 ; B 19 0 475 688 ;
+U -1 ; WX 503 ; N five ; G 22 ; B 22 -8 470 676 ;
+U -1 ; WX 508 ; N six ; G 23 ; B 28 -13 475 688 ;
+U -1 ; WX 510 ; N seven ; G 24 ; B 17 0 477 676 ;
+U -1 ; WX 505 ; N eight ; G 25 ; B 28 -13 472 688 ;
+U -1 ; WX 506 ; N nine ; G 26 ; B 26 -13 473 688 ;
+U -1 ; WX 333 ; N colon ; G 27 ; B 82 -13 251 472 ;
+U -1 ; WX 333 ; N semicolon ; G 28 ; B 82 -180 266 472 ;
+U -1 ; WX 572 ; N less ; G 29 ; B 31 -12 539 518 ;
+U -1 ; WX 570 ; N equal ; G 30 ; B 33 107 537 399 ;
+U -1 ; WX 572 ; N greater ; G 31 ; B 31 -12 539 518 ;
+U -1 ; WX 500 ; N question ; G 32 ; B 57 -13 445 689 ;
+U -1 ; WX 930 ; N at ; G 33 ; B 108 -19 822 691 ;
+U -1 ; WX 722 ; N A ; G 34 ; B 9 0 689 690 ;
+U -1 ; WX 667 ; N B ; G 35 ; B 16 0 619 676 ;
+U -1 ; WX 722 ; N C ; G 36 ; B 49 -19 687 691 ;
+U -1 ; WX 723 ; N D ; G 37 ; B 14 0 690 676 ;
+U -1 ; WX 674 ; N E ; G 38 ; B 16 0 641 676 ;
+U -1 ; WX 616 ; N F ; G 39 ; B 16 0 583 676 ;
+U -1 ; WX 788 ; N G ; G 40 ; B 37 -19 755 691 ;
+U -1 ; WX 792 ; N H ; G 41 ; B 21 0 759 676 ;
+U -1 ; WX 403 ; N I ; G 42 ; B 20 0 370 676 ;
+U -1 ; WX 512 ; N J ; G 43 ; B 3 -96 479 676 ;
+U -1 ; WX 802 ; N K ; G 44 ; B 30 0 769 676 ;
+U -1 ; WX 671 ; N L ; G 45 ; B 19 0 638 676 ;
+U -1 ; WX 954 ; N M ; G 46 ; B 14 0 921 676 ;
+U -1 ; WX 734 ; N N ; G 47 ; B 16 -18 701 676 ;
+U -1 ; WX 778 ; N O ; G 48 ; B 35 -19 743 691 ;
+U -1 ; WX 633 ; N P ; G 49 ; B 16 0 600 676 ;
+U -1 ; WX 778 ; N Q ; G 50 ; B 35 -176 743 691 ;
+U -1 ; WX 748 ; N R ; G 51 ; B 26 0 715 676 ;
+U -1 ; WX 556 ; N S ; G 52 ; B 35 -19 513 692 ;
+U -1 ; WX 669 ; N T ; G 53 ; B 31 0 636 676 ;
+U -1 ; WX 734 ; N U ; G 54 ; B 16 -19 701 676 ;
+U -1 ; WX 734 ; N V ; G 55 ; B 16 -18 701 676 ;
+U -1 ; WX 1014 ; N W ; G 56 ; B 19 -15 981 676 ;
+U -1 ; WX 732 ; N X ; G 57 ; B 16 0 699 676 ;
+U -1 ; WX 732 ; N Y ; G 58 ; B 15 0 699 676 ;
+U -1 ; WX 667 ; N Z ; G 59 ; B 28 0 634 676 ;
+U -1 ; WX 334 ; N bracketleft ; G 60 ; B 67 -149 301 678 ;
+U -1 ; WX 336 ; N backslash ; G 61 ; B -25 -19 303 691 ;
+U -1 ; WX 333 ; N bracketright ; G 62 ; B 32 -149 266 678 ;
+U -1 ; WX 581 ; N asciicircum ; G 63 ; B 73 311 509 676 ;
+U -1 ; WX 533 ; N underscore ; G 64 ; B 0 -125 500 -75 ;
+U -1 ; WX 333 ; N grave ; G 124 ; B 8 528 246 713 ;
+U -1 ; WX 521 ; N a ; G 66 ; B 25 -14 488 473 ;
+U -1 ; WX 556 ; N b ; G 67 ; B 17 -14 521 676 ;
+U -1 ; WX 463 ; N c ; G 68 ; B 25 -14 430 473 ;
+U -1 ; WX 567 ; N d ; G 69 ; B 25 -14 534 676 ;
+U -1 ; WX 459 ; N e ; G 70 ; B 25 -14 426 473 ;
+U -1 ; WX 422 ; N f ; G 71 ; B 14 0 389 691 ;
+U -1 ; WX 516 ; N g ; G 72 ; B 28 -206 483 473 ;
+U -1 ; WX 567 ; N h ; G 73 ; B 16 0 534 676 ;
+U -1 ; WX 288 ; N i ; G 74 ; B 16 0 255 691 ;
+U -1 ; WX 333 ; N j ; G 75 ; B -57 -203 263 691 ;
+U -1 ; WX 576 ; N k ; G 76 ; B 22 0 543 676 ;
+U -1 ; WX 288 ; N l ; G 77 ; B 16 0 255 676 ;
+U -1 ; WX 847 ; N m ; G 78 ; B 16 0 814 473 ;
+U -1 ; WX 572 ; N n ; G 79 ; B 21 0 539 473 ;
+U -1 ; WX 509 ; N o ; G 80 ; B 25 -14 476 473 ;
+U -1 ; WX 557 ; N p ; G 81 ; B 19 -205 524 473 ;
+U -1 ; WX 569 ; N q ; G 82 ; B 34 -205 536 473 ;
+U -1 ; WX 467 ; N r ; G 83 ; B 29 0 434 473 ;
+U -1 ; WX 394 ; N s ; G 84 ; B 25 -14 361 473 ;
+U -1 ; WX 365 ; N t ; G 85 ; B 20 -12 332 630 ;
+U -1 ; WX 570 ; N u ; G 86 ; B 16 -14 537 461 ;
+U -1 ; WX 518 ; N v ; G 87 ; B 21 -14 485 461 ;
+U -1 ; WX 740 ; N w ; G 88 ; B 23 -14 707 461 ;
+U -1 ; WX 517 ; N x ; G 89 ; B 12 0 484 461 ;
+U -1 ; WX 513 ; N y ; G 90 ; B 16 -205 480 461 ;
+U -1 ; WX 453 ; N z ; G 91 ; B 21 0 420 461 ;
+U -1 ; WX 394 ; N braceleft ; G 92 ; B 22 -175 340 698 ;
+U -1 ; WX 220 ; N bar ; G 93 ; B 66 -19 154 691 ;
+U -1 ; WX 405 ; N braceright ; G 94 ; B 54 -175 372 698 ;
+U -1 ; WX 524 ; N asciitilde ; G 95 ; B 29 175 491 331 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 511 ; N Euro ; G 289 ; B -36 -24 478 671 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N quotesinglbase ; G 117 ; B 79 -180 263 155 ;
+U -1 ; WX 531 ; N florin ; G 101 ; B 0 -155 498 706 ;
+U -1 ; WX 501 ; N quotedblbase ; G 118 ; B 14 -180 468 155 ;
+U -1 ; WX 1000 ; N ellipsis ; G 121 ; B 82 -13 917 156 ;
+U -1 ; WX 500 ; N dagger ; G 112 ; B 47 -134 453 691 ;
+U -1 ; WX 500 ; N daggerdbl ; G 113 ; B 45 -132 456 691 ;
+U -1 ; WX 368 ; N circumflex ; G 126 ; B -2 528 335 704 ;
+U -1 ; WX 1028 ; N perthousand ; G 122 ; B 7 -29 995 706 ;
+U -1 ; WX 556 ; N Scaron ; G 189 ; B 35 -19 513 914 ;
+U -1 ; WX 338 ; N guilsinglleft ; G 107 ; B 51 36 305 415 ;
+U -1 ; WX 1014 ; N OE ; G 142 ; B 22 -5 981 684 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 667 ; N Zcaron ; G 200 ; B 28 0 634 914 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N quoteleft ; G 65 ; B 70 356 254 691 ;
+U -1 ; WX 333 ; N quoteright ; G 8 ; B 79 356 263 691 ;
+U -1 ; WX 519 ; N quotedblleft ; G 105 ; B 32 356 486 691 ;
+U -1 ; WX 501 ; N quotedblright ; G 119 ; B 14 356 468 691 ;
+U -1 ; WX 350 ; N bullet ; G 116 ; B 35 198 315 478 ;
+U -1 ; WX 533 ; N endash ; G 111 ; B 0 181 500 271 ;
+U -1 ; WX 1033 ; N emdash ; G 137 ; B 0 181 1000 271 ;
+U -1 ; WX 382 ; N tilde ; G 127 ; B -16 547 349 674 ;
+U -1 ; WX 1010 ; N trademark ; G 297 ; B 24 271 977 676 ;
+U -1 ; WX 396 ; N scaron ; G 253 ; B 25 -14 363 704 ;
+U -1 ; WX 333 ; N guilsinglright ; G 108 ; B 28 36 282 415 ;
+U -1 ; WX 729 ; N oe ; G 148 ; B 22 -14 696 473 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 453 ; N zcaron ; G 264 ; B 21 0 420 704 ;
+U -1 ; WX 732 ; N Ydieresis ; G 204 ; B 15 0 699 876 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 333 ; N exclamdown ; G 96 ; B 82 -203 252 501 ;
+U -1 ; WX 500 ; N cent ; G 97 ; B 53 -140 458 588 ;
+U -1 ; WX 510 ; N sterling ; G 98 ; B 21 -14 477 684 ;
+U -1 ; WX 559 ; N currency ; G 103 ; B -26 61 526 613 ;
+U -1 ; WX 580 ; N yen ; G 100 ; B -64 0 547 676 ;
+U -1 ; WX 220 ; N brokenbar ; G 314 ; B 66 -19 154 691 ;
+U -1 ; WX 500 ; N section ; G 102 ; B 57 -132 443 691 ;
+U -1 ; WX 370 ; N dieresis ; G 131 ; B -2 537 337 666 ;
+U -1 ; WX 754 ; N copyright ; G 303 ; B 26 -19 721 691 ;
+U -1 ; WX 334 ; N ordfeminine ; G 139 ; B -1 397 301 688 ;
+U -1 ; WX 506 ; N guillemotleft ; G 106 ; B 23 36 473 415 ;
+U -1 ; WX 570 ; N logicalnot ; G 311 ; B 33 108 537 399 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 754 ; N registered ; G 304 ; B 26 -19 721 691 ;
+U -1 ; WX 364 ; N macron ; G 128 ; B 1 565 331 637 ;
+U -1 ; WX 400 ; N degree ; G 293 ; B 57 402 343 688 ;
+U -1 ; WX 570 ; N plusminus ; G 298 ; B 33 0 537 568 ;
+U -1 ; WX 333 ; N twosuperior ; G 291 ; B 0 275 300 688 ;
+U -1 ; WX 330 ; N threesuperior ; G 292 ; B 3 268 297 688 ;
+U -1 ; WX 357 ; N acute ; G 125 ; B 86 528 324 713 ;
+U -1 ; WX 569 ; N mu ; G 315 ; B 33 -206 536 461 ;
+U -1 ; WX 552 ; N paragraph ; G 115 ; B 0 -186 519 676 ;
+U -1 ; WX 250 ; N periodcentered ; G 114 ; B 41 248 210 417 ;
+U -1 ; WX 333 ; N cedilla ; G 133 ; B 68 -218 294 0 ;
+U -1 ; WX 306 ; N onesuperior ; G 290 ; B 28 275 273 688 ;
+U -1 ; WX 345 ; N ordmasculine ; G 143 ; B 18 397 312 688 ;
+U -1 ; WX 510 ; N guillemotright ; G 120 ; B 27 36 477 415 ;
+U -1 ; WX 776 ; N onequarter ; G 300 ; B 28 -12 743 688 ;
+U -1 ; WX 808 ; N onehalf ; G 299 ; B -7 -12 775 688 ;
+U -1 ; WX 766 ; N threequarters ; G 301 ; B 23 -12 733 688 ;
+U -1 ; WX 500 ; N questiondown ; G 123 ; B 55 -201 443 501 ;
+U -1 ; WX 722 ; N Agrave ; G 152 ; B 9 0 689 923 ;
+U -1 ; WX 722 ; N Aacute ; G 151 ; B 9 0 689 923 ;
+U -1 ; WX 722 ; N Acircumflex ; G 153 ; B 9 0 689 914 ;
+U -1 ; WX 722 ; N Atilde ; G 155 ; B 9 0 689 884 ;
+U -1 ; WX 722 ; N Adieresis ; G 150 ; B 9 0 689 876 ;
+U -1 ; WX 722 ; N Aring ; G 156 ; B 9 0 689 948 ;
+U -1 ; WX 1000 ; N AE ; G 138 ; B 4 0 951 676 ;
+U -1 ; WX 722 ; N Ccedilla ; G 158 ; B 49 -218 687 691 ;
+U -1 ; WX 674 ; N Egrave ; G 164 ; B 16 0 641 923 ;
+U -1 ; WX 674 ; N Eacute ; G 163 ; B 16 0 641 923 ;
+U -1 ; WX 674 ; N Ecircumflex ; G 165 ; B 16 0 641 914 ;
+U -1 ; WX 674 ; N Edieresis ; G 162 ; B 16 0 641 876 ;
+U -1 ; WX 403 ; N Igrave ; G 172 ; B 20 0 370 923 ;
+U -1 ; WX 403 ; N Iacute ; G 171 ; B 20 0 370 923 ;
+U -1 ; WX 403 ; N Icircumflex ; G 173 ; B 20 0 370 914 ;
+U -1 ; WX 403 ; N Idieresis ; G 170 ; B 20 0 370 876 ;
+U -1 ; WX 723 ; N Eth ; G 283 ; B 6 0 690 676 ;
+U -1 ; WX 734 ; N Ntilde ; G 179 ; B 16 -18 701 884 ;
+U -1 ; WX 778 ; N Ograve ; G 182 ; B 35 -19 743 923 ;
+U -1 ; WX 778 ; N Oacute ; G 181 ; B 35 -19 743 923 ;
+U -1 ; WX 778 ; N Ocircumflex ; G 183 ; B 35 -19 743 914 ;
+U -1 ; WX 778 ; N Otilde ; G 184 ; B 35 -19 743 884 ;
+U -1 ; WX 778 ; N Odieresis ; G 180 ; B 35 -19 743 876 ;
+U -1 ; WX 570 ; N multiply ; G 295 ; B 48 16 522 490 ;
+U -1 ; WX 778 ; N Oslash ; G 141 ; B 35 -74 743 737 ;
+U -1 ; WX 734 ; N Ugrave ; G 194 ; B 16 -19 701 923 ;
+U -1 ; WX 734 ; N Uacute ; G 193 ; B 16 -19 701 923 ;
+U -1 ; WX 734 ; N Ucircumflex ; G 195 ; B 16 -19 701 914 ;
+U -1 ; WX 734 ; N Udieresis ; G 192 ; B 16 -19 701 876 ;
+U -1 ; WX 732 ; N Yacute ; G 198 ; B 15 0 699 923 ;
+U -1 ; WX 633 ; N Thorn ; G 285 ; B 16 0 600 676 ;
+U -1 ; WX 556 ; N germandbls ; G 149 ; B 19 -12 517 691 ;
+U -1 ; WX 521 ; N agrave ; G 218 ; B 25 -14 488 713 ;
+U -1 ; WX 521 ; N aacute ; G 217 ; B 25 -14 488 713 ;
+U -1 ; WX 521 ; N acircumflex ; G 219 ; B 25 -14 488 704 ;
+U -1 ; WX 521 ; N atilde ; G 221 ; B 25 -14 488 674 ;
+U -1 ; WX 521 ; N adieresis ; G 216 ; B 25 -14 488 666 ;
+U -1 ; WX 521 ; N aring ; G 222 ; B 25 -14 488 750 ;
+U -1 ; WX 726 ; N ae ; G 144 ; B 33 -14 693 473 ;
+U -1 ; WX 463 ; N ccedilla ; G 226 ; B 25 -218 430 473 ;
+U -1 ; WX 459 ; N egrave ; G 230 ; B 25 -14 426 713 ;
+U -1 ; WX 459 ; N eacute ; G 229 ; B 25 -14 426 713 ;
+U -1 ; WX 459 ; N ecircumflex ; G 231 ; B 25 -14 426 704 ;
+U -1 ; WX 459 ; N edieresis ; G 228 ; B 25 -14 426 666 ;
+U -1 ; WX 288 ; N igrave ; G 238 ; B -26 0 255 713 ;
+U -1 ; WX 323 ; N iacute ; G 237 ; B 16 0 290 713 ;
+U -1 ; WX 334 ; N icircumflex ; G 239 ; B -36 0 301 704 ;
+U -1 ; WX 336 ; N idieresis ; G 236 ; B -36 0 303 666 ;
+U -1 ; WX 509 ; N eth ; G 287 ; B 25 -14 476 691 ;
+U -1 ; WX 572 ; N ntilde ; G 244 ; B 21 0 539 674 ;
+U -1 ; WX 509 ; N ograve ; G 247 ; B 25 -14 476 713 ;
+U -1 ; WX 509 ; N oacute ; G 246 ; B 25 -14 476 713 ;
+U -1 ; WX 509 ; N ocircumflex ; G 248 ; B 25 -14 476 704 ;
+U -1 ; WX 509 ; N otilde ; G 249 ; B 25 -14 476 674 ;
+U -1 ; WX 509 ; N odieresis ; G 245 ; B 25 -14 476 666 ;
+U -1 ; WX 570 ; N divide ; G 296 ; B 33 -31 537 537 ;
+U -1 ; WX 509 ; N oslash ; G 147 ; B 25 -92 476 549 ;
+U -1 ; WX 570 ; N ugrave ; G 258 ; B 16 -14 537 713 ;
+U -1 ; WX 570 ; N uacute ; G 257 ; B 16 -14 537 713 ;
+U -1 ; WX 570 ; N ucircumflex ; G 259 ; B 16 -14 537 704 ;
+U -1 ; WX 570 ; N udieresis ; G 256 ; B 16 -14 537 666 ;
+U -1 ; WX 513 ; N yacute ; G 262 ; B 16 -205 480 713 ;
+U -1 ; WX 557 ; N thorn ; G 288 ; B 19 -205 524 676 ;
+U -1 ; WX 513 ; N ydieresis ; G 266 ; B 16 -205 480 666 ;
+U -1 ; WX 362 ; N fraction ; G 99 ; B -168 -12 329 688 ;
+U -1 ; WX 569 ; N fi ; G 109 ; B 14 0 536 691 ;
+U -1 ; WX 569 ; N fl ; G 110 ; B 14 0 536 691 ;
+U -1 ; WX 351 ; N breve ; G 129 ; B 15 528 318 691 ;
+U -1 ; WX 333 ; N dotaccent ; G 130 ; B 103 537 232 666 ;
+U -1 ; WX 333 ; N ring ; G 132 ; B 60 537 273 750 ;
+U -1 ; WX 458 ; N hungarumlaut ; G 134 ; B -13 528 425 713 ;
+U -1 ; WX 352 ; N ogonek ; G 135 ; B 90 -173 319 44 ;
+U -1 ; WX 368 ; N caron ; G 136 ; B -2 528 335 704 ;
+U -1 ; WX 671 ; N Lslash ; G 140 ; B 19 0 638 676 ;
+U -1 ; WX 288 ; N dotlessi ; G 145 ; B 16 0 255 461 ;
+U -1 ; WX 336 ; N lslash ; G 146 ; B -22 0 303 676 ;
+U -1 ; WX 722 ; N Abreve ; G 154 ; B 9 0 689 901 ;
+U -1 ; WX 855 ; N Aogonek ; G 157 ; B 9 -173 822 690 ;
+U -1 ; WX 722 ; N Cacute ; G 159 ; B 49 -19 687 923 ;
+U -1 ; WX 722 ; N Ccaron ; G 160 ; B 49 -19 687 914 ;
+U -1 ; WX 723 ; N Dcaron ; G 161 ; B 14 0 690 914 ;
+U -1 ; WX 674 ; N Ecaron ; G 166 ; B 16 0 641 914 ;
+U -1 ; WX 674 ; N Edotaccent ; G 167 ; B 16 0 641 876 ;
+U -1 ; WX 770 ; N Eogonek ; G 168 ; B 16 -173 737 676 ;
+U -1 ; WX 788 ; N Gbreve ; G 169 ; B 37 -19 755 901 ;
+U -1 ; WX 403 ; N Idotaccent ; G 174 ; B 20 0 370 876 ;
+U -1 ; WX 671 ; N Lacute ; G 175 ; B 19 0 638 923 ;
+U -1 ; WX 671 ; N Lcaron ; G 176 ; B 19 0 638 691 ;
+U -1 ; WX 734 ; N Nacute ; G 177 ; B 16 -18 701 923 ;
+U -1 ; WX 734 ; N Ncaron ; G 178 ; B 16 -18 701 914 ;
+U -1 ; WX 778 ; N Ohungarumlaut ; G 185 ; B 35 -19 743 923 ;
+U -1 ; WX 748 ; N Racute ; G 186 ; B 26 0 715 923 ;
+U -1 ; WX 748 ; N Rcaron ; G 187 ; B 26 0 715 914 ;
+U -1 ; WX 556 ; N Sacute ; G 188 ; B 35 -19 513 923 ;
+U -1 ; WX 556 ; N Scedilla ; G 190 ; B 35 -218 513 692 ;
+U -1 ; WX 669 ; N Tcaron ; G 191 ; B 31 0 636 914 ;
+U -1 ; WX 734 ; N Uring ; G 196 ; B 16 -19 701 960 ;
+U -1 ; WX 734 ; N Uhungarumlaut ; G 197 ; B 16 -19 701 923 ;
+U -1 ; WX 667 ; N Zacute ; G 199 ; B 28 0 634 923 ;
+U -1 ; WX 667 ; N Zdotaccent ; G 201 ; B 28 0 634 876 ;
+U -1 ; WX 722 ; N Amacron ; G 202 ; B 9 0 689 847 ;
+U -1 ; WX 669 ; N Tcommaaccent ; G 203 ; B 31 -341 636 676 ;
+U -1 ; WX 674 ; N Emacron ; G 205 ; B 16 0 641 847 ;
+U -1 ; WX 403 ; N Imacron ; G 206 ; B 20 0 370 847 ;
+U -1 ; WX 538 ; N Iogonek ; G 207 ; B 20 -173 505 676 ;
+U -1 ; WX 802 ; N Kcommaaccent ; G 208 ; B 30 -341 769 676 ;
+U -1 ; WX 671 ; N Lcommaaccent ; G 209 ; B 19 -341 638 676 ;
+U -1 ; WX 734 ; N Ncommaaccent ; G 210 ; B 16 -341 701 676 ;
+U -1 ; WX 778 ; N Omacron ; G 211 ; B 35 -19 743 847 ;
+U -1 ; WX 748 ; N Rcommaaccent ; G 212 ; B 26 -341 715 676 ;
+U -1 ; WX 788 ; N Gcommaaccent ; G 213 ; B 37 -341 755 691 ;
+U -1 ; WX 734 ; N Umacron ; G 214 ; B 16 -19 701 847 ;
+U -1 ; WX 734 ; N Uogonek ; G 215 ; B 16 -173 701 676 ;
+U -1 ; WX 521 ; N abreve ; G 220 ; B 25 -14 488 691 ;
+U -1 ; WX 533 ; N aogonek ; G 223 ; B 25 -173 500 473 ;
+U -1 ; WX 463 ; N cacute ; G 224 ; B 25 -14 430 713 ;
+U -1 ; WX 463 ; N ccaron ; G 225 ; B 25 -14 430 704 ;
+U -1 ; WX 698 ; N dcaron ; G 227 ; B 25 -14 665 691 ;
+U -1 ; WX 459 ; N ecaron ; G 232 ; B 25 -14 426 704 ;
+U -1 ; WX 459 ; N edotaccent ; G 233 ; B 25 -14 426 666 ;
+U -1 ; WX 477 ; N eogonek ; G 234 ; B 25 -173 444 473 ;
+U -1 ; WX 516 ; N gbreve ; G 235 ; B 28 -206 483 691 ;
+U -1 ; WX 330 ; N lacute ; G 240 ; B 16 0 297 923 ;
+U -1 ; WX 429 ; N lcaron ; G 241 ; B 16 0 396 691 ;
+U -1 ; WX 572 ; N nacute ; G 242 ; B 21 0 539 713 ;
+U -1 ; WX 572 ; N ncaron ; G 243 ; B 21 0 539 704 ;
+U -1 ; WX 542 ; N ohungarumlaut ; G 250 ; B 25 -14 509 713 ;
+U -1 ; WX 467 ; N racute ; G 251 ; B 29 0 434 713 ;
+U -1 ; WX 394 ; N sacute ; G 252 ; B 25 -14 361 713 ;
+U -1 ; WX 394 ; N scommaaccent ; G 254 ; B 25 -341 361 473 ;
+U -1 ; WX 433 ; N tcaron ; G 255 ; B 20 -12 400 691 ;
+U -1 ; WX 570 ; N uring ; G 260 ; B 16 -14 537 750 ;
+U -1 ; WX 570 ; N uhungarumlaut ; G 261 ; B 16 -14 537 713 ;
+U -1 ; WX 453 ; N zacute ; G 263 ; B 21 0 420 713 ;
+U -1 ; WX 453 ; N zdotaccent ; G 265 ; B 21 0 420 666 ;
+U -1 ; WX 365 ; N tcommaaccent ; G 267 ; B 20 -341 332 630 ;
+U -1 ; WX 521 ; N amacron ; G 268 ; B 25 -14 488 637 ;
+U -1 ; WX 459 ; N emacron ; G 269 ; B 25 -14 426 637 ;
+U -1 ; WX 336 ; N imacron ; G 270 ; B -27 0 303 637 ;
+U -1 ; WX 576 ; N kcommaaccent ; G 271 ; B 22 -341 543 676 ;
+U -1 ; WX 288 ; N lcommaaccent ; G 272 ; B 16 -341 255 676 ;
+U -1 ; WX 572 ; N ncommaaccent ; G 273 ; B 21 -341 539 473 ;
+U -1 ; WX 509 ; N omacron ; G 274 ; B 25 -14 476 637 ;
+U -1 ; WX 467 ; N rcommaaccent ; G 275 ; B 29 -341 434 473 ;
+U -1 ; WX 570 ; N umacron ; G 276 ; B 16 -14 537 637 ;
+U -1 ; WX 589 ; N uogonek ; G 277 ; B 16 -173 556 461 ;
+U -1 ; WX 467 ; N rcaron ; G 278 ; B 29 0 434 704 ;
+U -1 ; WX 394 ; N scedilla ; G 279 ; B 25 -218 361 473 ;
+U -1 ; WX 516 ; N gcommaaccent ; G 280 ; B 28 -206 483 811 ;
+U -1 ; WX 421 ; N iogonek ; G 281 ; B 16 -173 388 691 ;
+U -1 ; WX 556 ; N Scommaaccent ; G 282 ; B 35 -341 513 692 ;
+U -1 ; WX 723 ; N Dcroat ; G 284 ; B 6 0 690 676 ;
+U -1 ; WX 567 ; N dcroat ; G 286 ; B 25 -14 534 676 ;
+U -1 ; WX 570 ; N minus ; G 294 ; B 33 209 537 297 ;
+U -1 ; WX 333 ; N commaaccent ; G 302 ; B 84 -341 249 -40 ;
+U -1 ; WX 499 ; N lozenge ; G 305 ; B 18 0 466 740 ;
+U -1 ; WX 641 ; N Delta ; G 306 ; B 6 0 608 688 ;
+U -1 ; WX 570 ; N notequal ; G 307 ; B 33 -13 537 519 ;
+U -1 ; WX 568 ; N radical ; G 308 ; B -17 -35 535 916 ;
+U -1 ; WX 572 ; N lessequal ; G 309 ; B 31 0 539 642 ;
+U -1 ; WX 572 ; N greaterequal ; G 310 ; B 31 0 539 642 ;
+U -1 ; WX 728 ; N summation ; G 312 ; B 14 -123 695 752 ;
+U -1 ; WX 505 ; N partialdiff ; G 313 ; B 16 -20 472 743 ;
+U -1 ; WX 722 ; N afii10017 ; G 316 ; B 9 0 689 690 ;
+U -1 ; WX 667 ; N afii10018 ; G 317 ; B 16 0 619 676 ;
+U -1 ; WX 667 ; N afii10019 ; G 318 ; B 16 0 619 676 ;
+U -1 ; WX 596 ; N afii10020 ; G 319 ; B 16 0 563 676 ;
+U -1 ; WX 792 ; N afii10021 ; G 320 ; B 21 -200 759 676 ;
+U -1 ; WX 674 ; N afii10022 ; G 321 ; B 16 0 641 676 ;
+U -1 ; WX 674 ; N afii10023 ; G 322 ; B 16 0 641 855 ;
+U -1 ; WX 1107 ; N afii10024 ; G 323 ; B 35 0 1073 686 ;
+U -1 ; WX 579 ; N afii10025 ; G 324 ; B 14 -19 546 691 ;
+U -1 ; WX 787 ; N afii10026 ; G 325 ; B 16 0 754 676 ;
+U -1 ; WX 787 ; N afii10027 ; G 326 ; B 16 0 754 889 ;
+U -1 ; WX 764 ; N afii10028 ; G 327 ; B 16 0 718 686 ;
+U -1 ; WX 778 ; N afii10029 ; G 328 ; B 18 -14 744 676 ;
+U -1 ; WX 956 ; N afii10030 ; G 329 ; B 16 0 923 676 ;
+U -1 ; WX 787 ; N afii10031 ; G 330 ; B 16 0 754 676 ;
+U -1 ; WX 778 ; N afii10032 ; G 331 ; B 35 -19 743 691 ;
+U -1 ; WX 787 ; N afii10033 ; G 332 ; B 16 0 754 676 ;
+U -1 ; WX 633 ; N afii10034 ; G 333 ; B 16 0 600 676 ;
+U -1 ; WX 722 ; N afii10035 ; G 334 ; B 49 -19 687 691 ;
+U -1 ; WX 669 ; N afii10036 ; G 335 ; B 31 0 636 676 ;
+U -1 ; WX 747 ; N afii10037 ; G 336 ; B 15 -14 714 676 ;
+U -1 ; WX 817 ; N afii10038 ; G 337 ; B 12 0 784 676 ;
+U -1 ; WX 732 ; N afii10039 ; G 338 ; B 16 0 699 676 ;
+U -1 ; WX 787 ; N afii10040 ; G 339 ; B 16 -200 754 676 ;
+U -1 ; WX 792 ; N afii10041 ; G 340 ; B 21 0 759 676 ;
+U -1 ; WX 1126 ; N afii10042 ; G 341 ; B 16 0 1093 676 ;
+U -1 ; WX 1126 ; N afii10043 ; G 342 ; B 16 -200 1093 676 ;
+U -1 ; WX 867 ; N afii10044 ; G 343 ; B 85 0 807 676 ;
+U -1 ; WX 983 ; N afii10045 ; G 344 ; B 16 0 950 676 ;
+U -1 ; WX 633 ; N afii10046 ; G 345 ; B 16 0 600 676 ;
+U -1 ; WX 722 ; N afii10047 ; G 346 ; B 49 -19 687 691 ;
+U -1 ; WX 1114 ; N afii10048 ; G 347 ; B 16 -19 1067 691 ;
+U -1 ; WX 748 ; N afii10049 ; G 348 ; B 26 0 715 676 ;
+U -1 ; WX 521 ; N afii10065 ; G 349 ; B 25 -14 488 473 ;
+U -1 ; WX 509 ; N afii10066 ; G 350 ; B 28 -14 476 690 ;
+U -1 ; WX 502 ; N afii10067 ; G 351 ; B 21 0 464 461 ;
+U -1 ; WX 448 ; N afii10068 ; G 352 ; B 21 0 415 461 ;
+U -1 ; WX 577 ; N afii10069 ; G 353 ; B 17 -142 544 461 ;
+U -1 ; WX 459 ; N afii10070 ; G 354 ; B 25 -14 426 473 ;
+U -1 ; WX 459 ; N afii10071 ; G 355 ; B 25 -14 426 640 ;
+U -1 ; WX 768 ; N afii10072 ; G 356 ; B 12 0 735 470 ;
+U -1 ; WX 416 ; N afii10073 ; G 357 ; B 15 -14 383 473 ;
+U -1 ; WX 572 ; N afii10074 ; G 358 ; B 21 0 539 461 ;
+U -1 ; WX 572 ; N afii10075 ; G 359 ; B 21 0 539 674 ;
+U -1 ; WX 547 ; N afii10076 ; G 360 ; B 22 0 514 470 ;
+U -1 ; WX 552 ; N afii10077 ; G 361 ; B 7 -10 519 461 ;
+U -1 ; WX 683 ; N afii10078 ; G 362 ; B 21 -14 650 461 ;
+U -1 ; WX 572 ; N afii10079 ; G 363 ; B 21 0 539 461 ;
+U -1 ; WX 509 ; N afii10080 ; G 364 ; B 25 -14 476 473 ;
+U -1 ; WX 572 ; N afii10081 ; G 365 ; B 21 0 539 461 ;
+U -1 ; WX 557 ; N afii10082 ; G 366 ; B 19 -205 524 473 ;
+U -1 ; WX 463 ; N afii10083 ; G 367 ; B 25 -14 430 473 ;
+U -1 ; WX 508 ; N afii10084 ; G 368 ; B 12 0 475 461 ;
+U -1 ; WX 513 ; N afii10085 ; G 369 ; B 16 -205 480 461 ;
+U -1 ; WX 826 ; N afii10086 ; G 370 ; B 34 -205 793 683 ;
+U -1 ; WX 517 ; N afii10087 ; G 371 ; B 12 0 484 461 ;
+U -1 ; WX 573 ; N afii10088 ; G 372 ; B 21 -142 540 461 ;
+U -1 ; WX 572 ; N afii10089 ; G 373 ; B 27 0 539 461 ;
+U -1 ; WX 836 ; N afii10090 ; G 374 ; B 21 0 803 461 ;
+U -1 ; WX 837 ; N afii10091 ; G 375 ; B 21 -142 804 461 ;
+U -1 ; WX 623 ; N afii10092 ; G 376 ; B 12 0 590 461 ;
+U -1 ; WX 772 ; N afii10093 ; G 377 ; B 21 0 739 461 ;
+U -1 ; WX 523 ; N afii10094 ; G 378 ; B 21 0 490 461 ;
+U -1 ; WX 460 ; N afii10095 ; G 379 ; B 29 -14 427 473 ;
+U -1 ; WX 790 ; N afii10096 ; G 380 ; B 29 -14 753 473 ;
+U -1 ; WX 523 ; N afii10097 ; G 381 ; B 12 0 490 461 ;
+U -1 ; WX 674 ; N uni0400 ; G 382 ; B 16 0 641 911 ;
+U -1 ; WX 932 ; N afii10051 ; G 383 ; B 31 -148 818 676 ;
+U -1 ; WX 616 ; N afii10052 ; G 384 ; B 16 0 583 911 ;
+U -1 ; WX 722 ; N afii10053 ; G 385 ; B 49 -19 687 691 ;
+U -1 ; WX 556 ; N afii10054 ; G 386 ; B 35 -19 513 692 ;
+U -1 ; WX 399 ; N afii10055 ; G 387 ; B 16 0 366 676 ;
+U -1 ; WX 399 ; N afii10056 ; G 388 ; B 16 0 366 855 ;
+U -1 ; WX 512 ; N afii10057 ; G 389 ; B 3 -96 479 676 ;
+U -1 ; WX 1036 ; N afii10058 ; G 390 ; B 18 -14 1003 676 ;
+U -1 ; WX 1036 ; N afii10059 ; G 391 ; B 21 0 1003 676 ;
+U -1 ; WX 936 ; N afii10060 ; G 392 ; B 31 0 903 676 ;
+U -1 ; WX 778 ; N afii10061 ; G 393 ; B 30 0 732 911 ;
+U -1 ; WX 792 ; N uni040D ; G 394 ; B 21 0 759 911 ;
+U -1 ; WX 747 ; N afii10062 ; G 395 ; B 15 -14 714 889 ;
+U -1 ; WX 792 ; N afii10145 ; G 396 ; B 21 -228 759 676 ;
+U -1 ; WX 459 ; N uni0450 ; G 397 ; B 25 -14 426 696 ;
+U -1 ; WX 556 ; N afii10099 ; G 398 ; B 13 -203 485 676 ;
+U -1 ; WX 463 ; N afii10100 ; G 399 ; B 21 0 430 696 ;
+U -1 ; WX 463 ; N afii10101 ; G 400 ; B 25 -14 430 473 ;
+U -1 ; WX 394 ; N afii10102 ; G 401 ; B 25 -14 361 473 ;
+U -1 ; WX 288 ; N afii10103 ; G 402 ; B 16 0 255 691 ;
+U -1 ; WX 338 ; N afii10104 ; G 403 ; B -34 0 305 640 ;
+U -1 ; WX 333 ; N afii10105 ; G 404 ; B -57 -203 263 691 ;
+U -1 ; WX 806 ; N afii10106 ; G 405 ; B 7 -10 773 461 ;
+U -1 ; WX 806 ; N afii10107 ; G 406 ; B 21 0 773 461 ;
+U -1 ; WX 567 ; N afii10108 ; G 407 ; B 13 0 534 676 ;
+U -1 ; WX 547 ; N afii10109 ; G 408 ; B 22 0 514 696 ;
+U -1 ; WX 572 ; N uni045D ; G 409 ; B 21 0 539 696 ;
+U -1 ; WX 513 ; N afii10110 ; G 410 ; B 16 -205 480 674 ;
+U -1 ; WX 572 ; N afii10193 ; G 411 ; B 21 -179 539 461 ;
+U -1 ; WX 633 ; N uni048C ; G 412 ; B 16 0 600 676 ;
+U -1 ; WX 523 ; N uni048D ; G 413 ; B 17 0 490 461 ;
+U -1 ; WX 633 ; N uni048E ; G 414 ; B 16 0 600 676 ;
+U -1 ; WX 558 ; N uni048F ; G 415 ; B 19 -205 525 473 ;
+U -1 ; WX 617 ; N afii10050 ; G 416 ; B 16 0 584 842 ;
+U -1 ; WX 463 ; N afii10098 ; G 417 ; B 21 0 430 571 ;
+U -1 ; WX 616 ; N uni0492 ; G 418 ; B 16 0 583 676 ;
+U -1 ; WX 463 ; N uni0493 ; G 419 ; B 21 0 430 461 ;
+U -1 ; WX 616 ; N uni0494 ; G 420 ; B 16 0 583 676 ;
+U -1 ; WX 565 ; N uni0495 ; G 421 ; B 21 -204 532 461 ;
+U -1 ; WX 1117 ; N uni0496 ; G 422 ; B 35 -167 1084 686 ;
+U -1 ; WX 774 ; N uni0497 ; G 423 ; B 12 -110 741 470 ;
+U -1 ; WX 593 ; N uni0498 ; G 424 ; B 13 -218 560 692 ;
+U -1 ; WX 401 ; N uni0499 ; G 425 ; B 16 -218 368 473 ;
+U -1 ; WX 778 ; N uni049A ; G 426 ; B 30 -167 743 686 ;
+U -1 ; WX 550 ; N uni049B ; G 427 ; B 22 -110 517 470 ;
+U -1 ; WX 778 ; N uni049C ; G 428 ; B 30 0 731 686 ;
+U -1 ; WX 547 ; N uni049D ; G 429 ; B 22 0 514 470 ;
+U -1 ; WX 778 ; N uni049E ; G 430 ; B 31 0 734 686 ;
+U -1 ; WX 547 ; N uni049F ; G 431 ; B 16 0 514 470 ;
+U -1 ; WX 967 ; N uni04A0 ; G 432 ; B 85 0 921 686 ;
+U -1 ; WX 646 ; N uni04A1 ; G 433 ; B 12 0 613 470 ;
+U -1 ; WX 792 ; N uni04A2 ; G 434 ; B 21 -167 759 676 ;
+U -1 ; WX 577 ; N uni04A3 ; G 435 ; B 21 -110 544 461 ;
+U -1 ; WX 1019 ; N uni04A4 ; G 436 ; B 21 0 986 676 ;
+U -1 ; WX 740 ; N uni04A5 ; G 437 ; B 21 0 707 461 ;
+U -1 ; WX 792 ; N uni04A6 ; G 438 ; B 21 0 759 676 ;
+U -1 ; WX 842 ; N uni04A7 ; G 439 ; B 21 -204 809 461 ;
+U -1 ; WX 722 ; N uni04A8 ; G 440 ; B 49 -19 687 691 ;
+U -1 ; WX 463 ; N uni04A9 ; G 441 ; B 25 -14 430 473 ;
+U -1 ; WX 722 ; N uni04AA ; G 442 ; B 49 -218 687 691 ;
+U -1 ; WX 464 ; N uni04AB ; G 443 ; B 26 -218 431 473 ;
+U -1 ; WX 669 ; N uni04AC ; G 444 ; B 31 -167 636 676 ;
+U -1 ; WX 508 ; N uni04AD ; G 445 ; B 12 -110 475 461 ;
+U -1 ; WX 732 ; N uni04AE ; G 446 ; B 15 0 699 676 ;
+U -1 ; WX 518 ; N uni04AF ; G 447 ; B 21 -225 485 461 ;
+U -1 ; WX 732 ; N uni04B0 ; G 448 ; B 15 0 699 676 ;
+U -1 ; WX 518 ; N uni04B1 ; G 449 ; B 21 -225 485 461 ;
+U -1 ; WX 749 ; N uni04B2 ; G 450 ; B 16 -167 716 676 ;
+U -1 ; WX 529 ; N uni04B3 ; G 451 ; B 12 -110 496 461 ;
+U -1 ; WX 1060 ; N uni04B4 ; G 452 ; B 31 -167 1027 676 ;
+U -1 ; WX 792 ; N uni04B5 ; G 453 ; B 12 -110 759 461 ;
+U -1 ; WX 792 ; N uni04B6 ; G 454 ; B 21 -167 759 676 ;
+U -1 ; WX 577 ; N uni04B7 ; G 455 ; B 27 -110 544 461 ;
+U -1 ; WX 792 ; N uni04B8 ; G 456 ; B 21 0 759 676 ;
+U -1 ; WX 572 ; N uni04B9 ; G 457 ; B 27 0 539 461 ;
+U -1 ; WX 792 ; N uni04BA ; G 458 ; B 21 0 759 676 ;
+U -1 ; WX 572 ; N uni04BB ; G 459 ; B 27 0 539 461 ;
+U -1 ; WX 669 ; N uni04BC ; G 460 ; B 25 -14 636 776 ;
+U -1 ; WX 459 ; N uni04BD ; G 461 ; B 25 -14 426 473 ;
+U -1 ; WX 669 ; N uni04BE ; G 462 ; B 25 -14 636 776 ;
+U -1 ; WX 459 ; N uni04BF ; G 463 ; B 25 -14 426 473 ;
+U -1 ; WX 399 ; N uni04C0 ; G 464 ; B 16 0 366 676 ;
+U -1 ; WX 1107 ; N uni04C1 ; G 465 ; B 35 0 1073 889 ;
+U -1 ; WX 768 ; N uni04C2 ; G 466 ; B 12 0 735 674 ;
+U -1 ; WX 778 ; N uni04C3 ; G 467 ; B 30 0 732 686 ;
+U -1 ; WX 540 ; N uni04C4 ; G 468 ; B 22 -204 507 470 ;
+U -1 ; WX 792 ; N uni04C7 ; G 469 ; B 21 -236 759 676 ;
+U -1 ; WX 572 ; N uni04C8 ; G 470 ; B 21 -203 539 461 ;
+U -1 ; WX 792 ; N uni04CB ; G 471 ; B 21 -167 759 676 ;
+U -1 ; WX 572 ; N uni04CC ; G 472 ; B 27 -110 539 461 ;
+U -1 ; WX 722 ; N uni04D0 ; G 473 ; B 9 0 689 889 ;
+U -1 ; WX 521 ; N uni04D1 ; G 474 ; B 25 -14 488 674 ;
+U -1 ; WX 722 ; N uni04D2 ; G 475 ; B 9 0 689 855 ;
+U -1 ; WX 521 ; N uni04D3 ; G 476 ; B 25 -14 488 640 ;
+U -1 ; WX 1000 ; N uni04D4 ; G 477 ; B 4 0 951 676 ;
+U -1 ; WX 726 ; N uni04D5 ; G 478 ; B 33 -14 693 473 ;
+U -1 ; WX 674 ; N uni04D6 ; G 479 ; B 16 0 641 889 ;
+U -1 ; WX 459 ; N uni04D7 ; G 480 ; B 25 -14 426 674 ;
+U -1 ; WX 669 ; N uni04D8 ; G 481 ; B 25 -14 636 776 ;
+U -1 ; WX 459 ; N afii10846 ; G 482 ; B 25 -14 426 473 ;
+U -1 ; WX 669 ; N uni04DA ; G 483 ; B 25 -14 636 955 ;
+U -1 ; WX 459 ; N uni04DB ; G 484 ; B 25 -14 426 640 ;
+U -1 ; WX 1107 ; N uni04DC ; G 485 ; B 35 0 1073 865 ;
+U -1 ; WX 768 ; N uni04DD ; G 486 ; B 12 0 735 650 ;
+U -1 ; WX 579 ; N uni04DE ; G 487 ; B 14 -19 546 865 ;
+U -1 ; WX 416 ; N uni04DF ; G 488 ; B 15 -14 383 650 ;
+U -1 ; WX 593 ; N uni04E0 ; G 489 ; B 13 -19 560 692 ;
+U -1 ; WX 401 ; N uni04E1 ; G 490 ; B 16 -14 368 471 ;
+U -1 ; WX 792 ; N uni04E2 ; G 491 ; B 21 0 759 798 ;
+U -1 ; WX 572 ; N uni04E3 ; G 492 ; B 21 0 539 583 ;
+U -1 ; WX 792 ; N uni04E4 ; G 493 ; B 21 0 759 855 ;
+U -1 ; WX 572 ; N uni04E5 ; G 494 ; B 21 0 539 640 ;
+U -1 ; WX 778 ; N uni04E6 ; G 495 ; B 35 -19 743 855 ;
+U -1 ; WX 509 ; N uni04E7 ; G 496 ; B 25 -14 476 640 ;
+U -1 ; WX 778 ; N uni04E8 ; G 497 ; B 35 -19 743 691 ;
+U -1 ; WX 509 ; N uni04E9 ; G 498 ; B 25 -14 476 473 ;
+U -1 ; WX 778 ; N uni04EA ; G 499 ; B 35 -19 743 855 ;
+U -1 ; WX 509 ; N uni04EB ; G 500 ; B 25 -14 476 640 ;
+U -1 ; WX 722 ; N uni04EC ; G 501 ; B 49 -19 687 855 ;
+U -1 ; WX 463 ; N uni04ED ; G 502 ; B 25 -14 430 640 ;
+U -1 ; WX 747 ; N uni04EE ; G 503 ; B 15 -14 714 798 ;
+U -1 ; WX 513 ; N uni04EF ; G 504 ; B 16 -205 480 583 ;
+U -1 ; WX 747 ; N uni04F0 ; G 505 ; B 15 -14 714 855 ;
+U -1 ; WX 513 ; N uni04F1 ; G 506 ; B 16 -205 480 640 ;
+U -1 ; WX 747 ; N uni04F2 ; G 507 ; B 15 -14 714 911 ;
+U -1 ; WX 513 ; N uni04F3 ; G 508 ; B 16 -205 480 696 ;
+U -1 ; WX 792 ; N uni04F4 ; G 509 ; B 21 0 759 855 ;
+U -1 ; WX 572 ; N uni04F5 ; G 510 ; B 27 0 539 640 ;
+U -1 ; WX 1003 ; N uni04F8 ; G 511 ; B 16 0 970 855 ;
+U -1 ; WX 772 ; N uni04F9 ; G 512 ; B 21 0 739 640 ;
+U -1 ; WX 448 ; N uniF6C4 ; G 513 ; B 21 0 415 461 ;
+U -1 ; WX 509 ; N uniF6C5 ; G 514 ; B -36 -14 476 690 ;
+U -1 ; WX 577 ; N uniF6C6 ; G 515 ; B 17 -142 544 461 ;
+U -1 ; WX 572 ; N uniF6C7 ; G 516 ; B 21 0 539 461 ;
+U -1 ; WX 508 ; N uniF6C8 ; G 517 ; B 12 0 475 461 ;
+U -1 ; WX 722 ; N Ccircumflex ; G 518 ; B 49 -19 687 902 ;
+U -1 ; WX 463 ; N ccircumflex ; G 519 ; B 25 -14 430 687 ;
+U -1 ; WX 722 ; N Cdotaccent ; G 520 ; B 49 -19 687 855 ;
+U -1 ; WX 463 ; N cdotaccent ; G 521 ; B 25 -14 430 640 ;
+U -1 ; WX 674 ; N Ebreve ; G 522 ; B 16 0 641 889 ;
+U -1 ; WX 459 ; N ebreve ; G 523 ; B 25 -14 426 674 ;
+U -1 ; WX 788 ; N Gcircumflex ; G 524 ; B 37 -19 755 902 ;
+U -1 ; WX 516 ; N gcircumflex ; G 525 ; B 28 -206 483 687 ;
+U -1 ; WX 788 ; N Gdotaccent ; G 526 ; B 37 -19 755 855 ;
+U -1 ; WX 516 ; N gdotaccent ; G 527 ; B 28 -206 483 640 ;
+U -1 ; WX 787 ; N Hcircumflex ; G 528 ; B 16 0 754 902 ;
+U -1 ; WX 567 ; N hcircumflex ; G 529 ; B 2 0 534 902 ;
+U -1 ; WX 792 ; N Hbar ; G 530 ; B 21 0 759 676 ;
+U -1 ; WX 567 ; N hbar ; G 531 ; B 13 0 534 676 ;
+U -1 ; WX 406 ; N Itilde ; G 532 ; B 8 0 373 853 ;
+U -1 ; WX 351 ; N itilde ; G 533 ; B -47 0 318 638 ;
+U -1 ; WX 399 ; N Ibreve ; G 534 ; B 16 0 366 889 ;
+U -1 ; WX 320 ; N ibreve ; G 535 ; B -16 0 287 674 ;
+U -1 ; WX 902 ; N IJ ; G 536 ; B 16 -96 869 676 ;
+U -1 ; WX 496 ; N ij ; G 537 ; B 16 -203 463 691 ;
+U -1 ; WX 512 ; N Jcircumflex ; G 538 ; B 3 -96 479 902 ;
+U -1 ; WX 368 ; N jcircumflex ; G 539 ; B -56 -203 335 768 ;
+U -1 ; WX 547 ; N kgreenlandic ; G 540 ; B 22 0 514 470 ;
+U -1 ; WX 668 ; N Ldot ; G 541 ; B 16 0 635 676 ;
+U -1 ; WX 528 ; N ldot ; G 542 ; B 16 0 488 676 ;
+U -1 ; WX 720 ; N napostrophe ; G 543 ; B 21 0 687 582 ;
+U -1 ; WX 734 ; N Eng ; G 544 ; B 16 -228 701 676 ;
+U -1 ; WX 556 ; N eng ; G 545 ; B 21 -203 490 473 ;
+U -1 ; WX 778 ; N Obreve ; G 546 ; B 35 -19 743 889 ;
+U -1 ; WX 509 ; N obreve ; G 547 ; B 25 -14 476 674 ;
+U -1 ; WX 556 ; N Scircumflex ; G 548 ; B 35 -19 513 902 ;
+U -1 ; WX 394 ; N scircumflex ; G 549 ; B 24 -14 361 687 ;
+U -1 ; WX 668 ; N _d_550 ; G 550 ; B 30 -218 635 676 ;
+U -1 ; WX 365 ; N _d_551 ; G 551 ; B 20 -230 332 630 ;
+U -1 ; WX 670 ; N Tbar ; G 552 ; B 32 0 637 676 ;
+U -1 ; WX 365 ; N tbar ; G 553 ; B 13 -12 332 630 ;
+U -1 ; WX 734 ; N Utilde ; G 554 ; B 16 -19 701 853 ;
+U -1 ; WX 570 ; N utilde ; G 555 ; B 16 -14 537 638 ;
+U -1 ; WX 734 ; N Ubreve ; G 556 ; B 16 -19 701 889 ;
+U -1 ; WX 570 ; N ubreve ; G 557 ; B 16 -14 537 674 ;
+U -1 ; WX 1014 ; N Wcircumflex ; G 558 ; B 19 -15 981 902 ;
+U -1 ; WX 740 ; N wcircumflex ; G 559 ; B 23 -14 707 687 ;
+U -1 ; WX 732 ; N Ycircumflex ; G 560 ; B 15 0 699 902 ;
+U -1 ; WX 513 ; N ycircumflex ; G 561 ; B 16 -205 480 687 ;
+U -1 ; WX 422 ; N longs ; G 562 ; B 14 0 389 691 ;
+U -1 ; WX 969 ; N afii61352 ; G 563 ; B 11 -25 936 681 ;
+U -1 ; WX 756 ; N infinity ; G 564 ; B 22 42 723 456 ;
+U -1 ; WX 732 ; N uni1EF6 ; G 565 ; B 15 0 699 989 ;
+U -1 ; WX 513 ; N uni1EF7 ; G 566 ; B 16 -205 480 783 ;
+U -1 ; WX 732 ; N uni1EF4 ; G 567 ; B 15 -253 699 676 ;
+U -1 ; WX 513 ; N uni1EF5 ; G 568 ; B 16 -253 480 461 ;
+U -1 ; WX 722 ; N uni1EA2 ; G 569 ; B 9 0 689 989 ;
+U -1 ; WX 722 ; N uni1EA0 ; G 570 ; B 9 -253 689 690 ;
+U -1 ; WX 722 ; N uni1EA6 ; G 571 ; B 9 0 689 1155 ;
+U -1 ; WX 722 ; N uni1EA4 ; G 572 ; B 9 0 689 1155 ;
+U -1 ; WX 722 ; N uni1EAA ; G 573 ; B 9 0 689 1115 ;
+U -1 ; WX 722 ; N uni1EA8 ; G 574 ; B 9 0 689 1121 ;
+U -1 ; WX 722 ; N uni1EAC ; G 575 ; B 9 -253 689 936 ;
+U -1 ; WX 722 ; N uni1EB0 ; G 576 ; B 9 0 689 1148 ;
+U -1 ; WX 722 ; N uni1EAE ; G 577 ; B 9 0 689 1148 ;
+U -1 ; WX 722 ; N uni1EB4 ; G 578 ; B 9 0 689 1124 ;
+U -1 ; WX 722 ; N uni1EB2 ; G 579 ; B 9 0 689 1158 ;
+U -1 ; WX 722 ; N uni1EB6 ; G 580 ; B 9 -253 689 932 ;
+U -1 ; WX 674 ; N uni1EBC ; G 581 ; B 16 0 641 924 ;
+U -1 ; WX 674 ; N uni1EBA ; G 582 ; B 16 0 641 989 ;
+U -1 ; WX 674 ; N uni1EB8 ; G 583 ; B 16 -253 641 676 ;
+U -1 ; WX 674 ; N uni1EC0 ; G 584 ; B 16 0 641 1155 ;
+U -1 ; WX 674 ; N uni1EBE ; G 585 ; B 16 0 641 1155 ;
+U -1 ; WX 674 ; N uni1EC4 ; G 586 ; B 16 0 641 1115 ;
+U -1 ; WX 674 ; N uni1EC2 ; G 587 ; B 16 0 641 1121 ;
+U -1 ; WX 674 ; N uni1EC6 ; G 588 ; B 16 -253 641 936 ;
+U -1 ; WX 403 ; N uni1EC8 ; G 589 ; B 20 0 370 989 ;
+U -1 ; WX 521 ; N uni1EA3 ; G 590 ; B 25 -14 488 783 ;
+U -1 ; WX 521 ; N uni1EA1 ; G 591 ; B 25 -253 488 473 ;
+U -1 ; WX 521 ; N uni1EA7 ; G 592 ; B 25 -14 488 949 ;
+U -1 ; WX 521 ; N uni1EA5 ; G 593 ; B 25 -14 488 949 ;
+U -1 ; WX 521 ; N uni1EAB ; G 594 ; B 25 -14 488 909 ;
+U -1 ; WX 544 ; N uni1EA9 ; G 595 ; B 25 -14 511 915 ;
+U -1 ; WX 521 ; N uni1EAD ; G 596 ; B 25 -253 488 730 ;
+U -1 ; WX 521 ; N uni1EB1 ; G 597 ; B 25 -14 488 943 ;
+U -1 ; WX 521 ; N uni1EAF ; G 598 ; B 25 -14 488 943 ;
+U -1 ; WX 521 ; N uni1EB5 ; G 599 ; B 25 -14 488 919 ;
+U -1 ; WX 521 ; N uni1EB3 ; G 600 ; B 25 -14 488 953 ;
+U -1 ; WX 521 ; N uni1EB7 ; G 601 ; B 25 -253 488 727 ;
+U -1 ; WX 459 ; N uni1EBD ; G 602 ; B 25 -14 426 722 ;
+U -1 ; WX 459 ; N uni1EBB ; G 603 ; B 25 -14 426 783 ;
+U -1 ; WX 459 ; N uni1EB9 ; G 604 ; B 25 -253 426 473 ;
+U -1 ; WX 459 ; N uni1EC1 ; G 605 ; B 25 -14 426 949 ;
+U -1 ; WX 459 ; N uni1EBF ; G 606 ; B 25 -14 426 949 ;
+U -1 ; WX 485 ; N uni1EC5 ; G 607 ; B 25 -14 452 909 ;
+U -1 ; WX 516 ; N uni1EC3 ; G 608 ; B 25 -14 483 915 ;
+U -1 ; WX 459 ; N uni1EC7 ; G 609 ; B 25 -253 426 730 ;
+U -1 ; WX 288 ; N uni1EC9 ; G 610 ; B 16 0 255 783 ;
+U -1 ; WX 403 ; N uni1ECA ; G 611 ; B 20 -253 370 676 ;
+U -1 ; WX 778 ; N uni1ECE ; G 612 ; B 35 -19 743 989 ;
+U -1 ; WX 778 ; N uni1ECC ; G 613 ; B 35 -253 743 691 ;
+U -1 ; WX 778 ; N uni1ED2 ; G 614 ; B 35 -19 743 1155 ;
+U -1 ; WX 778 ; N uni1ED0 ; G 615 ; B 35 -19 743 1155 ;
+U -1 ; WX 778 ; N uni1ED6 ; G 616 ; B 35 -19 743 1115 ;
+U -1 ; WX 778 ; N uni1ED4 ; G 617 ; B 35 -19 743 1121 ;
+U -1 ; WX 778 ; N uni1ED8 ; G 618 ; B 35 -253 743 936 ;
+U -1 ; WX 778 ; N Ohorn ; G 619 ; B 35 -19 743 827 ;
+U -1 ; WX 778 ; N uni1EDC ; G 620 ; B 35 -19 743 1001 ;
+U -1 ; WX 778 ; N uni1EDA ; G 621 ; B 35 -19 743 963 ;
+U -1 ; WX 778 ; N uni1EE0 ; G 622 ; B 35 -19 743 948 ;
+U -1 ; WX 778 ; N uni1EDE ; G 623 ; B 35 -19 743 1006 ;
+U -1 ; WX 778 ; N uni1EE2 ; G 624 ; B 35 -253 743 827 ;
+U -1 ; WX 734 ; N _d_625 ; G 625 ; B 16 -19 701 878 ;
+U -1 ; WX 734 ; N uni1EE6 ; G 626 ; B 16 -19 701 989 ;
+U -1 ; WX 734 ; N uni1EE4 ; G 627 ; B 16 -253 701 676 ;
+U -1 ; WX 807 ; N Uhorn ; G 628 ; B 16 -19 786 828 ;
+U -1 ; WX 807 ; N uni1EEA ; G 629 ; B 16 -19 786 1001 ;
+U -1 ; WX 807 ; N uni1EE8 ; G 630 ; B 16 -19 786 963 ;
+U -1 ; WX 807 ; N uni1EEE ; G 631 ; B 16 -19 786 948 ;
+U -1 ; WX 807 ; N uni1EEC ; G 632 ; B 16 -19 786 1006 ;
+U -1 ; WX 807 ; N uni1EF0 ; G 633 ; B 16 -253 786 828 ;
+U -1 ; WX 732 ; N Ygrave ; G 634 ; B 15 0 699 954 ;
+U -1 ; WX 732 ; N uni1EF8 ; G 635 ; B 15 0 699 924 ;
+U -1 ; WX 288 ; N uni1ECB ; G 636 ; B 16 -253 255 691 ;
+U -1 ; WX 509 ; N uni1ECF ; G 637 ; B 25 -14 476 783 ;
+U -1 ; WX 509 ; N uni1ECD ; G 638 ; B 25 -253 476 473 ;
+U -1 ; WX 509 ; N uni1ED3 ; G 639 ; B 25 -14 476 949 ;
+U -1 ; WX 509 ; N uni1ED1 ; G 640 ; B 25 -14 476 949 ;
+U -1 ; WX 513 ; N uni1ED7 ; G 641 ; B 25 -14 480 909 ;
+U -1 ; WX 544 ; N uni1ED5 ; G 642 ; B 25 -14 511 915 ;
+U -1 ; WX 509 ; N uni1ED9 ; G 643 ; B 25 -253 476 730 ;
+U -1 ; WX 530 ; N ohorn ; G 644 ; B 25 -14 509 614 ;
+U -1 ; WX 530 ; N uni1EDD ; G 645 ; B 25 -14 509 801 ;
+U -1 ; WX 530 ; N uni1EDB ; G 646 ; B 25 -14 509 759 ;
+U -1 ; WX 530 ; N uni1EE1 ; G 647 ; B 25 -14 509 749 ;
+U -1 ; WX 530 ; N uni1EDF ; G 648 ; B 25 -14 509 802 ;
+U -1 ; WX 530 ; N uni1EE3 ; G 649 ; B 25 -253 509 614 ;
+U -1 ; WX 570 ; N _d_650 ; G 650 ; B 16 -14 537 660 ;
+U -1 ; WX 570 ; N uni1EE7 ; G 651 ; B 16 -14 537 783 ;
+U -1 ; WX 570 ; N uni1EE5 ; G 652 ; B 16 -253 537 461 ;
+U -1 ; WX 667 ; N uhorn ; G 653 ; B 16 -14 646 613 ;
+U -1 ; WX 667 ; N uni1EEB ; G 654 ; B 16 -14 646 801 ;
+U -1 ; WX 667 ; N uni1EE9 ; G 655 ; B 16 -14 646 759 ;
+U -1 ; WX 667 ; N uni1EEF ; G 656 ; B 16 -14 646 749 ;
+U -1 ; WX 667 ; N uni1EED ; G 657 ; B 16 -14 646 802 ;
+U -1 ; WX 667 ; N uni1EF1 ; G 658 ; B 16 -253 646 613 ;
+U -1 ; WX 513 ; N ygrave ; G 659 ; B 16 -205 480 749 ;
+U -1 ; WX 513 ; N uni1EF9 ; G 660 ; B 16 -205 480 722 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-Oblique.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-Oblique.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-Oblique.ufm	(revision 2000)
@@ -0,0 +1,719 @@
+StartFontMetrics 4.1
+FontName Nimbus_Sans_L_Regular_Italic
+FullName Nimbus Sans L Regular Italic
+Notice 
+EncodingScheme FontSpecific
+FamilyName Nimbus Sans L
+Weight Regular Italic
+Version 1.0
+Characters 661
+ItalicAngle -12.0
+Ascender 1191
+Descender -284
+UnderlineThickness 50
+UnderlinePosition -151
+IsFixedPitch false
+FontBBox -178 -284 1139 1191
+StartCharMetrics 700
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 278 ; N .null ; G 1 ; B 0 0 0 0 ;
+U -1 ; WX 423 ; N exclam ; G 2 ; B 124 0 363 729 ;
+U -1 ; WX 515 ; N quotedbl ; G 3 ; B 177 464 455 709 ;
+U -1 ; WX 709 ; N numbersign ; G 4 ; B 54 -20 649 697 ;
+U -1 ; WX 673 ; N dollar ; G 5 ; B 69 -126 613 770 ;
+U -1 ; WX 955 ; N percent ; G 6 ; B 134 -20 895 709 ;
+U -1 ; WX 704 ; N ampersand ; G 7 ; B 83 -23 644 709 ;
+U -1 ; WX 352 ; N quotesingle ; G 104 ; B 173 464 292 709 ;
+U -1 ; WX 506 ; N parenleft ; G 9 ; B 113 -213 446 729 ;
+U -1 ; WX 385 ; N parenright ; G 10 ; B -7 -213 325 729 ;
+U -1 ; WX 531 ; N asterisk ; G 11 ; B 169 438 471 729 ;
+U -1 ; WX 651 ; N plus ; G 12 ; B 92 -11 591 473 ;
+U -1 ; WX 278 ; N comma ; G 13 ; B 55 -150 214 103 ;
+U -1 ; WX 411 ; N hyphen ; G 14 ; B 97 240 351 312 ;
+U -1 ; WX 278 ; N period ; G 15 ; B 87 0 213 103 ;
+U -1 ; WX 494 ; N slash ; G 16 ; B -12 -20 434 729 ;
+U -1 ; WX 658 ; N zero ; G 17 ; B 98 -23 598 709 ;
+U -1 ; WX 558 ; N one ; G 18 ; B 208 0 498 709 ;
+U -1 ; WX 680 ; N two ; G 19 ; B 34 0 620 709 ;
+U -1 ; WX 659 ; N three ; G 20 ; B 71 -23 599 709 ;
+U -1 ; WX 633 ; N four ; G 21 ; B 63 0 573 709 ;
+U -1 ; WX 689 ; N five ; G 22 ; B 70 -23 629 709 ;
+U -1 ; WX 671 ; N six ; G 23 ; B 93 -23 611 709 ;
+U -1 ; WX 731 ; N seven ; G 24 ; B 137 0 671 709 ;
+U -1 ; WX 664 ; N eight ; G 25 ; B 74 -23 604 709 ;
+U -1 ; WX 659 ; N nine ; G 26 ; B 83 -23 599 709 ;
+U -1 ; WX 386 ; N colon ; G 27 ; B 110 0 326 524 ;
+U -1 ; WX 385 ; N semicolon ; G 28 ; B 78 -150 325 524 ;
+U -1 ; WX 695 ; N less ; G 29 ; B 87 -9 635 474 ;
+U -1 ; WX 669 ; N equal ; G 30 ; B 74 111 609 355 ;
+U -1 ; WX 656 ; N greater ; G 31 ; B 48 -9 596 474 ;
+U -1 ; WX 690 ; N question ; G 32 ; B 184 0 630 741 ;
+U -1 ; WX 1096 ; N at ; G 33 ; B 80 -142 1036 741 ;
+U -1 ; WX 713 ; N A ; G 34 ; B 17 0 653 729 ;
+U -1 ; WX 771 ; N B ; G 35 ; B 79 0 711 729 ;
+U -1 ; WX 830 ; N C ; G 36 ; B 112 -23 770 741 ;
+U -1 ; WX 819 ; N D ; G 37 ; B 89 0 759 729 ;
+U -1 ; WX 811 ; N E ; G 38 ; B 90 0 751 729 ;
+U -1 ; WX 794 ; N F ; G 39 ; B 90 0 734 729 ;
+U -1 ; WX 869 ; N G ; G 40 ; B 109 -23 809 741 ;
+U -1 ; WX 859 ; N H ; G 41 ; B 83 0 799 729 ;
+U -1 ; WX 409 ; N I ; G 42 ; B 100 0 349 729 ;
+U -1 ; WX 641 ; N J ; G 43 ; B 47 -23 581 729 ;
+U -1 ; WX 873 ; N K ; G 44 ; B 79 0 813 729 ;
+U -1 ; WX 611 ; N L ; G 45 ; B 80 0 551 729 ;
+U -1 ; WX 976 ; N M ; G 46 ; B 75 0 916 729 ;
+U -1 ; WX 861 ; N N ; G 47 ; B 76 0 801 729 ;
+U -1 ; WX 888 ; N O ; G 48 ; B 104 -23 828 741 ;
+U -1 ; WX 793 ; N P ; G 49 ; B 91 0 733 729 ;
+U -1 ; WX 888 ; N Q ; G 50 ; B 104 -59 828 741 ;
+U -1 ; WX 830 ; N R ; G 51 ; B 93 0 770 729 ;
+U -1 ; WX 774 ; N S ; G 52 ; B 89 -23 714 741 ;
+U -1 ; WX 808 ; N T ; G 53 ; B 158 0 748 729 ;
+U -1 ; WX 860 ; N U ; G 54 ; B 124 -23 800 729 ;
+U -1 ; WX 860 ; N V ; G 55 ; B 185 0 800 729 ;
+U -1 ; WX 1144 ; N W ; G 56 ; B 177 0 1084 729 ;
+U -1 ; WX 854 ; N X ; G 57 ; B 22 0 794 729 ;
+U -1 ; WX 876 ; N Y ; G 58 ; B 168 0 816 729 ;
+U -1 ; WX 797 ; N Z ; G 59 ; B 28 0 737 729 ;
+U -1 ; WX 465 ; N bracketleft ; G 60 ; B 19 -213 405 729 ;
+U -1 ; WX 340 ; N backslash ; G 61 ; B 147 -20 280 729 ;
+U -1 ; WX 424 ; N bracketright ; G 62 ; B -23 -213 364 729 ;
+U -1 ; WX 556 ; N asciicircum ; G 63 ; B 115 329 496 709 ;
+U -1 ; WX 611 ; N underscore ; G 64 ; B -59 -176 551 -126 ;
+U -1 ; WX 417 ; N grave ; G 124 ; B 179 592 357 740 ;
+U -1 ; WX 628 ; N a ; G 66 ; B 65 -23 568 539 ;
+U -1 ; WX 648 ; N b ; G 67 ; B 54 -23 588 729 ;
+U -1 ; WX 614 ; N c ; G 68 ; B 76 -23 554 539 ;
+U -1 ; WX 710 ; N d ; G 69 ; B 73 -23 650 729 ;
+U -1 ; WX 640 ; N e ; G 70 ; B 84 -23 580 539 ;
+U -1 ; WX 473 ; N f ; G 71 ; B 89 0 413 732 ;
+U -1 ; WX 661 ; N g ; G 72 ; B 32 -218 601 539 ;
+U -1 ; WX 634 ; N h ; G 73 ; B 70 0 574 729 ;
+U -1 ; WX 365 ; N i ; G 74 ; B 66 0 305 729 ;
+U -1 ; WX 368 ; N j ; G 75 ; B -65 -218 308 729 ;
+U -1 ; WX 644 ; N k ; G 76 ; B 58 0 584 729 ;
+U -1 ; WX 367 ; N l ; G 77 ; B 68 0 307 729 ;
+U -1 ; WX 912 ; N m ; G 78 ; B 71 0 852 539 ;
+U -1 ; WX 634 ; N n ; G 79 ; B 70 0 574 539 ;
+U -1 ; WX 636 ; N o ; G 80 ; B 80 -23 576 539 ;
+U -1 ; WX 646 ; N p ; G 81 ; B 7 -213 586 539 ;
+U -1 ; WX 667 ; N q ; G 82 ; B 71 -213 607 539 ;
+U -1 ; WX 496 ; N r ; G 83 ; B 69 0 436 539 ;
+U -1 ; WX 580 ; N s ; G 84 ; B 61 -23 520 539 ;
+U -1 ; WX 426 ; N t ; G 85 ; B 97 -23 366 668 ;
+U -1 ; WX 654 ; N u ; G 86 ; B 88 -23 594 524 ;
+U -1 ; WX 658 ; N v ; G 87 ; B 122 0 598 524 ;
+U -1 ; WX 880 ; N w ; G 88 ; B 118 0 820 524 ;
+U -1 ; WX 643 ; N x ; G 89 ; B 17 0 583 524 ;
+U -1 ; WX 650 ; N y ; G 90 ; B 8 -218 590 524 ;
+U -1 ; WX 617 ; N z ; G 91 ; B 31 0 557 524 ;
+U -1 ; WX 491 ; N braceleft ; G 92 ; B 91 -213 431 729 ;
+U -1 ; WX 375 ; N bar ; G 93 ; B 54 -212 315 729 ;
+U -1 ; WX 384 ; N braceright ; G 94 ; B -16 -213 324 729 ;
+U -1 ; WX 654 ; N asciitilde ; G 95 ; B 137 268 594 438 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 696 ; N Euro ; G 289 ; B 12 -22 636 709 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 240 ; N quotesinglbase ; G 117 ; B 37 -128 180 103 ;
+U -1 ; WX 756 ; N florin ; G 101 ; B -32 -212 696 738 ;
+U -1 ; WX 382 ; N quotedblbase ; G 118 ; B 20 -128 322 103 ;
+U -1 ; WX 1000 ; N ellipsis ; G 121 ; B 115 0 907 103 ;
+U -1 ; WX 680 ; N dagger ; G 112 ; B 127 -177 620 709 ;
+U -1 ; WX 680 ; N daggerdbl ; G 113 ; B 51 -177 620 709 ;
+U -1 ; WX 493 ; N circumflex ; G 126 ; B 146 591 433 741 ;
+U -1 ; WX 1084 ; N perthousand ; G 122 ; B 93 -20 1024 738 ;
+U -1 ; WX 774 ; N Scaron ; G 189 ; B 89 -23 714 939 ;
+U -1 ; WX 396 ; N guilsinglleft ; G 107 ; B 140 106 336 438 ;
+U -1 ; WX 1168 ; N OE ; G 142 ; B 101 -23 1108 741 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 797 ; N Zcaron ; G 200 ; B 28 0 737 939 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 368 ; N quoteleft ; G 65 ; B 163 477 308 709 ;
+U -1 ; WX 369 ; N quoteright ; G 8 ; B 166 477 309 708 ;
+U -1 ; WX 509 ; N quotedblleft ; G 105 ; B 146 477 449 709 ;
+U -1 ; WX 512 ; N quotedblright ; G 119 ; B 150 477 452 708 ;
+U -1 ; WX 436 ; N bullet ; G 116 ; B 120 220 376 470 ;
+U -1 ; WX 688 ; N endash ; G 111 ; B 46 240 628 312 ;
+U -1 ; WX 1128 ; N emdash ; G 137 ; B 42 240 1068 312 ;
+U -1 ; WX 531 ; N tilde ; G 127 ; B 130 611 471 719 ;
+U -1 ; WX 1156 ; N trademark ; G 297 ; B 208 292 1096 729 ;
+U -1 ; WX 607 ; N scaron ; G 253 ; B 61 -23 547 740 ;
+U -1 ; WX 367 ; N guilsinglright ; G 108 ; B 109 106 307 438 ;
+U -1 ; WX 1026 ; N oe ; G 148 ; B 85 -23 966 539 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 617 ; N zcaron ; G 264 ; B 31 0 557 740 ;
+U -1 ; WX 876 ; N Ydieresis ; G 204 ; B 168 0 816 914 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 377 ; N exclamdown ; G 96 ; B 76 -205 317 524 ;
+U -1 ; WX 645 ; N cent ; G 97 ; B 96 -120 585 628 ;
+U -1 ; WX 688 ; N sterling ; G 98 ; B 44 -23 628 729 ;
+U -1 ; WX 653 ; N currency ; G 103 ; B 110 133 593 556 ;
+U -1 ; WX 756 ; N yen ; G 100 ; B 100 0 696 709 ;
+U -1 ; WX 375 ; N brokenbar ; G 314 ; B 54 -212 315 729 ;
+U -1 ; WX 649 ; N section ; G 102 ; B 63 -213 589 729 ;
+U -1 ; WX 506 ; N dieresis ; G 131 ; B 159 612 446 715 ;
+U -1 ; WX 896 ; N copyright ; G 303 ; B 55 -22 836 742 ;
+U -1 ; WX 500 ; N ordfeminine ; G 139 ; B 107 303 441 742 ;
+U -1 ; WX 608 ; N guillemotleft ; G 106 ; B 147 106 548 438 ;
+U -1 ; WX 679 ; N logicalnot ; G 311 ; B 99 86 619 377 ;
+U -1 ; WX 1000 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 896 ; N registered ; G 304 ; B 55 -22 836 742 ;
+U -1 ; WX 510 ; N macron ; G 128 ; B 160 627 450 696 ;
+U -1 ; WX 654 ; N degree ; G 293 ; B 291 383 594 686 ;
+U -1 ; WX 685 ; N plusminus ; G 298 ; B 50 0 625 633 ;
+U -1 ; WX 528 ; N twosuperior ; G 291 ; B 100 284 468 709 ;
+U -1 ; WX 515 ; N threesuperior ; G 292 ; B 123 270 455 709 ;
+U -1 ; WX 518 ; N acute ; G 125 ; B 218 592 458 740 ;
+U -1 ; WX 653 ; N mu ; G 315 ; B 18 -220 593 524 ;
+U -1 ; WX 737 ; N paragraph ; G 115 ; B 145 -178 677 729 ;
+U -1 ; WX 353 ; N periodcentered ; G 114 ; B 166 192 293 295 ;
+U -1 ; WX 333 ; N cedilla ; G 133 ; B 1 -214 264 0 ;
+U -1 ; WX 453 ; N onesuperior ; G 290 ; B 205 284 393 709 ;
+U -1 ; WX 512 ; N ordmasculine ; G 143 ; B 114 303 452 742 ;
+U -1 ; WX 578 ; N guillemotright ; G 120 ; B 121 106 518 438 ;
+U -1 ; WX 998 ; N onequarter ; G 300 ; B 205 -20 938 709 ;
+U -1 ; WX 1025 ; N onehalf ; G 299 ; B 202 -20 965 709 ;
+U -1 ; WX 998 ; N threequarters ; G 301 ; B 123 -20 938 709 ;
+U -1 ; WX 611 ; N questiondown ; G 123 ; B 86 -217 531 524 ;
+U -1 ; WX 713 ; N Agrave ; G 152 ; B 17 0 653 939 ;
+U -1 ; WX 727 ; N Aacute ; G 151 ; B 17 0 667 939 ;
+U -1 ; WX 713 ; N Acircumflex ; G 153 ; B 17 0 653 940 ;
+U -1 ; WX 740 ; N Atilde ; G 155 ; B 17 0 680 918 ;
+U -1 ; WX 722 ; N Adieresis ; G 150 ; B 17 0 662 914 ;
+U -1 ; WX 713 ; N Aring ; G 156 ; B 17 0 653 953 ;
+U -1 ; WX 1147 ; N AE ; G 138 ; B 11 0 1087 729 ;
+U -1 ; WX 830 ; N Ccedilla ; G 158 ; B 112 -214 770 741 ;
+U -1 ; WX 811 ; N Egrave ; G 164 ; B 90 0 751 939 ;
+U -1 ; WX 811 ; N Eacute ; G 163 ; B 90 0 751 939 ;
+U -1 ; WX 811 ; N Ecircumflex ; G 165 ; B 90 0 751 940 ;
+U -1 ; WX 811 ; N Edieresis ; G 162 ; B 90 0 751 914 ;
+U -1 ; WX 438 ; N Igrave ; G 172 ; B 100 0 378 939 ;
+U -1 ; WX 539 ; N Iacute ; G 171 ; B 100 0 479 939 ;
+U -1 ; WX 514 ; N Icircumflex ; G 173 ; B 100 0 454 940 ;
+U -1 ; WX 527 ; N Idieresis ; G 170 ; B 100 0 467 907 ;
+U -1 ; WX 819 ; N Eth ; G 283 ; B 89 0 759 729 ;
+U -1 ; WX 861 ; N Ntilde ; G 179 ; B 76 0 801 918 ;
+U -1 ; WX 888 ; N Ograve ; G 182 ; B 104 -23 828 939 ;
+U -1 ; WX 888 ; N Oacute ; G 181 ; B 104 -23 828 939 ;
+U -1 ; WX 888 ; N Ocircumflex ; G 183 ; B 104 -23 828 940 ;
+U -1 ; WX 888 ; N Otilde ; G 184 ; B 104 -23 828 918 ;
+U -1 ; WX 888 ; N Odieresis ; G 180 ; B 104 -23 828 914 ;
+U -1 ; WX 628 ; N multiply ; G 295 ; B 113 34 568 427 ;
+U -1 ; WX 927 ; N Oslash ; G 141 ; B 32 -24 867 741 ;
+U -1 ; WX 860 ; N Ugrave ; G 194 ; B 124 -23 800 939 ;
+U -1 ; WX 860 ; N Uacute ; G 193 ; B 124 -23 800 939 ;
+U -1 ; WX 860 ; N Ucircumflex ; G 195 ; B 124 -23 800 940 ;
+U -1 ; WX 860 ; N Udieresis ; G 192 ; B 124 -23 800 914 ;
+U -1 ; WX 876 ; N Yacute ; G 198 ; B 168 0 816 939 ;
+U -1 ; WX 768 ; N Thorn ; G 285 ; B 91 0 708 729 ;
+U -1 ; WX 715 ; N germandbls ; G 149 ; B 126 -23 655 729 ;
+U -1 ; WX 628 ; N agrave ; G 218 ; B 65 -23 568 740 ;
+U -1 ; WX 630 ; N aacute ; G 217 ; B 65 -23 570 740 ;
+U -1 ; WX 628 ; N acircumflex ; G 219 ; B 65 -23 568 741 ;
+U -1 ; WX 643 ; N atilde ; G 221 ; B 65 -23 583 719 ;
+U -1 ; WX 628 ; N adieresis ; G 216 ; B 65 -23 568 715 ;
+U -1 ; WX 628 ; N aring ; G 222 ; B 65 -23 568 754 ;
+U -1 ; WX 975 ; N ae ; G 144 ; B 59 -23 915 539 ;
+U -1 ; WX 614 ; N ccedilla ; G 226 ; B 76 -214 554 539 ;
+U -1 ; WX 640 ; N egrave ; G 230 ; B 84 -23 580 740 ;
+U -1 ; WX 640 ; N eacute ; G 229 ; B 84 -23 580 740 ;
+U -1 ; WX 640 ; N ecircumflex ; G 231 ; B 84 -23 580 741 ;
+U -1 ; WX 640 ; N edieresis ; G 228 ; B 84 -23 580 715 ;
+U -1 ; WX 390 ; N igrave ; G 238 ; B 94 0 330 740 ;
+U -1 ; WX 491 ; N iacute ; G 237 ; B 94 0 431 740 ;
+U -1 ; WX 466 ; N icircumflex ; G 239 ; B 94 0 406 741 ;
+U -1 ; WX 479 ; N idieresis ; G 236 ; B 94 0 419 708 ;
+U -1 ; WX 636 ; N eth ; G 287 ; B 80 -23 576 743 ;
+U -1 ; WX 649 ; N ntilde ; G 244 ; B 70 0 589 719 ;
+U -1 ; WX 636 ; N ograve ; G 247 ; B 80 -23 576 740 ;
+U -1 ; WX 636 ; N oacute ; G 246 ; B 80 -23 576 740 ;
+U -1 ; WX 636 ; N ocircumflex ; G 248 ; B 80 -23 576 741 ;
+U -1 ; WX 643 ; N otilde ; G 249 ; B 80 -23 583 719 ;
+U -1 ; WX 636 ; N odieresis ; G 245 ; B 80 -23 576 715 ;
+U -1 ; WX 651 ; N divide ; G 296 ; B 92 0 591 462 ;
+U -1 ; WX 699 ; N oslash ; G 147 ; B 19 -30 639 541 ;
+U -1 ; WX 654 ; N ugrave ; G 258 ; B 88 -23 594 740 ;
+U -1 ; WX 654 ; N uacute ; G 257 ; B 88 -23 594 740 ;
+U -1 ; WX 654 ; N ucircumflex ; G 259 ; B 88 -23 594 741 ;
+U -1 ; WX 654 ; N udieresis ; G 256 ; B 88 -23 594 715 ;
+U -1 ; WX 650 ; N yacute ; G 262 ; B 8 -218 590 740 ;
+U -1 ; WX 646 ; N thorn ; G 288 ; B 7 -213 586 729 ;
+U -1 ; WX 650 ; N ydieresis ; G 266 ; B 8 -218 590 715 ;
+U -1 ; WX 546 ; N fraction ; G 99 ; B -178 -20 486 709 ;
+U -1 ; WX 651 ; N fi ; G 109 ; B 83 0 591 732 ;
+U -1 ; WX 645 ; N fl ; G 110 ; B 88 0 585 732 ;
+U -1 ; WX 531 ; N breve ; G 129 ; B 165 594 471 729 ;
+U -1 ; WX 430 ; N dotaccent ; G 130 ; B 244 612 370 715 ;
+U -1 ; WX 456 ; N ring ; G 132 ; B 216 579 396 754 ;
+U -1 ; WX 565 ; N hungarumlaut ; G 134 ; B 91 590 505 740 ;
+U -1 ; WX 333 ; N ogonek ; G 135 ; B 35 -205 246 0 ;
+U -1 ; WX 523 ; N caron ; G 136 ; B 176 592 463 740 ;
+U -1 ; WX 630 ; N Lslash ; G 140 ; B 75 0 570 729 ;
+U -1 ; WX 350 ; N dotlessi ; G 145 ; B 94 0 290 527 ;
+U -1 ; WX 372 ; N lslash ; G 146 ; B 62 0 312 729 ;
+U -1 ; WX 743 ; N Abreve ; G 154 ; B 17 0 683 928 ;
+U -1 ; WX 723 ; N Aogonek ; G 157 ; B 17 -205 663 729 ;
+U -1 ; WX 830 ; N Cacute ; G 159 ; B 112 -23 770 939 ;
+U -1 ; WX 830 ; N Ccaron ; G 160 ; B 112 -23 770 939 ;
+U -1 ; WX 819 ; N Dcaron ; G 161 ; B 89 0 759 939 ;
+U -1 ; WX 811 ; N Ecaron ; G 166 ; B 90 0 751 939 ;
+U -1 ; WX 811 ; N Edotaccent ; G 167 ; B 90 0 751 914 ;
+U -1 ; WX 811 ; N Eogonek ; G 168 ; B 90 -205 751 729 ;
+U -1 ; WX 869 ; N Gbreve ; G 169 ; B 109 -23 809 928 ;
+U -1 ; WX 449 ; N Idotaccent ; G 174 ; B 100 0 389 914 ;
+U -1 ; WX 611 ; N Lacute ; G 175 ; B 80 0 551 939 ;
+U -1 ; WX 611 ; N Lcaron ; G 176 ; B 80 0 551 729 ;
+U -1 ; WX 861 ; N Nacute ; G 177 ; B 76 0 801 939 ;
+U -1 ; WX 861 ; N Ncaron ; G 178 ; B 76 0 801 939 ;
+U -1 ; WX 901 ; N Ohungarumlaut ; G 185 ; B 104 -23 841 939 ;
+U -1 ; WX 830 ; N Racute ; G 186 ; B 93 0 770 939 ;
+U -1 ; WX 830 ; N Rcaron ; G 187 ; B 93 0 770 939 ;
+U -1 ; WX 774 ; N Sacute ; G 188 ; B 89 -23 714 939 ;
+U -1 ; WX 774 ; N Scedilla ; G 190 ; B 89 -214 714 741 ;
+U -1 ; WX 808 ; N Tcaron ; G 191 ; B 158 0 748 939 ;
+U -1 ; WX 860 ; N Uring ; G 196 ; B 124 -23 800 953 ;
+U -1 ; WX 866 ; N Uhungarumlaut ; G 197 ; B 124 -23 806 939 ;
+U -1 ; WX 797 ; N Zacute ; G 199 ; B 28 0 737 939 ;
+U -1 ; WX 797 ; N Zdotaccent ; G 201 ; B 28 0 737 914 ;
+U -1 ; WX 723 ; N Amacron ; G 202 ; B 17 0 663 895 ;
+U -1 ; WX 808 ; N Tcommaaccent ; G 203 ; B 158 -284 748 729 ;
+U -1 ; WX 811 ; N Emacron ; G 205 ; B 90 0 751 895 ;
+U -1 ; WX 518 ; N Imacron ; G 206 ; B 100 0 458 895 ;
+U -1 ; WX 409 ; N Iogonek ; G 207 ; B 28 -205 349 729 ;
+U -1 ; WX 873 ; N Kcommaaccent ; G 208 ; B 79 -284 813 729 ;
+U -1 ; WX 611 ; N Lcommaaccent ; G 209 ; B 80 -284 551 729 ;
+U -1 ; WX 861 ; N Ncommaaccent ; G 210 ; B 76 -284 801 729 ;
+U -1 ; WX 888 ; N Omacron ; G 211 ; B 104 -23 828 895 ;
+U -1 ; WX 830 ; N Rcommaaccent ; G 212 ; B 93 -284 770 729 ;
+U -1 ; WX 869 ; N Gcommaaccent ; G 213 ; B 109 -284 809 741 ;
+U -1 ; WX 860 ; N Umacron ; G 214 ; B 124 -23 800 895 ;
+U -1 ; WX 860 ; N Uogonek ; G 215 ; B 124 -205 800 729 ;
+U -1 ; WX 642 ; N abreve ; G 220 ; B 65 -23 582 729 ;
+U -1 ; WX 631 ; N aogonek ; G 223 ; B 65 -205 571 539 ;
+U -1 ; WX 635 ; N cacute ; G 224 ; B 76 -23 575 740 ;
+U -1 ; WX 623 ; N ccaron ; G 225 ; B 76 -23 563 740 ;
+U -1 ; WX 870 ; N dcaron ; G 227 ; B 73 -23 810 729 ;
+U -1 ; WX 640 ; N ecaron ; G 232 ; B 84 -23 580 740 ;
+U -1 ; WX 640 ; N edotaccent ; G 233 ; B 84 -23 580 715 ;
+U -1 ; WX 640 ; N eogonek ; G 234 ; B 84 -205 580 539 ;
+U -1 ; WX 661 ; N gbreve ; G 235 ; B 32 -218 601 729 ;
+U -1 ; WX 523 ; N lacute ; G 240 ; B 68 0 463 939 ;
+U -1 ; WX 527 ; N lcaron ; G 241 ; B 68 0 467 729 ;
+U -1 ; WX 640 ; N nacute ; G 242 ; B 70 0 580 740 ;
+U -1 ; WX 638 ; N ncaron ; G 243 ; B 70 0 578 740 ;
+U -1 ; WX 743 ; N ohungarumlaut ; G 250 ; B 80 -23 683 740 ;
+U -1 ; WX 558 ; N racute ; G 251 ; B 69 0 498 740 ;
+U -1 ; WX 605 ; N sacute ; G 252 ; B 61 -23 545 740 ;
+U -1 ; WX 580 ; N scommaaccent ; G 254 ; B 61 -284 520 539 ;
+U -1 ; WX 552 ; N tcaron ; G 255 ; B 97 -23 492 801 ;
+U -1 ; WX 654 ; N uring ; G 260 ; B 88 -23 594 754 ;
+U -1 ; WX 743 ; N uhungarumlaut ; G 261 ; B 88 -23 683 740 ;
+U -1 ; WX 617 ; N zacute ; G 263 ; B 31 0 557 740 ;
+U -1 ; WX 617 ; N zdotaccent ; G 265 ; B 31 0 557 715 ;
+U -1 ; WX 426 ; N tcommaaccent ; G 267 ; B 55 -284 366 668 ;
+U -1 ; WX 628 ; N amacron ; G 268 ; B 65 -23 568 696 ;
+U -1 ; WX 640 ; N emacron ; G 269 ; B 84 -23 580 696 ;
+U -1 ; WX 433 ; N imacron ; G 270 ; B 66 0 373 696 ;
+U -1 ; WX 644 ; N kcommaaccent ; G 271 ; B 58 -284 584 729 ;
+U -1 ; WX 367 ; N lcommaaccent ; G 272 ; B -1 -284 307 729 ;
+U -1 ; WX 634 ; N ncommaaccent ; G 273 ; B 70 -284 574 539 ;
+U -1 ; WX 636 ; N omacron ; G 274 ; B 80 -23 576 696 ;
+U -1 ; WX 496 ; N rcommaaccent ; G 275 ; B 5 -284 436 539 ;
+U -1 ; WX 654 ; N umacron ; G 276 ; B 88 -23 594 696 ;
+U -1 ; WX 654 ; N uogonek ; G 277 ; B 88 -205 594 524 ;
+U -1 ; WX 546 ; N rcaron ; G 278 ; B 69 0 486 740 ;
+U -1 ; WX 581 ; N scedilla ; G 279 ; B 61 -214 521 539 ;
+U -1 ; WX 632 ; N gcommaaccent ; G 280 ; B 3 -218 572 813 ;
+U -1 ; WX 365 ; N iogonek ; G 281 ; B 0 -205 305 729 ;
+U -1 ; WX 774 ; N Scommaaccent ; G 282 ; B 89 -284 714 741 ;
+U -1 ; WX 819 ; N Dcroat ; G 284 ; B 89 0 759 729 ;
+U -1 ; WX 755 ; N dcroat ; G 286 ; B 73 -23 695 729 ;
+U -1 ; WX 661 ; N minus ; G 294 ; B 81 197 601 269 ;
+U -1 ; WX 333 ; N commaaccent ; G 302 ; B 57 -284 205 -60 ;
+U -1 ; WX 522 ; N lozenge ; G 305 ; B 16 0 462 744 ;
+U -1 ; WX 761 ; N Delta ; G 306 ; B 10 0 701 729 ;
+U -1 ; WX 669 ; N notequal ; G 307 ; B 74 2 609 480 ;
+U -1 ; WX 765 ; N radical ; G 308 ; B 102 -36 705 913 ;
+U -1 ; WX 719 ; N lessequal ; G 309 ; B 45 0 659 584 ;
+U -1 ; WX 686 ; N greaterequal ; G 310 ; B 56 0 626 584 ;
+U -1 ; WX 820 ; N summation ; G 312 ; B -18 -97 760 762 ;
+U -1 ; WX 518 ; N partialdiff ; G 313 ; B 22 -15 458 750 ;
+U -1 ; WX 713 ; N afii10017 ; G 316 ; B 17 0 653 729 ;
+U -1 ; WX 783 ; N afii10018 ; G 317 ; B 79 0 723 729 ;
+U -1 ; WX 771 ; N afii10019 ; G 318 ; B 79 0 711 729 ;
+U -1 ; WX 794 ; N afii10020 ; G 319 ; B 90 0 734 729 ;
+U -1 ; WX 928 ; N afii10021 ; G 320 ; B 31 -135 868 729 ;
+U -1 ; WX 811 ; N afii10022 ; G 321 ; B 90 0 751 729 ;
+U -1 ; WX 811 ; N afii10023 ; G 322 ; B 90 0 751 914 ;
+U -1 ; WX 1084 ; N afii10024 ; G 323 ; B 22 0 1024 729 ;
+U -1 ; WX 755 ; N afii10025 ; G 324 ; B 71 -23 695 741 ;
+U -1 ; WX 868 ; N afii10026 ; G 325 ; B 83 0 808 729 ;
+U -1 ; WX 868 ; N afii10027 ; G 326 ; B 83 0 808 928 ;
+U -1 ; WX 870 ; N afii10028 ; G 327 ; B 79 0 810 729 ;
+U -1 ; WX 781 ; N afii10029 ; G 328 ; B 6 0 721 729 ;
+U -1 ; WX 976 ; N afii10030 ; G 329 ; B 75 0 916 729 ;
+U -1 ; WX 859 ; N afii10031 ; G 330 ; B 83 0 799 729 ;
+U -1 ; WX 888 ; N afii10032 ; G 331 ; B 104 -23 828 741 ;
+U -1 ; WX 859 ; N afii10033 ; G 332 ; B 83 0 799 729 ;
+U -1 ; WX 793 ; N afii10034 ; G 333 ; B 91 0 733 729 ;
+U -1 ; WX 830 ; N afii10035 ; G 334 ; B 112 -23 770 741 ;
+U -1 ; WX 808 ; N afii10036 ; G 335 ; B 158 0 748 729 ;
+U -1 ; WX 717 ; N afii10037 ; G 336 ; B 22 0 657 729 ;
+U -1 ; WX 973 ; N afii10038 ; G 337 ; B 99 0 915 729 ;
+U -1 ; WX 854 ; N afii10039 ; G 338 ; B 22 0 794 729 ;
+U -1 ; WX 859 ; N afii10040 ; G 339 ; B 83 -135 799 729 ;
+U -1 ; WX 751 ; N afii10041 ; G 340 ; B 159 0 691 729 ;
+U -1 ; WX 945 ; N afii10042 ; G 341 ; B 60 0 885 729 ;
+U -1 ; WX 945 ; N afii10043 ; G 342 ; B 60 -135 885 729 ;
+U -1 ; WX 901 ; N afii10044 ; G 343 ; B 158 0 841 729 ;
+U -1 ; WX 1023 ; N afii10045 ; G 344 ; B 83 0 963 729 ;
+U -1 ; WX 733 ; N afii10046 ; G 345 ; B 83 0 673 729 ;
+U -1 ; WX 827 ; N afii10047 ; G 346 ; B 104 -23 767 741 ;
+U -1 ; WX 1159 ; N afii10048 ; G 347 ; B 60 -23 1099 741 ;
+U -1 ; WX 828 ; N afii10049 ; G 348 ; B 22 0 768 729 ;
+U -1 ; WX 628 ; N afii10065 ; G 349 ; B 65 -23 568 539 ;
+U -1 ; WX 686 ; N afii10066 ; G 350 ; B 72 -23 626 776 ;
+U -1 ; WX 608 ; N afii10067 ; G 351 ; B 70 0 548 525 ;
+U -1 ; WX 536 ; N afii10068 ; G 352 ; B 70 0 476 524 ;
+U -1 ; WX 656 ; N afii10069 ; G 353 ; B -18 -120 596 524 ;
+U -1 ; WX 640 ; N afii10070 ; G 354 ; B 84 -23 580 539 ;
+U -1 ; WX 640 ; N afii10071 ; G 355 ; B 84 -23 580 715 ;
+U -1 ; WX 961 ; N afii10072 ; G 356 ; B 17 0 901 524 ;
+U -1 ; WX 580 ; N afii10073 ; G 357 ; B 60 -23 520 539 ;
+U -1 ; WX 658 ; N afii10074 ; G 358 ; B 70 0 598 524 ;
+U -1 ; WX 658 ; N afii10075 ; G 359 ; B 70 0 598 729 ;
+U -1 ; WX 653 ; N afii10076 ; G 360 ; B 70 0 593 524 ;
+U -1 ; WX 603 ; N afii10077 ; G 361 ; B 14 0 543 524 ;
+U -1 ; WX 719 ; N afii10078 ; G 362 ; B 70 0 659 524 ;
+U -1 ; WX 659 ; N afii10079 ; G 363 ; B 70 0 599 524 ;
+U -1 ; WX 636 ; N afii10080 ; G 364 ; B 80 -23 576 539 ;
+U -1 ; WX 658 ; N afii10081 ; G 365 ; B 70 0 598 524 ;
+U -1 ; WX 646 ; N afii10082 ; G 366 ; B 7 -213 586 539 ;
+U -1 ; WX 614 ; N afii10083 ; G 367 ; B 76 -23 554 539 ;
+U -1 ; WX 548 ; N afii10084 ; G 368 ; B 100 0 488 524 ;
+U -1 ; WX 650 ; N afii10085 ; G 369 ; B 8 -218 590 524 ;
+U -1 ; WX 1006 ; N afii10086 ; G 370 ; B 71 -218 946 674 ;
+U -1 ; WX 643 ; N afii10087 ; G 371 ; B 17 0 583 524 ;
+U -1 ; WX 658 ; N afii10088 ; G 372 ; B 70 -120 598 524 ;
+U -1 ; WX 595 ; N afii10089 ; G 373 ; B 133 0 535 524 ;
+U -1 ; WX 793 ; N afii10090 ; G 374 ; B 70 0 733 524 ;
+U -1 ; WX 793 ; N afii10091 ; G 375 ; B 70 -120 733 524 ;
+U -1 ; WX 700 ; N afii10092 ; G 376 ; B 99 0 640 525 ;
+U -1 ; WX 832 ; N afii10093 ; G 377 ; B 70 0 772 525 ;
+U -1 ; WX 583 ; N afii10094 ; G 378 ; B 70 0 523 525 ;
+U -1 ; WX 614 ; N afii10095 ; G 379 ; B 80 -23 554 539 ;
+U -1 ; WX 866 ; N afii10096 ; G 380 ; B 70 -23 806 539 ;
+U -1 ; WX 662 ; N afii10097 ; G 381 ; B 16 0 602 525 ;
+U -1 ; WX 811 ; N uni0400 ; G 382 ; B 90 0 751 949 ;
+U -1 ; WX 756 ; N afii10051 ; G 383 ; B 81 -140 696 729 ;
+U -1 ; WX 794 ; N afii10052 ; G 384 ; B 90 0 734 949 ;
+U -1 ; WX 827 ; N afii10053 ; G 385 ; B 104 -23 767 741 ;
+U -1 ; WX 695 ; N afii10054 ; G 386 ; B 8 -23 659 741 ;
+U -1 ; WX 409 ; N afii10055 ; G 387 ; B 100 0 349 729 ;
+U -1 ; WX 527 ; N afii10056 ; G 388 ; B 100 0 467 907 ;
+U -1 ; WX 641 ; N afii10057 ; G 389 ; B 47 -23 581 729 ;
+U -1 ; WX 1122 ; N afii10058 ; G 390 ; B 6 0 1062 729 ;
+U -1 ; WX 1199 ; N afii10059 ; G 391 ; B 83 0 1139 729 ;
+U -1 ; WX 716 ; N afii10060 ; G 392 ; B 81 0 656 729 ;
+U -1 ; WX 870 ; N afii10061 ; G 393 ; B 79 0 810 949 ;
+U -1 ; WX 868 ; N uni040D ; G 394 ; B 83 0 808 949 ;
+U -1 ; WX 717 ; N afii10062 ; G 395 ; B 22 0 657 936 ;
+U -1 ; WX 859 ; N afii10145 ; G 396 ; B 83 -135 799 729 ;
+U -1 ; WX 640 ; N uni0450 ; G 397 ; B 84 -23 580 747 ;
+U -1 ; WX 630 ; N afii10099 ; G 398 ; B 70 -126 570 729 ;
+U -1 ; WX 615 ; N afii10100 ; G 399 ; B 70 0 555 747 ;
+U -1 ; WX 614 ; N afii10101 ; G 400 ; B 80 -23 554 539 ;
+U -1 ; WX 528 ; N afii10102 ; G 401 ; B -9 -23 484 539 ;
+U -1 ; WX 365 ; N afii10103 ; G 402 ; B 66 0 305 729 ;
+U -1 ; WX 479 ; N afii10104 ; G 403 ; B 94 0 419 708 ;
+U -1 ; WX 368 ; N afii10105 ; G 404 ; B -65 -218 308 729 ;
+U -1 ; WX 860 ; N afii10106 ; G 405 ; B 14 0 800 525 ;
+U -1 ; WX 861 ; N afii10107 ; G 406 ; B 14 0 801 525 ;
+U -1 ; WX 634 ; N afii10108 ; G 407 ; B 70 0 574 729 ;
+U -1 ; WX 673 ; N afii10109 ; G 408 ; B 70 0 613 747 ;
+U -1 ; WX 658 ; N uni045D ; G 409 ; B 70 0 598 747 ;
+U -1 ; WX 650 ; N afii10110 ; G 410 ; B 8 -218 590 734 ;
+U -1 ; WX 658 ; N afii10193 ; G 411 ; B 70 -120 598 524 ;
+U -1 ; WX 733 ; N uni048C ; G 412 ; B 83 0 683 729 ;
+U -1 ; WX 583 ; N uni048D ; G 413 ; B 56 0 537 525 ;
+U -1 ; WX 793 ; N uni048E ; G 414 ; B 91 0 756 729 ;
+U -1 ; WX 647 ; N uni048F ; G 415 ; B 7 -218 614 539 ;
+U -1 ; WX 727 ; N afii10050 ; G 416 ; B 2 0 667 825 ;
+U -1 ; WX 492 ; N afii10098 ; G 417 ; B 3 0 432 629 ;
+U -1 ; WX 794 ; N uni0492 ; G 418 ; B 90 0 734 729 ;
+U -1 ; WX 536 ; N uni0493 ; G 419 ; B 44 0 476 524 ;
+U -1 ; WX 794 ; N uni0494 ; G 420 ; B 90 -140 734 729 ;
+U -1 ; WX 536 ; N uni0495 ; G 421 ; B 70 -126 476 524 ;
+U -1 ; WX 1084 ; N uni0496 ; G 422 ; B 22 -135 1024 729 ;
+U -1 ; WX 961 ; N uni0497 ; G 423 ; B 17 -120 901 524 ;
+U -1 ; WX 755 ; N uni0498 ; G 424 ; B 71 -205 695 741 ;
+U -1 ; WX 580 ; N uni0499 ; G 425 ; B 60 -205 520 539 ;
+U -1 ; WX 870 ; N uni049A ; G 426 ; B 79 -135 810 729 ;
+U -1 ; WX 653 ; N uni049B ; G 427 ; B 70 -120 593 524 ;
+U -1 ; WX 870 ; N uni049C ; G 428 ; B 79 0 810 729 ;
+U -1 ; WX 653 ; N uni049D ; G 429 ; B 70 0 593 524 ;
+U -1 ; WX 870 ; N uni049E ; G 430 ; B 79 0 810 729 ;
+U -1 ; WX 653 ; N uni049F ; G 431 ; B 70 0 593 524 ;
+U -1 ; WX 910 ; N uni04A0 ; G 432 ; B 25 0 850 729 ;
+U -1 ; WX 761 ; N uni04A1 ; G 433 ; B 90 0 701 525 ;
+U -1 ; WX 859 ; N uni04A2 ; G 434 ; B 83 -135 799 729 ;
+U -1 ; WX 659 ; N uni04A3 ; G 435 ; B 70 -120 599 524 ;
+U -1 ; WX 1193 ; N uni04A4 ; G 436 ; B 83 0 1133 729 ;
+U -1 ; WX 859 ; N uni04A5 ; G 437 ; B 70 0 799 524 ;
+U -1 ; WX 1125 ; N uni04A6 ; G 438 ; B 83 -140 1065 729 ;
+U -1 ; WX 837 ; N uni04A7 ; G 439 ; B 70 -126 777 524 ;
+U -1 ; WX 830 ; N uni04A8 ; G 440 ; B 112 -23 770 741 ;
+U -1 ; WX 614 ; N uni04A9 ; G 441 ; B 76 -23 554 539 ;
+U -1 ; WX 830 ; N uni04AA ; G 442 ; B 112 -205 770 741 ;
+U -1 ; WX 614 ; N uni04AB ; G 443 ; B 76 -205 554 539 ;
+U -1 ; WX 807 ; N uni04AC ; G 444 ; B 158 -135 747 729 ;
+U -1 ; WX 548 ; N uni04AD ; G 445 ; B 100 -120 488 524 ;
+U -1 ; WX 876 ; N uni04AE ; G 446 ; B 168 0 816 729 ;
+U -1 ; WX 785 ; N uni04AF ; G 447 ; B 157 -200 725 524 ;
+U -1 ; WX 867 ; N uni04B0 ; G 448 ; B 114 0 807 729 ;
+U -1 ; WX 786 ; N uni04B1 ; G 449 ; B 106 -200 726 524 ;
+U -1 ; WX 852 ; N uni04B2 ; G 450 ; B 22 -135 792 729 ;
+U -1 ; WX 639 ; N uni04B3 ; G 451 ; B 17 -120 579 524 ;
+U -1 ; WX 1016 ; N uni04B4 ; G 452 ; B 158 -135 956 729 ;
+U -1 ; WX 727 ; N uni04B5 ; G 453 ; B 100 -120 667 524 ;
+U -1 ; WX 751 ; N uni04B6 ; G 454 ; B 159 -135 691 729 ;
+U -1 ; WX 595 ; N uni04B7 ; G 455 ; B 133 -120 535 524 ;
+U -1 ; WX 751 ; N uni04B8 ; G 456 ; B 159 0 691 729 ;
+U -1 ; WX 595 ; N uni04B9 ; G 457 ; B 133 0 535 524 ;
+U -1 ; WX 751 ; N uni04BA ; G 458 ; B 159 0 691 729 ;
+U -1 ; WX 595 ; N uni04BB ; G 459 ; B 133 0 535 524 ;
+U -1 ; WX 830 ; N uni04BC ; G 460 ; B -8 -23 770 794 ;
+U -1 ; WX 724 ; N uni04BD ; G 461 ; B 75 -23 664 542 ;
+U -1 ; WX 830 ; N uni04BE ; G 462 ; B -8 -205 770 794 ;
+U -1 ; WX 724 ; N uni04BF ; G 463 ; B 75 -205 664 542 ;
+U -1 ; WX 409 ; N uni04C0 ; G 464 ; B 100 0 349 729 ;
+U -1 ; WX 1084 ; N uni04C1 ; G 465 ; B 22 0 1024 936 ;
+U -1 ; WX 961 ; N uni04C2 ; G 466 ; B 17 0 901 734 ;
+U -1 ; WX 870 ; N uni04C3 ; G 467 ; B 79 -140 810 729 ;
+U -1 ; WX 653 ; N uni04C4 ; G 468 ; B 70 -126 593 524 ;
+U -1 ; WX 859 ; N uni04C7 ; G 469 ; B 83 -140 799 729 ;
+U -1 ; WX 659 ; N uni04C8 ; G 470 ; B 70 -126 599 524 ;
+U -1 ; WX 751 ; N uni04CB ; G 471 ; B 159 -135 691 729 ;
+U -1 ; WX 595 ; N uni04CC ; G 472 ; B 133 -120 535 524 ;
+U -1 ; WX 747 ; N uni04D0 ; G 473 ; B 17 0 687 936 ;
+U -1 ; WX 646 ; N uni04D1 ; G 474 ; B 65 -23 586 734 ;
+U -1 ; WX 722 ; N uni04D2 ; G 475 ; B 17 0 662 904 ;
+U -1 ; WX 628 ; N uni04D3 ; G 476 ; B 65 -23 568 702 ;
+U -1 ; WX 1147 ; N uni04D4 ; G 477 ; B 11 0 1087 729 ;
+U -1 ; WX 975 ; N uni04D5 ; G 478 ; B 59 -23 915 539 ;
+U -1 ; WX 811 ; N uni04D6 ; G 479 ; B 90 0 751 936 ;
+U -1 ; WX 641 ; N uni04D7 ; G 480 ; B 84 -23 581 734 ;
+U -1 ; WX 830 ; N uni04D8 ; G 481 ; B 110 -23 770 741 ;
+U -1 ; WX 614 ; N afii10846 ; G 482 ; B 76 -23 554 539 ;
+U -1 ; WX 830 ; N uni04DA ; G 483 ; B 110 -23 770 904 ;
+U -1 ; WX 614 ; N uni04DB ; G 484 ; B 76 -23 554 702 ;
+U -1 ; WX 1084 ; N uni04DC ; G 485 ; B 22 0 1024 904 ;
+U -1 ; WX 961 ; N uni04DD ; G 486 ; B 17 0 901 702 ;
+U -1 ; WX 755 ; N uni04DE ; G 487 ; B 71 -23 695 904 ;
+U -1 ; WX 580 ; N uni04DF ; G 488 ; B 60 -23 520 702 ;
+U -1 ; WX 755 ; N uni04E0 ; G 489 ; B 71 -23 695 741 ;
+U -1 ; WX 580 ; N uni04E1 ; G 490 ; B 60 -23 520 539 ;
+U -1 ; WX 868 ; N uni04E2 ; G 491 ; B 83 0 808 870 ;
+U -1 ; WX 658 ; N uni04E3 ; G 492 ; B 70 0 598 668 ;
+U -1 ; WX 868 ; N uni04E4 ; G 493 ; B 83 0 808 904 ;
+U -1 ; WX 658 ; N uni04E5 ; G 494 ; B 70 0 598 702 ;
+U -1 ; WX 888 ; N uni04E6 ; G 495 ; B 104 -23 828 904 ;
+U -1 ; WX 636 ; N uni04E7 ; G 496 ; B 80 -23 576 702 ;
+U -1 ; WX 890 ; N uni04E8 ; G 497 ; B 67 -23 868 741 ;
+U -1 ; WX 634 ; N uni04E9 ; G 498 ; B 53 -23 602 539 ;
+U -1 ; WX 890 ; N uni04EA ; G 499 ; B 67 -23 868 904 ;
+U -1 ; WX 634 ; N uni04EB ; G 500 ; B 53 -23 602 702 ;
+U -1 ; WX 827 ; N uni04EC ; G 501 ; B 104 -23 767 904 ;
+U -1 ; WX 614 ; N uni04ED ; G 502 ; B 80 -23 554 702 ;
+U -1 ; WX 717 ; N uni04EE ; G 503 ; B 22 0 657 870 ;
+U -1 ; WX 650 ; N uni04EF ; G 504 ; B 8 -218 590 668 ;
+U -1 ; WX 717 ; N uni04F0 ; G 505 ; B 22 0 657 904 ;
+U -1 ; WX 650 ; N uni04F1 ; G 506 ; B 8 -218 590 702 ;
+U -1 ; WX 733 ; N uni04F2 ; G 507 ; B 22 0 673 951 ;
+U -1 ; WX 734 ; N uni04F3 ; G 508 ; B 8 -218 674 749 ;
+U -1 ; WX 751 ; N uni04F4 ; G 509 ; B 159 0 691 904 ;
+U -1 ; WX 595 ; N uni04F5 ; G 510 ; B 133 0 535 702 ;
+U -1 ; WX 1023 ; N uni04F8 ; G 511 ; B 83 0 963 904 ;
+U -1 ; WX 832 ; N uni04F9 ; G 512 ; B 70 0 772 702 ;
+U -1 ; WX 536 ; N uniF6C4 ; G 513 ; B 70 0 476 524 ;
+U -1 ; WX 615 ; N uniF6C5 ; G 514 ; B 1 -23 555 775 ;
+U -1 ; WX 656 ; N uniF6C6 ; G 515 ; B -18 -120 596 524 ;
+U -1 ; WX 658 ; N uniF6C7 ; G 516 ; B 70 0 598 524 ;
+U -1 ; WX 548 ; N uniF6C8 ; G 517 ; B 100 0 488 524 ;
+U -1 ; WX 830 ; N Ccircumflex ; G 518 ; B 112 -23 770 979 ;
+U -1 ; WX 614 ; N ccircumflex ; G 519 ; B 76 -23 554 774 ;
+U -1 ; WX 830 ; N Cdotaccent ; G 520 ; B 112 -23 770 932 ;
+U -1 ; WX 614 ; N cdotaccent ; G 521 ; B 76 -23 554 727 ;
+U -1 ; WX 811 ; N Ebreve ; G 522 ; B 90 0 751 964 ;
+U -1 ; WX 652 ; N ebreve ; G 523 ; B 84 -23 592 759 ;
+U -1 ; WX 869 ; N Gcircumflex ; G 524 ; B 109 -23 809 979 ;
+U -1 ; WX 661 ; N gcircumflex ; G 525 ; B 32 -218 601 774 ;
+U -1 ; WX 869 ; N Gdotaccent ; G 526 ; B 109 -23 809 932 ;
+U -1 ; WX 661 ; N gdotaccent ; G 527 ; B 32 -218 601 727 ;
+U -1 ; WX 859 ; N Hcircumflex ; G 528 ; B 83 0 799 979 ;
+U -1 ; WX 660 ; N hcircumflex ; G 529 ; B 70 0 600 979 ;
+U -1 ; WX 924 ; N Hbar ; G 530 ; B 103 0 864 729 ;
+U -1 ; WX 653 ; N hbar ; G 531 ; B 89 0 593 729 ;
+U -1 ; WX 565 ; N Itilde ; G 532 ; B 100 0 505 937 ;
+U -1 ; WX 511 ; N itilde ; G 533 ; B 94 0 451 732 ;
+U -1 ; WX 563 ; N Ibreve ; G 534 ; B 100 0 503 964 ;
+U -1 ; WX 508 ; N ibreve ; G 535 ; B 94 0 448 759 ;
+U -1 ; WX 872 ; N IJ ; G 536 ; B 100 -23 812 729 ;
+U -1 ; WX 503 ; N ij ; G 537 ; B 66 -218 443 729 ;
+U -1 ; WX 753 ; N Jcircumflex ; G 538 ; B 47 -23 693 951 ;
+U -1 ; WX 447 ; N jcircumflex ; G 539 ; B -65 -218 387 828 ;
+U -1 ; WX 653 ; N kgreenlandic ; G 540 ; B 70 0 593 524 ;
+U -1 ; WX 611 ; N Ldot ; G 541 ; B 80 0 551 729 ;
+U -1 ; WX 505 ; N ldot ; G 542 ; B 68 0 445 729 ;
+U -1 ; WX 634 ; N napostrophe ; G 543 ; B 70 0 574 788 ;
+U -1 ; WX 861 ; N Eng ; G 544 ; B 76 -156 801 729 ;
+U -1 ; WX 634 ; N eng ; G 545 ; B 70 -126 574 539 ;
+U -1 ; WX 888 ; N Obreve ; G 546 ; B 104 -23 828 964 ;
+U -1 ; WX 645 ; N obreve ; G 547 ; B 80 -23 585 759 ;
+U -1 ; WX 774 ; N Scircumflex ; G 548 ; B 89 -23 714 979 ;
+U -1 ; WX 581 ; N scircumflex ; G 549 ; B 61 -23 521 774 ;
+U -1 ; WX 808 ; N _d_550 ; G 550 ; B 125 -214 748 729 ;
+U -1 ; WX 426 ; N _d_551 ; G 551 ; B 1 -234 366 668 ;
+U -1 ; WX 808 ; N Tbar ; G 552 ; B 158 0 748 729 ;
+U -1 ; WX 426 ; N tbar ; G 553 ; B 66 -23 366 668 ;
+U -1 ; WX 860 ; N Utilde ; G 554 ; B 124 -23 800 937 ;
+U -1 ; WX 654 ; N utilde ; G 555 ; B 88 -23 594 732 ;
+U -1 ; WX 860 ; N Ubreve ; G 556 ; B 124 -23 800 964 ;
+U -1 ; WX 654 ; N ubreve ; G 557 ; B 88 -23 594 759 ;
+U -1 ; WX 1144 ; N Wcircumflex ; G 558 ; B 177 0 1084 979 ;
+U -1 ; WX 880 ; N wcircumflex ; G 559 ; B 118 0 820 774 ;
+U -1 ; WX 876 ; N Ycircumflex ; G 560 ; B 168 0 816 979 ;
+U -1 ; WX 650 ; N ycircumflex ; G 561 ; B 8 -218 590 774 ;
+U -1 ; WX 473 ; N longs ; G 562 ; B 89 0 413 732 ;
+U -1 ; WX 1165 ; N afii61352 ; G 563 ; B 76 0 1105 729 ;
+U -1 ; WX 958 ; N infinity ; G 564 ; B 79 119 898 547 ;
+U -1 ; WX 876 ; N uni1EF6 ; G 565 ; B 168 0 816 1042 ;
+U -1 ; WX 650 ; N uni1EF7 ; G 566 ; B 8 -218 590 846 ;
+U -1 ; WX 876 ; N uni1EF4 ; G 567 ; B 168 -223 816 729 ;
+U -1 ; WX 650 ; N uni1EF5 ; G 568 ; B 8 -223 590 524 ;
+U -1 ; WX 721 ; N uni1EA2 ; G 569 ; B 17 0 661 1042 ;
+U -1 ; WX 713 ; N uni1EA0 ; G 570 ; B 17 -223 653 729 ;
+U -1 ; WX 755 ; N uni1EA6 ; G 571 ; B 17 0 695 1129 ;
+U -1 ; WX 719 ; N uni1EA4 ; G 572 ; B 17 0 659 1129 ;
+U -1 ; WX 840 ; N uni1EAA ; G 573 ; B 17 0 780 1118 ;
+U -1 ; WX 909 ; N uni1EA8 ; G 574 ; B 17 0 849 1154 ;
+U -1 ; WX 719 ; N uni1EAC ; G 575 ; B 17 -223 659 960 ;
+U -1 ; WX 720 ; N uni1EB0 ; G 576 ; B 17 0 660 1132 ;
+U -1 ; WX 766 ; N uni1EAE ; G 577 ; B 17 0 706 1132 ;
+U -1 ; WX 764 ; N uni1EB4 ; G 578 ; B 17 0 704 1117 ;
+U -1 ; WX 720 ; N uni1EB2 ; G 579 ; B 17 0 660 1191 ;
+U -1 ; WX 720 ; N uni1EB6 ; G 580 ; B 17 -223 660 954 ;
+U -1 ; WX 811 ; N uni1EBC ; G 581 ; B 90 0 751 954 ;
+U -1 ; WX 811 ; N uni1EBA ; G 582 ; B 90 0 751 1042 ;
+U -1 ; WX 811 ; N uni1EB8 ; G 583 ; B 90 -223 751 729 ;
+U -1 ; WX 811 ; N uni1EC0 ; G 584 ; B 90 0 751 1129 ;
+U -1 ; WX 811 ; N uni1EBE ; G 585 ; B 90 0 751 1129 ;
+U -1 ; WX 829 ; N uni1EC4 ; G 586 ; B 90 0 769 1118 ;
+U -1 ; WX 898 ; N uni1EC2 ; G 587 ; B 90 0 838 1154 ;
+U -1 ; WX 811 ; N uni1EC6 ; G 588 ; B 90 -223 751 960 ;
+U -1 ; WX 515 ; N uni1EC8 ; G 589 ; B 100 0 455 1042 ;
+U -1 ; WX 639 ; N uni1EA3 ; G 590 ; B 65 -23 579 846 ;
+U -1 ; WX 628 ; N uni1EA1 ; G 591 ; B 65 -223 568 539 ;
+U -1 ; WX 647 ; N uni1EA7 ; G 592 ; B 65 -23 587 933 ;
+U -1 ; WX 628 ; N uni1EA5 ; G 593 ; B 65 -23 568 933 ;
+U -1 ; WX 732 ; N uni1EAB ; G 594 ; B 65 -23 672 922 ;
+U -1 ; WX 801 ; N uni1EA9 ; G 595 ; B 65 -23 741 958 ;
+U -1 ; WX 628 ; N uni1EAD ; G 596 ; B 65 -223 568 764 ;
+U -1 ; WX 647 ; N uni1EB1 ; G 597 ; B 65 -23 587 937 ;
+U -1 ; WX 693 ; N uni1EAF ; G 598 ; B 65 -23 633 937 ;
+U -1 ; WX 691 ; N uni1EB5 ; G 599 ; B 65 -23 631 922 ;
+U -1 ; WX 647 ; N uni1EB3 ; G 600 ; B 65 -23 587 996 ;
+U -1 ; WX 647 ; N uni1EB7 ; G 601 ; B 65 -223 587 759 ;
+U -1 ; WX 644 ; N uni1EBD ; G 602 ; B 84 -23 584 752 ;
+U -1 ; WX 640 ; N uni1EBB ; G 603 ; B 84 -23 580 846 ;
+U -1 ; WX 640 ; N uni1EB9 ; G 604 ; B 84 -223 580 539 ;
+U -1 ; WX 647 ; N uni1EC1 ; G 605 ; B 84 -23 587 933 ;
+U -1 ; WX 640 ; N uni1EBF ; G 606 ; B 84 -23 580 933 ;
+U -1 ; WX 732 ; N uni1EC5 ; G 607 ; B 84 -23 672 922 ;
+U -1 ; WX 801 ; N uni1EC3 ; G 608 ; B 84 -23 741 958 ;
+U -1 ; WX 640 ; N uni1EC7 ; G 609 ; B 84 -223 580 764 ;
+U -1 ; WX 472 ; N uni1EC9 ; G 610 ; B 94 0 412 846 ;
+U -1 ; WX 409 ; N uni1ECA ; G 611 ; B 54 -223 349 729 ;
+U -1 ; WX 888 ; N uni1ECE ; G 612 ; B 104 -23 828 1042 ;
+U -1 ; WX 888 ; N uni1ECC ; G 613 ; B 104 -223 828 741 ;
+U -1 ; WX 888 ; N uni1ED2 ; G 614 ; B 104 -23 828 1129 ;
+U -1 ; WX 888 ; N uni1ED0 ; G 615 ; B 104 -23 828 1129 ;
+U -1 ; WX 888 ; N uni1ED6 ; G 616 ; B 104 -23 828 1118 ;
+U -1 ; WX 953 ; N uni1ED4 ; G 617 ; B 104 -23 893 1154 ;
+U -1 ; WX 888 ; N uni1ED8 ; G 618 ; B 104 -223 828 960 ;
+U -1 ; WX 907 ; N Ohorn ; G 619 ; B 104 -23 847 832 ;
+U -1 ; WX 907 ; N uni1EDC ; G 620 ; B 104 -23 847 994 ;
+U -1 ; WX 907 ; N uni1EDA ; G 621 ; B 104 -23 847 976 ;
+U -1 ; WX 907 ; N uni1EE0 ; G 622 ; B 104 -23 847 977 ;
+U -1 ; WX 907 ; N uni1EDE ; G 623 ; B 104 -23 847 1058 ;
+U -1 ; WX 907 ; N uni1EE2 ; G 624 ; B 104 -223 847 832 ;
+U -1 ; WX 860 ; N _d_625 ; G 625 ; B 124 -23 800 909 ;
+U -1 ; WX 860 ; N uni1EE6 ; G 626 ; B 124 -23 800 1042 ;
+U -1 ; WX 860 ; N uni1EE4 ; G 627 ; B 124 -223 800 729 ;
+U -1 ; WX 988 ; N Uhorn ; G 628 ; B 124 -23 928 832 ;
+U -1 ; WX 988 ; N uni1EEA ; G 629 ; B 124 -23 928 994 ;
+U -1 ; WX 988 ; N uni1EE8 ; G 630 ; B 124 -23 928 976 ;
+U -1 ; WX 988 ; N uni1EEE ; G 631 ; B 124 -23 928 977 ;
+U -1 ; WX 988 ; N uni1EEC ; G 632 ; B 124 -23 928 1058 ;
+U -1 ; WX 988 ; N uni1EF0 ; G 633 ; B 124 -223 928 832 ;
+U -1 ; WX 876 ; N Ygrave ; G 634 ; B 168 0 816 967 ;
+U -1 ; WX 876 ; N uni1EF8 ; G 635 ; B 168 0 816 954 ;
+U -1 ; WX 365 ; N uni1ECB ; G 636 ; B 14 -223 305 729 ;
+U -1 ; WX 636 ; N uni1ECF ; G 637 ; B 80 -23 576 846 ;
+U -1 ; WX 636 ; N uni1ECD ; G 638 ; B 80 -223 576 539 ;
+U -1 ; WX 647 ; N uni1ED3 ; G 639 ; B 80 -23 587 933 ;
+U -1 ; WX 636 ; N uni1ED1 ; G 640 ; B 80 -23 576 933 ;
+U -1 ; WX 732 ; N uni1ED7 ; G 641 ; B 80 -23 672 922 ;
+U -1 ; WX 801 ; N uni1ED5 ; G 642 ; B 80 -23 741 958 ;
+U -1 ; WX 636 ; N uni1ED9 ; G 643 ; B 80 -223 576 764 ;
+U -1 ; WX 706 ; N ohorn ; G 644 ; B 80 -23 646 627 ;
+U -1 ; WX 706 ; N uni1EDD ; G 645 ; B 80 -23 646 822 ;
+U -1 ; WX 706 ; N uni1EDB ; G 646 ; B 80 -23 646 782 ;
+U -1 ; WX 706 ; N uni1EE1 ; G 647 ; B 80 -23 646 776 ;
+U -1 ; WX 706 ; N uni1EDF ; G 648 ; B 80 -23 646 864 ;
+U -1 ; WX 706 ; N uni1EE3 ; G 649 ; B 80 -223 646 627 ;
+U -1 ; WX 654 ; N _d_650 ; G 650 ; B 88 -23 594 707 ;
+U -1 ; WX 654 ; N uni1EE7 ; G 651 ; B 88 -23 594 846 ;
+U -1 ; WX 654 ; N uni1EE5 ; G 652 ; B 88 -223 594 524 ;
+U -1 ; WX 781 ; N uhorn ; G 653 ; B 88 -23 721 627 ;
+U -1 ; WX 781 ; N uni1EEB ; G 654 ; B 88 -23 721 822 ;
+U -1 ; WX 781 ; N uni1EE9 ; G 655 ; B 88 -23 721 782 ;
+U -1 ; WX 781 ; N uni1EEF ; G 656 ; B 88 -23 721 776 ;
+U -1 ; WX 781 ; N uni1EED ; G 657 ; B 88 -23 721 864 ;
+U -1 ; WX 781 ; N uni1EF1 ; G 658 ; B 88 -223 721 627 ;
+U -1 ; WX 650 ; N ygrave ; G 659 ; B 8 -218 590 772 ;
+U -1 ; WX 650 ; N uni1EF9 ; G 660 ; B 8 -218 590 752 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Courier-Oblique.ufm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Courier-Oblique.ufm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Courier-Oblique.ufm	(revision 2000)
@@ -0,0 +1,715 @@
+StartFontMetrics 4.1
+FontName Nimbus_Mono_L_Regular_Oblique
+FullName Nimbus Mono L Regular Oblique
+Notice 
+EncodingScheme FontSpecific
+FamilyName Nimbus Mono L
+Weight Regular Oblique
+Version 1.0
+Characters 657
+ItalicAngle -11.9
+Ascender 959
+Descender -237
+UnderlineThickness 50
+UnderlinePosition -100
+IsFixedPitch false
+FontBBox -97 -237 774 959
+StartCharMetrics 696
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .null ; G 1 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N exclam ; G 2 ; B 246 -15 463 618 ;
+U -1 ; WX 624 ; N quotedbl ; G 3 ; B 254 315 582 604 ;
+U -1 ; WX 631 ; N numbersign ; G 4 ; B 137 -62 589 647 ;
+U -1 ; WX 624 ; N dollar ; G 5 ; B 131 -92 582 655 ;
+U -1 ; WX 633 ; N percent ; G 6 ; B 137 -12 591 611 ;
+U -1 ; WX 600 ; N ampersand ; G 7 ; B 132 -16 527 519 ;
+U -1 ; WX 600 ; N quotesingle ; G 104 ; B 344 315 492 604 ;
+U -1 ; WX 625 ; N parenleft ; G 9 ; B 335 -124 583 604 ;
+U -1 ; WX 600 ; N parenright ; G 10 ; B 124 -124 372 604 ;
+U -1 ; WX 628 ; N asterisk ; G 11 ; B 211 250 586 604 ;
+U -1 ; WX 630 ; N plus ; G 12 ; B 131 32 588 530 ;
+U -1 ; WX 600 ; N comma ; G 13 ; B 110 -145 371 145 ;
+U -1 ; WX 630 ; N hyphen ; G 14 ; B 131 258 588 299 ;
+U -1 ; WX 600 ; N period ; G 15 ; B 235 -15 386 116 ;
+U -1 ; WX 667 ; N slash ; G 16 ; B 99 -81 625 668 ;
+U -1 ; WX 613 ; N zero ; G 17 ; B 156 -15 571 618 ;
+U -1 ; WX 600 ; N one ; G 18 ; B 117 0 492 612 ;
+U -1 ; WX 614 ; N two ; G 19 ; B 84 0 572 618 ;
+U -1 ; WX 621 ; N three ; G 20 ; B 110 -15 579 618 ;
+U -1 ; WX 600 ; N four ; G 21 ; B 141 0 545 604 ;
+U -1 ; WX 626 ; N five ; G 22 ; B 113 -15 584 604 ;
+U -1 ; WX 673 ; N six ; G 23 ; B 184 -15 631 618 ;
+U -1 ; WX 648 ; N seven ; G 24 ; B 215 -1 606 604 ;
+U -1 ; WX 618 ; N eight ; G 25 ; B 143 -15 576 618 ;
+U -1 ; WX 631 ; N nine ; G 26 ; B 142 -15 589 618 ;
+U -1 ; WX 600 ; N colon ; G 27 ; B 235 -15 450 417 ;
+U -1 ; WX 600 ; N semicolon ; G 28 ; B 114 -145 426 417 ;
+U -1 ; WX 669 ; N less ; G 29 ; B 131 44 627 518 ;
+U -1 ; WX 667 ; N equal ; G 30 ; B 95 190 625 375 ;
+U -1 ; WX 630 ; N greater ; G 31 ; B 92 44 588 518 ;
+U -1 ; WX 623 ; N question ; G 32 ; B 231 -15 581 577 ;
+U -1 ; WX 603 ; N at ; G 33 ; B 139 -62 561 624 ;
+U -1 ; WX 638 ; N A ; G 34 ; B 13 0 596 563 ;
+U -1 ; WX 633 ; N B ; G 35 ; B 47 0 591 563 ;
+U -1 ; WX 677 ; N C ; G 36 ; B 110 -16 635 576 ;
+U -1 ; WX 634 ; N D ; G 37 ; B 47 0 592 563 ;
+U -1 ; WX 661 ; N E ; G 38 ; B 47 0 619 563 ;
+U -1 ; WX 682 ; N F ; G 39 ; B 47 0 640 563 ;
+U -1 ; WX 678 ; N G ; G 40 ; B 108 -16 636 576 ;
+U -1 ; WX 688 ; N H ; G 41 ; B 57 0 646 563 ;
+U -1 ; WX 645 ; N I ; G 42 ; B 117 0 603 563 ;
+U -1 ; WX 741 ; N J ; G 43 ; B 100 -16 699 563 ;
+U -1 ; WX 704 ; N K ; G 44 ; B 47 0 662 563 ;
+U -1 ; WX 627 ; N L ; G 45 ; B 67 0 585 563 ;
+U -1 ; WX 742 ; N M ; G 46 ; B 15 0 700 563 ;
+U -1 ; WX 720 ; N N ; G 47 ; B 46 0 678 563 ;
+U -1 ; WX 658 ; N O ; G 48 ; B 102 -16 616 576 ;
+U -1 ; WX 629 ; N P ; G 49 ; B 47 0 587 563 ;
+U -1 ; WX 658 ; N Q ; G 50 ; B 102 -115 616 576 ;
+U -1 ; WX 636 ; N R ; G 51 ; B 47 0 594 563 ;
+U -1 ; WX 644 ; N S ; G 52 ; B 96 -17 602 577 ;
+U -1 ; WX 690 ; N T ; G 53 ; B 152 0 648 563 ;
+U -1 ; WX 718 ; N U ; G 54 ; B 136 -16 676 563 ;
+U -1 ; WX 749 ; N V ; G 55 ; B 124 0 707 563 ;
+U -1 ; WX 738 ; N W ; G 56 ; B 122 0 696 563 ;
+U -1 ; WX 704 ; N X ; G 57 ; B 44 0 662 563 ;
+U -1 ; WX 707 ; N Y ; G 58 ; B 153 0 665 563 ;
+U -1 ; WX 632 ; N Z ; G 59 ; B 103 0 590 563 ;
+U -1 ; WX 612 ; N bracketleft ; G 60 ; B 254 -124 570 604 ;
+U -1 ; WX 600 ; N backslash ; G 61 ; B 250 -81 474 668 ;
+U -1 ; WX 600 ; N bracketright ; G 62 ; B 132 -124 448 604 ;
+U -1 ; WX 609 ; N asciicircum ; G 63 ; B 192 354 567 615 ;
+U -1 ; WX 606 ; N underscore ; G 64 ; B -61 -125 564 -75 ;
+U -1 ; WX 600 ; N grave ; G 124 ; B 286 490 429 639 ;
+U -1 ; WX 600 ; N a ; G 66 ; B 93 -16 546 431 ;
+U -1 ; WX 633 ; N b ; G 67 ; B 26 -16 591 604 ;
+U -1 ; WX 638 ; N c ; G 68 ; B 121 -17 596 432 ;
+U -1 ; WX 672 ; N d ; G 69 ; B 102 -16 630 604 ;
+U -1 ; WX 612 ; N e ; G 70 ; B 104 -16 570 431 ;
+U -1 ; WX 705 ; N f ; G 71 ; B 109 0 663 604 ;
+U -1 ; WX 689 ; N g ; G 72 ; B 105 -186 647 431 ;
+U -1 ; WX 600 ; N h ; G 73 ; B 55 0 556 604 ;
+U -1 ; WX 600 ; N i ; G 74 ; B 96 0 513 624 ;
+U -1 ; WX 600 ; N j ; G 75 ; B 112 -186 547 624 ;
+U -1 ; WX 620 ; N k ; G 76 ; B 67 0 578 604 ;
+U -1 ; WX 600 ; N l ; G 77 ; B 96 0 513 604 ;
+U -1 ; WX 645 ; N m ; G 78 ; B 15 0 603 431 ;
+U -1 ; WX 600 ; N n ; G 79 ; B 57 0 546 431 ;
+U -1 ; WX 619 ; N o ; G 80 ; B 111 -16 577 431 ;
+U -1 ; WX 635 ; N p ; G 81 ; B -13 -186 593 431 ;
+U -1 ; WX 710 ; N q ; G 82 ; B 105 -186 668 431 ;
+U -1 ; WX 661 ; N r ; G 83 ; B 88 0 619 427 ;
+U -1 ; WX 600 ; N s ; G 84 ; B 108 -17 558 431 ;
+U -1 ; WX 600 ; N t ; G 85 ; B 127 -16 518 563 ;
+U -1 ; WX 611 ; N u ; G 86 ; B 127 -16 569 417 ;
+U -1 ; WX 697 ; N v ; G 87 ; B 114 0 655 417 ;
+U -1 ; WX 697 ; N w ; G 88 ; B 114 0 655 417 ;
+U -1 ; WX 653 ; N x ; G 89 ; B 55 0 611 417 ;
+U -1 ; WX 676 ; N y ; G 90 ; B 22 -186 634 417 ;
+U -1 ; WX 605 ; N z ; G 91 ; B 115 0 563 417 ;
+U -1 ; WX 600 ; N braceleft ; G 92 ; B 248 -124 528 604 ;
+U -1 ; WX 600 ; N bar ; G 93 ; B 257 -124 444 604 ;
+U -1 ; WX 600 ; N braceright ; G 94 ; B 175 -124 455 604 ;
+U -1 ; WX 617 ; N asciitilde ; G 95 ; B 145 212 575 348 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 676 ; N Euro ; G 289 ; B 60 -16 634 576 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N quotesinglbase ; G 117 ; B 110 -145 371 145 ;
+U -1 ; WX 685 ; N florin ; G 101 ; B 74 -93 643 618 ;
+U -1 ; WX 600 ; N quotedblbase ; G 118 ; B 73 -116 538 145 ;
+U -1 ; WX 600 ; N ellipsis ; G 121 ; B 57 -15 557 84 ;
+U -1 ; WX 603 ; N dagger ; G 112 ; B 208 -63 561 604 ;
+U -1 ; WX 603 ; N daggerdbl ; G 113 ; B 154 -62 561 604 ;
+U -1 ; WX 600 ; N circumflex ; G 126 ; B 263 490 554 639 ;
+U -1 ; WX 640 ; N perthousand ; G 122 ; B 91 -9 598 614 ;
+U -1 ; WX 660 ; N Scaron ; G 189 ; B 96 -17 618 789 ;
+U -1 ; WX 600 ; N guilsinglleft ; G 107 ; B 108 0 397 417 ;
+U -1 ; WX 732 ; N OE ; G 142 ; B 62 0 690 563 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 646 ; N Zcaron ; G 200 ; B 103 0 604 789 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N quoteleft ; G 65 ; B 388 343 544 604 ;
+U -1 ; WX 600 ; N quoteright ; G 8 ; B 207 314 468 604 ;
+U -1 ; WX 628 ; N quotedblleft ; G 105 ; B 221 343 586 604 ;
+U -1 ; WX 677 ; N quotedblright ; G 119 ; B 170 343 635 604 ;
+U -1 ; WX 600 ; N bullet ; G 116 ; B 253 141 449 337 ;
+U -1 ; WX 630 ; N endash ; G 111 ; B 131 261 588 302 ;
+U -1 ; WX 701 ; N emdash ; G 137 ; B 60 261 659 302 ;
+U -1 ; WX 621 ; N tilde ; G 127 ; B 258 516 579 605 ;
+U -1 ; WX 752 ; N trademark ; G 297 ; B 90 243 710 563 ;
+U -1 ; WX 626 ; N scaron ; G 253 ; B 107 -17 584 639 ;
+U -1 ; WX 627 ; N guilsinglright ; G 108 ; B 297 0 585 417 ;
+U -1 ; WX 672 ; N oe ; G 148 ; B 50 -16 630 431 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 618 ; N zcaron ; G 264 ; B 115 0 576 639 ;
+U -1 ; WX 707 ; N Ydieresis ; G 204 ; B 153 0 665 762 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 600 ; N exclamdown ; G 96 ; B 222 -216 439 417 ;
+U -1 ; WX 604 ; N cent ; G 97 ; B 175 -13 563 630 ;
+U -1 ; WX 600 ; N sterling ; G 98 ; B 90 0 541 578 ;
+U -1 ; WX 639 ; N currency ; G 103 ; B 127 95 597 489 ;
+U -1 ; WX 707 ; N yen ; G 100 ; B 161 0 665 563 ;
+U -1 ; WX 600 ; N brokenbar ; G 314 ; B 257 -124 444 604 ;
+U -1 ; WX 666 ; N section ; G 102 ; B 91 -62 624 603 ;
+U -1 ; WX 623 ; N dieresis ; G 131 ; B 258 511 581 611 ;
+U -1 ; WX 705 ; N copyright ; G 303 ; B 57 -15 663 578 ;
+U -1 ; WX 600 ; N ordfeminine ; G 139 ; B 229 279 511 574 ;
+U -1 ; WX 668 ; N guillemotleft ; G 106 ; B 108 0 626 417 ;
+U -1 ; WX 663 ; N logicalnot ; G 311 ; B 160 168 621 438 ;
+U -1 ; WX 600 ; N .notdef ; G 0 ; B 0 0 0 0 ;
+U -1 ; WX 705 ; N registered ; G 304 ; B 57 -15 663 578 ;
+U -1 ; WX 606 ; N macron ; G 128 ; B 273 536 564 576 ;
+U -1 ; WX 600 ; N degree ; G 293 ; B 257 346 553 636 ;
+U -1 ; WX 639 ; N plusminus ; G 298 ; B 76 0 597 529 ;
+U -1 ; WX 600 ; N twosuperior ; G 291 ; B 230 259 514 612 ;
+U -1 ; WX 600 ; N threesuperior ; G 292 ; B 245 251 516 612 ;
+U -1 ; WX 619 ; N acute ; G 125 ; B 388 490 577 639 ;
+U -1 ; WX 611 ; N mu ; G 315 ; B 86 -200 569 417 ;
+U -1 ; WX 690 ; N paragraph ; G 115 ; B 152 -62 648 604 ;
+U -1 ; WX 600 ; N periodcentered ; G 114 ; B 285 217 436 348 ;
+U -1 ; WX 600 ; N cedilla ; G 133 ; B 181 -173 356 0 ;
+U -1 ; WX 600 ; N onesuperior ; G 290 ; B 249 259 469 612 ;
+U -1 ; WX 600 ; N ordmasculine ; G 143 ; B 243 284 543 577 ;
+U -1 ; WX 627 ; N guillemotright ; G 120 ; B 67 0 585 417 ;
+U -1 ; WX 661 ; N onequarter ; G 300 ; B 74 0 619 612 ;
+U -1 ; WX 669 ; N onehalf ; G 299 ; B 82 0 627 612 ;
+U -1 ; WX 661 ; N threequarters ; G 301 ; B 70 0 619 612 ;
+U -1 ; WX 600 ; N questiondown ; G 123 ; B 105 -175 455 417 ;
+U -1 ; WX 638 ; N Agrave ; G 152 ; B 13 0 596 789 ;
+U -1 ; WX 638 ; N Aacute ; G 151 ; B 13 0 596 789 ;
+U -1 ; WX 638 ; N Acircumflex ; G 153 ; B 13 0 596 789 ;
+U -1 ; WX 638 ; N Atilde ; G 155 ; B 13 0 596 755 ;
+U -1 ; WX 638 ; N Adieresis ; G 150 ; B 13 0 596 762 ;
+U -1 ; WX 638 ; N Aring ; G 156 ; B 13 0 596 811 ;
+U -1 ; WX 732 ; N AE ; G 138 ; B 14 0 690 563 ;
+U -1 ; WX 677 ; N Ccedilla ; G 158 ; B 110 -173 635 576 ;
+U -1 ; WX 661 ; N Egrave ; G 164 ; B 47 0 619 789 ;
+U -1 ; WX 661 ; N Eacute ; G 163 ; B 47 0 619 789 ;
+U -1 ; WX 661 ; N Ecircumflex ; G 165 ; B 47 0 619 789 ;
+U -1 ; WX 661 ; N Edieresis ; G 162 ; B 47 0 619 762 ;
+U -1 ; WX 645 ; N Igrave ; G 172 ; B 117 0 603 789 ;
+U -1 ; WX 645 ; N Iacute ; G 171 ; B 117 0 603 789 ;
+U -1 ; WX 645 ; N Icircumflex ; G 173 ; B 117 0 603 789 ;
+U -1 ; WX 653 ; N Idieresis ; G 170 ; B 117 0 611 762 ;
+U -1 ; WX 634 ; N Eth ; G 283 ; B 47 0 592 563 ;
+U -1 ; WX 720 ; N Ntilde ; G 179 ; B 46 0 678 755 ;
+U -1 ; WX 658 ; N Ograve ; G 182 ; B 102 -16 616 789 ;
+U -1 ; WX 658 ; N Oacute ; G 181 ; B 102 -16 616 789 ;
+U -1 ; WX 658 ; N Ocircumflex ; G 183 ; B 102 -16 616 789 ;
+U -1 ; WX 660 ; N Otilde ; G 184 ; B 103 -16 618 755 ;
+U -1 ; WX 658 ; N Odieresis ; G 180 ; B 102 -16 616 762 ;
+U -1 ; WX 619 ; N multiply ; G 295 ; B 143 100 577 464 ;
+U -1 ; WX 727 ; N Oslash ; G 141 ; B 34 -43 685 605 ;
+U -1 ; WX 718 ; N Ugrave ; G 194 ; B 136 -16 676 789 ;
+U -1 ; WX 718 ; N Uacute ; G 193 ; B 136 -16 676 789 ;
+U -1 ; WX 718 ; N Ucircumflex ; G 195 ; B 136 -16 676 789 ;
+U -1 ; WX 718 ; N Udieresis ; G 192 ; B 136 -16 676 762 ;
+U -1 ; WX 707 ; N Yacute ; G 198 ; B 153 0 665 789 ;
+U -1 ; WX 608 ; N Thorn ; G 285 ; B 47 0 566 563 ;
+U -1 ; WX 600 ; N germandbls ; G 149 ; B 47 -16 539 604 ;
+U -1 ; WX 600 ; N agrave ; G 218 ; B 93 -16 546 639 ;
+U -1 ; WX 600 ; N aacute ; G 217 ; B 93 -16 546 639 ;
+U -1 ; WX 600 ; N acircumflex ; G 219 ; B 93 -16 546 639 ;
+U -1 ; WX 612 ; N atilde ; G 221 ; B 93 -16 570 605 ;
+U -1 ; WX 613 ; N adieresis ; G 216 ; B 93 -16 571 611 ;
+U -1 ; WX 600 ; N aring ; G 222 ; B 93 -16 546 661 ;
+U -1 ; WX 672 ; N ae ; G 144 ; B 36 -16 630 431 ;
+U -1 ; WX 638 ; N ccedilla ; G 226 ; B 122 -173 596 431 ;
+U -1 ; WX 612 ; N egrave ; G 230 ; B 104 -16 570 639 ;
+U -1 ; WX 612 ; N eacute ; G 229 ; B 104 -16 570 639 ;
+U -1 ; WX 612 ; N ecircumflex ; G 231 ; B 104 -16 570 639 ;
+U -1 ; WX 628 ; N edieresis ; G 228 ; B 104 -16 586 611 ;
+U -1 ; WX 600 ; N igrave ; G 238 ; B 96 0 513 639 ;
+U -1 ; WX 600 ; N iacute ; G 237 ; B 96 0 535 639 ;
+U -1 ; WX 600 ; N icircumflex ; G 239 ; B 95 0 536 639 ;
+U -1 ; WX 610 ; N idieresis ; G 236 ; B 96 0 568 611 ;
+U -1 ; WX 624 ; N eth ; G 287 ; B 111 -17 582 620 ;
+U -1 ; WX 612 ; N ntilde ; G 244 ; B 57 0 570 605 ;
+U -1 ; WX 619 ; N ograve ; G 247 ; B 111 -16 577 639 ;
+U -1 ; WX 619 ; N oacute ; G 246 ; B 111 -16 577 639 ;
+U -1 ; WX 619 ; N ocircumflex ; G 248 ; B 111 -16 577 639 ;
+U -1 ; WX 628 ; N otilde ; G 249 ; B 111 -16 586 605 ;
+U -1 ; WX 623 ; N odieresis ; G 245 ; B 111 -16 581 611 ;
+U -1 ; WX 630 ; N divide ; G 296 ; B 131 25 588 540 ;
+U -1 ; WX 679 ; N oslash ; G 147 ; B 47 -43 637 458 ;
+U -1 ; WX 611 ; N ugrave ; G 258 ; B 127 -16 569 639 ;
+U -1 ; WX 611 ; N uacute ; G 257 ; B 127 -16 569 639 ;
+U -1 ; WX 611 ; N ucircumflex ; G 259 ; B 127 -16 569 639 ;
+U -1 ; WX 615 ; N udieresis ; G 256 ; B 127 -16 573 611 ;
+U -1 ; WX 676 ; N yacute ; G 262 ; B 22 -186 634 639 ;
+U -1 ; WX 635 ; N thorn ; G 288 ; B -13 -186 593 590 ;
+U -1 ; WX 676 ; N ydieresis ; G 266 ; B 22 -186 634 611 ;
+U -1 ; WX 687 ; N fraction ; G 99 ; B 84 138 645 470 ;
+U -1 ; WX 657 ; N fi ; G 109 ; B 14 0 615 624 ;
+U -1 ; WX 653 ; N fl ; G 110 ; B 14 0 611 604 ;
+U -1 ; WX 616 ; N breve ; G 129 ; B 280 489 574 621 ;
+U -1 ; WX 600 ; N dotaccent ; G 130 ; B 368 511 470 611 ;
+U -1 ; WX 600 ; N ring ; G 132 ; B 326 480 516 661 ;
+U -1 ; WX 618 ; N hungarumlaut ; G 134 ; B 263 490 576 633 ;
+U -1 ; WX 600 ; N ogonek ; G 135 ; B 258 -155 408 0 ;
+U -1 ; WX 619 ; N caron ; G 136 ; B 286 490 577 639 ;
+U -1 ; WX 628 ; N Lslash ; G 140 ; B 66 0 586 563 ;
+U -1 ; WX 600 ; N dotlessi ; G 145 ; B 96 0 513 417 ;
+U -1 ; WX 600 ; N lslash ; G 146 ; B 96 0 524 604 ;
+U -1 ; WX 638 ; N Abreve ; G 154 ; B 13 0 596 777 ;
+U -1 ; WX 638 ; N Aogonek ; G 157 ; B 13 -155 596 563 ;
+U -1 ; WX 677 ; N Cacute ; G 159 ; B 110 -16 635 789 ;
+U -1 ; WX 677 ; N Ccaron ; G 160 ; B 110 -16 635 789 ;
+U -1 ; WX 634 ; N Dcaron ; G 161 ; B 47 0 592 789 ;
+U -1 ; WX 661 ; N Ecaron ; G 166 ; B 47 0 619 789 ;
+U -1 ; WX 661 ; N Edotaccent ; G 167 ; B 47 0 619 762 ;
+U -1 ; WX 661 ; N Eogonek ; G 168 ; B 47 -155 619 563 ;
+U -1 ; WX 698 ; N Gbreve ; G 169 ; B 108 -16 656 777 ;
+U -1 ; WX 645 ; N Idotaccent ; G 174 ; B 117 0 603 762 ;
+U -1 ; WX 627 ; N Lacute ; G 175 ; B 67 0 585 789 ;
+U -1 ; WX 680 ; N Lcaron ; G 176 ; B 67 0 638 576 ;
+U -1 ; WX 720 ; N Nacute ; G 177 ; B 46 0 678 789 ;
+U -1 ; WX 720 ; N Ncaron ; G 178 ; B 46 0 678 789 ;
+U -1 ; WX 714 ; N Ohungarumlaut ; G 185 ; B 102 -16 672 787 ;
+U -1 ; WX 636 ; N Racute ; G 186 ; B 47 0 594 789 ;
+U -1 ; WX 636 ; N Rcaron ; G 187 ; B 47 0 594 789 ;
+U -1 ; WX 644 ; N Sacute ; G 188 ; B 96 -17 602 789 ;
+U -1 ; WX 644 ; N Scedilla ; G 190 ; B 96 -179 602 577 ;
+U -1 ; WX 690 ; N Tcaron ; G 191 ; B 152 0 648 789 ;
+U -1 ; WX 718 ; N Uring ; G 196 ; B 136 -16 676 807 ;
+U -1 ; WX 718 ; N Uhungarumlaut ; G 197 ; B 136 -16 676 787 ;
+U -1 ; WX 632 ; N Zacute ; G 199 ; B 103 0 590 789 ;
+U -1 ; WX 632 ; N Zdotaccent ; G 201 ; B 103 0 590 762 ;
+U -1 ; WX 638 ; N Amacron ; G 202 ; B 13 0 596 723 ;
+U -1 ; WX 690 ; N Tcommaaccent ; G 203 ; B 152 -237 648 563 ;
+U -1 ; WX 661 ; N Emacron ; G 205 ; B 47 0 619 723 ;
+U -1 ; WX 645 ; N Imacron ; G 206 ; B 117 0 603 723 ;
+U -1 ; WX 645 ; N Iogonek ; G 207 ; B 117 -155 603 563 ;
+U -1 ; WX 704 ; N Kcommaaccent ; G 208 ; B 47 -237 662 563 ;
+U -1 ; WX 627 ; N Lcommaaccent ; G 209 ; B 67 -237 585 563 ;
+U -1 ; WX 720 ; N Ncommaaccent ; G 210 ; B 46 -237 678 563 ;
+U -1 ; WX 658 ; N Omacron ; G 211 ; B 102 -16 616 723 ;
+U -1 ; WX 636 ; N Rcommaaccent ; G 212 ; B 47 -237 594 563 ;
+U -1 ; WX 678 ; N Gcommaaccent ; G 213 ; B 108 -237 636 576 ;
+U -1 ; WX 718 ; N Umacron ; G 214 ; B 136 -16 676 723 ;
+U -1 ; WX 718 ; N Uogonek ; G 215 ; B 136 -155 676 563 ;
+U -1 ; WX 616 ; N abreve ; G 220 ; B 93 -16 574 621 ;
+U -1 ; WX 600 ; N aogonek ; G 223 ; B 93 -155 546 431 ;
+U -1 ; WX 638 ; N cacute ; G 224 ; B 121 -17 596 639 ;
+U -1 ; WX 638 ; N ccaron ; G 225 ; B 121 -17 596 639 ;
+U -1 ; WX 816 ; N dcaron ; G 227 ; B 102 -16 774 618 ;
+U -1 ; WX 619 ; N ecaron ; G 232 ; B 104 -16 577 639 ;
+U -1 ; WX 612 ; N edotaccent ; G 233 ; B 104 -16 570 611 ;
+U -1 ; WX 612 ; N eogonek ; G 234 ; B 104 -155 570 431 ;
+U -1 ; WX 689 ; N gbreve ; G 235 ; B 105 -186 647 621 ;
+U -1 ; WX 614 ; N lacute ; G 240 ; B 96 0 572 789 ;
+U -1 ; WX 635 ; N lcaron ; G 241 ; B 96 0 593 618 ;
+U -1 ; WX 619 ; N nacute ; G 242 ; B 57 0 577 639 ;
+U -1 ; WX 619 ; N ncaron ; G 243 ; B 57 0 577 639 ;
+U -1 ; WX 658 ; N ohungarumlaut ; G 250 ; B 111 -16 616 633 ;
+U -1 ; WX 661 ; N racute ; G 251 ; B 88 0 619 639 ;
+U -1 ; WX 619 ; N sacute ; G 252 ; B 108 -17 577 639 ;
+U -1 ; WX 600 ; N scommaaccent ; G 254 ; B 108 -237 558 431 ;
+U -1 ; WX 635 ; N tcaron ; G 255 ; B 127 -16 593 618 ;
+U -1 ; WX 611 ; N uring ; G 260 ; B 127 -16 569 661 ;
+U -1 ; WX 618 ; N uhungarumlaut ; G 261 ; B 127 -16 576 633 ;
+U -1 ; WX 619 ; N zacute ; G 263 ; B 115 0 577 639 ;
+U -1 ; WX 605 ; N zdotaccent ; G 265 ; B 115 0 563 611 ;
+U -1 ; WX 600 ; N tcommaaccent ; G 267 ; B 127 -237 518 563 ;
+U -1 ; WX 606 ; N amacron ; G 268 ; B 93 -16 564 576 ;
+U -1 ; WX 612 ; N emacron ; G 269 ; B 104 -16 570 576 ;
+U -1 ; WX 606 ; N imacron ; G 270 ; B 96 0 564 576 ;
+U -1 ; WX 620 ; N kcommaaccent ; G 271 ; B 67 -237 578 604 ;
+U -1 ; WX 600 ; N lcommaaccent ; G 272 ; B 96 -237 513 604 ;
+U -1 ; WX 600 ; N ncommaaccent ; G 273 ; B 57 -237 546 431 ;
+U -1 ; WX 619 ; N omacron ; G 274 ; B 111 -16 577 576 ;
+U -1 ; WX 661 ; N rcommaaccent ; G 275 ; B 88 -237 619 427 ;
+U -1 ; WX 611 ; N umacron ; G 276 ; B 127 -16 569 576 ;
+U -1 ; WX 611 ; N uogonek ; G 277 ; B 127 -155 569 417 ;
+U -1 ; WX 661 ; N rcaron ; G 278 ; B 88 0 619 639 ;
+U -1 ; WX 600 ; N scedilla ; G 279 ; B 108 -173 558 431 ;
+U -1 ; WX 689 ; N gcommaaccent ; G 280 ; B 105 -186 647 668 ;
+U -1 ; WX 600 ; N iogonek ; G 281 ; B 96 -155 513 624 ;
+U -1 ; WX 644 ; N Scommaaccent ; G 282 ; B 96 -237 602 577 ;
+U -1 ; WX 634 ; N Dcroat ; G 284 ; B 47 0 592 563 ;
+U -1 ; WX 732 ; N dcroat ; G 286 ; B 102 -16 690 604 ;
+U -1 ; WX 630 ; N minus ; G 294 ; B 131 261 588 302 ;
+U -1 ; WX 600 ; N commaaccent ; G 302 ; B 159 -237 322 -60 ;
+U -1 ; WX 613 ; N lozenge ; G 305 ; B 149 -11 571 575 ;
+U -1 ; WX 600 ; N Delta ; G 306 ; B 43 0 557 563 ;
+U -1 ; WX 667 ; N notequal ; G 307 ; B 96 94 625 464 ;
+U -1 ; WX 815 ; N radical ; G 308 ; B 88 0 773 699 ;
+U -1 ; WX 677 ; N lessequal ; G 309 ; B 56 0 635 535 ;
+U -1 ; WX 642 ; N greaterequal ; G 310 ; B 71 0 600 535 ;
+U -1 ; WX 657 ; N summation ; G 312 ; B 90 -127 616 563 ;
+U -1 ; WX 622 ; N partialdiff ; G 313 ; B 111 -16 580 581 ;
+U -1 ; WX 638 ; N afii10017 ; G 316 ; B 13 0 596 563 ;
+U -1 ; WX 638 ; N afii10018 ; G 317 ; B 1 0 596 563 ;
+U -1 ; WX 633 ; N afii10019 ; G 318 ; B 47 0 591 563 ;
+U -1 ; WX 638 ; N afii10020 ; G 319 ; B 4 0 596 563 ;
+U -1 ; WX 678 ; N afii10021 ; G 320 ; B 21 -146 638 563 ;
+U -1 ; WX 661 ; N afii10022 ; G 321 ; B 47 0 619 563 ;
+U -1 ; WX 661 ; N afii10023 ; G 322 ; B 47 0 619 702 ;
+U -1 ; WX 724 ; N afii10024 ; G 323 ; B 13 0 684 563 ;
+U -1 ; WX 598 ; N afii10025 ; G 324 ; B 56 -16 557 576 ;
+U -1 ; WX 636 ; N afii10026 ; G 325 ; B 2 0 597 563 ;
+U -1 ; WX 636 ; N afii10027 ; G 326 ; B 2 0 597 735 ;
+U -1 ; WX 644 ; N afii10028 ; G 327 ; B -4 0 604 563 ;
+U -1 ; WX 625 ; N afii10029 ; G 328 ; B 8 0 585 563 ;
+U -1 ; WX 742 ; N afii10030 ; G 329 ; B 15 0 700 563 ;
+U -1 ; WX 688 ; N afii10031 ; G 330 ; B 57 0 646 563 ;
+U -1 ; WX 659 ; N afii10032 ; G 331 ; B 102 -16 617 576 ;
+U -1 ; WX 636 ; N afii10033 ; G 332 ; B 2 0 597 563 ;
+U -1 ; WX 629 ; N afii10034 ; G 333 ; B 47 0 587 563 ;
+U -1 ; WX 677 ; N afii10035 ; G 334 ; B 110 -16 635 576 ;
+U -1 ; WX 690 ; N afii10036 ; G 335 ; B 152 0 648 563 ;
+U -1 ; WX 627 ; N afii10037 ; G 336 ; B 13 0 587 563 ;
+U -1 ; WX 638 ; N afii10038 ; G 337 ; B -10 0 613 563 ;
+U -1 ; WX 703 ; N afii10039 ; G 338 ; B 44 0 661 563 ;
+U -1 ; WX 673 ; N afii10040 ; G 339 ; B 39 -146 633 563 ;
+U -1 ; WX 598 ; N afii10041 ; G 340 ; B 69 0 519 563 ;
+U -1 ; WX 718 ; N afii10042 ; G 341 ; B 2 0 678 563 ;
+U -1 ; WX 718 ; N afii10043 ; G 342 ; B 2 -146 678 563 ;
+U -1 ; WX 648 ; N afii10044 ; G 343 ; B 58 0 623 563 ;
+U -1 ; WX 640 ; N afii10045 ; G 344 ; B 2 0 600 563 ;
+U -1 ; WX 598 ; N afii10046 ; G 345 ; B 52 0 562 563 ;
+U -1 ; WX 603 ; N afii10047 ; G 346 ; B 36 -16 569 576 ;
+U -1 ; WX 718 ; N afii10048 ; G 347 ; B -2 -16 701 576 ;
+U -1 ; WX 718 ; N afii10049 ; G 348 ; B 16 0 678 563 ;
+U -1 ; WX 598 ; N afii10065 ; G 349 ; B 93 -16 546 431 ;
+U -1 ; WX 598 ; N afii10066 ; G 350 ; B 33 -17 549 626 ;
+U -1 ; WX 598 ; N afii10067 ; G 351 ; B 89 0 519 417 ;
+U -1 ; WX 598 ; N afii10068 ; G 352 ; B 69 0 528 417 ;
+U -1 ; WX 637 ; N afii10069 ; G 353 ; B 30 -118 597 417 ;
+U -1 ; WX 612 ; N afii10070 ; G 354 ; B 104 -16 570 431 ;
+U -1 ; WX 612 ; N afii10071 ; G 355 ; B 104 -16 570 570 ;
+U -1 ; WX 640 ; N afii10072 ; G 356 ; B 1 0 601 417 ;
+U -1 ; WX 598 ; N afii10073 ; G 357 ; B 80 -16 529 431 ;
+U -1 ; WX 621 ; N afii10074 ; G 358 ; B 19 0 581 417 ;
+U -1 ; WX 621 ; N afii10075 ; G 359 ; B 19 0 581 589 ;
+U -1 ; WX 598 ; N afii10076 ; G 360 ; B 42 0 558 417 ;
+U -1 ; WX 598 ; N afii10077 ; G 361 ; B 45 -1 551 417 ;
+U -1 ; WX 627 ; N afii10078 ; G 362 ; B 13 0 587 417 ;
+U -1 ; WX 606 ; N afii10079 ; G 363 ; B 34 0 566 417 ;
+U -1 ; WX 618 ; N afii10080 ; G 364 ; B 110 -16 576 431 ;
+U -1 ; WX 606 ; N afii10081 ; G 365 ; B 34 0 566 417 ;
+U -1 ; WX 635 ; N afii10082 ; G 366 ; B -13 -186 593 431 ;
+U -1 ; WX 638 ; N afii10083 ; G 367 ; B 121 -17 596 432 ;
+U -1 ; WX 598 ; N afii10084 ; G 368 ; B 106 -1 492 417 ;
+U -1 ; WX 675 ; N afii10085 ; G 369 ; B 22 -186 633 417 ;
+U -1 ; WX 614 ; N afii10086 ; G 370 ; B 5 -186 593 573 ;
+U -1 ; WX 652 ; N afii10087 ; G 371 ; B 55 0 610 417 ;
+U -1 ; WX 606 ; N afii10088 ; G 372 ; B 34 -118 566 417 ;
+U -1 ; WX 598 ; N afii10089 ; G 373 ; B 81 0 519 417 ;
+U -1 ; WX 628 ; N afii10090 ; G 374 ; B 17 0 589 417 ;
+U -1 ; WX 638 ; N afii10091 ; G 375 ; B 1 -118 598 417 ;
+U -1 ; WX 598 ; N afii10092 ; G 376 ; B 74 0 534 417 ;
+U -1 ; WX 638 ; N afii10093 ; G 377 ; B 4 0 598 417 ;
+U -1 ; WX 598 ; N afii10094 ; G 378 ; B 95 0 515 417 ;
+U -1 ; WX 598 ; N afii10095 ; G 379 ; B 57 -16 563 431 ;
+U -1 ; WX 635 ; N afii10096 ; G 380 ; B 10 -16 593 431 ;
+U -1 ; WX 598 ; N afii10097 ; G 381 ; B 45 0 555 417 ;
+U -1 ; WX 661 ; N uni0400 ; G 382 ; B 47 0 619 753 ;
+U -1 ; WX 605 ; N afii10051 ; G 383 ; B 12 -98 563 563 ;
+U -1 ; WX 638 ; N afii10052 ; G 384 ; B 4 0 596 752 ;
+U -1 ; WX 603 ; N afii10053 ; G 385 ; B 15 -16 566 576 ;
+U -1 ; WX 644 ; N afii10054 ; G 386 ; B 96 -17 602 576 ;
+U -1 ; WX 645 ; N afii10055 ; G 387 ; B 117 0 603 563 ;
+U -1 ; WX 645 ; N afii10056 ; G 388 ; B 117 0 603 702 ;
+U -1 ; WX 741 ; N afii10057 ; G 389 ; B 100 -16 699 563 ;
+U -1 ; WX 657 ; N afii10058 ; G 390 ; B -93 0 631 563 ;
+U -1 ; WX 667 ; N afii10059 ; G 391 ; B -100 0 625 563 ;
+U -1 ; WX 606 ; N afii10060 ; G 392 ; B 12 0 566 563 ;
+U -1 ; WX 644 ; N afii10061 ; G 393 ; B -4 0 604 752 ;
+U -1 ; WX 636 ; N uni040D ; G 394 ; B 2 0 597 752 ;
+U -1 ; WX 627 ; N afii10062 ; G 395 ; B 13 0 587 735 ;
+U -1 ; WX 636 ; N afii10145 ; G 396 ; B 5 -146 594 563 ;
+U -1 ; WX 612 ; N uni0450 ; G 397 ; B 104 -16 570 621 ;
+U -1 ; WX 598 ; N afii10099 ; G 398 ; B 55 -76 533 604 ;
+U -1 ; WX 598 ; N afii10100 ; G 399 ; B 69 0 528 606 ;
+U -1 ; WX 598 ; N afii10101 ; G 400 ; B 42 -16 539 431 ;
+U -1 ; WX 600 ; N afii10102 ; G 401 ; B 108 -17 558 431 ;
+U -1 ; WX 598 ; N afii10103 ; G 402 ; B 96 0 513 624 ;
+U -1 ; WX 612 ; N afii10104 ; G 403 ; B 96 0 570 557 ;
+U -1 ; WX 598 ; N afii10105 ; G 404 ; B 112 -186 547 624 ;
+U -1 ; WX 628 ; N afii10106 ; G 405 ; B 14 0 586 417 ;
+U -1 ; WX 633 ; N afii10107 ; G 406 ; B 12 0 591 417 ;
+U -1 ; WX 598 ; N afii10108 ; G 407 ; B 55 0 556 604 ;
+U -1 ; WX 598 ; N afii10109 ; G 408 ; B 42 0 558 606 ;
+U -1 ; WX 621 ; N uni045D ; G 409 ; B 19 0 581 607 ;
+U -1 ; WX 675 ; N afii10110 ; G 410 ; B 22 -186 633 589 ;
+U -1 ; WX 621 ; N afii10193 ; G 411 ; B 19 -118 581 417 ;
+U -1 ; WX 598 ; N uni048C ; G 412 ; B 52 0 562 563 ;
+U -1 ; WX 598 ; N uni048D ; G 413 ; B 95 0 515 417 ;
+U -1 ; WX 629 ; N uni048E ; G 414 ; B 47 0 587 563 ;
+U -1 ; WX 635 ; N uni048F ; G 415 ; B -13 -186 593 431 ;
+U -1 ; WX 648 ; N afii10050 ; G 416 ; B -10 0 610 688 ;
+U -1 ; WX 598 ; N afii10098 ; G 417 ; B 59 0 541 535 ;
+U -1 ; WX 638 ; N uni0492 ; G 418 ; B 4 0 596 563 ;
+U -1 ; WX 598 ; N uni0493 ; G 419 ; B 69 0 528 417 ;
+U -1 ; WX 638 ; N uni0494 ; G 420 ; B 4 0 596 563 ;
+U -1 ; WX 598 ; N uni0495 ; G 421 ; B 69 0 528 417 ;
+U -1 ; WX 724 ; N uni0496 ; G 422 ; B 13 -146 684 563 ;
+U -1 ; WX 640 ; N uni0497 ; G 423 ; B 1 -118 601 417 ;
+U -1 ; WX 598 ; N uni0498 ; G 424 ; B 56 -16 557 576 ;
+U -1 ; WX 598 ; N uni0499 ; G 425 ; B 80 -16 529 431 ;
+U -1 ; WX 644 ; N uni049A ; G 426 ; B -4 -146 604 563 ;
+U -1 ; WX 600 ; N uni049B ; G 427 ; B 42 -118 558 417 ;
+U -1 ; WX 644 ; N uni049C ; G 428 ; B -4 0 604 563 ;
+U -1 ; WX 598 ; N uni049D ; G 429 ; B 42 0 558 417 ;
+U -1 ; WX 644 ; N uni049E ; G 430 ; B -4 0 604 563 ;
+U -1 ; WX 598 ; N uni049F ; G 431 ; B 42 0 558 417 ;
+U -1 ; WX 644 ; N uni04A0 ; G 432 ; B -4 0 604 563 ;
+U -1 ; WX 598 ; N uni04A1 ; G 433 ; B 42 0 558 417 ;
+U -1 ; WX 688 ; N uni04A2 ; G 434 ; B 57 -146 646 563 ;
+U -1 ; WX 606 ; N uni04A3 ; G 435 ; B 34 -118 566 417 ;
+U -1 ; WX 688 ; N uni04A4 ; G 436 ; B 57 0 646 563 ;
+U -1 ; WX 606 ; N uni04A5 ; G 437 ; B 34 0 566 417 ;
+U -1 ; WX 636 ; N uni04A6 ; G 438 ; B 2 0 597 563 ;
+U -1 ; WX 606 ; N uni04A7 ; G 439 ; B 34 0 566 417 ;
+U -1 ; WX 677 ; N uni04A8 ; G 440 ; B 110 -16 635 576 ;
+U -1 ; WX 638 ; N uni04A9 ; G 441 ; B 121 -17 596 432 ;
+U -1 ; WX 677 ; N uni04AA ; G 442 ; B 110 -16 635 576 ;
+U -1 ; WX 638 ; N uni04AB ; G 443 ; B 121 -17 596 432 ;
+U -1 ; WX 690 ; N uni04AC ; G 444 ; B 152 -146 648 563 ;
+U -1 ; WX 600 ; N uni04AD ; G 445 ; B 106 -118 492 417 ;
+U -1 ; WX 707 ; N uni04AE ; G 446 ; B 153 0 665 563 ;
+U -1 ; WX 677 ; N uni04AF ; G 447 ; B 123 -146 635 417 ;
+U -1 ; WX 707 ; N uni04B0 ; G 448 ; B 153 0 665 563 ;
+U -1 ; WX 679 ; N uni04B1 ; G 449 ; B 125 -146 637 417 ;
+U -1 ; WX 703 ; N uni04B2 ; G 450 ; B 44 -146 661 563 ;
+U -1 ; WX 652 ; N uni04B3 ; G 451 ; B 55 -118 610 417 ;
+U -1 ; WX 673 ; N uni04B4 ; G 452 ; B 39 -146 633 563 ;
+U -1 ; WX 606 ; N uni04B5 ; G 453 ; B 34 -118 566 417 ;
+U -1 ; WX 600 ; N uni04B6 ; G 454 ; B 69 -146 519 563 ;
+U -1 ; WX 600 ; N uni04B7 ; G 455 ; B 81 -118 519 417 ;
+U -1 ; WX 598 ; N uni04B8 ; G 456 ; B 70 0 519 563 ;
+U -1 ; WX 598 ; N uni04B9 ; G 457 ; B 81 0 519 417 ;
+U -1 ; WX 598 ; N uni04BA ; G 458 ; B 80 0 530 563 ;
+U -1 ; WX 598 ; N uni04BB ; G 459 ; B 81 0 519 417 ;
+U -1 ; WX 677 ; N uni04BC ; G 460 ; B 110 -16 635 576 ;
+U -1 ; WX 638 ; N uni04BD ; G 461 ; B 121 -17 596 432 ;
+U -1 ; WX 677 ; N uni04BE ; G 462 ; B 110 -16 635 576 ;
+U -1 ; WX 638 ; N uni04BF ; G 463 ; B 121 -17 596 432 ;
+U -1 ; WX 645 ; N uni04C0 ; G 464 ; B 117 0 603 563 ;
+U -1 ; WX 740 ; N uni04C1 ; G 465 ; B -36 0 700 735 ;
+U -1 ; WX 726 ; N uni04C2 ; G 466 ; B -86 0 686 589 ;
+U -1 ; WX 644 ; N uni04C3 ; G 467 ; B -4 0 604 563 ;
+U -1 ; WX 598 ; N uni04C4 ; G 468 ; B 42 0 558 417 ;
+U -1 ; WX 688 ; N uni04C7 ; G 469 ; B 57 0 646 563 ;
+U -1 ; WX 606 ; N uni04C8 ; G 470 ; B 34 0 566 417 ;
+U -1 ; WX 598 ; N uni04CB ; G 471 ; B 69 0 519 563 ;
+U -1 ; WX 598 ; N uni04CC ; G 472 ; B 81 0 519 417 ;
+U -1 ; WX 640 ; N uni04D0 ; G 473 ; B 13 0 598 735 ;
+U -1 ; WX 618 ; N uni04D1 ; G 474 ; B 93 -16 576 603 ;
+U -1 ; WX 642 ; N uni04D2 ; G 475 ; B 13 0 600 702 ;
+U -1 ; WX 622 ; N uni04D3 ; G 476 ; B 93 -16 580 570 ;
+U -1 ; WX 733 ; N uni04D4 ; G 477 ; B 15 0 691 563 ;
+U -1 ; WX 672 ; N uni04D5 ; G 478 ; B 36 -16 630 431 ;
+U -1 ; WX 661 ; N uni04D6 ; G 479 ; B 47 0 619 735 ;
+U -1 ; WX 612 ; N uni04D7 ; G 480 ; B 104 -16 570 603 ;
+U -1 ; WX 677 ; N uni04D8 ; G 481 ; B 110 -16 635 576 ;
+U -1 ; WX 638 ; N afii10846 ; G 482 ; B 121 -17 596 432 ;
+U -1 ; WX 677 ; N uni04DA ; G 483 ; B 110 -16 635 721 ;
+U -1 ; WX 638 ; N uni04DB ; G 484 ; B 121 -17 596 557 ;
+U -1 ; WX 724 ; N uni04DC ; G 485 ; B 13 0 684 702 ;
+U -1 ; WX 640 ; N uni04DD ; G 486 ; B 1 0 601 557 ;
+U -1 ; WX 605 ; N uni04DE ; G 487 ; B 56 -16 563 702 ;
+U -1 ; WX 598 ; N uni04DF ; G 488 ; B 80 -16 545 557 ;
+U -1 ; WX 598 ; N uni04E0 ; G 489 ; B 56 -16 557 576 ;
+U -1 ; WX 598 ; N uni04E1 ; G 490 ; B 80 -16 529 431 ;
+U -1 ; WX 636 ; N uni04E2 ; G 491 ; B 2 0 597 643 ;
+U -1 ; WX 621 ; N uni04E3 ; G 492 ; B 19 0 581 497 ;
+U -1 ; WX 636 ; N uni04E4 ; G 493 ; B 2 0 597 702 ;
+U -1 ; WX 621 ; N uni04E5 ; G 494 ; B 19 0 581 557 ;
+U -1 ; WX 659 ; N uni04E6 ; G 495 ; B 102 -16 617 702 ;
+U -1 ; WX 618 ; N uni04E7 ; G 496 ; B 110 -16 576 557 ;
+U -1 ; WX 599 ; N uni04E8 ; G 497 ; B 16 -16 584 576 ;
+U -1 ; WX 618 ; N uni04E9 ; G 498 ; B 110 -16 576 431 ;
+U -1 ; WX 599 ; N uni04EA ; G 499 ; B 16 -16 584 702 ;
+U -1 ; WX 618 ; N uni04EB ; G 500 ; B 110 -16 576 557 ;
+U -1 ; WX 603 ; N uni04EC ; G 501 ; B 36 -16 569 702 ;
+U -1 ; WX 598 ; N uni04ED ; G 502 ; B 57 -16 563 557 ;
+U -1 ; WX 627 ; N uni04EE ; G 503 ; B 13 0 587 643 ;
+U -1 ; WX 675 ; N uni04EF ; G 504 ; B 22 -186 633 497 ;
+U -1 ; WX 627 ; N uni04F0 ; G 505 ; B 13 0 587 702 ;
+U -1 ; WX 675 ; N uni04F1 ; G 506 ; B 22 -186 633 557 ;
+U -1 ; WX 627 ; N uni04F2 ; G 507 ; B 13 0 587 746 ;
+U -1 ; WX 675 ; N uni04F3 ; G 508 ; B 22 -186 633 600 ;
+U -1 ; WX 598 ; N uni04F4 ; G 509 ; B 69 0 519 702 ;
+U -1 ; WX 598 ; N uni04F5 ; G 510 ; B 81 0 519 557 ;
+U -1 ; WX 640 ; N uni04F8 ; G 511 ; B 2 0 600 702 ;
+U -1 ; WX 638 ; N uni04F9 ; G 512 ; B 4 0 598 557 ;
+U -1 ; WX 598 ; N uniF6C4 ; G 513 ; B 69 0 528 417 ;
+U -1 ; WX 600 ; N uniF6C5 ; G 514 ; B 35 -17 550 626 ;
+U -1 ; WX 637 ; N uniF6C6 ; G 515 ; B 30 -118 597 417 ;
+U -1 ; WX 606 ; N uniF6C7 ; G 516 ; B 34 0 566 417 ;
+U -1 ; WX 598 ; N uniF6C8 ; G 517 ; B 106 -1 492 417 ;
+U -1 ; WX 677 ; N Ccircumflex ; G 518 ; B 110 -16 635 753 ;
+U -1 ; WX 638 ; N ccircumflex ; G 519 ; B 121 -17 596 607 ;
+U -1 ; WX 677 ; N Cdotaccent ; G 520 ; B 110 -16 635 702 ;
+U -1 ; WX 638 ; N cdotaccent ; G 521 ; B 121 -17 596 557 ;
+U -1 ; WX 661 ; N Ebreve ; G 522 ; B 47 0 619 735 ;
+U -1 ; WX 612 ; N ebreve ; G 523 ; B 104 -16 570 589 ;
+U -1 ; WX 678 ; N Gcircumflex ; G 524 ; B 108 -16 636 753 ;
+U -1 ; WX 689 ; N gcircumflex ; G 525 ; B 106 -186 647 607 ;
+U -1 ; WX 678 ; N Gdotaccent ; G 526 ; B 108 -16 636 702 ;
+U -1 ; WX 689 ; N gdotaccent ; G 527 ; B 106 -186 647 557 ;
+U -1 ; WX 688 ; N Hcircumflex ; G 528 ; B 57 0 646 753 ;
+U -1 ; WX 625 ; N hcircumflex ; G 529 ; B 55 0 583 794 ;
+U -1 ; WX 688 ; N Hbar ; G 530 ; B 57 0 646 563 ;
+U -1 ; WX 598 ; N hbar ; G 531 ; B 55 0 556 604 ;
+U -1 ; WX 645 ; N Itilde ; G 532 ; B 117 0 603 693 ;
+U -1 ; WX 609 ; N itilde ; G 533 ; B 96 0 567 547 ;
+U -1 ; WX 645 ; N Ibreve ; G 534 ; B 117 0 603 735 ;
+U -1 ; WX 609 ; N ibreve ; G 535 ; B 96 0 567 589 ;
+U -1 ; WX 714 ; N IJ ; G 536 ; B 27 -16 672 563 ;
+U -1 ; WX 689 ; N ij ; G 537 ; B 34 -186 647 624 ;
+U -1 ; WX 750 ; N Jcircumflex ; G 538 ; B 100 -16 708 753 ;
+U -1 ; WX 598 ; N jcircumflex ; G 539 ; B 112 -186 553 640 ;
+U -1 ; WX 598 ; N kgreenlandic ; G 540 ; B 42 0 558 417 ;
+U -1 ; WX 627 ; N Ldot ; G 541 ; B 67 0 585 563 ;
+U -1 ; WX 598 ; N ldot ; G 542 ; B 47 0 553 604 ;
+U -1 ; WX 598 ; N napostrophe ; G 543 ; B 57 0 546 431 ;
+U -1 ; WX 720 ; N Eng ; G 544 ; B 46 0 678 563 ;
+U -1 ; WX 598 ; N eng ; G 545 ; B 57 0 546 431 ;
+U -1 ; WX 659 ; N Obreve ; G 546 ; B 102 -16 617 735 ;
+U -1 ; WX 618 ; N obreve ; G 547 ; B 110 -16 576 589 ;
+U -1 ; WX 644 ; N Scircumflex ; G 548 ; B 96 -17 602 753 ;
+U -1 ; WX 600 ; N scircumflex ; G 549 ; B 108 -17 558 607 ;
+U -1 ; WX 690 ; N Tbar ; G 550 ; B 152 0 648 563 ;
+U -1 ; WX 598 ; N tbar ; G 551 ; B 102 -16 518 563 ;
+U -1 ; WX 718 ; N Utilde ; G 552 ; B 136 -16 676 693 ;
+U -1 ; WX 611 ; N utilde ; G 553 ; B 127 -16 569 547 ;
+U -1 ; WX 718 ; N Ubreve ; G 554 ; B 136 -16 676 735 ;
+U -1 ; WX 611 ; N ubreve ; G 555 ; B 127 -16 569 589 ;
+U -1 ; WX 739 ; N Wcircumflex ; G 556 ; B 123 0 697 753 ;
+U -1 ; WX 697 ; N wcircumflex ; G 557 ; B 114 0 655 607 ;
+U -1 ; WX 707 ; N Ycircumflex ; G 558 ; B 153 0 665 753 ;
+U -1 ; WX 675 ; N ycircumflex ; G 559 ; B 22 -186 633 607 ;
+U -1 ; WX 705 ; N longs ; G 560 ; B 109 0 663 604 ;
+U -1 ; WX 700 ; N afii61352 ; G 561 ; B -2 -10 658 573 ;
+U -1 ; WX 641 ; N infinity ; G 562 ; B -16 133 615 468 ;
+U -1 ; WX 707 ; N uni1EF6 ; G 563 ; B 153 0 665 812 ;
+U -1 ; WX 676 ; N uni1EF7 ; G 564 ; B 22 -186 634 674 ;
+U -1 ; WX 707 ; N uni1EF4 ; G 565 ; B 153 -207 665 563 ;
+U -1 ; WX 676 ; N uni1EF5 ; G 566 ; B 22 -207 634 417 ;
+U -1 ; WX 638 ; N uni1EA2 ; G 567 ; B 13 0 596 812 ;
+U -1 ; WX 638 ; N uni1EA0 ; G 568 ; B 13 -207 596 563 ;
+U -1 ; WX 658 ; N uni1EA6 ; G 569 ; B 13 0 616 959 ;
+U -1 ; WX 638 ; N uni1EA4 ; G 570 ; B 13 0 596 959 ;
+U -1 ; WX 722 ; N uni1EAA ; G 571 ; B 13 0 680 918 ;
+U -1 ; WX 755 ; N uni1EA8 ; G 572 ; B 13 0 713 924 ;
+U -1 ; WX 638 ; N uni1EAC ; G 573 ; B 13 -207 596 784 ;
+U -1 ; WX 638 ; N uni1EB0 ; G 574 ; B 13 0 596 951 ;
+U -1 ; WX 638 ; N uni1EAE ; G 575 ; B 13 0 596 951 ;
+U -1 ; WX 650 ; N uni1EB4 ; G 576 ; B 13 0 608 921 ;
+U -1 ; WX 638 ; N uni1EB2 ; G 577 ; B 13 0 596 949 ;
+U -1 ; WX 638 ; N uni1EB6 ; G 578 ; B 13 -207 596 775 ;
+U -1 ; WX 675 ; N uni1EBC ; G 579 ; B 47 0 633 756 ;
+U -1 ; WX 661 ; N uni1EBA ; G 580 ; B 47 0 619 812 ;
+U -1 ; WX 661 ; N uni1EB8 ; G 581 ; B 47 -207 619 563 ;
+U -1 ; WX 661 ; N uni1EC0 ; G 582 ; B 47 0 619 959 ;
+U -1 ; WX 661 ; N uni1EBE ; G 583 ; B 47 0 619 959 ;
+U -1 ; WX 722 ; N uni1EC4 ; G 584 ; B 47 0 680 918 ;
+U -1 ; WX 755 ; N uni1EC2 ; G 585 ; B 47 0 713 924 ;
+U -1 ; WX 661 ; N uni1EC6 ; G 586 ; B 47 -207 619 784 ;
+U -1 ; WX 645 ; N uni1EC8 ; G 587 ; B 117 0 603 812 ;
+U -1 ; WX 605 ; N uni1EA3 ; G 588 ; B 93 -16 563 674 ;
+U -1 ; WX 600 ; N uni1EA1 ; G 589 ; B 93 -207 546 431 ;
+U -1 ; WX 629 ; N uni1EA7 ; G 590 ; B 93 -16 587 821 ;
+U -1 ; WX 600 ; N uni1EA5 ; G 591 ; B 93 -16 550 821 ;
+U -1 ; WX 693 ; N uni1EAB ; G 592 ; B 93 -16 651 780 ;
+U -1 ; WX 726 ; N uni1EA9 ; G 593 ; B 93 -16 684 786 ;
+U -1 ; WX 600 ; N uni1EAD ; G 594 ; B 93 -207 550 646 ;
+U -1 ; WX 607 ; N uni1EB1 ; G 595 ; B 93 -16 565 814 ;
+U -1 ; WX 609 ; N uni1EAF ; G 596 ; B 93 -16 567 814 ;
+U -1 ; WX 644 ; N uni1EB5 ; G 597 ; B 93 -16 602 784 ;
+U -1 ; WX 607 ; N uni1EB3 ; G 598 ; B 93 -16 565 812 ;
+U -1 ; WX 607 ; N uni1EB7 ; G 599 ; B 93 -207 565 638 ;
+U -1 ; WX 612 ; N uni1EBD ; G 600 ; B 104 -16 570 613 ;
+U -1 ; WX 612 ; N uni1EBB ; G 601 ; B 104 -16 570 674 ;
+U -1 ; WX 612 ; N uni1EB9 ; G 602 ; B 104 -207 570 431 ;
+U -1 ; WX 629 ; N uni1EC1 ; G 603 ; B 104 -16 587 821 ;
+U -1 ; WX 612 ; N uni1EBF ; G 604 ; B 104 -16 570 821 ;
+U -1 ; WX 693 ; N uni1EC5 ; G 605 ; B 104 -16 651 780 ;
+U -1 ; WX 726 ; N uni1EC3 ; G 606 ; B 104 -16 684 786 ;
+U -1 ; WX 612 ; N uni1EC7 ; G 607 ; B 104 -207 570 646 ;
+U -1 ; WX 600 ; N uni1EC9 ; G 608 ; B 96 0 513 674 ;
+U -1 ; WX 645 ; N uni1ECA ; G 609 ; B 117 -207 603 563 ;
+U -1 ; WX 658 ; N uni1ECE ; G 610 ; B 102 -16 616 812 ;
+U -1 ; WX 658 ; N uni1ECC ; G 611 ; B 102 -207 616 576 ;
+U -1 ; WX 673 ; N uni1ED2 ; G 612 ; B 102 -16 631 959 ;
+U -1 ; WX 658 ; N uni1ED0 ; G 613 ; B 102 -16 616 959 ;
+U -1 ; WX 737 ; N uni1ED6 ; G 614 ; B 102 -16 695 918 ;
+U -1 ; WX 770 ; N uni1ED4 ; G 615 ; B 102 -16 728 924 ;
+U -1 ; WX 658 ; N uni1ED8 ; G 616 ; B 102 -207 616 784 ;
+U -1 ; WX 664 ; N Ohorn ; G 617 ; B 102 -16 627 621 ;
+U -1 ; WX 664 ; N uni1EDC ; G 618 ; B 102 -16 627 816 ;
+U -1 ; WX 664 ; N uni1EDA ; G 619 ; B 102 -16 627 800 ;
+U -1 ; WX 674 ; N uni1EE0 ; G 620 ; B 102 -16 632 777 ;
+U -1 ; WX 664 ; N uni1EDE ; G 621 ; B 102 -16 627 826 ;
+U -1 ; WX 664 ; N uni1EE2 ; G 622 ; B 102 -207 627 621 ;
+U -1 ; WX 718 ; N uni1EE6 ; G 623 ; B 136 -16 676 812 ;
+U -1 ; WX 718 ; N uni1EE4 ; G 624 ; B 136 -207 676 563 ;
+U -1 ; WX 742 ; N Uhorn ; G 625 ; B 136 -16 705 621 ;
+U -1 ; WX 742 ; N uni1EEA ; G 626 ; B 136 -16 705 816 ;
+U -1 ; WX 742 ; N uni1EE8 ; G 627 ; B 136 -16 705 800 ;
+U -1 ; WX 742 ; N uni1EEE ; G 628 ; B 136 -16 705 777 ;
+U -1 ; WX 742 ; N uni1EEC ; G 629 ; B 136 -16 705 826 ;
+U -1 ; WX 742 ; N uni1EF0 ; G 630 ; B 136 -207 705 621 ;
+U -1 ; WX 707 ; N Ygrave ; G 631 ; B 153 0 665 792 ;
+U -1 ; WX 707 ; N uni1EF8 ; G 632 ; B 153 0 665 756 ;
+U -1 ; WX 600 ; N uni1ECB ; G 633 ; B 96 -207 513 624 ;
+U -1 ; WX 619 ; N uni1ECF ; G 634 ; B 111 -16 577 674 ;
+U -1 ; WX 619 ; N uni1ECD ; G 635 ; B 111 -207 577 431 ;
+U -1 ; WX 629 ; N uni1ED3 ; G 636 ; B 111 -16 587 821 ;
+U -1 ; WX 619 ; N uni1ED1 ; G 637 ; B 111 -16 577 821 ;
+U -1 ; WX 693 ; N uni1ED7 ; G 638 ; B 111 -16 651 780 ;
+U -1 ; WX 726 ; N uni1ED5 ; G 639 ; B 111 -16 684 786 ;
+U -1 ; WX 619 ; N uni1ED9 ; G 640 ; B 111 -207 577 646 ;
+U -1 ; WX 641 ; N ohorn ; G 641 ; B 111 -16 604 475 ;
+U -1 ; WX 641 ; N uni1EDD ; G 642 ; B 111 -16 604 700 ;
+U -1 ; WX 641 ; N uni1EDB ; G 643 ; B 111 -16 604 664 ;
+U -1 ; WX 641 ; N uni1EE1 ; G 644 ; B 111 -16 604 634 ;
+U -1 ; WX 641 ; N uni1EDF ; G 645 ; B 111 -16 604 690 ;
+U -1 ; WX 641 ; N uni1EE3 ; G 646 ; B 111 -207 604 475 ;
+U -1 ; WX 611 ; N uni1EE7 ; G 647 ; B 127 -16 569 674 ;
+U -1 ; WX 611 ; N uni1EE5 ; G 648 ; B 127 -207 569 417 ;
+U -1 ; WX 694 ; N uhorn ; G 649 ; B 127 -16 657 475 ;
+U -1 ; WX 694 ; N uni1EEB ; G 650 ; B 127 -16 657 700 ;
+U -1 ; WX 694 ; N uni1EE9 ; G 651 ; B 127 -16 657 664 ;
+U -1 ; WX 694 ; N uni1EEF ; G 652 ; B 127 -16 657 634 ;
+U -1 ; WX 694 ; N uni1EED ; G 653 ; B 127 -16 657 690 ;
+U -1 ; WX 694 ; N uni1EF1 ; G 654 ; B 127 -207 657 475 ;
+U -1 ; WX 676 ; N ygrave ; G 655 ; B 22 -186 634 655 ;
+U -1 ; WX 676 ; N uni1EF9 ; G 656 ; B 22 -186 634 613 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Times-Roman.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Times-Roman.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Times-Roman.afm	(revision 2000)
@@ -0,0 +1,2419 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+Comment Creation Date: Thu May  1 12:49:17 1997
+Comment UniqueID 43068
+Comment VMusage 43909 54934
+FontName Times-Roman
+FullName Times Roman
+FamilyName Times
+Weight Roman
+ItalicAngle 0
+IsFixedPitch false
+CharacterSet ExtendedRoman
+FontBBox -168 -218 1000 898 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 002.000
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 662
+XHeight 450
+Ascender 683
+Descender -217
+StdHW 28
+StdVW 84
+StartCharMetrics 315
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 130 -9 238 676 ;
+C 34 ; WX 408 ; N quotedbl ; B 77 431 331 676 ;
+C 35 ; WX 500 ; N numbersign ; B 5 0 496 662 ;
+C 36 ; WX 500 ; N dollar ; B 44 -87 457 727 ;
+C 37 ; WX 833 ; N percent ; B 61 -13 772 676 ;
+C 38 ; WX 778 ; N ampersand ; B 42 -13 750 676 ;
+C 39 ; WX 333 ; N quoteright ; B 79 433 218 676 ;
+C 40 ; WX 333 ; N parenleft ; B 48 -177 304 676 ;
+C 41 ; WX 333 ; N parenright ; B 29 -177 285 676 ;
+C 42 ; WX 500 ; N asterisk ; B 69 265 432 676 ;
+C 43 ; WX 564 ; N plus ; B 30 0 534 506 ;
+C 44 ; WX 250 ; N comma ; B 56 -141 195 102 ;
+C 45 ; WX 333 ; N hyphen ; B 39 194 285 257 ;
+C 46 ; WX 250 ; N period ; B 70 -11 181 100 ;
+C 47 ; WX 278 ; N slash ; B -9 -14 287 676 ;
+C 48 ; WX 500 ; N zero ; B 24 -14 476 676 ;
+C 49 ; WX 500 ; N one ; B 111 0 394 676 ;
+C 50 ; WX 500 ; N two ; B 30 0 475 676 ;
+C 51 ; WX 500 ; N three ; B 43 -14 431 676 ;
+C 52 ; WX 500 ; N four ; B 12 0 472 676 ;
+C 53 ; WX 500 ; N five ; B 32 -14 438 688 ;
+C 54 ; WX 500 ; N six ; B 34 -14 468 684 ;
+C 55 ; WX 500 ; N seven ; B 20 -8 449 662 ;
+C 56 ; WX 500 ; N eight ; B 56 -14 445 676 ;
+C 57 ; WX 500 ; N nine ; B 30 -22 459 676 ;
+C 58 ; WX 278 ; N colon ; B 81 -11 192 459 ;
+C 59 ; WX 278 ; N semicolon ; B 80 -141 219 459 ;
+C 60 ; WX 564 ; N less ; B 28 -8 536 514 ;
+C 61 ; WX 564 ; N equal ; B 30 120 534 386 ;
+C 62 ; WX 564 ; N greater ; B 28 -8 536 514 ;
+C 63 ; WX 444 ; N question ; B 68 -8 414 676 ;
+C 64 ; WX 921 ; N at ; B 116 -14 809 676 ;
+C 65 ; WX 722 ; N A ; B 15 0 706 674 ;
+C 66 ; WX 667 ; N B ; B 17 0 593 662 ;
+C 67 ; WX 667 ; N C ; B 28 -14 633 676 ;
+C 68 ; WX 722 ; N D ; B 16 0 685 662 ;
+C 69 ; WX 611 ; N E ; B 12 0 597 662 ;
+C 70 ; WX 556 ; N F ; B 12 0 546 662 ;
+C 71 ; WX 722 ; N G ; B 32 -14 709 676 ;
+C 72 ; WX 722 ; N H ; B 19 0 702 662 ;
+C 73 ; WX 333 ; N I ; B 18 0 315 662 ;
+C 74 ; WX 389 ; N J ; B 10 -14 370 662 ;
+C 75 ; WX 722 ; N K ; B 34 0 723 662 ;
+C 76 ; WX 611 ; N L ; B 12 0 598 662 ;
+C 77 ; WX 889 ; N M ; B 12 0 863 662 ;
+C 78 ; WX 722 ; N N ; B 12 -11 707 662 ;
+C 79 ; WX 722 ; N O ; B 34 -14 688 676 ;
+C 80 ; WX 556 ; N P ; B 16 0 542 662 ;
+C 81 ; WX 722 ; N Q ; B 34 -178 701 676 ;
+C 82 ; WX 667 ; N R ; B 17 0 659 662 ;
+C 83 ; WX 556 ; N S ; B 42 -14 491 676 ;
+C 84 ; WX 611 ; N T ; B 17 0 593 662 ;
+C 85 ; WX 722 ; N U ; B 14 -14 705 662 ;
+C 86 ; WX 722 ; N V ; B 16 -11 697 662 ;
+C 87 ; WX 944 ; N W ; B 5 -11 932 662 ;
+C 88 ; WX 722 ; N X ; B 10 0 704 662 ;
+C 89 ; WX 722 ; N Y ; B 22 0 703 662 ;
+C 90 ; WX 611 ; N Z ; B 9 0 597 662 ;
+C 91 ; WX 333 ; N bracketleft ; B 88 -156 299 662 ;
+C 92 ; WX 278 ; N backslash ; B -9 -14 287 676 ;
+C 93 ; WX 333 ; N bracketright ; B 34 -156 245 662 ;
+C 94 ; WX 469 ; N asciicircum ; B 24 297 446 662 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 333 ; N quoteleft ; B 115 433 254 676 ;
+C 97 ; WX 444 ; N a ; B 37 -10 442 460 ;
+C 98 ; WX 500 ; N b ; B 3 -10 468 683 ;
+C 99 ; WX 444 ; N c ; B 25 -10 412 460 ;
+C 100 ; WX 500 ; N d ; B 27 -10 491 683 ;
+C 101 ; WX 444 ; N e ; B 25 -10 424 460 ;
+C 102 ; WX 333 ; N f ; B 20 0 383 683 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 28 -218 470 460 ;
+C 104 ; WX 500 ; N h ; B 9 0 487 683 ;
+C 105 ; WX 278 ; N i ; B 16 0 253 683 ;
+C 106 ; WX 278 ; N j ; B -70 -218 194 683 ;
+C 107 ; WX 500 ; N k ; B 7 0 505 683 ;
+C 108 ; WX 278 ; N l ; B 19 0 257 683 ;
+C 109 ; WX 778 ; N m ; B 16 0 775 460 ;
+C 110 ; WX 500 ; N n ; B 16 0 485 460 ;
+C 111 ; WX 500 ; N o ; B 29 -10 470 460 ;
+C 112 ; WX 500 ; N p ; B 5 -217 470 460 ;
+C 113 ; WX 500 ; N q ; B 24 -217 488 460 ;
+C 114 ; WX 333 ; N r ; B 5 0 335 460 ;
+C 115 ; WX 389 ; N s ; B 51 -10 348 460 ;
+C 116 ; WX 278 ; N t ; B 13 -10 279 579 ;
+C 117 ; WX 500 ; N u ; B 9 -10 479 450 ;
+C 118 ; WX 500 ; N v ; B 19 -14 477 450 ;
+C 119 ; WX 722 ; N w ; B 21 -14 694 450 ;
+C 120 ; WX 500 ; N x ; B 17 0 479 450 ;
+C 121 ; WX 500 ; N y ; B 14 -218 475 450 ;
+C 122 ; WX 444 ; N z ; B 27 0 418 450 ;
+C 123 ; WX 480 ; N braceleft ; B 100 -181 350 680 ;
+C 124 ; WX 200 ; N bar ; B 67 -218 133 782 ;
+C 125 ; WX 480 ; N braceright ; B 130 -181 380 680 ;
+C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ;
+C 161 ; WX 333 ; N exclamdown ; B 97 -218 205 467 ;
+C 162 ; WX 500 ; N cent ; B 53 -138 448 579 ;
+C 163 ; WX 500 ; N sterling ; B 12 -8 490 676 ;
+C 164 ; WX 167 ; N fraction ; B -168 -14 331 676 ;
+C 165 ; WX 500 ; N yen ; B -53 0 512 662 ;
+C 166 ; WX 500 ; N florin ; B 7 -189 490 676 ;
+C 167 ; WX 500 ; N section ; B 70 -148 426 676 ;
+C 168 ; WX 500 ; N currency ; B -22 58 522 602 ;
+C 169 ; WX 180 ; N quotesingle ; B 48 431 133 676 ;
+C 170 ; WX 444 ; N quotedblleft ; B 43 433 414 676 ;
+C 171 ; WX 500 ; N guillemotleft ; B 42 33 456 416 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 63 33 285 416 ;
+C 173 ; WX 333 ; N guilsinglright ; B 48 33 270 416 ;
+C 174 ; WX 556 ; N fi ; B 31 0 521 683 ;
+C 175 ; WX 556 ; N fl ; B 32 0 521 683 ;
+C 177 ; WX 500 ; N endash ; B 0 201 500 250 ;
+C 178 ; WX 500 ; N dagger ; B 59 -149 442 676 ;
+C 179 ; WX 500 ; N daggerdbl ; B 58 -153 442 676 ;
+C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ;
+C 182 ; WX 453 ; N paragraph ; B -22 -154 450 662 ;
+C 183 ; WX 350 ; N bullet ; B 40 196 310 466 ;
+C 184 ; WX 333 ; N quotesinglbase ; B 79 -141 218 102 ;
+C 185 ; WX 444 ; N quotedblbase ; B 45 -141 416 102 ;
+C 186 ; WX 444 ; N quotedblright ; B 30 433 401 676 ;
+C 187 ; WX 500 ; N guillemotright ; B 44 33 458 416 ;
+C 188 ; WX 1000 ; N ellipsis ; B 111 -11 888 100 ;
+C 189 ; WX 1000 ; N perthousand ; B 7 -19 994 706 ;
+C 191 ; WX 444 ; N questiondown ; B 30 -218 376 466 ;
+C 193 ; WX 333 ; N grave ; B 19 507 242 678 ;
+C 194 ; WX 333 ; N acute ; B 93 507 317 678 ;
+C 195 ; WX 333 ; N circumflex ; B 11 507 322 674 ;
+C 196 ; WX 333 ; N tilde ; B 1 532 331 638 ;
+C 197 ; WX 333 ; N macron ; B 11 547 322 601 ;
+C 198 ; WX 333 ; N breve ; B 26 507 307 664 ;
+C 199 ; WX 333 ; N dotaccent ; B 118 581 216 681 ;
+C 200 ; WX 333 ; N dieresis ; B 18 581 315 681 ;
+C 202 ; WX 333 ; N ring ; B 67 512 266 711 ;
+C 203 ; WX 333 ; N cedilla ; B 52 -215 261 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -3 507 377 678 ;
+C 206 ; WX 333 ; N ogonek ; B 62 -165 243 0 ;
+C 207 ; WX 333 ; N caron ; B 11 507 322 674 ;
+C 208 ; WX 1000 ; N emdash ; B 0 201 1000 250 ;
+C 225 ; WX 889 ; N AE ; B 0 0 863 662 ;
+C 227 ; WX 276 ; N ordfeminine ; B 4 394 270 676 ;
+C 232 ; WX 611 ; N Lslash ; B 12 0 598 662 ;
+C 233 ; WX 722 ; N Oslash ; B 34 -80 688 734 ;
+C 234 ; WX 889 ; N OE ; B 30 -6 885 668 ;
+C 235 ; WX 310 ; N ordmasculine ; B 6 394 304 676 ;
+C 241 ; WX 667 ; N ae ; B 38 -10 632 460 ;
+C 245 ; WX 278 ; N dotlessi ; B 16 0 253 460 ;
+C 248 ; WX 278 ; N lslash ; B 19 0 259 683 ;
+C 249 ; WX 500 ; N oslash ; B 29 -112 470 551 ;
+C 250 ; WX 722 ; N oe ; B 30 -10 690 460 ;
+C 251 ; WX 500 ; N germandbls ; B 12 -9 468 683 ;
+C -1 ; WX 333 ; N Idieresis ; B 18 0 315 835 ;
+C -1 ; WX 444 ; N eacute ; B 25 -10 424 678 ;
+C -1 ; WX 444 ; N abreve ; B 37 -10 442 664 ;
+C -1 ; WX 500 ; N uhungarumlaut ; B 9 -10 501 678 ;
+C -1 ; WX 444 ; N ecaron ; B 25 -10 424 674 ;
+C -1 ; WX 722 ; N Ydieresis ; B 22 0 703 835 ;
+C -1 ; WX 564 ; N divide ; B 30 -10 534 516 ;
+C -1 ; WX 722 ; N Yacute ; B 22 0 703 890 ;
+C -1 ; WX 722 ; N Acircumflex ; B 15 0 706 886 ;
+C -1 ; WX 444 ; N aacute ; B 37 -10 442 678 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 14 -14 705 886 ;
+C -1 ; WX 500 ; N yacute ; B 14 -218 475 678 ;
+C -1 ; WX 389 ; N scommaaccent ; B 51 -218 348 460 ;
+C -1 ; WX 444 ; N ecircumflex ; B 25 -10 424 674 ;
+C -1 ; WX 722 ; N Uring ; B 14 -14 705 898 ;
+C -1 ; WX 722 ; N Udieresis ; B 14 -14 705 835 ;
+C -1 ; WX 444 ; N aogonek ; B 37 -165 469 460 ;
+C -1 ; WX 722 ; N Uacute ; B 14 -14 705 890 ;
+C -1 ; WX 500 ; N uogonek ; B 9 -155 487 450 ;
+C -1 ; WX 611 ; N Edieresis ; B 12 0 597 835 ;
+C -1 ; WX 722 ; N Dcroat ; B 16 0 685 662 ;
+C -1 ; WX 250 ; N commaaccent ; B 59 -218 184 -50 ;
+C -1 ; WX 760 ; N copyright ; B 38 -14 722 676 ;
+C -1 ; WX 611 ; N Emacron ; B 12 0 597 813 ;
+C -1 ; WX 444 ; N ccaron ; B 25 -10 412 674 ;
+C -1 ; WX 444 ; N aring ; B 37 -10 442 711 ;
+C -1 ; WX 722 ; N Ncommaaccent ; B 12 -198 707 662 ;
+C -1 ; WX 278 ; N lacute ; B 19 0 290 890 ;
+C -1 ; WX 444 ; N agrave ; B 37 -10 442 678 ;
+C -1 ; WX 611 ; N Tcommaaccent ; B 17 -218 593 662 ;
+C -1 ; WX 667 ; N Cacute ; B 28 -14 633 890 ;
+C -1 ; WX 444 ; N atilde ; B 37 -10 442 638 ;
+C -1 ; WX 611 ; N Edotaccent ; B 12 0 597 835 ;
+C -1 ; WX 389 ; N scaron ; B 39 -10 350 674 ;
+C -1 ; WX 389 ; N scedilla ; B 51 -215 348 460 ;
+C -1 ; WX 278 ; N iacute ; B 16 0 290 678 ;
+C -1 ; WX 471 ; N lozenge ; B 13 0 459 724 ;
+C -1 ; WX 667 ; N Rcaron ; B 17 0 659 886 ;
+C -1 ; WX 722 ; N Gcommaaccent ; B 32 -218 709 676 ;
+C -1 ; WX 500 ; N ucircumflex ; B 9 -10 479 674 ;
+C -1 ; WX 444 ; N acircumflex ; B 37 -10 442 674 ;
+C -1 ; WX 722 ; N Amacron ; B 15 0 706 813 ;
+C -1 ; WX 333 ; N rcaron ; B 5 0 335 674 ;
+C -1 ; WX 444 ; N ccedilla ; B 25 -215 412 460 ;
+C -1 ; WX 611 ; N Zdotaccent ; B 9 0 597 835 ;
+C -1 ; WX 556 ; N Thorn ; B 16 0 542 662 ;
+C -1 ; WX 722 ; N Omacron ; B 34 -14 688 813 ;
+C -1 ; WX 667 ; N Racute ; B 17 0 659 890 ;
+C -1 ; WX 556 ; N Sacute ; B 42 -14 491 890 ;
+C -1 ; WX 588 ; N dcaron ; B 27 -10 589 695 ;
+C -1 ; WX 722 ; N Umacron ; B 14 -14 705 813 ;
+C -1 ; WX 500 ; N uring ; B 9 -10 479 711 ;
+C -1 ; WX 300 ; N threesuperior ; B 15 262 291 676 ;
+C -1 ; WX 722 ; N Ograve ; B 34 -14 688 890 ;
+C -1 ; WX 722 ; N Agrave ; B 15 0 706 890 ;
+C -1 ; WX 722 ; N Abreve ; B 15 0 706 876 ;
+C -1 ; WX 564 ; N multiply ; B 38 8 527 497 ;
+C -1 ; WX 500 ; N uacute ; B 9 -10 479 678 ;
+C -1 ; WX 611 ; N Tcaron ; B 17 0 593 886 ;
+C -1 ; WX 476 ; N partialdiff ; B 17 -38 459 710 ;
+C -1 ; WX 500 ; N ydieresis ; B 14 -218 475 623 ;
+C -1 ; WX 722 ; N Nacute ; B 12 -11 707 890 ;
+C -1 ; WX 278 ; N icircumflex ; B -16 0 295 674 ;
+C -1 ; WX 611 ; N Ecircumflex ; B 12 0 597 886 ;
+C -1 ; WX 444 ; N adieresis ; B 37 -10 442 623 ;
+C -1 ; WX 444 ; N edieresis ; B 25 -10 424 623 ;
+C -1 ; WX 444 ; N cacute ; B 25 -10 413 678 ;
+C -1 ; WX 500 ; N nacute ; B 16 0 485 678 ;
+C -1 ; WX 500 ; N umacron ; B 9 -10 479 601 ;
+C -1 ; WX 722 ; N Ncaron ; B 12 -11 707 886 ;
+C -1 ; WX 333 ; N Iacute ; B 18 0 317 890 ;
+C -1 ; WX 564 ; N plusminus ; B 30 0 534 506 ;
+C -1 ; WX 200 ; N brokenbar ; B 67 -143 133 707 ;
+C -1 ; WX 760 ; N registered ; B 38 -14 722 676 ;
+C -1 ; WX 722 ; N Gbreve ; B 32 -14 709 876 ;
+C -1 ; WX 333 ; N Idotaccent ; B 18 0 315 835 ;
+C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ;
+C -1 ; WX 611 ; N Egrave ; B 12 0 597 890 ;
+C -1 ; WX 333 ; N racute ; B 5 0 335 678 ;
+C -1 ; WX 500 ; N omacron ; B 29 -10 470 601 ;
+C -1 ; WX 611 ; N Zacute ; B 9 0 597 890 ;
+C -1 ; WX 611 ; N Zcaron ; B 9 0 597 886 ;
+C -1 ; WX 549 ; N greaterequal ; B 26 0 523 666 ;
+C -1 ; WX 722 ; N Eth ; B 16 0 685 662 ;
+C -1 ; WX 667 ; N Ccedilla ; B 28 -215 633 676 ;
+C -1 ; WX 278 ; N lcommaaccent ; B 19 -218 257 683 ;
+C -1 ; WX 326 ; N tcaron ; B 13 -10 318 722 ;
+C -1 ; WX 444 ; N eogonek ; B 25 -165 424 460 ;
+C -1 ; WX 722 ; N Uogonek ; B 14 -165 705 662 ;
+C -1 ; WX 722 ; N Aacute ; B 15 0 706 890 ;
+C -1 ; WX 722 ; N Adieresis ; B 15 0 706 835 ;
+C -1 ; WX 444 ; N egrave ; B 25 -10 424 678 ;
+C -1 ; WX 444 ; N zacute ; B 27 0 418 678 ;
+C -1 ; WX 278 ; N iogonek ; B 16 -165 265 683 ;
+C -1 ; WX 722 ; N Oacute ; B 34 -14 688 890 ;
+C -1 ; WX 500 ; N oacute ; B 29 -10 470 678 ;
+C -1 ; WX 444 ; N amacron ; B 37 -10 442 601 ;
+C -1 ; WX 389 ; N sacute ; B 51 -10 348 678 ;
+C -1 ; WX 278 ; N idieresis ; B -9 0 288 623 ;
+C -1 ; WX 722 ; N Ocircumflex ; B 34 -14 688 886 ;
+C -1 ; WX 722 ; N Ugrave ; B 14 -14 705 890 ;
+C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
+C -1 ; WX 500 ; N thorn ; B 5 -217 470 683 ;
+C -1 ; WX 300 ; N twosuperior ; B 1 270 296 676 ;
+C -1 ; WX 722 ; N Odieresis ; B 34 -14 688 835 ;
+C -1 ; WX 500 ; N mu ; B 36 -218 512 450 ;
+C -1 ; WX 278 ; N igrave ; B -8 0 253 678 ;
+C -1 ; WX 500 ; N ohungarumlaut ; B 29 -10 491 678 ;
+C -1 ; WX 611 ; N Eogonek ; B 12 -165 597 662 ;
+C -1 ; WX 500 ; N dcroat ; B 27 -10 500 683 ;
+C -1 ; WX 750 ; N threequarters ; B 15 -14 718 676 ;
+C -1 ; WX 556 ; N Scedilla ; B 42 -215 491 676 ;
+C -1 ; WX 344 ; N lcaron ; B 19 0 347 695 ;
+C -1 ; WX 722 ; N Kcommaaccent ; B 34 -198 723 662 ;
+C -1 ; WX 611 ; N Lacute ; B 12 0 598 890 ;
+C -1 ; WX 980 ; N trademark ; B 30 256 957 662 ;
+C -1 ; WX 444 ; N edotaccent ; B 25 -10 424 623 ;
+C -1 ; WX 333 ; N Igrave ; B 18 0 315 890 ;
+C -1 ; WX 333 ; N Imacron ; B 11 0 322 813 ;
+C -1 ; WX 611 ; N Lcaron ; B 12 0 598 676 ;
+C -1 ; WX 750 ; N onehalf ; B 31 -14 746 676 ;
+C -1 ; WX 549 ; N lessequal ; B 26 0 523 666 ;
+C -1 ; WX 500 ; N ocircumflex ; B 29 -10 470 674 ;
+C -1 ; WX 500 ; N ntilde ; B 16 0 485 638 ;
+C -1 ; WX 722 ; N Uhungarumlaut ; B 14 -14 705 890 ;
+C -1 ; WX 611 ; N Eacute ; B 12 0 597 890 ;
+C -1 ; WX 444 ; N emacron ; B 25 -10 424 601 ;
+C -1 ; WX 500 ; N gbreve ; B 28 -218 470 664 ;
+C -1 ; WX 750 ; N onequarter ; B 37 -14 718 676 ;
+C -1 ; WX 556 ; N Scaron ; B 42 -14 491 886 ;
+C -1 ; WX 556 ; N Scommaaccent ; B 42 -218 491 676 ;
+C -1 ; WX 722 ; N Ohungarumlaut ; B 34 -14 688 890 ;
+C -1 ; WX 400 ; N degree ; B 57 390 343 676 ;
+C -1 ; WX 500 ; N ograve ; B 29 -10 470 678 ;
+C -1 ; WX 667 ; N Ccaron ; B 28 -14 633 886 ;
+C -1 ; WX 500 ; N ugrave ; B 9 -10 479 678 ;
+C -1 ; WX 453 ; N radical ; B 2 -60 452 768 ;
+C -1 ; WX 722 ; N Dcaron ; B 16 0 685 886 ;
+C -1 ; WX 333 ; N rcommaaccent ; B 5 -218 335 460 ;
+C -1 ; WX 722 ; N Ntilde ; B 12 -11 707 850 ;
+C -1 ; WX 500 ; N otilde ; B 29 -10 470 638 ;
+C -1 ; WX 667 ; N Rcommaaccent ; B 17 -198 659 662 ;
+C -1 ; WX 611 ; N Lcommaaccent ; B 12 -218 598 662 ;
+C -1 ; WX 722 ; N Atilde ; B 15 0 706 850 ;
+C -1 ; WX 722 ; N Aogonek ; B 15 -165 738 674 ;
+C -1 ; WX 722 ; N Aring ; B 15 0 706 898 ;
+C -1 ; WX 722 ; N Otilde ; B 34 -14 688 850 ;
+C -1 ; WX 444 ; N zdotaccent ; B 27 0 418 623 ;
+C -1 ; WX 611 ; N Ecaron ; B 12 0 597 886 ;
+C -1 ; WX 333 ; N Iogonek ; B 18 -165 315 662 ;
+C -1 ; WX 500 ; N kcommaaccent ; B 7 -218 505 683 ;
+C -1 ; WX 564 ; N minus ; B 30 220 534 286 ;
+C -1 ; WX 333 ; N Icircumflex ; B 11 0 322 886 ;
+C -1 ; WX 500 ; N ncaron ; B 16 0 485 674 ;
+C -1 ; WX 278 ; N tcommaaccent ; B 13 -218 279 579 ;
+C -1 ; WX 564 ; N logicalnot ; B 30 108 534 386 ;
+C -1 ; WX 500 ; N odieresis ; B 29 -10 470 623 ;
+C -1 ; WX 500 ; N udieresis ; B 9 -10 479 623 ;
+C -1 ; WX 549 ; N notequal ; B 12 -31 537 547 ;
+C -1 ; WX 500 ; N gcommaaccent ; B 28 -218 470 749 ;
+C -1 ; WX 500 ; N eth ; B 29 -10 471 686 ;
+C -1 ; WX 444 ; N zcaron ; B 27 0 418 674 ;
+C -1 ; WX 500 ; N ncommaaccent ; B 16 -218 485 460 ;
+C -1 ; WX 300 ; N onesuperior ; B 57 270 248 676 ;
+C -1 ; WX 278 ; N imacron ; B 6 0 271 601 ;
+C -1 ; WX 500 ; N Euro ; B 0 0 0 0 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 2073
+KPX A C -40
+KPX A Cacute -40
+KPX A Ccaron -40
+KPX A Ccedilla -40
+KPX A G -40
+KPX A Gbreve -40
+KPX A Gcommaaccent -40
+KPX A O -55
+KPX A Oacute -55
+KPX A Ocircumflex -55
+KPX A Odieresis -55
+KPX A Ograve -55
+KPX A Ohungarumlaut -55
+KPX A Omacron -55
+KPX A Oslash -55
+KPX A Otilde -55
+KPX A Q -55
+KPX A T -111
+KPX A Tcaron -111
+KPX A Tcommaaccent -111
+KPX A U -55
+KPX A Uacute -55
+KPX A Ucircumflex -55
+KPX A Udieresis -55
+KPX A Ugrave -55
+KPX A Uhungarumlaut -55
+KPX A Umacron -55
+KPX A Uogonek -55
+KPX A Uring -55
+KPX A V -135
+KPX A W -90
+KPX A Y -105
+KPX A Yacute -105
+KPX A Ydieresis -105
+KPX A quoteright -111
+KPX A v -74
+KPX A w -92
+KPX A y -92
+KPX A yacute -92
+KPX A ydieresis -92
+KPX Aacute C -40
+KPX Aacute Cacute -40
+KPX Aacute Ccaron -40
+KPX Aacute Ccedilla -40
+KPX Aacute G -40
+KPX Aacute Gbreve -40
+KPX Aacute Gcommaaccent -40
+KPX Aacute O -55
+KPX Aacute Oacute -55
+KPX Aacute Ocircumflex -55
+KPX Aacute Odieresis -55
+KPX Aacute Ograve -55
+KPX Aacute Ohungarumlaut -55
+KPX Aacute Omacron -55
+KPX Aacute Oslash -55
+KPX Aacute Otilde -55
+KPX Aacute Q -55
+KPX Aacute T -111
+KPX Aacute Tcaron -111
+KPX Aacute Tcommaaccent -111
+KPX Aacute U -55
+KPX Aacute Uacute -55
+KPX Aacute Ucircumflex -55
+KPX Aacute Udieresis -55
+KPX Aacute Ugrave -55
+KPX Aacute Uhungarumlaut -55
+KPX Aacute Umacron -55
+KPX Aacute Uogonek -55
+KPX Aacute Uring -55
+KPX Aacute V -135
+KPX Aacute W -90
+KPX Aacute Y -105
+KPX Aacute Yacute -105
+KPX Aacute Ydieresis -105
+KPX Aacute quoteright -111
+KPX Aacute v -74
+KPX Aacute w -92
+KPX Aacute y -92
+KPX Aacute yacute -92
+KPX Aacute ydieresis -92
+KPX Abreve C -40
+KPX Abreve Cacute -40
+KPX Abreve Ccaron -40
+KPX Abreve Ccedilla -40
+KPX Abreve G -40
+KPX Abreve Gbreve -40
+KPX Abreve Gcommaaccent -40
+KPX Abreve O -55
+KPX Abreve Oacute -55
+KPX Abreve Ocircumflex -55
+KPX Abreve Odieresis -55
+KPX Abreve Ograve -55
+KPX Abreve Ohungarumlaut -55
+KPX Abreve Omacron -55
+KPX Abreve Oslash -55
+KPX Abreve Otilde -55
+KPX Abreve Q -55
+KPX Abreve T -111
+KPX Abreve Tcaron -111
+KPX Abreve Tcommaaccent -111
+KPX Abreve U -55
+KPX Abreve Uacute -55
+KPX Abreve Ucircumflex -55
+KPX Abreve Udieresis -55
+KPX Abreve Ugrave -55
+KPX Abreve Uhungarumlaut -55
+KPX Abreve Umacron -55
+KPX Abreve Uogonek -55
+KPX Abreve Uring -55
+KPX Abreve V -135
+KPX Abreve W -90
+KPX Abreve Y -105
+KPX Abreve Yacute -105
+KPX Abreve Ydieresis -105
+KPX Abreve quoteright -111
+KPX Abreve v -74
+KPX Abreve w -92
+KPX Abreve y -92
+KPX Abreve yacute -92
+KPX Abreve ydieresis -92
+KPX Acircumflex C -40
+KPX Acircumflex Cacute -40
+KPX Acircumflex Ccaron -40
+KPX Acircumflex Ccedilla -40
+KPX Acircumflex G -40
+KPX Acircumflex Gbreve -40
+KPX Acircumflex Gcommaaccent -40
+KPX Acircumflex O -55
+KPX Acircumflex Oacute -55
+KPX Acircumflex Ocircumflex -55
+KPX Acircumflex Odieresis -55
+KPX Acircumflex Ograve -55
+KPX Acircumflex Ohungarumlaut -55
+KPX Acircumflex Omacron -55
+KPX Acircumflex Oslash -55
+KPX Acircumflex Otilde -55
+KPX Acircumflex Q -55
+KPX Acircumflex T -111
+KPX Acircumflex Tcaron -111
+KPX Acircumflex Tcommaaccent -111
+KPX Acircumflex U -55
+KPX Acircumflex Uacute -55
+KPX Acircumflex Ucircumflex -55
+KPX Acircumflex Udieresis -55
+KPX Acircumflex Ugrave -55
+KPX Acircumflex Uhungarumlaut -55
+KPX Acircumflex Umacron -55
+KPX Acircumflex Uogonek -55
+KPX Acircumflex Uring -55
+KPX Acircumflex V -135
+KPX Acircumflex W -90
+KPX Acircumflex Y -105
+KPX Acircumflex Yacute -105
+KPX Acircumflex Ydieresis -105
+KPX Acircumflex quoteright -111
+KPX Acircumflex v -74
+KPX Acircumflex w -92
+KPX Acircumflex y -92
+KPX Acircumflex yacute -92
+KPX Acircumflex ydieresis -92
+KPX Adieresis C -40
+KPX Adieresis Cacute -40
+KPX Adieresis Ccaron -40
+KPX Adieresis Ccedilla -40
+KPX Adieresis G -40
+KPX Adieresis Gbreve -40
+KPX Adieresis Gcommaaccent -40
+KPX Adieresis O -55
+KPX Adieresis Oacute -55
+KPX Adieresis Ocircumflex -55
+KPX Adieresis Odieresis -55
+KPX Adieresis Ograve -55
+KPX Adieresis Ohungarumlaut -55
+KPX Adieresis Omacron -55
+KPX Adieresis Oslash -55
+KPX Adieresis Otilde -55
+KPX Adieresis Q -55
+KPX Adieresis T -111
+KPX Adieresis Tcaron -111
+KPX Adieresis Tcommaaccent -111
+KPX Adieresis U -55
+KPX Adieresis Uacute -55
+KPX Adieresis Ucircumflex -55
+KPX Adieresis Udieresis -55
+KPX Adieresis Ugrave -55
+KPX Adieresis Uhungarumlaut -55
+KPX Adieresis Umacron -55
+KPX Adieresis Uogonek -55
+KPX Adieresis Uring -55
+KPX Adieresis V -135
+KPX Adieresis W -90
+KPX Adieresis Y -105
+KPX Adieresis Yacute -105
+KPX Adieresis Ydieresis -105
+KPX Adieresis quoteright -111
+KPX Adieresis v -74
+KPX Adieresis w -92
+KPX Adieresis y -92
+KPX Adieresis yacute -92
+KPX Adieresis ydieresis -92
+KPX Agrave C -40
+KPX Agrave Cacute -40
+KPX Agrave Ccaron -40
+KPX Agrave Ccedilla -40
+KPX Agrave G -40
+KPX Agrave Gbreve -40
+KPX Agrave Gcommaaccent -40
+KPX Agrave O -55
+KPX Agrave Oacute -55
+KPX Agrave Ocircumflex -55
+KPX Agrave Odieresis -55
+KPX Agrave Ograve -55
+KPX Agrave Ohungarumlaut -55
+KPX Agrave Omacron -55
+KPX Agrave Oslash -55
+KPX Agrave Otilde -55
+KPX Agrave Q -55
+KPX Agrave T -111
+KPX Agrave Tcaron -111
+KPX Agrave Tcommaaccent -111
+KPX Agrave U -55
+KPX Agrave Uacute -55
+KPX Agrave Ucircumflex -55
+KPX Agrave Udieresis -55
+KPX Agrave Ugrave -55
+KPX Agrave Uhungarumlaut -55
+KPX Agrave Umacron -55
+KPX Agrave Uogonek -55
+KPX Agrave Uring -55
+KPX Agrave V -135
+KPX Agrave W -90
+KPX Agrave Y -105
+KPX Agrave Yacute -105
+KPX Agrave Ydieresis -105
+KPX Agrave quoteright -111
+KPX Agrave v -74
+KPX Agrave w -92
+KPX Agrave y -92
+KPX Agrave yacute -92
+KPX Agrave ydieresis -92
+KPX Amacron C -40
+KPX Amacron Cacute -40
+KPX Amacron Ccaron -40
+KPX Amacron Ccedilla -40
+KPX Amacron G -40
+KPX Amacron Gbreve -40
+KPX Amacron Gcommaaccent -40
+KPX Amacron O -55
+KPX Amacron Oacute -55
+KPX Amacron Ocircumflex -55
+KPX Amacron Odieresis -55
+KPX Amacron Ograve -55
+KPX Amacron Ohungarumlaut -55
+KPX Amacron Omacron -55
+KPX Amacron Oslash -55
+KPX Amacron Otilde -55
+KPX Amacron Q -55
+KPX Amacron T -111
+KPX Amacron Tcaron -111
+KPX Amacron Tcommaaccent -111
+KPX Amacron U -55
+KPX Amacron Uacute -55
+KPX Amacron Ucircumflex -55
+KPX Amacron Udieresis -55
+KPX Amacron Ugrave -55
+KPX Amacron Uhungarumlaut -55
+KPX Amacron Umacron -55
+KPX Amacron Uogonek -55
+KPX Amacron Uring -55
+KPX Amacron V -135
+KPX Amacron W -90
+KPX Amacron Y -105
+KPX Amacron Yacute -105
+KPX Amacron Ydieresis -105
+KPX Amacron quoteright -111
+KPX Amacron v -74
+KPX Amacron w -92
+KPX Amacron y -92
+KPX Amacron yacute -92
+KPX Amacron ydieresis -92
+KPX Aogonek C -40
+KPX Aogonek Cacute -40
+KPX Aogonek Ccaron -40
+KPX Aogonek Ccedilla -40
+KPX Aogonek G -40
+KPX Aogonek Gbreve -40
+KPX Aogonek Gcommaaccent -40
+KPX Aogonek O -55
+KPX Aogonek Oacute -55
+KPX Aogonek Ocircumflex -55
+KPX Aogonek Odieresis -55
+KPX Aogonek Ograve -55
+KPX Aogonek Ohungarumlaut -55
+KPX Aogonek Omacron -55
+KPX Aogonek Oslash -55
+KPX Aogonek Otilde -55
+KPX Aogonek Q -55
+KPX Aogonek T -111
+KPX Aogonek Tcaron -111
+KPX Aogonek Tcommaaccent -111
+KPX Aogonek U -55
+KPX Aogonek Uacute -55
+KPX Aogonek Ucircumflex -55
+KPX Aogonek Udieresis -55
+KPX Aogonek Ugrave -55
+KPX Aogonek Uhungarumlaut -55
+KPX Aogonek Umacron -55
+KPX Aogonek Uogonek -55
+KPX Aogonek Uring -55
+KPX Aogonek V -135
+KPX Aogonek W -90
+KPX Aogonek Y -105
+KPX Aogonek Yacute -105
+KPX Aogonek Ydieresis -105
+KPX Aogonek quoteright -111
+KPX Aogonek v -74
+KPX Aogonek w -52
+KPX Aogonek y -52
+KPX Aogonek yacute -52
+KPX Aogonek ydieresis -52
+KPX Aring C -40
+KPX Aring Cacute -40
+KPX Aring Ccaron -40
+KPX Aring Ccedilla -40
+KPX Aring G -40
+KPX Aring Gbreve -40
+KPX Aring Gcommaaccent -40
+KPX Aring O -55
+KPX Aring Oacute -55
+KPX Aring Ocircumflex -55
+KPX Aring Odieresis -55
+KPX Aring Ograve -55
+KPX Aring Ohungarumlaut -55
+KPX Aring Omacron -55
+KPX Aring Oslash -55
+KPX Aring Otilde -55
+KPX Aring Q -55
+KPX Aring T -111
+KPX Aring Tcaron -111
+KPX Aring Tcommaaccent -111
+KPX Aring U -55
+KPX Aring Uacute -55
+KPX Aring Ucircumflex -55
+KPX Aring Udieresis -55
+KPX Aring Ugrave -55
+KPX Aring Uhungarumlaut -55
+KPX Aring Umacron -55
+KPX Aring Uogonek -55
+KPX Aring Uring -55
+KPX Aring V -135
+KPX Aring W -90
+KPX Aring Y -105
+KPX Aring Yacute -105
+KPX Aring Ydieresis -105
+KPX Aring quoteright -111
+KPX Aring v -74
+KPX Aring w -92
+KPX Aring y -92
+KPX Aring yacute -92
+KPX Aring ydieresis -92
+KPX Atilde C -40
+KPX Atilde Cacute -40
+KPX Atilde Ccaron -40
+KPX Atilde Ccedilla -40
+KPX Atilde G -40
+KPX Atilde Gbreve -40
+KPX Atilde Gcommaaccent -40
+KPX Atilde O -55
+KPX Atilde Oacute -55
+KPX Atilde Ocircumflex -55
+KPX Atilde Odieresis -55
+KPX Atilde Ograve -55
+KPX Atilde Ohungarumlaut -55
+KPX Atilde Omacron -55
+KPX Atilde Oslash -55
+KPX Atilde Otilde -55
+KPX Atilde Q -55
+KPX Atilde T -111
+KPX Atilde Tcaron -111
+KPX Atilde Tcommaaccent -111
+KPX Atilde U -55
+KPX Atilde Uacute -55
+KPX Atilde Ucircumflex -55
+KPX Atilde Udieresis -55
+KPX Atilde Ugrave -55
+KPX Atilde Uhungarumlaut -55
+KPX Atilde Umacron -55
+KPX Atilde Uogonek -55
+KPX Atilde Uring -55
+KPX Atilde V -135
+KPX Atilde W -90
+KPX Atilde Y -105
+KPX Atilde Yacute -105
+KPX Atilde Ydieresis -105
+KPX Atilde quoteright -111
+KPX Atilde v -74
+KPX Atilde w -92
+KPX Atilde y -92
+KPX Atilde yacute -92
+KPX Atilde ydieresis -92
+KPX B A -35
+KPX B Aacute -35
+KPX B Abreve -35
+KPX B Acircumflex -35
+KPX B Adieresis -35
+KPX B Agrave -35
+KPX B Amacron -35
+KPX B Aogonek -35
+KPX B Aring -35
+KPX B Atilde -35
+KPX B U -10
+KPX B Uacute -10
+KPX B Ucircumflex -10
+KPX B Udieresis -10
+KPX B Ugrave -10
+KPX B Uhungarumlaut -10
+KPX B Umacron -10
+KPX B Uogonek -10
+KPX B Uring -10
+KPX D A -40
+KPX D Aacute -40
+KPX D Abreve -40
+KPX D Acircumflex -40
+KPX D Adieresis -40
+KPX D Agrave -40
+KPX D Amacron -40
+KPX D Aogonek -40
+KPX D Aring -40
+KPX D Atilde -40
+KPX D V -40
+KPX D W -30
+KPX D Y -55
+KPX D Yacute -55
+KPX D Ydieresis -55
+KPX Dcaron A -40
+KPX Dcaron Aacute -40
+KPX Dcaron Abreve -40
+KPX Dcaron Acircumflex -40
+KPX Dcaron Adieresis -40
+KPX Dcaron Agrave -40
+KPX Dcaron Amacron -40
+KPX Dcaron Aogonek -40
+KPX Dcaron Aring -40
+KPX Dcaron Atilde -40
+KPX Dcaron V -40
+KPX Dcaron W -30
+KPX Dcaron Y -55
+KPX Dcaron Yacute -55
+KPX Dcaron Ydieresis -55
+KPX Dcroat A -40
+KPX Dcroat Aacute -40
+KPX Dcroat Abreve -40
+KPX Dcroat Acircumflex -40
+KPX Dcroat Adieresis -40
+KPX Dcroat Agrave -40
+KPX Dcroat Amacron -40
+KPX Dcroat Aogonek -40
+KPX Dcroat Aring -40
+KPX Dcroat Atilde -40
+KPX Dcroat V -40
+KPX Dcroat W -30
+KPX Dcroat Y -55
+KPX Dcroat Yacute -55
+KPX Dcroat Ydieresis -55
+KPX F A -74
+KPX F Aacute -74
+KPX F Abreve -74
+KPX F Acircumflex -74
+KPX F Adieresis -74
+KPX F Agrave -74
+KPX F Amacron -74
+KPX F Aogonek -74
+KPX F Aring -74
+KPX F Atilde -74
+KPX F a -15
+KPX F aacute -15
+KPX F abreve -15
+KPX F acircumflex -15
+KPX F adieresis -15
+KPX F agrave -15
+KPX F amacron -15
+KPX F aogonek -15
+KPX F aring -15
+KPX F atilde -15
+KPX F comma -80
+KPX F o -15
+KPX F oacute -15
+KPX F ocircumflex -15
+KPX F odieresis -15
+KPX F ograve -15
+KPX F ohungarumlaut -15
+KPX F omacron -15
+KPX F oslash -15
+KPX F otilde -15
+KPX F period -80
+KPX J A -60
+KPX J Aacute -60
+KPX J Abreve -60
+KPX J Acircumflex -60
+KPX J Adieresis -60
+KPX J Agrave -60
+KPX J Amacron -60
+KPX J Aogonek -60
+KPX J Aring -60
+KPX J Atilde -60
+KPX K O -30
+KPX K Oacute -30
+KPX K Ocircumflex -30
+KPX K Odieresis -30
+KPX K Ograve -30
+KPX K Ohungarumlaut -30
+KPX K Omacron -30
+KPX K Oslash -30
+KPX K Otilde -30
+KPX K e -25
+KPX K eacute -25
+KPX K ecaron -25
+KPX K ecircumflex -25
+KPX K edieresis -25
+KPX K edotaccent -25
+KPX K egrave -25
+KPX K emacron -25
+KPX K eogonek -25
+KPX K o -35
+KPX K oacute -35
+KPX K ocircumflex -35
+KPX K odieresis -35
+KPX K ograve -35
+KPX K ohungarumlaut -35
+KPX K omacron -35
+KPX K oslash -35
+KPX K otilde -35
+KPX K u -15
+KPX K uacute -15
+KPX K ucircumflex -15
+KPX K udieresis -15
+KPX K ugrave -15
+KPX K uhungarumlaut -15
+KPX K umacron -15
+KPX K uogonek -15
+KPX K uring -15
+KPX K y -25
+KPX K yacute -25
+KPX K ydieresis -25
+KPX Kcommaaccent O -30
+KPX Kcommaaccent Oacute -30
+KPX Kcommaaccent Ocircumflex -30
+KPX Kcommaaccent Odieresis -30
+KPX Kcommaaccent Ograve -30
+KPX Kcommaaccent Ohungarumlaut -30
+KPX Kcommaaccent Omacron -30
+KPX Kcommaaccent Oslash -30
+KPX Kcommaaccent Otilde -30
+KPX Kcommaaccent e -25
+KPX Kcommaaccent eacute -25
+KPX Kcommaaccent ecaron -25
+KPX Kcommaaccent ecircumflex -25
+KPX Kcommaaccent edieresis -25
+KPX Kcommaaccent edotaccent -25
+KPX Kcommaaccent egrave -25
+KPX Kcommaaccent emacron -25
+KPX Kcommaaccent eogonek -25
+KPX Kcommaaccent o -35
+KPX Kcommaaccent oacute -35
+KPX Kcommaaccent ocircumflex -35
+KPX Kcommaaccent odieresis -35
+KPX Kcommaaccent ograve -35
+KPX Kcommaaccent ohungarumlaut -35
+KPX Kcommaaccent omacron -35
+KPX Kcommaaccent oslash -35
+KPX Kcommaaccent otilde -35
+KPX Kcommaaccent u -15
+KPX Kcommaaccent uacute -15
+KPX Kcommaaccent ucircumflex -15
+KPX Kcommaaccent udieresis -15
+KPX Kcommaaccent ugrave -15
+KPX Kcommaaccent uhungarumlaut -15
+KPX Kcommaaccent umacron -15
+KPX Kcommaaccent uogonek -15
+KPX Kcommaaccent uring -15
+KPX Kcommaaccent y -25
+KPX Kcommaaccent yacute -25
+KPX Kcommaaccent ydieresis -25
+KPX L T -92
+KPX L Tcaron -92
+KPX L Tcommaaccent -92
+KPX L V -100
+KPX L W -74
+KPX L Y -100
+KPX L Yacute -100
+KPX L Ydieresis -100
+KPX L quoteright -92
+KPX L y -55
+KPX L yacute -55
+KPX L ydieresis -55
+KPX Lacute T -92
+KPX Lacute Tcaron -92
+KPX Lacute Tcommaaccent -92
+KPX Lacute V -100
+KPX Lacute W -74
+KPX Lacute Y -100
+KPX Lacute Yacute -100
+KPX Lacute Ydieresis -100
+KPX Lacute quoteright -92
+KPX Lacute y -55
+KPX Lacute yacute -55
+KPX Lacute ydieresis -55
+KPX Lcaron quoteright -92
+KPX Lcaron y -55
+KPX Lcaron yacute -55
+KPX Lcaron ydieresis -55
+KPX Lcommaaccent T -92
+KPX Lcommaaccent Tcaron -92
+KPX Lcommaaccent Tcommaaccent -92
+KPX Lcommaaccent V -100
+KPX Lcommaaccent W -74
+KPX Lcommaaccent Y -100
+KPX Lcommaaccent Yacute -100
+KPX Lcommaaccent Ydieresis -100
+KPX Lcommaaccent quoteright -92
+KPX Lcommaaccent y -55
+KPX Lcommaaccent yacute -55
+KPX Lcommaaccent ydieresis -55
+KPX Lslash T -92
+KPX Lslash Tcaron -92
+KPX Lslash Tcommaaccent -92
+KPX Lslash V -100
+KPX Lslash W -74
+KPX Lslash Y -100
+KPX Lslash Yacute -100
+KPX Lslash Ydieresis -100
+KPX Lslash quoteright -92
+KPX Lslash y -55
+KPX Lslash yacute -55
+KPX Lslash ydieresis -55
+KPX N A -35
+KPX N Aacute -35
+KPX N Abreve -35
+KPX N Acircumflex -35
+KPX N Adieresis -35
+KPX N Agrave -35
+KPX N Amacron -35
+KPX N Aogonek -35
+KPX N Aring -35
+KPX N Atilde -35
+KPX Nacute A -35
+KPX Nacute Aacute -35
+KPX Nacute Abreve -35
+KPX Nacute Acircumflex -35
+KPX Nacute Adieresis -35
+KPX Nacute Agrave -35
+KPX Nacute Amacron -35
+KPX Nacute Aogonek -35
+KPX Nacute Aring -35
+KPX Nacute Atilde -35
+KPX Ncaron A -35
+KPX Ncaron Aacute -35
+KPX Ncaron Abreve -35
+KPX Ncaron Acircumflex -35
+KPX Ncaron Adieresis -35
+KPX Ncaron Agrave -35
+KPX Ncaron Amacron -35
+KPX Ncaron Aogonek -35
+KPX Ncaron Aring -35
+KPX Ncaron Atilde -35
+KPX Ncommaaccent A -35
+KPX Ncommaaccent Aacute -35
+KPX Ncommaaccent Abreve -35
+KPX Ncommaaccent Acircumflex -35
+KPX Ncommaaccent Adieresis -35
+KPX Ncommaaccent Agrave -35
+KPX Ncommaaccent Amacron -35
+KPX Ncommaaccent Aogonek -35
+KPX Ncommaaccent Aring -35
+KPX Ncommaaccent Atilde -35
+KPX Ntilde A -35
+KPX Ntilde Aacute -35
+KPX Ntilde Abreve -35
+KPX Ntilde Acircumflex -35
+KPX Ntilde Adieresis -35
+KPX Ntilde Agrave -35
+KPX Ntilde Amacron -35
+KPX Ntilde Aogonek -35
+KPX Ntilde Aring -35
+KPX Ntilde Atilde -35
+KPX O A -35
+KPX O Aacute -35
+KPX O Abreve -35
+KPX O Acircumflex -35
+KPX O Adieresis -35
+KPX O Agrave -35
+KPX O Amacron -35
+KPX O Aogonek -35
+KPX O Aring -35
+KPX O Atilde -35
+KPX O T -40
+KPX O Tcaron -40
+KPX O Tcommaaccent -40
+KPX O V -50
+KPX O W -35
+KPX O X -40
+KPX O Y -50
+KPX O Yacute -50
+KPX O Ydieresis -50
+KPX Oacute A -35
+KPX Oacute Aacute -35
+KPX Oacute Abreve -35
+KPX Oacute Acircumflex -35
+KPX Oacute Adieresis -35
+KPX Oacute Agrave -35
+KPX Oacute Amacron -35
+KPX Oacute Aogonek -35
+KPX Oacute Aring -35
+KPX Oacute Atilde -35
+KPX Oacute T -40
+KPX Oacute Tcaron -40
+KPX Oacute Tcommaaccent -40
+KPX Oacute V -50
+KPX Oacute W -35
+KPX Oacute X -40
+KPX Oacute Y -50
+KPX Oacute Yacute -50
+KPX Oacute Ydieresis -50
+KPX Ocircumflex A -35
+KPX Ocircumflex Aacute -35
+KPX Ocircumflex Abreve -35
+KPX Ocircumflex Acircumflex -35
+KPX Ocircumflex Adieresis -35
+KPX Ocircumflex Agrave -35
+KPX Ocircumflex Amacron -35
+KPX Ocircumflex Aogonek -35
+KPX Ocircumflex Aring -35
+KPX Ocircumflex Atilde -35
+KPX Ocircumflex T -40
+KPX Ocircumflex Tcaron -40
+KPX Ocircumflex Tcommaaccent -40
+KPX Ocircumflex V -50
+KPX Ocircumflex W -35
+KPX Ocircumflex X -40
+KPX Ocircumflex Y -50
+KPX Ocircumflex Yacute -50
+KPX Ocircumflex Ydieresis -50
+KPX Odieresis A -35
+KPX Odieresis Aacute -35
+KPX Odieresis Abreve -35
+KPX Odieresis Acircumflex -35
+KPX Odieresis Adieresis -35
+KPX Odieresis Agrave -35
+KPX Odieresis Amacron -35
+KPX Odieresis Aogonek -35
+KPX Odieresis Aring -35
+KPX Odieresis Atilde -35
+KPX Odieresis T -40
+KPX Odieresis Tcaron -40
+KPX Odieresis Tcommaaccent -40
+KPX Odieresis V -50
+KPX Odieresis W -35
+KPX Odieresis X -40
+KPX Odieresis Y -50
+KPX Odieresis Yacute -50
+KPX Odieresis Ydieresis -50
+KPX Ograve A -35
+KPX Ograve Aacute -35
+KPX Ograve Abreve -35
+KPX Ograve Acircumflex -35
+KPX Ograve Adieresis -35
+KPX Ograve Agrave -35
+KPX Ograve Amacron -35
+KPX Ograve Aogonek -35
+KPX Ograve Aring -35
+KPX Ograve Atilde -35
+KPX Ograve T -40
+KPX Ograve Tcaron -40
+KPX Ograve Tcommaaccent -40
+KPX Ograve V -50
+KPX Ograve W -35
+KPX Ograve X -40
+KPX Ograve Y -50
+KPX Ograve Yacute -50
+KPX Ograve Ydieresis -50
+KPX Ohungarumlaut A -35
+KPX Ohungarumlaut Aacute -35
+KPX Ohungarumlaut Abreve -35
+KPX Ohungarumlaut Acircumflex -35
+KPX Ohungarumlaut Adieresis -35
+KPX Ohungarumlaut Agrave -35
+KPX Ohungarumlaut Amacron -35
+KPX Ohungarumlaut Aogonek -35
+KPX Ohungarumlaut Aring -35
+KPX Ohungarumlaut Atilde -35
+KPX Ohungarumlaut T -40
+KPX Ohungarumlaut Tcaron -40
+KPX Ohungarumlaut Tcommaaccent -40
+KPX Ohungarumlaut V -50
+KPX Ohungarumlaut W -35
+KPX Ohungarumlaut X -40
+KPX Ohungarumlaut Y -50
+KPX Ohungarumlaut Yacute -50
+KPX Ohungarumlaut Ydieresis -50
+KPX Omacron A -35
+KPX Omacron Aacute -35
+KPX Omacron Abreve -35
+KPX Omacron Acircumflex -35
+KPX Omacron Adieresis -35
+KPX Omacron Agrave -35
+KPX Omacron Amacron -35
+KPX Omacron Aogonek -35
+KPX Omacron Aring -35
+KPX Omacron Atilde -35
+KPX Omacron T -40
+KPX Omacron Tcaron -40
+KPX Omacron Tcommaaccent -40
+KPX Omacron V -50
+KPX Omacron W -35
+KPX Omacron X -40
+KPX Omacron Y -50
+KPX Omacron Yacute -50
+KPX Omacron Ydieresis -50
+KPX Oslash A -35
+KPX Oslash Aacute -35
+KPX Oslash Abreve -35
+KPX Oslash Acircumflex -35
+KPX Oslash Adieresis -35
+KPX Oslash Agrave -35
+KPX Oslash Amacron -35
+KPX Oslash Aogonek -35
+KPX Oslash Aring -35
+KPX Oslash Atilde -35
+KPX Oslash T -40
+KPX Oslash Tcaron -40
+KPX Oslash Tcommaaccent -40
+KPX Oslash V -50
+KPX Oslash W -35
+KPX Oslash X -40
+KPX Oslash Y -50
+KPX Oslash Yacute -50
+KPX Oslash Ydieresis -50
+KPX Otilde A -35
+KPX Otilde Aacute -35
+KPX Otilde Abreve -35
+KPX Otilde Acircumflex -35
+KPX Otilde Adieresis -35
+KPX Otilde Agrave -35
+KPX Otilde Amacron -35
+KPX Otilde Aogonek -35
+KPX Otilde Aring -35
+KPX Otilde Atilde -35
+KPX Otilde T -40
+KPX Otilde Tcaron -40
+KPX Otilde Tcommaaccent -40
+KPX Otilde V -50
+KPX Otilde W -35
+KPX Otilde X -40
+KPX Otilde Y -50
+KPX Otilde Yacute -50
+KPX Otilde Ydieresis -50
+KPX P A -92
+KPX P Aacute -92
+KPX P Abreve -92
+KPX P Acircumflex -92
+KPX P Adieresis -92
+KPX P Agrave -92
+KPX P Amacron -92
+KPX P Aogonek -92
+KPX P Aring -92
+KPX P Atilde -92
+KPX P a -15
+KPX P aacute -15
+KPX P abreve -15
+KPX P acircumflex -15
+KPX P adieresis -15
+KPX P agrave -15
+KPX P amacron -15
+KPX P aogonek -15
+KPX P aring -15
+KPX P atilde -15
+KPX P comma -111
+KPX P period -111
+KPX Q U -10
+KPX Q Uacute -10
+KPX Q Ucircumflex -10
+KPX Q Udieresis -10
+KPX Q Ugrave -10
+KPX Q Uhungarumlaut -10
+KPX Q Umacron -10
+KPX Q Uogonek -10
+KPX Q Uring -10
+KPX R O -40
+KPX R Oacute -40
+KPX R Ocircumflex -40
+KPX R Odieresis -40
+KPX R Ograve -40
+KPX R Ohungarumlaut -40
+KPX R Omacron -40
+KPX R Oslash -40
+KPX R Otilde -40
+KPX R T -60
+KPX R Tcaron -60
+KPX R Tcommaaccent -60
+KPX R U -40
+KPX R Uacute -40
+KPX R Ucircumflex -40
+KPX R Udieresis -40
+KPX R Ugrave -40
+KPX R Uhungarumlaut -40
+KPX R Umacron -40
+KPX R Uogonek -40
+KPX R Uring -40
+KPX R V -80
+KPX R W -55
+KPX R Y -65
+KPX R Yacute -65
+KPX R Ydieresis -65
+KPX Racute O -40
+KPX Racute Oacute -40
+KPX Racute Ocircumflex -40
+KPX Racute Odieresis -40
+KPX Racute Ograve -40
+KPX Racute Ohungarumlaut -40
+KPX Racute Omacron -40
+KPX Racute Oslash -40
+KPX Racute Otilde -40
+KPX Racute T -60
+KPX Racute Tcaron -60
+KPX Racute Tcommaaccent -60
+KPX Racute U -40
+KPX Racute Uacute -40
+KPX Racute Ucircumflex -40
+KPX Racute Udieresis -40
+KPX Racute Ugrave -40
+KPX Racute Uhungarumlaut -40
+KPX Racute Umacron -40
+KPX Racute Uogonek -40
+KPX Racute Uring -40
+KPX Racute V -80
+KPX Racute W -55
+KPX Racute Y -65
+KPX Racute Yacute -65
+KPX Racute Ydieresis -65
+KPX Rcaron O -40
+KPX Rcaron Oacute -40
+KPX Rcaron Ocircumflex -40
+KPX Rcaron Odieresis -40
+KPX Rcaron Ograve -40
+KPX Rcaron Ohungarumlaut -40
+KPX Rcaron Omacron -40
+KPX Rcaron Oslash -40
+KPX Rcaron Otilde -40
+KPX Rcaron T -60
+KPX Rcaron Tcaron -60
+KPX Rcaron Tcommaaccent -60
+KPX Rcaron U -40
+KPX Rcaron Uacute -40
+KPX Rcaron Ucircumflex -40
+KPX Rcaron Udieresis -40
+KPX Rcaron Ugrave -40
+KPX Rcaron Uhungarumlaut -40
+KPX Rcaron Umacron -40
+KPX Rcaron Uogonek -40
+KPX Rcaron Uring -40
+KPX Rcaron V -80
+KPX Rcaron W -55
+KPX Rcaron Y -65
+KPX Rcaron Yacute -65
+KPX Rcaron Ydieresis -65
+KPX Rcommaaccent O -40
+KPX Rcommaaccent Oacute -40
+KPX Rcommaaccent Ocircumflex -40
+KPX Rcommaaccent Odieresis -40
+KPX Rcommaaccent Ograve -40
+KPX Rcommaaccent Ohungarumlaut -40
+KPX Rcommaaccent Omacron -40
+KPX Rcommaaccent Oslash -40
+KPX Rcommaaccent Otilde -40
+KPX Rcommaaccent T -60
+KPX Rcommaaccent Tcaron -60
+KPX Rcommaaccent Tcommaaccent -60
+KPX Rcommaaccent U -40
+KPX Rcommaaccent Uacute -40
+KPX Rcommaaccent Ucircumflex -40
+KPX Rcommaaccent Udieresis -40
+KPX Rcommaaccent Ugrave -40
+KPX Rcommaaccent Uhungarumlaut -40
+KPX Rcommaaccent Umacron -40
+KPX Rcommaaccent Uogonek -40
+KPX Rcommaaccent Uring -40
+KPX Rcommaaccent V -80
+KPX Rcommaaccent W -55
+KPX Rcommaaccent Y -65
+KPX Rcommaaccent Yacute -65
+KPX Rcommaaccent Ydieresis -65
+KPX T A -93
+KPX T Aacute -93
+KPX T Abreve -93
+KPX T Acircumflex -93
+KPX T Adieresis -93
+KPX T Agrave -93
+KPX T Amacron -93
+KPX T Aogonek -93
+KPX T Aring -93
+KPX T Atilde -93
+KPX T O -18
+KPX T Oacute -18
+KPX T Ocircumflex -18
+KPX T Odieresis -18
+KPX T Ograve -18
+KPX T Ohungarumlaut -18
+KPX T Omacron -18
+KPX T Oslash -18
+KPX T Otilde -18
+KPX T a -80
+KPX T aacute -80
+KPX T abreve -80
+KPX T acircumflex -80
+KPX T adieresis -40
+KPX T agrave -40
+KPX T amacron -40
+KPX T aogonek -80
+KPX T aring -80
+KPX T atilde -40
+KPX T colon -50
+KPX T comma -74
+KPX T e -70
+KPX T eacute -70
+KPX T ecaron -70
+KPX T ecircumflex -70
+KPX T edieresis -30
+KPX T edotaccent -70
+KPX T egrave -70
+KPX T emacron -30
+KPX T eogonek -70
+KPX T hyphen -92
+KPX T i -35
+KPX T iacute -35
+KPX T iogonek -35
+KPX T o -80
+KPX T oacute -80
+KPX T ocircumflex -80
+KPX T odieresis -80
+KPX T ograve -80
+KPX T ohungarumlaut -80
+KPX T omacron -80
+KPX T oslash -80
+KPX T otilde -80
+KPX T period -74
+KPX T r -35
+KPX T racute -35
+KPX T rcaron -35
+KPX T rcommaaccent -35
+KPX T semicolon -55
+KPX T u -45
+KPX T uacute -45
+KPX T ucircumflex -45
+KPX T udieresis -45
+KPX T ugrave -45
+KPX T uhungarumlaut -45
+KPX T umacron -45
+KPX T uogonek -45
+KPX T uring -45
+KPX T w -80
+KPX T y -80
+KPX T yacute -80
+KPX T ydieresis -80
+KPX Tcaron A -93
+KPX Tcaron Aacute -93
+KPX Tcaron Abreve -93
+KPX Tcaron Acircumflex -93
+KPX Tcaron Adieresis -93
+KPX Tcaron Agrave -93
+KPX Tcaron Amacron -93
+KPX Tcaron Aogonek -93
+KPX Tcaron Aring -93
+KPX Tcaron Atilde -93
+KPX Tcaron O -18
+KPX Tcaron Oacute -18
+KPX Tcaron Ocircumflex -18
+KPX Tcaron Odieresis -18
+KPX Tcaron Ograve -18
+KPX Tcaron Ohungarumlaut -18
+KPX Tcaron Omacron -18
+KPX Tcaron Oslash -18
+KPX Tcaron Otilde -18
+KPX Tcaron a -80
+KPX Tcaron aacute -80
+KPX Tcaron abreve -80
+KPX Tcaron acircumflex -80
+KPX Tcaron adieresis -40
+KPX Tcaron agrave -40
+KPX Tcaron amacron -40
+KPX Tcaron aogonek -80
+KPX Tcaron aring -80
+KPX Tcaron atilde -40
+KPX Tcaron colon -50
+KPX Tcaron comma -74
+KPX Tcaron e -70
+KPX Tcaron eacute -70
+KPX Tcaron ecaron -70
+KPX Tcaron ecircumflex -30
+KPX Tcaron edieresis -30
+KPX Tcaron edotaccent -70
+KPX Tcaron egrave -70
+KPX Tcaron emacron -30
+KPX Tcaron eogonek -70
+KPX Tcaron hyphen -92
+KPX Tcaron i -35
+KPX Tcaron iacute -35
+KPX Tcaron iogonek -35
+KPX Tcaron o -80
+KPX Tcaron oacute -80
+KPX Tcaron ocircumflex -80
+KPX Tcaron odieresis -80
+KPX Tcaron ograve -80
+KPX Tcaron ohungarumlaut -80
+KPX Tcaron omacron -80
+KPX Tcaron oslash -80
+KPX Tcaron otilde -80
+KPX Tcaron period -74
+KPX Tcaron r -35
+KPX Tcaron racute -35
+KPX Tcaron rcaron -35
+KPX Tcaron rcommaaccent -35
+KPX Tcaron semicolon -55
+KPX Tcaron u -45
+KPX Tcaron uacute -45
+KPX Tcaron ucircumflex -45
+KPX Tcaron udieresis -45
+KPX Tcaron ugrave -45
+KPX Tcaron uhungarumlaut -45
+KPX Tcaron umacron -45
+KPX Tcaron uogonek -45
+KPX Tcaron uring -45
+KPX Tcaron w -80
+KPX Tcaron y -80
+KPX Tcaron yacute -80
+KPX Tcaron ydieresis -80
+KPX Tcommaaccent A -93
+KPX Tcommaaccent Aacute -93
+KPX Tcommaaccent Abreve -93
+KPX Tcommaaccent Acircumflex -93
+KPX Tcommaaccent Adieresis -93
+KPX Tcommaaccent Agrave -93
+KPX Tcommaaccent Amacron -93
+KPX Tcommaaccent Aogonek -93
+KPX Tcommaaccent Aring -93
+KPX Tcommaaccent Atilde -93
+KPX Tcommaaccent O -18
+KPX Tcommaaccent Oacute -18
+KPX Tcommaaccent Ocircumflex -18
+KPX Tcommaaccent Odieresis -18
+KPX Tcommaaccent Ograve -18
+KPX Tcommaaccent Ohungarumlaut -18
+KPX Tcommaaccent Omacron -18
+KPX Tcommaaccent Oslash -18
+KPX Tcommaaccent Otilde -18
+KPX Tcommaaccent a -80
+KPX Tcommaaccent aacute -80
+KPX Tcommaaccent abreve -80
+KPX Tcommaaccent acircumflex -80
+KPX Tcommaaccent adieresis -40
+KPX Tcommaaccent agrave -40
+KPX Tcommaaccent amacron -40
+KPX Tcommaaccent aogonek -80
+KPX Tcommaaccent aring -80
+KPX Tcommaaccent atilde -40
+KPX Tcommaaccent colon -50
+KPX Tcommaaccent comma -74
+KPX Tcommaaccent e -70
+KPX Tcommaaccent eacute -70
+KPX Tcommaaccent ecaron -70
+KPX Tcommaaccent ecircumflex -30
+KPX Tcommaaccent edieresis -30
+KPX Tcommaaccent edotaccent -70
+KPX Tcommaaccent egrave -30
+KPX Tcommaaccent emacron -70
+KPX Tcommaaccent eogonek -70
+KPX Tcommaaccent hyphen -92
+KPX Tcommaaccent i -35
+KPX Tcommaaccent iacute -35
+KPX Tcommaaccent iogonek -35
+KPX Tcommaaccent o -80
+KPX Tcommaaccent oacute -80
+KPX Tcommaaccent ocircumflex -80
+KPX Tcommaaccent odieresis -80
+KPX Tcommaaccent ograve -80
+KPX Tcommaaccent ohungarumlaut -80
+KPX Tcommaaccent omacron -80
+KPX Tcommaaccent oslash -80
+KPX Tcommaaccent otilde -80
+KPX Tcommaaccent period -74
+KPX Tcommaaccent r -35
+KPX Tcommaaccent racute -35
+KPX Tcommaaccent rcaron -35
+KPX Tcommaaccent rcommaaccent -35
+KPX Tcommaaccent semicolon -55
+KPX Tcommaaccent u -45
+KPX Tcommaaccent uacute -45
+KPX Tcommaaccent ucircumflex -45
+KPX Tcommaaccent udieresis -45
+KPX Tcommaaccent ugrave -45
+KPX Tcommaaccent uhungarumlaut -45
+KPX Tcommaaccent umacron -45
+KPX Tcommaaccent uogonek -45
+KPX Tcommaaccent uring -45
+KPX Tcommaaccent w -80
+KPX Tcommaaccent y -80
+KPX Tcommaaccent yacute -80
+KPX Tcommaaccent ydieresis -80
+KPX U A -40
+KPX U Aacute -40
+KPX U Abreve -40
+KPX U Acircumflex -40
+KPX U Adieresis -40
+KPX U Agrave -40
+KPX U Amacron -40
+KPX U Aogonek -40
+KPX U Aring -40
+KPX U Atilde -40
+KPX Uacute A -40
+KPX Uacute Aacute -40
+KPX Uacute Abreve -40
+KPX Uacute Acircumflex -40
+KPX Uacute Adieresis -40
+KPX Uacute Agrave -40
+KPX Uacute Amacron -40
+KPX Uacute Aogonek -40
+KPX Uacute Aring -40
+KPX Uacute Atilde -40
+KPX Ucircumflex A -40
+KPX Ucircumflex Aacute -40
+KPX Ucircumflex Abreve -40
+KPX Ucircumflex Acircumflex -40
+KPX Ucircumflex Adieresis -40
+KPX Ucircumflex Agrave -40
+KPX Ucircumflex Amacron -40
+KPX Ucircumflex Aogonek -40
+KPX Ucircumflex Aring -40
+KPX Ucircumflex Atilde -40
+KPX Udieresis A -40
+KPX Udieresis Aacute -40
+KPX Udieresis Abreve -40
+KPX Udieresis Acircumflex -40
+KPX Udieresis Adieresis -40
+KPX Udieresis Agrave -40
+KPX Udieresis Amacron -40
+KPX Udieresis Aogonek -40
+KPX Udieresis Aring -40
+KPX Udieresis Atilde -40
+KPX Ugrave A -40
+KPX Ugrave Aacute -40
+KPX Ugrave Abreve -40
+KPX Ugrave Acircumflex -40
+KPX Ugrave Adieresis -40
+KPX Ugrave Agrave -40
+KPX Ugrave Amacron -40
+KPX Ugrave Aogonek -40
+KPX Ugrave Aring -40
+KPX Ugrave Atilde -40
+KPX Uhungarumlaut A -40
+KPX Uhungarumlaut Aacute -40
+KPX Uhungarumlaut Abreve -40
+KPX Uhungarumlaut Acircumflex -40
+KPX Uhungarumlaut Adieresis -40
+KPX Uhungarumlaut Agrave -40
+KPX Uhungarumlaut Amacron -40
+KPX Uhungarumlaut Aogonek -40
+KPX Uhungarumlaut Aring -40
+KPX Uhungarumlaut Atilde -40
+KPX Umacron A -40
+KPX Umacron Aacute -40
+KPX Umacron Abreve -40
+KPX Umacron Acircumflex -40
+KPX Umacron Adieresis -40
+KPX Umacron Agrave -40
+KPX Umacron Amacron -40
+KPX Umacron Aogonek -40
+KPX Umacron Aring -40
+KPX Umacron Atilde -40
+KPX Uogonek A -40
+KPX Uogonek Aacute -40
+KPX Uogonek Abreve -40
+KPX Uogonek Acircumflex -40
+KPX Uogonek Adieresis -40
+KPX Uogonek Agrave -40
+KPX Uogonek Amacron -40
+KPX Uogonek Aogonek -40
+KPX Uogonek Aring -40
+KPX Uogonek Atilde -40
+KPX Uring A -40
+KPX Uring Aacute -40
+KPX Uring Abreve -40
+KPX Uring Acircumflex -40
+KPX Uring Adieresis -40
+KPX Uring Agrave -40
+KPX Uring Amacron -40
+KPX Uring Aogonek -40
+KPX Uring Aring -40
+KPX Uring Atilde -40
+KPX V A -135
+KPX V Aacute -135
+KPX V Abreve -135
+KPX V Acircumflex -135
+KPX V Adieresis -135
+KPX V Agrave -135
+KPX V Amacron -135
+KPX V Aogonek -135
+KPX V Aring -135
+KPX V Atilde -135
+KPX V G -15
+KPX V Gbreve -15
+KPX V Gcommaaccent -15
+KPX V O -40
+KPX V Oacute -40
+KPX V Ocircumflex -40
+KPX V Odieresis -40
+KPX V Ograve -40
+KPX V Ohungarumlaut -40
+KPX V Omacron -40
+KPX V Oslash -40
+KPX V Otilde -40
+KPX V a -111
+KPX V aacute -111
+KPX V abreve -111
+KPX V acircumflex -71
+KPX V adieresis -71
+KPX V agrave -71
+KPX V amacron -71
+KPX V aogonek -111
+KPX V aring -111
+KPX V atilde -71
+KPX V colon -74
+KPX V comma -129
+KPX V e -111
+KPX V eacute -111
+KPX V ecaron -71
+KPX V ecircumflex -71
+KPX V edieresis -71
+KPX V edotaccent -111
+KPX V egrave -71
+KPX V emacron -71
+KPX V eogonek -111
+KPX V hyphen -100
+KPX V i -60
+KPX V iacute -60
+KPX V icircumflex -20
+KPX V idieresis -20
+KPX V igrave -20
+KPX V imacron -20
+KPX V iogonek -60
+KPX V o -129
+KPX V oacute -129
+KPX V ocircumflex -129
+KPX V odieresis -89
+KPX V ograve -89
+KPX V ohungarumlaut -129
+KPX V omacron -89
+KPX V oslash -129
+KPX V otilde -89
+KPX V period -129
+KPX V semicolon -74
+KPX V u -75
+KPX V uacute -75
+KPX V ucircumflex -75
+KPX V udieresis -75
+KPX V ugrave -75
+KPX V uhungarumlaut -75
+KPX V umacron -75
+KPX V uogonek -75
+KPX V uring -75
+KPX W A -120
+KPX W Aacute -120
+KPX W Abreve -120
+KPX W Acircumflex -120
+KPX W Adieresis -120
+KPX W Agrave -120
+KPX W Amacron -120
+KPX W Aogonek -120
+KPX W Aring -120
+KPX W Atilde -120
+KPX W O -10
+KPX W Oacute -10
+KPX W Ocircumflex -10
+KPX W Odieresis -10
+KPX W Ograve -10
+KPX W Ohungarumlaut -10
+KPX W Omacron -10
+KPX W Oslash -10
+KPX W Otilde -10
+KPX W a -80
+KPX W aacute -80
+KPX W abreve -80
+KPX W acircumflex -80
+KPX W adieresis -80
+KPX W agrave -80
+KPX W amacron -80
+KPX W aogonek -80
+KPX W aring -80
+KPX W atilde -80
+KPX W colon -37
+KPX W comma -92
+KPX W e -80
+KPX W eacute -80
+KPX W ecaron -80
+KPX W ecircumflex -80
+KPX W edieresis -40
+KPX W edotaccent -80
+KPX W egrave -40
+KPX W emacron -40
+KPX W eogonek -80
+KPX W hyphen -65
+KPX W i -40
+KPX W iacute -40
+KPX W iogonek -40
+KPX W o -80
+KPX W oacute -80
+KPX W ocircumflex -80
+KPX W odieresis -80
+KPX W ograve -80
+KPX W ohungarumlaut -80
+KPX W omacron -80
+KPX W oslash -80
+KPX W otilde -80
+KPX W period -92
+KPX W semicolon -37
+KPX W u -50
+KPX W uacute -50
+KPX W ucircumflex -50
+KPX W udieresis -50
+KPX W ugrave -50
+KPX W uhungarumlaut -50
+KPX W umacron -50
+KPX W uogonek -50
+KPX W uring -50
+KPX W y -73
+KPX W yacute -73
+KPX W ydieresis -73
+KPX Y A -120
+KPX Y Aacute -120
+KPX Y Abreve -120
+KPX Y Acircumflex -120
+KPX Y Adieresis -120
+KPX Y Agrave -120
+KPX Y Amacron -120
+KPX Y Aogonek -120
+KPX Y Aring -120
+KPX Y Atilde -120
+KPX Y O -30
+KPX Y Oacute -30
+KPX Y Ocircumflex -30
+KPX Y Odieresis -30
+KPX Y Ograve -30
+KPX Y Ohungarumlaut -30
+KPX Y Omacron -30
+KPX Y Oslash -30
+KPX Y Otilde -30
+KPX Y a -100
+KPX Y aacute -100
+KPX Y abreve -100
+KPX Y acircumflex -100
+KPX Y adieresis -60
+KPX Y agrave -60
+KPX Y amacron -60
+KPX Y aogonek -100
+KPX Y aring -100
+KPX Y atilde -60
+KPX Y colon -92
+KPX Y comma -129
+KPX Y e -100
+KPX Y eacute -100
+KPX Y ecaron -100
+KPX Y ecircumflex -100
+KPX Y edieresis -60
+KPX Y edotaccent -100
+KPX Y egrave -60
+KPX Y emacron -60
+KPX Y eogonek -100
+KPX Y hyphen -111
+KPX Y i -55
+KPX Y iacute -55
+KPX Y iogonek -55
+KPX Y o -110
+KPX Y oacute -110
+KPX Y ocircumflex -110
+KPX Y odieresis -70
+KPX Y ograve -70
+KPX Y ohungarumlaut -110
+KPX Y omacron -70
+KPX Y oslash -110
+KPX Y otilde -70
+KPX Y period -129
+KPX Y semicolon -92
+KPX Y u -111
+KPX Y uacute -111
+KPX Y ucircumflex -111
+KPX Y udieresis -71
+KPX Y ugrave -71
+KPX Y uhungarumlaut -111
+KPX Y umacron -71
+KPX Y uogonek -111
+KPX Y uring -111
+KPX Yacute A -120
+KPX Yacute Aacute -120
+KPX Yacute Abreve -120
+KPX Yacute Acircumflex -120
+KPX Yacute Adieresis -120
+KPX Yacute Agrave -120
+KPX Yacute Amacron -120
+KPX Yacute Aogonek -120
+KPX Yacute Aring -120
+KPX Yacute Atilde -120
+KPX Yacute O -30
+KPX Yacute Oacute -30
+KPX Yacute Ocircumflex -30
+KPX Yacute Odieresis -30
+KPX Yacute Ograve -30
+KPX Yacute Ohungarumlaut -30
+KPX Yacute Omacron -30
+KPX Yacute Oslash -30
+KPX Yacute Otilde -30
+KPX Yacute a -100
+KPX Yacute aacute -100
+KPX Yacute abreve -100
+KPX Yacute acircumflex -100
+KPX Yacute adieresis -60
+KPX Yacute agrave -60
+KPX Yacute amacron -60
+KPX Yacute aogonek -100
+KPX Yacute aring -100
+KPX Yacute atilde -60
+KPX Yacute colon -92
+KPX Yacute comma -129
+KPX Yacute e -100
+KPX Yacute eacute -100
+KPX Yacute ecaron -100
+KPX Yacute ecircumflex -100
+KPX Yacute edieresis -60
+KPX Yacute edotaccent -100
+KPX Yacute egrave -60
+KPX Yacute emacron -60
+KPX Yacute eogonek -100
+KPX Yacute hyphen -111
+KPX Yacute i -55
+KPX Yacute iacute -55
+KPX Yacute iogonek -55
+KPX Yacute o -110
+KPX Yacute oacute -110
+KPX Yacute ocircumflex -110
+KPX Yacute odieresis -70
+KPX Yacute ograve -70
+KPX Yacute ohungarumlaut -110
+KPX Yacute omacron -70
+KPX Yacute oslash -110
+KPX Yacute otilde -70
+KPX Yacute period -129
+KPX Yacute semicolon -92
+KPX Yacute u -111
+KPX Yacute uacute -111
+KPX Yacute ucircumflex -111
+KPX Yacute udieresis -71
+KPX Yacute ugrave -71
+KPX Yacute uhungarumlaut -111
+KPX Yacute umacron -71
+KPX Yacute uogonek -111
+KPX Yacute uring -111
+KPX Ydieresis A -120
+KPX Ydieresis Aacute -120
+KPX Ydieresis Abreve -120
+KPX Ydieresis Acircumflex -120
+KPX Ydieresis Adieresis -120
+KPX Ydieresis Agrave -120
+KPX Ydieresis Amacron -120
+KPX Ydieresis Aogonek -120
+KPX Ydieresis Aring -120
+KPX Ydieresis Atilde -120
+KPX Ydieresis O -30
+KPX Ydieresis Oacute -30
+KPX Ydieresis Ocircumflex -30
+KPX Ydieresis Odieresis -30
+KPX Ydieresis Ograve -30
+KPX Ydieresis Ohungarumlaut -30
+KPX Ydieresis Omacron -30
+KPX Ydieresis Oslash -30
+KPX Ydieresis Otilde -30
+KPX Ydieresis a -100
+KPX Ydieresis aacute -100
+KPX Ydieresis abreve -100
+KPX Ydieresis acircumflex -100
+KPX Ydieresis adieresis -60
+KPX Ydieresis agrave -60
+KPX Ydieresis amacron -60
+KPX Ydieresis aogonek -100
+KPX Ydieresis aring -100
+KPX Ydieresis atilde -100
+KPX Ydieresis colon -92
+KPX Ydieresis comma -129
+KPX Ydieresis e -100
+KPX Ydieresis eacute -100
+KPX Ydieresis ecaron -100
+KPX Ydieresis ecircumflex -100
+KPX Ydieresis edieresis -60
+KPX Ydieresis edotaccent -100
+KPX Ydieresis egrave -60
+KPX Ydieresis emacron -60
+KPX Ydieresis eogonek -100
+KPX Ydieresis hyphen -111
+KPX Ydieresis i -55
+KPX Ydieresis iacute -55
+KPX Ydieresis iogonek -55
+KPX Ydieresis o -110
+KPX Ydieresis oacute -110
+KPX Ydieresis ocircumflex -110
+KPX Ydieresis odieresis -70
+KPX Ydieresis ograve -70
+KPX Ydieresis ohungarumlaut -110
+KPX Ydieresis omacron -70
+KPX Ydieresis oslash -110
+KPX Ydieresis otilde -70
+KPX Ydieresis period -129
+KPX Ydieresis semicolon -92
+KPX Ydieresis u -111
+KPX Ydieresis uacute -111
+KPX Ydieresis ucircumflex -111
+KPX Ydieresis udieresis -71
+KPX Ydieresis ugrave -71
+KPX Ydieresis uhungarumlaut -111
+KPX Ydieresis umacron -71
+KPX Ydieresis uogonek -111
+KPX Ydieresis uring -111
+KPX a v -20
+KPX a w -15
+KPX aacute v -20
+KPX aacute w -15
+KPX abreve v -20
+KPX abreve w -15
+KPX acircumflex v -20
+KPX acircumflex w -15
+KPX adieresis v -20
+KPX adieresis w -15
+KPX agrave v -20
+KPX agrave w -15
+KPX amacron v -20
+KPX amacron w -15
+KPX aogonek v -20
+KPX aogonek w -15
+KPX aring v -20
+KPX aring w -15
+KPX atilde v -20
+KPX atilde w -15
+KPX b period -40
+KPX b u -20
+KPX b uacute -20
+KPX b ucircumflex -20
+KPX b udieresis -20
+KPX b ugrave -20
+KPX b uhungarumlaut -20
+KPX b umacron -20
+KPX b uogonek -20
+KPX b uring -20
+KPX b v -15
+KPX c y -15
+KPX c yacute -15
+KPX c ydieresis -15
+KPX cacute y -15
+KPX cacute yacute -15
+KPX cacute ydieresis -15
+KPX ccaron y -15
+KPX ccaron yacute -15
+KPX ccaron ydieresis -15
+KPX ccedilla y -15
+KPX ccedilla yacute -15
+KPX ccedilla ydieresis -15
+KPX comma quotedblright -70
+KPX comma quoteright -70
+KPX e g -15
+KPX e gbreve -15
+KPX e gcommaaccent -15
+KPX e v -25
+KPX e w -25
+KPX e x -15
+KPX e y -15
+KPX e yacute -15
+KPX e ydieresis -15
+KPX eacute g -15
+KPX eacute gbreve -15
+KPX eacute gcommaaccent -15
+KPX eacute v -25
+KPX eacute w -25
+KPX eacute x -15
+KPX eacute y -15
+KPX eacute yacute -15
+KPX eacute ydieresis -15
+KPX ecaron g -15
+KPX ecaron gbreve -15
+KPX ecaron gcommaaccent -15
+KPX ecaron v -25
+KPX ecaron w -25
+KPX ecaron x -15
+KPX ecaron y -15
+KPX ecaron yacute -15
+KPX ecaron ydieresis -15
+KPX ecircumflex g -15
+KPX ecircumflex gbreve -15
+KPX ecircumflex gcommaaccent -15
+KPX ecircumflex v -25
+KPX ecircumflex w -25
+KPX ecircumflex x -15
+KPX ecircumflex y -15
+KPX ecircumflex yacute -15
+KPX ecircumflex ydieresis -15
+KPX edieresis g -15
+KPX edieresis gbreve -15
+KPX edieresis gcommaaccent -15
+KPX edieresis v -25
+KPX edieresis w -25
+KPX edieresis x -15
+KPX edieresis y -15
+KPX edieresis yacute -15
+KPX edieresis ydieresis -15
+KPX edotaccent g -15
+KPX edotaccent gbreve -15
+KPX edotaccent gcommaaccent -15
+KPX edotaccent v -25
+KPX edotaccent w -25
+KPX edotaccent x -15
+KPX edotaccent y -15
+KPX edotaccent yacute -15
+KPX edotaccent ydieresis -15
+KPX egrave g -15
+KPX egrave gbreve -15
+KPX egrave gcommaaccent -15
+KPX egrave v -25
+KPX egrave w -25
+KPX egrave x -15
+KPX egrave y -15
+KPX egrave yacute -15
+KPX egrave ydieresis -15
+KPX emacron g -15
+KPX emacron gbreve -15
+KPX emacron gcommaaccent -15
+KPX emacron v -25
+KPX emacron w -25
+KPX emacron x -15
+KPX emacron y -15
+KPX emacron yacute -15
+KPX emacron ydieresis -15
+KPX eogonek g -15
+KPX eogonek gbreve -15
+KPX eogonek gcommaaccent -15
+KPX eogonek v -25
+KPX eogonek w -25
+KPX eogonek x -15
+KPX eogonek y -15
+KPX eogonek yacute -15
+KPX eogonek ydieresis -15
+KPX f a -10
+KPX f aacute -10
+KPX f abreve -10
+KPX f acircumflex -10
+KPX f adieresis -10
+KPX f agrave -10
+KPX f amacron -10
+KPX f aogonek -10
+KPX f aring -10
+KPX f atilde -10
+KPX f dotlessi -50
+KPX f f -25
+KPX f i -20
+KPX f iacute -20
+KPX f quoteright 55
+KPX g a -5
+KPX g aacute -5
+KPX g abreve -5
+KPX g acircumflex -5
+KPX g adieresis -5
+KPX g agrave -5
+KPX g amacron -5
+KPX g aogonek -5
+KPX g aring -5
+KPX g atilde -5
+KPX gbreve a -5
+KPX gbreve aacute -5
+KPX gbreve abreve -5
+KPX gbreve acircumflex -5
+KPX gbreve adieresis -5
+KPX gbreve agrave -5
+KPX gbreve amacron -5
+KPX gbreve aogonek -5
+KPX gbreve aring -5
+KPX gbreve atilde -5
+KPX gcommaaccent a -5
+KPX gcommaaccent aacute -5
+KPX gcommaaccent abreve -5
+KPX gcommaaccent acircumflex -5
+KPX gcommaaccent adieresis -5
+KPX gcommaaccent agrave -5
+KPX gcommaaccent amacron -5
+KPX gcommaaccent aogonek -5
+KPX gcommaaccent aring -5
+KPX gcommaaccent atilde -5
+KPX h y -5
+KPX h yacute -5
+KPX h ydieresis -5
+KPX i v -25
+KPX iacute v -25
+KPX icircumflex v -25
+KPX idieresis v -25
+KPX igrave v -25
+KPX imacron v -25
+KPX iogonek v -25
+KPX k e -10
+KPX k eacute -10
+KPX k ecaron -10
+KPX k ecircumflex -10
+KPX k edieresis -10
+KPX k edotaccent -10
+KPX k egrave -10
+KPX k emacron -10
+KPX k eogonek -10
+KPX k o -10
+KPX k oacute -10
+KPX k ocircumflex -10
+KPX k odieresis -10
+KPX k ograve -10
+KPX k ohungarumlaut -10
+KPX k omacron -10
+KPX k oslash -10
+KPX k otilde -10
+KPX k y -15
+KPX k yacute -15
+KPX k ydieresis -15
+KPX kcommaaccent e -10
+KPX kcommaaccent eacute -10
+KPX kcommaaccent ecaron -10
+KPX kcommaaccent ecircumflex -10
+KPX kcommaaccent edieresis -10
+KPX kcommaaccent edotaccent -10
+KPX kcommaaccent egrave -10
+KPX kcommaaccent emacron -10
+KPX kcommaaccent eogonek -10
+KPX kcommaaccent o -10
+KPX kcommaaccent oacute -10
+KPX kcommaaccent ocircumflex -10
+KPX kcommaaccent odieresis -10
+KPX kcommaaccent ograve -10
+KPX kcommaaccent ohungarumlaut -10
+KPX kcommaaccent omacron -10
+KPX kcommaaccent oslash -10
+KPX kcommaaccent otilde -10
+KPX kcommaaccent y -15
+KPX kcommaaccent yacute -15
+KPX kcommaaccent ydieresis -15
+KPX l w -10
+KPX lacute w -10
+KPX lcommaaccent w -10
+KPX lslash w -10
+KPX n v -40
+KPX n y -15
+KPX n yacute -15
+KPX n ydieresis -15
+KPX nacute v -40
+KPX nacute y -15
+KPX nacute yacute -15
+KPX nacute ydieresis -15
+KPX ncaron v -40
+KPX ncaron y -15
+KPX ncaron yacute -15
+KPX ncaron ydieresis -15
+KPX ncommaaccent v -40
+KPX ncommaaccent y -15
+KPX ncommaaccent yacute -15
+KPX ncommaaccent ydieresis -15
+KPX ntilde v -40
+KPX ntilde y -15
+KPX ntilde yacute -15
+KPX ntilde ydieresis -15
+KPX o v -15
+KPX o w -25
+KPX o y -10
+KPX o yacute -10
+KPX o ydieresis -10
+KPX oacute v -15
+KPX oacute w -25
+KPX oacute y -10
+KPX oacute yacute -10
+KPX oacute ydieresis -10
+KPX ocircumflex v -15
+KPX ocircumflex w -25
+KPX ocircumflex y -10
+KPX ocircumflex yacute -10
+KPX ocircumflex ydieresis -10
+KPX odieresis v -15
+KPX odieresis w -25
+KPX odieresis y -10
+KPX odieresis yacute -10
+KPX odieresis ydieresis -10
+KPX ograve v -15
+KPX ograve w -25
+KPX ograve y -10
+KPX ograve yacute -10
+KPX ograve ydieresis -10
+KPX ohungarumlaut v -15
+KPX ohungarumlaut w -25
+KPX ohungarumlaut y -10
+KPX ohungarumlaut yacute -10
+KPX ohungarumlaut ydieresis -10
+KPX omacron v -15
+KPX omacron w -25
+KPX omacron y -10
+KPX omacron yacute -10
+KPX omacron ydieresis -10
+KPX oslash v -15
+KPX oslash w -25
+KPX oslash y -10
+KPX oslash yacute -10
+KPX oslash ydieresis -10
+KPX otilde v -15
+KPX otilde w -25
+KPX otilde y -10
+KPX otilde yacute -10
+KPX otilde ydieresis -10
+KPX p y -10
+KPX p yacute -10
+KPX p ydieresis -10
+KPX period quotedblright -70
+KPX period quoteright -70
+KPX quotedblleft A -80
+KPX quotedblleft Aacute -80
+KPX quotedblleft Abreve -80
+KPX quotedblleft Acircumflex -80
+KPX quotedblleft Adieresis -80
+KPX quotedblleft Agrave -80
+KPX quotedblleft Amacron -80
+KPX quotedblleft Aogonek -80
+KPX quotedblleft Aring -80
+KPX quotedblleft Atilde -80
+KPX quoteleft A -80
+KPX quoteleft Aacute -80
+KPX quoteleft Abreve -80
+KPX quoteleft Acircumflex -80
+KPX quoteleft Adieresis -80
+KPX quoteleft Agrave -80
+KPX quoteleft Amacron -80
+KPX quoteleft Aogonek -80
+KPX quoteleft Aring -80
+KPX quoteleft Atilde -80
+KPX quoteleft quoteleft -74
+KPX quoteright d -50
+KPX quoteright dcroat -50
+KPX quoteright l -10
+KPX quoteright lacute -10
+KPX quoteright lcommaaccent -10
+KPX quoteright lslash -10
+KPX quoteright quoteright -74
+KPX quoteright r -50
+KPX quoteright racute -50
+KPX quoteright rcaron -50
+KPX quoteright rcommaaccent -50
+KPX quoteright s -55
+KPX quoteright sacute -55
+KPX quoteright scaron -55
+KPX quoteright scedilla -55
+KPX quoteright scommaaccent -55
+KPX quoteright space -74
+KPX quoteright t -18
+KPX quoteright tcommaaccent -18
+KPX quoteright v -50
+KPX r comma -40
+KPX r g -18
+KPX r gbreve -18
+KPX r gcommaaccent -18
+KPX r hyphen -20
+KPX r period -55
+KPX racute comma -40
+KPX racute g -18
+KPX racute gbreve -18
+KPX racute gcommaaccent -18
+KPX racute hyphen -20
+KPX racute period -55
+KPX rcaron comma -40
+KPX rcaron g -18
+KPX rcaron gbreve -18
+KPX rcaron gcommaaccent -18
+KPX rcaron hyphen -20
+KPX rcaron period -55
+KPX rcommaaccent comma -40
+KPX rcommaaccent g -18
+KPX rcommaaccent gbreve -18
+KPX rcommaaccent gcommaaccent -18
+KPX rcommaaccent hyphen -20
+KPX rcommaaccent period -55
+KPX space A -55
+KPX space Aacute -55
+KPX space Abreve -55
+KPX space Acircumflex -55
+KPX space Adieresis -55
+KPX space Agrave -55
+KPX space Amacron -55
+KPX space Aogonek -55
+KPX space Aring -55
+KPX space Atilde -55
+KPX space T -18
+KPX space Tcaron -18
+KPX space Tcommaaccent -18
+KPX space V -50
+KPX space W -30
+KPX space Y -90
+KPX space Yacute -90
+KPX space Ydieresis -90
+KPX v a -25
+KPX v aacute -25
+KPX v abreve -25
+KPX v acircumflex -25
+KPX v adieresis -25
+KPX v agrave -25
+KPX v amacron -25
+KPX v aogonek -25
+KPX v aring -25
+KPX v atilde -25
+KPX v comma -65
+KPX v e -15
+KPX v eacute -15
+KPX v ecaron -15
+KPX v ecircumflex -15
+KPX v edieresis -15
+KPX v edotaccent -15
+KPX v egrave -15
+KPX v emacron -15
+KPX v eogonek -15
+KPX v o -20
+KPX v oacute -20
+KPX v ocircumflex -20
+KPX v odieresis -20
+KPX v ograve -20
+KPX v ohungarumlaut -20
+KPX v omacron -20
+KPX v oslash -20
+KPX v otilde -20
+KPX v period -65
+KPX w a -10
+KPX w aacute -10
+KPX w abreve -10
+KPX w acircumflex -10
+KPX w adieresis -10
+KPX w agrave -10
+KPX w amacron -10
+KPX w aogonek -10
+KPX w aring -10
+KPX w atilde -10
+KPX w comma -65
+KPX w o -10
+KPX w oacute -10
+KPX w ocircumflex -10
+KPX w odieresis -10
+KPX w ograve -10
+KPX w ohungarumlaut -10
+KPX w omacron -10
+KPX w oslash -10
+KPX w otilde -10
+KPX w period -65
+KPX x e -15
+KPX x eacute -15
+KPX x ecaron -15
+KPX x ecircumflex -15
+KPX x edieresis -15
+KPX x edotaccent -15
+KPX x egrave -15
+KPX x emacron -15
+KPX x eogonek -15
+KPX y comma -65
+KPX y period -65
+KPX yacute comma -65
+KPX yacute period -65
+KPX ydieresis comma -65
+KPX ydieresis period -65
+EndKernPairs
+EndKernData
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/php_Times-Roman.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/php_Times-Roman.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/php_Times-Roman.afm	(revision 2000)
@@ -0,0 +1,8548 @@
+$this->fonts[$font]=array (
+  'FontName' => 'Times-Roman',
+  'FullName' => 'Times Roman',
+  'FamilyName' => 'Times',
+  'Weight' => 'Roman',
+  'ItalicAngle' => '0',
+  'IsFixedPitch' => 'false',
+  'CharacterSet' => 'ExtendedRoman',
+  'FontBBox' => 
+  array (
+    0 => '-168',
+    1 => '-218',
+    2 => '1000',
+    3 => '898',
+  ),
+  'UnderlinePosition' => '-100',
+  'UnderlineThickness' => '50',
+  'Version' => '002.000',
+  'EncodingScheme' => 'AdobeStandardEncoding',
+  'CapHeight' => '662',
+  'XHeight' => '450',
+  'Ascender' => '683',
+  'Descender' => '-217',
+  'StdHW' => '28',
+  'StdVW' => '84',
+  'StartCharMetrics' => '315',
+  'C' => 
+  array (
+    32 => 
+    array (
+      'C' => '32',
+      'WX' => '250',
+      'N' => 'space',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '0',
+        2 => '0',
+        3 => '0',
+      ),
+    ),
+    'space' => 
+    array (
+      'C' => '32',
+      'WX' => '250',
+      'N' => 'space',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '0',
+        2 => '0',
+        3 => '0',
+      ),
+    ),
+    33 => 
+    array (
+      'C' => '33',
+      'WX' => '333',
+      'N' => 'exclam',
+      'B' => 
+      array (
+        0 => '130',
+        1 => '-9',
+        2 => '238',
+        3 => '676',
+      ),
+    ),
+    'exclam' => 
+    array (
+      'C' => '33',
+      'WX' => '333',
+      'N' => 'exclam',
+      'B' => 
+      array (
+        0 => '130',
+        1 => '-9',
+        2 => '238',
+        3 => '676',
+      ),
+    ),
+    34 => 
+    array (
+      'C' => '34',
+      'WX' => '408',
+      'N' => 'quotedbl',
+      'B' => 
+      array (
+        0 => '77',
+        1 => '431',
+        2 => '331',
+        3 => '676',
+      ),
+    ),
+    'quotedbl' => 
+    array (
+      'C' => '34',
+      'WX' => '408',
+      'N' => 'quotedbl',
+      'B' => 
+      array (
+        0 => '77',
+        1 => '431',
+        2 => '331',
+        3 => '676',
+      ),
+    ),
+    35 => 
+    array (
+      'C' => '35',
+      'WX' => '500',
+      'N' => 'numbersign',
+      'B' => 
+      array (
+        0 => '5',
+        1 => '0',
+        2 => '496',
+        3 => '662',
+      ),
+    ),
+    'numbersign' => 
+    array (
+      'C' => '35',
+      'WX' => '500',
+      'N' => 'numbersign',
+      'B' => 
+      array (
+        0 => '5',
+        1 => '0',
+        2 => '496',
+        3 => '662',
+      ),
+    ),
+    36 => 
+    array (
+      'C' => '36',
+      'WX' => '500',
+      'N' => 'dollar',
+      'B' => 
+      array (
+        0 => '44',
+        1 => '-87',
+        2 => '457',
+        3 => '727',
+      ),
+    ),
+    'dollar' => 
+    array (
+      'C' => '36',
+      'WX' => '500',
+      'N' => 'dollar',
+      'B' => 
+      array (
+        0 => '44',
+        1 => '-87',
+        2 => '457',
+        3 => '727',
+      ),
+    ),
+    37 => 
+    array (
+      'C' => '37',
+      'WX' => '833',
+      'N' => 'percent',
+      'B' => 
+      array (
+        0 => '61',
+        1 => '-13',
+        2 => '772',
+        3 => '676',
+      ),
+    ),
+    'percent' => 
+    array (
+      'C' => '37',
+      'WX' => '833',
+      'N' => 'percent',
+      'B' => 
+      array (
+        0 => '61',
+        1 => '-13',
+        2 => '772',
+        3 => '676',
+      ),
+    ),
+    38 => 
+    array (
+      'C' => '38',
+      'WX' => '778',
+      'N' => 'ampersand',
+      'B' => 
+      array (
+        0 => '42',
+        1 => '-13',
+        2 => '750',
+        3 => '676',
+      ),
+    ),
+    'ampersand' => 
+    array (
+      'C' => '38',
+      'WX' => '778',
+      'N' => 'ampersand',
+      'B' => 
+      array (
+        0 => '42',
+        1 => '-13',
+        2 => '750',
+        3 => '676',
+      ),
+    ),
+    39 => 
+    array (
+      'C' => '39',
+      'WX' => '333',
+      'N' => 'quoteright',
+      'B' => 
+      array (
+        0 => '79',
+        1 => '433',
+        2 => '218',
+        3 => '676',
+      ),
+    ),
+    'quoteright' => 
+    array (
+      'C' => '39',
+      'WX' => '333',
+      'N' => 'quoteright',
+      'B' => 
+      array (
+        0 => '79',
+        1 => '433',
+        2 => '218',
+        3 => '676',
+      ),
+    ),
+    40 => 
+    array (
+      'C' => '40',
+      'WX' => '333',
+      'N' => 'parenleft',
+      'B' => 
+      array (
+        0 => '48',
+        1 => '-177',
+        2 => '304',
+        3 => '676',
+      ),
+    ),
+    'parenleft' => 
+    array (
+      'C' => '40',
+      'WX' => '333',
+      'N' => 'parenleft',
+      'B' => 
+      array (
+        0 => '48',
+        1 => '-177',
+        2 => '304',
+        3 => '676',
+      ),
+    ),
+    41 => 
+    array (
+      'C' => '41',
+      'WX' => '333',
+      'N' => 'parenright',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-177',
+        2 => '285',
+        3 => '676',
+      ),
+    ),
+    'parenright' => 
+    array (
+      'C' => '41',
+      'WX' => '333',
+      'N' => 'parenright',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-177',
+        2 => '285',
+        3 => '676',
+      ),
+    ),
+    42 => 
+    array (
+      'C' => '42',
+      'WX' => '500',
+      'N' => 'asterisk',
+      'B' => 
+      array (
+        0 => '69',
+        1 => '265',
+        2 => '432',
+        3 => '676',
+      ),
+    ),
+    'asterisk' => 
+    array (
+      'C' => '42',
+      'WX' => '500',
+      'N' => 'asterisk',
+      'B' => 
+      array (
+        0 => '69',
+        1 => '265',
+        2 => '432',
+        3 => '676',
+      ),
+    ),
+    43 => 
+    array (
+      'C' => '43',
+      'WX' => '564',
+      'N' => 'plus',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '0',
+        2 => '534',
+        3 => '506',
+      ),
+    ),
+    'plus' => 
+    array (
+      'C' => '43',
+      'WX' => '564',
+      'N' => 'plus',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '0',
+        2 => '534',
+        3 => '506',
+      ),
+    ),
+    44 => 
+    array (
+      'C' => '44',
+      'WX' => '250',
+      'N' => 'comma',
+      'B' => 
+      array (
+        0 => '56',
+        1 => '-141',
+        2 => '195',
+        3 => '102',
+      ),
+    ),
+    'comma' => 
+    array (
+      'C' => '44',
+      'WX' => '250',
+      'N' => 'comma',
+      'B' => 
+      array (
+        0 => '56',
+        1 => '-141',
+        2 => '195',
+        3 => '102',
+      ),
+    ),
+    45 => 
+    array (
+      'C' => '45',
+      'WX' => '333',
+      'N' => 'hyphen',
+      'B' => 
+      array (
+        0 => '39',
+        1 => '194',
+        2 => '285',
+        3 => '257',
+      ),
+    ),
+    'hyphen' => 
+    array (
+      'C' => '45',
+      'WX' => '333',
+      'N' => 'hyphen',
+      'B' => 
+      array (
+        0 => '39',
+        1 => '194',
+        2 => '285',
+        3 => '257',
+      ),
+    ),
+    46 => 
+    array (
+      'C' => '46',
+      'WX' => '250',
+      'N' => 'period',
+      'B' => 
+      array (
+        0 => '70',
+        1 => '-11',
+        2 => '181',
+        3 => '100',
+      ),
+    ),
+    'period' => 
+    array (
+      'C' => '46',
+      'WX' => '250',
+      'N' => 'period',
+      'B' => 
+      array (
+        0 => '70',
+        1 => '-11',
+        2 => '181',
+        3 => '100',
+      ),
+    ),
+    47 => 
+    array (
+      'C' => '47',
+      'WX' => '278',
+      'N' => 'slash',
+      'B' => 
+      array (
+        0 => '-9',
+        1 => '-14',
+        2 => '287',
+        3 => '676',
+      ),
+    ),
+    'slash' => 
+    array (
+      'C' => '47',
+      'WX' => '278',
+      'N' => 'slash',
+      'B' => 
+      array (
+        0 => '-9',
+        1 => '-14',
+        2 => '287',
+        3 => '676',
+      ),
+    ),
+    48 => 
+    array (
+      'C' => '48',
+      'WX' => '500',
+      'N' => 'zero',
+      'B' => 
+      array (
+        0 => '24',
+        1 => '-14',
+        2 => '476',
+        3 => '676',
+      ),
+    ),
+    'zero' => 
+    array (
+      'C' => '48',
+      'WX' => '500',
+      'N' => 'zero',
+      'B' => 
+      array (
+        0 => '24',
+        1 => '-14',
+        2 => '476',
+        3 => '676',
+      ),
+    ),
+    49 => 
+    array (
+      'C' => '49',
+      'WX' => '500',
+      'N' => 'one',
+      'B' => 
+      array (
+        0 => '111',
+        1 => '0',
+        2 => '394',
+        3 => '676',
+      ),
+    ),
+    'one' => 
+    array (
+      'C' => '49',
+      'WX' => '500',
+      'N' => 'one',
+      'B' => 
+      array (
+        0 => '111',
+        1 => '0',
+        2 => '394',
+        3 => '676',
+      ),
+    ),
+    50 => 
+    array (
+      'C' => '50',
+      'WX' => '500',
+      'N' => 'two',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '0',
+        2 => '475',
+        3 => '676',
+      ),
+    ),
+    'two' => 
+    array (
+      'C' => '50',
+      'WX' => '500',
+      'N' => 'two',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '0',
+        2 => '475',
+        3 => '676',
+      ),
+    ),
+    51 => 
+    array (
+      'C' => '51',
+      'WX' => '500',
+      'N' => 'three',
+      'B' => 
+      array (
+        0 => '43',
+        1 => '-14',
+        2 => '431',
+        3 => '676',
+      ),
+    ),
+    'three' => 
+    array (
+      'C' => '51',
+      'WX' => '500',
+      'N' => 'three',
+      'B' => 
+      array (
+        0 => '43',
+        1 => '-14',
+        2 => '431',
+        3 => '676',
+      ),
+    ),
+    52 => 
+    array (
+      'C' => '52',
+      'WX' => '500',
+      'N' => 'four',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '472',
+        3 => '676',
+      ),
+    ),
+    'four' => 
+    array (
+      'C' => '52',
+      'WX' => '500',
+      'N' => 'four',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '472',
+        3 => '676',
+      ),
+    ),
+    53 => 
+    array (
+      'C' => '53',
+      'WX' => '500',
+      'N' => 'five',
+      'B' => 
+      array (
+        0 => '32',
+        1 => '-14',
+        2 => '438',
+        3 => '688',
+      ),
+    ),
+    'five' => 
+    array (
+      'C' => '53',
+      'WX' => '500',
+      'N' => 'five',
+      'B' => 
+      array (
+        0 => '32',
+        1 => '-14',
+        2 => '438',
+        3 => '688',
+      ),
+    ),
+    54 => 
+    array (
+      'C' => '54',
+      'WX' => '500',
+      'N' => 'six',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-14',
+        2 => '468',
+        3 => '684',
+      ),
+    ),
+    'six' => 
+    array (
+      'C' => '54',
+      'WX' => '500',
+      'N' => 'six',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-14',
+        2 => '468',
+        3 => '684',
+      ),
+    ),
+    55 => 
+    array (
+      'C' => '55',
+      'WX' => '500',
+      'N' => 'seven',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '-8',
+        2 => '449',
+        3 => '662',
+      ),
+    ),
+    'seven' => 
+    array (
+      'C' => '55',
+      'WX' => '500',
+      'N' => 'seven',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '-8',
+        2 => '449',
+        3 => '662',
+      ),
+    ),
+    56 => 
+    array (
+      'C' => '56',
+      'WX' => '500',
+      'N' => 'eight',
+      'B' => 
+      array (
+        0 => '56',
+        1 => '-14',
+        2 => '445',
+        3 => '676',
+      ),
+    ),
+    'eight' => 
+    array (
+      'C' => '56',
+      'WX' => '500',
+      'N' => 'eight',
+      'B' => 
+      array (
+        0 => '56',
+        1 => '-14',
+        2 => '445',
+        3 => '676',
+      ),
+    ),
+    57 => 
+    array (
+      'C' => '57',
+      'WX' => '500',
+      'N' => 'nine',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '-22',
+        2 => '459',
+        3 => '676',
+      ),
+    ),
+    'nine' => 
+    array (
+      'C' => '57',
+      'WX' => '500',
+      'N' => 'nine',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '-22',
+        2 => '459',
+        3 => '676',
+      ),
+    ),
+    58 => 
+    array (
+      'C' => '58',
+      'WX' => '278',
+      'N' => 'colon',
+      'B' => 
+      array (
+        0 => '81',
+        1 => '-11',
+        2 => '192',
+        3 => '459',
+      ),
+    ),
+    'colon' => 
+    array (
+      'C' => '58',
+      'WX' => '278',
+      'N' => 'colon',
+      'B' => 
+      array (
+        0 => '81',
+        1 => '-11',
+        2 => '192',
+        3 => '459',
+      ),
+    ),
+    59 => 
+    array (
+      'C' => '59',
+      'WX' => '278',
+      'N' => 'semicolon',
+      'B' => 
+      array (
+        0 => '80',
+        1 => '-141',
+        2 => '219',
+        3 => '459',
+      ),
+    ),
+    'semicolon' => 
+    array (
+      'C' => '59',
+      'WX' => '278',
+      'N' => 'semicolon',
+      'B' => 
+      array (
+        0 => '80',
+        1 => '-141',
+        2 => '219',
+        3 => '459',
+      ),
+    ),
+    60 => 
+    array (
+      'C' => '60',
+      'WX' => '564',
+      'N' => 'less',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-8',
+        2 => '536',
+        3 => '514',
+      ),
+    ),
+    'less' => 
+    array (
+      'C' => '60',
+      'WX' => '564',
+      'N' => 'less',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-8',
+        2 => '536',
+        3 => '514',
+      ),
+    ),
+    61 => 
+    array (
+      'C' => '61',
+      'WX' => '564',
+      'N' => 'equal',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '120',
+        2 => '534',
+        3 => '386',
+      ),
+    ),
+    'equal' => 
+    array (
+      'C' => '61',
+      'WX' => '564',
+      'N' => 'equal',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '120',
+        2 => '534',
+        3 => '386',
+      ),
+    ),
+    62 => 
+    array (
+      'C' => '62',
+      'WX' => '564',
+      'N' => 'greater',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-8',
+        2 => '536',
+        3 => '514',
+      ),
+    ),
+    'greater' => 
+    array (
+      'C' => '62',
+      'WX' => '564',
+      'N' => 'greater',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-8',
+        2 => '536',
+        3 => '514',
+      ),
+    ),
+    63 => 
+    array (
+      'C' => '63',
+      'WX' => '444',
+      'N' => 'question',
+      'B' => 
+      array (
+        0 => '68',
+        1 => '-8',
+        2 => '414',
+        3 => '676',
+      ),
+    ),
+    'question' => 
+    array (
+      'C' => '63',
+      'WX' => '444',
+      'N' => 'question',
+      'B' => 
+      array (
+        0 => '68',
+        1 => '-8',
+        2 => '414',
+        3 => '676',
+      ),
+    ),
+    64 => 
+    array (
+      'C' => '64',
+      'WX' => '921',
+      'N' => 'at',
+      'B' => 
+      array (
+        0 => '116',
+        1 => '-14',
+        2 => '809',
+        3 => '676',
+      ),
+    ),
+    'at' => 
+    array (
+      'C' => '64',
+      'WX' => '921',
+      'N' => 'at',
+      'B' => 
+      array (
+        0 => '116',
+        1 => '-14',
+        2 => '809',
+        3 => '676',
+      ),
+    ),
+    65 => 
+    array (
+      'C' => '65',
+      'WX' => '722',
+      'N' => 'A',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '706',
+        3 => '674',
+      ),
+    ),
+    'A' => 
+    array (
+      'C' => '65',
+      'WX' => '722',
+      'N' => 'A',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '706',
+        3 => '674',
+      ),
+    ),
+    66 => 
+    array (
+      'C' => '66',
+      'WX' => '667',
+      'N' => 'B',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '593',
+        3 => '662',
+      ),
+    ),
+    'B' => 
+    array (
+      'C' => '66',
+      'WX' => '667',
+      'N' => 'B',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '593',
+        3 => '662',
+      ),
+    ),
+    67 => 
+    array (
+      'C' => '67',
+      'WX' => '667',
+      'N' => 'C',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-14',
+        2 => '633',
+        3 => '676',
+      ),
+    ),
+    'C' => 
+    array (
+      'C' => '67',
+      'WX' => '667',
+      'N' => 'C',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-14',
+        2 => '633',
+        3 => '676',
+      ),
+    ),
+    68 => 
+    array (
+      'C' => '68',
+      'WX' => '722',
+      'N' => 'D',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '685',
+        3 => '662',
+      ),
+    ),
+    'D' => 
+    array (
+      'C' => '68',
+      'WX' => '722',
+      'N' => 'D',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '685',
+        3 => '662',
+      ),
+    ),
+    69 => 
+    array (
+      'C' => '69',
+      'WX' => '611',
+      'N' => 'E',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '597',
+        3 => '662',
+      ),
+    ),
+    'E' => 
+    array (
+      'C' => '69',
+      'WX' => '611',
+      'N' => 'E',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '597',
+        3 => '662',
+      ),
+    ),
+    70 => 
+    array (
+      'C' => '70',
+      'WX' => '556',
+      'N' => 'F',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '546',
+        3 => '662',
+      ),
+    ),
+    'F' => 
+    array (
+      'C' => '70',
+      'WX' => '556',
+      'N' => 'F',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '546',
+        3 => '662',
+      ),
+    ),
+    71 => 
+    array (
+      'C' => '71',
+      'WX' => '722',
+      'N' => 'G',
+      'B' => 
+      array (
+        0 => '32',
+        1 => '-14',
+        2 => '709',
+        3 => '676',
+      ),
+    ),
+    'G' => 
+    array (
+      'C' => '71',
+      'WX' => '722',
+      'N' => 'G',
+      'B' => 
+      array (
+        0 => '32',
+        1 => '-14',
+        2 => '709',
+        3 => '676',
+      ),
+    ),
+    72 => 
+    array (
+      'C' => '72',
+      'WX' => '722',
+      'N' => 'H',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '702',
+        3 => '662',
+      ),
+    ),
+    'H' => 
+    array (
+      'C' => '72',
+      'WX' => '722',
+      'N' => 'H',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '702',
+        3 => '662',
+      ),
+    ),
+    73 => 
+    array (
+      'C' => '73',
+      'WX' => '333',
+      'N' => 'I',
+      'B' => 
+      array (
+        0 => '18',
+        1 => '0',
+        2 => '315',
+        3 => '662',
+      ),
+    ),
+    'I' => 
+    array (
+      'C' => '73',
+      'WX' => '333',
+      'N' => 'I',
+      'B' => 
+      array (
+        0 => '18',
+        1 => '0',
+        2 => '315',
+        3 => '662',
+      ),
+    ),
+    74 => 
+    array (
+      'C' => '74',
+      'WX' => '389',
+      'N' => 'J',
+      'B' => 
+      array (
+        0 => '10',
+        1 => '-14',
+        2 => '370',
+        3 => '662',
+      ),
+    ),
+    'J' => 
+    array (
+      'C' => '74',
+      'WX' => '389',
+      'N' => 'J',
+      'B' => 
+      array (
+        0 => '10',
+        1 => '-14',
+        2 => '370',
+        3 => '662',
+      ),
+    ),
+    75 => 
+    array (
+      'C' => '75',
+      'WX' => '722',
+      'N' => 'K',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '0',
+        2 => '723',
+        3 => '662',
+      ),
+    ),
+    'K' => 
+    array (
+      'C' => '75',
+      'WX' => '722',
+      'N' => 'K',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '0',
+        2 => '723',
+        3 => '662',
+      ),
+    ),
+    76 => 
+    array (
+      'C' => '76',
+      'WX' => '611',
+      'N' => 'L',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '598',
+        3 => '662',
+      ),
+    ),
+    'L' => 
+    array (
+      'C' => '76',
+      'WX' => '611',
+      'N' => 'L',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '598',
+        3 => '662',
+      ),
+    ),
+    77 => 
+    array (
+      'C' => '77',
+      'WX' => '889',
+      'N' => 'M',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '863',
+        3 => '662',
+      ),
+    ),
+    'M' => 
+    array (
+      'C' => '77',
+      'WX' => '889',
+      'N' => 'M',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '863',
+        3 => '662',
+      ),
+    ),
+    78 => 
+    array (
+      'C' => '78',
+      'WX' => '722',
+      'N' => 'N',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '-11',
+        2 => '707',
+        3 => '662',
+      ),
+    ),
+    'N' => 
+    array (
+      'C' => '78',
+      'WX' => '722',
+      'N' => 'N',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '-11',
+        2 => '707',
+        3 => '662',
+      ),
+    ),
+    79 => 
+    array (
+      'C' => '79',
+      'WX' => '722',
+      'N' => 'O',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-14',
+        2 => '688',
+        3 => '676',
+      ),
+    ),
+    'O' => 
+    array (
+      'C' => '79',
+      'WX' => '722',
+      'N' => 'O',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-14',
+        2 => '688',
+        3 => '676',
+      ),
+    ),
+    80 => 
+    array (
+      'C' => '80',
+      'WX' => '556',
+      'N' => 'P',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '542',
+        3 => '662',
+      ),
+    ),
+    'P' => 
+    array (
+      'C' => '80',
+      'WX' => '556',
+      'N' => 'P',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '542',
+        3 => '662',
+      ),
+    ),
+    81 => 
+    array (
+      'C' => '81',
+      'WX' => '722',
+      'N' => 'Q',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-178',
+        2 => '701',
+        3 => '676',
+      ),
+    ),
+    'Q' => 
+    array (
+      'C' => '81',
+      'WX' => '722',
+      'N' => 'Q',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-178',
+        2 => '701',
+        3 => '676',
+      ),
+    ),
+    82 => 
+    array (
+      'C' => '82',
+      'WX' => '667',
+      'N' => 'R',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '659',
+        3 => '662',
+      ),
+    ),
+    'R' => 
+    array (
+      'C' => '82',
+      'WX' => '667',
+      'N' => 'R',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '659',
+        3 => '662',
+      ),
+    ),
+    83 => 
+    array (
+      'C' => '83',
+      'WX' => '556',
+      'N' => 'S',
+      'B' => 
+      array (
+        0 => '42',
+        1 => '-14',
+        2 => '491',
+        3 => '676',
+      ),
+    ),
+    'S' => 
+    array (
+      'C' => '83',
+      'WX' => '556',
+      'N' => 'S',
+      'B' => 
+      array (
+        0 => '42',
+        1 => '-14',
+        2 => '491',
+        3 => '676',
+      ),
+    ),
+    84 => 
+    array (
+      'C' => '84',
+      'WX' => '611',
+      'N' => 'T',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '593',
+        3 => '662',
+      ),
+    ),
+    'T' => 
+    array (
+      'C' => '84',
+      'WX' => '611',
+      'N' => 'T',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '593',
+        3 => '662',
+      ),
+    ),
+    85 => 
+    array (
+      'C' => '85',
+      'WX' => '722',
+      'N' => 'U',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-14',
+        2 => '705',
+        3 => '662',
+      ),
+    ),
+    'U' => 
+    array (
+      'C' => '85',
+      'WX' => '722',
+      'N' => 'U',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-14',
+        2 => '705',
+        3 => '662',
+      ),
+    ),
+    86 => 
+    array (
+      'C' => '86',
+      'WX' => '722',
+      'N' => 'V',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-11',
+        2 => '697',
+        3 => '662',
+      ),
+    ),
+    'V' => 
+    array (
+      'C' => '86',
+      'WX' => '722',
+      'N' => 'V',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-11',
+        2 => '697',
+        3 => '662',
+      ),
+    ),
+    87 => 
+    array (
+      'C' => '87',
+      'WX' => '944',
+      'N' => 'W',
+      'B' => 
+      array (
+        0 => '5',
+        1 => '-11',
+        2 => '932',
+        3 => '662',
+      ),
+    ),
+    'W' => 
+    array (
+      'C' => '87',
+      'WX' => '944',
+      'N' => 'W',
+      'B' => 
+      array (
+        0 => '5',
+        1 => '-11',
+        2 => '932',
+        3 => '662',
+      ),
+    ),
+    88 => 
+    array (
+      'C' => '88',
+      'WX' => '722',
+      'N' => 'X',
+      'B' => 
+      array (
+        0 => '10',
+        1 => '0',
+        2 => '704',
+        3 => '662',
+      ),
+    ),
+    'X' => 
+    array (
+      'C' => '88',
+      'WX' => '722',
+      'N' => 'X',
+      'B' => 
+      array (
+        0 => '10',
+        1 => '0',
+        2 => '704',
+        3 => '662',
+      ),
+    ),
+    89 => 
+    array (
+      'C' => '89',
+      'WX' => '722',
+      'N' => 'Y',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '0',
+        2 => '703',
+        3 => '662',
+      ),
+    ),
+    'Y' => 
+    array (
+      'C' => '89',
+      'WX' => '722',
+      'N' => 'Y',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '0',
+        2 => '703',
+        3 => '662',
+      ),
+    ),
+    90 => 
+    array (
+      'C' => '90',
+      'WX' => '611',
+      'N' => 'Z',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '597',
+        3 => '662',
+      ),
+    ),
+    'Z' => 
+    array (
+      'C' => '90',
+      'WX' => '611',
+      'N' => 'Z',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '597',
+        3 => '662',
+      ),
+    ),
+    91 => 
+    array (
+      'C' => '91',
+      'WX' => '333',
+      'N' => 'bracketleft',
+      'B' => 
+      array (
+        0 => '88',
+        1 => '-156',
+        2 => '299',
+        3 => '662',
+      ),
+    ),
+    'bracketleft' => 
+    array (
+      'C' => '91',
+      'WX' => '333',
+      'N' => 'bracketleft',
+      'B' => 
+      array (
+        0 => '88',
+        1 => '-156',
+        2 => '299',
+        3 => '662',
+      ),
+    ),
+    92 => 
+    array (
+      'C' => '92',
+      'WX' => '278',
+      'N' => 'backslash',
+      'B' => 
+      array (
+        0 => '-9',
+        1 => '-14',
+        2 => '287',
+        3 => '676',
+      ),
+    ),
+    'backslash' => 
+    array (
+      'C' => '92',
+      'WX' => '278',
+      'N' => 'backslash',
+      'B' => 
+      array (
+        0 => '-9',
+        1 => '-14',
+        2 => '287',
+        3 => '676',
+      ),
+    ),
+    93 => 
+    array (
+      'C' => '93',
+      'WX' => '333',
+      'N' => 'bracketright',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-156',
+        2 => '245',
+        3 => '662',
+      ),
+    ),
+    'bracketright' => 
+    array (
+      'C' => '93',
+      'WX' => '333',
+      'N' => 'bracketright',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-156',
+        2 => '245',
+        3 => '662',
+      ),
+    ),
+    94 => 
+    array (
+      'C' => '94',
+      'WX' => '469',
+      'N' => 'asciicircum',
+      'B' => 
+      array (
+        0 => '24',
+        1 => '297',
+        2 => '446',
+        3 => '662',
+      ),
+    ),
+    'asciicircum' => 
+    array (
+      'C' => '94',
+      'WX' => '469',
+      'N' => 'asciicircum',
+      'B' => 
+      array (
+        0 => '24',
+        1 => '297',
+        2 => '446',
+        3 => '662',
+      ),
+    ),
+    95 => 
+    array (
+      'C' => '95',
+      'WX' => '500',
+      'N' => 'underscore',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '-125',
+        2 => '500',
+        3 => '-75',
+      ),
+    ),
+    'underscore' => 
+    array (
+      'C' => '95',
+      'WX' => '500',
+      'N' => 'underscore',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '-125',
+        2 => '500',
+        3 => '-75',
+      ),
+    ),
+    96 => 
+    array (
+      'C' => '96',
+      'WX' => '333',
+      'N' => 'quoteleft',
+      'B' => 
+      array (
+        0 => '115',
+        1 => '433',
+        2 => '254',
+        3 => '676',
+      ),
+    ),
+    'quoteleft' => 
+    array (
+      'C' => '96',
+      'WX' => '333',
+      'N' => 'quoteleft',
+      'B' => 
+      array (
+        0 => '115',
+        1 => '433',
+        2 => '254',
+        3 => '676',
+      ),
+    ),
+    97 => 
+    array (
+      'C' => '97',
+      'WX' => '444',
+      'N' => 'a',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-10',
+        2 => '442',
+        3 => '460',
+      ),
+    ),
+    'a' => 
+    array (
+      'C' => '97',
+      'WX' => '444',
+      'N' => 'a',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-10',
+        2 => '442',
+        3 => '460',
+      ),
+    ),
+    98 => 
+    array (
+      'C' => '98',
+      'WX' => '500',
+      'N' => 'b',
+      'B' => 
+      array (
+        0 => '3',
+        1 => '-10',
+        2 => '468',
+        3 => '683',
+      ),
+    ),
+    'b' => 
+    array (
+      'C' => '98',
+      'WX' => '500',
+      'N' => 'b',
+      'B' => 
+      array (
+        0 => '3',
+        1 => '-10',
+        2 => '468',
+        3 => '683',
+      ),
+    ),
+    99 => 
+    array (
+      'C' => '99',
+      'WX' => '444',
+      'N' => 'c',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-10',
+        2 => '412',
+        3 => '460',
+      ),
+    ),
+    'c' => 
+    array (
+      'C' => '99',
+      'WX' => '444',
+      'N' => 'c',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-10',
+        2 => '412',
+        3 => '460',
+      ),
+    ),
+    100 => 
+    array (
+      'C' => '100',
+      'WX' => '500',
+      'N' => 'd',
+      'B' => 
+      array (
+        0 => '27',
+        1 => '-10',
+        2 => '491',
+        3 => '683',
+      ),
+    ),
+    'd' => 
+    array (
+      'C' => '100',
+      'WX' => '500',
+      'N' => 'd',
+      'B' => 
+      array (
+        0 => '27',
+        1 => '-10',
+        2 => '491',
+        3 => '683',
+      ),
+    ),
+    101 => 
+    array (
+      'C' => '101',
+      'WX' => '444',
+      'N' => 'e',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-10',
+        2 => '424',
+        3 => '460',
+      ),
+    ),
+    'e' => 
+    array (
+      'C' => '101',
+      'WX' => '444',
+      'N' => 'e',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-10',
+        2 => '424',
+        3 => '460',
+      ),
+    ),
+    102 => 
+    array (
+      'C' => '102',
+      'WX' => '333',
+      'N' => 'f',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '0',
+        2 => '383',
+        3 => '683',
+      ),
+      'L' => 
+      array (
+        0 => 'l',
+        1 => 'fl',
+      ),
+    ),
+    'f' => 
+    array (
+      'C' => '102',
+      'WX' => '333',
+      'N' => 'f',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '0',
+        2 => '383',
+        3 => '683',
+      ),
+      'L' => 
+      array (
+        0 => 'l',
+        1 => 'fl',
+      ),
+    ),
+    103 => 
+    array (
+      'C' => '103',
+      'WX' => '500',
+      'N' => 'g',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-218',
+        2 => '470',
+        3 => '460',
+      ),
+    ),
+    'g' => 
+    array (
+      'C' => '103',
+      'WX' => '500',
+      'N' => 'g',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-218',
+        2 => '470',
+        3 => '460',
+      ),
+    ),
+    104 => 
+    array (
+      'C' => '104',
+      'WX' => '500',
+      'N' => 'h',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '487',
+        3 => '683',
+      ),
+    ),
+    'h' => 
+    array (
+      'C' => '104',
+      'WX' => '500',
+      'N' => 'h',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '487',
+        3 => '683',
+      ),
+    ),
+    105 => 
+    array (
+      'C' => '105',
+      'WX' => '278',
+      'N' => 'i',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '253',
+        3 => '683',
+      ),
+    ),
+    'i' => 
+    array (
+      'C' => '105',
+      'WX' => '278',
+      'N' => 'i',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '253',
+        3 => '683',
+      ),
+    ),
+    106 => 
+    array (
+      'C' => '106',
+      'WX' => '278',
+      'N' => 'j',
+      'B' => 
+      array (
+        0 => '-70',
+        1 => '-218',
+        2 => '194',
+        3 => '683',
+      ),
+    ),
+    'j' => 
+    array (
+      'C' => '106',
+      'WX' => '278',
+      'N' => 'j',
+      'B' => 
+      array (
+        0 => '-70',
+        1 => '-218',
+        2 => '194',
+        3 => '683',
+      ),
+    ),
+    107 => 
+    array (
+      'C' => '107',
+      'WX' => '500',
+      'N' => 'k',
+      'B' => 
+      array (
+        0 => '7',
+        1 => '0',
+        2 => '505',
+        3 => '683',
+      ),
+    ),
+    'k' => 
+    array (
+      'C' => '107',
+      'WX' => '500',
+      'N' => 'k',
+      'B' => 
+      array (
+        0 => '7',
+        1 => '0',
+        2 => '505',
+        3 => '683',
+      ),
+    ),
+    108 => 
+    array (
+      'C' => '108',
+      'WX' => '278',
+      'N' => 'l',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '257',
+        3 => '683',
+      ),
+    ),
+    'l' => 
+    array (
+      'C' => '108',
+      'WX' => '278',
+      'N' => 'l',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '257',
+        3 => '683',
+      ),
+    ),
+    109 => 
+    array (
+      'C' => '109',
+      'WX' => '778',
+      'N' => 'm',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '775',
+        3 => '460',
+      ),
+    ),
+    'm' => 
+    array (
+      'C' => '109',
+      'WX' => '778',
+      'N' => 'm',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '775',
+        3 => '460',
+      ),
+    ),
+    110 => 
+    array (
+      'C' => '110',
+      'WX' => '500',
+      'N' => 'n',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '485',
+        3 => '460',
+      ),
+    ),
+    'n' => 
+    array (
+      'C' => '110',
+      'WX' => '500',
+      'N' => 'n',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '485',
+        3 => '460',
+      ),
+    ),
+    111 => 
+    array (
+      'C' => '111',
+      'WX' => '500',
+      'N' => 'o',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-10',
+        2 => '470',
+        3 => '460',
+      ),
+    ),
+    'o' => 
+    array (
+      'C' => '111',
+      'WX' => '500',
+      'N' => 'o',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-10',
+        2 => '470',
+        3 => '460',
+      ),
+    ),
+    112 => 
+    array (
+      'C' => '112',
+      'WX' => '500',
+      'N' => 'p',
+      'B' => 
+      array (
+        0 => '5',
+        1 => '-217',
+        2 => '470',
+        3 => '460',
+      ),
+    ),
+    'p' => 
+    array (
+      'C' => '112',
+      'WX' => '500',
+      'N' => 'p',
+      'B' => 
+      array (
+        0 => '5',
+        1 => '-217',
+        2 => '470',
+        3 => '460',
+      ),
+    ),
+    113 => 
+    array (
+      'C' => '113',
+      'WX' => '500',
+      'N' => 'q',
+      'B' => 
+      array (
+        0 => '24',
+        1 => '-217',
+        2 => '488',
+        3 => '460',
+      ),
+    ),
+    'q' => 
+    array (
+      'C' => '113',
+      'WX' => '500',
+      'N' => 'q',
+      'B' => 
+      array (
+        0 => '24',
+        1 => '-217',
+        2 => '488',
+        3 => '460',
+      ),
+    ),
+    114 => 
+    array (
+      'C' => '114',
+      'WX' => '333',
+      'N' => 'r',
+      'B' => 
+      array (
+        0 => '5',
+        1 => '0',
+        2 => '335',
+        3 => '460',
+      ),
+    ),
+    'r' => 
+    array (
+      'C' => '114',
+      'WX' => '333',
+      'N' => 'r',
+      'B' => 
+      array (
+        0 => '5',
+        1 => '0',
+        2 => '335',
+        3 => '460',
+      ),
+    ),
+    115 => 
+    array (
+      'C' => '115',
+      'WX' => '389',
+      'N' => 's',
+      'B' => 
+      array (
+        0 => '51',
+        1 => '-10',
+        2 => '348',
+        3 => '460',
+      ),
+    ),
+    's' => 
+    array (
+      'C' => '115',
+      'WX' => '389',
+      'N' => 's',
+      'B' => 
+      array (
+        0 => '51',
+        1 => '-10',
+        2 => '348',
+        3 => '460',
+      ),
+    ),
+    116 => 
+    array (
+      'C' => '116',
+      'WX' => '278',
+      'N' => 't',
+      'B' => 
+      array (
+        0 => '13',
+        1 => '-10',
+        2 => '279',
+        3 => '579',
+      ),
+    ),
+    't' => 
+    array (
+      'C' => '116',
+      'WX' => '278',
+      'N' => 't',
+      'B' => 
+      array (
+        0 => '13',
+        1 => '-10',
+        2 => '279',
+        3 => '579',
+      ),
+    ),
+    117 => 
+    array (
+      'C' => '117',
+      'WX' => '500',
+      'N' => 'u',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '-10',
+        2 => '479',
+        3 => '450',
+      ),
+    ),
+    'u' => 
+    array (
+      'C' => '117',
+      'WX' => '500',
+      'N' => 'u',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '-10',
+        2 => '479',
+        3 => '450',
+      ),
+    ),
+    118 => 
+    array (
+      'C' => '118',
+      'WX' => '500',
+      'N' => 'v',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '-14',
+        2 => '477',
+        3 => '450',
+      ),
+    ),
+    'v' => 
+    array (
+      'C' => '118',
+      'WX' => '500',
+      'N' => 'v',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '-14',
+        2 => '477',
+        3 => '450',
+      ),
+    ),
+    119 => 
+    array (
+      'C' => '119',
+      'WX' => '722',
+      'N' => 'w',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '-14',
+        2 => '694',
+        3 => '450',
+      ),
+    ),
+    'w' => 
+    array (
+      'C' => '119',
+      'WX' => '722',
+      'N' => 'w',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '-14',
+        2 => '694',
+        3 => '450',
+      ),
+    ),
+    120 => 
+    array (
+      'C' => '120',
+      'WX' => '500',
+      'N' => 'x',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '479',
+        3 => '450',
+      ),
+    ),
+    'x' => 
+    array (
+      'C' => '120',
+      'WX' => '500',
+      'N' => 'x',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '479',
+        3 => '450',
+      ),
+    ),
+    121 => 
+    array (
+      'C' => '121',
+      'WX' => '500',
+      'N' => 'y',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-218',
+        2 => '475',
+        3 => '450',
+      ),
+    ),
+    'y' => 
+    array (
+      'C' => '121',
+      'WX' => '500',
+      'N' => 'y',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-218',
+        2 => '475',
+        3 => '450',
+      ),
+    ),
+    122 => 
+    array (
+      'C' => '122',
+      'WX' => '444',
+      'N' => 'z',
+      'B' => 
+      array (
+        0 => '27',
+        1 => '0',
+        2 => '418',
+        3 => '450',
+      ),
+    ),
+    'z' => 
+    array (
+      'C' => '122',
+      'WX' => '444',
+      'N' => 'z',
+      'B' => 
+      array (
+        0 => '27',
+        1 => '0',
+        2 => '418',
+        3 => '450',
+      ),
+    ),
+    123 => 
+    array (
+      'C' => '123',
+      'WX' => '480',
+      'N' => 'braceleft',
+      'B' => 
+      array (
+        0 => '100',
+        1 => '-181',
+        2 => '350',
+        3 => '680',
+      ),
+    ),
+    'braceleft' => 
+    array (
+      'C' => '123',
+      'WX' => '480',
+      'N' => 'braceleft',
+      'B' => 
+      array (
+        0 => '100',
+        1 => '-181',
+        2 => '350',
+        3 => '680',
+      ),
+    ),
+    124 => 
+    array (
+      'C' => '124',
+      'WX' => '200',
+      'N' => 'bar',
+      'B' => 
+      array (
+        0 => '67',
+        1 => '-218',
+        2 => '133',
+        3 => '782',
+      ),
+    ),
+    'bar' => 
+    array (
+      'C' => '124',
+      'WX' => '200',
+      'N' => 'bar',
+      'B' => 
+      array (
+        0 => '67',
+        1 => '-218',
+        2 => '133',
+        3 => '782',
+      ),
+    ),
+    125 => 
+    array (
+      'C' => '125',
+      'WX' => '480',
+      'N' => 'braceright',
+      'B' => 
+      array (
+        0 => '130',
+        1 => '-181',
+        2 => '380',
+        3 => '680',
+      ),
+    ),
+    'braceright' => 
+    array (
+      'C' => '125',
+      'WX' => '480',
+      'N' => 'braceright',
+      'B' => 
+      array (
+        0 => '130',
+        1 => '-181',
+        2 => '380',
+        3 => '680',
+      ),
+    ),
+    126 => 
+    array (
+      'C' => '126',
+      'WX' => '541',
+      'N' => 'asciitilde',
+      'B' => 
+      array (
+        0 => '40',
+        1 => '183',
+        2 => '502',
+        3 => '323',
+      ),
+    ),
+    'asciitilde' => 
+    array (
+      'C' => '126',
+      'WX' => '541',
+      'N' => 'asciitilde',
+      'B' => 
+      array (
+        0 => '40',
+        1 => '183',
+        2 => '502',
+        3 => '323',
+      ),
+    ),
+    161 => 
+    array (
+      'C' => '161',
+      'WX' => '333',
+      'N' => 'exclamdown',
+      'B' => 
+      array (
+        0 => '97',
+        1 => '-218',
+        2 => '205',
+        3 => '467',
+      ),
+    ),
+    'exclamdown' => 
+    array (
+      'C' => '161',
+      'WX' => '333',
+      'N' => 'exclamdown',
+      'B' => 
+      array (
+        0 => '97',
+        1 => '-218',
+        2 => '205',
+        3 => '467',
+      ),
+    ),
+    162 => 
+    array (
+      'C' => '162',
+      'WX' => '500',
+      'N' => 'cent',
+      'B' => 
+      array (
+        0 => '53',
+        1 => '-138',
+        2 => '448',
+        3 => '579',
+      ),
+    ),
+    'cent' => 
+    array (
+      'C' => '162',
+      'WX' => '500',
+      'N' => 'cent',
+      'B' => 
+      array (
+        0 => '53',
+        1 => '-138',
+        2 => '448',
+        3 => '579',
+      ),
+    ),
+    163 => 
+    array (
+      'C' => '163',
+      'WX' => '500',
+      'N' => 'sterling',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '-8',
+        2 => '490',
+        3 => '676',
+      ),
+    ),
+    'sterling' => 
+    array (
+      'C' => '163',
+      'WX' => '500',
+      'N' => 'sterling',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '-8',
+        2 => '490',
+        3 => '676',
+      ),
+    ),
+    164 => 
+    array (
+      'C' => '164',
+      'WX' => '167',
+      'N' => 'fraction',
+      'B' => 
+      array (
+        0 => '-168',
+        1 => '-14',
+        2 => '331',
+        3 => '676',
+      ),
+    ),
+    'fraction' => 
+    array (
+      'C' => '164',
+      'WX' => '167',
+      'N' => 'fraction',
+      'B' => 
+      array (
+        0 => '-168',
+        1 => '-14',
+        2 => '331',
+        3 => '676',
+      ),
+    ),
+    165 => 
+    array (
+      'C' => '165',
+      'WX' => '500',
+      'N' => 'yen',
+      'B' => 
+      array (
+        0 => '-53',
+        1 => '0',
+        2 => '512',
+        3 => '662',
+      ),
+    ),
+    'yen' => 
+    array (
+      'C' => '165',
+      'WX' => '500',
+      'N' => 'yen',
+      'B' => 
+      array (
+        0 => '-53',
+        1 => '0',
+        2 => '512',
+        3 => '662',
+      ),
+    ),
+    166 => 
+    array (
+      'C' => '166',
+      'WX' => '500',
+      'N' => 'florin',
+      'B' => 
+      array (
+        0 => '7',
+        1 => '-189',
+        2 => '490',
+        3 => '676',
+      ),
+    ),
+    'florin' => 
+    array (
+      'C' => '166',
+      'WX' => '500',
+      'N' => 'florin',
+      'B' => 
+      array (
+        0 => '7',
+        1 => '-189',
+        2 => '490',
+        3 => '676',
+      ),
+    ),
+    167 => 
+    array (
+      'C' => '167',
+      'WX' => '500',
+      'N' => 'section',
+      'B' => 
+      array (
+        0 => '70',
+        1 => '-148',
+        2 => '426',
+        3 => '676',
+      ),
+    ),
+    'section' => 
+    array (
+      'C' => '167',
+      'WX' => '500',
+      'N' => 'section',
+      'B' => 
+      array (
+        0 => '70',
+        1 => '-148',
+        2 => '426',
+        3 => '676',
+      ),
+    ),
+    168 => 
+    array (
+      'C' => '168',
+      'WX' => '500',
+      'N' => 'currency',
+      'B' => 
+      array (
+        0 => '-22',
+        1 => '58',
+        2 => '522',
+        3 => '602',
+      ),
+    ),
+    'currency' => 
+    array (
+      'C' => '168',
+      'WX' => '500',
+      'N' => 'currency',
+      'B' => 
+      array (
+        0 => '-22',
+        1 => '58',
+        2 => '522',
+        3 => '602',
+      ),
+    ),
+    169 => 
+    array (
+      'C' => '169',
+      'WX' => '180',
+      'N' => 'quotesingle',
+      'B' => 
+      array (
+        0 => '48',
+        1 => '431',
+        2 => '133',
+        3 => '676',
+      ),
+    ),
+    'quotesingle' => 
+    array (
+      'C' => '169',
+      'WX' => '180',
+      'N' => 'quotesingle',
+      'B' => 
+      array (
+        0 => '48',
+        1 => '431',
+        2 => '133',
+        3 => '676',
+      ),
+    ),
+    170 => 
+    array (
+      'C' => '170',
+      'WX' => '444',
+      'N' => 'quotedblleft',
+      'B' => 
+      array (
+        0 => '43',
+        1 => '433',
+        2 => '414',
+        3 => '676',
+      ),
+    ),
+    'quotedblleft' => 
+    array (
+      'C' => '170',
+      'WX' => '444',
+      'N' => 'quotedblleft',
+      'B' => 
+      array (
+        0 => '43',
+        1 => '433',
+        2 => '414',
+        3 => '676',
+      ),
+    ),
+    171 => 
+    array (
+      'C' => '171',
+      'WX' => '500',
+      'N' => 'guillemotleft',
+      'B' => 
+      array (
+        0 => '42',
+        1 => '33',
+        2 => '456',
+        3 => '416',
+      ),
+    ),
+    'guillemotleft' => 
+    array (
+      'C' => '171',
+      'WX' => '500',
+      'N' => 'guillemotleft',
+      'B' => 
+      array (
+        0 => '42',
+        1 => '33',
+        2 => '456',
+        3 => '416',
+      ),
+    ),
+    172 => 
+    array (
+      'C' => '172',
+      'WX' => '333',
+      'N' => 'guilsinglleft',
+      'B' => 
+      array (
+        0 => '63',
+        1 => '33',
+        2 => '285',
+        3 => '416',
+      ),
+    ),
+    'guilsinglleft' => 
+    array (
+      'C' => '172',
+      'WX' => '333',
+      'N' => 'guilsinglleft',
+      'B' => 
+      array (
+        0 => '63',
+        1 => '33',
+        2 => '285',
+        3 => '416',
+      ),
+    ),
+    173 => 
+    array (
+      'C' => '173',
+      'WX' => '333',
+      'N' => 'guilsinglright',
+      'B' => 
+      array (
+        0 => '48',
+        1 => '33',
+        2 => '270',
+        3 => '416',
+      ),
+    ),
+    'guilsinglright' => 
+    array (
+      'C' => '173',
+      'WX' => '333',
+      'N' => 'guilsinglright',
+      'B' => 
+      array (
+        0 => '48',
+        1 => '33',
+        2 => '270',
+        3 => '416',
+      ),
+    ),
+    174 => 
+    array (
+      'C' => '174',
+      'WX' => '556',
+      'N' => 'fi',
+      'B' => 
+      array (
+        0 => '31',
+        1 => '0',
+        2 => '521',
+        3 => '683',
+      ),
+    ),
+    'fi' => 
+    array (
+      'C' => '174',
+      'WX' => '556',
+      'N' => 'fi',
+      'B' => 
+      array (
+        0 => '31',
+        1 => '0',
+        2 => '521',
+        3 => '683',
+      ),
+    ),
+    175 => 
+    array (
+      'C' => '175',
+      'WX' => '556',
+      'N' => 'fl',
+      'B' => 
+      array (
+        0 => '32',
+        1 => '0',
+        2 => '521',
+        3 => '683',
+      ),
+    ),
+    'fl' => 
+    array (
+      'C' => '175',
+      'WX' => '556',
+      'N' => 'fl',
+      'B' => 
+      array (
+        0 => '32',
+        1 => '0',
+        2 => '521',
+        3 => '683',
+      ),
+    ),
+    177 => 
+    array (
+      'C' => '177',
+      'WX' => '500',
+      'N' => 'endash',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '201',
+        2 => '500',
+        3 => '250',
+      ),
+    ),
+    'endash' => 
+    array (
+      'C' => '177',
+      'WX' => '500',
+      'N' => 'endash',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '201',
+        2 => '500',
+        3 => '250',
+      ),
+    ),
+    178 => 
+    array (
+      'C' => '178',
+      'WX' => '500',
+      'N' => 'dagger',
+      'B' => 
+      array (
+        0 => '59',
+        1 => '-149',
+        2 => '442',
+        3 => '676',
+      ),
+    ),
+    'dagger' => 
+    array (
+      'C' => '178',
+      'WX' => '500',
+      'N' => 'dagger',
+      'B' => 
+      array (
+        0 => '59',
+        1 => '-149',
+        2 => '442',
+        3 => '676',
+      ),
+    ),
+    179 => 
+    array (
+      'C' => '179',
+      'WX' => '500',
+      'N' => 'daggerdbl',
+      'B' => 
+      array (
+        0 => '58',
+        1 => '-153',
+        2 => '442',
+        3 => '676',
+      ),
+    ),
+    'daggerdbl' => 
+    array (
+      'C' => '179',
+      'WX' => '500',
+      'N' => 'daggerdbl',
+      'B' => 
+      array (
+        0 => '58',
+        1 => '-153',
+        2 => '442',
+        3 => '676',
+      ),
+    ),
+    180 => 
+    array (
+      'C' => '180',
+      'WX' => '250',
+      'N' => 'periodcentered',
+      'B' => 
+      array (
+        0 => '70',
+        1 => '199',
+        2 => '181',
+        3 => '310',
+      ),
+    ),
+    'periodcentered' => 
+    array (
+      'C' => '180',
+      'WX' => '250',
+      'N' => 'periodcentered',
+      'B' => 
+      array (
+        0 => '70',
+        1 => '199',
+        2 => '181',
+        3 => '310',
+      ),
+    ),
+    182 => 
+    array (
+      'C' => '182',
+      'WX' => '453',
+      'N' => 'paragraph',
+      'B' => 
+      array (
+        0 => '-22',
+        1 => '-154',
+        2 => '450',
+        3 => '662',
+      ),
+    ),
+    'paragraph' => 
+    array (
+      'C' => '182',
+      'WX' => '453',
+      'N' => 'paragraph',
+      'B' => 
+      array (
+        0 => '-22',
+        1 => '-154',
+        2 => '450',
+        3 => '662',
+      ),
+    ),
+    183 => 
+    array (
+      'C' => '183',
+      'WX' => '350',
+      'N' => 'bullet',
+      'B' => 
+      array (
+        0 => '40',
+        1 => '196',
+        2 => '310',
+        3 => '466',
+      ),
+    ),
+    'bullet' => 
+    array (
+      'C' => '183',
+      'WX' => '350',
+      'N' => 'bullet',
+      'B' => 
+      array (
+        0 => '40',
+        1 => '196',
+        2 => '310',
+        3 => '466',
+      ),
+    ),
+    184 => 
+    array (
+      'C' => '184',
+      'WX' => '333',
+      'N' => 'quotesinglbase',
+      'B' => 
+      array (
+        0 => '79',
+        1 => '-141',
+        2 => '218',
+        3 => '102',
+      ),
+    ),
+    'quotesinglbase' => 
+    array (
+      'C' => '184',
+      'WX' => '333',
+      'N' => 'quotesinglbase',
+      'B' => 
+      array (
+        0 => '79',
+        1 => '-141',
+        2 => '218',
+        3 => '102',
+      ),
+    ),
+    185 => 
+    array (
+      'C' => '185',
+      'WX' => '444',
+      'N' => 'quotedblbase',
+      'B' => 
+      array (
+        0 => '45',
+        1 => '-141',
+        2 => '416',
+        3 => '102',
+      ),
+    ),
+    'quotedblbase' => 
+    array (
+      'C' => '185',
+      'WX' => '444',
+      'N' => 'quotedblbase',
+      'B' => 
+      array (
+        0 => '45',
+        1 => '-141',
+        2 => '416',
+        3 => '102',
+      ),
+    ),
+    186 => 
+    array (
+      'C' => '186',
+      'WX' => '444',
+      'N' => 'quotedblright',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '433',
+        2 => '401',
+        3 => '676',
+      ),
+    ),
+    'quotedblright' => 
+    array (
+      'C' => '186',
+      'WX' => '444',
+      'N' => 'quotedblright',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '433',
+        2 => '401',
+        3 => '676',
+      ),
+    ),
+    187 => 
+    array (
+      'C' => '187',
+      'WX' => '500',
+      'N' => 'guillemotright',
+      'B' => 
+      array (
+        0 => '44',
+        1 => '33',
+        2 => '458',
+        3 => '416',
+      ),
+    ),
+    'guillemotright' => 
+    array (
+      'C' => '187',
+      'WX' => '500',
+      'N' => 'guillemotright',
+      'B' => 
+      array (
+        0 => '44',
+        1 => '33',
+        2 => '458',
+        3 => '416',
+      ),
+    ),
+    188 => 
+    array (
+      'C' => '188',
+      'WX' => '1000',
+      'N' => 'ellipsis',
+      'B' => 
+      array (
+        0 => '111',
+        1 => '-11',
+        2 => '888',
+        3 => '100',
+      ),
+    ),
+    'ellipsis' => 
+    array (
+      'C' => '188',
+      'WX' => '1000',
+      'N' => 'ellipsis',
+      'B' => 
+      array (
+        0 => '111',
+        1 => '-11',
+        2 => '888',
+        3 => '100',
+      ),
+    ),
+    189 => 
+    array (
+      'C' => '189',
+      'WX' => '1000',
+      'N' => 'perthousand',
+      'B' => 
+      array (
+        0 => '7',
+        1 => '-19',
+        2 => '994',
+        3 => '706',
+      ),
+    ),
+    'perthousand' => 
+    array (
+      'C' => '189',
+      'WX' => '1000',
+      'N' => 'perthousand',
+      'B' => 
+      array (
+        0 => '7',
+        1 => '-19',
+        2 => '994',
+        3 => '706',
+      ),
+    ),
+    191 => 
+    array (
+      'C' => '191',
+      'WX' => '444',
+      'N' => 'questiondown',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '-218',
+        2 => '376',
+        3 => '466',
+      ),
+    ),
+    'questiondown' => 
+    array (
+      'C' => '191',
+      'WX' => '444',
+      'N' => 'questiondown',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '-218',
+        2 => '376',
+        3 => '466',
+      ),
+    ),
+    193 => 
+    array (
+      'C' => '193',
+      'WX' => '333',
+      'N' => 'grave',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '507',
+        2 => '242',
+        3 => '678',
+      ),
+    ),
+    'grave' => 
+    array (
+      'C' => '193',
+      'WX' => '333',
+      'N' => 'grave',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '507',
+        2 => '242',
+        3 => '678',
+      ),
+    ),
+    194 => 
+    array (
+      'C' => '194',
+      'WX' => '333',
+      'N' => 'acute',
+      'B' => 
+      array (
+        0 => '93',
+        1 => '507',
+        2 => '317',
+        3 => '678',
+      ),
+    ),
+    'acute' => 
+    array (
+      'C' => '194',
+      'WX' => '333',
+      'N' => 'acute',
+      'B' => 
+      array (
+        0 => '93',
+        1 => '507',
+        2 => '317',
+        3 => '678',
+      ),
+    ),
+    195 => 
+    array (
+      'C' => '195',
+      'WX' => '333',
+      'N' => 'circumflex',
+      'B' => 
+      array (
+        0 => '11',
+        1 => '507',
+        2 => '322',
+        3 => '674',
+      ),
+    ),
+    'circumflex' => 
+    array (
+      'C' => '195',
+      'WX' => '333',
+      'N' => 'circumflex',
+      'B' => 
+      array (
+        0 => '11',
+        1 => '507',
+        2 => '322',
+        3 => '674',
+      ),
+    ),
+    196 => 
+    array (
+      'C' => '196',
+      'WX' => '333',
+      'N' => 'tilde',
+      'B' => 
+      array (
+        0 => '1',
+        1 => '532',
+        2 => '331',
+        3 => '638',
+      ),
+    ),
+    'tilde' => 
+    array (
+      'C' => '196',
+      'WX' => '333',
+      'N' => 'tilde',
+      'B' => 
+      array (
+        0 => '1',
+        1 => '532',
+        2 => '331',
+        3 => '638',
+      ),
+    ),
+    197 => 
+    array (
+      'C' => '197',
+      'WX' => '333',
+      'N' => 'macron',
+      'B' => 
+      array (
+        0 => '11',
+        1 => '547',
+        2 => '322',
+        3 => '601',
+      ),
+    ),
+    'macron' => 
+    array (
+      'C' => '197',
+      'WX' => '333',
+      'N' => 'macron',
+      'B' => 
+      array (
+        0 => '11',
+        1 => '547',
+        2 => '322',
+        3 => '601',
+      ),
+    ),
+    198 => 
+    array (
+      'C' => '198',
+      'WX' => '333',
+      'N' => 'breve',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '507',
+        2 => '307',
+        3 => '664',
+      ),
+    ),
+    'breve' => 
+    array (
+      'C' => '198',
+      'WX' => '333',
+      'N' => 'breve',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '507',
+        2 => '307',
+        3 => '664',
+      ),
+    ),
+    199 => 
+    array (
+      'C' => '199',
+      'WX' => '333',
+      'N' => 'dotaccent',
+      'B' => 
+      array (
+        0 => '118',
+        1 => '581',
+        2 => '216',
+        3 => '681',
+      ),
+    ),
+    'dotaccent' => 
+    array (
+      'C' => '199',
+      'WX' => '333',
+      'N' => 'dotaccent',
+      'B' => 
+      array (
+        0 => '118',
+        1 => '581',
+        2 => '216',
+        3 => '681',
+      ),
+    ),
+    200 => 
+    array (
+      'C' => '200',
+      'WX' => '333',
+      'N' => 'dieresis',
+      'B' => 
+      array (
+        0 => '18',
+        1 => '581',
+        2 => '315',
+        3 => '681',
+      ),
+    ),
+    'dieresis' => 
+    array (
+      'C' => '200',
+      'WX' => '333',
+      'N' => 'dieresis',
+      'B' => 
+      array (
+        0 => '18',
+        1 => '581',
+        2 => '315',
+        3 => '681',
+      ),
+    ),
+    202 => 
+    array (
+      'C' => '202',
+      'WX' => '333',
+      'N' => 'ring',
+      'B' => 
+      array (
+        0 => '67',
+        1 => '512',
+        2 => '266',
+        3 => '711',
+      ),
+    ),
+    'ring' => 
+    array (
+      'C' => '202',
+      'WX' => '333',
+      'N' => 'ring',
+      'B' => 
+      array (
+        0 => '67',
+        1 => '512',
+        2 => '266',
+        3 => '711',
+      ),
+    ),
+    203 => 
+    array (
+      'C' => '203',
+      'WX' => '333',
+      'N' => 'cedilla',
+      'B' => 
+      array (
+        0 => '52',
+        1 => '-215',
+        2 => '261',
+        3 => '0',
+      ),
+    ),
+    'cedilla' => 
+    array (
+      'C' => '203',
+      'WX' => '333',
+      'N' => 'cedilla',
+      'B' => 
+      array (
+        0 => '52',
+        1 => '-215',
+        2 => '261',
+        3 => '0',
+      ),
+    ),
+    205 => 
+    array (
+      'C' => '205',
+      'WX' => '333',
+      'N' => 'hungarumlaut',
+      'B' => 
+      array (
+        0 => '-3',
+        1 => '507',
+        2 => '377',
+        3 => '678',
+      ),
+    ),
+    'hungarumlaut' => 
+    array (
+      'C' => '205',
+      'WX' => '333',
+      'N' => 'hungarumlaut',
+      'B' => 
+      array (
+        0 => '-3',
+        1 => '507',
+        2 => '377',
+        3 => '678',
+      ),
+    ),
+    206 => 
+    array (
+      'C' => '206',
+      'WX' => '333',
+      'N' => 'ogonek',
+      'B' => 
+      array (
+        0 => '62',
+        1 => '-165',
+        2 => '243',
+        3 => '0',
+      ),
+    ),
+    'ogonek' => 
+    array (
+      'C' => '206',
+      'WX' => '333',
+      'N' => 'ogonek',
+      'B' => 
+      array (
+        0 => '62',
+        1 => '-165',
+        2 => '243',
+        3 => '0',
+      ),
+    ),
+    207 => 
+    array (
+      'C' => '207',
+      'WX' => '333',
+      'N' => 'caron',
+      'B' => 
+      array (
+        0 => '11',
+        1 => '507',
+        2 => '322',
+        3 => '674',
+      ),
+    ),
+    'caron' => 
+    array (
+      'C' => '207',
+      'WX' => '333',
+      'N' => 'caron',
+      'B' => 
+      array (
+        0 => '11',
+        1 => '507',
+        2 => '322',
+        3 => '674',
+      ),
+    ),
+    208 => 
+    array (
+      'C' => '208',
+      'WX' => '1000',
+      'N' => 'emdash',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '201',
+        2 => '1000',
+        3 => '250',
+      ),
+    ),
+    'emdash' => 
+    array (
+      'C' => '208',
+      'WX' => '1000',
+      'N' => 'emdash',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '201',
+        2 => '1000',
+        3 => '250',
+      ),
+    ),
+    225 => 
+    array (
+      'C' => '225',
+      'WX' => '889',
+      'N' => 'AE',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '0',
+        2 => '863',
+        3 => '662',
+      ),
+    ),
+    'AE' => 
+    array (
+      'C' => '225',
+      'WX' => '889',
+      'N' => 'AE',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '0',
+        2 => '863',
+        3 => '662',
+      ),
+    ),
+    227 => 
+    array (
+      'C' => '227',
+      'WX' => '276',
+      'N' => 'ordfeminine',
+      'B' => 
+      array (
+        0 => '4',
+        1 => '394',
+        2 => '270',
+        3 => '676',
+      ),
+    ),
+    'ordfeminine' => 
+    array (
+      'C' => '227',
+      'WX' => '276',
+      'N' => 'ordfeminine',
+      'B' => 
+      array (
+        0 => '4',
+        1 => '394',
+        2 => '270',
+        3 => '676',
+      ),
+    ),
+    232 => 
+    array (
+      'C' => '232',
+      'WX' => '611',
+      'N' => 'Lslash',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '598',
+        3 => '662',
+      ),
+    ),
+    'Lslash' => 
+    array (
+      'C' => '232',
+      'WX' => '611',
+      'N' => 'Lslash',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '598',
+        3 => '662',
+      ),
+    ),
+    233 => 
+    array (
+      'C' => '233',
+      'WX' => '722',
+      'N' => 'Oslash',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-80',
+        2 => '688',
+        3 => '734',
+      ),
+    ),
+    'Oslash' => 
+    array (
+      'C' => '233',
+      'WX' => '722',
+      'N' => 'Oslash',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-80',
+        2 => '688',
+        3 => '734',
+      ),
+    ),
+    234 => 
+    array (
+      'C' => '234',
+      'WX' => '889',
+      'N' => 'OE',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '-6',
+        2 => '885',
+        3 => '668',
+      ),
+    ),
+    'OE' => 
+    array (
+      'C' => '234',
+      'WX' => '889',
+      'N' => 'OE',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '-6',
+        2 => '885',
+        3 => '668',
+      ),
+    ),
+    235 => 
+    array (
+      'C' => '235',
+      'WX' => '310',
+      'N' => 'ordmasculine',
+      'B' => 
+      array (
+        0 => '6',
+        1 => '394',
+        2 => '304',
+        3 => '676',
+      ),
+    ),
+    'ordmasculine' => 
+    array (
+      'C' => '235',
+      'WX' => '310',
+      'N' => 'ordmasculine',
+      'B' => 
+      array (
+        0 => '6',
+        1 => '394',
+        2 => '304',
+        3 => '676',
+      ),
+    ),
+    241 => 
+    array (
+      'C' => '241',
+      'WX' => '667',
+      'N' => 'ae',
+      'B' => 
+      array (
+        0 => '38',
+        1 => '-10',
+        2 => '632',
+        3 => '460',
+      ),
+    ),
+    'ae' => 
+    array (
+      'C' => '241',
+      'WX' => '667',
+      'N' => 'ae',
+      'B' => 
+      array (
+        0 => '38',
+        1 => '-10',
+        2 => '632',
+        3 => '460',
+      ),
+    ),
+    245 => 
+    array (
+      'C' => '245',
+      'WX' => '278',
+      'N' => 'dotlessi',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '253',
+        3 => '460',
+      ),
+    ),
+    'dotlessi' => 
+    array (
+      'C' => '245',
+      'WX' => '278',
+      'N' => 'dotlessi',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '253',
+        3 => '460',
+      ),
+    ),
+    248 => 
+    array (
+      'C' => '248',
+      'WX' => '278',
+      'N' => 'lslash',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '259',
+        3 => '683',
+      ),
+    ),
+    'lslash' => 
+    array (
+      'C' => '248',
+      'WX' => '278',
+      'N' => 'lslash',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '259',
+        3 => '683',
+      ),
+    ),
+    249 => 
+    array (
+      'C' => '249',
+      'WX' => '500',
+      'N' => 'oslash',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-112',
+        2 => '470',
+        3 => '551',
+      ),
+    ),
+    'oslash' => 
+    array (
+      'C' => '249',
+      'WX' => '500',
+      'N' => 'oslash',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-112',
+        2 => '470',
+        3 => '551',
+      ),
+    ),
+    250 => 
+    array (
+      'C' => '250',
+      'WX' => '722',
+      'N' => 'oe',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '-10',
+        2 => '690',
+        3 => '460',
+      ),
+    ),
+    'oe' => 
+    array (
+      'C' => '250',
+      'WX' => '722',
+      'N' => 'oe',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '-10',
+        2 => '690',
+        3 => '460',
+      ),
+    ),
+    251 => 
+    array (
+      'C' => '251',
+      'WX' => '500',
+      'N' => 'germandbls',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '-9',
+        2 => '468',
+        3 => '683',
+      ),
+    ),
+    'germandbls' => 
+    array (
+      'C' => '251',
+      'WX' => '500',
+      'N' => 'germandbls',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '-9',
+        2 => '468',
+        3 => '683',
+      ),
+    ),
+    'Idieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '333',
+      'N' => 'Idieresis',
+      'B' => 
+      array (
+        0 => '18',
+        1 => '0',
+        2 => '315',
+        3 => '835',
+      ),
+    ),
+    'eacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'eacute',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-10',
+        2 => '424',
+        3 => '678',
+      ),
+    ),
+    'abreve' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'abreve',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-10',
+        2 => '442',
+        3 => '664',
+      ),
+    ),
+    'uhungarumlaut' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'uhungarumlaut',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '-10',
+        2 => '501',
+        3 => '678',
+      ),
+    ),
+    'ecaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'ecaron',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-10',
+        2 => '424',
+        3 => '674',
+      ),
+    ),
+    'Ydieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ydieresis',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '0',
+        2 => '703',
+        3 => '835',
+      ),
+    ),
+    'divide' => 
+    array (
+      'C' => '-1',
+      'WX' => '564',
+      'N' => 'divide',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '-10',
+        2 => '534',
+        3 => '516',
+      ),
+    ),
+    'Yacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Yacute',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '0',
+        2 => '703',
+        3 => '890',
+      ),
+    ),
+    'Acircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Acircumflex',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '706',
+        3 => '886',
+      ),
+    ),
+    'aacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'aacute',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-10',
+        2 => '442',
+        3 => '678',
+      ),
+    ),
+    'Ucircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ucircumflex',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-14',
+        2 => '705',
+        3 => '886',
+      ),
+    ),
+    'yacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'yacute',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-218',
+        2 => '475',
+        3 => '678',
+      ),
+    ),
+    'scommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'scommaaccent',
+      'B' => 
+      array (
+        0 => '51',
+        1 => '-218',
+        2 => '348',
+        3 => '460',
+      ),
+    ),
+    'ecircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'ecircumflex',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-10',
+        2 => '424',
+        3 => '674',
+      ),
+    ),
+    'Uring' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Uring',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-14',
+        2 => '705',
+        3 => '898',
+      ),
+    ),
+    'Udieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Udieresis',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-14',
+        2 => '705',
+        3 => '835',
+      ),
+    ),
+    'aogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'aogonek',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-165',
+        2 => '469',
+        3 => '460',
+      ),
+    ),
+    'Uacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Uacute',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-14',
+        2 => '705',
+        3 => '890',
+      ),
+    ),
+    'uogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'uogonek',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '-155',
+        2 => '487',
+        3 => '450',
+      ),
+    ),
+    'Edieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Edieresis',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '597',
+        3 => '835',
+      ),
+    ),
+    'Dcroat' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Dcroat',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '685',
+        3 => '662',
+      ),
+    ),
+    'commaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '250',
+      'N' => 'commaaccent',
+      'B' => 
+      array (
+        0 => '59',
+        1 => '-218',
+        2 => '184',
+        3 => '-50',
+      ),
+    ),
+    'copyright' => 
+    array (
+      'C' => '-1',
+      'WX' => '760',
+      'N' => 'copyright',
+      'B' => 
+      array (
+        0 => '38',
+        1 => '-14',
+        2 => '722',
+        3 => '676',
+      ),
+    ),
+    'Emacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Emacron',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '597',
+        3 => '813',
+      ),
+    ),
+    'ccaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'ccaron',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-10',
+        2 => '412',
+        3 => '674',
+      ),
+    ),
+    'aring' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'aring',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-10',
+        2 => '442',
+        3 => '711',
+      ),
+    ),
+    'Ncommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ncommaaccent',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '-198',
+        2 => '707',
+        3 => '662',
+      ),
+    ),
+    'lacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'lacute',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '290',
+        3 => '890',
+      ),
+    ),
+    'agrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'agrave',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-10',
+        2 => '442',
+        3 => '678',
+      ),
+    ),
+    'Tcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Tcommaaccent',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '-218',
+        2 => '593',
+        3 => '662',
+      ),
+    ),
+    'Cacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Cacute',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-14',
+        2 => '633',
+        3 => '890',
+      ),
+    ),
+    'atilde' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'atilde',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-10',
+        2 => '442',
+        3 => '638',
+      ),
+    ),
+    'Edotaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Edotaccent',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '597',
+        3 => '835',
+      ),
+    ),
+    'scaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'scaron',
+      'B' => 
+      array (
+        0 => '39',
+        1 => '-10',
+        2 => '350',
+        3 => '674',
+      ),
+    ),
+    'scedilla' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'scedilla',
+      'B' => 
+      array (
+        0 => '51',
+        1 => '-215',
+        2 => '348',
+        3 => '460',
+      ),
+    ),
+    'iacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'iacute',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '290',
+        3 => '678',
+      ),
+    ),
+    'lozenge' => 
+    array (
+      'C' => '-1',
+      'WX' => '471',
+      'N' => 'lozenge',
+      'B' => 
+      array (
+        0 => '13',
+        1 => '0',
+        2 => '459',
+        3 => '724',
+      ),
+    ),
+    'Rcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Rcaron',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '659',
+        3 => '886',
+      ),
+    ),
+    'Gcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Gcommaaccent',
+      'B' => 
+      array (
+        0 => '32',
+        1 => '-218',
+        2 => '709',
+        3 => '676',
+      ),
+    ),
+    'ucircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'ucircumflex',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '-10',
+        2 => '479',
+        3 => '674',
+      ),
+    ),
+    'acircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'acircumflex',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-10',
+        2 => '442',
+        3 => '674',
+      ),
+    ),
+    'Amacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Amacron',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '706',
+        3 => '813',
+      ),
+    ),
+    'rcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '333',
+      'N' => 'rcaron',
+      'B' => 
+      array (
+        0 => '5',
+        1 => '0',
+        2 => '335',
+        3 => '674',
+      ),
+    ),
+    'ccedilla' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'ccedilla',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-215',
+        2 => '412',
+        3 => '460',
+      ),
+    ),
+    'Zdotaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Zdotaccent',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '597',
+        3 => '835',
+      ),
+    ),
+    'Thorn' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'Thorn',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '542',
+        3 => '662',
+      ),
+    ),
+    'Omacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Omacron',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-14',
+        2 => '688',
+        3 => '813',
+      ),
+    ),
+    'Racute' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Racute',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '659',
+        3 => '890',
+      ),
+    ),
+    'Sacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'Sacute',
+      'B' => 
+      array (
+        0 => '42',
+        1 => '-14',
+        2 => '491',
+        3 => '890',
+      ),
+    ),
+    'dcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '588',
+      'N' => 'dcaron',
+      'B' => 
+      array (
+        0 => '27',
+        1 => '-10',
+        2 => '589',
+        3 => '695',
+      ),
+    ),
+    'Umacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Umacron',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-14',
+        2 => '705',
+        3 => '813',
+      ),
+    ),
+    'uring' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'uring',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '-10',
+        2 => '479',
+        3 => '711',
+      ),
+    ),
+    'threesuperior' => 
+    array (
+      'C' => '-1',
+      'WX' => '300',
+      'N' => 'threesuperior',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '262',
+        2 => '291',
+        3 => '676',
+      ),
+    ),
+    'Ograve' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ograve',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-14',
+        2 => '688',
+        3 => '890',
+      ),
+    ),
+    'Agrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Agrave',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '706',
+        3 => '890',
+      ),
+    ),
+    'Abreve' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Abreve',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '706',
+        3 => '876',
+      ),
+    ),
+    'multiply' => 
+    array (
+      'C' => '-1',
+      'WX' => '564',
+      'N' => 'multiply',
+      'B' => 
+      array (
+        0 => '38',
+        1 => '8',
+        2 => '527',
+        3 => '497',
+      ),
+    ),
+    'uacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'uacute',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '-10',
+        2 => '479',
+        3 => '678',
+      ),
+    ),
+    'Tcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Tcaron',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '593',
+        3 => '886',
+      ),
+    ),
+    'partialdiff' => 
+    array (
+      'C' => '-1',
+      'WX' => '476',
+      'N' => 'partialdiff',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '-38',
+        2 => '459',
+        3 => '710',
+      ),
+    ),
+    'ydieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'ydieresis',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-218',
+        2 => '475',
+        3 => '623',
+      ),
+    ),
+    'Nacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Nacute',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '-11',
+        2 => '707',
+        3 => '890',
+      ),
+    ),
+    'icircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'icircumflex',
+      'B' => 
+      array (
+        0 => '-16',
+        1 => '0',
+        2 => '295',
+        3 => '674',
+      ),
+    ),
+    'Ecircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Ecircumflex',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '597',
+        3 => '886',
+      ),
+    ),
+    'adieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'adieresis',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-10',
+        2 => '442',
+        3 => '623',
+      ),
+    ),
+    'edieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'edieresis',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-10',
+        2 => '424',
+        3 => '623',
+      ),
+    ),
+    'cacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'cacute',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-10',
+        2 => '413',
+        3 => '678',
+      ),
+    ),
+    'nacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'nacute',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '485',
+        3 => '678',
+      ),
+    ),
+    'umacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'umacron',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '-10',
+        2 => '479',
+        3 => '601',
+      ),
+    ),
+    'Ncaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ncaron',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '-11',
+        2 => '707',
+        3 => '886',
+      ),
+    ),
+    'Iacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '333',
+      'N' => 'Iacute',
+      'B' => 
+      array (
+        0 => '18',
+        1 => '0',
+        2 => '317',
+        3 => '890',
+      ),
+    ),
+    'plusminus' => 
+    array (
+      'C' => '-1',
+      'WX' => '564',
+      'N' => 'plusminus',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '0',
+        2 => '534',
+        3 => '506',
+      ),
+    ),
+    'brokenbar' => 
+    array (
+      'C' => '-1',
+      'WX' => '200',
+      'N' => 'brokenbar',
+      'B' => 
+      array (
+        0 => '67',
+        1 => '-143',
+        2 => '133',
+        3 => '707',
+      ),
+    ),
+    'registered' => 
+    array (
+      'C' => '-1',
+      'WX' => '760',
+      'N' => 'registered',
+      'B' => 
+      array (
+        0 => '38',
+        1 => '-14',
+        2 => '722',
+        3 => '676',
+      ),
+    ),
+    'Gbreve' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Gbreve',
+      'B' => 
+      array (
+        0 => '32',
+        1 => '-14',
+        2 => '709',
+        3 => '876',
+      ),
+    ),
+    'Idotaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '333',
+      'N' => 'Idotaccent',
+      'B' => 
+      array (
+        0 => '18',
+        1 => '0',
+        2 => '315',
+        3 => '835',
+      ),
+    ),
+    'summation' => 
+    array (
+      'C' => '-1',
+      'WX' => '600',
+      'N' => 'summation',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '-10',
+        2 => '585',
+        3 => '706',
+      ),
+    ),
+    'Egrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Egrave',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '597',
+        3 => '890',
+      ),
+    ),
+    'racute' => 
+    array (
+      'C' => '-1',
+      'WX' => '333',
+      'N' => 'racute',
+      'B' => 
+      array (
+        0 => '5',
+        1 => '0',
+        2 => '335',
+        3 => '678',
+      ),
+    ),
+    'omacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'omacron',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-10',
+        2 => '470',
+        3 => '601',
+      ),
+    ),
+    'Zacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Zacute',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '597',
+        3 => '890',
+      ),
+    ),
+    'Zcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Zcaron',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '597',
+        3 => '886',
+      ),
+    ),
+    'greaterequal' => 
+    array (
+      'C' => '-1',
+      'WX' => '549',
+      'N' => 'greaterequal',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '0',
+        2 => '523',
+        3 => '666',
+      ),
+    ),
+    'Eth' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Eth',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '685',
+        3 => '662',
+      ),
+    ),
+    'Ccedilla' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Ccedilla',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-215',
+        2 => '633',
+        3 => '676',
+      ),
+    ),
+    'lcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'lcommaaccent',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '-218',
+        2 => '257',
+        3 => '683',
+      ),
+    ),
+    'tcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '326',
+      'N' => 'tcaron',
+      'B' => 
+      array (
+        0 => '13',
+        1 => '-10',
+        2 => '318',
+        3 => '722',
+      ),
+    ),
+    'eogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'eogonek',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-165',
+        2 => '424',
+        3 => '460',
+      ),
+    ),
+    'Uogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Uogonek',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-165',
+        2 => '705',
+        3 => '662',
+      ),
+    ),
+    'Aacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Aacute',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '706',
+        3 => '890',
+      ),
+    ),
+    'Adieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Adieresis',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '706',
+        3 => '835',
+      ),
+    ),
+    'egrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'egrave',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-10',
+        2 => '424',
+        3 => '678',
+      ),
+    ),
+    'zacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'zacute',
+      'B' => 
+      array (
+        0 => '27',
+        1 => '0',
+        2 => '418',
+        3 => '678',
+      ),
+    ),
+    'iogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'iogonek',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-165',
+        2 => '265',
+        3 => '683',
+      ),
+    ),
+    'Oacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Oacute',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-14',
+        2 => '688',
+        3 => '890',
+      ),
+    ),
+    'oacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'oacute',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-10',
+        2 => '470',
+        3 => '678',
+      ),
+    ),
+    'amacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'amacron',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-10',
+        2 => '442',
+        3 => '601',
+      ),
+    ),
+    'sacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'sacute',
+      'B' => 
+      array (
+        0 => '51',
+        1 => '-10',
+        2 => '348',
+        3 => '678',
+      ),
+    ),
+    'idieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'idieresis',
+      'B' => 
+      array (
+        0 => '-9',
+        1 => '0',
+        2 => '288',
+        3 => '623',
+      ),
+    ),
+    'Ocircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ocircumflex',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-14',
+        2 => '688',
+        3 => '886',
+      ),
+    ),
+    'Ugrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ugrave',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-14',
+        2 => '705',
+        3 => '890',
+      ),
+    ),
+    'Delta' => 
+    array (
+      'C' => '-1',
+      'WX' => '612',
+      'N' => 'Delta',
+      'B' => 
+      array (
+        0 => '6',
+        1 => '0',
+        2 => '608',
+        3 => '688',
+      ),
+    ),
+    'thorn' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'thorn',
+      'B' => 
+      array (
+        0 => '5',
+        1 => '-217',
+        2 => '470',
+        3 => '683',
+      ),
+    ),
+    'twosuperior' => 
+    array (
+      'C' => '-1',
+      'WX' => '300',
+      'N' => 'twosuperior',
+      'B' => 
+      array (
+        0 => '1',
+        1 => '270',
+        2 => '296',
+        3 => '676',
+      ),
+    ),
+    'Odieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Odieresis',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-14',
+        2 => '688',
+        3 => '835',
+      ),
+    ),
+    'mu' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'mu',
+      'B' => 
+      array (
+        0 => '36',
+        1 => '-218',
+        2 => '512',
+        3 => '450',
+      ),
+    ),
+    'igrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'igrave',
+      'B' => 
+      array (
+        0 => '-8',
+        1 => '0',
+        2 => '253',
+        3 => '678',
+      ),
+    ),
+    'ohungarumlaut' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'ohungarumlaut',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-10',
+        2 => '491',
+        3 => '678',
+      ),
+    ),
+    'Eogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Eogonek',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '-165',
+        2 => '597',
+        3 => '662',
+      ),
+    ),
+    'dcroat' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'dcroat',
+      'B' => 
+      array (
+        0 => '27',
+        1 => '-10',
+        2 => '500',
+        3 => '683',
+      ),
+    ),
+    'threequarters' => 
+    array (
+      'C' => '-1',
+      'WX' => '750',
+      'N' => 'threequarters',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '-14',
+        2 => '718',
+        3 => '676',
+      ),
+    ),
+    'Scedilla' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'Scedilla',
+      'B' => 
+      array (
+        0 => '42',
+        1 => '-215',
+        2 => '491',
+        3 => '676',
+      ),
+    ),
+    'lcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '344',
+      'N' => 'lcaron',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '347',
+        3 => '695',
+      ),
+    ),
+    'Kcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Kcommaaccent',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-198',
+        2 => '723',
+        3 => '662',
+      ),
+    ),
+    'Lacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Lacute',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '598',
+        3 => '890',
+      ),
+    ),
+    'trademark' => 
+    array (
+      'C' => '-1',
+      'WX' => '980',
+      'N' => 'trademark',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '256',
+        2 => '957',
+        3 => '662',
+      ),
+    ),
+    'edotaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'edotaccent',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-10',
+        2 => '424',
+        3 => '623',
+      ),
+    ),
+    'Igrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '333',
+      'N' => 'Igrave',
+      'B' => 
+      array (
+        0 => '18',
+        1 => '0',
+        2 => '315',
+        3 => '890',
+      ),
+    ),
+    'Imacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '333',
+      'N' => 'Imacron',
+      'B' => 
+      array (
+        0 => '11',
+        1 => '0',
+        2 => '322',
+        3 => '813',
+      ),
+    ),
+    'Lcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Lcaron',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '598',
+        3 => '676',
+      ),
+    ),
+    'onehalf' => 
+    array (
+      'C' => '-1',
+      'WX' => '750',
+      'N' => 'onehalf',
+      'B' => 
+      array (
+        0 => '31',
+        1 => '-14',
+        2 => '746',
+        3 => '676',
+      ),
+    ),
+    'lessequal' => 
+    array (
+      'C' => '-1',
+      'WX' => '549',
+      'N' => 'lessequal',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '0',
+        2 => '523',
+        3 => '666',
+      ),
+    ),
+    'ocircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'ocircumflex',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-10',
+        2 => '470',
+        3 => '674',
+      ),
+    ),
+    'ntilde' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'ntilde',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '485',
+        3 => '638',
+      ),
+    ),
+    'Uhungarumlaut' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Uhungarumlaut',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-14',
+        2 => '705',
+        3 => '890',
+      ),
+    ),
+    'Eacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Eacute',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '597',
+        3 => '890',
+      ),
+    ),
+    'emacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'emacron',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-10',
+        2 => '424',
+        3 => '601',
+      ),
+    ),
+    'gbreve' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'gbreve',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-218',
+        2 => '470',
+        3 => '664',
+      ),
+    ),
+    'onequarter' => 
+    array (
+      'C' => '-1',
+      'WX' => '750',
+      'N' => 'onequarter',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-14',
+        2 => '718',
+        3 => '676',
+      ),
+    ),
+    'Scaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'Scaron',
+      'B' => 
+      array (
+        0 => '42',
+        1 => '-14',
+        2 => '491',
+        3 => '886',
+      ),
+    ),
+    'Scommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'Scommaaccent',
+      'B' => 
+      array (
+        0 => '42',
+        1 => '-218',
+        2 => '491',
+        3 => '676',
+      ),
+    ),
+    'Ohungarumlaut' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ohungarumlaut',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-14',
+        2 => '688',
+        3 => '890',
+      ),
+    ),
+    'degree' => 
+    array (
+      'C' => '-1',
+      'WX' => '400',
+      'N' => 'degree',
+      'B' => 
+      array (
+        0 => '57',
+        1 => '390',
+        2 => '343',
+        3 => '676',
+      ),
+    ),
+    'ograve' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'ograve',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-10',
+        2 => '470',
+        3 => '678',
+      ),
+    ),
+    'Ccaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Ccaron',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-14',
+        2 => '633',
+        3 => '886',
+      ),
+    ),
+    'ugrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'ugrave',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '-10',
+        2 => '479',
+        3 => '678',
+      ),
+    ),
+    'radical' => 
+    array (
+      'C' => '-1',
+      'WX' => '453',
+      'N' => 'radical',
+      'B' => 
+      array (
+        0 => '2',
+        1 => '-60',
+        2 => '452',
+        3 => '768',
+      ),
+    ),
+    'Dcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Dcaron',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '685',
+        3 => '886',
+      ),
+    ),
+    'rcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '333',
+      'N' => 'rcommaaccent',
+      'B' => 
+      array (
+        0 => '5',
+        1 => '-218',
+        2 => '335',
+        3 => '460',
+      ),
+    ),
+    'Ntilde' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ntilde',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '-11',
+        2 => '707',
+        3 => '850',
+      ),
+    ),
+    'otilde' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'otilde',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-10',
+        2 => '470',
+        3 => '638',
+      ),
+    ),
+    'Rcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Rcommaaccent',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '-198',
+        2 => '659',
+        3 => '662',
+      ),
+    ),
+    'Lcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Lcommaaccent',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '-218',
+        2 => '598',
+        3 => '662',
+      ),
+    ),
+    'Atilde' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Atilde',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '706',
+        3 => '850',
+      ),
+    ),
+    'Aogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Aogonek',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '-165',
+        2 => '738',
+        3 => '674',
+      ),
+    ),
+    'Aring' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Aring',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '706',
+        3 => '898',
+      ),
+    ),
+    'Otilde' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Otilde',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-14',
+        2 => '688',
+        3 => '850',
+      ),
+    ),
+    'zdotaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'zdotaccent',
+      'B' => 
+      array (
+        0 => '27',
+        1 => '0',
+        2 => '418',
+        3 => '623',
+      ),
+    ),
+    'Ecaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Ecaron',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '597',
+        3 => '886',
+      ),
+    ),
+    'Iogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '333',
+      'N' => 'Iogonek',
+      'B' => 
+      array (
+        0 => '18',
+        1 => '-165',
+        2 => '315',
+        3 => '662',
+      ),
+    ),
+    'kcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'kcommaaccent',
+      'B' => 
+      array (
+        0 => '7',
+        1 => '-218',
+        2 => '505',
+        3 => '683',
+      ),
+    ),
+    'minus' => 
+    array (
+      'C' => '-1',
+      'WX' => '564',
+      'N' => 'minus',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '220',
+        2 => '534',
+        3 => '286',
+      ),
+    ),
+    'Icircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '333',
+      'N' => 'Icircumflex',
+      'B' => 
+      array (
+        0 => '11',
+        1 => '0',
+        2 => '322',
+        3 => '886',
+      ),
+    ),
+    'ncaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'ncaron',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '485',
+        3 => '674',
+      ),
+    ),
+    'tcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'tcommaaccent',
+      'B' => 
+      array (
+        0 => '13',
+        1 => '-218',
+        2 => '279',
+        3 => '579',
+      ),
+    ),
+    'logicalnot' => 
+    array (
+      'C' => '-1',
+      'WX' => '564',
+      'N' => 'logicalnot',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '108',
+        2 => '534',
+        3 => '386',
+      ),
+    ),
+    'odieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'odieresis',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-10',
+        2 => '470',
+        3 => '623',
+      ),
+    ),
+    'udieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'udieresis',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '-10',
+        2 => '479',
+        3 => '623',
+      ),
+    ),
+    'notequal' => 
+    array (
+      'C' => '-1',
+      'WX' => '549',
+      'N' => 'notequal',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '-31',
+        2 => '537',
+        3 => '547',
+      ),
+    ),
+    'gcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'gcommaaccent',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-218',
+        2 => '470',
+        3 => '749',
+      ),
+    ),
+    'eth' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'eth',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-10',
+        2 => '471',
+        3 => '686',
+      ),
+    ),
+    'zcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'zcaron',
+      'B' => 
+      array (
+        0 => '27',
+        1 => '0',
+        2 => '418',
+        3 => '674',
+      ),
+    ),
+    'ncommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'ncommaaccent',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-218',
+        2 => '485',
+        3 => '460',
+      ),
+    ),
+    'onesuperior' => 
+    array (
+      'C' => '-1',
+      'WX' => '300',
+      'N' => 'onesuperior',
+      'B' => 
+      array (
+        0 => '57',
+        1 => '270',
+        2 => '248',
+        3 => '676',
+      ),
+    ),
+    'imacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'imacron',
+      'B' => 
+      array (
+        0 => '6',
+        1 => '0',
+        2 => '271',
+        3 => '601',
+      ),
+    ),
+    'Euro' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'Euro',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '0',
+        2 => '0',
+        3 => '0',
+      ),
+    ),
+  ),
+  'KPX' => 
+  array (
+    'A' => 
+    array (
+      'C' => '-40',
+      'Cacute' => '-40',
+      'Ccaron' => '-40',
+      'Ccedilla' => '-40',
+      'G' => '-40',
+      'Gbreve' => '-40',
+      'Gcommaaccent' => '-40',
+      'O' => '-55',
+      'Oacute' => '-55',
+      'Ocircumflex' => '-55',
+      'Odieresis' => '-55',
+      'Ograve' => '-55',
+      'Ohungarumlaut' => '-55',
+      'Omacron' => '-55',
+      'Oslash' => '-55',
+      'Otilde' => '-55',
+      'Q' => '-55',
+      'T' => '-111',
+      'Tcaron' => '-111',
+      'Tcommaaccent' => '-111',
+      'U' => '-55',
+      'Uacute' => '-55',
+      'Ucircumflex' => '-55',
+      'Udieresis' => '-55',
+      'Ugrave' => '-55',
+      'Uhungarumlaut' => '-55',
+      'Umacron' => '-55',
+      'Uogonek' => '-55',
+      'Uring' => '-55',
+      'V' => '-135',
+      'W' => '-90',
+      'Y' => '-105',
+      'Yacute' => '-105',
+      'Ydieresis' => '-105',
+      'quoteright' => '-111',
+      'v' => '-74',
+      'w' => '-92',
+      'y' => '-92',
+      'yacute' => '-92',
+      'ydieresis' => '-92',
+    ),
+    'Aacute' => 
+    array (
+      'C' => '-40',
+      'Cacute' => '-40',
+      'Ccaron' => '-40',
+      'Ccedilla' => '-40',
+      'G' => '-40',
+      'Gbreve' => '-40',
+      'Gcommaaccent' => '-40',
+      'O' => '-55',
+      'Oacute' => '-55',
+      'Ocircumflex' => '-55',
+      'Odieresis' => '-55',
+      'Ograve' => '-55',
+      'Ohungarumlaut' => '-55',
+      'Omacron' => '-55',
+      'Oslash' => '-55',
+      'Otilde' => '-55',
+      'Q' => '-55',
+      'T' => '-111',
+      'Tcaron' => '-111',
+      'Tcommaaccent' => '-111',
+      'U' => '-55',
+      'Uacute' => '-55',
+      'Ucircumflex' => '-55',
+      'Udieresis' => '-55',
+      'Ugrave' => '-55',
+      'Uhungarumlaut' => '-55',
+      'Umacron' => '-55',
+      'Uogonek' => '-55',
+      'Uring' => '-55',
+      'V' => '-135',
+      'W' => '-90',
+      'Y' => '-105',
+      'Yacute' => '-105',
+      'Ydieresis' => '-105',
+      'quoteright' => '-111',
+      'v' => '-74',
+      'w' => '-92',
+      'y' => '-92',
+      'yacute' => '-92',
+      'ydieresis' => '-92',
+    ),
+    'Abreve' => 
+    array (
+      'C' => '-40',
+      'Cacute' => '-40',
+      'Ccaron' => '-40',
+      'Ccedilla' => '-40',
+      'G' => '-40',
+      'Gbreve' => '-40',
+      'Gcommaaccent' => '-40',
+      'O' => '-55',
+      'Oacute' => '-55',
+      'Ocircumflex' => '-55',
+      'Odieresis' => '-55',
+      'Ograve' => '-55',
+      'Ohungarumlaut' => '-55',
+      'Omacron' => '-55',
+      'Oslash' => '-55',
+      'Otilde' => '-55',
+      'Q' => '-55',
+      'T' => '-111',
+      'Tcaron' => '-111',
+      'Tcommaaccent' => '-111',
+      'U' => '-55',
+      'Uacute' => '-55',
+      'Ucircumflex' => '-55',
+      'Udieresis' => '-55',
+      'Ugrave' => '-55',
+      'Uhungarumlaut' => '-55',
+      'Umacron' => '-55',
+      'Uogonek' => '-55',
+      'Uring' => '-55',
+      'V' => '-135',
+      'W' => '-90',
+      'Y' => '-105',
+      'Yacute' => '-105',
+      'Ydieresis' => '-105',
+      'quoteright' => '-111',
+      'v' => '-74',
+      'w' => '-92',
+      'y' => '-92',
+      'yacute' => '-92',
+      'ydieresis' => '-92',
+    ),
+    'Acircumflex' => 
+    array (
+      'C' => '-40',
+      'Cacute' => '-40',
+      'Ccaron' => '-40',
+      'Ccedilla' => '-40',
+      'G' => '-40',
+      'Gbreve' => '-40',
+      'Gcommaaccent' => '-40',
+      'O' => '-55',
+      'Oacute' => '-55',
+      'Ocircumflex' => '-55',
+      'Odieresis' => '-55',
+      'Ograve' => '-55',
+      'Ohungarumlaut' => '-55',
+      'Omacron' => '-55',
+      'Oslash' => '-55',
+      'Otilde' => '-55',
+      'Q' => '-55',
+      'T' => '-111',
+      'Tcaron' => '-111',
+      'Tcommaaccent' => '-111',
+      'U' => '-55',
+      'Uacute' => '-55',
+      'Ucircumflex' => '-55',
+      'Udieresis' => '-55',
+      'Ugrave' => '-55',
+      'Uhungarumlaut' => '-55',
+      'Umacron' => '-55',
+      'Uogonek' => '-55',
+      'Uring' => '-55',
+      'V' => '-135',
+      'W' => '-90',
+      'Y' => '-105',
+      'Yacute' => '-105',
+      'Ydieresis' => '-105',
+      'quoteright' => '-111',
+      'v' => '-74',
+      'w' => '-92',
+      'y' => '-92',
+      'yacute' => '-92',
+      'ydieresis' => '-92',
+    ),
+    'Adieresis' => 
+    array (
+      'C' => '-40',
+      'Cacute' => '-40',
+      'Ccaron' => '-40',
+      'Ccedilla' => '-40',
+      'G' => '-40',
+      'Gbreve' => '-40',
+      'Gcommaaccent' => '-40',
+      'O' => '-55',
+      'Oacute' => '-55',
+      'Ocircumflex' => '-55',
+      'Odieresis' => '-55',
+      'Ograve' => '-55',
+      'Ohungarumlaut' => '-55',
+      'Omacron' => '-55',
+      'Oslash' => '-55',
+      'Otilde' => '-55',
+      'Q' => '-55',
+      'T' => '-111',
+      'Tcaron' => '-111',
+      'Tcommaaccent' => '-111',
+      'U' => '-55',
+      'Uacute' => '-55',
+      'Ucircumflex' => '-55',
+      'Udieresis' => '-55',
+      'Ugrave' => '-55',
+      'Uhungarumlaut' => '-55',
+      'Umacron' => '-55',
+      'Uogonek' => '-55',
+      'Uring' => '-55',
+      'V' => '-135',
+      'W' => '-90',
+      'Y' => '-105',
+      'Yacute' => '-105',
+      'Ydieresis' => '-105',
+      'quoteright' => '-111',
+      'v' => '-74',
+      'w' => '-92',
+      'y' => '-92',
+      'yacute' => '-92',
+      'ydieresis' => '-92',
+    ),
+    'Agrave' => 
+    array (
+      'C' => '-40',
+      'Cacute' => '-40',
+      'Ccaron' => '-40',
+      'Ccedilla' => '-40',
+      'G' => '-40',
+      'Gbreve' => '-40',
+      'Gcommaaccent' => '-40',
+      'O' => '-55',
+      'Oacute' => '-55',
+      'Ocircumflex' => '-55',
+      'Odieresis' => '-55',
+      'Ograve' => '-55',
+      'Ohungarumlaut' => '-55',
+      'Omacron' => '-55',
+      'Oslash' => '-55',
+      'Otilde' => '-55',
+      'Q' => '-55',
+      'T' => '-111',
+      'Tcaron' => '-111',
+      'Tcommaaccent' => '-111',
+      'U' => '-55',
+      'Uacute' => '-55',
+      'Ucircumflex' => '-55',
+      'Udieresis' => '-55',
+      'Ugrave' => '-55',
+      'Uhungarumlaut' => '-55',
+      'Umacron' => '-55',
+      'Uogonek' => '-55',
+      'Uring' => '-55',
+      'V' => '-135',
+      'W' => '-90',
+      'Y' => '-105',
+      'Yacute' => '-105',
+      'Ydieresis' => '-105',
+      'quoteright' => '-111',
+      'v' => '-74',
+      'w' => '-92',
+      'y' => '-92',
+      'yacute' => '-92',
+      'ydieresis' => '-92',
+    ),
+    'Amacron' => 
+    array (
+      'C' => '-40',
+      'Cacute' => '-40',
+      'Ccaron' => '-40',
+      'Ccedilla' => '-40',
+      'G' => '-40',
+      'Gbreve' => '-40',
+      'Gcommaaccent' => '-40',
+      'O' => '-55',
+      'Oacute' => '-55',
+      'Ocircumflex' => '-55',
+      'Odieresis' => '-55',
+      'Ograve' => '-55',
+      'Ohungarumlaut' => '-55',
+      'Omacron' => '-55',
+      'Oslash' => '-55',
+      'Otilde' => '-55',
+      'Q' => '-55',
+      'T' => '-111',
+      'Tcaron' => '-111',
+      'Tcommaaccent' => '-111',
+      'U' => '-55',
+      'Uacute' => '-55',
+      'Ucircumflex' => '-55',
+      'Udieresis' => '-55',
+      'Ugrave' => '-55',
+      'Uhungarumlaut' => '-55',
+      'Umacron' => '-55',
+      'Uogonek' => '-55',
+      'Uring' => '-55',
+      'V' => '-135',
+      'W' => '-90',
+      'Y' => '-105',
+      'Yacute' => '-105',
+      'Ydieresis' => '-105',
+      'quoteright' => '-111',
+      'v' => '-74',
+      'w' => '-92',
+      'y' => '-92',
+      'yacute' => '-92',
+      'ydieresis' => '-92',
+    ),
+    'Aogonek' => 
+    array (
+      'C' => '-40',
+      'Cacute' => '-40',
+      'Ccaron' => '-40',
+      'Ccedilla' => '-40',
+      'G' => '-40',
+      'Gbreve' => '-40',
+      'Gcommaaccent' => '-40',
+      'O' => '-55',
+      'Oacute' => '-55',
+      'Ocircumflex' => '-55',
+      'Odieresis' => '-55',
+      'Ograve' => '-55',
+      'Ohungarumlaut' => '-55',
+      'Omacron' => '-55',
+      'Oslash' => '-55',
+      'Otilde' => '-55',
+      'Q' => '-55',
+      'T' => '-111',
+      'Tcaron' => '-111',
+      'Tcommaaccent' => '-111',
+      'U' => '-55',
+      'Uacute' => '-55',
+      'Ucircumflex' => '-55',
+      'Udieresis' => '-55',
+      'Ugrave' => '-55',
+      'Uhungarumlaut' => '-55',
+      'Umacron' => '-55',
+      'Uogonek' => '-55',
+      'Uring' => '-55',
+      'V' => '-135',
+      'W' => '-90',
+      'Y' => '-105',
+      'Yacute' => '-105',
+      'Ydieresis' => '-105',
+      'quoteright' => '-111',
+      'v' => '-74',
+      'w' => '-52',
+      'y' => '-52',
+      'yacute' => '-52',
+      'ydieresis' => '-52',
+    ),
+    'Aring' => 
+    array (
+      'C' => '-40',
+      'Cacute' => '-40',
+      'Ccaron' => '-40',
+      'Ccedilla' => '-40',
+      'G' => '-40',
+      'Gbreve' => '-40',
+      'Gcommaaccent' => '-40',
+      'O' => '-55',
+      'Oacute' => '-55',
+      'Ocircumflex' => '-55',
+      'Odieresis' => '-55',
+      'Ograve' => '-55',
+      'Ohungarumlaut' => '-55',
+      'Omacron' => '-55',
+      'Oslash' => '-55',
+      'Otilde' => '-55',
+      'Q' => '-55',
+      'T' => '-111',
+      'Tcaron' => '-111',
+      'Tcommaaccent' => '-111',
+      'U' => '-55',
+      'Uacute' => '-55',
+      'Ucircumflex' => '-55',
+      'Udieresis' => '-55',
+      'Ugrave' => '-55',
+      'Uhungarumlaut' => '-55',
+      'Umacron' => '-55',
+      'Uogonek' => '-55',
+      'Uring' => '-55',
+      'V' => '-135',
+      'W' => '-90',
+      'Y' => '-105',
+      'Yacute' => '-105',
+      'Ydieresis' => '-105',
+      'quoteright' => '-111',
+      'v' => '-74',
+      'w' => '-92',
+      'y' => '-92',
+      'yacute' => '-92',
+      'ydieresis' => '-92',
+    ),
+    'Atilde' => 
+    array (
+      'C' => '-40',
+      'Cacute' => '-40',
+      'Ccaron' => '-40',
+      'Ccedilla' => '-40',
+      'G' => '-40',
+      'Gbreve' => '-40',
+      'Gcommaaccent' => '-40',
+      'O' => '-55',
+      'Oacute' => '-55',
+      'Ocircumflex' => '-55',
+      'Odieresis' => '-55',
+      'Ograve' => '-55',
+      'Ohungarumlaut' => '-55',
+      'Omacron' => '-55',
+      'Oslash' => '-55',
+      'Otilde' => '-55',
+      'Q' => '-55',
+      'T' => '-111',
+      'Tcaron' => '-111',
+      'Tcommaaccent' => '-111',
+      'U' => '-55',
+      'Uacute' => '-55',
+      'Ucircumflex' => '-55',
+      'Udieresis' => '-55',
+      'Ugrave' => '-55',
+      'Uhungarumlaut' => '-55',
+      'Umacron' => '-55',
+      'Uogonek' => '-55',
+      'Uring' => '-55',
+      'V' => '-135',
+      'W' => '-90',
+      'Y' => '-105',
+      'Yacute' => '-105',
+      'Ydieresis' => '-105',
+      'quoteright' => '-111',
+      'v' => '-74',
+      'w' => '-92',
+      'y' => '-92',
+      'yacute' => '-92',
+      'ydieresis' => '-92',
+    ),
+    'B' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+      'U' => '-10',
+      'Uacute' => '-10',
+      'Ucircumflex' => '-10',
+      'Udieresis' => '-10',
+      'Ugrave' => '-10',
+      'Uhungarumlaut' => '-10',
+      'Umacron' => '-10',
+      'Uogonek' => '-10',
+      'Uring' => '-10',
+    ),
+    'D' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+      'V' => '-40',
+      'W' => '-30',
+      'Y' => '-55',
+      'Yacute' => '-55',
+      'Ydieresis' => '-55',
+    ),
+    'Dcaron' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+      'V' => '-40',
+      'W' => '-30',
+      'Y' => '-55',
+      'Yacute' => '-55',
+      'Ydieresis' => '-55',
+    ),
+    'Dcroat' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+      'V' => '-40',
+      'W' => '-30',
+      'Y' => '-55',
+      'Yacute' => '-55',
+      'Ydieresis' => '-55',
+    ),
+    'F' => 
+    array (
+      'A' => '-74',
+      'Aacute' => '-74',
+      'Abreve' => '-74',
+      'Acircumflex' => '-74',
+      'Adieresis' => '-74',
+      'Agrave' => '-74',
+      'Amacron' => '-74',
+      'Aogonek' => '-74',
+      'Aring' => '-74',
+      'Atilde' => '-74',
+      'a' => '-15',
+      'aacute' => '-15',
+      'abreve' => '-15',
+      'acircumflex' => '-15',
+      'adieresis' => '-15',
+      'agrave' => '-15',
+      'amacron' => '-15',
+      'aogonek' => '-15',
+      'aring' => '-15',
+      'atilde' => '-15',
+      'comma' => '-80',
+      'o' => '-15',
+      'oacute' => '-15',
+      'ocircumflex' => '-15',
+      'odieresis' => '-15',
+      'ograve' => '-15',
+      'ohungarumlaut' => '-15',
+      'omacron' => '-15',
+      'oslash' => '-15',
+      'otilde' => '-15',
+      'period' => '-80',
+    ),
+    'J' => 
+    array (
+      'A' => '-60',
+      'Aacute' => '-60',
+      'Abreve' => '-60',
+      'Acircumflex' => '-60',
+      'Adieresis' => '-60',
+      'Agrave' => '-60',
+      'Amacron' => '-60',
+      'Aogonek' => '-60',
+      'Aring' => '-60',
+      'Atilde' => '-60',
+    ),
+    'K' => 
+    array (
+      'O' => '-30',
+      'Oacute' => '-30',
+      'Ocircumflex' => '-30',
+      'Odieresis' => '-30',
+      'Ograve' => '-30',
+      'Ohungarumlaut' => '-30',
+      'Omacron' => '-30',
+      'Oslash' => '-30',
+      'Otilde' => '-30',
+      'e' => '-25',
+      'eacute' => '-25',
+      'ecaron' => '-25',
+      'ecircumflex' => '-25',
+      'edieresis' => '-25',
+      'edotaccent' => '-25',
+      'egrave' => '-25',
+      'emacron' => '-25',
+      'eogonek' => '-25',
+      'o' => '-35',
+      'oacute' => '-35',
+      'ocircumflex' => '-35',
+      'odieresis' => '-35',
+      'ograve' => '-35',
+      'ohungarumlaut' => '-35',
+      'omacron' => '-35',
+      'oslash' => '-35',
+      'otilde' => '-35',
+      'u' => '-15',
+      'uacute' => '-15',
+      'ucircumflex' => '-15',
+      'udieresis' => '-15',
+      'ugrave' => '-15',
+      'uhungarumlaut' => '-15',
+      'umacron' => '-15',
+      'uogonek' => '-15',
+      'uring' => '-15',
+      'y' => '-25',
+      'yacute' => '-25',
+      'ydieresis' => '-25',
+    ),
+    'Kcommaaccent' => 
+    array (
+      'O' => '-30',
+      'Oacute' => '-30',
+      'Ocircumflex' => '-30',
+      'Odieresis' => '-30',
+      'Ograve' => '-30',
+      'Ohungarumlaut' => '-30',
+      'Omacron' => '-30',
+      'Oslash' => '-30',
+      'Otilde' => '-30',
+      'e' => '-25',
+      'eacute' => '-25',
+      'ecaron' => '-25',
+      'ecircumflex' => '-25',
+      'edieresis' => '-25',
+      'edotaccent' => '-25',
+      'egrave' => '-25',
+      'emacron' => '-25',
+      'eogonek' => '-25',
+      'o' => '-35',
+      'oacute' => '-35',
+      'ocircumflex' => '-35',
+      'odieresis' => '-35',
+      'ograve' => '-35',
+      'ohungarumlaut' => '-35',
+      'omacron' => '-35',
+      'oslash' => '-35',
+      'otilde' => '-35',
+      'u' => '-15',
+      'uacute' => '-15',
+      'ucircumflex' => '-15',
+      'udieresis' => '-15',
+      'ugrave' => '-15',
+      'uhungarumlaut' => '-15',
+      'umacron' => '-15',
+      'uogonek' => '-15',
+      'uring' => '-15',
+      'y' => '-25',
+      'yacute' => '-25',
+      'ydieresis' => '-25',
+    ),
+    'L' => 
+    array (
+      'T' => '-92',
+      'Tcaron' => '-92',
+      'Tcommaaccent' => '-92',
+      'V' => '-100',
+      'W' => '-74',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'quoteright' => '-92',
+      'y' => '-55',
+      'yacute' => '-55',
+      'ydieresis' => '-55',
+    ),
+    'Lacute' => 
+    array (
+      'T' => '-92',
+      'Tcaron' => '-92',
+      'Tcommaaccent' => '-92',
+      'V' => '-100',
+      'W' => '-74',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'quoteright' => '-92',
+      'y' => '-55',
+      'yacute' => '-55',
+      'ydieresis' => '-55',
+    ),
+    'Lcaron' => 
+    array (
+      'quoteright' => '-92',
+      'y' => '-55',
+      'yacute' => '-55',
+      'ydieresis' => '-55',
+    ),
+    'Lcommaaccent' => 
+    array (
+      'T' => '-92',
+      'Tcaron' => '-92',
+      'Tcommaaccent' => '-92',
+      'V' => '-100',
+      'W' => '-74',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'quoteright' => '-92',
+      'y' => '-55',
+      'yacute' => '-55',
+      'ydieresis' => '-55',
+    ),
+    'Lslash' => 
+    array (
+      'T' => '-92',
+      'Tcaron' => '-92',
+      'Tcommaaccent' => '-92',
+      'V' => '-100',
+      'W' => '-74',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'quoteright' => '-92',
+      'y' => '-55',
+      'yacute' => '-55',
+      'ydieresis' => '-55',
+    ),
+    'N' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+    ),
+    'Nacute' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+    ),
+    'Ncaron' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+    ),
+    'Ncommaaccent' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+    ),
+    'Ntilde' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+    ),
+    'O' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-35',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Oacute' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-35',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Ocircumflex' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-35',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Odieresis' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-35',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Ograve' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-35',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Ohungarumlaut' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-35',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Omacron' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-35',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Oslash' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-35',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Otilde' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-35',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'P' => 
+    array (
+      'A' => '-92',
+      'Aacute' => '-92',
+      'Abreve' => '-92',
+      'Acircumflex' => '-92',
+      'Adieresis' => '-92',
+      'Agrave' => '-92',
+      'Amacron' => '-92',
+      'Aogonek' => '-92',
+      'Aring' => '-92',
+      'Atilde' => '-92',
+      'a' => '-15',
+      'aacute' => '-15',
+      'abreve' => '-15',
+      'acircumflex' => '-15',
+      'adieresis' => '-15',
+      'agrave' => '-15',
+      'amacron' => '-15',
+      'aogonek' => '-15',
+      'aring' => '-15',
+      'atilde' => '-15',
+      'comma' => '-111',
+      'period' => '-111',
+    ),
+    'Q' => 
+    array (
+      'U' => '-10',
+      'Uacute' => '-10',
+      'Ucircumflex' => '-10',
+      'Udieresis' => '-10',
+      'Ugrave' => '-10',
+      'Uhungarumlaut' => '-10',
+      'Umacron' => '-10',
+      'Uogonek' => '-10',
+      'Uring' => '-10',
+    ),
+    'R' => 
+    array (
+      'O' => '-40',
+      'Oacute' => '-40',
+      'Ocircumflex' => '-40',
+      'Odieresis' => '-40',
+      'Ograve' => '-40',
+      'Ohungarumlaut' => '-40',
+      'Omacron' => '-40',
+      'Oslash' => '-40',
+      'Otilde' => '-40',
+      'T' => '-60',
+      'Tcaron' => '-60',
+      'Tcommaaccent' => '-60',
+      'U' => '-40',
+      'Uacute' => '-40',
+      'Ucircumflex' => '-40',
+      'Udieresis' => '-40',
+      'Ugrave' => '-40',
+      'Uhungarumlaut' => '-40',
+      'Umacron' => '-40',
+      'Uogonek' => '-40',
+      'Uring' => '-40',
+      'V' => '-80',
+      'W' => '-55',
+      'Y' => '-65',
+      'Yacute' => '-65',
+      'Ydieresis' => '-65',
+    ),
+    'Racute' => 
+    array (
+      'O' => '-40',
+      'Oacute' => '-40',
+      'Ocircumflex' => '-40',
+      'Odieresis' => '-40',
+      'Ograve' => '-40',
+      'Ohungarumlaut' => '-40',
+      'Omacron' => '-40',
+      'Oslash' => '-40',
+      'Otilde' => '-40',
+      'T' => '-60',
+      'Tcaron' => '-60',
+      'Tcommaaccent' => '-60',
+      'U' => '-40',
+      'Uacute' => '-40',
+      'Ucircumflex' => '-40',
+      'Udieresis' => '-40',
+      'Ugrave' => '-40',
+      'Uhungarumlaut' => '-40',
+      'Umacron' => '-40',
+      'Uogonek' => '-40',
+      'Uring' => '-40',
+      'V' => '-80',
+      'W' => '-55',
+      'Y' => '-65',
+      'Yacute' => '-65',
+      'Ydieresis' => '-65',
+    ),
+    'Rcaron' => 
+    array (
+      'O' => '-40',
+      'Oacute' => '-40',
+      'Ocircumflex' => '-40',
+      'Odieresis' => '-40',
+      'Ograve' => '-40',
+      'Ohungarumlaut' => '-40',
+      'Omacron' => '-40',
+      'Oslash' => '-40',
+      'Otilde' => '-40',
+      'T' => '-60',
+      'Tcaron' => '-60',
+      'Tcommaaccent' => '-60',
+      'U' => '-40',
+      'Uacute' => '-40',
+      'Ucircumflex' => '-40',
+      'Udieresis' => '-40',
+      'Ugrave' => '-40',
+      'Uhungarumlaut' => '-40',
+      'Umacron' => '-40',
+      'Uogonek' => '-40',
+      'Uring' => '-40',
+      'V' => '-80',
+      'W' => '-55',
+      'Y' => '-65',
+      'Yacute' => '-65',
+      'Ydieresis' => '-65',
+    ),
+    'Rcommaaccent' => 
+    array (
+      'O' => '-40',
+      'Oacute' => '-40',
+      'Ocircumflex' => '-40',
+      'Odieresis' => '-40',
+      'Ograve' => '-40',
+      'Ohungarumlaut' => '-40',
+      'Omacron' => '-40',
+      'Oslash' => '-40',
+      'Otilde' => '-40',
+      'T' => '-60',
+      'Tcaron' => '-60',
+      'Tcommaaccent' => '-60',
+      'U' => '-40',
+      'Uacute' => '-40',
+      'Ucircumflex' => '-40',
+      'Udieresis' => '-40',
+      'Ugrave' => '-40',
+      'Uhungarumlaut' => '-40',
+      'Umacron' => '-40',
+      'Uogonek' => '-40',
+      'Uring' => '-40',
+      'V' => '-80',
+      'W' => '-55',
+      'Y' => '-65',
+      'Yacute' => '-65',
+      'Ydieresis' => '-65',
+    ),
+    'T' => 
+    array (
+      'A' => '-93',
+      'Aacute' => '-93',
+      'Abreve' => '-93',
+      'Acircumflex' => '-93',
+      'Adieresis' => '-93',
+      'Agrave' => '-93',
+      'Amacron' => '-93',
+      'Aogonek' => '-93',
+      'Aring' => '-93',
+      'Atilde' => '-93',
+      'O' => '-18',
+      'Oacute' => '-18',
+      'Ocircumflex' => '-18',
+      'Odieresis' => '-18',
+      'Ograve' => '-18',
+      'Ohungarumlaut' => '-18',
+      'Omacron' => '-18',
+      'Oslash' => '-18',
+      'Otilde' => '-18',
+      'a' => '-80',
+      'aacute' => '-80',
+      'abreve' => '-80',
+      'acircumflex' => '-80',
+      'adieresis' => '-40',
+      'agrave' => '-40',
+      'amacron' => '-40',
+      'aogonek' => '-80',
+      'aring' => '-80',
+      'atilde' => '-40',
+      'colon' => '-50',
+      'comma' => '-74',
+      'e' => '-70',
+      'eacute' => '-70',
+      'ecaron' => '-70',
+      'ecircumflex' => '-70',
+      'edieresis' => '-30',
+      'edotaccent' => '-70',
+      'egrave' => '-70',
+      'emacron' => '-30',
+      'eogonek' => '-70',
+      'hyphen' => '-92',
+      'i' => '-35',
+      'iacute' => '-35',
+      'iogonek' => '-35',
+      'o' => '-80',
+      'oacute' => '-80',
+      'ocircumflex' => '-80',
+      'odieresis' => '-80',
+      'ograve' => '-80',
+      'ohungarumlaut' => '-80',
+      'omacron' => '-80',
+      'oslash' => '-80',
+      'otilde' => '-80',
+      'period' => '-74',
+      'r' => '-35',
+      'racute' => '-35',
+      'rcaron' => '-35',
+      'rcommaaccent' => '-35',
+      'semicolon' => '-55',
+      'u' => '-45',
+      'uacute' => '-45',
+      'ucircumflex' => '-45',
+      'udieresis' => '-45',
+      'ugrave' => '-45',
+      'uhungarumlaut' => '-45',
+      'umacron' => '-45',
+      'uogonek' => '-45',
+      'uring' => '-45',
+      'w' => '-80',
+      'y' => '-80',
+      'yacute' => '-80',
+      'ydieresis' => '-80',
+    ),
+    'Tcaron' => 
+    array (
+      'A' => '-93',
+      'Aacute' => '-93',
+      'Abreve' => '-93',
+      'Acircumflex' => '-93',
+      'Adieresis' => '-93',
+      'Agrave' => '-93',
+      'Amacron' => '-93',
+      'Aogonek' => '-93',
+      'Aring' => '-93',
+      'Atilde' => '-93',
+      'O' => '-18',
+      'Oacute' => '-18',
+      'Ocircumflex' => '-18',
+      'Odieresis' => '-18',
+      'Ograve' => '-18',
+      'Ohungarumlaut' => '-18',
+      'Omacron' => '-18',
+      'Oslash' => '-18',
+      'Otilde' => '-18',
+      'a' => '-80',
+      'aacute' => '-80',
+      'abreve' => '-80',
+      'acircumflex' => '-80',
+      'adieresis' => '-40',
+      'agrave' => '-40',
+      'amacron' => '-40',
+      'aogonek' => '-80',
+      'aring' => '-80',
+      'atilde' => '-40',
+      'colon' => '-50',
+      'comma' => '-74',
+      'e' => '-70',
+      'eacute' => '-70',
+      'ecaron' => '-70',
+      'ecircumflex' => '-30',
+      'edieresis' => '-30',
+      'edotaccent' => '-70',
+      'egrave' => '-70',
+      'emacron' => '-30',
+      'eogonek' => '-70',
+      'hyphen' => '-92',
+      'i' => '-35',
+      'iacute' => '-35',
+      'iogonek' => '-35',
+      'o' => '-80',
+      'oacute' => '-80',
+      'ocircumflex' => '-80',
+      'odieresis' => '-80',
+      'ograve' => '-80',
+      'ohungarumlaut' => '-80',
+      'omacron' => '-80',
+      'oslash' => '-80',
+      'otilde' => '-80',
+      'period' => '-74',
+      'r' => '-35',
+      'racute' => '-35',
+      'rcaron' => '-35',
+      'rcommaaccent' => '-35',
+      'semicolon' => '-55',
+      'u' => '-45',
+      'uacute' => '-45',
+      'ucircumflex' => '-45',
+      'udieresis' => '-45',
+      'ugrave' => '-45',
+      'uhungarumlaut' => '-45',
+      'umacron' => '-45',
+      'uogonek' => '-45',
+      'uring' => '-45',
+      'w' => '-80',
+      'y' => '-80',
+      'yacute' => '-80',
+      'ydieresis' => '-80',
+    ),
+    'Tcommaaccent' => 
+    array (
+      'A' => '-93',
+      'Aacute' => '-93',
+      'Abreve' => '-93',
+      'Acircumflex' => '-93',
+      'Adieresis' => '-93',
+      'Agrave' => '-93',
+      'Amacron' => '-93',
+      'Aogonek' => '-93',
+      'Aring' => '-93',
+      'Atilde' => '-93',
+      'O' => '-18',
+      'Oacute' => '-18',
+      'Ocircumflex' => '-18',
+      'Odieresis' => '-18',
+      'Ograve' => '-18',
+      'Ohungarumlaut' => '-18',
+      'Omacron' => '-18',
+      'Oslash' => '-18',
+      'Otilde' => '-18',
+      'a' => '-80',
+      'aacute' => '-80',
+      'abreve' => '-80',
+      'acircumflex' => '-80',
+      'adieresis' => '-40',
+      'agrave' => '-40',
+      'amacron' => '-40',
+      'aogonek' => '-80',
+      'aring' => '-80',
+      'atilde' => '-40',
+      'colon' => '-50',
+      'comma' => '-74',
+      'e' => '-70',
+      'eacute' => '-70',
+      'ecaron' => '-70',
+      'ecircumflex' => '-30',
+      'edieresis' => '-30',
+      'edotaccent' => '-70',
+      'egrave' => '-30',
+      'emacron' => '-70',
+      'eogonek' => '-70',
+      'hyphen' => '-92',
+      'i' => '-35',
+      'iacute' => '-35',
+      'iogonek' => '-35',
+      'o' => '-80',
+      'oacute' => '-80',
+      'ocircumflex' => '-80',
+      'odieresis' => '-80',
+      'ograve' => '-80',
+      'ohungarumlaut' => '-80',
+      'omacron' => '-80',
+      'oslash' => '-80',
+      'otilde' => '-80',
+      'period' => '-74',
+      'r' => '-35',
+      'racute' => '-35',
+      'rcaron' => '-35',
+      'rcommaaccent' => '-35',
+      'semicolon' => '-55',
+      'u' => '-45',
+      'uacute' => '-45',
+      'ucircumflex' => '-45',
+      'udieresis' => '-45',
+      'ugrave' => '-45',
+      'uhungarumlaut' => '-45',
+      'umacron' => '-45',
+      'uogonek' => '-45',
+      'uring' => '-45',
+      'w' => '-80',
+      'y' => '-80',
+      'yacute' => '-80',
+      'ydieresis' => '-80',
+    ),
+    'U' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+    ),
+    'Uacute' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+    ),
+    'Ucircumflex' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+    ),
+    'Udieresis' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+    ),
+    'Ugrave' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+    ),
+    'Uhungarumlaut' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+    ),
+    'Umacron' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+    ),
+    'Uogonek' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+    ),
+    'Uring' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+    ),
+    'V' => 
+    array (
+      'A' => '-135',
+      'Aacute' => '-135',
+      'Abreve' => '-135',
+      'Acircumflex' => '-135',
+      'Adieresis' => '-135',
+      'Agrave' => '-135',
+      'Amacron' => '-135',
+      'Aogonek' => '-135',
+      'Aring' => '-135',
+      'Atilde' => '-135',
+      'G' => '-15',
+      'Gbreve' => '-15',
+      'Gcommaaccent' => '-15',
+      'O' => '-40',
+      'Oacute' => '-40',
+      'Ocircumflex' => '-40',
+      'Odieresis' => '-40',
+      'Ograve' => '-40',
+      'Ohungarumlaut' => '-40',
+      'Omacron' => '-40',
+      'Oslash' => '-40',
+      'Otilde' => '-40',
+      'a' => '-111',
+      'aacute' => '-111',
+      'abreve' => '-111',
+      'acircumflex' => '-71',
+      'adieresis' => '-71',
+      'agrave' => '-71',
+      'amacron' => '-71',
+      'aogonek' => '-111',
+      'aring' => '-111',
+      'atilde' => '-71',
+      'colon' => '-74',
+      'comma' => '-129',
+      'e' => '-111',
+      'eacute' => '-111',
+      'ecaron' => '-71',
+      'ecircumflex' => '-71',
+      'edieresis' => '-71',
+      'edotaccent' => '-111',
+      'egrave' => '-71',
+      'emacron' => '-71',
+      'eogonek' => '-111',
+      'hyphen' => '-100',
+      'i' => '-60',
+      'iacute' => '-60',
+      'icircumflex' => '-20',
+      'idieresis' => '-20',
+      'igrave' => '-20',
+      'imacron' => '-20',
+      'iogonek' => '-60',
+      'o' => '-129',
+      'oacute' => '-129',
+      'ocircumflex' => '-129',
+      'odieresis' => '-89',
+      'ograve' => '-89',
+      'ohungarumlaut' => '-129',
+      'omacron' => '-89',
+      'oslash' => '-129',
+      'otilde' => '-89',
+      'period' => '-129',
+      'semicolon' => '-74',
+      'u' => '-75',
+      'uacute' => '-75',
+      'ucircumflex' => '-75',
+      'udieresis' => '-75',
+      'ugrave' => '-75',
+      'uhungarumlaut' => '-75',
+      'umacron' => '-75',
+      'uogonek' => '-75',
+      'uring' => '-75',
+    ),
+    'W' => 
+    array (
+      'A' => '-120',
+      'Aacute' => '-120',
+      'Abreve' => '-120',
+      'Acircumflex' => '-120',
+      'Adieresis' => '-120',
+      'Agrave' => '-120',
+      'Amacron' => '-120',
+      'Aogonek' => '-120',
+      'Aring' => '-120',
+      'Atilde' => '-120',
+      'O' => '-10',
+      'Oacute' => '-10',
+      'Ocircumflex' => '-10',
+      'Odieresis' => '-10',
+      'Ograve' => '-10',
+      'Ohungarumlaut' => '-10',
+      'Omacron' => '-10',
+      'Oslash' => '-10',
+      'Otilde' => '-10',
+      'a' => '-80',
+      'aacute' => '-80',
+      'abreve' => '-80',
+      'acircumflex' => '-80',
+      'adieresis' => '-80',
+      'agrave' => '-80',
+      'amacron' => '-80',
+      'aogonek' => '-80',
+      'aring' => '-80',
+      'atilde' => '-80',
+      'colon' => '-37',
+      'comma' => '-92',
+      'e' => '-80',
+      'eacute' => '-80',
+      'ecaron' => '-80',
+      'ecircumflex' => '-80',
+      'edieresis' => '-40',
+      'edotaccent' => '-80',
+      'egrave' => '-40',
+      'emacron' => '-40',
+      'eogonek' => '-80',
+      'hyphen' => '-65',
+      'i' => '-40',
+      'iacute' => '-40',
+      'iogonek' => '-40',
+      'o' => '-80',
+      'oacute' => '-80',
+      'ocircumflex' => '-80',
+      'odieresis' => '-80',
+      'ograve' => '-80',
+      'ohungarumlaut' => '-80',
+      'omacron' => '-80',
+      'oslash' => '-80',
+      'otilde' => '-80',
+      'period' => '-92',
+      'semicolon' => '-37',
+      'u' => '-50',
+      'uacute' => '-50',
+      'ucircumflex' => '-50',
+      'udieresis' => '-50',
+      'ugrave' => '-50',
+      'uhungarumlaut' => '-50',
+      'umacron' => '-50',
+      'uogonek' => '-50',
+      'uring' => '-50',
+      'y' => '-73',
+      'yacute' => '-73',
+      'ydieresis' => '-73',
+    ),
+    'Y' => 
+    array (
+      'A' => '-120',
+      'Aacute' => '-120',
+      'Abreve' => '-120',
+      'Acircumflex' => '-120',
+      'Adieresis' => '-120',
+      'Agrave' => '-120',
+      'Amacron' => '-120',
+      'Aogonek' => '-120',
+      'Aring' => '-120',
+      'Atilde' => '-120',
+      'O' => '-30',
+      'Oacute' => '-30',
+      'Ocircumflex' => '-30',
+      'Odieresis' => '-30',
+      'Ograve' => '-30',
+      'Ohungarumlaut' => '-30',
+      'Omacron' => '-30',
+      'Oslash' => '-30',
+      'Otilde' => '-30',
+      'a' => '-100',
+      'aacute' => '-100',
+      'abreve' => '-100',
+      'acircumflex' => '-100',
+      'adieresis' => '-60',
+      'agrave' => '-60',
+      'amacron' => '-60',
+      'aogonek' => '-100',
+      'aring' => '-100',
+      'atilde' => '-60',
+      'colon' => '-92',
+      'comma' => '-129',
+      'e' => '-100',
+      'eacute' => '-100',
+      'ecaron' => '-100',
+      'ecircumflex' => '-100',
+      'edieresis' => '-60',
+      'edotaccent' => '-100',
+      'egrave' => '-60',
+      'emacron' => '-60',
+      'eogonek' => '-100',
+      'hyphen' => '-111',
+      'i' => '-55',
+      'iacute' => '-55',
+      'iogonek' => '-55',
+      'o' => '-110',
+      'oacute' => '-110',
+      'ocircumflex' => '-110',
+      'odieresis' => '-70',
+      'ograve' => '-70',
+      'ohungarumlaut' => '-110',
+      'omacron' => '-70',
+      'oslash' => '-110',
+      'otilde' => '-70',
+      'period' => '-129',
+      'semicolon' => '-92',
+      'u' => '-111',
+      'uacute' => '-111',
+      'ucircumflex' => '-111',
+      'udieresis' => '-71',
+      'ugrave' => '-71',
+      'uhungarumlaut' => '-111',
+      'umacron' => '-71',
+      'uogonek' => '-111',
+      'uring' => '-111',
+    ),
+    'Yacute' => 
+    array (
+      'A' => '-120',
+      'Aacute' => '-120',
+      'Abreve' => '-120',
+      'Acircumflex' => '-120',
+      'Adieresis' => '-120',
+      'Agrave' => '-120',
+      'Amacron' => '-120',
+      'Aogonek' => '-120',
+      'Aring' => '-120',
+      'Atilde' => '-120',
+      'O' => '-30',
+      'Oacute' => '-30',
+      'Ocircumflex' => '-30',
+      'Odieresis' => '-30',
+      'Ograve' => '-30',
+      'Ohungarumlaut' => '-30',
+      'Omacron' => '-30',
+      'Oslash' => '-30',
+      'Otilde' => '-30',
+      'a' => '-100',
+      'aacute' => '-100',
+      'abreve' => '-100',
+      'acircumflex' => '-100',
+      'adieresis' => '-60',
+      'agrave' => '-60',
+      'amacron' => '-60',
+      'aogonek' => '-100',
+      'aring' => '-100',
+      'atilde' => '-60',
+      'colon' => '-92',
+      'comma' => '-129',
+      'e' => '-100',
+      'eacute' => '-100',
+      'ecaron' => '-100',
+      'ecircumflex' => '-100',
+      'edieresis' => '-60',
+      'edotaccent' => '-100',
+      'egrave' => '-60',
+      'emacron' => '-60',
+      'eogonek' => '-100',
+      'hyphen' => '-111',
+      'i' => '-55',
+      'iacute' => '-55',
+      'iogonek' => '-55',
+      'o' => '-110',
+      'oacute' => '-110',
+      'ocircumflex' => '-110',
+      'odieresis' => '-70',
+      'ograve' => '-70',
+      'ohungarumlaut' => '-110',
+      'omacron' => '-70',
+      'oslash' => '-110',
+      'otilde' => '-70',
+      'period' => '-129',
+      'semicolon' => '-92',
+      'u' => '-111',
+      'uacute' => '-111',
+      'ucircumflex' => '-111',
+      'udieresis' => '-71',
+      'ugrave' => '-71',
+      'uhungarumlaut' => '-111',
+      'umacron' => '-71',
+      'uogonek' => '-111',
+      'uring' => '-111',
+    ),
+    'Ydieresis' => 
+    array (
+      'A' => '-120',
+      'Aacute' => '-120',
+      'Abreve' => '-120',
+      'Acircumflex' => '-120',
+      'Adieresis' => '-120',
+      'Agrave' => '-120',
+      'Amacron' => '-120',
+      'Aogonek' => '-120',
+      'Aring' => '-120',
+      'Atilde' => '-120',
+      'O' => '-30',
+      'Oacute' => '-30',
+      'Ocircumflex' => '-30',
+      'Odieresis' => '-30',
+      'Ograve' => '-30',
+      'Ohungarumlaut' => '-30',
+      'Omacron' => '-30',
+      'Oslash' => '-30',
+      'Otilde' => '-30',
+      'a' => '-100',
+      'aacute' => '-100',
+      'abreve' => '-100',
+      'acircumflex' => '-100',
+      'adieresis' => '-60',
+      'agrave' => '-60',
+      'amacron' => '-60',
+      'aogonek' => '-100',
+      'aring' => '-100',
+      'atilde' => '-100',
+      'colon' => '-92',
+      'comma' => '-129',
+      'e' => '-100',
+      'eacute' => '-100',
+      'ecaron' => '-100',
+      'ecircumflex' => '-100',
+      'edieresis' => '-60',
+      'edotaccent' => '-100',
+      'egrave' => '-60',
+      'emacron' => '-60',
+      'eogonek' => '-100',
+      'hyphen' => '-111',
+      'i' => '-55',
+      'iacute' => '-55',
+      'iogonek' => '-55',
+      'o' => '-110',
+      'oacute' => '-110',
+      'ocircumflex' => '-110',
+      'odieresis' => '-70',
+      'ograve' => '-70',
+      'ohungarumlaut' => '-110',
+      'omacron' => '-70',
+      'oslash' => '-110',
+      'otilde' => '-70',
+      'period' => '-129',
+      'semicolon' => '-92',
+      'u' => '-111',
+      'uacute' => '-111',
+      'ucircumflex' => '-111',
+      'udieresis' => '-71',
+      'ugrave' => '-71',
+      'uhungarumlaut' => '-111',
+      'umacron' => '-71',
+      'uogonek' => '-111',
+      'uring' => '-111',
+    ),
+    'a' => 
+    array (
+      'v' => '-20',
+      'w' => '-15',
+    ),
+    'aacute' => 
+    array (
+      'v' => '-20',
+      'w' => '-15',
+    ),
+    'abreve' => 
+    array (
+      'v' => '-20',
+      'w' => '-15',
+    ),
+    'acircumflex' => 
+    array (
+      'v' => '-20',
+      'w' => '-15',
+    ),
+    'adieresis' => 
+    array (
+      'v' => '-20',
+      'w' => '-15',
+    ),
+    'agrave' => 
+    array (
+      'v' => '-20',
+      'w' => '-15',
+    ),
+    'amacron' => 
+    array (
+      'v' => '-20',
+      'w' => '-15',
+    ),
+    'aogonek' => 
+    array (
+      'v' => '-20',
+      'w' => '-15',
+    ),
+    'aring' => 
+    array (
+      'v' => '-20',
+      'w' => '-15',
+    ),
+    'atilde' => 
+    array (
+      'v' => '-20',
+      'w' => '-15',
+    ),
+    'b' => 
+    array (
+      'period' => '-40',
+      'u' => '-20',
+      'uacute' => '-20',
+      'ucircumflex' => '-20',
+      'udieresis' => '-20',
+      'ugrave' => '-20',
+      'uhungarumlaut' => '-20',
+      'umacron' => '-20',
+      'uogonek' => '-20',
+      'uring' => '-20',
+      'v' => '-15',
+    ),
+    'c' => 
+    array (
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'cacute' => 
+    array (
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'ccaron' => 
+    array (
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'ccedilla' => 
+    array (
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'comma' => 
+    array (
+      'quotedblright' => '-70',
+      'quoteright' => '-70',
+    ),
+    'e' => 
+    array (
+      'g' => '-15',
+      'gbreve' => '-15',
+      'gcommaaccent' => '-15',
+      'v' => '-25',
+      'w' => '-25',
+      'x' => '-15',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'eacute' => 
+    array (
+      'g' => '-15',
+      'gbreve' => '-15',
+      'gcommaaccent' => '-15',
+      'v' => '-25',
+      'w' => '-25',
+      'x' => '-15',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'ecaron' => 
+    array (
+      'g' => '-15',
+      'gbreve' => '-15',
+      'gcommaaccent' => '-15',
+      'v' => '-25',
+      'w' => '-25',
+      'x' => '-15',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'ecircumflex' => 
+    array (
+      'g' => '-15',
+      'gbreve' => '-15',
+      'gcommaaccent' => '-15',
+      'v' => '-25',
+      'w' => '-25',
+      'x' => '-15',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'edieresis' => 
+    array (
+      'g' => '-15',
+      'gbreve' => '-15',
+      'gcommaaccent' => '-15',
+      'v' => '-25',
+      'w' => '-25',
+      'x' => '-15',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'edotaccent' => 
+    array (
+      'g' => '-15',
+      'gbreve' => '-15',
+      'gcommaaccent' => '-15',
+      'v' => '-25',
+      'w' => '-25',
+      'x' => '-15',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'egrave' => 
+    array (
+      'g' => '-15',
+      'gbreve' => '-15',
+      'gcommaaccent' => '-15',
+      'v' => '-25',
+      'w' => '-25',
+      'x' => '-15',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'emacron' => 
+    array (
+      'g' => '-15',
+      'gbreve' => '-15',
+      'gcommaaccent' => '-15',
+      'v' => '-25',
+      'w' => '-25',
+      'x' => '-15',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'eogonek' => 
+    array (
+      'g' => '-15',
+      'gbreve' => '-15',
+      'gcommaaccent' => '-15',
+      'v' => '-25',
+      'w' => '-25',
+      'x' => '-15',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'f' => 
+    array (
+      'a' => '-10',
+      'aacute' => '-10',
+      'abreve' => '-10',
+      'acircumflex' => '-10',
+      'adieresis' => '-10',
+      'agrave' => '-10',
+      'amacron' => '-10',
+      'aogonek' => '-10',
+      'aring' => '-10',
+      'atilde' => '-10',
+      'dotlessi' => '-50',
+      'f' => '-25',
+      'i' => '-20',
+      'iacute' => '-20',
+      'quoteright' => '55',
+    ),
+    'g' => 
+    array (
+      'a' => '-5',
+      'aacute' => '-5',
+      'abreve' => '-5',
+      'acircumflex' => '-5',
+      'adieresis' => '-5',
+      'agrave' => '-5',
+      'amacron' => '-5',
+      'aogonek' => '-5',
+      'aring' => '-5',
+      'atilde' => '-5',
+    ),
+    'gbreve' => 
+    array (
+      'a' => '-5',
+      'aacute' => '-5',
+      'abreve' => '-5',
+      'acircumflex' => '-5',
+      'adieresis' => '-5',
+      'agrave' => '-5',
+      'amacron' => '-5',
+      'aogonek' => '-5',
+      'aring' => '-5',
+      'atilde' => '-5',
+    ),
+    'gcommaaccent' => 
+    array (
+      'a' => '-5',
+      'aacute' => '-5',
+      'abreve' => '-5',
+      'acircumflex' => '-5',
+      'adieresis' => '-5',
+      'agrave' => '-5',
+      'amacron' => '-5',
+      'aogonek' => '-5',
+      'aring' => '-5',
+      'atilde' => '-5',
+    ),
+    'h' => 
+    array (
+      'y' => '-5',
+      'yacute' => '-5',
+      'ydieresis' => '-5',
+    ),
+    'i' => 
+    array (
+      'v' => '-25',
+    ),
+    'iacute' => 
+    array (
+      'v' => '-25',
+    ),
+    'icircumflex' => 
+    array (
+      'v' => '-25',
+    ),
+    'idieresis' => 
+    array (
+      'v' => '-25',
+    ),
+    'igrave' => 
+    array (
+      'v' => '-25',
+    ),
+    'imacron' => 
+    array (
+      'v' => '-25',
+    ),
+    'iogonek' => 
+    array (
+      'v' => '-25',
+    ),
+    'k' => 
+    array (
+      'e' => '-10',
+      'eacute' => '-10',
+      'ecaron' => '-10',
+      'ecircumflex' => '-10',
+      'edieresis' => '-10',
+      'edotaccent' => '-10',
+      'egrave' => '-10',
+      'emacron' => '-10',
+      'eogonek' => '-10',
+      'o' => '-10',
+      'oacute' => '-10',
+      'ocircumflex' => '-10',
+      'odieresis' => '-10',
+      'ograve' => '-10',
+      'ohungarumlaut' => '-10',
+      'omacron' => '-10',
+      'oslash' => '-10',
+      'otilde' => '-10',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'kcommaaccent' => 
+    array (
+      'e' => '-10',
+      'eacute' => '-10',
+      'ecaron' => '-10',
+      'ecircumflex' => '-10',
+      'edieresis' => '-10',
+      'edotaccent' => '-10',
+      'egrave' => '-10',
+      'emacron' => '-10',
+      'eogonek' => '-10',
+      'o' => '-10',
+      'oacute' => '-10',
+      'ocircumflex' => '-10',
+      'odieresis' => '-10',
+      'ograve' => '-10',
+      'ohungarumlaut' => '-10',
+      'omacron' => '-10',
+      'oslash' => '-10',
+      'otilde' => '-10',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'l' => 
+    array (
+      'w' => '-10',
+    ),
+    'lacute' => 
+    array (
+      'w' => '-10',
+    ),
+    'lcommaaccent' => 
+    array (
+      'w' => '-10',
+    ),
+    'lslash' => 
+    array (
+      'w' => '-10',
+    ),
+    'n' => 
+    array (
+      'v' => '-40',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'nacute' => 
+    array (
+      'v' => '-40',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'ncaron' => 
+    array (
+      'v' => '-40',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'ncommaaccent' => 
+    array (
+      'v' => '-40',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'ntilde' => 
+    array (
+      'v' => '-40',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'o' => 
+    array (
+      'v' => '-15',
+      'w' => '-25',
+      'y' => '-10',
+      'yacute' => '-10',
+      'ydieresis' => '-10',
+    ),
+    'oacute' => 
+    array (
+      'v' => '-15',
+      'w' => '-25',
+      'y' => '-10',
+      'yacute' => '-10',
+      'ydieresis' => '-10',
+    ),
+    'ocircumflex' => 
+    array (
+      'v' => '-15',
+      'w' => '-25',
+      'y' => '-10',
+      'yacute' => '-10',
+      'ydieresis' => '-10',
+    ),
+    'odieresis' => 
+    array (
+      'v' => '-15',
+      'w' => '-25',
+      'y' => '-10',
+      'yacute' => '-10',
+      'ydieresis' => '-10',
+    ),
+    'ograve' => 
+    array (
+      'v' => '-15',
+      'w' => '-25',
+      'y' => '-10',
+      'yacute' => '-10',
+      'ydieresis' => '-10',
+    ),
+    'ohungarumlaut' => 
+    array (
+      'v' => '-15',
+      'w' => '-25',
+      'y' => '-10',
+      'yacute' => '-10',
+      'ydieresis' => '-10',
+    ),
+    'omacron' => 
+    array (
+      'v' => '-15',
+      'w' => '-25',
+      'y' => '-10',
+      'yacute' => '-10',
+      'ydieresis' => '-10',
+    ),
+    'oslash' => 
+    array (
+      'v' => '-15',
+      'w' => '-25',
+      'y' => '-10',
+      'yacute' => '-10',
+      'ydieresis' => '-10',
+    ),
+    'otilde' => 
+    array (
+      'v' => '-15',
+      'w' => '-25',
+      'y' => '-10',
+      'yacute' => '-10',
+      'ydieresis' => '-10',
+    ),
+    'p' => 
+    array (
+      'y' => '-10',
+      'yacute' => '-10',
+      'ydieresis' => '-10',
+    ),
+    'period' => 
+    array (
+      'quotedblright' => '-70',
+      'quoteright' => '-70',
+    ),
+    'quotedblleft' => 
+    array (
+      'A' => '-80',
+      'Aacute' => '-80',
+      'Abreve' => '-80',
+      'Acircumflex' => '-80',
+      'Adieresis' => '-80',
+      'Agrave' => '-80',
+      'Amacron' => '-80',
+      'Aogonek' => '-80',
+      'Aring' => '-80',
+      'Atilde' => '-80',
+    ),
+    'quoteleft' => 
+    array (
+      'A' => '-80',
+      'Aacute' => '-80',
+      'Abreve' => '-80',
+      'Acircumflex' => '-80',
+      'Adieresis' => '-80',
+      'Agrave' => '-80',
+      'Amacron' => '-80',
+      'Aogonek' => '-80',
+      'Aring' => '-80',
+      'Atilde' => '-80',
+      'quoteleft' => '-74',
+    ),
+    'quoteright' => 
+    array (
+      'd' => '-50',
+      'dcroat' => '-50',
+      'l' => '-10',
+      'lacute' => '-10',
+      'lcommaaccent' => '-10',
+      'lslash' => '-10',
+      'quoteright' => '-74',
+      'r' => '-50',
+      'racute' => '-50',
+      'rcaron' => '-50',
+      'rcommaaccent' => '-50',
+      's' => '-55',
+      'sacute' => '-55',
+      'scaron' => '-55',
+      'scedilla' => '-55',
+      'scommaaccent' => '-55',
+      'space' => '-74',
+      't' => '-18',
+      'tcommaaccent' => '-18',
+      'v' => '-50',
+    ),
+    'r' => 
+    array (
+      'comma' => '-40',
+      'g' => '-18',
+      'gbreve' => '-18',
+      'gcommaaccent' => '-18',
+      'hyphen' => '-20',
+      'period' => '-55',
+    ),
+    'racute' => 
+    array (
+      'comma' => '-40',
+      'g' => '-18',
+      'gbreve' => '-18',
+      'gcommaaccent' => '-18',
+      'hyphen' => '-20',
+      'period' => '-55',
+    ),
+    'rcaron' => 
+    array (
+      'comma' => '-40',
+      'g' => '-18',
+      'gbreve' => '-18',
+      'gcommaaccent' => '-18',
+      'hyphen' => '-20',
+      'period' => '-55',
+    ),
+    'rcommaaccent' => 
+    array (
+      'comma' => '-40',
+      'g' => '-18',
+      'gbreve' => '-18',
+      'gcommaaccent' => '-18',
+      'hyphen' => '-20',
+      'period' => '-55',
+    ),
+    'space' => 
+    array (
+      'A' => '-55',
+      'Aacute' => '-55',
+      'Abreve' => '-55',
+      'Acircumflex' => '-55',
+      'Adieresis' => '-55',
+      'Agrave' => '-55',
+      'Amacron' => '-55',
+      'Aogonek' => '-55',
+      'Aring' => '-55',
+      'Atilde' => '-55',
+      'T' => '-18',
+      'Tcaron' => '-18',
+      'Tcommaaccent' => '-18',
+      'V' => '-50',
+      'W' => '-30',
+      'Y' => '-90',
+      'Yacute' => '-90',
+      'Ydieresis' => '-90',
+    ),
+    'v' => 
+    array (
+      'a' => '-25',
+      'aacute' => '-25',
+      'abreve' => '-25',
+      'acircumflex' => '-25',
+      'adieresis' => '-25',
+      'agrave' => '-25',
+      'amacron' => '-25',
+      'aogonek' => '-25',
+      'aring' => '-25',
+      'atilde' => '-25',
+      'comma' => '-65',
+      'e' => '-15',
+      'eacute' => '-15',
+      'ecaron' => '-15',
+      'ecircumflex' => '-15',
+      'edieresis' => '-15',
+      'edotaccent' => '-15',
+      'egrave' => '-15',
+      'emacron' => '-15',
+      'eogonek' => '-15',
+      'o' => '-20',
+      'oacute' => '-20',
+      'ocircumflex' => '-20',
+      'odieresis' => '-20',
+      'ograve' => '-20',
+      'ohungarumlaut' => '-20',
+      'omacron' => '-20',
+      'oslash' => '-20',
+      'otilde' => '-20',
+      'period' => '-65',
+    ),
+    'w' => 
+    array (
+      'a' => '-10',
+      'aacute' => '-10',
+      'abreve' => '-10',
+      'acircumflex' => '-10',
+      'adieresis' => '-10',
+      'agrave' => '-10',
+      'amacron' => '-10',
+      'aogonek' => '-10',
+      'aring' => '-10',
+      'atilde' => '-10',
+      'comma' => '-65',
+      'o' => '-10',
+      'oacute' => '-10',
+      'ocircumflex' => '-10',
+      'odieresis' => '-10',
+      'ograve' => '-10',
+      'ohungarumlaut' => '-10',
+      'omacron' => '-10',
+      'oslash' => '-10',
+      'otilde' => '-10',
+      'period' => '-65',
+    ),
+    'x' => 
+    array (
+      'e' => '-15',
+      'eacute' => '-15',
+      'ecaron' => '-15',
+      'ecircumflex' => '-15',
+      'edieresis' => '-15',
+      'edotaccent' => '-15',
+      'egrave' => '-15',
+      'emacron' => '-15',
+      'eogonek' => '-15',
+    ),
+    'y' => 
+    array (
+      'comma' => '-65',
+      'period' => '-65',
+    ),
+    'yacute' => 
+    array (
+      'comma' => '-65',
+      'period' => '-65',
+    ),
+    'ydieresis' => 
+    array (
+      'comma' => '-65',
+      'period' => '-65',
+    ),
+  ),
+  '_version_' => 1,
+);
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-BoldOblique.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-BoldOblique.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica-BoldOblique.afm	(revision 2000)
@@ -0,0 +1,2827 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+Comment Creation Date: Thu May  1 12:45:12 1997
+Comment UniqueID 43053
+Comment VMusage 14482 68586
+FontName Helvetica-BoldOblique
+FullName Helvetica Bold Oblique
+FamilyName Helvetica
+Weight Bold
+ItalicAngle -12
+IsFixedPitch false
+CharacterSet ExtendedRoman
+FontBBox -174 -228 1114 962 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 002.000
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 718
+XHeight 532
+Ascender 718
+Descender -207
+StdHW 118
+StdVW 140
+StartCharMetrics 315
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 94 0 397 718 ;
+C 34 ; WX 474 ; N quotedbl ; B 193 447 529 718 ;
+C 35 ; WX 556 ; N numbersign ; B 60 0 644 698 ;
+C 36 ; WX 556 ; N dollar ; B 67 -115 622 775 ;
+C 37 ; WX 889 ; N percent ; B 136 -19 901 710 ;
+C 38 ; WX 722 ; N ampersand ; B 89 -19 732 718 ;
+C 39 ; WX 278 ; N quoteright ; B 167 445 362 718 ;
+C 40 ; WX 333 ; N parenleft ; B 76 -208 470 734 ;
+C 41 ; WX 333 ; N parenright ; B -25 -208 369 734 ;
+C 42 ; WX 389 ; N asterisk ; B 146 387 481 718 ;
+C 43 ; WX 584 ; N plus ; B 82 0 610 506 ;
+C 44 ; WX 278 ; N comma ; B 28 -168 245 146 ;
+C 45 ; WX 333 ; N hyphen ; B 73 215 379 345 ;
+C 46 ; WX 278 ; N period ; B 64 0 245 146 ;
+C 47 ; WX 278 ; N slash ; B -37 -19 468 737 ;
+C 48 ; WX 556 ; N zero ; B 86 -19 617 710 ;
+C 49 ; WX 556 ; N one ; B 173 0 529 710 ;
+C 50 ; WX 556 ; N two ; B 26 0 619 710 ;
+C 51 ; WX 556 ; N three ; B 65 -19 608 710 ;
+C 52 ; WX 556 ; N four ; B 60 0 598 710 ;
+C 53 ; WX 556 ; N five ; B 64 -19 636 698 ;
+C 54 ; WX 556 ; N six ; B 85 -19 619 710 ;
+C 55 ; WX 556 ; N seven ; B 125 0 676 698 ;
+C 56 ; WX 556 ; N eight ; B 69 -19 616 710 ;
+C 57 ; WX 556 ; N nine ; B 78 -19 615 710 ;
+C 58 ; WX 333 ; N colon ; B 92 0 351 512 ;
+C 59 ; WX 333 ; N semicolon ; B 56 -168 351 512 ;
+C 60 ; WX 584 ; N less ; B 82 -8 655 514 ;
+C 61 ; WX 584 ; N equal ; B 58 87 633 419 ;
+C 62 ; WX 584 ; N greater ; B 36 -8 609 514 ;
+C 63 ; WX 611 ; N question ; B 165 0 671 727 ;
+C 64 ; WX 975 ; N at ; B 186 -19 954 737 ;
+C 65 ; WX 722 ; N A ; B 20 0 702 718 ;
+C 66 ; WX 722 ; N B ; B 76 0 764 718 ;
+C 67 ; WX 722 ; N C ; B 107 -19 789 737 ;
+C 68 ; WX 722 ; N D ; B 76 0 777 718 ;
+C 69 ; WX 667 ; N E ; B 76 0 757 718 ;
+C 70 ; WX 611 ; N F ; B 76 0 740 718 ;
+C 71 ; WX 778 ; N G ; B 108 -19 817 737 ;
+C 72 ; WX 722 ; N H ; B 71 0 804 718 ;
+C 73 ; WX 278 ; N I ; B 64 0 367 718 ;
+C 74 ; WX 556 ; N J ; B 60 -18 637 718 ;
+C 75 ; WX 722 ; N K ; B 87 0 858 718 ;
+C 76 ; WX 611 ; N L ; B 76 0 611 718 ;
+C 77 ; WX 833 ; N M ; B 69 0 918 718 ;
+C 78 ; WX 722 ; N N ; B 69 0 807 718 ;
+C 79 ; WX 778 ; N O ; B 107 -19 823 737 ;
+C 80 ; WX 667 ; N P ; B 76 0 738 718 ;
+C 81 ; WX 778 ; N Q ; B 107 -52 823 737 ;
+C 82 ; WX 722 ; N R ; B 76 0 778 718 ;
+C 83 ; WX 667 ; N S ; B 81 -19 718 737 ;
+C 84 ; WX 611 ; N T ; B 140 0 751 718 ;
+C 85 ; WX 722 ; N U ; B 116 -19 804 718 ;
+C 86 ; WX 667 ; N V ; B 172 0 801 718 ;
+C 87 ; WX 944 ; N W ; B 169 0 1082 718 ;
+C 88 ; WX 667 ; N X ; B 14 0 791 718 ;
+C 89 ; WX 667 ; N Y ; B 168 0 806 718 ;
+C 90 ; WX 611 ; N Z ; B 25 0 737 718 ;
+C 91 ; WX 333 ; N bracketleft ; B 21 -196 462 722 ;
+C 92 ; WX 278 ; N backslash ; B 124 -19 307 737 ;
+C 93 ; WX 333 ; N bracketright ; B -18 -196 423 722 ;
+C 94 ; WX 584 ; N asciicircum ; B 131 323 591 698 ;
+C 95 ; WX 556 ; N underscore ; B -27 -125 540 -75 ;
+C 96 ; WX 278 ; N quoteleft ; B 165 454 361 727 ;
+C 97 ; WX 556 ; N a ; B 55 -14 583 546 ;
+C 98 ; WX 611 ; N b ; B 61 -14 645 718 ;
+C 99 ; WX 556 ; N c ; B 79 -14 599 546 ;
+C 100 ; WX 611 ; N d ; B 82 -14 704 718 ;
+C 101 ; WX 556 ; N e ; B 70 -14 593 546 ;
+C 102 ; WX 333 ; N f ; B 87 0 469 727 ; L i fi ; L l fl ;
+C 103 ; WX 611 ; N g ; B 38 -217 666 546 ;
+C 104 ; WX 611 ; N h ; B 65 0 629 718 ;
+C 105 ; WX 278 ; N i ; B 69 0 363 725 ;
+C 106 ; WX 278 ; N j ; B -42 -214 363 725 ;
+C 107 ; WX 556 ; N k ; B 69 0 670 718 ;
+C 108 ; WX 278 ; N l ; B 69 0 362 718 ;
+C 109 ; WX 889 ; N m ; B 64 0 909 546 ;
+C 110 ; WX 611 ; N n ; B 65 0 629 546 ;
+C 111 ; WX 611 ; N o ; B 82 -14 643 546 ;
+C 112 ; WX 611 ; N p ; B 18 -207 645 546 ;
+C 113 ; WX 611 ; N q ; B 80 -207 665 546 ;
+C 114 ; WX 389 ; N r ; B 64 0 489 546 ;
+C 115 ; WX 556 ; N s ; B 63 -14 584 546 ;
+C 116 ; WX 333 ; N t ; B 100 -6 422 676 ;
+C 117 ; WX 611 ; N u ; B 98 -14 658 532 ;
+C 118 ; WX 556 ; N v ; B 126 0 656 532 ;
+C 119 ; WX 778 ; N w ; B 123 0 882 532 ;
+C 120 ; WX 556 ; N x ; B 15 0 648 532 ;
+C 121 ; WX 556 ; N y ; B 42 -214 652 532 ;
+C 122 ; WX 500 ; N z ; B 20 0 583 532 ;
+C 123 ; WX 389 ; N braceleft ; B 94 -196 518 722 ;
+C 124 ; WX 280 ; N bar ; B 36 -225 361 775 ;
+C 125 ; WX 389 ; N braceright ; B -18 -196 407 722 ;
+C 126 ; WX 584 ; N asciitilde ; B 115 163 577 343 ;
+C 161 ; WX 333 ; N exclamdown ; B 50 -186 353 532 ;
+C 162 ; WX 556 ; N cent ; B 79 -118 599 628 ;
+C 163 ; WX 556 ; N sterling ; B 50 -16 635 718 ;
+C 164 ; WX 167 ; N fraction ; B -174 -19 487 710 ;
+C 165 ; WX 556 ; N yen ; B 60 0 713 698 ;
+C 166 ; WX 556 ; N florin ; B -50 -210 669 737 ;
+C 167 ; WX 556 ; N section ; B 61 -184 598 727 ;
+C 168 ; WX 556 ; N currency ; B 27 76 680 636 ;
+C 169 ; WX 238 ; N quotesingle ; B 165 447 321 718 ;
+C 170 ; WX 500 ; N quotedblleft ; B 160 454 588 727 ;
+C 171 ; WX 556 ; N guillemotleft ; B 135 76 571 484 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 130 76 353 484 ;
+C 173 ; WX 333 ; N guilsinglright ; B 99 76 322 484 ;
+C 174 ; WX 611 ; N fi ; B 87 0 696 727 ;
+C 175 ; WX 611 ; N fl ; B 87 0 695 727 ;
+C 177 ; WX 556 ; N endash ; B 48 227 627 333 ;
+C 178 ; WX 556 ; N dagger ; B 118 -171 626 718 ;
+C 179 ; WX 556 ; N daggerdbl ; B 46 -171 628 718 ;
+C 180 ; WX 278 ; N periodcentered ; B 110 172 276 334 ;
+C 182 ; WX 556 ; N paragraph ; B 98 -191 688 700 ;
+C 183 ; WX 350 ; N bullet ; B 83 194 420 524 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 41 -146 236 127 ;
+C 185 ; WX 500 ; N quotedblbase ; B 36 -146 463 127 ;
+C 186 ; WX 500 ; N quotedblright ; B 162 445 589 718 ;
+C 187 ; WX 556 ; N guillemotright ; B 104 76 540 484 ;
+C 188 ; WX 1000 ; N ellipsis ; B 92 0 939 146 ;
+C 189 ; WX 1000 ; N perthousand ; B 76 -19 1038 710 ;
+C 191 ; WX 611 ; N questiondown ; B 53 -195 559 532 ;
+C 193 ; WX 333 ; N grave ; B 136 604 353 750 ;
+C 194 ; WX 333 ; N acute ; B 236 604 515 750 ;
+C 195 ; WX 333 ; N circumflex ; B 118 604 471 750 ;
+C 196 ; WX 333 ; N tilde ; B 113 610 507 737 ;
+C 197 ; WX 333 ; N macron ; B 122 604 483 678 ;
+C 198 ; WX 333 ; N breve ; B 156 604 494 750 ;
+C 199 ; WX 333 ; N dotaccent ; B 235 614 385 729 ;
+C 200 ; WX 333 ; N dieresis ; B 137 614 482 729 ;
+C 202 ; WX 333 ; N ring ; B 200 568 420 776 ;
+C 203 ; WX 333 ; N cedilla ; B -37 -228 220 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 137 604 645 750 ;
+C 206 ; WX 333 ; N ogonek ; B 41 -228 264 0 ;
+C 207 ; WX 333 ; N caron ; B 149 604 502 750 ;
+C 208 ; WX 1000 ; N emdash ; B 48 227 1071 333 ;
+C 225 ; WX 1000 ; N AE ; B 5 0 1100 718 ;
+C 227 ; WX 370 ; N ordfeminine ; B 125 401 465 737 ;
+C 232 ; WX 611 ; N Lslash ; B 34 0 611 718 ;
+C 233 ; WX 778 ; N Oslash ; B 35 -27 894 745 ;
+C 234 ; WX 1000 ; N OE ; B 99 -19 1114 737 ;
+C 235 ; WX 365 ; N ordmasculine ; B 123 401 485 737 ;
+C 241 ; WX 889 ; N ae ; B 56 -14 923 546 ;
+C 245 ; WX 278 ; N dotlessi ; B 69 0 322 532 ;
+C 248 ; WX 278 ; N lslash ; B 40 0 407 718 ;
+C 249 ; WX 611 ; N oslash ; B 22 -29 701 560 ;
+C 250 ; WX 944 ; N oe ; B 82 -14 977 546 ;
+C 251 ; WX 611 ; N germandbls ; B 69 -14 657 731 ;
+C -1 ; WX 278 ; N Idieresis ; B 64 0 494 915 ;
+C -1 ; WX 556 ; N eacute ; B 70 -14 627 750 ;
+C -1 ; WX 556 ; N abreve ; B 55 -14 606 750 ;
+C -1 ; WX 611 ; N uhungarumlaut ; B 98 -14 784 750 ;
+C -1 ; WX 556 ; N ecaron ; B 70 -14 614 750 ;
+C -1 ; WX 667 ; N Ydieresis ; B 168 0 806 915 ;
+C -1 ; WX 584 ; N divide ; B 82 -42 610 548 ;
+C -1 ; WX 667 ; N Yacute ; B 168 0 806 936 ;
+C -1 ; WX 722 ; N Acircumflex ; B 20 0 706 936 ;
+C -1 ; WX 556 ; N aacute ; B 55 -14 627 750 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 116 -19 804 936 ;
+C -1 ; WX 556 ; N yacute ; B 42 -214 652 750 ;
+C -1 ; WX 556 ; N scommaaccent ; B 63 -228 584 546 ;
+C -1 ; WX 556 ; N ecircumflex ; B 70 -14 593 750 ;
+C -1 ; WX 722 ; N Uring ; B 116 -19 804 962 ;
+C -1 ; WX 722 ; N Udieresis ; B 116 -19 804 915 ;
+C -1 ; WX 556 ; N aogonek ; B 55 -224 583 546 ;
+C -1 ; WX 722 ; N Uacute ; B 116 -19 804 936 ;
+C -1 ; WX 611 ; N uogonek ; B 98 -228 658 532 ;
+C -1 ; WX 667 ; N Edieresis ; B 76 0 757 915 ;
+C -1 ; WX 722 ; N Dcroat ; B 62 0 777 718 ;
+C -1 ; WX 250 ; N commaaccent ; B 16 -228 188 -50 ;
+C -1 ; WX 737 ; N copyright ; B 56 -19 835 737 ;
+C -1 ; WX 667 ; N Emacron ; B 76 0 757 864 ;
+C -1 ; WX 556 ; N ccaron ; B 79 -14 614 750 ;
+C -1 ; WX 556 ; N aring ; B 55 -14 583 776 ;
+C -1 ; WX 722 ; N Ncommaaccent ; B 69 -228 807 718 ;
+C -1 ; WX 278 ; N lacute ; B 69 0 528 936 ;
+C -1 ; WX 556 ; N agrave ; B 55 -14 583 750 ;
+C -1 ; WX 611 ; N Tcommaaccent ; B 140 -228 751 718 ;
+C -1 ; WX 722 ; N Cacute ; B 107 -19 789 936 ;
+C -1 ; WX 556 ; N atilde ; B 55 -14 619 737 ;
+C -1 ; WX 667 ; N Edotaccent ; B 76 0 757 915 ;
+C -1 ; WX 556 ; N scaron ; B 63 -14 614 750 ;
+C -1 ; WX 556 ; N scedilla ; B 63 -228 584 546 ;
+C -1 ; WX 278 ; N iacute ; B 69 0 488 750 ;
+C -1 ; WX 494 ; N lozenge ; B 90 0 564 745 ;
+C -1 ; WX 722 ; N Rcaron ; B 76 0 778 936 ;
+C -1 ; WX 778 ; N Gcommaaccent ; B 108 -228 817 737 ;
+C -1 ; WX 611 ; N ucircumflex ; B 98 -14 658 750 ;
+C -1 ; WX 556 ; N acircumflex ; B 55 -14 583 750 ;
+C -1 ; WX 722 ; N Amacron ; B 20 0 718 864 ;
+C -1 ; WX 389 ; N rcaron ; B 64 0 530 750 ;
+C -1 ; WX 556 ; N ccedilla ; B 79 -228 599 546 ;
+C -1 ; WX 611 ; N Zdotaccent ; B 25 0 737 915 ;
+C -1 ; WX 667 ; N Thorn ; B 76 0 716 718 ;
+C -1 ; WX 778 ; N Omacron ; B 107 -19 823 864 ;
+C -1 ; WX 722 ; N Racute ; B 76 0 778 936 ;
+C -1 ; WX 667 ; N Sacute ; B 81 -19 722 936 ;
+C -1 ; WX 743 ; N dcaron ; B 82 -14 903 718 ;
+C -1 ; WX 722 ; N Umacron ; B 116 -19 804 864 ;
+C -1 ; WX 611 ; N uring ; B 98 -14 658 776 ;
+C -1 ; WX 333 ; N threesuperior ; B 91 271 441 710 ;
+C -1 ; WX 778 ; N Ograve ; B 107 -19 823 936 ;
+C -1 ; WX 722 ; N Agrave ; B 20 0 702 936 ;
+C -1 ; WX 722 ; N Abreve ; B 20 0 729 936 ;
+C -1 ; WX 584 ; N multiply ; B 57 1 635 505 ;
+C -1 ; WX 611 ; N uacute ; B 98 -14 658 750 ;
+C -1 ; WX 611 ; N Tcaron ; B 140 0 751 936 ;
+C -1 ; WX 494 ; N partialdiff ; B 43 -21 585 750 ;
+C -1 ; WX 556 ; N ydieresis ; B 42 -214 652 729 ;
+C -1 ; WX 722 ; N Nacute ; B 69 0 807 936 ;
+C -1 ; WX 278 ; N icircumflex ; B 69 0 444 750 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 76 0 757 936 ;
+C -1 ; WX 556 ; N adieresis ; B 55 -14 594 729 ;
+C -1 ; WX 556 ; N edieresis ; B 70 -14 594 729 ;
+C -1 ; WX 556 ; N cacute ; B 79 -14 627 750 ;
+C -1 ; WX 611 ; N nacute ; B 65 0 654 750 ;
+C -1 ; WX 611 ; N umacron ; B 98 -14 658 678 ;
+C -1 ; WX 722 ; N Ncaron ; B 69 0 807 936 ;
+C -1 ; WX 278 ; N Iacute ; B 64 0 528 936 ;
+C -1 ; WX 584 ; N plusminus ; B 40 0 625 506 ;
+C -1 ; WX 280 ; N brokenbar ; B 52 -150 345 700 ;
+C -1 ; WX 737 ; N registered ; B 55 -19 834 737 ;
+C -1 ; WX 778 ; N Gbreve ; B 108 -19 817 936 ;
+C -1 ; WX 278 ; N Idotaccent ; B 64 0 397 915 ;
+C -1 ; WX 600 ; N summation ; B 14 -10 670 706 ;
+C -1 ; WX 667 ; N Egrave ; B 76 0 757 936 ;
+C -1 ; WX 389 ; N racute ; B 64 0 543 750 ;
+C -1 ; WX 611 ; N omacron ; B 82 -14 643 678 ;
+C -1 ; WX 611 ; N Zacute ; B 25 0 737 936 ;
+C -1 ; WX 611 ; N Zcaron ; B 25 0 737 936 ;
+C -1 ; WX 549 ; N greaterequal ; B 26 0 629 704 ;
+C -1 ; WX 722 ; N Eth ; B 62 0 777 718 ;
+C -1 ; WX 722 ; N Ccedilla ; B 107 -228 789 737 ;
+C -1 ; WX 278 ; N lcommaaccent ; B 30 -228 362 718 ;
+C -1 ; WX 389 ; N tcaron ; B 100 -6 608 878 ;
+C -1 ; WX 556 ; N eogonek ; B 70 -228 593 546 ;
+C -1 ; WX 722 ; N Uogonek ; B 116 -228 804 718 ;
+C -1 ; WX 722 ; N Aacute ; B 20 0 750 936 ;
+C -1 ; WX 722 ; N Adieresis ; B 20 0 716 915 ;
+C -1 ; WX 556 ; N egrave ; B 70 -14 593 750 ;
+C -1 ; WX 500 ; N zacute ; B 20 0 599 750 ;
+C -1 ; WX 278 ; N iogonek ; B -14 -224 363 725 ;
+C -1 ; WX 778 ; N Oacute ; B 107 -19 823 936 ;
+C -1 ; WX 611 ; N oacute ; B 82 -14 654 750 ;
+C -1 ; WX 556 ; N amacron ; B 55 -14 595 678 ;
+C -1 ; WX 556 ; N sacute ; B 63 -14 627 750 ;
+C -1 ; WX 278 ; N idieresis ; B 69 0 455 729 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 107 -19 823 936 ;
+C -1 ; WX 722 ; N Ugrave ; B 116 -19 804 936 ;
+C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
+C -1 ; WX 611 ; N thorn ; B 18 -208 645 718 ;
+C -1 ; WX 333 ; N twosuperior ; B 69 283 449 710 ;
+C -1 ; WX 778 ; N Odieresis ; B 107 -19 823 915 ;
+C -1 ; WX 611 ; N mu ; B 22 -207 658 532 ;
+C -1 ; WX 278 ; N igrave ; B 69 0 326 750 ;
+C -1 ; WX 611 ; N ohungarumlaut ; B 82 -14 784 750 ;
+C -1 ; WX 667 ; N Eogonek ; B 76 -224 757 718 ;
+C -1 ; WX 611 ; N dcroat ; B 82 -14 789 718 ;
+C -1 ; WX 834 ; N threequarters ; B 99 -19 839 710 ;
+C -1 ; WX 667 ; N Scedilla ; B 81 -228 718 737 ;
+C -1 ; WX 400 ; N lcaron ; B 69 0 561 718 ;
+C -1 ; WX 722 ; N Kcommaaccent ; B 87 -228 858 718 ;
+C -1 ; WX 611 ; N Lacute ; B 76 0 611 936 ;
+C -1 ; WX 1000 ; N trademark ; B 179 306 1109 718 ;
+C -1 ; WX 556 ; N edotaccent ; B 70 -14 593 729 ;
+C -1 ; WX 278 ; N Igrave ; B 64 0 367 936 ;
+C -1 ; WX 278 ; N Imacron ; B 64 0 496 864 ;
+C -1 ; WX 611 ; N Lcaron ; B 76 0 643 718 ;
+C -1 ; WX 834 ; N onehalf ; B 132 -19 858 710 ;
+C -1 ; WX 549 ; N lessequal ; B 29 0 676 704 ;
+C -1 ; WX 611 ; N ocircumflex ; B 82 -14 643 750 ;
+C -1 ; WX 611 ; N ntilde ; B 65 0 646 737 ;
+C -1 ; WX 722 ; N Uhungarumlaut ; B 116 -19 880 936 ;
+C -1 ; WX 667 ; N Eacute ; B 76 0 757 936 ;
+C -1 ; WX 556 ; N emacron ; B 70 -14 595 678 ;
+C -1 ; WX 611 ; N gbreve ; B 38 -217 666 750 ;
+C -1 ; WX 834 ; N onequarter ; B 132 -19 806 710 ;
+C -1 ; WX 667 ; N Scaron ; B 81 -19 718 936 ;
+C -1 ; WX 667 ; N Scommaaccent ; B 81 -228 718 737 ;
+C -1 ; WX 778 ; N Ohungarumlaut ; B 107 -19 908 936 ;
+C -1 ; WX 400 ; N degree ; B 175 426 467 712 ;
+C -1 ; WX 611 ; N ograve ; B 82 -14 643 750 ;
+C -1 ; WX 722 ; N Ccaron ; B 107 -19 789 936 ;
+C -1 ; WX 611 ; N ugrave ; B 98 -14 658 750 ;
+C -1 ; WX 549 ; N radical ; B 112 -46 689 850 ;
+C -1 ; WX 722 ; N Dcaron ; B 76 0 777 936 ;
+C -1 ; WX 389 ; N rcommaaccent ; B 26 -228 489 546 ;
+C -1 ; WX 722 ; N Ntilde ; B 69 0 807 923 ;
+C -1 ; WX 611 ; N otilde ; B 82 -14 646 737 ;
+C -1 ; WX 722 ; N Rcommaaccent ; B 76 -228 778 718 ;
+C -1 ; WX 611 ; N Lcommaaccent ; B 76 -228 611 718 ;
+C -1 ; WX 722 ; N Atilde ; B 20 0 741 923 ;
+C -1 ; WX 722 ; N Aogonek ; B 20 -224 702 718 ;
+C -1 ; WX 722 ; N Aring ; B 20 0 702 962 ;
+C -1 ; WX 778 ; N Otilde ; B 107 -19 823 923 ;
+C -1 ; WX 500 ; N zdotaccent ; B 20 0 583 729 ;
+C -1 ; WX 667 ; N Ecaron ; B 76 0 757 936 ;
+C -1 ; WX 278 ; N Iogonek ; B -41 -228 367 718 ;
+C -1 ; WX 556 ; N kcommaaccent ; B 69 -228 670 718 ;
+C -1 ; WX 584 ; N minus ; B 82 197 610 309 ;
+C -1 ; WX 278 ; N Icircumflex ; B 64 0 484 936 ;
+C -1 ; WX 611 ; N ncaron ; B 65 0 641 750 ;
+C -1 ; WX 333 ; N tcommaaccent ; B 58 -228 422 676 ;
+C -1 ; WX 584 ; N logicalnot ; B 105 108 633 419 ;
+C -1 ; WX 611 ; N odieresis ; B 82 -14 643 729 ;
+C -1 ; WX 611 ; N udieresis ; B 98 -14 658 729 ;
+C -1 ; WX 549 ; N notequal ; B 32 -49 630 570 ;
+C -1 ; WX 611 ; N gcommaaccent ; B 38 -217 666 850 ;
+C -1 ; WX 611 ; N eth ; B 82 -14 670 737 ;
+C -1 ; WX 500 ; N zcaron ; B 20 0 586 750 ;
+C -1 ; WX 611 ; N ncommaaccent ; B 65 -228 629 546 ;
+C -1 ; WX 333 ; N onesuperior ; B 148 283 388 710 ;
+C -1 ; WX 278 ; N imacron ; B 69 0 429 678 ;
+C -1 ; WX 556 ; N Euro ; B 0 0 0 0 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 2481
+KPX A C -40
+KPX A Cacute -40
+KPX A Ccaron -40
+KPX A Ccedilla -40
+KPX A G -50
+KPX A Gbreve -50
+KPX A Gcommaaccent -50
+KPX A O -40
+KPX A Oacute -40
+KPX A Ocircumflex -40
+KPX A Odieresis -40
+KPX A Ograve -40
+KPX A Ohungarumlaut -40
+KPX A Omacron -40
+KPX A Oslash -40
+KPX A Otilde -40
+KPX A Q -40
+KPX A T -90
+KPX A Tcaron -90
+KPX A Tcommaaccent -90
+KPX A U -50
+KPX A Uacute -50
+KPX A Ucircumflex -50
+KPX A Udieresis -50
+KPX A Ugrave -50
+KPX A Uhungarumlaut -50
+KPX A Umacron -50
+KPX A Uogonek -50
+KPX A Uring -50
+KPX A V -80
+KPX A W -60
+KPX A Y -110
+KPX A Yacute -110
+KPX A Ydieresis -110
+KPX A u -30
+KPX A uacute -30
+KPX A ucircumflex -30
+KPX A udieresis -30
+KPX A ugrave -30
+KPX A uhungarumlaut -30
+KPX A umacron -30
+KPX A uogonek -30
+KPX A uring -30
+KPX A v -40
+KPX A w -30
+KPX A y -30
+KPX A yacute -30
+KPX A ydieresis -30
+KPX Aacute C -40
+KPX Aacute Cacute -40
+KPX Aacute Ccaron -40
+KPX Aacute Ccedilla -40
+KPX Aacute G -50
+KPX Aacute Gbreve -50
+KPX Aacute Gcommaaccent -50
+KPX Aacute O -40
+KPX Aacute Oacute -40
+KPX Aacute Ocircumflex -40
+KPX Aacute Odieresis -40
+KPX Aacute Ograve -40
+KPX Aacute Ohungarumlaut -40
+KPX Aacute Omacron -40
+KPX Aacute Oslash -40
+KPX Aacute Otilde -40
+KPX Aacute Q -40
+KPX Aacute T -90
+KPX Aacute Tcaron -90
+KPX Aacute Tcommaaccent -90
+KPX Aacute U -50
+KPX Aacute Uacute -50
+KPX Aacute Ucircumflex -50
+KPX Aacute Udieresis -50
+KPX Aacute Ugrave -50
+KPX Aacute Uhungarumlaut -50
+KPX Aacute Umacron -50
+KPX Aacute Uogonek -50
+KPX Aacute Uring -50
+KPX Aacute V -80
+KPX Aacute W -60
+KPX Aacute Y -110
+KPX Aacute Yacute -110
+KPX Aacute Ydieresis -110
+KPX Aacute u -30
+KPX Aacute uacute -30
+KPX Aacute ucircumflex -30
+KPX Aacute udieresis -30
+KPX Aacute ugrave -30
+KPX Aacute uhungarumlaut -30
+KPX Aacute umacron -30
+KPX Aacute uogonek -30
+KPX Aacute uring -30
+KPX Aacute v -40
+KPX Aacute w -30
+KPX Aacute y -30
+KPX Aacute yacute -30
+KPX Aacute ydieresis -30
+KPX Abreve C -40
+KPX Abreve Cacute -40
+KPX Abreve Ccaron -40
+KPX Abreve Ccedilla -40
+KPX Abreve G -50
+KPX Abreve Gbreve -50
+KPX Abreve Gcommaaccent -50
+KPX Abreve O -40
+KPX Abreve Oacute -40
+KPX Abreve Ocircumflex -40
+KPX Abreve Odieresis -40
+KPX Abreve Ograve -40
+KPX Abreve Ohungarumlaut -40
+KPX Abreve Omacron -40
+KPX Abreve Oslash -40
+KPX Abreve Otilde -40
+KPX Abreve Q -40
+KPX Abreve T -90
+KPX Abreve Tcaron -90
+KPX Abreve Tcommaaccent -90
+KPX Abreve U -50
+KPX Abreve Uacute -50
+KPX Abreve Ucircumflex -50
+KPX Abreve Udieresis -50
+KPX Abreve Ugrave -50
+KPX Abreve Uhungarumlaut -50
+KPX Abreve Umacron -50
+KPX Abreve Uogonek -50
+KPX Abreve Uring -50
+KPX Abreve V -80
+KPX Abreve W -60
+KPX Abreve Y -110
+KPX Abreve Yacute -110
+KPX Abreve Ydieresis -110
+KPX Abreve u -30
+KPX Abreve uacute -30
+KPX Abreve ucircumflex -30
+KPX Abreve udieresis -30
+KPX Abreve ugrave -30
+KPX Abreve uhungarumlaut -30
+KPX Abreve umacron -30
+KPX Abreve uogonek -30
+KPX Abreve uring -30
+KPX Abreve v -40
+KPX Abreve w -30
+KPX Abreve y -30
+KPX Abreve yacute -30
+KPX Abreve ydieresis -30
+KPX Acircumflex C -40
+KPX Acircumflex Cacute -40
+KPX Acircumflex Ccaron -40
+KPX Acircumflex Ccedilla -40
+KPX Acircumflex G -50
+KPX Acircumflex Gbreve -50
+KPX Acircumflex Gcommaaccent -50
+KPX Acircumflex O -40
+KPX Acircumflex Oacute -40
+KPX Acircumflex Ocircumflex -40
+KPX Acircumflex Odieresis -40
+KPX Acircumflex Ograve -40
+KPX Acircumflex Ohungarumlaut -40
+KPX Acircumflex Omacron -40
+KPX Acircumflex Oslash -40
+KPX Acircumflex Otilde -40
+KPX Acircumflex Q -40
+KPX Acircumflex T -90
+KPX Acircumflex Tcaron -90
+KPX Acircumflex Tcommaaccent -90
+KPX Acircumflex U -50
+KPX Acircumflex Uacute -50
+KPX Acircumflex Ucircumflex -50
+KPX Acircumflex Udieresis -50
+KPX Acircumflex Ugrave -50
+KPX Acircumflex Uhungarumlaut -50
+KPX Acircumflex Umacron -50
+KPX Acircumflex Uogonek -50
+KPX Acircumflex Uring -50
+KPX Acircumflex V -80
+KPX Acircumflex W -60
+KPX Acircumflex Y -110
+KPX Acircumflex Yacute -110
+KPX Acircumflex Ydieresis -110
+KPX Acircumflex u -30
+KPX Acircumflex uacute -30
+KPX Acircumflex ucircumflex -30
+KPX Acircumflex udieresis -30
+KPX Acircumflex ugrave -30
+KPX Acircumflex uhungarumlaut -30
+KPX Acircumflex umacron -30
+KPX Acircumflex uogonek -30
+KPX Acircumflex uring -30
+KPX Acircumflex v -40
+KPX Acircumflex w -30
+KPX Acircumflex y -30
+KPX Acircumflex yacute -30
+KPX Acircumflex ydieresis -30
+KPX Adieresis C -40
+KPX Adieresis Cacute -40
+KPX Adieresis Ccaron -40
+KPX Adieresis Ccedilla -40
+KPX Adieresis G -50
+KPX Adieresis Gbreve -50
+KPX Adieresis Gcommaaccent -50
+KPX Adieresis O -40
+KPX Adieresis Oacute -40
+KPX Adieresis Ocircumflex -40
+KPX Adieresis Odieresis -40
+KPX Adieresis Ograve -40
+KPX Adieresis Ohungarumlaut -40
+KPX Adieresis Omacron -40
+KPX Adieresis Oslash -40
+KPX Adieresis Otilde -40
+KPX Adieresis Q -40
+KPX Adieresis T -90
+KPX Adieresis Tcaron -90
+KPX Adieresis Tcommaaccent -90
+KPX Adieresis U -50
+KPX Adieresis Uacute -50
+KPX Adieresis Ucircumflex -50
+KPX Adieresis Udieresis -50
+KPX Adieresis Ugrave -50
+KPX Adieresis Uhungarumlaut -50
+KPX Adieresis Umacron -50
+KPX Adieresis Uogonek -50
+KPX Adieresis Uring -50
+KPX Adieresis V -80
+KPX Adieresis W -60
+KPX Adieresis Y -110
+KPX Adieresis Yacute -110
+KPX Adieresis Ydieresis -110
+KPX Adieresis u -30
+KPX Adieresis uacute -30
+KPX Adieresis ucircumflex -30
+KPX Adieresis udieresis -30
+KPX Adieresis ugrave -30
+KPX Adieresis uhungarumlaut -30
+KPX Adieresis umacron -30
+KPX Adieresis uogonek -30
+KPX Adieresis uring -30
+KPX Adieresis v -40
+KPX Adieresis w -30
+KPX Adieresis y -30
+KPX Adieresis yacute -30
+KPX Adieresis ydieresis -30
+KPX Agrave C -40
+KPX Agrave Cacute -40
+KPX Agrave Ccaron -40
+KPX Agrave Ccedilla -40
+KPX Agrave G -50
+KPX Agrave Gbreve -50
+KPX Agrave Gcommaaccent -50
+KPX Agrave O -40
+KPX Agrave Oacute -40
+KPX Agrave Ocircumflex -40
+KPX Agrave Odieresis -40
+KPX Agrave Ograve -40
+KPX Agrave Ohungarumlaut -40
+KPX Agrave Omacron -40
+KPX Agrave Oslash -40
+KPX Agrave Otilde -40
+KPX Agrave Q -40
+KPX Agrave T -90
+KPX Agrave Tcaron -90
+KPX Agrave Tcommaaccent -90
+KPX Agrave U -50
+KPX Agrave Uacute -50
+KPX Agrave Ucircumflex -50
+KPX Agrave Udieresis -50
+KPX Agrave Ugrave -50
+KPX Agrave Uhungarumlaut -50
+KPX Agrave Umacron -50
+KPX Agrave Uogonek -50
+KPX Agrave Uring -50
+KPX Agrave V -80
+KPX Agrave W -60
+KPX Agrave Y -110
+KPX Agrave Yacute -110
+KPX Agrave Ydieresis -110
+KPX Agrave u -30
+KPX Agrave uacute -30
+KPX Agrave ucircumflex -30
+KPX Agrave udieresis -30
+KPX Agrave ugrave -30
+KPX Agrave uhungarumlaut -30
+KPX Agrave umacron -30
+KPX Agrave uogonek -30
+KPX Agrave uring -30
+KPX Agrave v -40
+KPX Agrave w -30
+KPX Agrave y -30
+KPX Agrave yacute -30
+KPX Agrave ydieresis -30
+KPX Amacron C -40
+KPX Amacron Cacute -40
+KPX Amacron Ccaron -40
+KPX Amacron Ccedilla -40
+KPX Amacron G -50
+KPX Amacron Gbreve -50
+KPX Amacron Gcommaaccent -50
+KPX Amacron O -40
+KPX Amacron Oacute -40
+KPX Amacron Ocircumflex -40
+KPX Amacron Odieresis -40
+KPX Amacron Ograve -40
+KPX Amacron Ohungarumlaut -40
+KPX Amacron Omacron -40
+KPX Amacron Oslash -40
+KPX Amacron Otilde -40
+KPX Amacron Q -40
+KPX Amacron T -90
+KPX Amacron Tcaron -90
+KPX Amacron Tcommaaccent -90
+KPX Amacron U -50
+KPX Amacron Uacute -50
+KPX Amacron Ucircumflex -50
+KPX Amacron Udieresis -50
+KPX Amacron Ugrave -50
+KPX Amacron Uhungarumlaut -50
+KPX Amacron Umacron -50
+KPX Amacron Uogonek -50
+KPX Amacron Uring -50
+KPX Amacron V -80
+KPX Amacron W -60
+KPX Amacron Y -110
+KPX Amacron Yacute -110
+KPX Amacron Ydieresis -110
+KPX Amacron u -30
+KPX Amacron uacute -30
+KPX Amacron ucircumflex -30
+KPX Amacron udieresis -30
+KPX Amacron ugrave -30
+KPX Amacron uhungarumlaut -30
+KPX Amacron umacron -30
+KPX Amacron uogonek -30
+KPX Amacron uring -30
+KPX Amacron v -40
+KPX Amacron w -30
+KPX Amacron y -30
+KPX Amacron yacute -30
+KPX Amacron ydieresis -30
+KPX Aogonek C -40
+KPX Aogonek Cacute -40
+KPX Aogonek Ccaron -40
+KPX Aogonek Ccedilla -40
+KPX Aogonek G -50
+KPX Aogonek Gbreve -50
+KPX Aogonek Gcommaaccent -50
+KPX Aogonek O -40
+KPX Aogonek Oacute -40
+KPX Aogonek Ocircumflex -40
+KPX Aogonek Odieresis -40
+KPX Aogonek Ograve -40
+KPX Aogonek Ohungarumlaut -40
+KPX Aogonek Omacron -40
+KPX Aogonek Oslash -40
+KPX Aogonek Otilde -40
+KPX Aogonek Q -40
+KPX Aogonek T -90
+KPX Aogonek Tcaron -90
+KPX Aogonek Tcommaaccent -90
+KPX Aogonek U -50
+KPX Aogonek Uacute -50
+KPX Aogonek Ucircumflex -50
+KPX Aogonek Udieresis -50
+KPX Aogonek Ugrave -50
+KPX Aogonek Uhungarumlaut -50
+KPX Aogonek Umacron -50
+KPX Aogonek Uogonek -50
+KPX Aogonek Uring -50
+KPX Aogonek V -80
+KPX Aogonek W -60
+KPX Aogonek Y -110
+KPX Aogonek Yacute -110
+KPX Aogonek Ydieresis -110
+KPX Aogonek u -30
+KPX Aogonek uacute -30
+KPX Aogonek ucircumflex -30
+KPX Aogonek udieresis -30
+KPX Aogonek ugrave -30
+KPX Aogonek uhungarumlaut -30
+KPX Aogonek umacron -30
+KPX Aogonek uogonek -30
+KPX Aogonek uring -30
+KPX Aogonek v -40
+KPX Aogonek w -30
+KPX Aogonek y -30
+KPX Aogonek yacute -30
+KPX Aogonek ydieresis -30
+KPX Aring C -40
+KPX Aring Cacute -40
+KPX Aring Ccaron -40
+KPX Aring Ccedilla -40
+KPX Aring G -50
+KPX Aring Gbreve -50
+KPX Aring Gcommaaccent -50
+KPX Aring O -40
+KPX Aring Oacute -40
+KPX Aring Ocircumflex -40
+KPX Aring Odieresis -40
+KPX Aring Ograve -40
+KPX Aring Ohungarumlaut -40
+KPX Aring Omacron -40
+KPX Aring Oslash -40
+KPX Aring Otilde -40
+KPX Aring Q -40
+KPX Aring T -90
+KPX Aring Tcaron -90
+KPX Aring Tcommaaccent -90
+KPX Aring U -50
+KPX Aring Uacute -50
+KPX Aring Ucircumflex -50
+KPX Aring Udieresis -50
+KPX Aring Ugrave -50
+KPX Aring Uhungarumlaut -50
+KPX Aring Umacron -50
+KPX Aring Uogonek -50
+KPX Aring Uring -50
+KPX Aring V -80
+KPX Aring W -60
+KPX Aring Y -110
+KPX Aring Yacute -110
+KPX Aring Ydieresis -110
+KPX Aring u -30
+KPX Aring uacute -30
+KPX Aring ucircumflex -30
+KPX Aring udieresis -30
+KPX Aring ugrave -30
+KPX Aring uhungarumlaut -30
+KPX Aring umacron -30
+KPX Aring uogonek -30
+KPX Aring uring -30
+KPX Aring v -40
+KPX Aring w -30
+KPX Aring y -30
+KPX Aring yacute -30
+KPX Aring ydieresis -30
+KPX Atilde C -40
+KPX Atilde Cacute -40
+KPX Atilde Ccaron -40
+KPX Atilde Ccedilla -40
+KPX Atilde G -50
+KPX Atilde Gbreve -50
+KPX Atilde Gcommaaccent -50
+KPX Atilde O -40
+KPX Atilde Oacute -40
+KPX Atilde Ocircumflex -40
+KPX Atilde Odieresis -40
+KPX Atilde Ograve -40
+KPX Atilde Ohungarumlaut -40
+KPX Atilde Omacron -40
+KPX Atilde Oslash -40
+KPX Atilde Otilde -40
+KPX Atilde Q -40
+KPX Atilde T -90
+KPX Atilde Tcaron -90
+KPX Atilde Tcommaaccent -90
+KPX Atilde U -50
+KPX Atilde Uacute -50
+KPX Atilde Ucircumflex -50
+KPX Atilde Udieresis -50
+KPX Atilde Ugrave -50
+KPX Atilde Uhungarumlaut -50
+KPX Atilde Umacron -50
+KPX Atilde Uogonek -50
+KPX Atilde Uring -50
+KPX Atilde V -80
+KPX Atilde W -60
+KPX Atilde Y -110
+KPX Atilde Yacute -110
+KPX Atilde Ydieresis -110
+KPX Atilde u -30
+KPX Atilde uacute -30
+KPX Atilde ucircumflex -30
+KPX Atilde udieresis -30
+KPX Atilde ugrave -30
+KPX Atilde uhungarumlaut -30
+KPX Atilde umacron -30
+KPX Atilde uogonek -30
+KPX Atilde uring -30
+KPX Atilde v -40
+KPX Atilde w -30
+KPX Atilde y -30
+KPX Atilde yacute -30
+KPX Atilde ydieresis -30
+KPX B A -30
+KPX B Aacute -30
+KPX B Abreve -30
+KPX B Acircumflex -30
+KPX B Adieresis -30
+KPX B Agrave -30
+KPX B Amacron -30
+KPX B Aogonek -30
+KPX B Aring -30
+KPX B Atilde -30
+KPX B U -10
+KPX B Uacute -10
+KPX B Ucircumflex -10
+KPX B Udieresis -10
+KPX B Ugrave -10
+KPX B Uhungarumlaut -10
+KPX B Umacron -10
+KPX B Uogonek -10
+KPX B Uring -10
+KPX D A -40
+KPX D Aacute -40
+KPX D Abreve -40
+KPX D Acircumflex -40
+KPX D Adieresis -40
+KPX D Agrave -40
+KPX D Amacron -40
+KPX D Aogonek -40
+KPX D Aring -40
+KPX D Atilde -40
+KPX D V -40
+KPX D W -40
+KPX D Y -70
+KPX D Yacute -70
+KPX D Ydieresis -70
+KPX D comma -30
+KPX D period -30
+KPX Dcaron A -40
+KPX Dcaron Aacute -40
+KPX Dcaron Abreve -40
+KPX Dcaron Acircumflex -40
+KPX Dcaron Adieresis -40
+KPX Dcaron Agrave -40
+KPX Dcaron Amacron -40
+KPX Dcaron Aogonek -40
+KPX Dcaron Aring -40
+KPX Dcaron Atilde -40
+KPX Dcaron V -40
+KPX Dcaron W -40
+KPX Dcaron Y -70
+KPX Dcaron Yacute -70
+KPX Dcaron Ydieresis -70
+KPX Dcaron comma -30
+KPX Dcaron period -30
+KPX Dcroat A -40
+KPX Dcroat Aacute -40
+KPX Dcroat Abreve -40
+KPX Dcroat Acircumflex -40
+KPX Dcroat Adieresis -40
+KPX Dcroat Agrave -40
+KPX Dcroat Amacron -40
+KPX Dcroat Aogonek -40
+KPX Dcroat Aring -40
+KPX Dcroat Atilde -40
+KPX Dcroat V -40
+KPX Dcroat W -40
+KPX Dcroat Y -70
+KPX Dcroat Yacute -70
+KPX Dcroat Ydieresis -70
+KPX Dcroat comma -30
+KPX Dcroat period -30
+KPX F A -80
+KPX F Aacute -80
+KPX F Abreve -80
+KPX F Acircumflex -80
+KPX F Adieresis -80
+KPX F Agrave -80
+KPX F Amacron -80
+KPX F Aogonek -80
+KPX F Aring -80
+KPX F Atilde -80
+KPX F a -20
+KPX F aacute -20
+KPX F abreve -20
+KPX F acircumflex -20
+KPX F adieresis -20
+KPX F agrave -20
+KPX F amacron -20
+KPX F aogonek -20
+KPX F aring -20
+KPX F atilde -20
+KPX F comma -100
+KPX F period -100
+KPX J A -20
+KPX J Aacute -20
+KPX J Abreve -20
+KPX J Acircumflex -20
+KPX J Adieresis -20
+KPX J Agrave -20
+KPX J Amacron -20
+KPX J Aogonek -20
+KPX J Aring -20
+KPX J Atilde -20
+KPX J comma -20
+KPX J period -20
+KPX J u -20
+KPX J uacute -20
+KPX J ucircumflex -20
+KPX J udieresis -20
+KPX J ugrave -20
+KPX J uhungarumlaut -20
+KPX J umacron -20
+KPX J uogonek -20
+KPX J uring -20
+KPX K O -30
+KPX K Oacute -30
+KPX K Ocircumflex -30
+KPX K Odieresis -30
+KPX K Ograve -30
+KPX K Ohungarumlaut -30
+KPX K Omacron -30
+KPX K Oslash -30
+KPX K Otilde -30
+KPX K e -15
+KPX K eacute -15
+KPX K ecaron -15
+KPX K ecircumflex -15
+KPX K edieresis -15
+KPX K edotaccent -15
+KPX K egrave -15
+KPX K emacron -15
+KPX K eogonek -15
+KPX K o -35
+KPX K oacute -35
+KPX K ocircumflex -35
+KPX K odieresis -35
+KPX K ograve -35
+KPX K ohungarumlaut -35
+KPX K omacron -35
+KPX K oslash -35
+KPX K otilde -35
+KPX K u -30
+KPX K uacute -30
+KPX K ucircumflex -30
+KPX K udieresis -30
+KPX K ugrave -30
+KPX K uhungarumlaut -30
+KPX K umacron -30
+KPX K uogonek -30
+KPX K uring -30
+KPX K y -40
+KPX K yacute -40
+KPX K ydieresis -40
+KPX Kcommaaccent O -30
+KPX Kcommaaccent Oacute -30
+KPX Kcommaaccent Ocircumflex -30
+KPX Kcommaaccent Odieresis -30
+KPX Kcommaaccent Ograve -30
+KPX Kcommaaccent Ohungarumlaut -30
+KPX Kcommaaccent Omacron -30
+KPX Kcommaaccent Oslash -30
+KPX Kcommaaccent Otilde -30
+KPX Kcommaaccent e -15
+KPX Kcommaaccent eacute -15
+KPX Kcommaaccent ecaron -15
+KPX Kcommaaccent ecircumflex -15
+KPX Kcommaaccent edieresis -15
+KPX Kcommaaccent edotaccent -15
+KPX Kcommaaccent egrave -15
+KPX Kcommaaccent emacron -15
+KPX Kcommaaccent eogonek -15
+KPX Kcommaaccent o -35
+KPX Kcommaaccent oacute -35
+KPX Kcommaaccent ocircumflex -35
+KPX Kcommaaccent odieresis -35
+KPX Kcommaaccent ograve -35
+KPX Kcommaaccent ohungarumlaut -35
+KPX Kcommaaccent omacron -35
+KPX Kcommaaccent oslash -35
+KPX Kcommaaccent otilde -35
+KPX Kcommaaccent u -30
+KPX Kcommaaccent uacute -30
+KPX Kcommaaccent ucircumflex -30
+KPX Kcommaaccent udieresis -30
+KPX Kcommaaccent ugrave -30
+KPX Kcommaaccent uhungarumlaut -30
+KPX Kcommaaccent umacron -30
+KPX Kcommaaccent uogonek -30
+KPX Kcommaaccent uring -30
+KPX Kcommaaccent y -40
+KPX Kcommaaccent yacute -40
+KPX Kcommaaccent ydieresis -40
+KPX L T -90
+KPX L Tcaron -90
+KPX L Tcommaaccent -90
+KPX L V -110
+KPX L W -80
+KPX L Y -120
+KPX L Yacute -120
+KPX L Ydieresis -120
+KPX L quotedblright -140
+KPX L quoteright -140
+KPX L y -30
+KPX L yacute -30
+KPX L ydieresis -30
+KPX Lacute T -90
+KPX Lacute Tcaron -90
+KPX Lacute Tcommaaccent -90
+KPX Lacute V -110
+KPX Lacute W -80
+KPX Lacute Y -120
+KPX Lacute Yacute -120
+KPX Lacute Ydieresis -120
+KPX Lacute quotedblright -140
+KPX Lacute quoteright -140
+KPX Lacute y -30
+KPX Lacute yacute -30
+KPX Lacute ydieresis -30
+KPX Lcommaaccent T -90
+KPX Lcommaaccent Tcaron -90
+KPX Lcommaaccent Tcommaaccent -90
+KPX Lcommaaccent V -110
+KPX Lcommaaccent W -80
+KPX Lcommaaccent Y -120
+KPX Lcommaaccent Yacute -120
+KPX Lcommaaccent Ydieresis -120
+KPX Lcommaaccent quotedblright -140
+KPX Lcommaaccent quoteright -140
+KPX Lcommaaccent y -30
+KPX Lcommaaccent yacute -30
+KPX Lcommaaccent ydieresis -30
+KPX Lslash T -90
+KPX Lslash Tcaron -90
+KPX Lslash Tcommaaccent -90
+KPX Lslash V -110
+KPX Lslash W -80
+KPX Lslash Y -120
+KPX Lslash Yacute -120
+KPX Lslash Ydieresis -120
+KPX Lslash quotedblright -140
+KPX Lslash quoteright -140
+KPX Lslash y -30
+KPX Lslash yacute -30
+KPX Lslash ydieresis -30
+KPX O A -50
+KPX O Aacute -50
+KPX O Abreve -50
+KPX O Acircumflex -50
+KPX O Adieresis -50
+KPX O Agrave -50
+KPX O Amacron -50
+KPX O Aogonek -50
+KPX O Aring -50
+KPX O Atilde -50
+KPX O T -40
+KPX O Tcaron -40
+KPX O Tcommaaccent -40
+KPX O V -50
+KPX O W -50
+KPX O X -50
+KPX O Y -70
+KPX O Yacute -70
+KPX O Ydieresis -70
+KPX O comma -40
+KPX O period -40
+KPX Oacute A -50
+KPX Oacute Aacute -50
+KPX Oacute Abreve -50
+KPX Oacute Acircumflex -50
+KPX Oacute Adieresis -50
+KPX Oacute Agrave -50
+KPX Oacute Amacron -50
+KPX Oacute Aogonek -50
+KPX Oacute Aring -50
+KPX Oacute Atilde -50
+KPX Oacute T -40
+KPX Oacute Tcaron -40
+KPX Oacute Tcommaaccent -40
+KPX Oacute V -50
+KPX Oacute W -50
+KPX Oacute X -50
+KPX Oacute Y -70
+KPX Oacute Yacute -70
+KPX Oacute Ydieresis -70
+KPX Oacute comma -40
+KPX Oacute period -40
+KPX Ocircumflex A -50
+KPX Ocircumflex Aacute -50
+KPX Ocircumflex Abreve -50
+KPX Ocircumflex Acircumflex -50
+KPX Ocircumflex Adieresis -50
+KPX Ocircumflex Agrave -50
+KPX Ocircumflex Amacron -50
+KPX Ocircumflex Aogonek -50
+KPX Ocircumflex Aring -50
+KPX Ocircumflex Atilde -50
+KPX Ocircumflex T -40
+KPX Ocircumflex Tcaron -40
+KPX Ocircumflex Tcommaaccent -40
+KPX Ocircumflex V -50
+KPX Ocircumflex W -50
+KPX Ocircumflex X -50
+KPX Ocircumflex Y -70
+KPX Ocircumflex Yacute -70
+KPX Ocircumflex Ydieresis -70
+KPX Ocircumflex comma -40
+KPX Ocircumflex period -40
+KPX Odieresis A -50
+KPX Odieresis Aacute -50
+KPX Odieresis Abreve -50
+KPX Odieresis Acircumflex -50
+KPX Odieresis Adieresis -50
+KPX Odieresis Agrave -50
+KPX Odieresis Amacron -50
+KPX Odieresis Aogonek -50
+KPX Odieresis Aring -50
+KPX Odieresis Atilde -50
+KPX Odieresis T -40
+KPX Odieresis Tcaron -40
+KPX Odieresis Tcommaaccent -40
+KPX Odieresis V -50
+KPX Odieresis W -50
+KPX Odieresis X -50
+KPX Odieresis Y -70
+KPX Odieresis Yacute -70
+KPX Odieresis Ydieresis -70
+KPX Odieresis comma -40
+KPX Odieresis period -40
+KPX Ograve A -50
+KPX Ograve Aacute -50
+KPX Ograve Abreve -50
+KPX Ograve Acircumflex -50
+KPX Ograve Adieresis -50
+KPX Ograve Agrave -50
+KPX Ograve Amacron -50
+KPX Ograve Aogonek -50
+KPX Ograve Aring -50
+KPX Ograve Atilde -50
+KPX Ograve T -40
+KPX Ograve Tcaron -40
+KPX Ograve Tcommaaccent -40
+KPX Ograve V -50
+KPX Ograve W -50
+KPX Ograve X -50
+KPX Ograve Y -70
+KPX Ograve Yacute -70
+KPX Ograve Ydieresis -70
+KPX Ograve comma -40
+KPX Ograve period -40
+KPX Ohungarumlaut A -50
+KPX Ohungarumlaut Aacute -50
+KPX Ohungarumlaut Abreve -50
+KPX Ohungarumlaut Acircumflex -50
+KPX Ohungarumlaut Adieresis -50
+KPX Ohungarumlaut Agrave -50
+KPX Ohungarumlaut Amacron -50
+KPX Ohungarumlaut Aogonek -50
+KPX Ohungarumlaut Aring -50
+KPX Ohungarumlaut Atilde -50
+KPX Ohungarumlaut T -40
+KPX Ohungarumlaut Tcaron -40
+KPX Ohungarumlaut Tcommaaccent -40
+KPX Ohungarumlaut V -50
+KPX Ohungarumlaut W -50
+KPX Ohungarumlaut X -50
+KPX Ohungarumlaut Y -70
+KPX Ohungarumlaut Yacute -70
+KPX Ohungarumlaut Ydieresis -70
+KPX Ohungarumlaut comma -40
+KPX Ohungarumlaut period -40
+KPX Omacron A -50
+KPX Omacron Aacute -50
+KPX Omacron Abreve -50
+KPX Omacron Acircumflex -50
+KPX Omacron Adieresis -50
+KPX Omacron Agrave -50
+KPX Omacron Amacron -50
+KPX Omacron Aogonek -50
+KPX Omacron Aring -50
+KPX Omacron Atilde -50
+KPX Omacron T -40
+KPX Omacron Tcaron -40
+KPX Omacron Tcommaaccent -40
+KPX Omacron V -50
+KPX Omacron W -50
+KPX Omacron X -50
+KPX Omacron Y -70
+KPX Omacron Yacute -70
+KPX Omacron Ydieresis -70
+KPX Omacron comma -40
+KPX Omacron period -40
+KPX Oslash A -50
+KPX Oslash Aacute -50
+KPX Oslash Abreve -50
+KPX Oslash Acircumflex -50
+KPX Oslash Adieresis -50
+KPX Oslash Agrave -50
+KPX Oslash Amacron -50
+KPX Oslash Aogonek -50
+KPX Oslash Aring -50
+KPX Oslash Atilde -50
+KPX Oslash T -40
+KPX Oslash Tcaron -40
+KPX Oslash Tcommaaccent -40
+KPX Oslash V -50
+KPX Oslash W -50
+KPX Oslash X -50
+KPX Oslash Y -70
+KPX Oslash Yacute -70
+KPX Oslash Ydieresis -70
+KPX Oslash comma -40
+KPX Oslash period -40
+KPX Otilde A -50
+KPX Otilde Aacute -50
+KPX Otilde Abreve -50
+KPX Otilde Acircumflex -50
+KPX Otilde Adieresis -50
+KPX Otilde Agrave -50
+KPX Otilde Amacron -50
+KPX Otilde Aogonek -50
+KPX Otilde Aring -50
+KPX Otilde Atilde -50
+KPX Otilde T -40
+KPX Otilde Tcaron -40
+KPX Otilde Tcommaaccent -40
+KPX Otilde V -50
+KPX Otilde W -50
+KPX Otilde X -50
+KPX Otilde Y -70
+KPX Otilde Yacute -70
+KPX Otilde Ydieresis -70
+KPX Otilde comma -40
+KPX Otilde period -40
+KPX P A -100
+KPX P Aacute -100
+KPX P Abreve -100
+KPX P Acircumflex -100
+KPX P Adieresis -100
+KPX P Agrave -100
+KPX P Amacron -100
+KPX P Aogonek -100
+KPX P Aring -100
+KPX P Atilde -100
+KPX P a -30
+KPX P aacute -30
+KPX P abreve -30
+KPX P acircumflex -30
+KPX P adieresis -30
+KPX P agrave -30
+KPX P amacron -30
+KPX P aogonek -30
+KPX P aring -30
+KPX P atilde -30
+KPX P comma -120
+KPX P e -30
+KPX P eacute -30
+KPX P ecaron -30
+KPX P ecircumflex -30
+KPX P edieresis -30
+KPX P edotaccent -30
+KPX P egrave -30
+KPX P emacron -30
+KPX P eogonek -30
+KPX P o -40
+KPX P oacute -40
+KPX P ocircumflex -40
+KPX P odieresis -40
+KPX P ograve -40
+KPX P ohungarumlaut -40
+KPX P omacron -40
+KPX P oslash -40
+KPX P otilde -40
+KPX P period -120
+KPX Q U -10
+KPX Q Uacute -10
+KPX Q Ucircumflex -10
+KPX Q Udieresis -10
+KPX Q Ugrave -10
+KPX Q Uhungarumlaut -10
+KPX Q Umacron -10
+KPX Q Uogonek -10
+KPX Q Uring -10
+KPX Q comma 20
+KPX Q period 20
+KPX R O -20
+KPX R Oacute -20
+KPX R Ocircumflex -20
+KPX R Odieresis -20
+KPX R Ograve -20
+KPX R Ohungarumlaut -20
+KPX R Omacron -20
+KPX R Oslash -20
+KPX R Otilde -20
+KPX R T -20
+KPX R Tcaron -20
+KPX R Tcommaaccent -20
+KPX R U -20
+KPX R Uacute -20
+KPX R Ucircumflex -20
+KPX R Udieresis -20
+KPX R Ugrave -20
+KPX R Uhungarumlaut -20
+KPX R Umacron -20
+KPX R Uogonek -20
+KPX R Uring -20
+KPX R V -50
+KPX R W -40
+KPX R Y -50
+KPX R Yacute -50
+KPX R Ydieresis -50
+KPX Racute O -20
+KPX Racute Oacute -20
+KPX Racute Ocircumflex -20
+KPX Racute Odieresis -20
+KPX Racute Ograve -20
+KPX Racute Ohungarumlaut -20
+KPX Racute Omacron -20
+KPX Racute Oslash -20
+KPX Racute Otilde -20
+KPX Racute T -20
+KPX Racute Tcaron -20
+KPX Racute Tcommaaccent -20
+KPX Racute U -20
+KPX Racute Uacute -20
+KPX Racute Ucircumflex -20
+KPX Racute Udieresis -20
+KPX Racute Ugrave -20
+KPX Racute Uhungarumlaut -20
+KPX Racute Umacron -20
+KPX Racute Uogonek -20
+KPX Racute Uring -20
+KPX Racute V -50
+KPX Racute W -40
+KPX Racute Y -50
+KPX Racute Yacute -50
+KPX Racute Ydieresis -50
+KPX Rcaron O -20
+KPX Rcaron Oacute -20
+KPX Rcaron Ocircumflex -20
+KPX Rcaron Odieresis -20
+KPX Rcaron Ograve -20
+KPX Rcaron Ohungarumlaut -20
+KPX Rcaron Omacron -20
+KPX Rcaron Oslash -20
+KPX Rcaron Otilde -20
+KPX Rcaron T -20
+KPX Rcaron Tcaron -20
+KPX Rcaron Tcommaaccent -20
+KPX Rcaron U -20
+KPX Rcaron Uacute -20
+KPX Rcaron Ucircumflex -20
+KPX Rcaron Udieresis -20
+KPX Rcaron Ugrave -20
+KPX Rcaron Uhungarumlaut -20
+KPX Rcaron Umacron -20
+KPX Rcaron Uogonek -20
+KPX Rcaron Uring -20
+KPX Rcaron V -50
+KPX Rcaron W -40
+KPX Rcaron Y -50
+KPX Rcaron Yacute -50
+KPX Rcaron Ydieresis -50
+KPX Rcommaaccent O -20
+KPX Rcommaaccent Oacute -20
+KPX Rcommaaccent Ocircumflex -20
+KPX Rcommaaccent Odieresis -20
+KPX Rcommaaccent Ograve -20
+KPX Rcommaaccent Ohungarumlaut -20
+KPX Rcommaaccent Omacron -20
+KPX Rcommaaccent Oslash -20
+KPX Rcommaaccent Otilde -20
+KPX Rcommaaccent T -20
+KPX Rcommaaccent Tcaron -20
+KPX Rcommaaccent Tcommaaccent -20
+KPX Rcommaaccent U -20
+KPX Rcommaaccent Uacute -20
+KPX Rcommaaccent Ucircumflex -20
+KPX Rcommaaccent Udieresis -20
+KPX Rcommaaccent Ugrave -20
+KPX Rcommaaccent Uhungarumlaut -20
+KPX Rcommaaccent Umacron -20
+KPX Rcommaaccent Uogonek -20
+KPX Rcommaaccent Uring -20
+KPX Rcommaaccent V -50
+KPX Rcommaaccent W -40
+KPX Rcommaaccent Y -50
+KPX Rcommaaccent Yacute -50
+KPX Rcommaaccent Ydieresis -50
+KPX T A -90
+KPX T Aacute -90
+KPX T Abreve -90
+KPX T Acircumflex -90
+KPX T Adieresis -90
+KPX T Agrave -90
+KPX T Amacron -90
+KPX T Aogonek -90
+KPX T Aring -90
+KPX T Atilde -90
+KPX T O -40
+KPX T Oacute -40
+KPX T Ocircumflex -40
+KPX T Odieresis -40
+KPX T Ograve -40
+KPX T Ohungarumlaut -40
+KPX T Omacron -40
+KPX T Oslash -40
+KPX T Otilde -40
+KPX T a -80
+KPX T aacute -80
+KPX T abreve -80
+KPX T acircumflex -80
+KPX T adieresis -80
+KPX T agrave -80
+KPX T amacron -80
+KPX T aogonek -80
+KPX T aring -80
+KPX T atilde -80
+KPX T colon -40
+KPX T comma -80
+KPX T e -60
+KPX T eacute -60
+KPX T ecaron -60
+KPX T ecircumflex -60
+KPX T edieresis -60
+KPX T edotaccent -60
+KPX T egrave -60
+KPX T emacron -60
+KPX T eogonek -60
+KPX T hyphen -120
+KPX T o -80
+KPX T oacute -80
+KPX T ocircumflex -80
+KPX T odieresis -80
+KPX T ograve -80
+KPX T ohungarumlaut -80
+KPX T omacron -80
+KPX T oslash -80
+KPX T otilde -80
+KPX T period -80
+KPX T r -80
+KPX T racute -80
+KPX T rcommaaccent -80
+KPX T semicolon -40
+KPX T u -90
+KPX T uacute -90
+KPX T ucircumflex -90
+KPX T udieresis -90
+KPX T ugrave -90
+KPX T uhungarumlaut -90
+KPX T umacron -90
+KPX T uogonek -90
+KPX T uring -90
+KPX T w -60
+KPX T y -60
+KPX T yacute -60
+KPX T ydieresis -60
+KPX Tcaron A -90
+KPX Tcaron Aacute -90
+KPX Tcaron Abreve -90
+KPX Tcaron Acircumflex -90
+KPX Tcaron Adieresis -90
+KPX Tcaron Agrave -90
+KPX Tcaron Amacron -90
+KPX Tcaron Aogonek -90
+KPX Tcaron Aring -90
+KPX Tcaron Atilde -90
+KPX Tcaron O -40
+KPX Tcaron Oacute -40
+KPX Tcaron Ocircumflex -40
+KPX Tcaron Odieresis -40
+KPX Tcaron Ograve -40
+KPX Tcaron Ohungarumlaut -40
+KPX Tcaron Omacron -40
+KPX Tcaron Oslash -40
+KPX Tcaron Otilde -40
+KPX Tcaron a -80
+KPX Tcaron aacute -80
+KPX Tcaron abreve -80
+KPX Tcaron acircumflex -80
+KPX Tcaron adieresis -80
+KPX Tcaron agrave -80
+KPX Tcaron amacron -80
+KPX Tcaron aogonek -80
+KPX Tcaron aring -80
+KPX Tcaron atilde -80
+KPX Tcaron colon -40
+KPX Tcaron comma -80
+KPX Tcaron e -60
+KPX Tcaron eacute -60
+KPX Tcaron ecaron -60
+KPX Tcaron ecircumflex -60
+KPX Tcaron edieresis -60
+KPX Tcaron edotaccent -60
+KPX Tcaron egrave -60
+KPX Tcaron emacron -60
+KPX Tcaron eogonek -60
+KPX Tcaron hyphen -120
+KPX Tcaron o -80
+KPX Tcaron oacute -80
+KPX Tcaron ocircumflex -80
+KPX Tcaron odieresis -80
+KPX Tcaron ograve -80
+KPX Tcaron ohungarumlaut -80
+KPX Tcaron omacron -80
+KPX Tcaron oslash -80
+KPX Tcaron otilde -80
+KPX Tcaron period -80
+KPX Tcaron r -80
+KPX Tcaron racute -80
+KPX Tcaron rcommaaccent -80
+KPX Tcaron semicolon -40
+KPX Tcaron u -90
+KPX Tcaron uacute -90
+KPX Tcaron ucircumflex -90
+KPX Tcaron udieresis -90
+KPX Tcaron ugrave -90
+KPX Tcaron uhungarumlaut -90
+KPX Tcaron umacron -90
+KPX Tcaron uogonek -90
+KPX Tcaron uring -90
+KPX Tcaron w -60
+KPX Tcaron y -60
+KPX Tcaron yacute -60
+KPX Tcaron ydieresis -60
+KPX Tcommaaccent A -90
+KPX Tcommaaccent Aacute -90
+KPX Tcommaaccent Abreve -90
+KPX Tcommaaccent Acircumflex -90
+KPX Tcommaaccent Adieresis -90
+KPX Tcommaaccent Agrave -90
+KPX Tcommaaccent Amacron -90
+KPX Tcommaaccent Aogonek -90
+KPX Tcommaaccent Aring -90
+KPX Tcommaaccent Atilde -90
+KPX Tcommaaccent O -40
+KPX Tcommaaccent Oacute -40
+KPX Tcommaaccent Ocircumflex -40
+KPX Tcommaaccent Odieresis -40
+KPX Tcommaaccent Ograve -40
+KPX Tcommaaccent Ohungarumlaut -40
+KPX Tcommaaccent Omacron -40
+KPX Tcommaaccent Oslash -40
+KPX Tcommaaccent Otilde -40
+KPX Tcommaaccent a -80
+KPX Tcommaaccent aacute -80
+KPX Tcommaaccent abreve -80
+KPX Tcommaaccent acircumflex -80
+KPX Tcommaaccent adieresis -80
+KPX Tcommaaccent agrave -80
+KPX Tcommaaccent amacron -80
+KPX Tcommaaccent aogonek -80
+KPX Tcommaaccent aring -80
+KPX Tcommaaccent atilde -80
+KPX Tcommaaccent colon -40
+KPX Tcommaaccent comma -80
+KPX Tcommaaccent e -60
+KPX Tcommaaccent eacute -60
+KPX Tcommaaccent ecaron -60
+KPX Tcommaaccent ecircumflex -60
+KPX Tcommaaccent edieresis -60
+KPX Tcommaaccent edotaccent -60
+KPX Tcommaaccent egrave -60
+KPX Tcommaaccent emacron -60
+KPX Tcommaaccent eogonek -60
+KPX Tcommaaccent hyphen -120
+KPX Tcommaaccent o -80
+KPX Tcommaaccent oacute -80
+KPX Tcommaaccent ocircumflex -80
+KPX Tcommaaccent odieresis -80
+KPX Tcommaaccent ograve -80
+KPX Tcommaaccent ohungarumlaut -80
+KPX Tcommaaccent omacron -80
+KPX Tcommaaccent oslash -80
+KPX Tcommaaccent otilde -80
+KPX Tcommaaccent period -80
+KPX Tcommaaccent r -80
+KPX Tcommaaccent racute -80
+KPX Tcommaaccent rcommaaccent -80
+KPX Tcommaaccent semicolon -40
+KPX Tcommaaccent u -90
+KPX Tcommaaccent uacute -90
+KPX Tcommaaccent ucircumflex -90
+KPX Tcommaaccent udieresis -90
+KPX Tcommaaccent ugrave -90
+KPX Tcommaaccent uhungarumlaut -90
+KPX Tcommaaccent umacron -90
+KPX Tcommaaccent uogonek -90
+KPX Tcommaaccent uring -90
+KPX Tcommaaccent w -60
+KPX Tcommaaccent y -60
+KPX Tcommaaccent yacute -60
+KPX Tcommaaccent ydieresis -60
+KPX U A -50
+KPX U Aacute -50
+KPX U Abreve -50
+KPX U Acircumflex -50
+KPX U Adieresis -50
+KPX U Agrave -50
+KPX U Amacron -50
+KPX U Aogonek -50
+KPX U Aring -50
+KPX U Atilde -50
+KPX U comma -30
+KPX U period -30
+KPX Uacute A -50
+KPX Uacute Aacute -50
+KPX Uacute Abreve -50
+KPX Uacute Acircumflex -50
+KPX Uacute Adieresis -50
+KPX Uacute Agrave -50
+KPX Uacute Amacron -50
+KPX Uacute Aogonek -50
+KPX Uacute Aring -50
+KPX Uacute Atilde -50
+KPX Uacute comma -30
+KPX Uacute period -30
+KPX Ucircumflex A -50
+KPX Ucircumflex Aacute -50
+KPX Ucircumflex Abreve -50
+KPX Ucircumflex Acircumflex -50
+KPX Ucircumflex Adieresis -50
+KPX Ucircumflex Agrave -50
+KPX Ucircumflex Amacron -50
+KPX Ucircumflex Aogonek -50
+KPX Ucircumflex Aring -50
+KPX Ucircumflex Atilde -50
+KPX Ucircumflex comma -30
+KPX Ucircumflex period -30
+KPX Udieresis A -50
+KPX Udieresis Aacute -50
+KPX Udieresis Abreve -50
+KPX Udieresis Acircumflex -50
+KPX Udieresis Adieresis -50
+KPX Udieresis Agrave -50
+KPX Udieresis Amacron -50
+KPX Udieresis Aogonek -50
+KPX Udieresis Aring -50
+KPX Udieresis Atilde -50
+KPX Udieresis comma -30
+KPX Udieresis period -30
+KPX Ugrave A -50
+KPX Ugrave Aacute -50
+KPX Ugrave Abreve -50
+KPX Ugrave Acircumflex -50
+KPX Ugrave Adieresis -50
+KPX Ugrave Agrave -50
+KPX Ugrave Amacron -50
+KPX Ugrave Aogonek -50
+KPX Ugrave Aring -50
+KPX Ugrave Atilde -50
+KPX Ugrave comma -30
+KPX Ugrave period -30
+KPX Uhungarumlaut A -50
+KPX Uhungarumlaut Aacute -50
+KPX Uhungarumlaut Abreve -50
+KPX Uhungarumlaut Acircumflex -50
+KPX Uhungarumlaut Adieresis -50
+KPX Uhungarumlaut Agrave -50
+KPX Uhungarumlaut Amacron -50
+KPX Uhungarumlaut Aogonek -50
+KPX Uhungarumlaut Aring -50
+KPX Uhungarumlaut Atilde -50
+KPX Uhungarumlaut comma -30
+KPX Uhungarumlaut period -30
+KPX Umacron A -50
+KPX Umacron Aacute -50
+KPX Umacron Abreve -50
+KPX Umacron Acircumflex -50
+KPX Umacron Adieresis -50
+KPX Umacron Agrave -50
+KPX Umacron Amacron -50
+KPX Umacron Aogonek -50
+KPX Umacron Aring -50
+KPX Umacron Atilde -50
+KPX Umacron comma -30
+KPX Umacron period -30
+KPX Uogonek A -50
+KPX Uogonek Aacute -50
+KPX Uogonek Abreve -50
+KPX Uogonek Acircumflex -50
+KPX Uogonek Adieresis -50
+KPX Uogonek Agrave -50
+KPX Uogonek Amacron -50
+KPX Uogonek Aogonek -50
+KPX Uogonek Aring -50
+KPX Uogonek Atilde -50
+KPX Uogonek comma -30
+KPX Uogonek period -30
+KPX Uring A -50
+KPX Uring Aacute -50
+KPX Uring Abreve -50
+KPX Uring Acircumflex -50
+KPX Uring Adieresis -50
+KPX Uring Agrave -50
+KPX Uring Amacron -50
+KPX Uring Aogonek -50
+KPX Uring Aring -50
+KPX Uring Atilde -50
+KPX Uring comma -30
+KPX Uring period -30
+KPX V A -80
+KPX V Aacute -80
+KPX V Abreve -80
+KPX V Acircumflex -80
+KPX V Adieresis -80
+KPX V Agrave -80
+KPX V Amacron -80
+KPX V Aogonek -80
+KPX V Aring -80
+KPX V Atilde -80
+KPX V G -50
+KPX V Gbreve -50
+KPX V Gcommaaccent -50
+KPX V O -50
+KPX V Oacute -50
+KPX V Ocircumflex -50
+KPX V Odieresis -50
+KPX V Ograve -50
+KPX V Ohungarumlaut -50
+KPX V Omacron -50
+KPX V Oslash -50
+KPX V Otilde -50
+KPX V a -60
+KPX V aacute -60
+KPX V abreve -60
+KPX V acircumflex -60
+KPX V adieresis -60
+KPX V agrave -60
+KPX V amacron -60
+KPX V aogonek -60
+KPX V aring -60
+KPX V atilde -60
+KPX V colon -40
+KPX V comma -120
+KPX V e -50
+KPX V eacute -50
+KPX V ecaron -50
+KPX V ecircumflex -50
+KPX V edieresis -50
+KPX V edotaccent -50
+KPX V egrave -50
+KPX V emacron -50
+KPX V eogonek -50
+KPX V hyphen -80
+KPX V o -90
+KPX V oacute -90
+KPX V ocircumflex -90
+KPX V odieresis -90
+KPX V ograve -90
+KPX V ohungarumlaut -90
+KPX V omacron -90
+KPX V oslash -90
+KPX V otilde -90
+KPX V period -120
+KPX V semicolon -40
+KPX V u -60
+KPX V uacute -60
+KPX V ucircumflex -60
+KPX V udieresis -60
+KPX V ugrave -60
+KPX V uhungarumlaut -60
+KPX V umacron -60
+KPX V uogonek -60
+KPX V uring -60
+KPX W A -60
+KPX W Aacute -60
+KPX W Abreve -60
+KPX W Acircumflex -60
+KPX W Adieresis -60
+KPX W Agrave -60
+KPX W Amacron -60
+KPX W Aogonek -60
+KPX W Aring -60
+KPX W Atilde -60
+KPX W O -20
+KPX W Oacute -20
+KPX W Ocircumflex -20
+KPX W Odieresis -20
+KPX W Ograve -20
+KPX W Ohungarumlaut -20
+KPX W Omacron -20
+KPX W Oslash -20
+KPX W Otilde -20
+KPX W a -40
+KPX W aacute -40
+KPX W abreve -40
+KPX W acircumflex -40
+KPX W adieresis -40
+KPX W agrave -40
+KPX W amacron -40
+KPX W aogonek -40
+KPX W aring -40
+KPX W atilde -40
+KPX W colon -10
+KPX W comma -80
+KPX W e -35
+KPX W eacute -35
+KPX W ecaron -35
+KPX W ecircumflex -35
+KPX W edieresis -35
+KPX W edotaccent -35
+KPX W egrave -35
+KPX W emacron -35
+KPX W eogonek -35
+KPX W hyphen -40
+KPX W o -60
+KPX W oacute -60
+KPX W ocircumflex -60
+KPX W odieresis -60
+KPX W ograve -60
+KPX W ohungarumlaut -60
+KPX W omacron -60
+KPX W oslash -60
+KPX W otilde -60
+KPX W period -80
+KPX W semicolon -10
+KPX W u -45
+KPX W uacute -45
+KPX W ucircumflex -45
+KPX W udieresis -45
+KPX W ugrave -45
+KPX W uhungarumlaut -45
+KPX W umacron -45
+KPX W uogonek -45
+KPX W uring -45
+KPX W y -20
+KPX W yacute -20
+KPX W ydieresis -20
+KPX Y A -110
+KPX Y Aacute -110
+KPX Y Abreve -110
+KPX Y Acircumflex -110
+KPX Y Adieresis -110
+KPX Y Agrave -110
+KPX Y Amacron -110
+KPX Y Aogonek -110
+KPX Y Aring -110
+KPX Y Atilde -110
+KPX Y O -70
+KPX Y Oacute -70
+KPX Y Ocircumflex -70
+KPX Y Odieresis -70
+KPX Y Ograve -70
+KPX Y Ohungarumlaut -70
+KPX Y Omacron -70
+KPX Y Oslash -70
+KPX Y Otilde -70
+KPX Y a -90
+KPX Y aacute -90
+KPX Y abreve -90
+KPX Y acircumflex -90
+KPX Y adieresis -90
+KPX Y agrave -90
+KPX Y amacron -90
+KPX Y aogonek -90
+KPX Y aring -90
+KPX Y atilde -90
+KPX Y colon -50
+KPX Y comma -100
+KPX Y e -80
+KPX Y eacute -80
+KPX Y ecaron -80
+KPX Y ecircumflex -80
+KPX Y edieresis -80
+KPX Y edotaccent -80
+KPX Y egrave -80
+KPX Y emacron -80
+KPX Y eogonek -80
+KPX Y o -100
+KPX Y oacute -100
+KPX Y ocircumflex -100
+KPX Y odieresis -100
+KPX Y ograve -100
+KPX Y ohungarumlaut -100
+KPX Y omacron -100
+KPX Y oslash -100
+KPX Y otilde -100
+KPX Y period -100
+KPX Y semicolon -50
+KPX Y u -100
+KPX Y uacute -100
+KPX Y ucircumflex -100
+KPX Y udieresis -100
+KPX Y ugrave -100
+KPX Y uhungarumlaut -100
+KPX Y umacron -100
+KPX Y uogonek -100
+KPX Y uring -100
+KPX Yacute A -110
+KPX Yacute Aacute -110
+KPX Yacute Abreve -110
+KPX Yacute Acircumflex -110
+KPX Yacute Adieresis -110
+KPX Yacute Agrave -110
+KPX Yacute Amacron -110
+KPX Yacute Aogonek -110
+KPX Yacute Aring -110
+KPX Yacute Atilde -110
+KPX Yacute O -70
+KPX Yacute Oacute -70
+KPX Yacute Ocircumflex -70
+KPX Yacute Odieresis -70
+KPX Yacute Ograve -70
+KPX Yacute Ohungarumlaut -70
+KPX Yacute Omacron -70
+KPX Yacute Oslash -70
+KPX Yacute Otilde -70
+KPX Yacute a -90
+KPX Yacute aacute -90
+KPX Yacute abreve -90
+KPX Yacute acircumflex -90
+KPX Yacute adieresis -90
+KPX Yacute agrave -90
+KPX Yacute amacron -90
+KPX Yacute aogonek -90
+KPX Yacute aring -90
+KPX Yacute atilde -90
+KPX Yacute colon -50
+KPX Yacute comma -100
+KPX Yacute e -80
+KPX Yacute eacute -80
+KPX Yacute ecaron -80
+KPX Yacute ecircumflex -80
+KPX Yacute edieresis -80
+KPX Yacute edotaccent -80
+KPX Yacute egrave -80
+KPX Yacute emacron -80
+KPX Yacute eogonek -80
+KPX Yacute o -100
+KPX Yacute oacute -100
+KPX Yacute ocircumflex -100
+KPX Yacute odieresis -100
+KPX Yacute ograve -100
+KPX Yacute ohungarumlaut -100
+KPX Yacute omacron -100
+KPX Yacute oslash -100
+KPX Yacute otilde -100
+KPX Yacute period -100
+KPX Yacute semicolon -50
+KPX Yacute u -100
+KPX Yacute uacute -100
+KPX Yacute ucircumflex -100
+KPX Yacute udieresis -100
+KPX Yacute ugrave -100
+KPX Yacute uhungarumlaut -100
+KPX Yacute umacron -100
+KPX Yacute uogonek -100
+KPX Yacute uring -100
+KPX Ydieresis A -110
+KPX Ydieresis Aacute -110
+KPX Ydieresis Abreve -110
+KPX Ydieresis Acircumflex -110
+KPX Ydieresis Adieresis -110
+KPX Ydieresis Agrave -110
+KPX Ydieresis Amacron -110
+KPX Ydieresis Aogonek -110
+KPX Ydieresis Aring -110
+KPX Ydieresis Atilde -110
+KPX Ydieresis O -70
+KPX Ydieresis Oacute -70
+KPX Ydieresis Ocircumflex -70
+KPX Ydieresis Odieresis -70
+KPX Ydieresis Ograve -70
+KPX Ydieresis Ohungarumlaut -70
+KPX Ydieresis Omacron -70
+KPX Ydieresis Oslash -70
+KPX Ydieresis Otilde -70
+KPX Ydieresis a -90
+KPX Ydieresis aacute -90
+KPX Ydieresis abreve -90
+KPX Ydieresis acircumflex -90
+KPX Ydieresis adieresis -90
+KPX Ydieresis agrave -90
+KPX Ydieresis amacron -90
+KPX Ydieresis aogonek -90
+KPX Ydieresis aring -90
+KPX Ydieresis atilde -90
+KPX Ydieresis colon -50
+KPX Ydieresis comma -100
+KPX Ydieresis e -80
+KPX Ydieresis eacute -80
+KPX Ydieresis ecaron -80
+KPX Ydieresis ecircumflex -80
+KPX Ydieresis edieresis -80
+KPX Ydieresis edotaccent -80
+KPX Ydieresis egrave -80
+KPX Ydieresis emacron -80
+KPX Ydieresis eogonek -80
+KPX Ydieresis o -100
+KPX Ydieresis oacute -100
+KPX Ydieresis ocircumflex -100
+KPX Ydieresis odieresis -100
+KPX Ydieresis ograve -100
+KPX Ydieresis ohungarumlaut -100
+KPX Ydieresis omacron -100
+KPX Ydieresis oslash -100
+KPX Ydieresis otilde -100
+KPX Ydieresis period -100
+KPX Ydieresis semicolon -50
+KPX Ydieresis u -100
+KPX Ydieresis uacute -100
+KPX Ydieresis ucircumflex -100
+KPX Ydieresis udieresis -100
+KPX Ydieresis ugrave -100
+KPX Ydieresis uhungarumlaut -100
+KPX Ydieresis umacron -100
+KPX Ydieresis uogonek -100
+KPX Ydieresis uring -100
+KPX a g -10
+KPX a gbreve -10
+KPX a gcommaaccent -10
+KPX a v -15
+KPX a w -15
+KPX a y -20
+KPX a yacute -20
+KPX a ydieresis -20
+KPX aacute g -10
+KPX aacute gbreve -10
+KPX aacute gcommaaccent -10
+KPX aacute v -15
+KPX aacute w -15
+KPX aacute y -20
+KPX aacute yacute -20
+KPX aacute ydieresis -20
+KPX abreve g -10
+KPX abreve gbreve -10
+KPX abreve gcommaaccent -10
+KPX abreve v -15
+KPX abreve w -15
+KPX abreve y -20
+KPX abreve yacute -20
+KPX abreve ydieresis -20
+KPX acircumflex g -10
+KPX acircumflex gbreve -10
+KPX acircumflex gcommaaccent -10
+KPX acircumflex v -15
+KPX acircumflex w -15
+KPX acircumflex y -20
+KPX acircumflex yacute -20
+KPX acircumflex ydieresis -20
+KPX adieresis g -10
+KPX adieresis gbreve -10
+KPX adieresis gcommaaccent -10
+KPX adieresis v -15
+KPX adieresis w -15
+KPX adieresis y -20
+KPX adieresis yacute -20
+KPX adieresis ydieresis -20
+KPX agrave g -10
+KPX agrave gbreve -10
+KPX agrave gcommaaccent -10
+KPX agrave v -15
+KPX agrave w -15
+KPX agrave y -20
+KPX agrave yacute -20
+KPX agrave ydieresis -20
+KPX amacron g -10
+KPX amacron gbreve -10
+KPX amacron gcommaaccent -10
+KPX amacron v -15
+KPX amacron w -15
+KPX amacron y -20
+KPX amacron yacute -20
+KPX amacron ydieresis -20
+KPX aogonek g -10
+KPX aogonek gbreve -10
+KPX aogonek gcommaaccent -10
+KPX aogonek v -15
+KPX aogonek w -15
+KPX aogonek y -20
+KPX aogonek yacute -20
+KPX aogonek ydieresis -20
+KPX aring g -10
+KPX aring gbreve -10
+KPX aring gcommaaccent -10
+KPX aring v -15
+KPX aring w -15
+KPX aring y -20
+KPX aring yacute -20
+KPX aring ydieresis -20
+KPX atilde g -10
+KPX atilde gbreve -10
+KPX atilde gcommaaccent -10
+KPX atilde v -15
+KPX atilde w -15
+KPX atilde y -20
+KPX atilde yacute -20
+KPX atilde ydieresis -20
+KPX b l -10
+KPX b lacute -10
+KPX b lcommaaccent -10
+KPX b lslash -10
+KPX b u -20
+KPX b uacute -20
+KPX b ucircumflex -20
+KPX b udieresis -20
+KPX b ugrave -20
+KPX b uhungarumlaut -20
+KPX b umacron -20
+KPX b uogonek -20
+KPX b uring -20
+KPX b v -20
+KPX b y -20
+KPX b yacute -20
+KPX b ydieresis -20
+KPX c h -10
+KPX c k -20
+KPX c kcommaaccent -20
+KPX c l -20
+KPX c lacute -20
+KPX c lcommaaccent -20
+KPX c lslash -20
+KPX c y -10
+KPX c yacute -10
+KPX c ydieresis -10
+KPX cacute h -10
+KPX cacute k -20
+KPX cacute kcommaaccent -20
+KPX cacute l -20
+KPX cacute lacute -20
+KPX cacute lcommaaccent -20
+KPX cacute lslash -20
+KPX cacute y -10
+KPX cacute yacute -10
+KPX cacute ydieresis -10
+KPX ccaron h -10
+KPX ccaron k -20
+KPX ccaron kcommaaccent -20
+KPX ccaron l -20
+KPX ccaron lacute -20
+KPX ccaron lcommaaccent -20
+KPX ccaron lslash -20
+KPX ccaron y -10
+KPX ccaron yacute -10
+KPX ccaron ydieresis -10
+KPX ccedilla h -10
+KPX ccedilla k -20
+KPX ccedilla kcommaaccent -20
+KPX ccedilla l -20
+KPX ccedilla lacute -20
+KPX ccedilla lcommaaccent -20
+KPX ccedilla lslash -20
+KPX ccedilla y -10
+KPX ccedilla yacute -10
+KPX ccedilla ydieresis -10
+KPX colon space -40
+KPX comma quotedblright -120
+KPX comma quoteright -120
+KPX comma space -40
+KPX d d -10
+KPX d dcroat -10
+KPX d v -15
+KPX d w -15
+KPX d y -15
+KPX d yacute -15
+KPX d ydieresis -15
+KPX dcroat d -10
+KPX dcroat dcroat -10
+KPX dcroat v -15
+KPX dcroat w -15
+KPX dcroat y -15
+KPX dcroat yacute -15
+KPX dcroat ydieresis -15
+KPX e comma 10
+KPX e period 20
+KPX e v -15
+KPX e w -15
+KPX e x -15
+KPX e y -15
+KPX e yacute -15
+KPX e ydieresis -15
+KPX eacute comma 10
+KPX eacute period 20
+KPX eacute v -15
+KPX eacute w -15
+KPX eacute x -15
+KPX eacute y -15
+KPX eacute yacute -15
+KPX eacute ydieresis -15
+KPX ecaron comma 10
+KPX ecaron period 20
+KPX ecaron v -15
+KPX ecaron w -15
+KPX ecaron x -15
+KPX ecaron y -15
+KPX ecaron yacute -15
+KPX ecaron ydieresis -15
+KPX ecircumflex comma 10
+KPX ecircumflex period 20
+KPX ecircumflex v -15
+KPX ecircumflex w -15
+KPX ecircumflex x -15
+KPX ecircumflex y -15
+KPX ecircumflex yacute -15
+KPX ecircumflex ydieresis -15
+KPX edieresis comma 10
+KPX edieresis period 20
+KPX edieresis v -15
+KPX edieresis w -15
+KPX edieresis x -15
+KPX edieresis y -15
+KPX edieresis yacute -15
+KPX edieresis ydieresis -15
+KPX edotaccent comma 10
+KPX edotaccent period 20
+KPX edotaccent v -15
+KPX edotaccent w -15
+KPX edotaccent x -15
+KPX edotaccent y -15
+KPX edotaccent yacute -15
+KPX edotaccent ydieresis -15
+KPX egrave comma 10
+KPX egrave period 20
+KPX egrave v -15
+KPX egrave w -15
+KPX egrave x -15
+KPX egrave y -15
+KPX egrave yacute -15
+KPX egrave ydieresis -15
+KPX emacron comma 10
+KPX emacron period 20
+KPX emacron v -15
+KPX emacron w -15
+KPX emacron x -15
+KPX emacron y -15
+KPX emacron yacute -15
+KPX emacron ydieresis -15
+KPX eogonek comma 10
+KPX eogonek period 20
+KPX eogonek v -15
+KPX eogonek w -15
+KPX eogonek x -15
+KPX eogonek y -15
+KPX eogonek yacute -15
+KPX eogonek ydieresis -15
+KPX f comma -10
+KPX f e -10
+KPX f eacute -10
+KPX f ecaron -10
+KPX f ecircumflex -10
+KPX f edieresis -10
+KPX f edotaccent -10
+KPX f egrave -10
+KPX f emacron -10
+KPX f eogonek -10
+KPX f o -20
+KPX f oacute -20
+KPX f ocircumflex -20
+KPX f odieresis -20
+KPX f ograve -20
+KPX f ohungarumlaut -20
+KPX f omacron -20
+KPX f oslash -20
+KPX f otilde -20
+KPX f period -10
+KPX f quotedblright 30
+KPX f quoteright 30
+KPX g e 10
+KPX g eacute 10
+KPX g ecaron 10
+KPX g ecircumflex 10
+KPX g edieresis 10
+KPX g edotaccent 10
+KPX g egrave 10
+KPX g emacron 10
+KPX g eogonek 10
+KPX g g -10
+KPX g gbreve -10
+KPX g gcommaaccent -10
+KPX gbreve e 10
+KPX gbreve eacute 10
+KPX gbreve ecaron 10
+KPX gbreve ecircumflex 10
+KPX gbreve edieresis 10
+KPX gbreve edotaccent 10
+KPX gbreve egrave 10
+KPX gbreve emacron 10
+KPX gbreve eogonek 10
+KPX gbreve g -10
+KPX gbreve gbreve -10
+KPX gbreve gcommaaccent -10
+KPX gcommaaccent e 10
+KPX gcommaaccent eacute 10
+KPX gcommaaccent ecaron 10
+KPX gcommaaccent ecircumflex 10
+KPX gcommaaccent edieresis 10
+KPX gcommaaccent edotaccent 10
+KPX gcommaaccent egrave 10
+KPX gcommaaccent emacron 10
+KPX gcommaaccent eogonek 10
+KPX gcommaaccent g -10
+KPX gcommaaccent gbreve -10
+KPX gcommaaccent gcommaaccent -10
+KPX h y -20
+KPX h yacute -20
+KPX h ydieresis -20
+KPX k o -15
+KPX k oacute -15
+KPX k ocircumflex -15
+KPX k odieresis -15
+KPX k ograve -15
+KPX k ohungarumlaut -15
+KPX k omacron -15
+KPX k oslash -15
+KPX k otilde -15
+KPX kcommaaccent o -15
+KPX kcommaaccent oacute -15
+KPX kcommaaccent ocircumflex -15
+KPX kcommaaccent odieresis -15
+KPX kcommaaccent ograve -15
+KPX kcommaaccent ohungarumlaut -15
+KPX kcommaaccent omacron -15
+KPX kcommaaccent oslash -15
+KPX kcommaaccent otilde -15
+KPX l w -15
+KPX l y -15
+KPX l yacute -15
+KPX l ydieresis -15
+KPX lacute w -15
+KPX lacute y -15
+KPX lacute yacute -15
+KPX lacute ydieresis -15
+KPX lcommaaccent w -15
+KPX lcommaaccent y -15
+KPX lcommaaccent yacute -15
+KPX lcommaaccent ydieresis -15
+KPX lslash w -15
+KPX lslash y -15
+KPX lslash yacute -15
+KPX lslash ydieresis -15
+KPX m u -20
+KPX m uacute -20
+KPX m ucircumflex -20
+KPX m udieresis -20
+KPX m ugrave -20
+KPX m uhungarumlaut -20
+KPX m umacron -20
+KPX m uogonek -20
+KPX m uring -20
+KPX m y -30
+KPX m yacute -30
+KPX m ydieresis -30
+KPX n u -10
+KPX n uacute -10
+KPX n ucircumflex -10
+KPX n udieresis -10
+KPX n ugrave -10
+KPX n uhungarumlaut -10
+KPX n umacron -10
+KPX n uogonek -10
+KPX n uring -10
+KPX n v -40
+KPX n y -20
+KPX n yacute -20
+KPX n ydieresis -20
+KPX nacute u -10
+KPX nacute uacute -10
+KPX nacute ucircumflex -10
+KPX nacute udieresis -10
+KPX nacute ugrave -10
+KPX nacute uhungarumlaut -10
+KPX nacute umacron -10
+KPX nacute uogonek -10
+KPX nacute uring -10
+KPX nacute v -40
+KPX nacute y -20
+KPX nacute yacute -20
+KPX nacute ydieresis -20
+KPX ncaron u -10
+KPX ncaron uacute -10
+KPX ncaron ucircumflex -10
+KPX ncaron udieresis -10
+KPX ncaron ugrave -10
+KPX ncaron uhungarumlaut -10
+KPX ncaron umacron -10
+KPX ncaron uogonek -10
+KPX ncaron uring -10
+KPX ncaron v -40
+KPX ncaron y -20
+KPX ncaron yacute -20
+KPX ncaron ydieresis -20
+KPX ncommaaccent u -10
+KPX ncommaaccent uacute -10
+KPX ncommaaccent ucircumflex -10
+KPX ncommaaccent udieresis -10
+KPX ncommaaccent ugrave -10
+KPX ncommaaccent uhungarumlaut -10
+KPX ncommaaccent umacron -10
+KPX ncommaaccent uogonek -10
+KPX ncommaaccent uring -10
+KPX ncommaaccent v -40
+KPX ncommaaccent y -20
+KPX ncommaaccent yacute -20
+KPX ncommaaccent ydieresis -20
+KPX ntilde u -10
+KPX ntilde uacute -10
+KPX ntilde ucircumflex -10
+KPX ntilde udieresis -10
+KPX ntilde ugrave -10
+KPX ntilde uhungarumlaut -10
+KPX ntilde umacron -10
+KPX ntilde uogonek -10
+KPX ntilde uring -10
+KPX ntilde v -40
+KPX ntilde y -20
+KPX ntilde yacute -20
+KPX ntilde ydieresis -20
+KPX o v -20
+KPX o w -15
+KPX o x -30
+KPX o y -20
+KPX o yacute -20
+KPX o ydieresis -20
+KPX oacute v -20
+KPX oacute w -15
+KPX oacute x -30
+KPX oacute y -20
+KPX oacute yacute -20
+KPX oacute ydieresis -20
+KPX ocircumflex v -20
+KPX ocircumflex w -15
+KPX ocircumflex x -30
+KPX ocircumflex y -20
+KPX ocircumflex yacute -20
+KPX ocircumflex ydieresis -20
+KPX odieresis v -20
+KPX odieresis w -15
+KPX odieresis x -30
+KPX odieresis y -20
+KPX odieresis yacute -20
+KPX odieresis ydieresis -20
+KPX ograve v -20
+KPX ograve w -15
+KPX ograve x -30
+KPX ograve y -20
+KPX ograve yacute -20
+KPX ograve ydieresis -20
+KPX ohungarumlaut v -20
+KPX ohungarumlaut w -15
+KPX ohungarumlaut x -30
+KPX ohungarumlaut y -20
+KPX ohungarumlaut yacute -20
+KPX ohungarumlaut ydieresis -20
+KPX omacron v -20
+KPX omacron w -15
+KPX omacron x -30
+KPX omacron y -20
+KPX omacron yacute -20
+KPX omacron ydieresis -20
+KPX oslash v -20
+KPX oslash w -15
+KPX oslash x -30
+KPX oslash y -20
+KPX oslash yacute -20
+KPX oslash ydieresis -20
+KPX otilde v -20
+KPX otilde w -15
+KPX otilde x -30
+KPX otilde y -20
+KPX otilde yacute -20
+KPX otilde ydieresis -20
+KPX p y -15
+KPX p yacute -15
+KPX p ydieresis -15
+KPX period quotedblright -120
+KPX period quoteright -120
+KPX period space -40
+KPX quotedblright space -80
+KPX quoteleft quoteleft -46
+KPX quoteright d -80
+KPX quoteright dcroat -80
+KPX quoteright l -20
+KPX quoteright lacute -20
+KPX quoteright lcommaaccent -20
+KPX quoteright lslash -20
+KPX quoteright quoteright -46
+KPX quoteright r -40
+KPX quoteright racute -40
+KPX quoteright rcaron -40
+KPX quoteright rcommaaccent -40
+KPX quoteright s -60
+KPX quoteright sacute -60
+KPX quoteright scaron -60
+KPX quoteright scedilla -60
+KPX quoteright scommaaccent -60
+KPX quoteright space -80
+KPX quoteright v -20
+KPX r c -20
+KPX r cacute -20
+KPX r ccaron -20
+KPX r ccedilla -20
+KPX r comma -60
+KPX r d -20
+KPX r dcroat -20
+KPX r g -15
+KPX r gbreve -15
+KPX r gcommaaccent -15
+KPX r hyphen -20
+KPX r o -20
+KPX r oacute -20
+KPX r ocircumflex -20
+KPX r odieresis -20
+KPX r ograve -20
+KPX r ohungarumlaut -20
+KPX r omacron -20
+KPX r oslash -20
+KPX r otilde -20
+KPX r period -60
+KPX r q -20
+KPX r s -15
+KPX r sacute -15
+KPX r scaron -15
+KPX r scedilla -15
+KPX r scommaaccent -15
+KPX r t 20
+KPX r tcommaaccent 20
+KPX r v 10
+KPX r y 10
+KPX r yacute 10
+KPX r ydieresis 10
+KPX racute c -20
+KPX racute cacute -20
+KPX racute ccaron -20
+KPX racute ccedilla -20
+KPX racute comma -60
+KPX racute d -20
+KPX racute dcroat -20
+KPX racute g -15
+KPX racute gbreve -15
+KPX racute gcommaaccent -15
+KPX racute hyphen -20
+KPX racute o -20
+KPX racute oacute -20
+KPX racute ocircumflex -20
+KPX racute odieresis -20
+KPX racute ograve -20
+KPX racute ohungarumlaut -20
+KPX racute omacron -20
+KPX racute oslash -20
+KPX racute otilde -20
+KPX racute period -60
+KPX racute q -20
+KPX racute s -15
+KPX racute sacute -15
+KPX racute scaron -15
+KPX racute scedilla -15
+KPX racute scommaaccent -15
+KPX racute t 20
+KPX racute tcommaaccent 20
+KPX racute v 10
+KPX racute y 10
+KPX racute yacute 10
+KPX racute ydieresis 10
+KPX rcaron c -20
+KPX rcaron cacute -20
+KPX rcaron ccaron -20
+KPX rcaron ccedilla -20
+KPX rcaron comma -60
+KPX rcaron d -20
+KPX rcaron dcroat -20
+KPX rcaron g -15
+KPX rcaron gbreve -15
+KPX rcaron gcommaaccent -15
+KPX rcaron hyphen -20
+KPX rcaron o -20
+KPX rcaron oacute -20
+KPX rcaron ocircumflex -20
+KPX rcaron odieresis -20
+KPX rcaron ograve -20
+KPX rcaron ohungarumlaut -20
+KPX rcaron omacron -20
+KPX rcaron oslash -20
+KPX rcaron otilde -20
+KPX rcaron period -60
+KPX rcaron q -20
+KPX rcaron s -15
+KPX rcaron sacute -15
+KPX rcaron scaron -15
+KPX rcaron scedilla -15
+KPX rcaron scommaaccent -15
+KPX rcaron t 20
+KPX rcaron tcommaaccent 20
+KPX rcaron v 10
+KPX rcaron y 10
+KPX rcaron yacute 10
+KPX rcaron ydieresis 10
+KPX rcommaaccent c -20
+KPX rcommaaccent cacute -20
+KPX rcommaaccent ccaron -20
+KPX rcommaaccent ccedilla -20
+KPX rcommaaccent comma -60
+KPX rcommaaccent d -20
+KPX rcommaaccent dcroat -20
+KPX rcommaaccent g -15
+KPX rcommaaccent gbreve -15
+KPX rcommaaccent gcommaaccent -15
+KPX rcommaaccent hyphen -20
+KPX rcommaaccent o -20
+KPX rcommaaccent oacute -20
+KPX rcommaaccent ocircumflex -20
+KPX rcommaaccent odieresis -20
+KPX rcommaaccent ograve -20
+KPX rcommaaccent ohungarumlaut -20
+KPX rcommaaccent omacron -20
+KPX rcommaaccent oslash -20
+KPX rcommaaccent otilde -20
+KPX rcommaaccent period -60
+KPX rcommaaccent q -20
+KPX rcommaaccent s -15
+KPX rcommaaccent sacute -15
+KPX rcommaaccent scaron -15
+KPX rcommaaccent scedilla -15
+KPX rcommaaccent scommaaccent -15
+KPX rcommaaccent t 20
+KPX rcommaaccent tcommaaccent 20
+KPX rcommaaccent v 10
+KPX rcommaaccent y 10
+KPX rcommaaccent yacute 10
+KPX rcommaaccent ydieresis 10
+KPX s w -15
+KPX sacute w -15
+KPX scaron w -15
+KPX scedilla w -15
+KPX scommaaccent w -15
+KPX semicolon space -40
+KPX space T -100
+KPX space Tcaron -100
+KPX space Tcommaaccent -100
+KPX space V -80
+KPX space W -80
+KPX space Y -120
+KPX space Yacute -120
+KPX space Ydieresis -120
+KPX space quotedblleft -80
+KPX space quoteleft -60
+KPX v a -20
+KPX v aacute -20
+KPX v abreve -20
+KPX v acircumflex -20
+KPX v adieresis -20
+KPX v agrave -20
+KPX v amacron -20
+KPX v aogonek -20
+KPX v aring -20
+KPX v atilde -20
+KPX v comma -80
+KPX v o -30
+KPX v oacute -30
+KPX v ocircumflex -30
+KPX v odieresis -30
+KPX v ograve -30
+KPX v ohungarumlaut -30
+KPX v omacron -30
+KPX v oslash -30
+KPX v otilde -30
+KPX v period -80
+KPX w comma -40
+KPX w o -20
+KPX w oacute -20
+KPX w ocircumflex -20
+KPX w odieresis -20
+KPX w ograve -20
+KPX w ohungarumlaut -20
+KPX w omacron -20
+KPX w oslash -20
+KPX w otilde -20
+KPX w period -40
+KPX x e -10
+KPX x eacute -10
+KPX x ecaron -10
+KPX x ecircumflex -10
+KPX x edieresis -10
+KPX x edotaccent -10
+KPX x egrave -10
+KPX x emacron -10
+KPX x eogonek -10
+KPX y a -30
+KPX y aacute -30
+KPX y abreve -30
+KPX y acircumflex -30
+KPX y adieresis -30
+KPX y agrave -30
+KPX y amacron -30
+KPX y aogonek -30
+KPX y aring -30
+KPX y atilde -30
+KPX y comma -80
+KPX y e -10
+KPX y eacute -10
+KPX y ecaron -10
+KPX y ecircumflex -10
+KPX y edieresis -10
+KPX y edotaccent -10
+KPX y egrave -10
+KPX y emacron -10
+KPX y eogonek -10
+KPX y o -25
+KPX y oacute -25
+KPX y ocircumflex -25
+KPX y odieresis -25
+KPX y ograve -25
+KPX y ohungarumlaut -25
+KPX y omacron -25
+KPX y oslash -25
+KPX y otilde -25
+KPX y period -80
+KPX yacute a -30
+KPX yacute aacute -30
+KPX yacute abreve -30
+KPX yacute acircumflex -30
+KPX yacute adieresis -30
+KPX yacute agrave -30
+KPX yacute amacron -30
+KPX yacute aogonek -30
+KPX yacute aring -30
+KPX yacute atilde -30
+KPX yacute comma -80
+KPX yacute e -10
+KPX yacute eacute -10
+KPX yacute ecaron -10
+KPX yacute ecircumflex -10
+KPX yacute edieresis -10
+KPX yacute edotaccent -10
+KPX yacute egrave -10
+KPX yacute emacron -10
+KPX yacute eogonek -10
+KPX yacute o -25
+KPX yacute oacute -25
+KPX yacute ocircumflex -25
+KPX yacute odieresis -25
+KPX yacute ograve -25
+KPX yacute ohungarumlaut -25
+KPX yacute omacron -25
+KPX yacute oslash -25
+KPX yacute otilde -25
+KPX yacute period -80
+KPX ydieresis a -30
+KPX ydieresis aacute -30
+KPX ydieresis abreve -30
+KPX ydieresis acircumflex -30
+KPX ydieresis adieresis -30
+KPX ydieresis agrave -30
+KPX ydieresis amacron -30
+KPX ydieresis aogonek -30
+KPX ydieresis aring -30
+KPX ydieresis atilde -30
+KPX ydieresis comma -80
+KPX ydieresis e -10
+KPX ydieresis eacute -10
+KPX ydieresis ecaron -10
+KPX ydieresis ecircumflex -10
+KPX ydieresis edieresis -10
+KPX ydieresis edotaccent -10
+KPX ydieresis egrave -10
+KPX ydieresis emacron -10
+KPX ydieresis eogonek -10
+KPX ydieresis o -25
+KPX ydieresis oacute -25
+KPX ydieresis ocircumflex -25
+KPX ydieresis odieresis -25
+KPX ydieresis ograve -25
+KPX ydieresis ohungarumlaut -25
+KPX ydieresis omacron -25
+KPX ydieresis oslash -25
+KPX ydieresis otilde -25
+KPX ydieresis period -80
+KPX z e 10
+KPX z eacute 10
+KPX z ecaron 10
+KPX z ecircumflex 10
+KPX z edieresis 10
+KPX z edotaccent 10
+KPX z egrave 10
+KPX z emacron 10
+KPX z eogonek 10
+KPX zacute e 10
+KPX zacute eacute 10
+KPX zacute ecaron 10
+KPX zacute ecircumflex 10
+KPX zacute edieresis 10
+KPX zacute edotaccent 10
+KPX zacute egrave 10
+KPX zacute emacron 10
+KPX zacute eogonek 10
+KPX zcaron e 10
+KPX zcaron eacute 10
+KPX zcaron ecaron 10
+KPX zcaron ecircumflex 10
+KPX zcaron edieresis 10
+KPX zcaron edotaccent 10
+KPX zcaron egrave 10
+KPX zcaron emacron 10
+KPX zcaron eogonek 10
+KPX zdotaccent e 10
+KPX zdotaccent eacute 10
+KPX zdotaccent ecaron 10
+KPX zdotaccent ecircumflex 10
+KPX zdotaccent edieresis 10
+KPX zdotaccent edotaccent 10
+KPX zdotaccent egrave 10
+KPX zdotaccent emacron 10
+KPX zdotaccent eogonek 10
+EndKernPairs
+EndKernData
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Helvetica.afm	(revision 2000)
@@ -0,0 +1,3051 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+Comment Creation Date: Thu May  1 12:38:23 1997
+Comment UniqueID 43054
+Comment VMusage 37069 48094
+FontName Helvetica
+FullName Helvetica
+FamilyName Helvetica
+Weight Medium
+ItalicAngle 0
+IsFixedPitch false
+CharacterSet ExtendedRoman
+FontBBox -166 -225 1000 931 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 002.000
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 718
+XHeight 523
+Ascender 718
+Descender -207
+StdHW 76
+StdVW 88
+StartCharMetrics 315
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 90 0 187 718 ;
+C 34 ; WX 355 ; N quotedbl ; B 70 463 285 718 ;
+C 35 ; WX 556 ; N numbersign ; B 28 0 529 688 ;
+C 36 ; WX 556 ; N dollar ; B 32 -115 520 775 ;
+C 37 ; WX 889 ; N percent ; B 39 -19 850 703 ;
+C 38 ; WX 667 ; N ampersand ; B 44 -15 645 718 ;
+C 39 ; WX 222 ; N quoteright ; B 53 463 157 718 ;
+C 40 ; WX 333 ; N parenleft ; B 68 -207 299 733 ;
+C 41 ; WX 333 ; N parenright ; B 34 -207 265 733 ;
+C 42 ; WX 389 ; N asterisk ; B 39 431 349 718 ;
+C 43 ; WX 584 ; N plus ; B 39 0 545 505 ;
+C 44 ; WX 278 ; N comma ; B 87 -147 191 106 ;
+C 45 ; WX 333 ; N hyphen ; B 44 232 289 322 ;
+C 46 ; WX 278 ; N period ; B 87 0 191 106 ;
+C 47 ; WX 278 ; N slash ; B -17 -19 295 737 ;
+C 48 ; WX 556 ; N zero ; B 37 -19 519 703 ;
+C 49 ; WX 556 ; N one ; B 101 0 359 703 ;
+C 50 ; WX 556 ; N two ; B 26 0 507 703 ;
+C 51 ; WX 556 ; N three ; B 34 -19 522 703 ;
+C 52 ; WX 556 ; N four ; B 25 0 523 703 ;
+C 53 ; WX 556 ; N five ; B 32 -19 514 688 ;
+C 54 ; WX 556 ; N six ; B 38 -19 518 703 ;
+C 55 ; WX 556 ; N seven ; B 37 0 523 688 ;
+C 56 ; WX 556 ; N eight ; B 38 -19 517 703 ;
+C 57 ; WX 556 ; N nine ; B 42 -19 514 703 ;
+C 58 ; WX 278 ; N colon ; B 87 0 191 516 ;
+C 59 ; WX 278 ; N semicolon ; B 87 -147 191 516 ;
+C 60 ; WX 584 ; N less ; B 48 11 536 495 ;
+C 61 ; WX 584 ; N equal ; B 39 115 545 390 ;
+C 62 ; WX 584 ; N greater ; B 48 11 536 495 ;
+C 63 ; WX 556 ; N question ; B 56 0 492 727 ;
+C 64 ; WX 1015 ; N at ; B 147 -19 868 737 ;
+C 65 ; WX 667 ; N A ; B 14 0 654 718 ;
+C 66 ; WX 667 ; N B ; B 74 0 627 718 ;
+C 67 ; WX 722 ; N C ; B 44 -19 681 737 ;
+C 68 ; WX 722 ; N D ; B 81 0 674 718 ;
+C 69 ; WX 667 ; N E ; B 86 0 616 718 ;
+C 70 ; WX 611 ; N F ; B 86 0 583 718 ;
+C 71 ; WX 778 ; N G ; B 48 -19 704 737 ;
+C 72 ; WX 722 ; N H ; B 77 0 646 718 ;
+C 73 ; WX 278 ; N I ; B 91 0 188 718 ;
+C 74 ; WX 500 ; N J ; B 17 -19 428 718 ;
+C 75 ; WX 667 ; N K ; B 76 0 663 718 ;
+C 76 ; WX 556 ; N L ; B 76 0 537 718 ;
+C 77 ; WX 833 ; N M ; B 73 0 761 718 ;
+C 78 ; WX 722 ; N N ; B 76 0 646 718 ;
+C 79 ; WX 778 ; N O ; B 39 -19 739 737 ;
+C 80 ; WX 667 ; N P ; B 86 0 622 718 ;
+C 81 ; WX 778 ; N Q ; B 39 -56 739 737 ;
+C 82 ; WX 722 ; N R ; B 88 0 684 718 ;
+C 83 ; WX 667 ; N S ; B 49 -19 620 737 ;
+C 84 ; WX 611 ; N T ; B 14 0 597 718 ;
+C 85 ; WX 722 ; N U ; B 79 -19 644 718 ;
+C 86 ; WX 667 ; N V ; B 20 0 647 718 ;
+C 87 ; WX 944 ; N W ; B 16 0 928 718 ;
+C 88 ; WX 667 ; N X ; B 19 0 648 718 ;
+C 89 ; WX 667 ; N Y ; B 14 0 653 718 ;
+C 90 ; WX 611 ; N Z ; B 23 0 588 718 ;
+C 91 ; WX 278 ; N bracketleft ; B 63 -196 250 722 ;
+C 92 ; WX 278 ; N backslash ; B -17 -19 295 737 ;
+C 93 ; WX 278 ; N bracketright ; B 28 -196 215 722 ;
+C 94 ; WX 469 ; N asciicircum ; B -14 264 483 688 ;
+C 95 ; WX 556 ; N underscore ; B 0 -125 556 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 65 470 169 725 ;
+C 97 ; WX 556 ; N a ; B 36 -15 530 538 ;
+C 98 ; WX 556 ; N b ; B 58 -15 517 718 ;
+C 99 ; WX 500 ; N c ; B 30 -15 477 538 ;
+C 100 ; WX 556 ; N d ; B 35 -15 499 718 ;
+C 101 ; WX 556 ; N e ; B 40 -15 516 538 ;
+C 102 ; WX 278 ; N f ; B 14 0 262 728 ; L i fi ; L l fl ;
+C 103 ; WX 556 ; N g ; B 40 -220 499 538 ;
+C 104 ; WX 556 ; N h ; B 65 0 491 718 ;
+C 105 ; WX 222 ; N i ; B 67 0 155 718 ;
+C 106 ; WX 222 ; N j ; B -16 -210 155 718 ;
+C 107 ; WX 500 ; N k ; B 67 0 501 718 ;
+C 108 ; WX 222 ; N l ; B 67 0 155 718 ;
+C 109 ; WX 833 ; N m ; B 65 0 769 538 ;
+C 110 ; WX 556 ; N n ; B 65 0 491 538 ;
+C 111 ; WX 556 ; N o ; B 35 -14 521 538 ;
+C 112 ; WX 556 ; N p ; B 58 -207 517 538 ;
+C 113 ; WX 556 ; N q ; B 35 -207 494 538 ;
+C 114 ; WX 333 ; N r ; B 77 0 332 538 ;
+C 115 ; WX 500 ; N s ; B 32 -15 464 538 ;
+C 116 ; WX 278 ; N t ; B 14 -7 257 669 ;
+C 117 ; WX 556 ; N u ; B 68 -15 489 523 ;
+C 118 ; WX 500 ; N v ; B 8 0 492 523 ;
+C 119 ; WX 722 ; N w ; B 14 0 709 523 ;
+C 120 ; WX 500 ; N x ; B 11 0 490 523 ;
+C 121 ; WX 500 ; N y ; B 11 -214 489 523 ;
+C 122 ; WX 500 ; N z ; B 31 0 469 523 ;
+C 123 ; WX 334 ; N braceleft ; B 42 -196 292 722 ;
+C 124 ; WX 260 ; N bar ; B 94 -225 167 775 ;
+C 125 ; WX 334 ; N braceright ; B 42 -196 292 722 ;
+C 126 ; WX 584 ; N asciitilde ; B 61 180 523 326 ;
+C 161 ; WX 333 ; N exclamdown ; B 118 -195 215 523 ;
+C 162 ; WX 556 ; N cent ; B 51 -115 513 623 ;
+C 163 ; WX 556 ; N sterling ; B 33 -16 539 718 ;
+C 164 ; WX 167 ; N fraction ; B -166 -19 333 703 ;
+C 165 ; WX 556 ; N yen ; B 3 0 553 688 ;
+C 166 ; WX 556 ; N florin ; B -11 -207 501 737 ;
+C 167 ; WX 556 ; N section ; B 43 -191 512 737 ;
+C 168 ; WX 556 ; N currency ; B 28 99 528 603 ;
+C 169 ; WX 191 ; N quotesingle ; B 59 463 132 718 ;
+C 170 ; WX 333 ; N quotedblleft ; B 38 470 307 725 ;
+C 171 ; WX 556 ; N guillemotleft ; B 97 108 459 446 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 88 108 245 446 ;
+C 173 ; WX 333 ; N guilsinglright ; B 88 108 245 446 ;
+C 174 ; WX 500 ; N fi ; B 14 0 434 728 ;
+C 175 ; WX 500 ; N fl ; B 14 0 432 728 ;
+C 177 ; WX 556 ; N endash ; B 0 240 556 313 ;
+C 178 ; WX 556 ; N dagger ; B 43 -159 514 718 ;
+C 179 ; WX 556 ; N daggerdbl ; B 43 -159 514 718 ;
+C 180 ; WX 278 ; N periodcentered ; B 77 190 202 315 ;
+C 182 ; WX 537 ; N paragraph ; B 18 -173 497 718 ;
+C 183 ; WX 350 ; N bullet ; B 18 202 333 517 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 53 -149 157 106 ;
+C 185 ; WX 333 ; N quotedblbase ; B 26 -149 295 106 ;
+C 186 ; WX 333 ; N quotedblright ; B 26 463 295 718 ;
+C 187 ; WX 556 ; N guillemotright ; B 97 108 459 446 ;
+C 188 ; WX 1000 ; N ellipsis ; B 115 0 885 106 ;
+C 189 ; WX 1000 ; N perthousand ; B 7 -19 994 703 ;
+C 191 ; WX 611 ; N questiondown ; B 91 -201 527 525 ;
+C 193 ; WX 333 ; N grave ; B 14 593 211 734 ;
+C 194 ; WX 333 ; N acute ; B 122 593 319 734 ;
+C 195 ; WX 333 ; N circumflex ; B 21 593 312 734 ;
+C 196 ; WX 333 ; N tilde ; B -4 606 337 722 ;
+C 197 ; WX 333 ; N macron ; B 10 627 323 684 ;
+C 198 ; WX 333 ; N breve ; B 13 595 321 731 ;
+C 199 ; WX 333 ; N dotaccent ; B 121 604 212 706 ;
+C 200 ; WX 333 ; N dieresis ; B 40 604 293 706 ;
+C 202 ; WX 333 ; N ring ; B 75 572 259 756 ;
+C 203 ; WX 333 ; N cedilla ; B 45 -225 259 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 31 593 409 734 ;
+C 206 ; WX 333 ; N ogonek ; B 73 -225 287 0 ;
+C 207 ; WX 333 ; N caron ; B 21 593 312 734 ;
+C 208 ; WX 1000 ; N emdash ; B 0 240 1000 313 ;
+C 225 ; WX 1000 ; N AE ; B 8 0 951 718 ;
+C 227 ; WX 370 ; N ordfeminine ; B 24 405 346 737 ;
+C 232 ; WX 556 ; N Lslash ; B -20 0 537 718 ;
+C 233 ; WX 778 ; N Oslash ; B 39 -19 740 737 ;
+C 234 ; WX 1000 ; N OE ; B 36 -19 965 737 ;
+C 235 ; WX 365 ; N ordmasculine ; B 25 405 341 737 ;
+C 241 ; WX 889 ; N ae ; B 36 -15 847 538 ;
+C 245 ; WX 278 ; N dotlessi ; B 95 0 183 523 ;
+C 248 ; WX 222 ; N lslash ; B -20 0 242 718 ;
+C 249 ; WX 611 ; N oslash ; B 28 -22 537 545 ;
+C 250 ; WX 944 ; N oe ; B 35 -15 902 538 ;
+C 251 ; WX 611 ; N germandbls ; B 67 -15 571 728 ;
+C -1 ; WX 278 ; N Idieresis ; B 13 0 266 901 ;
+C -1 ; WX 556 ; N eacute ; B 40 -15 516 734 ;
+C -1 ; WX 556 ; N abreve ; B 36 -15 530 731 ;
+C -1 ; WX 556 ; N uhungarumlaut ; B 68 -15 521 734 ;
+C -1 ; WX 556 ; N ecaron ; B 40 -15 516 734 ;
+C -1 ; WX 667 ; N Ydieresis ; B 14 0 653 901 ;
+C -1 ; WX 584 ; N divide ; B 39 -19 545 524 ;
+C -1 ; WX 667 ; N Yacute ; B 14 0 653 929 ;
+C -1 ; WX 667 ; N Acircumflex ; B 14 0 654 929 ;
+C -1 ; WX 556 ; N aacute ; B 36 -15 530 734 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 79 -19 644 929 ;
+C -1 ; WX 500 ; N yacute ; B 11 -214 489 734 ;
+C -1 ; WX 500 ; N scommaaccent ; B 32 -225 464 538 ;
+C -1 ; WX 556 ; N ecircumflex ; B 40 -15 516 734 ;
+C -1 ; WX 722 ; N Uring ; B 79 -19 644 931 ;
+C -1 ; WX 722 ; N Udieresis ; B 79 -19 644 901 ;
+C -1 ; WX 556 ; N aogonek ; B 36 -220 547 538 ;
+C -1 ; WX 722 ; N Uacute ; B 79 -19 644 929 ;
+C -1 ; WX 556 ; N uogonek ; B 68 -225 519 523 ;
+C -1 ; WX 667 ; N Edieresis ; B 86 0 616 901 ;
+C -1 ; WX 722 ; N Dcroat ; B 0 0 674 718 ;
+C -1 ; WX 250 ; N commaaccent ; B 87 -225 181 -40 ;
+C -1 ; WX 737 ; N copyright ; B -14 -19 752 737 ;
+C -1 ; WX 667 ; N Emacron ; B 86 0 616 879 ;
+C -1 ; WX 500 ; N ccaron ; B 30 -15 477 734 ;
+C -1 ; WX 556 ; N aring ; B 36 -15 530 756 ;
+C -1 ; WX 722 ; N Ncommaaccent ; B 76 -225 646 718 ;
+C -1 ; WX 222 ; N lacute ; B 67 0 264 929 ;
+C -1 ; WX 556 ; N agrave ; B 36 -15 530 734 ;
+C -1 ; WX 611 ; N Tcommaaccent ; B 14 -225 597 718 ;
+C -1 ; WX 722 ; N Cacute ; B 44 -19 681 929 ;
+C -1 ; WX 556 ; N atilde ; B 36 -15 530 722 ;
+C -1 ; WX 667 ; N Edotaccent ; B 86 0 616 901 ;
+C -1 ; WX 500 ; N scaron ; B 32 -15 464 734 ;
+C -1 ; WX 500 ; N scedilla ; B 32 -225 464 538 ;
+C -1 ; WX 278 ; N iacute ; B 95 0 292 734 ;
+C -1 ; WX 471 ; N lozenge ; B 10 0 462 728 ;
+C -1 ; WX 722 ; N Rcaron ; B 88 0 684 929 ;
+C -1 ; WX 778 ; N Gcommaaccent ; B 48 -225 704 737 ;
+C -1 ; WX 556 ; N ucircumflex ; B 68 -15 489 734 ;
+C -1 ; WX 556 ; N acircumflex ; B 36 -15 530 734 ;
+C -1 ; WX 667 ; N Amacron ; B 14 0 654 879 ;
+C -1 ; WX 333 ; N rcaron ; B 61 0 352 734 ;
+C -1 ; WX 500 ; N ccedilla ; B 30 -225 477 538 ;
+C -1 ; WX 611 ; N Zdotaccent ; B 23 0 588 901 ;
+C -1 ; WX 667 ; N Thorn ; B 86 0 622 718 ;
+C -1 ; WX 778 ; N Omacron ; B 39 -19 739 879 ;
+C -1 ; WX 722 ; N Racute ; B 88 0 684 929 ;
+C -1 ; WX 667 ; N Sacute ; B 49 -19 620 929 ;
+C -1 ; WX 643 ; N dcaron ; B 35 -15 655 718 ;
+C -1 ; WX 722 ; N Umacron ; B 79 -19 644 879 ;
+C -1 ; WX 556 ; N uring ; B 68 -15 489 756 ;
+C -1 ; WX 333 ; N threesuperior ; B 5 270 325 703 ;
+C -1 ; WX 778 ; N Ograve ; B 39 -19 739 929 ;
+C -1 ; WX 667 ; N Agrave ; B 14 0 654 929 ;
+C -1 ; WX 667 ; N Abreve ; B 14 0 654 926 ;
+C -1 ; WX 584 ; N multiply ; B 39 0 545 506 ;
+C -1 ; WX 556 ; N uacute ; B 68 -15 489 734 ;
+C -1 ; WX 611 ; N Tcaron ; B 14 0 597 929 ;
+C -1 ; WX 476 ; N partialdiff ; B 13 -38 463 714 ;
+C -1 ; WX 500 ; N ydieresis ; B 11 -214 489 706 ;
+C -1 ; WX 722 ; N Nacute ; B 76 0 646 929 ;
+C -1 ; WX 278 ; N icircumflex ; B -6 0 285 734 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 86 0 616 929 ;
+C -1 ; WX 556 ; N adieresis ; B 36 -15 530 706 ;
+C -1 ; WX 556 ; N edieresis ; B 40 -15 516 706 ;
+C -1 ; WX 500 ; N cacute ; B 30 -15 477 734 ;
+C -1 ; WX 556 ; N nacute ; B 65 0 491 734 ;
+C -1 ; WX 556 ; N umacron ; B 68 -15 489 684 ;
+C -1 ; WX 722 ; N Ncaron ; B 76 0 646 929 ;
+C -1 ; WX 278 ; N Iacute ; B 91 0 292 929 ;
+C -1 ; WX 584 ; N plusminus ; B 39 0 545 506 ;
+C -1 ; WX 260 ; N brokenbar ; B 94 -150 167 700 ;
+C -1 ; WX 737 ; N registered ; B -14 -19 752 737 ;
+C -1 ; WX 778 ; N Gbreve ; B 48 -19 704 926 ;
+C -1 ; WX 278 ; N Idotaccent ; B 91 0 188 901 ;
+C -1 ; WX 600 ; N summation ; B 15 -10 586 706 ;
+C -1 ; WX 667 ; N Egrave ; B 86 0 616 929 ;
+C -1 ; WX 333 ; N racute ; B 77 0 332 734 ;
+C -1 ; WX 556 ; N omacron ; B 35 -14 521 684 ;
+C -1 ; WX 611 ; N Zacute ; B 23 0 588 929 ;
+C -1 ; WX 611 ; N Zcaron ; B 23 0 588 929 ;
+C -1 ; WX 549 ; N greaterequal ; B 26 0 523 674 ;
+C -1 ; WX 722 ; N Eth ; B 0 0 674 718 ;
+C -1 ; WX 722 ; N Ccedilla ; B 44 -225 681 737 ;
+C -1 ; WX 222 ; N lcommaaccent ; B 67 -225 167 718 ;
+C -1 ; WX 317 ; N tcaron ; B 14 -7 329 808 ;
+C -1 ; WX 556 ; N eogonek ; B 40 -225 516 538 ;
+C -1 ; WX 722 ; N Uogonek ; B 79 -225 644 718 ;
+C -1 ; WX 667 ; N Aacute ; B 14 0 654 929 ;
+C -1 ; WX 667 ; N Adieresis ; B 14 0 654 901 ;
+C -1 ; WX 556 ; N egrave ; B 40 -15 516 734 ;
+C -1 ; WX 500 ; N zacute ; B 31 0 469 734 ;
+C -1 ; WX 222 ; N iogonek ; B -31 -225 183 718 ;
+C -1 ; WX 778 ; N Oacute ; B 39 -19 739 929 ;
+C -1 ; WX 556 ; N oacute ; B 35 -14 521 734 ;
+C -1 ; WX 556 ; N amacron ; B 36 -15 530 684 ;
+C -1 ; WX 500 ; N sacute ; B 32 -15 464 734 ;
+C -1 ; WX 278 ; N idieresis ; B 13 0 266 706 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 39 -19 739 929 ;
+C -1 ; WX 722 ; N Ugrave ; B 79 -19 644 929 ;
+C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ;
+C -1 ; WX 556 ; N thorn ; B 58 -207 517 718 ;
+C -1 ; WX 333 ; N twosuperior ; B 4 281 323 703 ;
+C -1 ; WX 778 ; N Odieresis ; B 39 -19 739 901 ;
+C -1 ; WX 556 ; N mu ; B 68 -207 489 523 ;
+C -1 ; WX 278 ; N igrave ; B -13 0 184 734 ;
+C -1 ; WX 556 ; N ohungarumlaut ; B 35 -14 521 734 ;
+C -1 ; WX 667 ; N Eogonek ; B 86 -220 633 718 ;
+C -1 ; WX 556 ; N dcroat ; B 35 -15 550 718 ;
+C -1 ; WX 834 ; N threequarters ; B 45 -19 810 703 ;
+C -1 ; WX 667 ; N Scedilla ; B 49 -225 620 737 ;
+C -1 ; WX 299 ; N lcaron ; B 67 0 311 718 ;
+C -1 ; WX 667 ; N Kcommaaccent ; B 76 -225 663 718 ;
+C -1 ; WX 556 ; N Lacute ; B 76 0 537 929 ;
+C -1 ; WX 1000 ; N trademark ; B 46 306 903 718 ;
+C -1 ; WX 556 ; N edotaccent ; B 40 -15 516 706 ;
+C -1 ; WX 278 ; N Igrave ; B -13 0 188 929 ;
+C -1 ; WX 278 ; N Imacron ; B -17 0 296 879 ;
+C -1 ; WX 556 ; N Lcaron ; B 76 0 537 718 ;
+C -1 ; WX 834 ; N onehalf ; B 43 -19 773 703 ;
+C -1 ; WX 549 ; N lessequal ; B 26 0 523 674 ;
+C -1 ; WX 556 ; N ocircumflex ; B 35 -14 521 734 ;
+C -1 ; WX 556 ; N ntilde ; B 65 0 491 722 ;
+C -1 ; WX 722 ; N Uhungarumlaut ; B 79 -19 644 929 ;
+C -1 ; WX 667 ; N Eacute ; B 86 0 616 929 ;
+C -1 ; WX 556 ; N emacron ; B 40 -15 516 684 ;
+C -1 ; WX 556 ; N gbreve ; B 40 -220 499 731 ;
+C -1 ; WX 834 ; N onequarter ; B 73 -19 756 703 ;
+C -1 ; WX 667 ; N Scaron ; B 49 -19 620 929 ;
+C -1 ; WX 667 ; N Scommaaccent ; B 49 -225 620 737 ;
+C -1 ; WX 778 ; N Ohungarumlaut ; B 39 -19 739 929 ;
+C -1 ; WX 400 ; N degree ; B 54 411 346 703 ;
+C -1 ; WX 556 ; N ograve ; B 35 -14 521 734 ;
+C -1 ; WX 722 ; N Ccaron ; B 44 -19 681 929 ;
+C -1 ; WX 556 ; N ugrave ; B 68 -15 489 734 ;
+C -1 ; WX 453 ; N radical ; B -4 -80 458 762 ;
+C -1 ; WX 722 ; N Dcaron ; B 81 0 674 929 ;
+C -1 ; WX 333 ; N rcommaaccent ; B 77 -225 332 538 ;
+C -1 ; WX 722 ; N Ntilde ; B 76 0 646 917 ;
+C -1 ; WX 556 ; N otilde ; B 35 -14 521 722 ;
+C -1 ; WX 722 ; N Rcommaaccent ; B 88 -225 684 718 ;
+C -1 ; WX 556 ; N Lcommaaccent ; B 76 -225 537 718 ;
+C -1 ; WX 667 ; N Atilde ; B 14 0 654 917 ;
+C -1 ; WX 667 ; N Aogonek ; B 14 -225 654 718 ;
+C -1 ; WX 667 ; N Aring ; B 14 0 654 931 ;
+C -1 ; WX 778 ; N Otilde ; B 39 -19 739 917 ;
+C -1 ; WX 500 ; N zdotaccent ; B 31 0 469 706 ;
+C -1 ; WX 667 ; N Ecaron ; B 86 0 616 929 ;
+C -1 ; WX 278 ; N Iogonek ; B -3 -225 211 718 ;
+C -1 ; WX 500 ; N kcommaaccent ; B 67 -225 501 718 ;
+C -1 ; WX 584 ; N minus ; B 39 216 545 289 ;
+C -1 ; WX 278 ; N Icircumflex ; B -6 0 285 929 ;
+C -1 ; WX 556 ; N ncaron ; B 65 0 491 734 ;
+C -1 ; WX 278 ; N tcommaaccent ; B 14 -225 257 669 ;
+C -1 ; WX 584 ; N logicalnot ; B 39 108 545 390 ;
+C -1 ; WX 556 ; N odieresis ; B 35 -14 521 706 ;
+C -1 ; WX 556 ; N udieresis ; B 68 -15 489 706 ;
+C -1 ; WX 549 ; N notequal ; B 12 -35 537 551 ;
+C -1 ; WX 556 ; N gcommaaccent ; B 40 -220 499 822 ;
+C -1 ; WX 556 ; N eth ; B 35 -15 522 737 ;
+C -1 ; WX 500 ; N zcaron ; B 31 0 469 734 ;
+C -1 ; WX 556 ; N ncommaaccent ; B 65 -225 491 538 ;
+C -1 ; WX 333 ; N onesuperior ; B 43 281 222 703 ;
+C -1 ; WX 278 ; N imacron ; B 5 0 272 684 ;
+C -1 ; WX 556 ; N Euro ; B 0 0 0 0 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 2705
+KPX A C -30
+KPX A Cacute -30
+KPX A Ccaron -30
+KPX A Ccedilla -30
+KPX A G -30
+KPX A Gbreve -30
+KPX A Gcommaaccent -30
+KPX A O -30
+KPX A Oacute -30
+KPX A Ocircumflex -30
+KPX A Odieresis -30
+KPX A Ograve -30
+KPX A Ohungarumlaut -30
+KPX A Omacron -30
+KPX A Oslash -30
+KPX A Otilde -30
+KPX A Q -30
+KPX A T -120
+KPX A Tcaron -120
+KPX A Tcommaaccent -120
+KPX A U -50
+KPX A Uacute -50
+KPX A Ucircumflex -50
+KPX A Udieresis -50
+KPX A Ugrave -50
+KPX A Uhungarumlaut -50
+KPX A Umacron -50
+KPX A Uogonek -50
+KPX A Uring -50
+KPX A V -70
+KPX A W -50
+KPX A Y -100
+KPX A Yacute -100
+KPX A Ydieresis -100
+KPX A u -30
+KPX A uacute -30
+KPX A ucircumflex -30
+KPX A udieresis -30
+KPX A ugrave -30
+KPX A uhungarumlaut -30
+KPX A umacron -30
+KPX A uogonek -30
+KPX A uring -30
+KPX A v -40
+KPX A w -40
+KPX A y -40
+KPX A yacute -40
+KPX A ydieresis -40
+KPX Aacute C -30
+KPX Aacute Cacute -30
+KPX Aacute Ccaron -30
+KPX Aacute Ccedilla -30
+KPX Aacute G -30
+KPX Aacute Gbreve -30
+KPX Aacute Gcommaaccent -30
+KPX Aacute O -30
+KPX Aacute Oacute -30
+KPX Aacute Ocircumflex -30
+KPX Aacute Odieresis -30
+KPX Aacute Ograve -30
+KPX Aacute Ohungarumlaut -30
+KPX Aacute Omacron -30
+KPX Aacute Oslash -30
+KPX Aacute Otilde -30
+KPX Aacute Q -30
+KPX Aacute T -120
+KPX Aacute Tcaron -120
+KPX Aacute Tcommaaccent -120
+KPX Aacute U -50
+KPX Aacute Uacute -50
+KPX Aacute Ucircumflex -50
+KPX Aacute Udieresis -50
+KPX Aacute Ugrave -50
+KPX Aacute Uhungarumlaut -50
+KPX Aacute Umacron -50
+KPX Aacute Uogonek -50
+KPX Aacute Uring -50
+KPX Aacute V -70
+KPX Aacute W -50
+KPX Aacute Y -100
+KPX Aacute Yacute -100
+KPX Aacute Ydieresis -100
+KPX Aacute u -30
+KPX Aacute uacute -30
+KPX Aacute ucircumflex -30
+KPX Aacute udieresis -30
+KPX Aacute ugrave -30
+KPX Aacute uhungarumlaut -30
+KPX Aacute umacron -30
+KPX Aacute uogonek -30
+KPX Aacute uring -30
+KPX Aacute v -40
+KPX Aacute w -40
+KPX Aacute y -40
+KPX Aacute yacute -40
+KPX Aacute ydieresis -40
+KPX Abreve C -30
+KPX Abreve Cacute -30
+KPX Abreve Ccaron -30
+KPX Abreve Ccedilla -30
+KPX Abreve G -30
+KPX Abreve Gbreve -30
+KPX Abreve Gcommaaccent -30
+KPX Abreve O -30
+KPX Abreve Oacute -30
+KPX Abreve Ocircumflex -30
+KPX Abreve Odieresis -30
+KPX Abreve Ograve -30
+KPX Abreve Ohungarumlaut -30
+KPX Abreve Omacron -30
+KPX Abreve Oslash -30
+KPX Abreve Otilde -30
+KPX Abreve Q -30
+KPX Abreve T -120
+KPX Abreve Tcaron -120
+KPX Abreve Tcommaaccent -120
+KPX Abreve U -50
+KPX Abreve Uacute -50
+KPX Abreve Ucircumflex -50
+KPX Abreve Udieresis -50
+KPX Abreve Ugrave -50
+KPX Abreve Uhungarumlaut -50
+KPX Abreve Umacron -50
+KPX Abreve Uogonek -50
+KPX Abreve Uring -50
+KPX Abreve V -70
+KPX Abreve W -50
+KPX Abreve Y -100
+KPX Abreve Yacute -100
+KPX Abreve Ydieresis -100
+KPX Abreve u -30
+KPX Abreve uacute -30
+KPX Abreve ucircumflex -30
+KPX Abreve udieresis -30
+KPX Abreve ugrave -30
+KPX Abreve uhungarumlaut -30
+KPX Abreve umacron -30
+KPX Abreve uogonek -30
+KPX Abreve uring -30
+KPX Abreve v -40
+KPX Abreve w -40
+KPX Abreve y -40
+KPX Abreve yacute -40
+KPX Abreve ydieresis -40
+KPX Acircumflex C -30
+KPX Acircumflex Cacute -30
+KPX Acircumflex Ccaron -30
+KPX Acircumflex Ccedilla -30
+KPX Acircumflex G -30
+KPX Acircumflex Gbreve -30
+KPX Acircumflex Gcommaaccent -30
+KPX Acircumflex O -30
+KPX Acircumflex Oacute -30
+KPX Acircumflex Ocircumflex -30
+KPX Acircumflex Odieresis -30
+KPX Acircumflex Ograve -30
+KPX Acircumflex Ohungarumlaut -30
+KPX Acircumflex Omacron -30
+KPX Acircumflex Oslash -30
+KPX Acircumflex Otilde -30
+KPX Acircumflex Q -30
+KPX Acircumflex T -120
+KPX Acircumflex Tcaron -120
+KPX Acircumflex Tcommaaccent -120
+KPX Acircumflex U -50
+KPX Acircumflex Uacute -50
+KPX Acircumflex Ucircumflex -50
+KPX Acircumflex Udieresis -50
+KPX Acircumflex Ugrave -50
+KPX Acircumflex Uhungarumlaut -50
+KPX Acircumflex Umacron -50
+KPX Acircumflex Uogonek -50
+KPX Acircumflex Uring -50
+KPX Acircumflex V -70
+KPX Acircumflex W -50
+KPX Acircumflex Y -100
+KPX Acircumflex Yacute -100
+KPX Acircumflex Ydieresis -100
+KPX Acircumflex u -30
+KPX Acircumflex uacute -30
+KPX Acircumflex ucircumflex -30
+KPX Acircumflex udieresis -30
+KPX Acircumflex ugrave -30
+KPX Acircumflex uhungarumlaut -30
+KPX Acircumflex umacron -30
+KPX Acircumflex uogonek -30
+KPX Acircumflex uring -30
+KPX Acircumflex v -40
+KPX Acircumflex w -40
+KPX Acircumflex y -40
+KPX Acircumflex yacute -40
+KPX Acircumflex ydieresis -40
+KPX Adieresis C -30
+KPX Adieresis Cacute -30
+KPX Adieresis Ccaron -30
+KPX Adieresis Ccedilla -30
+KPX Adieresis G -30
+KPX Adieresis Gbreve -30
+KPX Adieresis Gcommaaccent -30
+KPX Adieresis O -30
+KPX Adieresis Oacute -30
+KPX Adieresis Ocircumflex -30
+KPX Adieresis Odieresis -30
+KPX Adieresis Ograve -30
+KPX Adieresis Ohungarumlaut -30
+KPX Adieresis Omacron -30
+KPX Adieresis Oslash -30
+KPX Adieresis Otilde -30
+KPX Adieresis Q -30
+KPX Adieresis T -120
+KPX Adieresis Tcaron -120
+KPX Adieresis Tcommaaccent -120
+KPX Adieresis U -50
+KPX Adieresis Uacute -50
+KPX Adieresis Ucircumflex -50
+KPX Adieresis Udieresis -50
+KPX Adieresis Ugrave -50
+KPX Adieresis Uhungarumlaut -50
+KPX Adieresis Umacron -50
+KPX Adieresis Uogonek -50
+KPX Adieresis Uring -50
+KPX Adieresis V -70
+KPX Adieresis W -50
+KPX Adieresis Y -100
+KPX Adieresis Yacute -100
+KPX Adieresis Ydieresis -100
+KPX Adieresis u -30
+KPX Adieresis uacute -30
+KPX Adieresis ucircumflex -30
+KPX Adieresis udieresis -30
+KPX Adieresis ugrave -30
+KPX Adieresis uhungarumlaut -30
+KPX Adieresis umacron -30
+KPX Adieresis uogonek -30
+KPX Adieresis uring -30
+KPX Adieresis v -40
+KPX Adieresis w -40
+KPX Adieresis y -40
+KPX Adieresis yacute -40
+KPX Adieresis ydieresis -40
+KPX Agrave C -30
+KPX Agrave Cacute -30
+KPX Agrave Ccaron -30
+KPX Agrave Ccedilla -30
+KPX Agrave G -30
+KPX Agrave Gbreve -30
+KPX Agrave Gcommaaccent -30
+KPX Agrave O -30
+KPX Agrave Oacute -30
+KPX Agrave Ocircumflex -30
+KPX Agrave Odieresis -30
+KPX Agrave Ograve -30
+KPX Agrave Ohungarumlaut -30
+KPX Agrave Omacron -30
+KPX Agrave Oslash -30
+KPX Agrave Otilde -30
+KPX Agrave Q -30
+KPX Agrave T -120
+KPX Agrave Tcaron -120
+KPX Agrave Tcommaaccent -120
+KPX Agrave U -50
+KPX Agrave Uacute -50
+KPX Agrave Ucircumflex -50
+KPX Agrave Udieresis -50
+KPX Agrave Ugrave -50
+KPX Agrave Uhungarumlaut -50
+KPX Agrave Umacron -50
+KPX Agrave Uogonek -50
+KPX Agrave Uring -50
+KPX Agrave V -70
+KPX Agrave W -50
+KPX Agrave Y -100
+KPX Agrave Yacute -100
+KPX Agrave Ydieresis -100
+KPX Agrave u -30
+KPX Agrave uacute -30
+KPX Agrave ucircumflex -30
+KPX Agrave udieresis -30
+KPX Agrave ugrave -30
+KPX Agrave uhungarumlaut -30
+KPX Agrave umacron -30
+KPX Agrave uogonek -30
+KPX Agrave uring -30
+KPX Agrave v -40
+KPX Agrave w -40
+KPX Agrave y -40
+KPX Agrave yacute -40
+KPX Agrave ydieresis -40
+KPX Amacron C -30
+KPX Amacron Cacute -30
+KPX Amacron Ccaron -30
+KPX Amacron Ccedilla -30
+KPX Amacron G -30
+KPX Amacron Gbreve -30
+KPX Amacron Gcommaaccent -30
+KPX Amacron O -30
+KPX Amacron Oacute -30
+KPX Amacron Ocircumflex -30
+KPX Amacron Odieresis -30
+KPX Amacron Ograve -30
+KPX Amacron Ohungarumlaut -30
+KPX Amacron Omacron -30
+KPX Amacron Oslash -30
+KPX Amacron Otilde -30
+KPX Amacron Q -30
+KPX Amacron T -120
+KPX Amacron Tcaron -120
+KPX Amacron Tcommaaccent -120
+KPX Amacron U -50
+KPX Amacron Uacute -50
+KPX Amacron Ucircumflex -50
+KPX Amacron Udieresis -50
+KPX Amacron Ugrave -50
+KPX Amacron Uhungarumlaut -50
+KPX Amacron Umacron -50
+KPX Amacron Uogonek -50
+KPX Amacron Uring -50
+KPX Amacron V -70
+KPX Amacron W -50
+KPX Amacron Y -100
+KPX Amacron Yacute -100
+KPX Amacron Ydieresis -100
+KPX Amacron u -30
+KPX Amacron uacute -30
+KPX Amacron ucircumflex -30
+KPX Amacron udieresis -30
+KPX Amacron ugrave -30
+KPX Amacron uhungarumlaut -30
+KPX Amacron umacron -30
+KPX Amacron uogonek -30
+KPX Amacron uring -30
+KPX Amacron v -40
+KPX Amacron w -40
+KPX Amacron y -40
+KPX Amacron yacute -40
+KPX Amacron ydieresis -40
+KPX Aogonek C -30
+KPX Aogonek Cacute -30
+KPX Aogonek Ccaron -30
+KPX Aogonek Ccedilla -30
+KPX Aogonek G -30
+KPX Aogonek Gbreve -30
+KPX Aogonek Gcommaaccent -30
+KPX Aogonek O -30
+KPX Aogonek Oacute -30
+KPX Aogonek Ocircumflex -30
+KPX Aogonek Odieresis -30
+KPX Aogonek Ograve -30
+KPX Aogonek Ohungarumlaut -30
+KPX Aogonek Omacron -30
+KPX Aogonek Oslash -30
+KPX Aogonek Otilde -30
+KPX Aogonek Q -30
+KPX Aogonek T -120
+KPX Aogonek Tcaron -120
+KPX Aogonek Tcommaaccent -120
+KPX Aogonek U -50
+KPX Aogonek Uacute -50
+KPX Aogonek Ucircumflex -50
+KPX Aogonek Udieresis -50
+KPX Aogonek Ugrave -50
+KPX Aogonek Uhungarumlaut -50
+KPX Aogonek Umacron -50
+KPX Aogonek Uogonek -50
+KPX Aogonek Uring -50
+KPX Aogonek V -70
+KPX Aogonek W -50
+KPX Aogonek Y -100
+KPX Aogonek Yacute -100
+KPX Aogonek Ydieresis -100
+KPX Aogonek u -30
+KPX Aogonek uacute -30
+KPX Aogonek ucircumflex -30
+KPX Aogonek udieresis -30
+KPX Aogonek ugrave -30
+KPX Aogonek uhungarumlaut -30
+KPX Aogonek umacron -30
+KPX Aogonek uogonek -30
+KPX Aogonek uring -30
+KPX Aogonek v -40
+KPX Aogonek w -40
+KPX Aogonek y -40
+KPX Aogonek yacute -40
+KPX Aogonek ydieresis -40
+KPX Aring C -30
+KPX Aring Cacute -30
+KPX Aring Ccaron -30
+KPX Aring Ccedilla -30
+KPX Aring G -30
+KPX Aring Gbreve -30
+KPX Aring Gcommaaccent -30
+KPX Aring O -30
+KPX Aring Oacute -30
+KPX Aring Ocircumflex -30
+KPX Aring Odieresis -30
+KPX Aring Ograve -30
+KPX Aring Ohungarumlaut -30
+KPX Aring Omacron -30
+KPX Aring Oslash -30
+KPX Aring Otilde -30
+KPX Aring Q -30
+KPX Aring T -120
+KPX Aring Tcaron -120
+KPX Aring Tcommaaccent -120
+KPX Aring U -50
+KPX Aring Uacute -50
+KPX Aring Ucircumflex -50
+KPX Aring Udieresis -50
+KPX Aring Ugrave -50
+KPX Aring Uhungarumlaut -50
+KPX Aring Umacron -50
+KPX Aring Uogonek -50
+KPX Aring Uring -50
+KPX Aring V -70
+KPX Aring W -50
+KPX Aring Y -100
+KPX Aring Yacute -100
+KPX Aring Ydieresis -100
+KPX Aring u -30
+KPX Aring uacute -30
+KPX Aring ucircumflex -30
+KPX Aring udieresis -30
+KPX Aring ugrave -30
+KPX Aring uhungarumlaut -30
+KPX Aring umacron -30
+KPX Aring uogonek -30
+KPX Aring uring -30
+KPX Aring v -40
+KPX Aring w -40
+KPX Aring y -40
+KPX Aring yacute -40
+KPX Aring ydieresis -40
+KPX Atilde C -30
+KPX Atilde Cacute -30
+KPX Atilde Ccaron -30
+KPX Atilde Ccedilla -30
+KPX Atilde G -30
+KPX Atilde Gbreve -30
+KPX Atilde Gcommaaccent -30
+KPX Atilde O -30
+KPX Atilde Oacute -30
+KPX Atilde Ocircumflex -30
+KPX Atilde Odieresis -30
+KPX Atilde Ograve -30
+KPX Atilde Ohungarumlaut -30
+KPX Atilde Omacron -30
+KPX Atilde Oslash -30
+KPX Atilde Otilde -30
+KPX Atilde Q -30
+KPX Atilde T -120
+KPX Atilde Tcaron -120
+KPX Atilde Tcommaaccent -120
+KPX Atilde U -50
+KPX Atilde Uacute -50
+KPX Atilde Ucircumflex -50
+KPX Atilde Udieresis -50
+KPX Atilde Ugrave -50
+KPX Atilde Uhungarumlaut -50
+KPX Atilde Umacron -50
+KPX Atilde Uogonek -50
+KPX Atilde Uring -50
+KPX Atilde V -70
+KPX Atilde W -50
+KPX Atilde Y -100
+KPX Atilde Yacute -100
+KPX Atilde Ydieresis -100
+KPX Atilde u -30
+KPX Atilde uacute -30
+KPX Atilde ucircumflex -30
+KPX Atilde udieresis -30
+KPX Atilde ugrave -30
+KPX Atilde uhungarumlaut -30
+KPX Atilde umacron -30
+KPX Atilde uogonek -30
+KPX Atilde uring -30
+KPX Atilde v -40
+KPX Atilde w -40
+KPX Atilde y -40
+KPX Atilde yacute -40
+KPX Atilde ydieresis -40
+KPX B U -10
+KPX B Uacute -10
+KPX B Ucircumflex -10
+KPX B Udieresis -10
+KPX B Ugrave -10
+KPX B Uhungarumlaut -10
+KPX B Umacron -10
+KPX B Uogonek -10
+KPX B Uring -10
+KPX B comma -20
+KPX B period -20
+KPX C comma -30
+KPX C period -30
+KPX Cacute comma -30
+KPX Cacute period -30
+KPX Ccaron comma -30
+KPX Ccaron period -30
+KPX Ccedilla comma -30
+KPX Ccedilla period -30
+KPX D A -40
+KPX D Aacute -40
+KPX D Abreve -40
+KPX D Acircumflex -40
+KPX D Adieresis -40
+KPX D Agrave -40
+KPX D Amacron -40
+KPX D Aogonek -40
+KPX D Aring -40
+KPX D Atilde -40
+KPX D V -70
+KPX D W -40
+KPX D Y -90
+KPX D Yacute -90
+KPX D Ydieresis -90
+KPX D comma -70
+KPX D period -70
+KPX Dcaron A -40
+KPX Dcaron Aacute -40
+KPX Dcaron Abreve -40
+KPX Dcaron Acircumflex -40
+KPX Dcaron Adieresis -40
+KPX Dcaron Agrave -40
+KPX Dcaron Amacron -40
+KPX Dcaron Aogonek -40
+KPX Dcaron Aring -40
+KPX Dcaron Atilde -40
+KPX Dcaron V -70
+KPX Dcaron W -40
+KPX Dcaron Y -90
+KPX Dcaron Yacute -90
+KPX Dcaron Ydieresis -90
+KPX Dcaron comma -70
+KPX Dcaron period -70
+KPX Dcroat A -40
+KPX Dcroat Aacute -40
+KPX Dcroat Abreve -40
+KPX Dcroat Acircumflex -40
+KPX Dcroat Adieresis -40
+KPX Dcroat Agrave -40
+KPX Dcroat Amacron -40
+KPX Dcroat Aogonek -40
+KPX Dcroat Aring -40
+KPX Dcroat Atilde -40
+KPX Dcroat V -70
+KPX Dcroat W -40
+KPX Dcroat Y -90
+KPX Dcroat Yacute -90
+KPX Dcroat Ydieresis -90
+KPX Dcroat comma -70
+KPX Dcroat period -70
+KPX F A -80
+KPX F Aacute -80
+KPX F Abreve -80
+KPX F Acircumflex -80
+KPX F Adieresis -80
+KPX F Agrave -80
+KPX F Amacron -80
+KPX F Aogonek -80
+KPX F Aring -80
+KPX F Atilde -80
+KPX F a -50
+KPX F aacute -50
+KPX F abreve -50
+KPX F acircumflex -50
+KPX F adieresis -50
+KPX F agrave -50
+KPX F amacron -50
+KPX F aogonek -50
+KPX F aring -50
+KPX F atilde -50
+KPX F comma -150
+KPX F e -30
+KPX F eacute -30
+KPX F ecaron -30
+KPX F ecircumflex -30
+KPX F edieresis -30
+KPX F edotaccent -30
+KPX F egrave -30
+KPX F emacron -30
+KPX F eogonek -30
+KPX F o -30
+KPX F oacute -30
+KPX F ocircumflex -30
+KPX F odieresis -30
+KPX F ograve -30
+KPX F ohungarumlaut -30
+KPX F omacron -30
+KPX F oslash -30
+KPX F otilde -30
+KPX F period -150
+KPX F r -45
+KPX F racute -45
+KPX F rcaron -45
+KPX F rcommaaccent -45
+KPX J A -20
+KPX J Aacute -20
+KPX J Abreve -20
+KPX J Acircumflex -20
+KPX J Adieresis -20
+KPX J Agrave -20
+KPX J Amacron -20
+KPX J Aogonek -20
+KPX J Aring -20
+KPX J Atilde -20
+KPX J a -20
+KPX J aacute -20
+KPX J abreve -20
+KPX J acircumflex -20
+KPX J adieresis -20
+KPX J agrave -20
+KPX J amacron -20
+KPX J aogonek -20
+KPX J aring -20
+KPX J atilde -20
+KPX J comma -30
+KPX J period -30
+KPX J u -20
+KPX J uacute -20
+KPX J ucircumflex -20
+KPX J udieresis -20
+KPX J ugrave -20
+KPX J uhungarumlaut -20
+KPX J umacron -20
+KPX J uogonek -20
+KPX J uring -20
+KPX K O -50
+KPX K Oacute -50
+KPX K Ocircumflex -50
+KPX K Odieresis -50
+KPX K Ograve -50
+KPX K Ohungarumlaut -50
+KPX K Omacron -50
+KPX K Oslash -50
+KPX K Otilde -50
+KPX K e -40
+KPX K eacute -40
+KPX K ecaron -40
+KPX K ecircumflex -40
+KPX K edieresis -40
+KPX K edotaccent -40
+KPX K egrave -40
+KPX K emacron -40
+KPX K eogonek -40
+KPX K o -40
+KPX K oacute -40
+KPX K ocircumflex -40
+KPX K odieresis -40
+KPX K ograve -40
+KPX K ohungarumlaut -40
+KPX K omacron -40
+KPX K oslash -40
+KPX K otilde -40
+KPX K u -30
+KPX K uacute -30
+KPX K ucircumflex -30
+KPX K udieresis -30
+KPX K ugrave -30
+KPX K uhungarumlaut -30
+KPX K umacron -30
+KPX K uogonek -30
+KPX K uring -30
+KPX K y -50
+KPX K yacute -50
+KPX K ydieresis -50
+KPX Kcommaaccent O -50
+KPX Kcommaaccent Oacute -50
+KPX Kcommaaccent Ocircumflex -50
+KPX Kcommaaccent Odieresis -50
+KPX Kcommaaccent Ograve -50
+KPX Kcommaaccent Ohungarumlaut -50
+KPX Kcommaaccent Omacron -50
+KPX Kcommaaccent Oslash -50
+KPX Kcommaaccent Otilde -50
+KPX Kcommaaccent e -40
+KPX Kcommaaccent eacute -40
+KPX Kcommaaccent ecaron -40
+KPX Kcommaaccent ecircumflex -40
+KPX Kcommaaccent edieresis -40
+KPX Kcommaaccent edotaccent -40
+KPX Kcommaaccent egrave -40
+KPX Kcommaaccent emacron -40
+KPX Kcommaaccent eogonek -40
+KPX Kcommaaccent o -40
+KPX Kcommaaccent oacute -40
+KPX Kcommaaccent ocircumflex -40
+KPX Kcommaaccent odieresis -40
+KPX Kcommaaccent ograve -40
+KPX Kcommaaccent ohungarumlaut -40
+KPX Kcommaaccent omacron -40
+KPX Kcommaaccent oslash -40
+KPX Kcommaaccent otilde -40
+KPX Kcommaaccent u -30
+KPX Kcommaaccent uacute -30
+KPX Kcommaaccent ucircumflex -30
+KPX Kcommaaccent udieresis -30
+KPX Kcommaaccent ugrave -30
+KPX Kcommaaccent uhungarumlaut -30
+KPX Kcommaaccent umacron -30
+KPX Kcommaaccent uogonek -30
+KPX Kcommaaccent uring -30
+KPX Kcommaaccent y -50
+KPX Kcommaaccent yacute -50
+KPX Kcommaaccent ydieresis -50
+KPX L T -110
+KPX L Tcaron -110
+KPX L Tcommaaccent -110
+KPX L V -110
+KPX L W -70
+KPX L Y -140
+KPX L Yacute -140
+KPX L Ydieresis -140
+KPX L quotedblright -140
+KPX L quoteright -160
+KPX L y -30
+KPX L yacute -30
+KPX L ydieresis -30
+KPX Lacute T -110
+KPX Lacute Tcaron -110
+KPX Lacute Tcommaaccent -110
+KPX Lacute V -110
+KPX Lacute W -70
+KPX Lacute Y -140
+KPX Lacute Yacute -140
+KPX Lacute Ydieresis -140
+KPX Lacute quotedblright -140
+KPX Lacute quoteright -160
+KPX Lacute y -30
+KPX Lacute yacute -30
+KPX Lacute ydieresis -30
+KPX Lcaron T -110
+KPX Lcaron Tcaron -110
+KPX Lcaron Tcommaaccent -110
+KPX Lcaron V -110
+KPX Lcaron W -70
+KPX Lcaron Y -140
+KPX Lcaron Yacute -140
+KPX Lcaron Ydieresis -140
+KPX Lcaron quotedblright -140
+KPX Lcaron quoteright -160
+KPX Lcaron y -30
+KPX Lcaron yacute -30
+KPX Lcaron ydieresis -30
+KPX Lcommaaccent T -110
+KPX Lcommaaccent Tcaron -110
+KPX Lcommaaccent Tcommaaccent -110
+KPX Lcommaaccent V -110
+KPX Lcommaaccent W -70
+KPX Lcommaaccent Y -140
+KPX Lcommaaccent Yacute -140
+KPX Lcommaaccent Ydieresis -140
+KPX Lcommaaccent quotedblright -140
+KPX Lcommaaccent quoteright -160
+KPX Lcommaaccent y -30
+KPX Lcommaaccent yacute -30
+KPX Lcommaaccent ydieresis -30
+KPX Lslash T -110
+KPX Lslash Tcaron -110
+KPX Lslash Tcommaaccent -110
+KPX Lslash V -110
+KPX Lslash W -70
+KPX Lslash Y -140
+KPX Lslash Yacute -140
+KPX Lslash Ydieresis -140
+KPX Lslash quotedblright -140
+KPX Lslash quoteright -160
+KPX Lslash y -30
+KPX Lslash yacute -30
+KPX Lslash ydieresis -30
+KPX O A -20
+KPX O Aacute -20
+KPX O Abreve -20
+KPX O Acircumflex -20
+KPX O Adieresis -20
+KPX O Agrave -20
+KPX O Amacron -20
+KPX O Aogonek -20
+KPX O Aring -20
+KPX O Atilde -20
+KPX O T -40
+KPX O Tcaron -40
+KPX O Tcommaaccent -40
+KPX O V -50
+KPX O W -30
+KPX O X -60
+KPX O Y -70
+KPX O Yacute -70
+KPX O Ydieresis -70
+KPX O comma -40
+KPX O period -40
+KPX Oacute A -20
+KPX Oacute Aacute -20
+KPX Oacute Abreve -20
+KPX Oacute Acircumflex -20
+KPX Oacute Adieresis -20
+KPX Oacute Agrave -20
+KPX Oacute Amacron -20
+KPX Oacute Aogonek -20
+KPX Oacute Aring -20
+KPX Oacute Atilde -20
+KPX Oacute T -40
+KPX Oacute Tcaron -40
+KPX Oacute Tcommaaccent -40
+KPX Oacute V -50
+KPX Oacute W -30
+KPX Oacute X -60
+KPX Oacute Y -70
+KPX Oacute Yacute -70
+KPX Oacute Ydieresis -70
+KPX Oacute comma -40
+KPX Oacute period -40
+KPX Ocircumflex A -20
+KPX Ocircumflex Aacute -20
+KPX Ocircumflex Abreve -20
+KPX Ocircumflex Acircumflex -20
+KPX Ocircumflex Adieresis -20
+KPX Ocircumflex Agrave -20
+KPX Ocircumflex Amacron -20
+KPX Ocircumflex Aogonek -20
+KPX Ocircumflex Aring -20
+KPX Ocircumflex Atilde -20
+KPX Ocircumflex T -40
+KPX Ocircumflex Tcaron -40
+KPX Ocircumflex Tcommaaccent -40
+KPX Ocircumflex V -50
+KPX Ocircumflex W -30
+KPX Ocircumflex X -60
+KPX Ocircumflex Y -70
+KPX Ocircumflex Yacute -70
+KPX Ocircumflex Ydieresis -70
+KPX Ocircumflex comma -40
+KPX Ocircumflex period -40
+KPX Odieresis A -20
+KPX Odieresis Aacute -20
+KPX Odieresis Abreve -20
+KPX Odieresis Acircumflex -20
+KPX Odieresis Adieresis -20
+KPX Odieresis Agrave -20
+KPX Odieresis Amacron -20
+KPX Odieresis Aogonek -20
+KPX Odieresis Aring -20
+KPX Odieresis Atilde -20
+KPX Odieresis T -40
+KPX Odieresis Tcaron -40
+KPX Odieresis Tcommaaccent -40
+KPX Odieresis V -50
+KPX Odieresis W -30
+KPX Odieresis X -60
+KPX Odieresis Y -70
+KPX Odieresis Yacute -70
+KPX Odieresis Ydieresis -70
+KPX Odieresis comma -40
+KPX Odieresis period -40
+KPX Ograve A -20
+KPX Ograve Aacute -20
+KPX Ograve Abreve -20
+KPX Ograve Acircumflex -20
+KPX Ograve Adieresis -20
+KPX Ograve Agrave -20
+KPX Ograve Amacron -20
+KPX Ograve Aogonek -20
+KPX Ograve Aring -20
+KPX Ograve Atilde -20
+KPX Ograve T -40
+KPX Ograve Tcaron -40
+KPX Ograve Tcommaaccent -40
+KPX Ograve V -50
+KPX Ograve W -30
+KPX Ograve X -60
+KPX Ograve Y -70
+KPX Ograve Yacute -70
+KPX Ograve Ydieresis -70
+KPX Ograve comma -40
+KPX Ograve period -40
+KPX Ohungarumlaut A -20
+KPX Ohungarumlaut Aacute -20
+KPX Ohungarumlaut Abreve -20
+KPX Ohungarumlaut Acircumflex -20
+KPX Ohungarumlaut Adieresis -20
+KPX Ohungarumlaut Agrave -20
+KPX Ohungarumlaut Amacron -20
+KPX Ohungarumlaut Aogonek -20
+KPX Ohungarumlaut Aring -20
+KPX Ohungarumlaut Atilde -20
+KPX Ohungarumlaut T -40
+KPX Ohungarumlaut Tcaron -40
+KPX Ohungarumlaut Tcommaaccent -40
+KPX Ohungarumlaut V -50
+KPX Ohungarumlaut W -30
+KPX Ohungarumlaut X -60
+KPX Ohungarumlaut Y -70
+KPX Ohungarumlaut Yacute -70
+KPX Ohungarumlaut Ydieresis -70
+KPX Ohungarumlaut comma -40
+KPX Ohungarumlaut period -40
+KPX Omacron A -20
+KPX Omacron Aacute -20
+KPX Omacron Abreve -20
+KPX Omacron Acircumflex -20
+KPX Omacron Adieresis -20
+KPX Omacron Agrave -20
+KPX Omacron Amacron -20
+KPX Omacron Aogonek -20
+KPX Omacron Aring -20
+KPX Omacron Atilde -20
+KPX Omacron T -40
+KPX Omacron Tcaron -40
+KPX Omacron Tcommaaccent -40
+KPX Omacron V -50
+KPX Omacron W -30
+KPX Omacron X -60
+KPX Omacron Y -70
+KPX Omacron Yacute -70
+KPX Omacron Ydieresis -70
+KPX Omacron comma -40
+KPX Omacron period -40
+KPX Oslash A -20
+KPX Oslash Aacute -20
+KPX Oslash Abreve -20
+KPX Oslash Acircumflex -20
+KPX Oslash Adieresis -20
+KPX Oslash Agrave -20
+KPX Oslash Amacron -20
+KPX Oslash Aogonek -20
+KPX Oslash Aring -20
+KPX Oslash Atilde -20
+KPX Oslash T -40
+KPX Oslash Tcaron -40
+KPX Oslash Tcommaaccent -40
+KPX Oslash V -50
+KPX Oslash W -30
+KPX Oslash X -60
+KPX Oslash Y -70
+KPX Oslash Yacute -70
+KPX Oslash Ydieresis -70
+KPX Oslash comma -40
+KPX Oslash period -40
+KPX Otilde A -20
+KPX Otilde Aacute -20
+KPX Otilde Abreve -20
+KPX Otilde Acircumflex -20
+KPX Otilde Adieresis -20
+KPX Otilde Agrave -20
+KPX Otilde Amacron -20
+KPX Otilde Aogonek -20
+KPX Otilde Aring -20
+KPX Otilde Atilde -20
+KPX Otilde T -40
+KPX Otilde Tcaron -40
+KPX Otilde Tcommaaccent -40
+KPX Otilde V -50
+KPX Otilde W -30
+KPX Otilde X -60
+KPX Otilde Y -70
+KPX Otilde Yacute -70
+KPX Otilde Ydieresis -70
+KPX Otilde comma -40
+KPX Otilde period -40
+KPX P A -120
+KPX P Aacute -120
+KPX P Abreve -120
+KPX P Acircumflex -120
+KPX P Adieresis -120
+KPX P Agrave -120
+KPX P Amacron -120
+KPX P Aogonek -120
+KPX P Aring -120
+KPX P Atilde -120
+KPX P a -40
+KPX P aacute -40
+KPX P abreve -40
+KPX P acircumflex -40
+KPX P adieresis -40
+KPX P agrave -40
+KPX P amacron -40
+KPX P aogonek -40
+KPX P aring -40
+KPX P atilde -40
+KPX P comma -180
+KPX P e -50
+KPX P eacute -50
+KPX P ecaron -50
+KPX P ecircumflex -50
+KPX P edieresis -50
+KPX P edotaccent -50
+KPX P egrave -50
+KPX P emacron -50
+KPX P eogonek -50
+KPX P o -50
+KPX P oacute -50
+KPX P ocircumflex -50
+KPX P odieresis -50
+KPX P ograve -50
+KPX P ohungarumlaut -50
+KPX P omacron -50
+KPX P oslash -50
+KPX P otilde -50
+KPX P period -180
+KPX Q U -10
+KPX Q Uacute -10
+KPX Q Ucircumflex -10
+KPX Q Udieresis -10
+KPX Q Ugrave -10
+KPX Q Uhungarumlaut -10
+KPX Q Umacron -10
+KPX Q Uogonek -10
+KPX Q Uring -10
+KPX R O -20
+KPX R Oacute -20
+KPX R Ocircumflex -20
+KPX R Odieresis -20
+KPX R Ograve -20
+KPX R Ohungarumlaut -20
+KPX R Omacron -20
+KPX R Oslash -20
+KPX R Otilde -20
+KPX R T -30
+KPX R Tcaron -30
+KPX R Tcommaaccent -30
+KPX R U -40
+KPX R Uacute -40
+KPX R Ucircumflex -40
+KPX R Udieresis -40
+KPX R Ugrave -40
+KPX R Uhungarumlaut -40
+KPX R Umacron -40
+KPX R Uogonek -40
+KPX R Uring -40
+KPX R V -50
+KPX R W -30
+KPX R Y -50
+KPX R Yacute -50
+KPX R Ydieresis -50
+KPX Racute O -20
+KPX Racute Oacute -20
+KPX Racute Ocircumflex -20
+KPX Racute Odieresis -20
+KPX Racute Ograve -20
+KPX Racute Ohungarumlaut -20
+KPX Racute Omacron -20
+KPX Racute Oslash -20
+KPX Racute Otilde -20
+KPX Racute T -30
+KPX Racute Tcaron -30
+KPX Racute Tcommaaccent -30
+KPX Racute U -40
+KPX Racute Uacute -40
+KPX Racute Ucircumflex -40
+KPX Racute Udieresis -40
+KPX Racute Ugrave -40
+KPX Racute Uhungarumlaut -40
+KPX Racute Umacron -40
+KPX Racute Uogonek -40
+KPX Racute Uring -40
+KPX Racute V -50
+KPX Racute W -30
+KPX Racute Y -50
+KPX Racute Yacute -50
+KPX Racute Ydieresis -50
+KPX Rcaron O -20
+KPX Rcaron Oacute -20
+KPX Rcaron Ocircumflex -20
+KPX Rcaron Odieresis -20
+KPX Rcaron Ograve -20
+KPX Rcaron Ohungarumlaut -20
+KPX Rcaron Omacron -20
+KPX Rcaron Oslash -20
+KPX Rcaron Otilde -20
+KPX Rcaron T -30
+KPX Rcaron Tcaron -30
+KPX Rcaron Tcommaaccent -30
+KPX Rcaron U -40
+KPX Rcaron Uacute -40
+KPX Rcaron Ucircumflex -40
+KPX Rcaron Udieresis -40
+KPX Rcaron Ugrave -40
+KPX Rcaron Uhungarumlaut -40
+KPX Rcaron Umacron -40
+KPX Rcaron Uogonek -40
+KPX Rcaron Uring -40
+KPX Rcaron V -50
+KPX Rcaron W -30
+KPX Rcaron Y -50
+KPX Rcaron Yacute -50
+KPX Rcaron Ydieresis -50
+KPX Rcommaaccent O -20
+KPX Rcommaaccent Oacute -20
+KPX Rcommaaccent Ocircumflex -20
+KPX Rcommaaccent Odieresis -20
+KPX Rcommaaccent Ograve -20
+KPX Rcommaaccent Ohungarumlaut -20
+KPX Rcommaaccent Omacron -20
+KPX Rcommaaccent Oslash -20
+KPX Rcommaaccent Otilde -20
+KPX Rcommaaccent T -30
+KPX Rcommaaccent Tcaron -30
+KPX Rcommaaccent Tcommaaccent -30
+KPX Rcommaaccent U -40
+KPX Rcommaaccent Uacute -40
+KPX Rcommaaccent Ucircumflex -40
+KPX Rcommaaccent Udieresis -40
+KPX Rcommaaccent Ugrave -40
+KPX Rcommaaccent Uhungarumlaut -40
+KPX Rcommaaccent Umacron -40
+KPX Rcommaaccent Uogonek -40
+KPX Rcommaaccent Uring -40
+KPX Rcommaaccent V -50
+KPX Rcommaaccent W -30
+KPX Rcommaaccent Y -50
+KPX Rcommaaccent Yacute -50
+KPX Rcommaaccent Ydieresis -50
+KPX S comma -20
+KPX S period -20
+KPX Sacute comma -20
+KPX Sacute period -20
+KPX Scaron comma -20
+KPX Scaron period -20
+KPX Scedilla comma -20
+KPX Scedilla period -20
+KPX Scommaaccent comma -20
+KPX Scommaaccent period -20
+KPX T A -120
+KPX T Aacute -120
+KPX T Abreve -120
+KPX T Acircumflex -120
+KPX T Adieresis -120
+KPX T Agrave -120
+KPX T Amacron -120
+KPX T Aogonek -120
+KPX T Aring -120
+KPX T Atilde -120
+KPX T O -40
+KPX T Oacute -40
+KPX T Ocircumflex -40
+KPX T Odieresis -40
+KPX T Ograve -40
+KPX T Ohungarumlaut -40
+KPX T Omacron -40
+KPX T Oslash -40
+KPX T Otilde -40
+KPX T a -120
+KPX T aacute -120
+KPX T abreve -60
+KPX T acircumflex -120
+KPX T adieresis -120
+KPX T agrave -120
+KPX T amacron -60
+KPX T aogonek -120
+KPX T aring -120
+KPX T atilde -60
+KPX T colon -20
+KPX T comma -120
+KPX T e -120
+KPX T eacute -120
+KPX T ecaron -120
+KPX T ecircumflex -120
+KPX T edieresis -120
+KPX T edotaccent -120
+KPX T egrave -60
+KPX T emacron -60
+KPX T eogonek -120
+KPX T hyphen -140
+KPX T o -120
+KPX T oacute -120
+KPX T ocircumflex -120
+KPX T odieresis -120
+KPX T ograve -120
+KPX T ohungarumlaut -120
+KPX T omacron -60
+KPX T oslash -120
+KPX T otilde -60
+KPX T period -120
+KPX T r -120
+KPX T racute -120
+KPX T rcaron -120
+KPX T rcommaaccent -120
+KPX T semicolon -20
+KPX T u -120
+KPX T uacute -120
+KPX T ucircumflex -120
+KPX T udieresis -120
+KPX T ugrave -120
+KPX T uhungarumlaut -120
+KPX T umacron -60
+KPX T uogonek -120
+KPX T uring -120
+KPX T w -120
+KPX T y -120
+KPX T yacute -120
+KPX T ydieresis -60
+KPX Tcaron A -120
+KPX Tcaron Aacute -120
+KPX Tcaron Abreve -120
+KPX Tcaron Acircumflex -120
+KPX Tcaron Adieresis -120
+KPX Tcaron Agrave -120
+KPX Tcaron Amacron -120
+KPX Tcaron Aogonek -120
+KPX Tcaron Aring -120
+KPX Tcaron Atilde -120
+KPX Tcaron O -40
+KPX Tcaron Oacute -40
+KPX Tcaron Ocircumflex -40
+KPX Tcaron Odieresis -40
+KPX Tcaron Ograve -40
+KPX Tcaron Ohungarumlaut -40
+KPX Tcaron Omacron -40
+KPX Tcaron Oslash -40
+KPX Tcaron Otilde -40
+KPX Tcaron a -120
+KPX Tcaron aacute -120
+KPX Tcaron abreve -60
+KPX Tcaron acircumflex -120
+KPX Tcaron adieresis -120
+KPX Tcaron agrave -120
+KPX Tcaron amacron -60
+KPX Tcaron aogonek -120
+KPX Tcaron aring -120
+KPX Tcaron atilde -60
+KPX Tcaron colon -20
+KPX Tcaron comma -120
+KPX Tcaron e -120
+KPX Tcaron eacute -120
+KPX Tcaron ecaron -120
+KPX Tcaron ecircumflex -120
+KPX Tcaron edieresis -120
+KPX Tcaron edotaccent -120
+KPX Tcaron egrave -60
+KPX Tcaron emacron -60
+KPX Tcaron eogonek -120
+KPX Tcaron hyphen -140
+KPX Tcaron o -120
+KPX Tcaron oacute -120
+KPX Tcaron ocircumflex -120
+KPX Tcaron odieresis -120
+KPX Tcaron ograve -120
+KPX Tcaron ohungarumlaut -120
+KPX Tcaron omacron -60
+KPX Tcaron oslash -120
+KPX Tcaron otilde -60
+KPX Tcaron period -120
+KPX Tcaron r -120
+KPX Tcaron racute -120
+KPX Tcaron rcaron -120
+KPX Tcaron rcommaaccent -120
+KPX Tcaron semicolon -20
+KPX Tcaron u -120
+KPX Tcaron uacute -120
+KPX Tcaron ucircumflex -120
+KPX Tcaron udieresis -120
+KPX Tcaron ugrave -120
+KPX Tcaron uhungarumlaut -120
+KPX Tcaron umacron -60
+KPX Tcaron uogonek -120
+KPX Tcaron uring -120
+KPX Tcaron w -120
+KPX Tcaron y -120
+KPX Tcaron yacute -120
+KPX Tcaron ydieresis -60
+KPX Tcommaaccent A -120
+KPX Tcommaaccent Aacute -120
+KPX Tcommaaccent Abreve -120
+KPX Tcommaaccent Acircumflex -120
+KPX Tcommaaccent Adieresis -120
+KPX Tcommaaccent Agrave -120
+KPX Tcommaaccent Amacron -120
+KPX Tcommaaccent Aogonek -120
+KPX Tcommaaccent Aring -120
+KPX Tcommaaccent Atilde -120
+KPX Tcommaaccent O -40
+KPX Tcommaaccent Oacute -40
+KPX Tcommaaccent Ocircumflex -40
+KPX Tcommaaccent Odieresis -40
+KPX Tcommaaccent Ograve -40
+KPX Tcommaaccent Ohungarumlaut -40
+KPX Tcommaaccent Omacron -40
+KPX Tcommaaccent Oslash -40
+KPX Tcommaaccent Otilde -40
+KPX Tcommaaccent a -120
+KPX Tcommaaccent aacute -120
+KPX Tcommaaccent abreve -60
+KPX Tcommaaccent acircumflex -120
+KPX Tcommaaccent adieresis -120
+KPX Tcommaaccent agrave -120
+KPX Tcommaaccent amacron -60
+KPX Tcommaaccent aogonek -120
+KPX Tcommaaccent aring -120
+KPX Tcommaaccent atilde -60
+KPX Tcommaaccent colon -20
+KPX Tcommaaccent comma -120
+KPX Tcommaaccent e -120
+KPX Tcommaaccent eacute -120
+KPX Tcommaaccent ecaron -120
+KPX Tcommaaccent ecircumflex -120
+KPX Tcommaaccent edieresis -120
+KPX Tcommaaccent edotaccent -120
+KPX Tcommaaccent egrave -60
+KPX Tcommaaccent emacron -60
+KPX Tcommaaccent eogonek -120
+KPX Tcommaaccent hyphen -140
+KPX Tcommaaccent o -120
+KPX Tcommaaccent oacute -120
+KPX Tcommaaccent ocircumflex -120
+KPX Tcommaaccent odieresis -120
+KPX Tcommaaccent ograve -120
+KPX Tcommaaccent ohungarumlaut -120
+KPX Tcommaaccent omacron -60
+KPX Tcommaaccent oslash -120
+KPX Tcommaaccent otilde -60
+KPX Tcommaaccent period -120
+KPX Tcommaaccent r -120
+KPX Tcommaaccent racute -120
+KPX Tcommaaccent rcaron -120
+KPX Tcommaaccent rcommaaccent -120
+KPX Tcommaaccent semicolon -20
+KPX Tcommaaccent u -120
+KPX Tcommaaccent uacute -120
+KPX Tcommaaccent ucircumflex -120
+KPX Tcommaaccent udieresis -120
+KPX Tcommaaccent ugrave -120
+KPX Tcommaaccent uhungarumlaut -120
+KPX Tcommaaccent umacron -60
+KPX Tcommaaccent uogonek -120
+KPX Tcommaaccent uring -120
+KPX Tcommaaccent w -120
+KPX Tcommaaccent y -120
+KPX Tcommaaccent yacute -120
+KPX Tcommaaccent ydieresis -60
+KPX U A -40
+KPX U Aacute -40
+KPX U Abreve -40
+KPX U Acircumflex -40
+KPX U Adieresis -40
+KPX U Agrave -40
+KPX U Amacron -40
+KPX U Aogonek -40
+KPX U Aring -40
+KPX U Atilde -40
+KPX U comma -40
+KPX U period -40
+KPX Uacute A -40
+KPX Uacute Aacute -40
+KPX Uacute Abreve -40
+KPX Uacute Acircumflex -40
+KPX Uacute Adieresis -40
+KPX Uacute Agrave -40
+KPX Uacute Amacron -40
+KPX Uacute Aogonek -40
+KPX Uacute Aring -40
+KPX Uacute Atilde -40
+KPX Uacute comma -40
+KPX Uacute period -40
+KPX Ucircumflex A -40
+KPX Ucircumflex Aacute -40
+KPX Ucircumflex Abreve -40
+KPX Ucircumflex Acircumflex -40
+KPX Ucircumflex Adieresis -40
+KPX Ucircumflex Agrave -40
+KPX Ucircumflex Amacron -40
+KPX Ucircumflex Aogonek -40
+KPX Ucircumflex Aring -40
+KPX Ucircumflex Atilde -40
+KPX Ucircumflex comma -40
+KPX Ucircumflex period -40
+KPX Udieresis A -40
+KPX Udieresis Aacute -40
+KPX Udieresis Abreve -40
+KPX Udieresis Acircumflex -40
+KPX Udieresis Adieresis -40
+KPX Udieresis Agrave -40
+KPX Udieresis Amacron -40
+KPX Udieresis Aogonek -40
+KPX Udieresis Aring -40
+KPX Udieresis Atilde -40
+KPX Udieresis comma -40
+KPX Udieresis period -40
+KPX Ugrave A -40
+KPX Ugrave Aacute -40
+KPX Ugrave Abreve -40
+KPX Ugrave Acircumflex -40
+KPX Ugrave Adieresis -40
+KPX Ugrave Agrave -40
+KPX Ugrave Amacron -40
+KPX Ugrave Aogonek -40
+KPX Ugrave Aring -40
+KPX Ugrave Atilde -40
+KPX Ugrave comma -40
+KPX Ugrave period -40
+KPX Uhungarumlaut A -40
+KPX Uhungarumlaut Aacute -40
+KPX Uhungarumlaut Abreve -40
+KPX Uhungarumlaut Acircumflex -40
+KPX Uhungarumlaut Adieresis -40
+KPX Uhungarumlaut Agrave -40
+KPX Uhungarumlaut Amacron -40
+KPX Uhungarumlaut Aogonek -40
+KPX Uhungarumlaut Aring -40
+KPX Uhungarumlaut Atilde -40
+KPX Uhungarumlaut comma -40
+KPX Uhungarumlaut period -40
+KPX Umacron A -40
+KPX Umacron Aacute -40
+KPX Umacron Abreve -40
+KPX Umacron Acircumflex -40
+KPX Umacron Adieresis -40
+KPX Umacron Agrave -40
+KPX Umacron Amacron -40
+KPX Umacron Aogonek -40
+KPX Umacron Aring -40
+KPX Umacron Atilde -40
+KPX Umacron comma -40
+KPX Umacron period -40
+KPX Uogonek A -40
+KPX Uogonek Aacute -40
+KPX Uogonek Abreve -40
+KPX Uogonek Acircumflex -40
+KPX Uogonek Adieresis -40
+KPX Uogonek Agrave -40
+KPX Uogonek Amacron -40
+KPX Uogonek Aogonek -40
+KPX Uogonek Aring -40
+KPX Uogonek Atilde -40
+KPX Uogonek comma -40
+KPX Uogonek period -40
+KPX Uring A -40
+KPX Uring Aacute -40
+KPX Uring Abreve -40
+KPX Uring Acircumflex -40
+KPX Uring Adieresis -40
+KPX Uring Agrave -40
+KPX Uring Amacron -40
+KPX Uring Aogonek -40
+KPX Uring Aring -40
+KPX Uring Atilde -40
+KPX Uring comma -40
+KPX Uring period -40
+KPX V A -80
+KPX V Aacute -80
+KPX V Abreve -80
+KPX V Acircumflex -80
+KPX V Adieresis -80
+KPX V Agrave -80
+KPX V Amacron -80
+KPX V Aogonek -80
+KPX V Aring -80
+KPX V Atilde -80
+KPX V G -40
+KPX V Gbreve -40
+KPX V Gcommaaccent -40
+KPX V O -40
+KPX V Oacute -40
+KPX V Ocircumflex -40
+KPX V Odieresis -40
+KPX V Ograve -40
+KPX V Ohungarumlaut -40
+KPX V Omacron -40
+KPX V Oslash -40
+KPX V Otilde -40
+KPX V a -70
+KPX V aacute -70
+KPX V abreve -70
+KPX V acircumflex -70
+KPX V adieresis -70
+KPX V agrave -70
+KPX V amacron -70
+KPX V aogonek -70
+KPX V aring -70
+KPX V atilde -70
+KPX V colon -40
+KPX V comma -125
+KPX V e -80
+KPX V eacute -80
+KPX V ecaron -80
+KPX V ecircumflex -80
+KPX V edieresis -80
+KPX V edotaccent -80
+KPX V egrave -80
+KPX V emacron -80
+KPX V eogonek -80
+KPX V hyphen -80
+KPX V o -80
+KPX V oacute -80
+KPX V ocircumflex -80
+KPX V odieresis -80
+KPX V ograve -80
+KPX V ohungarumlaut -80
+KPX V omacron -80
+KPX V oslash -80
+KPX V otilde -80
+KPX V period -125
+KPX V semicolon -40
+KPX V u -70
+KPX V uacute -70
+KPX V ucircumflex -70
+KPX V udieresis -70
+KPX V ugrave -70
+KPX V uhungarumlaut -70
+KPX V umacron -70
+KPX V uogonek -70
+KPX V uring -70
+KPX W A -50
+KPX W Aacute -50
+KPX W Abreve -50
+KPX W Acircumflex -50
+KPX W Adieresis -50
+KPX W Agrave -50
+KPX W Amacron -50
+KPX W Aogonek -50
+KPX W Aring -50
+KPX W Atilde -50
+KPX W O -20
+KPX W Oacute -20
+KPX W Ocircumflex -20
+KPX W Odieresis -20
+KPX W Ograve -20
+KPX W Ohungarumlaut -20
+KPX W Omacron -20
+KPX W Oslash -20
+KPX W Otilde -20
+KPX W a -40
+KPX W aacute -40
+KPX W abreve -40
+KPX W acircumflex -40
+KPX W adieresis -40
+KPX W agrave -40
+KPX W amacron -40
+KPX W aogonek -40
+KPX W aring -40
+KPX W atilde -40
+KPX W comma -80
+KPX W e -30
+KPX W eacute -30
+KPX W ecaron -30
+KPX W ecircumflex -30
+KPX W edieresis -30
+KPX W edotaccent -30
+KPX W egrave -30
+KPX W emacron -30
+KPX W eogonek -30
+KPX W hyphen -40
+KPX W o -30
+KPX W oacute -30
+KPX W ocircumflex -30
+KPX W odieresis -30
+KPX W ograve -30
+KPX W ohungarumlaut -30
+KPX W omacron -30
+KPX W oslash -30
+KPX W otilde -30
+KPX W period -80
+KPX W u -30
+KPX W uacute -30
+KPX W ucircumflex -30
+KPX W udieresis -30
+KPX W ugrave -30
+KPX W uhungarumlaut -30
+KPX W umacron -30
+KPX W uogonek -30
+KPX W uring -30
+KPX W y -20
+KPX W yacute -20
+KPX W ydieresis -20
+KPX Y A -110
+KPX Y Aacute -110
+KPX Y Abreve -110
+KPX Y Acircumflex -110
+KPX Y Adieresis -110
+KPX Y Agrave -110
+KPX Y Amacron -110
+KPX Y Aogonek -110
+KPX Y Aring -110
+KPX Y Atilde -110
+KPX Y O -85
+KPX Y Oacute -85
+KPX Y Ocircumflex -85
+KPX Y Odieresis -85
+KPX Y Ograve -85
+KPX Y Ohungarumlaut -85
+KPX Y Omacron -85
+KPX Y Oslash -85
+KPX Y Otilde -85
+KPX Y a -140
+KPX Y aacute -140
+KPX Y abreve -70
+KPX Y acircumflex -140
+KPX Y adieresis -140
+KPX Y agrave -140
+KPX Y amacron -70
+KPX Y aogonek -140
+KPX Y aring -140
+KPX Y atilde -140
+KPX Y colon -60
+KPX Y comma -140
+KPX Y e -140
+KPX Y eacute -140
+KPX Y ecaron -140
+KPX Y ecircumflex -140
+KPX Y edieresis -140
+KPX Y edotaccent -140
+KPX Y egrave -140
+KPX Y emacron -70
+KPX Y eogonek -140
+KPX Y hyphen -140
+KPX Y i -20
+KPX Y iacute -20
+KPX Y iogonek -20
+KPX Y o -140
+KPX Y oacute -140
+KPX Y ocircumflex -140
+KPX Y odieresis -140
+KPX Y ograve -140
+KPX Y ohungarumlaut -140
+KPX Y omacron -140
+KPX Y oslash -140
+KPX Y otilde -140
+KPX Y period -140
+KPX Y semicolon -60
+KPX Y u -110
+KPX Y uacute -110
+KPX Y ucircumflex -110
+KPX Y udieresis -110
+KPX Y ugrave -110
+KPX Y uhungarumlaut -110
+KPX Y umacron -110
+KPX Y uogonek -110
+KPX Y uring -110
+KPX Yacute A -110
+KPX Yacute Aacute -110
+KPX Yacute Abreve -110
+KPX Yacute Acircumflex -110
+KPX Yacute Adieresis -110
+KPX Yacute Agrave -110
+KPX Yacute Amacron -110
+KPX Yacute Aogonek -110
+KPX Yacute Aring -110
+KPX Yacute Atilde -110
+KPX Yacute O -85
+KPX Yacute Oacute -85
+KPX Yacute Ocircumflex -85
+KPX Yacute Odieresis -85
+KPX Yacute Ograve -85
+KPX Yacute Ohungarumlaut -85
+KPX Yacute Omacron -85
+KPX Yacute Oslash -85
+KPX Yacute Otilde -85
+KPX Yacute a -140
+KPX Yacute aacute -140
+KPX Yacute abreve -70
+KPX Yacute acircumflex -140
+KPX Yacute adieresis -140
+KPX Yacute agrave -140
+KPX Yacute amacron -70
+KPX Yacute aogonek -140
+KPX Yacute aring -140
+KPX Yacute atilde -70
+KPX Yacute colon -60
+KPX Yacute comma -140
+KPX Yacute e -140
+KPX Yacute eacute -140
+KPX Yacute ecaron -140
+KPX Yacute ecircumflex -140
+KPX Yacute edieresis -140
+KPX Yacute edotaccent -140
+KPX Yacute egrave -140
+KPX Yacute emacron -70
+KPX Yacute eogonek -140
+KPX Yacute hyphen -140
+KPX Yacute i -20
+KPX Yacute iacute -20
+KPX Yacute iogonek -20
+KPX Yacute o -140
+KPX Yacute oacute -140
+KPX Yacute ocircumflex -140
+KPX Yacute odieresis -140
+KPX Yacute ograve -140
+KPX Yacute ohungarumlaut -140
+KPX Yacute omacron -70
+KPX Yacute oslash -140
+KPX Yacute otilde -140
+KPX Yacute period -140
+KPX Yacute semicolon -60
+KPX Yacute u -110
+KPX Yacute uacute -110
+KPX Yacute ucircumflex -110
+KPX Yacute udieresis -110
+KPX Yacute ugrave -110
+KPX Yacute uhungarumlaut -110
+KPX Yacute umacron -110
+KPX Yacute uogonek -110
+KPX Yacute uring -110
+KPX Ydieresis A -110
+KPX Ydieresis Aacute -110
+KPX Ydieresis Abreve -110
+KPX Ydieresis Acircumflex -110
+KPX Ydieresis Adieresis -110
+KPX Ydieresis Agrave -110
+KPX Ydieresis Amacron -110
+KPX Ydieresis Aogonek -110
+KPX Ydieresis Aring -110
+KPX Ydieresis Atilde -110
+KPX Ydieresis O -85
+KPX Ydieresis Oacute -85
+KPX Ydieresis Ocircumflex -85
+KPX Ydieresis Odieresis -85
+KPX Ydieresis Ograve -85
+KPX Ydieresis Ohungarumlaut -85
+KPX Ydieresis Omacron -85
+KPX Ydieresis Oslash -85
+KPX Ydieresis Otilde -85
+KPX Ydieresis a -140
+KPX Ydieresis aacute -140
+KPX Ydieresis abreve -70
+KPX Ydieresis acircumflex -140
+KPX Ydieresis adieresis -140
+KPX Ydieresis agrave -140
+KPX Ydieresis amacron -70
+KPX Ydieresis aogonek -140
+KPX Ydieresis aring -140
+KPX Ydieresis atilde -70
+KPX Ydieresis colon -60
+KPX Ydieresis comma -140
+KPX Ydieresis e -140
+KPX Ydieresis eacute -140
+KPX Ydieresis ecaron -140
+KPX Ydieresis ecircumflex -140
+KPX Ydieresis edieresis -140
+KPX Ydieresis edotaccent -140
+KPX Ydieresis egrave -140
+KPX Ydieresis emacron -70
+KPX Ydieresis eogonek -140
+KPX Ydieresis hyphen -140
+KPX Ydieresis i -20
+KPX Ydieresis iacute -20
+KPX Ydieresis iogonek -20
+KPX Ydieresis o -140
+KPX Ydieresis oacute -140
+KPX Ydieresis ocircumflex -140
+KPX Ydieresis odieresis -140
+KPX Ydieresis ograve -140
+KPX Ydieresis ohungarumlaut -140
+KPX Ydieresis omacron -140
+KPX Ydieresis oslash -140
+KPX Ydieresis otilde -140
+KPX Ydieresis period -140
+KPX Ydieresis semicolon -60
+KPX Ydieresis u -110
+KPX Ydieresis uacute -110
+KPX Ydieresis ucircumflex -110
+KPX Ydieresis udieresis -110
+KPX Ydieresis ugrave -110
+KPX Ydieresis uhungarumlaut -110
+KPX Ydieresis umacron -110
+KPX Ydieresis uogonek -110
+KPX Ydieresis uring -110
+KPX a v -20
+KPX a w -20
+KPX a y -30
+KPX a yacute -30
+KPX a ydieresis -30
+KPX aacute v -20
+KPX aacute w -20
+KPX aacute y -30
+KPX aacute yacute -30
+KPX aacute ydieresis -30
+KPX abreve v -20
+KPX abreve w -20
+KPX abreve y -30
+KPX abreve yacute -30
+KPX abreve ydieresis -30
+KPX acircumflex v -20
+KPX acircumflex w -20
+KPX acircumflex y -30
+KPX acircumflex yacute -30
+KPX acircumflex ydieresis -30
+KPX adieresis v -20
+KPX adieresis w -20
+KPX adieresis y -30
+KPX adieresis yacute -30
+KPX adieresis ydieresis -30
+KPX agrave v -20
+KPX agrave w -20
+KPX agrave y -30
+KPX agrave yacute -30
+KPX agrave ydieresis -30
+KPX amacron v -20
+KPX amacron w -20
+KPX amacron y -30
+KPX amacron yacute -30
+KPX amacron ydieresis -30
+KPX aogonek v -20
+KPX aogonek w -20
+KPX aogonek y -30
+KPX aogonek yacute -30
+KPX aogonek ydieresis -30
+KPX aring v -20
+KPX aring w -20
+KPX aring y -30
+KPX aring yacute -30
+KPX aring ydieresis -30
+KPX atilde v -20
+KPX atilde w -20
+KPX atilde y -30
+KPX atilde yacute -30
+KPX atilde ydieresis -30
+KPX b b -10
+KPX b comma -40
+KPX b l -20
+KPX b lacute -20
+KPX b lcommaaccent -20
+KPX b lslash -20
+KPX b period -40
+KPX b u -20
+KPX b uacute -20
+KPX b ucircumflex -20
+KPX b udieresis -20
+KPX b ugrave -20
+KPX b uhungarumlaut -20
+KPX b umacron -20
+KPX b uogonek -20
+KPX b uring -20
+KPX b v -20
+KPX b y -20
+KPX b yacute -20
+KPX b ydieresis -20
+KPX c comma -15
+KPX c k -20
+KPX c kcommaaccent -20
+KPX cacute comma -15
+KPX cacute k -20
+KPX cacute kcommaaccent -20
+KPX ccaron comma -15
+KPX ccaron k -20
+KPX ccaron kcommaaccent -20
+KPX ccedilla comma -15
+KPX ccedilla k -20
+KPX ccedilla kcommaaccent -20
+KPX colon space -50
+KPX comma quotedblright -100
+KPX comma quoteright -100
+KPX e comma -15
+KPX e period -15
+KPX e v -30
+KPX e w -20
+KPX e x -30
+KPX e y -20
+KPX e yacute -20
+KPX e ydieresis -20
+KPX eacute comma -15
+KPX eacute period -15
+KPX eacute v -30
+KPX eacute w -20
+KPX eacute x -30
+KPX eacute y -20
+KPX eacute yacute -20
+KPX eacute ydieresis -20
+KPX ecaron comma -15
+KPX ecaron period -15
+KPX ecaron v -30
+KPX ecaron w -20
+KPX ecaron x -30
+KPX ecaron y -20
+KPX ecaron yacute -20
+KPX ecaron ydieresis -20
+KPX ecircumflex comma -15
+KPX ecircumflex period -15
+KPX ecircumflex v -30
+KPX ecircumflex w -20
+KPX ecircumflex x -30
+KPX ecircumflex y -20
+KPX ecircumflex yacute -20
+KPX ecircumflex ydieresis -20
+KPX edieresis comma -15
+KPX edieresis period -15
+KPX edieresis v -30
+KPX edieresis w -20
+KPX edieresis x -30
+KPX edieresis y -20
+KPX edieresis yacute -20
+KPX edieresis ydieresis -20
+KPX edotaccent comma -15
+KPX edotaccent period -15
+KPX edotaccent v -30
+KPX edotaccent w -20
+KPX edotaccent x -30
+KPX edotaccent y -20
+KPX edotaccent yacute -20
+KPX edotaccent ydieresis -20
+KPX egrave comma -15
+KPX egrave period -15
+KPX egrave v -30
+KPX egrave w -20
+KPX egrave x -30
+KPX egrave y -20
+KPX egrave yacute -20
+KPX egrave ydieresis -20
+KPX emacron comma -15
+KPX emacron period -15
+KPX emacron v -30
+KPX emacron w -20
+KPX emacron x -30
+KPX emacron y -20
+KPX emacron yacute -20
+KPX emacron ydieresis -20
+KPX eogonek comma -15
+KPX eogonek period -15
+KPX eogonek v -30
+KPX eogonek w -20
+KPX eogonek x -30
+KPX eogonek y -20
+KPX eogonek yacute -20
+KPX eogonek ydieresis -20
+KPX f a -30
+KPX f aacute -30
+KPX f abreve -30
+KPX f acircumflex -30
+KPX f adieresis -30
+KPX f agrave -30
+KPX f amacron -30
+KPX f aogonek -30
+KPX f aring -30
+KPX f atilde -30
+KPX f comma -30
+KPX f dotlessi -28
+KPX f e -30
+KPX f eacute -30
+KPX f ecaron -30
+KPX f ecircumflex -30
+KPX f edieresis -30
+KPX f edotaccent -30
+KPX f egrave -30
+KPX f emacron -30
+KPX f eogonek -30
+KPX f o -30
+KPX f oacute -30
+KPX f ocircumflex -30
+KPX f odieresis -30
+KPX f ograve -30
+KPX f ohungarumlaut -30
+KPX f omacron -30
+KPX f oslash -30
+KPX f otilde -30
+KPX f period -30
+KPX f quotedblright 60
+KPX f quoteright 50
+KPX g r -10
+KPX g racute -10
+KPX g rcaron -10
+KPX g rcommaaccent -10
+KPX gbreve r -10
+KPX gbreve racute -10
+KPX gbreve rcaron -10
+KPX gbreve rcommaaccent -10
+KPX gcommaaccent r -10
+KPX gcommaaccent racute -10
+KPX gcommaaccent rcaron -10
+KPX gcommaaccent rcommaaccent -10
+KPX h y -30
+KPX h yacute -30
+KPX h ydieresis -30
+KPX k e -20
+KPX k eacute -20
+KPX k ecaron -20
+KPX k ecircumflex -20
+KPX k edieresis -20
+KPX k edotaccent -20
+KPX k egrave -20
+KPX k emacron -20
+KPX k eogonek -20
+KPX k o -20
+KPX k oacute -20
+KPX k ocircumflex -20
+KPX k odieresis -20
+KPX k ograve -20
+KPX k ohungarumlaut -20
+KPX k omacron -20
+KPX k oslash -20
+KPX k otilde -20
+KPX kcommaaccent e -20
+KPX kcommaaccent eacute -20
+KPX kcommaaccent ecaron -20
+KPX kcommaaccent ecircumflex -20
+KPX kcommaaccent edieresis -20
+KPX kcommaaccent edotaccent -20
+KPX kcommaaccent egrave -20
+KPX kcommaaccent emacron -20
+KPX kcommaaccent eogonek -20
+KPX kcommaaccent o -20
+KPX kcommaaccent oacute -20
+KPX kcommaaccent ocircumflex -20
+KPX kcommaaccent odieresis -20
+KPX kcommaaccent ograve -20
+KPX kcommaaccent ohungarumlaut -20
+KPX kcommaaccent omacron -20
+KPX kcommaaccent oslash -20
+KPX kcommaaccent otilde -20
+KPX m u -10
+KPX m uacute -10
+KPX m ucircumflex -10
+KPX m udieresis -10
+KPX m ugrave -10
+KPX m uhungarumlaut -10
+KPX m umacron -10
+KPX m uogonek -10
+KPX m uring -10
+KPX m y -15
+KPX m yacute -15
+KPX m ydieresis -15
+KPX n u -10
+KPX n uacute -10
+KPX n ucircumflex -10
+KPX n udieresis -10
+KPX n ugrave -10
+KPX n uhungarumlaut -10
+KPX n umacron -10
+KPX n uogonek -10
+KPX n uring -10
+KPX n v -20
+KPX n y -15
+KPX n yacute -15
+KPX n ydieresis -15
+KPX nacute u -10
+KPX nacute uacute -10
+KPX nacute ucircumflex -10
+KPX nacute udieresis -10
+KPX nacute ugrave -10
+KPX nacute uhungarumlaut -10
+KPX nacute umacron -10
+KPX nacute uogonek -10
+KPX nacute uring -10
+KPX nacute v -20
+KPX nacute y -15
+KPX nacute yacute -15
+KPX nacute ydieresis -15
+KPX ncaron u -10
+KPX ncaron uacute -10
+KPX ncaron ucircumflex -10
+KPX ncaron udieresis -10
+KPX ncaron ugrave -10
+KPX ncaron uhungarumlaut -10
+KPX ncaron umacron -10
+KPX ncaron uogonek -10
+KPX ncaron uring -10
+KPX ncaron v -20
+KPX ncaron y -15
+KPX ncaron yacute -15
+KPX ncaron ydieresis -15
+KPX ncommaaccent u -10
+KPX ncommaaccent uacute -10
+KPX ncommaaccent ucircumflex -10
+KPX ncommaaccent udieresis -10
+KPX ncommaaccent ugrave -10
+KPX ncommaaccent uhungarumlaut -10
+KPX ncommaaccent umacron -10
+KPX ncommaaccent uogonek -10
+KPX ncommaaccent uring -10
+KPX ncommaaccent v -20
+KPX ncommaaccent y -15
+KPX ncommaaccent yacute -15
+KPX ncommaaccent ydieresis -15
+KPX ntilde u -10
+KPX ntilde uacute -10
+KPX ntilde ucircumflex -10
+KPX ntilde udieresis -10
+KPX ntilde ugrave -10
+KPX ntilde uhungarumlaut -10
+KPX ntilde umacron -10
+KPX ntilde uogonek -10
+KPX ntilde uring -10
+KPX ntilde v -20
+KPX ntilde y -15
+KPX ntilde yacute -15
+KPX ntilde ydieresis -15
+KPX o comma -40
+KPX o period -40
+KPX o v -15
+KPX o w -15
+KPX o x -30
+KPX o y -30
+KPX o yacute -30
+KPX o ydieresis -30
+KPX oacute comma -40
+KPX oacute period -40
+KPX oacute v -15
+KPX oacute w -15
+KPX oacute x -30
+KPX oacute y -30
+KPX oacute yacute -30
+KPX oacute ydieresis -30
+KPX ocircumflex comma -40
+KPX ocircumflex period -40
+KPX ocircumflex v -15
+KPX ocircumflex w -15
+KPX ocircumflex x -30
+KPX ocircumflex y -30
+KPX ocircumflex yacute -30
+KPX ocircumflex ydieresis -30
+KPX odieresis comma -40
+KPX odieresis period -40
+KPX odieresis v -15
+KPX odieresis w -15
+KPX odieresis x -30
+KPX odieresis y -30
+KPX odieresis yacute -30
+KPX odieresis ydieresis -30
+KPX ograve comma -40
+KPX ograve period -40
+KPX ograve v -15
+KPX ograve w -15
+KPX ograve x -30
+KPX ograve y -30
+KPX ograve yacute -30
+KPX ograve ydieresis -30
+KPX ohungarumlaut comma -40
+KPX ohungarumlaut period -40
+KPX ohungarumlaut v -15
+KPX ohungarumlaut w -15
+KPX ohungarumlaut x -30
+KPX ohungarumlaut y -30
+KPX ohungarumlaut yacute -30
+KPX ohungarumlaut ydieresis -30
+KPX omacron comma -40
+KPX omacron period -40
+KPX omacron v -15
+KPX omacron w -15
+KPX omacron x -30
+KPX omacron y -30
+KPX omacron yacute -30
+KPX omacron ydieresis -30
+KPX oslash a -55
+KPX oslash aacute -55
+KPX oslash abreve -55
+KPX oslash acircumflex -55
+KPX oslash adieresis -55
+KPX oslash agrave -55
+KPX oslash amacron -55
+KPX oslash aogonek -55
+KPX oslash aring -55
+KPX oslash atilde -55
+KPX oslash b -55
+KPX oslash c -55
+KPX oslash cacute -55
+KPX oslash ccaron -55
+KPX oslash ccedilla -55
+KPX oslash comma -95
+KPX oslash d -55
+KPX oslash dcroat -55
+KPX oslash e -55
+KPX oslash eacute -55
+KPX oslash ecaron -55
+KPX oslash ecircumflex -55
+KPX oslash edieresis -55
+KPX oslash edotaccent -55
+KPX oslash egrave -55
+KPX oslash emacron -55
+KPX oslash eogonek -55
+KPX oslash f -55
+KPX oslash g -55
+KPX oslash gbreve -55
+KPX oslash gcommaaccent -55
+KPX oslash h -55
+KPX oslash i -55
+KPX oslash iacute -55
+KPX oslash icircumflex -55
+KPX oslash idieresis -55
+KPX oslash igrave -55
+KPX oslash imacron -55
+KPX oslash iogonek -55
+KPX oslash j -55
+KPX oslash k -55
+KPX oslash kcommaaccent -55
+KPX oslash l -55
+KPX oslash lacute -55
+KPX oslash lcommaaccent -55
+KPX oslash lslash -55
+KPX oslash m -55
+KPX oslash n -55
+KPX oslash nacute -55
+KPX oslash ncaron -55
+KPX oslash ncommaaccent -55
+KPX oslash ntilde -55
+KPX oslash o -55
+KPX oslash oacute -55
+KPX oslash ocircumflex -55
+KPX oslash odieresis -55
+KPX oslash ograve -55
+KPX oslash ohungarumlaut -55
+KPX oslash omacron -55
+KPX oslash oslash -55
+KPX oslash otilde -55
+KPX oslash p -55
+KPX oslash period -95
+KPX oslash q -55
+KPX oslash r -55
+KPX oslash racute -55
+KPX oslash rcaron -55
+KPX oslash rcommaaccent -55
+KPX oslash s -55
+KPX oslash sacute -55
+KPX oslash scaron -55
+KPX oslash scedilla -55
+KPX oslash scommaaccent -55
+KPX oslash t -55
+KPX oslash tcommaaccent -55
+KPX oslash u -55
+KPX oslash uacute -55
+KPX oslash ucircumflex -55
+KPX oslash udieresis -55
+KPX oslash ugrave -55
+KPX oslash uhungarumlaut -55
+KPX oslash umacron -55
+KPX oslash uogonek -55
+KPX oslash uring -55
+KPX oslash v -70
+KPX oslash w -70
+KPX oslash x -85
+KPX oslash y -70
+KPX oslash yacute -70
+KPX oslash ydieresis -70
+KPX oslash z -55
+KPX oslash zacute -55
+KPX oslash zcaron -55
+KPX oslash zdotaccent -55
+KPX otilde comma -40
+KPX otilde period -40
+KPX otilde v -15
+KPX otilde w -15
+KPX otilde x -30
+KPX otilde y -30
+KPX otilde yacute -30
+KPX otilde ydieresis -30
+KPX p comma -35
+KPX p period -35
+KPX p y -30
+KPX p yacute -30
+KPX p ydieresis -30
+KPX period quotedblright -100
+KPX period quoteright -100
+KPX period space -60
+KPX quotedblright space -40
+KPX quoteleft quoteleft -57
+KPX quoteright d -50
+KPX quoteright dcroat -50
+KPX quoteright quoteright -57
+KPX quoteright r -50
+KPX quoteright racute -50
+KPX quoteright rcaron -50
+KPX quoteright rcommaaccent -50
+KPX quoteright s -50
+KPX quoteright sacute -50
+KPX quoteright scaron -50
+KPX quoteright scedilla -50
+KPX quoteright scommaaccent -50
+KPX quoteright space -70
+KPX r a -10
+KPX r aacute -10
+KPX r abreve -10
+KPX r acircumflex -10
+KPX r adieresis -10
+KPX r agrave -10
+KPX r amacron -10
+KPX r aogonek -10
+KPX r aring -10
+KPX r atilde -10
+KPX r colon 30
+KPX r comma -50
+KPX r i 15
+KPX r iacute 15
+KPX r icircumflex 15
+KPX r idieresis 15
+KPX r igrave 15
+KPX r imacron 15
+KPX r iogonek 15
+KPX r k 15
+KPX r kcommaaccent 15
+KPX r l 15
+KPX r lacute 15
+KPX r lcommaaccent 15
+KPX r lslash 15
+KPX r m 25
+KPX r n 25
+KPX r nacute 25
+KPX r ncaron 25
+KPX r ncommaaccent 25
+KPX r ntilde 25
+KPX r p 30
+KPX r period -50
+KPX r semicolon 30
+KPX r t 40
+KPX r tcommaaccent 40
+KPX r u 15
+KPX r uacute 15
+KPX r ucircumflex 15
+KPX r udieresis 15
+KPX r ugrave 15
+KPX r uhungarumlaut 15
+KPX r umacron 15
+KPX r uogonek 15
+KPX r uring 15
+KPX r v 30
+KPX r y 30
+KPX r yacute 30
+KPX r ydieresis 30
+KPX racute a -10
+KPX racute aacute -10
+KPX racute abreve -10
+KPX racute acircumflex -10
+KPX racute adieresis -10
+KPX racute agrave -10
+KPX racute amacron -10
+KPX racute aogonek -10
+KPX racute aring -10
+KPX racute atilde -10
+KPX racute colon 30
+KPX racute comma -50
+KPX racute i 15
+KPX racute iacute 15
+KPX racute icircumflex 15
+KPX racute idieresis 15
+KPX racute igrave 15
+KPX racute imacron 15
+KPX racute iogonek 15
+KPX racute k 15
+KPX racute kcommaaccent 15
+KPX racute l 15
+KPX racute lacute 15
+KPX racute lcommaaccent 15
+KPX racute lslash 15
+KPX racute m 25
+KPX racute n 25
+KPX racute nacute 25
+KPX racute ncaron 25
+KPX racute ncommaaccent 25
+KPX racute ntilde 25
+KPX racute p 30
+KPX racute period -50
+KPX racute semicolon 30
+KPX racute t 40
+KPX racute tcommaaccent 40
+KPX racute u 15
+KPX racute uacute 15
+KPX racute ucircumflex 15
+KPX racute udieresis 15
+KPX racute ugrave 15
+KPX racute uhungarumlaut 15
+KPX racute umacron 15
+KPX racute uogonek 15
+KPX racute uring 15
+KPX racute v 30
+KPX racute y 30
+KPX racute yacute 30
+KPX racute ydieresis 30
+KPX rcaron a -10
+KPX rcaron aacute -10
+KPX rcaron abreve -10
+KPX rcaron acircumflex -10
+KPX rcaron adieresis -10
+KPX rcaron agrave -10
+KPX rcaron amacron -10
+KPX rcaron aogonek -10
+KPX rcaron aring -10
+KPX rcaron atilde -10
+KPX rcaron colon 30
+KPX rcaron comma -50
+KPX rcaron i 15
+KPX rcaron iacute 15
+KPX rcaron icircumflex 15
+KPX rcaron idieresis 15
+KPX rcaron igrave 15
+KPX rcaron imacron 15
+KPX rcaron iogonek 15
+KPX rcaron k 15
+KPX rcaron kcommaaccent 15
+KPX rcaron l 15
+KPX rcaron lacute 15
+KPX rcaron lcommaaccent 15
+KPX rcaron lslash 15
+KPX rcaron m 25
+KPX rcaron n 25
+KPX rcaron nacute 25
+KPX rcaron ncaron 25
+KPX rcaron ncommaaccent 25
+KPX rcaron ntilde 25
+KPX rcaron p 30
+KPX rcaron period -50
+KPX rcaron semicolon 30
+KPX rcaron t 40
+KPX rcaron tcommaaccent 40
+KPX rcaron u 15
+KPX rcaron uacute 15
+KPX rcaron ucircumflex 15
+KPX rcaron udieresis 15
+KPX rcaron ugrave 15
+KPX rcaron uhungarumlaut 15
+KPX rcaron umacron 15
+KPX rcaron uogonek 15
+KPX rcaron uring 15
+KPX rcaron v 30
+KPX rcaron y 30
+KPX rcaron yacute 30
+KPX rcaron ydieresis 30
+KPX rcommaaccent a -10
+KPX rcommaaccent aacute -10
+KPX rcommaaccent abreve -10
+KPX rcommaaccent acircumflex -10
+KPX rcommaaccent adieresis -10
+KPX rcommaaccent agrave -10
+KPX rcommaaccent amacron -10
+KPX rcommaaccent aogonek -10
+KPX rcommaaccent aring -10
+KPX rcommaaccent atilde -10
+KPX rcommaaccent colon 30
+KPX rcommaaccent comma -50
+KPX rcommaaccent i 15
+KPX rcommaaccent iacute 15
+KPX rcommaaccent icircumflex 15
+KPX rcommaaccent idieresis 15
+KPX rcommaaccent igrave 15
+KPX rcommaaccent imacron 15
+KPX rcommaaccent iogonek 15
+KPX rcommaaccent k 15
+KPX rcommaaccent kcommaaccent 15
+KPX rcommaaccent l 15
+KPX rcommaaccent lacute 15
+KPX rcommaaccent lcommaaccent 15
+KPX rcommaaccent lslash 15
+KPX rcommaaccent m 25
+KPX rcommaaccent n 25
+KPX rcommaaccent nacute 25
+KPX rcommaaccent ncaron 25
+KPX rcommaaccent ncommaaccent 25
+KPX rcommaaccent ntilde 25
+KPX rcommaaccent p 30
+KPX rcommaaccent period -50
+KPX rcommaaccent semicolon 30
+KPX rcommaaccent t 40
+KPX rcommaaccent tcommaaccent 40
+KPX rcommaaccent u 15
+KPX rcommaaccent uacute 15
+KPX rcommaaccent ucircumflex 15
+KPX rcommaaccent udieresis 15
+KPX rcommaaccent ugrave 15
+KPX rcommaaccent uhungarumlaut 15
+KPX rcommaaccent umacron 15
+KPX rcommaaccent uogonek 15
+KPX rcommaaccent uring 15
+KPX rcommaaccent v 30
+KPX rcommaaccent y 30
+KPX rcommaaccent yacute 30
+KPX rcommaaccent ydieresis 30
+KPX s comma -15
+KPX s period -15
+KPX s w -30
+KPX sacute comma -15
+KPX sacute period -15
+KPX sacute w -30
+KPX scaron comma -15
+KPX scaron period -15
+KPX scaron w -30
+KPX scedilla comma -15
+KPX scedilla period -15
+KPX scedilla w -30
+KPX scommaaccent comma -15
+KPX scommaaccent period -15
+KPX scommaaccent w -30
+KPX semicolon space -50
+KPX space T -50
+KPX space Tcaron -50
+KPX space Tcommaaccent -50
+KPX space V -50
+KPX space W -40
+KPX space Y -90
+KPX space Yacute -90
+KPX space Ydieresis -90
+KPX space quotedblleft -30
+KPX space quoteleft -60
+KPX v a -25
+KPX v aacute -25
+KPX v abreve -25
+KPX v acircumflex -25
+KPX v adieresis -25
+KPX v agrave -25
+KPX v amacron -25
+KPX v aogonek -25
+KPX v aring -25
+KPX v atilde -25
+KPX v comma -80
+KPX v e -25
+KPX v eacute -25
+KPX v ecaron -25
+KPX v ecircumflex -25
+KPX v edieresis -25
+KPX v edotaccent -25
+KPX v egrave -25
+KPX v emacron -25
+KPX v eogonek -25
+KPX v o -25
+KPX v oacute -25
+KPX v ocircumflex -25
+KPX v odieresis -25
+KPX v ograve -25
+KPX v ohungarumlaut -25
+KPX v omacron -25
+KPX v oslash -25
+KPX v otilde -25
+KPX v period -80
+KPX w a -15
+KPX w aacute -15
+KPX w abreve -15
+KPX w acircumflex -15
+KPX w adieresis -15
+KPX w agrave -15
+KPX w amacron -15
+KPX w aogonek -15
+KPX w aring -15
+KPX w atilde -15
+KPX w comma -60
+KPX w e -10
+KPX w eacute -10
+KPX w ecaron -10
+KPX w ecircumflex -10
+KPX w edieresis -10
+KPX w edotaccent -10
+KPX w egrave -10
+KPX w emacron -10
+KPX w eogonek -10
+KPX w o -10
+KPX w oacute -10
+KPX w ocircumflex -10
+KPX w odieresis -10
+KPX w ograve -10
+KPX w ohungarumlaut -10
+KPX w omacron -10
+KPX w oslash -10
+KPX w otilde -10
+KPX w period -60
+KPX x e -30
+KPX x eacute -30
+KPX x ecaron -30
+KPX x ecircumflex -30
+KPX x edieresis -30
+KPX x edotaccent -30
+KPX x egrave -30
+KPX x emacron -30
+KPX x eogonek -30
+KPX y a -20
+KPX y aacute -20
+KPX y abreve -20
+KPX y acircumflex -20
+KPX y adieresis -20
+KPX y agrave -20
+KPX y amacron -20
+KPX y aogonek -20
+KPX y aring -20
+KPX y atilde -20
+KPX y comma -100
+KPX y e -20
+KPX y eacute -20
+KPX y ecaron -20
+KPX y ecircumflex -20
+KPX y edieresis -20
+KPX y edotaccent -20
+KPX y egrave -20
+KPX y emacron -20
+KPX y eogonek -20
+KPX y o -20
+KPX y oacute -20
+KPX y ocircumflex -20
+KPX y odieresis -20
+KPX y ograve -20
+KPX y ohungarumlaut -20
+KPX y omacron -20
+KPX y oslash -20
+KPX y otilde -20
+KPX y period -100
+KPX yacute a -20
+KPX yacute aacute -20
+KPX yacute abreve -20
+KPX yacute acircumflex -20
+KPX yacute adieresis -20
+KPX yacute agrave -20
+KPX yacute amacron -20
+KPX yacute aogonek -20
+KPX yacute aring -20
+KPX yacute atilde -20
+KPX yacute comma -100
+KPX yacute e -20
+KPX yacute eacute -20
+KPX yacute ecaron -20
+KPX yacute ecircumflex -20
+KPX yacute edieresis -20
+KPX yacute edotaccent -20
+KPX yacute egrave -20
+KPX yacute emacron -20
+KPX yacute eogonek -20
+KPX yacute o -20
+KPX yacute oacute -20
+KPX yacute ocircumflex -20
+KPX yacute odieresis -20
+KPX yacute ograve -20
+KPX yacute ohungarumlaut -20
+KPX yacute omacron -20
+KPX yacute oslash -20
+KPX yacute otilde -20
+KPX yacute period -100
+KPX ydieresis a -20
+KPX ydieresis aacute -20
+KPX ydieresis abreve -20
+KPX ydieresis acircumflex -20
+KPX ydieresis adieresis -20
+KPX ydieresis agrave -20
+KPX ydieresis amacron -20
+KPX ydieresis aogonek -20
+KPX ydieresis aring -20
+KPX ydieresis atilde -20
+KPX ydieresis comma -100
+KPX ydieresis e -20
+KPX ydieresis eacute -20
+KPX ydieresis ecaron -20
+KPX ydieresis ecircumflex -20
+KPX ydieresis edieresis -20
+KPX ydieresis edotaccent -20
+KPX ydieresis egrave -20
+KPX ydieresis emacron -20
+KPX ydieresis eogonek -20
+KPX ydieresis o -20
+KPX ydieresis oacute -20
+KPX ydieresis ocircumflex -20
+KPX ydieresis odieresis -20
+KPX ydieresis ograve -20
+KPX ydieresis ohungarumlaut -20
+KPX ydieresis omacron -20
+KPX ydieresis oslash -20
+KPX ydieresis otilde -20
+KPX ydieresis period -100
+KPX z e -15
+KPX z eacute -15
+KPX z ecaron -15
+KPX z ecircumflex -15
+KPX z edieresis -15
+KPX z edotaccent -15
+KPX z egrave -15
+KPX z emacron -15
+KPX z eogonek -15
+KPX z o -15
+KPX z oacute -15
+KPX z ocircumflex -15
+KPX z odieresis -15
+KPX z ograve -15
+KPX z ohungarumlaut -15
+KPX z omacron -15
+KPX z oslash -15
+KPX z otilde -15
+KPX zacute e -15
+KPX zacute eacute -15
+KPX zacute ecaron -15
+KPX zacute ecircumflex -15
+KPX zacute edieresis -15
+KPX zacute edotaccent -15
+KPX zacute egrave -15
+KPX zacute emacron -15
+KPX zacute eogonek -15
+KPX zacute o -15
+KPX zacute oacute -15
+KPX zacute ocircumflex -15
+KPX zacute odieresis -15
+KPX zacute ograve -15
+KPX zacute ohungarumlaut -15
+KPX zacute omacron -15
+KPX zacute oslash -15
+KPX zacute otilde -15
+KPX zcaron e -15
+KPX zcaron eacute -15
+KPX zcaron ecaron -15
+KPX zcaron ecircumflex -15
+KPX zcaron edieresis -15
+KPX zcaron edotaccent -15
+KPX zcaron egrave -15
+KPX zcaron emacron -15
+KPX zcaron eogonek -15
+KPX zcaron o -15
+KPX zcaron oacute -15
+KPX zcaron ocircumflex -15
+KPX zcaron odieresis -15
+KPX zcaron ograve -15
+KPX zcaron ohungarumlaut -15
+KPX zcaron omacron -15
+KPX zcaron oslash -15
+KPX zcaron otilde -15
+KPX zdotaccent e -15
+KPX zdotaccent eacute -15
+KPX zdotaccent ecaron -15
+KPX zdotaccent ecircumflex -15
+KPX zdotaccent edieresis -15
+KPX zdotaccent edotaccent -15
+KPX zdotaccent egrave -15
+KPX zdotaccent emacron -15
+KPX zdotaccent eogonek -15
+KPX zdotaccent o -15
+KPX zdotaccent oacute -15
+KPX zdotaccent ocircumflex -15
+KPX zdotaccent odieresis -15
+KPX zdotaccent ograve -15
+KPX zdotaccent ohungarumlaut -15
+KPX zdotaccent omacron -15
+KPX zdotaccent oslash -15
+KPX zdotaccent otilde -15
+EndKernPairs
+EndKernData
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Symbol.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Symbol.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Symbol.afm	(revision 2000)
@@ -0,0 +1,213 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Thu May  1 15:12:25 1997
+Comment UniqueID 43064
+Comment VMusage 30820 39997
+FontName Symbol
+FullName Symbol
+FamilyName Symbol
+Weight Medium
+ItalicAngle 0
+IsFixedPitch false
+CharacterSet Special
+FontBBox -180 -293 1090 1010 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.008
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved.
+EncodingScheme FontSpecific
+StdHW 92
+StdVW 85
+StartCharMetrics 190
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 128 -17 240 672 ;
+C 34 ; WX 713 ; N universal ; B 31 0 681 705 ;
+C 35 ; WX 500 ; N numbersign ; B 20 -16 481 673 ;
+C 36 ; WX 549 ; N existential ; B 25 0 478 707 ;
+C 37 ; WX 833 ; N percent ; B 63 -36 771 655 ;
+C 38 ; WX 778 ; N ampersand ; B 41 -18 750 661 ;
+C 39 ; WX 439 ; N suchthat ; B 48 -17 414 500 ;
+C 40 ; WX 333 ; N parenleft ; B 53 -191 300 673 ;
+C 41 ; WX 333 ; N parenright ; B 30 -191 277 673 ;
+C 42 ; WX 500 ; N asteriskmath ; B 65 134 427 551 ;
+C 43 ; WX 549 ; N plus ; B 10 0 539 533 ;
+C 44 ; WX 250 ; N comma ; B 56 -152 194 104 ;
+C 45 ; WX 549 ; N minus ; B 11 233 535 288 ;
+C 46 ; WX 250 ; N period ; B 69 -17 181 95 ;
+C 47 ; WX 278 ; N slash ; B 0 -18 254 646 ;
+C 48 ; WX 500 ; N zero ; B 24 -14 476 685 ;
+C 49 ; WX 500 ; N one ; B 117 0 390 673 ;
+C 50 ; WX 500 ; N two ; B 25 0 475 685 ;
+C 51 ; WX 500 ; N three ; B 43 -14 435 685 ;
+C 52 ; WX 500 ; N four ; B 15 0 469 685 ;
+C 53 ; WX 500 ; N five ; B 32 -14 445 690 ;
+C 54 ; WX 500 ; N six ; B 34 -14 468 685 ;
+C 55 ; WX 500 ; N seven ; B 24 -16 448 673 ;
+C 56 ; WX 500 ; N eight ; B 56 -14 445 685 ;
+C 57 ; WX 500 ; N nine ; B 30 -18 459 685 ;
+C 58 ; WX 278 ; N colon ; B 81 -17 193 460 ;
+C 59 ; WX 278 ; N semicolon ; B 83 -152 221 460 ;
+C 60 ; WX 549 ; N less ; B 26 0 523 522 ;
+C 61 ; WX 549 ; N equal ; B 11 141 537 390 ;
+C 62 ; WX 549 ; N greater ; B 26 0 523 522 ;
+C 63 ; WX 444 ; N question ; B 70 -17 412 686 ;
+C 64 ; WX 549 ; N congruent ; B 11 0 537 475 ;
+C 65 ; WX 722 ; N Alpha ; B 4 0 684 673 ;
+C 66 ; WX 667 ; N Beta ; B 29 0 592 673 ;
+C 67 ; WX 722 ; N Chi ; B -9 0 704 673 ;
+C 68 ; WX 612 ; N Delta ; B 6 0 608 688 ;
+C 69 ; WX 611 ; N Epsilon ; B 32 0 617 673 ;
+C 70 ; WX 763 ; N Phi ; B 26 0 741 673 ;
+C 71 ; WX 603 ; N Gamma ; B 24 0 609 673 ;
+C 72 ; WX 722 ; N Eta ; B 39 0 729 673 ;
+C 73 ; WX 333 ; N Iota ; B 32 0 316 673 ;
+C 74 ; WX 631 ; N theta1 ; B 18 -18 623 689 ;
+C 75 ; WX 722 ; N Kappa ; B 35 0 722 673 ;
+C 76 ; WX 686 ; N Lambda ; B 6 0 680 688 ;
+C 77 ; WX 889 ; N Mu ; B 28 0 887 673 ;
+C 78 ; WX 722 ; N Nu ; B 29 -8 720 673 ;
+C 79 ; WX 722 ; N Omicron ; B 41 -17 715 685 ;
+C 80 ; WX 768 ; N Pi ; B 25 0 745 673 ;
+C 81 ; WX 741 ; N Theta ; B 41 -17 715 685 ;
+C 82 ; WX 556 ; N Rho ; B 28 0 563 673 ;
+C 83 ; WX 592 ; N Sigma ; B 5 0 589 673 ;
+C 84 ; WX 611 ; N Tau ; B 33 0 607 673 ;
+C 85 ; WX 690 ; N Upsilon ; B -8 0 694 673 ;
+C 86 ; WX 439 ; N sigma1 ; B 40 -233 436 500 ;
+C 87 ; WX 768 ; N Omega ; B 34 0 736 688 ;
+C 88 ; WX 645 ; N Xi ; B 40 0 599 673 ;
+C 89 ; WX 795 ; N Psi ; B 15 0 781 684 ;
+C 90 ; WX 611 ; N Zeta ; B 44 0 636 673 ;
+C 91 ; WX 333 ; N bracketleft ; B 86 -155 299 674 ;
+C 92 ; WX 863 ; N therefore ; B 163 0 701 487 ;
+C 93 ; WX 333 ; N bracketright ; B 33 -155 246 674 ;
+C 94 ; WX 658 ; N perpendicular ; B 15 0 652 674 ;
+C 95 ; WX 500 ; N underscore ; B -2 -125 502 -75 ;
+C 96 ; WX 500 ; N radicalex ; B 480 881 1090 917 ;
+C 97 ; WX 631 ; N alpha ; B 41 -18 622 500 ;
+C 98 ; WX 549 ; N beta ; B 61 -223 515 741 ;
+C 99 ; WX 549 ; N chi ; B 12 -231 522 499 ;
+C 100 ; WX 494 ; N delta ; B 40 -19 481 740 ;
+C 101 ; WX 439 ; N epsilon ; B 22 -19 427 502 ;
+C 102 ; WX 521 ; N phi ; B 28 -224 492 673 ;
+C 103 ; WX 411 ; N gamma ; B 5 -225 484 499 ;
+C 104 ; WX 603 ; N eta ; B 0 -202 527 514 ;
+C 105 ; WX 329 ; N iota ; B 0 -17 301 503 ;
+C 106 ; WX 603 ; N phi1 ; B 36 -224 587 499 ;
+C 107 ; WX 549 ; N kappa ; B 33 0 558 501 ;
+C 108 ; WX 549 ; N lambda ; B 24 -17 548 739 ;
+C 109 ; WX 576 ; N mu ; B 33 -223 567 500 ;
+C 110 ; WX 521 ; N nu ; B -9 -16 475 507 ;
+C 111 ; WX 549 ; N omicron ; B 35 -19 501 499 ;
+C 112 ; WX 549 ; N pi ; B 10 -19 530 487 ;
+C 113 ; WX 521 ; N theta ; B 43 -17 485 690 ;
+C 114 ; WX 549 ; N rho ; B 50 -230 490 499 ;
+C 115 ; WX 603 ; N sigma ; B 30 -21 588 500 ;
+C 116 ; WX 439 ; N tau ; B 10 -19 418 500 ;
+C 117 ; WX 576 ; N upsilon ; B 7 -18 535 507 ;
+C 118 ; WX 713 ; N omega1 ; B 12 -18 671 583 ;
+C 119 ; WX 686 ; N omega ; B 42 -17 684 500 ;
+C 120 ; WX 493 ; N xi ; B 27 -224 469 766 ;
+C 121 ; WX 686 ; N psi ; B 12 -228 701 500 ;
+C 122 ; WX 494 ; N zeta ; B 60 -225 467 756 ;
+C 123 ; WX 480 ; N braceleft ; B 58 -183 397 673 ;
+C 124 ; WX 200 ; N bar ; B 65 -293 135 707 ;
+C 125 ; WX 480 ; N braceright ; B 79 -183 418 673 ;
+C 126 ; WX 549 ; N similar ; B 17 203 529 307 ;
+C 160 ; WX 750 ; N Euro ; B 20 -12 714 685 ;
+C 161 ; WX 620 ; N Upsilon1 ; B -2 0 610 685 ;
+C 162 ; WX 247 ; N minute ; B 27 459 228 735 ;
+C 163 ; WX 549 ; N lessequal ; B 29 0 526 639 ;
+C 164 ; WX 167 ; N fraction ; B -180 -12 340 677 ;
+C 165 ; WX 713 ; N infinity ; B 26 124 688 404 ;
+C 166 ; WX 500 ; N florin ; B 2 -193 494 686 ;
+C 167 ; WX 753 ; N club ; B 86 -26 660 533 ;
+C 168 ; WX 753 ; N diamond ; B 142 -36 600 550 ;
+C 169 ; WX 753 ; N heart ; B 117 -33 631 532 ;
+C 170 ; WX 753 ; N spade ; B 113 -36 629 548 ;
+C 171 ; WX 1042 ; N arrowboth ; B 24 -15 1024 511 ;
+C 172 ; WX 987 ; N arrowleft ; B 32 -15 942 511 ;
+C 173 ; WX 603 ; N arrowup ; B 45 0 571 910 ;
+C 174 ; WX 987 ; N arrowright ; B 49 -15 959 511 ;
+C 175 ; WX 603 ; N arrowdown ; B 45 -22 571 888 ;
+C 176 ; WX 400 ; N degree ; B 50 385 350 685 ;
+C 177 ; WX 549 ; N plusminus ; B 10 0 539 645 ;
+C 178 ; WX 411 ; N second ; B 20 459 413 737 ;
+C 179 ; WX 549 ; N greaterequal ; B 29 0 526 639 ;
+C 180 ; WX 549 ; N multiply ; B 17 8 533 524 ;
+C 181 ; WX 713 ; N proportional ; B 27 123 639 404 ;
+C 182 ; WX 494 ; N partialdiff ; B 26 -20 462 746 ;
+C 183 ; WX 460 ; N bullet ; B 50 113 410 473 ;
+C 184 ; WX 549 ; N divide ; B 10 71 536 456 ;
+C 185 ; WX 549 ; N notequal ; B 15 -25 540 549 ;
+C 186 ; WX 549 ; N equivalence ; B 14 82 538 443 ;
+C 187 ; WX 549 ; N approxequal ; B 14 135 527 394 ;
+C 188 ; WX 1000 ; N ellipsis ; B 111 -17 889 95 ;
+C 189 ; WX 603 ; N arrowvertex ; B 280 -120 336 1010 ;
+C 190 ; WX 1000 ; N arrowhorizex ; B -60 220 1050 276 ;
+C 191 ; WX 658 ; N carriagereturn ; B 15 -16 602 629 ;
+C 192 ; WX 823 ; N aleph ; B 175 -18 661 658 ;
+C 193 ; WX 686 ; N Ifraktur ; B 10 -53 578 740 ;
+C 194 ; WX 795 ; N Rfraktur ; B 26 -15 759 734 ;
+C 195 ; WX 987 ; N weierstrass ; B 159 -211 870 573 ;
+C 196 ; WX 768 ; N circlemultiply ; B 43 -17 733 673 ;
+C 197 ; WX 768 ; N circleplus ; B 43 -15 733 675 ;
+C 198 ; WX 823 ; N emptyset ; B 39 -24 781 719 ;
+C 199 ; WX 768 ; N intersection ; B 40 0 732 509 ;
+C 200 ; WX 768 ; N union ; B 40 -17 732 492 ;
+C 201 ; WX 713 ; N propersuperset ; B 20 0 673 470 ;
+C 202 ; WX 713 ; N reflexsuperset ; B 20 -125 673 470 ;
+C 203 ; WX 713 ; N notsubset ; B 36 -70 690 540 ;
+C 204 ; WX 713 ; N propersubset ; B 37 0 690 470 ;
+C 205 ; WX 713 ; N reflexsubset ; B 37 -125 690 470 ;
+C 206 ; WX 713 ; N element ; B 45 0 505 468 ;
+C 207 ; WX 713 ; N notelement ; B 45 -58 505 555 ;
+C 208 ; WX 768 ; N angle ; B 26 0 738 673 ;
+C 209 ; WX 713 ; N gradient ; B 36 -19 681 718 ;
+C 210 ; WX 790 ; N registerserif ; B 50 -17 740 673 ;
+C 211 ; WX 790 ; N copyrightserif ; B 51 -15 741 675 ;
+C 212 ; WX 890 ; N trademarkserif ; B 18 293 855 673 ;
+C 213 ; WX 823 ; N product ; B 25 -101 803 751 ;
+C 214 ; WX 549 ; N radical ; B 10 -38 515 917 ;
+C 215 ; WX 250 ; N dotmath ; B 69 210 169 310 ;
+C 216 ; WX 713 ; N logicalnot ; B 15 0 680 288 ;
+C 217 ; WX 603 ; N logicaland ; B 23 0 583 454 ;
+C 218 ; WX 603 ; N logicalor ; B 30 0 578 477 ;
+C 219 ; WX 1042 ; N arrowdblboth ; B 27 -20 1023 510 ;
+C 220 ; WX 987 ; N arrowdblleft ; B 30 -15 939 513 ;
+C 221 ; WX 603 ; N arrowdblup ; B 39 2 567 911 ;
+C 222 ; WX 987 ; N arrowdblright ; B 45 -20 954 508 ;
+C 223 ; WX 603 ; N arrowdbldown ; B 44 -19 572 890 ;
+C 224 ; WX 494 ; N lozenge ; B 18 0 466 745 ;
+C 225 ; WX 329 ; N angleleft ; B 25 -198 306 746 ;
+C 226 ; WX 790 ; N registersans ; B 50 -20 740 670 ;
+C 227 ; WX 790 ; N copyrightsans ; B 49 -15 739 675 ;
+C 228 ; WX 786 ; N trademarksans ; B 5 293 725 673 ;
+C 229 ; WX 713 ; N summation ; B 14 -108 695 752 ;
+C 230 ; WX 384 ; N parenlefttp ; B 24 -293 436 926 ;
+C 231 ; WX 384 ; N parenleftex ; B 24 -85 108 925 ;
+C 232 ; WX 384 ; N parenleftbt ; B 24 -293 436 926 ;
+C 233 ; WX 384 ; N bracketlefttp ; B 0 -80 349 926 ;
+C 234 ; WX 384 ; N bracketleftex ; B 0 -79 77 925 ;
+C 235 ; WX 384 ; N bracketleftbt ; B 0 -80 349 926 ;
+C 236 ; WX 494 ; N bracelefttp ; B 209 -85 445 925 ;
+C 237 ; WX 494 ; N braceleftmid ; B 20 -85 284 935 ;
+C 238 ; WX 494 ; N braceleftbt ; B 209 -75 445 935 ;
+C 239 ; WX 494 ; N braceex ; B 209 -85 284 935 ;
+C 241 ; WX 329 ; N angleright ; B 21 -198 302 746 ;
+C 242 ; WX 274 ; N integral ; B 2 -107 291 916 ;
+C 243 ; WX 686 ; N integraltp ; B 308 -88 675 920 ;
+C 244 ; WX 686 ; N integralex ; B 308 -88 378 975 ;
+C 245 ; WX 686 ; N integralbt ; B 11 -87 378 921 ;
+C 246 ; WX 384 ; N parenrighttp ; B 54 -293 466 926 ;
+C 247 ; WX 384 ; N parenrightex ; B 382 -85 466 925 ;
+C 248 ; WX 384 ; N parenrightbt ; B 54 -293 466 926 ;
+C 249 ; WX 384 ; N bracketrighttp ; B 22 -80 371 926 ;
+C 250 ; WX 384 ; N bracketrightex ; B 294 -79 371 925 ;
+C 251 ; WX 384 ; N bracketrightbt ; B 22 -80 371 926 ;
+C 252 ; WX 494 ; N bracerighttp ; B 48 -85 284 925 ;
+C 253 ; WX 494 ; N bracerightmid ; B 209 -85 473 935 ;
+C 254 ; WX 494 ; N bracerightbt ; B 48 -75 284 935 ;
+C -1 ; WX 790 ; N apple ; B 56 -3 733 808 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/php_Times-Bold.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/php_Times-Bold.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/php_Times-Bold.afm	(revision 2000)
@@ -0,0 +1,8690 @@
+$this->fonts[$font]=array (
+  'FontName' => 'Times-Bold',
+  'FullName' => 'Times Bold',
+  'FamilyName' => 'Times',
+  'Weight' => 'Bold',
+  'ItalicAngle' => '0',
+  'IsFixedPitch' => 'false',
+  'CharacterSet' => 'ExtendedRoman',
+  'FontBBox' => 
+  array (
+    0 => '-168',
+    1 => '-218',
+    2 => '1000',
+    3 => '935',
+  ),
+  'UnderlinePosition' => '-100',
+  'UnderlineThickness' => '50',
+  'Version' => '002.000',
+  'EncodingScheme' => 'AdobeStandardEncoding',
+  'CapHeight' => '676',
+  'XHeight' => '461',
+  'Ascender' => '683',
+  'Descender' => '-217',
+  'StdHW' => '44',
+  'StdVW' => '139',
+  'StartCharMetrics' => '315',
+  'C' => 
+  array (
+    32 => 
+    array (
+      'C' => '32',
+      'WX' => '250',
+      'N' => 'space',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '0',
+        2 => '0',
+        3 => '0',
+      ),
+    ),
+    'space' => 
+    array (
+      'C' => '32',
+      'WX' => '250',
+      'N' => 'space',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '0',
+        2 => '0',
+        3 => '0',
+      ),
+    ),
+    33 => 
+    array (
+      'C' => '33',
+      'WX' => '333',
+      'N' => 'exclam',
+      'B' => 
+      array (
+        0 => '81',
+        1 => '-13',
+        2 => '251',
+        3 => '691',
+      ),
+    ),
+    'exclam' => 
+    array (
+      'C' => '33',
+      'WX' => '333',
+      'N' => 'exclam',
+      'B' => 
+      array (
+        0 => '81',
+        1 => '-13',
+        2 => '251',
+        3 => '691',
+      ),
+    ),
+    34 => 
+    array (
+      'C' => '34',
+      'WX' => '555',
+      'N' => 'quotedbl',
+      'B' => 
+      array (
+        0 => '83',
+        1 => '404',
+        2 => '472',
+        3 => '691',
+      ),
+    ),
+    'quotedbl' => 
+    array (
+      'C' => '34',
+      'WX' => '555',
+      'N' => 'quotedbl',
+      'B' => 
+      array (
+        0 => '83',
+        1 => '404',
+        2 => '472',
+        3 => '691',
+      ),
+    ),
+    35 => 
+    array (
+      'C' => '35',
+      'WX' => '500',
+      'N' => 'numbersign',
+      'B' => 
+      array (
+        0 => '4',
+        1 => '0',
+        2 => '496',
+        3 => '700',
+      ),
+    ),
+    'numbersign' => 
+    array (
+      'C' => '35',
+      'WX' => '500',
+      'N' => 'numbersign',
+      'B' => 
+      array (
+        0 => '4',
+        1 => '0',
+        2 => '496',
+        3 => '700',
+      ),
+    ),
+    36 => 
+    array (
+      'C' => '36',
+      'WX' => '500',
+      'N' => 'dollar',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-99',
+        2 => '472',
+        3 => '750',
+      ),
+    ),
+    'dollar' => 
+    array (
+      'C' => '36',
+      'WX' => '500',
+      'N' => 'dollar',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-99',
+        2 => '472',
+        3 => '750',
+      ),
+    ),
+    37 => 
+    array (
+      'C' => '37',
+      'WX' => '1000',
+      'N' => 'percent',
+      'B' => 
+      array (
+        0 => '124',
+        1 => '-14',
+        2 => '877',
+        3 => '692',
+      ),
+    ),
+    'percent' => 
+    array (
+      'C' => '37',
+      'WX' => '1000',
+      'N' => 'percent',
+      'B' => 
+      array (
+        0 => '124',
+        1 => '-14',
+        2 => '877',
+        3 => '692',
+      ),
+    ),
+    38 => 
+    array (
+      'C' => '38',
+      'WX' => '833',
+      'N' => 'ampersand',
+      'B' => 
+      array (
+        0 => '62',
+        1 => '-16',
+        2 => '787',
+        3 => '691',
+      ),
+    ),
+    'ampersand' => 
+    array (
+      'C' => '38',
+      'WX' => '833',
+      'N' => 'ampersand',
+      'B' => 
+      array (
+        0 => '62',
+        1 => '-16',
+        2 => '787',
+        3 => '691',
+      ),
+    ),
+    39 => 
+    array (
+      'C' => '39',
+      'WX' => '333',
+      'N' => 'quoteright',
+      'B' => 
+      array (
+        0 => '79',
+        1 => '356',
+        2 => '263',
+        3 => '691',
+      ),
+    ),
+    'quoteright' => 
+    array (
+      'C' => '39',
+      'WX' => '333',
+      'N' => 'quoteright',
+      'B' => 
+      array (
+        0 => '79',
+        1 => '356',
+        2 => '263',
+        3 => '691',
+      ),
+    ),
+    40 => 
+    array (
+      'C' => '40',
+      'WX' => '333',
+      'N' => 'parenleft',
+      'B' => 
+      array (
+        0 => '46',
+        1 => '-168',
+        2 => '306',
+        3 => '694',
+      ),
+    ),
+    'parenleft' => 
+    array (
+      'C' => '40',
+      'WX' => '333',
+      'N' => 'parenleft',
+      'B' => 
+      array (
+        0 => '46',
+        1 => '-168',
+        2 => '306',
+        3 => '694',
+      ),
+    ),
+    41 => 
+    array (
+      'C' => '41',
+      'WX' => '333',
+      'N' => 'parenright',
+      'B' => 
+      array (
+        0 => '27',
+        1 => '-168',
+        2 => '287',
+        3 => '694',
+      ),
+    ),
+    'parenright' => 
+    array (
+      'C' => '41',
+      'WX' => '333',
+      'N' => 'parenright',
+      'B' => 
+      array (
+        0 => '27',
+        1 => '-168',
+        2 => '287',
+        3 => '694',
+      ),
+    ),
+    42 => 
+    array (
+      'C' => '42',
+      'WX' => '500',
+      'N' => 'asterisk',
+      'B' => 
+      array (
+        0 => '56',
+        1 => '255',
+        2 => '447',
+        3 => '691',
+      ),
+    ),
+    'asterisk' => 
+    array (
+      'C' => '42',
+      'WX' => '500',
+      'N' => 'asterisk',
+      'B' => 
+      array (
+        0 => '56',
+        1 => '255',
+        2 => '447',
+        3 => '691',
+      ),
+    ),
+    43 => 
+    array (
+      'C' => '43',
+      'WX' => '570',
+      'N' => 'plus',
+      'B' => 
+      array (
+        0 => '33',
+        1 => '0',
+        2 => '537',
+        3 => '506',
+      ),
+    ),
+    'plus' => 
+    array (
+      'C' => '43',
+      'WX' => '570',
+      'N' => 'plus',
+      'B' => 
+      array (
+        0 => '33',
+        1 => '0',
+        2 => '537',
+        3 => '506',
+      ),
+    ),
+    44 => 
+    array (
+      'C' => '44',
+      'WX' => '250',
+      'N' => 'comma',
+      'B' => 
+      array (
+        0 => '39',
+        1 => '-180',
+        2 => '223',
+        3 => '155',
+      ),
+    ),
+    'comma' => 
+    array (
+      'C' => '44',
+      'WX' => '250',
+      'N' => 'comma',
+      'B' => 
+      array (
+        0 => '39',
+        1 => '-180',
+        2 => '223',
+        3 => '155',
+      ),
+    ),
+    45 => 
+    array (
+      'C' => '45',
+      'WX' => '333',
+      'N' => 'hyphen',
+      'B' => 
+      array (
+        0 => '44',
+        1 => '171',
+        2 => '287',
+        3 => '287',
+      ),
+    ),
+    'hyphen' => 
+    array (
+      'C' => '45',
+      'WX' => '333',
+      'N' => 'hyphen',
+      'B' => 
+      array (
+        0 => '44',
+        1 => '171',
+        2 => '287',
+        3 => '287',
+      ),
+    ),
+    46 => 
+    array (
+      'C' => '46',
+      'WX' => '250',
+      'N' => 'period',
+      'B' => 
+      array (
+        0 => '41',
+        1 => '-13',
+        2 => '210',
+        3 => '156',
+      ),
+    ),
+    'period' => 
+    array (
+      'C' => '46',
+      'WX' => '250',
+      'N' => 'period',
+      'B' => 
+      array (
+        0 => '41',
+        1 => '-13',
+        2 => '210',
+        3 => '156',
+      ),
+    ),
+    47 => 
+    array (
+      'C' => '47',
+      'WX' => '278',
+      'N' => 'slash',
+      'B' => 
+      array (
+        0 => '-24',
+        1 => '-19',
+        2 => '302',
+        3 => '691',
+      ),
+    ),
+    'slash' => 
+    array (
+      'C' => '47',
+      'WX' => '278',
+      'N' => 'slash',
+      'B' => 
+      array (
+        0 => '-24',
+        1 => '-19',
+        2 => '302',
+        3 => '691',
+      ),
+    ),
+    48 => 
+    array (
+      'C' => '48',
+      'WX' => '500',
+      'N' => 'zero',
+      'B' => 
+      array (
+        0 => '24',
+        1 => '-13',
+        2 => '476',
+        3 => '688',
+      ),
+    ),
+    'zero' => 
+    array (
+      'C' => '48',
+      'WX' => '500',
+      'N' => 'zero',
+      'B' => 
+      array (
+        0 => '24',
+        1 => '-13',
+        2 => '476',
+        3 => '688',
+      ),
+    ),
+    49 => 
+    array (
+      'C' => '49',
+      'WX' => '500',
+      'N' => 'one',
+      'B' => 
+      array (
+        0 => '65',
+        1 => '0',
+        2 => '442',
+        3 => '688',
+      ),
+    ),
+    'one' => 
+    array (
+      'C' => '49',
+      'WX' => '500',
+      'N' => 'one',
+      'B' => 
+      array (
+        0 => '65',
+        1 => '0',
+        2 => '442',
+        3 => '688',
+      ),
+    ),
+    50 => 
+    array (
+      'C' => '50',
+      'WX' => '500',
+      'N' => 'two',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '478',
+        3 => '688',
+      ),
+    ),
+    'two' => 
+    array (
+      'C' => '50',
+      'WX' => '500',
+      'N' => 'two',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '478',
+        3 => '688',
+      ),
+    ),
+    51 => 
+    array (
+      'C' => '51',
+      'WX' => '500',
+      'N' => 'three',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-14',
+        2 => '468',
+        3 => '688',
+      ),
+    ),
+    'three' => 
+    array (
+      'C' => '51',
+      'WX' => '500',
+      'N' => 'three',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-14',
+        2 => '468',
+        3 => '688',
+      ),
+    ),
+    52 => 
+    array (
+      'C' => '52',
+      'WX' => '500',
+      'N' => 'four',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '475',
+        3 => '688',
+      ),
+    ),
+    'four' => 
+    array (
+      'C' => '52',
+      'WX' => '500',
+      'N' => 'four',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '475',
+        3 => '688',
+      ),
+    ),
+    53 => 
+    array (
+      'C' => '53',
+      'WX' => '500',
+      'N' => 'five',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '-8',
+        2 => '470',
+        3 => '676',
+      ),
+    ),
+    'five' => 
+    array (
+      'C' => '53',
+      'WX' => '500',
+      'N' => 'five',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '-8',
+        2 => '470',
+        3 => '676',
+      ),
+    ),
+    54 => 
+    array (
+      'C' => '54',
+      'WX' => '500',
+      'N' => 'six',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-13',
+        2 => '475',
+        3 => '688',
+      ),
+    ),
+    'six' => 
+    array (
+      'C' => '54',
+      'WX' => '500',
+      'N' => 'six',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-13',
+        2 => '475',
+        3 => '688',
+      ),
+    ),
+    55 => 
+    array (
+      'C' => '55',
+      'WX' => '500',
+      'N' => 'seven',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '477',
+        3 => '676',
+      ),
+    ),
+    'seven' => 
+    array (
+      'C' => '55',
+      'WX' => '500',
+      'N' => 'seven',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '0',
+        2 => '477',
+        3 => '676',
+      ),
+    ),
+    56 => 
+    array (
+      'C' => '56',
+      'WX' => '500',
+      'N' => 'eight',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-13',
+        2 => '472',
+        3 => '688',
+      ),
+    ),
+    'eight' => 
+    array (
+      'C' => '56',
+      'WX' => '500',
+      'N' => 'eight',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-13',
+        2 => '472',
+        3 => '688',
+      ),
+    ),
+    57 => 
+    array (
+      'C' => '57',
+      'WX' => '500',
+      'N' => 'nine',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '-13',
+        2 => '473',
+        3 => '688',
+      ),
+    ),
+    'nine' => 
+    array (
+      'C' => '57',
+      'WX' => '500',
+      'N' => 'nine',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '-13',
+        2 => '473',
+        3 => '688',
+      ),
+    ),
+    58 => 
+    array (
+      'C' => '58',
+      'WX' => '333',
+      'N' => 'colon',
+      'B' => 
+      array (
+        0 => '82',
+        1 => '-13',
+        2 => '251',
+        3 => '472',
+      ),
+    ),
+    'colon' => 
+    array (
+      'C' => '58',
+      'WX' => '333',
+      'N' => 'colon',
+      'B' => 
+      array (
+        0 => '82',
+        1 => '-13',
+        2 => '251',
+        3 => '472',
+      ),
+    ),
+    59 => 
+    array (
+      'C' => '59',
+      'WX' => '333',
+      'N' => 'semicolon',
+      'B' => 
+      array (
+        0 => '82',
+        1 => '-180',
+        2 => '266',
+        3 => '472',
+      ),
+    ),
+    'semicolon' => 
+    array (
+      'C' => '59',
+      'WX' => '333',
+      'N' => 'semicolon',
+      'B' => 
+      array (
+        0 => '82',
+        1 => '-180',
+        2 => '266',
+        3 => '472',
+      ),
+    ),
+    60 => 
+    array (
+      'C' => '60',
+      'WX' => '570',
+      'N' => 'less',
+      'B' => 
+      array (
+        0 => '31',
+        1 => '-8',
+        2 => '539',
+        3 => '514',
+      ),
+    ),
+    'less' => 
+    array (
+      'C' => '60',
+      'WX' => '570',
+      'N' => 'less',
+      'B' => 
+      array (
+        0 => '31',
+        1 => '-8',
+        2 => '539',
+        3 => '514',
+      ),
+    ),
+    61 => 
+    array (
+      'C' => '61',
+      'WX' => '570',
+      'N' => 'equal',
+      'B' => 
+      array (
+        0 => '33',
+        1 => '107',
+        2 => '537',
+        3 => '399',
+      ),
+    ),
+    'equal' => 
+    array (
+      'C' => '61',
+      'WX' => '570',
+      'N' => 'equal',
+      'B' => 
+      array (
+        0 => '33',
+        1 => '107',
+        2 => '537',
+        3 => '399',
+      ),
+    ),
+    62 => 
+    array (
+      'C' => '62',
+      'WX' => '570',
+      'N' => 'greater',
+      'B' => 
+      array (
+        0 => '31',
+        1 => '-8',
+        2 => '539',
+        3 => '514',
+      ),
+    ),
+    'greater' => 
+    array (
+      'C' => '62',
+      'WX' => '570',
+      'N' => 'greater',
+      'B' => 
+      array (
+        0 => '31',
+        1 => '-8',
+        2 => '539',
+        3 => '514',
+      ),
+    ),
+    63 => 
+    array (
+      'C' => '63',
+      'WX' => '500',
+      'N' => 'question',
+      'B' => 
+      array (
+        0 => '57',
+        1 => '-13',
+        2 => '445',
+        3 => '689',
+      ),
+    ),
+    'question' => 
+    array (
+      'C' => '63',
+      'WX' => '500',
+      'N' => 'question',
+      'B' => 
+      array (
+        0 => '57',
+        1 => '-13',
+        2 => '445',
+        3 => '689',
+      ),
+    ),
+    64 => 
+    array (
+      'C' => '64',
+      'WX' => '930',
+      'N' => 'at',
+      'B' => 
+      array (
+        0 => '108',
+        1 => '-19',
+        2 => '822',
+        3 => '691',
+      ),
+    ),
+    'at' => 
+    array (
+      'C' => '64',
+      'WX' => '930',
+      'N' => 'at',
+      'B' => 
+      array (
+        0 => '108',
+        1 => '-19',
+        2 => '822',
+        3 => '691',
+      ),
+    ),
+    65 => 
+    array (
+      'C' => '65',
+      'WX' => '722',
+      'N' => 'A',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '689',
+        3 => '690',
+      ),
+    ),
+    'A' => 
+    array (
+      'C' => '65',
+      'WX' => '722',
+      'N' => 'A',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '689',
+        3 => '690',
+      ),
+    ),
+    66 => 
+    array (
+      'C' => '66',
+      'WX' => '667',
+      'N' => 'B',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '619',
+        3 => '676',
+      ),
+    ),
+    'B' => 
+    array (
+      'C' => '66',
+      'WX' => '667',
+      'N' => 'B',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '619',
+        3 => '676',
+      ),
+    ),
+    67 => 
+    array (
+      'C' => '67',
+      'WX' => '722',
+      'N' => 'C',
+      'B' => 
+      array (
+        0 => '49',
+        1 => '-19',
+        2 => '687',
+        3 => '691',
+      ),
+    ),
+    'C' => 
+    array (
+      'C' => '67',
+      'WX' => '722',
+      'N' => 'C',
+      'B' => 
+      array (
+        0 => '49',
+        1 => '-19',
+        2 => '687',
+        3 => '691',
+      ),
+    ),
+    68 => 
+    array (
+      'C' => '68',
+      'WX' => '722',
+      'N' => 'D',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '0',
+        2 => '690',
+        3 => '676',
+      ),
+    ),
+    'D' => 
+    array (
+      'C' => '68',
+      'WX' => '722',
+      'N' => 'D',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '0',
+        2 => '690',
+        3 => '676',
+      ),
+    ),
+    69 => 
+    array (
+      'C' => '69',
+      'WX' => '667',
+      'N' => 'E',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '641',
+        3 => '676',
+      ),
+    ),
+    'E' => 
+    array (
+      'C' => '69',
+      'WX' => '667',
+      'N' => 'E',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '641',
+        3 => '676',
+      ),
+    ),
+    70 => 
+    array (
+      'C' => '70',
+      'WX' => '611',
+      'N' => 'F',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '583',
+        3 => '676',
+      ),
+    ),
+    'F' => 
+    array (
+      'C' => '70',
+      'WX' => '611',
+      'N' => 'F',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '583',
+        3 => '676',
+      ),
+    ),
+    71 => 
+    array (
+      'C' => '71',
+      'WX' => '778',
+      'N' => 'G',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-19',
+        2 => '755',
+        3 => '691',
+      ),
+    ),
+    'G' => 
+    array (
+      'C' => '71',
+      'WX' => '778',
+      'N' => 'G',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-19',
+        2 => '755',
+        3 => '691',
+      ),
+    ),
+    72 => 
+    array (
+      'C' => '72',
+      'WX' => '778',
+      'N' => 'H',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '0',
+        2 => '759',
+        3 => '676',
+      ),
+    ),
+    'H' => 
+    array (
+      'C' => '72',
+      'WX' => '778',
+      'N' => 'H',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '0',
+        2 => '759',
+        3 => '676',
+      ),
+    ),
+    73 => 
+    array (
+      'C' => '73',
+      'WX' => '389',
+      'N' => 'I',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '0',
+        2 => '370',
+        3 => '676',
+      ),
+    ),
+    'I' => 
+    array (
+      'C' => '73',
+      'WX' => '389',
+      'N' => 'I',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '0',
+        2 => '370',
+        3 => '676',
+      ),
+    ),
+    74 => 
+    array (
+      'C' => '74',
+      'WX' => '500',
+      'N' => 'J',
+      'B' => 
+      array (
+        0 => '3',
+        1 => '-96',
+        2 => '479',
+        3 => '676',
+      ),
+    ),
+    'J' => 
+    array (
+      'C' => '74',
+      'WX' => '500',
+      'N' => 'J',
+      'B' => 
+      array (
+        0 => '3',
+        1 => '-96',
+        2 => '479',
+        3 => '676',
+      ),
+    ),
+    75 => 
+    array (
+      'C' => '75',
+      'WX' => '778',
+      'N' => 'K',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '0',
+        2 => '769',
+        3 => '676',
+      ),
+    ),
+    'K' => 
+    array (
+      'C' => '75',
+      'WX' => '778',
+      'N' => 'K',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '0',
+        2 => '769',
+        3 => '676',
+      ),
+    ),
+    76 => 
+    array (
+      'C' => '76',
+      'WX' => '667',
+      'N' => 'L',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '638',
+        3 => '676',
+      ),
+    ),
+    'L' => 
+    array (
+      'C' => '76',
+      'WX' => '667',
+      'N' => 'L',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '638',
+        3 => '676',
+      ),
+    ),
+    77 => 
+    array (
+      'C' => '77',
+      'WX' => '944',
+      'N' => 'M',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '0',
+        2 => '921',
+        3 => '676',
+      ),
+    ),
+    'M' => 
+    array (
+      'C' => '77',
+      'WX' => '944',
+      'N' => 'M',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '0',
+        2 => '921',
+        3 => '676',
+      ),
+    ),
+    78 => 
+    array (
+      'C' => '78',
+      'WX' => '722',
+      'N' => 'N',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-18',
+        2 => '701',
+        3 => '676',
+      ),
+    ),
+    'N' => 
+    array (
+      'C' => '78',
+      'WX' => '722',
+      'N' => 'N',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-18',
+        2 => '701',
+        3 => '676',
+      ),
+    ),
+    79 => 
+    array (
+      'C' => '79',
+      'WX' => '778',
+      'N' => 'O',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-19',
+        2 => '743',
+        3 => '691',
+      ),
+    ),
+    'O' => 
+    array (
+      'C' => '79',
+      'WX' => '778',
+      'N' => 'O',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-19',
+        2 => '743',
+        3 => '691',
+      ),
+    ),
+    80 => 
+    array (
+      'C' => '80',
+      'WX' => '611',
+      'N' => 'P',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '600',
+        3 => '676',
+      ),
+    ),
+    'P' => 
+    array (
+      'C' => '80',
+      'WX' => '611',
+      'N' => 'P',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '600',
+        3 => '676',
+      ),
+    ),
+    81 => 
+    array (
+      'C' => '81',
+      'WX' => '778',
+      'N' => 'Q',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-176',
+        2 => '743',
+        3 => '691',
+      ),
+    ),
+    'Q' => 
+    array (
+      'C' => '81',
+      'WX' => '778',
+      'N' => 'Q',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-176',
+        2 => '743',
+        3 => '691',
+      ),
+    ),
+    82 => 
+    array (
+      'C' => '82',
+      'WX' => '722',
+      'N' => 'R',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '0',
+        2 => '715',
+        3 => '676',
+      ),
+    ),
+    'R' => 
+    array (
+      'C' => '82',
+      'WX' => '722',
+      'N' => 'R',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '0',
+        2 => '715',
+        3 => '676',
+      ),
+    ),
+    83 => 
+    array (
+      'C' => '83',
+      'WX' => '556',
+      'N' => 'S',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-19',
+        2 => '513',
+        3 => '692',
+      ),
+    ),
+    'S' => 
+    array (
+      'C' => '83',
+      'WX' => '556',
+      'N' => 'S',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-19',
+        2 => '513',
+        3 => '692',
+      ),
+    ),
+    84 => 
+    array (
+      'C' => '84',
+      'WX' => '667',
+      'N' => 'T',
+      'B' => 
+      array (
+        0 => '31',
+        1 => '0',
+        2 => '636',
+        3 => '676',
+      ),
+    ),
+    'T' => 
+    array (
+      'C' => '84',
+      'WX' => '667',
+      'N' => 'T',
+      'B' => 
+      array (
+        0 => '31',
+        1 => '0',
+        2 => '636',
+        3 => '676',
+      ),
+    ),
+    85 => 
+    array (
+      'C' => '85',
+      'WX' => '722',
+      'N' => 'U',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-19',
+        2 => '701',
+        3 => '676',
+      ),
+    ),
+    'U' => 
+    array (
+      'C' => '85',
+      'WX' => '722',
+      'N' => 'U',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-19',
+        2 => '701',
+        3 => '676',
+      ),
+    ),
+    86 => 
+    array (
+      'C' => '86',
+      'WX' => '722',
+      'N' => 'V',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-18',
+        2 => '701',
+        3 => '676',
+      ),
+    ),
+    'V' => 
+    array (
+      'C' => '86',
+      'WX' => '722',
+      'N' => 'V',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-18',
+        2 => '701',
+        3 => '676',
+      ),
+    ),
+    87 => 
+    array (
+      'C' => '87',
+      'WX' => '1000',
+      'N' => 'W',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '-15',
+        2 => '981',
+        3 => '676',
+      ),
+    ),
+    'W' => 
+    array (
+      'C' => '87',
+      'WX' => '1000',
+      'N' => 'W',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '-15',
+        2 => '981',
+        3 => '676',
+      ),
+    ),
+    88 => 
+    array (
+      'C' => '88',
+      'WX' => '722',
+      'N' => 'X',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '699',
+        3 => '676',
+      ),
+    ),
+    'X' => 
+    array (
+      'C' => '88',
+      'WX' => '722',
+      'N' => 'X',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '699',
+        3 => '676',
+      ),
+    ),
+    89 => 
+    array (
+      'C' => '89',
+      'WX' => '722',
+      'N' => 'Y',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '699',
+        3 => '676',
+      ),
+    ),
+    'Y' => 
+    array (
+      'C' => '89',
+      'WX' => '722',
+      'N' => 'Y',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '699',
+        3 => '676',
+      ),
+    ),
+    90 => 
+    array (
+      'C' => '90',
+      'WX' => '667',
+      'N' => 'Z',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '0',
+        2 => '634',
+        3 => '676',
+      ),
+    ),
+    'Z' => 
+    array (
+      'C' => '90',
+      'WX' => '667',
+      'N' => 'Z',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '0',
+        2 => '634',
+        3 => '676',
+      ),
+    ),
+    91 => 
+    array (
+      'C' => '91',
+      'WX' => '333',
+      'N' => 'bracketleft',
+      'B' => 
+      array (
+        0 => '67',
+        1 => '-149',
+        2 => '301',
+        3 => '678',
+      ),
+    ),
+    'bracketleft' => 
+    array (
+      'C' => '91',
+      'WX' => '333',
+      'N' => 'bracketleft',
+      'B' => 
+      array (
+        0 => '67',
+        1 => '-149',
+        2 => '301',
+        3 => '678',
+      ),
+    ),
+    92 => 
+    array (
+      'C' => '92',
+      'WX' => '278',
+      'N' => 'backslash',
+      'B' => 
+      array (
+        0 => '-25',
+        1 => '-19',
+        2 => '303',
+        3 => '691',
+      ),
+    ),
+    'backslash' => 
+    array (
+      'C' => '92',
+      'WX' => '278',
+      'N' => 'backslash',
+      'B' => 
+      array (
+        0 => '-25',
+        1 => '-19',
+        2 => '303',
+        3 => '691',
+      ),
+    ),
+    93 => 
+    array (
+      'C' => '93',
+      'WX' => '333',
+      'N' => 'bracketright',
+      'B' => 
+      array (
+        0 => '32',
+        1 => '-149',
+        2 => '266',
+        3 => '678',
+      ),
+    ),
+    'bracketright' => 
+    array (
+      'C' => '93',
+      'WX' => '333',
+      'N' => 'bracketright',
+      'B' => 
+      array (
+        0 => '32',
+        1 => '-149',
+        2 => '266',
+        3 => '678',
+      ),
+    ),
+    94 => 
+    array (
+      'C' => '94',
+      'WX' => '581',
+      'N' => 'asciicircum',
+      'B' => 
+      array (
+        0 => '73',
+        1 => '311',
+        2 => '509',
+        3 => '676',
+      ),
+    ),
+    'asciicircum' => 
+    array (
+      'C' => '94',
+      'WX' => '581',
+      'N' => 'asciicircum',
+      'B' => 
+      array (
+        0 => '73',
+        1 => '311',
+        2 => '509',
+        3 => '676',
+      ),
+    ),
+    95 => 
+    array (
+      'C' => '95',
+      'WX' => '500',
+      'N' => 'underscore',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '-125',
+        2 => '500',
+        3 => '-75',
+      ),
+    ),
+    'underscore' => 
+    array (
+      'C' => '95',
+      'WX' => '500',
+      'N' => 'underscore',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '-125',
+        2 => '500',
+        3 => '-75',
+      ),
+    ),
+    96 => 
+    array (
+      'C' => '96',
+      'WX' => '333',
+      'N' => 'quoteleft',
+      'B' => 
+      array (
+        0 => '70',
+        1 => '356',
+        2 => '254',
+        3 => '691',
+      ),
+    ),
+    'quoteleft' => 
+    array (
+      'C' => '96',
+      'WX' => '333',
+      'N' => 'quoteleft',
+      'B' => 
+      array (
+        0 => '70',
+        1 => '356',
+        2 => '254',
+        3 => '691',
+      ),
+    ),
+    97 => 
+    array (
+      'C' => '97',
+      'WX' => '500',
+      'N' => 'a',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '488',
+        3 => '473',
+      ),
+    ),
+    'a' => 
+    array (
+      'C' => '97',
+      'WX' => '500',
+      'N' => 'a',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '488',
+        3 => '473',
+      ),
+    ),
+    98 => 
+    array (
+      'C' => '98',
+      'WX' => '556',
+      'N' => 'b',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '-14',
+        2 => '521',
+        3 => '676',
+      ),
+    ),
+    'b' => 
+    array (
+      'C' => '98',
+      'WX' => '556',
+      'N' => 'b',
+      'B' => 
+      array (
+        0 => '17',
+        1 => '-14',
+        2 => '521',
+        3 => '676',
+      ),
+    ),
+    99 => 
+    array (
+      'C' => '99',
+      'WX' => '444',
+      'N' => 'c',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '430',
+        3 => '473',
+      ),
+    ),
+    'c' => 
+    array (
+      'C' => '99',
+      'WX' => '444',
+      'N' => 'c',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '430',
+        3 => '473',
+      ),
+    ),
+    100 => 
+    array (
+      'C' => '100',
+      'WX' => '556',
+      'N' => 'd',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '534',
+        3 => '676',
+      ),
+    ),
+    'd' => 
+    array (
+      'C' => '100',
+      'WX' => '556',
+      'N' => 'd',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '534',
+        3 => '676',
+      ),
+    ),
+    101 => 
+    array (
+      'C' => '101',
+      'WX' => '444',
+      'N' => 'e',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '426',
+        3 => '473',
+      ),
+    ),
+    'e' => 
+    array (
+      'C' => '101',
+      'WX' => '444',
+      'N' => 'e',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '426',
+        3 => '473',
+      ),
+    ),
+    102 => 
+    array (
+      'C' => '102',
+      'WX' => '333',
+      'N' => 'f',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '0',
+        2 => '389',
+        3 => '691',
+      ),
+      'L' => 
+      array (
+        0 => 'l',
+        1 => 'fl',
+      ),
+    ),
+    'f' => 
+    array (
+      'C' => '102',
+      'WX' => '333',
+      'N' => 'f',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '0',
+        2 => '389',
+        3 => '691',
+      ),
+      'L' => 
+      array (
+        0 => 'l',
+        1 => 'fl',
+      ),
+    ),
+    103 => 
+    array (
+      'C' => '103',
+      'WX' => '500',
+      'N' => 'g',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-206',
+        2 => '483',
+        3 => '473',
+      ),
+    ),
+    'g' => 
+    array (
+      'C' => '103',
+      'WX' => '500',
+      'N' => 'g',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-206',
+        2 => '483',
+        3 => '473',
+      ),
+    ),
+    104 => 
+    array (
+      'C' => '104',
+      'WX' => '556',
+      'N' => 'h',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '534',
+        3 => '676',
+      ),
+    ),
+    'h' => 
+    array (
+      'C' => '104',
+      'WX' => '556',
+      'N' => 'h',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '534',
+        3 => '676',
+      ),
+    ),
+    105 => 
+    array (
+      'C' => '105',
+      'WX' => '278',
+      'N' => 'i',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '255',
+        3 => '691',
+      ),
+    ),
+    'i' => 
+    array (
+      'C' => '105',
+      'WX' => '278',
+      'N' => 'i',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '255',
+        3 => '691',
+      ),
+    ),
+    106 => 
+    array (
+      'C' => '106',
+      'WX' => '333',
+      'N' => 'j',
+      'B' => 
+      array (
+        0 => '-57',
+        1 => '-203',
+        2 => '263',
+        3 => '691',
+      ),
+    ),
+    'j' => 
+    array (
+      'C' => '106',
+      'WX' => '333',
+      'N' => 'j',
+      'B' => 
+      array (
+        0 => '-57',
+        1 => '-203',
+        2 => '263',
+        3 => '691',
+      ),
+    ),
+    107 => 
+    array (
+      'C' => '107',
+      'WX' => '556',
+      'N' => 'k',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '0',
+        2 => '543',
+        3 => '676',
+      ),
+    ),
+    'k' => 
+    array (
+      'C' => '107',
+      'WX' => '556',
+      'N' => 'k',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '0',
+        2 => '543',
+        3 => '676',
+      ),
+    ),
+    108 => 
+    array (
+      'C' => '108',
+      'WX' => '278',
+      'N' => 'l',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '255',
+        3 => '676',
+      ),
+    ),
+    'l' => 
+    array (
+      'C' => '108',
+      'WX' => '278',
+      'N' => 'l',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '255',
+        3 => '676',
+      ),
+    ),
+    109 => 
+    array (
+      'C' => '109',
+      'WX' => '833',
+      'N' => 'm',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '814',
+        3 => '473',
+      ),
+    ),
+    'm' => 
+    array (
+      'C' => '109',
+      'WX' => '833',
+      'N' => 'm',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '814',
+        3 => '473',
+      ),
+    ),
+    110 => 
+    array (
+      'C' => '110',
+      'WX' => '556',
+      'N' => 'n',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '0',
+        2 => '539',
+        3 => '473',
+      ),
+    ),
+    'n' => 
+    array (
+      'C' => '110',
+      'WX' => '556',
+      'N' => 'n',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '0',
+        2 => '539',
+        3 => '473',
+      ),
+    ),
+    111 => 
+    array (
+      'C' => '111',
+      'WX' => '500',
+      'N' => 'o',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '476',
+        3 => '473',
+      ),
+    ),
+    'o' => 
+    array (
+      'C' => '111',
+      'WX' => '500',
+      'N' => 'o',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '476',
+        3 => '473',
+      ),
+    ),
+    112 => 
+    array (
+      'C' => '112',
+      'WX' => '556',
+      'N' => 'p',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '-205',
+        2 => '524',
+        3 => '473',
+      ),
+    ),
+    'p' => 
+    array (
+      'C' => '112',
+      'WX' => '556',
+      'N' => 'p',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '-205',
+        2 => '524',
+        3 => '473',
+      ),
+    ),
+    113 => 
+    array (
+      'C' => '113',
+      'WX' => '556',
+      'N' => 'q',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-205',
+        2 => '536',
+        3 => '473',
+      ),
+    ),
+    'q' => 
+    array (
+      'C' => '113',
+      'WX' => '556',
+      'N' => 'q',
+      'B' => 
+      array (
+        0 => '34',
+        1 => '-205',
+        2 => '536',
+        3 => '473',
+      ),
+    ),
+    114 => 
+    array (
+      'C' => '114',
+      'WX' => '444',
+      'N' => 'r',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '0',
+        2 => '434',
+        3 => '473',
+      ),
+    ),
+    'r' => 
+    array (
+      'C' => '114',
+      'WX' => '444',
+      'N' => 'r',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '0',
+        2 => '434',
+        3 => '473',
+      ),
+    ),
+    115 => 
+    array (
+      'C' => '115',
+      'WX' => '389',
+      'N' => 's',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '361',
+        3 => '473',
+      ),
+    ),
+    's' => 
+    array (
+      'C' => '115',
+      'WX' => '389',
+      'N' => 's',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '361',
+        3 => '473',
+      ),
+    ),
+    116 => 
+    array (
+      'C' => '116',
+      'WX' => '333',
+      'N' => 't',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '-12',
+        2 => '332',
+        3 => '630',
+      ),
+    ),
+    't' => 
+    array (
+      'C' => '116',
+      'WX' => '333',
+      'N' => 't',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '-12',
+        2 => '332',
+        3 => '630',
+      ),
+    ),
+    117 => 
+    array (
+      'C' => '117',
+      'WX' => '556',
+      'N' => 'u',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-14',
+        2 => '537',
+        3 => '461',
+      ),
+    ),
+    'u' => 
+    array (
+      'C' => '117',
+      'WX' => '556',
+      'N' => 'u',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-14',
+        2 => '537',
+        3 => '461',
+      ),
+    ),
+    118 => 
+    array (
+      'C' => '118',
+      'WX' => '500',
+      'N' => 'v',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '-14',
+        2 => '485',
+        3 => '461',
+      ),
+    ),
+    'v' => 
+    array (
+      'C' => '118',
+      'WX' => '500',
+      'N' => 'v',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '-14',
+        2 => '485',
+        3 => '461',
+      ),
+    ),
+    119 => 
+    array (
+      'C' => '119',
+      'WX' => '722',
+      'N' => 'w',
+      'B' => 
+      array (
+        0 => '23',
+        1 => '-14',
+        2 => '707',
+        3 => '461',
+      ),
+    ),
+    'w' => 
+    array (
+      'C' => '119',
+      'WX' => '722',
+      'N' => 'w',
+      'B' => 
+      array (
+        0 => '23',
+        1 => '-14',
+        2 => '707',
+        3 => '461',
+      ),
+    ),
+    120 => 
+    array (
+      'C' => '120',
+      'WX' => '500',
+      'N' => 'x',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '484',
+        3 => '461',
+      ),
+    ),
+    'x' => 
+    array (
+      'C' => '120',
+      'WX' => '500',
+      'N' => 'x',
+      'B' => 
+      array (
+        0 => '12',
+        1 => '0',
+        2 => '484',
+        3 => '461',
+      ),
+    ),
+    121 => 
+    array (
+      'C' => '121',
+      'WX' => '500',
+      'N' => 'y',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-205',
+        2 => '480',
+        3 => '461',
+      ),
+    ),
+    'y' => 
+    array (
+      'C' => '121',
+      'WX' => '500',
+      'N' => 'y',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-205',
+        2 => '480',
+        3 => '461',
+      ),
+    ),
+    122 => 
+    array (
+      'C' => '122',
+      'WX' => '444',
+      'N' => 'z',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '0',
+        2 => '420',
+        3 => '461',
+      ),
+    ),
+    'z' => 
+    array (
+      'C' => '122',
+      'WX' => '444',
+      'N' => 'z',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '0',
+        2 => '420',
+        3 => '461',
+      ),
+    ),
+    123 => 
+    array (
+      'C' => '123',
+      'WX' => '394',
+      'N' => 'braceleft',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '-175',
+        2 => '340',
+        3 => '698',
+      ),
+    ),
+    'braceleft' => 
+    array (
+      'C' => '123',
+      'WX' => '394',
+      'N' => 'braceleft',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '-175',
+        2 => '340',
+        3 => '698',
+      ),
+    ),
+    124 => 
+    array (
+      'C' => '124',
+      'WX' => '220',
+      'N' => 'bar',
+      'B' => 
+      array (
+        0 => '66',
+        1 => '-218',
+        2 => '154',
+        3 => '782',
+      ),
+    ),
+    'bar' => 
+    array (
+      'C' => '124',
+      'WX' => '220',
+      'N' => 'bar',
+      'B' => 
+      array (
+        0 => '66',
+        1 => '-218',
+        2 => '154',
+        3 => '782',
+      ),
+    ),
+    125 => 
+    array (
+      'C' => '125',
+      'WX' => '394',
+      'N' => 'braceright',
+      'B' => 
+      array (
+        0 => '54',
+        1 => '-175',
+        2 => '372',
+        3 => '698',
+      ),
+    ),
+    'braceright' => 
+    array (
+      'C' => '125',
+      'WX' => '394',
+      'N' => 'braceright',
+      'B' => 
+      array (
+        0 => '54',
+        1 => '-175',
+        2 => '372',
+        3 => '698',
+      ),
+    ),
+    126 => 
+    array (
+      'C' => '126',
+      'WX' => '520',
+      'N' => 'asciitilde',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '173',
+        2 => '491',
+        3 => '333',
+      ),
+    ),
+    'asciitilde' => 
+    array (
+      'C' => '126',
+      'WX' => '520',
+      'N' => 'asciitilde',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '173',
+        2 => '491',
+        3 => '333',
+      ),
+    ),
+    161 => 
+    array (
+      'C' => '161',
+      'WX' => '333',
+      'N' => 'exclamdown',
+      'B' => 
+      array (
+        0 => '82',
+        1 => '-203',
+        2 => '252',
+        3 => '501',
+      ),
+    ),
+    'exclamdown' => 
+    array (
+      'C' => '161',
+      'WX' => '333',
+      'N' => 'exclamdown',
+      'B' => 
+      array (
+        0 => '82',
+        1 => '-203',
+        2 => '252',
+        3 => '501',
+      ),
+    ),
+    162 => 
+    array (
+      'C' => '162',
+      'WX' => '500',
+      'N' => 'cent',
+      'B' => 
+      array (
+        0 => '53',
+        1 => '-140',
+        2 => '458',
+        3 => '588',
+      ),
+    ),
+    'cent' => 
+    array (
+      'C' => '162',
+      'WX' => '500',
+      'N' => 'cent',
+      'B' => 
+      array (
+        0 => '53',
+        1 => '-140',
+        2 => '458',
+        3 => '588',
+      ),
+    ),
+    163 => 
+    array (
+      'C' => '163',
+      'WX' => '500',
+      'N' => 'sterling',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '-14',
+        2 => '477',
+        3 => '684',
+      ),
+    ),
+    'sterling' => 
+    array (
+      'C' => '163',
+      'WX' => '500',
+      'N' => 'sterling',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '-14',
+        2 => '477',
+        3 => '684',
+      ),
+    ),
+    164 => 
+    array (
+      'C' => '164',
+      'WX' => '167',
+      'N' => 'fraction',
+      'B' => 
+      array (
+        0 => '-168',
+        1 => '-12',
+        2 => '329',
+        3 => '688',
+      ),
+    ),
+    'fraction' => 
+    array (
+      'C' => '164',
+      'WX' => '167',
+      'N' => 'fraction',
+      'B' => 
+      array (
+        0 => '-168',
+        1 => '-12',
+        2 => '329',
+        3 => '688',
+      ),
+    ),
+    165 => 
+    array (
+      'C' => '165',
+      'WX' => '500',
+      'N' => 'yen',
+      'B' => 
+      array (
+        0 => '-64',
+        1 => '0',
+        2 => '547',
+        3 => '676',
+      ),
+    ),
+    'yen' => 
+    array (
+      'C' => '165',
+      'WX' => '500',
+      'N' => 'yen',
+      'B' => 
+      array (
+        0 => '-64',
+        1 => '0',
+        2 => '547',
+        3 => '676',
+      ),
+    ),
+    166 => 
+    array (
+      'C' => '166',
+      'WX' => '500',
+      'N' => 'florin',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '-155',
+        2 => '498',
+        3 => '706',
+      ),
+    ),
+    'florin' => 
+    array (
+      'C' => '166',
+      'WX' => '500',
+      'N' => 'florin',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '-155',
+        2 => '498',
+        3 => '706',
+      ),
+    ),
+    167 => 
+    array (
+      'C' => '167',
+      'WX' => '500',
+      'N' => 'section',
+      'B' => 
+      array (
+        0 => '57',
+        1 => '-132',
+        2 => '443',
+        3 => '691',
+      ),
+    ),
+    'section' => 
+    array (
+      'C' => '167',
+      'WX' => '500',
+      'N' => 'section',
+      'B' => 
+      array (
+        0 => '57',
+        1 => '-132',
+        2 => '443',
+        3 => '691',
+      ),
+    ),
+    168 => 
+    array (
+      'C' => '168',
+      'WX' => '500',
+      'N' => 'currency',
+      'B' => 
+      array (
+        0 => '-26',
+        1 => '61',
+        2 => '526',
+        3 => '613',
+      ),
+    ),
+    'currency' => 
+    array (
+      'C' => '168',
+      'WX' => '500',
+      'N' => 'currency',
+      'B' => 
+      array (
+        0 => '-26',
+        1 => '61',
+        2 => '526',
+        3 => '613',
+      ),
+    ),
+    169 => 
+    array (
+      'C' => '169',
+      'WX' => '278',
+      'N' => 'quotesingle',
+      'B' => 
+      array (
+        0 => '75',
+        1 => '404',
+        2 => '204',
+        3 => '691',
+      ),
+    ),
+    'quotesingle' => 
+    array (
+      'C' => '169',
+      'WX' => '278',
+      'N' => 'quotesingle',
+      'B' => 
+      array (
+        0 => '75',
+        1 => '404',
+        2 => '204',
+        3 => '691',
+      ),
+    ),
+    170 => 
+    array (
+      'C' => '170',
+      'WX' => '500',
+      'N' => 'quotedblleft',
+      'B' => 
+      array (
+        0 => '32',
+        1 => '356',
+        2 => '486',
+        3 => '691',
+      ),
+    ),
+    'quotedblleft' => 
+    array (
+      'C' => '170',
+      'WX' => '500',
+      'N' => 'quotedblleft',
+      'B' => 
+      array (
+        0 => '32',
+        1 => '356',
+        2 => '486',
+        3 => '691',
+      ),
+    ),
+    171 => 
+    array (
+      'C' => '171',
+      'WX' => '500',
+      'N' => 'guillemotleft',
+      'B' => 
+      array (
+        0 => '23',
+        1 => '36',
+        2 => '473',
+        3 => '415',
+      ),
+    ),
+    'guillemotleft' => 
+    array (
+      'C' => '171',
+      'WX' => '500',
+      'N' => 'guillemotleft',
+      'B' => 
+      array (
+        0 => '23',
+        1 => '36',
+        2 => '473',
+        3 => '415',
+      ),
+    ),
+    172 => 
+    array (
+      'C' => '172',
+      'WX' => '333',
+      'N' => 'guilsinglleft',
+      'B' => 
+      array (
+        0 => '51',
+        1 => '36',
+        2 => '305',
+        3 => '415',
+      ),
+    ),
+    'guilsinglleft' => 
+    array (
+      'C' => '172',
+      'WX' => '333',
+      'N' => 'guilsinglleft',
+      'B' => 
+      array (
+        0 => '51',
+        1 => '36',
+        2 => '305',
+        3 => '415',
+      ),
+    ),
+    173 => 
+    array (
+      'C' => '173',
+      'WX' => '333',
+      'N' => 'guilsinglright',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '36',
+        2 => '282',
+        3 => '415',
+      ),
+    ),
+    'guilsinglright' => 
+    array (
+      'C' => '173',
+      'WX' => '333',
+      'N' => 'guilsinglright',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '36',
+        2 => '282',
+        3 => '415',
+      ),
+    ),
+    174 => 
+    array (
+      'C' => '174',
+      'WX' => '556',
+      'N' => 'fi',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '0',
+        2 => '536',
+        3 => '691',
+      ),
+    ),
+    'fi' => 
+    array (
+      'C' => '174',
+      'WX' => '556',
+      'N' => 'fi',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '0',
+        2 => '536',
+        3 => '691',
+      ),
+    ),
+    175 => 
+    array (
+      'C' => '175',
+      'WX' => '556',
+      'N' => 'fl',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '0',
+        2 => '536',
+        3 => '691',
+      ),
+    ),
+    'fl' => 
+    array (
+      'C' => '175',
+      'WX' => '556',
+      'N' => 'fl',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '0',
+        2 => '536',
+        3 => '691',
+      ),
+    ),
+    177 => 
+    array (
+      'C' => '177',
+      'WX' => '500',
+      'N' => 'endash',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '181',
+        2 => '500',
+        3 => '271',
+      ),
+    ),
+    'endash' => 
+    array (
+      'C' => '177',
+      'WX' => '500',
+      'N' => 'endash',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '181',
+        2 => '500',
+        3 => '271',
+      ),
+    ),
+    178 => 
+    array (
+      'C' => '178',
+      'WX' => '500',
+      'N' => 'dagger',
+      'B' => 
+      array (
+        0 => '47',
+        1 => '-134',
+        2 => '453',
+        3 => '691',
+      ),
+    ),
+    'dagger' => 
+    array (
+      'C' => '178',
+      'WX' => '500',
+      'N' => 'dagger',
+      'B' => 
+      array (
+        0 => '47',
+        1 => '-134',
+        2 => '453',
+        3 => '691',
+      ),
+    ),
+    179 => 
+    array (
+      'C' => '179',
+      'WX' => '500',
+      'N' => 'daggerdbl',
+      'B' => 
+      array (
+        0 => '45',
+        1 => '-132',
+        2 => '456',
+        3 => '691',
+      ),
+    ),
+    'daggerdbl' => 
+    array (
+      'C' => '179',
+      'WX' => '500',
+      'N' => 'daggerdbl',
+      'B' => 
+      array (
+        0 => '45',
+        1 => '-132',
+        2 => '456',
+        3 => '691',
+      ),
+    ),
+    180 => 
+    array (
+      'C' => '180',
+      'WX' => '250',
+      'N' => 'periodcentered',
+      'B' => 
+      array (
+        0 => '41',
+        1 => '248',
+        2 => '210',
+        3 => '417',
+      ),
+    ),
+    'periodcentered' => 
+    array (
+      'C' => '180',
+      'WX' => '250',
+      'N' => 'periodcentered',
+      'B' => 
+      array (
+        0 => '41',
+        1 => '248',
+        2 => '210',
+        3 => '417',
+      ),
+    ),
+    182 => 
+    array (
+      'C' => '182',
+      'WX' => '540',
+      'N' => 'paragraph',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '-186',
+        2 => '519',
+        3 => '676',
+      ),
+    ),
+    'paragraph' => 
+    array (
+      'C' => '182',
+      'WX' => '540',
+      'N' => 'paragraph',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '-186',
+        2 => '519',
+        3 => '676',
+      ),
+    ),
+    183 => 
+    array (
+      'C' => '183',
+      'WX' => '350',
+      'N' => 'bullet',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '198',
+        2 => '315',
+        3 => '478',
+      ),
+    ),
+    'bullet' => 
+    array (
+      'C' => '183',
+      'WX' => '350',
+      'N' => 'bullet',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '198',
+        2 => '315',
+        3 => '478',
+      ),
+    ),
+    184 => 
+    array (
+      'C' => '184',
+      'WX' => '333',
+      'N' => 'quotesinglbase',
+      'B' => 
+      array (
+        0 => '79',
+        1 => '-180',
+        2 => '263',
+        3 => '155',
+      ),
+    ),
+    'quotesinglbase' => 
+    array (
+      'C' => '184',
+      'WX' => '333',
+      'N' => 'quotesinglbase',
+      'B' => 
+      array (
+        0 => '79',
+        1 => '-180',
+        2 => '263',
+        3 => '155',
+      ),
+    ),
+    185 => 
+    array (
+      'C' => '185',
+      'WX' => '500',
+      'N' => 'quotedblbase',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-180',
+        2 => '468',
+        3 => '155',
+      ),
+    ),
+    'quotedblbase' => 
+    array (
+      'C' => '185',
+      'WX' => '500',
+      'N' => 'quotedblbase',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-180',
+        2 => '468',
+        3 => '155',
+      ),
+    ),
+    186 => 
+    array (
+      'C' => '186',
+      'WX' => '500',
+      'N' => 'quotedblright',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '356',
+        2 => '468',
+        3 => '691',
+      ),
+    ),
+    'quotedblright' => 
+    array (
+      'C' => '186',
+      'WX' => '500',
+      'N' => 'quotedblright',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '356',
+        2 => '468',
+        3 => '691',
+      ),
+    ),
+    187 => 
+    array (
+      'C' => '187',
+      'WX' => '500',
+      'N' => 'guillemotright',
+      'B' => 
+      array (
+        0 => '27',
+        1 => '36',
+        2 => '477',
+        3 => '415',
+      ),
+    ),
+    'guillemotright' => 
+    array (
+      'C' => '187',
+      'WX' => '500',
+      'N' => 'guillemotright',
+      'B' => 
+      array (
+        0 => '27',
+        1 => '36',
+        2 => '477',
+        3 => '415',
+      ),
+    ),
+    188 => 
+    array (
+      'C' => '188',
+      'WX' => '1000',
+      'N' => 'ellipsis',
+      'B' => 
+      array (
+        0 => '82',
+        1 => '-13',
+        2 => '917',
+        3 => '156',
+      ),
+    ),
+    'ellipsis' => 
+    array (
+      'C' => '188',
+      'WX' => '1000',
+      'N' => 'ellipsis',
+      'B' => 
+      array (
+        0 => '82',
+        1 => '-13',
+        2 => '917',
+        3 => '156',
+      ),
+    ),
+    189 => 
+    array (
+      'C' => '189',
+      'WX' => '1000',
+      'N' => 'perthousand',
+      'B' => 
+      array (
+        0 => '7',
+        1 => '-29',
+        2 => '995',
+        3 => '706',
+      ),
+    ),
+    'perthousand' => 
+    array (
+      'C' => '189',
+      'WX' => '1000',
+      'N' => 'perthousand',
+      'B' => 
+      array (
+        0 => '7',
+        1 => '-29',
+        2 => '995',
+        3 => '706',
+      ),
+    ),
+    191 => 
+    array (
+      'C' => '191',
+      'WX' => '500',
+      'N' => 'questiondown',
+      'B' => 
+      array (
+        0 => '55',
+        1 => '-201',
+        2 => '443',
+        3 => '501',
+      ),
+    ),
+    'questiondown' => 
+    array (
+      'C' => '191',
+      'WX' => '500',
+      'N' => 'questiondown',
+      'B' => 
+      array (
+        0 => '55',
+        1 => '-201',
+        2 => '443',
+        3 => '501',
+      ),
+    ),
+    193 => 
+    array (
+      'C' => '193',
+      'WX' => '333',
+      'N' => 'grave',
+      'B' => 
+      array (
+        0 => '8',
+        1 => '528',
+        2 => '246',
+        3 => '713',
+      ),
+    ),
+    'grave' => 
+    array (
+      'C' => '193',
+      'WX' => '333',
+      'N' => 'grave',
+      'B' => 
+      array (
+        0 => '8',
+        1 => '528',
+        2 => '246',
+        3 => '713',
+      ),
+    ),
+    194 => 
+    array (
+      'C' => '194',
+      'WX' => '333',
+      'N' => 'acute',
+      'B' => 
+      array (
+        0 => '86',
+        1 => '528',
+        2 => '324',
+        3 => '713',
+      ),
+    ),
+    'acute' => 
+    array (
+      'C' => '194',
+      'WX' => '333',
+      'N' => 'acute',
+      'B' => 
+      array (
+        0 => '86',
+        1 => '528',
+        2 => '324',
+        3 => '713',
+      ),
+    ),
+    195 => 
+    array (
+      'C' => '195',
+      'WX' => '333',
+      'N' => 'circumflex',
+      'B' => 
+      array (
+        0 => '-2',
+        1 => '528',
+        2 => '335',
+        3 => '704',
+      ),
+    ),
+    'circumflex' => 
+    array (
+      'C' => '195',
+      'WX' => '333',
+      'N' => 'circumflex',
+      'B' => 
+      array (
+        0 => '-2',
+        1 => '528',
+        2 => '335',
+        3 => '704',
+      ),
+    ),
+    196 => 
+    array (
+      'C' => '196',
+      'WX' => '333',
+      'N' => 'tilde',
+      'B' => 
+      array (
+        0 => '-16',
+        1 => '547',
+        2 => '349',
+        3 => '674',
+      ),
+    ),
+    'tilde' => 
+    array (
+      'C' => '196',
+      'WX' => '333',
+      'N' => 'tilde',
+      'B' => 
+      array (
+        0 => '-16',
+        1 => '547',
+        2 => '349',
+        3 => '674',
+      ),
+    ),
+    197 => 
+    array (
+      'C' => '197',
+      'WX' => '333',
+      'N' => 'macron',
+      'B' => 
+      array (
+        0 => '1',
+        1 => '565',
+        2 => '331',
+        3 => '637',
+      ),
+    ),
+    'macron' => 
+    array (
+      'C' => '197',
+      'WX' => '333',
+      'N' => 'macron',
+      'B' => 
+      array (
+        0 => '1',
+        1 => '565',
+        2 => '331',
+        3 => '637',
+      ),
+    ),
+    198 => 
+    array (
+      'C' => '198',
+      'WX' => '333',
+      'N' => 'breve',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '528',
+        2 => '318',
+        3 => '691',
+      ),
+    ),
+    'breve' => 
+    array (
+      'C' => '198',
+      'WX' => '333',
+      'N' => 'breve',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '528',
+        2 => '318',
+        3 => '691',
+      ),
+    ),
+    199 => 
+    array (
+      'C' => '199',
+      'WX' => '333',
+      'N' => 'dotaccent',
+      'B' => 
+      array (
+        0 => '103',
+        1 => '536',
+        2 => '258',
+        3 => '691',
+      ),
+    ),
+    'dotaccent' => 
+    array (
+      'C' => '199',
+      'WX' => '333',
+      'N' => 'dotaccent',
+      'B' => 
+      array (
+        0 => '103',
+        1 => '536',
+        2 => '258',
+        3 => '691',
+      ),
+    ),
+    200 => 
+    array (
+      'C' => '200',
+      'WX' => '333',
+      'N' => 'dieresis',
+      'B' => 
+      array (
+        0 => '-2',
+        1 => '537',
+        2 => '335',
+        3 => '667',
+      ),
+    ),
+    'dieresis' => 
+    array (
+      'C' => '200',
+      'WX' => '333',
+      'N' => 'dieresis',
+      'B' => 
+      array (
+        0 => '-2',
+        1 => '537',
+        2 => '335',
+        3 => '667',
+      ),
+    ),
+    202 => 
+    array (
+      'C' => '202',
+      'WX' => '333',
+      'N' => 'ring',
+      'B' => 
+      array (
+        0 => '60',
+        1 => '527',
+        2 => '273',
+        3 => '740',
+      ),
+    ),
+    'ring' => 
+    array (
+      'C' => '202',
+      'WX' => '333',
+      'N' => 'ring',
+      'B' => 
+      array (
+        0 => '60',
+        1 => '527',
+        2 => '273',
+        3 => '740',
+      ),
+    ),
+    203 => 
+    array (
+      'C' => '203',
+      'WX' => '333',
+      'N' => 'cedilla',
+      'B' => 
+      array (
+        0 => '68',
+        1 => '-218',
+        2 => '294',
+        3 => '0',
+      ),
+    ),
+    'cedilla' => 
+    array (
+      'C' => '203',
+      'WX' => '333',
+      'N' => 'cedilla',
+      'B' => 
+      array (
+        0 => '68',
+        1 => '-218',
+        2 => '294',
+        3 => '0',
+      ),
+    ),
+    205 => 
+    array (
+      'C' => '205',
+      'WX' => '333',
+      'N' => 'hungarumlaut',
+      'B' => 
+      array (
+        0 => '-13',
+        1 => '528',
+        2 => '425',
+        3 => '713',
+      ),
+    ),
+    'hungarumlaut' => 
+    array (
+      'C' => '205',
+      'WX' => '333',
+      'N' => 'hungarumlaut',
+      'B' => 
+      array (
+        0 => '-13',
+        1 => '528',
+        2 => '425',
+        3 => '713',
+      ),
+    ),
+    206 => 
+    array (
+      'C' => '206',
+      'WX' => '333',
+      'N' => 'ogonek',
+      'B' => 
+      array (
+        0 => '90',
+        1 => '-193',
+        2 => '319',
+        3 => '24',
+      ),
+    ),
+    'ogonek' => 
+    array (
+      'C' => '206',
+      'WX' => '333',
+      'N' => 'ogonek',
+      'B' => 
+      array (
+        0 => '90',
+        1 => '-193',
+        2 => '319',
+        3 => '24',
+      ),
+    ),
+    207 => 
+    array (
+      'C' => '207',
+      'WX' => '333',
+      'N' => 'caron',
+      'B' => 
+      array (
+        0 => '-2',
+        1 => '528',
+        2 => '335',
+        3 => '704',
+      ),
+    ),
+    'caron' => 
+    array (
+      'C' => '207',
+      'WX' => '333',
+      'N' => 'caron',
+      'B' => 
+      array (
+        0 => '-2',
+        1 => '528',
+        2 => '335',
+        3 => '704',
+      ),
+    ),
+    208 => 
+    array (
+      'C' => '208',
+      'WX' => '1000',
+      'N' => 'emdash',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '181',
+        2 => '1000',
+        3 => '271',
+      ),
+    ),
+    'emdash' => 
+    array (
+      'C' => '208',
+      'WX' => '1000',
+      'N' => 'emdash',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '181',
+        2 => '1000',
+        3 => '271',
+      ),
+    ),
+    225 => 
+    array (
+      'C' => '225',
+      'WX' => '1000',
+      'N' => 'AE',
+      'B' => 
+      array (
+        0 => '4',
+        1 => '0',
+        2 => '951',
+        3 => '676',
+      ),
+    ),
+    'AE' => 
+    array (
+      'C' => '225',
+      'WX' => '1000',
+      'N' => 'AE',
+      'B' => 
+      array (
+        0 => '4',
+        1 => '0',
+        2 => '951',
+        3 => '676',
+      ),
+    ),
+    227 => 
+    array (
+      'C' => '227',
+      'WX' => '300',
+      'N' => 'ordfeminine',
+      'B' => 
+      array (
+        0 => '-1',
+        1 => '397',
+        2 => '301',
+        3 => '688',
+      ),
+    ),
+    'ordfeminine' => 
+    array (
+      'C' => '227',
+      'WX' => '300',
+      'N' => 'ordfeminine',
+      'B' => 
+      array (
+        0 => '-1',
+        1 => '397',
+        2 => '301',
+        3 => '688',
+      ),
+    ),
+    232 => 
+    array (
+      'C' => '232',
+      'WX' => '667',
+      'N' => 'Lslash',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '638',
+        3 => '676',
+      ),
+    ),
+    'Lslash' => 
+    array (
+      'C' => '232',
+      'WX' => '667',
+      'N' => 'Lslash',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '638',
+        3 => '676',
+      ),
+    ),
+    233 => 
+    array (
+      'C' => '233',
+      'WX' => '778',
+      'N' => 'Oslash',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-74',
+        2 => '743',
+        3 => '737',
+      ),
+    ),
+    'Oslash' => 
+    array (
+      'C' => '233',
+      'WX' => '778',
+      'N' => 'Oslash',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-74',
+        2 => '743',
+        3 => '737',
+      ),
+    ),
+    234 => 
+    array (
+      'C' => '234',
+      'WX' => '1000',
+      'N' => 'OE',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '-5',
+        2 => '981',
+        3 => '684',
+      ),
+    ),
+    'OE' => 
+    array (
+      'C' => '234',
+      'WX' => '1000',
+      'N' => 'OE',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '-5',
+        2 => '981',
+        3 => '684',
+      ),
+    ),
+    235 => 
+    array (
+      'C' => '235',
+      'WX' => '330',
+      'N' => 'ordmasculine',
+      'B' => 
+      array (
+        0 => '18',
+        1 => '397',
+        2 => '312',
+        3 => '688',
+      ),
+    ),
+    'ordmasculine' => 
+    array (
+      'C' => '235',
+      'WX' => '330',
+      'N' => 'ordmasculine',
+      'B' => 
+      array (
+        0 => '18',
+        1 => '397',
+        2 => '312',
+        3 => '688',
+      ),
+    ),
+    241 => 
+    array (
+      'C' => '241',
+      'WX' => '722',
+      'N' => 'ae',
+      'B' => 
+      array (
+        0 => '33',
+        1 => '-14',
+        2 => '693',
+        3 => '473',
+      ),
+    ),
+    'ae' => 
+    array (
+      'C' => '241',
+      'WX' => '722',
+      'N' => 'ae',
+      'B' => 
+      array (
+        0 => '33',
+        1 => '-14',
+        2 => '693',
+        3 => '473',
+      ),
+    ),
+    245 => 
+    array (
+      'C' => '245',
+      'WX' => '278',
+      'N' => 'dotlessi',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '255',
+        3 => '461',
+      ),
+    ),
+    'dotlessi' => 
+    array (
+      'C' => '245',
+      'WX' => '278',
+      'N' => 'dotlessi',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '255',
+        3 => '461',
+      ),
+    ),
+    248 => 
+    array (
+      'C' => '248',
+      'WX' => '278',
+      'N' => 'lslash',
+      'B' => 
+      array (
+        0 => '-22',
+        1 => '0',
+        2 => '303',
+        3 => '676',
+      ),
+    ),
+    'lslash' => 
+    array (
+      'C' => '248',
+      'WX' => '278',
+      'N' => 'lslash',
+      'B' => 
+      array (
+        0 => '-22',
+        1 => '0',
+        2 => '303',
+        3 => '676',
+      ),
+    ),
+    249 => 
+    array (
+      'C' => '249',
+      'WX' => '500',
+      'N' => 'oslash',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-92',
+        2 => '476',
+        3 => '549',
+      ),
+    ),
+    'oslash' => 
+    array (
+      'C' => '249',
+      'WX' => '500',
+      'N' => 'oslash',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-92',
+        2 => '476',
+        3 => '549',
+      ),
+    ),
+    250 => 
+    array (
+      'C' => '250',
+      'WX' => '722',
+      'N' => 'oe',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '-14',
+        2 => '696',
+        3 => '473',
+      ),
+    ),
+    'oe' => 
+    array (
+      'C' => '250',
+      'WX' => '722',
+      'N' => 'oe',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '-14',
+        2 => '696',
+        3 => '473',
+      ),
+    ),
+    251 => 
+    array (
+      'C' => '251',
+      'WX' => '556',
+      'N' => 'germandbls',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '-12',
+        2 => '517',
+        3 => '691',
+      ),
+    ),
+    'germandbls' => 
+    array (
+      'C' => '251',
+      'WX' => '556',
+      'N' => 'germandbls',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '-12',
+        2 => '517',
+        3 => '691',
+      ),
+    ),
+    'Idieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'Idieresis',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '0',
+        2 => '370',
+        3 => '877',
+      ),
+    ),
+    'eacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'eacute',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '426',
+        3 => '713',
+      ),
+    ),
+    'abreve' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'abreve',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '488',
+        3 => '691',
+      ),
+    ),
+    'uhungarumlaut' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'uhungarumlaut',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-14',
+        2 => '557',
+        3 => '713',
+      ),
+    ),
+    'ecaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'ecaron',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '426',
+        3 => '704',
+      ),
+    ),
+    'Ydieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ydieresis',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '699',
+        3 => '877',
+      ),
+    ),
+    'divide' => 
+    array (
+      'C' => '-1',
+      'WX' => '570',
+      'N' => 'divide',
+      'B' => 
+      array (
+        0 => '33',
+        1 => '-31',
+        2 => '537',
+        3 => '537',
+      ),
+    ),
+    'Yacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Yacute',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '0',
+        2 => '699',
+        3 => '923',
+      ),
+    ),
+    'Acircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Acircumflex',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '689',
+        3 => '914',
+      ),
+    ),
+    'aacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'aacute',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '488',
+        3 => '713',
+      ),
+    ),
+    'Ucircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ucircumflex',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-19',
+        2 => '701',
+        3 => '914',
+      ),
+    ),
+    'yacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'yacute',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-205',
+        2 => '480',
+        3 => '713',
+      ),
+    ),
+    'scommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'scommaaccent',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-218',
+        2 => '361',
+        3 => '473',
+      ),
+    ),
+    'ecircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'ecircumflex',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '426',
+        3 => '704',
+      ),
+    ),
+    'Uring' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Uring',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-19',
+        2 => '701',
+        3 => '935',
+      ),
+    ),
+    'Udieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Udieresis',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-19',
+        2 => '701',
+        3 => '877',
+      ),
+    ),
+    'aogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'aogonek',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-193',
+        2 => '504',
+        3 => '473',
+      ),
+    ),
+    'Uacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Uacute',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-19',
+        2 => '701',
+        3 => '923',
+      ),
+    ),
+    'uogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'uogonek',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-193',
+        2 => '539',
+        3 => '461',
+      ),
+    ),
+    'Edieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Edieresis',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '641',
+        3 => '877',
+      ),
+    ),
+    'Dcroat' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Dcroat',
+      'B' => 
+      array (
+        0 => '6',
+        1 => '0',
+        2 => '690',
+        3 => '676',
+      ),
+    ),
+    'commaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '250',
+      'N' => 'commaaccent',
+      'B' => 
+      array (
+        0 => '47',
+        1 => '-218',
+        2 => '203',
+        3 => '-50',
+      ),
+    ),
+    'copyright' => 
+    array (
+      'C' => '-1',
+      'WX' => '747',
+      'N' => 'copyright',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '-19',
+        2 => '721',
+        3 => '691',
+      ),
+    ),
+    'Emacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Emacron',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '641',
+        3 => '847',
+      ),
+    ),
+    'ccaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'ccaron',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '430',
+        3 => '704',
+      ),
+    ),
+    'aring' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'aring',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '488',
+        3 => '740',
+      ),
+    ),
+    'Ncommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ncommaaccent',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-188',
+        2 => '701',
+        3 => '676',
+      ),
+    ),
+    'lacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'lacute',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '297',
+        3 => '923',
+      ),
+    ),
+    'agrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'agrave',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '488',
+        3 => '713',
+      ),
+    ),
+    'Tcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Tcommaaccent',
+      'B' => 
+      array (
+        0 => '31',
+        1 => '-218',
+        2 => '636',
+        3 => '676',
+      ),
+    ),
+    'Cacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Cacute',
+      'B' => 
+      array (
+        0 => '49',
+        1 => '-19',
+        2 => '687',
+        3 => '923',
+      ),
+    ),
+    'atilde' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'atilde',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '488',
+        3 => '674',
+      ),
+    ),
+    'Edotaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Edotaccent',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '641',
+        3 => '901',
+      ),
+    ),
+    'scaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'scaron',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '363',
+        3 => '704',
+      ),
+    ),
+    'scedilla' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'scedilla',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-218',
+        2 => '361',
+        3 => '473',
+      ),
+    ),
+    'iacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'iacute',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '289',
+        3 => '713',
+      ),
+    ),
+    'lozenge' => 
+    array (
+      'C' => '-1',
+      'WX' => '494',
+      'N' => 'lozenge',
+      'B' => 
+      array (
+        0 => '10',
+        1 => '0',
+        2 => '484',
+        3 => '745',
+      ),
+    ),
+    'Rcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Rcaron',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '0',
+        2 => '715',
+        3 => '914',
+      ),
+    ),
+    'Gcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '778',
+      'N' => 'Gcommaaccent',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-218',
+        2 => '755',
+        3 => '691',
+      ),
+    ),
+    'ucircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'ucircumflex',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-14',
+        2 => '537',
+        3 => '704',
+      ),
+    ),
+    'acircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'acircumflex',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '488',
+        3 => '704',
+      ),
+    ),
+    'Amacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Amacron',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '689',
+        3 => '847',
+      ),
+    ),
+    'rcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'rcaron',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '0',
+        2 => '434',
+        3 => '704',
+      ),
+    ),
+    'ccedilla' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'ccedilla',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-218',
+        2 => '430',
+        3 => '473',
+      ),
+    ),
+    'Zdotaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Zdotaccent',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '0',
+        2 => '634',
+        3 => '901',
+      ),
+    ),
+    'Thorn' => 
+    array (
+      'C' => '-1',
+      'WX' => '611',
+      'N' => 'Thorn',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '600',
+        3 => '676',
+      ),
+    ),
+    'Omacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '778',
+      'N' => 'Omacron',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-19',
+        2 => '743',
+        3 => '847',
+      ),
+    ),
+    'Racute' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Racute',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '0',
+        2 => '715',
+        3 => '923',
+      ),
+    ),
+    'Sacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'Sacute',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-19',
+        2 => '513',
+        3 => '923',
+      ),
+    ),
+    'dcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '672',
+      'N' => 'dcaron',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '681',
+        3 => '682',
+      ),
+    ),
+    'Umacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Umacron',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-19',
+        2 => '701',
+        3 => '847',
+      ),
+    ),
+    'uring' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'uring',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-14',
+        2 => '537',
+        3 => '740',
+      ),
+    ),
+    'threesuperior' => 
+    array (
+      'C' => '-1',
+      'WX' => '300',
+      'N' => 'threesuperior',
+      'B' => 
+      array (
+        0 => '3',
+        1 => '268',
+        2 => '297',
+        3 => '688',
+      ),
+    ),
+    'Ograve' => 
+    array (
+      'C' => '-1',
+      'WX' => '778',
+      'N' => 'Ograve',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-19',
+        2 => '743',
+        3 => '923',
+      ),
+    ),
+    'Agrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Agrave',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '689',
+        3 => '923',
+      ),
+    ),
+    'Abreve' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Abreve',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '689',
+        3 => '901',
+      ),
+    ),
+    'multiply' => 
+    array (
+      'C' => '-1',
+      'WX' => '570',
+      'N' => 'multiply',
+      'B' => 
+      array (
+        0 => '48',
+        1 => '16',
+        2 => '522',
+        3 => '490',
+      ),
+    ),
+    'uacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'uacute',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-14',
+        2 => '537',
+        3 => '713',
+      ),
+    ),
+    'Tcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Tcaron',
+      'B' => 
+      array (
+        0 => '31',
+        1 => '0',
+        2 => '636',
+        3 => '914',
+      ),
+    ),
+    'partialdiff' => 
+    array (
+      'C' => '-1',
+      'WX' => '494',
+      'N' => 'partialdiff',
+      'B' => 
+      array (
+        0 => '11',
+        1 => '-21',
+        2 => '494',
+        3 => '750',
+      ),
+    ),
+    'ydieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'ydieresis',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-205',
+        2 => '480',
+        3 => '667',
+      ),
+    ),
+    'Nacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Nacute',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-18',
+        2 => '701',
+        3 => '923',
+      ),
+    ),
+    'icircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'icircumflex',
+      'B' => 
+      array (
+        0 => '-37',
+        1 => '0',
+        2 => '300',
+        3 => '704',
+      ),
+    ),
+    'Ecircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Ecircumflex',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '641',
+        3 => '914',
+      ),
+    ),
+    'adieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'adieresis',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '488',
+        3 => '667',
+      ),
+    ),
+    'edieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'edieresis',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '426',
+        3 => '667',
+      ),
+    ),
+    'cacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'cacute',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '430',
+        3 => '713',
+      ),
+    ),
+    'nacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'nacute',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '0',
+        2 => '539',
+        3 => '713',
+      ),
+    ),
+    'umacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'umacron',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-14',
+        2 => '537',
+        3 => '637',
+      ),
+    ),
+    'Ncaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ncaron',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-18',
+        2 => '701',
+        3 => '914',
+      ),
+    ),
+    'Iacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'Iacute',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '0',
+        2 => '370',
+        3 => '923',
+      ),
+    ),
+    'plusminus' => 
+    array (
+      'C' => '-1',
+      'WX' => '570',
+      'N' => 'plusminus',
+      'B' => 
+      array (
+        0 => '33',
+        1 => '0',
+        2 => '537',
+        3 => '506',
+      ),
+    ),
+    'brokenbar' => 
+    array (
+      'C' => '-1',
+      'WX' => '220',
+      'N' => 'brokenbar',
+      'B' => 
+      array (
+        0 => '66',
+        1 => '-143',
+        2 => '154',
+        3 => '707',
+      ),
+    ),
+    'registered' => 
+    array (
+      'C' => '-1',
+      'WX' => '747',
+      'N' => 'registered',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '-19',
+        2 => '721',
+        3 => '691',
+      ),
+    ),
+    'Gbreve' => 
+    array (
+      'C' => '-1',
+      'WX' => '778',
+      'N' => 'Gbreve',
+      'B' => 
+      array (
+        0 => '37',
+        1 => '-19',
+        2 => '755',
+        3 => '901',
+      ),
+    ),
+    'Idotaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'Idotaccent',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '0',
+        2 => '370',
+        3 => '901',
+      ),
+    ),
+    'summation' => 
+    array (
+      'C' => '-1',
+      'WX' => '600',
+      'N' => 'summation',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '-10',
+        2 => '585',
+        3 => '706',
+      ),
+    ),
+    'Egrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Egrave',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '641',
+        3 => '923',
+      ),
+    ),
+    'racute' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'racute',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '0',
+        2 => '434',
+        3 => '713',
+      ),
+    ),
+    'omacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'omacron',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '476',
+        3 => '637',
+      ),
+    ),
+    'Zacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Zacute',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '0',
+        2 => '634',
+        3 => '923',
+      ),
+    ),
+    'Zcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Zcaron',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '0',
+        2 => '634',
+        3 => '914',
+      ),
+    ),
+    'greaterequal' => 
+    array (
+      'C' => '-1',
+      'WX' => '549',
+      'N' => 'greaterequal',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '0',
+        2 => '523',
+        3 => '704',
+      ),
+    ),
+    'Eth' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Eth',
+      'B' => 
+      array (
+        0 => '6',
+        1 => '0',
+        2 => '690',
+        3 => '676',
+      ),
+    ),
+    'Ccedilla' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ccedilla',
+      'B' => 
+      array (
+        0 => '49',
+        1 => '-218',
+        2 => '687',
+        3 => '691',
+      ),
+    ),
+    'lcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'lcommaaccent',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-218',
+        2 => '255',
+        3 => '676',
+      ),
+    ),
+    'tcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '416',
+      'N' => 'tcaron',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '-12',
+        2 => '425',
+        3 => '815',
+      ),
+    ),
+    'eogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'eogonek',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-193',
+        2 => '426',
+        3 => '473',
+      ),
+    ),
+    'Uogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Uogonek',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-193',
+        2 => '701',
+        3 => '676',
+      ),
+    ),
+    'Aacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Aacute',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '689',
+        3 => '923',
+      ),
+    ),
+    'Adieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Adieresis',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '689',
+        3 => '877',
+      ),
+    ),
+    'egrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'egrave',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '426',
+        3 => '713',
+      ),
+    ),
+    'zacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'zacute',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '0',
+        2 => '420',
+        3 => '713',
+      ),
+    ),
+    'iogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'iogonek',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-193',
+        2 => '274',
+        3 => '691',
+      ),
+    ),
+    'Oacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '778',
+      'N' => 'Oacute',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-19',
+        2 => '743',
+        3 => '923',
+      ),
+    ),
+    'oacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'oacute',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '476',
+        3 => '713',
+      ),
+    ),
+    'amacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'amacron',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '488',
+        3 => '637',
+      ),
+    ),
+    'sacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'sacute',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '361',
+        3 => '713',
+      ),
+    ),
+    'idieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'idieresis',
+      'B' => 
+      array (
+        0 => '-37',
+        1 => '0',
+        2 => '300',
+        3 => '667',
+      ),
+    ),
+    'Ocircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '778',
+      'N' => 'Ocircumflex',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-19',
+        2 => '743',
+        3 => '914',
+      ),
+    ),
+    'Ugrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ugrave',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-19',
+        2 => '701',
+        3 => '923',
+      ),
+    ),
+    'Delta' => 
+    array (
+      'C' => '-1',
+      'WX' => '612',
+      'N' => 'Delta',
+      'B' => 
+      array (
+        0 => '6',
+        1 => '0',
+        2 => '608',
+        3 => '688',
+      ),
+    ),
+    'thorn' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'thorn',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '-205',
+        2 => '524',
+        3 => '676',
+      ),
+    ),
+    'twosuperior' => 
+    array (
+      'C' => '-1',
+      'WX' => '300',
+      'N' => 'twosuperior',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '275',
+        2 => '300',
+        3 => '688',
+      ),
+    ),
+    'Odieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '778',
+      'N' => 'Odieresis',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-19',
+        2 => '743',
+        3 => '877',
+      ),
+    ),
+    'mu' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'mu',
+      'B' => 
+      array (
+        0 => '33',
+        1 => '-206',
+        2 => '536',
+        3 => '461',
+      ),
+    ),
+    'igrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'igrave',
+      'B' => 
+      array (
+        0 => '-27',
+        1 => '0',
+        2 => '255',
+        3 => '713',
+      ),
+    ),
+    'ohungarumlaut' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'ohungarumlaut',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '529',
+        3 => '713',
+      ),
+    ),
+    'Eogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Eogonek',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-193',
+        2 => '644',
+        3 => '676',
+      ),
+    ),
+    'dcroat' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'dcroat',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '534',
+        3 => '676',
+      ),
+    ),
+    'threequarters' => 
+    array (
+      'C' => '-1',
+      'WX' => '750',
+      'N' => 'threequarters',
+      'B' => 
+      array (
+        0 => '23',
+        1 => '-12',
+        2 => '733',
+        3 => '688',
+      ),
+    ),
+    'Scedilla' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'Scedilla',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-218',
+        2 => '513',
+        3 => '692',
+      ),
+    ),
+    'lcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '394',
+      'N' => 'lcaron',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '412',
+        3 => '682',
+      ),
+    ),
+    'Kcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '778',
+      'N' => 'Kcommaaccent',
+      'B' => 
+      array (
+        0 => '30',
+        1 => '-218',
+        2 => '769',
+        3 => '676',
+      ),
+    ),
+    'Lacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Lacute',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '638',
+        3 => '923',
+      ),
+    ),
+    'trademark' => 
+    array (
+      'C' => '-1',
+      'WX' => '1000',
+      'N' => 'trademark',
+      'B' => 
+      array (
+        0 => '24',
+        1 => '271',
+        2 => '977',
+        3 => '676',
+      ),
+    ),
+    'edotaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'edotaccent',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '426',
+        3 => '691',
+      ),
+    ),
+    'Igrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'Igrave',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '0',
+        2 => '370',
+        3 => '923',
+      ),
+    ),
+    'Imacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'Imacron',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '0',
+        2 => '370',
+        3 => '847',
+      ),
+    ),
+    'Lcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Lcaron',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '0',
+        2 => '652',
+        3 => '682',
+      ),
+    ),
+    'onehalf' => 
+    array (
+      'C' => '-1',
+      'WX' => '750',
+      'N' => 'onehalf',
+      'B' => 
+      array (
+        0 => '-7',
+        1 => '-12',
+        2 => '775',
+        3 => '688',
+      ),
+    ),
+    'lessequal' => 
+    array (
+      'C' => '-1',
+      'WX' => '549',
+      'N' => 'lessequal',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '0',
+        2 => '526',
+        3 => '704',
+      ),
+    ),
+    'ocircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'ocircumflex',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '476',
+        3 => '704',
+      ),
+    ),
+    'ntilde' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'ntilde',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '0',
+        2 => '539',
+        3 => '674',
+      ),
+    ),
+    'Uhungarumlaut' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Uhungarumlaut',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-19',
+        2 => '701',
+        3 => '923',
+      ),
+    ),
+    'Eacute' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Eacute',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '641',
+        3 => '923',
+      ),
+    ),
+    'emacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'emacron',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '426',
+        3 => '637',
+      ),
+    ),
+    'gbreve' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'gbreve',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-206',
+        2 => '483',
+        3 => '691',
+      ),
+    ),
+    'onequarter' => 
+    array (
+      'C' => '-1',
+      'WX' => '750',
+      'N' => 'onequarter',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-12',
+        2 => '743',
+        3 => '688',
+      ),
+    ),
+    'Scaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'Scaron',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-19',
+        2 => '513',
+        3 => '914',
+      ),
+    ),
+    'Scommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'Scommaaccent',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-218',
+        2 => '513',
+        3 => '692',
+      ),
+    ),
+    'Ohungarumlaut' => 
+    array (
+      'C' => '-1',
+      'WX' => '778',
+      'N' => 'Ohungarumlaut',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-19',
+        2 => '743',
+        3 => '923',
+      ),
+    ),
+    'degree' => 
+    array (
+      'C' => '-1',
+      'WX' => '400',
+      'N' => 'degree',
+      'B' => 
+      array (
+        0 => '57',
+        1 => '402',
+        2 => '343',
+        3 => '688',
+      ),
+    ),
+    'ograve' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'ograve',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '476',
+        3 => '713',
+      ),
+    ),
+    'Ccaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ccaron',
+      'B' => 
+      array (
+        0 => '49',
+        1 => '-19',
+        2 => '687',
+        3 => '914',
+      ),
+    ),
+    'ugrave' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'ugrave',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-14',
+        2 => '537',
+        3 => '713',
+      ),
+    ),
+    'radical' => 
+    array (
+      'C' => '-1',
+      'WX' => '549',
+      'N' => 'radical',
+      'B' => 
+      array (
+        0 => '10',
+        1 => '-46',
+        2 => '512',
+        3 => '850',
+      ),
+    ),
+    'Dcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Dcaron',
+      'B' => 
+      array (
+        0 => '14',
+        1 => '0',
+        2 => '690',
+        3 => '914',
+      ),
+    ),
+    'rcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'rcommaaccent',
+      'B' => 
+      array (
+        0 => '29',
+        1 => '-218',
+        2 => '434',
+        3 => '473',
+      ),
+    ),
+    'Ntilde' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Ntilde',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-18',
+        2 => '701',
+        3 => '884',
+      ),
+    ),
+    'otilde' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'otilde',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '476',
+        3 => '674',
+      ),
+    ),
+    'Rcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Rcommaaccent',
+      'B' => 
+      array (
+        0 => '26',
+        1 => '-218',
+        2 => '715',
+        3 => '676',
+      ),
+    ),
+    'Lcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Lcommaaccent',
+      'B' => 
+      array (
+        0 => '19',
+        1 => '-218',
+        2 => '638',
+        3 => '676',
+      ),
+    ),
+    'Atilde' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Atilde',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '689',
+        3 => '884',
+      ),
+    ),
+    'Aogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Aogonek',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '-193',
+        2 => '699',
+        3 => '690',
+      ),
+    ),
+    'Aring' => 
+    array (
+      'C' => '-1',
+      'WX' => '722',
+      'N' => 'Aring',
+      'B' => 
+      array (
+        0 => '9',
+        1 => '0',
+        2 => '689',
+        3 => '935',
+      ),
+    ),
+    'Otilde' => 
+    array (
+      'C' => '-1',
+      'WX' => '778',
+      'N' => 'Otilde',
+      'B' => 
+      array (
+        0 => '35',
+        1 => '-19',
+        2 => '743',
+        3 => '884',
+      ),
+    ),
+    'zdotaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'zdotaccent',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '0',
+        2 => '420',
+        3 => '691',
+      ),
+    ),
+    'Ecaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '667',
+      'N' => 'Ecaron',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '0',
+        2 => '641',
+        3 => '914',
+      ),
+    ),
+    'Iogonek' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'Iogonek',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '-193',
+        2 => '370',
+        3 => '676',
+      ),
+    ),
+    'kcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'kcommaaccent',
+      'B' => 
+      array (
+        0 => '22',
+        1 => '-218',
+        2 => '543',
+        3 => '676',
+      ),
+    ),
+    'minus' => 
+    array (
+      'C' => '-1',
+      'WX' => '570',
+      'N' => 'minus',
+      'B' => 
+      array (
+        0 => '33',
+        1 => '209',
+        2 => '537',
+        3 => '297',
+      ),
+    ),
+    'Icircumflex' => 
+    array (
+      'C' => '-1',
+      'WX' => '389',
+      'N' => 'Icircumflex',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '0',
+        2 => '370',
+        3 => '914',
+      ),
+    ),
+    'ncaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'ncaron',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '0',
+        2 => '539',
+        3 => '704',
+      ),
+    ),
+    'tcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '333',
+      'N' => 'tcommaaccent',
+      'B' => 
+      array (
+        0 => '20',
+        1 => '-218',
+        2 => '332',
+        3 => '630',
+      ),
+    ),
+    'logicalnot' => 
+    array (
+      'C' => '-1',
+      'WX' => '570',
+      'N' => 'logicalnot',
+      'B' => 
+      array (
+        0 => '33',
+        1 => '108',
+        2 => '537',
+        3 => '399',
+      ),
+    ),
+    'odieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'odieresis',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '476',
+        3 => '667',
+      ),
+    ),
+    'udieresis' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'udieresis',
+      'B' => 
+      array (
+        0 => '16',
+        1 => '-14',
+        2 => '537',
+        3 => '667',
+      ),
+    ),
+    'notequal' => 
+    array (
+      'C' => '-1',
+      'WX' => '549',
+      'N' => 'notequal',
+      'B' => 
+      array (
+        0 => '15',
+        1 => '-49',
+        2 => '540',
+        3 => '570',
+      ),
+    ),
+    'gcommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'gcommaaccent',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '-206',
+        2 => '483',
+        3 => '829',
+      ),
+    ),
+    'eth' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'eth',
+      'B' => 
+      array (
+        0 => '25',
+        1 => '-14',
+        2 => '476',
+        3 => '691',
+      ),
+    ),
+    'zcaron' => 
+    array (
+      'C' => '-1',
+      'WX' => '444',
+      'N' => 'zcaron',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '0',
+        2 => '420',
+        3 => '704',
+      ),
+    ),
+    'ncommaaccent' => 
+    array (
+      'C' => '-1',
+      'WX' => '556',
+      'N' => 'ncommaaccent',
+      'B' => 
+      array (
+        0 => '21',
+        1 => '-218',
+        2 => '539',
+        3 => '473',
+      ),
+    ),
+    'onesuperior' => 
+    array (
+      'C' => '-1',
+      'WX' => '300',
+      'N' => 'onesuperior',
+      'B' => 
+      array (
+        0 => '28',
+        1 => '275',
+        2 => '273',
+        3 => '688',
+      ),
+    ),
+    'imacron' => 
+    array (
+      'C' => '-1',
+      'WX' => '278',
+      'N' => 'imacron',
+      'B' => 
+      array (
+        0 => '-8',
+        1 => '0',
+        2 => '272',
+        3 => '637',
+      ),
+    ),
+    'Euro' => 
+    array (
+      'C' => '-1',
+      'WX' => '500',
+      'N' => 'Euro',
+      'B' => 
+      array (
+        0 => '0',
+        1 => '0',
+        2 => '0',
+        3 => '0',
+      ),
+    ),
+  ),
+  'KPX' => 
+  array (
+    'A' => 
+    array (
+      'C' => '-55',
+      'Cacute' => '-55',
+      'Ccaron' => '-55',
+      'Ccedilla' => '-55',
+      'G' => '-55',
+      'Gbreve' => '-55',
+      'Gcommaaccent' => '-55',
+      'O' => '-45',
+      'Oacute' => '-45',
+      'Ocircumflex' => '-45',
+      'Odieresis' => '-45',
+      'Ograve' => '-45',
+      'Ohungarumlaut' => '-45',
+      'Omacron' => '-45',
+      'Oslash' => '-45',
+      'Otilde' => '-45',
+      'Q' => '-45',
+      'T' => '-95',
+      'Tcaron' => '-95',
+      'Tcommaaccent' => '-95',
+      'U' => '-50',
+      'Uacute' => '-50',
+      'Ucircumflex' => '-50',
+      'Udieresis' => '-50',
+      'Ugrave' => '-50',
+      'Uhungarumlaut' => '-50',
+      'Umacron' => '-50',
+      'Uogonek' => '-50',
+      'Uring' => '-50',
+      'V' => '-145',
+      'W' => '-130',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'p' => '-25',
+      'quoteright' => '-74',
+      'u' => '-50',
+      'uacute' => '-50',
+      'ucircumflex' => '-50',
+      'udieresis' => '-50',
+      'ugrave' => '-50',
+      'uhungarumlaut' => '-50',
+      'umacron' => '-50',
+      'uogonek' => '-50',
+      'uring' => '-50',
+      'v' => '-100',
+      'w' => '-90',
+      'y' => '-74',
+      'yacute' => '-74',
+      'ydieresis' => '-74',
+    ),
+    'Aacute' => 
+    array (
+      'C' => '-55',
+      'Cacute' => '-55',
+      'Ccaron' => '-55',
+      'Ccedilla' => '-55',
+      'G' => '-55',
+      'Gbreve' => '-55',
+      'Gcommaaccent' => '-55',
+      'O' => '-45',
+      'Oacute' => '-45',
+      'Ocircumflex' => '-45',
+      'Odieresis' => '-45',
+      'Ograve' => '-45',
+      'Ohungarumlaut' => '-45',
+      'Omacron' => '-45',
+      'Oslash' => '-45',
+      'Otilde' => '-45',
+      'Q' => '-45',
+      'T' => '-95',
+      'Tcaron' => '-95',
+      'Tcommaaccent' => '-95',
+      'U' => '-50',
+      'Uacute' => '-50',
+      'Ucircumflex' => '-50',
+      'Udieresis' => '-50',
+      'Ugrave' => '-50',
+      'Uhungarumlaut' => '-50',
+      'Umacron' => '-50',
+      'Uogonek' => '-50',
+      'Uring' => '-50',
+      'V' => '-145',
+      'W' => '-130',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'p' => '-25',
+      'quoteright' => '-74',
+      'u' => '-50',
+      'uacute' => '-50',
+      'ucircumflex' => '-50',
+      'udieresis' => '-50',
+      'ugrave' => '-50',
+      'uhungarumlaut' => '-50',
+      'umacron' => '-50',
+      'uogonek' => '-50',
+      'uring' => '-50',
+      'v' => '-100',
+      'w' => '-90',
+      'y' => '-74',
+      'yacute' => '-74',
+      'ydieresis' => '-74',
+    ),
+    'Abreve' => 
+    array (
+      'C' => '-55',
+      'Cacute' => '-55',
+      'Ccaron' => '-55',
+      'Ccedilla' => '-55',
+      'G' => '-55',
+      'Gbreve' => '-55',
+      'Gcommaaccent' => '-55',
+      'O' => '-45',
+      'Oacute' => '-45',
+      'Ocircumflex' => '-45',
+      'Odieresis' => '-45',
+      'Ograve' => '-45',
+      'Ohungarumlaut' => '-45',
+      'Omacron' => '-45',
+      'Oslash' => '-45',
+      'Otilde' => '-45',
+      'Q' => '-45',
+      'T' => '-95',
+      'Tcaron' => '-95',
+      'Tcommaaccent' => '-95',
+      'U' => '-50',
+      'Uacute' => '-50',
+      'Ucircumflex' => '-50',
+      'Udieresis' => '-50',
+      'Ugrave' => '-50',
+      'Uhungarumlaut' => '-50',
+      'Umacron' => '-50',
+      'Uogonek' => '-50',
+      'Uring' => '-50',
+      'V' => '-145',
+      'W' => '-130',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'p' => '-25',
+      'quoteright' => '-74',
+      'u' => '-50',
+      'uacute' => '-50',
+      'ucircumflex' => '-50',
+      'udieresis' => '-50',
+      'ugrave' => '-50',
+      'uhungarumlaut' => '-50',
+      'umacron' => '-50',
+      'uogonek' => '-50',
+      'uring' => '-50',
+      'v' => '-100',
+      'w' => '-90',
+      'y' => '-74',
+      'yacute' => '-74',
+      'ydieresis' => '-74',
+    ),
+    'Acircumflex' => 
+    array (
+      'C' => '-55',
+      'Cacute' => '-55',
+      'Ccaron' => '-55',
+      'Ccedilla' => '-55',
+      'G' => '-55',
+      'Gbreve' => '-55',
+      'Gcommaaccent' => '-55',
+      'O' => '-45',
+      'Oacute' => '-45',
+      'Ocircumflex' => '-45',
+      'Odieresis' => '-45',
+      'Ograve' => '-45',
+      'Ohungarumlaut' => '-45',
+      'Omacron' => '-45',
+      'Oslash' => '-45',
+      'Otilde' => '-45',
+      'Q' => '-45',
+      'T' => '-95',
+      'Tcaron' => '-95',
+      'Tcommaaccent' => '-95',
+      'U' => '-50',
+      'Uacute' => '-50',
+      'Ucircumflex' => '-50',
+      'Udieresis' => '-50',
+      'Ugrave' => '-50',
+      'Uhungarumlaut' => '-50',
+      'Umacron' => '-50',
+      'Uogonek' => '-50',
+      'Uring' => '-50',
+      'V' => '-145',
+      'W' => '-130',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'p' => '-25',
+      'quoteright' => '-74',
+      'u' => '-50',
+      'uacute' => '-50',
+      'ucircumflex' => '-50',
+      'udieresis' => '-50',
+      'ugrave' => '-50',
+      'uhungarumlaut' => '-50',
+      'umacron' => '-50',
+      'uogonek' => '-50',
+      'uring' => '-50',
+      'v' => '-100',
+      'w' => '-90',
+      'y' => '-74',
+      'yacute' => '-74',
+      'ydieresis' => '-74',
+    ),
+    'Adieresis' => 
+    array (
+      'C' => '-55',
+      'Cacute' => '-55',
+      'Ccaron' => '-55',
+      'Ccedilla' => '-55',
+      'G' => '-55',
+      'Gbreve' => '-55',
+      'Gcommaaccent' => '-55',
+      'O' => '-45',
+      'Oacute' => '-45',
+      'Ocircumflex' => '-45',
+      'Odieresis' => '-45',
+      'Ograve' => '-45',
+      'Ohungarumlaut' => '-45',
+      'Omacron' => '-45',
+      'Oslash' => '-45',
+      'Otilde' => '-45',
+      'Q' => '-45',
+      'T' => '-95',
+      'Tcaron' => '-95',
+      'Tcommaaccent' => '-95',
+      'U' => '-50',
+      'Uacute' => '-50',
+      'Ucircumflex' => '-50',
+      'Udieresis' => '-50',
+      'Ugrave' => '-50',
+      'Uhungarumlaut' => '-50',
+      'Umacron' => '-50',
+      'Uogonek' => '-50',
+      'Uring' => '-50',
+      'V' => '-145',
+      'W' => '-130',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'p' => '-25',
+      'quoteright' => '-74',
+      'u' => '-50',
+      'uacute' => '-50',
+      'ucircumflex' => '-50',
+      'udieresis' => '-50',
+      'ugrave' => '-50',
+      'uhungarumlaut' => '-50',
+      'umacron' => '-50',
+      'uogonek' => '-50',
+      'uring' => '-50',
+      'v' => '-100',
+      'w' => '-90',
+      'y' => '-74',
+      'yacute' => '-74',
+      'ydieresis' => '-74',
+    ),
+    'Agrave' => 
+    array (
+      'C' => '-55',
+      'Cacute' => '-55',
+      'Ccaron' => '-55',
+      'Ccedilla' => '-55',
+      'G' => '-55',
+      'Gbreve' => '-55',
+      'Gcommaaccent' => '-55',
+      'O' => '-45',
+      'Oacute' => '-45',
+      'Ocircumflex' => '-45',
+      'Odieresis' => '-45',
+      'Ograve' => '-45',
+      'Ohungarumlaut' => '-45',
+      'Omacron' => '-45',
+      'Oslash' => '-45',
+      'Otilde' => '-45',
+      'Q' => '-45',
+      'T' => '-95',
+      'Tcaron' => '-95',
+      'Tcommaaccent' => '-95',
+      'U' => '-50',
+      'Uacute' => '-50',
+      'Ucircumflex' => '-50',
+      'Udieresis' => '-50',
+      'Ugrave' => '-50',
+      'Uhungarumlaut' => '-50',
+      'Umacron' => '-50',
+      'Uogonek' => '-50',
+      'Uring' => '-50',
+      'V' => '-145',
+      'W' => '-130',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'p' => '-25',
+      'quoteright' => '-74',
+      'u' => '-50',
+      'uacute' => '-50',
+      'ucircumflex' => '-50',
+      'udieresis' => '-50',
+      'ugrave' => '-50',
+      'uhungarumlaut' => '-50',
+      'umacron' => '-50',
+      'uogonek' => '-50',
+      'uring' => '-50',
+      'v' => '-100',
+      'w' => '-90',
+      'y' => '-74',
+      'yacute' => '-74',
+      'ydieresis' => '-74',
+    ),
+    'Amacron' => 
+    array (
+      'C' => '-55',
+      'Cacute' => '-55',
+      'Ccaron' => '-55',
+      'Ccedilla' => '-55',
+      'G' => '-55',
+      'Gbreve' => '-55',
+      'Gcommaaccent' => '-55',
+      'O' => '-45',
+      'Oacute' => '-45',
+      'Ocircumflex' => '-45',
+      'Odieresis' => '-45',
+      'Ograve' => '-45',
+      'Ohungarumlaut' => '-45',
+      'Omacron' => '-45',
+      'Oslash' => '-45',
+      'Otilde' => '-45',
+      'Q' => '-45',
+      'T' => '-95',
+      'Tcaron' => '-95',
+      'Tcommaaccent' => '-95',
+      'U' => '-50',
+      'Uacute' => '-50',
+      'Ucircumflex' => '-50',
+      'Udieresis' => '-50',
+      'Ugrave' => '-50',
+      'Uhungarumlaut' => '-50',
+      'Umacron' => '-50',
+      'Uogonek' => '-50',
+      'Uring' => '-50',
+      'V' => '-145',
+      'W' => '-130',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'p' => '-25',
+      'quoteright' => '-74',
+      'u' => '-50',
+      'uacute' => '-50',
+      'ucircumflex' => '-50',
+      'udieresis' => '-50',
+      'ugrave' => '-50',
+      'uhungarumlaut' => '-50',
+      'umacron' => '-50',
+      'uogonek' => '-50',
+      'uring' => '-50',
+      'v' => '-100',
+      'w' => '-90',
+      'y' => '-74',
+      'yacute' => '-74',
+      'ydieresis' => '-74',
+    ),
+    'Aogonek' => 
+    array (
+      'C' => '-55',
+      'Cacute' => '-55',
+      'Ccaron' => '-55',
+      'Ccedilla' => '-55',
+      'G' => '-55',
+      'Gbreve' => '-55',
+      'Gcommaaccent' => '-55',
+      'O' => '-45',
+      'Oacute' => '-45',
+      'Ocircumflex' => '-45',
+      'Odieresis' => '-45',
+      'Ograve' => '-45',
+      'Ohungarumlaut' => '-45',
+      'Omacron' => '-45',
+      'Oslash' => '-45',
+      'Otilde' => '-45',
+      'Q' => '-45',
+      'T' => '-95',
+      'Tcaron' => '-95',
+      'Tcommaaccent' => '-95',
+      'U' => '-50',
+      'Uacute' => '-50',
+      'Ucircumflex' => '-50',
+      'Udieresis' => '-50',
+      'Ugrave' => '-50',
+      'Uhungarumlaut' => '-50',
+      'Umacron' => '-50',
+      'Uogonek' => '-50',
+      'Uring' => '-50',
+      'V' => '-145',
+      'W' => '-130',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'p' => '-25',
+      'quoteright' => '-74',
+      'u' => '-50',
+      'uacute' => '-50',
+      'ucircumflex' => '-50',
+      'udieresis' => '-50',
+      'ugrave' => '-50',
+      'uhungarumlaut' => '-50',
+      'umacron' => '-50',
+      'uogonek' => '-50',
+      'uring' => '-50',
+      'v' => '-100',
+      'w' => '-90',
+      'y' => '-34',
+      'yacute' => '-34',
+      'ydieresis' => '-34',
+    ),
+    'Aring' => 
+    array (
+      'C' => '-55',
+      'Cacute' => '-55',
+      'Ccaron' => '-55',
+      'Ccedilla' => '-55',
+      'G' => '-55',
+      'Gbreve' => '-55',
+      'Gcommaaccent' => '-55',
+      'O' => '-45',
+      'Oacute' => '-45',
+      'Ocircumflex' => '-45',
+      'Odieresis' => '-45',
+      'Ograve' => '-45',
+      'Ohungarumlaut' => '-45',
+      'Omacron' => '-45',
+      'Oslash' => '-45',
+      'Otilde' => '-45',
+      'Q' => '-45',
+      'T' => '-95',
+      'Tcaron' => '-95',
+      'Tcommaaccent' => '-95',
+      'U' => '-50',
+      'Uacute' => '-50',
+      'Ucircumflex' => '-50',
+      'Udieresis' => '-50',
+      'Ugrave' => '-50',
+      'Uhungarumlaut' => '-50',
+      'Umacron' => '-50',
+      'Uogonek' => '-50',
+      'Uring' => '-50',
+      'V' => '-145',
+      'W' => '-130',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'p' => '-25',
+      'quoteright' => '-74',
+      'u' => '-50',
+      'uacute' => '-50',
+      'ucircumflex' => '-50',
+      'udieresis' => '-50',
+      'ugrave' => '-50',
+      'uhungarumlaut' => '-50',
+      'umacron' => '-50',
+      'uogonek' => '-50',
+      'uring' => '-50',
+      'v' => '-100',
+      'w' => '-90',
+      'y' => '-74',
+      'yacute' => '-74',
+      'ydieresis' => '-74',
+    ),
+    'Atilde' => 
+    array (
+      'C' => '-55',
+      'Cacute' => '-55',
+      'Ccaron' => '-55',
+      'Ccedilla' => '-55',
+      'G' => '-55',
+      'Gbreve' => '-55',
+      'Gcommaaccent' => '-55',
+      'O' => '-45',
+      'Oacute' => '-45',
+      'Ocircumflex' => '-45',
+      'Odieresis' => '-45',
+      'Ograve' => '-45',
+      'Ohungarumlaut' => '-45',
+      'Omacron' => '-45',
+      'Oslash' => '-45',
+      'Otilde' => '-45',
+      'Q' => '-45',
+      'T' => '-95',
+      'Tcaron' => '-95',
+      'Tcommaaccent' => '-95',
+      'U' => '-50',
+      'Uacute' => '-50',
+      'Ucircumflex' => '-50',
+      'Udieresis' => '-50',
+      'Ugrave' => '-50',
+      'Uhungarumlaut' => '-50',
+      'Umacron' => '-50',
+      'Uogonek' => '-50',
+      'Uring' => '-50',
+      'V' => '-145',
+      'W' => '-130',
+      'Y' => '-100',
+      'Yacute' => '-100',
+      'Ydieresis' => '-100',
+      'p' => '-25',
+      'quoteright' => '-74',
+      'u' => '-50',
+      'uacute' => '-50',
+      'ucircumflex' => '-50',
+      'udieresis' => '-50',
+      'ugrave' => '-50',
+      'uhungarumlaut' => '-50',
+      'umacron' => '-50',
+      'uogonek' => '-50',
+      'uring' => '-50',
+      'v' => '-100',
+      'w' => '-90',
+      'y' => '-74',
+      'yacute' => '-74',
+      'ydieresis' => '-74',
+    ),
+    'B' => 
+    array (
+      'A' => '-30',
+      'Aacute' => '-30',
+      'Abreve' => '-30',
+      'Acircumflex' => '-30',
+      'Adieresis' => '-30',
+      'Agrave' => '-30',
+      'Amacron' => '-30',
+      'Aogonek' => '-30',
+      'Aring' => '-30',
+      'Atilde' => '-30',
+      'U' => '-10',
+      'Uacute' => '-10',
+      'Ucircumflex' => '-10',
+      'Udieresis' => '-10',
+      'Ugrave' => '-10',
+      'Uhungarumlaut' => '-10',
+      'Umacron' => '-10',
+      'Uogonek' => '-10',
+      'Uring' => '-10',
+    ),
+    'D' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+      'V' => '-40',
+      'W' => '-40',
+      'Y' => '-40',
+      'Yacute' => '-40',
+      'Ydieresis' => '-40',
+      'period' => '-20',
+    ),
+    'Dcaron' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+      'V' => '-40',
+      'W' => '-40',
+      'Y' => '-40',
+      'Yacute' => '-40',
+      'Ydieresis' => '-40',
+      'period' => '-20',
+    ),
+    'Dcroat' => 
+    array (
+      'A' => '-35',
+      'Aacute' => '-35',
+      'Abreve' => '-35',
+      'Acircumflex' => '-35',
+      'Adieresis' => '-35',
+      'Agrave' => '-35',
+      'Amacron' => '-35',
+      'Aogonek' => '-35',
+      'Aring' => '-35',
+      'Atilde' => '-35',
+      'V' => '-40',
+      'W' => '-40',
+      'Y' => '-40',
+      'Yacute' => '-40',
+      'Ydieresis' => '-40',
+      'period' => '-20',
+    ),
+    'F' => 
+    array (
+      'A' => '-90',
+      'Aacute' => '-90',
+      'Abreve' => '-90',
+      'Acircumflex' => '-90',
+      'Adieresis' => '-90',
+      'Agrave' => '-90',
+      'Amacron' => '-90',
+      'Aogonek' => '-90',
+      'Aring' => '-90',
+      'Atilde' => '-90',
+      'a' => '-25',
+      'aacute' => '-25',
+      'abreve' => '-25',
+      'acircumflex' => '-25',
+      'adieresis' => '-25',
+      'agrave' => '-25',
+      'amacron' => '-25',
+      'aogonek' => '-25',
+      'aring' => '-25',
+      'atilde' => '-25',
+      'comma' => '-92',
+      'e' => '-25',
+      'eacute' => '-25',
+      'ecaron' => '-25',
+      'ecircumflex' => '-25',
+      'edieresis' => '-25',
+      'edotaccent' => '-25',
+      'egrave' => '-25',
+      'emacron' => '-25',
+      'eogonek' => '-25',
+      'o' => '-25',
+      'oacute' => '-25',
+      'ocircumflex' => '-25',
+      'odieresis' => '-25',
+      'ograve' => '-25',
+      'ohungarumlaut' => '-25',
+      'omacron' => '-25',
+      'oslash' => '-25',
+      'otilde' => '-25',
+      'period' => '-110',
+    ),
+    'J' => 
+    array (
+      'A' => '-30',
+      'Aacute' => '-30',
+      'Abreve' => '-30',
+      'Acircumflex' => '-30',
+      'Adieresis' => '-30',
+      'Agrave' => '-30',
+      'Amacron' => '-30',
+      'Aogonek' => '-30',
+      'Aring' => '-30',
+      'Atilde' => '-30',
+      'a' => '-15',
+      'aacute' => '-15',
+      'abreve' => '-15',
+      'acircumflex' => '-15',
+      'adieresis' => '-15',
+      'agrave' => '-15',
+      'amacron' => '-15',
+      'aogonek' => '-15',
+      'aring' => '-15',
+      'atilde' => '-15',
+      'e' => '-15',
+      'eacute' => '-15',
+      'ecaron' => '-15',
+      'ecircumflex' => '-15',
+      'edieresis' => '-15',
+      'edotaccent' => '-15',
+      'egrave' => '-15',
+      'emacron' => '-15',
+      'eogonek' => '-15',
+      'o' => '-15',
+      'oacute' => '-15',
+      'ocircumflex' => '-15',
+      'odieresis' => '-15',
+      'ograve' => '-15',
+      'ohungarumlaut' => '-15',
+      'omacron' => '-15',
+      'oslash' => '-15',
+      'otilde' => '-15',
+      'period' => '-20',
+      'u' => '-15',
+      'uacute' => '-15',
+      'ucircumflex' => '-15',
+      'udieresis' => '-15',
+      'ugrave' => '-15',
+      'uhungarumlaut' => '-15',
+      'umacron' => '-15',
+      'uogonek' => '-15',
+      'uring' => '-15',
+    ),
+    'K' => 
+    array (
+      'O' => '-30',
+      'Oacute' => '-30',
+      'Ocircumflex' => '-30',
+      'Odieresis' => '-30',
+      'Ograve' => '-30',
+      'Ohungarumlaut' => '-30',
+      'Omacron' => '-30',
+      'Oslash' => '-30',
+      'Otilde' => '-30',
+      'e' => '-25',
+      'eacute' => '-25',
+      'ecaron' => '-25',
+      'ecircumflex' => '-25',
+      'edieresis' => '-25',
+      'edotaccent' => '-25',
+      'egrave' => '-25',
+      'emacron' => '-25',
+      'eogonek' => '-25',
+      'o' => '-25',
+      'oacute' => '-25',
+      'ocircumflex' => '-25',
+      'odieresis' => '-25',
+      'ograve' => '-25',
+      'ohungarumlaut' => '-25',
+      'omacron' => '-25',
+      'oslash' => '-25',
+      'otilde' => '-25',
+      'u' => '-15',
+      'uacute' => '-15',
+      'ucircumflex' => '-15',
+      'udieresis' => '-15',
+      'ugrave' => '-15',
+      'uhungarumlaut' => '-15',
+      'umacron' => '-15',
+      'uogonek' => '-15',
+      'uring' => '-15',
+      'y' => '-45',
+      'yacute' => '-45',
+      'ydieresis' => '-45',
+    ),
+    'Kcommaaccent' => 
+    array (
+      'O' => '-30',
+      'Oacute' => '-30',
+      'Ocircumflex' => '-30',
+      'Odieresis' => '-30',
+      'Ograve' => '-30',
+      'Ohungarumlaut' => '-30',
+      'Omacron' => '-30',
+      'Oslash' => '-30',
+      'Otilde' => '-30',
+      'e' => '-25',
+      'eacute' => '-25',
+      'ecaron' => '-25',
+      'ecircumflex' => '-25',
+      'edieresis' => '-25',
+      'edotaccent' => '-25',
+      'egrave' => '-25',
+      'emacron' => '-25',
+      'eogonek' => '-25',
+      'o' => '-25',
+      'oacute' => '-25',
+      'ocircumflex' => '-25',
+      'odieresis' => '-25',
+      'ograve' => '-25',
+      'ohungarumlaut' => '-25',
+      'omacron' => '-25',
+      'oslash' => '-25',
+      'otilde' => '-25',
+      'u' => '-15',
+      'uacute' => '-15',
+      'ucircumflex' => '-15',
+      'udieresis' => '-15',
+      'ugrave' => '-15',
+      'uhungarumlaut' => '-15',
+      'umacron' => '-15',
+      'uogonek' => '-15',
+      'uring' => '-15',
+      'y' => '-45',
+      'yacute' => '-45',
+      'ydieresis' => '-45',
+    ),
+    'L' => 
+    array (
+      'T' => '-92',
+      'Tcaron' => '-92',
+      'Tcommaaccent' => '-92',
+      'V' => '-92',
+      'W' => '-92',
+      'Y' => '-92',
+      'Yacute' => '-92',
+      'Ydieresis' => '-92',
+      'quotedblright' => '-20',
+      'quoteright' => '-110',
+      'y' => '-55',
+      'yacute' => '-55',
+      'ydieresis' => '-55',
+    ),
+    'Lacute' => 
+    array (
+      'T' => '-92',
+      'Tcaron' => '-92',
+      'Tcommaaccent' => '-92',
+      'V' => '-92',
+      'W' => '-92',
+      'Y' => '-92',
+      'Yacute' => '-92',
+      'Ydieresis' => '-92',
+      'quotedblright' => '-20',
+      'quoteright' => '-110',
+      'y' => '-55',
+      'yacute' => '-55',
+      'ydieresis' => '-55',
+    ),
+    'Lcommaaccent' => 
+    array (
+      'T' => '-92',
+      'Tcaron' => '-92',
+      'Tcommaaccent' => '-92',
+      'V' => '-92',
+      'W' => '-92',
+      'Y' => '-92',
+      'Yacute' => '-92',
+      'Ydieresis' => '-92',
+      'quotedblright' => '-20',
+      'quoteright' => '-110',
+      'y' => '-55',
+      'yacute' => '-55',
+      'ydieresis' => '-55',
+    ),
+    'Lslash' => 
+    array (
+      'T' => '-92',
+      'Tcaron' => '-92',
+      'Tcommaaccent' => '-92',
+      'V' => '-92',
+      'W' => '-92',
+      'Y' => '-92',
+      'Yacute' => '-92',
+      'Ydieresis' => '-92',
+      'quotedblright' => '-20',
+      'quoteright' => '-110',
+      'y' => '-55',
+      'yacute' => '-55',
+      'ydieresis' => '-55',
+    ),
+    'N' => 
+    array (
+      'A' => '-20',
+      'Aacute' => '-20',
+      'Abreve' => '-20',
+      'Acircumflex' => '-20',
+      'Adieresis' => '-20',
+      'Agrave' => '-20',
+      'Amacron' => '-20',
+      'Aogonek' => '-20',
+      'Aring' => '-20',
+      'Atilde' => '-20',
+    ),
+    'Nacute' => 
+    array (
+      'A' => '-20',
+      'Aacute' => '-20',
+      'Abreve' => '-20',
+      'Acircumflex' => '-20',
+      'Adieresis' => '-20',
+      'Agrave' => '-20',
+      'Amacron' => '-20',
+      'Aogonek' => '-20',
+      'Aring' => '-20',
+      'Atilde' => '-20',
+    ),
+    'Ncaron' => 
+    array (
+      'A' => '-20',
+      'Aacute' => '-20',
+      'Abreve' => '-20',
+      'Acircumflex' => '-20',
+      'Adieresis' => '-20',
+      'Agrave' => '-20',
+      'Amacron' => '-20',
+      'Aogonek' => '-20',
+      'Aring' => '-20',
+      'Atilde' => '-20',
+    ),
+    'Ncommaaccent' => 
+    array (
+      'A' => '-20',
+      'Aacute' => '-20',
+      'Abreve' => '-20',
+      'Acircumflex' => '-20',
+      'Adieresis' => '-20',
+      'Agrave' => '-20',
+      'Amacron' => '-20',
+      'Aogonek' => '-20',
+      'Aring' => '-20',
+      'Atilde' => '-20',
+    ),
+    'Ntilde' => 
+    array (
+      'A' => '-20',
+      'Aacute' => '-20',
+      'Abreve' => '-20',
+      'Acircumflex' => '-20',
+      'Adieresis' => '-20',
+      'Agrave' => '-20',
+      'Amacron' => '-20',
+      'Aogonek' => '-20',
+      'Aring' => '-20',
+      'Atilde' => '-20',
+    ),
+    'O' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-50',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Oacute' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-50',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Ocircumflex' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-50',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Odieresis' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-50',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Ograve' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-50',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Ohungarumlaut' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-50',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Omacron' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-50',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Oslash' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-50',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'Otilde' => 
+    array (
+      'A' => '-40',
+      'Aacute' => '-40',
+      'Abreve' => '-40',
+      'Acircumflex' => '-40',
+      'Adieresis' => '-40',
+      'Agrave' => '-40',
+      'Amacron' => '-40',
+      'Aogonek' => '-40',
+      'Aring' => '-40',
+      'Atilde' => '-40',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'V' => '-50',
+      'W' => '-50',
+      'X' => '-40',
+      'Y' => '-50',
+      'Yacute' => '-50',
+      'Ydieresis' => '-50',
+    ),
+    'P' => 
+    array (
+      'A' => '-74',
+      'Aacute' => '-74',
+      'Abreve' => '-74',
+      'Acircumflex' => '-74',
+      'Adieresis' => '-74',
+      'Agrave' => '-74',
+      'Amacron' => '-74',
+      'Aogonek' => '-74',
+      'Aring' => '-74',
+      'Atilde' => '-74',
+      'a' => '-10',
+      'aacute' => '-10',
+      'abreve' => '-10',
+      'acircumflex' => '-10',
+      'adieresis' => '-10',
+      'agrave' => '-10',
+      'amacron' => '-10',
+      'aogonek' => '-10',
+      'aring' => '-10',
+      'atilde' => '-10',
+      'comma' => '-92',
+      'e' => '-20',
+      'eacute' => '-20',
+      'ecaron' => '-20',
+      'ecircumflex' => '-20',
+      'edieresis' => '-20',
+      'edotaccent' => '-20',
+      'egrave' => '-20',
+      'emacron' => '-20',
+      'eogonek' => '-20',
+      'o' => '-20',
+      'oacute' => '-20',
+      'ocircumflex' => '-20',
+      'odieresis' => '-20',
+      'ograve' => '-20',
+      'ohungarumlaut' => '-20',
+      'omacron' => '-20',
+      'oslash' => '-20',
+      'otilde' => '-20',
+      'period' => '-110',
+    ),
+    'Q' => 
+    array (
+      'U' => '-10',
+      'Uacute' => '-10',
+      'Ucircumflex' => '-10',
+      'Udieresis' => '-10',
+      'Ugrave' => '-10',
+      'Uhungarumlaut' => '-10',
+      'Umacron' => '-10',
+      'Uogonek' => '-10',
+      'Uring' => '-10',
+      'period' => '-20',
+    ),
+    'R' => 
+    array (
+      'O' => '-30',
+      'Oacute' => '-30',
+      'Ocircumflex' => '-30',
+      'Odieresis' => '-30',
+      'Ograve' => '-30',
+      'Ohungarumlaut' => '-30',
+      'Omacron' => '-30',
+      'Oslash' => '-30',
+      'Otilde' => '-30',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'U' => '-30',
+      'Uacute' => '-30',
+      'Ucircumflex' => '-30',
+      'Udieresis' => '-30',
+      'Ugrave' => '-30',
+      'Uhungarumlaut' => '-30',
+      'Umacron' => '-30',
+      'Uogonek' => '-30',
+      'Uring' => '-30',
+      'V' => '-55',
+      'W' => '-35',
+      'Y' => '-35',
+      'Yacute' => '-35',
+      'Ydieresis' => '-35',
+    ),
+    'Racute' => 
+    array (
+      'O' => '-30',
+      'Oacute' => '-30',
+      'Ocircumflex' => '-30',
+      'Odieresis' => '-30',
+      'Ograve' => '-30',
+      'Ohungarumlaut' => '-30',
+      'Omacron' => '-30',
+      'Oslash' => '-30',
+      'Otilde' => '-30',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'U' => '-30',
+      'Uacute' => '-30',
+      'Ucircumflex' => '-30',
+      'Udieresis' => '-30',
+      'Ugrave' => '-30',
+      'Uhungarumlaut' => '-30',
+      'Umacron' => '-30',
+      'Uogonek' => '-30',
+      'Uring' => '-30',
+      'V' => '-55',
+      'W' => '-35',
+      'Y' => '-35',
+      'Yacute' => '-35',
+      'Ydieresis' => '-35',
+    ),
+    'Rcaron' => 
+    array (
+      'O' => '-30',
+      'Oacute' => '-30',
+      'Ocircumflex' => '-30',
+      'Odieresis' => '-30',
+      'Ograve' => '-30',
+      'Ohungarumlaut' => '-30',
+      'Omacron' => '-30',
+      'Oslash' => '-30',
+      'Otilde' => '-30',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'U' => '-30',
+      'Uacute' => '-30',
+      'Ucircumflex' => '-30',
+      'Udieresis' => '-30',
+      'Ugrave' => '-30',
+      'Uhungarumlaut' => '-30',
+      'Umacron' => '-30',
+      'Uogonek' => '-30',
+      'Uring' => '-30',
+      'V' => '-55',
+      'W' => '-35',
+      'Y' => '-35',
+      'Yacute' => '-35',
+      'Ydieresis' => '-35',
+    ),
+    'Rcommaaccent' => 
+    array (
+      'O' => '-30',
+      'Oacute' => '-30',
+      'Ocircumflex' => '-30',
+      'Odieresis' => '-30',
+      'Ograve' => '-30',
+      'Ohungarumlaut' => '-30',
+      'Omacron' => '-30',
+      'Oslash' => '-30',
+      'Otilde' => '-30',
+      'T' => '-40',
+      'Tcaron' => '-40',
+      'Tcommaaccent' => '-40',
+      'U' => '-30',
+      'Uacute' => '-30',
+      'Ucircumflex' => '-30',
+      'Udieresis' => '-30',
+      'Ugrave' => '-30',
+      'Uhungarumlaut' => '-30',
+      'Umacron' => '-30',
+      'Uogonek' => '-30',
+      'Uring' => '-30',
+      'V' => '-55',
+      'W' => '-35',
+      'Y' => '-35',
+      'Yacute' => '-35',
+      'Ydieresis' => '-35',
+    ),
+    'T' => 
+    array (
+      'A' => '-90',
+      'Aacute' => '-90',
+      'Abreve' => '-90',
+      'Acircumflex' => '-90',
+      'Adieresis' => '-90',
+      'Agrave' => '-90',
+      'Amacron' => '-90',
+      'Aogonek' => '-90',
+      'Aring' => '-90',
+      'Atilde' => '-90',
+      'O' => '-18',
+      'Oacute' => '-18',
+      'Ocircumflex' => '-18',
+      'Odieresis' => '-18',
+      'Ograve' => '-18',
+      'Ohungarumlaut' => '-18',
+      'Omacron' => '-18',
+      'Oslash' => '-18',
+      'Otilde' => '-18',
+      'a' => '-92',
+      'aacute' => '-92',
+      'abreve' => '-52',
+      'acircumflex' => '-52',
+      'adieresis' => '-52',
+      'agrave' => '-52',
+      'amacron' => '-52',
+      'aogonek' => '-92',
+      'aring' => '-92',
+      'atilde' => '-52',
+      'colon' => '-74',
+      'comma' => '-74',
+      'e' => '-92',
+      'eacute' => '-92',
+      'ecaron' => '-92',
+      'ecircumflex' => '-92',
+      'edieresis' => '-52',
+      'edotaccent' => '-92',
+      'egrave' => '-52',
+      'emacron' => '-52',
+      'eogonek' => '-92',
+      'hyphen' => '-92',
+      'i' => '-18',
+      'iacute' => '-18',
+      'iogonek' => '-18',
+      'o' => '-92',
+      'oacute' => '-92',
+      'ocircumflex' => '-92',
+      'odieresis' => '-92',
+      'ograve' => '-92',
+      'ohungarumlaut' => '-92',
+      'omacron' => '-92',
+      'oslash' => '-92',
+      'otilde' => '-92',
+      'period' => '-90',
+      'r' => '-74',
+      'racute' => '-74',
+      'rcaron' => '-74',
+      'rcommaaccent' => '-74',
+      'semicolon' => '-74',
+      'u' => '-92',
+      'uacute' => '-92',
+      'ucircumflex' => '-92',
+      'udieresis' => '-92',
+      'ugrave' => '-92',
+      'uhungarumlaut' => '-92',
+      'umacron' => '-92',
+      'uogonek' => '-92',
+      'uring' => '-92',
+      'w' => '-74',
+      'y' => '-34',
+      'yacute' => '-34',
+      'ydieresis' => '-34',
+    ),
+    'Tcaron' => 
+    array (
+      'A' => '-90',
+      'Aacute' => '-90',
+      'Abreve' => '-90',
+      'Acircumflex' => '-90',
+      'Adieresis' => '-90',
+      'Agrave' => '-90',
+      'Amacron' => '-90',
+      'Aogonek' => '-90',
+      'Aring' => '-90',
+      'Atilde' => '-90',
+      'O' => '-18',
+      'Oacute' => '-18',
+      'Ocircumflex' => '-18',
+      'Odieresis' => '-18',
+      'Ograve' => '-18',
+      'Ohungarumlaut' => '-18',
+      'Omacron' => '-18',
+      'Oslash' => '-18',
+      'Otilde' => '-18',
+      'a' => '-92',
+      'aacute' => '-92',
+      'abreve' => '-52',
+      'acircumflex' => '-52',
+      'adieresis' => '-52',
+      'agrave' => '-52',
+      'amacron' => '-52',
+      'aogonek' => '-92',
+      'aring' => '-92',
+      'atilde' => '-52',
+      'colon' => '-74',
+      'comma' => '-74',
+      'e' => '-92',
+      'eacute' => '-92',
+      'ecaron' => '-92',
+      'ecircumflex' => '-92',
+      'edieresis' => '-52',
+      'edotaccent' => '-92',
+      'egrave' => '-52',
+      'emacron' => '-52',
+      'eogonek' => '-92',
+      'hyphen' => '-92',
+      'i' => '-18',
+      'iacute' => '-18',
+      'iogonek' => '-18',
+      'o' => '-92',
+      'oacute' => '-92',
+      'ocircumflex' => '-92',
+      'odieresis' => '-92',
+      'ograve' => '-92',
+      'ohungarumlaut' => '-92',
+      'omacron' => '-92',
+      'oslash' => '-92',
+      'otilde' => '-92',
+      'period' => '-90',
+      'r' => '-74',
+      'racute' => '-74',
+      'rcaron' => '-74',
+      'rcommaaccent' => '-74',
+      'semicolon' => '-74',
+      'u' => '-92',
+      'uacute' => '-92',
+      'ucircumflex' => '-92',
+      'udieresis' => '-92',
+      'ugrave' => '-92',
+      'uhungarumlaut' => '-92',
+      'umacron' => '-92',
+      'uogonek' => '-92',
+      'uring' => '-92',
+      'w' => '-74',
+      'y' => '-34',
+      'yacute' => '-34',
+      'ydieresis' => '-34',
+    ),
+    'Tcommaaccent' => 
+    array (
+      'A' => '-90',
+      'Aacute' => '-90',
+      'Abreve' => '-90',
+      'Acircumflex' => '-90',
+      'Adieresis' => '-90',
+      'Agrave' => '-90',
+      'Amacron' => '-90',
+      'Aogonek' => '-90',
+      'Aring' => '-90',
+      'Atilde' => '-90',
+      'O' => '-18',
+      'Oacute' => '-18',
+      'Ocircumflex' => '-18',
+      'Odieresis' => '-18',
+      'Ograve' => '-18',
+      'Ohungarumlaut' => '-18',
+      'Omacron' => '-18',
+      'Oslash' => '-18',
+      'Otilde' => '-18',
+      'a' => '-92',
+      'aacute' => '-92',
+      'abreve' => '-52',
+      'acircumflex' => '-52',
+      'adieresis' => '-52',
+      'agrave' => '-52',
+      'amacron' => '-52',
+      'aogonek' => '-92',
+      'aring' => '-92',
+      'atilde' => '-52',
+      'colon' => '-74',
+      'comma' => '-74',
+      'e' => '-92',
+      'eacute' => '-92',
+      'ecaron' => '-92',
+      'ecircumflex' => '-92',
+      'edieresis' => '-52',
+      'edotaccent' => '-92',
+      'egrave' => '-52',
+      'emacron' => '-52',
+      'eogonek' => '-92',
+      'hyphen' => '-92',
+      'i' => '-18',
+      'iacute' => '-18',
+      'iogonek' => '-18',
+      'o' => '-92',
+      'oacute' => '-92',
+      'ocircumflex' => '-92',
+      'odieresis' => '-92',
+      'ograve' => '-92',
+      'ohungarumlaut' => '-92',
+      'omacron' => '-92',
+      'oslash' => '-92',
+      'otilde' => '-92',
+      'period' => '-90',
+      'r' => '-74',
+      'racute' => '-74',
+      'rcaron' => '-74',
+      'rcommaaccent' => '-74',
+      'semicolon' => '-74',
+      'u' => '-92',
+      'uacute' => '-92',
+      'ucircumflex' => '-92',
+      'udieresis' => '-92',
+      'ugrave' => '-92',
+      'uhungarumlaut' => '-92',
+      'umacron' => '-92',
+      'uogonek' => '-92',
+      'uring' => '-92',
+      'w' => '-74',
+      'y' => '-34',
+      'yacute' => '-34',
+      'ydieresis' => '-34',
+    ),
+    'U' => 
+    array (
+      'A' => '-60',
+      'Aacute' => '-60',
+      'Abreve' => '-60',
+      'Acircumflex' => '-60',
+      'Adieresis' => '-60',
+      'Agrave' => '-60',
+      'Amacron' => '-60',
+      'Aogonek' => '-60',
+      'Aring' => '-60',
+      'Atilde' => '-60',
+      'comma' => '-50',
+      'period' => '-50',
+    ),
+    'Uacute' => 
+    array (
+      'A' => '-60',
+      'Aacute' => '-60',
+      'Abreve' => '-60',
+      'Acircumflex' => '-60',
+      'Adieresis' => '-60',
+      'Agrave' => '-60',
+      'Amacron' => '-60',
+      'Aogonek' => '-60',
+      'Aring' => '-60',
+      'Atilde' => '-60',
+      'comma' => '-50',
+      'period' => '-50',
+    ),
+    'Ucircumflex' => 
+    array (
+      'A' => '-60',
+      'Aacute' => '-60',
+      'Abreve' => '-60',
+      'Acircumflex' => '-60',
+      'Adieresis' => '-60',
+      'Agrave' => '-60',
+      'Amacron' => '-60',
+      'Aogonek' => '-60',
+      'Aring' => '-60',
+      'Atilde' => '-60',
+      'comma' => '-50',
+      'period' => '-50',
+    ),
+    'Udieresis' => 
+    array (
+      'A' => '-60',
+      'Aacute' => '-60',
+      'Abreve' => '-60',
+      'Acircumflex' => '-60',
+      'Adieresis' => '-60',
+      'Agrave' => '-60',
+      'Amacron' => '-60',
+      'Aogonek' => '-60',
+      'Aring' => '-60',
+      'Atilde' => '-60',
+      'comma' => '-50',
+      'period' => '-50',
+    ),
+    'Ugrave' => 
+    array (
+      'A' => '-60',
+      'Aacute' => '-60',
+      'Abreve' => '-60',
+      'Acircumflex' => '-60',
+      'Adieresis' => '-60',
+      'Agrave' => '-60',
+      'Amacron' => '-60',
+      'Aogonek' => '-60',
+      'Aring' => '-60',
+      'Atilde' => '-60',
+      'comma' => '-50',
+      'period' => '-50',
+    ),
+    'Uhungarumlaut' => 
+    array (
+      'A' => '-60',
+      'Aacute' => '-60',
+      'Abreve' => '-60',
+      'Acircumflex' => '-60',
+      'Adieresis' => '-60',
+      'Agrave' => '-60',
+      'Amacron' => '-60',
+      'Aogonek' => '-60',
+      'Aring' => '-60',
+      'Atilde' => '-60',
+      'comma' => '-50',
+      'period' => '-50',
+    ),
+    'Umacron' => 
+    array (
+      'A' => '-60',
+      'Aacute' => '-60',
+      'Abreve' => '-60',
+      'Acircumflex' => '-60',
+      'Adieresis' => '-60',
+      'Agrave' => '-60',
+      'Amacron' => '-60',
+      'Aogonek' => '-60',
+      'Aring' => '-60',
+      'Atilde' => '-60',
+      'comma' => '-50',
+      'period' => '-50',
+    ),
+    'Uogonek' => 
+    array (
+      'A' => '-60',
+      'Aacute' => '-60',
+      'Abreve' => '-60',
+      'Acircumflex' => '-60',
+      'Adieresis' => '-60',
+      'Agrave' => '-60',
+      'Amacron' => '-60',
+      'Aogonek' => '-60',
+      'Aring' => '-60',
+      'Atilde' => '-60',
+      'comma' => '-50',
+      'period' => '-50',
+    ),
+    'Uring' => 
+    array (
+      'A' => '-60',
+      'Aacute' => '-60',
+      'Abreve' => '-60',
+      'Acircumflex' => '-60',
+      'Adieresis' => '-60',
+      'Agrave' => '-60',
+      'Amacron' => '-60',
+      'Aogonek' => '-60',
+      'Aring' => '-60',
+      'Atilde' => '-60',
+      'comma' => '-50',
+      'period' => '-50',
+    ),
+    'V' => 
+    array (
+      'A' => '-135',
+      'Aacute' => '-135',
+      'Abreve' => '-135',
+      'Acircumflex' => '-135',
+      'Adieresis' => '-135',
+      'Agrave' => '-135',
+      'Amacron' => '-135',
+      'Aogonek' => '-135',
+      'Aring' => '-135',
+      'Atilde' => '-135',
+      'G' => '-30',
+      'Gbreve' => '-30',
+      'Gcommaaccent' => '-30',
+      'O' => '-45',
+      'Oacute' => '-45',
+      'Ocircumflex' => '-45',
+      'Odieresis' => '-45',
+      'Ograve' => '-45',
+      'Ohungarumlaut' => '-45',
+      'Omacron' => '-45',
+      'Oslash' => '-45',
+      'Otilde' => '-45',
+      'a' => '-92',
+      'aacute' => '-92',
+      'abreve' => '-92',
+      'acircumflex' => '-92',
+      'adieresis' => '-92',
+      'agrave' => '-92',
+      'amacron' => '-92',
+      'aogonek' => '-92',
+      'aring' => '-92',
+      'atilde' => '-92',
+      'colon' => '-92',
+      'comma' => '-129',
+      'e' => '-100',
+      'eacute' => '-100',
+      'ecaron' => '-100',
+      'ecircumflex' => '-100',
+      'edieresis' => '-100',
+      'edotaccent' => '-100',
+      'egrave' => '-100',
+      'emacron' => '-100',
+      'eogonek' => '-100',
+      'hyphen' => '-74',
+      'i' => '-37',
+      'iacute' => '-37',
+      'icircumflex' => '-37',
+      'idieresis' => '-37',
+      'igrave' => '-37',
+      'imacron' => '-37',
+      'iogonek' => '-37',
+      'o' => '-100',
+      'oacute' => '-100',
+      'ocircumflex' => '-100',
+      'odieresis' => '-100',
+      'ograve' => '-100',
+      'ohungarumlaut' => '-100',
+      'omacron' => '-100',
+      'oslash' => '-100',
+      'otilde' => '-100',
+      'period' => '-145',
+      'semicolon' => '-92',
+      'u' => '-92',
+      'uacute' => '-92',
+      'ucircumflex' => '-92',
+      'udieresis' => '-92',
+      'ugrave' => '-92',
+      'uhungarumlaut' => '-92',
+      'umacron' => '-92',
+      'uogonek' => '-92',
+      'uring' => '-92',
+    ),
+    'W' => 
+    array (
+      'A' => '-120',
+      'Aacute' => '-120',
+      'Abreve' => '-120',
+      'Acircumflex' => '-120',
+      'Adieresis' => '-120',
+      'Agrave' => '-120',
+      'Amacron' => '-120',
+      'Aogonek' => '-120',
+      'Aring' => '-120',
+      'Atilde' => '-120',
+      'O' => '-10',
+      'Oacute' => '-10',
+      'Ocircumflex' => '-10',
+      'Odieresis' => '-10',
+      'Ograve' => '-10',
+      'Ohungarumlaut' => '-10',
+      'Omacron' => '-10',
+      'Oslash' => '-10',
+      'Otilde' => '-10',
+      'a' => '-65',
+      'aacute' => '-65',
+      'abreve' => '-65',
+      'acircumflex' => '-65',
+      'adieresis' => '-65',
+      'agrave' => '-65',
+      'amacron' => '-65',
+      'aogonek' => '-65',
+      'aring' => '-65',
+      'atilde' => '-65',
+      'colon' => '-55',
+      'comma' => '-92',
+      'e' => '-65',
+      'eacute' => '-65',
+      'ecaron' => '-65',
+      'ecircumflex' => '-65',
+      'edieresis' => '-65',
+      'edotaccent' => '-65',
+      'egrave' => '-65',
+      'emacron' => '-65',
+      'eogonek' => '-65',
+      'hyphen' => '-37',
+      'i' => '-18',
+      'iacute' => '-18',
+      'iogonek' => '-18',
+      'o' => '-75',
+      'oacute' => '-75',
+      'ocircumflex' => '-75',
+      'odieresis' => '-75',
+      'ograve' => '-75',
+      'ohungarumlaut' => '-75',
+      'omacron' => '-75',
+      'oslash' => '-75',
+      'otilde' => '-75',
+      'period' => '-92',
+      'semicolon' => '-55',
+      'u' => '-50',
+      'uacute' => '-50',
+      'ucircumflex' => '-50',
+      'udieresis' => '-50',
+      'ugrave' => '-50',
+      'uhungarumlaut' => '-50',
+      'umacron' => '-50',
+      'uogonek' => '-50',
+      'uring' => '-50',
+      'y' => '-60',
+      'yacute' => '-60',
+      'ydieresis' => '-60',
+    ),
+    'Y' => 
+    array (
+      'A' => '-110',
+      'Aacute' => '-110',
+      'Abreve' => '-110',
+      'Acircumflex' => '-110',
+      'Adieresis' => '-110',
+      'Agrave' => '-110',
+      'Amacron' => '-110',
+      'Aogonek' => '-110',
+      'Aring' => '-110',
+      'Atilde' => '-110',
+      'O' => '-35',
+      'Oacute' => '-35',
+      'Ocircumflex' => '-35',
+      'Odieresis' => '-35',
+      'Ograve' => '-35',
+      'Ohungarumlaut' => '-35',
+      'Omacron' => '-35',
+      'Oslash' => '-35',
+      'Otilde' => '-35',
+      'a' => '-85',
+      'aacute' => '-85',
+      'abreve' => '-85',
+      'acircumflex' => '-85',
+      'adieresis' => '-85',
+      'agrave' => '-85',
+      'amacron' => '-85',
+      'aogonek' => '-85',
+      'aring' => '-85',
+      'atilde' => '-85',
+      'colon' => '-92',
+      'comma' => '-92',
+      'e' => '-111',
+      'eacute' => '-111',
+      'ecaron' => '-111',
+      'ecircumflex' => '-111',
+      'edieresis' => '-71',
+      'edotaccent' => '-111',
+      'egrave' => '-71',
+      'emacron' => '-71',
+      'eogonek' => '-111',
+      'hyphen' => '-92',
+      'i' => '-37',
+      'iacute' => '-37',
+      'iogonek' => '-37',
+      'o' => '-111',
+      'oacute' => '-111',
+      'ocircumflex' => '-111',
+      'odieresis' => '-111',
+      'ograve' => '-111',
+      'ohungarumlaut' => '-111',
+      'omacron' => '-111',
+      'oslash' => '-111',
+      'otilde' => '-111',
+      'period' => '-92',
+      'semicolon' => '-92',
+      'u' => '-92',
+      'uacute' => '-92',
+      'ucircumflex' => '-92',
+      'udieresis' => '-92',
+      'ugrave' => '-92',
+      'uhungarumlaut' => '-92',
+      'umacron' => '-92',
+      'uogonek' => '-92',
+      'uring' => '-92',
+    ),
+    'Yacute' => 
+    array (
+      'A' => '-110',
+      'Aacute' => '-110',
+      'Abreve' => '-110',
+      'Acircumflex' => '-110',
+      'Adieresis' => '-110',
+      'Agrave' => '-110',
+      'Amacron' => '-110',
+      'Aogonek' => '-110',
+      'Aring' => '-110',
+      'Atilde' => '-110',
+      'O' => '-35',
+      'Oacute' => '-35',
+      'Ocircumflex' => '-35',
+      'Odieresis' => '-35',
+      'Ograve' => '-35',
+      'Ohungarumlaut' => '-35',
+      'Omacron' => '-35',
+      'Oslash' => '-35',
+      'Otilde' => '-35',
+      'a' => '-85',
+      'aacute' => '-85',
+      'abreve' => '-85',
+      'acircumflex' => '-85',
+      'adieresis' => '-85',
+      'agrave' => '-85',
+      'amacron' => '-85',
+      'aogonek' => '-85',
+      'aring' => '-85',
+      'atilde' => '-85',
+      'colon' => '-92',
+      'comma' => '-92',
+      'e' => '-111',
+      'eacute' => '-111',
+      'ecaron' => '-111',
+      'ecircumflex' => '-111',
+      'edieresis' => '-71',
+      'edotaccent' => '-111',
+      'egrave' => '-71',
+      'emacron' => '-71',
+      'eogonek' => '-111',
+      'hyphen' => '-92',
+      'i' => '-37',
+      'iacute' => '-37',
+      'iogonek' => '-37',
+      'o' => '-111',
+      'oacute' => '-111',
+      'ocircumflex' => '-111',
+      'odieresis' => '-111',
+      'ograve' => '-111',
+      'ohungarumlaut' => '-111',
+      'omacron' => '-111',
+      'oslash' => '-111',
+      'otilde' => '-111',
+      'period' => '-92',
+      'semicolon' => '-92',
+      'u' => '-92',
+      'uacute' => '-92',
+      'ucircumflex' => '-92',
+      'udieresis' => '-92',
+      'ugrave' => '-92',
+      'uhungarumlaut' => '-92',
+      'umacron' => '-92',
+      'uogonek' => '-92',
+      'uring' => '-92',
+    ),
+    'Ydieresis' => 
+    array (
+      'A' => '-110',
+      'Aacute' => '-110',
+      'Abreve' => '-110',
+      'Acircumflex' => '-110',
+      'Adieresis' => '-110',
+      'Agrave' => '-110',
+      'Amacron' => '-110',
+      'Aogonek' => '-110',
+      'Aring' => '-110',
+      'Atilde' => '-110',
+      'O' => '-35',
+      'Oacute' => '-35',
+      'Ocircumflex' => '-35',
+      'Odieresis' => '-35',
+      'Ograve' => '-35',
+      'Ohungarumlaut' => '-35',
+      'Omacron' => '-35',
+      'Oslash' => '-35',
+      'Otilde' => '-35',
+      'a' => '-85',
+      'aacute' => '-85',
+      'abreve' => '-85',
+      'acircumflex' => '-85',
+      'adieresis' => '-85',
+      'agrave' => '-85',
+      'amacron' => '-85',
+      'aogonek' => '-85',
+      'aring' => '-85',
+      'atilde' => '-85',
+      'colon' => '-92',
+      'comma' => '-92',
+      'e' => '-111',
+      'eacute' => '-111',
+      'ecaron' => '-111',
+      'ecircumflex' => '-111',
+      'edieresis' => '-71',
+      'edotaccent' => '-111',
+      'egrave' => '-71',
+      'emacron' => '-71',
+      'eogonek' => '-111',
+      'hyphen' => '-92',
+      'i' => '-37',
+      'iacute' => '-37',
+      'iogonek' => '-37',
+      'o' => '-111',
+      'oacute' => '-111',
+      'ocircumflex' => '-111',
+      'odieresis' => '-111',
+      'ograve' => '-111',
+      'ohungarumlaut' => '-111',
+      'omacron' => '-111',
+      'oslash' => '-111',
+      'otilde' => '-111',
+      'period' => '-92',
+      'semicolon' => '-92',
+      'u' => '-92',
+      'uacute' => '-92',
+      'ucircumflex' => '-92',
+      'udieresis' => '-92',
+      'ugrave' => '-92',
+      'uhungarumlaut' => '-92',
+      'umacron' => '-92',
+      'uogonek' => '-92',
+      'uring' => '-92',
+    ),
+    'a' => 
+    array (
+      'v' => '-25',
+    ),
+    'aacute' => 
+    array (
+      'v' => '-25',
+    ),
+    'abreve' => 
+    array (
+      'v' => '-25',
+    ),
+    'acircumflex' => 
+    array (
+      'v' => '-25',
+    ),
+    'adieresis' => 
+    array (
+      'v' => '-25',
+    ),
+    'agrave' => 
+    array (
+      'v' => '-25',
+    ),
+    'amacron' => 
+    array (
+      'v' => '-25',
+    ),
+    'aogonek' => 
+    array (
+      'v' => '-25',
+    ),
+    'aring' => 
+    array (
+      'v' => '-25',
+    ),
+    'atilde' => 
+    array (
+      'v' => '-25',
+    ),
+    'b' => 
+    array (
+      'b' => '-10',
+      'period' => '-40',
+      'u' => '-20',
+      'uacute' => '-20',
+      'ucircumflex' => '-20',
+      'udieresis' => '-20',
+      'ugrave' => '-20',
+      'uhungarumlaut' => '-20',
+      'umacron' => '-20',
+      'uogonek' => '-20',
+      'uring' => '-20',
+      'v' => '-15',
+    ),
+    'comma' => 
+    array (
+      'quotedblright' => '-45',
+      'quoteright' => '-55',
+    ),
+    'd' => 
+    array (
+      'w' => '-15',
+    ),
+    'dcroat' => 
+    array (
+      'w' => '-15',
+    ),
+    'e' => 
+    array (
+      'v' => '-15',
+    ),
+    'eacute' => 
+    array (
+      'v' => '-15',
+    ),
+    'ecaron' => 
+    array (
+      'v' => '-15',
+    ),
+    'ecircumflex' => 
+    array (
+      'v' => '-15',
+    ),
+    'edieresis' => 
+    array (
+      'v' => '-15',
+    ),
+    'edotaccent' => 
+    array (
+      'v' => '-15',
+    ),
+    'egrave' => 
+    array (
+      'v' => '-15',
+    ),
+    'emacron' => 
+    array (
+      'v' => '-15',
+    ),
+    'eogonek' => 
+    array (
+      'v' => '-15',
+    ),
+    'f' => 
+    array (
+      'comma' => '-15',
+      'dotlessi' => '-35',
+      'i' => '-25',
+      'o' => '-25',
+      'oacute' => '-25',
+      'ocircumflex' => '-25',
+      'odieresis' => '-25',
+      'ograve' => '-25',
+      'ohungarumlaut' => '-25',
+      'omacron' => '-25',
+      'oslash' => '-25',
+      'otilde' => '-25',
+      'period' => '-15',
+      'quotedblright' => '50',
+      'quoteright' => '55',
+    ),
+    'g' => 
+    array (
+      'period' => '-15',
+    ),
+    'gbreve' => 
+    array (
+      'period' => '-15',
+    ),
+    'gcommaaccent' => 
+    array (
+      'period' => '-15',
+    ),
+    'h' => 
+    array (
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'i' => 
+    array (
+      'v' => '-10',
+    ),
+    'iacute' => 
+    array (
+      'v' => '-10',
+    ),
+    'icircumflex' => 
+    array (
+      'v' => '-10',
+    ),
+    'idieresis' => 
+    array (
+      'v' => '-10',
+    ),
+    'igrave' => 
+    array (
+      'v' => '-10',
+    ),
+    'imacron' => 
+    array (
+      'v' => '-10',
+    ),
+    'iogonek' => 
+    array (
+      'v' => '-10',
+    ),
+    'k' => 
+    array (
+      'e' => '-10',
+      'eacute' => '-10',
+      'ecaron' => '-10',
+      'ecircumflex' => '-10',
+      'edieresis' => '-10',
+      'edotaccent' => '-10',
+      'egrave' => '-10',
+      'emacron' => '-10',
+      'eogonek' => '-10',
+      'o' => '-15',
+      'oacute' => '-15',
+      'ocircumflex' => '-15',
+      'odieresis' => '-15',
+      'ograve' => '-15',
+      'ohungarumlaut' => '-15',
+      'omacron' => '-15',
+      'oslash' => '-15',
+      'otilde' => '-15',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'kcommaaccent' => 
+    array (
+      'e' => '-10',
+      'eacute' => '-10',
+      'ecaron' => '-10',
+      'ecircumflex' => '-10',
+      'edieresis' => '-10',
+      'edotaccent' => '-10',
+      'egrave' => '-10',
+      'emacron' => '-10',
+      'eogonek' => '-10',
+      'o' => '-15',
+      'oacute' => '-15',
+      'ocircumflex' => '-15',
+      'odieresis' => '-15',
+      'ograve' => '-15',
+      'ohungarumlaut' => '-15',
+      'omacron' => '-15',
+      'oslash' => '-15',
+      'otilde' => '-15',
+      'y' => '-15',
+      'yacute' => '-15',
+      'ydieresis' => '-15',
+    ),
+    'n' => 
+    array (
+      'v' => '-40',
+    ),
+    'nacute' => 
+    array (
+      'v' => '-40',
+    ),
+    'ncaron' => 
+    array (
+      'v' => '-40',
+    ),
+    'ncommaaccent' => 
+    array (
+      'v' => '-40',
+    ),
+    'ntilde' => 
+    array (
+      'v' => '-40',
+    ),
+    'o' => 
+    array (
+      'v' => '-10',
+      'w' => '-10',
+    ),
+    'oacute' => 
+    array (
+      'v' => '-10',
+      'w' => '-10',
+    ),
+    'ocircumflex' => 
+    array (
+      'v' => '-10',
+      'w' => '-10',
+    ),
+    'odieresis' => 
+    array (
+      'v' => '-10',
+      'w' => '-10',
+    ),
+    'ograve' => 
+    array (
+      'v' => '-10',
+      'w' => '-10',
+    ),
+    'ohungarumlaut' => 
+    array (
+      'v' => '-10',
+      'w' => '-10',
+    ),
+    'omacron' => 
+    array (
+      'v' => '-10',
+      'w' => '-10',
+    ),
+    'oslash' => 
+    array (
+      'v' => '-10',
+      'w' => '-10',
+    ),
+    'otilde' => 
+    array (
+      'v' => '-10',
+      'w' => '-10',
+    ),
+    'period' => 
+    array (
+      'quotedblright' => '-55',
+      'quoteright' => '-55',
+    ),
+    'quotedblleft' => 
+    array (
+      'A' => '-10',
+      'Aacute' => '-10',
+      'Abreve' => '-10',
+      'Acircumflex' => '-10',
+      'Adieresis' => '-10',
+      'Agrave' => '-10',
+      'Amacron' => '-10',
+      'Aogonek' => '-10',
+      'Aring' => '-10',
+      'Atilde' => '-10',
+    ),
+    'quoteleft' => 
+    array (
+      'A' => '-10',
+      'Aacute' => '-10',
+      'Abreve' => '-10',
+      'Acircumflex' => '-10',
+      'Adieresis' => '-10',
+      'Agrave' => '-10',
+      'Amacron' => '-10',
+      'Aogonek' => '-10',
+      'Aring' => '-10',
+      'Atilde' => '-10',
+      'quoteleft' => '-63',
+    ),
+    'quoteright' => 
+    array (
+      'd' => '-20',
+      'dcroat' => '-20',
+      'quoteright' => '-63',
+      'r' => '-20',
+      'racute' => '-20',
+      'rcaron' => '-20',
+      'rcommaaccent' => '-20',
+      's' => '-37',
+      'sacute' => '-37',
+      'scaron' => '-37',
+      'scedilla' => '-37',
+      'scommaaccent' => '-37',
+      'space' => '-74',
+      'v' => '-20',
+    ),
+    'r' => 
+    array (
+      'c' => '-18',
+      'cacute' => '-18',
+      'ccaron' => '-18',
+      'ccedilla' => '-18',
+      'comma' => '-92',
+      'e' => '-18',
+      'eacute' => '-18',
+      'ecaron' => '-18',
+      'ecircumflex' => '-18',
+      'edieresis' => '-18',
+      'edotaccent' => '-18',
+      'egrave' => '-18',
+      'emacron' => '-18',
+      'eogonek' => '-18',
+      'g' => '-10',
+      'gbreve' => '-10',
+      'gcommaaccent' => '-10',
+      'hyphen' => '-37',
+      'n' => '-15',
+      'nacute' => '-15',
+      'ncaron' => '-15',
+      'ncommaaccent' => '-15',
+      'ntilde' => '-15',
+      'o' => '-18',
+      'oacute' => '-18',
+      'ocircumflex' => '-18',
+      'odieresis' => '-18',
+      'ograve' => '-18',
+      'ohungarumlaut' => '-18',
+      'omacron' => '-18',
+      'oslash' => '-18',
+      'otilde' => '-18',
+      'p' => '-10',
+      'period' => '-100',
+      'q' => '-18',
+      'v' => '-10',
+    ),
+    'racute' => 
+    array (
+      'c' => '-18',
+      'cacute' => '-18',
+      'ccaron' => '-18',
+      'ccedilla' => '-18',
+      'comma' => '-92',
+      'e' => '-18',
+      'eacute' => '-18',
+      'ecaron' => '-18',
+      'ecircumflex' => '-18',
+      'edieresis' => '-18',
+      'edotaccent' => '-18',
+      'egrave' => '-18',
+      'emacron' => '-18',
+      'eogonek' => '-18',
+      'g' => '-10',
+      'gbreve' => '-10',
+      'gcommaaccent' => '-10',
+      'hyphen' => '-37',
+      'n' => '-15',
+      'nacute' => '-15',
+      'ncaron' => '-15',
+      'ncommaaccent' => '-15',
+      'ntilde' => '-15',
+      'o' => '-18',
+      'oacute' => '-18',
+      'ocircumflex' => '-18',
+      'odieresis' => '-18',
+      'ograve' => '-18',
+      'ohungarumlaut' => '-18',
+      'omacron' => '-18',
+      'oslash' => '-18',
+      'otilde' => '-18',
+      'p' => '-10',
+      'period' => '-100',
+      'q' => '-18',
+      'v' => '-10',
+    ),
+    'rcaron' => 
+    array (
+      'c' => '-18',
+      'cacute' => '-18',
+      'ccaron' => '-18',
+      'ccedilla' => '-18',
+      'comma' => '-92',
+      'e' => '-18',
+      'eacute' => '-18',
+      'ecaron' => '-18',
+      'ecircumflex' => '-18',
+      'edieresis' => '-18',
+      'edotaccent' => '-18',
+      'egrave' => '-18',
+      'emacron' => '-18',
+      'eogonek' => '-18',
+      'g' => '-10',
+      'gbreve' => '-10',
+      'gcommaaccent' => '-10',
+      'hyphen' => '-37',
+      'n' => '-15',
+      'nacute' => '-15',
+      'ncaron' => '-15',
+      'ncommaaccent' => '-15',
+      'ntilde' => '-15',
+      'o' => '-18',
+      'oacute' => '-18',
+      'ocircumflex' => '-18',
+      'odieresis' => '-18',
+      'ograve' => '-18',
+      'ohungarumlaut' => '-18',
+      'omacron' => '-18',
+      'oslash' => '-18',
+      'otilde' => '-18',
+      'p' => '-10',
+      'period' => '-100',
+      'q' => '-18',
+      'v' => '-10',
+    ),
+    'rcommaaccent' => 
+    array (
+      'c' => '-18',
+      'cacute' => '-18',
+      'ccaron' => '-18',
+      'ccedilla' => '-18',
+      'comma' => '-92',
+      'e' => '-18',
+      'eacute' => '-18',
+      'ecaron' => '-18',
+      'ecircumflex' => '-18',
+      'edieresis' => '-18',
+      'edotaccent' => '-18',
+      'egrave' => '-18',
+      'emacron' => '-18',
+      'eogonek' => '-18',
+      'g' => '-10',
+      'gbreve' => '-10',
+      'gcommaaccent' => '-10',
+      'hyphen' => '-37',
+      'n' => '-15',
+      'nacute' => '-15',
+      'ncaron' => '-15',
+      'ncommaaccent' => '-15',
+      'ntilde' => '-15',
+      'o' => '-18',
+      'oacute' => '-18',
+      'ocircumflex' => '-18',
+      'odieresis' => '-18',
+      'ograve' => '-18',
+      'ohungarumlaut' => '-18',
+      'omacron' => '-18',
+      'oslash' => '-18',
+      'otilde' => '-18',
+      'p' => '-10',
+      'period' => '-100',
+      'q' => '-18',
+      'v' => '-10',
+    ),
+    'space' => 
+    array (
+      'A' => '-55',
+      'Aacute' => '-55',
+      'Abreve' => '-55',
+      'Acircumflex' => '-55',
+      'Adieresis' => '-55',
+      'Agrave' => '-55',
+      'Amacron' => '-55',
+      'Aogonek' => '-55',
+      'Aring' => '-55',
+      'Atilde' => '-55',
+      'T' => '-30',
+      'Tcaron' => '-30',
+      'Tcommaaccent' => '-30',
+      'V' => '-45',
+      'W' => '-30',
+      'Y' => '-55',
+      'Yacute' => '-55',
+      'Ydieresis' => '-55',
+    ),
+    'v' => 
+    array (
+      'a' => '-10',
+      'aacute' => '-10',
+      'abreve' => '-10',
+      'acircumflex' => '-10',
+      'adieresis' => '-10',
+      'agrave' => '-10',
+      'amacron' => '-10',
+      'aogonek' => '-10',
+      'aring' => '-10',
+      'atilde' => '-10',
+      'comma' => '-55',
+      'e' => '-10',
+      'eacute' => '-10',
+      'ecaron' => '-10',
+      'ecircumflex' => '-10',
+      'edieresis' => '-10',
+      'edotaccent' => '-10',
+      'egrave' => '-10',
+      'emacron' => '-10',
+      'eogonek' => '-10',
+      'o' => '-10',
+      'oacute' => '-10',
+      'ocircumflex' => '-10',
+      'odieresis' => '-10',
+      'ograve' => '-10',
+      'ohungarumlaut' => '-10',
+      'omacron' => '-10',
+      'oslash' => '-10',
+      'otilde' => '-10',
+      'period' => '-70',
+    ),
+    'w' => 
+    array (
+      'comma' => '-55',
+      'o' => '-10',
+      'oacute' => '-10',
+      'ocircumflex' => '-10',
+      'odieresis' => '-10',
+      'ograve' => '-10',
+      'ohungarumlaut' => '-10',
+      'omacron' => '-10',
+      'oslash' => '-10',
+      'otilde' => '-10',
+      'period' => '-70',
+    ),
+    'y' => 
+    array (
+      'comma' => '-55',
+      'e' => '-10',
+      'eacute' => '-10',
+      'ecaron' => '-10',
+      'ecircumflex' => '-10',
+      'edieresis' => '-10',
+      'edotaccent' => '-10',
+      'egrave' => '-10',
+      'emacron' => '-10',
+      'eogonek' => '-10',
+      'o' => '-25',
+      'oacute' => '-25',
+      'ocircumflex' => '-25',
+      'odieresis' => '-25',
+      'ograve' => '-25',
+      'ohungarumlaut' => '-25',
+      'omacron' => '-25',
+      'oslash' => '-25',
+      'otilde' => '-25',
+      'period' => '-70',
+    ),
+    'yacute' => 
+    array (
+      'comma' => '-55',
+      'e' => '-10',
+      'eacute' => '-10',
+      'ecaron' => '-10',
+      'ecircumflex' => '-10',
+      'edieresis' => '-10',
+      'edotaccent' => '-10',
+      'egrave' => '-10',
+      'emacron' => '-10',
+      'eogonek' => '-10',
+      'o' => '-25',
+      'oacute' => '-25',
+      'ocircumflex' => '-25',
+      'odieresis' => '-25',
+      'ograve' => '-25',
+      'ohungarumlaut' => '-25',
+      'omacron' => '-25',
+      'oslash' => '-25',
+      'otilde' => '-25',
+      'period' => '-70',
+    ),
+    'ydieresis' => 
+    array (
+      'comma' => '-55',
+      'e' => '-10',
+      'eacute' => '-10',
+      'ecaron' => '-10',
+      'ecircumflex' => '-10',
+      'edieresis' => '-10',
+      'edotaccent' => '-10',
+      'egrave' => '-10',
+      'emacron' => '-10',
+      'eogonek' => '-10',
+      'o' => '-25',
+      'oacute' => '-25',
+      'ocircumflex' => '-25',
+      'odieresis' => '-25',
+      'ograve' => '-25',
+      'ohungarumlaut' => '-25',
+      'omacron' => '-25',
+      'oslash' => '-25',
+      'otilde' => '-25',
+      'period' => '-70',
+    ),
+  ),
+  '_version_' => 1,
+);
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Courier-BoldOblique.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Courier-BoldOblique.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Courier-BoldOblique.afm	(revision 2000)
@@ -0,0 +1,342 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+Comment Creation Date: Mon Jun 23 16:28:46 1997
+Comment UniqueID 43049
+Comment VMusage 17529 79244
+FontName Courier-BoldOblique
+FullName Courier Bold Oblique
+FamilyName Courier
+Weight Bold
+ItalicAngle -12
+IsFixedPitch true
+CharacterSet ExtendedRoman
+FontBBox -57 -250 869 801 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 003.000
+Notice Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+EncodingScheme AdobeStandardEncoding
+CapHeight 562
+XHeight 439
+Ascender 629
+Descender -157
+StdHW 84
+StdVW 106
+StartCharMetrics 315
+C 32 ; WX 600 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 600 ; N exclam ; B 215 -15 495 572 ;
+C 34 ; WX 600 ; N quotedbl ; B 211 277 585 562 ;
+C 35 ; WX 600 ; N numbersign ; B 88 -45 641 651 ;
+C 36 ; WX 600 ; N dollar ; B 87 -126 630 666 ;
+C 37 ; WX 600 ; N percent ; B 101 -15 625 616 ;
+C 38 ; WX 600 ; N ampersand ; B 61 -15 595 543 ;
+C 39 ; WX 600 ; N quoteright ; B 229 277 543 562 ;
+C 40 ; WX 600 ; N parenleft ; B 265 -102 592 616 ;
+C 41 ; WX 600 ; N parenright ; B 117 -102 444 616 ;
+C 42 ; WX 600 ; N asterisk ; B 179 219 598 601 ;
+C 43 ; WX 600 ; N plus ; B 114 39 596 478 ;
+C 44 ; WX 600 ; N comma ; B 99 -111 430 174 ;
+C 45 ; WX 600 ; N hyphen ; B 143 203 567 313 ;
+C 46 ; WX 600 ; N period ; B 206 -15 427 171 ;
+C 47 ; WX 600 ; N slash ; B 90 -77 626 626 ;
+C 48 ; WX 600 ; N zero ; B 135 -15 593 616 ;
+C 49 ; WX 600 ; N one ; B 93 0 562 616 ;
+C 50 ; WX 600 ; N two ; B 61 0 594 616 ;
+C 51 ; WX 600 ; N three ; B 71 -15 571 616 ;
+C 52 ; WX 600 ; N four ; B 81 0 559 616 ;
+C 53 ; WX 600 ; N five ; B 77 -15 621 601 ;
+C 54 ; WX 600 ; N six ; B 135 -15 652 616 ;
+C 55 ; WX 600 ; N seven ; B 147 0 622 601 ;
+C 56 ; WX 600 ; N eight ; B 115 -15 604 616 ;
+C 57 ; WX 600 ; N nine ; B 75 -15 592 616 ;
+C 58 ; WX 600 ; N colon ; B 205 -15 480 425 ;
+C 59 ; WX 600 ; N semicolon ; B 99 -111 481 425 ;
+C 60 ; WX 600 ; N less ; B 120 15 613 501 ;
+C 61 ; WX 600 ; N equal ; B 96 118 614 398 ;
+C 62 ; WX 600 ; N greater ; B 97 15 589 501 ;
+C 63 ; WX 600 ; N question ; B 183 -14 592 580 ;
+C 64 ; WX 600 ; N at ; B 65 -15 642 616 ;
+C 65 ; WX 600 ; N A ; B -9 0 632 562 ;
+C 66 ; WX 600 ; N B ; B 30 0 630 562 ;
+C 67 ; WX 600 ; N C ; B 74 -18 675 580 ;
+C 68 ; WX 600 ; N D ; B 30 0 664 562 ;
+C 69 ; WX 600 ; N E ; B 25 0 670 562 ;
+C 70 ; WX 600 ; N F ; B 39 0 684 562 ;
+C 71 ; WX 600 ; N G ; B 74 -18 675 580 ;
+C 72 ; WX 600 ; N H ; B 20 0 700 562 ;
+C 73 ; WX 600 ; N I ; B 77 0 643 562 ;
+C 74 ; WX 600 ; N J ; B 58 -18 721 562 ;
+C 75 ; WX 600 ; N K ; B 21 0 692 562 ;
+C 76 ; WX 600 ; N L ; B 39 0 636 562 ;
+C 77 ; WX 600 ; N M ; B -2 0 722 562 ;
+C 78 ; WX 600 ; N N ; B 8 -12 730 562 ;
+C 79 ; WX 600 ; N O ; B 74 -18 645 580 ;
+C 80 ; WX 600 ; N P ; B 48 0 643 562 ;
+C 81 ; WX 600 ; N Q ; B 83 -138 636 580 ;
+C 82 ; WX 600 ; N R ; B 24 0 617 562 ;
+C 83 ; WX 600 ; N S ; B 54 -22 673 582 ;
+C 84 ; WX 600 ; N T ; B 86 0 679 562 ;
+C 85 ; WX 600 ; N U ; B 101 -18 716 562 ;
+C 86 ; WX 600 ; N V ; B 84 0 733 562 ;
+C 87 ; WX 600 ; N W ; B 79 0 738 562 ;
+C 88 ; WX 600 ; N X ; B 12 0 690 562 ;
+C 89 ; WX 600 ; N Y ; B 109 0 709 562 ;
+C 90 ; WX 600 ; N Z ; B 62 0 637 562 ;
+C 91 ; WX 600 ; N bracketleft ; B 223 -102 606 616 ;
+C 92 ; WX 600 ; N backslash ; B 222 -77 496 626 ;
+C 93 ; WX 600 ; N bracketright ; B 103 -102 486 616 ;
+C 94 ; WX 600 ; N asciicircum ; B 171 250 556 616 ;
+C 95 ; WX 600 ; N underscore ; B -27 -125 585 -75 ;
+C 96 ; WX 600 ; N quoteleft ; B 297 277 487 562 ;
+C 97 ; WX 600 ; N a ; B 61 -15 593 454 ;
+C 98 ; WX 600 ; N b ; B 13 -15 636 626 ;
+C 99 ; WX 600 ; N c ; B 81 -15 631 459 ;
+C 100 ; WX 600 ; N d ; B 60 -15 645 626 ;
+C 101 ; WX 600 ; N e ; B 81 -15 605 454 ;
+C 102 ; WX 600 ; N f ; B 83 0 677 626 ; L i fi ; L l fl ;
+C 103 ; WX 600 ; N g ; B 40 -146 674 454 ;
+C 104 ; WX 600 ; N h ; B 18 0 615 626 ;
+C 105 ; WX 600 ; N i ; B 77 0 546 658 ;
+C 106 ; WX 600 ; N j ; B 36 -146 580 658 ;
+C 107 ; WX 600 ; N k ; B 33 0 643 626 ;
+C 108 ; WX 600 ; N l ; B 77 0 546 626 ;
+C 109 ; WX 600 ; N m ; B -22 0 649 454 ;
+C 110 ; WX 600 ; N n ; B 18 0 615 454 ;
+C 111 ; WX 600 ; N o ; B 71 -15 622 454 ;
+C 112 ; WX 600 ; N p ; B -32 -142 622 454 ;
+C 113 ; WX 600 ; N q ; B 60 -142 685 454 ;
+C 114 ; WX 600 ; N r ; B 47 0 655 454 ;
+C 115 ; WX 600 ; N s ; B 66 -17 608 459 ;
+C 116 ; WX 600 ; N t ; B 118 -15 567 562 ;
+C 117 ; WX 600 ; N u ; B 70 -15 592 439 ;
+C 118 ; WX 600 ; N v ; B 70 0 695 439 ;
+C 119 ; WX 600 ; N w ; B 53 0 712 439 ;
+C 120 ; WX 600 ; N x ; B 6 0 671 439 ;
+C 121 ; WX 600 ; N y ; B -21 -142 695 439 ;
+C 122 ; WX 600 ; N z ; B 81 0 614 439 ;
+C 123 ; WX 600 ; N braceleft ; B 203 -102 595 616 ;
+C 124 ; WX 600 ; N bar ; B 201 -250 505 750 ;
+C 125 ; WX 600 ; N braceright ; B 114 -102 506 616 ;
+C 126 ; WX 600 ; N asciitilde ; B 120 153 590 356 ;
+C 161 ; WX 600 ; N exclamdown ; B 196 -146 477 449 ;
+C 162 ; WX 600 ; N cent ; B 121 -49 605 614 ;
+C 163 ; WX 600 ; N sterling ; B 106 -28 650 611 ;
+C 164 ; WX 600 ; N fraction ; B 22 -60 708 661 ;
+C 165 ; WX 600 ; N yen ; B 98 0 710 562 ;
+C 166 ; WX 600 ; N florin ; B -57 -131 702 616 ;
+C 167 ; WX 600 ; N section ; B 74 -70 620 580 ;
+C 168 ; WX 600 ; N currency ; B 77 49 644 517 ;
+C 169 ; WX 600 ; N quotesingle ; B 303 277 493 562 ;
+C 170 ; WX 600 ; N quotedblleft ; B 190 277 594 562 ;
+C 171 ; WX 600 ; N guillemotleft ; B 62 70 639 446 ;
+C 172 ; WX 600 ; N guilsinglleft ; B 195 70 545 446 ;
+C 173 ; WX 600 ; N guilsinglright ; B 165 70 514 446 ;
+C 174 ; WX 600 ; N fi ; B 12 0 644 626 ;
+C 175 ; WX 600 ; N fl ; B 12 0 644 626 ;
+C 177 ; WX 600 ; N endash ; B 108 203 602 313 ;
+C 178 ; WX 600 ; N dagger ; B 175 -70 586 580 ;
+C 179 ; WX 600 ; N daggerdbl ; B 121 -70 587 580 ;
+C 180 ; WX 600 ; N periodcentered ; B 248 165 461 351 ;
+C 182 ; WX 600 ; N paragraph ; B 61 -70 700 580 ;
+C 183 ; WX 600 ; N bullet ; B 196 132 523 430 ;
+C 184 ; WX 600 ; N quotesinglbase ; B 144 -142 458 143 ;
+C 185 ; WX 600 ; N quotedblbase ; B 34 -142 560 143 ;
+C 186 ; WX 600 ; N quotedblright ; B 119 277 645 562 ;
+C 187 ; WX 600 ; N guillemotright ; B 71 70 647 446 ;
+C 188 ; WX 600 ; N ellipsis ; B 35 -15 587 116 ;
+C 189 ; WX 600 ; N perthousand ; B -45 -15 743 616 ;
+C 191 ; WX 600 ; N questiondown ; B 100 -146 509 449 ;
+C 193 ; WX 600 ; N grave ; B 272 508 503 661 ;
+C 194 ; WX 600 ; N acute ; B 312 508 609 661 ;
+C 195 ; WX 600 ; N circumflex ; B 212 483 607 657 ;
+C 196 ; WX 600 ; N tilde ; B 199 493 643 636 ;
+C 197 ; WX 600 ; N macron ; B 195 505 637 585 ;
+C 198 ; WX 600 ; N breve ; B 217 468 652 631 ;
+C 199 ; WX 600 ; N dotaccent ; B 348 498 493 638 ;
+C 200 ; WX 600 ; N dieresis ; B 246 498 595 638 ;
+C 202 ; WX 600 ; N ring ; B 319 481 528 678 ;
+C 203 ; WX 600 ; N cedilla ; B 168 -206 368 0 ;
+C 205 ; WX 600 ; N hungarumlaut ; B 171 488 729 661 ;
+C 206 ; WX 600 ; N ogonek ; B 143 -199 367 0 ;
+C 207 ; WX 600 ; N caron ; B 238 493 633 667 ;
+C 208 ; WX 600 ; N emdash ; B 33 203 677 313 ;
+C 225 ; WX 600 ; N AE ; B -29 0 708 562 ;
+C 227 ; WX 600 ; N ordfeminine ; B 188 196 526 580 ;
+C 232 ; WX 600 ; N Lslash ; B 39 0 636 562 ;
+C 233 ; WX 600 ; N Oslash ; B 48 -22 673 584 ;
+C 234 ; WX 600 ; N OE ; B 26 0 701 562 ;
+C 235 ; WX 600 ; N ordmasculine ; B 188 196 543 580 ;
+C 241 ; WX 600 ; N ae ; B 21 -15 652 454 ;
+C 245 ; WX 600 ; N dotlessi ; B 77 0 546 439 ;
+C 248 ; WX 600 ; N lslash ; B 77 0 587 626 ;
+C 249 ; WX 600 ; N oslash ; B 54 -24 638 463 ;
+C 250 ; WX 600 ; N oe ; B 18 -15 662 454 ;
+C 251 ; WX 600 ; N germandbls ; B 22 -15 629 626 ;
+C -1 ; WX 600 ; N Idieresis ; B 77 0 643 761 ;
+C -1 ; WX 600 ; N eacute ; B 81 -15 609 661 ;
+C -1 ; WX 600 ; N abreve ; B 61 -15 658 661 ;
+C -1 ; WX 600 ; N uhungarumlaut ; B 70 -15 769 661 ;
+C -1 ; WX 600 ; N ecaron ; B 81 -15 633 667 ;
+C -1 ; WX 600 ; N Ydieresis ; B 109 0 709 761 ;
+C -1 ; WX 600 ; N divide ; B 114 16 596 500 ;
+C -1 ; WX 600 ; N Yacute ; B 109 0 709 784 ;
+C -1 ; WX 600 ; N Acircumflex ; B -9 0 632 780 ;
+C -1 ; WX 600 ; N aacute ; B 61 -15 609 661 ;
+C -1 ; WX 600 ; N Ucircumflex ; B 101 -18 716 780 ;
+C -1 ; WX 600 ; N yacute ; B -21 -142 695 661 ;
+C -1 ; WX 600 ; N scommaaccent ; B 66 -250 608 459 ;
+C -1 ; WX 600 ; N ecircumflex ; B 81 -15 607 657 ;
+C -1 ; WX 600 ; N Uring ; B 101 -18 716 801 ;
+C -1 ; WX 600 ; N Udieresis ; B 101 -18 716 761 ;
+C -1 ; WX 600 ; N aogonek ; B 61 -199 593 454 ;
+C -1 ; WX 600 ; N Uacute ; B 101 -18 716 784 ;
+C -1 ; WX 600 ; N uogonek ; B 70 -199 592 439 ;
+C -1 ; WX 600 ; N Edieresis ; B 25 0 670 761 ;
+C -1 ; WX 600 ; N Dcroat ; B 30 0 664 562 ;
+C -1 ; WX 600 ; N commaaccent ; B 151 -250 385 -57 ;
+C -1 ; WX 600 ; N copyright ; B 53 -18 667 580 ;
+C -1 ; WX 600 ; N Emacron ; B 25 0 670 708 ;
+C -1 ; WX 600 ; N ccaron ; B 81 -15 633 667 ;
+C -1 ; WX 600 ; N aring ; B 61 -15 593 678 ;
+C -1 ; WX 600 ; N Ncommaaccent ; B 8 -250 730 562 ;
+C -1 ; WX 600 ; N lacute ; B 77 0 639 801 ;
+C -1 ; WX 600 ; N agrave ; B 61 -15 593 661 ;
+C -1 ; WX 600 ; N Tcommaaccent ; B 86 -250 679 562 ;
+C -1 ; WX 600 ; N Cacute ; B 74 -18 675 784 ;
+C -1 ; WX 600 ; N atilde ; B 61 -15 643 636 ;
+C -1 ; WX 600 ; N Edotaccent ; B 25 0 670 761 ;
+C -1 ; WX 600 ; N scaron ; B 66 -17 633 667 ;
+C -1 ; WX 600 ; N scedilla ; B 66 -206 608 459 ;
+C -1 ; WX 600 ; N iacute ; B 77 0 609 661 ;
+C -1 ; WX 600 ; N lozenge ; B 145 0 614 740 ;
+C -1 ; WX 600 ; N Rcaron ; B 24 0 659 790 ;
+C -1 ; WX 600 ; N Gcommaaccent ; B 74 -250 675 580 ;
+C -1 ; WX 600 ; N ucircumflex ; B 70 -15 597 657 ;
+C -1 ; WX 600 ; N acircumflex ; B 61 -15 607 657 ;
+C -1 ; WX 600 ; N Amacron ; B -9 0 633 708 ;
+C -1 ; WX 600 ; N rcaron ; B 47 0 655 667 ;
+C -1 ; WX 600 ; N ccedilla ; B 81 -206 631 459 ;
+C -1 ; WX 600 ; N Zdotaccent ; B 62 0 637 761 ;
+C -1 ; WX 600 ; N Thorn ; B 48 0 620 562 ;
+C -1 ; WX 600 ; N Omacron ; B 74 -18 663 708 ;
+C -1 ; WX 600 ; N Racute ; B 24 0 665 784 ;
+C -1 ; WX 600 ; N Sacute ; B 54 -22 673 784 ;
+C -1 ; WX 600 ; N dcaron ; B 60 -15 861 626 ;
+C -1 ; WX 600 ; N Umacron ; B 101 -18 716 708 ;
+C -1 ; WX 600 ; N uring ; B 70 -15 592 678 ;
+C -1 ; WX 600 ; N threesuperior ; B 193 222 526 616 ;
+C -1 ; WX 600 ; N Ograve ; B 74 -18 645 784 ;
+C -1 ; WX 600 ; N Agrave ; B -9 0 632 784 ;
+C -1 ; WX 600 ; N Abreve ; B -9 0 684 784 ;
+C -1 ; WX 600 ; N multiply ; B 104 39 606 478 ;
+C -1 ; WX 600 ; N uacute ; B 70 -15 599 661 ;
+C -1 ; WX 600 ; N Tcaron ; B 86 0 679 790 ;
+C -1 ; WX 600 ; N partialdiff ; B 91 -38 627 728 ;
+C -1 ; WX 600 ; N ydieresis ; B -21 -142 695 638 ;
+C -1 ; WX 600 ; N Nacute ; B 8 -12 730 784 ;
+C -1 ; WX 600 ; N icircumflex ; B 77 0 577 657 ;
+C -1 ; WX 600 ; N Ecircumflex ; B 25 0 670 780 ;
+C -1 ; WX 600 ; N adieresis ; B 61 -15 595 638 ;
+C -1 ; WX 600 ; N edieresis ; B 81 -15 605 638 ;
+C -1 ; WX 600 ; N cacute ; B 81 -15 649 661 ;
+C -1 ; WX 600 ; N nacute ; B 18 0 639 661 ;
+C -1 ; WX 600 ; N umacron ; B 70 -15 637 585 ;
+C -1 ; WX 600 ; N Ncaron ; B 8 -12 730 790 ;
+C -1 ; WX 600 ; N Iacute ; B 77 0 643 784 ;
+C -1 ; WX 600 ; N plusminus ; B 76 24 614 515 ;
+C -1 ; WX 600 ; N brokenbar ; B 217 -175 489 675 ;
+C -1 ; WX 600 ; N registered ; B 53 -18 667 580 ;
+C -1 ; WX 600 ; N Gbreve ; B 74 -18 684 784 ;
+C -1 ; WX 600 ; N Idotaccent ; B 77 0 643 761 ;
+C -1 ; WX 600 ; N summation ; B 15 -10 672 706 ;
+C -1 ; WX 600 ; N Egrave ; B 25 0 670 784 ;
+C -1 ; WX 600 ; N racute ; B 47 0 655 661 ;
+C -1 ; WX 600 ; N omacron ; B 71 -15 637 585 ;
+C -1 ; WX 600 ; N Zacute ; B 62 0 665 784 ;
+C -1 ; WX 600 ; N Zcaron ; B 62 0 659 790 ;
+C -1 ; WX 600 ; N greaterequal ; B 26 0 627 696 ;
+C -1 ; WX 600 ; N Eth ; B 30 0 664 562 ;
+C -1 ; WX 600 ; N Ccedilla ; B 74 -206 675 580 ;
+C -1 ; WX 600 ; N lcommaaccent ; B 77 -250 546 626 ;
+C -1 ; WX 600 ; N tcaron ; B 118 -15 627 703 ;
+C -1 ; WX 600 ; N eogonek ; B 81 -199 605 454 ;
+C -1 ; WX 600 ; N Uogonek ; B 101 -199 716 562 ;
+C -1 ; WX 600 ; N Aacute ; B -9 0 655 784 ;
+C -1 ; WX 600 ; N Adieresis ; B -9 0 632 761 ;
+C -1 ; WX 600 ; N egrave ; B 81 -15 605 661 ;
+C -1 ; WX 600 ; N zacute ; B 81 0 614 661 ;
+C -1 ; WX 600 ; N iogonek ; B 77 -199 546 658 ;
+C -1 ; WX 600 ; N Oacute ; B 74 -18 645 784 ;
+C -1 ; WX 600 ; N oacute ; B 71 -15 649 661 ;
+C -1 ; WX 600 ; N amacron ; B 61 -15 637 585 ;
+C -1 ; WX 600 ; N sacute ; B 66 -17 609 661 ;
+C -1 ; WX 600 ; N idieresis ; B 77 0 561 618 ;
+C -1 ; WX 600 ; N Ocircumflex ; B 74 -18 645 780 ;
+C -1 ; WX 600 ; N Ugrave ; B 101 -18 716 784 ;
+C -1 ; WX 600 ; N Delta ; B 6 0 594 688 ;
+C -1 ; WX 600 ; N thorn ; B -32 -142 622 626 ;
+C -1 ; WX 600 ; N twosuperior ; B 191 230 542 616 ;
+C -1 ; WX 600 ; N Odieresis ; B 74 -18 645 761 ;
+C -1 ; WX 600 ; N mu ; B 49 -142 592 439 ;
+C -1 ; WX 600 ; N igrave ; B 77 0 546 661 ;
+C -1 ; WX 600 ; N ohungarumlaut ; B 71 -15 809 661 ;
+C -1 ; WX 600 ; N Eogonek ; B 25 -199 670 562 ;
+C -1 ; WX 600 ; N dcroat ; B 60 -15 712 626 ;
+C -1 ; WX 600 ; N threequarters ; B 8 -60 699 661 ;
+C -1 ; WX 600 ; N Scedilla ; B 54 -206 673 582 ;
+C -1 ; WX 600 ; N lcaron ; B 77 0 731 626 ;
+C -1 ; WX 600 ; N Kcommaaccent ; B 21 -250 692 562 ;
+C -1 ; WX 600 ; N Lacute ; B 39 0 636 784 ;
+C -1 ; WX 600 ; N trademark ; B 86 230 869 562 ;
+C -1 ; WX 600 ; N edotaccent ; B 81 -15 605 638 ;
+C -1 ; WX 600 ; N Igrave ; B 77 0 643 784 ;
+C -1 ; WX 600 ; N Imacron ; B 77 0 663 708 ;
+C -1 ; WX 600 ; N Lcaron ; B 39 0 757 562 ;
+C -1 ; WX 600 ; N onehalf ; B 22 -60 716 661 ;
+C -1 ; WX 600 ; N lessequal ; B 26 0 671 696 ;
+C -1 ; WX 600 ; N ocircumflex ; B 71 -15 622 657 ;
+C -1 ; WX 600 ; N ntilde ; B 18 0 643 636 ;
+C -1 ; WX 600 ; N Uhungarumlaut ; B 101 -18 805 784 ;
+C -1 ; WX 600 ; N Eacute ; B 25 0 670 784 ;
+C -1 ; WX 600 ; N emacron ; B 81 -15 637 585 ;
+C -1 ; WX 600 ; N gbreve ; B 40 -146 674 661 ;
+C -1 ; WX 600 ; N onequarter ; B 13 -60 707 661 ;
+C -1 ; WX 600 ; N Scaron ; B 54 -22 689 790 ;
+C -1 ; WX 600 ; N Scommaaccent ; B 54 -250 673 582 ;
+C -1 ; WX 600 ; N Ohungarumlaut ; B 74 -18 795 784 ;
+C -1 ; WX 600 ; N degree ; B 173 243 570 616 ;
+C -1 ; WX 600 ; N ograve ; B 71 -15 622 661 ;
+C -1 ; WX 600 ; N Ccaron ; B 74 -18 689 790 ;
+C -1 ; WX 600 ; N ugrave ; B 70 -15 592 661 ;
+C -1 ; WX 600 ; N radical ; B 67 -104 635 778 ;
+C -1 ; WX 600 ; N Dcaron ; B 30 0 664 790 ;
+C -1 ; WX 600 ; N rcommaaccent ; B 47 -250 655 454 ;
+C -1 ; WX 600 ; N Ntilde ; B 8 -12 730 759 ;
+C -1 ; WX 600 ; N otilde ; B 71 -15 643 636 ;
+C -1 ; WX 600 ; N Rcommaaccent ; B 24 -250 617 562 ;
+C -1 ; WX 600 ; N Lcommaaccent ; B 39 -250 636 562 ;
+C -1 ; WX 600 ; N Atilde ; B -9 0 669 759 ;
+C -1 ; WX 600 ; N Aogonek ; B -9 -199 632 562 ;
+C -1 ; WX 600 ; N Aring ; B -9 0 632 801 ;
+C -1 ; WX 600 ; N Otilde ; B 74 -18 669 759 ;
+C -1 ; WX 600 ; N zdotaccent ; B 81 0 614 638 ;
+C -1 ; WX 600 ; N Ecaron ; B 25 0 670 790 ;
+C -1 ; WX 600 ; N Iogonek ; B 77 -199 643 562 ;
+C -1 ; WX 600 ; N kcommaaccent ; B 33 -250 643 626 ;
+C -1 ; WX 600 ; N minus ; B 114 203 596 313 ;
+C -1 ; WX 600 ; N Icircumflex ; B 77 0 643 780 ;
+C -1 ; WX 600 ; N ncaron ; B 18 0 633 667 ;
+C -1 ; WX 600 ; N tcommaaccent ; B 118 -250 567 562 ;
+C -1 ; WX 600 ; N logicalnot ; B 135 103 617 413 ;
+C -1 ; WX 600 ; N odieresis ; B 71 -15 622 638 ;
+C -1 ; WX 600 ; N udieresis ; B 70 -15 595 638 ;
+C -1 ; WX 600 ; N notequal ; B 30 -47 626 563 ;
+C -1 ; WX 600 ; N gcommaaccent ; B 40 -146 674 714 ;
+C -1 ; WX 600 ; N eth ; B 93 -27 661 626 ;
+C -1 ; WX 600 ; N zcaron ; B 81 0 643 667 ;
+C -1 ; WX 600 ; N ncommaaccent ; B 18 -250 615 454 ;
+C -1 ; WX 600 ; N onesuperior ; B 212 230 514 616 ;
+C -1 ; WX 600 ; N imacron ; B 77 0 575 585 ;
+C -1 ; WX 600 ; N Euro ; B 0 0 0 0 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/fonts/Courier.afm
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/fonts/Courier.afm	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/fonts/Courier.afm	(revision 2000)
@@ -0,0 +1,342 @@
+StartFontMetrics 4.1
+Comment Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+Comment Creation Date: Thu May  1 17:27:09 1997
+Comment UniqueID 43050
+Comment VMusage 39754 50779
+FontName Courier
+FullName Courier
+FamilyName Courier
+Weight Medium
+ItalicAngle 0
+IsFixedPitch true
+CharacterSet ExtendedRoman
+FontBBox -23 -250 715 805 
+UnderlinePosition -100
+UnderlineThickness 50
+Version 003.000
+Notice Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.
+EncodingScheme AdobeStandardEncoding
+CapHeight 562
+XHeight 426
+Ascender 629
+Descender -157
+StdHW 51
+StdVW 51
+StartCharMetrics 315
+C 32 ; WX 600 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 600 ; N exclam ; B 236 -15 364 572 ;
+C 34 ; WX 600 ; N quotedbl ; B 187 328 413 562 ;
+C 35 ; WX 600 ; N numbersign ; B 93 -32 507 639 ;
+C 36 ; WX 600 ; N dollar ; B 105 -126 496 662 ;
+C 37 ; WX 600 ; N percent ; B 81 -15 518 622 ;
+C 38 ; WX 600 ; N ampersand ; B 63 -15 538 543 ;
+C 39 ; WX 600 ; N quoteright ; B 213 328 376 562 ;
+C 40 ; WX 600 ; N parenleft ; B 269 -108 440 622 ;
+C 41 ; WX 600 ; N parenright ; B 160 -108 331 622 ;
+C 42 ; WX 600 ; N asterisk ; B 116 257 484 607 ;
+C 43 ; WX 600 ; N plus ; B 80 44 520 470 ;
+C 44 ; WX 600 ; N comma ; B 181 -112 344 122 ;
+C 45 ; WX 600 ; N hyphen ; B 103 231 497 285 ;
+C 46 ; WX 600 ; N period ; B 229 -15 371 109 ;
+C 47 ; WX 600 ; N slash ; B 125 -80 475 629 ;
+C 48 ; WX 600 ; N zero ; B 106 -15 494 622 ;
+C 49 ; WX 600 ; N one ; B 96 0 505 622 ;
+C 50 ; WX 600 ; N two ; B 70 0 471 622 ;
+C 51 ; WX 600 ; N three ; B 75 -15 466 622 ;
+C 52 ; WX 600 ; N four ; B 78 0 500 622 ;
+C 53 ; WX 600 ; N five ; B 92 -15 497 607 ;
+C 54 ; WX 600 ; N six ; B 111 -15 497 622 ;
+C 55 ; WX 600 ; N seven ; B 82 0 483 607 ;
+C 56 ; WX 600 ; N eight ; B 102 -15 498 622 ;
+C 57 ; WX 600 ; N nine ; B 96 -15 489 622 ;
+C 58 ; WX 600 ; N colon ; B 229 -15 371 385 ;
+C 59 ; WX 600 ; N semicolon ; B 181 -112 371 385 ;
+C 60 ; WX 600 ; N less ; B 41 42 519 472 ;
+C 61 ; WX 600 ; N equal ; B 80 138 520 376 ;
+C 62 ; WX 600 ; N greater ; B 66 42 544 472 ;
+C 63 ; WX 600 ; N question ; B 129 -15 492 572 ;
+C 64 ; WX 600 ; N at ; B 77 -15 533 622 ;
+C 65 ; WX 600 ; N A ; B 3 0 597 562 ;
+C 66 ; WX 600 ; N B ; B 43 0 559 562 ;
+C 67 ; WX 600 ; N C ; B 41 -18 540 580 ;
+C 68 ; WX 600 ; N D ; B 43 0 574 562 ;
+C 69 ; WX 600 ; N E ; B 53 0 550 562 ;
+C 70 ; WX 600 ; N F ; B 53 0 545 562 ;
+C 71 ; WX 600 ; N G ; B 31 -18 575 580 ;
+C 72 ; WX 600 ; N H ; B 32 0 568 562 ;
+C 73 ; WX 600 ; N I ; B 96 0 504 562 ;
+C 74 ; WX 600 ; N J ; B 34 -18 566 562 ;
+C 75 ; WX 600 ; N K ; B 38 0 582 562 ;
+C 76 ; WX 600 ; N L ; B 47 0 554 562 ;
+C 77 ; WX 600 ; N M ; B 4 0 596 562 ;
+C 78 ; WX 600 ; N N ; B 7 -13 593 562 ;
+C 79 ; WX 600 ; N O ; B 43 -18 557 580 ;
+C 80 ; WX 600 ; N P ; B 79 0 558 562 ;
+C 81 ; WX 600 ; N Q ; B 43 -138 557 580 ;
+C 82 ; WX 600 ; N R ; B 38 0 588 562 ;
+C 83 ; WX 600 ; N S ; B 72 -20 529 580 ;
+C 84 ; WX 600 ; N T ; B 38 0 563 562 ;
+C 85 ; WX 600 ; N U ; B 17 -18 583 562 ;
+C 86 ; WX 600 ; N V ; B -4 -13 604 562 ;
+C 87 ; WX 600 ; N W ; B -3 -13 603 562 ;
+C 88 ; WX 600 ; N X ; B 23 0 577 562 ;
+C 89 ; WX 600 ; N Y ; B 24 0 576 562 ;
+C 90 ; WX 600 ; N Z ; B 86 0 514 562 ;
+C 91 ; WX 600 ; N bracketleft ; B 269 -108 442 622 ;
+C 92 ; WX 600 ; N backslash ; B 118 -80 482 629 ;
+C 93 ; WX 600 ; N bracketright ; B 158 -108 331 622 ;
+C 94 ; WX 600 ; N asciicircum ; B 94 354 506 622 ;
+C 95 ; WX 600 ; N underscore ; B 0 -125 600 -75 ;
+C 96 ; WX 600 ; N quoteleft ; B 224 328 387 562 ;
+C 97 ; WX 600 ; N a ; B 53 -15 559 441 ;
+C 98 ; WX 600 ; N b ; B 14 -15 575 629 ;
+C 99 ; WX 600 ; N c ; B 66 -15 529 441 ;
+C 100 ; WX 600 ; N d ; B 45 -15 591 629 ;
+C 101 ; WX 600 ; N e ; B 66 -15 548 441 ;
+C 102 ; WX 600 ; N f ; B 114 0 531 629 ; L i fi ; L l fl ;
+C 103 ; WX 600 ; N g ; B 45 -157 566 441 ;
+C 104 ; WX 600 ; N h ; B 18 0 582 629 ;
+C 105 ; WX 600 ; N i ; B 95 0 505 657 ;
+C 106 ; WX 600 ; N j ; B 82 -157 410 657 ;
+C 107 ; WX 600 ; N k ; B 43 0 580 629 ;
+C 108 ; WX 600 ; N l ; B 95 0 505 629 ;
+C 109 ; WX 600 ; N m ; B -5 0 605 441 ;
+C 110 ; WX 600 ; N n ; B 26 0 575 441 ;
+C 111 ; WX 600 ; N o ; B 62 -15 538 441 ;
+C 112 ; WX 600 ; N p ; B 9 -157 555 441 ;
+C 113 ; WX 600 ; N q ; B 45 -157 591 441 ;
+C 114 ; WX 600 ; N r ; B 60 0 559 441 ;
+C 115 ; WX 600 ; N s ; B 80 -15 513 441 ;
+C 116 ; WX 600 ; N t ; B 87 -15 530 561 ;
+C 117 ; WX 600 ; N u ; B 21 -15 562 426 ;
+C 118 ; WX 600 ; N v ; B 10 -10 590 426 ;
+C 119 ; WX 600 ; N w ; B -4 -10 604 426 ;
+C 120 ; WX 600 ; N x ; B 20 0 580 426 ;
+C 121 ; WX 600 ; N y ; B 7 -157 592 426 ;
+C 122 ; WX 600 ; N z ; B 99 0 502 426 ;
+C 123 ; WX 600 ; N braceleft ; B 182 -108 437 622 ;
+C 124 ; WX 600 ; N bar ; B 275 -250 326 750 ;
+C 125 ; WX 600 ; N braceright ; B 163 -108 418 622 ;
+C 126 ; WX 600 ; N asciitilde ; B 63 197 540 320 ;
+C 161 ; WX 600 ; N exclamdown ; B 236 -157 364 430 ;
+C 162 ; WX 600 ; N cent ; B 96 -49 500 614 ;
+C 163 ; WX 600 ; N sterling ; B 84 -21 521 611 ;
+C 164 ; WX 600 ; N fraction ; B 92 -57 509 665 ;
+C 165 ; WX 600 ; N yen ; B 26 0 574 562 ;
+C 166 ; WX 600 ; N florin ; B 4 -143 539 622 ;
+C 167 ; WX 600 ; N section ; B 113 -78 488 580 ;
+C 168 ; WX 600 ; N currency ; B 73 58 527 506 ;
+C 169 ; WX 600 ; N quotesingle ; B 259 328 341 562 ;
+C 170 ; WX 600 ; N quotedblleft ; B 143 328 471 562 ;
+C 171 ; WX 600 ; N guillemotleft ; B 37 70 563 446 ;
+C 172 ; WX 600 ; N guilsinglleft ; B 149 70 451 446 ;
+C 173 ; WX 600 ; N guilsinglright ; B 149 70 451 446 ;
+C 174 ; WX 600 ; N fi ; B 3 0 597 629 ;
+C 175 ; WX 600 ; N fl ; B 3 0 597 629 ;
+C 177 ; WX 600 ; N endash ; B 75 231 525 285 ;
+C 178 ; WX 600 ; N dagger ; B 141 -78 459 580 ;
+C 179 ; WX 600 ; N daggerdbl ; B 141 -78 459 580 ;
+C 180 ; WX 600 ; N periodcentered ; B 222 189 378 327 ;
+C 182 ; WX 600 ; N paragraph ; B 50 -78 511 562 ;
+C 183 ; WX 600 ; N bullet ; B 172 130 428 383 ;
+C 184 ; WX 600 ; N quotesinglbase ; B 213 -134 376 100 ;
+C 185 ; WX 600 ; N quotedblbase ; B 143 -134 457 100 ;
+C 186 ; WX 600 ; N quotedblright ; B 143 328 457 562 ;
+C 187 ; WX 600 ; N guillemotright ; B 37 70 563 446 ;
+C 188 ; WX 600 ; N ellipsis ; B 37 -15 563 111 ;
+C 189 ; WX 600 ; N perthousand ; B 3 -15 600 622 ;
+C 191 ; WX 600 ; N questiondown ; B 108 -157 471 430 ;
+C 193 ; WX 600 ; N grave ; B 151 497 378 672 ;
+C 194 ; WX 600 ; N acute ; B 242 497 469 672 ;
+C 195 ; WX 600 ; N circumflex ; B 124 477 476 654 ;
+C 196 ; WX 600 ; N tilde ; B 105 489 503 606 ;
+C 197 ; WX 600 ; N macron ; B 120 525 480 565 ;
+C 198 ; WX 600 ; N breve ; B 153 501 447 609 ;
+C 199 ; WX 600 ; N dotaccent ; B 249 537 352 640 ;
+C 200 ; WX 600 ; N dieresis ; B 148 537 453 640 ;
+C 202 ; WX 600 ; N ring ; B 218 463 382 627 ;
+C 203 ; WX 600 ; N cedilla ; B 224 -151 362 10 ;
+C 205 ; WX 600 ; N hungarumlaut ; B 133 497 540 672 ;
+C 206 ; WX 600 ; N ogonek ; B 211 -172 407 4 ;
+C 207 ; WX 600 ; N caron ; B 124 492 476 669 ;
+C 208 ; WX 600 ; N emdash ; B 0 231 600 285 ;
+C 225 ; WX 600 ; N AE ; B 3 0 550 562 ;
+C 227 ; WX 600 ; N ordfeminine ; B 156 249 442 580 ;
+C 232 ; WX 600 ; N Lslash ; B 47 0 554 562 ;
+C 233 ; WX 600 ; N Oslash ; B 43 -80 557 629 ;
+C 234 ; WX 600 ; N OE ; B 7 0 567 562 ;
+C 235 ; WX 600 ; N ordmasculine ; B 157 249 443 580 ;
+C 241 ; WX 600 ; N ae ; B 19 -15 570 441 ;
+C 245 ; WX 600 ; N dotlessi ; B 95 0 505 426 ;
+C 248 ; WX 600 ; N lslash ; B 95 0 505 629 ;
+C 249 ; WX 600 ; N oslash ; B 62 -80 538 506 ;
+C 250 ; WX 600 ; N oe ; B 19 -15 559 441 ;
+C 251 ; WX 600 ; N germandbls ; B 48 -15 588 629 ;
+C -1 ; WX 600 ; N Idieresis ; B 96 0 504 753 ;
+C -1 ; WX 600 ; N eacute ; B 66 -15 548 672 ;
+C -1 ; WX 600 ; N abreve ; B 53 -15 559 609 ;
+C -1 ; WX 600 ; N uhungarumlaut ; B 21 -15 580 672 ;
+C -1 ; WX 600 ; N ecaron ; B 66 -15 548 669 ;
+C -1 ; WX 600 ; N Ydieresis ; B 24 0 576 753 ;
+C -1 ; WX 600 ; N divide ; B 87 48 513 467 ;
+C -1 ; WX 600 ; N Yacute ; B 24 0 576 805 ;
+C -1 ; WX 600 ; N Acircumflex ; B 3 0 597 787 ;
+C -1 ; WX 600 ; N aacute ; B 53 -15 559 672 ;
+C -1 ; WX 600 ; N Ucircumflex ; B 17 -18 583 787 ;
+C -1 ; WX 600 ; N yacute ; B 7 -157 592 672 ;
+C -1 ; WX 600 ; N scommaaccent ; B 80 -250 513 441 ;
+C -1 ; WX 600 ; N ecircumflex ; B 66 -15 548 654 ;
+C -1 ; WX 600 ; N Uring ; B 17 -18 583 760 ;
+C -1 ; WX 600 ; N Udieresis ; B 17 -18 583 753 ;
+C -1 ; WX 600 ; N aogonek ; B 53 -172 587 441 ;
+C -1 ; WX 600 ; N Uacute ; B 17 -18 583 805 ;
+C -1 ; WX 600 ; N uogonek ; B 21 -172 590 426 ;
+C -1 ; WX 600 ; N Edieresis ; B 53 0 550 753 ;
+C -1 ; WX 600 ; N Dcroat ; B 30 0 574 562 ;
+C -1 ; WX 600 ; N commaaccent ; B 198 -250 335 -58 ;
+C -1 ; WX 600 ; N copyright ; B 0 -18 600 580 ;
+C -1 ; WX 600 ; N Emacron ; B 53 0 550 698 ;
+C -1 ; WX 600 ; N ccaron ; B 66 -15 529 669 ;
+C -1 ; WX 600 ; N aring ; B 53 -15 559 627 ;
+C -1 ; WX 600 ; N Ncommaaccent ; B 7 -250 593 562 ;
+C -1 ; WX 600 ; N lacute ; B 95 0 505 805 ;
+C -1 ; WX 600 ; N agrave ; B 53 -15 559 672 ;
+C -1 ; WX 600 ; N Tcommaaccent ; B 38 -250 563 562 ;
+C -1 ; WX 600 ; N Cacute ; B 41 -18 540 805 ;
+C -1 ; WX 600 ; N atilde ; B 53 -15 559 606 ;
+C -1 ; WX 600 ; N Edotaccent ; B 53 0 550 753 ;
+C -1 ; WX 600 ; N scaron ; B 80 -15 513 669 ;
+C -1 ; WX 600 ; N scedilla ; B 80 -151 513 441 ;
+C -1 ; WX 600 ; N iacute ; B 95 0 505 672 ;
+C -1 ; WX 600 ; N lozenge ; B 18 0 443 706 ;
+C -1 ; WX 600 ; N Rcaron ; B 38 0 588 802 ;
+C -1 ; WX 600 ; N Gcommaaccent ; B 31 -250 575 580 ;
+C -1 ; WX 600 ; N ucircumflex ; B 21 -15 562 654 ;
+C -1 ; WX 600 ; N acircumflex ; B 53 -15 559 654 ;
+C -1 ; WX 600 ; N Amacron ; B 3 0 597 698 ;
+C -1 ; WX 600 ; N rcaron ; B 60 0 559 669 ;
+C -1 ; WX 600 ; N ccedilla ; B 66 -151 529 441 ;
+C -1 ; WX 600 ; N Zdotaccent ; B 86 0 514 753 ;
+C -1 ; WX 600 ; N Thorn ; B 79 0 538 562 ;
+C -1 ; WX 600 ; N Omacron ; B 43 -18 557 698 ;
+C -1 ; WX 600 ; N Racute ; B 38 0 588 805 ;
+C -1 ; WX 600 ; N Sacute ; B 72 -20 529 805 ;
+C -1 ; WX 600 ; N dcaron ; B 45 -15 715 629 ;
+C -1 ; WX 600 ; N Umacron ; B 17 -18 583 698 ;
+C -1 ; WX 600 ; N uring ; B 21 -15 562 627 ;
+C -1 ; WX 600 ; N threesuperior ; B 155 240 406 622 ;
+C -1 ; WX 600 ; N Ograve ; B 43 -18 557 805 ;
+C -1 ; WX 600 ; N Agrave ; B 3 0 597 805 ;
+C -1 ; WX 600 ; N Abreve ; B 3 0 597 732 ;
+C -1 ; WX 600 ; N multiply ; B 87 43 515 470 ;
+C -1 ; WX 600 ; N uacute ; B 21 -15 562 672 ;
+C -1 ; WX 600 ; N Tcaron ; B 38 0 563 802 ;
+C -1 ; WX 600 ; N partialdiff ; B 17 -38 459 710 ;
+C -1 ; WX 600 ; N ydieresis ; B 7 -157 592 620 ;
+C -1 ; WX 600 ; N Nacute ; B 7 -13 593 805 ;
+C -1 ; WX 600 ; N icircumflex ; B 94 0 505 654 ;
+C -1 ; WX 600 ; N Ecircumflex ; B 53 0 550 787 ;
+C -1 ; WX 600 ; N adieresis ; B 53 -15 559 620 ;
+C -1 ; WX 600 ; N edieresis ; B 66 -15 548 620 ;
+C -1 ; WX 600 ; N cacute ; B 66 -15 529 672 ;
+C -1 ; WX 600 ; N nacute ; B 26 0 575 672 ;
+C -1 ; WX 600 ; N umacron ; B 21 -15 562 565 ;
+C -1 ; WX 600 ; N Ncaron ; B 7 -13 593 802 ;
+C -1 ; WX 600 ; N Iacute ; B 96 0 504 805 ;
+C -1 ; WX 600 ; N plusminus ; B 87 44 513 558 ;
+C -1 ; WX 600 ; N brokenbar ; B 275 -175 326 675 ;
+C -1 ; WX 600 ; N registered ; B 0 -18 600 580 ;
+C -1 ; WX 600 ; N Gbreve ; B 31 -18 575 732 ;
+C -1 ; WX 600 ; N Idotaccent ; B 96 0 504 753 ;
+C -1 ; WX 600 ; N summation ; B 15 -10 585 706 ;
+C -1 ; WX 600 ; N Egrave ; B 53 0 550 805 ;
+C -1 ; WX 600 ; N racute ; B 60 0 559 672 ;
+C -1 ; WX 600 ; N omacron ; B 62 -15 538 565 ;
+C -1 ; WX 600 ; N Zacute ; B 86 0 514 805 ;
+C -1 ; WX 600 ; N Zcaron ; B 86 0 514 802 ;
+C -1 ; WX 600 ; N greaterequal ; B 98 0 502 710 ;
+C -1 ; WX 600 ; N Eth ; B 30 0 574 562 ;
+C -1 ; WX 600 ; N Ccedilla ; B 41 -151 540 580 ;
+C -1 ; WX 600 ; N lcommaaccent ; B 95 -250 505 629 ;
+C -1 ; WX 600 ; N tcaron ; B 87 -15 530 717 ;
+C -1 ; WX 600 ; N eogonek ; B 66 -172 548 441 ;
+C -1 ; WX 600 ; N Uogonek ; B 17 -172 583 562 ;
+C -1 ; WX 600 ; N Aacute ; B 3 0 597 805 ;
+C -1 ; WX 600 ; N Adieresis ; B 3 0 597 753 ;
+C -1 ; WX 600 ; N egrave ; B 66 -15 548 672 ;
+C -1 ; WX 600 ; N zacute ; B 99 0 502 672 ;
+C -1 ; WX 600 ; N iogonek ; B 95 -172 505 657 ;
+C -1 ; WX 600 ; N Oacute ; B 43 -18 557 805 ;
+C -1 ; WX 600 ; N oacute ; B 62 -15 538 672 ;
+C -1 ; WX 600 ; N amacron ; B 53 -15 559 565 ;
+C -1 ; WX 600 ; N sacute ; B 80 -15 513 672 ;
+C -1 ; WX 600 ; N idieresis ; B 95 0 505 620 ;
+C -1 ; WX 600 ; N Ocircumflex ; B 43 -18 557 787 ;
+C -1 ; WX 600 ; N Ugrave ; B 17 -18 583 805 ;
+C -1 ; WX 600 ; N Delta ; B 6 0 598 688 ;
+C -1 ; WX 600 ; N thorn ; B -6 -157 555 629 ;
+C -1 ; WX 600 ; N twosuperior ; B 177 249 424 622 ;
+C -1 ; WX 600 ; N Odieresis ; B 43 -18 557 753 ;
+C -1 ; WX 600 ; N mu ; B 21 -157 562 426 ;
+C -1 ; WX 600 ; N igrave ; B 95 0 505 672 ;
+C -1 ; WX 600 ; N ohungarumlaut ; B 62 -15 580 672 ;
+C -1 ; WX 600 ; N Eogonek ; B 53 -172 561 562 ;
+C -1 ; WX 600 ; N dcroat ; B 45 -15 591 629 ;
+C -1 ; WX 600 ; N threequarters ; B 8 -56 593 666 ;
+C -1 ; WX 600 ; N Scedilla ; B 72 -151 529 580 ;
+C -1 ; WX 600 ; N lcaron ; B 95 0 533 629 ;
+C -1 ; WX 600 ; N Kcommaaccent ; B 38 -250 582 562 ;
+C -1 ; WX 600 ; N Lacute ; B 47 0 554 805 ;
+C -1 ; WX 600 ; N trademark ; B -23 263 623 562 ;
+C -1 ; WX 600 ; N edotaccent ; B 66 -15 548 620 ;
+C -1 ; WX 600 ; N Igrave ; B 96 0 504 805 ;
+C -1 ; WX 600 ; N Imacron ; B 96 0 504 698 ;
+C -1 ; WX 600 ; N Lcaron ; B 47 0 554 562 ;
+C -1 ; WX 600 ; N onehalf ; B 0 -57 611 665 ;
+C -1 ; WX 600 ; N lessequal ; B 98 0 502 710 ;
+C -1 ; WX 600 ; N ocircumflex ; B 62 -15 538 654 ;
+C -1 ; WX 600 ; N ntilde ; B 26 0 575 606 ;
+C -1 ; WX 600 ; N Uhungarumlaut ; B 17 -18 590 805 ;
+C -1 ; WX 600 ; N Eacute ; B 53 0 550 805 ;
+C -1 ; WX 600 ; N emacron ; B 66 -15 548 565 ;
+C -1 ; WX 600 ; N gbreve ; B 45 -157 566 609 ;
+C -1 ; WX 600 ; N onequarter ; B 0 -57 600 665 ;
+C -1 ; WX 600 ; N Scaron ; B 72 -20 529 802 ;
+C -1 ; WX 600 ; N Scommaaccent ; B 72 -250 529 580 ;
+C -1 ; WX 600 ; N Ohungarumlaut ; B 43 -18 580 805 ;
+C -1 ; WX 600 ; N degree ; B 123 269 477 622 ;
+C -1 ; WX 600 ; N ograve ; B 62 -15 538 672 ;
+C -1 ; WX 600 ; N Ccaron ; B 41 -18 540 802 ;
+C -1 ; WX 600 ; N ugrave ; B 21 -15 562 672 ;
+C -1 ; WX 600 ; N radical ; B 3 -15 597 792 ;
+C -1 ; WX 600 ; N Dcaron ; B 43 0 574 802 ;
+C -1 ; WX 600 ; N rcommaaccent ; B 60 -250 559 441 ;
+C -1 ; WX 600 ; N Ntilde ; B 7 -13 593 729 ;
+C -1 ; WX 600 ; N otilde ; B 62 -15 538 606 ;
+C -1 ; WX 600 ; N Rcommaaccent ; B 38 -250 588 562 ;
+C -1 ; WX 600 ; N Lcommaaccent ; B 47 -250 554 562 ;
+C -1 ; WX 600 ; N Atilde ; B 3 0 597 729 ;
+C -1 ; WX 600 ; N Aogonek ; B 3 -172 608 562 ;
+C -1 ; WX 600 ; N Aring ; B 3 0 597 750 ;
+C -1 ; WX 600 ; N Otilde ; B 43 -18 557 729 ;
+C -1 ; WX 600 ; N zdotaccent ; B 99 0 502 620 ;
+C -1 ; WX 600 ; N Ecaron ; B 53 0 550 802 ;
+C -1 ; WX 600 ; N Iogonek ; B 96 -172 504 562 ;
+C -1 ; WX 600 ; N kcommaaccent ; B 43 -250 580 629 ;
+C -1 ; WX 600 ; N minus ; B 80 232 520 283 ;
+C -1 ; WX 600 ; N Icircumflex ; B 96 0 504 787 ;
+C -1 ; WX 600 ; N ncaron ; B 26 0 575 669 ;
+C -1 ; WX 600 ; N tcommaaccent ; B 87 -250 530 561 ;
+C -1 ; WX 600 ; N logicalnot ; B 87 108 513 369 ;
+C -1 ; WX 600 ; N odieresis ; B 62 -15 538 620 ;
+C -1 ; WX 600 ; N udieresis ; B 21 -15 562 620 ;
+C -1 ; WX 600 ; N notequal ; B 15 -16 540 529 ;
+C -1 ; WX 600 ; N gcommaaccent ; B 45 -157 566 708 ;
+C -1 ; WX 600 ; N eth ; B 62 -15 538 629 ;
+C -1 ; WX 600 ; N zcaron ; B 99 0 502 669 ;
+C -1 ; WX 600 ; N ncommaaccent ; B 26 -250 575 441 ;
+C -1 ; WX 600 ; N onesuperior ; B 172 249 428 622 ;
+C -1 ; WX 600 ; N imacron ; B 95 0 505 565 ;
+C -1 ; WX 600 ; N Euro ; B 0 0 0 0 ;
+EndCharMetrics
+EndFontMetrics
Index: /trunk/filemanager/tp/dompdf/lib/res/html.css
===================================================================
--- /trunk/filemanager/tp/dompdf/lib/res/html.css	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/lib/res/html.css	(revision 2000)
@@ -0,0 +1,370 @@
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: html.css,v $
+ * Created on: 2004-08-04
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *               1998 - Netscape Communications Corporation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Originally from mozilla (http://www.mozilla.org).  Original code was
+ * licensed under the NPL, with the option of release under the GPL or LGPL.
+ * This file is hence released under the LGPL.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is 
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *      Blake Ross <BlakeR1234@aol.com>
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.3
+ */
+
+/* $Id: html.css,v 1.4 2006-04-05 20:09:00 benjcarson Exp $ */
+
+
+html { 
+  display: -dompdf-page;
+}
+
+/* blocks */
+
+div, map, dt, isindex {
+  display: block;
+}
+
+body {
+  page-break-before: avoid;
+  display: block;
+  margin: 8px;
+}
+
+p, dl, multicol {
+  display: block;
+  margin: 1em 0;
+}
+
+dd {
+  display: block;
+  margin-left: 40px;
+}
+
+blockquote {
+  display: block;
+  margin: 1em 40px;
+}
+
+address {
+  display: block;
+  font-style: italic;
+}
+
+center {
+  display: block;
+  text-align: center;
+}
+
+blockquote[type=cite] {
+  display: block;
+  margin: 1em 0px;
+  padding-left: 1em;
+  border-left: solid;
+  border-color: blue;
+  border-width: thin;
+}
+
+h1 {
+  display: block;
+  font-size: 2em;
+  font-weight: bold;
+  margin: .67em 0;
+}
+
+h2 {
+  display: block;
+  font-size: 1.5em;
+  font-weight: bold;
+  margin: .83em 0;
+}
+
+h3 {
+  display: block;
+  font-size: 1.17em;
+  font-weight: bold;
+  margin: 1em 0;
+}
+
+h4 {
+  display: block;
+  font-weight: bold;
+  margin: 1.33em 0;
+}
+
+h5 {
+  display: block;
+  font-size: 0.83em;
+  font-weight: bold;
+  margin: 1.67em 0;
+}
+
+h6 {
+  display: block;
+  font-size: 0.67em;
+  font-weight: bold;
+  margin: 2.33em 0;
+}
+
+listing {
+  display: block;
+  font-family: fixed;
+  font-size: medium;
+  white-space: pre;
+  margin: 1em 0;
+}
+
+plaintext, xmp, pre {
+  display: block;
+  font-family: fixed;
+  white-space: pre;
+  margin: 1em 0;
+}
+
+/* tables */
+
+table {
+  display: table;
+  border-spacing: 2px; 
+  border-collapse: separate;
+  margin-top: 0;
+  margin-bottom: 0;
+  text-indent: 0;
+}
+
+/* make sure backgrounds are inherited in tables  -- see bug 4510 */
+td, th, tr {
+  background: inherit;
+}
+   
+/* caption inherits from table not table-outer */  
+caption {
+  display: table-caption;
+  text-align: center;
+}
+
+tr {
+  display: table-row;
+  vertical-align: inherit;
+}
+
+col {
+  display: table-column;
+}
+
+colgroup {
+  display: table-column-group;
+}
+
+tbody {
+  display: table-row-group;
+  vertical-align: middle;
+}
+
+thead {
+  display: table-header-group;
+  vertical-align: middle;
+}
+
+tfoot {
+  display: table-footer-group;
+  vertical-align: middle;
+}
+
+td { 
+  display: table-cell;
+  vertical-align: inherit;
+  text-align: inherit; 
+  padding: 1px;
+}
+
+th {
+  display: table-cell;
+  vertical-align: inherit;
+  font-weight: bold;
+  padding: 1px;
+  text-align: center;
+}
+
+/* inlines */
+
+q:before {
+  content: open-quote;
+}
+
+q:after {
+  content: close-quote;
+}
+
+a:link {
+  color: #00c;
+  text-decoration: underline;
+}
+
+b, strong {
+  font-weight: bolder;
+}
+
+i, cite, em, var, dfn {
+  font-style: italic;
+}
+
+tt, code, kbd, samp {
+  font-family: fixed;
+}
+
+u, ins {
+  text-decoration: underline;
+}
+
+s, strike, del {
+  text-decoration: line-through;
+}
+
+blink {
+  text-decoration: blink;
+}
+
+big {
+  font-size: larger;
+}
+
+small {
+  font-size: smaller;
+}
+
+sub {
+  vertical-align: sub;
+  font-size: smaller;
+  line-height: normal;
+}
+
+sup {
+  vertical-align: super;
+  font-size: smaller;
+  line-height: normal;
+}
+
+nobr {
+  white-space: nowrap;
+}
+
+/* lists */
+
+ul, menu, dir {
+  display: block;
+  list-style-type: disc;
+  margin: 1em 0;
+  padding-left: 40px;
+}
+
+ol {
+  display: block;
+  list-style-type: decimal;
+  margin: 1em 0;
+  padding-left: 40px;
+}
+
+li {
+  display: list-item;
+}
+
+/* nested lists have no top/bottom margins */
+ul ul,   ul ol,   ul dir,   ul menu,   ul dl,
+ol ul,   ol ol,   ol dir,   ol menu,   ol dl,
+dir ul,  dir ol,  dir dir,  dir menu,  dir dl,
+menu ul, menu ol, menu dir, menu menu, menu dl,
+dl ul,   dl ol,   dl dir,   dl menu,   dl dl {
+  margin-top: 0;
+  margin-bottom: 0;
+}
+
+/* 2 deep unordered lists use a circle */
+ol ul,   ul ul,   menu ul,   dir ul,
+ol menu, ul menu, menu menu, dir menu,
+ol dir,  ul dir,  menu dir,  dir dir {
+  list-style-type: circle;
+}
+
+/* 3 deep (or more) unordered lists use a square */
+ol ol ul,     ol ul ul,     ol menu ul,     ol dir ul,
+ol ol menu,   ol ul menu,   ol menu menu,   ol dir menu,
+ol ol dir,    ol ul dir,    ol menu dir,    ol dir dir,
+ul ol ul,     ul ul ul,     ul menu ul,     ul dir ul,
+ul ol menu,   ul ul menu,   ul menu menu,   ul dir menu,
+ul ol dir,    ul ul dir,    ul menu dir,    ul dir dir,
+menu ol ul,   menu ul ul,   menu menu ul,   menu dir ul,
+menu ol menu, menu ul menu, menu menu menu, menu dir menu,
+menu ol dir,  menu ul dir,  menu menu dir,  menu dir dir,
+dir ol ul,    dir ul ul,    dir menu ul,    dir dir ul,
+dir ol menu,  dir ul menu,  dir menu menu,  dir dir menu,
+dir ol dir,   dir ul dir,   dir menu dir,   dir dir dir {
+  list-style-type: square;
+}
+
+
+/* leafs */
+
+hr {
+  display: block;
+  height: 2px;
+  border: 1px inset;
+  margin: 0.5em auto 0.5em auto;
+}
+
+iframe {
+  border: 2px inset;
+}
+
+noframes {
+  display: none;
+}
+
+br { 
+  display: -dompdf-br;
+}
+
+img_inner {
+  display: -dompdf-image;
+}
+
+/* hidden elements */
+area, base, basefont, head, meta, script, style, title,
+noembed, noscript, param {
+   display: none;
+}
+
Index: /trunk/filemanager/tp/dompdf/ChangeLog
===================================================================
--- /trunk/filemanager/tp/dompdf/ChangeLog	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/ChangeLog	(revision 2000)
@@ -0,0 +1,826 @@
+2006-07-07 15:33  benjcarson
+
+* test/: anchor_link.html, background_image.html, baseline.html,
+  block_height.html, border_css_values.html, br.html, center_table.html,
+  gif_test.html, multiple_class.html, nbsp.html, table_height.html,
+  table_image.html:
+
+  - added missing tests to cvs
+
+2006-07-07 15:31  tag dompdf-0-5-1
+
+2006-07-07 15:31  benjcarson
+
+* ChangeLog, Makefile, dompdf.php, dompdf_config.inc.php, load_font.php,
+  include/abstract_renderer.cls.php, include/attribute_translator.cls.php,
+  include/block_frame_decorator.cls.php,
+  include/block_frame_reflower.cls.php, include/block_positioner.cls.php,
+  include/block_renderer.cls.php, include/cached_pdf_decorator.cls.php,
+  include/canvas.cls.php, include/canvas_factory.cls.php,
+  include/cellmap.cls.php, include/cpdf_adapter.cls.php,
+  include/dompdf.cls.php, include/dompdf_exception.cls.php,
+  include/dompdf_internal_exception.cls.php, include/font_metrics.cls.php,
+  include/frame.cls.php, include/frame_decorator.cls.php,
+  include/frame_factory.cls.php, include/frame_reflower.cls.php,
+  include/frame_tree.cls.php, include/functions.inc.php,
+  include/gd_adapter.cls.php, include/generated_frame_reflower.cls.php,
+  include/image_cache.cls.php, include/image_frame_decorator.cls.php,
+  include/image_frame_reflower.cls.php, include/image_renderer.cls.php,
+  include/inline_frame_decorator.cls.php,
+  include/inline_frame_reflower.cls.php, include/inline_positioner.cls.php,
+  include/inline_renderer.cls.php,
+  include/list_bullet_frame_decorator.cls.php,
+  include/list_bullet_frame_reflower.cls.php,
+  include/list_bullet_image_frame_decorator.cls.php,
+  include/list_bullet_positioner.cls.php,
+  include/list_bullet_renderer.cls.php,
+  include/null_frame_decorator.cls.php,
+  include/null_frame_reflower.cls.php, include/null_positioner.cls.php,
+  include/page_cache.cls.php, include/page_frame_decorator.cls.php,
+  include/page_frame_reflower.cls.php, include/pdflib_adapter.cls.php,
+  include/php_evaluator.cls.php, include/positioner.cls.php,
+  include/renderer.cls.php, include/style.cls.php,
+  include/stylesheet.cls.php, include/table_cell_frame_decorator.cls.php,
+  include/table_cell_frame_reflower.cls.php,
+  include/table_cell_positioner.cls.php,
+  include/table_cell_renderer.cls.php,
+  include/table_frame_decorator.cls.php,
+  include/table_frame_reflower.cls.php,
+  include/table_row_frame_decorator.cls.php,
+  include/table_row_frame_reflower.cls.php,
+  include/table_row_group_frame_reflower.cls.php,
+  include/table_row_positioner.cls.php,
+  include/text_frame_decorator.cls.php,
+  include/text_frame_reflower.cls.php, include/text_renderer.cls.php,
+  test/entities.html, test/remote.html, www/faq.php:
+
+  - potential fixes for image path/url handling
+
+2006-07-07 13:14  benjcarson
+
+* include/style.cls.php:
+
+  - allow border style declarations in any order (fixed regex, again)
+
+2006-07-07 13:10  benjcarson
+
+* include/style.cls.php:
+
+  - allow border style declarations in any order (fixed regex)
+
+2006-07-07 13:08  benjcarson
+
+* include/style.cls.php:
+
+  - allow border style declarations in any order
+
+2006-07-07 12:56  benjcarson
+
+* include/: block_frame_decorator.cls.php, frame_reflower.cls.php,
+  table_cell_frame_reflower.cls.php, text_frame_reflower.cls.php:
+
+  - fixed vertical-align in table cells
+  - fixed min/max width calculations for text frames in auto tables
+
+2006-07-07 12:19  benjcarson
+
+* dompdf.php:
+
+  - removed profiling statement
+
+2006-07-07 12:18  benjcarson
+
+* dompdf.php, include/block_frame_decorator.cls.php,
+  include/br_frame_reflower.cls.php, include/frame_factory.cls.php,
+  include/inline_frame_reflower.cls.php, include/inline_positioner.cls.php,
+  include/text_frame_reflower.cls.php, test/pages.html:
+
+  - fixed line breaks within nested tags
+
+2006-07-06 17:34  benjcarson
+
+* dompdf_config.inc.php, load_font.php, include/abstract_renderer.cls.php,
+  include/block_frame_reflower.cls.php, include/block_renderer.cls.php,
+  include/cpdf_adapter.cls.php, include/frame_reflower.cls.php,
+  include/image_cache.cls.php,
+  include/list_bullet_image_frame_decorator.cls.php,
+  include/pdflib_adapter.cls.php, include/stylesheet.cls.php,
+  include/table_cell_positioner.cls.php,
+  include/table_cell_renderer.cls.php,
+  include/table_frame_reflower.cls.php,
+  include/table_row_group_frame_decorator.cls.php,
+  include/text_renderer.cls.php, lib/class.pdf.php:
+
+  - respect block elements height when specified explicitly
+  - fix for list_bullet_image_frame_decorator constructor
+  - improvement for multiple CSS class handling by Michael Sheakoski (stylesheet.cls.php)
+  - fix for correct Content-Disposition header in class.pdf.php
+
+2006-06-20 13:26  benjcarson
+
+* include/image_cache.cls.php:
+
+  - fixed file type bugs in image cache
+
+2006-05-25 13:52  benjcarson
+
+* include/: font_metrics.cls.php, functions.inc.php, image_cache.cls.php:
+
+  - fixed issue with one image being used twice (bug #1494071)
+  - fixed issue with relative urls
+
+2006-05-04 13:37  benjcarson
+
+* include/: cellmap.cls.php, style.cls.php, stylesheet.cls.php,
+  table_frame_reflower.cls.php:
+
+  - fixed subtle inheritance bug
+  - tables now respect height property correctly
+
+2006-05-04 11:39  benjcarson
+
+* dompdf_config.inc.php, include/attribute_translator.cls.php,
+  include/image_cache.cls.php, test/php_test.php:
+
+  - added missing "align" for tables in attribute_translator
+
+2006-04-23 12:41  benjcarson
+
+* dompdf_config.inc.php, include/abstract_renderer.cls.php,
+  include/block_frame_reflower.cls.php, include/block_renderer.cls.php,
+  include/dompdf.cls.php, include/functions.inc.php,
+  include/image_cache.cls.php, include/inline_renderer.cls.php,
+  include/style.cls.php, include/stylesheet.cls.php,
+  include/table_cell_renderer.cls.php,
+  include/table_frame_decorator.cls.php, test/remote.html:
+
+  - fixed support for remote images & stylesheets
+
+2006-04-10 11:40  benjcarson
+
+* include/: functions.inc.php, pdflib_adapter.cls.php, stylesheet.cls.php:
+
+  - fixed hyperlink support when urls contain "="
+  - added support for elements with multiple css classes: e.g. class="a b"
+
+2006-04-06 15:57  benjcarson
+
+* ChangeLog:
+
+  - added ChangeLog
+
+2006-04-06 15:29  tag dompdf-0-5
+
+2006-04-06 15:29  benjcarson
+
+* Makefile, include/functions.inc.php, include/stylesheet.cls.php,
+  www/style.css, www/usage.php:
+
+  - added dompdf class reference to usage.php
+  - incorporated fixes from Nick Oostveen for aliased directory support
+
+2006-04-06 13:30  benjcarson
+
+* Makefile, dompdf_config.inc.php, include/abstract_renderer.cls.php,
+  include/block_frame_reflower.cls.php, include/block_renderer.cls.php,
+  include/dompdf.cls.php, include/image_cache.cls.php,
+  include/image_frame_decorator.cls.php, include/image_renderer.cls.php,
+  include/inline_renderer.cls.php, include/list_bullet_renderer.cls.php,
+  include/renderer.cls.php, include/style.cls.php,
+  include/table_cell_frame_decorator.cls.php,
+  include/table_cell_frame_reflower.cls.php,
+  include/table_cell_renderer.cls.php, include/text_renderer.cls.php,
+  lib/class.pdf.php:
+
+  - added support for background-image
+  - added support for vertical-align
+
+2006-04-05 18:59  benjcarson
+
+* include/: canvas.cls.php, cpdf_adapter.cls.php, gd_adapter.cls.php,
+  inline_renderer.cls.php, pdflib_adapter.cls.php, stylesheet.cls.php:
+
+  - added support for hyperlinks (both internal and external)
+
+2006-04-05 14:08  benjcarson
+
+* dompdf_config.inc.php, include/block_frame_decorator.cls.php,
+  include/cellmap.cls.php, include/dompdf.cls.php, include/frame.cls.php,
+  include/frame_decorator.cls.php, include/frame_factory.cls.php,
+  include/frame_tree.cls.php, include/image_frame_decorator.cls.php,
+  include/image_frame_reflower.cls.php,
+  include/inline_frame_decorator.cls.php,
+  include/list_bullet_frame_decorator.cls.php,
+  include/null_frame_decorator.cls.php,
+  include/page_frame_decorator.cls.php, include/pdflib_adapter.cls.php,
+  include/stylesheet.cls.php, include/table_cell_frame_decorator.cls.php,
+  include/table_cell_frame_reflower.cls.php,
+  include/table_frame_decorator.cls.php,
+  include/table_frame_reflower.cls.php,
+  include/table_row_frame_decorator.cls.php,
+  include/table_row_group_frame_decorator.cls.php,
+  include/text_frame_decorator.cls.php, lib/res/html.css:
+
+  - fixed image rendering within table cells
+  - fixed page breaks occurring within tbody
+  - incorporated patches from Jeremy Buchman:
+     cache fill & stroke colour in PDFLib adapter
+     underline links
+  - fixed vertical align in table cells
+
+2006-03-16 09:07  benjcarson
+
+* include/: block_frame_decorator.cls.php, block_frame_reflower.cls.php,
+  frame_decorator.cls.php, image_renderer.cls.php,
+  table_cell_frame_decorator.cls.php, table_cell_frame_reflower.cls.php:
+
+  - fixed vertical-align of images in table cells
+
+2006-03-15 22:24  benjcarson
+
+* include/: abstract_renderer.cls.php, attribute_translator.cls.php,
+  block_frame_decorator.cls.php, cellmap.cls.php, cpdf_adapter.cls.php,
+  dompdf.cls.php, font_metrics.cls.php, frame.cls.php, frame_tree.cls.php,
+  functions.inc.php, gd_adapter.cls.php, generated_frame_reflower.cls.php,
+  image_frame_reflower.cls.php, image_renderer.cls.php,
+  inline_renderer.cls.php, page_frame_decorator.cls.php,
+  pdflib_adapter.cls.php, style.cls.php, stylesheet.cls.php,
+  table_frame_decorator.cls.php:
+
+  - some fixes for frame not found in cellmap errors
+  - improved rendering borders around images
+  - speed improvments (array_key_exists -> isset) by Jeremy Buchman <jbuchman@pviq.com>
+
+2006-01-22 15:01  benjcarson
+
+* www/faq.php:
+
+  - updated faq
+
+2006-01-22 13:16  benjcarson
+
+* dompdf_config.inc.php, include/image_frame_reflower.cls.php:
+
+  - fixed image sizing in tables (get_min_max_width() not defined properly for images)
+
+2006-01-16 09:23  benjcarson
+
+* dompdf, dompdf_config.inc.php, include/cpdf_adapter.cls.php,
+  include/functions.inc.php, include/image_frame_decorator.cls.php,
+  include/stylesheet.cls.php:
+
+  - fixed gif support so images can be added directly via CPDF_Adapter->image()
+
+2006-01-06 00:26  benjcarson
+
+* dompdf.php, dompdf_config.inc.php, load_font.php,
+  include/attribute_translator.cls.php,
+  include/block_frame_decorator.cls.php,
+  include/block_frame_reflower.cls.php, include/cpdf_adapter.cls.php,
+  include/dompdf.cls.php, include/font_metrics.cls.php,
+  include/frame.cls.php, include/frame_decorator.cls.php,
+  include/frame_tree.cls.php, include/functions.inc.php,
+  include/generated_frame_reflower.cls.php,
+  include/image_frame_decorator.cls.php,
+  include/page_frame_decorator.cls.php, include/pdflib_adapter.cls.php,
+  include/php_evaluator.cls.php, include/style.cls.php,
+  include/stylesheet.cls.php, include/table_frame_decorator.cls.php,
+  include/table_row_group_frame_reflower.cls.php,
+  include/text_frame_decorator.cls.php,
+  include/text_frame_reflower.cls.php, test/entities.html,
+  test/latin1.html, test/pages.html, test/special.html, test/symbols.html,
+  test/unicode.html:
+
+  - unicode support:
+    - converted string functions to mb_* varieties
+    - fiddled with pdflib: unicode now works for commercial version of pdflib
+    - many changes, plus test case thanks to Jeremy Buchman <jbuchman@pviq.com>
+  - added complete HTML 4.0 entities test (from WDG HTML reference)
+
+2006-01-03 14:27  benjcarson
+
+* HACKING, INSTALL, README, include/cpdf_adapter.cls.php,
+  include/pdflib_adapter.cls.php:
+
+  - allow multiple calls to page_text
+
+2005-12-30 16:20  benjcarson
+
+* Makefile, include/pdflib_adapter.cls.php, test/pages.html:
+
+  - fixed problem with image handling and pdflib
+
+2005-12-30 15:45  benjcarson
+
+* dompdf_config.inc.php, include/cpdf_adapter.cls.php,
+  include/pdflib_adapter.cls.php, test/pages.html:
+
+  - fixed page number/page count handling
+
+2005-12-30 14:23  benjcarson
+
+* include/canvas.cls.php, include/cpdf_adapter.cls.php,
+  include/pdflib_adapter.cls.php, lib/class.pdf.php:
+
+  - added options to dompdf->output() to enable/disable pdf compression
+
+2005-12-30 14:10  benjcarson
+
+* dompdf.php, dompdf_config.inc.php, include/dompdf.cls.php,
+  include/image_frame_decorator.cls.php,
+  include/page_frame_decorator.cls.php, include/pdflib_adapter.cls.php,
+  include/stylesheet.cls.php:
+
+  - fixed handling of + CSS selector
+  - incorporated comment suggestions made by Leblanc Meneses (leblanc@tamu.edu)
+
+2005-12-13 15:56  benjcarson
+
+* dompdf.php, include/table_frame_decorator.cls.php:
+
+  - fixed problems with table page breaks
+
+2005-12-11 11:14  benjcarson
+
+* dompdf.php, include/canvas_factory.cls.php, include/cpdf_adapter.cls.php,
+  include/gd_adapter.cls.php:
+
+  - added GD rendering backend
+
+2005-12-07 14:32  benjcarson
+
+* include/: block_frame_reflower.cls.php, cellmap.cls.php,
+  cpdf_adapter.cls.php, frame.cls.php, frame_decorator.cls.php,
+  page_frame_decorator.cls.php, table_frame_decorator.cls.php,
+  table_frame_reflower.cls.php:
+
+  - adjusted text-align: justify to work a little better
+  - Improved page break behaviour in general and specifically for tables:
+    - tables now respect the page-break-inside property
+    - a few bugs with header duplication were fixed (extra or missing table headers on new page)
+  - removed redundant call to reset() at page_frame_decorator level: may fix "frame not found in cellmap" errors
+
+2005-11-29 10:59  benjcarson
+
+* include/text_frame_reflower.cls.php, lib/class.pdf.php:
+
+  - fixed erroneous line breaks when available width is exactly equal to line width
+
+2005-11-21 11:48  benjcarson
+
+* include/style.cls.php:
+
+  - improved handling of colour values
+
+2005-11-21 09:56  tag dompdf-0-4-3
+
+2005-11-21 09:56  benjcarson
+
+* include/table_frame_decorator.cls.php:
+
+  - fixed uninitialized variable typo
+
+2005-11-19 13:12  benjcarson
+
+* Makefile, include/canvas.cls.php, include/cpdf_adapter.cls.php,
+  include/dompdf.cls.php, include/pdflib_adapter.cls.php:
+
+  - compatibility fixes for 5.0.5
+
+2005-11-18 18:33  benjcarson
+
+* Makefile, README, dompdf_config.inc.php, include/cpdf_adapter.cls.php,
+  include/dompdf.cls.php, include/frame_decorator.cls.php,
+  include/style.cls.php, www/index.php:
+
+  - removed debugging code
+
+2005-11-18 18:07  benjcarson
+
+* dompdf.php, dompdf_config.inc.php, run-tests.sh, include/dompdf.cls.php,
+  include/frame.cls.php, include/frame_decorator.cls.php,
+  include/frame_reflower.cls.php, include/frame_tree.cls.php,
+  include/functions.inc.php, include/generated_frame_reflower.cls.php,
+  include/page_frame_decorator.cls.php,
+  include/page_frame_reflower.cls.php, include/php_evaluator.cls.php,
+  include/renderer.cls.php, include/style.cls.php,
+  include/stylesheet.cls.php, include/table_cell_frame_reflower.cls.php,
+  include/table_frame_reflower.cls.php, test/pages.html:
+
+  - reduced memory consumption on multi-page pdfs
+
+2005-11-10 09:12  benjcarson
+
+* INSTALL, README, TODO, dompdf.php, include/cpdf_adapter.cls.php,
+  include/frame_tree.cls.php, include/image_frame_decorator.cls.php,
+  lib/class.pdf.php, test/image.html, www/examples.php, www/faq.php,
+  www/foot.inc, www/head.inc, www/index.php, www/install.php,
+  www/style.css, www/usage.php:
+
+  - added gif support
+
+2005-09-15 15:11  benjcarson
+
+* include/pdflib_adapter.cls.php:
+
+  - fixed rendering of page text for pdflib backend
+
+2005-08-03 15:20  benjcarson
+
+* dompdf.php, dompdf_config.inc.php, include/block_frame_reflower.cls.php,
+  include/cellmap.cls.php, include/frame_decorator.cls.php,
+  include/pdflib_adapter.cls.php, include/style.cls.php,
+  include/table_frame_decorator.cls.php, test/long_table.php:
+
+  - make table headers appear on multiple pages
+
+2005-06-29 21:02  tag dompdf-0-4-2
+
+2005-06-29 21:02  benjcarson
+
+* Makefile, dompdf, dompdf.php, run-tests.sh, include/cellmap.cls.php,
+  include/dompdf.cls.php, include/frame.cls.php,
+  include/frame_decorator.cls.php, include/image_frame_decorator.cls.php,
+  include/list_bullet_frame_decorator.cls.php,
+  include/list_bullet_frame_reflower.cls.php,
+  include/list_bullet_image_frame_decorator.cls.php,
+  include/list_bullet_positioner.cls.php,
+  include/list_bullet_renderer.cls.php, include/pdflib_adapter.cls.php,
+  include/renderer.cls.php, include/style.cls.php,
+  include/table_frame_reflower.cls.php,
+  include/table_row_frame_decorator.cls.php,
+  include/text_frame_reflower.cls.php, test/pages.html, test/ul.html:
+
+  - added support for list-style-image
+  - improved output for normal <ul>s
+  - fixed/worked around render bug in xpdf, discontinued use of topdown mode for pdflib
+  - made -v flag actually work properly: dump $_dompdf_warnings after rendering is complete
+  - made cellmap more tolerant to broken tables (continue rendering, issue useful warning)
+
+2005-06-29 17:32  benjcarson
+
+* dompdf.php, dompdf_config.inc.php, include/attribute_translator.cls.php,
+  include/cellmap.cls.php, include/dompdf.cls.php, include/frame.cls.php,
+  include/frame_decorator.cls.php, include/frame_factory.cls.php,
+  include/frame_tree.cls.php, include/image_frame_decorator.cls.php,
+  include/list_bullet_frame_decorator.cls.php,
+  include/list_bullet_frame_reflower.cls.php,
+  include/list_bullet_image_frame_decorator.cls.php,
+  include/list_bullet_renderer.cls.php,
+  include/page_frame_decorator.cls.php, include/style.cls.php,
+  include/table_row_frame_reflower.cls.php:
+
+  - fixed remote image handling
+  - started work on using images for list-bullets
+
+2005-05-18 15:25  benjcarson
+
+* dompdf.php, include/block_frame_reflower.cls.php, include/dompdf.cls.php:
+
+  - fixed bug with handling of remote files
+
+2005-05-03 11:58  benjcarson
+
+* include/block_frame_reflower.cls.php, include/pdflib_adapter.cls.php,
+  lib/class.pdf.php:
+
+  - several minor fixes
+
+2005-04-13 14:27  benjcarson
+
+* include/: dompdf.cls.php, pdflib_adapter.cls.php:
+
+  - fixed handling of stream options (e.g. attachment)
+
+2005-03-17 12:25  benjcarson
+
+* lib/fonts/dompdf_font_family_cache.dist:
+
+  - didn't mean to commit that change to font family dist...
+
+2005-03-17 12:23  benjcarson
+
+* include/pdflib_adapter.cls.php, lib/fonts/dompdf_font_family_cache.dist:
+
+  - fixed issue with pdflib loading fonts incorrectly
+
+2005-03-17 11:18  benjcarson
+
+* include/dompdf.cls.php, test/demo_01.html:
+
+  - thought i fixed this...
+
+2005-03-15 20:51  tag dompdf-0-4-1
+
+2005-03-15 20:51  benjcarson
+
+* include/image_frame_reflower.cls.php:
+
+  - fixed bug in image reflow code
+
+2005-03-15 20:42  benjcarson
+
+* Makefile, include/dompdf.cls.php, include/functions.inc.php,
+  include/stylesheet.cls.php, www/faq.php:
+
+  - fixed "no block parent error"
+
+2005-03-10 11:59  benjcarson
+
+* include/: table_cell_frame_reflower.cls.php,
+  table_frame_reflower.cls.php:
+
+  - fixed some issues with nested tables
+
+2005-03-04 13:30  benjcarson
+
+* Makefile, TODO, dompdf_config.inc.php, include/canvas_factory.cls.php,
+  include/stylesheet.cls.php, lib/fonts/dompdf_font_family_cache.dist,
+  www/faq.php:
+
+  - Committing version 0.4:
+   - table spanning works!
+  - potentially fix IIS?  have not tested
+  - fix auto backend detection
+  - change format of the font family cache (breaks BC): need to remove .afm extension from path
+
+2005-03-04 13:28  benjcarson
+
+* include/: cellmap.cls.php, cpdf_adapter.cls.php,
+  image_frame_reflower.cls.php, text_frame_reflower.cls.php:
+
+  - fixes to text layout
+  - use DOMPDF_DPI when image dims are auto
+  - fix bug in cellmap
+
+2005-03-02 14:26  benjcarson
+
+* include/block_frame_reflower.cls.php, include/pdflib_adapter.cls.php,
+  include/text_renderer.cls.php, test/entities.html:
+
+  - adjust font size reported by pdlib to more closely match that reported by CPDF.
+
+2005-03-02 11:37  benjcarson
+
+* dompdf.php, include/frame.cls.php, include/pdflib_adapter.cls.php:
+
+  - added object (template) support to PDFLib_Adapter
+
+2005-03-02 10:34  benjcarson
+
+* include/pdflib_adapter.cls.php:
+
+  - added page_text() function
+
+2005-03-01 17:51  benjcarson
+
+* HACKING, README, dompdf.php, dompdf_config.inc.php, load_font.php,
+  include/attribute_translator.cls.php,
+  include/cached_pdf_decorator.cls.php, include/canvas.cls.php,
+  include/canvas_factory.cls.php, include/dompdf.cls.php,
+  include/font_metrics.cls.php, include/frame_tree.cls.php,
+  include/image_frame_decorator.cls.php,
+  include/image_frame_reflower.cls.php, include/page_cache.cls.php,
+  include/pdflib_adapter.cls.php, include/renderer.cls.php,
+  include/style.cls.php, lib/res/html.css, test/demo_01.html,
+  test/image.html, www/examples.php, www/usage.php:
+
+  - added new rendering backend: PDFLib.
+    Rendering backend can be selected using the DOMPDF_PDF_BACKEND config option.
+
+2005-03-01 17:38  benjcarson
+
+* include/: cpdf_adapter.cls.php, pdf_adapter.cls.php:
+
+  - renamed pdf_adapter.cls.php to cpdf_adapter.cls.php
+
+2005-02-28 11:46  benjcarson
+
+* include/: attribute_translator.cls.php, frame_factory.cls.php,
+  frame_tree.cls.php, image_frame_reflower.cls.php, renderer.cls.php:
+
+  - fixes to image handling code
+
+2005-02-14 01:46  benjcarson
+
+* Makefile, include/block_frame_reflower.cls.php, include/cellmap.cls.php,
+  include/frame_factory.cls.php, include/page_frame_decorator.cls.php,
+  include/style.cls.php, include/table_cell_frame_reflower.cls.php,
+  include/table_frame_decorator.cls.php,
+  include/table_frame_reflower.cls.php,
+  include/table_row_frame_reflower.cls.php, test/long_table.php,
+  test/pages.html, www/head.inc:
+
+  - initial work on table page breaking code:
+    tested with a simple table: success!
+  - still need to handle table headers and footers properly
+  - fixed bug in style.cls.php where rgb(r,g,b) colour values were not being
+    parsed properly.
+
+2005-02-06 14:01  benjcarson
+
+* Makefile, include/block_frame_reflower.cls.php, include/frame.cls.php,
+  include/frame_decorator.cls.php, include/page_frame_decorator.cls.php,
+  include/page_frame_reflower.cls.php, lib/res/html.css, test/pages.html:
+
+  - finished rework of paging code.
+
+2005-02-05 10:32  benjcarson
+
+* include/: block_frame_reflower.cls.php, canvas.cls.php,
+  page_frame_decorator.cls.php, page_frame_reflower.cls.php,
+  pdf_adapter.cls.php:
+
+  - more work on page layout, still incomplete.
+
+2005-02-01 08:11  benjcarson
+
+* dompdf.php, dompdf_config.inc.php, include/block_frame_reflower.cls.php,
+  include/cellmap.cls.php, include/frame_decorator.cls.php,
+  include/inline_frame_decorator.cls.php,
+  include/page_frame_decorator.cls.php, test/google.html, test/pages.html:
+
+  - begin rework of paging code, part 1.
+
+2005-01-25 16:12  benjcarson
+
+* Makefile, dompdf, www/about.php, www/head.inc:
+
+  - added dompdf shell script
+  - added Makefile
+  - removed duplicate file
+
+2005-01-25 16:02  benjcarson
+
+* www/file.php:
+
+  - removed file.php
+
+2005-01-25 15:55  tag start
+
+2005-01-25 15:55  benjcarson
+
+* HACKING, dompdf.php, INSTALL, LICENSE.LGPL, README, TODO,
+  dompdf_config.inc.php, load_font.php, include/abstract_renderer.cls.php,
+  include/block_frame_decorator.cls.php, include/dompdf_exception.cls.php,
+  include/file.skel, include/block_frame_reflower.cls.php,
+  include/block_positioner.cls.php, include/block_renderer.cls.php,
+  include/br_frame_reflower.cls.php, include/cached_pdf_decorator.cls.php,
+  include/canvas.cls.php, include/cellmap.cls.php, include/dompdf.cls.php,
+  include/font_metrics.cls.php, include/frame.cls.php,
+  include/frame_decorator.cls.php, include/frame_factory.cls.php,
+  include/frame_reflower.cls.php, include/frame_tree.cls.php,
+  include/functions.inc.php, include/generated_frame_reflower.cls.php,
+  include/inline_frame_decorator.cls.php,
+  include/inline_frame_reflower.cls.php, include/inline_positioner.cls.php,
+  include/inline_renderer.cls.php,
+  include/list_bullet_frame_decorator.cls.php,
+  include/list_bullet_frame_reflower.cls.php,
+  include/list_bullet_positioner.cls.php,
+  include/list_bullet_renderer.cls.php,
+  include/null_frame_decorator.cls.php,
+  include/null_frame_reflower.cls.php, include/null_positioner.cls.php,
+  include/page_cache.cls.php, include/page_frame_decorator.cls.php,
+  include/page_frame_reflower.cls.php, include/pdf_adapter.cls.php,
+  include/php_evaluator.cls.php, include/positioner.cls.php,
+  include/renderer.cls.php, include/style.cls.php,
+  include/stylesheet.cls.php, include/attribute_translator.cls.php,
+  include/dompdf_internal_exception.cls.php,
+  include/image_frame_decorator.cls.php,
+  include/image_frame_reflower.cls.php, include/image_renderer.cls.php,
+  include/table_cell_frame_decorator.cls.php,
+  include/table_cell_frame_reflower.cls.php,
+  include/table_cell_positioner.cls.php,
+  include/table_cell_renderer.cls.php,
+  include/table_frame_decorator.cls.php,
+  include/table_frame_reflower.cls.php,
+  include/table_row_frame_decorator.cls.php,
+  include/table_row_frame_reflower.cls.php,
+  include/table_row_group_frame_reflower.cls.php,
+  include/table_row_positioner.cls.php,
+  include/text_frame_decorator.cls.php,
+  include/text_frame_reflower.cls.php, include/text_renderer.cls.php,
+  lib/class.pdf.php, lib/fonts/.cvsignore, lib/fonts/Arial.afm,
+  lib/fonts/Arial_Bold.afm, lib/fonts/Arial_Bold_Italic.afm,
+  lib/fonts/Arial_Italic.afm, lib/fonts/Georgia.afm,
+  lib/fonts/Georgia_Bold.afm, lib/fonts/Georgia_Bold_Italic.afm,
+  lib/fonts/Georgia_Italic.afm, lib/fonts/Times_New_Roman.afm,
+  lib/fonts/Times_New_Roman_Bold.afm,
+  lib/fonts/Times_New_Roman_Bold_Italic.afm,
+  lib/fonts/Times_New_Roman_Italic.afm, lib/fonts/Trebuchet_MS.afm,
+  lib/fonts/Trebuchet_MS_Bold.afm, lib/fonts/Trebuchet_MS_Bold_Italic.afm,
+  lib/fonts/Trebuchet_MS_Italic.afm, lib/fonts/Verdana.afm,
+  lib/fonts/Verdana_Bold.afm, lib/fonts/Verdana_Bold_Italic.afm,
+  lib/fonts/Courier.afm, lib/fonts/Verdana_Italic.afm, lib/fonts/lucon.afm,
+  lib/fonts/slkscr.afm, lib/fonts/slkscrb.afm, lib/fonts/slkscre.afm,
+  lib/fonts/slkscreb.afm, lib/fonts/Courier-Bold.afm,
+  lib/fonts/Courier-BoldOblique.afm, lib/fonts/Courier-Oblique.afm,
+  lib/fonts/Helvetica.afm, lib/fonts/Helvetica-Bold.afm,
+  lib/fonts/Helvetica-BoldOblique.afm, lib/fonts/Helvetica-Oblique.afm,
+  lib/fonts/Times-Bold.afm, lib/fonts/Times-BoldItalic.afm,
+  lib/fonts/Times-Italic.afm, lib/fonts/Times-Roman.afm,
+  lib/fonts/ZapfDingbats.afm, lib/fonts/dompdf_font_family_cache.dist,
+  lib/res/broken_image.png, lib/res/html.css, test/border_test.html,
+  test/common.css, test/demo_01.html, test/dompdf_simple.png,
+  test/google.html, test/html_attributes.html, test/image.html,
+  test/large_table.htm, test/margin.html, test/pages.html,
+  test/php_test.php, test/print_static.css, test/simple_ul.html,
+  test/table.html, test/table_01.html, www/about.php, www/examples.php,
+  www/file.php, www/foot.inc, www/head.inc, www/index.php, www/install.php,
+  www/style.css, www/usage.php, www/images/arrow_01.gif,
+  www/images/arrow_02.gif, www/images/arrow_03.gif,
+  www/images/arrow_04.gif, www/images/arrow_05.gif,
+  www/images/arrow_06.gif, www/images/css2.png,
+  www/images/dompdf_simple.png, www/images/favicon.ico,
+  www/images/favicon.png, www/images/h_bar.gif, www/images/left_arrow.gif,
+  www/images/logo.png, www/images/logo.xcf,
+  www/images/php5-power-micro.png, www/images/small_logo.png,
+  www/images/star_01.gif, www/images/star_02.gif, www/images/star_03.gif,
+  www/images/star_04.gif, www/images/star_05.gif, www/images/title.gif,
+  www/images/v_bar.gif, www/images/xhtml10.png:
+
+  Initial revision
+
+2005-01-25 15:55  benjcarson
+
+* HACKING, dompdf.php, INSTALL, LICENSE.LGPL, README, TODO,
+  dompdf_config.inc.php, load_font.php, include/abstract_renderer.cls.php,
+  include/block_frame_decorator.cls.php, include/dompdf_exception.cls.php,
+  include/file.skel, include/block_frame_reflower.cls.php,
+  include/block_positioner.cls.php, include/block_renderer.cls.php,
+  include/br_frame_reflower.cls.php, include/cached_pdf_decorator.cls.php,
+  include/canvas.cls.php, include/cellmap.cls.php, include/dompdf.cls.php,
+  include/font_metrics.cls.php, include/frame.cls.php,
+  include/frame_decorator.cls.php, include/frame_factory.cls.php,
+  include/frame_reflower.cls.php, include/frame_tree.cls.php,
+  include/functions.inc.php, include/generated_frame_reflower.cls.php,
+  include/inline_frame_decorator.cls.php,
+  include/inline_frame_reflower.cls.php, include/inline_positioner.cls.php,
+  include/inline_renderer.cls.php,
+  include/list_bullet_frame_decorator.cls.php,
+  include/list_bullet_frame_reflower.cls.php,
+  include/list_bullet_positioner.cls.php,
+  include/list_bullet_renderer.cls.php,
+  include/null_frame_decorator.cls.php,
+  include/null_frame_reflower.cls.php, include/null_positioner.cls.php,
+  include/page_cache.cls.php, include/page_frame_decorator.cls.php,
+  include/page_frame_reflower.cls.php, include/pdf_adapter.cls.php,
+  include/php_evaluator.cls.php, include/positioner.cls.php,
+  include/renderer.cls.php, include/style.cls.php,
+  include/stylesheet.cls.php, include/attribute_translator.cls.php,
+  include/dompdf_internal_exception.cls.php,
+  include/image_frame_decorator.cls.php,
+  include/image_frame_reflower.cls.php, include/image_renderer.cls.php,
+  include/table_cell_frame_decorator.cls.php,
+  include/table_cell_frame_reflower.cls.php,
+  include/table_cell_positioner.cls.php,
+  include/table_cell_renderer.cls.php,
+  include/table_frame_decorator.cls.php,
+  include/table_frame_reflower.cls.php,
+  include/table_row_frame_decorator.cls.php,
+  include/table_row_frame_reflower.cls.php,
+  include/table_row_group_frame_reflower.cls.php,
+  include/table_row_positioner.cls.php,
+  include/text_frame_decorator.cls.php,
+  include/text_frame_reflower.cls.php, include/text_renderer.cls.php,
+  lib/class.pdf.php, lib/fonts/.cvsignore, lib/fonts/Arial.afm,
+  lib/fonts/Arial_Bold.afm, lib/fonts/Arial_Bold_Italic.afm,
+  lib/fonts/Arial_Italic.afm, lib/fonts/Georgia.afm,
+  lib/fonts/Georgia_Bold.afm, lib/fonts/Georgia_Bold_Italic.afm,
+  lib/fonts/Georgia_Italic.afm, lib/fonts/Times_New_Roman.afm,
+  lib/fonts/Times_New_Roman_Bold.afm,
+  lib/fonts/Times_New_Roman_Bold_Italic.afm,
+  lib/fonts/Times_New_Roman_Italic.afm, lib/fonts/Trebuchet_MS.afm,
+  lib/fonts/Trebuchet_MS_Bold.afm, lib/fonts/Trebuchet_MS_Bold_Italic.afm,
+  lib/fonts/Trebuchet_MS_Italic.afm, lib/fonts/Verdana.afm,
+  lib/fonts/Verdana_Bold.afm, lib/fonts/Verdana_Bold_Italic.afm,
+  lib/fonts/Courier.afm, lib/fonts/Verdana_Italic.afm, lib/fonts/lucon.afm,
+  lib/fonts/slkscr.afm, lib/fonts/slkscrb.afm, lib/fonts/slkscre.afm,
+  lib/fonts/slkscreb.afm, lib/fonts/Courier-Bold.afm,
+  lib/fonts/Courier-BoldOblique.afm, lib/fonts/Courier-Oblique.afm,
+  lib/fonts/Helvetica.afm, lib/fonts/Helvetica-Bold.afm,
+  lib/fonts/Helvetica-BoldOblique.afm, lib/fonts/Helvetica-Oblique.afm,
+  lib/fonts/Times-Bold.afm, lib/fonts/Times-BoldItalic.afm,
+  lib/fonts/Times-Italic.afm, lib/fonts/Times-Roman.afm,
+  lib/fonts/ZapfDingbats.afm, lib/fonts/dompdf_font_family_cache.dist,
+  lib/res/broken_image.png, lib/res/html.css, test/border_test.html,
+  test/common.css, test/demo_01.html, test/dompdf_simple.png,
+  test/google.html, test/html_attributes.html, test/image.html,
+  test/large_table.htm, test/margin.html, test/pages.html,
+  test/php_test.php, test/print_static.css, test/simple_ul.html,
+  test/table.html, test/table_01.html, www/about.php, www/examples.php,
+  www/file.php, www/foot.inc, www/head.inc, www/index.php, www/install.php,
+  www/style.css, www/usage.php, www/images/arrow_01.gif,
+  www/images/arrow_02.gif, www/images/arrow_03.gif,
+  www/images/arrow_04.gif, www/images/arrow_05.gif,
+  www/images/arrow_06.gif, www/images/css2.png,
+  www/images/dompdf_simple.png, www/images/favicon.ico,
+  www/images/favicon.png, www/images/h_bar.gif, www/images/left_arrow.gif,
+  www/images/logo.png, www/images/logo.xcf,
+  www/images/php5-power-micro.png, www/images/small_logo.png,
+  www/images/star_01.gif, www/images/star_02.gif, www/images/star_03.gif,
+  www/images/star_04.gif, www/images/star_05.gif, www/images/title.gif,
+  www/images/v_bar.gif, www/images/xhtml10.png:
+
+  Welcome to SourceForge.net!
+
Index: /trunk/filemanager/tp/dompdf/load_font.php
===================================================================
--- /trunk/filemanager/tp/dompdf/load_font.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/load_font.php	(revision 2000)
@@ -0,0 +1,256 @@
+#!/usr/bin/php
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: load_font.php,v $
+ * Created on: 2004-06-23
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @package dompdf
+ * @version 0.5.1
+ */
+
+require_once("dompdf_config.inc.php");
+
+/**
+ * @access private
+ */
+define("_TTF2AFM", escapeshellarg(TTF2AFM) . " -a -GAef -OW ");
+
+if ( !file_exists(TTF2AFM) ) {
+  die("Unable to locate the ttf2afm / ttf2pt1 executable (checked " . TTF2AFM . ").\n");
+}
+
+
+/**
+ * Display command line usage
+ *
+ */
+function usage() {
+
+  echo <<<EOD
+
+Usage: {$_SERVER["argv"][0]} font_family n_file [b_file] [i_file] [bi_file]
+
+font_family:      the name of the font, e.g. Verdana, 'Times New Roman',
+                  monospace, sans-serif.
+
+n_file:           the .pfb or .ttf file for the normal, non-bold, non-italic
+                  face of the font.
+
+{b|i|bi}_file:    the files for each of the respective (bold, italic,
+                  bold-italic) faces.
+
+
+If the optional b|i|bi files are not specified, load_font.php will search
+the directory containing normal font file (n_file) for additional files that
+it thinks might be the correct ones (e.g. that end in _Bold or b or B).  If
+it finds the files they will also be processed.  All files will be
+automatically copied to the DOMPDF font directory, and afm files will be
+generated using ttf2afm.
+
+Examples:
+
+./load_font.php silkscreen /usr/share/fonts/truetype/slkscr.ttf
+./load_font.php 'Times New Roman' /mnt/c_drive/WINDOWS/Fonts/times.ttf
+
+
+EOD;
+
+}
+
+if ( $_SERVER["argc"] < 3 ) {
+  usage();
+  die();
+}
+
+/**
+ * Installs a new font family
+ *
+ * This function maps a font-family name to a font.  It tries to locate the
+ * bold, italic, and bold italic versions of the font as well.  Once the
+ * files are located, ttf versions of the font are copied to the fonts
+ * directory.  Changes to the font lookup table are saved to the cache.
+ *
+ * @param string $fontname the font-family name
+ * @param string $normal the filename of the normal face font subtype
+ * @param string $bold   the filename of the bold face font subtype
+ * @param string $italic the filename of the italic face font subtype
+ * @param string $bold_italic the filename of the bold italic face font subtype
+ */
+function install_font_family($fontname, $normal, $bold = null, $italic = null, $bold_italic = null) {
+
+  // Check if the base filename is readable
+  if ( !is_readable($normal) )
+    throw new DOMPDF_Exception("Unable to read '$normal'.");
+
+  $dir = dirname($normal);
+  list($file, $ext) = explode(".", basename($normal), 2);  // subtract extension
+
+  // Try $file_Bold.$ext etc.
+  $ext = ".$ext";
+
+  if ( !isset($bold) || !is_readable($bold) ) {
+    $bold   = $dir . "/" . $file . "_Bold" . $ext;
+    if ( !is_readable($bold) ) {
+
+      // Try $file . "b"
+      $bold = $dir . "/" . $file . "b" . $ext;
+      if ( !is_readable($bold) ) {
+
+        // Try $file . "B"
+        $bold = $dir . "/" . $file . "B" . $ext;
+        if ( !is_readable($bold) )
+          $bold = null;
+      }
+    }
+  }
+
+  if ( is_null($bold) )
+    echo ("Unable to find bold face file.\n");
+
+  if ( !isset($italic) || !is_readable($italic) ) {
+    $italic = $dir . "/" . $file . "_Italic" . $ext;
+    if ( !is_readable($italic) ) {
+
+      // Try $file . "i"
+      $italic = $dir . "/" . $file . "i" . $ext;
+      if ( !is_readable($italic) ) {
+
+        // Try $file . "I"
+        $italic = $dir . "/" . $file . "I" . $ext;
+        if ( !is_readable($italic) )
+          $italic = null;
+      }
+    }
+  }
+
+  if ( is_null($italic) )
+    echo ("Unable to find italic face file.\n");
+
+  if ( !isset($bold_italic) || !is_readable($bold_italic) ) {
+    $bold_italic = $dir . "/" . $file . "_Bold_Italic" . $ext;
+
+    if ( !is_readable($bold_italic) ) {
+
+      // Try $file . "bi"
+      $bold_italic = $dir . "/" . $file . "bi" . $ext;
+      if ( !is_readable($bold_italic) ) {
+
+        // Try $file . "BI"
+        $bold_italic = $dir . "/" . $file . "BI" . $ext;
+        if ( !is_readable($bold_italic) ) {
+
+          // Try $file . "ib"
+          $bold_italic = $dir . "/" . $file . "ib" . $ext;
+          if ( !is_readable($bold_italic) ) {
+
+            // Try $file . "IB"
+            $bold_italic = $dir . "/" . $file . "IB" . $ext;
+            if ( !is_readable($bold_italic) )
+              $bold_italic = null;
+          }
+        }
+      }
+    }
+  }
+
+  if ( is_null($bold_italic) )
+    echo ("Unable to find bold italic face file.\n");
+
+  $fonts = compact("normal", "bold", "italic", "bold_italic");
+  $entry = array();
+
+  if ( strtolower($ext) === ".pfb" || strtolower($ext) === ".ttf" || strtolower($ext) === ".otf"  ) {
+
+    // Copy the files to the font directory.
+    foreach ($fonts as $var => $src) {
+
+      if ( is_null($src) ) {
+        $entry[$var] = DOMPDF_FONT_DIR . basename($normal);
+        continue;
+      }
+
+      // Verify that the fonts exist and are readable
+      if ( !is_readable($src) )
+        throw new User_DOMPDF_Exception("Requested font '$pathname' is not readable");
+
+      $dest = DOMPDF_FONT_DIR . basename($src);
+      if ( !is_writeable(dirname($dest)) )
+        throw new User_DOMPDF_Exception("Unable to write to destination '$dest'.");
+
+      echo "Copying $src to $dest...\n";
+
+      if ( !copy($src, $dest) )
+        throw new DOMPDF_Exception("Unable to copy '$src' to '" . DOMPDF_FONT_DIR . "$dest'.");
+
+      $entry[$var] = $dest;
+    }
+
+  } else
+    throw new DOMPDF_Exception("Unable to process fonts of type '$ext'.");
+
+
+  // If the extension is a ttf, try and convert the fonts to afm too
+  if ( mb_strtolower($ext) === ".ttf" || strtolower($ext) == ".otf" ) {
+    foreach ($fonts as $var => $font) {
+      if ( is_null($font) ) {
+        $entry[$var] = DOMPDF_FONT_DIR . mb_substr(basename($normal), 0, -4);
+        continue;
+      }
+      $dest = DOMPDF_FONT_DIR . mb_substr(basename($font),0, -4);
+      echo "Generating .afm for $font...\n";
+      echo "Command: " . _TTF2AFM . " " . escapeshellarg($font) . " " . escapeshellarg($dest) . "\n";
+      exec( _TTF2AFM . " " . escapeshellarg($font) . " " . escapeshellarg($dest) . " &> /dev/null", $output, $ret );
+
+      $entry[$var] = $dest;
+    }
+
+  }
+
+  // FIXME: how to generate afms from pfb?
+
+  // Store the fonts in the lookup table
+  Font_Metrics::set_font_family(strtolower($fontname), $entry);
+
+  // Save the changes
+  Font_Metrics::save_font_families();
+}
+
+
+$normal = $_SERVER["argv"][2];
+$bold   = isset($_SERVER["argv"][3]) ? $_SERVER["argv"][3] : null;
+$italic = isset($_SERVER["argv"][4]) ? $_SERVER["argv"][4] : null;
+$bold_italic = isset($_SERVER["argv"][5]) ? $_SERVER["argv"][5] : null;
+
+install_font_family($_SERVER["argv"][1], $normal, $bold, $italic, $bold_italic);
+
+?>
Index: /trunk/filemanager/tp/dompdf/dompdf_config.inc.php
===================================================================
--- /trunk/filemanager/tp/dompdf/dompdf_config.inc.php	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/dompdf_config.inc.php	(revision 2000)
@@ -0,0 +1,424 @@
+<?php
+/**
+ * DOMPDF - PHP5 HTML to PDF renderer
+ *
+ * File: $RCSfile: dompdf_config.inc.php,v $
+ * Created on: 2004-08-04
+ *
+ * Copyright (c) 2004 - Benj Carson <benjcarson@digitaljunkies.ca>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library in the file LICENSE.LGPL; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA
+ *
+ * Alternatively, you may distribute this software under the terms of the
+ * PHP License, version 3.0 or later.  A copy of this license should have
+ * been distributed with this file in the file LICENSE.PHP .  If this is not
+ * the case, you can obtain a copy at http://www.php.net/license/3_0.txt.
+ *
+ * The latest version of DOMPDF might be available at:
+ * http://www.digitaljunkies.ca/dompdf
+ *
+ * @link http://www.digitaljunkies.ca/dompdf
+ * @copyright 2004 Benj Carson
+ * @author Benj Carson <benjcarson@digitaljunkies.ca>
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @package dompdf
+ * @version 0.5.1
+ *
+ * Changes
+ * @contributor Helmut Tischer <htischer@weihenstephan.org>
+ * @version 0.5.1.htischer.20090507
+ * - Allow overriding of configuration settings by calling php script.
+ *   This allows replacing of dompdf by a new version in an application
+ *   without any modification,
+ * - Optionally separate font cache folder from font folder.
+ *   This allows write protecting the entire installation
+ * - Add settings to enable/disable additional debug output categories
+ * - Change some defaults to more practical values
+ * - Add comments about configuration parameter implications
+ */
+
+/* $Id: dompdf_config.inc.php 186 2009-10-19 22:42:06Z eclecticgeek@gmail.com $ */
+
+//error_reporting(E_STRICT | E_ALL);
+
+/**
+ * The root of your DOMPDF installation
+ */
+define("DOMPDF_DIR", str_replace(DIRECTORY_SEPARATOR, '/', realpath(dirname(__FILE__))));
+
+/**
+ * The location of the DOMPDF include directory
+ */
+define("DOMPDF_INC_DIR", DOMPDF_DIR . "/include");
+
+/**
+ * The location of the DOMPDF lib directory
+ */
+define("DOMPDF_LIB_DIR", DOMPDF_DIR . "/lib");
+
+//FIXME: Some function definitions rely on the constants defined by DOMPDF. However, might this location prove problematic?
+require_once(DOMPDF_INC_DIR . "/functions.inc.php");
+
+/**
+ * The location of the DOMPDF font directory
+ *
+ * If DOMPDF_FONT_DIR identical to DOMPDF_FONT_CACHE or user executing DOMPDF from the CLI,
+ * this directory must be writable by the webserver process ().
+ * *Please note the trailing slash.*
+ *
+ * Notes regarding fonts:
+ * Additional .afm font metrics can be added by executing load_font.php from command line.
+ * Converting ttf fonts to afm requires the external tool referenced by TTF2AFM
+ *
+ * Only the original "Base 14 fonts" are present on all pdf viewers. Additional fonts must
+ * be embedded in the pdf file or the PDF may not display correctly. This can significantly
+ * increase file size and could violate copyright provisions of a font. Font embedding is
+ * not currently supported (? via HT).
+ *
+ * Any font specification in the source HTML is translated to the closest font available
+ * in the font directory.
+ *
+ * The pdf standard "Base 14 fonts" are:
+ * Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique,
+ * Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique,
+ * Times-Roman, Times-Bold, Times-BoldItalic, Times-Italic,
+ * Symbol,
+ * ZapfDingbats,
+ *
+ * *Please note the trailing slash.*
+ */
+define("DOMPDF_FONT_DIR", DOMPDF_DIR . "/lib/fonts/");
+
+/**
+ * The location of the DOMPDF font cache directory
+ *
+ * Note this directory must be writable by the webserver process
+ * This folder must already exist!
+ * It contains the .afm files, on demand parsed, converted to php syntax and cached
+ * This folder can be the same as DOMPDF_FONT_DIR
+ *
+ * *Please note the trailing slash.*
+ */
+
+if (!defined("DOMPDF_FONT_CACHE")) {
+  define("DOMPDF_FONT_CACHE", DOMPDF_FONT_DIR);
+}
+
+/**
+ * The location of a temporary directory.
+ *
+ * The directory specified must be writeable by the webserver process.
+ * The temporary directory is required to download remote images and when
+ * using the PFDLib back end.
+ */
+if (!defined('DOMPDF_TEMP_DIR')) {
+  define("DOMPDF_TEMP_DIR", sys_get_temp_dir());
+}
+
+/**
+ * ==== IMPORTANT ====
+ *
+ * dompdf's "chroot": Prevents dompdf from accessing system files or other
+ * files on the webserver.  All local files opened by dompdf must be in a
+ * subdirectory of this directory.  DO NOT set it to '/' since this could
+ * allow an attacker to use dompdf to read any files on the server.  This
+ * should be an absolute path.
+ * This is only checked on command line call by dompdf.php, but not by
+ * direct class use like:
+ * $dompdf = new DOMPDF();	$dompdf->load_html($htmldata); $dompdf->render(); $pdfdata = $dompdf->output();
+ */
+if (!defined("DOMPDF_CHROOT")) {
+  define("DOMPDF_CHROOT", realpath(DOMPDF_DIR));
+}
+
+/**
+ * Whether to use Unicode fonts or not.
+ *
+ * When set to true the PDF backend must be set to "CPDF" and fonts must be
+ * loaded via the modified ttf2ufm tool included with dompdf (see below).
+ * Unicode font metric files (with .ufm extensions) must be created with
+ * ttf2ufm.  load_font.php should do this for you if the TTF2AFM define below
+ * points to the modified ttf2ufm tool included with dompdf.
+ *
+ * When enabled, dompdf can support all Unicode glyphs.  Any glyphs used in a
+ * document must be present in your fonts, however.
+ *
+ */
+if (!defined("DOMPDF_UNICODE_ENABLED")) {
+  define("DOMPDF_UNICODE_ENABLED", false);
+}
+
+/**
+ * The path to the tt2pt1 utility (used to convert ttf to afm)
+ *
+ * Not strictly necessary, but useful if you would like to install
+ * additional fonts using the {@link load_font.php} utility.
+ *
+ * Windows users should use something like this:
+ * define("TTF2AFM", "C:\\Program Files\\Ttf2Pt1\\bin\\ttf2pt1.exe");
+ *
+ * @link http://ttf2pt1.sourceforge.net/
+ */
+if (!defined("TTF2AFM")) {
+  define("TTF2AFM", DOMPDF_LIB_DIR ."/ttf2ufm/ttf2ufm-src/ttf2pt1");
+  //define("TTF2AFM", "/usr/bin/ttf2pt1");
+}
+
+/**
+ * The PDF rendering backend to use
+ *
+ * Valid settings are 'PDFLib', 'CPDF' (the bundled R&OS PDF class), 'GD' and
+ * 'auto'.  'auto' will look for PDFLib and use it if found, or if not it will
+ * fall back on CPDF.  'GD' renders PDFs to graphic files.  {@link
+ * Canvas_Factory} ultimately determines which rendering class to instantiate
+ * based on this setting.
+ *
+ * Both PDFLib & CPDF rendering backends provide sufficient rendering
+ * capabilities for dompdf, however additional features (e.g. object,
+ * image and font support, etc.) differ between backends.  Please see
+ * {@link PDFLib_Adapter} for more information on the PDFLib backend
+ * and {@link CPDF_Adapter} and lib/class.pdf.php for more information
+ * on CPDF.  Also see the documentation for each backend at the links
+ * below.
+ *
+ * The GD rendering backend is a little different than PDFLib and
+ * CPDF.  Several features of CPDF and PDFLib are not supported or do
+ * not make any sense when creating image files.  For example,
+ * multiple pages are not supported, nor are PDF 'objects'.  Have a
+ * look at {@link GD_Adapter} for more information.  GD support is new
+ * and experimental, so use it at your own risk.
+ *
+ * @link http://www.pdflib.com
+ * @link http://www.ros.co.nz/pdf
+ * @link http://www.php.net/image
+ */
+if (!defined("DOMPDF_PDF_BACKEND")) {
+  define("DOMPDF_PDF_BACKEND", "CPDF");
+}
+
+/**
+ * PDFlib license key
+ *
+ * If you are using a licensed, commercial version of PDFlib, specify
+ * your license key here.  If you are using PDFlib-Lite or are evaluating
+ * the commercial version of PDFlib, comment out this setting.
+ *
+ * @link http://www.pdflib.com
+ *
+ * If pdflib present in web server and auto or selected explicitely above,
+ * a real license code must exist!
+ */
+if (!defined("DOMPDF_PDFLIB_LICENSE")) {
+  #define("DOMPDF_PDFLIB_LICENSE", "your license key here");
+}
+
+/**
+ * html target media view which should be rendered into pdf.
+ * List of types and parsing rules for future extensions:
+ * http://www.w3.org/TR/REC-html40/types.html
+ *   screen, tty, tv, projection, handheld, print, braille, aural, all
+ * Note: aural is deprecated in CSS 2.1 because it is replaced by speech in CSS 3.
+ * Note, even though the generated pdf file is intended for print output,
+ * the desired content might be different (e.g. screen or projection view of html file).
+ * Therefore allow specification of content here.
+ */
+if (!defined("DOMPDF_DEFAULT_MEDIA_TYPE")) {
+  define("DOMPDF_DEFAULT_MEDIA_TYPE", "screen");
+}
+
+/**
+ * The default paper size.
+ *
+ * North America standard is "letter"; other countries generally "a4"
+ *
+ * @see CPDF_Adapter::PAPER_SIZES for valid sizes
+ */
+if (!defined("DOMPDF_DEFAULT_PAPER_SIZE")) {
+  define("DOMPDF_DEFAULT_PAPER_SIZE", "letter");
+}
+
+
+/**
+ * The default font family
+ *
+ * Used if no suitable fonts can be found. This must exist in the font folder.
+ * @var string
+ */
+if (!defined("DOMPDF_DEFAULT_FONT")) {
+  define("DOMPDF_DEFAULT_FONT", "serif");
+}
+/**
+ * Image DPI setting
+ *
+ * This setting determines the default DPI setting for images and fonts.  The
+ * DPI may be overridden for inline images by explictly setting the
+ * image's width & height style attributes (i.e. if the image's native
+ * width is 600 pixels and you specify the image's width as 72 points,
+ * the image will have a DPI of 600 in the rendered PDF.  The DPI of
+ * background images can not be overridden and is controlled entirely
+ * via this parameter.
+ *
+ * For the purposes of DOMPDF, pixels per inch (PPI) = dots per inch (DPI).
+ * If a size in html is given as px (or without unit as image size),
+ * this tells the corresponding size in pt.
+ * This adjusts the relative sizes to be similar to the rendering of the
+ * html page in a reference browser.
+ *
+ * In pdf, always 1 pt = 1/72 inch
+ *
+ * Rendering resolution of various browsers in px per inch:
+ * Windows Firefox and Internet Explorer:
+ *   SystemControl->Display properties->FontResolution: Default:96, largefonts:120, custom:?
+ * Linux Firefox:
+ *   about:config *resolution: Default:96
+ *   (xorg screen dimension in mm and Desktop font dpi settings are ignored)
+ *
+ * Take care about extra font/image zoom factor of browser.
+ *
+ * In images, <img> size in pixel attribute, img css style, are overriding
+ * the real image dimension in px for rendering.
+ *
+ * @var int
+ */
+if (!defined("DOMPDF_DPI")) {
+  define("DOMPDF_DPI", "96");
+}
+
+/**
+ * Enable inline PHP
+ *
+ * If this setting is set to true then DOMPDF will automatically evaluate
+ * inline PHP contained within <script type="text/php"> ... </script> tags.
+ *
+ * Enabling this for documents you do not trust (e.g. arbitrary remote html
+ * pages) is a security risk.  Set this option to false if you wish to process
+ * untrusted documents.
+ *
+ * @var bool
+ */
+if (!defined("DOMPDF_ENABLE_PHP")) {
+  define("DOMPDF_ENABLE_PHP", true);
+}
+
+/**
+ * Enable remote file access
+ *
+ * If this setting is set to true, DOMPDF will access remote sites for
+ * images and CSS files as required.
+ * This is required for part of test case www/test/image_variants.html through www/examples.php
+ *
+ * Attention!
+ * This can be a security risk, in particular in combination with DOMPDF_ENABLE_PHP and
+ * allowing remote access to dompdf.php or on allowing remote html code to be passed to
+ * $dompdf = new DOMPDF(); $dompdf->load_html(...);
+ * This allows anonymous users to download legally doubtful internet content which on
+ * tracing back appears to being downloaded by your server, or allows malicious php code
+ * in remote html pages to be executed by your server with your account privileges.
+ *
+ * @var bool
+ */
+if (!defined("DOMPDF_ENABLE_REMOTE")) {
+  define("DOMPDF_ENABLE_REMOTE", false);
+}
+ 
+/**
+ * DOMPDF autoload function
+ *
+ * If you have an existing autoload function, add a call to this function
+ * from your existing __autoload() implementation.
+ *
+ * TODO: use spl_autoload(), if available
+ *
+ * @param string $class
+ */
+function DOMPDF_autoload($class) {
+  $filename = DOMPDF_INC_DIR . "/" . mb_strtolower($class) . ".cls.php";
+  
+  if ( is_file($filename) )
+    require_once($filename);
+}
+
+if ( function_exists("spl_autoload_register") ) {
+
+   spl_autoload_register("DOMPDF_autoload");
+
+} else if ( !function_exists("__autoload") ) {
+  /**
+   * Default __autoload() function
+   *
+   * @param string $class
+   */
+  function __autoload($class) {
+    DOMPDF_autoload($class);
+  }
+}
+
+// ### End of user-configurable options ###
+
+
+/**
+ * Ensure that PHP is working with text internally using UTF8 character encoding.
+ */
+mb_internal_encoding('UTF-8');
+
+/**
+ * Global array of warnings generated by DomDocument parser and
+ * stylesheet class
+ *
+ * @var array
+ */
+$_dompdf_warnings = array();
+
+/**
+ * If true, $_dompdf_warnings is dumped on script termination when using
+ * dompdf/dompdf.php or after rendering when using the DOMPDF class.
+ * When using the class, setting this value to true will prevent you from
+ * streaming the PDF.
+ *
+ * @var bool
+ */
+$_dompdf_show_warnings = false;
+
+/**
+ * If true, the entire tree is dumped to stdout in dompdf.cls.php.
+ * Setting this value to true will prevent you from streaming the PDF.
+ *
+ * @var bool
+ */
+$_dompdf_debug = false;
+
+/**
+ * Array of enabled debug message types
+ *
+ * @var array
+ */
+$_DOMPDF_DEBUG_TYPES = array(); //array("page-break" => 1);
+
+/* Optionally enable different classes of debug output before the pdf content.
+ * Visible if displaying pdf as text,
+ * E.g. on repeated display of same pdf in browser when pdf is not taken out of
+ * the browser cache and the premature output prevents setting of the mime type.
+ */
+if (!defined('DEBUGPNG')) {
+  define('DEBUGPNG',0);
+}
+if (!defined('DEBUGKEEPTEMP')) {
+  define('DEBUGKEEPTEMP',0);
+}
+if (!defined('DEBUGCSS')) {
+  define('DEBUGCSS',0);
+}
+?>
Index: /trunk/filemanager/tp/dompdf/README
===================================================================
--- /trunk/filemanager/tp/dompdf/README	(revision 2000)
+++ /trunk/filemanager/tp/dompdf/README	(revision 2000)
@@ -0,0 +1,273 @@
+dompdf - PHP5 HTML to PDF converter
+===================================
+
+http://www.digitaljunkies.ca/dompdf
+Copyright (c) 2004-2005 Benj Carson
+R&OS PDF class (class.pdf.php) Copyright (c) 2001-04 Wayne Munro
+
+Send bug reports, patches, feature requests, complaints & hate mail (no spam
+thanks) to <benjcarson@digitaljunkies.ca>
+
+##### See INSTALL for installation instructions. #####
+
+
+Table of Contents:
+
+1. Overview
+2. Features
+3. Requirements
+4. Limitations (Known Issues)
+5. Usage
+6. Inline PHP Support
+
+Overview
+--------
+
+dompdf is an HTML to PDF converter.  At its heart, dompdf is (mostly)
+CSS2.1 compliant HTML layout and rendering engine written in PHP.  It is
+a style-driven renderer: it will download and read external stylesheets,
+inline style tags, and the style attributes of individual HTML elements.  It
+also supports most presentational HTML attributes.
+
+PDF rendering is currently provided either by PDFLib (www.pdflib.com)
+or by a bundled version the R&amp;OS CPDF class written by Wayne Munro
+(www.ros.co.nz/pdf).  (Some performance related changes have been made
+to the R&amp;OS class, however).  In order to use PDFLib with dompdf,
+the PDFLib PECL extension is required.  Using PDFLib improves
+performance and reduces the memory requirements of dompdf somewhat,
+while the R&amp;OS CPDF class, though slightly slower, eliminates any
+dependencies on external PDF libraries.
+
+dompdf was entered in the Zend PHP 5 Contest and placed 20th overall.
+
+Please note that dompdf works only with PHP 5.  There are no plans for
+a PHP 4 port.  If your web host does not offer PHP 4, I suggest either pestering
+them, or setting up your own PHP 5 box and using it to run dompdf.  Your scripts
+on your web host can redirect PDF requests to your PHP 5 box.
+
+This package should contain:
+
+dompdf.php                 PDF Generating script
+dompdf_config.inc.php      Main configuration file
+load_font.php              Font loading utility script
+HACKING                    Notes on messing with the code
+INSTALL                    Installation instructions
+LICENSE.LGPL               GNU Lesser General Public License
+NEWS                       Release news
+README                     This file
+TODO                       Things I'm working on
+include/                   PHP class & include files
+lib/                       R&OS PDF class, fonts, default CSS file
+www/                       Demonstration webpage
+www/test/                  Some test HTML pages
+
+
+For the impatient:
+
+Once you have installed dompdf, point your browser at the www/ directory
+for HTML documentation and a quick demonstration.
+
+
+Features
+--------
+
+* handles most CSS2.1 properties, including @import, @media & @page rules
+
+* supports most presentational HTML 4.0 attributes
+
+* supports external stylesheets, either local or through http/ftp (via
+  fopen-wrappers)
+
+* supports complex tables, including row & column spans, separate &
+  collapsed border models, individual cell styling, (no nested tables yet
+  however)
+
+* image support (gif, png & jpeg)
+
+* no dependencies on external PDF libraries, thanks to the R&OS PDF class
+
+* inline PHP support.  See below for details.
+
+
+Requirements
+------------
+
+* PHP 5.0.0+
+
+* Some fonts.  PDFs internally support Helvetica, Times-Roman, Courier &
+  Zapf-Dingbats, but if you wish to use other fonts you will need to install
+  some fonts.  dompdf supports the same fonts as the underlying R&OS PDF
+  class: Type 1 (.pfb with the corresponding .afm) and TrueType (.ttf).  At
+  the minimum, you should probably have the Microsoft core fonts (now
+  available at: http://corefonts.sourceforge.net/).  See the INSTALL file
+  for font installation instructions.
+
+
+Limitations (Known Issues)
+--------------------------
+
+* tables can not be nested
+
+* not particularly tolerant to poorly-formed HTML input (using Tidy first
+  may help).
+
+* large files can take a while to render
+
+* ordered lists are currently not supported
+
+Usage
+-----
+
+The included dompdf.php script can be used both from the command line or via
+a web browser.  Alternatively, the dompdf class can be used directly.
+
+Invoking dompdf via the web:
+
+The dompdf.php script is not intended to be an interactive page.  It
+receives input parameters via $_GET and can stream a PDF directly to the
+browser.  This makes it possible to embed links to the script in a page that
+look like static PDF links, but are actually dynamically generated.  This
+method is also useful as a redirection target.
+
+dompdf.php accepts the following $_GET variables:
+
+input_file   required    a rawurlencoded() path to the HTML file to
+                         process.  Remote files (http/ftp) are supported if
+                         fopen wrappers are enabled.
+
+paper        optional    the paper size.  Defaults to 'letter' (unless the
+                         default has been changed in dompdf_config.inc.php).
+                         See include/cpdf_adapter.cls.php, or invoke
+                         dompdf.php on the command line with the -l switch
+                         for accepted paper sizes.
+
+orientation  optional    'portrait' or 'landscape'.  Defaults to 'portrait'.
+
+base_path    optional    the base path to use when resolving relative links 
+                         (images or CSS files).  Defaults to the directory
+                         containing the file being accessed.  (This option is
+                         useful for pointing dompdf at your CSS files even
+                         though the HTML file may be elsewhere.)
+
+output_file  optional    the rawurlencoded() name of the output file.
+                         Defaults to 'dompdf_out.pdf'.
+
+save_file    optional    If present (i.e. isset($_GET["save_file"]) ==
+                         true), output_file is saved locally,  Otherwise
+                         the file is streamed directly to the client.
+
+
+One technique for generating dynamic PDFs is to generate dynamic HTML as you
+normally would, except instead of displaying the output to the browser, you
+use output buffering and write the output to a temporary file.  Once this
+file is saved, you redirect to the dompdf.php script.  If you use a
+templating engine like Smarty, you can simply do:
+
+<?php
+$tmpfile = tempnam("/tmp", "dompdf_");
+file_put_contents($tmp_file, $smarty->fetch());
+
+$url = "dompdf.php?input_file=" . rawurlencode($tmpfile) . 
+       "&paper=letter&output_file=" . rawurlencode("My Fancy PDF.pdf");
+
+header("Location: http://" . $_SERVER["HTTP_HOST"] . "/$url");
+?>
+
+If you use any stylesheets, you may need to provide the base_path option to
+tell dompdf where to look for them, as they are not likely relative to 
+/tmp ;).
+
+
+Invoking dompdf via the command line:
+
+You can execute dompdf.php using the following command:
+
+$ php -f dompdf.php -- [options]
+
+(If you find yourself using only the cli interface, you can add
+#!/usr/bin/php as the first line of dompdf.php to invoke dompdf.php
+directly.)
+
+dompdf.php is invoked as follows:
+
+$ ./dompdf.php [options] html_file
+  
+  html_file can be a filename, a url if fopen_wrappers are enabled, or the
+  '-' character to read from standard input.
+
+  -h             Show a brief help message
+
+  -l             list available paper sizes
+
+  -p size        paper size; something like 'letter', 'A4', 'legal', etc.  
+                 Thee default is 'letter'
+
+  -o orientation either 'portrait' or 'landscape'.  Default is 'portrait'.
+
+  -b path        the base path to use when resolving relative links 
+                 (images or CSS files). Default is the directory of
+                 html_file.
+
+  -f file        the output filename.  Default is the input [html_file].pdf.
+
+  -v             verbose: display html parsing warnings and file not found 
+                 errors.
+
+  -d             very verbose: display oodles of debugging output; every 
+                 frame in the tree is printed to stdout.
+
+Examples:
+
+$ php -f dompdf.php -- my_resume.html
+$ php -f dompdf.php -- -b /var/www/ ./web_stuff/index.html
+$ echo '<html><body>Hello world!</body>' | php -f dompdf.php -- -
+
+
+Using the dompdf class directly:
+
+See the API documentation for the interface definition.  The API
+documentation is available at http://www.digitaljunkies.ca/dompdf/.  
+
+
+
+Inline PHP Support
+------------------
+
+dompdf supports two varieties of inline PHP code.  All PHP evaluation is
+controlled by the DOMPDF_ENABLE_PHP configuration option.  If it is set to
+false, then no PHP code is executed.  Otherwise, PHP is evaluated in two
+passes:
+
+The first pass is useful for inserting dynamic data into your PDF.  You can
+do this by embedding <?php ?> tags in your HTML file, as you would in a
+normal .php file.  This code is evaluated prior to parsing the HTML, so you
+can echo any text or markup and it will appear in the rendered PDF.
+
+The second pass is useful for performing drawing operations on the
+underlying PDF class directly.  You can do this by embedding PHP code within
+<script type="text/php"> </script> tags.  This code is evaluated during the
+rendering phase and you have access to a few internal objects and
+operations.  In particular, the $pdf variable is the current instance of
+CPDF_Adapter.  Using this object, you can write and draw directly on the
+current page.  Using the CPDF_Adapter::open_object(),
+CPDF_Adapter::close_object() and CPDF_Adapter::add_object() methods, you can
+create text and drawing objects that appear on every page of your PDF
+(useful for headers & footers).
+
+The following variables are defined for you during the second pass of PHP
+execution:
+
+  $pdf         the current instance of CPDF_Adapter
+  $PAGE_NUM    the current page number
+  $PAGE_COUNT  the total number of pages in the document
+
+For more complete documentation of the CPDF_Adapter API, see either
+include/cpdf_adapter.cls.php and include/canvas.cls.php directly, or check
+out the online documentation at http://www.digitaljunkies.ca/dompdf/doc
+
+That's it!  Have fun!
+
+
+Send questions, problems, bug reports, etc to:
+
+Benj Carson <benjcarson@digitaljunkies.ca>
Index: /trunk/filemanager/doc/INSTALL
===================================================================
--- /trunk/filemanager/doc/INSTALL	(revision 2000)
+++ /trunk/filemanager/doc/INSTALL	(revision 2000)
@@ -0,0 +1,45 @@
+INSTALL
+-------
+Command examples are suggestions only.  Use your head.
+
+COMMAND SUMMARY
+---------------
+cp -a /some/path/to/egroupware/files /path/to/files
+cd /path/to/files
+chown -R nobody .
+-OR-
+chmod -R 777 .
+
+http://yourhost.com/setup/ > Setup/Config > Edit Current Configuration
+"Enter the full path for users and group files" => /path/to/files
+
+FULL EXPLANATION
+----------------
+[REQUIRED] Copy egroupware/files to where you want to store the files.
+	   THIS SHOULD BE SOMEWHERE NOT INSIDE THE WEBROOT AND NOT ACCESSIBLE TO THE WEB.
+	   Having the files within the webroot is a huge security risk as well as a privacy concern.
+	   The exception to this would be if you WANT the users' and groups' files to be accessible
+	   from the web, such as when setting up public or semi-public web page/document hosting.  In
+	   this case, the files directory can be left where it is.
+	   (Make sure you copy the directory, don't just make a new one.  The necessary directories
+		are files/ and files/home/)
+[REQUIRED] In http://yourhost.com/setup, login to Setup/Config, then Edit Current Configuration.  Enter the FULL path for the files directory you created earlier in the second box from the top.
+[REQUIRED] Change permissions for files directory and all it's subdirectories to be writable by Apache
+	   This is the files directory you created earlier and specified in setup (Edit Current Configuration).  Note that 'nobody' below could also be 'apache' on your system.  Check the 'User' setting in your httpd.conf.
+		cd /path/to/files
+		chown -R nobody .
+		-OR-
+		chmod -R 777 .
+
+SECURITY CONCERNS
+-----------------
+There are many security concerns related with allowing users to store files on the server.  The most common problem is that users can upload any type of file, including CGI and PHP scripts.  This in effect grants them local access to the machine, and can be used to read database passwords and other sensitive files.  The ability to upload files of any type is not forbidden by phpwebhosting because it is sometimes desired, and also the types of vulnerable files differ from server to server.  To combat this, you can add a simple entry to Apache's httpd.conf to prevent certain types of files from being executed.  Included below is an example that results in .cgi, .pl, .php, .php3, and .phps files being treated as normal text files.  It also explicitly turns all Options off, which includes turning Indexes (listing of files) off.
+
+<Directory /path/to/files>
+Options None
+AllowOverride None
+DirectoryIndex index.html
+RemoveHandler cgi-script .cgi .pl
+RemoveType application/x-httpd-php .php .php3
+RemoveType application/x-httpd-php-source .phps
+</Directory>
Index: /trunk/filemanager/doc/INSTALL_WebDAV
===================================================================
--- /trunk/filemanager/doc/INSTALL_WebDAV	(revision 2000)
+++ /trunk/filemanager/doc/INSTALL_WebDAV	(revision 2000)
@@ -0,0 +1,124 @@
+INSTALL : WebDAV file share
+---------------------------
+Note: if you don't know what WebDAV is you probably don't need it.  The default
+vfs_sql is generally faster and easier to setup.
+
+Filemanager's WebDAV support allows you to store your files online in 
+egroupware, in a way that cooperates well with other web applications (for
+instance, in Windows you can then access your files as a "web folder", and
+similarly KDE, Gnome, MacOSX, and amultitude of applications (eg MS Office and
+OpenOffice.org) all include some way of browsing files on a WebDAV share)
+
+
+Installation
+------------
+To install:
+
+1/	Setup a WebDAV server - currently this code has only been well tested using
+	Apache's mod_dav (http://www.webdav.org/mod_dav/).  mod_dav is included in
+	Apache 2, and most Linux distributions include it as a package.
+
+	To setup mod_dav ensure that you have the module installed correctly ( RTFM :)
+	and create a virtual host (eg files.yourdomain.com) something like this:
+
+		<VirtualHost files.yourdomain.com:80>
+			AccessFileName .htaccess
+			ServerAdmin webmaster@yourdomain.com
+			DocumentRoot /var/files
+			<Location />
+				AllowOverride All
+				Options +Indexes
+				DAV on
+				DirectoryIndex /
+				RemoveHandler cgi-script .cgi .pl
+				RemoveType application/x-httpd-php .php .php3
+				RemoveType application/x-httpd-php-source .phps
+			</Location>
+			<Files ~ "^\.ht">
+				#This ensures egroupware can modify .htaccess files
+				order deny,allow
+				deny from all
+				#make sure your egroupware server is included here.
+				allow from localhost .localdomain
+			</Files>
+			ServerName files.yourdomain.com
+			ErrorLog logs/dav_err
+			CustomLog logs/dav_acc combined
+		</VirtualHost>
+
+2/	On the setup page (egroupware/setup/config.php) specify
+	the WebDAV server URL (eg http://files.yourdomain.com ) in the: "Full path
+	for users and groups files" text area, and select DAV in the:
+	"Select where you want to store/retrieve filesystem information"
+	combo.  If your file repository supports SSL you might want to enter
+	'https://files.yourdomain.com' instead - note that phpGroupWare itself wont
+	use SSL to access the repository, but when it redirects the users browser to
+	the repository it will use the secure https url.
+
+3/	Make sure your WebDAV repository contains a "home" directory (important!)
+	So if your WebDAV directory is /var/files, you would need:
+		/var/files/
+		/var/files/home/
+
+4/ 	You now want some kind of authentication on the WebDAV repository, so that 
+	users accessing it directly still need their egroupware	password.  By default 
+	there is no security through Apache's WebDAV module and anyone could access
+	your files.
+
+	To enable authentication you must use a third-party Apache authentication
+	module.  Which you use depends on how you have setup authentication in
+	phpGroupWare - for instance if you use an SQL DB (the default) then set up
+	mod_auth_pgsql (http://www.giuseppetanzilli.it/mod_auth_pgsql/) or
+	mod_auth_mysql (http://modauthmysql.sourceforge.net/)
+
+	An example .htaccess file for your repository's root
+	(e.g. /var/files) when using mod_auth_mysql would be:
+
+		Options None
+		DirectoryIndex index.html
+		RemoveHandler cgi-script .cgi .pl
+		RemoveType application/x-httpd-php .php .php3
+		RemoveType application/x-httpd-php-source .phps
+
+		AuthMySQL_Host localhost
+		AuthMySQL_User <mysql user>
+		AuthMySQL_Password <mysql password>
+		Auth_MySQL_DB <mysql egroupware database>
+
+		AuthMySQL_Password_Table "phpgw_accounts AS users"
+		AuthMySQL_Username_Field users.account_lid
+		AuthMySQL_Password_Field account_pwd
+
+		Auth_MySQL_Encryption_Types PHP_MD5
+
+		AuthName "V-Manager"
+		AuthType Basic
+		require valid-user
+
+	eGroupWare's WebDAV vfs class has some support for adding
+	.htaccess files when creating new directories but does not do
+	so when creating a new directory for a new user so you will
+	need to do this by hand or modify the vfs_dav class.  The .htaccess
+	file would look like "require user <username>"
+
+	Filemanager also supports group directories.  Add the
+	following to the .htaccess file:
+
+		AuthMySQL_Group_Table "phpgw_accounts AS groups, phpgw_accounts AS users, phpgw_acl AS acl"
+		Auth_MySQL_Group_Field groups.account_lid
+		Auth_MySQL_Group_Clause " AND groups.account_type='g' AND users.account_type='u' AND groups.account_id=acl.acl_location AND users.account_id=acl.acl_account AND groups.account_lid='Admins'"
+
+	And finally make the group directories by hand: 
+
+		mkdir home/Admins; mkdir home/Default
+
+	and each directory's .htaccess file by hand:
+
+		require group Admins
+
+TODO:
+
+Create group directories automaticly
+Create .htaccess file for group directories automaticly
+Create .htaccess files for new user directories automaticly
+Only list group directories to which the user has access
Index: /trunk/filemanager/todo
===================================================================
--- /trunk/filemanager/todo	(revision 2000)
+++ /trunk/filemanager/todo	(revision 2000)
@@ -0,0 +1,33 @@
+display
+- practical out of the box userconfiguration
+- seperate colors for row off an on
+- sort by with sort arrows so we know whats sorted
+- sort by up and down
+- nicer colheads
+- toolbar cleanup
+- toolbar  prefs
+- different colors for messages
+- more mime icons
+- better mime handling
+
+extra funtionality
+- send file as email attachment
+- create pdf
+- not just presume a file is treated like a ascii file
+- cut/copy/paste
+- sidebox with explorerstyle (Reiner loves this)
+- other views (with image preview mode?!!)
+- new popup
+- zip
+- handling for when the vfs is not correct
+
+remove functionaliteit
+- some conf options
+
+bugs
+- still slow
+- total bytes/kbytes is not correct
+- downloading file gives index.php 
+- messages not working everywhere (check all)
+- errors with errorreporting 8
+- errors with uploading thouh it works
Index: /trunk/filemanager/preferences.php
===================================================================
--- /trunk/filemanager/preferences.php	(revision 2000)
+++ /trunk/filemanager/preferences.php	(revision 2000)
@@ -0,0 +1,156 @@
+<?php
+  /**************************************************************************\
+  * eGroupWare                                                               *
+  * http://www.egroupware.org                                                *
+  * --------------------------------------------                             *
+  *  This program is free software; you can redistribute it and/or modify it *
+  *  under the terms of the GNU General Public License as published by the   *
+  *  Free Software Foundation; either version 2 of the License, or (at your  *
+  *  option) any later version.                                              *
+  \**************************************************************************/
+
+	/* $Id: preferences.php 13612 2004-02-02 04:18:17Z milosch $ */
+
+	$GLOBALS['phpgw_info']['flags'] = array(
+		'currentapp' => 'filemanager',
+		'enable_nextmatchs_class' => True,
+		'noheader' => True,
+		'nonavbar' => True
+	);
+
+	//var_dump($file_attributes);
+	include('../header.inc.php');
+	/*
+	   To add an on/off preference, just add it here.  Key is internal name, value is displayed name
+	*/
+	$other_checkboxes = array ("viewinnewwin" => lang("View documents in new window"), "viewonserver" => lang("View documents on server (if available)"), "viewtextplain" => lang("Unknown MIME-type defaults to text/plain when viewing"), "dotdot" => lang("Show .."), "dotfiles" => lang("Show .files"), "show_help" => lang("Show help"), "show_command_line" => lang("Show command line (EXPERIMENTAL. DANGEROUS.)"));
+
+	/*
+	   To add a dropdown preferences, add it here.  Key is internal name, value key is
+	   displayed name, value values are choices in the dropdown
+	*/
+	$other_dropdown = array ("show_upload_boxes" => array (lang("Default number of upload fields to show"), "5", "10", "20", "30"));
+
+	if ($submit)
+	{
+		$GLOBALS['phpgw']->preferences->read_repository ();
+
+		reset ($other_checkboxes);
+		while (list ($internal, $displayed) = each ($other_checkboxes))
+		{
+			$GLOBALS['phpgw']->preferences->add ($GLOBALS['phpgw_info']["flags"]["currentapp"], $internal, $$internal);
+		}
+
+		reset ($other_dropdown);
+		while (list ($internal, $displayed) = each ($other_dropdown))
+		{
+			$GLOBALS['phpgw']->preferences->add ($GLOBALS['phpgw_info']["flags"]["currentapp"], $internal, $$internal);
+		}
+
+		reset ($file_attributes);
+		while (list ($internal, $displayed) = each ($file_attributes))
+		{
+			$GLOBALS['phpgw']->preferences->add ($GLOBALS['phpgw_info']["flags"]["currentapp"], $internal, $$internal);
+		}
+
+
+		$GLOBALS['phpgw']->preferences->save_repository (True);
+     
+		Header('Location: '.$GLOBALS['phpgw']->link('/preferences/index.php'));
+		$GLOBALS['phpgw']->common->phpgw_exit();
+	}
+
+	function display_item ($field,$data)
+	{
+		global $p, $tr_color;
+
+		$tr_color = $GLOBALS['phpgw']->nextmatchs->alternate_row_color ($tr_color);
+		$var = array (
+			'bg_color'	=>	$tr_color,
+			'field'		=>	$field,
+			'data'		=>	$data
+		);
+		$p->set_var ($var);
+		$p->parse ('row', 'pref_list', True);
+	}
+
+	$GLOBALS['phpgw']->common->phpgw_header ();
+	echo parse_navbar ();
+
+	$p = CreateObject ('phpgwapi.Template', $GLOBALS['phpgw']->common->get_tpl_dir ('filemanager'));
+	$templates = array (
+		'pref'			=> 'pref.tpl',
+		'pref_colspan'	=> 'pref_colspan.tpl',
+		'pref_list'		=>	'pref_list.tpl'
+	);
+	$p->set_file ($templates);
+
+	$var = array (
+		'title'			=>	lang ('FileManager preferences'),
+		'action_url'	=>	$GLOBALS['phpgw']->link ('/' . $GLOBALS['phpgw_info']['flags']['currentapp'] . '/preferences.php'),
+		'bg_color'		=>	$GLOBALS['phpgw_info']['theme']['th_bg'],
+		'submit_lang'	=>	lang ('submit')
+	);
+	
+	$p->set_var ($var);
+	$p->set_var ('text', '&nbsp;');
+	$p->parse ('row', 'pref_colspan', True);
+
+	if ($totalerrors)
+	{
+		echo '<p><center>' . $GLOBALS['phpgw']->common->error_list($errors) . '</center>';
+	}
+
+
+	while (list ($internal, $displayed) = each ($file_attributes))
+	{
+		unset ($checked);
+		if ($GLOBALS['phpgw_info']["user"]["preferences"]["filemanager"][$internal])
+		{
+			$checked = 1;
+		}
+
+		$str .= html_form_input ("checkbox", $internal, NULL, NULL, NULL, $checked, NULL, 1) . " $displayed" . html_break (1, NULL, 1);
+	}
+
+	display_item (lang ('Display attributes'), $str);
+
+	reset ($other_checkboxes);
+	while (list ($internal, $displayed) = each ($other_checkboxes))
+	{
+		unset ($checked);
+		if ($GLOBALS['phpgw_info']["user"]["preferences"]["filemanager"][$internal])
+		{
+			$checked = 1;
+		}
+
+		$str = html_form_input ("checkbox", $internal, NULL, NULL, NULL, $checked, NULL, 1);
+		display_item ($displayed, $str);
+	}
+
+	reset ($other_dropdown);
+	while (list ($internal, $value_array) = each ($other_dropdown))
+	{
+		reset ($value_array);
+		unset ($options);
+		while (list ($num, $value) = each ($value_array))
+		{
+			if ($num == 0)
+			{
+				$displayed = $value;
+				continue;
+			}
+
+			$options .= html_form_option ($value, $value, $GLOBALS['phpgw_info']["user"]["preferences"]["filemanager"][$internal] == $value, True);
+		}
+
+		$output = html_form_select_begin ($internal, True);
+		$output .= $options;
+		$output .= html_form_select_end (True);
+
+		display_item ($displayed, $output);
+	}
+
+	$p->pparse ('out', 'pref');
+	$GLOBALS['phpgw']->common->phpgw_footer ();
+?>
Index: /trunk/filemanager/inc/hook_preferences.inc.php
===================================================================
--- /trunk/filemanager/inc/hook_preferences.inc.php	(revision 2000)
+++ /trunk/filemanager/inc/hook_preferences.inc.php	(revision 2000)
@@ -0,0 +1,24 @@
+<?php
+  /**************************************************************************\
+  * eGroupWare                                                               *
+  * http://www.egroupware.org                                                *
+  * Written by Joseph Engo <jengo@phpgroupware.org>                          *
+  * --------------------------------------------                             *
+  *  This program is free software; you can redistribute it and/or modify it *
+  *  under the terms of the GNU General Public License as published by the   *
+  *  Free Software Foundation; either version 2 of the License, or (at your  *
+  *  option) any later version.                                              *
+  \**************************************************************************/
+
+  /* $Id: hook_preferences.inc.php 13612 2004-02-02 04:18:17Z milosch $ */
+{
+// Only Modify the $file and $title variables.....
+	$title = $appname;
+	$file = Array(
+		'Preferences' => $GLOBALS['phpgw']->link('/preferences/preferences.php','appname='.$appname),
+		'Grant Access'    => $GLOBALS['phpgw']->link('/index.php','menuaction=preferences.uiaclprefs.index&acl_app='.$appname)
+	);
+//Do not modify below this line
+	display_section($appname,$title,$file);
+}
+?>
Index: /trunk/filemanager/inc/hook_sidebox_menu.inc.php
===================================================================
--- /trunk/filemanager/inc/hook_sidebox_menu.inc.php	(revision 2000)
+++ /trunk/filemanager/inc/hook_sidebox_menu.inc.php	(revision 2000)
@@ -0,0 +1,39 @@
+<?php
+  /**************************************************************************\
+  * eGroupWare - Calendar's Sidebox-Menu for idots-template                  *
+  * http://www.egroupware.org                                                *
+  * Written by Pim Snel <pim@lingewoud.nl>                                   *
+  * --------------------------------------------                             *
+  *  This program is free software; you can redistribute it and/or modify it *
+  *  under the terms of the GNU General Public License as published by the   *
+  *  Free Software Foundation; either version 2 of the License, or (at your  *
+  *  option) any later version.                                              *
+  \**************************************************************************/
+
+  /* $Id: hook_sidebox_menu.inc.php 13525 2004-01-27 18:19:23Z reinerj $ */
+{
+
+ /*
+	This hookfile is for generating an app-specific side menu used in the idots
+	template set.
+
+	$menu_title speaks for itself
+	$file is the array with link to app functions
+
+	display_sidebox can be called as much as you like
+ */
+
+	$menu_title = $GLOBALS['phpgw_info']['apps'][$appname]['title'] . ' '. lang('Menu');
+	/*$file = Array(
+	array('','text'=>'Filemanager Preferences','link'=>$GLOBALS['phpgw']->link('/preferences/preferences.php','appname=filemanager')),
+	);*/
+	$file = Array(
+		'Filemanager preferences'=>$GLOBALS['phpgw']->link('/preferences/preferences.php','appname=filemanager'),
+		'Update'=>$GLOBALS['phpgw']->link('/index.php','menuaction=filemanager.uifilemanager.index&update.x=1'),
+		'Grant Access'=>$GLOBALS['phpgw']->link('/index.php','menuaction=preferences.uiaclprefs.index&acl_app=filemanager'),	
+	);
+
+	display_sidebox($appname,$menu_title,$file);
+
+}
+?>
Index: /trunk/filemanager/inc/class.user.inc.php
===================================================================
--- /trunk/filemanager/inc/class.user.inc.php	(revision 2000)
+++ /trunk/filemanager/inc/class.user.inc.php	(revision 2000)
@@ -0,0 +1,165 @@
+<?php
+
+	class user
+	{
+		var $public_functions = array(
+			'save_preferences' => True,
+			'get_preferences' => True,
+			'card'	=>	True
+		);
+
+		var $bo;
+		var $user_id;
+
+		var $target;
+
+		var $prefs;//array
+
+		var $current_config;
+		// this ones must be checked thorougly;
+		var $fileman = Array();
+		var $path;
+		var $file;
+		var $debug = false;
+		var $now;
+
+		function user()
+		{
+			$this->now = date('Y-m-d');
+
+			$this->bo = CreateObject('filemanager.bofilemanager');
+
+			$c = CreateObject('phpgwapi.config','filemanager');
+			$c->read_repository();
+			$this->current_config = $c->config_data;
+			$this->user_id = $GLOBALS['phpgw_info']['user']['account_id'];
+
+			// here local vars are created from the HTTP vars
+			@reset($GLOBALS['HTTP_POST_VARS']);
+			while(list($name,) = @each($GLOBALS['HTTP_POST_VARS']))
+			{
+				$this->$name = $GLOBALS['HTTP_POST_VARS'][$name];
+			}
+
+			@reset($GLOBALS['HTTP_GET_VARS']);
+			while(list($name,) = @each($GLOBALS['HTTP_GET_VARS']))
+			{
+				$$name = $GLOBALS['HTTP_GET_VARS'][$name];
+				$this->$name = $GLOBALS['HTTP_GET_VARS'][$name];
+
+			}
+
+			$to_decode = array
+			(
+				'preferences'	=> array('preferences' => '')
+			);
+
+			reset($to_decode);
+			while(list($var, $conditions) = each($to_decode))
+			{
+				while(list($condvar, $condvalue) = each($conditions))
+				{
+					if(isset($$condvar) && ($condvar == $var || $$condvar == $condvalue))
+					{
+						if(is_array($$var))
+						{
+							$temp = array();
+							while(list($varkey, $varvalue) = each($$var))
+							{
+								if(is_int($varkey))
+								{
+									$temp[$varkey] = stripslashes(base64_decode(urldecode(($varvalue))));
+								}
+								else
+								{
+									$temp[stripslashes(base64_decode(urldecode(($varkey))))] = $varvalue;
+								}
+							}
+							$this->$var = $temp;
+						}
+						elseif(isset($$var))
+						{
+							$this->$var = stripslashes(base64_decode(urldecode($$var)));
+						}
+					}
+				}
+			}
+
+			// get appl. and user prefs
+			$pref = CreateObject('phpgwapi.preferences', $this->bo->userinfo['username']);
+			$pref->read_repository();
+			$pref->save_repository(True);
+			$pref_array = $pref->read_repository();
+			$this->prefs = $pref_array[$this->bo->appname];
+
+			//always show name
+
+			$this->prefs[name] =1;		
+			
+		}
+
+		function card(){
+			header('Content-Type: text/html');
+			$expires = 60*60*24*10; /* 10 days */
+			header("Cache-Control: maxage=".$expires);
+			header("Pragma: public");
+			header("Expires: ".gmdate('D, d M Y H:i:s', time()+$expires));
+			$account_info = $GLOBALS['phpgw']->accounts->get_list('accounts',0,1,1,base64_decode($this->lid),1,'exact');
+			echo $account_info[0]['account_firstname'].' '.$account_info[0]['account_lastname']."<br>";
+			echo '<a target="_blank" href="../expressoMail1_2/index.php?to='
+				.$account_info[0]['account_email'].'">'.$account_info[0]['account_email'];
+			/*
+			// TODO: PHOTO, ONLY FOR FOOL LDAP
+			if (isset($GLOBALS['phpgw_info']['server']['ldap_root_pw'])){
+			}
+			*/
+		}
+		function get_preferences(){
+			 echo(serialize($_SESSION['phpgw_info']['user']['preferences']['filemanager']));
+		}
+		function save_preferences(){
+			unset($_SESSION['phpgw_info']['user']['preferences']['filemanager']);
+			$_SESSION['phpgw_info']['user']['preferences']['filemanager'] = unserialize($this->preferences);
+			/* See if preferences exists or not */
+			$query = "SELECT count(preference_owner) FROM phpgw_preferences WHERE preference_app = 'filemanager' AND preference_owner = ".$this->user_id." LIMIT 1";
+			if ($GLOBALS['phpgw']->db->query($query) && $GLOBALS['phpgw']->db->next_record())
+				$val = $GLOBALS['phpgw']->db->row();
+			else
+			{
+				echo $GLOBALS['phpgw']->db->error;
+				return false;
+			}
+
+			$string_serial = addslashes($this->preferences);
+			if ($val['count'] == '1')
+			{
+				$query = "UPDATE phpgw_preferences set preference_value = '".$string_serial.
+					"' where preference_app = 'filemanager'".
+					" and preference_owner = '".$this->user_id."'";
+				if (!$GLOBALS['phpgw']->db->query($query)){
+					echo $GLOBALS['phpgw']->db->error;
+					return false;
+				}
+				else{
+					echo "True";
+					return;
+				}
+			}
+			else
+			{
+				/*preferences does not exist*/
+				$query = "INSERT INTO phpgw_preferences values (".$this->user_id.",'filemanager','".$string_serial."')";
+				if (!$GLOBALS['phpgw']->db->query($query)){
+					echo $GLOBALS['phpgw']->db->error;
+					return false;
+				}
+				else{
+					echo "True";
+					return;
+				}
+
+			}
+		}
+
+	}
+?>
Index: /trunk/filemanager/inc/hook_add_def_pref.inc.php
===================================================================
--- /trunk/filemanager/inc/hook_add_def_pref.inc.php	(revision 2000)
+++ /trunk/filemanager/inc/hook_add_def_pref.inc.php	(revision 2000)
@@ -0,0 +1,23 @@
+<?php
+
+global $pref;
+
+$pref->change ("filemanager", "name", "True");
+$pref->change ("filemanager", "mime_type", "True");
+$pref->change ("filemanager", "size", "True");
+$pref->change ("filemanager", "created", "True");
+$pref->change ("filemanager", "modified", "True");
+//$pref->change ("filemanager", "owner", "False");
+$pref->change ("filemanager", "createdby_id", "True");
+$pref->change ("filemanager", "modifiedby_id", "True");
+//$pref->change ("filemanager", "app", "False");
+$pref->change ("filemanager", "comment", "True");
+//$pref->change ("filemanager", "viewinnewwin", "False");
+//$pref->change ("filemanager", "viewonserver", "False");
+$pref->change ("filemanager", "viewtextplain", True);
+//$pref->change ("filemanager", "dotdot", "False");
+//$pref->change ("filemanager", "dotfiles", "False");
+//$pref->change ("filemanager", "show_help", "False");
+$pref->change ("filemanager", "show_upload_boxes", "5");
+
+?>
Index: /trunk/filemanager/inc/class.uiconfig.inc.php
===================================================================
--- /trunk/filemanager/inc/class.uiconfig.inc.php	(revision 2000)
+++ /trunk/filemanager/inc/class.uiconfig.inc.php	(revision 2000)
@@ -0,0 +1,426 @@
+<?php
+	/**************************************************************************\
+	* -------------------------------------------------------------------------*
+	* This library is free software; you can redistribute it and/or modify it  *
+	* under the terms of the GNU Lesser General Public License as published by *
+	* the Free Software Foundation; either version 2.1 of the License,         *
+	* or any later version.                                                    *
+	\**************************************************************************/
+
+	class uiconfig
+	{
+		var $public_functions = array(
+			'search_dir' => True,
+			'search_user' => True,
+			'update_quota' => True,
+			'load_quota' => True,
+			'quota' => True,
+			'removeFolder' => True,
+			'reconstructFolder' => True,
+			'set_owner' => True,
+			'set_permission' => True,
+			'renameFolder' => True,
+			'createFolder' => True,
+			'groups_users' => True,
+			'folders' => True
+		 );
+
+		function vfs_functions(){
+		}
+		 function folders(){
+			 $GLOBALS['phpgw_info']['flags'] = array
+				 (
+					 'currentapp'    => 'filemanager',
+					 'noheader'      => False,
+					 'nonavbar' => False,
+					 'nofooter'      => False,
+					 'noappheader'   => False,
+					 'enable_browser_class'  => True
+				 );
+
+			 $GLOBALS['phpgw']->common->phpgw_header();
+			include('load_lang.php');
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/connector.js'></script>";
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/common_functions.js'></script>";
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/config.js'></script>";
+			$t = $GLOBALS['phpgw']->template;
+			$t->set_file(array('config_list' => 'config_folders.tpl'));
+			$t->set_block('config_list','body','body');
+			$vars[lang_directory]=lang('directory');
+			$vars[lang_search]=lang('search');
+			$vars[lang_remove]=lang('remove');
+			$vars[lang_rename]=lang('rename');
+			$vars[lang_create]=lang('create');
+			$vars[lang_reconstruct]=lang('reconstruct');
+
+			$t->set_var($vars);
+			$t->pparse('out','body');
+                        $GLOBALS['phpgw']->common->phpgw_footer();
+                        $GLOBALS['phpgw']->common->phpgw_exit();
+
+		 }
+		 function groups_users(){
+			 $GLOBALS['phpgw_info']['flags'] = array
+				 (
+					 'currentapp'    => 'filemanager',
+					 'noheader'      => False,
+					 'nonavbar' => False,
+					 'nofooter'      => False,
+					 'noappheader'   => False,
+					 'enable_browser_class'  => True
+				 );
+
+			 $GLOBALS['phpgw']->common->phpgw_header();
+			include('load_lang.php');
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/connector.js'></script>";
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/common_functions.js'></script>";
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/config.js'></script>";
+			$t = $GLOBALS['phpgw']->template;
+			$t->set_file(array('config_list' => 'config_owner.tpl'));
+			$t->set_block('config_list','body','body');
+			$vars[lang_users_and_groups]=lang('Users and groups');
+			$vars[lang_search]=lang('search');
+			$vars[lang_directory]=lang('directory');
+			$vars[lang_setowner]=lang('set owner');
+			$vars[lang_setperm]=lang('set permission');
+
+			$t->set_var($vars);
+			$t->pparse('out','body');
+                        $GLOBALS['phpgw']->common->phpgw_footer();
+                        $GLOBALS['phpgw']->common->phpgw_exit();
+
+		 }
+
+		function createFolder(){
+			 $GLOBALS['phpgw_info']['flags'] = array
+				 (
+					 'currentapp'    => 'filemanager',
+					 'noheader'      => True,
+					 'nonavbar' => True,
+					 'nofooter'      => True,
+					 'noappheader'   => True,
+					 'enable_browser_class'  => True
+				 );
+			 $bo = CreateObject('filemanager.bofilemanager');
+			 $name = $GLOBALS['phpgw']->db->db_addslashes(base64_decode($_GET['name']));
+			 if (strlen($name) < 2)
+				 return false;
+			 $c = CreateObject('phpgwapi.config','filemanager');
+			 $c->read_repository();
+			 $current_config = $c->config_data;
+
+			 $bo->vfs->override_acl = 1;
+
+			 if ( $bo->vfs->mkdir(array(
+				 'string' => $name,
+				 'relatives' => array(RELATIVE_NONE)
+			 )) )
+			 if ( $bo->vfs->set_quota(array(
+				 'string' => $name,
+				 'relatives' => array(RELATIVE_NONE),
+				 'new_quota' => $current_config['filemanager_quota_size']
+			 )) )
+			 $return = True;
+
+			 $bo->vfs->override_acl = 0;
+			 if ($return){
+				 echo "Folder created";
+			 }
+			 else
+				 echo "Error";
+		 }
+
+		 function removeFolder(){
+			 $GLOBALS['phpgw_info']['flags'] = array
+				 (
+					 'currentapp'    => 'filemanager',
+					 'noheader'      => True,
+					 'nonavbar' => True,
+					 'nofooter'      => True,
+					 'noappheader'   => True,
+					 'enable_browser_class'  => True
+				 );
+			 $bo = CreateObject('filemanager.bofilemanager');
+			 $name = $GLOBALS['phpgw']->db->db_addslashes(base64_decode($_GET['dir']));
+			 if (strlen($name) < 2)
+				 return false;
+			 $bo->vfs->delete(array(
+				 'string' => $name,
+				 'relatives' => array(RELATIVE_NONE)
+			 ));
+
+			 /* Clean the log */
+			 $GLOBALS['phpgw']->db->query('DELETE FROM phpgw_vfs WHERE directory = \''.$name.'\'',__LINE__,__FILE__);
+			 if ($GLOBALS['phpgw']->db->Error)
+				 echo "Erro";
+			 else
+			 {		 
+				 $GLOBALS['phpgw']->db->query('DELETE FROM phpgw_vfs_quota WHERE directory = \''.$name.'\'',__LINE__,__FILE__);
+				 if (!$GLOBALS['phpgw']->db->Error)
+					 echo lang('directory removed sucessfully');
+				 else
+					 echo "Erro";
+			 }
+			 return; 
+
+		 }
+		 function reconstructFolder(){
+			 $GLOBALS['phpgw_info']['flags'] = array
+				 (
+					 'currentapp'    => 'filemanager',
+					 'noheader'      => True,
+					 'nonavbar' => True,
+					 'nofooter'      => True,
+					 'noappheader'   => True,
+					 'enable_browser_class'  => True
+				 );
+			 $bo = CreateObject('filemanager.bofilemanager');
+			 $name = $GLOBALS['phpgw']->db->db_addslashes(base64_decode($_GET['dir']));
+			 if (strlen($name) < 2)
+				 return false;
+			 $bo->vfs->update_real(array(
+				 'string'        => $name,
+				 'relatives'     => array(RELATIVE_NONE)
+			 ));
+			 $bo->vfs->flush_journal(array(
+				 'string' => $name,
+				 'relatives' => array(RELATIVE_NONE),
+				 'deleteall' => True
+			 ));
+			 echo lang('Your operation was successfully executed');
+		 }
+
+		 function renameFolder(){
+			 $GLOBALS['phpgw_info']['flags'] = array
+				 (
+					 'currentapp'    => 'filemanager',
+					 'noheader'      => True,
+					 'nonavbar' => True,
+					 'nofooter'      => True,
+					 'noappheader'   => True,
+					 'enable_browser_class'  => True
+				 );
+			 $bo = CreateObject('filemanager.bofilemanager');
+			 $name = $GLOBALS['phpgw']->db->db_addslashes(base64_decode($_GET['dir']));
+			 $to = $GLOBALS['phpgw']->db->db_addslashes(base64_decode($_GET['to']));
+			 if (strlen($name) < 2)
+				 return false;
+			if ( $bo->vfs->mv(array(
+				 'from'        => $name,
+				 'to'	=> $to,
+				 'relatives'     => array(RELATIVE_NONE)
+			 )) ){
+				 $bo->vfs->flush_journal(array(
+					 'string' => $name,
+					 'relatives' => array(RELATIVE_NONE),
+					 'deleteall' => True
+				 ));
+				 echo lang('Your operation was successfully executed');
+			 }
+			else
+				echo lang('Error');
+		 }
+
+		 function quota(){
+			 $GLOBALS['phpgw_info']['flags'] = array
+				 (
+					 'currentapp'    => 'filemanager',
+					 'noheader'      => False,
+					 'nonavbar' => False,
+					 'nofooter'      => False,
+					 'noappheader'   => False,
+					 'enable_browser_class'  => True
+				 );
+
+			$GLOBALS['phpgw']->common->phpgw_header();
+			include('load_lang.php');
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/connector.js'></script>";
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/common_functions.js'></script>";
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/config.js'></script>";
+			$t = $GLOBALS['phpgw']->template;
+			$t->set_file(array('config_list' => 'config_quota.tpl'));
+			$t->set_block('config_list','body','body');
+			$vars[lang_directory]=lang('directory');
+			$vars[lang_search]=lang('search');
+			$vars[lang_save]=lang('save');
+
+			$t->set_var($vars);
+			$t->pparse('out','body');
+                        $GLOBALS['phpgw']->common->phpgw_footer();
+                        $GLOBALS['phpgw']->common->phpgw_exit();
+
+		 }
+		 function search_dir(){
+			 $GLOBALS['phpgw_info']['flags'] = array
+				 (
+					 'currentapp'    => 'filemanager',
+					 'noheader'      => True,
+					 'nonavbar' => True,
+					 'nofooter'      => True,
+					 'noappheader'   => True,
+					 'enable_browser_class'  => True
+				 );
+			 $name = $GLOBALS['phpgw']->db->db_addslashes($_GET['name']);
+			 $GLOBALS['phpgw']->db->query('SELECT DISTINCT directory FROM phpgw_vfs WHERE (directory like \'%'.$name.'%\') LIMIT 20',__LINE__,__FILE__);
+			 while ($GLOBALS['phpgw']->db->next_record()){
+				 $val = $GLOBALS['phpgw']->db->row();
+				 echo "<option>".$val['directory']."</option>";
+			 }
+			 $GLOBALS['phpgw']->db->query('SELECT directory,name from phpgw_vfs WHERE directory = \'/home\' and name like \'%'.$name.'%\' LIMIT 1',__LINE__,__FILE__);
+			 if ($GLOBALS['phpgw']->db->next_record()){
+				 $val = $GLOBALS['phpgw']->db->row();
+				 echo "<option>".$val['directory']."/".$val['name']."</option>";
+			 }
+			
+
+		 }
+		 function search_user(){
+			 $GLOBALS['phpgw_info']['flags'] = array
+				 (
+					 'currentapp'    => 'filemanager',
+					 'noheader'      => True,
+					 'nonavbar' => True,
+					 'nofooter'      => True,
+					 'noappheader'   => True,
+					 'enable_browser_class'  => True
+				 );
+			 $account_info = $GLOBALS['phpgw']->accounts->get_list('both',0,'','',$_GET['name'],'all');
+
+			 foreach($account_info as $val)
+				 echo "<option value='".$val['account_id']."'>".$val['account_lid']."</option>";
+		 }
+		 function set_permission(){
+			 $GLOBALS['phpgw_info']['flags'] = array
+				 (
+					 'currentapp'    => 'filemanager',
+					 'noheader'      => True,
+					 'nonavbar' => True,
+					 'nofooter'      => True,
+					 'noappheader'   => True,
+					 'enable_browser_class'  => True
+				 );
+			 $name = $GLOBALS['phpgw']->db->db_addslashes(base64_decode($_GET['dir']));
+			 $perms = ($_GET['perms'])*1;
+			 $owner = ($_GET['owner'])*1;
+			 $dirs=explode('/',$name);
+			 $GLOBALS['phpgw']->db->query('SELECT owner_id  from phpgw_vfs  WHERE directory = \'/'.$dirs[1].'\' and name=\''.$dirs[2].'\' LIMIT 1',__LINE__,__FILE__);
+			 if ($GLOBALS['phpgw']->db->next_record()){
+				 $val = $GLOBALS['phpgw']->db->row();
+				 $owner_id = $val['owner_id'];
+			 }
+
+			 $query = "SELECT count(*) FROM phpgw_acl WHERE acl_appname = 'filemanager' and acl_account = '".$owner_id."' and acl_location='".$owner."'";
+			 if ($GLOBALS['phpgw']->db->query($query) && $GLOBALS['phpgw']->db->next_record())
+				 $val = $GLOBALS['phpgw']->db->row();
+			 else
+			 {
+				 echo $GLOBALS['phpgw']->db->error;
+				 return false;
+			 }
+			 if ($val['count'] == '1')
+				$GLOBALS['phpgw']->db->query("UPDATE phpgw_acl SET acl_rights = ".$perms." where acl_appname = 'filemanager' and acl_account = '".$owner_id."' AND acl_location = '".$owner."'",__LINE__,__FILE__);
+			 else
+				 $GLOBALS['phpgw']->db->query("INSERT INTO phpgw_acl values('filemanager','".$owner."','".$owner_id."',".$perms.")",__LINE__,__FILE__);
+			 if ($GLOBALS['phpgw']->db->Error)
+				 echo "Erro";
+			 else
+			 {
+				echo lang('entry updated sucessfully');
+			 }
+			 return;
+		 }
+	
+
+		 function set_owner(){
+			 $GLOBALS['phpgw_info']['flags'] = array
+				 (
+					 'currentapp'    => 'filemanager',
+					 'noheader'      => True,
+					 'nonavbar' => True,
+					 'nofooter'      => True,
+					 'noappheader'   => True,
+					 'enable_browser_class'  => True
+				 );
+			 $name = $GLOBALS['phpgw']->db->db_addslashes(base64_decode($_GET['dir']));
+			 $owner = ($_GET['owner'])*1;
+
+			 $GLOBALS['phpgw']->db->query('UPDATE phpgw_vfs SET owner_id = '.$owner.' WHERE directory = \''.$name.'\'',__LINE__,__FILE__);
+			 if ($GLOBALS['phpgw']->db->Error)
+				 echo "Erro";
+			 else
+			 {
+				 $dirs=explode('/',$name);
+				 $GLOBALS['phpgw']->db->query('UPDATE phpgw_vfs SET owner_id = '.$owner.' WHERE directory = \'/'.$dirs[1].'\' and name=\''.$dirs[2].'\'',__LINE__,__FILE__);
+				 if ($GLOBALS['phpgw']->db->Error)
+					 echo "Erro";
+				 else
+				 {
+					 echo lang('entry updated sucessfully');
+				 }
+			 }
+			 return;
+		 }
+	
+		 function update_quota(){
+			 $GLOBALS['phpgw_info']['flags'] = array
+				 (
+					 'currentapp'    => 'filemanager',
+					 'noheader'      => True,
+					 'nonavbar' => True,
+					 'nofooter'      => True,
+					 'noappheader'   => True,
+					 'enable_browser_class'  => True
+				 );
+			 $name = $GLOBALS['phpgw']->db->db_addslashes(base64_decode($_GET['dir']));
+			 $size = ($_GET['val'])*1;
+
+			 /* See if quota exists or not */
+			 $query = "SELECT count(directory) FROM phpgw_vfs_quota WHERE directory = '".$name."' LIMIT 1";
+			 if ($GLOBALS['phpgw']->db->query($query) && $GLOBALS['phpgw']->db->next_record())
+				 $val = $GLOBALS['phpgw']->db->row();
+			 else
+			 {
+				 echo $GLOBALS['phpgw']->db->error;
+				 return false;
+			 }
+			 if ($val['count'] == '1')
+			 {
+				 $GLOBALS['phpgw']->db->query('UPDATE phpgw_vfs_quota SET quota_size = '.$size.' WHERE directory = \''.$name.'\'',__LINE__,__FILE__);
+				 if ($GLOBALS['phpgw']->db->Error)
+					 echo "Erro";
+				 else
+					 echo lang('entry updated sucessfully');
+			 }
+			 else
+			 {
+				 /*preferences does not exist*/
+				 $query = "INSERT INTO phpgw_vfs_quota values ('".$name."',".$size.")";
+				 if (!$GLOBALS['phpgw']->db->query($query))
+					 echo $GLOBALS['phpgw']->db->error;
+				 else
+					 echo lang('entry updated sucessfully');
+			 }
+			 return; 
+		 }
+		 function load_quota(){
+			 $GLOBALS['phpgw_info']['flags'] = array
+				 (
+					 'currentapp'    => 'filemanager',
+					 'noheader'      => True,
+					 'nonavbar' => True,
+					 'nofooter'      => True,
+					 'noappheader'   => True,
+					 'enable_browser_class'  => True
+				 );
+			 $name = $GLOBALS['phpgw']->db->db_addslashes(base64_decode($_GET['name']));
+			 $GLOBALS['phpgw']->db->query('SELECT quota_size FROM phpgw_vfs_quota WHERE directory = \''.$name.'\' LIMIT 1',__LINE__,__FILE__);
+			 $GLOBALS['phpgw']->db->next_record();
+			 $val =$GLOBALS['phpgw']->db->row();
+			 echo $val['quota_size'];
+			 return;
+
+		 }
+
+
+	}
+?>
Index: /trunk/filemanager/inc/hook_admin.inc.php
===================================================================
--- /trunk/filemanager/inc/hook_admin.inc.php	(revision 2000)
+++ /trunk/filemanager/inc/hook_admin.inc.php	(revision 2000)
@@ -0,0 +1,36 @@
+<?php
+if(!isset($GLOBALS['phpgw_info'])){
+	$GLOBALS['phpgw_info']['flags'] = array(
+		'currentapp' => 'filemanager',
+		'nonavbar'   => true,
+		'noheader'   => true
+	);
+}
+require_once '../header.inc.php';
+
+
+	/**************************************************************************\
+	* eGroupWare                                                               *
+	* http://www.egroupware.org                                                *
+	* Written by Joseph Engo <jengo@phpgroupware.org>                          *
+	* --------------------------------------------                             *
+	*  This program is free software; you can redistribute it and/or modify it *
+	*  under the terms of the GNU General Public License as published by the   *
+	*  Free Software Foundation; either version 2 of the License, or (at your  *
+	*  option) any later version.                                              *
+	\**************************************************************************/
+
+{
+// Only Modify the $file and $title variables.....
+	$title = $appname;
+	$file = Array(
+		'Site Configuration' => $GLOBALS['phpgw']->link('/index.php','menuaction=admin.uiconfig.index&appname=' . $appname),
+		'Folders management' => $GLOBALS['phpgw']->link('/index.php','menuaction='.$appname.'.uiconfig.folders'),
+		'Quota management' => $GLOBALS['phpgw']->link('/index.php','menuaction='.$appname.'.uiconfig.quota'),
+		'Permissions of groups and users' => $GLOBALS['phpgw']->link('/index.php','menuaction='.$appname.'.uiconfig.groups_users')
+
+	);
+//Do not modify below this line
+	display_section($appname,$title,$file);
+}
+?>
Index: /trunk/filemanager/inc/load_lang.php
===================================================================
--- /trunk/filemanager/inc/load_lang.php	(revision 2000)
+++ /trunk/filemanager/inc/load_lang.php	(revision 2000)
@@ -0,0 +1,13 @@
+<?php
+	$array_keys = array();
+	$fn = $GLOBALS['phpgw_info']['flags']['currentapp'].'/setup/phpgw_'.$GLOBALS['phpgw_info']['user']['preferences']['common']['lang'].'.lang';
+	if (file_exists($fn)){
+			$fp = fopen($fn,'r');
+		while ($data = fgets($fp,16000)){
+			list($message_id,$app_name,$null,$content) = explode("\t",substr($data,0,-1));
+			$script .= "array_lang['".str_replace("'","\'",strtolower($message_id))."'] = '".str_replace("'","\'",$content)."';\n";
+		}
+		fclose($fp);
+	}
+	echo "<script type='text/javascript'>var array_lang = new Array(); $script</script>";
+?>
Index: /trunk/filemanager/inc/class.vfs_functions.inc.php
===================================================================
--- /trunk/filemanager/inc/class.vfs_functions.inc.php	(revision 2000)
+++ /trunk/filemanager/inc/class.vfs_functions.inc.php	(revision 2000)
@@ -0,0 +1,439 @@
+<?php
+	/**************************************************************************\
+	* -------------------------------------------------------------------------*
+	* This library is free software; you can redistribute it and/or modify it  *
+	* under the terms of the GNU Lesser General Public License as published by *
+	* the Free Software Foundation; either version 2.1 of the License,         *
+	* or any later version.                                                    *
+	* This library is distributed in the hope that it will be useful, but      *
+	* WITHOUT ANY WARRANTY; without even the implied warranty of               *
+	* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                     *
+	* See the GNU Lesser General Public License for more details.              *
+	* You should have received a copy of the GNU Lesser General Public License *
+	* along with this library; if not, write to the Free Software Foundation,  *
+	* Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA            *
+	\**************************************************************************/
+
+	/* $Id: class.vfs_functions.inc.php 2009-11-11 amuller $ */
+
+	class vfs_functions
+	{
+		var $public_functions = array(
+			'touch' => True,
+			'download'=>True,
+			'setRestricted'=>True,
+			'editComment'=> True,
+			'rename'=>True,
+			'delete'=>True,
+			'archive'=>True,
+			'unarchive'=>True,
+			'copyto'=>True,
+			'moveto'=>True,
+			'summary' => True
+		);
+
+		//keep
+		var $bo;
+		var $dispath;
+		var $cwd;
+		var $lesspath;
+		var $dispsep;
+
+		var $target;
+
+		var $prefs;//array
+
+		var $current_config;
+		// this ones must be checked thorougly;
+		var $fileman = Array();
+		//var $fileman;
+		var $path;
+		var $file;
+		var $debug = false;
+		var $now;
+
+		function vfs_functions()
+		{
+			$this->now = date('Y-m-d H:i:s');
+
+			$this->bo = CreateObject('filemanager.bofilemanager');
+
+			$c = CreateObject('phpgwapi.config','filemanager');
+			$c->read_repository();
+			$this->current_config = $c->config_data;
+
+
+			// here local vars are created from the HTTP vars
+			@reset($GLOBALS['HTTP_POST_VARS']);
+			while(list($name,) = @each($GLOBALS['HTTP_POST_VARS']))
+			{
+				$this->$name = $GLOBALS['HTTP_POST_VARS'][$name];
+			}
+
+			@reset($GLOBALS['HTTP_GET_VARS']);
+			while(list($name,) = @each($GLOBALS['HTTP_GET_VARS']))
+			{
+				$$name = $GLOBALS['HTTP_GET_VARS'][$name];
+				$this->$name = $GLOBALS['HTTP_GET_VARS'][$name];
+
+			}
+
+			$to_decode = array
+			(
+				'op'	=> array('op' => ''),
+				'path'	=> array('path' => ''),
+				'file'	=> array('file' => ''),
+				'sortby'	=> array('sortby' => ''),
+				'messages'	=> array('messages'	=> ''),
+				'comment'	=> array('comment' => ''),
+				'from'	=> array('from' => ''),
+				'fileman' => array('fileman' => ''),
+				'to'	=> array('to' => '')
+			);
+
+			reset($to_decode);
+			while(list($var, $conditions) = each($to_decode))
+			{
+				while(list($condvar, $condvalue) = each($conditions))
+				{
+					if(isset($$condvar) && ($condvar == $var || $$condvar == $condvalue))
+					{
+						if(is_array($$var))
+						{
+							$temp = array();
+							while(list($varkey, $varvalue) = each($$var))
+							{
+								if(is_int($varkey))
+								{
+									$temp[$varkey] = stripslashes(base64_decode($varvalue));
+								}
+								else
+								{
+									$temp[stripslashes(base64_decode($varkey))] = $varvalue;
+								}
+							}
+							$this->$var = $temp;
+						}
+						elseif(isset($$var))
+						{
+							$this->$var = stripslashes(base64_decode($$var));
+						}
+					}
+				}
+			}
+
+			// get appl. and user prefs
+			$pref = CreateObject('phpgwapi.preferences', $this->bo->userinfo['username']);
+			$pref->read_repository();
+			$pref->save_repository(True);
+			$pref_array = $pref->read_repository();
+			$this->prefs = $pref_array[$this->bo->appname];
+
+			//always show name
+
+			$this->prefs[name] =1;		
+			
+		}
+	// String format is YYYY-MM-DD HH:MM
+		function dateString2timeStamp($string){
+			return mktime($string[11].$string[12],
+				$string[14].$string[15],
+				$string[17].$string[18], 
+				$string[5].$string[6], 
+				$string[8].$string[9],
+				$string[0].$string[1].
+				$string[2].$string[3]);
+		}
+		function verifyLock($file,$relative){
+			$ls_array = $this->bo->vfs->ls(array(
+				'string'        => $file,
+				'relatives'     => array($relative),
+				'checksubdirs'  => False,
+				'nofiles'       => True
+			));
+			$timestamp = $this->dateString2timeStamp($ls_array[0]['modified']);
+			if (time() - $timestamp < 60 && $ls_array[0]['modifiedby_id'] != $GLOBALS['phpgw_info']['user']['account_id']) // recently than last minute: someone is editing
+			{
+				$this->messages[]=lang('Error:').lang('This file is being edited right now by:').$GLOBALS['phpgw']->accounts->id2name($ls_array[0]['modifiedby_id']);
+				return False;
+
+			}
+			else
+				return True;
+		}
+
+		function setRestricted(){
+			$GLOBALS['phpgw_info']['flags'] = array
+				(
+					'currentapp'    => 'filemanager',
+					'noheader'      => True,
+					'nonavbar' => True,
+					'nofooter'      => True,
+					'noappheader'   => True,
+					'enable_browser_class'  => True
+				);
+
+			if ($this->file)
+			{
+				$filename=$this->path.'/'.$this->file;
+				if(!$this->verifyLock($filename,RELATIVE_NONE))
+				{
+					echo "False";
+					return False;
+				}
+				
+				$ls_array = $this->bo->vfs->ls(array(
+					'string'        => $filename,
+					'relatives'     => array(RELATIVE_NONE),
+					'checksubdirs'  => False,
+					'nofiles'       => True
+				));
+				if (intval($ls_array[0]['type']) == 0)
+					$type = 1;
+				else
+					$type = 0;
+
+				if($this->bo->vfs->set_attributes (array(
+					'string'        => $filename,
+					'relatives'     => RELATIVE_NONE,
+					'attributes'    => array('type' => $type)
+					))
+				)
+				{
+					echo "True|".$this->file;
+				}
+				else
+				{
+					echo "False";
+				}
+			}
+
+		}
+		function touch(){
+			if($this->file)
+				if ($this->bo->vfs->touch(array('string'=> $this->file,'relatives' => array(RELATIVE_ALL))))
+				{
+					echo "True";
+					return True;
+				}
+				else
+					return False;
+
+		}
+		function summary()
+		{
+			header('Content-Type: image/png');
+			$expires = 60*60*24*15;
+			header("Cache-Control: maxage=".$expires);
+			header("Pragma: public");
+			header("Expires: ".gmdate('D, d M Y H:i:s', time()+$expires));
+			if($this->file)
+			{	
+				$content = $this->bo->vfs->summary(array('path' => $this->path,
+					'string' => $this->file
+				));
+				if (strlen($content) < 1)
+				{
+					$filename = './filemanager/templates/default/images/error.png';
+					$handle = fopen($filename,'rb');
+					$content = fread($handle,filesize($filename));
+					fclose($handle);
+				}
+				echo $content;
+			}
+			$GLOBALS['phpgw']->common->phpgw_exit();
+		}
+	
+		function delete(){
+			foreach($this->fileman as $filename)
+			{
+				if($this->verifyLock($filename,RELATIVE_ALL) && $this->bo->vfs->rm(array(
+					'string' => $this->path.'/'.$filename,
+					'relatives' => array (RELATIVE_NONE)
+				)))
+				{
+					echo $filename."|";
+				}
+				else
+				{
+					echo "False|".$filename;
+					return False;
+				}
+			}
+		}
+		function archive(){
+			foreach($this->fileman as $filename)
+			{
+				if(!$this->verifyLock($filename,RELATIVE_ALL))
+				{
+					echo "locked|".$filename;
+					return False;
+				}
+				$command .= " ".escapeshellarg($filename);
+			}
+			$zipFileName=$GLOBALS['phpgw_info']['user']['account_lid'].date("Y-m-d,H:i:s").".zip";
+			$zipFilePath=ini_get("session.save_path")."/".$zipFileName;
+			$command = $zipFilePath.$command;
+
+			if (strlen($this->pswd) > 0){
+				$command = " -P ".(base64_decode($this->pswd) ^ $_SESSION['phpgw_info']['filemanager']['user']['sec_key'])." ".$command;
+			}
+
+			exec("cd ".$this->bo->vfs->basedir.$this->path.";".escapeshellcmd("nice -n19 zip -9 ".$command),$output,$return_var);
+			exec("history -c"); // privacy is good, we dont want get passwords!
+                        if ($return_var > 1){
+				echo "False|".$return_var;
+				return false;
+			}
+
+			$this->bo->vfs->cp(array(
+				'from'=> $zipFilePath,
+				'to'=> $zipFileName,
+				'relatives'     => array(RELATIVE_NONE|VFS_REAL, RELATIVE_ALL)
+			));
+			$this->bo->vfs->set_attributes(array(
+				'string'=> $zipFileName,
+				'relatives'     => array(RELATIVE_ALL),
+				'attributes'=> array(
+					'mime_type' => "application/zip"
+				)
+			));
+			exec("rm -f ".escapeshellcmd(escapeshellarg($zipFilePath)));
+			$this->delete();
+		}
+		function unarchive(){
+			$command = escapeshellarg($this->file);
+			if (strlen($this->pswd) > 0){
+				$command = " -P ".(base64_decode($this->pswd) ^ $_SESSION['phpgw_info']['filemanager']['user']['sec_key'])." ".$command;
+			}
+
+			exec("cd ".escapeshellarg($this->bo->vfs->basedir.$this->path).";".escapeshellcmd("nice -n19 unzip ".$command),$output, $return_var);
+			exec("history -c"); // privacy is good, we dont want get passwords!
+
+			if ($return_var == 9 || $return_var == 5 || $return_var == 82){
+				echo "wpasswd|";
+				return false;
+			}else if($return_var > 1){
+				echo "False|";
+			}
+
+			$this->fileman[] = $this->file;
+			$this->delete();
+			$this->bo->vfs->update_real(array(
+					'string'        => $this->path,
+					'relatives'     => array(RELATIVE_NONE)
+				));
+		}
+		function editComment()
+		{
+				if($badchar = $this->bo->bad_chars($this->comment, False, True))
+				{
+					echo "False|badchar|".$badchar;
+					return False;
+				}
+
+				if ($this->bo->vfs->set_attributes(array(
+					'string'        => $this->file,
+					'relatives'     => array(RELATIVE_ALL),
+					'attributes'    => array(
+					'comment' => stripslashes($this->comment)
+					)
+				)))
+				{
+					echo "True|".$this->file;
+					return True;
+				}
+		}
+		# Handle Moving Files and Directories
+		function moveto()
+		{
+			if(!$this->to)
+			{
+				echo "NODIR|";
+				return;
+			}
+			else
+			{
+				while(list($num, $file) = each($this->fileman))
+				{
+					if($this->bo->vfs->mv(array(
+						'from'	=> $this->from . '/' . $file,
+						'to'	=> $this->to . '/' . $file,
+						'relatives'	=> array(RELATIVE_NONE, RELATIVE_NONE)
+					)))
+						$moved++;
+					else
+						$error++;
+				}
+			}
+			if($error > 0){
+				echo "SOMEERROR|".$error;
+				return;
+			}
+			if($moved > 0)
+				echo "MOVED|".$moved;
+		}
+
+		// Handle Copying of Files and Directories
+		function copyto()
+		{
+			if(!$this->to)
+			{
+				echo "NODIR|";
+				return;
+			}
+			else
+			{
+				while(list($num, $file) = each($this->fileman))
+				{
+					if($this->bo->vfs->cp(array(
+						'from'	=> $this->from . '/' . $file,
+						'to'	=> $this->to . '/' . $file,
+						'relatives'	=> array(RELATIVE_NONE, RELATIVE_NONE)
+					)))
+						$copied++;
+					else
+						$error++;
+				}
+			}
+			if($error > 0){
+				echo "SOMEERROR|".$error;
+				return;
+			}
+			if($copied > 0)
+				echo "COPIED|".$copied;
+		}
+
+		# Handle Renaming Files and Directories
+		function rename()
+		{
+			if ($this->file)
+			{
+				if($badchar = $this->bo->bad_chars($this->to, True, True))
+				{
+					echo "Error|badchar|".$badchar;
+					return false;
+				}
+				if(ereg("/", $this->to) || ereg("\\\\", $this->to))
+				{
+					echo "Error|slashes";
+					return false;
+				}
+				elseif(!$this->verifyLock($this->file,RELATIVE_CURRENT))
+					echo "Error|editing";
+				elseif ($this->bo->vfs->mv(array(
+					'from'  => $this->path.'/'.$this->file,
+					'to'    => $this->path.'/'.$this->to,
+					'relatives' => array(RELATIVE_NONE,RELATIVE_NONE)
+				)))
+				{
+					echo "True|".$this->file."|".$this->to;
+				}
+				else
+				{
+					echo "Error|".$this->file."|".$this->to;
+				}
+			}
+		}
+
+	}
Index: /trunk/filemanager/inc/class.uifilemanager.inc.php
===================================================================
--- /trunk/filemanager/inc/class.uifilemanager.inc.php	(revision 2000)
+++ /trunk/filemanager/inc/class.uifilemanager.inc.php	(revision 2000)
@@ -0,0 +1,1557 @@
+<?php
+	/**************************************************************************\
+	* -------------------------------------------------------------------------*
+	* This library is free software; you can redistribute it and/or modify it  *
+	* under the terms of the GNU Lesser General Public License as published by *
+	* the Free Software Foundation; either version 2.1 of the License,         *
+	* or any later version.                                                    *
+	* This library is distributed in the hope that it will be useful, but      *
+	* WITHOUT ANY WARRANTY; without even the implied warranty of               *
+	* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                     *
+	* See the GNU Lesser General Public License for more details.              *
+	* You should have received a copy of the GNU Lesser General Public License *
+	* along with this library; if not, write to the Free Software Foundation,  *
+	* Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA            *
+	\**************************************************************************/
+
+	/* $Id: class.uifilemanager.inc.php 17511 2004-12-12 06:35:24Z dawnlinux $ */
+
+	class uifilemanager
+	{
+		var $public_functions = array(
+			'index'	=> True,
+			'help'	=> True,
+			'view'  => True,
+			'export'=> True,
+			'touch' => True,
+			'history' => True,
+			'edit' => True,
+			'fileModels'=>True,
+			'getReturnExecuteForm' => True,
+			'dir_ls' => True,
+			'search' => True,
+			'get_folders_list' => True,
+			'showUploadboxes' => True,
+			'createdir' => True,
+			'removedir' => True,
+			'uploadModel'=>True
+		);
+
+		//keep
+		var $bo;
+		var $vfs_functions;
+		var $t; //template object
+		var $dispath;
+		var $cwd;
+		var $lesspath;
+		var $readable_groups;
+		var $files_array;
+		var $numoffiles;
+		var $dispsep;
+
+		var $target;
+
+		var $prefs;//array
+
+		var $groups_applications;
+
+		var $current_config;
+		var $dirs;
+		var $to;
+		var $changedir; // for switching dir.
+		var $cdtodir; // for switching dir.
+		var $newfile_or_dir;
+		var $newfile_x;
+		var $createfile_var;
+		var $move_to_x;
+		var $copy_to_x;
+		var $edit_x;
+		var $edit_file;
+		var $edit_preview_x;
+		var $edit_save_x;
+		var $edit_save_done_x;
+		var $edit_cancel_x;
+
+		// this ones must be checked thorougly;
+		var $fileman = Array();
+		//var $fileman;
+		var $path;
+		var $file; // FIXME WHERE IS THIS FILLED?
+		var $sortby;
+		var $messages;
+		var $limit; //for paging (paginacao)
+		var $offset; //for paging (paginacao)
+
+		var $now;
+
+		function uifilemanager()
+		{
+			$this->messages = &$_SESSION['phpgw_info']['filemanager']['user']['messages'];
+
+			$GLOBALS['phpgw']->browser = CreateObject('phpgwapi.browser');
+
+			$this->now = date('Y-m-d');
+
+			$this->bo = CreateObject('filemanager.bofilemanager');
+
+			$this->vfs_functions = CreateObject('filemanager.vfs_functions');
+
+			$this->t = $GLOBALS['phpgw']->template;
+			$c = CreateObject('phpgwapi.config','filemanager');
+			$c->read_repository();
+			$this->current_config = $c->config_data;
+
+
+			// here local vars are created from the HTTP vars
+			@reset($GLOBALS['HTTP_POST_VARS']);
+			while(list($name,) = @each($GLOBALS['HTTP_POST_VARS']))
+			{
+				$this->$name = $GLOBALS['HTTP_POST_VARS'][$name];
+			}
+
+			@reset($GLOBALS['HTTP_GET_VARS']);
+			while(list($name,) = @each($GLOBALS['HTTP_GET_VARS']))
+			{
+				$$name = $GLOBALS['HTTP_GET_VARS'][$name];
+				$this->$name = $GLOBALS['HTTP_GET_VARS'][$name];
+
+			}
+
+			$to_decode = array
+			(
+				'op'	=> array('op' => ''),
+				'path'	=> array('path' => ''),
+				'filename' => array('filename' => ''),
+				'file'	=> array('file' => ''),
+				'sortby'	=> array('sortby' => ''),
+				'messages'	=> array('messages'	=> ''),
+				'show_upload_boxes'	=> array('show_upload_boxes' => ''),
+				'from'	=>	array('from' => ''),
+				'to' => array('to' => '')
+
+			);
+
+			reset($to_decode);
+			while(list($var, $conditions) = each($to_decode))
+			{
+				while(list($condvar, $condvalue) = each($conditions))
+				{
+					if(isset($$condvar) && ($condvar == $var || $$condvar == $condvalue))
+					{
+						$this->$var = stripslashes(base64_decode($$var));
+					}
+				}
+			}
+
+			// get appl. and user prefs
+			$pref = CreateObject('phpgwapi.preferences', $this->bo->userinfo['username']);
+			$pref->read_repository();
+			//$GLOBALS['phpgw']->hooks->single('add_def_pref', $GLOBALS['appname']);
+			$pref->save_repository(True);
+			$pref_array = $pref->read_repository();
+			$this->prefs = $pref_array[$this->bo->appname]; //FIXME check appname var in _debug_array
+
+			//always show name
+
+			$this->prefs[name] =1;
+
+
+			if($this->prefs['viewinnewwin'])
+			{
+				$this->target = '_blank';
+			}
+
+
+			/*
+				Check for essential directories
+				admin must be able to disable these tests
+			*/
+			
+			// check if basedir exist 
+			$test=$this->bo->vfs->get_real_info(array('string' => $this->bo->basedir, 'relatives' => array(RELATIVE_NONE), 'relative' => False));
+			if($test[mime_type]!='Directory')
+			{
+				die('Base directory does not exist, Ask adminstrator to check the global configuration.');
+			}
+
+			$test=$this->bo->vfs->get_real_info(array('string' => $this->bo->basedir.$this->bo->fakebase, 'relatives' => array(RELATIVE_NONE), 'relative' => False));
+			if($test[mime_type]!='Directory')
+			{
+				$this->bo->vfs->override_acl = 1;
+
+				$this->bo->vfs->mkdir(array(
+					'string' => $this->bo->fakebase,
+					'relatives' => array(RELATIVE_NONE)
+				));
+				
+				$this->bo->vfs->override_acl = 0;
+
+				//test one more time
+				$test=$this->bo->vfs->get_real_info(array('string' => $this->bo->basedir.$this->bo->fakebase, 'relatives' => array(RELATIVE_NONE), 'relative' => False));
+
+				if($test[mime_type]!='Directory')
+				{
+					die('Fake Base directory does not exist and could not be created, please ask the administrator to check the global configuration.');
+				}
+				else
+				{
+					$this->messages[]= lang('Fake Base Dir did not exist, created a new one.');
+				}
+			}
+
+			$test=$this->bo->vfs->get_real_info(array('string' => $this->bo->basedir.$this->bo->homedir, 'relatives' => array(RELATIVE_NONE), 'relative' => False));
+			if($test[mime_type]!='Directory')
+			{
+				$this->bo->vfs->override_acl = 1;
+
+				$this->bo->vfs->mkdir(array(
+					'string' => $this->bo->homedir,
+					'relatives' => array(RELATIVE_NONE)
+				));
+				$this->bo->vfs->set_quota(array(
+					'string' => $this->bo->homedir,
+					'relatives' => array(RELATIVE_NONE),
+					'new_quota' => $this->current_config['filemanager_quota_size'] 
+				));
+	
+				$this->bo->vfs->override_acl = 0;
+
+				//test one more time
+				$test=$this->bo->vfs->get_real_info(array('string' => $this->bo->basedir.$this->bo->homedir, 'relatives' => array(RELATIVE_NONE), 'relative' => False));
+
+				if($test[mime_type]!='Directory')
+				{
+					die('Your Home Dir does not exist and could not be created, please ask the adminstrator to check the global configuration.');
+				}
+				else
+				{
+					$this->messages[]= lang('Your Home Dir did not exist, eGroupWare created a new one.');
+					// FIXME we just created a fresh home dir so we know there nothing in it so we have to remove all existing content
+				}
+
+
+			}
+		}
+		function fileModels()
+		{
+			$GLOBALS['phpgw_info']['flags'] = array
+				(
+					'currentapp'    => 'filemanager',
+					'noheader'      => False,
+					'nonavbar' => False,
+					'nofooter'      => False,
+					'noappheader'   => False,
+					'enable_browser_class'  => True
+				);
+
+			$GLOBALS['phpgw']->common->phpgw_header();
+			$this->t->set_file(array('models' => 'fileModels.tpl'));
+			$this->t->set_block('models','header','header');
+			$this->t->set_block('models','body','body');
+			$this->t->set_block('models','footer','footer');
+			$this->t->set_var('url_1', './index.php?menuaction=filemanager.uifilemanager.uploadModel&model=article');
+			$this->t->set_var('model_1','article');
+			$this->t->set_var('lang_1',lang('article'));
+
+			$this->t->set_var('url_2','./index.php?menuaction=filemanager.uifilemanager.uploadModel&model=calendar');
+			$this->t->set_var('model_2','calendar');
+			$this->t->set_var('lang_2',lang('calendar'));
+
+			$this->t->set_var('url_3','./index.php?menuaction=filemanager.uifilemanager.uploadModel&model=todo');
+			$this->t->set_var('model_3','todo');
+			$this->t->set_var('lang_3',lang('todo'));
+
+			$this->t->set_var('url_4','./index.php?menuaction=filemanager.uifilemanager.uploadModel&model=slide');
+			$this->t->set_var('model_4','slide');
+			$this->t->set_var('lang_4',lang('slide'));
+
+			$this->t->set_var('url_5','./index.php?menuaction=filemanager.uifilemanager.uploadModel&model=cards');
+			$this->t->set_var('model_5','cards');
+			$this->t->set_var('lang_5',lang('cards'));
+
+			$this->t->set_var('url_6','./index.php?menuaction=filemanager.uifilemanager.uploadModel&model=resume');
+			$this->t->set_var('model_6','resume');
+			$this->t->set_var('lang_6',lang('resume'));
+
+
+			$this->t->pparse('out','models');
+
+
+		}
+		function uploadModel(){
+			$GLOBALS['phpgw_info']['flags'] = array
+				(
+					'currentapp'    => 'filemanager',
+					'noheader'      => False,
+					'nonavbar' => False,
+					'nofooter'      => False,
+					'noappheader'   => False,
+					'enable_browser_class'  => True
+				);
+
+			$GLOBALS['phpgw']->common->phpgw_header();
+
+			$filename = lang('new')."_".lang($this->model).rand(0,1000).".html";
+			$this->bo->vfs->cp(array(
+				'from'=> PHPGW_SERVER_ROOT . '/filemanager/templates/default/'.$this->model.'.html',
+				'to'=> $filename,
+				'relatives'     => array(RELATIVE_NONE|VFS_REAL, RELATIVE_ALL)
+			));
+
+			$this->bo->vfs->set_attributes(array(
+				'string'=> $filename,
+				'relatives'     => array(RELATIVE_ALL),
+				'attributes'=> array(
+					'mime_type' => "text/html",
+					'comment' => ""
+				)
+			));
+			$this->filename = $filename;
+			$this->edit();
+
+		}
+		function index()
+		{
+			$GLOBALS['phpgw_info']['flags'] = array
+			(
+				'currentapp'	=> 'filemanager',
+				'noheader'	=> False,
+				'nonavbar' => False,
+				'nofooter'	=> False,
+				'noappheader'	=> False,
+				'enable_browser_class'	=> True
+			);
+
+			$GLOBALS['phpgw']->common->phpgw_header();
+
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/global.js'></script>";
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/main.js'></script>";
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/common_functions.js'></script>";
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/connector.js'></script>";
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/draw_api.js'></script>";
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/drag_area.js'></script>";
+			echo "<script src='".$GLOBALS['phpgw_info']['flags']['currentapp']."/js/handler.js'></script>";
+			echo "<script src='./phpgwapi/js/dftree/dftree.js'></script>";
+
+			include('load_lang.php');
+
+			# Page to process users
+			# Code is fairly hackish at the beginning, but it gets better
+			# Highly suggest turning wrapping off due to long SQL queries
+
+			###
+			# Some hacks to set and display directory paths correctly
+			###
+			// new method for switching to a new dir.
+			if($this->changedir=='true' && $this->cdtodir || $this->goto_x)
+			{
+				$this->path = $this->cdtodir;
+			}
+
+			if(!$this->path)
+			{
+				$this->path = $this->bo->vfs->pwd();
+
+				if(!$this->path || $this->bo->vfs->pwd(array('full' => False)) == '')
+				{
+					$this->path = $this->bo->homedir; 
+				}
+			}
+
+			$this->bo->vfs->cd(array('string' => False, 'relatives' => array(RELATIVE_NONE), 'relative' => False));
+			$this->bo->vfs->cd(array('string' => $this->path, 'relatives' => array(RELATIVE_NONE), 'relative' => False));
+
+			$pwd = $this->bo->vfs->pwd();
+
+			if(!$this->cwd = substr($this->path, strlen($this->bo->homedir) + 1))  
+			{
+				$this->cwd = '/';
+			}
+			else
+			{
+				$this->cwd = substr($pwd, strrpos($pwd, '/') + 1);
+			}
+
+			$this->disppath = $this->path;
+
+			/* This just prevents // in some cases */
+			if($this->path == '/')
+			{
+				$this->dispsep = '';
+			}
+			else
+			{
+				$this->dispsep = '/';
+			}
+
+			if(!($this->lesspath = substr($this->path, 0, strrpos($this->path, '/'))))
+			{
+				$this->lesspath = '/';
+			}
+
+			/*Check permission*/
+			if($this->bo->vfs->acl_check(array(
+				'string' => $this->path,
+				'relatives' => array(RELATIVE_NONE),
+				'operation' => PHPGW_ACL_READ
+			)))
+			{
+				$this->can_read = True;
+			}
+
+
+			if ($_SESSION['phpgw_info']['user']['filemanager']['flush'] != 'flushed')
+			{
+				/*Flush journal-deleted*/
+				$this->bo->vfs->flush_journal(array(
+					'string' => $this->path,
+					'relatives' => array(RELATIVE_NONE),
+					'deleteall' => True
+				));
+				$_SESSION['phpgw_info']['user']['filemanager']['flush'] = 'flushed';
+			}
+
+
+
+			# if is different path than home and no permission allowed
+			if($this->path != $this->bo->homedir && $this->path != $this->bo->fakebase && $this->path != '/' && !$this->can_read)
+			{
+				$this->messages[] = lang('You do not have access to %1', $this->path);
+				$this->path = $this->homedir;
+				$this->bo->vfs->cd(array('string' => $this->path, 'relatives' => array(RELATIVE_NONE), 'relative' => False));
+				$GLOBALS['phpgw']->common->phpgw_footer();
+				$GLOBALS['phpgw']->common->phpgw_exit();
+			}
+
+			$this->bo->userinfo['working_id'] = $this->bo->vfs->working_id;
+			$this->bo->userinfo['working_lid'] = $GLOBALS['phpgw']->accounts->id2name($this->bo->userinfo['working_id']);
+
+			# Verify path is real
+			if($this->path != $this->bo->homedir && $this->path != '/' && $this->path != $this->bo->fakebase)
+			{
+				if(!$this->bo->vfs->file_exists(array(
+					'string' => $this->path,
+					'relatives' => array(RELATIVE_NONE)
+				)))
+				{
+					$this->messages[] = lang('Error:').lang('Directory %1 does not exist', $this->path);
+					$this->path = $this->homedir;
+					$this->bo->vfs->cd(array('string' => $this->path, 'relatives' => array(RELATIVE_NONE), 'relative' => False));
+					$GLOBALS['phpgw']->common->phpgw_footer();
+					$GLOBALS['phpgw']->common->phpgw_exit();
+				}
+			}
+
+
+			# Default is to sort by name
+			if(!$this->sortby)
+			{
+				$this->sortby = 'name';
+			}
+
+			if($this->newfile_x && $this->newfile_or_dir) // create new textfile
+			{
+				$this->createfile();
+			}
+			elseif($this->edit_cancel_x)
+			{
+				$this->readFilesInfo();
+				$this->fileListing();
+			}
+			elseif($this->edit_x || $this->edit_preview_x || $this->edit_save_x || $this->edit_save_done_x)
+			{
+				$this->edit();
+			}
+			else
+			{
+				//$this->readFilesInfo();
+				$this->fileListing();
+			}
+		}
+		function get_permissions(){
+			/* get permissions */
+			if((preg_match('+^'.$this->bo->fakebase.'\/(.*)(\/|$)+U', $this->path, $matches)) && $matches[1] != $this->bo->userinfo['account_lid']) //FIXME matches not defined
+
+			{
+				$this->bo->vfs->working_id = $GLOBALS['phpgw']->accounts->name2id($matches[1]);//FIXME matches not defined
+
+			}
+			else
+			{
+				$this->bo->vfs->working_id = $this->bo->userinfo['username'];
+			}
+
+			# Check available permissions for $this->path, so we can disable unusable operations in user interface
+			$path = explode('/',$this->path);
+			$owner_id = $this->bo->vfs->ownerOf($this->bo->fakebase,$path[2]);
+			$user_id = $GLOBALS['phpgw_info']['user']['account_id'];
+			if ($owner_id == $user_id)
+			{
+				$rights = 31;
+			}else
+			{
+				$acl = CreateObject ('phpgwapi.acl', $owner_id);
+				$acl->account_id = $owner_id;
+				$acl->read_repository();
+				$rights = $acl->get_rights($user_id);
+			}
+			return $rights;	
+		}
+		function dir_ls()
+		{
+			// change dir to this->path
+			$this->bo->vfs->cd(array('string' => $this->path, 'relatives' => array(RELATIVE_NONE), 'relative' => False));
+			$return['permissions'] = $this->get_permissions();
+			$return['quota']['usedSpace'] = $this->bo->vfs->get_size(array(
+					'string'        => $this->path,
+					'relatives'     => array(RELATIVE_NONE)
+			));
+			$return['files_count'] = $this->bo->vfs->count_files(array(
+					'string'        => $this->path,
+			));
+			$quota = $this->bo->vfs->get_quota(array(
+				'string'        => $this->path
+			));
+			reset($this->files_array);
+			$this->readFilesInfo();
+
+			for($i = 0; $i != $this->numoffiles; $i++)
+			{
+				$files = $this->files_array[$i];
+
+				if($files['mime_type'] == "Directory" || (!$this->prefs['dotfiles'] && ereg("^\.", $files['name'])))
+				{
+					continue;
+				}
+				/* small keys to safe bandwidth */
+				$tuple['name'] = $files['name'];
+				if ($_SESSION['phpgw_info']['user']['preferences']['filemanager']['viewIcons'] == 1){
+					if ($files['mime_type'] == 'image/png' || 
+						$files['mime_type'] == 'image/gif' || 
+						$files['mime_type'] == 'image/jpg')
+					{
+						$filename = str_replace('=','',base64_encode($tuple['name']));
+						$pathname = str_replace('=','',base64_encode($this->path));
+						$tuple['icon'] = './index.php?menuaction=filemanager.vfs_functions.summary&file='.$filename.'&path='.$pathname;
+					}
+					else
+						$tuple['icon'] =  $this->mime_icon($files['mime_type'],64);
+				}
+				else
+					$tuple['icon'] = $this->mime_icon($files['mime_type']);
+				$tuple['type'] = $files['type'];
+				$tuple['created'] = $this->vfs_functions->dateString2timeStamp($files['created']);
+				$tuple['modified'] = $this->vfs_functions->dateString2timeStamp($files['modified']);
+				$tuple['size'] = $files['size'];
+				$tuple['mime_type'] = $files['mime_type'];
+				$tuple['pub'] = $files['type'];
+				$tuple['createdby_id'] = $GLOBALS['phpgw']->accounts->id2name($files['createdby_id']);
+				$tuple['modifiedby_id'] = $files['modifiedby_id']?$GLOBALS['phpgw']->accounts->id2name($files['modifiedby_id']):'';
+				$tuple['owner'] = $GLOBALS['phpgw']->accounts->id2name($files['owner_id']);
+				$tuple['comment'] = $files['comment'];
+				$tuple['version'] = $files['version'];
+				$output[] = $tuple;
+
+			}
+			// TODO Order files directly into SQL
+			/*foreach ($output as $key => $row) {
+				$temp[$key]  = strtoupper($row[$this->criteria]);
+			}
+			if ($this->otype == "1")
+				array_multisort($temp, SORT_ASC, $output);
+			else
+				array_multisort($temp, SORT_DESC, $output);*/
+			$return['files'] = $output;
+			$return['quota']['quotaSize'] = ($quota*1024*1024);
+			echo serialize($return);
+		}
+		function get_folders_list()
+		{
+			$this->update_groups();	
+			$this->groups_applications = array();
+
+			$user_groups = $GLOBALS['phpgw']->accounts->membership();
+			foreach($user_groups as $val){
+				$account_name = $GLOBALS['phpgw']->accounts->id2name($val['account_id']);
+				$this->readable_groups[$account_name] = array(
+					'account_id' => $val['account_id'],
+					'account_name' => $account_name
+				);
+			}
+
+			foreach ($this->readable_groups as $value)
+			{
+				$applications = CreateObject('phpgwapi.applications', $value['account_id']);
+				$this->groups_applications[$value['account_name']] = $applications->read_account_specific();
+			}
+
+
+			// selectbox for change/move/and copy to
+			$this->dirs = $this->all_other_directories();
+			foreach($this->dirs as $dir)
+				$return[] = $dir['directory'] . $dir['name'];
+			echo serialize($return);
+		}
+		function fileListing()
+		{
+			$this->t->set_file(array('filemanager_list_t' => 'main.tpl'));
+			$this->t->set_block('filemanager_list_t','filemanager_header','filemanager_header');
+			$this->t->set_block('filemanager_list_t','filemanager_footer','filemanager_footer');
+
+			if($this->numoffiles || $this->cwd)
+			{
+				$vars[path]='<input type="hidden" id="currentPath" value="'.$this->path.'">';
+				$vars[css]='<link rel="stylesheet" type="text/css" href="filemanager/templates/default/main.css">';
+				$vars[css].='<link rel="stylesheet" type="text/css" href="phpgwapi/js/dftree/dftree.css">';
+				$vars[preferences]='<input type="hidden" id="userPreferences" value=\''.serialize($_SESSION['phpgw_info']['user']['preferences']['filemanager']).'\'>';
+				// Used for important operations that needs security
+				for ($key = ""; strlen($key) < 150; $key .= chr(rand(48,95)));
+				$_SESSION['phpgw_info']['filemanager']['user']['sec_key'] = $key;
+				$vars[sec_key]='<input type="hidden" id="userKey" value=\''.$key.'\'>';
+				$vars[script]='<script>initDrawApi();</script>';
+				
+				$vars[new_button]=$this->toolButton('new','createfile',lang('New...'));
+				$vars[new_button].='<input type="hidden" id="newfile_or_dir" name="newfile_or_dir" value="" />';
+				
+				// reload button with this url
+				$vars[refresh_button]=$this->toolButton('reload','reload',lang('reload'));
+
+				// go up icon when we're not at the top, dont allow to go outside /home = fakebase
+				if($this->path != '/' && $this->path != $this->bo->fakebase)
+				{
+					$vars[tools_button] = $this->toolButton('tools','tools',lang('tools'));
+				}
+				else
+					$vars[tools_button] = "";
+
+				$vars[toolbar1]=$toolbar;
+
+				if(count($this->messages)>0) 
+				{
+					foreach($this->messages as $msg)
+					{
+						$messages.='<span>'.$msg.'</span>';
+					}
+				}
+				$this->messages = NULL;
+				
+				$vars[messages]=$messages;
+
+				$this->t->set_var($vars);
+				$this->t->pparse('out','filemanager_header');
+			}
+
+			$this->t->set_var($vars);
+			$this->t->pparse('out','filemanager_footer');
+
+			$GLOBALS['phpgw']->common->phpgw_footer();
+			$GLOBALS['phpgw']->common->phpgw_exit();
+		}
+
+		function readFilesInfo()
+		{
+			// start files info
+
+			# Read in file info from database to use in the rest of the script
+			# $fakebase is a special directory.  In that directory, we list the user's
+			# home directory and the directories for the groups they're in
+			$this->numoffiles = 0;
+			if($this->path == $this->bo->fakebase)
+			{
+				// FIXME this test can be removed
+				if(!$this->bo->vfs->file_exists(array('string' => $this->bo->homedir, 'relatives' => array(RELATIVE_NONE))))
+				{
+					$this->bo->vfs->mkdir(array('string' => $this->bo->homedir, 'relatives' => array(RELATIVE_NONE)));
+				}
+
+				$ls_array = $this->bo->vfs->ls(array(
+					'string' => $this->bo->homedir,
+					'relatives' => array(RELATIVE_NONE),
+					'checksubdirs' => False,
+					'nofiles' => True
+				));
+
+				$this->files_array[] = $ls_array[0];
+				$this->numoffiles++;
+
+				reset($this->readable_groups);
+				while(list($num, $group_array) = each($this->readable_groups))
+				{
+					# If the group doesn't have access to this app, we don't show it
+					/*if(!$this->groups_applications[$group_array['account_name']][$this->bo->appname]['enabled'])
+					{
+						continue;
+					}
+					*/
+
+
+					if(!$this->bo->vfs->file_exists(array('string' => $this->bo->fakebase.'/'.$group_array['account_name'],'relatives'	=> array(RELATIVE_NONE))))
+					{
+						$this->bo->vfs->override_acl = 1;
+						$this->bo->vfs->mkdir(array(
+							'string' => $this->bo->fakebase.'/'.$group_array['account_name'],
+							'relatives' => array(RELATIVE_NONE)
+						));
+
+						// FIXME we just created a fresh group dir so we know there nothing in it so we have to remove all existing content
+						
+						
+						$this->bo->vfs->override_acl = 0;
+
+						$this->bo->vfs->set_attributes(array('string' => $this->bo->fakebase.'/'.$group_array['account_name'],'relatives'	=> array(RELATIVE_NONE),'attributes' => array('owner_id' => $group_array['account_id'],'createdby_id' => $group_array['account_id'])));
+					}
+
+					$ls_array = $this->bo->vfs->ls(array('string' => $this->bo->fakebase.'/'.$group_array['account_name'],'relatives'	=> array(RELATIVE_NONE),'checksubdirs' => False,'nofiles' => True));
+
+					$this->files_array[] = $ls_array[0];
+
+					$this->numoffiles++;
+				}
+			}
+			else
+			{
+				/*$this->limit = $this->limit ? $this->limit : 0;
+				$this->offset = $this->offset ? $this->offset : 100;*/
+				$ls_array = $this->bo->vfs->ls(array(
+					'string' => $this->path,
+					'relatives'	=> array(RELATIVE_NONE),
+					'checksubdirs' => False,
+					'nofiles'	=> False,
+					'orderby'	=> $this->criteria,
+					'otype'		=> $this->otype,
+					'limit'		=> $this->limit,
+					'offset'	=> $this->offset
+				));
+
+				while(list($num, $file_array) = each($ls_array))
+				{
+					$this->numoffiles++;
+					$this->files_array[] = $file_array;
+				}
+			}
+
+			if(!is_array($this->files_array))
+			{
+				$this->files_array = array();
+			}
+			// end file count
+		}
+		function removedir()
+		{
+			$toRemove = $this->path ^ $_SESSION['phpgw_info']['filemanager']['user']['sec_key'];
+			if ( $this->bo->vfs->rm(array( 'string' => $toRemove,
+				'relatives' => array (RELATIVE_NONE)
+			)) )
+				echo "True";
+			else
+				echo "False";
+		}
+		function createdir()
+		{
+			if($this->bo->badchar = $this->bo->bad_chars($this->filename, True, True))
+			{
+				echo lang('Error:').$this->bo->html_encode(lang('Directory names cannot contain "%1"', $badchar), 1);
+				return;
+			}
+			/* TODO is this right or should it be a single $ ? */
+			if($this->filename[strlen($this->filename)-1] == ' ' || $this->filename[0] == ' ')
+			{
+				echo lang('Error:').lang('Cannot create directory because it begins or ends in a space');
+			}
+			$ls_array = $this->bo->vfs->ls(array(
+				'string'	=> $this->path . '/' . $this->filename,
+				'relatives'	=> array(RELATIVE_NONE),
+				'checksubdirs'	=> False,
+				'nofiles'	=> True
+			));
+
+			$fileinfo = $ls_array[0];
+
+			if($fileinfo['name'])
+			{
+				if($fileinfo['mime_type'] != 'Directory')
+				{
+					echo lang('Error:').lang('%1 already exists as a file',$fileinfo['name']);
+				}
+				else
+				{
+					echo lang('Error:').lang('Directory %1 already exists', $fileinfo['name']);
+				}
+			}
+			else
+			{
+				if($this->bo->vfs->mkdir(array('string' => $this->filename)))
+				{
+					echo lang('Created directory %1', $this->disppath.'/'.$this->filename);
+				}
+				else
+				{
+					echo lang('Error:').lang('Could not create %1', $this->disppath.'/'.$this->filename);
+				}
+			}
+			echo lang('Directory created');
+		}
+		function getReturnExecuteForm(){
+			$response = $_SESSION['response'];
+			$_SESSION['response'] = null;
+			echo $response;
+			return;
+		}
+		function showUploadboxes()
+		{
+			$GLOBALS['phpgw_info']['flags'] = array
+				(
+					'currentapp'    => 'filemanager',
+					'noheader'      => True,
+					'nonavbar' => True,
+					'nofooter'      => True,
+					'noappheader'   => True
+				);
+			$GLOBALS['phpgw']->common->phpgw_header();
+
+			$this->t->set_file(array('upload' => 'upload.tpl'));
+			$this->t->set_block('upload','upload_header','upload_header');
+			$this->t->set_block('upload','row','row');
+			$this->t->set_block('upload','upload_footer','upload_footer');
+
+			if($this->path != '/' && $this->path != $this->bo->fakebase)
+			{
+				$vars[max_size]=lang('Note: Uploaded is limited to %1MB',($this->current_config['filemanager_Max_file_size']));
+				$vars[form_action]=$GLOBALS[phpgw]->link('/filemanager/inc/upload.php');
+				//$vars[form_action]=$GLOBALS[phpgw]->link('/index.php','menuaction=filemanager.uifilemanager.index');
+				$vars[path]=$this->path;
+				$vars[lang_file]=lang('File');
+				$vars[lang_comment]=lang('Comment');
+				$vars[num_upload_boxes]=1;
+				$this->t->set_var($vars);
+				$this->t->pparse('out','upload_header');
+
+				$this->t->set_var('row_tr_color',$tr_color);
+				$this->t->parse('rows','row');
+				$this->t->pparse('out','row');
+
+				$vars[lang_upload]=lang('Upload files');
+				$vars[change_upload_boxes].=lang('Show') . '&nbsp;';
+				$this->t->set_var($vars);
+				$this->t->pparse('out','upload_footer');
+			}
+		}
+
+		/* create textfile */
+		function createfile()
+		{
+			$this->filename=$this->newfile_or_dir;
+			if($this->filename)
+			{
+				if($badchar = $this->bo->bad_chars($this->filename, True, True))
+				{
+					$this->messages[] = lang('Error:').lang('File names cannot contain "%1"',$badchar);
+
+					$this->fileListing();
+				}
+
+				if($this->bo->vfs->file_exists(array(
+					'string'=> $this->filename,
+					'relatives'	=> array(RELATIVE_ALL)
+				)))
+				{
+					$this->messages[]= lang('Error:').lang('File %1 already exists. Please edit it or delete it first.', $this->filename);
+					$this->fileListing();
+				}
+
+				if($this->bo->vfs->touch(array(
+					'string'	=> $this->filename,
+					'relatives'	=> array(RELATIVE_ALL)
+				)))
+				{
+					$this->edit = 1;
+					$this->numoffiles++;
+					$this->edit();
+				}
+				else
+				{
+					$this->messages[]= lang('Error:').lang('File %1 could not be created.', $this->filename);
+					$this->fileListing();
+				}
+			}
+		}
+
+		# Handle Editing files
+		function edit()
+		{
+			if($this->filename)
+			{
+				if (! $this->vfs_functions->verifyLock($this->path.'/'.$this->filename,RELATIVE_NONE)){
+					$GLOBALS['phpgw']->redirect('/index.php');
+				}
+				$ls_array = $this->bo->vfs->ls(array(
+					'string'        => $this->path.'/'.$this->filename,
+					'relatives'     => array(RELATIVE_NONE),
+					'checksubdirs'  => False,
+					'nofiles'       => True
+				));
+				$this->bo->vfs->touch(array(
+					'string'=> $this->path.'/'.$this->filename,
+					'relatives'     => array(RELATIVE_NONE)
+				));
+
+
+				if($ls_array[0]['mime_type'])
+				{
+					$mime_type = $ls_array[0]['mime_type'];
+				}
+				elseif($this->prefs['viewtextplain'])
+				{
+					$mime_type = 'text/plain';
+				}
+				$editable = array('','text/plain','text/csv','text/html','text/text','message/rfc822');
+
+				if(!in_array($mime_type,$editable)){
+					$this->messages[] = lang('Error:').lang('Impossible to edit this file');
+					$this->readFilesInfo();
+					$this->fileListing();
+					return;
+				}
+			}
+
+			$this->readFilesInfo();
+
+			if ($mime_type == 'text/html')
+				$this->t->set_file(array('filemanager_edit' => 'edit_html.tpl'));
+			else
+				$this->t->set_file(array('filemanager_edit' => 'edit_file.tpl'));
+
+			$this->t->set_block('filemanager_edit','row','row');
+
+
+			$vars[refresh_script] = "<script src='filemanager/js/refresh.js'></script>";
+
+			$vars[preview_content]='';
+			if($this->edit_file)
+			{
+				$this->edit_file_content = stripslashes($this->edit_file_content);
+			}
+
+			if($this->edit_preview_x)
+			{
+				$content = $this->edit_file_content;
+
+				$vars[lang_preview_of]=lang('Preview of %1', $this->path.'/'.$edit_file);
+
+				$vars[preview_content]=nl2br($content);
+			}
+			elseif($this->edit_save_x || $this->edit_save_done_x)
+			{
+				$content = $this->edit_file_content;
+				//die( $content);
+				if($this->bo->vfs->write(array(
+					'string'	=> $this->path.'/'.$this->edit_file,
+					'relatives'	=> array(RELATIVE_NONE),
+					'content'	=> $content
+				)))
+				{
+					$this->messages[]=lang('Saved %1', $this->path.'/'.$this->edit_file);
+
+					if($this->edit_save_done_x)
+					{
+						$this->readFilesInfo();
+						$this->fileListing();
+						exit;
+					}
+				}
+				else
+				{
+					$this->messages[]=lang('Could not save %1', $this->path.'/'.$this->edit_file);
+				}
+			}
+
+			# If we're in preview or save mode, we only show the file
+			# being previewed or saved
+			if($this->edit_file &&($this->filename != $this->edit_file))
+			{
+				continue;
+			}
+
+			if($this->filename && $this->bo->vfs->file_exists(array(
+				'string'	=> $this->filename,
+				'relatives'	=> array(RELATIVE_ALL)
+			)))
+			{
+				if($this->edit_file)
+				{
+					$content = stripslashes($this->edit_file_content);
+				}
+				else
+				{
+					$content = $this->bo->vfs->read(array('string' => $this->filename));
+				}
+				$vars[form_action]= $GLOBALS['phpgw']->link('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->path);
+				$vars[edit_file]=$this->filename;
+				# We need to include all of the fileman entries for each file's form,
+				# so we loop through again
+				for($i = 0; $i != $this->numoffiles; $i++)
+				{
+					if($this->filename) $value='value="'.$this->filename.'"';
+					$vars[filemans_hidden]='<input type="hidden" name="filename" '.$value.' />';
+				}
+				$vars[file_content]=$content;
+
+				$vars[buttonPreview]=$this->inputButton('edit_preview','edit_preview',lang('Preview %1', $this->bo->html_encode($this->fileman[0], 1)));
+				$vars[buttonSave]=$this->inputButton('edit_save','save',lang('Save %1', $this->bo->html_encode($this->filename, 1)));
+				$vars[buttonDone]=$this->inputButton('edit_save_done','ok',lang('Save %1, and go back to file listing ', $this->bo->html_encode($this->filename, 1)));
+				$vars[buttonCancel]=$this->inputButton('edit_cancel','cancel',lang('Cancel editing %1 without saving', $this->bo->html_encode($this->filename, 1)));
+
+				if ($mime_type == 'text/html'){
+					$vars[fck_edit] = '<script type="text/javascript" src="filemanager/tp/ckeditor/ckeditor.js"></script>
+						<textarea cols="80" id="edit_file_content" name="edit_file_content" rows="10">'.$content.'</textarea>
+						<script type="text/javascript"> CKEDITOR.replace( \'edit_file_content\',{
+removePlugins : \'elementspath\',
+skin : \'office2003\',
+toolbar : [["Source","Preview","-","Cut","Copy","Paste","-","Print",
+"Undo","Redo","-","Find","Replace","-","SelectAll" ],
+["Table","HorizontalRule","Smiley","SpecialChar","PageBreak","-","Bold",
+"Italic","Underline","Strike","-","Subscript","Superscript",
+"NumberedList","BulletedList","-","Outdent","Indent","Blockquote",
+"JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock",
+"Link", "TextColor","BGColor","Maximize"],
+["Styles","Format","Font","FontSize"]]
+				});</script>';
+
+				}
+
+
+				$this->t->set_var($vars);
+				$this->t->parse('rows','row');
+				$this->t->pparse('out','row');
+
+			}
+
+		}
+
+		function history()
+		{
+			if($this->file) // FIXME this-file is never defined
+			{
+				$journal_array = $this->bo->vfs->get_journal(array(
+					'string'	=> $this->file,//FIXME
+					'relatives'	=> array(RELATIVE_ALL)
+				));
+
+				if(is_array($journal_array))
+				{
+					$this->html_table_begin();
+					$this->html_table_row_begin();
+					$this->html_table_col_begin();
+					echo lang('Date');
+					$this->html_table_col_end();
+					$this->html_table_col_begin();
+					echo lang('Version');
+					$this->html_table_col_end();
+					$this->html_table_col_begin();
+					echo lang('Who');
+					$this->html_table_col_end();
+					$this->html_table_col_begin();
+					echo lang('Operation');
+					$this->html_table_col_end();
+					$this->html_table_row_end();
+
+					while(list($num, $journal_entry) = each($journal_array))
+					{
+						$this->html_table_row_begin();
+						$this->html_table_col_begin();
+						$this->bo->html_text($journal_entry['created'] . '&nbsp;&nbsp;&nbsp;');
+						$this->html_table_col_end();
+						$this->html_table_col_begin();
+						$this->bo->html_text($journal_entry['version'] . '&nbsp;&nbsp;&nbsp;' );
+						$this->html_table_col_end();
+						$this->html_table_col_begin();
+						$this->bo->html_text($GLOBALS['phpgw']->accounts->id2name($journal_entry['owner_id']) . '&nbsp;&nbsp;&nbsp;');
+						$this->html_table_col_end();
+						$this->html_table_col_begin();
+						$this->bo->html_text($journal_entry['comment']);
+						$this->html_table_col_end();
+					}
+
+					$this->html_table_end();
+					$GLOBALS['phpgw']->common->phpgw_footer();
+					$GLOBALS['phpgw']->common->phpgw_exit();
+				}
+				else
+				{
+					echo lang('No version history for this file/directory');
+				}
+			}
+		}
+		function view()
+		{
+			if (!$this->bo->vfs->acl_check(array(
+				'string'        => $this->path,
+				'relatives'     => array(RELATIVE_NONE),
+				'operation'     => PHPGW_ACL_READ
+			)))
+			{
+				$this->messages[] = lang("You have no permission to access this file");
+				header('Location:'.$this->encode_href('inc/index.php?menuaction=filemanager.uifilemanager.index','&path='.base64_encode($this->bo->homedir)));
+
+				return;
+			}
+			if($this->file) //FIXME
+			{
+				$ls_array = $this->bo->vfs->ls(array(
+					'string'	=> $this->path.'/'.$this->file,//FIXME
+					'relatives'	=> array(RELATIVE_NONE),
+					'checksubdirs'	=> False,
+					'nofiles'	=> True
+				));
+				if($ls_array[0]['mime_type'])
+				{
+					$mime_type = $ls_array[0]['mime_type'];
+				}
+				elseif($this->prefs['viewtextplain'])
+				{
+					$mime_type = 'text/plain';
+				}
+				$viewable = array('','text/plain','text/csv','text/html',
+					'text/text','image/jpeg','image/png','image/gif',
+					'audio/mpeg','video/mpeg');
+
+				if(in_array($mime_type,$viewable)) 
+				{
+					/*Note: if you put application/octet-stream you force download */
+					header('Content-type: ' . $mime_type);
+					header('Content-disposition: filename="' . addslashes($this->file) . '"');
+					Header("Pragma: public");
+				}
+				else
+				{
+					$GLOBALS['phpgw']->browser->content_header($this->file,$mime_type,$ls_array[0]['size']);
+				}
+				if ($ls_array[0]['size'] < 10240)
+				{
+					echo $this->bo->vfs->read(array(
+						'string'    => $this->path.'/'.$this->file,//FIXME
+						'relatives'    => array(RELATIVE_NONE)
+					));
+				}
+				else
+				{
+					$this->bo->vfs->print_content(array(
+						'string' => $this->path.'/'.$this->file,
+						'relatives' => array(RELATIVE_NONE)
+					)
+				);
+				}
+				$GLOBALS['phpgw']->common->phpgw_exit();
+			}
+		}
+
+		function export(){
+			if($this->file)
+			{
+				$ls_array = $this->bo->vfs->ls(array(
+					'string'        => $this->path.'/'.$this->file,
+					'relatives'     => array(RELATIVE_NONE),
+					'checksubdirs'  => False,
+					'nofiles'       => True
+				));
+				/*$timestamp = $this->vfs_functions->dateString2timeStamp($ls_array[0]['modified']);
+				if (time() - $timestamp < 60 && $ls_array[0]['modifiedby_id'] != $GLOBALS['phpgw_info']['user']['account_id']);
+				{
+					// recently than last minute: someone is editing
+				}*/
+				$mime_type = $ls_array[0]['mime_type'];
+				$formats = array('text/html');
+				if(!in_array($mime_type,$formats)){
+					echo lang('Impossible to export this file');
+					return False;
+				}
+				$content = $this->bo->vfs->read(array('string' => $this->path.'/'.$this->file,
+					       'relatives'     => array(RELATIVE_NONE)
+				       ));
+
+				include_once('filemanager/tp/dompdf/dompdf_config.inc.php');
+				$dompdf = new DOMPDF();
+				$dompdf->load_html($content);
+				$dompdf->set_paper($this->prefs['pdf_paper_type'], $this->prefs['pdf_type']);
+				/* Would be nice to implement 'Title','Subject','Author','Creator','CreationDate'*/
+				$dompdf->render();
+				$dompdf->stream(strtok($this->file,'.').".pdf");
+				$GLOBALS['phpgw']->common->phpgw_exit();
+			}
+		}
+
+		//give back an array with all directories except current and dirs that are not accessable
+		function all_other_directories()
+		{
+			# First we get the directories in their home directory
+			$dirs = array();
+			$dirs[] = array('directory' => $this->bo->fakebase, 'name' => $this->bo->userinfo['account_lid']);
+
+			$tmp_arr=array(
+				'string'	=> $this->bo->homedir,
+				'relatives'	=> array(RELATIVE_NONE),
+				'checksubdirs'	=> True,
+				'mime_type'	=> 'Directory'
+			);
+
+			$ls_array = $this->bo->vfs->ls($tmp_arr);
+
+			while(list($num, $dir) = each($ls_array))
+			{
+				$dirs[] = $dir;
+			}
+
+
+			# Then we get the directories in their readable groups' home directories
+			reset($this->readable_groups);
+			while(list($num, $group_array) = each($this->readable_groups))
+			{
+				// Don't list directories for groups that don't have access
+				if(	$GLOBALS['phpgw']->accounts->get_type($group_array['account_id']) == 'g' &&
+					!$this->groups_applications[$group_array['account_name']][$this->bo->appname]['enabled']
+				)
+				{
+					continue;
+				}
+
+				$dirs[] = array('directory' => $this->bo->fakebase, 'name' => $group_array['account_name']);
+
+				$tmp_arr=array(
+					'string'	=> $this->bo->fakebase.'/'.$group_array['account_name'],
+					'relatives'	=> array(RELATIVE_NONE),
+					'checksubdirs'	=> True,
+					'mime_type'	=> 'Directory'
+				);
+
+				$ls_array = $this->bo->vfs->ls($tmp_arr);
+				while(list($num, $dir) = each($ls_array))
+				{
+					$dirs[] = $dir;
+				}
+			}
+			reset($dirs);
+			while(list($num, $dir) = each($dirs))
+			{
+				if(!$dir['directory'])
+				{
+					continue;
+				}
+
+				# So we don't display //
+				if($dir['directory'] != '/')
+				{
+					$dir['directory'] .= '/';
+				}
+				$return[] = $dir;
+			}
+			return $return;
+		}
+
+		function update_groups()
+		{
+			# Get their readable groups to be used throughout the script
+			$acl = array();
+			$groups = array();
+			$acl = $GLOBALS['phpgw']->acl->get_ids_for_location($GLOBALS['phpgw_info']['user']['account_id'],1,'filemanager');
+			if (is_array($acl))
+				foreach($acl as $key => $value){
+					$info = array();
+					$info = $GLOBALS['phpgw']->accounts->get_account_data($value);
+					$groups[$key]['account_id'] = $value;
+					$groups[$key]['account_lid'] = $info[$value]['lid'];
+					$groups[$key]['account_name'] = $info[$value]['firstname'];
+					$groups[$key]['account_lastname'] = $info[$value]['lastname'];
+					$groups[$key]['account_fullname'] = $info[$value]['fullname'];
+				}
+			$this->readable_groups = array();
+			while(list($num, $account) = each($groups))
+			{
+				if($this->bo->vfs->acl_check(array('owner_id' => $account['account_id'],'operation' => PHPGW_ACL_READ)))
+				{
+					$this->readable_groups[$account['account_lid']] = Array('account_id' => $account['account_id'], 'account_name' => $account['account_lid']);
+				}
+			}
+
+		}
+		function search()
+		{
+			/* TODO this is a primitive search */
+			$this->update_groups();
+       			$this->dirs = $this->all_other_directories();
+			$path = $this->path;
+			if (strlen($this->text) > 3)
+			{                                                                
+				$this->text = strtoupper($this->text);
+				foreach($this->dirs as $elem)
+				{
+					$this->path = $elem['directory'].$elem['name'];
+					reset($this->files_array);
+		                        $this->readFilesInfo();
+					for($i = 0; $i < count($this->files_array); $i++)
+					{
+						$comment = strtoupper($this->files_array[$i]['comment']);
+						$name = strtoupper($this->files_array[$i]['name']);
+						if (strstr($name,$this->text) ||
+						strstr($comment,$this->text) ){
+							$return[$this->files_array[$i]['directory'].$name] = $this->files_array[$i];
+							$return[$this->files_array[$i]['directory'].$name]['icon'] = $this->mime_icon($this->files_array[$i]['mime_type']);
+						}
+					}
+					if (count($return) > 50)
+					{
+						$return = array_slice($return,0,50);
+						break;
+					}
+				}	
+			}
+			echo serialize(array_values($return));
+		}
+
+		/* seek icon for mimetype else return an unknown icon */
+		function mime_icon($mime_type, $size=16)
+		{
+			if(!$mime_type) $mime_type='unknown';
+
+			$mime_type=str_replace	('/','_',$mime_type);
+
+			$img=$GLOBALS['phpgw']->common->image('filemanager','mime'.$size.'_'.strtolower($mime_type));
+			if(!$img) $img=$GLOBALS['phpgw']->common->image('filemanager','mime'.$size.'_unknown');
+
+			return $img;
+		}
+
+		function toolButton($link,$img='',$description='')
+		{
+			$image=$GLOBALS['phpgw']->common->image('filemanager','button_'.strtolower($img));
+
+			if($img)
+			{
+				return '<span name="'.$link.'" class="toolButton" onclick="toolbar.control(\''.$link.'\');" title="'.$description.'"><img src="'.$image.'" alt="'.$description.'"/></a><small>'.$description.'</small></span>';
+			}
+		}
+
+		function inputButton($name,$img='',$description='')
+		{
+			$image=$GLOBALS['phpgw']->common->image('filemanager','button_'.strtolower($img));
+
+			if($img)
+			{
+				return '<td class="" align="center" valign="middle" height="28" width="70">
+				<input title="'.$description.'" name="'.$name.'" type="image" alt="'.$name.'" src="'.$image.'" value="clicked" /><br><small>'.$description.'</small>
+				</td>';
+			}
+		}
+
+
+		function html_form_input($type = NULL, $name = NULL, $value = NULL, $maxlength = NULL, $size = NULL, $checked = NULL, $string = '', $return = 1)
+		{
+			$text = ' ';
+			if($type != NULL && $type)
+			{
+				if($type == 'checkbox')
+				{
+					$value = $this->bo->string_encode($value, 1);
+				}
+				$text .= 'type="'.$type.'" ';
+			}
+			if($name != NULL && $name)
+			{
+				$text .= 'name="'.$name.'" ';
+			}
+			if($value != NULL && $value)
+			{
+				$text .= 'value="'.$value.'" ';
+			}
+			if(is_int($maxlength) && $maxlength >= 0)
+			{
+				$text .= 'maxlength="'.$maxlength.'" ';
+			}
+			if(is_int($size) && $size >= 0)
+			{
+				$text .= 'size="'.$size.'" ';
+			}
+			if($checked != NULL && $checked)
+			{
+				$text .= 'checked ';
+			}
+
+			return '<input'.$text.$string.'>';
+		}
+
+		function html_form_option($value = NULL, $displayed = NULL, $selected = NULL, $return = 0)
+		{
+			$text = ' ';
+			if($value != NULL && $value)
+			{
+				$text .= ' value="'.$value.'" ';
+			}
+			if($selected != NULL && $selected)
+			{
+				$text .= ' selected';
+			}
+			return  '<option'.$text.'>'.$displayed.'</option>';
+		}
+
+		function encode_href($href = NULL, $args = NULL , $extra_args)
+		{
+			$href = $this->bo->string_encode($href, 1);
+			$all_args = $args.'&'.$this->bo->string_encode($extra_args, 1);
+
+			$address = $GLOBALS['phpgw']->link($href, $all_args);
+
+			return $address;
+		}
+
+		function html_link($href = NULL, $args = NULL , $extra_args, $text = NULL, $return = 1, $encode = 1, $linkonly = 0, $target = NULL)
+		{
+			//	unset($encode);
+			if($encode)
+			{
+				$href = $this->bo->string_encode($href, 1);
+				$all_args = $args.'&'.$this->bo->string_encode($extra_args, 1);
+			}
+			else
+			{
+				//				$href = $this->bo->string_encode($href, 1);
+				$all_args = $args.'&'.$extra_args;
+			}
+			###
+			# This decodes / back to normal
+			###
+			//			$all_args = preg_replace("/%2F/", "/", $all_args);
+			//			$href = preg_replace("/%2F/", "/", $href);
+
+			/* Auto-detect and don't disturb absolute links */
+			if(!preg_match("|^http(.{0,1})://|", $href))
+			{
+				//Only add an extra / if there isn't already one there
+
+				// die(SEP);
+				if(!($href[0] == SEP))
+				{
+					$href = SEP . $href;
+				}
+
+				/* $phpgw->link requires that the extra vars be passed separately */
+				//				$link_parts = explode("?", $href);
+				$address = $GLOBALS['phpgw']->link($href, $all_args);
+				//				$address = $GLOBALS['phpgw']->link($href);
+			}
+			else
+			{
+				$address = $href;
+			}
+
+			/* If $linkonly is set, don't add any HTML */
+			if($linkonly)
+			{
+				$rstring = $address;
+			}
+			else
+			{
+				if($target)
+				{
+					$target = 'target='.$target;
+				}
+
+				$text = trim($text);
+				$rstring = '<a href="'.$address.'" '.$target.'>'.$text.'</a>';
+			}
+
+			return($this->bo->eor($rstring, $return));
+		}
+
+		function html_table_begin($width = NULL, $border = NULL, $cellspacing = NULL, $cellpadding = NULL, $rules = NULL, $string = '', $return = 0)
+		{
+			if($width != NULL && $width)
+			{
+				$width = "width=$width";
+			}
+			if(is_int($border) && $border >= 0)
+			{
+				$border = "border=$border";
+			}
+			if(is_int($cellspacing) && $cellspacing >= 0)
+			{
+				$cellspacing = "cellspacing=$cellspacing";
+			}
+			if(is_int($cellpadding) && $cellpadding >= 0)
+			{
+				$cellpadding = "cellpadding=$cellpadding";
+			}
+			if($rules != NULL && $rules)
+			{
+				$rules = "rules=$rules";
+			}
+
+			$rstring = "<table $width $border $cellspacing $cellpadding $rules $string>";
+			return($this->bo->eor($rstring, $return));
+		}
+
+		function html_table_end($return = 0)
+		{
+			$rstring = "</table>";
+			return($this->bo->eor($rstring, $return));
+		}
+
+		function html_table_row_begin($align = NULL, $halign = NULL, $valign = NULL, $bgcolor = NULL, $string = '', $return = 0)
+		{
+			if($align != NULL && $align)
+			{
+				$align = "align=$align";
+			}
+			if($halign != NULL && $halign)
+			{
+				$halign = "halign=$halign";
+			}
+			if($valign != NULL && $valign)
+			{
+				$valign = "valign=$valign";
+			}
+			if($bgcolor != NULL && $bgcolor)
+			{
+				$bgcolor = "bgcolor=$bgcolor";
+			}
+			$rstring = "<tr $align $halign $valign $bgcolor $string>";
+			return($this->bo->eor($rstring, $return));
+		}
+
+		function html_table_row_end($return = 0)
+		{
+			$rstring = "</tr>";
+			return($this->bo->eor($rstring, $return));
+		}
+
+		function html_table_col_begin($align = NULL, $halign = NULL, $valign = NULL, $rowspan = NULL, $colspan = NULL, $string = '', $return = 0)
+		{
+			if($align != NULL && $align)
+			{
+				$align = "align=$align";
+			}
+			if($halign != NULL && $halign)
+			{
+				$halign = "halign=$halign";
+			}
+			if($valign != NULL && $valign)
+			{
+				$valign = "valign=$valign";
+			}
+			if(is_int($rowspan) && $rowspan >= 0)
+			{
+				$rowspan = "rowspan=$rowspan";
+			}
+			if(is_int($colspan) && $colspan >= 0)
+			{
+				$colspan = "colspan=$colspan";
+			}
+
+			$rstring = "<td $align $halign $valign $rowspan $colspan $string>";
+			return($this->bo->eor($rstring, $return));
+		}
+
+		function html_table_col_end($return = 0)
+		{
+			$rstring = "</td>";
+			return($this->bo->eor($rstring, $return));
+		}
+	}
Index: /trunk/filemanager/inc/upload.php
===================================================================
--- /trunk/filemanager/inc/upload.php	(revision 2000)
+++ /trunk/filemanager/inc/upload.php	(revision 2000)
@@ -0,0 +1,190 @@
+<?php
+require_once '../../header.session.inc.php';
+/* This single file is used to increase upload_max_filesize and post_max_size using .htaccess*/
+if(!isset($GLOBALS['phpgw_info'])){
+	$GLOBALS['phpgw_info']['flags'] = array(
+		'currentapp' => 'filemanager',
+		'nonavbar'   => true,
+		'noheader'   => true
+	);
+}
+require_once '../../header.inc.php';
+
+$bo = CreateObject('filemanager.bofilemanager');
+
+$c = CreateObject('phpgwapi.config','filemanager');
+$c->read_repository();
+$current_config = $c->config_data;
+$upload_max_size = $current_config['filemanager_Max_file_size'];
+$path = $_POST['path'];
+$show_upload_boxes = count($_FILES['upload_file']['name'])-1;
+
+function create_summaryImage($file){
+	list($width, $height,$image_type) = getimagesize($file);
+	switch($image_type)
+	{
+	case 1:
+		$image_big = imagecreatefromgif($file);
+		break;
+	case 2:
+		$image_big = imagecreatefromjpeg($file);
+		break;
+	case 3:
+		$image_big = imagecreatefrompng($file);
+		break;
+	default:
+		return false;
+	}
+	$max_resolution = 48;
+	if ($width > $height){
+		$new_width = $max_resolution;
+		$new_height = $height*($new_width/$width);
+	}
+	else {
+		$new_height = $max_resolution;
+		$new_width = $width*($new_height/$height);
+	}
+	$image_new = imagecreatetruecolor($new_width, $new_height);
+	imagecopyresampled($image_new, $image_big, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
+	ob_start();
+	imagepng($image_new);
+	$content = ob_get_clean();
+	return $content;
+}
+
+/* Its much faster test all files only one time */
+if(strlen($current_config['filemanager_antivirus_command']) > 0)
+{
+	$command = "nice -n19 ".$current_config['filemanager_antivirus_command'];
+	for($i = 0; $i != $show_upload_boxes; $i++)
+		$command .= " ".$_FILES['upload_file']['tmp_name'][$i];
+	$return=0;
+	exec("bash -c ".escapeshellcmd(escapeshellarg($command)),$output,$return);
+	if ($return == 1)
+	{
+		$_SESSION['response'] = serialize(array(0 => lang('Error:').lang('One of the files sent was considered infected')));
+		return;
+	}
+}
+
+if($path != '/')
+	for($i = 0; $i != $show_upload_boxes; $i++)
+	{
+		if($badchar = $bo->bad_chars($_FILES['upload_file']['name'][$i], True, True))
+		{
+			$return[] = lang('Error:').lang('File names cannot contain "%1"', $badchar);
+			continue;
+		}
+
+		# Check to see if the file exists in the database, and get its info at the same time
+		$ls_array = $bo->vfs->ls(array(
+			'string'=> $path . '/' . $_FILES['upload_file']['name'][$i],
+			'relatives'	=> array(RELATIVE_NONE),
+			'checksubdirs'	=> False,
+			'nofiles'	=> True
+		));
+
+		$fileinfo = $ls_array[0];
+
+		if($fileinfo['name'])
+		{
+			if($fileinfo['mime_type'] == 'Directory')
+			{
+				$return[] = lang('Error:').lang('Cannot replace %1 because it is a directory', $fileinfo['name']);
+				continue;
+			}
+		}
+
+		if ($_FILES['upload_file']['size'][$i] > ($upload_max_size*1024*1024))
+		{
+			$return[] = lang('The size of %1 has exceded the limit: %2', $_FILES['upload_file']['name'][$i], $upload_max_size);
+			continue;
+		}
+		elseif($_FILES['upload_file']['size'][$i] > 0)
+		{
+			if($fileinfo['name'] && $fileinfo['deleteable'] != 'N')
+			{
+				$_FILES['upload_file']['name'][$i] = date('Ymd-H:i')."-".$_FILES['upload_file']['name'][$i];
+				$tmp_arr=array(
+					'from'	=> $_FILES['upload_file']['tmp_name'][$i],
+					'to'	=> $_FILES['upload_file']['name'][$i],
+					'relatives'	=> array(RELATIVE_NONE|VFS_REAL, RELATIVE_ALL)
+
+				);
+				$bo->vfs->cp($tmp_arr);
+				$tmp_arr=array(
+					'string'=> $_FILES['upload_file']['name'][$i],
+					'relatives'	=> array(RELATIVE_ALL),
+					'attributes'	=> array(
+						'owner_id' => $bo->userinfo['username'],
+						'modifiedby_id' => $bo->userinfo['username'],
+						'size' => $_FILES['upload_file']['size'][$i],
+						'mime_type' => $_FILES['upload_file']['type'][$i],
+						'deleteable' => 'Y',
+						'comment' => stripslashes($_POST['upload_comment'][$i])
+					)
+				);
+				$bo->vfs->set_attributes($tmp_arr);
+
+				$return[] = lang("There is a file %1, that was not replaced",$_FILES['upload_file']['name'][$i]);
+			}
+			else
+			{
+				if ($bo->vfs->cp(array(
+					'from'=> $_FILES['upload_file']['tmp_name'][$i],
+					'to'=> $_FILES['upload_file']['name'][$i],
+					'relatives'	=> array(RELATIVE_NONE|VFS_REAL, RELATIVE_ALL)
+				)))
+				{
+					$bo->vfs->set_attributes(array(
+						'string'=> $_FILES['upload_file']['name'][$i],
+						'relatives'	=> array(RELATIVE_ALL),
+						'attributes'=> array(
+							'mime_type' => $_FILES['upload_file']['type'][$i],
+							'comment' => stripslashes($_POST['upload_comment'][$i])
+						)
+					));
+				}
+				else{
+					$return[] = lang('Error:').lang('It was not possible to send your file');
+				}
+
+			}
+		}
+		elseif($_FILES['upload_file']['name'][$i])
+		{
+			$bo->vfs->touch(array(
+				'string'=> $_FILES['upload_file']['name'][$i],
+				'relatives'	=> array(RELATIVE_ALL)
+			));
+
+			$bo->vfs->set_attributes(array(
+				'string'=> $_FILES['upload_file']['name'][$i],
+				'relatives'	=> array(RELATIVE_ALL),
+				'attributes'=> array(
+					'mime_type' => $_FILES['upload_file']['type'][$i],
+					'comment' => stripslashes($_POST['upload_comment'][$i])
+				)
+			));
+
+		}
+
+		if (!(strpos(strtoupper($_FILES['upload_file']['type'][$i]),'IMAGE') === FALSE))
+		{
+			$content = create_summaryImage($_FILES['upload_file']['tmp_name'][$i]);
+			if ($content){
+				$bo->vfs->set_summary(array(
+					'string'=> $_FILES['upload_file']['name'][$i],
+					'relatives' => array(RELATIVE_ALL),
+					'summary'=> $content
+				));
+			}
+
+		}
+	}
+if (count($return) > 0){
+		$_SESSION['response'] = serialize($return);
+}
+	else
+		 $_SESSION['response'] = serialize( array( 0 => 'Ok' ) );
+?>
Index: /trunk/filemanager/inc/.htaccess
===================================================================
--- /trunk/filemanager/inc/.htaccess	(revision 2000)
+++ /trunk/filemanager/inc/.htaccess	(revision 2000)
@@ -0,0 +1,2 @@
+php_value post_max_size 1300M
+php_value upload_max_filesize 1300M
Index: /trunk/filemanager/inc/class.bofilemanager.inc.php
===================================================================
--- /trunk/filemanager/inc/class.bofilemanager.inc.php	(revision 2000)
+++ /trunk/filemanager/inc/class.bofilemanager.inc.php	(revision 2000)
@@ -0,0 +1,257 @@
+<?php
+
+	class bofilemanager
+	{
+
+		// used
+
+		var $so;
+		var $vfs;
+
+		var $rootdir;
+		var $fakebase;
+		var $appname;
+		var $filesdir;
+		var $hostname;
+		var $userinfo = Array();
+		var $homedir;
+		var $sep;
+		var $file_attributes;
+
+		var $matches;//FIXME matches not defined
+
+		var $debug = False;
+
+		function bofilemanager()
+		{
+			$this->so = CreateObject('filemanager.sofilemanager');
+			$this->so->db_init();
+
+			$this->vfs = CreateObject('phpgwapi.vfs');
+
+			error_reporting (4);
+
+			### Start Configuration Options ###
+			### These are automatically set in phpGW - do not edit ###
+
+			$this->sep = SEP;
+			$this->rootdir = $this->vfs->basedir;
+			$this->fakebase = $this->vfs->fakebase;
+			$this->appname = $GLOBALS['phpgw_info']['flags']['currentapp'];
+		
+			if (stristr ($this->rootdir, PHPGW_SERVER_ROOT))
+			{
+				$this->filesdir = substr ($this->rootdir, strlen (PHPGW_SERVER_ROOT));
+			}
+			else
+			{
+				unset ($this->filesdir);
+			}
+
+			$this->hostname = $GLOBALS['phpgw_info']['server']['webserver_url'] . $this->filesdir;
+
+//			die($this->hostname); 
+			###
+			# Note that $userinfo["username"] is actually the id number, not the login name
+			###
+
+			$this->userinfo['username'] = $GLOBALS['phpgw_info']['user']['account_id'];
+			$this->userinfo['account_lid'] = $GLOBALS['phpgw']->accounts->id2name ($this->userinfo['username']);
+			$this->userinfo['hdspace'] = 10000000000; // to settings
+			$this->homedir = $this->fakebase.'/'.$this->userinfo['account_lid'];
+
+			### End Configuration Options ###
+
+			if (!defined ('NULL'))
+			{
+				define ('NULL', '');
+			}
+
+			###
+			# Define the list of file attributes.  Format is "internal_name" => "Displayed name"
+			# This is used both by internally and externally for things like preferences
+			###
+
+			$this->file_attributes = Array(
+				'name' => lang('File Name'),
+				'mime_type' => lang('MIME Type'),
+				'size' => lang('Size'),
+				'created' => lang('Created'),
+				'modified' => lang('Modified'),
+				'owner' => lang('Owner'),
+				'createdby_id' => lang('Created by'),
+				'modifiedby_id' => lang('Created by'),
+				'modifiedby_id' => lang('Modified by'),
+				'app' => lang('Application'),
+				'comment' => lang('Comment'),
+				'version' => lang('Version')
+			);
+
+			###
+			# Calculate and display B or KB
+			# And yes, that first if is strange, 
+			# but it does do something
+			###
+
+		}
+
+
+		function borkb ($size, $enclosed = NULL, $return = 1)
+		{
+			if (!$size)
+			$size = 0;
+
+			if ($enclosed)
+			{
+				$left = '(';
+				$right = ')';
+			}
+
+			if ($size < 1024)
+			$rstring = $left . $size . 'B' . $right;
+			else if ($size < 1048576)
+				$rstring = $left . round($size/1024) . 'KB' . $right;
+			else if ($size < 1073741824)
+				$rstring = $left . round($size/1024/1024) . 'MB' . $right;
+			else
+				$rstring = $left . round($size/1024/1024/1024) . 'GB' . $right;
+
+
+			return ($this->eor ($rstring, $return));
+		}
+
+		###
+		# Check for and return the first unwanted character
+		###
+
+		function bad_chars ($string, $all = True, $return = 0)
+		{
+			if ($all)
+			{
+				if (preg_match("-([\\/<>\|\'\"\&])-", $string, $badchars))
+				$rstring = $badchars[1];
+			}
+			else
+			{
+				if (preg_match("-([\\/<>])-", $string, $badchars))
+				$rstring = $badchars[1];
+			}
+
+			return trim (($this->eor ($rstring, $return)));
+		}
+
+		###
+		# Match character in string using ord ().
+		###
+
+		function ord_match ($string, $charnum)
+		{
+			for ($i = 0; $i < strlen ($string); $i++)
+			{
+				$character = ord (substr ($string, $i, 1));
+
+				if ($character == $charnum)
+				{
+					return True;
+				}
+			}
+
+			return False;
+		}
+
+		###
+		# Decide whether to echo or return.  Used by HTML functions
+		###
+
+		function eor ($rstring, $return)
+		{
+			if ($return)
+			return ($rstring);
+			else
+			{
+				$this->html_text ($rstring . "\n");
+				return (0);
+			}
+		}
+		
+		function html_text ($string, $times = 1, $return = 0, $lang = 0)
+		{
+			if ($lang)
+			$string = lang($string);
+
+			if ($times == NULL)
+			$times = 1;
+			for ($i = 0; $i != $times; $i++)
+			{
+				if ($return)
+				$rstring .= $string;
+				else
+				echo $string;
+			}
+			if ($return)
+			return ($rstring);
+		}
+
+		###
+		# URL encode a string
+		# First check if its a query string, then if its just a URL, then just encodes it all
+		# Note: this is a hack.  It was made to work with form actions, form values, and links only,
+		# but should be able to handle any normal query string or URL
+		###
+
+		function string_encode ($string, $return = False)
+		{
+			//var_dump($string);
+			if (preg_match ("/=(.*)(&|$)/U", $string))
+			{
+				$rstring = $string;
+
+				preg_match_all ("/=(.*)(&|$)/U", $string, $matches, PREG_SET_ORDER);//FIXME matches not defined
+
+				reset ($matches);//FIXME matches not defined
+
+				while (list (,$match_array) = each ($matches))//FIXME matches not defined
+
+				{
+					$var_encoded = rawurlencode (base64_encode ($match_array[1]));
+					$rstring = str_replace ($match_array[0], '=' . $var_encoded . $match_array[2], $rstring);
+				}
+			}
+			elseif ($this->hostname != "" && ereg('^'.$this->hostname, $string))
+//			elseif (ereg ('^'.$this->hostname, $string))
+			{
+				$rstring = ereg_replace ('^'.$this->hostname.'/', '', $string);
+				$rstring = preg_replace ("/(.*)(\/|$)/Ue", "rawurlencode (base64_encode ('\\1')) . '\\2'", $rstring);
+				$rstring = $this->hostname.'/'.$rstring;
+			}
+			else
+			{
+				$rstring = rawurlencode ($string);
+
+				/* Terrible hack, decodes all /'s back to normal */  
+				$rstring = preg_replace ("/%2F/", '/', $rstring);
+			}
+
+			return ($this->eor ($rstring, $return));
+		}
+
+		function string_decode ($string, $return = False)
+		{
+			$rstring = rawurldecode ($string);
+
+			return ($this->eor ($rstring, $return));
+		}
+
+		###
+		# HTML encode a string
+		# This should be used with anything in an HTML tag that might contain < or >
+		###
+
+		function html_encode ($string, $return)
+		{
+			$rstring = htmlspecialchars ($string);
+
+			return ($this->eor ($rstring, $return));
+		}
+	}
+	?>
Index: /trunk/filemanager/inc/hook_deleteaccount.inc.php
===================================================================
--- /trunk/filemanager/inc/hook_deleteaccount.inc.php	(revision 2000)
+++ /trunk/filemanager/inc/hook_deleteaccount.inc.php	(revision 2000)
@@ -0,0 +1,28 @@
+<?php
+  /**************************************************************************\
+  * eGroupWare                                                               *
+  * http://www.egroupware.org                                                *
+  * --------------------------------------------                             *
+  *  This program is free software; you can redistribute it and/or modify it *
+  *  under the terms of the GNU General Public License as published by the   *
+  *  Free Software Foundation; either version 2 of the License, or (at your  *
+  *  option) any later version.                                              *
+  \**************************************************************************/
+	/* $Id: hook_deleteaccount.inc.php 13525 2004-01-27 18:19:23Z reinerj $ */
+	/*
+	global $phpgw;
+	global $account_id;
+	*/
+	/* NOTE: This is untested */
+	/* WIP: it should get all files owned by $account_id, not just in /home/account_id */
+	/* Should also be capable of transfering files to another user */
+
+/*
+	$phpgw->vfs->working_id = $account_id;
+	$ls_array = $phpgw->vfs->ls ($phpgw->vfs->fakebase . "/" . $account_id, array (RELATIVE_NONE));
+	while (list ($num, $entry) = each ($ls_array))
+	{
+		$phpgw->vfs->rm ($entry["dir"] . "/" . $entry["name"], array (RELATIVE_NONE));
+	}
+*/
+?>
Index: /trunk/filemanager/inc/class.sofilemanager.inc.php
===================================================================
--- /trunk/filemanager/inc/class.sofilemanager.inc.php	(revision 2000)
+++ /trunk/filemanager/inc/class.sofilemanager.inc.php	(revision 2000)
@@ -0,0 +1,47 @@
+<?php
+
+	class sofilemanager
+	{
+		var $db;
+
+		function sofilemanager()
+		{
+			$this->db = $GLOBALS['phpgw']->db;
+		}
+
+		/* Any initializations that need to be done */
+		function db_init ()
+		{
+			$this->db->Auto_Free = 0;
+		}
+
+		/* General SQL query */
+		function db_query ($query)
+		{
+
+			return $this->db->query ($query);
+		}
+
+		/* Fetch next array for $query_id */
+		function db_fetch_array ($query_id)
+		{
+
+			//	$phpgw->db->Query_ID = $query_id;
+			$this->db->next_record ();
+			return $this->db->Record;
+		}
+
+		/*
+		General wrapper for all other db calls
+		Calls in here are simply returned, so not all will work
+		*/
+		function db_call ($function, $query_id)
+		{
+
+			//	$phpgw->db->Query_ID = $query_id;
+			return $this->db->$function ();
+		}
+
+
+	}
+?>
Index: /trunk/filemanager/inc/hook_settings.inc.php
===================================================================
--- /trunk/filemanager/inc/hook_settings.inc.php	(revision 2000)
+++ /trunk/filemanager/inc/hook_settings.inc.php	(revision 2000)
@@ -0,0 +1,70 @@
+<?php
+	/**************************************************************************\
+	* eGroupWare - Filemanager Preferences                                     *
+	* http://egroupware.org                                                    *
+	* Modified by Pim Snel <pim@egroupware.org>                                *
+	* --------------------------------------------                             *
+	*  This program is free software; you can redistribute it and/or modify it *
+	*  under the terms of the GNU General Public License as published by the   *
+	*  Free Software Foundation; either version 2 of the License, or (at your  *
+	*  option)                                                                 *
+	\**************************************************************************/
+
+	//ExecMethod('filemanager.bofilemanager.check_set_default_prefs');
+
+	/*create_section('TESTING');
+
+	create_check_box('Use new experimental Filemanager?','experimental_new_code','The future filemanager, now for TESTING PURPOSES ONLY, please send bugreports');
+
+	*/
+	create_section('Display attributes');
+
+	$file_attributes = Array(
+		'name' => 'File Name',
+		'mime_type' => 'MIME Type',
+		'size' => 'Size',
+		'created' => 'Created',
+		'modified' => 'Modified',
+		'owner' => 'Owner',
+		'createdby_id' => 'Created by',
+		'modifiedby_id' => 'Created by',
+		'modifiedby_id' => 'Modified by',
+		'app' => 'Application',
+		'comment' => 'Comment',
+		'version' => 'Version'
+	);
+
+	while (list ($key, $value) = each ($file_attributes))
+	{
+		create_check_box($value,$key);
+	}
+	
+	create_section('Other settings');
+
+	$other_checkboxes = array (
+		"viewinnewwin" => "View documents in new window", 
+		"viewonserver" => "View documents on server (if available)", 
+		"viewtextplain" => "Unknown MIME-type defaults to text/plain when viewing", 
+		"dotdot" => "Show ..", 
+		"dotfiles" => "Show .files", 
+	);
+
+	while (list ($key, $value) = each ($other_checkboxes))
+	{
+		create_check_box($value,$key);
+	}
+
+	$type=array(
+		"portrait"=>lang("portrait"),
+		"landscape"=>lang("landscape")
+	);
+	create_select_box('Disposition of pdf output','pdf_type',$type);
+
+	$paper=array(
+		"letter"=>lang("letter"),
+		"a4"=>"A4",
+		"US Legal"=>"US Legal"
+	);
+	create_select_box('Type of pdf paper','pdf_paper_type',$paper);
+
+
Index: /trunk/filemanager/js/main.js
===================================================================
--- /trunk/filemanager/js/main.js	(revision 2000)
+++ /trunk/filemanager/js/main.js	(revision 2000)
@@ -0,0 +1,2 @@
+
+
Index: /trunk/filemanager/js/config.js
===================================================================
--- /trunk/filemanager/js/config.js	(revision 2000)
+++ /trunk/filemanager/js/config.js	(revision 2000)
@@ -0,0 +1,95 @@
+
+function loadq_handler(data){
+	document.getElementById('quota_size').value = data;
+}
+function load_quota(el){
+	cExecute('index.php?menuaction=filemanager.uiconfig.load_quota&name='+base64_encode(el.value),loadq_handler);
+}
+
+function set_owner(){
+	var dirName = document.getElementById('search1').value;
+	var ownerName = document.getElementById('search2').value;
+	cExecute('index.php?menuaction=filemanager.uiconfig.set_owner&dir='+base64_encode(dirName)+'&owner='+ownerName,alert);
+}
+
+function set_permission(){
+	var dirName = document.getElementById('search1').value;
+	var ownerName = document.getElementById('search2').value;
+	var perms=new Array("egw_private","egw_delete","egw_edit","egw_add","egw_read");
+	permission = 0;
+	for (val in perms)
+	{
+		permission = permission*2;
+		if(document.getElementById(perms[val]).checked)
+			permission += 1;
+	}
+
+	cExecute('index.php?menuaction=filemanager.uiconfig.set_permission&dir='+base64_encode(dirName)+'&perms='+permission+'&owner='+ownerName,alert);
+}
+function save_quota(){
+	var dirName = document.getElementById('search1').value;
+	var Qsize = document.getElementById('quota_size').value;
+	cExecute('index.php?menuaction=filemanager.uiconfig.update_quota&dir='+base64_encode(dirName)+'&val='+Qsize,alert);
+}
+function dir_handler(data){
+	document.getElementById('search1').innerHTML = data;
+}
+
+function user_handler(data){
+	document.getElementById('search2').innerHTML = data;
+}
+var timeO;
+function search_dir(el){
+	if (el.value.length < 4){
+		document.getElementById('span_searching1').innerHTML = get_lang('Type at least 4 chars');
+	}
+	else
+	{
+		document.getElementById('span_searching1').innerHTML = '';
+		if (timeO)
+			clearTimeout(timeO);
+		timeO = setTimeout('cExecute(\'index.php?menuaction=filemanager.uiconfig.search_dir&name='+el.value+'\',dir_handler)',700);
+	}
+}
+function search_user(el){
+	if (el.value.length < 4){
+		document.getElementById('span_searching1').innerHTML = get_lang('Type at least 4 chars');
+	}
+	else
+	{
+		document.getElementById('span_searching1').innerHTML = '';
+		if (timeO)
+			clearTimeout(timeO);
+		timeO = setTimeout('cExecute(\'index.php?menuaction=filemanager.uiconfig.search_user&name='+el.value+'\',user_handler)',700);
+	}
+}
+function delete_folder(){
+	var dirName = document.getElementById('search1').value;
+	var okToDel = confirm(get_lang('Are you sure you want to delete')+' '+dirName+'?');
+	if (okToDel){
+		var randNum = parseInt((Math.random()*100));
+		var okToDel = prompt(get_lang('Please type the text "%1" to delete',randNum)+': '+dirName);
+		if (okToDel == randNum)
+			cExecute('index.php?menuaction=filemanager.uiconfig.removeFolder&dir='+base64_encode(dirName),alert);
+	}
+}
+
+function rename_folder(){
+	var dirName = document.getElementById('search1').value;
+	var toName = prompt(get_lang('Enter the name you want to move %1 to:',dirName),dirName);
+	if (toName.length > 1){
+			cExecute('index.php?menuaction=filemanager.uiconfig.renameFolder&dir='+base64_encode(dirName)+'&to='+base64_encode(toName),alert);
+	}
+}
+
+function create_folder(){
+	var toName = prompt(get_lang('Enter the name of folder you want to create:'),'/home/');
+	if (toName.length > 1){
+		cExecute('index.php?menuaction=filemanager.uiconfig.createFolder&name='+base64_encode(toName),alert);
+	}
+}
+
+function reconstruct_folder(){
+	var dirName = document.getElementById('search1').value;
+	cExecute('index.php?menuaction=filemanager.uiconfig.reconstructFolder&dir='+base64_encode(dirName),alert);
+}
Index: /trunk/filemanager/js/drag_area.js
===================================================================
--- /trunk/filemanager/js/drag_area.js	(revision 2000)
+++ /trunk/filemanager/js/drag_area.js	(revision 2000)
@@ -0,0 +1,70 @@
+var agt=navigator.userAgent.toLowerCase();
+var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
+
+function DragArea(){
+	this.pressed = 0;
+	this.resizing = 0;
+	this.dragEl;
+	this.endEvent;
+	this.operation;
+}
+
+document.onmousemove = function(event) {
+	getPointer(event);
+	if (_dragArea.operation == 'drag')
+		_dragArea.dragObj(event);
+	else
+		_dragArea.moveWindow(event);
+}
+document.onmousedown = function(event) {_dragArea.pressed = 1; };
+document.onmouseup = function(event) { _dragArea.pressed = 0 };
+
+counter = 0;
+DragArea.prototype.moveWindow = function(e) {
+	if (this.pressed){
+		var elem =  document.getElementById('dwindow'); // FIXME do not use getElement here
+		if (elem != null){
+		        var _event  = is_ie ? window.event : e;
+			elem.style.left = _event.clientX - 80 + "px";
+			elem.style.top = _event.clientY + "px";
+		}
+	}
+}
+
+DragArea.prototype.dragObj = function(e){
+        var _event  = is_ie ? window.event : e;
+	var _target = is_ie ? _event.srcElement : _event.target;
+
+	if (this.pressed)
+	{
+		var sign = document.getElementById('dragSign');
+		if (sign == null)
+		{
+			check(this.dragEl);
+			sign = document.createElement('SPAN');
+			sign.className = 'dragSign';
+			sign.id = 'dragSign';
+			document.body.appendChild(sign);
+		}
+		sign.innerHTML = get_lang("Drag and drop to move");
+		sign.style.left = (_event.clientX + 2) + "px";
+		sign.style.top = (_event.clientY + 2) + "px";
+		sign.style.position = 'absolute';
+	}
+	else{
+		this.operation = "";
+		var sign = document.getElementById('dragSign');
+		if (sign == null)
+			return;
+		sign.parentNode.removeChild(sign);
+		if(_target.tagName == 'SPAN'){
+			var filesUrl = toolbar.getCheckedFiles();
+			var path = _target.id.replace(/main$/g,'').substr(1);
+			if (filesUrl.length > 1 && path.length > 1)
+				move_to(path,filesUrl);
+		}
+	}
+}
+
+
+var _dragArea = new DragArea();
Index: /trunk/filemanager/js/draw_api.js
===================================================================
--- /trunk/filemanager/js/draw_api.js	(revision 2000)
+++ /trunk/filemanager/js/draw_api.js	(revision 2000)
@@ -0,0 +1,775 @@
+
+function getPointer(e) {
+	if (is_ie) {
+		DocX = event.clientX + document.body.scrollLeft;
+		DocY = event.clientY + document.body.scrollTop;
+	} else {
+		DocX = e.pageX;
+		DocY = e.pageY;
+	}
+}
+
+function loadHistory(filename){
+	cExecute('./index.php?menuaction=filemanager.uifilemanager.history&file='+base64_encode(filename)+"&path="+base64_encode(currentPath),draw_window);
+}
+
+function loadPermissions(data){
+	var permission = parseInt(data);
+	var ACL_READ = 1;
+	var ACL_ADD = 2;
+	var ACL_EDIT = 4;
+	var ACL_DELETE = 8;
+	var ACL_PRIVATE = 16;
+
+	permissions['read']=(permission & ACL_READ);
+	permissions['add']=(permission & ACL_ADD);
+	permissions['edit']=(permission & ACL_EDIT);
+	permissions['delete']=(permission & ACL_DELETE);
+	permissions['private']=(permission & ACL_PRIVATE);
+	toolbar.load();
+}
+function close_window(){
+	var menu =  document.getElementById('dwindow');
+	if (menu != null)
+		menu.style.visibility = 'hidden'
+}
+function draw_window(htmlData){
+	var menu =  document.getElementById('dwindow');
+	headerWin = '<div class="message_header" style="width: 100%; heigth: 22px;"'+
+		' onselectstart="return false">'+
+		'<img align="right" alt="'+get_lang('close')+'" title="'+get_lang('close')+'" '+
+		'onclick="close_window()" src="'+templatePath+'/images/close.png">'+
+		get_lang('filemanager')+'</div>';
+	if (!menu){
+		menu = document.createElement('DIV');
+		menu.id = "dwindow";
+		menu.style.left = 200;
+		menu.style.width = "400px";
+		menu.style.top = DocY;
+		menu.className = 'menubox';
+		menu.style.zIndex='1';
+		menu.innerHTML = headerWin+htmlData;
+		document.getElementById('tdAppbox').appendChild(menu);
+	}
+	else{
+		menu.innerHTML = headerWin+htmlData;
+		menu.style.visibility = 'visible';
+	}
+
+}
+
+function draw_menu(id,elements){
+	var menu = document.getElementById('menu_newFile'+id);
+	if (menu == null){
+		menu = document.createElement('DIV');
+		menu.id = "menu_newFile"+id;
+		menu.style.left = DocX;
+		menu.style.top = DocY;
+		for(j in elements)
+		{
+			var link = document.createElement( 'A' );
+			if (typeof(elements[j]['img']) != 'undefined'){
+				var img = document.createElement( 'IMG' );
+				img.src = elements[j]['img'];
+				link.appendChild(img);
+			}
+			link.href = elements[j]['url'];
+			link.appendChild( document.createTextNode( elements[j]['text'] ) );
+			menu.appendChild(link);
+			menu.appendChild(document.createElement( 'BR' ));
+		}
+
+		menu.onmouseout = function () { menuTimeout = setTimeout("document.getElementById('menu_newFile"+id+"').style.visibility = 'hidden'",50);}
+		menu.onmouseover = function () { clearTimeout(menuTimeout); };
+		menu.className = 'menubox';
+		menu.style.zIndex='1';
+		document.getElementById('divAppboxHeader').appendChild(menu);
+	}
+	menu.style.visibility = 'visible';
+}
+
+function resizeDiv(){
+	defaultHeight = document.body.clientHeight ? document.body.clientHeight : document.body.offsetHeight;
+	document.getElementById('fmFileWindow').style.height = defaultHeight-170;
+	document.getElementById('content_folders').style.height = defaultHeight - (is_ie ? 230 : 215);
+
+}
+var headerMsgLock = false;
+var labelBefore = "";
+function write_msg (message){
+	connector.hideProgressBar();
+	if (headerMsgLock){
+		setTimeout('write_msg("'+message+'");', 300);
+		return;
+	}
+	headerMsgLock = true;
+        headerDiv = document.getElementById("main_title");
+        labelBefore = headerDiv.innerHTML;
+        headerDiv.innerHTML = '<table width=100% cellspacing="0" cellpadding="0" border="0"><tbody><tr><th width="40%"></th><th noWrap class="action_info_th">'+message+'</th><th width="40%"></th></tr></tbody></table>';
+        setTimeout('headerMsgLock = false; document.getElementById("main_title").innerHTML = labelBefore;', 3000);
+}
+
+function write_error (message){
+	connector.hideProgressBar();
+	if (headerMsgLock){
+		setTimeout('write_error("'+message+'");', 300);
+		return;
+	}
+	headerMsgLock = true;
+	headerDiv = document.getElementById("main_title");
+	labelBefore = headerDiv.innerHTML;
+	headerDiv.innerHTML = '<table width=100% cellspacing="0" cellpadding="0" border="0"><tbody><tr><th width="40%"></th><th noWrap class="action_error_th">'+message+'</th><th width="40%"></th></tr></tbody></table>';
+	setTimeout('headerMsgLock = false; document.getElementById("main_title").innerHTML = labelBefore;', 3000);
+}
+
+function displayMessages(){
+	var messages = document.getElementById("allMessages");
+
+	for (i=0; i < messages.childNodes.length; i++){
+		if (messages.childNodes[i].innerHTML.indexOf(get_lang('Error:')) == 0)
+			write_error(messages.childNodes[i].innerHTML);
+		else
+			write_msg(messages.childNodes[i].innerHTML);
+	}
+}
+
+function loadPreferences(){
+	preferencesEl = document.getElementById('userPreferences');
+	preferences = unserialize(preferencesEl.value);
+	preferencesEl.parentNode.removeChild(preferencesEl);
+}
+function reloadFiles(newCriteria){
+	if (newCriteria == criteria)
+		order_type = (order_type=='1'?'0':'1')
+	else
+		criteria = newCriteria;
+	toolbar.control('reload');
+}
+
+function initDrawApi(){
+	SecEl = document.getElementById('userKey');
+	crypt = new crypt(SecEl.value);
+	SecEl.parentNode.removeChild(SecEl);
+
+	loadPreferences();
+	currentPath = document.getElementById('currentPath').value;
+	document.getElementById('divAppboxHeader').innerHTML = title_app;
+	displayMessages();
+	resizeDiv();
+	window.onresize = resizeDiv;
+	document.body.style.overflow = "hidden";
+	cExecute('./index.php?menuaction=filemanager.uifilemanager.get_folders_list',handler.draw_folders_list);
+}
+
+function folderList(){
+	this.td = '<td style="padding-left: 2px; padding-right: 2px;" valign="middle">';
+}
+folderList.prototype.init = function(){
+	this.element = document.getElementById('fmFileWindow');
+}
+folderList.prototype.clear = function(){
+	this.element.innerHTML = "";
+}
+
+folderList.prototype.drawSearch = function(data){
+	var fl = folderList;
+	var files = unserialize(data);
+	if (files == null)
+	{
+		alert(get_lang('No results found'));
+		return
+	}
+	toolbar.clear();
+	fl.init();
+	fl.clear();
+	var newpage;
+	var sp_hd = '<span name="head" style="cursor: pointer; cursor: hand;"';
+	var sp_tl = '</span></td>';
+	newpage = '<table cellspacing="0" cellpadding="2" width="100%"><tbody><tr class="message_header">';
+	newpage += fl.td+'<input onclick="selectAll(this)" type="checkbox"></td><td></td><td></td>';
+	newpage += fl.td+sp_hd+' id="name">'+get_lang('file name')+sp_tl;
+	newpage += fl.td+sp_hd+' id="folder">'+get_lang('folder')+sp_tl;
+    	if (preferences.mime_type =='1')
+		newpage += fl.td+sp_hd+' id="mime_type">'+get_lang('mime type')+sp_tl;
+	if (preferences.size =='1')
+		newpage += fl.td+sp_hd+' id="size">'+get_lang('size')+'</a>'+sp_tl;
+	if (preferences.created =='1')
+		newpage += fl.td+sp_hd+' id="created">'+get_lang('created')+'</a>'+sp_tl;
+	if (preferences.modified =='1')
+		newpage += fl.td+sp_hd+' id="modified">'+get_lang('modified')+'</a>'+sp_tl;
+	if (preferences.createdby_id =='1')
+		newpage += fl.td+sp_hd+' id="createdby_id">'+get_lang('created by')+'</a>'+sp_tl;
+	if (preferences.modifiedby_id =='1')
+		newpage += fl.td+sp_hd+' id="modifiedby_id">'+get_lang('modified by')+'</a>'+sp_tl;
+	if (preferences.comment =='1')
+		newpage += fl.td+sp_hd+' id="comment">'+get_lang('comment')+'</a>'+sp_tl;
+	if (preferences.version =='1') newpage += fl.td+sp_hd+' id="version">'+get_lang('version')+'</a>'+sp_tl+'</tr>';
+
+	for (var i=0; i < files.length; i++)
+	{
+		newpage += '<tr>'+fl.td;
+		newpage += '<input name="fileman" value="'+files[i].name+'" type="checkbox"></td>';
+		newpage += '<td></td><td></td>';
+		newpage += fl.td+'<img src="'+files[i].icon+'">';
+		newpage += '<a id="name_'+files[i].name+'" href="./index.php?menuaction=filemanager.uifilemanager.view&file='+base64_encode(files[i].name)+'&path='+base64_encode(files[i].directory)+'" target="_blank">'+files[i].name+'</a>&nbsp;</td>';
+		newpage += fl.td+files[i].directory+'</td>';
+		if (preferences.mime_type =='1') newpage += fl.td+files[i].mime_type+'</td>';
+		if (preferences.size =='1') newpage += fl.td+borkb(files[i].size)+'</td>';
+		if (preferences.created =='1') newpage += fl.td+files[i].created+'</td>';
+		if (preferences.modified =='1') newpage += fl.td+files[i].modified+'</td>';
+		if (preferences.createdby_id =='1') newpage += fl.td+files[i].createdby_id+'</td>';
+		if (preferences.modifiedby_id =='1') newpage += fl.td+files[i].modifiedby_id+'</td>';
+		if (preferences.comment =='1') newpage += fl.td+'<span id="'+files[i].name+'">'+files[i].comment+'</span></td>';
+		if (preferences.version =='1') newpage += fl.td+'<span>'+files[i].version+'</span></td></tr>';
+
+	}
+	fl.element.innerHTML = newpage;
+	fl.drawStripes();
+}
+folderList.prototype.createLine = function(file){
+		var fl = folderList;
+		retBuff = '<tr id="line_'+file.name+'" onmouseout="clearTimeout(menuTimeout)" onmousedown="_dragArea.dragEl=this;_dragArea.operation=\'drag\'">';
+		retBuff += fl.td;
+		retBuff += '<input name="fileman" value="'+file.name+'" type="checkbox"></td>';
+		if (permissions['private']) {
+			retBuff += '<td><div id="restrict_'+file.name+'" onclick="setRestricted(\''+file.name+'\')" ';
+                        retBuff += 'style="background-image:url('+templatePath+'images/button_'+(file.pub == '1'?'lock':'unlock')+'.png);background-repeat: repeat-none;width:15px;height:12px;"></div></td>';
+		}
+		else
+			retBuff += '<td></td>';
+
+		switch (file.mime_type)
+		{
+			case 'text/html':
+				retBuff += '<td><a href="./index.php?menuaction=filemanager.uifilemanager.export&file='+base64_encode(file.name)+'&path='+base64_encode(currentPath)+'"><div class="exportButton" alt="'+get_lang('export')+'" title="'+get_lang('export')+'"></div></a></td>';
+				break;
+			case 'application/zip':
+				retBuff += '<td><div class="exportButton" onclick="unarchive(\''+file.name+'\')" alt="'+get_lang('unarchive')+'" title="'+get_lang('unarchive')+'"></a></td>'
+				break;
+			default:
+				retBuff += '<td></td>';
+		}
+		retBuff += fl.td+'<div style="background-image:url('+(file.icon)+'); background-repeat: no-repeat; height:16px; padding-left: 18px; overflow: hidden;">';
+		if((file.mime_type).toUpperCase().indexOf('IMAGE') == 0)
+			var mousefunc = 'draw_card(\'preview\',\''+file.name+'\')'
+		else
+			var mousefunc = 'hide_card()';
+		retBuff += '<a onmouseover="'+mousefunc+'" id="name_'+file.name+'" href="./index.php?menuaction=filemanager.uifilemanager.view&file='+base64_encode(file.name)+'&path='+base64_encode(currentPath)+'" target="_blank">'+file.name+'</a></div></td>';
+		if (preferences.mime_type =='1') retBuff += fl.td+file.mime_type+'</td>';
+		if (preferences.size =='1') retBuff += fl.td+borkb(file.size)+'</td>';
+		var now = new Date();
+		var midnight = Date.parse(now.toDateString());
+		var dtString = "";
+		if (preferences.created =='1') {
+			var created = new Date();
+			created.setTime(file.created*1000);
+			if (created.getTime() > midnight)
+				if (created.getMinutes() < 10 )
+					dtString = created.getHours()+":0"+created.getMinutes();
+				else
+					dtString = created.getHours()+":"+created.getMinutes();
+			else {
+				dtString = (created.getDate() < 10) ? "0"+created.getDate()+"/" : created.getDate()+"/";
+				dtString += (created.getMonth() < 9) ? "0" : "";
+				dtString += (created.getMonth()+1)+"/"+created.getFullYear();
+			}
+			retBuff += fl.td+dtString+'</td>';
+		}
+		if (preferences.modified =='1'){
+			var modified = new Date();
+			modified.setTime(file.modified*1000);
+			if (file.modified != "")
+				if (modified.getTime() > midnight)
+	                                if (modified.getMinutes() < 10)
+        	                                dtString = modified.getHours()+":0"+modified.getMinutes();
+                	                else
+						dtString = modified.getHours()+":"+modified.getMinutes();
+				else {
+	                                dtString = (modified.getDate() < 10) ? "0"+modified.getDate()+"/" : modified.getDate()+"/";
+        	                        dtString += (modified.getMonth() < 9) ? "0" : "";
+                	                dtString += (modified.getMonth()+1)+"/"+modified.getFullYear();
+				}
+			else
+				dtString = "";
+			retBuff += fl.td+dtString+'</td>';
+		}
+		if (preferences.owner =='1'){
+			retBuff += fl.td;
+			retBuff += '<div onmouseover="draw_card(\'user\',\''+file.owner+'\')">'+file.owner+'</div></td>';
+		}
+		if (preferences.createdby_id =='1'){
+			retBuff += fl.td;
+			retBuff += '<div onmouseover="draw_card(\'user\',\''+file.createdby_id+'\')">'+file.createdby_id+'</div></td>';
+		}
+		if (preferences.modifiedby_id =='1'){
+			retBuff += fl.td;
+			retBuff += '<div onmouseover="draw_card(\'user\',\''+file.modifiedby_id+'\')">'+file.modifiedby_id+'</div></td>';
+		}
+		if (preferences.comment =='1') retBuff += fl.td+'<input id="'+file.name+'" class="inputComment" onkeydown="enterComments(event,this)" onclick="presetComments(this)" onblur="setComments(this)" value="'+(file.comment==null?'':file.comment)+'" alt="'+get_lang('Click to change comments')+'" title="'+get_lang('Click to change comments')+'"></input></td>';
+		if (preferences.version =='1') retBuff += fl.td+'<span onclick="loadHistory(\''+file.name+'\')">'+file.version+'</span></td>';
+		retBuff += "</tr>";
+		return retBuff;
+}
+folderList.prototype.updateQuota = function(quotaSize,usedSpace){
+	if (parseInt(quotaSize) != 0){
+		var contentQuota = document.getElementById('content_quota');
+		if (contentQuota != null)
+			contentQuota.innerHTML = '<table width="102" cellspacing="0" cellpadding="0" border="0" id="table_quota"><tbody><tr><td width="102" nowrap="true" height="15" background="../phpgwapi/templates/default/images/dsunused.gif"><table cellspacing="0" cellpadding="0" border="0" style="width: '+parseInt((usedSpace/quotaSize)*100)+'%;"><tbody><tr><td height="15" class="dsused"/></tr></tbody></table></td><td nowrap="true" align="center"><span class="boxHeaderText">'+parseInt(usedSpace/quotaSize*100)+'% ('+borkb(usedSpace)+'/'+borkb(quotaSize)+')</span></td></tr></tbody></table></td></tr></table>';
+	}
+}
+folderList.prototype.drawFiles = function(data){
+	var fl = folderList;
+	var returnData = unserialize(data);
+	loadPermissions(returnData.permissions);
+	var files = returnData.files;
+	draw_paging(returnData.files_count,data);
+	fl.init();
+	fl.clear();
+	var newpage = '';
+	if (preferences.viewIcons == 1){
+		for (var i = 0; i < files.length; i++)
+		{
+			newicon = '<div class="icon">';
+			newicon += '<a href="./index.php?menuaction=filemanager.uifilemanager.view&file='+base64_encode(files[i].name)+'&path='+base64_encode(currentPath)+'" target="_blank">';
+			newicon += '<div style="width:64; height:64; background-image:url('+files[i].icon+'); background-repeat: no-repeat;"></div>';
+			newicon += '<span class="iconCaption">'+files[i].name+'</span>';
+			newicon += '</a></div>';
+			newpage += newicon;
+		}
+
+		fl.element.innerHTML = newpage;
+	}
+	else
+	{
+		var sp_hd = '<span name="head" style="cursor: pointer; cursor: hand;" onclick="reloadFiles(\'';
+		var sp_tl = '</span></td>';
+		newpage = '<table cellspacing="0" cellpadding="2" width="100%"><tbody><tr class="message_header">';
+		newpage += fl.td+'<input onclick="selectAll(this)" type="checkbox"></td><td></td><td></td>';
+		newpage += fl.td+sp_hd+'name\')" id="name">'+get_lang('file name')+sp_tl;
+		if (preferences.mime_type =='1')
+			newpage += fl.td+sp_hd+'mime_type\')" id="mime_type">'+get_lang('mime type')+sp_tl;
+		if (preferences.size =='1')
+			newpage += fl.td+sp_hd+'size\')" id="size">'+get_lang('size')+'</a>'+sp_tl;
+		if (preferences.created =='1')
+			newpage += fl.td+sp_hd+'created\')" id="created">'+get_lang('created')+'</a>'+sp_tl;
+		if (preferences.modified =='1')
+			newpage += fl.td+sp_hd+'modified\')" id="modified">'+get_lang('modified')+'</a>'+sp_tl;
+		if (preferences.owner =='1')
+			newpage += fl.td+sp_hd+'owner\')" id="owner">'+get_lang('owner')+'</a>'+sp_tl;
+		if (preferences.createdby_id =='1')
+			newpage += fl.td+sp_hd+'createdby_id\')" id="createdby_id">'+get_lang('created by')+'</a>'+sp_tl;
+		if (preferences.modifiedby_id =='1')
+			newpage += fl.td+sp_hd+'modifiedby_id\')" id="modifiedby_id">'+get_lang('modified by')+'</a>'+sp_tl;
+		if (preferences.comment =='1')
+			newpage += fl.td+sp_hd+'comment\')" id="comment">'+get_lang('comment')+'</a>'+sp_tl;
+		if (preferences.version =='1') newpage += fl.td+sp_hd+'version\')" id="version">'+get_lang('version')+'</a>'+sp_tl+'</tr>';
+		if (files != null)
+			for (var i = 0; i < files.length; i++)
+			{
+				newpage += fl.createLine(files[i]);
+			}
+		else
+			newpage = "<b>"+get_lang('no files in this directory.')+"</b>";
+		fl.element.innerHTML = newpage;
+		header = document.getElementsByName('head');
+		for (var i=0; i < header.length; i++)
+		{
+			if (header[i].id == criteria){
+				header[i].style.fontWeight = 'bold';
+				arrow = document.createElement('IMG');
+				if (order_type == '1')
+					arrow.src = templatePath+'images/arrow_ascendant.gif';
+				else
+					arrow.src = templatePath+'images/arrow_descendant.gif';
+				header[i].appendChild(arrow);
+			}
+		}
+		fl.drawStripes();
+	}
+	folderList.updateQuota(returnData.quota.quotaSize,returnData.quota.usedSpace);
+}
+folderList.prototype.drawStripes = function(){
+	var classTr = "tr_msg_read";
+	folderList.init();
+	var elements = folderList.element.firstChild.firstChild.childNodes;
+	for (var i = 1; i < elements.length; i++){
+		elements[i].className = classTr;
+		classTr = (classTr == "tr_msg_read"?"tr_msg_read2":"tr_msg_read");
+	}
+}
+var folderList = new folderList();
+
+function toolbar()
+{
+	var element;
+}
+toolbar.prototype.clear = function (){
+	this.element.innerHTML = "";
+}
+toolbar.prototype.load = function (){
+	this.element = document.getElementById('fmMenu');
+	if (permissions['read'] == 0){
+		this.element.innerHTML = "";
+		return;
+	}
+	var pageContent = '<table><tbody><tr>';
+	var createButton = function(name) { return '<td name="'+name+'" class="toolButton" onclick="toolbar.control(\''+name+'\');" title="'+name+'"><img src="'+templatePath+'images/button_'+name+'.png" alt="'+name+'"><small>'+get_lang(name.replace('_',' '))+'</small></td>'; }
+
+	if (permissions['edit'] != 0){
+		pageContent += createButton('edit');
+		pageContent += createButton('rename');
+	}
+	if (permissions['delete'] != 0){
+		pageContent += createButton('delete');
+		pageContent += createButton('move_to');
+	}
+	pageContent += createButton('copy_to');
+
+	this.element.innerHTML = pageContent+'</tr></tbody></table>';
+
+}
+toolbar.prototype.getCheckedFiles = function () {
+	filesUrl = "";
+	var one_checked = false;
+	files=document.getElementsByName('fileman');
+	var j=0;
+	for (i = 0; i <  files.length; i++)
+		if (files[i].checked){
+			one_checked = true;
+			filesUrl += "&fileman["+j+"]="+base64_encode(files[i].value);
+			j++;
+		}
+	if (!one_checked)
+	{
+		write_msg(get_lang('Please select a file'));
+		return;
+	}
+	return filesUrl;
+}
+toolbar.prototype.control = function (arg)
+{
+	//Used to get button position
+	var button = document.getElementsByName(arg);
+	button = button[0];
+	switch (arg) {
+		case 'new':
+			elements = new Array();
+			elements[0] = { 'text': get_lang('empty file'),
+					'url': 'javascript:newEmptyFile()'};
+			elements[1] = new Array();
+			elements[1]['text'] = get_lang('File from model');
+			address = document.location.toString();
+			address = address.split("?");
+			elements[1]['url'] = address[0]+"?menuaction=filemanager.uifilemanager.fileModels";
+			elements[2] = { 'text' : get_lang('Upload'),
+					'url': 'javascript:newUpload()'};
+			draw_menu(arg,elements);
+			break;
+		case 'rename':
+			var one_checked = false;
+			files=document.getElementsByName('fileman');
+			for (i = 0; i <  files.length; i++)
+				if (files[i].checked){
+					one_checked = true;
+					files[i].checked = false;
+					var nameLink = document.getElementById('name_'+files[i].value);
+					var inputName = document.createElement('INPUT');
+					inputName.id = 'input_'+files[i].value;
+					var filename = nameLink.innerHTML;
+					inputName.value = filename;
+					inputName.onclick = function () { oldValue = inputName.value; }
+					inputName.onblur = function () { if (inputName.value == oldValue) handler.rename(); else cExecute('./index.php?menuaction=filemanager.vfs_functions.rename&file='+base64_encode(this.id.substr(6))+'&to='+base64_encode(this.value)+"&path="+base64_encode(currentPath),handler.rename) };
+					inputName.onkeydown=function (event) {if (event.keyCode == KEY_ENTER) this.blur(); };
+					nameLink.parentNode.appendChild(inputName);
+					nameLink.parentNode.removeChild(nameLink);
+				}
+			if (!one_checked)
+				write_msg(get_lang('Please select a file'));
+			break;
+		case 'edit':
+			var one_checked = false;
+			files=document.getElementsByName('fileman');
+			for (i = 0; i <  files.length; i++)
+				if (files[i].checked){
+					one_checked = true;
+					var filename=files[i].value;
+				}
+			if (one_checked){
+				address = document.location.toString();
+				address = address.split("&");
+				document.location = address[0]+"&"+arg+".x=1&filename="+base64_encode(filename)+".&path="+base64_encode(currentPath);
+			}
+			else
+			{
+				write_msg(get_lang('Please select a file'));
+				return;
+			}
+			break;
+		case 'delete':
+			var filesUrl = this.getCheckedFiles();
+			cExecute('./index.php?menuaction=filemanager.vfs_functions.delete&path='+
+					base64_encode(currentPath)+filesUrl,handler.del);
+			break;
+		case 'archive':
+			var filesUrl = this.getCheckedFiles();
+			password = prompt(get_lang('Please, type a strong password (suggestion: at least 8 characters, letters and numbers) or leave it empty to archive only'));
+			if (password == null)
+				return;
+			if (password.length > 0)
+			{
+				password2 = prompt(get_lang('Please, retype your password'));
+				if (password != password2)
+				{
+					alert(get_lang('Error:')+get_lang('passwords are differents'));
+					return;
+				}
+			}
+			var pswd = crypt.encode(password);
+			cExecute('./index.php?menuaction=filemanager.vfs_functions.archive&pswd='+base64_encode(pswd.toString())+'&path='+base64_encode(currentPath)+filesUrl,handler.archive);
+			break;
+		case 'move_to':
+		case 'copy_to':
+			 var filesUrl = this.getCheckedFiles();
+			 var elements = new Array();
+			for(i=0; i< folders.length; i++)
+			{
+				elements[i] = new Array();
+				elements[i]['text']=folders[i];
+				address = document.location.toString();
+				address = address.split("&");
+				elements[i]['url'] = "javascript:"+escape(arg)+"('"+folders[i]+"','"+filesUrl+"')";
+			}
+			draw_menu(arg,elements);
+			break;
+		case 'reload':
+			last_folder = last_folder ? last_folder : currentPath;
+			current_folder = current_folder ? current_folder : currentPath;
+			cExecute('./index.php?menuaction=filemanager.uifilemanager.dir_ls&path='+base64_encode(currentPath)+'&criteria='+criteria+'&otype='+order_type+'&limit='+filesperpage+'&offset='+offset,folderList.drawFiles);
+			return;
+		case 'tools':
+			elements = new Array();
+			elements[0] = { 'text' : get_lang('Preferences'),
+					'url' : 'preferences/preferences.php?appname=filemanager',
+					'img' : templatePath+'images/preferences.png'};
+			elements[1] = { 'text' : get_lang('Search'),
+					'url' : 'javascript:document.getElementById("menu_newFiletools").style.visibility="hidden";\
+						document.getElementById("em_message_search").focus();',
+					'img' : templatePath+'images/search.gif'};
+			elements[2] = { 'text' : get_lang('Edit Folders'),
+					'url' : 'javascript:editFolders()',
+					'img' : templatePath+'images/button_createdir.png'};
+			elements[3] = { 'text' : get_lang('Share Folders'),
+					'url' : "./index.php?menuaction=preferences.uiaclprefs.index&acl_app=filemanager",
+					'img' : templatePath+'images/mime16_directory.png'};
+			elements[4] = { 'text' : get_lang('View'),
+					'url' : "javascript:EditColumns()",
+					'img' : templatePath+'images/editpaste.png'};
+			elements[5] = {'text' : get_lang('Archive'),
+					'url' : "javascript:toolbar.control('archive')",
+					'img' : templatePath+'images/button_zip.png'};
+			draw_menu(arg,elements);
+			break;
+		default:
+			return;
+	}
+}
+var toolbar = new toolbar();
+
+function unarchive(filename){
+	password = crypt.encode(prompt(get_lang('Please, type archive password or leave it empty if it is not encrypted')));
+	if (password == null)
+		return;
+	cExecute('./index.php?menuaction=filemanager.vfs_functions.unarchive&pswd='+base64_encode(password)+'&path='+base64_encode(currentPath)+'&file='+base64_encode(filename),handler.archive);
+}
+function move_to(to,filesUrl){
+	cExecute('./index.php?menuaction=filemanager.vfs_functions.moveto&from='+base64_encode(currentPath)+'&to='+base64_encode(to)+filesUrl,handler.moveto);
+}
+function copy_to(to,filesUrl){
+	cExecute('./index.php?menuaction=filemanager.vfs_functions.copyto&from='+base64_encode(currentPath)+'&to='+base64_encode(to)+filesUrl,handler.copyto);
+}
+
+function draw_card(type,name){
+	clearTimeout(menuTimeout);
+	switch(type){
+		case 'preview':
+			var url = './index.php?menuaction=filemanager.vfs_functions.summary&file='+base64_encode(name)+"&path="+base64_encode(currentPath);
+			var htmlData = '<img src=\"'+url+'\">';
+			menuTimeout = setTimeout("draw_window_card(\'"+htmlData+"\')",500);
+			break;
+		case 'user':
+			var url = './index.php?menuaction=filemanager.user.card&lid='+base64_encode(name);
+			menuTimeout = setTimeout("cExecute('"+url+"',draw_window_card)",500);
+			break;
+		default:
+			break;
+	}
+
+}
+function editFolders(operation){
+	if (operation == 'new'){
+		var name = prompt(get_lang('Enter with the name of new file/directory'), '');
+		if (name != null && name != '')
+		{
+			var parentDir = document.getElementById('folders_box').value;
+			cExecute('./index.php?menuaction=filemanager.uifilemanager.createdir&path='+base64_encode(parentDir)+'&filename='+base64_encode(name),handler.refreshDir);
+			currentPath = parentDir+'/'+name;
+			close_window();
+		}
+	}
+	else
+		if (operation == 'remove'){
+			var Dfolder = document.getElementById('folders_box').value;
+			if (confirm(get_lang('Do you really want to remove folder: %1?',Dfolder), ''))
+			{
+				cExecute('./index.php?menuaction=filemanager.uifilemanager.removedir&path='+base64_encode(crypt.encode(Dfolder)),handler.refreshDir);
+				var lastIndex = Dfolder.lastIndexOf('/');
+				currentPath = Dfolder.substr(0,lastIndex);
+				close_window();
+			}
+		}
+		else{
+			var buf = "<select id='folders_box'>";
+			for (var i=0; i < folders.length; i++)
+				buf += "<option value='"+folders[i]+"'>"+folders[i]+"</option>";
+			buf += "</select>";
+			code = "<table><tbody><tr><td>"+buf+"</td></tr><tr><td><input type='button' onclick='editFolders(\"new\")' value='"+get_lang('new folder')+"'></td><td><input type='button' onclick='editFolders(\"remove\")' value='"+get_lang('remove folder')+"'></td></tr></tbody></table>";
+			draw_window(code);
+		}
+}
+
+function draw_window_card(content){
+	var menu = document.getElementById('menu_newFile');
+	if (menu == null){
+		menu = document.createElement('DIV');
+		menu.className = 'menubox';
+		menu.id = "menu_newFile";
+		menu.style.left = DocX;
+		menu.style.top = (DocY+20)+"px";
+		menu.width = "100%";
+		menu.onmouseout = function () { menuTimeout = setTimeout("hide_card()",50);}
+		menu.onmouseover = function () { clearTimeout(menuTimeout); };
+		menu.style.zIndex='1';
+		document.getElementById('tdAppbox').appendChild(menu);
+	}
+	else
+	{
+		menu.style.left = DocX;
+		menu.style.top = (DocY+20)+"px";
+	}
+	menu.innerHTML = content;
+
+	menu.style.visibility = 'visible';
+	clearTimeout(menuTimeout);
+	menuTimeout = setTimeout("hide_card()",4000);
+}
+function hide_card(){
+	var e=document.getElementById('menu_newFile');
+	if (e!=null)
+		e.style.visibility = 'hidden';
+}
+
+function draw_paging(num_files,data){
+        num_files = parseInt(num_files);
+        total_pages = 1;
+
+        if(last_folder != current_folder){
+                lastPage = 1;
+                current_page = 1;
+                last_folder = current_folder;
+        }
+
+        if(num_files > parseInt(filesperpage)) {
+                total_pages = parseInt(num_files/filesperpage);
+                if((num_files/filesperpage) > total_pages)
+                        total_pages++;
+        }
+
+        if(total_pages == 1) {
+                if(span_paging = document.getElementById("span_paging")) {
+                        span_paging.parentNode.removeChild(span_paging);
+                }
+                return;
+        }
+
+        span_paging = document.getElementById("span_paging");
+        if(!span_paging){
+                span_paging = document.createElement("DIV");
+                span_paging.id = "span_paging";
+                span_paging.className = "boxHeaderText";
+                span_paging.align="right";
+                document.getElementById("div_menu_c3").appendChild(span_paging);
+        }
+        span_paging.style.width="100%";
+        span_paging.innerHTML="";
+        files_range_begin = 1;
+        files_range_end = filesperpage;
+        if(current_page != 1) {
+                lnk_page = document.createElement("A");
+                lnk_page.setAttribute("href", "javascript:current_page=1;offset=0;toolbar.control('reload');");
+        }
+        else {
+                lnk_page = document.createElement("SPAN");
+        }
+        span_paging.appendChild(lnk_page);
+
+        lnk_page.innerHTML = "&lt;&lt;";
+        lnk_page.title = get_lang("First");
+        span_paging.innerHTML += "&nbsp;";
+
+        if(current_page == lastPage + numPages)
+                lastPage = current_page - 1;
+        else if((lastPage != 1 && lastPage == current_page) || current_page == total_pages)
+                lastPage = current_page - (numPages - 1);
+        else if(current_page == 1)
+                lastPage = 1;
+
+        if(lastPage < 1)
+                lastPage = 1;
+        else if(lastPage > 1 && (lastPage > (total_pages -(numPages - 1))))
+                lastPage = total_pages -(numPages - 1);
+
+        var     hasMarked = false;
+
+        for(i = lastPage; i <= total_pages; i++) {
+
+                if(current_page == i || (i == total_pages && !hasMarked)) {
+                        lnk_page = document.createElement("SPAN");
+                        span_paging.appendChild(lnk_page);
+                        lnk_page.innerHTML = "&nbsp;<b>"+i+"</b>&nbsp;";
+                        hasMarked = true;
+                        continue;
+                }
+                else{
+                        lnk_page = document.createElement("A");
+                        span_paging.appendChild(lnk_page);
+                        files_range_begin = ((i*filesperpage)-(filesperpage-1));
+                        files_range_end = (i*filesperpage);
+                        lnk_page.setAttribute("href", "javascript:current_page="+i+";offset=((current_page-1)*filesperpage);toolbar.control('reload');");
+               }
+
+                lnk_page.innerHTML = "&nbsp;...&nbsp;";
+
+                if(i == (lastPage + numPages))
+                                break;
+                else if(lastPage == 1 || i != lastPage)
+                        lnk_page.innerHTML = "&nbsp;"+i+"&nbsp;";
+
+                span_paging.innerHTML += "&nbsp;";                                                                            
+        }
+
+        if(current_page != total_pages) {
+                lnk_page = document.createElement("A");
+                files_range_begin = ((total_pages*filesperpage)-(filesperpage-1));
+                files_range_end = (total_pages*filesperpage);
+                lnk_page.setAttribute("href", "javascript:current_page="+total_pages+";offset=((current_page-1)*filesperpage);toolbar.control('reload');");
+	}
+        else {
+                lnk_page = document.createElement("SPAN");
+        }
+        span_paging.innerHTML += "&nbsp;";
+        span_paging.appendChild(lnk_page);
+
+        lnk_page.title = get_lang("Last");
+        lnk_page.innerHTML = "&gt;&gt;";
+}
+
Index: /trunk/filemanager/js/connector.js
===================================================================
--- /trunk/filemanager/js/connector.js	(revision 2000)
+++ /trunk/filemanager/js/connector.js	(revision 2000)
@@ -0,0 +1,337 @@
+var progressBar;
+
+if (document.all)
+{
+	navigator.userAgent.toLowerCase().indexOf('msie 5') != -1 ? is_ie5 = true : is_ie5 = false;
+	is_ie = true;
+	is_moz1_6 = false;
+	is_mozilla = false;
+	is_ns4 = false;
+}
+else if (document.getElementById)
+{
+	navigator.userAgent.toLowerCase().match('mozilla.*rv[:]1\.6.*gecko') ? is_moz1_6 = true : is_moz1_6 = false;
+	is_ie = false;
+	is_ie5 = false;
+	is_mozilla = true;
+	is_ns4 = false;
+}
+else if (document.layers)
+{
+	is_ie = false;
+	is_ie5 = false
+	is_moz1_6 = false;
+	is_mozilla = false;
+	is_ns4 = true;
+}
+
+/****************************************** Connector Class *************************************************/
+// Constructor
+function cConnector()
+{
+	this.requests = new Array();
+	this.oxmlhttp = null;
+	this.isVisibleBar = false;
+	this.tid = 0;
+	this.progressBar = null;
+	this.oldX = 0;
+	this.oldY = 0;
+	this.updateVersion = "";
+}
+cConnector.prototype.buildBar = function()
+{
+	var div = document.getElementById('divProgressBar');
+
+	if(! div) {
+		div = document.createElement("DIV");
+		//div.style.visibility	= "hidden";
+		div.style.width = "103px";
+		div.id = 'divProgressBar';
+		div.align = "center";
+		div.innerHTML = '&nbsp;&nbsp;<font face="Verdana" size="2" color="WHITE">'+get_lang('loading')+'...</font>&nbsp;';
+		div.style.background = "#cc4444";
+		div.style.position = 'fixed';
+		div.style.top = '0px';
+		div.style.right = '0px';
+		document.getElementById('divAppboxHeader').appendChild(div);
+
+		if(is_ie) {
+			var elem = document.all[div.id];
+			elem.style.position="absolute";
+			var root = document.body;
+			var posX = elem.offsetLeft-root.scrollLeft;
+			var posY = elem.offsetTop-root.scrollTop;
+			root.onscroll = function() {
+				elem.style.right = '0px';
+				elem.style.top = (posY + root.scrollTop) + "px";
+			};
+		}
+	}
+}
+
+cConnector.prototype.hideProgressBar = function ()
+{
+	var div = document.getElementById('divProgressBar');
+	if (div != null)
+		div.style.visibility = 'hidden';
+	else
+		setTimeout('connector.hideProgressBar()',100);
+	this.isVisibleBar = false;
+}
+
+cConnector.prototype.showProgressBar = function(){
+	var div = document.getElementById('divProgressBar');
+	if (! div){
+		connector.buildBar();
+		return;
+	}
+
+	div.style.visibility = 'visible';
+
+	this.isVisibleBar = true;
+}
+
+	function XMLTools()
+	{
+		this.path = "";
+	}
+var connector = new cConnector();
+
+function cExecuteForm(form, handler){
+	connector.showProgressBar();
+	if(! (divUpload = document.getElementById('divUpload'))) {
+		divUpload               = document.createElement('DIV');                
+		divUpload.id    = 'divUpload';
+		document.body.appendChild(divUpload);
+	}
+
+	handlerExecuteForm = handler;
+	var form_handler = function (data){
+		handlerExecuteForm(data);
+		handlerExecuteForm = null;
+	}
+	divUpload.innerHTML= "<iframe onload=\"connector.hideProgressBar();cExecute('./index.php/index.php?menuaction=filemanager.uifilemanager.getReturnExecuteForm',"+form_handler+");\"  style='display:none;width:0;height:0;' name='uploadFile'></iframe>";
+	form.target ="uploadFile";
+        form.submit();
+}
+
+function cExecute(requestURL,handler){
+	if (connector.isVisibleBar == true){
+		setTimeout('cExecute("'+requestURL+'",'+handler+')',150);
+		return;
+	}
+	connector.showProgressBar();
+	var AjaxRequest = function () {
+		Ajax = false;
+		if (window.XMLHttpRequest) //Gecko
+			Ajax = new XMLHttpRequest();
+		else
+			if (window.ActiveXObject) //Other nav.
+				try
+				{
+					Ajax = new ActiveXObject("Msxml12.XMLHTTP");
+				} catch (e)
+		{
+			Ajax = new ActiveXObject("Microsoft.XMLHTTP");
+		}
+	}
+	var responseRequest = function (){
+		if (Ajax.readyState == 4)
+			if (Ajax.status == 200){
+				handler(Ajax.responseText);
+				connector.hideProgressBar();
+			}
+			else
+				throw("Connection error!");
+	}
+
+
+	AjaxRequest();
+	if (!Ajax){
+		throw("No connection");
+		return;
+	}
+
+	Ajax.onreadystatechange = responseRequest;
+	if (typeof(method) == 'undefined')
+		method = 'GET';
+	Ajax.open(method, requestURL, true);
+	Ajax.send(null);
+}
+
+function unserialize(str)
+{
+
+	var matchB = function (str, iniPos)
+	{
+		var nOpen, nClose = iniPos;
+		do
+		{
+			nOpen = str.indexOf('{', nClose+1);
+			nClose = str.indexOf('}', nClose+1);
+
+			if (nOpen == -1)
+			{
+				return nClose;
+			}
+			if (nOpen < nClose )
+			{
+				nClose = matchB(str, nOpen);
+			}
+		} while (nOpen < nClose);
+
+		return nClose;
+	}
+
+	var f = function (str)
+	{
+		switch (str.charAt(0))
+		{
+			case 'a':
+				var data = new Array();
+				var n = parseInt( str.substring( str.indexOf(':')+1, str.indexOf(':',2) ) );
+				var arrayContent = str.substring(str.indexOf('{')+1, str.lastIndexOf('}'));
+
+				for (var i = 0; i < n; i++)
+				{
+					var pos = 0;
+
+					/* Process Index */
+					var indexStr = arrayContent.substr(pos, arrayContent.indexOf(';')+1);
+					var index = f(indexStr);
+					pos = arrayContent.indexOf(';', pos)+1;
+
+					/* Process Content */
+					var part = null;
+					switch (arrayContent.charAt(pos))
+					{
+						case 'a':
+							var pos_ = matchB(arrayContent, arrayContent.indexOf('{', pos))+1;
+							part = arrayContent.substring(pos, pos_);
+							pos = pos_;
+							data[index] = f(part);
+							break;
+
+						case 's':
+							var pval = arrayContent.indexOf(':', pos+2);
+							var val  = parseInt(arrayContent.substring(pos+2, pval));
+							pos = pval + val + 4;
+							data[index] = arrayContent.substr(pval+2, val);
+							break;
+
+						default:
+							part = arrayContent.substring(pos, arrayContent.indexOf(';', pos)+1);
+							pos = arrayContent.indexOf(';', pos)+1;
+							data[index] = f(part);
+							break;
+					}
+					arrayContent = arrayContent.substr(pos);
+				}
+				break;
+
+			case 's':
+				var pos = str.indexOf(':', 2);
+				var val = parseInt(str.substring(2,pos));
+				var data = str.substr(pos+2, val);
+				str = str.substr(pos + 4 + val);
+				break;
+
+			case 'i':
+			case 'd':
+				var pos = str.indexOf(';');
+				var data = parseInt(str.substring(2,pos));
+				str = str.substr(pos + 1);
+				break;
+
+			case 'N':
+				var data = null;
+				str = str.substr(str.indexOf(';') + 1);
+				break;
+
+			case 'b':
+				var data = str.charAt(2) == '1' ? true : false;
+				break;
+		}
+		return data;
+	}
+	unserialized = f(str);
+	return unserialized;
+}
+var unserialized = new Object();
+
+// Serialize Data Method
+function serialize(data)
+{
+	var f = function(data)
+	{
+		var str_data;
+
+		if (data == null ||
+				(typeof(data) == 'string' && data == ''))
+		{
+			str_data = 'N;';
+		}
+
+		else switch(typeof(data))
+		{
+			case 'object':
+				var arrayCount = 0;
+
+				str_data = '';
+
+				for (i in data)
+				{
+					if (i == 'length')
+					{
+						continue;
+					}
+
+					arrayCount++;
+					switch (typeof(i))
+					{
+						case 'number':
+							str_data += 'i:' + i + ';' + f(data[i]);
+							break;
+
+						case 'string':
+							str_data += 's:' + i.length + ':"' + i + '";' + f(data[i]);
+							break;
+
+						default:
+							showMessage(Element('cc_msg_err_serialize_data_unknown').value);
+							break;
+					}
+				}
+				if (!arrayCount)
+				{
+					str_data = 'N;';        
+				}
+				else
+				{
+					str_data = 'a:' + arrayCount + ':{' + str_data + '}';
+					}
+
+					break;
+
+					case 'string':
+					str_data = 's:' + data.length + ':"' + data + '";';
+					break;
+
+					case 'number':
+					str_data = 'i:' + data + ';';
+					break;
+
+					case 'boolean':
+					str_data = 'b:' + (data ? '1' : '0') + ';';
+					break;
+
+					default:
+					showMessage(Element('cc_msg_err_serialize_data_unknown').value);
+					return null;
+				}
+
+				return str_data;
+		}
+
+		return f(data);
+	}
Index: /trunk/filemanager/js/handler.js
===================================================================
--- /trunk/filemanager/js/handler.js	(revision 2000)
+++ /trunk/filemanager/js/handler.js	(revision 2000)
@@ -0,0 +1,182 @@
+function handler(){
+}
+handler.prototype.del = function(data){
+        var returnVal = data.split('|');
+        var deletedFiles = "";
+        for (i=0; i < returnVal.length; i++)
+                if (returnVal[i] == 'False'){
+                        write_error(get_lang('Could not delete %1',returnVal[i+1]));
+                        return;
+                }else
+                {
+                        if (returnVal[i] != ""){
+                                deletedFiles += ", "+returnVal[i];
+                                /*var element = document.getElementById("name_"+returnVal[i]);
+                                var pai = element.parentNode.parentNode.parentNode;
+                                pai.parentNode.removeChild(pai);*/
+                        }
+			if (i > 3) //to avoid big message
+			{
+				deletedFiles = "  " +returnVal.length + " " +get_lang("files");
+				break;
+			}
+                }
+                write_msg(get_lang('Deleted %1',deletedFiles.substr(2)));
+        //Repaint stripes 
+	toolbar.control('reload');
+        //folderList.drawStripes();
+}
+handler.prototype.rename = function(data) {
+        if (data == null){
+                var returnVal = new Array ("True",oldValue,oldValue);
+        }
+        else
+                var returnVal = data.split('|');
+        if ( returnVal[0] == "True" ){
+                if (returnVal[1] != returnVal[2]) write_msg(get_lang('Renamed %1 to %2',returnVal[1],returnVal[2]));
+                var nameLink = document.createElement('A');
+                var inputName = document.getElementById('input_'+returnVal[1]);
+		var trFile = inputName.parentNode.parentNode.parentNode;
+
+                nameLink.innerHTML = returnVal[2];
+                nameLink.href="./index.php?menuaction=filemanager.uifilemanager.view&file="+base64_encode(returnVal[2])+"&path="+base64_encode(currentPath);
+                nameLink.target = "_blank";
+                nameLink.id = "name_"+returnVal[2];
+
+                inputName.parentNode.appendChild(nameLink);
+                inputName.parentNode.removeChild(inputName);
+		trFile.innerHTML = trFile.innerHTML.replace(returnVal[1],returnVal[2]);
+		trFile.id = trFile.id.replace(returnVal[1],returnVal[2]);
+        }
+        else
+        {
+		if (returnVal[1] == "badchar")
+			write_error(get_lang('File names cannot contain "%1"',returnVal[2]));
+		else if (returnVal[1] == "slashes")
+			write_error(get_lang('File names cannot contain \\ or /'));
+		else if (returnVal[1] == "editing")
+			write_error(get_lang('This file is being edited right now'));
+		else
+			write_error(get_lang('Could not rename %1 to %2', returnVal[1], returnVal[2]));
+        }
+
+}
+handler.prototype.upload = function(data){
+        close_window();
+        connector.hideProgressBar();
+        var response = unserialize(data);
+        if (response[0] == "Ok")
+                write_msg(get_lang('All files created sucessfuly'));
+        else
+                for (var i=0;i < response.length; i++)
+                        write_error(response[i]);
+        toolbar.control('reload');
+}
+handler.prototype.restricted = function(data){
+        if (data.indexOf("True") == 0){
+                returnVal = data.split('|');
+                var img_lock = document.getElementById('restrict_'+returnVal[1]);
+                if (img_lock.style.backgroundImage.indexOf('button_unlock') > 0)
+                {
+                        img_lock.style.backgroundImage = img_lock.style.backgroundImage.replace(/button_unlock/g,'button_lock');
+                        write_msg(get_lang('%1 marked as restricted',returnVal[1]));
+                }
+                else
+                {
+                        img_lock.style.backgroundImage = img_lock.style.backgroundImage.replace(/button_lock/g,'button_unlock');
+                        write_msg(get_lang('%1 unmarked as restricted',returnVal[1]));
+                }
+        }
+        else
+                write_error("Could not mark as restricted");
+}
+handler.prototype.archive = function(data) {
+	returnVal = data.split('|');
+	if (returnVal[0] == 'False')
+	{
+		write_error(get_lang('It was not possible to execute it'));
+	}
+	else
+	if (returnVal[0] == 'wpasswd')
+	{
+		write_error(get_lang('Wrong password'));
+		return;
+	}
+	else
+		 write_msg(get_lang('Your operation was successfully executed'));
+	toolbar.control('reload');
+
+}
+handler.prototype.updateComment = function (data) {
+	var returnVal = data.split('|');
+	if (data.indexOf("True") == 0)
+	{
+		write_msg(get_lang('Updated comment for %1',returnVal[1]));
+	}
+	else
+	{
+		if (returnVal[1] == "badchar")
+			write_error(get_lang('Comments cannot contain "%1"',returnVal[2]));
+		else
+			write_error(get_lang('You have no permission to access this file'));
+	}
+
+}
+handler.prototype.draw_folders_list = function (data) {
+	toolbar.control('reload');
+	folders_tree = new dFTree({name: 'main'});
+	folders = unserialize(data);
+	var rootFold = new dNode({id:'root', caption:get_lang("filemanager")});
+	folders_tree.add(rootFold,'root');
+	var myfolder = new dNode({id:folders[0], caption:get_lang("My Folder"), plusSign:(folders[1].indexOf(folders[0]+'/') == 0), onClick:'load(\''+folders[0]+'\',this)'});
+	folders_tree.add(myfolder,'root');
+	for (var i=1;i<folders.length;i++)
+	{
+		var lastIndex = folders[i].lastIndexOf('/');
+		var name = folders[i].substr(lastIndex+1,folders[i].length);
+		var parentDir = folders[i].substr(0,lastIndex);
+		if (parentDir == '/home')
+			parentDir = 'root';
+		next = (folders[i+1]?folders[i+1]:"");
+		folder = new dNode({id:folders[i], caption:name, plusSign:(next.indexOf(folders[i]+'/') == 0), onClick:'load(\''+folders[i]+'\',this)'});
+	        folders_tree.add(folder,parentDir);
+	}
+	document.getElementById('content_folders').innerHTML = "";
+	folders_tree.draw(document.getElementById('content_folders'));
+        folders_tree.openTo(currentPath);
+	folders_tree.getNodeById(currentPath)._select();
+}
+handler.prototype.copyto = function (data) {
+	returnVal = data.split('|');
+	if (returnVal[0] == 'NODIR')
+		write_error(get_lang('Could not copy file because no destination directory is given'));
+	else if(returnVal[0] == 'SOMEERROR'){
+		write_error(get_lang('Could not copy %1 file(s)',returnVal[1]));
+	}
+	else  if(returnVal[0] == 'COPIED'){
+		if (returnVal[1] == 1)
+			write_msg(get_lang('File copied successfuly'));
+		else
+			write_msg(get_lang('%1 files copied successfuly', returnVal[1]));
+	}
+}
+handler.prototype.moveto = function (data) {
+	returnVal = data.split('|');
+	if (returnVal[0] == 'NODIR')
+		write_error(get_lang('Could not copy file because no destination directory is given'));
+	else if(returnVal[0] == 'SOMEERROR'){
+		write_error(get_lang('Could not move %1 file(s)',returnVal[1]));
+	}
+	else  if(returnVal[0] == 'MOVED'){
+		if (returnVal[1] == 1)
+			write_msg(get_lang('File moved successfuly'));
+		else
+			write_msg(get_lang('%1 files moved successfuly', returnVal[1]));
+	}
+	handler.refreshDir();
+}
+handler.prototype.refreshDir = function (data) {
+	cExecute('./index.php?menuaction=filemanager.uifilemanager.get_folders_list',handler.draw_folders_list);
+}
+
+var handler = new handler();
Index: /trunk/filemanager/js/refresh.js
===================================================================
--- /trunk/filemanager/js/refresh.js	(revision 2000)
+++ /trunk/filemanager/js/refresh.js	(revision 2000)
@@ -0,0 +1,13 @@
+var refresh_time = 18000;
+
+setTimeout("pooling_refresh();",refresh_time);
+
+
+function pooling_refresh(){
+	var handler = function(data){
+	}
+	var filename=document.getElementsByName('edit_file');
+	cExecute("/index.php?menuaction=filemanager.vfs_functions.touch&file="+base64_encode(filename[0].value),handler);
+	setTimeout("pooling_refresh();",refresh_time);
+}
+
Index: /trunk/filemanager/js/common_functions.js
===================================================================
--- /trunk/filemanager/js/common_functions.js	(revision 2000)
+++ /trunk/filemanager/js/common_functions.js	(revision 2000)
@@ -0,0 +1,302 @@
+function load(path,el){
+	currentPath = path;
+	contentFolders = document.getElementById('content_folders');
+	for (i=0; i < contentFolders.childNodes.length; i++)
+		if (contentFolders.childNodes[i].className == "sl")
+			contentFolders.childNodes[i].className = "l";
+	el.className = "sl";
+	current_folder = currentPath;
+        if(last_folder != current_folder){
+                lastPage = 1;
+                current_page = 1;
+                last_folder = current_folder;
+		offset = 0;
+        }
+	toolbar.control('reload');
+}
+
+function check(element){
+	element.firstChild.firstChild.checked = true;
+}
+
+function validateFileExtension(fileName){
+	var error_flag = false;
+	var fileExtension = fileName.split(".");
+	fileExtension = fileExtension[(fileExtension.length-1)];
+	for(var i=0; i<denyFileExtensions.length; i++)
+	{
+		if(denyFileExtensions[i] == fileExtension)
+		{
+			error_flag = true;
+			break;
+		}
+
+	}
+
+	if ( error_flag == true )
+	{
+		write_error(get_lang('File extension forbidden or invalid file') + '.');
+		return false;
+	}
+	return true;
+}
+
+function get_lang(_key){
+	var key = _key.toLowerCase();
+	if(array_lang[key])
+		var _value = array_lang[key];
+	else
+		var _value = _key+"*";
+
+	if(arguments.length > 1)
+		for(j = 1; typeof(arguments[j]) != 'undefined'; j++)
+			_value = _value.replace("%"+j,arguments[j]);
+	return _value;
+
+}
+
+
+function newEmptyFile(){
+	var name = prompt(get_lang('Enter with the name of new file/directory'), '');
+	var input_text = document.getElementById('newfile_or_dir');
+	if (name != null && name != '' && validateFileExtension(name))
+	{
+		var fileExtension = name.split(".");
+		fileExtension = fileExtension[1];
+		if (typeof(fileExtension) == 'undefined')
+			input_text.value = name+".html";
+		else
+			input_text.value = name;
+		address = document.location.toString();
+		address = address.split("&");
+		document.location = address[0]+"&newfile.x=1&newfile_or_dir="+input_text.value;
+
+	}
+}
+function newUpload(data){
+	if (data == null)
+	{
+		address = document.location.toString();
+		address = address.split("?");
+		var url = address[0]+"?menuaction=filemanager.uifilemanager.showUploadboxes&path="+base64_encode(currentPath);
+		cExecute(url,newUpload);
+	}
+	else{
+		draw_window(data);
+	}
+}
+
+(function( )
+{
+	// TODO: use DES, RSA, PGP, or something strong
+	var sec_key = null;
+	function encode( data )
+	{
+		if (data == null)
+			return null;
+		ret = "";
+		for ( var i=0;(i < data.length && data.charCodeAt(i) > 31); i++ )
+		{
+			ret += String.fromCharCode(data.charCodeAt(i) ^ sec_key.charCodeAt(i));
+		}
+		return ret;
+	}
+
+	function crypt( input )
+	{
+		sec_key = input;
+	}
+
+	crypt.prototype.encode = encode;
+	window.crypt = crypt;
+})( );
+
+/*
+ * base64.js - Base64 encoding and decoding functions
+ *
+ * Copyright (c) 2007, David Lindquist <david.lindquist@gmail.com>
+ * Released under the MIT license
+ */
+
+function base64_encode(str) {
+	var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+	var encoded = [];
+	var c = 0;
+	while (c < str.length) {
+		var b0 = str.charCodeAt(c++);
+		var b1 = str.charCodeAt(c++);
+		var b2 = str.charCodeAt(c++);
+		var buf = (b0 << 16) + ((b1 || 0) << 8) + (b2 || 0);
+		var i0 = (buf & (63 << 18)) >> 18;
+		var i1 = (buf & (63 << 12)) >> 12;
+		var i2 = isNaN(b1) ? 64 : (buf & (63 << 6)) >> 6;
+		var i3 = isNaN(b2) ? 64 : (buf & 63);
+		encoded[encoded.length] = chars.charAt(i0);
+		encoded[encoded.length] = chars.charAt(i1);
+		encoded[encoded.length] = chars.charAt(i2);
+		encoded[encoded.length] = chars.charAt(i3);
+	}
+	var retBuff = escape(encoded.join(''));
+	return retBuff.replace(/\+/g,"%2B");
+}
+
+function base64_decode(str) {
+	var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+	var invalid = {
+	strlen: (str.length % 4 != 0),
+	chars:  new RegExp('[^' + chars + ']').test(str),
+	equals: (/=/.test(str) && (/=[^=]/.test(str) || /={3}/.test(str)))
+	};
+	if (invalid.strlen || invalid.chars || invalid.equals)
+		throw new Error('Invalid base64 data');
+	var decoded = [];
+	var c = 0;
+	while (c < str.length) {
+		var i0 = chars.indexOf(str.charAt(c++));
+		var i1 = chars.indexOf(str.charAt(c++));
+		var i2 = chars.indexOf(str.charAt(c++));
+		var i3 = chars.indexOf(str.charAt(c++));
+		var buf = (i0 << 18) + (i1 << 12) + ((i2 & 63) << 6) + (i3 & 63);
+		var b0 = (buf & (255 << 16)) >> 16;
+		var b1 = (i2 == 64) ? -1 : (buf & (255 << 8)) >> 8;
+		var b2 = (i3 == 64) ? -1 : (buf & 255);
+		decoded[decoded.length] = String.fromCharCode(b0);
+		if (b1 >= 0) decoded[decoded.length] = String.fromCharCode(b1);
+		if (b2 >= 0) decoded[decoded.length] = String.fromCharCode(b2);
+	}
+	return decoded.join('');
+}
+
+
+function setRestricted(name){
+	var continue_set = confirm(get_lang('This property will change the visibility of all users that have access to this file, continue?'));
+	if (continue_set)
+		cExecute('./index.php?menuaction=filemanager.vfs_functions.setRestricted&file='+base64_encode(name)+'&path='+base64_encode(currentPath),handler.restricted);
+}
+
+function presetComments(el){
+	if (permissions['edit'] == 0){
+		el.blur();
+		write_error(get_lang('You have no permission to access this file'));
+	}
+	oldValue = el.value;
+}
+
+function setComments(el){
+	if (el.value == oldValue) return;
+	var filename = base64_encode(el.id);
+	cExecute('./index.php?menuaction=filemanager.vfs_functions.editComment&file='+filename+'&comment='+base64_encode(el.value),handler.updateComment);
+}
+
+function enterComments(e,el){
+	if (e.keyCode == KEY_ENTER)
+		el.blur();
+}
+
+
+function EditColumns(param){
+	if (param == 'close')
+	{
+		var menu = document.getElementById('menu_col_pref');
+		menu.parentNode.removeChild(menu);
+		return;
+	}
+	if(param == 'save')
+	{
+		var checkBoxes = document.getElementsByName('prefView');
+		var url="";
+		for (var i=0; i < checkBoxes.length; i++)
+		{
+			if (checkBoxes[i].checked)
+				preferences[checkBoxes[i].value] = '1';
+			else
+				preferences[checkBoxes[i].value] = '0';
+		}
+		cExecute('./index.php?menuaction=filemanager.user.save_preferences&preferences='+base64_encode(serialize(preferences)),function () { toolbar.control('reload'); EditColumns('close'); });
+		return;
+	}
+	var checkList = (preferences['viewList'] == '1' ? 'checked="checked"': '');
+	var checkIcons = (preferences['viewIcons'] == '1' ? 'checked="checked"': '');
+	var typeHTML = '<input name="prefView" value="viewList" '+checkList+' type="radio">'+get_lang('view as list')+'<input name="prefView" '+checkIcons+' value="viewIcons" type="radio">'+get_lang('view as icons')+'<br>';
+	var check = function(type) { if (preferences[type] =='1') return 'checked'; else return '';};
+	var inputHTML = '<input name="prefView" type="checkbox" value="';
+	form = typeHTML+inputHTML+'mime_type" '+check('mime_type')+'>'+get_lang('type')+'<br>'+
+		inputHTML+'size" '+check('size')+'>'+get_lang('size')+'<br>'+
+		inputHTML+'created" '+check('created')+'>'+get_lang('created')+'<br>'+
+		inputHTML+'modified" '+check('modified')+'>'+get_lang('modified')+'<br>'+
+		inputHTML+'owner" '+check('owner')+'>'+get_lang('owner')+'<br>'+
+		inputHTML+'createdby_id" '+check('createdby_id')+'>'+get_lang('created by')+'<br>'+
+		inputHTML+'modifiedby_id" '+check('modifiedby_id')+'>'+get_lang('modified by')+'<br>'+
+	//	inputHTML+'application" '+check('application')+'>'+get_lang('application')+'<br>'+
+		inputHTML+'comment" '+check('comment')+'>'+get_lang('comment')+'<br>'+
+		inputHTML+'version" '+check('version')+'>'+get_lang('version')+'<br>'+
+		'<input value="'+get_lang('save')+'" onclick="EditColumns(\'save\')" type="button">&nbsp;'+
+		'<input value="'+get_lang('cancel')+'" onclick="EditColumns(\'close\')" type="button">';
+
+		menu = document.createElement('DIV');
+		menu.id = "menu_col_pref";
+		menu.style.left = "100px";
+		menu.style.top = "200px";
+		menu.className = 'menubox';
+		menu.style.zIndex='1';
+		menu.innerHTML = form;
+		document.getElementById('divAppboxHeader').appendChild(menu);
+}
+
+
+function searchFile(){
+	var inputText = document.getElementById('em_message_search');
+	if (inputText.value.length < 4)
+	{
+		alert(get_lang('Your search must have at least 4 characters'));
+		return;
+	}
+	cExecute('./index.php?menuaction=filemanager.uifilemanager.search&text='+inputText.value,folderList.drawSearch);
+}
+function selectAll(el){
+        checkBoxes = document.getElementsByName('fileman');
+        if (el.checked)
+                for (i=0; i < checkBoxes.length; i++)
+                        checkBoxes[i].checked = true;
+        else
+                for (i=0; i < checkBoxes.length; i++)
+                        checkBoxes[i].checked = false;
+
+}
+function borkb(size){
+                kbyte = 1024;
+                mbyte = kbyte*1024;
+                gbyte = mbyte*1024;
+                if (!size)
+                        size = 0;
+                if (size < kbyte)
+                        return size + 'B';
+                else if (size < mbyte)
+                        return parseInt(size/kbyte) + 'KB';
+                else if (size < gbyte)
+			if (size/mbyte > 100)
+	                        return (size/mbyte).toFixed(0) + 'MB';
+			else
+				return (size/mbyte).toFixed(1) + 'MB';
+                else
+                        return parseInt(size/gbyte).toFixed(1) + 'GB';
+}
+function addNewInput(){
+	var line = document.getElementById('uploadOption');
+	var newElement = document.createElement('TR');
+	var newElement2 = document.createElement('TD');
+	var newElement3 = document.createElement('TD');
+	newElement2.innerHTML = '<input onchange="javascript:addNewInput();" maxlength="255" name="upload_file[]" type="file">';
+	newElement3.innerHTML = '<input name="upload_comment[]" type="text">';
+	newElement.appendChild(newElement2);
+	newElement.appendChild(newElement3);
+	line.parentNode.appendChild(newElement);
+	document.getElementById('show_upload_boxes').value +=1;
+}
+
+function sendFiles(){
+		cExecuteForm(document.getElementById('form_up'),handler.upload);
+		document.getElementById('button_up').style.visibility = "hidden";
+		var line = document.getElementById('uploadOption');
+		line.parentNode.innerHTML = "<img src='"+templatePath+"images/progress.gif'>";
+}
Index: /trunk/filemanager/js/global.js
===================================================================
--- /trunk/filemanager/js/global.js	(revision 2000)
+++ /trunk/filemanager/js/global.js	(revision 2000)
@@ -0,0 +1,38 @@
+var title_app = '<table height="16px" border=0 width=100% cellspacing=0 cellpadding=2>'+
+'<tr class="divAppboxHeader">'+
+'<td style="padding-left:17px" width=33% id="content_quota" align=left></td>'+
+'<td width=33% id="main_title">Expresso FileManager</td>'+
+'<td width=33% id="div_menu_c3" align=right></td>'+
+'</tr></table>';
+
+var currentPath = "";
+var oldValue;
+
+var templatePath = './filemanager/templates/default/';
+
+var menuTimeout;
+var DocX,DocY;
+var criteria='name';
+var order_type = '1'; // Ascending is 1, descending is 0
+var crypt; // Used to send encrypted stuff
+
+// Store permissions of current path use it BUT DO NOT rely on it
+var permissions = new Array();
+var preferences = new Array();
+var folders = new Array();
+
+var KEY_ENTER = 13;
+
+var denyFileExtensions = new Array('exe','com','reg','chm','cnf','hta','ins',
+                                        'jse','job','lnk','pif','src','scf','sct','shb',
+                                        'vbe','vbs','wsc','wsf','wsh','cer','its','mau',
+                                        'mda','mar','mdz','prf','pst');
+
+var last_folder = currentPath;
+var current_folder = currentPath;
+var current_page = current_page ? current_page : 1;
+var lastPage = lastPage ? lastPage : 1;
+var numPages = numPages ? numPages : 5;
+var filesperpage = 10;
+var offset = (current_page-1)*filesperpage;
+
Index: /trunk/filemanager/index.php
===================================================================
--- /trunk/filemanager/index.php	(revision 2000)
+++ /trunk/filemanager/index.php	(revision 2000)
@@ -0,0 +1,27 @@
+<?php
+	
+	// FIXME add copyright header
+	/*
+	eGroupWare - http://www.egroupware.org
+	written by Pim Snel <pim@lingewoud.nl>
+	*/
+
+
+	$phpgw_flags = Array(
+		'currentapp'    =>      'filemanager',
+		'noheader'      =>      True,
+		'nonavbar'      =>      True,
+		'noappheader'   =>      True,
+		'noappfooter'   =>      True,
+		'nofooter'      =>      True
+	);
+
+	$GLOBALS['phpgw_info']['flags'] = $phpgw_flags;
+
+	include('../header.inc.php');
+	$preferences = $GLOBALS['phpgw']->preferences->read();
+	$_SESSION['phpgw_info']['user']['preferences']['filemanager'] = $preferences['filemanager'];
+
+	Header('Location: '.$GLOBALS['phpgw']->link('/index.php','menuaction=filemanager.uifilemanager.index'));
+	$GLOBALS['phpgw']->common->phpgw_exit();
+?>
Index: /trunk/filemanager/templates/default/config_folders.tpl
===================================================================
--- /trunk/filemanager/templates/default/config_folders.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/config_folders.tpl	(revision 2000)
@@ -0,0 +1,39 @@
+<!-- BEGIN body -->
+<table border="0" cellpadding="1" cellspacing="1" style="width: 400px;">
+	<tbody>
+		<tr style="width: 200px;">
+			<td>
+				<b>{lang_search}</b></td>
+			<td>
+				<input onkeyup="search_dir(this)" size="30" type="text" value="" /></td>
+			<td>
+				&nbsp;</td>
+		</tr>
+		<tr>
+			<td>
+				<b>{lang_directory}</b></td>
+			<td>
+				<select id="search1" size="5" style="width: 200px;"></select> </td>
+			<td>
+				&nbsp;</td>
+		</tr>
+		<tr>
+			<td>
+			<td>
+				<input onclick="delete_folder()" type="button" value="{lang_remove}" />
+				<input onclick="reconstruct_folder()" type="button" value="{lang_reconstruct}" />
+				<input onclick="rename_folder()" type="button" value="{lang_rename}" />
+				<input onclick="create_folder()" type="button" value="{lang_create}" />
+			</td>
+			<td>
+			</td>
+		</tr>
+	</tbody>
+</table>
+<p>
+	<br />
+	<font color="red"><span id="span_searching1">&nbsp;</span></font><br />
+	<br />
+	&nbsp;</p>
+<!-- END body -->
+
Index: /trunk/filemanager/templates/default/fileModels.tpl
===================================================================
--- /trunk/filemanager/templates/default/fileModels.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/fileModels.tpl	(revision 2000)
@@ -0,0 +1,25 @@
+<!-- BEGIN header -->
+<form method="POST" action="{action_url}">
+<table width="80%" cellspacing="0" cellpadding="0" border="0" align="center">
+    <caption>Escolha seu modelo</caption>
+    <tbody>
+        <tr>
+<!-- END header -->
+<!-- BEGIN body -->
+	<td><a href="{url_1}"><img border="0" src="./filemanager/templates/default/images/{model_1}.png" alt="" /><br>{lang_1}</a></td>
+        <td><a href="{url_2}"><img border="0" src="./filemanager/templates/default/images/{model_2}.png" alt="" /><br>{lang_2}</a></td>
+       </tr>
+       <tr>
+       <td><a href="{url_3}"><img border="0" src="./filemanager/templates/default/images/{model_3}.png" alt="" /><br>{lang_3}</a></td>
+       <td><a href="{url_4}"><img border="0" src="./filemanager/templates/default/images/{model_4}.png" alt="" /><br>{lang_4}</a></td>
+      </tr>
+        <tr>
+	<td><a href="{url_5}"><img border="0" src="./filemanager/templates/default/images/{model_5}.png" alt="" /><br>{lang_5}</a></td>
+	<td><a href="{url_6}"><img border="0" src="./filemanager/templates/default/images/{model_6}.png" alt="" /><br>{lang_6}</a></td>
+        </tr>
+    </tbody>
+</table>
+<!-- END body -->
+<!-- BEGIN footer -->
+<!-- END footer -->
+
Index: /trunk/filemanager/templates/default/upload.tpl
===================================================================
--- /trunk/filemanager/templates/default/upload.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/upload.tpl	(revision 2000)
@@ -0,0 +1,30 @@
+<!-- BEGIN upload_header -->
+<form id="form_up" method="post" action="{form_action}" enctype="multipart/form-data">
+<div>
+<table cellspacing="0" cellpadding="2">
+<tbody>
+	<tr bgcolor="#dedede">
+		<td><strong>{lang_file}</strong></td>
+		<td><strong>{lang_comment}</strong></td>
+	</tr>
+<!-- END upload_header -->
+
+<!-- BEGIN row -->
+	<tr id="uploadOption">
+	<td><input onchange="javascript:addNewInput();" maxlength="255" name="upload_file[]" type="file"></td>
+	<td><input name="upload_comment[]" type="text"></td>
+	</tr>
+<!-- END row -->
+
+<!-- BEGIN upload_footer -->
+
+</tbody></table>
+<span>{max_size}</span>
+<br>
+<input value="true" name="uploadprocess" type="hidden">
+<input value="{path}" name="path" type="hidden">
+<input value="{num_upload_boxes}" name="show_upload_boxes" id="show_upload_boxes" type="hidden">
+<input value="{lang_upload}" id="button_up" type="button" onclick="sendFiles();">
+</div>
+</form>
+<!-- END upload_footer -->
Index: /trunk/filemanager/templates/default/preference_acl_row.tpl
===================================================================
--- /trunk/filemanager/templates/default/preference_acl_row.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/preference_acl_row.tpl	(revision 2000)
@@ -0,0 +1,9 @@
+<!-- $Id: preference_acl_row.tpl 5681 2001-08-28 23:09:02Z zone $ -->
+	<tr bgcolor="{row_color}">
+		<td>{user}</td>
+		<td align="center"><input type="checkbox" name="{read}" value="Y"{read_selected}></td>
+		<td align="center"><input type="checkbox" name="{add}" value="Y"{add_selected}></td>
+		<td align="center"><input type="checkbox" name="{edit}" value="Y"{edit_selected}></td>
+		<td align="center"><input type="checkbox" name="{delete}" value="Y"{delete_selected}></td>
+		<td align="center"><input type="checkbox" name="{private}" value="Y"{private_selected}></td>
+	</tr>
Index: /trunk/filemanager/templates/default/edit_file.tpl
===================================================================
--- /trunk/filemanager/templates/default/edit_file.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/edit_file.tpl	(revision 2000)
@@ -0,0 +1,33 @@
+<!-- BEGIN file_edit_header -->
+<!-- END file_edit_header -->
+
+<!-- BEGIN column -->
+<!-- END column -->
+
+<!-- BEGIN row -->
+{refresh_script}
+{preview_content}<br/>
+<form method="post" action="{form_action}">
+	<input type="hidden" name="edit" value="1" />
+	<input type="hidden" name="edit_file" value="{edit_file}" />
+	{filemans_hidden}
+	<textarea name="edit_file_content" rows="15" cols="80">{file_content}</textarea>
+<!--			</td>
+		</tr>
+		<tr>
+			<td align=center>-->
+				<!--<input type="submit" name="edit_preview" value="{lang_preview}" />-->
+				<!--<input type="submit" name="edit_save" value="{lang_save}" />-->
+	<table>
+	<tr>
+{buttonSave} {buttonPreview} {buttonDone} {buttonCancel}
+
+</tr>
+</table>
+
+</form>
+<!-- END row -->
+
+<!-- BEGIN file_edit_footer -->
+<!-- END file_edit_footer -->
+
Index: /trunk/filemanager/templates/default/main.tpl
===================================================================
--- /trunk/filemanager/templates/default/main.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/main.tpl	(revision 2000)
@@ -0,0 +1,69 @@
+<!-- BEGIN filemanager_header -->
+{css}
+{path}
+<table id="main_table" width="100%" cellspacing="0" cellpadding="0" border="0">
+<tbody>
+<tr>
+<td id="folderscol" width="162px" height="100%" valign="top">
+	<table id="folders_tbl" width="162px" border="0" cellspacing="0" cellpadding="0" border="0">
+	<tbody>
+		<tr>
+			<td class='content-menu'>
+			<div id="search_div" align="left" style="white-space:nowrap">
+			<input type="text" id="em_message_search" size="16" maxlength="22" />
+			<img style="vertical-align: bottom;" onclick="searchFile();" src="./filemanager/templates/default/images/search.gif">
+			</div>
+			<table border="0" cellspacing="0" cellpadding="0" border="0" style="width:100%">
+			<tbody>
+			<tr height="24">
+			<td class='content-menu-td'>
+			{new_button}
+			</td>
+		</tr>
+
+		<tr height="24">
+			<td class='content-menu-td'>
+			{refresh_button}
+			</td>
+		</tr>
+
+		<tr height="24">
+			<td>
+			{tools_button}
+			</td>
+		</tr>
+	</tbody>
+	</table>
+		</td>
+		</tr>
+    		<tr>
+			<td height="2px"></td>
+		</tr>
+		<tr>
+                        <td class="image-menu" valign="top" style="padding:0px">
+                                <div id="content_folders" class="menu-degrade" style="height:100%;width:170px;overflow:auto"></div>
+                        </td>
+                </tr>
+	</tbody>
+	</table>
+<td>
+<div id="formfm" name="formfm">
+<div id="fmFileWindow">
+<table cellspacing="0" cellpadding="2" width="100%">
+<tbody>
+<!-- END filemanager_header -->
+</td>
+</tr>
+</tbody>
+</table>
+<!-- BEGIN filemanager_footer -->
+</tbody></table>
+</div>
+<div id="fmMenu">
+</div>
+<div style="visibility: hidden" id="allMessages">{messages}</div>
+</div>
+{preferences}
+{sec_key}
+{script}
+<!-- END filemanager_footer -->
Index: /trunk/filemanager/templates/default/pref_list.tpl
===================================================================
--- /trunk/filemanager/templates/default/pref_list.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/pref_list.tpl	(revision 2000)
@@ -0,0 +1,5 @@
+  <tr bgcolor="{bg_color}">
+   <td align="right">{field}</td>
+   <td align="left">{data}</td>
+  </tr>
+
Index: /trunk/filemanager/templates/default/article.html
===================================================================
--- /trunk/filemanager/templates/default/article.html	(revision 2000)
+++ /trunk/filemanager/templates/default/article.html	(revision 2000)
@@ -0,0 +1,33 @@
+<div style="text-align: center;"><span style="background-color: rgb(255, 255, 255);"><b>
+<div style="text-align: center;"><span style="background-color: rgb(255, 255, 255); font-weight: normal;"><b><font size="4">T&iacute;tulo</font></b></span></div>
+</b></span></div>
+<p>&nbsp;</p>
+<div>
+<div toctype="none+none" id="WritelyTableOfContents" class="writely-toc">
+<ol class="writely-toc-none">
+    <li><a href="#Heading_2" target="_self">Parte 2</a>
+    <ol class="writely-toc-subheading writely-toc-none" style="margin-left: 0pt;">
+        <li><a href="#Heading_2_8812239887192845" target="_self">Parte 2.1</a></li>
+        <li><a href="#Heading_3_7438909662887454" target="_self">Parte 2.2</a></li>
+    </ol>
+    </li>
+    <li><a href="#Heading_2" target="_self">Parte 3</a></li>
+</ol>
+</div>
+<br />
+<h2><a id="Heading_2_8812239887192845" name="Heading_2_8812239887192845"></a>Parte 2</h2>
+<p>&quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&quot;</p>
+<p>&nbsp;</p>
+<blockquote>&quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&quot;</blockquote>
+<p>&nbsp;</p>
+<p>&nbsp;</p>
+<h3><a id="Heading_3_7438909662887454" name="Heading_3_7438909662887454"></a>Parte 2.1</h3>
+<p>&quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&quot;</p>
+<p>&nbsp;</p>
+<h3><a id="Heading_3" name="Heading_3"></a>Parte 2.2</h3>
+<p>&nbsp;</p>
+<p><span style="font-family: Arial,Helvetica,sans;"><font size="2">&quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&quot;</font></span></p>
+<br />
+<h2><a id="Heading_2" name="Heading_2"></a>Parte 3</h2>
+<p>&quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&quot;</p>
+</div>
Index: /trunk/filemanager/templates/default/pref.tpl
===================================================================
--- /trunk/filemanager/templates/default/pref.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/pref.tpl	(revision 2000)
@@ -0,0 +1,7 @@
+<p><b>{title}:</b><hr><p>
+<form action="{action_url}" method="POST">
+ <table border="0" align="center">
+  {row}
+ </table>
+ <center><input type="submit" name="submit" value="{submit_lang}"></center>
+</form>
Index: /trunk/filemanager/templates/default/preference_colspan.tpl
===================================================================
--- /trunk/filemanager/templates/default/preference_colspan.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/preference_colspan.tpl	(revision 2000)
@@ -0,0 +1,8 @@
+<tr bgcolor="{bg_color}">
+	<td>{string}</td>
+	<td align="center">{lang_read}</td>
+	<td align="center">{lang_add}</td>
+	<td align="center">{lang_edit}</td>
+	<td align="center">{lang_delete}</td>
+	<td align="center">{lang_private}</td>
+</tr>
Index: /trunk/filemanager/templates/default/preference_acl.tpl
===================================================================
--- /trunk/filemanager/templates/default/preference_acl.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/preference_acl.tpl	(revision 2000)
@@ -0,0 +1,25 @@
+{errors}
+{title}
+<table border="0" align="center" width="70%">
+	<tr>
+	{nml}
+		<td width="40%">
+		<div align="center">
+		<form method="POST" action="{action_url}">
+		{common_hidden_vars}
+		<input type="text" name="query" value="{search_value}">
+		<input type="submit" name="search" value="{search}">
+		</form>
+		</div>
+		</td>
+	{nmr}
+	</tr>
+</table>
+<form method="POST" action="{action_url}">
+<table border="0" align="center" width="50%">
+	{row}
+</table>
+{common_hidden_vars_form}
+<input type="hidden" name="processed" value="{processed}">
+<center><input type="submit" name="submit" value="{submit_lang}"></center>
+</form>
Index: /trunk/filemanager/templates/default/preferences.tpl
===================================================================
--- /trunk/filemanager/templates/default/preferences.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/preferences.tpl	(revision 2000)
@@ -0,0 +1,24 @@
+<!-- $Id: preferences.tpl 5681 2001-08-28 23:09:02Z zone $ -->
+<br><br>
+<center>
+	<form method="POST" name="prefs_form" action="{actionurl}">
+	<table width="70%" border="0" cellspacing="2" cellpadding="2">
+		<tr>
+			<td colspan="2" bgcolor="#c0c0c0" align="center"><font face="{font}"><b>{lang_action}</b></font></td>
+		</tr>
+		<tr>
+			<td align="right"><font face="{font}">{lang_select_font}:</font></td>
+			<td><font face="{font}" size="{font_size}"><select name="notes_font">{notes_font}</select></font></td>
+		</tr>
+		<tr>
+			<td align="right"><font face="{font}">{lang_select_size}:</font></td>
+			<td><font face="{font}" size="{font_size}"><select name="notes_font_size">{notes_font_size}</select></font></td>
+		</tr>
+		<tr valign="bottom">
+			<td height="50"><font face="{font}">
+			<input type="submit" name="submit" value="{lang_edit}"></font>
+			</form></td>
+			<td>&nbsp;</td>
+		</tr>
+	</table>
+</center>
Index: /trunk/filemanager/templates/default/cards.html
===================================================================
--- /trunk/filemanager/templates/default/cards.html	(revision 2000)
+++ /trunk/filemanager/templates/default/cards.html	(revision 2000)
@@ -0,0 +1,231 @@
+<table width="800" height="1000" cellspacing="1" cellpadding="1" border="1" align="center">
+    <tbody>
+        <tr>
+            <td>
+            <div style="text-align: left;" id="xasdfn"><img width="230" height="108" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" style="float: left;" id="k_2f" alt="" /></div>
+            <div style="text-align: center;" id="xz7n"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website
+            <p>&nbsp;</p>
+            </td>
+        </tr>
+        <tr>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+        </tr>
+        <tr>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+        </tr>
+        <tr>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+        </tr>
+        <tr>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+        </tr>
+        <tr>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+        </tr>
+        <tr>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+        </tr>
+        <tr>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+            <td>
+            <div id="xasdfn" style="text-align: left;"><img width="230" height="108" alt="" id="k_2f" style="float: left;" src="http://www.celepar.pr.gov.br/themes/celepar2007/images/logoCelepar.png" /></div>
+            <div id="xz7n" style="text-align: center;"><font size="4" id="vr.4">Empresa</font></div>
+            <p><font size="3" id="vrqq">NOME</font></p>
+            <br id="g0fk" />
+            CARGO<br id="hc3f" />
+            <br id="hki5" />
+            ENDERE&Ccedil;O<br id="fcni" />
+            CIDADE<br id="ec68" />
+            Fone: 000 000 0000<br id="g0y_" />
+            Celular: 000 000 0000<br id="f88w" />
+            E-Mail<br id="d0i-" />
+            Website</td>
+        </tr>
+    </tbody>
+</table>
+<p>&nbsp;</p>
Index: /trunk/filemanager/templates/default/history.tpl
===================================================================
--- /trunk/filemanager/templates/default/history.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/history.tpl	(revision 2000)
@@ -0,0 +1,29 @@
+<!-- BEGIN history -->
+<table width="100%" border="1" cols="4">
+ <tr>
+  <td align="center" colspan="4">
+   <table width="100%" border="1">
+    <tr{tr_extras}>
+     <td align="center">
+      Path: {path}
+     </td>
+     <td align="center">
+      Filename: {filename}
+     </td>
+    </tr>
+   </table>
+   </hr>
+  </td>
+ </tr>
+ {col_row}
+</table>
+<!-- END history -->
+<!-- BEGIN column_rows -->
+ <tr{tr_extras}>
+  {col_headers}
+ </tr>
+<!-- END column_rows -->
+<!-- BEGIN column_headers -->
+  <td{td_extras}>{column_header}</td>
+<!-- END column_headers -->
+
Index: /trunk/filemanager/templates/default/resume.html
===================================================================
--- /trunk/filemanager/templates/default/resume.html	(revision 2000)
+++ /trunk/filemanager/templates/default/resume.html	(revision 2000)
@@ -0,0 +1,77 @@
+<p>&nbsp;</p>
+<p>&nbsp;</p>
+<center><b>Richard Anderson</b> <br />
+1234, West 67 Street, <br />
+Carlisle, MA 01741, <br />
+(123)-456 7890. <br />
+Email: rachel@somedomain.com</center> <hr />
+<table cellspacing="0" cellpadding="0" border="0">
+    <tbody>
+        <tr>
+            <td><b>EDUCATION:</b> <br />
+            1990</td>
+            <td>&nbsp;<br />
+            M.A., Paleontology, Univ. of Maine, Orono ME</td>
+        </tr>
+        <tr>
+            <td><b>CERTIFICATION/ENDORSEMENTS:</b></td>
+            <td><br />
+            Initial Teaching Certificate - English, History Endorsement</td>
+        </tr>
+        <tr>
+            <td><b>EXPERIENCE:</b> <br />
+            1993 - Present</td>
+            <td><br />
+            Managed widget department supervising a staff of 45 people with responsibility for a budget of $250,000.</td>
+        </tr>
+        <tr>
+            <td><b>CURRICULUM DEVELOPMENT:</b></td>
+            <td><br />
+            Developed curriculum for teaching how to play the banjo.</td>
+        </tr>
+        <tr>
+            <td><b>PUBLICATIONS:</b></td>
+            <td><br />
+            Jones, Ralph A., &quot;The Effect of Seat Ejection in a Negative G-Force Situation,&quot; The Aviator, June 1993.</td>
+        </tr>
+        <tr>
+            <td><b>CAPABILITIES:</b></td>
+            <td><br />
+            Develop behavioral objectives and teach effectively to accomplish those objectives.</td>
+        </tr>
+        <tr>
+            <td><b>MOTIVATION:</b></td>
+            <td><br />
+            My personal leadership style is to lead by example which has resulted in high morale and improved unit efficiency.</td>
+        </tr>
+        <tr>
+            <td><b>ARTISTIC SKILLS/HOBBIES:</b></td>
+            <td><br />
+            Play piano, trumpet, and drums; also write music and poetry.</td>
+        </tr>
+        <tr>
+            <td><b>ATHLETIC/COACHING EXPERIENCE:</b></td>
+            <td><br />
+            Coached Babe Ruth baseball 3 years, soccer 2 years, currently a registered baseball umpire.</td>
+        </tr>
+        <tr>
+            <td><b>PROFESSIONAL AWARDS:</b></td>
+        </tr>
+        <tr>
+            <td><b>SELECTED EVALUATION COMMENTS:</b></td>
+            <td><br />
+            &quot;He always exceeded my expectations.&quot; &quot;A hard worker who has an affinity for getting things done.&quot;</td>
+        </tr>
+        <tr>
+            <td><b>COMMUNITY/VOLUNTEER EXPERIENCE:</b></td>
+            <td><br />
+            Assist annually with Boy Scout food bank.</td>
+        </tr>
+        <tr>
+            <td><b>REFERENCES:</b></td>
+            <td><br />
+            Dr. George Jones, (360)427-6789 - Home</td>
+        </tr>
+    </tbody>
+</table>
+<p>&nbsp;</p>
Index: /trunk/filemanager/templates/default/config.tpl
===================================================================
--- /trunk/filemanager/templates/default/config.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/config.tpl	(revision 2000)
@@ -0,0 +1,43 @@
+<!-- BEGIN header -->
+<form method="POST" action="{action_url}">
+<table border="0" align="center">
+   <tr bgcolor="{th_bg}">
+    <td colspan="2"><font color="{th_text}">&nbsp;<b>{title}</b></font></td>
+   </tr>
+<!-- END header -->
+<!-- BEGIN body -->
+    <tr bgcolor="{row_on}">
+    <td>{lang_Max_file_size}</td>
+    <td>
+    <input size="3" name="newsettings[filemanager_Max_file_size]" value="{value_filemanager_Max_file_size}">&nbsp;Mb
+    </td>
+    </tr>
+    <tr bgcolor="{row_off}">
+    <td>{lang_quota_size}</td>
+    <td>
+    <input size="3" name="newsettings[filemanager_quota_size]" value="{value_filemanager_quota_size}">&nbsp;Mb
+    </td>
+    </tr>
+    <tr bgcolor="{row_on}">
+    <td>{lang_antivirus_command}</td> 
+    <td>
+    <input size="40" name="newsettings[filemanager_antivirus_command]" value="{value_filemanager_antivirus_command}">
+    </td>
+    </tr>
+
+<!-- END body -->
+<!-- BEGIN footer -->
+  <tr bgcolor="{th_bg}">
+    <td colspan="2">
+&nbsp;
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" align="center">
+      <input type="submit" name="submit" value="{lang_submit}">
+      <input type="submit" name="cancel" value="{lang_cancel}">
+    </td>
+  </tr>
+</table>
+</form>
+<!-- END footer -->
Index: /trunk/filemanager/templates/default/slide.html
===================================================================
--- /trunk/filemanager/templates/default/slide.html	(revision 2000)
+++ /trunk/filemanager/templates/default/slide.html	(revision 2000)
@@ -0,0 +1,106 @@
+<table cellspacing="0" cellpadding="0" border="0" style="height: 12px;">
+    <tbody>
+        <tr>
+            <td bgcolor="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+            <td bgcolor="#fff399">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+            <td bgcolor="#f44499">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+            <td>
+            <table cellspacing="0" cellpadding="0" border="0" style="width: 939px; height: 12px;">
+                <tbody>
+                    <tr>
+                        <td bgcolor="#ffcc99" style="height: 5px;">&nbsp;</td>
+                    </tr>
+                </tbody>
+            </table>
+            </td>
+        </tr>
+        <tr>
+            <td bgcolor="#5f2f99">&nbsp;</td>
+            <td bgcolor="#93cfff">&nbsp;</td>
+            <td bgcolor="">&nbsp;</td>
+        </tr>
+        <tr>
+            <td bgcolor="#0cc099">&nbsp;</td>
+            <td bgcolor="">&nbsp;</td>
+            <td bgcolor="">&nbsp;</td>
+        </tr>
+    </tbody>
+</table>
+<h1 style="text-align: center;">T&iacute;tulo
+<ol>
+    <li>Item 1</li>
+    <li>Item 2</li>
+</ol>
+</h1>
+<p>&nbsp;</p>
+<div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>
+<table cellspacing="0" cellpadding="0" border="0" style="height: 12px;">
+    <tbody>
+        <tr>
+            <td bgcolor="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+            <td bgcolor="#fff399">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+            <td bgcolor="#f44499">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+            <td>
+            <table cellspacing="0" cellpadding="0" border="0" style="width: 939px; height: 12px;">
+                <tbody>
+                    <tr>
+                        <td bgcolor="#ffcc99" style="height: 5px;">&nbsp;</td>
+                    </tr>
+                </tbody>
+            </table>
+            </td>
+        </tr>
+        <tr>
+            <td bgcolor="#5f2f99">&nbsp;</td>
+            <td bgcolor="#93cfff">&nbsp;</td>
+            <td bgcolor="">&nbsp;</td>
+        </tr>
+        <tr>
+            <td bgcolor="#0cc099">&nbsp;</td>
+            <td bgcolor="">&nbsp;</td>
+            <td bgcolor="">&nbsp;</td>
+        </tr>
+    </tbody>
+</table>
+<h1 style="text-align: center;">T&iacute;tulo P&aacute;gina 2
+<ul>
+    <li>TEXTO&nbsp;1</li>
+    <li>TEXTO&nbsp;2</li>
+</ul>
+<p>&nbsp;</p>
+<div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>
+</h1>
+<table cellspacing="0" cellpadding="0" border="0" style="height: 12px;">
+    <tbody>
+        <tr>
+            <td bgcolor="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+            <td bgcolor="#fff399">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+            <td bgcolor="#f44499">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+            <td>
+            <table cellspacing="0" cellpadding="0" border="0" style="width: 939px; height: 12px;">
+                <tbody>
+                    <tr>
+                        <td bgcolor="#ffcc99" style="height: 5px;">&nbsp;</td>
+                    </tr>
+                </tbody>
+            </table>
+            </td>
+        </tr>
+        <tr>
+            <td bgcolor="#5f2f99">&nbsp;</td>
+            <td bgcolor="#93cfff">&nbsp;</td>
+            <td bgcolor="">&nbsp;</td>
+        </tr>
+        <tr>
+            <td bgcolor="#0cc099">&nbsp;</td>
+            <td bgcolor="">&nbsp;</td>
+            <td bgcolor="">&nbsp;</td>
+        </tr>
+    </tbody>
+</table>
+<h1 style="text-align: center;">T&iacute;tulo P&aacute;gina 3
+<ul>
+    <li>TEXTO&nbsp;1</li>
+    <li>TEXTO&nbsp;2</li>
+</ul>
+</h1>
Index: /trunk/filemanager/templates/default/index.tpl
===================================================================
--- /trunk/filemanager/templates/default/index.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/index.tpl	(revision 2000)
@@ -0,0 +1,52 @@
+<!-- BEGIN index -->
+<table width="100%" border="1" cols="{colspan}">
+ <!--<tr>
+  <td align="center" colspan="{colspan}">{error}
+  </td>
+ </tr>-->
+ <tr>
+  <td align="center" colspan="{colspan}">{error}
+   <form action="{form_action}" method="post">
+   <table width="100%" border="1">
+    <tr{tr_extras}>
+     <td align="center">
+      {img_up}
+      {help_up}
+     </td>
+     <td align="center">
+      {img_home}
+      {dir}
+      {help_home}
+     </td>
+    </tr>
+   </table>
+   </hr>
+  </td>
+ </tr>{col_row}
+ <tr>
+  <td align="center" colspan="{colspan}">
+   </hr>{buttons}
+   </form>
+  </td>
+ </tr>
+ <tr>
+  <td align="center" colspan="{colspan}">{info}
+  </td>
+ </tr>
+ <tr>
+  <td align="center" colspan="{colspan}">{uploads}
+  </td>
+ </tr>
+</table>
+<!-- END index -->
+<!-- BEGIN column_rows -->
+ <tr{tr_extras}>{col_headers}
+ </tr>
+<!-- END column_rows -->
+<!-- BEGIN column_headers -->
+  <td{td_extras}><font size="-2">{column_header}</font></td>
+<!-- END column_headers -->
+<!-- BEGIN column_headers_normal -->
+  <td{td_extras}>{column_header}</td>
+<!-- END column_headers_normal -->
+
Index: /trunk/filemanager/templates/default/edit_html.tpl
===================================================================
--- /trunk/filemanager/templates/default/edit_html.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/edit_html.tpl	(revision 2000)
@@ -0,0 +1,25 @@
+<!-- BEGIN file_edit_header -->
+<!-- END file_edit_header -->
+
+<!-- BEGIN column -->
+<!-- END column -->
+
+<!-- BEGIN row -->
+{refresh_script}
+{preview_content}<br/>
+<form name="edit_form" method="post" action="{form_action}">
+	<input type="hidden" name="edit" value="1" />
+	<input type="hidden" name="edit_file" value="{edit_file}" />
+	{filemans_hidden}
+	{fck_edit}
+	<table>
+	<tr>
+{buttonSave} {buttonDone} {buttonCancel}
+</tr>
+</table>
+</form>
+<!-- END row -->
+
+<!-- BEGIN file_edit_footer -->
+<!-- END file_edit_footer -->
+
Index: /trunk/filemanager/templates/default/todo.html
===================================================================
--- /trunk/filemanager/templates/default/todo.html	(revision 2000)
+++ /trunk/filemanager/templates/default/todo.html	(revision 2000)
@@ -0,0 +1,83 @@
+<table width="100%" cellspacing="1" cellpadding="1" border="1">
+    <caption>Lista de Tarefas<br />
+    </caption>
+    <thead>
+        <tr>
+            <th scope="col">Feito?</th>
+            <th scope="col">A fazer</th>
+            <th scope="col">Resultado</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+        <tr>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+            <td>&nbsp;</td>
+        </tr>
+    </tbody>
+</table>
Index: /trunk/filemanager/templates/default/pref_colspan.tpl
===================================================================
--- /trunk/filemanager/templates/default/pref_colspan.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/pref_colspan.tpl	(revision 2000)
@@ -0,0 +1,4 @@
+  <tr bgcolor="{bg_color}">
+   <td colspan="2">{text}</td>
+  </tr>
+
Index: /trunk/filemanager/templates/default/errors.tpl
===================================================================
--- /trunk/filemanager/templates/default/errors.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/errors.tpl	(revision 2000)
@@ -0,0 +1,6 @@
+<!-- BEGIN error_page -->
+{errors}
+<!-- END error_page -->
+<!-- BEGIN ind_error -->
+{error}
+<!-- END ind_error -->
Index: /trunk/filemanager/templates/default/main.css
===================================================================
--- /trunk/filemanager/templates/default/main.css	(revision 2000)
+++ /trunk/filemanager/templates/default/main.css	(revision 2000)
@@ -0,0 +1,168 @@
+a:link,
+a:active,
+a:visited,
+a:hover {
+	color: #000000 !important;
+	text-decoration: none !important;
+}
+
+.menubox{
+    color: black;
+    background: #ffffff;
+    border-style: solid;
+    border-width: 1px;
+    border-color: #000;
+    font-family: Arial;
+    font-size: 12px;
+    cursor: pointer;
+    position: absolute;
+    /* width: 160px;*/
+    text-align: left;
+    line-height:150%;
+    margin: -10px 0  -10px 0;
+
+}
+.icon {
+	float:left;
+	padding: 40px;
+	width: 100px;
+	display:table-cell;
+}
+.iconCaption{
+	display:table-caption;
+	font-family:sans-serif;
+	font-size:10px;
+	overflow:hidden;
+	width:100%;
+
+}
+.action_info_th {
+        font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 11px;
+        border-width: 0px 0px 0px 0px;
+padding: 1px 10px 0px 10px;
+         border-style: inset inset inset inset;
+         border-color: gray gray gray gray;
+         background-color: rgb(250, 209, 99);
+         -moz-border-radius: 6px 6px 6px 6px;
+}
+
+.action_error_th {
+        font-family: Verdana, Arial, Helvetica, sans-serif;
+        font-size: 11px;
+        border-width: 0px 0px 0px 0px;
+        padding: 1px 10px 0px 10px;
+        border-style: inset inset inset inset;
+        border-color: gray gray gray gray;
+        background-color: red;
+        color: white;
+        -moz-border-radius: 6px 6px 6px 6px;
+}
+.l {
+	        background-image: url(../../../phpgwapi/templates/default/images/foldertree_folder.png);
+		background-repeat:no-repeat;
+		background-position:left center;
+		color:#4A79B1;
+		cursor:pointer;
+		font-family:sans-serif;
+		font-size:10px;
+		font-weight:bold;
+		padding:0 2em;
+		text-decoration:none;
+		white-space:nowrap;
+}
+.sl {
+	        background-image: url(../../../phpgwapi/templates/default/images/foldertree_folderopen.png);
+		background-repeat:no-repeat;
+		background-position:left center;
+		color:#FC6103;
+		cursor:pointer;
+		font-family:sans-serif;
+		font-size:10px;
+		font-weight:bold;
+		padding:0 2em;
+		text-decoration:none;
+		white-space:nowrap;
+}
+
+.toolButton{
+	color: #444;
+	padding:0 3px;
+	font-size: 13px;
+	font-weight: bold;
+	cursor: pointer;
+
+}
+#fmFileWindow
+{
+        overflow: auto;
+        height: 380px;
+        position:relative;
+        padding:3px;
+}
+
+#fmLocation
+{
+        position:relative;
+        margin-bottom:3px;
+        height:27px;
+
+}
+
+#fmMenu
+{
+        position:relative;
+}
+#fmStatusBar
+{
+        margin-left:4px;
+        margin-bottom:3px;
+        font-size: 10px;
+}
+
+
+.fmButton
+{
+        background-image:url(../images/buttonbackground.png);
+        width:28px;
+        height:28px;
+        background-repeat: no-repeat;
+}
+
+.dragSign{
+	background-color:#f5f5f5;
+	border: 1px solid black;
+	font-color: green;
+}
+
+.message_header {
+	background-color:#ABC6E1;
+	-moz-user-select: none;
+}
+.tr_msg_read {
+	color: #3f3f3f;
+	background-color: #ffffff;
+	-moz-user-select: none;
+}
+
+.tr_msg_read2 {
+	color: #3f3f3f;
+	background-color: #f4f8fb;
+	-moz-user-select: none;
+}
+
+.inputComment {
+	border: 0px !important;
+	color: #3f3f3f !important;
+	background: transparent !important;
+}
+
+.exportButton{
+	background-image:url('../../templates/default/images/button_export.png');
+	background-repeat: repeat-none;
+	width:13px;
+	height:12px;
+	cursor: pointer;
+	cursor: hand;
+}
+
Index: /trunk/filemanager/templates/default/config_quota.tpl
===================================================================
--- /trunk/filemanager/templates/default/config_quota.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/config_quota.tpl	(revision 2000)
@@ -0,0 +1,36 @@
+<!-- BEGIN body -->
+<table border="0" cellpadding="1" cellspacing="1" style="width: 400px;">
+	<tbody>
+		<tr style="width: 200px;">
+			<td>
+				<b>{lang_search}</b></td>
+			<td>
+				<input onkeyup="search_dir(this)" size="30" type="text" value="" /></td>
+			<td>
+				&nbsp;</td>
+		</tr>
+		<tr>
+			<td>
+				<b>{lang_directory}</b></td>
+			<td>
+				<select id="search1" onclick="load_quota(this)" size="5" style="width: 200px;"></select> </td>
+			<td>
+				&nbsp;</td>
+		</tr>
+		<tr>
+			<td>
+				<b>Quota:</b><input id="quota_size" size="10" type="text" />mb</td>
+			<td>
+				<input onclick="save_quota()" type="button" value="{lang_save}" /></td>
+			<td>
+				&nbsp;</td>
+		</tr>
+	</tbody>
+</table>
+<p>
+	<br />
+	<font color="red"><span id="span_searching1">&nbsp;</span></font><br />
+	<br />
+	&nbsp;</p>
+<!-- END body -->
+
Index: /trunk/filemanager/templates/default/calendar.html
===================================================================
--- /trunk/filemanager/templates/default/calendar.html	(revision 2000)
+++ /trunk/filemanager/templates/default/calendar.html	(revision 2000)
@@ -0,0 +1,2107 @@
+<p>&nbsp;</p>
+<div id="content"><style type="text/css">
+.tblGenFixed td {padding:0 3px;overflow:hidden;white-space:normal;letter-spacing:0;word-spacing:0;background-color:#fff;z-index:1;border-top:0px none;border-left:0px none;border-bottom:1px solid #CCC;border-right:1px solid #CCC;} .dn {display:none} 
+.tblGenFixed td.s27 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:left;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #CCC;border-bottom:1px solid #CCC;} 
+.tblGenFixed td.s28 {background-color:white;font-family:arial,sans-serif;font-size:80.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #000000;border-bottom:1px solid #000000;} 
+.tblGenFixed td.s9 {background-color:white;font-family:arial,sans-serif;font-size:110.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;vertical-align:middle;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #000000;border-bottom:1px solid #CCC;} 
+.tblGenFixed td.s25 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #000000;border-bottom:1px solid #CCC;} 
+.tblGenFixed td.s26 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:left;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #CCC;border-bottom:1px solid #b2b2b2;} 
+.tblGenFixed td.s23 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:left;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #000000;border-bottom:1px solid #CCC;} 
+.tblGenFixed td.s7 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #000000;border-bottom:1px solid #CCC;border-left:1px solid #CCC;} 
+.tblGenFixed td.s24 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:left;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #CCC;border-bottom:1px solid #b2b2b2;} 
+.tblGenFixed td.s8 {background-color:#3b4e87;font-family:Century Gothic;font-size:120.0%;font-weight:700;font-style:normal;color:#ffffff;text-decoration:none;text-align:center;vertical-align:middle;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #000000;border-bottom:1px solid #000000;} 
+.tblGenFixed td.s21 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#ffffff;text-decoration:none;text-align:left;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #CCC;border-bottom:1px solid #CCC;} 
+.tblGenFixed td.s5 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #CCC;border-bottom:1px solid #000000;} 
+.tblGenFixed td.s6 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #CCC;border-bottom:1px solid #CCC;} 
+.tblGenFixed td.s22 {background-color:white;font-family:verdana;font-size:180.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:center;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #CCC;border-bottom:1px solid #000000;} 
+.tblGenFixed td.s3 {background-color:white;font-family:verdana;font-size:280.0%;font-weight:700;font-style:normal;color:#182c63;text-decoration:none;text-align:center;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #CCC;border-bottom:1px solid #000000;} 
+.tblGenFixed td.s4 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #CCC;border-bottom:1px solid #CCC;} 
+.tblGenFixed td.s20 {background-color:#e4e8f3;font-family:arial,sans-serif;font-size:90.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:center;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #000000;border-bottom:1px solid #000000;} 
+.tblGenFixed td.s0 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-top:1px solid #CCC;border-right:1px solid #CCC;border-bottom:1px solid #CCC;border-left:1px solid #CCC;} 
+.tblGenFixed td.s2 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #CCC;border-bottom:1px solid #CCC;border-left:1px solid #CCC;} 
+.tblGenFixed td.s1 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-top:1px solid #CCC;border-right:1px solid #CCC;border-bottom:1px solid #CCC;} 
+.tblGenFixed td.s16 {background-color:white;font-family:arial,sans-serif;font-size:90.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:center;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #b2b2b2;border-bottom:1px solid #b2b2b2;} 
+.tblGenFixed td.s17 {background-color:#e4e8f3;font-family:arial,sans-serif;font-size:90.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:center;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #000000;border-bottom:1px solid #b2b2b2;} 
+.tblGenFixed td.s18 {background-color:#e4e8f3;font-family:arial,sans-serif;font-size:90.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:center;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #b2b2b2;border-bottom:1px solid #000000;} 
+.tblGenFixed td.s19 {background-color:white;font-family:arial,sans-serif;font-size:90.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:center;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #b2b2b2;border-bottom:1px solid #000000;} 
+.tblGenFixed td.s12 {background-color:#eaeaea;font-family:arial,sans-serif;font-size:90.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:center;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #CCC;border-bottom:1px solid #b2b2b2;} 
+.tblGenFixed td.s13 {background-color:#eaeaea;font-family:arial,sans-serif;font-size:90.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:center;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #000000;border-bottom:1px solid #b2b2b2;} 
+.tblGenFixed td.s14 {background-color:white;font-family:arial,sans-serif;font-size:90.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #000000;border-bottom:1px solid #CCC;} 
+.tblGenFixed td.s15 {background-color:#e4e8f3;font-family:arial,sans-serif;font-size:90.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:center;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #b2b2b2;border-bottom:1px solid #b2b2b2;} 
+.tblGenFixed td.s10 {background-color:white;font-family:arial,sans-serif;font-size:100.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #CCC;border-bottom:1px solid #CCC;} 
+.tblGenFixed td.s11 {background-color:#eaeaea;font-family:arial,sans-serif;font-size:90.0%;font-weight:400;font-style:normal;color:#000000;text-decoration:none;text-align:center;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-indent:3px;padding-left:0px;border-right:1px solid #CCC;border-bottom:1px solid #b2b2b2;} </style>
+<table cellspacing="0" cellpadding="0" border="0" id="tblMain">
+    <tbody>
+        <tr>
+            <td>
+            <table cellspacing="0" cellpadding="0" border="0" class="tblGenFixed" id="tblMain_0">
+                <tbody>
+                    <tr class="rShim">
+                        <td class="rShim" style="width: 0pt;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 23px;">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s0">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                        <td class="s1">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 45px;">.</p>
+                        </td>
+                        <td class="s2">&nbsp;</td>
+                        <td colspan="31" class="s3">2009</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s2">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 19px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td colspan="7" class="s8">January</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s9">&nbsp;</td>
+                        <td colspan="7" class="s8">February</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s9">&nbsp;</td>
+                        <td colspan="7" class="s8">March</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s9">&nbsp;</td>
+                        <td colspan="7" class="s8">April</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s11">Su</td>
+                        <td class="s12">M</td>
+                        <td class="s12">Tu</td>
+                        <td class="s12">W</td>
+                        <td class="s12">Th</td>
+                        <td class="s12">F</td>
+                        <td class="s13">Sa</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s11">Su</td>
+                        <td class="s12">M</td>
+                        <td class="s12">Tu</td>
+                        <td class="s12">W</td>
+                        <td class="s12">Th</td>
+                        <td class="s12">F</td>
+                        <td class="s13">Sa</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s11">Su</td>
+                        <td class="s12">M</td>
+                        <td class="s12">Tu</td>
+                        <td class="s12">W</td>
+                        <td class="s12">Th</td>
+                        <td class="s12">F</td>
+                        <td class="s13">Sa</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s11">Su</td>
+                        <td class="s12">M</td>
+                        <td class="s12">Tu</td>
+                        <td class="s12">W</td>
+                        <td class="s12">Th</td>
+                        <td class="s12">F</td>
+                        <td class="s13">Sa</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">1</td>
+                        <td class="s16">2</td>
+                        <td class="s17">3</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">1</td>
+                        <td class="s16">2</td>
+                        <td class="s16">3</td>
+                        <td class="s16">4</td>
+                        <td class="s16">5</td>
+                        <td class="s16">6</td>
+                        <td class="s17">7</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">1</td>
+                        <td class="s16">2</td>
+                        <td class="s16">3</td>
+                        <td class="s16">4</td>
+                        <td class="s16">5</td>
+                        <td class="s16">6</td>
+                        <td class="s17">7</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">1</td>
+                        <td class="s16">2</td>
+                        <td class="s16">3</td>
+                        <td class="s17">4</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">4</td>
+                        <td class="s16">5</td>
+                        <td class="s16">6</td>
+                        <td class="s16">7</td>
+                        <td class="s16">8</td>
+                        <td class="s16">9</td>
+                        <td class="s17">10</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">8</td>
+                        <td class="s16">9</td>
+                        <td class="s16">10</td>
+                        <td class="s16">11</td>
+                        <td class="s16">12</td>
+                        <td class="s16">13</td>
+                        <td class="s17">14</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">8</td>
+                        <td class="s16">9</td>
+                        <td class="s16">10</td>
+                        <td class="s16">11</td>
+                        <td class="s16">12</td>
+                        <td class="s16">13</td>
+                        <td class="s17">14</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">5</td>
+                        <td class="s16">6</td>
+                        <td class="s16">7</td>
+                        <td class="s16">8</td>
+                        <td class="s16">9</td>
+                        <td class="s16">10</td>
+                        <td class="s17">11</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">11</td>
+                        <td class="s16">12</td>
+                        <td class="s16">13</td>
+                        <td class="s16">14</td>
+                        <td class="s16">15</td>
+                        <td class="s16">16</td>
+                        <td class="s17">17</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">15</td>
+                        <td class="s16">16</td>
+                        <td class="s16">17</td>
+                        <td class="s16">18</td>
+                        <td class="s16">19</td>
+                        <td class="s16">20</td>
+                        <td class="s17">21</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">15</td>
+                        <td class="s16">16</td>
+                        <td class="s16">17</td>
+                        <td class="s16">18</td>
+                        <td class="s16">19</td>
+                        <td class="s16">20</td>
+                        <td class="s17">21</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">12</td>
+                        <td class="s16">13</td>
+                        <td class="s16">14</td>
+                        <td class="s16">15</td>
+                        <td class="s16">16</td>
+                        <td class="s16">17</td>
+                        <td class="s17">18</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">18</td>
+                        <td class="s16">19</td>
+                        <td class="s16">20</td>
+                        <td class="s16">21</td>
+                        <td class="s16">22</td>
+                        <td class="s16">23</td>
+                        <td class="s17">24</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">22</td>
+                        <td class="s16">23</td>
+                        <td class="s16">24</td>
+                        <td class="s16">25</td>
+                        <td class="s16">26</td>
+                        <td class="s16">27</td>
+                        <td class="s17">28</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">22</td>
+                        <td class="s16">23</td>
+                        <td class="s16">24</td>
+                        <td class="s16">25</td>
+                        <td class="s16">26</td>
+                        <td class="s16">27</td>
+                        <td class="s17">28</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">19</td>
+                        <td class="s16">20</td>
+                        <td class="s16">21</td>
+                        <td class="s16">22</td>
+                        <td class="s16">23</td>
+                        <td class="s16">24</td>
+                        <td class="s17">25</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">25</td>
+                        <td class="s16">26</td>
+                        <td class="s16">27</td>
+                        <td class="s16">28</td>
+                        <td class="s16">29</td>
+                        <td class="s16">30</td>
+                        <td class="s17">31</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s17">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">29</td>
+                        <td class="s16">30</td>
+                        <td class="s16">31</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s17">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">26</td>
+                        <td class="s16">27</td>
+                        <td class="s16">28</td>
+                        <td class="s16">29</td>
+                        <td class="s16">30</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s17">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s18">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s20">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s18">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s20">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s18">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s20">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s18">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s20">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s2">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 19px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td colspan="7" class="s8">May</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s9">&nbsp;</td>
+                        <td colspan="7" class="s8">June</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s9">&nbsp;</td>
+                        <td colspan="7" class="s8">July</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s9">&nbsp;</td>
+                        <td colspan="7" class="s8">August</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s11">Su</td>
+                        <td class="s12">M</td>
+                        <td class="s12">Tu</td>
+                        <td class="s12">W</td>
+                        <td class="s12">Th</td>
+                        <td class="s12">F</td>
+                        <td class="s13">Sa</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s11">Su</td>
+                        <td class="s12">M</td>
+                        <td class="s12">Tu</td>
+                        <td class="s12">W</td>
+                        <td class="s12">Th</td>
+                        <td class="s12">F</td>
+                        <td class="s13">Sa</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s11">Su</td>
+                        <td class="s12">M</td>
+                        <td class="s12">Tu</td>
+                        <td class="s12">W</td>
+                        <td class="s12">Th</td>
+                        <td class="s12">F</td>
+                        <td class="s13">Sa</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s11">Su</td>
+                        <td class="s12">M</td>
+                        <td class="s12">Tu</td>
+                        <td class="s12">W</td>
+                        <td class="s12">Th</td>
+                        <td class="s12">F</td>
+                        <td class="s13">Sa</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">1</td>
+                        <td class="s17">2</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">&nbsp;</td>
+                        <td class="s16">1</td>
+                        <td class="s16">2</td>
+                        <td class="s16">3</td>
+                        <td class="s16">4</td>
+                        <td class="s16">5</td>
+                        <td class="s17">6</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">1</td>
+                        <td class="s16">2</td>
+                        <td class="s16">3</td>
+                        <td class="s17">4</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s17">1</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">3</td>
+                        <td class="s16">4</td>
+                        <td class="s16">5</td>
+                        <td class="s16">6</td>
+                        <td class="s16">7</td>
+                        <td class="s16">8</td>
+                        <td class="s17">9</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">7</td>
+                        <td class="s16">8</td>
+                        <td class="s16">9</td>
+                        <td class="s16">10</td>
+                        <td class="s16">11</td>
+                        <td class="s16">12</td>
+                        <td class="s17">13</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">5</td>
+                        <td class="s16">6</td>
+                        <td class="s16">7</td>
+                        <td class="s16">8</td>
+                        <td class="s16">9</td>
+                        <td class="s16">10</td>
+                        <td class="s17">11</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">2</td>
+                        <td class="s16">3</td>
+                        <td class="s16">4</td>
+                        <td class="s16">5</td>
+                        <td class="s16">6</td>
+                        <td class="s16">7</td>
+                        <td class="s17">8</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">10</td>
+                        <td class="s16">11</td>
+                        <td class="s16">12</td>
+                        <td class="s16">13</td>
+                        <td class="s16">14</td>
+                        <td class="s16">15</td>
+                        <td class="s17">16</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">14</td>
+                        <td class="s16">15</td>
+                        <td class="s16">16</td>
+                        <td class="s16">17</td>
+                        <td class="s16">18</td>
+                        <td class="s16">19</td>
+                        <td class="s17">20</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">12</td>
+                        <td class="s16">13</td>
+                        <td class="s16">14</td>
+                        <td class="s16">15</td>
+                        <td class="s16">16</td>
+                        <td class="s16">17</td>
+                        <td class="s17">18</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">9</td>
+                        <td class="s16">10</td>
+                        <td class="s16">11</td>
+                        <td class="s16">12</td>
+                        <td class="s16">13</td>
+                        <td class="s16">14</td>
+                        <td class="s17">15</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">17</td>
+                        <td class="s16">18</td>
+                        <td class="s16">19</td>
+                        <td class="s16">20</td>
+                        <td class="s16">21</td>
+                        <td class="s16">22</td>
+                        <td class="s17">23</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">21</td>
+                        <td class="s16">22</td>
+                        <td class="s16">23</td>
+                        <td class="s16">24</td>
+                        <td class="s16">25</td>
+                        <td class="s16">26</td>
+                        <td class="s17">27</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">19</td>
+                        <td class="s16">20</td>
+                        <td class="s16">21</td>
+                        <td class="s16">22</td>
+                        <td class="s16">23</td>
+                        <td class="s16">24</td>
+                        <td class="s17">25</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">16</td>
+                        <td class="s16">17</td>
+                        <td class="s16">18</td>
+                        <td class="s16">19</td>
+                        <td class="s16">20</td>
+                        <td class="s16">21</td>
+                        <td class="s17">22</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">24</td>
+                        <td class="s16">25</td>
+                        <td class="s16">26</td>
+                        <td class="s16">27</td>
+                        <td class="s16">28</td>
+                        <td class="s16">29</td>
+                        <td class="s17">30</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">28</td>
+                        <td class="s16">29</td>
+                        <td class="s16">30</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s17">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">26</td>
+                        <td class="s16">27</td>
+                        <td class="s16">28</td>
+                        <td class="s16">29</td>
+                        <td class="s16">30</td>
+                        <td class="s16">31</td>
+                        <td class="s17">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">23</td>
+                        <td class="s16">24</td>
+                        <td class="s16">25</td>
+                        <td class="s16">26</td>
+                        <td class="s16">27</td>
+                        <td class="s16">28</td>
+                        <td class="s17">29</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s18">31</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s20">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s18">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s20">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s18">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s20">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s18">30</td>
+                        <td class="s19">31</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s20">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                </tbody>
+            </table>
+            </td>
+        </tr>
+        <tr>
+            <td>
+            <table cellspacing="0" cellpadding="0" border="0" class="tblGenFixed" id="tblMain_1">
+                <tbody>
+                    <tr class="rShim">
+                        <td class="rShim" style="width: 0pt;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 23px;">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s2">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s21">[42]</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s5">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 19px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td colspan="7" class="s8">September</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s9">&nbsp;</td>
+                        <td colspan="7" class="s8">October</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s9">&nbsp;</td>
+                        <td colspan="7" class="s8">November</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s9">&nbsp;</td>
+                        <td colspan="7" class="s8">December</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s11">Su</td>
+                        <td class="s12">M</td>
+                        <td class="s12">Tu</td>
+                        <td class="s12">W</td>
+                        <td class="s12">Th</td>
+                        <td class="s12">F</td>
+                        <td class="s13">Sa</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s11">Su</td>
+                        <td class="s12">M</td>
+                        <td class="s12">Tu</td>
+                        <td class="s12">W</td>
+                        <td class="s12">Th</td>
+                        <td class="s12">F</td>
+                        <td class="s13">Sa</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s11">Su</td>
+                        <td class="s12">M</td>
+                        <td class="s12">Tu</td>
+                        <td class="s12">W</td>
+                        <td class="s12">Th</td>
+                        <td class="s12">F</td>
+                        <td class="s13">Sa</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s11">Su</td>
+                        <td class="s12">M</td>
+                        <td class="s12">Tu</td>
+                        <td class="s12">W</td>
+                        <td class="s12">Th</td>
+                        <td class="s12">F</td>
+                        <td class="s13">Sa</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">1</td>
+                        <td class="s16">2</td>
+                        <td class="s16">3</td>
+                        <td class="s16">4</td>
+                        <td class="s17">5</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">1</td>
+                        <td class="s16">2</td>
+                        <td class="s17">3</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">1</td>
+                        <td class="s16">2</td>
+                        <td class="s16">3</td>
+                        <td class="s16">4</td>
+                        <td class="s16">5</td>
+                        <td class="s16">6</td>
+                        <td class="s17">7</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">1</td>
+                        <td class="s16">2</td>
+                        <td class="s16">3</td>
+                        <td class="s16">4</td>
+                        <td class="s17">5</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">6</td>
+                        <td class="s16">7</td>
+                        <td class="s16">8</td>
+                        <td class="s16">9</td>
+                        <td class="s16">10</td>
+                        <td class="s16">11</td>
+                        <td class="s17">12</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">4</td>
+                        <td class="s16">5</td>
+                        <td class="s16">6</td>
+                        <td class="s16">7</td>
+                        <td class="s16">8</td>
+                        <td class="s16">9</td>
+                        <td class="s17">10</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">8</td>
+                        <td class="s16">9</td>
+                        <td class="s16">10</td>
+                        <td class="s16">11</td>
+                        <td class="s16">12</td>
+                        <td class="s16">13</td>
+                        <td class="s17">14</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">6</td>
+                        <td class="s16">7</td>
+                        <td class="s16">8</td>
+                        <td class="s16">9</td>
+                        <td class="s16">10</td>
+                        <td class="s16">11</td>
+                        <td class="s17">12</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">13</td>
+                        <td class="s16">14</td>
+                        <td class="s16">15</td>
+                        <td class="s16">16</td>
+                        <td class="s16">17</td>
+                        <td class="s16">18</td>
+                        <td class="s17">19</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">11</td>
+                        <td class="s16">12</td>
+                        <td class="s16">13</td>
+                        <td class="s16">14</td>
+                        <td class="s16">15</td>
+                        <td class="s16">16</td>
+                        <td class="s17">17</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">15</td>
+                        <td class="s16">16</td>
+                        <td class="s16">17</td>
+                        <td class="s16">18</td>
+                        <td class="s16">19</td>
+                        <td class="s16">20</td>
+                        <td class="s17">21</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">13</td>
+                        <td class="s16">14</td>
+                        <td class="s16">15</td>
+                        <td class="s16">16</td>
+                        <td class="s16">17</td>
+                        <td class="s16">18</td>
+                        <td class="s17">19</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">20</td>
+                        <td class="s16">21</td>
+                        <td class="s16">22</td>
+                        <td class="s16">23</td>
+                        <td class="s16">24</td>
+                        <td class="s16">25</td>
+                        <td class="s17">26</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">18</td>
+                        <td class="s16">19</td>
+                        <td class="s16">20</td>
+                        <td class="s16">21</td>
+                        <td class="s16">22</td>
+                        <td class="s16">23</td>
+                        <td class="s17">24</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">22</td>
+                        <td class="s16">23</td>
+                        <td class="s16">24</td>
+                        <td class="s16">25</td>
+                        <td class="s16">26</td>
+                        <td class="s16">27</td>
+                        <td class="s17">28</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">20</td>
+                        <td class="s16">21</td>
+                        <td class="s16">22</td>
+                        <td class="s16">23</td>
+                        <td class="s16">24</td>
+                        <td class="s16">25</td>
+                        <td class="s17">26</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s15">27</td>
+                        <td class="s16">28</td>
+                        <td class="s16">29</td>
+                        <td class="s16">30</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s17">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">25</td>
+                        <td class="s16">26</td>
+                        <td class="s16">27</td>
+                        <td class="s16">28</td>
+                        <td class="s16">29</td>
+                        <td class="s16">30</td>
+                        <td class="s17">31</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">29</td>
+                        <td class="s16">30</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s17">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s15">27</td>
+                        <td class="s16">28</td>
+                        <td class="s16">29</td>
+                        <td class="s16">30</td>
+                        <td class="s16">31</td>
+                        <td class="s16">&nbsp;</td>
+                        <td class="s17">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s18">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s20">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s18">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s20">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s18">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s20">&nbsp;</td>
+                        <td class="s14">&nbsp;</td>
+                        <td class="s18">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s19">&nbsp;</td>
+                        <td class="s20">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s2">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 28px;">.</p>
+                        </td>
+                        <td class="s2">&nbsp;</td>
+                        <td colspan="31" class="s22">Notes</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td colspan="31" class="s23">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s24">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                </tbody>
+            </table>
+            </td>
+        </tr>
+        <tr>
+            <td>
+            <table cellspacing="0" cellpadding="0" border="0" class="tblGenFixed" id="tblMain_2">
+                <tbody>
+                    <tr class="rShim">
+                        <td class="rShim" style="width: 0pt;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 22px;">&nbsp;</td>
+                        <td class="rShim" style="width: 23px;">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s26">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                        <td colspan="29" class="s27">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s25">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s7">&nbsp;</td>
+                        <td colspan="31" class="s28">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td style="display: none;">&nbsp;</td>
+                        <td class="s10">&nbsp;</td>
+                    </tr>
+                    <tr>
+                        <td class="hd">
+                        <p style="height: 16px;">.</p>
+                        </td>
+                        <td class="s2">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s6">&nbsp;</td>
+                        <td class="s4">&nbsp;</td>
+                    </tr>
+                </tbody>
+            </table>
+            </td>
+        </tr>
+    </tbody>
+</table>
+</div>
Index: /trunk/filemanager/templates/default/config_owner.tpl
===================================================================
--- /trunk/filemanager/templates/default/config_owner.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/config_owner.tpl	(revision 2000)
@@ -0,0 +1,84 @@
+<!-- BEGIN body -->
+<table border="0" cellpadding="1" cellspacing="1" style="width: 400px;">
+	<tbody>
+		<tr style="width: 200px;">
+			<td>
+				<b>{lang_search}</b></td>
+			<td>
+				<input onkeyup="search_dir(this)" size="30" type="text" value="" /></td>
+			<td>
+				&nbsp;</td>
+		</tr>
+		<tr>
+			<td>
+				<b>{lang_directory}</b></td>
+			<td>
+				<select id="search1" size="5" style="width: 200px;"></select> </td>
+			<td>
+				&nbsp;</td>
+		</tr>
+		<tr>
+				<td>&nbsp;</td>
+				<td>&nbsp;</td>
+				<td>&nbsp;</td>
+		</tr>
+		<tr>
+			<td>
+				<b>{lang_search}</b></td>
+			<td>
+				<input onkeyup="search_user(this)" size="30" type="text" value="" />
+			</td>
+			<td>
+				&nbsp;</td>
+		</tr>
+		<tr>
+			<td>
+				<b>{lang_users_and_groups}</b></td>
+			<td valign="top">
+				<select id="search2" size="5" style="width: 200px;"></select> </td>
+			<td>
+			<table border="0">
+				<tbody><tr>
+					<td><input name="checkAttr" id="egw_read" type="checkbox"></td>
+					<td>Read</td>
+				</tr>
+				<tr>
+
+					<td><input name="checkAttr" id="egw_add" type="checkbox"></td>
+					<td>Add</td>
+				</tr>
+				<tr>
+					<td><input name="checkAttr" id="egw_edit" type="checkbox"></td>
+					<td>Edit</td>
+				</tr>
+				<tr>
+					<td><input name="checkAttr" id="egw_delete" type="checkbox"></td>
+
+					<td>Delete</td>
+				</tr>
+				<tr>
+					<td><input name="checkAttr" id="egw_private" type="checkbox"></td>
+					<td>Private</td>
+				</tr>
+			</tbody></table>
+			</td>
+		</tr>
+		<tr>
+			<td>
+			</td>
+			<td>
+				<input onclick="set_owner()" type="button" value="{lang_setowner}" />
+				<input onclick="set_permission()" type="button" value="{lang_setperm}" />
+			</td>
+			<td>
+			</td>
+		</tr>
+	</tbody>
+</table>
+<p>
+	<br />
+	<font color="red"><span id="span_searching1">&nbsp;</span></font><br />
+	<br />
+	&nbsp;</p>
+<!-- END body -->
+
Index: /trunk/filemanager/templates/default/small_table.tpl
===================================================================
--- /trunk/filemanager/templates/default/small_table.tpl	(revision 2000)
+++ /trunk/filemanager/templates/default/small_table.tpl	(revision 2000)
@@ -0,0 +1,15 @@
+<!-- BEGIN table -->
+   <table width="100%" border="1"{table_extras}>{list}
+   </table>
+<!-- END table -->
+<!-- BEGIN column_rows -->
+ <tr{tr_extras}>{col_headers}
+ </tr>
+<!-- END column_rows -->
+<!-- BEGIN column_headers -->
+  <td{td_extras}><font size="-2">{column_header}</font></td>
+<!-- END column_headers -->
+<!-- BEGIN column_headers_normal -->
+  <td{td_extras}>{column_header}</td>
+<!-- END column_headers_normal -->
+
